clone-hdd
update 2012-10-26

概要

HDD clone や Partition clone ツールを使ってブート可能な HDDを作成する。

使用ツール

1.Partition Wizard を使用
http://www.partitionwizard.com/partition-wizard-bootable-cd.html

フリーソフトで使いやすい。
diskコピー、partitionコピーならこのソフトで十分である。

2.Windows標準のイメージバックアップとリストアを使用
http://hrn25.sakura.ne.jp/win/system-restore/system-restore.html

標準なので他のツールを使う必要がない。(ただし、リストア時には他のHDDを指定するので、「コピー元」、「バックアップ」、「コピー先」として3台のHDDを使用する)
diskコピー、partitionコピーという配慮が無く、イメージファイルで処理を行なう。

3.Linux ddコマンドを使用

dd コマンドを使用すれば、diskコピー、partitionコピー、sectorコピー、MBRコピー、イメージファイル作成によるバックアップ、リストアなど、ほとんどの処理が可能。
※Windows環境で使用できる dd コマンドツールもある。
http://www.chrysocome.net/dd



HDD clone (HDD全領域をコピー)
MBRも含めたHDD全領域をコピーしてboot可能なHDDを作成する。

clone1.png



Partition clone

(1) システム領域 および boot領域をコピー

※システム領域:bootmgr、BCDフォルダのある領域。
※boot領域:Windowsをインストールした領域。
コピー先(HDD1)のMBRは、コピー元(HDD0)の446バイトだけコピーする。
clone2.png

(2) boot領域のみをコピー
コピー先(HDD1)のMBRは、コピー元(HDD0)の446バイトだけをコピーする。
boot情報は bcdbootコマンドで作る。
clone3.png



ddコマンドでのdiskコピー(disk clone)

dd if=/dev/sda of=/dev/sdb bs=1M conv=noerror,sync
※以上でコピーは完了である。ただし、後述の「clone HDDで起動できない場合の対応」を参照。

bsは一度に読み書きするバイト数。(bsを省略するとデフォルトの 512バイトが適用される。)
1K=1024, 1M=1024*1024, 1G=1024*1024*1024
convはファイル変換方法を指定する。複数のオプションはコンマ区切りで指定する。
noerrorはreadエラー(不良セクタ)を無視するオプション、
syncは読み込めなかったセクタをNULLで埋めるオプション。

ddコマンドでのクローンはクローン元とクローン先のHDDは同容量になる。
クローン先のHDDの方が大きい場合、残りは未割り当て領域になる。



ddコマンドでのpartitionコピー(partition clone)

(1) コピー先のHDD1を接続して「ディスクの管理(diskmgmt.msc)」を使用して、必要なパーティションを作成しておく。

(2) MBRの446バイトをコピーする。(447〜512までの64バイトはHDD1のパーティション情報なのでコピーしない)
dd if=/dev/sda of=/dev/sdb bs=446 count=1

(3) システムパーティション(「システムで予約済み」)のコピー
dd if=/dev/sda1 of=/dev/sdb1 bs=1M conv=noerror,sync

(4) ブートパーティション(「Windowsインストール領域」)のコピー
dd if=/dev/sda2 of=/dev/sdb2 bs=1M conv=noerror,sync

(5) 以上でコピーは完了である。ただし、後述の「clone HDDで起動できない場合の対応」を参照。

※「Windowsインストール領域」のみをコピーする場合は次のようになる。
dd if=/dev/sda2 of=/dev/sdb1 bs=1M conv=noerror,sync


clone HDDがエクスプローラに表示されない場合の対応

「ディスクの管理」で見ると「オフライン」になっている。
「ディスク1」がオフラインになっている場合は、ディスク1を右クリックして「オンライン」に変更する。
offline1.png
offline2.png

コマンド処理で行なう場合は diskpartコマンドで次のように入力する。
> diskpart
DISKPART> list disk
DISKPART> select disk 1
DISKPART> online disk
DISKPART> exit
>



clone HDDが起動できない場合の対応


※ブート情報(MBR、bootmgr、BCDフォルダの設定)の修正を必要とする場合がある。
※作業はインストールDVD(またはシステム修復ディスク)でPC起動して行なう。

ケース1:クローンHDDを単独で起動するとBIOS段階で、「Reboot and Select proper Boot Device or Insert Boot Media(ブート可能なデバイスをセットしてください)」という意味のメッセージが表示される。

インストールDVD(またはシステム修復ディスク)でPC起動し、「コマンドプロンプト」で作業する。
diskpart を起動して partition 1 をアクティブにする。
> diskpart
DISKPART> list disk
DISKPART> select disk 0
DISKPART> list partition
DISKPART> select partition 1
DISKPART> active
> exit



ケース2:クローンHDDを単独で起動すると「Windowsデバイスマネージャ」が表示され、コンピュータの修復が要求される。
状態:0xc000000e と表示されている。

インストールDVD(またはシステム修復ディスク)でPC起動し、「システム回復オプション」を進めると「スタートアップオプションに問題が見つかりました」、「スタートアップを修復して再起動する」と表示されて自動的に修復が行なわれる。
PC再起動すると正常に起動できるようになる。



ケース3:「ケース2」を行なっても正常に起動できない場合の対応。

インストールDVD(またはシステム修復ディスク)でPC起動し、「コマンドプロンプト」にて bcdedit コマンドでブートマネージャを確認して、「システムパーティショ ン」(bootmgrファイルのあるパーティション)および「ブートパーティション」(Windowsフォルダのあるパーティション)について下記の3つ のデバイス パーティションを正しく修正する。
※例:「システムパーティション」は「C」、「ブートパーティション」は「D」の場合の修正例。
bcdedit /set {bootmgr} device partition=c:

bcdedit /set {default} device partition=d:
bcdedit /set {default} osdevice partition=d:

※参考サイト(マイクロソフト)。日本語翻訳は適切ではないので英文を参照する。
Error message when you restart Windows Server 2008 R2 after you perform a full OS recovery: “Windows failed to start. Status: 0xc000000e”
http://support.microsoft.com/kb/2261423/en



ケース4:「ケース3」を行なっても正常に起動できない場合の対応。

ブート情報を作成し直してみる。
インストールDVD(またはシステム修復ディスク)でPC起動し、「コマンドプロンプト」で作業する。
diskpartを起動してシステムパーティションを active にする。
list disk
select disk 0  ※disk番号は環境に応じて指定すること。
list partition
select partition 1 ※partition番号は環境に応じて指定すること。
active
exit
ブート情報を作成する。
bcdboot d:\windows /l ja-JP ※ドライブレターは環境に応じて指定すること。
exit
PCを再起動する。



UUIDの確認、変更
※UUID:Universally Unique IDentifier(世界でただ一つのID)

diskpart コマンドで select disk 0 のようにdisk番号を指定して uniqueid disk のように指定して確認する。
UUIDの変更は  uniqueid  disk  id=887A4C34 のように uuid を指定する。
DISKPART> select disk 0
DISKPART> uniqueid disk
ディスク ID: 887A4C34

DISKPART> uniqueid disk id=887A4C34
 
Linuxの場合は blkid コマンド、 tune2fs コマンドを使用する。
全てのデバイスについて一覧表示する
# blkid
デバイスを指定して表示する
# blkid /dev/sda1

tune2fs コマンド(ファイルシステムのパラメータ調整)を使用する
# tune2fs -l /dev/sda1

UUIDの変更は次のようにUUIDを指定する
# tune2fs -U 51e1f2e1-861d-4cb0-8045-b92f7938c0bd /dev/sda1

UUIDの生成ツール
WindowsはマイクロソフトのGUIDGENを使用。
ダウンロード:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17252
自己解凍してguidgen.exeを実行すれば4つの形式のuuidが作成される。
「Copy」ボタンでクリップボードにコピーして利用できる。
guidgen.png

Linuxの場合はuuidgenコマンドを使用。
# uuidgen



dd コマンドの使用例

(1) HDD cloneイメージファイルとして作成する場合
dd if=/dev/sda of=/dev/sdb/disk1.img
※圧縮する場合は
例: disk1.img.gz を作成する場合
gzip disk1.img
例: disk1.img.bz2 を作成する場合。
bzip2 disk1.img

(2) Partition Cloneイメージファイルを作成する場合
dd if=/dev/sda1 of=/dev/sda2/disk2.img
※圧縮する場合は
gzip disk2.img

(3) イメージファイルからリストアする場合
HDD丸ごとのイメージファイルをリストアする。
dd if=disk1.img of=/dev/sda
パーティションのイメージファイルからリストアする。
dd if=disk2.img of=/dev/sda1

(4) セクターコピー
bs=512 を指定すればセクターコピーとなる。
ただし、コピーに時間がかかる。

(5) MBRを mbr.img ファイルとしてsaveする
dd if=/dev/sda of=/dev/sda1/mbr.img bs=512 count=1

(6) MBRをゼロで埋める
dd if=/dev/zero of=/dev/sda bs=512 count=1

(7) HDDをゼロで埋める
dd if=/dev/zero of=/dev/sda

end of list