本章介绍在基于 x64 或 x86 的系统上配置 lx 标记区域之前需要执行的操作,还介绍了 zonecfg 命令的用法。
以下几点主要的计算机注意事项与 lx 标记区域的使用有关。
计算机必须基于 x64 或 x86。
必须有足够的磁盘空间来保存每个 lx 区域内特有的文件。lx 区域的磁盘空间要求由安装的 RPM 或 Linux 软件包的大小和数量决定。
lx 标记只支持完全根模型,因此安装的每个区域都将具有自己的所有文件的副本。
不限制每个区域可占用的磁盘空间量。全局管理员负责限制空间。全局管理员必须确保本地存储足以保存非全局区域的根文件系统。如果有足够的存储空间,即使小型单处理器系统也可支持同时运行多个区域。
您可以将区域放置在挂载了 lofi 的分区上。此操作会将区域占用的空间量限制为 lofi 使用的文件所占用的空间量。有关更多信息,请参见 lofiadm(1M) 和 lofi(7D) 手册页。
您可以使用软分区将磁盘分片或将逻辑卷分为多个分区。您可以将这些分区用作区域根目录,从而限制每个区域的磁盘占用量。软分区限制为 8192 个分区。有关更多信息,请参见《Solaris Volume Manager Administration Guide》中的第 12 章 “Soft Partitions (Overview)”。
您可以将磁盘的标准分区用作区域根目录,从而限制每个区域的磁盘占用量。
每个需要网络连接的区域都有一个或多个专用 IP 地址。支持 IPv4 地址。必须为区域指定一个 IPv4 地址。有关更多信息,请参见标记区域网络地址。或者,您也可以如如何配置 lx 标记区域中所示设置网络接口的缺省路由器。
为区域设置标记。
为 lx 区域创建配置。
检验配置,以确定指定的资源和属性在基于 x86 或 x64 的虚拟系统上是否合法并且在内部一致。
执行特定于标记的检验。该检验可确保:
区域不能具有任何继承的软件包目录、ZFS 数据集或添加的设备。
如果将区域配置为使用音频,则指定的设备(如果有)必须为 none、default 或单数字。
zonecfg verify 命令将针对给定配置检验以下内容:
确保已指定区域路径
确保已为每个资源指定所有必需的属性
确保已满足标记要求
有关 zonecfg 命令的更多信息,请参见 zonecfg(1M) 手册页。
本节介绍以下组件:
可以使用 zonecfg 命令配置的区域资源和属性
配置中缺省包括的资源
必须为区域选择名称和路径。
autoboot 属性设置决定在引导全局区域时是否自动引导区域。
如果按第 13 章所述在系统中配置了资源池,则可在配置区域时使用 pool 属性将该区域与其中一个资源池相关联。
如果未配置资源池,还可使用 dedicated-cpu 资源来指定在某个非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。
使用通过 pool 属性设置的永久池的区域配置与通过 dedicated-cpu 资源配置的临时池不兼容。只能设置这两个属性中的其中一个。
dedicated-cpu 资源指定在某个非全局区域运行时,应将系统处理器的某个子集专用于该非全局区域。在引导区域时,系统将动态创建一个临时池,以便在区域运行时使用。
dedicated-cpu 资源可为 ncpus 以及 importance(可选)设置限制。
指定 CPU 数目或指定一个范围(如 2–4 个 CPU)。如果指定一个范围(因为需要动态资源池行为),则还应执行以下操作:
设置 importance 属性。
按照启用和禁用池功能中所述启用动态资源池服务。
如果使用 CPU 范围来获取动态行为,还要设置 importance 属性。importance 属性是可选属性,用来定义池的相对重要性。仅当为 ncpus 指定了范围并且使用由 poold 管理的动态资源池时,才需要此属性。如果 poold 未运行,则会忽略 importance。如果 poold 正在运行并且未设置 importance,那么 importance 将缺省设置为 1。有关更多信息,请参见pool.importance 属性约束。
cpu-shares rctl 与 dedicated-cpu 资源不兼容。
capped-cpu 资源对某一项目或区域可占用的 CPU 资源量设立绝对限制。capped-cpu 资源有一个 ncpus 属性,该属性是一个正小数,小数点右侧有两位。该属性与 CPU 的单位相对应。此资源不接受范围值,但接受小数。指定 ncpus 时,值为 1 表示某个 CPU 的 100%。值为 1.25 表示 125%,因为 100% 对应于系统中的一个 CPU。
capped-cpu 资源与 dedicated-cpu 资源不兼容。
可以使用公平份额调度器 (fair share scheduler, FSS),根据区域的重要性控制可用 CPU 资源在区域之间的分配。这种重要性通过您为每个区域指定的 CPU 资源份额来表示。
在显式设置 cpu-shares 属性时,公平份额调度器 (fair share scheduler, FSS) 将用作该区域的调度类。但是,在此情况下使用 FSS 的首选方法是通过 dispadmin 命令将 FSS 设置为系统缺省的调度类。这样,所有区域都将从获取系统 CPU 资源的公平份额中受益。如果未为区域设置 cpu-shares,区域将使用系统缺省的调度类。以下操作可为区域设置调度类:
可以使用 zonecfg 中的 scheduling-class 属性为区域设置调度类。
可以通过资源池功能为区域设置调度类。如果区域与 pool.scheduler 属性设置为有效调度类的池相关联,则缺省情况下区域中运行的进程会以该调度类运行。请参见资源池介绍和如何将池与调度类关联。
如果设置了 cpu-shares rctl,但未通过其他操作将 FSS 设置为区域的调度类,则 zoneadmd 将在区域引导时将调度类设置为 FSS。
如果未通过其他任何操作设置调度类,区域将继承系统的缺省调度类。
请注意,您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。
capped-memory 资源可为 physical、swap 和 locked 内存设置限制。每个限制均为可选项,但至少要设置一个限制。
如果计划从全局区域使用 rcapd 为区域设置内存上限,请确定此资源的各个值。rcapd 将 capped-memory 资源的 physical 属性用作区域的 max-rss 值。
capped-memory 资源的 swap 属性是用于设置 zone.max-swap 资源控制的首选方法。
capped-memory 资源的 locked 属性是用于设置 zone.max-locked-memory 资源控制的首选方法。
应用程序通常不会锁定大量内存,但是如果已知道区域的应用程序会锁定内存,则您可能会决定设置锁定内存。如果区域信任是一个需要关注的问题,还可以考虑将锁定内存上限设为系统物理内存的百分之十,或区域物理内存上限的百分之十。
有关更多信息,请参见第 10 章、第 11 章和如何配置 lx 标记区域。
lx 标记区域中只支持共享 IP 网络配置。
每个需要网络连接的区域都必须具有一个或多个专用 IP 地址。这些地址与逻辑网络接口关联。引导区域时,将在其中自动设置并放置通过 zonecfg 命令配置的网络接口。从 Solaris 10 10/08 发行版开始,您也可通过 defrouter 属性设置网络接口的缺省路由器。
通常,在区域中挂载的文件系统包括:
初始化虚拟平台时挂载的文件系统集合
从区域本身中挂载的文件系统集合
例如,这可以包括以下文件系统:
automount 触发的挂载
区域管理员明确执行的挂载
将对在应用程序环境中执行的挂载设定特定限制。这些限制可防止区域管理员拒绝为系统的其余部分提供服务,或者对其他区域产生不良影响。
在区域中挂载特定的文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。有关更多信息,请参见文件系统和非全局区域。
设置区域范围的资源控制的首选方法是使用属性名称(这种方法比较简单)而不是 rctl 资源。将为全局区域和非全局区域指定这些限制。
全局管理员还可使用 rctl 资源为区域设置区域范围的特权资源控制。
区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。有关说明,请参见如何配置 lx 标记区域。
当前可以使用以下资源控制:
表 32–1 区域范围的资源控制
控制名称 |
全局属性名称 |
说明 |
缺省单位 |
所用值 |
---|---|---|---|---|
zone.cpu-cap |
在 Solaris 10 5/08 发行版中,对用于此区域的 CPU 资源量设置绝对限制。值 100 表示将一个 CPU 的 100% 用作 project.cpu-cap 设置。值 125 表示 125%,因为在使用 CPU 上限时,100% 对应于系统中的一个 CPU。 |
数量(CPU 数目) | ||
zone.cpu-shares |
cpu-shares |
此区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数 |
数量(份额) | |
zone.max-locked-memory |
|
区域可用的锁定物理内存的总量 |
大小(字节) |
capped-memory 的 locked 属性 |
zone.max-lwps |
max-lwps |
此区域可同时使用的最大 LWP 数 |
数量 (LWP) | |
zone.max-msg-ids |
max-msg-ids |
此区域允许的最大消息队列 ID 数 |
数量(消息队列 ID) | |
zone.max-sem-ids |
max-sem-ids |
此区域允许的最大信号量 ID 数 |
数量(信号量 ID) | |
zone.max-shm-ids |
max-shm-ids |
此区域允许的最大共享内存 ID 数 |
数量(共享内存 ID) | |
zone.max-shm-memory |
max-shm-memory |
此区域允许的系统 V 共享内存总量 |
大小(字节) | |
zone.max-swap |
|
可用于此区域的用户进程地址空间映射和 tmpfs 挂载的交换空间总量 |
大小(字节) |
capped-memory 的 swap 属性 |
limitpriv 属性用于指定预定义的缺省集之外的权限掩码。引导区域时,标记配置中将包含一组缺省权限。这些权限被视为安全权限,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。可以使用 limitpriv 属性执行以下操作:
将权限添加至缺省权限集,需要了解此类更改可能允许一个区域中的进程通过控制全局资源来影响其他区域中的进程。
从缺省权限集中删除权限,需要了解此类更改可能会阻止某些进程正常运行(如果这些进程要求具有特定权限才能运行的话)。
目前,有些权限不能从区域的缺省权限集中删除,还有一些权限不能添加到缺省权限集中。
有关更多信息,请参见在 lx 标记区域中定义的权限、非全局区域中的权限和 privileges(5)。
使用 attr 资源类型可以启用对全局区域中存在的音频设备的访问。有关说明,请参见如何配置、检验和提交 lx 标记区域中的步骤 12。
还可以使用 attr 资源类型为区域添加注释。
每个区域支持的设备都在与该标记相关的手册页和其他文档中进行了介绍。lx 区域不允许添加任何不受支持或无法识别的设备。框架可以检测添加不受支持设备的任何尝试,并发出一条错误消息,指出无法检验区域配置。
请注意,可按如何配置、检验和提交 lx 标记区域中的步骤 12 所示,通过 attr 资源属性添加对全局区域中运行的音频设备的访问。
标记区域所需的文件系统在标记中定义。如如何配置、检验和提交 lx 标记区域中的步骤 9 所示,可以使用 fs 资源属性将其他 Solaris 文件系统添加至 lx 标记区域。
不支持添加本地 Linux 文件系统。可从 Linux 服务器中进行文件系统的 NFS 挂载。
仅允许进程拥有部分权限。权限限制可防止某个区域执行可能会影响其他区域的操作。通过权限设置,可以限制区域内特权用户的功能。
缺省权限、必需的缺省权限、可选权限以及禁止权限由每个标记定义。如如何配置、检验和提交 lx 标记区域的步骤 8 所述,还可以使用 limitpriv 属性添加或删除某些权限。表 27–1 列出了区域中的所有 Solaris 权限以及每个权限的状态。
有关权限的更多信息,请参见 ppriv(1) 手册页和《系统管理指南:安全性服务》。
可以使用 zonecfg(1M) 手册页中所述的 zonecfg 命令来配置区域。此命令还可用来为全局区域持久指定资源管理设置。
zonecfg 命令可以在交互模式、命令行模式或命令文件模式下使用。可以使用此命令执行以下操作:
创建或删除(销毁)区域配置
将资源添加到特定配置
为添加到配置的资源设置属性
从特定配置中删除资源
查询或检验配置
提交到配置
恢复到先前配置
重命名区域
从 zonecfg 会话中退出
zonecfg 提示符的格式如下:
zonecfg:zonename> |
当您配置特定的资源类型(例如文件系统)时,此资源类型也包含在提示符中:
zonecfg:zonename:fs> |
有关更多信息(包括说明如何使用本章中介绍的 zonecfg 各组成部分的过程),请参见如何配置 lx 标记区域。
范围的概念用于用户界面。范围可以是全局的,也可以是资源特定的。缺省范围为全局。
在全局范围内,add 子命令和 select 子命令用于选择特定资源。然后范围更改为此资源类型。
对于 add 子命令,end 或 cancel 子命令用于完成资源指定。
对于 select 子命令,end 或 cancel 子命令用于完成资源修改。
然后范围恢复为全局。
某些子命令(例如 add、remove 和 set)在每个范围中都有不同的语义。
在交互模式中,支持以下子命令。有关用于这些子命令的语义和选项的详细信息,请参见 zonecfg(1M) 手册页中有关选项的内容。对于可能会导致破坏性操作或所做工作丢失的任何子命令,系统均要求用户在继续之前进行确认。您可以使用 -F(强制)选项,跳过此项确认操作。
列显一般帮助,或者显示有关给定资源的帮助。
zonecfg:lx-zone:net> help |
开始为指定的新标记区域配置内存配置。
与 -t template 选项一起使用时,用于创建与指定模板相同的配置。区域名称从模板名称更改为新区域名称。要创建 Linux 标记区域,请使用:
zonecfg:lx-zone> create -t SUNWlx |
与 -b 选项一起使用时,用于创建可为其设置标记的空配置。
zonecfg:lx-zone> create -b zonecfg:lx-zone> set brand=lx |
与 -F 选项一起使用时,用于覆写现有配置。
采用可以在命令文件中使用的格式,在标准输出或指定输出文件中列显配置。
在全局范围中,将指定的资源类型添加到配置。
在资源范围中,添加具有给定名称和给定值的属性。
有关更多信息,请参见“如何配置 lx 标记区域”以及 zonecfg(1M) 手册页。
将给定属性名称设置为给定属性值。请注意,某些属性(例如 zonepath)为全局属性,而其他属性则为资源特定的属性。因此,此命令适用于全局范围和资源范围。
仅适用于全局范围。选择与给定属性名称-属性值对的修改条件相匹配的给定类型资源。将范围更改为此资源类型。您必须为要唯一标识的资源指定足够数量的属性名称-值对。
清除可选设置的值。不能清除必需设置。但可以通过指定新值来更改某些必需设置。
在全局范围中,删除指定的资源类型。您必须为要唯一标识的资源类型指定足够数量的属性名称-值对。如果没有指定属性名称-值对,则会删除所有实例。当存在多个属性名称-值对时,如果未使用 -F 选项,则需要进行确认。
在资源范围中,从当前资源中删除指定的属性名称-属性值。
仅适用于资源范围。结束资源指定。
然后,zonecfg 命令将检验是否完全指定当前资源。
如果资源完全指定,则可以将其添加到内存中的配置,并且范围将恢复为全局。
如果未完全指定,则系统将显示一条描述需要执行何种操作的错误消息。
仅适用于资源范围。结束资源指定并将范围重置为全局。系统不会保留任何未完全指定的资源。
销毁指定的配置。从内存和稳定存储器中删除配置。您必须将 -F(强制)选项与 delete 一起使用。
此操作为即时操作。不需要提交,并且无法恢复已删除的区域。
显示有关当前配置或全局资源属性 zonepath、autoboot 和 pool 的信息。如果指定了资源类型,则仅显示有关此类型资源的信息。在资源范围中,此子命令仅应用于要添加或修改的资源。
检验当前配置是否正确。确保所有资源都指定了所有必需的属性。
将当前配置从内存提交到稳定存储器。在提交内存中的配置之前,可以使用 revert 子命令删除更改。必须提交配置以供 zoneadm 使用。完成 zonecfg 会话时,便会自动尝试此操作。由于仅可提交正确的配置,因此,提交操作将自动进行检验。
将配置恢复到上次提交时的状态。
退出 zonecfg 会话。您可以将 -F(强制)选项与 exit 一起使用。
如果需要,会自动尝试 commit。请注意,也可以使用 EOF 字符退出会话。
在命令文件模式中,输入来自文件。可以使用 zonecfg 交互模式中所述的 export 子命令生成此文件。可以在标准输出中列显配置,也可以使用 -f 选项指定输出文件。
区域配置数据由两种类型的实体组成:资源和属性。每个资源都有一种类型,并且每个资源还可以有一个包含一个或多个属性的集合。属性具有名称和值。属性集取决于资源类型。
区域名称用于标识配置实用程序的区域。以下规则适用于区域名称:
每个区域必须具有唯一的名称。
区域名称区分大小写。
区域名称必须以字母数字字符开头。
名称可以包含字母数字字符、下划线 (_)、连字符 (-) 和句点 (.)。
名称不能超过 64 个字符。
名称 global 和所有以 SUNW 开头的名称均保留,不能使用。
zonepath 属性是区域根目录的路径。每个区域都具有一个与全局区域根目录相对的根目录路径。安装时,需要全局区域目录以提供限定的可见性。它必须由 root 拥有,并且模式为 700。
非全局区域的根路径低一个级别。区域的根目录与全局区域中的根目录 (/) 具有相同的拥有权和权限。区域目录必须由 root 拥有,并且模式为 755。这些目录是使用正确的权限自动创建的,并且不需要区域管理员进行检验。此分层结构可防止全局区域中的非特权用户遍历非全局区域的文件系统。
路径 |
说明 |
---|---|
/home/export/lx-zone |
zonecfg zonepath |
/home/export/lx-zone/root |
区域的根目录 |
/home/export/lx-zone/root/dev |
为区域创建的设备目录 |
有关此问题的进一步讨论,请参见遍历文件系统。
通过使用 zoneadm 的 move 子命令指定一个完整的新 zonepath,可将区域移至同一系统上的其他位置。有关说明,请参见Solaris 10 11/06:移动非全局区域。
如果此属性设置为 true,则引导全局区域时会自动引导区域。请注意,如果禁用了区域服务 svc:/system/zones:default,则无论如何设置此属性,区域都不会自动引导。您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令来启用区域服务:
global# svcadm enable zones |
此属性用于为区域设置引导参数。除非被 reboot、zoneadm boot 或 zoneadm reboot 命令覆盖,否则将应用该引导参数。请参见标记区域引导参数。
此属性用于将区域与系统上的特定资源池关联。多个区域可以共享一个池的资源。另请参见指定 dedicated-cpu 资源。
此属性用于指定缺省权限集之外的权限掩码。请参见非全局区域中的权限。
通过指定权限名称可添加权限,权限名称中可包含或不包含前导 priv_。在权限名称前添加破折号 (-) 或感叹号 (!) 可以排除权限。权限值以逗号分隔,并放在引号 (") 内。
如 priv_str_to_set(3C) 中所述,特殊权限集 none、all 和 basic 对其标准定义进行了扩展。由于区域配置在全局区域内进行,因此不能使用特殊权限集 zone。由于常见用法是通过添加或删除某些权限来更改缺省权限集,因此特殊权限集 default 将映射为缺省权限集。当 default 出现在 limitpriv 属性开头时,它将扩展为缺省权限集。
如果输入以下指令,则会添加系统时钟设置功能,并删除原始 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 包发送功能:
global# zonecfg -z userzone zonecfg:userzone> set limitpriv="default,sys_time,!net_icmpaccess" |
如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限,则检验、准备或引导该区域的尝试都将失败,并将显示错误消息。
此属性可为区域设置调度类。有关其他信息和提示,请参见区域中的调度类。
此资源可让系统处理器子集专供某个区域在运行时使用。dedicated-cpu 资源可为 ncpus 以及 importance(可选)提供限制。有关更多信息,请参见指定 dedicated-cpu 资源。
此资源可对为区域设置内存上限时使用的属性分组。capped-memory 资源可为 physical、swap 和 locked 内存提供限制。至少必须指定其中一个属性。
当区域从已安装状态转换为就绪状态时,每个区域都可以拥有已挂载的各种文件系统。文件系统资源指定文件系统挂载点的路径。有关在区域中使用文件系统的更多信息,请参见文件系统和非全局区域。
网络接口资源是虚拟接口名称。当区域从已安装状态转换为就绪状态时,每个区域都可以具有应设置的网络接口。
lx 标记区域中只支持共享 IP 网络配置。
rctl 资源用于区域范围的资源控制。当区域从已安装状态转换为就绪状态时,将启用这些控制。
要使用 zonefig 的 set global_property_name 子命令而非 rctl 资源来配置区域范围的控制,请参见如何配置 lx 标记区域。
此通用属性可用于用户注释或其他子系统。attr 的 name 属性必须以字母数字字符开头。name 属性可以包含字母数字字符、连字符 (-) 和句点 (.)。以 zone. 开头的属性名称将保留,以供系统使用。
ncpus、importance
指定 CPU 个数以及池的相对重要性(可选)。以下示例指定了供区域 my-zone 使用的 CPU 范围,还设置了 importance。
zonecfg:my-zone> add dedicated-cpu zonecfg:my-zone:dedicated-cpu> set ncpus=1-3 zonecfg:my-zone:dedicated-cpu> set importance=2 zonecfg:my-zone:dedicated-cpu> end |
ncpus
指定 CPU 数目。以下示例指定了供区域 lx-zone 使用的 CPU 的 CPU 限制为 3.5 个。
zonecfg:lx-zone> add capped-cpu zonecfg:lx-zone:capped-cpu> set ncpus=3.5 zonecfg:lx-zone:capped-cpu> end |
physical、swap、locked
此资源可对为区域设置内存上限时使用的属性分组。以下示例指定了区域 my-zone 的内存限制。每个限制均为可选项,但至少要设置一个限制。
zonecfg:my-zone> add capped-memory zonecfg:my-zone:capped-memory> set physical=50m zonecfg:my-zone:capped-memory> set swap=100m zonecfg:my-zone:capped-memory> set locked=30m zonecfg:my-zone:capped-memory> end |
dir、special、raw、type、options
以下示例中的各行在非全局区域中添加对 CD 或 DVD 介质的只读访问权限。在非全局区域中,文件系统是使用选项 ro,nodevices(只读并且无设备)进行回送挂载的。
zonecfg:lx-zone> add fs zonecfg:lx-zone:fs> set dir=/cdrom zonecfg:lx-zone:fs> set special=/cdrom zonecfg:lx-zone:fs> set type=lofs zonecfg:lx-zone:fs> add options [ro,nodevices] zonecfg:lx-zone:fs> end |
请注意,有关专用于特定文件系统的挂载选项的信息可以在 1M 手册页部分中找到。这些手册页的名称格式为 mount_filesystem。
address、physical、defrouter
在以下示例中,将 IP 地址 192.168.0.1 添加到区域。bge0 卡用于物理接口,且设置了缺省路由器。
zonecfg:lx-zone> add net zonecfg:lx-zone:net> set address=192.168.0.1 zonecfg:lx-zone:net> set physical=bge0 zonecfg:lx-zone:net> set defrouter=10.0.0.1 zonecfg:lx-zone:net> end |
要确定所使用的物理接口,请在系统上键入 ifconfig -a。每一个输出行(回送驱动程序行除外)都以系统上安装的卡的名称开头。说明中包含 LOOPBACK 的行不适用于卡。
name、value
lx 标记区域中区域范围的资源控制中介绍了可用的区域范围的资源控制。
zonecfg:lx-zone> add rctl zonecfg:lx-zone:rctl> set name=zone.cpu-shares zonecfg:lx-zone:rctl> add value (priv=privileged,limit=10,action=none) zonecfg:lx-zone:rctl> end |
zonecfg:lx-zone> add rctl zonecfg:lx-zone:rctl> set name=zone.max-lwps zonecfg:lx-zone:rctl> add value (priv=privileged,limit=100,action=deny) zonecfg:lx-zone:rctl> end |
name、type、value
在以下示例中,添加了有关区域的注释。
zonecfg:lx-zone> add attr zonecfg:lx-zone:attr> set name=comment zonecfg:lx-zone:attr> set type=string zonecfg:lx-zone:attr> set value="Production zone" zonecfg:lx-zone:attr> end |
可以使用 export 子命令在标准输出中列显区域配置。通过可以在命令文件中使用的格式保存配置。