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

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

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

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

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

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

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

  • Для уровня хранения рекомендуется иметь одинаковое количество дисков на узел. Тогда данные будут распределяться между узлами более равномерно.

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

Предупреждение

Не создавайте больше одного пространства имен на дисках NVMe, если используется область отказа "Диск", так как отказ одного физического диска NVMe приведет к одновременному отказу всех его логических дисков.

Ограничения

  • Диску можно назначить роль, только если его размер превышает 1 ГиБ.

  • Системному диску можно назначить дополнительную роль, только если его размер не меньше 100 ГиБ (~107 ГБ).

  • Жесткие диски с черепичной магнитной записью (SMR) можно использовать только с ролью Хранилище и только в случае, если на сервере есть твердотельный диск с ролью Кэш.

  • Нельзя использовать на одном уровне хранилища стандартные и SMR-диски.

  • Нельзя одновременно назначить роли системным и несистемным дискам.

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

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

  1. На экране Инфраструктура → Серверы и щелкните по имени сервера.

  2. На вкладке Диски выберите новый диск без роли.

  3. На правой панели диска щелкните Назначить роль.

  4. В окне Назначить роль выберите роль диска, в соответствии с которой вы хотите использовать диск:

    • [Только для твердотельных накопителей] Как хранить кэш записи

      1. Выберите роль Кэш.

      2. Выберите уровень хранилища, который следует кэшировать.

      Примечание

      Для того чтобы диски использовали кэш, роль Кэш необходимо назначить до назначения роли Хранилище.

    • Как организовать хранение данных.

      1. Выберите роль Хранилище.

      2. Выберите уровень хранилища для размещения данных. Чтобы повысить эффективность избыточности данных, не назначайте все диски сервера на один и тот же уровень. Вместо этого убедитесь, что каждый из уровней равномерно распределен по кластеру и на каждом сервере ему назначено по одному диску.

      3. Настройте кэширование данных и проверку контрольных сумм:

        • Включить SSD-кэширование и проверку контрольных сумм. Доступно и рекомендуется только для серверов с твердотельными накопителями.

        • Включить проверку контрольных сумм. Рекомендуется для серверов с жесткими дисками, так как обеспечивает повышенную надежность. Выбрано по умолчанию для диска любого типа, кроме iSCSI.

        • Отключить. В среде оценки или тестирования можно отключить проверку контрольных сумм для серверов с жесткими дисками для повышения производительности. Не рекомендуется для производственной среды с жесткими дисками. Выбрано по умолчанию для диска типа iSCSI.

    • Как хранить метаданные кластера.

      Выберите роль Метаданные.

      Примечание

      Рекомендуется не больше одного сервиса метаданных на сервер и не больше пяти сервисов метаданных для кластера.

    • [Только для твердотельных накопителей] Как хранить метаданные и кэш записи

      1. Выберите роль Метаданные + Кэш.

      2. Выберите уровень хранилища, который следует кэшировать.

    image1

  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    |
+--------------+--------------+------------+-----------+-------------+----------+