10.13. Configuration

VM configuration files are stored inside the Proxmox cluster file system, and can be accessed at /etc/pve/qemu-server/<VMID>.conf. Like other files stored inside /etc/pve/, they get automatically replicated to all other cluster nodes.

Note

VMIDs < 100 are reserved for internal purposes, and VMIDs need to be unique cluster wide.

Example VM Configuration. 

boot: order=virtio0;net0
cores: 1
sockets: 1
memory: 512
name: webmail
ostype: l26
net0: e1000=EE:D2:28:5F:B6:3E,bridge=vmbr0
virtio0: local:vm-100-disk-1,size=32G

Those configuration files are simple text files, and you can edit them using a normal text editor (vi, nano, …). This is sometimes useful to do small corrections, but keep in mind that you need to restart the VM to apply such changes.

For that reason, it is usually better to use the qm command to generate and modify those files, or do the whole thing using the GUI. Our toolkit is smart enough to instantaneously apply most changes to running VM. This feature is called "hot plug", and there is no need to restart the VM in that case.

VM configuration files use a simple colon separated key/value format. Each line has the following format:

# this is a comment
OPTION: value

Blank lines in those files are ignored, and lines starting with a # character are treated as comments and are also ignored.

When you create a snapshot, qm stores the configuration at snapshot time into a separate snapshot section within the same configuration file. For example, after creating a snapshot called “testsnapshot”, your configuration file will look like this:

VM configuration with snapshot. 

memory: 512
swap: 512
parent: testsnaphot
...

[testsnaphot]
memory: 512
swap: 512
snaptime: 1457170803
...

There are a few snapshot related properties like parent and snaptime. The parent property is used to store the parent/child relationship between snapshots. snaptime is the snapshot creation time stamp (Unix epoch).

You can optionally save the memory of a running VM with the option vmstate. For details about how the target storage gets chosen for the VM state, see State storage selection State storage selection in the chapter Hibernation Section 10.11, “Hibernation”.

acpi: <boolean> (default = 1)
Enable/disable ACPI.
agent: [enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]

Enable/disable communication with the Qemu Guest Agent and its properties.

arch: <aarch64 | x86_64>
Virtual processor architecture. Defaults to the host.
args: <string>

Arbitrary arguments passed to kvm, for example:

args: -no-reboot -no-hpet

audio0: device=<ich9-intel-hda|intel-hda|AC97> [,driver=<spice|none>]

Configure a audio device, useful in combination with QXL/Spice.

autostart: <boolean> (default = 0)
Automatic restart after crash (currently ignored).
balloon: <integer> (0 - N)
Amount of target RAM for the VM in MB. Using zero disables the ballon driver.
bios: <ovmf | seabios> (default = seabios)
Select BIOS implementation.
boot: [[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]

Specify guest boot order. Use the order= sub-property as usage with no key or legacy= is deprecated.

bootdisk: (ide|sata|scsi|virtio)\d+
Enable booting from specified disk. Deprecated: Use boot: order=foo;bar instead.
cdrom: <volume>
This is an alias for option -ide2
cicustom: [meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]

cloud-init: Specify custom files to replace the automatically generated ones at start.

cipassword: <string>
cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.
citype: <configdrive2 | nocloud | opennebula>
Specifies the cloud-init configuration format. The default depends on the configured operating system type (ostype. We use the nocloud format for Linux, and configdrive2 for windows.
ciuser: <string>
cloud-init: User name to change ssh keys and password for instead of the image’s configured default user.
cores: <integer> (1 - N) (default = 1)
The number of cores per socket.
cpu: [[cputype=]<string>] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>] [,phys-bits=<8-64|host>] [,reported-model=<enum>]

Emulated CPU type.

cputype=<string> (default = kvm64)
Emulated CPU type. Can be default or custom name (custom model names must be prefixed with custom-).
flags=<+FLAG[;-FLAG...]>
List of additional CPU flags separated by ;. Use +FLAG to enable, -FLAG to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: pcid, spec-ctrl, ibpb, ssbd, virt-ssbd, amd-ssbd, amd-no-ssb, pdpe1gb, md-clear, hv-tlbflush, hv-evmcs, aes.
hidden=<boolean> (default = 0)
Do not identify as a KVM virtual machine.
hv-vendor-id=<vendor-id>
The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.
phys-bits=<8-64|host>
The physical memory address bits that are reported to the guest OS. Should be smaller or equal to the host’s. Set to host to use value from host CPU, but note that doing so will break live migration to CPUs with other values.
reported-model=<486 | Broadwell | Broadwell-IBRS | Broadwell-noTSX | Broadwell-noTSX-IBRS | Cascadelake-Server | Cascadelake-Server-noTSX | Conroe | EPYC | EPYC-IBPB | EPYC-Rome | Haswell | Haswell-IBRS | Haswell-noTSX | Haswell-noTSX-IBRS | Icelake-Client | Icelake-Client-noTSX | Icelake-Server | Icelake-Server-noTSX | IvyBridge | IvyBridge-IBRS | KnightsMill | Nehalem | Nehalem-IBRS | Opteron_G1 | Opteron_G2 | Opteron_G3 | Opteron_G4 | Opteron_G5 | Penryn | SandyBridge | SandyBridge-IBRS | Skylake-Client | Skylake-Client-IBRS | Skylake-Client-noTSX-IBRS | Skylake-Server | Skylake-Server-IBRS | Skylake-Server-noTSX-IBRS | Westmere | Westmere-IBRS | athlon | core2duo | coreduo | host | kvm32 | kvm64 | max | pentium | pentium2 | pentium3 | phenom | qemu32 | qemu64> (default = kvm64)
CPU model and vendor to report to the guest. Must be a QEMU/KVM supported model. Only valid for custom CPU model definitions, default models will always report themselves to the guest OS.
cpulimit: <number> (0 - 128) (default = 0)

Limit of CPU usage.

cpuunits: <integer> (2 - 262144) (default = cgroup v1: 1024, cgroup v2: 100)
CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.
description: <string>
Description for the VM. Shown in the web-interface VM’s summary. This is saved as comment inside the configuration file.
efidisk0: [file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]

Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.

freeze: <boolean>
Freeze CPU at startup (use c monitor command to start execution).
hookscript: <string>
Script that will be executed during various steps in the vms lifetime.
hostpci[n]: [host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,x-vga=<1|0>]

Map host PCI devices into guest.

hotplug: <string> (default = network,disk,usb)
Selectively enable hotplug features. This is a comma separated list of hotplug features: network, disk, cpu, memory and usb. Use 0 to disable hotplug completely. Using 1 as value is an alias for the default network,disk,usb.
hugepages: <1024 | 2 | any>
Enable/disable hugepages memory.
ide[n]: [file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]

Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.

aio=<io_uring | native | threads>
AIO type to use.
backup=<boolean>
Whether the drive should be included when making backups.
bps=<bps>
Maximum r/w speed in bytes per second.
bps_max_length=<seconds>
Maximum length of I/O bursts in seconds.
bps_rd=<bps>
Maximum read speed in bytes per second.
bps_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
bps_wr=<bps>
Maximum write speed in bytes per second.
bps_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
cache=<directsync | none | unsafe | writeback | writethrough>
The drive’s cache mode
cyls=<integer>
Force the drive’s physical geometry to have a specific cylinder count.
detect_zeroes=<boolean>
Controls whether to detect and try to optimize writes of zeroes.
discard=<ignore | on>
Controls whether to pass discard/trim requests to the underlying storage.
file=<volume>
The drive’s backing volume.
format=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
The drive’s backing file’s data format.
heads=<integer>
Force the drive’s physical geometry to have a specific head count.
iops=<iops>
Maximum r/w I/O in operations per second.
iops_max=<iops>
Maximum unthrottled r/w I/O pool in operations per second.
iops_max_length=<seconds>
Maximum length of I/O bursts in seconds.
iops_rd=<iops>
Maximum read I/O in operations per second.
iops_rd_max=<iops>
Maximum unthrottled read I/O pool in operations per second.
iops_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
iops_wr=<iops>
Maximum write I/O in operations per second.
iops_wr_max=<iops>
Maximum unthrottled write I/O pool in operations per second.
iops_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
mbps=<mbps>
Maximum r/w speed in megabytes per second.
mbps_max=<mbps>
Maximum unthrottled r/w pool in megabytes per second.
mbps_rd=<mbps>
Maximum read speed in megabytes per second.
mbps_rd_max=<mbps>
Maximum unthrottled read pool in megabytes per second.
mbps_wr=<mbps>
Maximum write speed in megabytes per second.
mbps_wr_max=<mbps>
Maximum unthrottled write pool in megabytes per second.
media=<cdrom | disk> (default = disk)
The drive’s media type.
model=<model>
The drive’s reported model name, url-encoded, up to 40 bytes long.
replicate=<boolean> (default = 1)
Whether the drive should considered for replication jobs.
rerror=<ignore | report | stop>
Read error action.
secs=<integer>
Force the drive’s physical geometry to have a specific sector count.
serial=<serial>
The drive’s reported serial number, url-encoded, up to 20 bytes long.
shared=<boolean> (default = 0)

Mark this locally-managed volume as available on all nodes.

size=<DiskSize>
Disk size. This is purely informational and has no effect.
snapshot=<boolean>
Controls qemu’s snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.
ssd=<boolean>
Whether to expose this drive as an SSD, rather than a rotational hard disk.
trans=<auto | lba | none>
Force disk geometry bios translation mode.
werror=<enospc | ignore | report | stop>
Write error action.
wwn=<wwn>
The drive’s worldwide name, encoded as 16 bytes hex string, prefixed by 0x.
ipconfig[n]: [gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]

cloud-init: Specify IP addresses and gateways for the corresponding interface.

IP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.

The special string dhcp can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided. For IPv6 the special string auto can be used to use stateless autoconfiguration. This requires cloud-init 19.4 or newer.

If cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.

ivshmem: size=<integer> [,name=<string>]

Inter-VM shared memory. Useful for direct communication between VMs, or to the host.

keephugepages: <boolean> (default = 0)
Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.
keyboard: <da | de | de-ch | en-gb | en-us | es | fi | fr | fr-be | fr-ca | fr-ch | hu | is | it | ja | lt | mk | nl | no | pl | pt | pt-br | sl | sv | tr>
Keyboard layout for VNC server. The default is read from the'/etc/pve/datacenter.cfg' configuration file. It should not be necessary to set it.
kvm: <boolean> (default = 1)
Enable/disable KVM hardware virtualization.
localtime: <boolean>
Set the real time clock (RTC) to local time. This is enabled by default if the ostype indicates a Microsoft Windows OS.
lock: <backup | clone | create | migrate | rollback | snapshot | snapshot-delete | suspended | suspending>
Lock/unlock the VM.
machine: (pc|pc(-i440fx)?-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|q35|pc-q35-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|virt(?:-\d+(\.\d+)+)?(\+pve\d+)?)
Specifies the Qemu machine type.
memory: <integer> (16 - N) (default = 512)
Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.
migrate_downtime: <number> (0 - N) (default = 0.1)
Set maximum tolerated downtime (in seconds) for migrations.
migrate_speed: <integer> (0 - N) (default = 0)
Set maximum speed (in MB/s) for migrations. Value 0 is no limit.
name: <string>
Set a name for the VM. Only used on the configuration web interface.
nameserver: <string>
cloud-init: Sets DNS server IP address for a container. Create will' .' automatically use the setting from the host if neither searchdomain nor nameserver' .' are set.
net[n]: [model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]

Specify network devices.

numa: <boolean> (default = 0)
Enable/disable NUMA.
numa[n]: cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]

NUMA topology.

onboot: <boolean> (default = 0)
Specifies whether a VM will be started during system bootup.
ostype: <l24 | l26 | other | solaris | w2k | w2k3 | w2k8 | win10 | win11 | win7 | win8 | wvista | wxp>

Specify guest operating system. This is used to enable special optimization/features for specific operating systems:

other

unspecified OS

wxp

Microsoft Windows XP

w2k

Microsoft Windows 2000

w2k3

Microsoft Windows 2003

w2k8

Microsoft Windows 2008

wvista

Microsoft Windows Vista

win7

Microsoft Windows 7

win8

Microsoft Windows 8/2012/2012r2

win10

Microsoft Windows 10/2016/2019

win11

Microsoft Windows 11/2022

l24

Linux 2.4 Kernel

l26

Linux 2.6 - 5.X Kernel

solaris

Solaris/OpenSolaris/OpenIndiania kernel

parallel[n]: /dev/parport\d+|/dev/usb/lp\d+

Map host parallel devices (n is 0 to 2).

protection: <boolean> (default = 0)
Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.
reboot: <boolean> (default = 1)
Allow reboot. If set to 0 the VM exit on reboot.
rng0: [source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]

Configure a VirtIO-based Random Number Generator.

sata[n]: [file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]

Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.

aio=<io_uring | native | threads>
AIO type to use.
backup=<boolean>
Whether the drive should be included when making backups.
bps=<bps>
Maximum r/w speed in bytes per second.
bps_max_length=<seconds>
Maximum length of I/O bursts in seconds.
bps_rd=<bps>
Maximum read speed in bytes per second.
bps_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
bps_wr=<bps>
Maximum write speed in bytes per second.
bps_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
cache=<directsync | none | unsafe | writeback | writethrough>
The drive’s cache mode
cyls=<integer>
Force the drive’s physical geometry to have a specific cylinder count.
detect_zeroes=<boolean>
Controls whether to detect and try to optimize writes of zeroes.
discard=<ignore | on>
Controls whether to pass discard/trim requests to the underlying storage.
file=<volume>
The drive’s backing volume.
format=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
The drive’s backing file’s data format.
heads=<integer>
Force the drive’s physical geometry to have a specific head count.
iops=<iops>
Maximum r/w I/O in operations per second.
iops_max=<iops>
Maximum unthrottled r/w I/O pool in operations per second.
iops_max_length=<seconds>
Maximum length of I/O bursts in seconds.
iops_rd=<iops>
Maximum read I/O in operations per second.
iops_rd_max=<iops>
Maximum unthrottled read I/O pool in operations per second.
iops_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
iops_wr=<iops>
Maximum write I/O in operations per second.
iops_wr_max=<iops>
Maximum unthrottled write I/O pool in operations per second.
iops_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
mbps=<mbps>
Maximum r/w speed in megabytes per second.
mbps_max=<mbps>
Maximum unthrottled r/w pool in megabytes per second.
mbps_rd=<mbps>
Maximum read speed in megabytes per second.
mbps_rd_max=<mbps>
Maximum unthrottled read pool in megabytes per second.
mbps_wr=<mbps>
Maximum write speed in megabytes per second.
mbps_wr_max=<mbps>
Maximum unthrottled write pool in megabytes per second.
media=<cdrom | disk> (default = disk)
The drive’s media type.
replicate=<boolean> (default = 1)
Whether the drive should considered for replication jobs.
rerror=<ignore | report | stop>
Read error action.
secs=<integer>
Force the drive’s physical geometry to have a specific sector count.
serial=<serial>
The drive’s reported serial number, url-encoded, up to 20 bytes long.
shared=<boolean> (default = 0)

Mark this locally-managed volume as available on all nodes.

size=<DiskSize>
Disk size. This is purely informational and has no effect.
snapshot=<boolean>
Controls qemu’s snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.
ssd=<boolean>
Whether to expose this drive as an SSD, rather than a rotational hard disk.
trans=<auto | lba | none>
Force disk geometry bios translation mode.
werror=<enospc | ignore | report | stop>
Write error action.
wwn=<wwn>
The drive’s worldwide name, encoded as 16 bytes hex string, prefixed by 0x.
scsi[n]: [file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]

Use volume as SCSI hard disk or CD-ROM (n is 0 to 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.

aio=<io_uring | native | threads>
AIO type to use.
backup=<boolean>
Whether the drive should be included when making backups.
bps=<bps>
Maximum r/w speed in bytes per second.
bps_max_length=<seconds>
Maximum length of I/O bursts in seconds.
bps_rd=<bps>
Maximum read speed in bytes per second.
bps_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
bps_wr=<bps>
Maximum write speed in bytes per second.
bps_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
cache=<directsync | none | unsafe | writeback | writethrough>
The drive’s cache mode
cyls=<integer>
Force the drive’s physical geometry to have a specific cylinder count.
detect_zeroes=<boolean>
Controls whether to detect and try to optimize writes of zeroes.
discard=<ignore | on>
Controls whether to pass discard/trim requests to the underlying storage.
file=<volume>
The drive’s backing volume.
format=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
The drive’s backing file’s data format.
heads=<integer>
Force the drive’s physical geometry to have a specific head count.
iops=<iops>
Maximum r/w I/O in operations per second.
iops_max=<iops>
Maximum unthrottled r/w I/O pool in operations per second.
iops_max_length=<seconds>
Maximum length of I/O bursts in seconds.
iops_rd=<iops>
Maximum read I/O in operations per second.
iops_rd_max=<iops>
Maximum unthrottled read I/O pool in operations per second.
iops_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
iops_wr=<iops>
Maximum write I/O in operations per second.
iops_wr_max=<iops>
Maximum unthrottled write I/O pool in operations per second.
iops_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
iothread=<boolean>
Whether to use iothreads for this drive
mbps=<mbps>
Maximum r/w speed in megabytes per second.
mbps_max=<mbps>
Maximum unthrottled r/w pool in megabytes per second.
mbps_rd=<mbps>
Maximum read speed in megabytes per second.
mbps_rd_max=<mbps>
Maximum unthrottled read pool in megabytes per second.
mbps_wr=<mbps>
Maximum write speed in megabytes per second.
mbps_wr_max=<mbps>
Maximum unthrottled write pool in megabytes per second.
media=<cdrom | disk> (default = disk)
The drive’s media type.
queues=<integer> (2 - N)
Number of queues.
replicate=<boolean> (default = 1)
Whether the drive should considered for replication jobs.
rerror=<ignore | report | stop>
Read error action.
ro=<boolean>
Whether the drive is read-only.
scsiblock=<boolean> (default = 0)

whether to use scsi-block for full passthrough of host block device

secs=<integer>
Force the drive’s physical geometry to have a specific sector count.
serial=<serial>
The drive’s reported serial number, url-encoded, up to 20 bytes long.
shared=<boolean> (default = 0)

Mark this locally-managed volume as available on all nodes.

size=<DiskSize>
Disk size. This is purely informational and has no effect.
snapshot=<boolean>
Controls qemu’s snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.
ssd=<boolean>
Whether to expose this drive as an SSD, rather than a rotational hard disk.
trans=<auto | lba | none>
Force disk geometry bios translation mode.
werror=<enospc | ignore | report | stop>
Write error action.
wwn=<wwn>
The drive’s worldwide name, encoded as 16 bytes hex string, prefixed by 0x.
scsihw: <lsi | lsi53c810 | megasas | pvscsi | virtio-scsi-pci | virtio-scsi-single> (default = lsi)
SCSI controller model
searchdomain: <string>
cloud-init: Sets DNS search domains for a container. Create will' .' automatically use the setting from the host if neither searchdomain nor nameserver' .' are set.
serial[n]: (/dev/.+|socket)

Create a serial device inside the VM (n is 0 to 3), and pass through a host serial device (i.e. /dev/ttyS0), or create a unix socket on the host side (use qm terminal to open a terminal connection).

shares: <integer> (0 - 50000) (default = 1000)
Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.
smbios1: [base64=<1|0>] [,family=<Base64 encoded string>] [,manufacturer=<Base64 encoded string>] [,product=<Base64 encoded string>] [,serial=<Base64 encoded string>] [,sku=<Base64 encoded string>] [,uuid=<UUID>] [,version=<Base64 encoded string>]

Specify SMBIOS type 1 fields.

smp: <integer> (1 - N) (default = 1)
The number of CPUs. Please use option -sockets instead.
sockets: <integer> (1 - N) (default = 1)
The number of CPU sockets.
spice_enhancements: [foldersharing=<1|0>] [,videostreaming=<off|all|filter>]

Configure additional enhancements for SPICE.

sshkeys: <string>
cloud-init: Setup public SSH keys (one key per line, OpenSSH format).
startdate: (now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS) (default = now)
Set the initial date of the real time clock. Valid format for date are:'now' or 2006-06-17T16:01:21 or 2006-06-17.
startup: `[[order=]\d+] [,up=\d+] [,down=\d+] `
Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the up or down delay in seconds, which specifies a delay to wait before the next VM is started or stopped.
tablet: <boolean> (default = 1)
Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you’re running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (qm set <vmid> --vga qxl).
tags: <string>
Tags of the VM. This is only meta information.
tdf: <boolean> (default = 0)
Enable/disable time drift fix.
template: <boolean> (default = 0)
Enable/disable Template.
tpmstate0: [file=]<volume> [,size=<DiskSize>] [,version=<v1.2|v2.0>]

Configure a Disk for storing TPM state. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default size of 4 MiB will always be used instead. The format is also fixed to raw.

unused[n]: [file=]<volume>

Reference to unused volumes. This is used internally, and should not be modified manually.

usb[n]: [host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]

Configure an USB device (n is 0 to 4).

vcpus: <integer> (1 - N) (default = 0)
Number of hotplugged vcpus.
vga: [[type=]<enum>] [,memory=<integer>]

Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is std for all OS types besides some Windows versions (XP and older) which use cirrus. The qxl option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self. You can also run without any graphic card, using a serial device as terminal.

virtio[n]: [file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]

Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.

aio=<io_uring | native | threads>
AIO type to use.
backup=<boolean>
Whether the drive should be included when making backups.
bps=<bps>
Maximum r/w speed in bytes per second.
bps_max_length=<seconds>
Maximum length of I/O bursts in seconds.
bps_rd=<bps>
Maximum read speed in bytes per second.
bps_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
bps_wr=<bps>
Maximum write speed in bytes per second.
bps_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
cache=<directsync | none | unsafe | writeback | writethrough>
The drive’s cache mode
cyls=<integer>
Force the drive’s physical geometry to have a specific cylinder count.
detect_zeroes=<boolean>
Controls whether to detect and try to optimize writes of zeroes.
discard=<ignore | on>
Controls whether to pass discard/trim requests to the underlying storage.
file=<volume>
The drive’s backing volume.
format=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
The drive’s backing file’s data format.
heads=<integer>
Force the drive’s physical geometry to have a specific head count.
iops=<iops>
Maximum r/w I/O in operations per second.
iops_max=<iops>
Maximum unthrottled r/w I/O pool in operations per second.
iops_max_length=<seconds>
Maximum length of I/O bursts in seconds.
iops_rd=<iops>
Maximum read I/O in operations per second.
iops_rd_max=<iops>
Maximum unthrottled read I/O pool in operations per second.
iops_rd_max_length=<seconds>
Maximum length of read I/O bursts in seconds.
iops_wr=<iops>
Maximum write I/O in operations per second.
iops_wr_max=<iops>
Maximum unthrottled write I/O pool in operations per second.
iops_wr_max_length=<seconds>
Maximum length of write I/O bursts in seconds.
iothread=<boolean>
Whether to use iothreads for this drive
mbps=<mbps>
Maximum r/w speed in megabytes per second.
mbps_max=<mbps>
Maximum unthrottled r/w pool in megabytes per second.
mbps_rd=<mbps>
Maximum read speed in megabytes per second.
mbps_rd_max=<mbps>
Maximum unthrottled read pool in megabytes per second.
mbps_wr=<mbps>
Maximum write speed in megabytes per second.
mbps_wr_max=<mbps>
Maximum unthrottled write pool in megabytes per second.
media=<cdrom | disk> (default = disk)
The drive’s media type.
replicate=<boolean> (default = 1)
Whether the drive should considered for replication jobs.
rerror=<ignore | report | stop>
Read error action.
ro=<boolean>
Whether the drive is read-only.
secs=<integer>
Force the drive’s physical geometry to have a specific sector count.
serial=<serial>
The drive’s reported serial number, url-encoded, up to 20 bytes long.
shared=<boolean> (default = 0)

Mark this locally-managed volume as available on all nodes.

size=<DiskSize>
Disk size. This is purely informational and has no effect.
snapshot=<boolean>
Controls qemu’s snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.
trans=<auto | lba | none>
Force disk geometry bios translation mode.
werror=<enospc | ignore | report | stop>
Write error action.
vmgenid: <UUID> (default = 1 (autogenerated))
The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc. Note that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file.
vmstatestorage: <string>
Default storage for VM state volumes/files.
watchdog: [[model=]<i6300esb|ib700>] [,action=<enum>]

Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)