Как включить ОБРЕЗКУ?

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

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

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 

Если вы получаете только нули, то работает автоматическая ОБРЕЗКА. Однако, если после удаления файла сектора все еще не пусты, подождите некоторое время и снова запустите команду.

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

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


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


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

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

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

Ноутбук с твердотельным накопителем в качестве единого диска, 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 encryptionls /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

Как это сделать

  1. Сделайте резервную копию всех ваших данных. Вы возитесь со своей файловой системой, поэтому создание резервной копии - просто хорошая идея.
  2. Убедитесь, что у вас есть необходимые версии ядра и cryptsetup (3.1 и 1.4, например, в Ubuntu 12.04, однако будьте осторожны, на момент написания статьи 12.04 все еще находится в бета-версии).
  3. Добавьте параметр discard в параметры файловой системы тома(ов) encryptedLVM в вашем файле /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 принять поведение discard для LVMpartition.

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

    sudo update-initramfs -c -k all
  6. Перезагрузить.

  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

Результат

Активирована ОБРЕЗКА. Наслаждайтесь своим беспроблемным твердотельным накопителем!

Я просто следовал этим инструкциям на webupd8, которые дают несколько действительно хороших вариантов :slight_smile: Enable TRIM On SSD (Solid-State Drives) In Ubuntu For Better Performance ~ Web Upd8: Ubuntu / Linux blog Я попробовал опцию автоматической обрезки, как описано выше в разделе “Автоматическая ОБРЕЗКА”.
но обнаружил, что настройка ежедневного cron работает намного лучше с моей настройкой.