0. 설치 환경

CPU : Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz

MEM : 8G

M/B : Supermicro X9SCL+ - F

DISK : Seagate 500G SATA II

Dom0(Host): CentOS 6.6 x86_64 minimal

 

1. Host OS 설치

1.1. ISO 마운트

CentOS 6.6 x86_64 minimal.iso 파일을 내부 SAMBA 서버에 올려 놓고 IPMI 의 Virtual CD-ROM 을 통해 마운트 한다.

* IPMI 가 없는 환경이라면 물리적인 DVD-ROM을 통해  DVD로 설치한다.

- 마운트 정보 -

Share host : 192.168.10.250

Path to image  : \oststorage_ostshare\os-iso\CentOS-6.6-x86_64-minimal.iso

User (optional) : smb

Password (optional) : ****123

 

1.2. OS 설치

Basic 하게 OS 설치. (설치 진행 내용은 생략)

 

2. 패키지 인스톨 및 설정

1) 부수적인 패키지 인스톨

[root@xenserver ~]# yum install -y vim-enhanced wget rdate screen

 

2) xen yum repo 인스톨

[root@xenserver ~]# yum install -y centos-release-xen

설치 후 /etc/yum.repos.d/CentOS-Xen.repo 파일이 추가 된다.

 

3) xen 설치

[root@xenserver ~]# yum install -y xen

[root@xenserver ~]# /usr/bin/grub-bootxen.sh

 

4) virt 설치

설정파일을 이용하는 xm 또는 xl 커맨드로의 가상서버 생성은 조금 복잡하므로  libvirt를 설치한다.

[root@xenserver ~]# libvirt python-virtinst libvirt-daemon-xen

 

5) 불필요한 서비스 중지

- selinux 미사용
[root@xenserver ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

- 불필요한 서비스 내리기
[root@xenserver ~]# chkconfig nfslock off ; chkconfig rpcbind off ; chkconfig rpcgssd off ; chkconfig mdmonitor off ; chkconfig auditd off ; chkconfig postfix off ; chkconfig iptables off ; chkconfig ip6tables

[root@xenserver ~]# chkconfig --list | grep 3:활성
blk-availability 0:해제 1:활성 2:활성 3:활성 4:활성 5:활성 6:해제
cgconfig 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
crond 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
haldaemon 0:해제 1:해제 2:해제 3:활성 4:활성 5:활성 6:해제
iscsi 0:해제 1:해제 2:해제 3:활성 4:활성 5:활성 6:해제
iscsid 0:해제 1:해제 2:해제 3:활성 4:활성 5:활성 6:해제
libvirt-guests 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
libvirtd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
lvm2-monitor 0:해제 1:활성 2:활성 3:활성 4:활성 5:활성 6:해제
messagebus 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
netcf-transaction 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
netfs 0:해제 1:해제 2:해제 3:활성 4:활성 5:활성 6:해제
network 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
rsyslog 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
sshd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
udev-post 0:해제 1:활성 2:활성 3:활성 4:활성 5:활성 6:해제
xencommons 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
xend 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
xendomains 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

* Dom0는 최대한 가볍게 돌린다. init Level 도 RunLevel 3 모드이다.

* Virt Manager 등의 GUI 가 필요시  xming, xshell 등을 이용하여 remote로 연결.

 

6) 네트워크 설정

[root@xenserver ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-xenbr0

[root@xenserver ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=64:E5:99:F4:6E:7D
TYPE=Ethernet
UUID=7389637b-03ba-4060-a0b4-448620bcb6d3
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
BRIDGE=xenbr0

[root@xenserver ~]# vim /etc/sysconfig/network-scripts/ifcfg-xenbr0
DEVICE=xenbr0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
DELAY=0
IPADDR=192.168.0.33
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

 

7) 재부팅

[root@xenserver ~]# reboot

재부팅 후 커널을 확인해 보면 Xen Host(Dom0) 로 변신되어 있는게 확인된다.

[root@xenserver ~]# uname -a
Linux xenserver 3.10.68-11.el6.centos.alt.x86_64 #1 SMP Fri Feb 6 10:40:16 CST 2015 x86_64 x86_64 x86_64 GNU/Linux

네트워크는 아래와 같이 확인이 된다.

[root@xenserver ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 64:E5:99:F4:6E:7D
inet6 addr: fe80::66e5:99ff:fef4:6e7d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:412648 errors:0 dropped:1037 overruns:0 frame:0
TX packets:450871 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:197929994 (188.7 MiB) TX bytes:453653656 (432.6 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:356 (356.0 b) TX bytes:356 (356.0 b)

virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:80354 errors:0 dropped:0 overruns:0 frame:0
TX packets:111073 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5578936 (5.3 MiB) TX bytes:159707110 (152.3 MiB)

xenbr0 Link encap:Ethernet HWaddr 64:E5:99:F4:6E:7D
inet addr:192.168.0.33 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::66e5:99ff:fef4:6e7d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:218443 errors:0 dropped:0 overruns:0 frame:0
TX packets:260838 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:167876659 (160.0 MiB) TX bytes:353385881 (337.0 MiB)

- virbr0 : 내부 통신용 (Dom0, DomU간 네트워크 또는 DomU DomU간 네트워크를 위한 가상 NIC)

- xenbr0 : 외부 통신용 브리짓 NIC - eth0 이 실제 물리 NIC 다.

- domU(Guest)가 부팅되어 NIC가 활성화 되면 vifXX.X 의 가상 NIC가 생성된다.

 

3. Xen host 확인

[root@xenserver ~]# xm info
WARNING: xend/xm is deprecated.
host : xenserver
release : 3.10.68-11.el6.centos.alt.x86_64
version : #1 SMP Fri Feb 6 10:40:16 CST 2015
machine : x86_64
nr_cpus : 4
nr_nodes : 1
cores_per_socket : 4
threads_per_core : 1
cpu_mhz : 3100
hw_caps : bfebfbff:28100800:00000000:00007f00:77bae3ff:00000000:00000001:00000281
virt_caps : hvm hvm_directio
total_memory : 8164
free_memory : 7026
free_cpus : 0
xen_major : 4
xen_minor : 4
xen_extra : .2-3.el6
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : Thu Apr 23 15:06:13 2015 +0100 git:b0fa777-dirty
xen_commandline : dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
cc_compiler : gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
cc_compile_by : mockbuild
cc_compile_domain : centos.org
cc_compile_date : Tue Jun 2 12:22:46 UTC 2015
xend_config_format : 4

* virt_caps를 확인. CPU가 전가상화를 지원하고 BIOS에서 Enabled되어있다면 hvm이 보인다. hvm이 없다면 전가상화는 불가능할 것이다.

 

4. Guest OS 설치

4.1. CentOS 6.6 설치

[root@xenserver ~]# virt-install --virt-type xen -n centos66 -r 1024 --vcpus=2 -f /dev/mapper/vg_xenserver-lv_home -p -l http://ftp.daum.net/centos/6.6/os/x86_64 --os-type=linux --nographics --network=bridge:xenbr0 --network=network:default

설치 진행이 된다. 설치 도중에 vnc를 설정해 주면 vnc를 통해서 remote에서 guest os의 console 화면을 볼 수 있다.

- 옵션 설명 -

▷ xen 타입의 가상화 서버를 생성 (–virt-type)
▷ 가상화 서버의 이름은 theeye로 지정 (-n)
▷ 메모리는 8기가를 할당 (-r)
▷ CPU는 2개를 할당 (–vcpus)
▷ /dev/vg_cloudsystem/lv_theeye LVM 파일 시스템을 사용 (-f)
▷ 다음에서 제공하는 CentOS 미러 저장소 활용 (-l)
▷ 반가상화(Para-virtualization)로 설정 (-p)
▷ 설치할 OS의 타입은 리눅스 (–os-type)
▷ GUI지원없이 설치 (–nographics)
▷ 이더넷은 2개를 설정, eth0은 브릿지를 사용하고 eth1은 내부 가상 네트워크를 사용 (–network)

* 전가상화로 설치할 경우 -p 대신에 –hvm 옵션을 사용하면 된다. 잠시후 다음과 같은 설치 화면을 콘솔에서 볼 수 있다.

* CentOS 6.6 가상 머신의 Disk는 /dev/mapper/vg_xenserver-lv_home LVM 파일시스템을 사용 하였다.

* iscsi 등을 이용하여 외부 스토리지 Disk 를 사용한다면 VM 라이브마이그레이션 등을 활용할 수 있다.

 

4.2. Windows 7 설치

1) 게스트 윈도우 저장소 디렉토리 생성

[root@xenserver ~]# mkdir -p /vm/win7

 

2) config 파일 생성

[root@xenserver ~]# vim /vm/win7/win7.cfg

import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'

kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
vcpus = 2
memory = 2048

shadow_memory = 8
name = "win7"
vif = [ 'type=ioemu, bridge=xenbr0', 'type=ioemu, bridge=virbr0,model=e1000' ]
#vif = [ 'bridge=xenbr0', 'bridge=virbr0' ]
acpi = 1
apic = 1
disk = [ 'file:/vm/win7/win7.img,hda,w', 'file:/vm/win7/Windows.7.SP1.9in1_OEM.iso,hdc:cdrom,r' ]

device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'

on_poweroff="destroy"
on_reboot="restart"
on_crash="destroy"

boot="dc"
sdl=0
vnc=1
vncconsole=1
vncpasswd="
#vnclisten="192.168.0.33"
vnclisten="0.0.0.0"

serial='pty'
usb=1
usbdevice='tablet'
mornitor=1

 

* 전 가상화 방식 hvm 으로 진행.

3) img 파일 생성

Windows 7 가상 머신은 CentOS66 가상머신과 다르게 32G 사이즈의 파일 형태로 생성하였다.

[root@xenserver ~]# dd if=/dev/zero of=/vm/win7/win7.img bs=1024k count=32000

 

4) iso 파일 저장

아래 위치에 저장

/vm/win7/Windows.7.SP1.9in1_OEM.iso

 

5) vm 시작

[root@xenserver ~]#  xm create /vm/win7/win7.cfg

vncviewer 를 통해 192.168.0.33 ip 로 접근 하여 설치.

윈도우7을 종료 후 재 시작시엔 생성 때 처럼..

[root@xenserver ~]#  xm create /vm/win7/win7.cfg

 

* dom0가 (xenserver) 부팅 시 시작하게 하려면 rc.local 에 추가

[root@xenserver ~]# cat /etc/rc.local
xm create /vm/win7/win7.cfg

 

6) OS 설치

Windows 7 32bit Pro 버전을 설치 하였다. (설치 진행 내용은 생략)

설치는 192.168.0. 네트워크의 PC로 vncviewer를 통해 192.168.0.33:5900 으로 접근하여 remote 설치 진행.

VNC Viewer 다운로드 : ultra-vncviewer

Cap 2015-06-07 16-37-00-523

- Win7 가상머신을 부팅하면 부팅 초기에 전 가상화를 위한 bochs 에뮬레이터(바이오스)를 확인 할 수 있다.

bochs bios의 추가적인 확인은 아래 사이트에서

http://bochs.sourceforge.net/

 

Cap 2015-06-07 16-35-27-452

- 윈도우 부팅 화면 등의 콘솔 화면을 VNC를 통해 확인.

 

설치 후 장치 관리자 목록을 보면 아래와 같다.

Cap 2015-06-06 07-46-55-597

- E1000 으로 설정한 것이 Intel(R) PRO/1000 MT Network Connection 으로 잡힌것으로 확인된다.

 

7) gplpv 드라이버 설치

최적의 Network, I/O , PCI 장치 성능을 위하여 gplpv 드라이버를 Windows 7 에 설치한다.

http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers 사이트에서 다운 받았다.

Cap 2015-06-07 17-40-05-553

위 드라이버 패키지들 모두 다운로드 : gplpv

 

Windows 7에 gplpv_Vista2008x32_signed_0.11.0.373.msi 다운로드 하여 설치 진행한다. (설치 후 reboot)

 

Cap 2015-06-07 16-32-25-450

- 위와 같은 Windows 드라이버들이 설치된다.

 

Cap 2015-06-07 16-32-02-377

- 설치 후 reboot 하고 장치 관리자를 확인. 알 수 없는 PCI 장치도 사라졌다.

 

Cap 2015-06-07 16-58-04-400

- NIC Link Speed : 10G

 

 

4.3. RDP 지연 문제 해결

gplpv 드라이버 패키지 설치 후 RDP(mstsc) 화면 출력이 매우 느려지는 현상이 발생된다. 하지만 VNC 연결 시에는 같은 문제가 발생하지 않는다.

gplpv  패키지 설치 후 NIC의 장치가 변경되고, 새로운 속성 값에 의해 RDP 프로토콜 지연 현상이 발생하는 것이다.

RDP 패킷을 주고 받는 해당 NIC의 어댑터 속성 중 Large Send Offload를 아래와 같이 disabled로 변경해 주면 해결이 된다.

Cap 2015-06-07 16-29-06-273

- 값 변경 후 RDP 재 연결을 하면 문제가 사라지게 된다.

 

 

5. 파일전송 테스트

guest OS 간 파일 전송 테스트로 원활한 네트워크가 되는지 확인한다.

1) 네트워크 정보

- centos66 vm :

eth0 : 192.168.0.102 (xenbr0에 연결)

eth1 : 192.168.122.102 (virbr0에 연결)

- win7 vm :

NIC 0 : 192.168.0.101 (xenbr0에 연결)

NIC 1 : 192.168.122.101 (virbr0에 연결)

 

2) centos66 DomU(guest) 서버 삼바 설정

- 삼바를 설치

[root@centos66 ~]# yum install -y samba

- 공유디렉토리 생성

[root@centos66 ~]# mkdir /share

- smb.conf 설정

[root@centos66 ~]# vim /etc/samba/smb.conf
[Global]
workgroup = WORKGROUP
security = share
map to guest = bad user

[share]
path = /share
browsable = yes
writable = yes
guest ok = yes
read only = no

- smb 데몬 시작

[root@centos66 /]# /etc/init.d/smb start

 

3) Windows PC에서 파일 전송

virbr0 을 통한 전송 : Windows key + R - \\192.168.122.102\share

xenbr0 을 통한 전송 : Windows key + R - \\192.168.0.102\share

- 모두 파일 전송이 잘 되어야 한다.

 

6. xm 명령어 옵션

1) 도메인 정보 보기

[root@xenserver ~]# xm list

WARNING: xend/xm is deprecated.

Name                                        ID   Mem VCPUs      State   Time(s)

Domain-0                                     0  1024     4     r-----    178.5

centos66                                     6  1024     2     -b----      7.7

 

2) centos66 도메인 시작

[root@xenserver ~]# xm start centos66

 

3) centos66 도메인의 콘솔로 연결

[root@xenserver ~]# xm console centos66

 

4) centos66 도메인의 콘솔에서 exit

 ctrl + ] 또는 ctrl + 5

 

5) 덤프 발생

[root@xenserver ~]# xm dump-core win7

[root@xenserver ~]# ls -la /var/lib/xen/dump/win7/
합계 4210044
drwx------ 2 root root 4096 2015-06-08 17:14 .
drwxr-xr-x 3 root root 4096 2015-06-08 16:48 ..
-rw------- 1 root root 2154682120 2015-06-08 16:49 2015-0608-1648.58-win7.2.core
-rw------- 1 root root 2154682120 2015-06-08 17:14 2015-0608-1714.25-win7.3.core
-rw-r--r-- 1 root root 1696804 2015-06-08 17:13 trace.raw

 

6) trace

[root@xenserver ~]# xentrace -D -S 256 -T 1 trace.raw

[root@xenserver ~]# ls -la trace.raw
-rw-r--r-- 1 root root 2549164 2015-06-08 17:25 trace.raw

 

7) xm dmesg

-h : 도움말로 설정 후 xm dmesg 확인

[root@xenserver ~]# xm debug-key h

[root@xenserver ~]# xm dmesg

(XEN) 'h' pressed -> showing installed handlers
(XEN) key '%' (ascii '25') => trap to xendbg
(XEN) key '*' (ascii '2a') => print all diagnostics

- q : dump domain (and guest debug) info 설정 후 xm dmesg 확인

[root@xenserver ~]# xm debug-key q

[root@xenserver ~]# xm dmesg

0 0 0 0 70
(XEN) 0b: 000a 1 0 0 0 0 0 0 78
(XEN) 0c: 000b 1 0 0 0 0 0 0 88
(XEN) 0d: 000c 1 1 0 0 0 0 0 90

 

7. PCI Passthrough

Windows 7 가상머신에 gplpv 드라이버를 설치하더라도 그래픽은 표준 그래픽 아답터로 잡혀 있어서 콘솔의 해상도를 1024 * 768 이상으로 올리지 못 한다.
(색품질을 16bit 로 변경하면 1280 * 1024 해상도 까지는 변경 가능)

이 문제를 해결 하기 위해 PCI Passthrough(VGA Passthrough)를 통해 Dom0(호스트머신)의 그래픽카드를 다이렉트로 I/O 할 수 있다.

참고자료와 조건은 아래와 같으며 전가상화 형태의 VM 중 1대의 VM만이 Passthrough로 PCI 장치를 Direct Access 가능하다.

7.1. PCI Passthrough 참고 자료

http://wiki.xen.org/wiki/XenVGAPassthroughTestedAdapters

http://linux-bsd-sharing.blogspot.kr/2012/10/howto-xen-413-windows-8-hvm-domu-with.html

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Virtualization/chap-Virtualization-PCI_passthrough.html

http://www.linuxtopia.org/online_books/rhel6/rhel_6_virtualization/rhel_6_virtualization_chap-Virtualization-PCI_passthrough.html

 

7.2. Passthrough 필요 조건

* PCI Passthrough 를 위해서는 아래 조건이 모두 충족 되어야 함.

CPU : VT-D(Intel), AMD-Vi(AMD) 지원

메인보드 : BIOS설정의 VT-D(Intel), AMD-Vi(AMD) 활성화

커널 옵션(grub.conf) : intel_iommu=on 또는 AMD의 경우 iommu=pt iommu=1 설정

Install Xen based on CentOS 6
태그:                 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다