如何处理Windows虚拟机磁盘驱动器驱动加载失败

发布时间:  2015-03-04 浏览次数:  6832 下载次数:  25
问题描述
一台虚拟机磁盘空间不足后,再挂载数据磁盘后,在磁盘管理器中无法查看到新挂载的磁盘,但是在Portal上显示磁盘挂载成功,在虚拟机内部查看是磁盘驱动器驱动加载失败(如图1所示)。

图1 磁盘驱动器驱动加载失败


处理过程
(1) 在问题虚拟机上将“C:\Windows\System32\DriverStore\FileRepository\disk.inf_x86_neutral_b431b61a11f8df6c\disk.inf”和“C:\Windows\System32\DriverStore\FileRepository\volume.inf_x86_neutral_29364d30156a24ca\volume.inf”拷贝到“C:\Windows\inf”目录下。

(2) 在“设备管理器”中右击“XEN PV DISK SCSI Disk Device”,在弹出的快捷菜单中选择“更新驱动程序软件”。

(3) 在弹出的“更新驱动程序软件”中选择“自动搜索更新的驱动程序软件”。

(4) 驱动程序更新完成后,可以在“磁盘管理”中进行分配盘符和格式化操作。
根因
“XEN PV DISK SCSI Disk Device”设备驱动是disk.sys和partmgr.sys(如图2所示),两者都是Windows系统驱动,不是xenvbd驱动。在“C:\Windows\System32\drivers”文件夹下查看这两个驱动无异常。对比正常虚拟机和问题虚拟机的windows服务和进程,也没有发现异常。进入安全模式,发现磁盘驱动器驱动无法正常加载,因此可以排除是由于应用软件导致的windows系统异常,应该是windows系统异常导致的虚拟机disk.sys和partmgr.sys驱动加载失败。

图2 驱动程序文件详细信息



(2) 查看虚拟机系统日志,磁盘驱动器设备在加载驱动的时候显示安装驱动程序为“NULL Driver”(如图3所示),表明磁盘对应的驱动不存在,但是在“C:\Windows\System32\drivers”目录下能找到对应的驱动。因为要分析为什么加载驱动时提示没有该驱动。

图3 NULL Driver



(3) 按照Windows系统加载过程,Windows系统加载系统驱动的时会先至“C:\Windows\inf”文件夹下查找对应的驱动安装文件*.inf(磁盘驱动对应为disk.inf),而disk.inf会指定对应的二进制驱动文件所在路径,即“C:\Windows\System32\drivers”目录下的disk.sys,如图4所示。

图4 二进制驱动文件路径



(4) 查看问题虚拟机C:\Windows\inf目录下没有disk.inf,将驱动备份文件夹“C:\Windows\System32\DriverStore\FileRepository\disk.inf_x86_neutral_b431b61a11f8df6c\disk.inf”文件拷贝到“C:\Windows\inf”,然后重新在设备管理器中选中“XEN PV DISK SCSI Disk Device”,右键选择“更新驱动程序软件->自动搜索更新的驱动程序软件”,驱动立即加载成功。此时在磁盘管理中可以看到新增的磁盘,但是格式化磁盘的时卡住并报错,如图5所示。

图5 格式化磁盘报错



(5) 查看系统事件日志,逻辑卷VOLUME安装驱动也是NULL Driver(如图6所示),查看“C:\Windows\inf”目录下缺少volume.inf安装文件,在设备管理器中发现未知volume设备(如图7所示)。

图6 NULL Driver



图7 未知设备



(6) 将“C:\Windows\System32\DriverStore\FileRepository\volume.inf_x86_neutral_29364d30156a24ca\volume.inf”拷贝到“C:\Windows\inf”,按照步骤4重新更新完驱动程序文件后,就可以格式化新增的数据盘。

综上所述,虚拟机的磁盘驱动器驱动加载失败的原因是“C:\Windows\inf”目录下的disk.inf和volume.inf被删除,导致新增的磁盘无法通过安装文件加载驱动。

END