我想将 SSD 的性能重置为出厂时的性能。我发现在使用标题中显示的这些命令后,性能可能会重置,也可能不会重置。
在进行任何trim
操作之前,运行:
fio --filename=/dev/nvme1n1 --direct=1 --rw=write --bs=4k --size=5G --numjobs=16 --iodepth=32 --group_reporting --name=test
在三星 NVMe 980 pro 500G 上显示带宽为~1100MB/s
,然后我修剪设备以恢复性能:
- 命令A使用:
nvme format -s1 /dev/nvme1n1
- 结果:运行
fio
上述命令显示带宽为仍然~1100MB/s
- 结果:运行
- 命令 B 使用:
fstrim -v /mnt/mount-point-of-nvme1n1p1
- 结果:运行
fio
上述命令显示带宽改进为~1800MB/s
- 结果:运行
我知道nvme format
-s1 和hdparm --security-erase
是低级擦除操作,会从设备(分别为 nvme 和 sata)中擦除所有数据,同时fstrim
保留用户数据。数据是30% 已满在这个 ssd 中。那么一个原因可能是因为这些 30% 满的数据在设备中布局不当,导致操作后性能无法恢复trim
?这里可能遗漏了什么fstrim
?
谢谢!
答案1
对于某些命令,您说的是“此区域是空的,但您可以随意擦除它”,这意味着它可以随着时间的推移进行擦除,甚至在它认为暂时有足够的空间时停止。对于其他命令,您说的是“使整个区域都为空,并且在您真正擦除所有内容之前不要将控制权交还给我”。fstrim
就像前者一样。hdparm --security-erase
就像后者一样,将导致更一致的开箱即用 (OOB)/全新开箱即用 (FOB) 性能基准测试。另一个区别是hdparm --security-erase
/nvme format
命令将能够擦除由于某种原因(例如由于内部过度配置)当前无法“访问”的块。不过,重要的是要知道命令是否会在完成所有工作之前返回 - 如果它只是擦除闪存转换层,那么数据是无法恢复的,但单元实际上尚未预先清除...
如果在驱动器之前“已满”的情况下,您持续长时间不间断地以最高速度写入,则差异就会显现出来。使用fstrim
类似技术时,性能下降的点可能会更早,因为您可以更快地用完预擦除的块。此外,正确擦除驱动器的所有单元显然也会缩短其使用寿命。
(另外,看看fio
你给出的命令行,很遗憾你没有使用更快的A同步fio
ioengines...你的iodepth
设置可能毫无意义鉴于默认 ioengine:-( )
参考
- “SSD 编码”(参见“2.2 预处理”、“4.4 垃圾收集”和“5.3 安全擦除”部分)
- 固态存储性能测试规范 (SSSPTS)(参见“3.2 清除”部分)