Commit Graph

1028 Commits

Author SHA1 Message Date
Alexandre Derumier
87955688fd Fix #1664: nbd mirror : remove socat tunnel
socat tunnel for nbd mirror was introduce here
https://pve.proxmox.com/pipermail/pve-devel/2017-January/024777.html
to workaround when nbd client was hanging on non responding nbd server.

We have added a 30s timeout on socat tunnel, but when we migrate
multiple disks, it can break migration if for example first disk
is already finished and don't send any new datas in the tunnel.

The connect timeout bug has been fixed in qemu 2.9,
so we can remove the socat tunnel now.
2018-02-16 13:58:56 +01:00
Chris Hofstaedtler
ec82e3eee4 fix #1569: add shared flag to disks
With shared=1, (live) migration ignores the disk and assumes it is
present on all target nodes. This works similar to shared=1 on LXC
mountpoints.

Signed-off-by: Chris Hofstaedtler <chris.hofstaedtler@deduktiva.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-02-15 15:19:29 +01:00
Wolfgang Bumiller
bfb04cfc01 correct 'snapshot' flag description
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-02-08 13:41:27 +01:00
Dominik Csapak
5fc748614f append option to drive if the option is defined
if the value was '0', we did not append the option to the drive,
resulting in wrong command line if the qemu default of an option is not
'0'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-02-08 13:29:06 +01:00
Dominik Csapak
8a2677081d fix #1662: use special case for 'snapshot' disk parameter
since qemu expects on|off (not 1|0),
we have to do it different

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-02-08 13:28:55 +01:00
Wolfgang Link
19a5dd551d Make the smbios UUID unique if --unique is used.
When we clone a VM we also make the smbios unique.
2018-02-05 14:38:41 +01:00
Dominik Csapak
8107b378c9 add serial:1 to vmstatus when config has a serial device configured
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Acked-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-01-30 16:36:38 +01:00
Fabian Grünbichler
049fc9ebe7 CPU flags: add spec-ctrl
to allow VMs to use IBRS/IBPB on systems with patched microcode

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-01-16 14:12:18 +01:00
Fabian Grünbichler
a446dbf46b CPU types: add missing types
Skylake-Server is the Xeon variant of Skylake

max is "all features supported by the accelerator in the current host"

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-01-16 14:10:57 +01:00
Fabian Grünbichler
9052cabab6 CPU types: add -IBRS variants
this have the 'spec-ctrl' flag by default to allow IBRS based Spectre
mitigation by the guest kernel.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-01-16 14:10:57 +01:00
Alexandre Derumier
f38de678e4 increase start timeout when hugepages are enabled.
Hugepages can take some time to be allocated by qemu at start (60s for 120G of 1G hugepages).
This patch increase start timeout to 5min when hugepages are enabled.
2018-01-10 15:08:26 +01:00
Wolfgang Bumiller
39fd79e2ad add 'flags' property to cpu option
Currently this only allows specifying '+pcid' or '-pcid'
but might be extended in the future.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-01-09 15:42:53 +01:00
Wolfgang Bumiller
13bca7b4de fix efi disk format detection
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Fixes: 2bfbee039b ("include format for efidisk")
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2018-01-09 15:20:51 +01:00
Emmanuel Kasper
3618ee99aa Use default values from load_defaults() when none is specified in conf
This also fixes a bug where VMs with no memory defined in the config
where reported as using 0MB instead of 512.

Signed-off-by: Emmanuel Kasper <e.kasper@proxmox.com>
2017-12-15 13:05:59 +01:00
Dominik Csapak
c449137a04 do not add unused disk when already as unused on another storage
when having an unused disk on a storage for which there are multiple
definitions, we added it again on another storage when that storage
was alphabetically before the already existing one

this happens for example when using our automatically generated
ceph storages: 'pool_ct' and 'pool_vm' and having a vm with
an unused disk

with this patch, we also leave the unused disks in the hash

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-20 14:38:48 +01:00
Dominik Csapak
aea47dd6a0 fix #1471: change keyboard default to undef
this means that we do not include the '-k' parameter anymore by default
(which is deprecated by qemu)

with this, noVNC and spice always respect the guest keyboard
configuration and altgr keys work without problems

tested:
ubuntu with english intl and german with novnc and spice
windows 10 with english intl and german with novnc and spice
live migration

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-15 13:16:38 +01:00
Wolfgang Bumiller
6941ee4e1c fix typo
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2017-11-10 11:27:05 +01:00
Dominik Csapak
1a988fd2e8 check if ga runs before a fsfreeze-freeze/thaw
since the guest-fsfreeze-freeze command has a timeout of 1 hour,
we want to check if the guest-agent even runs before executing that,
or else we wait 1 hour and then continue

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-11-10 11:20:55 +01:00
Thomas Lamprecht
44c2a647ff update ostype documentation
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-11-07 08:47:15 +01:00
Dominik Csapak
2bfbee039b include format for efidisk
if the efidisk is in 'raw' format, qemu will prevent writes
on block zero if the format is not explicitely given

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-07 08:45:25 +01:00
Philip Abernethy
237239bf60 correct cpuunits range
'These options take an integer value and control the "cpu.shares"
control group attribute. The allowed range is 2 to 262144. Defaults to
1024.' – man 5 systemd.resource-control
2017-10-17 14:10:49 +02:00
Dominik Csapak
5e67a2d2c4 check if base volumes are unused before deleting a template
we only checked if a vm had in use base disks when deleting them,
at which point we do not stop to delete the vm even when a
disk deletion fails, which means we could successfully delete the config
and all not used (base) disks of a template, resulting in left over vm disks

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-10-13 10:18:34 +02:00
Emmanuel Kasper
ae2fcb3be6 Refactor defaut bootdisk and smbios1 uuid generation in own subs
This will allow code reuse for qm importovf
2017-09-25 13:31:55 +02:00
Fabian Grünbichler
8ddbcf8bd6 use foreach_drive in foreach_storage_used_by_vm
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-09-22 10:02:54 +02:00
Fabian Grünbichler
8cad5e9bd8 config: make vmstatestorage hotpluggable
since this is just an option for PVE, and does not concern the VM at all.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-09-22 10:02:54 +02:00
Fabian Grünbichler
65a5ce88e6 rename foreach_writable_storage to foreach_storage_used_by_vm
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-09-22 10:02:54 +02:00
Fabian Grünbichler
253624c76f config: add vmstatestorage option
and permission checks

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-09-22 10:02:54 +02:00
Emmanuel Kasper
6cb0144ae3 do not overwrite global signal handlers
perls 'local' must be either used in front of each $SIG{...}
assignments or they must be put in a list, else it affects only the
first variable and the rest are *not* in local context.

In all cases the global signal handlers we overwrote were in cli programs or
forked workers, not in daemons.
2017-09-14 15:25:28 +02:00
Thomas Lamprecht
4dcce9ee3c ovmf: deprecate old legay ovmf image and refactor
this was only kept for PVE 4.X where the switch to the newer OVMF
image with actual working persisten EFIVARS was made.

We do not ship this old image in PVE 5.0 anymore so remove this
legacy code as it can never trigger anyhow.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-11 10:04:46 +02:00
Thomas Lamprecht
3e1f112286 create_disks: refactor out and improve efidisk creation
factor out code in a new create_efidisk submethod, as else this code
is hardly readable as the efidisk0 case is a special case. Refer from
putting all this specialised handling directly to the much shorter
code for all other cases.

Also the disk was created with a specific format and then a format
detection on the newly created disk was done, which is pretty
useless, clear that up.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-11 10:04:46 +02:00
Thomas Lamprecht
5b97ef2441 restore_vma_archive: do not overwrite global signal handlers
perls 'local' must be either used in front of each $SIG{...}
assignments or they must be put in a list, else it affects only the
first variable and the rest are *not* in local context.

This may cause weird behaviour where daemons seemingly do not get
terminating signals delivered correctly and thus may not shutdown
gracefully anymore.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-07 10:39:34 +02:00
Philip Abernethy
bfcd9b7eac Fix #1125. Check for KVM support before starting VM
Moved the check to the beginning of the function.
VMs configured to use KVM won't start if KVM is not available.
VMs not configured to use KVM will start regardless.
2017-08-21 16:19:20 +02:00
Philip Abernethy
74c02ef7f8 Refactors $nokvm to $kvm
for improved readability and consistency with the option name.
2017-08-21 16:19:20 +02:00
Philip Abernethy
075e8249fa Refactor HyperV enlightenments
Fixes a typo in the function name and removes the $nokvm parameter, as it's only
used to immideately exit the function. Instead calling the function
conditionally.
2017-08-21 16:19:20 +02:00
Thomas Lamprecht
a2a5cd64ab use machine version in vga default type selection
If we get an VM machine older than 2.9 we use the old selection
expression for the VGA type. This allows to live migrate VMs to PVE
5.0 from beta 1 and PVE 4.4 again.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-07-17 11:16:49 +02:00
Dominik Csapak
8aca16542e fix disk throttling syntax
the syntax was wrong, it was (e.g. for iops-write):

throttling.iops-write=-max100
instead of
throttling.iops-write-max=100

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-07-14 15:15:11 +02:00
Wolfgang Bumiller
85909c04c4 don't use cirrus by default for sane OS'
(It can stay for $winversion < 6 because then you probably
don't have drivers for anything else.)

this is long overdue
2017-06-28 12:07:16 +02:00
Dietmar Maurer
39019f75c7 PVE::QemuServer::foreach_volid - record snapshot references
So that we can test if a volume is referenced in the main config, and/or
inside a snapshot config.
2017-06-13 09:02:06 +02:00
Dietmar Maurer
392f8b5dff PVE::QemuServer::foreach_volid - pass $attr hash to callback
That way we can pass more informations, i.e. the 'replicate' attribute.
2017-06-13 09:02:06 +02:00
Wolfgang Bumiller
5ee3847149 fix #1405: sort pci ids by functions
QemuServer::lspci() iterates over /sys/bus/pci/devices which
doesn't guarantee any order which means functions sometimes
ended up in the wrong order and it was never clear which
one would get the additional options such as x-vga passed
to them.
2017-06-09 12:34:18 +02:00
Emmanuel Kasper
44549149af Refactor the resolution of target disk format in own sub
This will allow use to reuse the code in ImportDisk.pm.
2017-06-01 11:05:35 +02:00
Wolfgang Bumiller
fb8e95a218 fix burst length parameter names and pass them to qemu
bps_max_length & friends were wrongly named and were only
passed to qemu when hot-applying changes. They can only
be passed via the command line with their new names. For
consistency let's rename them all, that way they're all in
one place.

Fixes #1195 (for real this time).
2017-05-31 08:10:27 +02:00
Wolfgang Bumiller
911524414e fix #1229: more explicit spice port allocation
We cannot look for ports on "any" wildcard address while
letting qemu bind to "localhost", this may lead to a qemu
process occupying ::1 while the next search successfully
finds the same port available for IPv4's '*' address.

Instead, we now lookup the IP of the desired family for
'localhost'. Note that while we could simply be hardcoding
::1 or 127.0.0.1, with this code we are protocol agnostic.
2017-05-31 08:07:34 +02:00
Dietmar Maurer
3ab7663a91 remove 'replicate' configuration - we will store that in another file 2017-05-31 07:53:57 +02:00
Fabian Grünbichler
df58868200 print_cpu_device: remove unused variable 2017-05-23 14:23:52 +02:00
Tobias Böhm
7032e08c85 Fix #1384: add missing decrement to calculation of socket-id
For calculation of "current_core" the input variable id is decremented.
For calculation of "current_socket" this decrement was missing resulting
in a wrong value when "cores" is set to 1.

Signed-off-by: Tobias Böhm <tb@robhost.de>
2017-05-23 14:21:55 +02:00
Dietmar Maurer
3aa44d3b57 move get_replicatable_volumes from QemuServer.pm to QemuConfig.pm 2017-05-06 17:13:31 +02:00
Dietmar Maurer
0342b45bee get_replicatable_volumes: replacemnet for PVE::ReplicationTools::get_syncable_guestdisks()
correctly scan for volumes inside snapshots.

This will also solve the cyclic package dependency propblem.
2017-05-06 15:11:46 +02:00
Dietmar Maurer
8557d01f75 rename drive 'replica' property to 'replicate' 2017-05-06 10:46:21 +02:00
Dietmar Maurer
2286cb8c23 use a single replicate property (format pve-replicate) 2017-05-06 10:35:08 +02:00
Wolfgang Bumiller
1849c59288 whitespace fixup 2017-04-28 10:14:26 +02:00
Wolfgang Link
9edac22f5f Insert new properties in the Qemu config for the PVE Replica.
This patch will include all necessary properties for the replication.
Also will it enable and disable a replication job
when appointed flags are set or deleted.
2017-04-28 10:11:33 +02:00
Alexandre Derumier
6e9d255038 add rerror for all drives
it was missing for scsi, and it's supported for all kind of drive

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-04-28 10:02:38 +02:00
Fabian Grünbichler
b37ecfe6ae start: keep VM paused when migrating via unix socket
this (correctly!) errored out with Qemu 2.9 when live-migrating
local disks, because the NBD server blocks the VM from being
resumed. was probably missed when migrating via unix domains
was originally introduced..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-04-21 11:43:29 +02:00
Wolfgang Bumiller
d1782ebad3 don't compare booleans
a) because perl isn't THAT bad of a language that you'd need
to do this and b) because JSON::XS version 2.90 "dropped"
this "feature"
2017-04-03 14:13:15 +02:00
Dominik Csapak
3db920fc13 add Skylake to CPU Models
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-02-28 12:19:14 +01:00
Wolfgang Bumiller
7fe1b688b6 fix bad scsihw default value check
This was checking for scsihw being set in both branches
whereas lsi is also the default. Added the missing 'not'.

Fixes a bug where a VM with a disk with a scsi index >= 7
refused to start due to an invalid scsi id.

Reported-by: Friedrich Ramberger <f.ramberger@proxmox.com>
2017-02-13 14:10:00 +01:00
Wolfgang Bumiller
1e4fb053d3 skiplock standard option was moved to pve-common
this now need libpve-common-perl >= 4.0-92
2017-02-08 09:56:02 +01:00
Fabian Grünbichler
5ff2bb065a change TLS cipher suite to HIGH
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-01-31 13:38:20 +01:00
Fabian Grünbichler
8e3c33ab64 only use scsi-block with explicit opt-in
since it can cause I/O errors and data corruption in low
memory or highly fragmented memory situations since Qemu 2.7

use scsi-hd by default instead

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-01-25 09:18:46 +01:00
Dmitry Petuhov
7246e8f92f Set zero $size and continue if volume_resize() returns false
Needed for some storages with backing block devices to do oonlinr resize.

Signed-off-by: Dmitry Petuhov <mityapetuhov@gmail.com>
2017-01-16 09:14:32 +01:00
Wolfgang Bumiller
9009150b81 cleanup: drop superfluous condition in assignment
Its use later on already uses itself as condition.
2017-01-09 15:33:12 +01:00
Alexandre Derumier
456a6fec00 add romfile option to hostpci
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-09 15:31:18 +01:00
Wolfgang Bumiller
bd2d5fe6ff cleanup: error messages 2017-01-05 10:03:16 +01:00
Wolfgang Bumiller
923aaa9e1a drive-mirror: bump timeout to 5s, add 30s inactivity timeout 2017-01-05 10:03:16 +01:00
Wolfgang Bumiller
ca5c27f065 drive-mirror: warn use POSIX::_exit on exec failure 2017-01-05 10:03:16 +01:00
Wolfgang Bumiller
3b4cf0f0fc cleanup: whitespaces & style 2017-01-05 10:03:10 +01:00
Alexandre Derumier
5619e74aed live clone_vm : suspend or freezefs before block-job-cancel
if qga is enabled, we try to freeze the fs before cancelling block job.
if not , we pause the vm.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-05 09:09:46 +01:00
Alexandre Derumier
35e4ab0498 add socat and unix socket for storage migration
This is a workaround for nbd infinite timeout connect

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-05 09:09:46 +01:00
Alexandre Derumier
63a0937008 add qm nbdstop
we use it to stop remote nbd server

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-05 09:09:46 +01:00
Alexandre Derumier
2189246c5c add targetstorage to vm_start
This will create a new drive for each local drive found,
and start the vm with this new drives.

if targetstorage == 1, we use same sid than original vm disk

a nbd server is started in qemu and expose local volumes to network port

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-05 09:09:46 +01:00
Alexandre Derumier
5a34596743 qemu_drive_mirror : handle multiple jobs
we can use multiple drive_mirror in parralel.

block-job-complete can be skipped, if we want to add more mirror job later.

also add support for nbd uri to qemu_drive_mirror

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2017-01-05 09:09:46 +01:00
Fabian Grünbichler
31b522478d destroy_vm: allow vdisk_free to fail
otherwise we end up with undeletable VM configs in case
vdisk_free fails (which could happen because of cluster-wide
lock contention, storage problems, ..).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2016-12-22 12:40:09 +01:00
Dietmar Maurer
b017fbda29 avoid "No balloon device has been activated" warnings in vmstatus 2016-12-20 10:11:56 +01:00
Thomas Lamprecht
b7a5a2251b allow insecure migrations from older qemu-servers
When trying to migrate a VM from a node with qemu server <= 4.0-92 to
a node with qemu server >= 4.0-93 we failed as the remote qemu-server
got no explicit migration_type' from the older qemu server on the
source.

Check if migration_type is defined on a incoming migration start, if
not set it.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-12-02 18:48:49 +01:00
Emmanuel Kasper
0cb9971ec2 Add entry for windows 10 and 2016 support
All special flags for Windows 8 and Windows 2012 (win8 type)
are kept the same , since we set flags based on checking  if
/^win(\d+)$/ is greater than 6 or 7
2016-11-29 09:08:42 +01:00
Alexandre Derumier
1ef7592f1e qemu_volume_snapshot_delete : fix krbd snapshot delete
like for snapshot, we need to check if krbd is enabled, to known
if we need to use qmp delete-drive-snapshot or storage command directly

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-11-17 09:46:16 +01:00
Alexandre Derumier
ac08761682 qxlnum: use $winversion
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-11-11 09:54:39 +01:00
Alexandre Derumier
5aba3953bd hv_vendor_id : for winversion >= 6 , not >=7.
as It was previously.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-11-11 09:54:28 +01:00
Alexandre Derumier
4317f69fc5 cleanup windows version handling and hyperv enlightments
This cleanup windows guest os version handling,
with normalizing ostype with numbers in a new windows_version sub.

if($ostype eq 'wxp' || $ostype eq 'w2k3' || $ostype eq 'w2k') {
      $winversion = 5;
} elsif($ostype eq 'w2k8' || $ostype eq 'wvista') {
      $winversion = 6;
} elsif ($ostype =~ m/^win(\d+)$/) {
      $winversion = $1;
}

so we can simply do test on windows version with lower or upper version

Hyperv enlightments configuration is centralized
in a new add_hyperv_enlighments sub.

Also disable hyperv with win < 8 + ovmf.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-11-11 06:06:28 +01:00
Dietmar Maurer
36e54bd7f1 remove format_description from $met_fmt->{model} 2016-11-05 16:28:59 +01:00
Dietmar Maurer
8485b9ba68 remove unnecessary format_description from cputype 2016-11-05 15:56:12 +01:00
Dietmar Maurer
c7d2b65040 register new standard option 'pve-qm-image-format' 2016-11-03 13:21:53 +01:00
Dietmar Maurer
d3f3f1b348 fix add_throttle_desc - pass correct units 2016-11-03 12:48:24 +01:00
Wolfgang Bumiller
9196a8ec62 Close #1195: support iops/bps_max_length throttling options 2016-11-03 10:24:12 +01:00
Wolfgang Bumiller
6ecfbb4400 fix a warning: discard is not a number 2016-11-03 09:55:59 +01:00
Thomas Lamprecht
2de2d6f74e allow dedicated migration network, bug #1177
Without this patch we use the network were the cluster traffic runs
for sending migration traffic. This is not ideal as it may hinder
cluster traffic. Further some users have a powerful network which
would be perfect for migrations, with this patch they can run the
migration traffic over such a network without having the corosync
traffic on the same network.

The network is configurable through /etc/pve/datacenter.cfg which
got a new property, namely migration. migration has two
subproperties: type (replaces the old migration_unsecure property)
and network.

For the case of a network failure or that a VM has to be moved over
another network for arbitrary other reasons I added the
migration_type and migration_network parameters to qm migrate (and
respectively vm_start as this gets used on migration).
They allow overwriting the datacenter.cfg settings.

Fixes bug #1177

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-11-03 09:51:23 +01:00
Dietmar Maurer
613d76a179 change default value for cpuunits to 1024
Use the same default as containers.
2016-10-27 07:23:32 +02:00
Wolfgang Bumiller
b799312f2f Fix #1174: remove pve-qm-drive
Let 'cdrom' use the pve-qm-ide format, as it's supposed to
be an alias to ide2.
We're not using the 'alias' schema property since the qemu
configs still use a custom parser (due to the
pending-changes system and the filename-to-volume-id
conversion for legacy support) which does not deal with
schema aliases.
2016-10-18 11:45:41 +02:00
Wolfgang Bumiller
961af8a3c5 improve error messages 2016-10-17 14:49:05 +02:00
Alexandre Derumier
2e5416790f enable drive-mirror with iothread for qemu 2.7 v2
changelog : check running qemu binary version

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 14:34:56 +02:00
Alexandre Derumier
98cfd8b641 add get_running_qemu_version
return current running qemu process version

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 12:52:56 +02:00
Alexandre Derumier
eba3e64d2e cpu hotplug : add new cpu hotplug method for qemu 2.7
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 12:51:12 +02:00
Alexandre Derumier
1e881b75d8 cpu hotplug : add cpu hot-unplug support
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 12:51:12 +02:00
Alexandre Derumier
69c81430e0 cpu hotplug : add coldplugged cpu to qemu command line
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 12:51:12 +02:00
Alexandre Derumier
0efb537eb7 cpu hotplug : add print_cpu_device
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-10-17 12:51:12 +02:00
Wolfgang Link
5930c1ff6b fix #1111: qm showcmd wrong escape sequence 2016-10-04 08:38:09 +02:00
Wolfgang Link
4a5cf64a80 Avoid to parse empty property string.
Check if string exists before you try to parse it. Remove unnecessary
eval.
2016-10-04 08:35:52 +02:00
Fabian Grünbichler
6b72854b95 restore: better error handling for vdisk deletion
when restoring into an existing VM, we don't want to die
half-way through because we can't delete one of the existing
volumes. instead, warn about the deletion failure, but
continue anyway. the not deleted disk is then added as
unused automatically.
2016-09-15 14:16:12 +02:00
Dominik Csapak
dbea44152e add seabios bootsplash and use it
this adds a bootsplash image in /usr/share/qemu-server
and if this file exists, use it for seabios

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-09-08 12:22:01 +02:00
Dominik Csapak
2ddc0a5c75 use efidisk0 for efivars
if efidisk0 is defined, use it as a efivars disk,
to permanently store efivars (such as boot options)

we check if the files exist, and act accordingly

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-09-08 11:31:28 +02:00
Dominik Csapak
6470743ff9 add efidisk0 to config
just a simple disk (only size, format and volid) for
efivars disk

also do not add it to command line in foreach_drive

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-09-08 11:10:52 +02:00
Wolfgang Bumiller
a3139f90dc hostpci: bring back multifunction pass-through shortcut 2016-08-29 10:08:00 +02:00
Alexandre Derumier
2af848a2da disable drive-mirror when iothread is enabled
drive-mirror is not working with qemu 2.6 when iothread is enabled.

with virtio-blk : mirror is working, but block-job-completed crash the vm
with virtio-scsi : mirror hang at start.

This should be fixed in qemu 2.7

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-08-23 09:28:54 +02:00
Alexandre Derumier
eed2430325 qemu-img convert : use default cache=unsafe instead writeback
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-08-01 10:40:03 +02:00
Wolfgang Bumiller
ec647db4f8 Fix #1057: make protection a fast-plug option
Otherwise you need to shutdown a VM to disable protection,
which is inconvenient for a few tasks such as for instance
deleting an unused disk.
2016-07-26 14:47:30 +02:00
Fabian Grünbichler
3999f370b1 only activate the newly created volume
instead of the whole list.
2016-07-14 12:31:36 +02:00
Wolfgang Bumiller
b5b9979081 pass datacenter.cfg's mac_prefix to random_ether_addr 2016-07-14 09:02:24 +02:00
Dominik Csapak
f745762b2e disable usb hotplug for now
we have a few problems with hotplug at the moment:
qemu may add usb hubs when adding usb devices but fails to remove them
when removing the usb device (this is a qemu bug)

also when starting a guest with a usb device we add ehci and uchi
controllers, which we cannot hot unplug

with those devices, it is impossible to live migrate the guest
to another host, meaning even if you remove all usb devices,
the migrate fails

so we deactivate usb hotplugging for now

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-07-05 09:23:57 +02:00
Dominik Csapak
4eb6860435 implement usb hotplug
this patch introduces working usb hotplugging

you can now add a usb device while a vm is running

this does not work with spice at the moment, only
with usb passthrough

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-22 09:13:16 +02:00
Dominik Csapak
16521d6353 add qemu_usb_hotplug
this adds a function for hotplugging usb devices

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-22 09:13:16 +02:00
Dominik Csapak
deb091c500 get usbdevices in vm_devices_list
since usb devices do not have their own
"query" command in qmp, we have to use
qom-list /machines/peripheral

which essentially gets a list of peripheral devices of
the vm

there we only get the usb devices

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-22 09:13:16 +02:00
Dominik Csapak
d40e5e1852 use the refactored usb functions
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-22 09:13:16 +02:00
Dominik Csapak
de9768f002 refactor PCI into own file
to reduce QemuServer.pm size
also move the $device hash out of any function

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-22 09:13:16 +02:00
Alexandre Derumier
7023f3ea16 add hugepages option
vm configuration
----------------
hugepages: (any|2|1024)

any: we'll try to allocate 1GB hugepage if possible, if not we use 2MB hugepage
2: we want to use 2MB hugepage
1024: we want to use 1GB hugepage. (memory need to be multiple of 1GB in this case)

optionnal host configuration for 1GB hugepages
----------------------------------------------
1GB hugepages can be allocated at boot if user want it.
hugepages need to be contiguous, so sometime it's not possible to reserve them on the fly

/etc/default/grub : GRUB_CMDLINE_LINUX_DEFAULT="quiet hugepagesz=1G hugepages=x"

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Acked-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2016-06-22 09:11:11 +02:00
Fabian Grünbichler
b74ff0476e add @param to foreach_drive 2016-06-17 16:20:57 +02:00
Wolfgang Link
b6adff3385 fix perl scope issues
Add parameter array to foreach_volid to use is in the functions.
correct typos.
2016-06-16 11:26:37 +02:00
Wolfgang Bumiller
387ba25792 split old style pipe open call 2016-06-09 18:12:26 +02:00
Alexandre Derumier
7a131888d7 add hyperv enlightments : hv_reset, hv_vpindex, hv_runtime
add them by default for qemu 2.6
(support is already present in qemu 2.5, but we don't want to break live migration for current running vm)

vpindex && runtime need host kernel 4.4

Theses 3 enlightements are needed by windows to use vmbus
http://searchwindowsserver.techtarget.com/definition/Microsoft-Virtual-Machine-Bus-VMBus

details :

- When Hyper-V "vpindex" is on, guest can use MSR HV_X64_MSR_VP_INDEX
to get virtual processor ID.

- Hyper-V "runtime" enlightement feature allows to use MSR
HV_X64_MSR_VP_RUNTIME to get the time the virtual processor consumes
running guest code, as well as the time the hypervisor spends running
code on behalf of that guest.

- Hyper-V "reset" allows guest to reset VM.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-06-07 10:08:25 +02:00
Thomas Lamprecht
54323eed5f migrate: unlink unix socket before starting migration
Just to be sure nobody else has (wrongfully) left that file here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-06-03 16:02:25 +02:00
Thomas Lamprecht
1c9d54bfd0 migrate: use ssh forwarded UNIX socket tunnel
We cannot guarantee when the SSH forward Tunnel really becomes
ready. The check with the mtunnel API call did not help for this
prolem as it only checked that the SSH connection itself works and
that the destination node has quorum but the forwarded tunnel itself
was not checked.

The Forward tunnel is a different channel in the SSH connection,
independent of the SSH `qm mtunnel` channel, so only if that works
it does not guarantees that our migration tunnel is up and ready.

When the node(s) where under load, or when we did parallel
migrations (migrateall), the migrate command was often started
before a tunnel was open and ready to receive data. This led to
a direct abortion of the migration and is the main cause in why
parallel migrations often leave two thirds or more VMs on the
source node.
The issue was tracked down to SSH after debugging the QEMU
process and enabling debug logging showed that the tunnel became
often to late available and ready, or not at all.

Fixing the TCP forward tunnel is quirky and not straight ahead, the
only way SSH gives as a possibility is to use -N (no command)
-f (background) and -o "ExitOnForwardFailure=yes", then it would
wait in the foreground until the tunnel is ready and only then
background itself. This is not quite the nicest way for our special
use case and our code base.
Waiting for the local port to become open and ready (through
/proc/net/tcp[6]] as a proof of concept is not enough, even if the
port is in the listening state and should theoretically accept
connections this still failed often as the tunnel was not yet fully
ready.

Further another problem would still be open if we tried to patch the
SSH Forward method we currently use - which we solve for free with
the approach of this patch - namely the problem that the method
to get an available port (next_migration_port) has a serious race
condition which could lead to multiple use of the same port on a
parallel migration (I observed this on my many test, seldom but if
it happens its really bad).

So lets now use UNIX sockets, which ssh supports since version 5.7.
The end points are UNIX socket bound to the VMID - thus no port so
no race and also no limitation of available ports (we reserved 50 for
migration).

The endpoints get created in /run/qemu-server/VMID.migrate and as
KVM/QEMU in current versions is able to use UNIX socket just as well
as TCP we have not to change much on the interaction with QEMU.
QEMU is started with the migrate_incoming url at the local
destination endpoint and creates the socket file, we then create
a listening socket on the source side and connect over SSH to the
destination.
Now the migration can be started by issuing the migrate qmp command
with an updated uri.

This breaks live migration from new to old, but *not* from old to
new, so there is a upgrade path.
If a live migration from new to old must be made (for whatever
reason), use the unsecure_migration setting (man datacenter.conf)
to allow this, although that should only be done in trusted network.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-06-03 11:51:46 +02:00
Wolfgang Bumiller
8e59d952be use enter_systemd_scope instead of systemd-run
With systemd-run qemu's --daemonize forks often happen
before systemd finishes setting up the scopes, which means
the limits we apply often don't work.
We now use enter_systemd_scope() to create the scope before
running qemu directly without systemd-run.

Note that vm_start() runs in a forked-worker or qm cli
command, so entering the scope in such a process should not
affect the rest of the pve daemon.
2016-06-03 11:41:31 +02:00
Dominik Csapak
596a0a2056 do not ignore hotplug parse errors
if we got an option which was not valid, we still
wrote it to the config, and subsequently returned
it on every api call

instead, now we die instead of warn and do not accept
invalid options

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-05-31 12:15:32 +02:00
Alexandre Derumier
0567a4d572 move memory config generation to QemuServer::Memory::config
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-05-23 10:04:31 +02:00
Alexandre Derumier
6779f1ac3c move qemu_memory_hotplug && qemu_dimm_list to QemuServer::Memory
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-05-23 10:03:40 +02:00
Alexandre Derumier
3f669af25d move foreach_dimm && foreach_reverse_dimm to QemuServer::Memory
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-05-23 10:02:29 +02:00
Dietmar Maurer
faab53066c hostpci docs: move notes into verbose_description 2016-05-20 11:59:30 +02:00
Dietmar Maurer
fad17f04fc add full path reference to datacenter.conf file 2016-05-19 16:27:30 +02:00
Dietmar Maurer
522619458c improve documentation 2016-05-19 13:13:25 +02:00
Dominik Csapak
9f41a659a1 allow VLAN 1 tag in qemu-kvm vms
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-05-18 11:25:29 +02:00
Fabian Grünbichler
19333c9b82 add --description to systemd scope unit
otherwise, long kvm commands lead to systemd unit files with
very long lines, with confuses the systemd unit file parser.

apparently systemd has a length limit for unit file lines and
(line-)breaks the description string at that point. since
the rest of the description is probably not a valid key/value
pair, this leads to warnings. the default semantics of systemd-run
is to use the executed command as description unless a description
is specified explicitly.

note that this behaviour of systemd could allow an attacker
with access to the VM configuration to craft a kvm commandline
that starts or stops arbitrary systemd units.
2016-05-14 09:02:58 +02:00
Dietmar Maurer
30983c3bac remove unneeded keyAlias option 2016-05-11 13:04:59 +02:00
Dietmar Maurer
7f694a7113 fix #975, use new keyAlias feature.
Also remove unneccessary format_descriptions for boolean and enums.
2016-05-11 10:11:49 +02:00
Dominik Csapak
e7a5104daa add warning for iothread with invalid scsi controller
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-05-04 11:11:32 +02:00
Dietmar Maurer
8930da746f correctly set cpu vendor 2016-05-01 09:24:25 +02:00
Wolfgang Bumiller
3c525055dd restore: pass format to vma extract
This silences the "probing guessed raw" warnings of
'qmrestore'.
2016-04-29 09:02:34 +02:00
Alexandre Derumier
2b401189e3 vm_start : force systemctl stop if orphan scope exist
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-04-22 11:09:09 +02:00
Dominik Csapak
ffa42b860d fix #947: reenable disk/cdrom passthrough
previously, we did not check the file parameter of a disk,
allowing passthrough of a block device (by design)

with the change to the json parser for the disks, the format
became 'pve-volume-id' which is only valid for our volume ids
(and later we also allowed the value 'none')

this patch alternatively checks if the parameter is a path
or 'cdrom'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-04-21 11:54:55 +02:00
Fabian Grünbichler
c7a8aad601 docs: cleanup 2016-04-15 16:37:41 +02:00
Wolfgang Bumiller
2e953867ad Fix #848: deactivate old volume after clone before deletion
Otherwise some move operations will fail to delete the old
disk (eg. when moving from ceph to local storage).

Note that in order for the deactivation to succeed we need
to make sure qemu has closed its file descriptors, so we
need to wait for the job to disappear the same way we do in
$cancel_job().
Factored the waiting out into $finish_job().
2016-04-13 08:24:13 +02:00
Wolfgang Bumiller
ec3582b52a property string update: watchdog 2016-04-01 09:31:40 +02:00
Wolfgang Bumiller
1f4f447b58 property string update: hostpci*
This commit changes the listing of virtual functions from
multiple host= entries to one semicolon-separated host list.
2016-04-01 09:31:25 +02:00
Wolfgang Bumiller
cd9c34d186 property string update: net*
This requires the new 'group' schema mechanism.
2016-04-01 09:31:06 +02:00
Wolfgang Bumiller
ffc0d8c793 property string update: numa*
Additionally since the cpu and host node list isn't
restricted to a single range one can now provide multipel
ranges separated by semicolons. (eg. cpus=0-3;5;7)
2016-04-01 09:30:45 +02:00
Wolfgang Bumiller
822c8a0776 drive schema: allow 'none' again 2016-04-01 09:30:01 +02:00
Wolfgang Bumiller
bb9207e0e1 cputype: format_description to avoid huge enum in manpage 2016-04-01 09:27:35 +02:00
Wolfgang Bumiller
ff6ffe20c9 cleanup: naming consistency 2016-04-01 09:27:12 +02:00
Wolfgang Bumiller
93c0971cec fix a few property string descriptions 2016-04-01 09:26:51 +02:00
Fabian Grünbichler
20519efc76 use PVE::Storage::config(), not cfs_read_file() 2016-03-30 10:37:22 +02:00
Dietmar Maurer
8a61e0fd38 use asciidoc compatible markup
s/Note:/NOTE:/
2016-03-23 10:22:17 +01:00
Wolfgang Bumiller
ba8fc5d13e limit serial and model and document their real limits
The urlencoded format currently cannot check the real
decoded length, so we limit to an upper bound and document
the real limits. Ideally we'd introduce a decodedLength
schema parameter at some point...
2016-03-21 11:19:55 +01:00
Wolfgang Bumiller
988e2714ad clone: use the zeroinit filter for sparseinit storages 2016-03-21 09:59:49 +01:00
Wolfgang Bumiller
46630a5fd4 cfg: use the 'urlencoded' format for drive model and serial 2016-03-21 09:01:15 +01:00
Wolfgang Bumiller
918d09150e clanup: qemu_drive_options is only used inside the one function
and it doesn't contain 'bootindex'
2016-03-21 09:00:47 +01:00
Thomas Lamprecht
1917695c93 Fix some typos in JSON schema descriptions
/cirrur/cirrus/
/devive/device/
/Numa/NUMA/
and a few grammar fixes, rewrites of sentences

Also if already touching those lines lets break them up from one
liners to a column limit of ~80.
2016-03-16 16:46:08 +01:00
Fabian Grünbichler
e79706d47a Use has_lock to check for specific lock 2016-03-14 09:03:28 +01:00
Wolfgang Bumiller
4f4fbeb048 fix #909: pass rate to tap_plug()
When using OVS tap_plug() resets rate limiting so we need
to pass it along to reapply it.

The rate on its own can still be hot-plugged with the
regular tap_rate_limit() call.
2016-03-08 15:52:31 +01:00
Fabian Grünbichler
8793d4950e Refactor add_unused_volume
Drop add_unused_volume from PVE::QemuServer in favor of
(identical) implementation in PVE::AbstractConfig
2016-03-08 11:42:51 +01:00
Fabian Grünbichler
b2c9558da8 Rework snapshot code, has_feature
Drop snapshot_create, snapshot_delete and snapshot_rollback
in favour of PVE::AbstractConfig. Qemu-specific parts are
implemented in __snapshot_XX methods in PVE::QemuConfig.

has_feature is made an implementation of the abstract
has_feature, and thus moves to PVE::QemuConfig.

Note: a new hook method needed to be introduced to be called
before creating a volume snapshot, after creating a volume
snapshot, and after unfreezing the guestfs after creating a
volume snapshot. The base method in PVE::AbstractConfig is a
noop, the implemention in PVE::QemuConfig runs the necessary
Qemu monitor commands.
2016-03-08 11:42:37 +01:00
Fabian Grünbichler
ffda963f46 Refactor basic config-related methods
Drop load_config, write_config, lock_config[_xx],
check_lock, check_protection, is_template and config_file
in favour of implementions in PVE::AbstractConfig.

Implement guest_type, __config_max_unused_disks,
config_file_lock and cfs_config_path from
PVE::AbstractConfig in PVE::QemuConfig.
2016-03-08 11:41:59 +01:00
Fabian Grünbichler
74479ee9bb Make foreach_drive order deterministic
Previously, foreach_drive iterated over all configuration
keys (in a random order) and checked whether the current key
is a valid drive name. Instead, we now iterate over a list
of valid drive names (with deterministic order) and check
whether a drive with such a name exists in the
configuration.

Also rename the two involved methods from valid_drive_name
to is_valid_drive_name (for the check) and from disknames
to valid_drive_names (for the list of valid keys), for
consistency. These two were only used in the qemu-server
code base.
2016-03-04 06:25:48 +01:00
Fabian Grünbichler
521c52e09c Remove dead code
This sub is not used anywhere.
2016-03-01 09:31:09 +01:00
Fabian Grünbichler
ff9922861a Don't apply snapshot config in snapshot_commit
We hold a lock from snapshot_prepare until snapshot_commit,
so there is no need to copy back the snapshot config to the
actual config. This allows to drop a workaround for not
copying the 'machine' type config option.
2016-03-01 08:37:05 +01:00
Wolfgang Bumiller
69bcf246bd indentation cleanup 2016-02-27 10:20:19 +01:00
Wolfgang Bumiller
6ada5d61c2 only perform scsi inquiry on device nodes
We don't have any storage types other than LVM which react
to scsi inquiry, and we don't want to treat LVM as a scsi
device, so now we only query devices added as actual /dev
path. This was originally intended to be a pass-through
feature anyway, so this makes sense.
2016-02-27 10:20:01 +01:00
Fabian Grünbichler
b2ca930a79 Refactor has_feature
backup_only is currently not used as snapshot backups are
handled by qemu, but this makes the signatures identical
to LXC.pm's has_feature.
2016-02-26 10:34:21 +01:00
Fabian Grünbichler
afa5eae56a Make snapshot_save_vmstate proper sub 2016-02-26 10:33:43 +01:00
Thomas Lamprecht
09b1142906 kvm_user_version: update code to use our framework
Replace backticks with run_command and also do not use
`kvm -help` which produces a lot of unecessary output, lets use
`kvm -version` instead.
2016-02-26 07:54:35 +01:00
Thomas Lamprecht
74cc511fda fix undefined value when starting a q35 machine VM
As there the signleton function "kvm_user_version" may not have been
called and with the machine alias q35 the regex from the
qemu_machine_feature_enabled method does not match and thus we
need a valid kvm version here
2016-02-26 07:48:35 +01:00
Fabian Grünbichler
2d3caa008c Refactor snapshot_create to match LXC.pm 2016-02-25 09:23:02 +01:00
Dominik Csapak
88240a83fb change check for write-zeros
instead of hardcoding the storagetypes for writing zeros on a
backup restore, we use volume_has_feature with 'sparseinit'
for determining if we can omit writing zeros

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-24 17:18:50 +01:00
Alexandre Derumier
d1363934b8 qemu_machine_pxe : return $machine if no pxe
Currently migration is broken, because qemu_machine_pxe return nothing if no pxe rom exist.

That mean that we don't pass -machine flag to migration, and migration is broken between qemu 2.4->2.5

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-02-22 17:33:27 +01:00
Fabian Grünbichler
ec61e9383f Make snapshot_prepare and snapshot_commit proper subs 2016-02-22 16:19:16 +01:00
Dominik Csapak
77cde36b4e deactivate volumes if vm start command fails
also for current master
cleanup of patch from Dhaussy Alexandre from 02/15/2016

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-20 10:26:05 +01:00
Dietmar Maurer
b42d3cf9d4 rename $ost to $ostype 2016-02-18 12:54:47 +01:00
Alexandre Derumier
b7be4ba92f disable vnc server and add -nographic is no vga card is present
For passthrough, we need to be sure that card is primary,
so we need to disable vnc server

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-02-18 12:54:47 +01:00
Alexandre Derumier
bd92244c35 passthrough : reenable hyperv and add hv_vendor_id for windows
qemu 2.5 support a new hyper-v feature: hv_vendor_id
This allow nvidia drivers to install on windows with hyper-v feature on.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-02-18 12:54:47 +01:00
Dominik Csapak
381b8fae81 delete ram state files when restoring a backup
currently we leave orphaned vmstate files when we restore a
backup over a vm, which has snapshots with saved ram state.

this patch deletes those files on a restore.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-18 11:53:46 +01:00
Fabian Grünbichler
7efedbf397 Refactor snapshot code
Split vmstate saving into its own sub in preparation of
LXC/QemuServer codebase refactoring.
2016-02-15 13:26:28 +01:00
Wolfgang Link
4dcc780c2a If we freeze the fs with the Qemu-Guest-Agent test if QGA is running. 2016-02-15 12:50:14 +01:00
Fabian Grünbichler
8317c759bf Drop skiplock from write_config
Since write_config was always called with skiplock=1 except
once, it makes sense to drop this parameter like in
PVE::LXC::write_config . If needed in the future, the
caller can use check_lock before write_config anyway.
2016-02-12 12:16:57 +01:00
Fabian Grünbichler
63be43a947 Refactor update_config_nolock -> write_config
The method update_config wrapped update_config_nolock
using lock_config, but to prevent update races the whole
"read config", "do something", "write config" flow was
always protected by lock_config anyway, and update_config
was never called.

Thus, we can safely drop update_config and rename
update_config_nolock to write_config like in PVE::LXC .
2016-02-12 12:14:52 +01:00
Dominik Csapak
a6b9aee42a use better usb config parsing
since we want the usb3 option to be really boolean and not only
'usb3=yes', we have to change the usb json format a little

to not break existing configs for 'usbX: spice', we set the 'host'
option as non-optional and default_key and allow 'spice' as its
content (this also makes the option less ambiguous)

another side effect is that previously accepted multiple 'host='
entries are now forbidden

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-11 16:42:24 +01:00
Wolfgang Bumiller
c0f7406e93 remove a superfluous condition
This is only reached if the $line from which $virtdev
originates matches, and the part in $virtdev can never be
false then.
2016-02-10 17:46:54 +01:00
Wolfgang Bumiller
d9faf79016 restore: deal with new backup=0 property string 2016-02-10 17:45:56 +01:00
Dominik Csapak
da8b4189d8 add usb3 option for usb-devices
adding a flag for usb devices (usb3), if this is set to yes,
add a xhci controller and attach the specified devices to it

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-10 17:33:26 +01:00
Wolfgang Bumiller
15cc878469 pass $skiplock all the way through to destroy_vm
The API passes $skiplock to vm_destroy() which performed a
check conditionally depending on the $skiplock parameter and
then simply calls destroy_vm() inside lock_config() which
did yet another check_lock() without any way to avoid that.

Added the $skiplock parameter to destroy_vm() and removed
the conditional check in vm_destroy() as both happened after
locking the config.
2016-02-08 11:52:23 +01:00
Alexandre Derumier
f7b4356fe6 disk hotplug : allow hotplug of physical host /dev/ disks
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-02-04 18:09:38 +01:00
Wolfgang Bumiller
7d4e30f389 detect_zeroes is a boolean 2016-01-29 12:21:59 +01:00
Wolfgang Bumiller
47c28a687c Fix #878: disk-size format
disk-size is a format, not a type
2016-01-29 10:04:05 +01:00
Wolfgang Link
3457d090c6 Create firewall dir on VM restore 2016-01-28 11:02:55 +01:00
Wolfgang Bumiller
16a91d65f3 add hidden option to cpu type
This passes kvm=off to qemu's -cpu switch to disable KVM
identification via the cpuid instruction.
2016-01-26 16:57:13 +01:00
Wolfgang Link
5b61bff247 Use format raw if a disk is passthrough to VM.
To prevent error at VM starting, when we passthrough a harddrive from host to vm.
2016-01-25 17:32:21 +01:00
Wolfgang Bumiller
16d08ecfc3 use safe_string_ne for trunks
It's a list of numbers, not just one.
2016-01-18 11:00:28 +01:00
Alexandre Derumier
c30aea2b10 add support for network trunks
This add support for net trunks vlan filtering
for ovs and linux vlan-aware bridge

Can be mixed with current "tag" option

examples:
----------

allow only 802.1Q packets with vlanid 2,3,4 :

netx: .....,trunks=2,3,4

allow only 802.1Q packets with vlanid 2,3,4 and tag non-802.1Q packets to vlanid 5 :

netx: tag=5,trunks=2,3,4

tag non-802.1Q packets to vlanid 5

netx: tag=5
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-01-15 17:23:59 +01:00
Wolfgang Bumiller
0541eeb88b use property strings for drive options 2016-01-14 16:40:37 +01:00
Wolfgang Bumiller
bd27e851d3 use property string for smbios1 2016-01-14 16:36:23 +01:00
Wolfgang Bumiller
ff0394e04c Closes #787: add Haswell-noTSX and Broadwell-noTSX cpu types 2016-01-13 16:41:28 +01:00
Wolfgang Bumiller
277ca170b4 io throttle: pass pool parameters (*_max)
These have been passed but haven't been used.
2016-01-13 06:17:01 +01:00
Alexandre Derumier
230a438200 ovmf : don't pass x-vga to vfio-pci
x-vga vfio-pci flag is to enable seabios quirks only.

This patch keep using x-vga=on from proxmox config, to disable hyperv,kvm=off,vga=none by default
but don't pass x-vga to vfio-pci when ovmf is enabled.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-01-10 15:10:26 +01:00
Alexandre Derumier
2315b39c8a disable hyper-v enlightment when xvga is enabled
Geforce drivers (> 344.11) crash with code43 error if they detect hyper-v enlighment with pci passtthrough
http://awilliam.github.io/presentations/KVM-Forum-2014/#/5/3

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-01-04 06:26:02 +01:00
Wolfgang Bumiller
6e47c3b4b7 add detect_zeroes option
On some storages BLKZEROOUT commands do not work properly
and return without error while having no effect whatsoever.
This can produce various filesystem errors and thus needs
to be made optional.

A drive can now have 'detect_zeroes=off' to disable this
behavior. By default the behavior is the same as before:
always-on (and set to 'unmap' if discard is enabled).
2015-12-18 09:19:18 +01:00
Wolfgang Bumiller
77019edfe0 fix bug #841: replace get_used_paths with is_volume_in_use
get_used_paths returned a hash of used paths for all the
volumes in a VM's config, which is not enough to figure out
whether there are snapshots, as snapshots often have
different paths.  Eg. on ZFS it is not enough to check for
/dev/zvol/tank/vm-123-disk-1 because the snapshot's path is
/dev/zvol/tank/vm-123-disk-1@snap1 and thus we allowed
deleting the drive. Then when trying to delete the snapshot
later you get:
  zfs error: cannot open 'tank/vm-751-disk-1': dataset does not exist
and it refuses to delete the snapshot.

Since its only use was to check whether or not a drive is
still in use it is now renamed to is_volume_in_use and
beside checking paths now also checks volume-ids as those
should stay the same.
2015-12-10 12:13:12 +01:00
Dietmar Maurer
2bd70893fb always copy OVMF_VARS-pure-efi.fd file
To avoid the impression that we can store BIOS settings. They also
gets lost when we migrate the VM.
2015-12-10 11:11:02 +01:00
Dietmar Maurer
3edb45e749 introcude new 'bios' option (replace ovmf option) 2015-12-10 10:48:04 +01:00
Alexandre Derumier
a783c78e0d add ovmf uefi roms support V2
changelog:

use OVMF-pure-efi.fd instead OVMF_CODE-pure-efi.fd to have virtio drivers support

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-12-09 17:45:15 +01:00
Wolfgang Bumiller
1b2761c07c fix bug #828: activate disks before hotplugging them 2015-11-27 16:57:19 +01:00
Wolfgang Link
6738ab9c59 restore firewall config from backup 2015-11-26 11:50:00 +01:00
Alexandre Derumier
1f720e28c7 reenable steal time
we have fixed it in kernel last month
https://www.mail-archive.com/pve-devel@pve.proxmox.com/msg14072.html

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-26 09:18:08 +01:00
Dietmar Maurer
ea002a8f6d fix bug #783: set KillMode=none, so that systemd don't kill them at shutdown 2015-11-24 16:52:22 +01:00
Emmanuel Kasper
d44712fc43 Don't treat serial devices as a local resource if they point to a socket.
Close: https://bugzilla.proxmox.com/show_bug.cgi?id=470
2015-11-13 07:01:12 +01:00
Dietmar Maurer
6bb91c1797 qemu_img_convert: activate source volume
For example, this is required if we copy from lvmthin snapshots.
2015-11-12 11:16:50 +01:00
Wolfgang Link
c4c844ef8e improve complete_storage, only show storages which have the capability to run qemu images. 2015-11-10 07:46:27 +01:00
Alexandre Derumier
208ba94e96 add pve-bridge-hotplug script
use it for nic hotplug, because pve-bridge script will
not work after a live migration, because of the PVE_MIGRATED_FROM env var.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-06 16:22:54 +01:00
Alexandre Derumier
8718099ce4 nic hotplug : use pxe roms for older machinetype
we want to avoid mix some nics with pxe rom and other with efi rom.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-06 10:51:59 +01:00
Alexandre Derumier
249c4a6c75 add qemu_use_old_bios_files sub
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-06 10:51:48 +01:00
Alexandre Derumier
42dbd2ee30 add qemu_machine_pxe
return machinename with .pxe suffix if a nic with pxe romfile exist

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-06 10:51:14 +01:00
Alexandre Derumier
7bac824e19 use qom-get to check if pxe file are used V2
fix qemu 2.4 pxe -> qemu 2.4 efi

Changelog : forget to add a check on qom-get result

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-11-06 07:55:07 +01:00
Wolfgang Bumiller
407e0b8bef migration: improve ipv6 case
Qemu parses hostnames in brackets correctly but sets an ipv6
flag for them as if they were ipv6 addresses, only insert
brackets for ipv6 addresses.
2015-11-06 07:53:03 +01:00
Dietmar Maurer
67812f9c97 simplify code: consistently use old bios files for older machine types 2015-10-29 07:37:00 +01:00
Dietmar Maurer
ba9e10002f use old netdevice bios files for older machine types 2015-10-28 09:07:03 +01:00
Alexandre Derumier
289e0b8564 migrate : add nocheck for resume
Users have reported resume bug when HA is used.

They seem to have a little race (bench show >0s < 1s) between the vm conf file move on source node and replication to,
and resume on target node.

I don't known why this is only with HA, maybe this occur will standard migration too.

Anyway, we don't need to read the vm config file to resume the vm on target host,
as we are sure that the vm is migrated, and config file move action is correct in the cluster.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-10-15 12:41:13 +02:00
Wolfgang Bumiller
0f2812c25a support serial numbers and models for disks
Note that the model is only supported for IDE harddisks via
the -device option, whereas the serial is part of the -drive
option.

Closes #153
2015-09-30 10:55:10 +02:00
Alexandre Derumier
ab7540f7e4 disable kvm_steal_time
It's currently buggy with live migration

https://bugs.launchpad.net/qemu/+bug/1494350
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-09-29 07:14:02 +02:00
Alexandre Derumier
b62532e4e8 migration: disable compress
it's already disable by default,
but we want to be sure if it's change in later release

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-09-25 17:58:44 +02:00
Alexandre Derumier
0b0a47e8ec enable xbzrle
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-09-25 17:58:40 +02:00
Dietmar Maurer
806873a198 fix kvm version parser for CVE stable releases, bump version to 4.0-25 2015-09-23 11:48:41 +02:00
Alexandre Derumier
6ea8cd3b52 pci passthough : make vfio default
and remove old legacy code.
(deprecated and disabled by default since kernel 4.2)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-09-21 06:31:33 +02:00
Wolfgang Link
6965d5d1f8 fix error message: allocate to much v-CPUs. 2015-09-14 09:42:04 +02:00
Wolfgang Link
5f96f4df75 add possibility to restore backup on rbd in krbd mode 2015-09-09 07:47:42 +02:00
Wolfgang Link
116da78402 add krbd support to online snapshot 2015-09-09 07:22:20 +02:00
Dietmar Maurer
335af808a4 improve bash completion 2015-09-07 08:13:07 +02:00
Dietmar Maurer
65e866e5da implement a few bash completion helpers 2015-09-06 16:01:59 +02:00
Alen Grizonic
cb0e4540f7 VM protection mode added
used to prevent an unintended virtual machine remove operation

v3 changes:

- changed man page message
- removed protection parameter (where not needed)
2015-09-06 11:31:05 +02:00
Wolfgang Link
1dbd6d30e0 fix move_disk on RBD
activating the disk when use RBD is necessary to have the given path.
2015-09-06 11:05:51 +02:00
Dietmar Maurer
d853f40aef fix: start kvm with os type other
this check is necessary, because we do not set ostype in qemu config when type is other

Seem that x2apic is now enabled by default when kvm is used

since this commit
http://git.qemu.org/?p=qemu.git;a=commit;h=ef02ef5f4536dba090b12360a6c862ef0e57e3bc

So we just need to disable it for solaris
2015-08-28 11:10:44 +02:00
Wolfgang Link
40b977f328 fix bug #688: if vm is not owner of this disk remove from config 2015-08-20 12:28:50 +02:00
Wolfgang Bumiller
cee01bcbd7 merge delete_drive into try_deallocate_drive
It used to be private and is only used once.
2015-08-13 12:34:12 +02:00
Wolfgang Bumiller
3dc38fbb74 pending-delete: remember force-deletes
The -force flag didn't have any effect since the pending
changes didn't carry over the the flag.
Now forced deletes have an exclamation mark prepended to the
option name.
2015-08-13 11:08:45 +02:00
Dietmar Maurer
b0ec896e43 correctly handle empty description in pending section
So that we can delete descriptions with

 qm set <vmid> --descr ''
2015-08-11 11:24:41 +02:00
Alexandre Derumier
525814b230 add memory_unplug support V2
qemu 2.4 feature

changelog: rebase on last git

Note that currently linux guest don't support unplug of dimm when it'sused by kernel memory.
They are some tunning to do with memory zone movable.
http://events.linuxfoundation.org/sites/events/files/lcjp13_chen.pdf

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-07-29 10:16:28 +02:00
Thomas Lamprecht
38f7f26c44 fixed bug 662, wrong subroutine for parsing startup order
Changed from old, now missing, subroutine parse_startup() to new
pve_parse_startup_order() in qemu-server and pve-manager

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2015-07-22 12:44:30 +02:00
Alexandre Derumier
f1f7ea886a cpuflags : don't enforce with tcg mode
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-07-22 12:40:47 +02:00
Alexandre Derumier
dac7c6190c cpuflags : remove enforce for cpumodel=host
Currently enforce with cpumodel=host on amd cpus don't work,
because amd cpus have unsupported flags in qemu.

This is a protection, and this is good.

but cpumodel host should be never use by users for production (only for testing).
For production and stability, users need to choose a true cpu model which filter
the supported cpuflags by qemu.

So I think we can remove the enforce for host model as for testing it's ok.

warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 0]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 1]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 2]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 3]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 4]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 5]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 6]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 7]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 8]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 9]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 12]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 13]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 14]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 15]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 16]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 17]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 23]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 24]
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-07-22 12:40:20 +02:00
Alexandre Derumier
0dc48c3d5b cpuflags : remove -rdtscp for Opteron cpu models
rdtscp is not supported by qemu and with enforce it's not starting
warning: host doesn't support requested feature: CPUID.80000001H:EDX.rdtscp [bit 27]

from to qemu wiki
http://wiki.qemu.org/Features/CPUModels#Disabling_features_that_were_always_disabled_on_KVM
"Fact: currently libvirt runs CPU models having rdtscp without the "enforce" flag, and rdtscp is silently disabled
Consequence: libvirt SHOULD use something like "-cpu Opteron_G5,-rdtscp",
especially when it starts using (or emulating) enforce mode
This will require a solution on libvirt side. QEMU will just provide the mechanisms to report CPU model information
and check what the host and QEMU supports, but the decision to disable rdtscp to be able
to run Opteron_G[2345] needs to be taken by libvirt."

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-07-22 12:38:47 +02:00
Alexandre Derumier
22967505c4 qemu-server : drive-mirror : allow to interrupts at the scanning bitmap phase
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-07-01 06:39:50 +02:00
Alexandre Derumier
604ea64464 qemuserver : vm_status : add extended stats (disks, nics, memory) V3
Add extended stats results for each nics,disks and memory on full stats mode only.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-06-16 13:23:24 +02:00
Dietmar Maurer
85bdc6afc0 remove outdated host_device format
Newer qemu does not need it.

https://lists.nongnu.org/archive/html/qemu-devel/2011-06/msg02790.html
2015-06-10 10:29:30 +02:00
Dietmar Maurer
d81f0f09fc parse_drive: do not overwrite configured format
Instead, we use qemu_img_format() to query the format when we need it.
We also pass the format to qemu in print_drive_full to avoid qemu warnings.
2015-06-10 10:22:42 +02:00
Wolfgang Bumiller
b2ee900e3c fix aio O_DIRECT check for cdrom drives
Only non-cdrom drives default to cache=none, so the check
for whether to default to aio=native needs to take the same
condition into account.
I combined them close together to make their relation more
visible.
2015-06-02 16:11:01 +02:00
Dietmar Maurer
c6f773b818 cpulimit: use number instead of integer 2015-06-02 16:03:25 +02:00
Alexandre Derumier
58be00f10a implement cpuunit with cgroups
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-06-02 15:56:52 +02:00
Dietmar Maurer
3a515a8805 code cleanup 2015-05-29 08:23:13 +02:00
Alexandre Derumier
ba02e591f0 remove old openvz fairscheduler code
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-05-29 08:11:07 +02:00
Alexandre Derumier
c8effec354 implement hotplug for cpuunits
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-05-29 08:11:04 +02:00
Alexandre Derumier
f08e17c7be implement cgroups through systemd-run
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-05-29 08:11:02 +02:00
Wolfgang Bumiller
fd1f36ac6f localhost instead of 127.0.0.1 makes ipv6 life easier 2015-05-27 08:25:38 +02:00
Wolfgang Bumiller
2fbd27eabc migration: put the source address in brackets
Always adding brackets around the address works. They're required for
ipv6 and qemu also accepts them for ipv4 and hostnames.
2015-05-21 17:30:30 +02:00
Wolfgang Bumiller
af0eba7e35 pass port family to next_*_port() calls 2015-05-12 12:28:56 +02:00
Alexandre Derumier
38e0c3b8ae qmp drive-mirror : set big timeout
drive-mirror is doing lseek on source image before starting, and this can take a lot of time for big nfs volume
during this time, qmp socket is hanging
http://lists.nongnu.org/archive/html/qemu-devel/2015-05/msg01838.html
so we need to setup a big timeout

qemu devs are currently working to fix this

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-05-12 08:18:42 +02:00
Alexandre Derumier
ad123d97f9 qemu-mirror : block job complete : use ready flag
Since qemu 2.2, a new "ready" flag has been added to blockjob
http://git.qemu.org/?p=qemu.git;a=commit;h=ef6dbf1e46ebd1d41ab669df5bba0bbdec6bd374
to known if we can complete it.

we can't use len==offset to known if all block are mirrored, because behaviour will change soon in qemu 2.3

http://git.qemu.org/?p=qemu.git;a=commit;h=b21c76529d55bf7bb02ac736b312f5f8bf033ea2
"block/mirror: Improve progress report

Instead of taking the total length of the block device as the block
job's length, use the number of dirty sectors. The progress is now the
number of sectors mirrored to the target block device. Note that this
may result in the job's length increasing during operation, which is
however in fact desirable.
"

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-05-12 08:18:30 +02:00
Wolfgang Link
e5eaa02815 remove running from Storage and check it in QemuServer
It is better to check if a VM is running in QemuServer then in Storage.
for the Storage there is no difference if it is running or not.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-05-06 11:47:11 +02:00
Dietmar Maurer
43574f738d use new standard option 'pve-startup-order' 2015-04-22 10:02:33 +02:00
Alexandre Derumier
6e11f14318 implement virtio-scsi multiqueues
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-04-04 10:03:38 +02:00
Alexandre Derumier
3f548708d3 use aio=native only with O_DIRECT (cache=none|directsync)
Currently qemu auto fallback to aio=threads if cache=none|directsync
It's better to handle that correctly

see:
https://bugzilla.redhat.com/show_bug.cgi?id=1086704

http://wiki.qemu.org/ChangeLog/2.3
Future incompatible changes:
Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-04-04 09:57:53 +02:00
Alexandre Derumier
8bcf3068eb forbid hot-unplug of virtioscsi + iothread drive
qemu (<=2.3) currently segfault on drive_del

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-04-01 06:16:16 +02:00
Alexandre Derumier
fc8b40fd5f add virtio-scsi iothread support
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-04-01 06:16:16 +02:00
Dietmar Maurer
a1b7d57901 delete trailing white spaces 2015-03-27 06:16:24 +01:00
Dietmar Maurer
a1511b3c42 cleanup: do not use regex 2015-03-27 06:15:01 +01:00
Alexandre Derumier
ee034f5c9c new scsihw_infos sub : code factorization
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-27 06:05:34 +01:00
Alexandre Derumier
2733141ce3 implement virtio-scsi-single hotplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-27 06:05:31 +01:00
Alexandre Derumier
6731a4cfa9 implement virtio-scsi-single
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-27 06:05:27 +01:00
Alexandre Derumier
22de899a80 implement virtio iothread hotplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-20 06:18:19 +01:00
Alexandre Derumier
51f492cd6d add virtio iothread option
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-20 06:18:15 +01:00
Alexandre Derumier
8ce30ddea0 unplug scsi controller if no more disk exist
we need to remove scsi controller, because live migration will crash,

as on migration target node, we'll start the vm without controller if no disk exist

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-19 06:55:03 +01:00
Alexandre Derumier
8bb5e28d50 add IvyBridge cpu model (qemu >= 2.3)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-19 06:50:27 +01:00
Alexandre Derumier
fc79e81353 add pci bridges by default for qemu > 2.3
pci bridge are not hot-unplugglable,
which can give us live migration problem,
if we hot-unplug a device on pcibridge 1 or 2, we don't create the pci bridge on target guest

and pci bridge hotplug is not working on all os (windows for example).

So it's better to always add them at startup.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-18 06:26:55 +01:00
Alexandre Derumier
6a33d44a91 enable cpu enforce
It wasn't working with 2.6.32,
now that 3.10 kernel is the default, we can enable it.

It's help to be sure that all cpu flags are supported by host && qemu,
to be sure that nothing break

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:58:14 +01:00
Alexandre Derumier
0da5a08cb4 enable kvm_pv_eoi cpuflag
Paravirtualized End-of-Interrupt Indication (PV-EOI)
Hosts and guests require two VM exits (context switches from a VM to a Hypervisor) for each interrupt:
one to inject the interrupt, and another to signal the end of the interrupt.

With pv_eoi , they can negotiate a paravirtualized end-of-interrupt feature and only require one switch per interrupt.
Number of exits is reduced by half for interrupt-intensive workloads,
such as incoming network traffic with a virtio network device.
This leads to significant reduction in host CPU utilization for such workloads.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:57:47 +01:00
Alexandre Derumier
117a041466 add kvm_pv_unhalt cpu flag
require pvticketlocks from kernel 3.12 (backported in redhat 3.10 kernel)

see:
http://lwn.net/Articles/493402/

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:57:32 +01:00
Alexandre Derumier
cfac0be43d enable hv_time hyperv-v enlightment
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:56:59 +01:00
Alexandre Derumier
8a054ffd81 enable hv_vapic hyperv enlightment
works fine now with rhel 7.1 kernel
https://bugzilla.redhat.com/show_bug.cgi?id=1091818

(It's wasn't working on newer intel xeon)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:56:51 +01:00
Alexandre Derumier
8f3f959d46 hv_spinlocks : use 0x1fff instead 0xffff
redhat use 0x1fff (8191)  vs 0xffff (65535)
This is the number of retries of spinlocks

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:56:36 +01:00
Alexandre Derumier
23f73120b7 add qemu_machine_feature_enabled sub
This sub compare current machine type to a specific version,
and return 1 if machinetype is bigger or equal to version

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-17 08:55:49 +01:00
Alexandre Derumier
eb06531726 always setup balloon polling interval.
we always need to enable pooling interval, because it doesn't seem to be setup with -machine option

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-09 08:30:32 +01:00
Alexandre Derumier
d7c8364b22 vmstatus : use vcpus if defined
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-09 08:22:05 +01:00
Dietmar Maurer
38babf816c Revert "balloon: use qom-get for guest balloon statistics V5"
This reverts commit 0ea19b9cf7.
2015-03-09 08:14:37 +01:00
Alexandre Derumier
0ea19b9cf7 balloon: use qom-get for guest balloon statistics V5
changelog:

we use MB, not bytes

$d->{balloon} = int($info->{stats}->{"stat-total-memory"}/1024/1024);
$d->{freemem} = int($info->{stats}->{"stat-free-memory"}/1024/1024);

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-06 10:19:28 +01:00
Alexandre Derumier
7a69fc3cd1 drive_add : escape \ character
storage.cfg
-----------
rbd mystorage
    monhost 10.5.0.11:6789; 10.5.0.12:6789; 10.5.0.13:6789

drive_add auto "file=rbd:poolceph1/vm-101-disk-8:mon_host=10.5.0.11\\:6789; 10.5.0.12\\:6789; 10.5.0.13\\:6789:id=admin:auth_supported=cephx:keyring=/etc/pve/priv/ceph/cephzimbra.keyring,if=none,id=drive-virtio2,aio=native,cache=none,detect-zeroes=on"

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-06 10:19:09 +01:00
Alexandre Derumier
4cc1efa615 bugfix : allow manual balloning if shares = 0
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-03-03 06:28:37 +01:00
Dietmar Maurer
7498eb64a3 correctly set and remove lock 2015-02-15 09:04:30 +01:00
Dietmar Maurer
34758d6608 commit pending values when changing CDROM 2015-02-14 09:20:41 +01:00
Alexandre Derumier
8b6c557980 bugfix : add missing queues nic option in print_net
Currently the nic queues option is removed when we try to update config

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-02-13 06:59:50 +01:00
Wolfgang Link
ba4eea15e6 QemuServer: check snapshot befor rollback
this will check, if it is possibel to rollback a snapshot befor VM will shutdown and get locked.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-02-12 10:17:53 +01:00
Dietmar Maurer
6e62a21f17 vm_devices_list: make sure $device->{'qdev_id'} is set 2015-02-12 08:31:22 +01:00
Alexandre Derumier
200644a7f9 vm_devices_list : list devices behind pci bridge
This fix hotplug for devices behind bridges, like nic6->24 for example

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-02-12 08:31:22 +01:00
Dietmar Maurer
4de1bb2523 fix CDROM hotplug 2015-02-12 08:00:14 +01:00
Dietmar Maurer
996635e58d cleanup error messages 2015-02-12 07:11:17 +01:00
Stefan Priebe
f8fa2ed734 QemuServer: fix wrong binding of pci root ports, bridges or switches to vfio
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2015-02-11 06:31:41 +01:00
Wolfgang Link
8ead5ec7dc bug 597: hotplug fix
wrap params in dopple quotes, so spaces will accept.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2015-02-10 13:01:24 +01:00
Alexandre Derumier
51a6f637d2 memory hotplug option is not hotpluggable
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-02-10 06:32:08 +01:00
Alexandre Derumier
e059fb4ded add foreach_dimm sub
and use it in memory hotplug and config_to_cmd

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-02-09 07:04:16 +01:00
Alexandre Derumier
4d3f29edd4 memory hotplug patch v10
This patch allow to hotplug memory dimm modules
though a new option : dimm_memory

The dimm modules are generated from a map

     dimmid       size  dimm_memory
     dimm0        512        512     100.00 0
     dimm1        512       1024      50.00 1
     dimm2        512       1536      33.33 2
     dimm3        512       2048      25.00 3
     dimm4        512       2560      20.00 0
     dimm5        512       3072      16.67 1
     dimm6        512       3584      14.29 2
     dimm7        512       4096      12.50 3
     dimm8        512       4608      11.11 0
     dimm9        512       5120      10.00 1
    dimm10        512       5632       9.09 2
    dimm11        512       6144       8.33 3
    dimm12        512       6656       7.69 0
    dimm13        512       7168       7.14 1
    dimm14        512       7680       6.67 2
    dimm15        512       8192       6.25 3
    dimm16        512       8704       5.88 0
    dimm17        512       9216       5.56 1
    dimm18        512       9728       5.26 2
    dimm19        512      10240       5.00 3
    dimm20        512      10752       4.76 0
    ...

   dimm241      65536    3260416       2.01 1
   dimm242      65536    3325952       1.97 2
   dimm243      65536    3391488       1.93 3
   dimm244      65536    3457024       1.90 0
   dimm245      65536    3522560       1.86 1
   dimm246      65536    3588096       1.83 2
   dimm247      65536    3653632       1.79 3
   dimm248      65536    3719168       1.76 0
   dimm249      65536    3784704       1.73 1
   dimm250      65536    3850240       1.70 2
   dimm251      65536    3915776       1.67 3
   dimm252      65536    3981312       1.65 0
   dimm253      65536    4046848       1.62 1
   dimm254      65536    4112384       1.59 2
   dimm255      65536    4177920       1.57 3

max dimm_memory size is 4TB, which is the current qemu limit

If the dimm_memory value is not aligned on memory module, we align the dimm_memory on the next module.

vmid.conf
---------
memory: 1024
numa:1
hotplug: memmory

when hotplug memory option is enabled, the minimum memory value must be 1GB, and also numa need to be enabled.

we assign the first 1GB as static memory, splitted on each numa nodes.
The remaining memory is assigned on hotpluggable dimm devices.

The static memory need to be also 128MB aligned, to have other dimm devices aligned too.

This 128MB alignment is a linux limitation, windows can align on 2MB size.

Numa need to be aligned, as linux guest don't boot on some setup with multi sockets,
and windows need numa to be able to hotplug memory

hotplug
----
qm set <vmid> -memory X    (where X is bigger than current value)

unplug (not yet implemented in qemu)
------
qm set <vmid> -memory X  (where X is lower than current value)

linux guest
-----------
-acpi hotplug module should be loaded in guest
-need a recent kernel. (tested with 3.10)

can be enable automaticaly, adding:

/lib/udev/rules.d/80-hotplug-cpu-mem.rules
SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", \
 ATTR{online}="1"

SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", \
 ATTR{state}="online"

windows guest
-------------

tested with:

- windows 2012 standard
- windows 2008 enterprise/datacenter

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-28 07:06:37 +01:00
Dietmar Maurer
45827685a7 use PVE::Tools::split_list 2015-01-27 11:05:36 +01:00
Dietmar Maurer
b3c2bdd1f1 hotplug config: allow to enable specific features 2015-01-27 07:16:22 +01:00
Alexandre Derumier
8edc9c08aa enable vcpus hotplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-22 11:01:21 +01:00
Alexandre Derumier
de9d1e5574 add vcpus option
vcpus = current allocate vpus to virtual machine

maxcpus is now compute from $sockets*cores
vcpus = maxcpus if not defined

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-22 11:01:15 +01:00
Dietmar Maurer
70b048219e apply pending changes at vm_stop 2015-01-21 10:42:43 +01:00
Dietmar Maurer
7196b757e7 enable hotplug by default 2015-01-21 08:57:44 +01:00
Dietmar Maurer
25088687fe Add link_down flag to network config
Original patch by Wolfgang, adopted for new hotplug implementation.

I do not verify link status, because that patch was rejected upstream.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-20 11:51:19 +01:00
Wolfgang Link
fbda796564 Change check for better understanding!
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2015-01-20 07:57:42 +01:00
Kamil Trzcinski
55034103fe Support additional e1000 variants for VM machines
It is required for OS X on qemu

Signed-off-by: Kamil Trzcinski <ayufan@ayufan.eu>
2015-01-20 07:15:05 +01:00
Dietmar Maurer
8fe689e7fd fix test for ballon hotplug 2015-01-12 15:04:31 +01:00
Stefan Priebe
cf71f776cb set boot strict=on to prevent booting from not listed boot devices
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2015-01-12 15:00:58 +01:00
Stefan Priebe
5e2068d285 do not set romfile= if network is not in boot order
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2015-01-12 15:00:55 +01:00
Dietmar Maurer
81d95ae1a8 code cleanup 2015-01-07 10:20:35 +01:00
Alexandre Derumier
9c2f70692e fix balloon pending update
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-07 08:39:08 +01:00
Alexandre Derumier
6f9a607037 don't try to hotplug|unplug ide && sata drive
We can't hotplug theses devices,
so we can avoid to throw always an error when adding them

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-07 08:36:02 +01:00
Alexandre Derumier
19120f9967 pending : add disk hot-unplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-07 06:54:57 +01:00
Dietmar Maurer
38c590d9f6 vmconfig_update_net: do not call vm_deviceplug() if hotplug == 0
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:39 +01:00
Dietmar Maurer
a05cff86e7 vmconfig_hotplug_pending : add update_disk
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:30 +01:00
Dietmar Maurer
fee4667503 vm_deviceplug: always raise exception on error
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:17 +01:00
Dietmar Maurer
63c2da2f1a vm_deviceunplug: raise expection if something fail
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:11 +01:00
Dietmar Maurer
3eec576714 vmconfig_hotplug_pending : add update_net
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:43:11 +01:00
Dietmar Maurer
e56beedaba vmconfig_hotplug_pending: correctly skip values
Do not use $skip variable (simply raise an exception)

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:43:05 +01:00
Dietmar Maurer
281fedb364 rename qemu_bridgeadd to qemu_add_pci_bridge
To make it obvious that we add a PCI device, and not a network bridge.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:43:01 +01:00
Dietmar Maurer
3a11fadb41 vmconfig_hotplug_pending: improve hotplug error handling
Simplify code, and allow to partially apply pending changes using
a new $selection parameter.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:48 +01:00
Dietmar Maurer
8e90138a8a code cleanup, delete trailing white space
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:44 +01:00
Dietmar Maurer
c750e90abd vmconfig_cleanup_pending: new method to clenup setting in [PENDING]
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:39 +01:00
Dietmar Maurer
3d7389fe15 vmconfig_hotplug_pending: implement tablet hotplug
Remove special case: now, we only hotplug if 'hotplug' is enabled.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:35 +01:00
Dietmar Maurer
c427973b46 implement trivial hotplug
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:27 +01:00
Dietmar Maurer
055d554dfa vm_start: apply pending changes
I move related helper methods into PVE::QemuServer.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:17 +01:00
Dietmar Maurer
ef824322a0 write_vm_config : write pending change
example:

$conf->{pending}->{virtio1}
$conf->{pending}->{delete} = "net0,net1"

[PENDING]
virtio1: ...
delete: net0,net1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:00 +01:00
Dietmar Maurer
e297c4903a parse_vm_config: only allow 'delete' inside [PENDING]
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:41:46 +01:00
Dietmar Maurer
0d732d1615 parse_vm_config: correctly handle $descr
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:41:36 +01:00
Alexandre Derumier
eab09f4e11 parse_vm_config : parse pending changes
example:

[PENDING]
virtio1:...
delete:net0,net1

$conf->{pending}->{virtio1}
$conf->{pending}->{del}->{net0}
$conf->{pending}->{del}->{net1}

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:41:24 +01:00
Stefan Priebe
6fab033c3c this commit:
commit 1c0c1c17b0
Author: Wolfgang Link <wolfgang@linksystems.org>
Date:   Wed Nov 26 11:11:40 2014 +0100

    shutdown by Qemu Guest Agent if the agent flag in the config is set

    Important: "guest-shutdown" returns only by error a message.

    Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>

breaks live migration as it always tries to load the vm config - even in case of $nocheck. Also it double loads the config ($conf && $config)
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-12-22 17:19:39 +01:00
Dietmar Maurer
67fb9de608 white space cleanups 2014-12-04 13:07:59 +01:00
Alexandre Derumier
2ed5d5724c add custom numa topology support
numaX: cpus=<id[-id],memory=<mb>[[,hostnodes=<id[-id]>][,policy=<preferred|bind|interleave>]]

example:
-------
sockets:4
cores:2
memory:4096
numa: 1
numa0: cpus=0-1,memory=1024,hostnodes=0-1,policy=interleave
numa1: cpus=2-3,memory=3072,hostnodes=2,policy=bind

qemu command line
-----------------
-object memory-backend-ram,size=1024M,policy=interleave,host-nodes=0-1,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0

-object memory-backend-ram,size=3072M,policy=bind,host-nodes=2,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-04 13:02:47 +01:00
Alexandre Derumier
8a010eaeb1 add numa options v3
This enable numa support inside the guest, and share the memory and cores across the sockets numa nodes.

numa: 0|1

example:
-------
sockets:2
cores:2
memory:4096
numa: 1

qemu command line
-----------------
-object memory-backend-ram,size=2048,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0
-object memory-backend-ram,size=2048,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-04 13:01:47 +01:00
Wolfgang Link
af9110ddd7 Fix in PVE::QemuServer::snapshot_create
remove the freezefs flag.
If Qemu Guest Agent flag is set in config the vm filesystem will always be frozen,
unless we save RAM.

also remove param freezefs in PVE::API2 snapshot,
because there is no use for it.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-12-04 12:30:35 +01:00
Dietmar Maurer
108864e591 snapshot_create: fix bug from prev. commit, consider $freezefs parameter 2014-12-02 13:42:51 +01:00
Wolfgang Link
65994ad73c snapshot_create: use guest-fsfreeze-freeze if possible
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-12-02 13:11:42 +01:00
Dietmar Maurer
6f70864360 drive-mirror: avoid division by zero bug 2014-12-01 09:50:12 +01:00
Dietmar Maurer
c8125172c7 qmpclient: improve error handling 2014-12-01 09:50:12 +01:00
Dietmar Maurer
2ea5450311 simplify code by using vm_qmp_command() directly 2014-12-01 09:50:12 +01:00
Dietmar Maurer
7a6c215042 qmpclient: code cleanup, execute qga and qmp in parallel 2014-12-01 09:50:12 +01:00
Wolfgang Link
1c0c1c17b0 shutdown by Qemu Guest Agent if the agent flag in the config is set
Important: "guest-shutdown" returns only by error a message.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-12-01 09:50:12 +01:00
Wolfgang Link
c5a07de5af qmpclient: now if the QMP command starts with guest-+ , it will bind dynamicly to the VMID.qga socket
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-12-01 09:50:12 +01:00
Alexandre Derumier
693d12a2c0 add vm_qga_command
and reuse vm_qmp_command && qmp_socket with $qga param

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-01 09:50:11 +01:00