SSD固态硬盘的黄金原则:抱最高的希望,做最坏的打算-1

随着SSD固态硬盘日益普及,在个人电脑中已成为基本的配置选项。在体验SSD固态硬盘带来的性能优势的同时,你有没有想过一个问题,SSD的数据如果误删除或发生故障丢失,还有没有可能找回来呢?这也许是固态硬盘飞入寻常百姓家后需要面临最深刻的灵魂拷问!

图片

在介绍SSD数据恢复的内容前,我们需要先了解一个SSD文件删除相关的特性“TRIM”。TRIM是SSD的一个特性,目的是让固态硬盘SSD在进行内部GC垃圾回收的时候,避免搬迁已经被OS删除的数据,减少无用的数据的搬迁从而降低写放大,提升SSD固态硬盘的寿命,同时也可以提升盘的有效带宽。

比如在OS不支持TRIM的场景:

  • 第一步:OS层面写了数据文件A,B,C,D,同时SSD的逻辑地址和物理地址也都写入了对应的数据。

  • 第二步:删除了文件C,这个时候OS并没有立即告诉SSD这数据是无效的,特别这个阶段,如果发生GC,依然会搬迁文件C对应原始数据,因为对SSD盘来说,这些还是用户的有效数据

  • 第三步:OS层面写入文件E,覆盖了文件C的原始LBA逻辑地址,直到这个时候,SSD内部才恍然大悟:“啊!原来我之前搬迁的还是无效数据呀,做了无用功,SSD也是欲哭无泪呀!”

图片

作为对比,在OS支持TRIM的场景的工作机理:

  • 第一步:OS层面写了数据文件A,B,C,D,同时SSD的逻辑地址和物理地址也都写入了对应的数据。

  • 第二步:删除了文件C,这个时候OS立即发送了TRIM指令,也就是立即告诉了SSD,这些数据是无效的,不用处理了。这个阶段发生GC垃圾回收,会直接把文件C对应的物理数据直接擦除。

  • 第三步:OS层面写入文件E,覆盖了文件C的原始LBA逻辑地址,物理地址也写入了新的数据。

图片

注意,在OS支持trim的机器上,当你删除文件后,会自动向SSD发送trim,这个过程是自动发生的。

如何确定自己的电脑是否有打开Trim功能呢?以Windows系统为例:

以管理员身份运行cmd界面,并输入“fsutil behavior query DisableDeleteNotify”

  • 如果DisableDeleteNotify返回值是1,则Trim处于关闭状态或者不支持

  • 如果DisableDeleteNotify返回值是0,则Trim处于开启状态

图片

如果要关闭TRIM则执行:fsutil behavior set DisableDeleteNotify 1

图片

到这里,你是不是有所了解了,如果我们想要提升SSD的数据修复的概率,最好是把TRIM功能给关闭掉,不然文件删除后,想再找回真的是难于上青天了。

在了解了TRIM原理以后,我们再总结下固态硬盘常见的故障模式:

与机械硬盘HDD不同,固态硬盘没有机械零件,主要靠电学信号传输,不会出现机械故障。在固态硬盘给大家带来多重优势的同时,固态硬盘相对机械硬盘最大的劣势就是:数据恢复异常艰难,比机械硬盘HDD的数据修复概率低很多。所以,如果你有重要数据,切记一定要备份,最后备份一个SSD,一个HDD,双重保障。

图片

固态硬盘常见的故障模式,主要有以下几种:

  • 温度过高。在固态硬盘长时间大压力读写,或者机器散热不高的情况下,持续高温运行,固态硬盘内部的器件也会加速出现异常或者降速运行,最终导致OS访问硬盘出现异常。

  • 物理损坏。当固态硬盘有跌落或者撞击的影响的时候,也会影响固态硬盘上电子器件的可靠性,出现异常,严重的话,会出现数据丢失。

  • 使用不当。由于盘有固定的寿命期限,如果长时间大压力随机读写,也会加速SSD寿命的消耗。或者出现经常性的意外掉电,导致盘处于长时间的异常环境,也会加速盘的故障。

  • 固件异常:固态硬件的固件Firmware内部包括了SSD的FTL算法,读写逻辑,ECC纠错等算法,非常复杂,出现FWbug的概率也相当高。或者出现盘内部异常,FW出现锁死的情况,导致盘处于只读模式或者无法访问的状态。这种情况,数据的恢复几乎不可能了。

  • 数据损坏:当固态硬盘受到恶意病毒的感染,数据也会出现损坏,恶意破坏数据块的内容,导致无法恢复。

这么多故障的可能,那么固态硬盘SSD的数据修复,到底是否有办法呢?我们这里介绍两种尝试修复的方式,不能保证一定会成功。在你误删除一些文件的时候,可以尝试下,市场也有也有很多的修复软件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Windows 电脑上恢复硬盘数据

虽然硬盘偶尔发出安静的咔哒声无需担心,但响亮、持续的咔哒声(有时称为“死亡咔哒声”)应该认真对待。您应该尽快从发出咔嗒声的硬盘驱动器中恢复数据,因为它会比您想象的更快失效。我们下面的指南将探讨从点击硬盘驱动器获取数据…

【读书】《白帽子讲web安全》个人笔记Ⅱ-1

目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展,人们发现浏览器才是互联网最大的入口,绝大多数用户使用互联…

【python学习】-用matplotlib实现将二维数据绘制为三维图形(三维多线图)并实战(三维散点图)

文章目录 绘制一幅三维线图结合for循环绘制多幅三维线图(在一幅图上)美化图形 绘制一幅三维线图 #将二维数据绘制三维图(三维多线图) import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import axes3d import numpy as…

STM32F4xx之库函数

一、库函数介绍 库函数与寄存器的区别 库函数:不需要自己写很多代码,可以利用软件生成代码。使用的时候必须添加库文件。库文件是芯片厂商写好了。占用空间大。 寄存器:自己写的代码量大,没有软件生成代码。使用的时候不需要库文件…

QT c++和qml交互实例

文章目录 一、demo效果图二、c和qml交互的基本方式1、qml访问C类对象 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQuickTopRect.qmlMainQuickMiddleRect.qmlMainQuickMiddleTableRect.q…

@Async正确使用姿势

Async注解可以使被修饰的方法成为异步方法,简单且方便,这篇文章将教你如何正确的使用它 先谈谈大多数人对Aysnc的认识: 如果直接使用Async,未指定线程池 并且 容器内也没有beanName为taskExecutor的bean,则会使…

im6ull学习总结(三-3)freetype

1、Freetype简介 FreeType是一个开源的字体渲染引擎,主要用于将字体文件转换为位图或矢量图形,并在屏幕上渲染出高质量的字体。它提供了一组API,使开发者能够在自己的应用程序中使用和呈现字体。 FreeType最初是作为一个独立项目开发的&…

欢乐钓鱼^^

欢迎来到程序小院 欢乐钓鱼 玩法&#xff1a;点击鼠标左键左右晃动的鱼钩&#xff0c;下方左右移动的鱼对准鱼的方向即可进行钓鱼&#xff0c; 不同的鱼不同的分数&#xff0c;快去钓鱼吧^^开始游戏https://www.ormcc.com/play/gameStart/241 html <div id"gamediv&qu…

(leetcode)替换所有的问号 -- 模拟算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 string modifyString(string s) 输入一个字符串&#xff0c;字符串中仅包含小写字母和 ‘?’ 字符。 输出描述 将问号替换为小写字母&#xff0c;且这个替…

数据结构期末复习

章节知识点分析 第一章绪论 基本概念 数据 数据元素&#xff08;记录、表目&#xff0c;是数据集合中一个个体&#xff09; 数据项&#xff1a;一个数据元素可由若干数据项组成 数据对象&#xff1a;性质相同的数据元素的集合&#xff0c;是数据的一个子集 数据结构&…

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…

MiniCom串口调试工具使用

一、程序安装 执行下面代码&#xff0c;安装minicom。 sudo apt-get install minicom 二、查看串口设备名称 先拔掉串口运行下面指令&#xff0c;获得所有设备名称,插上串口再运行一次&#xff0c;新增的就是串口设备名称&#xff0c;记住串口设备名称&#xff0c;以串口设备名…

LeetCode-整数反转(7)

题目描述&#xff1a; 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231&#xff0c;231− 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff0…

[4K80 AI ISP IPC芯片]

4K80 AI ISP IPC芯片 Hi3403V100是一颗面向监控市场推出的专业 Ultra-HD Smart IP Camera SOC&#xff0c;该芯片最高支持四路sensor输入&#xff0c;支持最高4K60的ISP图像处理能力&#xff0c;支持3F WDR加粗样式、多级降噪、六轴防抖、硬件拼接等多种图像增强和处理算法&am…

C++多态性——(5)运算符重载(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 身先才能率人&#xff0c;律己才能服人…

【SpringBoot】公共字段自动填充功能实现(枚举、自定义注解、AOP、反射)

1. 自定义注解 使用interface语法来定义注解&#xff08;Annotation&#xff09;。 注解的参数类似无参数方法&#xff0c;可以用default设定一个默认值&#xff0c;比如String value() default "";。 元注解&#xff1a;有一些注解可以修饰其他注解&#xff0c;这…

基础面试题整理2

1.抽象类与接口区别 语法&#xff1a; 抽象类用abstract定义&#xff1b;接口用interface定义抽象类被子类继承extends&#xff08;不可用final修饰&#xff09;&#xff1b;接口被类实现implements抽象类的属性访问无限制,方法不可用private修饰&#xff1b;接口中的方法只能…

【STM32】STM32学习笔记-DMA数据转运+AD多通道(24)

00. 目录 文章目录 00. 目录01. DMA简介02. DMA相关API2.1 DMA_Init2.2 DMA_InitTypeDef2.3 DMA_Cmd2.4 DMA_SetCurrDataCounter2.5 DMA_GetFlagStatus2.6 DMA_ClearFlag 03. DMA数据单通道接线图04. DMA数据单通道示例05. DMA数据多通道接线图06. DMA数据多通道示例一07. DMA数…

计算机网络(2)

计算机网络&#xff08;2&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;2&#xff09;分组交换网中的时延、丢包和吞吐量时延丢包吞吐量总结 协议层次及其服务模型模型类型OSI模型分析TCP/IP模型分析 追溯历史 小程一言 我…

数据结构——堆排序

什么是堆排序 堆排序就是利用堆&#xff08;假设利用大堆&#xff09;进行排序的算法。他的基本思想是&#xff0c;将待排序的序列构造成一个大顶堆。此时&#xff0c;整个序列的最大值就是堆顶的根节点。将他移走&#xff08;其实就是将其与堆数组的末尾元素交换&#xff0c;…