Ext4

Ext4
Розробник Ендрю Мортонd, Мінмін Цаоd і Теодор Цаоd
Структура
Структура директорій Зв'язаний список, B-дерево[1]
Структура файлів Extents/bitmap
Збійні сектори Table
Обмеження
Максимальний розмір файлу 16 тебібайт (розмір кластера 4 кібібайта)
Максимум файлів 4 мільярда (задається під-час створення ФС)
Максимальна довжина імені файлу 255 байт
Максимальний розмір тому 1 ексбібайт (обмеження до 16 тебибайт через обмежений e2fsprogs)
Допустимі символи в назвах Всі символи окрім NULL і '/'
Можливості
Властивості modification (mtime), attribute modification (ctime), access (atime), delete (dtime), create (crtime)
Діапазон дат 14 грудня 1901 - 10 травня 2446[2]
Точність збереження дати Наносекунда
Потоки метаданих Ні
Атрибути extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev
Права доступу POSIX
Фонова компресія Ні
Фонове кодування Ні
Підтримується ОС Linux, Windows (тільки читання)

ext4, або Четверта версія розширеної файлової системи, — журнальована файлова система, котра використовується в ОС з ядром Linux. Заснована на файловій системі ext3, котра є файловою системою за замовчуванням в багатьох дистрибутивах.

Вперше експериментальна підтримка ext4 була випущена у вигляді патчу для Linux версій 2.6.19-rc1-mm1 та 2.6.19-rc1-git8 10 жовтня 2006 року програмістом Ендрю Мортоном (англ. Andrew Morton)[3].

11 жовтня 2008 року код був доданий до стабільної версії репозиторію ядра Linux. Версія ядра 2.6.28 вже мала підтримку ext4, та була випущена 25 грудня 2008.

Властивості

Розміри та обмеження

  • розмір файлу до 16 ТБ;
  • розмір ФС до 1024 ПБ;
  • кількість файлів 4 мільярди;
  • необмежена кількість підкаталогів;
  • дозволені всі знаки, окрім NUL та /;
  • межі дат 14 грудня 1901 — 10 травня 2446;
  • мінімальна зміна часу — наносекунда.

Екстенти

Екстент — технологія яка дозволяє більш оптимально виділяти простір для великих файлів, реалізується як ієрархічна структура блоків, в якому inode посилаються на блоки, а ті своєю чергою на безперервну область суміжних блоків для зберігання даних файлу. Використання такого механізму покращило швидкість виділення простору для великих файлів, а також їх видалення.

Зворотна сумісність

В загальному сенсі ext4 зворотно сумісна з ext3 та ext2[4]. Деякий функціонал несумісний з попередніми версіями, наприклад опції: ^extent, ^flex_bg, ^huge_file, ^uninit_bg, ^dir_nlink, та ^extra_isize[5].

Покращені часові позначки

У зв'язку з тим що linux все частіше використовується в інформаційних системах для широкого спектра застосунків, в тому числі там де потрібна висока гранулярність часу, більша ніж 1 секунда, в часових позначках з'явилась підтримка наносекунд. Для реалізації точності структура часу була збільшена на 32 біти, 30 з яких використовується під наносекунди, а ще 2 біти під секунди, таким чином секунди мають 36 біт, і проблема їх переповнення настане у 2446 році[2].

Підтримка квот для проєктів

Підтримку квот на проєкти було додано до ядра Linux 4.4 8 січня 2016 року. Ця функція дозволяє призначати обмеження квоти на диск для певного ідентифікатора проєкту. Ідентифікатор проєкту файлу – це 32-бітне число, яке зберігається в кожному файлі та успадковується всіма файлами та підкаталогами, створеними під батьківським каталогом із призначеним ідентифікатором проєкту. Це дозволяє призначати обмеження квоти для певного дерева підкаталогів незалежно від дозволів доступу до файлів, таких як квоти користувачів і груп, що залежать від UID і GID. Хоча це схоже на квоту каталогу, головна відмінність полягає в тому, що один і той самий ідентифікатор проєкту можна призначити кільком кореневим каталогам, і він не є строго ієрархічним[6].

Прозоре шифрування

Додано в ядро 4.1 в червні 2015 року[7].

Лінива ініціалізація

Цей механізм дозволяє чистити таблицю inode в фоні, пришвидшує ініціалізацію коли створюється файлова система[8]. Доступний з 2010 з версії ядра Linux 2.6.37.[9]

Бар'єри на запис

ext4 за замовчуванням вмикає бар'єри запису. Це гарантує, що метадані файлової системи будуть записані на диск у правильному порядку, навіть при раптовому відключенні живлення. Це може вплинути на продуктивність, особливо для програм, які часто використовують fsync або створюють і видаляють багато маленьких файлів.

Для дисків що мають для кешу запису резервне живлення відключення бар'єрів (опція 'barrier=0') може покращити продуктивність, але в загальному випадку опція увімкнена, що підвищує надійність[10].

Підтримка ext4 включена до релізу Fedora 9, Ubuntu 9.04 (Jaunty Jackalope), openSUSE 11.2.

Див. також

  • Ext3
  • ZFS
  • Btrfs
  • Список файлових систем
  • Порівняння файлових систем

Примітки

  1. Hashed B-tree. Архів оригіналу за 18 липня 2019. Процитовано 30 жовтня 2014.
  2. а б ext4: Fix handling of extended tv_sec. Linux-stable kernel tree. Процитовано 14 лютого 2017.
  3. Офіційна заява Ендрю Мортона про включення підтримки ext4[недоступне посилання з червня 2019](англ.)
  4. Anatomy of ext4. IMB Developer. Процитовано 27 травня 2024.
  5. Mount of ext4 (created without extents) as ext3 fails on RH6.2. www.linuxquestions.org. Архів оригіналу за 5 August 2023. Процитовано 8 December 2023.
  6. Li, Xi (12 January 2016). ext4: add project quota support (Список розсилки). Архів оригіналу за 20 September 2023. Процитовано 8 December 2023.
  7. Ts'o, Theodore (8 April 2015). Ext4 encryption. Архів оригіналу за 12 October 2023. Процитовано 8 December 2023.
  8. Ext4 Filesystem. Thomas-Krenn-Wiki. Архів оригіналу за 14 February 2022. Процитовано 8 December 2023.
  9. kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org.
  10. Ext4 -. ArchWiki.

Посилання

  • Обговорення ext4 (англ.)
  • п
  • о
  • р
Дискові
NAS
Спеціалізовані
Псевдо- і віртуальні
  • configfs
  • devfs[en]
  • procfs
  • specfs
  • sysfs
  • tmpfs
  • WinFS
Шифровані