В этой статье рассмотрим кластерную файловую систему pmxcfs, которая используется в гипервизоре Proxmox Virtual Environment.
Особенности pmxcfs
Файловая система кластера Proxmox — pmxcfs. Эта файловая система управляется базой данных, и используется для хранения почти всех конфигурационных файлов Proxmox VE. Она реплицируется на все узлы кластера в режиме реального времени.
И хотя файловая система хранит все данные в базе данных на диске, её копия находится в оперативной памяти. Это накладывает некоторые ограничения на её максимальный размер, который в настоящее время составляет 128 МБ. Этого пока вполне достаточно, например это позволяет хранить несколько тысяч виртуальных машин в вашем кластере Proxmox VE.
У этой файловой системы есть свои особенности:
- она плавно реплицируется на все узлы кластера в режиме реального времени;
- обеспечивает согласованность, для того чтобы избежать дублирования идентификаторов виртуальных машин;
- она становится доступной только для чтения, когда узел теряет кворум, это нужно для обеспечения согласованности;
- pmxcfs поддерживает механизм распределенной блокировки.
Эта файловая система основана на FUSE, поэтому поведение похоже на POSIX. Но некоторые функции просто не реализованы, потому что они не нужны:
- файловая система поддерживает только файлы и каталоги, и не поддерживает ссылки;
- не разрешается переименовывать непустые каталоги, поскольку это упрощает гарантию уникальности идентификаторов VMID;
- не позволяет изменять права доступа к файлам.
Монтирование и права доступа
Эта файловая система смонтирована в /etc/pve. И некоторые конфигурационные файлы на гипервизоре ProxmoxVE ссылаются на файлы в этой файловой системе. Например файл authorized_keys это символическая ссылка на файл /etc/pve/priv/authorized_keys. Поэтому если узел кластера имеет кворум, то он может подключаться к другим узлам кластера по протоколу SSH. А если узел теряет кворум, то он и теряет доступ к кластеру.
# ls -l /root/.ssh/authorized_keys lrwxrwxrwx 1 root root 29 Oct 8 2020 /root/.ssh/authorized_keys -> /etc/pve/priv/authorized_keys
Все файлы и каталоги в этой файловой системе принадлежат пользователю root и имеют группу www-data. Права на запись есть только у root, но члены группы www-data могут читать большинство файлов. Но файлы по следующим путям доступны только пользователю root:
/etc/pve/priv/
/etc/pve/nodes/${NAME}/priv/
Эта файловая система использует следующие технологии:
- Corosync Cluster Engine для репликации на все узлы кластера;
- QLite для файла базы данных;
- Файловая система реализована с использованием FUSE.
Логи
При обращении к кластеру pmxcfs пишет логи. Например в /var/log/syslog мы можем увидеть следующие записи:
Dec 29 10:31:27 <node> pmxcfs[5825]: [status] notice: received log Dec 29 10:31:27 <node> pmxcfs[5825]: [status] notice: received log Dec 29 10:31:27 <node> pmxcfs[5825]: [status] notice: received log Dec 29 10:31:27 <node> pmxcfs[5825]: [status] notice: received log
Так как эти сообщения не очень полезны, то возможно их отключать в следующих версиях Proxmox VE — источник.
Если понравилась статья, подпишись на мой канал в VK или Telegram.