各種仮想化ソフトウェアで作成した仮想マシンは、ホスト上では、通常、1つのフォルダ(ディレクトリ)単位で保存され、仮想ディスクイメージについては、VM Server/VirtualBoxなら.vdi、VMwareなら、.vmdk、Virtual PCなら、.vhd、Parallelsなら.hddといったディスクイメージ名を拡張子としたファイル、QEMUなら、.img(.qed/.qcow/.qcow2)として保存されます。
仮想化ソフトウェアは、他の仮想化ソフトウェアで作成した仮想ディスクを直接、または間接的に再生することも、物理PC内にインストールされたOSを仮想マシン用に変換(P2V/Physical to Virtual)することも、他の仮想マシン用ディスク間で変換(V2V/Virtual to Virtual)することもできるようになっていることも珍しくありません。
例えば、VMwareでは、Microsoft Virtual PC/Virtual ServerのVHDやSymantec LiveState Recoveryを直接再生できますし、VirtualBoxに至っては、VMDK(VMware)、VHD(Virtual PC/Virtual Server/Hyper-V)、HDD(Parallels)、QCOW2/QCOW/QED(QEMU)...etc.の再生だけでなく、こうした仮想マシンの作成をもサポートしており、仮想化ソフトウェア互換ディスクイメージ(OVA/OVF)のインポートも可能となっています。
ホスト上に1つのフォルダ(ディレクトリ)単位で保存された仮想マシンフォルダ内には、仮想ハードディスクイメージ、構成ファイル、ログファイルなどがある場合があります。
各種仮想化ソフトウェアごとの代表的な、または、専用の仮想ハードディスクイメージは、VirtualBoxがVDI、VMware Player他VMware製品がVMDK、Virtual PCやHyper-VがVHD、ParallelsがHDD、QEMUがIMG(QCOW2,QCOW,QED)...etc.のようになっており、この内、ParallelsとMac用VMware Fusion以外は、オープンソース、または、無償のプロプライエタリソフトウェアです。
複数の仮想化ソフトウェアの仮想マシンを利用している場合、往々にして他の仮想マシンのディスクイメージに変換したいと思うケースが出てきます。
そんな時、仮想ディスクイメージ間で変換ができると、とても便利です。
QEMUは、qemu-img convertコマンドによってraw、IMG(QCOW2)、VHD、VMDK、VDI、HDDなどの間で変換することができます。
また、VirtualBoxについては、コマンドラインで利用可能なVBoxManageコマンドのサブコマンドclonehdによって、VMwareでは、無料登録の上、配布される無償のVMware vCenter Converter Standaloneを別途入手、使用することで複数の種類のホスト型仮想マシン用ディスクイメージ間で変換を行うことができます。
よって既にVirtualBoxを使っている場合は、まず、真っ先にVBoxManageの内部コマンドであるclonehdコマンドを利用して仮想マシンディスクイメージ間の変換を行ってみるとよいでしょう。
一例としてVirtualBoxの場合、次のようにします。
(VBoxManage clonehdコマンド参照)
VirtualBox_PATH > VBoxManage clonehd 入力file 出力file --format 変換対象ディスクイメージフォーマット
尚、普通、仮想ディスクイメージファイルには目印としてVirtualBoxでは、.vdi、VMware Playerでは、.vmdk、Virtual PCでは、.vhdという拡張子を付けます。
ここで言う[変換対象ディスクイメージフォーマット]部分には、ドットをとったもの(大文字/小文字不問でVDI/VMDK/VHD...etc.)を指定します。
また、QEMUの場合には、次のようにします。(.imgを.vmdkに変換する例)
これら以外にも複数種類の仮想マシンのディスクイメージ変換用のフリーソフトウェアもあるようです。
先のVMware vCenter Converter Standaloneは、V2Vだけでなく、P2Vもサポートしていますし、VirtualBoxのサーバ版VM Serverも同様です。
数少ない仮想化ソフトウェアのデメリットの内の1つにディスクイメージサイズの膨張があります。
一般に仮想化ソフトウェアは、仮想ハードディスクイメージのサイズについて「可変」と「固定」を選択でき、前者は、実際の使用領域が、別途指定する「最大サイズ」を上限として大きくなっていき、後者は、最初から別途指定した「ディスクサイズ」が確保された状態で作成されます。
一方、「可変」だとディスクアクセスが徐々に重くなっていく傾向があり、「固定」にすると最初からディスクがいっぱいになるまでの間、基本的にディスクアクセス速度が安定します。
このように一長一短あるので極端に言えば、1つのゲストOSだけをとことん使い倒すなら「固定」の方が、いろいろ試すなら「可変」にする方がよいのではないでしょうか。
また、「可変」にしろ、「固定」にしろ仮想マシンでは、その内部でファイルやフォルダの削除を行ったところで物理ディスクのようにその分のディスクスペースが空く(空き領域が増える)ことはなく、(一度でも)追加した分だけ大きくなる一方という性質があります。
一部を除き、仮想化ソフトウェアは、普通、何らかの形でディスクイメージサイズの圧縮や伸張をサポートしています(が、拡張したディスクボリュームやその領域のファイルシステムは設定されないのでゲストOS側でdiskpartやparted/GPartedなどで論理ボリュームであれば、lvmのlvextendコマンドなどで対応する必要があります)。
よって同じゲストOSをインストールした仮想マシンを継続的に使用(常用)する場合には、時折、仮想ディスクを圧縮するとよいでしょう。
例えば、VirtualBoxで仮想ディスクイメージをリサイズする場合、1つの例としては、次のようになります。
(VBoxManage modifyhdコマンドの詳細)
VBoxManage modifyhd 対象仮想ディスクイメージ --resize MB単位サイズ
qemu-imgコマンドのサブコマンドresizeを使うこともできます。
尚、Windows 9系とNT系、Linux/BSD/Mac OS Xとデータ共有している外付けHDDでFAT32でフォーマットしている場合、1ファイル4GB未満など扱えるファイルサイズの限界が(仮想マシン・仮想ハードディスク容量としては)比較的小さいので要注意です。
なぜなら、仮想マシンフォルダやファイルの移動やコピーに起因して最大サイズが勝手に初期設定以上に膨張し、サイズが大きすぎて拡張や圧縮ができないとか、仮想マシンを起動しようにも起動できず、果ては削除さえできなくなることもあるからです。
この時、例えば、VMware Playerで[仮想マシン設定]画面から[ハードディスク]を選択、[ユーティリティ]から[コンパクト]、[拡張]などのメニューを選択しても、おそらく機能しません。
ただ、こうした場合でも構成ファイル(.vmx)に設定を追加するか、カラの仮想マシンに全ファイルをコピーすると云った対策を講じることで復旧できるでしょう。