Что такое NTFS? Файловые системы. Что такое FAT и NTFS

Эта статья посвящена файловым системам . При установке ОС Windows предлагает выбрать файловую систему на разделе, где она будет устанавливаться, и пользователи ПК должны выбирать из двух вариантов FAT или NTFS .

В большинстве случаев пользователи довольствуются знанием, что NTFS «лучше» , и выбирают этот вариант.

Однако иногда им становится интересно, а чем именно лучше?

В данной статье я постараюсь объяснить, что такое файловая система, какие они бывают, чем отличаются, и какую стоит использовать.

В статье упрощенны некоторые технические особенности файловых систем для более понятного восприятия материала.

Файловая система – это способ организации данных на носителях информации. Файловая система определяет, где и каким образом на носителе будут записаны файлы, и предоставляет операционной системе доступ к этим файлам.

К современным файловым системам предъявляют дополнительные требования: возможность шифрования файлов, разграничение доступа для файлов, дополнительные атрибуты. Обычно файловая система записана в начале жесткого диска. ().

С точки зрения ОС, жесткий диск – это набор кластеров.

Кластер – это область диска определенного размера для хранения данных. Минимальный размер кластера – 512 байт. Поскольку используется двоичная система счисления, то размеры кластеров кратны степени двойки.

Пользователь может образно представить себе жесткий диск как блокнот в клеточку. Одна клеточка на странице – это один кластер. Файловая система – это содержание блокнота, а файл – слово.

Для жестких дисков в ПК в данный момент наиболее распространены две файловые системы: FAT или NTFS . Сначала появилась FAT (FAT16) , затем FAT32 , а потом NTFS .

FAT (FAT16) это аббревиатура от File Allocation Table (в переводе Таблица Размещения Файлов ).

Структура FAT была разработана Биллом Гейтсом и Марком МакДональдом в 1977 году. Использовалась в качестве основной файловой системы в операционных системах DOS и Microsoft Windows (до версии Windows ME).

Существует четыре версии FAT - FAT12 , FAT16 , FAT32 и exFAT . Они отличаются количеством бит, отведённых для хранения номера кластера.

FAT12 применяется в основном для дискет, FAT16 - для дисков малого объёма, а новая exFAT преимущественно для флэш-накопителей. Максимальный размер кластера, который поддерживается в FAT, составляет 64Кб. ()

FAT16 впервые представлена в ноябре 1987 года. Индекс 16 в названии показывает, что для номера кластера используется 16 бит. Вследствие этого максимальный объем раздела диска (тома), который может поддерживать эта система, равен 4Гб.

Позже, с развитием технологий и появлением дисков объемом более 4Гб, появилась файловая система FAT32 . Она использует 32-разрядную адресацию кластеров и появилась вместе с Windows 95 OSR2 в августе 1996 года. FAT32 ограничена в размере тома в 128Гб. Также эта система может поддерживать длинные имена файлов. ().

NTFS (аббревиатура New Technology File System - Файловая Система Новой Технологии ) - стандартная файловая система для семейства операционных систем Microsoft Windows NT.

Представлена 27 июля 1993 вместе с Windows NT 3.1. NTFS разработана на основе файловой системы HPFS (аббревиатура High Performance File System - Высокопроизводительная Файловая Система ), создававшейся Microsoft совместно с IBM для операционной системы OS/2.

Основные особенности NTFS: встроенные возможности разграничивать доступ к данным для различных пользователей и групп пользователей, а также назначать квоты (ограничения на максимальный объём дискового пространства, занимаемый теми или иными пользователями), использование системы журналирования для повышения надёжности файловой системы.

Спецификации файловой системы являются закрытыми. Обычно размер кластера равен 4Кб. На практике не рекомендуют создавать тома более 2ТБ. Жесткие диски только достигли таких размеров, возможно в будущем нас ждет новая файловая система. ().

Во время установки ОС Windows ХР предлагается отформатировать диск в системе FAT или NTFS . При этом имеется в виду FAT32 .

Все файловые системы построены на принципе: один кластер – один файл. Т.е. один кластер хранит данные только одного файла.

Основное отличие для обычного пользователя между этими системами – размер кластера. «Давным-давно, когда диски были маленькими, а файлы – очень маленькими» это было очень заметно.

Рассмотрим на примере одного тома на диске объемом 120Гб и файла размером 10Кб.

Для FAT32 размер кластера будет 32Кб, а для NTFS – 4Кб.

В FAT32 такой файлзаймет 1 кластер, при этом останется 32-10=22Кб незанятого места.

В NTFS такой файлзаймет 3 кластера, при этом останется 12-10=2Кб незанятого места.

По аналогии с блокнотом кластер – это клетка. И поставив точку в клетку, мы уже логически занимаем ее всю, а в действительности остается много свободного места.

Таким образом, переход от FAT32 к NTFS позволяет более оптимально использовать жесткий диск при наличии большого количества мелких файлов в системе.

В 2003 году у меня был диск на 120Гб, разделенный на тома по 40 и 80Гб. Когда я перешел с Windows 98 на Windows ХР и конвертировал диск с FAT32 в NTFS , я получил около 1Гб освободившегося места на диске. В то время это была существенная «прибавка».

Чтобы узнать, какая файловая система используется на томах жесткого диска Вашего ПК, надо открыть окно свойств тома и на закладке «Общие» прочитать эти данные.

Том – это синоним раздела диска, пользователи том обычно называют «диск С», «диск Д» и т.д. Пример показан на картинке ниже:

В настоящий момент широко используются диски объемом 320Гб и больше. Поэтому я рекомендую использовать систему NTFS для оптимального использования дискового пространства.

Также, если пользователей на ПК несколько, NTFS позволяет настроить доступ к файлам таким образом, чтобы разные пользователи не могли читать и изменять файлы других пользователей.

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

Если Вам будет интересна организация доступа к файлам для нескольких пользователей на одном ПК, то в следующих статьях будет подробно это описано.

При написании статьи использованы материалы сайтов ru.wikipedia.org

Автор статьи: Максим Тельпари
Пользователь ПК с 15-ти летним стажем. Специалист службы поддержки видеокурса "Уверенный пользователь ПК", изучив который Вы научитесь собирать компьютер, устанавливать Windows XP и драйверы, восстанавливать систему, работать в программах и многое другое.

Заработайте на этой статье!
Зарегистрируйтесь в партнерской программе. Замените в статье ссылку на курс на свою партнерскую ссылку. Добавьте статью на свой сайт. Получить версию для перепечатки можно .

Операционные системы Microsoft семейства Windows NT нельзя представить без файловой системы NTFS - одной из самых сложных и удачных из существующих на данный момент файловых систем. Данная статья расскажет вам, в чем особенности и недостатки этой системы, на каких принципах основана организация информации, и как поддерживать систему в стабильном состоянии, какие возможности предлагает NTFS и как их можно использовать обычному пользователю.
Часть 1. Физическая структура NTFS

Начнем с общих фактов. Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, но я даже не буду указывать его, так как его с запасом хватит на последующие сто лет развития вычислительной техники - при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. NT4, правда, будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела.

Лирическое отступление. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS. Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы:) Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного «ограничения» на размер NTFS при установке. :)

Структура раздела - общий взгляд

Как и любая другая система, NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается… Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.

MFT и его структура

Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности - они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, «зацепившись» за самую основу - за первый элемент MFT.

Метафайлы

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

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени «$», хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

$MFT сам MFT
$MFTmirr копия первых 16 записей MFT, размещенная посередине диска
$LogFile файл поддержки журналирования (см. ниже)
$Volume служебная информация - метка тома, версия файловой системы, т. д.
$AttrDef список стандартных атрибутов файлов на томе
$. корневой каталог
$Bitmap карта свободного места тома
$Boot загрузочный сектор (если раздел загрузочный)
$Quota файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)
$Upcase файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.

Файлы и потоки

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?

  • Прежде всего, обязательный элемент - запись в MFT, ведь, как было сказано ранее, все файлы диска упоминаются в MFT. В этом месте хранится вся информация о файле, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и т. д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд.
  • Опциональный элемент - потоки данных файла. Может показаться странным определение «опциональный», но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего «физического» воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT.

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно «прилепить» еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.

Каталоги

Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом - с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя - выше или ниже? Мы начинаем с такого вопроса к среднему элементу, и каждый ответ сужает зону поиска в среднем в два раза. Файлы, скажем, просто отсортированы по алфавиту, и ответ на вопрос осуществляется очевидным способом - сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента.

Вывод - для поиска одного файла среди 1000, например, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе дерева - всего около 12-ти (2^10 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоемко, а во-вторых - даже FAT в исполнении современной системы (Windows2000 или Windows98) использует сходную оптимизацию поиска. Это просто еще один факт в вашу копилку знаний. Хочется также развеять распространенное заблуждение (которое я сам разделял совсем еще недавно) о том, что добавлять файл в каталог в виде дерева труднее, чем в линейный каталог: это достаточно сравнимые по времени операции - дело в том, что для того, чтобы добавить файл в каталог, нужно сначала убедится, что файла с таким именем там еще нет:) - и вот тут-то в линейной системе у нас будут трудности с поиском файла, описанные выше, которые с лихвой компенсируют саму простоту добавления файла в каталог.

Какую информацию можно получить, просто прочитав файл каталога? Ровно то, что выдает команда dir. Для выполнения простейшей навигации по диску не нужно лазить в MFT за каждым файлом, надо лишь читать самую общую информацию о файлах из файлов каталогов. Главный каталог диска - корневой - ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.

Журналирование

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

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

Пример 2: более сложный случай - идет запись данных на диск. Вдруг, бах - отключается питание и система перезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На помощь приходит другой механизм системы - журнал транзакций. Дело в том, что система, осознав свое желание писать на диск, пометила в метафайле $LogFile это свое состояние. При перезагрузке это файл изучается на предмет наличия незавершенных транзакций, которые были прерваны аварией и результат которых непредсказуем - все эти транзакции отменяются: место, в которое осуществлялась запись, помечается снова как свободное, индексы и элементы MFT приводятся в с состояние, в котором они были до сбоя, и система в целом остается стабильна. Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного: транзакция либо еще и не начиналась (идет только попытка записать намерения её произвести), либо уже закончилась - то есть идет попытка записать, что транзакция на самом деле уже выполнена. В последнем случае при следующей загрузке система сама вполне разберется, что на самом деле всё и так записано корректно, и не обратит внимания на «незаконченную» транзакцию.

И все-таки помните, что журналирование - не абсолютная панацея, а лишь средство существенно сократить число ошибок и сбоев системы. Вряд ли рядовой пользователь NTFS хоть когда-нибудь заметит ошибку системы или вынужден будет запускать chkdsk - опыт показывает, что NTFS восстанавливается в полностью корректное состояние даже при сбоях в очень загруженные дисковой активностью моменты. Вы можете даже оптимизировать диск и в самый разгар этого процесса нажать reset - вероятность потерь данных даже в этом случае будет очень низка. Важно понимать, однако, что система восстановления NTFS гарантирует корректность файловой системы , а не ваших данных. Если вы производили запись на диск и получили аварию - ваши данные могут и не записаться. Чудес не бывает.

Сжатие

Файлы NTFS имеют один довольно полезный атрибут - «сжатый». Дело в том, что NTFS имеет встроенную поддержку сжатия дисков - то, для чего раньше приходилось использовать Stacker или DoubleSpace. Любой файл или каталог в индивидуальном порядке может хранится на диске в сжатом виде - этот процесс совершенно прозрачен для приложений. Сжатие файлов имеет очень высокую скорость и только одно большое отрицательное свойство - огромная виртуальная фрагментация сжатых файлов, которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16 кластеров и использует так называемые «виртуальные кластеры» - опять же предельно гибкое решение, позволяющее добиться интересных эффектов - например, половина файла может быть сжата, а половина - нет. Это достигается благодаря тому, что хранение информации о компрессированности определенных фрагментов очень похоже на обычную фрагментацию файлов: например, типичная запись физической раскладки для реального, несжатого, файла:

кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го

кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го…

Физическая раскладка типичного сжатого файла:

кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го

кластеры файла с 10 по 16-й нигде не хранятся

кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го

кластеры файла с 19 по 36-й нигде не хранятся


Видно, что сжатый файл имеет «виртуальные» кластеры, реальной информации в которых нет. Как только система видит такие виртуальные кластеры, она тут же понимает, что данные предыдущего блока, кратного 16-ти, должны быть разжаты, а получившиеся данные как раз заполнят виртуальные кластеры - вот, по сути, и весь алгоритм.

Безопасность

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

Права файловой системы NTFS неразрывно связаны с самой системой - то есть они, вообще говоря, необязательны к соблюдению другой системой, если ей дать физический доступ к диску. Для предотвращения физического доступа в Windows2000 (NT5) всё же ввели стандартную возможность - об этом см. ниже. Система прав в своем текущем состоянии достаточно сложна, и я сомневаюсь, что смогу сказать широкому читателю что-нибудь интересное и полезное ему в обычной жизни. Если вас интересует эта тема - вы найдете множество книг по сетевой архитектуре NT, в которых это описано более чем подробно.

На этом описание строение файловой системы можно закончить, осталось описать лишь некоторое количество просто практичных или оригинальных вещей.

Hard Links

Эта штука была в NTFS с незапамятных времен, но использовалась очень редко - и тем не менее: Hard Link - это когда один и тот же файл имеет два имени (несколько указателей файла-каталога или разных каталогов указывают на одну и ту же MFT запись). Допустим, один и тот же файл имеет имена 1.txt и 2.txt: если пользователь сотрет файл 1, останется файл 2. Если сотрет 2 - останется файл 1, то есть оба имени, с момента создания, совершенно равноправны. Файл физически стирается лишь тогда, когда будет удалено его последнее имя.

Symbolic Links (NT5)

Гораздо более практичная возможность, позволяющая делать виртуальные каталоги - ровно так же, как и виртуальные диски командой subst в DOSе. Применения достаточно разнообразны: во-первых, упрощение системы каталогов. Если вам не нравится каталог Documents and settingsAdministratorDocuments, вы можете прилинковать его в корневой каталог - система будет по прежнему общаться с каталогом с дремучим путем, а вы - с гораздо более коротким именем, полностью ему эквивалентным. Для создания таких связей можно воспользоваться программой junction (junction.zip , 15 Кб), которую написал известный специалист Mark Russinovich. Программа работает только в NT5 (Windows 2000), как и сама возможность.

Для удаления связи можно воспользоваться стандартной командой rd.
ВНИМАНИЕ: Попытка уделения связи с помощью проводника или других файловых менеджеров, не понимающих виртуальную природу каталога (например, FAR), приведет к удалению данных, на которые ссылается ссылка! Будьте осторожны.

Шифрование (NT5)

Полезная возможность для людей, которые беспокоятся за свои секреты - каждый файл или каталог может также быть зашифрован, что не даст возможность прочесть его другой инсталляцией NT. В сочетании со стандартным и практически непрошибаемым паролем на загрузку самой системы, эта возможность обеспечивает достаточную для большинства применений безопасность избранных вами важных данных.Часть 2. Особенности дефрагментации NTFS

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

К истокам проблемы

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

Диск NTFS поделен на две зоны. В начала диска идет MFT зона - зона, куда растет MFT, Master File Table. Зона занимает минимум 12% диска, и запись данных в эту зону невозможна. Это сделано для того, чтобы не фрагментировался хотя бы MFT. Но когда весь остальной диск заполняется - зона сокращается ровно в два раза:). И так далее. Таким образом мы имеем не один заход окончания диска, а несколько. В результате если NTFS работает при диске, заполненном на около 90% - фрагментация растет как бешенная.

Попутное следствие - диск, заполненный более чем на 88%, дефрагментировать почти невозможно - даже API дефрагментации не может перемещать данные в MFT зону. Может оказаться так, что у нас не будет свободного места для маневра.

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

16 - 16 - 16 - 16 - 16 - [скачек назад] - 15 - 15 - 15 - [назад] - 14 - 14 - 14 .... 1 - 1 - 1 -1 - 1...

Так процесс идет до самых мелких дырок в 1 кластер, несмотря на то, что на диске наверняка есть и гораздо более большие куски свободного места.

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

Смысл в сего этого вступления в пояснении того простого факта, что никак нельзя сказать, что NTFS препятствует фрагментации файлов. Наоборот, она с радостью их фрагментирует. Фрагментация NTFS через пол года работы доведет до искреннего удивления любого человека, знакомого с работой файловой системой. Поэтому приходится запускать дефрагментатор. Но на этом все наши проблемы не заканчиваются, а, увы, только начинаются.

Средства решения?

В NT существует стандартное API дефрагментации. Обладающее интересным ограничением для перемещения блоков файлов: за один раз можно перемещать не менее 16 кластеров (!), причем начинаться эти кластеры должны с позиции, кратной 16 кластерам в файле. В общем, операция осуществляется исключительно по 16 кластеров. Следствия:

  1. В дырку свободного места менее 16 кластеров нельзя ничего переместить (кроме сжатых файлов, но это неинтересные в данный момент тонкости).
  2. Файл, будучи перемещенный в другое место, оставляет после себя (на новом месте) «временно занятое место», дополняющее его по размеру до кратности 16 кластерам.
  3. При попытке как-то неправильно (»не кратно 16») переместить файл результат часто непредсказуем. Что-то округляется, что-то просто не перемещается… Тем не менее, всё место действия щедро рассыпается «временно занятым местом».

«Временно занятое место» служит для облегчения восстановления системы в случае аппаратного сбоя и освобождается через некоторое время, обычно где-то пол минуты.

Тем не менее, логично было бы использовать это API, раз он есть. Его и используют. Поэтому процесс стандартной дефрагментации, с поправками на ограниченность API, состоит из следующих фаз (не обязательно в этом порядке):

  • Вынимание файлов из MFT зоны. Не специально - просто обратно туда их положить не представляется возможным:) Безобидная фаза, и даже в чем то полезная.
  • Дефрагментация файлов. Безусловно, полезный процесс, несколько, правда, осложняемый ограничениями кратности перемещений - файлы часто приходится перекладывать сильнее, чем это было бы логично сделать по уму.
  • Дефрагментация MFT, виртуалки (pagefile.sys) и каталогов. Возможна через API только в Windows2000, иначе - при перезагрузке, отдельным процессом, как в старом Diskeeper-е.
  • Складывание файлов ближе к началу - так называемая дефрагментация свободного места. Вот это - воистину страшный процесс.

Допустим, мы хотим положить файлы подряд в начало диска. Кладем один файл. Он оставляет хвост занятости дополнения до кратности 16. Кладем следующий - после хвоста, естественно. Через некоторое время, по освобождению хвоста, имеем дырку Таким образом, имеется два примерно равнозначных варианта. Первый - часто оптимизировать диск таким дефрагментатором, смиряясь при этом с дикой фрагментацией заново созданных файлов. Второй вариант - вообще ничего не трогать, и смириться с равномерной, но гораздо более слабой фрагментацией всех файлов на диске.

Пока есть всего один дефрагментатор, который игнорирует API дефрагментации и работает как-то более напрямую - Norton Speeddisk 5.0 для NT. Когда его пытаются сравнить со всеми остальными - Diskeeper, O&O defrag, т. д. - не упоминают этого главного, самого принципиального, отличия. Просто потому, что эта проблема тщательно скрывается, по крайней мере уж точно не афишируется на каждом шагу. Speeddisk - единственная на сегодняшний день программа, которая может оптимизировать диск полностью, не создавая маленьких незаполненных фрагментов свободного места. Стоит добавить также, что при помощи стандартного API невозможно дефрагментировать тома NTFS с кластером более 4 Кбайт, а SpeedDisk и это может.

К сожалению, в Windows 2000 поместили дефрагментатор, который работает через API, и, соответственно, плодит дырки Как некоторый вывод из всего этого: все остальные дефрагментаторы при одноразовом применении просто вредны. Если вы запускали его хоть раз - нужно запускать его потом хотя бы раз в месяц, чтобы избавится от фрагментации новоприбывающих файлов. В этом основная суть сложности дефрагментации NTFS теми средствами, которые сложились исторически.Часть 3. Что выбрать?

Любая из представленных ныне файловых систем уходит своими корнями в глубокое прошлое - еще к 80-м годам. Да, NTFS, как это не странно - очень старая система! Дело в том, что долгое время персональные компьютеры пользовались лишь операционной системой DOS, которой и обязана своим появлением FAT. Но параллельно разрабатывались и тихо существовали системы, нацеленные на будущее. Две таких системы, получившие всё же широкое признание - NTFS, созданная для операционной системы Windows NT 3.1 еще в незапамятные времена, и HPFS - верная спутница OS/2.

Внедрение новых систем шло трудно - еще в 95м году, с выходом Windows95, ни у кого не было и мыслей о том, что что-то нужно менять - FAT получил второе дыхание посредством налепленной сверху заплатки «длинные имена», реализация которых там хоть и близка к идеально возможной без изменения системы, но всё же довольно бестолкова. Но в последующие годы необходимость перемен назрела окончательно, поскольку естественные ограничения FAT стали давать о себе знать. FAT32, появившаяся в Windows 95 OSR2, просто сдвинула рамки - не изменив сути системы, которая просто не дает возможности организовать эффективную работу с большим количеством данных.

HPFS (High Performance File System), активно применяемая до сих пор пользователями OS/2, показала себя достаточно удачной системой, но и она имела существенные недостатки - полное отсутствие средств автоматической восстанавливаемости, излишнюю сложность организации данных и невысокую гибкость.

NTFS же долго не могла завоевать персональные компьютеры из-за того, что для организации эффективной работы с её структурами данных требовались значительные объемы памяти. Системы с 4 или 8 Мбайт (стандарт 95-96 годов) были просто неспособны получить хоть какой-либо плюс от NTFS, поэтому за ней закрепилась не очень правильная репутация медленной и громоздкой системы. На самом деле это не соответствует действительности - современные компьютерные системы с памятью более 64 Мб получают просто огромный прирост производительности от использования NTFS.

В данной таблице сведены воедино все существенные плюсы и минусы распространенных в наше время систем, таких как FAT32, FAT и NTFS. Вряд ли разумно обсуждать другие системы, так как в настоящее время 97% пользователей делают выбор между Windows98, Windows NT4.0 и Windows 2000 (NT5.0), а других вариантов там просто нет.

Системы, её поддерживающие DOS, Windows9Х, NT всех версий Windows98, NT5 NT4, NT5
Максимальный размер тома 2 Гбайт практически неограничен практически неограничен
Макс. число файлов на томе примерно 65 тысяч практически не ограничено практически не ограничено
Имя файла с поддержкой длинных имен - 255 символов, системный набор символов 255 символов, любые символы любых алфавитов (65 тысяч разных начертаний)
Возможные атрибуты файла Базовый набор Базовый набор всё, что придет в голову производителям программного обеспечения
Безопасность нет нет да (начиная с NT5.0 встроена возможность физически шифровать данные)
Сжатие нет нет да
Устойчивость к сбоям средняя (система слишком проста и поэтому ломаться особо нечему:)) плохая (средства оптимизации по скорости привели к появлению слабых по надежности мест) полная - автоматическое восстановление системы при любых сбоях (не считая физические ошибки записи, когда пишется одно, а на самом деле записывается другое)
Экономичность минимальная (огромные размеры кластеров на больших дисках) улучшена за счет уменьшения размеров кластеров максимальна. Очень эффективная и разнообразная система хранения данных
Быстродействие высокое для малого числа файлов, но быстро уменьшается с появлением большого количества файлов в каталогах. результат - для слабо заполненных дисков - максимальное, для заполненных - плохое полностью аналогично FAT, но на дисках большого размера (десятки гигабайт) начинаются серьезные проблемы с общей организацией данных система не очень эффективна для малых и простых разделов (до 1 Гбайт), но работа с огромными массивами данных и внушительными каталогами организована как нельзя более эффективно и очень сильно превосходит по скорости другие системы

Хотелось бы сказать, что если ваша операционная система - NT (Windows 2000), то использовать какую-либо файловую систему, отличную от NTFS - значит существенно ограничивать свое удобство и гибкость работы самой операционной системы. NT, а особенно Windows 2000, составляет с NTFS как бы две части единого целого - множество полезных возможностей NT напрямую завязано на физическую и логическую структуру файловой системы, и использовать там FAT или FAT32 имеет смысл лишь для совместимости - если у вас стоит задача читать эти диски из каких-либо других систем.

Хотелось бы выразить искреннюю признательность Андрею Шабалину , без которого эта статья просто не была бы написана, а даже будучи написанной, содержала бы много досадных неточностей

NTFS, FAT или exFAT это совершенно разные файловые системы, которые могут использоваться для хранения данных на различных носителях. Обе созданы в компании Microsoft и в основном используются для Windows, но поддержка в ядре Linux для них тоже есть.

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

Файловая система устанавливает основные правила того как будут организованны данные при записи на носитель, независимо от того, что это - жесткий диск или флеш накопитель. Файловая система описывает каким образом будут организованы папки.

Определенная часть данных под названием файл размещается в нужной области накопителя. Файловая система выполняет все необходимые вычисления, а также определяет минимальный неделимый размер блока данных, максимальный размер файла, следит за фрагментацией. Существует множество различных типов файловых систем, это, например, файловые системы для установки ОС, для внешних носителей, для оптических дисков, распределенные файловые системы. Но в этой статье мы только выполним сравнение fat и ntfs.

Что такое файловая система FAT?

Файловые системы fat32 и ntfs очень сильно отличаются. FAT расшифровывается как File Allocation Table. Это очень давняя файловая система в истории вычислительных систем. Ее история началась в 1977 году. Тогда была разработана 8 битная файловая система, которая использовалась в NCR 7200 на основе Intel 8080. Это был терминал ввода, который работал с гибкими дисками. Файловая система была написана сотрудником Microsoft, Марком Макдональдом после обсуждения ее концепции с Билом Гейтсом.

Затем файловая система FAT начала использоваться в операционной системе MDOS для платформы Z80. Спустя несколько лет были выпущены новые версии, такие как FAT12, FAT16 и FAT32.

FAT32 увеличила максимальный размер тома до 16 Тб, по сравнению с FAT16. Также был увеличен размер файла до 4 Гб. File Allocation Table 32 бит вышла в августе 1995 года для Windows 95. Но эта файловая система все еще не может использоваться для установки тяжелых приложений или хранения больших файлов. Поэтому Microsoft разработала новую файловую систему - NTFS, которая лишена таких недостатков.

FAT32 - это отличная файловая система для внешних носителей, если вам нужно передавать файлы размером не более чем 4 Гб. Она поддерживается множеством различных устройств, таких как фотоаппараты, камеры, музыкальные плееры. Все версии Windows и дистрибутивы Linux полностью поддерживают FAT32. Даже Apple MacOS ее поддерживает.

Что такое файловая система NTFS?

Для своих новых систем Microsoft разработала новую файловую систему - New Technology File System или NTFS. Она появилась в 1993 году, в Windows NT 3.1. NTFS сняла многие ограничения на размеры файлов и диска. Ее разработка началась еще в далеком 1980 году, в результате объединения Microsoft и IBM для создания новой файловой системы с улучшенной производительностью.

Но сотрудничество компаний продлилось недолго, и IBM выпустила HPFS, которая использовалась в OS/2, а в Microsoft создали NTFS 1.0. Максимальный размер одного файла в NTFS может достигать 16 экзабайт, а это значит, что в ней поместятся даже самые большие файлы.

NTFS 3.1 была выпущена для Windows XP и получила множество интересных улучшений, таких как поддержку уменьшения размера разделов, автоматическое восстановление и символические ссылки, а максимальный размер диска с файловой системой увеличен до 256 ТБ. Это несмотря на максимальный размер файла в 16 Эб.

Из других интересных функций, которые были добавлены позже можно отметить отложенную запись на диск, поддержка дефрагментации, настройка дисковых квот, отслеживание ссылок и шифрование на уровне файлов. При всем этом, NTFS сохраняет совместимость с прежними версиями.

Сейчас это журналируемая файловая система, все действия с файлами заносятся в специальный журнал, с помощью которого файловая система может быть очень быстро восстановлена при повреждениях. NTFS поддерживается в Windows XP и более поздних версиях. Если сравнивать fat или ntfs, то последняя в Linux поддерживается не полностью, возможна запись и восстановление при повреждениях, а в MacOS поддерживается только чтение.

Что такое файловая система exFAT?

Файловая система exFAT - это еще один проект Microsoft по улучшению старой файловой системы. Ее можно исполосовать там, где не подходит FAT32. Она намного легче за NTFS, но поддерживает файлы размером более 4 Гб, и тоже часто применяется на флешках и накопителях. При ее разработке Microsoft использовала свою технологию поиска имен файлов по хэшу, что очень сильно улучшает производительность.

Большинство стран признают патентное право США, поэтому любая реализация exFAT невозможна в любых системах с закрытым или открытым исходным кодом. Но Microsoft хочет чтобы эта файловая система свободно распространялась и использовалась. Поэтому была разработана версия exFAT на основе FUSE под названием fuse-exfat. Она дает полный доступ на чтение и запись. Также была создана реализация на уровне ядра Linux в Samsung, которая сейчас тоже есть в открытом доступе.

Эта файловая система тоже имеет максимальное ограничение на размер файла 16 ЭБ, но она намного легче и не имеет никаких дополнительных возможностей. Если говорить про совместимость, то она полностью поддерживается в Windows, MacOS, Android и Linux.

Различия FAT и Ntfs

А теперь рассмотрим основные различия FAT и NTFS в виде краткого резюме по каждой из файловых систем:

FAT32

  • Совместимость: Windows, Mac, Linux, игровые консоли, практически все устройства, имеющие USB порт;
  • Плюсы: кроссплатформенность, легкость;
  • Минусы: максимальный размер файла 4 ГБ и раздела 16 ГБ, не журналируемая;
  • Использование: внешние носители.

NTFS

  • Совместимость: Windows, Linux, Xbox One, и только чтение в Mac;
  • Плюсы: журналируемая, большие лимиты на размер раздела и файла, шифрование, автоматическое восстановление;
  • Минусы: ограниченная кроссплатформенность;
  • Использование: для установки Windows.

exFAT

  • Совместимость: Windows XP и выше, MacOS X 10.6.5, Linux (fuse), Android;
  • Плюсы: большой лимит на размер раздела и файла, легкая по сравнению с NTFS;
  • Минусы: Microsoft ограничивает ее использование лицензионным соглашением;
  • Использование: для внешних носителей и внешних жестких дисков.

Выводы

В этой статье мы выполнили сравнение fat и ntfs. Это очень разные файловые системы. Но понять какая файловая система лучше fat или ntfs сложно, с одной стороны NTFS имеет намного больше возможностей, но зато FAT более легкая и поддерживается везде, где это возможно. Для разделов данных в Linux, которые должны быть доступны в Windows лучше использовать FAT, а не NTFS, поскольку она поддерживается лучше. А по-вашему что лучше fat или ntfs для Linux?

Windows поддерживает несколько файловых систем для различных внешних устройств:
  • NTFS – основная файловая система семейства Windows NT;
  • FAT (File Allocation Table – таблица размещения файлов) – простая файловая система используемая Windows для устройств флеш памяти, а также для совместимости с другими операционными системами при установке на диски с множественной загрузкой. Основным элементом этой файловой системы является таблица размещения файлов FAT (по имени которой названа вся файловая система), необходимая для определения расположения файла на диске. Существует три варианта FAT, отличающихся разрядностью идентификаторов, указывающих размещение файлов: FAT12, FAT16 и FAT32;
  • exFAT (Extended FAT – расширенная FAT) – развитие файловой системы FAT, использующее 64 разрядные идентификаторы. Применяется в основном для устройств флеш-памяти;
  • CDFS (CD ROM File System) – файловая система для CD дисков, объединяющая форматы ISO 9660 1ISO 9660 – стандарт ISO (International Organization for Standardization – Международная организация по стандартизации) для файловых систем CD дисков и Joliet 2Joliet – расширение стандарта ISO 9660, разработанное Microsoft. Снимает жесткие ограничения на именование файлов ;
  • UDF (Universal Disk Format – универсальный формат дисков) – файловая система для CD и DVD дисков, разработанная для замены ISO 9660.

Для дальнейшего изложения необходимо знать следующие важные понятия: диск , раздел, простые и составные тома, сектор, кластер .

Диск ( disk ) – устройство внешней памяти , например, жесткий диск или оптический диск (CD, DVD , Blu ray).

Раздел ( partition ) – непрерывная часть жесткого диска. Диск может содержать несколько разделов.

Том ( volume ) или логический диск (logical disk ) – область внешней памяти, с которой операционная система работает как с единым целым. Тома бывают простые и составные.

Простой том (simple volume ) – том, состоящий из одного раздела.

Составной том (multipartition volume ) – том, состоящий из нескольких разделов (необязательно на одном диске).

Понятия раздела и простого тома отличаются: во первых, разделы формируются, в основном, только на жестких дисках, а тома создаются и на других устройствах внешней памяти (например на оптических дисках и устройствах флеш памяти), во вторых, понятие "раздел" связано с физическим устройством, а понятие "том" – с логическим представлением внешней памяти.

Сектор ( sector ) – блок данных фиксированного размера на диске; наименьшая единица информации для диска. Типичный размер сектора для жестких дисков равен 512 байтам, для оптических дисков – 2048 байт . Деление диска на секторы происходит один раз при создании диска в процессе низкоуровневого форматирования и обычно не может быть изменено.

Кластер ( cluster ) – логический блок данных на диске, включающий один или несколько секторов. Количество секторов, составляющих кластер , обычно кратно степеням двойки. Размер кластера задается операционной системой в процессе высокоуровневого форматирования, которое может осуществляться многократно.

При записи на диск файл всегда будет занимать целое число кластеров. Например, файл размером 100 байт в файловой системе с размером кластера 4 КБ будет занимать ровно 4 КБ.

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

Возможности NTFS

Файловая система NTFS ( New Technology File System ) разрабатывалась Microsoft в начале 1990 х гг. как основная файловая система для серверных версий операционных систем Windows . NTFS была представлена в 1993 году в операционной системе Windows NT 3.1.

В настоящее время NTFS рассматривается в качестве предпочтительной файловой системы как для серверных, так и для клиентских версий Windows .

В NTFS используются 64 разрядные идентификаторы кластеров, поэтому теоретически том NTFS может содержать 264 кластеров (16 ЭБ 32 10 байт = 1 килобайт (КБ), 2 20 байт = 1 мегабайт (МБ), 2 30 байт = 1 гигабайт (ГБ), 2 40 байт = 1 терабайт (ТБ), 2 50 байт = 1 петабайт (ПБ), 2 60 байт = 1 экзабайт (ЭБ), 2 70 байт = 1 зеттабайт (ЗБ). ). Однако текущие реализации в Windows поддерживают только 32 разрядную адресацию кластеров, что при размере кластера максимум 64 КБ (216 байт ) позволяет NTFS тому достигать размера до 256 ТБ:

2 32 * 2 16 байт = 2 48 байт = 2 8 * 2 40 байт = 256 ТБ.

Для томов, больших 4 ГБ, при форматировании Windows предлагает размер кластера по умолчанию 4 КБ.

Перечислим некоторые возможности NTFS [ , стр. 761]:

  • восстанавливаемость (recoverability) – способность файловой системы возвращаться к работоспособному состоянию после возникновения сбоя. Реализуется такая возможность, во первых, за счет поддержки атомарных транзакций, во вторых, за счет избыточности хранения информации. Атомарная транзакция (atomic transaction) – операция с файловой системой, приводящая к её изменению, которая либо полностью успешно выполняется, либо не выполняется вообще (т. е. в случае сбоя во время атомарной транзакции все изменения откатываются). Избыточность используется при хранении важнейших данных файловой системы, критически необходимых для её корректной работы;
  • безопасность (security) – защищенность файлов от несанкционированного доступа. Реализуется при помощи модели безопасности Windows, рассмотренной в лекции 9 "Безопасность в Windows";
  • шифрование (encryption) – преобразование файла в зашифрованный код, который невозможно прочесть без ключа. Обычные механизмы безопасности, такие как назначение прав доступа пользователей к файлам, не обеспечивают полной защиты информации, например, в случае перемещения диска на другой компьютер. Администратор операционной системы всегда может получить доступ к файлам других пользователей, даже на томе NTFS. Поэтому в NTFS включена поддержка шифрующей файловой системы EFS (Encrypting File System), которая позволяет легко зашифровывать и расшифровывать файлы;
  • поддержка RAID (Redundant Array of Inexpensive (Independent) Disks – массив недорогих (независимых) дисков с избыточностью) – возможность использования для хранения информации нескольких дисков; данные с одного диска автоматически копируются на другие, обеспечивая тем самым повышенную надежность;
  • дисковые квоты для пользователей (Per-User Volume Quotas) – возможность выделения для каждого пользователя определенного пространства на диске (квоты); NTFS не позволяет пользователю записывать данные на диск сверх выделенной квоты.

Структура NTFS

Структура тома NTFS представлена на рис.17.1 .


Рис. 17.1.

В начале тома находится загрузочная запись тома ( Volume Boot Record ), в которой содержится код загрузки Windows , информация о томе (в частности, тип файловой системы), адреса системных файлов ($ Mft и $MftMirr – см. далее). Загрузочная запись занимает обычно 8 КБ (16 первых секторов).

В определенной области тома ( адрес начала этой области указывается в загрузочной записи) расположена основная системная структура NTFS – главная таблица файлов (Master File Table , MFT ). В записях этой таблицы содержится вся информация о расположении файлов на томе, а небольшие файлы хранятся прямо в записях MFT .

Важной особенностью NTFS является то, что вся информация , как пользовательская, так и системная, хранится в виде файлов. Имена системных файлов начинаются со знака "$". Например, загрузочная запись тома содержится в файле $ Boot , а главная таблица файлов – в файле $ Mft . Такая организация информации позволяет единообразно работать как с пользовательскими, так и с системными данными на томе.

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

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

Для того, чтобы на физическом носителе можно было сохранить информацию, его нужно подготовить для использования в компьютерной операционной системе. Операционная система для сохранения информации выделяет свободную область диска. Для этого необходимо поделить диск на малые контейнеры – сектора. Форматирование диска на низком уровне выделяет для каждого сектора определенный размер. Операционная система группирует эти сектора в кластеры. Форматирование на высшем уровне задает всем кластерам одинаковый размер, обычно в интервале от 2 до 16 секторов. В дальнейшем на каждый файл выделяется по одному или несколько кластеров. Размер кластера зависит от операционной системы, ёмкости диска, а также требуемой скорости работы.

Помимо области для хранения файлов на диске имеются области, необходимые для работы операционной системы. Эти области предназначены для хранения загрузочной информации и информации для сопоставления адресов файлов с физическим положением на диске. Загрузочная область используется для запуска операционной системы. После загрузки BIOS происходит считывание и выполнение загрузочной области диска для запуска операционной системы.

Файловая система FAT

Файловая система FAT появилась вместе с операционной системой Microsoft DOS, после чего была несколько раз усовершенствована. У нее есть версии FAT12, FAT16 и FAT32. Само название FAT происходит от использования файловой системой своеобразной базы данных в виде «таблицы размещения файлов» (File Allocation Table), которая содержит запись для каждого кластера на диске. Номера версий ссылаются на количество бит, используемых в номерах элементов в таблице. Таким образом файловая система имеет ограничение на поддерживаемый размер диска. В 1987 году она не поддерживала диске размером свыше 32 Мб. С появлением Windows 95 вышла новая версия файловой системы FAT32 с теоретической поддержкой дисков емкостью до 2 ТБ. Постоянные проблемы с поддержкой дисков больших размеров появляются из-за фиксированного количества элементов, ограниченного количеством бит, используемых в определении положения кластера. Например, версия FAT16 не поддерживает более 2 16 или 65536 кластеров. Количество секторов в кластере тоже ограничено.

Еще одна проблема с большими дисками заключалась в невозможности использования огромного пространства, выделенного для мелких файлов. Из-за того, что количество кластеров ограничено, увеличивался их размер, чтобы можно было охватить всю емкость диска. Это приводит к неэффективному использованию пространства при хранении большинства файлов, размер которых не кратен размеру кластера. Например, FAT32 выделяет кластеры размером 16 Кб для разделов диска в интервале от 16 до 32 ГБ. Для хранения файла размером 20 Кб потребуется два кластера размером 16 Кб, которые займут на диске 32 Кб. Файлы размером 1 Кб занимают 16 Кб на диске. Таким образом в среднем 30-40% размера емкости диска пропадает для хранения мелких файлов. Разбиение диска на мелкие разделы позволяет уменьшить размер кластера, но для дисков емкостью более 200 Гб на практике не применяется.

Фрагментация файлов тоже не малая проблема файловой системы. Поскольку для размещения файла может потребоваться несколько кластеров, которые могут и не быть физически расположены последовательно друг за другом, время, которое требуется на считывание замедляет работу программ. Поэтому постоянно возникает необходимость в .

Файловая система NTFS

В начале 90-х Microsoft начала разработку совершенно нового ПО, предназначенного для окружения с большим потреблением ресурсов, чем обычные домашние пользователи. Для потребностей бизнеса и индустрии ресурсов, предоставляемых операционными системами Windows основанных на DOS, стало недостаточно. Корпорация Microsoft совместно с IBM работали над операционной системой OS/2 с файловой системой HPFS (High Performance File System – файловая система высокой эффективности). Корпоративная разработка не принесла успеха и в скором времени каждая компания вновь пошла своим путем. Microsoft разработала различные версии операционной системы Windows NT, на основе которых построены Windows 2000 и Windows XP. В каждой из них используется собственная версия файловой системы NTFS, которая продолжает развитие.

NTFS (New Technology File System – «файловая система новой технологии») является стандартной файловой системой для операционных систем на основе Windows NT. Она была разработана для замены FAT. NTFS наиболее гибкая по сравнению с FAT. В ее системных областях хранятся в основном файлы, а не фиксированные структуры как в FAT, что позволяет их изменять, расширять или перемещать в процессе использования. Простым примером является Master File Table (MFT) – «главная таблица файлов». MFT - это своеобразная база данных с различной информацией о файлах на диске. Файлы малого размера (1 Кб и менее) могут хранится непосредственно в MFT. Для больших файлов NTFS выделяет кластеры, но в отличие от FAT размер кластера обычно не превышает 4 Кб, а встроенный метод сжатия избавляет от проблем с неиспользованным местом, выделенным под файлы. А ещё в NTFS можно использовать .

Файловая система NTFS разработана для многопользовательского окружения и имеет встроенные механизмы защиты и разграничения прав доступа. Например, операционные системы Windows 2000 и Windows XP (кроме «Домашней редакции») позволяют устанавливать разрешения доступа к отдельным файлам и шифровать их. Однако высокий уровень безопасности усложняет работу обычных пользователей с компьютером. Необходимо быть предельно осторожным при установке паролей и разрешений на файлы, чтобы не потерять важные данные.