2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntuでgoofysがメモリを大量に掴みっぱなしになる場合の対策

Last updated at Posted at 2019-07-11

AWS S3(及びその互換オブジェクトストレージ)をLinuxのファイルシステムとしてマウントできるgoofysはなかなか重宝します。
goofysのインストール、設定についてはqiita内にいい記事がいくつもあるのでそれを参照してください。
しかし、気がつくとgoofysがこんな風に結構なメモリを掴みっぱなしになることがあります。

 8960 *******   20   0  872988 378244  11384 S  0.0 18.5   0:35.59 goofys

上記は自分の使っているサーバーでの実例ですが、goofysが400MB弱のメモリを掴んでいました。umount/mountすると一度20MB程度まで減るのですが、暫く経つとまたこうなります。

犯人はupdatedb

Ubuntuを普通にインストールすると、ファイル検索を高速化するためのupdatedbが日に一回実行されるように設定されます。これがgoofysでマウントされたディレクトリツリーについても探索するため、ディレクトリ構造によっては大量のメモリを消費してしまいます(そして残念なことに開放されない)。
そこで、updatedbの探索範囲からgoofysでマウントしている部分を除外する設定を行います。

/etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs f#use.sshfs curlftpfs ecryptfs fusesmb devtmpfs fuse fuse.goofys"

PRUNEFSで探索から除外するファイルシステムを指定するので、この末尾に"fuse fuse.goofys"を追記しています(fuseだけでいけると思いますが念の為)。
もしくは、goofysのマウントポイントをPRUNEPATHSに追記します。
(ファイル探しにlocateコマンドを使わないなら、/etc/cron.daily/mlocateを削除してupdatedbの実行自体を止めるのもありです)
これで何日経ってもgoofysのメモリ消費はほぼ増えなくなります。

そもそも、

goofysでのmount時にallow_otherを指定せず単一のユーザーからだけ見えるようにしておけば、rootでマウントを実行していない限りupdatedbから見えないんですけどね。そこは諸般の事情で。

2
2
0

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
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?