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
虚拟磁盘部分是比较重要的一块,详细参见磁盘管理篇