Repository navigation
Description
Problem
createVMFromBackup takes the device ids of the data volumes from the backup. A backup of a VM without config drive can have a data volume on a device id that is reserved on a config drive VM (4, or 5 on main). When the VM is created from that backup on a config drive network, the volume keeps that device id, and on q35 (SATA CD-ROMs, SCSI data disks) its target is the same as a CD-ROM. The VM ends in Error state with XML error: target 'sde' duplicated (4.22) or target 'sdf' duplicated (main, only when vm.iso.max.count=2). The same backup restored on a network without config drive gives a running VM.
Not caused by the device id fixes): it also fails on 4.22.1.1 and on 4.23.0.0. On 4.23.0.0, a VM created from a backup with data volumes on 1, 2, 5, 6 on a config drive network also cannot start with vm.iso.max.count=2 (target 'sde' duplicated between the empty CD-ROM and the config drive ISO), and with the 4.23 device ids (1, 2, 4, 5) the source VM itself cannot start.
Versions
Fails before the device id fixes:
- 4.22.1.1: deviceid 4 kept, the VM cannot start (default vm.iso.max.count=1).
- 4.23.0.0: data volumes on 1, 2, 5, 6: the VM starts with vm.iso.max.count=1 and cannot start with vm.iso.max.count=2.
Still fails after the device id fixes (this path is not covered by them):
- 4.22 build with the device id fix (4.22.2.0-SNAPSHOT): same as 4.22.1.1.
- main (24.0.0-SNAPSHOT): same as 4.23.0.0 (starts with vm.iso.max.count=1, cannot start with 2).
Environment:
KVM on OL 9, qemu-kvm 7.2.0, libvirt 9.0.0, machine type pc-q35-rhel9.2.0 (template settings rootDiskController=scsi, kvm.guest.os.machine.type=pc-q35-rhel9.2.0, UEFI=LEGACY). NFS primary storage, NAS backup provider with an NFS repository.
The steps to reproduce the bug
- Create two L2 networks: N1 with DefaultL2NetworkOffering, N2 with DefaultL2NetworkOfferingConfigDrive.
- Deploy a q35 scsi VM on N1 and attach data volumes: on 4.22, 3 volumes (device ids 1, 2, 4); on main, 4 volumes (device ids 1, 2, 5, 6).
- Assign the VM to a NAS backup offering and take a backup. The backup volume list has the same device ids.
- (main only) Set vm.iso.max.count to 2.
- Create a VM from the backup on N2 (createVMFromBackup with networkids=N2).
- The job fails with 530 "Unable to orchestrate the start of VM instance". The VM is in Error, the data volume is on deviceid 4 (or 5), and the management server log has "Unable to start VM on Host ... XML error: target 'sde' (or 'sdf') duplicated" for each host.
- Control: create a VM from the same backup on N1. It is Running.
Workaround
Tested on 4.22: createVMFromBackup with datadisksdetails and device ids 1, 2, 5 gives a running VM.
What to do about it?
Expected: on a config drive network, the data volumes of a VM created from a backup do not use the device ids reserved for the CD-ROMs and the config drive ISO, and the VM starts.
Activity