同其他的虛擬化產(chǎn)品相比,VMware虛擬化方案企業(yè)中使用的最為廣泛。不過,在實(shí)際使用過程中,有時(shí)會遇到各種故障。當(dāng)出現(xiàn)問題時(shí),如何快速排除故障,對于管理員來說是必須掌握的技能。在具體排錯(cuò)時(shí),需要遵循合適的處理流程。針對VMware的故障處理,一般會從快照、Power電源管理、網(wǎng)絡(luò)連接和WMware Tools工具等方面進(jìn)行檢測。只有掌握了正確的排錯(cuò)之道,才可以有的放矢地解決問題。
要想有效地排查故障,必須清晰地了解虛擬機(jī)的文件結(jié)構(gòu)。例如,對于某臺虛擬機(jī)來說,其配置文件為“vpc.vmx”,假 設(shè)其名稱為“vpc”,Swap文 件 為“vpc.swp”或者“vmx-vpc.vswp”,BIOS文 件 為“vpc.nvram”,Log文 件 為“vmware.log”,RAW device map文 件 為“vpcrdm.vmdk”,磁盤描述文件為“vpc.vmdk”,磁盤數(shù)據(jù)文件為“vpc-flat.vmdk”,快 照數(shù)據(jù)文件為“vpc.vmsd”,快照狀態(tài)文件為“vpc.vmsn”,快照磁盤描述文件為“vpc.vmdk”“vpc-000001.vmdk”等文件,快照磁盤文件為“vpc-delta.vmdk”等。
當(dāng)配置文件、磁盤文件或者快照文件出現(xiàn)問題時(shí),虛擬機(jī)自然會無法正常運(yùn)作。例如,在虛擬機(jī)的磁盤描述文件中存在一個(gè)CID參數(shù),其作用是負(fù)責(zé)磁盤相關(guān)整合以及變動(dòng)狀態(tài)的跟蹤。當(dāng)磁盤數(shù)據(jù)塊發(fā)生變動(dòng)時(shí),其狀態(tài)就會寫入到“.vmdk”類型的文件中。虛擬機(jī)的快照磁盤都是成對出現(xiàn)的,例如“vpc-xxx-delta.vmdk”“vpc-xxx.vmdk” 等,包括磁盤數(shù)據(jù)文件和磁盤描述文件。在對應(yīng)的描述文件夾中的CID實(shí)際上是磁盤唯一標(biāo)識號,如果沒有創(chuàng)建快照,最原始的parentCID的值為“ffffffff”。當(dāng)創(chuàng)建快照后,第一級快照描述文件中的parentCID參數(shù)的數(shù)值等于母盤的CID數(shù)值,同時(shí)也會在其中生成新的CID。
依次類推,在第二級快照描述文件中parentCID參數(shù)的數(shù)值等于上一級快照描述文件CID數(shù)值,同時(shí)也會在其中生成新的CID。通過這樣的鏈接關(guān)系,將一層層的快照連接起來。如果其中的快照層級出現(xiàn)問題,虛擬機(jī)就無法開機(jī)。例如,當(dāng)“vpc-000002.vmdk”快照描述文件中的parentCID和“vpc-000001.vmdk”中的CID不一致,該虛擬機(jī)的快照層級關(guān)系就會中斷,快照盤就無法使用,導(dǎo)致虛擬機(jī)無法使用。解決方法是,將出錯(cuò)的快照描述文件(例如“vpc-000002.vmdk”)下載到本地,使用Ultraedit等文件編輯器將其打開,將其parentCID的數(shù)值修改為正確的內(nèi)容。
之后將其上傳到虛擬機(jī)中,在ESXi主機(jī)命令行下執(zhí) 行“vmkfstool -q vpc-000002.vmdk -v10”命 令,如果提示操作失敗,則說明CID更新沒有成功。如果成功說明修改沒有問題,之后就可以順利開啟虛擬機(jī)了。注意,不要使用記事本之類的工具進(jìn)行修改,否則很容易破壞快照描述文件的編碼結(jié)構(gòu)。當(dāng)創(chuàng)建快照時(shí),如果選擇了I/O靜默,就可能導(dǎo)致操作失敗的情況。因?yàn)樵趫?zhí)行這種操作時(shí),虛擬機(jī)可能有大量的I/O負(fù)載,自然無法在I/O靜默下創(chuàng)建快照。處理方法是檢測是否可以以手動(dòng)方式創(chuàng)建一個(gè)不調(diào)用I/O靜默的快照。當(dāng)調(diào)用I/O靜默動(dòng)作時(shí),系統(tǒng)實(shí)際上會通過Vmware Tool Sync driver(同步驅(qū)動(dòng)器)或者M(jìn)icrosoft Volume Shadow Copy Service(卷影復(fù)制服務(wù))技術(shù)進(jìn)行調(diào)用。
如果兩者同時(shí)存在,就有可能I/O靜默驅(qū)動(dòng)沖突。遇到這種情況,可以卸載上述某個(gè)驅(qū)動(dòng)來解決,例如,卸載Vmware Tool Sync driver。在有些情況下,當(dāng)創(chuàng)建快照或者處理快照時(shí)會出現(xiàn)某些錯(cuò)誤。當(dāng)然,如果虛擬機(jī)的磁盤處于或者Independent磁盤模式,或者在Physical模式下進(jìn)行RDM映射本地磁盤的話,是無法創(chuàng)建快照的。而且快照最多支持32層級,如果超出則無法繼續(xù)進(jìn)行。排查的方法是先檢查vCenter Server上的權(quán)限設(shè)置情況,之后檢測虛擬機(jī)相關(guān)文件,然后查看ESXi的快照尺寸和空間使用情況。
在vCenter Server上檢測用戶是否有權(quán)限執(zhí)行快照,要么提高用戶權(quán)限要么更換高權(quán)限賬戶登錄。在虛擬機(jī)文件中檢測名稱中包含“delta”和不包含該字樣的“.vmdk”文件的描述信息是否匹配,如果不匹配就可能出現(xiàn)問題。通過查看之前的備份信息,就可以知曉其是否匹配。例如對于“vpc-000002-delta.vmdk”文件在“vpc-000002.vmdk”中沒有正確配置。處理方法是對快照描述文件進(jìn)行修改,使兩者保持匹配。如果Delta磁盤沒有描述配對文件,可以復(fù)制基礎(chǔ)磁盤的描述文件,然后將其更名為與之對應(yīng)的配對描述文件,通過對其進(jìn)行編輯,將其修改為正確的描述信息。
從ESXi主機(jī)層面上講,如果單個(gè)快照文件超過了Datastore的上線,或者Datastore剩余空間無法對所有的快照處理提供支撐,就很容易出現(xiàn)無法發(fā)處理快照的問題。對于VMFS 5來說,Database單個(gè)文件最大支持62.93TB,在創(chuàng)建快照時(shí),理論上快照文件最大只能超過原始盤的8GB左右。因此,要處理所有的快照信息的前提是Datastore的空間足夠大,可以將相關(guān)的虛擬機(jī)挪動(dòng)到有更大空間的位置,也可以為Datastore增加存儲空間。在實(shí)際的工作中,可以發(fā)現(xiàn)虛擬機(jī)的很多問題其實(shí)都和快照有關(guān)。
當(dāng)嘗試開啟虛擬機(jī)時(shí),出現(xiàn)失敗的情況,除了查看報(bào)警信息外,還可以打開“vmware.log”文件,來了解虛擬機(jī)開啟失敗的原因。在進(jìn)行分析時(shí),可以按照一定的流程進(jìn)行。先在虛擬機(jī)層面進(jìn)行檢測分析,例如是否是因?yàn)閬G失了部分虛擬機(jī)文件造成的,是否是部分虛擬機(jī)文件被鎖定造成的等。使用Putty等工具登錄到ESXi主機(jī),在命令行下執(zhí)行“vmware-cmd -l”命令,來拿查看相關(guān)虛擬機(jī)的完整路徑信息。據(jù)此執(zhí)行“cd /vmfs/voluems/
執(zhí) 行“l(fā) s /v m f s/volumes/shared/vpc”之 類的命令,來檢測目標(biāo)虛擬機(jī)是否存在文件丟失的情況。如果發(fā)現(xiàn)某些文件丟失,可以利用之前備份的文件進(jìn)行恢復(fù)。如果磁盤描述文件丟失,可以手工重建該文件。如果提示文件被鎖定,可以執(zhí)行“touch filename”命令,來檢測其是否被鎖定,“filename”為具體的文件名。當(dāng)發(fā)現(xiàn)虛擬機(jī)被鎖定,在解鎖之前必須確定哪臺ESCi主機(jī)鎖定了該虛擬機(jī)文件,執(zhí)行“vmkfstools -D/vmfs/volumes/
在該主機(jī)上執(zhí)行“l(fā)sof| grep filename”命令,來找到鎖定信息,之后關(guān)閉和該虛擬機(jī)相關(guān)的進(jìn)程即可解除鎖定。如果實(shí)在無法找到引發(fā)虛擬機(jī)文件被鎖定的進(jìn)程,那就只能執(zhí)行遷移虛擬機(jī)或者重啟ESXi主機(jī)等操作加以應(yīng)對。在實(shí)際工作中,虛擬機(jī)被鎖定是比較常見的故障,例如在遷移或者啟動(dòng)過程中虛擬機(jī)宕機(jī),其磁盤文件就會被鎖定。解除鎖定操作時(shí)虛擬機(jī)是沒有損壞的,因?yàn)閮H僅從進(jìn)程中將其清除,對實(shí)際的數(shù)據(jù)存儲沒有任何影響。當(dāng)確認(rèn)不是虛擬機(jī)層面的問題后,接下來就需要從ESXi主機(jī)層面進(jìn)行檢測分析,例如是否因?yàn)橹鳈C(jī)資源不足造成,是否因?yàn)镋SXi主機(jī)無響應(yīng)導(dǎo)致等。
如果出現(xiàn)無法安裝VMware Tools安裝失敗,這一般都是因?yàn)椴僮飨到y(tǒng)選擇錯(cuò)誤有關(guān)。從虛擬機(jī)層面上來說,要檢測虛擬機(jī)的操作系統(tǒng)版本有無問題。打開虛擬機(jī)的管理面板,在設(shè)置標(biāo)簽中選擇“VM Options”項(xiàng),在“Guest OS version”欄查看實(shí)際的操作系統(tǒng)類型,并選擇與之匹配的VMware Tools。從ESXi主機(jī)層面上講,來查看是否為Vmware Tools ISO匹配問題,是否可以找到Vmwar Tools ISO文件,鏡像文件是否存在損壞等。有時(shí),虛擬機(jī)會出現(xiàn)“orphaned”(孤 立) 狀態(tài),例如在虛擬機(jī)遷移時(shí),因?yàn)楦鞣N原因重啟VM,導(dǎo)致 在vCenter Server的“Inventory”下顯示孤立狀態(tài),只是因?yàn)樵谔摂M機(jī)被重啟時(shí),會臨時(shí)性的無法使用,其狀態(tài)就會顯示為孤立。
在遷移虛擬機(jī)過程中,實(shí)際上處于未定狀態(tài),即該虛擬機(jī)究竟要在哪臺ESXi主機(jī)上啟動(dòng),所以稍有問題就會造成其處于孤立狀態(tài)。排查的方法是,在vCenter Server上檢測,看是否是由于vMotion或者DRS造成的,因?yàn)镈RS會調(diào)用vMotion。在任務(wù)管理頁面查看是否存在任務(wù)項(xiàng)目,檢測處于orphaned狀態(tài)的虛擬機(jī)被注冊到哪臺ESXi主機(jī)上,并重啟該ESXi主機(jī)的管理服務(wù),一般就可以解決該故障。如果沒有找到虛擬機(jī)被注冊的信息,就可以通過手動(dòng)的方法,注冊虛擬機(jī)到ESXi主機(jī)或者vCenter Server上,或者利用orphaned狀態(tài)虛擬機(jī)的VMDK文件創(chuàng)建全新的虛擬機(jī)。從虛擬機(jī)層面上看,是否因?yàn)闆]有通過vCenter Server對VM進(jìn)行了刪除操作,因?yàn)閯h除VM可以通過vCenter Server或者ESXi主機(jī)來進(jìn)行。
如果在ESXi主機(jī)上刪除VM,就很容易導(dǎo)致兩邊的信息不同步,造成在vCenter Server存在殘留信息。解決方式是,執(zhí)行“l(fā)s /vmfs/volumes/share/vpc”命令,來檢測虛擬機(jī)文件是否存在。如果配置文件被刪除,可以重建虛擬機(jī)來重建“.vmx”文件,或者利用備份的“.vmx”文件來恢復(fù)虛擬機(jī)。如果虛擬機(jī)的磁盤文件被刪除,可以利用之前的備份計(jì)劃進(jìn)行恢復(fù)。當(dāng)然,如果虛擬機(jī)的“.vmx”配置文件出現(xiàn)問題,因?yàn)槠渲邪颂摂M機(jī)的所有配置信息,所以也可能導(dǎo)致其處于孤立狀態(tài)??梢允褂弥暗膫浞葸M(jìn)行恢復(fù)。
如果損壞的不嚴(yán)重,可以將其下載到本地,使用Ultraedit等編輯器將其打開,刪除不需要的部分,修復(fù)其內(nèi)容后再將其上傳回去。也可以直接從Inventory中刪除處于孤立狀態(tài)的虛擬機(jī)之后重建即可。如果存儲服務(wù)器和ESXi主機(jī)的連接出現(xiàn)抖動(dòng)狀態(tài),同樣會造成上述故障。從ESXi主機(jī)層面上講,如果根文件系統(tǒng)空間不足,因?yàn)槠鋬?yōu)先級是最高的,所以可能強(qiáng)行刪除虛擬機(jī)的部分文件,造成虛擬機(jī)出現(xiàn)孤立狀態(tài)。在ESXi主機(jī)的DCUI界面中執(zhí)行“df -h”命令,來查看磁盤空間使用情況,并根據(jù)需要清除不需要的內(nèi)容。