Дисковые устройства 102

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

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

Следующие за ними – цилиндр 1. Дорожки с номером 1603 на всех пластинах образуют цилиндр 1602. Многие операционные системы ожидают, что дисковые участки (slices) будут охватывать полные цилиндры, и приходят в ярость, если это не так.

Каждая дорожка делится на сегменты, которые называются секторами (sectors), или блоками (blocks). Каждый сектор может хранить определенный объем данных (вот уже много лет этот объем составляет 512 байтов) и имеет уникальный номер в пределах дорожки. Нумерация секторов начинается с 1.

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

Долгие годы производители жестких дисков и операционных систем устанавливали и снимали ограничения. Это относится ко всем аспектам архитектуры компьютеров – возможно, некоторые из вас еще помнят времена, когда у персонального компьютера было не больше 640 Кбайт оперативной памяти. Может быть, среди вас есть даже те, кто считал эти 640 Кбайт невообразимо большим объемом и не знал, что делать с такой прорвой памяти.1 Производители жестких дисков научились обходить эти ограничения, обманывая BIOS и/или операционную систему. Если вы, к примеру, производитель жестких дисков с 126 секторами на дорожке, а большинство операционных систем понимает только 63 сектора на дорожке, то у вас проблема. Самое простое решение состоит в том, чтобы научить жесткий диск лгать. Если диск заявит, что число секторов у него вдвое меньше фактического, а число пластин вдвое больше, результат вычислений от этого не изменится, и все операционные системы по-прежнему смогут идентифицировать отдельные блоки. Ложь ликвидирует проблему. Знакомясь с историей управления дисками, вы встретите самые разные типы подобных преобразований. Ведущий разработчик FreeBSD очень точно высказался по этому поводу: «х86 BIOS – просто дерьмо».

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

Многие операционные системы пытаются оптимизировать производительность, опираясь на информацию о цилиндрах. Однако из-за преобразования информации о геометрии эти схемы оптимизации работают не так, как предполагалось.

Да знаю, знаю, что вас тогда и на свете-то не было! Пожалуйста, перечитайте сноску в разделе «Рождение FreeBSD» введения.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий