что такое trim в биосе
Что такое функция TRIM, её самостоятельное включение/выключение
При использовании дисков SSD функция TRIM имеет особое значение. Для обычных винчестеров она не нужна, поэтому о её наличии многие даже не догадываются. Связано это с различным устройством этих накопителей. Когда обычный винчестер удаляет какой-либо файл, то на самом деле всего лишь удаляются данные из таблицы MFT о местонахождении этого файла. Сами же байты этого файла продолжают оставаться на диске. Лишь в таблице эта область переходит в разряд незанятых, куда можно снова записывать информацию. Именно поэтому возможно восстановление удаленных файлов, ведь физически они не удалены. Винчестер с одинаковой легкостью запишет информацию как в совершенно чистые сектора, так и в те, где уже что-то записано. При записи новых данных старые просто стираются. Но устройство SSD-дисков основано на флеш-памяти, а не магнитной записи. Быстрая запись информации в них возможна только в пустые ячейки памяти. Конечно, такой накопитель может сначала стереть старую информацию, а потом туда же записать новую, но затратит на это гораздо больше времени, а значит, потеряется главное преимущество SSD-дисков – скорость. Вот здесь и выручает особая функция, которая обеспечивает производительность SSD-накопителей на должном уровне.
Настройка функции TRIM.
Что такое TRIM
Функция TRIM предназначена для простой, но важной для твердотельного накопителя работы – очищения байтов, помеченных как свободные. Это обеспечивает в них максимально быструю запись новой информации, так как флеш-память оказывается заранее подготовлена к этому процессу. Происходит эта работа средствами операционной системы и поддерживается в Windows, начиная с 7-й версии. Программа запускается в фоновом режиме и по умолчанию всегда включена, благодаря чему подключение и распознавание твердотельных дисков обычно не вызывает проблем.
Как работает TRIM
Устройство накопителей SSD кардинально отличается от привычных винчестеров. Память у них организована страницами, которые можно стирать только целиком. Но накопитель SSD сам не может распределять информацию наиболее эффективно, потому что операционная система не даёт ему информацию о том, какие именно страницы нужно физически очистить. Поэтому накопитель работает с максимальной производительностью, пока у него имеются свободные страницы, на которые он может записывать. Как только пустые страницы закончатся, накопитель будет вынужден перед записью выполнять операцию очистки, что сильно снизит его скорость. Функция TRIM для SSD была добавлена в операционную систему, чтобы обеспечить взаимодействие с накопителем, сообщая ему, какие страницы можно очистить. Это происходит в фоновом режиме, и производительность компьютера в целом долгое время остаётся высокой. Кроме того, флеш-память имеет ограниченное число циклов записи, и это также учитывается. Поэтому не происходит многократная эксплуатация одних ячеек при простое других, отчего срок службы накопителя и его надёжность существенно повышаются.
Как проверить, включена ли команда TRIM
Для корректной работы TRIM обычно ничего делать не требуется. Однако производителей накопителей много, и система может быть настроена тоже по-разному, поэтому не мешает посмотреть, включен ли TRIM. Надо помнить, что поддержка функции TRIM для SSD будет отключена, если накопитель используется в RAID–массиве или в системе включено восстановление. В таком случае включить её не получится. Проверить, работает ли TRIM в Windows 10, 8 или 7, довольно просто. Для этого достаточно запустить командную строку от имени администратора и ввести такую команду:
fsutil behavior query DisableDeleteNotify
Если результат будет 0, то функция работает, а если результат 1, то отключена. Проверить работу TRIM всегда полезно, так как эта функция может не работать при некоторых настройках в БИОС. Указанным способом можно узнать, включена ли она на запущенной системе. Если она не работает, восстановление системы отключено и накопитель не входит в RAID – массив, то полезно заглянуть в BIOS, и посмотреть режим работы диска – должен быть выбран режим AHCI.
Как включить TRIM в Windows
Если проверка говорит, что TRIM не работает, то можно попробовать включить эту функцию вручную. Однако это не сработает для SSD-дисков, подключаемых через USB. Для всех прочих моделей включить функцию TRIM в Windows 10 и более ранних версиях очень просто. Для этого в командной строке нужно ввести одну из команд:
fsutil behavior set disabledeletenotify NTFS 0 – если используется файловая система NTFS.
fsutil behavior set disabledeletenotify ReFS 0 – если используется файловая система ReFS.
Перед тем, как вводить их, полезно посмотреть в свойства диска и убедиться, что там он отображается именно как «твердотельный накопитель», а не просто «жесткий диск». В случае проблем в этом месте в командной строке нужно ввести команду winsat diskformal – это поможет системе верно определить тип диска. Также перед процедурой включения полезно провести дефрагментацию, особенно, если диск уже некоторое время используется и на нем накопилось много файлов.
Как отключить TRIM
Отключается TRIM также просто, как и включается. Делается это также через командную строку – нужно ввести команду disabledeletenotify 1. Должно появиться сообщение NTFS DisableDeleteNotify = 1, которое означает, что функция выключена.
Однако трудно представить ситуацию, когда требовалось бы проводить такую операцию. Ведь эта функция предназначена для оптимизации и ускорения работы SSD-диска. Кроме того, она намного продлевает ему жизнь. Поэтому, отключая её, будьте готовы, что производительность компьютера заметно снизится, а срок работы накопителя сильно сократится.
Указанные здесь способы включения и отключения TRIM работают в системах Windows версий 7, 8, и 10. Однако немало компьютеров используют более старые XP и Vista. В них нет встроенных инструментов для корректного подключения SSD, однако ситуация не безвыходная. Просто придётся найти и установить дополнительное ПО, например, Intel SSD Toolbox. Делитесь в комментариях, были ли у вас проблемы с определением SSD-диска, включилась ли функция TRIM сразу после подключения. Указывайте версию Windows и модель диска – эта информация наверняка будет интересна и полезна многим читателям.
Поднимаем производительность SSD c колен, куда нажимать и зачем
Семь бед – один Deallocate
Многие слышали про команду TRIM. Те самые заветные четыре буквы, которые вызывают множество вопросов у рядового пользователя. TRIM – одна из команд ATA, отправляемая операционной системой с целью уведомления твердотельного накопителя о том, что данные с диска были удалены пользователем и занятые физические ячейки можно освободить. Стоит отдельно сказать про SSD с интерфейсом NVMe — эти диски обладают другим набором команд для работы, но аналог ATA команды TRIM там тоже существует — называется она Deallocate и, соответственно, является идентичной. Поэтому, далее при упоминании TRIM мы будем подразумевать и Deallocate тоже. К чему речь обо всём этом? Как раз именно проблемы с выполнением данных команд в подавляющем большинстве случаев и являются причиной низкой производительности накопителей. Конечно, другие проблемы мы тоже не оставим в стороне, но всему своё время.
В тот момент, когда вы удаляете данные с вашего накопителя, по факту удаляется запись в главной таблице файловой системы. То есть, сами данные остаются на месте, но область помечена на удаление. Сама «зачистка ячеек» происходит в определенное время, например, в момент простоя накопителя, пока вы отошли за чаем. Таким образом производители добиваются снижения износа памяти и увеличивают производительность своих накопителей в определённых сценариях. Именно очисткой этих ячеек и занимается контроллер, выполняя команду TRIM. К слову, после её выполнения, восстановление данных практически невозможно.
Совсем недавно мы рассказывали про технологию Secure Erase, которая схожа с TRIM, но затрагивает не только основные ячейки, но и служебные области, возвращая накопитель в полностью исходное состояние. Напомним, что Secure Erase можно выполнить на накопителе только без файловой системы и при определённых условиях. А технология TRIM как раз и требует наличие операционной системы со всеми вытекающими требованиями.
Объясним на пальцах, как раз их 20…
Когда вы создаёте файл, операционная система отправляет команду записи по адресу определенного логического блока. Когда вы удаляете данные с диска, эти блоки помечаются свободными.
При этом, данные останутся на диске пока контроллер не захочет их перезаписать.
Перед нами часть памяти, в которой находятся файлы А и В разных размеров, занимающих, соответственно, разное количество блоков. Сначала мы удаляем файл В, а затем записываем файл С на наш диск. Для наглядного представления ситуации, когда TRIM не работает, добавим простую иллюстрацию, в которой обозначены следующие состояния:
А теперь что происходит, если TRIM работает. Снова по этапам:
То есть, логика работы совсем другая. Повторим пройденное — в момент удаления нами файла B отправляется команда TRIM, и, поскольку в SSD достаточно часто простаивает, он с радостью удаляет ненужные блоки практически сразу. И в момент того, как мы хотим записать файл С, то он сразу же записывается на диск, а не ждёт пока для него очистят блоки с мусором.
TRIM, а есть ли ты вообще? И, если есть, то работаешь ли?
Узнать, поддерживает ли SSD команду TRIM можно при помощи достаточно большого количества свободно распространяемого программного обеспечения. Возьмём, к примеру, CrystalDiskInfo:
Но демонстрация поддержки – не есть работа. Для начала пройдёмся по ситуациям, когда TRIM надо запускать хитрым способом или данная команда не работает вовсе. Конечно, со временем ситуация может поменяться, но пока дела обстоят следующим образом:
Для начала – попробуем это узнать прямо у операционной системы. В запущенной от имени Администратора командной строке или PowerShell вводим команду «fsutil behavior query disabledeletenotify» без кавычек и смотрим на результат. Если в выводе значатся «0», то это хорошо – TRIM работает. Если «1», то функционал TRIM недоступен. Всё верно: ноль – включённая команда, 1 – выключенная команда.
К примеру, можно использовать простую в использовании программу trimcheck от Владимира Пантелеева. Программа работает в два этапа, между которыми может пройти как несколько секунд, так и десятки минут – всё зависит от специфики работы конкретной модели SSD. Утилита записывает данные на диск и отмечает адреса виртуальных блоков, в которых они размещены. Эти адреса она сохраняет в JSON-файл в своей папке, после чего удаляет данные, что порождает отправку команды TRIM. Утилита смотрит, находятся ли записанные ранее данные по сохраненным адресам. Их отсутствие означает, что контроллер принял команды TRIM к сведению и удалил данные. Если TRIM работает, то сообщение будет соответствующим:
В противном случае надпись будет гласить TRIM appears to be NOT WORKING. Собственно, если вы получили сообщение о неработоспособности, то выполните в запущенной от имени Администратора командной строке или PowerShell команду «fsutil behavior set disabledeletenotify 0» без кавычек. Функция TRIM, если соблюдены все условия (поддерживаемая ОС, реализация в SSD и т.д.), должна включиться и работать. Если этого не произошло, а все требования выполнены, то придётся подумать о замене накопителя.
Проблемы, проблемы вместо обеда
Самая распространённая проблема – наследование. Само собой, речь идёт про Windows до версии 8. Например, когда пользователь ставит в старые системы SSD или переходят с HDD на SSD без изменения настроек BIOS (если это необходимо) или вообще путём клонирования разделов или диска целиком. Напоминаем, что TRIM доступен только в режиме AHCI. К примеру, у многих материнские платы могут работать в двух режимах AHCI и IDE. Соответственно, если SSD подключён к такой плате именно в режиме IDE, то TRIM работать не будет. Просто наличие режима AHCI не решает проблему – Windows установит драйверы согласно выбранному IDE. Казалось бы, ситуация может встречаться редко, но на самом деле – нет. Если с настройками BIOS вы не дружите, то хотя бы проверить режим работы надо. Сделать это можно в диспетчере устройств в разделе «Контроллеры IDE ATA/ATAPI»:
Помните, что просто так после установки Windows переключить режим работы с IDE на AHCI (и обратно) без дополнительных манипуляций не выйдет – операционная система попросту не загрузится. Решения этой проблемы существуют (даже от самой Microsoft), но рекомендовать их не стоит. Требуется изменение параметров реестра, добавление нужного драйвера и готовность к переустановке ОС в случае неудачи.
Вспомним ещё про Secure Erase. Восстановить производительность этой функцией можно. Только вот вряд ли надолго. Особенно, если вы быстро забиваете свой накопитель новыми данными. Так что как временное решение – пойдёт, но оно всегда будет оставаться временным.
Ещё добавим про SLC-кеширование, которое достаточно часто используется у многих SSD-накопителей без привязки к интерфейсу. Невысокая скорость записи большого количества файлов (или больших файлов) после определённого порога не проблема, а особенность работы. Суть кеширования состоит в том, что сначала записываемые данные попадают в специальную область памяти, а уже затем записываются в основную память в фоновом режиме. Когда выделенная высокоскоростная память заканчивается, то данные начинают записываться непосредственно в память на заметно сниженной скорости – от 50 до 150 МБ/с. Это совершенно нормальный режим работы накопителей с SLC-кешем, поэтому здесь ничего сделать невозможно от слова совсем.
Что хорошо, а что плохо?
Если функция TRIM работала с самого начала, то сама по себе никуда она деться не может. Но совсем другое дело, если вы увлекаетесь разного рода твикерами, сторонними драйверами или прошивками, а также сборками операционных систем, якобы улучшенных. Все эти программы и сборки могут только навредить, если речь идёт о Windows 8 и, тем более Windows 10 – в этих ОС всё продумано как надо. В «семёрке» они могут чем-то помочь, но это скорее исключение из множества проблем, которые они могут принести.
Отдельно надо сказать несколько слов про NVMe накопители и драйверы для них. Приобретая высокоскоростной SSD, в ваших глазах должны отражаться полученные в бенчмарках заявленные скоростные показатели. Часто это так и есть, например – с накопителями Kingston. Установил и забыл, как говорится, наслаждаясь его высокими скоростями. Но с SSD других производителей это может быть не всегда так, что, очевидно, расстроит любого. Тут уже не отсутствие Deallocate является причиной недостаточного быстродействия, а стандартный NVMe драйвер. Да-да, при покупке NVMe SSD некоторых производителей обязательно приходится отправляться на сайт его сайт и скачивать соответствующий драйвер – разница со стандартным может превышать двукратную!
Вот теперь, вроде, всё.
Как оказалось – не всё так страшно, как выглядело не первый взгляд. От пользователя требуется выполнение всего нескольких рекомендаций, чтобы система работала корректно и радовала производительностью твердотельного накопителя долгое время. Повторим их напоследок – чистый дистрибутив операционной системы, актуальные драйверы и прошивки от производителя, а также отсутствие сторонних «настройщиков» системы, которые, по заверению их разработчиков, увеличивают производительность на 146%. Если проблема не аппаратная, то никаких нареканий к диску у вас не будет в течение всего срока жизни вашей системы. Так что никакого длинного заключения-словоблудства не будет – всё, что надо было сказать, уже сказано. Ёмких вам SSD, их высоких скоростей и стабильной работы!
Для получения дополнительной информации о продуктах HyperX и Kingston обращайтесь на сайты компаний.
Концепция TRIM для SSD: зачем и как использовать?
Если очень коротко, то это набор функций и эффектов для ATA-шных дисков, с помощью которой операционная система сообщает SSD в каких блоках данных хранилища пользователь более не нуждается, и какие из них могут быть стёрты. Именно TRIM помечает их свободными для последующей перезаписи. Эта команда помогает ОС определить где находится информация, с которой сейчас будут проводиться манипуляции по удалению или перемещению. Таким образом, диски SSD имеют доступ к блокам (и только к тем), в которых хоть что-то хранится. Более того, как только инициализируется запрос на удаление данных (самой системой или юзером), команда TRIM немедленно «затирает» блоки или страницы данных. Таким образом, это делается не во время самой записи файла, а предварительно. А это уже означает, что при желании в следующий раз что-то в эту часть ПЗУ записать, Windows время на удаление данных тратить не будет.
А вот сейчас будет кусок теории, в которой я позволю себе утверждать, что TRIM не полезна… Она строго обязательна. SSD — это устройство, куда понапихана куча чипов памяти. Операционной системе необходимо иметь постоянный к ним доступ с целью читать, записывать и стирать данные с этих чипов. И самому диску это дело нужно как-то организовывать. И изначально вся попадающая на диск информация разбивается на блоки данных. Которые, в свою очередь, делятся на страницы или листы данных. Диск — это, по сути, привычная со школьной скамьи библиотека. Школьная, студенческая, городская, областная… И аналогия с объёмами данных здесь та же. Но смысл един — куча полок с кучей книг на каждой. Однако, в отличие от библиотечной, книги здесь на полке лежат стопками. Одну книгу не взять: диску SSD, чтобы страницу памяти удалить, приходится удалять сначала блок полностью, выбранное затирать, а оставшееся копировать и вставлять обратно. И не важно, толстая ли «книга» или их совсем немного: сначала диску нужно перелопатить весь блок памяти полностью, чтобы удалить (пусть даже крохи) информацию. И в качестве виртуального библиотекаря в нашем случае используется буфер памяти (временное хранилище). В общем, система далека от эффективности: ведь всякая операция по перемещению файлов на SSD диск моментально привязывается к производительности системы в части скорости записи на носитель. Ведь SSD, в отличие от HDD, НЕ ПОНИМАЕТ КАКИЕ СЕКТОРА ДИСКА ИСПОЛЬЗУЮТСЯ, и что такое «свободное пространство». И TRIM SSD нужна именно для этого. Как воздух. Кроме того, встаёт вопрос о физическом износе чипов памяти. Для некоторых этот вопрос почему-то всегда спорный, однако поверьте — подобные частые пертурбации по записи-удалению гарантийно снижают срок работы любого устройства. Именно TRIM и заставляет SSD работать с меньшими по объёму кластерами памяти. И даже более того, как только появляется команда на удаление файлов, SSD автоматически посылает trim-команду на освобождение необходимого дискового пространства. И здесь показатели записи на диск пользователя приятно удивляют.
Как узнать поддерживает ли диск TRIM?
Террабайтник HDD и TRIM несовместимы
Как узнать включена ли TRIM у меня, и как её активировать?
А куда она денется? Но чтобы точно определить включена ли TRIM для вашего диска, воспользуйтесь командой
из командной консоли, запущенной от имени администратора:
Две строчки означают, что для файловых систем NTFS и ReFS TRIM включена. Система делает это по умолчанию, и такой вывод консоли встретит вас в любом случае, даже если на машине не установлено ни одного SSD.
В нормальной ситуации никакая из нижеследующих команд вам не понадобится. Windows автоматически активирует TRIM, как только увидит SATA диск в режиме AHCI. Это происходит, в том числе, после переезда системы с HDD на SSD. Но, если вы обнаружили, что TRIM для диска почему-то отключена, воспользуйтесь командой
из той же консоли. По аналогии команда для SSD с файловой системой ReFS:
В противоположность ей есть команда на выключение TRIM в виде:
или для подходящей файловой системы
Как запустить вручную?
Прямой команды trim в привычном для многих в консоли или PowerShell не существует. Отследить использование системой retrim можно по Журналу событий (ищите в логах событие с ИД 258 ). Для собственноручного же запуска оптимизации (к привычной до того дефрагментации процесс слабо относится) диска есть вариант командлета из среды PowerShell (с флагом ReTrim). Он оптимизирует раздел, используя процесс дефрагментации, собственно TRIM и плюс многоуровневую оптимизацию памяти. Если никакой из дополнительных флагов командлета использоваться не будет, по умолчанию она:
Например, для диска С командлет из PowerShell от имени администратора примет вид
Вот результаты проверки на компьютере с SSD (системный) и HDD (используемый в качестве хранилища):
Аналогичный одному из ответов для системного диска С, лежащем на SATA HDD:
на этом диске retrim в обычной форме не сработает
Чего-то у меня не работает…
Пару слов в окончание. Несколько раз я столкнулся со странным багом в отношении с trim-операцией. Общего у ошибки было то, что после получения ежеполугодичного («большого») обновления Windows 10, TRIM-функции отказывались работать. В смысле запускаться. Одна из них точно подстерегла меня на чипсете Intel(R) PM55 Express. В общем, было принято логичное, хотя и временное решение откатить драйверы контроллера SATA AHCI к материнской плате до предыдущей версии, после чего всё заработало.
Почему по мере заполнения SSD падает скорость записи в RAID, или зачем нужен TRIM
Эта проблема наиболее актуальна для аппаратных RAID или firmware RAID (таких как Intel RST RAID 1/10/5/6) с непромышленными SSD.
Особенность SSD
SSD пишут и читают данные страницами, записать можно только на очищенные страницы, а очистить страницы можно только большими блоками. Например, у диска размер страницы 8 КБ, в блоке находится 128 страниц, таким образом, размер блока — 1024 КБ (здесь и далее, если не указано иного, КБ и МБ двоичные).
Например, если изменить 40 КБ в одном файле, то на физическом уровне это будет выглядеть так:
На логическом уровне всё выглядит как обычно — данные будут перезаписаны поверх в соответствующих секторах. Как только в блоке 1 останутся исключительно пустые и готовые для очистки страницы, этот блок стирается и становится пустым целиком.
Чтобы скрыть физическую реализацию, диск поддерживает карту соответствия логических и физических номеров страниц (Flash Translation Layer).
Пока мы видим только один путь, которым физическая страница сможет стать снова очищенной — если на её логический адрес запишут новые данные. Дело в том, что контроллер диска работает на уровне страниц и не знает ничего о файловой системе, а операционная система никак не извещает диск об удалённых файлах, какие секторы могут быть очищены. Несложно видеть, что рано или поздно каждая страница диска будет занята и ему будет некуда писать данные.
Чтобы решить это проблему, была добавлена команда ATA TRIM (wiki). Операционная система посылает её диску с указанием секторов, которые могут быть очищены. Аналоги этой команды — SCSI UNMAP и CF ERASE. К сожалению, в некоторых случаях нет возможности послать её диску:
— если диск находится в RAID с аппаратным контроллером (LSI, Adaptec и т. п.),
— если диски находится в firmware-RAID, в частности, Intel RST RAID 1/10/5/6,
— если диск подключен по USB (ограничение протокола),
— если диск зашифрован программно через TrueCrypt, dm-crypt, GELI и т.п. (может поддерживаться, но обычно не включается по соображениям безопасности).
Если в результате тестирования выясняется, что диск не получает команду TRIM, то вскоре для записи может остаться совсем мало свободных страниц. Но они будут: каждый диск содержит некоторую зарезервированную область, которая служит как запас свободных страниц и запас блоков на замену полностью изношенным. Чтобы узнать размер этой области нужно посмотреть, какой физический объём памяти установлен на диске и сколько LBA указано в документации.
Например, Samsung SSD 840 Pro 512 GB имеет 512 ГБ памяти, при этом доступно 1000215216 LBA секторов. Резерв составляет: 512 × 1024 × 1024 × 1024 — 1000215216 × 512 = 35 ГБ или 6,85 %. Доступная ёмкость диска при этом составляет (512 — 35) × 1024 × 1024 × 1024 = 512 × 10^9 = 512 ГБ, уже десятичных. Samsung SSD 850 Pro 128 ГБ имеет на борту 129 ГБ, пользователю доступно 128 ГБ десятичных, резерв — 7,6 %.
Итак, если мы заполним весь диск, потом удалим все файлы, то без поддержки TRIM диск сможет писать только на какую-то часть от 6,85 % объёма диска. Часть, потому что этот резервный объём будет частично состоять из не полностью пустых блоков из-за фрагментации. Наличие этой области позволяет хоть как-то продолжать перезапись файлов на диске.
Пример худшей ситуации: писать некуда, хотя объём занятых страниц не превышает доступный пользователю без резерва.
В этом случае одновременно с записью работает сборщик мусора, который будет читать блок в оперативную память, стирать блок на диске (долгая операция, стирание занимает 3000 мкс в сравнении с 900 мкс записи в пустую страницу) и записывать блок из оперативной памяти. Задержка происходит также из-за роста Write Amplification — на одну логическую операцию записи приходится 5-10 физических операций записи.
Поэтому чем больше у диска есть свободного места для манёвров, тем выше скорость записи. Сборщик мусора в фоне занимается не только очисткой и дефрагментацией блоков, но и равномерным распределением циклов записи/очистки (P/E) по блокам, чтобы они изнашивались одинаково.
Есть популярный миф, что у современных дисков настолько хороший сборщик мусора, что им не нужен TRIM. Это совершенно не так, сборщик мусора и TRIM решают разные задачи.
Промышленные диски часто имеют 50% и больше резервной области, поэтому для них отсутствие TRIM не критично. Остальные диски чаще всего вообще не имеют явно заявленной резервной области, или она недостаточна. Тесты показывают, что хороший эффект имеет объём over-provisioning 25-29 % от общего объёма физической памяти (включая резервную область). Поэтому если у диска недостаточный объём резервной области, то нужно сделать over-provisioning самостоятельно.
Есть три способа:
— разметить диск таким образом, чтобы оставить некоторую часть неразмеченной области, после создания RAID,
— использовать команду ATA для создания Host protected area (howto), до создания RAID,
— настроить RAID контроллер, чтобы он использовал только часть объёма диска.
Прежде чем выделить свободную область, нужно дать знать диску, что эта область ничем не занята, одним из двух способов:
— подключить диск к другому контроллеру и послать команду ATA TRIM (или при помощи O&O Defrag — есть cli интерфейс, Windows 8 встроенный оптимизатор дисков или Anvil’s Storage Utilities),
— сделать полную очистку таблицы FTL, послав команду ATA Secure Erase.
Есть версия, что также можно заставить диск понять, что блоки не используются, если туда записать 0x00 или 0xFF (так называемый метод «Tony TRIM»). Возможно, для каких-то контроллеров это работает, но мои тесты не показали изменений.
На практике
У меня есть два диска Samsung SSD 540 Pro 512 GB в Intel RST RAID 1, на которых установлена Windows 8.1. После года работы я измерил производительность и был неприятно удивлён. После проверки TRIM я увидел, что он не работает.
— Проверка TRIM под Windows,
— Проверка TRIM под Linux:
Колонки DISC-GRAN и DISC-MAX обе должны быть больше 0 для всех участвующих компонентов.
Альтернативный вариант:
После удаления файла на диске должны быть 0x00 или 0xFF, но это недостоверный способ: разные диски ведут себя по-разному.
TRIM в реальном времени включается опцией «discard» при монтировании диска:
TRIM для файловых систем на одиночных дисках и LVM поддерживается с ядра Linux 2.6.33. TRIM для mdraid поддерживается с ядра Linux 3.7. Но может быть портирован и на старые версии ядра, например, поддерживается в CentOS 6.
По-умолчанию Ubuntu делает TRIM по расписанию раз в неделю при помощи fstrim, но только для одиночных дисков (не mdraid) следующих производителей: Intel, Samsung, OCZ, SanDisk и Patriot и если установлен «hdparm».
— Проверка TRIM в FreeBSD:
ZFS по-умолчанию поддерживает TRIM начиная с версии FreeBSD 9.2:
GEOM RAID gmirror поддерживает TRIM с FreeBSD 9.1:
колонка «d/s» — BIO_DELETE/second.
Intel RST RAID поддерживает TRIM только для типа RAID 1, как исключение: для включения нужно убедиться, что драйвер Intel RST версии 11 и выше, и прошивка OROM (Legacy boot) или SataDriver (UEFI boot) версии 11 и выше, или старая версия, но пропатченная. TRIM поддерживается в Intel RSTe RAID 0/1/10 начиная с версии 3.7.0.1093.
Я решил создать неразмеченный раздел диска для over-provisioning.
1. При помощи Acronis Backup я снял образ диска. Также сохранил таблицу разделов (важно иметь первый сектор, последний сектор, GPT тип раздела, GPT уникальный идентификатор, имя раздела).
2. Перезагрузился в BIOS и сделал SSD Secure Erase. Если этого пункта нет в BIOS, то можно выполнить команду при помощи hdparam (или здесь и здесь, есть под Windows), HDDErase или HDAT2.
3. Собрал RAID 1 на двух дисках.
Здесь нужно сделать важное замечание: при инициализации массива RAID-контроллер считывает каждый сектор с одного диска и записывает его на второй. Теоретически это должно помешать всей нашей затее, и на одном диске не будет over-provisioning. Но тесты показали, что этот метод почему-то работает. У меня этому нет объяснений.
4. Загрузился с LiveCD и при помощи GPT fdisk создал нужную таблицу разделов: последний раздел на 104 ГБ меньше, чем раньше. Разделы нужно выравнивать (partition align) по размеру страницы диска, а не по размеру блока.
5. Восстановил из резервной копии каждый раздел.
После этого я полностью заполнил диск и запустил тесты. Это должно показать худший случай. Кеш Windows включён, регулярная запись кеша выключена, Inter RST write-back выключен, все тесты используют область диска фиксированного размера в 40 ГБ. Тестировать диски непросто, поскольку показатели могут меняться во времени. Ниже сведены показатели установившегося состояния.
Я сравню три состояния:
— Один диск без RAID, полностью заполненный, стандартная скрытая резервная область 6,58 %.
— Один диск без RAID, после запуска на нём TRIM свободного места.
— Два диска в RAID 1, полностью заполненные, стандартная скрытая резервная область 6,58 %.
— Два диска в RAID 1, полностью заполненные, over-provisioning 27,24 % (включая скрытую резервную область).
Анализ результатов:
— чтение с RAID 1 оказывается быстрее, чем с одного диска, невзирая на то, что у нас всего лишь firmware RAID.
— запись тем быстрее, чем больше нераспределенного пространства: на первом месте TRIM, на втором — наш самодельный over-provisioning.
Установившееся состояние не всегда достигается быстро. Посмотрим тест последней конфигурации (over-provisioning 27,24 %) в динамике и увидим худший случай:
Любопытный процесс идёт первые 400 секунд, после чего производительность возрастает и стабилизируется. Я думаю, параллельно с записью работает сборщик мусора, который дефрагментирует блоки и подготавливает их для записи. Такое поведение наблюдается не каждый раз, а время от времени. Видно, что последовательная запись проседает до 70 МБ/с, случайная запись — до 18000 IOPS. Эти показатели всё равно в два раза лучше, чем без over-provisioning (32 МБ/с и 7139 IOPS соответственно). Чтобы убедиться, что установившееся состояние на самом деле имеет такую высокую производительность, я также выполнил тест в течении 30 минут, при этом было записано на диск 490 ГБ со средним 69721 IOPS.
Кратко
— Если диск получает ATA TRIM от ОС, то беспокоиться не о чем, достаточно оставлять часть места на диске свободным.
— Если используются дорогие промышленные диски, то проверьте объём встроенной резервной области, если он достаточен, то проблем с записью не будет.
— В остальных случаях нужно оставить не размеченную область, чем больше её размер, тем меньше будет стандартное отклонение латентности записи.
— Иногда сборщик мусора не успевает подготовить чистые блоки и скорость записи может просесть и быть непостоянной.
— После over-provisioning установившаяся максимальная скорость записи повысилась с 7000 до 68000 IOPS, а средняя минимальная — с 6000 IOPS до 19000 IOPS.