跳转到内容

PVE 的存储模型:先搞清楚东西存在哪 ​

PVE 不像普通 Linux 那样「什么都往目录里扔」。它把存储抽象成一个个存储 (Storage),每个存储有类型和允许存放的内容类型。理解这个模型,很多困惑会自动消失。

两个正交的概念 ​

存储类型:数据怎么落盘 ​

类型本质支持快照典型用途
Directory一个文件系统目录取决于磁盘格式ISO、备份、模板
LVMLVM 卷组否虚拟机磁盘(较少用)
LVM-ThinLVM 精简池是虚拟机磁盘(默认)
ZFSZFS 数据集 / zvol是虚拟机磁盘 + 数据
NFS / SMB网络共享取决于磁盘格式备份、ISO、共享镜像
Ceph RBD分布式块存储是集群共享存储

内容类型:这个存储允许放什么 ​

在 数据中心 → 存储 → 编辑 里能看到这些勾选项:

内容类型界面常见名称放什么
imagesDisk image虚拟机的虚拟磁盘
rootdirContainerLXC 容器的根文件系统
vztmplContainer templateLXC 模板压缩包
isoISO image安装镜像
backupVZDump backup file备份文件
snippetsSnippetsCloud-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 内容类型,所以新手很容易把备份存在系统盘上。这样做,系统盘坏了备份和数据一起没。备份的第一要求是和源数据不在同一个故障域。见备份与恢复。

检查结果 ​

在你的机器上回答这三个问题:

  1. 执行 pvesm status,每个存储的类型和剩余空间分别是多少?
  2. 打开 数据中心 → 存储,local 和 local-lvm 分别勾了哪些内容类型?
  3. 如果现在建一台虚拟机,磁盘会落在哪个存储上?能打快照吗?

三个都答得上来,就可以往下走了。

延伸阅读 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。