Ubuntu 14.10 и далее
В Ubuntu 14.10 и 15.04 обрезка происходит автоматически каждую неделю на всех твердотельных накопителях, поддерживаемых fstrim
.
$ tail -n1 /etc/cron.weekly/fstrim /sbin/fstrim --all || true
Начиная с 15.04 Ubuntu использует systemd и его таймер (man systemd.timer
, Арка вики)
systemctl list-timerssystemctl status fstrim.timer
Ubuntu 14.04
Начиная с Ubuntu 14.04, запланированная ОБРЕЗКА включено по умолчанию для твердотельных накопителей 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 и более ранние версии
Существует три способа выполнения ОБРЕЗКИ: ручной, запланированный и автоматический:
Ручная ОБРЕЗКА
В Ubuntu это может быть выполнено с помощью fstrim
:
sudo fstrim /
однако это не требуется, если включена запланированная или автоматическая ОБРЕЗКА, как подробно описано в разделах ниже.
Примечание: Для 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_POINTSdo fstrim $mount_point done
Обратите внимание, что вышеизложенное предполагает, что только ваша корневая файловая система /
находится на твердотельном накопителе. Если у вас есть несколько точек монтирования, расположенных на одном или нескольких твердотельных накопителях, добавьте их в SSD_MOUNT_POINTS
как объяснено в коде.
Сделайте скрипт исполняемым:
sudo chmod +x /etc/cron.weekly/fstrim
И, наконец, протестируйте его:
sudo /etc/cron.weekly/fstrim
Если вы не видите ошибок, ваше задание cron должно работать нормально.
Автоматическая ОБРЕЗКА (Устаревшая, медленная)
Автоматическая ОБРЕЗКА поддерживается начиная с Ubuntu 10.10 (ядро 2.6.33) с файловой системой EXT4. Однако было обнаружено, что отправка команд ОБРЕЗКИ на твердотельный накопитель в режиме реального времени - после каждого удаления - делает удаление на некоторых дисках намного медленнее, чем обычно. Поэтому рекомендуется еженедельная запланированная ОБРЕЗКА с помощью задания cron (описано выше).
Чтобы включить автоматическую ОБРЕЗКУ диска или раздела, их необходимо смонтировать с помощью discard
вариант в fstab
. Сначала создайте резервную копию вашей fstab, а затем откройте ее для редактирования:
sudo cp /etc/fstab ~/fstab-backupgksudo gedit /etc/fstab
Добавь discard
к записи параметров fstab (через запятую) для SSD-накопителя или каждого раздела.
UUID=00000000-0000-0000-0000-000000000000 / ext4 discard,errors=remount-ro 0 1
Закройте и сохраните fstab, затем перезагрузитесь, и теперь должна работать автоматическая ОБРЕЗКА.
Тестирование автоматической ОБРЕЗКИ
Чтобы проверить, работает ли TRIM, выполните следующие команды (источник):
cd / # Replace with SSD file systemsudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=directsudo hdparm --fibmap tempfile
Из выходных данных скопируйте номер под begin_LBA
и проверьте имя устройства вашего твердотельного накопителя: System->Administration->Disk Utility
напр. пдд, sdb, sdc ...
Выполните следующее, но замените [ADDRESS]
(begin_LBA) и sdX
(Имя устройства SSD) с деталями, полученными выше.
sudo hdparm --read-sector [ADDRESS] /dev/sdX
выходные данные должны представлять собой длинную строку символов для этих секторов
sudo rm tempfilesync
Повторите hdparm
приказ сверху:
sudo hdparm --read-sector [ADDRESS] /dev/sdX
Если вы получаете только нули, то работает автоматическая ОБРЕЗКА. Однако, если после удаления файла сектора все еще не пусты, подождите некоторое время и снова запустите команду.