JFS (file system)

Short description: File system

JFSDeveloper(s)| IBM et al.

|

Full name| IBM Journaled File System
Introduced| 1990 and 1999 with JFS1 in AIX 3.1 and JFS in OS/2 4.5
Partition identifier| 0x35 (MBR)
Structures
Directory contents| B+ tree
File allocation| Bitmap/extents
Limits
Max. volume size| 32 × 250 bytes (32 PiB)
Max. file size| 4 × 250 bytes (4 PiB)
Max. number of files| No limit defined
Max. filename length| 255 bytes
Allowed characters in filenames| Any Unicode except NUL
Features
Dates recorded| Modification (mtime), attribute modification (ctime), access (atime)
Date resolution| 1 ns
Forks| Yes
File system permissions| Unix permissions, ACLs
Transparent compression| Only in JFS1 on AIX
Transparent encryption| No (provided at the block device level)
Data deduplication| No
Other
Supported operating systems| AIX, OS/2, Linux, eComStation, ArcaOS

Journaled File System (JFS) is a 64-bit journaling file system created by IBM. There are versions for AIX, OS/2, eComStation, ArcaOS and Linux operating systems. The latter is available as free software under the terms of the GNU General Public License (GPL). HP-UX has another, different filesystem named JFS that is actually an OEM version of Veritas Software's VxFS.

In the AIX operating system, two generations of JFS exist, which are called JFS (JFS1) and JFS2 respectively.[1][2] In other operating systems, such as OS/2 and Linux, only the second generation exists and is called simply JFS.[3] This should not be confused with JFS in AIX that actually refers to JFS1.

## Contents

* 1 History
* 2 Features
* 2.1 Journal
* 2.2 B+ tree
* 2.3 Dynamic inode allocation
* 2.4 Extents
* 2.5 Compression
* 2.6 Concurrent input / output (CIO)
* 2.7 Allocation groups
* 2.8 Superblocks
* 3 On Linux
* 4 See also
* 5 References
* 6 External links

## 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,[1] 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 community and work was begun to port JFS to Linux. The first stable release of JFS for Linux appeared in June 2001.[3] The JFS for Linux project is maintained by a small group of contributors known as the JFS Core Team.[4] 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.[1][3]

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.[5] However, Dave Kleikamp, a member of the IBM Linux Technology Center and JFS Core Team,[4] explained that they still follow changes in the Linux kernel and try to fix potential software bugs. He went on to add that certain distributions expect a larger resource commitment from them and opt not to support the filesystem.[6]

In 2012, TRIM command support for solid-state drives was added to JFS.[7]

## Features

JFS supports the following features.[8][9]

### Journal

JFS is a journaling file system. Rather than adding journaling as an add-on feature like in the ext3 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 in that it only journals parts of the inode.[10]

### B+ tree

JFS uses a B+ tree to accelerate lookups in directories. JFS can store 8 entries of a directory in the directory's inode 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 inodes 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 groups. To solve this the extents are indexed in a B+ tree for better performance when locating the extent locations.

### Compression

Compression is supported only in JFS1 on AIX and uses a variation of the LZ algorithm. Because of high CPU usage and increased free space fragmentation, compression is not recommended for use other than on a single user workstation or off-line backup areas.[2][11]

### 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.[12]

### 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 module (since the kernel version 2.4.18pre9-ac4) and the complementary userspace utilities packaged under the name JFSutils. Most Linux distributions support JFS unless it is specifically removed due to space restrictions, such as on live CDs.[citation needed]

According to benchmarks of the available filesystems for Linux, JFS is fast and reliable, with consistently good performance under different kinds of load.[13]

Actual usage of JFS in Linux is uncommon, as ext4 typically offers better performance[citation needed]. JFS does have a niche role in Linux: it offers a case-insensitive mount option, unlike most other Linux file systems.[14]

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.[15]

## See also

* List of file systems
* Comparison of file systems
* fsck – File System Check utility

## References

1. ↑ 1.0 1.1 1.2 "A Mini-FAQ for JFS". JFS for Linux project. http://jfs.sourceforge.net/project/pub/faq.txt.
2. ↑ 2.0 2.1 "Comparison of JFS1 and JFS2 on AIX". IBM. http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.baseadmn/doc/baseadmndita/fs_jfs_jfs2.htm.
3. ↑ 3.0 3.1 3.2 "Interview with the People Behind JFS, ReiserFS & XFS". http://www.osnews.com/story.php/69/Interview-With-the-People-Behind-JFS-ReiserFS-and-XFS.
4. ↑ 4.0 4.1 "JFS for Linux". http://jfs.sourceforge.net/.
5. ↑ "Re: which to use: ext3, JFS, XFS, ReiserFS?". http://linux.derkeiler.com/Mailing-Lists/Debian/2008-01/msg01808.html.
6. ↑ SourceForge.net: jfs-discussion
7. ↑ "TRIM support for JFS Filesystem". https://lkml.org/lkml/2012/7/26/691.
8. ↑ "JFS overview". Steve Best, IBM. http://www-128.ibm.com/developerworks/library/l-jfs.html.
9. ↑ "JFS Layout". Steve Best, IBM. http://jfs.sourceforge.net/project/pub/jfslayout.pdf.
10. ↑ David Kleikamp. "JFS journal". OSDIR. http://osdir.com/ml/file-systems.jfs.general/2004-12/msg00025.html.
11. ↑ "AIX Wiki: JFS". IBM. http://www-941.ibm.com/collaboration/wiki/display/WikiPtype/JFS.
12. ↑ "Improving Database Performance With AIX Concurrent I/O - White Paper". IBM. http://www.ibm.com/servers/aix/whitepapers/db_perf_aix.pdf.
13. ↑ "9-Way File-System Comparison With A SSD On The Linux 3.17 Kernel". https://www.phoronix.com/scan.php?page=article&item=9way_linux317_fs&num=1.
14. ↑ "jfs_mkfs: create a JFS formatted partition - Linux Man Pages (8)". https://www.systutorials.com/docs/linux/man/8-jfs_mkfs/.
15. ↑ Analysis and Evolution of Journaling File Systems - V. Prabhakaran and others 2013-06

## External links

* JFS for Linux project website
* JFS1 File System Layout, IBM
* JFS2 File System Layout, IBM
* JFSRec, a console program that performs a read only extraction of files and directories from a damaged JFS filesystem

* v
* t
* e

File systems

* Comparison of file systems
* distributed
* Unix filesystem

Disk|

* ADFS
* AdvFS
* Amiga FFS
* Amiga OFS
* APFS
* AthFS
* bcachefs
* BFS
* Be File System
* Boot File System
* Btrfs
* CVFS
* CXFS
* DFS
* EFS
* Encrypting File System
* Extent File System
* Episode
* ext
* ext2
* ext3
* ext3cow
* ext4
* FFS/FFS2
* FAT
* exFAT
* Files-11
* Fossil
* HAMMER
* HAMMER2
* HFS
* HFS+
* HPFS
* HTFS
* IBM Spectrum Scale
* JFS
* LFS
* MFS
* Macintosh File System
* TiVo Media File System
* MINIX
* NetWare File System
* Next3
* NILFS
* NILFS2
* NSS
* NTFS
* OneFS
* PFS
* QFS
* QNX4FS
* ReFS
* ReiserFS
* Reiser4
* Reliance
* Reliance Nitro
* RFS
* SFS
* SNFS
* Soup (Apple)
* Tux3
* UBIFS
* UFS
* soft updates
* WAPBL
* VxFS
* WAFL
* Xiafs
* XFS
* Xsan
* zFS
* ZFS

Optical disc|

* HSF
* ISO 9660
* ISO 13490
* UDF

Flash memory and SSD|

* APFS
* FAT
* exFAT
* CHFS
* TFAT
* EROFS
* FFS2
* F2FS
* HPFS
* JFFS
* JFFS2
* JFS
* LogFS
* NILFS
* NILFS2
* NVFS
* YAFFS
* UBIFS

Distributed|

* CXFS
* GFS2
* Google File System
* OCFS2
* OrangeFS
* PVFS
* QFS
* Xsan
* more...

NAS|

* AFS (OpenAFS)
* AFP
* Coda
* DFS
* Google File System
* IBM Spectrum Scale
* Lustre
* NCP
* NFS
* POHMELFS
* Hadoop
* SMB (CIFS)
* SSHFS
* more...

Specialized|

* Aufs
* AXFS
* Boot File System
* CDfs
* Compact Disc File System
* cramfs
* Davfs2
* EROFS
* FTPFS
* FUSE
* Lnfs
* LTFS
* NOVA
* MVFS
* SquashFS
* UMSDOS
* OverlayFS
* UnionFS
* WBFS

Pseudo and virtual|

* configfs
* devfs
* debugfs
* kernfs
* procfs
* specfs
* sysfs
* tmpfs
* WinFS

Encrypted|

* eCryptfs
* EncFS
* EFS
* Rubberhose
* SSHFS
* ZFS

Types|

* Clustered
* Global
* Grid
* Self-certifying
* Flash
* Journaling
* Log-structured
* Object
* Record-oriented
* Semantic
* Steganographic
* Synthetic
* Versioning

Features|

* Case preservation
* Copy-on-write
* Data deduplication
* Data scrubbing
* Execute in place
* Extent
* File attribute
* Extended file attributes
* File change log
* Fork
* Links
* Hard
* Symbolic

Access control|

* Access control list
* Filesystem-level encryption
* Permissions
* Modes
* Sticky bit

Interfaces|

* File manager
* File system API
* Installable File System
* Virtual file system

Lists|

* Cryptographic
* Default
* Log-structured

Template:OS/2

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/JFS (file system). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=JFS_(file_system)&oldid=290670"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template