LinkStationのハードディスクをRAID5の最低本数で読めるようにする方法
Windows10からアクセスしているうちに、壊れてしまったLinkStation。
前の記事でLinkStationにtelnetで入れるようにしました。
本来ならパソコンに全てのハードディスクを繋いで、データのサルベージをするべきなのですが、LinkStationにもLinux OSが動いているので、そのままLinkStationのコマンドプロンプトからRAID5の復旧コマンドを叩くことに挑戦しました。
結果、mdadmというコマンドを使って、RAID5のデグレードに成功しましたので、本記事では、Linuxコマンドを使ったLinkStationのRAID5のデグレード手順を紹介します。
fdiskで全てのドライブを見る
LinkStationにも4つのハードディスクが搭載されていますので4つともLinux上で認識されているか?を確認します。
root@LS-QLF9C:~# fdisk -l
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 125 1004031 83 Linux
/dev/sda2 126 748 5004247+ 83 Linux
/dev/sda4 749 121601 970751722+ 5 Extended
/dev/sda5 749 873 1004031 82 Linux swap
/dev/sda6 874 121478 968759631 83 Linux
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 125 1004031 83 Linux
/dev/sdb2 126 748 5004247+ 83 Linux
/dev/sdb4 749 121601 970751722+ 5 Extended
/dev/sdb5 749 873 1004031 82 Linux swap
/dev/sdb6 874 121478 968759631 83 Linux
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 125 1004031 83 Linux
/dev/sdc2 126 748 5004247+ 83 Linux
/dev/sdc4 749 121601 970751722+ 5 Extended
/dev/sdc5 749 873 1004031 82 Linux swap
/dev/sdc6 874 121478 968759631 83 Linux
Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 125 1004031 83 Linux
/dev/sdd2 126 748 5004247+ 83 Linux
/dev/sdd4 749 121601 970751722+ 5 Extended
/dev/sdd5 749 873 1004031 82 Linux swap
/dev/sdd6 874 121478 968759631 83 Linux
root@LS-QLF9C:~#
全てのDiskが見えました。
mdadmでRAID5のデグレード
RAID5というの最低3本のハードディスクがあれば動きます。
LinkStationのRAID5は4本で構成されていますので、最低ラインよりも1本余裕があります。
このRAID5の構成でハードディスクの本数を4本から3本に減らすことを「デグレード」と言います。
今回はdisk1が壊れてしまい、新品に入れかえた状態ですので、disk2~disk4の3本でRAID5が動くかどうかが復旧の大事なポイントになります。
RAID5の定義を確認
RAID用のデバイスは/dev/md・・から始まるデバイス名になっているので存在を確認します。
root@LS-QLF9C:~# ls -l /dev/md2
brwxr-xr-x 1 root root 9, 2 Jun 18 2009 /dev/md2
RAID用のデバイス、既にありました。
RAIDの定義が書かれているのはmdadm.confです。
root@LS-QLF9C:~# cat /etc/mdadm.conf
DEVICE /dev/disk?_6 /dev/md2 /dev/md3
コンフィグもデバイスの宣言だけですが、残っていました。
RAIDが組まれると、この下にARRAY定義が記載されるようになります。
RAID5の再構成
OSにRAID構成を再認識させるため、mdadmコマンドでmd2デバイスにsdb,sdc,sddの3つのハードディスクをAddします。
root@LS-QLF9C:~# mdadm -A /dev/md2 /dev/sd[bcd]6
mdadm: /dev/md2 assembled from 3 drives - need all 4 to start it (use --run to insist).
ハードディスク3本でRAID5を構成しようとしたら、怒られました。
root@LS-QLF9C:~# mdadm -A /dev/md2 /dev/sd[bcd]6 --run
mdadm: /dev/md2 has been started with 3 drives (out of 4).
強制モードとして、–run を付けたら成功しました!
RAID状態の確認
RAIDが組まれたことの確認は mdadm –detail コマンドを使います。
root@LS-QLF9C:~# mdadm --detail /dev/md2
/dev/md2:
Version : 00.90.03
Creation Time : Mon Jun 22 02:07:49 2009
Raid Level : raid5
Array Size : 2906278656 (2771.64 GiB 2976.03 GB)
Device Size : 968759552 (923.88 GiB 992.01 GB)
Raid Devices : 4
Total Devices : 3
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Tue Dec 15 03:58:17 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 82ca5ba8:77319326:bd54f990:2edf8a42
Events : 0.6
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 22 1 active sync /dev/sdb6
2 8 38 2 active sync /dev/sdc6
3 8 54 3 active sync /dev/sdd6
root@LS-QLF9C:~#
degradedと表示されているのが分かるでしょうか?
デグレードで完全に壊れたdisk1の存在を忘れ、立ち上がりました!
あとは適当にマウントすれば読めるようになります。
mount /dev/md2 /mnt/array2
LinkStationのRAID5のデグレードは、壊れたLinkStationを応急処置として正常な残りの3本のハードディスクで「どうにか読めるようにする」手法です。
データが全て壊れていないかどうかは、この時点では分かりませんので注意が必要です。
LinkStationのHDDが壊れてEMモードにすらならずにハマってしまったけれど、Linuxの機能を駆使して完全復旧させた私の体験の一部始終を読みたい方は、以下の記事から進んで下さい。