Lba ssd что это
У меня износились в очередной раз SSD диски на одном из железных серверов. В связи с этим решил сделать заметку на эту тему, используя наглядный пример. С SSD дисками до сих пор куча вопросов в плане надежности и мониторинга износа. У каждого вендора SSD свои метрики в SMART, так что не мудрено и запутаться. Поделюсь той информацией, что есть у меня.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный теcт.
Заметка будет краткой с информацией только по существу. Для начала, как я мониторю диски. За основу взят шаблон для Zabbix - zbx-smartctl. У меня есть статья на тему мониторинга SMART в Zabbix. Но там используется другой шаблон, не такой функциональный. Да и в целом статья слегка устарела, но ее можно использовать для теоретической подготовки. За основу рекомендую сразу взять шаблон из первой ссылки.
Важное замечание. Из-за того, что у разных вендоров разные метрики, отвечающие за жизнеспособность SSD, слепо доверять приведенному шаблону нельзя. Он в целом хорошо работает на всех дисках, кроме метрики износа ssd. На каких-то дисках он вообще не работает. На каких-то параметр SSD wearout не уменьшается с 100 до 0, а наоборот растет с 0 до 100, соответственно, надо изменить триггеры.
В общем, шаблон нужно допиливать по месту и обязательно проверять вручную все метрики и триггеры. На одном из серверов, где все это проделано, у меня сработал триггер на SSD wearout. Я зашел в метрики диска и убедился, что диск реально изношен.
Косвенный признак наработанных часов подтверждает, что диск реально старый и скорее всего подходит конец срока его службы. Для того, чтобы убедиться в этом, идем в консоль и глазами проверяем смарт ssd диска:
Обращаю внимание на параметр Total_LBAs_Written. Для того, чтобы его правильно интерпретировать, нам надо узнать размер сектора диска, так как показывает он именно их число.
Теперь идем на TLB Calculator и смотрим количество перезаписей диска.
Износ SSD диска подтверждается. Хотя по документам Samsung SSD 850 EVO 500GB способен записать 150TBW, рисковать мне не хочется. К тому же сервер арендуется и тех поддержка без проблем заменит изношенный диск. Главное, чтобы они поменяли тот диск.
После этой истории, если сервер критичный, я не делаю замену диска. Я прошу через тех. поддержку дать подменный сервер, чтобы переехать на него. Обычно идут на встречу. По крайней мере в Selectel. Дают бонусы, чтобы запустить новый сервер на день. После переноса пишу в тех поддержку и они переводят новый сервер на основной тариф, а старый выключают и забирают.
Такая процедура мне видится более прогнозируемой, надежной и быстрой, нежели замена диска. Я не знаю точно, как наливали систему на диск, какие настройки биоса. Загрузится ли система с новым чистым диском, есть ли на втором диске рабочий загрузчик и т.д. В общем, много подводных камней. Гораздо надежнее перенести виртуалки на новый сервер, пока у тебя старый еще работает.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите подробнее программу ссылке.
Когда-то я уже писал о том, что LSI помимо контроллеров SAS выпускает микросхемы для современных жестких дисков и SSD, так же я писал о том, что флэш-память требует более сложного подхода к операциям ввода-вывода. В чем состоит эта сложность, и какую именно проблему решают наши чипы я и хочу рассказать в этой статье. Речь пойдет о Write amplification. Разумеется, профессионалы и так знакомы с WA, поэтому статья рассчитана скорее на начинающих.
Современные микросхемы флэш-памяти устроены так, что для достижения повышенного быстродействия, в них необходимо читать, писать и стирать данные большими блоками. Причем блок записи по размерам не меньше блока чтения, а блок стирания — всегда больше, чем блок записи. Это вызывает необходимость объединять ячейки памяти в иерархическую структуру, обычно: блоки — сектора — страницы.
Когда у нас на руках девственно-чистый новый SSD, никаких проблем нет. Все его ячейки заполнены нулями и готовы к приему наших данных. Поэтому первая запись на SSD вообще не представляет никаких проблем. Обычно данные записываются блоками по 4-8 КБ, и это происходит действительно быстро.
А теперь допустим, нам нужно поменять пару байт (для драматизма можно даже считать, что один единственный бит, хотя в жизни это бывает редко) в уже записанном файле. В отличии от традиционных жестких дисков, флэш-память не позволяет просто так взять и перезаписать блок данных, его для начала надо стереть. А так как блок стирания по размерам сильно крупней блока записи, то эта операция будет очень неэффективной. Спасибо, Wikipedia, за наглядную иллюстрацию:
Для этого нам нужно куда-то считать содержимое всего блока стирания, потом модифицировать в нем данные, потом стереть блок и записать в него данные заново. Это и приводит к появлению такого негативного явления, как усиление записи. Фактически, на диск записывается куда больше данных, чем реально «хотел» записать компьютер.
Очень простая формула позволяет рассчитать коэффициент усиления записи.
Коэффициент Усиления Записи = Данные, записанные на флэш-память / Данные, отправленные на запись хостом
Данное явление было известно с момента появления первых микросхем с NAND памятью, но термин Write Amplification был введен в оборот в 2008 году компаниями Intel и SiliconeSystems.
Усиление записи имеет два ярко выраженных недостатка. Первый из них — это падение скорости, так как чтение-стирание-запись больших блоков явно не так эффективна, как прямая запись, но этот недостаток просто обходится.
Контроллер флэш-памяти берет на себя работу по трансляции логических адресов, которыми оперирует компьютер в физические адреса данных на носителе, в нашем случае SSD, это называется Logical Block Addressing (знакомая многим аббревиатура LBA).
Современные контроллеры оптимизируют операцию перезаписи следующим образом. Если ему нужно изменить какой-то из блоков файла, то вместо полной перезаписи с чтением, стиранием и записью, контроллер SSD сохраняет модифицированный блок в другом месте, которое было заранее стерто, помечает старый блок «доступным, но не готовым» и изменяет информацию в метаданных, которые он использует для LBA.
На первом этапе, это кажется разумной идеей, но по мере заполнения диска, у нас становится все больше блоков в «неправильном» состоянии, то есть помеченных как свободные, но не стертых. Поэтому современные жесткие диски используют разные алгоритмы сборки мусора, которые стирают такие блоки и возвращают их в списки «доступных и готовых». Разумеется, чем меньше на диске свободного места, тем интенсивней приходится использовать эти алгоритмы, что в свою очередь обуславливает зависимость эффективности работы SSD от заполнения.
Второй недостаток Write Amplification состоит в ускорении износа SSD. Все мы знаем, что ячейки памяти имеют предел по количеству допустимых операций перезаписи. У SLC дисков он выше, у MLC ниже, но он есть. Для борьбы с этим используется избыточность данных и их проверка с помощью разных контрольных сумм (я уже писал про LDPC в прошлой статье), но избыточность свободного места микросхем памяти — ресурс ограниченный, и усиление записи способствует более быстрому его исчерпанию.
Какие же факторы и как влияют на Write Amplification?
Сборка мусора
То, что от эффективности работы алгоритмов GC будет зависеть износ ячеек SSD, — неоспоримо. Сборка мусора на SSD дисках может происходить как фоново, так и явно.
В случае явной (foreground) сборки мусора, очистка и оптимизация освобожденных блоков происходит при записи новых. В случае фоновой сборки, контроллер использует периоды простоя для оптимизации свободного места и очистки блоков.
Фоновая очистка позволяет ускорить работу за счет того, что блоки освобождаются к тому времени, когда они уже необходимы, но это приводит к тому, что часто контроллеру приходится оптимизировать реально ненужные данные, которые вероятно вообще могут быть в будущем удалены.
Наличие и достоинств и недостатков приводит к тому, что разработчики пытаются комбинировать эти методы, добиваясь лучшей производительности. Например, в SSD от OCZ фоновый сборщик мусора очищает небольшое количество блоков и останавливается, что позволяет минимизировать число излишних операций, тем не менее предоставляя диску оперативный доступ к свободным блокам.
Тем не менее, наиболее перспективным направлением сейчас является сборка мусора одновременно с операциями записи, инициированными хостом. Это позволяет добиваться высокой производительности в окружениях с большим числом операций записи, когда SSD не простаивают. В числе контроллеров, обладающих такой возможностью и контроллеры SandForce от LSI.
Из интересной экзотики, стоит отметить попытки некоторых производителей, в первую очередь Samsung, разработать систему сборки мусора, которая бы использовала в работе информацию файловой системы, размещенной на диске. Это позволило бы контроллеру эффективно использовать информацию о недавно удаленных файлах и нераспределенном пространстве. По мнению разработчиков, такой подход позволил эффективно работать в тех системах, которые не поддерживают команду TRIM. Контроллеры с этой возможностью требовали чтоб диск был обязательно размечен в NTFS и содержал MBR. Данная технология была очень ненадежной, и часто приводила к потерям данных, особенно при использовании других файловых систем. Еще одним направлением, в котором движутся разработчики SSD – Application Hinting. Проще всего объяснить это на примере баз данных. Данные в СУБД также размещаются в страницах для упрощенного их поиска. Поэтому, в СУБД также есть понятие мусора, или Dirty Page. Если бы СУБД могла отсылать заранее списки «грязных» страниц на твердотельные устройства, это значительно помогло бы в процессе сборки мусора. Есть примеры оптимизации и для других приложений.
В прошлых частях цикла мы рассказывали про историю накопителей, о применяемых интерфейсах и форм-факторах, а также про организацию на физическом уровне. Пятая же часть посвящена «мозгу» современного твердотельного накопителя.
Контроллер современного накопителя — маленький компьютер, который принимает стандартизированные команды и выполняет соответствующие действия с подконтрольным ему хранилищем. При этом внутреннее устройство контроллера может быть любым.
У Intel есть накопитель P4618 6.4 TB, который представляется системе как два накопителя по 3.2 TB. Аналогичное встречается и среди жестких дисков. Накопители Seagate с технологией MACH.2 — это два диска, «заключенные» в одном корпусе и объединенные единым контроллером.
Контроллер — достаточно сложное устройство, которое в зависимости от предназначения диска выполняет различные задачи по управлению данными. Например, базы данных часто требуют от накопителя запись непосредственно в энергонезависимую память, минуя кэш, и в этом случае серверный SATA SSD будет быстрее, чем пользовательский NVMe. Из-за большой вариативности контроллеров не будем вдаваться в детали конкретных устройств, а поговорим об общих принципах работы современного твердотельного накопителя.
Ресурс SSD диска в TBW
Однако, если быть точным, производители дают гарантию в 3, 5 (или больше) лет с оговоркой - если в течении этого срока не будет превышен ресурс по объему записи на SSD диск. При этом, все нормальные производители, указывают такой ресурс записи в технических спецификациях модели диска.
Этот ресурс записи указывается в терабайтах. Например для SSD дисков емкостью 120 - 128 Гб типичный ресурс записи примерно 70 терабайт. А для дисков емкостью 240 - 256 Гб, типичный ресурс записи примерно 150 терабайт. Ресурс записи увеличивается вместе с увеличением емкости диска. Чем больше емкость - тем больше ресурс записи.
В технических спецификациях моделей SSD дисков, этот показатель указывается с сокращением TBW (Total Bytes Written).
70 Тб это много или мало? Если записывать на диск по 120 Гб в день, то 70 терабайт придется записывать в течении почти двух лет.
На самом деле такие объемы записи большая редкость и поэтому даже ресурса 70 Тб, для среднестатистического домашнего или офисного компьютера, что называется "выше крыши". В реальности на домашнем или офисном компьютере объем записи значительно меньше 10 терабайт в год. Намного меньше.
У меня есть возможность, время от времени, узнавать сколько было записано на SSD диск. На тех компьютерах, которые бывают у меня в ремонте или обслуживании.
Так вот. На большинстве компьютеров (это и домашние и офисные) в течении года объем записи на диск меньше или немного больше 2-х терабайт. За год. Максимум который мне попадался, это более 12 терабайт за 3 три года, то есть менее 5 терабайт в год.
Хотя конечно есть особые случаи, при которых объем записи за год будет выше 2-х терабайт. И даже может намного выше. В том случае, если SSD диск используется для работы с файлами большого размера. Причем файлы эти постоянно удаляются и добавляются. Например обработка фотографий или видеомонтаж. Если вы выбираете SSD диск для такой или похожей работы, тогда конечно нужно подумать о ресурсе записи.
Однако, те, кто покупает SSD диск для такой работы, обычно берут диск емкостью как минимум 240 - 256 Гб, или 480 - 512 Гб. А у этаких дисков и ресурс записи выше.
Каждый нормальный SSD диск ведет учет записанного объема данных. Этот счетчик хранится в SMART атрибуте номер 241 (F1) и называется Total LBAs Written. Так что можно эту информацию посмотреть при помощи любой программы, которая показывает SMART атрибуты диска. Но тут есть ньюанс, проблема в том, что в этом атрибуте записываются не байты, а блоки байт (блоки LBA). А размер этих блоков различается у разных производителей. Например у Samsung размер блока 512 байт. А у Transcend размер блока 32 Мб.
Так что, в чистом виде, число из атрибута 241 имеет смысл только в том случае, если вы знаете размер блока для этой модели диска. Однако большинство производителей имеют специальные служебные программы для своих дисков и в такой программе можно увидеть объем записанных данных в тербайтах.
Background garbage collection (фоновая сборка мусора)
Второй очевидный способ обнаружения невалидных данных — повторные запросы на запись от хоста по тем же LBA. Для хоста это выглядит, как перезапись одних и тех же секторов, но SSD все время старается писать в разные блоки. В вышеприведенной иллюстрации работы copy-on-write актуальные данные содержатся в новой странице "B'", после чего в исходной странице остаются невалидные данные.
Области с невалидными данными могут быть сильно фрагментированы, т.е. содержать ячейки с нужными данными. Остается последний шаг — дефрагментировать эти области, получив набор целых свободных блоков и выполнить их стирание.
TRIM и реальность
Для работы TRIM помимо выполнения множества условий (поддержка со стороны ОС и файловой системы) необходимо разобраться с другими слоями абстракции, например, RAID. Пересчитать адреса пришедшие на с TRIM на контроллер от хоста и раскидать их по отдельным дискам теоретически возможно, но никто (ни LSI, ниAdaptec by PMC) не торопится с реализацией. Причина проста — за пределами домашних систем или рабочих станций такая простая вещь, как удаление файла встречается крайне редко. В серверах, как правило, встречаются совершенно другие нагрузки, к которым TRIM не может иметь никакого отношения:
- Виртуализация. На физическом диске или томе RAID-контроллера лежит одна файловая система (VMFS/NTFS/XFS), а на ней - виртуальный диск в виде файла (который никуда не удаляется и даже не меняется в размере, если диск не тонкий), а внутри виртуального диска - другая ФС. Как, от кого и кому передавать TRIM в такой ситуации — совершенно непонятно.
- Предоставление блочного доступа. Это добавляет несколько уровней абстракции. Том->Раздел (или ФС + файл)->Таргет->Файловая система
- Файловый доступ. В организациях, как правило, никто не удаляет регулярно большое количество файлов. Такой сценарий встречается разве что при хранении временного медиа-контента, например, при рендеринге или перекодировании видео, а SSD тут совершенно не нужны. Файл-сервер обычно используется для долговременного хранения информации.
- Базы данных. Файл, который, опять-таки не удаляется, а лишь модифицируется и растет.
Перепрошивка
О прошивке твердотельных накопителей задумываются нечасто. В лучшем случае после покупки «накатывают» свежую версию и забывают до конца жизни накопителя.
Как бы то ни было, обновления прошивки редко приносят какие-то значительные и заметные для пользователя нововведения. Прошивка, как и любое другое программное обеспечение, может содержать ошибки, в том числе критические. К счастью, это происходит редко, а потому нет надобности постоянно поддерживать актуальность прошивок на всех используемых накопителях.
Хотя NVMe можно перепрошить через команды fw-download и fw-commit, чаще всего обновление прошивки производится через утилиты, предоставляемые производителем накопителя. Во избежание потенциально деструктивных действий мы не будем публиковать точные команды, а порекомендуем обратиться к официальной инструкции от производителя.
Пример 4, срок жизни SSD диска Plextor M5 Pro
Диск Plextor M5 Pro. Установлен в рабочем компьютере, работает больше 6 лет. Операционная система Windows XP, затем Windows 8. Объем записи немного более 5 Тб.
Пример 2, срок жизни SSD диска Corsair GS
Диск Corsair серия GS, установлен в рабочем компьютере бухгалтера, работает с 2013 года. Показания сняты в 2019 году. За это время на диск записано почти 6 терабайт - меньше 1 терабайта в год. Операционная система Windows 7. Кликните картинку для увеличения.
Write amplification (усиление записи)
Данный термин означает соотношение между объемом данных, который фактически приходится записывать на флеш-память, и объемом, который пишет хост. Предположим, что у нас есть блок 512 КиБ с данными и нужно поменять небольшой фрагмент. Для модификации сектора в 512 байт контроллеру SSD приходится делать несколько операций (ситуация напоминает write penalty для RAID-5/6):
- прочитать весь блок в буфер
- модифицировать содержимое буфера
- стереть весь блок
- записать новое содержимое буфера
Т.е. для размера транзакции в 512 байт на SSD с размером блока страниц в 512 КиБ получаем write amplification = 1024 раза. Это не самым лучшим образом сказывается а) на производительности и б) ресурсе, который по-прежнему составляет несколько тысяч циклов перезаписи для MLC SSD.
Резюме по примерам
Как видите, в реальной жизни объемы записи таковы, что ресурса записи, который заявлен производителями дисков, хватит на очень долгое время.
Заключение
Контроллеры накопителей — сложные устройства, которые управляют не менее сложными процессами, которые проходят внутри твердотельных накопителей. Мы рассмотрели только самые интересные процессы в общих чертах.
Если вам хочется больше погрузиться в особенности работы с NVMe, рекомендуем статью про пространства имен NVMe.
Для начала стоит разобраться с тем, как работает SSD, что такое сборка мусора, как работает TRIM и главное — почему он не нужен в серверах.
SSD отличается от HDD не только ограниченным ресурсом ячеек. Есть еще множество архитектурных особенностей.
Пример 3, срок жизни SSD диска Samsung 860 Evo
Диск Samsung 860 Evo. Установлен в рабочем компьютере, работает полтора года. Операционная система Windows 7. Объем записи 2.3 Тб за полтора года. Кликните картинку для увеличения.
Практический срок жизни SSD диска
За последние лет 9, я установил, в новые и старые компьютеры, несколько десятков SSD дисков. Из них, насколько я знаю, "сломался" только один - Plextor бюджетной линейки S. Да и тот сломался в течении гарантийного срока и данные, размещенные на этом диске, не пострадали.
Но здесь нужно сделать важное уточнение - я никогда не использую дешевые SSD диски от производителей типа SmartBuy и тому подобных. Я использую только диски от Samsung, Intel, Micron, Plextor, Transcend, Corsair.
Далее, представлены реальные примеры того, какой объем записи выполняется на системный диск SSD и как это соотносится с ресурсом записи.
Заключение
Используйте совместимые с вашим контроллером SSD, выбирайте их с учетом ожидаемой нагрузки на запись и не волнуйтесь о TRIM.
Даже небольшая сумма может помочь написанию новых статей :)
Или поделитесь ссылкой на эту статью со своими друзьями.
В этой статье описаны разные аспекты ресурса SSD дисков. А также советы по увеличению срока жизни SSD дисков.
Вступление
У SSD дисков есть отличие от HDD (механические, магнитные диски). Ячейки флеш-памяти, из которой делают SSD, имеют ограниченное количество циклов записи. Для наиболее распространенного сегодня типа флеш-памяти TLC (ячейки емкостью 3 бита) ресурс записи равен примерно 1000 циклов.
Соответственно, срок жизни SSD диска зависит от объема записи данных на этот диск. Чем больше вы записываете данных на диск, тем быстрее он "умрет".
Размеры секторов
Стандартный размер сектора для большинства блочных устройств (жестких дисков и систем хранения данных) равен 512 байт (на некоторых SAS/SCSI дисках возможны 520/528 байт для дополнительного контроля целостности данных). Последние несколько индустрия пытается перейти на секторы 4096 байт (4 КиБ), т.н. Advanced Format. Продвигается процесс медленно, все пока что остановилось на 512e, т.е. дисках с 4K-секторами внутри, но с эмуляцией 512 байт секторов для хоста. На дисках 512e могут возникать проблемы с производительностью: при необходимости записать блок данных размером меньше 4 КиБ контроллеру диска приходится считывать сектор, менять в нем данные и только потом записывать обратно. Для SSD ситуация с записью небольших блоков еще сложнее:
Контроллер SSD по-прежнему вынужден прикидываться блочным устройством с 512 байт сектором. Но внутри все сложнее: ячейки объединены в страницы размером, как правило, 4-8 КиБ, т.е. это минимально доступный для чтения или записи объем. Записать данные в ячейку/страницу просто так нельзя, для этого нужно предварительно выполнить операцию стирания, а стереть можно только целый блок, состоящий из нескольких десятков (например, 64 или 128, в зависимости от архитектуры SSD) страниц, т.е. минимально доступный для стирания блок может оказаться размером, например, в 512 КиБ.
Показатели
Вне зависимости от интерфейса накопителя SSD имеют набор показателей состояния, которые могут быть считаны системным администратором. Для SATA-накопителей используются показатели S.M.A.R.T., которые не стандартизированы. Отсутствие стандарта приводит к появлению различных трактовок одного показателя.
Рассмотрим вывод утилиты smartctl на примере Intel S4510.
Для нашего диска интересны следующие параметры:
С точки зрения износа исправного диска интересен показатель 233 Media_Wearout_Indicator, так как при достижении числа 1023 накопитель программно заблокируется и будет доступен в режиме только для чтения.
Показатели S.M.A.R.T — это особенность протокола SATA. Для NVMe-накопителей есть NVMe log, который также считывается программой smartctl. Аналогичный вывод можно получить с помощью команды nvme smart-log.
В выводе NVMe накопителя меньше непонятных показателей, но все равно есть место разночтениям. Легко предположить, что параметр percentage_used отвечает за объем занятого пользователем пространства на диске, но это не так. Этот параметр эквивалентен Media_Wearout_Indicator и обозначает износ накопителя.
Не стоит забывать, что предоставляемые показатели и поведение контроллера реализуется прошивкой, которая может быть обновлена.
Где взять чистые блоки?
На новом SSD все блоки являются чистыми и готовыми к записи. Дальше есть резервная область, которая на самом деле, используется всегда, так как помимо оптимизации записи необходимо обеспечить еще и равномерность износа ячеек SSD.
Как быть, если после непрерывной записи чистых блоков уже не осталось? Для можно каким-либо образом узнать, где на SSD находятся пользовательские данные, а где размещены невалидные данные, оставшиеся после удаления файлов. Собственно, этим и занимается TRIM. SSD, как и любое другое блочное устройство, ничего не знает, о том, какие именно данные на нем хранятся. ОС может взаимодействовать как со слоем файловой системы, так и с блочным устройством, т.е. после удаления файла ОС передает на SSD вместе с командой TRIM (или UNMAP для SCSI) список LBA, по которым находились удаленные данные. SSD получает в распоряжение блоки с невалидными данными, и эти блоки можно в дальнейшем использовать для записи.
Пример 1, срок жизни SSD диска Transcend 230S
Диск Transcend 230S, установлен в домашнем компьютере, работает в течении примерно 3 лет. Операционная система Windows 7. Кликните картинку для увеличения.
Счетчик записанного объема превышает 12 терабайт - примерно 4 терабайта в год.
Износостойкость
Выравнивание износа. Источник
Современные накопители построены на базе ячеек TLC, ресурс которых в разы меньше, чем у накопителей с ячейками SLC и MLC. Если какая-то программа в ОС будет постоянно перезаписывать маленький файл, а контроллер будет «наивно» обновлять одну страницу данных, то вскоре блок с этой страницей исчерпает ресурс. Исчерпание ресурса будет отображено в показателях накопителя, что неизбежно приведет к беспокойству системного администратора.
Во избежание сильного износа единичных блоков накопителя применяются технологии выравнивания износа (Wear Leveling). При этом обновление данных выполняется без очистки страницы накопителя и выглядит так:
- Чтение данных из страницы в буфер.
- Изменение данных в странице.
- Запись обновленных данных из буфера в «чистую» страницу.
- Старая страница помечается как «грязная».
Copy on write
Проблема усиления записи имеет простое решение: нужно стараться записывать данные в уже предварительно стертые блоки. На помощь приходит классический алгоритм copy-on-write, разновидности которого используются для оптимизации записи в RAID-DP у Netapp или в ZFS (только слоем выше — на уровне файловой системы).
Суть алгоритм copy-on-write заключается в записи в "выгодные" участки носителя, т.е. в случае SSD — на чистые (стертые) блоки. В нижеприведенном примере модифицируется содержимое страницы "B". Вместо чтения/стирания/записи всего большого блока достаточно лишь прочитать содержимое страницы, модифицировать ее и записать в другое место. При этом необходимо поменять указатель, чтобы те же LBA указывали на новое физическое место размещения данных.
В качестве дополнительного средства борьбы с write amplification большинство современных контроллеров SSD используют сжатие данных.
Пример 7, срок жизни SSD диска Plextor PX-256M5S
Диск Plextor PX-256M5S на 256 Гб. Ресурс записи этой модели заявлен не известен - производитель такую информацию не предоставляет для этой модели. Предполагаю (исходя из данных по моделям M5pro), что ресурс записи, этой модели, как минимум более 70 Тб. А скорее всего более 100 терабайт.
Домашний компьютер. Операционная система Windows 7. Время работы, этого SSD диска, примерно 7 лет. С того момента как был собран этот компьютер в 2014 году. Схема использования типичная для домашнего компьютера - игры, Интернет и еще "всяко-разно". Размер оперативной памяти 4Гб, так что диск активно свопился всю свою жизнь.
Фирменная программа Plextool показывает максимальный уровень "здоровья" и объем записи 12 терабайт, за 7 лет.
Как продлить жизнь SSD диска
Свободное место на диске. Не "забивайте" его полностью - старайтесь чтобы на диске было процентов 20 - 30 свободного места. Наличие свободного места позволяет контроллеру диска выравнивать износ ячеек памяти. Это свободное место должно быть не размечено, то есть не присвоено никакому разделу с файловой системой. Кстати, наличие такого неразмеченного места, позволяет еще и по поводу TRIM не заморачиваться.
Бесперебойное электропитание. Если вы используете SSD в обычном компьютере, подключайте компьютер через UPS (ИБП). Если SSD в ноутбуке, следите за состоянием батареи - не допускайте отключения ноутбука по полному разряду батареи. Диски SSD не любят внезапной потери питания. При нештатном отключении питания на диске возможно повреждение данных в ячейках flash-памяти. Как вариант можно купить модель диска в которой есть защита от отключения питания (Power Loss Protection).
Охлаждайте. Диски SSD (как и HDD, как любая электроника) не любят перегрева. Чем выше температура диска тем быстрее он выйдет из строя. Если вы устанавливаете SSD в ноутбук, то остается только надеяться на то, что конструкторы вашего ноутбука предусмотрели возможность достаточного отвода тепла от диска.
Но если вы устанавливаете SSD в обычный компьютер, тогда у вас "развязаны руки". Самое меньшее что вам доступно это использовать металлический переходник c 2.5" (диск SSD) на 3.5" (бокс для дисков в корпусе). По металлу переходника тепло от диска будет переходить на корпус. Однако для дисков в пластмассовом корпусе металлический переходник бесполезен.
В контексте охлаждения большой плюс это алюминиевый корпус SSD. Если диск сделан по уму, то металлический корпус используется как радиатор для отвода тепла от микросхем.
Кроме этого можно поставить вентилятор - во многих корпусах даже предусмотрено место для специального вентилятора, обдувающего бокс для дисков. В некоторых корпусах даже есть этот вентилятор.
Не нужно дефрагментировать. Фрагментация файловой системы не снижает скорость работы SSD. Поэтому, делая дефрагментацию вы не получите выигрыша в скорости. Однако, дефрагментируя, вы сократите срок жизни диска, за счет увеличения операций записи.
Размер оперативной памяти. Если у вас Windows 7, 8 или 10 поставьте как минимум 8 Гб оперативной памяти. Дело в том, что при нехватке оперативной памяти, операционная система компенсирует эту нехватку за счет диска (дисковый swap файл или раздел). И чем меньше физической оперативной памяти, тем больше объем записи в дисковый swap. Что касается указанных версий Windows, то при размере оперативной памяти в 4 Гб, они очень активно используют дисковый swap. А если оперативной памяти 8 Гб то для Windows 7 и 8 дисковый swap можно вообще отключить.
Иван Сухов, 2020 г.
Пример 5, срок жизни SSD диска Intel 545s
Диск Intel 545s на 128 Гб. Ресурс записи этой модели заявлен в 72 терабайта.
Домашний компьютер. Операционная система Windows 7. Время работы, этого SSD диска, больше двух лет.
Кликните картинки для увеличения.
Как видно из скриншотов, за это время на диск было записано почти два терабайта. Даже если округлить до 1 терабайта в год, ресурса этого диска, в этом компьютере, должно хватить на 36 лет.
Балансировка износа
В каком-то смысле производитель накопителей обманывает нас дважды. Первый раз использует десятичные приставки вместо двоичных: 480 ГБ — это 447 ГиБ. А второй раз, когда фактический объем накопителя больше, чем доступно пользователю. Часть объема зарезервирована производителем для внутренних нужд контроллера. Такой резерв называется запасной областью (spare).
Таким образом, у контроллера всегда есть немного свободного пространства, которое может быть использовано для внутренних процессов. Хотя точных данных нет, в различных источниках утверждается, что для контроллера резервируется от 7 до 28 % объема накопителя.
Увеличение объема зарезервированной области уменьшает доступный объем, но чаще всего повышает производительность диска. Для увеличения spare-области достаточно оставить часть накопителя неразмеченным. Однако если хочется экстрима и сделать все «по уму», то можно уменьшить объем видимого пользователю пространства через ключ -N утилиты hdparm.
Как бы то ни было, вернуть зарезервированную производителем область в собственное пользование не получится.
Процесс «сбора мусора». Источник
Помимо балансирования износа, в контроллерах в фоновом режиме часто проходит процесс «сбора мусора» (garbage collection). В ходе него с нескольких блоков собираются актуальные страницы и помещаются в один блок. Затем исходные блоки очищаются, так как в них не осталось страниц с данным.
Важно отметить, что сборщик мусора занимается перекладыванием данных в хранилище, чтобы было как можно больше чистых блоков. При этом он не может понять, что на файловой системе какой-то файл отмечен удаленным, так как контроллер накопителя не умеет работать в терминах файловых систем.
Для решения этой проблемы в каждом из протоколов есть команда, позволяющая уведомить контроллер об удалении файла. Для NVMe — это deallocate, для SATA — TRIM, а для SCSI — unmap. Суть каждой их этих команд одинакова: пометить страницы с удаленным файлом как «грязные».
Контроллеру приходится постоянно беспокоиться о состоянии страниц хранилища. При этом напрашивается очевидная оптимизация: если операционная система пытается считать данные со страниц, на которых нет данных, то вместо операции чтения можно просто генерировать необходимое количество нулей.
Это легко подтверждается с помощью эксперимента. Проводим Secure Erase для накопителя и запускаем тесты на случайное чтение с глубиной очереди 64. Затем «забиваем» накопитель с помощью последовательной записи, желательно дважды. И повторяем тесты.
Размер блока | Чистый | Забитый |
---|---|---|
4M | 3400 MiB/s | 3376 MiB/s |
8M | 3399 MiB/s | 3336 MiB/s |
В наших тестах использовался SSD-накопитель Micron 7300 1.92 TB, подключенный по PCIe 3.0 x4. Третья версия PCI Express по четырем линиям способна пропускать 3940 МБ/с или 3757 МиБ/с. Мы, конечно, не достигли предела, но надо полагать, это из-за накладных расходов на протокол NVMe. Тем не менее, видно, что чтение с диска без данных «упирается» в предел 3400 МиБ/с. После заполнения диска на 15% результаты тестов стали хуже.
Несмотря на то, что контроллер накопителя всегда пытается сделать как лучше, иногда системному администратору стоит взглянуть на показатели диска своими глазами.
Время работы SSD диска
Время, которое SSD диск будет работать, в общем случае определяется типом флэш-памяти. То есть какой тип ячеек используется и по какому техпроцессу изготовлена память. Самый большой ресурс у ячеек типа SLC, далее идут MLC и наконец TLC.
Что означает лимит по количеству циклов записи в практическом смысле? И как примерно оценить возможный срок жизни того или иного диска?
Возьмем условный диск в котором используется MLC flash-память произведенная по техпроцессу 19 нанометров. Предположим что производитель этой памяти указывает для нее лимит записи 3000 циклов. Это показатель для хорошей MLC flash-памяти изготовленной по техпроцессам 19 или 20 нанометров.
На основе этой памяти изготовлен диск емкостью 120 Гб. Лимит в 3000 циклов означает что вы можете 3000 раз полностью записать ваш диск.
Хотя на самом деле, при тотальной записи всего диска, можно будет записать его только 1500 раз, то есть в два раза меньше. Это связано с тем, что перед новой записью ячейки памяти должны быть очищены от предыдущего содержимого. А это один цикл записи. То есть на каждый цикл записи данных, приходится цикл стирания ячеек.
Если вы будете каждый день целиком его заполнять, затем полностью очищать и на следующий снова целиком заполнять, то теоретически память проживет 1500 дней. То есть больше 4 лет. Если же вы в день будете записывать только 60 гигабайт и стирать диск только раз в два дня, то срок жизни увеличивается до 8 с лишним лет.
Конечно это упрощенно. Но понятно, что срок жизни флэш-памяти достаточно большой.
То есть во всех этих жалобах про постоянно снижающийся лимит записи, сегодня серьезной основы нет. Хотя лет 10 назад, когда SSD диски только выходили на массовый рынок, проблема "короткой жизни" была. Но наука и техника не стоят на месте. И сегодня даже самые дешевые дешманские SSD диски имеют гарантию в 3 года. А производители первого эшелона, Самсунг, Интел даже на бюджетные модели дают гарантию в 5 лет, а для профессиональных моделей и больше.
Пример 6, срок жизни SSD диска Kingston SV300s37A
Диск Kingston SV300s37A на 120 Гб. Ресурс записи этой модели заявлен в 64 терабайта.
Домашний компьютер. Операционная система Windows 8, затем Windows 10. Время работы, этого SSD диска, точно неизвестно. Может быть лет 5, но не больше 7 лет, поскольку эта модель выпущена в 2013 году.
Кликните картинки для увеличения.
В атрибуте 241 указано значение 15 643. У SSD Kingston одна единица этого счетчика равна 1 Гб. То есть на диск было записано более 15 терабайт. То есть примерно четверть от ресурса. При этом, родная программа пишет что здоровье этого диска равно 97 %.
Особенности записи
Блоки и страницы в NAND-памяти. Источник
Хранилище твердотельного накопителя состоит из множества полевых транзисторов, соединенных друг с другом. При таком подходе чтение и запись выполняются страницами данных, размер которых обычно 4 КиБ. Таким образом, изменение одного бита на диске приводит к необходимости перезаписать всю страницу данных. Эта проблема называется усилением записи (Write Amplification).
Кроме того, твердотельные накопители не могут обновить данные в странице. Обновление страницы производится в четыре шага:
- Чтение данных из страницы в буфер.
- Изменение данных в странице.
- Очистка страницы данных.
- Запись обновленных данных из буфера.
Читайте также: