LizardFS установка и использование
Установка из исходного кода
Устанавливаем зависимости:
apt install -y linux-headers-5.10.0-32-amd64 gcc autoconf flex bison automake binutils pkgconf make cmake
apt install -y asciidoc libspdlog1 libspdlog-dev  libjudy-dev libpam0g-dev libdb-dev libisal-dev libcrcutil-dev  libsystemd-dev libthrift-dev libfuse3-dev
Далее, собираем по официальной инструкции
git clone https://github.com/lizardfs/lizardfs.git /opt/lizardfs-src
cd /opt/lizardfs-src
mkdir buildl cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/lizardfs
Добавляем пользователя:
Добавляем в ~/.bashrc:
PATH=$PATH:/usr/sbin:/sbin:/opt/lizardfs/bin:/opt/lizardfs/sbin
source /etc/bash_completion.d/lizardfs
Установка из пакетов
Из пакетов не поставить!
В официальной документации предлагают ставить из packages.lizardfs.com, но этот сайт недоступен, в т.ч.  и через иностранные прокси.
На waybackmachine нашел такую последовательность установки - но это тоже не работает:
apt-get install wget apt-transport-https
echo 'deb [trusted=yes] https://dev.lizardfs.com/packages/ bullseye/' | tee /etc/apt/sources.list.d/lizardfs.list
echo 'deb https://dev.lizardfs.com/packages/ bullseye/' | tee /etc/apt/sources.list.d/lizardfs.list
apt-get update
apt-get install lizardfs-master lizardfs-chunkserver lizardfs-client
Распределение ролей
Сначала несколько основных правил:
- Главный сервер (master) лучше всего работает на выделенном компьютере, желательно с SSD-диском.
 - Сервер Chunk лучше всего работает с хотя бы одним выделенным диском.
 - Не ставьте металоггер (metalogger) на ту же машину, что и главный сервер, это не сделает ваши метаданные безопаснее. Металоггеры необязательны, тем не менее, можно установить металоггер вместе с chunk-сервером.
 - Повысьте безопасность своих данных, используя теневые главные серверы (shadowmaster)
 
Таким образом, имея в наличии 3 сервера распределяем так:
| Сервер | Роли | IP адрес | 
|---|---|---|
| cmpt-c01z03-c1001 | mfsmaster chunkserver1 | 100.111.254.121 | 
| cmpt-c01z03-c1002 | shadowmaster chunkserver2 | 100.111.254.122 | 
| cmpt-c01z03-c1003 | metalogger cgiserver chunkserver3 | 100.111.254.123 | 
Подстройка сети
На всех 4-х серверах приводим файл /etc/hosts к виду:
127.0.0.1       localhost
100.111.254.121 mfsmaster chunkserver1
100.111.254.122 shadowmasterchunkserver2
100.111.254.123 metalogger cgiserver chunkserver3
100.111.250.121 cmpt-c01z03-c1001
100.111.250.122 cmpt-c01z03-c1002
100.111.250.123 cmpt-c01z03-c1003
Метаданные
Не всех серверах:
mkdir /var/lib/lizardfs /var/log/lizardfs /etc/lizardfs
cp /opt/lizardfs/src/data/metadata.mfs /var/lib/lizardfs/
ln -s /opt/lizardfs/etc/bash_completion.d/lizardfs /etc/bash_completion.d/lizardfs
Конфигурационные данные:
Задаем список клиентских сетей, из которых будет доступна наша СХД в файле /etc/lizardfs/mfsexports.cfg:
Для использования lizardfs-master в качестве сервиса добавляем в /etc/default/lizardfs-master:
Поправляем права:
Metalogger
На сервере с ролью `metalogger: cmpt-c01z03-c1003
Создаем конфигурационный файл:
Добавляем параметры:
WORKING_USER = lizardfs
WORKING_GROUP = lizardfs
DATA_PATH = /var/lib/lizardfs
MASTER_HOST = mfsmaster
Создаем юнит-файл /etc/systemd/system/lizardfs-metalogger.service:
[Unit]
Description=LizardFS metalogger server daemon
Documentation=man:mfsmetalogger
After=network.target
[Service]
User=lizardfs
Group=lizardfs
Type=forking
ExecStart=/opt/lizardfs/sbin/mfsmetalogger -c /etc/lizardfs/mfsmetalogger.cfg start
ExecStop=/opt/lizardfs/sbin/mfsmetalogger -c /etc/lizardfs/mfsmetalogger.cfg stop
ExecReload=/opt/lizardfs/sbin/mfsmetalogger -c /etc/lizardfs/mfsmetalogger.cfg reload
Restart=on-abort
[Install]
WantedBy=multi-user.target
Меняем права:
Запускаем сервис:
Master MFS
Создаем юнит-файл сервиса /etc/systemd/system/lizardfs-master.service
[Unit]
Description=LizardFS master server daemon
Documentation=man:mfsmaster
After=network.target
[Service]
Type=forking
TimeoutSec=0
User=lizardfs
Group=lizardfs
ExecStart=/opt/lizardfs/sbin/mfsmaster -c /etc/lizardfs/mfsmaster.cfg start
ExecStop=/opt/lizardfs/sbin/mfsmaster -c /etc/lizardfs/mfsmaster.cfg stop
ExecReload=/opt/lizardfs/mfsmaster -c /etc/lizardfs/mfsmaster.cfg reload
Restart=no
[Install]
WantedBy=multi-user.target
/etc/lizardfs/mfmaster.cfg:
PERSONALITY = master
WORKING_USER = lizardfs
WORKING_GROUP = lizardfs
EXPORTS_FILENAME = /etc/lizardfs/mfsexports.cfg
TOPOLOGY_FILENAME = /etc/lizardfs/mfstopology.cfg
CUSTOM_GOALS_FILENAME = /etc/lizardfs/mfsgoals.cfg
DATA_PATH = /var/lib/lizardfs
MATOML_LISTEN_HOST = 100.111.254.121
MATOCS_LISTEN_HOST = *
MATOCL_LISTEN_HOST = *
MATOTS_LISTEN_HOST = *
NO_ATIME = 1
Настраиваем конфигурацию экспорта /etc/lizardfs/mfsexports.cfg:
Файлы mfsgoals.cfg и mfstopology.cfg  просто забираем из каталога образцов /opt/lizardfs/share/doc/lizardfs-master/examples/:
Запускаем сервис:
Shadow MFS
На сервере cmpt-c01z03-c1002  делаем все так-же, как и в Master MFS, но в файле mfsmaster.cfg :
- параметр 
PERSONALITY = shadowи - добавляем параметр 
MASTER_HOST = mfsmaster - меняем IP-адрес на текущий 
MATOML_LISTEN_HOST = 100.111.254.122 
Далее. правим mfsmaster.cfg и забираем настроенный юнит-файл сервиса:
Запускаем сервис:
Chunk
Чтобы обеспечить правильную процедуру восстановления в случае поломки сервера фрагментов, всегда имейте на один сервер фрагментов больше, чем того  требуют настроенный вами режим GOAL/XOR/EC.
Сервис chunk ставим на три сервера. Начинаем с cmpt-c01z03-c1002. На нем уже установлена роль shadow MFS.
Теперь вам нужно указать, где процесс chunkserver будет хранить фактические  данные. Это делается в файле mfshdd.cfg.
cp /opt/lizardfs/share/doc/lizardfs-chunkserver/examples/mfshdd.cfg /etc/lizardfs
chown lizardfs: /etc/lizardfs/mfshdd.cfg
Заполняем все диски с помощью утилиты /usr/local/bin/osd-ctl:
Далее, необходимо указать каталоги с их полным путем, по одному на строку.
Создаем юнит-файл сервиса:
scp -rp cmpt-c01z03-c1001:/opt/lizardfs-src/rpm/service-files/lizardfs-chunkserver.service /etc/systemd/system/
Содержимое  /etc/systemd/system/lizardfs-chunkserver.service:
[Unit]
Description=LizardFS chunkserver daemon
Documentation=man:mfschunkserver
After=network.target
[Service]
Type=forking
User=lizardfs
Group=lizardfs
ExecStart=/opt/lizardfs/sbin/mfschunkserver -c /etc/lizardfs/mfschunkserver.cfg start
ExecStop=/opt/lizardfs/sbin/mfschunkserver -c /etc/lizardfs/mfschunkserver.cfg stop
ExecReload=/opt/lizardfs/mfschunkserver -c /etc/lizardfs/mfschunkserver.cfg reload
Restart=on-abort
[Install]
WantedBy=multi-user.target
Создаем конфигуратор сервиса /etc/lizardfs/mfschunkserver.cfg
LABEL = _
WORKING_USER = lizardfs
WORKING_GROUP = lizardfs
DATA_PATH = /var/lib/lizardfs
BIND_HOST = chunkserver1
MASTER_HOST = mfsmaster
MASTER_PORT = 9420
HDD_CONF_FILENAME = /etc/lizardfs/mfshdd.cfg
- LABEL: метка сервера
 - BIND_HOST: chunkserver1
 
Запускаем сервис:
Далее, подобным образом создаем и запускаем сервис chunk на остальных узлах:
scp -rp cmpt-c01z03-c1002:/etc/lizardfs/mfschunkserver.cfg /etc/lizardfs/
scp -rp cmpt-c01z03-c1002:/etc/lizardfs/mfshdd.cfg /etc/lizardfs/
chown -R lizardfs: /etc/lizardfs
scp -rp cmpt-c01z03-c1001:/opt/lizardfs-src/rpm/service-files/lizardfs-chunkserver.service /etc/systemd/system/
systemctl start lizardfs-chunkserver
systemctl status lizardfs-chunkserver
systemctl enable lizardfs-chunkserver
Далее, поправляем BIND_HOST в mfschunkserver.cfg. Например, для chunkserver2:
LABEL = _
WORKING_USER = lizardfs
WORKING_GROUP = lizardfs
DATA_PATH = /var/lib/lizardfs
BIND_HOST = chunkserver2
MASTER_HOST = mfsmaster
MASTER_PORT = 9420
HDD_CONF_FILENAME = /etc/lizardfs/mfshdd.cfg
Посмотреть список chunk серверов:
Теперь мы должны здесь увидеть следующее:
Server 100.111.254.124:9422:
        version: 3.13.0
        label: _
        chunks: 0
        used space: 396GiB / 42TiB
        chunks marked for removal: 0
        used space marked for removal: 0B / 0B
        errors: 0
Server 100.111.254.123:9422:
        version: 3.13.0
        label: _
        chunks: 0
        used space: 396GiB / 42TiB
        chunks marked for removal: 0
        used space marked for removal: 0B / 0B
        errors: 0
Server 100.111.254.122:9422:
        version: 3.13.0
        label: _
        chunks: 0
        used space: 396GiB / 42TiB
        chunks marked for removal: 0
        used space marked for remov:1al: 0B / 0B
        errors: 0
Три chunk-сервера в строю - на них нет дополнительных меток.
Посмотреть политику хранения GOAL:
Работа в СХД
Клиент последней версии (3.13) находится в папке /opt/lizardfs/bin/lizardfs.
Установку клиента версии 3.12 можно производить также из deb-пакета:
wget http://ftp.ru.debian.org/debian/pool/main/l/lizardfs/lizardfs-client_3.12.0+dfsg-3+b10_amd64.deb
apt install ./lizardfs-client_3.12.0+dfsg-3+b10_amd64.deb
Переходим на клиентский сервер (гипервизор) и подключаем СХД следующей командой:
Появляется содержимое хранилища в смонтированном каталоге - куда мы может записывать информацию и, в том числе, размещать диски ВМ.
Для того, чтобы размещать диски ВМ, добавьте в nova.conf следующие строки:
Опубликовано: 05.11.2024