Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
JFS (file system)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|File system}} {{Distinguish|text=the [[JFFS]] file system, [[Jews' Free School|JFS (School)]], or the [[Veritas File System]], which is called ''JFS'' on HP-UX}} {{Use mdy dates|date=July 2017}} {{lead rewrite|date=July 2014}} {{Infobox file system | name = ddhs | full_name = IBM Journaled File System | developer = [[IBM]] et al. | introduction_os = JFS1 in [[IBM AIX|AIX]] 3.1 and JFS in [[OS/2]] 4.5 | introduction_date = 1990 and 1999 | partition_id = 0x35 ([[Master boot record|MBR]]) | file_struct = Bitmap/[[Extent (file systems)|extents]] | bad_blocks_struct = | max_filename_size = 255 bytes | max_files_no = No limit defined | max_volume_size = {{nowrap|32 × 2<sup>50</sup> bytes}} (32 [[Pebibyte|PiB]]) | max_file_size = {{nowrap|4 × 2<sup>50</sup> bytes}} (4 PiB) | filename_character_set = Any [[Unicode]] except [[Null character|NUL]] | dates_recorded = Modification (mtime), attribute modification (ctime), access (atime) | date_range = | date_resolution = 1 ns | forks_streams = Yes | attributes = <!-- List of attributes that are supported for files and directories --> | file_system_permissions = Unix permissions, [[Access control list|ACLs]] | compression = Only in JFS1 on AIX | directory_struct = [[B+ tree]] | encryption = No (provided at the block device level) | single_instance_storage = No | OS = AIX, OS/2, [[Linux]], [[eComStation]], [[ArcaOS]] }} '''Journaled File System''' ('''JFS''') is a [[64-bit computing|64-bit]] [[journaling file system]] created by [[IBM]]. There are versions for [[IBM AIX|AIX]], [[OS/2]], [[eComStation]], [[ArcaOS]] and [[Linux]] [[operating system]]s. 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.<ref name="faq">{{cite web |title=A Mini-FAQ for JFS |publisher=JFS for Linux project |url=http://jfs.sourceforge.net/project/pub/faq.txt}}</ref> IBM's '''JFS''' was originally designed for [[32-bit computing|32-bit]] systems. '''JFS2''' was designed for [[64-bit computing|64-bit]] systems.<ref name="Journaled File System or JFS">{{cite web|title=IBM JFS and JFS2| publisher=IBM|url=https://www.ibm.com/docs/en/aix/7.3?topic=types-journaled-file-system-jfs}}</ref> In other operating systems, such as OS/2 and Linux, only the second generation exists and is called simply ''JFS''.<ref name="interview">{{cite web |title=Interview with the People Behind JFS, ReiserFS & XFS |url=http://www.osnews.com/story.php/69/Interview-With-the-People-Behind-JFS-ReiserFS-and-XFS}}</ref> This should not be confused with JFS in [[AIX operating system|AIX]] 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,<ref name="faq" /> 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 file system|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 model|open source]] community and work was begun to port JFS to [[Linux]]. The first stable release of ''JFS for Linux'' appeared in June 2001.<ref name="interview" /> The ''JFS for Linux'' project is maintained by a small group of contributors known as the ''JFS Core Team''.<ref name="JFS4Linux">{{cite web |url=http://jfs.sourceforge.net/ |title=JFS for Linux |website=JFS.SourceForge.net |access-date=August 26, 2020}}</ref> 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.<ref name="faq" /><ref name="interview" /> 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.<ref>{{Cite web |url=http://linux.derkeiler.com/Mailing-Lists/Debian/2008-01/msg01808.html |title=Re: which to use: ext3, JFS, XFS, ReiserFS?<!-- Bot generated title --> |access-date=March 31, 2008 |archive-url=https://web.archive.org/web/20160303200517/http://linux.derkeiler.com/Mailing-Lists/Debian/2008-01/msg01808.html |archive-date=March 3, 2016 |url-status=dead }}</ref> However, Dave Kleikamp, a member of the [[IBM Linux Technology Center]] and JFS Core Team,<ref name="JFS4Linux" /> 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.<ref>[http://sourceforge.net/mailarchive/forum.php?thread_name=fpps5p%24g2t%242%40saturn.local.net&forum_name=jfs-discussion SourceForge.net: jfs-discussion<!-- Bot generated title -->]</ref> In 2012, [[Trim (computing)|TRIM]] command support for [[solid-state drive]]s was added to JFS.<ref>{{cite web|title=TRIM support for JFS Filesystem|url=https://lkml.org/lkml/2012/7/26/691}}</ref> == Features == JFS supports the following features.<ref>{{cite web|title=JFS overview |publisher=Steve Best, IBM |url=http://www-128.ibm.com/developerworks/library/l-jfs.html |access-date=2008-01-09 |archive-url=https://web.archive.org/web/20080129101603/http://www-128.ibm.com/developerworks/library/l-jfs.html |archive-date=2008-01-29 |url-status=dead }}</ref><ref>{{cite web|title=JFS Layout|publisher=Steve Best, IBM|url=http://jfs.sourceforge.net/project/pub/jfslayout.pdf|access-date=2008-05-01}}</ref> === 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]].<ref>{{cite web|title=JFS journal|publisher=OSDIR|author=David Kleikamp|url=http://osdir.com/ml/file-systems.jfs.general/2004-12/msg00025.html|access-date=July 7, 2008|archive-url=https://web.archive.org/web/20160303225646/http://osdir.com/ml/file-systems.jfs.general/2004-12/msg00025.html|archive-date=March 3, 2016|url-status=dead}}</ref> === 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 [[inode]]s as necessary. Each inode is 512 bytes. 32 inodes are allocated on a 16 kB Extent. === Extents === JFS allocates files as an [[Extent (file systems)|extent]]. An extent is a variable-length sequence of Aggregate blocks. An extent may be located in several [[allocation group]]s. To solve this the extents are indexed in a B+ tree for better performance when locating the extent locations. === Compression === [[Data compression|Compression]] is supported only in JFS1 on AIX and uses a variation of the [[LZ77 and LZ78|LZ algorithm]]. Because of high [[CPU usage]] and increased free space [[file system fragmentation|fragmentation]], compression is not recommended for use other than on a single user [[workstation]] or off-line [[backup]] 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.<ref>{{cite web|url=http://www.ibm.com/servers/aix/whitepapers/db_perf_aix.pdf|title=Improving Database Performance With AIX Concurrent I/O - White Paper|website=IBM.com|publisher=[[IBM]]}}</ref> === 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 (computing)|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 [[Linux kernel|kernel]] module (since the kernel version ''2.4.18pre9-ac4'') and the complementary [[userspace]] utilities packaged under the name ''JFSutils''. Most [[Linux distribution]]s support JFS unless it is specifically removed due to space restrictions, such as on [[live CD]]s.{{citation needed|date=August 2020}} According to benchmarks of the available filesystems for Linux, JFS is fast and reliable, with consistently good performance under different kinds of load.<ref>{{Cite web|title=9-Way File-System Comparison With A SSD On The Linux 3.17 Kernel|url=https://www.phoronix.com/scan.php?page=article&item=9way_linux317_fs&num=1|access-date=July 7, 2020|website=Phoronix.com}}</ref> Actual usage of JFS in Linux is uncommon, however, JFS does have a niche role in Linux: it offers a case-insensitive mount option, unlike most other Linux file systems.<ref>{{Cite web|title=jfs_mkfs: create a JFS formatted partition - Linux Man Pages (8)|url=https://www.systutorials.com/docs/linux/man/8-jfs_mkfs/|access-date=2020-07-07|website=SysTutorials.com}}</ref> 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.<ref>[https://www.usenix.org/events/usenix05/tech/general/full_papers/prabhakaran/prabhakaran.pdf Analysis and Evolution of Journaling File Systems - V. Prabhakaran and others] 2013-06</ref> == See also == {{Portal|Free and open-source software}} * [[Journaling file system]] * [[List of file systems]] * [[Comparison of file systems]] * [[fsck]] – File System Check utility ==References== {{Reflist}} ==External links== * [http://jfs.sourceforge.net/ JFS for Linux project website] * [http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.genprogc/doc/genprogc/fsyslayout.htm JFS1 File System Layout], IBM * [http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.genprogc/doc/genprogc/fsyslayout2.htm JFS2 File System Layout], IBM * [http://jfsrec.sourceforge.net/ JFSRec], a console program that performs a read only extraction of files and directories from a damaged JFS filesystem {{Filesystem}} {{OS/2}} [[Category:1990 software]] [[Category:Compression file systems]] [[Category:Disk file systems]] [[Category:File systems supported by the Linux kernel]] [[Category:IBM file systems|Journaled File System 2 (JFS2)]] [[Category:OS/2 technology]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Distinguish
(
edit
)
Template:Filesystem
(
edit
)
Template:Infobox file system
(
edit
)
Template:Lead rewrite
(
edit
)
Template:OS/2
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use mdy dates
(
edit
)