tmpfs
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からサポートされるようになった[1]。これはramfsのコードをもとにしており、起動中に使用されるほかにページキャッシュの目的でも使用される。また、ファイルシステムと同等のサイズのページファイルをスワップアウトしたり、inodeがメモリ不足(out of memory)の状態になるのを防ぐための制限(デフォルトでは物理RAMとページングは全メモリ容量を半々)をしたりといったramfsにはない機能が追加されている[2] 。
脚注
[編集]- ^ Daniel Robbins (2001年9月1日). “Common threads: Advanced filesystem implementor's guide, Part 3”. IBM DeveloperWorks. 2013年2月15日閲覧。
- ^ Christoph Rohland, Hugh Dickins, KOSAKI Motohiro. “tmpfs.txt”. kernel.org. 2010年3月16日閲覧。