虚拟化的局限
开发人员承认,开发过程中有许多方面是虚拟化技术无能为力的。
3X公司的Floehr强调:"虚拟化无能为力的一个方面就是对我们的产品(基于网络的备份设备)进行压力测试(stress testing)。尽管我们可以在虚拟化环境同时测试10个客户机,但那不是真正的压力测试,因为10个客户机只使用4个物理CPU和两块网卡来测试;如果在实际环境有10个物理客户机,这些约束条件就不会存在。"
MarkMail的Mitchell补充说:"虚拟化确实会增加一些复杂性。它总是会增加一些延迟。但是更糟的是,如果改变底层的执行环境――比如从开发环境到测试环境再到生产环境,就无法依赖虚拟机清楚地了解性能方面的特点。"
最后,Mirtchell强调"当前一代的桌面虚拟化产品仍有太多令人头疼的问题、缺陷以及缺失的功能,"至少开发人员在用于软件开发方面就遇到了这种情况。
微软的Mark Friedman说:"如果进行负载测试或规模扩展,就得运行在原始硬件和物理机器上。除非你准备部署在虚拟机上,否则性能方面的特点完全不一样。性能测量方面的情况也是这样。"Friedman强调,但随着时间的推移,这个问题有望得到解决。
Friedman表示,另外,虚拟化行业采用的半虚拟化方法改变了操作系统的一些底层方面,尤其是操作系统的驱动程序。"所以,如果你依赖特定的驱动程序或硬件环境,那就会受到影响。比方说,有一个虚拟网卡,有一个特定的驱动程序。该驱动程序'可识别虚拟化技术'。你就得明白,如果你需要针对一组本地驱动程序进行测试,在虚拟机里看不到驱动程序。所以,这影响了从事驱动程序开发的人员,但对Web开发人员没有影响。"
Friedman还指出:"如果你有一个多层应用程序需要几台机器,把这些机器整合成共享硬件意味着'你可以进行的是功能测试,而不是性能测试。'"
尽管有这样那样的问题,虚拟化技术已经为开发人员带来了切实的好处。微软的Friedman说:"一旦我们的开发人员学会使用虚拟化技术,这项技术就能提高他们的工作效率。虚拟化技术让他们可以花更多的时间用在编码、测试和调试上。它消除了用在构建及准备环境方面的大量时间和延迟,我们并不希望他们把大部分时间用在这方面上。"