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