Поняття файлової системи. Збереження даних

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

Файлова система пов’язує носій інформації з одного боку і API для доступу до файлів – з іншого. Коли прикладна програма звертається до файлу, вона не має жодного уявлення про те, яким чином розташована інформація в конкретному файлі, так само, як і те, на якому фізичному типі носія (CD, жорсткому диску, магнітній стрічці, блоці флеш-пам’яті або іншому) він записаний. Все, що знає програма – це ім’я файлу, його розмір і атрибути. Ці дані вона отримує від драйвера файлової системи. Саме файлова система встановлює, де і як буде записаний файл на фізичному носії (наприклад, жорсткому диску).

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


Схема розміщення кластерів на носії інформації

Кластер – логічна одиниця зберігання даних в таблиці розміщення файлів, що об’єднує групу секторів. Як правило, це найменше місце на диску, яке може бути виділено для зберігання файлу.

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

Для визначення об’єму записаних даних використовують такі одиниці виміру як біт, байт та похідні від них.

Біт (binary digit) (один двійковий розряд в двійковій системі числення) – найменша одиниця виміру інформації.

Особливу назву має 4 біта – ніббл, які вміщують в себе кількість інформації, що міститься в одній шістнадцятковій цифрі.

Наступною одиницею інформації є 8 біт, або байт. Саме до байтах (а не до бітах) показуються великі обсяги інформації, які обчислюються в комп’ютерних технологіях.

Вимірювання в байтах
Приставка СІ
Приставка МЕК
Назва
Символ
Степінь
Назва
Символ
Степінь
байт
B
100
байт
B
20
кілобайт
KB
103
кібібайт
KiB
210
мегабайт
MB
106
мебібайт
MiB
220
гігабайт
GB
109
гібібайт
GiB
230
терабайт
TB
1012
тебібайт
TiB
24

1 KB = 1000 B

1 KiB = 1024 B

Файл –  це впорядкована сукупність даних, що зберігається на диску і займає іменовану область зовнішньої пам’яті.

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

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

В деяких файлових системах, таких як NTFS, передбачені атрибути (зазвичай це бінарні значення «так»/«ні», які кодуються одним бітом). Практично атрибути не впливають на можливість доступу до файлів, для цього в деяких файлових системах існують права доступу.


Атрибути файлу в Windows XP (NTFS)

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

  • «Звичайний файл» – файл, що дозволяє операції читання, записи, переміщення всередині файлу.
  • Каталог або директорія – файл, що містить записи про файли, що до нього входять. Каталоги можуть містити записи про інші каталоги, утворюючи деревоподібну структуру.
  • Жорстке посилання – в загальному випадку, одна і та ж область інформації може мати кілька імен. Такі імена називають жорсткими посиланнями (хардлінками). Після створення хардлінка сказати де «справжній» файл, а де хардлінк неможливо, тому що імена рівноправні. Сама область даних існує до тих пір, поки існує хоча б одне з імен. Хардлінки можливі тільки на одному фізичному носії.
  • Символьне посилання – файл, що містить в собі посилання на інший файл або директорію. Може посилатися на будь-який елемент файлової системи, у тому числі, і розташований на іншому фізичному носії.

Практично завжди файли на дисках об’єднуються в каталоги.

У найпростішому випадку всі файли на даному диску зберігаються в одному каталозі. Така однорівнева схема використовувалася в першій версії MS-DOS 1.0. Ієрархічна файлова система із вкладеними один в одного каталогами вперше з’явилася в Multics, потім в UNIX.

Каталоги на різних дисках можуть утворювати кілька окремих дерев, як в DOS/Windows, або ж об’єднуватися в одне дерево, спільне для всіх дисків, як в UNIX-подібних системах.


Структура каталогів Windows XP та Mac OS X

У UNIX існує тільки один кореневий каталог, а всі інші файли та каталоги вкладені в нього. Щоб отримати доступ до файлів і каталогів на якомусь диску, необхідно змонтувати цей диск командою mount. У більшості UNIX-подібних систем знімні диски (дискети і CD), флеш-накопичувачі і інші зовнішні пристрої зберігання даних монтують в каталог /mnt, /mount або /media. Unix і UNIX-подібні операційні системи також дозволяють автоматично монтувати диски при завантаженні операційної системи.

Слід звернути увагу на використання слешів у файлових системах Windows, UNIX і UNIX-подібних операційних системах (У Windows використовується зворотний слеш «\», а в UNIX і UNIX-подібних операційних системах простий слеш «/»).

Ще більш складна структура застосовується в NTFS і HFS. У цих файлових системах кожен файл являє собою набір атрибутів. Атрибутами вважаються не тільки традиційні тільки для читання, системний, а й ім’я файлу, розмір і навіть вміст. Таким чином, для NTFS і HFS те, що зберігається у файлі, – це всього лиш один з його атрибутів.

Якщо слідувати цій логіці, один файл може містити кілька варіантів вмісту. Таким чином, в одному файлі можна зберігати декілька версій одного документа, а також додаткові дані (значок файлу, пов’язаного з файлом програми). Така організація типова для HFS на Macintosh.


Вміст виконуваного файлу Calculator.app (Mac OS X Lion)

За призначенням файлові системи можна класифікувати на нижче наведені категорії:

  • Для носіїв з довільним доступом (наприклад, жорсткий диск): FAT, NTFS, HPFS, ext2, ext3, HFS, HFS+, XFS.
  • Для носіїв з послідовним доступом (наприклад, магнітні стрічки): QIC.
  • Для оптичних носіїв – CD і DVD: ISO9660, HFS, UDF.
  • Віртуальні файлові системи: AEFS.
  • Мережеві файлові системи: NFS, CIFS, SSHFS, GmailFS та ін.
  • Для флеш-пам’яті: YAFFS, ExtremeFFS, exFAT.

Основні функції будь-якої файлової системи націлені на вирішення наступних завдань:

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

У багатокористувацьких системах з’являється ще одне завдання: захист файлів одного користувача від несанкціонованого доступу іншого користувача, а також забезпечення спільної роботи з файлами, наприклад, при відкритті файлу одним з користувачів, для інших цей же файл тимчасово буде доступний в режимі "тільки читання".

Файлові системи

FAT (File Allocation Table – «таблиця розміщення файлів») – класична архітектура файлової системи, яка через свою простоту все ще широко використовується для флеш-дисків і карт пам’яті.

Існує три версії FAT – FAT12, FAT16 і FAT32. Вони відрізняються розрядністю записів в дискову структуру, тобто кількістю біт, відведених для зберігання номера кластера. FAT12 застосовується в основному для дискет, FAT16 – для дисків малого обсягу. На основі FAT була розроблена нова файлова система exFAT (extended FAT), яка використовується переважно для флеш-накопичувачів.

У файловій системі FAT суміжні сектори диска об’єднуються в одиниці, які називаються кластерами. Кількість секторів в кластері може дорівнювати 1 або ступеню двійки. Для зберігання даних файлу відводиться ціле число кластерів (мінімум один), так що, наприклад, якщо розмір файлу складає 40 байт, а розмір кластера 4 кбайт, реально зайнятий інформацією файлу буде лише 1% відведеного для нього місця. Для уникнення подібних ситуацій доцільно зменшувати розмір кластерів, а для скорочення обсягу адресної інформації та підвищення швидкості файлових операцій – навпаки.


Запис файлів на FAT16 та FAT32

Простір тому FAT32 логічно поділений на три суміжні області:

  • Зарезервована область. Містить службові структури, які належать завантажувальному запису розділу (Partition Boot Record – PBR, для відмінності від Master Boot Record – головного запису завантаження диску; також PBR часто некоректно називається завантажувальним сектором) і використовуються при ініціалізації тому;
  • Область таблиці FAT, що містить масив індексних покажчиків ("осередків"), що відповідають кластерам області даних. Зазвичай на диску представлено дві копії таблиці FAT в цілях надійності;
  • Область даних, де записано власне вміст файлів, а також так звані метадані – інформація щодо імен файлів і папок, їх атрибутів, часу створення і зміни, розмірів і розміщення на диску.

Головний завантажувальний запис (master boot record, MBR) – код і дані, необхідні для подальшого завантаження операційної системи і розташовані в перших фізичних секторах (найчастіше в найпершому) на жорсткому диску або іншому пристрої зберігання інформації.

MBR містить невеликий фрагмент виконуваного коду, таблицю розділів (partition table) і спеціальну сигнатуру.

Функція MBR – «перехід» в той розділ жорсткого диска, з якого слід виконувати «подальший код» (зазвичай – завантажувати ОС). На «стадії MBR» відбувається вибір розділу диска, завантаження коду ОС відбувається на більш пізніх етапах алгоритму.

GUID Partition Table (GPT) є стандартним форматом розміщення таблиць розділів на фізичному жорсткому диску. Він є частиною EFI – стандарту, запропонованого Intel на зміну віджилого BIOS. EFI використовує GPT там, де BIOS використовує MBR.

FAT32 – остання версія файлової системи FAT та поліпшення попередньої версії, відомої як FAT16. Вона була створена, щоб подолати обмеження на розмір тому в FAT16, дозволяючи при цьому використовувати старий код програм MS-DOS і зберігши формат. FAT32 використовує 32-розрядну адресацію кластерів.

Максимально можливе число кластерів в FAT32 рівне 268 435 445, що дозволяє використовувати томи (логічні диски) обсягом до 8 ТБ.

Максимально можливий розмір файлу для тому FAT32 ~ 4 ГБ – це дуже важливий фактор для зміни файлової системи. FAT32 не підтримує встановлення дозволів на доступ до файлів і папок і деякі інших функцій сучасних файлових систем. Всі ці причини призвели до того, що зараз спостерігається тенденція відмови від FAT32 на користь більш сучасних файлових систем, таких як NTFS, Ext2/Ext3. Найчастіше недовіра до NTFS виникає у користувачів через труднощі з призначенням прав доступу (оскільки найчастіше вони єдині власники файлів) і її закритості.

Перешкодою на шляху відмови від FAT32 і переходу на інші файлові системи на USB флеш-накопичувачах є продуктивність. Крім описаних обмежень у FAT32 є ряд переваг (принаймні над NTFS) як у швидкості запису на флеш-накопичувач, так і в швидкості читання/копіювання даних з нього.

Boot Camp компанії Apple підтримує запуск Windows XP з тому FAT32, але сама система Mac OS X не може запускатися з такого тому. Однак, сама Mac OS X за замовчуванням (без додаткових драйверів) визначає і підтримує як читання так і запис на FAT32 розділи.


Встановлення Windows XP за допомогою Boot Camp

exFAT (Extended FAT – «розширена FAT») – пропрієтарная файлова система, призначена головним чином для флеш-накопичувачів.

Основними перевагами exFAT перед попередніми версіями FAT є:

  • Зменшення кількості перезаписів одного і того ж сектора, що дуже важливо для флеш-накопичувачів, у яких комірки пам’яті необоротно зношуються після певної кількості операцій запису. Це була основна причина розробки ExFAT.
  • Теоретичний ліміт на розмір файлу (16 ексбібайт).
  • Максимальний розмір кластера збільшено до 225 байт (32 мебібайта).
  • Поліпшення розподілу вільного місця за рахунок введення біт-карти вільного місця, що може зменшувати фрагментацію диска.
  • Відсутність ліміту на кількість файлів в одній директорії.
  • Введена підтримка списку прав доступу.

NTFS (New Technology File System) – стандартна файлова система для сімейства операційних систем Microsoft Windows NT.

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

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

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

HFS (Hierarchical File System) – файлова система, розроблена Apple Computer для комп’ютерів зі встановленою операційною системою Mac OS.

HFS Plus або HFS + або Mac OS Extended – файлова система, розроблена Apple Inc. для заміни раніше використовується HFS, основний файлової системи на комп’ютерах Macintosh. Також з цієї файлової системою може працювати плеєр iPod. HFS + можна розглядати, як вдосконалену версію HFS для розширення можливостей Mac OS.

HFS + є покращеною версією HFS, з підтримкою файлів великого розміру (32-бітна адресація замість старої 16-бітної) і використовує кодування Unicode для імен файлів і папок. HFS + підтримує імена довжиною до 255 символів формату UTF-16 і багатопотокові файли подібно NTFS.

Third Extended File System (ext3 або ext3fs) – журнальована файлова система, яка використовується в операційних системах на ядрі Linux, є файловою системою за замовчуванням в багатьох дистрибутивах. Заснована на ФС ext2, початок розробки якої поклав Стівен Твіді. Файлова система ext3 може підтримувати файли розміром до 1 ТБ.

ISO 9660 – випущений Міжнародною організацією зі стандартизації стандарт, що описує файлову систему для дисків CD-ROM. Метою стандарту є забезпечити сумісність носіїв під різними операційними системами, такими як Unix, Mac OS, Windows.

Розширення стандарту, Joliet, додає підтримку довгих імен файлів і не-ASCII символів в іменах.

DVD також може використовувати ISO 9660, але файлова система UDF є більш придатною для них, так як має підтримку великих носіїв і краще підходить для сучасних операційних систем…

Віртуальна файлова система (VFS) – рівень абстракції поверх конкретної реалізації файлової системи. Метою VFS є забезпечення однакового доступу клієнтським додаткам до різних типів файлових систем. VFS може, наприклад, бути використана для відкритого доступу до локальних і мережевих пристроїв зберігання даних без використання спеціального клієнтського додатку. Вона може бути використана для усунення відмінностей між файловими системами Windows, Mac OS і Unix так, що додатки можуть отримати доступ до файлів на локальних файлових системах, не знаючи тип файлової системи, до якої вони отримують доступ. VFS визначає інтерфейс між ядром і конкретною файлової системою. Таким чином, можна легко додавати підтримку нових типів файлових систем для ядра.


Схема роботи файлової системи

Операції над файловою системою

Форматування диска – процес розмітки пристроїв зберігання або носіїв інформації: жорстких дисків, дискет, пристроїв зберігання на основі флеш-пам’яті, оптичних носіїв та ін. Існують різні способи цього процесу.

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

Форматування жорсткого диска включає в себе три етапи:

  1. Форматування диска на низькому рівні (низькорівневе форматування). При цьому процесі на жорсткому диску створюються фізичні структури: треки (доріжки), сектори, керуюча інформація. Цей процес виконується заводом-виробником на пластинах, які не містять ще ніякої інформації.
  2. Розбиття на розділи. Цей процес розбиває обсяг вінчестера на логічні диски (C, D, і т. д.). Цим зазвичай займається операційна система, і метод розбиття дуже залежить від операційної системи.
  3. Високорівневе форматування. Цей процес також контролюється операційною системою і залежить як від типу операційної системи, так і від утиліти, яка використовується для форматування. Процес записує логічні структури, відповідальні за правильне зберігання файлів, а також, у деяких випадках, системні завантажувальні файли в початок диску. Це форматування можна розділити на два види: швидке і повне. При швидкому форматуванні перезаписується лише таблиця файлової системи, при повному ж – спочатку здійснюється верифікація (перевірка) поверхні накопичувача, а вже потім проводиться запис таблиці файлової системи.


Програма для низькорівневого форматування Active KillDisk

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

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


Процес дефрагментації диска

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


Приклад фрагментації диска