libvirt xml文件解析 -- Devices

節(jié)選
Devices 通常需要指定:
1) 模擬器
2) 磁盤
3) 網(wǎng)卡
4) 圖形界面接口


1) 模擬器

范例:

<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>QEMU-fedora-i686</name>
  <memory>219200</memory>
  <os>
    <type arch='i686' machine='pc'>hvm</type>
  </os>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-newarg'/>
    <qemu:env name='QEMU_ENV' value='VAL'/>
  </qemu:commandline>
</domain>

QEMU emulated guest on x86_64
<emulator>/usr/bin/qemu-system-x86_64</emulator>
KVM hardware accelerated guest on i686
<emulator>/usr/bin/qemu-kvm</emulator>
LXC container driver
<emulator>/usr/libexec/libvirt_lxc</emulator>
libxl hypervisor driver for Xen
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>

OpenVZ container driver
VirtualBox hypervisor driver
VMware ESX hypervisor driver
VMware Workstation / Player / Fusion hypervisors driver
Microsoft Hyper-V hypervisor driver
IBM PowerVM hypervisor driver (phyp)
Virtuozzo driver
Bhyve driver
沒看到,沒有???


2) 磁盤

    <disk type='file' device='disk'>
      <source file='/var/lib/libvirt/images/demo2.img'/>
      <target dev='hda'/>
    </disk>
disk

disk 元素 用于描述disks屬性,如下:

type

可選值有 "file", "block", "dir" , "network" , o"volume"

device

描述映射到Guset OS后的角色??捎弥?code>"floppy", "disk", "cdrom", "lun", 默認(rèn)為 "disk"
"lun"僅用于iscsi存儲(chǔ) type為 "block"或者"network",光纖存儲(chǔ) type為“volume”
"lun"僅可被識(shí)別為raw設(shè)備,不可用于LVM

model

描述了disk的仿真模式。通常,取決于總線屬性。但是在總線(bus)屬性為"virtio"的時(shí)候,可以擴(kuò)展為"virtio-transitional", "virtio-non-transitional", "virtio"

rawio

定義disk是否需要rawio功能??捎弥?"yes" or "no",默認(rèn)"no"。
僅用于"lun"。

sgio

不知道是個(gè)什么玩意。定義了SG_IO指令是否用于disk??捎弥?filtered" or "unfiltered",默認(rèn)"filtered"。
僅用于"lun"。

snapshot

描述了磁盤快照的默認(rèn)模式
Indicates the default behavior of the disk during disk snapshots:
"internal" 需要一個(gè)qcow2格式的文件,用于存儲(chǔ)執(zhí)行快照后的快照和修改的數(shù)據(jù)文件。
"external" 將把快照文件和live data隔離。
"no" 磁盤不參與快照。
Read-only 磁盤默認(rèn) "no", 其他磁盤模式取決于hypervisor的功能。


3) 網(wǎng)卡

    <interface type='network'>
      <source network='default'/>
      <mac address='24:42:53:21:52:45'/>
    </interface>
...
<devices>
  <interface type='direct' trustGuestRxFilters='yes'>
    <source dev='eth0'/>
    <mac address='52:54:00:5d:c7:9e'/>
    <boot order='1'/>
    <rom bar='off'/>
  </interface>
</devices>
...
類型 interface type
Virtual network type='network'
Bridge to LAN type='bridge'
Userspace SLIRP stack type='user'
Generic ethernet connection type='ethernet'
Direct attachment to physical interface type='direct'
PCI Passthrough type='hostdev'
Multicast tunnel type='mcast'
TCP tunnel type='server' type='client'
UDP unicast tunnel type='udp'
vhost-user interface type='vhostuser'
Virtual network

推薦用于動(dòng)態(tài)地址、無線網(wǎng)絡(luò)環(huán)境?;蛘咧鳈C(jī)硬件信息使用<network>元素單獨(dú)描述的多主機(jī)環(huán)境。

環(huán)境 forward mode
isolated no <forward>
NAT <forward mode='nat'>
Route <forward mode='route'/>
directly via macvtap
Bridge <forward mode='bridge> ,<forward mode='private'>,<forward mode='vepa'> ,<forward mode='passthrough'>

如果forward mode 設(shè)置為bridge,private,vepa,passthrough,那么DNS和DHCP設(shè)置在libvirt外。如果是isolated, nat, routed模式,DNS和DHCP需要由libvirt提供,IP范圍通過 'virsh net-dumpxml [networkname]'設(shè)置。

"default"作為默認(rèn)虛擬網(wǎng)絡(luò),提供指向路由(區(qū)別于指向設(shè)備)的NAT服務(wù),IP范圍192.168.122.0/255.255.255.0。

Guest將會(huì)提供一個(gè)關(guān)聯(lián)的tun設(shè)備,以vnetN命名。也可以使用<target>定義。

如果type=network , portgroup也將一起定義。一個(gè)網(wǎng)絡(luò)可以擁有多個(gè)postgroups。
如果type=network , portid屬性有時(shí)候也會(huì)設(shè)置。這提供了UUID(virNetworkPortPtr對(duì)象),記錄interface和network之間的關(guān)聯(lián)信息。因?yàn)镻ort對(duì)象是隨著startup、shutdown自動(dòng)創(chuàng)建刪除的,所以該屬性只讀。

類似于direct網(wǎng)絡(luò),network也可以定義virtualport元素,對(duì)接vepa (802.1Qbg) ,802.1Qbh compliant switch,Open vSwitch virtual switch。

高級(jí)配置,連到switch啥的,還要靠<network>定義。

Bridge to LAN

推薦用于有固定網(wǎng)線連著的環(huán)境

提供一個(gè)VM直接連接LAN的網(wǎng)橋。在宿主機(jī)上,需要有一個(gè)包含一個(gè)或多個(gè)網(wǎng)卡的橋接設(shè)備。Guest VM擁有一個(gè)tun設(shè)備,以vnetN命名,也可以使用<target>定義。Guest VM的tun設(shè)備和橋接設(shè)備綁定。IP和網(wǎng)絡(luò)配置將取決于LAN環(huán)境。這種方式的VM工作方式和物理機(jī)相同。

Linux系統(tǒng),橋接設(shè)備通常為linux host bridge。有些主機(jī)使用Open vSwitch, 也可以通過配置<virtualport type='openvswitch'/> 到interface來連接Open vSwitch 網(wǎng)橋。Open vSwitch 類型的 <parameters>有兩個(gè)元素 interfaceidprofileid。
interfaceid 用于以UUID標(biāo)示唯一的接口信息。如果沒有配置,在首次的創(chuàng)建的時(shí)候會(huì)自動(dòng)生成。
profileid 用于配置Open vSwithc的接口 "port-profile"。

我將以brige模式為主


4) 圖形接口

Graphical framebuffers

...
<devices>
  <graphics type='sdl' display=':0.0'/>
  <graphics type='vnc' port='5904' sharePolicy='allow-exclusive'>
    <listen type='address' address='1.2.3.4'/>
  </graphics>
  <graphics type='rdp' autoport='yes' multiUser='yes' />
  <graphics type='desktop' fullscreen='yes'/>
  <graphics type='spice'>
    <listen type='network' network='rednet'/>
  </graphics>
</devices>
...
graphics

<graphics>元素 屬性有如下值: sdl, vnc, spice, rdp, desktop or egl-headless

sdl

在宿主機(jī)桌面以窗口顯示。有三個(gè)可選參數(shù):
display
xauth 用于認(rèn)證
fullscreen 可選參數(shù) "yes" "no"
可以配置gl屬性 enable="yes" 或者enable="no" 來開啟或關(guān)閉OpenGL

vnc

開啟VNC server.
port屬性定義TCP端口 (配置 -1 會(huì)自動(dòng)分配)。
autoport屬性是自動(dòng)分配TCP端口的新推薦配置方式。
passwd屬性以明文定義VNC password 。如果passwd為空,VNC access 禁用。
keymap屬性
connected屬性,僅接受keep。
sharePolicy 可選屬性定義share策略。allow-exclusive允許客戶端獨(dú)占, 這是默認(rèn)配置.。force-shared 禁止客戶端獨(dú)占。ignore不設(shè)限。

除了listen/port, QEMU 還支持socket屬性 以允許unix domain socket path 。

websocket屬性亦可配置端口訪問。 ( -1 參數(shù)將自動(dòng)分配端口meaning auto-allocation and autoport having no effect due to security reasons) Since 1.0.6.

雖然VNC天生不支持OpenGL, 它可以配合使用egl-headless方式來進(jìn)行OpenGL渲染

spice

開啟SPICE server。
port 屬性定義TCP端口 (配置 -1 會(huì)自動(dòng)分配)
tlsPort屬性定義安全端口。
autoport屬性是自動(dòng)分配TCP端口的新推薦配置方式。
passwd 屬性以明文定義SPICE password,如果 passwd為空, SPICE access禁用。
keymap 屬性 (看不懂)
connected屬性配置是否允許密碼變更期間的控制連接。 keep 允許保持客戶端連接, disconnect 斷開客戶端連接,fail禁止變更密碼。
defaultMode 屬性設(shè)置默認(rèn)channal安全策略。 secure, insecure 和默認(rèn)值 any 。

SPICE 普通和TLS安全模式都支持??梢栽?code><graphics>下面設(shè)置多個(gè)<channel>,并配置mode屬性為 secureinsecure,可以支持多個(gè)channel以不同的模式工作在不同的端口。mode屬性會(huì)覆蓋defaultMode屬性的配置。有效的channel names 有 main, display, inputs, cursor, playback, recordsmartcard ,usbredir

<graphics type='spice' port='-1' tlsPort='-1' autoport='yes'>
  <channel name='main' mode='secure'/>
  <channel name='record' mode='insecure'/>
  <image compression='auto_glz'/>
  <streaming mode='filter'/>
  <clipboard copypaste='no'/>
  <mouse mode='client'/>
  <filetransfer enable='no'/>
  <gl enable='yes' rendernode='/dev/dri/by-path/pci-0000:00:02.0-render'/>
</graphics>

Spice 支持音頻,圖片,流的壓縮。這些通過compression屬性設(shè)置,包含如下:
image 設(shè)置圖片壓縮 (參數(shù):auto_glz, auto_lz, quic, glz,lz, off)
jpeg JPEG在wan傳輸時(shí)壓縮 (參數(shù)auto, never·,always)zlibwan圖片的壓縮 (acceptsauto,never,always)playback音頻流壓縮 (onoroff`)

streaming元素 設(shè)置streaming mode, mode屬性設(shè)置為filter, al or off
clipboard 用于設(shè)備復(fù)制粘貼功能,默認(rèn)開啟??梢酝ㄟ^設(shè)置 copypaste 參數(shù)為no關(guān)閉。
mouse 設(shè)置鼠標(biāo)模式,可以設(shè)置mode屬性為server or client。 如果沒有設(shè)置,qemu默認(rèn)使用client mode。
filetransfer 設(shè)置文件傳輸功能。默認(rèn)開啟,可以通過設(shè)置enable屬性為no關(guān)閉。

Spice還可以開啟OpenGL在服務(wù)器端渲染。 可以通過配置<gl>元素, 設(shè)置enable屬性來配置是否開啟OpenGL支持。因?yàn)樾枰猆NIX sockets,所以僅能在本地工作。配置listentype為 'socket' or 'none'。如果需要遠(yuǎn)程支持OpenGL,考慮與egl-headless 搭配使用。沒有原生Spice OpenGL性能好。
默認(rèn),QEMU選擇第一個(gè)可用GPU DRM 渲染節(jié)點(diǎn)。也可以手動(dòng)指定節(jié)點(diǎn)路徑。

rdp

啟動(dòng)RDP server.
port屬性定義TCP端口 (配置 -1 會(huì)自動(dòng)分配)。
autoport屬性是自動(dòng)分配TCP端口的新推薦配置方式。如果使用VirtualBox driver, autoport會(huì)在VM啟動(dòng)的時(shí)候,選擇 3389-3689之間的可用端口。
multiUser 屬性是布爾值,配置是否允許到VM的同時(shí)多連接。
replaceUser屬性是布爾值,配置當(dāng)新客戶端連接到VM時(shí)是否關(guān)閉已存在的連接。

desktop

類似于sdl,在宿主機(jī)桌面顯示。只是使用VirtualBox viewer。可選屬性display fullscreen。

egl-headless

提供本地和遠(yuǎn)程的OpenGL加速。作為對(duì)比,原生OpenGL support僅能工作在宿主機(jī)本地(使用UNIX sockets),不過原生OpenGL support擁有更好性能。
因?yàn)椴惶峁﹫D形接口,所以必須與vnc或spice一起使用。僅支持QEMU。
<gl>的子元素<rendernode >可以被用于指定用于OpenGL渲染的到DRI設(shè)備的絕對(duì)路徑

listen

<listen>元素用于設(shè)置監(jiān)聽設(shè)備。 僅 vnc, spice, rdp 支持。

address
指定監(jiān)聽哪個(gè)ip或者h(yuǎn)ostname
也可以忽視這個(gè)參數(shù),調(diào)用config files配置。
如果在listengraphics元素中都有配置,必須保持一致
network
以網(wǎng)絡(luò)定義監(jiān)聽地址。網(wǎng)絡(luò)需要存在于libvirt的網(wǎng)絡(luò)列表。該網(wǎng)絡(luò)會(huì)被解析,選擇一個(gè)合適的地址寫入XML文件中。
比如,IPV4地址段,會(huì)選擇該段第一個(gè)地址作為監(jiān)聽地址寫入XML文件。如果網(wǎng)絡(luò)是網(wǎng)橋,網(wǎng)橋的IPV4地址會(huì)被使用。如果direct模式,第一個(gè)forward設(shè)備的第一個(gè)地址會(huì)被使用。
socket
監(jiān)聽在unix socket。支持vncspice。
我覺得用不到,不研究 。

none
沒有任何屬性。
Libvirt支持APIs接口virDomainOpenGraphics()virDomainOpenGraphicsFD()。
必須通過這個(gè)兩個(gè)接口之一,發(fā)送FD到QEMU來連接圖形設(shè)備。
支持vncspice

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 虛擬化技術(shù)概覽KVM簡(jiǎn)介KVM的管理操作 一、虛擬化技術(shù)概覽 (一)虛擬化技術(shù)類型: 主機(jī)虛擬化:xen, kvm...
    哈嘍別樣閱讀 2,018評(píng)論 0 5
  • 圖形設(shè)備允許與來賓操作系統(tǒng)進(jìn)行圖形交互。訪客通常會(huì)配置幀緩沖區(qū)或文本控制臺(tái),以允許與管理員進(jìn)行交互。 graphi...
    王鳴南曲閱讀 1,646評(píng)論 0 0
  • 一.虛擬化技術(shù)的介紹 (1)虛擬化技術(shù)類型: 1.主機(jī)虛擬化:xen,kvm.virtualbox.openv2....
    楠人幫閱讀 2,178評(píng)論 0 5
  • 都是自己的學(xué)習(xí)筆記,僅供參考。 核心模塊-Nova簡(jiǎn)介 管理instance生命周期生成,調(diào)度,終止實(shí)例作用:處理...
    廖馬兒閱讀 3,787評(píng)論 0 3
  • 范例文件:KVM hardware accelerated guest on i686 如下詳細(xì)解析: 1) Ge...
    偷油考拉閱讀 1,627評(píng)論 0 0

友情鏈接更多精彩內(nèi)容