nav-img
Evolution

Создание Storage Cluster(CLI)

Структура CLI команд

Основной формат команд:

storage [global options] <command> [<subcommand>] [command options]

Доступные команды Storage Cluster (CLI) представлены в Таблице 1.

Таблица 3.1. Доступные команды Storage Cluster (CLI).

Команда

Описание

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

Подготовка хоста

  1. Добавьте debian/rpm репозиторий и установите storage пакет:

    sudo apt update && sudo apt install storage
  2. Проверьте права доступа:

    • /etc/storage

    • /mnt/storage

    • /var/log/storage

    Должны принадлежать пользователям группы storage и владельцу storage с правами rwx.

  3. Инициализируйте хост:

    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: пусто).

  4. Настройте CPU Governor:

    • Ubuntu 22.04

      1. Установите пакет:

        sudo apt install cpufrequtils
      2. Проверьте наличие файла /etc/defaults/cpufrequtils. При необходимости создайте его с правами 0664. Добавьте или измените в нем:

        GOVERNOR="performance"
      3. Перезапустите сервис cpufrequtils:

        sudo systemctl restart cpufrequtils.service
    • Sberlinux 9

      1. Установите пакет:

        sudo dnf install kernel-tools
      2. Установите настройки governor в режим производительности:

        sudo cpupower frequency-set --governor performance
  5. Настройте 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.

  1. Увеличьте лимит размера файлов coredumps. По умолчанию максимальный размер coredump — 2 Gb. Этого объема не всегда хватает для записи полноценных coredumps.

    [Coredump]
    ProcessSizeMax=20G
    ExternalSizeMax=20G
  2. Вызовите daemon:

    systemctl daemon-reload

Подготовка диска

Утилита разбиения диска CS

Структура команды:

storage disk prepare - Creates proper partition table on disk. For 'bdev' storages first part will be occupied by FS
USAGE:
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 5
sudo storage disk prepare --bdev /dev/nvme0n1 --backend-type bdev --storage-type hot --num-cs 7 --force
sudo storage disk prepare --bdev /dev/nvme1n1 --backend-type bdev --storage-type mixed --num-cs 3 --force

Подготовка диска MDS

  1. Отформатируйте NVMe диск c блоком 4KB через nvme cli:

    nvme id-ns -H /dev/nvme0 #
    nvme format /dev/nvme0 -l 2 -n 0xffffffff -r
    Где:
    • -l 2 — формат блока.

  2. Отформатируйте NVMe/SSD диск в xfs формате с помощью команды mkfs.xfs -b size=4096.

  3. Смонтируйте диск в директорию /mnt/storage/mds.

  4. Добавьте в /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 диска может измениться после перезагрузки хоста.

  5. Измените владельца и группу для директории /mnt/storage после монтирования:

    sudo chown -R storage:storage /mnt/storage

Подготовка диска CS

  1. Отформатируйте 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.

  2. Рассчитайте и создайте партиции дисков:

    • Начиная с версии 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.

  3. Отформатируйте NVMe/SSD/HDD партиции и диски в XFS формате командой mkfs.xfs -b 512/4096. Размер блока XFS должен соответствовать размеру физического блока диска.

  4. Смонтируйте диск/партиции в директорию /mnt/storage/nvme0n1p0, /mnt/storage/nvme0n1p1, ...

  5. Добавьте в /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 диска может измениться после перезагрузки хоста.

  6. Измените владельца и группу для директории /mnt/storage после монтирования:

    sudo chown -R storage:storage /mnt/storage
  7. При включенном SELinux в режиме Enforcing добавьте контекст для всех новых создаваемых файлов с типом mnt_t:

    sudo semanage fcontext -a -t mnt_t "/mnt/storage(/.*)?"

    Примените изменения:

    sudo restorecon -irv /mnt/storage

Создание MDS

  1. Создайте первый MDS по инструкции из раздела Создание первого MDS (инициализация кластера).

  2. Добавьте в кластер метадата-сервера по инструкции из раздела Добавление MDS в кластер.

  3. Для работы метадата-сервера необходим кворум, поэтому количество MDS должно быть нечетным. Создайте необходимое количество MDS в зависимости от ваших требований отказоустойчивости (Таблица 2).

Таблица 2. Параметры выбора количества MDS

Количество MDS

Кворум

Возможное количество недоступных метадата-серверов

1

1

0

3

2

1

5

3

2

7

4

3

Аутентификация и авторизация

  1. Авторизуйте все хосты в кластере:

    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 утилиты.

  2. Сохраните список 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

Создайте чанк-сервер по инструкции из раздела: