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