CentOS7の mdadm で構築したRAID1 で起動できなくなったら

2019.6.29
--
本記事はレスキューディスクを使ったRAID復旧ですが、コメント欄にてレスキューディスクが無くとも対処できる方法を教えていただきました。
次の記事の方を参照ください。
レスキューディスク不要:CentOS7の mdadm で構築したRAID1 で起動できなくなったら パソコン鳥のブログ/ウェブリブログ
--


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

画像


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

これ、HDD故障でシャットダウンまでは何とか動作していて、その後動作不可になったら、OS起動できなくなってしまい、かなりマズイです。

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


CentOS DVD で起動し、メニューで Troubleshooting を選択した後、Rescue a CentOS system を選択します。
数字で選択個所になったら、「1) Continue」を選びます。

コマンドプロンプトが表示されたら、
chroot /mnt/sysimage
を実行します。。


cat /proc/mdstat を実行します。


Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear]
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:1/1 pages [4KB], 65536KB chunk

unused devices: 


のように表示されます。


ここで、以降、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 : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear]
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_]
      [>....................]  recovery =  2.7% (217600/7857152) finish=216.5min speed=148624K/sec
      bitmap:1/1 pages [4KB], 65536KB chunk

unused devices: 



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


ここで、SELinux が有効な場合は、次のファイルを編集することで無効化しておきます。

/etc/sysconfig/selinux

SELINUX=disabled


これをしないと、起動時に下の画面でエラーになります。

画像


exit を実行後、さらに reboot を実行します。


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

これで CentOS が起動できるようになります。

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

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

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 2

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)

この記事へのコメント

通りすがり
2019年06月26日 02:22
私も同じ内容で困りましたが、1枚目の画像「ブート時に、下の画像のように」のところのconsole「:/#」から、cat /proc/mdstatでinactiveになったmdxxxが見えていれば、mdadm --run と --readwrite で縮退状態で有効化できるので(有効化後はconsole「:/#」をexitするとOSブートが継続する)、レスキューディスクなしで対処できます。
2019年06月29日 10:56
情報ありがとうございます!
教えていただいた方法を試して、RAID復旧できました。
後ほど記事の方を修正します。

この記事へのトラックバック