Ubuntu 22.04 на mdadm RAID1 не загружается только с одним из дисков (деградированный массив).

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

У меня установлена Ubuntu 22.04 на сервере с двумя дисками, на которых:

  • EFI-разделы на обоих
  • следующий раздел для /boot/efi на обоих дисках
  • последний раздел – это raid1 с LVM и LV для /
sda                       8:0    0  931.5G  0 диск
├─sda1                    8:1    0      1G  0 раздел  /boot/efi
└─sda2                    8:2    0  930.5G  0 раздел
  └─md0                   9:0    0  930.3G  0 raid1
    └─md0p1             259:0    0  930.3G  0 раздел
      └─ssd-root        253:0    0     30G  0 lvm   /
sdb                       8:16   0  931.5G  0 диск
├─sdb1                    8:17   0      1G  0 раздел
└─sdb2                    8:18   0  930.5G  0 раздел
  └─md0                   9:0    0  930.3G  0 raid1
    └─md0p1             259:0    0  930.3G  0 раздел
      └─ssd-root        253:0    0     30G  0 lvm   /

Когда я отключаю один из дисков, чтобы симулировать отказ диска, я ожидаю, что ОС все еще сможет загрузиться и работать, а после повторного подключения диска, mdadm должен повторно синхронизировать диски. Но когда я отключаю один из дисков, ОС застревает при загрузке на md/raid1:md0: active with 1 out of 2 mirrors.

Я видел, что ранее были какие-то флаги grub и mdadm, чтобы включить BOOT_DEGRADED=true, но это больше не работает.

Не могли бы вы посоветовать мне, (1) возможно ли загрузиться с деградированного mdadm, и (2) как это можно сделать для Ubuntu 22.04 LTS?

Спасибо!

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

Ваша проблема заключается в том, что система на Ubuntu 22.04, установленная на программном RAID1 с использованием mdadm, не загружается, когда один из дисков отключен, что приводит к "деградированному" массиву. Это поведение действительно может быть неприятным, особенно учитывая, что одна из основных целей RAID1 – обеспечение избыточности и возможности продолжить работу в случае отказа одного из дисков. Давайте разберём эту ситуацию и предложим возможные решения.

Теория

RAID1 представляет собой зеркалирование, где данные дублируются на нескольких дисках. Таким образом, если один диск выходит из строя, данные все еще могут быть доступны на другом. Однако для системного загрузчика и операционной системы важно, чтобы конфигурация загрузки поддерживала работу в "деградированном" режиме. Это требует корректной настройки загрузчика (например, GRUB) и mdadm.

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

  1. EFI-загрузбочники: Оба диска имеют корректно настроенные загрузочные записи, что уже сделано в вашей системе, так как вы указали наличие EFI-разделов на обоих дисках.

  2. Поддержка mdadm: Убедиться, что конфигурация mdadm инициализирует массив RAID в деградированном состоянии.

  3. GRUB: GRUB должен быть настроен так, чтобы поддерживать загрузку в случае отказа одного из дисков.

Примеры

Основная ошибка, на которую указывает ваш лог – "md/raid1:md0: active with 1 out of 2 mirrors", означает, что массив активен, но работает только с одним из двух дисков. Для GRUB потребуется дополнительная настройка, чтобы учитывать такие состояния.

Ранее использовалась опция BOOT_DEGRADED=true в файле конфигурации mdadm, которая указывала, что система должна пытаться загружаться даже при деградировании массива. Однако в последних версиях программного обеспечения могли произойти изменения, которые требуют других подходов.

Применение

  1. Обновление GRUB: Убедитесь, что both диски имеют установленный и обновленный GRUB. Это можно сделать с помощью команды:

    sudo grub-install /dev/sda
    sudo grub-install /dev/sdb
    sudo update-grub

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

  2. Конфигурация mdadm: Проверьте файл /etc/mdadm/mdadm.conf. Он должен содержать информацию о вашем RAID-массиве. Типичная строка может выглядеть так:

    ARRAY /dev/md0 UUID=<UUID_ARRAY> devices=/dev/sda2,/dev/sdb2

    Обновите данный файл, если такая строка отсутствует, заменив <UUID_ARRAY> на актуальный идентификатор вашего массива.

  3. Загрука в деградированном режиме: Раньше, как вы отметили, существовала опция BOOT_DEGRADED=true. Теперь, чтобы система могла загружаться в деградированном режиме, возможно, потребуется редактировать настройки в GRUB. Можно попытаться принудительно указать загрузчику игнорировать состояния массивов, добавив в конфигурацию GRUB (редактируя /etc/default/grub):

    GRUB_CMDLINE_LINUX="bootdegraded=true"

    После этого обновите GRUB:

    sudo update-grub
  4. Убедитесь в правильности сбора initramfs: Чтобы быть уверенным, что изменения применились, пересоберите initramfs:

    sudo update-initramfs -u
  5. Тестирование:

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

Если все вышеупомянутое было проделано и система по-прежнему не загружается, возможно, потребуется детально изучить логи загрузки для выявления других специфичных ошибок или проблем. Используйте режим восстановления для загрузки системы и анализа логов, таких как /var/log/syslog или получение дополнительных данных из команды journalctl -xe.

Заключение

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

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

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