Файлова система ОС Linux
Файлова система ОС Linux
Одним з найважливіших компонентів в ОС Linux є файлова система. У цьому розділі буде розглянуто поняття файлової системи та її призначення; ієрархія файлової системи ОС Linux; типи файлів ОС Linux. Інші питання, які стосуються адміністрування файлової системи, більш детально будуть розглянуті у модулі 3.
Призначення файлової системи
В ОС Linux, як і в будь-якій іншій ОС сімейства UNIX, будь-який об'єкт є файлом, що зберігається на файловій системі. Файлова система є деяким пристроєм (наприклад, жорстким диском), відформатованим для зберігання файлів. Файлові системи можуть знаходитись на жорстких дисках, гнучких дисках, CD-ROM або інших носіях, які дозволяють здійснювати довільний чи послідовний доступ до даних.
Умовно файлову систему Linux можна розділити на наступні компоненти.
Простір імен – методи іменування об'єктів файлової системи та їх ієрархічна організація.
Програмний інтерфейс програми (API) – набір системних дзвінків та бібліотек, призначених для управління об'єктами файлової системи.
Модель безпеки - містить у собі загальну схему захисту, поділу прав доступу до об'єктів та спільного використання об'єктів.
Технічна реалізація - програмний код, що пов'язує логічні моделі файлової системи з апаратним забезпеченням.
Основними завданнями файлової системи є:
упорядкування даних, що зберігаються;
простий і швидкий доступ до даних, що зберігаються;
забезпечення цілісності даних, що зберігаються.
Точний формат та способи зберігання файлів у ОС Linux не мають значення, оскільки система забезпечує загальнийінтерфейс для всіх типів файлових систем, що нею розпізнаються. У ОС Linux файловою системою, яка встановлюється за умовчанням, є ext3fs. При доступі до будь-якої файлової системи з ОС Linux дані подаються у вигляді ієрархії каталогів з файлами, що знаходяться в них, разом з ідентифікаторами власників і груп, бітами прав доступу та іншими атрибутами.
Ієрархія файлової системи
Ієрархія каталогів файлової системи ОС Linux відповідає загальноприйнятому у світі UNIX стандарту Filesystem Hierarchy System (FHS). Основна перевага цього стандарту полягає в тому, що певні типи файлів розташовані у відповідних каталогах.
Наприклад, більшість конфігураційних файлів розташовується в каталозі /etc, а файли журналів різних сервісів розміщуються в каталозі /var/log.
Опис каталогів файлової системи ОСLinux

Каталоги /bin, /usr/bin, /usr/locl/bin, /sbin, /usr/sbin та /usr/local/sbin містять встановлені в системі команди. При роботі в системі під звичайним користувачем вам будуть доступні тільки команди каталогів /bin, /usr/bin і /usr/locl/bin, тому що в стандарті FHS визначено, що в каталогах sbin повинні міститися тільки адміністративні команди.

Малюнок 1.2.Структура каталогів ОС Linux
Основним каталогом файлової системи ОС Linux є кореневий каталог /. Нижче кореневого каталогу розташовуються решта каталогів, створені на локальній дисковій підсистемі або підмонтовані із зовнішніх пристроїв. Процедура монтування файлової системи означає зв'язування каталогу існуючої файлової системи, який називається точкою монтування, з кореневим каталогом нової файлової системи.
Монтування файлової системи до точки монтування здійснюється задопомоги команди mount. У наступному лістингу наведено приклад монтування DVD-приводу, що містить дистрибутив ОС RedHatEnterpriseLinux 5.
]# mount /dev/hdc /mnt/
mount: block device /dev/hdc is write-protected, mounting read-only
В результаті виконання команди mount система вивела інформацію про те, що блоковий пристрій (в даному випадку DVD-привід) було змонтовано в режимі читання.
Список змонтованих файлових систем зберігається у файлі /etc/fstab. Завдяки цьому можлива автоматична перевірка цілісності файлової системи за допомогою команди fsck та монтування файлових систем на етапі початкового завантаження, а також виконання скорочених команд на кшталт mount/var/spool. Інформація, що міститься в цьому файлі, відображає розташування файлових систем на диску. Докладніше файл /etc/fstab буде розглянутий у модулі 3.
Розміщення файлових систем здійснюється командою umount. "Заблоковану" файлову систему розмонтувати неможливо. У ній не повинно бути ні відкритих файлів, ні поточних каталогів процесів, що виконуються. Якщо файлова система, що розмонтується, містить програми, що виконуються, вони не повинні бути запущені. У наступному лістингу наводиться приклад розмонтування раніше підмонтованої файлової системи каталогу /mnt.
]# umount /mnt [root@rhel5
]# Is -1 /mnt total 0
Щоб дізнатися які пристрої підмонтовані до системи в даний момент необхідно виконати команду mount без параметрів. У наступному лістингу наведено приклад визначення підмонтованих пристроїв.
]# mount /dev/sda2 on / type ext3 (rw)
proc on /ргос type proc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/hdc on /mnt type iso9660 (ro)
Як бачимо, у виведенні команди mountпослідовно відображається підмонтований пристрій, точка монтування, тип файлової системи та додаткові опції монтування.
Працюючи з ОС Linux важливо розуміти, що будь-який об'єкт ОС є файлом. Це ключова особливість ОС Linux, порівняно з операційними системами сімейства Windows.
Файли розрізняються як за своєю структурою, так і за призначенням. В ОС Linux визначено сім типів файлів:
регулярні файли (звичайні файли);
файли блокових пристроїв;
файли символьних пристроїв.
Визначити тип файлу можна за допомогою команди Is-Id. Перший символ у рядку виводу означає тип файлу. У наступному лістингу видається інформація про файл
brw-rw------ 1 root disk 22, 0 Dec 22 13:30 /dev/hdc
До регулярних файлів належать бінарні файли, бібліотеки, текстові файли та файли різних програм. ОС Linux не накладає жодних обмежень на структуру даних файлів. До їхнього вмісту можливий як послідовний, так і прямий доступ.
Файли цього типу зберігають іменовані посилання інші файли. Ім'я файлу, що знаходиться в каталозі, зберігається в батьківському каталозі, а не в самому файлі.
У ОС Linux є звані спеціальні каталоги. Спеціальні каталоги, такі як "." та «..», позначають, відповідно, поточний робочий каталог та його батьківський каталог.
У ОС Linux прийнято розрізняти символічні та жорсткі посилання, кожна з яких має особливе значення.
Символічні посилання може містити довільне ім'я, тобто. у них дозволяється вказувати на файли, що зберігаються в інших файлових системах і навіть на неіснуючі файли. Жорсткі посилання не можуть вказувати на файл, який знаходиться в іншій файловій системі.
Сокет – це спеціальний типфайлу, який використовується процесами для взаємодії один з одним. Встановлені за допомогою сокетів з'єднання дозволяють процесам взаємодіяти, не зазнаючи впливу інших процесів. У ОС Linux виділяється кілька видів сокетів, використання яких передбачає наявність інфраструктури мережі. Локальні сокети доступні лише на локальному комп'ютері, звернення до них здійснюється через спеціальні об'єкти файлової системи, а не через мережні порти. Такі сокети прийнято називати сокетами домену UNIX (UNIXdomainsocket). Крім локальних сокетів існують мережеві сокети, що дозволяють процесам обмінюватися даними по мережі.
Незважаючи на те, що інші процеси розпізнають файли сокетів як елементи каталогу, тільки процеси, між якими встановлено відповідне з'єднання, можуть читати та записувати файли сокета. З локальними сокетами працюють різні сервіси ОС Linux – CUPS, XWindow та Syslog.
Іменовані канали (FIFO)
Файли даного типу подібні до сокетів, оскільки теж використовуються для взаємодії між процесами, проте на відміну від сокетів в іменованих каналах дані передаються тільки в одному напрямку.
Файли блокових та символьних пристроїв
Файли блокових та символьних пристроїв дозволяють програмам отримувати доступ до апаратних засобів та периферійного обладнання системи. На етапі конфігурування до ядра ОС Linux динамічно підвантажуються необхідні модулі, призначені керувати апаратними засобами системи. За керування конкретним пристроєм відповідає спеціальний модуль, який називається драйвером пристрою.
Драйвери пристроїв утворюють стандартний інтерфейс взаємодії, що сприймається користувачем як набір звичайних файлів. Отримавши запит до файлусимвольного або блокового пристрою, ядро передає запит відповідному драйверу. Файли блокових і символьних пристроїв не є драйверами. Їх можна як шлюзи, якими драйвер приймає запити виконання передбачених операцій.
Файли символьних пристроїв не використовують буферизацію в процесі вводу-виводу. Усі операції вводу-виведення здійснюються негайно в міру надходження. До символьних пристроїв відносяться віртуальні термінали, модеми та інші пристрої, які не підтримують довільний доступ до даних.