Поделиться через


Устранение неполадок с загрузкой виртуальной машины Linux из-за ошибок fstab

Область применения: ✔️ виртуальные машины Linux

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Таблица файловой системы Linux fstab — это таблица конфигурации, предназначенная для настройки правил, в которых определенные файловые системы обнаруживаются и подключаются последовательно во время процесса загрузки системы. В этой статье рассматривается несколько условий, в которых неправильная конфигурация fstab может привести к проблеме загрузки и предоставляет рекомендации по устранению неполадок.

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

  • Традиционное имя файловой системы используется вместо универсального уникального идентификатора (UUID) файловой системы.
  • Используется неверный идентификатор UUID.
  • Запись существует для неподключаемого устройства без nofail параметра в конфигурации fstab.
  • Неправильная запись в конфигурации fstab.

Определение проблем fstab

Проверьте текущее состояние загрузки виртуальной машины в последовательном журнале в колонке [Boot диагностика] (/azure/virtual-machines/boot-диагностика#boot-диагностика-view) в портал 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" — это пример используемой точки подключения. Сбой зависимостей для точки подключения файловой системы будет отличаться в зависимости от используемых имен.

Разрешение

Существует 2 способа устранения проблемы:

Восстановление виртуальной машины в Сети

Использование последовательной консоли

  1. Подключитесь к последовательной консоли виртуальной машины из портал Azure.
  2. Для перенастройки fstab требуется ручной доступ к одному пользовательскому режиму. Действия могут отличаться в зависимости от типа операционной системы Linux, используемой и доступа к корневой учетной записи. Следуйте документации по одному пользовательскому режиму, чтобы получить доступ к одному пользовательскому режиму для каждого поддерживаемого образа партнера Linux.
Действия по устранению неполадок Fstab
  1. После загрузки виртуальной машины в одном пользовательском режиме. Откройте fstab-файл с помощью избранного текстового редактора.

    vi /etc/fstab
    
  2. Просмотрите перечисленные файловые системы в /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 параметр помогает убедиться, что виртуальная машина запускается, даже если файловая система повреждена или не существует при запуске.

  3. Сохраните изменения в fstab-файле.

  4. Используйте mount -a в качестве рекомендации после внесения изменений в записи fstab. Это повторно запустите конфигурацию fstab и уведомит пользователей о любых существующих ошибках синтаксиса или записи.

  5. После проверки синтаксиса и записей перезагрузите виртуальную машину с помощью следующей команды.

    reboot -f
    
  6. Если записи комментариев или исправлений были успешными, система должна получить запрос bash на портале. Проверьте, можно ли подключиться к виртуальной машине.

Примечание.

Вы также можете использовать команду CTRL+X, которая также перезагрузит виртуальную машину.

Автономное восстановление виртуальной машины

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

Использование автоматического восстановления Azure Linux (ALAR)

Скрипты автоматического восстановления Azure (ALAR) — это часть расширения восстановления виртуальной машины, описанного в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure. ALAR охватывает автоматизацию нескольких сценариев восстановления, включая /etc/fstab проблемы.

Скрипты ALAR используют команду расширения run восстановления и ее --run-id параметр. Идентификатор скрипта для автоматического восстановления: linux-alar2. Выполните следующие действия, чтобы автоматизировать ошибки fstab с помощью автономного подхода ALAR:

az vm repair create --verbose -g centos7 -n cent7 --repair-username rescue --repair-password 'password!234' --copy-disk-name  repairdiskcopy
az vm repair run --verbose -g centos7 -n cent7 --run-id linux-alar2 --parameters fstab --run-on-repair
az vm repair restore --verbose -g centos7 -n cent7

Примечание.

Имя группы ресурсов "centos7, имя виртуальной машины "cent7" и --copy-disk-name "repairdiskcopy" являются примерами и значениями, которые необходимо изменить соответствующим образом.

Скрипт восстановления fstab создаст резервную копию исходного файла и отключит строки в файле /etc/fstab, который не требуется для загрузки системы. После успешного запуска ОС измените fstab еще раз и исправьте все ошибки, которые не позволили перезагрузке системы раньше.

Кроме того, после создания виртуальной машины восстановления изменения также могут быть реализованы вручную, войдите в виртуальную машину восстановления, подключив присоединенную копию диска ОС и внося изменения в его файл fstab. Выполните следующие действия.

  • Создайте виртуальную машину восстановления с помощью az vm repair create команды.
  • Чтобы подключить и хронотировать к файловой системе подключенного диска ОС на виртуальной машине спасения, следуйте подробным инструкциям по chroot.
  • Затем выполните те же действия по устранению неполадок fstab, что и выше.
  • После применения az vm repair restore изменений можно использовать команду для автоматического переключения дисков ОС с исходной виртуальной машиной.

Использование ручного метода

Если подход последовательной консоли и ALAR невозможен или завершается сбоем, необходимо выполнить восстановление вручную. Выполните действия, описанные здесь, чтобы вручную подключить диск ОС к виртуальной машине восстановления и переключите диск ОС обратно на исходную виртуальную машину:

После успешного подключения диска ОС к виртуальной машине восстановления следуйте подробным инструкциям по подключению и chroot к файловой системе подключенного диска ОС. Затем реализуйте действия по устранению неполадок fstab, чтобы внести соответствующие изменения в fstab-файл проблемного диска ОС.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или помощь, создайте запрос на поддержку или попросите сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.