在运行LVM的现有AlmaLinux系统磁盘上配置RAID1阵列时遇"partition exists"警告的解决咨询
在运行LVM的现有AlmaLinux系统磁盘上配置RAID1阵列时遇"partition exists"警告的解决咨询
首先别慌,你碰到的这两个警告都是mdadm的正常提示,咱们一步步理清楚问题,把RAID1配置好:
先修正分区类型问题
从你给出的fdisk -l输出能看到,/dev/sdh1和/dev/sdh2的类型还是83 Linux和8e Linux LVM,并没有改成RAID自动检测类型,这一步得先调整:
- 运行
fdisk /dev/sdh进入分区工具 - 输入
t来修改分区类型 - 输入
1选择sdh1,再输入fd(这是RAID自动检测的分区ID) - 重复操作:输入
t,选择2对应sdh2,输入fd - 输入
w保存修改并退出 - 运行
partprobe让系统重新识别更新后的分区表
理解并处理mdadm的警告
你看到的两个警告其实都不用害怕:
- "partition table exists on /dev/sdh1":这个提示是说当前
sdh1是一个普通分区,mdadm要把它改成RAID成员的话,会写入RAID元数据覆盖分区内的内容——但你的sdh是新盘,本来就没有数据,所以完全可以放心输入y继续。 - 元数据版本提示:因为你要把
/boot放在RAID阵列里,而启动引导程序(GRUB2)需要能识别RAID元数据。AlmaLinux自带的GRUB2是支持v1.x元数据的,但为了兼容性(比如老一点的硬件),建议创建/boot对应的RAID阵列时加上--metadata=0.90参数,这个是更通用的旧格式。
具体创建RAID阵列的命令
现在可以放心创建降级RAID阵列了:
- 为
/boot创建RAID1(md0):mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 missing /dev/sdh1 - 为LVM物理卷创建RAID1(md1):
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdh2
运行命令时出现警告,直接输入y确认即可。
后续完成现有系统向RAID的迁移
创建好阵列后,还要把现有系统迁移到RAID上:
- 处理/boot分区:
- 先备份
/boot的内容:cp -a /boot/* /tmp/boot_backup - 格式化md0为ext4(和原
/dev/sdb1一致):mkfs.ext4 /dev/md0 - 挂载md0:
mount /dev/md0 /mnt - 把备份的内容复制回去:
cp -a /tmp/boot_backup/* /mnt - 更新
/etc/fstab:用blkid /dev/md0获取md0的UUID,把原来指向/dev/sdb1的/boot条目替换成这个UUID(用UUID比设备名更可靠)
- 先备份
- 处理LVM卷组:
- 把md1做成LVM物理卷:
pvcreate /dev/md1 - 将其加入现有的
almalinux卷组:vgextend almalinux /dev/md1 - 把原
/dev/sdb2上的所有LVM数据迁移到md1:pvmove /dev/sdb2 /dev/md1(这个过程可能需要一点时间,耐心等待) - 迁移完成后,把
/dev/sdb2从卷组移除:vgreduce almalinux /dev/sdb2
- 把md1做成LVM物理卷:
- 把原磁盘加入RAID阵列:
- 把
/dev/sdb2加入md1:mdadm /dev/md1 --add /dev/sdb2 - 把
/dev/sdb1加入md0:mdadm /dev/md0 --add /dev/sdb1
- 把
- 更新启动引导:
- 重新生成GRUB配置:
grub2-mkconfig -o /boot/grub2/grub.cfg - 在两块磁盘上安装GRUB,确保都能启动:
grub2-install /dev/sdb和grub2-install /dev/sdh
- 重新生成GRUB配置:
- 保存RAID配置:
- 把RAID信息写入配置文件,避免重启后丢失:
mdadm --detail --scan >> /etc/mdadm.conf
- 把RAID信息写入配置文件,避免重启后丢失:
最后提醒一下:操作前最好备份好重要数据,虽然这些步骤都是常规操作,但以防万一总是没错的。
备注:内容来源于stack exchange,提问作者jamminjames
相关产品推荐
相关产品推荐

