Замечает ли сборщик мусора SSD нулевые блоки?

263
micha

GC (у меня Samsung 860 Evo) достаточно умен, чтобы заметить, что блок заполнен нулями?

По некоторым причинам я не могу использовать TRIM на SSD. Я думаю, что я мог бы подражать TRIM, заполняя все пустые места нулями (Linux: sfill -z, Windows: sdelete -z) время от времени (скажем, раз в неделю). Если прошивка диска умная, следует заметить, что блок пуст, и вообще не записывать его во флэш-память. Вместо этого блок должен быть помечен как нераспределенный. Но ... достаточно ли умная прошивка?

1
Возможный дубликат [Могу ли я эмулировать TRIM, записав все нули?] (Https://superuser.com/questions/1242000/can-i-emulate-trim-by-writing-all-zeros) sawdust 5 лет назад 0
«Неиспользованный» блок просто не может быть определен по содержанию данных. В противном случае действительные данные будут непреднамеренно потеряны. Так что нет, GC не заботится о просмотре данных блоков, которые используются. Не существует такого метода, чтобы * "заметить, что блок пуст" *. Ваши предположения неверны. sawdust 5 лет назад 0
Не "неиспользованный", но "пустой". Это не то же самое. Обнаружение пустого блока тривиально. Стандарт гласит, что чтение нераспределенного блока дает нули - так что нет смысла записывать их во флэш-память ... Конечный результат будет идентичен с точки зрения читателя. micha 5 лет назад 0
Вы ошибочно полагаете, что блок нулей * «пустой» *. Фактическое значение данных зависит от прикладной программы, а не от устройства хранения. Блокировка записи, запрошенная главным компьютером, должна выполняться запоминающим устройством независимо от содержимого. Записанный блок также не может быть "нераспределенным" * устройством хранения. Вы объединяете два разных состояния. sawdust 5 лет назад 0
1. Нет, запоминающее устройство не должно записывать точно данные, запрошенные хост-компьютером. Запоминающее устройство должно предоставлять точно такие же данные для чтения по запросу. Что происходит между тем, зависит от устройства хранения. Именно так работает сжатие на лету. А теперь: чтение нераспределенного блока всегда предоставляет все нули хост-компьютеру. Таким образом, нет необходимости выделять запасной блок для этих нулей. micha 5 лет назад 0
2. Конечно, блок может быть «нераспределенным». Это то, что делает каждая запись в ssd. Он «распределяет» старый блок и «распределяет» новый. micha 5 лет назад 0

0 ответов на вопрос