Основи файлових систем

Комп'ютерний ринок пропонує величезне розмаїття засобів для зберігання інформації у цифровій формі. Відповідно до власних потреб, можна обирати між такими пристроями для зберігання даних, як внутрішні та зовнішні жорсткі диски, диски SSD, карти пам'яті, флеш-накопичувачі USB, RAID-масиви та інші види складних сховищ. Однак, незалежно від індивідуальних особливостей, усі вони просто зберігають багато бітів даних і не мають жодного внутрішнього механізму для визначення місця розташування кожного окремого біта в конкретний момент часу. Тобто потрібна певна логіка, щоб організувати ці окремі фрагменти у значущі файли, як-от документи, зображення, бази даних тощо, і легко дістати їх за потреби. У цій статті надається загальний огляд основних засобів керування даними у будь-якому сховищі, що у своїй сукупності відомі як файлова система, і пояснюється, чому існують різні типи файлових систем.


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

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

Почнемо з того, що будь-який комп'ютерний файл зберігається на носії даних (наприклад, жорсткому диску, SSD, флеш-накопичувачі тощо), який має певну ємність. Цей носій можна розглядати як лінійний простір, доступний для читання або як для читання, так і для запису цифрової інформації. Кожен байт даних на ньому має своє зміщення (offset) від початку сховища, відоме як адреса, яка використовується для посилання на нього. У цьому відношенні сховище можна розглядати як сітку з набором пронумерованих комірок (кожна комірка — це один байт). І будь-який об'єкт, що зберігається до сховища, отримує власні комірки.

Комп'ютерні сховища зазвичай використовують пару сектор та зміщення у секторі для посилання на будь-який байт інформації, який вони містять. Сектор — це група байтів (зазвичай 512 байт), яка є мінімальною адресною одиницею фізичного сховища. Наприклад, байт 1040 на жорсткому диску буде вказаний як сектор #3 та зміщення у секторі 16 байтів ([сектор]+[сектор]+[16 байтів]). Ця схема застосовується для оптимізації адресації та використання меншого числа для звернення до будь-якої частини інформації, розміщеної у сховищі.

Щоб опустити другу частину адреси (зміщення у секторі), файли зазвичай зберігаються, починаючи з початку сектора та займають цілі сектори (наприклад: 10-байтовий файл займає весь сектор, 512-байтовий файл також займає весь сектор, тоді як 514-байтовий файл займає два повних сектори).

Кожен файл зберігається у "невикористаних" секторах і потім його можна прочитати, якщо відома його позиція та розмір. Але як ОС дізнається, які сектори зайняті, а які вільні? Де зберігаються розмір, позиція та ім'я файлу? Саме за це відповідає файлова система.

В цілому файлова система є структурованим представленням даних з набором метаданих, які описують ці дані. Вона застосовується до сховища під час його форматування. Ця структура служить для всього сховища, а також є частиною його ізольованого сегмента – розділу диска. Зазвичай вона оперує блоками, а не секторами. Блоки ФС — це групи секторів, за допомогою яких оптимізується адресація сховища. Сучасні файлові системи здебільшого використовують блоки розміром від 1 до 128 секторів (512-65536 байт). Файли, як правило, зберігаються на початку блоку та займають цілі блоки.

Крім виконання вищезазначених функцій, ФС також відповідає за:

  • Виділення блоків для нових файлів;

  • Присвоєння імен та інших важливих властивостей файлам;

  • Групування файлів у каталоги;

  • Читання існуючих файлів та внесення записів у них;

  • Виконання видалення файлів.

Постійні операції запису/видалення даних у сховищі можуть спричинити його фрагментацію. Тобто файли не зберігаються цілими одиницями, а розбиваються на фрагменти. Наприклад, том повністю зайнятий файлами розміром близько 4 блоків кожен (наприклад, колекція фотографій). Користувач хоче зберегти у ньому новий, який займе 8 блоків, і тому видаляє перший і останній файли. Цим він звільняє простір у 8 блоків, але при цьому перший сегмент розташований біля початку сховища, а другий – біля його кінця. У цьому випадку файл з 8 блоків розбивається на дві частини (по 4 блоки кожна), які займають вільні «прогалини». Інформація про обидва фрагменти як частини одного файлу зберігається у файловій системі.

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

Однак не всі файлові системи однакові. Вони можуть істотно відрізнятися за своїми стратегіями організації даних, а також за такими характеристиками, як продуктивність, стабільність та надійність. Деякі з них також можуть підходити лише для окремих випадків застосування.

Чому існують різні типи файлових систем?

Під час форматування носія даних користувачеві часто пропонують кілька варіантів файлової системи на вибір, які називаються типами або форматами. Кількість варіантів може здаватися занадто великою і, природно, викликає питання, чому б не створити єдину файлову систему на всі випадки. Запровадження такого уніфікованого формату, ймовірно, багато в чому полегшило б життя, але, на жаль, у нинішніх умовах неможливе.

По-перше, не існує ФС, яка б однаково добре задовільняла всі види потреб. Кожна з них має свої переваги та недоліки, які слід враховувати, обираючи формат для носія даних в тих чи інших обставинах. Деякі з них підходять для загального використання, тоді як інші служать для конкретних цілей або призначені для певного типу пристроїв. Крім того, технології поступово розвиваються, і нові файлові системи стають швидшими, стійкішими, краще масштабуються до більших пристроїв зберігання даних і отримують більш просунуті функції, ніж їхні попередниці.

По-друге, файлова система тісно пов'язана з операційною системою, і остання відіграє велику роль у виборі відповідного формату. Як правило, кожна операційна система підтримує свій набір файлових систем, над чим власне і працюють розробники цієї ОС. Як наслідок, середовища з відкритим вихідним кодом пропонують велику кількість файлових систем, а пропрієтарні – лише кілька варіантів на вибір. Щоб дізнатися більше про найпоширеніші "рідні" формати сучасних операційних систем, зверніться до відповідної статті:

Ще є особлива категорія файлових систем, які використовуються в розподілених середовищах як-от мережі зберігання даних:

Останнє оновлення: 26 квітня 2023