KVM虛擬機的配置文件在/etc/libvirt/qemu/下,為xml文件
整體結構如下:
1 <domain type='kvm'> 2 虛擬機整體信息 3 系統信息 4 硬件資源特性 5 突發事件處理 6 虛擬磁盤(單個或多個) 7 虛擬光盤(可選) 8 虛擬網絡(單個或多個) 9 vnc/spice配置 10 </domain>
在Libvirt官方文檔里面,將虛擬機定義為domain,而不是vm(virtual machine)。Xen中Domain0表示宿主機系統,而在KVM中,domain完全指虛擬機系統。
type一項指明了使用的是哪種虛擬化技術。如果使用的是KVM,那么值為kvm。如果使用的是Xen,那么值為xen。當然,如果使用的是其他hypervisor,值也不盡相同
1 <domain type='kvm'> ##描述hypervisor 2 <name>centos7.0</name> ##定義虛擬機整體信息 3 <uuid>c2d264d3-5c61-4d2e-8678-b28673c1f64b</uuid> 4 <memory unit='KiB'>1048576</memory> 5 <currentMemory unit='KiB'>1048576</currentMemory> 6 <vcpu placement='static'>1</vcpu> 7 <os> ##系統信息 8 <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> 9 <boot dev='hd'/> ##開機從哪里啟動 10 </os> 11 <features> ##硬件資源特性 12 <acpi/> 13 <apic/> 14 </features> 15 <cpu mode='custom' match='exact'> 16 <model fallback='allow'>Haswell-noTSX</model> 17 </cpu> 18 <clock offset='utc'> 19 <timer name='rtc' tickpolicy='catchup'/> 20 <timer name='pit' tickpolicy='delay'/> 21 <timer name='hpet' present='no'/> 22 </clock> 23 <on_poweroff>destroy</on_poweroff> ##突發事件處理 24 <on_reboot>restart</on_reboot> 25 <suspend-to-mem enabled='no'/> 26 <suspend-to-disk enabled='no'/> 27 </pm> 28 <devices> ##外設資源 29 <emulator>/usr/libexec/qemu-kvm</emulator> 30 <disk type='file' device='disk'> ##描述虛擬磁盤image 31 <driver name='qemu' type='qcow2'/> 32 <source file='/var/lib/libvirt/images/centos7.0.qcow2'/> 33 <target dev='vda' bus='virtio'/> 34 <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> 35 </disk> 36 <controller type='usb' index='0' model='ich9-ehci1'> 37 <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/> 38 </controller> 39 <controller type='usb' index='0' model='ich9-uhci1'> 40 <master startport='0'/> 41 </controller> 42 <controller type='usb' index='0' model='ich9-uhci2'> 43 <master startport='2'/> 44 <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/> 45 </controller> 46 <controller type='usb' index='0' model='ich9-uhci3'> 47 <master startport='4'/> 48 <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/> 49 <controller type='virtio-serial' index='0'> 50 <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> 51 </controller> 52 <interface type='bridge'> ##虛擬網絡,基於網橋 53 <mac address='52:54:00:6a:1e:54'/> 54 <source bridge='br0'/> 55 <model type='virtio'/> 56 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 57 </interface> 58 <serial type='pty'> ##串口信息可以不用更改 59 <target port='0'/> 60 </serial> 61 <console type='pty'> 62 <target type='serial' port='0'/> 63 </console> 64 <channel type='unix'> 65 <target type='virtio' name='org.qemu.guest_agent.0'/> 66 <address type='virtio-serial' controller='0' bus='0' port='1'/> 67 </channel> 68 <channel type='spicevmc'> 69 <target type='virtio' name='com.redhat.spice.0'/> 70 <address type='virtio-serial' controller='0' bus='0' port='2'/> 71 </channel> 72 <input type='tablet' bus='usb'/> 73 <input type='mouse' bus='ps2'/> 74 <input type='keyboard' bus='ps2'/> 75 <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/> 76 <sound model='ich6'> ##從此往下的內容可以不用更改 77 <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 78 </sound> 79 <video> 80 <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/> 81 <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> 82 </video> 83 <redirdev bus='usb' type='spicevmc'> 84 </redirdev> 85 <redirdev bus='usb' type='spicevmc'> 86 </redirdev> 87 <memballoon model='virtio'> 88 <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> 89 </memballoon> 90 </devices> 91 </domain>
第一行定義了虛擬機的名字。libvirt可以通過虛擬機的名字對虛擬機進行管理。在同一台物理機上,虛擬機的名字必須要保證唯一的。如果存在重名的情況,添加和創建虛擬機時,會失敗。
第二行定義的虛擬機的UUID。在同一台物理機上,UUID值也必須是唯一的,否則會出現沖突。
第三四行描述虛擬機的內存信息,通常以KB為單位。
第五行指明了分配的虛擬CPU的個數。
在系統信息部分主要包括了兩部分信息:類型和啟動信息
硬件資源特性主要包括:電源管理及內存擴展
突發事件處理定義了當發生poweroff時,直接destroy虛擬機。當虛擬機reboot、crash的時候,會自動采用重啟操作,還可以自定義。
在虛擬化技術或者雲計算中,都使用image一詞來表示虛擬磁盤。
在<device></device>中的都是虛擬外設
常用的image格式為raw何qcow2,首先可以手動創建出一個image
qemu-img create -f raw xxxxx.raw 20G
虛擬磁盤部分是比較重要的一塊,詳細參見磁盤管理篇