JuiceFS 快取預熱詳解
快取預熱是一個比較常見的概念,相信很多小夥伴都有所瞭解。對於 JuiceFS 來說,快取預熱就是將需要操作的資料預先從物件儲存拉取到本地,從而獲得與使用本地儲存類似的效能表現。
快取預熱
JuiceFS 快取預熱是一種主動快取手段,它可以將高頻使用的資料預先快取到本地,從而提升檔案的讀寫效率。
使用 warmup
子命令預熱快取:
juicefs warmup [command options] [PATH ...]
可用選項:
-
•
--file
或-f
:通過檔案批量指定預熱路徑 -
•
--threads
或-p
:併發執行緒,預設 50 個執行緒。 -
•
--background
或-b
:後臺執行
只能預熱已經掛載的檔案系統中的檔案,即預熱的路徑必須在本地掛載點上。
預熱一個目錄
例如,將檔案系統掛載點中的 dataset-1
目錄快取到本地:
juicefs warmup /mnt/jfs/dataset-1
預熱多個目錄或檔案
當需要同時預熱多個目錄或檔案的快取時,可以將所有路徑寫入一個文字檔案。例如,建立一個名為 warm.txt
的文字檔案,每行一個掛載點中的路徑:
/mnt/jfs/dataset-1
/mnt/jfs/dataset-2
/mnt/jfs/pics
通過檔案批量指定預熱路徑:
juicefs warmup -f warm.txt
快取位置
取決於作業系統,JuiceFS 的預設快取路徑如下:
-
• Linux :
/var/jfsCache
-
• macOS :
$HOME/.juicefs/cache
-
• Windows :
%USERPROFILE%\.juicefs\cache
對於 Linux 系統,要注意預設快取路徑要求管理員許可權,普通使用者需要有權使用 sudo
才能設定成功,例如:
sudo juicefs mount redis://127.0.0.1:6379/1 /mnt/myjfs
另外,可以在掛載檔案系統時通過 --cache-dir
選項設定在當前系統可以訪問的任何儲存路徑上。對於沒有訪問 /var
目錄許可權的普通使用者,可以把快取設定在使用者的 HOME
目錄中,例如:
juicefs mount --cache-dir ~/jfscache redis://127.0.0.1:6379/1 /mnt/myjfs
將快取設定在速度更快的 SSD 磁碟可以有效提升效能。
記憶體盤
如果對檔案的讀效能有更高要求,可以把快取設定在記憶體盤上。對於 Linux 系統,通過 df
命令檢視 tmpfs
型別的檔案系統:
$ df -Th | grep tmpfs
檔案系統 型別 容量 已用 可用 已用% 掛載點
tmpfs tmpfs 362M 2.0M 360M 1% /run
tmpfs tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
其中 /dev/shm
是典型的記憶體盤,可以作為 JuiceFS 的快取路徑使用,它的容量一般是記憶體的一半,可以根據需要手動調整容量,例如,將快取盤的容量調整為 32GB:
sudo mount -o size=32000M -o remount /dev/shm
然後使用該路徑作為快取,掛載檔案系統:
juicefs mount --cache-dir /dev/shm/jfscache redis://127.0.0.1:6379/1 /mnt/myjfs
共享目錄
SMB、NFS 等共享目錄也可以用作 JuiceFS 的快取,對於區域網有多個裝置掛載了相同 JuiceFS 檔案系統的情況,將區域網中的共享目錄作為快取路徑,可以有效緩解多個裝置重複預熱快取的頻寬壓力。
以 SMB/CIFS 共享為例,使用 cifs-utils
包提供的工具掛載區域網中的共享目錄:
sudo mount.cifs //192.168.1.18/public /mnt/jfscache
將共享目錄作為 JuiceFS 快取:
sudo juicefs mount --cache-dir /mnt/jfscache redis://127.0.0.1:6379/1 /mnt/myjfs
多快取目錄
JuiceFS 支援同時設定多個快取目錄,從而解決快取空間不足的問題,使用 :
分割多個路徑,例如:
sudo juicefs mount --cache-dir ~/jfscache:/mnt/jfscache:/dev/shm/jfscache redis://127.0.0.1:6379/1 /mnt/myjfs
設定了多個快取路徑時,客戶端會採用 hash 策略向各個快取路徑中均勻地寫入資料。
Tips
當設定了多個快取目錄時, --cache-size
選項表示所有快取目錄中的資料總大小。建議不同快取目錄的可用空間保持一致,否則可能造成不能充分利用某個快取目錄空間的情況。
例如 --cache-dir
為 /data1:/data2
,其中 /data1
的可用空間為 1GiB, /data2
的可用空間為 2GiB, --cache-size
為 3GiB, --free-space-ratio
為 0.1。因為快取的寫入策略是均勻寫入,所以分配給每個快取目錄的最大空間是 3GiB / 2 = 1.5GiB
,會造成 /data2
目錄的快取空間最大為 1.5GiB,而不是 2GiB * 0.9 = 1.8GiB
。
總結
本篇介紹了介紹如何使用 JuiceFS 快取預熱以及快取位置的選擇,該功能能夠有效的增加叢集的利用率,使得程式一開始執行就具有較好的 IO 讀取速度,整體效率上升。
JuiceFS 社群故事徵集ing!
首屆 JuiceFS 社群徵文活動正在進行中 。希望通過本次活動彙集更多優質內容,幫助各位開發者、使用者更加便捷、高效地使用 JuiceFS,更好地融入開源社群, 點此快來投稿吧! FILCO 鍵盤、冰墩墩、社群周邊等你拿~
:point_down: 掃碼加群 :point_down:
:point_down: 關注「 Juicedata 」,獲取更多技術乾貨 :point_down:
- 30款提升組織效能 SaaS 工具,我們的寶藏工具箱大公開
- Grafana Prometheus 搭建 JuiceFS 視覺化監控系統
- 移動雲使用 JuiceFS 支援 Apache HBase 增效降本的探索
- Grafana Prometheus 搭建 JuiceFS 視覺化監控系統
- JuiceFS 在資料湖儲存架構上的探索
- JuiceFS 在資料湖儲存架構上的探索
- JuiceFS 快取預熱詳解
- JuiceFS 快取預熱詳解
- 巧用 JuiceFS Sync 命令跨雲遷移和同步資料
- 巧用 JuiceFS Sync 命令跨雲遷移和同步資料
- 老同事拉我創業,做一家開源儲存公司
- 小團隊如何妙用 JuiceFS
- 社群投稿|小團隊如何妙用 JuiceFS
- CSI 工作原理與JuiceFS CSI Driver 的架構設計詳解
- JuiceFS CSI Driver 架構設計詳解
- 怎麼做 HDFS 的原地平滑縮容?
- 來自開源社群的她力量
- 雲上共享檔案系統的相容性大比拼
- 用 JuiceFS 備份 Nginx 日誌可以這麼簡單
- 讓 JuiceFS 幫你做好「異地備份」