Proxmox VE 集群文件系统 (pmxcfs) 介绍
时间:2021-12-18 11:39 来源:linux.it.net.cn 作者:IT
Proxmox 集群文件系统(“pmxcfs”)是一个数据库驱动的用于存储配置文件的系统,使用 corosync 实时复制给所有集群节点 。 我们用它来存储所有 PVE 相关的配置文件。
尽管文件系统将所有数据存储在磁盘上一个持久性数据库中,但数据的副本驻留在 RAM 中。 这限制了最大大小,目前为 30MB。 这仍然足以存储数千个虚拟机的配置。
该系统具有以下优点:
-
将所有配置实时无缝复制到所有节点
-
提供强一致性检查以避免重复的 VM ID
-
当节点失去仲裁时只读
-
corosync 集群配置自动更新到所有节点
-
包括分布式锁定机制
POSIX 兼容性
文件系统基于 FUSE,因此行为类似于 POSIX。 但有些功能根本没有实现,因为我们不需要它们:
-
你可以只生成普通的文件和目录,但不能生成符号链接,…
-
你不能重命名非空目录(因为这样更容易,以保证 VM ID 是唯一的)。
-
您无法更改文件权限(权限基于路径)
-
O_EXCL 创建不是原子的(就像旧的 NFS)
-
O_TRUNC 创建不是原子的(FUSE 限制)
文件访问权限
所有文件和目录都归用户 root 所有 并拥有组 www-data。 只有 root 有写权限,但组 www-data 可以读取大多数文件。 以下路径下的文件:
/etc/pve/priv/
/etc/pve/nodes/${NAME}/priv/
只能通过 root 访问。
技术
我们使用 Corosync 集群引擎的集群通信,和 SQlite 数据库文件。 文件系统是在用户空间实现的,使用 FUSE 。
文件系统布局
文件系统挂载在:
/etc/pve
文件
符号链接
用于调试的特殊状态文件 (JSON)
启用/禁用调试
您可以通过以下方式启用详细的系统日志消息:
echo "1" >/etc/pve/.debug
并禁用详细的系统日志消息:
echo "0" >/etc/pve/.debug
恢复
如果您的 Proxmox VE 主机有重大问题,例如硬件问题,仅复制 pmxcfs 数据库文件 /var/lib/pve-cluster/config.db 可能会有所帮助并将其移动到新的 Proxmox VE 主机。 在新主机上(没有任何VM运行),您需要停止 pve-cluster 服务并替换 config.db 文件(需要权限 0600 )。 然后, 根据 丢失 Proxmox VE 主机 /etc/hostname 和 /etc/hosts,然后重新启动并检查。 (不要忘记你的 VM/CT 数据)
删除集群配置
推荐的方法是删除节点后重新安装节点到你的集群。 这确保所有 secret 集群/ssh 密钥和任何共享配置数据被破坏。
在某些情况下,您可能更喜欢将节点放回本地模式,而无需重新安装,这在分离一个节点而不重新安装
从故障节点中恢复或移动Guest
对于 nodes/<NAME>/qemu-server/(VMs) 和 nodes/<NAME>/lxc/(containers),Proxmox VE 将包含节点 <NAME> 视为相应Guest的所有者。 这个概念允许使用本地锁而不是昂贵的集群范围的锁来防止并发Guest配置更改。
因此,如果Guest的拥有节点发生故障(例如,由于电源停电,fencing 事件,..),常规迁移是不可能的(即使所有磁盘位于共享存储上)因为这样的本地锁 (死锁)拥有节点是无法获得的。 这对于 HA 管理的Guest来说不是问题,因为 Proxmox VE 的高可用性堆栈包括必要的(集群范围内的)锁定和看门狗功能,以确保正确从受保护的节点自动恢复Guest。
如果非 HA 管理的Guest只有共享磁盘(并且没有其他本地资源仅在故障节点上配置),手动恢复只需从失败的节点中移动Guest配置文件即可。失败节点的目录中的 /etc/pve/ 到一个在线节点的目录(其改变Guest的逻辑所有者或位置)。
例如,将 ID 为 100 的 VM 从 node1 节点恢复到另一个 node2 节点,使用以下命令在集群的任何成员节点上以 root 登录时执行:
mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/
在手动恢复这样的Guest之前,请务必确保故障源节点确实被关闭/隔离。 否则 mv 命令 违反了 Proxmox VE 锁定原则,这可能会导致意外结果。
具有本地磁盘(或其他本地资源)的Guest在故障节点上可用)不能像这样恢复。 要么等待失败的节点重新加入集群或从备份中恢复这些Guest。
作者:Varden
出处:http://www.cnblogs.com/varden/
本文内容如有雷同,请联系作者!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
(责任编辑:IT)
Proxmox 集群文件系统(“pmxcfs”)是一个数据库驱动的用于存储配置文件的系统,使用 corosync 实时复制给所有集群节点 。 我们用它来存储所有 PVE 相关的配置文件。 尽管文件系统将所有数据存储在磁盘上一个持久性数据库中,但数据的副本驻留在 RAM 中。 这限制了最大大小,目前为 30MB。 这仍然足以存储数千个虚拟机的配置。 该系统具有以下优点:
POSIX 兼容性文件系统基于 FUSE,因此行为类似于 POSIX。 但有些功能根本没有实现,因为我们不需要它们:
文件访问权限所有文件和目录都归用户 root 所有 并拥有组 www-data。 只有 root 有写权限,但组 www-data 可以读取大多数文件。 以下路径下的文件: /etc/pve/priv/ /etc/pve/nodes/${NAME}/priv/ 只能通过 root 访问。 技术我们使用 Corosync 集群引擎的集群通信,和 SQlite 数据库文件。 文件系统是在用户空间实现的,使用 FUSE 。 文件系统布局文件系统挂载在: /etc/pve 文件
符号链接
用于调试的特殊状态文件 (JSON)
启用/禁用调试您可以通过以下方式启用详细的系统日志消息: echo "1" >/etc/pve/.debug 并禁用详细的系统日志消息: echo "0" >/etc/pve/.debug 恢复如果您的 Proxmox VE 主机有重大问题,例如硬件问题,仅复制 pmxcfs 数据库文件 /var/lib/pve-cluster/config.db 可能会有所帮助并将其移动到新的 Proxmox VE 主机。 在新主机上(没有任何VM运行),您需要停止 pve-cluster 服务并替换 config.db 文件(需要权限 0600 )。 然后, 根据 丢失 Proxmox VE 主机 /etc/hostname 和 /etc/hosts,然后重新启动并检查。 (不要忘记你的 VM/CT 数据) 删除集群配置推荐的方法是删除节点后重新安装节点到你的集群。 这确保所有 secret 集群/ssh 密钥和任何共享配置数据被破坏。 在某些情况下,您可能更喜欢将节点放回本地模式,而无需重新安装,这在分离一个节点而不重新安装 从故障节点中恢复或移动Guest对于 nodes/<NAME>/qemu-server/(VMs) 和 nodes/<NAME>/lxc/(containers),Proxmox VE 将包含节点 <NAME> 视为相应Guest的所有者。 这个概念允许使用本地锁而不是昂贵的集群范围的锁来防止并发Guest配置更改。 因此,如果Guest的拥有节点发生故障(例如,由于电源停电,fencing 事件,..),常规迁移是不可能的(即使所有磁盘位于共享存储上)因为这样的本地锁 (死锁)拥有节点是无法获得的。 这对于 HA 管理的Guest来说不是问题,因为 Proxmox VE 的高可用性堆栈包括必要的(集群范围内的)锁定和看门狗功能,以确保正确从受保护的节点自动恢复Guest。 如果非 HA 管理的Guest只有共享磁盘(并且没有其他本地资源仅在故障节点上配置),手动恢复只需从失败的节点中移动Guest配置文件即可。失败节点的目录中的 /etc/pve/ 到一个在线节点的目录(其改变Guest的逻辑所有者或位置)。 例如,将 ID 为 100 的 VM 从 node1 节点恢复到另一个 node2 节点,使用以下命令在集群的任何成员节点上以 root 登录时执行: mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/
作者:Varden
出处:http://www.cnblogs.com/varden/
本文内容如有雷同,请联系作者!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
(责任编辑:IT) |