Skip to content

qm

qm 的意思为 QEMU/KVM Virtual Machine Manager,是KVM虚拟机的管理CLI。

我们这里主要列出来我们PXVIRT变动或者增加的部分

qm list

我们引入了UUID和arch的配置清单,以助于我们利用API进行管理。

bash
root@amd1:~# qm list
      VMID NAME                 uuid                                     ARCH         STATUS     MEM(MB)    BOOTDISK(GB) PID       
       104 pvetest              fa027896-5da0-4fbc-8cd6-2bf7a581e598     x86_64       stopped    2048              32.00 0         
       106 pxvirt               037e68fa-27e4-4a01-a792-e875ee6e28d8     x86_64       running    8192              60.00 687920    
       112 pxvdi-html5          00000000-0000-0000-0000-000000000112     x86_64       stopped    2048              22.00 0         
       144 Proxmox-devel        82df5749-e89b-4928-9e13-57a6c6cf9f58     x86_64       running    16384            120.00 4160394   
       203 WindowsDevel         7a1235be-d626-11ef-b0c5-6b25eae83086     x86_64       stopped    8192             132.00 0         
       300 VM 300               b821ef2b-9fd2-4490-a94e-6eb3399f3480     riscv64      running    8192              60.00 1016619   
      3001 Pxvdi-build          00000000-0000-0000-0000-000000003001     x86_64       stopped    8192               0.00 0         
root@amd1:~#

如上面的截图中,我们展示了UUIDARCH字段。为了兼容PVE原本的虚拟机,如果虚拟机没有UUID,将生成一段UUID表示。如果虚拟机没有ARCH字段,将显示主机架构。

qm set

改名了可以设置虚拟机的配置,比如CPU型号,内存大小。

arch

指定虚拟机的架构 可选值

  • aarch64
  • loongarch64
  • x86_64
  • riscv64
  • ppc64
  • s390x

如设置虚拟机的架构为x86_64.

qm set 100 --arch x86_64

cpu

设置虚拟机的cpu型号。PXVIRT支持ARM loongARCH riscv64 ppc架构的cpu模型。

'cortex-a35' => 'ARM',
'cortex-a53' => 'ARM',
'cortex-a55' => 'ARM',
'cortex-a57' => 'ARM',
'cortex-a72' => 'ARM',
'cortex-a76' => 'ARM',
'neoverse-n1' => 'ARM',
'neoverse-n2' => 'ARM',
'neoverse-v1' => 'ARM',
'Kunpeng-920' => 'ARM',
'la464_loongarch_cpu' => 'LoongARCH',
'la464' => 'LoongARCH',
'la132' => 'LoongARCH',
'rv64' => 'RISCV', 
'power10' => 'POWER',
'power9' => 'POWER',
'power8' => 'POWER',
'power11' => 'POWER'

其中一些CPU模型不支持KVM加速,支持KVM加速的列表如下,不在列表中的均代表 不支持kvm加速。

主机架构虚拟机架构虚拟机CPU类型备注
x86_64x86_64所有的Qemu、intel、amd、host、max如果你是amd主机,选intel不会开机,反之亦然
aarch64aarch64host、max、Kunpeng-920Kunpeng920只能鲲鹏主机使用,否则会报错
loongarch64loongarch64la464、max龙芯当前实现了la464的模拟,La664是不支持的,所以不支持host启动

qm set 100 --arch aarch64 --cpu host 指定虚拟机的架构为aarch64,cpu模型为host

machine

设置虚拟机的机型。

虚拟机架构虚拟机机型
x86_64q35,i440fx
arm64virt
loongarch64virt
riscv64virt
ppc64pseries
s390xs390-ccw-virtio

qm set 100 --arch aarch64 --cpu host --machine virt 指定虚拟机的架构为aarch64,cpu模型为host,机型为virt

uuid

指定虚拟机的UUID

qm set 100 --uuid 5a2c167f-30d1-4f43-8f13-5d8e83f6106f

nvme[0-5]

设置虚拟机NVME硬盘,目前仅支持6个NVME设备。

qm set 100 --nvme0 local-lvm:20

这条命令将会为100虚拟机创建一个20G大小的nvme磁盘,编号为nvme0.

snapshot

该值是一个布尔值,1 或者 0。

该选项将会开启Qemu的快照模式,当开启此选项后,qemu在启动一个虚拟机的时候,会将增加的磁盘数据保存在临时文件夹中,当虚拟机关机,qemu会删除这些临时数据。

该功能可以保护虚拟机,实现关机还原功能。

qm set 100 --snapshot 1 为100虚拟机开启关机还原.

kernel & initrd & append

为虚拟机设置直接内核访问。

本功能需要内核和initrd以vztmpl格式位于vztmpl文件夹下面。

例如你有一个kernel和initrd,将kernel命名为6.6.kernel.tar.gz 将initrd命名为6.6.initrd.tar.gz。并将文件移动到/var/lib/vz/template/

设置内核为6.6.kernel.tar.gz

qm set 100 --kernel local:vztmpl/6.6.kernel.tar.gz

设置initrd为6.6.initrd.tar.gz

qm set 100 --initrd local:vztmpl/6.6.initrd.tar.gz

设置内核启动参数为"root=/dev/sda2 console=ttyS0 earlycon=ttyS0"

qm set 100 --append "root=/dev/sda2 console=ttyS0 earlycon=ttyS0"

vga

设置虚拟机的GPU设备。PXVIRT默认设备为virtio-gpu

增加了下面2个东西。

  • ramfb
  • mdev

功能参考 7. GPU选择

qm set 100 --vga ramfb

hostpci[N]

PXVIRT增加了1个值,ramfb.该值为布尔值

功能参考 8. Mdev的ramfb显示

qm set 100 --hostpci0 host=xxxxx,ramfb=1

disk clone

该功能可以通过快照技术,克隆单个虚拟机磁盘。具有以下的参数。

  • --disk <string> 原vmid的磁盘

  • --snapname <string> 原vmid的快照

  • --target-vmid <integer> 目标vmid

  • --target-disk <string> 可选参数,如果不选,则是和传入的disk一样

该功能仅支持lvm-thin,zfs,ceph-rbd 3种磁盘后端。

下面的示例是将100的scsi0,克隆给了101虚拟机。

bash
qm create 100 --scsi0 local-lvm:10 
qm snapshot 100 installoffice
qm create 101
qm disk clone 100 --disk scsi0 --snapname installoffice --target-vmid 101 --target-disk scsi0

gicversion

设置ARM虚拟的gic中断版本。仅在ARM虚拟机中有效。

可选值为

  • host
  • 2
  • 3
  • 4
  • max

当虚拟机是KVM加速的状态,默认值为host,当虚拟机为tcg时,默认为max。当然你可以强制覆盖。

该功能可以在安装arm版本的windows比较实用。

例如win10 可以指定gicversion为2,win11 指定为gicversion3,但建议为默认。

qm set 100 --gicversion 3

virtualization

布尔值. 默认为否。是否开启ARM虚拟机的嵌套虚拟。嵌套虚拟是在ARM 8.3之后才有的功能。常见的飞腾S2500 S5000C 鲲鹏920为ARM 8.3。如果处理器不支持该功能,强制启用,虚拟机将无法开机。

qm set 100 --virtualization 1 为100虚拟机开启嵌套虚拟

noboot

布尔值. 默认为否。是否阻止虚拟机启动。

qm set 100 --noboot 1 不允许100虚拟开机。