Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Подготовка жесткого диска к работе с файловой системой NTFS.

Подготовка жесткого диска к работе с файловой системой NTFS.

При форматировании тома под NTFS создаются таблица MFT (Master File Table – главная файловая таблица) и метаданные. Каждый занятый сектор тома NTFS принадлежит файлу. Даже метаданные файловой системы являются частью файла. NTFS рассматривает каж­дый файл или каталог как набор атрибутов. Том  NTFS условно делится на две части (см. рис.1). Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл $MFT (это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте). Остальные 88% диска представляют собой обычное пространство для хранения файлов.  

etSMz6a2.png (485×161)

Рис. 1. Использование пространства жесткого диска под том NTFS

 Свободное место диска, однако, включает в себя всё физически свободное место в том числе и незаполненные части MFT-зоны. Самый главный файл на томе NTFS  -  файл $MFT  размещается в MFT-зоне и представляет собой централизованный источник информации о размещении всех остальных файлов диска и самого себя.   $MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в обобщенном смысле) или хранит сам файл (небольшой).

NTFS включает несколько системных файлов (метафайлов), которые скрыты от просмотра на томе. Системные файлы используются только файловой системой для хранения метаданных и поддержания работы файловой системы. Системные файлы записываются на том утилитой Format. Метаданные представляют собой файлы, которые NTFS использует для реали­зации структуры файловой системы. NTFS резервирует для метаданных первые 16 записей в $MFT. Эти первые 16 файлов носят служебный характер недоступные операционной системе -  называются метафайлами (см. табл. 1). Остальные записи файла $MFT описывают фай­лы и каталоги. Самый первый метафайл - сам $MFT. Эти первые 16 записей $MFT - единственная часть диска, имеющая фиксированное положение. Вторая копия этих же 16 записей, для надежности хранится  в центральной зоне диска в виде файла $MFTMirr.

 

Таблица 1. Системные файлы NTFS

etSMz6ah.png (784×644) 

Метафайлы (первые 16 файлов NTFS) носят служебный характер. Каждый из них отвечает за какую-либо часть работы системы. NTFS может сместить, даже фрагментировать по диску, все свои служебные области (для обхода любых неисправностей поверхности)  кроме первых 16 элементов MFT. Метафайлы находятся корневом каталоге NTFS диска их имена начинаются с символа "$".  Получить какую-либо информацию о них стандартными средствами сложно. Для этих файлов указан реальный размер и можно узнать, например, сколько операционная система тратит на каталогизацию всего диска, посмотрев размер файла  $MFT.

Любой том NTFS со­держит загрузочный сектор. Главная загрузочная запись жесткого диска (МВR – Master Boot Record) не зависит от конкретной операционной системы, но загрузочный сектор раздела определяется конкретной операционной системой и используемой файловой системой.  Загрузочный сектор начинается с нулевого сектора раздела, он может занимать до 16 секторов и состоит из двух частей:

-  блок параметров BIOS содержит сведения о структуре тома и структурах файло­вой системы;

-  код программы, которая распознает используемую операционную систему и, используя ее, загружает в память файл Ntldr (загрузчик операционной системы), который «знает» как найти системные файлы для загрузки операционной системы (загрузочный раздел, который содержит файлы операционной системы  Windows, может совпадать с системным разделом, но может находиться и в другом разделе того же жесткого диска или даже на другом жестком диске).

Для каждого каталога и файла на томе NTFS в файле $MFT создается соответ­ствующая запись. $MFT также содержит отдельную запись (с номером 0) о самом $MFT. NTFS использует записи $MFT для описания соответствую­щих им файлов. Обычно каждый файл определяется одной записью. Если же файл имеет большое коли­чество атрибутов или сильно фрагментирован, может понадобиться больше запи­сей. В этом случае первая запись файла (базовая) содержит ссылку на следующую. Небольшой файл (до 1 500 байт) целиком хранится в записи MFT (см. рис.2). Возможность восстановления файлов из поврежденных разделов NTFS во многом определяется целостностью таблицы MFT и ее копии. В таблице MFT имена файлов хранятся в кодировке Unicode.

etSMz6ai.png (492×65)

Рис. 2. Структура записи файла $MFT определяющей небольшой файл или каталог

Подобный подход обеспечивает очень быстрый доступ к файлам. Нулевая запись таб­лицы описывает непосредственно главную файловую таблицу. За ней следу­ет зеркальная запись (mirror record) $MFT.  При искажении первой записи $MFT файловая система считывает эту запись, чтобы найти метафайлы.

Местоположение начальных кластеров файла $MFT и зеркального файла $MFTMirr записаны в полях BPB сектора начальной загрузки. Семнадцатая и последующие записи главной файловой таблицы определяют собственно файлы и каталоги на томе. В NTFS поиск файла производится только для непосредственного его использования. Записи каталога помещены внутри главной файловой таблицы так же, как записи файла. Вместо данных каталоги содержат индексную информацию. Небольшие записи каталогов находятся полностью внутри структуры записи $MFT. Большие каталоги организованы в B-tree (эффективный способ адресации - бинарное дерево B-tree), имея записи с указателями на внешние кластеры, содержащие элементы каталога, которые не могли быть записаны внутри структуры записи $MFT.

Для проведения работ диск подключили к компьютеру вторым жестким диском. Операционная система  присвоила данному диску номер один (см. рис. 3). Сама операционная система загрузилась в оперативную память с жесткого диска с номером ноль.

 etSMz6a3.png (709×77)

Рис. 3. Отображение состояния нового диска программой управления дисками из меню управления компьютером

 

Обычно новый диск из магазина содержит во всех байтах блоков данных всех секторов код 00h. В этом конкретном случае начальный физический сектор жесткого содержал информацию (см. рис. 4). Содержимое блока данных начального сектора HDD (и сам этот сектор) часто называют MasterBoot-Sector или сокращенно MBS. Обычно блок данных этого сектора содержит программу загрузчика операционной системы (IPL 1), таблицу разбиения диска на части (таблицу разделов – Partition Table) и кодовую последовательность для секторов, содержащих программы выполняемые процессором до загрузки в оперативную память главного файла ядра операционной системы (сигнатуру или иначе подпись 55ААh).

Программа IPL 1 начинается  в блоке данных MBS с нулевого адреса и может занимать пространство до байта c адресом 1BEh. Первые два байта блока данных сектора содержат код 33 C0 (шестнадцатеричная система счисления), который для процессора является машинным кодом команды XOR AX,AX (ассемблер). На рис. 4  в правой части рисунка можно увидеть тексты сообщений программы IPL 1, которые могут появиться на экране монитора при выполнении процессором данной программы (сообщения об ошибках). С адреса байта 1BE в блоке данных сектора записаны 64 байта нулей. Этот место отведено для записи таблицы разделов. Как видим таблица разделов отсутствует на рис. 4 (об этом нам сообщила программы управления дисками из меню управления компьютером: «диск 1 размером 111,79 ГБ не распределен»). За областью таблицы разделов с адреса 1FE мы видим два байта сигнатуры с кодами 55h и ААh.

 etSMz6a4.png (598×507)

Рис. 4. Отображение программой NtExplorer  содержимого блока данных сектора LBA 0 жесткого диска  в  шестнадцатеричной системе счисления. 

 

                Для использования физического пространства жесткого диска операционной системой создадим таблицу разделов и логический том программами мастера создания разделов. Сообщения программы отображены последовательно на рисунках (см. рис. 5а по рис. 5е).

 etSMz6a5.png (822×350)

 etSMz6a6.png (837×753)

                 

После создания таблицы разделов выполнили логическое форматирование физического пространства жесткого диска, т.е. создали файловую систему NTFS (сообщения см. рис. 6).

etSMz6a7.png (759×304)

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

 

По окончании логического форматирования на жестком диске был  создан системная часть раздела занимающая 67,9 МБ (на диске занято 71 237 632 байта). Для пользователя объем свободного пространства равна 119 960 240 128 байт или 111 ГБ (см. рис. 7).

etSMz6a8.png (306×382) 

Рис. 7. Отображение  состояния логического диска G: «Новый том» программой свойства жесткого диска.

 Описание  байтов четырех элементов таблицы разделов показано на рис. 8. Логический том «Новый том» начинается с сектора LBA 63 и занимает 234 436 482 физических секторов (см. рис. 9). Сектор LBA 63 является начальным сектором логического диска и его английское название Boot Sector. Нумерация логических секторов начинается с цифры 0.

etSMz6a9.png (669×193) Рис. 8. Описание программой NtExplorer  таблицы разделов в MBS(сектор LBA 0 жесткого диска)

etSMz6aa.png (327×102) 

Рис. 9. Описание программой NtExplorer  раздела физического диска на котором создан логический том с файловой системой NTFS    

Два способа отображения начального сектора логического диска (Boot sector) программой NtExplorer показано на рисунках 10, 11, 12, 13. Логический диск «G:», обозначенный по умолчанию меткой (Label) «Новый том» имеет размер (Size) 234 436 480 секторов. На данном  пространстве жесткого диска установлена файловая система NTFS с размером кластера по умолчанию равным 8 секторам (см. рис. 10, 11). Описание программой NtExplorer  состояния логического тома созданного на жестком диске см. на рис. 12.  Нумерация кластеров в данной файловой системе начинается с цифры 0. Системная информация раздела NTFS содержится в системных файлах (метафайлах), которые недоступны и невидимы для пользователей. После загрузочного сектора (Boot Sector) системная часть логического диска – метафайлы (Boot Sector тоже является частью метафайла $BOOT) - размещается с логического сектора 1(см. рис. 13). Системная часть логического диска содержащая корневой каталог (тоже метафайл) показана на рисунке 14. На рисунке 15 показано описание записей метафайла $MFT программой NtExplorer.

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

etSMz6ab.png (577×155)

Рис. 10. Описание  программой NtExplorer  содержимого байтов блока параметров BIOS (BPB) сектора LBA 63 жесткого диска (Boot Sector - начальный сектор 0 логического тома жесткого диска). Здесь мы видим и номер начального кластера  файла  $MFT, который является основой хранения информации в  виде  файлов  NTFS

(1 st MFT claster:     x000C0000  786432).

etSMz6ac.png (538×444)

Рис. 11. Отображение программой NtExplorer  сектора LBA 3F (63) жесткого диска в  шестнадцатеричной системе счисления (Boot Sector - начальный сектор 0 логического тома жесткого диска).  

etSMz6ad.png (350×184)

Рис. 12. Описание программой NtExplorer  состояния логического тома созданного на жестком диске.

etSMz6ae.png (553×476)

Рис. 13. Отображение программой NtExplorer  логического сектора 1 (в  шестнадцатеричной системе счисления).

etSMz6af.png (622×251)

Рис. 14. Описание программой NtExplorer  корневого каталога логического тома с файловой системой NTFS

(можно видеть из строки « .       x5[x5]    DIR …», что пятая запись файла $MFT определяет файл корневого каталога с именем «.»).

etSMz6ag.png (702×581)

Рис. 15. Описание программой NtExplorer  записей метафайла $MFT, запись с номером 0 определяет сам метафайл $MFT. Как видим, каждая запись определяет свой метафайл или файл и занимает 1024 байта т.е. два сектора (например, запись определяющая метафайл $MFTMirr занимает секторы 00600002 и 00600003).


Лицензия