FreeBSD 基金會了 ZFS 的一項新特性:RAID-Z Expansion。
根據介紹,此功能可以對現有的資料進行重新排列 (reflow) —— 本質上是將資料重寫到一個新的磁碟陣列上,即在原來的組加上一個新增加的磁碟。此操作會在邏輯 RAID-Z 組的末尾建立一個新的相鄰空閒空間塊,從而在每個物理磁碟的末尾也進行同樣的操作。
重新排列的資料會保留原始的邏輯 stripe width,這意味著資料與奇偶校驗位的比率將保持不變。新寫入的資料會使用新的邏輯 stripe width,並優化資料與奇偶校驗位的比率。和其他 zfs 和 zpool 操作一樣,重新排列操作會線上進行。
Expansion 可以多次進行,不過前提是儲存池處於健康狀態,如果磁碟掛掉,此過程會被暫停,以允許被重新構建,目前適用於 RAIDZ-1/2/3。
下面的兩張圖說明了 RAID 4/5/6 的傳統擴充套件方式(圖 1)與新 RAID-Z Expansion 工作方式(圖 2)之間的差異。
▲ 圖 1
重新排列的資料不會改變或讀取塊指標。讀取和寫入是按順序進行的。空間圖顯示了哪些資料需要被複制。此外,每個 logical stripe 都是獨立的,無需知道奇偶校驗的位置。分段則仍然儲存在不同的磁碟上,這保證了資料的冗餘。
▲ 圖 2
使用方法
從命令列開始:
+ zpool attach test raidz2-0 /var/tmp/6
雖然 RAID-Z Expansion 的所有功能都已實現,而且到目前為止所有的測試都已通過,但仍有一些未盡事宜需要解決。具體來說,還需要清理程式碼、刪除冗長的紀錄檔,編寫程式碼檔案,以及其他類似的相對較小的任務。官方稱目標是在第三季度前完成這些工作。不過最需要額外幫助的是進一步測試該功能,並在整合此功能前進行程式碼審查。