Background garbage collection ssd что это
Для начала стоит разобраться с тем, как работает SSD, что такое сборка мусора, как работает TRIM и главное — почему он не нужен в серверах.
SSD отличается от HDD не только ограниченным ресурсом ячеек. Есть еще множество архитектурных особенностей.
Размеры секторов
Стандартный размер сектора для большинства блочных устройств (жестких дисков и систем хранения данных) равен 512 байт (на некоторых SAS/SCSI дисках возможны 520/528 байт для дополнительного контроля целостности данных). Последние несколько индустрия пытается перейти на секторы 4096 байт (4 КиБ), т.н. Advanced Format. Продвигается процесс медленно, все пока что остановилось на 512e, т.е. дисках с 4K-секторами внутри, но с эмуляцией 512 байт секторов для хоста. На дисках 512e могут возникать проблемы с производительностью: при необходимости записать блок данных размером меньше 4 КиБ контроллеру диска приходится считывать сектор, менять в нем данные и только потом записывать обратно. Для SSD ситуация с записью небольших блоков еще сложнее:
Контроллер SSD по-прежнему вынужден прикидываться блочным устройством с 512 байт сектором. Но внутри все сложнее: ячейки объединены в страницы размером, как правило, 4-8 КиБ, т.е. это минимально доступный для чтения или записи объем. Записать данные в ячейку/страницу просто так нельзя, для этого нужно предварительно выполнить операцию стирания, а стереть можно только целый блок, состоящий из нескольких десятков (например, 64 или 128, в зависимости от архитектуры SSD) страниц, т.е. минимально доступный для стирания блок может оказаться размером, например, в 512 КиБ.
Write amplification (усиление записи)
Данный термин означает соотношение между объемом данных, который фактически приходится записывать на флеш-память, и объемом, который пишет хост. Предположим, что у нас есть блок 512 КиБ с данными и нужно поменять небольшой фрагмент. Для модификации сектора в 512 байт контроллеру SSD приходится делать несколько операций (ситуация напоминает write penalty для RAID-5/6):
- прочитать весь блок в буфер
- модифицировать содержимое буфера
- стереть весь блок
- записать новое содержимое буфера
Т.е. для размера транзакции в 512 байт на SSD с размером блока страниц в 512 КиБ получаем write amplification = 1024 раза. Это не самым лучшим образом сказывается а) на производительности и б) ресурсе, который по-прежнему составляет несколько тысяч циклов перезаписи для MLC SSD.
Copy on write
Проблема усиления записи имеет простое решение: нужно стараться записывать данные в уже предварительно стертые блоки. На помощь приходит классический алгоритм copy-on-write, разновидности которого используются для оптимизации записи в RAID-DP у Netapp или в ZFS (только слоем выше — на уровне файловой системы).
Суть алгоритм copy-on-write заключается в записи в "выгодные" участки носителя, т.е. в случае SSD — на чистые (стертые) блоки. В нижеприведенном примере модифицируется содержимое страницы "B". Вместо чтения/стирания/записи всего большого блока достаточно лишь прочитать содержимое страницы, модифицировать ее и записать в другое место. При этом необходимо поменять указатель, чтобы те же LBA указывали на новое физическое место размещения данных.
В качестве дополнительного средства борьбы с write amplification большинство современных контроллеров SSD используют сжатие данных.
Где взять чистые блоки?
На новом SSD все блоки являются чистыми и готовыми к записи. Дальше есть резервная область, которая на самом деле, используется всегда, так как помимо оптимизации записи необходимо обеспечить еще и равномерность износа ячеек SSD.
Как быть, если после непрерывной записи чистых блоков уже не осталось? Для можно каким-либо образом узнать, где на SSD находятся пользовательские данные, а где размещены невалидные данные, оставшиеся после удаления файлов. Собственно, этим и занимается TRIM. SSD, как и любое другое блочное устройство, ничего не знает, о том, какие именно данные на нем хранятся. ОС может взаимодействовать как со слоем файловой системы, так и с блочным устройством, т.е. после удаления файла ОС передает на SSD вместе с командой TRIM (или UNMAP для SCSI) список LBA, по которым находились удаленные данные. SSD получает в распоряжение блоки с невалидными данными, и эти блоки можно в дальнейшем использовать для записи.
Background garbage collection (фоновая сборка мусора)
Второй очевидный способ обнаружения невалидных данных — повторные запросы на запись от хоста по тем же LBA. Для хоста это выглядит, как перезапись одних и тех же секторов, но SSD все время старается писать в разные блоки. В вышеприведенной иллюстрации работы copy-on-write актуальные данные содержатся в новой странице "B'", после чего в исходной странице остаются невалидные данные.
Области с невалидными данными могут быть сильно фрагментированы, т.е. содержать ячейки с нужными данными. Остается последний шаг — дефрагментировать эти области, получив набор целых свободных блоков и выполнить их стирание.
TRIM и реальность
Для работы TRIM помимо выполнения множества условий (поддержка со стороны ОС и файловой системы) необходимо разобраться с другими слоями абстракции, например, RAID. Пересчитать адреса пришедшие на с TRIM на контроллер от хоста и раскидать их по отдельным дискам теоретически возможно, но никто (ни LSI, ниAdaptec by PMC) не торопится с реализацией. Причина проста — за пределами домашних систем или рабочих станций такая простая вещь, как удаление файла встречается крайне редко. В серверах, как правило, встречаются совершенно другие нагрузки, к которым TRIM не может иметь никакого отношения:
- Виртуализация. На физическом диске или томе RAID-контроллера лежит одна файловая система (VMFS/NTFS/XFS), а на ней - виртуальный диск в виде файла (который никуда не удаляется и даже не меняется в размере, если диск не тонкий), а внутри виртуального диска - другая ФС. Как, от кого и кому передавать TRIM в такой ситуации — совершенно непонятно.
- Предоставление блочного доступа. Это добавляет несколько уровней абстракции. Том->Раздел (или ФС + файл)->Таргет->Файловая система
- Файловый доступ. В организациях, как правило, никто не удаляет регулярно большое количество файлов. Такой сценарий встречается разве что при хранении временного медиа-контента, например, при рендеринге или перекодировании видео, а SSD тут совершенно не нужны. Файл-сервер обычно используется для долговременного хранения информации.
- Базы данных. Файл, который, опять-таки не удаляется, а лишь модифицируется и растет.
Заключение
Используйте совместимые с вашим контроллером SSD, выбирайте их с учетом ожидаемой нагрузки на запись и не волнуйтесь о TRIM.
SSD создаются на базе современных контроллеров, управляющих флеш-накопителями NAND. Kingston использует в отдельных SSD контроллеры на основе LSI® SandForce для повышенной надежности и производительности. Эти контроллеры используют собственные технологии для выполнения очистки памяти (Garbage Collection).
При удалении файлов операционной системой (например Windows) ОС отмечает в своей внутренней таблице файлов, что файл удален. На жестких дисках (HDD) такие недействительные данные сохраняются и могут быть напрямую перезаписаны системой для хранения новых данных.
Устройства на основе памяти NAND не могут перезаписывать данные, уже находящиеся на накопителе. Они должны выполнить цикл программирования-стирания; для записи в уже использованный блок данных контроллер SSD сначала должен скопировать все действительные данные (которые еще используются) и записать их в пустые страницы другого блока, очистить все ячейки в текущем блоке (от действительных и недействительных данных), а затем начать запись новых данных в уже очищенный блок. Этот процесс называется очисткой памяти. Современные ОС также поддерживают команду TRIM, с помощью которой ОС сообщает SSD об удалении файлов, чтобы SSD мог лучше управлять процессом очистки памяти и восстанавливать это пространство заранее без сохранения и перемещения недействительных данных.
SSD компании Kingston с контроллерами LSI SandForce выполняют высокоэффективную приоритетную очистку памяти, быстро подготавливая блоки для удаления в реальном времени, и не выполняют фоновую очистку памяти, приводящую к предварительному перемещению данных, которые вскоре могут быть удалены пользователем. Методика приоритетной очистки памяти обеспечивает повышенную надежность и производительность SSD. Кроме того, приоритетная очистка памяти максимально повышает преимущества режимов ожидания с низким энергопотреблением, отключая накопитель, когда система не осуществляет доступ к SSD, в то время как процесс фоновой очистки памяти прерывает ожидание, поскольку перемещает данные для подготовки новых блоков до того, как они потребуются.
Kingston провел тестирование с помощью утилиты Anvil, выполняющей циклы заполнения SSD данными, удаления всех данных и повторного заполнения накопителя данными. Мы протестировали эту утилиту с TRIM и без TRIM (система без TRIM эмулировалась с помощью SSD KC300 на сервере с картой RAID, в которой команда TRIM не пропускалась контроллером RAID, или с помощью SSD Kingston на платформах Apple Mac).
SSDs incorporate advanced controllers that manage the NAND Flash storage. Kingston® uses LSI® SandForce®-based controllers in specific SSDs to provide customers with better endurance and performance. These controllers use proprietary technologies to conduct Garbage Collection (GC).
When files are deleted in an operating system such as Windows, the OS simply marks its internal file table to indicate that the file is deleted. On hard disk drives (HDDs), the data that is now invalid remains there and can be directly overwritten by the system to store new data.
NAND Flash-based devices cannot overwrite data that is already there and must instead go through a program/erase cycle. To write to a block of data that has already been used, an SSD controller must first copy all valid data (that which is still in use) and write it to empty pages of a different block, erase all the cells in the current block (both valid and invalid data) and then start writing new data to the newly erased block. This process is called Garbage Collection. Newer OSs also support the TRIM command, whereby the OS notifies the SSD that it has deleted specific files so that the SSD can better manage the GC process to recover the space earlier and prevent the need to save and move all the invalid data.
Kingston SSDs with LSI SandForce controllers conduct very efficient foreground GC, meaning that they can very quickly prepare blocks to be erased in real time, and do not perform background GC, which can move data unnecessarily when it may be deleted by the user the next day. The foreground GC methodology results in greater endurance and performance for the SSD. Additionally, foreground GC maximises the benefit of lower-power idle states by shutting down when the system is not accessing the SSD, something the background GC process interrupts because it is moving data to prepare new blocks before they are needed.
Kingston conducted testing using a utility called Anvil which conducts cycles of filling SSDs with data, erasing all the data and then writing data to fill the drive again. We tested this utility with and without TRIM (without TRIM simulates using a KC300 SSD on a server with a RAID card where the TRIM command is not passed by the RAID controller or using Kingston SSD on Apple Mac platforms).
Учитывая ограничения команды TRIM (см. предыдущий раздел) компания Kingston » провела ряд тестов эффективности "сборки мусора" (Garbage Collection) по сравнению с TRIM .
Для тестирования была использована утилита, которая полностью заполняет SSD данными, очищает его, заполняет снова и замеряет разницу между временем первого и второго заполнений. Алгоритм запись/удаление/запись вынуждает контроллер SSD выполнять процедуру сборки мусора одновременно с записью новых данных.
В ходе теста SSD был подключен как диск "D" к порту SATA 2 в системе с Windows 7. Последовательность запись/удаление/запись выполнялась сначала при включенном TRIM , затем при выключенном (эмуляция не TRIM ОС, таких как XP, Vista, Mac OS X). Другой тест выполнялся для SSD подключенных таким образом, что команда TRIM не могла добраться до SSD ( RAID , SAN . ). Для сравнения во всех тестах использовался обычный HDD 5400 rpm .
TRIM vs Garbage Collection
Как видно из приведенного выше графика, первый прогон теста (R1) для всех дисков является самым быстрым, что и следовало ожидать, поскольку до начала тестирования диски были абсолютно пустыми. SSD Kingston » KC100 и V+100 показывают постоянную производительность и при включенном (R1-R3), и при выключенном (R4-R6) TRIM . Диски SSD1, SSD2 и SSD3 (что это за модели и кто их производитель, Kingston » политкорректно не указывает), так же демонстрируют постоянную производительность при включенном TRIM , но при выключенном начинаются проблемы. SSD1 и SSD2 начиная с цикла R4 затрачивают больше времени на выполнение теста, а SSD3, по неизвестной причине, демонстрирует очень нестабильную производительность. Поскольку в тестах R4-R6 TRIM был выключен то фактически мы видим как работает реализация алгоритмов сборки мусора в контроллерах SSD . Тесты R4-R6 можно рассматривать как тесты в "не TRIM ОС", таких как Windows XP, Vista и MAC OS X.
Тест PCMark Storage Suite
Тест PCMark Storage Suite, выполненный на новых дисках (R1), как и следовало ожидать, показал лучшие в серии результаты. Затем выполнялись тесты на уже полностью заполненных SSD с включенным (R3) и выключенным (R6) TRIM . Как видно из приведенных выше графиков, SSD Kingston » показали стабильно хороший результат, как при включенном, так и при выключенном TRIM в то время, как SSD1, 2 и 3 демонстрируют значительное падение производительности при выключенном TRIM (R3 -> R6). Эти тесты показывают, что хотя производительность SSD ухудшается с течением времени (когда все ячейки памяти уже заняты и контроллеру SSD приходится выполнять сбор "мусора"), в том случае, если контроллер SSD имеет качественный алгоритм "сборки мусора", то это ухудшение не так уж и заметно, и в любом случае, производительность SSD остается гораздо выше, чем производительность обычных HDD .
Что такое SSD-накопитель.
SSD – это твердотельный накопитель. То есть, устройство хранения, основанное на полупроводниковых элементах. Накопители SSD состоят из контроллера и микросхем памяти, при этом накопитель не содержит движущихся частей, это кстати одно из важных преимуществ перед HDD. Существуют два вида SSD накопителей — это SSD накопитель использующие флеш память и RAM память.
Если говорить в двух словах то SSD накопители с использованием RAM памяти являются самыми быстрыми и самыми дорогими накопителями.
Разновидности SSD-накопителей.
Твердотельные накопители бывают внешние и внутренние, различных форм-факторов и предназначенные для разных целей. Бывают принципиальные отличия в работе/требованиях к компьютеру.
Внутренние SSD
Внутренние накопители предназначены для установки в корпус системного блока или ноутбука. Форм-фактор, как правило, соответствует 2.5”, но бывают в типоразмере 1.8” для ультракомпактных ноутбуков, а также еще более редкие 3.5”, чьи габариты обусловлены использованием большого числа микросхем и продвинутых контроллеров.
SSD PCI-E
Некоторые производительные устройства имеют формат карт расширения и устанавливаются непосредственно в слоты материнской платы, подобно контроллерам, видеокартам, и тому подобных. Такие SSD, возможно, потребуют дополнительных драйверов еще на этапе установки на них операционных систем, и в целом, более "капризны" в работе, хотя их скоростные характеристики нередко превышают таковые на стандартных твердотельных носителях информации.
SSD Mini PCI-E
В современных ноутбуках с диагональю менее 16” редко встречается возможность установить сразу две системы хранения, а емкие SSD дорого стоят, поэтому иногда используются mini PCI Express устройства. Эти твердотельные накопители ничем не отличаются от других, но они предназначены для установки в соответствующий слот материнской платы ноутбука. Таким образом, удается достичь и быстрой работы системы, размещенной на SSD и использовать обычный жёсткий диск в качестве крупного хранителя информации.
SSD Внешние
Также можно встретить внешние SSD, рассчитанные на подключение через интерфейсы USB 2.0 USB 3.0, eSATA, и другие. Среди них редко встречаются действительно эффективные модели, тем не менее, при использовании быстрого интерфейса передачи данных они будут работать быстрее внешних моделей жестких дисков.
Какие преимущества даёт SSD.
У твердотельного накопителя нет движущихся частей, тем меньше вероятность поломки, что нельзя сказать о жестком диске. А еще благодаря этому, системный блок работает беззвучно. SSD более устойчив к механическим повреждениям, практически не чувствителен к электромагнитным полям и у него более широкий диапазон рабочих температур. Такого вида накопители требуют меньше энергии, именно поэтому портативные компьютеры с ними работают намного дольше от батареи. Также малые размеры и вес делают его еще более удобным и дают возможность использовать их в тех же портативных аппаратах. Скорость работы твердотельного накопителя в разы превосходит скорость работы винчестера, время считывания файлов, не зависимо от его расположения, остается наименьшим. Потому "холодный" старт Windows в разы превышает старт на HDD по времени.
Но у SSD есть и свои минусы, поэтому он не затмил обычный винчестер. Один из главных минусов твердотельного накопителя - это ограниченное количество циклов перезаписи. Второй, немаловажный минус - это несовместимость со старыми версиями Windows. Проблема в том, что OC Windows работают с SSD, так же как и с обычными винчестерами. Именно поэтому, если на вашем ноутбуке или нетбуке стоит SSD, то вам нужно, либо отключить файловые операции, которые рассчитаны на жёсткие диски, либо установить OC Windows 7/8/8.1: она оптимизирована специально для твердотельных накопителей. Еще один минус - это высокая цена на твердотельный накопитель. Цена за 1гб SSD на много превышает цену за один гигабайт HDD. А так же цена за SSD растет прямо пропорционально объему, а цена обычного винчестера растет медленнее, так как она зависит не от объема, а от количества пластин.
Что такое SLC, MLC, TLC.
Что такое TRIM, GC, ITGC.
TRIM – команда контроллеру со стороны операционной системы, указывающая на удаленные данные на уровне файловой системы. Не всегда поддерживается в RAID-массивах. Для проверки состояния TRIM необходимо ввести (с повышенными привилегиями) команду:
fsutil behavior query DisableDeleteNotify
Если ответ: DisableDeleteNotify = 0 — поддержка TRIM включена; DisableDeleteNotify = 1 - поддержка TRIM отключена.
Включить TRIM: fsutil behavior set disabledeletenotify 0
- Windows 7, Windows Server 2008 R2
- Linux 2.6.33 - Поддерживается с февраля 2010
- OpenSolaris - Поддерживается с июля 2010
- FreeBSD 8.1 - С июля 2010 поддерживается только для низкоуровневого форматирования, полная поддержка предлагается в версии 9.0
- Mac OS X - Поддерживается (на данный момент — только для SSD, входящих в комплект поставки компьютера) с версии 10.6.6 с соответствующим обновлением.
Какие бывают производители.
A-Data, Asus, Corsair, Crucial, Goodram, Intel, Kingston, LaCie, OCZ, Plextor, Samsung, SanDisk, Seagate, Silicon Power, Toshiba, Transcend.
Но качество и надёжность итогового изделия будет зависеть от используемого внутри него контроллера, типа памяти и версии прошивки устройства.
Распространённые типы контролеров.
SandForce – выпускается во многих модификациях. SF-1200 и SF-1500 по производительности разницы нет. Этот контроллер отличается отсутствием "внешней" кэш-памяти, отлично переносит многопоточное чтение/запись, имеет наиболее высокие (заявленные!) на сегодняшний день скорости и чтения, и записи. Производительность в линейных последовательных тестах и тестах случайного чтения/записи падает почти на треть на занятых областях и уже не восстанавливается после удаления данных.
Один из последних и весьма распространённых - SF-2281, применяется в накопителях Corsair Force 3/GT 120GB, OCZ Agility 3 240GB, OCZ Vertex 3 Max IOPS 240GB, Patriot Wildfire 120GB и др. Что особенного в контроллерах SandForce, и нужно ли их избегать
- содержит информацию о SSD: модель, доступный объем, серийный номер, версию прошивки контроллера
- - обновление прошивки накопителя, необходимо соединение с интернетом
- - Secure Erase очистка диска с восстановлением прежней скорости, необходимо удалить все разделы
- - более подробная информация о накопителе
- - низкоуровневая информация о SSD
- - просмотр данных S.M.A.R.T.
Marvell 88SS9174 - применяется в накопителях Crucial C300 (32nm NAND), M4/C400 (25nm NAND), Plextor (по статистике использования один из самых быстрых и сравнительно недорогих накопителей) и др.
Intel – контроллер, отлично зарекомендовавший себя в серверном применении, где Intel традиционно на высоте. Неплох и в сценариях рабочей станции. Недостаток – низкая скорость записи, что фактически не заметно на повседневных задачах.
Часто продаются под маркой Kingston, который лепит свою наклейку – внутри все то же самое. Отличить переименованные диски от Intel можно по объему (40, 80, 120 или 160ГБ, в будущем и 320)
Рекомендуются для активной работы с диском, особенно с файлами мелкого и среднего размера (до нескольких мегабайт).
JMicron – контроллер первого поколения SSD, мало приспособлен для работы с флэш-памятью, имеет низкую производительности и всего 16КБ кэш-памяти (что приводит к ее переполнению в случае возрастания нагрузки на диск и система виснет на минуту-другую, ожидая очистки буфера).
Единственное достоинство накопителей на этом контроллере – сравнительно низкая цена. Если диск не системный или не единственный, то это вариант, иначе лучше поискать что-то поновее.
На этом контроллере основаны диски OCZ Core, OCZ Soild, OCZ Apex (пара контроллеров в массиве) и масса малоизвестных недорогих дисков.
Indilinx – контроллер, адаптированный для SSD и не имеющий недостатков Jmicron. Отличная производительность записи – его главное свойство. Сбалансированная производительность (почти одинаковая скорость чтения и записи) позволяют рекомендовать накопители на этом контроллере для работы с крупными файлами (видео и т.п.). Поддержка чистки имеется, но работает менее эффективно чем в случае с Intel. Производительность сильно зависит от объема накопителя. В настоящее время Indilinx является дочерним предприятием OCZ Technology.
На этом контроллере основаны диски OCZ Agility, OCZ Vertex и некоторые накопители других производителей.
Samsung – корейский контроллер, разработанный с учетом недостатков JMicron. Несмотря на большой объем кэша, достойной альтернативы Indilinx не получилось. Система уже не зависает, производительность последовательных чтения/записи на уровне Indilinx и иногда даже выше, но проблема с непоследовательной записью, скорость которой не высока.
Из новинок стоит отметить Samsung 830 256GB, показывающего весьма неплохие результаты.
Более подробно в статье Кто есть кто в мире производителей контроллеров для SSD
Какую ОС можно ставить на SSD.
Как устанавливать ОС на SSD-накопитель.
Установка Windows на SSD ничем не отличается от установки на обычный жёсткий диск. Но есть пара нюансов. Если вы собираетесь использовать, кроме твердотельного накопителя, ещё и HDD, то на время установки лучше отключите все винчестеры.
Переносить Windows с HDD на SSD не рекомендуется. Лучше ставить с нуля.
Как проверить скорость работы SSD.
Как прошить SSD?
SSD Mini Tweaker
SSD Mini Tweaker - маленькая, портативная программка изменяющая, одним кликом мышки, настройки и параметры системы для оптимального использования твёрдотельного накопителя в качестве системного диска.
В этой программе объединены все функции, службы и системные настройки, которые нужно отключить, если используете твердотельный накопитель в качестве системного диска.
Читайте также: