Форматування флешки або системного накопичувача — стандартне завдання комп’ютерного користувача. У сучасних операційних системах процес сильно спрощений, тому впорається навіть новачок. Система самостійно визначає, які налаштування підходять певному пристрою і яку файлову систему вибрати під час форматування. Так, Windows форматує системні накопичувачі в NTFS, а флешки перетворює на FAT32. Чому так відбувається? Чим відрізняються ці файлові системи і взагалі, навіщо диску потрібен «формат»?
Якщо говорити простою мовою, то комп’ютерний накопичувач — це щось на кшталт бібліотеки, в якій зберігаються тисячі книг. Бібліотека може бути влаштована у вигляді невеликого стелажа або багатоповерхової полиці зі сходами, а також у вигляді кластерів — величезних приміщень з десятками шаф і сотнями полиць. Щоб знайти в такому масштабі книжку, яка цікавить, необхідно орієнтуватися за умовними розпізнавальними знаками, буквами або цифрами.
Наприклад, ми відвідали бібліотеку в пошуках твору «Таємничий острів». На прохання читача бібліотекар звертається до каталогу, шукає відділ, у якому зберігаються книжки з назвами, що починаються з літери «Т», потім знаходить шафу, полицю і місце, де зберігається видання, що цікавить читача. Користуючись такою системою, бібліотекар знайде книжку за лічені секунди, набагато довше йому доведеться діставати і нести її читачеві через увесь зал. Аналогічно працює і файлова система в накопичувачі.
Тепер уявімо, що з бібліотеки вивезли всі шафи та полиці, а книжки тепер лежать на столах, стільцях, підлозі та підвіконнях. Твір Жюля Верна буде практично неможливо знайти серед тисяч друкованих примірників: він може перебувати в будь-якому місці, оскільки книги розкидані в невідомому порядку. При цьому, незважаючи на безлад, бібліотека все-таки виконує своє основне завдання — вона зберігає книги. Але практичної користі від цього мало: у системі зберігання порушені структура і каталогізація. Те саме відбувається, якщо накопичувач позбавлений будь-якої файлової системи.
Що таке файлова система
Отже, файлова система комп’ютерного накопичувача — це спосіб організації та зберігання файлів на вінчестерах, флешках або навіть у хмарі. І, якщо диск — це масив кластерів, то файлова система — це інструкція щодо заповнення цих кластерів інформацією.
Наприклад, записуючи фотографію на звичайний вінчестер, комп’ютер розбиває файл на частини. Кожному шматочку файлу відповідає комірка на поверхні магнітної пластини диска. При цьому, якщо будь-яка програма звернеться до потрібного файлу, то ні вона, ні диск не знатимуть, що це за файл, де він розташований, як він називається, скільки важить і які комірки займає в накопичувачі. Єдине, що відомо програмі — це ім’я файлу, його розмір та інші атрибути, які вона передає файловій системі як умовний знак для пошуку цього файлу в комірках.
Щоб зрозуміти, хто за що відповідає і ким є, розглянемо структуру на книжках і бібліотеках. Так, у ланцюжку «користувач-файл» є кілька дійових осіб, без яких робота системи неможлива:
- Накопичувач — це бібліотека (як будівля або організація).
- Користувач — це читач, який прийшов до бібліотеки за твором Жюля Верна.
- Файл — це книга зі зрозумілою назвою (атрибутом) або іншим умовним розпізнавальним знаком, наприклад, згаданий вище «Таємничий острів».
- Драйвер файлової системи — це бібліотекар, який виступає в ролі посередника або провідника між читачем і книгою. Або між користувачем (комп’ютером, операційною системою) і файлом (осередками з інформацією в мікросхемах пам’яті чи на магнітних пластинах).
- Файлова система — порядок, відповідно до якого в бібліотеці розставлені книжки, а також каталог, за допомогою якого фахівець знаходить книжки. Системи бувають різні: книжки можна розставити за зростом, кольором обкладинки, жанром, роком випуску або назвою в алфавітному порядку. На диску файлова система відповідає за організацію файлів.
Дискова система — це теж бібліотека. Замість великих приміщень тут використовуються компактні корпуси накопичувачів, а як полиці з книжками виступають мікросхеми пам’яті в твердотільних накопичувачах або магнітні пластини класичних вінчестерів. Система каталогізації бібліотеки — це файлова система комп’ютера. Як і способи сортування книжок у бібліотеці, комп’ютерні файлові системи поділяються на кілька типів. Найпоширеніші серед комп’ютерів на ОС Windows — це NTFS і FAT32.
NTFS — New Technology File System
Ми розібралися, що таке файлова система і для чого вона потрібна комп’ютерним дискам. Ґрунтуючись на отриманих прикладах, можна легко розібратися в тому, як працюють різні файлові системи, і чим вони відрізняються. Наприклад, NTFS.
NTFS — фірмова файлова система Microsoft, яку розробники почали впроваджувати в операційну систему Windows, починаючи з версії NT 3.1. Незважаючи на байки про ненадійність і низьку відмовостійкість цієї системи, NTFS вважається найкращим і найвдалішим рішенням для роботи актуальних операційних систем Windows. Звичайно, як і будь-яка інша система, NTFS не позбавлена недоліків — це надто складний пристрій ФС, особливо за сучасними мірками. Адже відомо — що складніший пристрій, то більше в ньому вразливостей.
Структура і фрагментація
Файлова система NTFS ділить простір накопичувача на кластери — блоки, розміром від 512 байт до 64 КБ. За замовчуванням Windows ділить блоки по 4 КБ кожен.
Спосіб організації файлового простору на диску з NTFS передбачає наявність спеціального розділу, в якому ФС зберігає сервісні дані про свою роботу. А саме, веде якийсь каталог, в якому записуються різні дані про файли і розділи. Це розділ MFT (Master File Table) — вільний простір з метафайлом, під який система виділяє 12% від загального обсягу.
MFT є динамічним розділом — у міру накопичення інформації на диску, він може скорочуватися, щоб звільнити місце під користувацькі файли. Однак за першого ж вільного гігабайта на диску, розділ MFT знову забере своє «законне» місце, водночас нова частина метафайла може фрагментуватися й опинитися вже не на початку диска, а наприкінці або в середині. Звідси існує поширена проблема фрагментації файлової системи, коли частини каталогів розкидані по всьому диску. Тоді, щоб знайти якийсь файл, диск судорожно шукає їх по всій поверхні, звідси зниження швидкості доступу і загальної продуктивності комп’ютера. Фрагментація — не найсильніший бік NTFS.
Файли та каталоги
Організація даних у цій ФС має структуру бінарного дерева: кожен елемент у системі обробляється не ієрархічно, а через бінарні запити. Наприклад, щоб знайти файл з ім’ям «К» серед тисячі інших файлів, система ділить каталог на дві частини і починає пошук із середини. Наприклад, дізнається, у якій частині необхідно шукати цей файл, якщо за середину каталогу прийнято файл із назвою «Т»? У такому разі система відповість — шукайте серед тих файлів, які йдуть до файлу з ім’ям «Т». Тобто, маючи відсортований за алфавітом каталог, система розуміє, що файл з потрібним ім’ям знаходиться в одній з двох частин, і час на пошук файлу скорочується вдвічі — це покращує швидкість роботи з дрібними поодинокими файлами.
Усі файли в цій системі існують у вигляді потоків. Фактично, для того, щоб перетворити блоки з даними на єдиний файл, цій ФС потрібен тільки файл із метаданими. Це свого роду інструкція зі збирання файлів зі шматочків даних, які зберігаються в комірках по всій поверхні накопичувача. Завдяки гнучкій файловій структурі, об’єкти NTFS можуть набувати безліч додаткових властивостей. Наприклад, містити в назві до 65535 різних символів Unicode. При цьому максимальна довжина імені файлу досягає 255 символів.
Журналювання
Сучасні операційні системи працюють на базі журнальованих файлових систем. Це необхідно для того, щоб у разі системного збою та аварійного завершення роботи (вийняли вилку живлення ПК з розетки) файлова система комп’ютера змогла відновитися до останнього робочого стану без втрати файлів.
У файловій системі, що журналірується, робота з даними відбувається за принципом транзакцій — дія відбувається повністю або не відбувається зовсім. Наприклад, під час запису системного файлу на диск, комп’ютер робить позначки в метафайлі в розділі MTF і веде міні-журнал процесу копіювання доти, доки файл повністю не запишеться в необхідний розділ диска. Якщо пристрій перезавантажиться під час запису, то під час наступного увімкнення система звернеться до журналу, дізнається про досконалі й недосконалі транзакції та залишить існувати тільки ті, що позначені як завершені. Решту транзакцій буде викреслено, а файли видалено або повернуто на місце.
Як правило, така система працює найефективніше лише із системними файлами, тоді як користувацькі дані можуть пошкодитися або зникнути під час збою. Роботу журналювання можна перевірити за допомогою контрольних точок відновлення — комп’ютер періодично створює зліпки стану системи, за якими пізніше може відновитися до цих станів.
Шифрування
Для захисту даних на комп’ютері використовується шифрування. Це не просто захист комп’ютера паролем, а також роздавання прав для доступу до файлів, що доволі легко розкрити, зламати і просто обійти за допомогою загальнодоступних інструкцій і софту.
Шифрування — це окрема надбудова над файловою системою комп’ютера, яка дає змогу закрити користувацькі дані від сторонніх очей практично на апаратному рівні. У такому разі захищені файли не можна буде переглянути на іншому комп’ютері, а також після зміни материнської плати або операційної системи. Це можна зробити за допомогою NTFS — система створює ключі та сертифікати, актуальні тільки для тієї збірки і системи, на якій було підключено це шифрування.
Файлова система NTFS також відрізняється:
- Підтримкою великих томів і файлів — до 8 ПБ;
- Кількома рівнями безпеки, зокрема, підтримкою шифрування;
- Розподілом прав доступу до файлів;
- Можливістю стиснення;
- Підтримкою до 4 294 967 295 (232-1) файлів.
Висновок: система NTFS «заточена» під роботу з операційною системою, а також для накопичувачів з великим об’ємом і кількома розділами.
FAT32 — File Allocation Table
Оновлена файлова система прийшла на зміну застарілій FAT16. Її також розробили фахівці Microsoft, але, на відміну від NTFS, вона поширюється у вигляді відкритого вихідного коду. Тому розробники будь-якого софту можуть безперешкодно компілювати і впроваджувати драйвер у своє ПЗ. Наприклад, підтримка FAT32 є не тільки в «рідній» операційній системі, а й у будь-якій іншій — linux, MacOS, Android, навіть у таких пропрієтарних системах, як iOS.
У ранніх версіях ОС Windows файлова система FAT32 навіть використовувалася як основна ФС для системного розділу. Але пізніше розробники відмовилися від цього рішення на користь нової і прогресивної NTFS. Втім, незважаючи на деякі особливості FAT32, ця ФС все ще повсюдно використовується у флешках і картах пам’яті.
Простіше нікуди
Файлова система FAT32 — це автомат Калашникова. Вона максимально спрощена: тут немає просунутих систем безпеки і шифрування, система не вміє журналювати свою роботу. Це частково позначається на продуктивності — у деяких випадках швидкість читання або запису може бути вищою, ніж у новішої і складнішої NTFS. Щоправда, це сильно залежить від умов роботи — наприклад, від кількості оброблюваних файлів. Так, робота з масивами дрібних файлів може стати справжнім випробуванням для накопичувача, відформатованого в цій файловій системі.
Утім, такі завдання рідко виконують на тих накопичувачах, які використовують FAT32. Зазвичай це зовнішні пристрої з невеликим об’ємом. Ба більше, файлова система не вміє працювати з об’ємними розділами. Наприклад, штатні засоби ОС Windows не дозволяють створювати на диску з FAT32 розділи, об’єм яких перевищує 32 ГБ. До цих недоліків належать і обмеження щодо максимального розміру файлу. Максимальний розмір файлу, який запам’ятовує накопичувач, становить 4 ГБ.
Усе це, звичайно ж, впливає на популярність файлової системи та її зручність. Особливо помітними недоліки застарілої системи стали після того, як майже в кожного користувача в арсеналі з’явилися флешки з об’ємом від 64 ГБ — FAT32 такому пристрою не личить.
Структура
Ще більше фарб у старіння вносить стародавня структура: файли у FAT32 зберігаються ієрархічно, а не у вигляді бінарного дерева, де кожен окремий об’єкт може бути доступний незалежно від інших. Якби таку систему використовували у звичайній бібліотеці, то пошук однієї книжки міг би розтягнутися на кілька годин: щоб знайти книжку з літерою «Ц» у назві, бібліотекарю доведеться дістати всі книжки з поличок по черзі, починаючи з примірників на «А», і тільки після цього взяти потрібну. Цікаво уявити, як би працювала в такому режимі Наукова бібліотека МДУ, де на фізичних і віртуальних полицях зберігається понад 10 мільйонів примірників.
Незважаючи на перераховані особливості, FAT32 все ще непогано справляється зі своїми завданнями. Наприклад, відсутність журналювання йде на користь накопичувачам, які швидко зношуються від частих перезаписів комірок. До того ж, робота з об’ємними файлами і розділами на звичайній флешці мало кого цікавить. Як правило, вони «переносять» легковагі офісні файли, фотографії, короткі відеоматеріали та інсталяційні файли програм. Навряд чи хтось спробує завантажувати образ фільму у форматі Blu-ray на флешку: для цього більше підійде зовнішній жорсткий диск або твердотільний накопичувач з великим об’ємом.
Висновок: поява флешок з великим об’ємом внесла корективи в існування FAT32. Однак на ринку все ще переважають пристрої з об’ємом не більше 32 ГБ — цей формат FAT32 ще тягне.
Практичність понад усе
Велика і складна NTFS була розроблена ще в 1990-х роках. Незважаючи на це, файлова система здорова досі і спокійно перетравлює всі сучасні ОС від Microsoft. Звісно, фірмова технологія з Редмонда не панацея: якщо відмовитися від «вікон» на комп’ютері, то і NTFS одразу стане непотрібною. Щоправда, для цього доведеться змиритися з Linux на борту або ж переїхати на платформу Apple — там, між іншим, використовується зовсім нова APFS, яку яблучні розробники представили всього кілька років тому.
Що стосується неоднозначної ситуації з FAT32, то, найімовірніше, файлова система вже перебуває на заході популярності. Фахівці намагаються замінити неактуальну файлову систему більш зручними та гнучкими EXT. Ці системи мають відкритий вихідний код і використовуються в Unix подібних ОС. Драйвери для цих файлових систем легко портуються під будь-які операційні системи, тому такий накопичувач підтримується навіть в актуальній Windows 10, достатньо встановити поширений пакет драйверів.
Висновок: якщо вибирати файлову систему, то краще орієнтуватися на практичність. Для серйозних завдань і під системні потреби обов’язково виділяти накопичувач з NTFS на борту. Водночас, для флешки з маленьким об’ємом буде достатньо і FAT32 — ця ФС широко підтримується всіма можливими пристроями. Якщо ж користувач ставить підвищені вимоги до системи зберігання та обробки файлів — ласкаво просимо у світ ZFS.
Це ціла система всередині системи, де організація файлів у дисковому просторі відбувається за іншими законами. Наприклад, під час запису інформації, ZFS пише нові дані в нові блоки, а старі залишає «жити» до того моменту, поки не підтвердить, що свіжі дані записано і готові до роботи. Це необхідно для платформ з ухилом у відмовостійкість, хоча навряд чи стане в нагоді домашньому користувачеві. Щоб файлова система працювала як треба, необхідно мати подвійний запас вільного місця на диску: для старих даних і наступного потоку нових даних. Тому ZFS частіше використовують у системах зберігання даних з великим обсягом. Але це вже зовсім інша історія.