From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v5 series 0/5] disk reassign: add new feature
Date: Tue, 15 Dec 2020 13:48:35 +0100 [thread overview]
Message-ID: <20201215124840.29914-1-a.lauterer@proxmox.com> (raw)
This series implements a new feature which allows users to easily
reassign disks between VMs. Currently this is only possible with one of
the following manual steps:
* rename the disk image/file and do a `qm rescan`
* configure the disk manually and use the old image name, having an
image for VM A assigned to VM B
The latter can cause unexpected behavior because PVE expects that the
VMID in a disk name always corresponds to the VM it is assigned to. Thus
when a disk, original from VM A was manually configured as disk for VM B
it happens that, when deleting VM A, the disk in question will be
deleted as well because it still had the VMID of VM A in it's name.
To issue a reassign from the CLI run:
qm reassign_disk <source VMID> <target VMID> <drive name>
where <drive name> is the config key of the disk, e.g. ide0, scsi1 and so
on.
The following storage types are implemented at the moment:
* dir based ones
* directory
* NFS
* CIFS
* gluster
* ZFS
* (thin) LVM
* Ceph RBD
v4 -> v5:
* rebase on current master
* reorder patches
* rename `drive_key` to `drive_name`
thanks @Dominic for pointing out that there already are a lot of
different names in use for this [0] and not to invent another one ;)
* implemented suggested changes from Fabian [1][2]. More directly in the
patches themselves
v3 -> v4:
* revert intermediate storage plugin for directory based plugins
* add a `die "not supported"` method in Plugin.pm
* dir based plugins now call the file_reassign_volume method in
Plugin.pm as the generic file/directory based method
* restored old `volume_has_feature` method in Plugin.pm and override it
in directory based plugins to check against the new `reassign` feature
(not too happy about the repetition for each plugin)
* task description mapping has been moved from widget-toolkit to
pve-manager/utils
v2 -> v3:
* change locking approach
* add more checks
* add intermedia storage plugin for directory based plugins
* use feature flags
* split up the reassign method to have a dedicated method for the
renaming itself
* handle linked clones
* clean up if disk used to be replicated
I hope I didn't forget anything major.
v1 -> v2:
print info about the new disk volid and key at the end of the job so it
shows up in the CLI output and task log
Changes from RFC -> V1:
* support to reassign unused disks
* digest for target vm config
* reorder the checks a bit
* adding another one to check if the given key for the disk even exists
in the config.
[0] https://lists.proxmox.com/pipermail/pve-devel/2020-November/045986.html
[1] https://lists.proxmox.com/pipermail/pve-devel/2020-November/046031.html
[2] https://lists.proxmox.com/pipermail/pve-devel/2020-November/046030.html
storage: Aaron Lauterer (1):
add disk reassign feature
PVE/Storage.pm | 15 ++++++++--
PVE/Storage/CIFSPlugin.pm | 19 +++++++++++++
PVE/Storage/DirPlugin.pm | 19 +++++++++++++
PVE/Storage/GlusterfsPlugin.pm | 19 +++++++++++++
PVE/Storage/LVMPlugin.pm | 24 ++++++++++++++++
PVE/Storage/LvmThinPlugin.pm | 1 +
PVE/Storage/NFSPlugin.pm | 19 +++++++++++++
PVE/Storage/Plugin.pm | 51 ++++++++++++++++++++++++++++++++++
PVE/Storage/RBDPlugin.pm | 31 +++++++++++++++++++++
PVE/Storage/ZFSPoolPlugin.pm | 28 +++++++++++++++++++
10 files changed, 224 insertions(+), 2 deletions(-)
qemu-server: Aaron Lauterer (2):
disk reassign: add API endpoint
cli: disk reassign: add reassign_disk to qm command
PVE/API2/Qemu.pm | 151 ++++++++++++++++++++++++++++++++++++++++
PVE/CLI/qm.pm | 2 +
PVE/QemuServer/Drive.pm | 4 ++
3 files changed, 157 insertions(+)
guest-common: Aaron Lauterer (1):
Replication: mention disk reassign in comment of possible reasons
PVE/Replication.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
manager: Aaron Lauterer (1):
ui: tasks: add qmreassign task description
www/manager6/Utils.js | 1 +
1 file changed, 1 insertion(+)
--
2.20.1
next reply other threads:[~2020-12-15 12:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-15 12:48 Aaron Lauterer [this message]
2020-12-15 12:48 ` [pve-devel] [PATCH v5 storage 1/5] add disk reassign feature Aaron Lauterer
2021-03-31 9:34 ` Fabian Grünbichler
2020-12-15 12:48 ` [pve-devel] [PATCH v5 qemu-server 2/5] disk reassign: add API endpoint Aaron Lauterer
2021-03-31 9:23 ` Fabian Grünbichler
2021-04-01 14:24 ` Aaron Lauterer
2020-12-15 12:48 ` [pve-devel] [PATCH v5 qemu-server 3/5] cli: disk reassign: add reassign_disk to qm command Aaron Lauterer
2020-12-15 12:48 ` [pve-devel] [PATCH v5 guest-common 4/5] Replication: mention disk reassign in comment of possible reasons Aaron Lauterer
2020-12-15 12:48 ` [pve-devel] [PATCH v5 manager 5/5] ui: tasks: add qmreassign task description Aaron Lauterer
2021-02-15 14:59 ` [pve-devel] [PATCH v5 series 0/5] disk reassign: add new feature Aaron Lauterer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201215124840.29914-1-a.lauterer@proxmox.com \
--to=a.lauterer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.