FAT ( англ. File Allocation Table — «таблиця розміщення файлів») — файлова система, розроблена для персональних комп’ютерів, що використовувалася за замовчуванням в операційних системах 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-х років, коли персональні комп’ютери лише починали з’являтися, більшість з них не мали операційних систем або навіть базових засобів зберігання даних таких як диски чи дискети. Програми часто завантажувалися з паперових стрічок або вводилися вручну через перемикачі на передній панелі комп’ютера.[1]
У 1975 році компанія MITS анонсувала першу комерційну систему з гнучкими дисками (флопі-дисками) для свого комп’ютера Altair 8800. Це стало поштовхом для розробки Disk BASIC — версії мови BASIC, здатної працювати з дисками. Новий інтерпретатор мав не лише виконувати програми, а й самостійно керувати зберіганням і пошуком файлів, адже Altair не мав операційної системи. Таким чином, Disk BASIC фактично виконував роль простої ОС.[1]
У 1976 році Білл Гейтс написав Disk BASIC для Altair, а вже через рік Microsoft розширила цю ідею, створивши Stand-alone Disk BASIC — автономну версію BASIC для 8-дюймових дискет, призначену для терміналу введення даних на базі процесора Intel 8080, створеного для компанії NCR. Для організації файлів на диску інженер Марк МакДональд розробив файлову систему, яка отримала назву FAT (File Allocation Table — таблиця розміщення файлів). Ідея виникла в результаті серії обговорень між ним і Гейтсом.[1]
FAT дозволяла зберігати інформацію про розміщення даних на диску в єдиній таблиці, де кожен кластер містив посилання на наступний, утворюючи "ланцюжки". Такий підхід забезпечував просту, ефективну та гнучку модель керування файлами. Спочатку FAT мала 8-бітові записи й використовувалась тільки у Stand-alone Disk BASIC, який підтримував до трьох копій FAT для підвищення надійності.[1]
Трохи пізніше, але в той же період, FAT інтегрували у Microsoft MDOS (пізніше перейменовану на MIDAS), операційну систему для комп’ютерів з процесорами 8080 та Z80. Особливістю FAT стало те, що вона дозволяла зберігати кілька копій файлової таблиці — наприклад, Standalone Disk BASIC використовував три копії, щоб підвищити надійність у разі помилки на диску. У MDOS кількість копій FAT можна було налаштовувати вручну.[1]
FAT12 — рішення для 5.25-дюймових дискет епохи перших ПК
У травні 1979 року Тім Патерсон із компанії Seattle Computer Products вперше ознайомився зі структурою FAT від Microsoft, коли допомагав Бобу О’Ріру адаптувати портовану версію емулятора Standalone Disk BASIC-86 до прототипу плати з процесором 8086 для шини S-100, яку розробляла SCP. Це відбувалося під час його тижневого візиту до Microsoft.[2]
У 1980 році Тім Патерсон створив нову версію файлової системи — FAT12. Вона стала необхідною складовою його операційної системи QDOS (пізніше — 86-DOS), розробленої для комп’ютерів із процесором Intel 8086. FAT12 базувалась на попередніх версіях FAT, але включала важливі зміни, які зробили її стандартом для гнучких дисків (дискет) протягом багатьох років.[2]
Головне нововведення — використання 12-бітових чисел для зберігання адрес кластерів, що дозволяло вміщувати до 4096 кластерів на одному томі[3]. У попередніх варіантах 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, але завдяки розширеній адресації кластери можна було зробити меншими. Це зробило систему ефективнішою, особливо якщо на диску зберігались тисячі дрібних файлів. Менші кластери означали менше витратного простору — тобто файли займали саме стільки, скільки потрібно, з мінімальними втратами на фрагментацію.
Однак новий формат мав і недоліки — насамперед у сумісності. Наприклад, MS-DOS 3.0 автоматично форматувала розділи розміром від 16 до 32 мегабайт у FAT16. Але якщо такий диск під’єднували до системи з MS-DOS 2.0, вона не могла його прочитати. І навпаки — розділи FAT12, створені в DOS 2.0, не завжди правильно розпізнавались у DOS 3.0. Щоб вирішити цю плутанину, в MS-DOS 3.31 знову дозволили створювати FAT12-томи розміром до 32 МБ.
Цікаво, що хоча нова FAT дозволяла працювати з більшими обсягами, вона ще не подолала обмеження самої BPB. Структура залишалася 16-бітною, тому наступним логічним кроком стало створення FAT16B — варіанту, в якому це обмеження вже було усунено.
Логічно-секторна FAT — як виробники обходили обмеження DOS
У середині 1980-х стало очевидно, що файлової системи FAT16 в її базовому вигляді вже недостатньо. Хоч вона дозволяла працювати з більшими дисками, ніж FAT12, але й вона мала обмеження: максимальний розмір розділу — приблизно 32 мегабайти. Це було пов’язано з тим, що поле "загальна кількість секторів" у завантажувальному секторі (BPB) залишалося 16-бітним, а стандартний розмір сектора становив 512 байт. Таким чином, розділ не міг містити більше 65 535 секторів, що й створювало граничний обсяг у 32 МБ.
Виробники комп’ютерів і OEM-версій DOS знайшли різні способи обійти ці обмеження — не змінюючи саму FAT, а модифікуючи спосіб, яким система бачила диск. Найпопулярнішим методом стало збільшення розміру логічного сектора. Фізично диск усе ще складався з 512-байтових секторів, але BIOS або DOS-драйвери повідомляли файловій системі, що сектор має більший розмір — наприклад, 1024, 2048 або навіть 8192 байти. Це дозволяло мати менше секторів на розділі при тій самій загальній місткості, що й знімало обмеження на розмір розділу. Таке рішення було цілком прозорим для самої FAT, але воно вимагало більше оперативної памʼяті для обробки великих секторів, і не підтримувалось стандартними версіями MS-DOS та PC DOS.
Щоб уникнути конфліктів, виробники використовували спеціальні "нестандартні" коди типів розділів — такі як 0x08, 0x11, 0x14, 0x24, 0x56, 0xE5 або 0xF2 — які були розпізнавані лише в їхніх власних версіях DOS. Це дозволяло запобігти помилкам у звичайних версіях системи, які не вміли працювати з такими дисками. При цьому сам формат файлової системи залишався сумісним із FAT12 або FAT16, і диски могли бути змонтовані в інших ОС або в більш гнучких файлових драйверах, як-от DR-DOS, просто змінивши код розділу.
У цей же період була впроваджена ще одна важлива концепція — розширені розділи. Стандартна структура MBR дозволяла створити лише чотири первинні розділи на одному фізичному диску. У PC DOS 3.2 (1986) Microsoft представила новий тип — розширений розділ, який виконував роль контейнера для додаткового логічного розділу. А з версії PC DOS 3.3 (1987) стало можливим створювати ланцюжок розширених розділів, кожен з яких міг містити один логічний диск. Завдяки цьому користувачі отримали змогу мати значно більше дискових розділів, ніж дозволяв стандартний MBR.
Поступово ці тимчасові та нестандартні рішення були витіснені новими версіями FAT, які офіційно розширили можливості BPB, додавши 32-бітне поле кількості секторів. Це стало основою для наступного покоління — FAT16B.
FAT16B — оновлена FAT для більших дисків
У 1987 році компанія Compaq випустила змінену версію MS-DOS 3.3 з розширеною підтримкою великих жорстких дисків. Саме в цій версії з’явився формат, який сьогодні відомий як FAT16B. Він був дуже схожий на попередню FAT16, але з ключовим удосконаленням: замість 16-бітного обмеження на кількість секторів, у завантажувальному секторі з’явилось 32-бітне поле. Це дозволило створювати розділи обсягом значно більше 32 МБ — аж до 2 гігабайтів, що на той момент було майже фантастикою.
Щоб реалізувати підтримку такої кількості секторів, потрібно було переробити драйвер файлової системи DOS — з урахуванням того, що весь код був написаний у 16-бітному асемблері. Цей формат спочатку називали «великою файловою системою DOS 3.31», а деякі утиліти, як-от DSKPROBE або FDISK, позначали такі розділи як “BigFAT” або “BIGDOS”.
Щоб уникнути плутанини з попередньою FAT16, нова версія отримала інший код типу розділу — 0x06, тоді як класична FAT16 залишилася з кодом 0x04. Єдина відмінність між ними на рівні файлової системи — це наявність 32-бітного лічильника секторів у структурі BPB. Усе інше, включно з організацією кластерів, залишалось аналогічним.
Максимальний розмір FAT16B-розділу обмежувався не розміром сектора, а розміром кластера, який задавався 8-бітним полем «секторів на кластер». Це поле могло приймати значення максимум 64, що при стандартному секторі 512 байтів давало кластер розміром 32 КБ. Таким чином, максимально підтримуваний обсяг становив 2 ГБ. На носіях із більшим розміром сектора (наприклад, 1 КБ або 2 КБ), теоретично обсяг міг бути більшим, але підтримка таких форматів була обмеженою.
Пізніше, коли з’явилися нові операційні системи, як-от Windows NT, з’явилась можливість використовувати ще більші кластери — до 64 КБ. Але це призводило до проблем із сумісністю, бо багато утиліт і драйверів були не готові до такого кроку. Наприклад, Windows 98 та ME могли читати й записувати на такі розділи, але їхні стандартні утиліти форматування не підтримували створення розділів із кластерами по 64 КБ, і деякі програми, що працювали через застарілі механізми, не розуміли такі диски.
До 1995 року всі DOS-сумісні системи працювали з дисками через класичну схему адресації CHS (Cylinders-Heads-Sectors), яка обмежувала фізичне розміщення розділів у межах приблизно 8 гігабайтів. Коли в MS-DOS 7.0 (Windows 95) впровадили LBA-доступ до диска, це дозволило розміщувати розділи за межами цієї зони. Щоб позначити такі розділи, ввели ще один код типу — 0x0E, і нові розділи отримали умовну назву FAT16X. Від звичайного FAT16B вони відрізнялись лише тим, що деякі параметри геометрії диска могли бути нульовими або незначущими.
Окремо варто згадати про структуру кореневого каталогу в FAT12 і FAT16. Його максимальний розмір задавався при форматуванні і зберігався у 16-бітному полі. Зазвичай вибиралось значення 512 записів, що займало 16 КБ — це дозволяло точно вписати каталог у ціле число секторів. Утиліти типу mkdosfs
дозволяли користувачам змінювати це значення вручну, щоб підлаштувати файлову систему до своїх потреб.
FAT16B залишалась основною файловою системою для MS-DOS і Windows до середини 1990-х років, поки не з’явилась її спадкоємиця — FAT32, яка мала позбутися ліміту в 2 гігабайти. Але до цього моменту FAT16B встигла стати надійною основою для мільйонів комп’ютерів по всьому світу.
FAT32 — відповідь на обмеження FAT16 у світі гігабайтів
До середини 1990-х років стало очевидно, що навіть розширена версія FAT16B не витримує темпів розвитку комп’ютерної техніки. Ліміт у 2 гігабайти на один розділ дедалі частіше ставав вузьким місцем — як для користувачів, так і для виробників ПК, особливо на тлі появи жорстких дисків на десятки і сотні гігабайтів. Потрібно було оновлення файлової системи, але бажано без повної несумісності зі світом MS-DOS. Так з’явилась FAT32.
У новій версії FAT головна зміна стосувалась того ж, що і раніше — кількості кластерів, яку можна було адресувати. Якщо у FAT16 для цього використовували 16-бітні значення, то FAT32 передбачала 32-бітні записи, з яких реально використовувалось 28 біт (решта були зарезервовані). Це дозволило підтримати до 268 мільйонів кластерів на одному томі, що в теорії забезпечувало томи обсягом до 2 терабайтів при стандартному секторі в 512 байтів.
Формально FAT32 могла підтримувати ще більші розділи — до 16 ТБ, якщо розмір сектора був більшим (наприклад, 4096 байт). Але на практиці в Windows 95/98 і навіть NT ліміти штучно обмежувались — наприклад, вбудована утиліта форматування в Windows NT дозволяла створювати FAT32-розділи лише до 32 ГБ. Водночас система могла без проблем читати й записувати на значно більші FAT32-томи, створені іншими інструментами — зокрема, командним рядком (format /FS:FAT32
) або сторонніми утилітами.
Одна з головних цілей FAT32 — зберегти сумісність із DOS-архітектурою. Для цього Microsoft спеціально розробила FAT32 так, щоб її реалізація займала лише на 5 КБ більше оперативної пам’яті, ніж FAT16. Завдяки цьому FAT32 залишалась функціонально доступною навіть у реальному режимі MS-DOS.
Як і попередні версії, FAT32 зберігала інформацію про файли в основній FAT-таблиці. Кожен кластер мав свій номер, і файл представляв собою ланцюжок кластерів. Проте, на відміну від FAT16, кореневий каталог не мав фіксованого розміру чи розташування — він зберігався як звичайний файл у будь-якому місці тома. Це спростило масштабування системи та зняло обмеження на кількість записів у кореневому каталозі.
Максимальний розмір одного файлу залишився обмеженим до 4 294 967 295 байтів (~4 ГБ мінус 1 байт). Це пов’язано з тим, що в структурі файлу поле "розмір" було 4-байтовим (32 біти), і інтерпретувалося як беззнакове ціле число. Це обмеження актуальне і для FAT32, і для гіпотетичних великих версій FAT16 з нестандартними параметрами.
FAT32 також підтримувала довгі імена файлів — через механізм VFAT, який додавав до кожного запису коротку 8.3-версію і набір додаткових службових записів. Цей самий механізм використовувався й у FAT12/FAT16.
Файлова система FAT32 була вперше офіційно реалізована у Windows 95 OEM Service Release 2 (MS-DOS 7.1) в 1996 році. Але на жаль, перехід на FAT32 вимагав повного форматування диска — існуючі розділи не можна було конвертувати без втрати даних (за винятком утиліти в Windows 98, яка вже дозволяла перетворення FAT16 → FAT32 без втрати файлів).
Окремо підтримку FAT32 почали впроваджувати й інші виробники:
у 1999 році її включили до DR-DOS 7.04, IMS REAL/32, IBM 4690 OS та навіть PC DOS 7.1. У Windows 2000 з’явився штатний драйвер FAT32 для NT-платформи. Існували також сторонні драйвери — наприклад, Winternals FAT32 для Windows NT 4.0, хоча сьогодні вони не доступні з офіційних джерел.
Код типу розділу для FAT32 за замовчуванням — 0x0B, а якщо розділ використовує LBA-доступ (замість застарілого CHS), то застосовується код 0x0C, іноді з позначкою FAT32X. На таких розділах геометричні поля (типу кількості головок або секторів на доріжку) можуть бути нульовими або мати довільні значення — вони більше не використовуються системою.
FAT32 стала останнім масштабним оновленням класичної FAT-сімʼї. Вона зберігала простоту, сумісність і високу продуктивність, залишаючись однією з найпоширеніших файлових систем у світі — особливо на флешках, SD-картах, камерах і простих зовнішніх накопичувачах. Навіть після появи NTFS та exFAT, вона продовжує використовуватись там, де важлива простота і кросплатформеність.
Розширення FAT: довгі імена, атрибути й великі файли
Розширені атрибути
Операційна система OS/2 активно використовувала розширені атрибути (Extended Attributes, EA) — вони дозволяли зберігати додаткові метадані про файли, зокрема піктограми, типи MIME, асоційовані програми тощо. На томах FAT12 і FAT16 ці атрибути зберігались у спеціальному прихованому файлі EA␠DATA.␠SF
, який прив’язувався до основного файлу через два зарезервовані байти у його записі каталогу.
У FAT32 ці байти були вже зайняті для інших цілей (зокрема, для старших бітів адреси кластера), тому зберігати атрибути за старим методом стало неможливо. Альтернативні драйвери, як-от FAT32.IFS для OS/2 (від Генка Келдера), почали зберігати EA в окремих файлах, додаючи до назви ␠EA.␠SF
. Додатково для пришвидшення пошуку атрибутів один байт каталожного запису використовувався як ознака наявності EA.
У Windows NT також була реалізована підтримка EA на FAT12 і FAT16 — для сумісності з OS/2. Проте альтернативні потоки даних (ADS), що були характерні для NTFS, при копіюванні на FAT-носії не зберігалися. Windows NT виводила попередження, тоді як Windows 2000 зберігала подібну поведінку лише для ADS, а EA — ігнорувала без сповіщення.
Довгі імена файлів (VFAT)
До появи Windows 95 у файлових системах FAT дозволялись лише короткі імена у форматі 8.3. Але новим вимогам вже потрібні були повноцінні імена — до 255 символів. VFAT (Virtual FAT) став способом зберігати довгі імена у рамках старої файлової системи без зміни її основної структури.
Довгі імена записувались у вигляді додаткових службових записів каталогу, які передували основному. Старі ОС, які не підтримували VFAT, бачили лише коротке ім’я, тож сумісність зберігалась. Утім, при редагуванні або копіюванні під старими ОС довгі імена втрачались.
У Linux підтримку VFAT реалізовано через окремий драйвер. Існувала також спроба сумістити VFAT і UMSDOS через проект UVFAT. У OS/2 довгі імена реалізовувались ще до VFAT, через EA. Але імена збережені OS/2 не були видимі у Windows, і навпаки — VFAT-імена були невидимі для OS/2.
Альтернативні потоки даних (ADS) і Mac OS
Файлова система FAT спочатку не підтримувала альтернативні потоки даних (ADS), але вони були критичні для Mac OS. У класичному Mac OS кожен файл мав основні дані та ресурсну вилку — це зберігалось у підкаталозі RESOURCE.FRK
, а довгі назви — у файлі FINDER.DAT
.
У macOS (колишній Mac OS X) метадані зберігаються у форматі AppleDouble — окремий файл із префіксом ._
, а інформація про каталог — у .DS_Store
. Ці файли присутні навіть на рідній файловій системі macOS, HFS+ чи APFS.
UMSDOS: підтримка дозволів UNIX
Формат UMSDOS, створений для ранніх версій Linux, дозволяв зберігати атрибути UNIX (права доступу, власника, час створення) на томах FAT, використовуючи службовий файл --linux--.---
у кожному каталозі. Це дало змогу запускати Linux на файлових системах FAT без спеціального форматування.
Після появи VFAT UMSDOS почав втрачати актуальність. У ядрі Linux підтримку цього формату було відключено за замовчуванням з версії 2.5.7 (2002). Проєкт UVFAT намагався поєднати VFAT і UMSDOS, але не набув широкого поширення.
Специфічні розширення: Human68K, IBM 4690 OS
Японська операційна система Human68K використовувала власну модифікацію FAT з підтримкою довших імен (до 18 символів) і запису імен ієрогліфами у кодуванні Shift JIS.
Операційна система IBM 4690 OS, яка базувалась на FlexOS, реалізувала власну віртуальну файлову систему (VFS) поверх FAT. Вона дозволяла зберігати довгі імена у зворотно сумісний спосіб. Кожен файл мав «реальне» ім’я (RFN) та «віртуальне» (VFN), доступне через інший логічний диск.
FAT+ — великі файли на FAT32
Файлова система FAT32 мала обмеження на розмір одного файлу — до 4 ГБ мінус 1 байт, що було викликано 32-бітною довжиною поля «розмір файлу». У 2007 році зʼявився проєкт FAT+, який дозволяв зберігати файли до 256 ГБ мінус 1 байт (2^38−1) на майже незмінених томах FAT32.
Ідея полягала в мінімальній зміні структур файлової системи, збереженні сумісності та можливості використовувати старі драйвери. Проте на практиці багато ОС і програм не підтримували FAT+, що призводило до серйозних ризиків — зокрема, обрізання або втрати файлів. Підтримка FAT+ була реалізована лише в деяких версіях DR-DOS і не підтримується сучасними ОС на кшталт Windows чи Linux.
Похідні файлові системи на базі FAT
Оскільки архітектура FAT є простою та надійною, вона стала основою для створення низки модифікованих чи спеціалізованих файлових систем. Деякі з них були розроблені для збільшення продуктивності, інші — для специфічних пристроїв, таких як ігрові консолі. Попри спільне походження, ці системи зазвичай несумісні зі стандартною FAT.
Turbo FAT (NetWare)
Файлова система NetWare File System (NWFS), створена компанією Novell для операційної системи NetWare, базувалась на глибоко модифікованій версії FAT. Однією з ключових її особливостей був механізм Turbo FAT — рішення для підвищення продуктивності при роботі з файлами великого розміру.
Про Turbo FAT відомо небагато публічної технічної інформації, але загальна ідея полягала в оптимізації зчитування та запису великих файлів шляхом зменшення кількості звернень до FAT-таблиці, що могло бути критично важливим для файлового сервера у 1990-х роках.
FATX (Xbox)
Файлова система FATX була розроблена Microsoft спеціально для ігрової консолі Xbox (2001) та її карт пам’яті. Вона базується на ідеях FAT16 та FAT32, але реалізована у спрощеному та несумісному форматі — стандартні драйвери FAT не можуть змонтувати томи FATX без модифікацій.
У FATX використовуються власні структури:
- Суперблок (незавантажувальний початковий сектор) має обсяг 4 КБ і містить спеціальну 18-байтову структуру, схожу на BPB, але повністю з нею несумісну.
- Кластери зазвичай мають розмір 16 КБ, що відповідає характеру використання (великі файли, високе навантаження).
- Лише одна копія таблиці FAT — для економії місця і часу.
- Записи каталогів мають розмір 64 байти замість стандартних 32.
- Дозволяється максимальна довжина імен файлів до 42 символів у OEM-кодуванні (зокрема, без підтримки довгих імен VFAT).
Дати і час зберігаються, але з власним початком епохи:
- для оригінальної Xbox — рік 2000,
- для Xbox 360 — знову 1980, як у класичній FAT.
Хоча FATX має схожість із FAT лише на концептуальному рівні, вона є повністю окремою системою, створеною для конкретної апаратної платформи та вимог (низькі затримки, передбачуване навантаження, простота реалізації).
exFAT (Extended FAT)
exFAT (Extended File Allocation Table) була представлена Microsoft у 2006 році разом із Windows Embedded CE 6.0, а пізніше додана до Windows Vista SP1 і Windows XP SP3 (через окреме оновлення KB955704). Вона створена на базі архітектури FAT, але є повністю несумісною з попередніми реалізаціями. Це пропрієтарна файлова система, яка тривалий час була захищена патентами.
Головною метою exFAT була заміна FAT32 на флеш-накопичувачах і картах пам’яті, особливо для пристроїв SDXC і Memory Stick XC. Однією з головних переваг стало усунення обмеження 4 ГБ на розмір одного файлу — у структурі exFAT розміри зберігаються у 64-бітних полях, що дозволяє зберігати файли обсягом до 2⁶⁴−1 байтів (теоретично — ексабайти).
У Windows exFAT пропонується як альтернатива NTFS для флеш-носіїв і SD-карт. Код розділу 0x07 у таблиці розділів MBR збігається з кодами для NTFS та HPFS, тому для точного визначення файлової системи необхідно читати завантажувальний сектор.
На відміну від FAT, у exFAT немає звичної структури BPB (BIOS Parameter Block). Вся службова інформація про геометрію розділу записується у VBR (Volume Boot Record) у власному форматі.
У 2010 році файлову систему exFAT було зворотно спроєктовано фахівцями SANS Institute, що дозволило реалізувати сумісні драйвери у сторонніх ОС. А вже 28 серпня 2019 року Microsoft офіційно опублікувала специфікацію exFAT, відкривши шлях до підтримки у ядрі Linux та інших системах з відкритим кодом.
Патенти та судові спори навколо FAT
Патенти Microsoft на FAT
У середині 1990-х років компанія Microsoft отримала низку патентів, пов’язаних з файловою системою FAT. Усі вони стосувалися механізму довгих імен VFAT, реалізованого у Windows 95. Йдеться про такі патенти США:
- № 5,579,517
- № 5,745,902
- № 5,758,352
- № 6,286,013
Термін дії цих патентів завершився до 2013 року, але протягом багатьох років вони були підставою для ліцензійної політики Microsoft.
3 грудня 2003 року Microsoft оголосила про готовність ліцензувати FAT на умовах роялті: $0,25 з кожного пристрою (максимум $250 000 за одну угоду). Це стало важливим сигналом для виробників, які інтегрували FAT у свої пристрої, особливо портативні накопичувачі.
Ці патенти активно застосовувались Microsoft у судових справах. Хоча FAT як концепція вважається публічною, ключові розширення, як-от VFAT, були під патентним захистом.
Ліцензії і специфікації
Microsoft надавала дозвіл на використання FAT у деяких випадках, наприклад, у специфікації EFI FAT32 (для UEFI-сумісних систем). Це інтерпретували як дозвіл на реалізацію підтримки FAT без окремої ліцензії, хоча юридично трактування залишалось спірним.
Окрім патентів Microsoft, існували й інші — наприклад, патент США № 5,367,671, який охоплював розширені атрибути OS/2. Він утратив чинність у 2011 році.
Спроби оскарження патентів
У 2004 році організація Public Patent Foundation (PUBPAT) звернулась до Бюро патентів США (USPTO), вимагаючи перегляду чинності патенту № 5,579,517. В якості прикладів пріоритетних розробок вона навела рішення від Xerox та IBM.
Результатом стало відкриття повторної експертизи, за якою у 2005 році USPTO відхилило всі пункти цього патенту, а також визнало недійсним патент № 5,758,352 через неправильно вказаних правонабувачів.
Однак у 2006 році USPTO скасувало попередні рішення, оголосивши реалізацію Microsoft «новою та неночевидною». Патенти були залишені чинними.
Судові справи проти TomTom і Motorola
У 2009 році Microsoft подала позов проти компанії TomTom, стверджуючи, що її пристрої з Linux порушують патенти на VFAT (довгі імена). Це стало першим випадком прямого патентного позову Microsoft проти використання FAT у Linux.
Позов завершився позасудовим врегулюванням:
- Microsoft отримала доступ до чотирьох патентів TomTom,
- TomTom припинила використання VFAT-довгих імен,
- Microsoft зобов’язалась не подавати нових позовів протягом п’яти років.
У 2010 році Microsoft подала подібний позов проти Motorola, стверджуючи, що Android використовує VFAT без ліцензії. Паралельно було подано скаргу до Міжнародної торгової комісії США (ITC).
Обхід патентів і рішення судів ЄС
Розробники з відкритим кодом створили обхідні реалізації FAT, які не використовували патентовані частини VFAT. У 2013 році німецький Федеральний патентний суд визнав недійсним європейський патент EP0618540, що описував спільний простір імен для довгих і коротких назв файлів.
Після відкликання апеляції рішення набуло чинності 28 жовтня 2015 року, остаточно знімаючи обмеження на використання цього механізму у ЄС.
Див. також
Примітки
- ↑ а б в г д Duncan, Ray (1988). The MS-DOS Encyclopedia (англ.). 16011 NE 36th Way, Box 97017, Redmond, Washington 98073-9717: Microsoft Press. ISBN 1-55615-049-0. Архів оригіналу за 14 жовтня 2018.
- ↑ а б Hunter, David (Березень 1983). The roots of DOS: Tim Paterson (ут) . Архів оригіналу за 6 вересня 2019.
- ↑ Understanding the FAT File System and its evolution. LSoft Technologies (англ.). Процитовано 1 травня 2025.
Література
- Пройдаков Е. М.,Теплицький Л. А. Англо-український тлумачний словник з обчислювальної техніки, Інтернету і програмування. — Київ : СофтПрес. — С. 552. — ISBN 966-530-070-9.