背景
私はCentos 7を使用しています。最初は、次のように単一のディスクで実行されます。
1 200M EFI System (/boot/efi)
2 500M Microsoft basic (/boot)
3 465.1G Linux LVM
LVM VG centos
- LVM LV ext4 centos-root (/)
- LVM LV swap centos-swap (swap)
最初はLinuxソフトウェアRAID1アレイにインストールする必要があるため、これは一時的なソリューションです。今日時間をかけて移行してみました。現在の様子は次のとおりです。
Both new disks have this partition layout:
1 200M EFI System (/boot/efi)
2 457.6G Linux RAID /dev/md0 RAID1 (for boot and LVM)
3 8G Linux RAID /dev/md1 RAID0 (so 16GB total, for swap)
/dev/md0 looks like this:
1 500M Linux filesystem (/boot)
2 457G Linux LVM (centos-root is migrated to this)
LVM now has only one LV, centos-root
/etc/mdadm.conf
次のようになります。
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=main.centos.local:0 UUID=5b5057b4:4235ba4b:5342dfda:acf63302
devices=/dev/sda2,/dev/sdb2
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=main.centos.local:1 UUID=f82a8c99:9b391d83:4efc9456:9e9bad98
devices=/dev/sda3,/dev/sdb3
/etc/fstab
次のようになります。
/dev/mapper/centos-root / xfs defaults 0 0
UUID=fcb5f82f-ce6b-460b-800f-329e010bc403 /boot xfs defaults 0 0
UUID=C532-14AE /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/md1 swap swap defaults 0 0
blkid
以下を出力します(関連項目のみ):
/dev/sdb1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ed301bbd-c15c-40af-ae75-bf238d0e6270"
/dev/sda1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f3a76412-41a0-4e04-9b04-ad1c159133cf"
/dev/md0p1: LABEL="boot" UUID="fcb5f82f-ce6b-460b-800f-329e010bc403" TYPE="xfs" PARTLABEL="primary" PARTUUID="df8d6481-c6ce-423a-b5d5-205d355e5653"
/dev/md0p2: UUID="7LfywM-oPHy-MTEt-swlI-EVbZ-opTo-m82E6R" TYPE="LVM2_member" PARTLABEL="primary" PARTUUID="19e7f9d5-a955-4036-8338-03a748faa1f6"
/dev/mapper/centos-root: UUID="deaa9788-b487-4991-adf7-2945788fb6cd" TYPE="xfs"
/boot/efi_[device]
カーネルが更新されたときにすべてを同期状態に保つために、grub.cfgがそのパーティションにコピーされている他のEFIパーティションを自動的にマウントするスクリプトがあります。
/dev/sda1
スクリプトを通じて同期が維持されるため/dev/sdb1
(確認しました)、どちらかをfstabにマウントすることは問題になりません/boot/efi
。これはまた、エラーのために1つのドライブが削除されてもシステムが起動し続けることを意味します。作業を簡素化するためにLVにスワップを入れることもできましたが、RAID0は(価値があるほど)パフォーマンスを向上させ、さらに16GBのスペースを獲得します。
次のコマンドを使用して、LVを古いドライブから新しいPVに移行しました。
pvcreate /dev/md0p2
vgextend centos /dev/md0p2
pvmove /dev/sdg3
vgreduce centos /dev/sdg3
dracut
次に、(元のファイルをバックアップした後)initramfsを再生成し、最後にgrub.cfgを再生成しました。その後、新しい/boot
パーティションをマウントし、/boot/efi
すべてをコピーしました。
質問
古いドライブを切断して起動した後、dracutは私のRAIDアレイを見つけることができず、間違いなく/boot
パーティションとLVGも見つけることができません。合計をまったくmdadm --assemble
呼び出さないようです。プロンプトでこれを実行して接続できるLVGを見つけ、プロンプトを終了すると、システムは問題なく起動し続けます。すべてがなければならないところにあるようです。/dev/md0
/dev/md
dracut
lvm_scan
/dev/centos/root
/dev/root
利用可能なカーネルアップデートがあったのでインストールしようとしましたが(initramfsファイルとgrub.cfgファイルを最初に再生成するときに何かを台無しにしたと仮定しました)、成功しませんでした。システムはまだ同じ方法で失敗します。 EFI パーティションの 1 つから手動でブートする場合です (両方とも同じです。そうする必要があります)。
私がここで何を見逃しているのでしょうか?アレイを組み立てるためにdracutをどのように入手しますか?
答え1
dracutドキュメントでは、すべてのmd raidアレイを自動的に組み立てる必要があり、このパラメータは、rd.md.uuid
起動プロセスの一部として特定のアレイを組み立てたい場合にのみ使用する必要があることを示しています。
実際、アレイは自動的に組み立てられないようです。実際には、rd.md.uuid
パラメータが設定されている場合にのみ組み立てられます(組み立てる必要がある各アレイについて)。rd.lvm.lv
パラメータがすでに設定されているため、何らかの問題が発生する可能性がありますが、md
テストする時間はありません。
つまり、rd.md.uuid
2つの配列のパラメータをGRUB_CMDLINE_LINUX
変数に追加して/etc/default/grub
grub構成を再生成することで問題を解決しました。
答え2
rd.md=1
変数にパラメータを追加してgrub構成を再生成するとrd.md.conf=1
、rd.auto=1
同様の問題が解決されました。これらのパラメータのデフォルト値は0です(文書には明示的には記載されていませんが、そうであると記載されています)。GRUB_CMDLINE_LINUX
/etc/default/grub
dracut.cmdline
もちろん、rd.md.uuid
別途追加することも可能です。これは必要な配列が明示的に開始されるためです。しかし、私は怠惰で一般的なパラメータを好みます。このrd.md.uuid
バージョンの利点は、起動時に必要なアレイのみが起動されることです。
答え3
私はこれを使うmdadm RAID CentOS スタートガイドこのトピックについて欠落している情報がたくさんあるようです。
明らかなステップに加えて、スタートアップの問題を解決するための2つのステップがありました。 1.) /etc/default/grubにrd.auto=1を追加し、grub.cfg grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgを更新しました。 2.) 次のように initramfs を再構築する必要がありました。 : dracut --add="mdraid" /boot/initramfs-3.10.0-1127.13.1.el7.x86_64.img 3.10.0-1127.13.1.el7.x86_64 --force
その後は起動できますが、将来のすべてのカーネルにmdraidが組み込まれるようにdracut.confを編集してmdraidを追加することを忘れないでください。