[펌] KVM 기반 가상 서버 작성하기

황선욱 2011.05.24 02:12 조회 수 : 7132

KVM 설치를 위해 찾아보았습니다.

출처 :  http://www.dbguide.net/knowledge.db?cmd=view&boardUid=148879&boardConfigUid=20&boardStep=&categoryUid=148879

 

 

KVM 기반 가상 서버 작성하기

전체 가상화를 사용하여 Linux VM 하이퍼바이저에서 가상 서버를 빌드하는 데 필요한 세 가지 단계

상대적으로 단순한 세 단계를 통해 전체 가상화를 사용하여 Linux? KVM 하이퍼바이저 호스트에서 가상 서버를 작성할 수 있습니다. KVM(Kernel-based Virtual Machine)은 하드웨어 가상화 확장(Intel VT-X 및 AMD-V)과 QEMU의 수정된 버전을 기반으로 하는 Linux용 무료 오픈 소스 가상화 소프트웨어입니다.

 

Linux KVM(Kernel-based Virtual Machine)은 Intel VT-X 및 AMD-V 하드웨어 가상화 확장과 QEMU의 수정된 버전을 기반으로 하는 Linux용 무료 오픈 소스 가상화 소프트웨어이다(필요한 변경사항을 가져오기 위한 작업이 진행 중임). KVM(kvm.ko 형식으로 되어 있으며 코어 가상화 인프라 및 프로세서 특정 모듈 kvm-intel.ko 및 kvm-amd.ko를 제공하는 로드 가능한 커널 모듈임)은 수정되지 않은 형식으로 다수의 PC 운영 체제를 부트하는 데 필요한 정도까지 전체 하드웨어 에뮬레이션을 사용할 수 있도록 설계되어 있다.

KVM을 사용하면 수정되지 않은 Linux, Windows? 또는 Mac OS? X 이미지를 실행하는 여러 가상 시스템을 실행할 수 있다. 각각의 가상 시스템에는 네트워크 카드, 디스크, 그래픽 어댑터 등과 같은 개인용 가상 하드웨어가 있다.

이 기사에서 필자는 SUSE 11이 설치된 IBM? Blade Server HS21을 운영 체제로 사용했다. HS21은 Intel VT 확장을 지원하고 SUSE 11의 커널 버전은 2.6.27.13이며 여기에는 KVM(KVM은 2.6.20 버전부터 Linux 커널에 포함되어 있음)이 이미 포함되어 있다.

가상 서버를 작동하는 데 필요한 기본적인 세 가지 단계는 다음과 같다.

1.운영 체제와 필요한 소프트웨어를 설치한다.
2.가상 서버를 작성한다.
3.가상 서버 네트워크를 구성한다.

1단계: OS와 필요한 소프트웨어 설치하기

이 섹션에서 다루는 내용은 다음과 같다.

1.운영 체제와 필요한 소프트웨어 설치하기
2.CPU가 KVM을 지원하는지 여부 판별하기
3.소프트웨어가 올바르게 설치되었는지 확인하기

운영 체제와 소프트웨어 설치하기

운영 체제를 설치한 후 다음 명령을 사용하여 설치된 Linux 커널의 버전을 찾을 수 있다.

kvm:~ # uname -a
Linux kvm 2.6.27.13-1-pae #1 SMP 2009-01-27 13:41:16 +0100 i686 i686 i386 GNU/Linux

그런 다음 kvm과 kvm-kmp-default 패키지(I/O 하드웨어 에뮬레이션용 수정된 QEMU를 이미 포함하고 있음)를 선택하여 설치한다. 그림 1과 같이 이들 패키지를 선택한 후 Accept를 클릭하여 설치한다.

그림 1. 설치된 커널 찾기

 

이제 kvm-kmp-default 버전은 78_2.6.27.13_1-11.3이다. (78은 KVM 버전이고 나머지 정보는 커널 버전을 나타낸다.)

일반적인 KVM 설치는 다음 구성 요소로 구성된다.

  - 가상화 하드웨어를 관리하는 데 필요한 장치 드라이버(이 드라이버는 문자 장치 /dev/kvm을 통해 기능을 노출함)
  - PC 하드웨어 에뮬레이션을 위한 사용자 공간 구성 요소(현재 이 구성 요소는 사용자 공간에서 처리되며 약간 수정된 QEMU 프로세스임)
  - I/O 모델(copy-on-write 디스크 이미지 및 기타 QEMU 기능에 대한 지원과 함께 QEMU의 모델에서 직접 파생됨)

CPU가 KVM을 지원하는지 여부 판별하기

KVM은 x86 가상화 확장에 의존한다. 호환성을 확인하려면 grep vmx /proc/cpuinfo(AMD의 경우에는 grep svm /proc/cpuinfo) 명령을 실행한다. 출력이 Listing 1과 비슷하면 CPU가 KVM을 지원하고 그렇지 않으면 CPU가 KVM을 지원하지 않는다.

Listing 1. CPU에서 KVM 지원 확인하기

kvm:~ # grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm

소프트웨어가 성공적으로 설치되었는지 판별하기

lsmod | grep kvm 명령을 실행하여 KVM 모듈이 성공적으로 설치되었는지 확인한다. 결과가 이 출력과 비슷하면 KVM 모듈이 성공적으로 설치된 것이다.

kvm:~ # lsmod | grep kvm
kvm_intel 42604 0
kvm 150264 1 kvm_intel

2단계. 가상 서버 작성하기

이 섹션에서 다루는 내용은 다음과 같다.

1.원시 디스크 이미지 작성하기
2.이 이미지에 OS 설치하기
3.가상 서버 시작하기

원시 디스크 이미지 작성하기

원시 디스크 이미지를 작성하려면 다음 명령을 사용한다.

dd if=/dev/zero of=/mnt/kvmtest.img bs=1024 count=0 seek=$[10*1024*1024]

이 명령을 사용하면 이름이 kvmtest.img인 10GB 이미지가 작성된다.

이 이미지에 운영 체제 설치하기

이 이미지에 운영 체제를 설치하려면 다음 명령을 사용한다.

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -boot d -cdrom /mnt/SLES-11-DVD-i586-RC3-DVD1.iso -m 1024

소스에서 KVM을 빌드하는 것이 아니라 KVM 패키지를 설치하는 것이기 때문에 qemu-kvm은 사용할 수 있지만 qemu-system-x86_64는 사용할 수 없다.

-boot d는 CDROM에서 가상 서버를 부팅할 것임을 의미한다. -m 1024는 가상 서버에 1GB 메모리를 지정함을 의미한다.

이 명령을 실행하고 나면 운영 체제 설치 화면은 그림 2와 비슷하게 된다.

그림 2. OS 설치 화면

 

다음으로 일반적인 방식으로 운영 체제를 설치한다.

이제 가상 서버를 시작한다.

운영 체제를 성공적으로 설치한 후 다음 명령으로 가상 서버를 시작할 수 있다.

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024

실제 하드웨어에서 실행 중인 일반적인 서버처럼 서버가 실행된다.

3단계. 가상 서버 네트워크 구성하기

가상 서버를 작성하는 방법을 살펴봤지만 가상 서버의 네트워크를 작성하는 방법은 살펴보지 않았다. 이제 가상 서버의 브릿지 네트워크를 작성하는 방법에 대해 설명한다.

1.bridge-util 패키지 설치하기
2.브릿지 네트워크 인터페이스 작성하기
3.네트워크 제어를 위한 스크립트 작성하기
4.게스트 운영 체제 네트워크 시작하기
5.게스트 운영 체제 네트워크 구성하기

bridge-util 패키지 설치

브릿지 네트워크를 작성해야 하므로 운영 체제의 소프트웨어 관리 섹션에 bridge-util 패키지를 설치해야 한다. 패키지를 선택하고 설치할 위치가 그림 3에 표시된다.

그림 3. bridge-util 패키지 설치하기

 

브릿지 네트워크 인터페이스 빌드하기

운영 체제의 네트워크 구성 화면에서 Add a new network interface를 클릭한다(그림 4 참조).

그림 4. 새 네트워크 인터페이스 추가하기

 

그림 5와 같은 Hardware Dialog가 표시된다.

그림 5. 새 네트워크 인터페이스에 대한 Hardware Dialog

 

Bridge 장치 유형을 선택한 후 Next를 클릭하여 네트워크 구성을 계속 진행한다. 그림 6과 같은 구성 화면이 표시된다.

그림 6. 네트워크 구성 화면

 

"Bridged Devices" 아래에서 eth0을 선택한 후 브릿지 인터페이스의 정적 ID를 구성한다(이 구성은 eth0의 구성과 동일함)(그림 7 참조).

그림 7. 브릿지 인터페이스의 정적 IP 구성하기

 

이 작업을 수행한 후에는 eth0 구성이 지워지므로 Next를 클릭하여 계속 진행하면 네트워크 구성 화면으로 돌아간다. 새 브릿지 네트워크 인터페이스가 적성되었고 eth0 구성이 지워진 것을 확인할 수 있다.

네트워크 제어 스크립트 빌드하기

네트워크 제어 스크립트 컨텐츠의 모양은 Listing 2와 비슷하다.

Listing 2. 네트워크 제어 스크립트

#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
tunctl -u `whoami` -t $1
ip link set $1 up
sleep 0.5s
brctl addif $switch $1
exit 0
else
echo "Error: no interface specified"
exit 1
fi

게스트 운영 체제 시작하기

다음 명령을 사용하여 네트워크 인터페이스와 함께 운영 체제를 시작한다.

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024 -net nic,macaddr=52:54:00:12:34:56 -net tap,script=/etc/qemu-ifup

가상 서버를 시작할 때 네트워크 인터페이스를 지정한다.

게스트 운영 체제 네트워크 구성하기

게스트 운영 체제가 부트되고 나면 일반적인 방식으로 네트워크를 구성한다.

드디어 KVM에 빌드된 가상 서버를 작성했다.

 

 

필자소개

Da Shuang He는 중국 상해에 있는 IBM 중국 개발 연구소의 소프트웨어 엔지니어다. 현재 시스템 관리 소프트웨어를 개발하며 스스로 부팅할 수 있는 서버와 원격 시스템 설치, 그리고 전원 관리와 관련된 일을 한다.

출처 : 한국 IBM

제공 : DB포탈사이트 DBguide.net

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 하이퍼바이져 스터디 관련 Q&A 게시판 입니다. woos 2016.04.09 237
195 [발표자료] [2008.04.25] 프로젝트 분담 및 진행 방법.ppt 백창우 2008.04.29 10755
194 vmware에서 vt 기능이 되나봅니다 [2] file 김기오 2008.01.29 10677
193 intel vt기술을 이용하여 작성한 VM코드 [2] 박세율 2008.08.28 10653
192 virtual machine monitor paper list 박은병 2010.04.05 10387
191 가상화기술의 미래 [1] 박세율 2008.09.03 10252
190 스터디 스케줄이 궁금해요 ^^ [1] 김광태 2008.08.09 10207
189 xen source [2] 박은병 2010.04.05 9936
188 요즘 나오는 저가형 듀얼 코어 프로세서는 VT를 지원하지 않는가 보네요. 백창우 2008.08.26 9704
187 Tunneling SSH over an HTTP-Proxy Server 이일렬 2008.03.05 8681
186 xen 3.2 에서는 intel vt-d 기술이 적용된거 같은데요 [6] 이일렬 2008.02.19 8567
185 드디어 Windows에서 Emacs를 사용하여 소스 브라우징 하는 방법에 대해서 정리 했습니다. [4] file 정성욱 2008.03.20 8548
184 xen 책 소스 코드 다운로드 사이트 문대혁 2010.04.17 8269
183 우리는 이번주 스터디 진행이 어떤식으로 되나요? [2] 이상철 2010.04.08 8021
182 KVM 소스 및 문서자료 백창우 2007.11.15 8006
181 인텔에서 64비트와 AMD에서 64비트가 동일한건가요? [7] 김기오 2008.02.24 7738
180 ARM 서버의 가능성? [11] 박은병 2011.10.30 7553
179 vim + ctags + cscope 사용법 [3] 백창우 2008.01.28 7548
178 Hardware Emulation과 Full Virtualization, Paravirtualization의 차이 !! [10] 동선 2011.04.03 7196
» [펌] KVM 기반 가상 서버 작성하기 [1] 황선욱 2011.05.24 7132
176 Xen을 이용한 server 가상화 데모 [3] 백창우 2007.12.09 7036
XE Login