服務器軟件故障是在服務器故障中占有比例最高的部份,約占70%,解決的過程必須更加深思熟慮。導致服務器出現軟件故障的原因有很多,最常見的是服務器BIOS版本太低、服務器的管理軟件或服務器的驅動程序有BUG、應用程序有沖突及人為造成的軟件故障。下面分別舉例說明各類軟件故障的維修方法。
有一台HP LH6000R服務器,配置為雙PIII XEON 700帶2M高速緩存的CPU、512M內存。開機後,系統日志報電壓調節模塊異常(VRM)的錯誤,報錯的信息是:“Voltage Regulator Module (VRM) over/under-voltage 2.88V/0V”。從表面來看,極有可能是服務器的電壓調節模塊或其它硬件出現故障,極容易導致維護人員認為是硬件故障。維護人員立刻使用其它LH6000R上的硬件來測試,發現即使使用新的配件,此服務器依然報VRM錯。就在一籌莫展的時候,維修工程師帶來了最新的CPU管理板(CPU Management Control)的固件(FIRMWARE),於是升級了CPU管理板塊的FIRMWARE後,服務器恢復立即正常。
FIRMWARE升級方法是,在服務器的NAVIGATOR(導航光盤)中提取CPU管理板(CMC)FIRMWARE的刷新程序,程序為FLASH.EXE,然後將從網上下載的LH6KC.BIN(CPU管理板的FIRMWARE)拷貝到一張DOS啟動盤上,用這張盤啟動服務器。然後在DOS下運行”FLASH /CMC A:LH6KC.BIN”,刷新完成後重新啟動服務器後即可。這種升級方法也適合刷新系統BIOS等,只是FLASH命令的參數不同以及更新FIRMWARE及BIOS文件名不同,參數請參考服務器的說明。
任何一款服務器的FIRMWARE及BIOS都會有不同的BUG,因為BUG在所難免,所以我們不能錯誤地認為服務器的BIOS程序就很完善,而應該經常更新服務器的FIRMWARE及BIOS,只是在升級之前應該小心謹慎,錯誤的升級方法會導致嚴重的後果。
目前流行的中高檔服務器都擁有強大的管理程序,為客戶提供了方便的管理途徑;服務器也擁有各種操作系統下的驅動程序,方便了客戶在各種操作系統中的使用。但是,世上任何一款程序都會有一些BUG,這些BUG將影響用戶使用。但是服務器廠商總是會在第一時間內開發出新的程序,客戶只需要及時更新這些程序就可以避免這類故障。
當服務器的軟件故障為此類時,表現的現象也不盡相同。一般來說,管理程序BUG會導致系統速度變慢,CPU占用率變高,無法正常使用某些功能等;驅動程序的BUG會導致死機、與某些軟件有沖突,磁盤工作不穩定等。查看管理程序是否出錯的最好的辦法就是在系統中首先禁止此類管理工具,再觀察服務器是否還是異常。由於管理工具是隨著系統啟動而啟動的,所以應首先避免它的啟動。以WINDOWS NT4為例,就首先在管理工具服務中禁用某些服務器軟件服務,再修改注冊表中的啟動項即可。如果是驅動程序有問題的話,就以安全模式進入系統,看是否正常。但是需要注意的是,在安全模式中,系統速度變慢是正常的(特別是磁盤I/O方面)。
服務器的管理人員就應該經常在服務器網站上下載最新的管理工具程序及驅動程序。這樣會減少很大一部份軟件故障的發生。
相比之下,軟件沖突造成的故障判斷比較困難,需要管理人員有比較豐富的經驗以及敏銳的觀察力。
曾經有一位朋友告訴我說,他有一台浪潮的服務器無法安裝SQL SERVER 2000,已經重裝N次NT了,排除是系統故障。而這唯一的服務器又將作為非常重要數據庫服務器,因此非常著急。於是我陪著朋友去了他的公司查看。這台服務器所在的機房是非常標准、完善的機房,我檢查了這台服務器的情況,發現並沒有硬件上的故障,於是排除了光驅讀盤力差的可能。但是,朋友刻的SQL SERVER 2000光盤引起了我的懷疑,我讓他拿出了正版的SQL SERVER安裝,結果還是不行。在安裝的過程中,沒有出現絲毫錯誤,可就是在運行的時候會自動退出,沒有任何提示。但是,我在管理工具中的事件查看器的系統日志中卻發現了一條信息:windata.exe導致一個無效的數據溢出。Windata是朋友自己編寫的一個程序,而且是隨操作系統啟動而啟動的程序。我立即結束掉這個進程後,再運行SQL一切正常。
對於此類軟件故障,操作員最好先查看有關的日志,看看系統中是否有可疑的進程。目前的服務器無論是高端還是低端,對於SQL等標准程序的支持是相當可靠的,所以排除的重點就是結束可疑進程。
還有一種軟件故障是人為因素造成的,它一般是人為誤操作(包括沒按操作流程的操作)、意外關機(包括電源突然不供電)或非正常關閉應用程序造成的。
人為誤操作因素只要加強管理都可以避免此類故障發生。在這裡就詳細說明意外關機或非正常關閉程序造成故障的方法。
正常關閉系統程序非常重要,尤其是WEB服務器。我的一個朋友就是因為沒有正常關閉系統程序而經歷了一次數據損壞甚至丟失的經歷。我的朋友是使用的HP web hosting server appliance,因此我向他提供了一些使用規則。
這些方法對於服務器的維護非常有效,主要包括了正確的關閉系統程序、怎樣避免數據丟失以及非正常關閉系統後的恢復方法。下面以我朋友的HP web hosting server appliance為例(使用的是UNIX,但思路對於其它操作系統均有效)。
正確關機的過程包括通過按動Power鍵來使系統斷電,你應該一直按住電源開關持續幾秒鐘才能使系統進入正常的關閉過程中。
另外,為了避免數據丟失,你應該按照如下的步驟操作:
· 經常備份Web Hosting Server Appliance的數據,可以通過網絡管理界面來完成。
· 安裝第二塊硬盤並與原來的硬盤設置成鏡像,
一旦Server Apliance未能正確關閉,並無法重起,請按如下操作恢復:
1. 當appliance已經斷電時,連接一條非modem的串口線(可在機盒中找到)到背面的控制口上。
2. 連接串口線的另一頭到一台運行Windows的PC的串口上。
3. 運行超級鏈接程序(HyperTerminal),並設置端口的參數為19200, n-8-1, Flow control - None. 你可以看到appliance的控制提示,並要求你輸入管理員口令。
4. 重起appliance,等到提示“LILO boot:”,按住Tab鍵5秒鐘,直到提示變為“boot:”。
5. 敲入"emergency"並回車。此時需要耐心等待幾分鐘。然後,登錄提示又將出現,此時,LCD屏又能正常工作了。
6. 在LCD屏上選擇一個隨機的密碼(此密碼只是用於緊急恢復時用)
翻至Defaults… 並按右箭頭鍵選中。
翻至Root Password…並按右箭頭鍵選中。
翻至Random 並按右箭頭鍵選中,會提示一個隨機產生的密碼。
記下此密碼。
翻至Yes並按右箭頭鍵選中,系統密碼會立刻更改。
7. 回到超級鏈接的控制屏,登錄appliance,用"root"用戶名和剛才的密碼,此時會出現“#”提示。
8. 為修復分區,請按如下方法操作:
對於sa1100,按順序輸入:
[…]#: fsck /dev/hda5
[…]#: fsck /dev/hda6
[…]#: fsck /dev/hda7
對於sa1120,按順序輸入:
[…]#: fsck /dev/sda5
[…]#: fsck /dev/sda6
[…]#: fsck /dev/sda7
當所有的分區都被修復後,應回到“#”提示符下。
9. 輸入“reboot”重新啟動系統。
如果系統仍無法啟動,請記錄下控制屏顯示的內容並求助技術支持。
對於服務器的軟件故障,只要平時管理員注意維護,應該是可以避免的。