用於讀取/寫入大量小檔案的叢集檔案系統選擇

用於讀取/寫入大量小檔案的叢集檔案系統選擇

我正在為我的實驗室設置一個小型 Linux 叢集。目前我們有一個用於作業提交的登入節點和3個運算節點,它們透過千兆位元LAN連線(遺憾的是沒有無限頻寬)。

起初我只是簡單地使用 NFS 為叢集使用者匯出共用儲存(主資料夾)。但很快我們發現 NFS 在實際負載下表現不佳。

事實證明,我的叢集使用者在共享儲存中讀寫 GB 的小圖片檔案(一個小於 100KB)是很常見的。 NFS 對於小檔案 IO 的效能非常差。

我對小檔案寫入的NFS/CIFS/SSHFS效能進行了簡單的測試。在每個檔案系統上解壓縮 20000 個小檔案(總共約 600MB)的時間為:

  • CIFS:25~30秒
  • SSHFS:45~55秒
  • NFS(v3/v4): 太慢了,我沒等(估計10分鐘)

與 NFS 相比,CIFS/SSHFS 的效能非常好。但在電腦叢集場景中,對 Linux 主資料夾使用 CIFS/SSHFS 並不是一般做法(據我所知,CIFS 並不是真正符合 posix 的檔案系統)。

您對小檔案負載的網路檔案系統選擇有何看法?我應該用其他群集/分散式檔案系統取代 NFS 嗎?或者有沒有辦法針對小檔案優化 NFS?

答案1

如果您有足夠大的設置,我會推薦 IBM Spectrum Scale(以前稱為 GPFS),但考慮到您的操作規模,我建議您使用 ZFS,但需要做一些調整:將 atime 設定為關閉。如果您並不真正關心記錄檔案的存取時間,ZFS 將在您的場景中表現良好。

相關內容