一、KVM 簡介
KVM 是 kernel-based Virtual Machine 的簡稱,是一個開源的系統虛拟化子產品,是 Linux 下 x86 硬體平台上的全功能虛拟化解決方案,包含一個可加載的核心子產品 kvm.ko 提供虛拟化核心架構和處理器規範子產品。自 Linux 核心 2.6.20 之後內建在 Linux 的各個主要發行版本中。它使用 Linux 自身的排程器進行管理,是以相對于 Xen ,其核心源碼很少。KVM 已成為學術界的主流 VMM 之一。
KVM的虛拟化需要硬體支援(如 Intel VT 技術或者 AMD V 技術)。是基于硬體的完全虛拟化。而 Xen 早期則是基于軟體模拟的 Para-Virtualization ,新版本則是基于硬體支援的完全虛拟化。但 Xen 本身有自己到程序排程器,存儲管理子產品等,是以代碼較為龐大。廣為流傳的商業系統虛拟化軟體 VMware ESX 系列也是基于軟體模拟的 Para-Virtualization 。
使用 KVM ,可允許運作多個虛拟機,包括 Linux 和 Windows 作業系統。每個虛拟機有私有的硬體,包括網卡、磁盤以及圖形适配卡等。
二、KVM 安裝準備
1、檢視 CPU 是否支援虛拟化
[[email protected] ~]# grep -E '(vmx|svm)' --color=always /proc/cpuinfo # 如果是 Intel 則顯示 vmx ; AMD 則顯示 svm
flags : 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 xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
flags : 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 xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
flags : 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 xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
flags : 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 xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
2、如果支援則要去 BIOS 中檢視 Virtualization Technology 是否開啟;如果上述指令沒結果就是不支援
BIOS Features --> Intel Virtualization Technology --> 選擇 Enabled --> F10 儲存退出
3、檢視核心版本是否高于 2.6.20
[[email protected] ~]# uname -r
2.6.32-358.el6.x86_64
4、SELinux 確定開啟,否則 virt-install 不能正常工作
[[email protected] ~]# getenforce
Enforcing
三、安裝 KVM
[[email protected] ~]# yum -y install qemu-kvm libvirt libvirt-python python-virtinst libvirt-virtinst
[[email protected] ~]# reboot ## 需要重新開機系統
[[email protected] ~]# lsmod | grep kvm ## KVM 子產品已經成功加載
kvm_intel 53484 0
kvm 316506 1 kvm_intel
[[email protected] ~]# virsh -c qemu:///system list ## 安裝成功
Id 名稱 狀态
----------------------------------------------------
四、增加網橋(友善伺服器與虛拟機直連)
[[email protected] ~]# yum -y install bridge-utils
1、修改網卡裝置檔案( 最好不要遠端操作 )
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=90:2B:34:00:9F:42
#TYPE=Ethernet
UUID=7132d3c7-5fbf-41e9-8bf6-ab39c684cc2c
ONBOOT=yes
#NM_CONTROLLED=yes
#BOOTPROTO=static
#IPADDR=192.168.1.20
#NETMASK=255.255.255.0
#GATEWAY=192.168.1.1
BRIDGE=br0
## 隻保留 DEVICE、HWADDR、ONBOOT 添加 BRIDGE=br0 ,UUID 可有可無
2、添加網橋裝置檔案( 最好不要遠端操作 )
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=202.106.46.151
DNS3=8.8.8.8
## 整個檔案都是新寫的,DNS 如果原來寫在網卡中就搬過來,如果原來定義在 /etc/resolv.conf 中,就不用管了
[[email protected] ~]# service network restart
正在關閉接口 br0: [确定]
正在關閉接口 eth0: [确定]
關閉環回接口: [确定]
彈出環回接口: [确定]
彈出界面 eth0: [确定]
彈出界面 br0: [确定]
3、最後的效果是這樣
[[email protected] ~]# ifconfig
br0 Link encap:Ethernet HWaddr 90:2B:34:00:9F:42
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::922b:34ff:fe00:9f42/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1127 errors:0 dropped:0 overruns:0 frame:0
TX packets:956 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:82289 (80.3 KiB) TX bytes:83835 (81.8 KiB)
eth0 Link encap:Ethernet HWaddr 90:2B:34:00:9F:42
inet6 addr: fe80::922b:34ff:fe00:9f42/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7556 errors:0 dropped:0 overruns:0 frame:0
TX packets:2740 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:602123 (588.0 KiB) TX bytes:297335 (290.3 KiB)
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:82 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28368 (27.7 KiB) TX bytes:28368 (27.7 KiB)
virbr0 Link encap:Ethernet HWaddr 52:54:00:50:72:04
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
五、使用 virt-manager 管理虛拟機(這裡是新開的一台機器,做實驗可以放到 KVM 上)
CentOS 6.4 minimal 已經安裝桌面環境、VNC 服務(可以參考 http://blog.csdn.net/wangxiaoqiang888/article/details/39524345)
[[email protected] ~]# yum -y install virt-manager libvirt ## 安裝管理工具
[[email protected] ~]# service libvirtd start
啟動 libvirtd 守護程序: [确定]
[[email protected] ~]# chkconfig --add libvirtd
[[email protected] ~]# chkconfig --level 35 libvirtd on
## 然後通過 VNC 連接配接這台機器
1、第一次登陸在 應用程式-->系統工具-->虛拟系統管理器 ,點選後會提示安裝一些依賴包(自動安裝)
2、檔案-->add Connection(添加遠端 KVM 主機)

3、然後就可以建立 KVM 虛拟主機了 ^_^
## 如果是通過 ISO 檔案來建立,需要注意一下:KVM 主機的 /var/lib/libvirt/images 這是預設讀取 ISO 檔案的地方,需要将 ISO 複制到這裡
## 選擇系統的時候 Linux--> 沒有 CentOS ,那就選 RedHat 也可以。
## 建立過程中這一步記得将勾去掉
## 接下來就跟真機裝系統完全一樣了 ^_^
六、使用指令建立虛拟機
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 待補 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>