Принцип работы накопителей на жестких дисках
Основные принципы работы накопителей на жестких и гибких дисках практически одинаковы: данные записываются и считываются универсальными головками чтения-записи с поверхностей вращающихся магнитных дисков, разбитых на дорожки и секторы (512 байт каждый).
В накопителях обычно устанавливается несколько дисков, и данные записываются на обеих сторонах каждого из них. Для каждой стороны каждого диска предусмотрена своя головка чтения/записи, но при этом все головки смонтированы на общем стержне, или стойке. По этой причине головки не могут перемещаться независимо друг от друга и двигаются только синхронно.
Частота вращения жестких дисков в настоящее время составляет от 5400 до 10000 об/мин. Скорость работы того или иного жесткого диска зависит от частоты его вращения, скорости перемещения системы головок и количества секторов на дорожке. Благодаря сочетанию всех этих факторов обмен данными с жесткими дисками осуществляется гораздо быстрее, чем с накопителями на гибких дисках
При нормальной работе жесткого диска головки чтения/записи не касаются (и не должны касаться!) дисков. Но они опускаются на поверхность при выключении питания и остановке дисков. Во время работы устройства между головкой и поверхностью вращающегося диска образуется воздушная подушка. Для предотвращения повреждения головок и дисков при попадании посторонних частиц или от столкновения головок с дисками в большинстве накопителей поверхности магнитных дисков легируют и покрывают специальными смазками, что позволяет устройствам выдерживать ежедневные "взлеты" и "приземления" головок, а также более серьезные потрясения.
Запись информации на диски осуществляется на специальные нумерованные отрезки дорожек, называемых секторами.
Количество секторов может быть разным в зависимости от плотности дорожек и типа накопителя. Например, 17-100 секторов на дорожке Секторы, создаваемые с помощью стандартных процедур форматирования, имеют емкость 512 байт. Нумерация секторов на дорожке начинается с единицы, в отличие от головок и цилиндров, отсчет которых ведется с нуля.
В начале каждого сектора записывается его заголовок (или префикс — prefix portion), по которому определяется начало и номер сектора, а в конце— заключение (или суффикс — suffix portion), в котором находится контрольная сумма (checksum), необходимая для проверки целостности данных. Помимо указанных областей служебной информации, каждый сектор содержит область данных емкостью 512 байт. При низкоуровневом (физическом) форматировании всем байтам данных присваивается некоторое значение, например F6h. Данный процесс называется индексацией.
При форматировании диска в начале и конце каждого сектора создаются дополнительные области, в которых записываются их номера, а также прочая служебная информация, позволяющая контроллеру идентифицировать начало и конец сектора. Это позволяет отличать неформатированную и форматированную емкости диска. После форматирования емкость диска уменьшается, поскольку для обеспечения нормальной работы накопителя некоторое пространство на диске должно быть зарезервировано для служебной информации.
После индексации на дисках создаются интервалы, которые нужны для того, чтобы при перемещении головки на новую дорожку переходные процессы (установка) закончились до того, как она окажется перед ее первым сектором. В этом случае его можно считывать сразу, не дожидаясь, пока диск совершит дополнительный оборот. В некоторых накопителях, работающих с чередованием (interleave) 1:1. дополнительное время обеспечивается за счет смещения секторов таким образом, чтобы первый сектор дорожки под головкой появлялся с задержкой.
Идентификатор (ID) сектора состоит из полей записи номеров цилиндра, головки и сектора, а также контрольного поля CRC для проверки точности считывания информацииID. В большинстве контроллеров седьмой бит поля номера головки используется для маркировки дефектных секторов в процессе низкоуровневого форматирования или анализа поверхности.
Интервал включения записи следует сразу за байтами CRC; он гарантирует, что информация в следующей области данных будет записана правильно. Кроме того, он служит для завершения анализа CRC (контрольной суммы) идентификатора сектора.
В поле данных можно записать 512 байт информации. За ним располагается еще одно поле CRC для проверки правильности записи данных. В большинстве накопителей размер этого поля CRC составляет два байта, но некоторые контроллеры могут работать и с более длинными полями кодов коррекции ошибок (ЕСС — Error Correction Code). Записанные в этом поле байты кодов коррекции ошибок позволяют при считывании обнаруживать и исправлять некоторые ошибки. Эффективность этой операции зависит от выбранного метода коррекции и особенностей контроллера. Наличие интервала отключения записи позволяет полностью завершить анализ байтов ЕСС (CRC).
Интервал между записями необходим для того, чтобы застраховать данные из следующего сектора от случайного стирания при записи в предыдущий сектор. Это может произойти, если при форматировании диск вращался с частотой, несколько меньшей, чем при последующих операциях записи. При этом сектор немного длиннее, и для того чтобы он не выходил за установленные при форматировании границы, их слегка "растягивают", вводя вышеупомянутый интервал. Его реальный размер зависит от разности частот вращения диска при форматировании дорожки и при каждом обновлении данных.
Предындексный интервал необходим для компенсации неравномерности вращения диска вдоль всей дорожки. Размер этого интервала зависит от возможных значений частоты вращения диска и сигнала синхронизации при форматировании и записи.
Информация, записываемая в заголовке сектора, имеет большое значение, т.к. содержит данные о номере цилиндра, головки и сектора. Все эти сведения (за исключением поля данных, байтов CRC и интервала отключения записи) записываются на диск только при форматировании низкого уровня. В накопителях, в которых привод головок осуществляется от шагового двигателя, в результате колебаний температуры возможны смещения текущих положений дорожек записи от размеченных на диске в процессе форматирования. При этом записываемые "полезные" данные и сопутствующие им поля оказываются расположенными не на одной линии с заголовками сектора. Это приводит к появлению сообщений типа Abort, Retry, Fail? во время считывания и записи. Исправить положение можно, только снова выполнив низкоуровневое форматирование диска. При этом служебная информация и "полезные" данные в секторах окажутся записанными в точном соответствии с новыми положениями дорожек.