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: <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 : [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: <none>
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からも起動できるようになります。
コメント
私も同じ内容で困りましたが、1枚目の画像「ブート時に、下の画像のように」のところのconsole「:/#」から、cat /proc/mdstatでinactiveになったmdxxxが見えていれば、mdadm –run と –readwrite で縮退状態で有効化できるので(有効化後はconsole「:/#」をexitするとOSブートが継続する)、レスキューディスクなしで対処できます。
情報ありがとうございます!
教えていただいた方法を試して、RAID復旧できました。
後ほど記事の方を修正します。
記事を修正しました。
長くなりましたので、別記事を作成し、本記事冒頭で誘導しています。
レスキューディスク不要:CentOS7の mdadm で構築したRAID1 で起動できなくなったら | パソコン鳥のブログ