ディスクイメージを作成して復旧
ハードディスクが壊れてしまった場合、いったん全データをディスクイメージとして
コピーし、復旧作業を行った方が良い。
問題のあるディスクを直接操作することで、さらにデータが破損することを防ぐためだ。
Linuxを使えばこのディスクイメージの作成とデータの吸出しを簡単に行うことができる。
HDD 情報の把握
壊れた HDD のデバイスファイルは /dev/sda とする。まず fdisk でディスクの情報とパーティションを調査する。
オプション -l はパーティションテーブルを表示するオプション、-u は表示をセクタ単位とするオプションである。
[root@linux ~]# fdisk -lu /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0009e696
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 976773119 487873536 8e Linux LVM
fdisk の出力から、ディスクのサイズ(総セクタ数)と、パーティションの配置が分かる。この情報を元にディスクイメージ作成とマウントを行う。
なお fdisk でパーティションが表示できるのは MBR の場合だけである。
GPT (EFI GPT) の場合は、parted や gdisk を使ってパーティションを調べる必要がある。FreeBSD の場合は、gpart を使用する。
ディスクイメージの作成
壊れた HDD のディスクイメージを作成する。
以下のように dd を使うことで、ディスク全体を1つのファイルにコピーできる。
# dd if=/dev/sda of=/root/hdd.img ibs=512 obs=4k conv=sync,noerror count=976773168
オプション | 意味 |
---|
if | データの入力元 |
of | データの出力先 |
ibs | データの入力単位。セクタサイズ(512バイト)を指定する |
obs | データの出力単位。大きめのサイズ(4kバイト)を指定すると早くなる |
conv | sync,noerror はデータが読み込めなくても null パディングすること、 エラーを無視する |
count | データ長。入力単位で何個分のデータをコピーするか指定する ibsをセクタサイズとしているので、fdisk で調べた総セクタ数に合わせる |
skip=[block] | 入力の開始位置を指定されたブロックに移動してからコピー 予めパーティションの開始ブロックが分かっている場合はコレを指定すると mount 時の offset が不要になる |
パーティションのマウント
ディスクイメージからパーティションをマウントして、データを吸い出す。
以下は fdisk で調べた1つ目の Linux パーティションをマウントする例である。
# mount /root/hdd.img /mnt -t ext3 -o ro,loop,offset=1048576
オプション | 意味 |
---|
/root/hdd.img | ディスクイメージファイルの場所 |
/mnt | マウント先 |
-t [type] | パーティションのファイルシステム |
-o | オプション ro – 読み取り専用でマウントする loop – ループバックデバイスを使用して、ファイルをブロックデバイスにする指定 offset – fdisk で調べたパーティションの開始位置をバイト単位で指定。2048セクタ x 512バイトで 1048576 バイト |
マウントが成功すれば、あとはデータを吸い出すだけ。
Tips: FreeBSD の UFS パーティションをマウントする例
# mount hdd.img /mnt -t ufs -o ro,loop,ufstype=ufs2
Tips: FreeBSD でディスクイメージをマウントする場合は mdconfig
# mdconfig -a -t vnode -f hdd.img
md0
# mount -t ext3 -o ro,loop /dev/md0 /mnt
# cp -r /mnt /home/hoge/backup/
コピーが終わったらデタッチ
# mdconfig -d -u 0
フリーの MBR/GPT 編集ソフト
ソフト/パッケージ名 | 概要 |
---|
fdisk | MBRディスクのパーティションを設定する。version によっては 4Kセクタに対応していない |
gdisk | GPTディスクのパーティションを設定する。 fdisk の GPT 版なので fdisk を使用したことがある人なら操作方法はほとんど同じ。 |
parted | パーティション内のデータを保持したままコピーやサイズ変更、移動などができるなど、 fdisk などの単なるパーティションテーブル操作ツールとは少し異なる対話型のCUIツール |
testdisk | MBRを修正することで、パーティションテーブルを復元できるフリーソフト。さまざまな OS や File System に対応している。Download> |
Boot-Repair | ubuntu ベースの MBR/パーティション修復ツール。GUI ベースのツールなので、CUI に慣れていない方へはお勧めです。Download> |
参考
ぺけみさお>