Что такое цилиндр жесткого диска
Винчестеры, как и другие магнитные накопители с прямым доступом, имеют дорожковую организацию дисковой памяти. Это означает, что поверхность магнитных дисков разбивается на концентрические кольца разного диаметра - дорожки, начиная с внешнего края. Далее структуру информации на винчестере следует рассматривать отдельно с точки зрения физической и логической структур. Чаще всего путаница возникает при сравнении параметров, относящихся к различным структурам.
Физическая структура
С физической точки зрения обе поверхности всех магнитных дисков в массиве-пакете содержат дорожки. BIOS не определяет, к какому конкретно "блину" относится та или иная дорожка, поэтому все поверхности пронумерованы единой сквозной нумерацией. Каждой рабочей поверхности соответствует своя головка, по которым, собственно говоря, поверхности и нумеруются (параметр heads). Физически максимально допустимое число головок за всю историю производства винчестеров было равно 11, но в современных накопителях более 6 головок не используется. В используемых ныне магнитных дисках число дорожек равно 80, а число дорожек жесткого диска достигает нескольких тысяч. Дорожки, как и головки, идентифицируются номером (внешняя дорожка и верхняя головка имеет нулевой номер). Количество дорожек на диске определяется поверхностной плотностью записи.
Дорожки, в свою очередь, разбиваются на сектора, являющие минимальными физическими элементами хранения и адресации данных. Чаще всего, сектора на каждой дорожке имеют фиксированный угловой размер, благодаря чему на всех дорожках располагается одинаковое количество секторов. Каждая дорожка дискеты 3,5" содержит 18 секторов. Жесткий диск имеет обычно от 17 до 63 секторов (так считает BIOS). Реально же на дорожке современного накопителя содержится около 100 секторов, а максимальное их количество равно 256. Размер сектора определен в 512 байт. Нумерация секторов на дорожке начинается с единицы, а не с нуля, в отличие от головок и цилиндров.
Каждый сектор несет не только данные, но и служебную информацию. В начале каждого сектора записывается его заголовок (prefix), по которому определяется начало и номер сектора, а в конце - заключение (suffix), в котором находится контрольная сумма (checksum, CRC), необходимая для проверки целостности данных. Заголовок сектора включает в себя идентификатор (ID) сектора, первую CRC (контрольная сумма) и интервал включения записи. Идентификатор содержит информацию о номере цилиндра, головки и сектора. Далее следует интервал включения записи, после которого следует 512 байт данных. За данными располагается вторая CRC и интервал между записями (секторами), необходимый для того, чтобы застраховать следующий сектор от записи на предыдущий. Это может произойти из-за неравномерной скорости вращения диска. Завершает сектор прединдексный интервал, который имеет размер от 693 байт, служит для компенсации неравномерности скорости вращения диска. Таким образом, размер сектора увеличивается до 571 байта, из которых 512 байт составляют данные.
Вся эта информация записывается на заводе при низкоуровневом (LowLewel) форматировании, используя специальные программные средства (например, Speed Store или Disk Manager) или команды DOS. Кроме промежутков между секторами существуют еще и промежутки между самими дорожками. Префиксы, суффиксы и промежутки как раз и составляют то пространство диска, которое теряется при форматировании.
Сектора, находящие друг над другом в пакете дисков, на которые одновременно может быть спозиционирован пакет головок, называется цилиндром. В связи с тем, что накопитель имеет несколько дисков, расположенных друг под другом, разбиения дисков идентичны. Поэтому при рассмотрении жестких дисков чаще говорят о цилиндрах, чем о дорожках.
Структура MBR
До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.
MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.
Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.
Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.
Структура записи для одного раздела:
Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.
Следующие три байта — это так называемые CHS-координаты первого сектора раздела.
По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.
После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.
Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.
Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.
Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.
Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).
В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.
Логическая структура
Кроме того, что накопитель должен быть сконфигурирован в CMOS, его логическую структуру должна понимать операционная система. Для обращения к информации используется кластер (allocation unit) — минимальная логическая единица доступа к информации. Каждый кластер состоит из нескольких секторов (8 и более). Каждый кластер пронумерован и может быть либо свободен, либо монопольно занят для хранения определенного файла, даже если не все сектора внутри его заняты. Следовательно, даже файл размером несколько байт требует целого кластера. В результате, на каждом файле теряется около половины кластера. Чем больше размер кластера, тем больше потери. Использование кластеров позволяет ускорить работу, так количество кластеров существенно меньше количества секторов.
Нумерация кластеров не соответствует их порядковому расположению на дисках. При работе используется тот факт, что при записи данных используются все сектора, которые на данный момент находятся под всеми головками, таким образом, заполняется цилиндр. Прежде чем перейти к следующему цилиндру, заполняется текущий чтобы иметь возможность считывать как можно больше информации без перемещения головок.
Для DOS версии 3.0 и выше используется алгоритм следующего свободного кластера размещения файлов на диске. Кластеры устроены так, что каждый из них ссылается на последующий. При работе DOS ищет свободные кластеры не с начала диска, а с места последней записи на диск. DOS устанавливает указатель последнего записанного кластера и ищет свободные кластеры, пользуясь этим указателем. Указатель размещается в RAM и уничтожается при перезарузке. Если DOS дошла до конца диска, то указатель также удаляется, а поиск начинается с начала диска. Таким образом осуществляются операции файлами на диске.
Этот алгоритм позволяет восстанавливать удаленные файлы. При удалении файла в начало его первого кластера ставится знак «?», и все кластеры, связанные с данным считаются свободными. Указатель выставляется на следующий свободный кластер, запись продолжается в идущих далее свободных кластерах. Перезапись кластера, в котором произошло удаление, произойдет только когда указатель в новом цикле дойдет до данного кластера. Даже, если переписывается один файл поверх другого, то запись работает по такой же схеме. А для каждого нового файла используется первая свободная запись.
Расширенные разделы
Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).
В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:
- В EBR нет исполняемого кода. Некоторые загрузчики могут его туда записывать, но обычно это место заполнено нулями
- Сигнатуры диска и два неиспользуемых байта должны быть заполнены нулями
- В таблице разделов могут быть заполнены только две первых записи. Остальные две записи должны быть заполнены нулями
В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.
Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.
Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.
А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.
Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.
Для второй записи таблицы разделов EBR в поле начального сектора раздела записывается расстояние между сектором самой первой EBR и сектором следующей EBR в списке. В поле количества секторов раздела в этом случае пишется размер области диска от сектора этой следующей структуры EBR и до конца логического раздела, относящегося к этой структуре.
Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.
Файловые системы
Файловая система через использование кластеров позволяет осуществлять доступ к данным. Большинство файловых систем построено на основе таблицы размещения файлов (allocation table — FAT). Наиболее распространены файловые системы FAT12 (диски менее 16 Мбайт), FAT16 (или просто FAT) и FAT32.
FAT подразумевает наличие следующих структур (в порядке расположения их на диске):
Загрузочные секторы главного и дополнительного разделов
Загрузочный сектор логического диска
Таблицы размещения файлов (FAT)
Цилиндр диагностических операций
1. Загрузочный сектор главного раздела — Boot Record (MBR, Главная загрузочная запись) или Partition table (PT, Таблица разделов) — является первым сектором на жестком диске (занимает один или более секторов). Но под этот раздел отдана целиком вся первая дорожка (цилиндр 0, головка 0, сектор 1). Он в себя включает Таблицу главного раздела, которая может содержать только четыре записи, так как больше не поместится в 512 байт. Корневой таблице разделов принадлежат адреса 01BEh-01FDh. Очевидно, что можно создать только 4 раздела, среди которых могут быть Первичные (Primary) и Дополнительные (Extended) разделы. Поэтому если на диске выделен Дополнительный раздел, то Первичных уже можно создать не более трех.
Первичный может иметь только один логический диск, в то время как количество логических в Дополнительном разделе не ограничено. Общее количество логических дисков (томов) не должно быть более 24 (для DOS). В первом секторе Дополнительного раздела расположена его Таблица разделов с такой же структурой как и Корневая таблица разделов. В ней описываются адреса начала и конца первого логического диска в этом разделе и его файловая система, а также зоны, занимаемой остальными логическими дисками (если они есть). Все последующие разделы в Дополнительном разделе имеют аналогичную структуру.
MBR создается с помощью стандартной программы fdisk. Правда последняя накладывает некоторые ограничения: первичный раздел может быть создан только один.
Также в Главной загрузочной записи находится главный загрузочный код — небольшая программа, которая выполняется из BIOS. Она передает управление активному (загрузочному) разделу.
2. Загрузочная запись (Boot Record) занимает 32 первых сектора каждого логического диска (для первичного раздела — цилиндр 0, головка 1, сектор 1). Загрузочный сектор активного раздела получает управление от MBR. Он выполняет некоторые проверки и запускает с диска первый системный файл io.sys. Формирует загрузочная запись программой format. Напомню, что только Первичный раздел может быть активным. Загрузочная запись, как Корневая таблица разделов должны заканчиваться сигнатурой 55АА. По этой сигнатуре BIOS определяет, успешной ли была загрузка.
3. Таблица размещения файлов (FAT) — основная часть файловой системы, давшая ей название. Она представляет собой набор записей с номерами, соответствующих номерам всех кластеров на логическом диске. Каждому кластеру соответствует одно число. Для каждого кластера запись может иметь несколько стандартных значений: кластер свободен, кластер поврежден или кластер является последним кластером файла, или содержать ссылку на следующий кластер в цепочке, относящийся к тому же файлу. Получается, что в таблице хранится информация только о первом кластере цепочки кластеров одного файла.
Каждая ячейка FAT хранит значение длиной 12, 16 или 32 бита. Отсюда и пошли названия FAT12, FAT16 и FAT32. Размер записей в таблице FAT определяет максимальный размер логического тома. Так как в FAT16 запись представлялась 2-байтовым числом, то на логическом диске не могло быть более 65536 кластеров: 2 16 = 65536. В результате несложных вычислений мы находим, что вся таблица FAT помещается в 1 Мбайте. Этим и пользовались вирусы типа «Чернобыль». В связи этим FAT, начиная с DOS 4.0 ограничивала объем логического диска в 2 Гбайта (размер кластера составлял 32 Кбайта): 32 Кб х 65536 = 2 Гб.
Операционные системы Windows 95 OSR2 и старшие поддерживают 32-разрядную FAT с размером кластера до 64 Кбайт. Таким образом, эта система поддерживает тома размером до 2 Тбайт. А применяется она в дисках объемом от 512 Мбайт.
Всего в каждом логическом диске существует 2 таблицы FAT, которые следуют друг за другом. При порче первого экземпляра, используется второй, путем корректировки первого. Но у этой системы защиты есть свои недостатки. Во-первых, вторая таблица используется только когда первая полностью испорчена. Во-вторых, вторая копия часто обновляется за счет первой, так что во второй также могут содержаться ошибки.
В зависимости от размера логического диска меняется и размер кластера. Для FAT16 тома до 260 Мбайт используют кластеры размером 2 Кбайта, до 8 Гбайт — 32 Кбайта. Размеры кластеров и записей определяются при форматировании высоко уровня. Для FAT32 зависимость размера кластера от размера тома приведена в таблице.
Кол-во секторов на 1 кластер
4. Корневой каталог (Root directory). Так как размеры таблицы FAT не постоянны, то Корневой каталог не имеет четко закрепленного места, но следует сразу за второй таблицей FAT. Размеры этого каталога четко фиксированы, поэтому существует ограничение на количество папок и файлов в корне диска. Под корневой каталог обычно отводится 32 сектора, именно поэтому корневой каталог ограничен 512 записями. Подкаталог может хранить произвольное количество записей.
Каждая запись в том каталоге имеет размер 32 байта. В записи содержится информация практически вся информация о файле, которой располагает DOS: имя, атрибуты, время и дата создания и размер на диске. Эта информация связана с FAT посредством одного из полей записи — номера первого занимаемого файлом кластера на диске.
Чтобы отследить расположение файла, надо обратиться к каталогу и выяснить номер его первого сектора и длину файла, затем найти в FAT этот кластер и проследить цепочку кластеров до конца файла.
5. И последним разделом, о котором мало кто знает, является цилиндр диагностики. Это последний цилиндр диска, операционная система и FAT его не видят. Он отделяется программой fdisk при создании разделов. Используется этот цилиндр для форматирования низкого уровня и тестирования данных винчестера.
You spin me right round, baby
Механический накопитель на жёстких дисках (hard disk drive, HDD) был стандартом систем хранения для компьютеров по всему миру в течение более 30 лет, но лежащие в его основе технологии намного старше.
Первый коммерческий HDD компания IBM выпустила в 1956 году, его ёмкость составляла аж 3,75 МБ. И в целом, за все эти годы общая структура накопителя не сильно изменилась. В нём по-прежнему есть диски, которые используют для хранения данных намагниченность, и есть устройства для чтения/записи этих данных. Изменился же, и очень сильно, объём данных, который можно на них хранить.
В 1987 году можно было купить HDD на 20 МБ примерно за 350 долларов; сегодня за такие же деньги можно купить 14 ТБ: в 700 000 раз больший объём.
Мы рассмотрим устройство не совсем такого размера, но тоже достойное по современным меркам: 3,5-дюймовый HDD Seagate Barracuda 3 TB, в частности, модель ST3000DM001, печально известную своим высоким процентом сбоев и вызванных этим юридических процессов. Изучаемый нами накопитель уже мёртв, поэтому это будет больше похоже на аутопсию, чем на урок анатомии.
Перевернув накопитель, мы видим печатную плату и несколько разъёмов. Разъём в верхней части платы используется для двигателя, вращающего диски, а нижние три (слева направо) — это контакты под перемычки, позволяющие настраивать накопитель под определённые конфигурации, разъём данных SATA (Serial ATA) и разъём питания SATA.
Serial ATA впервые появился в 2000 году. В настольных компьютерах это стандартная система, используемая для подключения приводов к остальной части компьютера. Спецификация формата претерпела множество ревизий, и сейчас мы пользуемся версией 3.4. Наш труп жёсткого диска имеет более старую версию, но различие заключается только в одном контакте в разъёме питания.
В подключениях передачи данных для приёма и получения данных используется дифференцированный сигнал: контакты A+ и A- используются для передачи инструкций и данных в жёсткий диск, а контакты B — для получения этих сигналов. Подобное использование спаренных проводников значительно снижает влияние на сигнал электрического шума, то есть устройство может работать быстрее.
Если говорить о питании, то мы видим, что в разъёме есть по паре контактов каждого напряжения (+3.3, +5 и +12V); однако большинство из них не используется, потому что HDD не требуется много питания. Эта конкретная модель Seagate при активной нагрузке использует менее 10 Вт. Контакты, помеченные как PC, используются для precharge: эта функция позволяет вытаскивать и подключать жёсткий диск, пока компьютер продолжает работать (это называется горячей заменой (hot swapping)).
Контакт с меткой PWDIS позволяет удалённо перезагружать (remote reset) жёсткий диск, но эта функция поддерживается только с версии SATA 3.3, поэтому в моём диске это просто ещё одна линия питания +3.3V. А последний контакт, помеченный как SSU, просто сообщает компьютеру, поддерживает ли жёсткий диск технологию последовательной раскрутки шпинделей staggered spin up.
Перед тем, как компьютер сможет их использовать, диски внутри устройства (которые мы скоро увидим), должны раскрутиться до полной скорости. Но если в машине установлено много жёстких дисков, то внезапный одновременный запрос питания может навредить системе. Постепенная раскрутка шпинделей полностью устраняет возможность таких проблем, но при этом перед получением полного доступа к HDD придётся подождать несколько секунд.
Сняв печатную плату, можно увидеть, как она соединяется с компонентами внутри устройства. HDD не герметичны, за исключением устройств с очень большими ёмкостями — в них вместо воздуха используется гелий, потому что он намного менее плотный и создаёт меньше проблем в накопителях с большим количеством дисков. С другой стороны, не стоит и подвергать обычные накопители открытому воздействию окружающей среды.
Благодаря использованию таких разъёмов минимизируется количество входных точек, через которые внутрь накопителя могут попасть грязь и пыль; в металлическом корпусе есть отверстие (большая белая точка в левом нижнем углу изображения), позволяющее сохранять внутри давление окружающей среды.
Теперь, когда печатная плата снята, давайте посмотрим, что находится внутри. Тут есть четыре основных чипа:
- LSI B64002: чип основного контроллера, обрабатывающий инструкции, передающий потоки данных внутрь и наружу, корректирующий ошибки и т.п.
- Samsung K4T51163QJ: 64 МБ DDR2 SDRAM с тактовой частотой 800 МГц, используемые для кэширования данных
- Smooth MCKXL: управляет двигателем, крутящим диски
- Winbond 25Q40BWS05: 500 КБ последовательной флеш-памяти, используемой для хранения встроенного ПО накопителя (немного похожего на BIOS компьютера)
Открыть накопитель просто, достаточно открутить несколько болтов Torx и вуаля! Мы внутри…
Учитывая, что он занимает основную часть устройства, наше внимание сразу привлекает большой металлический круг; несложно понять, почему накопители называются дисковыми. Правильно их называть пластинами; они изготавливаются из стекла или алюминия и покрываются несколькими слоями различных материалов. Этот накопитель на 3 ТБ имеет три пластины, то есть на каждой стороне одной пластины должно храниться 500 ГБ.
Изображение довольно пыльное, такие грязные пластины не соответствуют точности проектирования и производства, необходимого для их изготовления. В нашем примере HDD сам алюминиевый диск имеет толщину 0,04 дюйма (1 мм), но отполирован до такой степени, что средняя высота отклонений на поверхности меньше 0,000001 дюйма (примерно 30 нм).
Базовый слой имеет глубину всего 0,0004 дюйма (10 микронов) и состоит из нескольких слоёв материалов, нанесённых на металл. Нанесение выполняется при помощи химического никелирования с последующим вакуумным напылением, подготавливающих диск для основных магнитных материалов, используемых для хранения цифровых данных.
Этот материал обычно является сложным кобальтовым сплавом и составлен из концентрических кругов, каждый из которых примерно 0,00001 дюйма (примерно 250 нм) в ширину и 0,000001 дюйма (25 нм) в глубину. На микроуровне сплавы металлов образуют зёрна, похожие на мыльные пузыри на поверхности воды.
Каждое зерно обладает собственным магнитным полем, но его можно преобразовать в заданном направлении. Группирование таких полей приводит к возникновению битов данных (0 и 1). Если вы хотите подробнее узнать об этой теме, то прочитайте этот документ Йельского университета. Последними покрытиями становятся слой углерода для защиты, а потом полимер для снижения контактного трения. Вместе их толщина составляет не больше 0,0000005 дюйма (12 нм).
Скоро мы увидим, почему пластины должны изготавливаться с такими строгими допусками, но всё-таки удивительно осознавать, что всего за 15 долларов можно стать гордым владельцем устройства, изготовленного с нанометровой точностью!
Однако давайте снова вернёмся к самому HDD и посмотрим, что же в нём есть ещё.
Жёлтым цветом показана металлическая крышка, надёжно крепящая пластину к электродвигателю привода шпинделя — электроприводу, вращающему диски. В этом HDD они вращаются с частотой 7200 rpm (оборотов/мин), но в других моделях могут работать медленнее. Медленные накопители имеют пониженный шум и энергопотребление, но и меньшую скорость, а более быстрые накопители могут достигать скорости 15 000 rpm.
Чтобы снизить урон, наносимый пылью и влагой воздуха, используется фильтр рециркуляции (зелёный квадрат), собирающий мелкие частицы и удерживающий их внутри. Воздух, перемещаемый вращением пластин, обеспечивает постоянный поток через фильтр. Над дисками и рядом с фильтром есть один из трёх разделителей пластин: помогающих снижать вибрации и поддерживать как можно более равномерный поток воздуха.
В левой верхней части изображения синим квадратом указан один из двух постоянных стержневых магнитов. Они обеспечивают магнитное поле, необходимое для перемещения компонента, указанного красным цветом. Давайте отделим эти детали, чтобы видеть их лучше.
То, что выглядит как белый пластырь — это ещё один фильтр, только он очищает частицы и газы, попадающие снаружи через отверстие, которое мы видели выше. Металлические шипы — это рычаги перемещения головок, на которых находятся головки чтения-записи жёсткого диска. Они с огромной скоростью движутся по поверхности пластин (верхней и нижней).
Посмотрите это видео, созданное The Slow Mo Guys, чтобы увидеть, насколько они быстрые:
В конструкции не используется чего-то вроде шагового электродвигателя; для перемещения рычагов по соленоиду в основании рычагов проводится электрический ток.
Обобщённо их называют звуковыми катушками, потому что они используют тот же принцип, который применяется в динамиках и микрофонах для перемещения мембран. Ток генерирует вокруг них магнитное поле, которое реагирует на поле, созданное стержневыми постоянными магнитами.
Не забывайте, что дорожки данных крошечны, поэтому позиционирование рычагов должно быть чрезвычайно точным, как и всё остальное в накопителе. У некоторых жёстких дисков есть многоступенчатые рычаги, которые вносят небольшие изменения в направление только одной части целого рычага.
В некоторых жёстких дисках дорожки данных накладываются друг на друга. Эта технология называется черепичной магнитной записью (shingled magnetic recording), и её требования к точности и позиционированию (то есть к попаданию постоянно в одну точку) ещё строже.
На самом конце рычагов есть очень чувствительные головки чтения-записи. В нашем HDD содержится 3 пластины и 6 головок, и каждая из них плавает над диском при его вращении. Для этого головки подвешены на сверхтонких полосках металла.
И здесь мы можем увидеть, почему умер наш анатомический образец — по крайней мере одна из головок разболталась, и что бы ни вызвало изначальный повреждение, оно также погнуло один из рычагов. Весь компонент головки настолько мал, что, как видно ниже, очень сложно получить её качественный снимок обычной камерой.
Однако мы можем разобрать отдельные части. Серый блок — это специально изготовленная деталь под названием «слайдер»: когда диск вращается под ним, поток воздуха создаёт подъёмную силу, поднимая головку от поверхности. И когда мы говорим «поднимает», то имеем в виду зазор шириной всего 0,0000002 дюйма или меньше 5 нм.
Чуть дальше, и головки не смогут распознавать изменения магнитных полей дорожки; если бы головки лежали на поверхности, то просто поцарапали бы покрытие. Именно поэтому нужно фильтровать воздух внутри корпуса накопителя: пыль и влага на поверхности диска просто сломают головки.
Крошечный металлический «шест» на конце головки помогает с общей аэродинамикой. Однако чтобы увидеть части, выполняющие чтение и запись, нам нужна фотография получше.
На этом изображении другого жёсткого диска устройства чтения и записи находятся под всеми электрическими соединениями. Запись выполняется системой тонкоплёночной индуктивности (thin film induction, TFI), а чтение — туннельным магнеторезистивным устройством (tunneling magnetoresistive device, TMR).
Создаваемые TMR сигналы очень слабы и перед отправкой должны проходить через усилитель для повышения уровней. Отвечающий за это чип находится рядом с основанием рычагов на изображении ниже.
Как сказано во введении к статье, механические компоненты и принцип работы жёсткого диска почти не изменились за многие годы. Больше всего совершенствовалась технология магнитных дорожек и головок чтения-записи, создавая всё более узкие и плотные дорожки, что в конечном итоге приводило к увеличению объёма хранимой информации.
Однако механические жёсткие диски имеют очевидные ограничения скорости. На перемещение рычагов в нужное положение требуется время, а если данные разбросаны по разным дорожкам на различных пластинах, то на поиски битов накопитель будет тратить довольно много микросекунд.
Прежде чем переходить к другому типу накопителей, давайте укажем ориентировочные показатели скорости типичного HDD. Мы использовали бенчмарк CrystalDiskMark для оценки жёсткого диска WD 3.5" 5400 RPM 2 TB:
В первых двух строчках указано количество МБ в секунду при выполнении последовательных (длинный, непрерывный список) и случайных (переходы по всему накопителю) чтения и записи. В следующей строке показано значение IOPS, то есть количество операций ввода-вывода, выполняемых каждую секунду. В последней строке показана средняя задержка (время в микросекундах) между передачей операции чтения или записи и получением значений данных.
В общем случае мы стремимся к тому, чтобы значения в первых трёх строчках были как можно больше, а в последней строчке — как можно меньше. Не беспокойтесь о самих числах, мы просто используем их для сравнения, когда будем рассматривать другой тип накопителя: твердотельный накопитель.
Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.
Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.
Структура GPT
В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.
Кроме того, в отличие от MBR, структура GPT хранит на диске две своих копии, одну в начале диска, а другую в конце. Таким образом, в случае повреждения основной структуры, будет возможность восстановить ее из сохраненной копии.
Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:
LBA-адрес | Размер (секторов) | Назначение |
LBA 0 | 1 | Защитный MBR-сектор |
LBA 1 | 1 | Первичный GPT-заголовок |
LBA 2 | 32 | Таблица разделов диска |
LBA 34 | NN | Содержимое разделов диска |
LBA -34 | 32 | Копия таблицы разделов диска |
LBA -2 | 1 | Копия GPT-заголовка |
Защитный MBR-сектор
Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.
Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).
При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.
Первичный GPT-заголовок
Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.
Структура GPT-заголовка:
Смещение (байт) | Размер поля (байт) | Пример заполнения | Название и описание поля |
0x00 | 8 байт | 45 46 49 20 50 41 52 54 | Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как "EFI PART". |
0x08 | 4 байта | 00 00 01 00 | Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0 |
0x0C | 4 байта | 5C 00 00 00 | Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта) |
0x10 | 4 байта | 27 6D 9F C9 | Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю. |
0x14 | 4 байта | 00 00 00 00 | Зарезервировано. Должно иметь значение 0 |
0x18 | 8 байт | 01 00 00 00 00 00 00 00 | Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1. |
0x20 | 8 байт | 37 C8 11 01 00 00 00 00 | Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске. |
0x28 | 8 байт | 22 00 00 00 00 00 00 00 | Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска |
0x30 | 8 байт | 17 C8 11 01 00 00 00 00 | Адрес последнего сектора диска, отведенного под разделы |
0x38 | 16 байт | 00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6D | GUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке |
0x48 | 8 байт | 02 00 00 00 00 00 00 00 | Адрес начала таблицы разделов |
0x50 | 4 байта | 80 00 00 00 | Максимальное число разделов, которое может содержать таблица |
0x54 | 4 байта | 80 00 00 00 | Размер записи для раздела |
0x58 | 4 байта | 27 C3 F3 85 | Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32 |
0x5C | 420 байт | 0 | Зарезервировано. Должно быть заполнено нулями |
Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.
У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.
Таблица разделов диска
Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.
Моя предыдущая статья была посвящена внутреннему устройству чипа от Nvidia, да и, пожалуй, внутреннему устройству любого современного процессора. В этой статье мы перейдём к средствам хранения информации, и я расскажу, что представляют собой CD и HDD диски на микроуровне.
Начнём с CD диска. Наш подопытный — простой CD-R от Verbatim. Обычный диск с записанной (а точнее, напечатанной) информацией состоит из 3 основных слоёв. Слой А – поликарбонатный диск, который отвечает сразу за несколько функций. Первое – основа диска, которая выдерживает огромные скорости вращения внутри дисковода.
Так в общих чертах можно представить строение CD диска [1]
Поликарбонатный диск, как оказалось, дополнительно покрывают специальным лаком, который защищает от легких механических повреждений внешнюю поверхность диска.
Слой лака выделен красным цветом, под ним «начинается» поликарбонат
Под пучком электронного микроскопа, слой защитного лака чувствует себя не очень хорошо
Второе – именно на поликарбонате, в прямом смысле этого слова, печатается информация с матрицы — будь то фильм, музыка или программы. Как сообщает нам Вики, поликарбонатная основа имеет толщину 1,2 мм и весит всего-навсего 15-20 грамм [1].
Естественно, что поликарбонат и лак прозрачны для лазерного излучения, поэтому «напечатанную» информацию для лазера необходимо сделать «видимой», для чего поверхность покрывают тонким слоем алюминия (слой B). Стоит отметить, что CD-ROM с «напечатанной» информацией, CD-R и CD-RW имеют незначительные отличия. В двух последних случаях, добавляется промежуточный слой между поликарбонатом и алюминием, который может изменять свои свойства под действием лазерного излучения определённой длины волны, а на поликарбонате печатаются пустые дорожки. Это могут быть либо красители в случае CD-R (что-то похожее на фоторезист), либо металлические сплавы в случае CD-RW. Именно поэтому перезаписываемые диски не рекомендуется подвергать действию прямых солнечных лучей и перегреву, который также может спровоцировать изменение оптических свойств.
Давайте сравним диск и алюминиевый слой, оторванный от него. Видно, что на поликарбонате есть «канавки» (питы), а на слое алюминия наоборот возвышения, которые полностью соответствуют канавкам:
Привычные углубления на поверхности поликарбоната (АСМ-изображение)
На защитном алюминиевом слое видны питы-«наоборот»: не канавки, а выступы (АСМ-изображение)
Далее полученный «пирог» покрывают специальным защитным слоем С, чья основная обязанность – защитить «нежный» алюминиевый отражающий слой. Далее на этот слой можно что-то наклеивать, писать маркером, наносить специальные дополнительные слои для печати и т.д. и т.п.
В данном видео представлены все технологические этапы производства CD дисков:
Запись на CD диске подобная записи на виниловой пластинке, т.е. дорожка с информацией идёт по спирали. Он берёт своё начало в центре диска и заканчивается у внешнего края. А вот прямо посреди диска «стыкуются» пустые участки и дорожки с записанной информацией:
Вот была запись, а вот её и нет. Сравнение пустых дорожек и дорожек с записанной информацией (СЭМ-микрофотографии)
Принципиальных отличий на микроуровне CD от DVD и, наверное, Blu-Ray нет. Разве что питы будут меньших размеров. В нашем случае размеры 1 минимального углубления составляют 330 нм в ширину и 680 нм в длину, при этом расстояние между дорожками ~930 нм.
N.B. Если у вас есть исцарапанный CD диск, который не читается ни в одном приводе, попробуйте его заполировать. Для этого подойдёт практически любая прозрачная полироль. Она заполнит углубления, которые мешают чтению информации, и Вы хотя бы сможете скопировать информацию с диска.
Как же всё-таки иногда причудливо изгибается слой алюминия (практически произведение искусства – чёрное и белое):
Чёрные и белые полосы нашей жизни. CD (СЭМ-микрофотография)
И напоследок ещё пара изображений CD, полученных с помощью оптического микроскопа:
Оптическая микроскопия: слева — алюминиевый отражающий слой, справа — слой Al (более светлая область) на поликарбонатном диске (более тёмная область)
Приступим теперь к жёсткому диску. Для меня всегда, ещё со времён дискет и VHS оставалось загадкой, как же всё-таки устроена магнитная память?! Перед написанием статьи, я попытался найти хоть какие-то видео и медиа материалы, которые демонстрировали бы, как в предыдущем ролике, основные этапы производства жёстких дисков, и был неприятно обрадован Вики: «Обе плоскости пластин, подобно магнитофонной ленте, покрыты тончайшей пылью ферромагнетика — окислов железа, марганца и других металлов. Точный состав и технология нанесения составляют коммерческую тайну» [2]. Пришлось смириться и не искать правды от производителей HDD (разве что, Seagate слегка приоткрыл свои секреты), тем более что с приходом эры SSD конкуренция на рынке ещё больше усилилась.
Сами пластины изготавливаются из немагнитных металлических сплавов. Основу этих сплавов составляют алюминий и магний, как самые лёгкие конструкционные материалы. Далее на них наносится тонкий, опять таки согласно Вики, 10-20 нм слой магнитного – тут, пожалуй, слово нанокристаллический будет уместно – материала, который затем покрывается небольшим слоем углерода для защиты. Так как диск NoName, и выполнен он по древней технологии параллельной записи информации, то я позволю себе привести здесь состав материала по данным EDX (рентгеноспектральный микроанализ): Co – 1,1 атомных %, Y – 1,53 ат. %, Cr – 2,38 ат. %, Ni – 45,81 ат. %. Содержание углерода 36,54 %. Откуда-то взялись Si и P, содержание которых составляет 0,46 ат. % и 12,25 ат. %, соответственно. Происхождение кремния – по всей видимости, в следовых количествах остался на поверхности после работы микротома и моей полировки, а фосфор – просто заляпал образец.
Честно, я пытался найти слой магнитного материала толщиной «10-20 нм», но безуспешно. Если исходить из того, что увидел я, то поверхностный слой имеет толщину примерно 12 микрометров:
Тот сам «тоненький» слой, который хранит информацию в наших жёстких дисках
Сама поверхность диска очень и очень гладкая, перепад высот лежит в пределах 10 нм, что сравнимо с шероховатостью поверхности монокристаллического кремния. А вот и изображения в режиме фазового контраста, которые соответствуют распределению магнитных доменов на поверхности, т.е. мы видим фактически отдельные биты информации:
АСМ-изображения поверхности жёсткого диска. Справа представлены изображения в фазовом контрасте
Немножко о фазовом контрасте: сначала игла АСМ-микроскопа «ощупывает» рельеф, затем зная рельеф и повторяя его форму игла делает второй проход на расстоянии 100 нм от образца, чтобы «заглушить» действие Ван-дер-Ваальсовых сил и «выделить» действие магнитных сил. Флешку о том, как это происходит можно посмотреть тут.
Кстати, заметили, что единичные магнитные домены вытянуты вдоль плоскости диска и параллельны ему?! Позволю себе пару слов о методах записи. На данный момент диски с перпендикулярным методом записи информации (т.е. такие у которых магнитные домены ориентированы перпендикулярно плоскости диска), появившиеся в 2005 году, практически полностью вытеснили диски с параллельной записью. Преимущество перпендикулярной записи очевидно – выше плотность записи, но тут есть один тонкий момент в связи с данными Вики о толщине магнитного слоя. Этот нюанс называется – суперпарамагнитный предел. Т.е. существует некоторый критический размер частицы, после которого ферромагнетик уже при комнатной температуре переходит в парамагнитное состояние. Т.е. тепловой энергии хватает, что проворачивать, переориентировать такой маленький магнитик. В случае магнитной записи часто поступают следующим образом: делают один из размеров «магнитика» больше, чем два остальных (это хорошо видно на картинке с распределением магнитных доменов), тогда в этом большем направлении магнитный момент сохраняется. Так вот, если в случае параллельной записи я ещё могу поверить, что слой магнетика десятки нанометров при размерах 1 бита в несколько микрометров, то в случае перпендикулярной записи – этого просто не может быть. Толщина такой намагничиваемой области при минимальных размерах в плоскости диска, просто обязана быть минимум несколько микрометров. Так что, возможно, Вики немножко подвирает. Либо наносят магнетик в виде наночастиц диаметром 10-20 нм, а уже потом каким-то «хитрым» образом разбивают диск на области, которые и отвечают за хранение информации. К сожалению, я не полностью удовлетворил своё любопытство и ответил на вопросы о магнитной записи информации, может быть кто-нибудь поможет?!
Сравнение параллельного и перпендикулярного методов записи информации на жётских дисках [2]
Хотел бы также поделиться тремя видео, которые нашлись на просторах Интернета и связаны с жёсткими дисками. Первое посвящено принципам работы HDD (How does it work?):
Винчестеры, как и другие магнитные накопители с прямым доступом, имеют дорожковую организацию дисковой памяти. Это означает, что поверхность магнитных дисков разбивается на концентрические кольца разного диаметра — дорожки, начиная с внешнего края. Далее структуру информации на винчестере следует рассматривать отдельно с точки зрения физической и логической структур. Чаще всего путаница возникает при сравнении параметров, относящихся к различным структурам.
Форматирование
Итак, теперь мы можем определиться, что же на самом деле происходит при форматировании. В процессе низкоуровневого форматирования (заводского или специальными утилитами) дорожки разбиваются на сектора, формируется межсекторное пространство, записываются префиксы и суффиксы секторов. Во всех современных накопителях применяется зонная запись, при которой количество секторов на дорожке является переменным. Дорожки, более удаленные от центра, а значит, и более длинные, содержат большее количество секторов, и наоборот. Однако, BIOS «думает», что секторов на любой дорожке 63, преобразование осуществляется контроллером винчестера. При зонной записи цилиндры разбиваются на группы, которые называются зонами, причем в каждой зоне на дорожках свое количество секторов. Зон бывает 10 и более.
При форматировании высокого уровня в тома заносится загрузочный сектор тома (VBS — volume Boot Sector), записываются или переписываются таблицы FAT и корневой каталог. Как видно, данные не удаляются, всего лишь переписываются загрузочные данные для работы с операционной системой, и теряется их описание и каталог.
Физическая структура
С физической точки зрения обе поверхности всех магнитных дисков в массиве-пакете содержат дорожки. BIOS не определяет, к какому конкретно «блину» относится та или иная дорожка, поэтому все поверхности пронумерованы единой сквозной нумерацией. Каждой рабочей поверхности соответствует своя головка, по которым, собственно говоря, поверхности и нумеруются (параметр heads). Физически максимально допустимое число головок за всю историю производства винчестеров было равно 11, но в современных накопителях более 6 головок не используется. В используемых ныне магнитных дисках число дорожек равно 80, а число дорожек жесткого диска достигает нескольких тысяч. Дорожки, как и головки, идентифицируются номером (внешняя дорожка и верхняя головка имеет нулевой номер). Количество дорожек на диске определяется поверхностной плотностью записи.
Дорожки, в свою очередь, разбиваются на сектора, являющие минимальными физическими элементами хранения и адресации данных. Чаще всего, сектора на каждой дорожке имеют фиксированный угловой размер, благодаря чему на всех дорожках располагается одинаковое количество секторов. Каждая дорожка дискеты 3,5″ содержит 18 секторов. Жесткий диск имеет обычно от 17 до 63 секторов (так считает BIOS). Реально же на дорожке современного накопителя содержится около 100 секторов, а максимальное их количество равно 256. Размер сектора определен в 512 байт. Нумерация секторов на дорожке начинается с единицы, а не с нуля, в отличие от головок и цилиндров.
Каждый сектор несет не только данные, но и служебную информацию. В начале каждого сектора записывается его заголовок (prefix), по которому определяется начало и номер сектора, а в конце — заключение (suffix), в котором находится контрольная сумма (checksum, CRC), необходимая для проверки целостности данных. Заголовок сектора включает в себя идентификатор (ID) сектора, первую CRC (контрольная сумма) и интервал включения записи. Идентификатор содержит информацию о номере цилиндра, головки и сектора. Далее следует интервал включения записи, после которого следует 512 байт данных. За данными располагается вторая CRC и интервал между записями (секторами), необходимый для того, чтобы застраховать следующий сектор от записи на предыдущий. Это может произойти из-за неравномерной скорости вращения диска. Завершает сектор прединдексный интервал, который имеет размер от 693 байт, служит для компенсации неравномерности скорости вращения диска. Таким образом, размер сектора увеличивается до 571 байта, из которых 512 байт составляют данные.
Вся эта информация записывается на заводе при низкоуровневом (LowLewel) форматировании, используя специальные программные средства (например, Speed Store или Disk Manager) или команды DOS. Кроме промежутков между секторами существуют еще и промежутки между самими дорожками. Префиксы, суффиксы и промежутки как раз и составляют то пространство диска, которое теряется при форматировании.
Сектора, находящие друг над другом в пакете дисков, на которые одновременно может быть спозиционирован пакет головок, называется цилиндром. В связи с тем, что накопитель имеет несколько дисков, расположенных друг под другом, разбиения дисков идентичны. Поэтому при рассмотрении жестких дисков чаще говорят о цилиндрах, чем о дорожках.
Адресация дискового пространства в BIOS
Геометрия (ёмкостные параметры) жесткого диска описываются в BIOS следующей формулой:
Общий объем (байт) = C x H x S x 512 (байт),
где С — количество цилиндров; Н — количество головок; S — количество секторов.
Следовательно, вследствие физических ограничений накопителей, BIOS может адресовать ( ) накопитель максимальной ёмкостью 128 Гбайт:
65536 x 16 x 256 x 512 = 128 Гбайт.
Однако из-за ограничений работы контроллера винчестера и BIOS эта величина может быть существенно сокращена. Так, до 1995 года использовался стандартный CHS-режим (стандарт ATA-1), в котором физические параметры накопителя соответствовали логическим, передаваемым в BIOS. При стандартной CHS-адресации максимальное количество цилиндров равно 1024, головок — 16, что приводит к ограничению максимальной емкости жесткого диска (504 Мбайт). Кроме того, BIOS «считает», что у любого накопителя на любой дорожке должно быть ровно 63 сектора.
Современные IDE-контроллеры (начиная со стандартом SATA-2, EIDE) поддерживают универсальный режим трансляции, для которого главным параметром является общее количество секторов. В большинстве BIOS появилась функция «Autodetect», которая позволяет считывать и устанавливать паспортные параметры накопителя. При инициализации накопителю передаются два параметра: количество головок и секторов; затем накопитель подстраивает свою логическую структуру таким образом, чтобы общая емкость не изменилась, причем коррекция осуществляется за счет цилиндров.
Максимальная емкость накопителей АТА-2 значительно увеличена за счет разработки улучшенной BIOS (Enhanced BIOS), что позволило преодолеть барьер в 504 Мбайт емкости жесткого диска. Первая модификация стандарта ATA-2 с режимом передачи PIO 3 использовала режим адресации ECHS, благодаря которому в CMOS Setup была введена опция Large и ECHS. Их надо было использовать для дисков, количество цилиндров которых превышает 1024, но к которым нельзя было применить адресацию LBA. Пересчет происходил в 2 этапа: сначала контроллер считал общее количество цилиндров, затем делил его пополам и в два раза увеличивал количество головок. Этот метод позволил адресовать 3-4 Гбайт дискового пространства.
В 1998 году для BIOS материнских плат выпустили обновление, способное решить проблему «8 Гигабайт». Была изменена адресация к прерыванию Int 13h (DOS), чем удалось преодолеть барьер 1024 цилиндров. Теперь для физической адресации использовались все 28 бит:
С — 16 бит (максимум 2 16 = 65536)
H — 4 бита (максимум 2 4 = 16)
S — 8 бит (максимум 2 8 = 255).
Таким образом, теперь в интерфейсе ATA-5 теоретически был доступен максимальный объем винчестеров. Но биосописатели в очередной раз ошиблись. Они не учли, что при стандартном пересчете LBA с 16-ю головками и 63-мя секторами у винчестеров объемом более 33,8 Гбайт цилиндров окажется больше 65536, и они не поместятся в 16 бит отведенные под цилиндры. Эта проблема была решена в 1999 году введением простого условия: если число секторов превышает 65536, то тогда количество секторов приравнивать к 255. Также для некоторых BIOS существовала ошибка определения винчестеров объемом больше 65 Гбайт, которая, как обычно, решалась обновлением прошивки.
Адресация дискового пространства в BIOS
Геометрия (ёмкостные параметры) жесткого диска описываются в BIOS следующей формулой:
Общий объем (байт) = C x H x S x 512 (байт),
где С - количество цилиндров; Н - количество головок; S - количество секторов.
Следовательно, вследствие физических ограничений накопителей, BIOS может адресовать () накопитель максимальной ёмкостью 128 Гбайт:
65536 x 16 x 256 x 512 = 128 Гбайт.
Однако из-за ограничений работы контроллера винчестера и BIOS эта величина может быть существенно сокращена. Так, до 1995 года использовался стандартный CHS-режим (стандарт ATA-1), в котором физические параметры накопителя соответствовали логическим, передаваемым в BIOS. При стандартной CHS-адресации максимальное количество цилиндров равно 1024, головок - 16, что приводит к ограничению максимальной емкости жесткого диска (504 Мбайт). Кроме того, BIOS "считает", что у любого накопителя на любой дорожке должно быть ровно 63 сектора.
Современные IDE-контроллеры (начиная со стандартом SATA-2, EIDE) поддерживают универсальный режим трансляции, для которого главным параметром является общее количество секторов. В большинстве BIOS появилась функция "Autodetect", которая позволяет считывать и устанавливать паспортные параметры накопителя. При инициализации накопителю передаются два параметра: количество головок и секторов; затем накопитель подстраивает свою логическую структуру таким образом, чтобы общая емкость не изменилась, причем коррекция осуществляется за счет цилиндров.
Максимальная емкость накопителей АТА-2 значительно увеличена за счет разработки улучшенной BIOS (Enhanced BIOS), что позволило преодолеть барьер в 504 Мбайт емкости жесткого диска. Первая модификация стандарта ATA-2 с режимом передачи PIO 3 использовала режим адресации ECHS, благодаря которому в CMOS Setup была введена опция Large и ECHS. Их надо было использовать для дисков, количество цилиндров которых превышает 1024, но к которым нельзя было применить адресацию LBA. Пересчет происходил в 2 этапа: сначала контроллер считал общее количество цилиндров, затем делил его пополам и в два раза увеличивал количество головок. Этот метод позволил адресовать 3-4 Гбайт дискового пространства.
В 1998 году для BIOS материнских плат выпустили обновление, способное решить проблему "8 Гигабайт". Была изменена адресация к прерыванию Int 13h (DOS), чем удалось преодолеть барьер 1024 цилиндров. Теперь для физической адресации использовались все 28 бит:
С - 16 бит (максимум 2 16 = 65536)
H - 4 бита (максимум 2 4 = 16)
S - 8 бит (максимум 2 8 = 255).
Таким образом, теперь в интерфейсе ATA-5 теоретически был доступен максимальный объем винчестеров. Но биосописатели в очередной раз ошиблись. Они не учли, что при стандартном пересчете LBA с 16-ю головками и 63-мя секторами у винчестеров объемом более 33,8 Гбайт цилиндров окажется больше 65536, и они не поместятся в 16 бит отведенные под цилиндры. Эта проблема была решена в 1999 году введением простого условия: если число секторов превышает 65536, то тогда количество секторов приравнивать к 255. Также для некоторых BIOS существовала ошибка определения винчестеров объемом больше 65 Гбайт, которая, как обычно, решалась обновлением прошивки.
Логическая структура
Кроме того, что накопитель должен быть сконфигурирован в CMOS, его логическую структуру должна понимать операционная система. Для обращения к информации используется кластер (allocation unit) - минимальная логическая единица доступа к информации. Каждый кластер состоит из нескольких секторов (8 и более). Каждый кластер пронумерован и может быть либо свободен, либо монопольно занят для хранения определенного файла, даже если не все сектора внутри его заняты. Следовательно, даже файл размером несколько байт требует целого кластера. В результате, на каждом файле теряется около половины кластера. Чем больше размер кластера, тем больше потери. Использование кластеров позволяет ускорить работу, так количество кластеров существенно меньше количества секторов.
Нумерация кластеров не соответствует их порядковому расположению на дисках. При работе используется тот факт, что при записи данных используются все сектора, которые на данный момент находятся под всеми головками, таким образом, заполняется цилиндр. Прежде чем перейти к следующему цилиндру, заполняется текущий чтобы иметь возможность считывать как можно больше информации без перемещения головок.
Для DOS версии 3.0 и выше используется алгоритм следующего свободного кластера размещения файлов на диске. Кластеры устроены так, что каждый из них ссылается на последующий. При работе DOS ищет свободные кластеры не с начала диска, а с места последней записи на диск. DOS устанавливает указатель последнего записанного кластера и ищет свободные кластеры, пользуясь этим указателем. Указатель размещается в RAM и уничтожается при перезарузке. Если DOS дошла до конца диска, то указатель также удаляется, а поиск начинается с начала диска. Таким образом осуществляются операции файлами на диске.
Этот алгоритм позволяет восстанавливать удаленные файлы. При удалении файла в начало его первого кластера ставится знак "?", и все кластеры, связанные с данным считаются свободными. Указатель выставляется на следующий свободный кластер, запись продолжается в идущих далее свободных кластерах. Перезапись кластера, в котором произошло удаление, произойдет только когда указатель в новом цикле дойдет до данного кластера. Даже, если переписывается один файл поверх другого, то запись работает по такой же схеме. А для каждого нового файла используется первая свободная запись.
Установка нескольких ОС на один винчестер
Операционные системы, использующие файловые системы FAT и NTFS должны устанавливаться в Первичные разделы. При установке таких системы не будут видеть другие Первичные разделы, в которые установлены другие ОС. Общими для всех операционных систем будут логические диски, находящиеся в дополнительном разделе. Стоит отметить, что файловая система NTFS позволяет видеть диски FAT, но не наоборот. NTFS из DOS не виден. Кроме того, NTFS позволяет более рационально использовать дисковое пространство.
Чтобы загрузиться с того или иного Первичного раздела, надо последний назначить активным (active), в то время как остальные будут незагрузочными (hidden). Флаг активного раздела выставляется в MBR в одной из 4 записей. Чтобы каждый раз не переназначать активные разделы при загрузке можно использовать программы-мультизагрузчики, которые модифицируют MBR, и при загрузке им передается управление, которое позволяет пользователю выбрать с какого раздела загружаться. Среди таких программ стоит отметить System Commander, SyMon и программу BootMagic из пакета Partition Magic. Последний еще и предлагает поставить пароли на загрузку тех или иных разделов. Linux, Windows 2000 и XP имеют встроенный загрузчик, которые, впрочем, не очень удобны.
Вот теперь, похоже, мы разобрались со всеми аспектами размещения информации на винчестерах и можем перейти к параметрам жестких дисков, по которым следует выбирать то или иное устройство, но об этом в следующем номере:
Файловые системы
Файловая система через использование кластеров позволяет осуществлять доступ к данным. Большинство файловых систем построено на основе таблицы размещения файлов (allocation table - FAT). Наиболее распространены файловые системы FAT12 (диски менее 16 Мбайт), FAT16 (или просто FAT) и FAT32.
FAT подразумевает наличие следующих структур (в порядке расположения их на диске):
Загрузочные секторы главного и дополнительного разделов
Загрузочный сектор логического диска
Таблицы размещения файлов (FAT)
Цилиндр диагностических операций
1. Загрузочный сектор главного раздела - Boot Record (MBR, Главная загрузочная запись) или Partition table (PT, Таблица разделов) - является первым сектором на жестком диске (занимает один или более секторов). Но под этот раздел отдана целиком вся первая дорожка (цилиндр 0, головка 0, сектор 1). Он в себя включает Таблицу главного раздела, которая может содержать только четыре записи, так как больше не поместится в 512 байт. Корневой таблице разделов принадлежат адреса 01BEh-01FDh. Очевидно, что можно создать только 4 раздела, среди которых могут быть Первичные (Primary) и Дополнительные (Extended) разделы. Поэтому если на диске выделен Дополнительный раздел, то Первичных уже можно создать не более трех.
Первичный может иметь только один логический диск, в то время как количество логических в Дополнительном разделе не ограничено. Общее количество логических дисков (томов) не должно быть более 24 (для DOS). В первом секторе Дополнительного раздела расположена его Таблица разделов с такой же структурой как и Корневая таблица разделов. В ней описываются адреса начала и конца первого логического диска в этом разделе и его файловая система, а также зоны, занимаемой остальными логическими дисками (если они есть). Все последующие разделы в Дополнительном разделе имеют аналогичную структуру.
MBR создается с помощью стандартной программы fdisk. Правда последняя накладывает некоторые ограничения: первичный раздел может быть создан только один.
Также в Главной загрузочной записи находится главный загрузочный код - небольшая программа, которая выполняется из BIOS. Она передает управление активному (загрузочному) разделу.
2. Загрузочная запись (Boot Record) занимает 32 первых сектора каждого логического диска (для первичного раздела - цилиндр 0, головка 1, сектор 1). Загрузочный сектор активного раздела получает управление от MBR. Он выполняет некоторые проверки и запускает с диска первый системный файл io.sys. Формирует загрузочная запись программой format. Напомню, что только Первичный раздел может быть активным. Загрузочная запись, как Корневая таблица разделов должны заканчиваться сигнатурой 55АА. По этой сигнатуре BIOS определяет, успешной ли была загрузка.
3. Таблица размещения файлов (FAT) - основная часть файловой системы, давшая ей название. Она представляет собой набор записей с номерами, соответствующих номерам всех кластеров на логическом диске. Каждому кластеру соответствует одно число. Для каждого кластера запись может иметь несколько стандартных значений: кластер свободен, кластер поврежден или кластер является последним кластером файла, или содержать ссылку на следующий кластер в цепочке, относящийся к тому же файлу. Получается, что в таблице хранится информация только о первом кластере цепочки кластеров одного файла.
Каждая ячейка FAT хранит значение длиной 12, 16 или 32 бита. Отсюда и пошли названия FAT12, FAT16 и FAT32. Размер записей в таблице FAT определяет максимальный размер логического тома. Так как в FAT16 запись представлялась 2-байтовым числом, то на логическом диске не могло быть более 65536 кластеров: 2 16 = 65536. В результате несложных вычислений мы находим, что вся таблица FAT помещается в 1 Мбайте. Этим и пользовались вирусы типа "Чернобыль". В связи этим FAT, начиная с DOS 4.0 ограничивала объем логического диска в 2 Гбайта (размер кластера составлял 32 Кбайта): 32 Кб х 65536 = 2 Гб.
Операционные системы Windows 95 OSR2 и старшие поддерживают 32-разрядную FAT с размером кластера до 64 Кбайт. Таким образом, эта система поддерживает тома размером до 2 Тбайт. А применяется она в дисках объемом от 512 Мбайт.
Всего в каждом логическом диске существует 2 таблицы FAT, которые следуют друг за другом. При порче первого экземпляра, используется второй, путем корректировки первого. Но у этой системы защиты есть свои недостатки. Во-первых, вторая таблица используется только когда первая полностью испорчена. Во-вторых, вторая копия часто обновляется за счет первой, так что во второй также могут содержаться ошибки.
В зависимости от размера логического диска меняется и размер кластера. Для FAT16 тома до 260 Мбайт используют кластеры размером 2 Кбайта, до 8 Гбайт - 32 Кбайта. Размеры кластеров и записей определяются при форматировании высоко уровня. Для FAT32 зависимость размера кластера от размера тома приведена в таблице.
Он магнитный. Он электрический. Он фотонный. Нет, это не новое супергеройское трио из вселенной Marvel. Речь идёт о хранении наших драгоценных цифровых данных. Нам нужно где-то их хранить, надёжно и стабильно, чтобы мы могли иметь к ним доступ и изменять за мгновение ока. Забудьте о Железном человеке и Торе — мы говорим о жёстких дисках!
Итак, давайте погрузимся в изучении анатомии устройств, которые мы сегодня используем для хранения миллиардов битов данных.
Читайте также: