ReiserFS: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Random-user564
 
Line 35: Line 35:
'''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.<ref>{{cite news | first = Stephen |last=Shankland |title=Novell makes file storage software shift |url=http://www.cnet.com/news/novell-makes-file-storage-software-shift/ |work=Business Tech |publisher=cnet |date= 2006-10-16}}.</ref>
'''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.<ref>{{cite news | first = Stephen |last=Shankland |title=Novell makes file storage software shift |url=http://www.cnet.com/news/novell-makes-file-storage-software-shift/ |work=Business Tech |publisher=cnet |date= 2006-10-16}}.</ref>


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.<ref>{{cite web | url=http://www.cnet.com/news/namesys-vanishes-but-reiser-project-lives-on/ | archive-url=https://web.archive.org/web/20160327005558/http://www.cnet.com/news/namesys-vanishes-but-reiser-project-lives-on/ | url-status=dead | archive-date=March 27, 2016 | title=Namesys vanishes, but Reiser project lives on | work=CNet | date=January 16, 2008 | access-date=2008-01-26 |first = Stephen | last = Shankland}}</ref> The reiserfsprogs 3.6.27 were released on 25 July 2017.<ref>{{cite web | url=https://fossies.org/linux/reiserfsprogs/ChangeLog | title="Fossies" - the Fresh Open Source Software Archive | date=July 25, 2017 | access-date=2019-07-25 }}</ref>
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.<ref>{{cite web | url=http://www.cnet.com/news/namesys-vanishes-but-reiser-project-lives-on/ | archive-url=https://web.archive.org/web/20160327005558/http://www.cnet.com/news/namesys-vanishes-but-reiser-project-lives-on/ | url-status=dead | archive-date=March 27, 2016 | title=Namesys vanishes, but Reiser project lives on | work=CNet | date=January 16, 2008 | access-date=2008-01-26 |first = Stephen | last = Shankland}}</ref> The reiserfsprogs 3.6.27 were released on 25 July 2017.<ref>{{cite web | url=https://fossies.org/linux/reiserfsprogs/ChangeLog | title="Fossies" - the Fresh Open Source Software Archive | date=July 25, 2017 | access-date=2019-07-25 | archive-date=2019-07-25 | archive-url=https://web.archive.org/web/20190725210844/https://fossies.org/linux/reiserfsprogs/ChangeLog | url-status=dead }}</ref>


As of [[Linux]] 6.12, ReiserFS is supported on Linux without quota support. Due to technical issues inherent to the file system and lack of maintenance, the Linux community had been discussing removal of ReiserFS from mainline since at least early 2022. ReiserFS was removed from the Linux kernel in version 6.13.<ref name=":0">{{Cite web |title=Merge tag 'reiserfs_delete' |url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c01f664e4ca210823b7594b50669bbd9b0a3c3b0 |access-date=2024-11-24 |website=git.kernel.org}}</ref><ref name=":1">{{Cite web |last=Larabel |first=Michael |date=2024-11-21 |title=ReiserFS Has Been Deleted From The Linux Kernel |url=https://www.phoronix.com/news/ReiserFS-Deleted-Linux-6.13 |access-date=2024-11-24 |website=www.phoronix.com |language=en}}</ref>
As of [[Linux]] 6.12, ReiserFS is supported on Linux without quota support. Due to technical issues inherent to the file system and lack of maintenance, the Linux community had been discussing removal of ReiserFS from mainline since at least early 2022. ReiserFS was removed from the Linux kernel in version 6.13.<ref name=":0">{{Cite web |title=Merge tag 'reiserfs_delete' |url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c01f664e4ca210823b7594b50669bbd9b0a3c3b0 |access-date=2024-11-24 |website=git.kernel.org}}</ref><ref name=":1">{{Cite web |last=Larabel |first=Michael |date=2024-11-21 |title=ReiserFS Has Been Deleted From The Linux Kernel |url=https://www.phoronix.com/news/ReiserFS-Deleted-Linux-6.13 |access-date=2024-11-24 |website=www.phoronix.com |language=en}}</ref>
Line 45: Line 45:
ReiserFS stores file metadata ("stat items"), [[Directory (computing)|directory]] entries ("directory items"), [[inode]] block lists ("indirect items"), and tails of [[computer file|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 bitmap]]s in fixed locations.
ReiserFS stores file metadata ("stat items"), [[Directory (computing)|directory]] entries ("directory items"), [[inode]] block lists ("indirect items"), and tails of [[computer file|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 bitmap]]s in fixed locations.


By contrast, [[ext2]] and other Berkeley [[Unix File System|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.<ref>{{cite conference |author1=Mingming Cao |author2=Theodore Y. Ts'o |author2-link=Theodore Y. Ts'o |author3=Badari Pulavarty |author4=Suparna Bhattacharya |author4-link=Suparna Bhattacharya |date=2005-07-26 |title=State of the Art: Where we are with the Ext3 file system |publisher=IBM Linux Technology Center |book-title=2005 Linux Symposium |location=Ottawa, Canada |url=http://ext2.sourceforge.net/2005-ols/paper-html/node40.html |access-date=2007-03-08 }}</ref> Most such file systems also store directories as simple lists of entries, which makes directory lookups and updates [[Time complexity#Linear time|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.
By contrast, [[ext2]] and other Berkeley [[Unix File System|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.<ref>{{cite conference |author1=Mingming Cao |author2=Theodore Y. Ts'o |author2-link=Theodore Y. Ts'o |author3=Badari Pulavarty |author4=Suparna Bhattacharya |author4-link=Suparna Bhattacharya |date=2005-07-26 |title=State of the Art: Where we are with the Ext3 file system |publisher=IBM Linux Technology Center |book-title=2005 Linux Symposium |location=Ottawa, Canada |url=https://ext2.sourceforge.net/2005-ols/paper-html/node40.html |access-date=2007-03-08 }}{{Dead link|date=October 2025 |bot=InternetArchiveBot }}</ref> Most such file systems also store directories as simple lists of entries, which makes directory lookups and updates [[Time complexity#Linear time|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==
==Performance==
Line 60: Line 60:


==Criticism==
==Criticism==
Some directory operations (including {{mono|unlink}}(2)) are not [[Synchronization|synchronous]] on ReiserFS, which can result in data corruption with applications relying heavily on file-based locks (such as [[Message transfer agent|mail transfer agents]] like [[qmail]]<ref>Daniel Robbins (2001), [http://www-128.ibm.com/developerworks/library/l-fs2.html#h21367 "Advanced file system implementor's guide"]. Retrieved 5. July 2006</ref> and [[Postfix (software)|Postfix]]<ref>Matthias Andree (2001), [[Linux kernel mailing list|LKML]] post on [http://www.ussg.iu.edu/hypermail/linux/kernel/0107.3/0358.html Postfix synchronity assumptions]. Retrieved 15. July 2006</ref>)  if the machine halts before it has synchronized the disk.<ref>[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html NEOHAPSIS - Peace of Mind Through Integrity and Insight<!-- Bot generated title -->]</ref>
Some directory operations (including {{mono|unlink}}(2)) are not [[Synchronization|synchronous]] on ReiserFS, which can result in data corruption with applications relying heavily on file-based locks (such as [[Message transfer agent|mail transfer agents]] like [[qmail]]<ref>Daniel Robbins (2001), [http://www-128.ibm.com/developerworks/library/l-fs2.html#h21367 "Advanced file system implementor's guide"]. Retrieved 5. July 2006</ref> and [[Postfix (software)|Postfix]]<ref>Matthias Andree (2001), [[Linux kernel mailing list|LKML]] post on [http://www.ussg.iu.edu/hypermail/linux/kernel/0107.3/0358.html Postfix synchronity assumptions]. Retrieved 15. July 2006</ref>)  if the machine halts before it has synchronized the disk.<ref>{{Cite web |url=http://archives.neohapsis.com/archives/postfix/2001-05/1749.html |title=NEOHAPSIS - Peace of Mind Through Integrity and Insight<!-- Bot generated title --> |access-date=2007-02-06 |archive-date=2007-09-28 |archive-url=https://web.archive.org/web/20070928035352/http://archives.neohapsis.com/archives/postfix/2001-05/1749.html |url-status=dead }}</ref>


There are no programs to specifically [[defragmentation|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.<ref>Hans Reiser, [http://www.namesys.com/v4/v4.html#repacker Reiser4 design, repacker] {{webarchive|url=https://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html |date=2007-10-24 }}. Retrieved 5. July 2006</ref> Fragmentation is still an issue with [[SSD]] regardless of file system.<ref>Martín Farach-Colton, [http://cs.williams.edu/~jannen/teaching/s21/cs333/meetings/aging-slides.pdf "File System Aging"], archived [https://web.archive.org/web/20211115000000*/http://cs.williams.edu/~jannen/teaching/s21/cs333/meetings/aging-slides.pdf webarchive, 2021]</ref>
There are no programs to specifically [[defragmentation|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.<ref>Hans Reiser, [http://www.namesys.com/v4/v4.html#repacker Reiser4 design, repacker] {{webarchive|url=https://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html |date=2007-10-24 }}. Retrieved 5. July 2006</ref> Fragmentation is still an issue with [[SSD|solid-state drives]] regardless of file system.<ref>Martín Farach-Colton, [http://cs.williams.edu/~jannen/teaching/s21/cs333/meetings/aging-slides.pdf "File System Aging"], archived [https://web.archive.org/web/20211115000000*/http://cs.williams.edu/~jannen/teaching/s21/cs333/meetings/aging-slides.pdf webarchive, 2021]</ref>


===fsck===
===fsck===

Latest revision as of 22:58, 14 November 2025

Template:Short description Script error: No such module "Distinguish". Script error: No such module "about".

Script error: No such module "Infobox".Template:Template other

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

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.[2] The reiserfsprogs 3.6.27 were released on 25 July 2017.[3]

As of Linux 6.12, ReiserFS is supported on Linux without quota support. Due to technical issues inherent to the file system and lack of maintenance, the Linux community had been discussing removal of ReiserFS from mainline since at least early 2022. ReiserFS was removed from the Linux kernel in version 6.13.[4][5]

Features

At the time of its introduction, ReiserFS offered features that had not been available in existing Linux file systems. These include 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.[6]

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

Before Linux 2.6.33,[9] ReiserFS heavily used the big kernel lock (BKL)—a global kernel-wide lock—which does not scale well for systems with multiple cores,[10] 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),[11][12] until switching to ext3 in SUSE Linux Enterprise 10.2 and openSUSE 11, announced in 2006.[13][14]

Jeff Mahoney of SUSE wrote a post on 14 September 2006 proposing to move from ReiserFS to ext3 for the default installation file system.[10] The reasons he mentioned included 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."[10] On October 4 he wrote a response comment on a blog in order to clear up some issues.[15] He wrote that his proposal for the switch was unrelated to Hans Reiser being under trial for murder.[16]Script error: No such module "Unsubst". 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."[15]

ReiserFS 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 suffering from the year 2038 problem;[17][18][19] it was deprecated in Linux 5.18,[20] and marked as obsolete in Linux 6.6,[21] then removed from mainline during the Linux 6.13 development cycle.[22][23][24][5][4]

Criticism

Some directory operations (including Template:Mono(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 like qmail[25] and Postfix[26]) if the machine halts before it has synchronized the disk.[27]

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.[28] Fragmentation is still an issue with solid-state drives regardless of file system.[29]

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 a less than optimal method.[30]

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

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.Script error: No such module "Unsubst".

See also

References

Template:Reflist

External links

Template:File systems

  1. Script error: No such module "citation/CS1"..
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. a b Script error: No such module "citation/CS1".
  5. a b Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".Template:Dead link
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. a b c Script error: No such module "citation/CS1"..
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. a b Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "citation/CS1".
  19. Script error: No such module "citation/CS1".
  20. Script error: No such module "citation/CS1".
  21. Script error: No such module "citation/CS1".
  22. Script error: No such module "citation/CS1".
  23. Script error: No such module "citation/CS1".
  24. Script error: No such module "citation/CS1".
  25. Daniel Robbins (2001), "Advanced file system implementor's guide". Retrieved 5. July 2006
  26. Matthias Andree (2001), LKML post on Postfix synchronity assumptions. Retrieved 15. July 2006
  27. Script error: No such module "citation/CS1".
  28. Hans Reiser, Reiser4 design, repacker Template:Webarchive. Retrieved 5. July 2006
  29. Martín Farach-Colton, "File System Aging", archived webarchive, 2021
  30. Theodore Ts'o LKML post. Retrieved 5. July 2006
  31. ReiserFS download page, see warning. Retrieved 5. July 2006