CentOS 7ではまったこと:/var/run直下のディレクトリが消える
CentOS7 系の /var/run ディレクトリは /run ディレクトリのシンボリックリンク、
実態の/runディレクトリは tmpfs ファイルシステムでマウントされています。
$ ls -ld /var/run lrwxrwxrwx. 1 root root 6 2月 18 2016 /var/run -> ../run $ df -k ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root 8869888 1055424 7814464 12% / devtmpfs 498144 0 498144 0% /dev tmpfs 508388 0 508388 0% /dev/shm tmpfs 508388 6600 501788 2% /run tmpfs 508388 0 508388 0% /sys/fs/cgroup /dev/vda1 508588 126316 382272 25% /boot tmpfs 101680 0 101680 0% /run/user/0
ちなみに CentOS6系の/var/runは実在するディレクトリです。
$ ls -ld /var/run drwxr-xr-x. 14 root root 4096 4月 5 17:14 2017 /var/run
よって、OSを再起動すると、/run (/var/run)に置かれたファイル・ディレクトリは全て削除されてしまいます。
今回は ZabbixAgentd の PID ファイル(/var/run/zabbix/zabbix_agentd.pid)が作れず起動失敗していたことで発覚しました。
対応方法
systemd の systemd-tempfiles に要因
システム起動時にファイル・ディレクトリが自動的に作成されるようにする
/etc/tmpfiles.d に設定ファイルを作成する
$ vi /etc/tmpfiles.d/hoge.conf
以下のように記述する
#Type Path Mode UID GID Age Argument d /var/run/hoge 0755 hoge hoge -
記述は /usr/lib/tmpfiles.d ディレクトリ内に既に多くの設定ファイルが保存されているのでそちらを参考に
ちなみにシンボリックリンクを作成したい場合は以下のように記述する
#Type Path Mode UID GID Age Argument d /var/run/hoge 0755 hoge hoge - L+ /var/run/hogelink - - - - /var/run/hoge
※/usr/lib/tmpfiles.d < /etc/tmpfiles.d が優先される