平台正在用的一塊zfs硬盤壞了,需要換一塊新硬盤,過程中參考proxmox的官方文檔以及一些相應的資料,整理了一下步驟如下。
歡迎大家批評指正
zfs系統替換硬盤的基本步驟
使用zpool status 命令查看zfs存儲池情況
1 |
zpool status
|
可以看到第二個硬盤的相關分區出現了faulted,導致整個zfs出現了嚴重的io delay,zfs的狀態為degraded
使用zpool offline 命令使壞盤脫機(可選)
1 |
zpool offline ata-WDC_WD2002FYPS-02W3B0_WD-WCAVY6573998-part3
|
結果如下圖所示,報錯分區狀態變為offline。
更換硬盤並初始化
移除要替換的硬盤並插入新的硬盤。打開proxmox GUI 選擇相應的node,打開disk界面,確認新硬盤被識別,並使用GPT進行初始化。
有些情況下可能需要關機后才能移除硬盤,這時如果重新啟動時出現“failed to import zfs名”的報錯,那么解決方案如下:
1.開機進入boot選項后,按“e”鍵,進入編輯模式,在quiet前加入“rootdelay=35”,再按“ctrl+x”鍵進入。
2.進入系統后,可以修改grub在quiet前加入rootdelay=35,修改后長期有效
運行zpool replace命令
這里由於硬盤識別id實在太長了就不打了,僅附上proxmox wiki中的兩種對應的替換方案。
1.直接更換設備,如果熱插拔使得新舊設備id相同,則可以直接省略“new device”。
1 |
zpool replace
-f <pool> <old device> <new device>
|
2.更換分區
1 2 3 4 5 |
sgdisk
<healthy bootable device> -R <new device> sgdisk -G <new device> zpool replace -f <pool> <old zfs partition> <new zfs partition> pve-efiboot-tool format <new disk‘s ESP> pve-efiboot-tool init <new disk’s ESP> |
replacing的時間比較長,也不太好停止,可以使用zpool status查看相應進度。一般情況下,replace完了之后會直接online,如果沒有如此就運行zpool online命令即可。
小插曲,我換的過程中一不留神用磁盤直接替換了對應分區,目前一切良好,看上去只要替換對象的存量比原來的大都不會出問題。