以下内容仅为我在折腾过程中的总结,难免有不对的地方,欢迎指正
ZFS文件系统介绍可以参考这篇文章:https://www.geeklinux.cn/174.html
解决流程:
准备新硬盘,关闭pve节点插入替换损坏硬盘(新旧硬盘容量相同)
磁盘选项卡中对新插入的硬盘进行GPT初始化
使用ssh连接到pve主机进行故障恢复
模拟磁盘的Offline状态
我使用VMware WorkStation 安装的ProxmoxVE并组建了zfs存储池,采用删除磁盘的状态模拟故障现象,并使用zpool status
命令查看当前状态,如下图所示有一块盘已经处于remove 状态了,导致整个zfs出现了严重的io delay,zfs的状态为degraded。
使用新添加的硬盘恢复
我加了一块硬盘为sdb,在pve webui界面将其转化为GPT分区表
完成之后使用ssh登陆到pve服务器
使用 zpool status
记录损坏硬盘的id
获取新硬盘的id,
udevadm info --query=all --name=/dev/sdX | grep by-id
ls -l /dev/disk/by-id/ | grep sdX
很多获取硬件id的方法 这里就举例两种 ,x为你的硬盘
有些情况下可能需要关机后才能移除硬盘,这时如果重新启动时出现“failed to import zfs名”的报错,那么解决方案如下: 1.开机进入boot选项后,按“e”键,进入编辑模式,在quiet前加入“rootdelay=35”,再按“ctrl+x”键进入。 2.进入系统后,可以修改grub在quiet前加入rootdelay=35,修改后长期有效
使用zpool replace 命令替换存储池中的设备
sudo zpool replace zfspool 旧设备id 新设备id # zfspool为池的名称 不一定要使用id,也可以使用/dev/sdX 但不推荐
如下图所示,zfspool存储池先是处于降级状态(DEGRADED)并且正在进行数据重新同步(resilvering)
同步完成之后变为ONLINE状态
如果重新同步完成后旧设备仍然显示在配置中,可以使用zpool detach
命令将其移除。例如:
zpool detach zfspool ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part1/old
本文来自投稿,不代表极客运维立场,如若转载,请注明出处:https://www.geeklinux.cn/cloud-compute/pve/175.html