Solaris Container 演示:
1.为两个zone创建一个lofs的文件系统
# mkdir –p /export/zdisks
# cd /export/zdisks
# mkfile 200m dev
# mkfile 200m mkt
# lofiadm –a `pwd`/dev
# lofiadm –a `pwd`/mkt
2. 为两个zone创建pool
bash-3.00# poolcfg -c 'create pset pset_large (uint pset.min=4;uint pset.max=65536)'
bash-3.00# poolcfg -c 'create pset pset_small (uint pset.min=1;uint pset.max=4)'
bash-3.00# poolcfg -c 'create pool pool_dev'
bash-3.00# poolcfg -c 'create pool pool_mkt'
bash-3.00# poolcfg -c 'associate pool pool_mkt (pset pset_large)'
bash-3.00# poolcfg -c 'associate pool pool_dev (pset pset_small)'
bash-3.00# poolcfg -c 'modify pset pset_large (string pset.poold.objectives="utilization<75")'
bash-3.00# poolcfg -c 'modify pset pset_small (string pset.poold.objectives="utilization<75")'
bash-3.00# poolcfg -c 'modify pool pool_dev (string pool.scheduler="FSS")'
bash-3.00# poolcfg -c 'modify pool pool_mkt (string pool.scheduler="FSS")'
bash-3.00# pooladm -c
bash-3.00# poolcfg -dc info
system default
string system.comment
int system.version 1
boolean system.bind-default true
string system.poold.objectives wt-load
pool pool_mkt
int pool.sys_id 6
boolean pool.active true
boolean pool.default false
string pool.scheduler FSS
int pool.importance 1
string pool.comment
pset pset_large
pool pool_default
int pool.sys_id 0
boolean pool.active true
boolean pool.default true
int pool.importance 1
string pool.comment
pset pset_default
pool pool_dev
int pool.sys_id 5
boolean pool.active true
boolean pool.default false
string pool.scheduler FSS
int pool.importance 1
string pool.comment
pset pset_small
pset pset_large
int pset.sys_id 1
boolean pset.default false
uint pset.min 4
uint pset.max 65536
string pset.units population
uint pset.load 0
uint pset.size 8
string pset.comment
string pset.poold.objectives utilization<75
cpu
int cpu.sys_id 7
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 4
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 1
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 6
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 3
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 0
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 5
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 2
string cpu.comment
string cpu.status on-line
pset pset_default
int pset.sys_id -1
boolean pset.default true
uint pset.min 1
uint pset.max 65536
string pset.units population
uint pset.load 17
uint pset.size 4
string pset.comment
cpu
int cpu.sys_id 12
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 14
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 13
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 15
string cpu.comment
string cpu.status on-line
pset pset_small
int pset.sys_id 2
boolean pset.default false
uint pset.min 1
uint pset.max 4
string pset.units population
uint pset.load 0
uint pset.size 4
string pset.comment
string pset.poold.objectives utilization<75
cpu
int cpu.sys_id 9
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 11
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 10
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 8
string cpu.comment
string cpu.status on-line
3.为dev和mkt创建root path
# mkdir –p /export/zones/{dev,mkt}
# chmod 700 /export/zones/{dev,mkt}
4. 创建dev和mkt zone
bash-3.00# zonecfg -z dev
dev: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:dev> create
zonecfg:dev> set zonepath=/export/zones/dev
zonecfg:dev> set autoboot=true
zonecfg:dev> set pool=pool_dev
zonecfg:dev> add device
zonecfg:dev:device> set match=/dev/rlofi/1
zonecfg:dev:device> end
zonecfg:dev> add device
zonecfg:dev:device> set match=/dev/lofi/1
zonecfg:dev:device> end
zonecfg:dev> add inherit-pkg-dir
zonecfg:dev:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:dev:inherit-pkg-dir> end
zonecfg:dev> add net
zonecfg:dev:net> set address=10.235.100.1
zonecfg:dev:net> set physical=e1000g0
zonecfg:dev:net> end
zonecfg:dev> add rctl
zonecfg:dev:rctl> set name=zone.cpu-shares
zonecfg:dev:rctl> add value (priv=privileged,limit=20,action=none)
zonecfg:dev:rctl> end
zonecfg:dev> add attr
zonecfg:dev:attr> set name=comment
zonecfg:dev:attr> set type=string
zonecfg:dev:attr> set value="This zone is for the development team."
zonecfg:dev:attr> end
zonecfg:dev> verify
zonecfg:dev> commit
zonecfg:dev> exit
bash-3.00# zonecfg -z mkt
mkt: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:mkt> create
zonecfg:mkt> set zonepath=/export/zones/mkt
zonecfg:mkt> set autoboot=true
zonecfg:mkt> set pool=pool_mkt
zonecfg:mkt> add device
zonecfg:mkt:device> set match=/dev/rlofi/2
zonecfg:mkt:device> end
zonecfg:mkt> add device
zonecfg:mkt:device> set match=/dev/lofi/2
zonecfg:mkt:device> end
zonecfg:mkt> add inherit-pkg-dir
zonecfg:mkt:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:mkt:inherit-pkg-dir> end
zonecfg:mkt> add net
zonecfg:mkt:net> set address=10.235.100.2
zonecfg:mkt:net> set physical=e1000g0
zonecfg:mkt:net> end
zonecfg:mkt> add rctl
zonecfg:mkt:rctl> set name=zone.cpu-shares
zonecfg:mkt:rctl> add value (priv=privileged,limit=20,action=none)
zonecfg:mkt:rctl> end
zonecfg:mkt> add attr
zonecfg:mkt:attr> set name=comment
zonecfg:mkt:attr> set type=string
zonecfg:mkt:attr> set value="This zone is for the market team."
zonecfg:mkt:attr> end
zonecfg:mkt> verify
zonecfg:mkt> commit
zonecfg:mkt> exit
5. Install and boot zones
# zoneadm –z dev install
# zoneadm –z dev boot
# zlogin –C dev
# zoneadm –z mkt install
# zoneadm –z mkt boot
# zlogin –C mkt
6. Verifying the Configuration
(1) 观察各个zone的CPU使用情况,在global zone中
# prstat –Z
(2) 观察资源池的使用情况,在global zone中
# poolstat –r pset 5
(3) 使用nspin工具模拟CPU资源请求
For demonstration purposes, the nspin utility is used to create enough CPU demand to show the Fair Share Scheduler in action1. The nspin utility is part of the Solaris Resource Manager 1.x software, and is available for download at http://www.sun.com/bigadmin/software/nspin/nspin.tar.gz. To create more demand for CPU resources than are available on the 4 CPU machine used here, four copies of nspin are run in both the ora_mkt and ora_sales projects.
(global) # cp /fs1/nspinx /usr/bin/
(global)# nspinx –n 16
(mkt)# nspinx –n 16
(dev)# nspinx –n 16
(global)# prstat –Z
(global)# poolstat –r pset 5