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.  规划和配置非全局区域(任务)

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 标记区域(任务)

规划和配置 lx 标记区域(任务列表)

如何配置 lx 标记区域

如何配置、检验和提交 lx 标记区域

下一步执行的操作

配置多个 lx 标记区域的脚本

如何显示标记区域的配置

修改、恢复或删除区域配置

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

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

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

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

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

词汇表

索引

如何配置 lx 标记区域

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


提示 - 如果您知道将要使用 CD 或 DVD 在 lx 标记区域中安装应用程序,请在最初配置标记区域时,使用 add fs 在全局区域内添加对 CD 或 DVD 介质的只读访问权限。然后可以使用 CD 或 DVD 在标记区域中安装产品。


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

配置多个 lx 标记区域的脚本中提供了用于在系统中配置多个区域的脚本。

要显示非全局区域配置,请参见如何显示标记区域的配置


提示 - 配置完标记区域之后,最好复制该区域的配置。将来您可以使用此备份来恢复区域。以超级用户或主管理员的身份,将区域 lx-zone 的配置输出到文件。以下示例使用名为 lx-zone.config 的文件。

global# zonecfg -z lx-zone export > lx-zone.config

有关更多信息,请参见如何恢复单个非全局区域


如何配置、检验和提交 lx 标记区域

请注意,不能在启用标签的 Trusted Oracle Solaris 系统中使用 lx 标记区域。zoneadm 命令将不检验配置。

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

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

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

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

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

    global# zonecfg -z lx-zone

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

    lx-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. 使用 SUNWlx 模板创建新 lx 区域配置。
    zonecfg:lx-zone> create -t SUNWlx

    或者,也可以创建空区域并显式设置标记:

    zonecfg:lx-zone> create -b
    zonecfg:lx-zone> set brand=lx
  4. 设置区域路径,在此过程中为 /export/home/lx-zone
    zonecfg:lx-zone> set zonepath=/export/home/lx-zone
  5. 设置自动引导值。

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

    zonecfg:lx-zone> set autoboot=true
  6. 为区域设置持久引导参数。
    zonecfg:lx-zone> set bootargs="-i=altinit"
  7. 如果在系统上启用资源池,则将该池与区域进行关联。

    此示例使用名为 pool_default 的缺省池。

    zonecfg:lx-zone> set pool=pool_default

    因为资源池允许进行一次可选的调度类分配,所以可以使用池功能来设置一个缺省的调度程序,而不是非全局区域的系统缺省值。有关说明,请参见如何将池与调度类关联创建配置

  8. 修改缺省特权集。
    zonecfg:lx-zone> set limitpriv="default,proc_priocntl"

    proc_priocntl 权限用于在实时类中运行进程。

  9. 将 CPU 份额值设置为 5。
    zonecfg:lx-zone> set cpu-shares=5
  10. 添加内存上限。
    zonecfg:lx-zone> add capped-memory
    1. 设置内存上限。
      zonecfg:lx-zone:capped-memory> set physical=50m
    2. 设置交换内存上限。
      zonecfg:lx-zone:capped-memory> set swap=100m
    3. 设置锁定内存上限。
      zonecfg:lx-zone:capped-memory> set locked=30m
    4. 结束指定。
      zonecfg:lx-zone:capped-memory> end
  11. 添加文件系统。
    zonecfg:lx-zone> add fs
    1. 设置文件系统的挂载点,在此过程中为 /export/linux/local
      zonecfg:lx-zone:fs> set dir=/export/linux/local
    2. 指定全局区域中的 /opt/local 将要在所配置的区域中挂载为 /export/linux/local
      zonecfg:lx-zone:fs> set special=/opt/local

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

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

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

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

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

  12. 添加网络虚拟接口。
    zonecfg:lx-zone> add net
    1. 以下面格式设置 IP 地址:区域的 IP 地址/网络掩码。在此过程中使用了 10.6.10.233/24
      zonecfg:lx-zone:net> set address=10.6.10.233/24
    2. 设置网络接口的物理设备类型,在此过程中为 bge 设备。
      zonecfg:lx-zone:net> set physical=bge0
    3. 结束指定。
      zonecfg:lx-zone:net> end

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

  13. 通过使用 attr 资源类型在此区域中启用全局区域中存在的音频设备。
    zonecfg:lx-zone> add attr
    1. 将名称设置为 audio
      zonecfg:lx-zone:attr> set name=audio
    2. 将类型设置为 boolean
      zonecfg:lx-zone:attr> set type=boolean
    3. 将值设置为 true
      zonecfg:lx-zone:attr> set value=true
    4. 结束 attr 资源类型指定。
      zonecfg:lx-zone:attr> end
  14. 检验区域的配置。
    zonecfg:lx-zone> verify
  15. 提交区域的配置。
    zonecfg:lx-zone> commit
  16. 退出 zonecfg 命令。
    zonecfg:lx-zone> exit

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

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

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

global# zonecfg -z lx-zone "create -t SUNWlx; set zonepath=/export/home/lx-zone"

下一步执行的操作

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

配置多个 lx 标记区域的脚本

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

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

#!/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" || -z "$4" ]]; then
    echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir> <template zone>"
    exit 2
fi
if [[ ! -d $3 ]]; then
    echo "$3 is not a directory"
    exit 1
fi
state=`zoneadm -z $4 list -p 2>/dev/null | cut -f 3 -d ":"`
if [[ -z "$state" || $state != "installed" ]]; then
    echo "$4 must be an installed, halted zone"
    exit 1
fi

template_zone=$4

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 clone $template_zone > /dev/null 2>&1
    if [ $? != 0 ]; then
        echo configuring $prefix$i
        F=$dir/$prefix$i.config
        rm -f $F
        echo "create -t SUNWlx" > $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 -s -d /path/to/ISOs > /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
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