发现磁盘问题
堪萨斯集群的一台proxmox服务器在2月4号有一块盘出现了错误,导致ZFS阵列降级。
准备更换硬件修复阵列
当天我们将客户服务器转移至其他节点后,将这块坏盘在zfs cli中offline,然后工单提交换盘(热插拔)。
悲剧的重启
机房那边说既然我们备份好数据了,就趁这个机会把这台机器换到新的交换机和机柜里,经过我们同意后关机、移位,发现不能开机。
所以说阵列出错的情况下重启真的问题很严重...
排查和恢复
开机报错:failed to import rpool
看来是zfs阵列出现了问题,由于是原生ZFS系统,因此需要修复rpool后才能进系统。
最开始认为是新盘被BIOS设为第一块盘,读取boot失败导致的,因此只要更换盘的物理位置或者修改BIOS的顺序即可。
机房多次尝试依然失败
进rescue,弹出"no such device available";进proxmox的livecd,能识别全部五块硬盘,但是识别不出是zfs阵列。
重新进rescue,修复grub,然后导入有rpool:zpool import -N rpool,开机成功。
测试再次重启
果然无法重启,再次复现failed to import rpool,发现是磁盘没有准备好zfs就开始import导致的,因此在/etc/default/grub 中增加rootdelay='35',然后 Update-initramfs -u and update-grub。
重启成功。