PengX3 Installation Manual

이 문서는 PengX(U-XEN) 3 Install 방법을 기술합니다.

준비 사항

CMOS(VT 활성화) 설정 및 RAID 설정

  1. 현재 출시된 대부분은 가상화(VT:Vritualization Technology)를 지원하나 오래된 hardware(cpu, mainboard)는 지원하지 않을 수 있다. 하드웨어 지원 여부를 확인하고, 가능하면 cmos에서 가상화 기능을 켠다.(intel VT-x, AMD-V)
  2. CMOS에서 Intel® Hyper-Threading Technology (Intel® HT Technology)를 Enabled로 켠다. uxen의 경우 HT 활성화를 권장한다.
  3. CMOS에서 performance 관련 부분을 최대치에 설정한다. 그렇지 않을 경우 절전 등으로 성능에 제한이 있을수 있다.
  4. UXEN은 아래와 같이 RAID 설정을 권장한다.
    • UXEN OS 영역 : Raid-1 (Mirror)
    • Data (VM Image 저장소) 영역 : Raid-10 (Stripe + Mirror)
  5. UXEN은 UEFI가 아닌 BIOS 기반으로 설치해야 한다.

설치 미디어 생성

uxen iso 파일을 이용하여 설치 부팅 미디어를 생성하는 방법이다. 해당 미디어를 통해 부팅을 시도하여 설치를 진행할 수 있다.

이미지 파일 다운로드

uxen iso 파일은 http://repo.iorchard.co.kr/lgu 에서 download 받을수 있다. uxen3-[version]-amd64-CD-1.iso 파일을 download 하면 된다. 해당 iso 파일을 cd로 굽거나 usb로 생성해 부팅할 수 있다.

설치 CD 생성 방법

CD-Recorder류의 프로그램을 이용하여 Download한 ISO 파일을 CD로 구우면 된다. Windows 디스크 이미지 버너 (Windows 내장)나 CDBurnerXP (freeware), ImgBrun (freeware) 등 이용할 수 있다. 각 프로그램마다 방법이 다르고, 또 복잡하지 않으므로 자세한 설명은 생략한다.

설치 USB Flash Drive 생성 방법

  1. linux에서는 아래의 명령으로 간단히 생성할 수 있다. 단, 해당 usb의 data는 모두 삭제된다.

    # dd if=<uxen-iso-file> of=<usb device>; sync
    

    예를 들어 /dev/sdc의 usb를 uxen-3.0-amd64-CD-1.iso로 생성한다면 아래와 같다. 파티션(/dev/sdc1)이 아닌 장치명(/dev/sdc)임을 주의하자.

    # dd if=uxen-3.0-amd64-CD-1.iso of=/dev/sdc; sync
    
    • “uxen-iso-file” 은 download한 iso 파일을 입력한다. of는 os에서 인식한 usb 장치명이다. (ex. /dev/sdc)
  2. windows에서는 win32diskimager을 사용하여 iso파일을 USB Flash Drive로 생성할 수 있다.

    • win32diskimager는 이미지 파일을 선택할때 *.img가 기본값으로 설정되어 있어 *.*로 변경해야 iso파일을 선택할 수 있다.
    • unetbootin은 iso 파일을 직접 기록하지 않고 bootloader를 직접 설치,설정하여 usb device를 생성하므로 권장하지 않는다.

uxen 설치

uxen3 media를 넣고 부팅을 시도한다. CMOS에서 부팅 순서를 해당 미디어(cdrom, usb) 먼저 시도하도록 설정하여야 한다. uxen3 installer은 Debian Installer를 customize 한것이므로, 일반적인 Debian 계열의 OS(Debian, Ubuntu등)의 설치과정과 거의 흡사하다.

설치 화면

  1. Install Menu : uxen3를 설치할 방법을 선택한다. (Text Install, Graphic Install, Advanced Install을 지원). 일반적인 경우라면 기본값인 Install로 진행을 권장한다.. 이 문서도 text기반으로 진행하였다.

  2. 설치 Profile 선택 : 설치할 Profile을 선택한다. U-Xeus를 사용한다면 pengx3와 uxen3를 모두 선택하고, 가상화서버(hypervisor)로만 사용하길 원한다면 pengx3를 선택한다.

    • pengx3 : 가상화서버 (hypervisor)
    • uxen3 : U-Xeus와의 연동을 위한 API 서버 (uxenapi)

    참고

    uxen3(UXENAPI)를 체크하면 UXEN3 설치 완료 후 /opt 디렉토리에서 uxenapi.deb 파일을 확인할 수 있다.

  3. 기본 네트워크 설정 : 네트워크 카드(NIC)이 여러개일 경우 기본 네트워크를 설정한다. 해당 네트워크는 자동으로 Bridge(xenbr0) 구성되어 진다. 공인망(서비스망)으로 설정한다면, 설치 도중 문제점을 원격으로 지원가능하다.

    일반적인 네트워크 설정과 동일하다. 부여할 IP주소를 입력한다.

    해당 네트워크의 Subnet Mask를 입력한다.

    해당 네트워크의 Gateway를 입력한다. 사용하지 않는다면 생략 가능하다.

    네임서버를 입력한다. 역시 사용하지 않는다면 생략 가능하다.

    해당 서버의 Hostname을 설정한다. Hostname은 ascii 문자 a-z, 0-9,hyphen(‘-‘)만 가능하다. underscore(‘_’)는 hostname으로 불가능하다. (참고 RFC952)

    TIP

    Hostname은 소문자 사용을 권장한다. (대문자는 권장하지 않음)

    도메인을 설정한다. 사용하지 않는다면 비워둘수 있다.

  4. 파티션 설정 : 수동으로 선택하여 아래의 파티션으로 설정을 권장한다. (sda가정)

    Partition Size Filesystem Mount
    sda1 1G swap swap
    sda2 swap 1G를 제외한 디스크의 나머지 용량 ext4 /

    참고

    / 파티션에 swap 1G를 제외한 디스크의 나머지 용량을 할당하는 이유는 커널 덤프 때문이다. 예를 들어 시스템의 메모리가 256G라면 커널 덤프의 사이즈는 256G가 생성된다.

  5. 설치 진행 : 파티션 설정까지 완료되면 uxen3를 설치하기 시작한다.

  6. Bootloader(GRUB) : 설치 UXEN을 설치한 Disk를 설치한다. 일반적인경우 sda가 된다.

설치 종료

설치가 완료되면 시스템이 자동으로 shutdown 된다. power 버튼을 눌러 시스템을 켠다. 문제없이 설치가 되었다면 아래와 같이 GRUB 설정화면을 볼수 있을것이다. Xen 커널로의 부팅이 가장 첫번째 자리하고 있고, 기본값으로 설정되어 있다. 특별한 키이벤트가 없다면 5초뒤 자동으로 Xen Kernel로 부팅이 진행된다.

부팅이 완료되면 Console Login화면을 볼 수 있을것이다. 초기값으로 설정된 OS의 계정 정보는 아래와 같다.

설치 후 장치 점검

설치후 각 장치들이 제대로 인식되었는지 확인할 수 있다.

  1. CPU Core 수 확인 실제 물리 CPU Cores는 몇개인지 아래 명령을 알수 있다. HT(hyperthreading)을 제대로 켰다면 실제 Cores * 2가 나와야 정상이다. # xl info | grep nr_cpus
  2. RAM 확인 uxen에서 메모리 인식은 제대로 되어 있는지 확인한다. 단위는 MB로 표시된다. # xl info | grep total_memory
  3. Raid Controller, HDD Raid Controller는 제대로 잡혀있는지 아래의 명령으로 확인할 수 있다. # lspci  | grep -i raid 또 실제로 잡힌 Hard Disk도 확인해야 한다. HDD 개수와 Size는 맞는지 확인한다. # parted -l
  4. Ethernet Card 실제 물리 NIC가 정상적으로 인식하고 있는지는 다음 명령으로 확인할 수 있다. # lspci  | grep -i ether 각 ethernet interface 마다 올바르게 잡혀있는지, 개수는 맞는지 확인한다.
  5. HBA Card FC SAN을 사용하는 경우라면 HBA가 정상적인지도 확인해야한다. # lspci  | grep -i fibre
  6. 기타 H/W 그밖의 다른 H/W는 lspci 또는 lshw, dmidecode 명령등으로 확인할 수 있다.

네트워크 설정

uxen은 VM과 PM의 네트워크 구성을 위해 가상의 스위치를 구성하여 네트워크를 구성한다. 설치시 설정했던 네트워크는 자동으로 linux bridge (xenbr0)로 구성되어 설정된다. 이를 변경하거나, 새로운 네트워크 구성할 수 있다. 모든 설정이 끝마치면 reboot하여 Ping test등으로 정상적으로 작동하는지 확인이 필요하다.

bonding 구성

2개 이상의 NIC을 이용하여 대역폭 확장이나 이중화를 구성하기 위한 bonding을 설정할 수 있다. uxen의 경우 bonding은 mode 1 (active-backup)과 mode 4(lacp : 802.3ad)를 지원한다. bonding설정은 debian 계열 OS(debian, ubuntu등)에서의 bonding 설정과 동일하다. 아래의 경우 eth0, eth1을 mode1인 active-backup 구성하여 bond0를 생성한 예이다. /etc/network/interfaces파일을 수정한다.

# vi /etc/network/interfaces
auto bond0
iface bond0 inet manual
    slaves eth0 eth1
    bond-mode active-backup
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200

추가로 module 설정을 수정한다.

# echo “bonding” >> /etc/modules
# vi /etc/modprobe.d/bonding
alias bond0 bonding
options bond0 mode=6 miimon=100 primary=eth0

Bonding interface를 올려 제대로 설정되어 있는지 확인한다.

# ifup bond0
# cat /proc/net/bonding/bond0
Bonding Mode: Active-Backup
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:18:fe:fa:c2:14
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:18:fe:fa:c2:15
Slave queue ID: 0

linux bridge 구성

uxen에서 기본으로 설정되는 가상 switch인 linux bridge를 이용하여 네트워크를 구성하는 방법이다. 아래는 xenbr1이라는 bridge interface (가상 switch)를 생성하고 eth1을 연결한 예이다.

# vi /etc/network/interfaces
auto eth1
iface eth1 inet manual

auto xenbr1
iface xenbr1 inet static
 bridge_ports eth1
 bridge_maxwait 5
 address 192.168.0.100
 netmask 255.255.255.0
 gateway 192.168.0.1

bonding interface를 bridge 하려면 bridge_ports에 해당 interface(bond0)를 추가하면 된다. 설정후 아래의 명령으로 확인할수 있다.

# ifup xenbr1
# brctl show
bridge name bridge id       STP enabled interfaces
xenbr1      8000.a0369f3e1b14   no      eth1

OpenVSwitch(OVS) 구성

가상 switch로 Linux bridge를 사용하지 않고 Open VSwitch를 사용하는 방법이다. 위의 eth1, xenbr1 linux bridge 구성과 동일한 설정을 ovs로 구성한 예이다.

# vi /etc/network/interfaces
auto eth1
iface eth0 inet manual
    ovs_type OVSPort
    ovs_ports xenbr1

auto xenbr1
allow-ovs xenbr1
iface xenbr1 inet static
  ovs_type OVSBridge
  ovs_ports eth1
  bridge_maxwait 5
  address 192.168.0.100
  netmask 255.255.255.0
  gateway 192.168.0.1

/etc/rc.local파일을 수정하여 부팅시 자동으로 interface가 올라오도록 설정한다.

# vi /etc/rc.local
for ovsbr in $(grep 'allow-ovs' /etc/network/interfaces | awk '{print $2}'); do
     ifup –allow=ovs $ovsbr
done

xenbr0의 ovs bridge에 eth0 port를 추가한다.

# ovs-vsctl add-port xenbr1 eth1
# ovs-vsctl show
51556966-9a66-474c-bd46-38a5e389189be
 Bridge “xenbr1”
     Port “eth1”
         Interface “eth1”

기타

권장 Dom0 vCPUs (cores)

총 CPUs (cores) 권장 Dom0 vCPUs (cores)
4 1
8 1
16 2
32 4
48 6
64 8
80 10
96 12
128 16

vCPU는 아래와 같은 공식으로 권장합니다.

  • dom0 vcpu = round ( total_cores / 8 )
  • total_cores를 8로 나누고 소수점 올림

권장 Dom0 Memory (GB)

총 Memory (GB) 권장 Dom0 Memory (GB)
4 1
8 1
16 2
32 3
48 4
64 5
72 5
96 7
128 9

Memory는 아래와 같은 공식으로 권장합니다.

  • dom0_mem = 502 + int(physical_mem * 0.0205)