当前系统配置为:
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,nvme1n1
而nvme0n1
无需重新安装整个系统?
答案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 分区移动需要一点额外的工作,并且很容易搞乱系统启动,因此我会考虑是否稍后将其发布到单独的答案中。