- •Передумови виникнення файлових систем
- •Імена файлів
- •Внутрішня структура файлів
- •Типи файлів
- •Атрибути файлів
- •Операції з файлами
- •Каталоги
- •Системи з однорівневими каталогами
- •Ієрархічні системи каталогів
- •Імена файлів
- •Операції з каталогами
- •Реалізація файлової системи Структура файлової системи
- •Реалізація файлів Неперервне розміщення
- •Реалізація каталогів
- •Типи файлових систем
- •Файлові системи з журнальною структурою
- •Журнальовані файлові системи
- •Віртуальні файлові системи
- •Керування файловою системою
- •Керування дисковим простором
- •Розмір блоку
- •Відслідковування вільних блоків
- •Дискові квоти
- •Резервне копіювання файлової системи
- •Несуперечливість (Однозначність)файлової системи
- •Продуктивність файлової системи Кешування
- •Випереджаюче читання блоку
- •Скорочення обсягу переміщень блоку головок диска
Продуктивність файлової системи Кешування
Найбільш поширеним методом скорочення кількості звернень до диску є блочне кешування або буферне кешування. У даному контексті кеш являє собою колекцію блоків, що логічно належать диску, але зберігаються в пам'яті з метою підвищення продуктивності. Для управління кешем можуть застосовуватися різні алгоритми, але найбільш поширений з них передбачає перевірку всіх запитів для визначення, чи є потрібні блоки в кеші. Якщо ці блоки в кеші є, то запит на читання може бути задоволений без звернення до диска, якщо блок в кеші відсутній, то він спочатку зчитується в кеш, а потім копіюється туди, де він потрібний. Подальший запит до того ж самого блоку може бути задоволений безпосередньо з кешу.
Два фактори, що впливають на побудову кушу:
1. Чи велика ймовірність, що даний блок незабаром знову знадобиться?
2. Чи важливий даний блок з точки зору несуперечності файлової системи?
Отже, блоки, які, можливо, найближчим часом не знадобляться, поміщаються на початок списку. Блоки, які незабаром можуть знову знадобитися, наприклад частково заповнені блоки, в які проводиться запис, поміщаються в кінець списку, тому вони залишаться в кеші на довгий час.
Щоб справитися другою проблемою, у систем є два підходи. В UNIX використовується системний виклик sync, що змушує негайно записати всі змінені блоки на диск. При запуску системи у фоновому режимі запускається програма, яка зазвичай називається update, вона працює в нескінченному циклі і здійснює виклики sync, роблячи паузу в 30 с між викликами. В результаті при аварії втрачається роботи не більше ніж за 30 с.
Кеш, в якому всі модифіковані блоки негайно записуються назад на диск, називається кешем з наскрізним записом.
Випереджаюче читання блоку
Другий метод, що підвищує продуктивність файлової системи, полягає в спробі записати блоки в кеш ще до того, як вони знадобляться, щоб підвищити співвідношення вдалих звернень до кешу. Зокрема, багато файлів читаються послідовно. Коли у файлової системи запитується блок k якого-небудь файлу, вона виконує запит, але, завершивши його виконання, проводить перевірку на присутність в кеші блоку k + 1. Якщо цей блок в ньому відсутній, вона планує читання блоку k + 1 в надії, що коли він знадобиться, він вже буде в кеші. При довільному зверненні до файлу випереджаюче читання не допоможе. Буде прикро, якщо швидкість передачі даних з диска знизиться через читання непотрібних блоків і видалення корисних блоків з кешу. Для кожного файлу можна вести облік режиму доступу до нього, встановлюючи його в «режим послідовного доступу» або в «режим довільного доступу».
Скорочення обсягу переміщень блоку головок диска
Ще одним важливим методом є скорочення обсягу переміщень головок диска за рахунок розміщення блоків з високим ступенем імовірності звернень послідовно, поруч один з одним, переважно на одному і тому ж циліндрі. Секрет у тому, щоб відстежувати простір носія не в блоках, а в групах послідовних блоків. Вузьким місцем файлових систем, що використовують i-вузли або що-небудь їм подібне, полягає в тому, що навіть короткі файли вимагають двох звернень до диску: одного для i-вузла і другого для блоку даних.