OpenVZ是开源软件,是基于Linux平台的操作系统级服务器虚拟化解决方案。OpenVZ采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,Virutozzo是SWsoft公司提供的商业虚拟化解决方案。
OpenVZ可以在单个物理服务器上创建多个隔离的虚拟专用服务器(VPS)并以最大效率共享硬件和管理资源。每个VPS的运行和独立服务器完全一致,因其自身的用户、应用程序都可以独立重起,它拥有根访问权限、用户、IP地址、内存、处理器、文件、应用服务、系统库文件和配置文件等。拥有轻量级处理损耗和高效设计的OpenVZ是运行应用服务和实时数据生产型服务器虚拟化的最佳选择。
- OpenVZ是基于Linux操作系统内核的虚拟化技术,因此只能在OpenVZ虚拟化技术只能虚拟Linux系统
- 只有有限的、特殊定制的Linux系统能够作为VPS的操作系统,也就是说,此虚拟化技术不能运行Windows操作系统
- 宿主机中划分出一个目录,当做VPS的整个磁盘,并且宿主机根据磁盘配额限制这个目录的大小。因此,如果提供商给你“划分”了30G的磁盘空间,宿主机是不需要真真正正的30G可用空间的
- 相同的道理,宿主机给虚拟机“划分”了512M的内存空间,当VPS开机时,并不会完全“独占”宿主机的512M内存,而是需要多少用多少,只是不能超过限制而已。这种内存分配方式就给服务商的“超售”带来了可能。
- 接上,由于服务商给你分配的512M内存只是概念上的,因此,真正能分给你使用的内存,取决于这个服务商的口碑。
- OpenVZ由于其本身虚拟化技术的限制,即便是对于Linux系统,也有很多涉及内核的功能无法正常使用,比如PPTP协议的VPN、iptables防火墙的部分功能等无法正常使用。
- OpenVZ架构的Linux是没有Swap分区的,你也不能对磁盘进行分区等操作
- OpenVZ有比较明显的优点:同等条件下(不超售),OpenVZ的开销小于XEN架构,并且性能略高于XEN;磁盘空间只是个数字上的限制而已,如果想升级VPS空间,或者减少空间,无需对磁盘做任何调整即可实现。内存同理。OpenVZ上运行的代码都是直接运行于宿主机的,没有虚拟化的开销。
简而言之,OpenVZ的主机说“256MB的保证”,它实际上意味着约232MB的“privvmpages”,14M的“kmemsize”和其他杂项资源。当应用程序调用 malloc()分配的内存将被添加到“privvmpages”。当“privvmpages”超过限制,malloc()将失败并返回一个NULL。当主机服务器内存用光了,然后虚拟环境下的进程超过 “oomguarpages”的将被终止。
OpenVZ的内存管理方法既有问题也有优势。最大的问题之一是内存容量的应用程序使用的内存和应用程序实际上分配到的内存是不同的,不同的应用程序他们的差别可能会很大。以Java为例,它通常分配一大块的内存,但是,它可能只使用一小部分分配的内存。如果privvmpages受限,java会立即停止运行。调整参数可以解决一部分问题,但它处理得绝对没有Xen来得干净利落。事实上,几乎所有使用内存分配的应用程序都会受OpenVZ这个问题的影响。
/proc/meminfo 本身也有问题。虽然OpenVZ的已经为内存进行了虚拟,但是用”free”命令依然会返回主机的内存。这样就会使小内存的openvz的vps无法运行诸如java或者gcc编译这样的程序。
OpenVZ的内存模型的优点是, 它容易理解:你几乎就只有privvmpages受限。与专用的服务器或Xen的服务器不一样的是,你的磁盘高速缓存和页面缓存并不计入您的总内存使用情况。因此,在一个没有过度销售的openvz主机上,由于拥有较大冗余的公共资源,它实际上可能会比同类规格的Xen的VPS表现更佳。
Openvz一旦内存用尽,则会突然死亡:开不出新的程序,只能等待系统资源可用。更有甚者,本来运行的好好的程序也可能因为不断增长而超过限制,然后突然死亡。这就像开车开到70码,然后突然撞墙上了,一般会死得很惨。