0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terastationのデータサルベージ

Last updated at Posted at 2025-03-04

はじめに

少し前にTerastationを手に入れて自宅のNASとして使っています。
中古品のためいつ壊れてもおかしくありません。
もし壊れた場合のデータ取り出し方法をまとめておきます。

主に想定しているのはTeraStationの基盤が壊れてデータにアクセスできなくなったパターンです。
また、ありがちなHDDも一緒に壊れた時の取り出し方も併せて書いています。

TeraStationはLinux(Debian?)ベースのOSが使われているようであり、データサルベージ作業にはUbuntu Server 24.04.2 LTSを使用します。

今回記事にするのは4つのパターンです
・RAID6で基盤のみ故障の場合
・RAID6で基盤+HDD故障の場合
・RAID10で基盤のみ故障の場合
・RAID10で基盤+HDD故障の場合

検証機器:TS-XH8.0L/R6

前提知識

TeraStationのXシリーズはHDD内を6つのパーティションに分けて使います。

パーティション1がboot領域
パーティション2がOS領域
パーティション3は不明
パーティション4も不明
パーティション5はswap領域
パーティション6がデータ領域

そのためデータサルベージに必要なものはパーティション6、つまりsda6sdb6sdc6sdd6です。

詳細は別の記事の「おまけ」部分に書いたので気になる人は見てください。

今回は記事にあたりtest_dirという共有ディレクトリを作り、その中にtest.txtというファイルを置いています。このテキストファイルが見えればサルベージOKとします。

スクリーンショット 2025-03-03 22.01.49.png

RAID6で基盤のみ故障の場合

1. TeraStationからHDDを摘出してPCに接続

TeraStationではSATA HDDが4台使われていると思いますので4台ともSATA接続します。
SATA-USB変換ケーブル等があればUSB経由でも行けると思います。

2. Ubuntu Serverの起動

適当なディスクにUbuntu Serverをインストールして起動させてください。

3. rootでRAIDの状態確認

root@ubu24:~# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] [raid0] [raid10] 
md124 : active (auto-read-only) raid6 sdd6[3] sdc6[2] sda6[1] sdb6[0]
      946934784 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md125 : active (auto-read-only) raid1 sdd2[3] sda2[6] sdc2[5] sdb2[4]
      4999156 blocks super 1.2 [4/4] [UUUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active (auto-read-only) raid1 sdd5[3] sda5[6] sdc5[5] sdb5[4]
      1000436 blocks super 1.2 [4/4] [UUUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sdd1[3] sda1[1] sdc1[2] sdb1[0]
      1000384 blocks [4/4] [UUUU]
      
unused devices: <none>
root@ubu24:~# 

今回はmd124でRAID6が問題なく組めているようなので、これをそのまま使います。

4. マウント

md124/mntにマウントします。公式曰くXFSなようなのでエラーが出る時は
-t xfsをつけても良いと思います。

root@ubu24:~# mount /dev/md124 /mnt

これで問題なく/mntでデータが見えると思います。

root@ubu24:~# cat /mnt/test_dir/test.txt 
this is a test file
root@ubu24:~# 

RAID6で基盤+HDD故障の場合

次は基盤と一緒にHDDが壊れたパターンです。
今回は記事のためにHDDを1本抜き、PCに3本接続した状態で試しています。

1. TeraStationからHDDを摘出してPCに接続

2. Ubuntu Serverの起動

ここまでは特に上と変わりません。

3. rootでRAIDの状態確認

root@ubu24:~# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md124 : inactive sdb6[0](S) sda6[1](S) sdc6[2](S)
      1420403178 blocks super 1.2
       
md125 : inactive sdb2[4](S) sda2[6](S) sdc2[5](S)
      14997504 blocks super 1.2
       
md126 : inactive sdb5[4](S) sdc5[5](S) sda5[6](S)
      3001308 blocks super 1.2
       
md127 : inactive sdb1[0](S) sda1[1](S) sdc1[2](S)
      3001152 blocks
       
unused devices: <none>
root@ubu24:~#

md124でRAID6がうまく組めなくなっていることが分かります。

4. アクティブアレイの停止

mdadmコマンドによりアレイの停止を行います。

root@ubu24:~# mdadm --stop --scan

--scanをつけることでアレイのリストを/proc/mdstatから得るようです。
(詳細はman mdadmを参照)

5. RAID6を編成

問題のないsda6sdb6sdc6を使ってRAID6を再構成します。
これにはassembleオプションを使用します。
manで見ると分かりますが、「以前に作成されたアレイの構成情報を元に1つのアクティブアレイを編成する」オプションです。

root@ubu24:~# mdadm --assemble --run /dev/md100 /dev/sda6 /dev/sdb6 /dev/sdc6
mdadm: /dev/md100 has been started with 3 drives (out of 4).
root@ubu24:~# 

このHDD1本無しの状態でmd100が問題なく作成できているかと思います。
md100という名前は適当です。

root@ubu24:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md100 : active raid6 sdb6[0] sdc6[2] sda6[1]
      946934784 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [UUU_]
      bitmap: 0/4 pages [0KB], 65536KB chunk

unused devices: <none>
root@ubu24:~# 

なおRAID6はHDDの故障に2台まで耐えられます。そのためsdc6も壊れてHDDが2台ダメになった時もほぼ同様のコマンドでいけます。
mdadm --assemble --run /dev/md100 /dev/sda6 /dev/sdb6

6. マウント

作成したmd100/mntにマウントします。公式曰くXFSなようなのでエラーが出る時は
-t xfsをつけても良いと思います。

root@ubu24:~# mount /dev/md100 /mnt

これで問題なく/mntでデータが見えると思います。

root@ubu24:~# cat /mnt/test_dir/test.txt 
this is a test file
root@ubu24:~# 

HDDの数が足りない状態で無理やりRAIDを再構築をしたHDDをTeraStationに戻すと「HDD broken」というハードウェア異常のアラームが出ます。
その場合はmdadm --add /dev/md100 /dev/sdd6のように足りないディスクを追加してあげると再構築の手間が省けます。

RAID10で基盤のみ故障の場合

ここからはRAID10で組んでいた時の手順になります。
基本的にはRAID6と同じですが、RAIDの組み方が少し異なります。

1. TeraStationからHDDを摘出してPCに接続

2. Ubuntu Serverの起動

ここまでは特に上と変わりません。

3. rootでRAIDの状態確認

root@ubu24:~# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10] 
md122 : active raid0 md123[0] md124[1]
      946932736 blocks super 1.2 512k chunks
      
md123 : active (auto-read-only) raid1 sdb6[1] sda6[0]
      473467590 blocks super 1.2 [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md124 : active (auto-read-only) raid1 sdc6[0] sdd6[1]
      473467590 blocks super 1.2 [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md125 : active (auto-read-only) raid1 sda5[4] sdb5[6] sdc5[5] sdd5[3]
      1000436 blocks super 1.2 [4/4] [UUUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active (auto-read-only) raid1 sda2[4] sdc2[5] sdd2[3] sdb2[6]
      4999156 blocks super 1.2 [4/4] [UUUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sdc1[2] sdd1[3] sda1[0] sdb1[1]
      1000384 blocks [4/4] [UUUU]
      
unused devices: <none>
root@ubu24:~#

TeraStationのXシリーズではRAID10を組んでいる場合
md122md123md124のRAID0
md123sda6sdb6のRAID1
md124sdc6sdd6のRAID1
の構成で組まれていることが分かります。
HDDに問題がなければ、このパターンはmd122をマウントするだけです。

4. マウント

md122/mntにマウントします。公式曰くXFSなようなのでエラーが出る時は
-t xfsをつけても良いと思います。

root@ubu24:~# mount /dev/md122 /mnt

これで問題なく/mntでデータが見えると思います。

root@ubu24:~# cat /mnt/test_dir/test.txt 
this is a test file
root@ubu24:~# 

RAID10で基盤+HDD故障の場合

1. TeraStationから4台のHDDを摘出してPCに接続

2. Ubuntu Serverの起動

ここまでは特に上と変わりません。

3. rootでRAIDの状態確認

root@ubu24:~# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10] 
md122 : inactive md123[0](S)
      473466566 blocks super 1.2
       
md123 : active (auto-read-only) raid1 sdb6[1] sda6[0]
      473467590 blocks super 1.2 [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md124 : inactive sdc6[0](S)
      473467726 blocks super 1.2
       
md125 : inactive sdc5[5](S) sdb5[6](S) sda5[4](S)
      3001308 blocks super 1.2
       
md126 : inactive sdb2[6](S) sda2[4](S) sdc2[5](S)
      14997504 blocks super 1.2
       
md127 : inactive sda1[0](S) sdb1[1](S) sdc1[2](S)
      3001152 blocks
       
unused devices: <none>
root@ubu24:~# 

md123はRAID1が問題なく組めている(sda6sdb6)ようですが
md124sdb6のみでRAID1が組めていないようです。
それに伴ってmd122md123md124のRAID0)も組めなくなっています。

4. アクティブアレイの停止

mdadmコマンドによりアレイの停止を行います。

root@ubu24:~# mdadm --stop --scan

先ほどと同じなので解説は省略します。

5. RAID1を再編成

まずは先ほど問題のなかったsda6sdb6でRAID1を構成します。
先ほどと同じくassembleオプションを使用します。
名前は適当にmd3としています。

root@ubu24:~# mdadm --assemble --run /dev/md3 /dev/sda6 /dev/sdb6
mdadm: /dev/md3 has been started with 2 drives.
root@ubu24:~# 
root@ubu24:~# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10] 
md127 : inactive md3[0](S)
      473466566 blocks super 1.2
       
md3 : active raid1 sda6[0] sdb6[1]
      473467590 blocks super 1.2 [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

unused devices: <none>
root@ubu24:~# 

md3は正常にActiveになっています。
md127が見えていますが、これがうまく組めていないデータ領域のRAID0です。

次にsdc6だけでRAID1を構成します。
名前は適当にmd4としています。

root@ubu24:~# mdadm --assemble --run /dev/md4 /dev/sdc6
mdadm: /dev/md4 has been started with 1 drive (out of 2).
root@ubu24:~# 

この状態でmd127も問題なく復旧しているかと思います。
もしダメな場合はmdadm --assemble --run /dev/md127 /dev/md3 /dev/md4
でRAID10が組めるはずです。

root@ubu24:~# cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10] 
md4 : active raid1 sdc6[0]
      473467590 blocks super 1.2 [2/1] [U_]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md127 : active raid0 md4[1] md3[0]
      946932736 blocks super 1.2 512k chunks
      
md3 : active raid1 sda6[0] sdb6[1]
      473467590 blocks super 1.2 [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

unused devices: <none>
root@ubu24:~#

なおsdb6も壊れてHDDが2台ダメになった時も同様の手順でいけるかと思います。
md3の作成のコマンドがmdadm --assemble --run /dev/md3 /dev/sda6になるだけです)

6. マウント

md127/mntにマウントします。公式曰くXFSなようなのでエラーが出る時は
-t xfsをつけても良いと思います。

root@ubu24:~# mount /dev/md127 /mnt

これで問題なく/mntでデータが見えると思います。

root@ubu24:~# cat /mnt/test_dir/test.txt 
this is a test file
root@ubu24:~# 

終わりに

一応問題なく稼働しているTeraStationから引き抜いて実験したので問題ないとは思いますがコマンドの実行は自己責任でお願いします。

当たり前ですが改めて記載します。
RAIDはバックアップではありません。

参考サイト:
https://boc.geninformatics.com/?p=515
https://nananeko.ti-da.net/e7460552.html
https://www.ioss.jp/sohodiy/mdadm8-1_5.php

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?