Перейти к содержанию

GlusterFS тома

Общая информация

Встроенная в SpaceVM файловая система GlusterFS предоставляет возможность создания гиперконвергентного кластера с распределенным хранилищем данных на локальных дисках узлов.

Настройка и управление этим распределенным пулом осуществляется через централизованный web-интерфейс на существующем кластере без необходимости дополнительной установки.


Создание пула данных типа Gluster

Для создания пула данных типа Gluster необходимо выполнить следующие действия:

  1. Создать внешнюю сеть на узлах кластера на отдельных физических интерфейсах или бондах, создавая внутренние интерфейсы на каждом узле.

  2. Создать кластерный транспорт с указанием внешней сети.

  3. Создать ZFS-пулы на узлах кластера.

  4. Создать том, выбрав кластерный транспорт и ZFS-пулы.

  5. Создать пул данных типа Gluster, указав том.


Создание тома

Внимание!

При создании тома или замене разделов тома рекомендуется использовать заново созданные ZFS-пулы, а не использовать имеющиеся повторно. Это связано с особенностями очистки ZFS-пулов перед созданием тома или заменой разделов. То есть, если в системе имеются ZFS-пулы, использовавшиеся ранее под ZFS-датапул или том Gluster, лучше удалить их и собрать заново перед использованием.

Для создания тома необходимо перейти в раздел Хранилища - Кластерные хранилища - Тома основного меню и нажать кнопку Создать. В открывшемся окне необходимо выполнить следующие действия:

  • Указать название.

  • Указать описание.

  • Выбрать тип тома (Реплицированный или Дисперсный).

  • Выбрать кластерный транспорт, на узлах которого будет развернут том.

  • Выбрать разделы (ZFS пулы).

  • Выбрать размер записи датасетов на ZFS пулах, относящихся к создаваемому тому.

  • Указать значение репликации тома.

  • Включить (выключить) опцию Наличие раздела арбитра в реплицированном томе.

  • Включить (выключить) опцию Создать пул данных.

После внесения изменений необходимо подтвердить операцию, нажав кнопку ОК.

Примечание

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


Рекомендации

  1. Подробную информацию о томах можно прочитать на официальном сайте Gluster.
  2. Подробно описанные рекомендации по томам.
  3. Не рекомендуется использовать management сеть для томов.
  4. Не рекомендуется иметь пропускную способность менее 10 GbE для сети хранилищ.
  5. Рекомендуется сразу поднять MTU физических интерфейсов до 9100.
  6. Рекомендуется создавать ZFS-пулы типа mirror c учётом ARC-кэша, L2ARC, ZIL.
  7. Размер записи при создании тома влияет на IOPS тома при обмене мелкими блоками (меньше-лучше), фрагментацию файлов на ZFS пулах и потребление памяти ZFS кэшем на узле (больше-лучше). При необходимости высоких значений IOPS можно уменьшить значение размера записи до 8–16 Kбайт. Стандартное значение размера записи ZFS — 128 Kбайт. Устанавливать размер записи менее 8 Кбайт не рекомендуется, т.к. ZFS пулы создаются в Space с параметром ashift = 13, что даёт размер блока 8 Кбайт (записи состоят из блоков и не могут быть меньше блока).
  8. Рекомендуется использовать резервную копию виртуальных машин, чтобы избежать потери данных.

Управление

Управление работой тома происходит в окне подробного просмотра тома, которое открывается при нажатии на название тома в разделе Хранилища - Кластерные хранилища - Тома. В окне подробного просмотра тома доступны следующие операции:

  • Монтирование тома.

  • Размонтирование тома.

  • Статус подорожника. Подробное описание подорожника.

  • Действия подорожника тома (enable, disable или full).

  • Статус ребалансировки тома.

  • Действия ребалансировки тома (старт или стоп).

  • Действия тома (старт или стоп).

  • Получение расширенных сведений о томе.

  • Удаление.


Информация

В разделе Хранилища - Кластерные хранилища - Тома - Информация можно посмотреть подробные сведения о выбранном томе.

Сведения о томе
  • Название.

  • Описание.

  • Кластерный транспорт.

  • Тип.

  • Объем дискового пространства (всего/занято/свободно).

  • Статус.

  • Gluster статус.

  • Дата создания.

  • Дата обновления.

  • Опции тома (раскрывающийся список) с возможностью изменения опций:

    • Наличие раздела арбитра в реплицированном томе.
    • Число разделов (ZFS-пулов) в томе, тип тома (dispersed).
    • Число разделов данных в (dispersed) томе.
    • Путь монтирования тома.
    • Число разделов избыточности (ZFS-пулов) в (dispersed) томе.
    • Значение репликации тома.
    • Размер записи ZFS датасета (редактируемый параметр).

      Может принимать значения: 8, 16, 32, 64, 128, 256, 512, 1024 Кбайт.

  • Серверы кластера со статусами связи и монтирования, а также возможностью монтировать/перемонтировать и размонтировать том (раскрывающийся список).


Разделы (ZFS пулы)

В разделе Хранилища - Кластерные хранилища - Тома - <Имя тома> - Разделы (ZFS пулы) доступны действия:

  • Обновление.

  • Перезапуск раздела.

  • Добавление раздела.

  • Замена раздела.

  • Остановка раздела.

  • Удаление раздела.

  • Фильтрация (по имени ZFS пула, серверам, типам, тегам и статусу).


События

В разделе ХранилищаКластерные хранилища - Тома - <Имя тома>События отображаются зарегистрированные в системе события, связанные с работой выбранного тома.

Возможна их сортировка по признакам:

  • По всем типам.

  • Ошибки.

  • Предупреждения.

  • Информационные.

Чтобы в списке событий отображались только непрочитанные события, необходимо включить опцию Только непрочитанные.


Задачи

В разделе ХранилищаКластерные хранилища - Тома - <Имя тома>Задачи отображаются зарегистрированные в системе задачи, возникающие при выполнении действий с выбранным томом.


Типы томов и их основные отличия

Краткое резюме

  • Простейший ненадёжный тип тома — аналог JBOD — распределённый (distributed).
  • Простейший тип тома с избыточностью, неэффективный по объёму — аналог MIRROR — реплицированный (replicated).
  • Более эффективный по объёму тип тома — реплицированный с арбитром.
  • Самый продвинутый тип тома — аналог RAID 5, 6 — дисперсный.

Том состоит из одного или более подтомов (subvolumes), их число указано в параметре distribute готового тома. Каждый подтом в данном томе имеет одну и ту же структуру, может быть реплицированным либо дисперсным. Простейшая структура тома Gluster — один подтом из одного раздела.

Примечание

Поддерживается не менее 200 Тб дискового пространства под единым управлением.

1. Распределённый (distributed) том.

Примерный аналог JBOD или RAID 0 массива. Не обладает избыточностью и какой-либо защитой от сбоев на уровне Gluster. Каждый подтом здесь состоит из одного раздела. При отказе хотя бы одного из разделов данные могут стать недоступны на всём томе. Может быть составлен из разделов (bricks) различающегося объёма, при этом объём разделов используется полностью. Самый «лёгкий» тип тома в плане и требуемой вычислительной мощности, и сетевого трафика. В свойствах распределённого тома отображается значение репликации «1». При этом том создаётся с указанием значения репликации «0». Это самый быстрый том, если отдельные подтома (subvolumes, составляющие том) располагаются на разных узлах, то случайный обмен данными с томом делится между дисковыми подсистемами узлов, хранящих разделы, что положительно влияет на производительность.

Добавлять разделы к распределённому тому можно двумя способами:

  • С увеличением размера: в этом случае нет требований к размерам и числу добавляемых разделов.

  • С повышением реплики: в этом случае необходимо указывать новое значение реплики и учитывать распределение разделов в подтомах данного тома по размерам, а число разделов должно быть равно <числу разделов в исходном томе> x <изменение реплики>. В результате образуется распределённый реплицированный том.

Примечание

Если при добавлении разделов к тому параметр реплики не указан (равен «0»), то по умолчанию производится увеличение размера тома (увеличивается параметр distribute).

Внимание!

В SpaceVM тома Gluster запрещается создавать с включённым атрибутом sharding. Поэтому каждый файл, образ или виртуальный диск, создаваемый на томе Gluster, должен целиком размещаться на одном разделе. В противном случае будет выдана ошибка нехватки свободного места, даже если суммарного свободного места на распределённом томе достаточно. Во избежание подобных ситуаций необходимо до решения проблемы создавать чисто реплицированные Gluster тома размером, равным размеру одного раздела. При наличии достаточного количества узлов и доступных ZFS-пулов на них для разделов под тома Gluster рекомендуется создавать отдельные тома Gluster с параметром distribute = 1 и нужным уровнем реплики. Если всё же необходимо создание одного распределённого тома Gluster большого объёма, целесообразно избегать создания «тонких» виртуальных дисков на нём, чтобы возможные ошибки нехватки свободного места проявлялись сразу же при создании диска, а также следить за свободным местом на отдельных разделах тома и регулярно (или по расписанию) проводить ребалансировку тома. В случае ранее созданного тома с включенным параметром features.shard on (проверяется в окне Опции тома) необходимо скопировать с него имеющиеся данные и пересобрать том, сразу же после сборки, указав в параметрах features.shard off.

2. Реплицированный (replicated) том.

Аналог MIRROR (RAID 1) массива. Том данного типа обладает N-кратной избыточностью, где N — параметр репликации. Технически сохраняет работоспособность при отказе N-1 реплик. Фактически поведение тома зависит от настроек кворума. Подробная информация о кворуме.

При составлении реплик из разделов разного объёма эффективный объём тома равен объёму наименьшего раздела в реплике. При записи на том генерируется N-кратный трафик в сети, объединяющей разделы.

Добавлять разделы к реплицированному тому можно двумя способами:

  • С увеличением размера и сохранением параметра репликации: в этом случае число разделов должно быть кратно параметру репликации. Этот режим выбирается по умолчанию, если не указывать новый параметр репликации.

  • С сохранением размера и увеличением параметра репликации. При этом не рекомендуется добавлять разделы размером меньше уже составляющих том.

3. Реплицированный том с арбитром.

Является компромиссным решением между вариантом с репликой «2», подверженной проблеме «split-brain» в случае потери связи между разделами, и репликой «3», требующей трёхкратного объёма хранилища по отношению к полезному объёму тома. В этом случае реплика равна «3», но на последнем томе реплики хранится только метаинформация о файлах и каталогах, а не их содержимое. Такой том называется арбитром. Это позволяет в случае нарушения связности между узлами избежать проблемы «split-brain» и сэкономить дисковый объём. Для создания реплицированного тома с арбитром необходимо указать при создании тома значение реплики «2», а значение арбитра в реплицированном томе - равным «1». См. ниже порядок следования разделов при создании тома.

Добавление разделов к реплицированному тому с арбитром возможно только в режиме увеличения размера, при этом значения реплики и наличия арбитра в томе необходимо оставить равными нулю. Увеличивать значение реплики в таком томе нельзя. Число добавляемых разделов должно быть кратным трём.

Примечание

Возможно создать реплицированный том с арбитром из реплицированного тома с параметром реплики «2». При этом необходимо указать реплику «3», наличие арбитра «1», а число разделов должно быть равно параметру distribute исходного тома.

4. Распределённый реплицированный (distributed replicate) том.

Является репликой распределённых томов (примерный аналог RAID 10). Обладает так же, как и реплицированный том, N-кратной избыточностью. Сохраняет работоспособность технически, пока исправна минимум одна реплика, фактически поведение тома зависит от настроек кворума. Подробная информация о кворуме.

При создании томов такого типа из разделов разного размера необходимо учесть, что общий объём тома будет определяться суммой минимальных объёмов разделов в репликах каждого из подтомов (см. ниже порядок следования разделов при создании тома). При записи генерирует так же, как и реплицированный том, N-кратный трафик в сети, связывающей разделы.

Для создания тома такого типа необходимо указать значение реплики и выбрать число разделов, кратное этому значению. К примеру, при указании реплики «2» и всего 6 разделов будет создан том со значениями replica = 2, distribute = 3. Если нужно создать распределённый реплицированный том с арбитром, то значение реплики нужно указать «2», значение арбитра «1», а число томов кратным 3. При этом каждый третий раздел будет являться арбитром, следовательно, это может быть раздел существенно меньшего размера.

Создание распределённого реплицированного тома из 6 разделов с арбитром

Пусть у нас есть 4 ZFS-пула размером 1 Тбайт (zp_1T_0 ... zp_1T_3) и 2 ZFS-пула размером 40 Гбайт (zp_40G_0, zp_40G_1). Тогда для создания нужного тома можно выбрать ZFS-пулы в такой последовательности (условно, важно, чтобы разделы 40 Гбайт попали в последнюю реплику): zp_1T_0 zp_1T_1 zp_40G_0 zp_1T_2 zp_1T_3 zp_40G_0. Значение реплики выберем равным «2», а значение арбитра равным «1». Тогда после создания тома по нажатию кнопки Получение расширенных сведений о томе пользователь увидит роль разделов zp_1T_0, 1, 2, 3 — 'Brick', а zp_40G_0, 1 — 'Arbiter'. Суммарная ёмкость тома будет равна 2 Тбайт.

5. Дисперсный (dispersed) том.

Является примерным аналогом RAID-5, 6, raidz1, 2 или выше в зависимости от числа разделов избыточности. Сохраняет работоспособность при отказе до R разделов, где R — значение избыточности (disperse redundancy), заданной при создании тома. Объём тома в случае одинаковых размеров разделов равен D x Vрзд, где D — число разделов с данными (disperse data). Имеет преимущество перед реплицированным томом в более эффективном расходе дискового пространства, но более активно использует мощность CPU узлов и сравнимо генерирует трафик, т.к. для записи некоторого объёма данных на этот том требуется считывание D-1 объёмов данных, вычисление и запись R объёмов данных коррекции ошибок (избыточности). В сочетании с нагрузкой на CPU узлов при использовании raidz для защиты от отказов отдельных накопителей, составляющих разделы, может создаваться видимая загрузка CPU узлов. При создании дисперсного тома из разделов разного размера общий объём тома равен D x Vmin, где Vmin — минимальный размер из всех разделов тома. При создании распределённого дисперсного тома это справедливо для каждого подтома в отдельности.

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

  • N — общее число указанных для создания тома разделов, по умолчанию — 0.
  • Nt — число разделов на дисперсный том, по умолчанию — 0.
  • D — число разделов данных в дисперсном томе, по умолчанию — 0.
  • R — число разделов избыточности, по умолчанию — 1.

Число разделов на дисперсный том Nt берётся равным N. Указывается в случае создания дисперсного распределённого тома, в этом случае задаётся кратно меньшим N, при этом степень кратности будет равняться параметру distribute в полученном томе.

Число разделов данных в дисперсном томе D берётся равным Nt-1.

Если какие-то параметры заданы явно, остальные вычисляются автоматически.

Примеры создания дисперсных томов

Пусть имеется 8 разделов объёмом по 1 Тбайт (см.замечание об оптимальной конфигурации дисперсного тома). Необходимо выбрать параметры по умолчанию, кроме числа разделов данных на дисперсный том = 8. Тогда получится том объёмом 7 Тбайт, переносящий потерю любого одного раздела. Из этих же 8 разделов нужно создать том с параметром Nt = 4, прочие параметры по умолчанию. Тогда получится том объемом 6 Тбайт, состоящий из двух подтомов (первая и вторая группа по 4 раздела в списке разделов при создании тома) и переносящий потерю любого раздела в каждом из подтомов. Из этих же разделов необходимо создать том с параметром D = 5, прочие параметры по умолчанию. Получится том объёмом 5 Тбайт, переносящий отказ до 3 любых разделов в томе.

Примечание

При добавлении разделов к дисперсному тому их число должно быть кратно сумме параметров D + R, при этом образуется дисперсный распределённый том.

Важное замечание о производительности

Существует понятие оптимальности конфигурации дисперсного тома. Дело в зависимости размера блоков обмена данными при обращениях к тому от конфигурации тома. Она равна S = D x 512 байт, где D - число разделов с данными в дисперсном томе. Оптимальной считается конфигурация тома, при которой размер блока данных является степенью двойки (т.е. 512, 1024, 2048, 4096, 8192, ... байт). Следовательно, оптимальным числом разделов с данными в томе будет 2, 4, 8, ... разделов. К этому числу нужно прибавить число разделов для обеспечения требуемой избыточности. Например, для стойкости к потере 1 раздела и оптимальности конфигурации нужно иметь в томе 3(2+1), 5(4+1), 9(8+1), ... разделов. Если конфигурация будет неоптимальной, производительность тома будет понижена из-за того, что в основном обмен идёт блоками размером кратным степени двойки (например, кратными 4096 байт). Если требуемые или отдаваемые клиентом блоки не будут кратны блокам, отдаваемым хранилищем, то на каждую операцию будет приходиться фактически две или более операции обмена с томом, в случае записи это приводит к множеству дополнительных, так называемых, «read-modify-write» операций. Поэтому при создании дисперсного тома необходимо стремиться к оптимальной конфигурации.

6. Распределённый дисперсный (distributed disperse) том.

Примерный аналог RAID 60. Состоит из нескольких дисперсных томов, объединённых наподобие разделов в распределённом томе. Получается при добавлении разделов к дисперсному тому либо при создании дисперсного тома, когда значение «число разделов данных в дисперсном томе» кратно меньше заданного числа разделов.


Важность выбора последовательности разделов при создании и модификации тома

Разделы, составляющие распределённый том, называются подтомами (subvolumes). Это, по большей части, неявный параметр, но он имеет большое значение для реплицированных томов с арбитром и распределённых реплицированных томов. Какой раздел отнесётся к какой реплике и в каком подтоме он будет находиться, однозначно определяется порядком указания разделов при создании. В распределённом реплицированном томе с k подтомов (distribution = k) и n реплик (replica = n) это задаётся так:

S1R1 S1R2 ... S1Rn S2R1 S2R2 ... S2Rn ... SkR1 ... SkRn,

где S1...Sk — subvolumes тома, а R1...Rn — номер реплики.

То есть, как видим, друг за другом указываются реплики одного подтома. Соответственно, если создаётся распределённый реплицированный том из разделов различной ёмкости или том с арбитром, нужно учитывать это. В одном подтоме желательно располагать разделы одинаковой ёмкости, чтобы избежать неиспользуемого объёма, а в одной реплике — разделы из одного узла, если такие имеются, что обеспечит отказ только одной реплики при отказе какого-либо из узлов.


Профилирование тома

gluster volume profile {volume_name} start  # команда для запуска профилирования тома

gluster volume profile {volume_name} info   # команда для получения информации о томе (запуск этой команды необходимо выполнять через некоторе время после начала профилирования)

gluster volume profile {volume_name} stop   # команда для окончания профилирования тома

Применение группы опций к тому

При создании к тому автоматически применяются дополнительные оптимизирующие опции. Операция производится в несколько этапов:

  1. Сначала к тому применяется одна из стандартных (поставляемых разработчиками Gluster) групп опций в зависимости от типа тома:

    • Распределённый том — группа distributed-virt.
    • Реплицированный том — группа virt.
    • Дисперсный том — группа dispersed-virt (модифицированная группа virt без параметра cluster.shd-max-threads).
  2. Далее к тому применяется группа параметров Space (см. ниже).

  3. Также отключается опция тома sharding, т.к. она может в данной версии Gluster приводить к повреждению данных.

Вручную группы опций можно применить к уже созданным томам, зайдя в CLI любого сервера, на котором развернут Gluster том, и выполнить команды (к примеру, распределённый том):

gluster volume set {volume_name} group distributed-virt
gluster volume set {volume_name} group veil
gluster volume set {volume_name} features.shard off

Примечание

Важно отключить шардинг (sharding) после установки групп, т.к. предустановленные группы (virt, distributed-virt, dispersed-virt) могут его включить.

В случае создания реплицированного тома с арбитром устанавливается параметр

gluster volume set {volume_name} server-quorum-type server

Подробная информация о параметрах и группах параметров томов.

Опции группы Space
```
performance.quick-read=off
performance.read-ahead=off
performance.io-cache=off
performance.low-prio-threads=32
network.remote-dio=disable
performance.strict-o-direct=on
cluster.eager-lock=enable
cluster.quorum-type=none
cluster.server-quorum-type=none
cluster.data-self-heal-algorithm=full
cluster.locking-scheme=granular
user.cifs=off
cluster.choose-local=off
client.event-threads=4
server.event-threads=4
performance.client-io-threads=on
network.ping-timeout=20
server.tcp-user-timeout=20
server.keepalive-time=10
server.keepalive-interval=2
server.keepalive-count=5
cluster.lookup-optimize=off
```

Удаление разделов из тома

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

Сокращение размера тома возможно при наличии более чем одного подтома (distribute > 1), следовательно, применяется на томах типа DISTRIBUTED, DISTRIBUTED_REPLICATE, DISTRIBUTED_DISPERSE. Перед удалением необходимо убедиться, что свободное место на оставшихся подтомах достаточно, чтобы вместить данные с удаляемого подтома. Также важно понимать, что так как каждый файл, хранящийся на томе Gluster в текущей конфигурации, хранится целиком на каком-либо подтоме, то при конфигурации, например, когда на удаляемом подтоме лежит файл размером 40 Гбайт, а на двух оставшихся есть 20 и 20 Гбайт свободного места, операция удаления завершится с ошибкой. Необходимо обеспечить свободное место, достаточное для копирования файлов с удаляемого подтома целиком.

При удалении разделов с уменьшением объёма раздела значение репликации нужно оставить равным 0 или текущему значению репликации тома (в случае дисперсного тома значение репликации смысла не имеет, поэтому его необходимо оставить равным 0), а при удалении разделов с уменьшением числа реплик (уменьшением избыточности) у реплицированных томов значение репликации нужно установить равным результирующему значению репликации тома.

Для правильного выбора разделов, подлежащих удалению, см. Важность выбора последовательности разделов при создании и модификации тома. Фактический порядок разделов в томе, и следовательно, их отношение к различным подтомам и расположение в них, можно увидеть по нажатию кнопки Получение расширенных сведений о томе.

Примеры
  • Том типа DISTRIBUTED_REPLICATE, параметры replica=3, distribute=2. Следовательно, имеется 2 подтома, каждый из них имеет значение реплики 3. Всего в томе 6 разделов.

    • Расположение разделов (из информации Расширенные сведения о томе): z1, z2, z3, z4, z5, z6.

    • Первый подтом состоит из разделов (z1, z2, z3), второй из (z4, z5, z6). Первая реплика подтомов состоит из разделов (z1, z4), вторая — из (z2, z4), третья (она же при наличии арбитра в томе содержит разделы арбитров) — (z3, z6).

    • Чтобы уменьшить размер тома, необходимо удалить какой-либо из подтомов целиком. Следовательно, возможно выбрать к удалению тройки разделов (z1, z2, z3) или (z4, z5, z6). При этом тип тома изменится на REPLICATED, так как в нём останется только один подтом.

    • Чтобы уменьшить степень избыточности тома, необходимо выбрать пары разделов из разных подтомов. В зависимости от наличия или отсутствия арбитра в томе возможны два варианта.

      • Если нет арбитра, разделы в пределах подтома равноправны. То есть, если нет арбитра, то для уменьшения реплики можно выбрать по одному любому разделу из разных подтомов, например, пары (z1, z5), (z2, z4) или (z3, z4).
      • В случае тома с арбитром ситуация меняется. Разделы типа arbiter, являющимися третьими репликами в каждом подтоме (в нашем случае это будут разделы z3 и z6), при удалении нужно выбирать только синхронно. То есть, если в этом случае нужно удалить разделы с данными, то они по-прежнему равноправны между собой в пределах подтома, и можно выбрать пары (z1, z4), (z2, z4) или (z1, z5). А разделы (z3 и z6), являющиеся арбитрами, необходимо удалять только синхронно. Комбинации (z1, z6) или (z4, z3) и подобные недопустимы в данном случае.
  • Том типа DISTRIBUTED_DISPERSE c параметрами disperse=3, distribute=2. Содержит 2 подтома дисперсного типа 2+1. Всего в томе 6 разделов.

    • Расположение разделов (из информации Расширенные сведения о томе): z1, z2, z3, z4, z5, z6.

    • Дисперсные тома не поддерживают изменение избыточности, поэтому здесь возможно только удаление разделов с уменьшением размера, т.е. удаление подтома целиком. Следовательно, при удалении нужно выбирать только тройки разделов (z1, z2, z3) или (z4, z5, z6). При этом том превратится в тип DISPERSED, так как в нём останется только один подтом.

Внимание!

После уменьшения размера тома путём удаления разделов, если результирующий том имеет более 1 подтома, желательно запустить ребалансировку тома.


Остановка, замена и перезапуск разделов в томе

В случае проблем с ZFS-пулом, используемым в качестве раздела тома Gluster, возможно временно «вывести из эксплуатации» данный раздел (при наличии избыточности у тома). Далее провести необходимые работы, включая удаление неисправного ZFS-пула при необходимости, а затем перезапустить остановленный раздел или заменить на исправный.

При замене раздела (в контексте внутренней структуры тома) появляется новый раздел вместо старого, а при перезапуске — активируется тот же самый. Это может быть полезно при работах по восстановлению работоспособности раздела, когда, например, нарушена целостность ZFS-пула, но сам ZFS-пул не планируется заменять на другой. Также при замене раздела пересоздаётся датасет с параметрами, соответствующими параметрам тома, а при перезапуске раздела подразумевается, что данный датасет существует и примонтирован к нужной точке монтирования, и производится лишь пересоздание данных GlusterFS на данном разделе.

Операции по остановке, перезапуске и замене разделов осуществляются в разделе Хранилища - Кластерные хранилища - Тома - <Имя тома> - Разделы (ZFS пулы).

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

  • Остановить раздел с помощью кнопки Остановка раздела, в открывшемся окне необходимо выбрать нужный раздел.
  • Произвести необходимые работы по восстановлению работоспособности ZFS-пула, составляющего раздел.
  • Убедиться, что на данном ZFS-пуле существует датасет с той же точкой монтирования, что была ранее.
  • Нажать кнопку Перезапуск раздела, выбрать ранее остановленный раздел.

Если нужно произвести замену раздела, и заменяющий раздел уже доступен:

  • Нажать на кнопку Замена раздела.
  • В открывшемся окне указать заменяемый и заменяющий разделы.

Если раздел для замены не был заранее подготовлен:

  • Остановить раздел с помощью кнопки Остановка раздела, в открывшемся окне необходимо выбрать нужный раздел.
  • При необходимости можно удалить ZFS-пул, составляющий данный раздел, или пересобрать его с другим именем.
  • Выполнить замену раздела с помощью кнопки Замена раздела. В открывшемся окне в качестве заменяемого раздела нужно выбрать уже остановленный или удалённый раздел, а заменяющего — полученный исправный раздел.

Остановленный раздел можно привести обратно в состояние Online либо перезапуском тома, нажав кнопку Действия тома и выбрав старт, либо, если остановка тома недопустима, заменой раздела на другой.

Важно

После замены и перезапуска разделов необходимо проверить исправность данных на томе, нажав кнопку Статус подорожника тома. Значение NR_ENTRIES для всех разделов должно быть равным 0, а все разделы должны быть в состоянии Connected. Если значения NR_ENTRIES для какого-либо раздела через несколько минут после замены не становятся равным 0, необходимо провести исправление тома, нажав кнопку Действия подорожника и выбрав full. Если это не помогло, необходимо перезапустить том.


Вывод на обслуживание разделов тома с последующей заменой на разделы на том же узле

В некоторых случаях необходимо вывести из эксплуатации разделы тома, находящиеся на некотором узле, исправить их и ввести вновь в тот же том, а дополнительного хранилища выделить не удаётся. Если избыточность тома позволяет, можно провести следующие действия:

  • Остановить разделы томов, находящиеся на данном узле.
  • Перевести узел в сервисный режим.
  • Удалить узел из кластера.
  • Через CLI или иными средствами привести разделы в исправное состояние.
  • Добавить узел в кластер.
  • Провести переконфигурацию кластерного транспорта. При этом в списке узлов кластерного транспорта будет виден как вновь введённый узел, так и он же, но в виде «потерянного» и без имени, как uuid. Сообщения о невозможности примонтировать том могут быть проигнорированы.
  • Произвести замену разделов, находившихся ранее на данном узле, на те же разделы, но уже исправленные.
  • Проконтролировать через расширенные сведения о томе, что новые разделы онлайн и синхронизируются.
  • Примонтировать том на узел.
Примечания
  • При выполнении замены и перезапуска разделов рекомендуется минимизировать операции ввода/вывода на томе.

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

  • В некоторых случаях задача прямой замены раздела может сопровождаться ошибкой с сообщением «another transaction is in progress». В результате желаемое действие всё равно завершается успешно, если нет, то необходимо произвести замену с предварительной остановкой заменяемого раздела.

  • Попытка удалить ZFS-пул, содержащий раздел тома Gluster в состоянии Online, завершится с ошибкой. Сначала раздел необходимо остановить.

  • Таблица разделов (ZFS-пулов) тома содержит два схожих поля — Online и Статус. Первое поле указывает на состояние раздела со стороны тома Gluster, а второе — на исправность самого ZFS-пула.