SSD写放大的理解与现有解决问题方法的学习
1.Page和Block
SSD的硬盘有page和block的概念。Page大小为4K,Block大小为512K(即128个Block)。
2.写放大
从前一直认为SSD的写放大(Write amplification)是指SSD一次写必须写一个Block,其实不是这样的。SSD一次写的单位是page,但是SSD的Write只能写到空的page上,对于之前写过的page,必须先进行一次Erase。而Erase的单位是Block,所以如果一个page的数据删掉之后,要想再写到这个page上,必须经过以下三步:
1.将在同一个Block的其他page读出来。
2.将整个Block Erase。
3。然后将整个Block的数据写下去。
3.解决方法Trim
TRIM是现在公认的解决写放大的比较好的方案。
TRIM位于操作系统层。操作系统使用TRIM命令来通知SSD某个page的数据不需要了,可以回收了。
支持TRIM的操作系统和以往的主要区别是删除一个Page的操作不同。在磁盘时期,删除一个page,之后在文件系统的记录信息里将该page的标志位设置为可用,但是并没有将数据删除。使用SSD且支持TRIM的操作系统,在删除一个page时,会同时通知SSD这个page的数据不需要了,SSD内部有一个空闲时刻的垃圾收集进程,在空闲时刻SSD会将一些空闲的数据集中到一起,然后一起Erase。这样每次写操作,就在已经Erase好了的Page上写入新的数据。
?