SYNOPSIS
pmxcfs [OPTIONS]
帮助选项:
- -h, --help
-
显示帮助选项
应用选项:
- -d, --debug
-
打开调试消息
- -f, --foreground
-
不将服务器守护进程化
- -l, --local
-
强制本地模式(忽略 corosync.conf,强制 quorum)
该服务通常使用 systemd 工具集启动和管理。服务名为 pve-cluster。
systemctl start pve-cluster
systemctl stop pve-cluster
systemctl status pve-cluster
DESCRIPTION
Proxmox Cluster file system(“pmxcfs”)是一个由数据库驱动的文件系统, 用于存储配置文件,并通过 corosync 实时复制到所有集群节点。系统使用它来 存储所有与 Proxmox VE 相关的配置文件。
虽然该文件系统会将所有数据存储在磁盘上的持久数据库中,但数据副本也驻留在 RAM 中。因此最大大小受到限制,目前为 128 MiB。对于存储数千台虚拟机的配置, 这仍然足够。
该系统提供以下优势:
-
将所有配置实时无缝复制到所有节点
-
提供强一致性检查,避免 VM ID 重复
-
当节点失去 quorum 时进入只读状态
-
自动将 corosync 集群配置更新到所有节点
-
包含分布式锁机制
POSIX 兼容性
该文件系统基于 FUSE,因此行为类似 POSIX。但有些功能并未实现,因为系统并不需要:
-
可以生成普通文件和目录,但不能生成符号链接,等等
-
不能重命名非空目录(因为这样更容易保证 VMID 唯一)。
-
不能更改文件权限(权限基于路径)
-
O_EXCL 创建操作不是原子的(类似旧版 NFS)
-
O_TRUNC 创建操作不是原子的(FUSE 限制)
文件访问权限
所有文件和目录的所有者均为用户 root,所属组为 www-data。只有 root 拥有写权限,但 www-data 组可以读取大多数文件。以下路径下的文件仅 root 可访问:
/etc/pve/priv/
/etc/pve/nodes/${NAME}/priv/
技术
系统使用 Corosync Cluster Engine 进行集群通信, 并使用 SQlite 作为数据库文件。该文件系统通过 FUSE 在用户空间实现。
文件系统布局
该文件系统挂载在:
/etc/pve
文件
authkey.pub |
ticket 系统使用的公钥 |
ceph.conf |
Ceph 配置文件(注意:/etc/ceph/ceph.conf 是指向该文件的符号链接) |
corosync.conf |
Corosync 集群配置文件(在 Proxmox VE 4.x 之前,该文件名为 cluster.conf) |
datacenter.cfg |
Proxmox VE 数据中心范围配置(键盘布局、代理等) |
domains.cfg |
Proxmox VE 认证域 |
firewall/cluster.fw |
应用于所有节点的防火墙配置 |
firewall/<NAME>.fw |
单个节点的防火墙配置 |
firewall/<VMID>.fw |
虚拟机和容器的防火墙配置 |
ha/crm_commands |
显示 CRM 当前正在执行的 HA 操作 |
ha/manager_status |
集群上 HA 服务的 JSON 格式信息 |
ha/resources.cfg |
由高可用管理的资源及其当前状态 |
nodes/<NAME>/config |
节点专用配置 |
nodes/<NAME>/lxc/<VMID>.conf |
LXC 容器的 VM 配置数据 |
nodes/<NAME>/openvz/ |
在 Proxmox VE 4.0 之前用于容器配置数据(已弃用,即将移除) |
nodes/<NAME>/pve-ssl.key |
pve-ssl.pem 的私有 SSL 密钥 |
nodes/<NAME>/pve-ssl.pem |
Web 服务器的公共 SSL 证书(由集群 CA 签名) |
nodes/<NAME>/pveproxy-ssl.key |
pveproxy-ssl.pem 的私有 SSL 密钥(可选) |
nodes/<NAME>/pveproxy-ssl.pem |
Web 服务器的公共 SSL 证书(链)(用于可选覆盖 pve-ssl.pem) |
nodes/<NAME>/qemu-server/<VMID>.conf |
KVM 虚拟机的 VM 配置数据 |
priv/authkey.key |
ticket 系统使用的私钥 |
priv/authorized_keys |
用于认证的集群成员 SSH 密钥 |
priv/ceph* |
Ceph 认证密钥及相关能力 |
priv/known_hosts |
用于验证的集群成员 SSH 密钥 |
priv/lock/* |
各服务用于确保集群范围操作安全的锁文件 |
priv/pve-root-ca.key |
集群 CA 的私钥 |
priv/shadow.cfg |
PVE Realm 用户的 shadow 密码文件 |
priv/storage/<STORAGE-ID>.pw |
以明文包含存储密码 |
priv/tfa.cfg |
Base64 编码的双因素认证配置 |
priv/token.cfg |
所有 token 的 API token secret |
pve-root-ca.pem |
集群 CA 的公共证书 |
pve-www.key |
用于生成 CSRF token 的私钥 |
sdn/* |
Software Defined Networking(SDN)的共享配置文件 |
status.cfg |
Proxmox VE 外部指标服务器配置 |
storage.cfg |
Proxmox VE 存储配置 |
user.cfg |
Proxmox VE 访问控制配置(用户/组等) |
virtual-guest/cpu-models.conf |
用于存储自定义 CPU 模型 |
vzdump.cron |
集群范围的 vzdump 备份作业计划 |
符号链接
集群文件系统中的某些目录使用符号链接,以指向节点自身的配置文件。因此,下表中 指向的文件在集群的每个节点上都对应不同文件。
local |
nodes/<LOCAL_HOST_NAME> |
lxc |
nodes/<LOCAL_HOST_NAME>/lxc/ |
openvz |
nodes/<LOCAL_HOST_NAME>/openvz/ (deprecated, removed soon) |
qemu-server |
nodes/<LOCAL_HOST_NAME>/qemu-server/ |
恢复
如果 Proxmox VE 主机出现严重问题,例如硬件故障,复制 pmxcfs 数据库文件 /var/lib/pve-cluster/config.db 并将其移动到新的 Proxmox VE 主机可能会有所帮助。 在新主机上(没有运行任何内容时),需要停止 pve-cluster 服务并替换 config.db 文件(所需权限为 0600)。随后,根据丢失的 Proxmox VE 主机调整 /etc/hostname 和 /etc/hosts,然后重启并检查(不要忘记 VM/CT 数据)。
移除集群配置
建议的方式是在将节点从集群中移除后重新安装该节点。这可以确保所有机密的 集群/ssh 密钥以及任何共享配置数据都被销毁。
在某些情况下,可能希望在不重新安装的情况下将节点恢复为本地模式,相关内容见 Separate A Node Without Reinstalling
从故障节点恢复/移动客户机
对于 nodes/<NAME>/qemu-server/(虚拟机)和 nodes/<NAME>/lxc/(容器)中的 客户机配置文件,Proxmox VE 会将包含这些文件的节点 <NAME> 视为相应客户机的 所有者。该概念允许使用本地锁,而不必使用成本更高的集群范围锁,来防止并发 客户机配置更改。
因此,如果某个客户机的所有者节点发生故障(例如断电、fencing 事件等), 常规迁移将无法进行(即使所有磁盘都位于共享存储上),因为无法在(离线的) 所有者节点上取得这种本地锁。对于由 HA 管理的客户机,这不是问题,因为 Proxmox VE 的 High Availability 栈包含必要的(集群范围)锁和 watchdog 功能, 可确保从被 fenced 的节点正确、自动地恢复客户机。
如果一个未由 HA 管理的客户机只有共享磁盘(且没有其他仅在故障节点上可用的 本地资源),则可以通过手动恢复:只需将客户机配置文件从 /etc/pve/ 中 故障节点目录移动到在线节点目录即可(这会更改该客户机的逻辑所有者或位置)。
例如,要将 ID 为 100 的虚拟机从离线的 node1 恢复到另一个节点 node2, 可在集群任一成员节点上以 root 身份运行以下命令:
mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/qemu-server/
|
|
以这种方式手动恢复客户机之前,务必确认故障源节点确实已经关机或 被 fenced。否则,mv 命令会破坏 Proxmox VE 的锁原则,可能产生不可预期的后果。 |
|
|
带有本地磁盘(或其他仅在离线节点上可用的本地资源)的客户机无法 通过这种方式恢复。请等待故障节点重新加入集群,或从备份恢复这些客户机。 |
版权和免责声明
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/