VirtualBoxで仮想OS作ろうと思って、途中イメージファイルの格納形式がいっぱいでてきて分からなかったので調べてみました。
漁った内容をメモしときます。
新しい仮想ハードドライブで使用したいファイルのタイプを選択してください。もしほかの仮想ソフトウェアで使用する必要がなければ、設定はそのままにしておいてください。
らしいです。いっぱいあってよく分かりませんでした><
- VID (VirtualBox Disk Image)
- VMDK (Virtual Machine Disk)
- VHD (Virtual Hard Disk)
- HDD (Parallels Hard Disk)
- QED (QEMU enhanced disk)
- QCOW (QEMU Copy-On-Write)
目次
1. VID, VMDK, VHD, HDD
Wikipedia:VirtualBoxによると、仮想ディスクイメージとは以下のようなものらしい。
ハードディスクドライブは、通常「仮想ディスク・イメージ (Virtual Disk Images)」と呼ばれる他の仮想化ソリューションとは互換性のない特別なコンテナ・フォーマットとしてエミュレートされる。これらは、ホストOS上のシステムファイル(拡張子 .vdi)として格納される。別の方法として、VirtualBoxはiSCSIの対象との接続が可能で、それらを仮想ハードディスク群として使用することが出来る。
また、Wikipediaには、VirtualBoxがサポートするその他の形式についてもさらっと書いてある。
この他、他の仮想マシンソフトウェアで用いられる、vmdk形式 (VMware)、vhd形式 (Microsoft Virtual PC)、hdd形式 (Parallels) などの仮想ディスクイメージにも対応する。但し、これらディスクイメージは本来VirtualBox向けのフォーマットではない為、フォーマットのバージョンとVirtualBoxのバージョンの対応など、利用に当たっては互換性の面における注意が必要であるが、有志によりコンバートユーティリティがいくつか開発されており、(当然無保証となるが)これらの仮想ディスク形式において相互変換可能な環境がそろいつつある。
本当にさらっとしか書いてないので、別のドキュメントをあたってみた。
virtualbox.orgのドキュメントによると(和訳)
- 通常は、VirtualBoxはゲストのハードディスクのコンテナとして、「Virtual Disk Image (VDI)」ファイルと呼ばれる、独自の格納形式を用います。この形式は、新しいディスクを用いて新しく仮想マシンを作成する時に用いられます。
- VirtualBoxは「VMDK」という格納形式を完全にサポートします。この形式は、「VMware」など多くの仮想化ソフトウェアで、一般的かつオープンに用いられているものです。
- VirtualBoxは、「VHD」という形式も完全にサポートします。これはMicrosoftが利用している形式です。
- Parallelsバージョン2 (.hdd形式) もサポートされています。しかし、ドキュメントの不足により、最近のバージョン(3および4)はサポートされていません。この問題に対しては、Parallelsにより提供されるツールを用いて、これらのイメージをバージョン2用に変換することができます。
と、少し詳しく書いてあった。
ParallelsはParallelsっていう会社が出してる仮想化ソフトウェアらしいが、VirtualBoxがあんまりサポートしてない感が伝わってきた。
あとVHDも、Microsoftの仮想化技術使うような人が周りにいないので、考えなくてよさそう。
2. QED, QCOW
virtalbox.orgのドキュメントに載っていないQEDとQCOWについても調べてみた。
QCOW (QEMU Copy-On-Write) とか書いてあるので、そもそもコピーオンライトって何ぞ、と思ったのでWikipedia:コピーオンライト見てみると
コピーオンライト (Copy-On-Write) とは、コンピュータプログラミングにおける最適化戦略の一種である。COWと略記することもある。
コンピュータ内部で、ある程度大きなデータを複製する必要が生じたとき、愚直な設計では、直ちに新たな空き領域を探して割り当て、コピーを実行する。 ところが、もし複製したデータに対する書き換えがなければその複製は無駄だったことになる。
そこで、複製を要求されても、コピーをした振りをして、とりあえず原本をそのまま参照させるが、ただし、そのままで本当に書き換えてはまずい。原本またはコピーのどちらかを書き換えようとしたときに、それを検出し、その時点ではじめて新たな空き領域を探して割り当て、コピーを実行する。これが「書き換え時にコピーする」、すなわちコピーオンライト (Copy-On-Write) の基本的な形態である。
基盤となる考え方は、複数の(何らかの)要求者がリソースを要求するときに、少なくとも当初はそれらの要求を区別する必要がないときに同じリソースを与える、というものである。これは要求者がリソースを「更新」しようとするまで保持され、「更新」が他者に見えないようにリソースの個別のコピーを必要になった時点で作成する。要求者からはこの一連の動きは見えない。第一の利点は要求者が全く更新しなければ、個別のコピーを作成する必要が生じないという点である。
らしい。若干知識が深まった気がするが、あんまり関係なかった。
でqcowについてwikibooks:QEMU/Image見てみると
- qcow : QEMUのコピーオンライトの昔の形式です。歴史的な理由によりサポートされていますが、qcow2という上位互換形式があります。
- qcow2 : QEMUのコピーオンライトな形式で、いくつかの独自機能があります。
- 複数のスナップショットを取ることができます。
- ファイルシステムのイメージファイルを小さくすることができます。ただしこれは、スパースファイル(sparse files, 空のパーティション切って、ディスクサイズを確保することらしい)はできません。
- ディスクイメージをAESで暗号化したり、zlibで圧縮したりできます。
VirtualBoxがサポートしてる形式がqcowなのかqcow2なのか不明。
QEDについては、wikibooksにも載ってなかった。これについては、phoronix.comで「QEDはQCOW2より速いぜ!!!」的な話が2011年7月にされてるけど、首突っ込むと、とことん行っちゃいそうな匂いがしたから、会話眺めるだけで済ませとく。
なお、QEMUはvmdk(VMwareの形式)とvid(VirtualBoxの形式)もサポートしているらしい。
QEMUっていうと、手元のイメージファイルをそのままアップロードしてサーバで動かしたりできるのかなーって気もするけど、
こちとら仮想OSを借りてウェブサイト作ってる身分なので、仮想OSに仮想OS入れて使ったりするはずもなく、手元のMac上のVirtualBoxでわざわざQEMUの格納形式使うとかややこしいことする必要もなさそうな気がした。
3. 結論
ここまで調べた上で、(VirtualBoxで)よく使われてそうなのは、VirtualBox独自のVDI形式と、VMwareの形式であり、結構オープンにいろんなソフトで採用されてるVMDK形式だった。
どっちにしようか。
「vdi vs vmdk」とかでググってみると、virtualbox.orgのフォーラムが出てきて
Postby Perryg » 3. Jan 2011, 17:54
VirtualBox will work and support other file types like vhd and vmdk. It is my experience that VirtualBox handles the vdi file type a little better as far as speed goes, but for portability the vmdk types are preferred.(経験的にvdiの方が若干速い気がしてるけど、移植性のこと考えたらVMDKの方がよさそう)
的な感じだった。
これは2011年の会話なので、一応2014年のsuperuser.comでの会話も見つけてみたが、やっぱりそんな感じだった。
というわけで、VMDKを採用します。