Linux虚拟化的危险、陷阱和规划(1)(2)
虚拟化的前景
虚拟化涉及的技术领域广泛,最初,谈及Linux虚拟化时,往往指的是完全虚拟化,即主机操作系统运行了多个客户机操作系统,好像它们都运行在自己的硬件上一样,也许是Linux,也许是其它操作系统。现在,人们谈论虚拟化时可能指的是操作系统虚拟化,存储虚拟化或虚拟设备。
对于操作系统虚拟化,你会发现有很多成熟的Linux虚拟化解决方案,首先你要决定是使用完全虚拟化还是基于容器的虚拟化,抑或是想要基于云的计算。这里所说的完全虚拟化,我指的是在一个系统管理程序(Hypervisor)上运行一或多个操作系统的解决方案,如Xen,Parallels的 Bare Metal,VMware ESXi和Linux自带的KVM(Kernel-based Virtual Machine,基于内核的虚拟机)。
完全虚拟化在今天被广泛使用,但基于容器的虚拟化对某些工作负载来说也是一个很好的解决方案,基于容器的虚拟化一般不会运行多个操作系统,它是在它自己的用户空间中容纳客户机操作系统,而不是运行在一个单独的操作系统内核上,基于容器的虚拟化更坚固,因为不需要处理硬件仿真,它需要的系统开销更少。基于容器的虚拟化的缺点是不允许在同一个硬件平台上运行多个操作系统,想在一台服务器上使用基于容器的虚拟化解决方案运行6个Linux实例?没问题,但如果想和Microsoft Server一起运行几个Linux客户机?使用基于容器的虚拟化解决方案就不行了。
对于基于容器的虚拟化解决方案,你可以研究一下Parallels Virtuozzo容器,或是开源但功能更少的OpenVZ,如果你使用的是FreeBSD,你可以尝试一下jails,如果你使用的是Solaris/OpenSolaris,那么可以试试Zones。
完全虚拟化和基于容器的虚拟化之间有什么实质性区别呢?使用完全虚拟化解决方案,你可以使用大部分操作系统,也可以混合使用,例如,一个小型组织可能在一台服务器上使用完全虚拟化工具,如Xen、Parallels、KVM、VMware,或微软的Hyper-V,同时运行Windows Server 2008和SUSE Linux Enterprise Server 10以整合它们的工作负载。
但在托管环境中,你需要在一台物理服务器上运行几十个Linux虚拟专用服务器,类似OpenVZ或Virtuozzo可能是最好的选择。
虽然KVM已经非常成熟,但它仍然不被认为是与Xen,VMware或Parallels解决方案在同一个层次上,KVM状态页(http://www.linux-kvm.org/page/Status)列出了已经完成的工作和正在进行的工作,从长远来看,KVM完全可以达到专业解决方案同等水平,值得一提的是KVM现在已经进入到Linux内核主干,引起了内核社区的极大关注。