История ReiserFS: от прорыва в Linux до удаления из ядра после ареста создателя

2026-03-25 204 комментарии
ReiserFS решала проблему медленного поиска файлов в Ext2 с помощью B+-деревьев и компактного размещения мелких файлов в неиспользуемом пространстве блоков

Разработчики ядра Linux окончательно удалили файловую систему ReiserFS из кодовой базы ядра версии 6.13. Проект, который в начале 2000-х обещал значительно улучшить работу с файлами в Linux, не смог пережить арест и осуждение своего создателя — Ханса Райзера (Hans Reiser). В 2008 году суд присяжных округа Аламида (штат Калифорния) признал его виновным в убийстве жены. Без поддержки автора и компании Namesys файловая система постепенно устарела, а её код — 32,8 тысячи строк — был вычищен из ядра.

Проблема: линейный поиск тормозил серверы

В ранних версиях Linux файловые системы не отличались производительностью. Ext2 — основная файловая система того времени — хранила записи каталогов в виде линейного списка. Для поиска нужного файла система проверяла каждую запись по порядку. Когда в каталоге накапливались миллионы файлов — а на почтовых серверах это обычное дело — производительность резко падала.

В Linux всё является файлом, и каталоги — не исключение. Каталог — это специальный файл, который хранит список записей о содержимом. За кулисами стоит структура inode, но суть та же: поиск файла в большом каталоге через Ext2 требовал перебора всех записей подряд.

inode — структура данных в файловых системах Unix/Linux, которая хранит метаданные файла: размер, владельца, права доступа, временные метки и указатели на блоки данных на диске.

B-деревья: быстрый доступ к миллионам файлов

ReiserFS решала проблему производительности с помощью B+-деревьев — самобалансирующихся структур данных. Поиск в дереве с триллионами элементов занимает всего несколько десятков операций. Для сравнения: линейный поиск в Ext2 деградировал с каждым добавленным файлом.

Разработчики ReiserFS хранили в едином B+-дереве и метаданные, и данные файлов. Такой подход был нетипичен для файловых систем того времени и устранял узкие места при операциях с метаданными. В дереве размещались записи каталогов, списки блоков inode, элементы статистики и хвосты файлов.

B+-дерево — самобалансирующаяся древовидная структура данных, в которой все значения хранятся в листовых узлах, а внутренние узлы содержат только ключи для навигации. Обеспечивает логарифмическую сложность поиска, вставки и удаления.

Упаковка хвостов: экономия дискового пространства

Большинство файловых систем выделяют место блоками фиксированного размера — обычно 4 КБ. Файл размером 6 КБ занимает два блока, и половина второго блока остаётся пустой. ReiserFS упаковывала маленькие файлы в неиспользуемое пространство блока — так называемую «хвостовую» часть (tail packing).

На практике это означало заметную экономию места для серверов с множеством мелких файлов. В начале 2000-х это были практически все почтовые, веб- и файловые серверы.

Включение в ядро и признание индустрии

В 2001 году разработчики включили ReiserFS в основную ветку ядра Linux начиная с версии 2.4.1. Файловая система стала первой журналируемой ФС в стандартном ядре. Компания Novell сделала её файловой системой по умолчанию в SUSE Linux Enterprise — и использовала вплоть до 2006 года, когда перешла на Ext3.

Перспективы выглядели многообещающе. Ханс Райзер и его компания Namesys вели работу над преемником — Reiser4, который должен был развить идеи оригинальной файловой системы.

Журналируемая файловая система — файловая система, которая ведёт журнал (лог) изменений перед их фактической записью на диск. При сбое питания или аварии система может восстановить целостность данных, повторив или отменив незавершённые операции из журнала.

Убийство и крах Namesys

суд присяжных округа Аламида признал Ханса Райзера виновным в убийстве первой степени. Его жена Нина Райзер — врач-акушер, получившая образование в России — исчезла .

На протяжении всего уголовного процесса Райзер отрицал свою причастность. Однако после вынесения обвинительного вердикта прокурор и судья согласились на сделку: признание вины и указание места захоронения тела в обмен на переквалификацию обвинения с убийства первой степени на убийство второй степени. Наказание — от 15 лет до пожизненного заключения.

В записанном на плёнку признании Райзер рассказал, что ударил жену в лицо, а затем задушил. В это время их дети играли в компьютерные игры этажом ниже. он привёл полицию к неглубокой могиле в холмах Окленда, примерно в полумиле от их дома.

На гражданском процессе о неправомерной гибели в 2012 году Райзер заявил, что его жена страдала делегированным синдромом Мюнхгаузена и выдумывала болезни у детей. Он также сравнил себя с Моисеем, убившим надсмотрщика и спрятавшим тело в песке. Суд не принял его доводы — присяжные обязали Райзера выплатить детям 60 миллионов долларов компенсации.

Делегированный синдром Мюнхгаузена — психическое расстройство, при котором родитель или опекун намеренно вызывает или имитирует симптомы заболевания у ребёнка либо другого зависимого лица, чтобы привлечь к себе внимание и сочувствие. Расценивается как форма жестокого обращения с детьми.

Компания Namesys прекратила коммерческую деятельность к началу 2008 года. Ханс Райзер лишился свободы, семьи и своего главного проекта.

Технический закат и удаление из ядра

Без активной разработки в ReiserFS накопились технические проблемы. Обнаружились случаи повреждения файлов — в частности, асинхронные операции unlink могли приводить к потере данных в приложениях, активно использующих файловые блокировки (почтовые агенты qmail, Postfix). Файловая система использовала устаревшие API ядра, включая глобальную блокировку BKL, которая плохо масштабировалась на многоядерных процессорах.

ReiserFS также оказалась затронута проблемой 2038 года — переполнением 32-битной метки времени Unix . Хотя сама файловая система могла хранить даты до 2106 года, модернизация вместе с ядром не проводилась.

В 2022 году разработчики ядра присвоили файловой системе ReiserFS статус устаревшей в Linux 5.18, а в Linux 6.6 перевели в категорию неподдерживаемой (obsolete). 21 ноября 2024 года Линус Торвальдс принял запрос на удаление, и в ядре Linux 6.13 код ReiserFS был вычищен полностью.

© . По материалам howtogeek
Комментарии и отзывы

Нашли ошибку?

Новое на сайте