RAID5のHDD2本障害が発生したのでデータ復旧を試みた
以下の記事でも紹介した、我が家の「裸族のインテリジェントビルNAS」ですが、RAID5のHDDのうち2本に障害が発生しました。
裸族のインテリジェントビルNAS(CRIB35NAS) を買いました
裸族のインテリジェントビルNAS(CRIB35NAS)でRAID5のベンチマークテスト
経緯
3TBのHDD4本のRAID5で運用
HDD1本故障
HDD交換後、リビルド開始
リビルド中に2本目のHDDが故障
NAS管理画面からRAIDディスク自体が見えなくなる
RAID5はHDD1本故障まではセーフだが、2本故障はアウト。
だが、ここであきらめるわけにはいかない。
全部とは言わないが、少しでもデータ復旧を…ということで頑張ってみました。
結果、今回は中に入っていた約4TBのデータのうち、100GBは救出できませんでしたが、残りは救出できました。
(まぁ障害の程度によるんですけどね)
LinuxでソフトウェアRAIDのシステムなら同手順でなんとかなるかもしれません。
特に、TeraStationとかね。
ということで、以下、データ復旧までの技術メモです。
準備物
- CentOSのLiveDVD
- SATAディスクが4本以上が接続できるPC(3本が救出元、1本が救出先)
- データ救出先のHDD
作業の流れ
- CentOSのLiveDVDからPCを起動
- RAID5のHDD4本のうち、1本に障害が発生した状態の3本のHDDをPCに接続
- RAID5のmd(マルチプルデバイス)を強制的に有効にする
- 救出先のHDDを接続
- データを救出
手順
以下、出力結果等に"★"印でコメントを記載していますので、その部分に着目してください。
1. CentOSのLiveDVDからPCを起動
2. CentOSの公式サイトからダウンロード。
3. RAID5のHDD4本のうち、1本に障害が発生した状態の3本のHDDをPCに接続
4. 接続する
5. ターミナルを起動し、fdisk -l でHDDを確認
# fdisk -l ★LiveDVD
Disk /dev/mapper/live-rw: 5872 MB, 5872025600 bytes
255 heads, 63 sectors/track, 713 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
★LiveDVD
Disk /dev/mapper/live-osimg-min: 5872 MB, 5872025600 bytes
255 heads, 63 sectors/track, 713 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
★HDD1本目
Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdc1 1 267350 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.
★HDD2本目
Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x4b8e7289
Device Boot Start End Blocks Id System
/dev/sdd1 1 267350 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.
★HDD3本目
Disk /dev/sde: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sde1 1 267350 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.
6. parted でパーティション情報を確認
# parted /dev/sde ★fdiskで確認した結果をもとに、ディスク1本だけ確認してみる
GNU Parted 2.1
Using /dev/sde
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sde: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 8001kB 7983kB
2 8001kB 1048MB 1040MB xfs ★NASの管理用領域?
3 1048MB 3001GB 3000GB ★救出したいデータが入っている領域
7. マルチプルデバイスの状態ディスクごとに確認
sdc3を確認
# mdadm --examine /dev/sdc3
/dev/sdc3:
Magic : xxxxxxxx
Version : 1.0
Feature Map : 0x0
Array UUID : a9ea7400:8a721900:43987400:16e3fa00★RAID5アレイのUUID
Name : 1
Creation Time : Mon Nov 14 08:29:49 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5858485984 (2793.54 GiB 2999.54 GB)
Array Size : 17575457664 (8380.63 GiB 8998.63 GB)
Used Dev Size : 5858485888 (2793.54 GiB 2999.54 GB)
Super Offset : 5858486240 sectors
State : clean
Device UUID : ca33aexx:ca865cxx:42f27axx:7b2206xx
Update Time : Fri Jan 4 02:09:46 2013
Checksum : d4f167ce - correct
Events : 172381
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing) ★全ディスクがActiveと認識している
sdd3を確認
# mdadm --examine /dev/sdd3
/dev/sdd3:
Magic : xxxxxxxx
Version : 1.0
Feature Map : 0x0
Array UUID : a9ea7400:8a721900:43987400:16e3fa00★RAID5アレイのUUID
Name : 1
Creation Time : Mon Nov 14 08:29:49 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5858485984 (2793.54 GiB 2999.54 GB)
Array Size : 17575457664 (8380.63 GiB 8998.63 GB)
Used Dev Size : 5858485888 (2793.54 GiB 2999.54 GB)
Super Offset : 5858486240 sectors
State : clean
Device UUID : f571cbxx:eee097xx:685e08xx:568e85xx
Update Time : Fri Jan 4 02:44:50 2013
Checksum : 4255e068 - correct
Events : 172406
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 0
Array State : A.A. ('A' == active, '.' == missing) ★ディスク2本がmissingと認識している
sde3を確認
# mdadm --examine /dev/sde3
/dev/sde3:
Magic : xxxxxxxx
Version : 1.0
Feature Map : 0x0
Array UUID : a9ea7400:8a721900:43987400:16e3fa00★RAID5アレイのUUID
Name : 1
Creation Time : Mon Nov 14 08:29:49 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5858485984 (2793.54 GiB 2999.54 GB)
Array Size : 17575457664 (8380.63 GiB 8998.63 GB)
Used Dev Size : 5858485888 (2793.54 GiB 2999.54 GB)
Super Offset : 5858486240 sectors
State : clean
Device UUID : aab50fxx:ed16f8xx:c86194xx:e92654xx
Update Time : Fri Jan 4 02:44:50 2013
Checksum : 6954f612 - correct
Events : 172406
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 2
Array State : A.A. ('A' == active, '.' == missing) ★ディスク2本がmissingと認識している
8. マルチプルデバイスの状態確認
# cat /proc/mdstat
md126 : inactive sde3[2](S) sdb3[4](S) sda3[0](S) ★md126というRAID5アレイが故障中
8787728976 blocks super 1.0
9. RAID5のmd(マルチプルデバイス)を強制的に有効にする
10. 故障中のmdを停止
# mdadm --stop /dev/md126
mdadm: stopped /dev/md126
11. mdを強制的に有効にする
# mdadm -A /dev/md126 -u a9ea7400:8a721900:43987400:16e3fa00 --run --force ★2.4で確認したARRAY UUIDを指定
mdadm: /dev/md126 has been started with 3 drives (out of 4).
12. マルチプルデバイスの状態確認
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md126 : active raid5 sdd3[0] sdc3[4] sde3[2]
8787728832 blocks super 1.0 level 5, 64k chunk, algorithm 2 [4/3] [U_UU]★HDD4台中3台で稼働
13. mdをマウント
# mkdir /a ★/a というマウントポイントを作成
# mount /dev/md126 /a ★md126を/a にマウント
14. マウント状態確認
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/live-rw 5.4G 4.5G 907M 84% /
tmpfs 3.9G 272K 3.9G 1% /dev/shm
/dev/sr0 1.7G 1.7G 0 100% /mnt/live
varcacheyum 3.9G 0 3.9G 0% /var/cache/yum
/tmp 3.9G 84K 3.9G 1% /tmp
vartmp 3.9G 1.5M 3.9G 1% /var/tmp
/dev/md126 8.2T 4.1T 4.2T 50% /a ★マウントしている
ちなみに、ファイルシステムはxfsでした。
15. ファイルシステムを修復
# xfs_repair -v /dev/md126
~出力が長いので略~
16. 救出先のHDDを接続
17. 接続しましょう
18. データを救出
19. GUIでコピーするなり、cpコマンドでコピーするなり、がんばりましょう
20. 救出できないファイルや故障セクタにアクセスしようとした場合、mdが再度故障状態になるので、手順3から再実行する。
21. 根気よく繰り返す。
私の場合、上記でなんとかなりましたが、環境や障害状況によると思うので、臨機応変にがんばりましょう。
ディスカッション
コメント一覧
まだ、コメントがありません