
Сейчас SSD встречаются практически во всех компьютерах. Большинство пользователей воспринимают диск лишь как пространство для хранения файлов и не задумываются о внутренних механизмах удаления и записи данных. Между тем понимание работы этих процессов помогает поддерживать высокую производительность накопителя и продлевать его срок службы.
В этом материале рассмотрим ключевые принципы управления флеш-памятью и узнаем, какую роль играет команда TRIM. Все подробности — ниже.
Введение
Ранее при выборе накопителя ориентировались главным образом на скорость передачи данных и объём. Остальные параметры, такие как компактность, бесшумность и энергопотребление, считались лишь дополнительными, хотя они особенно важны для ноутбуков и портативных устройств. И всё это должно оставаться демократичным по цене, чтобы SSD получили широкое распространение.
Наружу кажется, что HDD и SSD выполняют одинаковые задачи: сохранить файл, удалить его и снова сохранить. Но их внутренняя архитектура принципиально различается, а значит, отличается и логика работы при удалении и записи.
Постараюсь коротко объяснить, почему стирание данных на SSD отличается от HDD.
На жёстком диске (HDD) при записи система заносит координаты блока в специальную таблицу. При удалении из таблицы убирается только указатель на файл, а сами биты остаются до перезаписи новыми данными. Благодаря этому утилиты восстановления могут восстановить «удалённые» файлы.
SSD основаны на NAND-флеш-памяти, ячейки которой представляют собой транзисторы с плавающим затвором. Уровень заряда затвора меняет порог открытия транзистора: при чтении подаётся тестовое напряжение, и в зависимости от того, пропустит ли транзистор ток, фиксируется значение «0» или «1». Запись данных осуществляется методом туннелирования Фаулера–Нордхайма.

Флеш-память разделена на страницы (4–16 КБ), объединённые в блоки стирания объёмом примерно 512 КБ—2 МБ. Невозможно переписать одну страницу без предварительного стирания всего блока.
Поэтому при записи в занятый блок контроллер сначала копирует действительные данные на свободные страницы другого блока, затем стирает весь исходный блок и лишь после этого записывает новые данные. Освобождённые страницы помечаются как «невалидные» до выполнения процедуры очистки.
Команда TRIM
TRIM — команда интерфейса ATA, позволяющая операционной системе уведомить SSD о том, какие логические блоки адресов (LBA) уже не содержат полезных данных и могут быть освобождены. В SCSI-стандарте аналог называется UNMAP.
При удалении файлов, изменении или форматировании разделов ОС формирует список ненужных LBA и отправляет его контроллеру. Это ускоряет сборку мусора (garbage collection) и сокращает количество лишних операций записи.
После получения TRIM SSD помечает эти адреса как свободные, но не всегда стирает ячейки немедленно — очистка может произойти сразу или в период простоя, в зависимости от прошивки и встроенных алгоритмов.

TRIM критичен для поддержания производительности и доступного объёма SSD. До очистки удалённые данные продолжают занимать ячейки, что замедляет запись и уменьшает свободное пространство.
Кроме того, износ ячеек при циклах стирания-записи ограничен. Алгоритмы выравнивания износа (wear leveling) равномерно распределяют нагрузку по всем ячейкам, но карту расположения данных знает только контроллер, а операционная система не вмешивается в этот процесс.
Поведение SSD после TRIM
TRIM передаёт только таблицу освобождённых блоков. Последующие действия контроллера зависят от модели, версии прошивки, загрузки кэша pSLC и других факторов. Он может сразу стереть блоки, отложить очистку до простоя, обновить карту валидных страниц или даже записать нули для ускорения будущих операций.
В большинстве современных SATA- и NVMe-накопителей после TRIM чтение очищенных блоков возвращает нули, хотя физически данные могут оставаться в ячейках.

Поддержка TRIM в ОС
Windows
С Windows 7 команда TRIM включена по умолчанию и выполняется в фоне. Введите в командной строке (от имени администратора):
fsutil behavior query DisableDeleteNotify
DisableDeleteNotify = 0— TRIM включён;DisableDeleteNotify = 1— TRIM отключён.
Windows XP и Vista не поддерживают TRIM.
macOS
На аппаратных SSD Apple TRIM и Active Garbage Collection работают «из коробки». Для сторонних накопителей в macOS его можно включить командой sudo trimforce enable. Состояние поддержки проверяется в «Системном отчёте» → «Хранилище» → «Поддержка TRIM».
RAID-массивы
Большинство RAID-контроллеров не передают команды TRIM, но современные программные решения постепенно внедряют эту функцию. В дистрибутивах Ubuntu (14.04 и новее) TRIM работает без дополнительной настройки.
Как проверить работу TRIM
Для тестирования на Linux потребуется диск без ценных данных — метод полностью стирает содержимое выбранного сектора. Последовательность:
echo "TESTDATA1234567890" | dd of=/dev/sdX bs=512 seek=1000 count=1
Проверяем запись:
dd if=/dev/sdX bs=512 skip=1000 count=1 | hexdump -C
Отправляем TRIM:
blkdiscard -o $((1000*512)) -l 512 /dev/sdX
Снова читаем сектор. Если он заполнен нулями, TRIM работает:
dd if=/dev/sdX bs=512 skip=1000 count=1 | hexdump -C
Чтобы проверить блокиратор записи, повторите те же шаги через защитное устройство. Если после TRIM через него сектор тоже обнуляется, это означает, что команда передаётся даже при включённой аппаратной защите.
Выводы
TRIM не ускоряет запись напрямую, но освобождает подготовленные под запись блоки, что поддерживает высокую скорость работы SSD. Команда продлевает срок службы накопителя, поскольку оптимизирует циклы стирания-записи и позволяет алгоритмам выравнивания износа равномерно распределять нагрузку по ячейкам. При наличии 30–35 % свободного пространства контроллер эффективно управляет ресурсами, но по мере заполнения диска скорость записи снижается из-за необходимости предварительной очистки блоков.
Поделитесь своим опытом и мыслями в комментариях!



