公众号旧文
什么是KVM和LXD?虚拟化还有哪些种类?
在服务器和云计算领域,虚拟化是一个非常核心的技术。
简单的说:虚拟化就是一台物理机器,被切成很多虚拟机器来使用。
KVM、LXD 都是虚拟化的一种实现方式,但原理完全不同。
理解它们,先要知道虚拟化的几种主要类型。
一、虚拟化大体可以分为四类
| 类型 | 原理 | 代表技术 |
|---|---|---|
| 硬件虚拟化 | 模拟完整电脑硬件 | KVM、VMware、Hyper-V |
| 操作系统级虚拟化(容器) | 共用宿主机内核 | LXD、Docker |
| 半虚拟化 | 客户机配合修改内核 | Xen |
| 应用虚拟化 | 只虚拟化应用运行环境 | Wine、沙箱 |
最常见的就是这两种:
1️⃣ 硬件虚拟化(VM) 2️⃣ 容器虚拟化(Container)
KVM 和 LXD 正好分别代表这两类。
二、什么是 KVM
KVM 全称:
Kernel-based Virtual Machine
它是 Linux 内核里的一个模块。
简单理解:
KVM 可以把 Linux 变成一个“虚拟机管理程序(Hypervisor)”。
也就是说:
一台服务器可以跑很多“完整的电脑”。
例如:
物理服务器
│
├─ Ubuntu 虚拟机
├─ Windows 虚拟机
├─ Debian 虚拟机
└─ CentOS 虚拟机
每个虚拟机都有:
- 自己的 CPU
- 自己的内存
- 自己的硬盘
- 自己的操作系统
就像独立电脑。
常见使用 KVM 的平台:
- Proxmox VE
- OpenStack
- oVirt
优点:
- 完全隔离
- 可以运行任何系统(Linux / Windows / BSD)
- 安全性高
缺点:
- 资源消耗大
- 启动慢
三、什么是 LXD
LXD 属于 容器虚拟化。
它的底层是 Linux 的 LXC(Linux Containers)。
LXD 可以理解为“系统级 Docker”。
区别在于,Docker 通常只跑一个应用:
docker run nginx
而 LXD 是跑一个完整 Linux 系统:
lxd launch ubuntu
结构是这样的:
物理服务器
│
├─ Ubuntu 容器
├─ Debian 容器
└─ Alpine 容器
但是这些容器:
共享宿主机的 Linux 内核
所以:
- 不能运行 Windows
- 不能运行不同内核
优点:
- 启动极快(秒级)
- 资源占用很低
- 密度很高(可跑上百个)
缺点:
- 只能运行 Linux
- 隔离性不如 VM
四、KVM vs LXD
| 项目 | KVM | LXD |
|---|---|---|
| 类型 | 硬件虚拟化 | 容器虚拟化 |
| 操作系统 | 任意系统 | 只能 Linux |
| 隔离性 | 非常强 | 较强 |
| 启动速度 | 慢 | 很快 |
| 资源占用 | 高 | 低 |
| 使用场景 | VPS / 云服务器 | PaaS / 开发环境 |
一句话总结:KVM 是“虚拟电脑”,LXD 是“虚拟系统环境”。
五、常见虚拟化技术
下面是比较常见的虚拟化方案:
1.Hypervisor 类
- KVM
- VMware ESXi
- Microsoft Hyper-V
- Xen
特点:完全虚拟一台电脑
2.容器类
- Docker
- LXD
- Podman
特点:共享内核
3.轻量虚拟机
近几年还有一种新类型:
- Firecracker
- Kata Containers
特点:VM的安全 + 容器的速度
像云厂商很多 serverless 都用这种。
六、为什么云服务器大多用 KVM
大部分 VPS(云服务器)背后都是 KVM。
原因:
- 安全隔离强
- 可以跑 Windows
- 稳定成熟
- Linux 内核自带
很多云厂商底层结构:
OpenStack (云平台管理)
↓
KVM (虚拟化技术)
↓
物理服务器 (真实硬件)
可以用一个更形象的比喻:
OpenStack = 酒店前台
KVM = 房间隔墙
物理服务器 = 整栋楼
七、写在最后
从 KVM 到 LXD,再到 Docker,本质上都是在解决同一个问题:
如何更高效地利用计算资源。
在早期,一台服务器通常只能运行一个系统,资源利用率往往很低。而虚拟化技术的出现,让一台物理机器可以被拆分成多个独立的运行环境,大大提升了资源利用效率。
KVM 是在虚拟“电脑”,LXD 是在虚拟“系统环境”,Docker 则是在虚拟“应用”。
它们并不是互相替代的关系,而是分别解决不同层面的需求。
也正因为这些技术的发展,今天的云计算、容器平台和各种在线服务才能如此高效地运行在全球的数据中心里。