これは、サーバーで使用できる RAID コントローラ カードがなく、唯一のソリューションがソフトウェア RAID である場合に必要です。この投稿ではパーティションを変更するため、この目的で使用されているディスクに既存のデータがある場合は、標準のベスト プラクティスに従って、RAID アレイを作成する前にバックアップする必要があります。
1. ディスクをミラーリングするには、パーティションに関する情報を取得する必要があります。これは、次のコマンドのいずれかで実行できます:
# parted /dev/sda u s p # fdisk -l /dev/sda
2. 次のコマンドを使用して、パーティション テーブルのクローンを作成する必要があります:
# sgdisk -R /dev/sdb /dev/sda
3. パーティションのクローン作成後、新しいドライブには GUID が必要です:
# sgdisk -G /dev/sdb
4. ミラーリングされるすべてのパーティションには RAID フラグが必要です:
# parted /dev/sda setraid on # parted /dev/sdb set raid on # parted /dev/sdb set raid on # parted /dev/sdb set raid on
5. 新しいディスク上の同等のブート パーティション上の新しいディスクからパーティションに新しい 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 はそれを読み取ることができません。
6. /boot/efi パーティションで使用されるファイルシステムと同じファイルシステムを作成します。通常、vfat システムがデフォルトです:
# mkfs.vfat /dev/md1
7. 新しい 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
8. 現在の /boot パーティションをアンマウントし、新しいパーティションに置き換える必要があります:
# umount /boot/efi # mount /dev/md1 /boot/efi
9. ミラーリング プロセスを完了するには、古いディスクを新しいアレイに追加する必要があります。
#mdadm /dev/md1 -a /dev/sda1
10. RAID ステータスは、次のコマンドで監視できます:
# mdadm -D /dev/md1
11. RAID ディスクから起動するには、/etc/fstab ファイルを編集する必要がありますが、そのためには新しいデバイスの UUID が必要です:
# blkid | grep md1
12. 前の手順で取得した UUID は、/etc/fstab 内の古いものと置き換える必要があります。このファイルは vi を使用して編集できます。現在の行をコメント化してすぐ下に追加することをお勧めしますが、もちろん UUID は変更されています:
# cat /etc/fstab #UUID=6d36b3b0-0238-4c86-9368-f60b571fbab9 /boot xfs defaults 0 0 UUID="new UUID" /boot xfs defaults 0 0
LVM パーティションの場合 (新しいデバイスには別のインデックスを使用)
1. RAID デバイスは、現在のものと同じインデックスを持つパーティションに作成する必要があります:
# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb2 --metadata=1.2注意 :メタデータ 1.2 は、ディスクの先頭に予約されたメタデータ領域を作成します。これは PV の割り当てに影響を与える可能性があるため、次のステップで使用される pvmove コマンドでエラーが発生する可能性があります。したがって、この種のエラーを回避するために、メタデータ 1.0 を使用できます。
2. この新しいアレイは、現在の lvm デバイスがある同じボリューム グループに追加する必要があります:
# vgextend vgname /dev/md2
3. 物理エクステントを古いパーティションから新しいアレイに移動する必要があります (完了するまでに時間がかかります):
# pvmove /dev/sda2 /dev/md2
4. その後、古いパーティションをボリューム グループと LVM から削除する必要があります:
# vgreduce vgname /dev/sda2 # pvremove /dev/sda2
5. 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
6. ミラーリング プロセスを完了するには、古いパーティションをアレイに追加する必要があります。
# mdadm /dev/md2 -a /dev/sda2
7. RAID ステータスは、次のコマンドで監視できます:
# mdadm -D /dev/md2
LVM の下ではなく、別のパーティション上の SWAP の場合
1. スワップの場合、RAID アレイを少し異なる方法で作成する必要があります。スワップが sda3 の下にあると仮定すると、次のコマンドを使用できます。
# mdadm --create swap --level=1 --raid-devices=2 missing /dev/sdb3 # mkswap /dev/md/swap # mdadm /dev/md/swap -a /dev/sda3
2. RAID ステータスは、次のコマンドで監視できます:
# mdadm -D /dev/md/swap
3. ブート、スワップ、およびルート パーティションがミラーリングされた後、メタデータをスキャンして /etc/mdadm.conf 内に配置する必要があります。 ファイル
# mdadm --examine --scan >/etc/mdadm.conf
4. 次に、/etc/default/grub GRUB_CMDLINE_LINUX の新しい UUID でファイルを更新する必要があります 行:
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"
5. 次に、grub2.cfg を更新します。 ファイル:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
6. 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 つだけで、その番号は 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"
7. mdadmconf を使用して initramfs イメージを再構築する必要があります :
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak # dracut -f --mdadmconf
8. マシンを再起動して、すべてが正常に機能しているかどうか、また新しい RAID デバイスが使用されているかどうかを確認します。