Файловая система 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 будут рассматриваться на примере тестовых образов файловых систем.

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


Криминалистический анализ файловых систем



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс