| 탐색 링크 건너뛰기 | |
| 인쇄 보기 종료 | |
|
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