ZFS線上磁碟遷移

ZFS線上磁碟遷移

我想知道 ZFS 是否可以處理以下問題。假設我在 zpool 上安裝了 FreeBSD,並在鏡像設定中擁有兩個 500GB 實體磁碟。這些構成根分割區,因此實際最多僅使用 20GB。

我稍後想在鏡像設定中用兩個小型 SSD 替換實體磁碟。有沒有辦法在網路上做到這一點?我的想法是將這些磁碟作為額外的鏡像新增到 zpool,等待重新同步完成,然後刪除舊磁碟機。問題是這些新磁碟會比原始磁碟小。

我的一個想法是只對 500GB 磁碟機進行分割,這樣 ZFS 在每個實體磁碟上只獲得 30GB 空間,其餘空間都被浪費了。這樣SSD就會有更多的空間,所以我不會遇到收縮問題。問題是這樣我需要提前估計未來更換磁碟的大小。有辦法避免這種情況嗎?

答案1

您是正確的,如果 vdev 是整個磁碟,那麼當您切換到 SSD 時,它們必須至少具有該大小,您不能「縮小」到較小的磁碟(當然您可以成長到更大的磁碟)。您也可以使用分割區,使 vdev 小於未來的 SSD,並且您必須猜測這些 SSD 將有多大,這也是正確的。

或者,如果伺服器可以同時容納所有 4 個磁碟,即使時間很短,您現在也可以按照自己想要的方式建立 zpool,然後使用發送/接收將資料傳輸到新的 SSD。這確實需要同時插入所有設備。需要注意的是,發送/接收操作只能從快照發送 - 因此您無法複製“活動”磁碟,並且需要為此做出調整(通過增加一點複雜性,停機時間可能會很短)。

更複雜的是,實際上可以將「傳送」儲存到另一個磁碟上某個位置的中間文件,然後從中「接收」。所以任何時候你只需要伺服器中的3塊磁碟。更複雜的是,4 個磁碟可能位於不同的伺服器上,並且可以透過 ssh 甚至 netcat 進行發送/接收。

答案2

我想不出任何明顯的方法來做到這一點。

目前,由於您無論如何都必須對根磁碟進行分割(以新增開機程式碼),而且這聽起來並不像經常發生的事情,因此我建議只為根池建立一個小(<20GB)分割區。如果您需要額外的空間,您可以利用剩餘的空間創建第二個池。當需要放入SSD 時,只需對它們進行分區,添加啟動程式碼,將它們“zfs Attach”到根池,然後“zfs detach”原始資料(或“zfs Replace”而不是“zfs Attach”和“zfs detach”) )。

相關內容