Article
文章正文
尝试一下PVE虚拟机重组系统raid1
最开始尝试了使用常规的 zpool replace ,但是这样的话系统是无法引导的,因为没有复制过去引导分区(EFI,BOOT),所以我找到了官方的一个文档说明这个问题,下面引用一下官方的链接。
https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_change_failed_dev
第一步 检查 先检查系统使用的是什么方式引导,如果已知则略过
1 proxmox-boot-tool status
因为我用的是boot传统引导,所以输出的是
1 2 3 4 5 6 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状态 我们一下代码
获得输出结果应该类似于
1 2 3 4 5 6 7 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的方式进行选择硬盘,我这里不再赘述
使用命令
输出结果应给是这样的
1 2 3 4 5 6 7 8 9 10 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上面 使用以下指令
1 sgdisk /dev/sda -R /dev/sdc
注意,我们要加上前缀,这里的sda是健康的硬盘 sdc是要新添加的硬盘
重建GUID
我们使用以下指令进行重建
这个sdc就是刚刚新添加的硬盘,这样硬盘的准备工作就完成了,我们在输入下列指令确认一下
输出结果应该类似这样
1 2 3 4 5 6 7 8 9 10 11 12 13 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大小这个分区
1 proxmox-boot-tool format /dev/sdc2
然后使用这个命令进行初始化
1 proxmox-boot-tool init /dev/sdc2
使用此命令会进行重建EFI引导,如果用的是boot方式引导那么要多一步操作
传统引导方式
1 2 grub-install /dev/sdc update-grub
用此方法即可使用新硬盘进行引导
第四步 添加到池 我们不需要把整个硬盘都添加到池,其他两个分区是引导分区,我们只需要把第三个分区进行添加即可,使用下列命令
检查pool状态
输出结果应该为
1 2 3 4 5 6 7 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
1 zpool attach rpool sda3 sdc3
输出结果应该为
1 2 3 4 5 6 7 8 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)
此时不要惊慌 耐心等待重银完成,或者可以使用下列指令实时监控重银状态
此时全部步骤操作完成!我们在查看一下硬盘状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 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
成功!