Допустим, MLC SSD прослужил очень долго, и первая ячейка достигла своего последнего цикла стирания и отказывается стирать.
Что будет дальше? Определяет ли контроллер это как плохой блок, переходит ли он к следующему и пытается вместо этого стереть его? Будет ли общая емкость диска постепенно уменьшаться со временем?
РЕДАКТИРОВАТЬ
И, конечно, можно забыть о выравнивании износа. Да, это продлевает жизнь накопителю, но я не об этом. В конце концов, ячейка выполнит свой последний цикл стирания.
Флеш-чипы NAND имеют некоторые встроенные механизмы для обнаружения сбоев при операциях записи и стирания и будут предупреждать контроллер в случае сбоя. В этом случае контроллер может либо попробовать еще раз, либо обработать этот блок как неисправный и отобразить его в своем алгоритме выравнивания износа. Каждая страница в устройстве NAND также имеет свободная область наряду с основной областью данных, которая предназначена для метаданных, таких как ECC и другие формы обнаружения ошибок и устойчивости. Контроллер может выбрать свою собственную схему отказоустойчивости, используя резервную область. Коды Хэмминга являются одной распространенной схемой, хотя их несколько, включая простые биты четности и Коды Рида-Соломона. Если что-то не совпадает с операцией чтения, опять же, контроллер может делать все, что ему заблагорассудится. В идеале, он также отображал бы эти блоки из алгоритма выравнивания износа, и вы просто понемногу теряли бы емкость, пока не вышло из строя «слишком много» блоков, где «слишком много» зависит от алгоритмов и размеров структуры оборудования в контроллере. Многие первоклассные разработки контроллеров просто сообщают об ошибке операционной системе.
Обратите внимание, что это не проблема, связанная с MLC; хотя ячейки MLC могут быть более подвержены ошибкам чтения, поскольку здесь обязательно меньший предел ошибки, ячейки SLC выходят из строя в основном с помощью тех же механизмов, и контроллер может обрабатывать их таким же образом.
Как и в случае с жесткими дисками, это зависит от реализации в операционной системе. Контроллер просто сообщит, что запись (стирание на самом деле является операцией записи) не удалась, и драйвер devide в ядре операционной системы должен решить, что делать. Из того, что я видел до сих пор, реализации Microsoft и Linux просто возвращают код ошибки вызывающему приложению, поэтому оно вызывает ошибку ввода-вывода.
Вкратце: в какой-то момент вы просто получаете "сломанное" устройство.
В твердотельных накопителях используется так называемое «выравнивание износа», при котором накопитель сохраняет статистику использования секторов и в какой-то момент или при обнаружении проблем переводит сектор в резервный, как это происходит с обычными жесткими дисками.