KVMでいろいろいじってみる

ここ最近はまっているKVMです。
構築らへんの話はないので、よかったら過去日記をどうぞ。

Scientific LinuxとKVMで仮想化環境を作る
Scientific Linux+KVMのネットワーク設定
KVMにゲストOSを追加した。
KVMのゲストOS5台でUnixBenchやってみた
KVMのゲストOSでUnixBench パート2

とりあえずゲストOSを6個追加してそこそこ遊んでたものの、これからどうしようかというところ。
UbuntuとDebianはXも入ってるんだけど、Xで色々操作したりしていると、ホストサーバーのロードアベレージもグイグイ上昇するのだ、といっても4~5だけど、たったこれだけでそこまで上がるのだなあと。

ホストサーバーのスペックが低いので仕方のないところだけどね。

最近やったこととと言えば

virsh undefineで削除したらOSのデータも消えるのか

# ls -l /var/lib/libvirt/images/
合計 18284692
-rw------- 1 qemu qemu 1875181568  9月 29 19:02 2013 vm00
-rw------- 1 qemu qemu 1779171328  9月 29 19:02 2013 vm01
-rw------- 1 qemu qemu 4878434304  9月 29 19:00 2013 vm02
-rw------- 1 qemu qemu 4239196160  9月 29 18:57 2013 vm03
-rw------- 1 qemu qemu 2894921728  9月 23 14:56 2013 vm04
-rw------- 1 qemu qemu 1354301440  9月 29 19:02 2013 vm05
-rw------- 1 qemu qemu 1703149568  9月 29 19:02 2013 vm06

最初はこんな感じですね。
vm02とvm03はXが入ったやつだけど、やはりでかい。
他はminimalのCentOSとFreeBSDです。

ではundefineしてみましょう。vm00ではちょっとミスったのでw
試すのはvm01です。
まずは落ちてるのをチェック。

# virsh list --all
 Id    名前                         状態
----------------------------------------------------
 2     vm03                           実行中
 3     vm04                           実行中
 4     vm02                           実行中
 6     vm06                           実行中
 7     vm05                           実行中
 -     vm01                           シャットオフ

落ちてるので消してみよう。

# virsh undefine vm01
ドメイン vm01 の定義が削除されました

[root@take ~]# virsh list --all
 Id    名前                         状態
----------------------------------------------------
 2     vm03                           実行中
 3     vm04                           実行中
 4     vm02                           実行中
 6     vm06                           実行中
 7     vm05                           実行中

リストからも消えました。ではデータを見てみる。

# ls -l /var/lib/libvirt/images/
合計 16453576
-rw------- 1 root root 1779171328  9月 29 19:04 2013 vm01
-rw------- 1 qemu qemu 4878434304  9月 29 19:00 2013 vm02
-rw------- 1 qemu qemu 4239196160  9月 29 19:06 2013 vm03
-rw------- 1 qemu qemu 2894921728  9月 23 14:56 2013 vm04
-rw------- 1 qemu qemu 1354301440  9月 29 19:05 2013 vm05
-rw------- 1 qemu qemu 1703149568  9月 29 19:05 2013 vm06

消えないようなのね、そして所有者がrootになっている。
てな感じで削除はスクリプトが良さげらしい。

KVMだけどQEMUがCPUをエミュレートしている?

言葉の話であれなんだけど、環境はKVMでとよく書いてるけど、実際にCPUをエミュレートとして動いているのはQEMU(きゅーえみゅ)らしい。最初にインストールしたやつだね。
KVMの部品の一つがQEMUらしい。
ちなみにlibvirtはXENとかVMwareもコントロールできるようだ。
このへんの事は細かく分からなくても、実際kvmをロードしてゲストOSを利用することは可能なのだけど、後々になってくるとこの辺の話も理解しとかないとなあと、おそらくなってくるのではないかと思う。

ということで、いまいちわからんのよね。

最近PCSX2とか仮想PS2で遊んでるけど、あれはPS2のエミューレータで、それはその1個なのよね。

ウィキから引っ張ってみると

KVMの各部品は、以下のように様々なGNUライセンスでライセンスされている。
・KVM カーネルモジュール: GPL v2
・KVM ユーザモジュール: LGPL v2
・QEMU 仮想CPUコアライブラリ (libqemu.a) と QEMU PCシステムエミュレータ: LGPL
・Linux ユーザモードQEMUエミュレータ: GPL
・BIOSファイル (bios.bin, vgabios.bin, vgabios-cirrus.bin): LGPL v2 あるいはそれ以降

               http://ja.wikipedia.org/wiki/Kernel-based_Virtual_Machineより

という感じらしい。

ではではQEMUはCPUの種類を選べるのか

これがメインデッシュ!ですけど、こないだKVM上のCentOS、Ubuntu、Debian、FreeBSDでUnixbenchをやったけど、FreeBSDだけスコアが低かったのだ、ファイルシステムの差ではないってことは分かっているので、QEMUでエミューレートしているCPUがFreeBSDと相性が悪いのだろうかってことです。

てことで、エミュレートするCPUを選択できるかというと、調べてみたらできるらしい。

起動オプションはこんな感じにしてみた。1コアにしたかったので、PEN3ですw

# cat vmset.sh 
virt-install \
--name=vm00 \
-connect=qemu:///system \
--ram=1024 \
--cpu pentium3 \
--vcpus=1 \
--cdrom /var/iso/FreeBSD-8.4-RELEASE-i386-dvd1.iso \
--os-type=unix \
--disk path=/var/lib/libvirt/images/vm00,size=5,sparse=false,format=qcow2 \
--network bridge=br0 \
--vncport=50001 \
--vnclisten=192.168.44.132 \
--keymap=ja \
--vnc

では起動してCPUの確認をしてみまする。

# sysctl hw.model hw.clockrate
hw.model: Pentium III/Pentium III Xeon/Celeron
hw.clockrate: 3093
# grep ^CPU /var/run/dmesg.boot
CPU: Pentium III/Pentium III Xeon/Celeron (3093.06-MHz 686-class CPU)
# sysctl kern.smp.cpus
kern.smp.cpus: 1

おおおー!Pen3だ!

では早速Unixbenchをしてみよう。

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   14320079.2   1227.1
Double-Precision Whetstone                       55.0       2397.8    436.0
Execl Throughput                                 43.0       3210.4    746.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      64760.7    163.5
File Copy 256 bufsize 500 maxblocks            1655.0      53146.1    321.1
File Copy 4096 bufsize 8000 maxblocks          5800.0      52451.5     90.4
Pipe Throughput                               12440.0    1177284.4    946.4
Pipe-based Context Switching                   4000.0     295905.1    739.8
Process Creation                                126.0       5935.9    471.1
Shell Scripts (1 concurrent)                     42.4       1272.0    300.0
Shell Scripts (8 concurrent)                      6.0        187.3    312.1
System Call Overhead                          15000.0     674997.7    450.0
                                                                   ========
System Benchmarks Index Score                                         415.3

うーん、対して変わらず。
ところでゲストOS作成時にCPUを指定しなかった場合はCPUはどうなっているかを調べてみた。

% sysctl hw.model hw.clockrate
hw.model: QEMU Virtual CPU version (cpu64-rhel6)
hw.clockrate: 3093
% grep ^CPU /var/run/dmesg.boot
CPU: QEMU Virtual CPU version (cpu64-rhel6) (3093.06-MHz 686-class CPU)

うーん、予想通りっちゃ、予想通りだった。デフォルトではQEMU64だね。
どうせならほかの種類のCPUも試してみようかね。
理論が分かってないので、総当たりでやるしかないのだ。

とりあえず今日はここまで。

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です