PVDI의 Domain-0 스펙 변경

본 매뉴얼에서는 PVDI 서비스 운영 중 Domain-0(이하 dom0)의 스펙(CPU코어, 메모리)을 변경하는 방법을 설명합니다.

주의: dom0의 스펙을 변경할 경우 아래 사항을 반드시 준수해야 합니다.

  • 사용자 VM를 종료해야 합니다.
  • MasterVM을 종료해야 합니다.

1. 실행 중인 VM(VDI) 종료

1.1. GUI로 종료하는 방법

VDI 관리자 페이지에서 VM을 종료합니다.

1.2. 커맨드로 종료하는 방법

# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  8192     8     r-----  189369.9
pvdi-master                                165  1024     1     -b----   96748.9
45527f2f-937e-49f1-a207-e5cd804711f1       170  4096     2     -b----   15048.6

xl shutdown ‘ID값’ 명령으로 VM을 종료할 수 있습니다. ID에는 해당 VM의 ID 값을 입력합니다. 예를들어 45527f2f-937e-49f1-a207-e5cd804711f1 을 종료하려면 아래 명령을 실행하면 됩니다.

# xl shutdown 170

VM(45527f2f-937e-49f1-a207-e5cd804711f1)이 종료되었습니다.

# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  8192     8     r-----  189369.9
pvdi-master                                165  1024     1     -b----   96748.9
- 45527f2f-937e-49f1-a207-e5cd804711f1       170  4096     2     -b----   15048.6

2. MasterVM 종료

MasterVM은 VDI 관리자 페이지에서 종료할 수 없으며 커맨드로만 종료할 수 있습니다.

# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  8192     8     r-----  189369.9
pvdi-master                                165  1024     1     -b----   96748.9

xl shutdown ‘pvdi-master의 ID값’ 명령으로 MasterVM(pvdi-master)을 종료할 수 있습니다. 예를 들어 xl list를 실행했을 때의 결과가 위와 같을 경우 pvdi-master를 종료하려면 아래 명령을 실행하면 됩니다.

# xl shutdown 165

VM(pvdi-master)이 종료되었습니다.

# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  8192     8     r-----  189369.9
- pvdi-master                                165  1024     1     -b----   96748.9

3 dom0의 스펙 변경

3.1. /etc/default/grub 수정

/etc/default/grub 파일에서 dom0_mem, max, dom0_max_vcpus 값을 수정하면 dom0의 스펙을 변경할 수 있습니다. (단, /etc/default/grub를 수정한 후 update-grubreboot를 해야 변경된 설정 값이 적용됩니다.)

기존 메모리 8G, 8코어를 메모리 9G, 9코어로 변경해보겠습니다.

항목 변경 전 변경 후 비고
메모리 8G 9G dom0_mem, max 값 수정
코어 8코어 9코어 dom0_max_vcpus 값 수정
  • dom0_mem: dom0에서 사용할 메모리 용량을 입력합니다. (i.e. 9G)
  • max: dom0에서 최대로 사용할 수 있는 메모리 용량을 입력합니다. (max = dom0_max + 1)
  • dom0_max_vcpus: dom0에서 사용할 코어 개수를 입력합니다. (i.e. 9)

다음은 /etc/default/grub 파일 내용입니다.

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
GRUB_DISABLE_OS_PROBER=true
- GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=8G,max:9G dom0_max_vcpus=8 dom0_vcpus_pin"
+ GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=9G,max:10G dom0_max_vcpus=9 dom0_vcpus_pin"

3.2. update-grub

update-grub를 실행합니다.

# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found linux image: /boot/vmlinuz-3.16.0-4-amd64.bak
Found initrd image: /boot/initrd.img-3.16.0-4-amd64.bak
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
done

3.3. 리부팅

변경한 dom0의 스펙을 적용하기 위해서 리부팅을 해야합니다.

# reboot

리부팅후 xl list 명령을 실행하면 아래와 같이 dom0의 스펙이 변경되었음을 확인할 수 있습니다.

# xl list
Name                                        ID   Mem VCPUs  State   Time(s)
- Domain-0                                     0  8192     8     r-----  189369.9
+ Domain-0                                     0  9216     9     r-----  189369.9

4. MasterVM 실행

노드 서버의 /data 디렉토리에는 master.cfgmaster.raw 파일이 있습니다.

  • master.cfg: masterVM의 설정 파일입니다.
  • master.raw: masterVM의 디스크(이미지) 파일입니다.

노드 서버에서 아래 명령을 실행하면 masterVM의 가상머신이 실행됩니다.

# xl create master.cfg

masterVM이 제대로 실행되었는지 확인하려면 노드 서버에서 xl list 명령을 실행합니다.

# xl list
Name                                        ID   Mem VCPUs  State   Time(s)
Domain-0                                     0  9216     9     r-----  189369.9
+ pvdi-master                                165  1024     1     -b----   96748.9

위와 같이 pvdi-master 보이면 성공적으로 MasterVM을 실행한 것입니다.

5. 사용자 VM(VDI) 시작

이제 VM을 구동합니다.