Перейти до вмісту

Reiser4

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
Reiser4
РозробникNamesys; Едуард Шишкін (подальша підтримка)
Повна назваReiser4
Представлено2004 (публічні тестові версії) (Linux)
Структура
Вміст директорій«танцювальне дерево» (різновид збалансованого дерева)
Виділення простору під файлиспільне дерево для даних і метаданих; динамічне виділення блоків
Обмеження
Можливості
Управління правами доступуPOSIX
Стисканняпідтримується через плагіни
Шифруванняпередбачена плагінна реалізація
Операційні системи в яких підтримуєтьсяLinux (окремі збірки ядра з патчами)

Reiser4 — журнальована файлова система для Linux, розроблена компанією Namesys під керівництвом Ганса Рейзера як наступник ReiserFS. Вона використовує деревоподібну структуру для розміщення файлів і метаданих, підтримує транзакційні механізми та має модульну архітектуру, що дає змогу змінювати способи зберігання й оброблення даних. Попри спорідненість назв, Reiser4 створена переважно заново, а її формат на диску несумісний із ReiserFS версії 3. Вихідний код поширюється за умовами GNU General Public License версії 2.[1][2]

Розроблення розпочалося 2001 року; у 2004 році Reiser4 з'явилася в експериментальній серії патчів ядра Linux. Її так і не включили до основної гілки ядра. Після припинення роботи Namesys підтримку продовжував колишній розробник компанії Едуард Шишкін. Офіційний репозиторій проєкту містить патчі для ядер Linux до версії 5.16, опубліковані 2022 року; окремі незалежні збірки з підтримкою Reiser4 випускали й пізніше.[3][4][5]

Історія розроблення

[ред. | ред. код]

Роботи над Reiser4 почалися на початку 2001 року як над новою файловою системою, покликаною розвинути ідеї ReiserFS. Проєкт створювала команда Namesys; серед її учасників були Нікіта Данилов, Володимир Савельєв, Олександр Зароченцев, Джошуа Макдональд та інші інженери. Одним з основних спонсорів розроблення було DARPA.[1][2]

У липні 2003 року Ганс Рейзер уперше запропонував включити нову файлову систему до основної гілки ядра Linux. У серпні 2004 року її додали до експериментальної серії патчів Ендрю Мортона 2.6.8.1-mm2. Розробники прагнули підвищити ефективність роботи з невеликими файлами, удосконалити транзакційність і забезпечити розширення файлової системи через плагіни.[3][6]

У процесі обговорення інтеграції до ядра виникли зауваження до складності коду, взаємодії з віртуальною файловою системою (VFS), механізмів блокування й окремих інтерфейсів. Частина запропонованих функцій, на думку розробників ядра, належала до загальної інфраструктури Linux, а не до конкретної файлової системи. Попри внесені зміни Reiser4 не була прийнята до основної гілки; для її використання були потрібні додаткові патчі або спеціально зібране ядро.[6]

Після згортання діяльності Namesys супровід Reiser4 взяв на себе Едуард Шишкін, який раніше працював над її механізмами стиснення та шифрування. Він підтримував сумісність із новішими версіями Linux і розвивав компоненти файлової системи. Наприкінці 2019 року Шишкін анонсував експериментальний проєкт Reiser5 як подальший розвиток Reiser4 з новими можливостями об'єднання пристроїв зберігання даних.[2][7]

У головному сховищі проєкту на SourceForge останній оприлюднений патч призначений для Linux 5.16 і датований квітнем 2022 року. Водночас у 2025—2026 роках сторонній проєкт Metztli Reiser4 поширював власні збірки ядра для Debian з підтримкою Reiser4. Ці збірки не означають включення файлової системи до стандартного ядра Linux.[4][5]

Архітектура

[ред. | ред. код]

«Танцювальне дерево»

[ред. | ред. код]

На відміну від файлових систем, які окремо організовують таблиці індексних дескрипторів, каталоги та вміст файлів, Reiser4 використовує спільну ієрархічну структуру для різних видів даних. Її основою є так зване танцювальне дерево (англ. dancing tree) — різновид збалансованої деревоподібної структури, спорідненої з Б-деревами. Операції перегрупування і розміщення вузлів можуть відкладатися до записування змін на носій, щоб зменшувати обсяг зайвого переміщення даних.[8][1]

Кожен об'єкт подається набором елементів із ключами, за якими відбувається пошук у дереві. Воно містить записи каталогів, властивості файлів, посилання на блоки даних, а за певних умов — і самі невеликі фрагменти вмісту файлів. Розміщення пов'язаних елементів поруч дає змогу скорочувати кількість операцій введення-виведення, особливо під час роботи з великою кількістю малих файлів. Система створює структури, аналогічні індексним дескрипторам, динамічно, а не резервує наперед фіксовану кількість таких записів.[1][3]

Алгоритми відкладеного виділення місця та впорядкування вузлів спрямовані на зменшення кількості переміщень головок диска й ефективніше використання вільного простору. Водночас складна організація дерева і взаємодія його елементів ускладнюють відновлення пошкодженої файлової системи.[1]

Транзакції та журналювання

[ред. | ред. код]

Reiser4 належить до журнальованих файлових систем, проте її механізм збереження узгодженості відрізняється від традиційного журналювання. Технологія wandering log («мандрівний журнал») дає змогу записувати змінені блоки в нові місця та згодом оновлювати посилання на них. Залежно від політики розміщення система може поєднувати такий підхід із журналюванням перезаписуваних блоків.[9]

У внутрішній моделі Reiser4 зміни групуються у транзакційні одиниці, які мають зберігати узгодженість після аварійного завершення роботи. Архітектура передбачала також складніші операції з кількома взаємопов'язаними змінами, але частина первісно запроєктованих можливостей не була повністю доступна звичайним програмам через стандартні інтерфейси Linux.[9][6]

Плагінна архітектура

[ред. | ред. код]

Однією з особливостей Reiser4 є система плагінів, через які реалізуються різні способи оброблення файлів, каталогів, вузлів дерева та ключів. Під час створення файлової системи частину параметрів можна вибирати незалежно: наприклад, формат ключів чи спосіб подання об'єктів. Такий підхід дозволяє розвивати окремі механізми, не переписуючи всю файлову систему.[10]

Згодом для Reiser4 було реалізовано прозоре стиснення даних із використанням різних алгоритмів, зокрема Zstd, а також плагіни для оброблення зашифрованого вмісту. До новіших компонентів належить механізм контрольних сум для метаданих і частини даних, що зберігаються безпосередньо у вузлах дерева. Наявність цих можливостей залежить від версії програмного забезпечення, формату файлової системи та вибраних плагінів.[2][11]

Продуктивність і обмеження

[ред. | ред. код]

Проєктування Reiser4 було зорієнтоване на економне використання дискового простору й ефективну роботу з малими файлами та великими каталогами. У тестуванні редакції LWN.net 2004 року Reiser4 займала менше місця, ніж ext3, під час зберігання дерева вихідного коду Linux. Проте в низці виміряних операцій ext3 працювала швидше. Автор тестування застерігав від узагальнення результатів одного набору навантажень; тому твердження про безумовну перевагу Reiser4 за швидкодією не мають достатньої підстави.[3]

Суттєвим обмеженням стала відсутність підтримки в основній гілці ядра Linux: використання Reiser4 вимагало спеціального ядра і відповідності патчів його версії. Крім того, формат Reiser4 несумісний із ReiserFS 3, тож існуючий розділ ReiserFS не можна безпосередньо змонтувати як Reiser4 чи перетворити лише зміною драйвера.[1][6]

Через складність внутрішніх структур відновлення після серйозних пошкоджень може бути непростим. Під час практичного використання потрібно також зважати на стан супроводу програмного забезпечення та наявність сумісних засобів перевірки файлової системи. Наявність плагінів чи описаних у проєктній документації функцій не гарантує, що всі вони підтримуються конкретною збіркою.[1][10]

Програмні засоби

[ред. | ред. код]

Для роботи з Reiser4 існує комплект утиліт reiser4progs, який, зокрема, містить:

  • mkfs.reiser4 — створення файлової системи з вибором параметрів і плагінів;
  • fsck.reiser4 — перевірка й відновлення її структур;
  • debugfs.reiser4 — діагностика й перегляд службової інформації.[10][12]

Створення файлової системи й робота з її томами можливі лише за наявності сумісної підтримки з боку ядра та користувацьких утиліт. На відміну від ReiserFS 3, драйвер Reiser4 не входив до офіційних випусків основної гілки ядра Linux.[6][4]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. 1 2 3 4 5 6 7 Nikita Danilov. reiser4: 0. introduction. a very occasional diary (англ.). Процитовано 11 листопада 2026.
  2. 1 2 3 4 edward6/reiser4: The upstream Reiser4. GitHub (англ.). Процитовано 11 листопада 2026.
  3. 1 2 3 4 Jonathan Corbet (25 серпня 2004). Looking at reiser4. LWN.net (англ.). Процитовано 11 листопада 2026.
  4. 1 2 3 Reiser4 file system for Linux OS — Files. SourceForge (англ.). Процитовано 11 листопада 2026.
  5. 1 2 Metztli Reiser4 for 5.15 Long Term Support (LTS). Metztli Information Technology (англ.). 24 вересня 2026. Процитовано 11 листопада 2026.
  6. 1 2 3 4 5 Jonathan Corbet (21 вересня 2005). Reiser4 and kernel inclusion. LWN.net (англ.). Процитовано 11 листопада 2026.
  7. ↑ Michael Larabel (2 січня 2026). Six Years Since The Reiser5 File-System Was Announced. Phoronix (англ.). Процитовано 11 листопада 2026.
  8. ↑ Hans Reiser (1 грудня 2002). Trees in the Reiser4 Filesystem, Part I. Linux Journal (англ.). Процитовано 11 листопада 2026.
  9. 1 2 Joshua MacDonald; Hans Reiser (7 листопада 2001). Reiser4 Transaction Design Document. LWN.net (англ.). Процитовано 11 листопада 2026.
  10. 1 2 3 mkfs.reiser4(8) — reiser4progs. Debian Manpages (англ.). Процитовано 11 листопада 2026.
  11. ↑ Reiser4 file system for Linux OS — reiser4progs. SourceForge (англ.). Процитовано 11 листопада 2026.
  12. ↑ debugfs.reiser4(8) — reiser4progs. Debian Manpages (англ.). Процитовано 11 листопада 2026.

Посилання

[ред. | ред. код]