web-dev-qa-db-ja.com

md raidがdracutによってマウントされていません

バックグラウンド

私は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"

他のEFIパーティションを/boot/efi_[device]に自動的にマウントするスクリプトがあります。カーネルが更新されると、grub.cfgがこのパーティションにコピーされ、すべての同期が維持されます。

/dev/sda1/dev/sdb1はスクリプトによって同期が保たれているので(私はこれを確認しました)、fstabがどちらかを/boot/efiにマウントすることは問題になりません(これは、障害により1台のドライブが取り外された場合でも、システムは起動することが保証されています。物事を簡素化するためにLVにスワップを配置することもできましたが、RAID0は(それだけの価値がある)パフォーマンスが向上し、16 GBの追加スペースが得られます。

次のコマンドを使用して、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/dev/md0/dev/mdを呼び出していないようです。 dracutプロンプトからそれを行うことができます。その後、lvm_scanがLVGを検出し、/dev/centos/root/dev/rootにリンクできます。システムは、プロンプトを終了すると問題が発生します。すべてが正確にあるべき場所にあるようです。

利用可能なカーネルアップデートがあったので、それをインストールしようとしましたが(initramfsとgrub.cfgファイルを再生成するときに、最初に何かを台無しにしたと仮定して)、ダイスはありませんでした。システムはまったく同じ方法でまだ失敗します。これは、どちらかのEFIパーティションから手動で起動する場合にも当てはまります(2つは同一であるためです)。

Pastebinのrdsosreport.txtへのリンク

ここで何が欠けていますか? dracutで配列を組み立てるにはどうすればよいですか?

6
Toasty

Dracutのドキュメントでは、md raid配列はすべて自動的にアセンブルされるべきであり、rd.md.uuidパラメータは、特定のアレイのみを起動プロセスの一部としてアセンブルする場合にのみ使用してください。

実際には、配列は自動的には組み立てられず、rd.md.uuidパラメータが設定されます(アセンブルする必要がある各配列に対して)。 rd.lvm.lvパラメータは既に設定されており、mdを妨害するものですが、テストする時間はありません。

つまり、rd.md.uuidへの私の両方の配列のパラメータGRUB_CMDLINE_LINUX変数の/etc/default/grub、そしてgrub構成を再生成すると問題が解決しました。

6
Toasty