Proxmox VE 更換 rpool 硬碟
因 BUBU 公司裡面剛好收到警告的通知信,說 PVE 裡面有硬碟異常,因此通知廠商進行更換硬碟,問題訊息如下
The number of I/O errors associated with a ZFS device exceeded acceptable levels. ZFS has marked the device as faulted.
impact: Fault tolerance of the pool may be compromised.
eid: 43424
class: statechange
state: FAULTED
host: PVE-08
time: 2020-12-17 08:44:36+0800
vpath: /dev/disk/by-id/scsi-35000c50054b90b8f-part3
vguid: 0x030AC4CF7B12899B
pool: 0x73036093A30D2BC8
從後台查看硬碟資訊狀態
解決程過
解決方式如下
- 首先確認一下是那顆硬碟異常,可以下一段指令來查看硬碟的燈號,這樣子就可以預防拔錯硬碟
針對該硬碟的代號
dd if=/dev/sda of=/dev/null
針對該硬碟的ID
dd if=/dev/disk/by-id/scsi-drive-that-is-dying of=/dev/null
-
確認完之後直接把問題的硬碟拔出來更換新的硬碟上去
-
更換上去之後下一段指令更換硬碟,指令說明
zpool replace pool名稱 故障硬碟的序號 正常新硬碟的序號
異常硬碟序號 正常硬碟序號
zpool replace rpool scsi-35000c50054b90b8f scsi-350
- 下完指令如果有出現以下的訊息的話
- 這一段是在說明找尋不到問題的硬碟資訊,下一段指令是
zdb
,將舊的GUID
給找尋出來
rpool:
version: 5000
name: 'rpool'
state: 0
txg: 2256051
pool_guid: 8287573
errata: 0
hostid: 2
hostname: ''
com.delphix:has_per_vdev_zaps
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 8
create_txg: 4
children[0]:
type: 'mirror'
id: 0
guid: 76
metaslab_array: 256
metaslab_shift: 32
ashift: 12
asize: 59
is_log: 0
create_txg: 4
com.delphix:vdev_zap_top: 129
children[0]:
type: 'disk'
id: 0
guid: 219203927282977179
path: '/dev/disk/by-id/scsi-35000c50054b90b8f-part3'
whole_disk: 0
DTL: 134
create_txg: 4
com.delphix:vdev_zap_leaf: 130
faulted: 1
children[1]:
type: 'disk'
id: 1
guid: 826
path: '/dev/disk/by-id/scsi-'
whole_disk: 0
DTL: 133
create_txg: 4
com.delphix:vdev_zap_leaf: 131
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
- 查看舊的 GUID 之後將舊的 GUID 記錄下來再重新下一次更換硬碟的指令
zpool replace rpool 219203927282977179 scsi-350
- 更新成功會有這樣子的訊息如下
- 下
zpool status rpool
查看該 pool 目前的狀態
- 查看前目同步的狀況
zpool iostat -v rpool
- 再次確認
zpool status rpool
同步成功的狀態
補充說明
109.12.24 今天剛好更新系統結果重啟服務發現到無法開機,結果是因為之前沒有完整的修復好,造成系統無法正常進入,遇到這樣子的問題無法使用上面方式,上面的方式只能適合一般資料區用,在 rpool 不建議使用這樣子的方式,正確處理方式如下:
- 複製分割區資訊
目的 來源
sgdisk --replicate=/dev/sdb /dev/sda
執行結果:The operation has completed successfully.
- Randomize GUIDs to ensure uniqueness after cloning (隨機GUID以確保克隆後的唯一性)
sgdisk --randomize-guids /dev/sdb
執行結果:The operation has completed successfully.
- 安裝 Grub (指定您重做的硬碟位置)
grub-install /dev/sda
執行結果如下:
Installing for i386-pc platform.
Installation finished. No error reported.
- 取代 zpool 錯誤硬碟
zpool replace rpool /dev/sdb2 /dev/new_disk_id
備註
如果你已經先照上面的做法的話,那可能會建議重新建之後再來執行一次,那我順便記一下我的流程
- 先將那顆做錯訊的硬碟先踢除陣列
pool-name 要踢的名稱
zpool detach mypool ada2p3
- 踢完之後將該顆硬碟上的分割資訊都刪除掉變成空的硬碟
- 再重新將剛剛上面補充流程跑一次之後,再重新把剛剛做好的硬碟加入
rpool
裡面
原本在裡面的硬碟 要加入硬碟資訊
zpool attach rpool scsi-35000c50068a7cfc7-part3 scsi-35000c500b83fb21b-part3
執行結果:Make sure to wait until resilver is done before rebooting.
再下查詢指令看目前該 pool
的狀態 zpool status
,同步完成後確認沒有問題,試著在將設備重新啟動看會不會正常進入系統。