引言: 由于中心機房的UPS故障,導致服務器突然掉電。電力恢復供應后,開啟VMware ESXi 5.5主機,用vSphere Client登錄該主機后,發(fā)現(xiàn)里面的虛擬服務器一臺都不見了。經(jīng)過一天的排查,終于找到虛擬機不見的原因,并成功解決了問題。
由于中心機房的UPS故障,導致服務器突然掉電。電力恢復供應后,開啟VMware ESXi 5.5主機,用vSphere Client登錄該主機后,發(fā)現(xiàn)里面的虛擬服務器一臺都不見了,著實驚出了冷汗。單位主要的一些服務以及數(shù)據(jù)都部署在了虛擬機上,虛擬機找不回來,不但意味著無法提供正常的網(wǎng)絡服務,連數(shù)據(jù)都可能丟了。經(jīng)過一天的排查以及資料查閱,終于找到虛擬機不見的原因,并成功解決了問題。
為了進行資源整合減少服務器數(shù)量,前一段時間對中心機房的服務器進行了虛擬化,在一臺DELL PowerEdge R720(128G內(nèi)存)服務器上部署了VMware ESXi 5.5,兩 臺DELL MD3600F光纖通道存儲陣列通過光纖連接服務器,在ESXi上兩臺存儲陣列分別為一個數(shù)據(jù)存儲盤,并建立了7臺虛擬機為單位提供各種網(wǎng)絡服務,虛擬機的數(shù)據(jù)都是存放在磁盤陣列上。
圖1 存儲標識中沒有storage1、storage2、data
圖2 磁盤陣列列表,每個設備名稱對應一個邏輯盤
最近,一次UPS故障引起斷電后,重新開啟服務器和存儲陣列,用vSphere Client登錄ESXi主機后,發(fā)現(xiàn)該主機下的虛擬機列表都變成灰色了,無法開機,選中任何一臺虛擬機都無法進行任何操作。
在vSphere Client中選擇當前主機進入配置——存儲器,這里有兩個標簽“數(shù)據(jù)存儲”和“設備”,發(fā)現(xiàn)“數(shù)據(jù)存儲”下只有本機存儲標識database1,沒有兩個磁盤陣列的存儲標識storage1和 storage2(如圖1)。但是在“設備”里有兩個磁盤陣列的列表(如圖2),其中設備名稱尾號為“79”的應該是磁盤陣列1的邏輯盤,標識應該是storage1,名稱尾號為“3d”的應該是磁盤陣列2的邏輯盤,標識應該是storage2,名稱尾號為“49”的是磁盤陣列1上分出來的一個邏輯盤,用來做測試,無有用數(shù)據(jù),標識為data。正常情況下每個設備都對應著一個數(shù)據(jù)存儲的標識,供ESXi存儲數(shù)據(jù)。
根據(jù)上述現(xiàn)象,可以判斷出,兩個磁盤陣列的設備是存在的,但是ESXi無法認出該設備的分區(qū),沒法把它當做一個現(xiàn)有的存儲來使用,而虛擬機的文件都存放在磁盤陣列上,因此現(xiàn)在主機里的虛擬機都找不到它們對應的虛擬機文件,才會顯示灰色,無法操作。在對磁盤陣列、光纖、光纖接口等硬件設備進行排查后,發(fā)現(xiàn)都沒有問題。最后我們注意到,有數(shù)據(jù)存儲標識的服務器本機存儲在設備標簽下有分區(qū)信息顯示(如圖3),而名稱尾號為“49”的設備則沒有主分區(qū)信息顯示。
由此推斷,ESXi無法認出磁盤陣列提供的邏輯盤,是由于停電導致分區(qū)表丟失,ESXi用作數(shù)據(jù)存儲的分區(qū)一般是VMFS分區(qū),即VMFS分區(qū)表丟失導致磁盤無法被ESXi認出,無法讀取虛擬機文件,引起虛擬機的丟失。
首要任務就是修復邏輯盤的VMFS分區(qū)表,以便ESXi能夠讀取邏輯盤,找到虛擬機文件。
圖3 服務器本機存儲的分區(qū)信息
一般情況下,存儲標識沒有顯示的話,通過vSphere Client登錄主機后,選擇主機→配置→存儲器,在“數(shù)據(jù)存儲”標簽下,用“全部重新掃描”和“添加存儲器”來找回沒有顯示標識的設備和加載新的存儲器。但是在VMFS分區(qū)表丟失的情況下,進行重新掃描沒有任何作用,而用“添加存儲器”確實可以發(fā)現(xiàn)兩個磁盤陣列的邏輯盤,但是下一步系統(tǒng)會提示這是全新的存儲器,要進行格式化等操作。這可萬萬不行,虛擬機的文件都在里面,只能另想方法了。
經(jīng)過查閱資料和研究,決定使用partedutil命令來對VMFS分區(qū)表進行修復。首先用vSphere Client登錄VMware ESXi 5.5主 機,進入配置→存儲器,查看系統(tǒng)的數(shù)據(jù)存儲和設備,設備名稱是待一會要用到的。用SSH2登錄VMware ESXi 5.5主機,使用命令對磁盤進行操作,SSH服務可以在vSphere Client中的配置→安全配置文件里進行開啟,在此不累述。在以下我們以修復設備圖2中的邏輯盤naa.6b083fe000e6b8a6 0000038a5712bf49的分區(qū)表信息并使之顯示正常的數(shù)據(jù)儲存標識為例,來講述VMFS分區(qū)表丟失后的修復過程。
以下操作在用SSH2登錄主機后操作。
ls /vmfs/devices/disks/
該命令主要是查看現(xiàn)有磁盤的分區(qū)信息(如圖4),我們只要看前面一列的磁盤名稱即可,后面有冒號1,說明這是該磁盤的第一個分區(qū),依次類推??梢钥闯鰜韓aa.6b083fe000e6b8a60000038a5 712bf49磁盤下沒有分區(qū),其他磁盤下都有一個或多個分區(qū),接下來就要修復該磁盤的分區(qū)表,當然我們得事先知道在壞掉以前它是幾個分區(qū)的,此處我們的邏輯磁盤在分區(qū)表壞掉前都是一個分區(qū)的(在進行截圖時,名稱尾號為“79”和“3d”的邏輯盤的分區(qū)表已經(jīng)用此文中的方法修復,因此它們下面都有分區(qū)信息)。
確認具體某個邏輯盤具體的分區(qū)表的體信息,命令:
partedutil getptbl"/vmfs/devices/disks/naa.6b083fe000e6b53c0000025b 54a8d579"
除了邏輯盤的名稱naa.6b083fe000e6b53c0000025b 54a8d579,其他都是固定格式,此命令可以分別查看有分區(qū)信息的邏輯盤和分區(qū)表丟失的邏輯盤,如圖4中:
gpt代表分區(qū)格式。
4348570表示磁盤的柱面數(shù)。
255表示磁頭數(shù)。
63表示每磁道扇區(qū)數(shù)。
69859790554總扇區(qū)數(shù)。
“1 2048 69859790520 AA31E02A400F11DB95900 00C2911D1B8 vmfs 0”代表了一條分區(qū)表信息,“1”表示第一個分區(qū),“2048”表示起始扇區(qū),“69859790520”表示結束扇區(qū),“AA31E02A40 0F11DB9590000C2911D1B8 vmfs 0”表示這是VMware的數(shù)據(jù)存儲分區(qū),VMFS分區(qū),“0”是分區(qū)屬性(一般都是0),這些是固定格式。
圖4 查看所有磁盤的分區(qū)信息以及具體某個盤的分區(qū)表
從圖4可以看出,naa.6 b083fe000e6b8a60000038a57 12bf49這個邏輯盤沒有分區(qū)表了,下面就來修復它的分區(qū)表。
partedutilget Usable Sectors /vmfs/devices/disks/naa.6b083fe 000e6b8a60000038a5712bf49
因為一個磁盤在ESXi中是從2048扇區(qū)開始使用的,還要去掉VMFS分區(qū)占用的頭部34個分區(qū),所以還是用這條命令獲取一下可用的扇區(qū)數(shù)比較合理。注意,這條命令中的參數(shù)getUsableSectors嚴格區(qū)分大小寫。此命令執(zhí)行后得到數(shù)據(jù)“3420971486”,代表該磁盤可用的扇區(qū)到“20971486”,這個數(shù)據(jù)稍后的命令參數(shù)中要用到。
得到了磁盤名稱,磁盤可用的扇區(qū)數(shù),就可以用命令partedutil來重建VMFS分區(qū)表了。本例中,磁盤名稱為naa.6b083fe000e6b8 a60000038a5712bf49,最大可用扇區(qū)“20971486”,整個邏輯盤只有1個分區(qū),其他參數(shù)都是固定的。
命令為:
執(zhí)行后出現(xiàn)提示:
表示在這個邏輯盤上的VMFS分區(qū)建立好了。
至此,磁盤丟失的分區(qū)表已經(jīng)修復?;氐絭Sphere Client,在圖1界面進行“全部重新掃描”應該會出現(xiàn)修復回來的數(shù)據(jù)儲存標識,只要再把該存儲標識進行“掛載”即可正常使用了。進行“瀏覽數(shù)據(jù)存儲”,看到數(shù)據(jù)文件都在。利用同樣的方法,修復了其他兩個邏輯盤,每個設備對應的數(shù)據(jù)存儲標識都正常顯示了(如圖5),丟失的虛擬機又回來了,正常開機,數(shù)據(jù)完好。
分區(qū)雖然修復了,虛擬機也找回來了,但還是心有余悸,有兩點體會特別深刻。
1.中心機房的設備與環(huán)境同樣重要。不能光顧著更新服務器、交換機等設備,而忽略UPS、空調(diào)等環(huán)境設備,突然的斷電,對服務器、磁盤陣列損傷極大,輕者分區(qū)丟失,重者直接硬件損壞。
圖5 修復后每個設備對應數(shù)據(jù)存儲標識都正常顯示了
2.不斷學習,不斷進步。對服務器虛擬化可以提升資源利用率、減少能耗、減少物理服務器的數(shù)量,但是它有時又不像實際服務器那樣看得見摸得到,作為使用者我們應該對虛擬機系統(tǒng)有更深的了解,以便出現(xiàn)問題時能及時找到解決方案。以下是partedutil命令的官方說明,對該命令想進一步了解可以參考。