가상화에 대한 이해와 Proxmox
가상화를 공부하며 개인 미디어 서버를 구축해본 내용을 정리하여 가상화의 개념과 Proxmox 정보를 작성합니다.
우선 Proxmox에 대해 알기 전에 가상화에 대한 기본 개념을 설명하려고 합니다.
가상화란?
하나의 물리적 시스템 위에 논리적인 시스템 객체로 추상화하여 여러개의 시스템을 실행가능하게하는 기술입니다. 물리적 시스템 하드웨어의 일부에서만 실행됨에도 불구하고, 각 객체는 자체 운영체제를 실행하며 독립된 시스템인 것처럼 작동합니다.
쉽게말해 윈도우 운영체제 위에서 리눅스 운영체제를 실행하거나 도커 등의 컨테이너를 사용하는것이 가상화에 해당됩니다.
일반적으로 가상화는 크게 3가지 형태로 분류됩니다.
- Type1 / Native or Bare-Metal 하이퍼바이저
Type1 |
---|
게스트 운영체제 |
하이퍼바이저 |
하드웨어 |
- 운영체제가 프로그램을 제어하듯이 하이퍼바이저가 하드웨어에서 직접 실행되어 게스트 운영체제는 별도의 호스트 운영체제가 없기 때문에 오버헤드가 적고, 하드웨어를 직접 제어하여 리소스를 효율적으로 사용할 수 있습니다. 하지만 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리를 위한 컴퓨터나 콘솔이 필요합니다.
- 전가상화와 반가상화로도 분류됩니다.
- 전가상화(Full Virtualization)
- 하드웨어를 완전히 가상화 하는 방식으로 HVM(Hardware Virtual Machine) 이라고도 불립니다.
- 하드웨어를 완전히 가상화하기 때문에 게스트 운영체제의 튜닝이 필요없습니다.
- 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느립니다.
- 반가상화(Para Virtualization)
- 전가상화와 달리 하드웨어의 일부만 가상화합니다. 성능 저하의 문제를 해결하기 위해 하이퍼 콜(Hyper Call)을 통해 하이퍼바이저에게 직접 요청을 보낼 수 있습니다.
- 전가상화에 비해 성능이 빠릅니다.
- 하이퍼바이저에게 Hyper Call 요청을 할 수 있도록 각 게스트 운영체제의 커널을 튜닝할 필요가 있기 때문에 오픈소스 OS가 아니라면 반가상화를 이용하기 쉽지 않습니다.
- 전가상화(Full Virtualization)
대표적인 Type1 하이퍼바이저
- KVM
- Xen
- Citrix Hypervisor
- VMware ESXi
- Microsoft Hyper-V
- Proxmox
- Type2 / Hosted 하이퍼바이저
Type2 |
---|
게스트 운영체제 |
하이퍼바이저 |
호스트 운영체제 |
하드웨어 |
- 호스트 운영체제에 전적으로 의존합니다. 기본 운영 체제에서 실행되는 하이퍼 바이저가 안전하더라도 기본 운영 체제의 모든 문제는 전체 시스템에 영향을 줍니다. 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없습니다. 운영체제위에 운영체제가 얹히는 방식이기 때문에 오버헤드가 클 수 있습니다.
대표적인 Type2 하이퍼바이저
- bhyve
- QEMU
- VirtualBox
- VMware Workstation
- Parallels Desktop
- 컨테이너
가상 머신 | 컨테이너 |
---|---|
App | |
Bin/Library | App |
게스트 운영체제 | Bin/Library |
하이퍼바이저 | 컨테이너 엔진 |
호스트 운영체제 | 호스트 운영체제 |
하드웨어 | 하드웨어 |
- 호스트 운영체제 위에 컨테이너 엔진을 설치하여 프로세스를 격리하는 방식으로 컨테이너를 나누어 사용합니다. 컨테이너는 애플리케이션과 애플리케이션 동작을 위한 라이브러리 등으로 구성되기 때문에 이를 각각 개별 서버처럼 사용이 가능합니다.
대표적인 컨테이너
- LXC
- Docker
- CRI-O
- OCI
- Kata Container
Proxmox VE란? (Proxmox Virtual Environment)
Proxmox 공식 홈페이지에서는 아래와 같이 설명하고 있습니다.
Proxmox VE(이하 Proxmox)는 엔터프라이즈 가상화를 위한 완벽한 오픈 소스 서버 관리 플랫폼입니다. 이 플랫폼은 단일 플랫폼에 KVM 하이퍼바이저와 소프트웨어 정의 스토리지 및 네트워킹 기능인 Linux 컨테이너(LXC)를 긴밀하게 통합합니다. 통합 웹 기반 사용자 인터페이스를 통해 가상 머신과 컨테이너, 클러스터를 위한 고가용성 또는 통합 재해 복구 도구를 쉽게 관리할 수 있습니다.
쉽게말하여 Proxmox VE는 위에서 설명한 Type1 하이퍼바이저이자 리눅스 데비안 계열 오픈 소스 운영 체제입니다.
오픈 소스 프로그램이기 때문에 무료로 사용가능하고 한국어가 지원되며 Linux와 Windows 애플리케이션 워크로드를 쉽게 가상화 할 수 있는 장점이 있습니다.
Proxmox 설치
Proxmox를 설치하기 위해서는 Proxmox 이미지 파일과 부팅가능한 USB 메모리 그리고 설치할 하드웨어가 필요합니다.
1. Proxmox 이미지 파일
Get the free Proxmox VE ISO installer
We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note
www.proxmox.com
공식 Proxmox 홈페이지에서 원하는 버전의 iso 이미지 파일을 다운받습니다.
해당 포스팅에서는 7.4-1 버전을 사용하겠습니다.
2. Ventoy
Ventoy
Ventoy is an open source tool to create bootable USB drive for ISO files. With ventoy, you don't need to format the disk again and again, you just need to copy the iso file to the USB drive and boot it.
www.ventoy.net
GitHub - ventoy/Ventoy: A new bootable USB solution.
A new bootable USB solution. Contribute to ventoy/Ventoy development by creating an account on GitHub.
github.com
iso 이미지 파일을 부팅 가능하게 만들기 위해 필요합니다. 이미지를 USB에 직접 구워서 사용할 수 도 있지만 여기서 소개하는 Ventoy를 이용하여 USB를 만들어두면 iso 이미지를 굽지않고 여러 이미지를 하나의 USB로 사용 할 수 있습니다.
Ventoy2Disk를 실행하여 Ventoy로 설정할 USB를 선택 후 설치를 누릅니다.
설치를 진행하면 USB가 초기화되며 Ventoy 부팅 파티션과 부팅 이미지 파티션으로 나눠집니다.
설치가 완료되면 Ventoy로 설정된 USB에 iso 이미지 파일을 그대로 넣습니다.
3. Proxmox 설치
이미지를 넣은 USB로 부팅 하면 위와 같은 Procmox 설치 초기 화면이 나옵니다.
설치를 원하는 디스크를 선택합니다. 선택한 디스크는 초기화되며 local과 local-lvm 스토리지로 자동으로 나눠집니다.
국가와 타임존을 설정합니다. 키보드 레이아웃은 U.S. English로 사용합니다.
관리자 계정(root)의 비밀번호와 이메일 주소를 입력합니다.
네트워크 어댑터와 IP 주소를 설정합니다. Hostname의 최상위(제일앞) 도메인 이름이 설치 후 노드의 이름이 됩니다.
따라서 사용할 노드 이름 + 도메인 주소를 넣으시면 됩니다. (예: riz.proxmox)
마지막으로 앞서 설정한 내용을 확인 후 설치를 시작합니다.
설치가 완료되면 재부팅되고 해당 화면이 나오면 설치가 완료된것입니다.
Proxmox 접속
앞서 설정한 IP주소 기반으로 CLI화면에 https://192.168.X.X:8006/ 와 같은 형태로 표시됩니다.
웹 브라우저를 통해 해당 웹 주소로 이동합니다.
설정한 root 관리자의 비밀번호를 입력 후 언어를 한국어로 변경하고 접속합니다.
접속 후 화면은 이런식으로 구성됩니다.
저는 설치 후 VM을 이미 만들어둔 상태입니다. 해당 부분은 참고해주시길 바랍니다.
Proxmox 초기 설정
노드에서 쉘로 접속하여 아래 환경설정을 할 수 있습니다. (선택사항입니다)
상업용 리포지토리를 주석처리
apt update시에 상업용 리포지토리가 포함되어있어 오류메시지가 발생합니다.
해당 리포지토리를 주석처리하여 이를 해결합니다. 참고
vi /etc/apt/sources.list.d
혹은
nano /etc/apt/sources.list.d
기본 적으로 vim 에디터가 없어 vi 에디터로 열리게 되니 apt로 vim을 설치하시거나 nano에디터를 사용하시면됩니다.
아래처럼 #을 붙여 주석처리합니다.
# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
비구독 리포지토리를 추가
구독하지 않아도 접근할 수 있는 리포지토리를 추가합니다. 참고
vi /etc/apt/sources.list
혹은
nano /etc/apt/sources.list
vi 혹은 nano 에디터를 사용합니다.
아래 내용을 추가합니다.
# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
구독 알림 팝업 제거
Proxmox는 무료로 사용가능하지만 로그인시에 매번 구독 알림 팝업이 뜹니다.
해당 팝업 코드를 무효화하여 이를 막을 수 있습니다.
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy
위의 한 줄 명령어를 사용하거나 아래 설명과 같이 직접 수정할 수 있습니다.
proxmoxlib.js 경로 이동
cd /usr/share/javascript/proxmox-widget-toolkit
원본 파일 백업
cp proxmoxlib.js proxmoxlib.js.bak
vi 혹은 nano 에디터를 사용합니다.
vi proxmoxlib.js
혹은
nano proxmoxlib.js
- vi 에디터의 경우
/Ext.Msg.show 를 입력하여 아래와 같은 블럭으로 이동합니다. - nano 에디터의 경우
Ctrl+W 키를 누른 후 Ext.Msg.show 를 입력하여 아래와 같은 블럭으로 이동합니다.
Ext.Msg.show({
title: gettext('No valid subscription'),
"Ext.Msg.show" 앞에 "void ({ //"를 추가하여 호출을 무효화합니다.
void ({ //Ext.Msg.show({
title: gettext('No valid subscription'),
Proxmox 웹 서비스를 재시작합니다.
systemctl restart pveproxy
'DevOps > 가상화' 카테고리의 다른 글
Proxmox에서 LXC 컨테이너 사용하기 (0) | 2023.04.04 |
---|---|
Proxmox에 XPEnology 설치 (0) | 2023.03.28 |