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
Dietmar Maurer
f34ebd5259
code cleanups
2014-12-01 09:50:11 +01:00
Alexandre Derumier
2c9e8036f5
savevm-end : wait that savevm is finished
...
savevm-end is async, we need to wait that savevm is finished, before continue.
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-12-01 09:50:11 +01:00
Dietmar Maurer
1b0b51ed94
serial: allow to pass arbitrary device names
2014-12-01 09:50:11 +01:00
Wolfgang Link
7626772856
Add check if host has enough real CPUs for starting VM
...
To prevent a Qemu CPU emualtion!
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
2014-11-17 11:24:15 +01:00
Dietmar Maurer
883839209f
qemu_drive_mirror: cleanup, avoid code duplication
2014-11-10 08:18:39 +01:00
Dietmar Maurer
08ac653fcf
qemu_drive_mirror: raise exception if we cannot parse $dst_volid
2014-11-10 07:55:09 +01:00
Dietmar Maurer
b467f79a50
delete trailing whitespace
2014-11-10 06:31:08 +01:00
Alexandre Derumier
21ccdb506a
block-job-complete : retry if block job cannot be complete
...
Even if we check the busy flag, we can have sometime race condition if new write
are coming between the query-block-job and the block-job-complete.
block-job-complete throw an error "The active block job for device '%(name)' cannot be completed"
we just need to retry in this case.
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-10 06:26:25 +01:00
Dietmar Maurer
bcc87408c0
cleanup: do not entry wait loop if block-job-cancel() fails.
2014-11-07 15:31:56 +01:00
Alexandre Derumier
ab6ecffe53
drive-mirror : wait that busy eq false before block-job-complete
...
When the drive-mirror is at 100%, and write occurs, the busy flag can change from false->true
- 100% no new writes
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
- 100% new writes
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
- 100% no new writes
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
So, we need to check that busy is false before doing the block-job-complete.
Also, we force the vm to pause, if it's busy for more than 120s when drive-mirror is at 100%
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-07 15:28:13 +01:00
Alexandre Derumier
5fe03fd8ee
block-job-cancel : wait that jobs is really finished
...
block-job-cancel is async, we need to check that job is really finished
before try to free the volume
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-11-07 15:26:21 +01:00
Alexandre Derumier
f1e053055c
enable write zeroes optimisations
...
This enable write zeroes optimisation inside guest.
(I have tested them with qcow2,raw (ext4|xfs) , zfs|iscsi and nfs too.
No impact if the block driver don't support it yet (like rbd)
https://lists.nongnu.org/archive/html/qemu-devel/2014-04/msg00009.html
> a) mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vdX
>
> QCOW2 [off] [on] [unmap]
> -----
> runtime: 14secs 1.1secs 1.1secs
> filesize: 937M 18M 18M
>
> iSCSI [off] [on] [unmap]
> ----
> runtime: 9.3s 0.9s 0.9s
>
> b) dd if=/dev/zero of=/dev/vdX bs=1M oflag=direct
>
> QCOW2 [off] [on] [unmap]
> -----
> runtime: 246secs 18secs 18secs
> filesize: 51G 192K 192K
> throughput: 203M/s 2.3G/s 2.3G/s
>
> iSCSI* [off] [on] [unmap]
> ----
> runtime: 8mins 45secs 33secs
> throughput: 106M/s 1.2G/s 1.6G/s
> allocated: 100% 100% 0%
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-10-13 10:34:41 +02:00
Alexandre Derumier
7183bd9a8f
add iothread/dataplane support
...
new config option:
iothread: 1|0
This enable iothread/dataplane support, to improve io performance on fast storages
Currently block jobs don't work yet, it's planned for qemu 2.2.
So it's better to not expose yet this option in gui.
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-10-10 10:27:41 +02:00
Alexandre Derumier
f78cc802cf
vm_devices_list : also list block devices
...
This allow scsi disk to be plug|unplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-09-01 11:33:54 +02:00
Dietmar Maurer
7946e0fa42
Currently,if we don't have a "machine" option in running config, and we take a vmstate snapshot
...
the machine option is write in the snapshot (ok), but also in the running config (bad)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-08-29 11:27:27 +02:00
Alexandre Derumier
6c33c345ef
allow hotplug of virtio-scsi disks
...
It was an old protection, it's working fine now
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-29 08:18:08 +02:00
Dietmar Maurer
cd11416f7a
clone_vm: auto generate new uuid
2014-08-26 09:20:09 +02:00
Alexandre Derumier
3aefd6fdf9
add Broadwell cpu model
...
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-20 12:20:18 +02:00
Alexandre Derumier
d2da6d9b8e
generate spice devices cmd line after pci bridge
...
we should push to $devices array instead $cmd array,
because pci bridges need to be create before spice devices
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-13 06:14:03 +02:00
Alexandre Derumier
5cffb2d2f2
bump max hostpci to 4
...
user need to passthough 3 devices here
http://forum.proxmox.com/threads/19134-KVM-passtrought-PciExpress-3-card
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-06 09:40:32 +02:00
Alexandre Derumier
137483c053
vga=none if x-vga passthrough is enabled
...
we need to disable virtual vga card if we passthrough a physical gpu
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-08-06 09:39:38 +02:00
Alexandre Derumier
9040435417
disable kvm cpu signature if x-vga is enabled
...
see
http://git.qemu.org/?p=qemu.git;a=commit;h=f522d2acc549dd11f495048330aa5f3f424a7dfa
last nvdia drivers don't install in kvm machine if they detect kvm signature.
This patch hide kvm signature in cpuflags (but don't disable kvm)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-07-24 06:51:55 +02:00
Kamil Trzciński
8f3e88af00
Reset device only if has_fl_reset is defined
...
Signed-off-by: Kamil Trzciński <ayufan@ayufan.eu>
2014-07-23 06:11:15 +02:00
Stefan Priebe
8fd882a42b
snapshot_delete: reorder parent "connection" after prepare
...
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 09:23:40 +02:00
Stefan Priebe
258e646c57
pass snapname to PVE::Storage::vdisk_clone
...
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 09:21:37 +02:00
Dietmar Maurer
2796e7d542
new option smbios1: specify SMBIOS type 1 fields (uuid, ...)
2014-06-26 11:12:25 +02:00
Alexandre Derumier
b1f72af6d4
add pci multifunction unbind support
...
we need to unbind each functions of a multifunction pci device
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:30:01 +02:00
Alexandre Derumier
4543ecf07f
add pci multifunction support
...
multifunction device should be define without the .function
hostpci0: 00:00
example
-------
if 00:00.0
00:00.1
00:00.2
exists,
then we generate the multifunction devices
-device (pci-assign|vfio-pci),host=00:00.0,id=hostpci0.0,bus=...,addr=0x0.0,multifunction=on
-device (pci-assign|vfio-pci),host=00:00.1,id=hostpci0.1,bus=...,addr=0x0.1
-device (pci-assign|vfio-pci),host=00:00.2,id=hostpci0.2,bus=...,addr=0x0.2
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:29:53 +02:00
Alexandre Derumier
2e3b7e2a3a
add pcie and x-vga passthrough
...
hostpci0: .....,x-vga=on,pcie=1
x-vga require kernel 3.10 with vfio-vga support enable
if x-vga=on, we force vfio-pci device
pcie=1 choose the pciexpress bus (need q35 machine model)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-06-25 09:29:10 +02:00
Stefan Priebe
000fc0a254
added support for vfio-pci passthrough
...
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-06-18 07:03:09 +02:00