Solaris 영역By Amy Rich Solaris 10 운영 체제에는 Solaris 컨테이너 기술이라는, 시스템 리소스를 가상화하고 복수의 소프트웨어 영역 분할을 1개의 인스턴스 OS에서 사용할 수 있도록 하는 기능을 제공하고 있습니다. Solaris 컨테이너 기능은 Solaris 영역 분할 기술 및 리소스 관리 도구로 구성되어 있습니다. Solaris 영역 기능은 실행 중인 어플리케이션에 맞는 서로 다른 환경을 만드는 것을 가능하게 하며, 리소스 관리 체제는 CPU나 메모리와 같은 시스템 리소스의 할당, 관리, 계정 처리를 실현합니다. Solaris 컨테이너의 기능은 하드웨어에 대한 의존성이 없으므로 Solaris 10 OS를 지원하는 것이라면 어느 시스템에서도 사용할 수 있습니다. Solaris 컨테이너 개발은 계속되고 있습니다. 때문에 앞으로 Solaris 10 OS의 구조는 유연성과 기능이 한층 더 강화될 전망입니다. 상세한 사항은 docs.sun.com에 있는 System Administration Guide: Solaris Containers -- Resource Management and Solaris Zones를 참조하십시오. BigAdmin의 Solaris Zones 페이지도 참고하십시오. Solaris 영역 소프트웨어란Solaris 영역 기능은 FreeBSD Jails와 같은 기본 개념에 근거하고 있습니다. FreeBSD Jails와 Solaris 영역 모두 실행 환경이 각자 다른 뷰는 서로 완전하게 격리되고, 어떤 환경에 있는 프로세스는 다른 환경에 있는 프로세스에 신호를 송출하지 못하며, 그 프로세스를 참조하는 것조차 불가능합니다. Jails와 영역에서는 1개의 인스턴스 운영 체제만 공유되기 때문에 CPU가 1개뿐인 시스템에서도 복수의 실행 환경이 공존할 수 있습니다. 영역에는 전역 영역과 비전역 영역 2종류가 있습니다. Solaris 영역 기능이 작용하는 시스템에는 1개의 전역 영역과 최대 8191개의 비전역 영역이 있습니다. 1대의 시스템에서 사용할 수 있는 최대 영역수는 그 시스템의 하드웨어 리소스에 의해 정해집니다. 각각의 영역에는 부팅 시에 ID를 할당할 수 있습니다. 전역 영역 ID는 항상 0이 되며 부팅 가능한 Solaris 커널은 전역 영역만큼 수용됩니다. 모든 장치, 파일 시스템, 다른 영역을 인식할 수 있는 것은 전역 영역뿐입니다. 또한 전역 영역은 비전역 영역 구성, 설치, 관리할 수 있는 유일한 영역이기도 합니다. 비전역 영역에는 전역 영역에 설치된 Solaris OS의 하위집합이 수용됩니다. 또한 전역 영역에 설치되지 않은 패키지도 넣을 수 있습니다. 각각의 비전역 영역에는 그 영역에 관련된 설치된 소프트웨어 패키지를 기록한 전용 패키지 데이터베이스가 있으며, 전역 영역과 다른 비전역 영역 간에 패키지 정보는 공유되지 않습니다. 비전역 영역에는 현지화된 설정 정보, 다른 영역 고유의 파일, 디렉토리도 포함되어 있습니다. 비전역 영역 구성
비전역 영역을 작성하려면 전역 영역의 관리자가 zonecfg -z zonename zonecfg -z zonename subcommand zonecfg -z zonename -f command_file zonecfg help
add <리소스 타입>
(전역 범위)
add <등록정보 이름> <등록정보 값>
(리소스 범위)
cancel
commit
create [-F] [ -b | -t <템플릿> ]
delete [-F]
end
exit [-F]
export [-f <출력 파일>]
help [commands] [syntax] [usage] [<명령 이름>]
info [<리소스 타입> [<등록정보 이름>=<등록정보 값>]*]
remove <리소스 타입> { <등록정보 이름>=<등록정보 값> }
(전역 범위)
remove <등록정보 이름>=<등록정보 값>
(리소스 범위)
revert [-F]
select <리소스 타입> { <등록정보 이름>=<등록정보 값> }
set <등록정보 이름>=<등록정보 값>
verify
기본적인 영역을 설정하려면 zonecfg -z myzone zonecfg:myzone> create zonecfg:myzone> export create -b set autoboot=false add inherit-pkg-dir set dir=/lib end add inherit-pkg-dir set dir=/platform end add inherit-pkg-dir set dir=/sbin end add inherit-pkg-dir set dir=/usr end
이 단계에서 기본 템플릿을 변경합니다. 여기에서는 영역 zonecfg:myzone> set zonepath=/zones/myzone zonecfg:myzone> set autoboot=true zonecfg:myzone> add net zonecfg:myzone:net> set address=192.168.1.7/24 zonecfg:myzone:net> set physical=hme0 zonecfg:myzone:net> end zonecfg:myzone> add inherit-pkg-dir zonecfg:myzone:inherit-pkg-dir> set dir=/opt/sfw zonecfg:myzone:inherit-pkg-dir> end zonecfg:myzone> add fs zonecfg:myzone:fs> set dir=/usr/local zonecfg:myzone:fs> set special=/data zonecfg:myzone:fs> set type=lofs zonecfg:myzone:fs> add options [nodevices] zonecfg:myzone:fs> end zonecfg:myzone> verify zonecfg:myzone> export create -b set zonepath=/zones/myzone set autoboot=true add inherit-pkg-dir set dir=/lib end add inherit-pkg-dir set dir=/platform end add inherit-pkg-dir set dir=/sbin end add inherit-pkg-dir set dir=/usr end add inherit-pkg-dir set dir=/opt/sfw end add fs set dir=/usr/local set special=/data set type=lofs add options nodevices end add net set address=192.168.1.7/24 set physical=hme0 end zonecfg:myzone> commit zonecfg:myzone> export -f /tmp/myzone-zone.cfg zonecfg:myzone> exit 이것으로 영역 설정이 완료되었으며 설정을 실행하기 위한 템플릿이 zoneadm -z <영역 이름> <하위 명령> [<옵션>] zoneadm [-z <영역 이름>] list [<옵션>] zoneadm help
boot halt help [subcommand] install list [-cipv] ready reboot uninstall [-F] verify 비전역 영역의 설치와 부팅영역을 설치하려면 다음 명령만 입력하면 됩니다. zoneadm -z myzone install Preparing to install zone <myzone>. Creating list of files to copy from the global zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <779> packages on the zone. Initialized <779> packages on zone. Successfully initialized zone <myzone>.
다음에는 영역을 부팅하고 실행 환경을 시동하여 zoneadm -z myzone boot zlogin -C myzone 설치 후의 첫 부팅이라 내부적인 명명 규칙이 아무것도 없으므로 콘솔을 사용하여 필요한 정보를 입력하도록 요구 받습니다. 기본적으로 영역의 호스트 이름은 영역 이름과 같습니다. 호스트 이름을 지정할 경우 영역의 내부적인 이름 서비스(DNS, LDAP, 파일, NIS, NIS+ 등)에 근거하여 영역의 IPv4 주소 중 하나로 변환할 수 있는 것을 지정할 필요가 있습니다. 영역에서는 전역 영역과는 완전히 별개의 이름 서비스를 사용할 수 있습니다. 같은 이름 서비스를 사용했다고 해도 그 서비스는 전역 영역 서비스에서 완전히 독립하여 동작합니다.
영역에서는 실행 중인 각 영역 상태는 다음 명령으로 전역 영역에서 참조할 수 있습니다. zoneadm list -v
ID NAME STATUS PATH
0 global running /
2 myzone running /zones/myzone
이 출력으로 새로운 영역이 부팅되고 사용 가능한 상태가 되는 것을 확인할 수 있습니다. 비전역 영역에서
새로 부팅된 영역은 새로 설치된 시스템과 비슷합니다. 아직 사용자 계정이 없으며, 시스템의 기본 설정을 제외하면 설정 정보도 없습니다. 따라서 새로운 영역을 실제로 사용하려면 우선 계정을 만들고 소프트웨어를 추가하여 영역 설정을 사용자 정의할 필요가 있습니다. 그 후 전역 영역 관리자는 zlogin -l <사용자> <영역 이름>
zlogin myzone ls -al / total 126 drwxr-xr-x 19 root other 512 Mar 8 12:45 . drwxr-xr-x 19 root other 512 Mar 8 12:45 .. lrwxrwxrwx 1 root root 9 Mar 8 12:03 bin -> ./usr/bin drwxr-xr-x 2 root other 512 Mar 8 12:02 data drwxr-xr-x 10 root other 1024 Mar 8 12:45 dev drwxr-xr-x 51 root sys 3584 Mar 8 13:36 etc drwxr-xr-x 2 root sys 512 Feb 12 11:42 export dr-xr-xr-x 1 root root 1 Mar 8 12:45 home drwxr-xr-x 5 root sys 512 Mar 8 12:03 kernel drwxr-xr-x 4 root bin 4608 Feb 12 12:17 lib drwxr-xr-x 2 root sys 512 Mar 8 12:04 mnt dr-xr-xr-x 1 root root 1 Mar 8 12:45 net drwxr-xr-x 5 root sys 512 Mar 8 12:03 opt drwxr-xr-x 43 root sys 1536 Feb 12 11:52 platform dr-xr-xr-x 64 root root 30400 Mar 8 16:27 proc drwxr-xr-x 2 root sys 1024 Feb 12 11:48 sbin drwxrwxrwt 4 root sys 314 Mar 8 16:19 tmp drwxr-xr-x 38 root other 1024 Jul 18 2003 usr drwxr-xr-x 33 root sys 512 Mar 8 12:45 var
비대화식 모드
영역 zlogin myzone shutdown -y -i0 -g0 zoneadm -z myzone uninstall -F zonecfg -z myzone delete -F 전역 영역에서 행하는 비전역 영역 정보 획득과 설정zonecfg, zoneadm, zonename, zlogin을 사용 가능할 뿐만 아니라, 다양한 표준 시스템 명령도 전역 영역에서 영역 정보를 참조, 변경할 수 있도록 수정되었습니다.
프로세스 제어
/bin/ps -efo user,zone,pid,ppid,c,stime,tty,time,comm |grep myzone
root myzone 18386 1 0 12:45:24 ? 00:00 /usr/sbin/syslogd
root myzone 18527 1 0 12:47:04 ? 00:00 /usr/lib/ssh/sshd
root myzone 18630 18527 0 13:38:26 ? 00:03 /usr/lib/ssh/sshd
root myzone 18300 1 0 12:45:22 ? 00:00 init
root myzone 18512 1 0 12:45:33 ? 00:01 /usr/sfw/sbin/snmpd
root myzone 18399 1 0 12:45:24 ? 00:00 /usr/sbin/cron
root myzone 18638 18634 0 13:38:31 pts/2 00:00 -sh
root myzone 18523 18300 0 12:47:03 ? 00:00 /usr/lib/saf/sac
root myzone 18401 1 0 12:45:25 ? 00:00 /usr/lib/autofs/automountd
daemon myzone 18324 1 0 12:45:23 ? 00:00 /usr/lib/crypto/kcfd
root myzone 18656 18638 0 13:44:26 pts/2 00:00 tcsh
daemon myzone 18349 1 0 12:45:23 ? 00:00 /usr/sbin/rpcbind
root myzone 18400 1 0 12:45:24 ? 00:00 /usr/sbin/nscd
root myzone 18402 1 0 12:45:25 ? 00:00 /usr/sbin/inetd
smmsp myzone 18435 1 0 12:45:29 ? 00:00 /usr/lib/sendmail
root myzone 18434 1 0 12:45:29 ? 00:00 /usr/lib/sendmail
root myzone 18442 1 0 12:45:29 ? 00:00 /usr/lib/utmpd
root myzone 18297 1 0 12:45:09 ? 00:00 zsched
root myzone 18618 18300 0 13:37:58 zoneconsole \
00:00 /usr/lib/saf/ttymon
root myzone 18496 1 0 12:45:31 ? 00:00 /usr/dt/bin/dtlogin
root myzone 18526 18523 0 12:47:03 ? 00:00 /usr/lib/saf/ttymon
많은 명령이 확장되어, 영역을 기준 삼아 출력을 필터 처리하거나 프로세스가 소속된 영역을 입력으로 지정할 수 있게 되었습니다. Solaris OS에서는 파일 시스템 전역 영역에서 df -Z / (/dev/dsk/c0t1d0s0 ): 1881482 blocks 247016 files /devices (/devices ): 0 blocks 0 files /usr (/dev/dsk/c0t1d0s3 ): 859490 blocks 271499 files /proc (proc ): 0 blocks 1837 files /etc/mnttab (mnttab ): 0 blocks 0 files /dev/fd (fd ): 0 blocks 0 files /var (/dev/dsk/c0t1d0s4 ): 1889810 blocks 239530 files /var/run (swap ): 2111168 blocks 15280 files /tmp (swap ): 2111168 blocks 15280 files /zones (/dev/dsk/c0t1d0s5 ): 60468666 blocks 3681959 files /zones/myzone/root/dev(/zones/myzone/dev ): 60468666 blocks 3681959 files /zones/myzone/root/lib(/lib ): 1881482 blocks 247016 files /zones/myzone/root/opt/sfw(/opt/sfw ): 60468666 blocks 3681959 files /zones/myzone/root/platform(/platform ): 1881482 blocks 247016 files /zones/myzone/root/sbin(/sbin ): 1881482 blocks 247016 files /zones/myzone/root/usr(/usr ): 859490 blocks 271499 files /zones/myzone/root/usr/local(/data ): 1881482 blocks 247016 files /zones/myzone/root/proc(proc ): 0 blocks 1837 files /zones/myzone/root/etc/mnttab(mnttab ): 0 blocks 0 files /zones/myzone/root/dev/fd(fd ): 0 blocks 0 files /zones/myzone/root/var/run(swap ): 2111168 blocks 15280 files /zones/myzone/root/tmp(swap ): 2111168 blocks 15280 files 네트워킹
ifconfig <인터페이스> zone {<이름> | <수치>}
ifconfig hme0:3 plumb 192.168.1.8 netmask 255.255.255.0 zone myzone up
전역 영역에서 전역 영역에 한정된 IP 인터페이스 리스트를 출력하려면 ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
inet 192.168.1.7 netmask ff000000
lo0:1: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
zone myzone
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
ether 8:0:20:9e:b5:40
hme0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
zone myzone
inet 192.168.1.7 netmask ffffff00 broadcast 192.168.1.255
ifconfig -aZ
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
mtu 8232 index 1
inet 192.168.1.7 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 2
inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.255
ether 8:0:20:9e:b5:40
계정 처리 확장 계정( 참고 정보
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics |