前面寫了一系列文章,現在在這裡用一篇文章概括一下,方便查看。本文針對Ubuntu 13.10 server。
宿主機的安裝檢查CPU是否支援虛擬化
root@kvmhost:~# egrep '(vmx|svm)' --color=always /proc/cpuinfoflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm dts tpr_shadow vnmi flexpriority ept vpidflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm dts tpr_shadow vnmi flexpriority ept vpid
安裝KVM和KVM Builder
apt-get install ubuntu-virt-server python-vm-builder kvm-ipxe
設定使用者組
adduser `id -un` libvirtdadduser `id -un` kvm
id -un返回的是root使用者,這樣root使用者就加入了libvirtd和kvm使用者組
檢查
然後reboot後,再登入,運行下面的命令檢查
root@kvmhost:~# virsh -c qemu:///system list Id Name State----------------------------------
如上顯示說明KVM安裝正常。
配置網路
如下設定/etc/network/interfaces
# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth1iface eth1 inet manualauto br0iface br0 inet static address 10.150.140.103 network 10.150.140.0 netmask 255.255.0.0 broadcast 10.150.255.255 gateway 10.150.0.254 dns-nameservers 10.150.0.253 8.8.8.8 bridge_ports eth1 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
注意,原來eth1的IP地址現在設定給了br0,並且eth1設定為manual方式。
br0下面的dns, netmask, broadcast都來自原來eth1的設定。
KVM宿主機設定完畢,重新啟動吧。
KVM Builder補丁
從Ubuntu 12.10開始,KVM Builder就有一個bug,導致建立虛擬機器的時候遇到如下錯誤:
Selecting previously unselected package linux-image-virtual.Unpacking linux-image-virtual (from .../linux-image-virtual_3.5.0.17.19_amd64.deb) ..., stderr: grep: /proc/cpuinfo: No such file or directory
這個是Ubuntu 12.10/13.10內建的vmbuilder的bug,原因是沒有mount /proc目錄,這裡討論了這個問題,並提供了臨時解決方案:
https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/1037607
打補丁的命令如下:
wget https://launchpadlibrarian.net/120169451/usr_share_pyshared_VMBuilder_plugins_ubuntu_dapper.py.diffcp /usr/share/pyshared/VMBuilder/plugins/ubuntu/dapper.py ./dapper.py_bkpatch /usr/share/pyshared/VMBuilder/plugins/ubuntu/dapper.py ./usr_share_pyshared_VMBuilder_plugins_ubuntu_dapper.py.diff
建立虛擬機器
建立好的虛擬機器的/etc/apt/sources.list檔案需要修改,最好從宿主機複製一份。
Clone虛擬機器安裝軟體:
apt-get install virtinst
比如已經有了vm_base虛擬機器,用virsh shutdown關閉它,然後開始clone。
首先建立要存放的目錄
mkdir -p /var/lib/libvirt/images/infobright
然後將vm_base虛擬機器複製一份到infobright
virt-clone -o vm_base -n infobright --file /var/lib/libvirt/images/infobright/a.img --file /var/lib/libvirt/images/infobright/b.img
還要安裝一些軟體可以在宿主機上直接編輯虛擬機器的設定檔
apt-get install guestfish
apt-get install libguestfs-tools
第二個命令安裝的時候,請回答yes,如果回答no,以後功能可能不正常,需要重新運行命令配置:
update-guestfs-appliance
好,現在可以修改幾個檔案
virt-edit -d infobright /etc/hostnamevirt-edit -d infobright /etc/hosts
修改網路設定,注意,VM內部可以使用其他的子網配置,不一定和KVM宿主機相同。
virt-edit -d infobright /etc/network/interfaces
auto eth0iface eth0 inet static address 10.150.144.23 netmask 255.255.0.0 network 10.0.0.0 gateway 10.150.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.150.0.253 8.8.8.8 up route add default gw 10.150.0.254 up route add -net 115.182.51.0 netmask 255.255.255.0 gw 10.150.0.1 dev eth1 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.150.0.1 dev eth1
複製到其他宿主機
複製虛擬機器資料檔案,比如:
scp -r root@10.150.140.103:/var/lib/libvirt/images/vm_base /var/lib/libvirt/images/
然後複製虛擬機器組態檔,比如:
scp -r root@10.150.140.103:/etc/libvirt/qemu/vm_base.xml /etc/libvirt/qemu/
現在添加虛擬機器:
virsh define /etc/libvirt/qemu/vm_base.xml
現在可以用virt-edit修改網路設定檔了,不再贅述。
虛擬機器管理修改虛擬機器的xml檔案
用virsh edit vm_name 命令修改對應的xml檔案,如果想使用emacs,則需要將emacs設定為預設編輯器
在/root/.bashrc檔案中添加:
export EDITOR=/usr/bin/emacs
更新中 ...