- Що таке файлова система?
- Основні функції файлової системи
- структура каталогів
- Типи файлових систем
- Монтування файлових систем
- висновки
Наша команда-партнер Artmisto
У цій статті ми поговоримо про файлову систему Linux. Але тут ви не знайдете опису тонкощів роботи з певної файлової системою, наприклад, ext4, а також не знайдете команд для роботи з будь-якої ФС. Ми зупинимося на більш загальних поняттях і спробуємо розібратися що таке файлова система, і як вона працює в цілому.
Кожен комп'ютер зберігає дані і результати на жорсткому диску, твердотільному накопичувачі SSD або будь-якому іншому носії інформації, це неминуче. Для цього є кілька причин. По-перше, вміст RAM очищається при кожному перезавантаженні комп'ютера. Звичайно, є швидкі енергонезалежні пристрої зберігання, такі як флеш пам'ять, але вони коштують набагато дорожче, ніж стандартні модулі DDR3.
Друга причина зберігати дані на диску, це те, що оперативна пам'ять набагато дорожче ніж повільніші, але місткі жорсткі диски. Фактично 16 Гб оперативної пам'яті буде коштувати стільки ж, скільки жорсткий диск на 2 Тб. Таким чином, ми бачимо, що оперативна пам'ять в 71 рази дорожче ніж HDD.
Зміст статті:
Що таке файлова система?
Люди можуть мати на увазі під файлової системою зовсім різні поняття. Саме словосполучення може мати кілька значень і вам доведеться розуміти про що йде мова з контексту документа.
Давайте розглянемо найбільш часто використовувані значення слів файлова система. Ми не будемо зупинятися на офіційному трактуванню, а спробуємо звернути увагу на сферу застосування:
- Все структура каталогів Linux, починаючи з кореня (/);
- Конкретний формат розділу зберігання даних, наприклад, Ext3, Ext4, Btrfs, XFS і так далі. Ядро Linux підтримує більше 100 типів файлових систем, в тому числі дуже старих і нових. Кожен тип файлової системи використовує свої структури метаданих щоб організувати роботу з даними на диску;
- Розділ або логічний тому, відформатований в певний тип файлової системи, який можна примонтировать до певної точки монтування.
Далі розглянемо як виконана організація файлової системи Linux і її основні функції.
Основні функції файлової системи
Необхідність використання дискових сховищ приносить деякі особливості роботи файлових систем. Основна функція файлової системи - надання організованого простору для зберігання файлів на енергонезалежному пристрої зберігання даних. Але є кілька додаткових функцій, які випливають з основної.
Всі файлові системи повинні забезпечувати простір імен. Воно визначає як будуть називатися файли, обмеження на довжину імені, використовувані символи, а також логічну структуру даних на диску, наприклад, використання каталогів для організації файлів, а не просто складання їх в одному місці.
Коли простір імен визначено, необхідно створити для нього основу за допомогою метаданих файлової системи. Вона включає в себе структури даних для створення ієрархії каталогів, структури для зберігання зайнятих і вільних блоків на диску, структури з іменами файлів і каталогів, інформацією про файлах, такий як розмір, час створення, розташування файлу на диску і так далі. У самих блоках файлу на диску зберігається тільки його вміст, вся ж інша інформація знаходиться в метаданих.
Також метадані використовуються для опису логічних томів і підрозділів, якщо такі підтримуються, і ще одні містять інформацію, що описує файлову систему.
Для доступу до файлів також необхідний набір функцій API, за допомогою яких програми могли б управляти різними об'єктами файлової системи. Зазвичай повинні існувати методи для створення, переміщення і видалення файлів.
Сучасні файлові системи також забезпечують модель безпеки, яка вдає із себе схему прав доступу до файлів для користувачів. Модель безпеки ФС в Linux гарантує що користувачі матимуть доступ лише до своїх файлів.
Далі, нам потрібно програмне забезпечення, яке буде виконувати всі ці функції. Організація файлової системи linux складається з двох частин:
Перша частина - це віртуальна файлова система. Вона являє собою єдиний набір команд ядра, за допомогою якого розробники можуть отримати доступ до будь-якої з файлових систем. Віртуальної файлової системи необхідний драйвер для роботи з різними типами ФС. Драйвера файлової системи - це друга частина реалізації, в них реалізований стандартний набір команд, що виконують специфічні для файлової системи дії.
структура каталогів
Набагато простіше знайти файли, якщо вони зберігаються невеликими групами, кожен на своєму місці, а не все в одній купі. Структуру файлової системи Linux можна представити у вигляді простої ієрархії. Всі каталоги знаходяться в кореневому каталозі (/) тому кожен адреса файлу починається з нього. Наприклад, / var / log / dmesg, / usr / share /, / bin.
Коренева файлова система Linux - це ФС верхнього рівня, вона повинна містити всі файли, необхідні для завантаження Linux ще до того як інші файлові системи будуть змонтовані. Тут вже повинні бути всі виконувані файли і бібліотеки, потрібні для підключення інших ФС. Під час завантаження інші файлові системи монтуються в чітко визначені для них каталоги. Більш детально призначення кожного каталогу Linux ми розглядали в статті структура файлової системи Linux .
Каталоги / bin, / dev, / etc, / lib, / root, / sbin не можуть бути примонтировать і повинні бути доступні ще до завантаження, так як в них знаходяться всі необхідні файли. Що стосується каталогів / media та / mnt, то вони повинні бути порожніми, оскільки це точки монтування для інших файлових систем. Решта каталоги можна сміливо монтувати пізніше, вони ніяк не вплинуть на запуск.
У декого не Unix операційних системах розділах присвоюються окремі літери, наприклад, C: або D :. У них кожен розділ буде мати окрему файлову систему. Щоб знайти потрібний файл на диску C: вам необхідно спочатку виконати команду C :, а потім шукати шлях до файлу.
У Linux все фізичні диски і розділи, обгризені в одну файлову структуру. Вона починається з кореня (/) в якому розташовані всі інші каталоги. Це працює тому що файлові системи / var, / home, / boot, / tmp і т д можуть перебувати на інших фізичних дисках. Навіть знімні диски підключаються в основну файлову систему.
І це дуже добре, тому що при оновленні версії дистрибутива можна зберегти абсолютно всі файли і настройки в домашньому каталозі. Іноді корисно переформатувати кореневий розділ щоб прибрати звідти все сміття, якщо / home знаходиться на окремому розділі, то ви нічого не втратите. Є й інші причини так поступати, наприклад, захист кореневої ФС від переповнення, що призвело б до непрацездатності системи.
Типи файлових систем
Як вже було сказано, Linux підтримує більше 10 різних файлових систем, але створювати і виконувати запис, можливо, тільки в деякі з них. Зате можна підключити їх все до кореневої файлової системи. Під типом ми маємо на увазі сукупність структур і метаданих, необхідних для зберігання файлів.
Linux може монтувати і читати такі файлові системи:
Основна причина чому вони підтримуються - це спроба організувати максимальну сумісність з іншими операційними системами. А ось основні файлові системи linux, які можна створювати:
- btrfs;
- cramfs;
- ext2;
- ext3;
- ext4;
- fat;
- gfs2;
- hfsplus;
- minix;
- msdos;
- ntfs;
- reiserfs;
- vfat;
- xfs.
Ми більш детально розглядали особливості деяких з них в статті типи файлових систем Linux .
Монтування файлових систем
Термін змонтувати з'явився ще на самому початку розвитку Linux, тоді було необхідно вставити касету або знімний диск в спеціальний привід. Тільки після цього можна було отримати доступ до файлової системи пристрою.
Точка монтування - це звичайний каталог, як будь-яка інша частина файлової системи. Наприклад, домашня папка змонтована в каталог / home. І так далі.
Коренева файлова система ос Linux / підключається на ранньому етапі завантаження. Інші файлові системи монтуються системою ініціалізації, наприклад, SysVinit або Systemd. Точки монтування налаштовуються за допомогою файлу / etc / fstab. Також можна виконувати ручне монтування в Linux за допомогою команди mount. Каталог для монтування необов'язково повинен бути порожнім, він може містити файли, але тоді вони будуть просто приховані.
висновки
Ця стаття була орієнтована на новачків і я сподіваюся, що деякі питання, стосовно терміну файлова система linux були зняті. Тепер ви можете оцінити елегантність, складність і функціональність файлової системи Linux. Якщо у вас є питання, питайте в коментарях!
джерело: opensource.com
Що таке файлова система?