NTFS и FAT 32. Дороги, которые мы вибираем. Часть I


NTFS и FAT 32. Дороги, которые мы вибираем. Часть I




Михаил Тычков aka Hard



Доброго времени суток.

Введение :-)

С появлением операционной системы Windows XP появилась насущная проблема выбора типа
файловой системы для пользователей персональных компьютеров (Windows NT/2000 все же в
большей степени серверные системы). Какую же выбрать: NTFS или FAT32? Я постараюсь
рассказать о каждой из них, а выбор предоставлю Вам.

Итак, приступим.

NTFS.

Эту файловую систему используют такие операционные системы, как Windows NT/2000/XP.
При установке NTFS (New Technology File System), диск разделяется на две неравные части: первая отводиться под MFT
(Master File Table - общая таблица файлов), называется MFT - зоной и занимает порядка
12% от общего размера диска, вторую часть занимают собственно Ваши данные.
Есть еще и третья зона, но о ней позже. Что за зверь этот MFT? Это основа NTFS.
Он лежит, как было сказано ранее, в MFT - зоне т. е. в начале диска. Каждая запись в
MFT соответствует какому-либо файлу и занимает около 1 Kb. По своей сути это каталог
всех файлов находящихся на диске. Надо заметить, что любой элемент данных в NTFS
рассматривается как файл, даже MFT. Первые 16 файлов (метафайлы) в MFT - зоне
являются особой кастой. В них содержится служебная информация, они имеют фиксированное
положение и они недоступны даже операционной системе. Кстати, первым из этих 16 является
сам MFT - файл. Существует копия первых трех записей. Помните, я говорил о третьей зоне,
так вот там она и лежит и своим положением, если можно так выразиться, делит диск пополам.
Зачем это сделано? Да для надежности, в случае утери информации в MFT - файле, всегда можно
восстановить информацию, а там уже дело техники, как говориться. Все остальные файлы в
MFT - зоне могут располагаться произвольно. Надо заметить, что в MFT - зоне теоретически
кроме служебных файлов ничего не находиться. Но бывают случаи, когда места на той части
диска, что отведена для пользователя не остается :-( и тогда MFT - зона уменьшается.
Соответственно появляется место во второй половине диска для записи данных. Когда же в
этой зоне освобождается достаточное количество свободного места, MFT - зона опять
расширяется. И вот тут то появляется проблема. В MFT -
зону попадают обычные файлы и она начинает фрагментироваться. Это не смертельно
конечно, но и приятного тут мало. Но вернемся к нашим баранам, то бишь метафайлам.
Каждый из них отвечает за какую-либо область работы. Начинаются они с символа имени $
(тем, кто занимается программированием значок известен). Приведу пример некоторых из них:

    $MFT - не что иное как сам MFT
    $MFTmirr - та самая копия, что по серединке диска
    $LogFile - это файл журналирования
    $Boot - как видно из названия, его величество загрузочный сектор
    $Bitmap - карта свободного места раздела

Ну и так далее. Информация о метафайлах находиться в MFT - файле.
Сложно? Есть такое дело. Но вся эта фигня придумана для увеличения надежности NTFS и
себя оправдывает. Едем дальше. NTFS практически не имеет ограничения на размеры диска (
во всяком случае при нынешних технологиях производства жестких дисков). Размер кластера
может варьироваться от 512 b до 64 Kb, хотя обычный его размер равен 4 Kb.

Поговорим теперь о каталоге. Это метофайл с обозначением $. . Он разделен на части в
каждой из которых содержится имя файла, его атрибуты и ссылочка на MFT - файл. А там уже
есть вся остальная информация. Каталог представляет собой бинарное дерево. Попробуем
разобраться, что это за фигня такая. В каталоге информация о данных на диске расположена
таким образом, что при поиске какого-либо файла каталог разбивался на две части и ответ
заключался в том, в какой именно части находиться искомое. Затем та же самая операция
повторяется в выбранной половине. И так до тех пор, пока не будет найден нужный файл.

А теперь о файлах. Их как таковых нет. Нормально, да! Есть так называемые стримы,
или говоря нормальным русским языком - потоки. То есть, любая единица информации
представляет собой несколько потоков. Один поток - это сами данные, он является основным.
Другие потоки - атрибуты файла. К любому файлу можно прикрепить любой другой файл. Проще
говоря, к потокам одних данных можно прикрепить совершенно новый поток и записать туда
новые данные. Вот только информация по объему файла берется по объему основного потока.
Пустые или малоразмерные файлы на диске отображены только в метафайлах. Сделано это в
целях экономии дискового пространства. Вообще надо отметить, что понятие файл намного
глубже и шире и все свойства описать довольно сложно. Отмечу, что максимальная длина
имени файла может достигать 255 символов.

Ко всему прочему, файлы NTFS имеют такой замечательный атрибут как сжатый.
Любой файл или даже каталог может быть сжат. Сама операция сжатия происходит
незаметно, так как скорость ее довольно высока. До кучи, используется так называемое
виртуальное сжатие т. е. одна часть файла может быть сжата, а другая нет.
Сжатие осуществляется блоками. Каждый блок равен 16 кластерам.

В NTFS используется шифрование данных. Таким образом, если Вы снесли систему и установили
ее по новой, зашифрованные файлы без соответствующей санкции прочитать не сможете.

Теперь о журналировании. Но сначала определимся с понятием транзакция. Транзакция - это
действие, которое должно быть выполнено целиком и полностью (читай - корректно), в
противном случае оно вообще не будет выполнено. Так вот, на основе этой фигни, при сбое
во время записи данных на диск, пометок о новом файле в метафайлах сделано не будет.
А место, куда была начата запись будет считать чистым. Это необходимо для предохранения :-)
от различного рода геморроев. Короче, выполнил действие до конца - сделал запись,
не удалось - и записывать об этом незачем. Но следует заметить, что функция журналирования
сохраняет работоспособность файловой системы, а не ваших данных.

И наконец в NTFS есть еще две такие функции, как Symbolic Links - возможность создания
виртуальных каталогов, и Hard Links - поддержка нескольких имен для одного и того же файла.

Вот пожалуй что и все.

FAT 32

На данный момент времени эта файловая система является самой распространенной,
хотя и сдает постепенно свои позиции после выхода Windows XP. Поддерживают FAT
32 все операционные системы семейства Windows начиная с Windows 95 OSR2.
Итак, FAT 32 (File Allocation Table) - это электронная таблица размещения файлов.
Находиться она практически в самом начале диска. Структура диска FAT:

    1. загрузочные секторы главного и дополнительного разделов;
    2. загрузочный сектор логического диска;
    3. корневой каталог;
    4. область данных;
    5. цилиндр для выполнения диагностических операций чтения/записи;

Основное преимущество FAT 32 перед FAT 16 заключается в том, что вместо 16 разрядных
записей используются 32х разрядные. Это в свою очередь увеличивает количество кластеров
в разделе до 268 435 456 (в FAT - 65 536). При использовании FAT 32 размер тома равен 2 Tb,
а размер одного файла может достигать 4 Gb. Заметное отличие FAT 32 от предшествующих
таблиц заключается в том, что корневой каталог не занимает фиксированного места на диске
и может иметь любой размер.

Размер кластера при использовании FAT 32 в разделе размером 2 Gb с 5 000 файлами равен
4 Kb ( в FAT 16 - 32 Kb), в таблице будет использоваться до 524 288 записей. При этом сама
таблица будет весить порядка 2 Мb.

Вот так вот коротенько и сухенько. Больше о FAT 32 я распинаться не буду,
а тех, кто хочет узнать больше о логическом строении диска FAT 32, я отправляю
сюда.

Сравнением NTFS и FAT 32 займусь в следующей части статьи.

Читать далее...