1. 程式人生 > >BMC ipmitool 對linux伺服器進行IPMI管理

BMC ipmitool 對linux伺服器進行IPMI管理

 IPMI是智慧型平臺管理介面(Intelligent Platform Management Interface)的縮寫,是管理基於 Intel結構的企業系統中所使用的外圍裝置採用的一種工業標準,該標準由英特爾、惠普、NEC、美國戴爾電腦和SuperMicro等公司制定。使用者可以利用IPMI監視伺服器的物理健康特徵,如溫度、電壓、風扇工作狀態、電源狀態等。

       IPMI工作原理:

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

  在工作時,所有的IPMI功能都是向BMC傳送命令來完成的,命令使用IPMI規範中規定的指令,BMC接收並在系統事件日誌中記錄事件訊息,維護描述系統中感測器情況的感測器資料記錄。在需要遠端訪問系統時,IPMI新的LAN上序列(SOL)特性很有用。SOL改變IPMI會話過程中本地串列埠傳送方向,從而提供對緊急管理服務、Windows專用管理控制檯或Linux序列控制檯的遠端訪問。BMC通過在LAN上改變傳送給 串列埠的資訊的方向來做到這點,提供了一種與廠商無關的 遠端查詢啟動、作業系統載入器或緊急管理控制檯來診斷和維修故障的標準方式。

  當需要對系統 文字控制檯進行遠端訪問時,Serial Over LAN (SOL) 功能將非常有用。SOL 通過 IPMI 會話重定向本地序列介面,允許遠端訪問 Windows 的緊急事件管理控制檯 (EMS) 特殊管理控制檯 (SAC),或訪問 

Linux 序列控制檯。這個過程的步驟是 IPMI 韌體擷取資料,然後通過區域網重新發送定向到串列埠的資訊。 這就提供了遠端檢視 BOOT、OS 載入器或緊急事件管理控制檯以診斷並修復伺服器相關問題的標準方法,而無需考慮供應商。它允許在引導階段配置各種元件。

       BMC具有以下功能:

  1.通過系統的串列埠進行訪問   2. 故障日誌記錄和 SNMP 警報傳送   3.訪問系統事件日誌 (System Event Log ,SEL) 和感測器狀況   4.控制包括開機和關機   5.獨立於系統電源或工作狀態的支援   6.用於系統設定、基於文字公用程式和作業系統控制檯的文字控制檯重定向

       

         使用 ipmi 的必要條件——必須在硬體、OS、管理工具等幾個方面都滿足:

         1.伺服器硬體本身提供對 ipmi 的支援 (硬體)
         目前惠普、戴爾和 NEC 等大多數廠商的伺服器都支援 IPMI 2.0,但並不是所有伺服器都支援,所以應該先通過產品手冊或在 BIOS 中確定伺服器是否支援 ipmi,也就是說伺服器在主機板上要具有 BMC 等嵌入式的管理微控制器。

         這裡拿DELL R710為例:

         1) 啟動伺服器 使用ctrl+e 進去ipmi server mangement configuration

         2)設定IPMI Over LAN 為On

          

          3)進入IPMI Parameters 設定伺服器ip/子網掩碼 (也可以進去系統通過Ipmitool管理軟體設定)

           

          4)進入LAN User Confuguration 設定使用者名稱 密碼 (同樣也可以進去系統通過Ipmitool管理軟體設定)

         

         

         2.作業系統提供相應的 ipmi 驅動  (OS)
         通過作業系統監控伺服器自身的 ipmi 資訊時需要系統核心提供相應的支援,linux 系統通過核心對 OpenIPMI(ipmi 驅動)的支援來提供對 ipmi 的系統介面。在使用驅動之前,請先啟動該驅動:
          service ipmi start
          或者啟動模組:
          modprobe ipmi_msghandler
          modprobe ipmi_devintf
          modprobe ipmi_si
          modprobe ipmi_poweroff
          modprobe ipmi_watchdog

          3.ipmi 管理工具 (管理工具)
          Linux 下的命令列方式的 ipmi 平臺管理工具 ipmitool。
          ipmitool 命令需要通過相應的interface來訪問BMC,在本地獲取資訊時候採用的是-I open,即為OpenIPMI介面,IPMItool命令包含的介面有open、lan、lanplus。其中open是指的是OpenIPMI與 BMC通訊,Lan是通過Ethernet LAN網用IPV4的udp協議與BMC通訊。UDP的資料段包含了IPMI request/resoponse訊息,訊息具有一個IPMI session 頭和RMCP 頭。
          IPMI使用Remote Management Control Protocol (RMCP) 版本1支援作業系統關閉(pre-OS和OS-absent),RMCP把把資料傳送到UDP的623埠。象lan介面一樣,lanplus同樣使用 Ethernet LAN 的UDP協議與BMC通訊,但是lanplus使用RMCP+協議(在IPMIV20中描述)來同新,RMCP+允許使用改經的認證方式和資料完整性檢查。Open埠用於本地監控系統使用的;Lan/lanplus通過網路進行遠端監控。

         利用ipmitool實現對Linux伺服器的ipmi管理有2種方式:

          1)通過OS監控本地服務,實現對本地伺服器的管理。

           架構:應用軟體ipmitool <----------->OS提供支援ipmi系統介面<------------>硬體主機板上有bmc晶片

          通過ipmitool命令獲取獲取感測器中的各種監測值和該值的監測閾值,包括(CPU溫度,電壓,風扇轉速,電源調製模組溫度,電源電壓等資訊)

          ipmitool本地監控使用命令:ipmitool -I open command,其中-I open表示使用OpenIPMI介面,command有以下項:
a)   raw:傳送一個原始的IPMI請求,並且列印回覆資訊。
b)   lan:配置網路(lan)通道(channel)
c)   chassis :檢視底盤的狀態和配置電源
d)   event:向BMC傳送一個已定義的事件(event),可用於測試配置的SNMP是否成功
e)   mc:  檢視MC(Management Contollor)狀態和各種允許的項
f)   sdr:列印感測器倉庫中的任何監控項和從感測器讀取到的值。
g)   sensor:列印周詳的感測器資訊。
h)   Fru:列印內建的Field Replaceable Unit (FRU)資訊
i)   sel: 列印 System Event Log (SEL)      
j)   pef: 配置 Platform Event Filtering (PEF),事件過濾平臺用於在監控系統發現有event時候,用PEF中的策略進行事件過濾,然後看是否需要報警。
k)   sol/isol:用於配置通過串列埠的Lan進行監控
l)   user:配置BMC中使用者的資訊 。
m)  channel:配置Management Controller通道。

[email protected]:~# ipmitool -I open sensor list
Temp             | na         | degrees C  | na    | na        | na        | na        | 85.000    | 90.000    | na        
Temp             | na         | degrees C  | na    | na        | na        | na        | 85.000    | 90.000    | na        
Temp             | na         | degrees C  | na    | 64.000    | na        | -128.000  | -128.000  | na        | na        
Temp             | na         | degrees C  | na    | -128.000  | na        | -96.000   | -27.000   | na        | na        
Ambient Temp     | 19.000     | degrees C  | ok    | na        | 3.000     | 8.000     | 42.000    | 47.000    | na        
Planar Temp      | na         | degrees C  | na    | na        | 3.000     | 8.000     | 92.000    | 97.000    | na

          2)通過網路監控遠端伺服器。

            被監控伺服器需要硬體和作業系統介面驅動的支援,可以無需安裝應用軟體。監控客戶端需要應用軟體如ipmitool工具,可以無需硬體和作業系統介面驅動的支援。

            ipmi的遠端監控是通過向與BMC相連的網路介面傳送udp資料包實現的,udp資料包的定位是通過把ip地址寫BMC晶片來實現,而這需要本地的Ipmi系統介面來完成連線。Ipmitool可以通過LAN遠端監控系統,同時BMC中儲存有一序列使用者名稱和密碼,通過LAN進行遠端訪問需要使用者名稱和密碼。

            被監控伺服器使用ipmitool更改ip,檢視ip      

root@linux:~# ipmitool lan set 1 ipaddr  172.16.6.222
Setting LAN IP Address to 172.16.6.222
root@linux:~# ipmitool lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD 
Auth Type Enable        : Callback : MD2 MD5 
                        : User     : MD2 MD5 
                        : Operator : MD2 MD5 
                        : Admin    : MD2 MD5 
                        : OEM      : 
IP Address Source       : Static Address
IP Address              : 172.16.6.222
Subnet Mask             : 255.255.255.0
MAC Address             : a4:ba:db:4d:3f:2d
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 0.0.0.0
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM

               監控客戶端Ipmi ip地址也必須和被監控服務端在同一網段,

root@ubuntu:~# ipmitool lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD 
Auth Type Enable        : Callback : MD2 MD5 
                        : User     : MD2 MD5 
                        : Operator : MD2 MD5 
                        : Admin    : MD2 MD5 
                        : OEM      : 
IP Address Source       : Static Address
IP Address              : 172.16.6.175
Subnet Mask             : 255.255.255.0
MAC Address             : a4:ba:db:1b:81:48
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 0.0.0.0
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM
root@ubuntu:~# ifconfig eth0:1 172.16.6.252 netmask 255.255.255.0
root@ubuntu:~# ifconfig 
eth0      Link encap:Ethernet  HWaddr a4:ba:db:1b:81:40  
          inet addr:10.1.6.175  Bcast:10.1.6.255  Mask:255.255.255.0
          inet6 addr: fe80::a6ba:dbff:fe1b:8140/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:107931 errors:0 dropped:18357 overruns:0 frame:0
          TX packets:12671 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13418631 (13.4 MB)  TX bytes:1551309 (1.5 MB)

eth0:1    Link encap:Ethernet  HWaddr a4:ba:db:1b:81:40  
          inet addr:172.16.6.252  Bcast:172.16.6.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:178 (178.0 B)  TX bytes:178 (178.0 B)

root@ubuntu:~# ping 172.16.6.222
PING 172.16.6.222 (172.16.6.222) 56(84) bytes of data.
64 bytes from 172.16.6.222: icmp_req=1 ttl=64 time=0.458 ms
64 bytes from 172.16.6.222: icmp_req=2 ttl=64 time=0.514 ms
              能夠Ping通被監控伺服器地址 則可以遠端管理該主機。
root@ubuntu:~# ipmitool -I lanplus -H 172.16.6.222 -U root -P password sol activate
[SOL Session operational.  Use ~? for help]

 LTS debian ttyS1

debian login:

             看到以上介面,說明客戶端已經可以登入或檢視被監控伺服器。

以下是ipmitool在生產環境下常用命令:

檢視ipmi資訊 #ipmitool mc info
人員             #ipmitool user list 1

檢視繫結IP  #ipmitool  lan print 1

更改IP   #ipmitool lan set 1 ipaddr  x.x.x.x

更改密碼 #ipmitool user list 1
              #ipmitool user set password 2 "123456"

ipmitool的SQL遠端控制伺服器  #ipmitool -I lanplus -H x.x.x.x  -U  root -P  password sol (de)activate

強制重啟(關閉或開啟)被監控伺服器     #ipmitool -I lanplus -H x.x.x.x -U root -P password chassis power reset (off on)

列出日誌  ipmitool sel list

快捷鍵      shift + ~ +.  是退出ipmi