Файловая система (FUSE), хранящая данные в базе данных (PostgreSQL)
 
Go to file
inpos baef5e7a33 Лицензия на великом и могучем 2017-02-19 17:11:32 +03:00
LICENSE Initial commit 2017-02-19 14:01:03 +04:00
LICENSE.RUS Лицензия на великом и могучем 2017-02-19 17:11:32 +03:00
README.md Адаптировал к новому API llfuse 2017-02-19 16:58:52 +03:00
udavfs3 Адаптировал к новому API llfuse 2017-02-19 16:58:52 +03:00

README.md

udavfs3

Файловая система (FUSE), хранящая данные в базе данных (PostgreSQL).

Приложение работает на python3. Зависит от модуля llfuse.

В одной базе данных может храниться неограниченное количество изолированных дург от друга файловых систем.

База данных и пользователь с полным доступом к ней (если их ещё нет) должны быть созданы на сервере:

su - postrges
createuser -S -E -P fs_user
createdb -E UTF-8 -O fs_user fs_db

Скрипт необходимо скопировать в папку исполняемых файлов (например, /usr/local/bin) и сделать исполняемым:

cp udavfs3 /usr/local/bin/
chmod +x /usr/local/bin/udavfs3

Вручную монтируем следующей командой:

udavfs3 "host=srv_hostname dbname=fs_db user=fs_user password=fs_user_password" /mount/point/path [-o mount_options]

mount_options (кроме fsname) имеют смысл только для несуществующей в базе ФС. fsname - обязателен, т.к. выбирает конкретную файловую систему из базы. Если мы монтируем уже созданную файловую систему, mount_options игнорируются.

Список опций mount_options:

  • fsname - уникальная (в рамках конкретного сервера) строка без пробелов. Из данной строки сформируется sha1-хэш, который и будет уникальным идентификатором ФС для операционной системы.
  • blocksize - размер блока ФС в байтах. Обычно используется 4096 (4 КБ).
  • fssize - размер файловой системы. Можно использовать окончание еденицы измерения (k,m,g,t). Минимальный размер - 4 МБ. Обратите внимание, что максимальный размер неограничен, но постарайтесь не выйти за пределы свободного места папки с базой данных сервера PostgreSQL. Или продумайте возможность последующего увеличения размера свободного места в этой папке до её полного заполнения.

Если мы хотим, чтобы система монтировала нашу ФС при старте, то добавляем в /etc/fstab следующую строку:

udavfs3#"host=srv_hostname dbname=fs_db user=fs_user password=fs_user_password" /mount/point/path fuse _netdev 0 0

Чтобы ФС была доступна всем пользователям надо установить 'user_allow_other' в /etc/fuse.conf

Сервер с базой данных (PostgreSQL) может находиться где угодно.