Ответ Afranius в «Рецепт оживления старого нетбука от ASUS ЕееPC»
Вот казалось бы - да, ТС прав: в SSD нет никаких головок, скорость считывания с ячеек не зависит от области в которой они расположены, дефрагментация - лишняя ненужная перезапись, способствующая износу, а контроллер сам перераспределяет данные в ячейках на аппаратном уровне, и дефрагментация - это фактически, борьба с алгоритмами контроллера SSD.
Но, как принято говорить: есть нюанс.
Однажды, компания Samsung (кому интересно, про это есть статья на хабре), выпустила модель 840 EVO. Прекрасный контроллер, хорошие скоростные показатели... что могло пойти не так?
Через некоторое время выяснилось, что у диска сильно падает скорость чтения на ровном месте: вот ты купил диск, поставил систему, даже провел всевозможные тесты: у тебя все летает, и всё круто. А через месяц-два при тех же условиях оказывается, что всё тупит и лагает.
В чём же была проблема?
А проблема была в том, что современный SSD хранит в одной ячейке не один бит информации, а сразу три (TLC) или даже четыре (QLC). На физическом уровне это означает, что информация хранится не просто по двоичному принципу "есть заряд-нет заряда", а по принципу измерения конкретного значения заряда в той или иной ячейке.
Для совсем гуманитариев: если раньше, грубо говоря, за "1" мы принимали напряжение в 7 вольт, а за "0", соответственно, 0 вольт, то в 3-битной ячейке значению "111" будет соответствовать, например, 7 вольт, значению "011" - 3 вольта, значению "001" - 1 вольт. Напряжения взяты "от балды", для простоты понимания (в реальности там гораздо меньшие значения).
И вот представьте теперь себе картину происходящего: ячейка, которая хранит некоторое значение заряда, постепенно этот заряд теряет. Вместе с зарядом, меняется либо способность достоверно и однозначно получить соответствующее этому заряду значение (6.5 вольт - это 110 или 111?), либо и вовсе сама хранимая информация (если заряд просел значительно).
Как итог - контроллер по несколько раз перечитывает ячейку, задействует различные алгоритмы коррекции ошибок, пытается это всё исправить, и получить корректную информацию. А это - время. А время - это скорость.
"Так ну и к чему это всё, дефрагментация-то тут причём?" - спросите вы. А ответ прост: единственным решением данной проблемы является принудительная перезапись ячеек, в которых хранится информация. Т.е. либо заполнение диска нулями с полной потерей данных (dd в Linux или чем-то типа HDD Low Level Format Tool в Windows) с последующим восстановлением из заранее сохраненного полного бэкапа, либо если не трогать данные - перемещение их по пространству диска. А как называется процедура перемещения данных между ячейками по пространству диска? Правильно - "дефрагментация".
Впрочем, есть еще третий вариант: это должен делать контроллер SSD-диска на уровне прошивки. Но делает ли это та или иная модель SSD - заранее достоверно узнать невозможно никаким способом (кроме тестирования в какой-нибудь Виктории после томительного ожидания в несколько месяцев, чего не станет делать ни один обзорщик), и если SSD из бюджетного сегмента - то практически наверняка, не делает.
"Но а как же TRIM и SLC-кэш?". А они проблему не решают, потому что:
TRIM работает с освободившимся пространством. Полезные данные он не трогает.
SLC-кэш работает на этапе первой записи информации на диск. Т.е. SSD сначала раскидывает новую информацию по ячейкам, работающим в однобитном режиме, а потом "пакует" её в трехбитный режим хранения, раскидывая по другим ячейкам. Всё. После этого данные лежат там и не меняются, пока не придёт время их перезаписать.
Поэтому:
SSD должен работать и перезаписываться. "Оптимизаторы" и всякие советы "как сохранить ресурс ячеек" - медвежья услуга, способствующая снижению скорости и даже потере информации (если не трогать данные слишком долго).
Дефрагментация раз в пару-тройку месяцев, или хотя бы полгода - полезна даже для SSD. Особенно для бюджетных моделей. Особенно, если это ноунейм с алиэкспресса.