프라이빗 클라우드를 제대로 공부하려면 OpenStack을 직접 깔아봐야 합니다. 가장 빠른 길이 DevStack — 스크립트 하나로 올인원 OpenStack을 올려주는 개발/학습용 도구죠. 저는 이걸 Proxmox 홈랩에 올려봤습니다. 결론부터 솔직히 말하면 한 방에 안 됐고, 여러 번 깨졌습니다. 이번 편은 설치 준비부터 첫 번째 벽까지의 실전 기록입니다.
1. 먼저 정한 것 — OS는 Ubuntu
제 홈랩엔 Rocky 9 설치용 VM이 있었지만, DevStack엔 안 썼습니다. DevStack은 사실상 Ubuntu 전용이거든요(공식 지원·테스트가 우분투 중심). Rocky/CentOS는 지원이 불안정합니다. 그래서 깨끗한 Ubuntu 24.04로 갔습니다.
2. VM 준비 — cloud-init 템플릿 클론
예전에 만들어둔 Ubuntu cloud-init 템플릿을 클론해 30초 만에 노드를 준비했습니다.
# 템플릿(9000)에서 DevStack용 VM(200) 클론
qm clone 9000 200 --full --name devstack
qm resize 200 scsi0 +37G # 디스크 ~40G
qm set 200 --memory 12288 --cores 6 --sshkeys ~/.ssh/id_rsa.pub --ipconfig0 ip=dhcp
qm start 200
사양은 6코어 / 12GB / 40GB. DevStack 올인원의 현실적 최소선입니다(8GB로도 되지만 빠듯). 호스트 RAM을 보호하려 16GB가 아닌 12GB로 잡았습니다.
3. DevStack 설치 준비
DevStack은 root가 아니라 전용 stack 유저로 돌려야 합니다.
# stack 유저 + passwordless sudo
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
# devstack 클론 (stack 유저로)
sudo -u stack -H git clone https://opendev.org/openstack/devstack /opt/stack/devstack
설정은 local.conf 하나입니다. 최소 구성으로 시작했습니다.
[[local|localrc]]
ADMIN_PASSWORD=devstack123
DATABASE_PASSWORD=devstack123
RABBIT_PASSWORD=devstack123
SERVICE_PASSWORD=devstack123
HOST_IP=192.168.x.x
VOLUME_BACKING_FILE_SIZE=8G # Cinder 백킹 축소로 디스크 절약
cd /opt/stack/devstack && ./stack.sh
4. 첫 번째 벽 — NumPy가 CPU를 걸고 넘어졌다
패키지 설치가 한참 돌더니 nova-novncproxy 서비스에서 죽었습니다. 로그를 파보니 범인은 엉뚱하게도 NumPy였습니다.
RuntimeError: NumPy was built with baseline optimizations:
(X86_V2) but your machine doesn't support: (X86_V2).
원인은 가상 CPU 타입이었습니다. Proxmox VM의 기본 CPU 타입(kvm64)은 호환성을 위해 최신 명령어셋(SSE4.2 등, x86-64-v2)을 감춥니다. 그런데 요즘 NumPy 휠은 x86-64-v2를 전제로 빌드돼서, 그 명령어가 없으면 임포트 단계에서 크래시합니다. nova의 콘솔 프록시가 NumPy를 쓰다 죽은 거죠.
해결은 지난 KVM 글에서 다룬 바로 그 포인트 — CPU 타입을 host로 바꿔 물리 CPU 기능을 그대로 노출하는 것이었습니다.
qm stop 200
qm set 200 --cpu host # 물리 i5의 명령어셋 그대로 노출
qm start 200
# VM 안에서 확인 — 이제 노출됨
grep -o -m1 sse4_2 /proc/cpuinfo # sse4_2
grep -o -m1 avx2 /proc/cpuinfo # avx2
이건 일반 DevStack 튜토리얼엔 없는 함정입니다. 물리 서버나 워크스테이션에선 안 생기고, “기본 CPU 타입 가상머신”에서만 터지거든요. 홈랩에서 VM으로 OpenStack·AI 라이브러리를 돌린다면 --cpu host는 기본으로 챙기세요.
다음 편
CPU를 고치고 다시 ./stack.sh를 돌렸습니다. 그런데 이번엔 네트워크(Neutron)에서, 그다음엔 Glance에서, 또 placement에서 연달아 막혔습니다. 다음 편에서 이 “서비스는 뜨는데 안 되는” 연속 삽질과 각각의 원인을 낱낱이 분석합니다. DevStack이 홈랩에서 왜 만만치 않은지, 제대로 보여드리겠습니다.