虚拟化

什么是OpenVZ?

又称: Virtuozzo
定义

OpenVZ is container-based virtualisation in which every instance shares the host kernel, so guests cannot load kernel modules or run a different operating system. OpenVZ is why unusually cheap virtual servers exist: density is much higher and memory is routinely oversold.

为什么OpenVZ很重要

OpenVZ 是异常便宜的虚拟服务器存在的原因:密度更高,内存经常超额销售。这也是 Docker、较旧主机上的 WireGuard 和自定义内核在预算型提供商中经常失败的原因。

OpenVZ的实际应用

当你运行 OpenVZ VPS 时,你活在宿主机内核里。你在 /proc 中能看到这点,也能从无法加载的内核模块看出:试试 modprobe wireguard,它会报权限错误,而不是找不到文件。更换内核是不可能的事,所以你得适应工作负载,而不是宿主机。内存是共享的,而且常常过度分配,邻居的峰值可能会影响你。这里出错代价很高:为需要内核控制的任务选 OpenVZ 机器,你就得在 KVM 上重建或更换套餐。

人们对OpenVZ常见的误解

一个常见错误是认为 OpenVZ 只是 KVM 的旧版或便宜版本。其实不是。OpenVZ 容器无法加载内核模块、无法运行不同的操作系统,在旧宿主机上也无法使用 WireGuard 等特性。纠正:把 OpenVZ 视为一种独特的限制,而不是 KVM 的子集。如果你需要内核级控制,从一开始就选择 KVM 套餐。

OpenVZ —— 常见问题

我能在 OpenVZ 上运行 Docker 吗?

通常不能直接运行。因为 OpenVZ 共享宿主机内核,可能限制内核特性,Docker 的常规容器运行时可能会失败,尤其是在旧宿主机上。你可以尝试 lxc 之类的变通方法,或在虚拟机里运行容器,但不能保证。在依赖 Docker 之前,请先检查宿主机的能力。

OpenVZ 适合做什么?

OpenVZ 适合高密度环境,即在一台宿主机上运行大量实例,所以很便宜。它适合典型的网页服务器、轻量应用,以及不需要内核修改的工作负载。只要避免需要自定义内核、嵌套虚拟化或特殊网络特性的任务即可。

OpenVZ在哪些地方出现

更多来自虚拟化

KVM
KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
LXC
LXC 是 Linux 原生的容器化技术,通过命名空间和 cgroups 隔离进程,同时共享主机内核。
虚拟机监控程序
虚拟机监控程序是创建和运行虚拟机的软件层,在它们之间分配物理 CPU、内存和 I/O。
嵌套虚拟化
嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
vCPU
vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。
cloud-init
cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。