Как включить 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
Как
- Сделайте резервную копию всех ваших данных. Вы возитесь с файловой системой, поэтому резервное копирование - это просто хорошая идея.
- Убедитесь, что у вас есть необходимые версии ядра и cryptsetup (3.1 и 1.4, например, в Ubuntu 12.04, но будьте осторожны, на момент написания 12.04 все еще бета).
Добавьте параметр discard в параметры файловой системы зашифрованных томов LVM в файле /etc/fstab. Это позволяет файловой системе вашего LVM-раздела знать, что вы хотите использовать TRIM.
/dev/mapper/volumegroup-root / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
Хотя последнего шага недостаточно. Пока LUKS не знает, что вы хотите использовать TRIM, он будет эффективно блокировать все операции TRIM, поступающие из файловой системы раздела LVM, из соображений безопасности. Добавьте параметр discard в параметры устройства crypt в /etc/crypttab, чтобы LUKS принимал поведение сброса раздела LVM.
sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
Восстановите ваши initramfs. Опции crypttab хранятся там и используются при загрузке.
sudo update-initramfs -c -k all
Перезагружать.
Проверьте, активен ли теперь TRIM.
sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
Если последняя команда показывает такой результат (1 allow_discards в конце), все готово.
0 77656056 crypt aes-cbc-essiv:sha256 abc[...]c7a0c 0 8:5 2056 1 allow_discards
Результат
TRIM активирован. Наслаждайтесь вашим SSD без проблем!