手动重组发现引导丢失了,可以用此方法解决
尝试一下PVE虚拟机重组系统raid1
最开始尝试了使用常规的 zpool replace ,但是这样的话系统是无法引导的,因为没有复制过去引导分区(EFI,BOOT),所以我找到了官方的一个文档说明这个问题,下面引用一下官方的链接。
https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_change_failed_dev
第一步 检查
先检查系统使用的是什么方式引导,如果已知则略过
proxmox-boot-tool status
因为我用的是boot传统引导,所以输出的是
Re-executing '/usr/sbin/proxmox-boot-tool' in new private mount namespace..
System currently booted with legacy bios
4F07-8E14 is configured with: grub (versions: 6.2.16-3-pve)
WARN: /dev/disk/by-uuid/4F08-1FC2 does not exist - clean '/etc/kernel/proxmox-boot-uuids'! - skipping
6A94-CEBE is configured with: grub (versions: 6.2.16-3-pve)
9165-9F6B is configured with: grub (versions: 6.2.16-3-pve)
第二步 复制分区
如何添加一块硬盘做RAID1
第一步 检查
首先查看zpool状态 我们一下代码
zpool status
获得输出结果应该类似于
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda3 ONLINE 0 0 2
sdb3 ONLINE 0 0 0
可以看到我们的rpool就是系统的zfsraid,我们有两块硬盘的第三分区做了raid1
第二步 准备硬盘
首先我们要找到自己刚接入的硬盘系统给的名称,我这里建议把没用的硬盘都拔掉以免混淆,当然你也可以使用id的方式进行选择硬盘,我这里不再赘述
使用命令
lsblk
输出结果应给是这样的
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 237.5G 0 part
sdb 8:16 0 238.5G 0 disk
├─sdb1 8:17 0 1007K 0 part
├─sdb2 8:18 0 1G 0 part
└─sdb3 8:19 0 237.5G 0 part
sdc 8:32 0 238.5G 0 disk
可见我们的sdc是一个空的硬盘 没有任何分区
复制分区
我们将sda的分区复制给要添加到raid的sdc上面 使用以下指令
sgdisk /dev/sda -R /dev/sdc
注意,我们要加上前缀,这里的sda是健康的硬盘 sdc是要新添加的硬盘
重建GUID
我们使用以下指令进行重建
sgdisk -G /dev/sdc
这个sdc就是刚刚新添加的硬盘,这样硬盘的准备工作就完成了,我们在输入下列指令确认一下
lsblk
输出结果应该类似这样
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 237.5G 0 part
sdb 8:16 0 238.5G 0 disk
├─sdb1 8:17 0 1007K 0 part
├─sdb2 8:18 0 1G 0 part
└─sdb3 8:19 0 237.5G 0 part
sdc 8:32 0 238.5G 0 disk
├─sdc1 8:33 0 1007K 0 part
├─sdc2 8:34 0 1G 0 part
└─sdc3 8:35 0 237.5G 0 part
重建引导
重建引导我们使用官方提供的工具 首先格式化第二个分区,也就是1G大小这个分区
proxmox-boot-tool format /dev/sdc2
然后使用这个命令进行初始化
proxmox-boot-tool init /dev/sdc2
使用此命令会进行重建EFI引导,如果用的是boot方式引导那么要多一步操作
传统引导方式
grub-install /dev/sdc
update-grub
用此方法即可使用新硬盘进行引导
第四步 添加到池
我们不需要把整个硬盘都添加到池,其他两个分区是引导分区,我们只需 要把第三个分区进行添加即可,使用下列命令
检查pool状态
zpool status
输出结果应该为
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda3 ONLINE 0 0 2
sdb3 ONLINE 0 0 0
我们将新的硬盘添加到pool
zpool attach rpool sda3 sdc3
输出结果应该为
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda3 ONLINE 0 0 2
sdb3 ONLINE 0 0 0
sdc3 ONLINE 0 0 0 (resilvering)
此时不要惊慌 耐心等待重银完成,或者可以使用下列指令实时监控重银状态
zpool status -v
此时全部步骤操作完成!我们在查看一下硬盘状态
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 237.5G 0 part
sdb 8:16 0 238.5G 0 disk
├─sdb1 8:17 0 1007K 0 part
├─sdb2 8:18 0 1G 0 part
└─sdb3 8:19 0 237.5G 0 part
sdc 8:32 0 238.5G 0 disk
├─sdc1 8:33 0 1007K 0 part
├─sdc2 8:34 0 1G 0 part
└─sdc3 8:35 0 237.5G 0 part
成功!