游戲服務器可用性問題的簡單分析
作為信息化建設中硬件架構不可或缺的游戲服務器一直以來都備受關注,同時,游戲服務器的更新?lián)Q代也在見證著世界領先科技的發(fā)展歷程,不論是最初的16位處理,還是后來紅極一時的32位處理器,甚至包括如今同時支持的32位、64位的處理器以及即將到來的純64位處理器年代,游戲服務器雖然歷經(jīng)千變?nèi)f化,但有一點一直是永恒不變的主題,那就是游戲服務器的可用性。一臺游戲服務器如果連最基本的可用性都無法保障,它將無法登上時代的大舞臺。
究竟什么是游戲服務器的可用性?它包括哪些內(nèi)容?為什么如此受到大家的關注?下面我們將一一作答。
游戲服務器的可用性(Usability)其實就是要求游戲服務器具有高的可靠性、高穩(wěn)定性、易于管理維護,不要時不時死機、出故障,盡量少出現(xiàn)停機待修現(xiàn)象。因為多數(shù)情況下游戲服務器是要求連續(xù)不間斷工作的,所以它的性能穩(wěn)定、可靠是非常重要,如果是普通的PC死機了重啟,最多時會丟失一些本臺電腦上的文檔信息、少量的數(shù)據(jù),不會造成巨大的經(jīng)濟損失。但是如果游戲服務器出現(xiàn)死機的情況,后果將不堪設想。因為許多重要的數(shù)據(jù)、資料、信息、記錄都保存在游戲服務器上,尤其是許多網(wǎng)絡服務都在游戲服務器上運行,一旦游戲服務器發(fā)生故障,將會造成大量數(shù)據(jù)丟失、許多重要業(yè)務停頓,如代理上網(wǎng)、安全驗證、電子郵件服務等都將失效,如果是需要計費的網(wǎng)絡,將無法提供準確的計費數(shù)據(jù),不但無法實現(xiàn)安全運營,嚴重的將造成整個網(wǎng)絡的癱瘓,其損失是難以估量的。而易于管理和維護就不必說了,對于非專業(yè)的用戶而言能夠用最簡單的管理去維護網(wǎng)內(nèi)的所有設備是他們很開心的事情。所以綜上所述,高可靠性、高穩(wěn)定性和易于管理維護是游戲服務器可用性的具體體現(xiàn)。
但是僅僅提供了硬件不見得冗余是遠遠不夠的,還需要一些硬件在線診斷技術的配合,才能使游戲服務器的可用性發(fā)揮至極致。比如熱插拔技術,就是指有些部件可以在系統(tǒng)帶電的情況下對部件進行插、撥操作。這非常重要,因為當我們發(fā)現(xiàn)一些部件已損壞,但因為提供了硬件冗余,所以系統(tǒng)仍能繼續(xù)保持良好運行。我們需要把損壞的設備更換下來,如果沒有熱插拔技術,就必須關閉游戲服務器的電源才能進行,這樣就會造成人為的游戲服務器停機。隨意在航天聯(lián)志的游戲服務器產(chǎn)品,絕大多數(shù)都采用了支持硬件熱插拔的功能,比如在電源、硬盤、風扇、內(nèi)存、網(wǎng)卡等。
在這里我們還需要提到內(nèi)存糾錯技術----ChipKill內(nèi)存技術,這是一種新的ECC內(nèi)存保護標準。隨著基于Intel處理器架構的游戲服務器的CPU性能在以幾何級的倍數(shù)提高,而硬盤驅動器的性能同期只提高了5倍,因此為了獲得足夠的性能。游戲服務器需要大量的內(nèi)存來臨時保存在CPU上讀取的數(shù)據(jù),這樣大的數(shù)據(jù)訪問量就導致單一內(nèi)存芯片上每次訪問時通常要提供4(32位)或8(64位)比特以上的數(shù)據(jù)。一次性讀取這么多數(shù)據(jù),出現(xiàn)多位數(shù)據(jù)錯誤的可能性會大大地提高,而ECC又不能糾正雙比特以上的錯誤,這樣就很可能造成全部比特數(shù)據(jù)的丟失,系統(tǒng)就很快崩潰了。
但是在游戲服務器的硬件架構的設計上如何來保障可用性呢?關鍵是要做到硬件冗余和硬件在線診斷技術。其中常見的硬件冗余包括:磁盤冗余、電源冗余和風扇冗余,另外還有一些RAM冗余、PCI適配器冗余和網(wǎng)卡冗余等;而硬件在線診斷技術則需要包括:熱插拔技術、內(nèi)存保護技術、內(nèi)存檢查和糾錯技術、內(nèi)存鏡像技術、內(nèi)存熱添加/交換技術、活動PCI技術、活動診斷技術等。
硬件冗余比較容易理解,就是對硬件的組成部件采用冗余備份的方式來保障因部分部件損壞引起的硬件系統(tǒng)的癱瘓,但是出于對設備成本考慮,所以不能做所有部件的冗余,一般都是對其中一些關鍵部件的冗余,比如說磁盤冗余技術,就是人們常說的RAID(磁盤陣列)技術,即:把多塊獨立的硬盤(物理硬盤)按不同方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數(shù)據(jù)冗余的技術。在現(xiàn)在的游戲服務器產(chǎn)品中,基本上都采用了此項技術,支持RAID0、RAID1,使游戲服務器可以充分利用總線的帶寬完成數(shù)據(jù)的操作,顯著提高磁盤整體存取性能,最大限度的保證用戶數(shù)據(jù)的可用性。同時現(xiàn)在的游戲服務器產(chǎn)品有些已經(jīng)可以提供雙電源和雙風扇的冗余備份,還可以支持熱插拔技術,這就給電源和風扇創(chuàng)造了一個輕松負荷的工作狀態(tài),減少了因電源或風扇的損壞而出現(xiàn)的系統(tǒng)內(nèi)部問題,從根本上避免了游戲服務器的工作不穩(wěn)定和停機。 #p#page_title#e#
內(nèi)存鏡像有效避免了由于內(nèi)存故障而導致數(shù)據(jù)丟失。鏡像內(nèi)存和主內(nèi)存互成對角線分布,如果其中一個通道出現(xiàn)故障不能繼續(xù)工作,另一個通道仍然具有故障通道的內(nèi)存數(shù)據(jù),有效防止了由于內(nèi)存通道故障導致的數(shù)據(jù)丟失,極大提升了游戲服務器可靠性。鏡像內(nèi)存的容量要大于等于主內(nèi)存容量,當系統(tǒng)工作時,鏡像內(nèi)存不會被系統(tǒng)識別。因此在投資方面,做內(nèi)存鏡像數(shù)據(jù)保護的投資是沒有內(nèi)存保護功能的一倍。
內(nèi)存熱備(Sparing)進行內(nèi)存熱備時,做熱備份的內(nèi)存在正常情況下是不使用的,也就是說系統(tǒng)是看不到這部分內(nèi)存容量的。每個內(nèi)存通道中有一個DIMM不被使用,預留為熱備內(nèi)存。芯片組中設置有內(nèi)存校驗錯誤次數(shù)的閾值, 即每單位時間發(fā)生錯誤的次數(shù)。當工作內(nèi)存的故障次數(shù)達到這個“容錯閾值”,系統(tǒng)開始進行雙重寫動作,一個寫入主內(nèi)存,一個寫入熱備內(nèi)存,當系統(tǒng)檢測到兩個內(nèi)存數(shù)據(jù)一致后,熱備內(nèi)存就代替主內(nèi)存工作,故障內(nèi)存被禁用,這樣就完成了熱備內(nèi)存接替故障內(nèi)存工作的任務,有效避免了系統(tǒng)由于內(nèi)存故障而導致數(shù)據(jù)丟失或系統(tǒng)宕機。這個做熱備的內(nèi)存容量應大于等于所在通道的最大內(nèi)存條的容量,以滿足內(nèi)存數(shù)據(jù)遷移的最大容量需求。
現(xiàn)在一個游戲服務器上安裝的內(nèi)存逐漸增多,在系統(tǒng)中發(fā)生與內(nèi)存有關的錯誤的可能性也在增大。所以在保障游戲服務器產(chǎn)品可靠性上,不單單采用了Chipkill修復技術,還包括內(nèi)存保護、內(nèi)存鏡像和熱交換性能等一些純硬件方法,以及內(nèi)存熱添加技術等一些軟件方法全方位的保障設備的可靠性,使整個系統(tǒng)的可用性得到了最大的體現(xiàn)。
內(nèi)存鏡像是將內(nèi)存數(shù)據(jù)做兩個拷貝,分別放在主內(nèi)存和鏡像內(nèi)存中。系統(tǒng)工作時會向兩個內(nèi)存中同時寫入數(shù)據(jù),因此使得內(nèi)存數(shù)據(jù)有兩套完整的備份。由于采用通道間交叉鏡像的方式,所以每個通道都有一套完整的內(nèi)存數(shù)據(jù)拷貝。
在系統(tǒng)芯片組中設置有 “容錯閾值”。如果任意內(nèi)存達到了“容錯閾值”,其所在通道就被標示出來,另一個通道單獨工作。但仍然保持雙通道的內(nèi)存帶寬。
眾所周知,系統(tǒng)過熱是影響游戲服務器穩(wěn)定最主要的原因,怎樣保證了游戲服務器在惡劣環(huán)境下長時間滿負荷運轉的溫度正常?比如說采用了前進風的方式,與側進風的方式不同,這種進風方式保證了用戶實際應用過程中,讓安裝在機架上的游戲服務器能夠有完全通暢的風源。冗余風扇只是提供了保證當一個散熱風扇出現(xiàn)故障不能起到散熱作用時另一個風扇會馬上工作,保證了一定的散熱能力。
現(xiàn)在有些游戲服務器產(chǎn)品更增加了獨特的導風通路,可以集中并控制風流的方向。散熱問題的解決在提高了系統(tǒng)的可靠性的同時,有效延長部件的壽命。