以前 BIOS から起動するシステムにおいて、mdadmにより構築しているRAID1のディスク故障時のディスクの交換方法を書いた。([BIOS]mdadmによるRAID1 – 復旧方法 –)
今回は UEFI で起動するシステムでの復旧方法を記載する。
- 前準備(UEFIモードで起動できる仮想環境の準備)
最初VirtualBoxの「EFIの有効化」という拡張機能を用いて試してみたが、次のサイトにも書かれているように「VirtualboxでUEFI有効にしてDebian入れたら二度目には起動しない。お前さっきまで起きてただろ!」、一度シャットダウンすると起動できなくなるという問題があり、検証に利用することができなかった。そのためVMware Workstation Playerを利用した。通常ではBIOSモードで起動するが、.vmxファイルに「firmware = “efi”」を追記するとUEFIモードで起動できるようになる。準備ができたら、HDDを二つ接続してRAID1構成でインストールを行う。ここの手順は割愛する。ちなみにインストールした際のパーティション構成は下記のとおり。Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: gpt Disk identifier: 70C4696F-C25D-48D2-AC5A-20C23E2C863E # Start End Size Type Name 1 2048 35237887 16.8G Linux RAID Linux RAID 2 35237888 39434239 2G Linux RAID Linux RAID 3 39434240 39843839 200M Linux RAID Linux RAID 4 39843840 41940991 1G Linux RAID Linux RAID
1がルート、2がスワップ、3がEFI、4が/bootの領域
- HDDを故障させ復旧する
この手順は以前の「[BIOS]mdadmによるRAID1 – 復旧方法 –」での手順と変わらないのでこちらを参照し、「・物理デバイスを故障させる」から「・RAIDデバイスへ新しい物理デバイスの追加」までの手順を実施する。 - 新しいHDDから起動できるように設定する
uefiブートでは下記のように起動順序が設定されている。# efibootmgr -v BootCurrent: 0006 BootOrder: 0006,0005,0000,0002,0003,0004,0001,0008 Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0) PciRoot(0x0)/Pci(0x10,0x0)/SCSI(0,0) Boot0001* 耀 PciRoot(0x0)/Pci(0x10,0x0)/SCSI(0,0)/HD(3,GPT,9d1fb208-a4e6-4e43-bda0-182660a0621b,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi) Boot0002* EFI VMware Virtual IDE CDROM Drive (IDE 1:0) PciRoot(0x0)/Pci(0x7,0x1)/Ata(1,0,0) Boot0003* EFI Network PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x1,0x0)/MAC(000c2985f175,0) Boot0004* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xcb3a000,0xcfa0fff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37) Boot0005* CentOS HD(3,GPT,765b2167-fa3c-45b1-94d2-e0f3c0adc4d8,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi) Boot0006* CentOS HD(3,GPT,c1304ebe-93b7-4cba-9ee0-a35306fb67b2,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi)
efibootmgr(UEFIブートマネージャー)について、上記のコマンドの結果の読み方などはこのあたりを読んでください。
・efibootmgr その1 – UEFIブートマネージャーを操作するコマンドの紹介・UEFIブートマネージャーに登録されているエントリーの一覧を表示する
・https://wiki.gentoo.org/wiki/Efibootmgr/ja上記のサイトを読むと、交換したHDDのブートローダーを読み込むためにはUEFIブートマネージャーへの設定が必要だと分かります。ちなみに登録していないHDDで起動しようとするとこのように起動出来無くなってしまいます。(うまくやればBootManagerから起動させることは可能です)
こうならずに正常に起動するためには次のコマンドを実行する。
# efibootmgr --create -disk /dev/sda --part 3 --loader '\EFI\centos\shimx64.efi'
上記のコマンドの中で「/dev/sda」、「3」、「\EFI\centos\shimx64.efi」の箇所はそれぞれの環境によって異る場合があるので気をつけてください。このように設定すると正常に起動することができるようになります。
上記のコマンド実行後に「efibootmgr -v」を実行して起動順序を確認すると次のように一つ(例ではBoot0007の列)追加されていることが確認できます。# efibootmgr -v BootCurrent: 0006 BootOrder: 0007,0006,0005,0002,0003,0004,0001 Boot0001* 耀 PciRoot(0x0)/Pci(0x10,0x0)/SCSI(0,0)/HD(3,GPT,9d1fb208-a4e6-4e43-bda0-182660a0621b,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi) Boot0002* EFI VMware Virtual IDE CDROM Drive (IDE 1:0) PciRoot(0x0)/Pci(0x7,0x1)/Ata(1,0,0) Boot0003* EFI Network PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x1,0x0)/MAC(000c2985f175,0) Boot0004* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xcb3a000,0xcfa0fff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37) Boot0005* CentOS HD(3,GPT,765b2167-fa3c-45b1-94d2-e0f3c0adc4d8,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi) Boot0006* CentOS HD(3,GPT,c1304ebe-93b7-4cba-9ee0-a35306fb67b2,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi) Boot0007* CentOS HD(3,GPT,9d1fb208-a4e6-4e43-bda0-182660a0621b,0x259b800,0x64000)/File(\EFI\centos\shimx64.efi)
以上!