物理 Windows を KVM のゲストに p2v
〜 今まで使っていた Windows を動作可能状態でアーカイブ 〜

2015-11-21 作成 福島
TOP > tips > winp2v
新しい Windows PC を用意すると、今まで使っていた Windows PC の設置場所が無くなり、邪魔になります。
今まで使っていた Windows PC を廃棄すれば良いのですが、しばらくは新しい Windows PC との共存となります。
そこで、今まで使っていた Windows PC を仮想化 (KVM) して、本体は廃棄します。

あるいは、ハードディスクだけを取り替えて、新しい Windows をインストールしても良いでしょう。


1. 旧 Windows PC のボリュームを縮小化
後述の VHDX ファイルに変換するとき、変換後のファイルサイズを最小にするために、旧 Windows PC で EaseUS Partition Master Free を使用してボリュームを縮小します。
VHDX ファイルの作成先の容量や、転送時のスピードに余裕がある場合は縮小しなくても構いません。

Windows Vista から、HDD のボリュームを縮小する機能が付きましたが、あまり縮小されません。
そのため、このツールを使用します。

新 Windows PC に HDD を USB 接続してからでも縮小できるので、旧 Windows PC がハードディスクだけになっていても大丈夫です。
2. 旧 Windows PC のディスクを USB ディスク化
旧 Windows PC の HDD を取り出して、外付けの USB ケースに入れます。
一時的に使用するだけなので、安いものや手軽に購入できるもので OK です。
私は、手元にあったケース (過去に何かのキャンペーンで貰ったもの) を使用しました。
3. 新 Windows PC を用意して旧 Windows PC のディスクを接続
新しい Windows PC を用意します。
今まで使っていた PC に HDD を交換して用意しても良いし、家電量販店で購入したプリインストールの Windows PC でも構いません。

普通に Windows が起動する状態の PC に、旧 Windows PC の HDD が入った USB ケースを接続します。
※前述の「1. 旧 Windows PC のボリュームを縮小化」を実施しなかった場合は、ここで縮小化を実施しても構いません。
4. disk2vhd で旧 Windows PC のディスクを VHDX ファイルに変換
disk2vhd を使用して USB ディスク化された旧 Windows PC の HDD を VHDX 形式のファイルに変換します。

disk2vhd を使う利点は、「ボリュームを指定可能」と「変換ファイルの圧縮」です。
Linux の virt-p2v や dd (dd for windows を含む) では、ハードディスク全体をダンプしてしまうので、ゲスト OS の保存先に余裕がない場合は使用できません。

この disk2vhd は、そもそも既存 Windows を Hyper-V のゲストとするためのものなので、KVM ではなく Hyper-V を使用する場合は、後述の作業は不要です。

disk2vhd では変換対象としてボリューム (ドライブレター) を指定できますが、そのボリュームだけでなく、ディスク全体が対象になります。
このため、KVM のゲストとして動作した時、ディスクに未使用の領域があれば、その領域を新規に確保することも可能です。
5. 旧 Windows PC の VHDX ファイルを qcow2 ファイルに変換
作成した VHDX ファイルを KVM のマシンに転送します。
Winscp や FTP 、Teraterm の SSH SCP 機能等、バイナリ転送できれば何を使用しても構いません。

転送した VHDX ファイルは、KVM でそのまま実行することはできないので qcow2 形式に変換します。
$ qemu-img convert -O qcow2 OldWindows.VHDX OldWindows.qcow2
6. 旧 Windows PC の qcow2 ファイルを KVM のゲストとして稼動
作成した qcow2 ファイルを使用して KVM のゲストを普通に構築します。