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ợ TRIMDISC-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.