ipmi-智能平台管理接口是一個标準,它的實作核心是一個晶片,叫做BMC,它獨立于計算機正常部件比如cpu,記憶體等等然而卻真真的存在于主機闆或者刀片上。基于BMC使用ipmi,你可以不依賴作業系統對機器進行監控或者管理,甚至遠端管理,管理的範疇甚至可以是電源操作,比如開機,關機,重新開機等,比運作于作業系統的SNMP軟體要靈活很多,之是以管理的範疇如此之寬就在于BMC晶片的獨立性,它獨自存在于闆卡上,獨立供電,隻要接通電源它就被供電,甚至可以使用單獨的電池給與供電,這樣的話,緻命的停電(設想ups已損壞)之類的問題都可以被監控到。當機器還沒有開啟的時候,也就是cpu還沒有開始運作的時候,此時假設電源已經接上了,還沒有按下開機鍵,這個時候,BMC晶片已經開始運作了,它可以從網絡接收“指令”,然後幫助管理者打開機器,這樣管理者就可以在一個地方同時控制N多機器了而不必再往返于各個機房,管理者也可以通過ipmi遠端檢視任何機器的cpu溫度之類的資訊,然後根據資訊回報采取相應的動作或者什麼也不做。
ipmi的設計思想其實并不是起始于伺服器範疇,筆記本電腦的電源管理使用了類似的思想,那就是EC,也是一個一直在運作的嵌入式裝置(EC是一個單片機,比BMC要簡單得多),EC的精妙之處也在于它獨立于cpu和作業系統而運作,是以可以進行定制化的電源管理操作,比如在關機的情況下充電訓示燈的顯示和顔色控制。傳統的計算機都是按下電源cpu即開始工作,cpu停止工作的那一刻,電源即切斷,其生命周期僅在于電源按鍵的一張一合之間,而普通電器無異,這樣的機器,人工的退出必然在電源開啟之後,電源開啟之前必然需要人去做“第一推動”,這很不友善,特别是對于管理者來講,如今,EC和IPMI的設計思想解決了這個問題。另一方面,作業系統内置的監控機制無法對作業系統本身的問題進行毫無偏見的監控,畢竟當局者不清,比如基于SNMP的監控程式就無法對硬體故障之類的問題進行實時監控而隻能使用類似heartbeat的機制進行,如果使用ipmi,這就友善多了,畢竟BMC是以旁觀者的身份站在一旁來看主機闆上的硬體裝置和總線情況的,是以ipmi更适合硬體的管理和監控而snmp則更适合于軟體,對于ipmi而言,軟體的運作情況必須通過作業系統提供的接口進行監控,否則BMC是看不到的。
ipmi在linux的實作中包含三個部分,首先是硬體裝置驅動,第二是操作硬體裝置的字元裝置,第三是一個消息處理子產品,最後還包含一個watchdog。所有這些并不是使用ipmi必須的,這些僅僅是提供了一種可能性,那就是你可以在作業系統上配置ipmi晶片,這會很友善,如果你的作業系統沒有這些驅動,那麼就必須在bios中對ipmi晶片進行配置了。通過SMBus将BMC和網卡晶片相連接配接,在關機的情況下網卡依然通着電,它依然可以接收資料,接收到的資料就可以進入BMC,然後BMC根據資料指令進行操作,比如開機之類的,可以說BMC晶片中實作了一個微小的tcp/ip協定棧,正是這個協定棧最終從網線上取出了資料指令,然後執行開機動作的。這樣看來,有了ipmi之後,機器隻要買回來,在機房布好之後,人的介入就可以最大限度減少了,管理者可以集中控制N台機器,機器不再單獨作為一台機器存在,而是和其他的機器一起組成了一個個的網絡,這些網絡可以組成我們的網際網路,一台機器延伸到了一個網絡的一分子,同樣一個網絡分子智能處理生命周期也從電源按鍵的一開一合之間延展到了機器買回來到機器被砸爛之間。
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271142