tmpfsはUnix系OSにおける一時ファイルのためのファイルシステム名。tmpfsはファイルシステムとしてマウントされることを意図しており、これによりHDDをはじめとする永続性をもつ記憶装置の代わりに揮発性メモリに保存されるようにできる。RAMディスク(仮想的なディスクドライブ)とは異なり内部に別のファイルシステムを作成せずに使用することができる。
tmpfsのふるまい
tmpfsは通常仮想記憶のサポートを前提としており、保存されるすべてのデータはページング可能なメモリに記憶する。ハードディスクに保存されないと言う意味では一時的なものであるが、メモリ不足の場合はバッキングストアとしてスワップ領域を利用することができる。リブートするときtmpfsに保存されているすべてのファイルは失われる。ディレクトリ構造などのメタデータにあっては理論上はデータ同様にページング対象とするか、ないしは常時オンメモリにすることができるが、実装を容易にするため後者を採用することが多い。
tmpfsで使用されるメモリ量は格納するファイルの容量によって伸縮するが、スワップ領域にスワップアウトされることもある。また、空き容量は仮想記憶の残りメモリサイズに依存するため、ファイル操作をしていない場合でも空き容量が変化することがある。
多くのUnixディストリビューションでは、初期設定の時点でtmpfsを使用することができ、具体的には/tmpディレクトリや、共有メモリの形で現れる。
以下はUnixコマンドのdfでファイルシステムを観察した例である。
Filesystem Size Used Avail Use% Mounted on tmpfs 256M 688K 256M 1% /tmp
一部のUbuntuやDebianのようなLinuxディストリビューションでは、/tmpは通常のディレクトリで、tmpfsは/run/shmにマウントされている。
実装
Linux
tmpfsは以前shmfsとして知られており、Linuxカーネルのバージョン2.4からサポートされるようになった。これはramfsのコードをもとにしており、起動中に使用されるほかにページキャッシュの目的でも使用される。また、ファイルシステムと同等のサイズのページファイルをスワップアウトしたり、inodeがメモリ不足(out of memory)の状態になるのを防ぐための制限(デフォルトでは物理RAMとページングは全メモリ容量を半々)をしたりといったramfsにはない機能が追加されている 。
脚注
外部リンク
- “Solaris tmpfs(7FS) man page”. 2013年2月25日閲覧。
- Tmpfs — The Linux Kernel documentation (英語)
- JF: Linux Kernel 3.x/2.6 Documentation: tmpfs.txt (日本語)




