我應該多久對 ZFS 池進行一次碎片整理?

我應該多久對 ZFS 池進行一次碎片整理?

我的 ZFS 每月清理一次,72TB 大約需要 24 小時。我能找到的關於應該多久擦洗一次的信息是:

  • 非常繁忙的泳池,每週一次
  • 泳池不太繁忙,每月一次

或進行擦洗,測量時間並進行相應調整。

但是線上碎片整理呢?

問題

線上碎片整理是否像清理一樣被視為良好實踐?如果的話,我該多久清理一次?

答案1

這不是您經常需要做的事情。主要是因為ZFS中沒有線上碎片整理的概念。這實際上只能透過將池資料複製到另一個池或重寫到新儲存來實現。相反,請努力將 zpool 的利用率保持在 70% 以下。

答案2

我知道這是一個老問題,但我覺得如果你今天像我一樣遇到這個問題,我可以補充一點。

ZFS 沒有內建的碎片整理選項。由於區塊的分配方式、ZFS 的寫入時複製方式以及鎖定區塊的快照意味著您無法真正對資料進行碎片整理。我所知道的唯一解決方案是創建一個同等大小的池,然後 ZFS 發送/接收數據,銷毀舊池,然後重新建立。

另外值得一提的是,你的磨砂膏是反著的。您經常使用的資料會不斷驗證其校驗和,而靜態資料則在不驗證區塊/指標校驗和的情況下就在那裡腐爛。

一般來說,大多數人至少會花 1 個月的時間來處理大量使用的資料集(如果您知道 90% 以上的資料將像網頁伺服器一樣被使用,時間甚至會更少)

對於不經常使用的數據,每月清理兩次或每週一次是很好的做法(取決於磁碟數量、資料量、磁碟機的新舊程度等)YMMV

相關內容