본문 바로가기
컴퓨터 활용(한글, 오피스 등)/50_2.운영체제_리눅스

하이퍼바이저_Xen

by 3604 2022. 10. 28.
728x90

[Server] Xen Hypervisor(Xen 하이퍼바이저) 란? (1/2)

1. Xen이란?


출처: https://mangkyu.tistory.com/82

[ Xen이란? ]

Xen이란 오픈소스 하이퍼바이저 중 하나로, 하드웨어 위에서 실행되는 Type1의 형태 또는 베어 메탈 형태의 가상화 기술을 의미한다. Xen은 CPU, Memory, Interrupt 등을 직접 다루고, 물리 자원을 추상화하여 가상화된 자원을 가상머신(Virtual Machine, VM)에게 제공한다. Xen 하이퍼바이저는 장치(Device)에 대한 처리는 직접 수행하지 않는 대신 장치를 관리하는 특권(Privilege)이 있는 가상 머신인 도메인 0에게 이러한 역할을 일임한다. 사용자 모드에 있는 어플리케이션이 커널의 기능을 이용할 수 있도록 커널이 시스템콜(syscall)을 제공하는 것처럼 도메인0이 하이퍼바이저의 기능을 요청하기 위해 하이퍼콜(hypercall)을 사용하고, 하이퍼 바이저가 도메인을 요청하기 위해 업콜(upcall)을 수행한다. Xen 하이퍼바이저를 통해서는 크게 반가상화와 하드웨어 지원 가상화가 가능하다.

 

 

 

 

[ 도메인이란? ]

도메인은 Xen환경에서 동작하고 있는 가상머신을 말한다. 도메인은 크게 도메인0과 도메인 U 2가지로 나뉘어지는데, 도메인 0은 실제 물리 장치로 접근가능하며, 다른 도메인을 관리하는 특권이 있는 도메인이며, 도메인 U는 특권이 없는 나머지 도메인을 의미한다. 도메인 0은 Xen을 부팅시키면 실행되는 첫 번째 도메인으로 일반적으로 Linux를 사용하지만 NetBSD나 FreeBSD와 같은 다른 운영체제도 사용할 수 있다. 도메인 0은 다른 도메인을 관리하기 위해 도메인의 생성, 파기 및 설정을 위한 인터페이스를 제공하는 ToolStack을 가지고 있고, 장치를 집접 관리하고 다른 도메인 간에 장치를 공유하는 역할을 한다.

 

 

[ Type1 vs Type2 하이퍼바이저 ]

가상화에서 '게스트 운영체제'는 가상화 대상이 되는 시스템을 의미하며, '호스트 운영체제'는 가상화 프로그램을 실행하는 즉, 가상화가 되지 않은 실제 운영체제를 의미한다. Type1 하이퍼바이저의 경우 호스트 운영체제가 존재하지 않으며, 대표적으로 Xen이 있다. Type2 하이퍼바이저는 호스트 운영체제에서 가상화 프로그램을 실행하여 게스트를 실행하는 방식으로 VirtualBox, VMware 등이 있다.

 

 

 

 

 

예를 들어, Type1 하이퍼바이저인 Xen을 사용하여 우분투를 가상화하면 바로 우분투가 실행되지만, 우리가 윈도우에서 Type2 하이퍼바이저를 활용하는 VirtualBox를 실행한다고 하면 아래의 그림과 같이 윈도우에서 VirtualBox 프로그램을 통해 우분투가 실행된다.

 

 

 

 

관련 포스팅

  1. Xen Hypervisor(Xen 하이퍼바이저)란? (1/2)
  2. Xen Hypervisor 설치 및 가상머신 생성 예제 (2/2)

참고 자료

[Server] Xen Hypervisor 설치 및 가상머신 생성 예제 (2/2)

1. Xen 설치하기


[ 1. 관련 패키지 설치 ]

먼저 Xen을 설치하기 위해 필요한 패키지들을 설치하고 업데이트 후에 재부팅한다.

 

// vim 에디터 설치
sudo apt install vim

// Xen 관련 패키지 설치
sudo apt install xen-hypervisor-amd64 xen-tools

// 네트워크 유틸 설치
sudo apt install net-tools

// 패키지 업데이트
sudo apt update

// 재부팅
sudo reboot

 

 

[ 2. Xen 실행 여부 확인 ]

설치한 Xen 하이퍼바이저가 잘 실행되고 있는지 확인한다. 정상적으로 Xen이 설치되었다면 아래와 같은 도메인 0 가상머신이 생성되어 있을 것이다. 앞에서 도메인 0은 특권 명령을 일임하여 처리하는 가상 머신이라고 설명하였다,

sudo xl list

또한 Xen은 Type1 하이퍼바이저이기 때문에 하이퍼바이저 위에 가상머신이 생성됨을 잊지말자.

 

 

 

 

[ 3. 네트워크를 Bridge 모드로 설정 ]

설치한 Xen 네트워크를 Bridge모드로 설정한다. 여기서 Bridge 모드란 공유기로부터 IP를 할당받아 Host PC와 동일한 네트워 크 대역의 IP를 갖는 모드를 의미한다.


먼저 Bridge와 연결될 네트워크 인터페이스의 이름을 확인한다. 아래의 그림을 통해 우리가 설정할 네트워크 인터페이스의 이름은 enp0s3임을 확인해두자.

ifconfig

 

 

 

해당 네트워크 인터페이스를 Bridge로 설정한다. 위의 enp0s3를 기억해두고 아래와 같이 설정후재어야 한다.

sudo vi / etc netplan /01 network manager all.yaml

 

 

 

네트워크를 적용하고 설정이 잘 되었는지 확인한다. 제대로 설정되었다면 위에서 추가한 xenbr0이 보일 것이다.

sudo netplan apply
brctl show

 

 

 

 

 

[ 4. 부팅 순서(GRUB) 설정 ]

부팅 순서를 설정하여 Xen이 먼저 부팅되고, Dom0 커널이 부팅되도록 설정한다.

 

// GRUB을 설정한다.
sudo mv /etc/grub.d/10_linux /etc/grub.d/50_linux

// GRUB 설정을 적용한다.
sudo update-grub

// 재부팅한다.
sudo reboot

 

 

 

2. Xen으로 가상머신 구동


[ 1. 가상머신 이미지 생성 ]

Xen은 아래와 같은 옵션을 활용해 가상머신을 생성할 수 있도록 도와준다. 

 

아래와 같은 명령어를 통해 가상머신의 이미지를 생성할 수 있다. dist 옵션을 보면 배포할 OS의 종류라고 적혀있다. 각각의 OS는 별칭을 가지고 있는데,  Ubuntu16은 Xenial Xerus(xenial), Ubuntu18은 Bionic Beaver(bionic), Ubuntu20은 Focal Fossa(focal)이다. 설치하기 원하는 OS의 별칭을 dist옵션으로 주면 원하는 OS에 대한 이미지를 생성할 수 있다.

 

설치가 가능한 OS의 종류는 /usr/share/xen-tools 하위에 있는 목록을 통해 조회할 수 있다.

 

이번 예제에서는 우분투 16버전인 xenial을 설치해보도록 하겠다. 설치 시간은 약 15분~20분 정도 소요되므로 기다려주어야 한다.

// 설치할 가상머신의 이미지를 생성한다.
sudo xen-create-image -hostname=myUbuntu -size=1Gb -swap=128Mb -dhcp 
     -force -dir=/vz -memory=256Mb -arch=amd64 -dist=xenial –passwd

 

 

 

위의 명령어가 끝나면 아래은 명령어로 생성된 가상머신의 이미지를 확인할 수 있다. 위에서 우리가 hostname을 myUbuntu로 설정했기 때문에 myUbuntu라는 가상 머신 이미지가 생성되었다. 또한 /etc/xen에는 myUbuntu.cfg라는 설정 파일이 존재한다.

// 가상머신 이미지 파일(myUbuntu) 확인
ls /vz/domains/

// 가상머신 설정 파일(myUbuntu.cfg) 확인
ls /etc/xen

 

 

 

[ 2. Xen tools를 활용해 가상머신 구동 ]

이제 생성된 가상머신의 이미지를 기반으로 가상머신을 구동할 것이다. 아래와 같은 명령어를 이용하면 우리가 설정한 파일을 기반으로 가상머신을 구동할 수 있다.

sudo xl create /etc/xen/myUbuntu.cfg

 

 

아래와 같은 명령어를 활용하면 생성된 가상머신의 정보를 확인할 수 있다. 이전과는 다르게 우리가 추가한 myUbuntu가 보임을 확인할 수 있다. 여기서 우리가 생성한 가상머신의 ID가 1임을 확인해두자. 가상머신의 ID는 가상머신의 접속 및 삭제에 사용된다.

// 가상머신 목록 확인
sudo xl list

 

 

[ 3. 가상머신 접속/해제 ]

이제 생성된 가상머신에 접속을 할 차례이다.

아까 확인해둔 가상머신의 ID와 함께 아래의 명령어를 이용하면 가상머신에 접속할 수 있다. 사용자의 아이디는 root로 주고, 비밀번호는 Xen을 설치하면서 입력했던 비밀번호를 입력하면 된다.

// sudo xl console VM_ID
sudo xl console 1

위와 같이 root@myUbuntu로 보인다면 정상적으로 가상머신에 접속된 것이다. 현재 우리의 OS는 우분투 20.04버전인데 위의 내용을 확인해보면 우리가 접속한 OS는 직접 설정해준 우분투16.04 LTS임을 확인할 수 있다.

 

 

아래의 명령어를 활용하면 가상머신을 구동시킨 후에 바로 접속할 수 있다.

// 가상머신 구동 후 바로 접속
sudo xl create -c myUbuntu.cfg

 

 

[ 4. 가상머신 종료 ]

가상머신에서 작업을 끝냈으면 접속을 종료할 차례이다.

가상머신의 접속을 종료하기 위한 명령어는 아래와 같다.

// 가상머신 접속 종료
종료키: ‘ctrl’ + ']'

 

그리고 가상머신 자체를 종료하기 위한 명령어는 아래와 같다.

// sudo xl shutdown VM_ID
sudo xl shutdown 1

 

가상머신을 종료하면 기존에 있었던 myUbuntu가 사라지게 된다.

 

 

 

가상머신을 강제로 종료하기 위한 명령어로 destroy가 있는데, 강제 종료를 하면 가상머신의 이미지가 손상될 수 있다. 그렇기 때문에 불가피한 상황이 아니라면 shutdown으로 가상머신을 종료해주자.

 

 

 

관련 포스팅

  1. Xen Hypervisor(Xen 하이퍼바이저)란? (1/2)
  2. Xen Hypervisor 설치 및 가상머신 생성 예제 (2/2)

 

 

728x90