Файлова система — Вікіпедія

Файлова система
Зображення
Підтримується Вікіпроєктом Вікіпедія:Проєкт:Комп'ютерні науки
CMNS: Файлова система у Вікісховищі

Фа́йлова систе́ма — спосіб організації даних, який використовується операційною системою для збереження інформації у вигляді файлів на носіях інформації. Також цим поняттям позначають сукупність файлів та директорій, які розміщуються на логічному або фізичному пристрої.

Процес створення файлової системи називається форматування.

Архітектура[ред. | ред. код]

Поняття файлової системи має декілька рівнів абстракції: логічна файлова система - високорівнева абстракція, яка описує можливості операційної системи для роботи з даними. Та описує API яке дозволяє відкривати, читати, писати та закривати файли. А реалізація цих методів відбувається на нижчих рівнях абстракції.

Віртуальна файлова система - це опціональний рівень який підтримує в операційній системі декілька фізичних файлових систем, та надає універсальні методи роботи з ними. Завдяки цьому рівню абстракції існують файлові системи над нефізичними пристроями, як наприклад віртуальні файлові системи (procfs, sysfs) та FUSE.

Фізична файлова система - це рівень який існує у вигляді даних на пристроях (дисках, розділах, тощо), Його реалізують драйвери, які працюють з даними, вони також реалізують, механізми що пришвидшують роботу (буферізація, структури для швидшого пошуку), збільшують надійність (журналювання), вибір блоків в яких потрібно помістити дані та інше. Переважно коли ми кажемо про різні файлові системи NTFS, APFS, ext4 - ми маємо на увазі цей рівень.

Класифікація[ред. | ред. код]

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

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

  • плоскі файлові системи — вони не використовують каталогів. це ранній етап файлових систем.
  • ієрархічні файлові системи — дозволяють розміщувати файли в каталоги

В залежності від локальності комп'ютера, якому надається доступ до файлів, можна поділити файлові системи на:

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

Файлові системи можна класифікувати за особливостями носія на :

Для забезпечення надійності та швидкості відновлення при збоях, в деяких файлових системах було впроваджено журналювання. Таким чином файлові системи можна класифікувати як:

Журнальовані файлові системи пишуть фіксують зміну стану інформації двічі: спершу в журналі дій файлової системи, потім до її належного місця у звичайній файловій системі. Але це допомагає в разі аварії. Система без журналювання система повинна перевірити свою узгодженість свого стану скануючи весь свій вміст такими програмами як scandisk, chkdsk або fsck. В залежності від розміру файлової системи на це можна витратити багато часу. З журналюванням до узгодженого стану можна дійти швидше, програючи перевіряючи зміни по журналу за останній час.

Метадані[ред. | ред. код]

Окрім самих даних в файлах, файлова система зберігає додаткову інформацію про файли. Така інформація називається метаданими.

Приклади метаданих:

  • ім'я файлу, або шлях до файлу в ієрархічних файлових системах.
  • розмір - це може бути об'єктивна характеристика, як кількість блоків, або кількість байтів. А також може бути заявлений розмір у випадку розріджених файлів[en].
  • часові відмітки, коли був створений файл, коли його востаннє модифікували, отримували до нього доступ, його в останнє архівували, або навіть видалили. В залежності від файлової системи гранулярність часової відмітки може бути різною. Від наносекунд, до секунд, або 2-секундних інтервалів, чи доба, а також діапазон можливих значень.
  • інформація про власника, групу власника, та права доступу.
  • квоти на використання дискового простору
  • атрибути які підтримує файлова система, наприклад чи є файл який можна виконувати, файл лише для читання, файл лише для дозапису (журнал), стисненим, зашифрованим, файл який необхідно архівувати.
  • атрибути SELinux контексту,
  • окрім звичайних файлів на файловій системі можуть бути присутні об'єкти які для неї схожі на файли, але поведінка інша, наприклад в unix - каталоги це спеціальний тип файлів, ще окремі типи файлів це символічні посилання, файли пристроїв, сокети,

Іменування файлів та каталоги[ред. | ред. код]

Докладніше: Назва файлу

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

Імена файлів мають обмеження:

  • обмеження імені файлу на довжину. В перших версіях FAT12, FAT16 використовувався фіксований розмір "8.3", який виділяв 8 байт на ім'я та 3 на розширення. Сучасні файлові системи дозволяють до 255 символів.
  • список символів які недозволені в іменах файлів.
  • чутливість до регістру

У Юнікс-подібних ОС у назві файлу може використовуватись будь-який символ, за винятком похилої риски, й вони чутливі до регістру.

Назви файлів у Microsoft Windows не є чутливими до регістру. Вимога унікальності та чутливість до регістру тут відіграє роль: якщо файлова система є чутлива до регістру - це наприклад файли File.txt FILE.TXT file.txt - це можуть бути різні файли, якщо система не чутлива до регістру - такі імена відповідають одному й тому файлу.


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

В такому випадку окрім імені файлу потрібно знати і імена каталогів до якого цей файл належить. Таким чином формується шлях до файлу - це перелік каталогів та ім'я файлу, які розділені символом-розділювачі каталогів. UNIX-подібні операційні системи (BSD, Linux, Mac OS X) та AmigaOS використовують як розділювач каталогів символ похилої риски (/), в той час як DOS використовує цей символ для завдавання додаткових опцій у командному рядку, а як розділювач прийнято вживати символ зворотної похилої риски (\). У Microsoft Windows прийнята та ж конвенція, за винятком китайської та корейської версій, де розділювачем є знак запитання (?). Версії MacOS до Х використовували як розділювач двокрапку; RISC OS — дефіс.

Розмір[ред. | ред. код]

Розмір файлу це характеристика файлу скільки блоків, або байтів він займає.

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

В 1980-х це була потреба обробляти дані об'ємами в сотні кілобайт, файлові системи використовували 8-16 битні структури, які обмежували розмір файлів від сотень кілобайт (256КБ для ADFS) або декількох мегабайт (8МБ для FAT12), до сотень мегабайт.

В 1990-х перехід від 16бітних до 32бітних систем, об'єми жорстких дисків виросли від десятків мегабайт до десятків гігабайт. Наприклад відомим обмеженням є розмір файлу в 2 або 4гб для файлових систем FAT32.

Файлові системи що були розроблені після 2000х, мають 64бітні структури та їх обмеження та поки що перевищують розміри пристроїв для яких вони були розроблені, наприклад: exFAT (128ПБ) , NTFS (256ТБ-8ПБ), ext4 (1 ексабайт), XFS (8 ексабайт)


Більшість дистрибутивів Лінукс підтримують більшість (або всі) перелічені ФС: ext2, ext3, ext4, Btrfs, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, NILFS, XFS, JFS, загалом як і FAT та NTFS.

Microsoft Windows підтримує лише FAT12, FAT16, FAT32, та NTFS. Серед них NTFS є найефективнішою та єдиною, на котру може бути встановлена Windows Vista. Windows Embedded CE 6.0 включає також підтримку ExFAT, призначеної/рекомендованої для роботи на портативних пристроях.

Mac OS X підтримує HFS+ як первинну ФС та кілька інших, як допоміжних.

Файлові системи малих носіїв даних[ред. | ред. код]

На додачу всі ці (та інші) ОС підтримують файлові системи змінних носіїв — FAT12 для дискет, ISO 9660 та UDF (Universal Disk Format) для компакт-дисків та DVD відповідно.

Windows Vista та Linux з ядром версії 2.6 підтримують розширення UDF, котрі дозволяють перезаписувати вміст DVD як у звичайних дискетах.

Організація простору[ред. | ред. код]

Приклади файлових систем[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]