На безголовом встроенном компьютере (загружаемом в файловой системе только для чтения) я вижу, что systemd-tmpfiles-setup.service работает довольно медленно и не позволяет другим службам запускаться раньше (я проверял с помощью systemctl list-dependencies myservice.service). ).

Как ускорить работу с файловой системой только для чтения?

journalctl -u systemd-tmpfiles-setup.service также подтверждает, что это занимает почти 4 секунды:

-- Logs begin at Sat 2021-12-11 01:55:43 GMT, end at Sat 2021-12-11 01:58:03 GMT. --
Dec 11 01:55:**43** foo systemd[1]: Starting Create Volatile Files and Directories...
Dec 11 01:55:**47** foo systemd-tmpfiles[149]: **rm_rf(/tmp): Read-only file system**
Dec 11 01:55:47 foo systemd-tmpfiles[149]: symlink(/etc/machine-id, /var/lib/dbus/machine-id) failed: Read-only file system
Dec 11 01:55:47 foo systemd-tmpfiles[149]: symlink(../proc/self/mounts, /etc/mtab) failed: Read-only file system
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'coredump': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.X11-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.ICE-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.XIM-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.font-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.Test-unix': No such file or directory
Dec 11 01:55:47 foo systemd[1]: Started Create Volatile Files and Directories.

Вот результат systemd-analyze plot:

enter image description here

1
Basj 14 Дек 2021 в 22:50
1
Это заставляет меня задаться вопросом (пустое предположение), использует ли он какой-то файл состояния для отслеживания «tmpfiles» и их возраста, и — при отсутствии этого файла или при наличии старого файла состояния — он вынужден повторно сканировать файловая система(ы).
 – 
Jeff Schaller
15 Дек 2021 в 15:44
Это действительно возможно, хорошая идея!
 – 
Basj
15 Дек 2021 в 16:15
Другая возможность заключается в том, что он пытается прикоснуться к файлам или записать их, и время ожидания истекает / повторяется, что приводит к потере некоторого времени. Я начал просматривать источник, но не могу видеть это полностью прямо сейчас.
 – 
Jeff Schaller
15 Дек 2021 в 16:17
О да, это тоже может быть причиной! Спасибо! Есть ли что-нибудь задокументированное о корневых файловых системах только для чтения? Я думаю, что это довольно распространенный вариант использования, поэтому systemd-tmpfiles-setup.service, вероятно, должен где-то обрабатывать его?
 – 
Basj
15 Дек 2021 в 16:59
Конечно, рад помочь продвинуться к ответу! Я не настолько углубился в systemd-tmpfiles, чтобы сказать так или иначе, извините!
 – 
Jeff Schaller
15 Дек 2021 в 17:01

1 ответ

Поскольку systemd-tmpfiles-setup.service определен в /usr/lib/systemd/..., я использовал метод "маскирования" из статьи "Три уровня отключения":

Связывая файл службы с /dev/null, вы указываете systemd никогда не запускать данную службу и полностью блокируете ее выполнение. Файлы модулей, хранящиеся в /etc/systemd/system, переопределяют файлы из /lib/systemd/system, носящие то же имя. Первый каталог является территорией администратора, второй — территорией вашего менеджера пакетов. Установив свою символическую ссылку в /etc/systemd/system/ntpd.service, вы, следовательно, убедитесь, что systemd никогда не будет читать исходный служебный файл /lib/systemd/system/ntpd.service.

Я сделал

ln -s /dev/null /etc/systemd/system/systemd-tmpfiles-setup.service

Мне все еще интересно, есть ли «более умное решение», чтобы заставить systemd-tmpfiles-setup.service работать даже в системах только для чтения, не ожидая 4 секунды впустую. Идеи приветствуются в комментариях или другом ответе!

0
Basj 15 Дек 2021 в 16:14