탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 관리: Oracle Solaris 영역, Oracle Solaris 10 영역 및 리소스 관리 Oracle Solaris 11.1 Information Library (한국어) |
8. FSS(Fair Share Scheduler)(개요)
9. FSS(Fair Share Scheduler) 관리(작업)
10. 리소스 상한값 지원 데몬을 사용한 물리적 메모리 제어(개요)
전역 영역의 zone.cpu-shares를 설정하는 방법
zonecfg 명령을 사용하여 영역 구성 되돌리기 또는 제거
18. 비전역 영역, 설치, 종료, 정지 및 복제 정보(개요)
19. 비전역 영역 설치, 부트, 종료, 정지, 제거 및 복제(작업)
22. 영역 마이그레이션 및 zonep2vchk 도구 정보
23. Oracle Solaris 시스템 마이그레이션 및 비전역 영역(작업) 마이그레이션
24. 영역이 설치된 Oracle Solaris 11.1 시스템의 자동 설치 및 패키지 정보
28. 그 밖의 기타 Oracle Solaris 영역 문제 해결
30. Oracle Solaris 10 시스템 액세스 및 아카이브 만들기
zonecfg(1M) 매뉴얼 페이지에서 설명되어 있는 zonecfg 명령은 다음 작업을 수행하는 데 사용됩니다.
영역 구성 만들기
필요한 모든 정보가 있는지 확인
비전역 영역 구성 커밋
또한 zonecfg 명령을 사용하여 전역 영역의 리소스 관리 설정을 영구적으로 지정할 수도 있습니다.
zonecfg 유틸리티를 사용하여 영역을 구성할 때 revert 하위 명령을 사용하여 리소스에 대한 설정을 실행 취소할 수 있습니다. 영역 구성을 되돌리는 방법을 참조하십시오.
시스템에 여러 영역을 구성하는 스크립트는 여러 영역 구성 스크립트에 나와 있습니다.
비전역 영역의 구성을 표시하려면 비전역 영역의 구성 표시 방법을 참조하십시오.
비전역 영역을 만드는 데 필요한 필수 요소는 zonename 등록 정보와 zonepath 등록 정보입니다. 기타 리소스 및 등록 정보는 선택 사항입니다. 또한 일부 선택적 리소스는 옵션을 선택해야 합니다. 예를 들어 dedicated-cpu 리소스를 사용할 것인지 또는 capped-cpu 리소스를 사용할 것인지를 결정해야 합니다. 사용 가능한 zonecfg 등록 정보 및 리소스에 대한 자세한 내용은 영역 구성 데이터를 참조하십시오.
이 절차를 수행하려면 전역 관리자이거나 전역 영역에서 적합한 권한을 부여 받은 사용자여야 합니다.
이 예제 절차에서는 my-zone이라는 이름을 사용합니다.
global# zonecfg -z my-zone
이 영역을 처음으로 구성한 경우 다음 시스템 메시지가 표시됩니다.
my-zone: No such zone configured Use 'create' to begin configuring a new zone.
이 절차에서는 기본 설정을 사용합니다.
zonecfg:my-zone> create create: Using system default template 'SYSdefault'
zonecfg:my-zone> set zonepath=/zones/my-zone
영역이 ZFS 데이터 세트에 있어야 합니다. ZFS 데이터 세트는 영역을 설치하거나 연결할 때 자동으로 생성됩니다. ZFS 데이터 세트를 만들 수 없을 경우 영역이 설치되거나 연결되지 않습니다. 영역 경로의 상위 디렉토리가 존재할 경우 해당 상위 디렉토리가 마운트된 데이터 세트의 마운트 지점이어야 합니다.
true로 설정하는 경우, 전역 영역이 부트될 때 영역이 자동으로 부트됩니다. 기본값은 false입니다. 자동 부트 영역의 경우 영역 서비스 svc:/system/zones:default도 사용으로 설정해야 합니다. 이 서비스는 기본적으로 사용으로 설정됩니다.
zonecfg:my-zone> set autoboot=true
zonecfg:my-zone> set bootargs="-m verbose"
zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
zonecfg:my-zone:dedicated-cpu> set importance=10
기본값은 1입니다.
zonecfg:my-zone:dedicated-cpu> end
zonecfg:my-zone> set limitpriv="default,sys_time"
이 행은 기본 권한 세트에 시스템 시계를 설정할 수 있는 권한을 추가합니다.
zonecfg:my-zone> set scheduling-class=FSS
zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=1g
zonecfg:my-zone:capped-memory> set swap=2g
zonecfg:my-zone:capped-memory> set locked=500m
zonecfg:my-zone:capped-memory> end
주 - capped-memory 리소스를 사용하려면 전역 영역에 resource-cap 패키지가 설치되어 있어야 합니다.
zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/usr/local
zonecfg:my-zone:fs> set special=/opt/local
비전역 영역에서 /usr/local 파일 시스템은 읽기 및 쓰기가 가능하게 설정됩니다.
zonecfg:my-zone:fs> set type=lofs
이 유형은 커널이 파일 시스템과 상호 작용하는 방식을 지정합니다.
zonecfg:my-zone:fs> end
이 단계를 두 번 이상 수행하여 둘 이상의 파일 시스템을 추가할 수 있습니다.
zonecfg:my-zone> set hostid=80f0c086
zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
영역 관리자는 데이터 세트 내에서 스냅샷, 파일 시스템 및 볼륨을 만들고 삭제할 수 있습니다. 영역 관리자는 데이터 세트의 등록 정보를 수정하고 압축 및 암호화를 제어할 수 있습니다.
zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add anet
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/sound/*
zonecfg:my-zone:device> end
둘 이상의 장치를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=infiniband/ofs/*
zonecfg:my-zone:device> end
IB 진단 도구는 비전역 영역에서 지원되지 않습니다. 추가된 장치는 verbs 및 rdma_cm과 같은 OFUV의 구성 요소에서 사용할 수 있습니다.
둘 이상의 장치를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=infiniband/hca/*
zonecfg:my-zone:device> end
IB 진단 도구는 비전역 영역에서 지원되지 않습니다. 추가된 장치는 verbs 및 rdma_cm과 같은 OFUV의 구성 요소에서 사용할 수 있습니다.
둘 이상의 장치를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
zonecfg:my-zone:device> set allow-partition=true
zonecfg:my-zone:device> end
둘 이상의 장치를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
zonecfg:my-zone:device> set allow-raw-io=true
zonecfg:my-zone:device> end
주의 - 디스크의 영역에서 uscsi 작업을 수행할 수 있도록 허용하면 영역에서 디스크와 동일한 버스에 연결된 다른 장치에도 액세스할 수 있게 됩니다. 따라서 이 기능을 사용으로 설정하면 보안 위험이 발생할 수 있고 전역 영역 및 동일한 버스의 리소스를 사용하는 다른 영역이 외부 공격에 노출될 수 있습니다. uscsi(7I)를 참조하십시오. |
둘 이상의 장치를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> set max-sem-ids=10485200
둘 이상의 리소스 제어를 추가하기 위해 이 단계를 여러 번 수행할 수 있습니다.
zonecfg:my-zone> add attr
zonecfg:my-zone> verify
zonecfg:my-zone> commit
zonecfg:my-zone> exit
프롬프트에서 명시적으로 commit를 입력하지 않은 경우에도 exit를 입력하거나 EOF가 발생할 때 commit가 자동으로 시도됩니다.
참고 - zonecfg 명령은 여러 하위 명령을 지원합니다. 동일한 셸 호출에서 각 명령을 따옴표로 묶고 세미콜론으로 구분하여 입력하면 됩니다.
global# zonecfg -z my-zone "create ; set zonepath=/zones/my-zone"
공유 IP 영역의 경우 zonecfg net 리소스에 고정 주소만 지정할 수 있습니다. 명령줄에서 제공할 수 없습니다.
커밋한 영역 구성을 설치하려면 영역 설치 및 부트를 참조하십시오.
이 스크립트를 사용하여 시스템에서 여러 영역을 구성하고 부트할 수 있습니다. 생성된 영역은 anet 리소스를 포함하는 기본 배타적 IP 영역입니다.
스크립트를 실행하기 전에 SCI 도구를 실행하여 구성 프로파일을 만들어야 합니다.
global# sysconfig create-profile -o sc_config.xml
이 스크립트는 다음 매개변수를 사용합니다.
만들 영역의 수
zonename 접두어
기본 디렉토리로 사용할 디렉토리
새로 만든 구성 프로파일의 전체 경로 이름
스크립트를 실행하려면 전역 영역에서 루트 권한을 가진 전역 관리자이거나, 적합한 권한 프로파일을 가진 사용자여야 합니다.
#!/bin/ksh # # Copyright 2006-2012 Oracle Corporation. All rights reserved. # Use is subject to license terms. # # # This script serves as an example of how to instantiate several zones # with no administrative interaction. Run the script with no arguments to # get a usage message. The general flow of the script is: # # 1) Parse and check command line arguments # 2) Configure all zones that are not yet configured # 3) Install the first zone, if needed # 4) Create the remaining zones as clones of the first zone # # Upon successful completion, the requested number of zones will be # been installed and booted. # export PATH=/usr/bin:/usr/sbin me=$(basename $0) function fail_usage { print -u2 "Usage: $me <#-of-zones> <zonename-prefix> <basedir> <sysconfig.xml> Generate sysconfig.xml with: sysconfig create-profile -o sysconfig.xml When running sysconfig, choose \"Automatically\" or \"None\" for network configuration. The value entered for \"Computer Name\" will ignored: each zone's nodename will be set to match the zone name." exit 2 } function log { print "$(date +%T) $@" } function error { print -u2 "$me: ERROR: $@" } function get_zone_state { zoneadm -z "$1" list -p 2>/dev/null | cut -d: -f3 } # # Parse and check arguments # (( $# != 4 )) && fail_usage # If $1 is not a number nzones will be set to 0. integer nzones=$1 if (( nzones < 1 )); then error "Invalid number of zones \"$1\"" fail_usage fi # Be sure that zonename prefix is an allowable zone name and not too long. prefix=$2 if [[ $prefix != @([a-zA-Z0-9])*([-_.a-zA-Z0-9]) || ${#prefix} > 62 ]]; then error "Invalid zonename prefix" fail_usage fi # Be sure that basedir is an absolute path. zoneadm will create the directory # if needed. dir=$3 if [[ $dir != /* ]]; then error "Invalid basedir" fail_usage fi # Be sure the sysconfig profile is readable and ends in .xml sysconfig=$4 if [[ ! -f $sysconfig || ! -r $sysconfig || $sysconfig != *.xml ]]; then error "sysconfig profile missing, unreadable, or not *.xml" fail_usage fi # # Create a temporary directory for all temp files # export TMPDIR=$(mktemp -d /tmp/$me.XXXXXX) if [[ -z $TMPDIR ]]; then error "Could not create temporary directory" exit 1 fi trap 'rm -rf $TMPDIR' EXIT # # Configure all of the zones # for (( i=1; i <= nzones; i++ )); do zone=$prefix$i state=$(get_zone_state $zone) if [[ -n $state ]]; then log "Skipping configuration of $zone: already $state" continue fi log "Configuring $zone" zonecfg -z "$zone" "create; set zonepath=$dir/$zone" if (( $? != 0 )); then error "Configuration of $zone failed" exit 1 fi done # # Install the first zone, then boot it for long enough for SMF to be # initialized. This will make it so that the first boot of all the clones # goes much more quickly. # zone=${prefix}1 state=$(get_zone_state $zone) if [[ $state == configured ]]; then log "Installing $zone" # Customize the nodename in the sysconfig profile z_sysconfig=$TMPDIR/$zone.xml search="<propval type=\"astring\" name=\"nodename\" value=\".*\"/>" replace="<propval type=\"astring\" name=\"nodename\" value=\"$zone\"/>" sed "s|$search|$replace|" $sysconfig > $z_sysconfig zoneadm -z $zone install -c $z_sysconfig if (( $? != 0 )); then error "Installation of $zone failed." rm -f $z_sysconfig exit 1 fi rm -f $z_sysconfig elif [[ $state != installed ]]; then error "Zone $zone is currently in the $state state." error "It must be in the installed state to be cloned." exit 1 fi # Boot the zone no further than single-user. All we really want is for # svc:/system/manifest-import:default to complete. log "Booting $zone for SMF manifest import" zoneadm -z $zone boot -s if (( $? != 0 )); then error "Failed to boot zone $zone" exit 1 fi # This zlogin will return when manifest-import completes log "Waiting for SMF manifest import in $zone to complete" state= while [[ $state != online ]]; do printf "." sleep 1 state=$(zlogin $zone svcs -Ho state \ svc:/system/manifest-import:default 2>/dev/null) done printf "\n" log "Halting $zone" zoneadm -z $zone halt if (( $? != 0 )); then error "failed to halt $zone" exit 1 fi firstzone=$zone # # Clone and boot the remaining zones # for (( i=2; i <= $nzones; i++ )); do zone=$prefix$i # Be sure that it needs to be installed state=$(get_zone_state $zone) if [[ $state != configured ]]; then log "Skipping installation of $zone: current state is $state." continue fi log "Cloning $zone from $firstzone" # Customize the nodename in the sysconfig profile z_sysconfig=$TMPDIR/$zone.xml search='<propval type="astring" name="nodename" value=".*"/>' replace='<propval type="astring" name="nodename" value="'$zone'"/>' sed "s|$search|$replace|" $sysconfig > $z_sysconfig # Clone the zone zoneadm -z $zone clone -c $z_sysconfig $firstzone if (( $? != 0 )); then error "Clone of $firstzone to $zone failed" rm -f $z_sysconfig exit 1 fi rm -f $z_sysconfig # Boot the zone log "Booting $zone" zoneadm -z $zone boot if (( $? != 0 )); then error "Boot of $zone failed" exit 1 fi done # # Boot the first zone now that clones are done # log "Booting $firstzone" zoneadm -z $firstzone boot if (( $? != 0 )); then error "Boot of $firstzone failed" exit 1 fi log "Completed in $SECONDS seconds" exit 0
스크립트 출력:
$ ./buildzones Usage: buildzones <#-of-zones> <zonename-prefix> <basedir> <sysconfig.xml> Generate sysconfig.xml with: sysconfig create-profile -o sysconfig.xml When running sysconfig, choose "Automatically" or "None" for network configuration. The value entered for "Computer Name" will be ignored: each zone's nodename will be set to match the zone name. # ~user/scripts/buildzones 3 bz /tank/bz /var/tmp/sysconfig.xml 12:54:04 Configuring bz1 12:54:05 Configuring bz2 12:54:05 Configuring bz3 12:54:05 Installing bz1 A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20110816T195407Z.bz1.install Image: Preparing at /tank/bz/bz1/root. Install Log: /system/volatile/install.24416/install_log AI Manifest: /usr/share/auto_install/manifest/zone_default.xml SC Profile: /tmp/buildzones.F4ay4T/bz1.xml Zonename: bz1 Installation: Starting ....
이 절차를 수행하려면 전역 영역의 전역 관리자이거나, 적합한 권한 프로파일을 가진 사용자여야 합니다.
global# zonecfg -z zonename info