选用合适的虚拟主机方案,能有效利用各种服务器的资源,为节约开支,简化硬件环境的维护带来便利。 同时它也为隔离各服务模块提供了有效的解决方法,并能一定程度上增强系统的安全性。
以下介绍三种不同的虚拟方式,随后详细介绍在生产环境比较常见的内核级虚拟主机。
Emulation 硬件虚拟
为在虚拟出的环境中运行无修改的操作系统提供了可能。这一类的实现包括了从纯虚拟化到允许部分代码直接在CPU上执行以提高性能。此类实现最大的弊端是低性能,低密度。常见的桌面虚拟机多属于此类,如 VMware products, QEmu, Bochs 和 Parallels.
并行虚拟化
可用于在一套管理程序或者虚拟主机控制器内运行多个操作系统。此类实现包括Xen和UML。与硬件虚拟化相比,并行虚拟化有较好的性能。
操作系统级虚拟化
这种方式在一个系统内核中实现了多个独立的程序运行环境,可理解为chroot在更低层次的实现。此种方式的实现有最优的性能和密度,并允许资源的动态管理. 这种方式下,多个虚拟主机共用相同的系统内核。FreeBSD Jail, Linux-VServer, OpenVZ 和 Virtuozzo 属于此类,在生产环境中使用的样例比较常见。
OpenVZ在RedHat系列的主机中比较常见(官方支持此发行版),Vserver在Debian系列中比较流行(Debian官方支持此实现)。OpenVZ采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,Virutozzo是SWsoft公司提供的商业虚拟化解决方案,OpenVZ是其开源解决方案。相比[url=admon.org]Vserver[/url],OpenVZ有更为严格的测试,也有更为完善的安全框架模型。Vserver与OpenVZ的管理,维护方式大同小异,大部分命令使用方式类似。在安装上vserver更为简洁一些,它不需要借助操作系统模板来简化安装。
以下以OpenVZ为例,介绍具体实现:
OpenVZ的结构
OpenVZ的安装参考这里。安装完成后即可用 “vzctl enter VPS-NAME” 登录系统。登录后看到的将是一个完善的系统,它与主系统共享所有硬件资源,包括CPU、内存和磁盘空间(可指定大小,并支持quota),并可拥有自己的 IP地址。如果需要把主系统中的服务迁移到VPS中,需要把服务绑定到指定的IP地址上。如果不绑定,访问相同端口的服务(比如SSH)实际会访问主系统。
OpenVZ主要由三部分组成:内核、管理程序及操作系统模板。在安装之前需要确认使用了内核已支持OpenVZ,OpenVZ官方已提供。
工具程序 ——— OpenVZ提供几种工具程序以创建、监控和管理虚拟服务器、软件包管理和操作系统模板管理,并提供系统快照和热迁移。热迁移执行不需要共享存储,维护网络连接,并且在不易察觉的几秒钟之内完成。vzctl用于创建,配置,修改,启动和关闭VPS。
模板———为了使VPS创建更容易,OpenVZ提供了模板包,里面是用于定义常见Linux发行版的元数据. 只要你下载或安装了一个内核和一些附加的软件包,建立一个OpenVZ系统既快速又容易。创建一个操作系统模板或下载一个预创建操作系统模板需要比较多的时间和带宽,不过一旦你设置了模板指令,创建运行在任何支持的Linux版本上的VPS非常快速和容易。创建一台VPS和启动它只要不到两分钟的时间。
OpenVZ的特点
由于一台OpenVZ 虚拟主机只是一套运行在类似chroot环境中的程序,它仅消耗运行这些程序所需要的CPU和内存。一台运行Web的VPS(如 Apache Web服务器 Sshd Sendmail和 Syslogd)大约只有10个程序,这为单台主机提供高密度的虚拟环境提供了可能。OpenVZ开发者作过一些测试,在一个RAM为2GB的奔4处理器上可以运行高达320台的VPS。OpenVZ如此轻便,但功能却没减少。OpenVZ有自己的资源管理平台,系统管理员能为每台VPS上动态分配资源。
OpenVZ的优势
OpenVZ适用于许多地方,包括服务器整合、安全、开发与测试。如果有多台服务器的资源未被充分利用,OpenVZ可以用来把它们整合成少数物理机。为了提高系统的安全性,系统管理员可把生产环境运行在VPS中,它对物理主机是透明的,这样即便失去了VPS的控制权,重做系统和恢复环境可在不到3分钟的时间内完成。当然,使用VPS后,单台主机上将会根据实际出现多个同网段的IP地址,对维护略有影响。