LoginSignup
1

More than 5 years have passed since last update.

posted at

systemd-nspawnでのtmpディレクトリの扱いについて

systemd-nspawn Advent Calendar 2017 2日目の記事です。

systemd-nspawnで/tmpディレクトリはメモリ上に置かれます
なので/tmpディレクトリに沢山置くとメモリ不足になっちゃうよという話

あと、/var/lib/machines/container/tmp/a.txt
みたいなファイルがあったとしても、tmpfsで被せてしまうので見えない

確認

# df -h /tmp/
ファイルシス   サイズ  使用  残り 使用% マウント位置
tmpfs            1.9G     0  1.9G    0% /tmp

確かにtmpfsになってる

対策1

tmpマウントを止めてしまう

systemctl stop tmp.mount

起動時にこれを発動させたかったら、systemdのboot処理が全部終わった後に発動するrc.localとかcrontabの@rebootとかを遅延かけてやるしかないと思う
(というのも、なんかこれtmp.mountがdisableでもmaskされても発動されちゃうのでsystemdのサービス止めてもsystemd-nspawnが起動かけてるように思えるので・・・)

対策2

bindでつなげちゃう

systemd-nspawn --bind /var/lib/machines/hogecontainer/tmp:/tmp -D /var/lib/machines/hogecontainer

注意

--bootフラグを立てて、boot処理を行うとtmpの削除処理が走るので、注意すること
なので、ホスト側の/tmpとつなげちゃうとコンテナ上げるたびに/tmpがクリアされてしまう

参考にしたリンク

systemd-nspawn: prevent guest from mounting /tmp as tmpfs

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1