TRIM持久性在重新启动

假设我们有一个ext4文件系统镜像,我们将其转储到一个SSD上(使用dd )。 几次挂载之后,我们知道我们应该使用discard标志来向驱动器发出TRIM命令。 由于目前还不清楚ext4是否会在第一次使用discard时将所有的空闲块修剪掉,所以我们做一个手动在线修剪:

 fstrim /mount/point 

希望这不会与discard选项相互作用。 如果我们连续执行fstrim ,它会报告没有块被修剪。 奇怪的是,在重新启动系统之后,额外的fstrim运行会再次报告很多块已被修剪(取决于可用空间)。

因此,看起来很明显,Linux内核不会跟踪持久存储中的修剪块,问题是: SSD驱动器是否永久记住修剪的块?

如果有帮助的话,所有这一切的目的都是为了达到一个类似的状态,即如果文件系统是新创build的,并且从一开始就启用了discard , 所以我想知道是否一次执行fstrim就足够了。

SSD记住哪些块在重新启动时被修剪。 否则,SSD在每次重新启动后都会很慢,直到操作系统设法检查整个驱动器是否有可调整块。

但是,操作系统并没有跟踪哪些数据块在重新启动后已经告诉SSD进行TRIM。

一次调用fstrim就足够了。