おのたく日記 YouTubeも始めました→
2008-04-15(Tue) KVM(Kernel Based Virtual Machine)を使ってみる [長年日記]
■ [Debian]KVM(Kernel Based Virtual Machine)を使ってみる
KVMっていったら携帯向けのJava VMとか思っていたので、「Linux Kernel Watch > 2月版 仮想化技術「KVM」の高速化パッチ登場!」とか読んでもピンと来ないでいた。
実は Kernel Based Virutal Machineの事でLinux Kernelに組み込まれていてIntel VTの機能などを利用した、VMwareやXenと同様な仮想化エンジンだと知ったので、早速使ってみた。
■ 基本動作
参考: Debian で KVM(Kernel Based Virtual Machine)を使う
0準備
システムの起動時に、モジュールを読み込むように、/etc/modules にkvm-intel(amd のひとは、kvm-amd)を追記。
※おうちではVMware ServerもIntel VTを使っていて喧嘩してしまい、kvm-intelモジュールを使うときにはVMwareのGuestOSは起動できない。起動するとHungする(;_;) ので、必要な時に # /etc/init.d/vmware stop;modprobe kvm-intelするようにしている。
kvm を一般ユーザでも使えるようにするために、# adduser USERNAME kvm
1:cdrom ドライブに入ったライブCD/DVDを起動する
$ kvm -m 512 -cdrom /dev/cdrom -boot d -localtime
※KNOPPIX 5.1.1はkernelブートすると真っ黒画面になってしまい動かなかったけど、KNOPPIX 3.8.1は動いた。
2:インストール用 CDイメージ(.iso)からインストールを始める
$ qemu-img create -f qcow test.img 16G
$ kvm -m 1024 -smp 1 -boot d -cdrom /dev/cdrom1 -hda test.img -usb -soundhw es1370
3:インストール済みのイメージファイルからOSを起動する
$ kvm -m 1024 -hda test.img -usb -soundhw es1370
■ VistaをKVMにインストールしてみた
$ qemu-img create -f qcow VistaBasic.img 16G
$ kvm -m 1024 -smp 1 -boot d -cdrom /dev/cdrom1 -hda VistaBasic.img -k ja -localtime -usb -soundhw es1370
でインストールして通常使うには
$ kvm -m 1024 -smp 1 -hda VistaBasic.img -k ja -localtime -usb -soundhw es1370 -monitor pty
としている。通常起動時に「-vnc 127.0.0.1:2」をつけるとコンソールなしで良いかと思ったけど、vncviewでカーソルが二つ出る現象が発生して使いものにならなかった。
■ KVM上のVistaでIPアドレスが取ってこれない
Kinoppixでは、QEMU/KVM内臓のHDCPからIPアドレスを取得できるのだけど、
IP: 10.0.0.15
NETMASK: 255.255.255.0
Default Route: 10.0.2.2
DNS Server: 10.0.2.2
Windows Vistaだと、いつのまにかIPアドレスが取得できなくなっている。
色々悩んだけど、DHCPは諦めてスタティックでIPアドレスを指定すればネットワークが使えるようになった。
Vistaにavast! AntivirusをインストールしてからDHCPで取れなくなったような気もするけど気のせいか…
■ kvmコマンドでの-netオプションのdefault
/etc/kvm/utils/kvmあたりを見ると -net nic,macaddr=RAND,model=rtl8139 -net tap,script=/etc/kvm/qemu-ifup
と読める。しかし/etc/kvm/qemu-ifupなんてないし…
$ screen /dev/pts/1
(qemu) info network
VLAN 0 devices:
user redirector
rtl8139 pci macaddr=52:54:00:12:34:56
ということなので、 -net nic,macaddr=52:54:00:12:34:56,model=rtl8139 -net user となっているのかなぁ。
■ KVMでのサスペンドとリジューム
$ screen /dev/pts/1
(qemu) savevm
Device ide0-hd0 does not support VM state snapshots
うーむ、ロードは -loadvmで行くかと思ったけど、良く考えればIntel VTではステートとれないよな…
サスペンドとリジュームが出来ないのは辛いな。
■ virt-managerを使ってみる
virt-managerで新規にGuestを作ろうとすると、Wizardが途中で進まなくなり出来なかった。virt-installでトライするけど、KVM向きの設定XMLファイルが出来ない。
結局、サウンドカードは設定できないけど何となくできた設定XMLファイル
<domain type='qemu'>
<name>VistaBasic</name>
<uuid>04042a35-0ee2-36ed-2789-4ce70165bce5</uuid>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<source file='/mnt/sdb4/KVM/VistaBasic.img'/>
<target dev='hda'/>
</disk>
<interface type='user'>
<mac address='00:16:3e:34:54:67'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1'/>
</devices>
</domain>
をvirshで読みこませることにした。
$ virsh -c qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # define VistaBasic.xml
Domain VistaBasic defined from VistaBasic.xml
virsh # start VistaBasic
Domain VistaBasic started
何となく動いている…
コンソールは開けるけど、メニューがイネーブルになっていて仮想マシンのstart/shutdownはvirt-managerから出来ない。
■ KVMを使ってみて
VMware Serverより動作は早いみたいだけど、機能不足なのでまだKVMに乗り換えるのは早いかな〜
|