matheusfontes opened a new issue, #12820:
URL: https://github.com/apache/cloudstack/issues/12820

   ### problem
   
   Volume migration between Ceph RBD primary storages fails in CloudStack 4.22 
because the destination is incorrectly treated as a local file path instead of 
an RBD URI.
   
   In CloudStack 4.22, migrating a volume from one Ceph RBD primary storage to 
another fails during the qemu-img convert operation.
   
   The system attempts a direct primary-to-primary migration (which is expected 
behavior in newer versions), but the destination is incorrectly passed as a 
local filesystem path instead of an RBD URI.
   
   As a result, the migration fails with:
   qemu-img: CEPH2_NVME/<uuid>.raw: error while converting raw:
   Could not create 'CEPH2_NVME/<uuid>.raw': No such file or directory
   
   From the agent logs:
   qemu-img convert -O raw -U \
   rbd:CEPH1_SATA/<source-volume>:mon_host=...:auth_supported=cephx:id=... \
   CEPH2_NVME/<destination-volume>.raw
   
   Expected behavior:
   qemu-img convert -O raw \
   rbd:CEPH1_SATA/<source-volume> \
   rbd:CEPH2_NVME/<destination-volume>
   
   The destination is missing the rbd: prefix and is incorrectly suffixed with 
.raw, causing qemu-img to treat it as a local file path.
   
   ### versions
   
        •       Apache CloudStack: 4.22.0
        •       Hypervisor: KVM
        •       OS: Ubuntu 22.04 and 24.04
        •       qemu-img version: 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.27)
        •       Ceph version: Source: Octopus / Destination: Reef
   
   ### The steps to reproduce the bug
   
        1.      Configure two Ceph RBD primary storages in the same zone:
        •       Source: CEPH1
        •       Destination: CEPH2
        2.      Ensure both are accessible from KVM hosts.
        3.      Create a volume in CEPH1
        4.      Attempt to migrate the volume to CEPH2 using:
        •       CloudStack UI
                    select volume -> click on Migrate Volume -> Select CEPH2 
storage pool
   
        •       cmk call
                     migrate volume storageid=CEPH2_ID 
volumeid=VOLUME_ID_HOSTED_IN_CEPH1
   
        5.      Observe failure during migration.
   
   ### What to do about it?
   
        •       Ensure the destination is correctly formatted as an RBD URI 
(rbd:pool/image)
        •       Validate logic in LibvirtStorageAdaptor (KVM) for RBD-to-RBD 
migration path
        •       Possibly introduce fallback to secondary storage if direct 
conversion fails


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to