固态硬盘SSD使用年限有多远?

故事前传

在深邃的夜空下,星星像闪烁的灯光,点缀在无边的宇宙中。就在这充满神秘的夜空背景下,一个热爱探索未知的电脑爱好者,小张,对他的电脑世界充满了无尽的好奇。

小张的电脑就像他的朋友,陪他度过了一个又一个日夜。其中,一块SSD硬盘更是他珍贵的宝贝,因为这里面装载了他多年的心血,大量的照片、视频、设计文件,还有那些无数个日夜他与朋友们在虚拟世界中的冒险。

然而,最近小张发现他的SSD寿命即将到期。他开始担心,如果SSD寿命到了,他的数据是否会消失?他是否需要购买新的硬盘?他的数据是否还能恢复?一连串的问题让他感到困扰。

我们这篇文章就来解答下小张同学疑问

SSD的存储介质是什么,它就是NAND闪存。那你知道NAND闪存是怎么工作的吗?其实,它就是由很多个晶体管组成的。这些晶体管里面存储着电荷,代表着我们的二进制数据,要么是“0”,要么是“1”。NAND闪存原理上是一个CMOS管,有两个栅极,一个是控制栅极(Control Gate), 一个是浮栅(Floating Gate). 浮栅的作用就是存储电荷,而浮栅与沟道之间的氧化层(Oxide Layer)的好坏决定着浮栅存储电荷的可靠性,也就是NAND闪存的寿命。

但是呢,这些晶体管的电荷可不是永久存在的。它们就像一群顽皮的孩子,喜欢跑来跑去。如果你经常让它们进行“擦除”和“写入”的操作(NAND闪存中,P/E Cycle,也称为擦除次数),它们就会觉得累,电荷的存储能力也会逐渐下降(浮栅与沟道之间的氧化层被磨损的越来越严重,导致浮栅中电子的控制越来越艰难)。直到有一天,它们再也不想存储电荷了,那这个时候,你的SSD的寿命也就差不多了。

所以呢,SSD寿命评估的底层机理,其实就是计算NAND闪存的擦除和写入次数(P/E Cycle)。每个晶体管都有一个固定的擦除和写入次数,就像我们的腿一样,跑多了会累,会磨损。当这些晶体管达到一定的磨损程度时,它们就再也存储不了电荷了,这时候你的SSD可就要退休了哦!

目前市面上主要流通的就是4种NAND类型:SLC、MLC、TLC、QLC。随着每个寿命从高到低依次是SLC>MLC>TLC>QLC.

随着单个cell含有的bit数越多,NAND的可靠性也会有所降低。同时写延迟也在不断的增加。SLC写延迟在0.5ms级别,到QLC写延迟达到10-20ms,40倍的差距。

SSD寿命评估的指标主要包括两个:DWPD(Drive Writes Per Day)和TBW(Total Bytes Written)。

DWPD,即每天可以写入SSD的数据量,是衡量SSD寿命的重要指标之一。一般来说,DWPD越大,SSD的寿命越长。DWPD的计算公式为:

DWPD = (闪存P/E周期×SSD容量) ÷ 年写入数据量

其中,闪存P/E周期是NAND闪存的基本存储单元(浮栅晶体管)可进行擦除和编程的次数,这个值取决于NAND闪存的规格和制造商的规定。SSD容量表示其存储空间大小。年写入数据量则取决于用户的使用情况。

另一个评估指标是TBW,即SSD在寿命周期内可以承受的总写入数据量。TBW的计算公式为:

TBW = (每扇区可编程次数×SSD总扇区数×每天写入次数) ÷ 每扇区可编程次数

其中,每扇区可编程次数是指每个存储块(Block)可进行的编程次数,这个值取决于NAND闪存的规格和制造商的规定。SSD总扇区数表示其内部存储结构中的总扇区数。每天写入次数则根据用户使用情况而定。

DWPD和TBW都是用来衡量SSD寿命的指标,DWPD更关注每天的使用频率,而TBW则关注硬盘的总写入能力。一般来说,DWPD越大,TBW越大,SSD的寿命也越长。然而,这些指标只是评估SSD寿命的参考值,实际使用寿命还受到其他因素的影响,如工作负载、环境温度、SSD的写入策略等。

如何查看SSD寿命?

windows下获取寿命的方式:使用CrystalDiskinfo

linux获取盘SSD的smart的方式:其中“percentage_used”就是nvme协议规定的已使用的寿命比例。

nvme smart-log /dev/nvme0n1

Smart Log for NVMe device '/dev/nvme0n1'  
critical_warning : 0  
temperature : 48 [Celsius]  
available_spare : 100%  
available_spare_threshold : 10%  
percentage_used : 0%  
data_units_read : 1,665,234 [GB]  
data_units_written : 463,676 [GB]  
host_read_commands : 2,611,299,337  
host_write_commands : 1,166,374,448  
controller_busy_time : 0 [ms]  
power_cycle_count : 177  
warning_timer_count : 0  
power_off_count : 0  
shutdown_count : 0  
data_units_read_power_cycle_count : 1,190  
data_units_written_power_cycle_count : 942  
data_units_read_warning_timer_count : 0  
data_units_written_warning_timer_count : 0

sata ssd可以使用smartctl -l devstat获取,其中“Percentage Used Endurance Indicator”代表已使用寿命的比例


Device Statistics (GP Log 0x04)
Page Offset Size         Value  Description
   1  =====  =                =  == General Statistics (rev 2) ==
   1  0x008  4                3  Lifetime Power-On Resets
   1  0x010  4                0  Power-on Hours
   1  0x018  6                0  Logical Sectors Written
   1  0x020  6            32768  Number of Write Commands
   1  0x028  6              432  Logical Sectors Read
   1  0x030  6            32780  Number of Read Commands
   4  =====  =                =  == General Errors Statistics (rev 1) ==
   4  0x008  4                0  Number of Reported Uncorrectable Errors
   4  0x010  4                0  Resets Between Cmd Acceptance and Completion
   6  =====  =                =  == Transport Statistics (rev 1) ==
   6  0x008  4                6  Number of Hardware Resets
   6  0x010  4                0  Number of ASR Events
   6  0x018  4                0  Number of Interface CRC Errors
   7  =====  =                =  == Solid State Device Statistics (rev 1) ==
   7  0x008  1                0  Percentage Used Endurance Indicator

当然啦,SSD的寿命还会受到其他因素的影响,比如写入放大、工作环境、工作负载等等。所以呢,我们在评估SSD的寿命时,还要综合考虑这些因素。

其中,要了解些放大,我们需要先了解固态硬盘的读写机制。我们知道,固态硬盘的存储单元是由闪存颗粒组成的,无法实现物理性的数据覆盖,只能擦除然后写入,重复这一过程。因而,我们可以想象得到,在实际读写过程中,数据的读写势必会在闪存颗粒上进行多次的擦除写入,特别是当某些区块已经完全被塞满的情况下。


这些多次的操作,增加的写入数量和原始需要写入的数量的比值,就是所谓的写入放大。所以说,写入放大数值高,会损耗固态硬盘寿命。(固态硬盘闪存颗粒有着额定的P/E值,即最大的读写次数,写入放大高,P/E损耗快,寿命低。)在QLC介质中,WAF的影响更加致命。

举个例子,最坏情况下的,假如我要写入一个4KB的数据Z覆盖A,并恰好目标块没有空余的页区,需要进行GC回收。这个时候就需要把B、C、D、E、F五分数据都搬走,然后擦除整个数据块,擦除完成后再整体写入6个数据页。这个整个过程,Host虽然只写了4KB的数据,但实际过程中,由于GC的问题,NAND最终写入了24KB。那么写放大WAF=24KB/4KB=6.


影响WAF的因素有很多:

  • SSD FTL算法的设计会影响写入放大的大小
  • Wear Leveling,WL磨损均衡:这一机制主要是通过均衡所有的闪存颗粒,从而延长整体的使用寿命,然而依旧是增加整体的写放大
  • Over-Provisioning,OP冗余空间:也会影响NAND写入的比例,最终影响写放大
  • Garbage Collection,GC垃圾回收:比如上面的例子,就是GC垃圾回收搬迁数据,擦除数据块后写入带来了整体写放大提升。
  • 业务读写的数据模型:随机写和顺序写对NAND的写入比例有非常大的影响,直接影响写放大的系数
  • 系统层的TRIM操作:会影响invalid无效数据是否在GC过程中搬迁,对写放大影响也有重要的作用。

写放大WAF是NAND-based SSD寿命消耗的关键参数,WAF越大,寿命消耗越快,越接近1,则寿命消耗越慢,也是最理想的情况。

那么,SSD的寿命到期后,是否可以继续使用?虽然SSD的寿命主要是根据闪存单元的擦写次数预测的,但实际情况并不会完全按照预测发展。即使SSD的寿命到了,它的存储单元可能仍然完好无损,可以继续使用。此外,SSD拥有众多的数据保护机制,当SSD的寿命预计即将到期时,SSD会进入自我保护状态,降低写入量,减缓擦写次数,从而延长使用寿命。因此,即使SSD的寿命到期,用户也可以继续使用它,但是,此时SSD的性能可能会降低,数据可靠性也会受到影响,因此建议及时更换SSD。

猜你喜欢

转载自blog.csdn.net/zhuzongpeng/article/details/132748349