(1) “XEN PV DISK SCSI Disk Device”設(shè)備驅(qū)動(dòng)是disk.sys和partmgr.sys(如圖2所示),兩者都是Windows系統(tǒng)驅(qū)動(dòng),不是xenvbd驅(qū)動(dòng)。在“C:\Windows\System32\drivers”文件夾下查看這兩個(gè)驅(qū)動(dòng)無異常。對(duì)比正常虛擬機(jī)和問題虛擬機(jī)的windows服務(wù)和進(jìn)程,也沒有發(fā)現(xiàn)異常。進(jìn)入安全模式,發(fā)現(xiàn)磁盤驅(qū)動(dòng)器驅(qū)動(dòng)無法正常加載,因此可以排除是由于應(yīng)用軟件導(dǎo)致的windows系統(tǒng)異常,應(yīng)該是windows系統(tǒng)異常導(dǎo)致的虛擬機(jī)disk.sys和partmgr.sys驅(qū)動(dòng)加載失敗。
圖2 驅(qū)動(dòng)程序文件詳細(xì)信息

(2) 查看虛擬機(jī)系統(tǒng)日志,磁盤驅(qū)動(dòng)器設(shè)備在加載驅(qū)動(dòng)的時(shí)候顯示安裝驅(qū)動(dòng)程序?yàn)椤癗ULL Driver”(如圖3所示),表明磁盤對(duì)應(yīng)的驅(qū)動(dòng)不存在,但是在“C:\Windows\System32\drivers”目錄下能找到對(duì)應(yīng)的驅(qū)動(dòng)。因?yàn)橐治鰹槭裁醇虞d驅(qū)動(dòng)時(shí)提示沒有該驅(qū)動(dòng)。
圖3 NULL Driver

(3) 按照Windows系統(tǒng)加載過程,Windows系統(tǒng)加載系統(tǒng)驅(qū)動(dòng)的時(shí)會(huì)先至“C:\Windows\inf”文件夾下查找對(duì)應(yīng)的驅(qū)動(dòng)安裝文件*.inf(磁盤驅(qū)動(dòng)對(duì)應(yīng)為disk.inf),而disk.inf會(huì)指定對(duì)應(yīng)的二進(jìn)制驅(qū)動(dòng)文件所在路徑,即“C:\Windows\System32\drivers”目錄下的disk.sys,如圖4所示。
圖4 二進(jìn)制驅(qū)動(dòng)文件路徑

(4) 查看問題虛擬機(jī)C:\Windows\inf目錄下沒有disk.inf,將驅(qū)動(dòng)備份文件夾“C:\Windows\System32\DriverStore\FileRepository\disk.inf_x86_neutral_b431b61a11f8df6c\disk.inf”文件拷貝到“C:\Windows\inf”,然后重新在設(shè)備管理器中選中“XEN PV DISK SCSI Disk Device”,右鍵選擇“更新驅(qū)動(dòng)程序軟件->自動(dòng)搜索更新的驅(qū)動(dòng)程序軟件”,驅(qū)動(dòng)立即加載成功。此時(shí)在磁盤管理中可以看到新增的磁盤,但是格式化磁盤的時(shí)卡住并報(bào)錯(cuò),如圖5所示。
圖5 格式化磁盤報(bào)錯(cuò)

(5) 查看系統(tǒng)事件日志,邏輯卷VOLUME安裝驅(qū)動(dòng)也是NULL Driver(如圖6所示),查看“C:\Windows\inf”目錄下缺少volume.inf安裝文件,在設(shè)備管理器中發(fā)現(xiàn)未知volume設(shè)備(如圖7所示)。
圖6 NULL Driver

圖7 未知設(shè)備

(6) 將“C:\Windows\System32\DriverStore\FileRepository\volume.inf_x86_neutral_29364d30156a24ca\volume.inf”拷貝到“C:\Windows\inf”,按照步驟4重新更新完驅(qū)動(dòng)程序文件后,就可以格式化新增的數(shù)據(jù)盤。
綜上所述,虛擬機(jī)的磁盤驅(qū)動(dòng)器驅(qū)動(dòng)加載失敗的原因是“C:\Windows\inf”目錄下的disk.inf和volume.inf被刪除,導(dǎo)致新增的磁盤無法通過安裝文件加載驅(qū)動(dòng)。