В блоге и форуме я не раз писал, что современные ОС Windows не дефрагментируют SSD. Однако в Windows 8 и новее «из коробки» есть баг ограничение, из-за которого время от времени выполняется эта ненужная для твердотельных накопителей операция. Сегодня мы разберем проблему во всех подробностях.
Update (04-Dec-2014). Скотт Хансельман в своем блоге опубликовал разъяснения разработчиков Windows. Вкратце, Microsoft подтвердила дефрагментацию SSD и пояснила, что это сделано специально во избежание медленного создания точек восстановления. Я разбираю ситуацию подробнее в отдельной статье, и вам нужно обязательно прочесть ее тоже.
После записи об автоматическом обслуживании Windows читатель блога Владимир Наймушин написал мне, что у него при обслуживании осуществляется дефрагментация твердотельного накопителя. Он также прислал ссылку на форум, где упоминалась эта проблема.
Увидев ее следы у себя, я решил воспроизвести дефраг и разобраться в причинах.
[+] Сегодня в программе
- Как работает оптимизация дисков в Windows
- Как проверить, подвергался ли ваш SSD дефрагу
- В каких условиях происходит дефрагментация SSD
- Как воспроизвести дефраг
- Насколько дефрагментация вредна для SSD
- Как избежать дефрагментации SSD
- Вопросы и ответы
- В событии 258 нет информации о дефрагментации SSD. Означает ли это отсутствие бага?
- Надо ли следовать инструкциям в статье, если следов дефрагментации SSD не обнаружено?
- Что делать, если в ПК только твердотельные накопители?
- Как быть с разделом «Зарезервировано системой»
- Хочу увидеть дефраг SSD своими глазами, но не получается воспроизвести. Почему?
- Есть ли дефраг в Windows 7?
- Есть ли дефраг Windows 10, 11, …, 100500?
- Знает ли об этом Microsoft
- Дискуссия
Как работает оптимизация дисков в Windows
Чтобы открыть оптимизатор дисков, наберите dfrgui на начальном экране. Как и в Windows 7, он по расписанию выполняет дефрагментацию жестких дисков, но в современных ОС этим дело не ограничивается.
Смена названия утилиты связана с тем, что Windows не просто определяет твердотельные накопители, но и умеет отправлять их томам набор команд TRIM по расписанию, что занимает буквально несколько секунд. Это происходит вдобавок к стандартной отправке команд при удалении файлов.
За автоматическую оптимизацию всех дисков отвечает запланированное задание ScheduledDefrag. Отсутствие видимых триггеров связано с тем, что на свои прогулки оно выходит под зонтом автоматического обслуживания, выполняющегося в периоды бездействия ПК.
Проблема действительно возникает во время обслуживания, но лишь потому, что она кроется непосредственно в задании ScheduledDefrag. Давайте посмотрим, подвержены ли вы ей.
Как проверить, подвергался ли ваш SSD дефрагу
Начиная с версии 2.0, моя утилита CheckBootSpeed включает необходимую информацию в свой отчет. Если вы желаете сделать все своими руками, отфильтруйте журнал приложений по событию 258 от defrag или выполните команду PowerShell:
Get-EventLog -LogName Application -Source "microsoft-windows-defrag" | sort timegenerated -desc | fl timegenerated, message
В результатах команды ориентируйтесь по буквам дисков и типу операции, которых ровно три:
- анализ
- повторная оптимизация (re-trim)
- дефрагментация
В приведенном ниже фрагменте наряду с оптимизацией была сделана дефрагментация SSD.
TimeGenerated : 14.03.2013 3:32:24 Message : Модуль оптимизации дисков успешно завершил повторная оптимизация на System (C:) TimeGenerated : 14.03.2013 3:32:24 Message : Модуль оптимизации дисков успешно завершил дефрагментация диска на System (C:)
Обновляя утилиту CheckBootSpeed, я специально заложил в нее извлечение событий дефрага из журнала. А публичное бета-тестирование позволило мне собрать данные о проблеме на различных ПК. В комментариях к записи нет недостатка в отчетах, и вы можете убедиться, что большинство систем с Windows 8 на SSD подвержены этой проблеме.
Не наблюдалась она только у тех, кто установил систему недавно. В этом случае до дефрага дело могло и не дойти, потому что Windows толерантна к фрагментации дисков.
В каких условиях происходит дефрагментация SSD
Дефраг воспроизводится «из коробки». Конкретнее, должны быть включены служба планировщика заданий, а также задачи в папках TaskScheduler и Defrag. При этом фрагментация диска по мнению Windows должна быть свыше 10%.
Проверить состояние диска, как и прежде, можно командой:
defrag /a C:
С точки зрения файловой системы, данные фрагментируются не только на жестких дисках, но и на твердотельных накопителях.
Другое дело, что их эффективное распределение по ячейкам памяти возлагается на контроллер SSD.
Как воспроизвести дефраг
Графический интерфейс и утилита defrag.exe работают правильно, если передавать последней документированные параметры. В этом легко убедиться, выполнив оптимизацию в GUI или консоли:
defrag /o /u /v C:
Новый параметр командной строки /o отвечает за выбор оптимизации, соответствующей типу накопителя. Жесткие диски дефрагментируются, а твердотельным накопителям посылается набор команд TRIM. Я не нашел проблем с параметром /o, но для отправки команд TRIM есть другой — /l, который мы задействуем позже.
В этих случаях дефрагментация SSD не выполняется, даже если утилита командной строки рекомендует ее по результатам анализа.
Запланированное задание ScheduledDefrag передает утилите defrag.exe таинственный параметр $, который и является виновником. Если у вас SSD фрагментирован более чем на 10%, вы можете увидеть дефраг в действии, запустив задание.
Но на практике проблема возникает, когда задание дефрага стартует в рамках автоматического обслуживания, запущенного автоматически по расписанию или вручную из центра поддержки.
Выделенная ссылка в панели управления просто запускает задание планировщика Manual Maintenance. Оно выполняет те же действия, что и задание Regular Maintenance, работающее по расписанию.
В этом случае ваш SSD внезапно подвергается настоящей дефрагментации в пять проходов, рассчитанной на жесткие диски.
Следы черного дела старательно записывает журнал событий, как вы видели выше. Анализ диска в командной строке по окончании дефрага беспристрастно фиксирует сведенную к нулю фрагментацию.
Анализ фрагментации до обслуживания
C:\Windows\system32> defrag /a c: d: Оптимизация диска (Майкрософт) (c) Корпорация Майкрософт, 2012. Вызов анализ на Win8-SSD (C:)... Операция успешно завершена. Post Defragmentation Report: Сведения о томе: Размер тома = 111,44 ГБ Свободное место = 42,28 ГБ Общий объем фрагментированного пространства = 11% Максимальный размер свободного места = 23,55 ГБ Примечание. В статистику фрагментации не включаются фрагменты файлов, размер которых превышает 64 МБ. Рекомендуется выполнить дефрагментацию этого тома.
Анализ фрагментации после обслуживания
PS C:\Windows\system32> defrag /a c: Оптимизация диска (Майкрософт) (c) Корпорация Майкрософт, 2012. Вызов анализ на Win8-SSD (C:)... Операция успешно завершена. Post Defragmentation Report: Сведения о томе: Размер тома = 111,44 ГБ Свободное место = 40,53 ГБ Общий объем фрагментированного пространства = 0% Максимальный размер свободного места = 33,16 ГБ Примечание. В статистику фрагментации не включаются фрагменты файлов, размер которых превышает 64 МБ. Дефрагментация этого тома не требуется.
Замечу в скобках, что я также заранее включил ведение журнала для заданий в планировщике, чтобы четко задокументировать связь между автоматическим обслуживанием и дефрагом SSD.
Насколько дефрагментация вредна для SSD
В следующей записи я подробно и наглядно объясню, как на самом деле фрагментируются твердотельные накопители и почему им не нужна дефрагментация утилитами для жестких дисков. А сейчас я лишь отмечу, что излишние операции записи во время дефрага так или иначе негативно сказываются на количестве циклов перезаписи ячеек NAND.
Однако вывести количественную оценку вреда затруднительно, поскольку срок службы накопителя зависит от ресурса флэш-памяти, алгоритмов контроллера и выполняемых на ПК задач.
Эти задачи также играют основную роль в скорости фрагментации диска. Поскольку дефраг выполняется лишь при переходе порога 10%, в типичном домашнем компьютере SSD подвергается ему не очень часто.
Исходя из своего опыта, я оценивал частоту дефрага примерно как ежемесячную. Получив ваши отчеты, я проанализировал данные с 14 ПК, и оказалось, что в среднем все именно так и происходит (документ Excel доступен тут).
Ежемесячная дефрагментация не смертельна для SSD, но она совершенно не нужна!
Как избежать дефрагментации SSD
Поскольку дефрагментация реализована специально, убедитесь, что она вам не нужна, прежде чем отключать.
В голову сразу приходит отключение задания ScheduledDefrag или автоматического обслуживания, но это решение неэффективно. В первом случае вы блокируете запланированную отправку команд TRIM и дефраг жестких дисков, если таковые имеются, а во втором — выполнение других задач обслуживания.
Изменение задания ScheduledDefrag прямо в планировщике тоже сопряжено с побочным эффектом. Графический интерфейс оптимизатора при запуске проверяет запланированное задание:
Если сохранить настроенные параметры, утилита не запускается. В противном случае она приводит задание к исходному виду.
При любом раскладе дисков задача решается за несколько минут двумя простыми действиями.
1. Исключите SSD из автоматического обслуживания
Наберите dfrgui на начальном экране, чтобы открыть оптимизатор дисков.
- Нажмите кнопку «Изменить параметры».
- Откройте выбор дисков и снимите флажки с разделов твердотельных накопителей.
2. Создайте новое задание для оптимизации SSD
Мой метод может показаться вам странным, но я объясню свой выбор через минуту.
- Щелкните правой кнопкой мыши задание ScheduledDefrag и экспортируйте его с именем TRIM-SSD.
- Откройте файл в текстовом редакторе и измените описание и параметры команды. Смотрите выделенные строки в примере.
Пример задания для оптимизации (TRIM) SSD<?xml version="1.0" encoding="UTF-16"?> <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Source>Корпорация Майкрософт</Source> <Author>Корпорация Майкрософт</Author> <Description>Эта задача выполняет оптимизацию SSD.</Description> <SecurityDescriptor>D:AI(A;;FA;;;BA)(A;;FA;;;SY)(A;;FRFX;;;LS)(A;;FR;;;AU)</SecurityDescriptor> </RegistrationInfo> <Triggers /> <Principals> <Principal id="LocalSystem"> <UserId>S-1-5-18</UserId> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine> <MaintenanceSettings> <Period>P7D</Period> <Deadline>P1M</Deadline> <Exclusive>false</Exclusive> </MaintenanceSettings> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT72H</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="LocalSystem"> <Exec> <Command>%windir%\system32\defrag.exe</Command> <Arguments>C: D: -l -h</Arguments> </Exec> </Actions> </Task>
- Импортируйте сохраненный файл в планировщик.
Все готово! Задание будет запускаться в рамках автоматического обслуживания, отправляя только перечисленным вами дискам команды TRIM (ключ -L).
Если автоматическое обслуживание у вас по какой-то причине отключено (что не рекомендуется), откройте задание и на вкладке «Триггеры» настройте его запуск еженедельно в любое удобное время.
Что мешает сразу создать в планировщике простое задание?
Ничего, если вы постоянно работаете с правами администратора. Однако мой метод также подходит тем, кто пользуется учетной записью с обычными правами. Оригинальное задание работает в контексте учетной записи «Система», равно как и задание, которое вы только что создали с минимальными усилиями!
Вопросы и ответы
Поскольку вопросы в комментариях уже идут по второму кругу, я буду добавлять некоторые ответы прямо в статью.
В событии 258 нет информации о дефрагментации SSD. Означает ли это отсутствие дефрага?
Это означает, что SSD не дефрагментировался. Например, дефрагментировать диск еще рано, потому что вы недавно установили систему.
Надо ли следовать инструкциям в статье, если следов дефрагментации SSD не обнаружено?
Инструкции исключают дефрагментацию SSD.
Что делать, если в ПК только твердотельные накопители?
Можно просто отключить задание ScheduledDefrag и создать задание TRIM-SSD, следуя инструкциям выше.
Как быть с разделом «Зарезервировано системой»?
С раздела «System Reserved» файлы не удаляются, поэтому и команд для отправки TRIM нет. Как следствие, достаточно исключить раздел из оптимизации в графическом интерфейсе оптимизатора дисков.
Если вы по неведомой причине считаете необходимым оптимизировать этот раздел, определите его путь на основе GUID и пропишите в XML-файле наряду с остальными томами SSD.
Хочу увидеть дефраг SSD своими глазами, но не получается воспроизвести. Почему?
Отключите задание ScheduledDefrag на месяц-полтора, потом запустите автоматическое обслуживание и смотрите, что происходит в dfrgui. См. также мой комментарий.
Есть ли дефраг в Windows 7?
Нет.
Есть ли дефраг в Windows 10, 11, …, 100500?
В статье достаточно информации, чтобы вы могли проверить это самостоятельно, а не задавать вопрос при каждом обновлении системы.
Продолжение следует…
Знает ли об этом Microsoft
Скорее, вопрос нужно ставить так: знает ли об этом соответствующая продуктовая группа. Я видел сообщение с изложением проблемы на западном форуме Answers, но отвечавший там инженер техподдержки отправил участника в форумы TechNet (sic!), тем самым закрыв тему. Отмечу, что у широкой публики нет другого официального пути доставки багов Windows в Microsoft.
Я задокументировал дефект и занес его на Microsoft Connect единственным доступным мне способом, хотя у меня есть обоснованные сомнения в действенности этого метода. Иногда лучше работает привлечение внимания широкой публики к проблеме, и вы можете помочь в этом, поделившись ссылкой на материал в социальных сетях и технических сообществах, в том числе и на его английскую версию.
Дискуссия
Если вы работаете в Windows 8, установленной на SSD, напишите в комментариях:
- модель SSD
- нашли ли вы у себя следы дефрага системного диска
- когда была установлена система
- сколько раз дефрагментировался накопитель с момента установки
Вся эта информация представлена в отчете утилиты CheckBootSpeed. Вы можете просто опубликовать его в комментариях. В этом случае, пожалуйста, замените первую строку на
[code lang="plain" collapse="true" title="Отчет CheckBootSpeed"]
Если вы уже публиковали отчет в рамках бета-тестирования, достаточно просто сослаться на свой комментарий.
Алексей
еще раз извиняйте мозг спит, http://pastebin.com/QcG4DF9y
Сергей
Сделал, вроде бы, всё правильно, но диск C все равно дефрагментируется периодически(((
http://1drv.ms/1iyCqFX
http://1drv.ms/1iyCvcI
Vadim Sterkin
Сергей, вроде все верно, но кое-что не вяжется. Система установлена 10 дней назад, а логи старше.
Сергей
Делал восстановление компьютера с сохранением файлов, поэтому так.
Сергей
Если все верно, то откуда же взялась дефрагментация диска С 26 апреля…
Vadim Sterkin
Откуда мне знать? Возможно, вы исключили диск C после 26 апреля.
Андрей
Добрый вечер, Вадим.
Скажите, пожалуйста, актуальный ли этот баг по состоянию на 05.04.14?
Vadim Sterkin
Андрей, я не знаю. У вас у самого что в логах?
Игорь
Здравствуйте,
Исключил SSD из автоматического обслуживания (все тома) — 1-ый пункт инструкции;
TRIM-SSD создал в том же разделе, что и ScheduledDefrag (его я всё равно отключил, у меня только SSD).
KINGSTON SV300S37A60G
Дата установки системы: 2014-04-05 (прошло дней: 32)
TimeGenerated : 13.04.2014 18:14:35
Message: Модуль оптимизации дисков успешно завершил повторная оптимизация на Windows (C:)
TimeGenerated : 13.04.2014 18:14:35
Message: Модуль оптимизации дисков успешно завершил дефрагментация диска на Windows (C:)
Дефрагментация была только 1 раз.
вручную запускал задачу, процесс, а по завершению пишет: операция выполнена успешно (0х0).
чего значат 0х0? всё как надо?
Vadim Sterkin
Да, без ошибок.
Николай
При любом раскладе дисков задача решается за несколько минут двумя простыми действиями.
сюда надо импортировать TRIM-SSD (измененное задание ScheduledDefrag)?
http://joxi.ru/b29sU_3JTJA5UzOiY6s
Vadim Sterkin
ОК
Николай
установил 8,1 апдейт 1, свежая ос, ссд, баг проявляется, спасибо вашей статье, баг ликвидирован и теперь планировщик нормально оптимизирует ссд, без дефрагментации.
Андрей
Добрый вечер, Дмитрий.
Воспользовался Вашей программой CheckBootSpeed3, вот что она пишет:
TimeGenerated : 5/18/2014 4:00:02 PM
Message : Модуль оптимизации дисков успешно завершил повторная
оптимизация на Win 8.1 SSD (C:)
TimeGenerated : 5/17/2014 3:20:08 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на (F:)
TimeGenerated : 5/17/2014 3:17:02 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на (E:)
TimeGenerated : 5/17/2014 3:17:00 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Storage (G:)
TimeGenerated : 5/17/2014 3:16:51 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Локальный диск (D:)
TimeGenerated : 5/17/2014 1:52:40 AM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на (E:)
TimeGenerated : 5/17/2014 1:52:38 AM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Storage (G:)
TimeGenerated : 5/17/2014 1:52:22 AM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Локальный диск (D:)
TimeGenerated : 5/16/2014 11:16:43 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на (E:)
TimeGenerated : 5/16/2014 11:15:53 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Storage (G:)
TimeGenerated : 5/16/2014 11:15:27 PM
Message : Модуль оптимизации дисков успешно завершил дефрагментация диска
на Локальный диск (D:)
TimeGenerated : 5/16/2014 11:14:46 PM
Message : Модуль оптимизации дисков успешно завершил повторная
оптимизация на Win 8.1 SSD (C:)
TimeGenerated : 5/11/2014 4:00:02 PM
Message : Модуль оптимизации дисков успешно завершил повторная
оптимизация на Win 8.1 SSD (C:)
SSD у меня разбит всего на 1 раздел (диск С). Скажите, пожалуйста, правильно ли я все настроил согласно Ваших инструкций, т.е. оптимизация моего SSD выключена?
Андрей
По ссылке можете найти мой полный отчет: http://pastebin.com/ANMLKgYh
Андрей
Я просто не уверен, что после моих манипуляций по Вашей инструкции у меня нормально работает функция TRIM, т.к. я не изменил свой файл в блокноте, а по ошибке полностью заменил его Вашим файлом из примера.
Vadim Sterkin
Все ок
Андрей
Прошу прощения, Вадим **
Читал комментарии и отложилось в памяти это имя :)
Игорь
Прилагаю отчёт утилиты CheckBootSpeed 3 — https://drive.google.com/file/d/0B81_x2HhcR75VmdaUFpTQWM1MDQ/edit
Странна вещь. Сделал триггер, чтобы раз в неделю по субботам в 19:00 запускался TRIM, а он запускается когда попало. Что нужно изменить, чтобы он запускался раз в неделю?
Vadim Sterkin
Игорь, возможно, вы не удалили из XML раздел автоматического обслуживания.
Игорь
Не удалил, т.к. я не знаю, где раздел автоматического обслуживания. Можете подсказать? И ещё такой вопрос — если я уберу триггер, при этом автоматическое обслуживание стоит раз в неделю — TRIM тоже должен быть раз в неделю? Потому что когда я делал без триггера — TRIM тоже делался почему-то не раз в неделю, а как попало, без определённого графика.
Vadim Sterkin
Все ответы есть по первой ссылке в статье.
Вадим
Здравствуйте!
Извините за не скромный вопрос, вы не могли бы сделать скрипт,
что бы этот процесс автоматизировать?
Спасибо!
Vadim Sterkin
Вадим, я не могу сделать скрипт, потому что расклад по дискам и их буквам у всех разный. Если на ПК вашей организации везде стандартный расклад, вы и сами можете сделать скрипт.
Выдим
Первый шаг вссё понятно.
А второй, как создать ScheduledDefrag ?
Вадим
Извиняюсь за опечатку…
Vadim Sterkin
Первый шаг все понятно? Гм… надо же отключать задание в консоли и делать свое. Экспортировать XML, поправить, импортировать из консоли.
Вадим
Да, с недавнего времени работаю в организации где определенное количество компов,
а сейчас новые поставки с Windows 8 вот и настраиваем.
Гриша
Хотите реальный случай из жизни, который произошел несколько лет назад в XP? На моем HDD закончилось свободное место, поэтому перед записью новых файлов приходилось подчищать старый хлам. Спустя некоторое время пустое (незаполненное) пространство на диске стало сильно фрагментированным. Я записал на диск небольшой файл, который заполнил это пространство и фрагментировался на несколько десятков тысяч кусков. Файл был достаточно мал и поэтому сохранился в дисковом кеше в оперативной памяти.
Каково же было мое удивление, когда я попытался просмотреть/открыть/считать этот файл. Несмотря на то, что файл имел небольшой размер и система брала его содержимое из кеша (светодиод HDD не моргал), этот процесс занял продолжительное время. При этом отмечалась повышенная загрузка CPU, что свидетельствовало о работе над фрагментами файловой системы для сборки файла. Таким образом, даже при отсутствии обращения к HDD фрагментация файловой системы дает о себе знать.
Мораль: нечастая (эпизодическая) дефрагментация SSD имеет смысл, чтобы повысить скорость работы с сильно фрагментированными файлами.
Vadim Sterkin
Гриша, не вижу связи между случаем с HDD на XP и выводом о пользе дефрага SSD на Windows 8.
Гриша
Если у вас сильная фрагментация файлов, вы получите тормоза на любом диске, даже если это будет RAM-диск. Система будет собирать файл из маленьких фрагментов, а на эту операцию требуются ресурсы и время. Что тут непонятного?
В Microsoft не дураки сидят, поэтому не нужно считать, что Windows 8 разрабатывался без учета широкого распространения SSD на рынке. К тому же, вы сами отметили, что дефрагментация срабатывает только при определенных условиях, так что это не баг, а фича.
Vadim Sterkin
Гриша, непонятно тут то, почему вы применяете мерки HDD к SSD, а заодно приплетаете RAM-диск. Но это ладно.
Раз уж вы так уверены в том, что это сделано специально и с умом, может быть, вы объясните, почему эти определенные условия не задокументированы, их невозможно создать средствами командной строки или графического интерфейса дефрага, а Microsoft отрицает существование дефрагментации напрочь?
Заодно хочу услышать вашу версию насчет того, почему такая полезная возможность отсутствует напрочь в Windows 7, чьи системные требования специально заточили под SSD.
Гриша
Несколько странно слышать такое от MVP. Вы что, не понимаете разницу между файловой системой и накопителем? Я вам про одно, вы мне про другое. На HDD, SSD, и RAM-дисках файловая система фрагментируется одинаково, просто на HDD эффект от этого заметен сильнее всего.
Представьте себе базу данных магазина, из нее нужно выбрать всех покупателей с фамилией «Иванов». Предположим, что эта база данных целиком загружена в оперативную память. Выборка из нее займет какое-то время, и чем больше клиентов, тем больше будет затрачено ресурсов и времени для выборки. Не так ли?
То же самое происходит с файловой системой, и совершенно неважно, где она физически расположена: на SSD, HDD или RAM-диске. Или вы полагаете, что файл из десятков тысяч фрагментов считывается с SSD мгновенно? А кто, по-вашему, занимается «склейкой» всех фрагментов в единое целое?
Vadim Sterkin
Гриша, чтобы вам было не странно слышать такое от MVP, разберитесь, как работает SSD. Тогда вы узнаете про фрагментацию ФС и NAND, а также поймете практическую ценность дефрагментации SSD.
Гриша
Я прекрасно знаю, как работает SSD. В вашей статье нет ничего нового для меня. Цитата: «Это называется фрагментация файловой системы, но она не имеет значения для SSD». Совершенно безосновательное утверждение! Вам следует хорошенько пересмотреть различие в произвольном доступе к ячейкам NAND и фрагментацию файловой системы. Вы, наверное, думаете, что файл из фрагментов «собирает» контроллер SSD? Нет! Он всего лишь считывает участки этого файла, «сборкой» занимается драйвер файловой системы. Если вы не согласны с этим утверждением, отправьте ссылку на эту дискуссию в Microsoft, пусть пересмотрят ваш статус MVP.
Vadim Sterkin
Я остаюсь при своем мнении, что в статье описан баг. Продолжайте дефраг своего SSD и в Спортлото пишите сами.
Илья
Ноутбук с твёрдотелом OCZ Vertex 3 Max IOPS на 120GB, без HDD. Перешёл с Win7 на Win8.1.1 меньше месяца назад. Вопреки советам сделать простое обновление, решил всётаки выбрать вариант полной переустановки и заново переразбить и отформатировать все разделы, но к делу эта лишняя информация мало относится. Дефрагментация, слава богу, не выполнялась.
Наткнулся на вашу статью и решил заранее позаботиться, чтоб избежать дефрагментацию SSD. Но я решил вообще убрать оптимизацию дисков — вырубить задание ScheduledDefrag и отключить службу defragsvc, но думаю вместо этого использовать ваш вариант с TRIM-SSD. Можете в двух словах сказать в чём смысл TRIM’а у службы оптимизации дисков и как это помогает? Хотелось бы знать поточнее). Насколько я знаю TRIM работает и без этого. Проверил у себя программой trimcheck — всё в норме. Заранее благодарен за разъяснения.
В целом за статью спасибо, очень полезная. Еслиб не прочёл, даже и не подумал бы что современная ОС со всеми оптимизациями под SSD может иметь такую детскую проблему как его дефрагментация. Планирую перейти на новую ОСь ещё и на ПК, где имеются и HDD и SSD, вот там будет очень важно оставить дефрагментацию одних и убрать её на других.
А вообще есть информация от мелкомягких, будут они поправлять этот баг или нет? И вообще признают ли они его наличие)? На мой взгляд проблема действительно детская и как-то очень удивительно что её по сей день не поправили со времён первой Win8RTM. Или я и тут чего-то не догоняю)? Спасибо!
Vadim Sterkin
Илья,
Тут.
Не признают и отрицают.
Гриша
Этот миф существует со времен Windows 7. Дефрагментация нескольких файлов не страшна для SSD. Почитайте мои сообщения выше, там я описал, почему это не является багом. Мои слова подтверждаются экспериментально. В Интернете есть отзывы по этой теме от других людей (на английском). Хотите, чтобы ваш ПК работал быстро? Просто не трогайте настройки по умолчанию. Существуют десятки других способов продлить жизнь SSD. Если не разбираетесь в теме, доверьтесь программистам Microsoft.
Игорь
Какую посоветуете выставить периодичность проведения дефрагментации и TRIM? Неделю или месяц?
Vadim Sterkin
Инструкции отражают мой совет
Дмитрий
Здравствуйте, Вадим. У меня такой вопрос. Я готовлю эталонный образ WS2012R2 и хотел бы уже в нём сделать всё «как надо». Получается, что я не знаю, какие буквы дисков будут иметь SSD на будущих системах и будут ли они там вообще. Можно ли просто изменить оригинальное задание:
defrag.exe -c -h -k -g -o
Vadim Sterkin
Дмитрий, я не проверял на серверной ОС, и вообще не знаю, как там организовано автоматическое обслуживание. Ограничения изменения оригинального задания описаны в статье.
Дмитрий
Вадим, хорошо, ну тогда, может, поможет точно также, как в статье, запретить оригинальное задание и импортировать новое с этими параметрами (-c -h -k -g -o), — чтобы не было привязки к буквам дисков?
Vadim Sterkin
Дмитрий, еще раз, я не знаю, применим ли дефект к серверной ОС. А так, можно, но я сходу не знаю значения параметра G.
Андрей
Здравствуйте. А будет ли проявляться данная проблема, если запускать оптимизацию SSD из вот этого окна (http://fast-pix.ru/i/f/2014-08-03/0-001p.png) , нажимая кнопку «Оптимизировать»?
Vadim Sterkin
Нет, и об этом написано в статье.
Евгений
Спасибо за статью.
Накопитель Intel 530
Windows на нём. Установлен 2 дня назад. В планах установить HDD вместо оптического привода. Но т.к. пока в ноутбуке только SSD, то естественно дефрагментатор не дает снять галочки с разделов. Отключил SheduledDiag. Надо ли создавать задачу для TRIM, если Intel SSD Тoolbox создал своё расписание для запуска TRIM каждую неделю.
Vadim Sterkin
Евгений, я считаю, что TRIM в SSD Toolbox нужен только в том случае, если ОС не поддерживает TRIM. И в FAQ по утилите написано, что это не требуется (вопрос 11).
Макс
Уважаемый Вадим, скажите пожалуйста, стоит ли держать в автозапуске intel rapid storage technology? Сейчас выполняется обслуживание, правда не пойму что конкретно, в области уведомлений об этом сообщает флажок. Я обновил драйвера программой драйвер гениус и установилась эта утилита. Стоит ли её держать в автозагрузке? Спасибо за ответ.
Vadim Sterkin
Макс, aвтозапуск RST необязателен, но не вижу связи с этой статьей.
Макс
Вадим, просто у меня ssd и hdd, а также виндовс 8.1. Извините, что написал не в том разделе. Еще один вопросик. И всё же, лучше держать RST в автозапе, или отключить? Не хочется чтобы он на ssd лишний раз что-то делал, если не особо нужно.
Vadim Sterkin
Макс, попробуйте сами ответить на свой вопрос с учетом того, что у вас все нормально работало и до установки RST.
Максим
Здравствуйте! Из-за чего может быть такая ошибка? Это в отчете вашей утилиты CheckBootSpeed. Спасибо за ответ.
Vadim Sterkin
Максим, перечитайте свой вопрос и подумайте, можно ли на него ответить в принципе.
Максим
Я забыл вставить текст из буфера) Вот: «Message : Том «Зарезервировано системой» не был оптимизирован из-за ошибки
: Параметр задан неверно. (0x80070057)»
Vadim Sterkin
Коротко: не знаю, но она и не влияет ни на что (нечего там оптимизировать). Обсуждалось тут.
rodi
у меня в win 8.1 x64 update1 нету в планировщике задания ScheduledDefrag , установил свежую систему
как быть ?
Vadim Sterkin
Все там есть, читайте и смотрите внимательнее.
rodi
в списке заданий только одно задание
Optimize Start Menu Cache Files-S-1-5-21-3631894665-1475514657-4262668085-1001
перевесил windows снова всё равно нету
модет в update 1 нет этого задания ScheduledDefrag ?
Vadim Sterkin
Смотрите в Библиотека — Microsoft — Windows — Defrag. В статье же есть картинка.
FarWay
У меня отчёт выводит:
TimeGenerated : 11.09.2014 18:28:11
Message : Модуль оптимизации дисков успешно завершил повторная оптимизация на (C:)
Строчки о дефрагментации — нет, значит всё норм ?
Vadim Sterkin
Не знаю, я не телепат.
BoB4uK
Метод один, а в нём нужно выполнить два пункта.
rodi
спасибо нашол
Дмитрий
1) Я правильно понял должно быть ScheduledDefrag и TRIM-SSD одно будет отвечать за HDD второе за SSD или ScheduledDefrag надо удалить?
2) Если включено «Автоматическое обслуживание», то в программе «Оптимизация дисков» можно отключить оптимизацию по расписанию и в планировщике отрубить в Триггерах, и диски все равно будет дефрагментироваться/оптимизироваться раз в сутки через «Автоматическое обслуживание» так?
Vadim Sterkin
Дмитрий,
1. Правильно поняли, не удаляйте ничего.
2. Неправильно. Отключение расписания в GUI приведет к отключению ScheduledDefrag. Прочтите запись про автоматическое обслуживание и вы поймете, что оно просто запускает другие задания.
В общем, если просто следовать инструкциям, все получится как надо :)
Артур
Добрый день!
Вроде все сделал как Вы написали. Перед тем как изменить, Ваша программка выдала отчет.
А после того как в планировщике поменял все по Вашей инструкции, Ваша программа не создает отчет.
Не могу понять в чем дело?
Vadim Sterkin
Артур, удалите %temp%\checkbootspeed.txt
Артур
Спасибо
Артур
Все ли правильно? Отчет прилагаю.
https://onedrive.live.com/redir?resid=2D98B0687E0943D8!2447&authkey=!AIGjjgCrO-3MTyk&ithint=file%2ctxt
Vadim Sterkin
Да, все ок, см. также рекомендации в отчете.
sasha
Подскажите выполнил defrag /a C: фрагментировано было 13%. Потом запустил обслуживание. Над ssd диском оно закончилось:
http://shot.qip.ru/00yGHj-6y4Fn58Y2/
Еще раз defrag /a C: но так и осталось фрагментировано 13%. Почему так?
Утилита CheckBootSpeed пишет:
У вас на SSD установлена Windows 8+ со стандартными параметрами оптимизации дисков.
Прочтите «Почему Windows 8 и 8.1 дефрагментируют ваш SSD, и как этого избежать»
https://www.outsidethebox.ms/14900/
Как все это понимать?
Vadim Sterkin
Покажите отчет утилиты.
Anton Alekseev
Убрал ссд диски из дефрага. Подстава конечно от мелких и мягких.
Вот отчет.
https://yadi.sk/i/N4fhEgB8caeqU
moonburn
Добрый день, Вадим.
Спасибо вам за статью (и не только за эту : )). Но хотелось бы прояснить несколько моментов.
1) «Щелкните правой кнопкой мыши задание ScheduledDefrag и экспортируйте его с именем TRIM-SSD»
Правильно ли я понимаю, что имя TRIM-SSD где-то «зашито» для вызова Обслуживанием системы? Т.е. у меня оно вызывается, нормально, но вот почему? И где ещё об этом можно почитать?
2) Где можно прочитать о недокументированном ключе -l, который вы используете в своем задании. И почему не используете документированный -o ?
3) Т.е. можно ли в TRIM-SSD использовать не «C: D: -l -h», а «-c -h -o», отключив при этом основной ScheduledDefrag?
Раз, как вы пишете, -o отрабатывает нормально и вся проблема только в -$, то мне кажется логичным только этот -$ убрать.
4) При оптимизации диска (у меня только 1 SSD) для служебных разделов (только! системный — нормально) выскакивает в Событиях ошибка 0x80070057 (погуглив — не только у меня). В принципе, оптимизация этих разделов не очень и нужна, как я понимаю, но всё же раздражает. Не подскажете, как корректно её пролечить. Или просто вместо -c поставить С: и забыть?
Vadim Sterkin
1. Вы можете сохранить файл с любым именем. При импорте файла задание принимает его имя.
2. Ключ L задокументирован в defrag /?
3. Можно, но я предпочитаю явно задавать тип оптимизации для SSD.
4. Не знаю.
moonburn
Спасибо.
1. Да, но откуда Обслуживание знает, что нужно вызвать это новое задание? Может быть, потому что в нём осталось прописано Microsoft\Windows\Defrag\ScheduledDefrag ?
2. Гм, да, это ж /L. Виноват (попутал, думал у вас /i ). В русской винде в описании говорится о «повторной оптимизации». Это и есть TRIM?
3. ОК, спасибо!
Vadim Sterkin
Из узла «MaintenanceSettings». См. также первую ссылку в статье.
Назначение ключа -L я объяснил в статье.
Игорь Загородний
В Windows 10 есть данная проблема?
Vadim Sterkin
Есть ли этот баг в Windows 10, 11, …, 100500?
Игорь Загородний
Ну это не ответ. По ссылке Вы утверждаете, что Microsoft отвергли существование этого бага, а запись в Powershell не свидетельствует о выполнении дефрагментации на самом деле. А меня интересует другой вопрос. Конкретно, независимо от того, опровергают ли это MS или нет — в Windows 10 появляется со временем запись в Powershell о дефрагментации SSD или нет?
Vadim Sterkin
По ссылке я предлагаю вам проверить наличие бага самостоятельно. Это нетрудно.
Игорь Загородний
У уже когда-то проверил. Вопрос в другом. Спорил недавно на overclockers по этому поводу. И там мне говорят такую вещь (прямо как Вам Майкрософт), что мол писать в Powershell это одно, а действительно делать дефрагментацию (т.е., грубо говоря, перемещать блоки) — это другое. И вот чтобы проверить это перемещение нужно гораздо больше времени. У меня ОСь недавно установлена. Я скачал O&O Defrag, сделал анализ диска С, который находится на SSD, и заскринил «поблочно», так сказать. Теперь жду, когда произойдёт этот баг и опять сделаю анализ в O&O, чтобы посмотреть — на том же месте блоки или нет.
Vadim Sterkin
Логи пишутся в журнал, а PowerShell их просто отображает. В целом, замечание верное, но не надо упускать из виду, что 5 проходов дефрагментации можно наблюдать в dfrgui наряду с повышенной дисковой активностью в диспетчере задач. И при таком раскладе доказывать, что дефрага нет, должна Microsoft, а не я :)
А времени для проверки требуется действительно больше, но еще больше на то, чтобы подготовить соответствующий материал к публикации. Я до сих пор не нашел времени, равно как ни один из читателей не прислал мне своих результатов.
Я бы не поверил стороннему дефрагментатору. Нужно смотреть конкретные адреса блоков, а не картинки, которые он непонятно как рисует.
Антон Жапаров
Годная статья, спасибо Вадим!
Отключил стандартную дефрагментацию для своего SSD.
Вчера только удивлялся, почему после установки софта, размером 10 Гб, счетчик записи за день прибавил 90 Гб данных. После просмотров логов дефрагментатора все стало на свои места.
Единственное, для TRIM решил использовать утилиту от производителя.
Хотя тут вопрос спорный, что лучше.
С одной стороны, вендор лучше знает что во внутренностях прошивки SSD его производства.
С другой стороны, функция стандартизована и реализуется драйвером ATA устройств.
Наверное большой разницы нет.
Vadim Sterkin
Антон, TRIM в утилите производителя рекомендуется использовать только в том случае, если ОС не поддерживает TRIM (это д.б. в рук-ве пользователя написано). Ваша ОС поддерживает, и отключение задания на это не влияет.