Mon no data available в Ceph что делать

Mon no data available ceph как быть

Содержание статьи

Mon no data available ceph как быть

Сообщение mon no data available указывает на то, что один из MON-демонов Ceph не может прочитать собственное хранилище состояния. Обычно это связано с повреждением директории /var/lib/ceph/mon/*, отсутствием ключей или неправильными правами доступа. Проблема проявляется в виде отсутствующей карты кластера, сбоя в инициализации MON или невозможности согласовать текущее состояние кворума.

Для диагностирования сбоя требуется проверить журналы ceph-mon, убедиться в доступности каталога с данными, сверить владельца и права файлов, а также уточнить корректность keyring. Если MON не может получить доступ к собственному хранилищу, он не вступает в кворум и формирует упомянутое сообщение. От этого зависит стабильность всего кластера, так как MON управляет метаданными и картами служб.

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

Mon no data available в Ceph: что делать

Ниже приведена таблица, которая помогает быстро установить причину отказа и подобрать корректное действие:

Симптом Описание Решение
Мон не создаёт карту кластера Недоступен каталог с внутренним хранилищем Проверить файловую систему, восстановить доступность директории
Ошибки «failed to load monmap» Нарушена структура мон-каталога или отсутствует monmap Перекопировать monmap с рабочей ноды или восстановить из резервной копии
Журналы фиксируют отказ keyring Повреждён либо перепутан файл ключа Скопировать корректный keyring и выдать нужные права
MON отклонён от кворума Системное время отличается от остальных узлов Синхронизировать время через NTP и перезапустить MON

Если структура каталога нарушена полностью и восстановление невозможно, применяется пересоздание MON с помощью ceph-mon —mkfs и загрузкой актуальной карты. Этот шаг возвращает узел в кластер без повреждения остальных служб.

Проверка статуса MON через ceph -s и расшифровка сообщения no data available

Проверка статуса MON через ceph -s и расшифровка сообщения no data available

Команда ceph -s показывает текущее состояние кластера и позволяет быстро определить, что один из MON не может загрузить собственное хранилище. При появлении строки mon: no data available система указывает на отсутствие доступа к каталогу с внутренними данными мон-демона или на некорректное состояние файлов, необходимых для запуска.

Стандартные признаки, которые подтверждают проблему: отсутствие мон-каталога, ошибки чтения store.db, сообщения о недоступном keyring или невозможности загрузить monmap. Эти признаки помогают определить, требуется ли восстановление каталога, корректировка прав доступа или пересоздание MON.

Анализ логов ceph-mon для поиска первопричины отсутствия данных

Журналы ceph-mon позволяют определить, на каком этапе демон теряет доступ к своему хранилищу. Логи обычно располагаются в /var/log/ceph/ и содержат сообщения о загрузке store.db, инициализации мон-каталога, проверке keyring и чтении monmap. Ошибки вида failed to mount store, db is not readable или unable to load monmap указывают на повреждение внутренних данных.

Если в логе появляется запись о несоответствии владельца или режиме доступа, MON не сможет открыть нужные файлы. Сообщения permission denied и wrong key permissions подсказывают, что каталог или ключ были изменены вручную. Исправление прав через chown и chmod в таких случаях решает проблему без восстановления структуры.

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

Если логи фиксируют повреждение файлов store.db или отсутствие ключевых структур, потребуется восстановление каталога из резервной копии либо копирование данных с рабочей ноды. Такие сообщения дают точное указание на то, что проблема не связана с правами, а вызвана неполнотой или разрушением внутреннего хранилища.

Проверка прав доступа и корректности расположения keyring для MON

Keyring отвечает за авторизацию MON и должен находиться в каталоге /var/lib/ceph/mon//. Смещение файла, неверные права или смена владельца приводят к тому, что демон не может прочитать ключ и завершает инициализацию с ошибкой.

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

  • Убедиться, что файл называется keyring и расположен в каталоге мон-демона.
  • Проверить владельца: должен быть ceph:ceph.
  • Проверить режим доступа: обычно 600 или 640, чтобы исключить блокировку чтения.
  • Сравнить содержимое файла с keyring на рабочей ноде, если есть подозрение на повреждение.

Если файл отсутствует или не читается, его можно восстановить с помощью копирования с исправного MON:

  1. Скопировать keyring на проблемный узел.
  2. Назначить владельца и права: chown ceph:ceph keyring, chmod 600 keyring.
  3. Убедиться, что путь соответствует структуре каталога мон-демона, иначе MON не обнаружит ключ.

После корректировки прав и расположения keyring демон запускается без ошибок доступа и получает возможность прочитать собственное хранилище.

Диагностика повреждения или недоступности каталога /var/lib/ceph/mon

Диагностика повреждения или недоступности каталога /var/lib/ceph/mon

Каталог /var/lib/ceph/mon/ содержит внутренние файлы MON, включая store.db, monmap и keyring. Его повреждение или недоступность приводит к появлению ошибки mon no data available и блокировке узла в кворуме.

Для диагностики следует выполнить следующие шаги:

  • Проверить существование каталога: ls -l /var/lib/ceph/mon/. Отсутствие подкаталогов указывает на удаление или некорректное создание MON.
  • Проверить права и владельца: stat /var/lib/ceph/mon/*. Все файлы должны принадлежать пользователю ceph и группе ceph, режим доступа не выше 700.
  • Проанализировать журнал ошибок: journalctl -u ceph-mon@<имя_узла> или /var/log/ceph/ceph-mon.<имя_узла>.log. Сообщения о недоступности каталога или отказе чтения store.db указывают на повреждение.
  • Проверить файловую систему на ошибки: fsck или xfs_repair для XFS, чтобы исключить физические повреждения.

Если каталог повреждён и восстановление из логов невозможно, применяют копирование каталога с рабочего MON или пересоздание узла через ceph-mon —mkfs с последующей загрузкой актуальной карты кластера. Это возвращает MON в рабочее состояние без потери согласованности кворума.

Проверка синхронизации времени и состояния системных служб MON

MON-демоны Ceph зависят от точного времени для согласования кворума. Несовпадение таймстемпов между узлами приводит к отказу в загрузке карты кластера и формированию ошибки mon no data available.

Для проверки синхронизации времени выполните:

  • Проверка текущего времени на всех MON: date. Разница более нескольких секунд требует коррекции.
  • Проверка состояния NTP или chrony: timedatectl status, systemctl status chronyd или ntpd. Служба должна быть активной и синхронизированной.
  • При необходимости выполнить синхронизацию: ntpdate -u <сервер_NTP> или через chrony: chronyc makestep.

После выравнивания времени проверяют состояние MON-демонов: systemctl status ceph-mon@<имя_узла>. Демон должен быть активен, без ошибок чтения каталога или keyring. Если после синхронизации времени узел всё ещё не входит в кворум, проверяют журналы /var/log/ceph/ceph-mon.<имя_узла>.log для выявления дополнительных проблем.

Восстановление структуры MON из резервной копии или healthy-нод

Если MON не может прочитать свои данные и формирует сообщение mon no data available, восстановление из резервной копии или копирование с рабочей ноды позволяет вернуть узел в кластер без потери кворума.

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

Действие Описание Команда / примечание
Определение источника восстановления Выбор healthy-узла или резервной копии для копирования данных MON rsync или scp с рабочей ноды
Копирование каталога мон-демона Перенос полного каталога /var/lib/ceph/mon// на проблемный узел rsync -avz /var/lib/ceph/mon/@:/var/lib/ceph/mon/
Проверка прав и владельца Все файлы должны принадлежать пользователю ceph:ceph, режим доступа 700-600 chown -R ceph:ceph /var/lib/ceph/mon/; chmod -R 700 /var/lib/ceph/mon/
Перезапуск MON Запуск демона после восстановления каталога для подключения к кворуму systemctl restart ceph-mon@
Проверка состояния Подтверждение успешного присоединения к кворуму и корректного чтения карты кластера ceph -s; journalctl -u ceph-mon@

Восстановление с рабочей ноды гарантирует, что структура каталога, ключи и monmap будут актуальными. Это позволяет вернуть MON в работу без нарушения согласованности всего кластера.

Пересоздание MON-инстанса при потере данных и повторный bootstrap

Если каталог MON полностью потерян и восстановление из резервной копии невозможно, узел требуется пересоздать с повторным bootstrap. Это позволяет вернуть его в кластер без нарушений кворума.

Алгоритм действий:

  1. Остановить текущий MON, если он запущен: systemctl stop ceph-mon@<имя_узла>.
  2. Удалить повреждённый каталог: rm -rf /var/lib/ceph/mon/.
  3. Выполнить пересоздание MON с инициализацией файловой структуры: ceph-mon —mkfs -i <имя_узла> —monmap /var/lib/ceph/mon//monmap —keyring /var/lib/ceph/mon//keyring.
  4. Назначить права и владельца для нового каталога: chown -R ceph:ceph /var/lib/ceph/mon/, chmod -R 700 /var/lib/ceph/mon/.
  5. Запустить MON: systemctl start ceph-mon@<имя_узла> и проверить подключение к кворуму через ceph -s.
  6. Если узел не входит в кворум, проверить журналы /var/log/ceph/ceph-mon.<имя_узла>.log для выявления ошибок ключей или несоответствия мон-карты.

Этот процесс гарантирует восстановление структуры MON, корректную инициализацию каталога и повторное подключение к кластеру, исключая необходимость ручной правки файлов и минимизируя риск рассинхронизации.

Проверка карты кластера после восстановления MON и устранение расхождений

Проверка карты кластера после восстановления MON и устранение расхождений

После восстановления MON необходимо убедиться, что его карта кластера синхронизирована с остальными узлами. Несовпадение мон-карт приводит к отказу в кворуме и ошибкам доступа к объектам.

Для проверки применяются следующие шаги:

  • Проверить текущий статус кластера: ceph -s. Все MON должны быть в состоянии up и in.
  • Сравнить monmap проблемного узла с рабочими: ceph mon getmap -i /var/lib/ceph/mon/<имя_узла>/monmap. Проверить идентификаторы узлов и версии карты.
  • При расхождениях выполнить обновление карты: ceph mon add для повторного включения узла или ceph mon remove и добавление заново, если карта повреждена.
  • Проверить журнал MON на предмет ошибок: /var/log/ceph/ceph-mon.<имя_узла>.log. Сообщения о несоответствии monmap или отказе присоединения к кворуму указывают на необходимость пересоздания карты.
  • После устранения расхождений повторно выполнить ceph -s для подтверждения, что узел входит в кворум и доступен для операций чтения и записи.

Точное соответствие карты кластера гарантирует стабильную работу MON и предотвращает повторное появление сообщения no data available.

Вопрос-ответ:

Что означает сообщение «mon no data available» в Ceph и почему оно появляется?

Сообщение «mon no data available» указывает, что MON-демон не может прочитать своё локальное хранилище, включая файлы monmap, store.db и keyring. Причины могут быть связаны с повреждением каталога /var/lib/ceph/mon/, неправильными правами доступа, отсутствием ключа или рассинхронизацией времени между узлами. Без доступа к этим данным MON не может войти в кворум и участвовать в управлении картой кластера.

Какие шаги нужно выполнить для проверки состояния MON при появлении этой ошибки?

Первым шагом необходимо выполнить ceph -s для проверки статуса кластера и увидеть, какие MON активны. Далее стоит проверить журналы /var/log/ceph/ceph-mon.<имя_узла>.log на ошибки загрузки store.db и keyring. Затем проверить существование каталога мон-демона, права доступа (ceph:ceph), режим файлов (600–700) и корректность keyring. Также важно убедиться, что системное время синхронизировано через NTP или chrony.

Как восстановить MON, если каталог с данными повреждён или отсутствует?

Если каталог /var/lib/ceph/mon// повреждён, можно восстановить данные с резервной копии или скопировать каталог с работающего узла. После копирования необходимо назначить владельца и права: chown -R ceph:ceph и chmod -R 700. Затем перезапустить демон через systemctl start ceph-mon@<имя_узла> и проверить подключение к кворуму командой ceph -s.

Когда требуется пересоздание MON-инстанса и как выполнить повторный bootstrap?

Пересоздание MON требуется, если каталог полностью потерян и восстановить его невозможно. Для этого останавливают демон (systemctl stop ceph-mon@<имя_узла>), удаляют старый каталог, выполняют ceph-mon —mkfs -i <имя_узла> —monmap /путь/к/monmap —keyring /путь/к/keyring, устанавливают права доступа, затем запускают MON и проверяют подключение к кворуму. Это позволяет вернуть узел в кластер без нарушений согласованности карты.

Ссылка на основную публикацию