无需重装系统,能否基于当前运行系统的磁盘创建mdadm RAID1阵列?
无需重装系统,能否基于当前运行系统的磁盘创建mdadm RAID1阵列?
当然可以做到!不过操作过程有一定风险,强烈建议先备份所有重要数据,避免意外导致系统或数据丢失。结合你给出的当前磁盘配置,我给你一步步拆解实操步骤:
首先明确你的当前状态:系统运行在nvme0n1的LVM逻辑卷上,nvme1n1是一块未分区的空盘。我们的目标是把两块NVME盘做成RAID1,同时保留现有系统不用重装。
步骤1:同步两块磁盘的分区表
首先要让nvme1n1拥有和nvme0n1完全一致的分区结构:
- 备份
nvme0n1的分区表到文件:
sfdisk -d /dev/nvme0n1 > nvme0n1_partition_table.txt
- 将备份的分区表恢复到
nvme1n1:
sfdisk /dev/nvme1n1 < nvme0n1_partition_table.txt
执行完后,nvme1n1会生成和nvme0n1对应的三个分区:nvme1n1p1(EFI分区)、nvme1n1p2(/boot分区)、nvme1n1p3(LVM物理卷分区)。
步骤2:迁移LVM分区到RAID1(核心步骤)
当前系统的根目录/挂载在LVM逻辑卷上,我们需要把这个逻辑卷迁移到RAID1阵列中:
- 创建单成员的RAID1阵列(用
missing占位另一块盘):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/nvme0n1p3 missing
- 将这个RAID阵列初始化为LVM物理卷:
pvcreate /dev/md0
- 把新的物理卷加入到现有的卷组:
vgextend ubuntu-vg /dev/md0
- 把原物理卷
/dev/nvme0n1p3上的数据迁移到RAID物理卷:
pvmove /dev/nvme0n1p3 /dev/md0
这个过程可能需要一段时间,耐心等待完成。
5. 迁移完成后,把原物理卷从卷组移除并删除:
vgreduce ubuntu-vg /dev/nvme0n1p3 pvremove /dev/nvme0n1p3
- 现在把
nvme1n1p3加入到RAID1阵列,开始同步:
mdadm --manage /dev/md0 --add /dev/nvme1n1p3
你可以用cat /proc/mdstat查看同步进度,同步期间系统可以正常运行。
步骤3:处理/boot分区
把/boot分区也迁移到RAID1:
- 创建单成员RAID1阵列:
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/nvme0n1p2 missing
- 格式化RAID分区(确保和原/boot分区格式一致,原分区是ext4):
mkfs.ext4 /dev/md1
- 临时挂载新RAID分区并复制原/boot内容:
mkdir /tmp/boot_new mount /dev/md1 /tmp/boot_new cp -a /boot/* /tmp/boot_new/
- 修改
/etc/fstab,把/boot的挂载项从/dev/nvme0n1p2改成/dev/md1。 - 重新挂载/boot:
umount /boot mount /boot
- 加入
nvme1n1p2到RAID阵列:
mdadm --manage /dev/md1 --add /dev/nvme1n1p2
等待同步完成即可。
步骤4:处理/boot/efi分区
EFI分区是引导系统的关键,操作要小心:
- 创建单成员RAID1阵列:
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/nvme0n1p1 missing
- 格式化RAID分区为vfat(和原EFI分区格式一致):
mkfs.vfat /dev/md2
- 临时挂载并复制原EFI内容:
mkdir /tmp/efi_new mount /dev/md2 /tmp/efi_new cp -a /boot/efi/* /tmp/efi_new/
- 修改
/etc/fstab,把/boot/efi的挂载项从/dev/nvme0n1p1改成/dev/md2。 - 重新挂载/boot/efi:
umount /boot/efi mount /boot/efi
- 加入
nvme1n1p1到RAID阵列:
mdadm --manage /dev/md2 --add /dev/nvme1n1p1
等待同步完成。
步骤5:更新引导与RAID配置
最后要确保系统启动时能正确识别RAID阵列:
- 保存RAID配置到配置文件:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
- 更新grub引导配置:
update-grub
- 安装grub到两块NVME磁盘,确保任意一块盘都能引导系统:
grub-install /dev/nvme0n1 grub-install /dev/nvme1n1
- 更新initramfs,确保启动时加载RAID相关模块:
update-initramfs -u -k all
完成以上步骤后,你就可以重启系统验证RAID1是否正常工作了。重启后可以用cat /proc/mdstat查看所有RAID阵列的状态,确认两块盘都处于active状态。
注意:整个过程中如果出现任何报错,不要强行继续,先排查问题,避免系统损坏。
备注:内容来源于stack exchange,提问作者Michał
相关产品推荐
相关产品推荐

