上川純
一
![]() |
KVM という仮想マシンモニタがあります。 これは、 Intel VT, もしくは、 AMD-V 対応のプロセッ サ*21 の 仮想化対応機能を活用するための仕組です。 2006 年末の時点では、 kvm はデバイスドライバとして実装されており、 /dev/kvmとして実装されています。
Linus Kernel 2.6.20 以降ではカーネル側の機構は標準で入っているようです。 *22 Debian で KVM を利用する際の手順を説明します。
apt-get install kvm でパッケージをインストールします。 kvm コマンドがインストールされます。 これが kvm 向けに 変更された qemu です。
udev が作成してくれる /dev/kvm にアクセスできるようにします。 デフォルトは root:kvm 660*23 で、 root のみがアクセスできる設定になっています。 ユーザを kvm グループに追加すればよいでしょう。
# adduser dancer kvm
|
CPU の VT 機能はデフォルトで on になっていない場合があるので、 on にします。 これはマシンによって違うようです。 通常 BIOS で設定します。 旧モデルの MacBook の場合は EFI 上で必要なコマンドを発行することになります。 *24
以上で、 kvm コマンドを利用して VT の恩恵にあずかることができるようになります。 コマンドラインなどは qemu 互換、 むしろ qemu そのものを利用しているので、 qemu と同じように動かすことができます。
kvm を活用していろいろと試してみましょう。 qemu 用のディスクイメージを作成し、 適当なディストリビューションのディ スクイメージを利用して、 インストールします。 おそらく、 -monitor コマンドで stdio をモニタにするほうが便利で しょう。
$ qemu-img create -f qcow hda 10G
$ kvm -hda hda -cdrom /home/iso/RHEL4-U4-i386-AS-disc1.iso -boot d -m 512 -monitor stdio (qemu) change cdrom /home/iso/RHEL4-U4-i386-AS-disc2.iso (qemu) change cdrom /home/iso/RHEL4-U4-i386-AS-disc3.iso (qemu) change cdrom /home/iso/RHEL4-U4-i386-AS-disc4.iso (qemu) change cdrom /home/iso/RHEL4-U4-i386-AS-disc5.iso (qemu) change cdrom /home/iso/RHEL4-U4-i386-AS-disc1.iso (qemu) eject cdrom |
ここでは某 CDROM が 5 枚あるディストリビューションを例にとっていますが、 CDROM が 5 枚あっても、 qemu モニ ターにて CDROM を入れ換えながら GUI 操作を行うことで無事にインストール完了します。 リブートするとこ ろでゲスト OS がカーネルパニックを起こしますが、 そこは適当に kvm 自体を起動しなおせば問題ありま せん。
$ kvm -hda hda -boot c -m 512 -monitor stdio -localtime \
-redir tcp:2222::22 |
qemu を使った場合と kvm を使った場合の速度比較をしてみました。 まず、 ユーザ空間で完結する例として単純に while で ループを回すだけのプログラムです。 qemu の場合は 6s かかったものが、 kvm の場合は 0.6s で完了しま した。
kvm を実行しているホスト OS からどのように見えるのか確認してみましょう。 kvm の仕組だと、 システムコールを実行して 処 理 を 行 う こ と に な る の で し ょう 。
mpstat -P ALL 1 の出力を一部みてみると、 一つの CPU のシステム時間がとられているように見えます。
00 時 28 分 51 秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
00 時 28 分 52 秒 all 0.00 0.00 50.00 0.50 0.00 0.50 0.00 49.00 1421.78 00 時 28 分 52 秒 0 0.00 0.00 92.08 0.00 0.00 0.99 0.00 6.93 430.69 00 時 28 分 52 秒 1 0.00 0.00 6.93 0.99 0.00 0.00 0.00 91.09 991.09 |
topコマンドで見た場合には、 kvm は通常のプロセスと同様に CPU 時間を消費し、 メモリを消費しているように見え ます。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3746 dancer 25 0 308m 252m 246m R 82 25.7 100:36.60 kvm 2512 root 10 -5 0 0 0 S 0 0.0 0:11.32 kjournald 2806 root 15 0 2556 932 804 S 0 0.1 1:09.36 syslogd |
iostat 1 /dev/dm-1 の出力を確認してみます。 ゲスト OS のディスク IO によってホスト OS のディスク IO が発生して いるのが見れます。
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 42.50 42.00 0.00 15.50 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dm-1 805.94 102.97 6400.00 104 6464 |
Xen, qemu, qemu+kqemu, openvz, vserver, user-mode-linux などと機能を比較してみましょう。 と思ったらすでにやられて いたので、 この URL を参照してください。 http://virt.kernelnewbies.org/TechComparison
デビアン勉強会
|
_____![]() 2007 年 1 月 20 日 初版第 1 刷発行 東 京 エ リ ア Debian 勉強会 (編集・印刷・発行) _____________ |