Làm sao “dọn rác ẩn” cho SSD trên Linux (fstrim)

Khi nói đến kiểm tra/tối ưu hệ thống Linux, chúng ta thường nghĩ nhanh đến các công cụ như top, htop, iotop, journalctl, hoặc systemctl. Nhưng có một lệnh nhỏ gọn, ít người biết, giúp cải thiện hiệu suất ổ SSD một cách cũng đáng kể đó là fstrim.

Nếu bạn đang chạy Linux trên SSD (dù là laptop, server hay cloud VM), mà bỏ qua fstrim thì có thể đang để hệ thống gánh rác mà không biết.

Vấn đề thực sự: SSD không biết file nào bị xóa

Trên SSD, khi bạn xóa một file, hệ điều hành chỉ “đánh dấu” block đó là không dùng nữa. Tuy nhiên, SSD vẫn coi đó là dữ liệu hợp lệ cho đến khi được ghi đè.

Vì vậy thì:

  • SSD nghĩ rằng dung lượng vẫn đầy
  • Hiệu suất ghi giảm dần theo thời gian
  • Giảm tuổi thọ chip nhớ vì phải ghi đè nhiều hơn

Giải pháp là gửi tín hiệu TRIM để nói với SSD: “Block này tao không cần nữa, mày có thể làm gì với nó thì làm :))”.

fstrim là gì?

fstrim là công cụ trên Linux để gửi lệnh TRIM thủ công đến thiết bị lưu trữ, yêu cầu xóa dữ liệu không còn được sử dụng nữa trong hệ thống tập tin (filesystem).

Khi nào nên dùng fstrim?

Một số trường hợp bạn nên lưu ý là:

  • Bạn sử dụng SSD (ổ cứng vật lý hoặc đĩa ảo trên cloud)
  • Filesystem bạn dùng là ext4, xfs, btrfs…
  • Bạn không bật discard tự động (hoặc muốn tránh hiệu năng giảm khi ghi)

Cách sử dụng

Thực hiện TRIM cho root filesystem:

sudo fstrim -v /

Kết quả:

/: 5.2 GiB (5581400064 bytes) trimmed

Lệnh này nói cho bạn biết dung lượng đã “dọn sạch” trên ổ SSD.

Lập lịch tự động với systemd (Ubuntu / Debian)

Hầu hết các distro hiện đại (Ubuntu, Fedora…) đã có sẵn timer:

systemctl status fstrim.timer

Nếu chưa chạy, hãy bật:

sudo systemctl enable --now fstrim.timer

Timer này sẽ chạy hàng tuần (fstrim.service), đảm bảo hệ thống luôn được TRIM đều đặn.

Cảnh báo và lưu ý

Hữu ích, ngon và tiện lợi nhưng không phải dùng bừa bãi nhé:

  • Đừng dùng trên HDD: TRIM không áp dụng với ổ cứng cơ học vừa vô nghĩa và lãng phí I/O.
  • Cloud VM cần kiểm tra trước: Không phải tất cả nhà cung cấp Cloud đều hỗ trợ TRIM trên disk ảo.
  • Không phải tất cả filesystem hỗ trợ: ext4 (kể từ kernel 2.6.33), xfs, btrfs có hỗ trợ nhưng ntfs, tmpfs thì không.
  • ZFS? ZFS có cách riêng và không dùng fstrim.

Kiểm tra ổ đĩa có hỗ trợ TRIM không

lsblk --discard

Kết quả sẽ cho thấy:

  • DISC-GRAN > 0 → Hỗ trợ TRIM
  • DISC-MAX là dung lượng tối đa có thể TRIM một lần

So sánh: discard vs fstrim

Phương pháp Ưu điểm Nhược điểm
discard mount option TRIM theo thời gian thực Có thể ảnh hưởng hiệu năng ghi
fstrim định kỳ Chủ động hơn, hiệu năng ổn định Cần cron/systemd hỗ trợ

Tổng kết

fstrim là một lệnh đơn giản nhưng thể hiện rõ tư duy của người làm có quan tâm đến hệ thống, “Chăm” hệ thống không chỉ khi nó có vấn đề, mà còn biết bảo dưỡng để nó luôn bền bỉ và ổn định. Dùng cái này làm mình nhớ lại lúc học đại học có cái máy tính được phụ huynh mua cho nâng niu từng tí một :)))

Nếu bạn đang làm DevOps, quản trị hệ thống hoặc chỉ đơn giản là một người dùng Linux dùng SSD, thử check xem fstrim có hoạt động không 😀

Vì hiệu năng cao nhất là khi hệ thống không cần cứu hộ mà vẫn chạy tốt theo thời gian.

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận