Масштабирование кластера хранилища

После развертывания кластера хранилища можно в любое время расширить его емкость хранения, добавив больше дисков хранилища (вертикальное масштабирование) или увеличив количество узлов хранилища (горизонтальное масштабирование). Также можно заменить диски хранилища на диски большего размера, следуя инструкциям в Замена дисков серверов.

Чтобы понять разницу между вертикальным и горизонтальным масштабированием, рассмотрим следующие сценарии:

  • Вертикальное масштабирование. Кластер состоит из пяти узлов с 12 слотами для жестких дисков в каждом. Один диск используется для системы и метаданных, а 9 дисков используются для хранения на уровне 0. Хранилище резервных копий развертывается поверх кластера хранилища с режимом кодирования 3+2. Емкость хранилища резервных копий можно расширить, добавив еще два диска на каждый узел. В результате емкость хранилища увеличится на 2/9.
  • Горизонтальное масштабирование. Кластер состоит из пяти узлов с 12 слотами для жестких дисков в каждом. Один диск используется для системы и метаданных, а 11 дисков используются для хранения на уровне 0. Хранилище резервных копий развертывается поверх кластера хранилища с режимом кодирования 3+2. Емкость и пропускную способность хранилища резервных копий можно расширить, добавив еще два узла того же размера (то есть с 12 дисками). В результате емкость хранилища увеличится на 2/5. Кроме того, чтобы максимизировать эффективность хранения, можно обновить режим кодирования до 5+2, как описано в Изменение схемы избыточности для хранилища резервных копий.

Перед добавлением новых дисков и узлов обратите внимание на следующие рекомендации по выбору их размера:

  • Для уровня хранения рекомендуется иметь одинаковое количество дисков на узел. Тогда данные будут распределяться между узлами более равномерно.
  • Наличие дисков одинакового размера помогает более равномерно распределить нагрузку. Внутри кластера использование диска пропорционально размеру диска. Например, если у вас есть диск на 10 ТБ и диск на 2 ТБ, при 50% загрузке кластера будет использоваться 5 ТБ и 1 ТБ соответственно.

Ограничения

  • Диску можно назначить роль, только если его размер превышает 1 ГиБ.
  • Системному диску можно назначить дополнительную роль, только если его размер не меньше 100 ГиБ.
  • Жесткие диски с черепичной магнитной записью (SMR) можно использовать только с ролью Хранилище и только в случае, если на сервере есть твердотельный диск с ролью Кэш.
  • Нельзя использовать на одном уровне хранилища стандартные и SMR-диски.
  • Нельзя одновременно назначить роли системным и несистемным дискам.

Предварительные требования

Для добавления дисков в кластер хранилища

Панель администратора

  1. На экране Инфраструктура > Узлы выберите имя узла.
  2. На вкладке Диски выберите новый диск без роли.
  3. На правой панели диска щелкните Назначить роль.
  4. В окне Назначить роль выберите роль диска, в соответствии с которой вы хотите использовать диск:

  5. Нажмите Назначить.

Интерфейс командной строки

Используйте следующую команду:

vinfra node disk assign --disk <disk>:<role>[:<key=value,…>]
                        [--node <node>]
--disk <disk>:<role>[:<key=value,…>]

Конфигурация диска в формате:

  • <disk>: идентификатор или имя дискового устройства
  • <role>: роль диска (cs, mds, journal, mds-journal, mds-system, cs-system, system)
  • разделенные запятыми пары key=value с ключами (необязательно):
    • tier: уровень диска (0, 1, 2 или 3)
    • journal-tier: уровень диска журнала (кэша) (0, 1, 2 или 3)
    • journal-type: тип диска журнала (кэша) (no_cache — без кэша, inner_cache — внутренний кэш или external_cache — внешний кэш)
    • journal-disk: идентификатор или имя устройства диска журнала (кэша)

    • bind-address: IP-адрес привязки для сервиса метаданных

Например: sda:cs:tier=0,journal-type=inner_cache.
Этот параметр можно указывать несколько раз.

--node <node>
Идентификатор узла или имя хоста (по умолчанию: node001.vstoragedomain)

Например, чтобы назначить роль cs для диска sdc на узле node003, запустите команду:

# vinfra node disk assign --disk sdc:cs --node node003

Вы можете просмотреть конфигурацию диска узла в выводе vinfra node disk list:

# vinfra node disk list --node node003
+--------------------------------------+--------+------+------------+-------------+---------+----------+---------------+------------+----------------+
| id                                   | device | type | role       | disk_status | used    | size     | physical_size | service_id | service_status |
+--------------------------------------+--------+------+------------+-------------+---------+----------+---------------+------------+----------------+
| 2A006CA5-732F-4E17-8FB0-B82CE0F28DB2 | sdc    | hdd  | cs         | ok          | 11.2GiB | 125.8GiB | 128.0GiB      | 1026       | active         |
| 642A7162-B66C-4550-9FB2-F06866FB7EA1 | sdb    | hdd  | cs         | ok          | 8.7GiB  | 125.8GiB | 128.0GiB      | 1025       | active         |
| 45D38CD2-3B94-4F0F-8864-9D51F716D3B1 | sda    | hdd  | mds-system | ok          | 21.0GiB | 125.9GiB | 128.0GiB      | 1          | avail          |
+--------------------------------------+--------+------+------------+-------------+---------+----------+---------------+------------+----------------+

Для добавления узлов в кластер хранилища

Панель администратора

  1. На экране Инфраструктура > Серверы щелкните по неназначенному серверу.
  2. На правой панели сервера нажмите Присоединить к кластеру.
  3. Нажмите Присоединить, чтобы автоматически назначить роли дискам и добавить сервер в текущее расположение. Вместо этого можно нажать значок шестерни, чтобы вручную настроить роли дисков или расположение сервера.

Интерфейс командной строки

Используйте следующую команду:

vinfra node join [--disk <disk>:<role>[:<key=value,…>]] <node>
--disk <disk>:<role>[:<key=value,…>]

Конфигурация диска в формате:

  • <disk>: идентификатор или имя дискового устройства
  • <role>: роль диска (cs, mds, journal, mds-journal, mds-system, cs-system, system)
  • разделенные запятыми пары key=value с ключами (необязательно):
    • tier: уровень диска (0, 1, 2 или 3)
    • journal-tier: уровень диска журнала (кэша) (0, 1, 2 или 3)
    • journal-type: тип диска журнала (кэша) (no_cache — без кэша, inner_cache — внутренний кэш или external_cache — внешний кэш)
    • journal-disk: идентификатор или имя устройства диска журнала (кэша)

    • bind-address: IP-адрес привязки для сервиса метаданных

Например: sda:cs:tier=0,journal-type=inner_cache.
Этот параметр можно указывать несколько раз.

<node>
Идентификатор узла или имя хоста

Например, чтобы добавить узел node002 в кластер хранилища и назначить роли дискам: mds-system на sda, cs на sdb и sdc, запустите команду:

# vinfra node join f59dabdb-bd1c-4944-8af2-26b8fe9ff8d4 --disk sda:mds-system \
--disk sdb:cs --disk sdc:cs

Добавленный узел появится в выводе vinfra node list:

# vinfra node list
+--------------+--------------+------------+-----------+-------------+----------+
| id           | host         | is_primary | is_online | is_assigned | is_in_ha |
+--------------+--------------+------------+-----------+-------------+----------+
| 09bb6b8<...> | node001<...> | True       | True      | True        | False    |
| 187edb1<...> | node002<...> | False      | True      | True        | False    |
+--------------+--------------+------------+-----------+-------------+----------+