【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

news2024/11/19 3:17:35

文章目录

  • 一、序
  • 二、机械硬盘和固态硬盘的物理结构与工作原理
    • 2.1 机械硬盘
      • 2.11 基本结构
      • 2.12 工作原理
    • 2.2 固态硬盘
      • 2.21 基本结构
      • 2.22 工作原理
  • 三、机械硬盘和固态硬盘的垃圾回收机制
    • 3.1 机械硬盘GC
    • 3.2 固态硬盘GC
    • 3.3 TRIM指令开启和关闭
  • 四、做好数据备份

一、序

周末电脑突然关机,开机进入UEFI,发现启动项全部丢失(我有2快固态硬盘,分别安装了win11和Ubuntu22.04)。

原因猜测:固态可能有所损坏;平时有一些非正常关机(独显直连的情况下有时候不手动息屏,自动息屏后无法唤醒屏幕,一直黑屏,只能重启);其它。

由于Ubuntu安装简单,没有什么资料,于是我重新安装了Ubuntu(我有一个ventory启动盘,里面放了几个镜像,装系统很方便),想通过Ubuntu修复Windows引导,用了一些软件(比如什么testdisk),发现win11那块固态的分区丢失了,整个硬盘表现为没有分区的状态(这种原因相比应该是固态损坏导致分区表丢失了)。

在Ubuntu上用testdisk对这块硬盘进行修复,可以检测到丢失分区,但是只能恢复EFI分区,这肯定是无法正常启动Windows的。

于是我又使用Windows PE进行修复(我去无忧下载了几个PE的ISO,直接放在ventory里面启动的),使用DiskGenius恢复了硬盘的分区。

再次启动Windows,又报错0e,01,0f等错误。修复了半天,没搞好,遂使用华硕UEFI里面的云端还原功能来还原系统。

结果,它还原的时候把我电脑所有的硬盘都格式化了,还没提示😤😤,还是第一次遇到(通常只会格式化安装系统的硬盘)。


接着就是想着恢复数据了,以前使用的是机械硬盘,使用DiskGenius就可以恢复数据,这次发现不行。又使用了Disk DrillRecuva等等(国产软件不用想)。

均无果,拿winhex软件看了一下硬盘,发现硬盘数据全变0,无法恢复。

winhex:是一款功能强大的磁盘编辑和数据恢复工具。可以用来磁盘编辑和数据恢复、磁盘和文件分析、数据处理和编辑、安全和取证。实用用途举例:你要出售一块机械硬盘,它是比较容易恢复删除、格式化之前的数据的,你可以使用winhex进行多次清理。

现在民间最好数据恢复工具应该是PC3000吧(价格好几万,不是很了解,国内好像有chao板的),由俄罗斯的 ACE Laboratory 公司开发。它包括专业硬件和专用软件,可以直接和硬盘的控制器通信。

在这里插入图片描述

但是问了淘宝商家,固态硬盘格式化后也无法借此恢复(能的话,我的数据也不值恢复的费用)。

所以本文就做知识记录与分享吧。

二、机械硬盘和固态硬盘的物理结构与工作原理

2.1 机械硬盘

2.11 基本结构

HDD 是一种使用旋转磁盘(盘片)的存储设备,它利用磁性材料在盘片表面上创建磁场,以存储和读取数据。

其主要部件包括:

  • 盘片(Platter):通常是由铝合金、陶瓷或玻璃制成的圆形盘片,数据存储在其表面上。
  • 磁头(Read/Write Head):位于磁盘上方或下方的读写头部件,负责在盘片上读取和写入数据。
  • 马达:用于旋转盘片的电动马达,使盘片以高速旋转。
  • 传动臂(Actuator Arm):带有磁头的传动臂,负责在盘片上移动,定位到正确的磁道读取或写入数据。

在这里插入图片描述

体积大、读写慢、数据不易丢失(硬件损坏也能较大程度恢复数据)。

2.12 工作原理

磁场表示数据:

  • 磁性材料被分成许多微小的区域,每个区域称为一个位(Bit)。
  • 当磁头写入数据时,它会改变盘片表面上每个位的磁性状态,即改变磁场的方向。
    • 如果磁场朝向上,表示二进制 1;
    • 如果磁场朝向下,表示二进制 0。

数据读取:

  • 当计算机需要读取数据时,控制器发送指令给磁头。
  • 传动臂定位磁头到正确的磁道,并旋转盘片找到数据所在的扇区。
  • 磁头测量磁场变化,将数据转换为电信号,传输给计算机进行处理。

数据写入:

  • 计算机将要写入的数据转换为磁场变化。
  • 磁头定位到目标位置,将数据的磁场模式写入盘片表面。

旋转速度:

  • 机械硬盘的性能受到旋转速度的影响。通常以每分钟转数(RPM)来衡量,常见的速度为 5400 RPM、7200 RPM,甚至更高。

2.2 固态硬盘

2.21 基本结构

固态硬盘是一种使用闪存存储数据的硬盘,其主要部件包括:

  • 存储芯片(NAND Flash Chips):由多个存储单元组成的芯片,用于存储数据。
  • 控制器(Controller):管理芯片、数据传输和读写操作的主要部件。
  • DRAM 缓存:用于临时存储数据和加速访问的缓存器件。

在这里插入图片描述

NAND 闪存的基本组成:

  • 晶体管:NAND 闪存中的存储单元是由晶体管构成的,每个存储单元包含一个或多个晶体管。
  • 控制门(Control Gate):晶体管中有一个控制门,用于控制存储单元是否写入电荷
  • 浮动栅(Floating Gate):控制门和晶体管之间有一个浮动栅,用于存储电荷。当存储单元需要写入数据时,电荷会被注入到浮动栅中。
    -在这里插入图片描述

SSD体积小,速度快,数据不易恢复。

2.22 工作原理

SSD和HDD原理不同,简单来说一个是利用磁场一个是利用电场。

写入数据:

  • 当需要写入数据时,控制器会向特定的存储单元发送写入信号。
  • 存储单元中的控制门会打开,允许电荷通过,并存储到浮动栅中。
  • 通过在浮动栅中存储电荷的数量和状态来表示数据的位,通常是高电荷表示1,低电荷或无电荷表示0。

擦除数据:

  • SSD 中的存储单元不能直接覆盖写入数据,因此在需要擦除数据时,需要将存储单元中的浮动栅的电荷状态清除为初始状态。
  • 擦除操作会将浮动栅中的电荷全部释放,将存储单元恢复为无电荷状态。

读取数据:

  • 当需要读取数据时,控制器会向特定的存储单元发送读取信号。
  • 存储单元中的电荷状态会影响到控制门的电流流动,通过检测电流的大小来判断存储单元中的电荷状态。
  • 这样就实现了读取操作,读取数据的过程不会改变存储单元中的电荷状态。

三、机械硬盘和固态硬盘的垃圾回收机制

机械硬盘(HDD)和固态硬盘(SSD)在垃圾回收(GC)(Garbage Collection)机制上有显著的区别,因为它们的存储技术不同。

3.1 机械硬盘GC

机械硬盘(HDD)没有明确的垃圾回收机制。

  1. 机械硬盘通常不涉及垃圾回收的概念,因为数据的存储是基于磁场的,而不是像固态硬盘那样基于电场。
  2. 覆盖写入:
    • 当文件被删除时,操作系统只是将其标记为可用空间,而不会立即擦除原始数据。
    • 新的数据可能会覆盖已删除的数据,使其不再可访问,但实际的数据擦除不会立即发生。
  3. 数据恢复:
    • 由于机械硬盘不涉及垃圾回收,删除的文件仍然可能在磁盘上存在,只是不再被操作系统所识别。
    • 数据恢复工具可以通过扫描磁盘表面来找回已删除的数据,即使被覆盖也有可能部分或完全恢复。

3.2 固态硬盘GC

  1. 擦除操作的限制:

    • 固态硬盘中的 NAND 闪存存储单元需要在写入新数据之前进行擦除操作
    • 由于 NAND 闪存的特性,无法直接在单个存储单元上执行擦除操作(将存储单元中的浮动栅的电荷全部释放,将其恢复为初始状态,即无电荷或低电荷状态。),而是需要对整个块(Block)进行擦除,这可能涉及多个存储单元。
    • 擦除会减少SSD寿命,尤其是全盘格式化。
  2. 垃圾回收策略:

    • 固态硬盘通常具有内置的垃圾回收策略,以确保可用空间的最大化和数据写入性能的最优化。
    • 当文件被删除时,固态硬盘可能不会立即擦除相应的存储单元,而是将其标记为垃圾数据
    • 垃圾回收器定期执行擦除操作,将标记为垃圾的存储单元擦除为可用状态,以便存储新的数据。
  3. 写入放大问题:

    • 垃圾回收操作可能导致写入放大(Write Amplification)问题,即实际写入到 NAND 闪存中的数据量可能大于应用程序实际写入的数据量。
    • 写入放大效应的原因:SSD写入前需要确保该存储单元是无电荷状态,但擦除要以Block为单位,写于少量数据却可能擦除较大区域;NAND flash的性能维护问题。
    • 写入放大可能会影响固态硬盘的性能和寿命。
  4. TRIM命令

    • 操作系统可以通过发送 TRIM 命令来通知固态硬盘已删除的数据块,以加速垃圾回收过程
    • TRIM 命令告诉固态硬盘哪些存储单元不再被使用,并在空闲时间进行擦除立即擦除的说法时不准确的)。
    • 没有 TRIM 支持时,固态硬盘可能需要在写入新数据才先擦除旧数据,这会降低写入速度。

比较2和4,可知:固态硬盘开启TRIM指令后,删除的数据会在较短时间内被擦除,不开启TRIM时短时间内则有机会恢复删除的数据(没有写新数据)。擦除操作会在短时间内进行,但并不是马上进行,这还与操作系统、GC算法、SSD控制器设计等有关。但无论如何,都比不开启TRIM指令时的写数据时擦除快。

3.3 TRIM指令开启和关闭

win7及其之后的系统支持TRIM指令。

Windows查看状态:

fsutil behavior query DisableDeleteNotify

在这里插入图片描述

开启和关闭用管理员身份运行命令。

开启TRIM:

fsutil behavior set DisableDeleteNotify 0

关闭TRIM(不建议):

fsutil behavior set DisableDeleteNotify 1

TRIM指令开启和关闭状态下文件恢复测试:

拿一个Samsung的256G固态来做测试。

原来的文件:
在这里插入图片描述

先关闭TRIM指令,并格式化硬盘。

在这里插入图片描述
在这里插入图片描述

使用winhex可以看到底层数据并没有被删除(注意winhex应该使用管理员身份运行,选项-常规设置里面第一个):

在这里插入图片描述
这表明,不开启TRIM指令时,SSD不会马上进行GC,数据是可以恢复的。

现在使用winhex或者其他任何数据恢复软件都可以恢复的。

比如:
在这里插入图片描述

浪费时间,我就不恢复了,注意恢复的文件应该保存到其他硬盘,避免恢复的文件覆盖未恢复的文件。


现在开启TRIM指令,随便复制个文件到硬盘,再格式化。
在这里插入图片描述

数据完全擦除。


注意,开启TRIM指令,也有可能在短时间内成功恢复数据。因为它是在“合适的时间”擦除,可能几秒,也可能是几分钟后。

开启TRIM时,SSD的文件删除、快速格式化、慢格式化,都会在较短时间内擦除相应的存储单元。

四、做好数据备份

我通常会将编程项目push到GitHub,编辑文档也会开启云端同步。所以这次SSD被意外格式化,损失不大,不过可惜了好多好看的视频😊.

可以单独拿一个机械硬盘做备份,定期做好备份,备份可能遇到一些情况,比如主机要备份的文件时常增减,需要移动硬盘与之同步(或者进行历史多版本备份),可以借助一些软件来实现这种同步,比如:

  • FreeFileSync:这是一个开源免费的文件夹和文件同步工具,具有直观的用户界面和强大的功能。它支持双向同步、增量备份、过滤器等功能,可以满足各种同步需求。

  • SyncToy:这是由微软开发的免费文件同步工具(不过官网下架了,可以去第三方下载),适用于Windows系统。它可以帮助用户在不同位置的文件夹之间同步文件,并提供了多种同步模式,包括复制、更新、合并等。

  • rsync:对于Linux和macOS用户,rsync是一个非常强大的命令行工具,可以实现本地和远程文件夹之间的同步。它支持增量同步、压缩传输等功能。虽然是命令行工具,但具有丰富的选项和灵活性。在终端中输入
    man rsync 可以查看其详细用法和选项。

  • GoodSync:这是一个跨平台的同步工具,支持Windows、macOS、Linux以及移动设备等多种平台。它提供了实时同步、备份、文件版本控制等功能,同时具有直观的界面和强大的配置选项。

重要存储使用RAID:

  1. RAID 0:数据被分割成多个块,并且在多个硬盘上同时写入,以提高性能。RAID 0没有冗余,因此不提供数据容错能力。
  2. RAID 1:数据在两个硬盘上完全镜像备份,提供冗余以增强数据的可靠性。RAID 1的容量等于单个硬盘的容量。
  3. RAID 5:数据被划分成多个块,并且每个块及其校验信息被分布式地存储在所有硬盘上,以提高性能和容错能力。RAID 5至少需要三块硬盘,并且可以容忍一块硬盘的故障。
  4. RAID 6:类似于RAID 5,但提供更高的容错能力。RAID 6至少需要四块硬盘,并且可以容忍两块硬盘的故障。
  5. RAID 10:也称为RAID 1+0,是RAID 1和RAID 0的组合。数据被分割并复制到多个硬盘上,以提高性能和容错能力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬某网站延禧宫率第一集视频

import requests import re from tqdm import tqdm # 网址链接:https://v.ijujitv.cc/play/24291-1-1.html url https://v6.1080pzy.co/20220801/urxniJCN/hls/index.m3u8 headers {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Appl…

【Golang切片】

切片 切片的引入内存分析切片的定义切片的遍历切片注意事项 切片的引入 【1】切片(slice)是golang中一种特有的数据类型 【2】数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在Go语言的代码…

第六十八天 APP攻防-XposedFridaHook证书校验反代理代理转发

第68天 APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发 知识点: 1、APP防代理绕过-应用&转发 2、APP证书校验类型-单向&双向 3、APP证书校验绕过-Frida&XP框架等 章节点: 1、信息收集-应用&资产提取&权…

游戏 CP 专访| InOutPath 技术干货分享!

“ 编辑语:STEAM 上的 3D 解密游戏《InOutPath》以其清新的画面,独特的玩法,受到了广大 STEAM 玩家,以及 Cocos 开发者们的关注。今天有幸邀请到了这款游戏的开发商,为大家做一次技术分享。希望能够对在用 Cocos Creat…

嵌入式中逻辑分析仪基本操作方法

前期准备 1.一块能触摸的屏对应的主板机 2.逻辑分析仪对应的软件工具 3.对应的拓展板 4.确定拓展板的引脚分布情况 第一步:逻辑分析仪j基本操作 1.数据捕捉需要先进行对应软件安装,并按照需求进行配置 2.这里以A20为例:此手机使用显示驱动芯片CST148,触摸屏分辨…

SImpAl

output matrix M,Curriculum using w ( x t , f , h ) w(x_t, f, h) w(xt​,f,h) 辅助信息 作者未提供代码

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

STM32控制数码管从0显示到99

首先 先画电路图吧!打开proteus,导入相关器件,绘制电路图。如下:(记得要保存啊!发现模拟一遍程序就自动退出了,有bug,我是解决不了,所以就是要及时保存,自己重…

设计模式(七)装饰模式

相关文章设计模式系列 1.装饰模式简介 装饰模式介绍 装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象…

使用ClickHouse进行SQL动态列选择

本文字数:4073;估计阅读时间:11 分钟 作者:Mark Needham 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 在处理包含大量列的数据集时,我们通常希望在其中的一部分列上做聚合…

模型评估方式

文章目录 一、有监督-分类模型1、混淆矩阵2、分类模型的精度和召回率3、ROC曲线与AUC 二、有监督-回归模型1、均方误差MSE2、 R 2 R^2 R2决定系数3、回归模型代码示例 三、无监督模型1、kmeans求解最优k值的方法:轮廓系数、肘部法2、GMM的最优组件个数:A…

基于springboot的新闻资讯系统的设计与实现

**🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅**一 、设计说明 1.1 课题背景…

JavaAPI常用类03

目录 java.lang.Math Math类 代码 运行 Random类 代码 运行 Date类/Calendar类/ SimpleDateFormat类 Date类 代码 运行 Calendar类 代码 运行 SimpleDateFormat类 代码一 运行 常用的转换符 代码二 运行 java.math BigInteger 代码 运行 BigDecimal …

防御保护----内容安全

八.内容安全--------------------------。 IAE引擎: IAE引擎里面的技术:DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包(数据包分片,分段需要重组),之后对 数据包的内容进行…

设计模式六:策略模式

1、策略模式 策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。 策略模式的角色: 策略接口角色IStrategy:用来约束一系列具体…

Qt QWiget 实现简约美观的加载动画 第三季

&#x1f603; 第三季来啦 &#x1f603; 这是最终效果: 只有三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #include <QGridLayout> int main(int argc, char *argv[]…

架构设计:流式处理与实时计算

引言 随着大数据技术的不断发展&#xff0c;流式处理和实时计算在各行各业中变得越来越重要。那么什么是流式处理呢&#xff1f;我们又该怎么使用它&#xff1f;流式处理允许我们对数据流进行实时分析和处理&#xff0c;而实时计算则使我们能够以低延迟和高吞吐量处理数据。本…

axure9.0 工具使用思考

原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】…

linux中查找进程cpu使用率高的原因

查询哪些进程/线程cpu使用率高 使用 top 命令&#xff1a; 在终端中运行 top 命令&#xff0c;它会实时显示系统中正在运行的进程和线程&#xff0c;并按照 CPU 使用率进行排序。你可以按 Shift P 键按照 CPU 使用率对进程进行排序&#xff0c;或者按 Shift T 键按照线程进…

nginx基础模块配置详解

目录 一、Nginx相关配置 1、nginx配置文件 2、nginx模块 二、nginx全局配置 1、关闭版本或修改版本 1.1 关闭版本 1.2 修改版本 2、修改nginx启动的子进程数 3、cpu与worker进程绑定 4、PID路径 5、nginx进程的优先级 6、调试worker进程打开文件的个数 7、nginx服…