Типи файлових систем

Операційна система Linux підтримує величезну кількість різноманітних типів файлових систем. З точки зору Linux файлові системи можна умовно розділити на чотири групи:

  • «Рідні» файлові системи. Мається на увазі, що файлова система підтримує всі атрибути, властиві Linux: права доступу, часові мітки, інформацію про власника файлу і т.д .;
  • «Нерідні» файлові системи. Тобто файлові системи, які не підтримують атрибути Linux;
  • Віртуальні. Це файлові системи, які не мають матеріального носія;
  • Мережеві файлові системи.

До «рідним» файловим системам можна віднести:

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

- Так, це та сама, єдина файлова система, яка мене повністю влаштовує.

Крім того, ext2 має серйозні обмеження:

  • Максимальний розмір файлу - 2048 Гбайт.
  • Максимальний розмір файлової системи - 32768 Гбайт.
  • Максимальна кількість піддиректорій в одній директорії - 32768.

Журнальованою файлові системи

Зараз файлову систему ext2 вже практично не використовують. І справа навіть не в її обмеження, ext2 досить надійна файлова система. Вся справа в швидкості завантаження Linux-серверів. Необхідно, щоб сервер працював постійно. Але чудес не буває, сервера іноді доводиться перевантажувати. Ваше завдання - зробити так, щоб після падіння системи вони перевантажували якомога швидше. При включенні сервера відбувається перевірка дисків. Процедура перевірки файлових систем, особливо великих, - досить тривала процедура. Якщо таких файлових систем кілька, то їх перевірка може зайняти дуже багато часу. А сервер повинен працювати!

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

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

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

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

Коли виникла необхідність впровадження журнальованою файлових систем в Linux, компанія RedHat розробила файлову систему ext3. У RedHat пішли шляхом найменшого опору - за основу взяли добре відому ext2 і додали підтримку журналу.

За своїм фізичним пристрою ext2 ідентична ext3. Ця особливість дозволила застосовувати для роботи з ext3 такі ж утиліти (створення, перевірка і налаштування файлових систем), як і для роботи з ext2.

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

Ext3 підтримує три режими роботи:

  • Writeback - в цьому режимі не відбувається журналирования даних. У журнал спочатку поміщаються так звані метадані (inode файлу, посилання на блоки). Тільки після того, як вони потрапили в журнал, відбувається запис даних в файлову систему.
  • Ordered (режим за замовчуванням) - цей режим схожий на описаний вище. Єдиною відмінністю є те, що в режимі writeback в журнал спочатку поміщаються всі метадані, і тільки після цього відбуваються зміни в файлову систему. А в режимі ordered при приміщенні інформації про блок в журнал цей блок відразу ж змінюється в файлової системі. Потім в протоколі можна відслідковувати наступному блоці, і блок записується, і так далі. Тобто дані змінюються паралельно зі зміною в журналі.
  • Journal - режим повного журналювання. У журнал потрапляють метадані і дані. І тільки після цього відбувається зміна в файлової системі.

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

У ній вдалося вирішити проблему розміщення на диску маленьких файлів. Наприклад, в ext2 / 3 для розміщення файлу, що містить єдиний символ, на диску буде зайнятий цілий блок. Блок ext2 / 3 може мати розмір від 1 до 8 Кбайт (розмір залежить від обсягу файлової системи). А в ReiserFS в одному блоці можуть бути розміщені дані декількох файлів. Більш того, якщо розмір файлу дуже малий, дані можуть бути розміщені в inode, тобто безпосередньо в метаданих.

Файлова система базується на оптимізованих деревах (B tree). Це збільшує швидкість пошуку в файлової системі і знімає питання обмеження кількості файлів і директорій в директорії.

З файлами великого розміру дана файлова система теж справляється досить упевнено.

Для файлової системи ReiserFS версії 3.6 існують наступні обмеження:

  • Максимальний розмір файлу - 8 Тбайт (для 32-бітових комп'ютерів);
  • Максимальний розмір файлової системи - 16 Тбайт.

Зараз розробляється наступна версія ReiserFS - четверта. Очікується, що вона буде включена в ядрах версії 2.6.17 або 2.6.18.

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

JFS - журнальована файлова система. Основний її коник - використання спільно з LVM (Logical Volume Manager). LVM дозволяє об'єднувати декілька фізичних розділів жорстких дисків в один логічний, який потім можна розбивати на розділи як звичайний жорсткий диск. При цьому деякі типи LVM дозволяють на льоту підключати нове дисковий простір. І якщо на збільшуються розділах використовувати файлову систему ext3, в один прекрасний момент ви отримаєте повідомлення про неможливість створення нового файлу. Справа в тому, що при форматуванні розділу в ext3 в ньому заздалегідь, в залежності від розміру, резервується кінцеве кількість inodes. Тобто заздалегідь відомо максимальну кількість файлів. Якщо розмір файлової системи не буде збільшуватися, то цієї кількості inodes цілком вистачає для нормальної роботи. У JFS є можливість динамічного збільшення файлової системи і кількості inodes. Завдяки цій властивості, при збільшенні розміру файлової системи не виникає обмеження на кількість створюваних файлів.

Для файлової системи JFS існують такі обмеження:

  • Максимальний розмір файлу обмежується розрядністю операційної системи.
  • Максимальний розмір файлової системи - 512 Тбайт.

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

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

Внутрішній устрій файлової системи досить складне, і я не бачу необхідності в короткому описі її структури. Тим більше, що в Інтернеті є хороші статті, докладно описують XFS:

Файлові системи компанії Microsoft

Якщо говорити про файлових системах компанії Microsoft, в Linux підтримуються FAT і NTFS. З FAT все дуже просто, структура файлової системи відома, тому в Linux вона підтримується повністю. Єдине, що необхідно врахувати при використанні FAT, в Linux існує дві її різновиди:

Підтримку FAT слід включати в тому випадку, якщо ви плануєте використовувати гнучкі диски і різні USB-накопичувачі: флеш-карти, жорсткі диски і т.д. Справа в тому, що всі вони зазвичай відформатовані в FAT.

C NTFS трохи складніше. Ця файлова система нормально підтримується в режимі тільки для читання. У режимі запису її не рекомендується використовувати. Хоча режим запису підтримується, але якщо почитати документацію до драйверів NTFS, ви побачите, що там великими літерами написано: в режимі запису можна тільки змінювати вміст існуючих файлів, ні в якому разі не можна створювати нові файли, видаляти або змінювати розмір існуючих - це може зруйнувати файлову систему.

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

Ці файлові системи використовуються для зберігання інформації на CD- і DVD-дисках.

Спочатку iso9660 була дуже простий файлової системою з великою кількістю обмежень. Наприклад, імена файлів як в MS DOS, обмеження на кількість вкладень в каталогах. Тому для iso9660 було написано кілька доповнень, що розширюють її можливості. В тому числі, доповнення, що дозволяють зберігати атрибути файлів UNIX. Всі доповнення підтримуються драйвером файлової системи, і ніяких труднощів при роботі бути не повинно. Більш того, драйвер iso9660 підтримує, як це не дивно звучить, режим запису. Він застосовується при створенні образів CD-ROM.

З udf теж не помічено особливих проблем. Таким чином, робота з CD- і DVD-дисками підтримується в Linux без будь-яких обмежень.

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

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

Нижче я опишу деякі цікаві файли, які ви можете зустріти в директорії / proc. Вміст файлів у вашій системі буде відрізнятися від вмісту файлів, показаних в якості прикладів.

/ Proc / cmdline

Містить командний рядок, передану ядру при його запуску.

/ Proc / cpuinfo

Інформація про процесор або процесори.

/ Proc / partitions

Містить список розділів всіх підключених накопичувачів.

Список пристроїв, виявлених на шині PCI.

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

/ Proc / swaps

Містить список підключених swap файлів і розділів.

/ Proc / version

Містить інформацію про версії операційної системи і ядра Linux.

Інформація про процеси

Крім файлів в / proc знаходяться директорії, що мають в якості імені число. Кожна директорія описує процес, PID якого відповідає імені директорії. Файли в цій директорії описують параметри процесу. Вміст однієї з директорія наведено нижче.

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

Містить аргументи командного рядка.

Містить значення змінних середовища оточення процесу.

Містить інформацію про стан процесу в форматі зрозумілому людині.

інші директорії

Комі директорій, що описують процеси системи, в / proc можуть перебувати й інші директорії. Нижче приведу призначення деяких з них:

  • ide - інформація про пристрої, підключених до ide інтерфейсу.
  • irq - інформація про розподіл переривань.
  • net - інформація про мережу. Вміст таблиці arp і таблиці маршрутизації. Статистика по мережних інтерфейсів і протоколом. І так далі.
  • scsi - інформація про SCSI пристроях.
  • sys - містить змінювані параметри системи.

Файлова система / proc / sys - це окрема велика тема. За допомогою файлів, що знаходяться в цій директорії можна «на льоту» змінювати параметри системи. Досить записати потрібне значення в певний файл. Описувати / proc / sys я не буду, занадто багато інформації і занадто багато треба знати, що б зрозуміти для чого використовуються файли. Тому я розповім де знайти документацію і опис по цій файлової системи:

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

Віртуальна файлова система sysfs - це особливість ядра Linux версії 2.6. У файлової системи відображаються деякі структури даних ядра, в основному описують пристрої, які в даний момент знаходяться в системі.

Sysfs використовується програмою udev для динамічного створення файлів пристроїв.

Схожі статті