Systemd

“systemd-tmpfiles-setup.service”在只讀文件系統上執行緩慢

  • December 15, 2021

在無頭嵌入式電腦上(在只讀文件系統上啟動),我發現這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

在此處輸入圖像描述

由於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 秒。歡迎在評論或其他答案中提出想法!

引用自:https://unix.stackexchange.com/questions/681475