全部產品
Search
文件中心

Object Storage Service:通過EFC加速OSS訪問

更新時間:Jan 21, 2026

彈性檔案用戶端 EFC(Elastic File Client)是一個計算側的資料訪問加速方案。它可以將 OSS Bucket 掛載為本地檔案系統,並利用計算節點的記憶體和磁碟構建高速分布式唯讀緩衝,將遠程 OSS 訪問轉變為高效的 P2P 內網傳輸,降低訪問延遲,提升 AI 訓練和推理情境下的資料吞吐效率。

說明:EFC 緩衝功能當前為邀測發布階段,邀測期間免費使用。

工作原理

EFC 是一個部署在計算節點上的使用者態檔案系統用戶端。當應用程式通過掛載點讀取資料時,EFC 會攔截這些請求,並執行以下邏輯:

  1. 緩衝查詢:EFC 首先在本地及其他對等節點(通過 P2P 網路)的緩衝(記憶體或磁碟)中尋找資料。

  2. 快取命中:如果資料存在於緩衝中,EFC 會直接從緩衝返回資料給應用程式,這是一個高速的內網操作。

  3. 緩衝未命中(回源):如果資料不在任何節點的緩衝中,EFC 會從源端 OSS Bucket 拉取資料,存入本機快取,然後再返回給應用程式。後續對該資料的請求將直接命中緩衝。

通過這種方式,EFC 將頻繁的、對同一資料集的遠端存取彙總為一次回源和多次高速的內網緩衝訪問,其彙總吞吐能力可隨計算節點規模呈線性擴充。

緩衝效能指標:單機可達 15 GB/s 吞吐、20 萬 IOPS,效能可隨節點規模線性擴充(受實際網路頻寬節流設定)。

核心優勢

  • 計算側快取:利用計算節點的記憶體與本地磁碟構建讀緩衝,支援資料預熱和 LRU 淘汰機制,減少遠端訪問延遲。

  • P2P 分布式加速:多節點間通過 P2P 網際網路共用快取資料,彙總吞吐可隨節點規模線性擴充,支援數百至數千節點規模。P2P 工作原理如下:

    image
  • POSIX 相容:相容常用的 POSIX 檔案介面(如 openreadreaddir 等),應用無需修改即可訪問 OSS 資料。

使用限制

在使用 EFC 前,請確認您的業務情境和技術環境符合以下要求。

運行環境

類型

要求

平台

人工智慧平台 PAI(靈駿智算資源)、靈駿裸金屬

作業系統

Alibaba Cloud Linux 3(核心 5.10.134-13+)、Ubuntu 24.04(核心 6.8.0-79+)

硬體資源要求

EFC 用戶端會佔用計算節點的記憶體和磁碟。請根據是否開啟緩衝功能來規劃資源。

  • 未開啟緩衝功能

    • 記憶體:常駐記憶體佔用通常小於 1 GiB,建議系統預留至少 5 GiB 可用記憶體以應對突發負載。

    • 磁碟:無特殊空間要求,僅需保證系統硬碟有足夠空間儲存作業記錄。

  • 開啟緩衝功能 

    開啟緩衝後,資源佔用主要由緩衝介質和索引開銷構成。

    • 記憶體資源

      • 基礎佔用:同“未開啟緩衝”模式。

      • 記憶體緩衝:若配置記憶體作為緩衝,將直接佔用與配置大小相等的記憶體。

      • 索引開銷:無論使用記憶體還是磁碟緩衝,都需要額外記憶體維護資料索引。建議預留量約為緩衝總容量的 1‰

      • 計算公式: 總記憶體佔用 ≈ 基礎運行記憶體 + 記憶體緩衝大小 + (記憶體緩衝大小 + 磁碟緩衝大小) * 0.001

    • 磁碟資源

      • 磁碟緩衝:若配置磁碟作為緩衝介質,將佔用配置大小的磁碟空間(例如配置 1 TiB 磁碟緩衝,則佔用 1 TiB)。

功能限制

  • 訪問模式:僅支援對 OSS 資料的唯讀訪問。掛載後檔案的所有者固定為 root,許可權為唯讀,不支援 chmod 或 chown

  • POSIX 相容性:相容 openclosereadreaddirreaddirpluslookupgetattr 操作;不支援 readlinkwriterenamesetattrlinksymlink 等操作。

  • 儲存類型:僅支援訪問標準低頻訪問儲存類型的 Object。不支援直接存取歸檔、冷歸檔或深度冷Archive Storage類型。

  • 路徑相容性

    • 路徑衝突:若 OSS 中同時存在 a/b(檔案)和 a/b/(目錄),掛載後僅能訪問目錄 a/b/

    • 特殊路徑:無法訪問 Object Key 以 / 開頭、包含連續 // 或包含 . / .. 的對象。

  • 存取權限:掛載和訪問 OSS 至少需要 oss:GetBucketStatoss:ListObjectsoss:GetObject 許可權。

  • 資料高可用性:EFC 是唯讀緩衝,不保障資料高可用。快取資料在特定情況(如機器損壞、節點替換下線等)下可能丟失,引起緩衝失效。再次訪問對應資料時,會發生回源,引起效能波動。

部署與掛載

本節將引導您完成 EFC 的部署和掛載。整個流程採用漸進式設計:先完成基礎掛載跑通流程,再根據需要啟用緩衝加速和分布式叢集。

步驟一:安裝 EFC 用戶端

在計算節點上安裝 EFC 用戶端軟體。

  1. 下載安裝包

    # alinas-utils 工具包
    wget https://aliyun-alinas-eac-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/cache/aliyun-alinas-utils.amd64.rpm
    
    # efc 用戶端主程式
    wget https://aliyun-alinas-eac-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/cache/alinas-efc-latest.amd64.rpm
  2. 安裝軟體包

    sudo rpm -ivh aliyun-alinas-utils.amd64.rpm
    sudo rpm -ivh alinas-efc-latest.amd64.rpm
    安裝完成後,EFC 用戶端服務將自動註冊,但不會立即啟動。需完成後續配置後方可使用。

步驟二:配置訪問憑證

EFC 支援兩種認證方式:AccessKey 和 STS 臨時憑證。從密鑰安全形度,建議優先使用 STS 方式,避免 AccessKey 泄露風險

方式一:使用 STS 臨時憑證(推薦)

建立包含 STS 臨時憑證的設定檔:

# 建立 STS 設定檔
cat > /etc/passwd-sts << EOF
{
    "SecurityToken": "YourSecurityToken",
    "AccessKeyId": "YourSTSAccessKeyId",
    "AccessKeySecret": "YourSTSAccessKeySecret",
    "Expiration": "YourExpiration"
}
EOF

# 設定檔案許可權,確保只有 root 可讀
chmod 600 /etc/passwd-sts
  • STS 設定檔支援即時更新,EFC 會自動載入最新的憑證。

  • 憑證有效期間由使用者負責管理,請確保在到期前更新。

  • Expiration 欄位格式樣本:2025-12-11T08:37:51Z(UTC時間)

方式二:使用 AccessKey

建立包含 AccessKey 的密碼檔案:

# 建立密碼檔案(請替換為您的真實憑證)
echo "YourAccessKeyId:YourAccessKeySecret" > /etc/passwd-oss

# 設定檔案許可權,確保只有 root 可讀
chmod 600 /etc/passwd-oss

步驟三:掛載 OSS Bucket

根據您的使用情境,選擇以下配置方式。建議先完成基礎掛載驗證流程跑通,再根據需要啟用緩衝加速。

配置一:基礎掛載(快速驗證)

此配置用於快速驗證 EFC 是否能正常訪問您的 OSS Bucket,不啟用緩衝加速

使用 STS 憑證掛載(推薦)

# 建立本地掛載點
mkdir -p /mnt/oss_data

# 執行掛載(請替換為您的 Bucket 網域名稱)
mount -t alinas \
  -o efc,protocol=oss,g_oss_STSFile=/etc/passwd-sts \
  your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data

使用 AccessKey 掛載

# 建立本地掛載點mkdir -p /mnt/oss_data

# 執行掛載(請替換為您的 Bucket 網域名稱)
mount -t alinas \
  -o efc,protocol=oss,passwd_file=/etc/passwd-oss \
  your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data

命令解析

  • mount -t alinas:使用 EFC 用戶端(alinas 類型)掛載。

  • your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data:掛載目標配置。其中 your-bucket.oss-cn-hangzhou.aliyuncs.com 是您的 OSS Bucket 網域名稱,/mnt/oss_data 是本地掛載點。

  • g_oss_STSFile=/etc/passwd-sts:指定包含 STS 憑證的設定檔路徑。

  • passwd_file=/etc/passwd-oss:指定包含 OSS AccessKey 的密碼檔案路徑。

更多參數說明請參考掛載參數詳解

驗證掛載結果

# 檢查掛載是否成功
df -h | grep /mnt/oss_data
# 列出 OSS 中的檔案
ls /mnt/oss_data

如果能看到您 OSS Bucket 中的檔案,說明基礎掛載成功。接下來可以根據需要啟用緩衝加速。

配置二:單機緩衝模式

在基礎掛載的基礎上,啟用本節點的記憶體和磁碟緩衝,適用於單節點任務或快速測試

說明:如果您已完成基礎掛載,需要先卸載:umount /mnt/oss_data
# 建立磁碟緩衝目錄
mkdir -p /mnt/cache/

# 掛載並啟用單機緩衝(使用 STS 憑證)
mount -t alinas \
  -o efc,protocol=oss,g_oss_STSFile=/etc/passwd-sts \
  -o g_tier_EnableClusterCache=true \
  -o g_tier_DadiIsDistributed=false \
  -o g_tier_DadiMemCacheCapacityMB=1024 \
  -o g_tier_DadiDiskCacheCapacityMB=10240 \
  -o g_tier_DadiDiskCachePath=/mnt/cache/ \
  -o g_server_Port=17871 \
  your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data

命令解析

  • mount -t alinas ... your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data:使用 EFC 用戶端將 OSS Bucket 掛載到本地 /mnt/oss_data 目錄。

  • g_oss_STSFile=/etc/passwd-sts:指定包含 STS 憑證的設定檔路徑。

  • g_tier_EnableClusterCache=trueg_tier_DadiIsDistributed=false:啟用單機緩衝模式,不與其他節點通訊。

  • g_tier_DadiMemCacheCapacityMB=1024:分配 1 GB 記憶體用於快取資料。

  • g_tier_DadiDiskCacheCapacityMB=10240:分配 10 GB 磁碟空間用於快取資料。

  • g_tier_DadiDiskCachePath=/mnt/cache/:磁碟快取檔案存放目錄。

  • g_server_Port=17871:開放 17871 連接埠,以便後續使用命令列工具查看快取命中率或執行資料預熱。

更多參數說明請參考掛載參數詳解

配置三:分布式緩衝叢集模式

將多個節點群組成一個緩衝叢集,共用快取資料,通過 P2P 網路加速資料分發,適用於大規模訓練和推理的生產環境

1. 配置緩衝節點列表

所有節點上建立 /etc/efc/rootlist 檔案,填入叢集中所有節點的資訊:

# 格式: <唯一ID>:<節點內網IP>:<P2P連接埠>
1:192.168.1.1:17980
2:192.168.1.2:17980
3:192.168.1.3:17980
警告rootlist 檔案在叢集中必須完全一致。不一致可能導致部分節點無法加入緩衝網路、快取命中率下降。

2. 在所有節點執行掛載

# 建立磁碟緩衝目錄
mkdir -p /mnt/cache/

# 掛載並啟用分布式緩衝(使用 STS 憑證)
mount -t alinas \
  -o efc,protocol=oss,g_oss_STSFile=/etc/passwd-sts \
  -o g_tier_EnableClusterCache=true \
  -o g_tier_DadiIsDistributed=true \
  -o g_tier_DadiAddr=/etc/efc/rootlist \
  -o g_tier_DadiMemCacheCapacityMB=1024 \
  -o g_tier_DadiDiskCacheCapacityMB=10240 \
  -o g_tier_DadiDiskCachePath=/mnt/cache/ \
  -o g_server_Port=17871 \
  your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data

命令解析

  • mount -t alinas ... your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data:使用 EFC 用戶端將 OSS Bucket 掛載到本地 /mnt/oss_data 目錄。

  • g_oss_STSFile=/etc/passwd-sts:指定包含 STS 憑證的設定檔路徑。

  • g_tier_EnableClusterCache=trueg_tier_DadiIsDistributed=true:啟用 EFC 的核心功能——分布式緩衝加速。

  • g_tier_DadiAddr=/etc/efc/rootlist:指定叢集節點設定檔路徑,用於構建 P2P 緩衝網路。

  • g_tier_DadiMemCacheCapacityMB=1024:分配 1 GB 記憶體用於快取資料。

  • g_tier_DadiDiskCacheCapacityMB=10240:分配 10 GB 磁碟空間用於快取資料,快取檔案將存放在 /mnt/cache/ 目錄。

  • g_server_Port=17871:開放 17871 連接埠,以便後續使用命令列工具查看快取命中率或執行資料預熱。

更多參數說明請參考掛載參數詳解

配置四:Agent 模式(僅訪問,不快取資料)

如果希望某個節點只訪問分布式緩衝,自身不緩衝任何資料(適用於計算資源緊張的輕量節點),可以使用 Agent 模式掛載:

mount -t alinas \
  -o efc,protocol=oss,passwd_file=/etc/passwd-sts \
  -o g_tier_EnableClusterCache=true \
  -o g_tier_DadiIsDistributed=true \
  -o g_tier_DadiRootClientType=2 \
  -o g_tier_DadiAddr=/etc/efc/rootlist \
  -o g_server_Port=17871 \
  your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data

命令解析

  • mount -t alinas ... your-bucket.oss-cn-hangzhou.aliyuncs.com:/ /mnt/oss_data:使用 EFC 用戶端將 OSS Bucket 掛載到本地 /mnt/oss_data 目錄。

  • g_oss_STSFile=/etc/passwd-sts:指定包含 STS 憑證的設定檔路徑。

  • g_tier_EnableClusterCache=trueg_tier_DadiIsDistributed=true:啟用分布式緩衝加速。

  • g_tier_DadiRootClientType=2:設為 Agent 模式。此節點只訪問其他節點的緩衝,不對外提供快取服務。

    • 預設值 0:Root/Agent 模式,同時提供和訪問緩衝。

    • 值 1:Root 模式,只提供快取服務。

    • 值 2:Agent 模式,只訪問緩衝。

  • g_tier_DadiAddr=/etc/efc/rootlist:指定叢集節點設定檔路徑。

  • g_server_Port=17871:開放 17871 連接埠用於營運管理。

更多參數說明請參考掛載參數詳解

緩衝營運

掛載成功後,您可以通過 EFC 提供的營運介面對緩衝進行管理。執行營運操作前,請確保掛載時已通過 -o g_server_Port=<連接埠號碼> 啟用了管理連接埠(本文樣本使用預設連接埠 17871)。

資料預熱

此功能可提前將資料從 OSS 載入到緩衝中,消除首次訪問延遲,對模型推理等情境尤其重要。

  • 路徑要求:預熱路徑必須是掛載點下的相對路徑

  • 任務狀態running(運行中)、completed(已完成)、canceled(已取消)、failed(已失敗)。

  • 任務被動淘汰機制:預熱任務不會無限保留,系統會根據以下規則自動淘汰歷史任務記錄:

    • 正在預熱(running)的任務:只能通過 cancel 命令主動取消,無法被動淘汰。

    • 已完成/已取消/已失敗的任務:當滿足以下任一條件時會被自動淘汰:

      • 歷史預熱任務總數超過 10,000 條。

      • 任務記錄時間超過 7 天。

使用 HTTP 介面

  • 參數說明

    參數名稱

    是否必填

    說明

    target_path

    要預熱的相對路徑,多個路徑用逗號 , 分隔。

    pattern

    Regex,用於篩選匹配的檔案名稱。

    preceding_time

    篩選最近 N 秒內建立的任務(僅用於查詢),預設 86400(1天)。

  • 發起預熱

    預熱掛載點 /mnt/oss_data 下的 file100G 檔案。

    curl -s "http://localhost:17871/v1/warmup/load?target_path=file100G"

    返回樣本:

    $ curl -s "http://localhost:17871/v1/warmup/load?target_path=file100G"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "The warm up (file100G) is processing in the background. Use the 'stat' command to get status.",
                "Location": "127.0.0.1:17871",
                "Path": "file100G"}]}
  • 查看file100G單個檔案的預熱狀態。

    預熱成功後,擷取檔案狀態,狀態會變成 completed;
    預熱失敗後,擷取檔案狀態,狀態會變成 failed,並列印出錯誤碼和錯誤資訊;
    /mnt/oss_data/file1Gmnt/oss_data/file1G 由於帶有掛載點路徑,會被錯誤解析,導致預熱失敗。
    curl -s "http://localhost:17871/v1/warmup/stat?target_path=file100G"

    返回樣本:

    $ curl -s "http://localhost:17871/v1/warmup/stat?target_path=file100G"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "Successfully stat the warm up",
                "Location": "127.0.0.1:17871",
                "Path": "file100G",
                "TaskInfos": [{
                        "CompletedSize": 13898874880,
                        "ErrorCode": 0,
                        "ErrorMessage": "",
                        "IsDir": false,
                        "Path": "file100G",
                        "Pattern": "",
                        "Status": "running",
                        "SubmitTime": 1765274023424073,
                        "TotalSize": 107374182400}]}]}
  • 取消預熱任務 

    取消 file100G 檔案的預熱任務。

    只有正在預熱(running)的任務可以被取消。
    curl -s "http://localhost:17871/v1/warmup/cancel?target_path=file100G"

    返回樣本:

    $ curl -s "http://localhost:17871/v1/warmup/cancel?target_path=file100G"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "Successfully canceled the warm up tasks",
                "Location": "127.0.0.1:17871",
                "Path": "file100G"}]}

使用命令列工具

  • 參數說明

    參數名稱

    是否必填

    說明

    -m

    掛載點路徑。

    -r

    操作類型:warmup/load(預熱)、warmup/stat(查詢)、warmup/cancel(取消)。

    --path

    掛載點下的相對路徑,根目錄傳 "",多個路徑用逗號 , 分隔。

    --pattern

    Regex,用於篩選匹配的檔案名稱。

    --preceding_time

    篩選最近 N 秒內的任務(僅用於查詢),預設 86400(1天)。

  • 發起預熱

    預熱 /mnt/oss_data 下 testDir 目錄中的檔案。

    /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/load --path "testDir" --pattern ".*_2$"

    返回樣本:

    $ /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/load --path "testDir"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "The warm up (testDir) is processing in the background. Use the 'stat' command to get status.",
                "Location": "",
                "Path": "testDir"}]}
  • 查看預熱狀態

    查詢 testDir 目錄的預熱進度。

    /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/stat --path "testDir"

    預熱任務狀態:

    • running:預熱任務正在執行

    • completed:預熱任務完成

    • cancel:預熱任務取消,不可繼續預熱,只能重新預熱

    • failed:預熱失敗後,任務狀態會變成failed,並列印出錯誤碼和相關錯誤資訊。

    返回樣本:

    $ /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/stat --path "testDir"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "Successfully stat the warm up",
                "Location": "",
                "Path": "testDir",
                "TaskInfos": [{
                        "CompletedSize": 11875394560,
                        "ErrorCode": 0,
                        "ErrorMessage": "",
                        "IsDir": true,
                        "Path": "testDir",
                        "Pattern": "",
                        "Status": "running",
                        "SubmitTime": 1765273087321936,
                        "TotalSize": 107872527360}]}]}
  • 取消預熱

    取消 testDir 的預熱任務(僅限 running 狀態)。

    已經完成或失敗的任務不能被取消,已完成的任務會取消失敗。
    /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/cancel --path "testDir"

    返回樣本:

    $ /usr/bin/aliyun-alinas-efc-cli -m /mnt/oss_data -r warmup/cancel --path "testDir"
    {
        "ErrorCode": 0,
        "ErrorMessage": "Request processed",
        "Results": [{
                "ErrorCode": 0,
                "ErrorMessage": "Successfully canceled the warm up tasks",
                "Location": "",
                "Path": "testDir"}]}

緩衝監控

此功能用於即時查看緩衝的運行狀態,如命中率、輸送量等,是效能調優的關鍵依據。

  • 查看監控資料
    • HTTP 方式(推薦,返回 JSON 格式)

      curl -s "http://localhost:17871/v1/tier"
    • 命令列方式(返迴文本格式)

      aliyun-alinas-efc-cli -m <掛載點> -r tier
  • 清除監控資料

    重設監控計數器(如 tier_read_hit 等指標歸零)。

    • HTTP方式

      curl -s "http://localhost:17871/v1/tier/clear"
    • 命令列方式

      aliyun-alinas-efc-cli -m <掛載點> -r tier -c
  • 關鍵計量說明

    以下指標描述了從用戶端 A 訪問用戶端 B 的緩衝(B 提供cache 服務)時可能經過的路徑:

    image

    指標名稱

    說明

    對應路徑

    tier_read

    經過緩衝路徑的讀請求總數量。

    i

    tier_read_bytes

    經過緩衝路徑的讀請求總資料量。

    i

    tier_read_hit

    從分布式節點讀成功,並命中緩衝的請求數量。

    ii

    tier_read_hit_bytes

    從分布式節點讀成功,並命中緩衝的資料總量(可能有讀放大)。

    ii

    tier_read_miss

    從分布式節點讀成功,但未命中緩衝(回源)的請求數量,會觸發分布式節點讀後端。

    iii

    tier_read_miss_bytes

    從分布式節點讀成功,但未命中緩衝的資料總量。

    iii

    tier_direct_read

    從分布式節點讀失敗,用戶端直接從後端 OSS 讀取成功的請求數量。

    v

    tier_direct_read_bytes

    從分布式節點讀失敗,用戶端直接從後端 OSS 讀取成功的資料總量。

    v

    tier_root_read_source

    用戶端作為分布式節點,未命中緩衝時,讀後端的請求數量。

    iv

    tier_root_read_source_bytes

    用戶端作為分布式節點,未命中緩衝時,讀後端的資料總量。

    iv

緩衝擴縮容

線上增刪節點

此操作用於動態調整分布式緩衝叢集的節點數量,無需中斷服務。

  • 擴容:在所有節點的 rootlist 檔案中,添加新節點的 IP 位址。

  • 縮容:在所有節點的 rootlist 檔案中,刪除目標節點的 IP 位址。

  • 生效機制:EFC 進程會周期性(預設5s)地重新讀取 rootlist 檔案並自動應用變更。

調整單節點緩衝容量
重要:EFC 不支援動態調整單個節點的緩衝容量。如需調整,必須卸載並重新掛載檔案系統,請在業務低峰期執行。

在重新掛載時,通過修改以下參數來調整緩衝容量:

參數名

說明

單位

預設值

g_tier_DadiMemCacheCapacityMB

單節點記憶體緩衝總容量。

MB

0

g_tier_DadiDiskCacheCapacityMB

單節點磁碟緩衝總容量。

MB

0

掛載參數動態調整

EFC 提供一個Python指令碼工具,用於在不手動卸載的情況下修改掛載參數。該工具的原理是:修改 EFC 的 state 檔案(儲存啟動命令),然後 kill 當前 EFC 進程,進程重啟時自動載入新的參數。

  • 下載工具

    wget https://aliyun-alinas-eac-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/cache/efc_runtime_ops.latest.py
  • 修改掛載參數

    python3 efc_runtime_ops.py update <本地掛載路徑> [-o <更新參數,...>]...

    樣本:

    python3 efc_runtime_ops.py update /mnt/oss_data \
              -o g_tier_EnableClusterCache=true,g_tier_tier_DadiP2PPort=23456 \
              -o g_tier_BlockSize=1048576
  • 復原

    修改參數時,工具會自動備份舊的state檔案。如果修改後 EFC 出現故障,可以復原恢複:

    python3 efc_runtime_ops.py rollback <本地掛載路徑> [備份路徑]

    樣本:用預設的備份檔案路徑恢複state檔案。

    python3 efc_runtime_ops.py rollback /mnt/oss_data

目錄緩衝管理

EFC 預設開啟目錄緩衝以加速 ls 等目錄遍曆操作。如果 OSS 端的目錄結構發生變化而 EFC 未能及時感知,可手動清理目錄緩衝。

目錄緩衝相關參數(掛載時指定):

參數名稱

預設值

說明

g_readdircache_Enable

true

是否啟用 readdir 緩衝

g_readdircache_MaxCount

20000

readdir 緩衝的最大項數

g_readdircache_MaxSize

100 MiB

readdir 緩衝可使用的記憶體大小(單位:位元組)

g_readdircache_RemainTime

3600

緩衝有效期間(單位:秒),預設 1 小時

清理目錄緩衝

  • HTTP方式

    curl -s "http://localhost:17871/v1/action/clear_readdir_cache"
  • 命令列方式

    aliyun-alinas-efc-cli -m <掛載點> -r action -k clear_readdir_cache

掛載參數詳解

基礎參數

參數名稱

預設值

樣本值

是否必填

說明

efc

-

efc

必須包含此參數,以標識使用 EFC 掛載。

protocol

-

oss

後端儲存協議,掛載 OSS 時固定為 oss

passwd_file

-

/etc/passwd-oss

必須與g_oss_STSFile二選一

包含 AccessKeyId:AccessKeySecret 的密碼檔案絕對路徑,格式為 AK:SK

g_oss_STSFile

-

/etc/passwd-sts

必須與passwd_file二選一

包含 STS 臨時憑證的設定檔絕對路徑。支援即時更新,有效期間由使用者保證。

trybind

yes

no

是否嘗試 bind 掛載。使用鏡像回源時需設為 no

緩衝配置參數

參數名稱

預設值

樣本值

是否必填

說明

g_tier_EnableClusterCache

true

true

是否開啟 EFC 緩衝加速功能。設為 false 則退化為簡單的協議轉換掛載。

g_tier_DadiIsDistributed

true

true

是否開啟分布式緩衝。true 為分布式模式,false 為單機緩衝模式。

g_tier_DadiAddr

-

/etc/efc/rootlist

rootlist 檔案的絕對路徑。在分布式模式下為必填項。

g_tier_DadiRootClientType

0

2

EFC 掛載形式。0:Root/Agent 模式(預設);1:Root 模式(僅提供緩衝);2:Agent 模式(僅訪問緩衝,不儲存)。

g_tier_DadiMemCacheCapacityMB

0

1024

記憶體緩衝容量(MB)。預設值為 0,表示不啟用記憶體緩衝。

g_tier_DadiDiskCacheCapacityMB

0

10240

單個磁碟緩衝目錄的容量(MB)。預設值為 0,表示不啟用磁碟緩衝。

g_tier_DadiDiskCachePath

-

/mnt/cache/

磁碟緩衝目錄的絕對路徑(需以 / 結尾),啟用磁碟緩衝時為必填項。

支援多個目錄,形式為/mnt/cache1/:/mnt/cache2/,使用冒號分隔。此時配置的緩衝空間將應用於每一個目錄(總空間=目錄數量 × 單目錄容量 )。

g_tier_DadiP2PPort

17980

17980

P2P 緩衝通訊連接埠。保持預設,並確保安全性群組允許存取。

g_tier_DadiSdkGetTrafficLimit

3 GB/s

3221225472

讀緩衝的流量吞吐限速值(Bytes/s)。

g_tier_DadiCachePageSizeKB

16

16

緩衝分頁大小(KB)。一般無需修改。

中繼資料與目錄緩衝參數

參數名稱

預設值

樣本值

是否必填

說明

g_metadata_CacheEnable

false

true

是否開啟中繼資料快取。開啟後可減少對 OSS 的 HEAD 請求。

g_readdircache_Enable

true

true

是否啟用 readdir 緩衝。

g_readdircache_MaxCount

20000

20000

readdir 緩衝的最大項數。

g_readdircache_MaxSize

100 MiB

104857600

readdir 緩衝可使用的記憶體大小(單位:位元組)。

g_readdircache_RemainTime

3600

3600

readdir 緩衝有效期間(秒),預設 1 小時。

營運與進階參數

參數名稱

預設值

樣本值

是否必填

說明

g_server_Port

0

17871

緩衝管理連接埠。設為非 0 值(如 17871)以啟用 HTTP 營運介面。

最佳實務

許可權與安全

  • 保護密碼檔案:密碼檔案許可權必須設定為 600,並存放在安全的位置,避免憑證泄露。

  • 優先使用 STS:從安全形度考慮,建議優先使用 STS 臨時憑證而非長期 AccessKey,降低密鑰泄露風險。

  • 最小化安全性群組開放:僅在叢集節點之間開放 P2P 通訊連接埠 17980,並嚴格限制管理連接埠 17871 的訪問來源。

情境化配置建議

  • AI 模型訓練

    • 特點:通常涉及對大型資料集(可能包含大量小檔案)的重複、順序讀取。

    • 建議

      • 配置足夠大的磁碟緩衝,以容納整個或大部分熱點資料集。

      • 在訓練任務開始前,對核心資料集進行資料預熱,將首次讀取的開銷提前。

  • AI 模型推理

    • 特點:大量計算節點需要同時載入相同的模型檔案。

    • 建議

      • 務必啟用分布式叢集模式,充分利用 P2P 網路分發模型檔案,避免對 OSS 造成單點壓力。

      • 在服務上線或更新模型時,對模型檔案進行資料預熱

資料一致性管理

  • 理解最終一致性:EFC 是唯讀緩衝,對 OSS 後端的變更不是即時同步的。應用設計時應能容忍一定的資料延遲。

  • 主動重新整理:對於需要頻繁更新並立即讀取的情境,應在應用邏輯中增加調用清除目錄緩衝介面的步驟。

  • 開啟中繼資料快取:對於中繼資料不常變化的情境,通過 -o g_metadata_CacheEnable 開啟中繼資料快取,可以減少對 OSS 的 GetObjectMeta 請求。

計費說明

  • EFC 用戶端:在邀測期間,EFC 用戶端本身免費使用。

  • OSS 費用:通過 EFC 訪問 OSS 產生的請求次數、外網流出流量等費用,將按照 OSS 的標準計費規則收取。使用 EFC 緩衝可以有效減少回源請求和流量,從而降低 OSS 費用。

常見問題

Q:OSS資料更新後,EFC緩衝是否能立即感知?

A:EFC對OSS資料更新的感知能力取決於中繼資料快取的配置狀態。

  • 未開啟中繼資料快取時:檔案更新時,滿足 close-to-open 的語義,重新open 後可立即感知;新增檔案時,由於 readdir cache 機制,新增檔案可能無法通過 ls 立即顯示,需清理 readdir cache 後才能看到。

  • 開啟中繼資料快取時:檔案更新時無法立即感知,需清理中繼資料快取,清理後,重新 open 後可以立即感知;新增檔案時需同時清理 readdir cache 和中繼資料快取才能看到。

解決方案

當需要立即感知OSS端的資料變更時,可通過以下方式手動清理緩衝:

  1. 清理目錄緩衝(適用於新增檔案無法顯示的情況)

    curl -s "http://localhost:17871/v1/action/clear_readdir_cache"
  2. 清理中繼資料快取(僅在開啟中繼資料快取時需要):

    curl -s "http://localhost:17871/v1/action/clear_metadata_cache"
在開啟中繼資料快取的情況下,若要完全同步OSS的最新資料,建議同時執行以上兩個清理命令。