什麼是 JuiceFS?
開放原始碼社群之間的合作是一件神奇的事。熱情、聰明、有創造力的志願者不僅讓開源解決方案不斷創新,他們也致力於將不同的工具以有趣且有用的方式結合在一起。Milvus 是全球最受歡迎的向量資料庫,而JuiceFS 則是專為雲端原生環境所設計的共享檔案系統,兩者在各自的開源社群中以這種精神結合在一起。本文將解釋什麼是 JuiceFS、如何根據 JuiceFS 共用檔案儲存建立 Milvus 叢集,以及使用者使用此解決方案時可預期的效能。
什麼是 JuiceFS?
JuiceFS 是一個高效能、開放源碼的分散式 POSIX 檔案系統,可建立在 Redis 和 S3 之上。它專為雲原生環境設計,支援管理、分析、歸檔和備份任何類型的資料。JuiceFS 常用於解決大數據挑戰、建置人工智慧 (AI) 應用程式和日誌收集。該系統也支援跨多個用戶端的資料分享,並可在 Milvus 中直接用作共享儲存。
在資料及其對應的元資料分別持久化到物件儲存和Redis之後,JuiceFS 就成為無狀態的中介軟體。透過標準的檔案系統介面,不同的應用程式可以無縫地相互停靠,從而實現資料共享。JuiceFS 依賴 Redis 這個開放原始碼的記憶體資料儲存器來儲存元資料。之所以使用 Redis,是因為它能保證原子性,並提供高效能的元資料作業。所有資料都透過 JuiceFS 用戶端儲存在物件儲存中。架構圖如下:
juicefs-architecture.png
根據 JuiceFS 建立 Milvus 叢集
使用 JuiceFS 建立的 Milvus 叢集 (請參閱下面的架構圖) 是透過使用叢集分片中介軟體 Mishards 來分割上游請求,然後將請求逐級下傳到其子模組。插入資料時,Mishards 會將上游請求分配給 Milvus 寫入節點,而 Milvus 寫入節點會將新插入的資料儲存在 JuiceFS 中。讀取資料時,Mishards 會透過 Milvus 讀取節點將 JuiceFS 中的資料載入記憶體進行處理,然後從上游的子服務收集並傳回結果。
milvus-cluster-built-with-juicefs.png
步驟 1:啟動 MySQL 服務
在群集中的任何節點啟動 MySQL 服務。如需詳細資訊,請參閱使用 MySQL 管理元資料。
步驟 2:建立 JuiceFS 檔案系統
為了示範目的,使用預先編譯的二進位 JuiceFS 程式。為您的系統下載正確的安裝套件,並依照 JuiceFS快速入門指南取得詳細安裝指示。若要建立 JuiceFS 檔案系統,請先設定 Redis 資料庫作為元資料儲存。建議在公共雲端部署時,將 Redis 服務託管在與應用程式相同的雲端。此外,為 JuiceFS 設定物件儲存。本範例使用 Azure Blob Storage,但 JuiceFS 幾乎支援所有物件服務。請選擇最適合您方案需求的物件儲存服務。
設定 Redis 服務和物件儲存後,格式化新的檔案系統,並將 JuiceFS 掛載到本機目錄:
1 $ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3 --storage wasb \
4 --bucket https://<container> \
5 ... \
6 localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs #mount
8
如果 Redis 伺服器不是在本機執行,請將 localhost 取代為下列位址:
redis://<user:password>@host:6379/1
。
安裝成功後,JuiceFS 會返回共用儲存頁面/root/jfs。
安裝成功.png
步驟 3:啟動 Milvus
群集中的所有節點都應安裝 Milvus,且每個 Milvus 節點都應設定有讀取或寫入權限。只有一個 Milvus 節點可以設定為寫入節點,其餘的必須是讀取節點。首先,在 Milvus 系統組態檔案server_config.yaml 中設定cluster
及general
兩節的參數:
章節 cluster
參數 | 說明 | 設定 |
---|---|---|
enable | 是否啟用群集模式 | true |
role | Milvus 部署角色 | rw /ro |
部分 general
# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
timezone: UTC+8
meta_uri: mysql://root:milvusroot@host:3306/milvus
安裝期間,設定的 JuiceFS 共用儲存路徑為/root/jfs/milvus/db。
1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \ #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9
安裝完成後,啟動 Milvus 並確認它已正常啟動。 最後,在群集中的任何節點上啟動 Mishards 服務。下圖顯示 Mishards 成功啟動。如需詳細資訊,請參閱 GitHub教學。
mishards-launch-success.png
效能基準
共用儲存解決方案通常由網路連接儲存 (NAS) 系統實作。常用的 NAS 系統類型包括網路檔案系統 (NFS) 和伺服器訊息區塊 (SMB)。公共雲端平台通常提供與這些通訊協定相容的管理儲存服務,例如 Amazon Elastic File System (EFS)。
與傳統 NAS 系統不同,JuiceFS 是以使用者空間檔案系統 (FUSE) 為基礎實作,所有資料讀寫都直接在應用程式端進行,進一步減少存取延遲。JuiceFS 還有其他 NAS 系統所沒有的獨特功能,例如資料壓縮和快取。
基準測試顯示 JuiceFS 較 EFS 具有重大優勢。在元資料基準 (圖 1) 中,JuiceFS 的每秒 I/O 作業次數 (IOPS) 比 EFS 高出 10 倍。此外,I/O 吞吐量基準(圖 2)顯示 JuiceFS 在單一工作和多工作情境中的表現都優於 EFS。
效能基準-1.png
效能基準-2.png
此外,基準測試顯示,基於 JuiceFS 的 Milvus 群集的首次查詢擷取時間(或將新插入的資料從磁碟載入記憶體的時間)平均僅為 0.032 秒,顯示資料幾乎是瞬間從磁碟載入記憶體。在此測試中,首次查詢擷取時間是使用 100 萬行 128 維向量資料,以 100k 為一批,每隔 1 到 8 秒插入一次來測量。
JuiceFS 是一個穩定可靠的共享檔案儲存系統,建置在 JuiceFS 上的 Milvus 叢集同時提供高效能與彈性的儲存容量。
進一步瞭解 Milvus
Milvus 是一個強大的工具,能夠為大量的人工智慧和向量相似性搜尋應用提供動力。若要進一步瞭解該專案,請查看下列資源:
writer bio-changjian gao.png
writer bio-jingjing jia.png
- 根據 JuiceFS 建立 Milvus 叢集
- 效能基準
- 進一步瞭解 Milvus
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word