Твердотельные накопители текущего поколения страдают от замедления скорости записи (для произвольной записи) с течением времени из-за того, что данные нужно читать, а затем записывать блоками. У различных производителей есть исправления для решения этой проблемы (например, выполнение «сборки мусора», когда диск бездействует), но есть ли какое-либо программное решение для исправления текущей файловой системы SSD для восстановления производительности, кроме очистки всего диска и запуска заново?
Либо что-то, что будет работать в фоновом режиме, либо инструмент «восстановления», который можно оставить на ночь для выполнения работы; Я не могу придумать причину, по которой такие инструменты не могут существовать, но я не смог их найти.
Не может быть такого универсального программного обеспечения, как есть программное обеспечение для дефрагментации жесткого диска без SSD.
Причина в том, что на жестком диске, отличном от SSD, данные физически хранятся в известном месте. Зная LBA адрес данных, теперь инструмент дефрагментации, когда данные физически находятся на жестком диске и могут перемещать их куда угодно. (это почти правда, но не во всех случаях)
На SSD данные также хранятся по адресу LBA (так работает ATA / SATA). Но, в то время как традиционный жесткий диск (в большинстве случаев) хранит адрес LBA 1 в начале диска, за которым следует адрес 2, 3, 4, ..., N; SSD не будет хранить адрес линейно, потому что линейное хранение будет очень медленным, если вы напишете по адресу 1, а затем, позже, по адресу 2, потому что SSD должен будет перезаписать данные, хранящиеся по адресу 1 (это означает, чтобы прочитать их, сохранить в кеше). , сотрите адреса с 1 по N (SSD должен записывать весь блок адреса N каждый раз, когда вы записываете данные)), запишите адреса 1 и 2. Это медленно). Вот почему SSD будет хранить адрес 2 «далеко» (в пространстве памяти) от адреса 1. Это ускорит запись, но замедлит работу диска, когда будет использован весь блок.
Таким образом, инструмент не может знать, как данные хранятся на SSD, и не может решить, как сделать что-то вроде «дефрагментации». Единственный способ сделать это - запустить программу внутри контроллеров жестких дисков, использовать инструмент, который может попросить SSD рассказать ему, как хранятся данные, и сообщить ему, как их затем перемещать (используя адрес внутренней памяти, а не адрес LBA) ( для этого нет стандартной команды ATA, это будет означать 1 инструмент для каждого поставщика SSD. Я даже не знаю, можно ли использовать такую проприетарную команду по протоколу ATA. (WIPER может быть таким инструментом )) или воспользуйтесь известной командой TRIM.
Через некоторое время вы получаете весь блок адреса N с использованием только нескольких адресов (потому что вы удалили что-то и т. Д.), И он начинает работать медленно, потому что каждый раз, когда вы записываете данные, блок должен быть прочитан, стерт, записан. Вот почему вам нужно ОБРЕЗАТЬ, чтобы большинство блоков было заполнено данными и новые пустые блоки.
PS: Для ясности, это очень упрощенное объяснение. Также в большинстве случаев вы напишете не только 1 адрес LBA, но и много данных (потому что файл большой), так что вы запишете X блоков адреса N, но получите X-е блоки не полностью.
Лучше всего получить обновление прошивки от производителя.
В противном случае вам нужно будет сделать резервную копию жесткого диска, стереть все данные на нем, а затем восстановить из резервной копии.
У Anandtech есть пошаговое руководство по процессу с использованием HDDErase от Intel. Вот
Применение теории на практике: понимание проблемы снижения производительности SSD
Эта статья отлично объясняет, почему SSD-диски бывают быстрыми, когда они новые, но затем становятся медленнее.
Насколько я понимаю, проблема в том, что вам придется подождать обновления прошивки от производителя.
Кроме того, замедление частично вызвано технологией выравнивания износа, чтобы справиться с ограниченным количеством операций записи на блок. Принудительно выполняя дефрагментацию на низком уровне, вы значительно сокращаете срок службы диска.