From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v6 series 0/5] disk reassign: add new feature
Date: Fri, 2 Apr 2021 12:19:18 +0200 [thread overview]
Message-ID: <20210402101923.13050-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
v5 -> v6:
* guard Replication snapshot cleanup
* add permission check for target vmid
* changed regex to match unused keys better
* refactor dir based feature check to reduce code repetition
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 | 13 ++++++++
PVE/Storage/DirPlugin.pm | 13 ++++++++
PVE/Storage/GlusterfsPlugin.pm | 13 ++++++++
PVE/Storage/LVMPlugin.pm | 24 ++++++++++++++
PVE/Storage/LvmThinPlugin.pm | 1 +
PVE/Storage/NFSPlugin.pm | 13 ++++++++
PVE/Storage/Plugin.pm | 60 ++++++++++++++++++++++++++++++++++
PVE/Storage/RBDPlugin.pm | 31 ++++++++++++++++++
PVE/Storage/ZFSPoolPlugin.pm | 26 +++++++++++++++
10 files changed, 207 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 | 172 ++++++++++++++++++++++++++++++++++++++++
PVE/CLI/qm.pm | 2 +
PVE/QemuServer/Drive.pm | 4 +
3 files changed, 178 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:[~2021-04-02 10:19 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-02 10:19 Aaron Lauterer [this message]
2021-04-02 10:19 ` [pve-devel] [PATCH v6 storage 1/1] add disk reassign feature Aaron Lauterer
2021-04-13 7:53 ` Dominic Jäger
2021-04-15 11:07 ` Fabian Ebner
2021-04-15 11:31 ` Fabian Ebner
2021-04-15 11:53 ` Aaron Lauterer
2021-04-15 12:09 ` Fabian Ebner
2021-04-15 12:21 ` Thomas Lamprecht
2021-04-15 12:20 ` Thomas Lamprecht
2021-04-02 10:19 ` [pve-devel] [PATCH v6 qemu-server 2/5] disk reassign: add API endpoint Aaron Lauterer
2021-04-15 11:52 ` Fabian Ebner
2021-04-19 9:26 ` Aaron Lauterer
2021-04-18 15:24 ` Thomas Lamprecht
2021-04-19 9:25 ` Aaron Lauterer
2021-04-02 10:19 ` [pve-devel] [PATCH v6 qemu-server 3/5] cli: disk reassign: add reassign_disk to qm command Aaron Lauterer
2021-04-18 14:50 ` Thomas Lamprecht
2021-04-02 10:19 ` [pve-devel] [PATCH v6 guest-common 4/5] Replication: mention disk reassign in comment of possible reasons Aaron Lauterer
2021-04-02 10:19 ` [pve-devel] [PATCH v6 manager 5/5] ui: tasks: add qmreassign task description 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=20210402101923.13050-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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal