SSD диски - что это такое?


Казалось бы всем известны преимущества твердотельных SSD дисков по сравнению с традиционными накопителями на жёстких дисках (HDD): высокая механическая надёжность, отсутствие движущихся частей, высокая скорость чтения/записи, низкий вес, меньшее энергопотребление. Но давайте посмотрим все ли так хорошо как кажется?

Разбираем SSD диск

Что же такое SSD? SSD – это (англ. SSD, Solid State Drive или Solid State Disk ) твердотельный накопитель, энергонезависимое, перезаписываемое запоминающее устройство без движущихся механических частей с использованием флэш-памяти. SSD диск полностью эмулирует работу жёсткого диска.

Посмотрим что у SSD диска внутри и сравним с его близким родственником USB Flash.

Как видно из фотографии - отличий не так уж и много. По сути SSD диск- это та же большая флэшка. В отличие от флэшек, в SSD дисках используется микросхема DDR DRAM кеш-памяти, в связи с спецификой работы и возросшей в несколько раз скоростью обмена данными между контроллером и интерфейсом SATA.

Контроллер SSD диска

Главной задачей контроллера является обеспечение операций чтения/записи, и управление структурой размещения данных. Основываясь на матрице размещения блоков, в какие ячейки уже проводилась запись, а в какие еще нет, контроллер должен оптимизировать скорость записи и обеспечить максимально длительный срок службы SSD диска. Вследствие особенностей построения NAND-памяти, работать с ее каждой ячейкой отдельно нельзя. Ячейки объединены в страницы объемом по 4 Кбайта, и записать информацию можно только полностью заняв страницу. Стирать данные можно по блокам, которые равны 512 Кбайт. Все эти ограничения накладывают определенные обязанности на правильный интеллектуальный алгоритм работы контроллера. Поэтому, правильно настроенные и оптимизированные алгоритмы контролера могут существенно повысить производительность и долговечность работы SSD диска.

В контроллер входят следующие основные элементы:

  • Processor – как правило 16 или 32 разрядный микроконтроллер. Выполняет инструкции микропрограммы, отвечает за перемешивание и выравнивание данных на Flash, диагностику SMART, кеширование, безопасность.
  • Error Correction (ECC) – блок контроля и коррекции ошибок ECC.
  • Flash Controller – включает адресацию, шину данных и контроль управления микросхемами Flash памяти.
  • DRAM Controller - адресация, шина данных и управление DDR/DDR2/SDRAM кэш памятью.
  • I/O interface – отвечает за интерфейс передачи данных на внешние интерфейсы SATA, USB или SAS.
  • Controller Memory – состоит из ROM памяти и буфера. Память используется процессором для выполнения микропрограммы и как буфер для временного хранения данных. При отсутствии внешней микросхемы RAM памяти выступает в роли единственного буфера данных SSD накопителя.

Flash память

В SSD накопителях как и в USB Flash используются три типа памяти NAND: SLC (Single Level Cell), MLC (Multi Level Cell) и TLC (Three Level Cell). Отличие только в том, что SLC позволяет хранить в каждой ячейке только один бит информации, MLC – два, а TLC – три ячейки (использование разных уровней электрического заряда на плавающем затворе транзистора), что делает память MLC и TLC более дешёвой относительно ёмкости.

Однако память MLC/TLC обладает меньшим ресурсом (100 000 циклов стирания у SLC, в среднем 10 000 для MLC, а для TLC до 5 000) и худшим быстродействием. С каждым дополнительным уровнем усложняется задача распознавания уровня сигнала, увеличивается время поиска адреса ячейки, повышается вероятность ошибок. Так как SLC-чипы намного дороже и объем их ниже, то для массовых решений применяют в основном MLC/TLC-чипы. На данный момент MLC/TLC память активно развивается и по скоростным характеристикам приближается к SLC. Так же, низкую скорость MLC/TLC производители SSD накопителей компенсируют алгоритмами чередования блоков данных между микросхемами памяти (одновременная запись/чтение в две микросхемы флэш-памяти, по байту в каждую) по аналогии с RAID 0, а низкий ресурс - перемешиванием и слежением за равномерным использованием ячеек. Плюс к этому в SSD резервируется часть объёма памяти (до 20%). Это недоступная память для стандартных операций записи/чтения. Она необходима как резерв в случае износа ячеек, по аналогии с магнитными накопителями HDD, который имеет резерв для замены bad-блоков. Дополнительный резерв ячеек используется динамически, и по мере физического изнашивания основных ячеек предоставляется резервная ячейка на замену.

Как работает SSD накопитель

Для чтения блока данных в винчестере сначала нужно вычислить, где он находится, потом переместить блок магнитных головок на нужную дорожку, подождать пока нужный сектор окажется под головкой и произвести считывание. Причем хаотические запросы к разным областям жесткого диска еще больше сказываются на времени доступа. При таких запросах HDD вынуждены постоянно «гонять» головки по всей поверхности «блинов» и даже переупорядочивание очереди команд спасает не всегда. А в SSD дисках все просто — вычисляем адрес нужного блока и сразу же получаем к нему доступ на чтение/запись. Никаких механических операций — всё время уходит на трансляцию адреса и передачу блока. Чем быстрее флэш-память, контроллер и внешний интерфейс, тем быстрее доступ к данным.

А вот при изменении/стирании данных в SSD накопителе не так все просто. Микросхемы NAND флэш-памяти оптимизированы для секторного выполнения операций. Флеш-память пишется блоками по 4 Кб, а стирается по 512 Кб. При модификации нескольких байт внутри некоторого блока контроллер выполняет следующую последовательность действий:

  • считывает блок, содержащий модифицируемый блок во внутренний буфер/кеш;
  • модифицирует необходимые байты;
  • выполняет стирание блока в микросхеме флэш-памяти;
  • вычисляет новое местоположение блока в соответствии с требованиями алгоритма перемешивания;
  • записывает блок на новое место.

Но как только вы записали информацию, она не может быть перезаписана до тех пор, пока не будет очищена. Проблема заключается в том, что минимальный размер записываемой информации не может быть меньше 4 Кб, а стереть данные можно минимум блоками по 512 Кб. Для этого контроллер группирует и переносит данные для освобождения целого блока.

Вот тут и сказывается оптимизация ОС для работы с HDD. При удалении файлов операционная система не производит физическую очистку секторов на диске, а только помечает файлы как удаленные, и знает, что занятое ими место можно заново использовать. Работе самого накопителя это никак не мешает и разработчиков интерфейсов этот вопрос раньше не волновал. Если такой метод удаления помогает повысить производительность при работе с HDD, то при использовании SSD накопителей становится проблемой. В SSD дисках, как и в традиционных жестких дисках, данные все еще хранятся на диске после того, как они были удалены операционной системой. Но дело в том, что твердотельный накопитель не знает, какие из хранящихся данных являются полезными, а какие уже не нужны и вынужден все занятые блоки обрабатывать по длинному алгоритму.

Прочитать, модифицировать и снова записать на место, после очистки затронутых операцией ячеек памяти, которые с точки зрения ОС уже удалены. Следовательно, чем больше блоков на SSD накопителе содержит полезные данные, тем чаще приходится прибегать к процедуре чтение>модификация>очистка>запись, вместо прямой записи. Вот здесь пользователи SSD дисков сталкиваются с тем, что быстродействие диска заметно снижается по мере их заполнения файлами. Накопителю просто не хватает заранее стёртых блоков. Максимум производительности демонстрируют чистые накопители, а вот в ходе их эксплуатации реальная скорость понемногу начинает снижаться.

Раньше в интерфейсе ATA просто не было команд для физической очистки блоков данных после удаления файлов на уровне ОС. Для HDD дисков они просто не требовались, но появление SSD накопителей заставило пересмотреть отношение к данному вопросу. В результате в спецификации ATA появилась новая команда DATA SET MANAGEMENT , более известная как Trim . Она позволяет OC на уровне драйвера собирать сведения об удаленных файлах и передавать их контроллеру накопителя.

В периоды простоя, SSD диск самостоятельно осуществляет очистку и дефрагментацию блоков отмеченных как удаленные в ОС. Контроллер перемещает данные так, чтобы получить больше предварительно стертых ячеек памяти, освобождая место для последующей записи. Это дает возможность сократить задержки, возникающие в ходе работы.

Но для реализации Trim необходима поддержка этой команды прошивкой накопителя и установленным в ОС драйвером. На данный момент только самые последние модели SSD накопителей «понимают» TRIM, а для старых накопителей нужно прошить контроллер для включения поддержки этой команды. Среди операционных систем команду Trim поддерживают: Windows 7, Windows Server 2008 R2, Linux 2.6.33, FreeBSD 9.0. Для остальных ОС необходимо инсталлировать дополнительные драйвера и утилиты.

Например, для SSD дисков от Intel существует специальная утилита SSD Toolbox, которая может выполнять процедуру синхронизации с ОС по расписанию. Кроме оптимизации, утилита позволяет выполнять диагностику SSD накопителя и просматривать SMART-данные всех накопителей компьютера. С помощью SMART, можно оценить текущую степень износа SSD диска – параметр E9 отражает оставшееся количество циклов очистки NAND-ячеек в процентах от нормативного значения. Когда величина, уменьшаясь от 100, дойдет до 1, можно ожидать скорое появление «битых» блоков.

О надёжности SSD накопителей

Казалось бы, нет движущихся частей – все должно быть очень надежно. Это не совсем так. Любая электроника может сломаться, не исключение и SSD. С низким ресурсом MLC-чипов ещё можно как-то бороться коррекцией ошибок ECC, резервированием, контролем за износом и перемешиванием блоков данных. Но самый большой источник проблем – контроллер и его прошивка. По причине того, что контроллер физически расположен между интерфейсом и микросхемами памяти, вероятность его повреждения в результате сбоя или проблем с питанием очень велика. При этом сами данные, в большинстве случаев сохраняются. Помимо физических повреждений, при которых доступ к данным пользователя невозможен, существуют логические повреждения, при которых также нарушается доступ к содержимому микросхем памяти. Любая, даже незначительная ошибка, баги в прошивке, может привести к полной потере данных. Структуры данных очень сложные. Информация «размазывается» по нескольким чипам, плюс чередование, делают восстановление данных довольно сложной задачей.

SSD Kingston HyperX 2.5`, SATA 6Gb/s, 240 Гб

В таких случаях восстановить накопитель помогает прошивка контроллера с низкоуровневым форматированием, когда заново создаются служебные структуры данных. Производители стараются постоянно дорабатывать микропрограмму, исправлять ошибки, оптимизировать работу контроллера. По этому, рекомендуется периодически обновлять прошивку накопителя для исключения возможных сбоев.

Безопасность SSD дисков

В SSD накопителе, как и в HDD, данные не удаляются сразу после того, как файл был стёрт из ОС. Даже если переписать файл по верху нулями – физически данные еще остаются, и если чипы флеш-памяти достать, и считать на программаторе – можно найти 4кб фрагменты файлов. Полное стирание данных стоит ждать тогда, когда на диск будет записано данных равное количеству свободного места + объем резерва (примерно 4 Гб для 60Гб SSD). Если файл попадёт на «изношенную» ячейку, контроллер ещё не скоро перезапишет её новыми данными.

Основные принципы, особенности, отличия в восстановлении данных с SSD и USB Flash накопителей.

Восстановление данных с SSD накопителей достаточно трудоёмкий и долгий процесс по сравнению с портативными flash накопителями. Процесс поиска правильного порядка, объединения результатов и выбора необходимого сборщика (алгоритм/программа полностью эмулирующая работу контроллера SSD накопителя) для создания образа диска не лёгкая задача.
Связанно это в первую очередь с увеличением числа микросхем в составе SSD накопителя, что во много раз увеличивает число возможных вариантов действий на каждом этапе восстановления данных, каждое из которых требует проверки и специализированных знаний. Так же, в силу того, что к SSD предъявляются значительно более жесткие требования по всем характеристикам (надёжность, быстродействие и т.д.), чем к мобильным флеш накопителям, технологии и методики работы с данными, применяемые в них, достаточно сложны, что требует индивидуального подхода к каждому решению и наличию специализированных инструментов и знаний.

Оптимизация SSD накопителей

  1. Для того, чтобы диск прослужил вам долго, нужно всё, что часто меняется (временные файлы, кеш браузера, индексирование) необходимо перенести на HDD, отключить обновление времени последнего доступа к папкам и каталогам (fsutil behavior set disablelastaccess 1). Отключить в ОС дефрагментацию файлов.
  2. Перед установкой на SSD Windows XP, при форматировании диска рекомендуется выполнить «выравнивание» разделов кратным степени двойки (например, утилитой diskpart ), иначе SSD придется делать 2 чтения вместо одного. Кроме этого у Windows XP есть некоторые проблемы с поддержкой секторов более 512кб (в SSD по умолчанию используется 4кб) и вытекающие отсюда проблемы с производительностью. Windows Vista, Windows 7, последние версии Mac OS и Linux выравнивают диски уже правильно.
  3. Обновить прошивку контроллера, если старая версия не знает команду TRIM. Установить последние драйвера на SATA контроллеры. Например, если у вас контроллер от Intel, вы можете на 10-20% увеличить производительность, включив режим ACHI и установив Intel Matrix Storage Driver в операционной системе.
  4. Не следует использовать последние 10-20% свободного пространства от раздела, потому что, это может отрицательно сказаться на производительности. Это особенно важно, когда работает TRIM , поскольку ему необходимо пространство для перегруппировки данных: для примера, похоже, работают утилиты дефрагментации, ведь им тоже нужно не менее 10 % процентов от объема диска. Поэтому очень важно следить за данным фактором, ведь из-за небольшого объема SSD они очень быстро заполняются.

Преимущества SSD накопителей

  • высокая скорость чтения любого блока данных не зависимо физического от расположения (более 200 Мб/с);
  • низкое энергопотребление при чтении данных с накопителя (приблизительно на 1 Ват ниже, чем у HDD);
  • пониженное тепловыделение (внутреннее тестирование в компании Intel показало, что ноутбуки с SSD нагреваются на 12.2° меньше чем аналогичные с HDD, также тестированием установлено, что ноутбуки с SSD и 1 GB памяти в распространенных бенчмарках не уступают моделям с HDD и 4 GB памяти);
  • бесшумность и высокая механическая надёжность.

Недостатки SSD дисков

  • высокое энергопотребление при записи блоков данных, энергопотребление растёт с ростом объёма накопителя и интенсивностью изменения данных;
  • низкая ёмкость и высокая стоимость за гигабайт по сравнению с HDD;
  • ограниченное число циклов записи.

Заключение

В связи с высокой стоимостью SSD дисков и небольшим объёмом памяти использовать их для хранения данных нецелесообразно. Зато они отлично подойдут в качестве системного раздела, на который инсталлируется ОС и на серверах для кэширования статичных данных.

Теги: 
Источник: 

storelab.ru