创建和使用 Oracle® Solaris 区域

退出打印视图

更新时间: 2015 年 5 月
 
 

如何配置区域

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

您必须是全局管理员或在全局区域中具有相应授权的用户才能执行此过程。

  1. 成为管理员。

    有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限

  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
    create: Using system default template 'SYSdefault'
  4. 设置区域路径,在此过程中为 /zones/my-zone
    zonecfg:my-zone> set zonepath=/zones/my-zone

    区域必须位于 ZFS 数据集中。在安装或附加区域时,将自动创建 ZFS 数据集。如果无法创建 ZFS 数据集,也无法安装或附加区域。请注意,如果区域路径有父目录,它必须是已挂载数据集的挂载点。

    如果使用了标记 %{zonename} 而不是在 zonepath 中显式指定区域的名称,则在克隆区域时,统一归档和区域工具会将现有的区域名称替换为新的区域名称。

    zonecfg:my-zone> set zonepath=/zones/%{zonename}

    请参见Oracle Solaris Zones 介绍 中的zonecfg template 属性

  5. 设置自动引导值。

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

    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=1g
    2. 设置交换内存上限。
      zonecfg:my-zone:capped-memory> set swap=2g
    3. 设置锁定内存上限。
      zonecfg:my-zone:capped-memory> set locked=500m
    4. 结束内存上限指定。
      zonecfg:my-zone:capped-memory> end

    注 -  要使用 capped-memory 资源,全局区域中必须安装 resource-cap 软件包。
  11. 添加文件系统。
    zonecfg:my-zone> add fs
    1. 设置文件系统的挂载点,在此过程中为 /usr/local
      zonecfg:my-zone:fs> set dir=/usr/local
    2. 指定在区域中配置 /usr/local 之后,才能挂载全局区域中的 /opt/local
      zonecfg:my-zone:fs> set special=/opt/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. 结束数据集指定。
      zonecfg:my-zone> end

    区域管理员可在数据集中创建和销毁快照、文件系统和卷。区域管理员可以修改数据集的属性,并控制压缩和加密。

  14. 创建具有自动 VNIC 的专用 IP 区域。
    zonecfg:my-zone> set ip-type=exclusive
    zonecfg:my-zone> add anet
    1. 为要创建的链接将 auto 指定为底层链接。
      zonecfg:my-zone:anet> set lower-link=auto

      每次区域引导时,zoneadmd 守护进程会自动选择用来创建 VNIC 的链路。当选择数据链路时跳过 IPoIB 链路。

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

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

  16. 为 OFUV 组件(而不是 IB 诊断工具)添加开放光纤网络用户组件 (Open Fabric User Verb, OFUV) 设备。
    zonecfg:my-zone> add device
    1. 设置设备匹配,在此过程中为 infiniband/ofs/*
      zonecfg:my-zone:device> set match=infiniband/ofs/*
    2. 结束设备指定。
      zonecfg:my-zone:device> end

    非全局区域不支持 IB 诊断工具。添加的设备可以与 OFUV 组件(例如谓词 (verb) 和 rdma_cm)一起使用。

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

  17. 为 OFUV 组件(而不是 IB 诊断工具)添加 OFUV 设备。
    zonecfg:my-zone> add device
    1. 设置设备匹配,在此过程中为 infiniband/hca/*
      zonecfg:my-zone:device> set match=infiniband/hca/*
    2. 结束设备指定。
      zonecfg:my-zone:device> end

    非全局区域不支持 IB 诊断工具。添加的设备可以与 OFUV 组件(例如谓词 (verb) 和 rdma_cm)一起使用。

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

  18. 要允许使用 format 命令标记磁盘,应将整个磁盘/LUN 委托到区域,并设置 allow-partition 属性。
    zonecfg:my-zone> add device
    1. 设置设备匹配,在此过程中为 /dev/*dsk/c2t40d3*
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. allow-partition 设置为 true
      zonecfg:my-zone:device> set allow-partition=true
    3. 结束设备指定。
      zonecfg:my-zone:device> end

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

  19. 要允许在磁盘中执行 uscsi 操作,应设置 allow-raw-io 属性。
    zonecfg:my-zone> add device
    1. 设置设备匹配,在此过程中为 /dev/*dsk/c2t40d3*
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. allow-raw-io 设置为 true
      zonecfg:my-zone:device> set allow-raw-io=true
    3. 结束设备指定。
      zonecfg:my-zone:device> end

      Caution

      注意  -  如果允许区域在磁盘上执行 uscsi 操作,也会允许区域访问与磁盘连接到同一总线的任何其他设备。因此,启用此功能可能会带来安全风险,让攻击者有机可乘去攻击全局区域或使用同一总线上资源的其他区域。有关更多信息,请参见 uscsi(7I)


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

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

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

  21. 使用 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
  22. 检验区域的配置。
    zonecfg:my-zone> verify
  23. 提交区域的配置。
    zonecfg:my-zone> commit
  24. 退出 zonecfg 命令。
    zonecfg:my-zone> exit

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

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


提示  -  zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。
global# zonecfg -z my-zone "create ; set zonepath=/zones/my-zone"
对于共享 IP 区域,只能在 zonecfg net 资源中指定静态地址。不能使用命令行提供地址。