Создание Storage Cluster(CLI)
Структура CLI команд
Основной формат команд:
storage [global options] <command> [<subcommand>] [command options]
Доступные команды Storage Cluster (CLI) представлены в Таблице 1.
Команда |
Описание |
---|---|
mds |
Создание/удаление/чтение MDS |
cs |
Создание/удаление/чтение CS |
volume |
Создание/удаление/чтение Volume |
snap |
Создание/удаление/чтение Snapshot |
storage-class |
Создание/удаление/чтение Storage class |
chunk |
Просмотр информации о чанке |
user |
Создание/удаление/чтение User |
host |
Инициализация хоста, листинг хостов, maintenance хостов |
vhost |
Прикрепление/открепление дисков к vhostd демону |
journal |
Просмотр журнала событий |
stat |
Отображение состояния кластера в текстовом виде |
top |
Отображение состояния кластера в TUI |
help |
Описание параметров команды |
Для получения справки по любой команде используйте --help, например:
storage mds --help
Подготовка хоста
Добавьте debian/rpm репозиторий и установите storage пакет:
sudo apt update && sudo apt install storageПроверьте права доступа:
/etc/storage
/mnt/storage
/var/log/storage
Должны принадлежать пользователям группы storage и владельцу storage с правами rwx.
Инициализируйте хост:
sudo storage host init --dc 0 --pod 0 --rack 0 --ip.public 192.168.0.1 --ip.internal 192.168.0.2 --mp.public 192.168.0.3,192.168.0.4 --mp.internal 192.168.0.5,192.168.0.6Где:
dc, pod, rack — уникальные идентификаторы датацентра, пода, стойки. Параметры задают физическое расположения хоста.
ip.public — IP-адрес хоста в публичной сети.
ip.internal — IP-адрес хоста в приватной сети (опциональный параметр, default: ip.public).
mp.public — multipath IP-адреса хоста в публичной сети (опциональный параметр, default: пусто).
mp.internal — multipath IP-адреса хоста во внутренней сети (опциональный параметр, default: пусто).
Настройте CPU Governor:
Ubuntu 22.04
Установите пакет:
sudo apt install cpufrequtilsПроверьте наличие файла /etc/defaults/cpufrequtils. При необходимости создайте его с правами 0664. Добавьте или измените в нем:
GOVERNOR="performance"Перезапустите сервис cpufrequtils:
sudo systemctl restart cpufrequtils.service
Sberlinux 9
Установите пакет:
sudo dnf install kernel-toolsУстановите настройки governor в режим производительности:
sudo cpupower frequency-set --governor performance
Настройте coredumps:
Все сервисы, библиотеки и утилиты из пакета storage поддерживают создание coredumps в случае аварийного отказа системы.
Настройка окружения для сбора crash dumps зависит от используемого дистрибутива. Вариант установки пакета для Ubuntu, также может быть использован для других дистрибутивов:
sudo apt install systemd-coredumpПосле установки пакета /proc/sys/kernel/core_pattern укажет на утилиту /lib/systemd/systemd-coredump. Она вызывается, когда требуется создать coredump. По умолчанию coredumps сжаты при помощи lz4 и пишутся в директорию /var/lib/systemd/coredump.
Конфигурация systemd-coredump
systemd-coredump читает настройки из файла /etc/systemd/coredump.conf.
Увеличьте лимит размера файлов coredumps. По умолчанию максимальный размер coredump — 2 Gb. Этого объема не всегда хватает для записи полноценных coredumps.
[Coredump]ProcessSizeMax=20GExternalSizeMax=20GВызовите daemon:
systemctl daemon-reload
Подготовка диска
Утилита разбиения диска CS
Структура команды:
storage disk prepare - Creates proper partition table on disk. For 'bdev' storages first part will be occupied by FSUSAGE:storage disk prepare [command options] [arguments...]OPTIONS:--backend-type value Use this device for CS's with backend type: [bdev|filestore]--bdev value Raw block device to be partitioned--force Force partition creation, will remove existing partition table (default: false)--fs-size value Size of fs partition for CS roots. Use only with bdev backend, if not satisfied by default calculation. (default: 0.00B)--num-cs value Number of CS services that share this device (default: 0)--storage-type value Use this device for [hot|cold|mixed] storage
Команда разбивает диск на необходимое число партиций. Для filestore бэкенда (устаревший) число партиций соответствует переданному числу чанк серверов.
Для bdev бэкенда утилита создает самую первую партицию под файловую систему, предназначенную для корней всех чанк-серверов. Размер этой партиции рассчитывается автоматически, но можно задать ее размер в ручную параметром fs-size. В этой партиции нужно создавать все root, root.cold чанк-серверов, использующих разбитый диск.
Флаг force удаляет существующую таблицу партиций на диске, используйте флаг только если уверены, что данные с диска больше не понадобятся. Без этого флага утилита не позволит создать новую таблицу.
Если диск будет использован для all flash чанк-серверов, параметр storage-type должен быть равен mixed, значение этого параметра влияет на размер создаваемых партиций.
Примеры использования:
sudo storage disk prepare --bdev /dev/sda --backend-type bdev --storage-type cold --num-cs 5sudo storage disk prepare --bdev /dev/nvme0n1 --backend-type bdev --storage-type hot --num-cs 7 --forcesudo storage disk prepare --bdev /dev/nvme1n1 --backend-type bdev --storage-type mixed --num-cs 3 --force
Подготовка диска MDS
Отформатируйте NVMe диск c блоком 4KB через nvme cli:
nvme id-ns -H /dev/nvme0 #nvme format /dev/nvme0 -l 2 -n 0xffffffff -r- Где:
-l 2 — формат блока.
Отформатируйте NVMe/SSD диск в xfs формате с помощью команды mkfs.xfs -b size=4096.
Смонтируйте диск в директорию /mnt/storage/mds.
Добавьте в /etc/fstab строку для автоматического монтирования диска MDS при старте хоста c опциями nofail,noatime,lazytime:
/dev/disk/by-uuid/e8266263-f253-4de5-b275-de112ebc625a /mnt/storage/mds xfs defaults,nofail,noatime,lazytime 0 0ВниманиеИспользуйте disk uuid вместо label (/dev/sdX, /dev/nvmeX). Label диска может измениться после перезагрузки хоста.
Измените владельца и группу для директории /mnt/storage после монтирования:
sudo chown -R storage:storage /mnt/storage
Подготовка диска CS
Отформатируйте NVMe диск c блоком 4KB/512B через nvme cli:
nvme id-ns -H /dev/nvme0 #nvme format /dev/nvme0 -l 2 -n 0xffffffff -rПримечаниеРекомендуемый размер блока — 4KB.
Для подключения ESXi используйте блок 512B. iSCSI LUN в ESXi поддерживает только 512B.
Рассчитайте и создайте партиции дисков:
Начиная с версии storage утилиты 1.5.4 рекомендуется использовать утилиту разбиения CS диска.
Для HDD дисков используется одна партиция, т.е. создание партиции необязательно.
Для NVME/SSD дисков создайте следующее количество партиций:
Hybrid(NVMe/SSD + HDD). Количество партиций на NVMe диске зависит от количества HDD дисков, приходящихся на один NVMe. Например для x1 NVMe 6TB на x6 HDD создается 6 партиций (nvme0n1p0, nvme0n1p1, …), размер партиции — 6TB/6 = 1 ТБ.
All Flash (NVMe/SSD). Рекомендуемое количество партиций на NVMe/SSD — 4. Размер партиций одинаков. Суммарное количество партиций всех дисков не должно превышать количество физических ядер CPU.
Отформатируйте NVMe/SSD/HDD партиции и диски в XFS формате командой mkfs.xfs -b 512/4096. Размер блока XFS должен соответствовать размеру физического блока диска.
Смонтируйте диск/партиции в директорию /mnt/storage/nvme0n1p0, /mnt/storage/nvme0n1p1, ...
Добавьте в /etc/fstab строку для автоматического монтирования диска CS при старте хоста c опциями nofail,noatime,lazytime:
/dev/disk/by-uuid/3aa8814e-be49-4095-b079-b3c6171b55e2 /mnt/storage/nvme0n1p0 xfs defaults,nofail,noatime,lazytime 0 0ВниманиеИспользуйте disk uuid вместо label (/dev/sdX, /dev/nvmeX). Label диска может измениться после перезагрузки хоста.
Измените владельца и группу для директории /mnt/storage после монтирования:
sudo chown -R storage:storage /mnt/storageПри включенном SELinux в режиме Enforcing добавьте контекст для всех новых создаваемых файлов с типом mnt_t:
sudo semanage fcontext -a -t mnt_t "/mnt/storage(/.*)?"Примените изменения:
sudo restorecon -irv /mnt/storage
Создание MDS
Создайте первый MDS по инструкции из раздела Создание первого MDS (инициализация кластера).
Добавьте в кластер метадата-сервера по инструкции из раздела Добавление MDS в кластер.
Для работы метадата-сервера необходим кворум, поэтому количество MDS должно быть нечетным. Создайте необходимое количество MDS в зависимости от ваших требований отказоустойчивости (Таблица 2).
Количество MDS |
Кворум |
Возможное количество недоступных метадата-серверов |
---|---|---|
1 |
1 |
0 |
3 |
2 |
1 |
5 |
3 |
2 |
7 |
4 |
3 |
Аутентификация и авторизация
Авторизуйте все хосты в кластере:
sudo storage --cluster 123 --mds.address 192.168.0.1 user login --name admin --password qwertyГде:
--cluster 123 — кластер ID, к которому присоединяется новый MDS;
--mds.address 192.168.0.1 — адрес запущенного MDS в кластере;
--name, --password — имя пользователя с правами на создание CS и его пароль. В примере это admin.
Secret пользователя admin сохраняется в файле /etc/storage/clusters/123/auth.yml для последующей авторизации в кластере при использовании storage утилиты.
Сохраните список MDS-серверов. По умолчанию сохраняется в /etc/storage/mds_list.yml и в /etc/storage/clusters/123/mds_list.yml на каждом хосте:
sudo storage --cluster 123 --mds.address 192.168.0.1 mds list --save
По умолчанию storage утилита использует /etc/storage/mds_list.yml, не требуя ввода параметров --cluster и/или --mds.address.
При отсутствии файла /etc/storage/mds_list.yml утилите нужно передать ID кластера через опцию --cluster. При этом список MDS-серверов (membership) читается из файла /etc/storage/clusters/CLUSTER_ID/mds_list.yml.
Создание СS
Создайте чанк-сервер по инструкции из раздела:
Создание гибридного CS (HDD+SSD) — для гибридного CS;
Создание «AllFlash» CS (SSD) — для «AllFlash» CS.
- Структура CLI команд
- Подготовка хоста
- Подготовка диска
- Создание MDS
- Аутентификация и авторизация
- Создание СS