表題のとおりですが、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 で困った時は、
systemctl mask tmp.mountを実行して無効にするか
個別のプログラムでの設定を変更して
容量不足を回避するしかなさそうです。