發新話題

KVM,遠端鍵盤、視頻、滑鼠控制實現Remote KVM

KVM,遠端鍵盤、視頻、滑鼠控制實現Remote KVM

今天看了chinaunix的2009年系統架構師的監控PPT,裡面提到可以遠端修改bios設置的IPMI技術,這個需要伺服器主機板才有選項,還有KVM,遠端鍵盤、視頻、滑鼠控制,目前自己還不需要用上,就先知道有這回事....今天無意中在Intel Server Board的BIOS中發現了Remote KVM這個玩意兒,才發現原來遠端系統管理還可以這樣玩。:)以往為了遠端操作伺服器單板,都是通過SSH或者X11進行遠端登入,但最近在進行 Linux內核方面的實驗,一旦啟動失敗了,往往就只得「奔赴現場」進行處理了…… 畢竟基於軟體的遠端登入協定一般都不能脫離作業系統而存在。但Remote KVM就不同了,它是基於硬體的遠端系統管理,完全由BIOS實現。其實它的原理是很簡單的:通過BIOS將Keybord、Video、Mouse三大核心 輸入輸出設備進行重定向,以便遠端進行底層級別的管理任務,比如修改BIOS、安裝作業系統等。在網上查了一下相關的資料,原來Intel的實現是將KVM重定向到串口,然後通過一塊專用的Remote Management Module單板將串口的資料進行彙聚、編解碼並通過TCP/IP提供給遠端的終端訪問。說到底,Intel還是很有商業頭腦的,畢竟這麼一塊RMM單板 就可以賣$XXX了……我當然不能為了自己的懶惰而向Boss申購一塊RMM,那麼只好自己DIY一個「土」一點的Remote KVM Server了。實驗發現,在文本顯示模式下,KVM重定向到串口的資料流程基本是符合VT100。於是一個初步的方案就這樣形成了:用一台Win2000 Server的主機將串口連接到Intel Server Board上,然後開啟終端服務。於是,只要在辦公室的電腦上用RDP用戶端連接上Win2000伺服器,然後在遠端會話中運行「超級終端」,就可以初步 實現Remote KVM。

試驗了一下,基本的功能算是達到了,但顯示模式僅僅支援最基本的滾屏式文字模式,如果想遠端進入BIOS設置介面的話,就什麼內容也看不到。實 際上在單板上是進入BIOS設置,但全屏式文字模式在目前這個簡陋的方案裡還支援不了,所以也談不上操作了。另外,雖然在進入圖形介面的Grub後,也看 不到任何內容,但卻可以完全「盲目」的用方向鍵選擇需要啟動的項,這樣就再也不怕試驗用的Linux內核掛掉了。配合IPMI協定中的遠端重定指令,終於 可以完全坐鎮辦公室,運籌幃幄與千里之外了在網上查閱了各種相關資料後,才知道上次所實現的串口終端功能的正式學名叫做「SREDIR (Serial Redirection,串口重定向)」,它是AMI在其最新的AMI BIOS 8系列中引入的一項新技術,可以看作是一個簡化版的「Remote KVM」。主要實現了對字元介面顯示輸出及鍵盤輸入的重定向到串口,它對於伺服器群或者Blade Server來說是非常實用的功能。

下麵就讓我來介紹一下如何利用這項技術實現從POST到Linux的全程串口控制。
(1)首先,需要接上普通的終端,並在AMI BIOS的CMOS設置中「Advanced Settings」頁下打開「Remote Access」的選項(如果你的BIOS是預設開啟該選項的,那麼你甚至不必準備一套普通的終端,直接從下一步開始)。

根據實際情況配置好埠、參數及終端的模式:
「Redirection after BIOS POST」應選擇「Always」,以保證從POST、Boot Loader到Linux的平滑過渡;
「Terminal Type」建議選擇「ANSI」,這樣顯示效果最接近實際終端,也能獲得最大的相容性;
「VT-UTF8 Combo Key Support」建議打開,這樣可以使用擴展的F5-F12映射鍵,這或許在進入某些協力廠商的Addon ROM時需要用到。

(2)完成上述設置後就可以在另一台電腦上通過串口線連接至我們需要控制的伺服器,然後打開你的終端程式(Windows自帶的「超級終端」即 可),匹配好埠參數。一些就緒後,重定伺服器,順利的話,你就可以從終端程式裡看到BIOS自檢過程的顯示資訊了。如果沒有任何顯示或者出現雜亂的信 息,那麼請檢查埠及參數是否匹配。

(3)先讓我們來試試從遠端終端機進入CMOS設置,「Del」是通常進入的CMOS設置介面的熱鍵。但問題就在這裡,終端程式的鍵位映射中一般 是沒有Del鍵的,你在終端按下Del鍵實際傳到串口的可能就是Ctrl+H或者其它某個(組合)鍵了。那麼如何才能進入CMOS設置介面呢?按照AMI 官方文檔的說明是可以用另一個替代熱鍵F4來達到相同的作用,但我實際實驗發現在我們這塊Intel的伺服器板上按F4卻沒有任何效果…… 後來折騰了半天,總算讓我找到了另一個替代的辦法:在「超級終端」的「連接屬性」設置中有一項「Backspace鍵發送」,把它改為「Del」。這樣在 POST階段按下終端的Backspace鍵就可以成功進入CMOS設置介面了。:)

(4)接下來,我們要進一步實現Boot Loader的串口控制。

如果你的Boot Loader是字元介面的,而且前面CMOS設置中「Redirection after BIOS POST」選擇了「Always」,那麼通常你通常可以直接在POST結束後從終端上看到Boot Loader介面了。倘若你不幸和我一樣用了圖形介面的GRUB,那麼此時從終端上是看不到任何顯示的(但是你仍然可以「盲打」)。

為瞭解決這個問題,我們需要修改GRUB的設定檔(通常是/boot/grub/menu.lst),註釋掉「gfxmenu」所在的一行。這樣就可以讓GRUB回歸到傳統的字元介面了。

如果到這裡你還不能從終端看到Boot Loader的話,那麼可能是你的Boot Loader與BIOS的Remote Access存在衝突。你需要手動在GRUB的設定檔中添加下麵幾行:
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1terminal serial
註:unit參數是串口的序號,0代表COM1,1代表COM2,…… 其它參數需要與CMOS中的配置及終端配置保持一致。

(5)而後,我們還必須解決Linux啟動過程的串口控制,否則Boot Loader開始載入Linux之後我們就徹底從串口失去控制權了。

首先,需要從Boot Loader中去掉任何Splash畫面的設置,比如GRUB的設定檔中包含「splashimage」的那一行。然後,在內核參數中增加以下內容:
console=tty0 console=ttyS0,9600n8
其中,ttyS0代表COM1口,如果你使用的是COM2,那麼需要修改為ttyS1。後面的9600n8即串口的參數,應與前述設置保存一致。

註:多個console參數存在時,只有最後一個console指定的終端具有交互權,其它終端上只是同步輸出啟動階段的資訊。所以這裡一定要將串口作為最後一個console參數,我們才能從這裡登錄。

OK,萬事俱備,讓我們從串口登錄到Linux吧。怎麼?你的root帳號無法登錄?對了,還有最後一點忘了說。預設情況下,login程式沒 有把串口列為安全終端,也就是說,你無法從串口登錄root帳號。那麼,如何讓login建立對串口的信任呢?只需要簡單的修改一下/etc /securetty檔,增加一行你的串口設備名,如「ttyS0」即可。

以上,我們就完成了全部串口控制所需的步驟,結合上次例子中提到的終端服務,即可輕鬆實現從POST到Linux的一體化遠端控制了。

參考資料:「AMI BIOS 8 – Serial Redirection」: http://www.ami.com/support/doc/AMIBIOS8-SerialRedirection.pdf

----------------------------------------------------------------------------
對IT管理者來說,有些工具是能夠幫我們減輕工作量,尤其是在人力精簡及時間成本飆高的現在來說,為自己建造一個良好的工作環境更為重要。我先前也寫過《遠端登入的優缺點》及《遠端連線的黑暗技》,今天主要是來看看KVM和遠端連線的應用層面差在什麼地方,並不是要比較KVM和遠端連線那個好。更何況這類工具已經朝向全面化的發展,例如KVM原本是用在限定的範圍內(LAB或機房內),現在也發展出KVM over IP的相關硬體,如此一來也就突破了原有的思維。

這兩種設備我都有使用(一人的命運),有其便利及不便之處,舉例來說:
傳統KVM的優點:(這裡先不討論over IP的部份)
1.方便快速切換於各主機之間。
2.無需安裝其它軟體或啟動服務。
3.不受網路頻寬所限制。
4.有較大的空間可以使用。(減少輸出/入設備)

遠端連線的優點:(Telnet/SSH/VNC/遠端桌面連線...等)
1.不受線材長度的限制。
2.減少往返的時間成本。
3.不需增添硬體。
以上的優點,只要使用過的人都會知道,如果真要比較應用層面的話,KVM應該要跟VNC或是遠端桌面連線來比,因為它們的使用訴求相近。

如果拿KVM跟Telnet/SSH這種文字介面的遠端連線相比,就有失偏頗,畢竟KVM跟VNC這一類工具的主要是能夠「所見即所得」(某個商業軟體的廣告詞),而SSH這一類的應用,大多是透過指令的方式來維護主機使用。我個人使用的經驗裡,最能突顯KVM的好處,應該就是在機架櫃內的應用,因為機架櫃內的空間極其珍貴,光是主機和線材(電力、電信及網路)就足以塞滿機架櫃的內部,如果每台主機各自有一套螢幕、滑鼠和鍵盤的話,一個機架櫃中只要兩台主機以上,就可以把你的機架櫃塞滿,更何況還有繼電或其它資訊設備,一般也說也會置放在機架櫃內便於控管。所以KVM切換器在這種有安全/人員控管的環境內,就能夠看出它的功效,雖然KVM的線材通常都不會超過五公尺(超過20公尺需訊號加強器),但是在限定大小的機房內,勉強還算合用,若是專業級的大型機房則另當別論。

最能看見遠端連線的優點在那呢?
我個人覺得在部門間的主機連線或母公司對子公司的主機管理,最能夠看出遠端連線的優點,不過遠端連線還是得透過網路做為媒介,除了安全性的隱憂之外,最怕頻寬負載過重或人員設定錯誤這兩件事。

頻寬負載過重:
在部門間的主機連線比較沒有頻寬負載過重的問題(區網的架構下),但是在公司間就得面臨這部份的挑戰,除非原本就有特別規畫一條專線僅供遠端連線使用,否則以現在公司間的資料量來說,頂多只能使用文字介面的遠端連線(Telnet/SSH)來更動主機設定,要用到VNC/遠端桌面連線就顯得有點吃力。

人員設定錯誤:
為什麼會怕人員設定錯誤呢?因為你不是真的在電腦面前,如果你透過遠端連線來修改主機設定,一個錯手就可能造成極大的影響,尤其是與防火牆有關的設定(例:LINUX上iptables的設定錯誤,把自己也拒於門外),一個設定錯誤,就得自己親自跑一趟現場,如果是部門之間,頂多練個腿力,如果是母/子公司之間,就真的是吃力不討好的一件事,嚴重一點還有可能會掉飯碗。

雖然KVM和遠端連線各有利弊,對一般人來說,要多花筆錢去買KVM的硬體設備(至少得1K以上),其實是件頗難的事情,所以遠端連線的使用者應該比使用KVM的人來得多吧!以筆者的親身經歷來說,當初在家自學時,家中弄了個小型區網來練習,也是透過遠端連線來操控三~四台電腦,除了能同步查閱參考資料之外,也能避免在家裡東奔西跑,而且在區網內的安全性顧慮比較小,如果想要自學的人也可以參考這種模式囉!(雖然也能利用虛擬化技術來完成,但是筆者還是喜歡一台主機做一件事就好,也比較能夠模擬真實的情境)

KVM和遠端連線,只能說:「工具人人會用,各有巧妙不同」。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。