FAT ( — «таблиця розміщення файлів») — файлова система, розроблена для персональних комп’ютерів, що використовувалася за замовчуванням в операційних системах MS-DOS та Windows 9x. Первісно створена 1977 року для використання на дискетах (ще до появи ПК і жорстких дисків), пізніше вона була адаптована для жорстких дисків та інших пристроїв. Збільшення ємності накопичувачів з часом призвело до модифікацій дизайну файлової системи і появи нових версій: FAT12, FAT16, FAT16B, FAT32 та exFAT. Файлова система FAT була замінена на NTFS як стандартна в ОС Microsoft, починаючи з Windows XP. Тим не менш, FAT як і раніше часто використовується на носіях відносно невеликої ємності (наприклад, на картах пам’яті SD, MMC, eMMC) завдяки своїй сумісності та простоті реалізації
Використання
В минулому FAT застосовувалася на різних носіях інформації упродовж ери DOS та Windows 9x. Microsoft представила NTFS в платформі Windows NT у 1993 році, але FAT залишалася стандартною файловою системою для домашніх користувачів до появи Windows XP у 2001 році. Windows ME була останньою версією Windows, що використовувала FAT як ФС за замовчуванням.
Для дискет файлову систему FAT стандартизовано як ECMA-107 та ISO/IEC 9293:1994 (цей стандарт замінив попередній ISO 9293:1987). Ці стандарти охоплюють FAT12 та FAT16 лише з підтримкою коротких назв файлів 8.3; довгі назви (LFN) у VFAT були частково запатентовані. Якщо FAT12 використовувалась на дискетах, то FAT16 і FAT32 зазвичай застосовувалась на носіях більшого розміру.
В наш час FAT досі використовується як внутрішня файлова система для розділу EFI System Partition на стадії завантаження EFI-сумісних комп’ютерів.
Також FAT застосовується на носіях, які планується використовувати в різних операційних системах, наприклад, у середовищах зі спільним доступом між Windows і Linux. Microsoft Windows має вбудований інструмент для конвертації файлової системи FAT у NTFS без перезапису всіх файлів, хоча зворотне перетворення є нетривіальним. Файлова система FAT використовується на змінних носіях, таких як дискети, «супердискети», картки пам’яті (наприклад, CompactFlash, SD) та USB-флеш-накопичувачі. FAT підтримується портативними пристроями, як-от КПК, цифрові фото- та відеокамери, портативні медіа-плеєри та мобільні телефони.
Специфікація DCF (Design rule for Camera File system) впроваджена майже всіма цифровими фотокамерами з 1998 року, визначає логічну файлову систему з іменами файлів у форматі 8.3 і вимагає використання для фізичного рівня однієї з файлових систем FAT12, FAT16, FAT32 або exFAT задля сумісності.
Технічні деталі
Файлова система FAT використовує індексну таблицю, що зберігається на носії, для визначення ланцюжків кластерів, які містять дані файлів. Ця таблиця і є «таблицею розміщення файлів» (FAT). FAT виділяється статично під час форматування носія. Таблиця являє собою зв’язаний список записів для кожного кластера — неперервної області дискового простору. Кожен запис містить або номер наступного кластера файлу, або спеціальну позначку, що вказує на кінець файлу, невикористаний простір чи зарезервовані області диска. У кореневому каталозі диска зберігаються номери перших кластерів кожного файлу цього каталогу. Операційна система може пройти по ланцюжку FAT, послідовно знаходячи номер кластера кожної наступної частини файлу доти, доки не досягне кінця файлу. Підкаталоги реалізовані як спеціальні файли, що містять записи про файли в межах цих каталогів.
Кожен запис у зв’язаному списку FAT має фіксовану розрядність: 12, 16 або 32 біти. Максимальний розмір файлу або розділу диска, який може бути адресований, дорівнює добутку найбільшого числа, що може бути збережене у записі FAT (за вирахуванням кількох значень, зарезервованих для позначення нерозподіленого простору чи кінця ланцюжка) на розмір кластера. Навіть якщо для розширення файлу потрібен лише 1 байт, буде виділено цілий кластер; внаслідок цього велика кількість дрібних файлів може призводити до того, що у виділених кластерах більша частина простору залишається «порожньою».
Первісно спроєктована як 8-розрядна файлова система, FAT з часом збільшувала максимальну кількість кластерів у зв’язку зі зростанням ємності дисків, тому кількість біт для ідентифікатора кластера поступово зростала. Послідовні ключові варіанти формату FAT названі відповідно до кількості біт у елементах таблиці: 12 (FAT12), 16 (FAT16) і 32 (FAT32).
Різновиди Існує декілька різновидів файлової системи FAT (наприклад, FAT12, FAT16 і FAT32). Позначення FAT16 стосується як початкової групи файлових систем FAT із 16-розрядними записами в таблиці, так і пізніших їх варіантів. VFAT — це необов’язкове розширення для підтримки довгих імен файлів, яке може працювати поверх будь-якої з файлових систем сімейства FAT. Том, що використовує довгі імена VFAT, може бути прочитаний також операційними системами, які не підтримують розширення VFAT.
FAT — рішення для 8-дюймових дискет, до появи дисків постійно зберігання
У середині 1970-х років, коли персональні комп’ютери лише починали з’являтися, більшість з них не мали операційних систем або навіть базових засобів зберігання даних таких як диски чи дискети. Програми часто завантажувалися з паперових стрічок або вводилися вручну через перемикачі на передній панелі комп’ютера.
У 1975 році компанія MITS анонсувала першу комерційну систему з гнучкими дисками (флопі-дисками) для свого комп’ютера Altair 8800. Це стало поштовхом для розробки Disk BASIC — версії мови BASIC, здатної працювати з дисками. Новий інтерпретатор мав не лише виконувати програми, а й самостійно керувати зберіганням і пошуком файлів, адже Altair не мав операційної системи. Таким чином, Disk BASIC фактично виконував роль простої ОС.
У 1976 році Білл Гейтс написав Disk BASIC для Altair, а вже через рік Microsoft розширила цю ідею, створивши Stand-alone Disk BASIC — автономну версію BASIC для 8-дюймових дискет, призначену для терміналу введення даних на базі процесора Intel 8080, створеного для компанії NCR. Для організації файлів на диску інженер Марк МакДональд розробив файлову систему, яка отримала назву FAT (File Allocation Table — таблиця розміщення файлів). Ідея виникла в результаті серії обговорень між ним і Гейтсом.
FAT дозволяла зберігати інформацію про розміщення даних на диску в єдиній таблиці, де кожен кластер містив посилання на наступний, утворюючи "ланцюжки". Такий підхід забезпечував просту, ефективну та гнучку модель керування файлами. Спочатку FAT мала 8-бітові записи й використовувалась тільки у Stand-alone Disk BASIC, який підтримував до трьох копій FAT для підвищення надійності.
Трохи пізніше, але в той же період, FAT інтегрували у Microsoft MDOS (пізніше перейменовану на MIDAS), операційну систему для комп’ютерів з процесорами 8080 та Z80. Особливістю FAT стало те, що вона дозволяла зберігати кілька копій файлової таблиці — наприклад, Standalone Disk BASIC використовував три копії, щоб підвищити надійність у разі помилки на диску. У MDOS кількість копій FAT можна було налаштовувати вручну.
FAT12 — рішення для 5.25-дюймових дискет епохи перших ПК У травні 1979 року Тім Патерсон із компанії Seattle Computer Products вперше ознайомився зі структурою FAT від Microsoft, коли допомагав Бобу О’Ріру адаптувати портовану версію емулятора Standalone Disk BASIC-86 до прототипу плати з процесором 8086 для шини S-100, яку розробляла SCP. Це відбувалося під час його тижневого візиту до Microsoft.
У 1980 році Тім Патерсон створив нову версію файлової системи — FAT12. Вона стала необхідною складовою його операційної системи QDOS (пізніше — 86-DOS), розробленої для комп’ютерів із процесором Intel 8086. FAT12 базувалась на попередніх версіях FAT, але включала важливі зміни, які зробили її стандартом для гнучких дисків (дискет) протягом багатьох років.
Головне нововведення — використання 12-бітових чисел для зберігання адрес кластерів, що дозволяло вміщувати до 4096 кластерів на одному томі. У попередніх варіантах FAT доступна кількість кластерів була в рази меншою, що суттєво обмежувало розмір диска і кількість файлів. Така зміна стала критично важливою на фоні поширення 5,25-дюймових дискет обсягом 160–360 КБ і потреби зберігати на них все більшу кількість файлів.
Разом із новим форматом кластерів були запроваджені й інші технічні зміни. Кількість копій FAT-таблиці зменшилась до двох (замість трьох, як у Standalone Disk BASIC), а кореневий каталог (де зберігались записи про всі файли) було перенесено між FAT-таблицею та областю даних. Це полегшувало організацію доступу до файлів. Формат імен було оновлено до так званого 8.3 — вісім символів на назву файлу та три символи на розширення, як у популярній тоді системі CP/M. Окрім того, було збільшено розмір запису в каталозі з 16 до 32 байтів, що дало змогу зберігати дату останньої модифікації та підтримати більші розміри файлів.
Файлова система зберігала дані щільно, використовуючи специфічну упаковку: два 12-бітові значення FAT розміщувалися в трьох байтах. Це дозволяло ефективно використовувати обмежений простір дискет. Водночас це робило систему чутливою до пошкоджень: службові області файлової системи зберігались на першій доріжці диска, і якщо хоча б один сектор у цій області був ушкоджений, дискета могла стати повністю непридатною. Щоб уникнути використання секторів з помилками, система позначала їх спеціальним значенням 0xFF7.
У 1981 році компанія IBM випустила свій перший персональний комп’ютер — IBM PC — з операційною системою PC DOS 1.0, розробленою Microsoft на основі 86-DOS. Саме FAT12 використовувалась у цій ОС. Спочатку вона підтримувала лише односторонні 5,25-дюймові дискети на 160 КБ, але згодом — і 320 КБ (двосторонні), а також 180 і 360 КБ. Незважаючи на відсутність підтримки підкаталогів, FAT12 чудово виконувала свої функції в умовах обмеженого простору та апаратних можливостей перших ПК.
Поява комп’ютерів із жорсткими дисками, як IBM PC/XT, стала наступним викликом. У 1983 році в системі PC DOS 2.0 було реалізовано низку важливих нововведень: підтримка жорстких дисків обсягом до 16 МБ (через обмеження FAT12), введення структури BIOS Parameter Block (BPB), яка описувала геометрію диска, і підтримка вкладеної структури каталогів. Також було додано нові атрибути файлів — «тільки для читання», «архівний», «каталог» та інші. Це був серйозний крок до повноцінної файлової системи для персональних комп’ютерів.
Навіть після появи FAT16, формат FAT12 продовжував широко використовуватись на дискетах усіх типів — від 5,25-дюймових на 1,2 МБ до 3,5-дюймових на 1,44 і навіть 2,88 МБ. Завдяки своїй простоті та сумісності FAT12 залишався актуальним упродовж десятиліть — як у DOS-сумісних системах, так і в сучасних інструментах, що працюють з гнучкими дисками.
FAT16 — перший серйозний крок до роботи з жорсткими дисками
У 1984 році з виходом комп’ютера IBM PC/AT з’явився жорсткий диск на 20 мегабайт, що вимагало змін у файловій системі. Попередня версія — FAT12 — просто не могла впоратись із такими обсягами, бо дозволяла зберігати максимум близько 4078 кластерів, що накладало обмеження на розмір розділу. Відповіддю зявилась нова версія — FAT16, представлена разом із MS-DOS 3.0.
У FAT16 розмір поля, що зберігає номер кластера, збільшили до 16 біт. Це дало змогу підтримувати до 65 526 кластерів на томі. На практиці це означало, що файлову систему можна було використовувати на розділах до 32 мегабайт — саме стільки можна було адресувати через стандартне 16-бітне поле кількості секторів при 512-байтовому секторі. І хоча технічно кластерів стало більше, структура BIOS Parameter Block (BPB) ще не була готова до більших розмірів, тому обмеження залишалися жорсткими.
Сама FAT16 використовувала ті самі принципи, що й FAT12, але завдяки розширеній адресації кластери можна було зробити меншими. Це зробило систему ефективнішою, особливо якщо на диску зберігались тисячі дрібних файлів. Менші кластери означали менше витратного простору — тобто файли займали саме стільки, скільки потрібно, з мінімальними втратами на фрагментацію.