1. 程式人生 > 其它 >Linux下有關外接SSD的TRIM支援

Linux下有關外接SSD的TRIM支援

前言

電腦升級換下一塊128GB的M.2介面SSD,使用SATA協議,計劃使用外接硬碟盒子轉為移動固態使用。
開始想當然格式化為exfat格式,方便Linux/MacOS/Windows傳檔案,使用一段時間後寫入速度越來越慢。
上網一查,果然低端硬碟盒主控不支援TRIM沒轍重買……這裡提醒一下:
全網最便宜JMS580方案支援TRIM的盒子售價大約在49元,低於這個價格的JMS576不帶TRIM注意甄別。

後續

更換硬碟盒,檢視旋轉flag成功變為0識別資訊也由普通磁碟變為SSD圖示。

$ lsblk -o NAME,ROTA /dev/sdb
NAME   ROTA
sdb       0
└─sdb1    0

再次檢查磁碟是否支援垃圾回收:

$ lsblk --discard /dev/sdb
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sdb           0        4K       4G         0
└─sdb1        0        4K       4G         0

可以看到正常支援,但無法呼叫fstrim進行垃圾回收

$ sudo fstrim -v /Data 
fstrim: /Data: the discard operation is not supported

百思不得其解。

思考

對比了內建的固態硬碟,懷疑是exfat檔案系統的問題。
開始求證,最終在ArchWiki找到了答案

for exFAT, fstrim is supported since kernel 5.13

相比更新5.13核心,還是把SSD格式化為ext4更快……
果然,使用ext4格式後,順利TRIM速度也恢復正常。

參考

USB - SATA-USB Bridge Controller-Products-JMicron-Leading the storage revolution!
Enable Trim on an External SSD on Linux [Glump.net]
Solid state drive - ArchWiki
kernel/git/torvalds/linux.git - Linux kernel source tree