一、KVM簡(jiǎn)介
KVM的全稱(chēng)是Kernel Virtual Machine,翻譯過(guò)來(lái)就是內(nèi)核虛擬機(jī)。它是一個(gè) Linux 的一個(gè)內(nèi)核模塊,該內(nèi)核模塊使得
Linux 變成了一個(gè) Hypervisor:
- 它由 Quramnet 開(kāi)發(fā),該公司于 2008年被 Red Hat 收購(gòu)。
- 它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
- 它從 Linux 2.6.20 起就作為一模塊被包含在 Linux 內(nèi)核中。
- 它需要支持虛擬化擴(kuò)展的 CPU。
- 它是完全開(kāi)源的。官網(wǎng)
1.1 KVM的功能列表
- 支持CPU 和 memory 超分(Overcommit)
- 支持半虛擬化I/O (virtio)
- 支持熱插拔 (cpu,塊設(shè)備、網(wǎng)絡(luò)設(shè)備等)
- 支持對(duì)稱(chēng)多處理(Symmetric Multi-Processing,縮寫(xiě)為 SMP )
- 支持實(shí)時(shí)遷移(Live Migration)
- 支持 PCI 設(shè)備直接分配和 單根I/O 虛擬化 (SR-IOV)
- 支持 內(nèi)核同頁(yè)合并 (KSM )
- 支持 NUMA (Non-Uniform Memory Access,非一致存儲(chǔ)訪問(wèn)結(jié)構(gòu) )
1.2 KVM原理
KVM 本身不執(zhí)行任何模擬,需要用戶(hù)空間應(yīng)用程序 QEMU 通過(guò) /dev/kvm 接口設(shè)置一個(gè)客戶(hù)機(jī)虛擬服務(wù)器的地址空間,向它提供模擬的 I/O,KVM 模塊主要功能是初始化CPU硬件,打開(kāi)虛擬化模式,然后將虛客戶(hù)機(jī)運(yùn)行在虛擬機(jī)模式下,并對(duì)虛擬客戶(hù)機(jī)的運(yùn)行提供一定的支持。在硬件虛擬化技術(shù)的支持下,內(nèi)核的 KVM 模塊與 QEMU 的設(shè)備模擬協(xié)同工作,構(gòu)成一套和物理計(jì)算機(jī)系統(tǒng)完全一致的虛擬化計(jì)算機(jī)軟硬件系統(tǒng)。
二、KVM基礎(chǔ)功能
2.1 CPU
在 QEMU/KVM 中,QEMU 提供對(duì) CPU 的模擬,展現(xiàn)給客戶(hù)機(jī)一定的 CPU 數(shù)目和 CPU 的特性。在 KVM 打開(kāi)的情況下,客戶(hù)機(jī)中 CPU 指令的執(zhí)行由硬件處理器的虛擬化功能「如 Intel VT-x 和 AMD AMD-V」輔助執(zhí)行,具有非常高的執(zhí)行效率。
在 KVM 環(huán)境中,每個(gè)客戶(hù)機(jī)都是一個(gè)標(biāo)準(zhǔn)的 Linux 進(jìn)程(QEMU 進(jìn)程),而每一個(gè) vCPU 在宿主機(jī)中是 QEMU 進(jìn)程派生的一個(gè)普通線程。
在 Linux 中,一般進(jìn)程有兩種執(zhí)行模式:
- 內(nèi)核模式
- 用戶(hù)模式
而在 KVM 環(huán)境中,增加了第三條模式:客戶(hù)模式。vCPU 在三種執(zhí)行模式下的分工如下:
- 用戶(hù)模式
- 主要處理 I/O 的模擬和管理,由 QEMU 的代碼實(shí)現(xiàn)
- 內(nèi)核模式
- 主要處理特別需要高性能和安全相關(guān)的指令,如處理客戶(hù)模式到內(nèi)核模式的轉(zhuǎn)換,處理客戶(hù)模式下的 I/O 指令或其它特權(quán)指令引起的 VM-Exit,處理影子內(nèi)存管理 (shadow MMU)
- 客戶(hù)模式
- 主要執(zhí)行 Guest 中的大部分指令,I/O 和一些特權(quán)指令除外「它們會(huì)引起 VM-Exit,被 hypervisor 截獲并模擬」
2.2 內(nèi)存
內(nèi)存是一個(gè)非常重要的部件,它是與 CPU 溝通的一個(gè)橋梁。
在通過(guò) QEMU 命令行啟動(dòng)客戶(hù)機(jī)時(shí)設(shè)置內(nèi)存的參數(shù)是 -m:
- -m megs # 設(shè)置客戶(hù)機(jī)的內(nèi)存為 megs MB 大小
EPT 和 VPID
EPT(Extended Page Tables,擴(kuò)展頁(yè)表),屬于 Intel 的第二代硬件虛擬化技術(shù),它是針對(duì)內(nèi)存管理單元(MMU)的虛擬化擴(kuò)展。如果只是一臺(tái)物理服務(wù)器,這個(gè)物理地址就只為一個(gè)操作系統(tǒng)服務(wù),但如果進(jìn)行了虛擬化部署,有多個(gè)虛擬機(jī)時(shí),就存在著穩(wěn)定性的隱患。因?yàn)樵谶M(jìn)行 VM Entry(虛擬機(jī)進(jìn)入)與 VM Exit(虛擬機(jī)退出)時(shí)(尤其是后者),都要對(duì)內(nèi)存頁(yè)進(jìn)行修改。但物理內(nèi)存是多個(gè)虛擬機(jī)共享的,因此不能讓虛擬機(jī)直接訪問(wèn)物理地址,否則一個(gè)虛擬機(jī)出現(xiàn)內(nèi)存錯(cuò)誤,就會(huì)殃及整個(gè)物理服務(wù)器的運(yùn)行。所以必須要采取虛擬地址,而 EPT 的作用就在于加速?gòu)奶摂M機(jī)地址至主機(jī)物理地址的轉(zhuǎn)換過(guò)程,節(jié)省傳統(tǒng)軟件處理方式的系統(tǒng)開(kāi)銷(xiāo)。
VPID(Virtual-Processor Identifiers,虛擬處理器標(biāo)識(shí))。是對(duì)現(xiàn)在的 CPUID 功能的一個(gè)強(qiáng)化,因?yàn)樵诿總€(gè) CPU 中都有一個(gè) TLB,用來(lái)緩存邏輯地址到物理地址的轉(zhuǎn)換表,而每個(gè)虛擬機(jī)都有自己的虛擬 CPU 來(lái)對(duì)應(yīng)。所以,在進(jìn)行遷移時(shí)要進(jìn)行 TLB 的轉(zhuǎn)存和清除。而 VPID 則會(huì)跟蹤每個(gè)虛擬 CPU 的 TLB,當(dāng)進(jìn)行虛擬機(jī)遷移或 VM Entry 與 VM Exit 時(shí),VMM可以動(dòng)態(tài)的分配非零虛擬處理器的 ID 來(lái)迅速匹配(0 ID 給 VMM 自己使用),從而避免了 TLB 的轉(zhuǎn)存與清除的操作,節(jié)省了系統(tǒng)開(kāi)銷(xiāo),并提高了遷移速度,同時(shí)也降低對(duì)系統(tǒng)性能的影響。
# grep -E 'ept|vpid' /proc/cpuinfo # 查看 cpu 是否支持相應(yīng)特性
# cat /sys/module/kvm_intel/parameters/{ept,vpid} # 確認(rèn)是否開(kāi)啟 ept 和 vpid
三、CentOS上安裝Kvm步驟
3.1 KVM
需要有 CPU 的支持(Intel VT 或 AMD SVM),在安裝 KVM 之前檢查一下 CPU 是否提供了虛擬技術(shù)的支持。
- 基于 Intel 處理器的系統(tǒng),運(yùn)行g(shù)rep vmx /proc/cpuinfo查找 CPU flags 是否包括 vmx 關(guān)鍵詞
- 基于 AMD 處理器的系統(tǒng),運(yùn)行g(shù)rep svm /proc/cpuinfo查找 CPU flags 是否包括 svm 關(guān)鍵詞
- 檢查BIOS,確保BIOS里開(kāi)啟VT選項(xiàng)
3.2 安裝KVM所需組件
除了3.1的KVM內(nèi)核模塊外,在用戶(hù)空間需要QEMU來(lái)模擬CPU和設(shè)備模型以及用于啟動(dòng)客戶(hù)機(jī)進(jìn)程,這樣才有一個(gè)完整的KVM運(yùn)行環(huán)境。而qemu-kvm是為了針對(duì)KVM專(zhuān)門(mén)做了修改和優(yōu)化的QEMU分支。
yum install seabios qemu-kvm virt-manager libvirt -y
啟動(dòng)libvirt服務(wù):
systemctl start libvirtd
3.3 創(chuàng)建并啟動(dòng)bridge設(shè)備
安裝需要的RPM包
yum install -y bridge-utils tuned
查看tun模塊是否加載:
[root@server-31 ~]# lsmod | grep tun
tun 27141 12 vhost_net
檢查/dev/net/tun的權(quán)限,需要讓當(dāng)前用戶(hù)擁有可讀寫(xiě)的權(quán)限
[root@server-31 ~]# ll /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Mar 10 08:33 /dev/net/tun
創(chuàng)建/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
PEERDNS=no
DELAY=0
STP=yes
BRIDGING_OPTS=""
NM_CONTROLLED=no
IPADDR=x.x.x.x
NETMASK=255.255.255.0
GATEWAY=x.x.x.x
修改/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=24:6e:96:27:65:5c
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
HOTPLUG=yes
PEERDNS=no
BRIDGE=br0
NM_CONTROLLED=no
重啟eth0:
ifdown eth0
ifup eth0
啟動(dòng)br0:
ifup br0
3.4 創(chuàng)建虛擬機(jī):
基于iso文件創(chuàng)建
劃分磁盤(pán):
qemu-img create -f qcow2 /data/centos-6.4.qcow2 10G
創(chuàng)建虛擬機(jī)(本命令的虛擬機(jī)的網(wǎng)絡(luò)模式基于網(wǎng)橋)
virt-install --virt-type kvm --name centos-6.4 --ram 1024 \
--cdrom=/data/CentOS-6.4-x86_64-netinstall.iso \
--disk path=/data/centos-6.4.qcow2,size=10,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
基于現(xiàn)在的虛擬機(jī)創(chuàng)建
拷貝已有虛擬機(jī)的disk文件:
cp old_centos7.2.qcow2 new_centos7.2.qcow2
創(chuàng)建new_centos7.2.xml文件如下:
<domain type='kvm'>
<name>new_centos7.2</name>
<memory>16097152</memory>
<currentMemory>16097152</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/new_centos7.2.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type="bridge">
<model type="virtio"/>
<source bridge="br0"/>
</interface>
<input type='tablet' bus='usb'/>
<graphics type='vnc' port='-1' listen = '0.0.0.0' keymap='en-us'/>
</devices>
</domain>
啟動(dòng)虛擬機(jī)
virsh define new_centos7.2.xml
virsh start new_centos7.2
查看創(chuàng)建的虛擬機(jī):
[root@server-31 var]# virsh list --all
Id Name State
----------------------------------------------------
11 centos.7.2 running
/etc/libvirt/qemu目錄下會(huì)發(fā)現(xiàn)centos.7.2.xml,內(nèi)容如下:
<domain type='kvm'>
<name>centos.7.2</name>
<uuid>727ade52-43ba-46a0-8865-1198498af22f</uuid>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
...
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/Centos-7.2.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
...
<interface type='bridge'>
<mac address='52:54:00:76:c4:91'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
</devices>
</domain>
查看網(wǎng)橋信息
root@server-31 qemu]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.246e9627655c yes eth0
vnet0
后期可能會(huì)因?yàn)樾枨髮?duì)KVM重新配置,這個(gè)時(shí)候我們只需要修改對(duì)應(yīng)的xml文件即可
修改配置的時(shí)候需要關(guān)閉KVM: virsh destroy centos.7.2
使用virsh define centos.7.2.xml使配置生效
使用virsh start centos.7.2啟動(dòng)虛擬機(jī)
四、虛擬機(jī)的上網(wǎng)方式
4.1 nat
1.nat模式配置
KVM默認(rèn)采用nat模式,用戶(hù)網(wǎng)絡(luò)(User Networking):讓虛擬機(jī)訪問(wèn)主機(jī)、互聯(lián)網(wǎng)或本地網(wǎng)絡(luò)上的資源的簡(jiǎn)單方法,但是不能從網(wǎng)絡(luò)或其他的客戶(hù)機(jī)訪問(wèn)客戶(hù)機(jī)。在公網(wǎng)IP不夠使用KVM還需要上網(wǎng)的時(shí)候可以使用,大大節(jié)省了公網(wǎng)IP!同時(shí)這種模式也使得KVM不用暴露在公網(wǎng)之中,也增加了安全性。
下圖是虛擬機(jī)管理模塊產(chǎn)生的接口關(guān)系:
其中virbr0是由宿主機(jī)虛擬機(jī)支持模塊安裝時(shí)產(chǎn)生的虛擬網(wǎng)絡(luò)接口,也是一個(gè)switch和bridge,負(fù)責(zé)把內(nèi)容分發(fā)到各虛擬機(jī)。
從圖上可以看出,虛擬接口和物理接口之間沒(méi)有連接關(guān)系,所以虛擬機(jī)只能在通過(guò)虛擬的網(wǎng)絡(luò)訪問(wèn)外部世界,無(wú)法從網(wǎng)絡(luò)上定位和訪問(wèn)虛擬主機(jī)。
下面是nat的default配置,可以自定義地址池
[root@server-31 networks]# cat /etc/libvirt/qemu/networks/default.xml
<network>
<name>default</name>
<uuid>71c7ed8d-08aa-44d0-8f76-cc4fd2dd4380</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:91:d4:95'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
確認(rèn)路由轉(zhuǎn)發(fā)開(kāi)啟:
[root@server-31 networks]# cat /proc/sys/net/ipv4/ip_forward
1
使用virsh net-start default來(lái)啟動(dòng)nat網(wǎng)絡(luò)
4.2 bridge
網(wǎng)橋(bridge)模式可以讓客戶(hù)機(jī)和宿主機(jī)共享一個(gè)物理網(wǎng)絡(luò)設(shè)備連接網(wǎng)絡(luò),客戶(hù)機(jī)有自己的獨(dú)立IP地址,可以直接連接與宿主機(jī)一模一樣的網(wǎng)絡(luò),客戶(hù)機(jī)可以訪問(wèn)外部網(wǎng)絡(luò),外部網(wǎng)絡(luò)也可以直接訪問(wèn)客戶(hù)機(jī)。
Bridge方式即虛擬網(wǎng)橋的網(wǎng)絡(luò)連接方式,是客戶(hù)機(jī)和子網(wǎng)里面的機(jī)器能夠互相通信。可以使虛擬機(jī)成為網(wǎng)絡(luò)中具有獨(dú)立IP的主機(jī)。
橋接網(wǎng)絡(luò)(也叫物理設(shè)備共享)被用作把一個(gè)物理設(shè)備復(fù)制到一臺(tái)虛擬機(jī)。網(wǎng)橋多用作高級(jí)設(shè)置,特別是主機(jī)多個(gè)網(wǎng)絡(luò)接口的情況。
配置步驟見(jiàn)3.3小節(jié)
網(wǎng)絡(luò)配置可以同時(shí)存在nat和Bridge.
五、QEMU
Qemu本身并不是KVM的一部分,其自身就是一個(gè)著名的開(kāi)源虛擬機(jī)軟件。與KVM不同,QEMU虛擬機(jī)是一個(gè)純軟件的實(shí)現(xiàn),所以性能低下。但是,其優(yōu)點(diǎn)是在支持QEMU本身編譯運(yùn)行的平臺(tái)上就可以實(shí)現(xiàn)虛擬機(jī)的功能。
5.1 qemu-img
qemu-img 是 QEMU 的磁盤(pán)管理工具,支持多種虛擬鏡像格式
[root@server-31 ~]# qemu-img -h | grep Support
Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug
簡(jiǎn)單介紹一下qcow2和raw格式鏡像:
qcow2 是 qcow 的一種改進(jìn),是 QEMU 實(shí)現(xiàn)的一種虛擬機(jī)鏡像格式。更小的虛擬硬盤(pán)空間(尤其是宿主分區(qū)不支持 hole 的情況下),支持壓縮、加密、快照功能,磁盤(pán)讀寫(xiě)性能較 raw 差。
raw是原始的磁盤(pán)鏡像格式,它的優(yōu)勢(shì)在于它非常簡(jiǎn)單而且非常容易移植到其他模擬器(emulator,QEMU 也是一個(gè) emulator)上去使用。如果客戶(hù)機(jī)文件系統(tǒng)(如 Linux 上的 ext2/ext3/ext4、Windows 的 NTFS)支持“空洞” (hole),那么鏡像文件只有在被寫(xiě)有數(shù)據(jù)的扇區(qū)才會(huì)真正占用磁盤(pán)空間,從而有節(jié)省磁盤(pán)空間的作用。qemu-img 默認(rèn)的 raw 格式的文件其實(shí)是稀疏文件(sparse file)「稀疏文件就是在文件中留有很多空余空間,留備將來(lái)插入數(shù)據(jù)使用。如果這些空余空間被 ASCII 碼的 NULL 字符占據(jù),并且這些空間相當(dāng)大,那么這個(gè)文件就被稱(chēng)為稀疏文件,而且,并不分配相應(yīng)的磁盤(pán)塊」,dd 命令創(chuàng)建的也是 raw 格式,不過(guò) dd 一開(kāi)始就讓鏡像實(shí)際占用了分配的空間,而沒(méi)有使用稀疏文件的方式對(duì)待空洞而節(jié)省磁盤(pán)空間。盡管一開(kāi)始就實(shí)際占用磁盤(pán)空間的方式?jīng)]有節(jié)省磁盤(pán)的效果,不過(guò)它在寫(xiě)入新的數(shù)據(jù)時(shí)不需要宿主機(jī)從現(xiàn)有磁盤(pán)空間中分配,從而在第一次寫(xiě)入數(shù)據(jù)時(shí)性能會(huì)比稀疏文件的方式更好一點(diǎn)。簡(jiǎn)單來(lái)說(shuō),raw 有以下幾個(gè)特點(diǎn):
- 尋址簡(jiǎn)單,訪問(wèn)效率高
- 可以通過(guò)格式轉(zhuǎn)換工具方便地轉(zhuǎn)換為其它格式
- 格式實(shí)現(xiàn)簡(jiǎn)單,不支持壓縮、快照和加密
- 能夠直接被宿主機(jī)掛載,不用開(kāi)虛擬機(jī)即可在宿主和虛擬機(jī)間進(jìn)行數(shù)據(jù)傳輸
格式轉(zhuǎn)換
以raw轉(zhuǎn)換為qcow2為例
qemu-img convert -f raw -O qcow2 test.raw test.qcow2
# -f fmt
# -O output_fmt
六、KVM管理工具
6.1 libvirt
libvirt 是為了更方便地管理平臺(tái)虛擬化技術(shù)而設(shè)計(jì)的開(kāi)放源代碼的應(yīng)用程序接口、守護(hù)進(jìn)程和管理工具,他不僅提供了對(duì)虛擬化客戶(hù)機(jī)的管理,也提供了對(duì)虛擬化網(wǎng)絡(luò)和存儲(chǔ)的管理。
libvirt中涉及幾個(gè)重要的概念,解釋如下:
節(jié)點(diǎn)(Node):一個(gè)物理機(jī)器,上面可能運(yùn)行著多個(gè)虛擬客戶(hù)機(jī)。Hypervisor和Domain都運(yùn)行在Node之上。
Hypervisor:也稱(chēng)虛擬機(jī)監(jiān)控器(VMM),如KVM、Xen、VMware、Hyper-V等,是虛擬化中的一個(gè)底層軟件層,它可以虛擬化一個(gè)節(jié)點(diǎn)讓其運(yùn)行多個(gè)虛擬客戶(hù)機(jī)(不同客戶(hù)機(jī)可能有不同的配置和操作系統(tǒng))。
域(Domain):是在Hypervisor上運(yùn)行的一個(gè)客戶(hù)機(jī)操作系統(tǒng)實(shí)例。域也被稱(chēng)為實(shí)例(instance,如亞馬遜的AWS云計(jì)算服務(wù)中客戶(hù)機(jī)就被稱(chēng)為實(shí)例)、客戶(hù)機(jī)操作系統(tǒng)(guest OS)、虛擬機(jī)(virtual machine),它們都是指同一個(gè)概念。
libvirt安裝
yum install -y libvirt
systemctl start libvirtd
libvirt使用
在使用libvirt對(duì)虛擬化系統(tǒng)進(jìn)行管理師,很多地方都是XML文件作為配置文件。
前面的new_centos7.2.xml配置文件中,關(guān)于CPU的配置為:
<vcpu>2</vcpu>
關(guān)于內(nèi)存的配置為:
<memory>16097152</memory>
<currentMemory>16097152</currentMemory>
memory標(biāo)簽中的值表示客戶(hù)機(jī)最大可使用的內(nèi)存,為:16097152KB(即16GB)
currentMemory標(biāo)簽中的值表示啟動(dòng)時(shí)及分配給客戶(hù)機(jī)使用的內(nèi)存
關(guān)于啟動(dòng)順序的配置
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
這樣的配置表示客戶(hù)機(jī)的類(lèi)型是HVM類(lèi)型(硬件虛擬機(jī)),它表示在硬件輔助虛擬化技術(shù)的支持下不需要修改客戶(hù)機(jī)操作系統(tǒng)就可以啟動(dòng)客戶(hù)機(jī)。
boot選項(xiàng)用于設(shè)置客戶(hù)機(jī)啟動(dòng)時(shí)的設(shè)備,hd表示硬盤(pán),cdrom表示光盤(pán)
網(wǎng)橋的配置
<devices>
···
<interface type="bridge">
<model type="virtio"/>
<source bridge="br0"/>
</interface>
</devices>
type='bridge'表示使用橋接方式使客戶(hù)機(jī)獲得網(wǎng)絡(luò),可以用address來(lái)配置客戶(hù)機(jī)中網(wǎng)卡的MAC地址,<model type="virtio"/>表示在客戶(hù)機(jī)中使用virtio-net驅(qū)動(dòng)的網(wǎng)卡設(shè)備,<source bridge='br0'> 表示使用宿主機(jī)的br0網(wǎng)絡(luò)接口來(lái)建立網(wǎng)橋
如果選用NAT方式的虛擬機(jī)網(wǎng)絡(luò)配置(需要保證宿主機(jī)中運(yùn)行著dhcp和DNS服務(wù)器,一般默認(rèn)使用dnsmasq),那么在域的XML配置中,配置實(shí)例如下:
<devices>
···
<interface type="network">
<source netwokr="default"/>
</interface>
</devices>
存儲(chǔ)的配置
<devices>
···
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/new_centos7.2.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
</devices>
上面的配置表示,使用qcow2格式的centos7.2鏡像文件作為客戶(hù)機(jī)的磁盤(pán),其在客戶(hù)機(jī)中使用virtio總線,設(shè)備名稱(chēng)為/dev/vda