ハードディスクの交換


ハードディスクを交換する際に, OS をクリーンインストールする気ならあまり気にすることはありませんが,できれば交換前の状態をそのままにして移行したいものです。それには Linux で普通につかわれる dd コマンドが簡単です。ただし, dd は失敗すると元のデータを破壊する恐れがあります。十分気をつけましょう。

移行後のハードディスクのサイズは移行前のハードディスクのサイズ以上である必要があります。もう少し正確に書くと,以降前のコピーするパーティションサイズの合計 + α 以上必要です。 "+ α" というのは実データ以外にも容量が必要だからです。

ここでは移行前と移行後のハードディスクの容量が同一の場合に完全コピーする方法ついて記述します。一部のパーティションだけをバックアップする場合はもう少し細かい作業が必要になります。

サイズの等しい移行前後のハードディスクの他に,dd を使える OS の Live CD を用意します。 Ubuntu でも KNOPPIX でも FreeBSD でも好きなものを使えば良いです。それと, Live CD を使うので光学ドライブも当然必須です。また,パソコンの筐体にハードディスクが 2 つ取り付けることが出来ない場合は,内臓ハードディスクを USB や eSATA で外付けにできるキットが別途必要になります。大体数千円で購入できます。

まずハードディスクを両方取り付けた状態で, Live CD からブートして OS を立ち上げます。ハードディスクがマウントされている場合はアンマウントします。後は dd でコピーするだけです。

# dd if=/dev/sda of=/dev/sdb bs=16M

ただし, /dev/sda は移行前のハードディスク, /dev/sdb は移行後のハードディスクをそれぞれ指すものとします。自分の環境に合わせて変更する必要があります。これを逆にするとデータがすべて飛ぶので注意が必要です。また,既に述べたようにハードディスクのサイズが同一である必要があります。

ブロックサイズは適当に 16 MiB としていますが,特に理由はありません。好きな値を指定してください。省略すればデフォルトの 512 byte です。ただしデフォルトでは値が小さすぎて非常に遅いです。ちなみにある同一環境下で 40GB のハードディスクのコピーにかかった時間は, bs=16M で 9 分 33 秒, bs 省略 (bs=512) で 21 分 50 秒 でした (小数点以下切り上げ,繰り返し試行なし)。