VMware的PV驱动

用较新版本VMware创建虚拟机的时候可以看到,在建立磁盘和网卡时,可选的型号里有准虚拟化类型,即PV SCSI 卡和VMXNET 2/3网卡。一般来说,准虚拟化的设备比起全虚拟化的(比如虚拟出来的LSI Logic SCSI卡、Intel网卡)具有更好的性能和更低的资源占用率。所以在可能的情况下最好优先选择准虚拟化设备。

对于新建的Windows虚拟机,可以用虚拟软驱挂接PVSCSI的驱动盘,在安装时加载驱动(比如2003或更早版本Windows的F6大法)。至于网卡,装好系统后安装VMware tools即可。

但是,也许是出于OS兼容性和减少用户操作麻烦的考虑,VMware创建虚拟机时默认的SCSI卡和网卡都是全虚拟化的。如果在这种设置下安装好Windows,之后想切换到准虚拟化,网卡倒不是大问题,但SCSI卡就麻烦了。就像SATA AHCI刚出来那时候经典的“开AHCI蓝屏”问题一样,如果在虚拟机设置里把SCSI卡从LSI Logic切换到PVSCSI,启动虚拟机铁定蓝屏。好在可以借鉴AHCI的经验来处理这个问题:

  • 网上流传着一个从ThinkPAD驱动包里剥出来的脚本,用来拷贝文件、修改注册表,安装MSAHCI服务。可以模仿此脚本安装PVSCSI服务。不过这么折腾显然是不直观而且复杂的。有多少人愿意做就不知道了。
  • 以前有人通过使用板载第三方SATA卡AHCI模式或外插PCI-E/PCI SATA卡的方法来启用MSAHCI服务,然后再重启把南桥SATA卡切换到AHCI模式。这个办法同样可以用于VMware的PVSCSI卡。具体操作方法是:
    • 为虚拟机添加一个小硬盘。大小不重要,使用默认的8M即可。关键的是这块硬盘一定要接在原来的SCSI卡之外,比如原来硬盘是SCSI 0:0,那么新硬盘可以是1:0这样子的。这样,VMware才会为之创建一个新的SCSI卡。
    • 硬盘创建好后,把新创建的卡的型号从LSI Logic改为PVSCSI,然后启动虚拟机。
    • 虚拟机启动好之后,登录进去到设备管理器看看,是不是有两个硬盘了,其中一个挂在PVSCSI下。如果正常,就关机,删掉新建的小硬盘,并把原来的SCSI卡型号改为PVSCSI,再启动虚拟机。
    • 大功告成,亲个嘴儿。

至于Linux,较新内核(比如广泛使用的3.2)已内置了vmx_pvscsi的驱动,只要initrd里包含进去了,就可以放心切换,不会有蓝屏的危险。如果是2.6内核,那就要自己折腾了。