🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI

什麼是 JuiceFS?

  • Engineering
June 15, 2021
Changjian Gao and Jingjing Jia

開放原始碼社群之間的合作是一件神奇的事。熱情、聰明、有創造力的志願者不僅讓開源解決方案不斷創新,他們也致力於將不同的工具以有趣且有用的方式結合在一起。Milvus 是全球最受歡迎的向量資料庫,而JuiceFS 則是專為雲端原生環境所設計的共享檔案系統,兩者在各自的開源社群中以這種精神結合在一起。本文將解釋什麼是 JuiceFS、如何根據 JuiceFS 共用檔案儲存建立 Milvus 叢集,以及使用者使用此解決方案時可預期的效能。

什麼是 JuiceFS?

JuiceFS 是一個高效能、開放源碼的分散式 POSIX 檔案系統,可建立在 Redis 和 S3 之上。它專為雲原生環境設計,支援管理、分析、歸檔和備份任何類型的資料。JuiceFS 常用於解決大數據挑戰、建置人工智慧 (AI) 應用程式和日誌收集。該系統也支援跨多個用戶端的資料分享,並可在 Milvus 中直接用作共享儲存。

在資料及其對應的元資料分別持久化到物件儲存和Redis之後,JuiceFS 就成為無狀態的中介軟體。透過標準的檔案系統介面,不同的應用程式可以無縫地相互停靠,從而實現資料共享。JuiceFS 依賴 Redis 這個開放原始碼的記憶體資料儲存器來儲存元資料。之所以使用 Redis,是因為它能保證原子性,並提供高效能的元資料作業。所有資料都透過 JuiceFS 用戶端儲存在物件儲存中。架構圖如下:

juicefs-architecture.png juicefs-architecture.png

根據 JuiceFS 建立 Milvus 叢集

使用 JuiceFS 建立的 Milvus 叢集 (請參閱下面的架構圖) 是透過使用叢集分片中介軟體 Mishards 來分割上游請求,然後將請求逐級下傳到其子模組。插入資料時,Mishards 會將上游請求分配給 Milvus 寫入節點,而 Milvus 寫入節點會將新插入的資料儲存在 JuiceFS 中。讀取資料時,Mishards 會透過 Milvus 讀取節點將 JuiceFS 中的資料載入記憶體進行處理,然後從上游的子服務收集並傳回結果。

milvus-cluster-built-with-juicefs.png 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

installation-success.png 安裝成功.png

步驟 3:啟動 Milvus

群集中的所有節點都應安裝 Milvus,且每個 Milvus 節點都應設定有讀取或寫入權限。只有一個 Milvus 節點可以設定為寫入節點,其餘的必須是讀取節點。首先,在 Milvus 系統組態檔案server_config.yaml 中設定clustergeneral 兩節的參數:

章節 cluster

參數說明設定
enable是否啟用群集模式true
roleMilvus 部署角色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 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。

performance-benchmark-1.png 效能基準-1.png

performance-benchmark-2.png 效能基準-2.png

此外,基準測試顯示,基於 JuiceFS 的 Milvus 群集的首次查詢擷取時間(或將新插入的資料從磁碟載入記憶體的時間)平均僅為 0.032 秒,顯示資料幾乎是瞬間從磁碟載入記憶體。在此測試中,首次查詢擷取時間是使用 100 萬行 128 維向量資料,以 100k 為一批,每隔 1 到 8 秒插入一次來測量。

JuiceFS 是一個穩定可靠的共享檔案儲存系統,建置在 JuiceFS 上的 Milvus 叢集同時提供高效能與彈性的儲存容量。

進一步瞭解 Milvus

Milvus 是一個強大的工具,能夠為大量的人工智慧和向量相似性搜尋應用提供動力。若要進一步瞭解該專案,請查看下列資源:

  • 閱讀我們的部落格
  • Slack 上與我們的開放原始碼社群互動。
  • GitHub 上使用全球最受歡迎的向量資料庫,或為其做出貢獻。
  • 使用我們新的bootcamp 快速測試和部署 AI 應用程式。

writer bio-changjian gao.png writer bio-changjian gao.png writer bio-jingjing jia.pngwriter bio-jingjing jia.png

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀