docs: .9 안 중첩 Windows VM 가능 여부를 실측으로 정리
Some checks failed
Windows / verify (push) Has been cancelled
Some checks failed
Windows / verify (push) Has been cancelled
"Proxmox 말고 .9 안에서 Windows VM 을 돌릴 수 없나" 에 대한 답. 가능하다. 주장이 아니라 실제로 띄워서 확인했다. /dev/kvm 존재 / kvm_intel nested=Y qemu -enable-kvm -> "kvm support: enabled" 여유 RAM 25GB, 디스크 294GB (8G VM 수용 가능) 가장 큰 이점은 성능이 아니라 **사람 손이 안 간다는 것**이다. .9 안이라 에이전트가 VM 생성부터 러너 등록까지 직접 할 수 있고 Proxmox 자격증명이 필요 없다. 지금까지 막혀 있던 지점이 정확히 그거였다. 다만 GPU 문제는 전혀 해결되지 않는다. IOMMU 그룹 0개, 커널 cmdline 에 iommu 옵션 없음 -> 중첩 패스스루 불가 되게 하려면 Proxmox 가 vIOMMU 를 열고 .9 커널에 intel_iommu=on 을 넣고 GPU 를 vfio-pci 에 묶어야 하는데, 그러면 .9 가 GPU 를 잃는다. 결국 "GPU 를 누가 가질 것인가" 로 되돌아온다. 운영상 함정 하나를 실측으로 확인해 문서에 박아뒀다. 에이전트 턴에서 그냥 qemu 를 띄우면 VM 이 ejclaw.service cgroup(MemoryHigh=16G, 평시 5G 사용) 안에서 돌아 8G VM 이 상한을 치고 봇을 OOM 으로 죽인다(전례 있음). systemd-run --user --scope 를 쓰면 app.slice 형제 scope 로 빠지는 것을 확인했다 — 독립 상한이 실제로 적용됨. A(.9 중첩) vs B(Proxmox) 비교표 추가. CI 타임아웃 30분에 파이프라인이 27초라 중첩 오버헤드는 문제되지 않으므로 A 를 먼저 권한다. 부수 변경(이 저장소 밖): .9 에 qemu-system-x86/ovmf 설치, claude 계정을 kvm 그룹에 추가. /dev/kvm 이 root:kvm 0660 이라 권한이 없으면 qemu 가 "Could not access KVM kernel module: Permission denied" 로 죽는다. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -93,7 +93,57 @@ lspci | grep -i vga # GPU가 몇 장 꽂혀 있나
|
|||||||
dmidecode -t slot | grep -i "in use" # 빈 PCIe 슬롯이 있나
|
dmidecode -t slot | grep -i "in use" # 빈 PCIe 슬롯이 있나
|
||||||
```
|
```
|
||||||
|
|
||||||
### Proxmox에 Windows VM 만들기
|
### 선택지 A — `.9` 안에 Windows VM (중첩 가상화)
|
||||||
|
|
||||||
|
Proxmox를 건드리지 않고 `.9`(우분투) 안에서 바로 Windows VM을 돌릴 수 있습니다.
|
||||||
|
**실제로 확인했습니다.**
|
||||||
|
|
||||||
|
```
|
||||||
|
/dev/kvm 존재
|
||||||
|
kvm_intel nested Y
|
||||||
|
qemu -enable-kvm kvm support: enabled ← 실측
|
||||||
|
여유 RAM / 디스크 25GB / 294GB
|
||||||
|
```
|
||||||
|
|
||||||
|
**가장 큰 장점은 사람 손이 안 간다는 것입니다.** `.9` 안이라 에이전트가 VM
|
||||||
|
생성부터 러너 등록까지 직접 합니다. Proxmox 자격증명도 필요 없습니다.
|
||||||
|
|
||||||
|
**단, GPU는 여전히 안 됩니다.** 중첩 패스스루가 불가능합니다.
|
||||||
|
|
||||||
|
```
|
||||||
|
IOMMU 그룹 수 0개
|
||||||
|
커널 cmdline iommu 옵션 없음
|
||||||
|
```
|
||||||
|
|
||||||
|
되게 하려면 Proxmox가 `.9`에 vIOMMU를 열어주고 `.9` 커널에 `intel_iommu=on`을
|
||||||
|
넣은 뒤 GPU를 `vfio-pci`에 묶어야 하는데, 그러면 **`.9`가 GPU를 잃습니다.**
|
||||||
|
결국 "GPU를 누가 가질 것인가" 문제로 되돌아오므로 중첩으로는 해결되지 않습니다.
|
||||||
|
|
||||||
|
#### ⚠️ 메모리 cgroup 함정 — 반드시 `systemd-run --scope`
|
||||||
|
|
||||||
|
에이전트 턴에서 그냥 `qemu`를 띄우면 VM이 **봇의 cgroup 안에서** 돕니다.
|
||||||
|
`ejclaw.service`는 `MemoryHigh=16G`이고 평상시 5G를 쓰므로, 8G짜리 VM이
|
||||||
|
그 안에 들어가면 상한에 부딪혀 봇이 OOM으로 죽습니다(전례 있음).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 봇 cgroup 밖(app.slice 형제)에 VM 을 띄운다 — 실측으로 확인됨
|
||||||
|
systemd-run --user --scope -p MemoryMax=10G --unit win-ci qemu-system-x86_64 -enable-kvm -m 8192 ...
|
||||||
|
```
|
||||||
|
|
||||||
|
#### A vs B 비교
|
||||||
|
|
||||||
|
| | A: `.9` 안 중첩 VM | B: Proxmox VM |
|
||||||
|
|---|---|---|
|
||||||
|
| 만드는 사람 | **에이전트가 직접** | 사용자 |
|
||||||
|
| GPU | ❌ | ❌ (별도 GPU 추가 시 ⭕) |
|
||||||
|
| 속도 | 중첩이라 다소 느림 | 네이티브 |
|
||||||
|
| `.9` 재부팅 시 | 같이 죽음 | 영향 없음 |
|
||||||
|
| RAM | `.9`의 30GB를 나눠 씀 | 독립 |
|
||||||
|
|
||||||
|
CI는 타임아웃이 30분인데 파이프라인이 27초라 속도 여유가 충분합니다.
|
||||||
|
**먼저 A로 띄워보고, 부족하면 B로 옮기는 편을 권합니다.**
|
||||||
|
|
||||||
|
### 선택지 B — Proxmox에 Windows VM 만들기
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Proxmox 호스트에서 (VMID 는 비어 있는 번호로)
|
# Proxmox 호스트에서 (VMID 는 비어 있는 번호로)
|
||||||
|
|||||||
Reference in New Issue
Block a user