kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模塊,自
Linux 2.6.20之後集成在Linux的各個主要發行版本中。它使用Linux自身的調度器進行管理,所以相對於Xen,其核心源碼很少。KVM目前已成為學術界的主流VMM之一。
KVM的虛擬化需要硬件支持(如Intel VT技術或者AMD V技術)。是基於硬件的完全虛擬化。而Xen早期則是基於軟件模擬的Para-Virtualization,新版本則是基於硬件支持的完全虛擬化。但Xen本身有自己到進程調度器,存儲管理模塊等,所以代碼較為龐大。廣為流傳的商業系統虛擬化軟件VMware ESX系列也是基於軟件模擬的Para-Virtualization。
1. kvm安裝
kvm必須在64位系統
(a)檢查CPU是否支持硬件虛擬化-運行命令
egrep '(vmx|svm)' --color=always /proc/cpuinfo
(如果輸出的結果包含 vmx,它是 Intel;如果包含 svm,它是 AMD。如果你甚麼都得不到,那應你的系統並沒有支持虛擬化的處理。)
(b)安裝KVM和virtinst(一個創建虛擬機的工 具),我們運行
yum install kvm kmod-kvm qemu libvirt python-virtinst
然後重新啟動系統:
Reboot
使用下列命令檢查KVM是否成功安裝
virsh -c qemu:///system list
將會顯示如下結果:
[root@server1 ~]# virsh -c qemu:///system list
Id Name State
----------------------------------
[root@server1 ~]#
如果在這裡顯示的是一個錯誤的信息,說明有些東西出現了問題。
(c)下面我們需要在我們的服務器上設置一個網橋,就可以使我們的虛擬機從其他主機中讀取數據。
要做到這一點,我們安裝bridge-utils工具。。。。。。
yum install bridge-utils
... 並且配置一個網橋從/etc/sysconfig/network-scripts/ifcfg-eth0參考BOOTPROTO, BROADCAST, IPADDR, NETMASK和NETWORK等值來創建文件/etc/sysconfig/network-scripts/ifcfg-br0 :
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
修改/etc/sysconfig/network-scripts/ifcfg-eth0 as follows (取消注釋BOOTPROTO, BROADCAST, IPADDR, NETMASK, 和NETWORK 最後添加 BRIDGE=br0):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
#BOOTPROTO=static
#BROADCAST=192.168.0.255
HWADDR=00:10:A7:05:AF:EB
#IPADDR=192.168.0.100
#NETMASK=255.255.255.0
#NETWORK=192.168.0.0
ONBOOT=yes
BRIDGE=br0
重新啟動網絡...
/etc/init.d/network restart
... 運行
ifconfig
現在應該顯示網橋(br0):
[root@server1 ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:10:A7:05:AF:EB
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1160 (1.1 KiB) TX bytes:14875 (14.5 KiB)
eth0 Link encap:Ethernet HWaddr 00:10:A7:05:AF:EB
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13662 errors:7 dropped:160 overruns:4 frame:0
TX packets:11646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15144608 (14.4 MiB) TX bytes:1379942 (1.3 MiB)
Interrupt:74 Base address:0xcc00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4308 (4.2 KiB) TX bytes:4308 (4.2 KiB)
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:9987 (9.7 KiB)
[root@server1 ~]#
2. kvm管理端安裝virt-viewer 或者virt-manager
如果你是用的是Fedora 10 desk
top,你可以使用下列命令安裝virt-manager:
yum install virt-manager
3. GuestOs安裝
Virt-install具體用法,請參考man virt-install
(a)以光驅方式安裝(win2003)
(I)virt-install --connect qemu:///system --name win01 --ram 1024 --disk path=/var/lib/libvirt/images/win2k3.img,size=10 --network bridge:br0 --accelerate --vnc --noautoconsole --cdrom /dev/cdrom-hda
Starting install...
Creating domain... | 0 B 00:02
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
(II)kvm管理端開啟virt-manager後,通過Remote tunnel over ssh連接方式連接到kvm服務器.當執行完I步後,將會運行一個win01 Domain,在Virtual Machine Manager選中這個新建的Domain,右擊選中Open,輸入認證密碼後,便可以打開一個console可以遠程安裝系統了。
(b)以iso安裝(確保selinux關閉,至到我搞懂為至)
virt-install --connect qemu:///system --name debian --ram 1024 --vcpus=4 --disk path=/var/lib/libvirt/images/debian.img,size=10 --network bridge:br0 --accelerate --vnc --noautoconsole --cdrom /mnt/debian.iso
4. 管理kvm客戶機
可以通過 virsh命令管理KVM客戶機,"virtual shell"。連接到virtual shell,運行
virsh --connect qemu:///system
下面就是virtual shell的顯示界面:
[root@server1 ~]# virsh --connect qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #
現在你可以在virtual shell中輸入命令來管理你的客戶 機,運行:
help
獲得更多的命 令:
list
顯示所有正在運行的客戶機;
list --all
顯示所有客戶機,正在運行的和沒有運行的:
virsh # list --all
Id Name State
----------------------------------
2 vm10 running
virsh #
如果你修改了一個客戶機的xml文件(位於/etc/libvirt/qemu/ 目錄),你必須重新定義客戶機:
define /etc/libvirt/qemu/vm10.xml
請注意,無論你何時在/etc/libvirt/qemu/ 中修改了客戶機的XML文件,你必須重新運行define 命令!
啟動和停止客戶機,運行:
start vm10
停止一個客戶機,運行
shutdown vm10
立即中斷一個客戶機(類似直接關電源),運行
destroy vm10
掛起一個客戶機:
suspend vm10
恢復客戶機:
resume vm10
輸入quit 退出virtual shell.