外观
PVE 的存储模型:先搞清楚东西存在哪
PVE 不像普通 Linux 那样「什么都往目录里扔」。它把存储抽象成一个个存储 (Storage),每个存储有类型和允许存放的内容类型。理解这个模型,很多困惑会自动消失。
两个正交的概念
存储类型:数据怎么落盘
| 类型 | 本质 | 支持快照 | 典型用途 |
|---|---|---|---|
| Directory | 一个文件系统目录 | 取决于磁盘格式 | ISO、备份、模板 |
| LVM | LVM 卷组 | 否 | 虚拟机磁盘(较少用) |
| LVM-Thin | LVM 精简池 | 是 | 虚拟机磁盘(默认) |
| ZFS | ZFS 数据集 / zvol | 是 | 虚拟机磁盘 + 数据 |
| NFS / SMB | 网络共享 | 取决于磁盘格式 | 备份、ISO、共享镜像 |
| Ceph RBD | 分布式块存储 | 是 | 集群共享存储 |
内容类型:这个存储允许放什么
在 数据中心 → 存储 → 编辑 里能看到这些勾选项:
| 内容类型 | 界面常见名称 | 放什么 |
|---|---|---|
images | Disk image | 虚拟机的虚拟磁盘 |
rootdir | Container | LXC 容器的根文件系统 |
vztmpl | Container template | LXC 模板压缩包 |
iso | ISO image | 安装镜像 |
backup | VZDump backup file | 备份文件 |
snippets | Snippets | Cloud-Init 配置等片段 |
这解释了那个经典困惑
「为什么上传 ISO 时只能选 local?」——因为默认只有 local 勾选了 iso 内容类型,local-lvm 是块存储,根本放不了文件。
「为什么虚拟机磁盘不能选 local?」——默认 local 没勾 images。可以勾上,勾上之后磁盘会以 qcow2 文件形式放在 /var/lib/vz/images/。
块存储与文件存储的分水岭
这是理解一切的关键区别:
块存储(LVM、LVM-Thin、ZFS zvol、Ceph RBD)给客户机一个裸块设备。没有「文件」的概念,所以:
- 不能放 ISO、备份、模板。
- 磁盘格式固定是
raw。 - 快照由存储层提供(LVM-Thin 和 ZFS 有,普通 LVM 没有)。
文件存储(Directory、NFS、SMB、ZFS 数据集上的目录)里面就是文件。所以:
- 什么都能放。
- 虚拟磁盘可以是
qcow2(支持快照、精简分配)或raw(性能略好、不支持快照)。 - 磁盘格式决定能不能快照:qcow2 能,raw 不能。
raw 格式放在目录存储上不能打快照
这是很常见的踩坑:在目录存储上建虚拟机时选了 raw 格式(有些教程为了性能这么建议),之后发现快照按钮是灰的。想要快照就用 qcow2,或者把虚拟机放到 LVM-Thin / ZFS 上。
查看你当前的存储
Web UI:数据中心 → 存储,能看到每个存储的 ID、类型、内容类型和所在节点。
命令行更直观:
sh
pvesm status输出类似:
text
Name Type Status Total Used Available %
local dir active 98497780 3821068 89625396 3.88%
local-lvm lvmthin active 340000768 0 340000768 0.00%看某个存储的详细配置:
sh
cat /etc/pve/storage.cfg这个文件是所有存储配置的唯一来源。Web UI 的改动最终都落到这里。集群中它会自动同步到所有节点。
存储的作用范围
每个存储可以限定在某些节点上(Nodes 字段)。默认 local 和 local-lvm 是每个节点各有一份同名的本地存储——名字一样,内容完全不同。
这影响迁移
虚拟机磁盘在本地存储上时,迁移到另一个节点需要连磁盘一起搬(存储迁移),耗时取决于磁盘大小。磁盘在共享存储(NFS、Ceph)上时,迁移只搬内存状态,几秒钟的事。这是集群规划时的关键考虑,见集群与高可用。
该怎么规划
一个典型的单机规划:
| 数据 | 放哪 | 理由 |
|---|---|---|
| ISO 和容器模板 | local | 文件存储,本来就是干这个的 |
| 虚拟机与容器磁盘 | local-lvm 或 ZFS 池 | 块存储,性能好,支持快照 |
| 备份 | 另一台机器上的 NFS / PBS | 和源数据放一起等于没备份 |
| 大文件(媒体库等) | 独立数据盘,或交给 NAS 虚拟机 | 和虚拟机磁盘分开,IO 特性不同 |
备份不要放在 local
默认 local 勾选了 backup 内容类型,所以新手很容易把备份存在系统盘上。这样做,系统盘坏了备份和数据一起没。备份的第一要求是和源数据不在同一个故障域。见备份与恢复。
检查结果
在你的机器上回答这三个问题:
- 执行
pvesm status,每个存储的类型和剩余空间分别是多少? - 打开
数据中心 → 存储,local和local-lvm分别勾了哪些内容类型? - 如果现在建一台虚拟机,磁盘会落在哪个存储上?能打快照吗?
三个都答得上来,就可以往下走了。