2007年6月28日 星期四

Remote Console/Power Management over IPMI Howto (Part 2)

接下來說明如何進行remote management的設定.

在Part 1中有提到, 有多種方法可以access這個BMC, 在這邊我們以遠端管理最常用到的LAN interface為例子進行設定.

以IBM的機器(e326m, x336, x3650都是這樣)為例, 他的BMC和LAN interface是共用onboard LAN port 1的硬體線路, 但是MAC address不同, 且使用的是OOB(Out Of Band)頻寬(註).

註: 據說明書表示, 幾乎不會影響到系統網卡頻寬.

而在作業系統眼中, BMC的這個LAN interface就像是另外一台電腦一樣, 和系統抓到的網路卡(eth0, e1000g0, em0 whatever...)毫無關係, 所以欲變更LAN interface的ip address只能透過ipmitool(而非ifconfig).

但是在設定LAN interface的ip address之前, 我們必須先決定哪些使用者以及哪些權限才可以透過LAN interface進行系統管理工作, 不然沒考慮清楚一設定下去, 搞不好整個internet都可以沒事把這台機器開開關關 XD

以IBM的機器為例, 一開始有四個使用者, 分別id是1,2,3,4, 除了第一個名稱是無法變更以外, 其他都可以變更名稱. 接下來對於使用者我們可以設定該使用者的權限(註)以及密碼, 以及他可以從哪個interface登入, 以下是一個簡單的shell script, 透過他可以一次設好BMC的ip address與可使用user的user password.

註:權限的部分分為五種, OEM, ADMIN, OPERATOR, USER, CALLBACK, 詳細權限差異各家廠商不大一樣, 要查一下.

#!/bin/sh
IPMI=/usr/bin/ipmitool
# 欲設定的BMC ip address, private ip為佳
IPADDR=1.2.3.4
MASK=255.255.255.0
DEFGW_IP=0.0.0.0
# LANCH代表對BMC來說哪一個channel代表著LAN interface, 通常是channel 1.
LANCH=1
$IPMI lan set $LANCH access on
$IPMI lan set $LANCH ipaddr $IPADDR
$IPMI lan set $LANCH netmask $MASK
$IPMI lan set $LANCH defgw ipaddr $DEFGW_IP
# 這個channel預設的user name
$IPMI lan set $LANCH user root
$IPMI lan set $LANCH arp respond on
# 所有權限層級都必須要有password才能透過LAN channel登入
$IPMI lan set $LANCH auth CALLBACK PASSWORD
$IPMI lan set $LANCH auth USER PASSWORD
$IPMI lan set $LANCH auth OPERATOR PASSWORD
$IPMI lan set $LANCH auth ADMINSTRATOR PASSWORD
$IPMI lan print $LANCH
# 設定user id 2的使用者名稱為root
$IPMI user set name 2 root
# 除了root以外的user都disable掉
$IPMI user disable 1
$IPMI user enable 2
$IPMI user disable 3
$IPMI user disable 4
# 設定root的password
$IPMI user set password 2
# 開放這個channel的access
$IPMI channel getaccess $LANCH

接下來執行完這個shell script後, 我們可以用print來看是否設定完成:

debian:~# ipmitool lan print
Set in Progress : Set In Progress
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback : PASSWORD
: User : PASSWORD
: Operator : PASSWORD
: Admin : PASSWORD
: OEM :
IP Address Source : Static Address
IP Address : 1.2.3.4
Subnet Mask : 255.255.255.0
MAC Address : xx:xx:xx:xx:xx:xx
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
Cipher Suite Priv Max : Not Available
debian:~#

如果確認ip address已經上去了的話, 就可以從另外一台機器A測試是否可以遠端下ipmi命令了(註).

註: 當然, 該台機器A也要有裝ipmitool(但是不一定具有BMC, 因他的作用只是透過網路連到其他機器的BMC下指令)以及擁有和BMC相同網段的ip address方能連線.

A:~$ ipmitool -I lan -H 1.2.3.4 -U root sdr
Password:
Ambient Temp | 21 degrees C | ok
Fan 1 Tach | 8475 RPM | ok
Fan 2 Tach | 8625 RPM | ok
Fan 3 Tach | 8775 RPM | ok
[以下省略]

接下來就是方便的部分了, 假設某天很不幸的, 機器因為不明原因死當了, 但是同網段的機器A仍然活著, 此時我們就可以透過ipmitool來把死掉的機器重開機:

A:~$ ipmitool -I lan -H 1.2.3.4 -U root power reset
Password:
A:~$

這樣就不用跑進機房了~ (養樂多)

Read More...

第一發(?)

實在是懶得自己架個WP了,
所以既然有現成的就用現成的吧~ (養樂多)

真要說裡面有甚麼的話, 大概就是:

1. Alpha (DEC Alpha, 21{0,1,2,3}64, or EV{4,5,6,7} series)
2. ACG(G比較少XD)
3. 其他servers
4. 抱怨文
5. 其他

(實在是懶得分類啊~~~)

Read More...

Remote Console/Power Management over IPMI Howto (Part 1)

顧名思義, 就是用IPMI來做remote console/開關的奇技淫巧(?)教學~

一開始先來釐清點名詞:

BMC(Baseboard Management Controller):
這是主機板上面的一塊小板子, 主要功能是提供power control等remote management功能.

IPMI(Intelligent Platform Management Interface):
用來進行這些management tasks的介面, 一般常用的介面有SI(System interface, 具體而言就是 /dev/ipmi0之流的東西), Serial port, LAN(之後remote management就是靠這個介面)

SOL(Serial Over LAN):
這是一個用BMC把主機板上面的Serial port訊號透過LAN interface轉送的手段, 主要的功能是可以遠端調整BIOS或是直接檢視console.

那麼現在進入正題, 首先我們得先把IPMI設定好, 一般來說主機板上面的BIOS可以提供設定BMC介面的選項, 像是IBM的x336, x3655等等, 不過也有不支援的, 像是e326m, 這時候比較方便的方式(註)就是使用/dev/ipmi0之類的介面設定BMC的各項參數了.

註: 其實IBM自己有放出e326m的IPMI configuration CDROM啦, 只是總是比較麻煩點就是了.

/dev/ipmi0這個介面必須要work, 則kernel必須要支援.
以linux-2.6系列來說, IPMI相關的選項會在:

"Device Drivers"
=>"Character devices"
=>"IPMI"
=>下面一坨東西,

基本上懶惰的話, 就全選吧~

接下來就是重編kernel, 重開機祈禱新的kernel不會直接炸給你看.....(註)

註:如果你是用modules的話,下 modprobe ipmi_si 應該就會把必要的module通通load進來了.

假設很幸運的重新開機之後, 應該在 /proc/devices裡面會找到相關的entry:

debian:~# cat /proc/devices |grep ipmi
254 ipmidev
debian:~#

可以看出ipmi用的major是254(註), 就能依照此entry建立device node:

debian:/dev# ./MAKEDEV ipmikcs
debian:/dev# mknod /dev/ipmi0 c 254 0

註: 這個major number也有可能是252, 253....等,視/proc/devices裡面的數字(或是你要說kernel的心情也是可以)而定.

接下來就安裝ipmitool, 裝完之後可以先來測個溫度以示成功(註):

debian:~# ipmitool sdr
Ambient Temp | 20 degrees C | ok
Fan 1 Tach | 8400 RPM | ok
Fan 2 Tach | 8475 RPM | ok
Fan 3 Tach | 8775 RPM | ok
Fan 4a Tach | 6000 RPM | ok
Fan 4b Tach | 8100 RPM | ok
Fan 5a Tach | 5775 RPM | ok
Fan 5b Tach | 8250 RPM | ok
Fan 6a Tach | 5925 RPM | ok
Fan 6b Tach | 8100 RPM | ok
Fan 7a Tach | 5775 RPM | ok
Fan 7b Tach | 8100 RPM | ok
CPU 1 Temp | 49 degrees C | ok
CPU 2 Temp | 51 degrees C | ok
[以下一長串省略]

註: 由於每台機器設計不一樣,所以顯示出來的項目可能不大一樣,不過這無傷大雅就是.

Part 1就先寫到這裡吧, 之後的部分會比較複雜點 KD

Read More...