AWS の EC2 上で KVM をインストールしてみる
KVM のインストール開始前に、気になる CPU の情報を確認
$ cat /proc/cpuinfo | grep vmx $ $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz stepping : 4 cpu MHz : 2500.104 cache size : 25600 KB fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm rep_good aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes rdrand hypervisor lahf_lm ida arat epb pln pts dts fsgsbase erms bogomips : 5000.20 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz stepping : 4 cpu MHz : 2500.104 cache size : 25600 KB fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm rep_good aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes rdrand hypervisor lahf_lm ida arat epb pln pts dts fsgsbase erms bogomips : 5000.20 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
仮想化機構に対応してないっぽいけどやってみる -.-;
KVM 関連のパッケージを一通りインストール
$ sudo yum install libguestfs libvirt libvirt-client python-virtinst qemu-kvm virt-manager virt-top virt-viewer virt-who
libvirtd サービスが自動起動するように設定する。
$ sudo chkconfig libvirtd on
試験的に使用するため、ファイヤウォールと SELinux を無効にします。
$ sudo vi /etc/sysconfig/selinux
$ cat /etc/sysconfig/selinux
...
SELINUX=disabled
...
$ chkconfig iptables off
一旦、OSを再起動
$ sudo shutdown -r now
ブリッジを作成します〜
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=on $ cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 $ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 $ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=on BRIDGE=br0 $ sudo vi /etc/sysconfig/network-scripts/ifcfg-br0 $ cat /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=on
作成後のブリッジの状態を確認
$ /etc/init.d/network restart
$ sudo brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0a2617772423 no eth0
vnet0
virbr0 を削除する
$ virsh net-destroy default
起動時に virtbr0 が作成されないよう設定する。
$ sudo virsh net-list --all Name State Autostart Persistent -------------------------------------------------- default inactive yes yes $ sudo virsh net-autostart default --disable $ sudo virsh net-list --all Name State Autostart Persistent -------------------------------------------------- default inactive no yes
virt-manager で日本語が使用できるよう、以下のパッケージをインストールします。
$ sudo yum install "vlgothic-p-fonts" "Fonts" libXfont
つづけて、mDNS クライアント作成のエラー回避のため、以下のパッケージをインストールします。
$ yum -y install avahi $ /etc/init.d/messagebus start $ /etc/init.d/avahi-daemon start $ sudo chkconfig avahi-daemon on $ sudo chkconfig messagebus on
libvirtd サービスの起動、および自動起動設定をします。
$ sudo /etc/init.d/libvirtd start $ ps -ef | grep libvirt root 1468 1 0 13:03 ? 00:00:00 libvirtd --daemon qemu 1654 1 0 13:03 ? 00:00:26 /usr/libexec/qemu-kvm -name kvm -S -M rhel6.6.0 -cpu qemu32 -no-kvm -m 512 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid c873d70d-3a86-2d89-7bf7-d39bbd46fb2a -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/kvm.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -drive file=/var/lib/libvirt/images/kvm.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=22,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:4e:71:b2,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 127.0.0.1:0 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -incoming fd:20 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -msg timestamp=on jundo414 2291 1979 0 13:51 pts/0 00:00:00 grep libvirt $ sudo chkconfig libvirtd on
virt-manager を使いたいので、以下の記事を参考に VNC Server をセットアップします。 asobo.hatenablog.jp
インスタンス作成のため、OS の ISO イメージをダウンロードします。 今回は、ubuntu server を使用しました。
$ sudo yum install wget $ cd /tmp/ $ wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu-releases/14.04/ubuntu-14.04.2-server-i386.iso
VNC 接続し、virt-manager を起動します。
$ virt-manager
インスタンス作成を開始します。
インスタンス名を入力後、ISO を選択し、「Forward」ボタンをクリックします。
先ほどダウンロードした ISO ファイルを選択し、OS Type、Versionを入力後、「Forward」ボタンをクリックします。
メモリと CPU の値を設定し、「Forward」ボタンをクリックします。
ストレージサイズを指定し、「Forward」ボタンをクリックします。
そのまま「Finish」ボタンをクリックし、インスタンス作成を開始します。
通常の OS インストール手順にそってインストールしていきます。
ubuntuのインストールが3時間経過しても終わらない..
top コマンドで確認してみるとこんな感じでした。 qemu-kvm の CPU使用率が異常なくらい高いです..
$ top top - 14:35:53 up 1:33, 2 users, load average: 0.81, 0.31, 0.10 Tasks: 159 total, 2 running, 157 sleeping, 0 stopped, 0 zombie Cpu(s): 1.5%us, 0.3%sy, 0.0%ni, 98.1%id, 0.1%wa, 0.0%hi, 0.0%si, 0.1%st Mem: 7645800k total, 1085412k used, 6560388k free, 21872k buffers Swap: 0k total, 0k used, 0k free, 170628k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3988 qemu 20 0 1817m 459m 6396 R 86.2 6.2 1:42.01 qemu-kvm 1468 root 20 0 998m 15m 5408 S 3.4 0.2 0:08.20 libvirtd 1383 root 20 0 140m 3224 2644 S 1.7 0.0 0:00.24 gvfsd-trash 3274 root 20 0 779m 51m 16m S 1.7 0.7 0:05.87 python ...
案の定、libvirt のログに CPU が認識できない旨のエラーメッセージが出力され続けています w
$ sudo view /var/log/libvirt/libvirtd.log 2015-05-27 13:03:05.734+0000: 1479: info : libvirt version: 0.10.2, package: 46.el6_6.6 (CentOS BuildSystem <http://bugs.centos.org>, 2015-04-29-10:28:01, c6b8.bsys.dev.centos.org) 2015-05-27 13:03:05.734+0000: 1479: error : udevGetDMIData:1531 : Failed to get udev device for syspath '/sys/devices/virtual/dmi/id' or '/sys/class/dmi/id' 2015-05-27 13:03:06.137+0000: 1479: error : x86Decode:1437 : internal error Cannot find suitable CPU model for given data 2015-05-27 13:03:06.137+0000: 1479: warning : qemuCapsInit:880 : Failed to get host CPU 2015-05-27 13:03:11.551+0000: 1471: warning : qemuSetupCgroupForVcpu:580 : Unable to get vcpus' pids. 2015-05-27 13:03:11.763+0000: 1471: warning : qemuDomainObjStart:6144 : Unable to restore from managed state /var/lib/libvirt/qemu/save/kvm.save. Maybe the file is corrupted?
EC2 上での KVM は無理があるのか.. 継続調査していきます。
かなり時間はかかりましたが、インスタンスの作成ができました。