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上写入新的数据。

猜你喜欢

转载自jfwang213.iteye.com/blog/1562263