是否可以在正在运行系统的驱动器上设置 mdadm raid1?

是否可以在正在运行系统的驱动器上设置 mdadm raid1?

当前系统配置为:

nvme1n1                   259:0    0  1.8T  0 disk  
nvme0n1                   259:1    0  1.8T  0 disk  
├─nvme0n1p1               259:2    0  1.1G  0 part  /boot/efi
├─nvme0n1p2               259:3    0  1.5G  0 part  /boot
└─nvme0n1p3               259:4    0  1.8T  0 part  
  └─ubuntu--vg-ubuntu--lv 253:0    0  100G  0 lvm   /

系统已从 启动/。现在是否可以创建 mdadm raid1,nvme1n1nvme0n1无需重新安装整个系统?

答案1

是的,这是可能的。LVM 是您的救星。

  • 确实备份重要数据。

  • 安装要求(Ubuntu 和 Debian)

sudo apt install mdadm
  • 首先你需要分区nvme1n1磁盘大小与正在使用的磁盘完全相同。

    Efi 分区应该是相同的分区类型;其余 2 个分区应该是 Linux RAID 类型。

  • 在n1磁盘上创建伪RAID1阵列:

sudo mdadm -C -l1 -n2 /dev/md0 /dev/nvme1n1/p2 missing
sudo mdadm -C -l1 -n2 /dev/md1 /dev/nvme1n1/p3 missing
cat /proc/mdstat
  • 将运行的 md config 放入系统
sudo /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
  • 使用包含的 mdadm 内核模块重新生成 initrd
sudo update-initramfs -k all -u
  • 将 LVM 数据卷移动到新的 md1 设备(这需要一段时间,但在 NVME 上速度相当快)
sudo vgextend ubuntu-vg /dev/md1
sudo pvmove /dev/nvme0n1p3
pvmove
sudo vgreduce ubuntu-vg /dev/nvme0n1p3
sudo pvremove /dev/nvme0n1p3
sudo lvs -o+devices

并检查 LVM 配置现在是否正确,例如数据仅位于 md1 上,并且旧的 nvme 设备已从 VG 中正确删除。

  • 更新 grub,以确保新配置重新生成并支持 raid
sudo update-grub

此时我们应该将数据卷重定位到 mdraid 设备 md1,并准备在 mdraid lvm 设备上进行根启动。

现在将原始磁盘上的 p3 分区更改为 Linux RAID 类型:

fdisk /dev/nvme0n1

如果 fdisk 分区类型更改显示更改仅在重启后可见,您可以立即重启。并在重启后继续下一步。

现在让我们制作真正的 RAID1:

sudo mdadm /dev/md1 --add /dev/nvme0n1p3
cat /proc/mdstat

等到同步完成。

此时数据卷应该位于真正的 raid1 设备上。如果还没有,现在您可以重新启动系统。

注意:/boot 分区移动需要一点额外的工作,并且很容易搞乱系统启动,因此我会考虑是否稍后将其发布到单独的答案中。

相关内容