レスキューディスク不要:CentOS7の mdadm で構築したRAID1 で起動できなくなったら

ALL
スポンサーリンク

CentOS7の mdadm で構築したRAID1 で、シャットダウン時にHDDを交換して起動できなくなった場合の復旧方法です。
下記記事では、レスキューディスクを使ったRAID復旧を紹介していましたが、コメント欄にてレスキューディスクが無くとも対処できる方法を教えていただいたので、ここで説明します。

CentOS7の mdadm で構築したRAID1 で起動できなくなったら パソコン鳥のブログ

CentOS7の mdadm で構築したRAID1 で、シャットダウン時に片方のHDDを交換すると、ブート時に、下の画像のようになって、起動できなくなります。

画像

RAID1の2つのHDDのうち、どちらを交換しても同じで、実機でも仮想マシンでも発生します。
mdadm が検知できない状態で、HDD が変わってしまうと発生するようです。

この場合の対処方法です。

なお、先の画面にならずに、「FATAL: No bootable medium found!」と出る場合は、交換した新HDD(をつなげているポート)がブート順の優先度が高かった場合です。

交換した新HDDからは当然、ブートできないので、残りのHDDから起動するようにします。
起動時にBIOS設定画面に入り(たいてい、起動時にDELキーやF2キーを押していれば入れます)、BIOSのブートデバイス指定で、もう1つのHDDから起動するように指定します。

先の画像のコンソール画面で、cat /proc/mdstat を実行します。

Personalities :
md126 : inactive sda1[0][S]
      524288 blocks super 1.2
md127 : inactive sda2[0][S}
      7857152 blocks super 1.2
unused devices: <none>

この表示では、md126 と md127 が見えています。
以降の説明では md126、md127 で説明しますが、適宜皆さんの環境での値に置き換えて下さい。

次のコマンドを実行します。

mdadm --run /dev/md126
mdadm --run /dev/md127
mdadm --readwrite /dev/md126
mdadm --readwrite /dev/md127

–run によって、RAIDアレイを起動します。
-readwrite で、アレイを読み書き可能にします。

cat /proc/mdstat を実行すると、次のようになります。
raid1 の表示があり、縮退状態ですがRAIDとして動作しています。

Personalities : [raid1] 
md126 : active raid1 sda1[0]
      524288 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda2[0]
      7857152 blocks super 1.2 [2/1] [U_]
      bitmap:0/1 pages [0KB], 65536KB chunk
unused devices: <none>

ここで、exit を実行すると、コンソールから抜けて OSブートが継続します。

OSブート後、cat /proc/mdstat を実行します。

Personalities : [raid1]
md126 : active raid1 sda1[0]
      524288 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk
md127 : active raid1 sda2[0]
      9950208 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>

のように表示されます。

ここで、以降、sdX が動作しているHDD、sdY が新規交換したHDDとします。
cat /proc/mdstat の結果が [U_] の場合は、sdX が sda 、sdY が sdb となります。
[_U] の場合は、sdX が sdb 、sdY が sda となります。

sfdisk -d /dev/sdX | sfdisk /dev/sdY
を実行します。
sdX と同じパーティション情報が、sdY(新HDD)にも設定されます。

次のコマンドを実行します。RAIDに新HDDが組み込まれます。

/sbin/mdadm --manage /dev/md126 --add /dev/sdY1
/sbin/mdadm --manage /dev/md127 --add /dev/sdY2

cat /proc/mdstat を実行します。
RAID構築が始まっています。

Personalities : [raid1]
md126 : active raid1 sdb1[2] sda1[0]
      524288 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sdb2[2] sda2[0]
      9950208 blocks super 1.2 [2/1] [U_]
      [==>..................]  recovery = 11.7% (1171840/9950208) finish=5.2min speed=27616K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>

cat /proc/mdstat を何度か実行し、recovery = XXX % の表記がなくなれば、構築完了です。

root で grub2-install /dev/sdY を実行し、新規交換したHDDにも grub の設定を行います。
(先の説明の通り、sdY は新規交換したHDD のデバイス名(sda やsdb等)とします)

これで、交換した新HDDからも起動できるようになります。

コメント