[PR]

[PR]


はじめに

このページでは、IOデータ製NASドライブのHDL-GTシリーズにおいて、RAID崩壊モードになった場合の、データ救済方法について記載する。
まず、以下にこのモデル(以下、HDLと記載)の特徴を公式HPから転載する。

「LAN DISK Tera」はRAID 5によるデータ保護機能を備えたNASLAN接続型ハードディスク)製品です。
カートリッジ式のハードディスクを採用し、ホットスワップにも対応。万が一の障害発生時もシステムを停止することなく障害ハードディスクを交換することが可能。
更に、外付けeSATAハードディスクへのミラーリング機能も搭載し、保存したデータを障害から守ります。

このページで扱うRAID崩壊のケースについて

最も発生しやすいのは、RAID5運用中に1台のHDが故障した状態で、電源を切った場合である。(下図)

RAID崩壊発生の順序.png

上記の製品概要の文章では、「ホットスワップにも対応」という書き方をしている事から、電源を切って入れ替えても良いような印象を持つが、取扱説明書にはホットスワップの方法しか記載が無い。
そして実際に、自分は障害発生時に電源OFFしてRAID崩壊モードになってしまった。
ひとたびRAID崩壊モードに陥れば、通常の方法ではデータ復旧は不可能となる。

HDL−GTシリーズのドライブ構成

HDLは、システムとユーザーが保存するデータが共にHDDに保存されている。
そこで、システムやユーザーデータがどのように保存されているのかをここでざっくりと説明しておく。
まず、HDDは複数のボリュームにパーティショニングされている。システムは4台のHDDにRAID1(ミラーリング)で保存されている。ユーザーデータは、ユーザーの設定に従い、4台のHDDにシステムとは異なるボリュームに保存されている。
各HDDのボリュームの構成は以下の表のとおりとなっている。特に、ユーザーデータに用いられるmd13は複雑で、RAIDの入れ子構造になっている。これは、外付けディスクのバックアップに対応するためである。

表 HDDのパーティション構成

ボリューム1ボリューム2ボリューム3ボリューム4ボリューム5ボリューム6
ドライブ1
/dev/sda
デバイス番号sda1sda2sda3sda4sda5sda6
フォーマットRAID1(md1)RAID1(md2)swap拡張領域RAID1(md5)RAID5(md10)
ドライブ2, 3, 4
/dev/sdb, sdc, sdd
ドライブ1と同じ構成

表 HDLのRAID構成

ボリュームフォーマットマウント先RAID構成
/dev/md1ext2/bootRAID1(sda1,sdb1,sdc1,sdd1)
/dev/md2ext3/RAID1(sda2,sdb2,sdc2,sdd2)
/dev/md5ext3/mnt/hda5RAID1(sda5,sdb5,sdc5,sdd5)
/dev/md10RAID1アレイmd13RAID1(sda6,sdb6,sdc6,sdd6)
/dev/md13xfs/mnt/sataraid1RAID1(md10,外付けドライブ)

救済に必要なツールの準備

すでにHDLをハッキングし、telnetを有効化していれば、telnetでログインすることでデータ救済が可能だが、telnetを有効化していない場合はHDLを外部から操作する方法は(web以外)無い。
そこで、ドライブをすべて取り出し、別のPCに接続することでRAID崩壊したディスクから大切なデータを救済する。
必要なツールは以下の通り

  1. 救済用PC(SATA端子5つ以上あるWindowsPC、ノートPCはSATA端子が少ないためNG)
  2. 接続用SATAケーブル×4本
  3. KNOPPIX CD(説明)
  4. 救済用HD(ユーザードライブのデータと同じかそれ以上の容量のHDが必要)

PCへの接続

PCに接続されていたHDDは作業が終了するまで取り外す。
ここでは、RAID5運用していたHDLのドライブ2が故障し、RAID崩壊に陥った場合を想定する。図の様に故障ドライブ以外のNASドライブと救済用HDをPCに接続する。もしドライブ3が故障した場合は、図のドライブ2とドライブ3で救済用HDの接続位置が入れ替わる。
救済用PCのSATA端子が4個しか無い場合、USB光学ドライブがあれば構成可能。ただし、BIOSがUSBブートに対応している必要がある。

PCへの接続図.png

RAID5ドライブのマウント

PC本体の構成が完了したら、KNOPPIXを起動する。
以下、GUIは使わないので、ターミナルを起動し、rootユーザーになる。

$su - root

接続したドライブがどのデバイスに割り当てられているか、RAIDアレーのスーパーブロックをmdadmで読み取って確認する。

#mdadm --misc --examine /dev/sda1 <--コマンドで指定したデバイス
/dev/sda1:
         Magic : xxxxxxxx
       Version : 0.90.xx
          UUID : 705f919a:8b56e077:93875f94:f8cbfdfd
 Creation Time : Mon Jan  1 00:00:00 20xx
    Raid Level : raid5
 Used Dev Size : 1234567890 (xxxxx.xx GiB xxxx.xx GB)
    Array Size : 1234567890 (xxxxx.xx GiB xxxx.xx GB)
  Raid Devices : 4
 Total Devices : 4
Preferred Minor : 0

   Update Time : Sun Nov 04 00:00:00 2012
         State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
 Spare Devices : 0
      Checksum : abcdefgh - correct
        Events : 12345678

        Layout : left-symmetric
    Chunk Size : 256K

     Number   Major   Minor   RaidDevice State
this     0       8      145        0      active sync   /dev/sda1 <--一致しているかどうか確認する場所

   0     0       8      145        0      active sync   /dev/sda1
   1     1       8      129        1      removed
   2     2       8       33        2      active sync   /dev/sdc1
   3     3       8       81        3      active sync   /dev/sdd1

ここで、コマンドで指定したデバイスとコマンド結果のthisの行のデバイスが一致していれば問題ない。一致していない場合は、PCの接続が間違っている可能性がある。そのまま修復作業を続けても良いが、一致させて置いた方がベター。
他のデバイスも同様に、mdadmで確認する。
確認が終わったところで、ユーザーデータが入っているRAIDドライブのマウント作業に入る。

#mdadm -A --run --force /dev/md10 /dev/sda6 /dev/sdc6 /dev/sdd6

オプションの-Aは--assembleと同じで、既存のRAIDアレーを構築することを指示している。
また、元のRAIDに対してデバイス数が足りない場合でも強制的にアクティブにするために--runと--forceをつけている。&br ここで、もしmd10が見つからないというエラーが出た場合は、以下のコマンドでブロックデバイスmd10を作る。

#mknod /dev/md10 b 9 10

それから、先ほどのコマンドを実行する。
md10のステータスを確認する。以下のコマンドでactiveとなっていれば、動作している。

#cat /proc/mdstat
md10 : active raid5 sdd6[0] sdc6[1] sda6[2]
      1234567 blocks  level 5, 64k chunk, algorithm 2 [4/3] [U_UU]

これでRAID5のデバイスはRAID縮退モード(degraded mode)で運転が開始した。
次に、md13を作成する。先ほどと同じ要領で、強制的にアクティブにする。

#mdadm -A --run --force /dev/md13 /dev/md10

そして、md13をマウントする。

#mount -t xfs /dev/md13 /mnt/sataraid1

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS