JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分资源管理

1.  Solaris 10 资源管理介绍

2.  项目和任务(概述)

3.  管理项目和任务

4.  扩展记帐(概述)

5.  管理扩展记帐(任务)

6.  资源控制(概述)

7.  管理资源控制(任务)

8.  公平共享调度程序(概述)

9.  管理公平共享调度程序(任务)

10.  使用资源上限设置守护进程控制物理内存(概述)

11.  管理资源上限设置守护进程(任务)

12.  资源池(概述)

13.  创建和管理资源池(任务)

14.  资源管理配置示例

15.  Solaris Management Console 中的资源控制功能

第 2 部分区域

16.  Solaris Zones 介绍

17.  非全局区域配置(概述)

18.  规划和配置非全局区域(任务)

规划和配置非全局区域(任务列表)

评估当前的系统设置

磁盘空间需求

稀疏根区域

完全根区域

限制区域大小

确定区域主机名并获取网络地址

区域主机名

共享 IP 区域网络地址

IPv4 区域网络地址

IPv6 区域网络地址

专用 IP 区域网络地址

文件系统配置

创建、修订和删除非全局区域配置(任务列表)

配置、检验并提交区域

如何配置区域

下一步执行的操作

配置多个区域的脚本

如何显示非全局区域的配置

使用 zonecfg 命令修改区域配置

如何修改区域配置中的资源类型

Solaris 10 8/07:如何清除区域配置中的属性类型

Solaris 10 3/05 至 Solaris 10 11/06:如何修改区域配置中的属性类型

Solaris 10 8/07:如何重命名区域

如何在区域中添加专用设备

如何在全局区域中设置 zone.cpu-shares

使用 zonecfg 命令恢复或删除区域配置

如何恢复区域配置

如何删除区域配置

19.  关于安装、停止、克隆和卸载非全局区域(概述)

20.  安装、引导、停止、卸载和克隆非全局区域(任务)

21.  非全局区域登录(概述)

22.  登录到非全局区域(任务)

23.  移动和迁移非全局区域(任务)

24.  Oracle Solaris 10 9/10:将物理 Oracle Solaris 系统迁移到区域中(任务)

25.  关于安装了区域的 Oracle Solaris 系统上的软件包和修补程序(概述)

26.  在安装了区域的 Oracle Solaris 系统上添加和删除软件包和修补程序(任务)

27.  Oracle Solaris Zones 管理(概述)

28.  Oracle Solaris Zones 管理(任务)

29.  升级安装了非全局区域的 Oracle Solaris 10 系统

30.  各种 Oracle Solaris Zones 问题的故障排除

第 3 部分lx 标记区域

31.  关于标记区域和 Linux 标记区域

32.  规划 lx 标记区域配置(概述)

33.  配置 lx 标记区域(任务)

34.  关于安装、引导、停止、克隆和卸载 lx 标记区域(概述)

35.  安装、引导、停止、卸载和克隆 lx 标记区域(任务)

36.  登录到 lx 标记区域(任务)

37.  移动和迁移 lx 标记区域(任务)

38.  在 lx 标记区域中管理和运行应用程序(任务)

词汇表

索引

配置、检验并提交区域

使用 zonecfg(1M) 手册页中所述的 zonecfg 命令可执行以下操作。

也可以使用 zonecfg 命令永久指定全局区域的资源管理设置。

当使用 zonecfg 实用程序配置区域时,您可以使用 revert 子命令来撤消资源设置。请参见如何恢复区域配置

在系统上配置多个区域的脚本在配置多个区域的脚本中提供。

有关如何显示非全局区域配置,请参见如何显示非全局区域的配置

如何配置区域

请注意,创建本地非全局区域的必需元素只有 zonenamezonepath 属性。其他资源和属性都是可选的。有些可选的资源还需要在备选项之间进行选择,例如决定使用 dedicated-cpu 资源还是 capped-cpu 资源。有关可用的 zonecfg 属性和资源的信息,请参见区域配置数据

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"

  2. 用所选的区域名称来设置区域配置。

    此示例过程中使用名称 my-zone

    global# zonecfg -z my-zone

    如果是第一次配置该区域,则可以看到以下系统消息:

    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. 创建新的区域配置。

    此过程使用缺省设置。

    zonecfg:my-zone> create
  4. 设置区域路径,在此过程中为 /export/home/my-zone
    zonecfg:my-zone> set zonepath=/export/home/my-zone

    对于 Solaris 10 10/08 发行版之前的发行版,不要为 ZFS 设置 zonepath

  5. 设置自动引导值。

    如果设置为 true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。缺省值为 false

    zonecfg:my-zone> set autoboot=true
  6. 为区域设置持久引导参数。
    zonecfg:my-zone> set bootargs="-m verbose"
  7. 指定一个 CPU 专用于该区域。
    zonecfg:my-zone> add dedicated-cpu
    1. 设置 CPU 数量。
      zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
    2. (可选)设置重要性。
      zonecfg:my-zone:dedicated-cpu> set importance=10

      缺省设置为 1

    3. 结束指定。
      zonecfg:my-zone:dedicated-cpu> end
  8. 修改缺省特权集。
    zonecfg:my-zone> set limitpriv="default,sys_time"

    该行添加了将系统时钟设置为缺省特权集的功能。

  9. 将调度类设置为 FSS
    zonecfg:my-zone> set scheduling-class=FSS
  10. 添加内存上限。
    zonecfg:my-zone> add capped-memory
    1. 设置内存上限。
      zonecfg:my-zone:capped-memory> set physical=50m
    2. 设置交换内存上限。
      zonecfg:my-zone:capped-memory> set swap=100m
    3. 设置锁定内存上限。
      zonecfg:my-zone:capped-memory> set locked=30m
    4. 结束内存上限指定。
      zonecfg:my-zone:capped-memory> end
  11. 添加文件系统。
    zonecfg:my-zone> add fs
    1. 设置文件系统的挂载点,在此过程中为 /usr/local
      zonecfg:my-zone:fs> set dir=/usr/local
    2. 指定全局区域中的 /opt/zones/my-zone/local 将要在所配置的区域中挂载为 /usr/local
      zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local

      在非全局区域中,/usr/local 文件系统是可读写的。

    3. 指定文件系统类型,在此过程中为 lofs
      zonecfg:my-zone:fs> set type=lofs

      此类型指明了内核与文件系统的交互方式。

    4. 结束文件系统指定。
      zonecfg:my-zone:fs> end

    可多次执行此步骤来添加多个文件系统。

  12. (可选)设置 hostid
    zonecfg:my-zone> set hostid=80f0c086
  13. 在存储池 tank 中添加一个名为 sales 的 ZFS 数据集。
    zonecfg:my-zone> add dataset
    1. 指定指向 ZFS 数据集 sales 的路径。
      zonecfg:my-zone> set name=tank/sales
    2. 结束 dataset 指定。
      zonecfg:my-zone> end
  14. (仅用于稀疏根区域)添加一个从全局区域回送挂载的共享文件系统。

    要执行此步骤来创建一个没有任何共享文件系统的完全根区域。请参见磁盘空间需求中对完全根区域的讨论。

    zonecfg:my-zone> add inherit-pkg-dir
    1. 指定在正在配置的区域中以只读模式挂载全局区域中的 /opt/sfw
      zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw

      注 - 区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。


    2. 结束 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


  15. (可选)如果要创建一个专用 IP 区域,请设置 ip-type
    zonecfg:my-zone> set ip-type=exclusive

    注 - add net 步骤中只会指定物理设备类型。


  16. 添加网络接口。
    zonecfg:my-zone> add net
    1. (仅共享 IP)设置网络接口的 IP 地址,在此过程中为 192.168.0.1
      zonecfg:my-zone:net> set address=192.168.0.1
    2. 设置网络接口的物理设备类型,在此过程中为 hme 设备。
      zonecfg:my-zone:net> set physical=hme0
    3. Solaris 10 10/08:(可选,仅共享 IP)在此过程中,为网络接口设置缺省路由器 10.0.0.1
      zonecfg:my-zone:net> set defrouter=10.0.0.1
    4. 结束指定。
      zonecfg:my-zone:net> end

    可多次执行此步骤来添加多个网络接口。

  17. 添加设备。
    zonecfg:my-zone> add device
    1. 设置设备匹配,在此过程中为 /dev/sound/*
      zonecfg:my-zone:device> set match=/dev/sound/*
    2. 结束设备指定。
      zonecfg:my-zone:device> end

    可多次执行此步骤来添加多个设备。

  18. 使用属性名称添加区域范围的资源控制。
    zonecfg:my-zone> set max-sem-ids=10485200

    可多次执行此步骤来添加多个资源控制。

  19. 使用 attr 资源类型来添加注释。
    zonecfg:my-zone> add attr
    1. 将名称设置为 comment
      zonecfg:my-zone:attr> set name=comment
    2. 将类型设置为 string
      zonecfg:my-zone:attr> set type=string
    3. 将值设置为说明区域的注释。
      zonecfg:my-zone:attr> set value="This is my work zone."
    4. 结束 attr 资源类型指定。
      zonecfg:my-zone:attr> end
  20. 检验区域的配置。
    zonecfg:my-zone> verify
  21. 提交区域的配置。
    zonecfg:my-zone> commit
  22. 退出 zonecfg 命令。
    zonecfg:my-zone> exit

    请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit

在命令行中使用多个子命令

提示 - zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。

global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"

下一步执行的操作

请参见安装和引导区域来安装已提交的区域配置。

配置多个区域的脚本

可以使用此脚本在系统中配置和引导多个区域。此脚本采用以下参数:

要执行此脚本,您必须是全局区域中的全局管理员。全局管理员在全局区域中拥有超级用户权限或承担主管理员角色。

#!/bin/ksh
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident    "%Z%%M%    %I%    %E% SMI"

if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
        echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir>"
        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 <num>"
        exit 1
fi

i=1
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, already configured"
    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, already installed"
            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
    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

如何显示非全局区域的配置

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"

  2. 显示区域配置。
    global# zonecfg -z zonename info