systemd の起動が遅い - systemd-tmpfiles-setup

systemd の起動が遅い - systemd-tmpfiles-setup

最近、Debian Jessie (現在テスト中) にアップグレードしたところ、平均起動時間が 3 ~ 4 分に増加しました。

grub開始から終了までの間にgdm、このメッセージが 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 がシステムを起動すると、最初に起動されるサービス ユニットの 1 つが systemd-tmpfiles-setup です。このサービスは次のコマンドを実行します。

# systemd-tmpfiles --create --remove 

このコマンドは、次の設定ファイルを読み取ります (あまり重要ではないものから順に):

  • /usr/lib/tmpfiles.d/*.conf- これらのファイルは関連する RPM パッケージによって提供されるため、システム管理者が編集することはできません。
  • /run/tmpfiles.d/*.conf- これらのファイルは通常、デーモンが独自のランタイム一時ファイルを管理するために使用されます。
  • /etc/tmpfiles.d/*.conf- これらのファイルは、システム管理者がカスタムの一時場所を構成し、ベンダーが提供するデフォルトを上書きするためのものです。

また、一時ファイルが保存される場所は 3 つあります。

  • /var- 起動後も保持されるこのシステム固有の変数データ
  • /走る- 前回の起動以降に開始されたプロセスの実行時データ。これには、プロセス ID ファイルやロック ファイルなどが含まれます。このディレクトリの内容は、再起動時に再作成されます。
  • /tmp- 一時ファイル用のワールド書き込み可能スペース。10 日間アクセス、変更、修正されていないファイルは自動的に削除されます。/var/tmp には別の一時ディレクトリがあり、30 日以上アクセス、変更、修正されていないファイルは自動的に削除されます。

まとめ:
tmp 設定ファイルをチェックして、tmp セットアップに時間がかかる理由を調べます。特に、/run ディレクトリのエントリに注意してください。これは、起動時に再作成されるためです。

答え2

これは、Chrome ベータ版と CUPS で /tmp に何百万ものファイルが作成されるという問題があったためです。/tmp が tmpfs である場合は、アンマウントして再マウントしてみてください。それ以外の場合は、rm -rf /tmp を実行して再作成してください。

答え3

systemd-tmpfiles はネットワークより先に起動するため、設定によっては、systemd-tmpfiles 設定ファイルの 1 つ (/usr/lib/tmpfiles.d にある) が、LDAP で定義されたユーザーやグループなど、ネットワークが起動したときにのみシステムで使用できるユーザーまたはグループのディレクトリを作成しようとしている可能性があります。

その場合は、systemd-tmpfiles-setup.service をネットワークの後に開始するように移動する必要があります。

関連情報