Solarisの/tmp以下のファイルが再起動で消えたり消えなかったりする理由

2009年7月20日

Solarisの/tmp以下のファイルは再起動で消える。
Linuxの/tmp以下のファイルは再起動では消えない。
だってSolarisの/tmp は物理メモリで、いわゆるRAMディスクだから、再起動すればメモリ内はクリアされる。だから消える。
Linuxの/tmp はHDDの領域だから、再起動しても消えない。
そういうものなんだと、ずっとそう思ってました。
しかし、Solarisでも/tmp以下のファイルが消えないマシンがあったんですよ。
で、疑問に思ったので調べてみました。
理由は以下のとおり。


/tmp以下のファイルが削除される場合と、削除されない場合がある理由は、
/tmpのファイルシステムの違いです。
(これはさっき言ったとおり、/tmpが物理メモリだったり、HDDだったりって事です)
再起動時にファイルが削除される
/tmpがtmpfsファイルシステム
再起動してもファイルは削除されない
/tmpがUFSファイルシステム
再起動で/tmp 以下のファイルが消えないSolarisは /tmp が UFSファイルシステムだったんです。
私が疑問に思ったマシンは、OS構築した人が /tmp にUFSファイルシステムを使うように設定してただけでした。
せっかくなので、見分け方。
●/tmp が tmpfsの場合
# df -k
swap xxxxxxx xx xxxxxxx 5% /tmp
~~~~~
●/tmpがUFSの場合
# df -k
/dev/dsk/c0t0d0s4 xxxxxxx xx xxxxxxx 5% /tmp
~~~~~~~~~~~~~~~~~~~~~~
ついでにUFSとtmpfsについて軽く解説。
UFSはSolaris標準のファイルシステムで、HDDのフォーマットは基本的にUFS。
もちろんHDDのデータは再起動しても消えない。
tmpfsは、物理メモリを使用するファイルシステムで、UFSよりも高速にデータを読み書きできる。
でも、物理メモリを使用するので、Solarisの再起動や、umountでデータは消える。

実はHDDに設定したスワップパーティションも tmpfs
以上です。