当前位置: 首页 > news >正文

【重点】【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正常使用。

随着存储技术的发展,擦写寿命还有提升的空间。

特性SLCMLCeMLCTLCQLC
每单元位数12234
P/E擦写寿命1000003000~1000010000一般≤1000,注意目前据说可提升到3000150~300
每位成本很高中等中等很低
数据安全保持时间10年1年1年1年1年
擦除时间2ms3ms to 4ms6ms10ms>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文件夹&#xff0…...

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&#xff0…...

解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题

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

视觉化洞察:为什么我们需要数据可视化?

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

C语言函数概述——拜佛代码

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

防火墙日志分析工具

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

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合

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

Django系列之日志配置

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

四轴飞行器传感器(SimulinkMatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

学习 使用pandas库 DataFrame 使用

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

C++字符串详解

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

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作为缓存服务&#xff0c;缓存一些业务数据&#xff0c;如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据&#xff0c;缓存在redis里&#xff0c;如实时信号周期相位、周期内过车数量等有需要不同服务…...

C语言每日一练-------Day(9)

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

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数据结构与算法实现&#xff08;目录&#xff09; 答案在此&#xff1a;二叉查找树&#xff08;binary search tree&#xff09;&#xff08;答案&#xff09; 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…...

windows环境装MailHog

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

Ubuntu 22.04.2 LTS 安装python3.6后报错No module named ‘ufw‘

查明原因&#xff1a; vim /usr/sbin/ufw 初步判断是python版本的问题。 # 查看python3软链接 ll /usr/bin/python3 将python3的软链接从python3.6换成之前的3.10&#xff0c;根据自己电脑情况。 可以查看下 /usr/bin 下有什么 我这是python3.10 所以解决办法是 # 移除py…...

Flutter小功能实现-咖啡店

1 导航栏实现 效果图&#xff1a; 1.Package google_nav_bar: ^5.0.6 使用文档&#xff1a; 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 介绍 集合&#xf…...

-9501 MAL系统没有配置或者服务器不是企业版(dm8达梦数据库)

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

云备份——第三方库简单介绍并使用(上)

目录 一&#xff0c;Jsoncpp库序列化和反序列化 二&#xff0c;bundle文件压缩库 2.1 文件压缩 2.2 文件解压 一&#xff0c;Jsoncpp库序列化和反序列化 首先我们需要先了解一下json是什么&#xff0c;json是一种数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来…...

MySQL数据库之索引

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

OpenCV(四):Mat支持的运算

目录 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 2.Mat类支持逻辑与、或、非等逻辑运算&#xff0c; 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 加法&#xff1a;Mat Mat&#xff0c;保存到 resul…...

WebRTC音视频通话-WebRTC推拉流过程中日志log输出

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

用Jmeter压测问题解决

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

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

目录 求字符串长度&#xff1a; 1. strlen(字符串长度) 长度不受限制函数&#xff1a; 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数&#xff1a; 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…...