RHEL8环境下如何安全地将遗漏的/boot与/boot/efi分区添加至现有RAID1阵列
RHEL8环境下如何安全地将遗漏的/boot与/boot/efi分区添加至现有RAID1阵列
您好!针对您在RHEL8系统中给/分区配置了RAID1,但遗漏了/boot和/boot/efi分区的问题,我给您整理了一套安全的操作流程——全程请务必先做好重要数据备份,避免操作失误导致系统无法启动。
一、前期准备工作
首先咱们得确认磁盘分区情况,用以下命令查看当前磁盘的分区布局:
lsblk # 或者查看更详细的分区信息 fdisk -l
重点定位现有/boot(通常是ext4格式)和/boot/efi(vfat格式)所在的分区(比如/dev/sda1、/dev/sda2),然后在第二块磁盘(比如/dev/sdb)上创建完全同大小的对应分区:
- 对应/boot的分区:创建后用
fdisk的t命令把分区类型改为「Linux RAID」,代码输入fd00 - 对应/boot/efi的分区:创建后用
fdisk的t命令把分区类型改为「EFI System」,代码输入ef00
二、将/boot分区加入RAID1阵列
- 先备份/boot下的所有内容,留好后路:
mkdir -p /tmp/boot_backup cp -a /boot/* /tmp/boot_backup/
- 创建RAID1阵列,把原/boot分区和新创建的第二块磁盘分区加进去(假设原/boot是/dev/sda1,新分区是/dev/sdb1):
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
执行后会弹出确认提示,输入y继续即可。
3. 查看RAID同步进度,必须等同步完成再往下走:
mdadm --detail /dev/md1
看到「Resync Status」显示完成就可以进行下一步。
4. 更新/etc/fstab文件,把/boot的挂载项从原分区(比如/dev/sda1)改成新的RAID设备/dev/md1(用UUID更稳妥,可通过blkid /dev/md1查看UUID):
比如原条目是:
/dev/sda1 /boot ext4 defaults 1 2
改成:
/dev/md1 /boot ext4 defaults 1 2
- 更新RAID配置文件,确保系统重启后能正常识别阵列:
mdadm --detail --scan >> /etc/mdadm.conf
三、将/boot/efi分区加入RAID1阵列
/boot/efi是EFI引导分区,操作逻辑和/boot类似,但要注意vfat文件系统的特殊性:
- 先备份/boot/efi的内容:
mkdir -p /tmp/efi_backup cp -a /boot/efi/* /tmp/efi_backup/
- 创建RAID1阵列(假设原/boot/efi是/dev/sda2,新分区是/dev/sdb2):
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
同样输入y确认操作。
3. 等待RAID同步完成,用mdadm --detail /dev/md2查看进度。
4. 更新/etc/fstab,把/boot/efi的挂载项改成/dev/md2(也可以用UUID):
比如原条目:
/dev/sda2 /boot/efi vfat umask=0077,shortname=winnt 0 2
改成:
/dev/md2 /boot/efi vfat umask=0077,shortname=winnt 0 2
- 更新EFI引导配置,确保两块磁盘都能独立引导系统:
grub2-install /dev/sda grub2-install /dev/sdb
- 生成新的GRUB配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 更新initramfs,确保RAID模块被包含在内,避免重启后无法识别阵列:
dracut -f
四、验证与收尾
- 先临时挂载新的RAID设备,验证内容是否和原分区一致:
mount /dev/md1 /mnt ls /mnt # 应该和原/boot内容完全相同 umount /mnt mount /dev/md2 /mnt ls /mnt # 应该和原/boot/efi内容完全相同 umount /mnt
- 重启系统,之后用以下命令验证RAID状态和挂载情况:
# 查看RAID健康状态 mdadm --detail /dev/md1 mdadm --detail /dev/md2 # 查看挂载情况,确认/boot和/boot/efi挂载在RAID设备上 mount | grep -E '/boot|/boot/efi'
如果一切正常,说明操作成功啦!
备注:内容来源于stack exchange,提问作者wlchew
相关产品推荐
相关产品推荐

