문서의 이전 판입니다!


Proxmox

리눅스 커널 기반(데비안)에 KVM 과 OpenVZ를 얹고 웹 콘솔을 붙여 놓은 솔루션. Docker 까지 구성하면 삼위일체 가상머신 완성!

VM 뿐 아니라 LxD 컨테이너를 지원하므로 VM만 지원하는 ESXi에 비해 램소모가 적은 장점이 있다1)

프로젝트홈 다운로드 페이지 (Proxmox VE)

버전

7

  1. Debian 11 "Bullseye" and a Linux kernel 5.11
  2. LXC 4, Ceph 16.2, QEMU 6.0, and OpenZFS 2.0
  3. Reworked installer with Btrfs
  4. New panel for managing 'Repositories' via GUI
  5. Download ISO images from URL
  6. Single Sign-On (SSO) with OpenID Connect
  7. Markdown in "Notes"
  8. Ceph 16.2 Pacific

설치

업데이트

Proxmox는 유료 라이센스 없이도 잘 작동함. 라이선스가 없는 버전은 테스트 된 "엔터프라이즈"업데이트 저장소에 대한 액세스 권한이 없다는 점을 제외하고는 유료 버전과 동일한 기능을 함. Update를 하려면 기본 설정된 subsription Repository를 다른 저장소로 변경한다.

nano /etc/apt/sources.list.d/pve-enterprise.list
#엔터프라이즈 소스는 커멘트 처리
#deb https://enterprise.proxmox.com/debian buster pve-enterprise
nano /etc/apt/sources.list.d/pve-no-subscription.list
#공짜용 (buster는 자신의 데비안에 맞게 변경)
deb http://download.proxmox.com/debian/pve buster pve-no-subscription
apt-get update && apt-get dist-upgrade

로 업데이트

컨테이너 템플릿 업데이트

pveam update
pveupgrade
pveam available

구독 알림 끄기

Web 접속시 계속 Subscription 하라고 알림이 뜨는데,

 /usr/share/pve-manager/js/pvemanagerlib.js
"if (data.status !== 'Active') {" 를 "if (false) {"로 바꿉니다.

UDP Multicast 설정

VM 서버에 TV 서버가 있는 경우 UDP Multicasting이 되어야하는데 ProxMox의 경우 Bridge로 동작하여 Multicasting을 하려면 추가로 설정해야함.

 /etc/network/interfaces 의 iface vmbr0 inet static 끝에 다음을 추가함.
      post-up echo 0 > /sys/devices/virtual/net/vmbr0/bridge/multicast_snooping

사용자 추가

  1. proxmox에 다른 사용자 추가 - 리눅스 사용자 admin을 추가한다. 3)

도커설치

Proxmox with docker (Eng)

  1. proxmox에 Dockerwebui 설치
  2. Portainer 설치 4)

윈도10 설치

백업

클릭 한두번이면 가능하다. 5)

  • local 영역은 설치디스크의 일부 용량을 사용하며 설치디스크인 ISO 파일등을 업로드 가능함. 공용으로 사용가능한 용량임 리눅스의 root영역과 비슷한 영역임.
  • local-lvm 백업이나 스냅샷을 지원하는 포맷임.

가상 머신 만들기

ISO 파일 업로드

로컬 > Contents > Upload
  1. Goto server view from drop down on left hand side.
  2. Expand datacenter menu until you see local then click it.
  3. Right hand side select Contents tab.
  4. click upload button.
  5. Click select file, find your ISO, click upload.

Cache

  • No cache(Default): 안전함
  • Write back: 성능. 유사시 자료 손상의 위험이 있으므로 듀얼파워, UPS가 있어 안정적인 동작이 가능한 경우 사용한다.

Network

  • Bridged: 기본. 각각의 VM이 각각의 네트워크 카드를 갖고 있는 것처럼 작동됨. 별도의 MAC이 있고, DHCP에서 (공유기) 각자 IP를 받게 됨.
  • Route: Proxmox노드가 공유기처럼 작동함. VM은 별도 내부 IP를 갖게됨.
  • Masquerading: 노드와 VM이 같은 IP하나만 쓴다. VM을 외부에 노출 시키려면, portforwarding을 해야함.

HDD

Image

  • raw format: dd로 만든다 6)
  • qcow2: 만들고7), 압축가능 8)
  • vmdk

물리하드 붙이기

https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)

가상머신 (VM)에 물리하드 (Physical hdd)를 통채로 붙이는 방법이다. 컨테이너(CT)에는 안된다? 컨테이너에 물리하드 붙이기

시작하기 전에 반드시 해당 하드의 제품명, 시리얼번호를 다른 곳에 적어 놓는다. 중간에 헷갈리지 않도록한다.

ls -l /dev/disk/by-id

확인

# ls -l /dev/disk/by-id | grep PURZ
lrwxrwxrwx 1 root root 9 Sep 18 22:33 ata-WDC_WD20PURZ-85GU6Y0_WD-WCC4M2TTJU88 → ../../sde

이제 qm 명령어로 해당 가상머신에 하드디스크를 할당한다. VM 번호를 알아야함.

qm set 105 -sata0 /dev/disk/by-id/ata-SAMSUNG_HD203WI_S27KJ1LZ202590
qm set 106 -sata0 /dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S12TNEAD203401D
qm set 106 -sata1 /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_46H2H8NGS
qm set 105 -sata0 /dev/disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M2791725
qm set 105 -sata1 /dev/disk/by-id/ata-WDC_WD20PURZ-85GU6Y0_WD-WCC4M2TTJU88
qm set 105 -sata2 /dev/disk/by-id/ata-WDC_WD20PURZ-85GU6Y0_WD-WCC4M6TZJK2N

해당 가상머신 재시작.

UUID로 물리하드 붙이기

Ports used by Proxmox VE

  • Web interface: 8006 (TCP, HTTP/1.1 over TLS)
  • VNC Web console: 5900-5999 (TCP, WebSocket)
  • SPICE proxy: 3128 (TCP)
  • sshd (used for cluster actions): 22 (TCP)
  • rpcbind: 111 (UDP)
  • sendmail: 25 (TCP, outgoing)
  • corosync cluster traffic: 5404, 5405 UDP
  • live migration (VM memory and local-disk data): 60000-60050 (TCP)

변환하기

컨테이너 만들기

Privileged vs. Unprivileged

컨테이너는 크게 두 종류가 있다. Privileged와 Unprivileged인데 전자는 컨테이너의 root 계정이 Proxmox의 root 계정이고, 후자는 컨테이너 내의 root이 Proxmox 가면 듣보잡인 뭐 그런 개념이다. 아무래도 컨테이너에서 계정이 탈출하는 상황을 가정하면 후자가 안전하다. 다만 듣보잡 계정을 쓰면 상대적으로 안전한 만큼 불편함도 있다. 예를 들어 외부 스토리지를 연결해줘도 unprivileged 컨테이너는 그 스토리지에 쓰기를 할 수가 없다. 9)

템플릿 다운로드

로컬 > Contents > Templates

요금

상용 서비스 아니면 no subscription repository 쓰면 된다. 안정화 패키지 말고 다른 특별한 제한은 없다. 가끔씩 최신 업데이트해보면 버그로 일부 패키지들이 동작이 안되었던 경험이 있다. (docker-ce등)

subscription alert 무력화 스크립트임.. (업데이트 할때마다 실행 필요함)

sed -i.bak 's/NotFound/Active/g' /usr/share/perl5/PVE/API2/Subscription.pm && systemctl restart pveproxy.service
lspci #하드웨어 정보


dmesg

유지보수

SSD wearout

메인이 아무래도 리눅스인만큼 로그, 하드웨어 모니터 등등 관리를 위한 데몬들의 디스크 I/O 가 상당히 많다. SSD 같은 경우 메인드라이브로 사용하기에는 OS구동만으로도 수명에 무리가 있다. 간단하게 USB등에 설치하는 Vmware의 EXSi 와는 다르게 Proxmox는 반드시 하드디스크에 설치해서 사용하는게 유리함.

가상머신(VM) 자체는, 따로 SSD를 설치해서 구동하도록 한다. 10)

HA같은 경우 SSD는 클러스터를 사용하지 않는 경우 수명보호를 위해 아예 끄는 것이 좋다 (주의가 필요)

systemctl stop pve-ha-lrm
systemctl stop pve-ha-crm
systemctl disable pve-ha-crm
systemctl disable pve-ha-lrm

systemctl edit --full pvesr.timer
change to OnCalendar=monthly
systemctl daemon-reload

컨테이너 이동

컨테이너를 다른 HDD로 이동하는 기능은 웹UI에는 없다.

  1. 정지시킨다
  2. 일단 백업을 하고
  3. 백업한 것을 다른 하드에서 같은 ID로 복원

백업할 공간이 충분해야한다.

자동화 스크립트

저장공간 추가하기

1)
VM과 컨테이너는 당연히 퍼먹는 리소스 차이가 있을 수 밖에 없다
2)
SSD같은 경우 메인드라이브로 사용하기에는 OS구동만으로도 수명에 무리가 있다. 간단하게 USB등에 설치하는 Vmware의 ESXi 와는 다르게 Proxmox는 반드시 하드디스크에 설치해서 사용하는게 유리함. 속도가 필요한 가상머신(VM) 자체는, 따로 SSD 위에서 구동한다.
3)
adduser admin
  # proxmox에 관리자 그룹 admin을 만들고 방금 추가한 사용자를 등록한다.
  pveum groupadd admin -comment "System Administrators"   # Define the group
  pveum aclmod / -group admin -role Administrator  # Then add the permission
  pveum usermod admin@pam -group admin  # You can finally add users to the new ‘admin’ group
4)
mkdir -p /root/portainer/data
      도커 웹관리를 위해 Portainer 설치
      docker run -d --restart=always -p 9000:9000 -v /root/portainer/data:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
     웹관리자 접속
http://192.168.0.2:9000
5)
ESXi에서 사실상 불가능
6)
dd if=/dev/hdd1 of=hdd.img bs=4M
7)
qemu-img convert -f raw -O qcow2 hdd.img hdd.qcow2
8)
qemu-img convert -c -O qcow2 hdd.qcow2 hdd-shrunk.qcow2

역링크