在上期,我们提到,SSD盘的标称容量实际上是小于出厂容量的。这一部分相差的空间被称为OP空间。OP空间的一个用途是,当SSD存储芯片中一部分单元在多次写入后,出现磨损的现象,也就是SSD芯片中的浮栅场效应管失效,则使用OP空间的页代替故障存储单元所在的页。较新的SSD控制器甚至会监控每个页的写入次数,避免一个页故障导致整个Block失效的现象发生。
一般地,SSD盘的出场容量(以GB计),是2的整数次方,如1024GB,2048GB,4096GB...
而对计算机硬件熟悉的读者会发现,市场上常见企业级SSD盘的规格有两个系列:
一个系列为960GB,1920GB,3840GB... 特点是容量数值为2的整数次方减少6.25%;
另一个系列为800GB,1600GB,3200GB... 特点是容量数值为2的整数次方减少21%;
而这两种规格的DWPD(衡量写寿命的参数)一种为1,另一种为3。实际上,后者和前者是同样的硬件物料,只是调整了出场时的OP值。它们的对应关系如下表:
初始容量(GB) | DWPD = 1 | OP空间(GB) | DWPD = 3 | OP空间(GB) |
---|---|---|---|---|
256 | 240 | 16 | 200 | 56 |
512 | 480 | 32 | 400 | 112 |
1024 | 960 | 64 | 800 | 224 |
2048 | 1920 | 128 | 1600 | 448 |
4096 | 3840 | 256 | 3200 | 896 |
8192 | 7680 | 512 | 6400 | 1792 |
16384 | 15360 | 1024 | 12800 | 3584 |
可见,当OP空间增加的时候,SSD的寿命也出现了显著的提升。
OP空间的另一个用途是提升随机写入的性能。在上期中,我们阐明了,SSD存在所谓的“写放大”现象,也就是说,在整盘找不到完全空闲的block的情况下,任意的写入操作,都会造成将一个page的写入量放大至一个block。
在这种时候,OP空间就派上用场了。由于OP空间是SSD控制器内部保留,对外不可见的空间,在这个时候,就可以提供完全空闲的block。对于随机的写请求,SSD控制器会将写请求重定向到OP空间中空闲的block,如下图所示:
图中,黑色色块代表随机写的目标page。由于这些page所在的block被占用了,整盘中也没有其他可用的空闲block,SSD控制器为避免写放大的发生,会将对这些page的写入重定向到OP空间中,同时在FTL(Flash Translation Layer,逻辑page地址和物理page地址的对应表)中修改之。
与此同时,SSD控制器会对这些被OP空间替换掉的page进行GC(垃圾收集,Garbage Collection),将其他block的数据拆散,填充到这些page中,从而腾出空闲的block并归还回OP空间。
我们可以用类似“华容道”游戏来类比这一过程:
(DOS版本的Visual Foxpro 2.6中有这个游戏,玩过的都暴露年龄了)
如图,4*4的框架中,有15个方块(类比为用户可见的空间)和一个空位(类比为OP空间),玩家可以利用这个空位进行辗转腾挪来调整各个方块的位置。显然,由于只有一个空位,这个游戏的难度是很高的。
那么,如果抠掉一些方块,如下图:
图中有了4个空格,显然,想利用空格调整其他方块的位置变得容易了很多。这就是增加OP空间提升SSD写性能的基本原理。
实际上,在SSD出厂以后,依然可以重新调整OP空间。让我们举一个实际的例子:分布式存储使用SSD作为机械盘的缓存实现性能的提升。由于几乎所有的数据写入的时候都先会被写到SSD,因此,一般要求SSD的DWPD = 3。但由于应用场景和需求的原因,实际上,市场上DWPD = 1的SSD供应情况更佳。那么,如果由于供应情况的原因,在构建分布式存储集群的时候,购买了DWPD = 1的NVMe SSD,如3.84TB,7.68TB等规格,我们就可以在SSD出场后,使用Crucial Storage Executive一类的工具重新设定OP,如将可用容量改为3.2TB,6.4TB等规格,就可以使得SSD符合分布式存储缓存的DWPD标准了。
但是,即使可以使用OP空间避免写放大,提升SSD随机写性能,QLC/TLC的写入性能依然低于SLC。
我们反复多次提到过一种存储子系统设计的思想:使用少量成本高,性能高的存储器,作为大量成本/性能低的存储器的缓存。同样地,我们也可以使用SLC作为QLC/TLC的缓存。
一方面,SLC的寿命较长,擦写次数可达10万次,不容易由于反复擦写而失效,另一方面,SLC的写入性能又显著高于QLC和TLC。因此,目前市面上主流的SSD中,会利用SLC作为缓存层,QLC/TLC作为容量存储,以取得成本和性能的平衡。
在下期,我们还会为大家带来更有趣的计算机硬件知识。大家不要错过呀!