가상화 · 7 min read · Dec 09, 2025
Debian Squeeze에서 Xen 4.0을 이용한 파라가상화 (AMD64)
Debian Squeeze에서 Xen 4.0을 이용한 파라가상화 (AMD64)
버전 1.0
저자: Falko Timme
Twitter에서 나를 팔로우하세요
이 튜토리얼은 Debian Squeeze (6.0) 시스템 (AMD64)에 Xen 4.0을 설치하고 파라가상화된 게스트를 만드는 방법에 대한 단계별 지침을 제공합니다 (완전 가상화된 게스트, 즉 하드웨어 가상화 (HVM)와 혼동하지 마세요).
Xen을 사용하면 호스트 운영 체제 (dom0) 아래에서 게스트 운영 체제 (*nix 운영 체제인 Linux 및 FreeBSD와 같은) 즉 “가상 머신” 또는 domU를 생성할 수 있습니다. Xen을 사용하면 애플리케이션을 서로 독립적인 여러 가상 머신으로 분리할 수 있습니다 (예: 메일 서버용 가상 머신, 트래픽이 많은 웹사이트용 가상 머신, 고객의 웹사이트를 제공하는 또 다른 가상 머신, DNS용 가상 머신 등), 하지만 동일한 하드웨어를 여전히 사용할 수 있습니다. 이는 비용을 절감하고, 더 중요한 것은 보안이 더 강화됩니다. DNS 서버의 가상 머신이 해킹당하더라도 다른 가상 머신에는 영향을 미치지 않습니다. 또한 가상 머신을 한 Xen 서버에서 다른 서버로 이동할 수 있습니다.
이것이 여러분에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
저는 호스트 시스템 (dom0)으로서 hostname이 server1.example.com이고 IP 주소가 192.168.0.100인 Debian Squeeze 시스템 (x86_64)을 사용하고 있습니다. (i386 시스템인 경우 설정이 약간 다를 수 있습니다.) 가상 머신 (domU)에도 Debian Squeeze를 사용할 것입니다 (하지만 Ubuntu Maverick 게스트를 설치하고 싶다면 필요한 변경 사항도 보여드리겠습니다).
이 가이드는 이미지 기반 가상 머신과 LVM 기반 가상 머신을 설정하는 방법을 설명합니다.
2 Xen 설치
Xen을 설치하기 위해 우리는 간단히 다음을 실행합니다.
apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools그 후 /etc/modules를 열고 loop max_loop=64라는 줄이 있는지 확인합니다 (이 단계는 이미지 기반 가상 머신을 생성하려는 경우에만 필요합니다 - LVM 기반 가상 머신을 생성하려는 경우 이 단계를 건너뛸 수 있습니다):
vi /etc/modules| [...] loop max_loop=64 |
다음으로 /etc/xen/xend-config.sxp를 엽니다…
vi /etc/xen/xend-config.sxp… 그리고 (network-script ‘network-bridge antispoof=yes’) 줄의 주석을 제거하거나 추가하고 모든 다른 (network-script …) 줄에 주석을 추가합니다 (antispoof=yes는 VM이 사용할 수 없는 IP 주소를 사용할 수 없도록 방지하는 Xen 방화벽을 활성화합니다. 예를 들어, 게이트웨이 IP와 같은 주소입니다). 또한 (vif-script vif-bridge) 줄이 활성화되어 있는지 확인합니다:
| [...] (network-script 'network-bridge antispoof=yes') [...] (vif-script vif-bridge) [...] |
그런 다음 시스템을 재부팅합니다:
reboot다음으로
uname -r을 실행하면 새로운 Xen 커널이 표시되어야 합니다:
root@server1:~# uname -r
2.6.32-5-xen-amd64
root@server1:~#
이제
xm dmesg 을 실행합니다. 출력이 다음과 같으면…
root@server1:~# xm dmesg
WARNING! Can’t find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@server1:~#
… 이는 여러분이 Xen 준비 커널에서 실행 중이지만 Xen 하이퍼바이저 자체에서 실행 중이 아니라는 것을 의미합니다 (이는 가상 머신을 부팅할 수 없음을 의미합니다). 이를 변경하기 위해 커널의 부팅 순서를 다음과 같이 변경하고 GRUB 부트로더를 업데이트합니다:
mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
이렇게 하면 다음 번 부팅 시 Xen 하이퍼바이저가 로드됩니다.
다시 재부팅합니다:
reboot그 후,
xm dmesg은 하이퍼바이저가 실행 중임을 보여야 합니다:
root@server1:~# xm dmesg
(XEN) Xen version 4.0.1 (Debian 4.0.1-2) ( [email protected]) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wed Jan 12 14:04:06 UTC 2011
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN) Found 1 MBR signatures
(XEN) Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 000000000009f000 (usable)
(XEN) 000000000009f000 - 00000000000a0000 (reserved)
(XEN) 00000000000e0000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000affa0000 (usable)
(XEN) 00000000affa0000 - 00000000affae000 (ACPI data)
(XEN) 00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN) 00000000afff0000 - 00000000b0000000 (reserved)
(XEN) 00000000fec00000 - 00000000fec01000 (reserved)
(XEN) 00000000fee00000 - 00000000fef00000 (reserved)
(XEN) 00000000ff700000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT 97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT 97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1 1AAAA 1AAAA000 0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT 97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG 20080526 MSFT 97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT 97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT 97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO 20080526 MSFT 97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608 NVHDCP 20080526 MSFT 97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I POWERNOW 1 AMD 1)
(XEN) System RAM: 3839MB (3931388kB)
(XEN) Domain heap initialised
(XEN) Processor #0 15:11 APIC version 16
(XEN) Processor #1 15:11 APIC version 16
(XEN) IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode: Flat. Using 1 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2600.088 MHz processor.
(XEN) Initing memory sharing.
(XEN) HVM: ASIDs enabled.
(XEN) HVM: SVM enabled
(XEN) AMD-Vi: IOMMU not found!
(XEN) I/O virtualisation disabled
(XEN) AMD: Disabling C1 Clock Ramping Node #0
(XEN) Total of 2 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN) -> Using new ACK method
(XEN) checking TSC synchronization across 2 CPUs:
(XEN) CPU#0 had -2 usecs TSC skew, fixed it up.
(XEN) CPU#1 had 2 usecs TSC skew, fixed it up.
(XEN) Platform timer is 25.000MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) Brought up 2 CPUs
(XEN) LOADING DOMAIN 0
(XEN) Xen kernel: 64-bit, lsb, compat32
(XEN) Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN) Dom0 alloc.: 0000000138000000->000000013c000000 (921455 pages to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN) Loaded kernel: ffffffff81000000->ffffffff816ba000
(XEN) Init. ramdisk: ffffffff816ba000->ffffffff8323b600
(XEN) Phys-Mach map: ffffffff8323c000->ffffffff83963b78
(XEN) Start info: ffffffff83964000->ffffffff839644b4
(XEN) Page tables: ffffffff83965000->ffffffff83986000
(XEN) Boot stack: ffffffff83986000->ffffffff83987000
(XEN) TOTAL: ffffffff80000000->ffffffff83c00000
(XEN) ENTRY ADDRESS: ffffffff81509200
(XEN) Dom0 has maximum 2 VCPUs
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) * Serial input -> DOM0 (type ’CTRL-a’ three times to switch input to Xen)
(XEN) Freed 176kB init memory.
(XEN) MCE: MSR 417 is not MCA MSR
(XEN) MCE: MSR 417 is not MCA MSR
root@server1:~#
3 이미지 기반 가상 머신 생성
우리는 xen-tools를 사용하여 가상 머신을 생성할 것입니다. xen-tools는 가상 머신을 생성하는 것을 매우 쉽게 만들어 줍니다 - 더 많은 정보를 얻으려면 이 튜토리얼을 읽어보세요: https://www.howtoforge.com/xen_tools_xen_shell_argo. 우리는 이전 단계 (2장)에서 이미 xen-tools를 설치했습니다.
이제 /etc/xen-tools/xen-tools.conf를 편집합니다. 이 파일은 xen-create-image 스크립트에서 사용되는 기본 값을 포함하고 있으며, 명령줄에서 다른 값을 지정하지 않는 한 사용됩니다. 저는 다음 값을 변경하고 나머지는 그대로 두었습니다:
vi /etc/xen-tools/xen-tools.conf| [...] dir = /home/xen [...] # lvm = vg0 [...] dist = `xt-guess-suite-and-mirror --suite` # 설치할 기본 배포판. [...] gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 [...] passwd = 1 [...] kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` [...] mirror = `xt-guess-suite-and-mirror --mirror` [...] serial_device = hvc0 #기본값 [...] disk_device = xvda #기본값 [...] |
dir 줄은 가상 머신 이미지가 저장될 위치를 지정합니다. 동시에 lvm이 주석 처리되어 있는지 확인하세요 (이 설정들은 상호 배타적입니다!).
dist는 가상 머신에 설치될 배포판을 지정합니다 (명령줄에서
xt-guess-suite-and-mirror --suite를 실행하면 squeeze로 변환되는 것을 볼 수 있으므로, 이 경우 Debian Squeeze가 설치됩니다. 명령줄에서 다른 것을 지정하지 않는 한).
가상 머신에 설치할 수 있는 배포판을 확인하려면 다음을 실행하세요:
gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README
passwd = 1 줄은 새 게스트 도메인을 생성할 때 루트 비밀번호를 지정할 수 있게 해줍니다.
kernel 및 initrd 줄은 가상 머신에 설치될 커널과 램디스크를 지정합니다. Debian Squeeze를 설치하려면 위와 같이 설정을 사용하세요 (그렇지 않으면 Debian Squeeze 게스트가 부팅되지 않을 수 있습니다). 예를 들어 Ubuntu Maverick을 설치하려면 동일한 설정을 사용하거나 두 줄을 주석 처리하여 기본 Ubuntu 커널이 사용되도록 할 수 있습니다 (예, Xen 4.0은 게스트에서 비-Xen 커널을 사용할 수 있도록 허용합니다!).
게이트웨이, 넷마스크 및 브로드캐스트 주소를 지정해야 합니다. 그렇지 않으면, xen-create-image를 사용할 때 명령줄에서 게이트웨이와 넷마스크를 지정하지 않으면, IP 주소를 지정했더라도 게스트 도메인에 네트워킹이 없게 됩니다!
mirror 줄은 사용할 미러를 지정합니다 (명령
xt-guess-suite-and-mirror --mirror는 기본적으로 Debian 미러로 변환됩니다. 물론 다른 미러를 지정할 수 있습니다, 예를 들어 다음과 같이:
mirror = http://ftp.de.debian.org/debian/또는
mirror = http://archive.ubuntu.com/ubuntu (Ubuntu의 경우; 이 경우 dist 줄에 Ubuntu 버전을 지정해야 합니다, 예: dist = maverick)
)
serial_device = hvc0 줄을 추가하는 것이 매우 중요합니다. 그렇지 않으면 가상 머신이 제대로 부팅되지 않을 수 있습니다!
disk_device = xvda는 가상화된 디스크의 이름이 xvda1, xvda2 등으로 지정되도록 합니다. 이는 Debian Squeeze 게스트에 대한 올바른 설정입니다; Ubuntu 게스트, 특히 비-Xen 커널을 사용할 때는 이 설정으로 부팅되지 않을 수 있지만, xen-create-image 명령에 –scsi 스위치를 전달하여 이를 재정의할 수 있습니다 - 이 경우 가상화된 디스크의 이름은 sda1, sda2 등으로 지정됩니다.
요약하자면, 위의 설정은 Debian Squeeze 게스트에 적합합니다; Ubuntu Maverick을 대신 설치하려면 /etc/xen-tools/xen-tools.conf에서 일부 설정을 재정의해야 합니다 (–dist, –mirror, –scsi 스위치; 아마도 kernel 및 initrd도 주석 처리해야 함) - 잠시 후에 이에 대해 설명하겠습니다.
계속하기 전에 가상 머신 이미지가 저장될 디렉토리를 생성해야 합니다:
mkdir /home/xen 이제 IP 주소가 192.168.0.101인 첫 번째 게스트 도메인 xen1.example.com을 생성해 보겠습니다:
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev명령줄에서 지정한 옵션은 /etc/xen-tools/xen-tools.conf의 설정을 재정의합니다. 명령줄에서 지정하지 않은 옵션은 /etc/xen-tools/xen-tools.conf에서 가져옵니다. –role=udev를 추가해야 하며, 그렇지 않으면 가상 머신이 제대로 부팅되지 않을 수 있습니다!
(사용 가능한 옵션에 대해 더 알아보려면 xen-create-image 매뉴얼 페이지를 확인하세요:
man xen-create-image)
xen-create-image 명령은 이제 xen1.example.com 가상 머신을 생성합니다. 몇 분 정도 걸릴 수 있습니다. 출력은 다음과 비슷해야 합니다:
root@server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=256Mb –arch=amd64 –role=udev
일반 정보
호스트 이름 : xen1.example.com
배포판 : squeeze
미러 : http://ftp.de.debian.org/debian/
파티션 : swap 256Mb (swap)
/ 4Gb (ext3)
이미지 유형 : sparse
메모리 크기 : 256Mb
커널 경로 : /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd 경로 : /boot/initrd.img-2.6.32-5-xen-amd64
네트워킹 정보
IP 주소 1 : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
넷마스크 : 255.255.255.0
브로드캐스트 : 192.168.0.255
게이트웨이 : 192.168.0.1
/home/xen/domains/xen1.example.com/swap.img에 파티션 이미지를 생성 중입니다.
완료
/home/xen/domains/xen1.example.com/swap.img에 스왑 생성 중입니다.
완료
/home/xen/domains/xen1.example.com/disk.img에 파티션 이미지를 생성 중입니다.
완료
/home/xen/domains/xen1.example.com/disk.img에 ext3 파일 시스템 생성 중입니다.
완료
설치 방법: debootstrap
완료
후크 실행 중
완료
역할: udev
파일: /etc/xen-tools/role.d/udev
역할 스크립트 완료.
Xen 구성 파일 생성 중
완료
루트 비밀번호 설정 중
새 UNIX 비밀번호 입력:
새 UNIX 비밀번호 재입력:
passwd: 비밀번호가 성공적으로 업데이트되었습니다.
모두 완료
로그 파일이 생성되었습니다:
/var/log/xen-tools/xen1.example.com.log
설치 요약
호스트 이름 : xen1.example.com
배포판 : squeeze
IP 주소(es) : 192.168.0.101
RSA 지문 : 81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
루트 비밀번호 : N/A
root@server1:~#
Ubuntu Maverick 게스트의 경우, 대신 다음 명령을 사용해야 합니다:
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu (게스트에서 Debian의 Xen 커널 대신 기본 Ubuntu 커널을 사용하려면 /etc/xen-tools/xen-tools.conf에서 커널 및 initrd 줄을 주석 처리할 수도 있습니다.)
이제 xen1.example.com 구성 파일이 있어야 합니다 - /etc/xen/xen1.example.com.cfg. 이를 확인하여 가상 머신 구성 파일에 익숙해지세요:
cat /etc/xen/xen1.example.com.cfg| # # Xen 인스턴스 xen1.example.com에 대한 구성 파일, # 2011년 3월 25일 금요일 xen-tools 4.2에 의해 생성됨. # # 커널 + 메모리 크기 # kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64' vcpus = '1' memory = '256' # 디스크 장치들. # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', ] # # 물리적 볼륨 # # # 호스트 이름 # name = 'xen1.example.com' # # 네트워킹 # vif = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ] # # 동작 # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |
(참고: 듀얼 코어 또는 쿼드 코어 CPU가 있고 가상 머신이 모든 CPU 코어를 사용하도록 하려면 vcpus 줄을 vcpus = ‘2’ 또는 vcpus = ‘4’로 변경하세요.)
가상 머신을 시작하려면 다음을 실행하세요:
xm create /etc/xen/xen1.example.com.cfgroot@server1:~# xm create /etc/xen/xen1.example.com.cfg
Using config file “/etc/xen/xen1.example.com.cfg”.
도메인 xen1.example.com (id=1) 시작됨
root@server1:~#
xm console xen1.example.com을 실행하여 해당 가상 머신에 로그인합니다 (콘솔에 있을 경우 CTRL+]를 입력하거나 PuTTY를 사용하는 경우 CTRL+5를 입력하여 dom0로 돌아갑니다), 또는 SSH 클라이언트를 사용하여 192.168.0.101에 연결합니다.
실행 중인 가상 머신 목록을 보려면 다음을 입력하세요:
xm list 출력은 다음과 같아야 합니다:
root@server1:~# xm list
이름 ID Mem VCPUs 상태 시간(s)
Domain-0 0 2811 2 r—– 137.2
xen1.example.com 1 256 1 -b—- 1.7
root@server1:~#
xen1.example.com을 종료하려면 다음을 수행하세요:
xm shutdown xen1.example.com xen1.example.com이 시스템의 다음 부팅 시 자동으로 시작되도록 하려면 다음을 수행하세요:
mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto
다음은 가장 중요한 Xen 명령입니다:
xm create -c /path/to/config - 가상 머신 시작.
xm shutdown
xm destroy
xm list - 실행 중인 모든 시스템 목록.
xm console
xm help - 모든 명령 목록.
xen-create-image 명령으로 생성된 모든 가상 머신 목록은 다음에서 확인할 수 있습니다:
xen-list-imagesroot@server1:~# xen-list-images
이름: xen1.example.com
메모리: 256
IP: 192.168.0.101
root@server1:~#
xen-tools로 할 수 있는 것에 대해 더 알아보려면 이 튜토리얼을 확인하세요: https://www.howtoforge.com/xen_tools_xen_shell_argo
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.