--------------------------python
1、前言vim
2、環境bash
3、安裝與配置服務器
4、建立kvm虛擬機網絡
5、管理kvm虛擬機dom
6、克隆kvm虛擬機ide
7、網絡配置(bridge)工具
附1:宿主機執行如下指令(shutdown,reboot)虛擬機沒有反應。性能
附2:宿主機重啓網絡服務時出現錯誤(配置bridge時)ui
--------------------------
1、前言
KVM,即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。
2、環境
系統:rhel6.5 64位
軟件包組:
virtualization 提供虛擬機的環境,主要包含qemu-kvm
virtualization-client 管理和安裝虛擬機實例的客戶端,主要有python-virtinst,virt-manager,virt-viewer
virtualization-platform 提供訪問和控制虛擬客戶端的接口,主要有libvirt,libvirt-client
virtualization-tools 管理離線虛擬機鏡像的工具,主要有libguestfs
根據需求選擇軟件包,通常都安裝前三個,也能夠只安裝個別主要的包。
爲了減小沒必要要的麻煩,請關閉防火牆和SELinux
# cat /proc/cpuinfo |grep flags 須要全虛擬化支持爲vmx(Inter)或svm(AMD)
若是肯定物理機支持cpu虛擬化技術,而使用上述命令查找不到相應指令,請參考如下解決辦法:
http://yinuoqianjin.blog.51cto.com/8360868/1557987
3、安裝與配置
# yum groupinstall "Virtualization" "Virtualization Client""Virtualization Platform" # yum install qemu-kvm virt-manager libvirt //也可只安裝個別主要的包 # lsmod |grep kvm //kvm模塊必定要加載 kvm_intel 53484 0 kvm 316506 1 kvm_intel # service libvirtd start //啓動libvirt服務 Starting libvirtd daemon: [ OK ]
4、建立kvm虛擬機(圖形界面)
1.在kvm宿主機建立虛擬機存儲位置
# mkdir /data
2.能夠利用vnc遠程鏈接kvm宿主機,進行管理。Application→System Tools→Virtual Machine Manager
3.進入Virtual Machine Manager管理界面,新建一個虛擬機。
5.輸入虛擬機名稱,選擇「Local Install media」
6.選擇「Use CDROM or DVD」,及使用vmware的虛擬光驅
7.選擇內存及cpu,依機器性能自己而定
8.選擇虛擬機磁盤大小,及存儲位置
9.新建虛擬機信息預覽
下面就會開始安裝,和安裝操做系統是同樣的步驟。
安裝後的界面:
5、管理kvm虛擬機
經常使用命令:
virsh list 顯示虛擬機運行狀態
virsh console 使用文本方式鏈接虛擬系統
virsh start 開啓虛擬系統
virsh shutdown 關閉虛擬系統
# vim /etc/libvirt/qemu/vm01.xml //配置文件路徑
注:虛擬機和宿主機之間切換使用ctrl+】(右方括號)
# virsh console vm01 Connected to domain vm01 Escape character is ^] //如沒法進入,解決辦法:http://yinuoqianjin.blog.51cto.com/8360868/1562588
6、克隆kvm虛擬機
# virt-clone -o vm01 -n vm02 -f /data/vm02 //vm01須要關機 # ll -h /data -rwxr-xr-x 1 root root 8.0G Oct 13 17:40 vm01.img -rwxr-xr-x 1 root root 8.0G Oct 13 17:42 vm02.img
7、網絡配置(bridge)
kvm上網有兩種配置,一種是default,它支持主機與虛擬機的互訪,同時也支持虛擬機訪問互聯網,
但不支持外界訪問虛擬機。另一種方式是bridge方式,可使用虛擬機成爲網絡中具備獨立IP的主機。
具體思路:在宿主機上虛擬出一塊網卡,讓自身的eth0橋接到它上面。
1.宿主機配置網卡信息
# cat /etc/sysconfig/network-scripts/ifcfg-kvmbr0 //新建一塊虛擬網卡kvmbr0,並配置IP,類型爲橋接 DEVICE=kvmbr0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=192.168.10.10 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 DEFROUTE=yes # cat /etc/sysconfig/network-scripts/ifcfg-eth0 //宿主機自身網卡,不配IP,橋接到kvmbr0 DEVICE=eth0 HWADDR=00:0c:29:13:43:42 TYPE=Ethernet UUID=3a53422d-b30f-4623-bf50-dada471e85b3 ONBOOT=yes NM_CONTROLLED=no //NM_CONTROLLED這個屬性值,根據RedHat公司的文檔是必須設置爲「no」的 BOOTPROTO=none BRIDGE=kvmbr0 NAME="System eth0"
2.重啓宿主機網絡服務
# service NetworkManager start
3.校驗橋接接口
# brctl show bridge name bridge id STP enabled interfaces kvmbr0 8000.000c29134342 no eth0
4.vm01虛擬機網卡配置
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=52:54:00:88:6A:CE TYPE=Ethernet UUID=d1fca21a-a8d0-4a98-87ff-ab0a1e624ce2 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.10.20 NETMASK=255.255.255.0
5.1圖形配置
選擇新建的kvmbr0網卡設備
如出現下面報錯,須要重啓宿主機來解決。
5.2命令配置:
# vim /etc/libvirt/qemu/vm01.xml <interface type='bridge'> <mac address='52:54:00:88:6a:ce'/> <source bridge='kvmbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
6.總結
宿主機和虛擬機在同一網段內,vm01虛擬機就是獨立於網絡內的一臺機器了。
Bridge方式的適用範圍:服務器主機虛擬化。
NAT方式的適用範圍:桌面主機虛擬化。
附1:宿主機執行如下指令虛擬機沒有反應。
# virsh shutdown vm02 Domain vm02 is being shutdown # virsh reboot vm02 Domain vm02 is being rebooted
解決辦法(虛擬機安裝acpid便可):
虛擬機掛載光盤
1.1.進入宿主機桌面,利用圖形管理方式讓虛擬機加載系統光盤
1.2.進入vm02虛擬機,點擊歎號的標誌
1.3.選擇光驅,鏈接便可。
2.掛載,配置本地源。(略)
3.安裝並開啓acpid服務。
# yum install acpid # service acpid start Starting acpi daemon: [ OK ]
附2:宿主機重啓網絡服務時出現下面錯誤(配置bridge時)
Bringing up interface kvmbr0: Error: Connection activation failed: Failed to determine connection's virtual interface name [FAILED]
解決辦法:由於NetworkManager不支持橋接,須要關閉該服務。
# service NetworkManager stop Stopping NetworkManager daemon: [ OK ] # chkconfig --list |grep NetworkManager NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off # chkconfig NetworkManager off # chkconfig --list |grep NetworkManager NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off