天天看點

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

作者:Gitee
高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

檔案系統提供的通路和管理方法支撐了絕大部分的計算機應用。如今,一切資料似乎都在向“雲”轉移,如果隻是上傳資料量小的檔案,上雲似乎沒有太多阻礙。然而面對大量且突發的計算資料任務時,上傳檔案卻往往面臨着新挑戰、新難題。這時,分布式檔案系統發揮了其價值功能。

迄今為止,受到 Google File System (GFS)論文的影響,市面上誕生了許多優秀的開源分布式檔案存儲系統,如 CephFS、HDFS、Lustre、MogileFS 等。

不同的分布式檔案系統都有其特點與優勢,大家也可以根據需要自行選擇。有趣的是,最近在 Gitee 上發現了一款開源分布式檔案系統——JuiceFS,它創新将對象存儲作為底層存儲媒體,實作了存儲空間的無限擴充。這究竟是如何實作的?它會是雲時代分布式檔案系統的新答案嗎?咱們一起瞧瞧。

JuiceFS 是什麼?

JuiceFS 是一款面向雲原生設計的分布式檔案系統,基于 Redis 和對象存儲建構。它主要通過 Redis 來存儲檔案的中繼資料,無需修改代碼就可以像本地存儲一樣将海量雲存儲直接投入生産環境的大資料、機器學習、人工智能等各種應用平台中。

項目作者:Juicedata

開源許可證:Apache-2.0

項目位址:https://gitee.com/juicedata/JuiceFS

例如,使用 JuiceFS 存儲資料時,資料本身會被持久化在對象存儲(例如 Amazon S3)當中,而資料所對應的中繼資料可以根據場景需求被持久化在 Redis、MySQL、TiKV 等多種資料庫引擎中。

技術是如何實作的?

JuiceFS 采用“資料”與“中繼資料”分離存儲的架構,JuiceFS 依靠 Redis 來存儲檔案的中繼資料。Redis是基于記憶體的高性能的鍵值資料存儲,較為适合存儲中繼資料。是以,當資料将通過 JuiceFS 用戶端存儲到對象存儲中,能更好的實作檔案系統的分布式設計。

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

1.任何存入 JuiceFS 的檔案都會被拆分成固定大小的 "Chunk",預設的容量上限是 64 MiB。

2.每個 Chunk 由一個或多個 "Slice" 組成,Slice 的長度不固定,取決于檔案寫入的方式。

3.每個 Slice 又會被進一步拆分成固定大小的 "Block",預設為 4 MiB,最後這些 Block 會被存儲到對象存儲。

4.同時,JuiceFS 會将每個檔案以及它的 Chunks、Slices、Blocks 等中繼資料資訊存儲在中繼資料引擎中。

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

注意:

如果你發現在對象存儲平台的檔案浏覽器中找不到存入 JuiceFS 的源檔案,存儲桶中隻有一個 chunks 目錄和一堆數字編号的目錄和檔案時,請不用擔心。因為使用 JuiceFS,檔案最終會被拆分成 Chunks、Slices 和 Blocks 存儲在對象存儲。

核心架構

JuiceFS由 三部分 組成:

  • JuiceFS 用戶端

用于協調對象存儲和中繼資料存儲引擎,以及 POSIX、Hadoop、Kubernetes、S3 Gateway 等檔案系統接口的實作。

  • 資料存儲

存儲資料本身,支援本地磁盤、對象存儲。

  • 中繼資料引擎

存儲資料對應的中繼資料,支援 Redis、MySQL、SQLite 等多種引擎。

架構圖

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

如何操作?

操作前準備

1.準備 Redis 資料庫

2.準備對象存儲

安裝用戶端

建立檔案系統

以 Linux 系統為例

1.建立名為 myjfs 檔案系統

juicefs format sqlite3://myjfs.db myjfs           

2.檢視傳回資訊,分析myjfs 的存儲路徑是 file:///Users/herald/.juicefs/local/myjfs/

2021/12/14 18:26:37.666618 juicefs[40362] <INFO>: Meta address: sqlite3://myjfs.db
[xorm] [info]  2021/12/14 18:26:37.667504 PING DATABASE sqlite3
2021/12/14 18:26:37.674147 juicefs[40362] <WARNING>: The latency to database is too high: 7.257333ms
2021/12/14 18:26:37.675713 juicefs[40362] <INFO>: Data use file:///Users/herald/.juicefs/local/myjfs/
2021/12/14 18:26:37.689683 juicefs[40362] <INFO>: Volume is formatted as {Name:myjfs UUID:d5bdf7ea-472c-4640-98a6-6f56aea13982 Storage:file Bucket:/Users/herald/.juicefs/local/ AccessKey: SecretKey: BlockSize:4096 Compression:none Shards:0 Partitions:0 Capacity:0 Inodes:0 EncryptKey:}           

挂載檔案系統

1.将 myjfs 檔案系統挂載到 ~/jfs 檔案夾裡

juicefs mount sqlite3://myjfs.db ~/jfs           

2.為了在背景保持挂載,你可以在挂載時指定 -d 或 --background 選項,即讓用戶端在守護程序中挂載檔案系統

juicefs mount sqlite3://myjfs.db ~/jfs -d           

3.執行下列指令後,可将 挂載點 ~/jfs 解除安裝

juicefs umount ~/jfs           

注意:

由于 SQLite 是單檔案資料庫,挂載時要注意資料庫檔案的的路徑,JuiceFS 同時支援相對路徑和絕對路徑。

因篇幅有限,針對如何設定對象存儲、如何進行緩存管理、如何針對故障診斷與分析等相關問題就不再詳述,你也可以前往 Gitee 倉庫檢視文檔詳情,了解 JuiceFS 的進一步實踐。

年終狂歡最後兩周,錯過再等一年

自 11 月 8 日以來,Gitee 企業版已經開啟了 「年終狂歡季」 活動,三重驚喜福利新老使用者均可享受!

活動位址:https://gitee.com/activity/2022double11

新老同享 好禮暢領

現在購買 Gitee 企業版任意版本,即可獲得使用時長贈送,最多可享六個月使用時長,且購買任意版本兩年及以上即可獲贈價值 488 元的辦公室好禮一份。

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

高階功能 不限時免

在 Gitee 企業版年終狂歡季進行的同時,Gitee 團隊也在努力為企業和團隊提供更強的産品能力,繼項目流水線和 GiteeScan 的全新進化後,Gitee 企業版也在近日全新上線了 Gitee 自動化(Gitee Automation)功能。感興趣的快去 Gitee 企業版試試吧。

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?
高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

友福同享 薦者有份

同時,Gitee 推薦官計劃也将在活動期間火熱更新,活動期間獎勵提升至 150%,成為推薦官,最高躺赢 45% 現金!

高相容+雲原生,JuiceFS 會是分布式檔案系統的新答案嗎?

現在前往年終狂歡主會場,和 25 萬企業一起為高效研發創造無限可能吧!

活動位址:https://gitee.com/activity/2022double11

繼續閱讀