Journaled File System (JFS) is a
64-bit
In computer architecture, 64-bit Integer (computer science), integers, memory addresses, or other Data (computing), data units are those that are 64 bits wide. Also, 64-bit central processing unit, CPUs and arithmetic logic unit, ALUs are those ...
journaling file system
A journaling file system is a file system that keeps track of changes not yet committed to the file system's main part by recording the goal of such changes in a data structure known as a "journal", which is usually a circular log. In the even ...
created by
IBM. There are versions for
AIX
Aix or AIX may refer to:
Computing
* AIX, a line of IBM computer operating systems
*An Alternate Index, for a Virtual Storage Access Method Key Sequenced Data Set
* Athens Internet Exchange, a European Internet exchange point
Places Belgi ...
,
OS/2
OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 ...
,
eComStation
eComStation or eCS is an operating system based on OS/2 Warp for the 32-bit x86 architecture. It was originally developed by Serenity Systems and Mensys BV under license from IBM. It includes additional applications, and support for new hardwa ...
,
ArcaOS
ArcaOS is an operating system based on OS/2, developed and marketed by Arca Noae, LLC under license from IBM. It was codenamed Blue Lion during its development. It builds on OS/2 Warp 4.52 by adding support for new hardware, fixing defects and l ...
and
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
s. The latter is available as free software under the terms of the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
(GPL).
HP-UX
HP-UX (from "Hewlett Packard Unix") is Hewlett Packard Enterprise's proprietary implementation of the Unix operating system, based on Unix System V (initially System III) and first released in 1984. Current versions support HPE Integrity Ser ...
has another, different filesystem named JFS that is actually an OEM version of
Veritas Software
Veritas Technologies LLC. is an American international data management company headquartered in Santa Clara, California. The company has its origins in Tolerant Systems, founded in 1983 and later renamed Veritas Software. It specializes in stora ...
's
VxFS
The VERITAS File System (or VxFS; called JFS and OnlineJFS in HP-UX) is an extent-based file system. It was originally developed by VERITAS Software. Through an OEM agreement, VxFS is used as the primary filesystem of the HP-UX operating s ...
.
In the AIX operating system, two generations of JFS' exist, which are called ''JFS'' (''JFS1'') and ''JFS2'' respectively.
In other operating systems, such as OS/2 and Linux, only the second generation exists and is called simply ''JFS''.
This should not be confused with JFS in
AIX
Aix or AIX may refer to:
Computing
* AIX, a line of IBM computer operating systems
*An Alternate Index, for a Virtual Storage Access Method Key Sequenced Data Set
* Athens Internet Exchange, a European Internet exchange point
Places Belgi ...
that actually refers to JFS1.
History
IBM introduced JFS with the initial release of AIX version 3.1 in February 1990. This file system, now called ''JFS1 on AIX'', was the premier file system for AIX over the following decade and was installed in thousands or millions of customers' AIX systems. Historically, the JFS1 file system is very closely tied to the memory manager of AIX,
which is a typical design for a file system supporting only one operating system. JFS was one of the first file systems to support
Journaling
In 1995, work began to enhance the file system to be more scalable and to support machines that had more than one processor. Another goal was to have a more portable file system, capable of running on multiple operating systems. After several years of designing, coding, and testing, the new JFS was first shipped in OS/2 Warp Server for eBusiness in April 1999, and then in OS/2 Warp Client in October 2000. In December 1999, a snapshot of the original OS/2 JFS source was granted to the
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
community and work was begun to port JFS to
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
. The first stable release of ''JFS for Linux'' appeared in June 2001.
The ''JFS for Linux'' project is maintained by a small group of contributors known as the ''JFS Core Team''.
This release of sources also worked to form the basis of a re-port back to OS/2 of the open-source JFS.
In parallel with this effort, some of the JFS development team returned to the AIX Operating System Development Group in 1997 and started to move this new JFS source base to the AIX operating system. In May 2001, a second journaled file system, ''Enhanced Journaled File System (JFS2)'', was made available for AIX 5L.
Early in 2008 there was speculation that IBM is no longer interested in maintaining JFS and thus it should not be used in production environments. However, Dave Kleikamp, a member of the
IBM Linux Technology Center The IBM Linux Technology Center (LTC) is an organization focused on development for the Linux kernel and related open-source software projects. In 1999, IBM created the LTC to combine its software developers interested in Linux and other open-sour ...
and JFS Core Team,
explained that they still follow changes in the
Linux kernel
The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
and try to fix potential
software bugs
A software bug is an error, flaw or fault (technology), fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding an ...
. He went on to add that certain distributions expect a larger resource commitment from them and opt not to support the filesystem.
In 2012,
TRIM
Trim or TRIM may refer to:
Cutting
* Cutting or trimming small pieces off something to remove them
** Book trimming, a stage of the publishing process
** Pruning, trimming as a form of pruning often used on trees
Decoration
* Trim (sewing), or ...
command support for
solid-state drive
A solid-state drive (SSD) is a solid-state storage device that uses integrated circuit assemblies to store data persistently, typically using flash memory, and functioning as secondary storage in the hierarchy of computer storage. It is ...
s was added to JFS.
Features
JFS supports the following features.
Journal
JFS is a
journaling file system
A journaling file system is a file system that keeps track of changes not yet committed to the file system's main part by recording the goal of such changes in a data structure known as a "journal", which is usually a circular log. In the even ...
. Rather than adding journaling as an add-on feature like in the
ext3
ext3, or third extended filesystem, is a journaled file system that is commonly used by the Linux kernel. It used to be the default file system for many popular Linux distributions. Stephen Tweedie first revealed that he was working on extend ...
file system, it was implemented from the start. The journal can be up to 128 MB. JFS journals metadata only, which means that metadata will remain consistent but user files may be corrupted after a crash or power loss. JFS's journaling is similar to
XFS
XFS is a high-performance 64-bit journaling file system created by Silicon Graphics, Inc (SGI) in 1993. It was the default file system in SGI's IRIX operating system starting with its version 5.3. XFS was ported to the Linux kernel in 2001; as ...
in that it only journals parts of the
inode
The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attribute ...
.
B+ tree
JFS uses a
B+ tree
A B+ tree is an m-ary tree with a variable but often large number of children per node. A B+ tree consists of a root, internal nodes and leaves. The root may be either a leaf or a node with two or more children.
A B+ tree can be viewed as a B- ...
to accelerate lookups in directories. JFS can store 8 entries of a directory in the directory's
inode
The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attribute ...
before moving the entries to a B+ tree. JFS also indexes extents in a B+ tree.
Dynamic inode allocation
JFS dynamically allocates space for disk
inode
The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attribute ...
s as necessary. Each inode is 512 bytes. 32 inodes are allocated on a 16 kB 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 group
An AG or allocation group is a subvolume in a file system which maintains its own track of free blocks and file data.
This makes simultaneous file operations possible; only one write can happen to an AG at any time, but multiple operations can be ...
s. To solve this the extents are indexed in a B+ tree for better performance when locating the extent locations.
Compression
Compression
Compression may refer to:
Physical science
*Compression (physics), size reduction due to forces
*Compression member, a structural element such as a column
*Compressibility, susceptibility to compression
* Gas compression
*Compression ratio, of a ...
is supported only in JFS1 on AIX and uses a variation of the
LZ algorithm. Because of high
CPU usage
CPU time (or process time) is the amount of time for which a central processing unit (CPU) was used for processing instructions of a computer program or operating system, as opposed to elapsed time, which includes for example, waiting for inpu ...
and increased free space
fragmentation, compression is not recommended for use other than on a single user
workstation
A workstation is a special computer designed for technical or scientific applications. Intended primarily to be used by a single user, they are commonly connected to a local area network and run multi-user operating systems. The term ''workstat ...
or off-line
backup
In information technology, a backup, or data backup is a copy of computer data taken and stored elsewhere so that it may be used to restore the original after a data loss event. The verb form, referring to the process of doing so, is "back up", w ...
areas.
Concurrent input / output (CIO)
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.
Allocation groups
JFS uses allocation groups. Allocation groups divide the aggregate space into chunks. This allows JFS to use resource allocation policies to achieve great I/O performance. The first policy is to try to cluster disk blocks and disk inodes for related data in the same AG in order to achieve good locality for the disk. The second policy is to distribute unrelated data throughout the file system in an attempt to minimize free-space fragmentation. When there is an open file JFS will lock the AG the file resides in and only allow the open file to grow. This reduces fragmentation as only the open file can write to the AG.
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
On Linux
In the Linux operating system, JFS is supported with the
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learnin ...
module (since the kernel version ''2.4.18pre9-ac4'') and the complementary
userspace
A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour.
Kernel ...
utilities packaged under the name ''JFSutils''. Most
Linux distribution
A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that includes the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading one ...
s support JFS unless it is specifically removed due to space restrictions, such as on
live CD
A live CD (also live DVD, live disc, or live operating system) is a complete bootable computer installation including operating system which runs directly from a CD-ROM or similar storage device into a computer's memory, rather than loading fro ...
s.
According to benchmarks of the available filesystems for Linux, JFS is fast and reliable, with consistently good performance under different kinds of load.
Actual usage of JFS in Linux is uncommon, as
ext4
ext4 (fourth extended filesystem) is a journaling file system for Linux, developed as the successor to ext3.
ext4 was initially a series of backward-compatible extensions to ext3, many of them originally developed by Cluster File Systems for ...
typically offers better performance. JFS does have a niche role in Linux: it offers a case-insensitive mount option, unlike most other Linux file systems.
There are also potential problems with JFS, such as its implementation of journal writes. They can be postponed until there is another trigger—potentially indefinitely, which can cause data loss over a theoretically infinite timeframe.
Analysis and Evolution of Journaling File Systems - V. Prabhakaran and others
2013-06
See also
* List of file systems
The following lists identify, characterize, and link to more thorough information on Computer file systems.
Many older operating systems support only their one "native" file system, which does not bear any name apart from the name of the operating ...
* Comparison of file systems
The following tables compare general and technical information for a number of file systems.
General information
Limits
Metadata
Features File capabilities
Block capabilities
Note that in addition to the below table, blo ...
* fsck
The system utility fsck (''file system consistency check'') is a tool for checking the consistency of a file system in Unix and Unix-like operating systems, such as Linux, macOS, and FreeBSD. A similar command, CHKDSK, exists in Microsoft Windows ...
– File System Check utility
References
External links
JFS for Linux project website
IBM
IBM
JFSRec
a console program that performs a read only extraction of files and directories from a damaged JFS filesystem
{{OS/2
1990 software
Compression file systems
Disk file systems
File systems supported by the Linux kernel
Journaled File System 2 (JFS2)
OS/2 technology