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
ReiserFS
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|Journaling file system}} {{Distinguish|ReFS}} {{About|ReiserFS version 3|version 4|Reiser4}} {{Infobox file system | name = ReiserFS 3.6 | full_name = ReiserFS | developer = [[Namesys]] | introduction_os = [[Linux]] 2.4.1 | introduction_date = {{Start date and age|2001}} | OS = Linux, [[ReactOS]] | partition_id = {{indented plainlist| * {{mono|Apple_UNIX_SVR2}} ([[Apple Partition Map]]) * {{mono|0x83}} ([[Master boot record|MBR]]) * {{mono|[[Microsoft basic data partition|EBD0A0A2-B9E5-4433-87C0-68B6B72699C7]]}} ([[GUID Partition Table|GPT]]) }} | directory_struct = [[B+ tree]] | file_struct = [[bit array|Bitmap]]<ref>{{citation | url = http://namesys.com/X0reiserfs.html#nodelayout | publisher = Namesys | title = Reiser FS node layout | url-status = dead | archive-url = https://web.archive.org/web/20060614084322/http://www.namesys.com/X0reiserfs.html#nodelayout | archive-date = 2006-06-14 }}</ref> | bad_blocks_struct = | max_filename_size = 4032 bytes, limited to 255 by Linux VFS | max_files_no = 2<sup>32</sup>−3 (~4 billion)<ref name="specs">{{citation | chapter-url = http://namesys.com/faq.html#reiserfsspecs | publisher = Namesys | title = FAQ | chapter = Reiser FS Specifications | url-status = dead | archive-url = https://web.archive.org/web/20060705190506/http://www.namesys.com/faq.html#reiserfsspecs | archive-date = 2006-07-05 }}</ref> | max_volume_size = 16 [[tebibyte|TiB]]<ref name = "specs" /> | max_file_size = 1 [[exbibyte|EiB]] (8 [[tebibyte|TiB]] on 32 bit systems)<ref name = "specs" /> | filename_character_set = All bytes except [[Null character|NUL]] and {{mono|'/'}} | dates_recorded = Modification (mtime), metadata change (ctime), access (atime) | date_range = December 14, 1901 – January 18, 2038 (32-bit Unix time) | date_resolution = 1 s | forks_streams = Extended attributes | attributes = | file_system_permissions = Unix permissions, [[Access control list|ACLs]] and arbitrary security attributes | compression = No | encryption = No }} '''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> 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> ==Features== At the time of its introduction, ReiserFS offered features that had not been available in existing Linux file systems. These include [[Block suballocation#Tail packing|tail packing]]—a scheme to reduce [[Fragmentation (computing)#Internal fragmentation|internal fragmentation]] at cost of performance. Reiser4 may have improved this by packing tails where it does not negatively affect performance.<ref>{{cite web |url=http://www.namesys.com/v4/v4.html#BLOBs |title=Reiser4 is Released! |access-date=2006-07-15 |last=Reiser |first=Hans |url-status=dead |archive-url=https://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html#BLOBs |archive-date=2007-10-24 }}</ref> ==Design== 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. ==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.<ref>{{cite web |title=PHP Manual |url=http://php.net/manual/en/function.session-save-path.php |website=php.net |publisher=The PHP Group |access-date=5 December 2018}}</ref> Before Linux 2.6.33,<ref>{{cite web|url=https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8ebc423238341b52912c7295b045a32477b33f0 |title=kill-the-BKL |website= git.kernel.org}}</ref> ReiserFS heavily used the [[Giant lock#Linux|big kernel lock]] (BKL)—a global kernel-wide lock—which does not scale well for systems with multiple cores,<ref name="mahoney-proposal">{{cite web |author = Jeff Mahoney |url=http://article.gmane.org/gmane.linux.suse.opensuse.devel/4312 | date = 2006-09-14 | title = Proposal: Change in Default FS for Releases >= 10.2 | access-date = 2009-08-23 | website = gmane.org }}.</ref> 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),<ref>{{Cite web|url=https://en.opensuse.org/Archive:SuSE_Linux_6.4|title=Archive:SuSE Linux 6.4|website=openSUSE wiki|access-date=2017-06-28}}</ref><ref>{{Cite web|url=https://www.novell.com/documentation/suse91/suselinux-adminguide/html/apas02.html#sec:filesystems.major.reiser|title=SUSE LINUX 9.1 Administration Guide: Major File Systems in Linux|website=Novell|access-date=2017-06-28}}</ref> until switching to [[ext3]] in [[SUSE Linux Enterprise]] 10.2 and [[openSUSE]] 11, announced in 2006.<ref>{{Cite news|url=https://www.cnet.com/news/novell-makes-file-storage-software-shift/|title=Novell makes file storage software shift|last=Shankland|first=Stephen|date=16 October 2006|work=CNET}}</ref><ref>{{Cite web|url=https://www.linux.com/news/novell-will-switch-reiserfs-ext3|title=Novell will switch from ReiserFS to ext3|last=Sharma|first=Mayank|date=12 October 2006|website=Linux.com}}</ref> Jeff Mahoney of SUSE wrote a post on 14 September 2006 proposing to move from ReiserFS to [[ext3]] for the default installation file system.<ref name="mahoney-proposal" /> The reasons he mentioned included scalability, "performance problems with [[Extended file attributes|extended attributes]] and [[access control list|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."<ref name="mahoney-proposal" /> On October 4 he wrote a response comment on a blog in order to clear up some issues.<ref name="mahoney-comment29">{{cite web|url=http://linux.wordpress.com/2006/09/27/suse-102-ditching-reiserfs-as-it-default-fs/#comment-28534|title=SUSE 10.2 Ditching ReiserFS as {{sic|i|ts'|nolink=y}} default FS? (comment 29)|date=2006-10-04|website=linux.wordpress.com |archive-url=https://web.archive.org/web/20061109162537/http://linux.wordpress.com/2006/09/27/suse-102-ditching-reiserfs-as-it-default-fs/#comment-28534|archive-date=2006-11-09|access-date=2009-08-23|author=comment by Jeff Mahoney}}</ref> He wrote that his proposal for the switch was unrelated to Hans Reiser being under trial for murder.<ref>{{cite web|url=http://cbs5.com/topstories/local_story_256204954.html|title=Oakland Police Search Home Of Missing Woman's Ex|date=2006-09-14|archive-url=https://web.archive.org/web/20061106173127/http://cbs5.com/topstories/local_story_256204954.html|author=CBS 5 / AP / BCN|archive-date=2006-11-06|access-date=2009-08-23|url-status=dead}}</ref>{{Failed verification|date=August 2020}} 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."<ref name="mahoney-comment29" /> 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]];<ref>{{Cite web |title=Linux Developers Discuss Deprecating & Removing ReiserFS |url=https://www.phoronix.com/scan.php?page=news_item&px=ReiserFS-2022-Linux-Deprecation |access-date=2022-03-10 |website=www.phoronix.com |language=en}}</ref><ref>{{Cite web |title=Is it time to remove reiserfs? - Matthew Wilcox |url=https://lore.kernel.org/lkml/YhIwUEpymVzmytdp@casper.infradead.org/ |access-date=2022-02-24 |website=lore.kernel.org}}</ref><ref>{{Cite web |title=Re: Is it time to remove reiserfs? - Dave Chinner |url=https://lore.kernel.org/lkml/20220222221614.GC3061737@dread.disaster.area/ |access-date=2022-03-10 |website=lore.kernel.org}}</ref> it was deprecated in Linux 5.18,<ref>{{Cite web |title=Linux_5.18 |url=https://kernelnewbies.org/Linux_5.18 |access-date=2022-05-23 |website=Linux Kernel Newbies}}</ref> and marked as obsolete in Linux 6.6,<ref>{{Cite web |last=Purdy |first=Kevin |date=2023-08-31 |title=ReiserFS is now "obsolete" in the Linux kernel and should be gone by 2025 |url=https://arstechnica.com/gadgets/2023/08/the-torrid-saga-of-reiserfs-nears-its-end-with-obsolete-label-in-linux-kernel/ |access-date=2023-09-01 |website=Ars Technica |language=en-us}}</ref> with complete removal planned for Linux 6.13.<ref>{{Cite web |last1=Larabel |first1=Michael |title=Linux's ReiserFS Plan Is To Deprecate It, Remove The File-System In 2025 |url=https://www.phoronix.com/news/ReiserFS-Deprecate-Remove-2025 |access-date=2023-06-20 |website=[[Phoronix_Test_Suite#Phoronix_website|Phoronix]]}}</ref><ref>{{Cite web |title=kernel/git/torvalds/linux.git - Linux kernel source tree |url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb103a51640ee32ab01c51e13bf8fca211f25f61 |access-date=2022-05-22 |website=git.kernel.org}}</ref><ref>{{Cite web |last1=Larabel |first1=Michael |title=ReiserFS File-System Expected To Be Removed With Linux 6.13 |url=https://www.phoronix.com/news/Linux-6.13-To-Drop-ReiserFS |access-date=2024-10-20 |website=[[Phoronix_Test_Suite#Phoronix_website|Phoronix]]}}</ref> ReiserFS was removed from mainline during Linux 6.13 development cycle.<ref name=":1" /><ref name=":0" /> ==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> 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> ===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.<ref>[http://www.uwsg.iu.edu/hypermail/linux/kernel/0506.3/0219.html Theodore Ts'o LKML post]. Retrieved 5. July 2006</ref> ReiserFS v3 images should not be stored on a ReiserFS v3 [[Disk partitioning|partition]] (e.g. backups or [[disk image]]s 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 [[Network File System|NFS]].<ref>[http://namesys.com/download.html ReiserFS download page], see warning. Retrieved 5. July 2006</ref> 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|date=August 2020}} ==See also== * [[List of file systems]] * [[Comparison of file systems]] ==References== {{Reflist}} ==External links== * [https://github.com/torvalds/linux/tree/master/fs/reiserfs ReiserFS 3.6 at Linus Torvalds' Git repository] – nowadays (2019) the main development resource of ReiserFS 3 * [https://reiser4.wiki.kernel.org ReiserFS and Reiser4 wiki] * [http://reiser4.wiki.kernel.org/index.php/Reiserfsprogs Reiserfsprogs] * [http://tzukanov.narod.ru/convertfs convertfs], a utility which performs in-place conversion between any two file systems with sparse file support * [http://forums.gentoo.org/viewtopic-p-3081971.html Gentoo Forum Link] – Discussion on ReiserFS fragmentation, including a script for measuring fragmentation and defragmenting files * Windows utilities to access ReiserFS: [http://yareg.akucom.de/ YAReG – Yet Another R(eiser)FStool GUI], [http://www.acc.umu.se/~bosse/ rfsd – ReiserDriver]. {{File systems}} [[Category:2001 software]] [[Category:Disk file systems]] [[Category:File systems supported by the Linux kernel]]
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:About
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite conference
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Distinguish
(
edit
)
Template:Failed verification
(
edit
)
Template:File systems
(
edit
)
Template:Infobox file system
(
edit
)
Template:Mono
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)