You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需重装系统,能否基于当前运行系统的磁盘创建mdadm RAID1阵列?

无需重装系统,能否基于当前运行系统的磁盘创建mdadm RAID1阵列?

当然可以做到!不过操作过程有一定风险,强烈建议先备份所有重要数据,避免意外导致系统或数据丢失。结合你给出的当前磁盘配置,我给你一步步拆解实操步骤:

首先明确你的当前状态:系统运行在nvme0n1的LVM逻辑卷上,nvme1n1是一块未分区的空盘。我们的目标是把两块NVME盘做成RAID1,同时保留现有系统不用重装。


步骤1:同步两块磁盘的分区表

首先要让nvme1n1拥有和nvme0n1完全一致的分区结构:

  1. 备份nvme0n1的分区表到文件:
sfdisk -d /dev/nvme0n1 > nvme0n1_partition_table.txt
  1. 将备份的分区表恢复到nvme1n1:
sfdisk /dev/nvme1n1 < nvme0n1_partition_table.txt

执行完后,nvme1n1会生成和nvme0n1对应的三个分区:nvme1n1p1(EFI分区)、nvme1n1p2(/boot分区)、nvme1n1p3(LVM物理卷分区)。


步骤2:迁移LVM分区到RAID1(核心步骤)

当前系统的根目录/挂载在LVM逻辑卷上,我们需要把这个逻辑卷迁移到RAID1阵列中:

  1. 创建单成员的RAID1阵列(用missing占位另一块盘):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/nvme0n1p3 missing
  1. 将这个RAID阵列初始化为LVM物理卷:
pvcreate /dev/md0
  1. 把新的物理卷加入到现有的卷组:
vgextend ubuntu-vg /dev/md0
  1. 把原物理卷/dev/nvme0n1p3上的数据迁移到RAID物理卷:
pvmove /dev/nvme0n1p3 /dev/md0

这个过程可能需要一段时间,耐心等待完成。
5. 迁移完成后,把原物理卷从卷组移除并删除:

vgreduce ubuntu-vg /dev/nvme0n1p3
pvremove /dev/nvme0n1p3
  1. 现在把nvme1n1p3加入到RAID1阵列,开始同步:
mdadm --manage /dev/md0 --add /dev/nvme1n1p3

你可以用cat /proc/mdstat查看同步进度,同步期间系统可以正常运行。


步骤3:处理/boot分区

把/boot分区也迁移到RAID1:

  1. 创建单成员RAID1阵列:
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/nvme0n1p2 missing
  1. 格式化RAID分区(确保和原/boot分区格式一致,原分区是ext4):
mkfs.ext4 /dev/md1
  1. 临时挂载新RAID分区并复制原/boot内容:
mkdir /tmp/boot_new
mount /dev/md1 /tmp/boot_new
cp -a /boot/* /tmp/boot_new/
  1. 修改/etc/fstab,把/boot的挂载项从/dev/nvme0n1p2改成/dev/md1。
  2. 重新挂载/boot:
umount /boot
mount /boot
  1. 加入nvme1n1p2到RAID阵列:
mdadm --manage /dev/md1 --add /dev/nvme1n1p2

等待同步完成即可。


步骤4:处理/boot/efi分区

EFI分区是引导系统的关键,操作要小心:

  1. 创建单成员RAID1阵列:
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/nvme0n1p1 missing
  1. 格式化RAID分区为vfat(和原EFI分区格式一致):
mkfs.vfat /dev/md2
  1. 临时挂载并复制原EFI内容:
mkdir /tmp/efi_new
mount /dev/md2 /tmp/efi_new
cp -a /boot/efi/* /tmp/efi_new/
  1. 修改/etc/fstab,把/boot/efi的挂载项从/dev/nvme0n1p1改成/dev/md2。
  2. 重新挂载/boot/efi:
umount /boot/efi
mount /boot/efi
  1. 加入nvme1n1p1到RAID阵列:
mdadm --manage /dev/md2 --add /dev/nvme1n1p1

等待同步完成。


步骤5:更新引导与RAID配置

最后要确保系统启动时能正确识别RAID阵列:

  1. 保存RAID配置到配置文件:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  1. 更新grub引导配置:
update-grub
  1. 安装grub到两块NVME磁盘,确保任意一块盘都能引导系统:
grub-install /dev/nvme0n1
grub-install /dev/nvme1n1
  1. 更新initramfs,确保启动时加载RAID相关模块:
update-initramfs -u -k all

完成以上步骤后,你就可以重启系统验证RAID1是否正常工作了。重启后可以用cat /proc/mdstat查看所有RAID阵列的状态,确认两块盘都处于active状态。

注意:整个过程中如果出现任何报错,不要强行继续,先排查问题,避免系统损坏。

备注:内容来源于stack exchange,提问作者Michał

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:24:43