故障表现
在pve的zfs上 创建的 mirror-0 故障 磁盘离线,显示 DEGRADED 状态。设备状态显示 removed状态。
解决流程
- 准备新的硬盘,关闭PVE当前节点并插入并替换损坏硬盘。(新硬盘容量相同)
- 开机在硬盘列表中检查新插入的硬盘识别与否。
- 在 磁盘选项卡中对新插入的硬盘进行GPT初始化。
- 通过ssh连接pve 进行操作
sgdisk <健康的启动硬盘> -R <新硬盘> #将分区表复制到新硬盘
sgdisk -G <新硬盘> #随机生成新的磁盘GUID
zpool replace -f <池> <坏的zfs硬盘分区> <新的zfs硬盘分区> #替换损坏硬盘分区
proxmox-boot-tool format <新硬盘EFI 分区> #格式化EFI 分区
proxmox-boot-tool init <新硬盘EFI 分区> #添加EFI 引导
proxmox-boot-tool refresh #验证 EFI 启动
具体操作
ssh登录pve server
## 为简化命令 将坏硬盘简写为ss1, 新硬盘简写为ss2 根据命令进行替换!
zpool status
## 查看zfs池状态
sgdisk /dev/disk/by-id/ss1 -R /dev/disk/by-id/ss2
## The operation has completed successfully. ## 成功提示
sgdisk -G /dev/disk/by-id/ss2
## The operation has completed successfully. ## 成功提示
zpool replace -f rpool /dev/disk/by-id/ss1-part3 /dev/disk/by-id/ss2-part3
## 提示错误 cannot offline /dev/disk/by-id/ss1-part3: no such device in pool
## 因为坏硬盘在系统中完全无法识别导致路径失效,对此可以采用填写硬盘GUID的方式进行,
## 使用 zdb 命令查看 损坏硬盘路径对应的GUID。
zpool replace -f rpool 10962570056253756946 /dev/disk/by-id/ss2-part3
## 注意 !! 确保硬盘选择正确。
## 使用 zpool status 查看 同步状态
proxmox-boot-tool format /dev/disk/by-id/ss2-part1
proxmox-boot-tool init /dev/disk/by-id/ss2-part1
proxmox-boot-tool refresh
# 验证EFI
参考:
- https://www.dlford.io/linux-zfs-raid-disk-replacement-procedure/
- https://docs.oracle.com/cd/E19253-01/819-5461/gazgw/index.html
- https://pve.proxmox.com/pve-docs/pve-admin-guide.html