Дефрагментация SSD: так она есть или нет?

Дефрагментация SSD: так она есть или нет?

05.11.2020 0 Автор GodKnowses

В своё время относительно дисков SSD существовало устоявшееся мнение о том, как соотносится внедряемая технология “крепко” сидящих чипов (идущая на смену “спиннерам” HDD) к такой незаменимой долгое время и обязательной функции оптимизации диска как Дефрагментация. И мнение это можно было охарактеризовать словосочетанием “НЕ НУЖНО и НЕЛЬЗЯ”. С момента приобретения первого своего компьютера каждый пользователь впитал, в том числе, и мысль, что жёсткий диск с каждым байтом записанной на него информации приближается к своей смерти. А в отношении же SSD политика Windows казалась вполне определённой: дефрагментация для SSD отключена по умолчанию. Всё вроде бы сходится. Однако нашлись люди, которые копнули в суть вопроса. Один из IT-блогеров успел заметить, что процесс оптимизации под контролем службы defragsvc чем-то всё-таки с диском занимается. В связи с чем у автора в концовке возник резонный вопрос: а не вредит ли система сама себе? Да чёрт с ним “себе”: SSD-то за свои кровные куплен…

На данный момент наиболее мудрые специалисты уже избегают категоричности в ответе на вопрос “нужна ли оптимизация SSD” в том виде как она есть. Так происходит ли на самом деле дефрагментация SSD?

Пару сведений

Англоязычная Википедия утверждает, что Microsoft Drive Optimizer (она же утилита Оптимизации дисков, она же dfrgui.exe) ранее носившая имя – внимание – Дефрагментация дисков, предназначена для ускорения скорости доступа к диску за счёт реорганизации структуры файлового размещения. Технология разработана для носителей со считывающими головками, и для карт SD, флешек и носителей SSD использована быть не может.

А на самом деле?

Однако, подытоживая “расследования” отдельных пользователей и анализируя ответы технических специалистов самой Microsoft, можно с уверенностью утвердиться в нескольких фактах:

оптимизация дисков windows 10 Дефрагментация SSD действительно имеет место быть. Это точно происходит как минимум ЕЖЕМЕСЯЧНО в том случае, когда активирована функция создания теневой копии. Причём Windows делает это нарочито из-за крайне низкой скорости записи на фрагментированных томах SSD. Да – если ещё кто не понял – фрагментация SSD также имеет место быть. А куда от неё денешься-то? И, как и в случае с HDD, пользователь вполне может столкнуться с ситуацией, когда разросшаяся до максимума фрагментация файлов (метаданные уже просто не способны отобразить все фрагменты дефрагментированных данных) на SSD не позволит файл прочитать или записать. А вот здесь, в свою очередь, пользователь сталкивается с проблемой производительности SSD, чьи преимущества перед HDD начинают сходить на нет.

Как же так?

Команда ReTrim при этом должна запускаться по требованию системы из графического интерфейса утилиты dfrgui.exe, известной, напомню, пользователям Windows 7 как утилиты Дефрагментации (в Windows 10 – Оптимизация дисков). И, насколько я понял, вовлечение ReTrim необходимо, так как технология TRIM в файловой системе диска SSD теперь принимает непосредственное участие, хотя и работает асинхронно. Мы ведь помним процесс вовлечения TRIM в работу файловой системы: как только файл удаляется или место на диске SSD каким-либо образом высвобождается, система автоматически ставит в очередь задание для TRIM. Для предотвращения высокой нагрузки со стороны системных служб, работающих с диском, число поставляемых в очередь TRIM-запросов всё-таки ограничивается. И в какой-то момент оно системой просто сбрасывается. Однако на системе это не сказывается – в текущем сеансе Windows высвобождает работу процессора и памяти. При этом Оптимизатор дисков просто ждёт своего триггера на запуск ежемесячной (-недельной, -дневной) оптимизации, то есть ReTrim-команды. А вот в этот момент ReTrim уже выполняет необходимые операции пошагово (модульно; по степени разбиения; в соответствии с относительным размером элементов данных) дабы не превышать максимального размера TRIM-запросов.

расписание запуска оптимизатора дисков windows 10

есть смысл проводить оптимизацию пореже

В Windows 10, в отличие от Windows 7, система отсылает команды TRIM-функции всему диску, пока тот не занят и пользователь не проводит никаких операций с носителем. Это занимает мгновения. И за процесс отвечает запланированная в Планировщике задача под именем ScheduledDefrag. Обнаружить её легко из Проводника, набрав в строке поиска адрес

C:\Windows\System32\Tasks\Microsoft\Windows\Defrag

проникнув, тем самым, через папку с заданиями Tasks в корне директории System32. Кстати, имя скрытой задачи традиционно связано именно с процессом дефрагментации, сбивая с толку приверженцев “теории”, что SSD и дефрагментация понятия несовместимые. Тем более смущает Дата изменения файла в его метаданных. У вас SSD? Проверьте-ка:

запланированная задача в текстовом виде

дата изменения файла по запланированной дефрагментации

Дело не в конкретной цифре, а в том, что задача была выполнена. Всё ещё сомневаетесь? Запускаем PowerShell:

Get-EventLog -LogName Application -Source "microsoft-windows-defrag" | sort timegenerated -desc | fl timegenerated, message

Но это всё было бы ничего… Обратите внимание на отчёт об успешной дефрагментации (!) диска:

отчёт об оптимизации дисков из powershell

Проверьте свои диски – была ли дефрагментация SSD носителя у вас? У меня она появлялась регулярно на всех машинах с SSD. И даже чаще чем хотелось бы:

дефрагментация ssd

щёлкните, чтобы увеличить

То есть эта та самая дефрагментация SSD, что и на HDD? Некоторые пользователи, как и у меня, отмечали более, чем регулярную работу оптимизатора Windows 10 вплоть до версии 2004. Чуть ли не из сеанса в сеанс. То есть с каждым включением компьютера.

Дефрагментация SSD вручную. Нет, пробовать не стоит.

Снова помятуя о статье русскоговорящего блогера, тот продемонстрировал возможность ручного запуска дефрагментации SSD при определённых условиях. Как то:

  • защита системы включена
  • порог фрагментации файлов на SSD должен составить, как я понял, не менее 10%. Это значение является одним из условий запуска дефрагментации SSD. И как следствие, видимо, условие третье…
  • SSD должен быть исключён из списка обслуживаемых при регулярной оптимизации.
  • после чего через GUI-интерфейс программы Оптимизации включаем SSD в список дисков, попадающих под оптимизацию, и начинаем процесс вручную.

Но путаться, так до конца. Как мы помним из информатики, простейшая операция Not AND – основа для любых более-менее сложных булевских команд. И диск состоит из бесчисленного числа таких ячеек NAND. HDD, насколько я понимаю, целиком полагается на этот принцип записи информации, который даёт сбой только если оба входящих параметра ВЕРНЫ (TRUE). Так что вполне было бы логичным представить взбесившийся над поверхностью диска HDD шпиндель с головкой. Который носится туда-сюда, сначала нанося на диск информацию, а потом её считывая. У SSD немного не так: шпинделя и спиннер-плиток нет, и работа диска к физическому расположению данных никак не относится. От слова “вообще”. Однако любая активность по принципу “записал-прочитал-удалил” по-любому снижает продолжительность его жизни. В том виде, как дефрагментация работает на HDD, она к SSD неприменима.

Так что теперь, любоваться диском что-ли? И что делать-то?

Конечно, глупо было бы давать совет типа “а записывайте-ка на диск поменьше да пореже…”. Но делать наспех ничего не нужно. Точно не нужно удалять указанную выше задачу в Планировщике. Не стоит пока исключать SSD из списка обслуживания Оптимизатором. Более того, я бы сразу вам посоветовал отнестись с осторожностью к дальнейшим изысканиям по модификации задачи в Планировщике, которая ещё пару лет назад была очень популярна. Суть её заключается в редактировании строчки дополнительных аргументов указанной выше текстовой версии файла задачи:

<Arguments>C: -l -h</Arguments>

в этой части:

=================================================================================================

<Actions Context="LocalSystem">
 <Exec>
  <Command>%windir%\system32\defrag.exe</Command>
  <Arguments>-c -h -o -$</Arguments>
 </Exec>
</Actions>
</Task>

=================================================================================================

Добавление ключей -l (операция TRIM) -h (выполнять с высшим приоритетом)к указанному диску (С: – если SSD не разбит на несколько разделов) должно было решить “проблему” дефрагментации SSD. И ведь это всё на фоне оригинальной статистики собранной с отзывов пользователей блога по поводу как часто была зафиксирована дефрагментация SSD уже на их компьютерах:

как часто дефрагментируется ssd

адаптированное фото с сайта Вадима Стеркина

По прошествии времени, однако, блогер в той же статье отошёл от категоричности суждений по поводу “явного бага” со стороны Windows, якобы уничтожающего (непреднамеренно, конечно) наши диски SSD. Хотя и предоставил всем страждущим отличный материал для размышлений, утверждая что добивался на фоне всей собранной им статистики каких-либо внятных ответов со стороны портала Microsoft Connect. И, конечно же, ничего не добился. В любом случае точной информации о том, что же конкретно затрагивает дефрагментация SSD, мало. Если честно, то меня лично сильно напрягает именно факт привязки дефрагментации к службе теневого копирования. Последняя, как оказалось, является своеобразным триггером к запуску первой?  Windows 10 и так постоянно лишает нас относительно независимых от её серверов вариантов восстановления системы и данных, а тут ещё это…  И, к слову, приводимые автором аргументы и доводы на страницах форумов и блогов кажутся более чем обоснованными. Особенно на фоне поверхностных знаний остальных IT блогеров и партизанского (как обычно) молчания со стороны Microsoft.

В общем, вот вам пища к размышлению. И успехов нам всем.