Proxmox VE 存储模型非常灵活。 虚拟机镜像可以存储在一个或多个本地存储上,也可以存储在共享 NFS 或 iSCSI(NAS、SAN)等存储。 没有限制,你可以配置任意数量的存储池。 你可以使用所有 Debian Linux 可用的存储技术。

将虚拟机存储在共享存储上的一大好处是能够实时迁移正在运行的虚拟机,没有任何停机时间,因为所有节点都在集群可以直接访问 VM 磁盘镜像。 没有必要复制 VM 镜像数据,因此在这种情况下实时迁移非常快。

存储库(包 libpve-storage-perl )使用灵活的插件系统为所有存储类型提供通用接口。 这个将来可以很容易地采用以包含更多存储类型。

存储类型

基本上有两种不同的存储类型:

  • 文件级存储

基于文件级的存储技术允许访问全功能 (POSIX) 文件系统。 它们通常比任何块级存储都更灵活 (见下文),并允许您存储任何类型的内容。 ZFS 可能是最先进的系统,它完全支持快照和克隆。

  • 块级存储

允许存储大型原始镜像。通常无法存储此类存储类型上的其他文件(ISO、备份等)。 最现代的块级存储实现支持快照和克隆。 RADOS 和 GlusterFS 是分布式系统,复制存储数据到不同的节点。

Proxmox VE 存储介绍_服务器

1 :在基于文件的存储上,可以使用 qcow2 格式进行快照。
2 :可以在基于 iSCSI 或 FC 的存储之上使用 LVM。 这样您就可以获得 共享的 LVM 存储。

Thin Provisioning(精简配置)

许多存储和 Qemu 映像格式qcow2支持精简配置。激活精简配置后,只有Guest系统实际使用的块才会写入存储。

比如说你创建了一个32GB硬盘的虚拟机,在安装了guest system OS之后,虚拟机的根文件系统包含了3GB的数据。在这种情况下,即使 Guest VM 看到 32GB 的硬盘驱动器,也只会将 3GB 写入存储。通过这种方式,精简配置允许您创建大于当前可用存储块的磁盘映像。您可以为 VM 创建大型磁盘映像,并在需要时向存储添加更多磁盘,而无需调整 VM 文件系统的大小。

所有具有“快照”功能的存储类型也支持精简配置。

如果存储已满,则所有使用该存储上的卷的来宾都会收到 IO 错误。这可能会导致文件系统不一致并可能损坏您的数据。因此,建议避免过度配置您的存储资源,或仔细观察可用空间以避免出现此类情况。

目录后端(本地,文件级)

存储池类型:dir

Proxmox VE 可以使用本地目录或本地安装的共​​享进行存储。目录是文件级存储,因此您可以存储任何内容类型,例如虚拟磁盘映像、容器、模板、ISO 映像或备份文件。

您可以通过标准的 linux /etc/fstab挂载额外的存储,然后为该挂载点定义一个目录存储。这样您就可以使用 Linux 支持的任何文件系统。

此后端假定底层目录与 POSIX 兼容,但仅此而已。这意味着您不能在存储级别创建快照。但是对于使用qcow2文件格式的VM 映像存在一种解决方法,因为该格式在内部支持快照。例如:

root@pve:/var/lib/vz# qemu-img info images/106/base-106-disk-0.qcow2

image: images/106/base-106-disk-0.qcow2
file format: qcow2
virtual size: 32 GiB (34359738368 bytes)
disk size: 5.2 MiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false

root@pve:/var/lib/vz# qemu-img info images/107/vm-107-disk-0.qcow2

image: images/107/vm-107-disk-0.qcow2
file format: qcow2
virtual size: 32 GiB (34359738368 bytes)
disk size: 204 KiB
cluster_size: 65536
backing file: ../106/base-106-disk-0.qcow2 (actual path: images/107/../106/base-106-disk-0.qcow2)
backing file format: qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK ICOUNT
1 testsnap 0 B 2021-09-07 15:38:08 00:00:00.000 0
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false


这同样适用于克隆。后端使用qcow2基础映像功能创建克隆。

Proxmox VE 存储介绍_文件系统_02

某些存储类型不支持 O_DIRECT,因此您不能将缓存模式 none 用于此类存储。只需使用缓存模式 writeback 即可。

我们使用预定义的目录布局将不同的内容类型存储到不同的子目录中。所有文件级存储后端都使用此布局。

Proxmox VE 存储介绍_存储类型_03

示例:

root@pve:/var/lib/vz# tree
.
├── dump
│ ├── vzdump-qemu-107-2021_09_07-15_47_25.log
│ ├── vzdump-qemu-107-2021_09_07-15_47_25.vma.zst
│ ├── vzdump-qemu-107-2021_09_07-15_48_12.log
│ └── vzdump-qemu-107-2021_09_07-15_48_12.vma.zst
├── images
│ ├── 106
│ │ └── base-106-disk-0.qcow2
│ └── 107
│ └── vm-107-disk-0.qcow2
├── private
├── snippets
└── template
├── cache
├── iso
│ ├── cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso
│ ├── debian-11.0.0-amd64-DVD-1.iso
│ ├── ubuntu-18.04.5-server-amd64.iso
│ ├── ubuntu-20.04.1-legacy-server-amd64.iso
│ └── virtio-win-drivers-20120712-1.iso
└── qemu

10 directories, 11 files


NFS 后端(共享,文件级)

存储池类型:nfs

NFS 后端基于目录后端,因此它共享大多数属性。目录布局和文件命名约定是相同的。主要优点是可以直接配置NFS服务器属性,所以后端可以自动挂载共享。无需修改/etc/fstab。后端还可以测试服务器是否在线,并提供了一种向服务器查询导出共享的方法。

NFS 不支持快照,但后端使用qcow2特性来实现快照和克隆。

Proxmox VE 存储介绍_数据_04

您可以通过以下方式获取导出的 NFS 共享列表:

# pvesm nfsscan <server>


CephFS 后端(共享,文件级,不推荐)

存储池类型:cephfs

CephFS 实现了符合 POSIX 的文件系统,使用Ceph 存储集群来存储其数据。由于 CephFS 建立在 Ceph 之上,因此它共享其大部分属性。这包括冗余、可扩展性、自我修复和高可用性。

Proxmox VE 可以管理 Ceph 设置,这使得配置 CephFS 存储更容易。由于现代硬件提供了大量处理能力和 RAM,因此可以在同一节点上运行存储服务和 VM,而不会对性能产生重大影响。

要使用 CephFS 存储插件,您必须通过添加我们的Ceph 存储库来替换现有的 Debian Ceph 客户端。添加后,运行apt update,然后运行apt dist-upgrade,以获得最新的软件包。

请确保没有配置其他 Ceph 存储库。否则安装将失败或节点上会出现包版本混合,导致意外行为。

Proxmox VE 存储介绍_存储类型_05

[1]虽然不存在已知的错误,但快照还不能保​​证稳定,因为它们缺乏足够的测试。

LVM-thin 后端(本地,块级)

存储池类型:lvmthin

LVM 通常在您创建卷时分配块。LVM 精简池在写入时分配块。这种行为称为精简配置,因为卷可能比物理可用空间大得多。

您可以使用普通的 LVM 命令行工具来管理和创建 LVM 精简池(有关详细信息,请参阅man lvmthin)。假设您已经有一个名为pve的 LVM 卷组,以下命令会创建一个名为data的新 LVM 精简池(大小为 100G):

lvcreate -L 100G -n data pve
lvconvert --type thin-pool pve/data


LVM 精简是一种块存储,但完全支持高效的快照和克隆。新卷自动初始化为零。

必须提到的是,LVM 精简池不能跨多个节点共享,因此您只能将它们用作本地存储。

Proxmox VE 存储介绍_服务器_06

Ceph/RBD 后端(共享,块级)

存储池类型:rbd

Ceph是一个分布式对象存储和文件系统,旨在提供卓越的性能、可靠性和可扩展性。RADOS 块设备实现了功能丰富的块级存储,您将获得以下优势:

  • 精简配置
  • 可调整大小的卷
  • 分布式和冗余(在多个 OSD 上条带化)
  • 完整的快照和克隆功能
  • 自愈
  • 无单点故障
  • 可扩展到 exabyte 艾字节级别
  • 内核和用户空间实现可用

对于较小的部署,也可以直接在 Proxmox VE 节点上运行 Ceph 服务。最近的硬件具有充足的 CPU 能力和 RAM,因此可以在同一节点上运行存储服务和 VM。

RBD后端是块级存储,并实现全快照和克隆功能。

Proxmox VE 存储介绍_服务器_07

Proxmox Backup(共享,文件级或块级,灾难恢复)

存储池类型:pbs

该后端允许将 Proxmox 备份服务器像任何其他存储一样直接集成到 Proxmox VE 中。Proxmox 备份存储可以通过 Proxmox VE API、CLI 或网络界面直接添加。

Proxmox VE 存储介绍_服务器_08