[HowTo] CentOS5.9 HDD障害からデータサルベージ

2013年3月31日 オフ 投稿者: KYO
Table of Contents

03/28にCentOS5.9のHDDに障害が発生。

結果として、スーパーブロックが破損したのか、OSが起動できなくなった。
RAID1のミラーリング構成だったが、2発ともスーパーブロックが破壊されたのか、差し替え等を行ってもKernel Panicを起こしてOSが起動しない。

データのバックアップを取っていなかったので、以下の方法を試した。

シングルユーザモード

OS起動時のconfig「kernel … 」の末尾に「 single」を追記して、シングルユーザモードでHDDのマウントが出来ないかを検証。

→ 結果、NG

レスキューモード

CentOSインストールDVDを再作成後、起動時のオプションに「linux rescue」を指定して、レスキューモードでHDDのマウントが出来ないかを検証。。

→結果NG

KnoppixでのHDDマウント

最新版のKnonppixをダウンロード後、DVDを作成。通常起動で、HDDをマウントできないかを検証。

→結果NG

Knoppixでmountコマンドを利用してのHDDマウント

「fdisk -l」を実行すると、接続HDD情報とパーティション情報が表示されたので、マウントコマンドを利用して、マウントを行った。

fdiskの実行
[shell]
\# fdisk -l
.. (HDD情報が表示される)
[/shell]

パーティション、「/boot」、「/」、「/home」、「/var」用にディレクトリ作成
[shell]
\# mkdir /mnt/sdb1
\# mkdir /mnt/sdb2
\# mkdir /mnt/sdb3
\# mkdir /mnt/sdb6
[/shell]

マウント
[shell]
\# mount /dev/sdb1 /mnt/sdb1 -f ext3
\# mount /dev/sdb2 /mnt/sdb2 -f ext3
\# mount /dev/sdb3 /mnt/sdb3 -f ext3
\# mount /dev/sdb6 /mnt/sdb6 -f ext3
[/shell]

各パーティションを、外付けHDD(NTFS)にバックアップ
[shell]
\# scp -rp / /mnt/sdc1/SC440/root
\# scp -rp /home /mnt/sdc1/SC440
\# scp -rp /var /mnt/sdc1/SC440
[/shell]

新OS側でのデータリストア

NTFSへ今回バックアップしたので、「ntfs-3g」を追加インストールしてマウントする

[shell]
\# yum -y install ntfs-3g
\# mkdir /mnt/sdb
\# mount /dev/sdb /mnt/sdb -t ntfs
[/shell]

とは、データをリストア

[shell]
\# scp -rp /mnt/sdb/SC440/var /var
\# scp -rp /mnt/sdb/SC440/home /home
\# scp -rp /mnt/sdb/SC440/root /
[/shell]

パーミッション情報を変更

今回はNTFSへの保存だった為、パーミッションがすべて777になっている

一括で以下のコマンドからパーミッションをデフォルト値にした

[shell]
\# find . -type d -print | xargs chmod 755
\# find . -type f -print | xargs chmod 644
[/shell]

例外的に、700や600、666や777のものもあるので、それは個別に対応。

リストア時は、一括ではなく少しずつディレクトリ単位の方が危険性は少ないイメージ。

以上で、データのバックアップとリストアは成功したが、HDD障害は起こるものとして常に準備しておく必要性は強く感じた。HDDをRAID1化していてもこんなケースがあるとは・・・

ということで、今回のメモ。