Файлові системи

FAT, NTFS, ext, APFS, ZFS — еволюція способів зберігання даних від дискет до хмарних сховищ

📁 Що таке файлова система?

Файлова система — це спосіб організації, зберігання, найменування, доступу та управління файлами на носіях даних (HDD, SSD, флеш-накопичувачі, оптичні диски). Вона визначає структуру метаданих, алгоритми розміщення файлів, механізми захисту та відновлення після збоїв.

Без файлової системи операційна система не могла б відрізнити файл від «сирих» байтів на диску. ФС надає абстракцію: файли, каталоги, права доступу, атрибути — усе це реалізовано саме на рівні файлової системи.

Основні завдання будь-якої ФС: просторове управління (розподіл блоків), іменування та ієрархія (каталоги), контроль доступу (права користувачів), журналювання операцій, перевірка цілісності та оптимізація швидкодії.

📈 Еволюція файлових систем

Історія файлових систем тісно пов'язана з еволюцією носіїв даних: від 5-дюймових дискет ємністю 160 КБ до сучасних SSD у кілька терабайт та розподілених хмарних сховищ.

1977 — FAT

Розроблена для дискет. Проста таблиця розміщення файлів без підкаталогів (FAT12). Пізніше — FAT16 для жорстких дисків до 2 ГБ.

1993 — NTFS

Microsoft представила New Technology File System разом із Windows NT 3.1. Журналювання, ACL, стиснення, шифрування, квоти диска.

1993 — ext2

Друга розширена файлова система для Linux. Без журналювання, але з індексними дескрипторами (inode) та підтримкою файлів до 2 ТБ.

2001 — ext3 / ReiserFS

Журналювання прийшло у світ Linux. ext3 додала журнал до ext2 без зміни структури на диску. ReiserFS — перша журнальна ФС для Linux із B+-деревами.

2008 — ext4

Розширення для ext3: обсяги до 1 ЕБ, файли до 16 ТБ, екстенти (extents) замість класичних блоків, багатоблочне виділення, відкладене розміщення.

2017 — APFS

Apple File System замінила HFS+ на всіх пристроях Apple. Оптимізована для флеш-пам'яті та SSD, підтримує знімки (snapshots), клонування, шифрування.

2005+ — ZFS / Btrfs

ФС нового покоління з копіюванням при записі (CoW), вбудованим RAID, контролем цілісності (checksums), дедуплікацією. ZFS від Sun/Oracle, Btrfs — для Linux.

🗋 FAT — від дискет до флешок

FAT (File Allocation Table) — найстарша та найпростіша файлова система, яка досі широко використовується завдяки універсальній сумісності. Версії: FAT12 (для дискет), FAT16 (DOS/Windows 95), FAT32 (Windows 98+), exFAT (2006, для великих флеш-накопичувачів).

🔹 Структура FAT

Диск поділено на кластери (групи секторів). Таблиця FAT містить ланцюжок кластерів для кожного файлу. Кореневий каталог — фіксована область з 32-байтними записами. Обмеження: імена файлів 8.3 (у старих версіях), відсутність журналювання, фрагментація.

🔹 FAT32

🔹 exFAT

exFAT — розширена FAT, розроблена Microsoft спеціально для флеш-накопичувачів великої ємності. Вирішує обмеження FAT32: файли > 4 ГБ, розділи > 2 ТБ. Зберегла простоту, але додала вільну таблицю розміщення (Free Space Bitmap) та підтримку ACL у деяких реалізаціях. Немає журналювання.

💾 NTFS — стандарт Windows

NTFS (New Technology File System) — журнальна файлова система від Microsoft, яка стала стандартом для Windows NT, 2000, XP, Vista, 7, 8, 10, 11. Розроблена з урахуванням надійності, безпеки та масштабованості.

🔹 Ключові особливості

🔹 Метафайли NTFS

NTFS зберігає службову інформацію у прихованих системних файлах (метафайлах), які починаються зі знака долара: $MFT (Master File Table), $LogFile, $Bitmap, $Boot, $BadClus, $Secure, $UpCase тощо. $MFT — це «база даних» усіх файлів тома.

Цікаво: NTFS дозволяє створити файл довжиною до 16 ЕБ (ексабайт), хоча Windows обмежує його 256 ТБ. Обсяг тома — до 256 ТБ із 64 КБ кластерами.

🐧 ext — родина Linux

Сімейство ext (extended file system) — нативні файлові системи для ядра Linux. Сьогодні ext4 — стандарт де-факто для більшості дистрибутивів, хоча поступово поступається місцем Btrfs та іншим сучасним ФС.

🔹 ext2

Перша «сучасна» ФС для Linux. Використовує inode (індексні дескриптори) для зберігання метаданих файлів. Суперблок містить глобальні параметри ФС. Немає журналювання — після збою потрібна повна перевірка fsck. Підходить для невеликих флешок та RAM-дисків, де журналювання зайве.

🔹 ext3

ext3 додала журналювання до ext2 без зміни формату на диску. Можна було оновити ext2 до ext3 навіть без переформатування. Три режими журналювання: journal (дані + метадані), ordered (метадані + гарантія запису даних перед inode), writeback (лише метадані, найшвидший).

🔹 ext4

Обмеження ext4: максимальний обсяг тома — 1 ЕБ, файл — 16 ТБ, кількість підкаталогів у каталозі — до 64 000.

🍎 APFS — революція Apple

APFS (Apple File System) представлена у 2017 році з macOS High Sierra та iOS 10.3. Замінила застарілу HFS+, яка використовувалася з 1998 року. APFS спроектована спеціально для флеш-пам'яті та SSD.

🔹 Ключові інновації

Примітка: APFS не підтримує диски з механічними HDD як завантажувальні на старих Mac (до T2 чипа), але чудово працює на фюжн-драйвах (Fusion Drive) та зовнішніх SSD.

📡 ZFS — файлова система майбутнього

ZFS (Zettabyte File System) розроблена Sun Microsystems у 2001 році. Це 128-бітна файлова система, яка поєднує в собі менеджер томів (volume manager) і саму ФС. Сьогодні підтримується у FreeBSD, Linux (через ZFS on Linux / OpenZFS), illumos та macOS (неофіційно).

🔹 Архітектурні принципи

Важливо: ZFS — це 128-бітна ФС. Теоретичний ліміт: 256 квадильйонів зетабайт. Навіть якщо заповнювати по 1 ТБ щосекунди, на вичерпання місця знадобиться більше часу, ніж існує Всесвіт.

📊 Порівняльна таблиця

Особливість FAT32 NTFS ext4 APFS ZFS
Розробник Microsoft Microsoft Linux Community Apple Sun/Oracle/OpenZFS
Макс. файл 4 ГБ 16 ЕБ (256 ТБ в Windows) 16 ТБ 8 ЕБ 16 ЕБ
Макс. том 2 ТБ 256 ТБ 1 ЕБ 8 ЕБ 256 квадр. зетабайт
Журналювання Ні Так (метадані) Так (3 режими) CoW (атомарно) CoW + checksums
Права доступу Обмежені (R/O) ACL, квоти Unix rwx, ACL Unix + шифрування ACL, шифрування
Стиснення Ні Так (LZNT1) Ні Ні Так (gzip, lz4)
Сумісність Універсальна Windows, лише читання на macOS/Linux Linux, лише читання на Windows/macOS Тільки Apple FreeBSD, Linux, illumos
Оптимально для Флешки, SD-карти, обмін даними Windows-системи, корп. середовища Linux-сервери, робочі станції Mac, iPhone, iPad, Apple Watch NAS, дата-центри, enterprise

📜 Журналювання, права доступу та шифрування

🔹 Журналювання (Journaling)

Журнал — це спеціальна область на диску, куди ФС спочатку записує плановані зміни метаданих (а іноді й даних). Якщо під час запису сталася аварія, система при наступному завантаженні відкочує або завершує транзакцію з журналу, не перевіряючи весь диск. Це скорочує час відновлення з годин до секунд.

🔹 Права доступу

Unix-модель (ext, APFS, ZFS): три класи — власник (owner), група (group), інші (others); три права — читання (r), запис (w), виконання (x). NTFS використовує ACL — списки контролю доступу з детальними правами для кожного користувача/групи: повний доступ, зміна, читання, виконання, записування атрибутів тощо.

🔹 Шифрування

Хмарні сховища та розподілені ФС

Сучасні дата-центри та хмарні провайдери використовують не класичні монолітні ФС, а розподілені та об'єктні сховища, які працюють на тисячах серверів одночасно.

Об'єктне сховище

Дані зберігаються як об'єкти (файл + метадані + унікальний ідентифікатор), а не у файловій ієрархії. Приклади: Amazon S3, Google Cloud Storage, Azure Blob Storage, MinIO. Масштабуються до ексабайт, забезпечують 99,999999999% durability.

Розподілені ФС

Файлова система, яка об'єднує диски багатьох серверів у єдиний простір імен. Приклади: HDFS (Hadoop), CephFS, GlusterFS, Lustre, Google File System (GFS). Використовують реплікацію та erasure coding для відмовостійкості.

NVMe over Fabrics

Протокол доступу до NVMe-накопичувачів через мережу (Ethernet, Fibre Channel, InfiniBand). Затримка зменшується до 10-50 мкс. Використовується у high-performance хмарних сховищах та AI/ML кластерах.

Файлові системи нового покоління

Btrfs (Linux) — CoW, субтоми, RAID, стиснення. F2FS — оптимізована для флеш-пам'яті NAND. bcachefs — експериментальна ФС з шифруванням, стисненням, реплікацією.

🎯 Підсумок

Файлові системи пройшли шлях від простих таблиць розміщення на дискетах до складних 128-бітних структур з самовідновленням, шифруванням та дедуплікацією. Кожна епоха носіїв даних породжувала нові вимоги: швидкість SSD вимагає TRIM і вирівнювання запису, обсяги петабайт — erasure coding і розподілені архітектури, безпека — нативне шифрування та контроль цілісності.

Вибір файлової системи залежить від задачі: FAT32/exFAT — для обміну даними між пристроями; NTFS — для Windows-інфраструктури; ext4 — для Linux-серверів і робочих станцій; APFS — для екосистеми Apple; ZFS — для NAS, дата-центрів і критичних сховищ, де важлива цілісність даних.

Ключові тренди на найближче десятиліття: повсюдне поширення CoW-ФС (APFS, ZFS, Btrfs), інтеграція шифрування на рівні ядра, розвиток об'єктних сховищ для AI/ML робочих навантажень, NVMe over Fabrics як стандарт мережевого сховища, а також квантово-стійкі алгоритми шифрування для захисту даних у довгостроковій перспективі.