Вы знаете, что такое MBR? Что такое основной и расширенный раздел диска? Что такое кластеры, как они могут быть "потеряны"? Как работает бут-вирус? Для чего нужен fdisk? Если нет, то вам будет полезно прочитать серию моих статей.
Немного о физической организации
Жесткий диск состоит из нескольких металлических пластин, головок чтения-записи и механизма их позиционирования, помещенных в герметичную коробку (банку). К нему прикреплена печатная плата с контроллером и буферной памятью (кэшем), которая посредством шлейфа (40 или 80 жил) соединяется с материнской платой или отдельным контроллером. Так вот, металлические пластины условно разбиты на концентрические дорожки, а дорожки разделены на секторы. Дорожки на равном расстоянии от центра на всех поверхностях пластин объединяются в цилиндры. Таким образом, для чтения определенного сектора данных (его емкость принята равной 512 байт) нужно: 1) отвести головки на нужное расстояние от центра, то есть позиционировать на определенный цилиндр; 2) начать просмотр дорожки на нужной пластине, активировав соответствующую головку; 3) производить чтение всей информации до появления заголовка сектора, номер которого (содержится в этом заголовке) совпадает с нужным нам для операции чтения или записи. В соответствии с такой схемой метод нахождения необходимой информации на жестком диске называется CHS-адресацией (Cylinder-Head-Sector).
BIOS (базовая система ввода-вывода) является набором системных подпрограмм (функций), среди которых есть и программа чтения-записи данных на жестком диске. Для получения содержимого одного сектора требуется указать его CHS-адрес. Число секторов, цилиндров и головок BIOS'у должно быть известно, для этого и существует автодетект в Setup. Впрочем, информация о геометрии, используемая для работы функций доступа к диску, даже близко не соответствует реальной геометрии современного жесткого диска. У него 1-3 пластины, одна из которых может использоваться только с одной стороны, и 1-6 головок. Поэтому контроллер жесткого диска производит трансляцию поступающих адресов, такую же трансляцию производит и BIOS, работая по механизму LBA (Logical Block Addressing). Но это уже другая история.
В соответствии с идеологией MS-DOS жесткий диск может состоять из так называемых "разделов" - независимых областей диска, которые могут быть построены по схеме любой операционной системы, то есть использовать любую файловую систему. Таких разделов должно быть два - основной (Primary), с которого обычно осуществляется загрузка, и расширенный (Extended), который может быть разделен на несколько частей-подразделов (логических дисков). Таким образом, первый раздел диска самостоятелен, остальные объединяются в группу. Каждый раздел имеет принадлежность к той или иной файловой системе.
В рамках DOS (и основанных на этой же операционной системе Windows3.x/95/98/ME) существуют три файловых системы - FAT12, FAT16 и FAT32. Об их отличиях я упомяну ниже.
Системные секторы
Самый первый сектор любого жесткого диска имеет название Master Boot Record, MBR. Он состоит из двух частей - программы начального загрузчика и таблицы разделов (Disk Partition Table, DPT). DPT состоит из четырех записей, обозначающих адрес начала раздела, его размер в секторах, адрес конца и тип файловой системы. Конечно, используются только две записи - для основного и расширенного раздела, потому что каждый подраздел (логический диск) имеет такую же DPT с указанием адреса следующего подраздела. Задача загрузчика в MBR - дать возможность загрузки с нужного раздела (т.е. использовать несколько операционных систем). Стандартный загрузчик DOS предоставляет весьма ограниченный механизм выбора - загрузка возможна с того раздела, у которого установлен флаг активности таблице DPT.
Самый первый сектор раздела называется Boot Sector. В его составе также есть загрузочная программа и таблица BIOS Parameter Block, BPB. В этой таблице содержится информация о местонахождении и размере другой важной области - таблицы размещения файлов, FAT. По своей сути FAT - это большой массив элементов, каждый элемент соответствует каждому кластеру. Кластер - блок секторов (от 8 до 128), элемент распределения всего дискового пространства раздела. Каждому файлу при его создании выделяется нужное число кластеров. Номер первого кластера заносится в каталог (директорий, папку), а соответствующий этому кластеру элемент FAT содержит номер второго кластера. Элемент FAT, соответствующий второму кластеру, содержит номер третьего кластера и т.д. Весь FAT состоит из таких цепочек (Chains).
Если элемент FAT не связан ни в одну цепочку и при этом не равен 0, он называется "потерянным" (Lost Cluster). "Потеря" кластеров происходит при перезагрузке в момент записи цепочки в FAT, например, при создании/изменении файла, когда операция записи прерывается. Конечно, это не самые страшные последствия неожиданной перезагрузки, но все же терять место на диске не очень хочется. Программисты из Microsoft хорошо знали о "стабильности" своей Windows, поэтому и запускается Scandisk автоматически.
Если файл впоследствии увеличивается в размерах, ему назначаются новые кластеры из числа свободных, причем чаще всего они находятся в другом месте диска. Цепочка "перепрыгивает" другие цепочки - вот вам и фрагментация, которую устраняют программы-дефрагментаторы, переносящие файлы так, чтобы их кластеры шли друг за другом по порядку.
Хотя система цепочек и является достаточно эффективной и простой, у нее есть недостатки. Во-первых, низкая надежность - при исчезновении одного элемента весь файл будет нечитаемым, а порча FAT означает потерю большого количества (если не всех) файлов. Для устранения этого недостатка существуют две одинаковых копии FAT. Второе - если размер файла не кратен размеру кластера, образуется слек (Slack) - часть кластера, не занятая полезной информацией. Чем больше размер кластера, тем большая часть диска занята слеком. Для файла длиной 1 байт вы теряете весь кластер, а если он имеет большой размер (32 Кбайта, например), то потери на слек могут составлять 30-50% от общей емкости диска (кстати, проверить их можно программой Sandra - модуль Drive Information).
Размер элемента FAT дает название самой файловой системе. FAT12 имеет 12-битные элементы, которые позволяют организовать на диске около 4-х тысяч кластеров. FAT16 имеет 16-битные элементы, число кластеров - 65530. FAT32 - 32-битные элементы, около 4 млрд. кластеров. Чем больше на диске будет кластеров, тем меньше можно сделать размер самого кластера и тем самым меньше потерять места. Поэтому FAT12 используется только для гибких дисков, FAT16 - для дисков емкостью до 500 Мб (в принципе, можно и до 2 Гб).
Макс КУРМАЗ,
max_kurmaz@mail.ru
Комментарии
>В соответствии с идеологией MS-DOS жесткий диск может состоять из так называемых "разделов" -
>независимых областей диска, которые могут быть построены по схеме любой операционной системы, то
>есть использовать любую файловую систему.
Max - не верь micro$oft - логич. устройство диска - вовсе не их заслуга ;-)
>Таких разделов должно быть два - основной (Primary), с которого обычно осуществляется загрузка, и >расширенный (Extended
так тебе представляет дисковый мир micro$oft - не "ведись" - их м.б. больше, просто в M$ об этом "не знают" ;-)))
Vlad
Макс, нельзя журналистам допускать настолько не соответствующие профессиональной этике высказывания...
Кстати, я не журналист по большому счету, а системотехник.