Жесткие диски

В этом разделе рассматриваются термины, связанные с использованием жестких дисков.

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

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

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

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

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

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

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

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

Каждый жесткий диск представлен отдельным файлом. Для IDE дисков это обычно /dev/hda и /dev/hdb, а для SCSI дисков - /dev/sda и /dev/sdb. Такие обозначения применяются и для других типов дисков. Файлы устройств для жестких дисков предоставляют доступ ко всему диску, не учитывая разделы, что может привести к ошибкам при неосторожном использовании. Обычно эти файлы используются для доступа к информации в MBR.