OpenVZ

核心

OpenVZ的核心是Linux，并进行了修改以加入对OpenVZ虚拟环境的支持。修改后的核心提供了虚拟化，隔离，资源管理和检查点机制。

资源管理

OpenVZ的资源管理包括三个部分：两级磁盘配额，公平的CPU调度器，以及user beancounters。这些资源在虚拟环境的运行过程中可以调整，可以不必重启动。

两级磁盘配额

每一个虚拟环境都有其自己的磁盘配额，以磁盘的block数和inode（大概相当于文档的数目）的数目来计算。在虚拟环境中，可以通过标准的工具来设置UNIX用户和用户组的磁盘配额。

CPU调度器

OpenVZ中的调度器是一个两级的公平分享调度策略的实现。
在第一级，调度器根据每个虚拟环境的cpuunits的值决定哪一个虚拟环境被分配CPU时间片。在第二级，标准的Linux调度器使用标准的Linux进程优先级和相关机制决定该虚拟环境中的哪一个进程获得CPU。

检查点机制和动态迁移

2006年4月中旬的OpenVZ发布了动态迁移和检查点功能。这使得在将一个虚拟环境从一个物理服务器迁移到另一个物理服务器的过程中不需要进行关机。这个过程被称为动态迁移：一个虚拟环境被冻结，然后它的所有状态被存到磁盘中的一个文件中；这个文件被传输到另外一个机器，然后虚拟环境在那里被解冻（恢复）。整个过程的延迟时间只有数秒。由于状态通常被完整地保护，这个暂停看起来就像一个正常的计算延迟。

用户级工具

OpenVZ提供了命令行工具来管理虚拟环境（vzctl）和虚拟环境中的软件（vzpkg）。

vzctl

这是一个简单的用于管理一个虚拟环境的高级命令行工具。

模板与vzpkg

可以用OpenVZ的模板快速部署OpenVZ Linux虚拟机，OpenVZ的模板可在OpenVZ的网站下载。不同Linux发行版所用的模板不同。比如，使用CentOS 7的模板部署采用CentOS 7发行版的OpenVZ虚拟机，使用Debian 8的模板部署采用Debian 8发行版的OpenVZ虚拟机等。

可扩展性

由于OpenVZ使用了一个单独的核心模型，它就和2.6版的Linux核心有着同样的可扩展性。它支持高达64个CPU和64G内存，一个单独的虚拟环境可以扩放到整个物理服务器，比如说使用所有的CPU和所有的内存。

密度

OpenVZ可以在一台相当好的硬件上运行上百个虚拟环境（主要瓶颈是内存和CPU）。
图标显示了虚拟环境上的Apache HTTP Server响应时间与虚拟环境数目的关系。测量是在一台有768M内存的机器上进行的；每一个虚拟环境都运行一组通常的进程：init、syslogd、crond、sshd和Apache。Apache用来提供静态页面，而这些页面是由http_load所读取，然后测度第一个响应的时间。就如你看到的一样，随着虚拟环境的数量增加，响应时间由于内存存储和交换而变得更长。
在这种场景下，在一个768M内存的硬件上运行高达120个这样的虚拟环境是可能的。并以线性的方式外推，所以可以在1台2G内存的硬件上运行320个这样的虚拟环境。

集中管理

一台OpenVZ物理服务器（也称为硬件节点）的拥有者（root）可以看见所有虚拟环境的进程和文件。这使得大规模的管理成为可能。试想想当你是用VMware 或 Xen 来做服务器集成的情况：为了给你的10个虚拟服务器进行安全更新，你必须登录到每一台机器并运行更新过程，这跟你为10台物理服务器进行更新是一样的。
在OpenVZ，你可以运行一个简单的shell脚本，就可以一次更新所有（或只是你选择的）虚拟环境。