KVM虛擬機管理配置——libvirt

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工做原理以下圖:架構

wKioL1T1K4DRXfNPAAJBES4pTo0740.jpg

 一句話描述:管理工具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)的關係以下圖:

wKioL1T1Lfiynch3AADMhMen3O8818.jpg

在物理節點(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安裝(linuxwindows客戶端均可以),在上一篇《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」等獨立參數來配置。

相關文章
相關標籤/搜索