ЗНАЕТЕ ЛИ ВЫ?

Особливості файлової системи ext3fs



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

Можуть бути задані три режими роботи із журналом: режим журналу (jour­nal), за якого всі зміни даних зберігаються в журналі; упорядкований режим (orde­red), за якого зберігаються тільки зміни в метаданих, але при цьому файлові операції групують так, щоб блоки даних зберігалися на диску перед метаданими, внаслідок чого знижується небезпека ушкодження інформації всередині файлів; режим мінімального записування (writeback), за якого зберігаються тільки метадані.

За замовчуванням використовують упорядкований режим.

Журнал файлової системи ext3fs зберігають у схованому файлі journal y кореневому каталозі файлової системи. її код не працює із файлом журналу безпосередньо, для цього використовують спеціальний рівень коду ядра із назвою JBD (Joumaling Block Device Layer). Код JBD групує дискові операції в транзакції, ін-формацію про які фіксують у журналі. Система гарантує, що інформація про підтверджену транзакцію буде вилучена із журналу лише тоді, коли всі відповідні блоки даних записані на диск.

Під час завантаження системи після збою утиліта e2fsck переглядає журнал і планує до виконання всі операції записування, описані підтвердженими транзакціями.

Файлова система /ргос

Принципи реалізації

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

Така файлова система вперше з'явилася в UNIX System V Release 4. Вона грунтувалась на тому, що кожному процесові у системі відповідає каталог файлової системи /ргос, при цьому ім'я каталогу має збігатися з цифровим зображенням ідентифікатора (pid) цього процесу (наприклад, процесу із pid-25 має відповідати каталог /ргос/25). Із каталогу можна дістати доступ до різних файлів із визначений іменами, при цьому доступ до кожного з них має спричиняти генерування різної інформації про процес у текстовому форматі, зручному для синтаксичного аналізу. Такою інформацією може бути вміст командного рядка процесу - /proc/pid/cmdinfo, відомості про поточне завантаження ним процесорів — /proc/pid/cpu, різноманітна статистика - /proc/pid/status тощо. В цілому вся інформація, відображувана програмою ps, має бути доступна через дану файлову систему. Ця інформація є динамічною. Коли, наприклад, переглянути двічі поспіль файл, що відображає поточне завантаження процесора, можемо отримати різні результати.

У Linux реалізовано вищеописане подання інформації про процеси, але, крім цього, у відображення /ргос було додано багато нових файлів і каталогів. Основним призначенням цих засобів доступу є надання різної статистики щодо системи, зокрема частина цих файлів і каталогів надає інтерфейс до служб ядра. За допомогою цієї системи можна здобути вичерпну інформацію про завантажені модулі ядра (/proc/modu-les), змонтовані файлові системи (/proc/mounts), зовнішні пристрої (/proc/devices, /proc/pd, /proc/ide), процесори (/proc/cpuinfo), стан пам'яті (/proc/meminfo) тощо.

Особливо важливий інтерфейс, що забезпечує доступ до внутрішніх змінних ядра; він реалізований через файли в каталогах /proc/sys i /proc/sys/kernel. Суттєвим тут є той факт, що /ргос підтримує не лише читання значень таких змінних, але їхнє редагування без перезавантаження системи і перекомпіляції ядра (через записування нових значень у відповідні файли). Прикладом змінної, котра може бути відредагована через інтерфейс /ргос, є максимально допустима кількість потоків у системі, що може бути модифікована під час її роботи шляхом зміни файла /proc/sys/kernel/threads-max:

# echo 10000 > /proc/sys/kernel/threads-max

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

Використання файлової системи /ргос із прикладних програм Використання файлової системи /ргос із прикладних програм організоване дуже просто [24]. Необхідно виконувати стандартні системні виклики роботи з файлами, шлях до яких відомий, зчитувати із них інформацію у текстовому форматі, виконувати її синтаксичний розбір і виділяти потрібні дані. Жодних додаткових прав доступу для цього не потрібно. Відомий приклад того, як змінилася реалізація утиліти ps (що відображає інформацію про процеси у системі) із появою /ргос. Якщо раніше вона була реалізована як привілейований процес, котрий зчитував інформацію про процеси безпосередньо з пам'яті ядра, то тепер її стало можливо реалізувати як звичайну прикладну програму, що зчитує і форматує текстові дані, доступні через /ргос.

Прикладом використання файлової системи /ргос може бути визначення загального обсягу пам'яті в системі. Цю інформацію повертають після читання із файла /proc/meminfo. Перші два рядки його мають такий вигляд:

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

 

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

Згадуючи про файлові системи лінії FAT, матимемо на увазі кілька близьких за організацією файлових систем, які розрізняють за способом адресації кластера на диску (FAT-12, FAT-16, FAT-32) або наявністю підтримки довгих імен (така підтримка є для всіх реалізацій FAT, використовуваних у Consumer Windows i в лінії Windows ХР). У цьому розділі вивчатимемо тільки системи із підтримкою довгих імен, а на відмінностях в адресації зупинимося окремо. Якщо виклад не зачіпатиме відмінностей в адресації, вживатимемо назву FAT, розуміючи під нею кожну із файлових систем цього сімейства.

Структура розділу FAT

Розглянемо структуру розділу, що містить файлову систему FAT.

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

· Далі розташований кореневий каталог, під який виділяють 32 Кбайт, що дає змогу зберігати в ньому 512 елементів (на кожний елемент виділено 32 байта).

· За кореневим каталогом слідує ділянка даних, у якій розташовані всі файли і каталоги, крім кореневого.

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

Особливості адресації FAT

Тепер зупинимося на відмінностях у версіях FAT, що ґрунтуються на особливостях адресації. Найважливішою характеристикою FAT є розмір індексного покажчика. Оскільки кожен із покажчиків вказує на кластер, від їхнього розміру залежить загальна кількість кластерів на диску і розмір FAT. Відмінності між версіями FAT визначаються розміром індексного покажчика: для FAT-12 він дорівнює

12 біт (що відповідає 4 Кбайт кластерів), для FAT-16 — 16 біт (64 Кбайт кластерів)і для FAT-32 - 32 біти (232 кластери).

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

Звичайно вибирають мінімальний розмір кластера, який дає змогу адресувати весь розділ визначеного обсягу, при цьому бажано, щоб кластер не був більший за 4 Кбайт. Наприклад, для FAT-12 і розміру кластера 4 Кбайт обсяг розділу не може перевищувати 16 Мбайт (тому таку систему рекомендують лише для дискет). Система FAT-16 за такого розміру кластера може бути застосована для розділів до 512 Мбайт, для більших розділів потрібно збільшувати розмір кластера. Наприклад, для розділу розміром понад 1 Гбайт розмір кластера має бути 32 Кбайт.

13 подоланням цього обмеження насамперед пов'язане впровадження FAT-32, що дає змогу використати кластери на 4 Кбайт для розділів розміром до 8 Гбайт.

Розмір FAT залежить від розміру індексного покажчика та обсягу розділу, у FAT-32 для великих розділів вона може досягати кількох мегабайт. ОС звичайно кешує FAT, але якщо зовнішня фрагментація диска значна і розмір FAT великий, ефективне кешування може бути ускладнене, внаслідок чого знижується продуктивність системи.

Структура елемента каталогу

Елемент каталогу в FAT містить: ім'я файла у форматі 8.3 (імена файлів розглянемо пізніше); поле атрибутів (1 байт) — тільки для читання, системний, схований; дату і час останньої модифікації файла; дату останнього доступу; номер першого кластера файла (4 байти); розмір файла (4 байти).





Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.219.31.204 (0.008 с.)