小夥伴們大家好,JuiceFS v0.17 在國慶小長假來臨之際如期釋出了!這是我們在 2021 年秋季推出的第二個版本,讓我們直奔主題,看看都有哪些新變化吧。
本次更新累計 80+ 提交,共有 9 位來自 JuiceFS 社群的小夥伴在 GitHub 上貢獻程式碼。在這裡,我們向每一位貢獻者表示最誠摯的感謝,同時歡迎螢幕前的你也加入到 JuiceFS 開源社群,貢獻程式碼、文件或討論想法。
通過 LTP 1270 項測試,Linux 系統下相容性更完美
JuiceFS 的最新版本針對 Linux 系統環境做了進一步的優化,改進了 rename 和 setxattr 讀其他引數的支援,順利通過了 LTP 的 1270 項測試。
LTP(Linux Test Project)是一個由 IBM,Cisco 等多家公司聯合開發維護的專案,旨在為開源社群提供一個驗證 Linux 可靠性和穩定性的測試集。LTP 中包含了各種工具來檢驗 Linux 核心和相關特性。
測試結果:
Testcase Result Exit Value
-------- ------ ----------
fcntl17 FAIL 7
fcntl17_64 FAIL 7
getxattr05 CONF 32
ioctl_loop05 FAIL 4
ioctl_ns07 FAIL 1
lseek11 CONF 32
open14 CONF 32
openat03 CONF 32
setxattr03 FAIL 6
-----------------------------------------------
Total Tests: 1270
Total Skipped Tests: 4
Total Failures: 5
Kernel Version: 5.4.0-1029-aws
Machine Architecture: x86_64
其中,跳過和失敗的專案主要是由於幾個尚未支援的功能,詳情見此文件。
優化儲存臨時資料的效能
針對 Spark 的 shuffle 檔案等臨時資料儲存需求,社群貢獻者祝威廉(@allwefantasy)給 JuiceFS 貢獻了資料延遲上傳功能,它可以讓 JuiceFS 優先將資料寫入到本地快取盤中,如果這些資料在短時間內又被刪除,則無需寫入物件儲存,可以提供接近本地盤的讀寫效能。而當寫入資料很多時,又會自動寫到物件儲存來釋放本地盤空間,再也不用擔心 shuffle 資料把磁碟寫滿了。
這個新功能讓 JuiceFS 可以作為一個彈性本地盤使用,為臨時資料提供無限儲存空間和低延時訪問。
為了進一步提升效能,還新增了一個執行在客戶端記憶體中的後設資料引擎(MemKV
)。與其他後設資料引擎一樣,MemKV 的作用也是用來儲存資料相關的元資訊,但它不持久化,客戶端 umount 以後,MemKV 的後設資料就釋放了。MemKV 完全在記憶體中執行,有著絕對的效能優勢,非常適合用作臨時檔案的儲存場景。
TiKV 後設資料引擎在 Hadoop 場景中效能提升 5 倍
JuiceFS Java 客戶端需要頻繁做路徑解析,Redis 引擎通過 Lua 實現了伺服器端的多級路徑解析,而 SQL 和 TiKV 引擎仍然需要多次後設資料請求才能解析一個路徑,尤其是當路徑比較深時對影響有比較大的影響。
為了解決這個問題,本次更新在 JuiceFS Hadoop SDK 客戶端中引入了類似於 Linux 核心的後設資料快取機制,可以分別通過引數控制目錄、檔案和屬性的過期時間。可以通過如下的方式啟用:
<property>
<name>juicefs.attr-cache</name>
<value>3</value>
</property>
<property>
<name>juicefs.entry-cache</name>
<value>3</value>
</property>
<property>
<name>juicefs.dir-entry-cache</name>
<value>3</value>
</property>
以下是對 9 層目錄的後設資料效能測試,可以看到啟用後設資料快取夠大幅提升後設資料操作的效能。(數值代表操作的時延,越小越好。)
但需要注意的是,開啟後設資料快取後會影響多客戶端之間的一致性(有限時間視窗的最終一致性),比如一個客戶端刪除了某個檔案後,其他節點可能因為快取未到期,仍然認為檔案存在。因此,一般建議在查詢場景下使用該功能。如果是混合讀寫的場景,建議適當開啟目錄和屬性的快取,而關閉檔案項的快取。
1 分鐘上手效能測試,結果一目瞭然
我們為 JuiceFS 內建的效能測試工具 bench 的結果做了進一步的優化,在簡潔直觀的基礎上,進一步的讓關鍵資料高亮顯示,如果某項效能資料偏離正常區間,會顯示為黃色甚至紅色,建議特別關注下。
有關 JuiceFS 新版的更多內容,歡迎訪問 GitHub 專案主頁瞭解詳情: