3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

VirtualBoxでスナップショット後の仮想イメージをコピーしたい

現在PCでVirtualBox(v3.2.4)でスナップショット有りの仮想環境を作っているんですが、その環境を別のPC上のVirtualBoxでも使いたいということになりました。(今回の肝はスナップショット後の環境を移せるかということです。)

仮想HDDファイルだけコピーし、別PC上で新規に仮想マシン作成しマウントすると起動はするのですが、スナップショット後の情報が反映されないため意味がありません。

とりあえず仮想HDDファイルと、スナップショットファイル、C:\Documents and Settings\ユーザ名\.VirtualBox 配下の設定ファイルを、別PC上にコピーして起動をかけたんですが、ダメでした。エラーになって起動しません。

で、VirtualBoxには仮想アプライアンスのエクスポートという機能があるみたいなので、これを使ってみました。

エクスポート、インポート時には結構時間がかかります。ただ、プログレスバーには10時間とか表示されますが、実際は数十分で処理が完了します。

これで、コピー先のVirtualBoxで起動したところ、下記のようなエラーが。。

The vm session was closed before any attempt to power it on.

インポートした仮想マシンの設定を見直したところ、スナップショットのパスが移行元PCと違っているため、これを修正したら無事に起動できるようになりました。

ただし、スナップショット自体は失われてします。

移行元PCでの「最新の状態」がコピーされるようなイメージですね。

スナップショット自体をコピーする方法は結局分かりませんでした。

余談ですが、VirualBoxで同一PC内で仮想HDDイメージをコピーしたいときは、普通にコピーしただけでは内部的な仮想HDDのIDがコピー元と被るため、VBoxManage clonevdi コマンドで気ピーする必要があります。

ただし、この場合被っている基の仮想HDDを VirutualBox の仮想HDDリストから除去してしまえば実は使えたりします。

また、スナップショットのファイル名はUUID形式となっているため、どの仮想マシンで使ってるのか分かりにくかったりします。

そういう時は、C:\Documents and Settings\ユーザ名\.VirtualBox\Machines\仮想マシン名\仮想マシン名.xml の Snapshots → AttachedDevice type="HardDisk" → Image uuid を見ればどのファイルがどの仮想マシンと結びついてるか分かったりします。

VirtualBoxを使い始めてしばらく経ちましたが、仮想マシン、仮想HDD、スナップショットの取り扱いがややこしいのがちょっと残念です。

VirtualPCの時はただ単に仮想HDDさえ有ればよかったわけですが、VirtualBoxでは仮想マシン自体の設定も考慮に入れておかないといけませんね。

また、スナップショットも移行が難しいため、メインとしてはあまり使わない方が...というのも正直なところです。スナップショット使うなら仮想マシン設定情報自体を適切に管理しとかないといけませんね。

参考:

VirtualBoxの仮想マシンをコピー - J備忘録