Unable to add more than 2 volumes or networks to a vm deployed from a UEFI image
- 主要語言
- Java
- 星號
- 3.1k
- 分支
- 1.4k
- 平均合併
- 6 天 19 小時
- 30 天內合併 PR
- 32
描述
### 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
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'
貢獻指南
研究方向
先從日誌中顯示的 KVMStorageProcessor 和 LibvirtPlugNicCommandWrapper 路徑開始,然後檢查 UEFI VM 根磁碟和 NIC 設定是如何選取的。使用 Noble UEFI 映像重現,並確認在不變更控制器或配接器設定的情況下,可以附加多個磁碟區和網路。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java, linux
- 領域
- cloud, infrastructure
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100