Journaled File System

JFS is a 64-bit journaling file system created by IBM was introduced first in 1990. In 2001 released a second journaled file system, Enhanced Journaled File System (JFS2). The latter is available on Linux as free software under the terms of the GNU GPL since the kernel version 2.4.18pre9-ac4.

Major features:

  • Journaling - the journal can be up to 128MB. JFS journals metadata only, which means that metadata will remain consistent but user files may be corrupted after a crash or power loss.
  • B+ Tree - JFS uses a B+ tree to accelerate lookups in directories.
  • Dynamic Inode Allocation - JFS dynamically allocates space for disk inodes as necessary. Each inode is 512 Bytes. 32 Inodes are allocated on a 16KB Extent.
  • Extents - JFS allocates files as an extent. An extent is a variable-length sequence of Aggregate blocks. An extent may be located in several allocation groups.
  • Compression - supported only in JFS1 on AIX and uses a variation of the LZ algorithm
  • Concurrent Input / Output - JFS normally applies read-shared, write-exclusive locking to files, which avoids data inconsistencies but imposes write serialization at the file level. The CIO option disables this locking. Applications such as relational databases which maintain data consistency themselves can use this option to largely eliminate filesystem overheads.
  • JFS Superblocks - The superblock maintains information about the entire file system and includes the following fields: Size of the file system; Number of data blocks in the file system; A flag indicating the state of the file system; Allocation group sizes; File system block size.