全虚拟化和半虚拟化的差别
全虚拟化
Hypervisors 通过一个仿真硬件层为其上的每个Guest操作系统(虚拟机)仿真出一个具有常用硬件设备的标准服务器,当一个运行的Guest系统试图用特权指令控制硬件时,hypervisor会将真实的硬件隐藏起来,并仿真一个硬件设备给Guest系统,从而使得Guest系统无需修改代码就可以安全地访问硬件。
该技术使得Guest系统无法任何修改就可在不支持Intel VT/AMD-V的CPU上运行,但该技术的复杂性也降低了系统的性能。
半虚拟化
Guest 系统在访问真实硬件时是重用当前系统的驱动,而不是通过仿真的硬件实现的。
Guest系统和hypervisor交互是通过一个高效、底层的的API(hypercall API)来实现的,这使得hypervisor和Guest系统可以共同最优化地使用底层的硬件和I/O,从而可获得极高的运行性能。
Windows Hyper-V
在微软Hyper-V模型中,hypervisor层直接运行于物理服务器硬件之上。
所有的虚拟分区都通过hypervisor与硬件通信,其中的hypervisor是一个很小、效率很高的代码集,负责协调这些调用。
微软的虚拟化架构如下图所示,其中最底层为服务器硬件架构,它包含AMD-V、Intel VT、DEP等硬件支持,再上层就是微软的Windows Hypervisor,在虚拟的每一个子系统之间都是通过VMbus进行通信,包括主系统Windows Server 2008在内,所有的OS都是通过VMBus的一种机制与Hypervisor进行通信,其中父分区,可简单理解为Windows Server 2008宿主系统所在分区,它与Hypervisor的通信是通过VSP传送给VMBus,再通过VMBus与Hypervisor的联系到达硬件。
而子分区中的系统,是由VSC将请求发送给自已的VMBus,VMBus再与父分区的VMBus进行沟通,最后由父分区的VSP将请求传送给HyperVisor。
单独的Windows Server 2008在安装之后是直接与硬件通信,但当在系统中启用了Hypervisor,该Windows Server 2008也将作为一个Hypervisor的一个虚拟系统与其它子系统几乎是并列的存在,所不同的是Windows Server 2008作为父分区的宿主机,承载了所有子分区中虚拟系统的驱动程序。
为子分区中系统的安全性又上了大大的一把锁。
Xen对比VMware
一、随时随地的升级虚机系统,当我们对现有环境运行代码时,有可能速度很慢或者总提示500错误(即超过最大连接数目或部分硬件设备达到饱和状态),只需要通过XEN的控制端滑动几个增量滑动条,就好像用鼠标拉动IE浏
览器右侧的滚动条一样,完成过去WM很复杂的配置过程,无需专业技术人员助阵。
二、无缝迁移,为什么要迁移,服务器硬件设备故障了,服务器宕机了,系统会自动从健康的服务器顺利的划出一个空间,将宕机的设备里内容移植过去。
其中一般是使用心跳线技术,两台以上的服务器相互检测,谁不行了另外一个就自动替换它。
整个过程只需要100-300毫秒(正常1秒被分为1000毫秒),所以我们基本上是没有感觉的。
XEN的好处是配置方便,虽然VMware也可以实现此功能,但VMware配置麻烦比较,需要工程师的配合。
三、系统重装,如果我今天上午想用个LINUX测试PHP代码,跑MYSQL数据库,下午想用WIN系统跑个MS SQL,按照我们现有的方式,联系技术部们,告诉他们我需要做什么,什么时间需要,技术部们也很头痛,可能他们会给我另外一个IP的VMware虚机让我测试不同的平台,如果我还想要那个IP,那就需要从VMware的管理母服务器上操作了,一个安装需要搞2个小时,在时间紧张时比较致命。
但是在XEN架构下,我们可以任意安装我需要测试的平台,整个过程只需要3分钟。
XEN下集成了所有主流的服务器软件,可以自由选择。
四、数据保留安装,如果觉得网站的服务器系统被折腾得崩溃了,XEN可以在同一个分区下,重新安装系统,并可以保留重要目录不变,而执行删除或格式化,甚至可以保留我的重要文件夹,将WIN平台换成LINUX平台。
而在VMware 下,重新安装系统必定会提示你先备份数据然后全盘格式化再安装,然后是漫长的数据恢复,比较耗费时间。