什么是SSD的写放大?
写放大(Write Amplification),最早在08年由Intel公司和SiliconSystems公司在论文和出版物中提出并使用。这一术语通常用闪存的写入与主机系统的写入之比来衡量。
简单来说:写入放大值越小,对硬盘使用寿命提升越有帮助。
写入放大是怎么来的?
我们来了解下硬盘的读写机制,首先来看下闪存构成如下:
页page(4K)
块block(由64/128个page组成一个block)
面plane(多个block组成)
die(一个或多个plane组成一个die)
闪存片(多个die组成)
SSD(多颗闪存片组成)
一个块block是由128个页page组成
一个页page是大小是4KB
一个面Plane由1024个块block组成
由于固态硬盘无法像机械硬盘那样实现物理性的数据覆盖(新数据直接覆盖旧数据/无用数据),只能擦除后再写入。
闪存工作原理是以page为一个单元写入,擦除只能以block为单位进行。
如擦除一个block(64个page组成),其中32个page为有效数据和32个page被标记“删”的无效数据,那么在这块block重新写入前,需将整块block数据擦除,这时另一半有效数据则需要挪到一个空置的block中,这个过程叫GC垃圾回收技术。
而有效数据原本写入过一次,在这次挪动过程中重新写入,这个过程就是写入放大。
大家买硬盘都会看到一个写入数据量,硬盘的写入数据量用完,说明硬盘的使用寿命也终结。
硬盘的写入放大值使用越高,固态硬盘寿命损耗越高。
既然写入放大影响硬盘的使用寿命,那有哪些方式可以减缓写入放大?
1、 Trim指令也叫disable delete notify(禁用删除通知),Trim发出ATA指令后系统通知那些数据可以安全删除,这个空间标识为可使用,等有新数据写入时执行,这个指令比标记删除快许多,也能减少写入数据量,而且能够保证硬盘的读写速度和提升硬盘使用寿命。
有时硬盘降速的原因之一就是写入数据太多而导致,这个Trim指令能够有效保证硬盘的读写速度。
Trim指令大家电脑系统默认的情况下都是开启的状态。
2、 OP预留空间也能够有效减少写入放大
相信这个页面大家经常看到,可用容量跟标称容量不对等的问题。难道少的容量是被吃了吗?
今天来说下这个容量去哪了
缺少的容量叫OP,全称Over-Provisioning,也叫预留空间。
预留空间一般占总硬盘容量的7%左右,这个容量一方面是由于计算机二进制算法产生的差异(也就是上图的换算),另一方面这个预留空间是厂商在生产硬盘时用于垃圾回收GC、存储SSD主控固件和备用数据块等用处,这个容量在购买的硬盘中看不见也不可修改调整和使用。
为什么要预留空间?这样做有哪些好处?
1、 减少写入放大,也能提高硬盘的耐用性。上面介绍过硬盘写入,需先擦除后再写入。在这个过程中预留空间足够大则从空白的页中进行写入,可以减少擦除次数也能够减少有效数据的再次写入,从而提升硬盘的耐用性。
2、 能够一定程度上保证硬盘的运转性能。举个例子,一个停车场200个停车位,停的车越多,找停车位的时间就越长。预留空间越大,数据写入时做的垃圾回收次数就越少,因为有足够的空间有时不需要做垃圾回收,这样写入速度相对来说较快。
在硬盘使用过程中,为什么劝大家不要把硬盘容量用净?
在我们对硬盘可控的范围内可以留出更多一些的空间,用于缓存。
大家都知道硬盘存储过多或使用时间长,会产生坏块,这时硬盘未使用的空间可以作为坏块映射做替换,留出一个周转空间,这样也能保证硬盘的运行速度,一般留出硬盘总容量的10-20%。
总的来说剩余空间越大,硬盘的运转速度越快,而且硬盘的使用寿命也较长。