【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素
固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。
固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消费级固态硬盘SSD基本上使用TLC闪存,而今年来QLC正闪亮登场,未来可能在消费级固态硬盘SSD应用有不错的表现。
这里刚好引出一个问题,闪存类型主要有哪些类型,哪些类型的闪存适合用在固态硬盘SSD上?它们对固态硬盘SSD的使用寿命有影响吗?以此为引子,介入谈谈大家都比较关心的固态硬盘SSD的使用寿命问题。
01 闪存类型
NAND闪存类型主要有SLC(单层单元)、MLC(多层单元)、TLC(三层单元)和QLC(立体堆叠多层存储单元)。
- SLC:Single-Level Cell,1bit/cell,充电值有0和1,结构简单,速度快、寿命长,执行效果高,但同容量的价格在上述类型中是最贵的,价格约为MLC的3倍以上。SLC的擦写寿命约10万次。
- MLC:Multi-Level Cell,2bit/cell,即充电值有00、01、10、11四个,显然,MLC比SLC需要稍微多一点的访问时间,用抽屉来形容,SLC有两个抽屉,MLC有四个抽屉。MLC的速度适中,比SLC慢,但比TLC和QLC快,价格当然比SLC便宜不少,擦写寿命约3000~10000次擦写寿命。
- TLC:Trinary-Level Cell,3bit/cell,充电值为111、110、100、101、011、010、001、000。每个单元存放数据比SLC多3倍,比MLC多1/2,而TLC速度比MLC要慢,擦写寿命短(约500-1000次擦写寿命,随着技术的提升,好的TLC擦写寿命据说可以提升到了3000次),优势是价格低。
- QLC:Quad-Level Cell,4bit/cell(每个Cell单元存储4位电荷),共有16种状态,因而QLC单位存储密度更大,达到TLC的2倍存储密度,单颗芯片的容量自然比较高,然而QLC的电压更难控制,其写入速度比TLC更慢,可靠性、稳定性及擦写寿命比TLC也更差。
在SSD产品中,消费级的SSD大多数采用TLC闪存颗粒,在高容量的消费级SSD中开始有采用QLC的。而在工业级的SSD中,采用MLC比较合适。军工级估计可以考虑SLC。
02 固态硬盘SSD的擦写寿命
固态硬盘SSD采用NAND Flash存储数据,由于所述NAND Flash的特性,它们在物理结构上是由一个个的“块”来组成的,每个“块”都有一定的擦除寿命(P/E)。对于不同类型的闪存,其块的擦写寿命是有差别的,SLC擦写寿命>MLC擦写寿命>TLC擦写寿命>QLC擦写寿命。当某个“块”的擦写寿命达到了,这个“块”便损坏了,也就成了我们所说的“坏块”。一般情况下,每个固态硬盘SSD都会预留一定的块用作储备块,即“冗余块”,当出现“坏块”时,主控会将“坏块”屏蔽,而将某个“冗余块”启封来使用,保证固态硬盘SSD正常使用。
随着存储技术的发展,擦写寿命还有提升的空间。
特性 | SLC | MLC | eMLC | TLC | QLC |
每单元位数 | 1 | 2 | 2 | 3 | 4 |
P/E擦写寿命 | 100000 | 3000~10000 | 10000 | 一般≤1000,注意目前据说可提升到3000 | 150~300 |
每位成本 | 很高 | 中等 | 中等 | 低 | 很低 |
数据安全保持时间 | 10年 | 1年 | 1年 | 1年 | 1年 |
擦除时间 | 2ms | 3ms to 4ms | 6ms | 10ms | >10ms |
对于擦写次数P/E,以TLC为例,假设它的擦写次数也就1000次,有人就当心是不是将数据存入并删除这个动作操作1000次,这块SSD就坏了呢?不是这么理解的,要是这么理解,SSD也太容易坏了吧!
对于固态硬盘SSD,读取数据是不影响使用寿命的,而写入才与擦写联系起来,才会影响使用寿命。以128G的采用TLC闪存的固态硬盘SSD,完全写入1000次(按1000次P/E来计算),则这块固态硬盘SSD的写入重量为128*1000GB=128000GB,如果每天都写满128G,那么它的理论使用寿命是2.7年。(完全写入:因为有文件管理系统,负载均衡算法)
固态硬盘理论使用寿命(年)计算公式=(实际容量*P/E次数)/(每天实际写入容量*365)。
事实上,有几个人每天都往一个固态硬盘中写入并擦除这么多数据?一个较大容量的固态硬盘用上5~10年是大概率的事情,不用过于担心擦写寿命。
03 固态硬盘寿命的另外隐形杀手浮出水面
固态硬盘寿命与擦写次数有关,这个无可争议,但也不用过分担心,固态硬盘自身的主控有很多方式可以优化块擦写状况的,这里不作具体介绍,普通消费者也不用了解主控那些复杂的控制原理、方式。
影响固态硬盘的另外隐形杀手是过热和突然断电。
先来说说过热这个问题,由于闪存颗粒的特性,固态硬盘SSD的耐热能力是比不上机械硬盘的,温度过高,会引发电子芯片中的电子迁移现象,极大地缩短固态硬盘闪存颗粒的寿命,一点造成过热损伤,在物理结构上来说是不可逆的损伤。固态硬盘SSD在出厂前一般都要进行高低温测试,如70°C~75°C的高温测试。
突然断电(包括突然停电、硬关机等)算是一个比较常见的隐形杀手,固态硬盘SSD其实比较怕突然断电,因为固态硬盘是通过电信号擦除写入数据的,频繁的突然断电可能会令数据出现丢失的现象。
如果需要为电脑换装固态硬盘,可以推荐以下品牌的一些固态硬盘,多为TLC固态硬盘。
电脑升级、加装M.2 NVMe PCIe3.0固态硬盘(SSD),选购无忧,提升电脑性能
电脑加装M.2 NVMe PCIe4.0固态硬盘(SSD),升级选购,提升性能无忧
相关文章:

【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素
固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。 固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消…...

数据库约束
文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju目的:保证数据库中数据的正确、有效性和完整性分类: 约束描述关键字非空约束限制该字段不…...

Unity实现MQTT服务器
首先下载MqttNet:MqttNet下载地址 解压好后使用vs打开,并生成.dll文件(我这里下载的是4.1.2.350版本) 然后再/Source/MQTTnet/bin/Debug/net452 文件夹中找到生成的文件 新建unity工程,创建Plugins文件夹࿰…...

Linux(centos) 下 Mysql 环境安装
linux 下进行环境安装相对比较简单,可还是会遇到各种奇奇怪怪的问题,我们来梳理一波 安装 mysql 我们会用到下地址: Mysql 官方文档的地址,可以参考,不要全部使用 https://dev.mysql.com/doc/refman/8.0/en/linux-i…...
决策树(Decision Tree)
决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node࿰…...

解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题
当我们在使用 PaddleClas 进行预训练模型下载时,可能会遇到一个报错,报错信息为 ModuleNotFoundError: No module named ppcls。这个错误通常是因为 Python 解释器无法找到名为 ppcls 的模块,而我们的代码中正尝试导入它。让我们一起来解决这…...

视觉化洞察:为什么我们需要数据可视化?
为什么我们需要数据可视化?这个问题在信息时代变得愈发重要。数据,如今已成为生活的一部分,我们每天都在产生大量的数据,从社交媒体到购物记录,从健康数据到工作表现,数据无处不在。然而,数据本…...

C语言函数概述——拜佛代码
函数是一种可重用的代码块,用于执行特定任务或完成特定功能函数作用:对具备相同逻辑的代码进行封装,提高代码的编写效率,实现对代码的重用函数作用演示代码: #include <stdio.h>// 定义函数 void func() {print…...

防火墙日志分析工具
防火墙提供对进入组织网络的网络流量的来源和类型的可见性,这使得防火墙日志成为重要的信息源,包括所有连接的源地址、目标地址、协议和端口号等详细信息,此信息可以提供对未知安全威胁的见解,是威胁管理中的重要工具。 防火墙日…...

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合
多个类继承同一个接口,如何注入?与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案:(约定大于配…...

Django系列之日志配置
如何配置 settings.py 文件中增加如下日志模块 """logger 配置""" LOGGING {version: 1,disable_existing_loggers: False, # 是否去掉目前项目中其他地方中以及使用的日志功能,但是将来我们可能会引入第三方的模块,里…...

四轴飞行器传感器(SimulinkMatlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

学习 使用pandas库 DataFrame 使用
1 、 数据排序 sort_values()函数 by:要排序的名称或名称列表, sorted_df df.sort_values(byAge,ascendingFalse) 由大到小排序; sorted_df df.sort_values(byAge) 由小到大排序; # 创建一个示例数据帧 data {Name: [Tom, Nick, John…...

C++字符串详解
C 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。 string 是 C 中常用的一个类,它非常重要,我们…...

vant2 van-calendar组件增加清除按钮和确定按钮
利用自定义插槽增加一个清除按钮 <van-calendar ref"fTime1" select"selectTimePicker" confirm"changeTimePicker" :default-date"null" :show-confirm"false" v-model"timePickerShow" type"range&quo…...

Spring redis使用报错Read timed out排查解决
文章目录 使用场景报错信息解决方式 使用场景 我们使用redis作为缓存服务,缓存一些业务数据,如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据,缓存在redis里,如实时信号周期相位、周期内过车数量等有需要不同服务…...

C语言每日一练-------Day(9)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:字符个数统计 多数元素 投票法 💓博主csdn个人主页…...

SpringCloud(十)——ElasticSearch简单了解(三)数据聚合和自动补全
文章目录 1. 数据聚合1.1 聚合介绍1.2 Bucket 聚合1.3 Metrics 聚合1.4 使用 RestClient 进行聚合 2. 自动补全2.1 安装补全包2.2 自定义分词器2.3 自动补全查询2.4 拼音自动补全查询2.5 RestClient 实现自动补全2.5.1 建立索引2.5.2 修改数据定义2.5.3 补全查询2.5.4 解析结果…...

二叉查找树(binary search tree)(难度7)
C数据结构与算法实现(目录) 答案在此:二叉查找树(binary search tree)(答案) 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…...

windows环境装MailHog
背景:win10系统,windows 宝塔,laravel 项目,邮件相关需要装一个MailHog 下载地址:https://sourceforge.net/projects/mailhog.mirror/ 直接下载,下载后双击运行就可以了,系统可能提示”不信任“…...

Ubuntu 22.04.2 LTS 安装python3.6后报错No module named ‘ufw‘
查明原因: vim /usr/sbin/ufw 初步判断是python版本的问题。 # 查看python3软链接 ll /usr/bin/python3 将python3的软链接从python3.6换成之前的3.10,根据自己电脑情况。 可以查看下 /usr/bin 下有什么 我这是python3.10 所以解决办法是 # 移除py…...

Flutter小功能实现-咖啡店
1 导航栏实现 效果图: 1.Package google_nav_bar: ^5.0.6 使用文档: google_nav_bar | Flutter Package 2.Code //MyBottomNavBar class MyBottomNavBar extends StatelessWidget {void Function(int)? onTabChange;MyBottomNavBar({super.key, …...

JavaSE 集合框架及背后的数据结构
目录 1 介绍2 学习的意义2.1 Java 集合框架的优点及作用2.2 笔试及面试题 3 接口 interfaces3.1 基本关系说明3.2 Collection 常用方法说明3.3 Collection 示例3.4 Map 常用方法说明3.5 Map 示例 4 实现 classes5 Java数据结构知识体系5.1 目标5.2 知识点 1 介绍 集合…...

-9501 MAL系统没有配置或者服务器不是企业版(dm8达梦数据库)
dm8达梦数据库 -9501 MAL系统没有配置或者服务器不是企业版) 环境介绍1 环境检查2 问题原因 环境介绍 搭建主备集群时,遇到报错-9501 MAL系统没有配置或者服务器不是企业版 1 环境检查 检查dmmal.ini配置文件权限正确 dmdba:dinstall,内容正…...

云备份——第三方库简单介绍并使用(上)
目录 一,Jsoncpp库序列化和反序列化 二,bundle文件压缩库 2.1 文件压缩 2.2 文件解压 一,Jsoncpp库序列化和反序列化 首先我们需要先了解一下json是什么,json是一种数据交换格式,采用完全独立于编程语言的文本格式来…...

MySQL数据库之索引
目录 一、索引的概念 二、索引的作用 三、索引的副作用 四、创建索引的规则 1、适合创建为索引的字段的规则 2、MySQL的优化 哪些字段/场景适合创建索引,哪些不适合 五、索引的分类和创建 1、索引的分类 2、三种创建方式 3、索引的创建演示 1、创建普通索…...

OpenCV(四):Mat支持的运算
目录 1.对两个 Mat 对象按元素进行运算,有加法、减法、乘法和除法等运算。 2.Mat类支持逻辑与、或、非等逻辑运算, 1.对两个 Mat 对象按元素进行运算,有加法、减法、乘法和除法等运算。 加法:Mat Mat,保存到 resul…...

WebRTC音视频通话-WebRTC推拉流过程中日志log输出
WebRTC音视频通话-WebRTC推拉流过程中日志log输出 之前实现iOS端调用ossrs服务实现推拉流流程。 推流:https://blog.csdn.net/gloryFlow/article/details/132262724 拉流:https://blog.csdn.net/gloryFlow/article/details/132417602 在推拉流过程中的…...

用Jmeter压测问题解决
最近做一个基于duboo服务的接口,需要进行稳定性测试。但是用Jmeter GUI 方式跑只能持续2个小时左右,Jmeter就崩溃了,日志报错:out of memory 解决方法如下: 直接运行jmeter的java包试试: 1、打开jmeter.…...

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)
目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…...