当服务器没有可用的 RAID 控制器卡并且唯一的解决方案是软件 RAID 时,这是必需的。
这篇文章对分区进行了更改,因此如果用于此目的的任何磁盘上有任何现有数据,则应在根据标准最佳实践创建 RAID 数组之前对其进行备份。
- 要镜像磁盘,必须获取分区信息。
这可以通过以下命令之一完成:
# parted /dev/sda u s p # fdisk -l /dev/sda
- 必须使用以下命令克隆分区表:
# sgdisk -R /dev/sdb /dev/sda
- 克隆分区后,新驱动器需要一个 GUID:
# sgdisk -G /dev/sdb
- 所有要镜像的分区都需要有 RAID 标志:
# parted /dev/sda set raid on # parted /dev/sdb set raid on # parted /dev/sdb set raid on # parted /dev/sdb set raid on
- 在新磁盘的等效引导分区上的新磁盘分区上创建一个新的 RAID 设备(因此,如果 /boot 挂载在 /dev/sda1 上,则在 RAID 设备上它需要在 /dev/sdb1 上)
# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb1 --metadata=1.0
注意:如果元数据不是 1.0,grub 将无法读取它。
- 创建与 /boot/efi 分区使用的文件系统相同的文件系统。
通常,vfat 系统是默认的:
# mkfs.vfat /dev/md1
- 必须挂载新的 raid 数组,并且必须复制当前 /boot 分区中的文件:
# mkdir /mnt/md1/efi # mount /dev/md1 /mnt/md1/efi # rsync -a /boot/ /mnt/md1/ # sync # umount /mnt/md1/efi # rmdir /mnt/md1
- 当前的 /boot 分区必须被卸载,新分区必须取而代之:
# umount /boot/efi # mount /dev/md1 /boot/efi
- 为了完成镜像过程,必须将旧磁盘添加到新数组中:
#mdadm /dev/md1 -a /dev/sda1
- 可以使用以下命令监控 RAID 状态:
# mdadm -D /dev/md1
- 为了从 RAID 磁盘启动,必须编辑 /etc/fstab 文件,但为此需要新设备的 UUID:
# blkid | grep md1
- 上一步获得的UUID 必须替换/etc/fstab 中的旧UUID。
该文件可以使用 vi 进行编辑,最好注释当前行并在下面再次添加它,但当然 UUID 已更改:
# cat /etc/fstab #UUID=6d36b3b0-0238-4c86-9368-f60b571fbab9 /boot xfs defaults 0 0 UUID="new UUID" /boot xfs defaults 0 0
www. On IT Road .com
对于单独分区上而非 LVM 下的 SWAP
1.对于swap,需要创建稍微不同的RAID数组,可以使用以下命令,假设swap在sda3下:
# mdadm --create swap --level=1 --raid-devices=2 missing /dev/sdb3 # mkswap /dev/md/swap # mdadm /dev/md/swap -a /dev/sda3
- 可以使用以下命令监控 RAID 状态:
# mdadm -D /dev/md/swap
- 镜像boot、swap和root分区后,需要扫描元数据放在/etc/mdadm.conf文件中
# mdadm --examine --scan >/etc/mdadm.conf
- 然后,需要使用 GRUB_CMDLINE_LINUX 行上的新 UUID 更新 /etc/default/grub 文件:
可以使用以下命令获取 UUID:
# mdadm -D /dev/md* | grep UUID
通过添加新条目来编辑 grub 文件:
# vi /etc/default/grub #GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet" GRUB_CMDLINE_LINUX="crashkernel=auto rd.md.uuid=first uuid rd.md.uuid=second uuid rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet"
- 然后,更新 grub2.cfg 文件:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
- 更新 EFI bootmgr。
为此,必须删除旧的 EFI 引导条目:
# efibootmgr -v | grep Boot
输出(来自虚拟服务器的 efibootmgr 命令示例):
BootCurrent: 0001 BootOrder: 0001,0006,0008,0004,0000,0005 Boot0000* Windows Boot Manager Vendor(99e275e7-75a0-4b37-a2e6-c5385e6c00cb,)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...N............... Boot0001* Oracle VM Server HD(1,800,3f800,91dfa48e-aad0-4a31-9ffe-e4356d8a36c6)File(\EFI\REDHAT\SHIM.EFI) Boot0004* Generic Usb Device Vendor(99e275e7-75a0-4b37-a2e6-c5385e6c00cb,) Boot0005* CD/DVD Device Vendor(99e275e7-75a0-4b37-a2e6-c5385e6c00cb,) Boot0006* WDC WD10EZEX-08WN4A0 BIOS(2,0,00)..BO Boot0008* IBA CL Slot 00FE v0113 BIOS(6,0,00)..BO
根据此命令的输出,必须使用以下命令删除 EFI 引导条目:
# efibootmgr -b 1 -B
在这种情况下只有一个条目,其编号为 1.
之后,需要将两个 EFI 分区添加到 bootmgr:
# efibootmgr -c -d /dev/sda -p1 -l \EFI\redhat\shimx64.efi -L "Oracle Linux RAID SDA" # efibootmgr -c -d /dev/sdb -p1 -l \EFI\redhat\shimx64.efi -L "Oracle Linux RAID SDB"
- initramfs 镜像必须使用 mdadmconf 重建:
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak # dracut -f --mdadmconf
- 重新启动机器以检查是否一切正常,以及是否正在使用新的 RAID 设备。
对于 LVM 分区(对新设备使用不同的索引)
- 必须在与当前索引相同的分区上创建 RAID 设备:
# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb2 --metadata=1.2
注意:metadata 1.2 在磁盘的开头创建了一个保留的元数据区域。
这可能会影响 PV 分配,因此 pvmove 命令可能会遇到错误,该命令将在下一步中使用。
因此,为了绕过此类错误,可以使用元数据 1.0。
- 这个新数组需要加入到当前lvm设备所在的同一个卷组中:
# vgextend vgname /dev/md2
- 物理盘区需要从旧分区移动到新数组(这需要一些时间才能完成):
# pvmove /dev/sda2 /dev/md2
- 之后,必须从卷组和 LVM 中删除旧分区:
# vgreduce vgname /dev/sda2 # pvremove /dev/sda2
- 为了不遇到任何与 LVM 相关的错误,必须将 /etc/lvm/lvm.conf 文件中的 use_lvmetad 参数值从 1 更改为 0:
# vi /etc/lvm/lvm.conf ............... use_lvmetad = 0 ...............
然后,需要停止、禁用和屏蔽 lvm2-lvmetad 服务:
# systemctl stop lvm2-lvmetad.service # systemctl disable lvm2-lvmetad.service --now # systemctl disable lvm2-lvmetad.socket --now # systemctl mask lvm2-lvmetad.socket
- 为了完成镜像过程,必须将旧分区添加到数组中:
# mdadm /dev/md2 -a /dev/sda2
- 可以使用以下命令监控 RAID 状态:
# mdadm -D /dev/md2
日期:2020-09-17 00:12:35 来源:oir作者:oir