Ubuntu 18.04 ВМ в режиме экстренной/технической службы из-за сбоя поврежденного RAID-диска

Вопрос или проблема

У меня есть виртуальная машина, к которой подключено устройство с RAID, с записью в fstab:

/dev/md127 /mnt/blah ext4 nofail 0 2

Диски в RAID повреждены, и во время загрузки система вошла в режим экстренной/технической поддержки, что означает, что только локальный пользователь может выйти из этого режима и запуститься нормально. Во время нормальной загрузки в syslog произошло следующее:

systemd-fsck[1272]: /dev/md127 содержит файловую систему с ошибками, проверка принудительна.
systemd-fsck[1272]: /dev/md127: найдены иноды, которые были частью поврежденного списка зависших.
systemd-fsck[1272]: /dev/md127: НЕОЖИДАЕМАЯ НЕСООТВЕТСТВИЕ; ЗАПУСТИТЕ fsck ВРУЧНУЮ.
systemd-fsck[1272]: #011(т.е. без опций -a или -p)
systemd-fsck[1272]: fsck завершился с кодом выхода 4.
systemd-fsck[1272]: Запуск запроса emergency.target/start/replace
systemd[1]: [email protected]: основной процесс завершился, код=выход, статус=1/ОШИБКА
systemd[1]: [email protected]: завершился с результатом 'код выхода'.
systemd[1]: Не удалось запустить проверку файловой системы на /dev/md127.
systemd[1]: Ошибка зависимости для /mnt/blah.
systemd[1]: Ошибка зависимости для демона Provisioner client.

Мое предположение заключается в том, что ОС переходит в режим экстренной/технической поддержки из-за поврежденных дисков RAID:

systemctl --state=failed
  UNIT                           LOAD   ACTIVE SUB    DESCRIPTION                                            
● [email protected] загружен, ошибка, ошибка Проверка файловой системы на /dev/md127

Что я хочу – так это чтобы виртуальная машина запускалась, независимо от того, повреждены диски RAID или нет, поэтому она не должна переходить в режим экстренной/технической поддержки. Я следовал этим постам, чтобы попытаться отключить режим экстренной/технической поддержки:

Сначала мне нужно было создать каталог local-fs.target.d в /etc/systemd/system/, что показалось неправильным. Затем я создал файл nofail.conf в /etc/systemd/system/local-fs.target.d/nofail.conf, содержащий:

[Unit]
OnFailure=

После загрузки этого файла я смог подтвердить, что этот файл был найден local-fs.target:

sudo systemctl status local-fs.target 
● local-fs.target - Локальные файловые системы
   Загружен: загружен (/lib/systemd/system/local-fs.target; статичный; предустановленный поставщиком: включен)
  Drop-In: /etc/systemd/system/local-fs.target.d
           └─nofail.conf
   Активен: активен с Вт 2019-01-08 12:36:41 UTC; 3ч 55мин назад
     Документы: man:systemd.special(7)

НО, после перезагрузки виртуальная машина все еще закончила в режиме экстренной/технической поддержки. Я что-то упустил? Решение с nofail.conf не работает с RAID-дисками?


ИЗМ. Я смог получить распечатку логов, когда система загрузилась в режим экстренной поддержки (извините, это скриншот, так как у меня нет доступа к хосту, и мне пришлось попросить владельца об этом):

введите описание изображения здесь

Вот вывод из systemctl для systemd-fsck@dev-md127:

 sudo systemctl status --no-pager --full systemd-fsck@dev-md127
 ● [email protected] - Проверка файловой системы на /dev/md127
    Загружен: загружен (/lib/systemd/system/[email protected]; статичная; предустановленная поставщиком: включена)
    Активен: завершился с ошибкой (Результат: код выхода) с Чт 2019-01-10 12:05:44 UTC; 2ч 57мин назад
      Документы: man:[email protected](8)
   Процесс: 1025 ExecStart=/lib/systemd/systemd-fsck /dev/md127 (код=выход, статус=1/ОШИБКА)
  Основной PID: 1025 (код=выход, статус=1/ОШИБКА)

 systemd[1]: Начало проверки файловой системы на /dev/md127...
 systemd-fsck[1025]: /dev/md127 содержит файловую систему с ошибками, проверка принудительна.
 systemd-fsck[1025]: /dev/md127: найдены иноды, которые были частью поврежденного списка зависших.
 systemd-fsck[1025]: /dev/md127: НЕОЖИДАЕМАЯ НЕСООТВЕТСТВИЕ; ЗАПУСТИТЕ fsck ВРУЧНУЮ.
 systemd-fsck[1025]:         (т.е. без опций -a или -p)
 systemd-fsck[1025]: fsck завершился с кодом выхода 4.
 systemd-fsck[1025]: Запуск запроса emergency.target/start/replace
 systemd[1]: [email protected]: основной процесс завершился, код=выход, статус=1/ОШИБКА
 systemd[1]: [email protected]: завершился с результатом 'код выхода'.
 systemd[1]: Не удалось запустить проверку файловой системы на /dev/md127.

Как я уже упоминал ранее, у меня установлено nofail в /etc/fstab. Теперь вопросы:

  1. Что за зависимость в неудавшейся зависимости на скриншоте?
  2. Если fsck не удалось на /dev/md127, почему система переходит в режим экстренной поддержки и как это отключить?

ИЗМ 2:

Несколько других моментов, которые я могу добавить:

  1. виртуальная машина является виртуальной машиной kvm
  2. это программный RAID

С наилучшими пожеланиями, Анкур

Ваша система попыталась исправить повреждение и автоматически загрузиться, но не смогла. Вот почему она вошла в режим экстренной поддержки.

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

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

  • Не повреждайте файловую систему. Отключайте ее нормально, а не выключайте виртуальную машину прямо во время записи данных.
  • Не монтируйте файловую систему автоматически (установите noauto в /etc/fstab). Виртуальная машина запустится, но вам все равно придется позже вручную подключить файловую систему.
  • Перейдите на более устойчивую файловую систему, такую как XFS.

systemd не учел nofail при неудаче fsck из-за ошибки. Я исправил это в systemd 250 и далее.

Если вы застряли на более старой версии systemd, я думаю, у вас есть только один вариант – не использовать двоичный файл /lib/systemd/systemd-fsck. Возможно, не указывать файловую систему в /etc/fstab, вместо этого создав свой собственный unit systemd для fsck и монтирования.

Ответ или решение

Проблема с поврежденным RAID-носителем на Ubuntu 18.04: Решение и рекомендации

Вы столкнулись с трудной ситуацией, когда ваша виртуальная машина (VM) на основе Ubuntu 18.04 попадает в режим восстановления (или экстренный режим) из-за ошибок на RAID-устройстве, подключенном к системе. В этом ответе мы рассмотрим причины этой проблемы, шаги для ее устранения и рекомендации для предотвращения подобного в будущем.

1. Причины возникновения проблемы

При загрузке вашей системы система обнаружила повреждения на RAID-носителе /dev/md127, что привело к вызову fsck (инструмента для проверки файловых систем). Как видно из логов, система сообщает о следующих проблемах:

  • Ошибки в файловой системе: "UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY".
  • Зависимости: Система не может осуществить загрузку в обычном режиме, так как файловая система, на которую указывает /etc/fstab, не может быть смонтирована.

2. Причины перехода в экстренный режим

Вы правы в своем понимании того, что наличие ошибок на RAID-дисках является основной причиной перехода системы в экстренный режим. Система не может демонтировать поврежденный носитель, и, следовательно, загрузка продолжается в безопасном режиме. Указание на nofail в fstab не позволяет избежать перехода в экстренный режим в случае, если fsck завершился с ошибкой.

3. Решение проблемы

Шаг 1: Выполнение fsck вручную

Вы должны перезапустить систему и вручную выполнить проверку файловой системы:

  1. Загрузитесь в экстренный режим.
  2. Выполните команду fsck на устройстве RAID:
    fsck /dev/md127

    В процессе могут появляться запросы на исправление ошибок.

Шаг 2: Изменение настроек монтирования

Для предотвращения перехода в экстренный режим в будущем вы можете сделать следующее:

  • Уберите запись о RAID из /etc/fstab, если вам не требуется автоматическое монтирование. Это позволит системе загружаться без зависимостей на файловую систему.
  • Если вам нужно сохранить запись в fstab, замените nofail на noauto. Это отключит автоматическое монтирование при загрузке.

Пример строки для /etc/fstab:

/dev/md127 /mnt/blah ext4 noauto 0 2

Шаг 3: Использование альтернативных файловых систем

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

4. Рекомендации по профилактике

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

  • Избегайте необдуманных выключений: Убедитесь, что система корректно выключается и не происходит отключений питания во время записи данных.
  • Регулярные резервные копии: Создавайте резервные копии критически важных данных. Используйте инструменты автоматизации резервного копирования, такие как rsync или специализированные решения для виртуальных машин.
  • Мониторинг состояния RAID: Используйте инструменты мониторинга, такие как mdadm, для отслеживания состояния RAID и предотвращения возможных сбоев системы.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...