全部產品
Search
文件中心

Object Storage Service:本機資料緩衝

更新時間:Aug 20, 2026

ossfs 2.0.8 及以後版本支援本機資料緩衝,通過將讀取過的檔案資料緩衝到本地磁碟,加速後續的重複讀取並降低 OSS 請求量。本文介紹本機資料緩衝的工作原理、配置方法與效能表現。

背景資訊

使用 ossfs 2.0 訪問 OSS 時,每次讀取檔案都需要從遠端拉取資料。對於 AI 訓練、模型載入等需要多輪重複讀取相同資料的情境,頻繁的遠端訪問會帶來較高的網路時延和頻寬消耗。

ossfs 2.0 的本機資料緩衝通過在本地磁碟保留已讀取過的檔案資料,使後續訪問直接從本地擷取,從而顯著提升重複讀效能、降低 OSS 請求費用。

ossfs 2.0 本機資料緩衝具備以下特點:

  • 效能更優:大檔案、小檔案重複讀情境下頻寬均顯著優於 ossfs 1.0,具體可見下文效能對比。

  • 自動淘汰:內建 LRU 淘汰策略,緩衝寫滿時自動回收最久未訪問的檔案,無需手動清理。

  • 海量小檔案支援:配合中繼資料快取(--max_inode_cache_count、--attr_timeout),可大幅加速 AI 訓練資料集的多輪載入。

說明

本機資料緩衝僅用於讀緩衝,不影響寫路徑——寫入操作不經過本機快取。這與 ossfs 1.0 的 -ouse_cache 不同,後者會同時緩衝讀寫資料。

工作原理

緩衝粒度

緩衝以 OSS 對象(檔案)為基本單位。每個被讀取過的檔案在緩衝目錄中對應一個快取檔案,採用按需填充的方式。

讀取流程

  • 首次讀取:資料從 OSS 拉取並同步寫入本機快取目錄。

  • 後續讀取:直接從本機快取讀取。

空間回收

當緩衝接近容量上限時,自動按 LRU(最近最少使用)策略淘汰舊檔案,騰出空間給新資料,回收操作以單個快取檔案為最小單位進行。

配置方法

配置項

是否必填

說明

預設值

disk_data_cache_dir

否

本機快取目錄路徑。配置為非空時啟用資料緩衝。

空

disk_data_cache_size

條件必填

緩衝容量上限,按 GiB 對齊。不可超過緩衝目錄所在磁碟/分區的可用空間。disk_data_cache_dir 可以為空白;disk_data_cache_dir 指定之後,本參數必須填入合法值。

空

disk_data_cache_io_engine

否

磁碟緩衝 IO 引擎,可選 psync 或 libaio。

psync

約束:

  • --disk_data_cache_dir 指向的目錄必須存在且為空白目錄,盡量保證緩衝路徑為獨立分區 / 獨立盤。

  • --disk_data_cache_size 不可超過緩衝目錄所在磁碟的可用空間。

  • 同一台機器上掛載多個 ossfs2 執行個體時,每個執行個體必須使用獨立的緩衝目錄。

  • ossfs2 進程退出時不會自動清理緩衝目錄,需要手動清理。

  • 掛載後盡量不要對緩衝目錄路徑進行操作,避免發生未知錯誤。

掛載命令樣本:

ossfs2 mount /mnt/oss/ \
  --oss_bucket <your-bucket> \
  --oss_endpoint <your-endpoint> \
  --oss_access_key_id <ak> \
  --oss_access_key_secret <sk> \
  --disk_data_cache_dir /mnt/disk/ossfs2/cache \
  --disk_data_cache_size 256G

環境要求

參數

要求

緩衝盤檔案系統

ext4、xfs 或 tmpfs(僅限 psync 模式),其他檔案系統未驗證

緩衝盤類型

推薦彈性臨時盤 / 本地 NVMe;ESSD PL0/PL1/PL2 的吞吐容易成為瓶頸,此時使用體驗可能較差;記憶體充裕時可使用 tmpfs(僅限 psync)

緩衝盤可用空間

不小於 --disk_data_cache_size 設定的值

使用建議

本機資料緩衝適用於“讀多寫少”且需要重複訪問相同資料的情境。

IO 引擎(disk_data_cache_io_engine)配置建議:

  • psync:使用同步讀寫系統調用,讀取時資料會經過作業系統 PageCache。當快取資料量接近或小於可用記憶體時,熱資料自然駐留在 PageCache 中,可獲得接近記憶體的讀取速度。適用於通用情境、低規格雲端硬碟以及 tmpfs 緩衝盤(tmpfs 不支援 libaio)。

  • libaio:使用 Linux 非同步 IO 介面,繞過 PageCache 直接操作磁碟。適用於大容量本地 NVMe + 資料集遠大於記憶體的情境,相比 psync 通常有 20% 左右的額外提升。

下表列出典型情境及推薦配置:

情境

使用建議

AI 訓練資料多輪載入(多 epoch 重複訪問同一資料集)、固定資料集多次查詢 / 分析

啟用本機資料緩衝,按資料集大小×1.1 設定 --disk_data_cache_size。緩衝盤為本地 NVMe 且資料量較大時,推薦 --disk_data_cache_io_engine=libaio,充分發揮磁碟效能。

大模型推理 / vLLM 載入(GB 級模型檔案反覆載入)

推薦機型記憶體大於模型總大小時,使用 tmpfs 盤作為緩衝盤。若記憶體不足以全緩衝模型檔案,也可選擇本地碟作為緩衝盤,但此時效能會受盤效能限制,需要具體評估後判斷是否開啟本機資料緩衝。

重要

若對資料即時性要求高且資料頻繁修改的情境下,不建議開啟資料緩衝(緩衝存在一定時效性差異)。

效能對比

測試對象:ossfs 2.0.9 vs ossfs 1.91.10。表中“首次讀 / 後續讀”分別對應緩衝未命中(需從 OSS 拉取)與命中本機快取。“—”表示該配置無緩衝,不區分首次/後續讀。

情境一:大檔案順序讀(4 線程讀取 100GB 檔案)

測試環境

  • 機器:ecs.i4.4xlarge(16 vCPU,128 GiB)

  • 本地 NVMe 盤:3576 GiB NVMe(讀頻寬 6 GB/s,寫頻寬 3 GB/s,IOPS 90w)

  • ossfs 2.0:--disk_data_cache_dir=<path> --disk_data_cache_size=3T,分別測試 --disk_data_cache_io_engine=psync 和 libaio

  • ossfs 1.0:-ouse_cache=<path> -oparallel_count=128

結果

配置

io 模式

頻寬(首次讀 / 後續讀)

CPU (avg/max)

峰值記憶體

ossfs 2.0(無緩衝)

-

2841 MB/s —

385% / 468%

5170 MB

ossfs 2.0

psync

2561 / 4516 MB/s

371% / 526%

2118 MB

libaio

2343 / 6625 MB/s

298% / 322%

2146 MB

ossfs 1.0

-

1249 / 2648 MB/s

815% / 1214%

137 MB

結論:

  • 啟用緩衝後,ossfs 2.0 在大檔案後續讀情境下相比 ossfs 1.0 效能提升約 2.5 倍(libaio 模式 6625 vs 2648 MB/s),可達到本地 NVMe 效能上限;同時 CPU 佔用大幅降低(≈300% vs 800%)。

情境二:海量小檔案讀取(ImageNet 訓練資料集載入)

測試環境

  • 機器:ecs.i4.32xlarge(128 vCPU,1024 GiB)

  • 本地 NVMe 盤:8 × 3576 GiB NVMe

  • 資料集:ImageNet 訓練集(約 1.3M 張圖片),多 epoch 重複載入

  • ossfs 2.0:--disk_data_cache_dir=<path> --disk_data_cache_size=1500G --disk_data_cache_io_engine=libaio --attr_timeout=36000 --max_inode_cache_count=11000000(啟用中繼資料快取)

  • ossfs 1.0:-ouse_cache=<path> -oreaddir_optimize -omax_stat_cache_size=11000000 -ostat_cache_expire=72000

結果

配置

頻寬(首次讀 / 後續讀)

CPU (avg/max)

峰值記憶體

ossfs 2.0(無緩衝)

304 MB/s —(約 2400 img/s)

67% / 209%

5062 MB

ossfs 2.0

286 / 1292 MB/s(約 10000 img/s)

219% / 1068%

6470 MB

ossfs 1.0

38 / 224 MB/s(約 2000 img/s)

66.1% / 206%

31.6 GB

結論:

  • 啟用磁碟緩衝 + 中繼資料快取後,ossfs 2.0 後續 epoch 載入效能達到無磁碟緩衝的 4.25 倍(1292 vs 304 MB/s),且完全消除 OSS 網路請求。多輪重複載入相同資料集的 AI 訓練負載,強烈推薦使用 ossfs 2.0 本機快取 + libaio。