apache / apache/cloudstack

Unable to add more than 2 volumes or networks to a vm deployed from a UEFI image

Ouverte
#11,212 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
status:has-work-around type:bug
Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
6 j 19 h
PR mergées (30 j)
32

Description

### problem

Unable to add more than 2 volume or network to a vm deployed from a UEFI image

### versions

ACS 4.20.1

### The steps to reproduce the bug

1. Register a UEFI image Template

https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

2. Deploy the vm by enabling UEFI secure mode in advanced settings

Image

3. Once the vm is in running state , attach multiple volumes , Exception observed

Logs

```
2025-07-16 04:28:28,947 DEBUG [kvm.storage.KVMStorageProcessor] (AgentRequest-Handler-3:[]) (logid:) Attaching device:

c6ef61d1300f442a86e5

2025-07-16 04:28:28,953 WARN [kvm.storage.KVMStorageProcessor] (AgentRequest-Handler-3:[]) (logid:) Failed to attach device to i-2-653-VM: internal error: No more available PCI slots
2025-07-16 04:28:28,953 DEBUG [kvm.storage.KVMStorageProcessor] (AgentRequest-Handler-3:[]) (logid:) Failed to attach volume [id: 394, uuid: c6ef61d1-300f-442a-86e5-e31f482b64ab, name: test2, path: c6ef61d1-300f-442a-86e5-e31f482b64ab], due to org.libvirt.LibvirtException: internal error: No more available PCI slots

```

4. Try to attach multiple networks, Exception observed

```

2025-07-16 04:36:02,019 DEBUG [kvm.resource.BridgeVifDriver] (AgentRequest-Handler-1:[]) (logid:) Successfully executed process [2045246] for command [/usr/share/cloudstack-common/scripts/vm/network/vnet/modifyvlan.sh -v 2144 -p eth1 -b breth1-2144 -o add ].
2025-07-16 04:36:02,021 WARN [resource.wrapper.LibvirtPlugNicCommandWrapper] (AgentRequest-Handler-1:[]) (logid:) Plug Nic failed due to org.libvirt.LibvirtException: internal error: No more available PCI slots org.libvirt.LibvirtException: internal error: No more available PCI slots
at org.libvirt.ErrorHandler.processError(Unknown Source)
at org.libvirt.ErrorHandler.processError(Unknown Source)

```

Workaround

Change the following settings on the vm after stopping

nicAdapter to e1000 or rtl813

rootDiskController to scsi or sata

https://prnt.sc/9wSS5uX0tVYX

### What to do about it?

If the Template is a UEFI enabled , Cloudstack should check if the template is UEFI enabled or not and populated the necessary settings for root disk and nic adapter

yum install libguestfs-tools

virt-inspector --format=raw -a noble-server-cloudimg-amd64.img 2>/dev/null | grep -i 'true'

virt-inspector -a AlmaLinux-8-GenericCloud-UEFI-latest.x86_64.qcow2 2>/dev/null | grep -i 'true'

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par les chemins KVMStorageProcessor et LibvirtPlugNicCommandWrapper indiqués dans les logs, puis examinez la façon dont sont sélectionnés les paramètres du disque racine et des NIC des VM UEFI. Reproduisez le problème avec l’image UEFI Noble et vérifiez que plusieurs volumes et réseaux sont attachés sans modifier les paramètres du contrôleur ou de l’adaptateur.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java, linux
Domaine
cloud, infrastructure
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.