SystemD не удается смонтировать файловую систему Plan9 (9pfs) при запуске виртуальной машины.

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

Я столкнулся с проблемой, когда моя виртуальная машина Ubuntu 17.04 переходила в режим обслуживания при каждой загрузке. Однако, если я нажимал Ctrl-D или выходил из оболочки обслуживания и продолжал загрузку, система запускалась нормально, без неудачных заданий.

В конечном итоге я сузил проблему до моего виртуального файлового системы 9pfs. Задание зависало без видимых причин. Запуск его вручную из режима обслуживания проходил успешно. Включение отладки для SystemD не давало более полезных ошибок.

Решение заключается в редактировании параметров монтирования в /etc/fstab для монтирования 9pfs и добавлении noauto,x-systemd.automount. Это задержит монтирование достаточной, чтобы избежать возможного состояния соревнования, вызывающего ошибку.

Пример записи fstab

4tb /mnt/4tb 9p trans=virtio,rw,noauto,x-systemd.automount 0 0

https://forums.freenas.org/index.php?threads/9p-mounts-in-linux-vm-fail-at-boot-but-succeed-moments-later.52413/

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

Система инициализации SystemD представляет собой современный механизм управления службами и процессами на системах Linux. Однако, несмотря на её автоматизированную природу, иногда возникают ситуации, когда определённые файловые системы, как Plan9 Filesystem (9pfs), оказываются подвержены проблемам при автоматическом маунте при загрузке в виртуальной машине. Давайте разберёмся, почему возникает такая проблема и как её можно исправить.

Теория

Plan9 Filesystem (9pfs) часто используется в виртуальных средах, таких как QEMU/KVM, чтобы обеспечить эффективный и гибкий способ обмена файлами между хостовой и гостевой системами. При использовании в Linux-системах в сочетании с SystemD, время монтирования файловой системы может стать критическим фактором, особенно с учётом параллельной природы работы SystemD. Распределённые файлы 9p часто зависят от сетевых компонентов и других сопутствующих служб, которые могут не быть полностью готовы к моменту инициализации монтирования.

Когда виртуальная машина под управлением Ubuntu 17.04 переходит в режим обслуживания из-за ошибки монтирования 9pfs, это обычно указывает на проблему синхронизации. Ошибка не является фатальной, поскольку система продолжает загружаться нормально после нажатия Ctrl-D. Основной причиной может быть состояние гонки (race condition), инициированное попыткой монтирования файловой системы до того, как все необходимые зависимости станут доступны.

Пример

Рассмотрим реальный случай, когда Ubuntu 17.04 VM входит в режим обслуживания при каждой загрузке из-за ошибки монтирования 9pfs. Пользователь, столкнувшийся с этой проблемой, смог выявить, что асинхронное поведение службы SystemD приводит к тому, что попытки монтирования происходят до готовности необходимых сетевых компонентов. Запуск монтирования вручную в режиме обслуживания срабатывает без ошибок, подтверждая проблему синхронизации.

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

Применение

Для решения такой проблемы оптимальным решением будет изменить конфигурацию монтирования файловой системы в файле /etc/fstab, чтобы использовать отложенную загрузку. Добавление опций noauto,x-systemd.automount позволяет избежать несвоевременных попыток монтирования, инициируя их тогда, когда все зависимости готовы.

Эти опции модифицируют поведение SystemD таким образом:

  • noauto: Предотвращает автоматическое монтирование файловой системы при загрузке инициаторами традиционного init-сценария, позволяя избежать преждевременной инициализации.

  • x-systemd.automount: Создает точку автоматического монтирования, которая обеспечивает, что операции происходят только по запросу, предоставляя время для полной инициализации всех зависимостей.

Пример записи в fstab:

4tb        /mnt/4tb    9p  trans=virtio,rw,noauto,x-systemd.automount  0   0

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

Заключение

Управление монтированием 9pfs в комбинации с SystemD требует учёта особенностей данной файловой системы и сетевых зависимостей. Использование опций отложенного монтирования позволяет избежать состояния гонки, ведущего к переходу системы в режим обслуживания. Принятие таких мер гарантирует не только успешное устранение ошибки, но и общий рост надёжности системы через более гибкую настройку процессов инициализации. изучение применимости и внедрение предложенного решения можно рассматривать как пример грамотного подхода к управлению проблемами виртуализации и обеспечения её стабильности.

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

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