虚拟机的xml格式
取一个运行的虚机的xml看看
官网:https://libvirt.org/format.html
参考:https://blog.csdn.net/qq_43210029/article/details/141093414
<domain type="kvm">
<name>vm-5pnzemaFGHN</name>
<!- 如果在定义创建新机器时省略,则会生成随机 UUID -->
<uuid>66301a7f-69b8-3b60-b7b5-a8a8b8ea1a6d</uuid>
<!- memory 虚拟机启动时分配的内存量 -->
<memory unit="GiB">4</memory>
<!- currentMemory 通常与memory相同,但在某些情况下(如内存热插拔或动态调整内存),currentMemory 可以小于 memory,表示虚拟机当前使用的内存少于启动时分配的内存 maxMemory这是虚拟机内存的上限,通常用于支持内存热插拔功能-->
<currentMemory unit="GiB">4</currentMemory>
<vcpu current="2">2</vcpu>
<cputune>
<shares>4096</shares>
<!- 可选的vcpupin元素指定域vCPU将被固定到主机的哪个物理CPU上。如果省略此项,并且没有指定元素vcpu的属性cpuset,则默认情况下,vCPU将固定到所有物理CPU。它包含两个必需的属性,属性vcpu指定vCPU id,属性cpuset与元素vcpu的属性cpuset相同 -->
<vcpupin vcpu="0" cpuset="0"></vcpupin>
<vcpupin vcpu="1" cpuset="1"></vcpupin>
</cputune>
<numatune>
<memory mode="preferred" nodeset="2"></memory>
<memnode cellid="0" mode="preferred" nodeset="2"></memnode>
</numatune>
<os>
<!- Hardware Virtual Machine -->
<type arch="x86_64" machine="pc">hvm</type>
<!- Hard Disk,优先硬盘启动,还有别的参数cdrom、network、fd(软盘使用较少) -->
<boot dev="hd"></boot>
</os>
<!- Hypervisor可以允许打开、关闭某些CPU、机器功能。-->
<features>
<!- 物理地址扩展模式允许32位guests寻址超过4GB的内存。-->
<pae></pae>
<!- ACPI对于电源管理非常有用,例如,对于KVM或HVF客户,它是正常关机工作所必需的。-->
<acpi></acpi>
<!- APIC允许使用可编程的IRQ管理。0.10.2(仅限QEMU),有一个可选属性eoi,其值为on和off,用于切换guest的eoi(中断结束)的可用性。-->
<apic></apic>
</features>
<cpu>
<topology sockets="1" cores="2" threads="1"></topology>
<numa>
<cell id="0" cpus="0-1" memory="4" unit="GiB"></cell>
</numa>
</cpu>
<clock offset="localtime">
<timer name="rtc" track="guest" tickpolicy="catchup"></timer>
<timer name="pit" tickpolicy="delay"></timer>
<timer name="hpet" present="no"></timer>
</clock>
<!- 事件配置 -->
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<!- 一个用于指定虚拟机仿真器路径的配置项。仿真器是用于模拟虚拟机硬件的软件组件,通常是 QEMU 或 KVM 的二进制文件 -->
<emulator>/usr/bin/qemu-kvm</emulator>
<!- 用于定义虚拟机磁盘设备的配置。它描述了一个基于文件的磁盘设备,并指定了驱动类型、缓存模式、I、O 模式等详细信息 -->
<!- type="file" 表示磁盘是基于文件的,即磁盘数据存储在一个文件中(例如 .qcow2、.raw 或 .iso 文件),device="disk" -->
<disk type="file" device="disk">
<!- 指定使用的磁盘驱动为 QEMU 驱动,指定磁盘文件的格式为 raw(原始格式),指定磁盘缓存模式为 none,即禁用主机缓存,指定磁盘 I、O 模式为多线程模式 -->
<driver name="qemu" type="raw" cache="none" io="threads"></driver>
<!- 指定磁盘文件的路径,通常用于提供云初始化数据(cloud-init data),这里可能有疑问可,为啥上面配置得是raw,下面却是iso,因为在 libvirt 的磁盘配置中,并没有 type="iso" 这样的选项。ISO 文件通常被视为一种特殊的磁盘文件(ISO 文件是一种光盘映像格式,通常用于存储光盘的内容(如操作系统安装介质或工具盘)。虽然 ISO 文件不是传统意义上的磁盘镜像,但它仍然可以被视为一种“原始”二进制文件) -->
<source file="/xxxxxx/data/ci/vm-5pnzemaFGHN/init-cidata.iso"></source>
<!- 指定磁盘设备在虚拟机中的设备名称为 vdb -->
<target dev="vdb"></target>
</disk>
<!- 表示磁盘是基于块设备的,即磁盘数据存储在一个块设备中 -->
<disk type="block" device="disk">
<!- 指定磁盘文件的格式为 qcow2-->
<driver name="qemu" type="qcow2" cache="none" io="threads"></driver>
<source dev="/dev/qbd/vol/vm-5xxxxFGHN.img"></source>
<target dev="vda"></target>
</disk>
<interface type="bridge">
<mac address="52:54:38:cc:44:a6"></mac>
<source bridge="br1089"></source>
<target dev="38cc44a6"></target>
<model type="virtio"></model>
<driver name="vhost" queues="2"></driver>
</interface>
<console>
<target type="serial"></target>
</console>
<!- 虚拟机通道设备(channel device)的配置,通道的类型为 Unix 域套接字,Unix 域套接字是一种用于在同一台主机上的进程之间进行通信的机制,也有其他的type,pty: 伪终端设备,spicevmc: 用于 SPICE 协议的虚拟通道 -->
<channel type="unix">
<source mode="bind" path="/xxxxxx/run/vm-5xxxxFGHN.agent.ctl"></source>
<!- Virtio 是一种高性能的虚拟化设备标准,通常用于虚拟机和宿主机之间的通信 -->
<target type="virtio" name="com.yunify.channel.0"></target>
</channel>
<channel type="unix">
<source mode="bind" path="/var/lib/libvirt/qemu/org.qemu.guest_agent.0.vm-5xxxxFGHN"></source>
<target type="virtio" name="org.qemu.guest_agent.0"></target>
</channel>
<input type="mouse" bus="ps2"></input>
<input type="tablet" bus="usb"></input>
<!- VNC 是一种远程桌面协议,允许用户通过网络连接到虚拟机的图形界面 -->
<graphics type="vnc" autoport="yes" passwd="A2v5cyyy">
<listen type="address" address="0.0.0.0"></listen>
</graphics>
<sound model="es1370">
<audio id="1"></audio>
</sound>
<audio id="1" type="none"></audio>
<video>
<model type="vga" heads="1" vram="9126"></model>
</video>
<memballoon model="virtio">
<stats period="10"></stats>
</memballoon>
<rng model="virtio">
<backend model="random">/dev/urandom</backend>
</rng>
</devices>
<commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0">
<arg value="-cpu"></arg>
<arg value="EPYC,vendor=AuthenticAMD,model_id=Hygon C86 5280 16-core Processor
"></arg>
</commandline>
</domain>
问题:
1、.img 和上面得iso分别是啥
.img 文件通常用作虚拟机的磁盘,存储操作系统和用户数据。
.iso 文件通常用作虚拟机的光驱,用于挂载安装介质或工具盘。
/dev/qbd/vol/vm-5xxxxxFGHN.img 是一个 .img 文件,用作虚拟机的磁盘。
/xxxx/data/ci/vm-5xxxxxFGHN/init-cidata.iso 是一个 .iso 文件,通常用于提供云初始化数据。
2、vnc和spice的区别
使用 VNC:
如果你需要简单的远程图形访问,尤其是跨平台支持。
如果你不需要音频、USB 重定向或文件传输等高级功能。
使用 SPICE:
如果你在虚拟化环境中需要高性能图形和多媒体支持。
如果你需要音频、USB 重定向、文件传输等高级功能。
如果你对安全性有较高要求。