评估当前的系统设置
第18 章• 规划和配置非全局区域(任务) 221
确定区域主机名并获取网络地址
您必须确定区域的主机名。然后,如果要使区域具有网络连接,则必须为其指定一个IPv4
地址,或手动配置并指定一个IPv6 地址。
区域主机名
如全局区域中的/etc/nsswitch.conf 文件所述,为区域选择的主机名必须在hosts 数据库或
/etc/inet/ipnodes 数据库中定义。网络数据库是指提供网络配置信息的文件。
nsswitch.conf 文件指定要使用的命名服务。
如果将本地文件用于命名服务,则hosts 数据库将保留在/etc/inet/hosts 文件中。区域接
口的主机名从/etc/inet/hosts 中的本地hosts 数据库解析而来。或者,可以在配置区域时
直接指定IP 地址,从而不需要对任何主机名进行解析。
有关更多信息,请参见《System Administration Guide: IP Services》中的“TCP/IP
Configuration Files”和《System Administration Guide: IP Services》中的“Network Databases and
the nsswitch.conf File”。
区域网络地址
每个需要网络连接的区域都有一个或多个专用IP 地址。同时支持IPv4 和IPv6 地址。
IPv4 区域网络地址
如果您使用的是IPv4,则获取地址并将该地址指定到区域。
也可以指定IP 地址前缀的长度。该前缀的格式为address/prefix-length,例如
192.168.1.1/24。因此,要使用的地址为192.168.1.1,要使用的网络掩码为
255.255.255.0,或者是前24 位为1 位的掩码。
IPv6 区域网络地址
如果您使用的是IPv6,则必须手动配置地址。通常情况下,必须至少配置以下两种地址类
型:
本地链接地址本地链接地址的格式为fe80::64-bit interface
ID/10。/10 表明前缀长度为10 位。
由子网上配置的全局前缀构成的地址全局单点传送地址基于管理员为每个子网配置的
64 位前缀和一个64 位接口ID。也可通过在同一子
网中配置为使用IPv6 的任何系统上运行带有-a6
选项的ifconfig 命令来获取前缀。
确定区域主机名并获取网络地址
222 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
64 位接口ID 通常由系统的MAC(介质访问控
制)地址派生而来。为了便于区域使用,可使用
如下方式从全局区域的IPv4 地址中派生出唯一的
备用地址:
16 bits of zero:upper 16 bits of IPv4
address:lower 16 bits of IPv4 address:a
zone-unique number
例如,如果全局区域的IPv4 地址为
192.168.200.10,则对于使用1 作为区域唯一数字的
本地区域,适合的本地链接地址为
fe80::c0a8:c80a:1/10。如果在该子网中使用的全
局前缀为2001:0db8:aabb:ccdd/64,则同一非全局
区域的唯一全局单点传送地址为
2001:0db8:aabb:ccdd::c0a8:c80a:1/64。请注意,
在配置IPv6 地址时,您必须指定前缀长度。
有关本地链接和全局单点传送地址的更多信息,请参见inet6(7P) 手册页。
文件系统配置
在设置虚拟平台时,您可以指定一些要执行的挂载。使用回送虚拟文件系统(loopback
virtual file system, LOFS) 回送挂载到区域的文件系统应使用nodevices 选项挂载。有关
nodevices 选项的信息,请参见第295 页中的“文件系统和非全局区域”。
使用LOFS,您可以创建一个新的虚拟文件系统,以便使用一个备用的路径名称访问文件。
在非全局区域中,使用回送挂载可以使文件系统的分层结构看起来在区域根目录下是重复
的。在该区域中,使用以区域的根目录开头的路径名,可以访问所有文件。LOFS 挂载将保
留文件系统名称空间。
文件系统配置
第18 章• 规划和配置非全局区域(任务) 223
图18–1回送挂载的文件系统
有关更多信息,请参见lofs(7S) 手册页。
创建、修订和删除非全局区域配置(任务图)
任务说明参考
配置非全局区域。使用zonecfg 命令可以创建区
域、检验并提交该配置。
您也可以使用脚本在系统上配置
和引导多个区域。可以使用
zonecfg 命令来显示非全局区域
的配置。
第225 页中的“配置、检验并提
交区域”、第229 页中的“配置
多个区域的脚本”
修改区域配置。使用此过程可以修改区域配置中
的资源类型,或在区域中添加专
用设备。
第234 页中的“使用zonecfg 命
令修改区域配置”
创建、修订和删除非全局区域配置(任务图)
224 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
任务说明参考
恢复或删除区域配置。使用zonecfg 命令可以撤消对区
域配置所做的资源设置,或删除
区域配置。
第236 页中的“使用zonecfg 命
令恢复或删除区域配置”
删除区域配置。使用带有delete 子命令的
zonecfg 命令可以从系统中删除
区域配置。
第238 页中的“如何删除区域配
置”
配置、检验并提交区域
可以使用在zonecfg(1M) 手册页中介绍的zonecfg 命令来执行以下操作:
创建区域配置
检验是否具备所需的全部信息
提交非全局区域配置
当使用zonecfg 实用程序配置区域时,您可以使用revert 子命令来撤消资源设置。请参见
第236 页中的“如何恢复区域配置”。
在系统上配置多个区域的脚本在第229 页中的“配置多个区域的脚本”中提供。
有关如何显示非全局区域配置,请参见第233 页中的“如何显示非全局区域的配置”。
如何配置区域
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
用所选的区域名称来设置区域配置。
此示例过程中使用名称my-zone。
global# zonecfg -z my-zone
如果是第一次配置该区域,则可以看到以下系统消息:
my-zone: No such zone configured
Use ’create’ to begin configuring a new zone.
创建新的区域配置。
此过程使用Sun 的缺省设置。
zonecfg:my-zone> create
1
2
3
配置、检验并提交区域
第18 章• 规划和配置非全局区域(任务) 225
设置区域路径,在此过程中为/export/home/my-zone。
zonecfg:my-zone> set zonepath=/export/home/my-zone
对于该发行版,不要为ZFS 设置zonepath。
设置自动引导值。
如果设置为true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,必
须同时启用区域服务svc:/system/zones:default。缺省值为false。
zonecfg:my-zone> set autoboot=true
如果在系统上启用资源池,则将该池与区域进行关联。
此示例使用名为pool_default 的缺省池。
zonecfg:my-zone> set pool=pool_default
因为资源池允许进行一次可选的调度类分配,所以可以使用池功能来设置一个缺省的调度
程序,而不是非全局区域的系统缺省值。有关说明,请参见第161 页中的“如何将池与调
度类关联”和第178 页中的“创建配置”。
添加文件系统。
zonecfg:my-zone> add fs
a. 设置文件系统的挂载点,在此过程中为/usr/local。
zonecfg:my-zone:fs> set dir=/usr/local
b. 指定在区域中配置/usr/local 之后,才能挂载全局区域中的/opt/local。
zonecfg:my-zone:fs> set special=/opt/local
在非全局区域中,/usr/local 文件系统是可读写的。
c. 指定文件系统类型,在此过程中为lofs。
zonecfg:my-zone:fs> set type=lofs
此类型指明了内核与文件系统的交互方式。
d. 结束文件系统指定。
zonecfg:my-zone:fs> end
可多次执行此步骤来添加多个文件系统。
在存储池tank 中添加一个名为sales 的ZFS 数据集。
zonecfg:my-zone> add dataset
a. 指定指向ZFS 数据集sales 的路径。
zonecfg:my-zone> set name=tank/sales
4
5
6
7
8
配置、检验并提交区域
226 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
b. 结束dataset 指定。
zonecfg:my-zone> end
(仅用于稀疏根区域)添加一个从全局区域回送挂载的共享文件系统。
不要执行此步骤来创建一个没有任何共享文件系统的完全根区域。请参见第220 页中的“
磁盘空间需求”中对完全根区域的讨论。
zonecfg:my-zone> add inherit-pkg-dir
a. 指定在正在配置的区域中以只读模式挂载全局区域中的/opt/sfw。
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
注– 将更新区域的打包数据库,以反映软件包。使用zoneadm 安装区域之后,便不能修
改或删除这些资源。
b. 结束inherit-pkg-dir 指定。
zonecfg:my-zone:inherit-pkg-dir> end
可多次执行此步骤来添加多个共享文件系统。
注– 如果要创建一个完全根区域,并且已经使用inherit-pkg-dir 添加了缺省的共享文件系
统资源,则必须使用zonecfg 删除以下缺省的inherit-pkg-dir 资源,才能安装区域:
zonecfg:my-zone> remove inherit-pkg-dir dir=/lib
zonecfg:my-zone> remove inherit-pkg-dir dir=/platform
zonecfg:my-zone> remove inherit-pkg-dir dir=/sbin
zonecfg:my-zone> remove inherit-pkg-dir dir=/usr
添加网络虚拟接口。
zonecfg:my-zone> add net
a. 设置网络接口的IP 地址,在此过程中为192.168.0.1。
zonecfg:my-zone:net> set address=192.168.0.1
b. 设置网络接口的物理设备类型,在此过程中为hme 设备。
zonecfg:my-zone:net> set physical=hme0
c. 结束指定。
zonecfg:my-zone:net> end
可多次执行此步骤来添加多个网络接口。
9
10
配置、检验并提交区域
第18 章• 规划和配置非全局区域(任务) 227
添加设备。
zonecfg:my-zone> add device
a. 设置设备匹配,在此过程中为/dev/sound/*。
zonecfg:my-zone:device> set match=/dev/sound/*
b. 结束设备指定。
zonecfg:my-zone:device> end
可多次执行此步骤来添加多个设备。
添加区域范围的资源控制。
zonecfg:my-zone> add rctl
a. 设置资源控制的名称,在此过程中为zone.cpu-shares。
zonecfg:my-zone:rctl> set name=zone.cpu-shares
b. 添加权限值、共享限制、以及达到阈值时要采取的操作。
zonecfg:my-zone:rctl> add value (priv=privileged,limit=20,action=none)
c. 结束rctl 指定。
zonecfg:my-zone:rctl> end
可多次执行此步骤来添加多个资源控制。
使用attr 资源类型来添加注释。
zonecfg:my-zone> add attr
a. 将名称设置为comment。
zonecfg:my-zone:attr> set name=comment
b. 将类型设置为string。
zonecfg:my-zone:attr> set type=string
c. 将值设置为说明区域的注释。
zonecfg:my-zone:attr> set value="This is my work zone."
d. 结束attr 资源类型指定。
zonecfg:my-zone:attr> end
检验区域的配置。
zonecfg:my-zone> verify
11
12
13
14
配置、检验并提交区域
228 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
提交区域的配置。
zonecfg:my-zone> commit
退出zonecfg 命令。
zonecfg:my-zone> exit
请注意,即使您没有在提示符下明确键入commit,也会在键入exit 或出现EOF 时自动执行
commit。
在命令行中使用多个子命令
提示– zonecfg 命令还支持通过同一个shell 调用多条子命令,这些子命令放在引号中并用分
号进行分隔。
global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"
下一步执行的操作
请参见第246 页中的“安装和引导区域”来安装已提交的区域配置。
配置多个区域的脚本
您也可以使用该脚本在系统上配置和引导多个区域。该脚本采用以下参数:
要创建的区域个数
zonename 前缀
可用作基目录的目录
要执行此脚本,您必须是全局区域中的全局管理员。全局管理员在全局区域中拥有超级用
户权限或承担主管理员角色。
#!/bin/ksh
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "%Z%%M% %I% %E% SMI"
15
16
更多信息
配置、检验并提交区域
第18 章• 规划和配置非全局区域(任务) 229
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
echo "usage: $0 <#-of-zones>
"
exit 2
fi
if [[ ! -d $3 ]]; then
echo "$3 is not a directory"
exit 1
fi
nprocs=‘psrinfo | wc -l‘
nzones=$1
prefix=$2
dir=$3
ip_addrs_per_if=‘ndd /dev/ip ip_addrs_per_if‘
if [ $ip_addrs_per_if -lt $nzones ]; then
echo "ndd parameter ip_addrs_per_if is too low ($ip_addrs_per_if)"
echo "set it higher with ’ndd -set /dev/ip ip_addrs_per_if "
exit 1
fi
i=1
配置、检验并提交区域
230 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
while [ $i -le $nzones ]; do
zoneadm -z $prefix$i list > /dev/null 2>&1
if [ $? != 0 ]; then
echo configuring $prefix$i
F=$dir/$prefix$i.config
rm -f $F
echo "create" > $F
echo "set zonepath=$dir/$prefix$i" >> $F
zonecfg -z $prefix$i -f $dir/$prefix$i.config 2>&1 | \
sed ’s/^/ /g’
else
echo "skipping $prefix$i, alreadyconfigured"
fi
i=‘expr $i + 1‘
done
i=1
while [ $i -le $nzones ]; do
j=1
while [ $j -le $nprocs ]; do
if [ $i -le $nzones ]; then
if [ ‘zoneadm -z $prefix$i list -p | \
cut -d’:’ -f 3‘ != "configured" ]; then
echo "skipping $prefix$i, alreadyinstalled"
配置、检验并提交区域
第18 章• 规划和配置非全局区域(任务) 231
else
echo installing $prefix$i
mkdir -pm 0700 $dir/$prefix$i
chmod 700 $dir/$prefix$i
zoneadm -z $prefix$i install > /dev/null 2>&1 &
sleep 1 # spread things out just a tad
fi
fi
i=‘expr $i + 1‘
j=‘expr $j + 1‘
done
wait
done
i=1
while [ $i -le $nzones ]; do
echo setting up sysid for $prefix$i
cfg=$dir/$prefix$i/root/etc/sysidcfg
rm -f $cfg
echo "network_interface=NONE {hostname=$prefix$i}" > $cfg
echo "system_locale=C" >> $cfg
echo "terminal=xterms" >> $cfg
echo "security_policy=NONE" >> $cfg
echo "name_service=NONE" >> $cfg
配置、检验并提交区域
232 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
echo "timezone=US/Pacific" >> $cfg
echo "root_password=Qexr7Y/wzkSbc" >> $cfg # ’l1a’
i=‘expr $i + 1‘
done
i=1
para=‘expr $nprocs \* 2‘
while [ $i -le $nzones ]; do
date
j=1
while [ $j -le $para ]; do
if [ $i -le $nzones ]; then
echo booting $prefix$i
zoneadm -z $prefix$i boot &
fi
j=‘expr $j + 1‘
i=‘expr $i + 1‘
done
wait
done
如何显示非全局区域的配置
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
1
配置、检验并提交区域
第18 章• 规划和配置非全局区域(任务) 233
显示区域配置。
global# zonecfg -z zonename info
使用zonecfg 命令修改区域配置
也可使用zonecfg 命令执行以下操作:
修改区域配置中的资源类型
在区域中添加专用设备
如何修改区域配置中的资源类型
可以选择一个资源类型并修改该资源的指定。
请注意,在使用zoneadm 安装区域之后,不能修改或删除inherit-pkg-dir 目录中软件包的
内容。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
选择要修改的区域,在此过程中为my-zone。
global# zonecfg -z my-zone
选择要更改的资源类型,例如,资源控制。
zonecfg:my-zone> select rctl name=zone.cpu-shares
删除当前值。
zonecfg:my-zone:rctl> remove value (priv=privileged,limit=20,action=none)
添加新值。
zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)
结束修改后的rctl 的指定。
zonecfg:my-zone:rctl> end
提交区域的配置。
zonecfg:my-zone> commit
退出zonecfg 命令。
zonecfg:my-zone> exit
2
1
2
3
4
5
6
7
8
使用zonecfg 命令修改区域配置
234 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
请注意,即使您没有在提示符下明确键入commit,也会在键入exit 或出现EOF 时自动执行
commit。
由zonecfg 提交的更改在下次引导区域时生效。
如何修改区域配置中的属性类型
使用此过程可以重置一个独立属性,该独立属性没有其他相关属性要配置。例如,要删除
现有的池关联,您可以将pool 资源重置为null。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
选择要修改的区域,在此过程中为my-zone。
global# zonecfg -z my-zone
重置要更改的属性,在此过程中为现有的池关联。
zonecfg:my-zone> set pool=""
提交区域的配置。
zonecfg:my-zone> commit
退出zonecfg 命令。
zonecfg:my-zone> exit
请注意,即使您没有在提示符下明确键入commit,也会在键入exit 或出现EOF 时自动执行
commit。
由zonecfg 提交的更改在下次引导区域时生效。
如何在区域中添加专用设备
以下过程说明如何在非全局区域配置中放置扫描设备。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
添加设备。
zonecfg:myzone> add device
1
2
3
4
5
1
2
使用zonecfg 命令修改区域配置
第18 章• 规划和配置非全局区域(任务) 235
设置设备匹配,在此过程中为/dev/scsi/scanner/c3t4*。
zonecfg:myzone:device> set match=/dev/scsi/scanner/c3t4*
结束设备指定。
zonecfg:myzone:device> end
退出zonecfg 命令。
zonecfg:myzone> exit
使用zonecfg 命令恢复或删除区域配置
使用zonecfg(1M) 中介绍的zonecfg 命令可以恢复或删除区域配置。
如何恢复区域配置
当使用zonecfg 实用程序配置区域时,请使用revert 子命令来撤消对区域配置执行的资源
设置。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
在配置一个名为tmp-zone 的区域时,请键入info 来查看配置。
zonecfg:tmp-zone> info
配置的net 资源段显示如下:
.
.
.
fs:
dir: /tmp
special: swap
type: tmpfs
3
4
5
1
2
使用zonecfg 命令恢复或删除区域配置
236 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
net:
address: 192.168.0.1
physical: eri0
device
match: /dev/pts/*
.
.
.
删除网络地址:
zonecfg:tmp-zone> remove net address=192.168.0.1
检验net 条目是否已被删除。
zonecfg:tmp-zone> info
.
.
.
fs:
dir: /tmp
special: swap
type: tmpfs
device
match: /dev/pts/*
.
.
.
3
4
使用zonecfg 命令恢复或删除区域配置
第18 章• 规划和配置非全局区域(任务) 237
键入revert。
zonecfg:tmp-zone> revert
对下面的问题回答是:
Are you sure you want to revert (y/[n])? y
检验网络地址是否再次出现:
zonecfg:tmp-zone> info
.
.
.
fs:
dir: /tmp
special: swap
type: tmpfs
net:
address: 192.168.0.1
physical: eri0
device
match: /dev/pts/*
.
.
.
如何删除区域配置
使用带有delete 子命令的zonecfg,可以从系统中删除区域配置。
要执行此过程,您必须是全局区域中的全局管理员。
5
6
7
使用zonecfg 命令恢复或删除区域配置
238 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《System Administration Guide: Basic
Administration》中的“Using the Solaris Management ToolsWith RBAC (Task Map)”。
使用以下两种方法之一来删除区域a-zone 的配置:
使用-F 选项强制执行操作:
global# zonecfg -z a-zone delete -F
对系统提示回答是,从而以交互方式删除区域:
global# zonecfg -z a-zone delete
Are you sure you want to delete zone a-zone (y/[n])? y
1
2
使用zonecfg 命令恢复或删除区域配置
第18 章• 规划和配置非全局区域(任务) 239
240
关于安装、停止和卸载非全局区域(概
述)
本章介绍如何在您的Solaris 系统上安装区域,同时还介绍管理虚拟平台和应用程序环境的
两个进程,zoneadmd 和zsched。此外,还提供了有关停止、重新引导和卸载区域的信息。
本章包含以下主题:
第241 页中的“区域安装概念”
第242 页中的“区域构建”
第243 页中的“zoneadmd 守护进程”
第243 页中的“zsched 区域调度程序”
第243 页中的“区域应用程序环境”
第244 页中的“关于停止、重新引导和卸载区域”
有关如何安装和引导非全局区域,或者停止或卸载非全局区域,请参见第20 章。
区域安装概念
zoneadm(1M) 手册页中所述的zoneadm 命令是用于安装和管理非全局区域的主要工具。必须
从全局区域运行使用zoneadm 命令的操作。可以使用zoneadm 命令执行以下任务:
检验区域
安装区域
引导区域
显示有关正在运行的区域的信息
停止区域
重新引导区域
卸载区域
有关区域安装和检验过程,请参见第20 章和zoneadm(1M) 手册页。有关区域配置过程,请
参见第18 章和zonecfg(1M) 手册页。区域状态在第204 页中的“非全局区域状态模型”中
介绍。
如果您打算为区域生成Solaris 审计记录,请在安装非全局区域之前阅读第306 页中的“在
区域中使用Solaris 审计”。
19 第1 9 章
241
区域构建
在配置了非全局区域之后,应检验是否可以在系统配置中安全安装此区域。然后您可以安
装此区域。区域的根文件系统所需的文件由系统安装在区域的根路径下。成功安装了区域
之后,便可进行初始登录和引导。
在Solaris 安装中用于初始安装软件包的方法也可用于填充非全局区域。
全局区域必须包含填充非全局区域所需的所有数据。填充区域包括创建目录、复制文件以
及提供配置信息。
从全局区域中填充区域时,只会使用在全局区域中通过软件包创建的信息或数据。有关更
多信息,请参见pkgparam(1) 和pkginfo(4) 手册页。
安装区域时,不引用或复制以下数据:
未安装的软件包
修补程序
CD 和DVD 上的数据
网络安装映像
区域的任何原型或其他实例
此外,以下信息类型(如果在全局区域中存在)也不会复制到正在安装的区域:
/etc/passwd 文件中的新用户或已更改的用户
/etc/group 文件中的新组或已更改的组
网络服务(例如DHCP地址分配、UUCP(UNIX 对UNIX 复制)或sendmail)的配置
网络服务(例如命名服务)的配置
新的或已更改的crontab、打印机和邮件文件
系统日志、消息和记帐文件
如果使用Solaris 审计,则可能需要对从全局区域复制的审计文件进行修改。有关更多信
息,请参见第306 页中的“在区域中使用Solaris 审计”。
不能在非全局区域中配置以下功能:
Solaris Live UpgradeTM 引导环境
Solaris Volume Manager 元设备
DHCP地址分配
SSL 代理服务器
当区域从已安装状态转换为就绪状态时,便会添加在配置文件中指定的资源。系统会指定
唯一的区域ID。还将挂载文件系统,检测网络接口并配置设备。转换到就绪状态后,虚拟
平台便准备好开始运行用户进程了。在就绪状态下,会启动zsched 和zoneadmd 进程来管理
虚拟平台。
zsched 是一个类似于sched 的系统调度进程,用于跟踪与区域关联的内核资源。
zoneadmd 是区域管理守护进程。
区域构建
242 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
处于就绪状态的区域中不存在任何正在执行的用户进程。就绪区域与正在运行的区域之间
的主要差异在于,正在运行的区域中至少有一个进程正在执行。有关更多信息,请参见
init(1M) 手册页。
zoneadmd 守护进程
区域管理守护进程zoneadmd 是管理区域虚拟平台的主要进程。此守护进程还负责管理区域
引导和关闭。对于系统上的每个活动(就绪、正在运行或正在关闭)区域,都有一个
zoneadmd 进程在运行。
zoneadmd 守护进程将按照区域配置中指定的方式设置区域。此过程包括以下操作:
分配区域ID 并启动zsched 系统进程。
设置区域范围的资源控制。
准备区域配置中指定的区域设备。有关更多信息,请参见devfsadmd(1M) 手册页。
探测虚拟网络接口。
挂载回送文件系统和常规文件系统。
实例化和初始化区域控制台设备。
除非zoneadmd 守护进程已经运行,否则它会由zoneadm 自动启动。因此,如果此守护进程
因某种原因没有运行,则调用zoneadm 来管理区域时将重新启动zoneadmd。
zoneadmd 守护进程的手册页为zoneadmd(1M)。
zsched 区域调度程序
活动区域是指处于就绪状态、正在运行状态或正在关闭状态的区域。每个活动区域都有一
个关联的内核进程zsched。代表区域执行操作的内核线程由zsched 所拥有。通过zsched 进
程,区域子系统可跟踪每个区域的内核线程。
区域应用程序环境
引导区域类似于引导常规的Solaris 系统。zoneadm 命令用于创建区域应用程序环境。
在首次引导非全局区域之前,必须创建区域的内部配置。内部配置指定要使用的命名服
务、缺省语言环境(locale) 和时区、区域的超级用户口令,以及应用程序环境的其他方面。
通过响应出现在区域控制台上的一系列提示来建立应用程序环境,如第256 页中的“内部
区域配置”中所述。请注意,可以独立于全局设置来配置区域的缺省语言环境和时区。