'zone'에 해당되는 글 3건

  1. 2009.05.28 Solaris 10 Zone 구성 및 리소스 분배
  2. 2009.02.17 솔라리스 10 - 컨테이너(Zone) 특성 및 종류
  3. 2009.02.17 오픈 솔라리스에서 존 설치 ( zone install on opensolaris )
2009.05.28 20:26

Solaris 10 Zone 구성 및 리소스 분배

파일 시스템은 ZFS를 이용하고 있으며, 서버는 SUN SPARC T5240이다.
CPU는 core가 128개 장착되어 있으며, Memory는 64GB, HDD는 146GB 3개, NIC는 4개가 있다.

# zone 생성을 위한 파일 시스템 생성(zfs 이용)
$ zfs create [경로]
 - ex) $ zfs create data/cs
$ chmod 700 [경로]
 - ex) $ chmod 700 data/cs

# zone 구성
$ zonecfg -z [zone이름]
 - ex) $ zonecfg -z cs

# zone 생성
zonecfg:[zone이름] > create
 - ex) zonecfg:cs > create
zonecfg:[zone이름] > set zonepath=[경로]
 - ex) zonecfg:cs > set zonepath=/data/cs

# zone network 설정
1) Physical Network Interface를 공유해서 사용하는 경우 (shared 모드)
zonecfg:[zone이름] > add net
 - ex) zonecfg:cs > add net
zonecfg:[zone이름]:net > set physical=[인터페이스 이름]
 - ex) zonecfg:cs:net > set physical=nxge1
zonecfg:[zone이름]:net > set address=[IP 주소]
 - ex) zonecfg:cs:net > set physical=xxx.xxx.xxx.xxx
zonecfg:[zone이름]:net > end
 - ex) zonecfg:cs:net > end

2) Physical Network Interface를 독립적으로 사용하는 경우 (exclusive 모드)
zonecfg:[zone이름] > set ip-type=exclusive
 - ex) zonecfg:cs > set ip-type=exclusive
zonecfg:[zone이름] > add net
 - ex) zonecfg:cs > add net
zonecfg:[zone이름]:net > set physical=[interface이름]
 - ex) zonecfg:cs:net > set physical=nxge1
zonecfg:[zone이름]:net > end
 - ex) zonecfg:cs:net > end

# zone 구성 마무리
zonecfg:[zone이름] > verify
 - ex) zonecfg:cs > verify
zonecfg:[zone이름] > commit
 - ex) zonecfg:cs > commit
zonecfg:[zone이름] > exit
 - ex) zonecfg:cs > exit

# zone에 solaris 설치
$ zoneadm -z [zone이름] install
 - ex) $zoneadm -z cs install

# zone booting
$ zoneadm -z [zone이름] boot
 - ex) $zoneadm -z cs boot

# zone에 접속
$ zlogin -C [zone이름]
 - ex) $ zlogin -C cs

# Solaris 10 설치 후 서버 재부팅
# 설치 과정은 보통 Solaris의 설치와 동일하다.
# 설치해본 결과 오히려 윈도우보다도 간단했다.

# Network Interface 설정
# exclusive 모드로 설정한 경우에만 수행

# ifconfig를 통해 network interface card 등록
$ ifconfig [interface이름] plumb
 - ex) $ ifconfig nxge1 plumb

[참고] Network Interface Instance Name(Solaris 10 기준)

-----------------------------------------------------------------------------------
NIC     Description
-----------------------------------------------------------------------------------
bge     - SUNW,bge Gigabit Ethernet driver for Broadcom BCM57xx
ce       - Cassini Gigabit-Ethernet device driver
chxge - Chelsio Ethernet network interface controllers
dmfe   - Davicom Fast Ethernet driver for Davicom DM9102A
dnet    - Ethernet driver for DEC 21040, 21041, 21140 Ethernet cards
elxl     - 3Com Ethernet device driver
eri      - eri Fast-Ethernet device driver
ge      - GEM Gigabit-Ethernet device driver
hme   - SUNW,hme Fast-Ethernet device driver
ipge   - PCI-E Gigabit-Ethernet device driver for Intel 82571?based ethernet
            controller.
ixgb   - SUNWixgb, 10 Gigabit Ethernet driver for Intel 82597ex controllers
            and Sun Kirkwood adapters
nge    - Nvidia ck8-04 Gigabit Ethernet driver
nxge  - Sun 10/1 Gigabit Ethernet network driver
pcelx - 3COM EtherLink III PCMCIA Ethernet Adapter
pcn    - AMD PCnet Ethernet controller device driver
qfe     - SUNW,qfe Quad Fast-Ethernet device driver
rge    - Realtek Gigabit Ethernet Network Adapter driver
rtls    - Realtek Fast Ethernet 8139?based network interface controllers
sk98sol - SysKonnect Gigabit Ethernet SK-98xx device driver
spwr  - SMC EtherPower II 10/100 (9432) Ethernet device driver
xge    - Neterion Xframe 10Gigabit Ethernet Network Adapter driver
-----------------------------------------------------------------------------------

# ifconfig를 이용한 network interface card up
$ ifconfig [Interface이름] up
 - ex) $ ifconfig nxge1 up

# ifconfig를 통한 network interface card 설정
$ ifconfig [Interface이름] [IP주소] netmask [network mask] broadcast [broadcast address]
 - ex) $ ifconfig nxge1 xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast xxx.xxx.xxx.255

# 아래 내용은 exclusive, shared 모두 수행
# 재부팅 후 설정값을 사용하기 위해 파일에 저장
$ vi /etc/hostname.nxge1
 - 호스트 네임을 적는다.
$ vi /etc/hosts
[IP주소] [호스트이름] loghost

# gateway 설정
$ route add default [게이트웨이주소]

# netmask 설정
$ vi /etc/netmasks
xxx.xxx.xxx.0 255.255.255.0

# ssh 설정
$ vi /etc/ssh/sshd_config

# zone 리소스 분배
# CPU 분배
$ zonecfg -z [zone이름]
 - ex) $ zonecfg -z cs
zonecfg:[zone이름] > add dedicated-cpu
 - ex) zonecfg:cs > add dedicated-cpu
zonecfg:[zone이름]:dedicated-cpu > set ncpus=[최소CPU]-[최대CPU]
 - ex) zonecfg:cs:dedicated-cpu > set ncpus=20-40
zonecfg:[zone이름]:dedicated-cpu > end
 - ex) zonecfg:cs:dedicated-cpu > end
zonecfg:[zone이름] > verify
 - ex) zonecfg:cs > verify
zonecfg:[zone이름] > commit
 - ex) zonecfg:cs > commit
zonecfg:[zone이름] > exit
 - ex) zonecfg:cs > exit
$ zoneadm -z [zone이름] reboot
 - ex) $ zoneadm -z cs reboot

# CPU 풀 확인을 통해 자원 배분 현황 파악
$ poolstat -r pset
$ psrset

# 메모리 분배
$ zonecfg -z [zone이름]
zonecfg:[zone이름] > add capped-memory
 - ex) zonecfg:cs > add capped-memory
zonecfg:[zone이름]:dedicated-cpu > set physical=[메모리 할당량]
 - ex) zonecfg:cs:dedicated-cpu > set physical=20g
zonecfg:[zone이름]:dedicated-cpu > end
 - ex) zonecfg:cs:dedicated-cpu > end
zonecfg:[zone이름] > verify
 - ex) zonecfg:cs > verify
zonecfg:[zone이름] > commit
 - ex) zonecfg:cs > commit
zonecfg:[zone이름] > exit
 - ex) zonecfg:cs > exit
$ zoneadm -z [zone이름] reboot
 - ex) $ zoneadm -z cs reboot

# 메모리 풀 확인을 통해 자원 배분 현황 파악
$ rcapstat -z 2

Trackback 0 Comment 0
2009.02.17 11:14

솔라리스 10 - 컨테이너(Zone) 특성 및 종류

Container의 특성

container는 여러개의 어플리케이션을 독립적으로 실행 시킬 수 있는 기술

운영체제의 프로세스 영역, 자원 할당, 사용자 할당에 대한 부분을 독립적으로 운영 할 수 있다.

 

Container는 os 내에 가상 운영 체제 공간을 만드는 것이다.

vmware는 독립적인 커널을 사용하지만 Container는 운영체제의 일부를 복사해서 사용한다.

Container를 이용하여 웹서버를 여러개 구성 할 수도 있고, DNS서버, Mail 서버등을 운영 할 수 있다.

 

Container는  메모리 - 50M, 디스크 - 100M 정도를 사용한다고 한다.

 

보안성

분리성

가상화

세밀성

투명성

 

Container의 종류

 Global zone - 현재 운영 중인 존, 솔라리스 기본 운영시스템,

               시스템 제어

 

 Non Global zone - Global zone의 정보를 공유 하는 존

                            존을 생성 하면 모두 Non Global zone 이 된다.

                   서로 다른 존을 인식하지 못하고, non global zone을 생성, 삭제 하지 못한다.

 

 

Zone 의 Daemon

zoneadmd

   가상플랫폼을 관리 하는 주 데몬

 

   부팅과 셧다운을 관리

   zone id 할당과 zsched  프로세스 시작

   존 장치 구성 관리

   네트워크 인터페이스 관리

   가상 NIC plumb와 전통적인 파일 시스템 마운트

 

Zschd

     모든 실행 중인 존은 Zsched라는 커널 프로세스를 가진다.

     zone 내에서 작업하는 커널 쓰레드는 Zsched 데몬에 의해 소유된다.

 

zone 파일 시스템

  /ib, /platform, /sbin, /usr 디렉토리를 글로벌 존에서 공유

 

zone의 네트워킹

  hme0이면 hme0:1을 사용하게 된다.

 

zone 의 상태 정보 확인

 

 undefined

아직 존이 구성 완료되지 않거나 존의 구성 정보가 삭제된 상태

 configured

존의 구성이 완료된 상태 이나 application 환경 요소들이 없는 상태

 incomplete

zoneadm 명령에 의해 설치 및 설치 해제가 수행되는 과도기적인 형태

 installed

존의 구성이 시스템에서 테스트 됨
구성정보가 성공적으로 사용되어지는지 확인

 ready

존을 위한 가상 플랫폼 구성존과 관련된 프로세스들은 아직 시작되지 않음

 running

존 응용프로그램 환경과 관련한 사용자 프로세서들이 실행중인 상태

 shutting down

 존이 정지 되는 동안에 보이는 과도기적 상태


출처 : http://blog.sdnkorea.com/

Trackback 0 Comment 0
2009.02.17 11:11

오픈 솔라리스에서 존 설치 ( zone install on opensolaris )

오픈 솔라리스에서 컨테이너(존)을 설치해보았습니다.
컨테이너를 설치하려면 일단 컨테이너 구성을 해야 합니다.
#zonecfg -z web
을 이용해서 다음과 같이 구성했습니다.

bhkim@vaio-bhkim:/zone# zonecfg -z web export
create -b
set zonepath=/zone/web
set brand=ipkg
set autoboot=false
set ip-type=shared
add net
set address=10.10.0.1/24
set physical=yukonx0
end
여 기서 흥미로운 것은 brand의 변수가 'native'가 아니라 'ipkg'이라는 점입니다. ipkg는 오픈 솔라리스가 사용하는 인스톨러 방식인 IPS를 위한 패키지를 의미하는데, 이점은 컨테이너 설치시에 필요한 이미지를 인터넷에서 다운로드 받겠다는 것을 의미합니다.

그리고, zonepath=/zone/web 인데, 사전에 만들어져 있다면, 반드시 ACL mode를 700으로 설정해야 합니다. 디렉토리가 없다면, 존 구성시 700을 가진 /zone/web 디렉토리를 자동적으로 구성합니다.

혹시나 해서 brand를 native로 바꾸어 보았습니다.
그리고, 아래 처럼 확인하고
bhkim@vaio-bhkim:~# zoneadm list -cv

ID NAME STATUS PATH BRAND IP
0 global running / native shared
- web configured /zone/web native shared

설치 시도해봅니다.
bhkim@vaio-bhkim:~# zoneadm -z web install

sh[1]: exec: /usr/lib/lu/lucreatezone: not found
안되는 군요. native는 lu(live upgrade)기술을 활용해서 글로벌존에 있는 패키지를 이미지화 해서 컨테이너가 있는 디렉토리로 옮겨주는데 아예 툴이 없습니다.

bhkim@vaio-bhkim:~# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- web incomplete /zone/web native shared
설치시도에서 오류가 밸생해서 존의 상태가 incomplete로 남게됩니다. 따라서, 새로 설치를 다시 하려면 configured 모드로 돌아가야 하는데, 그렇게 만들기 위해서 uninstall을 실행합니다.

bhkim@vaio-bhkim:~# zoneadm -z web uninstall

Are you sure you want to uninstall zone web (y/[n])? y

성공적으로 uninstall 되었으면 다시 설치해봅니다.

bhkim@vaio-bhkim:~# zoneadm -z web install


Image: Preparing at /zone/web/root ... done.
Catalog: Retrieving from http://pkg.opensolaris.org:80/ ... done.
Installing: (output follows)
DOWNLOAD PKGS FILES XFER (MB)
SUNWcsl 22/52 4681/7830 79.66/209.30


설치가 진행되고 있군요. 인터넷이 연결되어 있지 않으면 위 URL에 접속할 수 없으므로, 설치가 되지 않습니다. 좋은 점도 있긴 합니다만 인터넷이 없으면 설치하기가 어려우므로 다소 불편할 수도 있겠습니다.

다음은 설치가 완료된 상태입니다.
bhkim@vaio-bhkim:~# zoneadm -z web install

Image: Preparing at /zone/web/root ... done.
Catalog: Retrieving from http://pkg.opensolaris.org:80/ ... done.
Installing: (output follows)
DOWNLOAD PKGS FILES XFER (MB)
Completed 52/52 7830/7830 209.30/209.30

PHASE ACTIONS
Install Phase 12880/12880

Note: Man pages can be obtained by installing SUNWman
Postinstall: Copying SMF seed repository ... done.
Postinstall: Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=681
Postinstall: Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=741
Done: Installation completed in 648.009 seconds.

Next Steps: Boot the zone, then log into the zone console
(zlogin -C) to complete the configuration process


설치가 끝났으므로, 부팅을 해봅니다. 그리고 콘솔에 로그인해봅니다.

bhkim@vaio-bhkim:~# zoneadm -z web boot
zoneadm: zone 'web': Unable to set route for interface lo0 to ��� ��x�
zoneadm: zone 'web':
bhkim@vaio-bhkim:~# zlogin -C web
[Connected to zone 'web' console]


You did not enter a selection.
What type of terminal are you using?
1) ANSI Standard CRT
2) DEC VT100
3) PC Console
4) Sun Command Tool
5) Sun Workstation
6) X Terminal Emulator (xterms)
7) Other
Type the number of your choice and press Return: 6
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair
Configuring network interface addresses: yukonx0.


─ Host Name for yukonx0:1 ──────────────────────────────────────────────────────

Enter the host name which identifies this system on the network. The name
must be unique within your domain; creating a duplicate host name will cause
problems on the network after you install Solaris.

A host name must have at least one character; it can contain letters,
digits, and minus signs (-).


Host name for yukonx0:1 web











────────────────────────────────────────────────────────────────────────────────
F2_Continue F6_Help

;정상적으로 떴군요. ^_^

매우 흥미로운 것은 컨테이너를 만들기 전에 컨테이너 저장될 디렉토리를 미리 만들어놨었는데(아래)
...
rpool/zone 110K 37.3G 20K /rpool/zone
rpool/zone/mysql-db1 18K 37.3G 18K /zone/mysql-db1
rpool/zone/mysql-db2 18K 37.3G 18K /zone/mysql-db2
rpool/zone/mysql-mgm 18K 37.3G 18K /zone/mysql-mgm
rpool/zone/mysql-sql 18K 37.3G 18K /zone/mysql-sql
rpool/zone/web 18K 37.3G 18K /zone/web


설치하고 나니 /zone/web 디렉토리를 사라져 버리고 안보이는 군요. 정상인 것인지 다소 궁금합니다.
아마도 보안이유로 마운트 포인트에서 없앤것이 아닌가 싶은데, 그렇다고 zfs list에서 조차 보이지 않는 것은 좀 의아하군요.

설치이후
bhkim@vaio-bhkim:/zone# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 39.0G 37.3G 57K /rpool
rpool@install 17K - 55K -
rpool/ROOT 6.67G 39.6G 18K /rpool/ROOT
rpool/ROOT@install 15K - 18K -
rpool/ROOT/opensolaris 6.67G 39.6G 4.04G legacy
rpool/ROOT/opensolaris@install 503M - 2.22G -
rpool/ROOT/opensolaris@091108 102M - 3.87G -
rpool/ROOT/opensolaris@091608 19.6M - 3.80G -
rpool/ROOT/opensolaris/opt 1.96G 39.6G 1.77G /opt
rpool/ROOT/opensolaris/opt@install 112K - 3.60M -
rpool/ROOT/opensolaris/opt@090308 191M - 1.73G -
rpool/ROOT/opensolaris/opt@091608 1009K - 1.77G -
rpool/export 30.0G 37.3G 19K /export
rpool/export@install 15K - 19K -
rpool/export/home 12.2G 55.1G 11.8G /export/home
rpool/export/home@090308 404M - 10.9G -
rpool/zone 90K 37.3G 18K /rpool/zone
rpool/zone/mysql-db1 18K 37.3G 18K /zone/mysql-db1
rpool/zone/mysql-db2 18K 37.3G 18K /zone/mysql-db2
rpool/zone/mysql-mgm 18K 37.3G 18K /zone/mysql-mgm
rpool/zone/mysql-sql 18K 37.3G 18K /zone/mysql-sql

아마도 해달 화일 시스템인 /zone/web을 언마운트하고 /rpool/zone 밑의 서브 디렉토리로 생성한 것처럼 보이는 군요.
왜 그랬을까요 ? 흠...

이 렇게 되도, 작동에는 별 문제 없으나, 가용성에는 매우 불편해질 수 있겠습니다. 만약 rpool/zone/web이 그대로 남아있다면, 모두 설치 이후에 해당 화일 시스템의 스냅샷을 설정하게되면, 클로닝 기능을 이용하여 빠르게 복구할 수 있을텐데요.. 그렇게 안된다는 점이 매우 안타깝네요.

새로 만들어진 존에 로그인해봅니다.
bhkim@vaio-bhkim:~# zlogin -C web
[Connected to zone 'web' console]

web console login: root
Last login: Fri Sep 19 10:32:28 on pts/4
Sep 19 10:40:01 web login: ROOT LOGIN /dev/console
Sun Microsystems Inc.   SunOS 5.11      snv_98  November 2008
-bash-3.2# pwd
/root
-bash-3.2# uname -a
SunOS web 5.11 snv_86 i86pc i386 i86pc

헉.. 무지 놀라운 사실이 보이는 군요. 새로 설치된 존에서의 배너에서는  snv_98로 나타나는 군요. 햐..
글로벌 존은 snv_86이거든요. ipkg 브랜드에 의해서 인터넷에 있는 최신 패키지들이 내려온 것으로 보입니다.
그 러나 uname -a에서는 글로벌존과 같은 넘버가 나타나죠. 글로벌존의 라이브러리로 호출되기 때문인 것으로 예상됩니다. 호환성의 문제만 없다면 괜찮겠습니다만... 서브 존과 글로벌 존이 다른 라이브러리 환경을 가지는 것처럼 보일 수 있어서 고쳐져야 할 것 같습니다.


출처 : http://beautifulos.blogspot.com/

Trackback 0 Comment 0