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

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

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

7.1、存储类型

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

文件级存储

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

块级存储

允许存储大型原始镜像。通常不可能存储其他文件(ISO,备份,..)

这样的存储类型。大多数现代块级存储实现都支持快照和克隆。RADOS和GlusterFS是分布式系统,将存储数据复制到不同的节点。
表7.1:可用的存储类型

描述 PVE 类型 级别 共享 快照 稳定
ZFS(Local) zfspool 文件 no yes yes
目录 dir 文件 no no__1 yes
NFS nfs 文件 yes no__1 yes
CIFS cifs file yes no__1 yes
Proxmox 备份 pbs both yes n/a beta
GlusterFS glusterfs 文件 yes no__1 yes
CephFS cephfs 文件 yes yes yes
LVM lvm no__2 no yes
LVM-thin lvmthin no yes yes
iSCSI/kernel iscsi yes no yes
iSCSI/libiscsi iscsidirect yes no yes
Ceph/RBD rbd yes yes yes
ZFS over iSCSI zfs yes yes yes

注:1、在基于文件的存储中,快照可能是qcow2格式
2、可以在iSCSI或FC存储上使用LVM,这样就可以获得一个共享的LVM存储
_

7.1.1、自动精简配置

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

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

所有具有快照特性的存储类型都支持精简配置。

  1. 谨慎
  2. 如果存储空间满了,那么在该存储空间上使用卷的所有来宾都会收到IO错误。这可能导致文件系统不一致,并可能损坏数据。因此,建议避免过度分配存储资源,或者仔细观察空闲空间以避免这种情况。

7.2、存储配置

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

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

7.2.1、存储池

每个存储池都有一个,由唯一标识。池的配置是这样的:

  1. <type>: <STORAGE_ID>
  2. <property> <value>
  3. <property> <value>
  4. <property>
  5. ...

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

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

默认存储配置(/etc/pve/storage.cfg)

  1. dir: local
  2. path /var/lib/vz
  3. content iso,vztmpl,backup
  4. # default image store on LVM based installation
  5. lvmthin: local-lvm
  6. thinpool data
  7. vgname pve
  8. content rootdir,images
  9. # default image store on ZFS based installation
  10. zfspool: local-zfs
  11. pool rpool/data
  12. sparse
  13. content images,rootdir

7.2.2、常见的存储属性

在不同的存储类型中有一些共同的存储属性。

nodes

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

content

一个存储器可以支持多种内容类型,例如虚拟磁盘镜像、cdrom iso镜像、容器模板或容器根目录。不是所有的存储类型都支持所有的内容类型。可以设置此属性以选择此存储用于什么。

images
KVM-Qemu VM映像。

rootdir
允许存储容器数据。

vztmpl
容器模板。

backup
备份文件(vzdump)。

iso
ISO映像

snippets
代码片段文件,例如客户钩子脚本

shared
将存储标记为shared。

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

maxfiles
弃用,请使用prune-backups代替。每个虚拟机支持的备份文件份数上限。0表示无限使用。

prune-backups
备份的保留选项。详细信息请参见“备份保留”16.5节。

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

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

7.3、卷

我们使用一种特殊的符号来寻址存储数据。当您从存储池分配数据时,它返回这样的卷标识符。卷由标识<STORAGE_ID>,后面跟着依赖于存储类型的卷名,中间用冒号分隔。一个有效的<VOLUME_ID>看起来像:

  1. local:230/example-image.raw
  2. local:iso/debian-501-amd64-netinst.iso
  3. local:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
  4. iscsi-storage:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61

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

pvesm path <VOLUME_ID>

7.3.1、卷的所有权

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

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

7.4、使用命令行接口

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

不过,有一个命令行工具叫做pvesm(“Proxmox VE Storage Manager”),它能够执行常见的存储管理任务。

7.4.1、例子

添加存储池
**
pvesm add <TYPE> <STORAGE_ID> <OPTIONS>
pvesm add dir <STORAGE_ID> --path <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> --disable 1

启用存储池
**
pvesm set <STORAGE_ID> --disable 0

更改/设置存储选项

pvesm set <STORAGE_ID> <OPTIONS>
pvesm set <STORAGE_ID> --shared 1
pvesm set local --format qcow2
pvesm set <STORAGE_ID> --content iso


删除存储池。这不会删除任何数据,也不会断开连接或卸载任何东西。它只是删除了存储配置。

pvesm remove <STORAGE_ID>

分配卷
**
pvesm alloc <STORAGE_ID> <VMID> <name> <size> [--format <raw|qcow2>]

在本地存储中分配一个4G的卷。如果**<name>**传递一个空字符串,则该名称将自动生成
**
pvesm alloc local <VMID> '' 4G

清空卷
**
pvesm free <VOLUME_ID>

  1. 警告
  2. 者真的会清空卷的所有数据

列出存储状态
**
pvesm status

列出存储内容
**
pvesm list <STORAGE_ID> [--vmid <VMID>]

列出分配给指定**vmid**的卷
**
pvesm list <STORAGE_ID> --vmid <VMID>

列出iso镜像
**
pvesm list <STORAGE_ID> --iso

列出容器模板
**
pvesm list <STORAGE_ID> --vztmpl

显示卷的文件系统路径
**
pvesm path <VOLUME_ID>

导出卷**local:103/vm-103-disk-0.qcow2到文件目标。这主要在内部使用pvesm import**。流格式qcow2+size与qcow2格式不同。导出的文件不能直接绑定到虚拟机。这也适用于其他格式。
**
pvesm export local:103/vm-103-disk-0.qcow2 qcow2+size target --with-snapshots 1

7.5、目录后端

存储池类型:dir

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

  1. 请注意
  2. 您可以通过标准的linux /etc/fstab挂载其他存储,然后为该挂载点定义一个目录存储。通过这种方式,您可以使用Linux支持的任何文件系统。

该后端假设底层目录与POSIX兼容,但没有其他条件。这意味着不能在存储级别创建快照。但是,对于使用qcow2文件格式的VM映像,存在一个解决方案,因为该格式在内部支持快照。

  1. 提示
  2. 有些存储类型不支持O_DIRECT,所以不能在这样的存储中使用缓存模式none。只需使用缓存模式回写即可。

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

表7.2 目录布局

内容类型 子目录
VM images images//
ISO images template/iso/
容器模板 template/cache
备份文件 dump/
片段 snippets/

7.5.1、配置

此后端支持所有公共存储属性,并添加一个名为path的附加属性来指定目录。这需要是一个绝对的文件系统路径。

配置示例(/ etc /pve/ storage.cfg)

  1. dir: backup
  2. path /mnt/backup
  3. content backup
  4. maxfiles 7

上面的配置定义了一个称为backup的存储池。该池可用于存储每个虚拟机最多7个备份(maxfiles 7)。备份文件的实际路径为“/mnt/backup/dump/….”

7.5.2、文件命名约定

这个后端使用一个定义良好的VM映像命名方案:

vm-<VMID>-<NAME>.<FORMAT>


指定所有者虚拟机。


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

**
镜像格式(raw|qcow2|vmdk)。


创建虚拟机模板时,所有虚拟机镜像将被重命名为只读,可以作为克隆的基本镜像:

base-<VMID>-<NAME>.<FORMAT>

  1. Note
  2. 这些基本图像用于生成克隆图像。因此,这些文件必须是只读的,并且永远不会被修改。后端将访问模式更改为0444,如果存储支持,则设置不可变标志(chattr +i)。

7.5.3、存储特性

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

同样的道理也适用于克隆。后端使用qcow2基础映像特性来创建克隆。

表7.3 目录的存储特性

内容类型 镜像格式 共享 快照 克隆
images raw qcow2 no qcow2 qcow2
rootdir vmdk subvol
vztmpl iso
backup
snippets

7.5.4、例子

请使用以下命令在storage local上分配4GB镜像:

# pvesm alloc local 100 vm-100-disk10.raw 4G
Formatting ’/var/lib/vz/images/100/vm-100-disk10.raw’, fmt=raw size``=4294967296
successfully created ’local:100/vm-100-disk10.raw’

  1. Note
  2. 图像名称必须符合上述命名约定。

真实的文件系统路径如下所示:

# pvesm path local:100/vm-100-disk10.raw
/var/lib/vz/images/100/vm-100-disk10.raw

你可以移除图像:

# pvesm free local:100/vm-100-disk10.raw

7.6、NFS后端

存储池类型:nfs
**
NFS后端基于目录后端,因此它共享大多数属性。目录布局和文件命名约定相同。其主要优点是可以直接配置NFS服务器属性,这样后端就可以自动挂载共享。/etc/fstab不需要修改。后端还可以测试服务器是否在线,并提供查询服务器导出共享的方法。

7.6.1、配置

后端支持所有公共存储属性,除了总是设置的shared标志。另外,以下属性用于配置NFS服务器:

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

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

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

path
本地挂载点(默认为/mnt/pve//)。

options
NFS挂载选项(参见man NFS)。

配置示例(/etc/pve/storage.cfg):

  1. nfs: iso-templates
  2. path /mnt/pve/iso-templates
  3. server 10.0.0.10
  4. export /space/iso-templates
  5. options vers=3,soft
  6. content iso,vztmpl
  1. 提示
  2. 默认情况下,当NFS请求超时后,将无限期地重试NFS请求。这可能导致客户端意外挂起。对于只读内容,值得考虑NFS软选项,该选项将重试次数限制为3次。

7.6.2、存储特性

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

表7.4 nfs存储特性

内容类型 镜像格式 共享 快照 克隆
images raw qcow2 yes qcow2 qcow2
rootdir vmdk
vztmpl iso
backup
snippets

7.6.3、例子

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

# pvesm nfsscan <server>

7.7、CIFS后端

存储池类型:cifs
**
CIFS后端扩展了目录后端,不需要手动安装CIFS挂载。这样的存储可以直接通过Proxmox VE API或web添加,具有我们所有的后端优势,如服务器心跳检查或舒适的导出共享选择。

7.7.1、配置

后端支持所有的公共存储属性,除了shared标记(总是设置)。此外,以下CIFS特殊属性是可用的:
server
服务器ip或DNS域名,必须

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

share
CIFS共享使用(pvesm扫描“CIFS”或web界面获取可用的共享)。必需的。

username
CIFS存储的用户名。可选,默认为’ guest ‘。

password
用户密码。可选的。它将被保存在一个只能被root读取的文件中(/etc/pve/priv/storage/< storage-id>.pw)。

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

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

path
本地挂载点。可选,默认为/mnt/pve//。

配置示例(/etc/pve/storage.cfg):

  1. cifs: backup
  2. path /mnt/pve/backup
  3. server 10.0.0.11
  4. share VMData
  5. content backup
  6. username anna
  7. smbversion 3

7.7.2、存储特性

CIFS协议不支持存储级别的快照。但是,如果您仍然希望快照和克隆特性可用,您可以使用qcow2备份文件。

表7.5 cifs存储特性

内容类型 镜像格式 共享 快照 克隆
images raw qcow2 yes qcow2 qcow2
rootdir vmdk
vztmpl iso
backup
snippets

7.7.3、例子

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

# pvesm scan cifs <server> [--username <username>] [--password]

然后你可以把这个共享作为存储添加到整个Proxmox VE集群中:

# pvesm add cifs <storagename> --server <server> --share <share> [username \ <username>] [--password]

7.8、Proxmox备份服务器

存储池类型:pbs

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

7.8.1、配置

后端支持所有公共的存储属性,除了shared标记,它总是被设置。另外,以下特殊的属性到Proxmox备份服务器是可用的:

server:
服务器ip或DNS域名,必须

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

  1. Tip
  2. 不要忘记将域添加到用户名中。例如:root@pamarchiver@pbs

password:
用户密码。该值将保存在/etc/pve/ priva /storage/.pw,目录权限限制为root用户。必需的。

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

fingerprint:
Proxmox Backup Server API TLS证书的指纹。您可以在服务器指示板或使用proxmox-backup-manager cert info命令获取它。用于自签名证书或主机不信任服务器CA的任何其他证书。

encryption-key
用于加密来自客户端的备份数据的密钥。目前只支持非密码保护(无键派生函数(kdf))。将被保存在/etc/pve/ priva /storage/``<STORAGE-ID>.``enc,访问权限仅限于root用户。使用魔术值autogen,使用proxmox-backup-client密钥create --kdf none <path>自动生成一个新密钥。可选的。

配置示例(/etc/pve/storage.cfg)

  1. pbs: backup
  2. datastore main
  3. server enya.proxmox.com
  4. content backup
  5. fingerprint 09:54:ef:..snip..:88:af:47:fe:4c:3b:cf:8b:26:88:0b:4e:3 ←�
  6. c:b2
  7. maxfiles 0
  8. username archiver@pbs

7.8.2、存储特性

Proxmox备份服务器只支持备份,备份可以基于块级或文件级。Proxmox VE对虚拟机使用块级,对容器使用文件级。
表7.6 pbs存储特性

内容类型 镜像格式 共享 快照 克隆
backup n/a yes n/a n/a

7.8.3、加密

image.png
您还可以选择在GCM模式下使用AES-256配置客户端加密。加密既可以通过web界面配置,也可以在CLI中使用加密密钥选项配置(见上文)。该键将保存在/etc/pve/ priva /storage/文件中。enc,只能由根用户访问。

  1. 警告
  2. 没有它们的密钥,备份将无法访问。因此,你应该把钥匙有序地放在一个地方
  3. 这与正在备份的内容是分开的。例如,备份整个系统时,可能会使用系统上的一个密钥。如果系统因为任何原因变得不可访问,并且需要恢复,这将是不可能的,因为加密密钥将随着被破坏的系统丢失。

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

# proxmox-backup-client key paperkey --output-format text > qrkey.txt

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

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

7.8.4、示例:在CLI上添加存储

然后你可以把这个共享作为存储添加到整个Proxmox VE集群中:

# pvesm add pbs <id> --server <server> --datastore <datastore> --username <username>\ --fingerprint 00:B4:... --password

7.9、GlusterFS

存储池类型:glusterfs

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

  1. 请注意
  2. 在节点/砖块崩溃后,GlusterFS会执行一个完整的rsync来确保数据是一致的。对于大型文件,这可能会花费很长时间,因此此后端不适合存储大型VM映像。

7.9.1、配置

后端支持所有公共存储属性,并添加以下GlusterFS特定选项:

server:
GlusterFS volfile服务器IP或DNS名称。

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

volume
GlusterFS Volume.

transpot
GlusterFS传输:tcp,unix or rdma

配置示例(/etc/pve/storage,cfg)

  1. glusterfs: Gluster
  2. server 10.2.3.4
  3. server2 10.2.3.5
  4. volume glustervol
  5. content images,iso

7.9.2、文件命名约定

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

7.9.3、存储特性

存储提供了一个文件级接口,但没有原生快照/克隆实现。

表7.7 glusterfs存储特性

内容类型 镜像格式 共享 快照 克隆
images raw qcow2 yes qcow2 qcow2
vztmpl iso vmdk
backup
snippets

7.10、本地ZFS池后端

存储池类型:zfspool

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

7.10.1、配置

pool
选择ZFS池/文件系统。所有的分配都在这个池中完成。

blocksize
设置ZFS blocksize参数。

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

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

配置示例(/etc/pve/storeage.cfg)

  1. zfspool: vmdata
  2. pool tank/vmdata
  3. content rootdir,images
  4. sparse

7.10.2、文件命名约定

后端虚拟机镜像命名方案如下:

vm-- // 正常的虚拟机镜像
base-- // 模板虚拟机镜像(只读)
subvol-- // 子卷(用于容器的ZFS文件系统)


指定所有者虚拟机


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

7.10.3、存储特性

ZFS可能是快照和克隆方面最先进的存储类型。后端对VM映像(raw格式)和容器数据(subvol格式)都使用ZFS数据集。ZFS属性继承自父数据集,因此可以简单地在父数据集上设置默认值。

表7.8 ZFS存储特性

内容类型 镜像格式 共享 快照 克隆
images raw subvol no yes yes
rootdir

7.10.4、例子

建议创建一个额外的ZFS文件系统来存储虚拟机镜像:

# zfs create tank/vmdata

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

# zfs set compression=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特定的属性:

vgname
LVM卷组名称。这必须指向一个现有的卷组。

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

saferemove
在删除lv时将数据置零。当删除卷时,这将确保所有数据都被删除。

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

配置示例(/etc/pve/stroage.cfg)

  1. lvm: myspace
  2. vgname myspace
  3. content rootdir,images

7.11.2、文件命名约定

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

vm-- // 正常的虚拟机镜像

7.11.3、存储特性

LVM是一个典型的块存储,但是这个后端不支持快照和克隆。不幸的是,正常的LVM快照效率非常低,因为它们会在快照期间干扰对整个卷组的所有写操作。

一个很大的优点是可以在共享存储(例如iSCSI LUN)上使用。后端本身实现了适当的集群范围的锁定。

  1. 提示
  2. 较新的LVM-thin后端允许快照和克隆,但不支持共享存储。

表7.9 lvm存储特性

内容类型 镜像格式 共享 快照 克隆
images raw possible no no
rootdir

7.11.4、例子

列出可以的卷组

# pvesm lvmscan

7.12、LVM thin后端

存储池类型:lvmthin
**
LVM通常在创建卷时分配块。相反,LVM精简池在写块时分配块。这种行为称为瘦配置,因为卷可能比物理可用空间大得多。

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

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

7.12.1、配置

LVM精简后端支持常见的存储属性content、node、disable和以下LVM特定的属性:

vgname
LVM卷组名称。这必须指向一个现有的卷组。

thinpool
LVM精简池的名称。

配置示例(/etc/pve/storage.cfg)

  1. lvmthin: local-lvm
  2. thinpool data
  3. vgname pve
  4. content rootdir,images

7.12.2、文件命名约定

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

vm-- // 正常的虚拟机镜像

7.12.3、存储特性

LVM thin是一个块存储,但是完全支持快照和克隆。新卷将自动以0初始化。

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

表7.10 lvmthin存储特性

内容类型 镜像格式 共享 快照 克隆
images raw no yes yes
rootdir

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 install open-iscsi

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

7.13.1、配置

后端支持通用存储属性content、nodes、disable和以下iSCSI特定属性:

portal
iSCSI portal (IP或DNS名称,可选端口)。

target
iSCSI目标。

配置示例(/etc/pve/storage.cfg)

  1. iscsi: mynas
  2. portal 10.10.10.1
  3. target iqn.2006-01.openfiler.com:tsn.dcb5aaaddd
  4. content none
  1. 提示
  2. 如果您想在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上的存储。

表7.11 iscsi存储特性

内容类型 镜像格式 共享 快照 克隆
images raw yes no no

7.13.4、例子

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

pvesm scan iscsi <HOST[:PORT]>

7.14、用户模式ISCSI后端

存储池类型:iscsidirect

这个后端提供了与Open-iSCSI基本相同的功能,但使用了一个用户级库(包libiscsi2)来实现它。

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

7.14.1、配置

user mode iSCSI后端使用与Open-iSCSI后端相同的配置选项。

配置示例(/etc/pve/storage.cfg)

  1. iscsidirect: faststore
  2. portal 10.10.10.1
  3. target iqn.2006-01.openfiler.com:tsn.dcb5aaaddd

7.14.2、存储特性

  1. Note
  2. 此后端仅与VMs一起工作。容器不能使用这个驱动程序。

表7.12 iscsidirect存储特性

内容类型 镜像格式 共享 快照 克隆
images raw yes no no

7.15、Ceph RBD(RADOS Block Devices)

存储池类型:rbd

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

  • 自动精简配置

  • 可调整大小的卷

  • 分布式冗余(多个osd分条)

  • 完整快照和克隆能力

  • 自我疗愈

  • 没有单点故障

  • 可扩展到eb级别

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

    1. Note
    2. 对于较小的部署,也可以直接在Proxmox VE节点上运行Ceph服务。最新的硬件有足够的CPU能力和RAM,因此可以在同一个节点上运行存储服务和虚拟机。

7.15.1、配置

该后端支持公共存储属性nodes、disable、content和以下rbd特定属性:

monhost
监控守护进程ip列表。可选,仅当Ceph不在PVE集群上运行时才需要。

pool
Ceph池名称。

username
RBD用户Id。可选,仅当PVE集群上没有运行Ceph时需要。

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

  1. 请注意
  2. 容器将独立于选项值使用krbd

外部Ceph集群配置示例(/etc/pve/storage.cfg)

  1. rbd: ceph-external
  2. monhost 10.1.1.20 10.1.1.21 10.1.1.22
  3. pool ceph-external
  4. content images
  5. username admin
  1. 提示
  2. 您可以使用rbd实用程序来执行低级管理任务。

7.15.2、认证

如果使用cephx身份验证,则需要将密钥文件从外部Ceph集群复制到Proxmox VE主机。

创建目录/etc/pve/priv/ceph

mkdir /etc/pve/priv/ceph

然后复制密匙环

scp <cephserver>:/etc/ceph/ceph.client.admin.keyring \ /etc/pve/priv/ceph/<STORAGE_ID>.keyring

必须命名密匙环以匹配您的。复制密匙环通常需要root权限。

如果Ceph是本地安装在PVE集群上的,那么这将由pveceph或在GUI中自动完成。

7.15.3、存储特性

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

表7.13 rbd存储特性

内容类型 镜像格式 共享 快照 克隆
images raw yes yes yes
rootdir

7.16、CephFS

存储池类型:cephfs
**
CephFS使用一个Ceph存储集群来存储数据,实现了一个符合posix标准的文件系统。由于CephFS建立在Ceph上,它共享了大部分的属性,这包括冗余、可伸缩性、自愈和高可用性。

  1. 提示
  2. Proxmox VE可以管理ceph设置第8章,这使得配置ceph存储更容易。由于最新的硬件有足够的CPU功率和RAM,在同一节点上运行存储服务和虚拟机可能不会对性能造成很大的影响。

要使用CephFS存储插件,你需要更新debian股票Ceph客户端。添加我们的Ceph存储库章节Ceph存储库3.1.4。一旦添加,运行apt更新和apt分发升级循环,以获得最新的包。

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

7.16.1、配置

这个后端支持公共存储属性节点,禁用,内容,和以下cephfs特定的属性:

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

path
本地挂载点。可选,默认为/mnt/pve//。

username
Ceph用户id。可选,仅当Ceph没有在默认为admin的PVE集群上运行时才需要。

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

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

外部Ceph集群配置示例(/etc/pve/storage.cfg)

  1. cephfs: cephfs-external
  2. monhost 10.1.1.20 10.1.1.21 10.1.1.22
  3. path /mnt/pve/cephfs-external
  4. content backup
  5. username admin
  1. Note
  2. 如果cephx没有关闭,不要忘记设置客户端密钥文件。

7.16.2、认证

如果使用默认启用的cephx身份验证,则需要将secret从外部Ceph集群复制到Proxmox VE主机。

创建目录/etc/pve/priv/ceph

mkdir /etc/pve/priv/ceph

然后复制秘密

scp cephfs.secret <proxmox>:/etc/pve/priv/ceph/<STORAGE_ID>.secret

必须对秘密进行命名,以匹配。复制secret通常需要root权限。文件必须只包含密钥本身,而rbd后端也包含一个[client.userid)部分。

通过发出以下命令,可以从ceph集群(作为ceph admin)接收一个秘密。将用户ID替换为为访问集群而配置的实际客户机ID。进一步的ceph用户管理,请参阅ceph docs 1。

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

如果Ceph安装在本地的PVE集群上,即使用pveceph进行安装,这将自动完成。

7.16.3、存储特性

cephfs后端是一个基于Ceph集群的posix兼容文件系统。

表7.14 cephfs存储特性

内容类型 镜像格式 共享 快照 克隆
vztmpl none yes yes no
backup
snippets

1、快照,虽然没有已知的bug,但还不能保证它是稳定的,因为它们缺乏测试。