Счетчик монтирования не сбрасывается после автоматического запуска fsck при загрузке

Есть ПК с Xubuntu 15.10 (хитрый). Система настроена для запуска fsck на разделе, когда указанный раздел смонтирован 20 раз. После этого ожидаемое поведение - счетчик монтирования должен сбрасываться, но это не так. Это означает, что, поскольку число монтирований продолжает расти после 20, fsck запускается автоматически каждый раз при загрузке ПК.

tune2fs показывает, что состояние файловой системы чистое и smartctl не показывает никаких проблем.

Обходные пути, использовавшиеся до сих пор:

  • Используйте tune2fs -C для ручного сброса счетчика монтирования
  • Загрузитесь с Live CD и запустите fsck на разделе; похоже, это правильно сбрасывает счетчик монтирования после его завершения

Когда счетчик монтирования достигает 20 в следующий раз, проблема появляется снова: счетчик монтирования не сбрасывается после автоматического запуска fsck.

Я искал на этом сайте и в других местах, но не нашел указателей на то, что может быть причиной проблемы. Есть идеи?

Заранее спасибо.

2
задан 30 May 2016 в 06:48

1 ответ

После небольшого количества расследования я нашел, что проблема была в systemd-fsckd сервис, от systemd пакет. Во время записи версии, которые доступны в коварном и гостеприимном, кажется, содержат незаконный код (225-1ubuntu9 и 229-4ubuntu4 соответственно).

Решение

Поскольку сервис не необходим для корректной работы системы, простое решение просто отключает его путем выполнения этой команды:

systemctl mask systemd-fsckd.service systemd-fsckd.socket

Оборотная сторона - то, что теперь Плимут не сообщит fsck прогресс. На самом деле это даже не скажет пользователю, что проверка файловой системы идет полным ходом.

Объяснение

Немного фона от man страница сервиса:

systemd-fsckd.service является сервисом, ответственным за получение прогресса проверки файловой системы и передавание некоторых объединенных данных к консоли и Плимуту (при выполнении). Это также обрабатывает возможные отмены проверки.

systemd-fsckd получает сообщения о прогрессе проверки файловой системы с fsck на сокет домена UNIX [...]

Проблема с этим сервисом - то, что он использует hardcoded тайм-аут 30 секунд при выполнении epoll_wait на сокете для получения информации о прогрессе. Если fsck не сообщает прогресс меньше чем за 30 секунд, затем systemd-fsckd закрывает сокет и выходы с успехом, ничего не регистрируя насколько я видел.

В следующий раз, когда fsck записи в (теперь закрытый) снабжают сокетом для создания отчетов о прогрессе, он умирает с a SIGPIPE. Как fsck никогда концы, количество монтирования не сбрасывается затем.

2
ответ дан 30 May 2016 в 06:48

Другие вопросы по тегам:

Похожие вопросы: