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

文章目录

  • 一、序
  • 二、机械硬盘和固态硬盘的物理结构与工作原理
    • 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.mzph.cn/news/704056.shtml

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

相关文章

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)

文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码(并对2.2进行优化)2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍,可以去查阅官方文…

[计算机网络]--IP协议

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、IP协议…

202432读书笔记|《泰戈尔的诗》——什么事让你大笑,我生命的小蓓蕾

202432读书笔记|《泰戈尔的诗》——什么事让你大笑,我生命的小蓓蕾 《泰戈尔写给孩子的诗(中英双语版)》作者拉宾德拉纳特泰戈尔文 张王哲图,图文并茂的一本书,文字与图画都很美,相得益彰!很值得…

【Memory协议栈】EEPROM Abstraction模块详细介绍

目录 前言 正文 1.功能简介 2.关键概念 3.功能详解 3.1 Addressing scheme and segmentation 3.2 Address calculation 3.3 Limitation of erase / write cycles 3.4 Handling of “immediate” data 3.5 Managing block consistency information 4.关键API定义 4.…

学习磁盘管理

文章目录 一、磁盘接口类型二、磁盘设备的命名三、fdisk分区四、自动挂载五、扩容swap六、GPT分区七、逻辑卷管理八、磁盘配额九、RAID十、软硬链接 一、磁盘接口类型 IDE、SATA、SCSI、SAS、FC(光纤通道) IDE, 该接口是并口。SATA, 该接口是串口。SCS…

golang学习2,golang开发配置国内镜像

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct

K8S部署Java项目(Gitlab CI/CD自动化部署终极版)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

websocket入门及应用

websocket When to use a HTTP call instead of a WebSocket (or HTTP 2.0) WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 是双向通讯,有状态,客户端一(多)个与服务端一(多&#xff09…

代码随想录刷题第43天

第一题是最后一块石头的重量IIhttps://leetcode.cn/problems/last-stone-weight-ii/,没啥思路,直接上题解了。本题可以看作将一堆石头尽可能分成两份重量相似的石头,于是问题转化为如何合理取石头,使其装满容量为石头总重量一半的…

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑

之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…

Wagtail安装运行并结合内网穿透实现公网访问本地网站界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默&#xf…

C++Lambda表达式介绍

C11中引入了Lambda表达式,Lambda表达式是一种匿名函数,它可以在需要函数的地方直接定义和使用,而无需显式地定义一个函数。 lambda表达式 Lambda表达式语法定义 [capture-list](parameters) -> return-type { statement } capture-lis…

SQL Developer 小贴士:PL/SQL语法分析

对于SQL或PL/SQL中的语法错误和警告,SQL Developer可以用不同颜色的下划波浪线显示。 启用语法分析,可以用菜单Tool>Preferences>Code Editor>Completion Insight>Enable Semantic Analysis Info Tips 例如,以下的代码中&…

blender bvh显示关节名称

导入bvh,菜单选择布局,右边出现属性窗口, 在下图红色框依次点击选中,就可以查看bvh关节名称了。

自考《计算机网络原理》考前冲刺

常考选择填空 1、计算机网络的定义:计算机网络是互连的、自治的计算机的集合。 2、协议的定义:协议是网络通信实体之间在数据交换过程中需要遵循的规则或约定 3、协议的3个要素 (1) 语法:定义实体之间交换信息的格式与结构,或…

设计模式六:策略模式

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

第一次开机开机动画结束后闪白屏

开机动画结束会闪下白屏,再进入launcher 思路 : 分析下从开机动画结束到launcher起来之间的流程步骤 从ZygoteInit.java开始分析 : SystemServer起来后会启动一些核心服务 attachApplication方法中主要创建了Application和Activity 接下里RootActivityC…

快速搭建网站原型!8款网站原型软件推荐

现在,基于云的软件已经逐渐成为主流,网站原型设计工具也不例外。与桌面版本相比,在线原型工具具有独特的优势,无论您使用Linux,Mac 或者Windows,都不需要安装就可以使用这些工具。下面小编就为大家推荐8款非…

c++入门学习⑧——模板

目录 前言 基本介绍 什么是模板? 作用 特点 分类 函数模板 语法 使用方式 注意事项 函数模板和普通函数区别 普通函数和函数模板的调用规则 局限性 类模板 语法 类模板的成员函数创建时机 类模板实例化对象 类模板实例化对象做函数参数 类模板成…

普中51单片机学习(LCD1602)

LCD1602 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔&#…