PVE 存储系统

作者Lin-Tech

11 月 1, 2023

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

将虚拟机存储在共享存储上的一大好处是能够在不停机的情况下实时迁移正在运行的计算机,因为集群中的所有节点都可以直接访问虚拟机磁盘映像。无需复制虚拟机镜像数据,因此实时迁移速度非常快。

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

7.1. 存储类型

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

文件级存储

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

块级存储

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

Table 2. Available storage types
Description Plugin type Level Shared Snapshots Stable

ZFS (local)

zfspool

both1

no

yes

yes

Directory

dir

file

no

no2

yes

BTRFS

btrfs

file

no

yes

technology preview

NFS

nfs

file

yes

no2

yes

CIFS

cifs

file

yes

no2

yes

Proxmox Backup

pbs

both

yes

n/a

yes

GlusterFS

glusterfs

file

yes

no2

yes

CephFS

cephfs

file

yes

yes

yes

LVM

lvm

block

no3

no

yes

LVM-thin

lvmthin

block

no

yes

yes

iSCSI/kernel

iscsi

block

yes

no

yes

iSCSI/libiscsi

iscsidirect

block

yes

no

yes

Ceph/RBD

rbd

block

yes

yes

yes

ZFS over iSCSI

zfs

block

yes

yes

yes

1:VM 的磁盘映像存储在 ZFS 卷 (zvol) 数据集中,该数据集提供块设备功能。

2:在基于文件的存储上,快照可以采用qcow2格式。

3:可以在 iSCSI 或基于 FC 的存储之上使用 LVM。这样你就可以获得共享的LVM 存储

7.1.1. 精简配置

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

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

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

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

7.2. 存储配置

所有与 Proxmox VE 相关的存储配置都存储在/etc/pve/storage.cfg的单个文本文件中。由于此文件位于/etc/pve/中,因此它会自动分发到所有集群节点。因此所有节点共享相同的存储配置。

共享存储配置对于共享存储来说非常有意义,因为可以从所有节点访问相同的“共享”存储。但它对于本地存储类型也很有用。在这种情况下,这种本地存储在所有节点上都可用,但它在物理上不同并且可以具有完全不同的内容。

7.2.1. 存储池

每个存储池都有一个<type> ,并由其<STORAGE_ID>唯一标识 。池配置如下所示:

<类型>:<存储ID>
        <属性> <值>
        <属性> <值>
        <属性>
        ...

<type> : <STORAGE_ID>行开始池定义,然后是属性列表。大多数属性都需要一个值。有些具有合理的默认值,在这种情况下您可以省略该值。

更具体地说,看一下安装后的默认存储配置。它包含一个名为local的特殊本地存储池 ,它引用目录/var/lib/vz并且始终可用。Proxmox VE 安装程序根据安装时选择的存储类型创建额外的存储条目。

默认存储配置(/etc/pve/storage.cfg)
目录:本地
        路径 /var/lib/vz
        内容 iso、vztmpl、备份

# 基于 LVM 安装的默认映像存储
lvmthin:本地lvm
        精简池数据
        VG名称PVE
        内容根目录,图像

# 基于 ZFS 安装的默认映像存储
zfspool:本地 zfs
        池 rpool/数据
        疏
        内容图像,rootdir
警告 让多个存储配置指向完全相同的底层存储是有问题的。这种别名存储配置可能会导致两个不同的卷 ID ( volid ) 指向完全相同的磁盘映像。Proxmox VE 期望图像的卷 ID 指向是唯一的。为别名存储配置选择不同的内容类型可能没问题,但不建议这样做。

7.2.2. 通用存储属性

一些存储属性在不同存储类型之间是通用的。

节点

此存储可用/可访问的集群节点名称列表。人们可以使用此属性来限制对一组有限节点的存储访问。

内容

存储可以支持多种内容类型,例如虚拟磁盘映像、cdrom iso 映像、容器模板或容器根目录。并非所有存储类型都支持所有内容类型。人们可以设置此属性来选择此存储的用途。

图片

QEMU/KVM 虚拟机镜像。

根目录

允许存储容器数据。

维兹特普

容器模板。

备份

备份文件 ( vzdump )。

ISO 映像

片段

片段文件,例如来宾挂钩脚本

共享

将存储标记为共享。

禁用

您可以使用此标志完全禁用存储。

最大文件数

已弃用,请改用prune-backups。每个虚拟机的最大备份文件数。使用0表示无限制。

修剪备份

备份的保留选项。有关详细信息,请参阅 备份保留

格式

默认图像格式(raw|qcow2|vmdk)

预分配

基于文件的存储上的原始图像和qcow2图像的 预分配模式 ( off|metadata|falloc|full ) 。默认值是metadata ,对于 原始图像来说它被视为关闭。当将网络存储与大型qcow2 映像结合使用时,使用off有助于避免超时。

警告 不建议在不同的 Proxmox VE 集群上使用相同的存储池。某些存储操作需要对存储进行独占访问,因此需要适当的锁定。虽然这是在集群内实现的,但它在不同集群之间不起作用。

7.3. 卷

我们使用特殊的符号来寻址存储数据。当您从存储池分配数据时,它会返回这样的卷标识符。卷由<STORAGE_ID>标识,后跟与存储类型相关的卷名称,并用冒号分隔。有效的<VOLUME_ID>如下所示:

本地:230/example-image.raw
本地:iso/debian-501-amd64-netinst.iso
本地:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
iscsi-存储:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61

要获取<VOLUME_ID> 的文件系统路径,请使用:

pvesm 路径 <VOLUME_ID>

7.3.1. 卷所有权

图像类型卷存在所有权关系。每个这样的卷都由虚拟机或容器拥有。例如,卷 local:230/example-image.raw由 VM 230 所有。大多数存储后端将此所有权信息编码到卷名称中。

当您删除虚拟机或容器时,系统还会删除该虚拟机或容器拥有的所有关联卷。

7.4. 使用命令行界面

建议您熟悉存储池和卷标识符背后的概念,但在现实生活中,您不必被迫在命令行上执行任何这些低级操作。通常,卷的分配和删除是由虚拟机和容器管理工具完成的。

尽管如此,有一个名为pvesm(“Proxmox VE Storage Manager”)的命令行工具,它能够执行常见的存储管理任务。

7.4.1. 例子

添加存储池

pvesm add <类型> <存储 ID> <选项>
pvesm add dir <STORAGE_ID> --path <路径>
pvesm add nfs <STORAGE_ID> --path <PATH> --server <SERVER> --export <EXPORT>
pvesm add lvm <STORAGE_ID> --vgname <VGNAME>
pvesm add iscsi <STORAGE_ID> --portal <HOST[:PORT]> --target <TARGET>

禁用存储池

pvesm set <STORAGE_ID> --禁用 1

启用存储池

pvesm set <STORAGE_ID> --禁用 0

更改/设置存储选项

pvesm 设置 <STORAGE_ID> <选项>
pvesm set <STORAGE_ID> --共享 1
pvesm 设置本地 --format qcow2
pvesm set <STORAGE_ID> --content iso

删除存储池。这不会删除任何数据,也不会断开或卸载任何内容。它只是删除存储配置。

pvesm 删除 <STORAGE_ID>

分配卷

pvesm alloc <STORAGE_ID> <VMID> <名称> <大小> [--format <raw|qcow2>]

在本地存储中分配 4G 卷。如果您传递空字符串作为<name>,则名称会自动生成

pvesm 分配本地 <VMID> '' 4G

免费卷

pvesm 免费 <VOLUME_ID>
警告 这确实破坏了所有卷数据。

列出存储状态

脓毒症状态

列出存储内容

pvesm list <STORAGE_ID> [--vmid <VMID>]

列出由 VMID 分配的卷

pvesm list <STORAGE_ID> --vmid <VMID>

列出 iso 映像

pvesm list <STORAGE_ID> --content iso

列出容器模板

pvesm list <STORAGE_ID> --content vztmpl

显示卷的文件系统路径

pvesm 路径 <VOLUME_ID>

将卷local:103/vm-103-disk-0.qcow2导出到文件target。这主要在内部与pvesm import一起使用。流格式 qcow2+size 与 qcow2 格式不同。因此,导出的文件不能简单地附加到 VM。这也适用于其他格式。

pvesm 导出本地:103/vm-103-disk-0.qcow2 qcow2+大小目标 --with-snapshots 1

7.5。目录后端

存储池类型:dir

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

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

该后端假定底层目录与 POSIX 兼容,但除此之外没有其他任何内容。这意味着您无法在存储级别创建快照。但对于使用qcow2文件格式的 VM 映像,存在一种解决方法,因为该格式在内部支持快照。

提示 某些存储类型不支持O_DIRECT,因此您不能对此类存储使用缓存模式none 。只需使用缓存模式 写回即可。

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

表 3. 目录布局
内容类型 子目录

虚拟机镜像

图像/<VMID>/

ISO 映像

模板/iso/

容器模板

模板/缓存/

备份文件

倾倒/

片段

片段/

7.5.1. 配置

该后端支持所有常见的存储属性,并添加了两个附加属性。path属性用于指定目录。这需要是绝对文件系统路径。

可选的content-dirs属性允许更改默认布局。它由逗号分隔的标识符列表组成,格式如下:

vtype=路径

其中vtype是存储允许的内容类型之一, path是相对于存储挂载点的路径。

配置示例(/etc/pve/storage.cfg)
目录:备份
        路径/mnt/备份
        内容备份
        修剪备份 keep-last=7
        最大保护备份 3
        内容目录备份=自定义/备份/目录

上面的配置定义了一个名为backup的存储池。该池可用于为每个虚拟机存储最多 7 个常规备份 ( keep-last=7 ) 和 3 个受保护备份。备份文件的真实路径是/mnt/backup/custom/backup/dir/…。

7.5.2. 文件命名约定

该后端对 VM 映像使用定义明确的命名方案:

vm-<VMID>-<名称>.<格式>
<虚拟机ID>

这指定了所有者 VM。

<名字>

这可以是不带空格的 任意名称 ( ascii )。后端默认使用disk-[N] ,其中[N]替换为整数以使名称唯一。

<格式>

指定图像格式 ( raw|qcow2|vmdk )。

创建 VM 模板时,所有 VM 映像都会被重命名,以指示它们现在是只读的,并且可以用作克隆的基础映像:

基址-<VMID>-<名称>.<格式>
笔记 此类基础图像用于生成克隆图像。因此,这些文件必须是只读的,并且永远不会被修改,这一点很重要。后端将访问模式更改为0444,并设置不可变标志(chattr +i)(如果存储支持)。

7.5.3. 存储特性

如上所述,大多数文件系统不支持开箱即用的快照。为了解决该问题,该后端可以使用 qcow2内部快照功能。

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

表 4. 后端目录的存储功能
内容类型 图片格式 共享 快照 克隆

图像 rootdir vztmpl iso 备份片段

原始 qcow2 vmdk 子卷

qcow2

qcow2

7.5.4. 例子

请使用以下命令在本地存储上分配 4GB 映像:

# pvesm 分配本地 100 vm-100-disk10.raw 4G
格式化“/var/lib/vz/images/100/vm-100-disk10.raw”,fmt=原始大小=4294967296
成功创建“local:100/vm-100-disk10.raw”
笔记 图片名称必须符合上述命名约定。

真实的文件系统路径显示为:

# pvesm 路径本地:100/vm-100-disk10.raw
/var/lib/vz/images/100/vm-100-disk10.raw

您可以使用以下命令删除图像:

# pvesm 免费本地:100/vm-100-disk10.raw

7.6。NFS 后端

存储池类型:nfs

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

7.6.1. 配置

后端支持所有常见的存储属性,但始终设置的共享标志除外。此外,以下属性用于配置 NFS 服务器:

服务器

服务器 IP 或 DNS 名称。为了避免 DNS 查找延迟,通常最好使用 IP 地址而不是 DNS 名称 – 除非您有非常可靠的 DNS 服务器,或者在本地 /etc/hosts 文件中列出该 服务器。

出口

NFS 导出路径(由pvesm nfsscan 列出)。

您还可以设置 NFS 挂载选项:

小路

本地挂载点(默认为/mnt/pve/<STORAGE_ID>/)。

内容目录

覆盖默认目录布局。选修的。

选项

NFS 挂载选项(请参阅man nfs)。

配置示例(/etc/pve/storage.cfg)
nfs:iso 模板
        路径 /mnt/pve/iso-templates
        服务器10.0.0.10
        导出/空间/iso-模板
        选项 vers=3,软
        内容 iso,vztmpl
提示 NFS 请求超时后,默认会无限期重试 NFS 请求。这可能会导致客户端意外挂起。对于只读内容,值得考虑 NFS 软选项,它将重试次数限制为 3 次。

7.6.2. 存储特性

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

表 5. 后端nfs的存储功能
内容类型 图片格式 共享 快照 克隆

图像 rootdir vztmpl iso 备份片段

原始 qcow2 vmdk

是的

qcow2

qcow2

7.6.3. 例子

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

# pvesm nfsscan <服务器>

7.7. CIFS后端

存储池类型:cifs

CIFS 后端扩展了目录后端,因此无需手动设置 CIFS 挂载。这样的存储可以直接通过 Proxmox VE API 或 WebUI 添加,并具有我们所有的后端优势,例如服务器心跳检查或导出共享的舒适选择。

7.7.1. 配置

后端支持所有常见的存储属性,但始终设置的共享标志除外。此外,还可以使用以下 CIFS 特殊属性:

服务器

服务器 IP 或 DNS 名称。必需的。

提示 为了避免 DNS 查找延迟,通常最好使用 IP 地址而不是 DNS 名称 – 除非您有非常可靠的 DNS 服务器,或者在本地 /etc/hosts 文件中列出该服务器。
分享

要使用的 CIFS 共享(通过pvesm scan cifs <address>或 WebUI 获取可用的共享)。必需的。

用户名

CIFS 存储的用户名。可选,默认为“guest”。

密码

用户密码。选修的。它将保存在只有 root 可读的文件中 ( /etc/pve/priv/storage/<STORAGE-ID>.pw )。

领域

设置此存储的用户域(工作组)。选修的。

SMB版本

SMB 协议版本。可选,默认为3。由于安全问题,不支持 SMB1。

小路

本地挂载点。可选,默认为/mnt/pve/<STORAGE_ID>/。

内容目录

覆盖默认目录布局。选修的。

子目录

要挂载的共享的子目录。可选,默认为共享的根目录。

配置示例(/etc/pve/storage.cfg)
cif:备份
        路径/mnt/pve/备份
        服务器10.0.0.11
        共享虚拟机数据
        内容备份
        用户名安娜
        SMB版本3
        子目录/数据

7.7.2. 存储特性

CIFS 不支持存储级别的快照。但如果您仍希望使用快照和克隆功能,则可以使用 qcow2支持文件。

表 6. 后端cif的存储功能
内容类型 图片格式 共享 快照 克隆

图像 rootdir vztmpl iso 备份片段

原始 qcow2 vmdk

是的

qcow2

qcow2

7.7.3。例子

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

# pvesm 扫描 cifs <服务器> [--用户名 <用户名>] [--密码]

然后,您可以使用以下命令将此共享作为存储添加到整个 Proxmox VE 集群:

# pvesm add cifs <存储名称> --server <服务器> --share <共享> [--username <用户名>] [--password]

7.8。Proxmox 备份服务器

存储池类型:pbs

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

7.8.1. 配置

后端支持所有常见的存储属性,但始终设置的共享标志除外。此外,Proxmox 备份服务器还提供以下特殊属性:

服务器

服务器 IP 或 DNS 名称。必需的。

用户名

Proxmox 备份服务器存储的用户名。必需的。

提示 不要忘记将领域添加到用户名中。例如,root@pam或 archiver@pbs。
密码

用户密码。该值将保存在 /etc/pve/priv/storage/<STORAGE-ID>.pw下的文件中,并且仅限 root 用户访问。必需的。

数据存储

要使用的 Proxmox 备份服务器数据存储的 ID。必需的。

指纹

Proxmox 备份服务器 API TLS 证书的指纹。您可以在服务器仪表板中或使用proxmox-backup-manager cert info 命令获取它。对于自签名证书或主机不信任服务器 CA 的任何其他证书来说是必需的。

加密密钥

从客户端加密备份数据的密钥。目前仅支持非密码保护(无密钥派生函数 (kdf))。将保存在/etc/pve/priv/storage/<STORAGE-ID>.enc下的文件中,访问权限仅限于 root 用户。使用神奇值autogen使用proxmox-backup-client key create –kdf none <path>自动生成一个新的。选修的。

主公钥

作为备份任务的一部分,用于加密备份加密密钥的 RSA 公钥。加密副本将附加到备份中并存储在 Proxmox 备份服务器实例上以用于恢复目的。可选,需要加密密钥。

配置示例(/etc/pve/storage.cfg)
PBS:备份
        数据存储主
        服务器 enya.proxmox.com
        内容备份
        指纹 09:54:ef:..snip..:88:af:47:fe:4c:3b:cf:8b:26:88:0b:4e:3c:b2
        修剪备份 keep-all=1
        用户名 archiver@pbs

7.8.2. 存储特性

Proxmox 备份服务器仅支持备份,它们可以是基于块级或文件级的。Proxmox VE 对虚拟机使用块级,对容器使用文件级。

表 7. 后端pbs的存储功能
内容类型 图片格式 共享 快照 克隆

备份

不适用

是的

不适用

不适用

7.8.3。加密

屏幕截图/storage-pbs-encryption-with-key.png

或者,您可以在 GCM 模式下使用 AES-256 配置客户端加密。加密可以通过 Web 界面进行配置,也可以在 CLI 上使用加密密钥选项进行配置(见上文)。密钥将保存在文件 /etc/pve/priv/storage/<STORAGE-ID>.enc中,该文件只能由 root 用户访问。

警告 如果没有密钥,备份将无法访问。因此,您应该将密钥有序地保存在与正在备份的内容分开的地方。例如,您可能会使用该系统上的密钥来备份整个系统。如果系统因任何原因变得无法访问并需要恢复,则这是不可能的,因为加密密钥将随着系统损坏而丢失。

建议您妥善保管密钥并易于访问,以便快速进行灾难恢复。因此,存储它的最佳位置是您的密码管理器,因为它可以立即恢复。作为备份,您还应该将密钥保存到 USB 驱动器并将其存放在安全的地方。这样,它就可以与任何系统分离,但在紧急情况下仍然很容易恢复。最后,为了应对最坏的情况,您还应该考虑将钥匙的纸质副本锁在安全的地方。paperkey子命令可用于创建密钥的 QR 编码版本。以下命令将paperkey命令的输出发送到文本文件,以便于打印。

# proxmox-backup-client key paperkey /etc/pve/priv/storage/<STORAGE-ID>.enc --输出格式文本 > qrkey.txt

此外,可以使用单个 RSA 主密钥对进行密钥恢复:将所有进行加密备份的客户端配置为使用单个公共主密钥,并且所有后续加密备份将包含所用 AES 加密密钥的 RSA 加密副本。即使客户端系统不再可用,相应的私有主密钥也允许恢复 AES 密钥并解密备份。

警告 与常规加密密钥相同的安全保存规则也适用于主密钥对。如果没有私钥副本,恢复是不可能的!paperkey命令支持生成私有主密钥的纸质副本,以便存储在安全的物理位置。

由于加密是在客户端管理的,因此您可以将服务器上的同一数据存储用于未加密备份和加密备份,即使它们使用不同的密钥加密也是如此。但是,使用不同密钥的备份之间的重复数据删除是不可能的,因此通常最好创建单独的数据存储。

笔记 如果加密没有任何好处,例如当您在受信任的网络中本地运行服务器时,请不要使用加密。从未加密的备份中恢复总是更容易。

7.8.4。示例:通过 CLI 添加存储

然后,您可以使用以下命令将此共享作为存储添加到整个 Proxmox VE 集群:

# pvesm add pbs <id> --server <服务器> --datastore <数据存储> --username <用户名> --fingerprint 00:B4:... --password

7.9。GlusterFS 后端

存储池类型:glusterfs

GlusterFS 是一个可扩展的网络文件系统。该系统采用模块化设计,在商用硬件上运行,能够以低成本提供高可用性的企业存储。这样的系统能够扩展到几个 PB,并且可以处理数千个客户端。

笔记 节点/块崩溃后,GlusterFS 会执行完整的rsync以确保数据一致。对于大文件,这可能需要很长时间,因此该后端不适合存储大型 VM 映像。

7.9.1. 配置

后端支持所有常见的存储属性,并添加了以下 GlusterFS 特定选项:

服务器

GlusterFS 卷文件服务器 IP 或 DNS 名称。

服务器2

备份 volfile 服务器 IP 或 DNS 名称。

体积

GlusterFS 卷。

运输

GlusterFS 传输:tcp、unix或rdma

配置示例(/etc/pve/storage.cfg)
glusterfs:Gluster
        服务器10.2.3.4
        服务器2 10.2.3.5
        体积 glustervol
        内容图像,iso

7.9.2. 文件命名约定

目录布局和文件命名约定继承自dir后端。

7.9.3。存储特性

存储提供文件级接口,但没有本机快照/克隆实现。

表 8. 后端glusterfs的存储功能
内容类型 图片格式 共享 快照 克隆

图像 vztmpl iso 备份片段

原始 qcow2 vmdk

是的

qcow2

qcow2

7.10。本地 ZFS 池后端

存储池类型:zfspool

该后端允许您访问本地 ZFS 池(或此类池内的 ZFS 文件系统)。

7.10.1. 配置

后端支持常见的存储属性content、nodes、 disable以及以下 ZFS 特定属性:

水池

选择 ZFS 池/文件系统。所有分配都在该池内完成。

块大小

设置 ZFS 块大小参数。

使用 ZFS 精简配置。稀疏卷是预留不等于卷大小的卷。

挂载点

ZFS 池/文件系统的挂载点。更改此设置不会影响zfs看到的数据集的mountpoint属性。默认为/<池>。

配置示例(/etc/pve/storage.cfg)
zfspool:vmdata
        池池/vmdata
        内容根目录,图像
        疏

7.10.2. 文件命名约定

后端对 VM 映像使用以下命名方案:

vm-<VMID>-<NAME> // 普通虚拟机镜像
base-<VMID>-<NAME> // 模板 VM 映像(只读)
subvol-<VMID>-<NAME> // 子卷(容器的 ZFS 文件系统)
<虚拟机ID>

这指定了所有者 VM。

<名字>

这可以是不带空格的 任意名称 ( ascii )。后端默认使用disk[N] ,其中[N]替换为整数以使名称唯一。

7.10.3。存储特性

ZFS 可能是关于快照和克隆的最先进的存储类型。后端将 ZFS 数据集用于 VM 映像(格式 raw)和容器数据(格式subvol)。ZFS 属性继承自父数据集,因此您只需在父数据集上设置默认值即可。

表 9. 后端zfs的存储功能
内容类型 图片格式 共享 快照 克隆

图像根目录

原始子卷

是的

是的

7.10.4. 例子

建议创建额外的 ZFS 文件系统来存储 VM 映像:

# zfs 创建 Tank/vmdata

要在新分配的文件系统上启用压缩:

# zfs 设置压缩=on Tank/vmdata

您可以通过以下方式获取可用 ZFS 文件系统的列表:

# pvesm zfsscan

7.11。LVM后端

存储池类型:lvm

LVM 是硬盘和分区之上的轻量级软件层。它可用于将可用磁盘空间分割成更小的逻辑卷。LVM 在 Linux 上广泛使用,使管理硬盘变得更加容易。

另一个用例是将 LVM 置于大型 iSCSI LUN 之上。这样您就可以轻松管理该 iSCSI LUN 上的空间,否则这是不可能的,因为 iSCSI 规范没有定义空间分配的管理接口。

7.11.1. 配置

LVM 后端支持常见存储属性content、nodes、 disable以及以下 LVM 特定属性:

虚拟名称

LVM 卷组名称。它必须指向现有的卷组。

根据

基础体积。该卷在访问存储之前会自动激活。当 LVM 卷组驻留在远程 iSCSI 服务器上时,这非常有用。

安全删除

删除 LV 时将数据归零。删除卷时,这可确保删除所有数据。

安全删除_吞吐量

擦除吞吐量(cstream -t参数值)。

配置示例(/etc/pve/storage.cfg)
lvm:我的空间
        vgname 我的空间
        内容根目录,图像

7.11.2. 文件命名约定

后端使用与 ZFS 池后端基本相同的命名约定。

vm-<VMID>-<NAME> // 普通虚拟机镜像

7.11.3。存储特性

LVM是典型的块存储,但是这个后端不支持快照和克隆。不幸的是,普通的 LVM 快照效率相当低,因为它们会干扰快照期间整个卷组上的所有写入。

一大优势是您可以在共享存储(例如 iSCSI LUN)之上使用它。后端本身实现了正确的集群范围锁定。

提示 较新的 LVM-thin 后端允许快照和克隆,但不支持共享存储。
表 10. 后端lvm的存储功能
内容类型 图片格式 共享 快照 克隆

图像根目录

生的

可能的

7.11.4。例子

列出可用的卷组:

# pvesm lvmscan

7.12. LVM 瘦后端

存储池类型:lvmthin

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

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

lvcreate -L 100G -n 数据pve
lvconvert --type 精简池 pve/data

7.12.1. 配置

LVM 瘦后端支持常见存储属性content、nodes、 disable以及以下 LVM 特定属性:

虚拟名称

LVM 卷组名称。它必须指向现有的卷组。

薄池

LVM 精简池的名称。

配置示例(/etc/pve/storage.cfg)
lvmthin:本地lvm
        精简池数据
        VG名称PVE
        内容根目录,图像

7.12.2. 文件命名约定

后端使用与 ZFS 池后端基本相同的命名约定。

vm-<VMID>-<NAME> // 普通虚拟机镜像

7.12.3。存储特性

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

必须提到的是,LVM精简池不能在多个节点之间共享,因此只能将其用作本地存储。

表 11. 后端lvmthin的存储功能
内容类型 图片格式 共享 快照 克隆

图像根目录

生的

是的

是的

7.12.4。例子

列出卷组pve上可用的 LVM 精简池:

# pvesm lvmthinscan PVE

7.13。Open-iSCSI 启动器

存储池类型:iscsi

iSCSI 是一种广泛采用的技术,用于连接存储服务器。几乎所有存储供应商都支持 iSCSI。还有可用的开源 iSCSI 目标解决方案,例如基于 Debian 的OpenMediaVault 。

要使用此后端,您需要安装 Open-iSCSI ( open-iscsi ) 软件包。这是一个标准的 Debian 软件包,但默认情况下不安装以节省资源。

# apt-get 安装 open-iscsi

低级 iSCSI 管理任务可以使用iscsiadm工具完成。

7.13.1. 配置

后端支持常见存储属性content、nodes、 disable以及以下 iSCSI 特定属性:

门户网站

iSCSI 门户(带有可选端口的 IP 或 DNS 名称)。

目标

iSCSI 目标。

配置示例(/etc/pve/storage.cfg)
iSCSI:八哥
     门户10.10.10.1
     目标 iqn.2006-01.openfiler.com:tsn.dcb5aaaddd
     内容无
提示 如果您想在 iSCSI 之上使用 LVM,则将 content none设置为有意义。这样就无法直接使用 iSCSI LUN 创建虚拟机。

7.13.2. 文件命名约定

iSCSI 协议没有定义分配或删除数据的接口。相反,这需要在目标端完成并且是特定于供应商的。目标只是将它们导出为编号的 LUN。因此,Proxmox VE iSCSI 卷名称仅对 Linux 内核所看到的有关 LUN 的一些信息进行编码。

7.13.3. 存储特性

iSCSI是块级类型存储,不提供管理接口。因此,通常最好导出一个大 LUN,并在该 LUN 之上设置 LVM。然后,您可以使用 LVM 插件来管理该 iSCSI LUN 上的存储。

表 12. 后端iSCSI的存储功能
内容类型 图片格式 共享 快照 克隆

图像 无

生的

是的

7.13.4. 例子

扫描远程 iSCSI 门户,并返回可能目标的列表:

pvesm 扫描 iscsi <主机[:端口]>

7.14。用户模式 iSCSI 后端

存储池类型:iscsidirect

该后端提供与 Open-iSCSI 支持的基本相同的功能,但使用用户级库来实现它。您需要安装 libiscsi-bin软件包才能使用此后端。

需要注意的是,没有涉及内核驱动程序,因此这可以视为性能优化。但这也带来了一个缺点,即您无法在此类 iSCSI LUN 之上使用 LVM。因此,您需要在存储服务器端管理所有空间分配。

7.14.1. 配置

用户模式 iSCSI 后端使用与支持的 Open-iSCSI 相同的配置选项。

配置示例(/etc/pve/storage.cfg)
iscsidirect:快速存储
     门户10.10.10.1
     目标 iqn.2006-01.openfiler.com:tsn.dcb5aaaddd

7.14.2. 存储特性

笔记 该后端仅适用于虚拟机。容器无法使用此驱动程序。
表 13. 后端iscsidirect的存储功能
内容类型 图片格式 共享 快照 克隆

图片

生的

是的

7.15。Ceph RADOS 块设备 (RBD)

存储池类型:rbd

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

  • 精简配置

  • 可调整大小的卷

  • 分布式和冗余(在多个 OSD 上条带化)

  • 完整的快照和克隆功能

  • 自愈

  • 无单点故障

  • 可扩展至艾字节级别

  • 可用的内核和用户空间实现

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

7.15.1. 配置

该后端支持常见的存储属性nodes、 disable、content以及以下rbd特定属性:

怪物主机

监控守护进程 IP 列表。可选,仅当 Ceph 未在 Proxmox VE 集群上运行时才需要。

水池

Ceph 池名称。

用户名

RBD 用户 ID。可选,仅当 Ceph 未在 Proxmox VE 集群上运行时才需要。请注意,仅应使用用户 ID。客户端。” 类型前缀必须省略。

克罗布德

通过 krbd 内核模块强制访问 rados 块设备。选修的。

笔记 容器将使用独立于选项值的krbd 。
外部 Ceph 集群的配置示例 ( /etc/pve/storage.cfg )
rbd:ceph-外部
        monhost 10.1.1.20 10.1.1.21 10.1.1.22
        池 ceph 外部
        内容图像
        用户名管理员
提示 您可以使用rbd实用程序执行低级管理任务。

7.15.2. 验证

笔记 如果 Ceph 安装在 Proxmox VE 集群本地,则添加存储时会自动完成以下操作。

如果您使用默认启用的cephx身份验证,则需要提供来自外部 Ceph 集群的密钥环。

要通过 CLI 配置存储,您首先需要使包含密钥环的文件可用。一种方法是将文件从外部 Ceph 集群直接复制到 Proxmox VE 节点之一。以下示例将其复制到我们运行它的节点的/root目录:

# scp <外部 cephserver>:/etc/ceph/ceph.client.admin.keyring /root/rbd.keyring

然后使用pvesm CLI 工具配置外部 RBD 存储,使用 –keyring参数,该参数需要是您复制的密钥环文件的路径。例如:

# pvesm add rbd <名称> --monhost "10.1.1.20 10.1.1.21 10.1.1.22" --content images --keyring /root/rbd.keyring

通过 GUI 配置外部 RBD 存储时,您可以将密钥环复制并粘贴到相应的字段中。

钥匙圈将存储在

# /etc/pve/priv/ceph/<STORAGE_ID>.keyring
提示 连接到外部集群时,建议创建仅具有所需功能的密钥环。有关 Ceph 用户管理的更多信息,请参阅 Ceph 文档。12 ]

7.15.3。Ceph 客户端配置(可选)

连接到外部 Ceph 存储并不总是允许在外部集群上的配置数据库中设置特定于客户端的选项。您可以在 Ceph 密钥环旁边添加 ceph.conf来更改存储的 Ceph 客户端配置。

ceph.conf 需要与存储具有相同的名称。

# /etc/pve/priv/ceph/<STORAGE_ID>.conf

有关可能的设置,请参阅 RBD 配置参考13 ]

笔记 不要轻易更改这些设置。Proxmox VE 正在将 <STORAGE_ID>.conf 与存储配置合并。

7.15.4。存储特性

rbd后端是块级存储,并实现完整的快照和克隆功能。

表 14. 后端rbd的存储功能
内容类型 图片格式 共享 快照 克隆

图像根目录

生的

是的

是的

是的

7.16。Ceph 文件系统 (CephFS)

存储池类型:cephfs

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

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

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

警告 请确保没有配置其他 Ceph 存储库。否则安装将失败或者节点上会存在混合的软件包版本,从而导致意外行为。

7.16.1. 配置

该后端支持常见的存储属性nodes、 disable、content以及以下cephfs特定属性:

文件系统名称

Ceph FS 的名称。

怪物主机

监视器守护进程地址列表。可选,仅当 Ceph 未在 Proxmox VE 集群上运行时才需要。

小路

本地挂载点。可选,默认为/mnt/pve/<STORAGE_ID>/。

用户名

Ceph 用户 ID。可选,仅当 Ceph 未在 Proxmox VE 集群上运行时才需要,默认为admin。

子目录

要挂载的 CephFS 子目录。可选,默认为/。

保险丝

通过 FUSE 访问 CephFS,而不是内核客户端。可选,默认为0。

外部 Ceph 集群的配置示例 ( /etc/pve/storage.cfg )
cephfs:cephfs-外部
        monhost 10.1.1.20 10.1.1.21 10.1.1.22
        路径 /mnt/pve/cephfs-external
        内容备份
        用户名管理员
        fs-名称 cephfs
笔记 如果未禁用 cephx,请不要忘记设置客户端的密钥文件。

7.16.2. 验证

笔记 如果 Ceph 安装在 Proxmox VE 集群本地,则添加存储时会自动完成以下操作。

如果您使用默认启用的cephx身份验证,则需要提供外部 Ceph 集群的密钥。

要通过 CLI 配置存储,您首先需要使包含密钥的文件可用。一种方法是将文件从外部 Ceph 集群直接复制到 Proxmox VE 节点之一。以下示例将其复制到我们运行它的节点的/root目录:

# scp <外部 cephserver>:/etc/ceph/cephfs.secret /root/cephfs.secret

然后使用pvesm CLI 工具配置外部 RBD 存储,使用 –keyring参数,该参数需要是您复制的机密文件的路径。例如:

# pvesm add cephfs <名称> --monhost "10.1.1.20 10.1.1.21 10.1.1.22" --content backup --keyring /root/cephfs.secret

通过 GUI 配置外部 RBD 存储时,您可以将密钥复制并粘贴到相应的字段中。

秘密只是密钥本身,而不是rbd后端,后者还包含[client.userid]部分。

秘密将存储在

# /etc/pve/priv/ceph/<STORAGE_ID>.secret

可以通过发出以下命令从 Ceph 集群(作为 Ceph 管理员)接收机密,其中userid是已配置为访问集群的客户端 ID。有关 Ceph 用户管理的更多信息,请参阅 Ceph 文档。[ 12 ]

# ceph auth get-key client.userid > cephfs.secret

7.16.3。存储特性

cephfs后端是一个符合 POSIX 标准的文件系统,位于 Ceph 集群之上。

表 15. 后端cephfs的存储功能
内容类型 图片格式 共享 快照 克隆

vztmpl iso 备份片段

没有任何

是的

是的[1]

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

7.17。BTRFS 后端

存储池类型:btrfs

从表面上看,这种存储类型与目录存储类型非常相似,因此请参阅目录后端部分以获取一般概述。

主要区别在于,使用此存储类型时,原始格式化磁盘将放置在子卷中,以便允许拍摄快照并支持脱机存储迁移并保留快照。

笔记 BTRFS 在打开文件时将遵循O_DIRECT标志,这意味着虚拟机不应使用缓存模式none,否则会出现校验和错误。

7.17.1. 配置

该后端的配置与目录存储类似。请注意,当添加目录作为 BTRFS 存储时(该目录本身并不是挂载点),强烈建议通过 is_mountpoint 选项指定实际挂载 点。

例如,如果 BTRFS 文件系统安装在/mnt/data2,并且应将其 pve-storage/子目录(建议可以是快照)添加为名为data2的存储池,则可以使用以下条目:

btrfs:数据2
        路径 /mnt/data2/pve-storage
        内容根目录,图像
        is_mountpoint /mnt/data2

7.17.2. 快照

拍摄子卷或原始文件的快照时,快照将创建为只读子卷,具有相同的路径,后跟 @和快照名称。

7.18。基于 ISCSI 后端的 ZFS

存储池类型:zfs

该后端通过ssh访问具有 ZFS 池作为存储和 iSCSI 目标实现的远程计算机。它为每个来宾磁盘创建一个 ZVOL,并将其导出为 iSCSI LUN。Proxmox VE 使用此 LUN 作为来宾磁盘。

支持以下 iSCSI 目标实现:

  • 利奥(Linux)

  • IET(Linux)

  • ISTGT(FreeBSD)

  • 康星 (Solaris)

笔记 此插件需要支持 ZFS 的远程存储设备,您无法使用它在常规存储设备/SAN 上创建 ZFS 池

7.18.1. 配置

为了使用 ZFS over iSCSI 插件,您需要配置远程计算机(目标)以接受来自 Proxmox VE 节点的ssh连接。Proxmox VE 连接到目标以创建 ZVOL 并通过 iSCSI 导出它们。身份验证通过存储在/etc/pve/priv/zfs/<target_ip>_id_rsa中的 ssh 密钥(无密码保护)完成

以下步骤创建 ssh-key 并将其分发到 IP 192.0.2.1 的存储机器上:

mkdir /etc/pve/priv/zfs
ssh-keygen -f /etc/pve/priv/zfs/192.0.2.1_id_rsa
ssh-copy-id -i /etc/pve/priv/zfs/192.0.2.1_id_rsa.pub [email protected]
ssh -i /etc/pve/priv/zfs/192.0.2.1_id_rsa [email protected]

后端支持常见存储属性content、nodes、 disable以及以下 ZFS over ISCSI 特定属性:

水池

iSCSI 目标上的 ZFS 池/文件系统。所有分配都在该池内完成。

门户网站

iSCSI 门户(带有可选端口的 IP 或 DNS 名称)。

目标

iSCSI 目标。

iscsi提供商

远程计算机上使用的 iSCSI 目标实现

comstar_tg

comstar 观点的目标群体。

comstar_hg

comstar 视图的主机组。

里奥_tpg

Linux LIO 目标的目标门户组

不写缓存

禁用目标上的写入缓存

块大小

设置 ZFS 块大小参数。

使用 ZFS 精简配置。稀疏卷是预留不等于卷大小的卷。

配置示例 ( /etc/pve/storage.cfg )
zfs: 里奥
   块大小 4k
   iscsi提供商LIO
   水池水箱
   门户192.0.2.111
   目标 iqn.2003-01.org.linux-iscsi.lio.x8664:sn.xxxxxxxxxxxx
   内容图像
   lio_tpg tpg1
   稀疏 1

zfs:Solaris
   块大小 4k
   目标 iqn.2010-08.org.illumos:02:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:tank1
   水池水箱
   iSCSI 提供商 comstar
   门户192.0.2.112
   内容图像

zfs:自由bsd
   块大小 4k
   目标 iqn.2007-09.jp.ne.peach.istgt:tank1
   水池水箱
   iscsiprovider istgt
   门户192.0.2.113
   内容图像

zfs:iet
   块大小 4k
   目标 iqn.2001-04.com.example:tank1
   水池水箱
   iSCSI 提供商 IET
   门户192.0.2.114
   内容图像

7.18.2. 存储特性

ZFS over iSCSI 插件提供了具有快照功能的共享存储。您需要确保 ZFS 设备不会成为部署中的单点故障。

表 16. 后端iSCSI的存储功能
内容类型 图片格式 共享 快照 克隆

图片

生的

是的

是的

作者 Lin-Tech

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注