SYNOPSIS
pvesm <COMMAND> [ARGS] [OPTIONS]
pvesm add <type> <storage> [OPTIONS]
创建新的存储。
- <type>: <btrfs | cephfs | cifs | dir | esxi | glusterfs | iscsi | iscsidirect | lvm | lvmthin | nfs | pbs | rbd | zfs | zfspool>
-
存储类型。
- <storage>: <storage ID>
-
存储标识符。
- --authsupported <string>
-
支持的认证方式。
- --base <string>
-
基础卷。此卷会自动激活。
- --blocksize <string>
-
块大小
- --bwlimit [clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]
-
为各种操作设置 I/O 带宽限制(单位为 KiB/s)。
- --comstar_hg <string>
-
comstar views 的主机组
- --comstar_tg <string>
-
comstar views 的目标组
- --content <string>
-
允许的内容类型。
值 rootdir 用于容器,值 images 用于虚拟机。 - --content-dirs <string>
-
覆盖默认内容类型目录。
- --create-base-path <boolean> (default = yes)
-
如果基础目录不存在,则创建它。
- --create-subdirs <boolean> (default = yes)
-
使用默认结构填充目录。
- --data-pool <string>
-
数据池(仅用于纠删码)
- --datastore <string>
-
Proxmox Backup Server datastore 名称。
- --disable <boolean>
-
用于禁用该存储的标志。
- --domain <string>
-
CIFS 域。
- --encryption-key a file containing an encryption key, or the special value "autogen"
-
加密密钥。使用 autogen 可自动生成一个不带口令的密钥。
- --export <string>
-
NFS 导出路径。
- --fingerprint ([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}
-
证书 SHA 256 指纹。
- --format <qcow2 | raw | subvol | vmdk>
-
默认镜像格式。
- --fs-name <string>
-
Ceph 文件系统名称。
- --fuse <boolean>
-
通过 FUSE 挂载 CephFS。
- --is_mountpoint <string> (default = no)
-
假定给定路径是由外部管理的挂载点;如果未挂载,则认为该存储离线。使用布尔值 (yes/no)可作为在此字段中使用目标路径的快捷写法。
- --iscsiprovider <string>
-
iscsi 提供程序
- --keyring file containing the keyring to authenticate in the Ceph cluster
-
客户端 keyring 内容(用于外部集群)。
- --krbd <boolean> (default = 0)
-
始终通过 krbd 内核模块访问 rbd。
- --lio_tpg <string>
-
Linux LIO targets 的 target portal group
- --master-pubkey a file containing a PEM-formatted master public key
-
Base64 编码、PEM 格式的 RSA 公钥。用于加密 encryption-key 的副本,该副本会添加到 每个加密备份中。
- --max-protected-backups <integer> (-1 - N) (default = Unlimited for users with Datastore.Allocate privilege, 5 for other users)
-
每个客户机的最大受保护备份数量。使用 -1 表示无限制。
- --maxfiles <integer> (0 - N)
-
已弃用:请改用 prune-backups。每台虚拟机的最大备份文件数量。使用 0 表示 无限制。
- --mkdir <boolean> (default = yes)
-
如果目录不存在则创建它,并填充默认子目录。NOTE: 已弃用,请改用 create-base-path 和 create-subdirs 选项。
- --monhost <string>
-
monitor 的 IP 地址(用于外部集群)。
- --mountpoint <string>
-
挂载点
- --namespace <string>
-
命名空间。
- --nocow <boolean> (default = 0)
-
在文件上设置 NOCOW 标志。它会禁用数据校验和,并在允许 direct I/O 的同时导致数据 错误无法恢复。仅当数据安全性不需要高于没有底层 RAID 系统的单块 ext4 格式化磁盘 时才使用此选项。
- --nodes <string>
-
该存储配置适用的节点列表。
- --nowritecache <boolean>
-
禁用目标上的写缓存
- --options <string>
-
NFS/CIFS 挂载选项(参见 man nfs 或 man mount.cifs)
- --password <password>
-
访问共享/datastore 的密码。
- --path <string>
-
文件系统路径。
- --pool <string>
-
池。
- --port <integer> (1 - 65535)
-
使用此端口而不是默认端口连接存储(例如用于 PBS 或 ESXi)。对于 NFS 和 CIFS,请 使用 options 选项通过挂载选项配置端口。
- --portal <string>
-
iSCSI portal(IP 或 DNS 名称,可带端口)。
- --preallocation <falloc | full | metadata | off> (default = metadata)
-
raw 和 qcow2 镜像的预分配模式。对 raw 镜像使用 metadata 会得到 preallocation=off。
- --prune-backups [keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]
-
保留选项会按较短时间间隔优先处理,其中 --keep-last 最先处理。每个选项覆盖一个 特定时间段。我们称该时间段内的备份由此选项覆盖。下一个选项不会处理已经覆盖的 备份,只会考虑更早的备份。
- --saferemove <boolean>
-
移除 LV 时将数据清零。
- --saferemove_throughput <string>
-
擦除吞吐量(cstream -t 参数值)。
- --server <string>
-
服务器 IP 或 DNS 名称。
- --server2 <string>
-
备用 volfile 服务器 IP 或 DNS 名称。
需要选项:server - --share <string>
-
CIFS 共享。
- --shared <boolean>
-
表示这是一个在所有节点(或 nodes 选项列出的所有节点)上内容相同的单一存储。 它不会让本地存储的内容自动被其他节点访问,只是将一个已经共享的存储标记为共享。
- --skip-cert-verification <boolean> (default = false)
-
禁用 TLS 证书验证;仅应在完全可信的网络中启用。
- --smbversion <2.0 | 2.1 | 3 | 3.0 | 3.11 | default> (default = default)
-
SMB 协议版本。未设置时为 default,会协商客户端和服务器双方均支持的最高 SMB2+ 版本。
- --sparse <boolean>
-
使用稀疏卷
- --subdir <string>
-
要挂载的子目录。
- --tagged_only <boolean>
-
仅使用带有 pve-vm-ID 标签的逻辑卷。
- --target <string>
-
iSCSI target。
- --thinpool <string>
-
LVM thin pool LV 名称。
- --transport <rdma | tcp | unix>
-
Gluster 传输:tcp 或 rdma
- --username <string>
-
RBD ID。
- --vgname <string>
-
卷组名称。
- --volume <string>
-
Glusterfs 卷。
pvesm alloc <storage> <vmid> <filename> <size> [OPTIONS]
分配磁盘镜像。
- <storage>: <storage ID>
-
存储标识符。
- <vmid>: <integer> (100 - 999999999)
-
指定所属虚拟机
- <filename>: <string>
-
要创建的文件名称。
- <size>: \d+[MG]?
-
大小,单位为 kilobyte(1024 字节)。可选后缀 M(megabyte,1024K)和 G(gigabyte,1024M)
- --format <qcow2 | raw | subvol | vmdk>
-
镜像格式。
需要选项:size
pvesm apiinfo
返回 APIVER 和 APIAGE。
pvesm cifsscan
pvesm scan cifs 的别名。
pvesm export <volume> <format> <filename> [OPTIONS]
内部用于导出卷。
- <volume>: <string>
-
卷标识符
- <format>: <btrfs | qcow2+size | raw+size | tar+size | vmdk+size | zfs>
-
导出流格式
- <filename>: <string>
-
目标文件名
- --base (?^i:[a-z0-9_\-]{1,40})
-
增量流的起始快照
- --snapshot (?^i:[a-z0-9_\-]{1,40})
-
要导出的快照
- --snapshot-list <string>
-
要传输的有序快照列表
- --with-snapshots <boolean> (default = 0)
-
是否在流中包含中间快照
pvesm extractconfig <volume>
从 vzdump 备份归档中提取配置。
- <volume>: <string>
-
卷标识符
pvesm free <volume> [OPTIONS]
删除卷
- <volume>: <string>
-
卷标识符
- --delay <integer> (1 - 30)
-
等待任务完成的时间。如果任务在该时间内完成,则返回 null。
- --storage <storage ID>
-
存储标识符。
pvesm glusterfsscan
pvesm scan glusterfs 的别名。
pvesm help [OPTIONS]
获取指定命令的帮助信息。
- --extra-args <array>
-
显示特定命令的帮助信息。
- --verbose <boolean>
-
详细输出格式。
pvesm import <volume> <format> <filename> [OPTIONS]
内部用于导入卷。
- <volume>: <string>
-
卷标识符
- <format>: <btrfs | qcow2+size | raw+size | tar+size | vmdk+size | zfs>
-
导入流格式
- <filename>: <string>
-
源文件名。使用 - 表示 stdin;tcp://<IP-or-CIDR> 格式允许使用 TCP 连接; unix://PATH-TO-SOCKET 格式表示使用 UNIX socket 作为输入。否则,该文件会被视为 普通文件。
- --allow-rename <boolean> (default = 0)
-
如果请求的卷 ID 已存在,则选择新的卷 ID,而不是抛出错误。
- --base (?^i:[a-z0-9_\-]{1,40})
-
增量流的基础快照
- --delete-snapshot (?^i:[a-z0-9_\-]{1,80})
-
成功后要删除的快照
- --snapshot (?^i:[a-z0-9_\-]{1,40})
-
如果流包含快照,则表示当前状态快照
- --with-snapshots <boolean> (default = 0)
-
流是否包含中间快照
pvesm iscsiscan
pvesm scan iscsi 的别名。
pvesm list <storage> [OPTIONS]
列出存储内容。
- <storage>: <storage ID>
-
存储标识符。
- --content <string>
-
仅列出此类型的内容。
- --vmid <integer> (100 - 999999999)
-
仅列出此虚拟机的镜像
pvesm lvmscan
pvesm scan lvm 的别名。
pvesm lvmthinscan
pvesm scan lvmthin 的别名。
pvesm nfsscan
pvesm scan nfs 的别名。
pvesm path <volume>
获取指定卷的文件系统路径
- <volume>: <string>
-
卷标识符
pvesm prune-backups <storage> [OPTIONS]
修剪备份。仅考虑使用标准命名方案的备份。如果未指定 keep 选项,则使用存储配置中 的选项。
- <storage>: <storage ID>
-
存储标识符。
- --dry-run <boolean>
-
仅显示将被修剪的内容,不删除任何内容。
- --keep-all <boolean>
-
保留所有备份。为 true 时与其他选项冲突。
- --keep-daily <N>
-
保留最近 <N> 个不同日期的备份。如果某一天有多个备份,则只保留最新的一个。
- --keep-hourly <N>
-
保留最近 <N> 个不同时段(小时)的备份。如果某一小时有多个备份,则只保留最新的 一个。
- --keep-last <N>
-
保留最后 <N> 个备份。
- --keep-monthly <N>
-
保留最近 <N> 个不同月份的备份。如果某一月份有多个备份,则只保留最新的一个。
- --keep-weekly <N>
-
保留最近 <N> 个不同周的备份。如果某一周有多个备份,则只保留最新的一个。
- --keep-yearly <N>
-
保留最近 <N> 个不同年份的备份。如果某一年有多个备份,则只保留最新的一个。
- --type <lxc | qemu>
-
qemu 或 lxc。仅考虑此类型客户机的备份。
- --vmid <integer> (100 - 999999999)
-
仅考虑此客户机的备份。
pvesm remove <storage>
删除存储配置。
- <storage>: <storage ID>
-
存储标识符。
pvesm scan cifs <server> [OPTIONS]
扫描远程 CIFS 服务器。
- <server>: <string>
-
服务器地址(名称或 IP)。
- --domain <string>
-
SMB 域(Workgroup)。
- --password <password>
-
用户密码。
- --username <string>
-
用户名。
pvesm scan glusterfs <server>
扫描远程 GlusterFS 服务器。
- <server>: <string>
-
服务器地址(名称或 IP)。
pvesm scan iscsi <portal>
扫描远程 iSCSI 服务器。
- <portal>: <string>
-
iSCSI portal(IP 或 DNS 名称,可带端口)。
pvesm scan lvm
列出本地 LVM 卷组。
pvesm scan lvmthin <vg>
列出本地 LVM Thin Pool。
- <vg>: [a-zA-Z0-9\.\+\_][a-zA-Z0-9\.\+\_\-]+
-
无可用描述
pvesm scan nfs <server>
扫描远程 NFS 服务器。
- <server>: <string>
-
服务器地址(名称或 IP)。
pvesm scan pbs <server> <username> --password <string> [OPTIONS] [FORMAT_OPTIONS]
扫描远程 Proxmox Backup Server。
- <server>: <string>
-
服务器地址(名称或 IP)。
- <username>: <string>
-
用户名或 API token-ID。
- --fingerprint ([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}
-
证书 SHA 256 指纹。
- --password <string>
-
用户密码或 API token secret。
- --port <integer> (1 - 65535) (default = 8007)
-
可选端口。
pvesm scan zfs
扫描本地节点上的 zfs pool 列表。
pvesm set <storage> [OPTIONS]
更新存储配置。
- <storage>: <storage ID>
-
存储标识符。
- --blocksize <string>
-
块大小
- --bwlimit [clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]
-
为各种操作设置 I/O 带宽限制(单位为 KiB/s)。
- --comstar_hg <string>
-
comstar views 的主机组
- --comstar_tg <string>
-
comstar views 的目标组
- --content <string>
-
允许的内容类型。
值 rootdir 用于容器,值 images 用于虚拟机。 - --content-dirs <string>
-
覆盖默认内容类型目录。
- --create-base-path <boolean> (default = yes)
-
如果基础目录不存在,则创建它。
- --create-subdirs <boolean> (default = yes)
-
使用默认结构填充目录。
- --data-pool <string>
-
数据池(仅用于纠删码)
- --delete <string>
-
要删除的设置列表。
- --digest <string>
-
如果当前配置文件的 digest 不同,则阻止变更。这可用于防止并发修改。
- --disable <boolean>
-
用于禁用该存储的标志。
- --domain <string>
-
CIFS 域。
- --encryption-key a file containing an encryption key, or the special value "autogen"
-
加密密钥。使用 autogen 可自动生成一个不带口令的密钥。
- --fingerprint ([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}
-
证书 SHA 256 指纹。
- --format <qcow2 | raw | subvol | vmdk>
-
默认镜像格式。
- --fs-name <string>
-
Ceph 文件系统名称。
- --fuse <boolean>
-
通过 FUSE 挂载 CephFS。
- --is_mountpoint <string> (default = no)
-
假定给定路径是由外部管理的挂载点;如果未挂载,则认为该存储离线。使用布尔值 (yes/no)可作为在此字段中使用目标路径的快捷写法。
- --keyring file containing the keyring to authenticate in the Ceph cluster
-
客户端 keyring 内容(用于外部集群)。
- --krbd <boolean> (default = 0)
-
始终通过 krbd 内核模块访问 rbd。
- --lio_tpg <string>
-
Linux LIO targets 的 target portal group
- --master-pubkey a file containing a PEM-formatted master public key
-
Base64 编码、PEM 格式的 RSA 公钥。用于加密 encryption-key 的副本,该副本会添加到 每个加密备份中。
- --max-protected-backups <integer> (-1 - N) (default = Unlimited for users with Datastore.Allocate privilege, 5 for other users)
-
每个客户机的最大受保护备份数量。使用 -1 表示无限制。
- --maxfiles <integer> (0 - N)
-
已弃用:请改用 prune-backups。每台虚拟机的最大备份文件数量。使用 0 表示 无限制。
- --mkdir <boolean> (default = yes)
-
如果目录不存在则创建它,并填充默认子目录。NOTE: 已弃用,请改用 create-base-path 和 create-subdirs 选项。
- --monhost <string>
-
monitor 的 IP 地址(用于外部集群)。
- --mountpoint <string>
-
挂载点
- --namespace <string>
-
命名空间。
- --nocow <boolean> (default = 0)
-
在文件上设置 NOCOW 标志。它会禁用数据校验和,并在允许 direct I/O 的同时导致数据 错误无法恢复。仅当数据安全性不需要高于没有底层 RAID 系统的单块 ext4 格式化磁盘 时才使用此选项。
- --nodes <string>
-
该存储配置适用的节点列表。
- --nowritecache <boolean>
-
禁用目标上的写缓存
- --options <string>
-
NFS/CIFS 挂载选项(参见 man nfs 或 man mount.cifs)
- --password <password>
-
访问共享/datastore 的密码。
- --pool <string>
-
池。
- --port <integer> (1 - 65535)
-
使用此端口而不是默认端口连接存储(例如用于 PBS 或 ESXi)。对于 NFS 和 CIFS,请 使用 options 选项通过挂载选项配置端口。
- --preallocation <falloc | full | metadata | off> (default = metadata)
-
raw 和 qcow2 镜像的预分配模式。对 raw 镜像使用 metadata 会得到 preallocation=off。
- --prune-backups [keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]
-
保留选项会按较短时间间隔优先处理,其中 --keep-last 最先处理。每个选项覆盖一个 特定时间段。我们称该时间段内的备份由此选项覆盖。下一个选项不会处理已经覆盖的 备份,只会考虑更早的备份。
- --saferemove <boolean>
-
移除 LV 时将数据清零。
- --saferemove_throughput <string>
-
擦除吞吐量(cstream -t 参数值)。
- --server <string>
-
服务器 IP 或 DNS 名称。
- --server2 <string>
-
备用 volfile 服务器 IP 或 DNS 名称。
需要选项:server - --shared <boolean>
-
表示这是一个在所有节点(或 nodes 选项列出的所有节点)上内容相同的单一存储。 它不会让本地存储的内容自动被其他节点访问,只是将一个已经共享的存储标记为共享。
- --skip-cert-verification <boolean> (default = false)
-
禁用 TLS 证书验证;仅应在完全可信的网络中启用。
- --smbversion <2.0 | 2.1 | 3 | 3.0 | 3.11 | default> (default = default)
-
SMB 协议版本。未设置时为 default,会协商客户端和服务器双方均支持的最高 SMB2+ 版本。
- --sparse <boolean>
-
使用稀疏卷
- --subdir <string>
-
要挂载的子目录。
- --tagged_only <boolean>
-
仅使用带有 pve-vm-ID 标签的逻辑卷。
- --transport <rdma | tcp | unix>
-
Gluster 传输:tcp 或 rdma
- --username <string>
-
RBD ID。
pvesm status [OPTIONS]
获取所有 datastore 的状态。
- --content <string>
-
仅列出支持此内容类型的存储。
- --enabled <boolean> (default = 0)
-
仅列出已启用的存储(未在配置中禁用)。
- --format <boolean> (default = 0)
-
包含格式相关信息
- --storage <storage ID>
-
仅列出指定存储的状态
- --target <string>
-
如果 target 不同于 node,则只列出内容可被此 node 和指定 target 节点访问的 共享存储。
pvesm zfsscan
pvesm scan zfs 的别名。
# pvesm status # pvesm list <storage> # pvesm prune-backups <storage> --dry-run # pvesm scan nfs <server>
DESCRIPTION
Proxmox VE 的存储模型非常灵活。虚拟机镜像既可以存储在一个或多个本地存储上, 也可以存储在 NFS 或 iSCSI(NAS、SAN)等共享存储上。系统没有固定数量限制, 可以按需配置任意数量的存储池。OpenEuler Linux 可用的所有存储技术都可以使用。
将虚拟机存储在共享存储上的一个主要优势是,可以在不停机的情况下实时迁移正在运行的机器, 因为集群中的所有节点都可以直接访问虚拟机磁盘镜像。这种情况下无需复制虚拟机镜像数据, 因此实时迁移速度很快。
存储库(软件包 libpve-storage-perl)使用灵活的插件系统,为所有存储类型提供统一接口。 将来可以很容易地扩展以包含更多存储类型。
存储类型
存储类型基本分为两大类:
- 文件级存储
-
基于文件级的存储技术允许访问功能完整的(POSIX)文件系统。一般来说, 它们比任何块级存储(见下文)更灵活,并允许存储任意类型的内容。ZFS 可能是最先进的系统, 并且完整支持快照和克隆。
- 块级存储
-
允许存储大型 raw 镜像。通常无法在这类存储类型上存储其他文件(ISO、备份等)。 大多数现代块级存储实现都支持快照和克隆。RADOS 和 GlusterFS 是分布式系统, 会将存储数据复制到不同节点。
| 说明 | 插件类型 | 级别 | 共享 | 快照 | 稳定性 |
|---|---|---|---|---|---|
ZFS(本地) |
zfspool |
both1 |
no |
yes |
yes |
目录 |
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: 虚拟机磁盘镜像存储在提供块设备功能的 ZFS volume(zvol)数据集中。
2: 在基于文件的存储上,可以通过 qcow2 格式实现快照。
3: 可以在基于 iSCSI 或 FC 的存储之上使用 LVM。这样可以获得 shared LVM 存储。
精简配置
许多存储以及 QEMU 镜像格式 qcow2 都支持“精简配置”。启用精简配置后, 只有客户机系统实际使用的块才会写入存储。
例如,创建一台带 32GB 硬盘的虚拟机,安装客户机操作系统后,虚拟机根文件系统中包含 3GB 数据。在这种情况下,即使客户机虚拟机看到的是 32GB 硬盘,也只有 3GB 会写入存储。 通过这种方式,精简配置允许创建大于当前可用存储块数量的磁盘镜像。可以先为虚拟机创建 较大的磁盘镜像,并在需要时为存储添加更多磁盘,而无需调整虚拟机文件系统大小。
所有具备“快照”特性的存储类型也都支持精简配置。
|
|
如果某个存储被写满,所有使用该存储上卷的客户机都会收到 IO 错误。 这可能导致文件系统不一致,并可能损坏数据。因此,建议避免过度配置存储资源, 或仔细监控可用空间以避免此类情况。 |
存储配置
所有与 Proxmox VE 相关的存储配置都保存在单个文本文件 /etc/pve/storage.cfg 中。 由于该文件位于 /etc/pve/ 内,它会自动分发到所有集群节点。因此,所有节点共享同一份 存储配置。
对于共享存储,共享存储配置是很自然的,因为所有节点都能访问同一个“共享”存储。 但这对本地存储类型同样有用。在这种情况下,此类本地存储在所有节点上都可用, 但物理上是不同的,也可能包含完全不同的内容。
存储池
每个存储池都有一个 <type>,并通过其 <STORAGE_ID> 唯一标识。存储池配置如下所示:
<type>: <STORAGE_ID>
<property> <value>
<property> <value>
<property>
...
<type>: <STORAGE_ID> 行开始一个存储池定义,随后是属性列表。大多数属性需要值。 有些属性具有合理的默认值,此时可以省略该值。
更具体地说,可以查看安装后的默认存储配置。它包含一个名为 local 的特殊本地存储池, 指向目录 /var/lib/vz,并且始终可用。Proxmox VE 安装程序会根据安装时选择的存储类型 创建额外的存储条目。
dir: local
path /var/lib/vz
content iso,vztmpl,backup
# default image store on LVM based installation
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
# default image store on ZFS based installation
zfspool: local-zfs
pool rpool/data
sparse
content images,rootdir
|
|
让多个存储配置指向完全相同的底层存储会带来问题。这类 aliased 存储配置可能导致两个不同的卷 ID(volid)指向同一个磁盘镜像。Proxmox VE 期望镜像的卷 ID 是唯一的。为 aliased 存储配置选择不同内容类型在某些情况下可行,但不推荐。 |
通用存储属性
一些存储属性在不同存储类型之间通用。
- nodes
-
可以使用或访问该存储的集群节点名称列表。可以使用该属性将存储访问限制在有限的一组节点上。
- content
-
一个存储可以支持多种内容类型,例如虚拟磁盘镜像、cdrom ISO 镜像、容器模板或容器根目录。 并非所有存储类型都支持所有内容类型。可以设置该属性以选择该存储的用途。
- images
-
QEMU/KVM 虚拟机镜像。
- rootdir
-
允许存储容器数据。
- vztmpl
-
容器模板。
- backup
-
备份文件(vzdump)。
- iso
-
ISO 镜像
- snippets
-
片段文件,例如客户机 hook 脚本
- shared
-
表示这是一个在所有节点(或 nodes 选项列出的所有节点)上内容相同的单一存储。 它不会让本地存储的内容自动对其他节点可访问,只是把已经共享的存储标记为共享。
- disable
-
可以使用该标志完全禁用存储。
- maxfiles
-
已弃用,请改用 prune-backups。每台虚拟机的最大备份文件数量。使用 0 表示不限制。
- prune-backups
-
备份保留选项。详情请参见 备份保留。
- format
-
默认镜像格式(raw|qcow2|vmdk)
- preallocation
-
文件型存储上 raw 和 qcow2 镜像的预分配模式(off|metadata|falloc|full)。 默认值为 metadata,对于 raw 镜像会按 off 处理。当网络存储与大型 qcow2 镜像配合使用时,使用 off 有助于避免超时。
|
|
不建议在不同 Proxmox VE 集群上使用同一个存储池。某些存储操作需要对存储进行独占访问, 因此需要正确的锁定机制。该机制已在集群内部实现,但不能跨不同集群工作。 |
卷
系统使用一种特殊表示法来定位存储数据。从存储池分配数据时,会返回这样的卷标识符。 卷由 <STORAGE_ID> 标识,后接依赖于存储类型的卷名称,中间以冒号分隔。 有效的 <VOLUME_ID> 如下所示:
local:230/example-image.raw
local:iso/debian-501-amd64-netinst.iso
local:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
iscsi-storage:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61
要获取 <VOLUME_ID> 的文件系统路径,请使用:
pvesm path <VOLUME_ID>
使用命令行界面
建议熟悉存储池和卷标识符背后的概念,但在实际使用中,并不要求在命令行执行这些低级操作。 通常,卷的分配和移除由虚拟机与容器管理工具完成。
不过,系统提供了名为 pvesm(“Proxmox VE Storage Manager”)的命令行工具, 可执行常见的存储管理任务。
示例
添加存储池
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>
|
|
这会真正销毁该卷上的所有数据。 |
列出存储状态
pvesm status
列出存储内容
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 path <VOLUME_ID>
将卷 local:103/vm-103-disk-0.qcow2 导出到文件 target。 这主要在内部与 pvesm import 配合使用。流格式 qcow2+size 不同于 qcow2 格式。 因此,导出的文件不能简单地附加到虚拟机。其他格式也是如此。
pvesm export local:103/vm-103-disk-0.qcow2 qcow2+size target --with-snapshots 1
常用命令示例:
pvesm status pvesm list local pvesm path <VOLUME_ID>
目录后端
存储池类型:dir
Proxmox VE 可以使用本地目录或本地挂载的共享作为存储。目录是一种文件级存储, 因此可以存储虚拟磁盘镜像、容器、模板、ISO 镜像或备份文件等任何内容类型。
|
|
可以通过标准 Linux /etc/fstab 挂载其他存储,然后为该挂载点定义 目录存储。通过这种方式,可以使用 Linux 支持的任何文件系统。 |
该后端仅假定底层目录兼容 POSIX,不再要求其他特性。这意味着不能在存储层 创建快照。但对于使用 qcow2 文件格式的虚拟机镜像存在一种替代方式, 因为该格式内部支持快照。
|
|
某些存储类型不支持 O_DIRECT,因此不能在这类存储上使用 none 缓存模式。可改用 writeback 缓存模式。 |
系统使用预定义的目录布局,将不同内容类型存储到不同子目录中。所有文件级 存储后端都会使用该布局。
| 内容类型 | 子目录 |
|---|---|
虚拟机镜像 |
images/<VMID>/ |
ISO 镜像 |
template/iso/ |
容器模板 |
template/cache/ |
备份文件 |
dump/ |
片段 |
snippets/ |
配置
该后端支持所有通用存储属性,并额外增加两个属性。path 属性用于指定目录。 该目录必须是绝对文件系统路径。
可选的 content-dirs 属性允许更改默认布局。它由逗号分隔的标识符列表组成, 格式如下:
vtype=path
其中 vtype 是该存储允许的内容类型之一,path 是相对于该存储挂载点的路径。
dir: backup
path /mnt/backup
content backup
prune-backups keep-last=7
max-protected-backups 3
content-dirs backup=custom/backup/dir
上述配置定义了一个名为 backup 的存储池。该存储池可为每台虚拟机最多保存 7 个普通备份(keep-last=7)和 3 个受保护备份。备份文件的实际路径为 /mnt/backup/custom/backup/dir/...。
文件命名约定
该后端对虚拟机镜像使用明确的命名方案:
vm-<VMID>-<NAME>.<FORMAT>
- <VMID>
-
指定所属虚拟机。
- <NAME>
-
可以是不包含空白字符的任意名称(ascii)。后端默认使用 disk-[N], 其中 [N] 会替换为整数,以确保名称唯一。
- <FORMAT>
-
指定镜像格式(raw|qcow2|vmdk)。
创建虚拟机模板时,所有虚拟机镜像都会被重命名,以表示它们现在是只读的, 并可作为克隆的基础镜像:
base-<VMID>-<NAME>.<FORMAT>
|
|
这类基础镜像用于生成克隆镜像。因此,确保这些文件只读且永不被修改 非常重要。后端会将访问模式更改为 0444,并在存储支持时设置 immutable 标志(chattr +i)。 |
存储特性
如上所述,大多数文件系统本身不直接支持快照。为规避该问题,此后端可以使用 qcow2 的内部快照能力。
克隆也是同样的情况。后端使用 qcow2 基础镜像功能来创建克隆。
| 内容类型 | 镜像格式 | 共享 | 快照 | 克隆 |
|---|---|---|---|---|
images rootdir vztmpl iso backup snippets |
raw qcow2 vmdk subvol |
no |
qcow2 |
qcow2 |
示例
请使用以下命令在存储 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'
|
|
镜像名称必须符合上述命名约定。 |
可以通过以下命令显示真实文件系统路径:
# 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
常用命令示例:
pvesm status pvesm list local
NFS 后端
存储池类型:nfs
NFS 后端基于目录后端,因此共享其中的大多数属性。目录布局和文件命名约定也相同。 它的主要优势在于可以直接配置 NFS 服务器属性,使后端能够自动挂载共享,无需修改 /etc/fstab。该后端还可以检测服务器是否在线,并提供查询服务器导出共享的方法。
配置
该后端支持除 shared 标志之外的所有通用存储属性;shared 标志始终为启用状态。 此外,以下属性用于配置 NFS 服务器:
- server
-
服务器 IP 或 DNS 名称。为避免 DNS 查询延迟,通常更建议使用 IP 地址而不是 DNS 名称,除非你有非常可靠的 DNS 服务器,或者已将该服务器写入本地 /etc/hosts 文件。
- export
-
NFS 导出路径(即 pvesm nfsscan 列出的路径)。
也可以设置 NFS 挂载选项:
- path
-
本地挂载点(默认为 /mnt/pve/<STORAGE_ID>/)。
- content-dirs
-
对默认目录布局的覆盖配置。可选。
- options
-
NFS 挂载选项(参见 man nfs)。
nfs: iso-templates
path /mnt/pve/iso-templates
server 10.0.0.10
export /space/iso-templates
options vers=3,soft
content iso,vztmpl
|
|
NFS 请求超时后,默认会无限重试。这可能导致客户端出现意外的长时间挂起。 对于只读内容,值得考虑使用 NFS soft 选项,它会将重试次数限制为三次。 |
eNFS 多路径
eNFS 是 openEuler 对 NFS 客户端的增强,用于在一个 NFS 挂载点上建立多条访问路径, 提供多路径、负载均衡和故障转移能力。eNFS 属于客户端增强,不要求 NFS 服务器部署 PXVIRT 组件;但服务器端需要启用 NFSv3,因为 eNFS 当前仅支持 NFSv3。
更多信息可参见 openEuler eNFS 使用指南: eNFS 使用指南。
典型架构
在典型部署中,PXVIRT 主机和 NFS 服务器各自具有多个可互通的业务 IP。例如:
-
PXVIRT 主机:10.13.13.81、10.13.14.81
-
NFS 服务器:10.13.13.3、10.13.14.3
启用 eNFS 后,同一个 NFS 存储可以同时通过多条路径访问 NFS 服务器。eNFS 会在 可用路径之间进行负载均衡,并在部分路径异常时将 IO 切换到其他可用路径。
+---------------------+ +---------------------+ | PXVIRT 主机 | | NFS 服务器 | | | | | | +-------------+ | | +-------------+ | | | eNFS 客户端 | | | | NFS Server | | | +-------------+ | | +-------------+ | | | | | | | | 10.13.13.81 ---+-----------------------> 10.13.13.3 | | | 连接路径 1 | | | 10.13.14.81 ---+-----------------------> 10.13.14.3 | | | 连接路径 2 | | +---------------------+ +---------------------+
系统要求
使用 eNFS 需要满足以下条件:
-
PXVIRT 主机使用 openEuler 内核 6.6-openeuler,且版本不低于 6.6.0-10。
-
NFS 服务器启用 NFSv3 支持。
-
PXVIRT 主机到 remoteaddrs 中配置的所有 NFS 服务器地址均可达。
eNFS 配置文件
可以在每个 PXVIRT 节点上创建 /etc/enfs/config.ini 配置文件。以下示例启用多路径:
multipath_disable=0
该配置是可选项。未创建该文件时,eNFS 使用内核模块的默认配置。
存储配置
创建 NFS 存储时,需要使用 NFSv3,并在 options 中配置 remoteaddrs。例如:
nfs: nfs
export /NFS/vm
path /mnt/pve/nfs
server 10.13.14.3
content images
options remoteaddrs=10.13.14.3~10.13.13.3,vers=3
prune-backups keep-all=1
也可以先在 Web 界面中创建普通 NFS 存储,并选择 NFS 版本 3。随后在 /etc/pve/storage.cfg 中为该存储添加 options 行。
remoteaddrs 中的 IP 地址必须属于同一台 NFS 服务器或同一个 NFS 服务集群。 多个地址使用 ~ 分隔。eNFS 会根据这些远端地址和本机可达地址建立多条访问路径。
验证
可以使用 mount 查看当前挂载选项。启用 eNFS 后,输出中应包含 remoteaddrs 和 enfs_info:
# mount 10.13.14.3:/NFS/vm on /mnt/pve/nfs type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard, proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.13.14.3, mountvers=3,mountproto=udp,local_lock=none,addr=10.13.14.3, remoteaddrs=10.13.14.3~10.13.13.3,enfs_info=10.13.14.3_1)
也可以通过 /proc/enfs/<nfsserver>/stat 查看 eNFS 路径和 IO 统计信息:
# cat /proc/enfs/*/stat id local_addr remote_addr r_count r_rtt r_exec w_count w_rtt w_exec queuelen 0 10.13.14.81 10.13.14.3 0 0 0 499 7 24 0 1 10.13.13.81 10.13.13.3 0 0 0 525 6 26 0
CIFS 后端
存储池类型:cifs
CIFS 后端扩展了目录后端,因此无需手动设置 CIFS 挂载。可以直接通过 Proxmox VE API 或 Web UI 添加此类存储,并继续使用后端提供的优势,例如服务器心跳检查,以及便捷地选择 导出的共享。
配置
该后端支持所有通用存储属性,但 shared 标志除外,该标志始终会被设置。此外,还可使用 以下 CIFS 专用属性:
- server
-
服务器 IP 或 DNS 名称。必填。
|
|
为避免 DNS 查询延迟,通常最好使用 IP 地址而不是 DNS 名称,除非你拥有非常可靠的 DNS 服务器,或已在本地 /etc/hosts 文件中列出该服务器。 |
- share
-
要使用的 CIFS 共享(可通过 pvesm scan cifs <address> 或 Web UI 获取可用共享)。 必填。
- username
-
CIFS 存储使用的用户名。可选,默认为 ‘guest’。
- password
-
用户密码。可选。它会保存到仅 root 可读的文件中 (/etc/pve/priv/storage/<STORAGE-ID>.pw)。
- domain
-
设置该存储的用户域(工作组)。可选。
- smbversion
-
SMB 协议版本。可选,默认为 3。由于安全问题,不支持 SMB1。
- path
-
本地挂载点。可选,默认为 /mnt/pve/<STORAGE_ID>/。
- content-dirs
-
默认目录布局的覆盖设置。可选。
- options
-
额外的 CIFS 挂载选项(参见 man mount.cifs)。部分选项会自动设置,不应在此处设置。 Proxmox VE 始终会设置 soft 选项。根据配置,以下选项会自动设置:username, credentials, guest, domain, vers。
- subdir
-
要挂载的共享子目录。可选,默认为共享的根目录。
cifs: backup
path /mnt/pve/backup
server 10.0.0.11
share VMData
content backup
options noserverino,echo_interval=30
username anna
smbversion 3
subdir /data
Proxmox Backup Server
存储池类型:pbs
该后端允许像集成其他存储一样,将 Proxmox Backup Server 直接集成到 Proxmox VE 中。 可以通过 Proxmox VE API、CLI 或 Web 界面直接添加 Proxmox Backup 存储。
配置
该后端支持所有通用存储属性,但 shared 标志除外,该标志始终会被设置。此外, Proxmox Backup Server 还支持以下专用属性:
- server
-
服务器 IP 或 DNS 名称。必填。
- port
-
使用该端口替代默认端口 8007。可选。
- username
-
Proxmox Backup Server 存储使用的用户名。必填。
|
|
不要忘记在用户名中添加 realm。例如 root@pam 或 archiver@pbs。 |
- password
-
用户密码。该值会保存到 /etc/pve/priv/storage/<STORAGE-ID>.pw 文件中, 并限制为 root 用户访问。必填。
- datastore
-
要使用的 Proxmox Backup Server datastore ID。必填。
- fingerprint
-
Proxmox Backup Server API TLS 证书的指纹。可以在服务器 Dashboard 中获取, 也可以使用 proxmox-backup-manager cert info 命令获取。对于自签名证书, 或主机不信任服务器 CA 的其他证书,该项为必填。
- encryption-key
-
用于在客户端侧加密备份数据的密钥。目前仅支持未受密码保护的密钥(无 key derive function,kdf)。密钥会保存到 /etc/pve/priv/storage/<STORAGE-ID>.enc 文件中, 并限制为 root 用户访问。使用特殊值 autogen 可通过 proxmox-backup-client key create --kdf none <path> 自动生成新密钥。可选。
- master-pubkey
-
用于在备份任务中加密备份加密密钥的 RSA 公钥。它会保存到 /etc/pve/priv/storage/<STORAGE-ID>.master.pem 文件中,并限制为 root 用户访问。 备份加密密钥的加密副本会附加到每个备份中,并存储在 Proxmox Backup Server 实例上, 以供恢复使用。可选,但要求配置 encryption-key。
pbs: backup
datastore main
server enya.proxmox.com
content backup
fingerprint 09:54:ef:..snip..:88:af:47:fe:4c:3b:cf:8b:26:88:0b:4e:3c:b2
prune-backups keep-all=1
username archiver@pbs
encryption-key a9:ee:c8:02:13:..snip..:2d:53:2c:98
master-pubkey 1
存储特性
Proxmox Backup Server 仅支持备份,备份可以基于块级或文件级。Proxmox VE 对虚拟机使用块级备份, 对容器使用文件级备份。
| 内容类型 | 镜像格式 | 共享 | 快照 | 克隆 |
|---|---|---|---|---|
backup |
n/a |
是 |
n/a |
n/a |
加密
可以选择配置使用 AES-256 GCM 模式的客户端侧加密。可以通过 Web 界面配置加密, 也可以在 CLI 中使用 encryption-key 选项(见上文)。密钥会保存到 /etc/pve/priv/storage/<STORAGE-ID>.enc 文件中,该文件仅 root 用户可访问。
|
|
如果没有对应密钥,备份将无法访问。因此,应有序保管密钥,并将其存放在与被备份内容分离的位置。 例如,如果使用某个系统上的密钥备份整个系统,而该系统随后因任何原因无法访问并需要还原, 由于加密密钥会随故障系统一同丢失,还原将无法完成。 |
建议将密钥安全保存,同时确保在灾难恢复时能够快速取得。因此,最佳存放位置是密码管理器, 这样可以立即恢复。作为补充,也应将密钥保存到 USB 闪存盘,并存放在安全位置。 这样密钥就与任何系统分离,但在紧急情况下仍容易取回。最后,为应对最坏情况, 还应考虑将密钥的纸质副本锁存在安全位置。paperkey 子命令可用于创建密钥的 QR 编码版本。 以下命令会将 paperkey 命令的输出发送到文本文件,以便打印。
# proxmox-backup-client key paperkey /etc/pve/priv/storage/<STORAGE-ID>.enc --output-format text > qrkey.txt
此外,还可以使用单个 RSA 主密钥对进行密钥恢复:将所有执行加密备份的客户端配置为使用同一个主公钥, 之后所有加密备份都会包含一份经 RSA 加密的已用 AES 加密密钥副本。即使客户端系统不再可用, 对应的主私钥也允许恢复 AES 密钥并解密备份。
|
|
主密钥对适用与普通加密密钥相同的安全保管规则。没有私钥副本就无法恢复! paperkey 命令支持生成主私钥的纸质副本,以便存放在安全的物理位置。 |
由于加密是在客户端侧管理的,同一服务器 datastore 可同时用于未加密备份和加密备份, 即使这些备份使用不同密钥加密也可以。但是,不同密钥的备份之间无法进行去重, 因此通常最好创建单独的 datastore。
|
|
如果加密没有实际收益,请不要使用加密。例如,当服务器在受信任网络中本地运行时, 从未加密备份中恢复总是更简单。 |
示例:通过 CLI 添加存储
可以使用以下命令获取可用 Proxmox Backup Server datastore 列表:
# pvesm scan pbs <server> <username> [--password <string>] [--fingerprint <string>]
然后可以使用以下命令将其中一个 datastore 作为存储添加到整个 Proxmox VE 集群:
# pvesm add pbs <id> --server <server> --datastore <datastore> --username <username> --fingerprint 00:B4:... --password
GlusterFS 后端
存储池类型:glusterfs
GlusterFS 是一种可扩展的网络文件系统。该系统采用模块化设计,可运行在通用硬件上, 并能以较低成本提供高可用的企业级存储。这类系统可以扩展到数 PB 规模, 并可处理数千个客户端。
|
|
在节点或 brick 崩溃后,GlusterFS 会执行完整的 rsync 以确保数据一致。 对于大文件,这可能耗费很长时间,因此该后端不适合存储大型虚拟机镜像。 |
配置
该后端支持所有通用存储属性,并额外增加以下 GlusterFS 专用选项:
- server
-
GlusterFS volfile 服务器 IP 或 DNS 名称。
- server2
-
备用 volfile 服务器 IP 或 DNS 名称。
- volume
-
GlusterFS 卷。
- transport
-
GlusterFS 传输方式:tcp、unix 或 rdma
glusterfs: Gluster
server 10.2.3.4
server2 10.2.3.5
volume glustervol
content images,iso
本地 ZFS Pool 后端
存储池类型:zfspool
此后端允许访问本地 ZFS pool(或这些 pool 内的 ZFS 文件系统)。
配置
该后端支持通用存储属性 content、nodes、disable,以及以下 ZFS 专用属性:
- pool
-
选择 ZFS pool/文件系统。所有分配都在该 pool 内完成。
- blocksize
-
设置 ZFS blocksize 参数。
- sparse
-
使用 ZFS thin-provisioning。sparse 卷是指 reservation 不等于卷大小的卷。
- mountpoint
-
ZFS pool/文件系统的挂载点。更改此项不会影响 zfs 看到的数据集 mountpoint 属性。默认为 /<pool>。
zfspool: vmdata
pool tank/vmdata
content rootdir,images
sparse
文件命名约定
该后端对虚拟机镜像使用以下命名方案:
vm-<VMID>-<NAME> // normal VM images base-<VMID>-<NAME> // template VM image (read-only) subvol-<VMID>-<NAME> // subvolumes (ZFS filesystem for containers)
- <VMID>
-
指定所属虚拟机。
- <NAME>
-
可以是不包含空白字符的任意名称(ascii)。后端默认使用 disk[N],其中 [N] 会替换为整数以确保名称唯一。
存储特性
在快照和克隆方面,ZFS 可能是最先进的存储类型。该后端对虚拟机镜像(格式 raw)和容器数据(格式 subvol)均使用 ZFS dataset。ZFS 属性会从父 dataset 继承,因此可以直接在父 dataset 上设置默认值。
| 内容类型 | 镜像格式 | 共享 | 快照 | 克隆 |
|---|---|---|---|---|
images rootdir |
raw subvol |
否 |
是 |
是 |
LVM 后端
存储池类型:lvm
LVM 是构建在硬盘和分区之上的轻量级软件层。它可用于将可用磁盘空间划分为较小的逻辑卷。LVM 在 Linux 上被广泛使用,可简化硬盘管理。
另一种使用场景是在大型 iSCSI LUN 之上部署 LVM。这样可以方便地管理该 iSCSI LUN 上的空间;否则,由于 iSCSI 规范未定义用于空间分配的管理接口,这类管理将无法实现。
配置
LVM 后端支持通用存储属性 content、nodes、disable,以及以下 LVM 专用属性:
- vgname
-
LVM 卷组名称。必须指向一个已存在的卷组。
- base
-
基础卷。访问该存储前,此卷会被自动激活。当 LVM 卷组位于远程 iSCSI 服务器上时,此项尤其有用。
- saferemove
-
在 Web UI 中称为 "Wipe Removed Volumes"。移除 LV 时将数据清零。移除卷时,此项可确保所有数据被擦除,之后创建并恰好分配到相同物理 extent 的其他 LV 无法访问这些数据。该操作成本较高,但在某些环境中可能是必要的安全措施。
- saferemove_throughput
-
擦除吞吐量(cstream -t 参数值)。
lvm: myspace
vgname myspace
content rootdir,images
LVM thin 后端
存储池类型:lvmthin
普通 LVM 通常会在创建卷时分配块。LVM thin pool 则在写入数据时才分配块。这种行为称为 thin-provisioning,因为卷的逻辑大小可以大于实际可用的物理空间。
可以使用常规 LVM 命令行工具来管理和创建 LVM thin pool(详情请参见 man lvmthin)。假设已经有一个名为 pve 的 LVM 卷组,以下命令会创建一个名为 data、 大小为 100G 的 LVM thin pool:
lvcreate -L 100G -n data pve lvconvert --type thin-pool pve/data
配置
LVM thin 后端支持通用存储属性 content、nodes、disable,以及以下 LVM 专用属性:
- vgname
-
LVM 卷组名称。必须指向一个已存在的卷组。
- thinpool
-
LVM thin pool 的名称。
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
Open-iSCSI initiator
存储池类型:iscsi
iSCSI 是一种广泛用于连接存储服务器的技术。几乎所有存储厂商都支持 iSCSI。也有 可用的开源 iSCSI target 解决方案,例如基于 Debian 的 OpenMediaVault。
要使用该后端,需要安装 Open-iSCSI(open-iscsi) 软件包。这是标准 OpenEuler 软件包,但为了节省资源,默认不会安装。
# dnf install open-iscsi
低级 iscsi 管理任务可以使用 iscsiadm 工具完成。
配置
该后端支持通用存储属性 content、nodes、disable,以及以下 iSCSI 专用属性:
- portal
-
iSCSI portal(IP 或 DNS 名称,可带端口)。
- target
-
iSCSI target。
iscsi: mynas
portal 10.10.10.1
target iqn.2006-01.openfiler.com:tsn.dcb5aaaddd
content none
|
|
如果希望在 iSCSI 之上使用 LVM,将 content none 设为该值是合理的。这样 就不能直接使用 iSCSI LUN 创建虚拟机。 |
文件命名约定
iSCSI 协议没有定义用于分配或删除数据的接口。这些操作需要在 target 侧完成,并且 与厂商实现相关。target 只是将它们作为带编号的 LUN 导出。因此,Proxmox VE iSCSI 卷名 只是编码了 Linux 内核所看到的 LUN 的一些信息。
用户态 iSCSI 后端
存储池类型:iscsidirect
该后端提供的功能基本与 Open-iSCSI 后端相同,但通过用户态库实现。要使用该后端,需要安装 libiscsi 软件包。
需要注意的是,该后端不涉及内核驱动,因此可视为一种性能优化方式。但它也有一个缺点: 不能在这类 iSCSI LUN 之上使用 LVM。因此,所有空间分配都需要在存储服务器端管理。
Ceph RADOS 块设备(RBD)
存储池类型:rbd
Ceph 是一种分布式对象存储和文件系统,设计目标是提供优秀的性能、可靠性和可扩展性。 RADOS 块设备实现了功能丰富的块级存储,并具备以下优势:
-
thin provisioning
-
可调整大小的卷
-
分布式且具备冗余能力(跨多个 OSD 条带化)
-
完整的快照和克隆能力
-
自愈能力
-
无单点故障
-
可扩展到 EB 级别
-
同时提供内核态和用户态实现
|
|
对于较小规模的部署,也可以直接在 Proxmox VE 节点上运行 Ceph 服务。现代硬件通常具备充足的 CPU 算力和内存,因此在同一节点上同时运行存储服务和虚拟机是可行的。 |
配置
该后端支持通用存储属性 nodes、disable、content,以及以下 rbd 专用属性:
- monhost
-
monitor 守护进程 IP 列表。可选,仅当 Ceph 未运行在 Proxmox VE 集群上时需要。
- pool
-
Ceph pool 名称。
- username
-
RBD 用户 ID。可选,仅当 Ceph 未运行在 Proxmox VE 集群上时需要。注意这里只应使用用户 ID,必须省略 client. 类型前缀。
- krbd
-
强制通过 krbd 内核模块访问 RADOS 块设备。可选。
|
|
无论该选项取值如何,容器都会使用 krbd。 |
rbd: ceph-external
monhost 10.1.1.20 10.1.1.21 10.1.1.22
pool ceph-external
content images
username admin
|
|
可以使用 rbd 工具执行低层管理任务。 |
认证
|
|
如果 Ceph 安装在本地 Proxmox VE 集群上,添加存储时会自动完成以下操作。 |
如果使用默认启用的 cephx 认证,需要提供外部 Ceph 集群的 keyring。
要通过 CLI 配置该存储,首先需要让包含 keyring 的文件可用。一种方法是将该文件从外部 Ceph 集群直接复制到某个 Proxmox VE 节点。以下示例会将它复制到当前执行命令节点的 /root 目录:
# scp <external cephserver>:/etc/ceph/ceph.client.admin.keyring /root/rbd.keyring
然后使用 pvesm CLI 工具配置外部 RBD 存储,并通过 --keyring 参数指定刚复制的 keyring 文件路径。例如:
# pvesm add rbd <name> --monhost "10.1.1.20 10.1.1.21 10.1.1.22" --content images --keyring /root/rbd.keyring
通过 GUI 配置外部 RBD 存储时,可以将 keyring 复制并粘贴到相应字段中。
keyring 将存储在:
# /etc/pve/priv/ceph/<STORAGE_ID>.keyring
|
|
连接外部集群时,建议创建仅具备所需权限的 keyring。有关 Ceph 用户管理的更多信息,请参见
Ceph 文档。 [Ceph User Management] |
Ceph 客户端配置(可选)
连接外部 Ceph 存储时,并不总是允许在外部集群的配置数据库中设置客户端专用选项。可以在 Ceph keyring 旁边添加一个 ceph.conf,用于调整该存储的 Ceph 客户端配置。
ceph.conf 需要与该存储使用相同名称。
# /etc/pve/priv/ceph/<STORAGE_ID>.conf
可用设置请参见 RBD 配置参考
[RBD configuration reference
https://docs.ceph.com/en/quincy/rbd/rbd-config-ref/]
。
|
|
不要轻易修改这些设置。Proxmox VE 会将 <STORAGE_ID>.conf 与存储配置合并使用。 |
Ceph 文件系统(CephFS)
存储池类型:cephfs
CephFS 实现了兼容 POSIX 的文件系统,并使用 Ceph 存储集群保存 数据。由于 CephFS 构建在 Ceph 之上,它继承了 Ceph 的大多数属性,包括冗余、 可扩展性、自愈能力和高可用性。
|
|
Proxmox VE 可以 管理 Ceph 部署,这使 CephFS 存储配置更为 简单。现代硬件提供了大量处理能力和内存,因此在同一节点上运行存储服务和虚拟机 是可行的,且不会产生显著性能影响。 |
配置
该后端支持通用存储属性 nodes、disable、content,以及以下 cephfs 专用属性:
- fs-name
-
Ceph FS 的名称。
- monhost
-
monitor 守护进程地址列表。可选,仅在 Ceph 未运行于 Proxmox VE 集群上时需要。
- path
-
本地挂载点。可选,默认为 /mnt/pve/<STORAGE_ID>/。
- username
-
Ceph 用户 ID。可选,仅在 Ceph 未运行于 Proxmox VE 集群上时需要;在本地集群场景中默认为 admin。
- subdir
-
要挂载的 CephFS 子目录。可选,默认为 /。
- fuse
-
通过 FUSE 而不是内核客户端访问 CephFS。可选,默认为 0。
cephfs: cephfs-external
monhost 10.1.1.20 10.1.1.21 10.1.1.22
path /mnt/pve/cephfs-external
content backup
username admin
fs-name cephfs
|
|
如果未禁用 cephx,请不要忘记设置客户端的密钥文件。 |
认证
|
|
如果 Ceph 本地安装在 Proxmox VE 集群上,添加存储时以下操作会自动完成。 |
如果使用默认启用的 cephx 认证,则需要提供来自外部 Ceph 集群的 secret。
要通过 CLI 配置存储,首先需要提供包含 secret 的文件。一种方式是直接从外部 Ceph 集群将该文件复制到某个 Proxmox VE 节点。以下示例会将其复制到运行命令节点的 /root 目录:
# scp <external cephserver>:/etc/ceph/cephfs.secret /root/cephfs.secret
然后使用 pvesm CLI 工具配置外部 RBD 存储,并使用 --keyring 参数;该参数 需要指向已复制的 secret 文件路径。例如:
# pvesm add cephfs <name> --monhost "10.1.1.20 10.1.1.21 10.1.1.22" --content backup --keyring /root/cephfs.secret
通过 GUI 配置外部 RBD 存储时,可以将 secret 复制并粘贴到相应字段中。
该 secret 仅包含密钥本身,不同于 rbd 后端;后者还包含 [client.userid] 段。
secret 将存储在:
# /etc/pve/priv/ceph/<STORAGE_ID>.secret
可以使用以下命令以 Ceph 管理员身份从 Ceph 集群获取 secret,其中 userid 是已配置
为可访问该集群的客户端 ID。有关 Ceph 用户管理的更多信息,请参见 Ceph
文档。
[cephusermgmt]
# ceph auth get-key client.userid > cephfs.secret
BTRFS 后端
存储池类型:btrfs
从表面上看,这种存储类型与目录存储类型非常相似,因此可参见目录后端章节 了解总体概览。
主要区别在于,使用这种存储类型时,raw 格式的磁盘会放置在子卷中,以便 创建快照,并支持在保留快照的情况下执行离线存储迁移。
|
|
BTRFS 在打开文件时会遵循 O_DIRECT 标志,这意味着虚拟机不应使用 none 缓存模式,否则会出现校验和错误。 |
ZFS over iSCSI 后端
存储池类型:zfs
该后端通过 ssh 访问一台将 ZFS 池作为存储并实现 iSCSI target 的远程机器。 对于每个客户机磁盘,它会创建一个 ZVOL,并将其导出为 iSCSI LUN。 Proxmox VE 使用该 LUN 作为客户机磁盘。
支持以下 iSCSI target 实现:
-
LIO (Linux)
-
IET (Linux)
-
ISTGT (FreeBSD)
-
Comstar (Solaris)
|
|
该插件需要具备 ZFS 能力的远程存储设备,不能用它在普通 Storage Appliance/SAN 上创建 ZFS 池。 |
配置
要使用 ZFS over iSCSI 插件,需要配置远程机器(target),使其接受来自 Proxmox VE 节点的 ssh 连接。Proxmox VE 会连接到 target,以创建 ZVOL 并通过 iSCSI 导出它们。 认证通过存储在 /etc/pve/priv/zfs/<target_ip>_id_rsa 的 ssh-key (无密码保护)完成。
以下步骤会创建 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 root@192.0.2.1 ssh -i /etc/pve/priv/zfs/192.0.2.1_id_rsa root@192.0.2.1
该后端支持通用存储属性 content、nodes、disable,并支持以下 ZFS over iSCSI 专用属性:
- pool
-
iSCSI target 上的 ZFS 池或文件系统。所有分配都在该池内完成。
- portal
-
iSCSI portal(IP 或 DNS 名称,可带端口)。
- target
-
iSCSI target。
- iscsiprovider
-
远程机器使用的 iSCSI target 实现
- comstar_tg
-
comstar views 的 target group。
- comstar_hg
-
comstar views 的 host group。
- lio_tpg
-
Linux LIO targets 的 target portal group
- nowritecache
-
在 target 上禁用写缓存
- blocksize
-
设置 ZFS blocksize 参数。
- sparse
-
使用 ZFS 精简配置。sparse 卷是 reservation 不等于卷大小的卷。
zfs: lio blocksize 4k iscsiprovider LIO pool tank portal 192.0.2.111 target iqn.2003-01.org.linux-iscsi.lio.x8664:sn.xxxxxxxxxxxx content images lio_tpg tpg1 sparse 1 zfs: solaris blocksize 4k target iqn.2010-08.org.illumos:02:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:tank1 pool tank iscsiprovider comstar portal 192.0.2.112 content images zfs: freebsd blocksize 4k target iqn.2007-09.jp.ne.peach.istgt:tank1 pool tank iscsiprovider istgt portal 192.0.2.113 content images zfs: iet blocksize 4k target iqn.2001-04.com.example:tank1 pool tank iscsiprovider iet portal 192.0.2.114 content images
版权和免责声明
Copyright © 2022-2025 成都市梨儿方信息技术有限责任公司.
本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。
发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。
你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/
Copyright © 2007-2022 Proxmox Server Solutions GmbH
本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。
发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。
你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/