情シス - 雑多メモ

基本は情シス、たまに開発を担当

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 が優先される