Концепция TRIM для SSD: зачем и как использовать?

Концепция TRIM для SSD: зачем и как использовать?

29.10.2020 0 Автор GodKnowses

Что такое TRIM?

Если очень коротко, то это набор функций и эффектов для ATA-шных дисков, с помощью которой операционная система сообщает SSD в каких блоках данных хранилища пользователь более не нуждается, и какие из них могут быть стёрты. Именно TRIM помечает их свободными для последующей перезаписи. Эта команда помогает ОС определить где находится информация, с которой сейчас будут проводиться манипуляции по удалению или перемещению. Таким образом, диски SSD имеют доступ к блокам (и только к тем), в которых хоть что-то хранится. Более того, как только инициализируется запрос на удаление данных (самой системой или юзером), команда TRIM немедленно “затирает” блоки или страницы данных. Таким образом, это делается не во время самой записи файла, а предварительно. А это уже означает, что при желании в следующий раз что-то в эту часть ПЗУ записать, Windows время на удаление данных тратить не будет.

Как работает SSD, или почему TRIM так полезна?

мужик достаёт книгуА вот сейчас будет кусок теории, в которой я позволю себе утверждать, что TRIM не полезна… Она строго обязательна. SSD – это устройство, куда понапихана куча чипов памяти. Операционной системе необходимо иметь постоянный к ним доступ с целью читать, записывать и стирать данные с этих чипов. И самому диску это дело нужно как-то организовывать. И изначально вся попадающая на диск информация разбивается на блоки данных. Которые, в свою очередь, делятся на страницы или листы данных. Диск – это, по сути, привычная со школьной скамьи библиотека. Школьная, студенческая, городская, областная… И аналогия с объёмами данных здесь та же. Но смысл един – куча полок с кучей книг на каждой. Однако, в отличие от библиотечной, книги здесь на полке лежат стопками. Одну книгу не взять: диску SSD, чтобы страницу памяти удалить, приходится удалять сначала блок полностью, выбранное затирать, а оставшееся копировать и вставлять обратно. И не важно, толстая ли “книга” или их совсем немного: сначала диску нужно перелопатить весь блок памяти полностью, чтобы удалить (пусть даже крохи) информацию. И в качестве виртуального библиотекаря в нашем случае используется буфер памяти (временное хранилище). В общем, система далека от эффективности: ведь всякая операция по перемещению файлов на SSD диск моментально привязывается к производительности системы в части скорости записи на носитель. Ведь SSD, в отличие от HDD, НЕ ПОНИМАЕТ КАКИЕ СЕКТОРА ДИСКА ИСПОЛЬЗУЮТСЯ,  и что такое “свободное пространство”. И TRIM SSD нужна именно для этого. Как воздух. Кроме того, встаёт вопрос о физическом износе чипов памяти. Для некоторых этот вопрос почему-то всегда спорный, однако поверьте – подобные частые пертурбации по записи-удалению гарантийно снижают срок работы любого устройства. Именно TRIM и заставляет SSD работать с меньшими по объёму кластерами памяти. И даже более того, как только появляется команда на удаление файлов, SSD автоматически посылает trim-команду на освобождение необходимого дискового пространства. И здесь показатели записи на диск пользователя приятно удивляют.

Как узнать поддерживает ли диск TRIM?

Windows начала поддержку TRIM, начиная с 7-ой версии. Косвенно на поддержку trim-функции могут указать команды и из следующих абзацев. Однако самый точный из способов – использовать утилиты-бенчмарки типа CrystalDiskInfo или HWiNFO64.

trim диском не поддерживается

Террабайтник HDD и TRIM несовместимы

жёсткий диск поддерживает trim

Как узнать включена ли TRIM у меня, и как её активировать?

А куда она денется? Но чтобы точно определить включена ли TRIM для вашего диска, воспользуйтесь командой

fsutil behavior query disabledeletenotify

из командной консоли, запущенной от имени администратора:

функция trim для диска включена

Две строчки означают, что для файловых систем NTFS и ReFS TRIM включена. Система делает это по умолчанию, и такой вывод консоли встретит вас в любом случае, даже если на машине не установлено ни одного SSD.

В нормальной ситуации никакая из нижеследующих команд вам не понадобится. Windows автоматически активирует TRIM, как только увидит SATA диск в режиме AHCI. Это происходит, в том числе, после переезда системы с HDD на SSD. Но, если вы обнаружили, что TRIM для диска почему-то отключена, воспользуйтесь командой

fsutil behavior set disabledeletenotify 0

или

fsutil behavior set disabledeletenotify NTFS 0

из той же консоли. По аналогии команда для SSD с файловой системой ReFS:

fsutil behavior set disabledeletenotify ReFS 0

В противоположность ей есть команда на выключение TRIM в виде:

fsutil behavior set disabledeletenotify NTFS 1

или для подходящей файловой системы

fsutil behavior set disabledeletenotify ReFS 1

Как запустить вручную?

Прямой команды trim в привычном для многих в консоли или PowerShell не существует. Отследить использование системой retrim можно по Журналу событий (ищите в логах событие с ИД 258 ). Для собственноручного же запуска оптимизации (к привычной до того дефрагментации процесс слабо относится) диска есть вариант командлета из среды PowerShell (с флагом ReTrim). Он оптимизирует раздел, используя процесс дефрагментации, собственно TRIM и плюс многоуровневую оптимизацию памяти. Если никакой из дополнительных флагов командлета использоваться не будет, по умолчанию она:

  • анализирует и дефрагментирует HDD, фиксированные VHD
  • повторно TRIM-ирует SSD диски с поддержкой функции
  • SSD без поддержки TRIM остаются нетронутыми.

Optimize-Volume -DriveLetter буква-диска -ReTrim -Verbose

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

Например, для диска С командлет из PowerShell от имени администратора примет вид

Optimize-Volume -DriveLetter C -ReTrim -Verbose

Вот результаты проверки на компьютере с SSD (системный) и HDD (используемый в качестве хранилища):

optimize-volume command on ssd drive

volume optimization is not supported

Аналогичный одному из ответов для системного диска С, лежащем на SATA HDD:

retrimm в windows 10

на этом диске retrim в обычной форме не сработает

Чего-то у меня не работает…

Пару слов в окончание. Несколько раз я столкнулся со странным багом в отношении с trim-операцией. Общего у ошибки было то, что после получения ежеполугодичного (“большого”) обновления Windows 10, TRIM-функции  отказывались работать. В смысле запускаться. Одна из них точно подстерегла меня на чипсете Intel(R) PM55 Express. В общем, было принято логичное, хотя и временное решение откатить драйверы контроллера SATA AHCI к материнской плате до предыдущей версии, после чего всё заработало.

Успехов.