第3节 Zone配置
配置一个zone的步骤包括:
1 确定用来制造zone的组件
2 配置zone的资源
3 配置zone
4 校验并提交已配置的zone
3.1 确定zone组件
在为你的环境设计zone,你必须考虑用来制造每个zone配置的组件。这些组件包括:
1 zone的名字
2 到zone的根的zone路径
3 zone的网络接口
4 zone里挂载的文件系统
5 zone里配置的设备
3.2 分配文件系统空间
一个zone能使用的磁盘空间大小没有限制。全局zone管理员负责空间限制。即使一个小型的的单处理器系统也能支持许多个zone同时运行。安装在全局
zone里的包的数量会影响创建zone所需要的空间。包的数量和空间需求是影响zone占用多少磁盘空间最主要的要素。
n 正常情况下,当全局zone安装了所有标准的Solaris包时,每个非全局zone都需要大约100MB的磁盘空间
n 默认时,安装在全局zone中的任何额外的包也会移植到非全局zone,非全局zone所需的磁盘空间数量也随之增加。非全局zone中放置这些额外包的目录位置在资源inherit-pkg-dir中指定
你可以用软分区(soft partition)把磁盘分片或逻辑卷划分成分区,把这些分区作为zone的根,从而限制zone对磁盘空间的使用。软分区最多可创建8192个分区。
另外,建议每个zone分配40M的额外内存;当然,拥有足够交换空间的机器对此没有需求。
3.3 zonecfg工具
zonecfg命令用来配置zone。Zonecfg命令能以交互式模式运行,或命令行模式,或者是命令-文件模式。这个命令的基本功能(其他许多功能超出本书范围,请参阅SUN官方文件):
n 创建或删除zone配置
n 设置被添加到配置中的资源的属性
n 查询或校验配置
n 提交配置
n 回复到先前的配置
n 退出zonecfg会话
zonecfg工具提供了几个子命令用来配置和规定zone。根据当前作用范围,有些子命令能影响环境;Zonecfg提示会显示作用范围是全局还是资源范围。许多子命令能够使用-f或force标记,如果使用此标记,子命令将不会使用交互式询问保护。
子命令 描述
add 添加一个资源到zone
cancel 从资源范围退回到全局。部分被指定的资源被丢弃
commit 校验设定,并把内存中正确的配置保存到磁盘。此后使用revert命令将会回退到这个保存点。
create 为指定的zone在内存中创建一个配置
delete 从内存中删除配置
end 校验被分派的参数,并回到全局范围
export 打印配置到标准输出或指定的输出文件
info 显示当前配置,如资源设置,全局根路径,自动引导,或池等
remove (根据作用范围)删除一个或多个资源
select 选择一个资源,并改变到它的作用范围。
set 设置参数的值(在内存中)
verify 校验暂放在内存中的配置。确保所有的资源需要的属性已被指定,并且zone路径也已被指定
revert 取消在内存中的任何配置,并回退到上一次提交被执行时的状态
exit 提交当前在内存中的设置并退出zonecfg工具。这个命令会自动提交配置信息到稳定的存储库
3.4 zonecfg的资源参数
zonecfg工具中的资源类型包括:
ZONE NAME
Zone name定义zone的名字,用来向配置工具标识各个个体zone
ZONEPATH
Zone path定义zone路径,是指向到zone的根的路径
FS
分配文件系统的资源参数。使用special参数可让本地zone在单独的目录下挂载全局系统的资源。Fs资源的可用参数:
dir Zone内的挂载点路径。
special 在zone内的挂载点所使用的全局文件系统,也可指定物理分片
type 文件系统类型,即zone内核和文件系统如何相互作用
options 可使用的选项和Mount命令类似
INHERIT-PKG-DIR
用此目录访问来自于全局系统的软件包。在这个目录中的软件包的内容,被非全局zone以只读模式从全局zone继承。缺省的inherit-pkg-dir资源有:/lib,/platfrom,/sbin,/usr
NET
准备给非全局zone使用的全局系统接口的逻辑接口。当zone从installed状态切换到ready状态时,网络接口被安装(plumb)
DEVICE
指定Select,add,remove命令所能调用的设备。当zone从installed状态切换到ready状态时,它能拥有已被配置的设备。
ATTR
使全局管理员能分派常规属性设定,比如名字类型和值。类型必须是int,uint(unsigned),boolean或string。
3.5 zone配置概览
要创建一个zone,首先必须以root身份或有root特权的RBAC用户登陆到全局系统。下面列出配置一个名字为test-zone的所需步骤:
一、 开始配置zone
新的zone名字为“test-zone”,设置新zone的根路径在全局zone下的路径(此路径必须为root帐号所拥有,权限为700),并让其在全局zone启动时也自动启动。
global# zonecfg -z test-zone
zonecfg:test-zone> create
zonecfg:test-zone> set zonepath=/export/home/test-zone
zonecfg:test-zone> set autoboot=true
二、 配置zone的文件系统
1. 指定文件系统的挂载点为/mnt;
2. 指定块专用文件/dev/dsk/c0t0d0s7将被挂载到test-zone的/mnt;
3. 指定裸设备专用文件/dev/rdsk/c0t0d07。Zoneadmd守护进程在挂载文件系统之前,将以非交互式模式自动运行fsck命令,对这个设备进行检查。
4. 指定文件系统类型为UFS
5. 指定系统的特定选项,此例中启用了文件系统日志记录。
zonecfg:test-zone> add fs
zonecfg:test-zone:fs> set dir=/mnt
zonecfg:test-zone:fs> set special=/dev/dsk/c0t0d0s7
zonecfg:test-zone:fs> set raw=/dev/rdsk/c0t0d0s7
zonecfg:test-zone:fs> set type=ufs
zonecfg:test-zone:fs> add options [logging]
zonecfg:test-zone:fs> end
三、 配置(从全局zone共享的)被环回挂载的文件系统。指定全局zone的/usr/sfw目录将被环回挂载。
zonecfg:test-zone> add inherit-pkg-dir
zonecfg:test-zone:inherit-pkg-dir> set dir=/usr/sfw
zonecfg:test-zone:inherit-pkg-dir> end
四、 配置网络。指定zone要使用的物理网络接口为e1000g0,IP地址为10.10.10.101。
zonecfg:test-zone> add net
zonecfg:test-zone:net> set physical=e1000g0
zonecfg:test-zone:net> set address=192.168.0.1
zonecfg:test-zone:net> end
五、 配置设备
zonecfg:test-zone> add device
zonecfg:test-zone:device> set match=/dev/sound/*
zonecfg:test-zone:device> end
六、 配置属性。属性的名字为comment,类型为string,并定义此属性的具体内容
zonecfg:test-zone> add attr
zonecfg:test-zone:attr> set name=comment
zonecfg:test-zone:attr> set type=string
zonecfg:test-zone:attr> set value="The test zone is for test destination"
zonecfg:test-zone:attr> end
七、 校验与提交并退出zone配置
zonecfg:test-zone> verify
zonecfg:test-zone> commit
zonecfg:test-zone> exit
现在已经配置好test-zone,下一步可以进行test-zone的安装。
查看ZONE配置文件
当你把zone的配置提交到稳定的储藏库后,配置文件以XML格式保存在/etc/zones/目录中。
# more /etc/zones/test-zone.xml
删除已配置的资源
# zonecfg –z test-zone
zonecfg:test-zone:net> remove net physical=e1000g0
zonecfg:test-zone:net> commit
zonecfg:test-zone:net> end
第4节 使用zoneadm命令
zoneadm命令是安装和管理非全局zone的基本工具。使用zoneadm命令进行的操作必须从全局zone运行。Zoneadm能够:校验zone
的配置,安装zone,启动zone,重启zone,显示正在运行的zone的信息,反安装zone,使用zonecfg命令删除zone。
● 验证已配置的ZONE
你可以在开始安装一个zone之前对其配置进行校验,如果跳过这一步骤,当你开始安装zone时,校验依然会自动执行。必须是全局管理员才能执行校验和安装步骤。
# zoneadm –z test-zone verify
● 安装一个已配置的ZONE
# zoneadm –z testzone install
在安装过程中,可打开另外一个终端窗口,查看文件系统的:
# df –h | grep /export/home/test-zone
/lib 1.3G 650M 583M 53% /export/home/test-zone/root/lib
/platform 1.3G 650M 583M 53% /export/home/test-zone/root/platform
/sbin 1.3G 650M 583M 53% /export/home/test-zone/root/sbin
/usr 4.5G 3.0G 1.4G 68% /export/home/test-zone/root/usr
/dev/dsk/c1t1d0s0 5.9G 6.0M 5.8G 1% /export/home/test-zone/root/mnt
查看已安装的zone并校验它的状态
# zoneadm list –iv
ID NAME STATUS PATH
0 global running /
- test-zone installed /export/home/test-zone
● 启动ZONE
启动zone将使zone进入运行状态(running)。如果zone的资源属性autoboot设置为true,当全局zone启动时会自动启动该zone,autoboot的预设值为false。可以在installed或ready状态手工启动zone。
Zone每一次重新进入ready或running状态,系统为zone分配的唯一ID就递增(从ready状态到running除外)。
# zoneadm -z test-zone ready
# zoneadm list –vi
ID NAME STATUS PATH
0 global running /
1 test-zone ready /export/home/test-zone
# zoneadm list –v
ID NAME STATUS PATH
0 global running /
1 test-zone running /export/home/test-zone
● ZONE停机
使用zoneadm的halt命令把zone的应用环境和虚拟平台移除,然后让zone回到Installed状态。所有的进程都被kill,设备配置被取消,网络接口被卸除,文件系统被卸载,内核数据结构被摧毁。
# zoneadm –z test-zone halt
● 重启ZONE
# zoneadm –z test-zone reboot
● 登陆ZONE并开始工作
初次登陆zone开始配置操作系统环境,需要用-C登陆到zone的控制台模式:
# zlogin -C test-zone
[已连接到区域 'test-zone' 控制台]
Hostname: test-zone
Select a Language
0. English
1. Simplified Chinese
Please make a choice (0 - 1), or press h or ? for help:0
…..
系统会询问你关于终端类型,主机名(此例为solaris-1),时间区域以及root密码等信息。如果使用CDE终端窗口,可选择dtterm,如果使用其他类型的窗口,选择vt100。全部设置完后,zone重启然后进入控制台登陆提示窗口:
solaris-1 console login:
要从zone的控制台退出,使用~.组合键
# ~.
[与区域 'test-zone' 控制台的连接已关闭]
在配置完zone的操作系统环境设置后,可直接登陆zone
# zlogin test-zone
[已连接到区域 'test-zone' pts/5]
Last login: Wed Jan 24 14:31:47 on pts/5
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
● 删除ZONE
如果准备删除一个zone,先把需要保留的数据备份;然后停机zone,释放被zone占用的系统内存。Zone的停机(halt)并不是温顺的和受控的shutdown过程,因此从全局zone对正在运行的zone进行停机操作可能会导致数据丢失。
1. 查看当前已有的zone的状态
# zoneadm list -cp
0:global:running:/
1:test-zone:running:/export/home/test-zone
2. 让test-zone停机
# zoneadm –z test-zone halt
# zoneadm list -cp
0:global:running:/
-:test-zone:installed:/export/home/test-zone
3. 现在除了文件系统空间外,test-zone不再使用系统的其他资源,可以进行zone的卸除操作释放被zone占用的空间
# zoneadm –z test-zone uninstall
Are you sure you want to uninstall zone work-zone (y/[n])? Y
# zoneadm list -cp
0:global:running:/
-:test-zone: configured:/export/home/test-zone
4. 删除zone配置
# zonecfg –z test-zone delete 本文来自:SUN系统管理员学习指南(全球唯一中文版免费在线阅读) for solaris 9&10