UFS分布式文件系統
UFS是一款分布式文件系統產品,它能夠為運行于 UCloud 公有云、物理云、托管云上的各類主機提供高可用、高可靠、易拓展的文件存儲功能。通過 UFS 產品提供的共享存儲功能,可以方便地為各類數據備份、serverless、AI 數據分析、高性能 web 站點等應用場景提供強有力的支撐。
之前UFS僅支持NFSv4.0協議,只能提供給Linux主機使用。針對用戶需要在Windows主機使用UFS的需求,近日,UCloud優刻得升級UFS產品功能,支持SMB和NFSv3接入協議。存量UFS實例能夠直接使用NFSv3協議掛載,新建UFS實例時則可以選擇接入NFS或者SMB。從而使UFS擁有了全量接入Windows主機的能力,讓Windows用戶也能充分利用UFS分布式文件系統創造價值。
下圖為UFS整體io處理架構。

SMB介紹和支持
SMB(Server Message Block)是一種網絡文件共享協議,用于共享文件和打印機等資源,Windows主機廣泛使用該協議進行文件的共享。當前UFS接入支持的協議版本有CIFS,SMB2.0,SMB2.1,SMB3.0。
和本地搭建SMB服務比較,UFS擁有以下優勢:高容量,彈性擴展,可支持最高PB級別的容量按需進行擴容;高可靠,數據存儲有跨機器、跨機架的三個副本;高可用,整體服務路徑均采用節點多實例設計和部署,沒有單機故障的隱患。
通過SMB協議掛載訪問UFS,Windows用戶可以使用UFS分布式文件系統進行海量視頻素材的存儲和編輯等。
NFSv3提升小文件操作的吞吐
Linux和Windows主機均可以使用NFSv3掛載UFS文件系統,在大批量操作小文件的場景下,NFSv3相對于NFSv4.0性能更好。
以下我們分別介紹兩種協議版本讀取文件的流程。
NFSv4.0讀取文件流程:
1. 打開文件:PUTFH設置文件父目錄file handle(文件系統內唯一標識文件對象),OPEN打開指定文件,GETFH獲取打開文件的file handle,ACCESS檢查文件訪問權限,GETATTR獲取文件屬性信息。
2. 確認Open-Owner(可選):如果server需要confirm,客戶端再發起OPEN_CONFIRM。
3. 讀取數據:PUTFH設置文件file handle,使用返回的stateid讀取文件。
4. 關閉打開文件:PUTFH設置文件file handle,關閉stateid指定的文件。
NFSv3讀取文件流程:
1. 查詢文件:LOOKUP查詢指定目錄下的文件,返回文件file handle和屬性信息。
2. 確認訪問權限:ACCESS檢查文件是否有訪問權限。
3. 讀取數據:使用文件file handle讀取數據。
得益于NFSv4.0引入的COMPOUND Procedure,額外支持狀態的NFSv4.0協議RPC交互數量一般也和NFSv3一樣多。但是為什么NFSv4.0大批量操作小文件的性能會遠遠差于NFSv3?為了支持狀態,NFSv4.0打開文件需要提供Open-Owner,協議中規定針對每個Open-Owner,同一時刻只能發起一個相關請求;在Linux內核實現中,同一個用戶的進程會共用同一個Open-Owner,因此在大量小文件讀寫的情況下,文件的打開流程會變成串行操作,影響性能。所以在大批量操作小文件并且沒有文件鎖需求的場景下,NFSv3相比NFSv4.0可以大幅度提高性能。
以下針對小文件夾的讀寫場景分別在NFSv3和NFSv4.0掛載下進行了測試。測試環境為Centos8.3虛機,測試文件為Linux內核源碼包,有8w+文件。
下面的表格為測試結果,可以看出在大批量操作小文件的情況下NFSv3比NFSv4.0性能好得多。

某知名在線英語教育公司使用UCloud GPU云主機進行AI訓練,訓練數據存儲在UFS分布式文件系統中,最開始這家公司的客戶端使用的是NFSv4.0掛載,使用過程中發現訓練性能不理想,在沒有達到硬件瓶頸的情況下,并發運行多個訓練任務也并沒有顯著減少訓練時間。經過排查后發現,NFS掛載讀取吞吐較低,用戶的訓練數據小文件居多,監控數據中看到大量的open請求,導致讀取數據性能差。更換使用NFSv3掛載后,沒有額外的open開銷,訓練速度提升了至少2倍。
總結和展望
UFS分布式文件系統的接入能力升級,支持了Windows主機使用,加速了用戶特定場景的使用功能。UFS還在進行產品私有化的開發工作,未來會研發并行文件系統,以更低的io時延,更高的吞吐,支撐HPC場景應用。
申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!