Как работает SSD сборка мусора?

4

Поправьте меня, если я ошибаюсь, но не меняется ли битовая карта блоков (которая отслеживает свободные блоки на диске) для разных файловых систем (как по расположению, так и по структуре)? Итак, как может OCZ иметь общий алгоритм для сбора мусора без учета используемой файловой системы?

skryl
источник

Ответы:

7

SSD имеют больше блоков, чем указанная заявленная емкость. Эти блоки используются как часть процесса выравнивания износа, а также замены неисправностей, когда блоки полностью изнашиваются. Из-за этого контроллер SSD должен отслеживать, какие блоки, которые он видит, в настоящий момент представлены системе, а какие логические блоки.

В отсутствие TRIM, когда поступает запись для грязного блока (который уже содержит данные в отношении SSD), происходит одна из двух вещей:

  1. Контроллер считывает старый блок в локальную память.
  2. Контроллер изменяет необходимые биты.
  3. Контроллер переписывает весь блок в старый блок

Однако из-за выравнивания износа это более вероятно:

  1. Контроллер считывает старый блок в локальную память.
  2. Контроллер изменяет необходимые биты.
  3. Контроллер записывает весь блок в новый блок в зарезервированной части
  4. Контроллер обновляет свое логическое отображение для новой пары логический блок: физический блок.
  5. Контроллер помечает старый блок как часть резерва.

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

SysAdmin1138
источник
На самом деле мне было любопытно узнать о процедурах GC и о том, когда они включаются, но это объясняет это довольно хорошо. После того, как контроллер пометит блоки как резервные / грязные, все, что нужно сделать ГХ, - это запустить во время холостых циклов и обнулить эти блоки. Таким образом, накопитель использует избыточную флэш-память для немедленной записи и выполняет очистку позже.
skryl
2

Чрезмерное обеспечение. OCZ добавляет, например, Вспышка на 7% больше, чем нужно накопителю. Эти 7% используются для выравнивания износа и замены неисправных блоков, но также могут быть стерты во время простоя, избегая цикла стирания-записи, который вы бы в противном случае понесли.

Erik
источник
TRIM также вступает в игру с SSD GC (если аппаратное и программное обеспечение его поддерживает). Это позволяет ОС сообщать диску, какие биты используются файловыми системами / томами (больше не используются).
Chris Johnsen
Да, но тогда это не будет общий алгоритм.
Erik
3
Даже с избыточным выделением ресурсов наступит момент, когда вся доступная память накопителя будет записана хотя бы один раз. После этого момента, как привод может определить, какие блоки в порядке для удаления в течение цикла ГХ?
skryl