version 8.2.2, Thu Apr 25 09:24:16 CEST 2024
목적
지난 2년 동안 Proxmox를 홈서버에서 정말 잘 사용해 왔다. 하지만 한 번도 제대로 공식 가이드를 읽어본 적이 없고, 전부 영어로 돼 있어 번역도 함께 진행해 보고자 한다.
1. 소개
Proxmox VE는 가상 머신과 컨테이너를 실행하기 위한 플랫폼입니다. Debian Linux를 기반으로 하며, 완전한 오픈 소스입니다. 최대의 유연성을 위해 두 가지 가상화 기술을 구현했습니다 - 커널 기반 가상 머신(KVM)과 컨테이너 기반 가상화(LXC)입니다.
주요 설계 목표 중 하나는 관리를 최대한 쉽게 만드는 것이었습니다. Proxmox VE는 단일 노드에서 사용할 수 있으며, 여러 노드로 클러스터를 구성할 수도 있습니다. 모든 관리 작업은 웹 기반 관리 인터페이스를 통해 수행할 수 있으며, 초보자도 몇 분 안에 Proxmox VE를 설치하고 설정할 수 있습니다.
1.1. 중앙 관리
많은 사람들이 단일 노드로 시작하지만, Proxmox VE는 대규모 클러스터 노드 집합으로 확장할 수 있습니다. 클러스터 스택은 완전히 통합되어 있으며 기본 설치와 함께 제공됩니다.
-
독특한 멀티 마스터 설계
통합된 웹 기반 관리 인터페이스는 모든 KVM 게스트와 Linux 컨테이너는 물론 전체 클러스터에 대한 명확한 개요를 제공합니다. GUI를 통해 VM과 컨테이너, 스토리지 또는 클러스터를 쉽게 관리할 수 있습니다. 별도의 복잡하고 비용이 많이 드는 관리 서버를 설치할 필요가 없습니다.
-
Proxmox 클러스터 파일 시스템 (pmxcfs)
Proxmox VE는 구성 파일을 저장하기 위한 데이터베이스 기반 파일 시스템인 Proxmox 클러스터 파일 시스템 (pmxcfs)을 사용합니다. 이를 통해 수천 대의 가상 머신 구성을 저장할 수 있습니다. corosync를 사용하면 이러한 파일은 모든 클러스터 노드에서 실시간으로 복제됩니다. 파일 시스템은 디스크의 영구 데이터베이스 내부에 모든 데이터를 저장하지만, 데이터 복사본은 최대 30MB의 저장 용량을 제공하는 RAM에 저장됩니다. 이는 수천 개의 VM을 저장하기에 충분합니다.
Proxmox VE는 이 독특한 클러스터 파일 시스템을 사용하는 유일한 가상화 플렛폼입니다.
-
웹 기반 관리 인터페이스
Proxmox VE는 사용하기 쉽습니다. 관리 작업은 포함된 웹 기반 관리 인터페이스를 통해 수행할 수 있습니다. 별도의 관리 도구나 대용향 데이터베이스가 있는 추가 관리 노드를 설치할 필요가 없습니다. 멀티 마스터 도구를 사용하면 클러스터의 모든 노드에서 전체 클러스터를 관리할 수 있습니다. JavaScript 프레임워크(ExtJS)를 기반으로 하는 중앙 웹 기반 관리를 통해 모든 기능을 GUI에서 제어하고 각 노드의 기록 및 시스템 로그를 관리할 수 있습니다. 여기에는 백업 또는 복원 작업 실행, 실시간 마이그레이션 또는 고가용성(HA) 트리거 활동이 포함됩니다.
-
커맨드라인
Unix 셸이나 Windows Powershell에 익숙한 고급 사용자를 위해 Proxmox VE는 가상 환경의 모든 구성 요소를 관리할 수 있는 커맨드라인 인터페이스를 제공합니다. 이 커맨드라인 인터페이스에는 지능형 탭 완성 기능과 UNIX 메뉴얼 페이지 형식의 전체 문서를 제공합니다.
-
REST API
Proxmox VE는 RESTful API를 사용합니다. 기본 데이터 형식으로 JSON을 선택했으며, 전체 API는 JSON Schema를 사용하여 정의됩니다. 이를 통해 맞춤형 호스팅 환경과 같은 타사 관리 도구를 빠르고 쉽게 통합할 수 있습니다.
-
역할 기반 관리
역할 기반 사용자 및 관리를 사용하여 모든 객체(VM, 스토리지, 노드 등)에 대한 세부적인 접근 권한을 정의할 수 있습니다. 이를 통해 권한을 정의하고 객체에 대한 접근을 제어할 수 있습니다. 이 개념은 접근 제어 목록(ACL)으로도 알려져 있습니다. 각 권한은 특정 경로에 대한 사용자(또는 그룹)와 역할(권한 집합)을 지정합니다.
-
인증 영역
Proxmox VE는 Microsoft Active Directory, LDAP, Linux PAM 표준 인증 또는 내장된 Proxmox VE 인증 서버와 같은 다양한 인증 소스를 지원합니다.
1.2. 유연한 스토리지 옵션
Proxmox VE의 스토리지 모델은 매우 유연합니다. 가상 머신 이미지는 하나 이상의 로컬 스토리지나 NFS와 같은 공유 스토리지 또는 SAN에 저장할 수 있습니다. 제한이 없으며, 원하는 만큼 많은 스토리지 정의를 구성할 수 있습니다. Debian Linux에서 사용 가능한 모든 스토리지 기술을 사용할 수 있습니다.
가상 머신을 공유 스토리지에 저장하는 주요 이점 중 하나는 클러스터의 모든 노드가 VM 디스크 이미지에 직접 접근할 수 있어, 실행 중인 머신을 다운타임 없이 라이브 마이그레이션 할 수 있다는 점입니다.
현재 지원하는 네트워크 스토리지 유형은 다음과 같습니다:
- LVM Group (iSCSI target을 통한 네트워크 백업)
- iSCSI target
- NFS Share
- CIFS Share
- Ceph RBD
- Directly use iSCSI LUNs
- GlusterFS
지원하는 로컬 스토리지 유형은 다음과 같습니다:
- LVM Group (블록 디바이스, FC 디바이스, DRBD 등과 같은 로컬 백업 장치)
- Directory (기존 파일 시스템 저장소)
- ZFS
1.3. 통합 백업 및 복원
통합 백업 도구 (vzdump)는 실행 중인 컨테이너와 KVM 게스트의 일관된 스냅샷을 생성합니다. 기본적으로 VM 또는 CT 데이터의 아카이브를 생성하며, 여기에는 VM/CT 구성 파일도 포함됩니다.
KVM 라이브 백업은 NFS, CIFS, iSCSI LUN, Ceph RBD에 있는 VM 이미지 등 모든 스토리지 유형에서 작동합니다. 새로운 백업 형식은 VM 백업을 빠르고 효율적으로 저장할 수 있도록 최적화되어 있습니다.(희소 파일, 비순차 데이터, 최소화된 I/O)
1.4. 고가용성 클러스터
멀티 노드 Proxmox VE HA 클러스터는 고가용성 가상 서버를 정의할 수 있게 해줍니다. Proxmox VE HA 클러스터는 검증된 Linux HA 기술을 기반으로 하여 안정적이고 신뢰할 수 있는 고가용성 서비스를 제공합니다.
1.5. 유연한 네트워킹
Proxmox VE는 브릿지 네트워킹 모델을 사용합니다. 모든 VM은 각 게스트의 가상 네트워크 케이블이 모두 같은 스위치에 연결된 것처럼 하나의 브릿지를 공유할 수 있습니다. VM을 외부와 연결하기 위해 브릿지는 물리적 네트워크 카드에 연결되고 TCP/IP 구성이 할당됩니다.
추가적인 유연성을 위해 VLAN(IEEE 802.1q) 및 네트워크 본딩/집계가 가능합니다. 이를 통해 Proxmox VE 호스트를 위한 복잡하고 유연한 가상 네트워크를 구축하여 Linux 네스워크 스택의 모든 기능을 활용할 수 있습니다.
1.6. 통합 방화벽
통합 방화벽을 통해 VM 또는 컨테이너 인터페이스에서 네트워크 패킷을 필터링할 수 있습니다. 일반적인 방화벽 규칙 세트를 “보안 그룹”으로 그룹화할 수 있습니다.
1.7. 하이퍼 컨버지드 인프라(HCI)
Proxmox VE는 컴퓨팅, 스토리지 및 네크워킹 자원을 긴밀하게 통합하고, 고가용성 클러스터, 백업/복원 재해 복구를 관리하는 가상화 플랫폼입니다. 모든 구성 요소는 소프트웨어 정의이며 서로 호환됩니다.
따라서 중앙 웹 관리 인터페이스를 통해 이들을 단일 시스템처럼 관리할 수 있습니다. 이러한 기능들은 Proxmox VE를 오픈 소스 하이퍼 컨버지드 인프라를 배포하고 관리하기 위한 이상적인 선택으로 만듭니다.
1.7.1. Proxmox VE를 통한 하이퍼 컨버지드 인프라(HCI)의 이점
하이퍼 컨버지드 인프라(HCI)는 인프라 수요는 높지만 관리 예산이 적을 때의 배포 환경, 원격 및 지사 환경과 같은 분산 설정, 또는 가상 사설 및 공용 클라우드에 특히 유용합니다.
HCI는 다음과 같은 장점을 제공합니다:
- 확장성: 컴퓨팅, 네트워킹 및 스토리지 장치를 원활하게 확장할 수 있습니다.(예: 서버와 스토리지를 서로 독립적으로 빠르고 쉽게 확장 가능)
- 저비용: Proxmox VE는 오픈 소스이며, 컴퓨팅, 스토리지, 네트워킹, 백업 및 관리 센터와 같은 필요한 모든 구성 요소를 통합합니다. 이는 비용이 많이 드는 컴퓨팅/스토리지 인프라를 대체할 수 있습니다.
- 데이터 보호 및 효율성: 백업 및 재해 복구와 같은 서비스가 통합되어 있습니다.
- 단순성: 간편한 구성과 중앙 집중식 관리가 가능합니다.
- 오픈 소스: 벤더에 종속되지 않습니다.
1.7.2. 하이퍼 컨버지드 인프라: 스토리지
Proxmox VE는 하이퍼 컨버지드 스토리지 인프라를 배포하기 위한 통합 지원을 제공합니다. 예를 들어, 웹 인터페이스만을 사용하여 다음 두 가지 스토리지 기술을 배포하고 관리할 수 있습니다:
-
Ceph: 자가 치유 및 자가 관리가 가능한 신뢰할 수 있고 고도고 확장 가능한 공유 스토리지 시스템입니다. Proxmox VE 노드에서 Ceph 서비스를 관리하는 방법을 확인하십시오.
-
ZFS: 데이터 손상에 대한 광범위한 보호 기능, 다양한 RAID 모드, 빠르고 저렴한 스냅샷 등의 기능을 제공하는 통합된 파일 시스템 및 논리적 볼륨 관리자입니다. Proxmox VE 노드에서 ZFS의 강력한 기능을 활용하는 방법을 알아보십시오.
이 외에도 Proxmox VE는 다양한 추가 스토리지 기술을 통합할 수 있는 지원을 제공합니다. 이에 대한 자세한 내용은 스토리지 관리자 챕터에서 확인할 수 있습니다.
1.8. 왜 오픈 소스인가
Proxmox VE는 Linux 커널을 사용하며 Debian GNU/Linux 배포판을 기반으로 합니다. Proxmox VE의 소스 코드는 GNU Affero General Public License, 버전 3에 짜라 공개됩니다. 이는 언제든지 소스 코드를 검사하거나 프로젝트에 직접 기여할 수 있음을 의미합니다.
Proxmox에서는 가능한 한 오픈 소스 소프트웨어를 사용할 것을 약속합니다. 오픈 소스 소프트웨어를 사용하면 모든 기능에 완전히 접근할 수 있으며, 높은 보안성과 신뢰성을 보장합니다. 우리는 모든 사람이 소프트웨어의 소스 코드에 접근하여 실행하고, 이를 기반으로 빌드하거나, 프로젝트에 변경사항을 제출할 권리가 있어야 한다고 생각합니다. 모든 사람이 기여하도록 권장되며, Proxmox는 제품이 항상 전문적인 품질 기준을 충족하도록 보장합니다.
오픈 소스 소프트웨어는 또한 비용을 낮추고 핵심 인프라를 단일 벤더에 종속되지 않게 합니다.
1.9. Proxmox VE의 이점
- 오픈 소스 소프트웨어
- 벤더 종속 없음
- Linux 커널
- 빠른 설치와 쉬운 사용
- 웹 기반 관리 인터페이스
- REST API
- 활성화된 큰 커뮤니티
- 낮은 관리 비용 및 간단한 배포
1.10. 도움 받기
1.10.1. Proxmox VE 위키
주요 정보 출처는 Proxmox VE 위키 입니다. 이 위키는 참고 문서와 사용자 기여 콘텐츠를 결합하여 제공합니다.
1.10.2. 커뮤니티 지원 포럼
Proxmox VE는 완전히 오픈 소스이므로, 사용자들이 Proxmox VE 커뮤니티 포럼을 통해 지식을 공유하고 토론할 것을 항상 권장합니다. 포럼은 Proxmox 지원팀이 관리하며, 전 서계의 많은 사용자 기반을 보유하고 있습니다. 이러한 대규모 포럼은 정보를 얻기 위한 훌륭한 장소입니다.
1.10.3. 메일링 리스트
메일링 리스트를 통해 Proxmox VE 커뮤니티와 이메일로 빠르게 소통할 수 있습니다.
- 사용자 메일링 리스트: Proxmox VE User List
Proxmox VE는 완전히 오픈 소스이며 기여를 환영합니다! 개발자들의 주요 소통 채널은 다음과 같습니다.
- 개발자 메일링 리스트: Proxmox VE Development Discussion
1.10.4. 상업적 지원
Proxmox Server Solutions GmbH는 Proxmox VE 구독 서비스 플랜으로 이용할 수 있는 엔터프라이즈 지원도 제공합니다. 구독한 모든 사용자는 Proxmox VE 엔터프라이즈 저장소에 접근할 수 있으며, 기본, 표준 또는 프리미엄 구독을 통해 Proxmox 고객 포털에도 접근할 수 있습니다. 고객 포털은 Proxmox VE 개발자로부터 보장된 응답 시간을 제공하는 도움말과 지원을 제공합니다.
대량 할인 또는 일반적인 추가 정보가 필요하다면 [email protected]으로 문의하십시오.
1.10.5. 버그 트래커
Proxmox는 공개 버그 트래커를 운영합니다. 문제가 발생하면 그곳에 보고서를 제출하십시오. 문제는 버그일 수도 있고 새로운 기능이나 개선 사항 요청일 수도 있습니다. 버그 트래커는 문제를 추적하는 데 도움을 주며, 문제가 해결되면 알림을 보냅니다.
1.11. 프로젝트 역사
이 프로젝트는 2007년에 시작되었고, 2008년에 첫 번째 안정 버전이 출시되었습니다. 당시 우리는 컨테이너를 위해 OpenVZ를, 가상 머신을 위해 KVM을 사용했습니다. 클러스터링 기능은 제한적이었고, 사용자 인터페이스는 간단한 서버 생성 웹 페이지였습니다.
그러나 우리는 빠르게 새로운 기능을 개발하였으며, Corosync 클러스터 스택을 사용하고 새로운 Proxmox 클러스터 파일 시스템(pmxcfs)을 도입한 것은 큰 진전이었습니다. 이로 인해 사용자는 클러스터의 복잡성을 완전히 숨길 수 있었습니다. 16개의 노드 클러스터를 관리하는 것이 단일 노드를 관리하는 것만큼 간단해졌습니다.
또한 우리는 JSON-Schema로 작성된 완전한 선언적 명세를 가진 새로운 REST API를 도입했습니다. 이를 통해 다른 사람들이 Proxmox VE를 그들의 인프라에 통합할 수 있었으며, 추가적인 서비스를 제공하는 것이 쉬워졌습니다.
새로운 REST API 덕분에 기존 사용자 인터페이스를, JavaScript를 사용하는 현대적인 HTML5 어플리케이션으로 교체할 수 있었습니다. 또한, 오래된 Java 기반 VNC 콘솔 코드를 noVNC로 교체했습니다. 이제 웹 브라우저만 있으면 VM을 관리할 수 있습니다.
다양한 스토리지 유형에 대한 지원도 또 다른 큰 과제였습니다. 특히, Proxmox VE는 2014년에 기본적으로 ZFS on Linux를 제공한 첫 번째 배포판이었습니다. 또 다른 이정표는 하이퍼바이저 노드에서 Ceph 스토리지를 실행하고 관리할 수 있는 기능이었습니다. 이러한 설정은 매우 비용 효율적입니다.
우리가 시작할 때는 KVM에 대한 상업적 지원을 제공하는 최초의 회사 중 하나였습니다. KVM 프로젝트 자체는 지속적으로 발전했으며, 현재는 널리 사용되는 하이퍼바이저입니다. 각 릴리즈마다 새로운 기능이 추가됩니다. 우리는 모든 스토리지 유형에서 스냅샷 백업을 생성할 수 있는 KVM 라이브 백업 기능을 개발했습니다.
버전 4.0에서 가장 눈에 띄는 변화는 OpenVZ에서 LXC로의 이동이었습니다. 이제 컨테이너는 깊이 통합되어 있으며, 가상 머신과 동일한 스토리지 및 네트워크 기능을 사용할 수 있습니다.
1.12. Proxmox VE 문서 개선
Proxmox VE 문서에 대한 기여와 개선은 항상 환영합니다. 기여하는 방법에는 여러 가지가 있습니다.
문서에서 오류를 발견하거나 개선할 부분이 있다고 생각되면, Proxmox 버그 트래커에 버그를 등록하여 수정 제안을 해주십시오.
새로운 콘텐츠를 제안하고 싶다면, 다음 옵션 중 하나를 선택하십시오:
- 위키: 특정 설정, 사용 방법 가이드, 또는 튜토리얼에 대한 기여는 위키가 적절한 옵션입니다.
- 참고 문서: 모든 사용자에게 도움이 될 일반적인 콘텐츠는 참고 문서에 기여하는 것이 좋습니다. 여기에는 Proxmox VE 기능의 설치, 구성, 사용 및 문제 해결 방법에 대한 모든 정보가 포함됩니다. 참고 문서는 asciidoc 형식으로 작성됩니다. 문서를 편집하려면 git 저장소를 클론해야 합니다. git://git.proxmox.com/git/pve-docs.git; 그런 다음 README.adoc 문서를 따르십시오.
Proxmox VE 코드베이스 작업에 관심이 있다면, 개발자 문서 위키 글이 시작하는 방법을 안내해 드릴 것입니다.
1.13. Proxmox VE 번역
Proxmox VE 사용자 인터페이스는 기본적으로 영어로 제공됩니다. 그러나 커뮤니티의 기여 덕분에 다른 언어로의 번역도 가능합니다. 새로운 언어 추가, 최신 기능 번역, 불완전하거나 일관성이 없는 번역 개선에 대한 지원을 환영합니다.
번역 파일 관리를 위해 gettext를 사용합니다. Poedit과 같은 도구는 번역 파일을 편집하기 위한 멋진 사용하 인터페이스를 제공하지만, 사용하기 편한 편집기를 사용해도 됩니다. 번역에는 프로그래밍 지식이 필요하지 않습니다.
1.13.1. git을 사용한 번역
언어 파일은 git 저장소로 제공됩니다. git에 익숙한 경우, 개발자 문서에 따라 기여하십시오.
새 번역을 만들려면 다음을 수행하십시오.(
git clone git://git.proxmox.com/git/proxmox-i18n.git
cd proxmox-i18n
make init-<LANG>.po
기존에 있던 언어를 편집하려면 원하는 편집기를 사용하여 다음을 수행하십시오.
poedit <LANG>.po
1.13.2 git 없이 번역
git에 익숙하지 않아도 Proxmox VE 번역에 기여할 수 있습니다. 시작하려면 여기에서 언어 파일을 다운로드하십시오. 개선하고자 하는 언어를 찾아 해당 언어 파일의 “raw” 링크를 우클릭하고 “다른 이름으로 저장…”을 선택하십시오. 파일을 변경한 후 최종 번역을 서명된 기여자 라이센스 계약서와 함께 office(at)proxmox.com으로 직접 보내십시오.
1.13.3 번역 테스트
번역을 Proxmox VE에서 사용하려면 먼저 .po 파일을 .js 파일로 변환해야 합니다. 같은 저장소에 있는 다음 스크립트를 호출하여 이 작업을 수행할 수 있습니다:
./po2js.pl -t pve xx.po >pve-lang-xx.js
생성된 파일 pve-lang-xx.js
를 Proxmox 서버의 /usr/share/pve-i18n
디렉토리에 복사하여 테스트할 수 있습니다.
또는 저장소의 루트에서 다음 명령을 실행하여 deb 패키지를 빌드할 수 있습니다.
make deb
중요: 이러한 방법 중 어느 것이든 작동하려면 시스템에 다음 perl 패키지가 설치되어 있어야 합니다. Debian/Ubuntu에서는 다음과 같이 설치할 수 있습니다:
apt-get install perl liblocale-po-perl libjson-perl
1.13.4. 번역 보내기
완성된 번역(.po 파일)을 서명된 기여자 라이센스 계약서와 함께 office(at)proxmox.com으로 Proxmox 팀에 보낼 수 있습니다. 개발 경험이 있는 경우, 패치로 작성하여 Proxmox VE 개발 메일링 리스트에 보낼 수도 있습니다. 자세한 내용은 개발자 문서를 참조하십시오.
후기
지금까지는 1.2.에서 ZFS 로컬 스토리지에 VM 디스크 이미지를 올려서 사용했고, 큰 문제는 없었다. 하지만 최근에 인텔 N100 노드를 하나 추가하면서 클러스터링 작업을 진행하면서 마이그레이션 기능도 잘 사용하고 있다. 마이그레이션 작업은 VM/CT를 중단시키는 과정이 필수적인데, 작은 크기의 VM/CT를 마이그레이션 할때야 금방 가능하지만, 용량이 커진다면 문제가 발생할 것 같다. 그리고 이 방식은 양쪽 노드의 디스크 공간에 여유가 있어야 할 것이다. 하지만 CIFS 스토리지를 VM 이미지, CT에 사용한다면 이러한 다운타임을 해결할 수 있다고 하니 TrueNAS에 SSD만으로 구성된 전용 스토리지를 만들고 이것을 이용해 VM 이미지, CT를 저장하는 방법을 적용해봐야 겠다.
또한 현재 여러 지인에게 Proxmox 계정을 생성해 주고, 서버를 사용할 수 있게 해줬는데, 결국에 reverse proxy나 제대로 된 네트워크 셋팅을 하려면 pfsense로의 접근도 필요하다, 하지만 이때 적절한 권한을 매번 생성하고 관리해 주는 것이 굉장히 귀찮고 어려웠다. Proxmox가 REST API를 사용하여 다른 관리 도구로 쉽게 통합될 수 있다고 하니, pfsense의 API도 적절히 사용하고 Terraform을 이용해서 종합적으로 제어할 수 있는 환경을 만들어보고 싶다.
참고
Proxmox VE Administration Guide
글의 저작권과 관련된 사항은 Proxmox의 라이센스를 따릅니다.