跳到内容 中国
HP.com 主页 产品与服务 支持及驱动程序 解决方案 如何购买
» 联系惠普
更多选项
HP.com 主页
管理系统和工作组: HP-UX 系统管理员指南 > 第 3 章 配置系统

重新配置内核(HP-UX 11i v2)

» 

技术文档资料

完整的 PDF 手册
» 反馈
内容从此开始:

 » 目录

 » 索引

注释:本节适用于 HP-UX 11i v2 以后的版本,有关早于 11i v2 版本的操作步骤,请参阅“重新配置内核(早于 HP-UX 11i v2 的版本)”

简介

随着 HP-UX 各个发行版的不断推出,系统管理员更改 HP-UX 内核配置的能力逐渐增强,且不易发生昂贵费时的故障。动态内核可调参数和动态可加载内核模块等新功能可执行关键的维护任务,不必以应用程序可用性为代价。

有了这些新功能,需要一种更简单更全面的机制以管理内核配置。HP-UX 11i v2 引进了一组新的内核配置管理命令和一个新的基于 Web 的图形界面,从而提供了统一的内核配置管理。本节讲述了这些新工具的使用。该信息适用于 HP-UX 系统管理员。

内核配置功能

这组新的内核配置工具为系统管理员提供了几个关键功能:

  • 可在同一个图形界面中执行所有内核配置任务。

  • 所有内核配置任务还可通过同一个用户界面和同一个行为使用一组相连的命令来执行。

  • 可在系统之间保存、恢复和移动内核配置。

  • 管理员可保存任意数目的内核配置,并能随意在两个内核配置之间进行切换 - 通常不需要重新引导。

  • 在每次配置更改时,正在运行的内核配置将自动备份(如果需要)。

  • 系统自动维护所有内核配置更改的详细日志文件。

  • 内核模块和内核可调参数现在具有与其相关的说明。内核可调参数具有联机文档和有关可调参数之间关系的说明。

  • 所有内核配置命令均可按便于用户理解和便于脚本识别两种格式生成输出结果。对于便于脚本识别的格式,HP 支持版本之间的兼容性。

什么是内核配置?

抽象地讲,内核配置是管理员所有选项和设置的集合,这些选项和设置用于确定 HP-UX 内核行为和功能。在此实现中,此集合包括:

  • 一组内核可调参数值分配

  • 一组内核模块,每个均具有所需的状态

  • 指定主交换设备

  • 指定一组转储设备

  • 一组设备与设备驱动程序的绑定

  • 内核配置的名称和选项说明

从物理上讲,内核配置是一个位于 /stand 下的目录,其中包括实现特定行为所需的文件。此目录包括:

  • HP-UX 内核可执行程序

  • 一组 HP-UX 内核模块文件

  • 内核注册表数据库,包含以上所有设置

  • 系统文件,以用户可读的形式说明上述设置

  • 特定于实现的各种其他文件

除运行中的内核的配置之外,还可保存任意数目的 HP-UX 系统内核配置,这只受 /stand 目录中磁盘空间的限制。

内核配置命令概述

有三种用于管理内核配置的主要命令:kconfigkcmodulekctune

kconfig 命令用于管理整个内核配置。它可用于对配置进行保存、加载、复制、重命名、删除、导出和导入等操作。此命令还可列出现有的保存配置并给出与之相关的详细信息。有关详细信息,请参阅“通过 kconfig 管理保存的配置”kconfig (1M) 联机帮助页。

kcmodule 命令用于管理内核模块。内核模块可以是设备驱动程序、内核子系统或其他内核代码实体。每个模块可以是未使用的、静态绑定至主内核可执行程序的或是动态加载的。kcmodule 命令可显示或更改当前运行的配置中或任何保存的配置中任一模块的状态。有关详细信息,请参阅“通过 kcmodule 管理内核模块”kcmodule (1M) 联机帮助页。

kctune 命令用于管理内核可调参数。这些参数是控制内核行为的变量。它们有多种用途,通常包括控制系统资源的分配和内核性能的调整。kctune 命令可显示或更改当前运行的配置中或任何保存的配置中任一可调参数的值。有关详细信息,请参阅“通过 kctune 管理内核可调参数”kctune (1M) 联机帮助页。

除这三个主要命令外,还有两个其他内核配置命令。kcpath 命令可输出关于当前运行的内核的位置信息;它用于需要此信息的脚本和应用程序(有关详细信息,请参阅 kcpath (1M) 联机帮助页)。kclog 命令可搜索内核配置日志文件;有关详细信息,请参阅“内核配置日志文件”kclog (1M) 联机帮助页。

最后,使用过早期 HP-UX 版本中的 mk_kernelkmpathkmtune 命令的用户应注意这些命令仍然可用。它们已作为调用上述命令的小 shell 脚本包括在内。这些旧命令已过时,会从将来的版本中删除。请参阅 mk_kernel (1M)kmpath (1M)kmtune (1M)

kcweb 工具概述

您可以配置和管理内核,而不必记住内核配置命令的语法或模块及可调参数的精确名称,方法是使用 kcweb 工具,它是一种便于用户使用的基于 Web 的 HP-UX 内核配置工具,可配置和管理系统的内核。kcweb 具有下列功能:

  • 便于用户使用的基于 Web 的图形用户界面 (GUI)

  • 内核可调参数管理:监视和修改

  • 报警管理:添加、修改和删除

  • 内核模块状态管理:修改

  • 访问可调参数的联机帮助页

  • 命令预览 - 修改可调参数、模块或报警时,可通过选择 ? 按钮来使用命令预览功能。这会显示将要执行所请求任务的内核配置命令调用。

图 3-6 kcweb 显示示例

kcweb 显示示例

可使用下列方法之一访问 kcweb

  • 从命令行使用 kcweb 命令

  • 从 HP Service Control Manager (SCM)

  • 从 SAM 中的内核配置 (kcweb) 区域

  • 从 Web 浏览器,使用已启动的 kcweb 服务器的 URL

缺省情况下,kcweb 命令调用 Mozilla web 浏览器。如果要使用其他任何浏览器调用 kcweb,请将 BROWSER 环境变量设置为要使用的浏览器的路径名。有关详细信息,请参阅 kcweb (1M) 联机帮助页。

其他内核配置操作

下面的章节中介绍了一些特殊内核配置操作和内核配置命令的特殊用法。

通过在使用率超过预设阈值时发送报警,可以监视一些内核资源的使用率。使用 kcalarm 命令或 kcweb 工具可配置和检查报警。使用 kcusage 命令或 kcweb 工具可检查资源使用率。有关详细信息,请参阅“监视内核资源使用率”

HP-UX 早期版本的管理员可能惯于使用文本文件(“系统文件”或“dfiles”)来指定和更改内核配置。这些文件的格式已得到增强[4],可以支持内核配置的新功能,同时还为配置操作保留了文本文件的可用性(当在多个系统上使用同一配置时,这些文件尤其有用,因为它们可方便地在系统之间移动)。系统文件的用法在“使用系统文件管理配置”中进行了介绍。

一些不常用的配置设置只能使用系统文件进行控制。其中包括主交换设备的设置、初始转储设备的设置和特定设备与特定设备驱动程序模块间的明确绑定。有关详细信息,请参阅“管理设备绑定”

使用内核配置命令进行的所有内核配置更改均记录在文件 /var/adm/kc.log 中。有关此日志文件的详细信息,请参阅“内核配置日志文件”kconfig (5)kclog (1M) 联机帮助页。

主要内核配置命令支持特殊的输出格式,旨在用于需要分析命令输出的脚本和应用程序。此类脚本和应用程序必须使用这种特殊的输出格式,这是因为对于这些命令的其他输出格式,HP 并不保证版本之间的兼容性。有关详细信息,请参阅“分析命令输出”kconfig (5) 联机帮助页。

错误的配置更改、硬件故障或软件缺陷均可能导致不理想甚至是无法引导的内核配置。现有一些机制可防止出现这种问题,并在问题出现时帮助恢复。有关详细信息,请参阅“从错误中恢复”

内核配置命令的常见行为

由于各个内核配置命令是统一整体的一部分,只要可能它们便会共享行为。共享行为包括命令行选项、输出格式、退出状态代码、安全限制以及更改的持久性。

常用命令行选项

表 3-12 “内核配置命令共享的选项” 列出内核配置命令共享的选项。

表 3-12 内核配置命令共享的选项

选项说明kconfigkcmodulekctunekclog
-a(全部)在输出中包括通常为了简便而省略掉的信息。o

o

o

 
-B(备份)在更改之前备份当前运行的配置。o

o

o

 
-c(配置)指定要管理的保存配置。如果省略,管理当前运行的配置。 o

o

o

-C(注释)在内核配置日志文件条目中包含与此命令调用相关的注释。o

o

o

o

-d(说明)显示每项的说明。 o

o

 
-D(差异)只显示已将更改保留至下次引导的元素。o

o

o

 
-h(保留)将所请求的更改保留至下次引导。o

o

o

 
-K(保持)不备份当前运行的配置。保持现有备份不修改。o

o

o

 
-P(分析)使用特殊的“可分析”输出格式。o

o

o

 
-S(设置)只显示已设置为非缺省值的元素。o

o

o

 
-v(详细)使用详细输出格式显示项目。o

o

o

 

 

常用输出格式

检索信息时,主内核配置命令以三种基本的输出格式生成输出结果:表格、详细和可分析。

缺省情况下,命令生成简短表格格式。这种格式在每一行说明一项。只包含最常用的信息,以使大多数终端能够在一行内显示合适的输出。

使用 -v(详细)选项,命令将生成详细的输出格式。此种格式为所说明的每个项目提供所有可用信息,需要显示几行。在输出中以空白行分隔各个项目。

使用 -P(分析)选项,命令生成的输出格式可用于脚本或应用程序以进行分析。此格式在“分析命令输出”中进行了介绍。脚本和应用程序必须分析此种输出格式,这是因为仅当使用 -P 选项时,HP 才支持输出格式的版本间的兼容性。

对于错误、警告、说明和进度消息,所有内核配置命令均使用一种常见的格式。这与 Software Distributor 打包时使用的格式相同,因此大多数管理员已经对此非常熟悉。

ERROR: 

这是错误消息。它解释请求的操作为何无法完成。

WARNING:  

这是警告消息。请求操作完成,但并不顺利。可能存在需要更正的情况。

NOTE:  

这是一个说明。它提供有关此操作如何完成的信息,或系统管理员可能感兴趣的其他信息。

* 

这是一个进度消息。它显示了此操作中已完成的步骤。

常见退出状态代码

所有内核配置命令均以表 3-13 “退出状态代码” 中的状态代码之一退出。

表 3-13 退出状态代码

0操作成功。
1请求的更改不能应用到当前运行的系统中。它们将保留并应用到下次引导中。
2操作不能成功完成。

 

常见安全限制

任何用户均可运行内核配置命令以查询配置信息。但是,访问配置信息受限于对相关文件的标准 Unix 文件系统权限。

更改任何配置均需具有超级用户权限。

更改的持久性

缺省情况下,内核配置工具将配置更改应用到当前运行的系统中,可立即导致行为的更改。通过向任何命令指定 -h(保留)选项,系统管理员可改写此缺省设置。此选项会保留更改,直到系统重新引导。HP 建议仅在将很快重新引导系统时使用此选项。如果更改后几个月还没有重新引导系统,管理员可能会忘记这个请求,而产生意外的不良后果。

一些配置更改必须重新引导才能应用。这些更改会被保留至系统重新引导,即使没有指定 -h 选项也是如此。这种情况下,会显示警告消息。

如果在一次调用内核配置命令时请求了多个配置更改,若这些更改中的任一个需要重新引导,那么请求的所有更改均会保留至系统重新引导。特别地,如果使用 kconfig -l(加载)命令加载某个保存的内核配置,且此配置必须重新引导才能使用,那么正在运行的系统状态不会更改,指定的内核配置会在下次引导时使用。

可以在 kcmodulekctunekconfig 命令中使用 -D(差异)选项列出保留至下次引导时的更改。有关每个命令的详细信息,请参阅下列各节。

在下列情况下会丢弃保留至下次引导的更改:使用 kconfig -i(导入)、kconfig -l(加载)或 kconfig -n(下次引导)替换当前运行的配置时;使用 kconfig -H(取消保留)明确将其丢弃时;进行其他更改将其改写时。例如,如果运行

# kctune -h nproc=5000  设置为 5000,保留至下次引导
# kctune nproc=6000     设置为 6000,立即

下次引导时 nproc 将为 6000。将丢弃更改为 5000 的设置。在这种情况下会显示警告消息。

系统重新引导时会保留对当前运行的系统所做的更改。它们将保持有效,直到被更改。

通过 kcmodule 管理内核模块

kcmodule 命令用于查询和更改当前运行的配置中或保存的配置中内核模块的状态。HP-UX 内核由很多模块构建,每个模块均包括设备驱动程序、内核子系统和其他一些内核代码实体。典型的内核具有 200-300 个模块。

获得有关模块的信息

不带任何选项运行 kcmodule 时,它会显示系统上运行的模块、它们的当前状态和下次引导时的状态。在典型的系统上,可以看到很多模块处于静态;一些模块处于未使用状态(通常是系统上尚未安装的硬件的设备驱动程序);还有少数模块处于加载状态(下文对这些状态进行了介绍)。

如果使用 -c(配置)选项,kcmodule 将显示已保存配置(而不是当前运行的系统)中的模块信息。

kcmodule 的输出结果随使用的选项不同而异。要控制哪些模块将被列出,可使用 -a(全部)、-D(差异)和(或)-S(设置)选项。-a 选项可向输出中添加需要的模块(通常是省略的)。-D 选项将输出限制为只显示那些下次引导时的状态与当前状态不同的模块。-S 选项将输出限制为只显示那些明确设置了状态的模块(即,忽略需要的模块、未使用的模块和为满足相关性而添加的模块)。还可以通过在命令行上列出模块名称来限制输出。

要控制输出格式,可使用 -d(说明)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:

Module  State   Cause
fcms    static  depend
krs     static  required

-d 选项可为每个模块添加说明。

Module  State   Cause         Description
fcms    static  depend        Fibre Channel Mass Storage Driver
krs     static  required      Kernel Registry Service

-v 选项可在多行中给出每个模块的详细信息:

Name                fcms  [3E4741A9]
Description         Fibre Channel Mass Storage Driver
State               static (to resolve dependencies)
Capable             unused static 
Depends On          module libfcms
                    interface HPUX_11_23 1.0.0

Name                krs  [3E47419F]
Description         Kernel Registry Service
State               static (required)
Capable             static 
Depends On          module libkrs
                    module libkrs_pdk
                    interface HPUX_11_23 1.0.0

-P 选项专供脚本或程序使用,可完全控制要输出哪些信息:

# kcmodule -P name,desc fcms krs
name    fcms
desc    Fibre Channel Mass Storage Drivername    krs
desc    Kernel Registry Service

有关 -P(分析)选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”kconfig (5) 联机帮助页。

解释模块信息

通过查看上述示例的输出结果,可以看到每个模块均具有名称和文本说明。每个模块还具有一个版本,标准情况下为 [3E36E5FA] 或 0.1.0,这取决于模块的存在时间。较旧的模块使用第一种形式,较新的模块使用第二种形式。

一个内核配置只能使用特定模块的一个版本。但是可以列出多个版本,例如,在当前运行的系统使用的模块版本与下次引导时将要使用的模块版本不同时。简短列表中通常省略版本号,但如果模块具有多个版本,版本号便会列出。

在当前运行的配置中,每个内核模块均具有一个状态,用以说明模块的使用方式。可能的状态有:

unused系统中安装了模块但是未使用该模块。
static模块静态绑定至内核可执行程序。这是最常见的状态。将模块移入此状态或从此状态移开均需要重新链接内核可执行程序并重新引导。
loaded模块动态加载至内核。较新的模块支持此种状态。此类模块可以添加到内核配置或从内核配置中移除,而不必重新引导。
auto首次需要此模块时,模块将动态加载至内核,但是到现在还没有需要此模块。

kcmodule 提供关于当前运行的系统的信息时,若有配置更改保留至下次引导,kcmodule 会将当前状态和下次引导时的状态全部列出。对于下次引导,将使用相同的状态,但有补充的含义:

unused不会使用此模块。
static模块将静态绑定至内核可执行程序。
loaded在引导进程中,模块将动态加载至内核。
auto每次引导后,模块均会在首次需要时动态加载至内核。

kcmodule 提供关于已保存配置的信息时,使用相同的状态。

每个模块状态旁边是“cause”,用以说明模块为何处于(或将处于)该状态。原因有:

explicit系统管理员显式地选择此种状态。
best系统管理员选择使用此模块,但没有选择特定的状态,因此根据模块开发人员的决定,模块处于“最佳”(best) 状态。
auto模块处于自动状态,当需要使用它时,模块自动加载。
required开发人员将模块标记为必需。
depend使用此模块是因为配置中的其他一些模块依赖于此模块。

不同的模块可能支持不同的状态。几乎所有模块都可处于 static 状态,但只有少数模块支持 loadedauto 状态。许多模块都可处于 unused 状态,但标记为 required 的模块不能处于此状态。输出结果中的“Capable”行显示了模块所支持的状态(提示:要确认某个模块是否为必需模块,可查看“Capable”行中是否显示 unused。如果显示此状态,则该模块就不是必需模块)。

模块之间常常具有相关性。例如,通常只能在配置了驱动程序支持的模块时,才能将设备驱动程序配置至内核。在输出结果中,此类相关性显示在“Depends On”行中。模块可以依赖于其他特定模块,通过名称和版本可指定此相关性。模块还可以依赖于必须由其他一些模块提供的接口,而未明确说明哪些模块提供此接口。支持此类接口的模块在输出中具有“Exports”行,以列出其导出的接口。

更改模块状态

要更改模块状态,可在 kcmodule 命令行上指定模块状态(另请参阅“使用系统文件管理配置”)。例如,要加载名为 cdfs 的 CD 文件系统模块:

# kcmodule cdfs=loaded

实际上,loaded 是开发人员为 cdfs 选择的 best 状态,因此它等同于:

# kcmodule cdfs=best

要卸载它:

# kcmodule cdfs=unused

有关详细信息,请参阅 kcmodule (1M) 联机帮助页。

使用上述示例中的命令更改模块状态时,如果可能,此更改会立即应用到当前运行的系统中。有时此更改则不能立即生效;例如,如果挂接了 CD 文件系统,这种情况下便无法卸载 cdfs。这时,kcmodule 会保留此更改并在下次引导时应用它。将模块移入或移出 static 状态的更改不能立即应用,总是要保留至下次引导时。如果在 kcmodule 命令行上进行的任一更改需要保留至下次引导,则所有更改均会保留至下次引导。

将模块移入或移出 static 状态时,kcmodule 命令会运行很长时间。这是因为此类更改需要重新链接内核可执行程序。如果要进行多个此类更改,最好在同一个 kcmodule 命令行将其全部列出,或在系统文件中进行更改,然后导入它(请参阅“使用系统文件管理配置”)。这些方法均可保证内核可执行程序只重新链接一次。

有时可能需要强制将某一更改保留至下次引导,而不立即应用它。这种情况下,可以在 kcmodule 中使用 -h(保留)选项以强制此行为。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改几个月后仍没有发生下次引导,系统管理员可能会忘记即将发生的更改效果,从而得到意外的不良结果。

要对保存的内核配置进行更改,可使用 -c(配置)选项。保存的配置会立即进行这些更改,但是在加载或引导保存的配置之前,这些更改不会影响正在运行的系统。有关详细信息,请参阅“通过 kconfig 管理保存的配置”

更改模块状态时,kcmodule 支持 -B-K 选项以指定备份行为,还支持 -C 选项以指定日志文件注释。有关详细信息,请参阅“从错误中恢复”“内核配置日志文件”

通过 kcweb 管理内核模块

kcweb 可用于查询和更改当前运行的配置中内核模块的状态。使用 kcweb,可以执行下列操作:

  • 确定内核中当前正在运行哪些模块

  • 查看模块的详细信息

  • 修改模块的状态

可在 kcweb 中从导航栏选择模块菜单项来查看模块窗格。

图 3-7 kcweb 模块

kcweb 模块

获得有关模块的信息

要获得有关特定模块的详细信息,请执行下列两个步骤:

  • 从导航栏中选择模块菜单项。系统将显示模块窗格,其中列出了系统上当前配置的所有模块。

  • 选择一个模块,以便在详细信息窗格中查看特定模块的详细信息。

解释模块信息

如果选择一个模块,屏幕上将显示该模块的详细信息。

图 3-8 kcweb 模块详细信息

kcweb 模块详细信息

模块详细信息窗格包含下列信息:

表 3-14 模块详细信息字段

字段名称

说明

module

表示模块的名称

description

表示模块的简短说明

version

表示模块的版本

state

表示当前运行的内核中的模块的状态(unused、static、loaded、auto)

cause

表示模块处于当前状态的原因(explicit、auto、depend、required、default)

next boot

表示系统重新启动后的模块状态

next boot cause

表示模块处于下次引导时状态的原因

capabilities

表示模块能够支持的所有状态

dynamic

表示这是动态可加载内核模块

required

表示此模块是否为内核所必需

dependencies

表示此模块需要的其他模块

exports

列出此模块导出的所有接口

 

更改模块状态

要更改模块状态,请执行下列步骤:

  • 从导航栏中选择模块菜单项。系统将显示模块窗格,其中列出了系统上当前配置的所有模块。

  • 通过选择 图标或 modify module state 按钮,来选择要修改的模块。

将显示 modify module state 页。

注释:如果原因为 depend 或 required,则不会显示 modify module state 按钮,这是因为 kcweb 不允许修改必需的或与其他模块相关的模块的状态。

图 3-9 kcweb 修改模块状态

kcweb 修改模块状态

modify module state 页包含下列字段:

表 3-15 kcweb 修改模块状态字段

字段名称

说明

module

要修改的模块的名称

description

模块的说明

version

模块的版本号

state

模块的当前值

cause

模块处于当前状态的原因

next boot

单击 ok 按钮后模块将更改为的状态

capabilities

模块能够支持的所有状态

dynamic

表示模块是否为动态可加载内核模块

dependencies

与此模块相关的所有模块

mode of change

包括一组单选按钮,选择立即应用内核配置更改还是将内核配置更改保留至下次引导。只有动态模块才显示此字段。缺省情况下,change at next boot 单选按钮处于选中状态。如果没有选中任何单选按钮,内核配置更改将保留至下次引导。

reason for change

可编辑的文本字段,用于输入模块状态更改的注释

back up the current configuration before applying change

在应用更改之前备份当前配置。缺省情况下,此复选框处于选中状态。

 

通过 kctune 管理内核可调参数

kctune 命令用于查询和更改当前运行的配置中或保存的配置中内核可调参数(“可调参数”)的值。可调参数是用于控制 HP-UX 内核行为的变量。可调参数可用于执行各种不同的任务:一些控制资源分配;一些控制安全策略;一些启用可选内核行为;等等。典型的内核中有 150 至 200 个可调参数。请参阅 kctune (1M) 联机帮助页。

系统管理员可根据选择创建自己的“用户定义的”可调参数。这些可调参数不会直接影响系统的运行,但可用于计算其他可调参数的值。例如,管理员可以选择创建一个 num_databases 可调参数,然后根据其值设置几个内核可调参数。以后对 num_databases 值进行的更改会导致所有相关内核可调参数的值也发生更改。

获得有关可调参数的信息

不带任何选项运行 kctune 时,它会显示系统中与内核模块相关的可调参数(和所有用户定义的可调参数)、它们的当前值以及用于计算其值的表达式。如果那些值具有保留至下次引导的更改,也会显示这些更改。在典型系统上,大多数可调参数的表达式是“Default”,这意味着管理员允许系统选择可调参数的值。

如果使用 -c(配置)选项,kctune 将显示已保存配置(而不是当前运行的系统)中的可调参数信息。

kctune 的输出结果随使用的选项不同而异。要控制哪些可调参数将被列出,可使用 -D(差异)或 -S(设置)选项。-D 选项将输出限制为只显示下次引导时其值与当前值不同的可调参数。-S 选项将输出限制为只显示那些设置为非缺省值的可调参数。还可以通过在命令行上列出可调参数名称来限制输出。

要控制输出格式,可使用 -d(说明)、-g(分组)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:

Tunable     Current  Expression  Changes
acctresume        4  Default     
maxuprc         256  Default     Immed
nproc          4200  Default     Immed

-d 选项可为每个可调参数添加说明:

Tunable     Current  Expression  Changes
    Description
acctresume        4  Default     
    Percentage of disk space that must be free to resume accounting
maxuprc         256  Default     Immed
    Maximum number of processes for each non-root user
nproc          4200  Default     Immed
    Maximum number of processes on the system

-g 选项可添加定义此可调参数的模块的名称,并将输出结果按模块名称排序。这能够在输出结果中将相关的可调参数分为一组。

Module  Tunable     Value  Expression  Changes
acct    acctresume      4  Default           
pm      maxuprc       256  Default     Immed
pm      nproc        4200  Default     Immed

-v 选项可在多行中给出每个可调参数的详细信息:

Tunable            acctresume
Description        Percentage of disk space that must be free to resume accounting
Module             pm
Current Value      4 [Default]
Value at Next Boot 4 [Default]
Value at Last Boot 4
Default Value      4
Constraints        acctresume >= -100
                   acctresume <= 101
                   acctresume > acctsuspend
Can Change         At Next Boot OnlyTunable            nproc
Description        Maximum number of processes on the system
Module             pm
Current Value      4200 [Default]
Value at Next Boot 4200 [Default]
Value at Last Boot 4200
Default Value      4200
Constraints        nproc >= 100
                   nproc <= 30000
                   nproc >= maxuprc + 5
                   nproc <= nkthread - 100
                   nproc >= semmnu + 4
Can Change         Immediately or at Next Boot

-P 选项专供脚本或程序使用,可完全控制要输出哪些信息:

kctune -P name,current acctresume nproc
name    acctresume
current 4name    nproc
current 4200

有关 -P 选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”kconfig (5) 联机帮助页。

解释可调参数信息

查看上述示例的输出,可以看到每个可调参数均具有名称和文本说明。每个可调参数都与一个内核模块相关联,并在详细输出(如果指定了 -g 选项,则为表格式输出)中列出了此模块的名称。只有在可调参数与系统上安装的(或用户定义的)某个模块相关联时,才可以看到或更改此可调参数。此模块未必在使用中。

为当前运行的系统显示可调参数信息时,kctune 会包括当前可调参数值和用于计算该值的表达式。如果可调参数值的更改保留至下次引导,还会显示下次引导时的值和表达式。详细列表还可显示系统上次引导时可调参数的值。为保存的配置显示可调参数信息时,kctune 只显示当前值。

可调参数值为可计算的整数表达式,它可引用其他可调参数值(不允许循环引用)。可调参数的值可以是 42000x40012*10244*nproc+20。值和表达式使用 C 编程语言的语法。因此,数字可以十进制 (256)、八进制 (01000) 或十六进制 (0x100) 表示。表达式可以使用下列操作符和符号。

( ) ~ ! - + * / % << >> < <= > >= & ^ | == != && || ?:

任何可调参数表达式中均不允许有空格。为了向后兼容,表达式中的可调参数名称可以全部为大写形式,但不建议使用此写法,在将来的版本中会删除对它的支持。

所有内核可调参数均具有开发人员选择的缺省值,详细输出结果可显示其缺省值。对于某些可调参数,缺省值是固定的,从不更改。而对于另外一些可调参数,系统将在引导时选择新的缺省值。还有一些可调参数可自动调整,即系统运行时缺省值定期更改,以适应变化的系统资源和需求。当可调参数设置为缺省值时,其表达式为 Default,如上述示例所示。在这种情况下,系统可自由选择其认为的最佳值,并根据需要进行更改。HP 建议保留可调参数设置的缺省值,除非已知缺省值很不合适。

注意:将可调参数值设置为 Default 与将其明确地设置为 kctune 报告的缺省值并不是一回事。使用上述示例,如果将 nproc 设置为 4200,其值会保持 4200,直到更改它。但是,如果将 nproc 设置为 Default,其值会随 HP 对 nproc 缺省值的更改而更新。

某些可调参数值是有限制的,详细输出结果中会显示此限制。有时是最小和(或)最大值限制,如上述 nproc 所示。有时在可调参数之间存在着固定关系(例如,acctresume 必须大于 acctsuspend)或具有允许值的限制(例如,dnlc_hash_locks 必须为两值之一)。每次更改可调参数值时,都会强制实行这些限制。还有 kctune 没有显示的限制,这些限制根据系统当前状态而不同,并随时间更改(例如,nproc 不能设置为小于当前运行进程数目的值)。只有在更改当前运行的系统时,才强制实行这些限制,当将更改保留至下次引导时或更改保存的配置时,则不强制实行限制。

一些可调参数具有关于何时可更改其值的限制。这些限制在 kctune 输出结果中已注明。其值可以立即更改的可调参数标记为 Immed。系统可自动调整其值的可调参数标记为 auto。没有任何标记的可调参数只能在重新引导时更改。

所有 HP-UX 可调参数均具有联机帮助页。有关其行为、许用值和可调参数负面影响的详细信息,请参阅可调参数的联机帮助页,可在联机手册的第 5 节中找到这些信息。内核可调参数的概述可在《《Tunable Kernel Parameters》》文档中找到,该文档位于 http://docs.hp.com

更改可调参数值

要更改可调参数值,可在 kctune 命令行上指定可调参数值(请参阅“使用系统文件管理配置”)。例如,要将 nproc 设置为 4300,请使用以下命令:

# kctune nproc=4300

要将可调参数设置为 Default,可采用下列任何一种方式来赋值(将用户定义的可调参数设置为 Default 会将其删除)。

# kctune nproc=
# kctune nproc=default

可以根据表达式赋值,如上所述。请注意,赋值时可能需要使用引号以防止 shell 解释它。

# kctune 'nkthread=nproc*2+100'

要创建用户定义的可调参数,在为可调参数赋值时需使用 -u(用户定义)选项。要更改现有用户定义的可调参数的值,不需要使用 -u 选项。

使用 += 符号,可以增加可调参数的值(在此例中,增加 100):

# kctune nproc+=100

使用 >= 符号可以确保可调参数的最小值。以下命令:

# kctune 'nproc>=5000'

会将 nproc 设置为 5000(如果其当前值小于 5000)。如果当前值已为 5000 或更高,它会保持不变。请注意,应在赋值时使用引号以防止 shell 解释它。

有关详细信息,请参阅 kctune (1M) 联机帮助页。

使用上述示例中的命令更改可调参数值时,如果可能,此更改会立即应用到当前运行的系统中。有时此更改则不能立即生效;例如,当试图将某些资源的最大值减少到低于当前使用值时。而且,还有一些可调参数只能在重新引导之后才能应用更改。这种情况下,kctune 会保留此更改并在下次引导时应用它。如果在 kctune 命令行上进行的任一更改需要保留至下次引导,则所有更改均会保留至下次引导。

有时可能需要强制将某一更改保留至下次引导,而不立即应用它。这种情况下,可在 kctune 中使用 -h(保留)选项以强制执行此行为。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改几个月后仍没有发生下次引导,系统管理员可能会忘记即将发生的更改效果,从而得到意外的不良结果。

要对保存的内核配置进行更改,可使用 -c(配置)选项。保存的配置会立即进行这些更改,但是在加载或引导保存的配置之前,这些更改不会影响正在运行的系统。有关详细信息,请参阅“通过 kconfig 管理保存的配置”

更改可调参数值时,kctune 支持 -B-K 选项以指定备份行为,还支持 -C 选项以指定日志文件注释。有关详细信息,请参阅“从错误中恢复”“内核配置日志文件”

通过 kcweb 管理内核可调参数

kcweb 可用于查询和更改当前运行的配置中内核可调参数(“可调参数”)的值。使用 kcweb,可以执行下列操作:

  • 修改可调参数值

  • 查看可调参数的详细信息

  • 查找可调参数

  • 查看可调参数当前值和下次引导时的值

  • 输出可调参数的详细信息或输出所有可调参数的列表

可在 kcweb 中从导航栏选择可调参数菜单项,来查看可调参数窗格。

图 3-10 kcweb 可调参数

kcweb 可调参数

获得有关可调参数的信息

要获得有关特定可调参数的详细信息,可以执行下列两个步骤:

  1. 从导航栏中选择可调参数菜单项。系统将显示可调参数窗格,其中列出了系统上当前配置的所有可调参数。

  2. 选择一个可调参数,以便在详细信息窗格中查看有关特定可调参数的详细信息。

解释可调参数信息

如果选择一个可调参数,将会显示可调参数详细信息窗格(图 3-11 “kcweb 可调参数详细信息”)。

图 3-11 kcweb 可调参数详细信息

kcweb 可调参数详细信息

可调参数详细信息窗格包含下列信息:

表 3-16 kcweb 可调参数详细信息

字段名称

说明

tunable

表示可调参数的名称

description

表示可调参数的简短说明

module

表示与此可调参数相关的模块(如果有)的名称

current

表示资源的当前最大值

next boot(表达式)

表示用于说明下次引导时的值的公式(注意:此公式也可能是一个整数)

next boot(整数)

表示计划值,通过计算所有公式得出

last boot value

表示系统上次引导时的可调参数值

default

表示可调参数的缺省值

legal range

表示此可调参数合法值的范围

present usage

表示显示窗格时消耗的资源数量,表示方法为整数值后跟用括号括起来的资源使用百分比

dynamic

表示可修改动态内核可调参数而不必重新引导系统

auto tune status

表示此可调参数是否在自动调整

constraints

列出可调参数之间可能的相关性和可调参数的建议值

 

更改可调参数值

要更改可调参数值,请执行下列步骤:

  1. 从导航栏中选择可调参数菜单项。系统将显示可调参数窗格,其中列出了系统上当前配置的所有可调参数。

  2. 通过选择 图标或 modify tunable_name 按钮来选择要修改的可调参数。

系统将显示“modify tunable”页(图 3-12 “kcweb 修改可调参数”):

图 3-12 kcweb 修改可调参数

kcweb 修改可调参数

modify tunable 页包含下列字段:

表 3-17 kcweb 可调参数详细信息字段

字段名称

说明

tunable

表示要修改的可调参数的名称

description

表示可调参数的说明

module

表示与此可调参数相关联的内核模块

current

表示可调参数的当前值

next boot(表达式)

说明下次引导时的值的公式(可为整数)

next boot(整数)

表示用户输入字段“next boot”的计算值;可能需要单击 recalculate 按钮来刷新

last boot value

表示系统上次引导时的可调参数值

default

这是可调参数的缺省值;按 default 按钮可将缺省值复制到计划的字段

legal range

表示可调参数的可接受值的范围,负数用减号 (-) 表示,正数值用加号 (+) 表示

NA”代表不可用,表明基础命令 kctune 没有返回最小值和最大值

dynamic

表示可调参数值是否可在不重新引导系统的情况下更改

auto tune status

表示此可调参数是否可自动调整

constraints

列出可调参数之间可能的相关性和可调参数的建议值

mode of change

包括一组单选按钮,选择立即应用内核配置更改还是将内核配置更改保留至下次引导。只有动态可调参数会显示此字段。缺省情况下,内核配置更改会保留至下次引导。

back up the current configuration before applying change

表示在应用更改之前备份当前配置。缺省情况下,此复选框处于选中状态。

reason for change

输入注释

 

监视内核资源使用率

有些可调参数代表可以监视其使用率的内核资源。对于这些可调参数,可以设置报警以便在相应的内核资源使用率超出指定的阈值时发出通知。

通过 kcweb 获得报警信息

要使用 kcweb 获得有关特定报警的详细信息,请执行下列两个步骤:

  1. 在导航栏中选择报警菜单项,将显示报警窗格,其中列出了系统上当前配置的所有报警。

  2. 选择一个报警,以便在详细信息窗格中查看有关特定报警的详细信息。

在 alarms 页中可以执行下列操作:

  • 创建和删除报警

  • 激活和停用报警

  • 查找已触发的报警

  • 查看报警详细信息

图 3-13 kcweb 报警

kcweb 报警

通过 kcweb 解释报警信息

如果选择一个报警,将显示报警详细信息窗格。

图 3-14 kcweb 报警详细信息

kcweb 报警详细信息

报警详细信息窗格包含下列信息:

表 3-18 kcweb 报警详细信息字段

字段名称

说明

tunable

表示可调参数的名称

status

表示报警的状态(如果报警处于活动状态或当前资源超出阈值)

threshold

表示报警激活的百分率

present usage

表示在前一个轮询中消耗的资源百分比

event type

表示要使用的事件通知

polling interval

表示轮询之间的时间间隔

notification

表示用于通知报警触发的方法

notification data

表示通知方法使用的补充信息(如果通知方法不需要它,便不存在)

notification port

表示通知的通信端口(如果通知方法不需要它,便不存在)

comment

表示注释字段,报警停用时会自动添加一些注释数据

 

通过 kcweb 更改报警值

要为可调参数更改报警值,请执行下列步骤:

  1. 在导航栏中选择报警菜单项,将显示报警窗格,其中列出了系统上当前配置的所有报警。

  2. 通过选择 图标或 modify... 按钮来选择要修改的报警。

系统将显示 modify alarm 页:

图 3-15 kcweb 修改报警

kcweb 修改报警

modify alarm 页包含下列字段:

表 3-19 kcweb 修改报警字段

字段名称

说明

tunable

表示要修改其报警的可调参数的名称

threshold

表示报警触发的百分率

event type

显示确定何时发送通知的复选框:

initial 

资源使用率超出阈值的首次轮询时;当报警首次添加、激活、停用或系统重新引导时。

repeat 

资源使用率超出阈值的每次轮询时(如果轮询间隔很小会导致大量消息)。

return 

资源使用率低于阈值的首次轮询时。

如果没有选中任何复选框,将使用 kcalarm 设置的缺省事件类型。

注意:可以选中多个复选框;选中 initialreturn 会在使用率高于或低于阈值时均生成通知。

polling interval

以分钟显示资源使用率轮询的间隔

notification

显示通知方法(console、opcmsg、syslog、textlog、email、snmp、tcp、udp)

comment

表示注释字段

 

资源使用率命令

kcalarm 命令可用于添加、删除或列出所选的内核可调参数报警,并可以打开和关闭内核可调参数监视功能。

使用 kcalarm 可以管理所选的内核可调参数报警和监视程序;这些报警和监视程序是通过 kcmond 守护程序实现的。用户可创建、修改、删除和列出所选的内核可调参数报警。当内核可调参数超出当前指定阈值一定的百分比时,报警将向各种通知目标发送通知。监视是采集历史可调参数数据的进程。此功能打开时,将采集关于支持的可调参数使用率的历史数据。kcusage 命令使用这些数据为支持的内核可调参数生成使用率表(包含主要使用者)。还可在 kcweb 工具中将使用率数据图形化。安装 kcweb 工具后,缺省情况下,监视功能处于打开状态。有关详细信息,请参阅 kcalarm (1M)kcmond (1M)kcusage (1M) 联机帮助页。

使用 kconfig 管理正在运行的配置

kconfig 命令有两个选项,当处理那些要保留至下次引导的当前运行内核配置更改时,这两个选项很有用。配置更改在需要时保留至下次引导,可使用 kcmodulekctune-h(保留)选项或者 kconfig-n(下次引导)选项来实现。如果当前运行的系统不能应用配置更改,它们也会保留至下次引导。

要获得保留至下次引导的更改的列表,请运行 kconfig -D(差异)。这的确是一种简便方法,可替代运行 kcmodule -Dkctune -D。同样,要获得那些设置为非缺省值的配置设置的列表,请运行 kconfig -S(设置)。这是一种简便的方法,可替代运行 kcmodule -Skctune -S[5]

如果不想在下次引导时应用这些更改,可以运行 kconfig -H(取消保留)。这样会丢弃所有保留至下次引导的更改。

有关保留至下次引导的更改的详细信息,请参阅“更改的持久性”

通过 kconfig 管理保存的配置

如果您有一个满足需要的 HP-UX 内核配置,则可能希望保存一个副本以防止不经意的更改。或者,您可能希望拥有多个内核配置,以便能方便地在各配置间切换。HP-UX 允许保存任意多的内核配置(受 /stand 中可用磁盘空间的限制),并允许随意修改和使用它们。

获得有关保存的配置的信息

不带任何选项运行 kconfig 命令,会显示系统上保存的配置。始终存在一个名为 backup 的保存配置,它是系统自动维护的;同时会列出系统上所有其他的保存配置(有关 backup 配置的详细信息,请参阅“从错误中恢复”)。

kconfig 的输出结果随使用的选项不同而异。可以在命令行上列出特定配置,以限制输出结果仅显示这些配置。

要控制输出格式,可使用 -a(全部)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:

Configuration  Title
backup         Automatic Backup
day            Configuration for daytime multiuser processing
night          Configuration for nighttime batch processing

-v 选项可在多行中给出每个保存配置的详细信息:

Configuration backup
Title         Automatic Backup
Save Time     Sun Jan 12 07:46:40 2003
Modify Time   Sun Jan 12 07:46:40 2003

Configuration day
Title         Configuration for daytime multiuser processing
Save Time     Sun Jan 12 07:49:00 2003
Modify Time   Sun Jan 12 07:49:00 2003

Configuration night
Title         Configuration for nighttime batch processing
Save Time     Sun Jan 12 07:52:12 2003
Modify Time   Sun Jan 12 07:52:12 2003

-a 选项的输出结果与 -v 选项的相同,只是在每个保存配置之后,会显示该配置的“kcmodule -a -v”和“kctune -v”的全部输出。这样可给出配置中所有设置的记录(设备绑定除外)。

-P 选项专供脚本或程序使用,可完全控制要输出哪些信息:

kconfig -P name,title
name    backup
title   Automatic Backupname    day
title   Configuration for daytime multiuser processingname    night
title   Configuration for nighttime batch processing

有关 -P 选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”kconfig (5) 联机帮助页。

解释保存的配置的信息

如上述示例所示,每个保存的配置均具有一个名称。此名称必须以字母开头,只包含字母、数字和下划线,最长可有 32 个字符。除 backup 配置外,应在每次创建要保存的配置时为其选择一个名称,并可随意更改其名称。

每个保存的配置还具有一个标题。此标题可用于为您提供有关配置目的和设置的详细说明。标题是可选的。

每个保存的配置还具有一对时间戳。“Save Time”表示配置的上次保存 (kconfig -s) 时间。“Modify Time”表示配置的上次更改时间。

与每个保存的配置相关联的是一组完整的模块状态设置、可调参数值设置和设备绑定。可以使用下列命令查看这些信息:

# kcmodule -c configname

# kctune -c configname

或使用

# kconfig -a configname

(只有查看保存的配置的系统文件才能看到设备绑定,系统文件位于 /stand/configname/system)。

使用和修改保存的配置

创建保存的配置

有三种方法可用于创建保存的内核配置:通过保存当前运行的配置,通过复制现有的保存配置或通过读取系统文件。

要保存当前运行的配置,请使用 kconfig -s(保存)。这样生成的保存配置会包括要保留至下次引导的对当前运行配置的所有更改。

可以使用 kconfig -c(复制)来复制现有的保存配置。

有关使用系统文件的信息,请参阅“使用系统文件管理配置”

使用保存的配置

可以使用 kconfig -l(加载)来加载保存的配置。这会更改当前运行的内核的配置,以使其与保存的配置相匹配。如果配置可在不重新引导系统的情况下更改,则所进行的更改会立即生效。否则,所有更改均会保留至下次引导。

有时您可能想强制将配置更改保留至下次引导,而不想立即应用它。这种情况下,可以使用 kconfig -n(下次引导)来标记下次引导时要使用的保存配置。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改后几个月还没有重新引导系统,管理员可能会忘记此更改,而产生意外的不良后果。

要确定哪些保存的配置已标记为下次引导时使用,请使用 kconfig -w(which - 哪个)。此命令还可确定最近加载或引导的保存配置,或最近导入的系统文件。

修改保存的配置

要修改保存的配置中的模块状态设置和可调参数值设置,请分别使用 kcmodulekctune 命令的 -c(配置)选项。也可以通过更改系统文件,再将其导入,来更改保存的配置;请参阅“使用系统文件管理配置”

可使用 kconfig 命令的其他选项对保存的配置进行其他更改。-r(重命名)选项可对保存的配置重命名(不能重命名 backup 配置)。-t 选项可更改保存的配置的标题。-d(删除)选项可将保存的配置删除。

如果配置已标记为下次引导时使用,而您决定继续使用当前运行的配置,可以使用 kconfig -H(取消保留)来丢弃所有保留至下次引导的更改。

使用系统文件管理配置

每个内核配置均具有相应的系统文件。系统文件是一个标志文本文件,以简洁、机器可读和可移植的格式说明配置中的所有设置。有关系统文件格式的详细信息,请参阅 system (4) 联机帮助页。这是对 HP-UX 先前版本所用格式的增强,但先前的格式仍然可用。

使用系统文件进行配置更改

系统文件提供了配置内核的另一种机制,这是因为内核更改可以通过编辑系统文件然后通知内核配置工具应用所做的更改来实现。对于旧版本的 HP-UX 的用户,这是最熟悉的内核配置方法。

要使用系统文件进行配置更改,应首先找到与要更改的配置相对应的系统文件。[6]系统自动为每个配置维护系统文件。当前运行的配置的系统文件位于 /stand/system。所有保存配置的系统文件都位于 /stand/配置名称/system。如果要为配置创建新的系统文件,请使用 kconfig -e(导出)命令。此命令有两种形式:

kconfig -e 文件名              导出运行中的配置

kconfig -e 配置名称 文件名   导出已保存的配置
注释:/stand/system 以及通过导出运行的配置而创建的任何系统文件,通常均可以反映要保留至下次引导的所有更改。

可以使用任何文本编辑器编辑系统文件,以便根据需要进行更改。编辑完成后,可以使用 kconfig -i(导入)命令应用更改。此命令有三种形式:

kconfig -i 文件名              导入至运行中的配置,立即

kconfig -h -i 文件名          导入并保留至下次引导

kconfig -i 配置名称 文件名    导入至保存的配置

在第一种形式中,如果更改无法应用于运行中的系统,它们会保留至下次引导。

为了向后兼容,仍可使用 mk_kernel 命令来应用在系统文件中进行的更改。但请注意,其名称已不再准确,这是因为,如果可能的话,此命令会应用配置更改而不构建内核。该命令具有以下形式:

mk_kernel [-o 目标] [-s 文件名]

文件名是要读取的系统文件的名称;如果没有指定,将使用 /stand/system。要导入至保存的配置,目标应为此配置的名称。要导入至当前运行的系统,并使其立即生效(如果可能),目标应为 /stand/vmunix(不能立即应用的更改会保留至下次引导)。如果省略目标,将对名为 hpux_test 的保存配置进行更改。使用 mk_kernel 命令不能导入至当前运行的系统,它强制更改保留至下次引导。要实现此目的,可使用 kconfig -h -i

请务必注意,/stand/system/stand/配置名称/system 中的系统文件会在每次配置更改时自动重新创建。在此进程中,不会保存系统文件中的注释。此外,文件中的行顺序也不会保存。因此,HP 不建议将注释放在系统文件中,而应在导入配置时使用 -C(注释)选项直接向内核配置日志文件中添加注释(请参阅“内核配置日志文件”)。

系统文件中进行的大多数更改都可使用内核配置命令实现,反之亦然。下面列出了等效命令:

表 3-20 使用内核配置命令创建系统文件条目

系统文件行内核配置命令
模块名称kcmodule 模块名称=best
module 模块名称 bestkcmodule 模块名称=best
module 模块名称 状态 [版本][1]kcmodule 模块名称=状态
(没有模块名称的相应条目)kcmodule modulename=unused
可调参数名称 可调参数值kctune 可调参数名称=<