Як увімкнути TRIM?


189

Я знаю, що ядро ​​Linux підтримує TRIM версії 2.6.33, тому в ubuntu має бути підтримка TRIM.

Чи увімкнено TRIM за замовчуванням чи мені потрібно змінити деякі налаштування або встановити додаткове програмне забезпечення, щоб воно працювало? Якщо так, то як?


Я просто дотримувався цих інструкцій на веб-сайті8, який дає кілька дійсно хороших варіантів :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Я спробував варіант автоматичного обрізки, як описано вище в "Автоматичний TRIM", але встановив, що налаштування щоденного крона працювало набагато краще з моїм налаштуванням.
bmbaker

Відповіді:


197

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 увімкнено за замовчуванням для SSD-дисків 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, додайте їх, 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 на SSD в режимі реального часу - після кожного видалення - було визнано, що робить видалення набагато повільніше, ніж зазвичай, на деяких дисках. Тому рекомендується щотижневий плановий TRIM за допомогою роботи з кроном (описаний вище).

Щоб увімкнути автоматичний 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 працює. Однак якщо після вилучення файлу сектори все ще не порожні, зачекайте деякий час і запустіть команду ще раз.


5
Тестування TRIM може насправді не працювати так: serverfault.com/a/401506/60525
chrishiestand

1
@Uli Будь ласка, хтось мені допоможе. Здається, це не працює для мене. У мене є 4 розділу в моєму ССД / /boot /usrі /optя використав інший жорсткий диск для мого /home. Я заходжу cd / #sdcі продовжую інструкції, але ніколи не отримую нулі. Спасибі заздалегідь!
BugShotGG

1
@lightrush: Чудова редакція! Дякуємо, що відповідали за актуальність.
Улі

1
Ви можете додати команду syncпісля ddкоманди, оскільки принаймні у моїй системі темпфіл не створюється одразу, тому hdparm нічого не повідомляє.
Андреас Дж.

2
systemd обробляє це зараз. sudo systemctl status fstrim.timer
повітряні кулі

28

Зауважте, що якщо ви використовуєте шифрування, рішення, розміщені тут, поки що не допоможуть вам, оскільки вам потрібно включити підтримку TRIM і в шарі шифрування. Це можна зробити за допомогою версій ядра 3.1+ та криптовалюти версій 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 з розділом swap 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

Як

  1. Зробіть резервну копію всіх своїх даних. Ви возитесь з вашою файловою системою, тому резервне копіювання - просто хороша ідея.
  2. Переконайтеся, що у вас є необхідні версії ядра та cryptsetup (3.1 та 1.4, наприклад, в Ubuntu 12.04, остерігайтеся, але на час написання 12.04 все ще є бета-версія).
  3. Додайте параметр відкидання до параметрів файлової системи зашифрованого обсягу LVM у вашому / etc / fstab файлі. Завдяки цьому файлова система вашого LVM-розділу усвідомлює, що ви хочете використовувати TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Останнього кроку, однак, недостатньо. Поки LUKS не усвідомлює, що ви хочете використовувати TRIM, він з міркувань безпеки ефективно блокує всі операції TRIM, що надходять з файлової системи розділу LVM. Додайте параметр відкидання до параметрів cryptdevice в / etc / crypttab, щоб LUKS приймав поведінку відкидання розділу LVM.

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

    sudo update-initramfs -c -k all
    
  6. Перезавантажте.

  7. Перевірте, чи TRIM зараз активний.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Якщо остання команда показує такий результат (1 дозволена картка в кінці), ви все готові.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Результат

TRIM активовано. Насолоджуйтесь безпроблемним SSD!


@Marco Ceppi якась конкретна причина редагування, щось я не помітив?
nem75

Тільки прибираючи відмітку та видаляючи рядок "підпис" (передбачається, що ви отримаєте відгуки через коментарі та голосування на сайті.
Marco Ceppi

7
Тут слід включити посібник у випадку, якщо сайт / сторінка недоступна.
Кас

Крім того, що це фактично відповідь лише на посилання, вона взагалі не працює. Більшість із вас використовуватиме LVM з LUKS, який не здатний поширювати TRIM у 12.04. Дивіться цю відповідь для отримання додаткової інформації.
gertvdijk

1
Виконуючи ці вказівки, чи потрібно все-таки налаштувати завдання cron для обрізки диска 14.04?
AJN
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.