Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
21
Добавлен:
12.02.2016
Размер:
1.06 Mб
Скачать

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

Наведено основні типи файлових систем, їх основні переваги та недоліки, а також те що послугувало поштовхом для їх створення.

Файлові системи з журнальною структурою

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

LFS (Log-structured File System) — файлова система з журнальною структурою, яка покликана згладити цю проблему.

В основу LFS закладена ідея про те, що в міру підвищення швидкості роботи центральних процесорів і збільшення обсягу оперативної пам'яті істотно підвищується і рівень кешування дисків. Отже, з'являється можливість задоволення вельми істотної частини всіх дискових запитів на читання прямо з кешу файлової системи без звернення до диску.

В більшості файлових систем запис проводиться дуже малими блоками даних, що є неефективним, оскільки запису на диск, що займає 50 мкс, часто передує позиціонування на потрібний циліндр, на який витрачається 10 мс, і очікування підходу під головку потрібного сектора, на яке йде 4 мс. Для запису файлу повинні бути записані i-вузол для каталогу, блок каталогу, i-вузол для файлу і сам файл. Але якщо відбудеться збій до того, як будуть проведені всі записи, файлова система зіткнеться з серйозними проблемами узгодженості даних. Тому, як правило, записи i-вузлів виробляються негайно.

В основу LFS було покладено ідею структурувати весь диск у вигляді журналу. Періодично, коли в цьому виникає особлива потреба, вся інформація, що очікує здійснення запису, що знаходяться в буфері пам'яті, збирається в один сегмент і записуються на диск у вигляді одного безперервного сегменту в кінець журналу. Таким чином, окремий сегмент може містити i-вузли, блоки каталогу і блоки даних. На початку кожного сегменту знаходиться його зведена інформація, в якій повідомляється, що може бути знайдено в цьому сегменті. Якщо середній розмір сегмента зможе бути доведений приблизно до 1 Мбайт, то буде використовуватися практично вся пропускна здатність диску. Тепер знаходження i-вузла значно ускладнюється, оскільки його адреса не може бути просто вичислена з його i-номера. Для здійснення пошуку i-вузлів ведеться масив i-вузлів, проіндексований по i-номерах. Елемент і в такому масиві вказує на i-вузол на диску. Масив зберігається на диску, але він також піддається кешуванню, тому частини, що найбільш інтенсивно використовуються більшу частину часу будуть знаходитися в пам'яті.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]