“fstrim”和“hdparm --security-erase”/“nvme format -s1”之间有什么区别

“fstrim”和“hdparm --security-erase”/“nvme format -s1”之间有什么区别

我想将 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同步fioioengines...你的iodepth设置可能毫无意义鉴于默认 ioengine:-( )

参考

相关内容