Дископад

Примерно в 2012-2013 году все начали переходить на твёрдотельные жёсткие диски. И всё поначалу было круто, и скорость работы, и отсутствие шума. Но вот 6 лет спустя этого массового перехода я стал замечать, что практически все твёрдотельные диски, которые я куда-то устанавливал, дохнут с характерным сроком наработки на отказ около 5 лет. И скажу я вам, что на старорежимных накопителях с магнитной технологией записи я такой ерунды не замечал. У меня есть диски заметно старше 5 лет, которые прекрасно работают до сих пор. А такого же возраста SSD-шников, всё ещё в рабочем состоянии — очень немного осталось. Причём, чисто личный опыт говорит, что от марки это практически не зависит. Больше всего я видел дохлых Гнусмасов, но это потому, что мы их больше всего и покупали. Но и Micron/Crucial тоже дохнут. Вот пока Intel и SanDisk’ов дохлых не видал, но думаю, это вопрос времени. Скорее всего, это ограничения самой технологии — на флеш память невозможно записать материал более определённого числа раз. Насколько понимаю, каждый цикл записи чуточку разрушает слой изолятора, который не даёт затвору МОП-транзистора разряжаться. Постепенно он теряет свои изоляционные свойства, заряд начинает стекать, и отличить 2 от 3 (если память у нас MLC/TLC) становится невозможно. SLC в этом отношении живёт заметно дольше, но попробуйте найти в 2018 году хоть один диск вменяемой ёмкости и не за конские деньги, сделанный по этой технологии.

Но вообще всё равно удивительно. Ведь чтобы убить диск размером 256 гигабайт, на него придётся записать 2.44 петабайта информации (256 гиг записать 10 000 раз). Чтобы это успеть сделать за 5 лет, на него надо писать 58 гигабайт в час или почти 17 мегабайт в секунду, безостановочно. Хм… Хотя… Особенно если учитывать то, что на самом деле чтобы записать данные на флеш, ячейку флеша надо предварительно очистить, т.е. мы записываем по-сути, дважды. На большинстве компьютеров очисткой более неиспользуемых ячеек флеш-памяти занимается технология TRIM, в фоновом режиме, иначе производительности кабздец, см. Write Amplification. В-общем, чорт его знает, может быть, вполне возможно.

Mirrored from Лабораторный Журнал №6.

Новая технология, все дружно полезли клепать, не откатав. Отсюда и геморрой.
Насчет классических HDD можно сильно поспорить. Тоже же много головняков наклепали.
Quantum fireball - даже вспоминать не хочется. Мухтар тоже не далеко ушел.
IBM DTLA - контактная группа.
Fujitsu MPG - ой вей, я на подъеме инфы с них на первую машину заработал. Циррус Лождик, я тебя лафки.
Seagate, в разных сериях - питание коммутатора, защитный диод, уводящий в кз по питанию, позже - муха цц.
И это типовые болячки. Они были у всех, кто перешагнул порог в 10 гиг и полез ваять новый продукт.



Edited at 2018-04-19 02:18 pm (UTC)
Ну, это совсем старьё уже.

А диски, которые я приобрёл где-то в 2010 году, у меня ничо, живы.
Там же не надо долбить весь диск "посекторно и подорожечно", на самом деле, так что объемы не настолько велики. Достаточно дрочить целенаправленно в зоны типа registry или log файлы у RDMBS, что, собственно и происходит. А если еще не выключили дефрагментацию при запуске у SSD - так вообще приходи кума любоваться.
Так в этом и фишка SSD, что каждый раз, когда происходит запись на диск, контроллер SSD использует новый физический блок. На логическом уровне ты пишешь в кластер 123456, а контроллер размазывает его по всему флешу, в идеале -- строго в порядке использования, т.е. писать надо в ячейки памяти, которые в последний раз использовались максимальное количество времени назад, а те, которые были стёрты недавно, придержать.

Иначе диски действительно "протирались" бы очень быстро.

Вопрос, насколько хорошо это реализовано. Скорее всего, там стоит тупой рандомизатор.
Если я правильно понимаю - это тогда же еще хуже. Блоковый режим записи на уровне HAL никто не отменял, значит если постоянно писать один ключ в реестре - по факту оно бьет не в один сектор, а по всему диску.
Так чего же в этом плохого? Если 10 тысяч раз записать в один и тот же сектор -- сектор сломается. А если по одному разу записать на 10 000 секторов -- ничего такого не случится.
В смысле что тогда чтобы замучить весь диск на 10000 циклов не надо писать дурные террабайт. Достаточно долбить один однобайтовый ключик в реесте (файл во временную папку, файл подкачки, да там куча добра которая постоянно валиться на диск) - и он будет тупо, сектор за сектором насиловать диск, тогда и 10000 циклов быстро кончатся. Пять-шесть лет в принципе тогда это не так уж плохо получается.
> В смысле что тогда чтобы замучить весь диск на 10000 циклов не надо писать дурные террабайт.

Надо. Если каждый раз при записи ты пишешь в новый сектор, то придётся выбрать ресурс в 10 000 записей для *всех* секторов, которые тебе будет подсовывать контроллер, хошь-не хошь.
Я это понимаю, тут другое надо учесть. На уровне HAL пишется посекторно, на уровне API - буферно, в том числе побайтово.

Т.е. скажем, сектор пусть будет 512 байт.

Берем 1 (один) байт на уровне API и пишем его 10000 раз. Мы писали не дурные терабайты, мы писали всего 10 килобайт данных. По факту, посокльку в каждую операцию на уровне HAL вовлекался весь сектор - то мы ЗАписали - цельных 5 Мегабайт.

Теперь озвученная проблема - хорошо когда на SSD закинули скажем ядро ОС, Visual Studio, саму операционку, Автокад - там где читается помногу и часто, а меняется редко.

Проблема начинается (на примере Винды, скажем) что каталог для временных файлов, реестр и файл подкачки по умолчанию живут там же где ядро, а начиная с 8, когда они архитектуру UWP туда втянули - перетащить их оттуда задача не для слабонервных, и, в общем-то даже не всегда реализуемая вообще. А это как раз места в которые пишется часто и по малу - часто literally по одному байту.

Как-то я об этом скорее, что на самом деле не надо писать до фига, достаточно посадить туда всякую херню которой там не место - и уря, диск на пустом месте умучен.
А. Так понятно.

Ну, в-общем, да, частая запись диск быстро кокнет. Особенно если учесть, что сектора нынче по 4096 байт стали, при записи одного байта пишется в 4096 раз больше на самом деле.
Это точно не износ ячеек. Во-первых, ресурс у SSD пятилетней выдержки уже конский. Во-вторых, реально он выше заявленного (можно нагуглить, емнип anandtech делал эксперимент по убийству SSD от разных производителей записью петабайтов данных). В-третьих, от исчерпания ресурсов диски дохнут постепенно - вылазит все больше ошибок записи, но диск держится до последнего, можно в той же статье почитать.
Я это читал. Но чем же тогда объяснить? Тут явно вылезают ошибки чтения -- оно затыкается при загрузке винды, например. Это ж не контроллер гавкнул, оно бы тогда вообще не читалось. А явно убиты ячейки. Может быть, они убиваются не только перезаписью?
Вот это кстати идея, поглядеть, что в смарте. Не смотрел.
Имеет значение в каком режиме у вас SATA контроллер работает. Если в AHCI - SSD проживет гораздо дольше чем в IDE - там вообще год два обычно - и все диск труп. А Вообще проблема в том что современная электроника SSD дисков практически сразу намертво блокирует SSD если там появляется даже немного "битых" секторов - в отличии от оптики где даже специально есть сектора запасные на SSD такого нет - ток перестала ячейка читатся - все. Ту же инфу я на данный момент в жизнь на ССД хранить не буду - оптика в разы надежней.
Ну а в целом для дисков 5 летней давности срок в 5 лет - это даже хорошо, обычно они 3-4 года жили.
>> оптика в разы надежней.
-
лол. 30% частичной не читаемости после 10 лет хранения
>>Скорее всего, это ограничения самой технологии — на флеш память невозможно записать материал более определённого числа раз.
-
не скорее всего, а так и есть.
Вопрос в том, действительно ли так случается, что на ячейку диска реально пишется 10 000 раз -- в домашнем-то компьютере.