systemd 缓慢启动 - systemd-tmpfiles-setup

systemd 缓慢启动 - systemd-tmpfiles-setup

最近我升级到 debian jessie(当前测试),之后平均启动时间增加到 3-4 分钟。

在开始之前grubgdm我会在 2-3 分钟内收到此消息。

A job is running for creating volatile and temporary files and directories

这是输出systemd-analyze blame

[smit: ~] $ systemd-analyze blame 
    3min 14.096s systemd-tmpfiles-setup.service
          8.657s NetworkManager.service
          8.244s apache2.service
          7.048s ModemManager.service
          6.328s networking.service
          6.004s accounts-daemon.service
          5.288s binfmt-support.service
          4.557s systemd-logind.service
          4.541s alsa-restore.service
          4.541s console-kit-log-system-start.service
          4.530s lm-sensors.service
          4.521s pppd-dns.service
          4.520s redis-server.service
          4.519s hostapd.service
          4.519s minissdpd.service
          4.519s timidity.service
          4.519s nvidia-kernel.service
          4.518s rc-local.service
          4.437s bluetooth.service
          4.408s avahi-daemon.service
          2.243s systemd-fsck-root.service
          1.437s exim4.service
          1.415s keyboard-setup.service

系统启动后,systemctl不会报告任何错误。

[smit: ~] $ sudo systemctl status systemd-tmpfiles-setup
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static)
   Active: active (exited) since Fri 2014-10-17 01:19:09 IST; 1h 41min ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 230 ExecStart=/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
 Main PID: 230 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/systemd-tmpfiles-setup.service

为什么systemd-tmpfiles-setup.service启动慢?在哪里可以获得详细的日志systemd-tmpfiles-setup.service

答案1

当 systemd 启动系统时,首先启动的服务单元之一是 systemd-tmpfiles-setup。该服务运行命令:

# systemd-tmpfiles --create --remove 

此命令从以下位置读取配置文件(首先不太相关):

  • /usr/lib/tmpfiles.d/*.conf- 这些文件由相关 RPM 包提供,不应由系统管理员编辑。
  • /run/tmpfiles.d/*.conf- 这些文件通常由守护进程用来管理它们自己的运行时临时文件
  • /etc/tmpfiles.d/*.conf- 这些文件供 sysadmis 配置自定义临时位置,并覆盖供应商提供的默认值

另外还有三个地方存储临时文件:

  • /var- 特定于该系统的可变数据应在启动之间保留
  • /跑步- 自上次启动以来启动的进程的运行时数据。其中包括进程 ID 文件和锁定文件等。该目录的内容将在重新启动时重新创建。
  • /tmp- 临时文件的世界可写空间。 10 天内未访问、更改或修改的文件将被自动删除。 /var/tmp 中存在另一个临时目录,其中超过 30 天未访问、更改或修改的文件将被自动删除。

加起来:
检查 tmp 配置文件以了解为什么 tmp 设置需要如此多的时间,特别是注意 /run 目录中的条目,因为它是在启动时重新创建的。

答案2

这是因为 chrome beta 和 cups 存在问题,它们在 /tmp 中创建了数百万个文件。如果 /tmp 是适合您的 tmpfs,请尝试卸载并重新安装它。否则, rm -rf /tmp 然后重新创建它。

答案3

systemd-tmpfiles 在网络启动之前启动,因此根据您的配置,systemd-tmpfiles 配置文件之一(位于 /usr/lib/tmpfiles.d 中)可能会尝试为用户或组创建一个目录,该目录仅当网络启动后才可在系统上使用,例如 LDAP 中定义的用户或组。

如果是这种情况,您应该将 systemd-tmpfiles-setup.service 移至网络之后启动。

相关内容