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

178

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

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

    
задан Uli 26.12.2010 в 12:44
источник

2 ответа

190

Ubuntu 14.10 вперед

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

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

Ubuntu 14.04

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

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

    
ответ дан Uli 30.09.2015 в 21:58
источник
25

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

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

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

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

  

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

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

Ноутбук с SSD в качестве одного диска, Linux установлен в одном корневом разделе LV4 с 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 знает, что вы хотите использовать TRIM.

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

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

    sudo update-initramfs -c -k all
    
  6. Reboot.

  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!

    
ответ дан nem75 14.04.2012 в 15:00

Ознакомьтесь с другими вопросами по меткам