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

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

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

189
задан 4 June 2012 в 00:43

2 ответа

Обратите внимание, что при использовании шифрования, решения, отправленные здесь до сих пор, не помогут Вам, потому что необходимо включить поддержку ДЛЯ ОБРЕЗКИ в слое шифрования также. Это может быть сделано с версиями ядра 3.1 + и cryptsetup версиями 1.4 +, оба из которых включены в Ubuntu 12.04.

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


Как активировать ОБРЕЗКУ на LUKS зашифрованные разделы в Ubuntu & Debian


Эта пошаговая пошаговая демонстрация позволит Вам использовать в своих интересах технологию ДЛЯ ОБРЕЗКИ для своих зашифрованных разделов SSD для cryptsetup 1.4 или выше и ядро 3.1 или выше. Это приводит к беспрепятственному опыту SSD потому что

"ОБРЕЗКА позволяет 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

HowTo

  1. Сделайте резервное копирование всех своих данных. Вы смешиваете со своей файловой системой, настолько имеющее резервное копирование является просто хорошей идеей.
  2. Удостоверьтесь, что у Вас есть необходимое ядро и cryptsetup версии (3.1 и 1.4, например, в Ubuntu 12.04, остерегайтесь, хотя, во время записи 12.04 все еще бета).
  3. Добавьте параметр отбрасывания к опциям файловой системы зашифрованного объема (объемов) LVM в Вашем/etc/fstab файле. Это делает файловую систему Вашего раздела LVM знающей, что Вы хотите использовать ОБРЕЗКУ.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Последний шаг недостаточно все же. Целый LUKS не знает, что Вы хотите использовать ОБРЕЗКУ, это эффективно заблокирует все операции ДЛЯ ОБРЕЗКИ, прибывающие из файловой системы раздела LVM из соображений безопасности. Добавьте параметр отбрасывания к cryptdevice опциям в/etc/crypttab, чтобы заставить LUKS принять поведение отбрасывания раздела LVM.

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

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

  7. Проверьте, активна ли ОБРЕЗКА теперь.

    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
    

Результат

ОБРЕЗКА активируется. Наслаждайтесь своим беспрепятственным SSD!

28
ответ дан 4 June 2012 в 00:43

Ubuntu 14.10 и далее

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

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

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

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 работает. Однако если после удаления файла сектора все еще не пусты, подождите некоторое время и снова введите команду.

0
ответ дан 4 June 2012 в 00:43

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

Похожие вопросы: