1

Может кто-нибудь сказать мне, на каком уровне запуска работает systemd, когда вас попросят проверить файловую систему после потери питания? Это аварийная ситуация или спасение или это зависит? У меня есть некоторые системные модули, которые должны работать, если / когда система запрашивает проверку файловой системы при загрузке. Я бы предпочел не изменять минимальную оболочку emergency.target для загрузки сценария, если мне это не нужно, поэтому я надеялся, что он работает в режиме восстановления.

Кроме того, если у кого-то есть отличный способ временно взломать файловую систему, чтобы я мог вызвать приглашение fsck для тестирования, я был бы очень признателен. Я попытался изменить /etc /fstab, однако он специально загружается в аварийный режим.

Большое спасибо за любую помощь.

1 ответ1

0

Обычно ни один - это часть обычного процесса загрузки.

Для файловых систем, перечисленных в /etc /fstab с ненулевым флагом "check", соответствующая единица .mount автоматически получает зависимость от systemd-fsck@<dev>.service . Когда эта служба завершается, systemd продолжает монтировать файловую систему (начиная модуль .mount). Это не особое состояние, а часть обычной очереди заданий.

Если происходит сбой службы fsck (например, требуется какое-то ручное восстановление), модуль .mount также дает сбой, и только в этом случае происходит переключение с обычной цели загрузки на emergency.target .

Как вы можете видеть, fsck запускается при каждой загрузке, и единственное, на что влияет потеря мощности, это сколько времени это займет. (Некоторые файловые системы имеют "грязный" бит, который устанавливается при монтировании и очищается при umount; другие обнаруживают состояние на основе необработанных записей в журнале обновлений.) Чтобы изменить это поведение, вам нужно изменить программу fsck.<fstype> или полностью отключить проверку этой файловой системы в fstab.

Чтобы запустить дополнительные сервисы до запуска systemd-fsck@<dev> (что происходит при каждой загрузке, прежде чем он решит, нужна ли расширенная проверка), используйте обычные методы расширения модуля systemd.

Обратите внимание, что корневая файловая система является особым случаем: в некоторых дистрибутивах она фактически проверяется в initramfs (ранняя фаза загрузки), пока основной процесс systemd еще не запущен. (В зависимости от дистрибутива initramfs может иметь свой собственный systemd или совсем другой init.) Опять же, fsck всегда запускается независимо от того, было ли отключение питания чистым или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .