ReiserFS

Last updated
ReiserFS 3.6
Developer(s) Namesys
Full nameReiserFS
Introduced2001;23 years ago (2001) with Linux 2.4.1
Partition IDs
Structures
Directory contents B+ tree
File allocation Bitmap [1]
Limits
Max volume size16 TiB [2]
Max file size1 EiB (8 TiB on 32 bit systems) [2]
Max no. of files232−3 (~4 billion) [2]
Max filename length4032 bytes, limited to 255 by Linux VFS
Allowed filename
characters
All bytes except NUL and '/'
Features
Dates recordedModification (mtime), metadata change (ctime), access (atime)
Date rangeDecember 14, 1901 – January 18, 2038 (32-bit Unix time)
Date resolution1 s
Forks Extended attributes
File system
permissions
Unix permissions, ACLs and arbitrary security attributes
Transparent
compression
No
Transparent
encryption
No
Other
Supported
operating systems
Linux, ReactOS

ReiserFS is a general-purpose, journaling file system initially designed and implemented by a team at Namesys led by Hans Reiser and licensed under GPLv2. Introduced in version 2.4.1 of the Linux kernel, it was the first journaling file system to be included in the standard kernel. ReiserFS was the default file system in Novell's SUSE Linux Enterprise until Novell decided to move to ext3 for future releases on October 12, 2006. [3]

Contents

ReiserFS version 3.6, now occasionally referred to as Reiser3, introduced a new on-disk format allowing larger filesizes. Namesys considered ReiserFS stable and feature-complete and ceased development on it to concentrate on its successor, Reiser4, though it continued to release security updates and critical bug fixes. Namesys went out of business in 2008 after Reiser's conviction for murder. The product is now maintained as open source by volunteers. [4] The reiserfsprogs 3.6.27 were released on 25 July 2017. [5]

ReiserFS is currently supported on Linux without quota support. It has been discussed for removal from the Linux kernel since early 2022 due to a lack of maintenance upstream, and technical issues inherent to the filesystem, such as the fact it suffers from the year 2038 problem; [6] [7] [8] it was deprecated in Linux 5.18, [9] and marked as obsolete in Linux 6.6. [10] It is planned for removal in 2025. [11] [12]

Features

At the time of its introduction, ReiserFS offered features that had not been available in existing Linux file systems. One example is tail packing—a scheme to reduce internal fragmentation at cost of performance. Reiser4 may have improved this by packing tails where it does not negatively affect performance. [13]

Design

ReiserFS stores file metadata ("stat items"), directory entries ("directory items"), inode block lists ("indirect items"), and tails of files ("direct items") in a single, combined B+ tree keyed by a universal object ID. Disk blocks allocated to nodes of the tree are "formatted internal blocks". Blocks for leaf nodes (in which items are packed end-to-end) are "formatted leaf blocks". All other blocks are "unformatted blocks" containing file contents. Directory items with too many entries or indirect items which are too long to fit into a node spill over into the right leaf neighbour. Block allocation is tracked by free space bitmaps in fixed locations.

By contrast, ext2 and other Berkeley FFS-like file systems of that time simply used a fixed formula for computing inode locations, hence limiting the number of files they may contain. [14] Most such file systems also store directories as simple lists of entries, which makes directory lookups and updates linear time operations and degrades performance on very large directories. The single B+ tree design in ReiserFS avoids both of these problems due to better scalability properties.

Performance

Compared with ext2 and ext3 in version 2.4 of the Linux kernel, when dealing with files under 4  KiB and with tail packing enabled, ReiserFS may be faster. [15]

Before Linux 2.6.33, [16] ReiserFS heavily used the big kernel lock (BKL)—a global kernel-wide lock—which does not scale well for systems with multiple cores, [17] as the critical code parts are only ever executed by one core at a time.

Usage

ReiserFS was the default file system in SuSE Linux since version 6.4 (released in 2000), [18] [19] until switching to ext3 in SUSE Linux Enterprise 10.2 and openSUSE 11, announced in 2006. [20] [21]

Jeff Mahoney of SUSE wrote a post on 14 September 2006 proposing to move from ReiserFS to ext3 for the default installation file system. [17] Some reasons he mentioned were scalability, "performance problems with extended attributes and ACLs", "a small and shrinking development community", and that "Reiser4 is not an incremental update and requires a reformat, which is unreasonable for most people." [17] On October 4 he wrote a response comment on a blog in order to clear up some issues. [22] He wrote that his proposal for the switch was unrelated to Hans Reiser being under trial for murder. [23] [ failed verification ] Mahoney wrote he "was concerned that people would make a connection where none existed" and that "the timing is entirely coincidental and the motivation is unrelated." [22]

Criticism

Some directory operations (including unlink(2)) are not synchronous on ReiserFS, which can result in data corruption with applications relying heavily on file-based locks (such as mail transfer agents qmail [24] and Postfix [25] ) if the machine halts before it has synchronized the disk. [26]

There are no programs to specifically defragment a ReiserFS file system, although tools have been written to automatically copy the contents of fragmented files hoping that more contiguous blocks of free space can be found. However, a "repacker" tool was planned for the next Reiser4 file system to deal with file fragmentation. [27] Fragmentation is still an issue with SSD regardless of file system. [28]

fsck

ReiserFS 3's fsck is capable of rebuilding the whole tree as part of the rescue in case of its total corruption. This action has to be explicitly initiated by administrator and is not part of normal operation. Predictably, the process is destructive and may further corrupt existing files or introduce new entries with unexpected contents, which has been criticized as less than optimal method. [29]

ReiserFS v3 images should not be stored on a ReiserFS v3 partition (e.g. backups or disk images for emulators) without transforming them (e.g., by compressing or encrypting) in order to avoid confusing the rebuild. Reformatting an existing ReiserFS v3 partition can also leave behind data that could confuse the rebuild operation and make files from the old system reappear. This also allows malicious users to intentionally store files that will confuse the rebuilder. As the metadata is always in a consistent state after a file system check, corruption here means that contents of files are merged in unexpected ways with the contained file system's metadata. This is similar to the FSID problem in btrfs. The ReiserFS successor, Reiser4, fixes this problem.

ReiserFS in versions of the Linux kernel before 2.4.16 were considered unstable by Namesys and not recommended for production use, especially in conjunction with NFS. [30]

Early implementations of ReiserFS (prior to that in Linux 2.6.2) were also susceptible to out-of-order write hazards. But the current journaling implementation in ReiserFS is now on par with that of ext3's "ordered" journaling level.[ citation needed ]

See also

Related Research Articles

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 of June 2014, XFS is supported by most Linux distributions; Red Hat Enterprise Linux uses it as its default file system.

ext2, or second extended file system, is a file system for the Linux kernel. It was initially designed by French software developer Rémy Card as a replacement for the extended file system (ext). Having been designed according to the same principles as the Berkeley Fast File System from BSD, it was the first commercial-grade filesystem for Linux.

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 extending ext2 in Journaling the Linux ext2fs Filesystem in a 1998 paper, and later in a February 1999 kernel mailing list posting. The filesystem was merged with the mainline Linux kernel in November 2001 from 2.4.15 onward. Its main advantage over ext2 is journaling, which improves reliability and eliminates the need to check the file system after an unclean shutdown. Its successor is ext4.

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.

Reiser4 is a computer file system, successor to the ReiserFS file system, developed from scratch by Namesys and sponsored by DARPA as well as Linspire. Reiser4 was named after its former lead developer Hans Reiser. As of 2021, the Reiser4 patch set is still being maintained, but according to Phoronix, it is unlikely to be merged into mainline Linux without corporate backing.

The inode 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 attributes may include metadata, as well as owner and permission data.

In computing, the Global File System 2 or GFS2 is a shared-disk file system for Linux computer clusters. GFS2 allows all members of a cluster to have direct concurrent access to the same shared block storage, in contrast to distributed file systems which distribute data throughout the cluster. GFS2 can also be used as a local file system on a single computer.

In computing, an extent is a contiguous area of storage reserved for a file in a file system, represented as a range of block numbers, or tracks on count key data devices. A file can consist of zero or more extents; one file fragment requires one extent. The direct benefit is in storing each range compactly as two numbers, instead of canonically storing every block number in the range. Also, extent allocation results in less file fragmentation.

In Linux, Logical Volume Manager (LVM) is a device mapper framework that provides logical volume management for the Linux kernel. Most modern Linux distributions are LVM-aware to the point of being able to have their root file systems on a logical volume.

Extended file attributes are file system features that enable users to associate computer files with metadata not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem. Unlike forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the character encoding of a plain-text document, or a checksum, cryptographic hash or digital certificate, and discretionary access control information.

Enterprise Volume Management System (EVMS) was a flexible, integrated volume management software used to manage storage systems under Linux.

The following tables compare general and technical information for a number of file systems.

e2fsprogs is a set of utilities for maintaining the ext2, ext3 and ext4 file systems. Since those file systems are often the default for Linux distributions, it is commonly considered to be essential software.

ext4 is a journaling file system for Linux, developed as the successor to ext3.

dm-crypt is a transparent block device encryption subsystem in Linux kernel versions 2.6 and later and in DragonFly BSD. It is part of the device mapper (dm) infrastructure, and uses cryptographic routines from the kernel's Crypto API. Unlike its predecessor cryptoloop, dm-crypt was designed to support advanced modes of operation, such as XTS, LRW and ESSIV, in order to avoid watermarking attacks. In addition to that, dm-crypt addresses some reliability problems of cryptoloop.

Btrfs is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager, developed together. It was founded by Chris Mason in 2007 for use in Linux, and since November 2013, the file system's on-disk format has been declared stable in the Linux kernel.

Ceph is a free and open-source software-defined storage platform that provides object storage, block storage, and file storage built on a common distributed cluster foundation. Ceph provides completely distributed operation without a single point of failure and scalability to the exabyte level, and is freely available. Since version 12 (Luminous), Ceph does not rely on any other conventional filesystem and directly manages HDDs and SSDs with its own storage backend BlueStore and can expose a POSIX filesystem.

Bcachefs is a copy-on-write (COW) file system for Linux-based operating systems. Its primary developer, Kent Overstreet, first announced it in 2015, and it was added to the Linux kernel beginning with 6.7. It is intended to compete with the modern features of ZFS or Btrfs, and the speed and performance of ext4 or XFS. It self-describes as "stable", as of December 2022.

References

  1. Reiser FS node layout, Namesys, archived from the original on 2006-06-14
  2. 1 2 3 "Reiser FS Specifications", FAQ, Namesys, archived from the original on 2006-07-05
  3. Shankland, Stephen (2006-10-16). "Novell makes file storage software shift". Business Tech. cnet..
  4. Shankland, Stephen (January 16, 2008). "Namesys vanishes, but Reiser project lives on". CNet. Archived from the original on March 27, 2016. Retrieved 2008-01-26.
  5. ""Fossies" - the Fresh Open Source Software Archive". July 25, 2017. Retrieved 2019-07-25.
  6. "Linux Developers Discuss Deprecating & Removing ReiserFS". www.phoronix.com. Retrieved 2022-03-10.
  7. "Is it time to remove reiserfs? - Matthew Wilcox". lore.kernel.org. Retrieved 2022-02-24.
  8. "Re: Is it time to remove reiserfs? - Dave Chinner". lore.kernel.org. Retrieved 2022-03-10.
  9. "Linux_5.18". Linux Kernel Newbies. Retrieved 2022-05-23.
  10. Purdy, Kevin (2023-08-31). "ReiserFS is now "obsolete" in the Linux kernel and should be gone by 2025". Ars Technica. Retrieved 2023-09-01.
  11. Larabel, Michael. "Linux's ReiserFS Plan Is To Deprecate It, Remove The File-System In 2025". Phoronix . Retrieved 20 June 2023.
  12. "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Retrieved 2022-05-22.
  13. Reiser, Hans. "Reiser4 is Released!". Archived from the original on 2007-10-24. Retrieved 2006-07-15.
  14. Mingming Cao; Theodore Y. Ts'o; Badari Pulavarty; Suparna Bhattacharya (2005-07-26). "State of the Art: Where we are with the Ext3 file system". 2005 Linux Symposium. Ottawa, Canada: IBM Linux Technology Center. Retrieved 2007-03-08.
  15. "PHP Manual". php.net. The PHP Group. Retrieved 5 December 2018.
  16. "kill-the-BKL". git.kernel.org.
  17. 1 2 3 Jeff Mahoney (2006-09-14). "Proposal: Change in Default FS for Releases >= 10.2". gmane.org. Retrieved 2009-08-23..
  18. "Archive:SuSE Linux 6.4". openSUSE wiki. Retrieved 2017-06-28.
  19. "SUSE LINUX 9.1 Administration Guide: Major File Systems in Linux". Novell. Retrieved 2017-06-28.
  20. Shankland, Stephen (16 October 2006). "Novell makes file storage software shift". CNET.
  21. Sharma, Mayank (12 October 2006). "Novell will switch from ReiserFS to ext3". Linux.com.
  22. 1 2 comment by Jeff Mahoney (2006-10-04). "SUSE 10.2 Ditching ReiserFS as its'[sic] default FS? (comment 29)". linux.wordpress.com. Archived from the original on 2006-11-09. Retrieved 2009-08-23.
  23. CBS 5 / AP / BCN (2006-09-14). "Oakland Police Search Home Of Missing Woman's Ex". Archived from the original on 2006-11-06. Retrieved 2009-08-23.{{cite web}}: CS1 maint: numeric names: authors list (link)
  24. Daniel Robbins (2001), "Advanced file system implementor's guide". Retrieved 5. July 2006
  25. Matthias Andree (2001), LKML post on Postfix synchronity assumptions. Retrieved 15. July 2006
  26. NEOHAPSIS - Peace of Mind Through Integrity and Insight
  27. Hans Reiser, Reiser4 design, repacker Archived 2007-10-24 at the Wayback Machine . Retrieved 5. July 2006
  28. Martín Farach-Colton, "File System Aging", archived webarchive, 2021
  29. Theodore Ts'o LKML post. Retrieved 5. July 2006
  30. ReiserFS download page, see warning. Retrieved 5. July 2006