OpenVZ是一种基于Linux内核的操作系统级虚拟化
OpenVZ 是一种基于 Linux 内核的操作系统级虚拟化(OS-Level Virtualization)技术。
核心思想很简单但非常高效:一套 Linux 内核,同时运行多个相互隔离的用户空间实例。这些实例通常叫 容器(Container),在 OpenVZ 中称为 VE(Virtual Environment)或 CT(Container)。
1.OpenVZ 的核心架构
OpenVZ 依赖 修改过的 Linux Kernel,在内核层实现资源隔离与管理。
flowchart TB
subgraph Hardware
HW[Physical Server]
end
subgraph Kernel
K[OpenVZ Kernel]
end
subgraph Containers
CT1[Container 101]
CT2[Container 102]
CT3[Container 103]
end
HW --> K
K --> CT1
K --> CT2
K --> CT3
关键点:
只有一个 Linux Kernel
每个容器有独立:
- root filesystem
- network stack
- process tree
- user
内核统一调度 CPU、内存、IO
这意味着一个容器启动几乎是秒级。
2.OpenVZ 的核心隔离机制
OpenVZ在Linux内核里实现了多种隔离技术。
1 Process Isolation(进程隔离)
每个容器拥有自己的 PID空间
容器内:
PID 1 -> init
PID 2 -> sshd
PID 3 -> nginx
但宿主机实际上可能是:
PID 14321 nginx (container101)
2 Filesystem Isolation(文件系统隔离)
每个容器拥有独立 rootfs:
/vz/root/101/
/vz/root/102/
/vz/root/103/
容器内部看到:
/
├── bin
├── etc
├── var
类似 chroot,但安全和功能更强。
3 Network Isolation(网络隔离)
每个容器有独立网络接口
venet0
eth0
veth101
容器内部:
eth0 -> 192.168.1.101
宿主机:
veth101 -> bridge -> physical NIC
4 Resource Control(资源控制)
OpenVZ 有一套很细致的资源限制系统:
| 资源 | 机制 |
|---|---|
| CPU | CPU units / CPU limit |
| Memory | UBC(User Beancounters) |
| Disk | quota |
| Network | traffic shaping |
例如:
CPU: 2 core
RAM: 2GB
Disk: 50GB
容器无法突破限制。
3.OpenVZ 关键组件
1 容器 ID
每个容器有唯一 ID
CTID = 101
目录:
/vz/private/101
2 模板(Template)
创建容器使用 OS 模板
例如:
centos-7-x86_64
debian-11-x86_64
创建容器:
vzctl create 101 --ostemplate centos-7
3 管理工具
OpenVZ 常见工具:
| 工具 | 作用 |
|---|---|
| vzctl | 管理容器 |
| vzlist | 列出容器 |
| vzquota | 磁盘配额 |
| vzcfgvalidate | 配置检查 |
例子:
vzctl start 101
vzctl stop 101
vzctl enter 101
4.OpenVZ vs 传统虚拟化
| 特性 | OpenVZ | KVM |
|---|---|---|
| 虚拟化类型 | OS级虚拟化 | 硬件虚拟化 |
| Kernel | 共享宿主机 | 每VM独立 |
| 启动速度 | 秒级 | 分钟级 |
| 资源开销 | 非常低 | 较高 |
| 操作系统 | 只能Linux | 任意OS |
核心限制:
OpenVZ 只能运行 Linux。
5.OpenVZ 与现代容器技术关系
很多现代容器技术其实是 OpenVZ思想的进化版。
技术演化:
flowchart LR
Chroot --> OpenVZ
OpenVZ --> LXC
LXC --> Docker
Docker --> Kubernetes
关键技术来自 Linux:
- LXC
- Docker
- Kubernetes
而底层机制:
Namespaces
Cgroups
UnionFS
OpenVZ 在很多年前就实现了类似机制。
6.OpenVZ 的典型应用场景
VPS主机商
大量 VPS:
1 台服务器
100+ 容器
典型提供商:
- VPS hosting
- 云服务器
高密度服务器
运行:
Web server
Mail server
DB server
几十甚至几百个容器。
7.OpenVZ 的演进
后来 OpenVZ 发展成:
Virtuozzo
区别:
| 版本 | 说明 |
|---|---|
| OpenVZ | 开源版本 |
| Virtuozzo | 商业版本 |
现在 OpenVZ 7 已经:
- 基于 RHEL7 Kernel
- 支持 KVM + Container
8.总结
OpenVZ 的核心价值只有一句话:
极致密度的 Linux 虚拟化。
优点:
- 启动快
- 资源占用极低
- 密度极高
缺点:
- 内核共享
- 安全隔离弱于VM
- 只能Linux