SSD有个概念叫WA (写入放大)
早在2008年,Intel公司和SiliconSystems公司(2009 年被WD收购)第一次提出了写入放大并在公开稿件里用到这个术语。他们当时的说法是,写入算法不可能低于1,但是这种说法在2009年被 SandForce打破,SandForce说他们的写入放大是0.5 (注:SF必须使用了压缩算法,然后SF现在是WD老对手Seagate的,提前多少年就帮主子啪啪啪打对手的脸)。
什么是写入放大
WA:Write Amplification,俗称写入放大。通俗点来说,SSD在实际使用过程中,写入的数据和真实写入闪存上的数据不一致,真实写入的数据量会比写入的数据量要大,这其中的比例就是写入放大。
举个例子:当要写入一个4KB的数据时,最坏的情况是一个块里已经没有干净空间了,但有无效的数据可以擦除,所以主控就把所有的数据读到缓存,擦除块,缓存里更新整个块的数据,再把新数据写回去,这个操作带来的写入放大就是: 实际写4K的数据,造成了整个块(共1024KB)的写入操作,那就是放大了256倍。同时还带来了原本只需要简单一步写入4KB的操作变成:闪存读取 (1024KB)→缓存改(4KB)→闪存擦除(1024KB)→闪存写入(1024KB),共四步操作,造成延迟大大增加,速度变慢。同时也增加了对数据量的处理,减少SSD的使用寿命。
WA=256
对应一个生活中的例子,一架电梯(块)最多可以装12人,一楼电梯是空的(块上没有数据),第一个人(4K的)直接上去就好了(数据直接写入),到了二楼,又有一个人要上电梯(需要再写4K data),这个时候他不能上,必须先让第一个人从电梯里出来,然后把电梯打扫干净(擦除),最后两个人一起进去。这样从电梯口的人数会大于实际乘坐电梯的人数。
由于闪存必须先擦除才能再写入的特性,在执行这些操作时,数据都会被移动超过1次。这些重复的操作会增加写入的数据量,减少闪存的使用寿命,所以说WA是影响 SSD随机写入性能和寿命的关键因素。
如何减小写入放大
1. 增加预留空间(OP),预留空间越大,写入放大越低;此项主要是厂家出厂时已设定,用户可根据需要选择性购买带有OP或不带OP的SSD。
2. 开启Trim指令
(之前有篇介绍Trim的文章,出门左转 “SSD固态硬盘的Trim命令是什么?“)
3. 保持一定的可用容量,可用容量越大,写入放大越低。(需要有Trim支持)
4. 安全擦除 Secure Erase 减少写入放大,ATA安全擦除命令用来清除在磁盘上的所有用户数据,这个指令会让SSD回到出厂时的性能(最优性能,最少写入放大),对SSD来说,重置就是全盘擦除操作,可清除所有数据并让SSD回到初始状态。但要注意,每操作一次,全盘寿命P/E次数减1。
5. 使用写入压缩算法