仮想ハードディスクイメージの実パーティションへの移植
Category : サーバ管理日記
Published by M-naka on 2013/1/19
 秋口に\5,980というセール価格で買えたIntelのSSD(120GB)にWindowsXP Professionalの仮想ハードディスクイメージを移植した。

 「とりあえず動けばいいや」で始めた仮想PCで、TV録画用領域に相乗り、仮想ハードディスクイメージで使っていたが、予想通りレスポンスが悪化の一途。移植先としてSSDを探していたら、丁度売り出しがあって入手できた、という経緯。前後での違いは、

【移植前】
 ハードディスク上に*.imgファイルの形で構築した、仮想ハードディスクイメージ。

【移植後】
 /dev/sdcXの実パーティション。

である。移植作業はいろいろ悩んだが、以下が最もシンプルと判明。



0.SSDをサーバに物理接続、fdiskでパーティションを作成。

1.仮想PCをシャットダウン。

2.コマンドで直パーティションに仮想ハードディスクイメージをコピー。
  dd if=<仮想HDDイメージファイル> of=/dev/sdcX

3.KVMの仮想マシンマネージャーで対象の仮想PCのハードディスク指定を直パーティションに変更。
 →この時点では「IDEドライブ」として指定(理由は後述)。

4.仮想PCを起動、パーティション変更ソフトでCドライブを拡張。

5.ダミーHDDイメージを作成(10MB等、容量は適当でOK)、「virtioドライブ」として追加、仮想PC上でvirtioドライバをインストール。

6.仮想PCをシャットダウン、KVMの仮想マシンマネージャーで「virtioドライブ」として直パーティションを指定し直す。



で、一通り終了。

 できれば最初からI/Oパフォーマンスの高いvirtioドライブとして登録したいところだが、WindowsXP側にデバイスドライバがないので、起動時にCドライブ相当が読めず、WindowsXPが起動できなくなる。一旦はIDEドライブとして指定し、ダミーHDD用にvirtioドライバをインストールすれば、それをCドライブ相当の読み込みにも使えるようになる。

 あと、移植前は20GBのイメージで、移植先は30GBのパーティション。このギャップを埋めるため、「システムドライブのパーティション拡張ができるソフト」を使った(Windows純正ツールでは不可のため)。窓の杜で探したところ、EASEUS Partition Masterフリー版があったのでこれを使い、問題なくCドライブが拡張できた。移植前後の差分10GBをDドライブ相当に回す手もあったが、Cドライブが割と逼迫気味だったので、Cドライブを拡張することにした。

 当然ながら最後に旧仮想ハードディスクイメージは削除。これで20GBの空きがハードディスク上にできた。

 移植後のレスポンスは率直に言って別次元。ベンチマークスコア上は同一SSD上に構築したWindows7 Enterprise(こちらは移植ではなくクリーンインストールし直し)には及ばないが、ここはXPのOSとしての限界の模様。