スキップしてメイン コンテンツに移動

ええっ? /tmp にサイズ制限? Linux 2.4〜


表題のとおりですが、Linux カーネル 2.4 以降で
/tmp の容量に厳しい制限がついてしまいました。


その容量制限とは、

物理メモリのサイズの半分

というものです。


これは使い方によっては非常に少ない。

自分のPCはメモリが4GBなので領域2GBということになりますが
yaourtでリアルタイムカーネルをビルドしようとしたら
No space left on device
などとエラーが出てしまいました。


どうしてこんな制限がついてしまったかといえば
「/tmp を高速にしたかった」
のだろうと推測します。

というのも、df コマンドを実行してみると
/tmp について、何やら tmpfs なるものが出てきます。
tmpfs            1.9G  8.0K  1.9G    1% /tmp
tmpfsとは何ぞや?と調べてみれば
メモリ上に置かれるファイルシステム
とのこと。
別の用語で言えば RAM DISK といったところでしょうか。

この tmpfs がデフォルトで
「実メモリの半分」
というサイズを上限とするのです。

これは厳しい制限です。

もちろんサイズ設定を変更することは可能ではあるのです

が!!

メモリ上に領域を取るのですから
変更といってもメモリサイズより大きくはできない。
256MBとかで動かしている人は一体どうするのでしょう・・・
(SWAPもするようですがそれでは本末転倒なうえに、結局「実メモリ+SWAP領域」より大きく出来ないのでは?)

確かに /tmp をメモリに実装すれば
高速になる処理も多いでしょう。

しかしプログラムを作る側からすれば
わざわざ /tmp にデータを置くのは
「メモリに載せるには大きいから」
という理由も多いと思います。

プログラムの設計者が
「メモリじゃ不足するかも」と
あえてディスクに書きたいものを
だが断る!とばかりにメモリに載せてゆくなんて。

いや載せてもいいけど
ディスク空き領域も兼用して大々的に使わせてほしい。

そんな tmpfs で困った時は、
/etc/fstab で /tmp の行をコメントアウトする
systemctl mask tmp.mount
を実行して無効にするか
個別のプログラムでの設定を変更して
容量不足を回避するしかなさそうです。