Что такое TRIM?

14

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

Если это правильно, значит ли это, что твердотельные накопители, которые не используют TRIM, при удалении файла записывают нули в блоки, чтобы дать SSD знать, что блоки свободны?

Читать это

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

заставляет меня думать, SSD не перезаписывают нулями? Или файловые системы в гостях, что-то совершенно другое?

Sandra
источник

Ответы:

16

Устройства флэш-памяти (которые используются для современных твердотельных накопителей) не могут записывать произвольные данные в любой момент; перед записью в ячейку (обычно 4 КБ) необходимо сначала удалить. К сожалению, операция удаления очень медленная; именно поэтому флэш-устройства были намного медленнее, чем магнитные накопители, несмотря на отсутствие движущихся частей.

Современные твердотельные накопители скрывают время стирания, поддерживая набор предварительно стертых ячеек, что означает, что команда записи не будет немедленно перезаписывать существующие данные, вместо этого контроллер накопителя выбирает стертую ячейку, переназначает ее и записывает с новыми данными. Это (и несколько стратегий кэширования записи размышлению) дает приводу огромный прирост скорости, значительно превосходящие магнитные диски.

Чтобы гарантировать, что всегда есть набор предварительно удаленных ячеек, каждый раз, когда ячейка не нужна, накопитель планирует ее для фонового стирания и добавляет в список платных ячеек.

К сожалению, существующие файловые системы не удосужились сообщить накопителю, когда сектор свободен. В конце концов, диск должен был быть просто тупым хранилищем битов. Удаление файла или любой другой операции, которая помечает сектор как свободный от точки зрения файловой системы, было лишь отметкой в ​​некоторой структуре метаданных. Сам сектор не был затронут. Даже если файловая система очистит его, записав поверх него нули, накопитель не сможет узнать, означает ли это, что сектор свободен или пользователь хочет получить несколько нулей в файле. Через некоторое время у накопителя не будет свободной ячейки для стирания перед записью; и производительность трагически ухудшилась.

Инструкция TRIM была быстро составлена ​​и принята большинством поддерживаемых файловых систем. Это простой сигнал, который файловая система использует, чтобы сообщить накопителю, что содержимое сектора больше не важно. Как только все сектора, отображенные в ячейке, освобождаются, контроллер SSD удаляет ячейку и планирует ее стирание. Если хост читает эти сектора, SSD не будет загружать данные из Flash, он немедленно отвечает нулями; но самым важным эффектом является постоянное пополнение списка предварительно удаленных ячеек.

Тем не менее, большинство SSD имеют меньшую емкость, чем физический размер флэш-памяти, иногда до 75%. Это позволяет хранить некоторые неиспользуемые ячейки даже на 100% заполненной системе, так что (перезапись) записи используемых секторов все еще происходит быстро.

Хавьер
источник
Интересный. Я концептуально знал о том, как работает TRIM, но удивлялся, как много места на диске будет иметь SSD. Теперь я хочу посмотреть, публикуются ли эти данные где-либо для данных твердотельных накопителей ...
Майкл Б.
Количество зарезервированных ячеек обычно публикуется. Обычно это составляет от 5 до 10% для более дешевых накопителей, 20% + для накопителей более высокого класса. Флэш-накопители Enterprise (EFD) обычно имеют резерв от 100% до 400%; следовательно, почему они так чертовски дороги, они хранят этот огромный резерв, потому что запись в местоположение на флэш-памяти каждый раз немного разрушает места. Создание тяжелых приложений, обычно встречающихся в серверных средах, быстро убьет большинство потребительских твердотельных накопителей.
Крис С
«запись в ячейку (обычно 4 КБ)» - вы неправильно используете понятие «ячейка» по сравнению с обычным использованием флэш-памяти. Флэш-ячейка хранит только один (или несколько) бит (-ов). Использование «ячейки», по-видимому, соответствует гораздо большему блоку (стиранию) (может быть 128 КБ), как это обычно описывается в таблицах данных флэш-микросхемы. Организация данных - это ячейка <сектор <страница <блок <плоскость <чип.
опилки
8

TRIM был введен для того, чтобы операционная система (файловая система внутри ОС) могла сообщать носителю ATA, что сектор больше не используется файловой системой. Это не имеет ничего общего с записью на диск.

TRIM не гарантирует, что сектор обнуляется в СМИ. Он гарантирует, что когда файловая система запрашивает чтение из этого сектора, возвращаются нули (обратите внимание, что, поскольку SSD знает, что сектор должен быть нулями, он будет возвращать их независимо от того, что на самом деле хранится на носителе; может быть возможно восстановить данные с диска, который был просто обрезан, хотя обычно SSD действительно стирают память).

Файловые системы имеют тенденцию распределять свои записи (по разным причинам, от попыток выравнивания записи, до сборки мусора, рандомизации мест хранения и т. Д.). Из-за этого, если носитель не знает, какие сектора файловая система не использует, просто запись нулей не обязательно означает, что сектор не используется, то в конечном итоге он должен предположить, что используется весь диск.

Для твердотельных накопителей это предположение означает, что сектор должен быть удален во время записи, что снижает скорость записи; вместо стирания ячейки памяти во время удаления файла. Аналогично файлам виртуального диска в системах виртуализации, файл динамического диска в конечном итоге будет охватывать всю емкость виртуального диска. Если система виртуализации реализует TRIM, то она будет знать, когда сектор больше не используется, и, следовательно, что динамический диск не должен отслеживать это местоположение.

Крис С
источник
Означает ли это, что TRIM был введен, чтобы позволить SSD знать, какие сектора используются, чтобы он мог поместить новые данные по секторам, которые использовались меньше?
Сандра
1
SSD просто используют TRIM, чтобы знать, когда сектор больше не нужен. Это не гарантирует выравнивание записи или любые другие функции, которые может реализовывать носитель данных. Тем не менее, большинство твердотельных накопителей используют его для выравнивания записи, сбора мусора (на флэш-носителях, удаления неиспользуемых секторов) и хранения списков свободных секторов для повышения производительности записи).
Крис С