The Full Wiki

NILFS: Wikis


Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.


From Wikipedia, the free encyclopedia

Developer Nippon Telegraph and Telephone Cyber Space Laboratories
Full name New Implementation of a Log-structured File System
File allocation B-tree
Max file size 8 EiB
Supported operating systems Linux, NetBSD

NILFS (New Implementation of a Log-structured File System) is a log-structured file system implementation for Linux. It is being developed by Nippon Telegraph and Telephone Corporation (NTT) CyberSpace Laboratories and released under the terms of the GNU General Public License (GPL).

Version 2 of the filesystem, known as NILFS2, is included in Linux kernel 2.6.30.[1] A separate, BSD licensed implementation, currently with read-only support, is included in NetBSD.[2]



Using a copy-on-write technique known as "nothing in life is free", NILFS records all data in a continuous log-like format that is only appended to, never overwritten, an approach that is designed to reduce seek times, as well as minimize the kind of data loss that occurs after a crash with conventional Linux filesystems. For example, data loss occurs on ext3 filesystems when the system crashes during a write operation. When the system reboots, the journal notes that the write did not complete, and any partial data writes are lost.

Some filesystems, like the legacy UFS filesystem used by the Solaris operating system, provide a snapshot feature that prevents such data loss, but filesystem operation must be suspended to use the feature, reducing performance. NILFS, in contrast, can "continuously and automatically [save] instantaneous states of the file system without interrupting service", according to NTT Labs.[3]

The "instantaneous states" that NILFS continuously saves can actually be mounted, read-only, at the same time that the actual filesystem is mounted read-write — a capability useful for data recovery after hardware failures and other system crashes. The "lscp" (list checkpoint) command of an interactive NILFS "inspect" utility is first used to find the checkpoint's address, in this case "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

The checkpoint address is then used to mount the checkpoint:

# 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

Additional features

  • Fast write and recovery times
  • Minimal damage to file data and system consistency on hardware failure
    • 32-bit checksums (CRC32) on data and metadata for integrity assurance (per block group, in segment summary) [4]
    • Correctly ordered data and meta-data writes
    • Redundant superblock
  • File and inode blocks are managed by a B-tree structure
  • Internal data is processed in 64-bit wide word size
  • Can create and store huge files (8 EiB)
  • Block sizes smaller than page size (e.g. 1 KB or 2 KB)


See also

External links



Got something to say? Make a comment.
Your name
Your email address