왜 proxmox 쓰니?

A) 이 물건과 비교될 물건은 vmware esxi가 있는데, 일단 esxi 같은 경우 라이센스 문제로 인해 할당 가능한 최대 코어 수가 8개로 되어 있어 13500 e코어 8개 할당되면 큰일나는건 둘째 치고, 관련 부가장치들의 드라이버로 인해 문제가 된다.

  • 대부분의 인텔 / AMD 기본 칩셋 드라이버는 esxi 도 지원하지만, 외부 칩셋이나 카드를 사용하는 경우 발생하는 문제를 무시할 수 없다. M.2 NVMe 확장카드에 사용하는 칩셋은 Asmedia ASM1166을 사용하는데, 이거 esxi에 드라이버 없다.

    • 심지어 esxi 8.0 이 나오는 등의 버전업이 될 때마다 해당 카드들의 호환성 목록이 점점 기업형 칩셋 (intel X550 이라던가, SAS 레이드카드 칩셋이라던가) 들만 지원하기 때문에 추후 확장할 카드에 대한 드라이버 이슈를 고려할 수 밖에 없다.
  • 덤으로 pci-passthrough가 쉽지 않은것도 덤 (패스스루 하더라도 기능에 제한이 걸리는 불-편)

    • 그리고 사람은 가끔은 난이도가 높은걸 해볼 필요가 있어요.
    • 아쉽게도 nested Virtualization 이 지금 잘 안되는거랑 vgpu 적용하는게 안되는건 좀 그렇다.
    • vscode remote SSH로 기본 우분투 환경을 WSL을 대체할 수 있지만, 안드로이드 스튜디오 같은 경우 가상 안드로이드 디바이스도 가상화기 때문에 개발에 좀 어려움이 있다.

  1. 본 글은 인텔 13세대 (12세대 포함) 시스템을 바탕으로 진행한 proxmox 를 설치하는 방법을 기록한 것으로 추후 삽질을 줄이고 체크해야 할 포인트들을 기록해두는 용도로 만든 글입니다.
  2. 현 시점에서 proxmox 8 이 등장했으나, 6.2.x kernel로 설치한 7.4의 경우 쉽게 업그레이드 가능하니 8을 설치할 때에도 사용할 수 있습니다.
  3. 뭔지 잘 모르는 상세한 내용은 proxmox wiki 등을 같이 보면 좋습니다.
  • 하드웨어 소개

intel i5 13500

intel B660

ddr5 64GB

M.2 NVMe disk 1

M.2 ASM1166 chipset SATA Extension card

GT 1030

intel X550-T2 (pci-e 2.0 x8)

HDD 5개

SATA SSD 2개 > 1개는 host (proxmox), 1개는 vm 을 위해 할당

host SSD에서 iso 등을 넣어서 vm 설치를 하는 저장공간으로도 쓸 수 있기 때문에 256GB 정도의 용량이 있으면 좋습니다. 아예 host에 1T를 할당하고 모든 VM의 OS 공간으로 사용하셔도 무방합니다.

단, host로 할당한 디스크는 오직 directory 로만 사용 가능합니다.


wifi -> intel AX211

wifi 칩셋이 있는 경우 proxmox 페이지에서 제공하는 부팅 파일을 통한 설치가 되지 않고 debian 을 통해 간접적으로 설치하는 것만 가능합니다.

온보드 wifi 끄는 기능이 없는 상황이 대다수에, 카드를 물리적으로 제거하는 것도 부담스러우므로 이때는 반드시 debian 12를 설치해주셔야 합니다.

본 페이지는 위의 wifi 칩셋이 있다는 가정 하에 작성됩니다.


  • requirements

본 글은 윈도우 설치 정도는 그냥 해내는 분들을 기준으로 작성되었으며 그런거 못하시면 ubuntu / debian 부팅 usb 만들기 등의 과정을 익히는 것을 추천합니다.

쉘 사용에 대한 이해와 네트워킹에 대한 이해도 약간 있어야 합니다.

주요 과정

  1. Debian 설치
  2. Debian을 통해 proxmox VE 로 변경
  3. proxmox에서 Linux Bridge (vm switch) 설정하기
  4. pci express 장치 할당
  5. VM 설치
  6. xpenology 설치
  7. VM 내에서 windows 11 제한사항
  8. LVM-thin
  9. 총 결과

  • Debian 설치 Debian 설치는 12 bookwarm 기준으로 진행하며 아래 웹 사이트를 통해 설정하여 진행할 수 있습니다.

Install Proxmox VE on Debian 12 Bookworm - Proxmox VE

위 본문에서 host 설정시 NIC 가 여러개인 경우, 주 네트워크(가능하면 인터넷 네트워크)에만 설정해두고, 보조 네트워크 혹은 단독 네트워크도 등록하는 것은 지양해주는 편이 좋습니다. 추후 linux bridge 설정할 때에 보조 네트워크를 쉽게 물려야 하는데, 보조 네트워크에 장치가 등록되어 있으면 장치 등록 해지하고 bridge에 물려서 설정하는 등의 삽질이 들어갑니다. 그리고 당연히 인터넷 연결을 필요로 합니다.

  1. Debian을 통해 proxmox VE 로 변경

위 링크에서 아래 본문을 잘 확인해주시기 바랍니다.

recommended는 os 선택지를 grub 내에서 남겨놓는걸 없애버리는 걸 의미하므로, 그냥 해주셔야 합니다.

proxmox를 host로 설정할 정도면 리눅스 멀티부팅을 할 이유는 없을테니

참고: wifi 드라이버가 proxmox VE에 설치되어 있지 않으므로, wired nic(랜카드)를 사용해서 연결하거나 별도의 작업을 진행하여 wifi 드라이버를 통해 proxmox를 실행할 수 있도록 해야 합니다.

  1. proxmox에서 Linux Bridge(esxi 같으면 vm switch) 설정하기

Proxmox VE 를 installation file로 설치한 경우 기본 NIC를 자동으로 bridge로 설정하여 연결합니다. 다만 debian을 통한 설치는 자동으로 설정되지 않으므로, nic를 bridge를 설정해주셔야 합니다.

  • 예시

3nic (2개는 메인 망, 1개는 10G 망-pc 간 direct connection)

주의사항: 설정에 실패하는 경우 웹 접근이 어려워지고 저 gui 설정을 이제 cli로 pc에서 설정해야 합니다.

당연히 물리적 접근이 안되면 매우 곤란한 상황에 처해질 수 있습니다.

gui가 싫거나 실패하거나 기타 여러 이유로 안되는 경우 아래 링크와 이미지를 참고해주세요

Network Configuration - Proxmox VE

설치당시 실행한 nic 카드들 목록

enp5s0 (RealTek 2.5G nic)

enpls0f0 (X550 10G -1 )

enpls0f1 (X550 10G -2 )

enp5s0 은 온보드 랜으로 direct로 연결시킨 nic인데, 어떠한 이유로 스위치가 잘 작동하지 않거나

pci express로 장착된 NIC를 교체했을 때 연결할 네트워크 접근 경로로서 사용합니다.

dhcp로 설정해도 괜찮지만 dhcp를 잘 할당받지 못하거나, dhcp가 없는 단독망 환경 등에서 설정할 수 있기 때문에 ip 할당을 해놓는 것을 추천해 드립니다.

enpls0f0은 vmbr0 으로 할당한 브릿지에 192.168.0.x대역으로 장치를 passthrough 하여 network에 할당한 상태입니다.

브릿지 설장할 네트워크 장치를 물려야 하며, 주의사항으로는 실제 nic는 활성화 되지 않은 상태로 두어야 합니다.

enpls0f1 역시 vmbr1v에 192.168.1.x 대역으로 할당하는 용도로 사용합니다.

게이트웨이 설정이 되어있지 않은데 10G 라우터나 스위치는 없는 단독망이기 떄문에 그렇습니다.

없어도 ip만 guest나 외부 장치에 잘 충돌없이 집어넣으면 작동합니다.

  • sudo systemctl restart network-service 등 설정 완료 후 network 관련 서비스 재시작을 해야 합니다.
  • 당연히 저 파일은 sudo로 편집해야 합니다.
  1. pci express 장치 passthrough

대부분의 유저들에겐 iommu는 중요합니다. 그리고 몇 가지 설정들을 해야 하므로 아래의 글을 참고해주세요.

https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/ (github.com)

Configuring Proxmox

gpu passthrough가 아니면 위 링크 글에서 저기 까지만 진행

shell에서 lspci로 장치 확인한 다음 관련 장치들 gui에서 할당하거나 할 수 있음.

당연한 이야기지만 이미 할당된 장치에는 사용하면 안돼며 그래픽카드의 경우 proxmox host에 있는 gpu를 치우고 vm에 할당해줘야 합니다. ( 재부팅시 gpu에 연결된 화면 출력 선을 뽑아주시는게 좋습니다. ) 여러 방법이 있는데 위 링크에서 마저 나머지 작업을 진행하시면 됩니다.

windows의 경우 wifi direct를 기반으로 한 TV 영상전송 혹은 다른 기능들을 쓸 수 있기 때문에 어짜피 작동하지 않는 wlan 카드가 있다면 windows guest에 할당해 쓸 수 있습니다.

iommu랑 드라이버 설정만 좀 건든 다음엔 gui로 별로 어렵지 않게 gpu passthrough 설정이나 pci passthrough 설정이 가능하며, nvme 장치를 direct로 할당하여 passthrough 해 가지고 바로 부팅시킬 수도 있습니다. 그래서 기존 nvme 디스크를 쉽게 부팅하여 연결할 수 있습니다.

  • 스냅샷 기능이 필요하지 않고, 추후 베어메탈로 이동할 nvme디스크 같은 경우 위 방법으로 진행하도 되나 windows 10/11의 경우는 추천하지 않습니다. (2023-07 기준)

참고: 설정에서 pci-express로 할당하셔야 합니다.

  1. VM 설치

VM은 여러 방법으로 설치할 수 있으나 여기서는 윈도우 11은 nvme pci express 장치에 직접 설치

다른 OS의 경우 iso 를 통해 업로드 한 디스크 이미지를 lvm이나 디렉토리에 설치한 예시를 보여드리려 합니다.

DataCenter -> Node -> Storage 항목에서 디렉토리 디스크 (proxmox host 역할을 맡은 디스크가 기본적으로 디렉토리로 취급됩니다.)를 접근해 iso 이미지를 업로드하여 사용할 수 있습니다.

NVMexpress 디스크의 경우 pci - e 장치를 패스스루 하여 ( 4 번의 passthrough 참고 ) 별도의 디스크 할당 없이 자체적으로 이용 가능합니다. 아니면 LVM 혹은 LVM thin, Directory 등으로 할당하여 사용해도 됩니다.

node 에서 disk 목록들을 보고 초기화 후 다양한 방식으로 할당 가능하고 할당하고 나서 VM을 생성할 때 쓸 수 있습니다. 아래처럼 아무 스토리지 하나에다 할당해주시면 됩니다.

요새 최신 리눅스도 다 efi 부팅 지원하니 efi 하시는게 좋습니다.(단, 커스텀 빌드한 부트 드라이브나 패스스루 장치가 efi 부팅 안되는 장치인지 확인, 반대로 csm없는 pci 장치를 패스스루 한 경우 efi 부팅만 해놔야 함) 리눅스의 경우 TPM 안켜도 무방하고 윈도우의 경우 TPM 을 켜야 합니다.

EFI 스토리지는 가능하면 host 디스크에 넣는게 정신건강에 유익합니다.

  1. VM 내에서 windows 11 제한사항

cpu host 설정을 한 상태에서 nvme direct passthrough를 통해 직접 연결을 진행했으나 hyper-V 기능을 켜는 경우 Nested Virtualization 과 관련한 문제가 있는 모양인지 부팅 실패가 무조건 발생합니다.

이는 윈도우가 현재 사실상 윈도우의 탈을 쓴 hyper-V 기반의 OS 인 점이 가장 큰 이유인듯 합니다. vmware 나 다른 앱플레이어를 실행하는게 어렵고 안드로이드 스튜디오 내의 가상 os 설치에도 지장이 있으므로 관련 기능 (WSL 포함)을 하고자 한다면 포기하는 편이 좋습니다.

물론 윈도우 11에선 가상 pc인 경우 설치 단계에서 알아서 관련 기능을 다 꺼버리기 때문에 특정 프로그램이나 앱플레이어가 설정을 건드리지 않는 이상 무한부팅 오류를 만들진 않습니다.

참고로 이 문제가 인텔 13세대라는 비교적 최신 cpu라서 발생하는 문제일 수도 있습니다. 추후 패치나 업그레이드 혹은 다른 여러 문제가 해결되면 update 기록을 남길 예정입니다.

gpu의 경우 hw decode / encode 기능을 테스트하진 않았습니다만, 유투브 정도 보는데에는 큰 문제가 발생하진 않았으므로 특별한 가속을 요구하는 것이 아니라면 굳이 필요하진 않을 듯 합니다

  • nested Virtualization을 잘 사용할 수 있는지 테스트 하는 방법이 있는데, 윈도우 11 기준 코어 격리를 켜서 통과하면 됩니다. 안되면 알아서 풀어버리므로 복원도 쉽게 됩니다.
  • 아니면 윈도우 기능에서 hyper-v를 설정하면 됩니다. (pro만 가능)

이런 기능을 되는지 안되는지 설정할려면 미리 시스템 복원 지점을 만들어 설정해주세요. 앱플레이어 설치로 테스트 하는 것은 권장하지 않습니다. (무슨일이 있어도 설정해놓는 프로그램이므로, 시스템 복원을 진행해도 안풀립니다.)

  1. xpenology 설치 HDD 데이터 2개는 disk passthrough 상태로, 2개는 LVM thin으로 묶고, 1개의 SSD는 LVM-thin으로 설정한 다음 HDD > SSD로 디스크를 동기화하여 설정 설치하는 방법은 다양하나 아래의 글을 참고해주세요. 이 방식이 개인적으론 가장 적절했습니다.서버포럼 - DSM 7.2v) ARPL-i18n으로 헤놀로지 부트로더 빌드하기. (svrforum.com)
  2. LVM-thin

LVM-thin의 경우 공유된 확장성 좋은 디스크층 이라고 보면 되는데, 사용해보니 nas의 경우 100MB이상의 데이터 통신이 많아 관련 IO 오버헤드가 꽤 심한 편 입니다. SATA SSD를 사용하시는 경우 250MB 정도의 속도가 나왔으니 참고하면 좋을 듯 합니다. 대신 확장성은 좀 더 유연하고, passthrough 없이 사용하므로 한 장치에 여러 vm을 할당하여 사용할 수 있습니다. 데이터용 저장 장치는 규모에 맞춘 크기 조정이 중요한게 아니면 개인적으론 그냥 패스스루 추천. 아니면 저런 성능 문제를 덜 느낄 정도로 규모를 키우면 문제가 없을 겁니다.

  1. 총 결과

윈도우 11 pro + vmware workstation 으로 만든 수상한 서버를 13세대 intel 위주로 다시 구축했는데, 타이밍이 proxmox 8 나오기 직전에 이걸 하느라 삽질이 은근 많았습니다. 심지어 대부분의 홈랩의 경우 8~10세대 intel 시스템 위주로 쓰시는지 12세대의 해결책은 딱히 안보이고, proxmox 커뮤니티는 윈 11 hyper-v 안되는거 호소하는 글이 좋좋 검색되던데 다들 잘된다 하고 질문자만 바보되는 사례가 종종 있던데; SR-IOV vgpu 있으면 vm에 gpu 물리기 편할텐데 이거 작업한 시점에서 수상하게 실력있는 애니프사가 만든 모듈이 make 안되는 커널이라 나중에 또 따로 필요하면 설정해야 합니다;;

나중에 이 글 보고 삽질 덜하고 나중에 덜 삽질하고자 의식의 흐름대로 글을 쓴거라 거의 신세한탄글 입니다.

처음 써보는 깃헙 블로그 글

목차는 왜 고장났대