Устранение проблем с загрузкой виртуальных машин Linux из-за ошибок fstab
Область применения: ✔️ виртуальные машины Linux
Примечание.
CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
Таблица файловой системы Linux ( fstab) — это таблица конфигурации, предназначенная для настройки правил, в которых определенные файловые системы обнаружены и подключены в порядке во время процесса загрузки системы.
В этой статье рассматриваются несколько условий, когда неправильной конфигурации fstab может привести к проблемам загрузки и предоставляет рекомендации по устранению неполадок.
Ниже приведены некоторые распространенные причины, которые могут привести к проблемам загрузки виртуальной машины из-за неправильной настройки fstab:
- Традиционное имя файловой системы используется вместо универсального уникального идентификатора (UUID) файловой системы.
- Используется неверный идентификатор UUID.
- Запись существует для неподключаемого устройства без
nofail
параметра в конфигурации fstab. - Неправильная запись в конфигурации fstab.
Определение проблем fstab
Проверьте текущее состояние загрузки виртуальной машины в последовательном журнале в колонке "Загрузочный диагностика" в портал Azure. Виртуальная машина будет находиться в режиме чрезвычайной ситуации. Вы увидите записи журнала, которые похожи на следующий пример, что приводит к состоянию режима чрезвычайной ситуации:
[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)
Примечание.
/data
пример используемой точки подключения. Сбой зависимостей для точки подключения файловой системы будет отличаться в зависимости от используемых имен.
Решение
Эту проблему можно решить двумя способами.
- Восстановление виртуальной машины в Сети
- Восстановление виртуальной машины в автономном режиме
Восстановление виртуальной машины в Сети
Использование последовательной консоли
- Подключитесь к последовательной консоли виртуальной машины из портал Azure.
- Для перенастройки fstab требуется ручной доступ к однопользовательским режиму. Действия могут отличаться в зависимости от типа используемой ОС Linux и доступа к корневой учетной записи. Следуйте документации по однопользовательским режимам , чтобы получить доступ к одному пользователю для каждого поддерживаемого образа партнера Linux.
Действия по устранению неполадок Fstab
После загрузки виртуальной машины в однопользовательском режиме. Откройте fstab-файл с помощью избранного текстового редактора.
vi /etc/fstab
Просмотрите перечисленные файловые системы в
/etc/fstab
. Каждая строка в fstab-файле указывает файловую систему, подключенную при запуске виртуальной машины. Дополнительные сведения о синтаксисе fstab-файла выполнитеman fstab
команду. Чтобы устранить сбой загрузки, просмотрите запись для файловой системы, которая не смогла подключиться. Рекомендуется просмотреть каждую строку, чтобы убедиться, что она правильна как в структуре, так и в содержимом. Ниже приведены некоторые моменты, которые следует учитывать для правильного администрирования файла fstab:Поля в каждой строке разделены вкладками или пробелами. Пустые строки не учитываются. Строки с знаком числа (#) в качестве первого символа являются комментариями. Закомментированные строки могут оставаться в файле fstab, но они не будут обработаны. Рекомендуется закомментировать строки fstab, которые не уверены в том, что они не удаляются.
Подключите диски данных на виртуальных машинах Azure с помощью UUID секции файловой системы. Чтобы определить идентификатор UUID файловой системы, выполните
blkid
команду. Дополнительные сведения о синтаксисе выполнитеman blkid
команду. Пример записи UUID в fstab-файле:UUID=<UUID number here> /data xfs defaults,nofail 0 0
nofail
Используйте параметр в записях файловой системы (дисках данных), чтобы включить запуск даже после возникновения ошибок в секциях для соответствующих записей. Этотnofail
параметр помогает убедиться, что виртуальная машина запускается, даже если файловая система повреждена или не существует при запуске.
Сохраните изменения в fstab-файле.
Используйте
mount -a
в качестве рекомендации после внесения изменений в записи fstab. Это повторно запустите конфигурацию fstab и уведомит пользователей о любых существующих ошибках синтаксиса или записи.После проверки синтаксиса и записей перезагрузите виртуальную машину с помощью следующей команды:
reboot -f
Если записи комментариев или исправлений были успешными, система должна получить запрос bash на портале. Проверьте, можно ли подключиться к виртуальной машине.
Примечание.
Вы также можете использовать
ctrl+x
команду, которая также перезагрузит виртуальную машину.
Автономное восстановление виртуальной машины
Если доступ к последовательной консоли виртуальной машины недоступен, альтернативным решением является восстановление виртуальной машины в автономном режиме. Существует два способа использовать автономный подход.
Использование автоматического восстановления Azure Linux (ALAR)
Скрипты автоматического восстановления Azure Linux (ALAR) являются частью расширения восстановления виртуальной машины, описанного в статье "Использование автоматического восстановления Azure Linux (ALAR) для исправления виртуальной машины Linux. ALAR охватывает автоматизацию нескольких сценариев восстановления, включая /etc/fstab
проблемы.
Скрипты ALAR используют расширение repair-button
восстановления для устранения проблем с fstab, указав --button-command fstab
. Этот параметр активирует автоматическое восстановление. Выполните следующие действия, чтобы автоматизировать ошибки fstab с помощью автономного подхода ALAR:
az vm repair repair-button --button-command fstab --verbose rgtest --name vmtest
Примечание.
- Замените имя группы ресурсов и имя
rgtest
vmtest
виртуальной машины соответствующим образом. - Сценарий восстановления виртуальной машины в сочетании со скриптом ALAR временно создаст группу ресурсов, виртуальную машину восстановления и копию диска ОС затронутой виртуальной машины. Он резервирует исходный файл /etc/fstab и изменяет его, удалив или закомментируя записи файловой системы данных, которые не требуются для загрузки системы.
- После успешного запуска ОС просмотрите и измените файл /etc/fstab , чтобы устранить любые ошибки, которые могли бы предотвратить правильную перезагрузку. Наконец, скрипт автоматически удаляет группу ресурсов,
repair-button
содержащую виртуальную машину восстановления.
Использование ручного метода
Если последовательная консоль и подходы ALAR не возможны или завершаются сбоем, необходимо выполнить восстановление вручную. Выполните действия, описанные здесь, чтобы вручную подключить диск ОС к виртуальной машине восстановления и переключите диск ОС обратно на исходную виртуальную машину:
- Подключите диск ОС к виртуальной машине восстановления с помощью портал Azure
- Присоединение диска ОС к виртуальной машине восстановления с помощью Azure CLI
После успешного подключения диска ОС к виртуальной машине восстановления следуйте подробным инструкциям по подключению и chroot к файловой системе подключенного диска ОС. Затем реализуйте действия по устранению неполадок fstab, чтобы внести соответствующие изменения в fstab-файл проблемного диска ОС.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.