[KVM] ゲストOS作成方法によってパフォーマンスが違う件 #2


結論:  圧倒的じゃないか、我が軍 (--accelerateオプション)は!

 

ddコマンドさん、疑ってすみませんでした。むしろ、 virt-install に --accelerate をつけたときの比較では、最初にddでイメージ作ったほうが速かったです。<つぶやき>まるで真っ先に石狩の障害原因としてzfsが疑われたような扱いでしたね・・・

というわけで、前回のエントリの続きです。4つのインストール方法ごとの結果を公表いたしまする。。。今日の作業も下北沢オープンソースCafeで行なっとりやす。

■ [1] ddコマンドでイメージを作ってから--accelerateオプションをつけずにインストール (約45分)

[cc lang='bash' ]
INSTANCE=1.example.com ;
PORT=10000 ;
sudo dd if=/dev/zero
of=/opt/vmimg/${INSTANCE}.img
bs=1048576
count=1 seek=19456 ;
sudo virt-install
--connect qemu:///system
--name=${INSTANCE}
--ram=1536
--vcpus=1
--network=bridge:br0
--file=/opt/vmimg/${INSTANCE}.img
--file-size=20
--nonsparse
--hvm
--os-type=linux
--vnc
--vncport=$PORT
--cdrom=${HOME}/tmp/CentOS-5.6-x86_64-bin-DVD-1of2.iso
[/cc]
■ [2] ddコマンドを使わず--accelerateオプションをつけずにインストール (約60分)

なんと、ddコマンドを使わないほうが遅かった!こないだ速かったのはイメージファイルがすでにあったから?
[cc lang='bash' ]
INSTANCE=2.example.com ;
PORT=10001 ;
sudo virt-install
--connect qemu:///system
--name=${INSTANCE}
--ram=1536
--vcpus=1
--network=bridge:br0
--file=/opt/vmimg/${INSTANCE}.img
--file-size=20
--nonsparse
--hvm
--os-type=linux
--vnc
--vncport=$PORT
--cdrom=${HOME}/tmp/CentOS-5.6-x86_64-bin-DVD-1of2.iso
[/cc]
■ [3] ddコマンドでイメージを作ってから--accelerateオプションをつけてインストール (約10分)
[cc lang='bash' ]
INSTANCE=3.example.com ;
PORT=10002 ;
sudo dd if=/dev/zero
of=/opt/vmimg/${INSTANCE}.img
bs=1048576
count=1 seek=19456 ;
sudo virt-install
--connect qemu:///system
--name=${INSTANCE}
--accelerate
--ram=1536
--vcpus=1
--network=bridge:br0
--file=/opt/vmimg/${INSTANCE}.img
--file-size=20
--nonsparse
--hvm
--os-type=linux
--vnc
--vncport=$PORT
--cdrom=${HOME}/tmp/CentOS-5.6-x86_64-bin-DVD-1of2.iso
[/cc]
■ [4] ddコマンドを使わず--accelerateオプションをつけてインストール (約15分)

あれ?やっぱり先にddコマンドでイメージ作ったほうが早い?
[cc lang='bash' ]
INSTANCE=4.example.com ;
PORT=10003 ;
sudo virt-install
--connect qemu:///system
--name=${INSTANCE}
--accelerate
--ram=1536
--vcpus=1
--network=bridge:br0
--file=/opt/vmimg/${INSTANCE}.img
--file-size=20
--nonsparse
--hvm
--os-type=linux
--vnc
--vncport=$PORT
--cdrom=${HOME}/tmp/CentOS-5.6-x86_64-bin-DVD-1of2.iso
[/cc]

というわけで、インストールにかかった時間の短さは [3]>[4]>>(越えられない壁)>>[1]>>>>>>>>[2] といったアンバイでございました。ddコマンドで先にイメージ作ったほうがよかったです。ddコマンドで /dev/zero からイメージ作ったほうが virshコマンドを介さないぶん速いのかもですね。

各イメージファイルについての違いについても記録しておきます。

[cc lang='bash' ]
$ for i in {1..4}.example.com.img ; do echo $i; du -hs $i ; ls -lk $i; ls -lh $i; echo; file $i; echo ; echo ; echo ; done
1.example.com.img
1.7G 1.example.com.img
-rw-r--r-- 1 root root 19923968 Jan 13 02:03 1.example.com.img
-rw-r--r-- 1 root root 20G Jan 13 02:03 1.example.com.img

1.example.com.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 39632355 sectors, code offset 0x48

2.example.com.img
21G 2.example.com.img
-rwxr-xr-x 1 root root 20971520 Jan 13 06:36 2.example.com.img
-rwxr-xr-x 1 root root 20G Jan 13 06:36 2.example.com.img

2.example.com.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 41720805 sectors, code offset 0x48

3.example.com.img
1.7G 3.example.com.img
-rw-r--r-- 1 root root 19923968 Jan 14 13:30 3.example.com.img
-rw-r--r-- 1 root root 20G Jan 14 13:30 3.example.com.img

3.example.com.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 39632355 sectors, code offset 0x48

4.example.com.img
21G 4.example.com.img
-rwxr-xr-x 1 root root 20971520 Jan 14 13:58 4.example.com.img
-rwxr-xr-x 1 root root 20G Jan 14 13:58 4.example.com.img

4.example.com.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 41720805 sectors, code offset 0x48

[/cc]

しかし、1つナゾなのが、ddコマンドでスパースファイルを作った上でインストールしたイメージはスパースファイルのままで、ddコマンドでスパースファイルを作らずにインストールしたほうのイメージは、スパースファイルのままだ。ちなみに、4台とも

--nonsparse

オプションをつけている、にも関わらずだ。これはつけるだけ無駄なオプションなの?というわけで、そろそろホストOS側のディスクも不足気味なので、これら4台をundefineしてイメージ削除してもっかい検証してみようかな。

最後になりましたが、アドバイスいただきました いの さん、 たけひろ さん、加藤さん平さん長谷川さんもりわかさん中井さん、アドバイスありがとうございます!

https://twitter.com/#!/hasegaw/status/157469062170034176
https://twitter.com/#!/hasegaw/status/157471588781015040
https://twitter.com/#!/hasegaw/status/157478710071660544
https://twitter.com/#!/moriwaka/status/157479098753617920
https://twitter.com/#!/moriwaka/status/157481789378666496
https://twitter.com/#!/enakai00/status/157602118570754048
https://twitter.com/#!/enakai00/status/157603168228880385
https://twitter.com/#!/enakai00/status/157605328589037568