如何创建和配置 solaris 10 Zone

Solaris Zone支持对solaris 10 OS 进行软件分区,以支持多个独立、安全的OS 环境在同一OS 中运行。
每个环境都有独立的进程空间、资源分配和用户。
Zone在生产环境中被广泛使用,因为它易于设置并且不需要像 ldoms 那样的任何特殊硬件。

www. On IT Road .com

安装和引导Zone

现在安装Zone并启动它。
启动后,我们可以登录到 zoen 的控制台进行配置。

global# zoneadm -z zone01 verify
global# zoneadm -z zone01 install
global# zoneadm -z zone01 list -ivc
ID  NAME     STATUS       PATH                 BRAND      IP
 0  global   running      /                    native     shared
 -  zone01   installed    /zones/zone01        native     shared
global# zoneadm -z zone01 boot
global# zoneadm list -v
ID  NAME     STATUS       PATH                 BRAND      IP
 0  global   running      /                    native     shared
 1  zone01  running      /zones/zone01        native     shared
global# zlogin -C zone01
global # zlogin zone01

-C 此处将我们连接到Zone的控制台。
只需执行一次即可使用主机名、时区和其他基本设置配置Zone。

Zone类型

全局Zone每个安装的操作系统都像一个全局Zone,默认情况下存在。
所有非全局Zone只能从全局Zone安装、配置和管理。

非全局Zone它们共享在全局Zone下启动的内核的功能。
所有的软件和其他资源都继承自全局Zone。

**Whole Root zone (Big zone) ** 它拥有自己的所有文件系统的可写副本,如 /opt、/usr。
它需要更多的磁盘空间。

稀疏根Zone(小Zone)像 /opt、/usr 这样的文件系统作为环回文件系统从全局Zone共享(我们在非全局Zone中只有对这些目录的只读访问权限)。
它占用的磁盘空间非常少。

品牌Zone这些Zone是 solaris 10 全局Zone上的 solaris 8 或者 solaris 9 Zone。

资源配置示例

以下是Zone中一些最常用的资源配置示例。

CPU

要查看全局Zone中的 CPU 信息,我们可以使用

global# psrinfo -v
global# psrinfo -vp

确认要使用的 CPU 后,我们可以向Zone添加固定数量的 CPU。

zonecfg:zone01> add dedicated-cpu
zonecfg:zone01:dedicated-cpu> set ncpus=1-2
zonecfg:zone01:dedicated-cpu> set importance=10   (optional, default is 1)
zonecfg:zone01:dedicated-cpu> end

内存

zonecfg:zone01> add capped-memory
zonecfg:zone01:capped-memory> set physical=50m  [max memory that can be used by this zone]
zonecfg:zone01:capped-memory> set swap=100m
zonecfg:zone01:capped-memory> set locked=30m  [memory locked for use by this zone]
zonecfg:zone01:capped-memory> end

文件系统

环回文件系统( Loopback FS)

zonecfg:zone01> add fs
zonecfg:zone01:fs> set dir=/usr/local
zonecfg:zone01:fs> set special=/opt/zones/zone01/local
zonecfg:zone01:fs> set type=lofs
zonecfg:zone01:fs> end

这里 /usr/local 将在非全局Zone中可读可写

普通文件系统

zonecfg:zone01> add fs
zonecfg:zone01:fs> set dir=/data01
zonecfg:zone0101:fs> set special=/dev/dsk/c1t1d0s0
zonecfg:zone0101:fs> set raw=/dev/rdsk/c1t1d0s0
zonecfg:zone0101:fs> add options [logging, nosuid]    (optional)
zonecfg:zone0101:fs> end

ZFS 数据集

当我们将数据集委托给非全局Zone时,我们可以在Zone内对该数据集进行任何操作,而无需全局Zone始终对其进行配置。

zonecfg:zone01> add dataset
zonecfg:zone01> set name=tank/sales
zonecfg:zone01> end

继承包(仅限稀疏根Zone)

现在,在稀疏根Zone的情况下,我们可以从全局Zone继承一些包。

zonecfg:zone01> add inherit-pkg-dir
zonecfg:zone01:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:zone01:inherit-pkg-dir> end

注意:一旦安装了Zone,就无法修改这些资源

IP

我们可以使用专用接口为非全局Zone提供独占 IP,也可以使用全局Zone中的现有接口与非全局Zone共享。
当我们配置独占 IP 时,我们必须在非全局Zone内配置 IP 地址,而不是在配置期间。

独立IP

zonecfg:zone01> set ip-type=exclusive
zonecfg:zone01> add net
zonecfg:zone01:net> set physical=hme0

注意:此处无需指定 IP,我们可以从非全局Zone内部控制所有内容

共享IP

在这种情况下,zone 使用了一个共享接口,该接口已经在全局 zone 中检测和使用。

zonecfg:zone01> add net
zonecfg:zone01:net> set address=192.168.1.2
zonecfg:zone01:net> set physical=hme0
zonecfg:zone01:net> set defrouter=10.0.0.1   [optional]
zonecfg:zone01:net> end

device

我们也可以直接将磁盘等物理设备分配给非全局磁盘。

zonecfg:zone01> add device
zonecfg:zone01:device> set match=/dev/rdsk/c0t1d0
zonecfg:zone01:device> end

注释

如果我们想添加一些注释,例如非全局Zone的功能或者其他任何内容。

zonecfg:zone01> add attr
zonecfg:zone01:attr> set name=comment
zonecfg:zone01:attr> set type=string
zonecfg:zone01:attr> set value="Hello World. This is my zone"
zonecfg:zone01:attr> end

其他

非全局Zone中 CPU 的调度级别等其他设置也可以在全局Zone中进行配置。

zonecfg:zone01> set limitpriv="default,sys_time"
zonecfg:zone01> set scheduling-class=FSS

其他管理命令

重新启动Zone:# zoneadm -z reboot
停止Zone:# zoneadm -z zone halt
卸载Zone:# zoneadm -z zone uninstall -F
删除已卸载的Zone:# zonecfg -z zone delete -F
获取所有配置信息:# zonecfg -z zone info
以安全模式登录Zone:# zlogin -S zone
所有Zone上的执行prstat :# prstat -Z
单个Zone上的执行prstat :# prstat -z zone

使用最少的设置配置Zone

让我们用最少的资源和设置创建一个新Zone,以使其启动和运行。
我们将在本文后面看到如何添加其他资源,如 cpu、内存、文件系统等。
在这种情况下,我们将创建一个稀疏的根Zone。
要创建整个根Zone,我们只需要在配置提示中使用 create -b 而不是 create 。

global# mkdir -p /zones/zone01
global# chmod 700 /zones/zone01
global# zonecfg -z zone01
zone01: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone01> create
zonecfg:zone01> set zonepath=/zones/zone01
zonecfg:zone01> set autoboot=true
zonecfg:zone01> verify
zonecfg:zone01> commit
zonecfg:zone01> exit
日期:2020-09-17 00:15:08 来源:oir作者:oir