KVM的原理與使用

一、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-principle.png

二、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 截獲并模擬」
kvm-cpu.png

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)系:

kvm-nat.png

其中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ò)接口的情況。

kvm-bridge.png

配置步驟見(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è)重要的概念,解釋如下:

  1. 節(jié)點(diǎn)(Node):一個(gè)物理機(jī)器,上面可能運(yùn)行著多個(gè)虛擬客戶(hù)機(jī)。Hypervisor和Domain都運(yùn)行在Node之上。

  2. 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))。

  3. 域(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

參考

世民談云計(jì)算
KVM虛擬化技術(shù)實(shí)戰(zhàn)與原理解析
枯木的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,263評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,946評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,186評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,409評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,641評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,872評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,650評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容