mirror of
git://git.proxmox.com/git/pve-docs.git
synced 2025-01-08 21:17:52 +03:00
import pmxcfs docs
This commit is contained in:
parent
b8a217d3d6
commit
ac1e389617
170
pmxcfs.adoc
Normal file
170
pmxcfs.adoc
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
Proxmox Cluster file system (pmxcfs)
|
||||||
|
====================================
|
||||||
|
|
||||||
|
The Proxmox Cluster file system (pmxcfs) is a database-driven file
|
||||||
|
system for storing configuration files, replicated in real time to all
|
||||||
|
cluster nodes using corosync. We use this to store all PVE related
|
||||||
|
configuration files.
|
||||||
|
|
||||||
|
Although the file system stores all data inside a persistent database
|
||||||
|
on disk, a copy of the data resides in RAM. That imposes restriction
|
||||||
|
on the maximal size, which is currently 30MB. This is still enough to
|
||||||
|
store the configuration of several thousand virtual machines.
|
||||||
|
|
||||||
|
Advantages
|
||||||
|
----------
|
||||||
|
|
||||||
|
* seamless replication of all configuration to all nodes in real time
|
||||||
|
* provides strong consistency checks to avoid duplicate VM IDs
|
||||||
|
* read-only when a node looses quorum
|
||||||
|
* automatic updates of the corosync cluster configuration to all nodes
|
||||||
|
* includes a distributed locking mechanism
|
||||||
|
|
||||||
|
POSIX Compatibility
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The file system is based on FUSE, so the behavior is POSIX like. But
|
||||||
|
some feature are simply not implemented, because we do not need them:
|
||||||
|
|
||||||
|
* you can just generate normal files and directories, but no symbolic
|
||||||
|
links, ...
|
||||||
|
|
||||||
|
* you can't rename non-empty directories (because this makes it easier
|
||||||
|
to guarantee that VMIDs are unique).
|
||||||
|
|
||||||
|
* you can't change file permissions (permissions are based on path)
|
||||||
|
|
||||||
|
* `O_EXCL` creates were not atomic (like old NFS)
|
||||||
|
|
||||||
|
* `O_TRUNC` creates are not atomic (FUSE restriction)
|
||||||
|
|
||||||
|
|
||||||
|
File access rights
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
All files and directories are owned by user 'root' and have group
|
||||||
|
'www-data'. Only root has write permissions, but group 'www-data' can
|
||||||
|
read most files. Files below the following paths:
|
||||||
|
|
||||||
|
/etc/pve/priv/
|
||||||
|
/etc/pve/nodes/${NAME}/priv/
|
||||||
|
|
||||||
|
are only accessible by root.
|
||||||
|
|
||||||
|
Technology
|
||||||
|
----------
|
||||||
|
|
||||||
|
We use the http://www.corosync.org[Corosync Cluster Engine] for
|
||||||
|
cluster communication, and http://www.sqlite.org[SQlite] for the
|
||||||
|
database file. The filesystem is implemented in user space using
|
||||||
|
http://fuse.sourceforge.net[FUSE].
|
||||||
|
|
||||||
|
File system layout
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The file system is mounted at:
|
||||||
|
|
||||||
|
/etc/pve
|
||||||
|
|
||||||
|
Files
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
[width="100%",cols="m,d"]
|
||||||
|
|=======
|
||||||
|
|corosync.conf |corosync cluster configuration file (previous to {pve} 4.x this file was called cluster.conf)
|
||||||
|
|storage.cfg |{pve} storage configuration
|
||||||
|
|user.cfg |{pve} access control configuration (users/groups/...)
|
||||||
|
|domains.cfg |{pve} Authentication domains
|
||||||
|
|authkey.pub | public key used by ticket system
|
||||||
|
|priv/shadow.cfg | shadow password file
|
||||||
|
|priv/authkey.key | private key used by ticket system
|
||||||
|
|nodes/<NAME>/pve-ssl.pem | public ssl key for web server
|
||||||
|
|nodes/<NAME>/priv/pve-ssl.key | private ssl key
|
||||||
|
|nodes/<NAME>/qemu-server/<VMID>.conf | VM configuration data for KVM VMs
|
||||||
|
|nodes/<NAME>/lxc/<VMID>.conf | VM configuration data for LXC containers
|
||||||
|
|firewall/cluster.fw | Firewall config applied to all nodes
|
||||||
|
|firewall/<NAME>.fw | Firewall config for individual nodes
|
||||||
|
|firewall/<VMID>.fw | Firewall config for VMs and Containers
|
||||||
|
|=======
|
||||||
|
|
||||||
|
Symbolic links
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
[width="100%",cols="m,m"]
|
||||||
|
|=======
|
||||||
|
|local |nodes/<LOCAL_HOST_NAME>
|
||||||
|
|qemu-server |nodes/<LOCAL_HOST_NAME>/qemu-server/
|
||||||
|
|lxc |nodes/<LOCAL_HOST_NAME>/lxc/
|
||||||
|
|=======
|
||||||
|
|
||||||
|
Special status files for debugging (JSON)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
[width="100%",cols="m,d"]
|
||||||
|
|=======
|
||||||
|
| .version |file versions (to detect file modifications)
|
||||||
|
| .members |Info about cluster members
|
||||||
|
| .vmlist |List of all VMs
|
||||||
|
| .clusterlog |Cluster log (last 50 entries)
|
||||||
|
| .rrd |RRD data (most recent entries)
|
||||||
|
|=======
|
||||||
|
|
||||||
|
Enable/Disable debugging
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
You can enable verbose syslog messages with:
|
||||||
|
|
||||||
|
echo "1" >/etc/pve/.debug
|
||||||
|
|
||||||
|
And disable verbose syslog messages with:
|
||||||
|
|
||||||
|
echo "0" >/etc/pve/.debug
|
||||||
|
|
||||||
|
|
||||||
|
Recovery
|
||||||
|
--------
|
||||||
|
|
||||||
|
If you have major problems with your Proxmox VE host, e.g. hardware
|
||||||
|
issues, it could be helpful to just copy the pmxcfs database file
|
||||||
|
/var/lib/pve-cluster/config.db and move it to a new Proxmox VE
|
||||||
|
host. On the new host (with nothing running), you need to stop the
|
||||||
|
pve-cluster service and replace the config.db file (needed permissions
|
||||||
|
0600). Second, adapt '/etc/hostname' and '/etc/hosts' according to the
|
||||||
|
lost Proxmox VE host, then reboot and check. (And don´t forget your
|
||||||
|
VM/CT data)
|
||||||
|
|
||||||
|
Remove Cluster configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The recommended way is to reinstall the node after you removed it from
|
||||||
|
your cluster. This makes sure that all secret cluster/ssh keys and any
|
||||||
|
shared configuration data is destroyed.
|
||||||
|
|
||||||
|
In some cases, you might prefer to put a node back to local mode
|
||||||
|
without reinstall, which is described here:
|
||||||
|
|
||||||
|
* stop the cluster file system in '/etc/pve/'
|
||||||
|
|
||||||
|
# systemctl stop pve-cluster
|
||||||
|
|
||||||
|
* start it again but forcing local mode
|
||||||
|
|
||||||
|
# pmxcfs -l
|
||||||
|
|
||||||
|
* remove the cluster config
|
||||||
|
|
||||||
|
# rm /etc/pve/cluster.conf
|
||||||
|
# rm /etc/cluster/cluster.conf
|
||||||
|
# rm /var/lib/pve-cluster/corosync.authkey
|
||||||
|
|
||||||
|
* stop the cluster file system again
|
||||||
|
|
||||||
|
# service pve-cluster stop
|
||||||
|
|
||||||
|
* restart pve services (or reboot)
|
||||||
|
|
||||||
|
# service pve-cluster start
|
||||||
|
# service pvedaemon restart
|
||||||
|
# service pveproxy restart
|
||||||
|
# service pvestatd restart
|
||||||
|
|
Loading…
Reference in New Issue
Block a user