리눅스 가상화

(ver. 1.0.0)

목   차

1. Xen / Vserver 개요	4

가. 가상화	4

나. 배경설명	4

다. 가상화의 이점	5

라. 가상화의 방식	5

1) 전가상화	6

2) 단일 커널 이미지	6

3) 반 가상화	6

마. 가상화의 가능성	6

바. 가상화의 종류	7

1) VMware	7

2) Xen	8

3) Virtuozzo	8

4) 각 솔류션의 장/단점 비교	9

사. 가상화 응용 분야	9

1) VPS	9

2) 연구소	9

3) 기업	9

2. Xen Setup	10

가. 호스트 시스템 설치	10

1) 파티셔닝 테이블	10

2) Grub 설정	10

나. 호스트 네트워크 설정	10

다. Xen 인스톨	11

1) 바이러리 패키지 인스톨	11

2) 소스 인스톨	12

라. 가상 시스템	15

1) 가상 시스템 생성	15

2) 이미지 설치	16

3) 가싱 시스템 구동	17

4) 가상 시스템 추가	19

5) 가상 시스템에서 가상 로컬 네트워크 생성	19

3. Xen 관리도구	21

가. Xen-Tools	22

1) 인스톨 방법	22

2) 유연성	22

3) Xen-tools 인스톨	23

나. Xen-Shell	26

1) 이미지 편집	26

2) Reverse DNS	26

3) Xen-Shell 인스톨	26

다. Argo	30

1) Argo 설치	30

4. OpenVZ	36

가. OpenVZ 커널 인스톨	36

나. OS template 설치	38

5. Vserver	40

가. 설치	41

1) 패키지 설치	41

2) 파일	41

3) 커널	41

6. 상업용 가상화	45

가. EMC VMware	45

나. 인텔 벤터풀	45

다. 마이크로소프트 가상서버	45

라. IBM Virtualization Engine	46

마. HP VSE	46

7. 가상화 분류	46

가. 스토리지 가상화	47

나. 서버 가상화	47

다. 네트워크 가상화	47

라. 서비스 가상화	48

마. 가상화 유형	49

바. 가상화 특성	50

1. Xen / Vserver 개요

Xen 리눅스 커널에서 사용할 수 있는 가상화 기술로서 원래 시스템에 피해를 주지 않고 기존 환경에서 리눅스가 실행되는 것처럼 새로운 업그레이드를 마무리 및 테스트할 수 있는 기술이다.

캠브리지 대학교의 연구 프로젝트로 개발된 Xen 오픈소스 커뮤니티에서 많은 도움을 받았고 Xen 은 Paravirtualizing VMM(Virtual Machine Monitor) 이다.

O/S 의 선택 영역에서 변경되어 하이퍼바이저(Hypervisor)로 호출 되지만 O/S에서 실행되는 에플리케이션은 변경되지 않고 VMWare 같은 가상화 시스템이 진정한 가상화를 표방하지만 퍼포먼스에 영향을 미칠 수 있는 머신 코드는 여전히 변환해야 한다.

Xen은 변경된 OS가 필요하기 때문에 Xen 아키텍쳐로 포팅되지 않는 한 현재 리눅스 커널을 Xen 하이퍼바이저(Hypervisor)에서 실행할 수 없다.

현재 시스템이 Xen 아키텍쳐로 포팅된 새로운 리눅스 커널을 사용할 수 있다면 기존 시스템을 변경하지 않고 실행할 수 있다.

가. 가상화

가상화란 한 컴퓨터에서 여러 운영체제가 동시에 실행되게 하는 기술로 가상화는 하드웨어를 단일 운영체제로부터 분리 하여 하이퍼바이저(Hypervisor)로도 불리는 가상 기계 관리자가 한 컴퓨터에서 실행되는 여러 게스트 운영체제를 관리한다.

하이퍼바이저(Hypervisor) 운영체제와 하드웨어 사이를 연결해 주기 때문에 하이퍼바이저(Hypervisor)는 게스트 운영체제의 CPU , 메모리 , 스토리지 사용을 제어할 수 있고 심지어 게스트 운영체제를 한 하드웨어에서 다른 하드웨어로 이전할 수 있다.

나. 배경설명

지난 10년간의 데이터 센터의 추세는 탈집중화(Decentralization) 및 수평확장(Horizontal scaling)으로 이루어 지고 있다.

집중화된 서버는 비싸고 유지하기에도 비용이 많이 들었고 이러한 비용 대문에 에플리케이션은 규모가 큰 중앙 서버에서 저렴한 범용 하드웨어를 사용하는 독립 서버로 이전되었다.

이러한 탈 집중화는 각 에플리케이션에 대한 패치나 업그레이드가 다른 시스템에 영향을 주지 않고 이루어질 수 있었기 때문에 에플리케이션의 유지 보수를 용이하게 하였고 같은 이유에서 탈 집중화는 보안성을 향상시키고 침투당한 시스템이 네트워크의 다른 시스템과 분리되어 있기 때문이다.

에플리케이션들을 각각의 하드웨어로 나누는 방식은 전력 사용량 증가 물리적 공간 증가 관리 비용의 증가와 같은 문제를 가지고 있고 이러한 비용을 모두 합치면 서버 하나를 1년간 관리하는데 비용이 증가한다. 이러한 관리 비용 외에도 탈 집중화는 각 서버의 활용 비율을 감소시키고 평균적으로 서버 처리 능력의 85%가 쓰이지 않게 되었다.

종종 이러한 비효율성들이 탈 집중화가 약속하는 비용과 인력 절감을 무의미하게 만들고 있다.

가상화는 중앙 집중 방식과 분산 방식을 절충하는데 하나의 에플리케이션을 위해 컴퓨터 하나를 통째로 구입하여 관리하는 대신 각각의 에플리케이션들은 독립된 운영체제들 위에 올라가지만 그 모든 운영체제는 하나의 하드웨어 위에서 실행하도록 할 수 있다.

이렇게 하여 하드웨어 자원을 최대한 활용하면서도 안정성이나 보안성과 같은 탈 집중화의 장점을 얻을 수 있다.

다. 가상화의 이점

일단 가상화가 운영체제를 하드웨어로부터 분리하면 여러 가지 유용한 도구를 사용할 수 있는 되었는데 가상화는 운용자로 하여금 게스트 운영체제가 사용할 수 있는 CPU 메모리 스토리지 기타 자원의 양을 제어할 수 있게 되었고 따라서 각 게스트 운영체제는 필요한 만큼만 자원을 받게 된다 이렇게 함으로써 통제 불능의 프로세스가 사용 가능한 모든 CPU 메모리를 차지하는 비율을 감소할 수 있으며 IT스탭이 특정 에플리케이션의 요구 조건을 만족시키기 위해 자원을 할당할 수 있게 되었다.

게스트 운영체제가 하드웨어와 분리되어 있기 때문에 운영체제를 한 기계에서 다른 기계로 동적으로 이동하는 일도 가능해지고 어떤 게스트 운영체제가 피크 시간대에 자원을 많이 사용하기 시작하면 운용자는 이 게스트를 사용량이 적은 다른 서버로 옯길 수 있다.

이러한 유연성은 예전의 서버 프로비저닝과 수용량 예측의 개념을 바꾸게 되었고 가상화 기술을 사용하면 CPU 메모리 스토리지 등을 단지 컴퓨터 자원의 저장소로 생각하여 에플리케이션의 필요에 따라 재분배할 수 있다.

라. 가상화의 방식

1) 전가상화(Full Virualization)

가상화는 여러 방식으로 구현되었는데 전가상화(Full Virualization) 알려진 방식에서는 하이퍼바이저(HyperVisor) 운영체제를 돌릴 수 있는 하드웨어 에물레이트한다.

VMWare(R) 좋은 예인데 이 방식의 가장 큰 장점은 유연성이다 RISC 아키텍쳐에서 돌아가는 운영체제를 인텔 아키텍쳐의 게스트로 사용할 수 있다.

가장 생각하기 쉬운 방법이지만 하드웨어 전체를 소프트웨어로 에물레이트 하려고 하다보니 성능에 상당한 문제가 있으며 아주 힘든 최적화 과정을 거치더라도 전가상화된 환경에서 쓸만한 성능을 얻기는 매우 어렵다.

2) 단일 커널 이미지(Single Kernel Image)

다른 쪽 끝에는 단일 커널 이미지(Single Kernel Image) 방식이 있는데 이 방식은에서는 호스트 운영체제가 자기 자신의 복사본을 만들어 내는데 이러한 방식은 Swsoft의 Virtuozzo와 Sun Solaris 의 Zones 사용하고 있다.

단일 커널 이미지 방식은 가벼운 가상화로 생각할 수 있는데 이 방식이 전가상화 방식의 성능 문제를 피해가기는 하지만 그 댓가로 유연성을 잃어 버린다.

예를 들어 이 방식으로 한 하드웨드에서 다른 버전이나 심지어는 패치 레벨만 다른 운영체제를 같이 사용하는 것이 불가능하며 안정성과 보안성도 낮아진다.

만약 커널이 침투당하면 시스템의 모든 운영체제 복사본이 침투당한다고 생각하면 된다.

3) 반가상화(Paravirtualization)

Xen Source(R)의 오픈 소스 제품인 Xen 사용하는 반가상화(Paravirtualization) 방식은 이들 두 방식을 절충 하는데 하드웨어 전체를 에뮬레이트 하는 대신 반가상화는 운영체제를 약간 수정하여 하이퍼바이저(HyperVisor) 관리하는 하드웨어 자원을 직접 접근할 수 있게 한다.

하드웨어 기반 가상화로 불리며 성능을 크게 향상 시키는데 유연성을 유지하기 위해 게스트 운영체제는 호스트 운영체제와 분리되어 전가상화에서 그러하듯이 전혀 다른 운영체제들이 하이퍼바이저(HyperVisor) 안에서 동시에 실행될 수 있으며 이런 면에서는 반가상화는 오버헤드가 적은 전가상화 생각할 수 있다.

Xen 3.0의 릴리즈로 가상화 기술은 완숙기에 접어들었는데 Xen은 Intel의 VT 기술을 지원하는 최초의 가상화 솔류션으로 VT 기술은 게스트 운영체제들이 가상화 프로세스가 보통 사용하는 0.5%에서 3.5% 사이의 오버헤드 외에는 프로세서와 같은 속도로 실행될 수 있게 한다.

게스트 운영체제들은 하나의 기계에서 다른 기계로 0.1초 안에 이전되고 하이퍼바이저(HyperVisor)를 통해 운영자는 CPU 메모리 디스크블럭 I/O 장치의 사용을 동적으로 제어할 수 있다.

마. 가상화의 가능성

여러 가지 응용이 가능한테 VLAN 네트워크 관리자가 네트워크의 물리적 배치에 신경쓰지 않게 해 주듯이 가상화된 운영체제는 관리자가 운영체제와 설치된 하드웨어를 신경쓰지 않게 해준다.

데이터 센터의 하드웨어는 진정으로 일용품화(Commoditized) 되고 O/S 및 에플리케이션에 영향없이 하드웨어를 업그레이드 하는 일이 가능하게 되고 다운 타임은 극적으로 감소될 수 있다.

관리자들은 더 이상 업그레이드 전에 모든 에플리케이션들이 새 운영체제에 인증될 때가지 기다릴 필요없이 게스트 운영체제를 이전하면 모든 것이 전과 같이 동일하게 동작한다.

테스팅을 할때 테스트 시스템을 쉽게 만들고 복사할 수 있게 되어 테스팅 하드웨어나 추가 개발 서버가 필요없게 되었다.

보안 면에서 가상화는 여러 흔한 문제에 우아한 해법을 제공하는데 보안 정책이 시스템들을 방화벽으로 분리하도록 하는 환경에서 분리된 시스템은 안전하게 같은 물리적 서버위에 올라갈 수 있다.

개발 환경의 경우 각 개발자는 다른 개발자의 오작동 하는 코드에 영향을 받지 않는 각자의 샌들박스를 가질 수 있다.

가상화가 시스템 모니터링 솔루션이나 새틀라이트 서버와 같은 프로비저닝 관리도구와 연결되면 피크 시간대에 시스템 정기점검에 시스템은 적합한 하드웨어로 이전될 수 있다.

바. 가상화 종류

1) VMWare

VMWare(R) 개발되었고 라이센스 방식은 상용이며 전가상화 방식을 사용하고 GUI관리툴을 제공한다.

사용하기 아주 쉽고 가장 큰 장점은 유연성에 있으나 성능이 그리 좋지 않다.

2) Xen

XenSource(R)에서 개발되었고 라이센스 방식은 GPL2 로 반가상화 방식을 체용하고 있다.

Console 모니터링 및 관리 도구를 제공하고 GUI 관리도구가 필요하다

성능이 뛰어나고 Host와 다른 O/S도 Guest O/S 설치 가능하다.

3) Virtuozzo

Swsoft(R)에서 개발되었고 라이센스 방식은 상용으로 Single Kernel Image 방식을 사용하고 관리자용 및 고객용 GUI 제어툴을 제공한다.

성능이 뛰어나고 Host와 같은 O/S 만 Guest O/S 설치 가능하다.

4) 각 솔류션의 장/단점 비교

ㆍ VMWare 장점은 사용하기 쉽고 단점은 많은 자원을 필요로 하며 성능이 떨어지며 HOST OS 는 리눅스와 윈도우즈 사용하고 Guest OS는 리눅스 윈도우즈 BSD 솔라리스를 사용한다.

ㆍ Xen 장점은 자원을 적게 차지하며 성능이 뛰어나고 단점은 GUI 관리 도구 없으며 HOST OS는 리눅스와 윈도우즈 사용하고 Guest OS 리눅스 FreeBSD 사용하고 커널에 Xen 추가 해야 한다.

ㆍ Virtuozzo 장점은 GUI 관리도구를 제공하며 성능이 뛰어나고 단점은 안정성과 보안성이 낮다 HOST OS와 Guest OS의 커널이 같기 때문에 HOST OS의 영향을 받는다 HOST OS 는 리눅스와 윈도우즈 사용하고 Guest OS는 리눅스 윈도우즈를 사용한다.

사. 가상화 응용 분야

1) VPS(Virtual Private Servers)

VPS는 Virtual Private Servers의 약자로 가상화 두구를 이용하여 한 대의 물리적 서버안에 독립적인 여러 가상 서버를 만들어 단독 서버처럼 호스팅 하는것을 말한다.

⃞  호스팅 업체 서비스 차이점 비교

ㆍ 서버 호스팅은 가격이 비싸고 운영권한은 Root 권한이고 소유권 이전이 가능한다

ㆍ VPS 서비스는 가격이 보통이며 운영권한은 Root 권한이고 서버 소유권은 없다.

ㆍ 웹 호스팅은 가격이 저렴하고 운영권한은 일반유저 권한이며 서버 소유권은 없다.

2) 연구소

기존의 테스트 서버가 많이 필요하고 효율성이 떨어진다.

가상화 도구를 이용하여 테스트 서버가 적게 필요하며 효율성도 높아진다.

3) 기업

일반 기업의 시스템 구조는 Server Consolidation 은 웹서버와 DNS 서버 Mail 서버로 나누어 진다.

가상화 도구를 도입하면 기업의 시스템 구조를 가상화 서버에서 DNS , Web , Mail 를 같이 운용할 수 있다.

2. Xen Setup for Debian and Ubuntu

Debian Sarge 및 Ubuntu 오픈소스 운영체계에 Xen 를 설치하기 위해 단계별로 구축 가이드를 제공한다.

Xen은 사용자의 Host 운영체계(dom0)의 아래에 Guest 운영체제의 가상 시스템(Virtual Machines)의 domUS 구축한다.

Xen 를 사용하여 사용자는 독립적(메일서버을 위한 가상화 시스템, 매우 많은 트레픽을 가지고 있는 웹사이트를 위한 가상화 시스템, DNS를 위한 사용자 환경의 가상화 웹사이트)이며 비용과 안전성 면에서 효율적이다.

Host 운영체제(dom0) 및 Guest 운영체제(domU)은 Debian Sarge의 오픈소스 운영체제를 사용한다.

가. Host System(dom0) 인스톨

시스템의 OS 커널은 2.6 버전을 사용하고 dom0 FQDN(시스템을 지칭하는 완전한 이름으로 호스트 이름과 도메인 이름으로 구성)는 server1.example.com 으로 설정하고 호스트 네임은 server1 도메인 이름은 example.com 으로 지정한다.

server1.example.com 의 IP 주소는 192.168.0.100 으로 설정한다.

*FQDN 사용자의 시스템 환경에 맞게 바꿔서 입력하면 된다.

1) 파티셔닝 테이블

ㆍ /boot 100BM (ext3)

ㆍ Swap Memory 1GB

ㆍ / 2GB (ext3)

ㆍ /vserver

* 하나의 파티션 테이블에 모든 것을 인스톨할 수 있다.

2) Grub 설정

/boot/grub/menu.lst

title	Xen / XenLinux 2.6.11.12-xen0

root	(hd0,0)

kernel	/boot/xen.gz dom0_mem=65536

module	/boot/vmlinuz-2.6.11.12-xen0	root=/dev/hda6	ro console=tty0

나. dom0 네트워크 설정

DHCP를 통해 네트워크 IP 주소를 가져온다면 아래와 같이 Static IP 주소로 변경후 네트워크를 재 시동 한다.

ㆍ /etc/network/interfaces 항목을 Vi 편집기로 열어서 아래와 같이 수정한다.

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface

auto lo

iface lo inet loopback

# The first network card - this entry was created during the Debian installation

# (network, broadcast and gateway are optional)

auto eth0

iface eth0 inet static

address 192.168.0.100

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.0.1

ㆍ/etc/init.d/networking restart

ㆍ/etc/resolv.conf 아래와 같이 네임서버명을 입력한다

search	server

nameserver	xxx.xxx.xxx.xxx

ㆍecho server1.example.com > /etc/hostname

ㆍ/bin/hostname -F /etc/hostname

다. Xen 인스톨

Xen 웹사이트에서 바이러리 패키지를 다운받아 인스톨 하는 방법과 Xen Kernels 소스를 가지고 와서 컴파일 하는 방법이 있다.

1) 바이러리 패키지(Binary Package) 인스톨

아래와 같은 명령으로 인스톨할 수 있다

ㆍ apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig

ㆍ apt-get install screen ssh debootstrap python python2.3-twisted iproute bridge-utils libcurl3-dev

ㆍ cd /usr/src

ㆍ wget http://www.cl.cam.ac.uk/research/srg/netos/xen/downlaods 최근버전의 파일을 다운받는다.

ㆍ tar xvfz xen-install-x86_32.tgz

ㆍ cd xen-install

ㆍ ./install.sh

ㆍ mv /lib/tls lib/tls.disabled

ㆍ Xen 서비스를 시작하기 위해 다음과 같이 입력한다

update-rc.d xend defaults 20 21

update-rc.d xendomains defaults 21 20

ㆍ 부트로더 Grub 에 /boot/grub/menu.lst 을 다음과 같이 편집한다.

title	xen / XenLinux 2.6.11

Kernel	/xen.gz	dom0_mem=64000

module	/vmlinuz-2.6.11-xen0	root=/dev/hda6 ro consol=tty0

ㆍ shutdown -r now 재시동 한다.

2) 소스(Sources) 인스톨

아래와 같은 명령으로 인스톨할 수 있다.

ㆍ apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig

ㆍ  apt-get install iproute bridge-utils python-twisted gcc-3.3 binutils make libcurl3-dev zlib1g-dev python-dev transfig bzip2 screen ssh debootstrap libcurl3-dev libncurses5-dev

ㆍ mkdir xen

ㆍ cd xen

ㆍ mkdir archive

ㆍ cd archive

ㆍ  wget http://www.kernel.org/pub/linux/kernel/v2.6 최근버전의 커널의 파일을 다운 받는다.

ㆍ wget http://www.cl.cam.ac.uk/research/srg/netos/xen/downloads 최근버전의 소스를 다운받는다.

ㆍ tar -xvfz archive/xen-src.tgz

ㆍ tar -xvjf archive/linux-2.6.11.tar.bz2

ㆍ cd xen

ㆍ make world

ㆍ make install

ㆍ sh ./install.sh

ㆍ update-rc.d xend defaults 20 21

ㆍ update-rc.d xendomains defaults 21 20

Xen- , iptables- , quota- , dummy 지원하는 새로운 dom0 커널을 아래와 같이 컴파일 한다.

cd ..

mv /lib/tls /lib/tls.disabled

cp -al linux-2.6.11.12 linux-2.6.11.12-xen0

cd xen/linux-2.6.11-xen-sparse/

./mkbuildtree ../../linux-2.6.11.12-xen0/

cd ../..

echo "-xen0" > linux-2.6.11.12-xen0/localversion-xen

diff -Naur linux-2.6.11.12 linux-2.6.11.12-xen0 > archive/linux-2.6.11.12-xen0.patch

cd linux-2.6.11.12

patch -p1 < ../archive/linux-2.6.11.12-xen0.patch

cd ../

mkdir install

cd linux-2.6.11.12-xen0

cp arch/xen/configs/xen0_defconfig .config

ARCH=xen; INSTALL_PATH=../install; INSTALL_MOD_PATH=../install

export ARCH INSTALL_PATH INSTALL_MOD_PATH

make oldconfig

make menuconfig

Kernel configuration 메뉴에서 quota,iptables,dummy 모듈을 아래와 같이 설정한다.

File systems --> [*] Quota support

<M> Old quota format support

<M> Quota format v2 support

Device Drivers ---> Networking support ---> <M> Dummy net driver support

Device Drivers ---> Networking support ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)

[*] means: build into the kernel statically.

<M> means: build as a kernel module.

make modules

make modules_install

make install

커널 컴파일이 끝나며 커널을 아래와 같이 복사한다.

cd ../install/

cp boot/* /boot

cp -r lib/modules/2.6.11.12-xen0/ /lib/modules

cp -r usr/include/xen /usr/include

ㆍ 부트로더 Grub 에 /boot/grub/menu.lst 을 다음과 같이 편집한다.

title	xen / XenLinux 2.6.11

root (hd0,0)

Kernel	/xen.gz	dom0_mem=65536

module	/vmlinuz-2.6.11-xen0	root=/dev/hda6 ro consol=tty0

ㆍ shutdown -r now 재시동 한다.

가상 시스템에서 사용할 새로운 domU 커널을 컴파일 한다.

cd ~/xen

cd linux-2.6.11.12

make clean

cd ../

cp -al linux-2.6.11.12 linux-2.6.11.12-xenU

cd xen-2.0/linux-2.6.11-xen-sparse/

./mkbuildtree ../../linux-2.6.11.12-xenU/

cd ../..

echo "-xenU" > linux-2.6.11.12-xenU/localversion-xen

diff -Naur linux-2.6.11.12 linux-2.6.11.12-xenU > archive/linux-2.6.11.12-xenU.patch

cd linux-2.6.11.12

patch -p1 < ../archive/linux-2.6.11.12-xenU.patch

cd ../

rm -fr install

mkdir install

cd linux-2.6.11.12-xenU

cp arch/xen/configs/xenU_defconfig .config

ARCH=xen; INSTALL_PATH=../install; INSTALL_MOD_PATH=../install

export ARCH INSTALL_PATH INSTALL_MOD_PATH

make oldconfig

make menuconfig

Kernel configuration 메뉴에서 quota,iptables 모듈을 아래와 같이 설정한다.

File systems --> [*] Quota support

<M> Old quota format support

<M> Quota format v2 support

Device Drivers ---> Networking support ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)

[*] means: build into the kernel statically.

<M> means: build as a kernel module.

make modules

make modules_install

make install

커널 컴파일이 끝나며 커널을 아래와 같이 복사한다

cd ../install/

cp boot/* /boot

cp -r lib/modules/2.6.11.12-xenU/ /lib/modules

cp -r usr/include/xen /usr/include

라. 가상시스템

1) 가상시스템 생성

기본 Debian 시스템에 가상시스템 이미지를 생성하고 가상 시스템의 템플렛 이미지로 새로운 가상 시스템을 생성하고 새로운 Xen 구성 파일을 만들어 준다(Mail server , web server , DNS server 기타 등등) 이미지는 /vserver 파티션에 위치한다.

mkdir /vserver/vm_base

mkdir /vserver/images

1GB 이미지 파일 및 500MB 스왑 이미지를 만들어준다

dd if=/dev/zero of=/vserver/images/vm_base.img bs=1024k count=1000

dd if=/dev/zero of=/vserver/images/vm_base-swap.img bs=1024k count=500

파일 포맷 형식은 ext3 의 /vserver/images/vm_base.img 와 vm_base-swap.img 를 사용한다.

mkfs.ext3 /vserver/images/vm_base.img

mkswap /vserver/images/vm_base-swap.img

2) 이미지 설치

이미지를 마운트 하기위해 아래와 같은 명령어를 입력한다.

mount -o loop /vserver/images/vm_base.img /vserver/vm_base

debootstrap --arch i386 sarge /vserver/vm_base/

chroot /vserver/vm_base

apt-setup

Archive access method for apt : <-- http

/etc/apt/sources.list

deb http://ftp2.de.debian.org/debian/ stable main

deb-src http://ftp2.de.debian.org/debian/ stable main

deb http://security.debian.org/ stable/updates main

apt-get update

apt-get install localconf

로케일 선택은 기본값으로 en_US 설정 되어있다.

base-config 의 메뉴 인스톨 옵션

configure timezone

set up users and passwords

select and install packages

finish configuring the base system

nfs-common 및 /etc/hostname 을 제거한다.

apt-get remove nfs-common

rm -rf /etc/hostname

/etc/fstab 를 다음과 같이 편집한다.

/dev/hda1	/	ext3	defaults	1	2

/dev/hda2	none	swap	sw	0	0

/dev/pts	devpts	gid=5,mode=620	0	0

none	/dev/shm	tepfs	default	0	0

/etc/network/interfaces 다음과 같이 수정한다

auto	lo

iface	lo	inet	loopback

address	127.0.0.1

netmask	255.0.0.0

/etc/hosts 아래와 같이 입력한다.

127.0.0.1	localhost.localdomain	localhost

::1	ip6-localhost	ip6-loopback

fe00::0	ip6-localnet

ff00::0	ip6-mcastprefix

ff02::1	ip6-allnodes

ff02::2	ip6-allrouters

ff02::3	ip6-allhosts

가상 시스템의 이미지의 커널 모듈을 복사한다

cp -dpR /lib/modules/2.6.11.12-xenU /vserver/vm_base/lib/modules/

mv /vserver/vm_base/lib/tls /vserver/vm_base/lib/tls.disabled

umount /vserver/vm_base

3) 가상 시스템 구동

첫 번째 vm01 가상 시스템을 만들고 구동 시킨다.

cp -pf /vserver/images/vm_base.img /vserver/images/vm01.img

cp -pf /vserver/images/vm_base-swap.img /vserver/images/vm01-swap.img

Xen 환경설정 파일 /etc/xen/vm01-config.sxp 파일을 수정한다.

name ="vm01"

kernel ="/boot/vmlinuz-2.6.11.12-xenU"

root ="/dev/hda1"

memory =128

disk = ['file:/vserver/images/vm01.img,hda1,w','file:/vserver/images/vm01-swap.img,hda2,w']

# network

nics=1

dhcp ="off"

ip="192.168.0.101"

netmask="255.255.255.0"

gateway="192.168.0.1"

hostname="vm01.example.com"

가상시스템 vm01를 자동으로 실행하기위해서는 아래와 같이 명령어를 입렵한다.

ln -s /etc/xen/vm01-config.sxp /etc/xen/auto

xm create -c /etc/xen/vm01-config.sxp

vm01 가상머신의 셧다운은 dom0 쉘에서 다음과 같이 입력한다.

xm shutdown vm01

Xen 명령어

xm create -c /path/to/config 가상시스템 구동

xm shutdown <name> 가상시스템 종료

xm list 구동중인 시스템 리스트

xm console <name> 가상시스템 로그인

xm help 명령어 리스트

4) 가상 시스템 추가

처음 생성된 가상시스템에 새로운 가상시스템을 추가한다.

cp -pf /vserver/images/vm_base.img /vserver/images/vm02.img

cp -pf /vserver/images/vm_base-swap.img /vserver/images/vm02-swap.img

Xen 환경설정 파일 /etc/xen/vm01-config.sxp 파일을 수정한다

name ="vm02"

kernel ="/boot/vmlinuz-2.6.11.12-xenU"

root ="/dev/hda1"

memory =64

disk = ['file:/vserver/images/vm02.img,hda1,w','file:/vserver/images/vm02-swap.img,hda2,w']

# network

nics=1

dhcp ="off"

ip="192.168.0.102"

netmask="255.255.255.0"

gateway="192.168.0.1"

hostname="vm02.example.com"

가상시스템 실행

xm create -c /etc/xen/vm02-config.sxp

가상시스템을 부트로더 실행시 자동으로 실행하기 위해서는 아래의 심볼릭 링크를 입력한다.

ln -s /etc/xen/vm02-config.sxp /etc/xen/auto

5) 가상시스템에서 가상 로컬 네트웍 생성(옵션)

소스컴파일된 Xen 커널에서 iptables , dummy 네트워크 드라이브 모듈을 사용하여 유저의 시스템에 하나의 네트워크 카드 및 하나의 IP 주소를 가지고 있다면 가상시스템을 이용하여 웹서버(vm01) 및 메일서버(vm02)의 IP 주소(vm01, vm02 , dom0)를 NAT 네트워크 주소 변환 이용하여 가상 로컬 네트워크를 사용한다.

하나의 하드웨어 네트워크 디바이스(eth0) 가지고 두 번째의 네트워크 인터페이스(dummy0) 설치해서 사용한다.

echo dummy >> /etc/modules

/etc/network/interfaces 아래와 같이 dummy0 에 IP 주소 192.168.3.1 추가한다.

auto	dummy0

iface	dummy	inet	static

address	192.168.3.1

netmask	255.255.255.0

dummy0를 xen-br0(Xen 브릿지) 묶으려면 /etc/xen/scripts/network 편집해야 한다.

netdev=${netdev:-eth0} -> netdev=${netdev:-dummy0}

당연히 /etc/xen/vm01-config.sxp의 네트워크를 조정하고.

/etc/xen/vm02-config.sxp의 vm01에 있는 IP 주소 192.168.3.2 만들어 주어야 한다.

name ="vm01"

kernel ="/boot/vmlinuz-2.6.11.12-xenU"

root ="/dev/hda1"

memory =128

disk = ['file:/vserver/images/vm01.img,hda1,w','file:/vserver/images/vm01-swap.img,hda2,w']

# network

nics=1

dhcp ="off"

ip="192.168.3.2"

netmask="255.255.255.0"

gateway="192.168.3.1"

hostname="vm01.example.com"

/etc/network/if-up.d/iptables 추가한다.

#!/bin/sh

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

### Port Forwarding ###

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.3.2:80

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 192.168.3.3:25

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 110 -j DNAT --to 192.168.3.3:110

첫 번째 규칙은 dom0을 192.168.3.2에 80포트(http) 포워드하고 웹서버 vm01(192.168.3.2)는 dom0의 80포트 웹서버에게 포워딩 한다.

두 번째 규칙은 25포트(smtp) 및 110포트(pop3)의 메일서버 vm02(192.168.3.3) 포워딩 한다

위에 스크립트 파일을 실행하기 위해서는 아래와 같이 소유권을 변경한다.

chmod 755 /etc/network/if-up.d/iptables

21포트(ftp)를 vm01에서 포워드 하려면 아래와 같이 규칙을 만들면 된다.

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 21 -j DNAT --to 192.168.3.2:21

3. Xen 관리도구

Debian/Linux 운영체제의 시스템에서 Xen-tools , Xen-Sehll , Argo 설치와 사용법을 살펴보고  Xen 가상화 시스템의 관리를 위하여 매우 유용한 도구들을 제공한다.

Xen-tools 사용하기 편리한 Perl 스크립트 컬렉션으로 Xen 가상화 시스템의 도메인을 생성하고 업데이트 및 삭제할 수 있다.

Xen-shell 서버 관리자의 도움 없이 사용자의 Xen 가상화 시스템을 관리할 수 있게 Command-Line 인터페이스 제공한다.

Argo는 명령어 메뉴를 통하여 웹 인터페이스 기반의 Xen 가상화 시스템의 관리툴을 제공한다.

위에 3가지의 Xen 관리도구는 Debian 시스템에서 개발되었지만 다른 환경의 운영 시스템에서도 사용할 수 있다.

Xen 가상화 시스템 프로그램에서 자주 사용하는 기능들을 모아서 사용자에 편리함을 제공하고 Xen 가상화 시스템의 추가나 삭제 등 사용자의 의사에 따라 편집이 가능하다.

설치하기에 앞서 Xen 가상화 시스템의 호스트 네임 server1.example.com 으로 설정하고 도메인은 dom0 으로 입력하고 IP 주소는 192.168.0.100 설정 게이트 주소는 192.168.0.1 으로 설정하고 guest 도메인의 디렉토리는 /vserver/images 설정

가. Xen-Tools

Xen-Tools는 사용자의 편의를 최대한 고려해서 쉽고 간편하게 사용할 수 있도록 만들어져 있으며 간단한 Perl 스크립트 컬렉션으로 개발 되었다.

사용자의 가상화 시스템 컴퓨터의 GNU/리눅스 운영체제에서 새로운 Xen Host를 생성할 수 있다.

ㆍ Full Network Setup

ㆍ Multiple Static IP Addresses

ㆍ DHCP

ㆍ Installation of OpenSSH

사용자의 새로운 인스턴스는 유저의 Guest 시스템을 복사할 수 있고 부트 이미지를 생성할 수 있다.

1) 인스톨 방법

사용자는 여러 가지의 인스톨 방식을 선택할 수 있다.

ㆍ Install Debootstrap

ㆍ Install rpmstrap

ㆍ Copy Image

ㆍ Untar Image

2) 유연성

모듈의 의존성이 낮기 때문에 GNU/Linux 매우 단순히 설치할 수 있다.

3) Xen-Tools 인스톨

처음 설치시 필요한 조건

apt-get install libtext-template-perl perl-doc

Xen-tools 설치

cd /tmp

wget wget http://xen-tools.org/software/xen-tools/xen-tools.tar.gz 최근 버전 다운 받는다.

tar xvfz xen-tools.tar.gz

cd xen-tools

make install

/etc/xen-tools/xen-tools.conf를 편집

vi /etc/xen-tools/xen-tools.conf

gateway   = 192.168.0.1

netmask   = 255.255.255.0

passwd = 1

kernel = /boot/vmlinuz-2.6-xenU

#initrd = /boot/initrd.img-2.6.16-2-xen-686

mirror = http://ftp2.de.debian.org/debian/

passwd 사용자의 새로운 guest 도메인 생성시 루트 패스워드를 지정할 수 있다.

Kernel 사용자의 domU 커널을 guest 도메인에서 사용할 수 있다.

#initrd 이미지를 필요로 하지 않으며 다른 방법으로 구성할 수 있다.

mirror 데미안 미러 사용

첫 번째 guest 도메인 생성 vm03.example.com IP 주소 192.168.0.103

xen-create-image --hostname=vm03.example.com --ip=192.168.0.103 \

--netmask=255.255.255.0 --gateway=192.168.0.1 --dir=/vserver/images \

--dist=sarge --debootstrap

Debian의 debootstrap 도구를 사용하기 위하여 guest 도메인 vm03.example.log 생성

tail -f /var/log/xen-tools/vm03.example.com.log

guest 도메인 생성후 /etc/xen/vm03.example.com.cfg 체크

vi /etc/xen/vm03.example.com.cfg

kernel  = '/boot/vmlinuz-2.6-xenU'

memory  = '128'

root    = '/dev/sda1 ro'

disk    = [ 'file:/vserver/images/domains/vm03.example.com/disk.img,sda1,w', 'file:/vserver/images/domains/vm03.example.com/swap.img,sda2,w' ]

name    = 'vm03.example.com'

vif  = [ 'ip=192.168.0.103' ]

on_poweroff = 'destroy'

on_reboot   = 'restart'

on_crash    = 'restart'

새로 생성된 가상 시스템 실행

xm create -c /etc/xen/vm03.example.com.cfg

man xen-xreate-image 사용하여 관련 명령어 도움말을 살펴봐야 한다.

xen-create-image 예시

xen-create-image --size=2Gb --swap=128Mb --hostname=vm04.example.com \

--ip=192.168.0.104 --netmask=255.255.255.0 --gateway=192.168.0.1 --dir=/vserver/images \

--dist=sarge --debootstrap --fs=ext3 --kernel=/boot/vmlinuz-2.6-xenU --memory=32Mb \

--image=sparse --mirror=http://ftp2.de.debian.org/debian/ --passwd

새로운 가상화 시스템 도메인 생성 vm04.example.com

/etc/xen/vm04.example.com.cfg 생성

vi /etc/xen/vm04.example.com.cfg

kernel  = '/boot/vmlinuz-2.6-xenU'

memory  = '32'

root    = '/dev/sda1 ro'

disk    = [ 'file:/vserver/images/domains/vm04.example.com/disk.img,sda1,w', 'file:/vserver/images/domains/vm04.example.com/swap.img,sda2,w' ]

name    = 'vm04.example.com'

vif  = [ 'ip=192.168.0.104' ]

on_poweroff = 'destroy'

on_reboot   = 'restart'

on_crash    = 'restart'

새롭게 구성된 가상 시스템 실행

xm create -c /etc/xen/vm04.example.com.cfg

xen-tools 외에 다른 3가지 스크립트

xen-update-image 사용자의 guest 도메인에서 사용되는 패키지들을 최신 버전으로 업데이트 가능하다.

xen-update-image --dir=/vserver/images vm03.example.com

xen-list-images 사용자의 모든 guest 도메인 목록을 생성한다.

server1:~# xen-list-images

Name: vm03.example.com

Memory: 128

IP: 192.168.0.103

Name: vm04.example.com

Memory: 32

IP: 192.168.0.104

xen-delete-image 사용자의 guest 도메인을 삭제한다.

xen-delete-image --dir=/vserver/images vm03.example.com

나. Xen Shell

X shell은 사용하기 편리한 콘솔 에플리케이션으로 사용자의 Xen 인스턴을 관리 하는 도구로 웹 베이스 기반의 관리툴이다.

특징으로는 명령어 히스토리 및 명령어 통합 기능이 있고 Xen 클라이언트 가상 시스템을 사용하는 유저는 상위 시스템에 접근할 수 없고 다른 클라이언트의 사용자의 리스트만을 볼수 있기 때문에 보안에 취약점을 보충할 수 있다.

ㆍ Xen guest의 부팅 및 종료

ㆍ Xen guest의 리부팅

ㆍ Xen guest의 시리얼 콘솔 연결

ㆍ 이미지 편집

ㆍ Reverse DNS 정보

ㆍ 로그인 패스워드 설정

1) 이미지 편집

클라이언트 계정의 사용자가 실수로 Xen 가상화 시스템 클라이언트에 문제 발생시 기존 이미지를 다시 구축하거나 편집을할 수 있다.

2) Reverse DNS

Xen-shell는 IP번호를 장비의 이름으로 매핑 지원한다.

3) Xen-Shell 인스톨

Xen-shell은 SSH을 경우하여 상위 시스템 dom0 에 연결되고 사용자 자신의 Xen 가상화 시스템을 제어할 수 있도록 Command-Line 의 상호 작용을 제공한다.

오직 Xen 가상화 시스템을 콘트롤할 수 있도록 요구된 명령어를 사용하며 콘트롤을 제외한 다른 일은할 수 없고 사용자의 가상화 시스템의 재생성된 이미지의 리셋을 허용한다.

사용자을 생성 및 패스워드 부여

useradd -d /home/bob -m -g users -s /bin/bash bob

passwd bob

새로운 사용자 bob 의 가상화 시스템 생성

xen-create-image --hostname=bob --ip=192.168.0.105 --netmask=255.255.255.0 \

--gateway=192.168.0.1 --dir=/vserver/images --dist=sarge --debootstrap

guest 도메인 boot up

xm create -c /etc/xen/bob.cfg

guest 도메인 shutdown

xm shutdown bob

xen-shell 사용하기 위해 필요한 요소 설치

aptj-get install sudo libterm-readline-gnu-perl

xen-shell 인스톨

cd /tmp

wget http://xen-tools.org/software/xen-shell/xen-shell.tar.gz

tar xvfz xen-shell.tar.gz

cd xen-shell

make install

새로 생성된 사용자 계정의 로그인 쉘을 변경

chsh -s /usr/bin/xen-login-shell bob

Debian 운영체제의 기본 에디터 vi 변경

update-alternatives --config editor

/etc/sudoers 및 visudo을 편집하고 /usr/sbin/xm 을 사용하도록 허용해야 한다 다른 방법으로는 xen-shell의 reimage 를 사용할 수 없기 때문에 사용할 수 있도록 해주어야 한다.

visudo

User_Alias   XENUSERS = bob

Cmnd_Alias   XEN      = /usr/sbin/xm

Cmnd_Alias   XENIMG   = /usr/bin/xen-create-image

XENUSERS     ALL      = NOPASSWD: XEN,XENIMG

사용자의 reimage 사용하기 위하여 쉘 스크립트 image.sh 필요하며 guest 도메인의 사용자를 리셋 및 생성할 수 있다.

vi /home/bob/image.sh

#!/bin/sh

/usr/bin/sudo /usr/bin/xen-create-image --hostname=bob --ip=192.168.0.105 \

--netmask=255.255.255.0 --gateway=192.168.0.1 --dir=/vserver/images \

--dist=sarge --debootstrap --force

생로 생성된 스크립트 image.sh 실행할 수 있도록 수정

chmod 755 /home/bob/image.sh

SSH 클라이언트 사용해서 dom0(192.168.0.100) 접속

Xen-shell 명령어

ㆍ boot - Xen guest 도메인 shutdown

ㆍ console - Xen guest 콘솔 접근

ㆍ serial - Xen guest 콘솔 접근

ㆍ exit - shell 나가기

ㆍ quit - shell 나가기

ㆍ help - 도움말 살펴보기

ㆍ passwd - 보통 텍스트 비밀 번호를 사용하면 클라이언트가 OpenSSH 경유하여 상위 시스템에 접근한면 사용자의 비밀번호 생성

ㆍ rdns [ip hostname] - 사용자의 reverse DNS 환경을 보거나 또는 업데이트

ㆍ reboot - 사용자의 Xen guest 리부트

ㆍ reimage - 새로운 이미지 생성

ㆍ shutdown - Xen guest 종료

ㆍ status - Xen guest 의 running/booted 또는 shutdown 정보및 가동 시간을 볼 수 있다.

ㆍ uptime - 가동시간을 살펴본다.

ㆍ version - Xen-shell 의 버전

다. Argo

Xen 가상화 시스템에서 사용 가능한 PHP 웹 인터페이스로 PHP 스크립트 및 PHP와 웹서버가 필요하다

apt-get install apache2 apache2-doc

apt-get install libapache2-mod-php4 libapache2-mod-perl2 php4 php4-cli php4-common php4-curl php4-dev php4-domxml php4-gd php4-imap php4-ldap php4-mcal php4-mhash php4-mysql php4-odbc php4-pear php4-xslt

아래와 같은 물음이 나오면 Yes 선택한다.

Continue installing libc-client without Maildir support?

Debian 패키지에서 Argo 인스톨

vi /etc/apt/sources.list

deb     http://www.steve.org.uk/apt sarge main non-free contrib

deb-src http://www.steve.org.uk/apt sarge main non-free contrib

업데이트 실행

apt-get update

1) Argo 설치

apt-get install argo-client-dialog argo-client-php argo-server

Argo 사용하기 위하여 사용자 이름 / 패스트워 생성

vi /etc/argo-server/argo-server.conf

admin : verysecretpassword, *

웹 브라이저를 사용하는 Argo 연결하기 위해 아피치의 vhost 변경

cp /etc/apache2/sites-available/default \

/etc/apache2/sites-available/default_orig

cat /dev/null > /etc/apache2/sites-available/default

vi /etc/apache2/sites-available/default

<VirtualHost *>

DocumentRoot /usr/share/argo/

ServerName   xen

ServerAlias  xen.my.flat

DirectoryIndex index.php

# Logfiles

ErrorLog  /var/log/apache2/xen.log

CustomLog /var/log/apache2/xen.log combined

</VirtualHost>

아파치 재실행

/etc/init.d/apache2 restart

Argo 실행

/etc/init.d/argo-server start

http://192.168.0.100  웹브라우저에 접속

쉘 인터페이스 기반의 Argo 실행

argo-dialog

4. OpenVZ

OpenVZ는 가상화를 이용해 리눅스 복사본을 분할하기 때문에 더 높은 수준의 소프트웨어는 리눅스가 실제로 몇 개의 독립적인 개체로 존재한다고 인식한다

가상 사설 서버라고 불리는 분리된 도메인은 실제로 운영체제의 뒤쪽에 존재하지만 단독으로 재부팅이 가능하다.

OpenVZ 접근방식은 다른 업체들의 제품에도 사용하고 있기 때문에 그다지 새로운것은 아니다

썬의 솔라리스에서 발표된 버전 10에서 이와 동일한 기능인 컨테이너를 구현했고 썬 이전에도 FreeBSD 에서도 jails 기능을 추가 했다.

OpenVZ가 V서버에 비해 더 많은 장점을 가지고 있으며 대규모 호스팅 서비스 업체들이 사용하는 사용하는 상용제품의 한 분파로 완성도 면에서는 더욱 성숙됐고 OpenVZ는 주요 리눅스 지지업체인 SW소프트가 판매하는 Virtuozzo 의 오픈소스 근간을 이루고 있다.

OpenVZ 가상 사설 서버를 도입할 때 한가지 복잡한 요소는 또 다른 기술의 가상 머신 소프트웨어로 최근 인텔 제온과 AMD 옵테론등 X86 프로세서를 채용한 서버에서도 가상화를 위한 분할 옵션이 제공되기 시작했다.

가. OpenVZ 커널 인스톨

CentOS 운영체제에서 구축하고 아래와 같이 OpenVZ 커널을 다운로드 한다

cd /etc/yum.repos.d

wget http://download.openvz.org/openvz.repo

yum install ovzkernel

GRUB 부트로더 환경 설정

기존 GRUB 부트로더

vi /boot/grub/grub.conf

title Cent OS

root (hd0,0)

kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5 quiet rhgb vga=0x31B

initrd /initrd-2.6.8-022stab029.1.img

GRUB 부트로더 변경

title OpenVZ

root (hd0,0)

kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5

initrd /initrd-2.6.8-022stab029.1.img

Sysctl 환경설정

OpenVZ를 정확하게 실행하기 위해서 파라메터 설정을 해주어야 한다

vi /etc/sysctl.conf

# On Hardware Node we generally need

# packet forwarding enabled and proxy arp disabled

net.ipv4.ip_forward = 1

net.ipv4.conf.default.proxy_arp = 0

# Enables source route verification

net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key

kernel.sysrq = 1

# TCP Explict Congestion Notification

#net.ipv4.tcp_ecn = 0

# we do not want all our interfaces to send redirects

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.all.send_redirects = 0

SELinux 환경설정

SELinux를 /etc/sysconfig/selinux 비활성으로 변경한다.

SELINUX=disabled

Conntracks 설정

vi /etc/modprobe.conf

options ip_conntrack ip_conntrack_enable_ve0=1

OpenVZ 리부팅

유틸리티 설치

사용 레벨의 OpenVZ 툴 설치

vzctl - OpenVZ의 VPSs 콘트롤 유틸리티(create,destroy,start,stop,etc)

vzquota - VPSs 쿼터 관리툴

yum install vzctl vzquota

OpenVZ 실행

/sbin/service vz start

나. OS template 설치

template 유틸리티 설치

yum install vzpkg vzyum vzrpm43-python vzrpm44-python

OS template 메타데이터 설치

yum search vztmpl

yum install vztmpl-centos-x.x.x

repository 캐쉬 설치(옵션)

vzpkgcache

template 캐쉬 사용

cd /vztemplate/cache

VE 생성

vzctl create 112 --ostemplate centos-4.x.x.x-default

IP(s) 및 VE 추가

vzctl set 112 --ipadd 192.168.6.112 --save

VE 실행

vzctl start 112

컴퓨터 노드의 ps 명령어 사용

vzctl exec VEID ps ax

VE 아이디 더하기

vzctl enter VEID

VE 나가기

[ve]# exit

[host-node]

VE 중단

vzctl stop VEID

stopping VPS....

VPS was stopped

VPS is unmounted

VE 삭제

vzctl destroy VEID

destroying VPS private area : /vz/private/VEID

VPS private area was destroyed

5. Vserver

GNU/Linux 시스템을 위해 가상화 시스템을 제공합니다.

독립적인 가상서버(Virtual Private Server : VPS)를 구축할 수 있도록 각 가상 서버는 리눅스 서버와 같은 동일한 운영 환경에서 자체 사용자 계정을 가지는 데이터 베이스 및 루트 패스워드를 가지고 있다.

소프트웨어 에물레이터는 컴퓨터 프로그램이 실행되는 컴퓨터 아키텍쳐와 운영체제에서 실행하고 기존의 OS를 변경하지 않고 가상의 OS 환경을 구축하여 동적인 재 컴파일을 할 수 있다.

요즘 출시되는 컴퓨터들은 가상화 시스템을 사용할 수 있는 강력한 성능을 지니고 있다.

VPS 변경에서도 SSH , 메일 , 웹 , 데이터 베이스 등 여러 가지 서비스를 실행할 수 있다.

ㆍ Host 시스템 : Guest OS(Virtual Server)을 이용하기 위한 운영 서버

ㆍ Guest 시스템 : Host 운영서버에서 실행하는 가상서버

가. 설치

데이터 베이스를 업데이트 하기전에 항상 소프트웨어 패키지를 최신 버전으로 갖추고 있어야 한다.

1) 패키지 설치

기본적인 패키지 설치가 필요하다

ㆍ util-vserver : 가상서버를 제어하는 유틸리티

ㆍ SSH : 기본설치

ㆍ ncurses-base , libncurses5-dev : 커널의 make menuconfig 컴파일러

#apt-get update $$ apt-get upgrade

#apt-get install util-vserver ssh ncurses-base libncurses5-dev

2) 파일

/var/lib/vservers - vservers 파일의 홈 디렉토리

/etc/vservers.conf - 구성파일

/etc/vservers - 가상 서버의 구성파일 상위 디렉토리

/usr/sbin/vserver - vserver에서 사용하는 유틸리티

/bin/vshelper - vservers 기능 도움말

/usr/lib/util-vserver - 메인 스크립트 및 기능

3) 커널

Kernel.org의 Vanilla 커널 2.6.12.4를 사용했지만 더 최근의 커널버전을 다운받아 설치해도 된다.

#cd /usr/src

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.4.tar.gz

linux-vserver.org 또는 13thfloor.at/vserver에서 커널 패치를 다운받는다.

#wget http://www.13thfloor.at/vserver/s_rel26/v2.0/

#tar -xvfz linux-.2.6.12.4.tar.gz

# gunzip patch-2.6.12.4-vs2.0.diff.gz

# mv patch-2.6.12.4-vs2.0.diff /usr/src/linux-2.6.12.4

# Patch the kernel sources:

# cd /usr/src/linux-2.6.12.4

# cat patch-2.6.12.4-vs2.0.diff | patch -p1

사용자가 기존의 2.6.x 커널을 사용 중 이면 빌드 하기전에 기존의 config 를 복사 한다.

#cp /boot/config-2.6.x/usr/src/linux-2.6.12.4/.config

#make menuconfig

가상화 시스템을 편리하게 사용하기 위해 LVM(dev-mapper) 지원해야 한다.

Enable Legacy kernel API

Enable Proc Security

Enable Hard CPU Limits

menuconfig 항목의 Linux Vserver에서 위 항목을 할성화 시켜야 한다.

# make

# make modules_install

# cp .config /boot/config-2.6.12.4-vs2.0

# cp System.map /boot/System.map-2.6.12.4-vs2.0

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.4-vs2.0

# mkinitrd -o /boot/initrd.img-2.6.12.4-vs2.0 2.6.12.4-vs2.0

커널 컴파일을 완료하고 위에 항목을 실행한다.

2.6.12.4-vs2.0

root (hd0,0)

kernel /vmlinuz-2.6.12.4-vs2.0 root=/dev/hda2 ro

initrd /initrd.img-2.6.12.4-vs2.0

savedefault

boot

/boot/grub/menu.lst 편집기를 실행해서 위에 같이 수정한다.

4) Vserver 셋업

새로 생성된 가상서버에서 vserver를 실행한다.

# vserver <VSERVER_NAME> build \

-n <VSERVER_NAME> \

--hostname <FQDN> \

--interface <NET_DEVICE>:<IP>/<CIDR> \

-m debootstrap -- -d <DEBIAN_DISTRO>

VSERVER_NAME - vserver1 가상서버 이름 설정

FQDN - vserver1.mydomain.com 가상서버 도메임 설정

NET_DEVICE - eth0 네트워크 디바이스 설정

IP - 192.168.1.10 IP주소 설정

CIDR - 24 넷마스크 설정

DEBIAN_DISTRO - sarge

vserver 명령어 실행 예시

# vserver vserver1 build \

-n vserver1 \

--hostname vserver1.mydomain.com \

--interface eth0:192.168.1.10/24 \

-m debootstrap -- -d sarge

#ls -lah /var/lib/vservers/vserver1

total 80K

drwxr-xr-x 20 root root 4.0K Nov 10 08:17 .

drwxr-xr-x 4 root root 4.0K Nov 10 08:13 ..

drwxr-xr-x 2 root root 4.0K Nov 10 08:17 bin

drwxr-xr-x 2 root root 4.0K Dec 15 2004 boot

drwxr-xr-x 3 root root 4.0K Nov 10 08:13 dev

drwxr-xr-x 37 root root 4.0K Nov 10 08:17 etc

drwxrwsr-x 2 root staff 4.0K Dec 15 2004 home

drwxr-xr-x 2 root root 4.0K Nov 10 08:16 initrd

drwxr-xr-x 7 root root 4.0K Nov 10 08:17 lib

drwxr-xr-x 2 root root 4.0K Nov 10 08:16 media

drwxr-xr-x 2 root root 4.0K Dec 15 2004 mnt

drwxr-xr-x 2 root root 4.0K Nov 10 08:16 opt

drwxr-xr-x 2 root root 4.0K Dec 15 2004 proc

drwxr-xr-x 2 root root 4.0K Nov 10 08:16 root

drwxr-xr-x 2 root root 4.0K Nov 10 08:17 sbin

drwxr-xr-x 2 root root 4.0K Nov 10 08:16 srv

drwxr-xr-x 2 root root 4.0K May 10 2005 sys

drwxrwxrwt 2 root root 4.0K Nov 10 08:17 tmp

drwxr-xr-x 11 root root 4.0K Nov 10 08:16 usr

#ls -lah /etc/vservers/vserver1

total 28K

drwxr-xr-x 5 root root 4.0K Nov 10 08:13 .

drwxr-xr-x 6 root root 4.0K Nov 10 08:13 ..

drwxr-xr-x 4 root root 4.0K Nov 10 08:13 apps

-rw-r--r-- 1 root root 112 Nov 10 08:13 fstab

drwxr-xr-x 3 root root 4.0K Nov 10 08:13 interfaces

-rw-r--r-- 1 root root 5 Nov 10 08:13 name

lrwxrwxrwx 1 root root 22 Nov 10 08:13 run -> /var/run/vservers/vserver1

drwxr-xr-x 2 root root 4.0K Nov 10 08:13 uts

lrwxrwxrwx 1 root root 37 Nov 10 08:13 vdir -> /etc/vservers/.defaults/vdirbase/vserver1

vserver 인스톨 및 실행

# vserver <VSERVER_NAME> [ start | stop | restart | enter ]

# vserver vserver1 start

Starting system log daemon: syslogd.

Starting kernel log daemon: klogd.

Starting MTA: exim4.

Starting internet superserver: inetd.

Starting deferred execution scheduler: atd.

Starting periodic command scheduler: cron.

# vserver-stat

CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME

0 35 73.4M 5.4K 0m05s21 0m02s33 1m13s00 root server

49152 5 11M 967 0m00s00 0m00s00 0m30s52 vserver1

# vserver vserver1 enter

vserver1:/#

6. 상업용 가상화

가. EMC VMware

VMware 소프트웨어로 속도가 느리고 높은 하드웨어 사양을 단점으로 가지고 있으며 오랜 개발 과정을 거치면서 최적화가 상당히 많이 진행되고 하드웨어 성능이 향상됨에 따라 최근의 VMware 속도도 빠르고 안정성도 높다 현재 최대 2개의 물리적 프로세서를 사용하는 가상머신을 지원하며 최근에서 4프로세서 지원이 가능하도록 개발중이다.

나. 인텔 Vanderpool

코드네임 Vanderpool 기술은 하나의 컴퓨터상에 다수의 운영체제를 운영하게 되고 동일 기기에서 독립적인 파티션에 에플리케이션을 별도로 운영하게 하는 기술로 인텔은 밴더풀 기술 보급과 관련하여 소프트웨어 개발을 추진하기 위해서 밴더풀 기술 외부 아키텍쳐 스펙을 공개하였다.

이는 복수의 운영체제에서 개별 에플리케이션을 구동시에 하드웨어 자원들을 복수의 운영체제에 선택적으로 할당할 수 있다.

인텔은 아이테니엄 기반 플랫폼에 밴더풀 기술을 선보일 예정으로 올해 데스크탑 프로세서와 칩셋 제품에도 해당 기술을 제공할 계획이다.

다. 마이크로 소프트 가상서버

마이크로소프트는 Connectix로부터 가상서버를 인수하여 마이크로소프트의 서버 환경에 맞게 향상시켜 윈도 서버 환경에서 여러개의 다른 플랫폼의 운영체제를 동시에 운용할 수 있도록 하고 있다.

마이크로소프트는 이를 사용하여 에플리케이션의 플랫폼별 적용 서버간의 통합 또한 소프트웨어 개발 및 테스트 환경의 자동화 등을 간편하게 적용하여 관리 및 하드웨어 자원 이용 측면에서 효율적으로 해결할 수 있다고 한다.

자체 하이퍼바이저를 개발중에 있으며 이를 포함한 버전은 2007년 출시 예정이다.

라. IBM Virtualization Engine

IBM의 가상화 엔진은 자원 , 서버 , 스토리지 , 네트워크의 통합 가상화 솔류션을 지원한다.

IBM의 가상화 기술인 마이크로 파티셔닝 기술 티볼리의 프로비저닝과 관리 툴 웹스피어 OGSA 기반의 그리드 가용성 등에서 파생된 기술을 표준화한 것이다.

가상화를 하기 위한 기본 기술인 Hypervisor , VLAN , Virtual I/O 기반으로 시스템을 가상화 하고 IBM Grid Toolbox , Tivoli Provisioning manager , IBM Enterprise Workload Manager , IBM Director Multiplatform , VE Console 서버의 가상화를 가능하게 하며 IBM Total Storage SAN Volume Controller 및 San File System , Productivity Center 스토리지 가상화가 가능하다.

IBM은 가상화 엔진이 제공하는 가치로 가상화를 통한 온 디맨드 비즈니스 구현을 실현할 수 있다고 강조한다.

마. HP VSE

HP VSE(Virtual Server Environment)를 적용할 수 있는 솔류션에는 가용성 물리적으로 서버를 분리하는 파티셔닝 부분 및 통합 관리 기능으로 볼 수 있다.

솔류션을 살펴보면 가용성 부분은 여러 서버를 하나의 그룹으로 묶어서 시스템 가용성을 높여주는 Serviceguard Clustering 기능 파티셔닝을 지원하는 HP virtual Partitioning 인 Vpars와 Hard Partitioning nPar 서버에서 프로세스 자원관리 툴 등 에플리케이션의 운영을 최적화하는 PRM(Process Resource Manager)과 pSets(Processor sets) 고객의 시스템 사용 용도에 따른 서비스를 차별화하여 온 디맨드를 지원하는 iCAP(Instant Capacity)등이 있다.

기본 솔류션들과 워크로드 매니저의 통합으로 클러스터링으로 구성된 서버간 또는 파티셔닝으로 분할된 서버간에 자원이 실시간으로 재 분배되어 전반적인 서비스 레벨을 만족시킬 수 있을 것이라는 전망이다.

7. 가상화 분류

성능 및 안정성에 중점을 둔 선택적인 가상화 및 IT 통합 단계에서 자원을 가상화하고 공유하는 단계이다.

비용 관리 및 인프라 관리를 자동으로 하고 신속한 변경 및 최적화를 지원하는 유틸리티 컴퓨팅 단계를 거쳐 2010년경에는 정책 기반 컴퓨팅 서비스 단계로 진화 할것이다.

가. 스토리지 가상화

스토리지 가상화는 시스템들이 스토리지의 물리적인 위치를 파악할 필요가 없이 여러대의 스토리지를 하나의 스토리지 저장 폴로 만들어서 여러 기기에 걸친 불륨 구성 기기 간 자유로운 데이터 마이그레이션 및 불륨 복제 이기종 서버간 블록 단위의 데이터 공유 등을 가능하게 한다.

스토리지 가상화의 가장 큰 이점은 복잡한 스토리지 구성을 단순화 하여 관리 효과를 얻을 수 있고 스토리지의 구성 변경이 서버에 영향을 주지 않으므로 서버의 가용 시간을 늘릴 수 있는 것이다.

전체 스토리지 시스템 운영에 필요한 비용 절감을 얻을 수 있고 스토리지 가상화 솔류션은 물리적인 위치에 따라 서버 기반 네트워크 기반 스토리지 기반으로 나눌 수 있다.

솔루션은 서버에 스토리지 가상화 소프트웨어를 설치하여 계층을 통해 가상화된 스토리지 볼륨에 접근하는 방식이다.

네트워크 기반 솔류션은 모든 스토리지가 상호 연결된 네트워크 장비를 지나면서 가상화 되어 서버에 전달되는 방식이다.

스토리지 기반 솔류션은 스토리지 컨트롤러에 가상화 솔류션을 탑재하는 방식으로 가상화 범위가 스토리지에 제한되므로 범용성이 떨어진다.

나. 서버 가상화

서버 가상화는 이미 현재 운용중인 운영체제 안에 또 하나의 가상머신을 만들어 마치 컴퓨터가 여러대 있는 것처럼 시스템을 구축하여 동시에 운영할 수 있으며 다중 운영체제와 하드웨어 사이에서 가상화된 유형이다.

서버 가상화는 CPU , 메모리 입 출력 등의 다양한 서버 자원을 하나의 집합으로 묶어서 사용자의 필요에 따라 자유롭게 나누어 사용하는 개념으로 작은 여러대의 서버들을 보다 쉽게 관리한다.

운영체제가 가상화의 한 계층이 되어 한 대의 대칭형 멀티 프로세싱 서버에서 에플리케이션을 보다 효율적으로 구동하는 형태로 자바 가상머신과 같은 형태 또한 다중 운영체제와 하드웨어 사이등의 가상화 계층으로 정의될 수 있다.

서버 가상화로서 얻을 수 있는 이점은 각각의 서버에 대한 이용 효율을 증대시킬 수 있다는 것이다.

다. 네트워크 가상화

네트워크 가상 환경은 여러 사용자들을 네트워크를 통해서 하나의 공통된 가상 환경으로 묶어주는 기술이다.

여러명의 사용자가 같은 가상 공간을 공유하면서 협동 작업을 가능하게 한다.

네트워크에서 공유되어 사용할 수 있는 자원은 라우터 , 스위치 , 로드 발란서 , 방화벽과 서버와 연결되는 VPNs , HiperSocket , VLANs , VSWITCH , Virtual IP , Ethernet 어댑터등의 자원들이될 수 있다

자원들을 효율적으로 사용하기 위해서는 사용자의 물리적인 자원을 분리할 수 있어야 한다.

오류 발생시에 가용성을 제공하여 융통성 있는 복구가 행해져야 한며 온디멘드 컴퓨팅을 제공하기 위해 네트워크 가상화는 서비스 계층에서 관리 되어야 한다.

에플리케이션이나 서비스에서 요구되는 네트워크 자원이 대역폭이나 우선순위를 고려하여 자동으로 적용되어야 한다

라. 서비스 가상화

최근 컴퓨팅 환경이 서비스 중심으로 발전되면서 사용자들은 표면에 들어난 가상화된 서비스만을 호출하여 서비스를 받고자 한다.

서비스 가상화는 앞서 설명한 스토리지 서버 , 네트워크 가상화 기술과 복합적인 모델을 지원하여 서비스 중심 컴퓨팅 동작이 가능하게 구현되어야 한다.

최근 이를 지원하기 위한 환경으로 적합하게 적용되는 기술이 웹 서비스이며 이질적인 시스템들간에 표준화란 연결고리를 사용하여 흩어진 자원들을 사용할 수 있도록 한다.

기존의 웹 접속이 사람에 위해 접속되어 사용된 것이라면 웹 서비스는 가상화된 서비스가 웹에 접속하여 정보를 요청하고 요청된 서비스는 관련되는 서비스들에 의해 요청된 정보의 응답을 받게 된다.

웹 서비스는 인터넷상에서 서로 통신할 수 있는 서비스를 지칭하고 웹서비스의 기술은 서비스 지향 구조인 SOA 를 기반으로 서비스 단위의 통합을 이루어 유연하고 능동적인 웹 에플리케이션 수행 환경을 제공하는 기술이다.

앞으로 웹 서비스는 가상화된 서비스를 전달하는 주요 요소라고 할 수 있으며 가상화된 서비스는 서로 이질적인 시스템 자원들을 투명성 있게 사용할 수 있도록 하고 서비스를 배치하고 관리하는 작업들이 이루어져야 한다.

마. 가상화 유형

초기 단계의 약-가상화 유형이 자원을 물리적인 관점 및 유형 수준에서 단순히 풀 형식으로 관리하는 수준임에 반해 강-가상화 유형은 정책 기반의 자원 프로비저닝과 관리에 중점을 둔다

바. 가상화 특성

성능 - 자원들을 하나의 폴로 만들어 최대한 컴퓨팅 파워를 사용하고자 성능을 향상

확장성 - 서비스 요구량 및 트래픽의 폭발적인 증가에도 유연하게 대처할 수 있는 서비스의 확장성

가용성 , 신뢰성 , 회복성 - 하루 24시간 1년 365일 동안 중단 없이 서비스를 제공할 수 있는 데이터 및 서비스의 가용성

탄력성 , 민첩성 - 긴급한 문제 발생 빠르게 대처하여 실시간으로 장애 복구가 가능한 서비스 인프라의 탄력성과 어떠한 상황 변화에도 대처할 수 있는 서비스 인프라의 민첩성

자원 최적화 - 물리적인 시스템의 재구성 없이도 다양한 비즈니스 요구에 맞는 자원의 활용을 최적화하게 구성