ここ最近はまっている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も試してみようかね。
理論が分かってないので、総当たりでやるしかないのだ。
とりあえず今日はここまで。