筆者所述項目比較簡單:2臺聯想3650 M5的 主 機(每主機配置1個CPU、128GB 內存、單口8GB FC HBA接 口 卡)、1臺IBM V3500存儲,每臺主機安裝了VMware ESXi 6.0.0 U2的版本,有6個業務虛擬機、1個vCenter Server虛擬機用于管理。拓撲結構如圖1所示。

圖1 某單位虛擬化拓撲圖
在項目的初期,安裝配置ESXi主機、劃分IBM V3500存儲、創建虛擬機后,各個業務虛擬機對外提供服務,系統一切正常。在全部業務虛擬機正常運行兩天后,觀察到主機內存使用率超過60%接近70%時,對客戶建議將每臺服務器的內存擴充到256GB,甲方技術主管在匯報領導后,同意了擴充內存的要求。但是,就是這個擴充內存,引起了后續一系列的故障。
說明:使用vSphere Client登錄vCenter Server,在左側導航器中選中群集,在右側“主機”選項卡中,可以看每個主機配置的內存、已經使用內存的百分比。圖2是每臺主機配置到256GB之后的截圖,當時128GB截圖沒有保存。這是項目正常之后的截圖,從圖中可以看出,系統中所有虛擬機使用內存大約170GB,在每臺主機只有128GB的情況下,使用內存是66%,在每臺主機擴充到256GB后,使用內存33%。
聯想3650 M5服務器,支持 2個 CPU,每個 CPU有12個內存插槽,每個內存插槽最大支持單條64GB內存。故每個CPU最大支持64×12=768GB內存。
在這個項目中,每臺聯想3650 M5配置了8條16GB的內存,只剩余4個插槽(當前主機只配置了一個CPU),如果要擴充到256GB內存,可以再購買4條32GB或2條64GB內存,進行“混插”。但這樣客戶后期將不能繼續進行內存擴充,這樣不是好的升級方案。筆者給出的方案是,建議為每臺服務器配置4條64GB的內存,拆下來的內存折舊或內存置換。聯系了長期為我們提供內存的公司,對方答應可以4條16GB換成1條64GB的內存,這樣對三方都有利。
8條64GB的內存到位之后,為每臺服務器更換內存。內存更換過程中,可以將所有虛擬機暫時遷移到另一臺主機,這樣業務不會中斷。

圖2 主機內存、CPU使用率

圖3 聯想3650 M5內存安裝順序

圖4 當前安裝了8條16GB內存截圖
服務器安裝內存是有“講究”的,必須按照指定的位置進行安裝。每臺服務器的蓋板上都有內存的安裝順序,例如聯想3650 M5內存安裝順序如圖3所示。
單個CPU的內存安裝順序是 1,4,9,12,2,5,8,11,3,6,7,10 ;雙 CPU 的安裝順序依次是 1,13,4,16,9,21,12,24,2,14,5,17,8,20,11,23,3,15,6,18,7,19,10,22。 例如當前主機安裝了8條16GB內存,則需要安裝在 1,4,9,12,2,5,8,11 位置。安裝之后,在開機之前可以在IMM中看到安裝的內存信息、內存是否正常,如圖4所示。
但是,將4條64GB的內存插上之后,服務器開機無顯示,在IMM中也沒有檢測到內存。
后來一條一條內存安裝,服務器也是檢測不到內存。沒有辦法,將原來的8條16GB內存插回主機。
聯系內存經銷商之后,更換了鎂光的單條64GB的內存,安裝成功(內存往返又是三、五天的時間)。說明,此次不能用的單條64GB內存,筆者在DELL R720XD主機上使用是沒有問題的。
但是,關鍵問題是這個“但是”。在為第一臺主機順利的安裝更換了內存之后,為第二臺主機安裝內存的時候出了大問題。在插上這4條64GB內存之后,主機無法開機,在IMM檢測,提示系統出現嚴重故障(System Critical)(如圖5)。
經過聯系聯想的售后,工程師說主板壞了,這下我們就“暈”了,這服務器也太不“結實”了吧?沒辦法,只能等售后工程師上門更換主板了。
所幸我們離北京較近,售后第二天上門更換新的主板之后,故障依舊。還是工程師有經驗,換上原來的16GB內存之后,服務器可以開機,一切正常。但換上這4條內存之后還是出現如圖5所示的故障。之后,工程師采用一條一條安裝64GB內存,檢測到其中的一條有問題,后來安裝了3條64GB內存。
這樣我們就更郁悶了,一條內存故障就能讓服務器開不了機,以后如果內存萬一壞了一條是不是也會出同樣的故障呢?這些問題我們就先不考慮了。之后又等了幾天,廠商發來了新內存,插上之后4條內存全部認到。
本以為項目進行到這就完成了(當時是9月30號),但是(該死的“但是”又來了)上班之后問題又來了……
10月5號該單位第一天上班,客戶反映虛擬機ERP系統慢。
更換內存時筆者不在現場,是公司其他工程師實施的。筆者遠程登錄,在檢查的過程中,發現其中一臺ESXi12主機(IP地址172.16.6.12)的存儲連接斷開,在“清單”中有一個虛擬機變灰(如圖6),但此時使用遠程桌面是可以登錄這個虛擬機的。

圖5 System故障

圖6 沒有檢測到共享存儲

圖7 第二臺主機存儲變灰
此時在左側選中172.16.6.12這臺主機(ESXi12),“配置→存儲”中共享存儲已經變灰不可訪問(如圖7)。
另一個主機ESXi11(IP地址為172.16.6.11)存儲正常,但fc-data02顯示的可用容量為0。
登錄IBM V3500存儲,在存儲中檢查到一切正常。
在重新掃描存儲沒有反應之后,我重新啟動故障主機。正常情況下,主機在5~8分鐘之后會上線,但等了有30分鐘,這臺重新啟動的主機也沒有上線,Ping這臺主機的IP地址也不通。這時候我就有點著急了,這臺沒出現問題的服務器也出問題了(換主板的是另一臺服務器)。馬上聯系公司的人、聯系客戶,說服務器出了問題,需要馬上趕過去。
趕到現場之后,發現我遠程重新啟動、出問題的那臺那臺服務器已經“正?!绷耍杏X虛擬機系統還是有點慢。之后重新啟動這臺主機,終于發現了問題,就是這臺服務器啟動特別慢。BIOS自檢到系統啟動這一環節還算正常,但從出現ESXi的界面之后到進入系統,時間非常的長。
在進入ESXi界面之后,分別在“nfs41client loaded successfully”(如圖8)、“Running sfcbdwatchdog start”(如圖9)各停留大約30多分鐘。
因為另一臺主機更換過主板與內存,這臺主機只更換過內存,而在換內存之前系統正常,初步判斷可能是更換單條64GB內存引起的。但網絡中另一臺服務器也是安裝了4條64GB的內存,這臺主機正常,忘記說了,另一臺正常的主機更換過主板。檢查這兩個主機,發現正常運行的主機的固件比較新(ESXi11的主機),因為這臺主機換了一塊新主板。之后我為出故障的主機(ESXi12)刷新固件到同版本,系統啟動變快了一點,但仍然沒有解決問題(還是在圖8、圖9停留很長時間)。這時已經是晚上8點多了,先暫時不解決了,回去想想換個思路。
第二天一早來到客戶現場,參考聯想工程師的方法,一條一條地“試”內存。在一條一條“試”內存的過程中,插上每條內存啟動速度都很快,從出現圖8、圖9所示的ESXi的啟動界面,幾分鐘就進入系統出現ESXi的控制臺頁面(出現IP地址等信息),但試過內存沒問題之后,將所有內存都插上,系統啟動就又變慢了。

圖8 在此停留半小時

圖9 在此停留半小時
之后,換上原來拆下來的單條16GB的內存(當時內存還沒有發回廠家),ESXi啟動時間變為半小時,但ESXi主機反應仍然較慢。
這樣時間就又過去了2個多小時,問題還沒有解決,能想的都想過了,能嘗試的都嘗試過了,那么問題出在那呢?
為什么插上單條64GB內存很快,內存全部插上就變慢呢?這時我注意到了一個“細節”,在插單條64GB內存的時候,為了加快測試速度,我沒有插網線和存儲光纖(每次關機拔內存都要斷電,要把服務器從機柜中拉出來,后面的網線、光纖也是拔下的)。然后我思考,網絡問題不會引起ESXi啟動慢,那么問題就可能出在服務器與存儲的連接光纖上!因為每臺服務器只配了一塊單口的FC-HBA接口卡,服務器與存儲只有一條光纖連接,沒有冗余。將出問題的這臺服務器更換光纖之后,重新啟動服務器,啟動速度正常(大約不到5分鐘就進入了ESXi的控制臺界面),至此問題解決。
事后分析,因為前幾天反復更換內存、為服務器更換主板,反復為服務器加電、斷開、從機柜中拉出服務器,可能碰到了ESXi12這臺服務器的光纖,導致光纖出故障,但光纖又沒有完全斷,可能處于“時通時斷”的狀況,這樣服務器在連接到存儲時,會反復嘗試,或者有錯誤的數據包需要糾錯。如果光纖完全斷開,服務器檢測不到就會跳過連接存儲,反而是這種“時通時斷”的連接,導致服務器反復嘗試,增加了服務器的啟動時間。