Разработчик(и) | Namesys |
---|---|
Полное имя | ReiserFS |
Введено | 2001 Linux 2.4.1 ( 2001 ) | с
Идентификаторы разделов |
|
Структуры | |
Содержимое каталога | B+ дерево |
Распределение файлов | Растровое изображение [1] |
Пределы | |
Максимальный размер тома | 16 ТиБ [2] |
Максимальный размер файла | 1 ЭБ (8 ТиБ на 32-битных системах) [2] |
Макс . кол- во файлов | 2 32 −3 (~4 миллиарда) [2] |
Максимальная длина имени файла | 4032 байта, ограничено 255 байтами Linux VFS |
Допустимые символы в имени файла | Все байты, кроме NUL и '/' |
Функции | |
Даты записаны | Изменение (mtime), изменение метаданных (ctime), доступ (atime) |
Диапазон дат | 14 декабря 1901 г. – 18 января 2038 г. (32-битное время Unix) |
Разрешение даты | 1 с |
Вилки | Расширенные атрибуты |
Разрешения файловой системы | Разрешения Unix, списки контроля доступа и произвольные атрибуты безопасности |
Прозрачное сжатие | Нет |
Прозрачное шифрование | Нет |
Другой | |
Поддерживаемые операционные системы | Linux, ReactOS |
ReiserFS — это универсальная журналируемая файловая система , изначально разработанная и реализованная командой Namesys под руководством Ганса Рейзера и лицензированная по GPLv2 . Представленная в версии 2.4.1 ядра Linux , она была первой журналируемой файловой системой, включенной в стандартное ядро. ReiserFS была файловой системой по умолчанию в SUSE Linux Enterprise от Novell , пока Novell не решила перейти на ext3 для будущих выпусков 12 октября 2006 года. [3]
Версия ReiserFS 3.6, теперь иногда называемая Reiser3, представила новый формат на диске, позволяющий файлы большего размера. Namesys посчитала ReiserFS стабильной и функционально полной и прекратила разработку, чтобы сосредоточиться на ее преемнике Reiser4 , хотя она продолжала выпускать обновления безопасности и исправления критических ошибок. Namesys прекратила свою деятельность в 2008 году после осуждения Рейзера за убийство. В настоящее время продукт поддерживается как открытый исходный код добровольцами. [4] Reiserfsprogs 3.6.27 были выпущены 25 июля 2017 года. [5]
Начиная с Linux 6.12, ReiserFS поддерживается в Linux без поддержки квот. Из-за технических проблем, присущих файловой системе, и отсутствия обслуживания сообщество Linux обсуждало удаление ReiserFS из основной ветки по крайней мере с начала 2022 года. ReiserFS была удалена из ядра Linux в версии 6.13. [6] [7]
На момент своего появления ReiserFS предлагала функции, которые не были доступны в существующих файловых системах Linux. К ним относится упаковка хвостов — схема снижения внутренней фрагментации за счет производительности. Reiser4, возможно, улучшил это, упаковав хвосты там, где это не оказывает отрицательного влияния на производительность. [8]
ReiserFS хранит метаданные файлов («stat items»), записи каталогов («directory items»), списки блоков inode («indirect items») и хвосты файлов («direct items») в одном объединенном дереве B+ , ключом которого является универсальный идентификатор объекта. Дисковые блоки, выделенные узлам дерева, являются «форматированными внутренними блоками». Блоки для листовых узлов (в которых элементы упакованы сквозным образом) являются «форматированными листовыми блоками». Все остальные блоки являются «неформатированными блоками», содержащими содержимое файлов. Элементы каталога со слишком большим количеством записей или косвенные элементы, которые слишком длинные для размещения в узле, перетекают в правого листового соседа. Распределение блоков отслеживается с помощью битовых карт свободного пространства в фиксированных местах.
Напротив, ext2 и другие файловые системы Berkeley FFS того времени просто использовали фиксированную формулу для вычисления местоположений inode, тем самым ограничивая количество файлов, которые они могли содержать. [9] Большинство таких файловых систем также хранят каталоги как простые списки записей, что делает операции поиска и обновления каталогов линейными по времени и снижает производительность на очень больших каталогах. Единая конструкция дерева B+ в ReiserFS позволяет избежать обеих этих проблем благодаря лучшим свойствам масштабируемости.
По сравнению с ext2 и ext3 в версии 2.4 ядра Linux, при работе с файлами размером менее 4 КБ и включенной упаковке хвостов, ReiserFS может быть быстрее. [10]
До Linux 2.6.33 [11] ReiserFS активно использовала большую блокировку ядра (BKL) — глобальную блокировку всего ядра, — которая плохо масштабируется для систем с несколькими ядрами, [12] поскольку критические части кода выполняются только одним ядром за раз.
ReiserFS была файловой системой по умолчанию в SUSE Linux, начиная с версии 6.4 (выпущенной в 2000 году) [13] [14] до перехода на ext3 в SUSE Linux Enterprise 10.2 и openSUSE 11, анонсированного в 2006 году. [15] [16]
Джефф Махони из SUSE написал пост 14 сентября 2006 года, предлагая перейти с ReiserFS на ext3 для установочной файловой системы по умолчанию. [12] Причины, которые он упомянул, включали масштабируемость, «проблемы производительности с расширенными атрибутами и ACL », «небольшое и сокращающееся сообщество разработчиков», и то, что « Reiser4 не является инкрементным обновлением и требует переформатирования, что неразумно для большинства людей». [12] 4 октября он написал ответный комментарий в блоге, чтобы прояснить некоторые вопросы. [17] Он написал, что его предложение о переходе не было связано с тем, что Ганс Райзер находится под судом за убийство. [18] [ проверка не удалась ] Махони написал, что он «обеспокоен тем, что люди установят связь там, где ее не было», и что «время полностью случайно, а мотивация не имеет отношения к делу». [17]
ReiserFS обсуждался на предмет удаления из ядра Linux с начала 2022 года из-за отсутствия поддержки в апстриме и технических проблем, присущих файловой системе, таких как проблема 2038 года ; [19] [20] [21] он был объявлен устаревшим в Linux 5.18, [22] и помечен как устаревший в Linux 6.6, [23] с запланированным полным удалением в Linux 6.13. [24] [25] [26] ReiserFS был удален из основной ветки во время цикла разработки Linux 6.13. [7] [6]
Некоторые операции с каталогами (включая unlink (2)) не являются синхронными в ReiserFS, что может привести к повреждению данных в приложениях, в значительной степени зависящих от блокировок на основе файлов (например, агенты передачи почты, такие как qmail [27] и Postfix [28] ), если машина останавливается до того, как она синхронизирует диск. [29]
Нет программ для специальной дефрагментации файловой системы ReiserFS, хотя были написаны инструменты для автоматического копирования содержимого фрагментированных файлов в надежде на то, что можно будет найти больше смежных блоков свободного пространства. Однако для следующей файловой системы Reiser4 был запланирован инструмент «перепаковки», чтобы справиться с фрагментацией файлов. [30] Фрагментация по-прежнему является проблемой SSD независимо от файловой системы. [31]
Fsck ReiserFS 3 способен перестроить все дерево в рамках спасения в случае его полного повреждения. Это действие должно быть явно инициировано администратором и не является частью нормальной работы. Как и ожидалось, этот процесс является разрушительным и может еще больше повредить существующие файлы или ввести новые записи с неожиданным содержимым, что было раскритиковано как не самый оптимальный метод. [32]
Образы ReiserFS v3 не следует хранить на разделе ReiserFS v3 (например, резервные копии или образы дисков для эмуляторов) без их преобразования (например, путем сжатия или шифрования), чтобы избежать путаницы при перестроении. Переформатирование существующего раздела ReiserFS v3 также может оставить данные, которые могут запутать операцию перестроения и привести к повторному появлению файлов из старой системы. Это также позволяет злоумышленникам намеренно хранить файлы, которые запутают перестроителя. Поскольку метаданные всегда находятся в согласованном состоянии после проверки файловой системы, повреждение здесь означает, что содержимое файлов объединяется неожиданным образом с метаданными содержащейся файловой системы. Это похоже на проблему FSID в btrfs . Преемник ReiserFS, Reiser4, устраняет эту проблему.
ReiserFS в версиях ядра Linux до 2.4.16 считалась компанией Namesys нестабильной и не рекомендовалась для использования в производственных целях, особенно в сочетании с NFS . [33]
Ранние реализации ReiserFS (до Linux 2.6.2) также были подвержены рискам неупорядоченной записи. Но текущая реализация журналирования в ReiserFS теперь находится на одном уровне с "упорядоченным" уровнем журналирования ext3 . [ необходима цитата ]
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )