Восстановление и расширение дисков и узлов Ceph¶
5.8. Scale up (добавление дисков в незаполненные слоты действующих узлов хранения), scale out (добавление новых узлов хранения), а также расширение емкости кластера путем замены дисков малой емкости на новые работают без прерывания сервисов¶
пошаговый регламент горизонтального расширения СХД (Scale Out) и замены дисков, а также указать, какими штатными средствами платформы ограничивается сетевой трафик ребалансировки Ceph для предотвращения деградации сетевых функций VNF
5.16 Обновление встроенного программного обеспечения серверного оборудования и обновление версии операционной системы на storage node не приводит к прерыванию сервисов кластера¶
5.18 Возможность обеспечения отказоустойчивости при одновременном выходе из строя двух любых элементов (доменов отказа) SDS: носители, узлы (серверы), т.е. обеспечивается FTT=2. При этом сохраняется непрерывность сервисов и доступа к данным, исключается потеря данных и существенная деградация производительности, выполняется автоматический ребилд данных на свободном пространстве кластера¶
Как администратор хранилища, вы можете столкнуться с отказом целого узла в кластере хранения, и обработка отказа узла аналогична обработке отказа диска. При отказе узла Ceph восстанавливает не только группы размещения (PG) для одного диска, а все группы размещения на дисках этого узла. Ceph обнаружит, что все OSD вышли из строя, и автоматически запустит процесс восстановления, известный как самовосстановление. Существует три сценария отказа узлов. • Замена узла с использованием корневого диска и диска Ceph OSD с вышедшего из строя узла. • Замена узла путем переустановки операционной системы и использования дисков Ceph OSD с вышедшего из строя узла. • Замена узла путем переустановки операционной системы и использования всех новых дисков Ceph OSD. Для получения общего описания рабочего процесса для каждого сценария замены узла см. ссылку: https://docs.redhat.com/documentation/red_hat_ceph_storage//9/html-single/operations_guide/#ops_workflow-for replacement-a-node[ Рабочий процесс замены узла ].
Предварительные требования¶
- Работающий кластер Ceph.
- Неисправный узел или новый узел.
Что следует учитывать перед добавлением или удалением узла¶
Одной из выдающихся особенностей Ceph является возможность добавления или удаления узлов Ceph OSD во время выполнения. Это означает, что вы можете изменять размер кластера хранения или заменять оборудование, не останавливая кластер хранения. Возможность обслуживать клиентов Ceph, даже когда кластер хранения находится в рабочем degraded состоянии, также имеет операционные преимущества. Например, можно добавлять, удалять или заменять оборудование в обычные рабочие часы, а не работать сверхурочно или в выходные дни. Однако добавление и удаление узлов Ceph OSD может существенно повлиять на производительность. Прежде чем добавлять или удалять узлы Ceph OSD, учтите влияние на производительность кластера хранения: • Независимо от того, расширяете вы или уменьшаете емкость кластера хранения, добавление или удаление узлов Ceph OSD приводит к backfilling (заполнению пробелов) в балансировке кластера хранения. В течение этого периода балансировки Ceph использует дополнительные ресурсы, что может повлиять на производительность кластера хранения. • В рабочем кластере хранения Ceph узел Ceph OSD имеет определенную аппаратную конфигурацию, которая обеспечивает определенный тип стратегии хранения. • Поскольку узел Ceph OSD является частью иерархии CRUSH, добавление или удаление узла обычно влияет на производительность пулов, использующих набор правил CRUSH.
Схема замены узла¶
Существует три сценария отказа узлов. При замене узла используйте следующие общие алгоритмы действий для каждого сценария. • Замена узла с использованием корневого диска и диска Ceph OSD с вышедшего из строя узла. • Замена узла путем переустановки операционной системы и использования дисков Ceph OSD с вышедшего из строя узла. • Замена узла путем переустановки операционной системы и использования всех новых дисков Ceph OSD.
Замена узла с использованием корневого диска и диска Ceph OSD с вышедшего из строя узла¶
Используйте корневой диск и диск Ceph OSD с вышедшего из строя узла для его замены.
Процедура 1. Отключить backfilling. Синтаксис ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub Пример [ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub 2. Замените узел, взяв диски со старого узла и добавив их к новому узлу. 3. Включить backfilling. Синтаксис ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub Пример [ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Замена узла путем переустановки операционной системы и использования дисков Ceph OSD с вышедшего из строя узла¶
Переустановите операционную систему и используйте диски Ceph OSD с вышедшего из строя узла для его замены.
Процедура 1. Отключить заполнение backfilling. Синтаксис ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub Пример [ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub 2. Создайте резервную копию конфигурации Ceph. Синтаксис cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf Пример [ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf 3. Замените узел и добавьте диски Ceph OSD с вышедшего из строя узла. 4. Настройте диски как JBOD. Примечание Это должен сделать администратор хранилища. 5. Установите операционную систему. backfilling Примечание Это должен сделать системный администратор. 6. Восстановите конфигурацию Ceph. Синтаксис cp /PATH_TO_BACKUP_LOCATION/ceph.conf /etc/ceph/ceph.conf Пример [ceph: root@host01 /]# cp /some/backup/location/ceph.conf /etc/ceph/ceph.conf 7. Добавьте новый узел в кластер хранения данных, используя команды Ceph Orchestrator. Демоны Ceph будут автоматически размещены на соответствующем узле. Для получения дополнительной информации см. раздел « Добавление узла Ceph OSD» . 8. Включить backfilling. Синтаксис ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub Пример [ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Замена узла путем переустановки операционной системы и использования всех новых дисков Ceph OSD¶
Переустановите операционную систему и используйте все новые диски Ceph OSD для замены узла.
Процедура 1. Отключить заполнение backfilling. Синтаксис ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub Пример [ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub 2. Удалите все OSD-устройства на неисправном узле из кластера хранения. Для получения дополнительной информации см. раздел « Удаление узла Ceph OSD» . 3. Создайте резервную копию конфигурации Ceph. Синтаксис cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf Пример [ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf 4. Замените узел и добавьте диски Ceph OSD с вышедшего из строя узла. 5. Настройте диски как JBOD. Примечание Это должен сделать администратор хранилища. 6. Установите операционную систему.. Примечание Это должен сделать системный администратор. 7. Добавьте новый узел в кластер хранения данных, используя команды Ceph Orchestrator. Демоны Ceph будут автоматически размещены на соответствующем узле. Для получения дополнительной информации см. раздел « Добавление узла Ceph OSD» . 8. Включить backfilling. Синтаксис ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub Пример [ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Вопросы производительности¶
При добавлении или удалении узлов Ceph OSD на производительность кластера хранения обычно влияют следующие факторы: • Клиенты Ceph создают нагрузку на интерфейс ввода-вывода Ceph; то есть клиенты создают нагрузку на пул. Пул соответствует набору правил CRUSH. Базовая иерархия CRUSH позволяет Ceph размещать данные между доменами отказа. Если базовый узел Ceph OSD использует пул, испытывающий высокую нагрузку со стороны клиентов, эта нагрузка может значительно повлиять на время восстановления и снизить производительность. Поскольку операции записи требуют репликации данных для обеспечения отказоустойчивости, интенсивные операции записи со стороны клиентов, в частности, могут увеличить время восстановления кластера хранения. • Как правило, добавляемая или удаляемая емкость влияет на время восстановления кластера хранения. Кроме того, плотность хранения на добавляемом или удаляемом узле также может влиять на время восстановления. Например, узлу с 36 OSD обычно требуется больше времени для восстановления, чем узлу с 12 OSD. • При удалении узлов НЕОБХОДИМО убедиться в наличии достаточного резерва емкости, чтобы не допустить превышения лимита full ratio в 100 0 near full ratio…full ratio • Узел Ceph OSD соответствует как минимум одной иерархии Ceph CRUSH, а эта иерархия соответствует как минимум одному пулу. Каждый пул, использующий набор правил CRUSH, испытывает снижение производительности при добавлении или удалении узлов Ceph OSD. • Пулы репликации, как правило, используют больше пропускной способности сети для создания глубоких копий данных, тогда как пулы с кодированием с исправлением ошибок, как правило, используют больше ресурсов ЦП для вычисления k+mфрагментов кода. Чем больше копий данных, тем дольше требуется времени для восстановления кластера хранения. Например, k+mвосстановление пула большего размера или пула с большим количеством фрагментов займет больше времени, чем восстановление пула репликации с меньшим количеством копий тех же данных. • Накопители, контроллеры и сетевые карты обладают характеристиками пропускной способности, которые могут влиять на время восстановления. Как правило, узлы с более высокими характеристиками пропускной способности, такие как 10 Гбит/с и SSD-накопители, восстанавливаются быстрее, чем узлы с более низкими характеристиками пропускной способности, такие как 1 Гбит/с и SATA-накопители.
Рекомендации по добавлению или удалению узлов¶
Рекомендуется добавлять или удалять OSD по одному в пределах узла и дать кластеру хранения восстановиться, прежде чем переходить к следующему OSD. Это помогает минимизировать влияние на производительность кластера хранения. Обратите внимание, что в случае отказа узла может потребоваться замена всего узла сразу, а не по одному OSD за раз. Чтобы удалить OSD: • Удаление демонов OSD с помощью Ceph Orchestrator . Чтобы добавить OSD: • Использование развертывания Ceph OSD на всех доступных устройствах . • Использование развертывания Ceph OSD с помощью расширенной спецификации сервисов . • Использование развертывания Ceph OSD на определенных устройствах и хостах . При добавлении или удалении узлов Ceph OSD следует учитывать, что другие запущенные процессы также влияют на производительность кластера хранения. Для уменьшения влияния на операции ввода-вывода клиентов Red Hat рекомендует следующее:
Рассчитайте вместимость¶
Перед удалением узла Ceph OSD убедитесь, что кластер хранения может заполнить содержимое всех своих OSD, не достигнув порогового значения full ratio. Достижение порогового full ratioзначения приведет к отказу кластера хранения от операций записи.
Временно отключить функцию очистки (Scrubbing)¶
Scrubbing необходима для обеспечения надежности данных кластера хранения; однако она требует значительных ресурсов. Перед добавлением или удалением узла Ceph OSD отключите Scrubbing и Deep Scrubbing и дождитесь завершения текущих операций Scrubbing, прежде чем продолжить.
ceph osd set noscrub
ceph osd set nodeep-scrub
После добавления или удаления узла Ceph OSD и возвращения кластера хранения в рабочее active+cleanсостояние, отмените noscrubсоответствующие nodeep-scrubнастройки.
ceph osd unset noscrub
ceph osd unset nodeep-scrub
Ограничить backfill и recovery¶
Если у вас достаточно надежная защита данных, нет ничего плохого в работе в таком degradedсостоянии. Например, вы можете управлять кластером хранения с параметрами osd_pool_default_size = 3и osd_pool_default_min_size = 2. Вы можете настроить кластер хранения для максимально быстрого времени восстановления (recovery), но это значительно повлияет на производительность ввода-вывода клиента Ceph. Для поддержания максимальной производительности ввода-вывода клиента Ceph ограничьте операции backfill и recovery и увеличьте их время выполнения.
osd_max_backfills = 1
osd_recovery_max_active = 1
osd_recovery_op_priority = 1
Также можно рассмотреть возможность установки параметров сна и задержки, например, osd_recovery_sleep.
Увеличить количество групп для placement groups¶
Наконец, если вы расширяете размер кластера хранения, вам может потребоваться увеличить количество placement groups. Если вы определите, что вам необходимо увеличить количество placement groups, рекомендуется делать это постепенно. Значительное увеличение количества placement groups приведет к существенному снижению производительности.
Добавление узла Ceph OSD¶
Для расширения возможностей кластера Ceph можно добавить узел OSD.
Процедура 1. Убедитесь, что другие узлы в кластере хранения могут связаться с новым узлом по его короткому имени хоста. 2. Временно отключить функцию Scrubbing: Пример [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub 3. Ограничьте возможности функций backfill и recovery: Синтаксис ceph tell DAEMON_TYPE.* injectargs –OPTION_NAME VALUE [–OPTION_NAME VALUE] Пример [ceph: root@host01 /]# ceph tell osd.* injectargs –osd-max-backfills 1 –osd-recovery-max-active 1 –osd-recovery-op-priority 1 4. Распакуйте открытые SSH-ключи кластера в папку: Синтаксис ceph cephadm get-pub-key > ~/PATH Пример [ceph: root@host01 /]# ceph cephadm get-pub-key > ~/ceph.pub 5. Скопируйте открытые SSH-ключи кластера Ceph в файл пользователя root authorized_keysна новом хосте: Синтаксис ssh-copy-id -f -i ~/PATH root@HOST_NAME_2 Пример [ceph: root@host01 /]# ssh-copy-id -f -i ~/ceph.pub root@host02 6. Добавьте новый узел на карту CRUSH: Синтаксис ceph orch host add NODE_NAME IP_ADDRESS Пример [ceph: root@host01 /]# ceph orch host add host02 10.10.128.70 7. Добавьте OSD для каждого диска на узле в кластер хранения. • Использование развертывания Ceph OSD на всех доступных устройствах . • Использование развертывания Ceph OSD с помощью расширенной спецификации сервисов . • Использование развертывания Ceph OSD на определенных устройствах и хостах .
Важно
При добавлении узла OSD в кластер Ceph рекомендуется добавлять демоны OSD по одному и позволять кластеру восстанавливаться до рабочего active+cleanсостояния, прежде чем переходить к следующему OSD.
ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ¶
- Дополнительные сведения см. в разделе «Настройка определенного параметра конфигурации во время выполнения» в руководстве по настройке хранилища Ceph .
- Подробную информацию о размещении узла в подходящем месте в иерархии CRUSH см . в разделах «Добавление backet» и «Перемещение backet руководства по стратегиям хранения данных Ceph.
12.6. Удаление узла Ceph OSD¶
Чтобы уменьшить емкость кластера хранения, удалите узел OSD.
Предупреждение
Перед удалением узла Ceph OSD убедитесь, что кластер хранения может заполнить содержимое всех OSD, не достигнув порогового значения full ratio. Достижение порогового full ratioзначения приведет к отказу кластера хранения от операций записи.
Процедура 1. Проверьте емкость кластера хранения: Синтаксис ceph df rados df ceph osd df 2. Временно отключить функцию Scrubbing: Синтаксис ceph osd set noscrub ceph osd set nodeep-scrub 3. Ограничьте возможности функций backfill и recovery: Синтаксис ceph tell DAEMON_TYPE.* injectargs –OPTION_NAME VALUE [–OPTION_NAME VALUE] Пример [ceph: root@host01 /]# ceph tell osd.* injectargs –osd-max-backfills 1 –osd-recovery-max-active 1 –osd-recovery-op-priority 1 4. Удалите каждый OSD на узле из кластера хранения: • Удаление демонов OSD с помощью Ceph Orchestrator .
Важно
При удалении узла OSD из кластера хранения данных компания Red Hat рекомендует удалять OSD по одному в рамках узла и позволять кластеру восстанавливаться до исходного active+cleanсостояния, прежде чем приступать к удалению следующего OSD. a. После удаления OSD проверьте, не обращается ли кластер хранения к следующему элементу near-full ratio: Синтаксис ceph -s ceph df b. Повторяйте этот шаг до тех пор, пока все OSD на узле не будут удалены из кластера хранения.
5. После удаления всех OSD-файлов удалите хост: • Удаление хостов с помощью Ceph Orchestrator .
Кроме основной инструкции в дополнительных статьях рассказывается как можно управлять флагами при проведении ребаланса и deep scrubbing с целью обеспечить достаточный уровень производительности. Данная процедура является не является автоматической, поскольку процесс добавления стойки, узла или диска требует тщательного планирования и аккуратности со стороны администратора.
Данные настройки могут быть выполнены из Ceph Dashboard Эта процедура доступна в разделе OSD