Làm cách nào để kích hoạt TRIM?


189

Tôi biết rằng nhân Linux hỗ trợ TRIM kể từ phiên bản 2.6.33, vì vậy cần có hỗ trợ TRIM trong ubfox.

TRIM được bật theo mặc định hay tôi cần thay đổi một số cài đặt hoặc cài đặt phần mềm bổ sung để nó hoạt động? Nếu vậy thì thế nào?


Tôi vừa làm theo các hướng dẫn này trên webupd8, cung cấp một số tùy chọn thực sự tốt :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drive.html Tôi đã thử tùy chọn cắt tự động như được mô tả ở trên trong "TRIM tự động" nhưng nhận thấy rằng việc thiết lập một cron hàng ngày hoạt động tốt hơn rất nhiều với thiết lập của tôi.
bmbaker

Câu trả lời:


197

Ubuntu 14.10 trở đi

Trong Ubuntu 14.10 và 15.04, TRIMming tự động xảy ra mỗi tuần trên tất cả các ổ SSD được hỗ trợ bởi fstrim.

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

Kể từ 15.04 Ubuntu sử dụng systemd và bộ đếm thời gian của nó ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

Kể từ Ubuntu 14.04, TRIM theo lịch trình được bật theo mặc định cho các ổ SSD Intel, SAMSUNG, OCZ, Patriot và Sandisk. Nếu bạn có một thương hiệu khác, bạn có thể vô hiệu hóa kiểm tra nhà cung cấp bằng cách chạy lệnh sau:

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

(hoặc chỉ chỉnh sửa tệp /etc/cron.weekly/fstrimvà thêm --no-model-check)

Ubuntu 13.10 và trước đó

Có ba cách để thực hiện TRIM, thủ công, lên lịch và tự động:

Hướng dẫn sử dụng TRIM

Trong Ubuntu, điều này có thể được thực hiện với fstrim:

sudo fstrim /

tuy nhiên không cần thiết khi bật TRIM tự động hoặc theo lịch trình, như chi tiết trong các phần bên dưới.

Lưu ý: Đối với Ubuntu 11.04 và các hệ thống cũ hơn, fstrim không khả dụng nên bạn phải sử dụng wiper.shđược cung cấp hdparmtrong/usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM theo lịch trình (Khuyến nghị)

Đây là phương pháp được đề xuất hiện tại và được lên kế hoạch kích hoạt theo mặc định cho Ubuntu 14.04 . Dưới đây là cách kích hoạt thủ công trong các phiên bản cũ hơn của ubfox (11.10 đến 13.10):

Tạo tệp tập lệnh CRON hàng tuần:

gksudo gedit /etc/cron.weekly/fstrim

Dán đoạn mã sau vào tệp, sau đó lưu và đóng tệp:

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

Lưu ý rằng ở trên giả định rằng chỉ có hệ thống tập tin gốc của bạn /được đặt trên ổ SSD. Nếu bạn có nhiều điểm gắn kết nằm trên một hoặc nhiều ổ SSD, hãy thêm chúng vào SSD_MOUNT_POINTSnhư được giải thích trong mã.

Làm cho tập lệnh thực thi:

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

Và cuối cùng kiểm tra nó:

sudo /etc/cron.weekly/fstrim

Nếu bạn thấy không có lỗi, công việc định kỳ của bạn sẽ hoạt động tốt.

TRIM tự động (không dùng nữa, chậm)

TRIM tự động đã được hỗ trợ kể từ Ubuntu 10.10 (kernel 2.6.33) với hệ thống tệp EXT4. Tuy nhiên, việc gửi các lệnh TRIM tới SSD trong thời gian thực - sau mỗi lần xóa - đã được công nhận để xóa chậm hơn bình thường trên một số ổ đĩa. Do đó, một TRIM được lên lịch hàng tuần thông qua một công việc định kỳ (được mô tả ở trên) được đề xuất.

Để bật TRIM tự động trên ổ đĩa hoặc phân vùng, chúng cần được gắn với discardtùy chọn trong fstab. Đầu tiên hãy sao lưu fstab của bạn sau đó mở nó để chỉnh sửa:

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

Thêm vào discardmục tùy chọn fstab (được phân tách bằng dấu phẩy) cho ổ SSD hoặc từng phân vùng.

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

Đóng và lưu fstab, sau đó khởi động lại và TRIM tự động sẽ hoạt động.

Kiểm tra TRIM tự động

Để kiểm tra xem TRIM có hoạt động hay không, các lệnh sau ( nguồn ):

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

Từ đầu ra, sao chép số bên dưới begin_LBAvà xác minh tên thiết bị của SSD của bạn: System->Administration->Disk Utilityví dụ: sda, sdb, sdc ...

Chạy các bước sau nhưng thay thế [ADDRESS](started_LBA) và sdX(tên thiết bị SSD) bằng các chi tiết thu được ở trên.

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

đầu ra phải là một chuỗi ký tự dài cho các sector đó

sudo rm tempfile
sync

Lặp lại hdparmlệnh từ phía trên:

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

Nếu bạn chỉ nhận được số không thì TRIM tự động đang hoạt động. Tuy nhiên, nếu sau khi xóa tệp, các sector vẫn không trống thì hãy đợi một lúc và chạy lại lệnh.


5
Kiểm tra TRIM có thể không thực sự hoạt động như vậy: serverfault.com/a/401506/60525
chrishiestand

1
@Uli Xin ai đó giúp tôi. Nó dường như không làm việc cho tôi. Tôi có 4 phân vùng trong ssd của tôi / /boot /usr/optvà tôi đã sử dụng hdd khác cho tôi /home. Tôi đi đến cd / #sdcvà tôi tiếp tục với các hướng dẫn nhưng tôi không bao giờ có được số không. Cảm ơn trước!
BugShotGG

1
@lightrush: Chỉnh sửa tuyệt vời! Cảm ơn đã giữ câu trả lời cập nhật.
Uli

1
Bạn có thể muốn thêm một lệnh syncsau dd, vì ít nhất trên hệ thống của tôi, tempfile không được tạo ngay lập tức, vì vậy hdparm báo cáo không có gì.
Andreas J.

2
systemd xử lý việc này ngay bây giờ. sudo systemctl status fstrim.timer
bóng bay

28

Lưu ý rằng nếu bạn đang sử dụng mã hóa, các giải pháp được đăng ở đây sẽ không giúp ích gì cho bạn, vì bạn cũng cần bật hỗ trợ TRIM trong lớp mã hóa. Điều này có thể được thực hiện với các phiên bản kernel 3.1+ và phiên bản cryptsetup 1.4+, cả hai đều được bao gồm trong Ubuntu 12.04.

Tìm hướng dẫn của tôi về cách thiết lập TRIM cho các phân vùng được mã hóa LUKS tại đây


Cách kích hoạt TRIM trên các phân vùng được mã hóa LUKS trong Ubuntu & Debian


Hướng dẫn từng bước này sẽ cho phép bạn tận dụng công nghệ TRIM cho các phân vùng SSD được mã hóa của bạn cho cryptsetup 1.4 trở lên và kernel 3.1 trở lên. Điều này dẫn đến trải nghiệm SSD không rắc rối vì

"TRIM cho phép SSD xử lý chi phí thu gom rác, điều đó sẽ làm chậm đáng kể các hoạt động ghi trong tương lai tới các khối liên quan, trước."

Thiết lập ví dụ

Máy tính xách tay với SSD là ổ đĩa đơn, Linux được cài đặt trong phân vùng gốc LV4 ext4 với phân vùng trao đổi LVM, cả trên phân vùng logic được mã hóa 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

Làm thế nào để

  1. Tạo một bản sao lưu tất cả dữ liệu của bạn. Bạn đang làm rối tung hệ thống tập tin của mình nên có một bản sao lưu đơn giản là một ý tưởng tốt.
  2. Hãy chắc chắn rằng bạn có các phiên bản kernel và cryptsetup cần thiết (3.1 & 1.4, ví dụ như trong Ubuntu 12.04, hãy cẩn thận, tại thời điểm viết 12.04 vẫn là bản beta).
  3. Thêm tham số loại bỏ vào các tùy chọn hệ thống tệp của (các) khối lượng LVM được mã hóa trong tệp / etc / fstab của bạn. Điều này làm cho hệ thống tệp của phân vùng LVM của bạn biết rằng bạn muốn sử dụng TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Bước cuối cùng là không đủ mặc dù. Miễn là LUKS không biết rằng bạn muốn sử dụng TRIM, nó sẽ chặn hiệu quả tất cả các hoạt động TRIM đến từ hệ thống tệp của phân vùng LVM, vì lý do bảo mật. Thêm tham số loại bỏ vào các tùy chọn cryptdevice trong / etc / crypttab để khiến LUKS chấp nhận hành vi loại bỏ phân vùng LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Xây dựng lại initramfs của bạn. Các tùy chọn crypttab được lưu trữ ở đó và được sử dụng khi khởi động.

    sudo update-initramfs -c -k all
    
  6. Khởi động lại.

  7. Kiểm tra xem TRIM hiện đang hoạt động.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Nếu lệnh cuối cùng hiển thị kết quả như thế này (1 allow_discards ở cuối) thì bạn đã thiết lập xong.

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

Kết quả

TRIM được kích hoạt. Tận hưởng SSD không rắc rối của bạn!


@Marco Ceppi bất kỳ lý do cụ thể cho việc chỉnh sửa, một cái gì đó tôi bỏ qua?
nem75

Chỉ cần dọn dẹp đánh dấu và xóa dòng "chữ ký" (giả định rằng bạn sẽ nhận được phản hồi thông qua nhận xét và bỏ phiếu trên trang web.
Marco Ceppi

7
Hướng dẫn nên được bao gồm ở đây trong trường hợp trang web / trang không có sẵn.
Cas

Bên cạnh đó, đây thực sự là một câu trả lời chỉ liên kết, nó hoàn toàn không hoạt động. Hầu hết các bạn sẽ sử dụng LVM với LUKS, không có khả năng truyền TRIM trong 12.04. Xem câu trả lời này để biết thêm.
gertvdijk

1
Sau khi làm theo các hướng dẫn này, vẫn cần thiết lập một công việc định kỳ để cắt đĩa vào ngày 14.04?
ajn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.