SSD硬盘的数据恢复方法研究 | [PDF全文] |
2. 山东省公安厅,济南 250001;
3. 山东理工职业学院,济宁 272000
2. Public Security Department of Shandong Province, Jinan 250001, China;
3. Shandong Polytechnic College, Jining 272000, China
随着计算机技术和通信技术深入发展以及大数据时代的来临,人们对高速存储的依赖性越来越强。近年来,固态硬盘(Solid State Drives, 简称SSD)是一种由闪存存储器、闪存转换层和控制器组成的块设备[1], 被广泛应用于各个领域,如航空、电力、军事、医疗、导航设备等[2],其作为数据存储的重要介质,近几年迎来了井喷式的发展。2017年,SSD全球出货量高达1.57亿,较2016年增长20%。在此期间,SSD硬盘不论是从存储颗粒的高容量,还是从主控芯片的稳定性和数据读写的高效性,都得到了高速的发展[3]。但是在应用中还是出现了不少SSD硬盘数据无法读写的故障,造成用户数据损坏。因此,SSD硬盘数据损坏后如何恢复,在现实工作中具有重要的研究价值。
1 固态硬盘概述 1.1 组成结构固态硬盘主要由主控芯片、闪存颗粒、缓存芯片、SATA接口芯片构成。
1.1.1 主控芯片主控芯片是整个固态硬盘的核心器件,其作用一是接受系统发出的指令,合理调配数据在各个闪存芯片上的负荷;二是承担整个数据中转,连接闪存芯片和外部SATA接口。
1.1.2 闪存颗粒在固态硬盘里面,闪存颗粒替代机械磁盘成为存储单元。根据NAND闪存中电子单元密度的差异,可以分为SLC(单层次存储单元)、MLC(双层存储单元)以及TLC(三层存储单元),这三种存储单元在寿命以及造价上有着明显的区别[4]。
SLC(单层式存储)为单层电子结构,写入数据时电压变化区间小,寿命长,读写次数在10万次以上;造价高,多用于企业级高端产品。
MLC(多层式存储)使用高低电压构建的双层电子结构,寿命长,价格中等,多用于民用高端产品,读写次数在5 000次左右,相比SLC写入速度和次数减少了,控制芯片采取磨损均衡算法以满足长时间使用的要求[5]。
TLC(三层式存储)是MLC闪存延伸存储密度最高(达3 bit/cell),容量是MLC的1.5倍,造价成本最低,使命寿命也低,读写次数在1 000~2 000次左右。TLC是当下主流厂商首选闪存颗粒。
1.1.3 缓存芯片缓存芯片主要是进行常用文件的随机性读写,以及碎片文件的快速读写。
1.2 工作原理固态硬盘工作原理如图 1所示。Nand Flash表示的是Flash颗粒,SSD控制器通过若干个主控通道并行操作这些Flash颗粒,就像raid0一样,这样可以提高数据写入的并行性及效率。每一个Flash颗粒又进一步细分为多个block(块),每一个block又包含多个page,在SSD内部,SSD控制器和Flash之间的最小访问单元粒度是page。一般一个page的大小为4 k,一个block包括16个page。在写入数据的时候,像raid0的工作机制一样,同时并行地将数据写入到每个Flash颗粒的block中可用的page上,当一个block写满之后会接着写下一个block。
闪存(Flash Memory)本质上是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位, 而且因MOS管的工作原理决定着闪存的写入速度比读取速度要慢一些[6]。
2 SSD硬盘数据恢复的主要思路SSD硬盘数据恢复主要包括逻辑层、固件层、物理层三个方面[7]。
对于逻辑层,由于固态硬盘存在着Trim(禁用删除通知)指令与GC(Garbage Clear,垃圾处理)机制(系统空闲时搜集空块供系统在需要时使用,空块维护是通过建立回收块表的方式进行[8]),因此删除的数据很难恢复出来。当删除了一个数据之后,SSD的主控首先会对删除的数据做一个标记,也就是触发Trim指令,这个指令会告诉固态硬盘删除数据的位置、大小等信息,然后等待SSD主控对该部分数据执行GC机制。执行完这一步,原本存在于SSD中的删除数据就不复存在,这部分的数据已经被GC机制擦除,这种擦除无法进行恢复。由于有些数据在使用过程中可能被误删除,因此不能放任SSD对其进行GC处理,否则无法恢复有用的误删除数据。如何恢复开启了Trim指令与GC机制的SSD的数据恢复,成为了逻辑层数据恢复的关键。
固件层与机械硬盘不同,固态硬盘的固件存储于主控芯片里,而机械硬盘的固件则存在于盘片、电路板等地方。在如何读取固件信息、解析固件结构以及修复损坏的固件等关键性问题上,目前还没有完全的解决方案。
对于物理层,固态硬盘物理的损坏一般包括主控损坏、电路板损坏、存储芯片损坏。对于存储芯片损坏,Flash损坏的数据是无法恢复的。而对于主控损坏和电路板损坏,目前普遍处理方式为拆解Flash芯片,然后通过芯片读取装置对其内部的数据进行读取重组。这种方式不仅耗费物力、财力,而且对技术人员的数据重组技术要求非常高。因此有必要研究,如何不通过芯片读取装置进行数据重组,而直接进行数据的读取、提取。
3 固态硬盘数据恢复方法针对固态硬盘逻辑层、固件层、物理层三方面数据恢复的思路,研究人员开展了一系列的研究与实验,总结出了三种数据恢复方法。
3.1 逻辑层数据恢复对于逻辑层的数据恢复通过实验来进行说明:
实验1:
实验对象:kingston 32 G SSDNOW 100 V固态硬盘,验证支持Trim,开启Trim。
如图 2所示,开启Trim指令,反馈值为0则为开启,反馈值为1则为关闭或者是不支持Trim指令。
通过winhex向硬盘添加文件,先添加每个文件为72 K的小文件,将硬盘剩余内存保持在2 G左右。选择5个小文件作为待删除文件,并记下位置以及头、尾一个扇区的数据,用来验证文件的完整性。添加2个大小为512 MB的大文件,在删除前先记下位置(头部扇区和尾部扇区)以及数据大小,用来验证文件完整性。将两个大文件删除,将5个小文件删除。2 h后,查看原文件所在扇区,发现文件依然存在,推翻了“经过1 h数据基本就不在”的推测。添加一个大小为1 G的大文件,发现该文件所在位置在之前空闲的1 G左右空间里,之前删除的那几个文件则均被GC机制处理了,也就是GC发生在写入的时候。
如图 3所示,在删除数据2 h后,发现Fill_10所在处仍然是完整数据。
如图 4所示,写入1 G大文件后,FiLL_10所在的扇区数据已经乱了,说明GC已经清除该处数据,将清除后的空闲空间转移到了新的空闲空间里。
如图 5所示,1 G大文件所在的位置为之前的空闲空间处。
GC分为“闲置垃圾回收”和“被动垃圾回收”[9]。
闲置垃圾回收是在固态硬盘存取闲置时做垃圾回收操作,这样做的好处是不会占用额外的主控资源,能够让固态硬盘尽可能地保持较高的效能;缺点是会增加额外的写入放大。一般来说,如果有新资料在储存或删除,此机制会自动运作。上文测试的kingston 32 G SSDNOW 100 V,属于实时垃圾回收,因此测试的时候发现GC触发是在数据写入的时候。
被动垃圾回收是在做垃圾回收操作的同时,用户也在进行数据输入/输出动作,这个机制也称为“实时垃圾回收”。由于该机制会大量占用主控资源,会对有数据请求时的“响应时间”产生一定影响。
在固态盘存满以后,全部永久删除(Shift+delete),会发现文件已经被Trim指令标记。写入数据512 MB,发现有4个原来的文件被GC处理,也就是写入以后固态盘主控对数据进行了擦除。说明在硬盘存满的情况下,当删除部分数据再次写入时,电脑会将大于写入部分的数据GC处理,然后拿出一部分来存放写入的数据,剩下的作为空闲内存;如果硬盘没有存满,会将写入的部分存于原来空闲内存,然后将删除的部分GC处理[10]。
实验2:
实验对象:AMD Radeon R3固态硬盘。
对其全部填满数据,然后删除,但只使用Delete,也就是非永久删除。通过winhex更新快照发现,所有的数据全部存在于回收站内。Delete删除单独的某个文件,其删除后的数据依旧还存在于底层中。继续对OCZ ARC100进行测试。同样在存满文件后,直接Delete,然后发现删除数据仍然存在底层,同样和kingston一样只有在写入时才会GC处理,证明了此固态硬盘属于实时垃圾回收。
通过以上实验,可以了解SSD开启了Trim指令下对于删除数据的处理流程。
3.2 物理层数据恢复物理层面故障一般分为两种:主控损坏和电路板损坏。主控损坏,一般要更换电路板型号一致并且主控型号一致的SSD电路板,然后将Flash芯片通过高温吹风将其引脚脱焊,再通过高温吹风将新的电路板对应的Flash芯片吹附到相应的位置,即可进行数据恢复操作。电路板损坏,同样是使用物理替换法进行恢复,把存有数据的Flash芯片更换到完好的新电路板上。对于Flash存储芯片损坏,目前还无法进行数据恢复。
3.3 固件层数据恢复固件层方面的故障,可观察到的最为直观的表现是固态盘不认盘。这种不认盘有型号不认、容量不认或者都不认的情况,需要在进行固件维修之前先让固态硬盘进入特定模式,表现为主控识别,然后短接进入特定模式,对相应的损坏固件进行修复,才能正常恢复数据。也有一些特殊情况,例如如果坏块或者坏点太多,那么尽管做了以上几个步骤仍然不能将其恢复,或者恢复出来的数据大部分无法展示。
4 结论固态硬盘数据恢复主要包括三个方面:1)逻辑层。属于实时垃圾回收机制的硬盘在没有再次写入的情况下可以恢复大量的删除后数据,但是在二次写入的情况下没有办法恢复完整的数据;属于闲时垃圾回收机制的硬盘,文件被删除的初期恢复可能性较大,通电时间过长后,数据会被慢慢清除,无法恢复。2)物理层。只要Flash芯片没有遭到损坏,或者短路损坏,可以通过更换载体来进行恢复。3)固件层。难点在于找到合适的短接点使硬盘可以进入工厂模式。写入资源文件的重要一步就是需要硬盘处于工厂模式,进入工厂模式之后,写入硬盘的资源文件,也就是固件,然后对硬盘的编译器进行重建,可实现数据恢复。
[1] |
YOON J H, NAM E H, SEONG Y J, et al. Chameleon:A high performance flash/FRAM hybrid solid state disk architecture[J]. Computer Architecture Letters (CAL), 2007, 7(1): 17-20. |
[2] |
黄继宽. 固态硬盘掀起储存媒体的革命浪潮[J]. 电子与电脑, 2007(7): 32-33. |
[3] |
盛双艳, 相利辉, 申建国. 硬盘的结构与原理[M]. 北京: 清华大学出版社, 2015.
|
[4] |
张彬. 软硬兼施——硬盘固件维修及数据恢复实战[M]. 北京: 清华大学出版社, 2010.
|
[5] |
陆游游, 舒继武. 闪存存储系统综述[J]. 计算机研究与发展, 2013(1): 49-59. DOI:10.7544/issn1000-1239.2013.20120699 |
[6] |
MANNING C. A flash file system for Embedded use[EB/OL]. (2017-12-20)[2018-01-09] Available at: http://www.yaffs.net.
|
[7] |
胡嘉玺. 固态硬盘火力全开——超高速SSD应用详解与技巧[M]. 北京: 清华大学出版社, 2014.
|
[8] |
韦峰, 卢再奇, 刘伟. YAFFS2在嵌入式系统中的实现[J]. 现代电子技术, 2010(8): 30-34, 37. |
[9] |
郭文武. 硬盘数据恢复及维修[M]. 北京: 国防工业出版社, 2015.
|
[10] |
鲁恩铭. 硬盘格式化数据恢复技术研究与实现[D]. 成都: 四川师范大学, 2009. http://cdmd.cnki.com.cn/Article/CDMD-10636-2009205714.htm
|