天天看點

你用對了麼?對象檔案網關 VS 分布式檔案存儲

作者:焱融科技

在近期的文章留言中,我們看到一個很好的提問可以作為話題一起探讨。有關基于對象的兩類檔案存儲,一類是“對象檔案網關型”檔案存儲,即在對象存儲的基礎上提供檔案接口,支援使用者業務以檔案的方式去使用對象存儲。另一類則是分布式檔案存儲,即對象存儲的使用隻是整個檔案系統功能的一部分,這種檔案系統本身的功能是完整的,且同時支援對象存儲,來滿足某些業務需求。針對這兩類存儲産品一些同學存有疑惑,比如:

  • 疑惑一:産品架構的設計思路上到底有何不同?
  • 疑惑二:對象檔案網關 VS 分布式檔案存儲架構的優劣勢展現在哪裡?
  • 疑惑三:這 2 種産品架構适合怎樣的應用場景和業務?

如果恰巧你關注的也是以上這些問題,希望這篇技術科普文可以很好地幫助到你,也歡迎大家留言。

衆所周知,存儲系統一般分為塊存儲、對象存儲和檔案存儲三種。其中檔案存儲的使用最為廣泛,小到個人電腦、家用 NAS,大到傳統 HPC、大資料平台、AI 等等,這些都是以使用檔案接口為主。近幾年,得益于存儲空間大、成本低的優勢,對象存儲扮演着越來越重要的角色。但使用者業務往往不能直接使用對象存儲,于是市面上出現了一些實際使用的是對象存儲但對外提供檔案接口的号稱檔案存儲的方案。

“對象檔案網關型”檔案存儲,一般架構上可以劃分為用戶端、中繼資料服務和資料服務三大塊:

1、用戶端:一般都是基于 fuse 實作,優點是簡單,缺點是會有一定性能損耗(可參考論文 FAST'17 To FUSE or Not to FUSE,原文連結:https://www.usenix.org/system/files/conference/fast17/fast17-vangoor.pdf)。

2、中繼資料服務:基本都是使用第三方資料庫,比如 mysql、redis、tikv 等。

  • mysql 沒有強一緻叢集方案,性能較差,是以一般不會選用。
  • redis 以性能高著稱,但記憶體占用極高,且有單點資料風險,不能支援較大資料規模。
  • tikv 是強一緻的分布式 kv,相對而言是個不錯的選擇。但掌握和維護 tikv 頗有挑戰。

3、資料服務:直接使用對象存儲,比如 Amazon S3、阿裡雲 OSS 等。

你用對了麼?對象檔案網關 VS 分布式檔案存儲

可以看出,對象檔案網關架構深度使用和依賴于第三方系統,它将複雜的 data io 交給對象存儲,将更複雜的 meta io 交給第三方資料庫,比較取巧,但也的确不失為一種有效的選擇。對象網關檔案存儲天然獲得了這些優勢:

  • 容量無限,使用者可以在對象存儲中存放海量資料。
  • 成本相對較低,對象存儲往往用價格更低的硬碟(如大容量機械硬碟),且使用 EC 等更節省空間的資料備援算法。
  • 一定的吞吐能力。

也正因為這種架構設計,為“對象檔案網關型”檔案存儲帶來一些功能上的限制,最為突出的是随機寫性能差,究其原因一是對象不支援修改,二是使用者業務往往需要寫資料。是以不同的對象檔案網關系統,采取了不同的應對方法:

  • 方法一:規避需要寫入,尤其是随機寫較多的業務。擁抱隻讀為主、資料量很大的業務,比如視訊備份等。
  • 方法二:利用本地盤做資料緩存。不過這又引入了新的問題,主要是本地盤缺乏備援,也不友善資料共享。

那麼,分布式檔案存儲系統的表現又是怎樣的呢?首先它是基于 x86 架構設計的一款分布式檔案存儲系統,支援主流對象存儲,一般使用者會使用兩種典型功能:資料分層和跨雲資料整合。接下來,我們逐一介紹下:

資料分層

定義熱層在本地,冷層在對象存儲。被讀寫的資料将自動落在熱層,而未被通路的資料,根據政策被判定為冷資料後,将被自動放到冷層,冷熱層資料流動完全對使用者透明。

優勢:

這種設計思路可以了解為熱層為資料讀寫提供極高的性能。比如 GPU 計算叢集對存儲性能要求極高,則熱層可以部署 RDMA、NVMe 等高性能硬體去滿足業務需求。而冷層又可以存儲海量的冷資料,用以節省存儲成本。冷熱層資料透明流動,做到業務無感覺。使用者既得到了熱層高性能,同時又得到了冷層的大容量低成本。

你用對了麼?對象檔案網關 VS 分布式檔案存儲

跨雲資料整合

公有雲對象存儲提供了非常優秀的可通路性,是以我們可以基于這一特點,為檔案系統實作資料在多雲間靈活流動。比如以下列舉就是我們經常會遇到的一種場景:

1、使用者在邊緣節點産生資料,通過标準對象接口和工具将資料上傳到公有雲對象存儲。

2、使用者在計算中心 A

  • 部署檔案存儲。
  • 建立和對應對象資料集的關聯,将對象快速地映射到檔案系統中。
  • 使用者讀取和計算對象映射後的檔案資料。資料按需加載,即通路到某對象的資料時,才去讀取這個對象的相關資料區段。
  • 計算完成後,使用者可以選擇取消關聯,上傳新産生的資料。

3、使用者在計算中心 B 時,也能通過資料鍊通功能,去關聯和使用邊緣節點産生的資料集。同時也可以去打通和使用計算中心 A 産生和上傳的資料。

你用對了麼?對象檔案網關 VS 分布式檔案存儲

接下來,通過一張對比表來看下對象檔案網關與分布式檔案存儲這兩種架構的差別和所适用業務場景。

你用對了麼?對象檔案網關 VS 分布式檔案存儲

綜上分析和讨論,我們可以看到兩種檔案存儲的設計思路核心以及其特點還是有很大的不同,簡單說:

  • 對象檔案網關:架構簡單,實作簡單,但随機寫是硬傷。
  • 分布式檔案存儲:熱層能提供高可靠和高性能,同時利用對象來提供大容量和低成本。這種架構相比對象檔案網關實作起來要複雜很多。

在客戶業務場景方面,對象檔案網關更适用于中小型隻讀的 AI 場景客戶;分布式檔案存儲适合的場景更通用全面,如果是大型的 AI / HPC 場景,那麼分布式檔案存儲是最佳選擇。

繼續閱讀