1、關於libvirtnode
1)libvirt簡介linux
Libvirt是目前使用最普遍的虛擬機管理工具和應用程序接口(API),經常使用的虛擬機管理工具(virsh、virt-install、virt-manager)和雲計算架構平臺(如:OpenStack、OpenNubula)等在底層都使用libvirt的應用程序接口。es6
Libvirt是一套開源的支持linux下虛擬化工具的函數庫,爲安全有效的管理各域,libvirt提供的一個公共的穩定軟件層。vim
Libvirt由三個部分組成:應用程序接口(API)、一個守護進程libvirtd、一個默認的命令行管理工具virsh。windows
做用分別以下:api
API爲其餘虛擬機管理工具(如virsh virt-manager)提供程序庫支持;安全
Libvirtd守護進程管理全部域,在使用各工具對虛擬機進行管理時,該守護進程須要打開;服務器
Virsh是libvirt項目中默認的命令行管理工具,具備定義、啓動、中止等管理功能。網絡
2)Libvirt工做原理以下圖:架構
一句話描述:管理工具virsh、virt-manager、virt-install等,經過使用libvirt提供的API的,對虛擬化程序(Hypervisor)在各物理節點(node)上虛擬化出的多個域(domain,機客戶操做系統 Guest OS)進行操做管理。
概念解釋:
虛擬機管理程序(Hypervisor):是一個虛擬化軟件,可讓一個節點上虛擬出多個客戶機,經常使用的虛擬化軟件有:KVM、Xen、VMware、VirtualBox等;
節點(node):指一臺物理機,每一個node上面能夠虛擬化出多個虛擬域(Domain);
域(domain):虛擬化軟件在物理機上虛擬化出的一個客戶機,域也稱爲實例,或客戶機操做系統(Guest OS)、虛擬機(Virtual machine)。
3)節點(node)、虛擬管理程序(Hypervisor)、域(domain)的關係以下圖:
在物理節點(node)上運行虛擬化軟件(Hypervisor),經過Hypervisor在node上生成多個獨立的虛擬域(domain)。
2、準備工做——軟件安裝與網橋配置
1)檢查服務器CPU是否支持虛擬化,看是否有vmx或svm 參數
[root@project ~]# grep -E 'vmx|svm' /proc/cpuinfo flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pebs bts rep_good xtopology dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt aes lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid |
2)安裝所需軟件
經過yum源安裝虛擬化軟件與管理工具相關的3組軟件包
[root@project ~]# yum groupinstall "Virtualization Client" "Virtualization Platform" "Virtualization Tools" |
啓動libvirt服務
[root@project ~]# /etc/init.d/libvirtd restart Stopping libvirtd daemon: [ OK ] Starting libvirtd daemon: [ OK ] |
安裝網橋管理工具
[root@project ~]# yum install bridge-utils tunctl -y |
3)添加橋接網絡(Bridge)
新建網橋br0配置文件,將網卡em1加入網橋br0
[root@project ~]# cd /etc/sysconfig/network-scripts [root@project network-scripts]# vim ifcfg-br0 DEVICE=br0 ONBOOT=yes BOOTPROTO=static IPADDR=10.10.100.30 NETMASK=255.255.255.0 GATEWAY=10.10.100.254 TYPE=Bridge
[root@project network-scripts]# vim ifcfg-em1 DEVICE="em1" ONBOOT="yes" BRIDGE=br0 |
重啓服務器網絡服務,查看網橋br0
br0 Link encap:Ethernet HWaddr 90:B1:1C:0D:80:14 inet addr:10.10.100.30 Bcast:10.10.100.255 Mask:255.255.255.0 inet6 addr: fe80::92b1:1cff:fe0d:8014/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:584 errors:0 dropped:0 overruns:0 frame:0 TX packets:458 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:43198 (42.1 KiB) TX bytes:53755 (52.4 KiB)
em1 Link encap:Ethernet HWaddr 90:B1:1C:0D:80:14 inet6 addr: fe80::92b1:1cff:fe0d:8014/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:602 errors:0 dropped:0 overruns:0 frame:0 TX packets:435 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:55634 (54.3 KiB) TX bytes:52012 (50.7 KiB) Interrupt:36 Memory:da000000-da012800 |
查看生成的橋接網橋 br0
[root@project ~]# brctl show bridge namebridge idSTP enabledinterfaces br08000.90b11c0d8014noem1 |
4)添加內部網絡(NAT)
軟件安裝好後,會自動生成一個內部網橋配置文件——default,文件路徑以下:
[root@project qemu]# ls /etc/libvirt/qemu/networks/default.xml |
添加自定義的內部網橋
複製default.xml文件爲natwork.xml,修改裏面的內容以下:
[root@project qemu]# cp default.xml natwork.xml [root@project qemu]# cat /etc/libvirt/qemu/networks/natwork.xml <network> <name>natwork</name> //網絡名稱 <uuid>d4545757-9ceb-435a-860a-5a0ca81015e9</uuid> //修改惟一標識符 <bridge name="virbr1" /> //系統中顯示的網橋名稱,相似於橋接網絡的br0 <mac address='52:54:00:3C:E4:67'/> <forward/> <ip address="192.168.2.1" netmask="255.255.255.0"> //設置本內部網絡的網段 <dhcp> <range start="192.168.2.2" end="192.168.2.254" /> //可DHCP分配的地址 </dhcp> </ip> |
5)內部網絡的管理——定義、啓動、關閉等
[root@project networks]# virsh net-define natwork.xml //根據配置定義網絡 Network natwork defined from natwork.xml [root@project networks]# virsh net-start natwork //啓動指定內部網絡 Network natwork started [root@project networks]# virsh net-list //查看已定義的內部網絡狀態 Name State Autostart Persistent -------------------------------------------------- default active yes yes natwork active no yes [root@project networks]# virsh net-destroy default //關閉指定內部網絡 Network natwork destroyed |
將內部網絡設置爲開機自啓動
[root@project networks]# virsh net-autostart natwork //設置指定內部網絡爲開啓啓動 Network natwork marked as autostarted [root@project networks]# ls /etc/libvirt/qemu/networks/autostart/ default.xml natwork.xml //設置開機啓動的內部網絡,會自動在autostart下生成配置連接 [root@project networks]# virsh net-list Name State Autostart Persistent -------------------------------------------------- default active yes yes natwork active yes yes |
查看內部網絡的網橋
[root@project ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.66d7c17b4c66 no em1 //br0 爲橋接網絡網橋 tap10 tap11 vnet0 vnet1 virbr1 8000.5254002ce366 yes virbr0-nic //virbr1爲natwork內部網絡網橋 vnet2 vnet4 |
3、KVM的配置管理
1)建立本地磁盤映像,使用raw格式
[root@project KVM_img]# qemu-img create -f raw dell_01.img 30G Formatting 'dell_01.img', fmt=raw size=32212254720 |
使用qcow2格式時,須要加上預分配元數據參數 preallocation=metadata
[root@project KVM_img]# qemu-img create -f qcow2 -o preallocation=metadata dell_01.img 30G Formatting 'dell_01.img', fmt=qcow2 size=32212254720 encryption=off cluster_size=65536 preallocation='metadata' |
使用qcow2格式,若是不加預分配元數據參數,使用virt-install安裝Guest時,磁盤大小爲0。
2)使用virt-install安裝Guest系統
經過本地光盤安裝——網絡爲橋接模式
[root@project KVM_img]# virt-install --name=dell_test01 --vcpus=2 --ram=2048 \ --disk path=/data/KVM_img/dell_01.img,size=30 \ --network bridge=br0,model=virtio \ --os-type=linux --os-variant=rhel6 \ --cdrom=/data/CentOS-6.3-x86_64-bin-DVD1.iso \ --vnc --vncport=5904 --vnclisten=10.10.100.30 |
經過本地光盤安裝——網絡爲NAT模式
[root@project KVM_img]# virt-install --name=dell_test02 --vcpus=2 --ram=2048 --disk path=/data/KVM_img/dell_01.img,format=raw --os-type=linux --os-variant=rhel6 --network network=default,mac=52:54:01:79:47:34 --graphics vnc,port=5905,listen=10.10.100.30 --cdrom=/data/CentOS-6.3-x86_64-bin-DVD1.iso |
經過網絡源安裝
[root@project ~]# virt-install --name=dell_test03 --ram=2048 --vcpus=2 --disk path=/data/KVM_img/dell_01.img,format=raw --os-type=linux --os-variant=rhel6 --network network=default,mac=52:54:01:79:47:34 --graphics vnc,port=5905,listen=10.10.100.30 --location=ftp://10.10.100.30/R6 |
而後使用vnc客戶端遠程鏈接,執行Linux安裝(linux與windows客戶端均可以),在上一篇《VM虛擬機安裝管理——qemu-kvm方式》已經演示。
安裝參數說明:(安裝時根據須要選擇參數,有些可不選)
-n --name 指定Guest名字
-r --ram 指定內存大小
--vcpus 指定Guest虛擬CPU的個數
-u --uuid Guest系統的惟一標識符,可使用uuidgen命令生成
-p --paravirt 指定Guest爲半虛擬化
--disk 指定Guest的存儲磁盤,path= 指定存儲位置能夠是虛擬映像、lvm分區、物理分區等,format= 指定虛擬映像格式,size= 指定虛擬映像大小,單位爲G
-w --network 網絡配置
--network bridge=br0 指定Guest網絡到特定的橋接網橋
--network network=mynat1 指定Guest網絡到特定的nat網橋
--network network=mynet,model=virtio,mac=00:11... 使用參數指定網卡模式,mac地址等
--os-type= 指定Guest系統的類型,如linux、unix、windows
--os-variant= 指定安裝Guest的發行版本,如rhel5、rhel6等
-c --cdrom 指定Guest的虛擬光驅,能夠是ISO鏡像文件,或CDROM設備,也能夠是一個經過URL能夠訪問和獲取到的boot.iso鏡像
-l --location 指定kernel和initrd安裝源,對於半虛擬化是必須的,全虛擬化使用--cdrom或--location
--location 使用nfs:host/path、ftp://host/path、http://host/path的方式指定安裝源
-pxe 指定使用PXE boot 協議來引導加載系統
-x --extra-args用來給加載的kernel和initrd提供額外的內核命令行和參數
如:」ks=http://10.0.0.10/rehel-ks.cfg ip=xx netmask=xx gateway=xxx」
--graphics vnc,port=5905,listen=10.10.100.30 指定圖形設置,主要爲vnc配置,能夠用來遠程安裝與管理虛機,能夠配置vnc端口、密碼、監聽地址等。VNC圖形還可使用「--vnc --vncport=5904 --vnclisten=10.10.100.30」等獨立參數來配置。