ext4

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Ext4
Розробник Andrew Mortond, Mingming Caod і Theodore Ts'od
Структура
Структура директорій Зв'язаний список, 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 - 25 квітня 2514
Точність збереження дати Наносекунда
Потоки метаданих Ні
Атрибути 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)[2].

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

Властивості[ред. | ред. код]

Розміри та обмеження[ред. | ред. код]

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

Екстенти[ред. | ред. код]

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

Зворотна сумісність[ред. | ред. код]

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

Покращені часові позначки[ред. | ред. код]

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

Підтримка квот для проєктів[ред. | ред. код]

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

Прозоре шифрування[ред. | ред. код]

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

Ленива ініціалізація[ред. | ред. код]

Цей механізм дозволяє чистити таблицю inode в фоні, пришвидшує ініціалізацію коли створюється файлова система.

Бар'єри на запис[ред. | ред. код]

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

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

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

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Hashed B-tree. Архів оригіналу за 18 липня 2019. Процитовано 30 жовтня 2014.
  2. Офіційна заява Ендрю Мортона про включення підтримки ext4[недоступне посилання з червня 2019](англ.)

Посилання[ред. | ред. код]