应用程序问题
我们先说第一种产品。Altiris的软件虚拟化解决方案(SVS)之类的工具可以采用被称之为"强力"的方法:在Windows的文件系统的代码堆栈中安装一种简单的过滤器驱动程序,截获并重定向SVS所管理的应用程序的I/O请求。在其分别的"层"中被启用时,SVS所管理的应用程序就如同与操作系统无缝集成一样。事实上,应用程序与操作系统交互的每个方面,从一个DLL的加载到访问一个注册表项,都动态地重定向到由SVS所管理的本地缓存文件中。
这种方法的好处在于,它完全将操作系统与应用程序隔离开:应用程序所做的任何更改,无论是对注册表的还是对于其自身文件的,还是对于Windows的更改,事实上仅发生在SVS所管理的缓存中。由于没有真正的变化发生,所以底层的操作系统镜像仍保持其"纯洁性",而应用程序可以通过简单地单击一个按钮来禁用它,或者通过一个管理控制台来禁用它。这种方法的缺点是它在管理同样的应用程序的多个版本时存在困难。例如,在并行的层中安装有多个微软的office版本时,由于激发了错误的组件版本,office有可能会造成SVS故障。
还有另外一种解决方案,如Softricity的SoftGrid(被微软收购)。SoftGrid提供了一种完整的虚拟化环境:应用程序被简化到客户端中,然后在一个定制的设备中执行,此设备将代码与操作系统实现完全的隔离。这种方法的好处是它可以避免困扰SVS的许多多版本问题。然而,其代价是一种更复杂的部署过程,它要求管理员构建一个定制的安装镜像,用以优化代码库。
当然,如果没有闯入者来搅局,那么任何市场都是不完整的。Thinstall就是这样一个闯入者,它将SVS的简易性与SoftGrid完整性结合起来。通过将这两种虚拟化环境和应用程序镜像嵌入到单独的可执行文件中,Thinstall就不再需要支持基础架构,只要将文件复制或传送到客户端并执行就可以了。不需要代理,而且镜像也可以用虚拟化的方式使用任何传统的管理套件来部署,包括活动目录和微软的系统管理服务器。其缺点是需要使用Thinstall的虚拟化套件工具集来定制应用程序。
标准的虚拟机
有些客户端需要更为综合的虚拟化解决方案,如在一个全新的操作系统上管理遗留的老应用程序。在这种情况下,最好是将应用程序隔离到一个完全虚拟化的操作系统环境内部,即所谓的标准化的虚拟机方法。这就准许用户在自己选择的操作系统镜像内部运行一个应用程序,但仍然支持迁移到不兼容的或更新的操作系统平台,也支持与这种系统的集成。