BMC介紹

什麼是BMC

在介紹BMC之前需要了解一個概念,即平臺管理(platform management)。

平臺管理表示的是一系列的監視和控制功能,操作的對象是系統硬件。比如通過監視系統的溫度,電壓,風扇、電源等等,並做相應的調節工作,以保證系統處於健康的狀態。

當然如果系統真的不正常了,也可以通過復位的方式來重新啓動系統。

同時平臺管理還負責記錄各種硬件的信息和日誌記錄,用於提示用戶和後續問題的定位。

以上的這些功能可以集成到一個控制器上來實現,這個控制器被稱爲基板管理控制器(Baseboard Manager Controller,簡稱BMC)。

需要說明的是,BMC是一個獨立的系統,它不依賴與系統上的其它硬件(比如CPU、內存等),也不依賴與BIOS、OS等(但是BMC可以與BIOS和OS交互,這樣可以起到更好的平臺管理作用,OS下有系統管理軟件可以與BMC協同工作以達到更好的管理效果)。

一般我們的電腦不會帶BMC,因爲用處不大,一些溫度、電源等的管理,CPU來控制就夠了。

但是對於系統要求高的設備,比如服務器,就會用到BMC。

當然因爲BMC是一個獨立的系統,對於某些嵌入式設備,可能不需要其它處理器,光一個BMC就能完成工作。

說到底BMC本身也是一個帶處理器(一般都是ARM處理器)的小系統,單獨用來處理某些工作也完全是可以的。

不過這裏既然叫做BMC,那麼總的來說重點還是在平臺管理,所以本文主要說的是服務器中的BMC。

BMC在系統中的位置大致如下圖所示:

在這裏插入圖片描述

BMC通過不同的接口與系統中的其它組件連接。

LPC、I2C、SMBUS,Serial等,這些都是比較基本的接口,而IPMI,它是與BMC匹配的總線,所有的BMC都需要實現這種接口,這裏需要特別的介紹。


IPMI

IPMI的全稱是Intelligent Platform Management Interface,智能平臺管理接口。

看了名字也不需要特別介紹它用來幹什麼的了,關於它的詳細介紹可以參看https://www.intel.com/content/www/us/en/servers/ipmi/ipmi-home.html,這裏只做簡單的介紹。

IPMI規定了很多的東西,BMC是其中最重要的一個部分,此外還有一些”衛星“控制器通過IPMB與BMC相連,這些”衛星“控制器一般控制特定的設備。

IPMB全稱Intelligent Platform Management Bus,是一種基於I2C的串行總線,它用於BMC與”衛星“控制器的通信,其上傳遞的是IPMI命令。

下面的圖描述了與IPMI有關的各個模塊:
在這裏插入圖片描述


智能平臺管理接口 (IPMI) 是一種開放標準的硬件管理接口規格,定義了嵌入式管理子系統進行通信的特定方法。IPMI 信息通過基板管理控制器 (BMC)(位於 IPMI 規格的硬件組件上)進行交流。使用低級硬件智能管理而不使用操作系統進行管理,具有兩個主要優點: 首先,此配置允許進行帶外服務器管理;其次,操作系統不必負擔傳輸系統狀態數據的任務。用戶可以利用IPMI監視服務器的物理健康特徵,如溫度、電壓、風扇工作狀態、電源狀態等

IPMI的核心是一個專用芯片/控制器(叫做服務器處理器或基板管理控制器(BMC)),其並不依賴於服務器的處理器、BIOS或操作系統來工作,可謂非常地獨立,是一個單獨在系統內運行的無代理管理子系統,只要有BMC與IPMI固件其便可開始工作,而BMC通常是一個安裝在服務器主板上的獨立的板卡。IPMI良好的自治特性便克服了以往基於操作系統的管理方式所受的限制,例如操作系統不響應或未加載的情況下其仍然可以進行開關機、信息提取等操作。

在工作時,所有的IPMI功能都是向BMC發送命令來完成的,BMC接收並在系統事件日誌中記錄事件消息,維護描述系統中傳感器情況的傳感器數據記錄。

一般來說,BMC具有以下功能:

1.通過系統的串行端口進行訪問

2.故障日誌記錄和 SNMP 警報發送

3.訪問系統事件日誌 (System Event Log ,SEL) 和傳感器狀況

4.控制包括開機和關機

5.獨立於系統電源或工作狀態的支持

6.用於系統設置、基於文本公用程序和操作系統控制檯的文本控制檯重定向

而通過IPMI ,用戶可以主動監測組件的狀況,以確保不超出預置閾值,例如服務器溫度。這樣,通過避免不定期的斷電,協助維護了 IT 資源的運行時間。 IPMI的預告故障能力也有助於 IT 週期的管理。通過檢查系統事件日誌 (SEL),可以更輕鬆的預先判定故障組件。

只要將服務器接入網絡並且沒有斷開服務器的電源,不管服務器的處於何種狀態(開機、關機、重啓),都可以允許用戶通過網絡進行遠程管理。


BMC—服務器運維管理利器

BMC全稱BaseboardManagement Controller,通俗來講,BMC是整個服務器單板的大管家。從一款服務器上電時刻,它的所有部件都歸BMC來負責和管理。說到這裏,大家可能已經瞭解BMC是與服務器有關的,但還是會有疑惑,BMC到底是啥?它在服務器哪裏?它在幹什麼?

​ 簡單提下服務器,服務器從功能上來講,跟我們日常學習辦公使用的臺式機和筆記本沒有本質區別,主要也是由最爲關鍵的三大件CPU、內存、硬盤組成,但是服務器的應用場景主要是提供給企業等角色用來支撐形形色色業務,不僅僅是用來安裝瀏覽器訪問網頁、安裝播放器看看電影,因此服務器會使用更強的配置,即更強勁的CPU、更大的內存、更大的硬盤存儲。從外形上來說,服務器存在多種外形,如機架式、刀片式、塔式等等,最主要的區別在於服務器一般不會配置顯示器、鍵盤、鼠標等部件用於近端操作,一般通過IP遠程連接的方式訪問即可。因爲服務器一般情況下都會放置於單獨的機房,而且風扇噪音會比家用電腦更大些。

​ 說到這裏,大家可能覺得我懂了,BMC就是跑在服務器上的一個軟件是吧?錯誤。

​ BMC是一款服務器AC上電起始即運行的軟件,運行在服務器上一款單獨的ARM芯片上,這個ARM芯片就是BMC軟件的CPU,同時會芯片外圍會配置自己的RAM、Flash等器件,只要服務器插上電源線,BMC軟件便快速運行起來,此時有可能我們通常意義上的x86服務器側的OS都還沒有安裝呢。BMC是整個服務器的大管家,主要用於服務器各個部件(CPU、內存、硬盤、風扇、機框等)的溫度、電壓等健康狀態進行檢測,同時根據各個溫度採集點情況實時調整風扇轉速保證服務器不產生過溫、而且控制總體功耗又不能過高,如果單板部件出現任何異常則通過SNMP協議、SMTP協議、Redfish協議等多種業界通用規範講信息及時上報給上層網管,以便運維人員及時處理,保證業務無損。

此處介紹下帶外管理和帶內的概念,通常情況下x86側執行的運維管理動作被稱作帶內的方式,而BMC是脫離x86側獨立運行的服務器管理軟件,被稱作帶外管理軟件。

​ 簡單來說,BMC可以採集任何服務器上的除x86側運行的私有業務本身之外的任何信息,本文不展開講到底可以採集哪種信息,但是請注意,現在業界的BMC帶外管理軟件有各種解決方案,可以採集到任何你想要的信息,是的,任何。因爲即使從帶外無法獲取的信息,當前業界也存在帶外和帶內監控結合、帶外統一提供接口的方案,可以實現通過BMC獲取任何想要獲得信息。

​ 從功能上來講,BMC主要用於採集單個服務器上各種信息,同時提供給上層運維網管軟件。主要有兩種手段,第一種BMC會提供各種各樣的接口供上層網管查詢,如web、命令行等人機接口、SNMP、IPMI、Restful等機機接口;第二種是主動上報,當檢測到有故障產生時,BMC可以通過SNMP trap消息、SMTP 郵件消息、Redfish http json報文等手段上報給上層網管軟件的服務端,以便運維人員及時識別處理故障。一般情況下,BMC軟件上報的消息中都會明確的指明具體是哪個部件產生了故障、處理建議是怎樣的等等。

​ 講到這裏,大家對BMC帶外管理應該有了初步的認識,也達到了本文的目的。此時大家可能存在疑問,在x86側OS上部署一套自研的Agent,也可以採集到我想要的各種信息,對於少量與硬件強相關的信息,我在帶內OS上通過BMC接口查詢補全,這種帶內結合帶外管理的方式不是也挺好嗎?

​ 全帶外管理,是當前各大服務器廠商推出的單板運維管理的解決方案。各大服務器廠商當前均自研統一的帶內Agent信息補全工具,最終彙集信息至BMC側統一對外提供接口。理論上來說,可以滿足單板運維管理的訴求。對於服務器用戶來說,這是零成本的解決方案,強烈建議採用,何必自己再研發一套增加成本呢?

​ 希望大家看完此文能對BMC帶外管理有一定的瞭解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章