Linux Tips‎ > ‎

tmpfs

tmpfs は Linux でキャッシュなどの一時ファイルをメモリ上に置くための機能です。 RAM Disk などとも呼ばれます。
ディスクアクセスはメモリアクセスに比べると大変時間の掛かる処理です。 HDD を SSD に換装することによってディスクアクセスの高速化を行うこともできますが、 SSD は HDD と比べると寿命が短い(書き換え可能回数が少ない)という欠点があります。
そこで、頻繁に読み書きされる一時ファイルたちを HDD ではなく、メモリ上に配置して読み書き速度の向上を図ろうというものです。 SSD の場合でもディスクアクセスを減らすことによって延命できる(かもしれない)というメリットがあります。
ただし、 RAM なので、電源をオフにする度にクリアされてしまいます。そのため、一時ファイルの格納場所として使う以外の用途には推奨されません。むしろ危険です。

以下は実際の設定の手順です。ちなみに筆者の環境は Ubuntu 11.04 です。

1. まず、次のように fstab という設定ファイルを開きます。

% sudo vi /etc/fstab

2. そして次の行を追加します。既に /tmp に関する設定が存在する場合は # でコメントアウトすると良いでしょう。(区切り文字はタブを使うという話もありますが、スペースでも大丈夫な気がします。)

tmpfs
    /tmp    tmpfs    defaults,noatime,mode=1777    0    0

3. そして再起動し、正しくマウントされているかどうか、次のコマンドで確認します。

% df -h

Filesystem            Size  Used Avail Use% マウント位置
/dev/sda7             3.7G  1.2G  2.4G  33% /
none                  2.4G  664K  2.4G   1% /dev
none                  2.4G  184K  2.4G   1% /dev/shm
tmpfs                 2.4G  296K  2.4G   1% /tmp
none                  2.4G  312K  2.4G   1% /var/run
none                  2.4G     0  2.4G   0% /var/lock
/dev/sda6              33G  2.5G   28G   9% /usr
/dev/sda5             111G   80G   25G  77% /home

追記 その 1
tmpfs のオプションで size を指定しないと実メモリの半分が割り当てられるようです。適切な値を割り当てると良いでしょう。
例えば、デスクトップマシンとして使っている場合、ブラウザで動画を観るなら、それなりに大きめに割り当てないとロードが途中で止まったりします。512MB くらいは必要かなぁ。

追記 その 2
rbenv の install コマンド ( 正確には ruby-build の install ) で Rubinius のインストールを行う場合など、 /tmp の容量を大量に必要とするケースでは上記の 512MB でも足りません。一時的に増やすとか、もっと大量に割り当ててしまっても良いのかもしれません。
(っていうか rbenv-install ってどうやって temp のパスを指定すればいいんだろ。ちらっと見た記憶だと確か bash スクリプトなんだよなー。読みたくねー。)
それから上の設定例のパーミッション設定は真似ないほうが良いかと思います。僕はそのまんまだけど。(これを書いたときは sticky bit のことをちゃんと理解してませんでした.というわけで状況によりますね.)

参考リンク
Comments