如何延长SSD寿命提高读写速度?固态硬盘TRIM开启指南
今年SSD降幅明显,相信站内很多朋友都买了SSD固态硬盘,笔者也分别入手了京造、移速的固态硬盘。虽然两者都是京东自营并负责售后,不过谁也不想硬盘在毫无预期的时候突然挂掉,笔者挂在锐角云上的某讯H1硬盘因突然跳电导致敲盘,恢复docker配置、虚拟机花费了大半天时间。
TRIM不仅可以延长 SSD 的使用寿命,还可以提高读写速度,但仍需要注意:TRIM涉及到数据安全!!!所以建议各位观众姥爷们切勿在正式环境上盲目启用!
先说结论:想要开启TRIM功能需要软硬件同时支持,目前市面上绝大多数硬件都已支持TRIM,但USB移动硬盘固件支持较弱。
我的硬件支持TRIM吗?
1. SSD固态硬盘首先要支持TRIM,一般较新的SSD都支持,可以使用查看CrystalDiskInfo查看
2. 如果你的SSD是使用硬盘盒的方式接入主机USB,那么移动硬盘盒的主控芯片是否支持TRIM成为关键的影响因素!当然如果你是直接接在主板的M.2或SATA接口上,就免去了这部分烦恼!
关于某一型号的硬盘盒或者某一主控是否支持TRIM,各家都众说纷纭,究其原因笔者理解为:TRIM这项技术并未被厂商作为主要卖点;同一主控芯片也存在不同厂商不同固件,所以我们的测试就像盲人摸象,得出来的结论自然也是大相径庭,这里也希望硬盘盒厂商能重视这一点。
有请正方一辩:
有请反方一辩:
支不支持首先看主控芯片,这里可以通过芯片厂商的官网查询,其次看硬盘盒厂家固件,可以通过询问客服或技术人员索取固件。目前市面上的绝大多数主控都支持TRIM,但硬盘盒固件支持较弱!
我的系统支持TRIM吗?
系统也需要支持TRIM,笔者查阅资料发现,Windows阵营从Win7系统开始便已支持TRIM,不需要特殊操作。这点给巨硬点赞!
fsutil behavior query DisableDeleteNotify
再看Linux这边对于TRIM支持相对比较保守,虽然在2008年内核已支持TRIM,但应用较少,毕竟服务器的稳定性高于一切,通过磁盘阵列等方式可以弥补机械硬盘的速度短板,对于商用而言机械硬盘依然是首选,再加上TRIM对RAID的影响。但是TRIM非常适用我们个人的应用场景,比如系统中的缓存文件以及各种小文件。因为我们的固态硬盘通常不会写满,TRIM能大大提高固态硬盘的工作效率。
Linux下如何查询TRIM支持(笔者这里使用debian10作为演示,硬盘盒为绿联,设备路径为/dev/sda)
安装必要软件
apt install sg3-utils hdparm -y
查看设备
lsusb
df -h查看设备路径
运行命令:
hdparm -I /dev/sda | grep TRIM
注意命令中 /dev/sda 需要改成你自己的设备路径
第二种方式:
lsblk --discard
若DISC-GRAN和DISC-MAX列上的数值不为零,则表示对应设备支持TRIM
当然还有第三种判断方法,直接运行命令手动执行裁剪,看看SSD是否在其中
fstrim -a -v
USB固态硬盘可能出现的问题
笔者使用的绿联在3项测试中仅通过第1种测试,到底是支持还是不支持呢?
经过学习终于在ArchWiki中找到了答案:
一些USB转SATA芯片(如VL715、VL716等)以及在外接NVMe硬盘盒(如IB-1817M-C31[失效链接 2022-09-23 ⓘ]))中使用的USB转PCIe芯片(如 智微(JMicron) JMS583 )支持类似TRIM的命令,这些命令可通过 USB Attached SCSI 驱动程序(在Linux下称为"uas")发送。
首先运行
sg_readcap -l /dev/sda
内核认为该设备不支持Logical Block Provisioning Management
如果有Logical block provisioning: lbpme=0这一行,继续执行
sg_vpd -a /dev/sda
设备支持UNMAP,只需要在对应的provisioning_mode中添加unmap参数即可
echo "unmap" >/sys/block/sda/device/scsi_disk/*/provisioning_mode
通过添加udev配置文件实现该设备自动配置
nano /etc/udev/rules.d/99-sata-adapter-trim-enable.rules
添加以下文件,使用lsusb命令查看设备PID VID,修改对应的ID
ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="225c", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"
这样内核便自动检测到并启用UAS,再次测试这次3项全部通过。
软硬件均支持TRIM,如何才能启用TRIM?
开启TRIM有两种方式:Continuous TRIM和Periodic TRIM
Continuous TRIM即通过修改/etc/fstab中硬盘的挂载参数加入discard以实现每次在文件被删除后就立即执行TRIM指令,由于Continuous TRIM会拖慢系统,并且有可能导致的数据损坏,目前已不推荐这种方式。
btrfs分区支持ssd这个参数,但ext4并不支持该参数,所以挂载时注意分区格式,建议加入nofail参数以免因挂载失败导致系统无法启动。
Periodic TRIM则是定期在支持TRIM的设备上执行修剪,更推荐这种方式。
启动命令
systemctl enable fstrim.timer
systemctl start fstrim.timer
systemctl status fstrim.timer
至此,配置TRIM的相关步骤就结束了,在此感谢各位观众姥爷们的点赞、评论、打赏!希望本文能给各位带来帮助!
恰逢双十一,笔者这里也推荐几款固态硬盘给各位观众姥爷们:
首先是本次使用的绿联硬盘盒,笔者到手的主控是ASM2235,没有难为我去刷固件
笔者购买的原因主要是:京东自营并提供5年质保,目前用于OMV中替换坏了的H1
京造的这块硬盘目前在挂某PCDN,自营售后没毛病
再推荐下笔者双十一准备购买的两款
本文参考:
Solid state drive (简体中文) - ArchWiki (archlinux.org)
Fix SSD TRIM on UGREEN UASP USB SATA adapter/enclosure - DEV Community 👩💻👨💻
LemonTeaTT https://www.bilibili.com/read/cv16918890/
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
月华人失色
校验提示文案
半年修改一下昵称
校验提示文案
king1258
校验提示文案
Tony9999
校验提示文案
焱炎火
因arch百科里没针对三星的调校段落
校验提示文案
阿丑学长
校验提示文案
月华人失色
校验提示文案
阿丑学长
校验提示文案
焱炎火
因arch百科里没针对三星的调校段落
校验提示文案
Tony9999
校验提示文案
king1258
校验提示文案
半年修改一下昵称
校验提示文案