Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
< >
1 2 3 4 5

Ufs1і ufs2: концепції та аналіз


Файлова система UFS (Unix File System) існує в декількох варіантах і зустрічається в багатьох різновидах UNIX, включаючи FreeBSD, HP-UX, NetBDS, OpenBSD, Apple OS X і Sun Solaris. За минулі роки в багатьох ОС деякі структури даних були змінені відповідно до їх потреб, але всі вони базуються на одних і тих же концепціях. В даний час існує дві основні модифікації UFS: UFS1 і UFS2. UFS2 підтримує диски більшого обсягу і розширені тимчасові штампи. Я буду використовувати термін «UFS» для позначення обох систем. Експерт може зіткнутися з файлової системою UFS при аналізі систем UNIX, зазвичай на серверах. Оскільки раніше ми вже докладно розглядали системи Ext2 і Ext3, побудовані на базі UFS, ця глава не містить розлогих пояснень - передбачається, що читач вже розуміє концепції, описані в главі 14. У цьому розділі розглядаються концепції і методи аналізу в файлової системі UFS, а в главі 17 - її структури даних. Цю і наступну глави можна читати як паралельно, так і послідовно.

Вступ

Система UFS пов'язана з файлової системою Berkeley FFS (Fast File System), а її архітектура проектувалася з розрахунку на швидкість і надійність. Резервні копії важливих структур даних зберігаються в кількох місцях файлової системи, а дані локалізуються таким чином, щоб звести до мінімуму переміщення головок жорсткого диска при читанні файлу. Система UFS ділиться на секції, які називаються групами циліндрів. Розмір кожної групи визначається на підставі геометрії диска. Групи циліндрів є аналогами груп блоків ExtX.

На початку UFS знаходиться суперблок з основною інформацією про будову файлової системи. Вміст кожного файлу зберігається в блоці, який представляє собою групу суміжних секторів. Блоки також можуть ділитися на фрагменти; фрагмент використовується для зберігання завершальних байтів файлу (замість виділення повного блоку). Метадані файлів і каталогів зберігаються в структурах даних, званих індексними вузлами. Імена файлів зберігаються в записах каталогів, що містяться в виділених каталогу блоках. Запис каталогу є простою структуру даних з ім'ям файлу і покажчиком на індексний вузол. Відносини між структурами даних показані на рис. 16.1. Кожна група циліндрів має власну таблицею індексних вузлів, бітової картою з інформацією про стан виділення фрагментів і копією суперблоку.

Мал. 16.1. Відносини між записами каталогів UFS, індексними вузлами і блоками даних, що використовуються для зберігання вмісту

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

Файлова система UFS1 використовується за умовчанням в OpenBSD і Solaris. Раніше вона також вважалася стандартної файлової системою FreeBSD і NetBSD до того моменту, як в FreeBSD 5.0 ​​і NetBSD 2.0 з'явилася UFS2. У UFS2 додана підтримка великих файлів і дисків, а також інші сучасні можливості. На момент написання книги тільки FreeBSD і NetBSD підтримували UFS2. Apple OS X і Linux також підтримують UFS1, але ця система в них не є стандартною. Різновид UFS також реалізована в Solaris для підтримки великих файлів і дисків. Компанія Sun не має опублікувала інформацію про структурах даних своєї версії UFS, але програми, засновані на описах структур даних від FreeBSD, успішно працюють в файлової системі Solaris. Проте з необов'язковими даними все може бути інакше.

У решти цього розділу ми розглянемо модель з п'ятьма категоріями стосовно різновидів UFS. У кожному розділі будуть описані основні властивості кожної категорії і її відмінні риси в кожному варіанті реалізації. Я буду позначати FreeBSD, NetBSD і OpenBSD загальним терміном «BSD».

Категорія даних файлової системи

До категорії даних файлової системи відносяться загальні відомості про будову і розмірі компонентів файлової системи. У цьому розділі описано місцезнаходження службових даних UFS і методи їх аналізу.

Загальні відомості

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

суперблок

Суперблок іР8 містить основні параметри файлової системи - такі, як розмір кожного фрагмента і кількість фрагментів в кожному блоці. Крім того, в ньому зберігається розмір кожної групи циліндрів і місцезнаходження різних структур даних в кожній групі. На підставі цієї інформації можна визначити конфігурацію файлової системи. У суперблоці також може зберігатися мітка тому і час останнього монтування файлової системи. Суперблок 11Р8 грає ту ж роль, що і суперблоки ЕхгХ, але інформація про структуру та необов'язкові дані різняться.

Суперблок іР8 зберігається поблизу від початку файлової системи. На знімних носіях він може починатися в першому секторі. Зазвичай суперблоки 11Р81 знаходиться в 8, а суперблоки 11Р82 - в 64 кілобайтах від початку файлової системи. Також суперблоки ЦТ82 може розташовуватися в 256 кілобайтах від початку файлової системи, але такий варіант розташування не є стандартним. Резервні копії суперблоку можуть бути присутніми у всіх групах циліндрів.

У іР81 і іР82 використовуються злегка розрізняються структури даних, але в обох версіях їх розмір перевищує 1 Кбайт, а структури містять близько 100 полів. Суперблоці іРБ1 і іР82 розрізняються тим, що версія іРБ2 включає 64-розрядні версії полів розміру і дати, які додаються в кінець структури даних. Невикористані 32-розрядні поля ігноруються і не використовуються для зберігання інших даних.

У суперблоці також зберігається інша службова інформація - наприклад, загальна кількість вільних індексних вузлів, фрагментів і блоків. З суперблоку можна дізнатися місцезнаходження області, званої зведенням групи циліндрів. У цій області також зберігається таблиця з записами для всіх груп циліндрів; в записах документується кількість вільних блоків, фрагментів і індексних вузлів. Як буде показано пізніше, ця інформація також присутній в дескрипторі кожної групи.

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

Детальні описи структур даних наведені в главі 17. суперблоці як іР81, так і іР82 будуть розглядатися на прикладі тестових образів файлових систем.

Структури даних журналу | Криміналістичний аналіз файлових систем | Дескриптор групи циліндрів