主机写入量,指的是主机要求SSD保存的数据
对NAND写入量,指的是SSD实际操作过程之中对其NAND的实际写入量
二者不同,其原因是:
SSD写数据的机制与传统的机械硬盘不同
SSD的组成层次
(从小到大)
page(4KB)
block(通常64个page组成一个block,有的是128个)
plane(多个blcok组成)
die(plane就是一个die)
闪存片(多个die组成)
SSD(多颗闪存片组成)
写入放大
一个page有三种状态:空;无效数据;有效数据。
向SSD写入数据时,以page为单位,但只能向空的page里写。如果要向存有无效数据的page里写,则需要先进行擦除,将无效数据的page变为空page,再写入。但是擦除数据时,是以block为单位的。
举例:向一个block写入一个page的新数据时,一个block里已经没有空的page了,只有有效数据以及无效数据的page,所以主控就把新数据以及有效数据读到缓存形成一个新的block,再擦除原先的block,再把新block写回去。这个操作带来的写入放大就是: 实际写一个page的4KB的数据,造成了整个block共512KB的写入操作,这就是128倍的西融入放大(WA,Write Amplification)。写入放大造成了SSD实际对NAND的写入量大于主机要求的写入量。
同时,原本仅须一步写入page的操作变成:缓存读取新数据以及有效数据→闪存擦除→缓存写入,造成延迟大大添加,速度变慢。
所以说,写入放大是影响SSD随机写入性能和寿命的关键因素。以100%随机4KB来写入,眼下的大多数SSD主控,在最坏的情况下WA能够达到100以上。假设是100%持续的从低LBA写入到高LBA的话,WA能够做到1,实际使用中写入放大会介于这两者之间。SSD的详细操作过程例如以下:
当一个block里的page只有空、有效数据两种状态时,在写入数据的时候不需要进行擦除,trim就是通知SSD在空闲状态时,将无效数据擦除,以减少SSD在写入数据时需要进行的数据擦除工作。
“NAND bytes written” 和 “host bytes written” 是用于描述存储设备(如 SSD)写入数据量的两个不同指标。它们之间的区别在于:
-
Host Bytes Written(主机写入字节):
- 这是主机系统请求写入到存储设备的数据量。简单来说,就是操作系统或应用程序向存储设备发送的写入命令所涉及的数据量。
- 例如,如果一个文件大小为100MB,并且被写入存储设备,那么主机写入字节数就是100MB。
-
NAND Bytes Written(NAND写入字节):
- 这是实际写入到NAND闪存芯片的数据量。由于SSD的工作机制,实际写入到NAND芯片的数据量通常会大于主机写入的数据量。
- 这主要是因为SSD执行写入放大(Write Amplification),其中包括垃圾回收、磨损均衡等操作,这些操作会导致额外的数据写入。
写入放大效应使得NAND写入字节数通常大于主机写入字节数。写入放大系数(Write Amplification Factor, WAF)可以用来衡量这两者之间的差异,计算公式为:
[ \text{WAF} = \frac{\text{NAND Bytes Written}}{\text{Host Bytes Written}} ]
理解这两个指标有助于评估SSD的寿命和性能,因为NAND闪存的写入次数是有限的,较高的写入放大会加速NAND的磨损。
“NAND bytes written” 和 “host bytes written” 之间的差异主要归因于 SSD 内部的管理机制和数据存储过程中的一些技术细节。以下是几个导致差异的主要原因:
-
写入放大(Write Amplification):
- 由于SSD的特性,数据不能直接在原地修改,必须先擦除再写入。这意味着即使只需要修改少量数据,整个块可能需要重写。
- 垃圾回收(Garbage Collection)过程中,为了腾出空间,SSD可能需要移动和重写数据块,从而增加写入量。
-
磨损均衡(Wear Leveling):
- 为了延长SSD的寿命,SSD控制器会尝试均匀地使用所有存储单元。这可能导致数据从一个物理位置移动到另一个位置,即使主机没有请求写入。
-
元数据管理:
- SSD需要管理自己的文件系统和维护元数据,这些操作会产生额外的写入。
-
压缩和去重:
- 一些SSD具有数据压缩和去重功能。这些功能有时会减少主机写入的字节数,但在解压缩或去重失败的情况下,可能导致更多的实际写入。
-
坏块管理:
- 在SSD的使用过程中,某些存储单元可能会变得不可靠。SSD会自动将数据移到新的、健康的单元上,这也会增加写入量。
这些机制共同作用,导致实际写入到NAND闪存芯片的数据量(NAND bytes written)通常大于主机请求写入的数据量(host bytes written)。写入放大系数(WAF)是衡量这种差异的常用指标。