Жесткие диски: быстрее, лучше, больше
C момента своего появления в 50-е годы накопители на жестких магнитных дисках (НЖМД) претерпели не менее существенные изменения, чем все остальные подсистемы компьютера. Не касаясь внешних интерфейсов, попробуем заглянуть внутрь накопителя — под кожух, на котором обычно имеется грозная надпись, категорически запрещающая это делать.
ервый накопитель на жестких магнитных дисках, использующий воздушный зазор между головками и магнитной поверхностью, обладал емкостью 5 млн. символов (символ, в отличие от байта, имеет длину 7 бит). Он размещался на сборке из 50 пластин диаметром 60,9 см.
В начале 60-х годов для создания зазора было предложено использовать поток воздуха, образующийся при вращении сборки из пластин, что позволило уменьшить зазор примерно до 20 мкм. Для предотвращения попадания пыли сборка головок и пластин была помещена в герметичный кожух. В кожухе имеется отверстие, прикрытое микропористым фильтром, для выравнивания внешнего и внутреннего давления. Наличие воздуха внутри кожуха принципиально: он необходим для создания воздушной подушки, на которую опирается головка.
Таким образом, основополагающие принципы конструкции накопителей на жестких дисках были сформированы около 40 лет назад. Однако все подсистемы медленно эволюционировали, что привело к поразительным в плане емкости и производительности результатам.
Первым накопителем, имеющим формфактор 5,25 дюйма, был ST-506 производства фирмы Seagate. Его емкость составляла 5 Мбайт. Следующее устройство производства той же фирмы — ST-412 емкостью 10 Мбайт — стало стандартным накопителем компьютера IBM PC XT. Взяв его за точку отсчета, проследим за эволюцией различных подсистем накопителей на жестких магнитных дисках.
Для хранения информации используются круглые пластины (platters), собранные в пакет. Пластины изготовляются из алюминиевого сплава. В первых накопителях магнитный слой наносился методом полива, как на магнитную ленту. Он состоял из мельчайших частиц оксидов железа и других металлов, намагничивающихся в процессе записи, и связующего, которое соединяет частицы друг с другом и с пластинами.
Основной тенденцией в конструкции накопителей является повышение плотности записи. В определенный момент размер частиц оказался слишком велик, поэтому в современных накопителях используются пластины с напыленным тонкопленочным магнитным слоем. Это позволяет уменьшить размер магнитного домена, а следовательно, плотность записи. Тонкопленочное напыленное покрытие имеет более гладкую поверхность, что позволяет уменьшить зазор между головкой и поверхностью пластины, а это, в свою очередь, компенсирует снижение напряженности магнитного поля, связанное с уменьшением размера доменов. Необходимость уменьшения микронеровностей привела к использованию стекла вместо алюминиевого сплава в качестве материала для изготовления пластин. Стеклянные пластины применяются в некоторых моделях накопителей IBM.
Поверхность пластины разбита на концентрические кольцевые дорожки, которые служат для записи и хранения информации. Дорожки должны располагаться как можно ближе друг к другу для повышения плотности записи и уменьшения времени позиционирования головок (но не настолько близко, чтобы создавать взаимные помехи). Дорожка разбита на сектора, которые являются минимальной единицей данных при доступе к накопителю. Традиционно в каждом секторе хранится 512 байт полезной информации.
Первоначально каждая дорожка была разбита на 17 секторов. Это приводило к тому, что плотность записи на периферийных дорожках была значительно (в два и более раз) меньше, чем на центральных. Поэтому в современных накопителях используется технология зональной записи (Zone Bit Recording). Поверхность пластины разбивается на некоторое количество (более десяти) концентрически расположенных зон. В каждой зоне дорожка содержит определенное количество секторов, уменьшающееся от периферии к центру. Это позволяет более эффективно использовать поверхность пластины и повысить общую плотность записи.
Дальнейший резерв повышения плотности записи был изыскан в способах модуляции. ЭДС, которая наводится в головке при чтении, пропорциональна не уровню магнитного поля, а скорости его изменения. Если записать на магнитный носитель сигнал прямоугольной формы (подать меандр на головку записи), то считанный затем сигнал будет иметь форму остроконечных импульсов соответствующей полярности, возникающих в моменты смены направления магнитного потока. Если кодировать единицу сигналом высокого уровня, а ноль — низкого, то при записи длинной последовательности нулей или единиц произойдет сбой синхронизации устройства чтения, так как запись производится с переменной от дорожки к дорожке плотностью. Для преодоления этого явления некоторое количество изменений направления намагниченности должно происходить даже при записи сплошных массивов из нулей или единиц. Первым способом была так называемая частотная модуляция (FM). Она вышла из употребления еще до появления первых персональных компьютеров, и мы упоминаем о ней только потому, что понимание ее принципа облегчит дальнейшее чтение. Итак, при частотной модуляции происходит один переход в начале каждого бита, а еще один — в середине битового интервала, если записываемый бит является единицей. При записи произвольной последовательности из нулей и единиц на каждый бит приходится в среднем полтора перехода.
Модифицированную частотную модуляцию (MFM), возможно, помнят некоторые из ветеранов. Она отличается от FM тем, что переход в начале битового интервала происходит только при записи нуля, если перед ним также записан ноль. При этом количество переходов на бит снижается вдвое, что позволяет повысить плотность записи. Заметим, что учет предыдущего записанного бита при записи текущего позволил вдвое повысить плотность записи.
В технологии RLL (Run Length Limit) кодируются группы из 2 или 4 байт, что позволяет еще больше повысить плотность записи. Одним из результатов повышения плотности записи стало ослабление сигнала от головки чтения. Для борьбы с этим вредным явлением была внедрена технология PRML (partial response, maximum likelihood), позволившая повысить плотность записи еще на 30-40%. Считанный головкой, аналоговый по сути, сигнал переводится в цифровую форму и проходит обработку при помощи цифрового сигнального процессора для восстановления наиболее правдоподобной его формы. Все это немного похоже на гадание на кофейной гуще, но современные накопители, использующие эволюционное развитие этой технологии — EPRML, почти всегда правильно считывают то, что на них было записано.
Еще одним новшеством, касающимся собственно магнитных носителей, является исчезновение плохих секторов с новых дисков. Понятно, что изготовить пластину без дефектов практически нереально. Раньше на каждом накопителе имелась заполненная техником вручную во время заводских испытаний таблица плохих секторов. Сегодня ничего подобного нет. Куда же девались плохие сектора? К сожалению, никуда они не девались, просто таблица в новых накопителях записывается непосредственно в контроллер, а плохие сектора переадресовываются на запасные. Скорее всего, это делается из маркетинговых соображений — приятно взять в руки новенький накопитель без единого «бэда». Более того, переадресация может производиться накопителем в фоновом режиме, то есть если сектор, например, прочитался не с первого раза, то во внутренних таблицах он помечается как плохой, а вместо него назначается сектор из резерва. Достать из накопителя информацию об истинном положении дел можно только при помощи специальных сервисных программ.
Кроме того, навсегда ушел параметр Interleave (перекрытие секторов). При наличии медленной электроники и медленных программ сектора на дорожке было выгоднее размещать не подряд (1-2-3-4…), а с перекрытием (1-10-2-11…), с тем чтобы при последовательном чтении к моменту, когда прочитанный сектор обработан, к головке как раз подъехал следующий, в противном случае пришлось бы ждать почти целый оборот шпинделя. Но свято место пусто не бывает: вместо перекрытия секторов появились смещения секторов и дорожек.
Переключение на соседнюю поверхность даже в пределах одного цилиндра занимает в среднем порядка одной миллисекунды. Это время складывается из ничтожно малого времени переключения головок, производящегося электронными схемами контроллера, и времени установления головки. Дорожки, даже расположенные на разных сторонах одной и той же поверхности, в силу погрешностей изготовления находятся не строго друг под другом, а с некоторым разбросом. Для того чтобы установить головку точно на дорожку, требуется считать определенное количество сервоинформации, а на это уходит дополнительное время. Однако за миллисекунду шпиндель накопителя с частотой вращения 7200 об./мин успевает повернуться почти на одну восьмую оборота. Поэтому первый сектор следующей дорожки в цилиндре смещен относительно предыдущей примерно на 45о, что позволяет начать чтение как раз в тот момент, когда закончен процесс установки головки.
Переход к соседнему цилиндру также требует времени (типовое значение 2-4 мс). С учетом этого первый сектор первой дорожки следующего цилиндра сдвинут относительно последнего сектора последней дорожки предыдущего цилиндра. Эти ухищрения позволяют снизить потери времени на ожидание того момента, когда нужный сектор окажется под головкой в режиме непрерывного чтения длинных файлов. К сожалению, процесс случайного чтения/записи не поддается оптимизации, поэтому необходимо проводить дефрагментацию диска, чтобы полностью реализовать заложенный в накопителе потенциал.
В ранних моделях накопителей, головки которых передвигались при помощи шаговых двигателей, для устранения появляющихся ошибок чтения/записи проводилась процедура низкоуровневого форматирования (Low Level Format). При ее проведении дорожка записывалась заново точно на том месте, куда шаговый двигатель помещал головку. Это исключало ошибки позиционирования, накапливающиеся в результате работы. С увеличением поперечной плотности записи (количество дорожек на миллиметр) для перемещения головок стали использоваться магнитоэлектрические приводы, называемые звуковыми катушками (Voice Coil). Современные приводы имеют со звуковой катушкой лишь общий принцип работы (взаимодействие полей постоянного магнита и обмотки), перемещается же обмотка не вдоль собственной оси, а перпендикулярно ей. Для точного позиционирования головки используется записанная на поверхностях сервоинформация. Считывая ее, механизм позиционирования определяет силу тока, который нужно пропустить через обмотку. В первых моделях накопителей с магнитоэлектрическим приводом сервоинформация размещалась в одном месте на дорожке. Она называлась вклиненной (Wedge) сервоинформацией. Такой метод, во-первых, требовал в среднем половины оборота шпинделя для позиционирования головки, а во-вторых, не позволял компенсировать эксцентриситет дорожки. На смену ему пришла выделенная (Dedicated) сервоинформация, размещавшаяся на одной из поверхностей каждой пластины. Этот метод позволил ускорить позиционирование головок, но потери 50% емкости и неизбежный в процессе производства разброс положения дорожек на разных поверхностях привели к тому, что ему тоже пришлось искать замену.
В современных накопителях используется встроенная (Embedded) сервоинформация, распределенная между секторами. Сервоинформация записывается на пластины один раз — во время изготовления накопителя — при помощи устройства, называемого Servowriter. Таким образом, для современных накопителей теряет смысл понятие низкоуровневого форматирования. Максимально приблизить накопитель к тому состоянию, в каком он был непосредственно после изготовления, можно при помощи утилит, записывающих нули во все сектора всех дорожек всех цилиндров.
Этим, кстати, объясняется тот факт, что с современных накопителей можно считать информацию даже после форматирования. Форматирование размечает заново только структуру файловой системы, но не содержимое секторов. Найдя после форматирования путем низкоуровневого чтения через BIOS сектор с интересующим содержимым, очень часто можно путем чтения последующих секторов восстановить весь файл.
В современных накопителях используются раздельные головки чтения и записи, скомпонованные в единую сборку. Это объясняется тем, что к головкам предъявляются разные требования. Одновременное удовлетворение этих требований за счет компромисса приводило в старых накопителях к снижению плотности записи. Головка записи в целом сохранила свой принцип работы: через медную катушку пропускается ток, а создаваемое магнитное поле концентрируется при помощи магнитопровода, имеющего зазор, через который оно выходит наружу и перемагничивает материал носителя. Головки чтения основаны на эффекте аномального магниторезистивного эффекта (GMR, Giant Magneto Resistive Effect). Такие головки более чувствительны, но способны работать только на чтение. Принцип их работы заключается в том, что при воздействии магнитного поля на «бутерброд», собранный методом напыления различных материалов, этот пакет меняет свое сопротивление электрическому току.
Наконец, еще одно «новшество», которое впервые возникло десять лет назад. Тогда, в 1992 году, IBM выпустила 3,5-дюймовые НЖМД с технологией PFA (Predictive Failure Analysis — анализ предсказуемых сбоев). Технология базировалась на периодическом анализе различных критических величин, таких как высота полета головок, количество повторных чтений секторов и т.д. Значение этих параметров сравнивалось с пороговыми значениями, на основе чего производилась оценка времени жизни, отпущенного данному экземпляру НЖМД.
На базе технологии PFA впоследствии был разработан ANSI-стандарт S.M.A.R.T. В 1995 году была образована специальная рабочая группа SWG (S.M.A.R.T. Working Group). Помимо IBM членами этой группы были Conner Peripherals, Fujitsu Limited, Hewlett-Packard Company, Maxtor Corporation, Quantum Corporation, Seagate Technology и Western Digital Corporation.
В настоящее время имеется довольно много утилит — как платных, так и бесплатных, осуществляющих контроль S.M.A.R.T.-параметров НЖМД. Такой контроль осуществляется достаточно редко и только в период отсутствия активности на интерфейсе IDE, так что слухи о повышенной нагрузке на систему от S.M.A.R.T. сильно преувеличены. Зато контроль S.M.A.R.T.-параметров НЖМД может предотвратить большинство предсказуемых отказов. К сожалению, не все отказы предсказуемы: например, выход микросхемы из строя происходит без всяких предупреждений, зато появлению сбойных секторов обычно предшествуют многочисленные попытки повторного чтения, а отказу двигателя — изменение скорости его вращения.
Таким образом, за свою 50-летнюю историю накопители на жестких магнитных дисках стали намного меньше по размеру, намного больше по объему и намного быстрее.
КомпьютерПресс 8'2002