В последние месяцы на глаза попадалось много материалов о том, что производители скрывают использование технологии SMR в своих устройствах. Новости о том, что покупатели жестких дисков подают в суд на производителей и тому подобное.
Дело в том, что в силу особенностей технологии, такие устройства плохо подходят для многих сценариев использования, в которых находят своё применение жесткие диски. Выражается это в катастрофическом падении производительности.
Для определения того что в диске, лежащем на полке магазина, применена технология SMR, если эта информация не указывается производителем явно, требуется знать модельные ряды и их особенности. По другому, похоже, никак. Не получится со 100% вероятностью определить это и по заявленным характеристикам диска.
Но если диск уже попал к вам в руки, определить использование технологии SMR можно достаточно просто. Далее я расскажу о том, как это сделать.
В настоящий момент используется три подхода к реализации технологии SMR:
- Drive Managed SMR,
- Host Managed SMR,
- Host Aware SMR.
О различиях между ними, а также в целом о технологии SMR рассказано в недавно вышедшей на Хабре статье.
Делается такое перекрытие для того, чтобы путём частичного наложения треков друг на друга уменьшить их ширину без изменения ширины головки записи. Это вынужденная мера, т.к. при дальнейшем уменьшении размера головки возникают сложности с созданием нужной для записи напряженности магнитного поля.
Плюс такого подхода — более высокая плотность записи. Минус — то, что при записи данных на какую-либо дорожку, затираются данные на соседней. Перезапись соседней вызовет повреждения данных на следующей. И так далее.
Поэтому, чтобы не требовалось перезаписывать диск до конца, перекрывающиеся дорожки разбиты на группы, называемые лентами. Причём особенность работы механизма позиционирования такова, что диск не может производить перезапись, например, с середины ленты до её конца. Возможна только запись всей ленты от начала до конца.
Для сохранения данных на конкретный трек, SMR диску может потребоваться выполнить в сотни раз больше операций, чем диску без технологии SMR. И это приведёт к многократному падению производительности.
Поэтому данные сначала кэшируются в специальные области, дорожки в которых не перекрывают друг друга (медиакэш). Там можно сохранять данные не затирая соседние треки. А потом уже в фоновом режиме диск сам раскладывает их по лентам.
Используемые алгоритмы распределения данных достаточно сложны, применяются всевозможные оптимизации. Ведь получается, что для того, чтобы перезаписать ленту, надо сначала куда-то сохранить с неё данные. А место под перенос тоже может потребоваться освободить. И куда-то деть данные уже оттуда. И так далее. И чем сложнее алгоритм, тем сложнее тщательно протестировать все возможные варианты. Отсюда баги.
С Host Managed SMR и Host Aware SMR в «обычной жизни» вы, вероятнее всего, не столкнётесь. В свободной продаже эти модификации не представлены или поставляются ограниченно и только под заказ. И в обычной ситуации у некорпоративного пользователя шанс столкнуться с такими дисками очень мал.
Поэтому далее речь пойдёт только о Drive Managed SMR дисках. Именно такой диск вы можете купить в магазине, не зная о том, что в нём используется SMR.
Быстрый способ определения применения SMR в HDD на основе информации о вендор-семействах
Если бы все производители жестких дисков придерживались стандарта в этом отношении, то ответ на вопрос об использовании SMR конкретным устройством мог бы быть получен очень просто. Достаточно было бы взглянуть на состояние соответствующего бита в паспорте накопителя:
Но на сегодняшний день только SATA-диски Toshiba официально сообщают в паспорте, что они SMR. Для этого в АТА-стандарте предусмотрены соответствующие биты в данных команды Identify Device. Все остальные производители стандарт игнорируют.
Единственный известный мне на данный момент способ «мгновенного» определения использования SMR основан на знаниях об особенностях вендор-семейств и определении принадлежности жесткого диска к конкретному семейству. Этот подход использует R.tester при установке соответствующего флага:
Определение использования черепичной записи в жестком диске путём тестирования
Легко определить, что в жестком диске реализована технология SMR, увидев отражение её врождённых особенностей в результатах тестов чтения-записи. Об этом далее.
Тест чтения
Если диск занят данными частично, или пуст, на графике теста чтения можно увидеть картину, характерную исключительно для моделей с SMR. Прошивка «знает», что в запрошенный программой сектор ничего не писалось, и отдаёт нули, не выполняя чтения с поверхности. Отсюда этот скачок в скорости чтения, либо просто феноменальная скорость, если диск пустой:
Для экономии времени, простое линейное чтение можно заменить на чтение с прыжками. При этом каждый следующий блок читается начиная с адреса, превышающему адрес предыдущего чтения на длину прыжка.
Приведённый выше график как раз отражает результаты такого теста.
Тест записи
Самый наглядный способ проявить использование технологии SMR — подобрать такой режим записи, при котором кэш будет заполняться максимально быстро, а его раскладывание по лентам потребует от микропрограммы большого объёма работы.
Предполагаю, что для большинства моделей SMR-дисков и наиболее распространённых способов их подключения, это будет случайная запись блоков размером в 2048 секторов. Не сильно облегчит участь диска замена случайной записи на запись согласно любому правилу, по которому записываемые последовательно блоки будут попадать в разные ленты.
В качестве основного тестового алгоритма я выбрал линейную запись с прыжками. Аналогично чтению, при этом каждый следующий блок пишется по адресу, превышающему адрес предыдущей записи на длину прыжка.
Считаю график с результатами такого теста наиболее наглядным. Ведь при отображении зависимости от LBA, ось адресов является также осью времени, хоть и в нелинейном масштабе.
Длины прыжков подбирались таким образом, чтобы в каждую ленту попадало от одного до пяти блоков. Рекомендуемый согласно стандарту размер ленты — 524288 блоков. Производители эту рекомендацию чаще всего игнорируют, но в качестве ориентира для примерного определения длины прыжка его использовать можно.
Объём данных, который требуется записать для того, чтобы SMRность проявилась во всей красе, зависит от конструкции диска и реализации его микропрограммы. А также от заполнения диска и наличия в кэше неразложенных по лентам данных, полученных в предыдущий период времени. И может отличаться буквально на порядки. Один диск покажет кардинальное падение производительности после записи 3ГБ, другому потребуется 300ГБ.
Получающиеся в результате графики могут значительно отличаться даже для одного конкретного экземпляра диска, в зависимости от разных, на первый взгляд малозначительных мелочей. Например, может сильно влиять размер отступа от нулевого LBA перед началом записи.
И это не говоря уже о влиянии заполненности кэша, распределения данных по диску, и различиях между разными производителями и моделями.
Вот, к примеру, параметры теста не менялись, диск один и тот же. Каждый запуск — новая картина. Причём между запусками у диска каждый раз было достаточно времени для завершения фоновых процессов:
И это исправный диск. Общий объём записи в процессе всего набора тестов из скрипта составил лишь 30 гигабайт!
Поэтому запоминать параметры конкретных тестов и сравнивать формы графиков с точки зрения определения применения SMR смысла нет. Достаточно представления об общей картине, которая качественно выглядит примерно одинаково для всех SMR дисков, которые мне попались в качестве испытуемых.
Вот ещё, для дополнения представления. Другая модель диска, снова одинаковые параметры теста:
А теперь разные параметры:
Глядя на вышеприведённые графики, легко понять, какие характерные черты показывают, что диск использует SMR. Особенно, если знать, что результаты аналогичных тестов не-SMR устройств выглядят примерно так:
Скорость немного падает по мере увеличения LBA.
Выше приведены графики скорости записи, поскольку этот параметр более понятен широкой аудитории. Примеры графиков времени доступа под спойлером, кому интересно. Там также наблюдается характерная картина и выражена она ещё заметнее.
Графики с исправных дисков без SMR намного однообразнее и выглядят примерно так:
Тест чтения сразу после теста записи
Можно считать это ещё одним способом определения использования SMR. Сравните графики тестов чтения, полученные в процессе выполнения одного тестового скрипта. Один до выполнения записи (он же был приведён в разделе «Тест чтения»), другой — после. Параметры тестов одинаковы.
Дополнительная информация
На тему конструкции SMR дисков и особенностей их работы, мой коллега сделал ролик. Достаточно коряво получилось, но было решено, что лучше выложить в таком виде сейчас, чем в улучшенном в сильно отдалённом будущем.
Если вас интересуют детали тестов, значения конкретных параметров, полные наборы результатов — пишите, выложу. В статье эту информацию не размещал, поскольку целью было дать качественное представление о картине, сделав это лаконично.
casuss
Вроде ж делали гибриды HDD+SSD в одном корпусе — для SMR прям напрашивается.
SSD как кеш на запись, ну и чтение наверное ускорит…
lll000lll Автор
Есть SSHD, это HDD + NAND-флеш. Там нет SSD. SSD это устройство, а там просто добавлена NAND-флеш память к HDD. Их мало и они очень ненадёжны. С точки зрения набора команд, SSHD аналогичны HDD и как-либо дополнительно управлять происходящими в них процессами нельзя.
Есть полноценные HDD + SSD т.н. Hybrid-диски. Там кэш реализован именно SSD-устройством, которое работает в связке с диском, перехватывает трафик на интерфейсе и работает в общем-то полупрозрачно для харда. Для Hybrid-дисков в АТА стандарте есть целый набор команд. И Винда это поддерживает. И драйвера контроллеров должны это поддерживать. Такие диски — ещё более редкие, чем SSHD. И в реальной работе они так же ненадёжны, как и SSHD.
Seagate сейчас выпускает SSHD SMR. Возможно в будущем технологии, использующиеся в этих устройствах, будут отлажены, но сейчас это выглядит комбинацией недостатков SSHD и SMR.
sim2q
Что интересно помешало дописать, что при отвале NAND превращаться просто в hdd
lll000lll Автор
Там не дописать, а многие вещи кардинально переписать тогда нужно. Думаю, что просто задача такая не ставилась. Потому что было предположение о большей надёжности такого решения.
sim2q
да как обычно, нужно 1% юзерей за гарантийным сроком
rnd1ninja
Чисто технически — именно так код их прошивок и написан!
Но в реальной среде в реальных условиях работы — "что-то идёт не так" и при повреждении / гибели NAND, чаще всего диски впадают в состояние «комы» из-за возникающих exceptions (разные диски по-разному, но суть одинаковая).
SSHD — очень занимательные, но очень ненадёжные "погремушки"…
Даже самые современные SAS 10K с NAND «на борту» — превращаются в "кирпичи" буквально уже после 465 дней работы и записи каких-то ничтожных (по меркам обычных hdd) 50ТБ данных.
И такие случаи далеко не единичные.