Файлові системи
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
- Максимальний розмір файлу: 4 ГБ (через 32-бітні поля розміру).
- Максимальний обсяг розділу: 2 ТБ (теоретично 16 ТБ з 64 КБ кластерами, але не підтримується більшістю ОС).
- Підтримується всім: Windows, macOS, Linux, Android, камери, телевізори, автомагнітоли, ігрові консолі.
- Немає журналювання — при відключенні живлення можливе пошкодження файлової таблиці.
🔹 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. Розроблена з урахуванням надійності, безпеки та масштабованості.
🔹 Ключові особливості
- Журналювання (Journaling) —
$LogFileзаписує метадані транзакцій перед їх виконанням. При збої система відкочується до консистентного стану. - ACL (Access Control Lists) — детальні права доступу на рівні файлів і каталогів для користувачів та груп.
- EFS (Encrypting File System) — шифрування на рівні файлів за алгоритмом AES. Ключі зберігаються в сертифікатах користувача.
- Стиснення файлів та каталогів (LZNT1), sparse files, альтернативні потоки даних (ADS), точки повторного аналізу (junctions, symbolic links).
- Квоти диска (Disk Quotas) — обмеження місця для конкретних користувачів.
- Тіньові копії (VSS — Volume Shadow Copy Service) — знімки стану тома для відновлення файлів та резервного копіювання.
🔹 Метафайли NTFS
NTFS зберігає службову інформацію у прихованих системних файлах (метафайлах), які починаються зі знака долара: $MFT (Master File Table), $LogFile, $Bitmap, $Boot, $BadClus, $Secure, $UpCase тощо. $MFT — це «база даних» усіх файлів тома.
🐧 ext — родина Linux
Сімейство ext (extended file system) — нативні файлові системи для ядра Linux. Сьогодні ext4 — стандарт де-факто для більшості дистрибутивів, хоча поступово поступається місцем Btrfs та іншим сучасним ФС.
🔹 ext2
Перша «сучасна» ФС для Linux. Використовує inode (індексні дескриптори) для зберігання метаданих файлів. Суперблок містить глобальні параметри ФС. Немає журналювання — після збою потрібна повна перевірка fsck. Підходить для невеликих флешок та RAM-дисків, де журналювання зайве.
🔹 ext3
ext3 додала журналювання до ext2 без зміни формату на диску. Можна було оновити ext2 до ext3 навіть без переформатування. Три режими журналювання: journal (дані + метадані), ordered (метадані + гарантія запису даних перед inode), writeback (лише метадані, найшвидший).
🔹 ext4
- Екстенти (extents) — замість списку блоків файл описується початковим блоком і довжиною, що зменшує фрагментацію та накладні витрати.
- Багатоблочне виділення (multiblock allocator) — виділення кількох блоків за один раз для зменшення фрагментації.
- Відкладене розміщення (delayed allocation) — ФС відкладає вибір блоків до моменту фактичного запису на диск, що покращує розміщення.
- Журнал з контрольними сумами (journal checksums) — захист від пошкодження самого журналу.
- Наносекундні мітки часу, постійне попереднє виділення (preallocation), дефрагментація «на льоту» (e4defrag).
Обмеження ext4: максимальний обсяг тома — 1 ЕБ, файл — 16 ТБ, кількість підкаталогів у каталозі — до 64 000.
🍎 APFS — революція Apple
APFS (Apple File System) представлена у 2017 році з macOS High Sierra та iOS 10.3. Замінила застарілу HFS+, яка використовувалася з 1998 року. APFS спроектована спеціально для флеш-пам'яті та SSD.
🔹 Ключові інновації
- Copy-on-Write (CoW) — дані не перезаписуються на місці; замість цього створюється нова копія блоку, а старий вказівник оновлюється атомарно. Це гарантує цілісність навіть при збої живлення.
- Знімки (Snapshots) — миттєві «фотографії» стану файлової системи, які займають мінімум місця завдяки CoW. Використовуються для Time Machine та резервного копіювання.
- Клонування файлів — миттєве створення повної копії файлу без дублювання даних (спільне використання блоків до першої зміни).
- Просторовий обмін (Space Sharing) — гнучкий розподіл вільного місця між томами в межах контейнера. Томи динамічно займають стільки місця, скільки потрібно.
- Нативне шифрування — підтримка AES-XTS на рівні тома, файлу або навіть окремих секторів. Інтеграція з Secure Enclave на Apple Silicon.
- Оптимізація для SSD: TRIM, вирівнювання запису (write alignment), зменшення зносу флеш-пам'яті.
📡 ZFS — файлова система майбутнього
ZFS (Zettabyte File System) розроблена Sun Microsystems у 2001 році. Це 128-бітна файлова система, яка поєднує в собі менеджер томів (volume manager) і саму ФС. Сьогодні підтримується у FreeBSD, Linux (через ZFS on Linux / OpenZFS), illumos та macOS (неофіційно).
🔹 Архітектурні принципи
- Copy-on-Write (CoW) — жоден блок даних ніколи не перезаписується на місці. Зміни записуються у нові блоки, а старі залишаються недоторканими до очищення (garbage collection).
- Контроль цілісності на рівні блоків (checksums) — кожен блок даних і метаданих має контрольну суму (fletcher4, sha256). ZFS автоматично виявляє «тихе» пошкодження даних (silent data corruption) і відновлює їх з резервної копії (self-healing).
- Вбудований RAID-Z — аналог RAID 5/6 без проблеми «дірки запису» (write hole). RAID-Z1 (1 диск на червоність), RAID-Z2 (2 диски), RAID-Z3 (3 диски).
- Дедуплікація (deduplication) — автоматичне видалення дублікатів блоків на рівні всього пулу. Економить місце, але вимагає багато RAM (таблиця дедуплікації).
- Стиснення (gzip, lz4, zle) та тонке підготовлення (thin provisioning) — виділення місця лише при фактичному записі.
- Знімки (snapshots) та клонування — миттєві знімки всього пулу з нульовими накладними витратами завдяки CoW.
📊 Порівняльна таблиця
| Особливість | 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 — списки контролю доступу з детальними правами для кожного користувача/групи: повний доступ, зміна, читання, виконання, записування атрибутів тощо.
🔹 Шифрування
- NTFS: EFS (Encrypting File System) — шифрування окремих файлів/каталогів через AES. Також BitLocker для шифрування всього тома.
- ext4: шифрування на рівні каталогів через fscrypt (в ядрі Linux 4.1+).
- APFS: нативне шифрування AES-XTS на рівні тома, файлу або сектора. Інтеграція з T2 / Secure Enclave.
- ZFS: шифрування на рівні набору даних (dataset) через AES-256-GCM, з окремими ключами для кожного dataset.
☁ Хмарні сховища та розподілені ФС
Сучасні дата-центри та хмарні провайдери використовують не класичні монолітні ФС, а розподілені та об'єктні сховища, які працюють на тисячах серверів одночасно.
Об'єктне сховище
Дані зберігаються як об'єкти (файл + метадані + унікальний ідентифікатор), а не у файловій ієрархії. Приклади: 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 як стандарт мережевого сховища, а також квантово-стійкі алгоритми шифрування для захисту даних у довгостроковій перспективі.