Что такое файловая система и как узнать тип файловой системы на диске. Структура файловой системы

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

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

Старая файловая система FAT16 распознается всеми ОС, начиная с MS-DOS, она поддерживается Windows , Windows NT, OS/2 и Unix, но она очень неэффективна, много места на диске тратится впустую. FAT32 может вызвать проблемы при установке на ПК нескольких ОС. В приведенной ниже таблице показаны возможности ОС для поддержки различных файловых систем.

Файловая система FAT разработана для небольших дисков и простых структур каталогов. Основа ее организации – таблица FAT (File Allocation Table – таблица размещения файлов). Эта система эффективна только на логических дисках, размер которых не превышает 256 Мб. Место на диске при размещении данных с использованием FAT может выделяться только целыми кластерами , поэтому дисковое пространство может расходоваться впустую, если размещаемый файл не заполняет последний выделенный ему кластер целиком (например, если размер кластера равен 32 Кб, то при размещении на диске файла размером в 10 Кб не будет использоваться 22 Кб выделенной этому файлу дисковой памяти).

При сбоях (например, при внезапном отключении питания) информация о размещении цепочки кластеров, занятых файлом, может быть утеряна. Информация, находящаяся в таблице FAT, может быть испорчена. Это может привести к появлению на диске «мусора» – недоступных для использования кластеров.

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

Общее ограничение размера диска при использовании FAT– 2 Гб. При использовании FAT ограничен размер корневого каталога (512 файлов или папок, а при использовании длинных имен – еще меньше).

Таблица FAT хранится в начале диска. Для повышения надежности работы создается ее копия.



Файловая система FAT32 обеспечивает преимущества по сравнению с реализацией FAT: поддерживаются диски размером до 2 Тб; более эффективно используется дисковое пространство (используются кластеры размером в 4, 8, 16 и 32 Кб); снимается ограничение на размер корневого каталога (он хранится, как и все остальные папки и файлы, в виде цепочки кластеров); обеспечивается большая надежность и более быстрая загрузка программ.

Основной целью при реализации файловой системы NTFS (NT File System) было обеспечение сочетания высокой производительности, надежности и эффективности. В этой системе реализовано скоростное выполнение стандартных операций над файлами (поиск, чтение, запись). NTFS поддерживает контроль доступа к данным и привилегии владельцев. В этой системе можно назначить права (полномочия) на доступ к устройствам, папкам и отдельным файлам.

Файловая система NTFS обладает следующими дополнительными возможностями: ведение журнала дисковой активности (журнала транзакций) позволяет быстро выполнять восстановление дисков после сбоев (каждая операция ввода-вывода, изменяющая файл, рассматривается как транзакция, т.е. неделимая операция, которая полностью должна быть завершена, а в случае сбоя система выполняет откат на ее начало); гибкие опции форматирования обеспечивают более эффективное использование дискового пространства; опции сжатия позволяют выполнять сжатие отдельных файлов и каталогов (при размерах кластера до 4 Кб); тома могут расширяться и использовать дисковое пространство, не выделенное другим разделам; чередующиеся тома дают возможность ускорить доступ к данным; зеркальные тома и тома RAID-5 обеспечивают отказоустойчивое хранение данных.

Файловая система NTFS 5 предоставляет новые возможности: Windows поддерживает распределенную файловую систему (DFS – Distributed File System), позволяющую объединить в единый логический том все сетевые ресурсы, и файловую систему с шифрованием (EFS – Encrypting File System), являющуюся надстройкой над NTFS, которая дополняет ее возможностями шифрования данных.

Файловая система. Диски

Компьютер, как правило, имеет несколько дисков. Каждому диску присваивается имя, которое задается латинской буквой с двоеточием, например, А:, В:, С: и т.д. Стандартно принято, что А: и В: – это накопители на гибких магнитных дисках, а диски С:, D: и т.д. – жесткие диски, накопители на оптических дисках или электронные диски.

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

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

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

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

Во время форматирования на диск записывается служебная информация (делается разметка), которая затем используется для записи и чтения информации, коррекции скорости вращения диска, а также выделяется системная область, которая состоит из трех частей:

загрузочного сектора,

таблицы размещения файлов,

корневого каталога.

Загрузочный сектор (Boot Record) размещается на каждом диске в логическом секторе с номером 0. Он содержит данные о формате диска, а также короткую программу, используемую в процедуре начальной загрузки операционной системы.

На жестком диске имеется область, которая называется главной загрузочной записью MBR (Master Boot Record) или главным загрузочным сектором. В MBR указывается, с какого логического диска должна производиться загрузка операционной системы.

Таблица размещения файлов (File Allocation Table – сокращенно FAT) располагается после загрузочного сектора и содержит описание порядка расположения всех файлов в секторах данного диска, а также информацию о дефектных участках диска. За FAT-таблицей следует ее точная копия, что повышает надежность сохранения этой очень важной таблицы.

Корневой каталог (Root Directory) всегда находится за копией FAT. В корневом каталоге содержится перечень файлов и директорий, находящихся на диске. Непосредственно за корневым каталогом располагаются данные.

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

Файл

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

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

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

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

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

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

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

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

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

Каждый файл обладает рядом характерных свойств – атрибутов. Важнейшими атрибутами файла являются:

название,

расширение,

время и дата создания.

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



последовательность букв латинского алфавита,

некоторых специальных знаков (~, _, -, $, &, @, %,",!,(>)> {>}. #).

Название может содержать от одного до восьми (1 … 8) символов и выбирается произвольным образом. Желательно подбирать названия файлам так, чтобы пользователь мог легко вспомнить, что именно хранится в этом файле. Например, файл, содержащий отчет за 4-й квартал, можно назвать otchet4, файл с ведомостью на зарплату – vedzarpl, а файл с каким-либо рисунком целесообразно назвать picture.

В операционной системе MS DOS название файла не может содержать

пробелов,

букв русского алфавита,

Кроме того, оно не может содержать более восьми символов. Вообще говоря, это достаточно существенные ограничения. Например, файл, содержащий отчет предприятия за 4-й квартал, который мы назвали otchet4, желательно было бы назвать «Отчет за 4-й квартал», в крайнем случае «Otchet za 4 kvartal», применив так называемую транслитерацию, когда слова одного языка записываются буквами другого. В операционных системах Unix и Windows 9.x сняты ограничения на длину названия, использование пробелов и точек в названии. А в операционной системе Windows 9.x, кроме того, в названии можно использовать русские буквы. Таким образом, файл в Unix может иметь название «Otchet za 4 kvartal», а в Windows 9.x допускается и название «Отчет за 4-й квартал».

Кроме названия каждый файл может иметьили не иметь расширение. Расширение используется для того, чтобы определенным образом охарактеризовать содержимое файла. Например, расширения doc и txt указывают на то, что файл содержит какой-либо документ или текст, а расширение bmp имеет файл, содержащий изображение в формате битовой карты. Расширение, если оно есть, отделяется от названия файла точкой. В операционной системе MS DOS расширение может содержать от одного до трех символов, например, otchet4.doc, vedzarpl.txt, picture.bmp, а в системах Unix и Windows 9.x допускается более трех символов. Если расширения нет, то точка в названии файла не ставится.

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

Таблица 3.1

Некоторые расширения MS DOS и Windows 9.x

Файлы с расширением.сом (common – общий) и.exe (execute – выполнение) содержат программы на машинном языке. Эти файлы часто называют программными файлами. Различия между com-файлами и ехе-файлами касаются их внутренней организации. На способах обращения с файлами эти различия никак не сказываются. Файлы с расширением.bat (batch – пачка) содержат произвольные последовательности команд операционной системы. Такие файлыпринято называть командными файлами. Термин « выполняемый файл» объединяет понятия «программный файл» и «командный файл». Другими словами, «выполняемый файл» означает, что файл содержит либо программу на машинном языке, которая может быть непосредственно выполнена процессором компьютера (файлы с расширениями.ехе и.com), либо последовательность команд операционной системы (файл с расширением.bat), которые тоже выполняются, но только путем обращения к соответствующим программам и средствам операционной системы.

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

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

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

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

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

Символ *, встретившийся в групповом имени, трактуется операционной системой как «любая последовательность любых символов названия». Так, групповому имени а* соответствуют любые названия, начинающиеся с буквы «а»: а1, azbuka, a2z4.

Символ? воспринимается ОС как любой одиночный символ, то есть ему соответствует ровно один произвольный символ имени. Например, шаблону otchet?.doc соответствуют любые имена с расширением.doc, в названии которых за отрезком названия otchet следует ровно один символ, например otchet1.doc, otchet4.doc, otchet%.doc, otchet#.doc и т. д.

Еще несколько примеров:

Txt – файлы с любыми двухбуквенными именами и расширением.txt;

*.bak – файлы с любыми именами и расширением.bak;

prog1.* – файлы с названием progl и любым расширением;

*.* – файлы с любыми названиями и любыми расширениями.

Каталоги

Чтобы прочитать содержимое файла, необходимо знать его местоположение на дисковом устройстве. Каждый файл занимает на диске определенную группу секторов. Следовательно, местоположение файла можно задавать, указывая номера секторов и дорожек, занятых файлом. Однако такой способ указания местоположения файла очень неудобен, так как в этом случае пользователю необходимо знать номера всех секторов диска, которые отведены под файл. Для повышения эффективности обмена данными несколько подряд расположенных секторов объединяются в кластер , и обмен осуществляют сразу всей группой секторов (см. рис. 2.7). Такая схема организации обмена существенно увеличивает скоростьисполнения операций обмена данными с жесткими дисками. Чтобы не задавать три отдельных числа (номер рабочей поверхности, номер дорожки и номер сектора) в качестве адреса сектора, с которого начинается кластер, для всех кластеров диска введена единая, сплошная нумерация. Для определения кластера, в котором начинается файл, достаточно указывать только одно число – порядковый номер кластера на диске.

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

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

Аналогия между каталогом и оглавлением в книге только частичнаяиз-за того, что кластерывыделяются файлу на диске не сплошным массивом, а в разброс, в то время как в книге все страницы главы размещаются подряд. Представьте себе, одна из глав книги занимает страницы 5, 15, 16, 17, 31, 123, 124 вместо того, чтобы занимать страницы 5, 6, 7, 8, 9, 10, 11 подряд. Такое не сплошноевыделение кластеров файлам организовано для того, чтобы оптимизировать использование свободного пространства диска при многочисленных уничтожениях и записях файлов.

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

Для кластеров существует линейная адресация: все кластеры пронумерованы от 1 до 2n (здесь n – разрядность FAT). Для 16-разрядной FAT количество кластеров на диске составляет 216 = 65536. Не трудно вычислить, что для дисков емкостью 1 Гбайт кластер составляет 32 Кбайта.

Размер современных жестких дисков, как правило, превышает 1 Гбайт. При записи информации на такие диски значительная часть дискового пространства может тратиться впустую, поскольку, например, в случае 16-разрядной FAT файлы размером 31 Кбайт и менее 1 Кбайта занимают каждый одинаковое пространство на диске – 32 Кбайта. Неиспользованное пространство кластера называется «кластерным выступом». Потери на кластерные выступы тем больше, чем большее количество малых файлов записано на диске.

Самый естественный путь для повышения эффективности использования кластеров – это уменьшение их размеров. В настоящее время используется файловая система FAT32, в которой используется 232 кластера.

Рассмотренная выше простая структура каталога, в котором все файлы образуют один общий список, может обеспечить удовлетворительную работу операционной системы только в случае небольших объемов дискаи ограничивает общее число файлов, которые могут быть записаны на диск. Так, на гибких дисках объемом 1,44 Мбайт корневой каталог может содержать сведения не более чем о 224 файлах. А когда объем диска становится достаточно большим и, следовательно, на диске могут быть записаны сотни и тысячи файлов, простая структура каталога приводит к существенному замедлению процесса поиска файла на диске или переполнению каталога.

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

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

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

Все подкаталоги, находящиеся в корневом каталоге, относят к первому уровню. На рис. 3.3 подкаталогами первого уровня являются подкаталоги Windows, user1, Program files. Корневой каталог по отношению к включенным в него подкаталогам первого уровня называют родительским , а подкаталоги по отношению к корневому считаются дочерними или вложенными .

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

Рис. 3.3. Древовидная структура каталога

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

В операционных системах с графическим интерфейсом каталоги изображаются в виде папок. На рисунке показано дерево папок одного из дисков. Из рис. 3.4 видно, что в корневом каталоге имеется четыре папки: А, В, С и D. При этом внутри папки А находятся папки А1 и А2. В папке С располагаются папки С1 и С2. В папке А1 находится папка A11, а в последней – папка А111. Крестик на дереве говорит о том, что внутри соответствующих папок находятся другие папки (внутри папок D и А12 находятся папки, которые не видны). На этом рисунке не видны файлы, которые могут находиться как в корневом каталоге, так и в любой папке.

Рис. 3.4. Каталоги в виде папок

Путь к файлу

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

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

Цепочка названий подкаталогов, по которым нужно пройти, начиная от корневого каталога и заканчивая подкаталогом, содержащим файл, называется путем или маршрутом к файлу .

В операционных системах MS DOS и Windows корневой каталог в пути указывается символом \. Этим же символом отделяются друг от друга названия подкаталогов в цепочке, а также имя файла от названия подкаталога, в котором он находится. Этот символ называется back slash – обратный слэш.

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

Файл из подкаталога user1 имеет путь \user1:

\user1\picture.bmp.

А путь к файлам из подкаталога kontakti должен включать названия обоих подкаталогов - \user1\kontakti:

\user1\kontakti\ivanov.doc,

\user1\kontakti\postavki.txt

Пути могут указываться не только к файлам, но и подкаталогам. Так, для подкаталога kontakti путем является \user1.

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

ü название устройства,

ü путь к файлу,

ü имя файла.

<имя носителя>\<имя каталога-1>\...\<имя каталога-N>\<собственное имя файла>.

Если, например, каталог, структура которого приведена на рис. 3.3, находится на жестком диске С:, то полная спецификация файла postavki.txt имеет вид:

C:\user1\kontakti\postavki.txt

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

A:\user1\kontakti\postavki.txt

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

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

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

Что же такое раздел

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

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

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

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

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

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

Начну по порядку.

Правило № 1

Всего на одном жёстком диске может быть не более 4-х основных разделов , меньше можно, больше - нет. Эти требования не зависят от какой-либо операционной системы - они продиктованы современным уровнем развития электронной начинки компьютера. И преодолеть их пока не удастся. Если же разделов требуется более 4-х, то тут вступает в силу другое правило.

Я не напрасно упомянул об ОСНОВНЫХ разделах - это не просто слово, оно обозначает один из двух типов разделов. Кроме основного, раздел может быть ещё и дополнительным (расширенным - extended). И в связи с этим правило о 4-х разделах несколько трансформируется - на одном жёстком диске может находиться до 4-х основных разделов, или до 3-х основных разделов плюс один дополнительный (расширенный раздел на диске может быть только один).

Что это нам дает? Дело в том, что дополнительный (расширенный) раздел, по сути, представляет из себя контейнер, внутри которого можно создавать НЕОГРАНИЧЕННОЕ количество логических дисков. И для пользователя не будет совершенно никакой разницы между работой с основным разделом и работой с логическим диском. Таким образом, путём создания расширенного раздела и логических дисков внутри него мы может разделить винчестер под свои нужды так, как нам потребуется.

Учтите, что если вы удалите расширенный раздел, все логические диски, входящие в него тоже исчезнут.

Правило № 2

Один из разделов обязательно должен быть активным (в Linux - иметь флаг boot ). Именно на нём находятся загрузочные файлы, которые будут запускать операционную систему. Сама система может при этом находиться и в другом месте, но файлы, с которых начинается её запуск - только там.

Чаще всего активным становится первый раздел жёсткого диска (диск C :/ в Windows), но это не обязательное условие. Кроме того, всегда можно вручную переназначить активным любой другой основной раздел, но при этом не следует забывать переместить туда же загрузочные файлы, иначе операционная система не запустится.

Правило № 3

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

Файловые системы

Перед тем, как использовать раздел, его требуется отформатировать - создать на нём файловую систему (разметить особым образом).

Файловых систем сейчас существует довольно большое количество, и все имеют разные характеристики.

Операционные системы семейства Windows могут работать только с файловыми системами FAT, FAT32 и NTFS.

FAT является сильно устаревшей системой, и её применение сегодня вряд ли оправдано. FAT32 более современна, но имеет серьёзные ограничения. которые препятствуют её полноценному использованию. Например, максимальный размер файла, который поддерживает FAT32 - это около 4 ГБ. Именно поэтому, если Вы попытаетесь, например, скопировать образ полновесного ДВД-диска на флэшку (которые по дефолту форматируются в FAT32 ) Вы получите сообщение о нехватке свободного места, хотя на самом деле места там ещё полно. Из-за этого использование её на разделах, на которых происходит работа с видео, практически невозможна (и под раздел с торрентами её использовать проблематично ).

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

Для UNIX-ов, к которым относится и Linux, файловых систем существует гораздо больше. Каждая их них имеет свои достоинства и недостатки и более подходит под определённые задачи. По умолчанию в Linux используется ext4 , но можно использовать и любую другую. Информацию, какая из файловых систем Linux более всего подходит именно под Ваши задачи, Вы легко найдёте в Интернете.

Несколько слов о совместимости

Windows не понимает никаких других файловых систем, кроме своих собственных. Доступ из-под неё к разделам Linux возможен был только с помощью специальных программ или плагина к Total Commander. К сожалению, к самым современным файловым системам Linux плагин для Windows ещё не написан.

Linux же всегда прекрасно понимал FAT и FAT32, а в последние 2-3 года без проблем работает и с NTFS через специальный драйвер NTFS-3g , как на чтение, так и на запись. Плюс, поддерживает при этом бОльшую часть дополнительных возможностей NTFS. Так что из Linux Вы всегда будете иметь полноценный доступ к Windows разделам.

Следует упомянуть о различной бытовой технике - DVD-проигрывателях, спутниковых ресиверах и т.д. Вся эта техника может работать только с FAT и FAT32. NTFS, а тем более файловые системы UNIX-ов (за крайне редким исключением ) ей совершенно непонятны. Об этом следует помнить, если Вы обмениваетесь данными между подобной техникой и компьютером.

Инструменты для работы

Несколько слов об инструментарии для работы с разделами.

Начну с Windows. В её состав входит штатный инструмент Управление дисками . Добраться до него можно через Панель управления , либо щёлкнув правой кнопкой мыши на значке Мой компьтер => Управление и выбрав в левой колонке Управление дисками .

Обратите внимание, три раздела на скриншоте помечены как неизвестные разделы. Это разделы с Linux - Windows их видит, но ни определить, ни тем более работать с ними она не может.

Также в Управлении дисками достаточно чётко можно увидеть основные и дополнительный разделы, а также активный раздел (помечен как Система - на нём находятся загрузочные файлы; сама ОСь установлена в разделе, помеченном как - т.е. Windows меняет метки местами ). Из всех возможностей этот инструмент предоставляет только создание и удаление разделов, а также переназначение активного раздела и смену буквы дисков (в Vista и Windows 7 функционал незначительно увеличился ). Если ничего другого под руками не оказалось, то порой и этого бывает достаточно.

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

Поэтому я советую использовать его только в крайних случаях.

Гораздо бОльшими возможностями, удобством и безопасностью обладают различные программы из когорты Partition Magic -ов, например, . Таких программ имеется достаточно большое количество, все они разные и в последние годы многие из них поменяли владельцев-разработчиков и своё название. Поэтому, если Вы решили подобрать себе что-либо из них, Вам придётся озаботиться самостоятельным поиском на широких просторах Интернета. Это несложно, тем более, что лидеров в этой области можно по пальцам перечесть.

Acronis Disk Director Suite

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

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

Все операции, которые Вы проводите над разделами, моментально отображаются в графическом виде, чтобы всё можно было оценить визуально. Но сами действия при этом не производятся - лишь только после того, как Вы сами всё оцените, и результат целиком и полностью Вас удовлетворит, можно нажать кнопку "Применить ". До этого момента можно пошагово отменить все действия.

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

Кроме того, при запуске Acronis Disk Director Suite предлагает на выбор два режима работы - автоматический, в котором все операции можно проводить с помощью "мастеров", и ручной режим, в котором вся полнота власти отдаётся на откуп пользователю. Второй режим, имхо, удобнее и гибче, но новички могут воспользоваться и автоматическим.

Также в программе присутствует полноценная и весьма подробная справка.

Следует упомянуть ещё об одной возможности - из окна программы можно создать и записать специальный загрузочный диск, который будет содержать файлы Acronis Disk Director Suite . Штука эта очень удобная и крайне полезная в хозяйстве - ведь имея этот диск, полностью отпадает надобность в установке самой программы и даже в наличии операционной системы. С этого диска можно загрузить компьютер и выполнить любые операции с разделами.

Теперь о неприятном. Заключается оно в том, что программа сравнительно редко обновляется, поэтому иногда возникают ситуации, когда с самыми современными жёсткими дисками она работать не может. Это в большей степени касается её варианта на загрузочном диске, т.к. если Acronis Disk Director Suite установить в операционную систему, то для работы с диском она будет использовать драйвера из комплекта Windows. Также у неё есть некоторые проблемы с файловыми системами Unix - самые современные файловые системы она не понимает (это можно заметить на представленном скриншоте ), хотя со старыми классическими работает "на ура".

На днях вышла новая версия Acronis Disk Director Suite для англоязычных пользователей (новой русской версии пока нет), которая уже без всяких проблемм работает с самыми новыми жёсткими дисками. А вот проблемы с современными файловыми системами Unix в ней пока ещё не решены.

GParted

Ещё один мощный и универсальный инструмент для работы с жёстким диском - это программа GParted из комплекта Linux.

Её можно найти практически на всех Live-CD с Linux.

Рассказ о возможностях программы можно уместить в одной фразе: "Может почти всё". Интерфейс прост и непритязателен, а работа абсолютно прозрачна и понятна. Все Ваши действия также сначала отображаются визуально, а выполняются лишь после нажатия специальной кнопки, когда Вы решите, что Вас всё устраивает.

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

Если у Вас несколько жёстких дисков, в окне программы единовременно будет показан только один. Для работы с другими воспользуйтесь раскрывающимся списком на панели (справа), в котором перечислены все подключенные винчестеры.

GParted не может работать с разделами, которые в этот момент примонтированы (напротив такого раздела будет стоять предупреждающий значок). Для выполнения любых действий с такими разделами их сначала придётся отмонтировать.

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

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

Аналогичная ситуация и при установке Linux. Хотя там всё определяется верно, но отображено не слишком наглядно, и работа происходит менее прозрачно, чем в том же GParted .

Так что лучше всего перед установкой создать разделы нужного размера в нужном месте и отформатировать их в любую файловую систему Linux, а при установке ОСи, проигнорировав предложенные автоматические варианты и выбрав ручное разбиение, просто примонтировать их в нужные места и сменить при необходимости файловую систему на другую, простым проставлением "галочки" в графе Форматировать напротив своих разделов.

Для большей наглядности рекомендую тщательно изучить скриншоты к статье (скриншоты кликабельны - при щелчке на них в отдельных вкладках будут открываться полноразмерные картинки ). Обращаю внимание, что везде изображён ОДИН И ТОТ ЖЕ жёсткий диск, только в разных программах. На этом диске параллельно установлены две операционные системы в режиме мультизагрузки - Windows и Linux, которые вполне мирно уживаются на одном компьютере. Каждой из операционок выделено по 3 раздела (разделение не идеальное, но вполне приемлемое ). Внимательно просмотрите, что и как выглядит в каждой из программ.

Операционные системы 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 имеет смысл лишь для совместимости - если у вас стоит задача читать эти диски из каких-либо других систем.

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

Когда вы форматируете жесткий диск или флешку, вы подготавливаете их для хранения информации операционной системой. Во время форматирования вся информация удаляется и устанавливается чистая файловая система.

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

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

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

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

О каких файловых системах следует знать?

В основном, ОС Windows использует файловую систему FAT (File Allocation Table), FAT32 и NTFS (New Technology File System).

Если говорить коротко, в NTFS могут храниться файлы размером более 4 ГБ, а разделы могут быть более 32 ГБ. NTFS лучше управляет свободным пространством, чем файловая система FAT или FAT32, и, следовательно, меньше фрагментирует диск. Также NTFS поддерживает некоторые функции по безопасности, включая шифрование файлов «на лету».

В сравнении с NTFS, файловые системы FAT и FAT32 приспособлены к меньшему пространству, менее интенсивно работают с жестким диском, и, следовательно, быстрее работают с небольшими флеш-накопителями. К тому же, FAT и FAT32 являются кросс платформенными файловыми системами. Самый главный недостаток FAT и FAT32 - ограничение в 32 ГБ на размер раздела, а также ограничение в 2 ГБ и 4 ГБ на размер файла соответственно.

Для хранения информации на флеш-накопителях в основном используется новая файловая система exFAT (Extended File Allocation Table), также известная как FAT64. Как и NTFS она поддерживает файлы размером более 4 ГБ и разделы более 32 ГБ, а также ее система управления файлами избегает фрагментации диска. В то же время она является быстрой, оптимизированной для мобильных носителей и обработки media-файлов.

Какие операционные системы работают с этими файловыми системами?

FAT и FAT32 доступны на чтение/запись практических во всех операционных системах. Ранее форматирование диска под файловую систему NTFS было верным способом добиться его неработоспособности вне ОС Windows. Однако сейчас поддержка чтения/записи NTFS встроена во многие дистрибутивы Linux. Также существует хак, который позволяет работать с этой файловой системой в Mac OS X версии 10.6, хотя, кажется, он работает нестабильно, поэтому рекомендуется использовать MacFuse. С другой стороны exFAT требует установки драйверов и в Windows XP и в Linux и поддерживается последними версиями Windows (Vista SP1, Windows 7, 8) и Mac OS X.

Почему важен размер кластера?

Если вы уже форматировали диск, то должны знать о том, что можно выбрать размер кластера (или размер блока размещения).

В зависимости от размера кластера (от 512 байт до 64 килобайт), файл может храниться в одном или сотнях и тысячах кластеров. Когда размер файла меньше, чем размер кластера, теряется оставшееся пространство. Этот феномен называется «потерянное пространство». Следовательно, хранение множества мелких файлов на диске с большим размером кластера и приведет к большим объемам потерянного пространства. С другой стороны, если мы выберем маленький размер кластера, большие файлы будут дробиться на много мелких кусочков, что может замедлить дисковые операции, так как будет требоваться больше времени на чтение соответствующего файла. Иными словами, подходите разумно к выбору размера кластера.

Как узнать тип файловой системы на диске?

Файловая система указана в свойствах диска. Зайдите в Мой компьютер (Computer), кликните правой кнопкой мыши на нужном диске и далее в контекстном меню выберите Свойства (Properties). Во вкладке Общие (General) в строке Файловая система (File system) вы увидите тип файловой системы.

Чтобы узнать размер кластера у диска с файловой системой NTFS, используйте комбинацию клавиш + [R], откроется окно Запуск программы (Run). Удостоверьтесь в том, что вы зашли в систему как пользователь с административными правами. В окне Запуск программы в текстовом поле напечатайте cmd и нажмите OK. Далее введите команду > fsutil fsinfo ntfsinfo и нажмите Enter.

В Windows XP и Windows 7 вы также можете просматривать и изменять размер кластера, используя приложения сторонних разработчиков, например, .

Какую файловую системы вы предпочитаете использовать на дисках и почему? Сталкивались ли вы с проблемами при использовании файловой системы NTFS, и как решали эти проблемы?