Как включить TRIM?

Я знаю, что ядро ​​Linux поддерживает TRIM начиная с версии 2.6.33, поэтому в Ubuntu должна быть поддержка TRIM.

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

2 ответа

Решение

Ubuntu 14.10 года

В Ubuntu 14.10 и 15.04 TRIMming происходит автоматически каждую неделю на всех SSD, поддерживаемых fstrim,

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

С 15.04 Ubuntu использует systemd и его таймер (man systemd.timer Арка вики)

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

Начиная с Ubuntu 14.04, запланированный TRIM включен по умолчанию для твердотельных накопителей Intel, SAMSUNG, OCZ, Patriot и Sandisk. Если у вас есть другой бренд, вы можете отключить проверку поставщика, выполнив следующую команду:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(или просто отредактируйте файл /etc/cron.weekly/fstrim и добавить --no-model-check)

Ubuntu 13.10 и ранее

Существует три способа выполнения TRIM: ручной, запланированный и автоматический:

Ручная TRIM

В Ubuntu это можно выполнить с помощью fstrim:

sudo fstrim /

однако это не требуется при включенном расписании или автоматическом режиме TRIM, как подробно описано в разделах ниже.

Примечание. Для систем Ubuntu 11.04 и более ранних версий fstrim недоступен, поэтому необходимо использовать wiper.sh снабжен чем то hdparm в /usr/share/doc/hdparm/contrib/wiper.sh.gz

Запланированный TRIM (рекомендуется)

Это рекомендуемый в настоящее время метод, который планируется активировать по умолчанию для Ubuntu 14.04. Вот как активировать его вручную в старых версиях ubuntu (с 11.10 по 13.10):

Создайте файл сценария еженедельного задания CRON:

gksudo gedit /etc/cron.weekly/fstrim

Вставьте следующий код в файл, затем сохраните и закройте файл:

#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Обратите внимание, что приведенное выше предполагает, что только ваша корневая файловая система / находится на SSD. Если у вас есть несколько точек монтирования на одном или нескольких твердотельных накопителях, добавьте их в SSD_MOUNT_POINTS как объяснено в коде.

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

sudo chmod +x /etc/cron.weekly/fstrim

И наконец, проверьте это:

sudo /etc/cron.weekly/fstrim

Если вы не видите ошибок, ваша работа cron должна работать нормально.

Автоматическая TRIM (устарела, медленная)

Автоматический TRIM поддерживается с Ubuntu 10.10 (ядро 2.6.33) с файловой системой EXT4. Однако было установлено, что отправка команд TRIM на твердотельный накопитель в режиме реального времени - после каждого удаления - делает удаление на некоторых дисках намного медленнее, чем обычно. Поэтому рекомендуется еженедельная запланированная TRIM через задание cron (описанное выше).

Для включения автоматического TRIM на диске или разделе их необходимо смонтировать с помощью discard вариант в fstab, Сначала сделайте резервную копию вашего fstab, затем откройте его для редактирования:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

добавлять discard к записи опций fstab (через запятую) для SSD-диска или каждого раздела.

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

Закройте и сохраните fstab, затем перезагрузка и автоматический TRIM теперь должны работать.

Тестирование автоматического TRIM

Чтобы проверить, работает ли TRIM, введите следующие команды ( источник):

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Из выходных данных скопируйте число под begin_LBA и проверьте имя устройства вашего SSD: System->Administration->Disk Utility например, sda, sdb, sdc...

Запустите следующее, но замените [ADDRESS] (begin_LBA) и sdX (Имя устройства SSD) с подробностями, полученными выше.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

вывод должен быть длинной строкой символов для этих секторов

sudo rm tempfile
sync

Повторите hdparm команда сверху:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Если вы получаете только нули, то автоматический TRIM работает. Однако, если после удаления файла сектора все еще не пусты, подождите некоторое время и повторите команду.

Обратите внимание, что если вы используете шифрование, решения, опубликованные здесь, вам не помогут, потому что вам также необходимо включить поддержку TRIM на уровне шифрования. Это можно сделать с помощью версий ядра 3.1+ и cryptsetup версии 1.4+, которые включены в Ubuntu 12.04.

Найти мое руководство по настройке TRIM для зашифрованных разделов LUKS здесь


Как активировать TRIM на зашифрованных разделах LUKS в Ubuntu и Debian


Это пошаговое руководство позволит вам воспользоваться технологией TRIM для ваших зашифрованных разделов SSD для cryptsetup 1.4 или выше и ядра 3.1 или выше. Это приводит к беспроблемной работе SSD, потому что

"TRIM позволяет SSD обрабатывать затраты на сборку мусора, которые в противном случае значительно замедлили бы будущие операции записи в задействованные блоки".

Пример настройки

Ноутбук с SSD в качестве единственного диска, Linux установлен в одном корневом разделе ext4 LVM с разделом подкачки LVM, оба над зашифрованным логическим разделом LUKS.

SSD: / dev / sda

sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

Как

  1. Сделайте резервную копию всех ваших данных. Вы возитесь с файловой системой, поэтому резервное копирование - это просто хорошая идея.
  2. Убедитесь, что у вас есть необходимые версии ядра и cryptsetup (3.1 и 1.4, например, в Ubuntu 12.04, но будьте осторожны, на момент написания 12.04 все еще бета).
  3. Добавьте параметр discard в параметры файловой системы зашифрованных томов LVM в файле /etc/fstab. Это позволяет файловой системе вашего LVM-раздела знать, что вы хотите использовать TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Хотя последнего шага недостаточно. Пока LUKS не знает, что вы хотите использовать TRIM, он будет эффективно блокировать все операции TRIM, поступающие из файловой системы раздела LVM, из соображений безопасности. Добавьте параметр discard в параметры устройства crypt в /etc/crypttab, чтобы LUKS принимал поведение сброса раздела LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Восстановите ваши initramfs. Опции crypttab хранятся там и используются при загрузке.

    sudo update-initramfs -c -k all
    
  6. Перезагружать.

  7. Проверьте, активен ли теперь TRIM.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Если последняя команда показывает такой результат (1 allow_discards в конце), все готово.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Результат

TRIM активирован. Наслаждайтесь вашим SSD без проблем!

Другие вопросы по тегам