PVE8- ZFS 阵列重组 替换硬盘,修复efi 启动引导
BigCoke_
编辑于 2024年04月05日 06:41

故障表现

        在pve的zfs上 创建的 mirror-0 故障 磁盘离线,显示 DEGRADED 状态。设备状态显示 removed状态。

解决流程

  1. 准备新的硬盘,关闭PVE当前节点并插入并替换损坏硬盘。(新硬盘容量相同)

  2. 开机在硬盘列表中检查新插入的硬盘识别与否。

  3. 在 磁盘选项卡中对新插入的硬盘进行GPT初始化。

  4. 通过ssh连接pve 进行操作

代码块
Shell
自动换行
复制代码
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

代码块
Shell
自动换行
复制代码
## 为简化命令 将坏硬盘简写为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. ## 成功提示
复制成功
代码块
Shell
自动换行
复制代码
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 查看 同步状态
复制成功

代码块
Shell
自动换行
复制代码
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