跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 服务 / 使用 SFCB 的基于 Web 的企业管理
适用范围 SUSE Linux Enterprise Server 15 SP5

45 使用 SFCB 的基于 Web 的企业管理

45.1 简介和基本概念

SUSE® Linux Enterprise Server (SLES) 提供了一组基于开放标准的工具,用于统一管理不同的计算系统和环境。我们的企业解决方案实现 Distributed Management Task Force 所提出的标准。以下段落描述了它们的基本组件。

Distributed Management Task Force, Inc (DMTF) 是业内引领企业和互联网环境管理标准开发的公司。他们的目标是统一管理标准和计划,开发出集成度更高、成本更低、可互操作性更好的管理解决方案。DMTF 标准为控制和通讯提供通用系统管理组件。他们的解决方案是独立于平台和技术的。基于 Web 的企业管理通用信息模型是其中的两个关键技术。

基于 Web 的企业管理 (WBEM) 是一整套管理和互联网标准技术。开发 WBEM 是为了统一管理企业计算环境。它为该行业提供了使用 Web 技术并且良好集成的管理工具集。WBEM 由以下标准组成:

  • 数据模型:通用信息模型 (CIM) 标准

  • 编码规范:CIM-XML 编码规范

  • 传输机制:通过 HTTP 的 CIM 操作

通用信息模型是一个概念性信息模型,对系统管理进行了说明。它并不局限于特定的实施,能在管理系统、网络、服务和应用程序之间交换管理信息。CIM 有两部分 — CIM 规范和 CIM 纲要。

  • CIM 规范描述语言、命名和元纲要。元模式是模型的正式定义。它定义用来表示模型及其用途以及语义的术语。元模式的元素有属性方法。元纲要也支持使用指令关联作为的类型,使用参考作为属性的类型。

  • CIM 纲要可提供实际模型描述。它提供具有属性和关联的类集合,这些类可提供易理解的概念框架,在该框架内可组织关于受管环境的可用信息。

“通用信息模型对象管理器”(CIMOM)是一种 CIM 对象管理器,或更确切地说,它是一个根据 CIM 标准管理对象的应用程序。CIMOM 管理 CIMOM 提供程序与 CIM 客户端(管理员管理系统的位置)之间的通讯。

CIMOM 提供程序是在 CIMOM 内执行客户端应用程序请求的特定任务的软件。每个提供者实施 CIMOM 模式的一个或多个方面。这些提供程序直接与硬件交互。

Standards Based Linux Instrumentation for Manageability (SBLIM) 是设计用来支持基于 Web 的企业管理 (WBEM) 的工具集。SUSE® Linux Enterprise Server 使用名为小规模 CIM 中介程序的 SBLIM 项目提供的开放源 CIMOM(或 CIM 服务器)。

小规模 CIM 中介程序是设计用于资源有限或嵌入式环境中的 CIM 服务器。它设计为同时保持模块化与轻量级。它是基于开放标准的,支持 CMPI 提供程序、CIM-XML 编码和管理对象格式 (MOF)。它可以灵活配置,并且即便提供程序崩溃也仍然表现稳定。此外,它还支持多种传输协议,例如 HTTP、HTTPS、Unix 域套接字、服务定位协议 (SLP) 和 Java Database Connectivity (JDBC),因此访问方便。

45.2 设置 SFCB

要设置小规模 CIM 中介程序 (SFCB) 环境,请确保 SUSE Linux Enterprise Server 安装期间选择了 YaST 中的基于 Web 的企业管理软件集。或者选择它作为组件安装到已在运行的服务器上。确保您的系统上安装了以下软件包:

cim-schema,通用信息模型 (CIM) 纲要

包含通用信息模型 (CIM)。CIM 是描述网络或企业环境中总体管理信息的模型。CIM 由规范和模式组成。规范定义与其他管理模型集成的详细信息。模式提供实际模型说明。

python2-pywbem

包含通过 WBEM 协议调用 CIM 操作来查询和更新受管对象的 Phthon 模块。

cmpi-provider-register,CIMOM 中性提供程序注册实用程序

包含的实用程序允许 CMPI 提供程序包用 CIMOM 存在于系统上的任何内容注册。

sblim-sfcb,小规模 CIM 中介程序

包含小规模 CIM 中介程序。它是通过 HTTP 协议与 CIM 操作保持一致的 CIM 服务器。它功能强大,占用资源又少,因此很适合嵌入式和资源有限的环境。SFCB 支持通过 Common Manageability Programming Interface (CMPI) 写入的提供程序。

sblim-sfcc

包含小规模 CIM 客户端库运行时库。

sblim-wbemcli

包含 WBEM 命令行界面。它是一个独立的命令行 WBEM 客户端,特别适合基本的系统管理任务。

45.2.1 启动、停止 SFCB 和检查其状态

CIM 服务器 sfcbd 守护程序是和基于 Web 的企业管理软件一起安装的,默认会在系统启动时启动。下表描述如何启动、停止 sfcbd 和检查其状态。

表 45.1︰ 用于管理 sfcbd 的命令

任务

Linux 命令

启动 sfcbd

root 身份在命令行中输入 systemctl start sblim-sfcb.service

停止 sfcbd

root 身份在命令行中输入 systemctl stop sblim-sfcb.service

检查 sfcbd 状态

root 身份在命令行中输入 systemctl status sblim-sfcb.service

45.2.2 确保安全访问

SFCB 的默认设置相对来说比较安全。但是也要检查对 SFCB 组件访问的安全性是否符合您的组织要求。

45.2.2.1 证书

安全套接字层 (SSL) 传输需要保证安全通讯的证书。安装 SFCB 时,会生成自我签名的证书。

您可以通过更改 /etc/sfcb/sfcb.cfg 中的 sslCertificateFilePath: PATH_FILENAME 设置,将默认证书的路径替换成商用证书或自我签名证书的路径。该文件必须是 PEM 格式。

SFCB 默认要求在以下位置提供一个服务器证书:

/etc/sfcb/server.pem

要生成新证书,请运行以下命令:

> sudo sh /usr/share/sfcb/genSslCert.sh
Generating SSL certificates in .
Generating a 2048 bit RSA private key
...................................................................+++
.+++
writing new private key to '/var/tmp/sfcb.0Bjt69/key.pem'
-----

默认情况下,该脚本会在当前工作目录下生成证书 client.pemfile.pemserver.pem。如果希望脚本在 /etc/sfcb 目录中生成证书,则需要在命令中追加该路径。如果这些文件已存在,系统将显示一条警告消息,而不会重写旧证书。

> sudo sh /usr/share/sfcb/genSslCert.sh /etc/sfcb
Generating SSL certificates in .
WARNING: server.pem SSL Certificate file already exists.
         old file will be kept intact.
WARNING: client.pem SSL Certificate trust store already exists.
         old file will be kept intact.

必须从文件系统删除旧的证书并重新运行命令。

要更改 SFCB 使用证书的方式,请参见第 45.2.2.3 节 “身份验证”

45.2.2.2 端口

默认情况下,将 SFCB 配置为接受通过安全端口 5989 的所有通讯。以下段落描述通讯端口的设置和建议的配置。

端口 5989(安全)

SFCB 通讯通过 HTTPS 服务使用的安全端口。此为默认设置。通过此设置,当通过互联网在服务器和工作站之间发送通信时,将加密 CIMOM 和客户程序应用程序之间的所有通信。用户必须以客户端应用程序进行身份验证,才能连接到 SFCB 服务器。建议您保留该设置。如果客户端应用程序与所监视的节点之间存在路由器和防火墙规则,为了使 SFCB CIMOM 能够与必要的应用程序通讯,必须在路由器和防火墙规则中打开此端口。

端口 5988(不安全)

SFCB 通讯通过 HTTP 服务使用的不安全端口。在默认情况下会禁用该设置。通过此设置,当任何人在未经身份验证的情况下通过互联网在服务器和工作站之间发送通讯时,将打开并查看 CIMOM 和客户端应用程序之间的所有通讯。建议仅当尝试调试 CIMOM 问题时才使用此设置。在问题解决后,请再次禁用非安全端口选项。如果客户端应用程序与所监视的节点之间存在路由器和防火墙规则,为了使 SFCB CIMOM 能够与需要进行非安全访问的必要应用程序通讯,必须在路由器和防火墙规则中打开此端口。

要更改默认端口指派,请参见第 45.2.2.2 节 “端口”

45.2.2.3 身份验证

SFCB 支持 HTTP 基本身份验证和基于客户端证书的身份验证(通过 SSL 连接的 HTTP)。基本 HTTP 身份验证通过在 SFCB 配置文件(默认是 /etc/sfcb/sfcb.cfg)中指定 doBasicAuth=true 来启用。SFCB 的 SUSE® Linux Enterprise Server 安装支持可嵌入身份验证模块 (PAM) 方式;因此本地 root 用户可以用本地 root 身份凭证向 SFCB CIMOM 验证。

如果 sslClientCertificate 配置属性设置为 acceptrequire,SFCB HTTP 适配器通过 HTTP over SSL (HTTPS) 连接时,会从客户端请求证书。如果指定了 require,客户端必须提供有效的证书(根据通过 sslClientTrustStore 指定的客户端信任存储)。如果客户端未能提供,CIM 服务器将拒绝该连接。

sslClientCertificate=accept 设置的作用可能并不显而易见。如果同时允许基本和客户端证书身份验证,它会很有用。如果客户端能提供有效的证书,将建立 HTTPS 连接,并且不会执行基本身份验证过程。如果该功能不能校验证书,则会发生 HTTP 基本身份验证。

45.3 SFCB CIMOM 配置

SFCB 是 CIM 服务器的“轻量级”实现,但也是可以灵活配置的。有若干选项可控制其行为。您可以通过三种方式控制 SFCB 服务器:

  • 设置相应的环境变量

  • 使用命令行选项

  • 更改其配置文件

45.3.1 环境变量

有若干环境变量会直接影响 SFCB 的行为。您必须使用 systemctl restart sfcb 重启动 SFCB 守护程序才能使这些更改生效。

PATH

指定 sfcbd 守护程序和实用程序的路径。

LD_LIBRARY_PATH

指定 sfcb 运行时库的路径。或者可以将此路径添加到系统范围的动态加载器配置文件 /etc/ld.so.conf 中。

SFCB_PAUSE_PROVIDER

指定提供程序的名称。SFCB 服务器会在第一次装载提供程序后暂停。然后您就可以将运行时调试程序加到提供程序的进程中,以便调试。

SFCB_PAUSE_CODEC

指定 SFCB 编解码器(目前仅支持 http)的名称。SFCB 服务器将在第一次装载编解码器后暂停。然后您就可以将运行时调试程序加到进程中。

SFCB_TRACE

为 SFCB 指定调试消息的级别。有效值有 0(无调试消息)、1(关键调试消息)和 4(全部调试消息)。默认值为 1。

SFCB_TRACE_FILE

默认情况下,SFCB 将其调试消息输出到标准错误输出 (STDERR)。设置该值会将调试消息写入指定的文件。

SBLIM_TRACE

为 SBLIM 提供程序指定调试消息级别。有效值有 0(无调试消息)、1(关键调试消息)和 4(全部调试消息)。

SBLIM_TRACE_FILE

默认情况下,SBLIM 提供程序将把跟踪消息输出到 STDERR。设置该值会将调试消息写入指定的文件。

45.3.2 命令行选项

SFCB 守护程序 sfcbd 有若干命令行选项,可以打开或关闭特定运行时功能。SFCB 守护程序启动时输入这些选项。

-c, --config-file=FILE

SFCB 守护程序启动时,默认会从 /etc/sfcb/sfcb.cfg 读取其配置。您可以用该选项指定备用配置文件。

-d, --daemon

强制 sfcbd 及其子进程在后台运行。

-s, --collect-stats

打开运行时统计数字收集。各种 sfcbd 运行时统计数字都会写入当前工作目录下的 sfcbStat 文件。默认情况下,不收集统计数字。

-l, --syslog-level=LOGLEVEL

指定系统日志记录工具的详细级别。LOGLEVEL 可以是 LOG_INFO、LOG_DEBUG 或 LOG_ERR(默认)。

-k, --color-trace=LOGLEVEL

以不同颜色打印每个进程的跟踪输出,以方便调试。

-t, --trace-components=NUM

激活组件级跟踪消息,其中 NUM 是进行 OR 运算的位掩码整数,它定义要跟踪哪个组件。指定 -t ? 后,它会列出所有组件及其相关的整数位掩码:

> sfcbd -t ?
---   Traceable Components:     Int       Hex
---            providerMgr:          1  0x0000001
---            providerDrv:          2  0x0000002
---             cimxmlProc:          4  0x0000004
---             httpDaemon:          8  0x0000008
---                upCalls:         16  0x0000010
---               encCalls:         32  0x0000020
---        ProviderInstMgr:         64  0x0000040
---       providerAssocMgr:        128  0x0000080
---              providers:        256  0x0000100
---            indProvider:        512  0x0000200
---       internalProvider:       1024  0x0000400
---             objectImpl:       2048  0x0000800
---                  xmlIn:       4096  0x0001000
---                 xmlOut:       8192  0x0002000
---                sockets:      16384  0x0004000
---              memoryMgr:      32768  0x0008000
---               msgQueue:      65536  0x0010000
---             xmlParsing:     131072  0x0020000
---         responseTiming:     262144  0x0040000
---              dbpdaemon:     524288  0x0080000
---                    slp:    1048576  0x0100000

能反映 sfcbd 的内部功能,但不会产生过多消息的有用值是 -t 2019

45.3.3 SFCB 配置文件

SFCB 启动后从配置文件 /etc/sfcb/sfcb.cfg 读取其运行时配置。该行为在启动时可以用 -c 选项覆盖。

配置文件包含 option : VALUE 对,一行一对。当对此文件执行更改时,如果文本编辑器保存文件的格式是所使用环境的本机格式,则可以使用此文本编辑器更改文件。

由井号 (#) 注释的选项的所有设置都使用默认设置。

以下选项列表可能不完整。如需完整列表,请参见 /etc/sfcb/sfcb.cfg/usr/share/doc/packages/sblim-sfcb/README 的内容。

45.3.3.1 httpPort

用途

指定 sfcbd 用于侦听接收自 CIM 客户端的 HTTP(非安全)请求的本地端口值。默认值为 5988

语法

httpPort: PORT_NUMBER

45.3.3.2 enableHttp

用途

指定 SFCB 是否接受 HTTP 客户端的连接。默认值为 false

语法

enableHttp: OPTION

选项

说明

true

启用 HTTP 连接。

false

禁用 HTTP 连接。

45.3.3.3 httpProcs

用途

指定在阻止新传入 HTTP 请求之前,HTTP 客户端连接的最大并行数。默认值为 8

语法

httpProcs: MAX_NUMBER_OF_CONNECTIONS

45.3.3.4 httpUserSFCB、httpUser

用途

这些选项控制将运行 HTTP 服务器的用户。如果 httpUserSFCBtrue,HTTP 将以 SFCB 主进程的同一用户身份运行。如果为 false,将使用为 httpUser 指定的用户名。此设置用于 HTTP 和 HTTPS 服务器。如果 httpUserSFCB 设置为 false,则必须指定 httpUser 。默认值为 true

语法

httpUserSFCB: true

45.3.3.5 httpLocalOnly

用途

指定是否将 HTTP 请求限制为仅 localhost。默认值为 false

语法

httpLocalOnly: false

45.3.3.6 httpsPort

用途

指定 sfcbd 侦听来自 CIM 客户端的 HTTPS 请求的本地端口值。默认值为 5989

语法

httpsPort: port_number

45.3.3.7 enableHttps

用途

指定 SFCB 是否接受 HTTPS 客户端连接。默认值为 true

语法

enableHttps: option

选项

说明

true

启用 HTTPS 连接。

false

禁用 HTTPS 连接。

45.3.3.8 httpsProcs

用途

指定在阻止新传入 HTTPS 请求之前,HTTPS 客户端连接的最大并行数。默认值为 8

语法

httpsProcs: MAX_NUMBER_OF_CONNECTIONS

45.3.3.9 enableInterOp

用途

指定 SFCB 是否为指示支持提供 interop 名称空间。默认值为 true

语法

enableInterOp: OPTION

选项

说明

true

启用 interop 名称空间。

false

禁用 interop 名称空间。

45.3.3.10 provProcs

用途

指定并发提供程序进程的最大数。达到这点之后,如果有新传入请求要求装载新提供程序,则现有提供程序之一将自动卸载。默认值为 32

语法

provProcs: MAX_NUMBER_OF_PROCS

45.3.3.11 doBasicAuth

用途

根据客户端用户标识符打开或关闭它接受请求之前所做的基本身份验证。默认值为 true,表示执行基本客户端身份验证。

语法

doBasicAuth: OPTION

选项

说明

true

启用基本身份验证。

false

禁用基本身份验证。

45.3.3.12 basicAuthLib

用途

指定本地库名称。SFCB 服务器将装载该库以验证客户端用户标识符。默认值为 sfcBasicPAMAuthentication

语法

provProcs: MAX_NUMBER_OF_PROCS

45.3.3.13 useChunking

用途

该选项启用或禁用 HTTP/HTTPS分块。如果启用,服务器将通过多个较小的将大量响应数据返回客户端,而不是缓存数据并集中在一个块中全部送回。默认值为 true

语法

useChunking: OPTION

选项

说明

true

启用 HTTP/HTTPS 数据分块。

false

禁用 HTTP/HTTPS 数据分块。

45.3.3.14 keepaliveTimeout

用途

指定一个连接上的 SFCB HTTP 进程在两次请求之间最多等待多少秒就终止。将它设置为 0 将禁用 HTTP keep-alive。默认值为 0

语法

keepaliveTimeout: SECS

45.3.3.15 keepaliveMaxRequest

用途

指定一个连接上连续请求的最大数。将它设置为 0 将禁用 HTTP keep-alive。默认值是 10

语法

keepaliveMaxRequest: NUMBER_OF_CONNECTIONS

45.3.3.16 registrationDir

用途

指定注册目录,它包含提供程序的注册数据、分阶段区域和静态储存库。默认值为 /var/lib/sfcb/registration

语法

registrationDir: DIR

45.3.3.17 providerDirs

用途

指定 SFCB 搜索提供程序库的目录的空格分隔列表。默认值为 /usr/lib64 /usr/lib64 /usr/lib64/cmpi

语法

providerDirs: DIR

45.3.3.18 providerSampleInterval

用途

指定提供程序管理器间隔多少秒检查空闲的提供程序。默认值为 30

语法

providerSampleInterval: SECS

45.3.3.19 providerTimeoutInterval

用途

指定提供程序管理器经过多少秒的间隔就卸载空闲的提供程序。默认值为 60

语法

providerTimeoutInterval: SECS

45.3.3.20 providerAutoGroup

用途

如果提供程序注册文件未指定任何其他组,而该选项设置为 true,则同一共享库内的所有提供程序都将在同一进程中执行。

语法

providerAutoGroup: OPTION

选项

说明

true

启用提供程序分组。

false

禁用提供程序分组。

45.3.3.21 sslCertificateFilePath

用途

指定包含服务器证书的文件的名称。该文件必须是 PEM (保密邮件,RFC 1421 和 RFC 1424)格式。该文件仅当 enableHttps 设置为 true 时才需要。默认值为 /etc/sfcb/server.pem

语法

sslCertificateFilePath: PATH

45.3.3.22 sslKeyFilePath

用途

指定包含服务器证书私用密钥的文件的名称。该文件必须是 PEM 格式且不能有通行口令的保护。该文件仅当 enableHttps 设置为 true 时才需要。默认值为 /etc/sfcb/file.pem

语法

sslKeyFilePath: PATH

45.3.3.23 sslClientTrustStore

用途

指定包含客户端的 CA 或自我签名证书的文件的名称。该文件必须是 PEM 格式,只有当 sslClientCertificate 设置为 acceptrequire 时才需要。默认值为 /etc/sfcb/client.pem

语法

sslClientTrustStore: PATH

45.3.3.24 sslClientCertificate

用途

指定 SFCB 处理基于客户端证书的身份验证的方式。如果设置为 ignore,将不会从客户端请求证书。如果设置为 accept,它会从客户端请求证书,但即使客户端没有证书也不会失败。如果设置为 require,会在客户端不存在证书时拒绝客户端连接。默认值是 ignore

语法

sslClientCertificate: OPTION

选项

说明

ignore

禁止请求客户端证书。

accept

禁止请求客户端证书。

如果证书不存在,不会失败。

require

拒绝无有效证书的客户端连接。

45.3.3.25 certificateAuthLib

用途

指定用于请求基于客户端证书的用户身份验证的本地库名称。只有当 sslClientCertificate 未设置成 ignore 时才这样请求。默认值是 sfcCertificateAuthentication

语法

certificateAuthLib: FILE

45.3.3.26 traceLevel

用途

指定 SFCB 的跟踪级别您可以通过设置环境变量 SFCB_TRACE_LEVEL 来覆盖该选项。默认值是 0

语法

traceLevel: NUM_LEVEL

45.3.3.27 traceMask

用途

指定 SFCB 的跟踪掩码。您可以使用命令行选项 --trace-components 覆盖该选项。默认值是 0

语法

traceMask: MASK

45.3.3.28 tracefile

用途

为 SFCB 指定跟踪文件。您可以通过设置环境变量 SFCB_TRACE_FILE 来覆盖该选项。默认值是 stderr(标准错误输出)。

语法

traceFile: OUTPUT

45.4 高级 SFCB 任务

本章涵盖了与 SFCB 使用相关的更多高级主题。要了解这些主题,您需要有 Linux 文件系统的基础知识,并具有使用 Linux 命令行的经验。本章包括以下任务:

  • 安装 CMPI 提供程序

  • 测试 SFCB

  • 使用 wbemcli CIM 客户端

45.4.1 安装 CMPI 提供程序

要安装 CMPI 提供程序,您必须确保其共享库已复制到 providerDirs 配置选项所指定的目录之一,参见第 45.3.3.17 节 “providerDirs”。提供程序还必须用 sfcbstagesfcbrepos 命令正确注册。

提供程序软件包是为 SFCB 准备的,以便其安装过程能正确进行注册。多数 SBLIM 提供程序是为 SFCB 准备的。

45.4.1.1 类储存库

类储存库就是 SFCB 存储 CIM 类信息的位置。它由包含名称空间组件的目录树组成。典型的 CIM 名称空间为 root/cimv2root/interop,它们会分别转换为文件系统上的类储存库目录路径

/var/lib/sfcb/registration/repository/root/cimv2

/var/lib/sfcb/registration/repository/root/interop

每个名称空间目录都包含文件 classSchemas。该文件中有该名称空间下注册的所有 CIM 类的已编译二进制表示。它还包含有关其 CIM 超类的必要信息。

每个名称空间目录都可能包含 qualifiers 文件,该文件包含了相应名称空间的所有限定符。sfcbd 重启动时,类提供程序会扫描 /var/lib/sfcb/registration/repository/ 目录及其所有子目录,以确定注册的名称空间。然后将解码 classSchemas 文件,为每个名称空间构建类的层次结构。

45.4.1.2 添加新类

SFCB 不能在线处理 CIM 类。您需要脱机添加、更改或去除类,然后使用 systemctl restart sfcb 重启动 SFCB 服务来注册这些更改。

为存储提供程序类和注册信息,SFCB 使用名为暂存区域的位置。在 SUSE® Linux Enterprise Server 系统上,该位置就是 /var/lib/sfcb/stage/ 下的目录结构。

为添加新的提供程序,您必须:

  • 将提供程序类定义文件复制到暂存区域目录的 ./mofs 子目录 (/var/lib/sfcb/stage/mofs)。

  • 将包含类名、提供程序类型和可执行库文件名的注册文件复制到 ./regs 子目录。

分阶段目录中有两个默认的 mof(类定义)文件:indication.mofinterop.mof。运行 sfcbrepos 命令后,root 存储区域目录 /var/lib/sfcb/stage/mofs 下的 MOF 文件将复制到每个名称空间。interop.mof 将只编译到 interop 名称空间。

目录布局看上去如下所示:

> ls /var/lib/sfcb/stage
default.reg  mofs  regs
> ls /var/lib/sfcb/stage/mofs
indication.mof  root
> ls /var/lib/sfcb/stage/mofs/root
cimv2  interop  suse  virt
> ls -1 /var/lib/sfcb/stage/mofs/root/cimv2 | less
Linux_ABIParameter.mof
Linux_BaseIndication.mof
Linux_Base.mof
Linux_DHCPElementConformsToProfile.mof
Linux_DHCPEntity.mof
[..]
OMC_StorageSettingWithHints.mof
OMC_StorageVolumeDevice.mof
OMC_StorageVolume.mof
OMC_StorageVolumeStorageSynchronized.mof
OMC_SystemStorageCapabilities.mof
> ls -1 /var/lib/sfcb/stage/mofs/root/interop
ComputerSystem.mof
ElementConformsToProfile.mof
HostSystem.mof
interop.mof
Linux_DHCPElementConformsToProfile.mof
[..]
OMC_SMIElementSoftwareIdentity.mof
OMC_SMISubProfileRequiresProfile.mof
OMC_SMIVolumeManagementSoftware.mof
ReferencedProfile.mof
RegisteredProfile.mof
> ls -1 /var/lib/sfcb/stage/regs
AllocationCapabilities.reg
Linux_ABIParameter.reg
Linux_BaseIndication.reg
Linux_DHCPGlobal.reg
Linux_DHCPRegisteredProfile.reg
[..]
OMC_Base.sfcb.reg
OMC_CopyServices.sfcb.reg
OMC_PowerManagement.sfcb.reg
OMC_Server.sfcb.reg
RegisteredProfile.reg
> cat /var/lib/sfcb/stage/regs/Linux_DHCPRegisteredProfile.reg
[Linux_DHCPRegisteredProfile]
   provider: Linux_DHCPRegisteredProfileProvider
   location: cmpiLinux_DHCPRegisteredProfile
   type: instance
   namespace: root/interop
#
[Linux_DHCPElementConformsToProfile]
   provider: Linux_DHCPElementConformsToProfileProvider
   location: cmpiLinux_DHCPElementConformsToProfile
   type: instance association
   namespace: root/cimv2
#
[Linux_DHCPElementConformsToProfile]
   provider: Linux_DHCPElementConformsToProfileProvider
   location: cmpiLinux_DHCPElementConformsToProfile
   type: instance association
   namespace: root/interop

SFCB 对每个提供程序使用自定义提供程序注册文件。

注意
注意:SBLIM 提供程序注册文件

SBLIM 网站上的所有 SBLIM 提供程序都已包括用于生成 SFCB 的 .reg 文件的注册文件。

SFCB 注册文件的格式是:

[<class-name>]
   provider: <provide-name>
   location: <library-name>
   type: [instance] [association] [method] [indication]
   group: <group-name>
   unload: never
   namespace: <namespace-for-class> ...

其中:

<class-name>

CIM 类名(必需)

<provider-name>

CMPI 提供程序名称(必需)

<location-name>

提供程序库的名称(必需)

type

提供程序的类型(必需)可以是 instanceassociationmethodindication 的任意组合。

<group-name>

可以将多个提供程序组合起来,在单一进程下运行,以进一步最小化运行时资源的占用。所有注册在同一 <group-name> 下的提供程序都将在同一进程下执行。默认情况下每个提供程序作为单独的进程运行。

unload

指定提供程序的卸载策略。目前唯一支持的选项是 never,即指定不监视提供程序的空闲次数,也从不卸载。默认情况下,每个提供程序只要空闲次数超过配置文件中指定的值就卸载。

namespace

可执行本提供程序的名称空间的列表。这是必需的,尽管对于多数提供程序来说它就是 root/cimv2

所有类定义和提供程序注册文件都存储至分阶段区域后,需要用命令 sfcbrepos -f 重构建 SFCB 类储存库。

您可以用这种方式添加、更改或删除类。重构建类储存库后,用命令 systemctl restart sfcb 重启动 SFCB。

或者,SFCB 软件包包含一个实用程序,它会将提供程序类 mof 文件和注册文件复制到分阶段区域中正确的位置。

sfcbstage -r [provider.reg] [class1.mof] [class2.mof] ...

运行该命令后,您还需要重构建类储存库并重启动 SFCB 服务。

45.4.2 测试 SFCB

SFCB 软件包包含两个测试脚本:wbemcatxmltest

wbemcat 通过 HTTP 协议将原始 CIM-XML 数据发送到端口 5988 上正在侦听的指定 SFCB 主机(默认为本地主机)。然后它会显示返回的结果以下文件包含标准 EnumerateClasses 请求的 CIM-XML 表示:

<?xml version="1.0" encoding="utf-8"?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
  <MESSAGE ID="4711" PROTOCOLVERSION="1.0">
    <SIMPLEREQ>
      <IMETHODCALL NAME="EnumerateClasses">
        <LOCALNAMESPACEPATH>
          <NAMESPACE NAME="root"/>
          <NAMESPACE NAME="cimv2"/>
        </LOCALNAMESPACEPATH>
        <IPARAMVALUE NAME="ClassName">
          <CLASSNAME NAME=""/>
        </IPARAMVALUE>
        <IPARAMVALUE NAME="DeepInheritance">
          <VALUE>TRUE</VALUE>
        </IPARAMVALUE>
        <IPARAMVALUE NAME="LocalOnly">
          <VALUE>FALSE</VALUE>
        </IPARAMVALUE>
        <IPARAMVALUE NAME="IncludeQualifiers">
          <VALUE>FALSE</VALUE>
        </IPARAMVALUE>
        <IPARAMVALUE NAME="IncludeClassOrigin">
          <VALUE>TRUE</VALUE>
        </IPARAMVALUE>
      </IMETHODCALL>
    </SIMPLEREQ>
  </MESSAGE>
</CIM>

将该请求发送到 SFCB CIMOM 后,会返回具有已注册提供程序的所有支持类的列表。假设您将文件保存为 cim_xml_test.xml

> wbemcat cim_xml_test.xml | less
HTTP/1.1 200 OK
Content-Type: application/xml; charset="utf-8"
Content-Length: 337565
Cache-Control: no-cache
CIMOperation: MethodResponse

<?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="EnumerateClasses">
[..]
<CLASS NAME="Linux_DHCPParamsForEntity" SUPERCLASS="CIM_Component">
<PROPERTY.REFERENCE NAME="GroupComponent" REFERENCECLASS="Linux_DHCPEntity">
</PROPERTY.REFERENCE>
<PROPERTY.REFERENCE NAME="PartComponent" REFERENCECLASS="Linux_DHCPParams">
</PROPERTY.REFERENCE>
</CLASS>
</IRETURNVALUE>
</IMETHODRESPONSE>
</SIMPLERSP>
</MESSAGE>
</CIM>

列出的类会随您在系统上安装的提供程序的不同而不同。

第二个脚本 xmltest 也用于将原始 CIM-XML 测试文件发送到 SFCB CIMOM。它会随即比较返回的结果和以前保存的OK结果文件。如果还不存在对应的OK文件,将创建它以备后用:

> xmltest cim_xml_test.xml
Running test cim_xml_test.xml ... OK
        Saving response as cim_xml_test.OK
# xmltest cim_xml_test.xml
Running test cim_xml_test.xml ... Passed

45.4.3 命令行 CIM 客户端:wbemcli

除了 wbemcatxmltest 外,SBLIM 项目包含更高级的命令行 CIM 客户端 wbemcli。该客户端用于将 CIM 请求发送到 SFCB 服务器,并显示返回的结果。它独立于 CIMOM 库,可与所有 WBEM 兼容实现一起使用。

例如,如果您需要列出注册到您的 SFCB 的 SBLIM 提供程序实现的所有类,则将 EnumerateClasses (ec) 请求发送到 SFCB:

> wbemcli -dx ec http://localhost/root/cimv2
To server: <?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL \
    NAME="EnumerateClasses"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"> \
    </NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE> \
    </LOCALNAMESPACEPATH>
<IPARAMVALUE NAME="DeepInheritance"><VALUE>TRUE</VALUE> \
    </IPARAMVALUE>
<IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE>
<IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE> \
    </IPARAMVALUE>
<IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE> \
    </IPARAMVALUE>
</IMETHODCALL></SIMPLEREQ>
</MESSAGE></CIM>
From server: Content-Type: application/xml; charset="utf-8"
From server: Content-Length: 337565
From server: Cache-Control: no-cache
From server: CIMOperation: MethodResponse
From server: <?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="EnumerateClasses">
<IRETURNVALUE>
<CLASS NAME="CIM_ResourcePool" SUPERCLASS="CIM_LogicalElement">
<PROPERTY NAME="Generation" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="ElementName" TYPE="string">
</PROPERTY>
<PROPERTY NAME="Description" TYPE="string">
</PROPERTY>
<PROPERTY NAME="Caption" TYPE="string">
</PROPERTY>
<PROPERTY NAME="InstallDate" TYPE="datetime">
</PROPERTY>
[..]
<CLASS NAME="Linux_Ext4FileSystem" SUPERCLASS="CIM_UnixLocalFileSystem">
<PROPERTY NAME="FSReservedCapacity" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="TotalInodes" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="FreeInodes" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="ResizeIncrement" TYPE="uint64">
<VALUE>0</VALUE>
</PROPERTY>
<PROPERTY NAME="IsFixedSize" TYPE="uint16">
<VALUE>0</VALUE>
</PROPERTY>
[..]

-dx 选项会显示 wbemcli 发送到 SFCB 的实际 XML,以及收到的实际 XML。在上例中,众多返回的类中的第一个类是 CIM_ResourcePool,接着是 Linux_Ext4FileSystem。类似的条目会对所有其他注册的类显示。

如果省略 -dx 选项,wbemcli 只会显示返回数据的精简表示:

> wbemcli ec http://localhost/root/cimv2
localhost:5988/root/cimv2:CIM_ResourcePool Generation=,ElementName=, \
    Description=,Caption=,InstallDate=,Name=,OperationalStatus=, \
    StatusDescriptions=,Status=,HealthState=,PrimaryStatus=, \
    DetailedStatus=,OperatingStatus=,CommunicationStatus=,InstanceID=, \
    PoolID=,Primordial=,Capacity=,Reserved=,ResourceType=, \
    OtherResourceType=,ResourceSubType=, \AllocationUnits=
localhost:5988/root/cimv2:Linux_Ext4FileSystem FSReservedCapacity=, \
    TotalInodes=,FreeInodes=,ResizeIncrement=,IsFixedSize=,NumberOfFiles=, \
    OtherPersistenceType=,PersistenceType=,FileSystemType=,ClusterSize=, \
    MaxFileNameLength=,CodeSet=,CasePreserved=,CaseSensitive=, \
    CompressionMethod=,EncryptionMethod=,ReadOnly=,AvailableSpace=, \
    FileSystemSize=,BlockSize=,Root=,Name=,CreationClassName=,CSName=, \
    CSCreationClassName=,Generation=,ElementName=,Description=,Caption=, \
    InstanceID=,InstallDate=,OperationalStatus=,StatusDescriptions=, \
    Status=,HealthState=,PrimaryStatus=,DetailedStatus=,OperatingStatus= \
    ,CommunicationStatus=,EnabledState=,OtherEnabledState=,RequestedState= \
    ,EnabledDefault=,TimeOfLastStateChange=,AvailableRequestedStates=, \
    TransitioningToState=,PercentageSpaceUse=
    [..]

45.5 更多信息

有关 WBEM 和 SFCB 的细节,请参见以下来源:
https://www.dmtf.org

Distributed Management Task Force 网站

https://www.dmtf.org/standards/wbem/

Web-Based Enterprise Management (WBEM) 网站

https://www.dmtf.org/standards/cim/

通用信息模型 (CIM) 网站

http://sblim.sourceforge.net/wiki/index.php/Main_Page

Standards Based Linux Instrumentation (SBLIM) 网站