Введение во внутреннее устройство Windows

Структура файловой системы NTFS

Показывать лекцию целиком

Задание 1. Создать виртуальный жесткий диск.

Замечание. В данной лабораторной работе используется виртуальный жесткий диск (Virtual Hard Disk, VHD) – формат файла, в котором можно сохранить образ жесткого диска. В VHD файлах, например, хранятся образы жестких дисков Microsoft Virtual PC.

Встроенная поддержка VHD реализована в Windows 7. Если ваша операционная система выпущена ранее Windows 7, рекомендуется пропустить первое задание, а остальные выполнять с использованием флеш диска (отформатировав его в файловой системе NTFS).

Помните, что при форматировании все данные на диске стираются.

Указания к выполнению.

1. Наберите в командной строке (нажмите кнопку Пуск) следующую команду:

Управление компьютером

Откроется оснастка (snap-in) Управление компьютером. Выберите пункт Управление дисками:

2. В меню Действие выберите пункт Создать виртуальный жёсткий диск:

Откроется диалоговое окно. Введите имя файла, в котором будет храниться виртуальный жесткий диск, и размер файла 100 МБ:

После процедуры создания новый жесткий диск должен отобразиться в списке дисков:

3. Чтобы с новым диском можно было работать, его следует проинициализировать, создать на нем том и отформатировать.

Щелкните правой кнопкой мыши на диске и выберите пункт Инициализировать диск (параметры оставьте по умолчанию):

После инициализации, щелкните правой кнопкой мыши на нераспределенном пространстве диска и выберите Создать простой том…. Откроется Мастер создания простых томов. Выберите следующие параметры:

  • Размер тома – оставьте по умолчанию;
  • Назначить букву диска – можно выбрать любую;
  • Форматирование раздела – NTFS, размер кластера по умолчанию, Быстрое форматирование:
  • Нажмите кнопку Готово.

    В результате на вашем компьютере должен появиться новый логический диск:

    Задание 2. Получить информацию об NTFS томе.

    Указания к выполнению.

    1. Скачайте с сайта Sysinternals утилиту NTFSInfohttp://technet.microsoft.com/ru-ru/sysinternals/bb897424.aspx. Сохраните её в папку на жестком диске, например, c:\Instruments.

    2. Запустите командную строку: нажмите кнопку Пуск – в текстовом окне введите cmd – нажмите Enter.

    3. Перейдите в каталог с утилитой NTFSInfo: введите в командной строке:

    cd c:\Instruments
    

    4. Запустите утилиту NTFSInfo. Введите команду ntfsinfo.exe, указав букву виртуального диска, например:

    ntfsinfo.exe d:
    

    Утилита отображает следующую информацию.

  • Информацию о томе (Volume Size):
  • размер тома (Volume size);
  • количество секторов (Total sectors);
  • количество кластеров (Total clusters);
  • количество свободных кластеров (Free clusters);
  • свободное место на диске (Free space).
  • Информацию о размерах единиц данных (Allocation Size):
  • количество байт в секторе (Bytes per sector);
  • количество байт в кластере (Bytes per cluster);
  • количество байт файловой записи (Bytes per MFT record);
  • количество кластеров в файловой записи (Clusters per MFT record).
  • Информацию о MFT (MFT Information):
  • размер MFT (MFT size);
  • начальный кластер MFT (MFT start cluster);
  • кластеры зоны MFT (MFT zone clusters);
  • размер зоны MFT (MFT zone size);
  • начальный кластер файла $MftMirr (MFT mirror start).
  • Задание 3. Узнать размер на диске, занимаемый небольшим файлом.

    Указания к выполнению.

    1. Создайте на виртуальном жестком диске текстовый файл Test.txt, наберите в нем, например, следующий текст: "This is test". Сохраните файл.

    2. В свойствах файла (правая кнопка мыши – Свойства) посмотрите, чему равен размер файла и его размер на диске:

    Как можно объяснить полученный результат?

    Файл Test.txt не удаляйте – он нам потребуется в дальнейшем.

    Задание 4. Изучить содержимое MFT.

    Указания к выполнению.

    1. Скачайте утилиту Nfi. Для этого перейдите по следующему адресу:

    http://support.microsoft.com/kb/253066/en-us

    На этой странице скачайте OEM Support Tools по ссылке, обозначенной Download Oem3sr2.zip now. Извлеките из архива папку Nfi с одноименной утилитой.

    2. Поместите утилиту Nfi в каталог c:\Instruments.

    3. Запустите командную строку и перейдите в папку c:\Instruments таким же образом как в задании 2.

    4. Введите в командной строке следующую команду (указав букву виртуального диска, например, d):

    nfi d >> log.txt
    

    Данная команда записывает в файл log.txt информацию обо всех файлах на диске D (виртуальном жестком диске).

    5. Откройте файл log.txt, расположенный в том же каталоге, что и утилита Nfi. Просмотрите его содержимое. Сравните с информацией из лекции 17 "Файловая система NTFS".

    На рисунке ниже приведен пример вывода утилиты Nfi для первой записи в таблице MFT – о самом файле $Mft:

    Обратите внимание на запись для файла Test.txt в конце файла log.txt:

    Задание 5. Исследовать внутреннюю структуру тома NTFS.

    Указания к выполнению.

    1. Для изучения внутренней структуры дисков существует множество программ. В этой лабораторной работе воспользуемся программой DiskExplorer for NTFS. Бесплатная оценочная версия доступна по адресу: http://www.runtime.org/diskexplorer.htm.

    2. После установки и запуска программы (под учетной записью администратора) откроется главное окно:

    В меню File выберите Drive… и в разделе Logical drives выделите Hard drive, соответствующий виртуальному диску:

    Нажмите ОК и отобразится окно с загрузочным сектором (Boot sector) NTFS:

    Дважды щелкните по надписи Boot sector (NTFS) или в меню Goto выберите Mft, программа перейдет к отображению файловых записей в таблице MFT:

    Относительно каждой файловой записи программа показывает следующую информацию.

    В первой строке:

  • Sector – начальный сектор данной файловой записи: сверху – в шестнадцатеричном виде, снизу – в десятичном;
  • Name – имя файла (или каталога);
  • Type – тип файловой записи (файл или каталог);
  • Attributes – DOS атрибуты файла (например, s – системный, h – скрытый); не путать с NTFS атрибутами;
  • Size – размер всего файла в байтах (не только файловой записи); отображается в десятичном виде;
  • Date – дата и время модификации файла (или каталога);
  • 1st cluster – первый кластер файла, если он имеет нерезидентные атрибуты;
  • NT Attributes – NTFS атрибуты (коды см. в лекции 17 "Файловая система NTFS").
  • Во второй строке:

  • No – номер записи в MFT;
  • Parent – номер записи в MFT для родительского каталога; например, для всех первых файлов в MFT этот номер будет равен 5 – номеру записи для корневого каталога (обозначается точкой);
  • Run – список групп для нерезидентных файлов.
  • В крайней левой колонке таблицы (Sector) показывается номер сектора, в котором располагается начало файловой записи. Проверьте, что этот номер совпадает с номером сектора для $Mft в файле log.txt, полученным в предыдущем задании. В нашем примере этот номер равен 0x102A8.

    Проверьте соответствие других записей в программе DiskExplorer и в файле log.txt.

    Обратите внимание, что номера секторов в столбце Sector увеличиваются на 2, т.е. файловая запись занимает 2 сектора (1 КБ).

    Задание 6. Изучить файловую запись для резидентного файла.

    Указания к выполнению.

    1. Найдите в списке файловых записей DiskExplorer запись для файла Test.txt:

    Дважды щелкните на этой записи (или нажмите клавишу F7) – откроется окно файловой записи:

    В этом окне три основных раздела:

  • Structures – структура файловой записи. Показаны заголовок (Header) файловой записи и атрибуты; каждый атрибут имеет заголовок (Header) и тело (Body);
  • Interpretation of data – интерпретация данных. Для текстового файла приведено его содержимое в текстовом виде;
  • Raw data – содержимое файловой записи в виде набора байт (приведены шестнадцатеричные значения и ASCII коды).
  • 2. При перемещении по пунктам в разделе Structures, в остальных двух разделах отображается соответствующая данному пункту информация. Например, на рисунке ниже приведена информация для заголовка файловой записи:

    Изучите содержимое заголовка файловой записи и всех атрибутов. Определите способ хранения информации при помощи окна Raw data. Например, на рисунке ниже красным цветом в разделах Interpretation of data и Raw data выделено поле Length (Длина) для атрибута $STANDARD_INFORMATION, а синим цветом – поле Data status (Резидентность): значение 00 означает, что атрибут резидентный.

    Информацию о структуре файловой записи NTFS можно найти в лекции 17 "Файловая система NTFS", а также в источниках [17; 5].

    3. В теле атрибута $DATA ($80) найдите текст, хранящийся в файле.

    Задание 7. Изучить файловую запись для нерезидентного файла.

    Указания к выполнению.

    1. Чтобы вернуться к списку файловых записей, можно нажать кнопку Go back (Назад) в правой верхней части окна DiskExplorer:

    или нажать клавишу F6, или выбрать пункт as File entry в меню View:

    2. Найдите в списке файловых записей $MftMirr – зеркальную копию MFT (следующая запись после $Mft):

    Дважды щелкните на записи $MftMirr (или нажмите клавишу F7) – откроется окно с подробной информацией о файле $MftMirr:

    Выделите пункт Attributes (Атрибуты) в окне Structures:

    Как видно из рисунка, атрибут $80 ($DATA) является нерезидентным. Изучим его расположение в памяти.

    Щелкните на заголовок (Header) атрибута $80 в окне Structures:

    На представленном рисунке зеленым цветом выделен признак атрибута non resident в разделе Interpretation of data и соответствующий байт в разделе Raw data (01).

    Синим цветом выделены начальный (Start VCN) и конечный (Last VCN) виртуальные номера кластеров (см. лекцию 11 "Файловая система NTFS"). Поскольку они совпадают (равны 0), то группа (Run) занимает всего один кластер.

    Красным цветом выделен список групп (Run list): 11:01 02.

  • 11 – определяет размер следующих двух полей:
  • младший полубайт (1) кодирует размер поля длины группы; поскольку в данном случае полубайт равен 1, размер поля длины группы составляет 1 байт;
  • старший полубайт (1) кодирует размер поля номера LCN стартового кластера; в данном случае размер поля составляет 1 байт;
  • 01 – размер группы составляет 1 кластер (это значение совпадает с определенной нами ранее длиной группы по номерам начального и конечного кластеров);
  • 02 – LCN номер начального кластера.
  • Перейдя на второй кластер (щелкнув ссылку x00000002 в окне Interpretation of data, выделенную синим цветом шрифта) и нажав клавишу F6, можно убедиться, что атрибут $DATA файла $MftMirr содержит первые 4 записи таблицы MFT:

    Обратите внимание, что поскольку одна файловая запись занимает 1 КБ (2 сектора), то 4 записи будут занимать 4 КБ или 8 секторов или 1 кластер.

    Задания для самостоятельного выполнения

    Задание 1. Определить максимальный размер обычного текстового файла, который целиком помещается в файловую запись NTFS.

    Задание 2. Исследовать представление каталогов в файловых записях NTFS.

    Указания к выполнению.

  • Создайте каталог на томе виртуального жесткого диска.
  • В программе DiskExplorer найдите файловую запись для созданного каталога и изучите её содержимое.
  • Задание 3. Определите расположение в атрибутах файловых записей NTFS следующей информации (указаны также виды атрибутов, для которых нужно определять расположение). Проверить соответствие информации в файловой записи и информации, отображаемой в окне свойств файла в Windows.

    Для всех атрибутов:

  • длина тела атрибута.
  • Для атрибута $STANDARD_INFORMATION:

  • время создания файла;
  • время изменения файла;
  • время последнего чтения файла;
  • признаки MS DOS (скрытый, системный и т.д.);
  • Для атрибута $FILE_NAME:

  • родительский каталог;
  • имя файла.
  • Вернуться к учебному плану