Включение TRIM для SSD дисков в Ubuntu

Сегодня на почте я прочитал комментарий от читателя моего блога “ещё TRIM включить?”  к статье “Настройка Ubuntu для рабоыт на SSD диске“. И действительно, самое главное то я и забыл. В этой заметке опишу процесс настройки поддержки команды TRIM в Ubuntu.

TRIM — команда, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных больше не используются и могут быть очищены накопителем самостоятельно. TRIM входит в спецификацию интерфейса ATA, стандартизацией которого занимается группа T13 в составе INCITS. Интересующихся подробностями сразу отправляю на Wikipedia. В Windows 7 поддержка TRIM уже встроена, но мы же не будем ставить это решето. А будем продолжать работать в идеологически правильной Ubuntu 🙂

Перед работой, всячески убедитесь, что ваши фотки, документы и коллекция видео 🙂 надежно скопированы на флешки, оптику и куда подальше. После этого приступим:

Проверка, а не включён ли trim уже сейчас

Пусть /dev/sdX – наш SSD диск

  1. Меняем пользователя на root:
    sudo -i
  2. Пишем файл 50Мб со случайными данными:
    dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
  3. Ищем стартовый LBA адрес у файла
    hdparm --fibmap tempfile
  4. Читаем данные со стартового LBA адреса файла, замените [ADDRESS] на свой Starting LBA address из вывода предыдущей команды:
    hdparm --read-sector [ADDRESS] /dev/sdX
  5. Теперь удалим временный файл и синхронизируем ФС:
    rm tempfile
    sync
  6. Повторяем пункт 4:
    hdparm --read-sector [ADDRESS] /dev/sdX
Если TRIM включен, то в результате вывода должны быть одни нули, если же их нет TRIM выключен.

Включаем TRIM

Помните, что всё это вы делаете на свой страх и риск (хотя тут его немного).

Замечания:

  • Вам нужно ядро Linux 2.6.33 или старше. У меня стоит 2.6.36, какой там в репозитарии для Ubuntu 10.10 я не понмю, но вроде старше (2.6.35).
  • Для бенчмарка использовалась Disk Utility. В Ubutnu этот пакет называется “gnome-disk-utility” и в десктопной версии ставится по-умолчанию.
  • ВНИМАНИЕ: Некоторые пользователи рекомендуют использовать отключение журнала для Ext-4 и увеличенные таймауты для сброса грязных буферов (в т.ч. и я). Вы сами должны понимать, что в случае отключения питания ваши данные могут быть повреждены. Либо используйте UPS либо делайте это на ноутбуке (т.к. там есть батарейка).   Делайте это, только в случае, если вы реально знаете, что вы делаете. Для стабильности данных просто используйте опцию “discard”, как показано ниже.. Контроллер жесткого диска должен быть в хорошей форме, в смысле хранения данных и скорости. У меня стоит Samsung и я использовал его только с опцией discard и как вы видите из тестов скорость осталась на прежнем уровне ~250MB/s после всех манипуляций.

Большинство существующих SSDs поддерживают команду  ATA_TRIM для устойчивой долгосрочной производительности и выравнивания износа. На Linux trim поддерживается файловыми системами Ext4 и Btrfs. Для включения TRIM мы должны сделать следущее:

  1. Открываем наш fstab gksudo gedit /etc/fstab
  2. Для каждого раздела Ext4 добавляем опцию discard в список параметров.Например, если у нас только один корневой раздел “/”:
    UUID=[NUMS-AND-LETTERS] /               ext4    errors=remount-ro 0       1

    we change the entry to:

    UUID=[NUMS-AND-LETTERS] /               ext4    discard,errors=remount-ro 0       1
  3. Сохраняем файл и выходим
  4. Перезагружаем компьютер

Всё, теперь TRIM должен работать. Проводим тест из предыдущего абзаца и убеждаемся в этом.

Литература

http://yalb.net/?p=167

https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking

https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu