<domain type="kvm">
<!-- 虚拟机名 -->
<name>i-insttest</name>
<!-- 引导时提供的最大内存 -->
<memory unit="KiB">4194304</memory>
<!-- 实际分配内存 -->
<currentMemory unit="KiB">4194304</currentMemory>
<vcpu current="4">4</vcpu>
<os>
<!-- 在虚拟机中引导的操作系统类型 -->
<!-- hvm 裸机上运行完全虚拟化 -->
<type arch="sw_64" machine="core3">hvm</type>
<!-- 操作系统镜运行的 内核 路径 -->
<kernel>/images/i-insttest/vmlinux</kernel>
<!-- 引导时传递给内核(或安装程序)的参数 -->
<cmdline>root=/dev/vda rw console=ttyS0 ignore_loglevel net.ifnames=0</cmdline>
<!-- 引导类型 硬盘启动 -->
<boot dev="hd"/>
</os>
<features>
<!-- ACPI 对于电源管理非常有用,例如,对于 KVM 或 HVF 虚机,需要正常关机才能正常工作 -->
<acpi/>
<!-- APIC允许使用可编程IRQ管理。从 0.10.2(仅限 QEMU)开始,有一个可选属性 eoi,其值为 'on' 和 'off',可切换虚机的 EOI(中断结束)的可用性。 -->
<apic/>
<!-- 物理地址扩展模式允许 32 位虚机寻址超过 4 GB 的内存。 -->
<pae/>
<!-- 根据 state 属性(值为 'on'、'off'),启用或禁用硬件辅助分页的使用。如果虚拟机管理程序检测到硬件辅助分页的可用性,则默认值为 'on'。 -->
<hap/>
<!-- 始终创建私有网络命名空间。如果定义了任何接口设备,则会自动设置此设置。此功能仅适用于基于容器的虚拟化驱动程序,如 LXC。 -->
<privnet/>
<!-- 通知虚机支持 paravirtual spinlocks,例如通过公开 pvticketlocks 机制。可以使用 state='off' 属性显式禁用此功能。 -->
<pvspinlock state='on'/>
<!-- 启用各种功能,以改善运行 Microsoft Windows 的虚机的行为。 -->
<hyperv>
<!-- 放宽对计时器的约束 -->
<relaxed state='on'/>
<!-- 启用虚拟 APIC -->
<vapic state='on'/>
<!-- 启动 spinlock 的支持 -->
<spinlocks state='on' retries='4096'/>
<!-- 设置虚拟机管理程序供应商 ID -->
<vendor_id state='on' value=''/>
</hyperv>
<!-- 用于更改 KVM 虚拟机管理程序行为的各种功能。 -->
<kvm>
<!-- 从基于 MSR 的标准发现中隐藏 KVM 虚拟机管理程序 -->
<hidden state='on'/>
</kvm>
</features>
<cpu mode="custom"></cpu>
<clock offset="utc"/>
<!-- 客户请求poweroff时 执行 destroy -->
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<!-- 虚拟机所有设备信息 -->
<devices>
<emulator>/usr/bin/qemu-system-sw64</emulator>
<!-- 磁盘配置信息 -->
<!-- type 磁盘引用源 ‘file’,‘network’,‘block’ -->、
<!-- device 在虚拟机中如何显示这个 disk 资源 ‘disk’,‘cdrom’ -->
<disk type="network" device="disk">
<!-- auth 只有在 disk type="network" 和 source protocol="rbd或iscsi" 时可用 -->
<!-- username='admin' 提供一个强制的身份验证使用的用户名 -->
<auth username='admin'>
<!-- 在有身份验证后强制的元素 secret type 为 type为 ‘ceph’,‘CHAP’ -->
<!-- usage 密钥匹配方式 -->
<secret type='ceph' usage='ceph-images'/>
</auth>
<!-- 可选的驱动程序元素允许指定与用于提供磁盘的虚拟机管理程序驱动程序相关的更多详细信息 -->
<!-- type xen 支持 "tap", "tap2", "phy", or "file" -->
<!-- type qemu 支持 "qemu" -->
<!-- type 多类型支持 "raw", "bochs", "qcow2", "qed" -->
<!-- cache 缓存控制机制 "default", "none", "writethrough", "writeback", "directsync" -->
<driver name="qemu" type="raw" cache="none"/>
<!-- 磁盘源 取决于 disk 中的 type 类型 -->
<!-- type='file' source 中 file 包含磁盘的文件的完全限定路径 -->
<!-- type='block' source 中 dev 指定主机设备作为磁盘的完全限定路径 -->
<!-- type='network' source 中 protocol 指定访问所请求 image 的协议 ‘rbd’,‘http’,‘nfs’ -->
<!-- type='network' source 中 name 指定要使用卷或镜像的位置 -->
<source protocol="rbd" name="images/i-insttest"></source>
<!-- 制磁盘向客户机操作系统公开的总线/设备 -->
<!-- dev 指示"逻辑"设备名称 -->
<!-- bus 指定要模拟的磁盘设备的类型 "ide", "scsi", "virtio", "xen", "usb", "sata", or "sd" -->
<target dev="vda" bus="virtio"/>
</disk>
<!-- controller 对设备提供显式的控制 一般用在热插拔上面 -->
<!-- type 'ide', 'fdc', 'scsi', 'sata', 'usb', 'ccid', 'virtio-serial' or 'pci' -->
<!-- type='pci' model=’pcie-root‘ 禁用此功能 index='0' -->
<!-- index 描述遇到总线控制器的顺序的十进制整数 -->
<controller type="pci" index="0" model="pcie-root"/>
<!-- type="virtio-serial" 用于控制可通过控制器连接的设备数量 -->
<controller type="virtio-serial" index="0"></controller>
<controller type="scsi" index="0" model="lsilogic"></controller>
<controller type="usb" index="0" model="nec-xhci"></controller>
<!-- 网络接口 提供虚拟机直接到lan网桥 -->
<interface type="bridge">
<!-- 链接物理机创建的网桥 -->
<source bridge="liantong"/>
<!-- model type:"vga", "cirrus", "vmvga", "xen", "vbox", "qxl", "virtio", "gop", "bochs", "ramfb" or "none" 取决于可用的虚拟机管理程序功能 -->
<model type="virtio"/>
</interface>
<interface type='bridge'>
<!-- 指定 mac 地址 -->
<mac address='52:54:01:02:03:04'/>
<source bridge='net-vxlantest'/>
<model type='virtio'/>
</interface>
<!-- 虚机使用物理机 USB, PCI 和 SCSI 设备直通 -->
<!-- type: usb pci scsi -->
<!-- type='pci' 当 managed='yes '时,pci 设备会与物理机分离,然后传递给虚机,并在虚机退出后重新连接到物理机 -->
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000-0xdf-0x00' bus='df' slot='00' function='0x0'/>
</source>
</hostdev>
<!-- character 设备 serial ports(串行端口),console(控制台),paraller ports(并行端口),channels(通道) -->
<serial type="pty">
<!-- 指定端口号 -->
<target port="0"/>
</serial>
<!-- 控制台设置 -->
<console type="pty">
<target type="serial" port="0"/>
</console>
<!-- 主机和虚拟机专用通信通道 -->
<channel type='unix'>
<source mode='bind' path='/tmp/i-insttest.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<input type="keyboard" bus="usb"></input>
<input type="mouse" bus="usb"></input>
<input type="tablet" bus="usb"></input>
<!-- vnc 图形交互 -->
<!-- type : sdl, vnc, spice, rdp, desktop or egl-headless -->
<!-- port 为 -1 自动分配端口号 旧语法 -->
<!-- autoport 自动分配端口号 -->
<!-- keymap 使用的键盘类型 -->
<graphics type="vnc" port="-1" autoport="yes" keymap="en-us" listen="0.0.0.0"></graphics>
<!-- 视频驱动 -->
<video>
<model type="virtio" vram="65536" heads="1" primary="yes"/>
</video>
<memballoon model="none"/>
</devices>
</domain>
<!-- 这个 address 标签很多设备都有这个配置 -->
<!-- 描述这个设备在客户虚拟机上表现方式,可以不写,libvirt 会自动生成一个 -->
<!-- type: 描述设备位于哪条总线上 -->
<!-- type="pci" 时有一下一些配置 domain bus slot function -->
<!-- type="virtio-serial" 时有一下一些配置 controller bus port -->
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
网友评论