症状
AsustorのNASが調子悪くなったのでHDDからデータを吸い出したい。今回はどのHDDか特定できないような壊れ方だったので1台づつデータを吸い出して確認することにした。
解決法
PCでデータを吸い出すためにLinuxを使う。今回はUbuntuのLive CDを使う。
読み出す前に決めておくこと
Ubuntu Desktop 日本語 Remixのダウンロード
最近のUbuntuのインストールディスクは起動後にそのままCD(というかDVD)でお試し実行するか、HDDにインストールし直すかを選択することができる。お試しであれば既存環境は壊れないのでWindowsマシンでも安心だ。(後述のHDDの操作を誤ると当然Windowsが破壊される可能性もある)
イメージファイルをDVDに焼き、ディスクをPCに挿入し起動するとUbuntuが立ち上がる。書き込みにはimgburnなどを使用するといい。最近のLinuxは普通にGUIで立ち上がるのでWindowsしか触ったことのない人でもそこまで抵抗なく使えるはず。
Ubuntuが起動したら、例のHDDをUSB経由でPCに接続する。Terminalを起動し、以下のようにコマンドを入力。
ubuntu@ubuntu:~$ dmesg | tail
[ 348.471899] sd 8:0:0:0: [sda] Write Protect is off
[ 348.471909] sd 8:0:0:0: [sda] Mode Sense: 28 00 00 00
[ 348.473038] sd 8:0:0:0: [sda] No Caching mode page found
[ 348.473046] sd 8:0:0:0: [sda] Assuming drive cache: write through
[ 348.473943] sd 8:0:0:0: [sda] Very big device. Trying to use READ CAPACITY(16).
[ 348.522484] sda: sda1 sda2 sda3 sda4
[ 348.524593] sd 8:0:0:0: [sda] Very big device. Trying to use READ CAPACITY(16).
[ 348.526943] sd 8:0:0:0: [sda] Attached SCSI disk
[ 348.760906] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
[ 348.773247] EXT4-fs (sda1): mounted filesystem without journal. Opts: (null)
HDDはsdaとして認識されているようだ。パーティションはsda1-4まである。
dmesgの見かた
[sda] Attached SCSI disk と出れば、USB経由でも1台のディスクとして認識できている。ここに何も出ないときは、ケーブル・電源・USBポートを疑う。接続直後のログなので、差し直してから dmesg | tail をもう一度見る。sda: sda1 sda2 sda3 sda4 はパーティションの一覧だ。数字が出ていればパーティションテーブルまでは読めている。1つも出ないなら、テーブル自体が飛んでいる可能性がある。ubuntu@ubuntu:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
デバイス Start 最後から セクタ Size タイプ
/dev/sda1 2048 524287 522240 255M Linux filesystem
/dev/sda2 524288 4718591 4194304 2G Linux RAID
/dev/sda3 4718592 8912895 4194304 2G Linux RAID
/dev/sda4 8912896 15628052479 15619139584 7.3T Linux RAID
いた。8TBのHDDで間違いない。それぞれのパーティションを見ると/dev/sda4が7TB以上あるので、データがあるのはこのパーティションだ。
パーティション構成の読み方
Linux RAID(パーティションコードfd)の領域は、単体では普通のファイルシステムとしてマウントできない。mdadmでアレイに組み上げてからマウントする。sudo mdadm --examine /dev/sda4 を使うと、そのパーティションがアレイの何番目か、レベル(raid1/raid5など)、必要デバイス数を確認できる。組み上げる前にここを見ておくと、あと何本必要かが分かる。データのあるディスクを/mntにマウントしてみる。
ubuntu@ubuntu:~$ sudo mount /dev/sda4 /mnt
mount: unknown filesystem type 'linux_raid_member'
linux_raid_memberってやつのファイルシステムがわかんねーぜと怒られる。でも、見る感じRAIDだな。ソフトウェアRAIDのパッケージを使ってRAIDのHDDとして読むことに。
linux_raid_memberとは
/dev/md2 の番号はこちらで決めてよい。空いている番号を使えばよく、番号自体に意味はない。あとでマウントするときの名前にすぎない。ubuntu@ubuntu:~$ sudo mdadm --assemble /dev/md2 /dev/sda4
プログラム 'mdadm' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt install mdadm
入ってないらしいので、追加でインストールする。
ubuntu@ubuntu:~$ sudo apt install mdadm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
default-mta | mail-transport-agent
以下のパッケージが新たにインストールされます:
mdadm
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
394 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,200 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 mdadm amd64 3.3-2ubuntu7 [394 kB]
394 kB を 0秒 で取得しました (2,896 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ mdadm を選択しています。
(データベースを読み込んでいます ... 現在 174850 個のファイルとディレクトリがインストールされています。)
.../mdadm_3.3-2ubuntu7_amd64.deb を展開する準備をしています ...
mdadm (3.3-2ubuntu7) を展開しています...
ureadahead (0.100.0-19) のトリガを処理しています ...
systemd (229-4ubuntu4) のトリガを処理しています ...
doc-base (0.10.7) のトリガを処理しています ...
doc-base ファイルを 32 個変更, doc-base ファイルを 4 個追加 を処理中...
man-db (2.7.5-1) のトリガを処理しています ...
mdadm (3.3-2ubuntu7) を設定しています ...
Generating mdadm.conf... done.
update-initramfs is disabled since running on read-only media
/usr/sbin/grub-probe: エラー: failed to get canonical path of `/cow'.
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
ureadahead (0.100.0-19) のトリガを処理しています ...
systemd (229-4ubuntu4) のトリガを処理しています ...
インストールが完了したので再度実行。
ubuntu@ubuntu:~$ sudo mdadm --assemble /dev/md2 /dev/sda4
mdadm: /dev/md2 has been started with 1 drive (out of 2).
RAIDとして追加できた。この段階でRAIDアプリケーションから読めるが、通常通りのアクセスができるようにマウント。
マウントするときの注意
sudo mount -o ro /dev/md2 /mnt のように読み取り専用でマウントする。書き込みを許すと、ジャーナルの再生などでアレイに変更が入る。sudo file -s /dev/md2 や lsblk -f /dev/md2 で形式を確認する。NASによってはbtrfs(Synologyなど)が使われている。ls -la /mnt と du -sh /mnt/* で中身の量を把握してからコピーを始める。コピーは rsync -a --info=progress2 /mnt/ /コピー先/ のように進捗が見える形がよい。ubuntu@ubuntu:~$ sudo mount /dev/md2 /mnt
できた。これでRAIDのHDD内にあるファイルを見ることができた。さて、これからコピーしてちゃんとすべてのファイルが取り出せるかどうか・・・・・・・
2016/11/12追記
RAIDのドライブによってはアレイが構成できないと怒られる。
mdadm: md device /dev/md2 does not appear to be active.
そんなときは1ドライブで無理やり実行する-Rオプションを付ける。
mdadm -R /dev/md2
mdadm: started /dev/md2
**組み上げに失敗するときの切り分け**
- `-R`(--run)は「構成が揃っていなくてもとりあえず動かせ」という指示だ。不足ドライブがある状態でアレイを開始するときに使う。
- RAID1(ミラー)なら1本でも中身は揃っているので読めることが多い。RAID5なら1本欠けまでは読めるが、2本欠けると原理的に復元できない。RAID0(ストライプ)は1本欠けた時点でデータが分断され、読めない。
- `mdadm --examine` でレベルと必要デバイス数を確認し、手元の本数と突き合わせてから実行する。
- 状態がdegradedでも、読み取り専用でマウントできることがある。まず読めるかを試し、無理なら `ddrescue` などで丸ごとイメージを取ってから、そのイメージに対して再挑戦するのが安全だ。
- どうしても組み上がらないときの `mdadm --create` での作り直しは書き込みを伴う。復旧対象の原本では行わない。
※ 本ページのAmazonリンクにはアフィリエイトタグ(toobf6-22)が付いている。
🤖 このページにはAIエージェント(ノア)による編集・加筆が含まれます。内容の正確性は保証できないため、重要な判断は一次情報でご確認ください。