NILFS

NILFS（New Implementation of a Log-structured File System）またはNILFS2は Linux 向けの（バージョニングファイルシステム）である。NILFS は NTTサイバースペース研究所（日本電信電話の一部門）によって開発され、GNU General Public License (GPL) のもとでリリースされている。
Linuxカーネル2.6.30にて、同じく日本発のTOMOYO Linuxと共にメインラインにマージされた。
特徴.
ログ構造化ファイルシステムとして、NILFS は連続的なログのようなフォーマットですべてのデータを書き込み、それらは追記されるのみで、決して上書きされない。このアプローチは従来の Linux ファイルシステムで起こるデータ損失を最小限にするのと同様にシーク時間を減らすように設計されている。例えば、 ext3 ファイルシステム上で書き込み操作中にシステムがクラッシュするとデータ損失が起こる。システムが再起動したとき、書き込みは完了しておらず、どの部分データ書き込みも失われたとジャーナルは書き込む。
Solaris オペレーティングシステムによって使われる UFS ファイルシステムのような、一部のファイルシステムはデータの「スナップショット」機能を提供し、そのようなデータ損失を防ぐが、機能を使うためにファイルシステムの操作を一時的に止めなければならず、パフォーマンスを落とす。それに対して、NTT 研究所によれば、NILFS は「サービスを中断することなくファイルシステムの瞬間的な状態を連続的で自動的に保存できる」。
NILFS が連続的に保存する「瞬間的な状態」は実際に読み込み専用でマウントでき、同時に実際のファイルシステムは読み書き可能でマウントされる。これはハードウェア障害や他のシステムのクラッシュ後のデータ回復に役立つ機能である。対話的な NILFS の「検査」ユーティリティの「lscp」（「list checkpoint」）コマンドは最初にチェックポイントのアドレス、以下の場合「2048」を見つけるのに使われる。
 # inspect /dev/sda2
 nilfs> listcp
 1 6 Tue Jul 12 14:55:57 2005 MajorCP|LogiBegin|LogiEnd
 2048 2352 Tue Jul 12 14:55:58 2005 MajorCP|LogiEnd
 nilfs> quit
そしてチェックポイントのアドレスはチェックポイントをマウントするのに使われる。
 # mount -t nilfs -r -o cp=2048 /dev/sda2 /nilfs-cp
 # df
 Filesystem 1K-blocks Used Available Use% Mounted on
 /dev/sda2 70332412 8044540 62283776 12% /nilfs
 /dev/sda2 70332412 8044540 62283776 12% /nilfs-cp