[pve-devel] [PATCH-SERIES v2] make storage migration more flexible

Fabian Ebner f.ebner at proxmox.com
Mon Feb 24 13:43:50 CET 2020

This series aims to allow offline migration with '--targetstorage'
and improve handling unsued/orphaned disks when migrating.
It also makes it possible to migrate volumes between storages
with different naming schemes if the same format is supported
by both storages (e.g. migrating raw volumes between storages with
a path and lvm storages).

The series is split up as follows:
#1 to #4: move drive-related code into its own module
#5 to #14: generalize snapshot_foreach_volume and add abstract volume helpers
#15 to #21: introduce allow-rename parameter for import and change storage_migrate
            interface to use options
#22 to #26: allow offline migration and use allow-rename parameter
#27 to #28: translate volume name for migration to a different storage type

See [0] for the previous version/RFC.

Changes to v1:
    * Split off drive-related code into its own module
    * Make snapshot_foreach_volume more flexible
    * update_volume_ids: update the config in place
    * Introduce allow-rename option to 'pvesm import' and
      only rename when explicitly requested
    * Bump APIVER and APIAGE for the storage interface changes
    * Create simple helpers to translate a volume name between
      different storage types

[0]: https://pve.proxmox.com/pipermail/pve-devel/2020-January/041436.html


Fabian Ebner (5):
  Add interface for volume-related helpers
  Add snapshot_foreach_unused_volume
  snapshot_foreach_volume: Allow different volume selections
  Add update_volume_ids
  Use new storage_migrate interface

 PVE/AbstractConfig.pm | 82 +++++++++++++++++++++++++++++++++++++++----
 PVE/Replication.pm    | 12 +++++--
 2 files changed, 85 insertions(+), 9 deletions(-)


Fabian Ebner (7):
  pvesm import: return and print the allocated volume ID
  storage_migrate: return volume ID of migrated volume
  pvesm import: introduce allow_rename parameter
  Collect optional parameters for storage_migrate into $opts
  storage_migrate: introduce allow_rename option
  Add volname_for_storage and print_volname helper
  storage_migrate: use volname_for_storage to determine $target_volname

 PVE/API2/Storage/Content.pm  |  2 +-
 PVE/CLI/pvesm.pm             | 22 +++++++---
 PVE/Storage.pm               | 84 ++++++++++++++++++++++++++++--------
 PVE/Storage/LVMPlugin.pm     | 17 +++++---
 PVE/Storage/Plugin.pm        | 34 +++++++++++++--
 PVE/Storage/ZFSPoolPlugin.pm | 13 +++---
 6 files changed, 133 insertions(+), 39 deletions(-)


Fabian Ebner (13):
  Replace drivename_hash with drivedesc_hash
  Use parse_drive for EFI disk
  print_drive: Use $skip to avoid the need to copy the hash
  Create Drive.pm and move some drive-related code there
  parse_drive: Allow parsing vmstate volumes
  Implement volume-related helpers
  Extend snapshot_foreach_volume to allow different selections of
  Use new storage_migrate interface
  Take note of changes to the volume IDs when migrating and update the
  Allow specifying targetstorage for offline migration
  Update volume IDs in one go
  sync_disks: use allow_rename to avoid collisions on the target storage
  sync_disks: be more verbose if storage_migrate fails

 PVE/API2/Qemu.pm        |   3 -
 PVE/QemuConfig.pm       |  43 +++-
 PVE/QemuMigrate.pm      |  43 +++-
 PVE/QemuServer.pm       | 463 +--------------------------------------
 PVE/QemuServer/Drive.pm | 474 ++++++++++++++++++++++++++++++++++++++++
 PVE/QemuServer/Makefile |   1 +
 6 files changed, 553 insertions(+), 474 deletions(-)
 create mode 100644 PVE/QemuServer/Drive.pm


Fabian Ebner (3):
  Extend snapshot_foreach_volume to allow different selections of
  Implement volume-related helpers
  Use new storage_migrate interface

 src/PVE/LXC/Config.pm  | 38 +++++++++++++++++++++++++++++++++-----
 src/PVE/LXC/Migrate.pm | 10 +++++++---
 2 files changed, 40 insertions(+), 8 deletions(-)

More information about the pve-devel mailing list