刷新磁盘的冷数据使SSD保持活力
众所周知,SSD也就是NAND的颗粒,是有P/E次数,寿命随着写入次数的增加而减少。而我在使用我的CHIPFANCIER UME NANO这个usb ssd的过程中,碰到一个问题,就是当我这个ssd使用一段时间(可能是2到3个月)之后,部分区块页的读取延迟变得很高,已经没有刚买来的时候700MB/s那个速度了。
这个或许跟我的使用方式有点关系,我格式化成Btrfs文件系统并且使用了btrfs的快照功能,快照大概一周一次,而旧的快照也不一定马上删除,一般会保留个3个月。由于COW特性,所以确实有些文件是长时间存活的。我这么怀疑是因为我了解到SSD的区块页里面的电子特性会随着时间的增加而变得不稳定,时间越久,出错的时候需要更多的校验导致读取变慢。当然了,很多现代的主控比如三星的其实内部都会对这一部分不常改写的数据进行重新移位,防止别的块P/E次数增加而当前块永远不变,只是我使用的CHIPFANCIER观察到应该是没有自动解决这个问题。
我有看到有人说全盘copy出来后,重新格式化之后再使用的,也有说用badblocks全盘refresh刷新的。我自己是使用Victoria这个磁盘工具,扫描高延迟的区块,对高延迟的区块进行刷新(Refresh也就是读取出来然后重新写入这个地方进去),这样的好处是,刷新电子不稳定的区块毕竟是少数,不用全盘Refresh一遍。对于SSD主控来说,刷写一个区块,SSD主控会重新在另一个地方分配空间并相对映射到当前分区的LBA地址。对于操作系统来说是透明的。

我设置扫描所有读取延迟高于100ms的区块进行Refresh,我的USB SSD是支持UASP协议,所以我操作block选择4096也就是4k。这样全盘512GB的大小大概16分钟扫描并刷新高延迟的区块之后,整个U盘焕然一些,接近回到出厂速度。