跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / 透過 SFCB 實作的網路企業管理
適用範圍 SUSE Linux Enterprise Server 15 SP3

37 透過 SFCB 實作的網路企業管理

37.1 簡介和基本概念

SUSE® Linux Enterprise Server (SLES) 提供一系列基於開放式標準的工具,用於統一管理不同的計算系統和環境。我們的企業解決方案執行 Distributed Management Task Force 所建議的標準。以下段落將介紹其基本元件。

Distributed Management Task Force, Inc (DMTF) 是業內一個引領企業和網際網路環境管理標準開發的組織。該組織的目標是統一管理標準與計劃,並制定整合性更強、更為經濟有效且更具互通性的管理解決方案。DMTF 標準為實施控制和通訊提供了通用的系統管理元件。它們的解決方案與平台和技術無關。Web 架構企業管理通用訊息模型是其中的兩個關鍵技術。

網路企業管理 (WBEM) 是一套管理和網際網路標準技術。開發 WBEM 是為了統一管理企業計算環境。它能夠讓整個行業使用 Web 技術提供一系列整合性極強的管理工具。WBEM 包含以下標準:

  • 資料模型:標準的通用資訊模型 (CIM)

  • 編碼規格:CIM-XML 編碼規格

  • 輸送機制:透過 HTTP 的 CIM 操作

通用訊息模型是一個概念性的資訊模型,對系統管理進行了描述。該模型並非限於某種實作,而且可以實現管理系統、網路、服務與應用程式之間管理資訊的交換。CIM 由兩個部分組成 — CIM 規格與 CIM 綱要。

  • CIM 規格描述語言、命名和中繼綱要。中繼綱要是正式的模型定義。它定義了用來表達此模型的詞彙,以及這些詞彙的使用和語意。中繼綱要包含類別 (class)、內容 (property) 和方法 (method) 這幾個元素。它還允許將指示關聯做為類別的類型,將參考做為內容的類型。

  • CIM 綱要提供實際的模型描述。它提供一組類別,這些類別包含的屬性和關聯可提供完整解讀的概念框架,使用者可運用此框架來組織關於受管理環境的可用資訊。

共用資訊模型物件管理員 (Common Information Model Object Manager, CIMOM) 就是 CIM 物件管理員,更詳細說來,就是指根據 CIM 標準管理物件的應用程式。CIMOM 會管理 CIMOM 提供者與 CIM 用戶端之間的通訊,而管理員則會管理系統。

CIMOM 提供者是指透過 CIMOM 來執行用戶端應用程式所要求之特定工作的軟體。每個提供者都會執行 CIMOM 綱要的一項或多項範疇工作。這些提供者會直接與硬體互動。

Standards Based Linux Instrumentation for Manageability (SBLIM) 是為實現網路企業管理 (WBEM) 而設計的一系列工具。SUSE® Linux Enterprise Server 使用 SBLIM 專案 Small Footprint CIM Broker 的開放原始碼 CIMOM (或 CIM 伺服器)。

Small Footprint CIM Broker 是一款適用於資源受限或內嵌式環境的 CIM 伺服器,可同時實現模組化與輕量化。它基於開放式標準,並支援 CMPI 提供者、CIM-XML 編碼和受管理物件格式 (MOF)。這款伺服器不僅設定自由度高,而且在提供者當機時仍能穩定運作。此外,它還支援各種傳輸通訊協定 (例如 HTTP、HTTPS、Unix Domain Socket、服務位置通訊協定 (SLP) 和 Java 資料庫連接 (JDBC)),因此存取方便。

37.2 設定 SFCB

若要設定 Small Footprint CIM Broker (SFCB) 環境,請務必在 SUSE Linux Enterprise Server 安裝期間選取 YaST 中的網路企業管理模式。或者,也可以選擇將其做為一個元件,安裝於目前正在執行的伺服器上。請確定系統上已安裝下列套件:

cim-schema,通用訊息模型 (CIM) 綱要

包含 Common Information Model (CIM)。CIM 是描述網路或企業環境內所有管理資訊的模型。CIM 由規格和綱要所組成。其中的規格定義了與其他管理模型整合的詳細資訊。而綱要則會提供實際的模型描述。

python2-pywbem

包含 Python 模組,用於透過 WBEM 通訊協定進行 CIM 操作呼叫,以查詢及更新受管理物件。

cmpi-provider-register,與 CIMOM 無關的提供者註冊公用程式

包含一個公用程式,無論 CIMOM 在系統中執行何種操作,都可讓 CMPI 提供者套件進行註冊。

sblim-sfcb,小規模 CIM 仲介

包含 Small Footprint CIM Broker。這是一個 CIM 伺服器,執行透過 HTTP 通訊協定的 CIM 操作。這款伺服器功能全,資源佔用率低,因此特別適合內嵌式環境以及資源受限的環境。SFCB 允許透過通用管理程式介面 (CMPI) 寫入提供者。

sblim-sfcc

包含 Small Footprint CIM Client Library 執行時期程式庫。

sblim-wbemcli

包含 WBEM 指令行介面。它是一個獨立的指令行 WBEM 用戶端,特別適合基本系統管理任務。

37.2.1 啟動、停止 SFCB 和檢查其狀態

CIM 伺服器 sfcbd 精靈隨網路企業管理軟體一起安裝,並且預設會在系統啟動時啟動。下表將說明如何啟動、停止和檢查 sfcbd 的狀態。

表 37.1︰ 用於管理 sfcbd 的指令

任務

Linux 指令

啟動 sfcbd

在指令行中以 root 身分輸入 systemctl start sfcb

停止 sfcbd

在指令行中以 root 身分輸入 systemctl stop sfcb

檢查 sfcbd 狀態

在指令行中以 root 身分輸入 systemctl status sfcb

37.2.2 確保安全存取

SFCB 的預設設定相當安全。不過,仍須檢查 SFCB 元件存取的安全級別是否符合您組織的要求。

37.2.2.1 證書

安全通訊端層 (SSL) 傳輸必須使用證書,才能執行安全的通訊服務。安裝 SFCB 時,會產生自行簽署的證書。

您可以透過變更 /etc/sfcb/sfcb.cfg 中的 sslCertificateFilePath: PATH_FILENAME 設定,以商用證書或自行簽署的證書的路徑取代預設證書的路徑。該檔案必須為 PEM 格式。

依預設,SFCB 要求在以下位置提供一個伺服器證書:

/etc/sfcb/server.pem

若要產生新證書,請執行以下指令:

tux > 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 目錄中產生證書,則需要在指令中附加該路徑。如果這些檔案已存在,系統將顯示一則警告訊息,而不會覆寫舊證書。

tux > 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 使用證書的方式,請參閱第 37.2.2.3 節 「驗證」

37.2.2.2

預設情況下,SFCB 設定為接受所有透過安全連接埠 5989 傳輸的通訊。以下段落將介紹通訊連接埠設定以及建議的組態。

連接埠 5989 (安全)

SFCB 通訊使用的安全連接埠,提供 HTTPS 服務。這是預設值。如果使用這項設定,當透過網際網路在伺服器和工作站之間傳送時,所有 CIMOM 和用戶端應用程式之間的通訊都會進行加密。使用者必須使用用戶端應用程式進行驗證才能連接 SFCB 伺服器。建議您保留此設定。如果用戶端應用程式和受監控的節點之間存在路由器和防火牆,則必須在這些路由器和防火牆上開啟此連接埠,SFCB CIMOM 才能與必要的應用程式進行通訊。

連接埠 5988 (不安全)

SFCB 通訊使用的非安全連接埠,提供 HTTP 服務。這項設定已預設為停用。使用這項設定時,所有 CIMOM 和用戶端應用程式之間的通訊,在透過網際網路在伺服器和工作站之間傳送時都會開放,任何人無須經過任何驗證即可檢視。建議您只在嘗試為 CIMOM 相關問題除錯時使用這項設定。在解決問題後,請再次停用非安全連接埠選項。如果 SFCB CIMOM 要與需要進行不安全存取的必要應用程式進行通訊,則必須在用戶端應用程式與受監控節點之間的路由器和防火牆上開啟此連接埠。

若要變更預設連接埠指定,請參閱第 37.2.2.2 節 「埠」

37.2.2.3 驗證

SFCB 支援 HTTP 基本驗證和基於用戶端證書的驗證 (HTTP over SSL 連接)。在 SFCB 組態檔案 (預設為 /etc/sfcb/sfcb.cfg) 中指定 doBasicAuth =true,可啟用基本 HTTP 驗證。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 基本驗證。

37.3 SFCB CIMOM 組態

SFCB 是 CIM 伺服器的輕量化實作,但設定的自由度很高。有多個選項可控制其行為。控制 SFCB 伺服器的方法有三種:

  • 設定相應的環境變數

  • 使用指令行選項

  • 變更其組態檔案

37.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。若要將追蹤訊息改寫到指定的檔案,可以設定此變數。

37.3.2 指令行選項

SFCB 精靈 sfcbd 有多個指令行選項,可開啟或關閉特定的執行時期功能。請在 SFCB 精靈啟動時輸入這些選項。

-c、--config-file=檔案

SFCB 精靈啟動時,預設會從 /etc/sfcb/sfcb.cfg 中讀取組態。借助此選項,可以指定替代的組態檔案。

-d、--daemon

強制 sfcbd 及其子程序在背景執行。

-s、--collect-stats

開啟執行時期的統計資料收集。各種 sfcbd 執行時期統計資料將被寫入到目前工作目錄下的 sfcbStat 檔案。預設情況下,不會收集任何統計資料。

-l、--syslog-level=記錄層級

指定系統記錄機能的詳細度。記錄層級可以是 LOG_INFO、LOG_DEBUG 或 LOG_ERR,預設為 LOG_ERR。

-k、--color-trace=記錄層級

使用不同的色彩列印各程序的追蹤輸出,以方便您除錯。

-t、--trace-components=數字

啟動元件層級的訊息追蹤,其中數字為使用 OR 指定的位元遮罩整數,用於定義要追蹤的元件。如果指定 -t ? ,會列出所有元件及其關聯的整數位元遮罩:

tux > 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

-t 2019 會顯示 sfcbd 的內部函數,但不會產生過多訊息,因此很有用。

37.3.3 SFCB 組態檔案

SFCB 會在啟動後從組態檔案 /etc/sfcb/sfcb.cfg 讀取其執行時期組態。若想覆寫啟動時的這一行為,可以使用 -c 選項。

組態檔案包含多組 option : VALUE,每行一組。變更此檔案時,可以使用以所用環境原生格式儲存檔案的任何文字編輯器。

如果設定中包含以數字符號 (#) 設為備註的選項,則該設定會使用預設設定。

下面的選項清單可能不完整。如需完整的清單,請參閱 /etc/sfcb/sfcb.cfg/usr/share/doc/packages/sblim-sfcb/README 中的相關內容。

37.3.3.1 httpPort

用途

指定 sfcbd 監聽來自 CIM 用戶端之 HTTP (不安全) 請求的本地連接埠值。預設值為 5988

語法

httpPort: PORT_NUMBER

37.3.3.2 enableHttp

用途

指定 SFCB 是否應接受 HTTP 用戶端連接。預設值為 false

語法

enableHttp: OPTION

選項

描述

true

啟用 HTTP 連接。

false

停用 HTTP 連接。

37.3.3.3 httpProcs

用途

指定可同時建立之 HTTP 用戶端連接的最大數量。達到該數量後,所有新的內送 HTTP 請求都將遭到阻擋。預設值為 8

語法

httpProcs: MAX_NUMBER_OF_CONNECTIONS

37.3.3.4 httpUserSFCB、httpUser

用途

這些選項可控制 HTTP 伺服器將以何使用者的身分執行。如果 httpUserSFCBtrue,HTTP 將以 SFCB 主程序所用的相同使用者身分執行。如果為 false,將使用為 httpUser 指定的使用者名稱。此設定用於 HTTP 和 HTTPS 兩種伺服器。若 httpUserSFCB 設定為 false,就必須指定 httpUser。預設值為 true

語法

httpUserSFCB: true

37.3.3.5 httpLocalOnly

用途

指定是否將 HTTP 要求局限於本地主機。預設值為 false

語法

httpLocalOnly: false

37.3.3.6 httpsPort

用途

指定 sfcbd 監聽來自 CIM 用戶端之 HTTPS 請求的本地連接埠值。預設值為 5989

語法

httpsPort: port_number

37.3.3.7 enableHttps

用途

指定 SFCB 是否接受 HTTPS 用戶端連接。預設值為 true

語法

enableHttps: option

選項

描述

true

啟用 HTTPS 連接。

false

停用 HTTPS 連接。

37.3.3.8 httpsProcs

用途

指定可同時建立之 HTTPS 用戶端連接的最大數量。達到該數量後,所有新的內送 HTTPS 請求都將遭到阻擋。預設值為 8

語法

httpsProcs: MAX_NUMBER_OF_CONNECTIONS

37.3.3.9 enableInterOp

用途

指定 SFCB 是否提供 interop 名稱空間,用於指示支援。預設值為 true

語法

enableInterOp: OPTION

選項

描述

true

啟用 interop 名稱空間。

false

停用 interop 名稱空間。

37.3.3.10 provProcs

用途

指定可同時執行之提供者程序的最大數量。達到該數量之後,如果有新的內送請求要求載入新提供者,則會先自動卸載某個現有的提供者。預設值為 32

語法

provProcs: MAX_NUMBER_OF_PROCS

37.3.3.11 doBasicAuth

用途

接受請求之前,依據用戶端使用者識別碼開啟或關閉基本驗證。預設值為 true,表示系統會執行基本用戶端驗證。

語法

doBasicAuth: OPTION

選項

描述

true

啟用基本驗證。

false

停用基本驗證。

37.3.3.12 basicAuthLib

用途

指定本地程式庫名稱。SFCB 伺服器會載入程式庫,以驗證用戶端使用者識別碼。預設值為 sfcBasicPAMAuthentication

語法

provProcs: MAX_NUMBER_OF_PROCS

37.3.3.13 useChunking

用途

此選項可啟用或停用 HTTP/HTTPS區塊化功能。如果啟用,伺服器將透過多個較小的區塊將大量回應資料傳回用戶端,而不是緩衝資料並集中在一個區塊中全部送回。預設值為 true

語法

useChunking: OPTION

選項

描述

true

啟用 HTTP/HTTPS 資料區塊化功能。

false

停用 HTTP/HTTPS 資料區塊化功能。

37.3.3.14 keepaliveTimeout

用途

指定 SFCB HTTP 程序在同一個連接上兩次請求間的最長等待時間 (秒)。達到此時間後,程序將終止。如果將其設定為 0,則會停用 HTTP 保持連線功能。預設值為 0

語法

keepaliveTimeout: SECS

37.3.3.15 keepaliveMaxRequest

用途

指定一個連接上連續請求的最大數量。如果將其設定為 0,則會停用 HTTP 保持連線功能。預設值為 10

語法

keepaliveMaxRequest: NUMBER_OF_CONNECTIONS

37.3.3.16 registrationDir

用途

指定註冊目錄,其中包含提供者註冊資料、階段區域和靜態儲存庫。預設值為 /var/lib/sfcb/registration

語法

registrationDir: DIR

37.3.3.17 providerDirs

用途

指定 SFCB 從中搜尋提供者程式庫的目錄清單,以空格分隔。預設值為 /usr/lib64 /usr/lib64 /usr/lib64/cmpi

語法

providerDirs: DIR

37.3.3.18 providerSampleInterval

用途

指定提供者管理員檢查閒置提供者的間隔 (秒)。預設值為 30

語法

providerSampleInterval: SECS

37.3.3.19 providerTimeoutInterval

用途

指定提供者在閒置多少時間 (秒) 後由提供者管理員卸載。預設值為 60

語法

providerTimeoutInterval: SECS

37.3.3.20 providerAutoGroup

用途

如果提供者註冊檔案未指定其他任何群組,並且該選項設定為 true,則同一個共用程式庫中的所有提供者都會在同一個程序中執行。

語法

providerAutoGroup: OPTION

選項

描述

true

啟用提供者分組。

false

停用提供者分組。

37.3.3.21 sslCertificateFilePath

用途

指定包含伺服器證書的檔案名稱。檔案必須為 PEM (隱私增強郵件,採用 RFC 1421 與 RFC 1424 標準) 格式。不過,此檔案僅在 enableHttps 設定為 true 時才要求使用。預設值為 /etc/sfcb/server.pem

語法

sslCertificateFilePath: PATH

37.3.3.22 sslKeyFilePath

用途

指定包含伺服器證書之私密金鑰的檔案名稱。該檔案必須為 PEM 格式,可以不含密碼片語保護。不過,此檔案僅在 enableHttps 設定為 true 時才要求使用。預設值為 /etc/sfcb/file.pem

語法

sslKeyFilePath: PATH

37.3.3.23 sslClientTrustStore

用途

指定包含 CA 或自行簽署之客戶端證書的檔案名稱。此檔必須為 PEM 格式,不過僅在 sslClientCertificate 設定為 acceptrequire 時才要求使用。預設值為 /etc/sfcb/client.pem

語法

sslClientTrustStore: PATH

37.3.3.24 sslClientCertificate

用途

指定 SFCB 處理用戶端證書驗證的方式。如果設定為 ignore,則不會要求用戶端提供證書。如果設定為 accept,則會要求用戶端提供證書,不過即使用戶端不提供,操作也不會失敗。如果設定為 require,則會在客戶端不提供證書時拒絕客戶端連接。預設值為 ignore

語法

sslClientCertificate: OPTION

選項

描述

ignore

停用用戶端證書的請求。

accept

停用用戶端證書的請求。

即使不提供證書,也不會失敗。

require

如果沒有有效的證書,便拒絕用戶端連接。

37.3.3.25 certificateAuthLib

用途

指定本地程式庫的名稱,以便請求基於用戶端證書的使用者驗證。僅當 sslClientCertificate 未設定為 ignore 時才需要指定。預設值為 sfcCertificateAuthentication

語法

certificateAuthLib: FILE

37.3.3.26 traceLevel

用途

指定 SFCB 的追蹤層級。您可以透過設定環境變數 SFCB_TRACE_LEVEL 的方式對其進行覆寫。預設值為 0

語法

traceLevel: NUM_LEVEL

37.3.3.27 traceMask

用途

指定 SFCB 的追蹤遮罩。您可以透過指令行選項 --trace-components 對其進行覆寫。預設值為 0

語法

traceMask: MASK

37.3.3.28 traceFile

用途

指定 SFCB 的追蹤檔案。您可以透過設定環境變數 SFCB_TRACE_FILE 的方式對其進行覆寫。預設值為 stderr (標準錯誤輸出)。

語法

traceFile: OUTPUT

37.4 進階 SFCB 任務

本章介紹有關 SFCB 使用的更多進階主題。為了便於理解,您需要先掌握 Linux 檔案系統的基本知識,並具備 Linux 指令行的操作經驗。本章包括以下任務:

  • 安裝 CMPI 提供者

  • 測試 SFCB

  • 使用 wbemcli CIM 用戶端

37.4.1 安裝 CMPI 提供者

若要安裝 CMPI 提供者,需要確定其共用程式庫複製到 providerDirs 組態選項指定的其中一個目錄,請參閱第 37.3.3.17 節 「providerDirs」。還必須使用 sfcbstagesfcbrepos 指令正確註冊提供者。

系統通常會為 SFCB 準備提供者套件,以便安裝程序能夠正確進行註冊。此外,還為 SFCB 準備了大多數 SBLIM 提供者。

37.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 檔案,並建立每個名稱空間的類別階層。

37.4.1.2 新增新類別

SFCB 無法執行線上 CIM 類別操作。您需要在離線模式下新增、變更或移除類別,然後使用 systemctl restart sfcb 重新啟動 SFCB 服務以註冊變更。

儲存提供者類別和註冊資訊時,SFCB 會使用一個稱為階段區域的位置。在 SUSE® Linux Enterprise Server 系統中,即 /var/lib/sfcb/stage/ 下的目錄結構。

若要新增提供者,需要:

  • 將提供者類別定義檔案複製到階段區域目錄 (/var/lib/sfcb/stage/mofs) 下的 ./mofs 子目錄。

  • 將包含類別名稱或提供者類型,以及可執行程式庫檔案名稱的註冊檔案複製到 ./regs 子目錄。

階段目錄中有兩個預設 mof (類別定義) 檔案:indication.mofinterop.mof。執行 sfcbrepos 指令後,根階段目錄 /var/lib/sfcb/stage/mofs 下的 MOF 檔案將複製到每個名稱空間中。interop.mof 只會編譯至 interop 名稱空間。

目錄配置可能如下例所示:

tux > ls /var/lib/sfcb/stage
default.reg  mofs  regs
tux > ls /var/lib/sfcb/stage/mofs
indication.mof  root
tux > ls /var/lib/sfcb/stage/mofs/root
cimv2  interop  suse  virt
tux > 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
tux > 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
tux > 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
tux > 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 服務。

37.4.2 測試 SFCB

SFCB 套件包含兩個測試程序檔:wbemcatxmltest

wbemcat 會透過 HTTP 通訊協定將原始 CIM-XML 資料傳送至在連接埠 5988 上監聽的指定 SFCB 主機 (預設為 localhost)。然後顯示傳回的結果。以下檔案包含標準 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

tux > 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檔案,則會予以建立,供後續使用。

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

37.4.3 指令行 CIM 用戶端:wbemcli

除了 wbemcatxmltest 外,SBLIM 專案還包含更進階的指令行 CIM 用戶端 wbemcli。該用戶端用於向 SFCB 伺服器傳送 CIM 請求,並顯示傳回的結果。它不依賴 CIMOM 程式庫,並可用於所有與 WBEM 相容的實作。

例如,如果需要列出由註冊到您 SFCB 的 SBLIM 提供者執行的所有類別,可向 SFCB 傳送 EnumerateClasses (ec) 要求:

tux > 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 只會顯示傳回資料的精簡表示:

tux > 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=
    [..]

37.5 更多資訊

如需有關 WBEM 和 SFCB 的詳細資料,請參閱以下來源:
https://www.dmtf.org

Distributed Management Task Force 網站

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

網路企業管理 (WBEM) 網站

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

Common Information Model (CIM) 網站

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

Standards Based Linux Instrumentation (SBLIM) 網站