読者です 読者をやめる 読者になる 読者になる

とむむの日々

埼玉県某市に住む「とむむ」の日記です。2008年3月から、関心のあることを書き連ねる日常の記録です。

GLANTANKが完全にお亡くなりに… Software-RAIDのDiskからデータを救出してみた

どうも、とむむです。

長年愛用してきたGLANTANKが完全にお亡くなりなった。
データ救出の過程で/var/log/messagesを確認したところ、11月4日の午前6時頃にお亡くなりになったことが推定される。1週間以上も気付かなかったのは、ある意味幸せだったのだろうか・・・。
気付いたときは、勝手に電源が落ちた状態で、再度、電源を投入しても全く反応がない。
恐らく、電源周りがダメになってしまったようだ。

以前は自宅サーバとしても使っていた時期もあったが、Sizkaを導入してからは、主にファイルサーバとして利用していた。Software RAIDRAIDを組んでいたが、本体が動かなくなっては、手の施しようがない・・・。

という訳で、GLANTANKのSoftware RAIDでフォーマットされた領域からファイルを救出する作業に着手した。
方針は至ってシンプルだ。

1) 別のLinuxサーバ上にGLANTANKで動かしていたDiskを接続する。
2) Software RAIDを片肺で復活させる。
3) 復活したSoftware RAIDの/dev/md0をマウントし、必要なデータを救出する。

では、実際にどうやってやるのかを紹介していこう。
色々と手順を踏むのが面倒wなので、手近にあったSizkaでさっさとやってしまった。
時間をかけてやるのなら、Mac上のVMwareLinuxを新規インストールしてやった方がよかったと思う。

1) 別のLinuxサーバ上にGLANTANKで動かしていたDiskを接続する。

GLANTANKからHDDを取り出して、USB変換アダプタを使ってSizkaに接続した。


SATA/IDEの2.5/3.5インチ両対応タイプなので、これ1つでほぼ全て(SCSI/SAS除く)のHDDがUSBで接続できるので、1個持っておくと便利♪

2) Software RAIDを片肺で復活させる。

2-1) まず、確認すべきはデバイス(GLANTANKから取り出したHDD)がちゃんと見えることだ。

root@sizka:~# fdisk -l /dev/sdb

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 1 32 257008+ 83 Linux
/dev/sdb2 33 64 257040 82 Linux swap / Solaris
/dev/sdb3 65 30401 243681952+ fd Linux raid autodetect

今回の対象が判明した。/dev/sdb3だ。

2-2) Software-RAID関係のインストール

Software-RAID関係が未インストールだったので、mdadmをインストールした。
# apt-get install mdadm

2-3) GLANTANKのSoftware-RAIDSizka上で復活させる

manを見たりググったりしてみたが、結局、2つのコマンドで復活できた。
今回、重要なオプションは、「--assemble」だ。
/dev/sdb3を/dev/md0の片肺として復活させるようにする。
# mdadm --assemble /dev/md0 /dev/sdb3

試しに状況を確認したところ・・・
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sdb3[1](S)
243681856 blocks

unused devices:

md0として、/dev/sdb3を認識しているようだが、ステータスがinactiveだった。
activeにする方法を探してみたが見つからず・・・。
とりあえず、scanというオプションがあったので試してみたところ、activeに変わった。

# mdadm --assemble --scan
mdadm: /dev/md0 has been started with 1 drive (out of 2).
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb3[1]
243681856 blocks [2/1] [_U]

unused devices:

3) 復活したSoftware RAIDの/dev/md0をマウントし、必要なデータを救出する。

# mkdir /mnt/md
# mount /dev/md0 /mnt/md

多少面倒なプロセスになるが準備を最短でやれることを重視し、リモート待機用のWindowsマシン(Atom330)に、長期データ保存用のTerastation(640GBモデルを1TBモデル相当へ換装済)マウントし、winscp経由でSizkaの/mnt/md領域から必要なファイルをコピーするという方式を取った。
コピーし始めてから、SizkaNICが100Mbpsだったことを思い出したが、まぁ時間をかけても問題はないので、気にしないことにした。

GLANTANKは、Sizkaのバックアップ先としてNFSマウントもしていたので、バックアップ先がなくなったので少し困っている。ああ、実家用のファイルサーバ兼遠隔地バックアップ用途に整備していた玄箱を復活させるかな。
という訳で玄箱の復活を進めることした。


追記:
winscpのデフォルト設定だと日本語ファイルが化けることが分かった。
サーバで、UTF-8を使っている場合は、winscp側の設定を以下のようにすること。
winscp option

関連するエントリー:
glantankの再構築 その1
glantankのその後
久しぶりのglantankは、no-ipのエージェントを仕込むの巻

Sizka BASICを購入♪ 超省電力サーバの誕生へ・・・
Sizka BASICのOSインストールに向けた準備
Sizka BASIC・・・いきなり、トラブル orz