KVMをとりあえず動かそうというときは、10GB程度の小さなイメージファイルから始めると思います。当ブログのインストール編でも例示した通り、また他のインストールガイドでも取り上げられている通り、qcow2フォーマットで作成したイメージファイルを使用している方が多いと思われます。ところが本格的にテストをしようと思って100GBぐらい割り当ててインストールしてみると、途方もない時間がかかってびっくりすることがあります。
たとえば当方で計測してみたCentOSのインストールの時間は、qcow2を使い100GBのディスクを割り当てた場合に、フォーマットの所要時間が47分、パッケージのコピーで13分、合計で1時間もかかってしまいます。実サーバにインストールすればせいぜい10分ぐらいですから、恐ろしいほどのパフォーマンスの低下です。
まっさきに疑うのは、qcow2というフォーマットそのものです。試しにrawフォーマットでインストールしてみると、フォーマットは21分、パッケージコピーは7分、合計28分間とある程度改善します。この数字だけみると「qcow2なんてダメだ、rawフォーマットで決まりだな」と思いますが、本当にその結論でいいのか、ちょっと調べてみました。
フォーマット所要時間の比較まずは実験環境で計測してみます。インストールの経過時間を測る実験は、ストップウォッチを持って画面を眺めていないといけないので面倒です。そこでmkfsにかかる時間を測ることにして、自動化を図ります。ゲストOSはあらかじめインストールを終わらせておき、テスト環境として利用します。パフォーマンスを測るためのディスクイメージはそれぞれ別に作っておき、ゲストOSの第2、第3のパーティションとしてアタッチして、これをmkfsでフォーマットするのです。
rawとqcow2のイメージファイルを作ります。
host# qemu-img create -f raw test-raw.img 100G Formatting 'test-raw.img', fmt=raw size=107374182400 host# qemu-img create -f qcow2 test-qcow2.img 100G Formatting 'foo', fmt=qcow2 size=107374182400 encryption=off cluster_size=0
ゲストOSは別のイメージファイルとして、インストールを終わらせておきます。比較のため、ホストOSと同じFedra 12を用意しておきました。コマンドラインはこんな感じです。モニタのポートやVNC設定等は省略していますので、必要ならば補ってください。
qemu-system-x86_64 -hda fedora.img -hdb test-raw.img -hdc test-qcow2.img ...
これを起動すると、ゲストOSからは/dev/sda→fedora.img、/dev/sdb→test-raw.img、/dev/sdc→test-qcow2.imgとなって参照できるようになります。
フォーマットを行う前に、fdiskを使って/dev/sdbと/dev/sdcにパーティションを割り当てます。特別な指定は不要なので、領域全体を1つのパーティションにしてしまいます。
guest# fdisk /dev/sdc ←qcow2パーティションの例 Device [...]