Bagaimana cara mengaktifkan TRIM?

189

Saya tahu bahwa kernel Linux mendukung TRIM pada versi 2.6.33, jadi harus ada dukungan TRIM di ubuntu.

Apakah TRIM diaktifkan secara default atau apakah saya perlu mengubah beberapa pengaturan atau menginstal perangkat lunak tambahan agar berfungsi? Jika ya, bagaimana caranya?

Uli
sumber
Saya hanya mengikuti petunjuk ini di webupd8 yang memberikan beberapa opsi yang sangat bagus :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Saya mencoba opsi trim otomatis seperti dijelaskan di atas pada "Automatic TRIM" tetapi menemukan bahwa pengaturan cron harian berfungsi lebih baik dengan pengaturan saya.
bmbaker

Jawaban:

197

Ubuntu 14.10 dan seterusnya

Di Ubuntu 14.10 dan 15.04, TRIMming terjadi secara otomatis setiap minggu di semua SSD yang didukung oleh fstrim.

$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true

Sejak 15,04 Ubuntu menggunakan systemd dan timernya ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

Pada Ubuntu 14.04, TRIM terjadwal diaktifkan secara default untuk Intel, SAMSUNG, OCZ, Patriot dan Sandisk SSD. Jika Anda memiliki merek lain, Anda dapat menonaktifkan pemeriksaan vendor dengan menjalankan perintah berikut:

sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim

(atau cukup edit file /etc/cron.weekly/fstrimdan tambahkan --no-model-check)

Ubuntu 13.10 dan Sebelumnya

Ada tiga cara untuk melakukan TRIM, manual, terjadwal, dan otomatis:

TRIM manual

Di Ubuntu ini dapat dilakukan dengan fstrim:

sudo fstrim /

namun itu tidak diperlukan ketika TRIM terjadwal atau otomatis diaktifkan, sebagaimana dirinci dalam bagian di bawah ini.

Catatan: Untuk Ubuntu 11.04 dan sistem sebelumnya, fstrim tidak tersedia sehingga Anda harus menggunakan wiper.shdisertakan dengan hdparmdi/usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM Terjadwal (Disarankan)

Ini adalah metode yang saat ini direkomendasikan, dan direncanakan akan diaktifkan per default untuk Ubuntu 14.04 . Berikut ini cara mengaktifkannya secara manual di versi lama Ubuntu (11.10 hingga 13.10):

Buat file skrip pekerjaan CRON mingguan:

gksudo gedit /etc/cron.weekly/fstrim

Rekatkan kode berikut dalam file, lalu simpan dan tutup file:

#! /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

Perhatikan bahwa hal di atas mengasumsikan bahwa hanya sistem file root Anda /yang terletak pada SSD. Jika Anda memiliki lebih banyak titik pemasangan yang berada di satu atau lebih SSD, tambahkan mereka SSD_MOUNT_POINTSseperti yang dijelaskan dalam kode.

Jadikan skrip dapat dieksekusi:

sudo chmod +x /etc/cron.weekly/fstrim

Dan akhirnya mengujinya:

sudo /etc/cron.weekly/fstrim

Jika Anda tidak melihat kesalahan, tugas cron Anda seharusnya bekerja dengan baik.

TRIM Otomatis (Usang, Lambat)

TRIM otomatis telah didukung sejak Ubuntu 10.10 (kernel 2.6.33) dengan sistem file EXT4. Namun, mengirimkan perintah TRIM ke SSD secara waktu-nyata - setelah setiap penghapusan - telah dikenali membuat penghapusan jauh lebih lambat dari biasanya pada beberapa drive. Karenanya direkomendasikan TRIM mingguan melalui pekerjaan cron (dijelaskan di atas).

Untuk mengaktifkan TRIM otomatis pada drive atau partisi, mereka harus dipasang dengan discardopsi di fstab. Pertama-tama buat cadangan fstab Anda lalu buka untuk diedit:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Tambahkan discardke entri opsi fstab (dipisahkan koma) untuk drive SSD atau setiap partisi.

UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1

Tutup dan simpan fstab, lalu reboot dan TRIM otomatis sekarang sudah berfungsi.

Menguji TRIM otomatis

Untuk menguji apakah TRIM berfungsi, lakukan perintah ( sumber ) berikut:

cd  / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Dari hasil salin nomor di bawah begin_LBAdan verifikasi nama perangkat SSD Anda: System->Administration->Disk Utilitymis. Sda, sdb, sdc ...

Jalankan yang berikut tetapi ganti [ADDRESS](begin_LBA) dan sdX(nama perangkat SSD) dengan detail yang diperoleh di atas.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

output harus berupa rangkaian panjang karakter untuk sektor-sektor tersebut

sudo rm tempfile
sync

Ulangi hdparmperintah dari atas:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Jika Anda hanya mendapatkan nol maka TRIM otomatis berfungsi. Namun jika setelah menghapus file sektor masih tidak kosong maka tunggu sebentar dan jalankan perintah lagi.

Uli
sumber
5
Menguji TRIM mungkin tidak benar-benar berfungsi seperti itu: serverfault.com/a/401506/60525
chrishiestand
1
@Uli Tolong seseorang bantu saya. Sepertinya itu tidak berhasil untuk saya. Saya memiliki 4 partisi di SSD saya / /boot /usrdan /optdan saya telah menggunakan hdd lain untuk partisi saya /home. Saya pergi ke cd / #sdcdan saya melanjutkan dengan instruksi tetapi saya tidak pernah mendapatkan nol. Terima kasih sebelumnya!
BugShotGG
1
@lightrush: Edit hebat! Terima kasih telah memperbarui jawabannya.
Uli
1
Anda mungkin ingin menambahkan syncsetelah ddperintah, karena setidaknya pada sistem saya tempfile tidak dibuat segera, jadi hdparm tidak melaporkan apa pun.
Andreas J.
2
systemd menangani ini sekarang. sudo systemctl status fstrim.timer
balon
28

Perhatikan bahwa jika Anda menggunakan enkripsi, solusi yang diposting di sini sejauh ini tidak akan membantu Anda, karena Anda perlu mengaktifkan dukungan TRIM di lapisan enkripsi juga. Ini dapat dilakukan dengan kernel versi 3.1+ dan cryptsetup versi 1.4+, keduanya termasuk dalam Ubuntu 12.04.

Temukan panduan saya tentang pengaturan TRIM untuk partisi terenkripsi LUKS di sini


Cara Mengaktifkan TRIM pada Partisi Terenkripsi LUKS di Ubuntu & Debian


Langkah demi langkah langkah ini akan memungkinkan Anda memanfaatkan teknologi TRIM untuk partisi SSD terenkripsi Anda untuk cryptsetup 1.4 atau lebih tinggi dan kernel 3.1 atau lebih tinggi. Ini mengarah pada pengalaman SSD yang bebas gangguan karena

"TRIM memungkinkan SSD menangani overhead pengumpulan sampah, yang sebelumnya akan secara signifikan memperlambat operasi penulisan di masa depan ke blok yang terlibat, di muka."

Contoh Pengaturan

Notebook dengan SSD sebagai drive tunggal, Linux dipasang di partisi root LVM ext4 tunggal dengan partisi swap LVM, keduanya di atas partisi logis terenkripsi 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

  1. Buat cadangan semua data Anda. Anda mengacaukan sistem file Anda sehingga memiliki cadangan hanyalah ide yang bagus.
  2. Pastikan Anda memiliki versi kernel dan cryptsetup yang diperlukan (3.1 & 1.4, mis. Di Ubuntu 12.04, namun waspadalah, pada saat penulisan 12.04 masih beta).
  3. Tambahkan parameter buang ke opsi sistem file dari volume LVM terenkripsi di file / etc / fstab Anda. Ini membuat sistem file partisi LVM Anda sadar bahwa Anda ingin menggunakan TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Langkah terakhir tidak cukup. Selama LUKS tidak mengetahui bahwa Anda ingin menggunakan TRIM, ia akan secara efektif memblokir semua operasi TRIM yang berasal dari sistem file partisi LVM, untuk alasan keamanan. Tambahkan parameter buangan ke opsi cryptdevice di / etc / crypttab untuk membuat LUKS menerima perilaku buangan dari partisi LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Bangun kembali initramf Anda. Opsi crypttab disimpan di sana dan digunakan saat boot.

    sudo update-initramfs -c -k all
    
  6. Mulai ulang.

  7. Periksa apakah TRIM sekarang aktif.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Jika perintah terakhir menunjukkan hasil seperti ini (1 allow_discards di akhir) Anda siap.

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

Hasil

TRIM diaktifkan. Nikmati SSD tanpa repot Anda!

nem75
sumber
@Marco Ceppi ada alasan khusus untuk pengeditan, sesuatu yang saya abaikan?
nem75
Hanya merapikan markdown dan menghapus garis "tanda tangan" (diasumsikan bahwa Anda akan mendapatkan umpan balik melalui komentar dan pemungutan suara di situs.
Marco Ceppi
7
Panduan harus dimasukkan di sini jika situs / halaman tidak tersedia.
Cas
Selain itu, ini hanya jawaban link-efektif, itu tidak berfungsi sama sekali. Sebagian besar dari Anda akan menggunakan LVM dengan LUKS, yang tidak mampu menyebarkan TRIM dalam 12,04. Lihat jawaban ini untuk info lebih lanjut.
gertvdijk
1
Setelah mengikuti instruksi ini, apakah masih perlu mengatur pekerjaan cron untuk memangkas disk pada 14,04?
AJN