Nand Flash => Chip => Plane => Block => Page
几个层次。其中Block
是Nand Flash
擦除的最小单位;Page
是读写操作的基本单位Erase Before OverWrite
问题擦除(Erase)
整个Block为1,然后在往这个Block写入新数据,这个擦除操作增加了覆盖写的开销。如果是更改某个Block中的Page,操作还是和之前一致,必须擦除整个Block然后在写入新的Page.在擦除操作之前必须将需要更改的Block全部读入到内存中,然后擦除相关的Block,然后将新Page数据覆盖写到内存Block中Page的位置,最后将内存中的Block写入到Flash芯片中,整个更改Page操作就完成了。Wear Off
问题Wear Off
问题,本质是增加了很多不必要的擦除。厂商wiper工具
:基于Flash的SSD中内部的空闲空间决定了SSD的寿命和写入性能。要保持SSD内部更多的空闲空间就必须让文件系统通知SSD哪些未被文件或者文件元数据占用空间,可以被擦除。目前很多SSD的厂商会提供Wiper
工具,这个工具会扫描文件系统中哪些哪些无效或者未被使用的逻辑地址,并且告诉SSD进行擦除然后回收到空闲空间。如果业务系统是频繁删除和写入文件,建议定期运行来回收空间。TRIM
:TRIM
是ATA
标准指令集其中的指令,这个指令可以让文件系统的删除文件操作实时的通知到SSD回收对应的Block,然后放回到空闲空间。