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

主張された付加的な特徴 
 速い書き込みと回復時間
 ハードウェア障害におけるファイルデータやシステムの一貫性に対する最小限の破損
 正しい順番のデータやメタデータの書き込み
 ファイルや inode のブロックは B木構造で管理されている
 巨大なファイルを作成したり保存したりできる
 64ビット長のワードサイズで内部データが処理される

脚注

外部リンク 
 
 
 Manjaro tutorial NILFS: A filesystem designed to minimize the likelyhood of data loss 
 
 

Linuxのファイルシステム