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.
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
)
agent
: [enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]
Enable/disable communication with the Qemu Guest Agent and its properties.
enabled
=<boolean>
(default = 0
)
fstrim_cloned_disks
=<boolean>
(default = 0
)
type
=<isa | virtio>
(default = virtio
)
arch
: <aarch64 | x86_64>
args
: <string>
Arbitrary arguments passed to kvm, for example:
args: -no-reboot -no-hpet
this option is for experts only.
audio0
: device=<ich9-intel-hda|intel-hda|AC97> [,driver=<spice|none>]
Configure a audio device, useful in combination with QXL/Spice.
device
=<AC97 | ich9-intel-hda | intel-hda>
driver
=<none | spice>
(default = spice
)
autostart
: <boolean>
(default = 0
)
balloon
: <integer> (0 - N)
bios
: <ovmf | seabios>
(default = seabios
)
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.
legacy
=<[acdn]{1,4}>
(default = cdn
)
order
=<device[;device...]>
The guest will attempt to boot from devices in the order they appear here.
Disks, optical drives and passed-through storage USB devices will be directly booted from, NICs will load PXE, and PCIe devices will either behave like disks (e.g. NVMe) or load an option ROM (e.g. RAID controller, hardware NIC).
Note that only devices in this list will be marked as bootable and thus loaded by the guest firmware (BIOS/UEFI). If you require multiple disks for booting (e.g. software-raid), you need to specify all of them here.
Overrides the deprecated legacy=[acdn]* value when given.
bootdisk
: (ide|sata|scsi|virtio)\d+
cdrom
: <volume>
cicustom
: [meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]
cloud-init: Specify custom files to replace the automatically generated ones at start.
meta
=<volume>
network
=<volume>
user
=<volume>
vendor
=<volume>
cipassword
: <string>
citype
: <configdrive2 | nocloud | opennebula>
ostype
. We use the nocloud
format for Linux, and configdrive2
for windows.
ciuser
: <string>
cores
: <integer> (1 - N)
(default = 1
)
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
)
flags
=<+FLAG[;-FLAG...]>
hidden
=<boolean>
(default = 0
)
hv-vendor-id
=<vendor-id>
phys-bits
=<8-64|host>
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
)
cpulimit
: <number> (0 - 128)
(default = 0
)
Limit of CPU usage.
If the computer has 2 CPUs, it has total of 2 CPU time. Value 0 indicates no CPU limit.
cpuunits
: <integer> (2 - 262144)
(default = cgroup v1: 1024, cgroup v2: 100
)
description
: <string>
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.
efitype
=<2m | 4m>
(default = 2m
)
file
=<volume>
format
=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
pre-enrolled-keys
=<boolean>
(default = 0
)
size
=<DiskSize>
freeze
: <boolean>
hookscript
: <string>
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.
This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.
Experimental! User reported problems with this option.
host
=<HOSTPCIID[;HOSTPCIID2...]>
Host PCI device pass through. The PCI ID of a host’s PCI device or a list of PCI virtual functions of the host. HOSTPCIID syntax is:
bus:dev.func (hexadecimal numbers)
You can us the lspci command to list existing PCI devices.
legacy-igd
=<boolean>
(default = 0
)
mdev
=<string>
pcie
=<boolean>
(default = 0
)
rombar
=<boolean>
(default = 1
)
romfile
=<string>
x-vga
=<boolean>
(default = 0
)
hotplug
: <string>
(default = network,disk,usb
)
network,disk,usb
.
hugepages
: <1024 | 2 | any>
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>
backup
=<boolean>
bps
=<bps>
bps_max_length
=<seconds>
bps_rd
=<bps>
bps_rd_max_length
=<seconds>
bps_wr
=<bps>
bps_wr_max_length
=<seconds>
cache
=<directsync | none | unsafe | writeback | writethrough>
cyls
=<integer>
detect_zeroes
=<boolean>
discard
=<ignore | on>
file
=<volume>
format
=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
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>
(default = disk
)
model
=<model>
replicate
=<boolean>
(default = 1
)
rerror
=<ignore | report | stop>
secs
=<integer>
serial
=<serial>
shared
=<boolean>
(default = 0
)
Mark this locally-managed volume as available on all nodes.
This option does not share the volume automatically, it assumes it is shared already!
size
=<DiskSize>
snapshot
=<boolean>
ssd
=<boolean>
trans
=<auto | lba | none>
werror
=<enospc | ignore | report | stop>
wwn
=<wwn>
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.
gw
=<GatewayIPv4>
Default gateway for IPv4 traffic.
Requires option(s): ip
gw6
=<GatewayIPv6>
Default gateway for IPv6 traffic.
Requires option(s): ip6
ip
=<IPv4Format/CIDR>
(default = dhcp
)
ip6
=<IPv6Format/CIDR>
(default = dhcp
)
ivshmem
: size=<integer> [,name=<string>]
Inter-VM shared memory. Useful for direct communication between VMs, or to the host.
name
=<string>
size
=<integer> (1 - N)
keephugepages
: <boolean>
(default = 0
)
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>
kvm
: <boolean>
(default = 1
)
localtime
: <boolean>
ostype
indicates a Microsoft Windows OS.
lock
: <backup | clone | create | migrate | rollback | snapshot | snapshot-delete | suspended | suspending>
machine
: (pc|pc(-i440fx)?-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|q35|pc-q35-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|virt(?:-\d+(\.\d+)+)?(\+pve\d+)?)
memory
: <integer> (16 - N)
(default = 512
)
migrate_downtime
: <number> (0 - N)
(default = 0.1
)
migrate_speed
: <integer> (0 - N)
(default = 0
)
name
: <string>
nameserver
: <string>
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.
bridge
=<bridge>
Bridge to attach the network device to. The Proxmox VE standard bridge is called vmbr0.
If you do not specify a bridge, we create a kvm user (NATed) network device, which provides DHCP and DNS services. The following addresses are used:
10.0.2.2 Gateway 10.0.2.3 DNS Server 10.0.2.4 SMB Server
The DHCP server assign addresses to the guest starting from 10.0.2.15.
firewall
=<boolean>
link_down
=<boolean>
macaddr
=<XX:XX:XX:XX:XX:XX>
model
=<e1000 | e1000-82540em | e1000-82544gc | e1000-82545em | e1000e | i82551 | i82557b | i82559er | ne2k_isa | ne2k_pci | pcnet | rtl8139 | virtio | vmxnet3>
mtu
=<integer> (1 - 65520)
queues
=<integer> (0 - 16)
rate
=<number> (0 - N)
tag
=<integer> (1 - 4094)
trunks
=<vlanid[;vlanid...]>
numa
: <boolean>
(default = 0
)
numa[n]
: cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]
NUMA topology.
cpus
=<id[-id];...>
hostnodes
=<id[-id];...>
memory
=<number>
policy
=<bind | interleave | preferred>
onboot
: <boolean>
(default = 0
)
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).
This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.
Experimental! User reported problems with this option.
protection
: <boolean>
(default = 0
)
reboot
: <boolean>
(default = 1
)
rng0
: [source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]
Configure a VirtIO-based Random Number Generator.
max_bytes
=<integer>
(default = 1024
)
0
to disable limiting (potentially dangerous!).
period
=<integer>
(default = 1000
)
source
=</dev/hwrng | /dev/random | /dev/urandom>
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>
backup
=<boolean>
bps
=<bps>
bps_max_length
=<seconds>
bps_rd
=<bps>
bps_rd_max_length
=<seconds>
bps_wr
=<bps>
bps_wr_max_length
=<seconds>
cache
=<directsync | none | unsafe | writeback | writethrough>
cyls
=<integer>
detect_zeroes
=<boolean>
discard
=<ignore | on>
file
=<volume>
format
=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
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>
(default = disk
)
replicate
=<boolean>
(default = 1
)
rerror
=<ignore | report | stop>
secs
=<integer>
serial
=<serial>
shared
=<boolean>
(default = 0
)
Mark this locally-managed volume as available on all nodes.
This option does not share the volume automatically, it assumes it is shared already!
size
=<DiskSize>
snapshot
=<boolean>
ssd
=<boolean>
trans
=<auto | lba | none>
werror
=<enospc | ignore | report | stop>
wwn
=<wwn>
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>
backup
=<boolean>
bps
=<bps>
bps_max_length
=<seconds>
bps_rd
=<bps>
bps_rd_max_length
=<seconds>
bps_wr
=<bps>
bps_wr_max_length
=<seconds>
cache
=<directsync | none | unsafe | writeback | writethrough>
cyls
=<integer>
detect_zeroes
=<boolean>
discard
=<ignore | on>
file
=<volume>
format
=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
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
=<boolean>
mbps
=<mbps>
mbps_max
=<mbps>
mbps_rd
=<mbps>
mbps_rd_max
=<mbps>
mbps_wr
=<mbps>
mbps_wr_max
=<mbps>
media
=<cdrom | disk>
(default = disk
)
queues
=<integer> (2 - N)
replicate
=<boolean>
(default = 1
)
rerror
=<ignore | report | stop>
ro
=<boolean>
scsiblock
=<boolean>
(default = 0
)
whether to use scsi-block for full passthrough of host block device
can lead to I/O errors in combination with low memory or high memory fragmentation on host
secs
=<integer>
serial
=<serial>
shared
=<boolean>
(default = 0
)
Mark this locally-managed volume as available on all nodes.
This option does not share the volume automatically, it assumes it is shared already!
size
=<DiskSize>
snapshot
=<boolean>
ssd
=<boolean>
trans
=<auto | lba | none>
werror
=<enospc | ignore | report | stop>
wwn
=<wwn>
scsihw
: <lsi | lsi53c810 | megasas | pvscsi | virtio-scsi-pci | virtio-scsi-single>
(default = lsi
)
searchdomain
: <string>
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).
If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.
Experimental! User reported problems with this option.
shares
: <integer> (0 - 50000)
(default = 1000
)
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.
base64
=<boolean>
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>
smp
: <integer> (1 - N)
(default = 1
)
sockets
: <integer> (1 - N)
(default = 1
)
spice_enhancements
: [foldersharing=<1|0>] [,videostreaming=<off|all|filter>]
Configure additional enhancements for SPICE.
foldersharing
=<boolean>
(default = 0
)
videostreaming
=<all | filter | off>
(default = off
)
sshkeys
: <string>
startdate
: (now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)
(default = now
)
startup
: `[[order=]\d+] [,up=\d+] [,down=\d+] `
tablet
: <boolean>
(default = 1
)
qm set <vmid> --vga qxl
).
tags
: <string>
tdf
: <boolean>
(default = 0
)
template
: <boolean>
(default = 0
)
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.
file
=<volume>
size
=<DiskSize>
version
=<v1.2 | v2.0>
(default = v2.0
)
unused[n]
: [file=]<volume>
Reference to unused volumes. This is used internally, and should not be modified manually.
file
=<volume>
usb[n]
: [host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]
Configure an USB device (n is 0 to 4).
host
=<HOSTUSBDEVICE|spice>
The Host USB device or port or the value spice. HOSTUSBDEVICE syntax is:
'bus-port(.port)*' (decimal numbers) or 'vendor_id:product_id' (hexadeciaml numbers) or 'spice'
You can use the lsusb -t command to list existing usb devices.
This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.
The value spice can be used to add a usb redirection devices for spice.
usb3
=<boolean>
(default = 0
)
vcpus
: <integer> (1 - N)
(default = 0
)
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.
memory
=<integer> (4 - 512)
type
=<cirrus | none | qxl | qxl2 | qxl3 | qxl4 | serial0 | serial1 | serial2 | serial3 | std | virtio | vmware>
(default = std
)
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>
backup
=<boolean>
bps
=<bps>
bps_max_length
=<seconds>
bps_rd
=<bps>
bps_rd_max_length
=<seconds>
bps_wr
=<bps>
bps_wr_max_length
=<seconds>
cache
=<directsync | none | unsafe | writeback | writethrough>
cyls
=<integer>
detect_zeroes
=<boolean>
discard
=<ignore | on>
file
=<volume>
format
=<cloop | cow | qcow | qcow2 | qed | raw | vmdk>
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
=<boolean>
mbps
=<mbps>
mbps_max
=<mbps>
mbps_rd
=<mbps>
mbps_rd_max
=<mbps>
mbps_wr
=<mbps>
mbps_wr_max
=<mbps>
media
=<cdrom | disk>
(default = disk
)
replicate
=<boolean>
(default = 1
)
rerror
=<ignore | report | stop>
ro
=<boolean>
secs
=<integer>
serial
=<serial>
shared
=<boolean>
(default = 0
)
Mark this locally-managed volume as available on all nodes.
This option does not share the volume automatically, it assumes it is shared already!
size
=<DiskSize>
snapshot
=<boolean>
trans
=<auto | lba | none>
werror
=<enospc | ignore | report | stop>
vmgenid
: <UUID>
(default = 1 (autogenerated)
)
vmstatestorage
: <string>
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)
action
=<debug | none | pause | poweroff | reset | shutdown>
model
=<i6300esb | ib700>
(default = i6300esb
)