Trim ssd

Настройка TRIM в других дистрибутивах

Большинство дистрибутивов, которые используют не Systemd, а другую систему инициализации, также поставляются с fstrim без флага —all. Это несколько усложняет автозапуск TRIM.

Важно! Использовать TRIM на устройствах, которые не поддерживают эту команду или выполняют её не правильно, очень опасно и может привести к потере данных. Флаг —all может обеспечить безопасное выполнение команды, однако не пытайтесь определить вручную, корректно ли поддерживают подключенные диски данную операцию

В системе Ubuntu 14.04 существует короткий сценарий fstrim-all, который еженедельно выполняется демоном cron. Однако данный сценарий не всегда правильно интерпретирует поддержку TRIM на подключенных дисках.

Существует обходное решение для этого и других дистрибутивов с поддержкой fstrim без флага —all: нужно скомпилировать статически скомпонованную версию fstrim с поддержкой этого флага. Эту версию можно установить и явно вызывать с помощью cron.

Такой вариант лучше всего сработает в:

  • Ubuntu 14.04
  • Ubuntu 12.04
  • Debian 7
  • CentOS 6

В Ubuntu 14.04 нужно сначала отключить сценарий fstrim-all, поскольку он не может корректно определять статус.

Загрузка и извлечение исходного кода

Утилита fstrim поставляется в наборе инструментов util-linux. Исходный код можно найти здесь.

Выберите самую новую версию пакета. На момент написания руководства это v2.28.

Откройте каталог и найдите самый новый архив (его название должно начинаться с util-linux- и заканчиваться расширением .tar.gz). На данный момент наиболее актуальным является util-linux-2.28.1.tar.gz. Кликните правой кнопкой и скопируйте ссылку в буфер обмена.

Вернитесь на сервер и откройте каталог /tmp. С помощью утилиты curl или wget загрузите необходимый файл.

Распакуйте архив:

Теперь исходный код можно скомпилировать.

Настройка и компиляция исходного кода

Откройте извлечённый каталог:

Теперь нужно настроить программное обеспечение. Создайте бинарный файл для fstrim.

Для этого необходимо включить статические ссылки и отключить расшаренные библиотеки. Введите:

Чтобы скомпилировать утилиту fstrim, введите:

Скопируйте бинарный файл в каталог, который не указан в PATH. Этот файл будет вызываться только демоном cron, потому нужно убедиться, что он не будет конфликтовать со стандартной утилитой fstrim.

Создайте каталог /cron-bin и переместите в него бинарный файл:

Теперь у вас есть доступ к пользовательской версии утилиты fstrim.

Настройка cron

Теперь нужно создать новый сценарий, который будет запускаться демоном cron.

Это делается почти так же, как в Ubuntu 16.04 (нужно также указать место хранения бинарного файла).

Создайте файл:

Вставьте в него следующие строки. Это включит поддержку флага —all:

Сохраните и закройте файл.

Сделайте сценарий исполняемым.

Демоны cron и anacron смогут использовать этот сценарий для выполнения проверки TRIM.

Как проверить включена ли функция TRIM

Проверить подключена ли услуга TRIM SSD накопителя отдельно взятого компьютера можно. В начале следует выяснить имеются ли права администратора. Если с этим порядок, то наличие услуги выясняют посредством командной строки.

Проверка включения функции

Процесс по шагам:

  • «Пуск»;
  • «Программы»;
  • «Стандартные»;
  • «Командная строка»;
  • Команда «fsutil behavior query disabledeletenotify»;
  • «Enter».

Следствием действий будет отчет со списком подключенных к услуге файлов. Когда в конце надписи, после знака равенства, стоит цифра 1, значит ТРИМ-поддержки нет. Если же «disabledeletenotify=о», то услуга подключена.

Внимание! Об отсутствии услуги ТРИМ для какого-то файла говорит надпись «не установлен»,

Power Saving APST

NVME Power Saving Patch

Andy Lutomirski has created a patchset which fixes powersaving for NVME devices in linux. The patch has been merged into mainline kernel v4.11.

To test if NVME Power Management is working, install or AUR, and run :

# nvme get-feature /dev/nvme0 -f 0x0c -H
get-feature:0xc (Autonomous Power State Transition), Current value:0x000001
        Autonomous Power State Transition Enable (APSTE): Enabled
        Auto PST Entries        .................

...

When APST is enabled the output should contain «Autonomous Power State Transition Enable (APSTE): Enabled» and there should be non-zero entries in the table below indicating the idle time before transitioning into each of the available states.

If APST is enabled but no non-zero states appear in the table, the latencies might be too high for any states to be enabled by default. The output of (as the root user) should show the available non-operational power states of the NVME controller. If the total latency of any state (enlat + xlat) is greater than 25000 (25ms) you must pass a value at least that high as parameter for the kernel module. This should enable APST and make the table in (as the root user) show the entries.

Как SSD-накопители хранят данные?

Чтобы лучше понимать, какие именно проблемы устраняет TRIM, нужно ознакомиться с особенностями хранения данных на SSD.

Ограничение циклов перезаписи

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

Чтобы изменить данные, SSD-накопитель должен прочитать их старую версию, отредактировать её в памяти, а затем записать обновлённые данные на новую – обнулённую – страницу. После этого устройство обновляет внутреннюю таблицу и задаёт новое местонахождение данных. Предыдущее местонахождение данных становится устаревшим – оно больше не используется, но еще не обнулено.

Восстановление устаревших страниц

Чтобы восстановить устаревшие страницы, внутренние процессы сборщика мусора SSD должны прочитать все действительные страницы из блока и записать их в новый блок. После этого снова обновляется внутренняя таблица. Старый блок, который в настоящее время не содержит никаких уникальных и востребованных данных, можно обнулить и использовать для дальнейшей записи.

Как работает TRIM?

Процессы сборщика мусора SSD отвечают за удаление блоков и выравнивание износа устройства. Однако файловые системы, как правило, удаляют данные, просто отмечая занятое ими пространство как доступное для записи пространство. На самом деле они не удаляет данные из базового хранилища, а просто позволяют перезаписать ранее занятую область памяти.

Это означает, что SSD-накопитель обычно не знает, что страница больше не нужна, пока файловая система не использует это логическое местоположение для записи новых данных. Накопитель не может выполнять процедуру сборки мусора, потому что ему просто не сообщили об удалении данных, он узнаёт об этом только тогда, когда ранее занятое пространство используется для записи других данных.

Команда TRIM уведомляет SSD-устройство о блоках данных, которые больше не содержатся в файловой системе. Благодаря этому накопитель может своевременно выполнить сборку мусора и обнулить страницы, чтобы использовать их в дальнейшем. SSD может очистить устаревшие страницы и поддерживать себя в хорошем рабочем состоянии.

Как говорилось ранее, запуск TRIM после каждой операции удаления данных может негативно повлиять на производительность устройства. Потому рекомендуется распланировать запуск команды TRIM, что позволит ей передавать SSD-устройству общую информацию обо всех ненужных страницах.

Firmware

Crucial

Note: ISO images provided by Crucial do not seem to be hybrid. If you will use just the command to copy the image to some device, the MBR will not be present, making such device unbootable.

Owners of an M4 Crucial model, may check if a firmware upgrade is needed with .

$ smartctl --all /dev/sdX

Intel

An example for checking the firmware status is:

# intelmas show -intelssd 0
DevicePath : /dev/nvme0n1
DeviceStatus : Healthy
Firmware : 002C
FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release.

can be omitted if there is only one Intel SSD in the system, or passed for the second SSD, and so on.

If an update is available, it is performed by running . The PDF user guide suggests that this procedure needs to be performed twice in Linux, with a power cycle in between. The latest firmware for all devices is distributed as part of the MAS Tool itself, so does not need to be downloaded separately.

Mushkin

The lesser known Mushkin brand solid state drives also use Sandforce controllers, and have a Linux utility (nearly identical to Kingston’s) to update the firmware.

Samsung

Note: Samsung does not make it obvious at all that they actually provide these. They seem to have 4 different firmware update pages, and each references different ways of doing things.

Upgrade under Linux

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Setup the disk image:

$ udisksctl loop-setup -r -f Samsung_SSD_840_EVO_EXT0DB6Q.iso

This will make the ISO available as a loop device, and display the device path. Assuming it was :

$ udisksctl mount -b /dev/loop0

Get the contents of the disk:

$ mkdir Samsung_SSD_840_EVO_EXT0DB6Q
$ cp -r /run/media/$USER/CDROM/isolinux/ Samsung_SSD_840_EVO_EXT0DB6Q

Unmount the iso:

$ udisksctl unmount -b /dev/loop0
$ cd Samsung_SSD_840_EVO_EXT0DB6Q/isolinux

There is a FreeDOS image here that contains the firmware. Mount the image as before:

$ udisksctl loop-setup -r -f btdsk.img
$ udisksctl mount -b /dev/loop1
$ cp -r /run/media/$USER/C04D-1342/ Samsung_SSD_840_EVO_EXT0DB6Q
$ cd Samsung_SSD_840_EVO_EXT0DB6Q/C04D-1342/samsung

Get the disk number from magician:

# magician -L

Assuming it was 0:

# magician --disk 0 -F -p DSRD

Verify that the latest firmware has been installed:

# magician -L

Finally reboot.

SanDisk

SanDisk makes ISO firmware images to allow SSD firmware update on operating systems that are unsupported by their SanDisk SSD Toolkit.

One must choose the firmware for the correct SSD model, and the correct capacity that it has (e.g. 60GB, or 256GB). After burning the ISO firmware image, simply restart the PC to boot with the newly created CD/DVD boot disk (may work from a USB stick).

The iso images just contain a linux kernel and an initrd. Extract them to partition and boot them with GRUB or Syslinux to update the firmware.

See also:

Что такое TRIM в твердотельных накопителях

TRIM — команда, которая дает возможность ОС предупреждать накопитель ССД о том, где хранятся неактуальные записи. Рекомендует накопителю подчистить их для повторного использования. Таким образом ТРИМ-поддержка способствует тому, что носитель меньше зависит от захламленности. Поддержка ТРИМ удержит скорость записи, перезаписи от снижения.

ТРИМ ССД необходим для нормальной скорости записи

SSD (Solid State Drive) – это устройство для накопления и хранения информации. В нем используется твердотельная флэш-память. SSD может полностью заменять HDD (жесткий диск)

Важно! Главное его достоинство – скорость доступа к данным, потому что нет необходимости переходить из ячейки в ячейку. Повышается скорость загрузки приложений, так как облегчается и ускоряется поиск нужной информации на диске

Недостатком можно считать ограничение кратности повторной записи. SSD на базе флэш-памяти допускает до 500000 повторных стираний и записей. Некоторые типы флэш-памяти имеют возможность выдерживать до 1,5 миллионов операций для каждой ячейки памяти. Немного увеличить данный параметр позволяет выравнивание износа, то есть равномерное распределение часто используемых блоков.

В самом начале использования SSD дисков ячейки flash совершенно пустые, что позволяет производить запись на тех скоростях, которые указаны в техдокументации. Со временем блоки ССД диска заполняются и, наконец, он заполнен. Чтобы дальше работать придется удалить ненужные файлы. Но это не значит, что информация будет удалена полностью. Она остается во flash памяти. Контроллер ССД будет стирать данные прямо перед следующей записью. Поэтому запись будет притормаживать.

Чтобы поддержать скорость на уровне, новые ОС стали дополнять функцией ATA TRIM. Ее задача – счищать неактуальные блоки памяти непрерывно. То есть контроллер диска получит команду от TRIM и начнет чистку независимо от выполняемой в текущий момент операции. Таким образом производительность работы компьютера на старом носителе не будет отличаться от возможностей нового диска.

Обзор

Преимущества перед HDD

  • Высокая скорость чтения. В 2-3 раза быстрее современных HDD (7200 об/мин на интерфейсе SATA2).
  • Устойчивая скорость чтения. Скорость чтения не уменьшается на протяжении всего объёма диска, тогда как производительность HDD падает при перемещении головок от края пластин к центру.
  • Минимальное время доступа. Приблизительно в 100 раз быстрее HDD. Например, 0,1 мс для SSD против 12-20 мс для HDD.
  • Высокая степень надежности.
  • Отсутствие движущихся частей.
  • Минимальный нагрев.
  • Минимальное потребление энергии. 1-2 Вт для SSD против 10-30 Вт для HDD (в зависимости от об/мин).
  • Легкие. Идеальное решение для ноутбуков.

Недостатки

  • Цена за единицу объёма (сотни рублей за ГБ на SSD, тогда как стоимость ГБ на HDD измеряется копейками).
  • Ёмкость представленных моделей SSD намного ниже оной для HDD.
  • Большие ячейки памяти требуют различных оптимизаций файловых систем. Низкий уровень доступа скрыт за контроллером, в то время как современные ОС могли бы использовать низкий уровень для собственных оптимизаций.
  • Разделы и файловые системы требуют специальных оптимизаций. Размер страницы и размер стираемой страницы автоматически не определяется.
  • Может падать производительность в зависимости от заполненности диска. Не все производители реализовывают сборку мусора достаточно хорошо, поэтому фрагментированное свободное пространство не всегда объединяется в целые ячейки.

На что обращать внимание перед покупкой

Есть несколько ключевых особенностей, на которые стоит обратить внимание до покупки SSD.

  • Родная поддержка TRIM. Это жизненно необходимая функция для продления срока службы SSD и предотвращения уменьшения производительности операций записи от времени.
  • Ключевым моментом является покупка SSD верного объема. Для эффективной работы разделы во всех файловых системах должны быть заполнены не более, чем на 75%.

Disabling Continuous TRIM

You may have already enabled continuous TRIM on your devices when they were mounted. Before we enable periodic TRIM, it makes sense to take a look at our current mount options.

Continuous TRIM is enabled by mounting a drive or partition with the option.

First, find the filesystems that are currently mounted with the option:

You can remount these filesystems in place, without the option, by including with :

If you run the command again, you should receive no results:

Next, open the file to see the mount options currently defined for your filesystems. These determine how the filesystems are mounted each boot:

Look for the option and remove it from lines that you find:

/etc/fstab

Save and close the file when you are finished. The filesystems will now be mounted without the option, and will mount in this same way on subsequent boots. We can now set up periodic TRIM for all filesystems that support it.

Слабое место SSD дисков

О преимуществах ССД дисков перед HDD наслышаны многие. И я уверен, что каждый из владельцев ПК был бы не прочь поменять в своей машине медленные жужжащие винчестеры на тихую и быструю память. Однако не все знают о таком малоприятном свойстве твердотельных дисков, как ощутимое подтормаживание, обнаруживаемое после многочисленных циклов стирания-записи очередной информации.

К сожалению, в твердотельных накопителях все происходит совершенно по-другому. Для хранения информации в них используются MLC и TLC флеш-память (в недорогих), разбитая на «страницы» размером в 4 Кбайта. Группа из 128 страниц образует блок, объемом 512 Кбайт. При этом система управления информацией на MLC SSD имеет такие особенности:

  • Запись производится только в предварительно очищенные ячейки;
  • Данные могут сохраняться в отдельные «страницы»;
  • Удаление информации выполняется только для всего блока;

Абсурд!

Логически мыслящие читатели сразу увидят в этом абсурдность ситуации. И спросят: «Как быть, если часть «страниц» в блоке занято нужными файлами, а в остальные нужно произвести запись?». Технологический секрет состоит в использовании кэш-памяти твердотельного диска, где вышеперечисленные ограничения не действуют. Система в этом случае работает по такому алгоритму:

  • Имеется информация о блоке, в котором часть страниц не используется (там физически хранятся данные с логически удаленного файла);
  • Для записи в это место новой информации данный блок полностью копируется в кэш, после чего удаляется с флеш памяти диска;
  • В кэше ненужные страницы стираются (здесь это уже можно осуществлять);
  • Подчищенный блок записывается назад, на свое место;
  • Теперь в свободные страницы блока можно сохранить новую информацию.

Как вы понимаете, такой процесс занимает определенное время. Это выражается в заметном торможении при сохранении объемных файлов на SSD. На который уже многократно что-то записывалось и стиралось.

Способ очистки, такой же как и описанный выше. Но происходит он в фоновом, режиме, не создавая дополнительной нагрузи на работу процессора, диска, ОС и не влияя на запущенные приложения.

Такая возможность предусмотрена во многих современных операционных системах, работающих на ПК, серверах, смартфонах и других устройствах.

Что хорошо, а что плохо?

Если функция TRIM работала с самого начала, то сама по себе никуда она деться не может. Но совсем другое дело, если вы увлекаетесь разного рода твикерами, сторонними драйверами или прошивками, а также сборками операционных систем, якобы улучшенных. Все эти программы и сборки могут только навредить, если речь идёт о Windows 8 и, тем более Windows 10 – в этих ОС всё продумано как надо. В «семёрке» они могут чем-то помочь, но это скорее исключение из множества проблем, которые они могут принести. Отдельно надо сказать несколько слов про NVMe накопители и драйверы для них. Приобретая высокоскоростной SSD, в ваших глазах должны отражаться полученные в бенчмарках заявленные скоростные показатели. Часто это так и есть, например – с накопителями Kingston. Установил и забыл, как говорится, наслаждаясь его высокими скоростями. Но с SSD других производителей это может быть не всегда так, что, очевидно, расстроит любого. Тут уже не отсутствие Deallocate является причиной недостаточного быстродействия, а стандартный NVMe драйвер. Да-да, при покупке NVMe SSD некоторых производителей обязательно приходится отправляться на сайт его сайт и скачивать соответствующий драйвер – разница со стандартным может превышать двукратную!

Характеристики

Контроллер Trim5 Навесная версия Контроллер Trim5 Встраиваемая версия

Размеры

Высота

Ширина

Толщина

Вес

121 мм

161 мм

25 мм

Не более 360 г

Высота

Ширина

Толщина

Вес

121 мм

161 мм

17,3 мм

Не более 400 г

HMI

Графический дисплей  

Разрешение дисплея

Сенсорный экран   

Клавиатура

Часы реального времени 

Звуковая сигнализация

TFT Цветной,RGB-24бит TrueColor,Диагональ: 5 дюйма, 108×64.8мм

800х480 пикселей

Мультитач, ёмкостныйраспознавание до 5 нажатий.Защищён натуральным стекломустойчивым к царапинам.

Сенсорного типа, 4 кнопки

Сменная батарея CR2032(время хранения до 7 лет)

Есть, однотонная

Интерфейсы

RS-485  

USB-device 

Ethernet  

Wi-Fi  

Гальванически изолированный,Разъём: клеммная колодка, Протокол: Modbus-RTU

USB 2.0,Разъём: типа Micro-B

10/100 Мбит/с,Разъём: клеммная колодка,Протокол: Modbus-TCP и др.

IEEE 802.11a/b/g/nПротокол: Modbus-TCP и др.Опционально

RS-485  

USB-device 

USB-host 

Ethernet 1  

Ethernet 2  

Гальванически изолированный,Разъём: клеммная колодка, Modbus RTU

USB 2.0,Разъём: типа Micro-B

USB 2.0,Разъём: типа A

10/100 Мбит/с,Разъём: клеммная колодкаПротокол: Modbus-TCP и др.

10/100 Мбит/с,Разъём: RJ-45,Протокол: Modbus-TCP и др.

Вычислительная подсистема

Процессор   

3D ускоритель  

Встроенная память     

Оперативная память

Операционная система

Программирование

TI SITARA AM3354Высокопроизводительный микропроцессор, использующий систему команд ARMv7 иядро Cortex-A8.

PowerVR SGX530Встроенный графический ускоритель поддерживает OpenGL ES 2.0 и DirectX 10.1 с Shader Model 4.1.

4Гб, FLASH eMMCВстроенный накопитель eMMC объёмом 4Гб значительно расширит ваши возможности. Скорость записи данных eMMC-модуля при произвольном доступе составляет 2000 IOPS, а скорость чтения при произвольном доступе более 5000 IOPS.

Linux Debian

SMLogix, SMArt, SMConfig

Питание

Гальваническая развязка

Входной диапазон 

Потребляемая мощность

Защита от провалов питания

Трансформаторного типа

от 21VDC до 350VDC,от 18VAC до 250VAC

Не более 5Вт

Технология Suspend

Датчики

Датчик Освещённости  

Датчик Температуры  

Датчик Влажности  

Датчик качества воздуха   

Оптимизация яркости подсветки, не является измерительным инструментом.

Тип: Цифровой датчик,Диапазон: от -40oС до +125oС,Точность: ±0.2oС

Тип: Цифровой датчик,Диапазон: от 0% до 100% RH,Точность: ±3% RH

Тип: Цифровой (CMOS),Диапозон: от 450ppm до 2000ppm,Диапазон температур: от +0 до +50°СОпционально

Датчик Освещённости  

Оптимизация яркости подсветки, не является измерительным инструментом.

Условия использования

Management

List all the NVMe SSDs attached with name, serial number, size, LBA format and serial:

# nvme list

List information about a drive and features it supports in a human-friendly way:

# nvme id-ctrl -H /dev/nvme0

List information about a namespace and features it supports:

Note: Namespaces are the construct in NVMe technology that hold user data. An NVMe controller can have multiple namespaces attached to it. Most NVMe SSDs today just use a single namespace, but multi-tenant applications, virtualization and security have use cases for multiple namespaces.

# nvme id-ns /dev/nvme0n1

Output the NVMe error log page:

# nvme error-log /dev/nvme0

Tip: Look for output where error count does not equal 1 to find out if there are any errors in the error log.

Delete a namespace:

Warning: This command will delete all data on the specified namespace. Use with caution!

# nvme delete-ns /dev/nvme0n1

Create a new namespace, e.g creating a smaller size namespace to overprovision an SSD for improved endurance, performance, and latency:

# nvme create-ns /dev/nvme0

See and for a list of all commands along with a terse description.

SMART

Output the NVMe SMART log page for health status, temp, endurance, and more:

# nvme smart-log /dev/nvme0

Tip: Use the option to output even more information, e.g. .

Currently implemented features (as taken from the wiki):

  • Basic information about controller name, firmware, capacity ()
  • Controller and namespace capabilities ()
  • SMART overall-health self-assessment test result and warnings ()
  • NVMe SMART attributes ()
  • NVMe error log ()
  • Ability to fetch any nvme log ()
  • The smartd daemon tracks health (), error count () and temperature ()

TrimSSD для прочих разных ОС

Включить «Трим» можно также Windows XP или Vista, но для этого потребуется специализированное ПО: Intel SSD Toolbox, Samsung Magician или 0&0 Defrag, где нужная опция активируется вручную.

Обладатели компьютеров от Apple, обычно не переживают за работу Trim с родными SSD. Но если вы решите поставить сторонне устройство, то могут возникнуть проблемы. Особенно со старыми версиями ОС.

Но с появлением Mac OS X 10.11 El Capitan появилась возможность подключения Трима. Необходимо запустить «Терминал» и активировать команду

с помощью пароля администратора. Здесь главное бать настойчивым до конца, несмотря на предупреждение системы.

В Linux версиях 2.6.33 и выше поддержка trim автоматическая. Но если вы захотите управлять этим процессом вручную, то проверьте соответствие файловых систем (необходимы Ext4 или Btrfs). Дальше потребуется внесение изменений через fstab gksudo gedit /etc/fstab. Просто в строке параметров для каждого раздела Ext4 необходимо вписать команду discard:

После чего сохраняемся и перегружаем ПК. Честно говоря, данный метод подразумевает внесение корректировок в работу системы и связан с определенными рисками.

Я все-таки надеюсь, мои дорогие читатели, что для на ваших ssd система будет выполнять trim-обработку без дополнительных настроек.

На этом прощаюсь с вами, всем удачи.

Особенности работы твердотельных накопителей

Ввиду особенностей методов удаления, обычно применяемых в файловых системах, накопители «не знают», какие секторы/страницы действительно используются, а какие могут считаться незанятыми. Операции удаления обычно ограничиваются пометкой блоков данных как «неиспользуемых» в файловой системе. В отличие от, например, операции перезаписи, удаление не приведёт к физической записи в затрагиваемые секторы, содержащие данные. Поскольку накопитель не имеет доступа к структурам файловой системы — таким как список неиспользуемых кластеров — накопитель остаётся в неведении об освобождении блоков. Хотя это часто позволяло восстановить удалённые данные на традиционных HDD, несмотря на то, что они были отмечены как «удалённые» операционной системой, также это означало, что когда позже операционная система произведёт операцию записи в один из секторов, считающихся свободным местом, эта операция будет считаться операцией перезаписи с точки зрения накопителя. Для традиционных жёстких дисков эта операция никак не отличается от записи в незанятый сектор, для SSD из-за выравнивания износа перезапись данных существенно отличается от записи в незанятый сектор (каждая запись в тот же логический сектор будет произведена в разные физические секторы), потенциально ухудшая производительность дальнейших операций записи.

SSD хранят данные в ячейках флеш-памяти, сгруппированных (в SSD) в «страницы» (обычно по 4 Кбайт каждая), которые, в свою очередь, сгруппированы в блоки (обычно 128 страниц или 512 Кбайт суммарно) Ячейки -флеш-памяти могут быть непосредственно записаны лишь в том случае, когда они чисты. В случае, когда они хранят данные, содержимое ячеек должно быть очищено, прежде чем в них будут записаны новые данные. В SSD накопителях операция записи может быть проделана только для страниц, однако из-за аппаратных ограничений команда удаления всегда выполняется на весь блок. В результате, запись на SSD-носитель выполняется очень быстро до тех пор, пока существуют чистые страницы, но значительно замедляется, если необходимо очищать предварительно записанные страницы. Так как очистка ячеек в странице необходима перед тем, как в них можно будет записывать снова, но только целый блок может быть очищен, процесс перезаписи инициирует цикл чтение-очистка-модификация-запись: содержимое целого блока должно быть сохранено в кеше перед тем, как оно может быть удалено с накопителя, перезаписываемые данные модифицируются в кеше и только после этого целый блок (с обновленной страницей) записывается на накопитель. Это явление известно как усиление записи (англ.).

В своих SSD-контроллерах производители используют различные техники для оптимального распределения операций записи по всему флеш-накопителю. Это делается не только для того, чтобы оптимизировать скорость путём минимизации усиления записи, но также для увеличения продолжительности жизни флеш-ячеек (выравнивание износа (англ.)), так как обычные MLC-флеш-ячейки выдерживают 3000-5000 циклов записи. Другой подход заключается в том, чтобы использовать лишнюю память, не задекларированную операционной системе, для предоставления чистых страниц для операций записи как можно дольше перед тем, как начать перезаписывать другие страницы.

Эффективность этих методов по большей части зависит от обмена информацией между ОС и контроллером SSD о том, какие страницы могут считаться занятыми, а какие — свободными. Традиционно большинство ОС не информируют накопители об удаленных секторах/страницах, что не позволяет контроллерам SSD оптимально распределять свободное пространство. Команда Trim была введена чтобы исправить это, очищая неиспользуемые ячейки до того, как в них будет произведена запись, таким образом уменьшая время доступа.

Так как команда полностью стирает данные в ячейках, восстановить из них данные обычно не представляется возможным.

Trim не всегда поддерживается в RAID-массивах.

Setting Up Periodic TRIM for systemd Distributions

Setting up periodic TRIM for modern distributions shipping with systemd tends to be rather straight forward.

Ubuntu 16.04

Ubuntu 16.04 ships with a script that is run weekly by . This means that enabling the systemd method described in the following section is unnecessary for Ubuntu 16.04.

If you wish to examine the script, you can see it by typing:

As you can see, this script needs a version of with the flag. Many versions shipped with earlier releases of Ubuntu do not contain this option.

Other systemd Distributions

For other systemd distributions, periodic TRIM can be enabled with the file, which will run TRIM operations on all capable, mounted drives once a week. This also leverages the option.

At the time of this writing, this is the best method for the following distributions:

  • Debian 8
  • CentOS 7
  • Fedora 24
  • Fedora 23
  • CoreOS

For CentOS 7, Fedora 23, Fedora 24, and CoreOS, the and units are available by default. To schedule a weekly TRIM of all attached capable drives, enable the unit:

Debian 8 has the and available within the filesystem, but not loaded into systemd by default. You just need to copy the files over first:

Now, you can enable the timer the same as with the other distributions:

Your server should now TRIM all mounted filesystems that support the operation, once weekly.

Поддержка команды операционными системами и накопителями

Для твердотельных накопителей, произведённых до добавления команды Trim в стандарт ATA, необходимо обновление прошивки — в противном случае команда будет ими игнорироваться. Команда Trim поддерживается также не всеми операционными системами.

Поддержка Trim в операционных системах
Операционная система Поддержка
Windows 8 и выше Поддерживается с финального релиза (октябрь 2012)
Windows Server 2012 Поддерживается с финального релиза (октябрь 2012)
Windows 7 Поддерживается с финального релиза (октябрь 2009)
Windows Server 2008 R2 Поддерживается с финального релиза (октябрь 2009)
Linux 2.6.33 Поддерживается с февраля 2010, ioctl BLKDISCARD
OpenSolaris Поддерживается с июля 2010
FreeBSD 8.3, 9.2, 10.0 Поддерживается с UFS, поддерживается с ZFS.
Mac OS X Поддерживается (с версии 10.10.4 для любых SSD, до этого только SSD поставляемые Apple)
Android Начиная с версии 4.3 в систему была добавлена поддержка функции fstrim, которая является аналогом Trim
Ubuntu Поддерживается начиная с Ubuntu 14.04.

В некоторых случаях, когда Trim не поддерживается операционной системой, существуют утилиты, позволяющие отправлять эту команду «вручную». Обычно такие программы с помощью средств операционной системы составляют список свободных блоков и передают его накопителю в виде последовательности команд Trim. Такие продукты существуют как в виде универсальных утилит (hdparm версии 9.17 и выше), так и в виде программного обеспечения для отдельных типов накопителей (Intel, G.Skill).

Аналогом команды Trim для SCSI являются команды Unmap и Write same.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *