http://www.fcenter.ru/online.shtml?articles/hardware/hdd/25058Отдельного и достаточно подробного разговора требует такой параметр как срок службы. Дело в том, что обычно для флеш-памяти он заявляется как количество циклов перезаписи и для современных MLC-чипов составляет десять тысяч циклов (кстати, для одноуровневых SLC-ячеек этот параметр выше ровно на порядок – сто тысяч циклов, и это является вторым, после скорости записи, весомым различием этих двух типов флеш-памяти). Понятно, что такой подход несколько неудобен: абсолютно непонятно, как это сравнить со сроком жизни жестких дисков, да и вообще не очень понятно, сколько же проработает SSD. Конечно, можно перемножить количество ячеек (а если быть более точным, то количество страниц, поскольку именно страницы в случае флеш-памяти являются минимальной изменяемой единицей информации, у X25-M размер страницы равен 4 кБ) на их объем и на количество циклов и получить максимальное количество записываемой на накопитель информации. Для X25-M это значение составит 800 ТБ. Казалось бы, огромное число, но тут проявляется две проблемы.
Во-первых, как определить, какое количество информации будет записано? Это ведь общее количество всех возможных операций записи, в том числе и служебных. Энтузиасты уже успели на своем горьком опыте убедиться, что доля служебных запросов на запись при установке системы на флеш-накопитель весьма велика, а время его работы неожиданно мало. Даже такая операция, как запись времени обращения к файлу является, простите за тавтологию, операцией записи и, соответственно "съедает" ресурс накопителя. И таких не очень очевидных для простого пользователя действий в компьютере происходит весьма значительное количество, поскольку современные дисковые системы и программы ведут всевозможные логи, активно работают с таблицей размещения файлов (которая располагается все на том же диске) и изменяют свои внутренние файлы. Да один только файл подкачки чего стоит. А ведь все это является теми самыми операциями записи. В итоге 800 ТБ вовсе не являются тем объемом файлов, который пользователь может записать на накопитель (конечно же, стирая старые и записывая новые), реальные цифры гораздо меньше, даже если постараться уменьшить число таких "скрытых" операций записи, отключив файл подкачки и проведя настройку операционной системы. Очень, кстати, интересно: а получающие все большее распространение ноутбуки на твердотельных накопителях проходят такую оптимизацию?
Вторая проблема кроется еще глубже, в самом алгоритме работы флеш-накопителей и их взаимодействии с операционными системами и состоит из нескольких частей. Если минимальным размером записываемой информации является страница, то минимальным объемом стираемой информации является блок из нескольких страниц – это обуславливается самим механизмом стирания данных во флеш-памяти. Для X25-M размер такого блока составляет 128 страниц, то есть 512 кБ или полмегабайта. В результате, если поступает запрос на стирание (или перезапись) одной страницы, накопителю приходится вместо этого стирать 128. Соответственно, если в них была полезная информация (а так, скорее всего и было), то ее приходится сперва считывать в кэш, а после этого записывать заново. В итоге мы имеем многократное увеличение количества операций записи, что, естественно, уменьшает ресурс нашего накопителя.
Второй стороной проблемы является то, что нагрузка на ячейки распределяется крайне неравномерно. В каких то ячейках информация хранится очень долго без изменений, поскольку эти файлы лишь читаются, в то время как другие ячейки подвергаются достаточно частой перезаписи. В итоге мы получаем неравномерный износ накопителя: в то время как часть ячеек еще имеет солидный резерв "прочности" в виде большого количества циклов перезаписи, другие уже его полностью выбирают.
Ну и, наконец, третьей частью проблемы является взаимодействие твердотельных накопителей с файловой системой. Напомню, что операционная система через файловую систему общается с накопителем при помощи LBA-адресов блоков данных, к которым происходит обращение. Для жестких дисков эта система является логичной, но ведь у флеш-памяти нет никаких вращающихся пластин, поделенных на дорожки и сектора. У последних есть лишь транслятор адресов, в памяти которого записано, какая физическая ячейка соответствует какому LBA-адресу, то есть его логическая структура никак не соответствует реальной. Казалось бы, а в чем здесь проблема? А проблема в том, что в современных протоколах стирание файла не вызывает запроса на удаление данных из всех LBA-адресов, оно лишь изменяет состояние таблицы размещения в той части, которая относилась к данному файлу. В сумме с транслятором адресов это приводит к тому, что однажды записанная в ячейку памяти часть данных будет считаться действительной и неудаленной даже тогда, когда с точки зрения файловой системы файл уже был удален. А в сочетании с описанными выше особенностями удаления данных на физическом уровне это приводит к тому, что при поступлении практически любого запроса на удаление данных приходится обратно записывать даже те данные, которые относятся к уже удаленному файлу. Этот момент несколько тяжел для понимания, поэтому на всякий случай сформулируем его еще раз несколько по-другому: транслятор LBA-адресов, заведующий удалением данных из ячеек, соответствующих LBA-адресам, ничего не знает о той информации, которая хранится в файловой системе, при этом в процессе удаления файлов система не посылает запрос на удаление данных по всем LBA-адресам, соответствующим удаляемому файлу. В результате для SSD-накопителя информация в ячейках остается действительной (то есть важной, необходимой для дальнейшего хранения – с точки зрения внутренней логики самого SSD-накопителя) даже тогда, когда эти ячейки относятся к файлам, уже удаленным с точки зрения операционной системы.
Вся работа, по уменьшению потерь (а именно – ресурса записи ячеек) от описанной выше проблемы ложится на транслятор адресов. Дело в том, что таблица соответствия LBA-адресов физическим ячейкам является не раз и навсегда определенной и неизменной, а динамической. То есть в разные моменты времени одному и тому же LBA-адресу могут соответствовать абсолютно разные ячейки. Соответственно, алгоритмы транслятора стараются при помощи изменения этой таблицы сделать нагрузку одинаковой для всех ячеек, по возможности уменьшая неравномерный износ последних. Да именно ему очень кстати приходится тот модуль оперативной памяти, которой размещен на плате накопителя. Тот же ретранслятор отвечает и за то, чтобы уменьшались потери от стирания ячеек целыми блоками. Думаю, несложно догадаться, что уровень сложности этих алгоритмов и их эффективность самым непосредственным образом влияют как на срок службы накопителя, так и на его производительность. Так, при серьезной смене нагрузки (например, с линейных операций записи на случайные) накопителю требуется некоторое время, чтобы адаптироваться к ней.
Однако вернемся из глубин особенностей функционирования к сроку службы накопителя. Компания Intel предложила достаточно изящное решение: определять срок службы исходя из среднего объема данных записываемых на SSD, а описанные выше технические проблемы, приводящие к тому, что реальный объем записываемых данных будет меньше теоретического учитывать при помощи двух поправочных коэффициентов. Первый из них, "коэффициент увеличения записи", отражает как раз столь подробно описанную выше ситуацию с увеличением объема перезаписываемых данных, а второй, "коэффициент неравномерности износа", отвечает за уменьшение срока службы, связанное с тем, что одни ячейки выбирают свой ресурс циклов перезаписи раньше других. Надо сказать, что Intel очень высоко оценивает качество работы алгоритмов своего накопителя: если "в среднем по больнице", то есть для продукции конкурентов на MLC-памяти она приводит значение коэффициента увеличения записи равное 20 и коэффициента неравномерности износа равное 3, то для своей продукции она их оба заявляет равными 1,1. Ну что ж, опустим справедливость этих изысканий на совесть Intel, фактически проверить их мы все равно не можем и все же вернемся к сроку службы. В итоге, при условии записи на накопитель каждый день по 100 ГБ Intel гарантирует, что накопитель прослужит пять лет. Интересно, что при этом гарантию на свою продукцию компания все же дает трехлетнюю. И все же, остается нераскрытым вопрос, как обычному человеку определить, какой объем записи происходит на его компьютере. Похоже, что пока пользователям придется довольствоваться лишь статистическими данными да обещаниями производителей.
А теперь вопрос для самых внимательных: а что же все таки компания Intel подразумевает под средним временем между отказами (MTBF), равным 1,2 миллиона часов (137 лет между прочим, не шутки)? Точнее, как было получено это внушительное число и что оно означает? Понятно, что получено оно на основе статистики и означает вероятность выхода устройства из строя в течении некоторого промежутка времени. Но вот как при этом учитывались нагрузки на накопитель, и какими они были для нас, честно говоря, так и осталось одной из загадок, которые этот накопитель оставил нам на будущее.