Xen 사용법 Guest 생성 방법 예제


Xen 사용법 Guest 생성 방법 예제
이번글에서는 Xen 하이퍼바이저(Hypervisor)에서 게스트(Guest) 운영체제를 실행하는 방법에 대해서 설명해 드리도록 하겠습니다.
가상화 유형은 전가상화(HVM)으로 우분투(Ubuntu) 운영체제를 설치 후 반가상화(PV) 유형으로 전환해 보도록 하겠습니다. 윈도우를 Guest 운영체제로 사용하실 경우 윈도우 이미지를 이용하여 HVM 유형으로 설치해 주시면 됩니다.

가상화 종류 및 특징에 대해서는 다음 글을 참고해 주시기 바랍니다.

Xen 가상화 기술 종료 특징

Guest 운영체제의 성능을 높이기 위해서 파티션을 나눠서 사용할 수 있지만, 이번 글에서는 간편하게 Guest를 실행하기 위해서 파일 시스템을 디스크로 사용하도록 하겠습니다.

1. 준비

먼저 Xen 하이퍼바이저가 설치되어 있어야 하고, 운영체제를 설치할 iso 파일을 준비해 주셔야 합니다. 다음 명령어로 하이퍼바이저가 설치되어 실행중인지 확인 할 수 있습니다.

$ sudo xl list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0 19211     8     r-----     322.2

위와 비슷한 내용이 나타나면, 현재 Xen Hypervisor가 정상적으로 실행중인 상태입니다. 만약 Xen Hypervisor 가 설치되지 않았을 경우 다음 글을 참고하신 다음 먼저 Xen Hypervisor를 설치해 주시기 바랍니다.

Xen Hypervisor 설치

Ubuntu 설치 이미지는 아래 링크에서 다운 받으 실 수 있습니다.

http://ftp.daumkakao.com/ubuntu-releases/

아래의 내용은 우분투 설치 파일이 /data/utils/ubuntu-16.04.3-server-amd64.iso 위치에 저장된 것으로 가정하여 설명드리도록 하겠습니다. 윈도우를 설치하실 경우 윈도우의 설치 이미지 위치를 지정해 주시면됩니다.

2. 네트워크 설정

다음은 Guest 내부에서 사용할 네트워크를 설정해 주셔야 합니다. Xen Hypervisor 가 실행되고 있는 호스트 우분투 버전에 따라 설정 방법이 다를 수 있습니다. 네트워크 설정과 관련된 부분은 아래의 글을 참고하실 수 있습니다.

Xen Hypervisor 설치

3. Guest 설정, 실행

먼저 전가상화(HVM) 유형으로 Guest를 설치해 보도록 하겠습니다.
아래의 명령어로 디스크 파일을 생성해 주시기 바랍니다.

$ dd if=/dev/zero of=[디스크파일위치] bs=1024k count=[1024 * 용량GB]

예를 들어 10GB의 파일디스크는 아래와 같이 생성할 수 있습니다.

$ dd if=/dev/zero of=/data/xen/disk.dd bs=1024k count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 31.5861 s, 340 MB/s

그 다음 Xen의 Guest 설정 파일을 생성을 해주셔야 합니다.

기본 설정 예제 파일은 /etc/xen/xlexample.hvm 위치에 존재하며, 아래와 같은 내용의 설정파일을 생성합니다.
Guest 설정파일은 Xen 에서 Guest를 실행할때 입력하며, 저장 위치는 직접 입력하기에 위치는 상관없습니다.

# =====================================================================
# Example HVM guest configuration
# =====================================================================

# This configures an HVM rather than PV guest
builder = "hvm"

# Guest name
name = "example.hvm"

# Initial memory allocation (MB)
memory = 512

# Number of VCPUS
vcpus = 1

# Network devices
vif = ['']

# Disk Devices
disk = ['file:/data/xen/disk.dd,xvda,rw', 'file:/data/utils/ubuntu-16.04.4-server-amd64.iso,hdc:cdrom,r']

vnc = 1
vnclisten = '0.0.0.0'

xlexample.hvm 파일로 부터 아래의 명령어를 사용하여 Guest를 실행 할 수 있습니다.
아래의 내용은 /data/xen 위치에 xlexample.hvm 설정 파일이 저장된 것으로 가정하여 실행하였습니다.

/data/xen$ sudo xl create xlexample.hvm 
Parsing config from xlexample.hvm

만약 위의 명령어로 전가상화 Guest 생성에 실패할 경우, 디스크 이미지를 생성하여 반가상화 모드로 Guest 를 생성할 수도 있습니다.
아래의 글도 함께 참고해 주시면 도움이 되실겁니다.

Xen에서 Guest 디스크 이미지를 만드는 방법

4. Guest 접속

위에서 설정한데로 vnc를 통해서 guest에 접속 할 수 있습니다.
VNC 클라이언트가 없을 경우 아래의 명령어로 먼저 실행하여 VNC 클라이언트를 설치 후 주시기 바랍니다.

# 우분투 16.04 버전일 경우
$ sudo apt-get install vncviewer

# 우분투 18.04 버전일 경우
$ sudo apt-get install xvnc4viewer
vncviewer [Xen Hypervisor의 IP주소]:5900
실행 예) vncviewer 10.0.0.100:5900

위의 이미지 처럼 VNC를 통해서 우분투 설치 화면이 나타난 것을 알 수 있고, 설치이미지로 운영체제를 설치해 주시면 됩니다.

5. PV 전환

윈도우 운영체제의 경우 HVM 형태로 Guest를 사용해야 하지만, 리눅스의 경우 반가상화 방법으로 이용할 수 도 있습니다.
앞서 생성한 HVM 형태의 리눅스 Guest 를 PV 형태로 전환해 보도록 하겠습니다. 윈도우를 설치하신 경우 Guest를 PV 으로 전환 하실 수 없습니다.

먼저 아래의 명령어로 도메인 및 현재 운영중인 Guest를 확인 합니다.

$ sudo xl list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0 19211     8     r-----     421.1
example.hvm                                 12   512     1     -b----      12.3

앞서 생성한 example.hvm 의 Guest를 아래의 명령어를 이용하여 정지합니다.

$ sudo xl shutdown example.hvm
Shutting down domain 12

다음 명령어를 사용하여 Guest 가 안전히 정지된 것을 다시 한 번 확인 합니다.

$ sudo xl list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0 19211     8     r-----     422.1

PV Guest 설정 예제 파일은 /etc/xen/xlexample.pvlinux 이 곳에 위치하는데, 예제파일을 참고하여 아래와 같은 내용의 /data/xen/xlexample.pv 설정파일을 생성합니다.

# =====================================================================
# Example PV Linux guest configuration
# =====================================================================

# Guest name
name = "example.pvlinux"

bootloader = "/usr/lib/xen-4.6/bin/pygrub"

# Initial memory allocation (MB)
memory = 512

# Number of VCPUS
vcpus = 1

# Network devices
vif = [ '' ]

# Disk Devices
disk = ['file:/data/xen/disk.dd,xvda,rw']

vnc = 1
vnclisten = '0.0.0.0'

주의 하실 점은 앞서 생성한 디스크의 이미지를 그대로 사용하셔야, 설치된 리눅스로 반가상화 모드로 부팅되게 됩니다.
그리고 마지막으로 아래의 명령어를 사용하여 Guest 를 실행하시면 앞서 설치된 리눅스를 반가상화 모드(PV)으로 실행 할 수 있습니다.

/data/xen$ sudo xl create xlexample.pv
Parsing config from xlexample.pv

VGA, 사운드카드, 디스크 컨트롤러, 네트워크 카드 등 PCI 장치를 바로 Guest에게 할당하여 사용하는 방법은 다음 글을 참고해 주시기 바랍니다.

Xen PCI Passthrough

본문 내용 인용시에는 출처를 밝혀 주시기 바랍니다.