Ext2
ext2 (від англ. Second Extended File System — «друга розширена файлова система»; також ext2fs) — файлова система, розроблена для ядра Linux на початку 1990-х років. Вона належить до сімейства файлових систем ext і використовує традиційну для Unix організацію даних за допомогою індексних дескрипторів (inode). Її початковим розробником був Ремі Кард (Rémy Card); у розвитку ext2 також брали участь Теодор Цо (Theodore Ts'o) та Стівен Твіді (Stephen Tweedie). Першу версію представлено в січні 1993 року.[1][2]
Ext2 не використовує журналювання змін, тому після аварійного завершення роботи може потребувати повної перевірки узгодженості файлової системи. Наступною системою сімейства стала Ext3, у якій додано журналювання зі збереженням значної сумісності з форматом ext2; її подальшим розвитком є Ext4.[2]
Перші версії Linux використовували файлову систему операційної системи MINIX. Її початковий формат зберігав адреси блоків у 16-розрядних полях, що обмежувало розмір файлової системи 64 МБ; довжина імені файлу в ранній реалізації не перевищувала 14 символів. Для подолання цих обмежень у квітні 1992 року було створено Extended File System (ext), яка дозволяла використовувати розділи до 2 ГБ та імена файлів завдовжки до 255 символів.[1]
Перша система ext мала низку недоліків: вона не забезпечувала незалежного зберігання часу доступу до файлу, зміни його вмісту та зміни метаданих, а списки вільних блоків і дескрипторів із часом спричиняли фрагментацію та зниження продуктивності. У січні 1993 року з'явилися дві альтернативи — Xiafs і ext2. На відміну від Xiafs, яка розвивала код файлової системи MINIX, ext2 стала істотним переробленням ext із розрахунком на подальше розширення можливостей. Згодом ext2 набула широкого застосування в Linux.[1]
Наприкінці 1990-х років Стівен Твіді розробив журналювальне розширення, яке стало основою ext3. Журнал можна було додати до наявної ext2 без повного перетворення структури даних. У результаті ext3 зберегла базову організацію ext2, але забезпечила швидше відновлення узгодженості метаданих після збоїв.[2]
Простір ext2 поділяється на групи блоків (англ. block groups). У них розміщуються блоки даних, таблиці індексних дескрипторів, бітові карти зайнятих блоків і дескрипторів, а також службові структури. Основні параметри файлової системи зберігаються в суперблоці; для захисту від пошкоджень передбачено його резервні копії. Розміщення пов'язаних файлів та їхніх блоків поблизу один одного зменшує кількість переміщень головок диска під час роботи з жорсткими дисками.[2]
Кожний файл або каталог має індексний дескриптор (inode), що містить його тип, власника, права доступу, розмір, часові позначки й адреси блоків даних, але не ім'я. Каталог зіставляє імена файлів із номерами дескрипторів. Для адресації вмісту файлу ext2 використовує безпосередні та одно-, дво- і трикратно опосередковані посилання на блоки. Максимальна довжина імені файлу становить 255 байтів; граничні розміри файлів і файлової системи залежать, зокрема, від розміру блока та можливостей реалізації.[2]
Система підтримує звичайні файли, каталоги, символьні посилання та спеціальні файли пристроїв. Для коротких символьних посилань цільовий шлях можна зберігати безпосередньо в inode без виділення окремого блока. Передбачено також резервування частини блоків для адміністратора: це дає змогу підтримувати роботу системних процесів, навіть коли користувачі заповнили доступний їм простір.[1][2]
Ext2 від початку підтримувала традиційну модель прав доступу Unix. Пізніше до неї додали розширені атрибути та списки контролю доступу (ACL), що дозволяють задавати дозволи для окремих користувачів і груп. Відповідні зміни ввійшли до основної гілки ядра Linux у версії 2.5.46 (листопад 2002 року). Модель ACL походить із проєкту POSIX.1e, який не був остаточно затверджений як стандарт POSIX.[3]
Передбачені в ext2 прапорці сумісності дозволяють реалізаціям розрізняти можливості, які можна ігнорувати, використовувати лише для читання або які потребують новішого драйвера. Цей механізм став однією з основ подальшого розвитку сімейства ext.[2]
Відсутність журналу спрощує запис метаданих, але в разі збою між кількома пов'язаними операціями на диску можуть залишитися неузгоджені структури. Тому після некоректного від'єднання тома або аварійного вимкнення може знадобитися перевірка програмою e2fsck. Стан файлової системи, кількість монтувань і час останньої перевірки зберігаються в суперблоці. Перевірка великого тому може бути тривалою.[2][4]
До набору утиліт e2fsprogs належать mke2fs (створення файлової системи), e2fsck (перевірка та виправлення помилок), tune2fs (зміна параметрів) і dumpe2fs (перегляд службових відомостей). Для створення ext2 використовується, зокрема, команда mke2fs -t ext2; наявний том ext2 можна перетворити на журналювальний ext3, додавши журнал за допомогою відповідних засобів адміністрування.[1][5]
У 2024 році розробники ядра Linux позначили окремий драйвер ext2 як застарілий через його обмежену роботу з часовими позначками після 19 січня 2038 року. Це не означає припинення підтримки самого дискового формату ext2: розробники рекомендують використовувати для читання й запису таких томів драйвер ext4, який сумісний з ext2 і може працювати без журналу.[6]
- 1 2 3 4 5 Card, Rémy; Ts'o, Theodore; Tweedie, Stephen (1994). Design and Implementation of the Second Extended Filesystem. Proceedings of the First Dutch International Symposium on Linux (англ.). Процитовано 11 листопада 2026.
- 1 2 3 4 5 6 7 8 The Second Extended Filesystem. The Linux Kernel documentation (англ.). Процитовано 11 листопада 2026.
- ↑ Grünbacher, Andreas (2003). POSIX Access Control Lists on Linux (PDF) (англ.). Процитовано 11 листопада 2026.
- ↑ e2fsck(8) — check a Linux ext2/ext3/ext4 file system. Linux manual pages (англ.). Процитовано 11 листопада 2026.
- ↑ mke2fs(8) — create an ext2/ext3/ext4 file system. Linux manual pages (англ.). Процитовано 11 листопада 2026.
- ↑ Kara, Jan (22 лютого 2024). Re: [PATCH] ext2: mark as deprecated. Linux Kernel Mailing List archive (англ.). Процитовано 11 листопада 2026.
- The Second Extended Filesystem — документація ядра Linux (англ.).
- Design and Implementation of the Second Extended Filesystem — праця розробників ext2 (англ.).