在 OpenBMC 系統中,傳感器(Sensor) 是負責監控特定硬體參數(如溫度、電壓、風扇轉速等)並提供實時數據的核心元件。為了在 OpenBMC 中被正式認定為傳感器,該元件必須滿足以下幾個關鍵條件:
傳感器在 OpenBMC 中扮演著至關重要的角色,主要表現在以下幾個方面:
SDR(Sensor Data Record)表是 IPMI(Intelligent Platform Management Interface)標準的一部分,用於記錄和管理系統中所有傳感器的數據。傳感器數據能夠在 SDR 表中呈現,對於實現高效的硬體監控和管理至關重要。其主要功能包括:
為了使傳感器數據能夠被正確地呈現在 SDR 表中,需確保以下幾點:
根據 OpenBMC 的架構與需求,建立能夠在 SDR 表中呈現的傳感器主要有以下幾種實作方法。每種方法均涉及特定的 Daemon 服務與配置文件格式,確保傳感器能夠準確地被探測、管理並展示於 SDR 表中。
此方法主要依賴 Entity Manager Daemon 和 YAML 配置文件來定義和管理傳感器。其流程如下:
sensors:
- name: "temp_sensor"
type: "temperature"
threshold:
upper: 80
lower: 20
path: "/sys/class/hwmon/hwmon0/temp1_input"
此方法利用 dbus-sensors Daemon 及 JSON 配置文件來創建和管理傳感器。具體步驟如下:
{
"Name": "FanSensor",
"Type": "fan",
"Exposes": [
{
"SensorType": "tacho",
"MaxReading": 12000,
"MinReading": 1000,
"ReadingPath": "/sys/class/hwmon/hwmon0/fan1_input"
}
]
}
此方法結合使用 phosphor-hwmon Daemon 和 YAML 配置文件,以實現傳感器的定義與管理。具體實作流程如下:
sensors:
- name: "voltage_sensor"
type: "voltage"
threshold:
upper: 3.3
lower: 1.8
path: "/sys/class/hwmon/hwmon0/in0_input"
| 方法 | 配置檔格式 | 關鍵 Daemon | 優勢 |
|---|---|---|---|
| Entity Manager + YAML | YAML | Entity Manager, phosphor-ipmi-host | 配置簡潔,易於管理硬體實體的動態變化 |
| dbus-sensors + JSON | JSON | dbus-sensors, Entity Manager, phosphor-ipmi-host | 高度動態與模組化,適用於複雜系統環境 |
| phosphor-hwmon + YAML | YAML | phosphor-hwmon, phosphor-ipmi-host | 直接與 Linux HWMon 接口集成,實現高效數據讀取 |
目的:動態管理系統中的硬體實體,根據配置文件自動創建和更新對應的 D-Bus 對象。
功能:
目的:橋接 Linux HWMon 接口與 OpenBMC 的 D-Bus 系統,負責讀取硬體傳感器數據並將其轉換為 D-Bus 可供訪問的格式。
功能:
/sys/class/hwmon/ 路徑下的硬體傳感器文件,獲取實時數據。目的:提供一組應用程序,用於更動態和高級的傳感器功能,通過 D-Bus 接口管理和更新傳感器數據。
功能:
目的:管理與 IPMI 有關的功能,確保傳感器數據能夠通過 IPMI 協議被訪問和管理,並將數據展示在 SDR 表中。
功能:
用途:主要用於 Entity Manager 及 phosphor-hwmon,定義傳感器的屬性、類型、閾值及數據來源路徑。
結構:
sensors:
- name: "temp_sensor"
type: "temperature"
threshold:
upper: 80
lower: 20
path: "/sys/class/hwmon/hwmon0/temp1_input"
優勢:語法簡潔易讀,便於手動編輯和管理,適合靜態和相對固定的傳感器配置。
用途:主要用於 dbus-sensors 及 Entity Manager,提供傳感器的詳細定義和動態配置。
結構:
{
"Name": "FanSensor",
"Type": "fan",
"Exposes": [
{
"SensorType": "tacho",
"MaxReading": 12000,
"MinReading": 1000,
"ReadingPath": "/sys/class/hwmon/hwmon0/fan1_input"
}
]
}
優勢:結構化程度高,適合複雜和動態的傳感器配置,易於機器解析和處理。
在 OpenBMC 系統中,傳感器的定義與實現是一個多層次且高度結構化的過程。傳感器不僅需要具備基本的監控功能,還需符合 IPMI 標準以確保數據能夠正確地呈現在 SDR 表中。為了達成這一目標,系統提供了多種實作方法,每種方法均依賴於特定的 Daemon 和配置文件格式,以實現傳感器的動態管理與數據整合。
無論選擇使用 Entity Manager 配合 YAML 配置,還是 dbus-sensors 配合 JSON 配置,亦或是 phosphor-hwmon 配合 YAML 配置,每種方法都有其獨特的優勢和適用場景。透過合理的配置與 Daemon 的協同工作,OpenBMC 能夠實現高效、靈活且準確的硬體監控,確保系統運行的穩定性與可靠性。