【重点】【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/ 直接下载,下载后双击运行就可以了,系统可能提示”不信任“…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...