Что такое SMR и чем это чревато для пользователей дисков
В далеком 2006 году, в жестких дисках начали применять так называемую перпендикулярную запись (PMR – Perpendicular Magnetic Recording). С 2006 по 2012 годы ее применение позволило резко нарастить плотность записи данных на магнитные пластины, применяемые в жестких дисках в качестве носителя данных. Одновременно выросли скорость работы и объемы хранимой информации. Если в 2006 году, типичный диск формата. 3.5”, мог вместить на одну пластину 160 гигабайт данных, то в 2012 году на одну пластину того же формата входил уже 1 терабайт (500 гигабайт на пластину формата 2.5”). А вот дальше наступил технологический предел. И магнитные пластины, вмещающие 1.5 терабайта данных на пластину формата 3.5” (1 терабайт на пластину формата 2.5”), пошли в серийное производство только в 2018 году. И дальнейший рост плотности – сильно затруднен по объективным причинам. Однако производители магнитных носителей данных, за прошедшие годы приучили пользователей и покупателей к постоянному росту объемов дисков и появлению все новых и новых устройств, с регулярным снижением цен на диски, в пересчете на единицу объема. А так как при неизменной плотности записи, наращивать объемы дисковых накопителей можно только увеличением количества магнитных пластин , то это приводит, с одной стороны, к удорожанию изделий (магнитная пластина – самый дорогостоящий элемент конструкции диска), а с другой стороны – технически невозможно для носителей данных, предназначенных для тонких и ультра тонких ноутбуков (для них делают диски тонкого (7мм толщины) и ультра тонкого (5мм) дизайна, куда в принципе - нельзя установить больше одной пластины, в отличие от классического дизайна толщиной 9,5мм, позволявшего установку 2-х пластин).
В общем, нужно было что-то придумать, чтобы рост объемов дисков продолжался и старинная маркетинговая стратегия «покупайте новое, оно вместительнее и лучше старого» продолжала работать. Да и покупателям ультра тонких ноутбуков хотелось иметь в них диски с объемами свыше 500 гигабайт (одна магнитная пластина для диска формата 2.5”, до недавнего времени больше вместить не могла). И решение было найдено. Производители ”вспомнили”, что на диске объемом 500 гигабайт, свыше 976 миллионов секторов (минимальная единица данных, которую можно записать за раз). Каждый из которых, имеет свой заголовок, область данных, избыточность хранения данных (используется для коррекции случайных ошибок), контрольную сумму данных (используется для проверки корректности операций чтения-записи данных). Сами сектора с данными записываются на магнитные пластины не сплошь, а трэками, между которыми есть защитные интервалы (чтобы запись на один трэк не влияла на соседние). И трэков этих на магнитную пластину формата 2.5” может быть более 250000 на каждую поверхность. И интервалов между ними примерно столько же. В общем, разработчиков дисков посетила мысль, что очень много места на магнитной пластине не используется под хранение пользовательских данных. И они решили это изменить. Так на свет появилась технология черепичной записи, сокращенно SMR (Shingled Magnetic Recording). Первые же диски, выпущенные по этой технологии стали вмещать в 2 раза больше пользовательских данных на магнитную пластину. Но возникли не только плюсы.
Принципиальное отличие SMR от предыдущих решений состоит в том, что минимальным блоком записи теперь является не сектор, а лента, состоящая из нескольких подряд идущих трэков между которыми больше нет защитных интервалов. То есть, переписать внутри нее отдельный кусок, не переписав всю ленту целиком теперь нельзя. Если ленту не дописать – она не будет читаться полностью. Размер ленты у большинства популярных накопителей на данный момент, составляет 500 мегабайт – 1 гигабайт. Пока оперируют файлами размером больше ленты – все происходит, как и ранее. А вот если возникает необходимость переписывать небольшие куски данных внутри ленты, например, при работе с индексами баз данных или индексами файловой системы, диск вынужден при этом, из-за малых изменений, переписывать все вокруг (внутри ленты). При интенсивной работе с малыми объектами это неизбежно приведет к значительному падению скорости работы (в разы). Чтобы это компенсировать, производители с одной стороны значительно увеличили размеры кэш-буфера дисков (128 мегабайт и более), а с другой стороны применили технологии позволяющие буферизировать саму работу с лентами и данными в них. Seagate придумал и внедрил медиа-кэш. Это специальная область на магнитных пластинах, в которую при записи сначала складывают поступающие на запись данные. Она организована как не видимая для пользователя область данных, с обычной организацией, где работа идет секторами, а не лентами. Если требуется записать объем данных больше размера ленты – он сразу пишется на постоянное место на пластине. Если записать или изменить требуется небольшие куски, то они сначала пишутся в медиа-кэш. А при простое в дисковых операциях (когда у диска появляется свободное время) с учетом этих кусков формируются ленты и пишутся на место постоянного размещения (Main Store). Медиа-кэш по размеру достигает десятков гигабайт. При этом, там хранятся только изменения в данных размером меньше ленты, а сами данные - в области постоянного хранения. При не очень интенсивной работе с мелкими файлами, этого вполне хватает, чтобы пользователь не заметил замедления в работе. Что произойдет, если содержимое медиа-кэша еще не успело переехать на постоянное место жительства, а его уже требуется прочитать? Данные будут прочитаны и отданы из медиа-кэша. Если их понадобится снова изменить – в медиа-кэше появится очередная запись, с указанием, что она – более актуальна. Что произойдет, если место в медиа-кэше закончится, а на запись будут поступать новые данные? Диск начнет в приоритетном порядке освобождать место в медиа-кэше, формируя ленты и записывая их на пластины, на место постоянного хранения. При этом требующие записи данные не будут записаны, пока место под них в медиа-кэше не освободится. То есть диск будет очень сильно тормозить. При этом организация доступа к дисковому пространству теперь такова, что мимо медиа-кэша никакие операции не идут. И любая запись небольшой порции данных теперь пишется в область медиа-кэша. Что чревато ее ускоренным износом. Более того, на месте постоянного хранения данные могут быть не актуальны, так как все последние изменения – в медиа-кэше. Что произойдет, если при работе с медиа-кэшем произойдет ошибка в структуре его управляющих таблиц? Вся область данных для пользователя сразу станет недоступна. Так как управляющие структуры медиа-кэша (MCMT – Media Cache Maintanance Table) теперь часть трансляции и от них зависит, откуда какие данные брать, а также какая область (медиа-кэша или Main Store) актуальна. То есть, какой сектор, из какой области диска чему соответствует и насколько актуальны данные в нем – зависит от этих структур. Практика показывает, что при интенсивной работе с файловой системой, часть ее таблиц и индексов – постоянно живет в медиа-кэше и месяцами может не переписываться на место постоянного размещения! А если медиа-кэш имеет значительное заполнение, то его содержимое может влиять на актуальность большей части данных в области постоянного хранения! Т.е. в медиа-кэше живут все последние, небольшие изменения за период времени до нескольких месяцев! Теперь представим себе распространенную ситуацию. Диск из внешней USB коробки, “на горячую” отключают от устройства, которое с ним работало. В случае обычного диска – в самом худшем случае часть транзакций не будет завершена и возникнут нарушения в структуре файловой системы. Сам диск будет продолжать исправно работать. В случае SMR диска, когда запись идет не маленькими секторами, а лентами объемом до гигабайта, которые пишутся уже не долю секунды, а значительно дольше, есть не малый риск получить не завершенную транзакцию уже в самом медиа-кэше и его управляющей структуре и недописанную ленту в области постоянного хранения. При следующем включении, микропрограмма диска это обнаружит и постарается исправить ситуацию. Если ей это не удастся или на месте медиа-кэша или MCMT возникнет ошибка (из-за износа – с этими областями идет непрерывная и очень интенсивная работа), то доступа к пользовательским данным не станет. Сразу ко всей области. Ситуация очень распространенная с дисками семейства Rosewood (2.5" 500Gb-2Tb), которые массово продаются с 2016 года.
И еще немного о медиа-кэше. Он появился у дисков Seagate задолго до SMR (примерно в 2011-2012 годах). Изначально он имел размер в несколько гигабайт и был предназначен для ускорения операций чтения-записи. Т.е. это был еще один уровень кэширования (в дополнение к кэш-буферу на плате управления диска) и только. Управляющая микропрограмма диска отслеживала частоту дисковых операций по определенным адресам и если куда-либо обращались часто - содержимое оттуда копировалось в медиа-кэш. Располагался он в самой плотной (а значит - самой быстрой при работе) области магнитных пластин. И при регулярном обращении к небольшим кускам данных на диске - брать их из медиа-кэша было быстрее. Как следствие постоянной работы с медиа-кэшем - эта область диска при появлении проблем страдала первой. До появления SMR - у многих специалистов по восстановлению данных сложилось отношение к медиа-кэшу, как к чему-то не сильно важному, чем легко можно пренебречь. Т.е. при сбое в медиа-кэше, диск переставал работать и данные для пользователя становились недоступны. Большинство специалистов по восстановлению данных в таких случаях просто отключали работу с медиа-кэшем и получали доступ к основной рабочей области. Далее спокойно вычитывали данные, пренебрегая копиями последних изменений из небольшой области медиа-кэша (в основном его содержимое дублировалось в области Main Store). С появлением SMR изменилась роль медиа-кэша. Теперь данные в нем в большинстве случаев НЕ дублированы. В случае с SMR дисками, медиа-кэш намного (на порядок и более!) больше по размеру чем у PMR дисков, и запросто может хранить ВСЕ последние небольшие (менее ленты) изменения в данных за последние несколько месяцев! Например, при регулярной работе с базами данных, утрата содержимого медиа-кэша может унести за собой большинство изменений в базе данных за последние месяцы! Сами файлы вроде на месте, а содержимое у них - не актуально! При этом, многие "специалисты" продолжают считать медиа-кэш у SMR дисков не критичной частью и легко теряют его содержимое при попытках восстановления данных. Распространенная ситуация с дисками семейства Rosewood - из-за сбоя в MCMT или списке ошибок при работе прекращается доступ к рабочей области. "Специалисты" привыкли, что если у дисков до-SMR эпохи, сообщаемый размер диска равен 0 или доступа к рабочей области нет - то повреждены таблицы отвечающие за трансляцию. И если их воссоздать, отдав команду диску пересчитать эти таблицы - то доступ снова появится. Вот только у SMR дисков при этом область медиа-кэша будет очищена, и часть таблиц влияющих на доступ к рабочей области может быть воссоздана не так как это было с завода изготовителя и часть рабочей области может стать недоступна. При этом, микропрограмма диска так устроена, что если медиа-кэш однажды перестал быть актуален (очищен или отключен и диск начал работать без его учета) - вернуть его к актуальному состоянию более не возможно. Т.е. все то, что было в медиа-кэше (а его содержимое может влиять на актуальность большинства важных данных на всем диске) - будет утрачено навсегда. Поэтому, стоит хорошо подумать, куда обращаться при необходимости восстановления данных с SMR диска.
А что же главный конкурент Seagate – WD? Они тоже выпускают диски на технологии SMR. И с 2018 года все (кроме ряда младших, старых моделей формата 3.5”), что они выпускают – только такое. И их тоже массово продают. Но там разработчики пошли иным путем. Вместо медиа-кэша, они придумали транслятор 2-го уровня. Транслятор первого уровня, как и прежде, отвечает за обход дефектов. А транслятор 2-го уровня, по структуре и назначению напоминает организацию доступа к данным у SSD дисков. От него зависит, какой логический адрес (видимый со стороны компьютера и операционной системы, LBA – Logical Block Address) будет иметь блок данных с конкретным физическим адресом (где конкретно это будет расположено на диске, PBA – Physical Block Address). Если раньше отличия физики и логики были только из-за смещения, возникающего при пропуске дефектных участков, то теперь логический адрес и физический вообще никак не связаны, кроме таблиц переназначения транслятора 2-го уровня. Простой пример. Если требуется записать порцию данных, размером больше ленты – все идет как обычно. Если меньше – то лента пишется все равно, но куски данных, предназначенных для разных файлов, (в том числе имеющих LBA из разных концов рабочей области, которые просто писали следом и не важно куда) оказываются записаны вперемешку на одну ленту (на соседние PBA). Т.е. данные оказываются сильно фрагментированы. Чтобы уменьшить последствия такой фрагментации и не слишком сильно тормозить дисковые операции, микропрограмма диска при появлении свободного времени начинает дефрагментировать данные, переписывая их по дисковому пространству так, чтобы соседние файлы ложились рядом (куски данных с близкими LBA оказывались на близких PBA). Если простоя в работе у диска нет – он все равно занимается дефрагментацией, но уже при чтении данных! В терминологии WD это называется Defrag while Reading. При этом постоянно происходит изменение таблиц трансляции, с указанием, какой логический адрес (LBA) теперь какому физическому адресу (PBA) соответствует. Т.е. если несколько раз записать в область с одним логическим адресом (видимым со стороны компьютера и операционной системы) данные, то они каждый раз будут записываться в физически разные места, в зависимости от того в какую ленту диск писал непосредственно перед этим, из которых актуальным будет только последний (у SSD дисков трансляция устроена очень похоже). Чтобы не перегружать мусором управляющую микропрограмму, для освобождения из трансляции более не используемых участков (например, тех, что содержали в себе данные удаленного файла) – была введена поддержка команды TRIM. Действует она аналогично SSD накопителям. Диску сообщают, какие блоки более не содержат полезных данных и он исключает их из трансляции. Т.е. при дефрагментации – микропрограмма задействует эти адреса по своему усмотрению. А при чтении из них – отдает пустое содержимое, пока туда не записано что-либо, вне зависимости от того, что по этому адресу было ранее.
То есть если на таком диске файл удален и если отработала команда TRIM (а в современных операционных системах – она обязательно отработает) – про него можно забыть. Постоянная запись на диск с перестроением таблиц управляющих доступом к данным - вещь вообще феноменальная с точки зрения надежности. Достаточно чтобы у диска произошел сбой записи, чтобы транслятор сломался и доступ к данным был утрачен мгновенно и на совсем. А так как диски WD Arch 7 (поколения 7) имеют цифровую подпись управляющей микропрограммы (любое изменение в микропрограмме или настройках диска не будет воспринято диском пока не сойдется цифровая подпись, которую подделать крайне не просто), встроенную в контроллер криптомашину (все данные хранятся в шифрованном виде) и защиту от доступа к микропрограмме в виде отключения действия сервисных команд (Vendor Specific Command Set) - исправить ситуацию и достать данные с такого диска становиться мало реальным. То есть – диски WD с использованием технологии SMR – работают пока все хорошо. Если возникает проблема – с данными можно попрощаться. На данный момент, по крайней мере. С дисками HGST все происходит аналогично (с 2014 года HGST – торговая марка, принадлежащая WD).
В качестве итога. На момент написания этой статьи, за исключением Toshiba, все прочие диски, продаваемые в магазинах (за редким исключением) сделаны по технологии SMR. Диски с кэш-буфером размером в 128 мегабайт и более – все SMR.
При эксплуатации этих дисков нужно соблюдать ряд правил. Во первых – их нельзя отключать на горячую. Во вторых, если такие диски начинают подтормаживать – это значит они заняты распределением данных, и их опять таки нельзя резко выключать. В третьих, так как восстановление данных с подобных дисков сильно затруднено (для Seagate – возможно, но сложно, для WD и HGST – на данный момент мало реально) – необходимо всерьез отнестись к резервному копированию данных!
Вадим Агулов, 17.08.2018