天天看點

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

随着移動網際網路、物聯網、AI 計算等技術和市場的迅速發展,資料規模指數級膨脹,對于分布式檔案系統作為大規模資料場景的存儲底座提出了更高的要求。已有分布式檔案系統解決方案存在着短闆,隻能适應有限的場景:

>> 新型分布式檔案系統無法承接傳統領域内的所有 WorkLoad:通過隻支援部分 POSIX 接口來簡化系統設計,無法完全相容 POSIX 協定。

>> 傳統分布式檔案系統無法支援海量小檔案場景:為了保證低延遲,中繼資料的可擴充性較差、随檔案規模性能和穩定性下降嚴重,無法支援如 AI 訓練、自動駕駛等檔案規模達到十億甚至百億規模的 AI 場景。

是以,設計出一款不僅能完美相容傳統應用,又能适應最新 AI 場景需求的分布式檔案存儲,顯得意義重大。這樣的分布式檔案系統需要滿足:

  • 完全相容 POSIX 協定。
  • 在確定中繼資料低延遲、穩定的情況下,可線性擴充,支援百億檔案規模,具備超大規模檔案數量中繼資料操作能力的同時具備超高的性能穩定性。

要想達到以上目标,百度滄海·檔案存儲 CFS 給出的技術解答是設計新一代的 Namespace 子系統,在實作建立檔案每秒百萬級 QPS 的同時,保證各項性能名額表現穩定。

這使得檔案存儲 CFS 不僅可以支援傳統應用,作為傳統業務上雲的存儲方案;也可以應用于最新的 AI 場景,滿足海量檔案規模處理的應用需求。

Namespace 的技術現狀

Namespace 子系統的功能主要是維護檔案系統的檔案屬性、目錄樹結構等中繼資料資訊,同時支援相容 POSIX 的目錄樹及檔案操作,如:檔案/目錄建立、查找(Lookup/Getattr)删除及重命名(Rename)等。

目前,業界分布式檔案系統領域衍生出各種類型的 Namespace 技術架構,可以歸類為如下幾種:

  • 單機架構:配合單機全記憶體,可做到低延遲,無法橫向擴充,最大規模僅支援5億檔案數,代表産品為 HDFS。
  • 并行架構:适用于 HPC 等并行檔案系統應用場景,中繼資料靜态切分到多機部署,單機利用一主一備保證可用性,缺乏彈性擴充能力。
  • 分布式架構:将中繼資料按照某種方式切分和擴充到一組機器上,按照叢集的方式管理。
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

相對于單機架構不可擴充及并行架構對擴充性的弱支援,分布式 Namespace 架構在擴充性上做的更加徹底。

那麼直接引入一套現成的分布式 Namespace 架構是否可以直接解決上文提到的挑戰呢? 

答案是否定的,因為現有的分布式 Namespace 架構都存在各自的局限性和不足。

  • 基于 Hash Based 架構盡管具有很好的擴充性及負載均衡效果,但是其犧牲了 POSIX 相容語義的支援。該架構方案将檔案全路徑 Hash 來組織打散到分布式 Meta 叢集,對于 Lookup 路徑查找非常友好同時容易實作,但是缺點是犧牲了中繼資料的局部性,尤其是 rename 的實作複雜度高且性能很差,這類架構主要停留在學術研究,沒有在工業界大規模應用,典型的系統如 Dr.Hadoop,GiraffaFS;
  • 基于子樹劃分架構保證了中繼資料的局部性,可相容 POSIX 語義,但是擴充性不夠好 。該架構方案通過将層級目錄樹拆分成多個子樹并将每顆子樹按照相應的負載政策部署到不同的 Meta 節點中,單節點上具有很好的中繼資料局部性,但是缺點就是容易産生熱點,負載均衡難以實作,擴充性不夠好,典型的實作如 CephFS、IndexFS;

相對于前兩種架構都具有明顯的局限性且難以彌補,近幾年脫穎而出的基于分布式資料庫或分布式 KV 的 Namespace 架構兼顧了擴充性及 POSIX 語義相容支援。

該方案通常采用分層架構:上層維護了一層中繼資料處理層,該層将目錄樹 POSIX 操作轉化為資料庫事務請求。下層是分布式資料庫或分布式 KV 層,負責中繼資料的存儲管理,同時對上層的資料庫事務請求進行語義處理。

通過這樣的分層架構就做到了對 POSIX 語義的完整相容。同時,利用分布式資料庫或分布式 KV 本身的可擴充性,做到了 NameSpace 架構的可擴充。

另外,為了進一步提升 POSIX 語義的處理速度,通常會維護一層 Hint Cache 來加速中繼資料的處理。

雖然該架構方案可以在存儲層面做到彈性可擴充且簡化了中繼資料的處理,但由于現有架構對鎖及資料庫事務存在強依賴,Namespace 在寫延遲及寫性能的擴充性層面仍然存在不足,難以支援每秒建立百萬以上的檔案的需求。

百度智能雲 CFS 在此架構基礎上改進和擴充出新一代的 Namespace 架構。

CFS 的 Namespace 架構

百度滄海的檔案存儲 CFS 作為百度智能雲提供的分布式檔案存儲服務,通過标準的檔案通路協定(NFS/SMB),為雲上的虛機、容器等計算資源提供無限擴充、高可靠、地域級别共享的檔案存儲能力。

為了兼顧傳統及 AI 場景的使用者需求,彈性可擴充且相容 POSIX一直被作為 CFS 架構尤其是 Namespace 子系統的重要設計目标。

基于分布式 KV 架構,CFS 采用自研的分布式索引系統來支撐 Namespace 子系統,并基于該索引系統實作了分層架構,即 POSIX 語義層+分布式 KV 層。該索引系統經過 CFS 産品多年的打磨,目前可以非常好地解決 Namespace 層級結構擴充性與低延遲的需求。

相比于其他基于分布式資料庫或分布式 KV 的分布式檔案系統(比如HopsFS),CFS 不直接依賴底層分布式資料庫或分布式 KV 層的鎖及事務機制來維持 POSIX 語義,而是通過以下創造性的設計配合來解決:

  • 适配層級結構資料模型,定制化 Schema 來降低 KV 層資料之間的關聯性。
  • 在 POSIX 語義層設計一套針對 Namespace 層級結構、相對資料庫鎖及事務機制更輕量的一緻性協定,保障所有 Namespace 層的讀寫操作不會破壞 POSIX 語義。

基于以上設計,CFS 在 Namespace 層的讀寫操作都具備非常低的延遲和好的線性擴充能力,具體性能參考下文測試結果。

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

除此之外,為了進一步優化延遲,CFS 團隊在該架構的各個層面做了深入優化:

  • 單機層面進一步優化延遲:單機 KV 引擎适配了 AEP 等高速硬體,確定 Namespace 關鍵路徑低延遲。
  • 一緻性協定層面進一步優化擴充性及延遲:POSIX 語義層一緻性協定采用無狀态實作,不同節點之間無需同步、無需單獨部署,而是作為 LIB 編譯到 Client 或者接入子產品,簡化了架構的維護及 Namespace 讀寫路徑,同時進一步保障了架構的可擴充性。

Namespace 性能測試

為了驗證 CFS 産品 Namespace 架構的擴充性及性能穩定性,我們分别從擴充索引系統 KV 節點和 Meta Client 節點兩個次元來測試,在驗證擴充性同時給出相應單次請求的延遲資料及穩定性。

說明:以下測試 workload 均采用 Mdtest 作為中繼資料測試工具,其中 Meta Client 作為檔案系統協定接入層對接标準的NFS協定,壓測中的線程工作在相同 FS 不同路徑上。

KV 節點擴充 

以下資料對比了10個 KV 節點和20個 KV 節點在并發 mkdir 的性能資料表現(圖中 BE 對應分布式 KV 層一個後端 KV 節點):

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

通過以上資料可以看出:

  • 20個 KV 節點相對于10個 KV 節點在寫吞吐上接近于兩倍的提升;
  • 當系統負載正常情況下一次 Namespace 寫延遲隻需要 2ms 左右;
  • 當系統負載過高且瓶頸來到 KV 層,延遲長尾表現穩定;

綜上,可以看出 CFS 的架構在 KV 層可以支援線性擴充。

Meta Client 擴充  

以下是基于叢集的 KV 層固定為24個 KV 節點的對應資料,一方面通過擴充 Meta Client 數來驗證架構在語義層的擴充性,另一方面驗證架構在讀和寫是否具備突破百萬 QPS 的能力。

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構

通過以上資料可以看出:

  • Namespace 寫和讀吞吐可以在 POSIX 語義層做到線性擴充,其中寫操作(檔案\目錄建立)可以達到100萬 QPS,即每秒可支援建立百萬檔案;路徑查找(Lookup)可以達到400萬 QPS,目錄/檔案屬性擷取(Getattr)可以達到600萬 QPS。
  • 延遲方面寫延遲為2ms,讀延遲隻需要百 us 級。

CFS 可以在中繼資料讀寫操作上都可以做到支援線性擴充的同時保證低延遲以及性能穩定性,并且在此基礎上完成每秒建立百萬檔案的挑戰。

長按識别二維碼或點選閱讀原文

了解檔案存儲CFS産品詳細資訊!

每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構
每秒建立百萬檔案,百度滄海·檔案存儲CFS推出新一代Namespace架構