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