Ithy Logo

在 OpenBMC 中配置 fan.json 的 DIRECTION 和 NAME 字串指南

全面解析如何在 fan.json 中設置閾值參數

server fan control

三個關鍵要點

  • 理解 DIRECTION 和 NAME 的定義:掌握這些字段的含義及其可用值是正確配置的基礎。
  • 查閱相關文件和代碼庫:利用 OpenBMC 的官方資源,如 phosphor-fan-presence 和 entity-manager,來獲取準確的信息。
  • 遵循最佳實踐:確保配置一致性和符合 Redfish 規範,以保障系統的穩定性和互操作性。

1. 理解 DirectionName 的定義

1.1 Direction 字段的含義

Direction 字段用於定義風扇轉速閾值觸發的方向,常見的值包括:

  • "less than":當風扇轉速小於設定值時觸發。
  • "greater than":當風扇轉速大於設定值時觸發。
  • "equals":當風扇轉速等於設定值時觸發。

1.2 Name 字段的含義

Name 字段用於標識閾值的類型,以便在監控和日誌記錄中直觀區分不同的狀態,常見的值包括:

  • "lower critical":下臨界閾值。
  • "upper critical":上臨界閾值。
  • "lower non-critical":下非臨界閾值。
  • "upper non-critical":上非臨界閾值。
  • "normal":正常狀態。

2. 查閱相關文件和代碼庫

2.1 OpenBMC 官方文檔和代碼庫

要確定 DirectionName 的正確字串值,建議參考以下資源:

  • phosphor-fan-presence 代碼庫:這是 OpenBMC 中用於風扇控制的主要模組,包含了風扇的配置範例和定義。
  • entity-manager 代碼庫:用於管理 BMC 的實體配置,通常包含 JSON 配置文件的格式說明。
  • Redfish API 規範:OpenBMC 遵循 Redfish 標準,相關文檔提供了配置參數的詳細說明。

2.2 查找配置文件中的閾值定義

具體步驟如下:

  1. 訪問 phosphor-fan-presence 代碼庫,查找 config.json 或相關配置文件。
  2. 查看 entity-manager 代碼庫中的 JSON Schema 文件,了解配置格式和允許的值。
  3. 參考 OpenBMC 的官方 Redfish API 文檔,確保配置符合標準。

2.3 使用 JSON Schema 和範例配置

OpenBMC 使用 JSON Schema 來定義配置文件的結構和允許的值。以下是一些範例配置:


{
    "Thresholds": [
        {
            "Direction": "greater than",
            "Name": "upper critical",
            "Severity": 1,
            "Value": 800.0,
            "Hysteresis": 100
        },
        {
            "Direction": "less than",
            "Name": "lower critical",
            "Severity": 1,
            "Value": 500.0,
            "Hysteresis": 100
        }
    ]
}
    

在此範例中:

  • "Direction": "greater than" 表示當值大於 800.0 時觸發。
  • "Name": "upper critical" 指定這是上臨界值。

3. 修改 fan.json 配置文件

3.1 定位並編輯 fan.json

通常,風扇配置文件位於 /usr/share/phosphor-fan-presence/control/fans.json。在文件中新增或修改閾值配置,例如:


{
    "Thresholds": [
        {
            "Direction": "less than",
            "Name": "lower critical",
            "Severity": 1,
            "Value": 500.0,
            "Hysteresis": 100
        },
        {
            "Direction": "greater than",
            "Name": "upper critical",
            "Severity": 1,
            "Value": 800.0,
            "Hysteresis": 100
        }
    ]
}
    

3.2 驗證配置

修改完成後,使用以下命令來驗證配置文件是否正確:


# 檢查 JSON 格式
jq . /usr/share/phosphor-fan-presence/control/fans.json
    

如果沒有錯誤,重新啟動相關服務以應用更改:


# 重新啟動 fan-presence 服務
systemctl restart fan-presence
    

4. 最佳實踐與建議

4.1 使用標準化值

為了確保系統的穩定性和互操作性,應使用 OpenBMC 和 Redfish 規範中定義的標準化值,避免使用自定義字串。

4.2 參考相似平台的實現

可以參考其他廠商或平台的 fan.json 配置範例,理解常見的配置模式和最佳實踐。

4.3 定期更新和審查配置

隨著 OpenBMC 的更新,定期檢查和更新配置文件,以確保它們與最新的代碼庫和文檔保持一致。

5. 常見問題解答

5.1 如何添加新的閾值類型?

若需添加新的閾值類型,應遵循現有的命名慣例,確保新類型與 D-Bus 接口和 Redfish 規範一致。例如,如果要添加「中等警告」閾值,可以使用以下配置:


{
    "Direction": "greater than",
    "Name": "upper warning",
    "Severity": 2,
    "Value": 700.0,
    "Hysteresis": 50
}
    

5.2 配置文件中 Severity 的意義是什麼?

Severity 字段用於指示閾值觸發的嚴重程度,數值越小表示越嚴重。例如:

  • 1:臨界閾值,系統可能需要立即響應。
  • 2:警告閾值,系統應該記錄並提醒管理員。

5.3 什麼是 Hysteresis

Hysteresis 用於防止閾值頻繁觸發,設置一個延遲值。例如,當閾值被觸發後,必須超過一定的 Hysteresis 值後,才會再次觸發。

6. 實例分析與應用

6.1 配置上臨界值 (Upper Critical)

假設需要設定一個上臨界值,以確保風扇在轉速過高時能夠自動降低速度,保護硬體。配置如下:


{
    "Thresholds": [
        {
            "Direction": "greater than",
            "Name": "upper critical",
            "Severity": 1,
            "Value": 1000.0,
            "Hysteresis": 150
        }
    ]
}
    

解析:

  • "Direction": "greater than":當轉速大於 1000.0 時觸發。
  • "Name": "upper critical":標識這是上臨界值。
  • "Severity": 1:表示這是一個臨界警告,需立即響應。
  • "Hysteresis": 150:設置觸發後需要超過 150 的轉速才會再次觸發,以防止頻繁響應。

6.2 配置下臨界值 (Lower Critical)

同樣地,若需設定下臨界值以確保風扇不會運行過慢,配置如下:


{
    "Thresholds": [
        {
            "Direction": "less than",
            "Name": "lower critical",
            "Severity": 1,
            "Value": 300.0,
            "Hysteresis": 50
        }
    ]
}
    

解析:

  • "Direction": "less than":當轉速小於 300.0 時觸發。
  • "Name": "lower critical":標識這是下臨界值。
  • "Severity": 1:表示這是一個臨界警告,需立即響應。
  • "Hysteresis": 50:設置觸發後需要低於 50 的轉速才會再次觸發。

7. 常用工具與命令

7.1 使用 jq 工具驗證 JSON 格式

jq 是一個輕量級且靈活的命令行 JSON 處理器,可用於驗證和格式化 JSON 文件:


# 檢查 JSON 格式
jq . /usr/share/phosphor-fan-presence/control/fans.json
    

7.2 重啟服務應用更改

在修改配置文件後,需要重啟相關服務以應用更改:


# 重新啟動 fan-presence 服務
systemctl restart fan-presence
    

8. 表格總結可能的 DIRECTION 和 NAME 值

字段 可能的值 描述
Direction "less than" 當風扇轉速小於閾值時觸發
Direction "greater than" 當風扇轉速大於閾值時觸發
Direction "equals" 當風扇轉速等於閾值時觸發
Name "lower critical" 下臨界閾值
Name "upper critical" 上臨界閾值
Name "lower non-critical" 下非臨界閾值
Name "upper non-critical" 上非臨界閾值
Name "normal" 正常狀態

結論

在 OpenBMC 中配置 fan.json 文件時,正確理解並設置 DirectionName 字串至關重要。通過查閱相關的官方文檔、代碼庫以及遵循最佳實踐,可以確保配置的準確性和系統的穩定運行。定期檢查和更新配置文件,並利用工具和命令來驗證和應用更改,將有助於維持系統的健康和性能。

參考資料


Last updated January 24, 2025
Ask me more