最近西数的冷数据门是怎么一回事

特长生

初级会员
注册
2020-12-02
主题
3
1. 写入放大(Write Amplification,简称WA)现象
写入放大是闪存和固态硬盘中存在的一种实际写入的物理资料量是写入资料量的很多倍的现象。

这种现象出现的原因是固态硬盘不像机械硬盘那样可以直接覆盖旧数据。如果想向SSD中存储无用数据的块(Block)写入新数据,就需要先把整个块擦除,才可以写入新的数据。这种工作方式导致了必须擦除的闪存部分比新数据实际需要的大得多,从而导致请求写入的次数的增加,缩短SSD的寿命。增加的额外写入也会消耗闪存的带宽,从而降低SSD的随机写入性能。

闪存的编程和擦除次数有限,通常以闪存在整个寿命中最多可忍受的编程/擦除循环(P/E循环)次数来表示。反复针对同一个块(Block)进行重复抺除和写入,将会造成读取速度变慢,甚至损坏而无法使用,所以固态硬盘需要尽量平均地使用每个存储区块,以避免某些“特定”储存区块因过度使用而形成坏区块,这叫做耗损均衡技术(Wear Leveling)。SLC的单个区块一般可以忍受5w~10w次P/E循环,MLC闪存一般为3000~5000次,而TLC闪存的P/E循环次数又降至1000。所以对于SSD来说,写入放大越低,闪存中进行的P/E循环次数减少,就越能延长SSD的寿命。

在一个理想的耗损均衡情况下,每一区块都能在同一时间达到最大使用寿命。不幸的是,耗损均衡操作会要求移动之前写入后就未改变的数据(冷数据),以使频繁变动的数据(热数据)可以写入到冷数据的区块中,让冷数据的区块达到均衡。虽然数据被移动了位置,但主控却并没有修改它们,这增加了写入放大也降低了闪存的寿命,所以耗损均衡的关键是要找到最优算法,以使对冷/热数据的处理以及某个区块写入/擦除的循环两者同时达到最优化。

当然,除了使用寿命的损耗,还要考虑擦除和写入的时间成本。由于SSD的数据以页面(Page)为单位写入到闪存中,操作的时间为ns级别,而存储器只能以较大的由多个页面组成的区块(Block)为单位进行擦除,擦除数据的时间为ms级别(即写入时间的1000倍以上),因此为了提高SSD的性能表现,主控会定期将零散的有效数据集合到一起移动到其他的区块中,对腾出来的区块进行时间成本很高的擦除操作,以备未来写入新数据,这个过程称为垃圾回收(Garbage Collection,简称GC)

GC的具体流程是主控读取某几个数据区块(Block)中含有有效数据的页面(Page),整合后移动到另一个先前擦除的空块中,将老的区块腾空恢复空盘水平。这样做的好处一方面是把所有有效数据都集中在一起减少寻址负担,另一方面则是留出更多的空闲区块,对于固态硬盘的性能和寿命都起到很重要的作用。

但垃圾回收由于将不同区块中的有效页面进行了合并后写入新的区域,有额外的擦除操作,所以会增加写入放大,即过于频繁的垃圾回收会对NAND寿命产生影响,但又需要进行这样的机制来保证性能,所以怎样在两者之间取得一个平衡是衡量一个SSD主控算法的重要指标。

下图是一个简单的例子,来阐述由于损耗平均技术以及垃圾回收机制的存在,4KiB的数据在SSD中被反复移动到新的位置:
1607049756032.png
2. 这次的冷数据门是怎么回事?
冷数据就是上面提到的不被经常使用的存在SSD某个页中的数据。这些数据由于长时间不进行读取,如果主控算法也不对其进行定期处理移动到新的区块的话,久而久之其电平就会变得不清晰甚至导致无法读取,此时如果需要再次访问该数据时,就需要对电平进行恢复,这个恢复的过程会占用很多时间,从而造成读取速率的直线下降。
SLC:0/1,一个单元的电平只有2种状态,恢复起来最快
MLC: 00/01/10/11,一个单元有4种电平状态,恢复起来比SLC稍慢
TLC: 000/001/.../111,一个单元有2^3=8种电平状态
QLC: 0000/0001/.../1111,一个单元有16种电平状态
可以看到,SLC-MLC-TLC-QLC所需的恢复时间随着一个单元电平状态的增加呈指数级增长,越是复杂的结构恢复起来越慢。

本次西数等品牌的SSD的冷数据门的本质原因是主控对数据的处理不够合理,好的主控芯片会在保证闪存寿命的前提下基于一定算法,在后台悄悄定期“搬运”冷数据,即把冷数据变成热数据,从而避免时间长了以后的掉电平问题,也就避免了恢复电平导致的掉速。不过很遗憾的是这次冷数据门波及到的厂商都没有在其对应的固态硬盘的主控上采用这种设计,自然在时间长了之后就会出现访问冷数据导致掉速的毛病。想要避免这个问题也不难,只是比较麻烦,需要用户定期手动搬运一遍冷数据,或者索性全盘重写就可以了。

冷数据的问题是所有固态硬盘都存在的一种现象,没有必要特别恐慌,只是有的厂商主控考虑到了这个问题进行了特别优化,其他的厂商并没有进行针对性处理,同时这个现象因为只要你格式化一遍硬盘就可以恢复出厂标称速度,所以绝大概率不会被认定为产品质量问题,西数自然也不会提供售后和质保。
3. Windows自带的固态硬盘优化无法把冷数据变为热数据
Trim是基于SATA控制器的一个指令,一旦有文件删除,操作系统就会发Trim指令给SSD主控告诉它这里的数据已经删除了,主控因而知道哪些数据是能动的哪些不能动的,之后就可以进行清空操作以恢复性能。不过Trim命令是即时发送到SSD主控中的,主控有一个可以Trim的队列,等积累到一定时候主控的GC才会开始清空这些被标记为“已删除”的数据块操作。主控Trim会使得GC处理更有效率,不至于拖慢整个SSD速度。

在Windows10中,当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,则不向硬盘发出删除指令,只使用Volume Bitmap来记住这里的数据已经删除,自动等待主控的GC(垃圾回收)。Win10自带的固态硬盘优化本质上是一个手动的Trim过程,按一下就会执行一次trim,所以对于支持Trim的SSD来说,无论你使用还是不使用固态硬盘优化,都不会影响到硬盘主控本身的GC回收工序,所以也无法解决冷数据的问题。
4. 最后想说的
一个产品的实力,我认为要包括硬件+软件两部分,过往在泥潭看帖子,很多人都觉得三星Intel智商税,我有便宜的ABCD家的固态不买,买贵的?给别人推荐过几次都不讨好后来我也放弃了。希望这次的事情能让大家意识到SSD的主控也是是固态硬盘极其重要的一部分,以后在买产品的时候稍微研究一下为什么有的比其他家的贵,而不是单纯看跑分之类的。
 

顶部