apache / apache/cloudstack

Configdrive/storage repository issue on XCP-ng

未關閉
#11,984 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
component:secondary-storage component:XenServer
主要語言
Java
星號
3.1k
分支
1.4k
平均合併
6 天 19 小時
30 天內合併 PR
32

描述

### problem

Issue No1:
In case of failed deployments there are unused storage repositories left behind.

Image

`example:
**xe vdi-list uuid=f16e0133-2074-49af-a393-1bb9fa007fb5**
uuid ( RO) : f16e0133-2074-49af-a393-1bb9fa007fb5
name-label ( RW): i-2-24-VM.iso
name-description ( RW):
sr-uuid ( RO): **608c63b9-9c12-bf6a-8d28-f2bc7d01d343**
virtual-size ( RO): 409600
sharable ( RO): false
read-only ( RO): true

**xe sr-list name-label=i-2-24-VM-CONFIGDRIVE-ISO**
uuid ( RO) : 12b1e17a-fb1c-d99f-451c-baf035b822f2
name-label ( RW): i-2-24-VM-CONFIGDRIVE-ISO
name-description ( RW): 10.1.32.4:/acs/secondary/ref-trl-6095-x-Mu24/ref-trl-6095-x-Mu24-sec2/configdrive
host ( RO):
type ( RO): iso
content-type ( RO): iso

uuid ( RO) : **608c63b9-9c12-bf6a-8d28-f2bc7d01d343**
name-label ( RW): i-2-24-VM-CONFIGDRIVE-ISO
name-description ( RW): 10.1.32.4:/acs/secondary/ref-trl-6095-x-Mu24/ref-trl-6095-x-Mu24-sec2/configdrive
host ( RO):
type ( RO): iso
content-type ( RO): iso

uuid ( RO) : 222f3918-75e1-99f9-f7f2-e63d714c130f
name-label ( RW): i-2-24-VM-CONFIGDRIVE-ISO
name-description ( RW): 10.1.32.4:/acs/secondary/ref-trl-6095-x-Mu24/ref-trl-6095-x-Mu24-sec2/configdrive
host ( RO):
type ( RO): iso
content-type ( RO): iso`

As you see above just one storage repository is being used for the ISO file.
This has no functional impact but leaves something unused behind.

Issue No 2:
Within a storage repository which name is specified to one particular VM you can see all the iso files from all the other VMs since they are located in the same secondary storage. Why not have one general storage repository like "VM-CONFIGDRIVE-ISO" to avoid both issues?

### versions

ACS: 4.20.1
XCP-ng: 8.2

### The steps to reproduce the bug

1. Build a couple of VMs where you have limited resources available on the hypervisors.
2.

Image

3. The hypervisor still has been selected for deployments but failed from hypervisor side
4. Several attempts have happened
```
cat /var/log/cloudstack/management/management-server.log | grep job-117 | grep 'VM start attempt'
2025-10-28 14:22:19,361 DEBUG [c.c.v.ClusteredVirtualMachineManagerImpl] (Work-Job-Executor-42:[ctx-a1bf013f, job-117/job-118, ctx-520420a9]) (logid:67fb25c7) VM start attempt #1
2025-10-28 14:22:24,301 DEBUG [c.c.v.ClusteredVirtualMachineManagerImpl] (Work-Job-Executor-42:[ctx-a1bf013f, job-117/job-118, ctx-520420a9]) (logid:67fb25c7) VM start attempt #2
2025-10-28 14:22:25,371 DEBUG [c.c.v.ClusteredVirtualMachineManagerImpl] (Work-Job-Executor-43:[ctx-34843ad3, job-117/job-119, ctx-605dae51]) (logid:67fb25c7) VM start attempt #1
2025-10-28 14:22:28,159 DEBUG [c.c.v.ClusteredVirtualMachineManagerImpl] (Work-Job-Executor-43:[ctx-34843ad3, job-117/job-119, ctx-605dae51]) (logid:67fb25c7) VM start attempt #2
```
5. For each attempt a storage repository has been created. Every time an ISO file as well. On failed attempt the ISO file has been removed but the storage repository not.
6. Once the VM finally got deployed you'll end up with multiple storage repositories, used and unused once with the same name.

### What to do about it?

Option 1: Besides removing the ISO file do also remove the storage repository on failed deployments.
Option 2: Use one general storage repository for all ISO files.

貢獻指南

開啟貢獻指南

研究方向

首先使用 management-server.log 中的 VM 啟動嘗試記錄以及 xe sr-list/xe vdi-list 的輸出,重現針對 ACS 4.20.1 和 XCP-ng 8.2 所描述的部署重試失敗。比較每次失敗嘗試後的清理情況,並確定實作應刪除未使用的儲存庫,還是為 config-drive ISO 共用一個儲存庫。完成的標準是:失敗的嘗試不會留下未使用的儲存庫,且成功的部署仍保留對其 ISO 的存取權。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
java
領域
cloud, infrastructure
Issue 類型
缺陷
難度
5/5
預估耗時
一週以上
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。