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

   ### problem
   
   ## Description
   When restoring a volume from backup and attaching it to a **running** KVM 
VM, the volume is only attached at the **database level** but not actually 
hot-attached to the running VM via libvirt. This means:
   1. The volume appears in CloudStack UI as "attached"
   2. The volume does NOT appear in `virsh domblklist <vm-name>` 
   3. The volume is NOT visible inside the guest OS
   4. User must reboot(forced) the VM to see the restored volume
   ## Root Cause
   In `KVMGuru.attachRestoredVolumeToVirtualMachine()` (line 380-400), the 
method only:
   - Updates the volume state in the database via `_volumeDao.attachVolume()`
   - Sets volume state to `Ready`
   It does **NOT**:
   - Check if VM is running
   - Send an `AttachCommand` to the KVM agent to hot-attach the disk via libvirt
   ## Expected Behavior
   When attaching a restored volume to a **running** VM:
   1. CloudStack should detect the VM state
   2. If VM is 
[Running](cci:1://file:///root/new_merge/olympos-cloud-platform/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java:5982:4-5991:5),
 send a libvirt attach command to hot-attach the disk
   3. Volume should immediately appear in `virsh domblklist` and inside guest OS
   4. No reboot should be required
   
   ### versions
   
   CloudStack: 4.21.0
   Hypervisor: KVM
   Host OS: Rocky Linux 9
   Guest OS: Rocky Linux 9 / Windows 10 - 2022 Server
   
   
   ### The steps to reproduce the bug
   
   ## Steps to Reproduce
   1. Create a VM with a data disk
   2. Create a backup of the VM
   3. Start the VM (ensure it's running)
   4. Restore the backed-up volume and attach to the running VM via API:
      `restoreVolumeFromBackupAndAttachToVM`
   5. Check `virsh domblklist <vm-name>` on the KVM host
   6. **Observe:** The restored volume is NOT listed
   7. Check inside guest OS
   8. **Observe:** The disk is NOT visible
   9. Reboot(forced) the VM
   10. **Observe:** After reboot(forced), the disk appears
   
   ### What to do about it?
   
   Either:
   A) Add hot-attach logic to `KVMGuru.attachRestoredVolumeToVirtualMachine()` 
to send `AttachCommand` when VM is running
   B) Or document this as expected behavior and require users to stop VM before 
restoring volumes
   Option A is preferred as it aligns with how regular 
[attachVolume](cci:1://file:///root/new_merge/olympos-cloud-platform/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java:2479:4-2483:5)
 API works for running VMs.


-- 
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