Я знаю, что ядро Linux поддерживает TRIM начиная с версии 2.6.33, поэтому в Ubuntu должна быть поддержка TRIM.
TRIM включен по умолчанию или мне нужно изменить некоторые настройки или установить дополнительное программное обеспечение для его работы? Если да, то как?
Обратите внимание, что при использовании шифрования, решения, отправленные здесь до сих пор, не помогут Вам, потому что необходимо включить поддержку ДЛЯ ОБРЕЗКИ в слое шифрования также. Это может быть сделано с версиями ядра 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
Добавьте параметр отбрасывания к опциям файловой системы зашифрованного объема (объемов) LVM в Вашем/etc/fstab файле. Это делает файловую систему Вашего раздела LVM знающей, что Вы хотите использовать ОБРЕЗКУ.
/dev/mapper/volumegroup-root / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
Последний шаг недостаточно все же. Целый LUKS не знает, что Вы хотите использовать ОБРЕЗКУ, это эффективно заблокирует все операции ДЛЯ ОБРЕЗКИ, прибывающие из файловой системы раздела LVM из соображений безопасности. Добавьте параметр отбрасывания к cryptdevice опциям в/etc/crypttab, чтобы заставить LUKS принять поведение отбрасывания раздела LVM.
sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
Восстановите свой initramfs. crypttab опции хранятся там и используются на начальной загрузке.
sudo update-initramfs -c -k all
Перезагрузка.
Проверьте, активна ли ОБРЕЗКА теперь.
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
Результат
ОБРЕЗКА активируется. Наслаждайтесь своим беспрепятственным SSD!
В 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, запланированное 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
)
Существует три способа выполнения TRIM: ручной, запланированный и автоматический:
В Ubuntu это можно выполнить с помощью fstrim
:
sudo fstrim /
, однако, в этом нет необходимости, если включены запланированные или автоматические TRIM, как подробно описано в следующих разделах.
Примечание: Для Ubuntu 11.04 и более ранних систем fstrim недоступен, поэтому вы должны использовать wiper.sh
, поставляемую с hdparm
в /usr/share/doc/hdparm/contrib/wiper.sh.gz
Это рекомендуемый в настоящее время метод, который планируется активировать по умолчанию для 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 поддерживается с 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, введите следующие команды ( источник ):
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 работает. Однако если после удаления файла сектора все еще не пусты, подождите некоторое время и снова введите команду.