LinkStation Mini LS-WS500GL 故障からのデータ救出

ことの始まりは。

10年以上使ったバッファローNAS LinkStation LS-WS500GLが故障してしまいました。いつかはこの日が来るとわかりつつ、御多分に漏れず、バックアップという行為をしていませんでした。家族や子供の写真が入っているディスクであり、なんとしても復旧させなければならない!!

 

kakaku.com

この機種です。コンパクトで置き場所に困らない、使い勝手のよい製品でした。ミラーリングで250GB(500GBで1本としても使える)と容量もコンパクトでしたが、私の使い方では十分でした。

空調もないような過酷な環境で10年稼働し続けてくれました。ありがとう、君のことは忘れない。。。

 

故障の状況チェック

ある日、リッピングしている福山さんの音楽をMP3プレーヤーにダウンロードしようとしましたが、どうもディスクにアクセスできません。まずネットワークの不調を疑いましたが、他の機器は生きているので、どうやらそうではありません。ちょっとだけ焦りを感じました。

機器を見てみると電源が入ってないです。電源が入ると前面の製品ロゴが青く光るのですぐに分かります。ああ、電源ケーブルが抜けただけか。と、一瞬ホッとしました。チェックするとケーブルは抜けてませんでした。一応刺し直しましたが電源は入らなかった。

次に、ACアダプタが壊れていてくれ、と願いました。ハンドテスターでアダプタのプラグ部の電圧をチェックすると、きちんと5Vが出ていました。最悪です。大事なデータが沢山入っているので、復旧業者の情報を調べ始めたりしました。何万円もするのかと想像してましたが、程度にもよるのでしょうが数千円の可能性もありそうです。

一方、故障の状態は電源スイッチをON/OFFしてもウンともスンとも言わないというもので、電源周りだけが急死し、HDD本体は無事な可能性は高いのかという気もしました。

それなら、まずは分解です。中からHDDを取り出して、linuxからデータを吸い出してバックアップを取る。

 

LinsStation の分解

この製品は、すごくコンパクトにできています。筐体もキッチリ組み上がっており、外見にはネジもないし、どうやって開けるんだろう、と悩んだまま2ヶ月くらい放置してしまいました。でも、ついに重い腰を上げて再度チャレンジです。

ありがちのは、足のゴムを剥がすとネジが出てくるケース。4つのゴムを剥がすと、一箇所に丸い形の溝に+っぽい模様がありました。

しかし、+ドライバーを当ててみると、模様はシールの残骸で、ただ丸い線が書いてあるだけだった!ネジ穴ではない。何だこれは。。

結局、ネジはなく、筐体の隙間にマイナスドライバーを突っ込み、無理やりこじ開けることに。。。何とか開けることは出来ましたが、黒いプラスチックの破片がいくつも出てきました。まあ、お役御免なので気にはしません。

中身は、薄っぺらい基板の両面に2.5インチのHDDが差し込まれている形です。うまくコンパクトに設計されているものです。カッチリした状態で筐体にはいっていました。ちなみに、基板には made in japan のシルク印刷がありました。使われているHDDは、緩衝材的なものが貼り付けられており良くわかりませんが、WesternDigital のデバイスのようです。250GB × 2台。

 

データの復旧

・HDDの接続

 HDD 2台の内の片割れをPCに接続します。うちのPCのケースには、2.5/3.5インチ兼用のSATAスロットがついており、直接SATAのディスクをホットスワップ接続可能(電源入ったまま接続する)です。または、SATA/USB変換ケーブルや、マザーボードに直結すればよろしいかと。

 

LinuxからのHDDの認識

 Ubuntu 18.04 を使っています。ハードディスクはどのように繋がっているでしょうか。インストール済のアプリケーション一覧の中に、”GSmartControl” と言うものがありました。起動してみますと。

f:id:mad-machine:20190908044806p:plain

GSmaertControl

 おお。WDが2台ありますが、ターゲットである250GBのヤツは /dev/sdd と認識されているようです。GSmartControl を使え(わ)ないのであれば、dmesg を見るとか。端末を起動して、

> dmesg | less

(検索)→ /sd[a-z]
[ 1.587961] scsi 5:0:0:0: Direct-Access ATA WDC WD2500BEVS-0 1A01 PQ: 0 ANSI: 5
[ 1.588046] sd 5:0:0:0: [sdd] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[ 1.588050] sd 5:0:0:0: [sdd] Write Protect is off
[ 1.588051] sd 5:0:0:0: [sdd] Mode Sense: 00 3a 00 00
[ 1.588058] sd 5:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.588063] sd 5:0:0:0: Attached scsi generic sg4 type 0
[ 1.623753] sdd: sdd1 sdd2 sdd4 < sdd5 sdd6 >
[ 1.624148] sd 5:0:0:0: [sdd] Attached SCSI disk

 /dev/sdd と認識されておるようです。

バイスの構成(パーティション)はどうなっているか。

> sudo fdisk -l /dev/sdd
[sudo]  のパスワード:
ディスク /dev/sdd: 232.9 GiB, 250059350016 バイト, 488397168 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x39afa036

バイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdd1 63 2008124 2008062 980.5M 83 Linux
/dev/sdd2 2008125 12016619 10008495 4.8G 83 Linux
/dev/sdd4 12016620 488392064 476375445 227.2G 5 拡張領域
/dev/sdd5 12016683 14024744 2008062 980.5M 82 Linux スワップ / Solaris
/dev/sdd6 14024808 486689174 472664367 225.4G 83 Linux

/dev/sdd6 がお目当ての領域と思われます。

 

・デバイスの接続

HDDを接続するディレクトリを作っておきます。

> cd /media

> sudo mkdir ws500

 マウント(ディスクを接続)

> sudo mount /dev/sdd6 ws500
mount: /media/ws500: 未知のファイルシステムタイプ 'linux_raid_member' です. 

あら。RAIDのディスクだったので、普通にマウントはできないようです。RAIDを扱うには、mdadm というコマンドを使うようです。

> sudo apt install mdadm

入ってないのでインストールしました。

RAIDを構築するコマンドを実行。

> sudo mdadm --assemble /dev/md0 --run /dev/sdd6
mdadm: /dev/md0 has been started with 1 drive (out of 2).

状況を確認する。

> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdd6[1]
236332096 blocks [2/1] [_U]

unused devices: <none>

/dev/md0 に割り付けられた。マウントする。

> sudo mount /dev/md0 ws500
> cd ws500/
> ls
mt-daapd share spool webtest

見えました!!!!

あとは、データを別のディスクなどにコピーすれば良い。データ救出後のHDD2台は、予備として取って置くことにします。

使い終わったら、マウントを解除。

> sudo umount /media/ws500

以上。

 

ついでに、試行中に遭遇したトラブル例ですが、

RAIDの割り当てで、既に使用中のデバイスには割当たらないので(当たり前)、使われていないデバイスを指定します。まずは状況を確認しておきましょう。

> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdd2[1](S)
5004160 blocks

md10 : inactive sdd5[1](S)
1003904 blocks

md0 : inactive sdd1[1](S)
1003904 blocks

unused devices: <none>

上のような場合は、/dev/md0 は使用済みなので、

> sudo mdadm --assemble /dev/md0 /dev/sdd6
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: /dev/md0 is already in use.

エラーが出ます。そんなときは、未使用のmd2を指定する。

> sudo mdadm --assemble /dev/md2 --run /dev/sdd6

 

あと、webを検索すると、raid構築時のコマンドオプション"--run" がついていない例がよくあります。その場合、デバイスが”inactive” の状態で認識される場合があり、マウントできませんので、"--run" は付けて置くのがよい。もっというと、"--force" も付けたほうか良いのかも。あとは、リードオンリー(-o オプション)で使うとか。

> sudo mdadm --assemble /dev/md2 --force --run -o /dev/sdd6

> sudo mount /dev/md0 ws500

mount: /media/ws500: WARNING: device write-protected, mounted read-only.

 

実際やりながら、動かなければ色々試せば良いのかも。