固态硬盘技术解析之垃圾回收和TRIM指令

来源:本站整理 作者:U盘量产网

垃圾回收如何工作?

本文主要解释了采用SandForce主控芯片的固体硬盘的垃圾回收以及TRIM操作情况。但是文中也对其他解决方案有所提及。是一篇比较通俗易懂的文章。

 

 

    垃圾回收(GC)是所有固态硬盘会执行的一项基本程序之一。但是不同厂商可以采取不同的执行方法,从而影响到固态硬盘的整体性能和耐用性。本文中,我们将探讨一项垃圾回收是如何工作的,是如何实施的以及垃圾回收与TRIM指令和预留空间的关系。

    与传统机械硬盘不同,固态硬盘并不能直接覆盖原来的数据,固态硬盘必须要把旧的数据先擦出然后才可以把新的数据写入。对于固态硬盘来说,垃圾回收是指把现存数据重新转移到其他闪存位置,并且把一些无用的数据彻底删除的过程。一块固态硬盘中的闪存可以被分为许多Block(块),每个块(block)又可以分成页面(pages)。数据可以直接以页面为单位写入,但是要想删除数据却需要以块为单位。因此要删除无用的数据,固态硬盘首先需要把一个块内包含有用的数据先复制粘贴到全新的块中的页面内,这样原来块中包含的无用数据才能够以块为单位删除。删除后,才能够写入新的数据。

    图一展示了这个过程。第一列展示了页面A-D被写入到块X内。但是后来数据产生了变化,数据A’-D’被写入,因此数据A-D现在被标记成无用的数据。与此同时,其他新的数据E-H被写入到原来空白的页面里。(第二列)现在块X已经写满,但是包含着无用的数据(A-D),但是要想获得无用数据占用的页面,我们必须要先把整个块X删除掉。

    要实现删除无用数据A’-D’的目标,块X中的有用数据首先需要被移动到新的块中,这样才能够确保块X被删除。第三列展示了这一过程:数据E-H和A’-D’首先要被移动到一个新块Y中。只有这样才能够把块X数据删除,从而获得一整块X的新空间。这个过程中的数据写入到新块的过程并不受电脑主控管理,而是固态硬盘为了实现加快写入速度的一种内部解决方案。这同时也意味着闪存的写入次数要比电脑主控实际写入的次数多。由于闪存的擦写次数是有限的,这样的操作应该越少越好。但是基于固态硬盘速度的考虑,这项技术仍然是固态硬盘工作的一部分。

 

 

    表一:垃圾回收过程 图片来源:维基百科。

    需要注意的是,磨损均衡主要是在垃圾回收过程中来实现的。为了能够让固态硬盘中闪存实现比较均衡的磨损,垃圾回收过程中总是把数据写道更新的块中。由于闪存的读写次数有限,如果数据总是不断的写入到这个相同的块中,那么最终的结果就是这个块将会比其他块提前报废。随着不断有硬盘块读写寿命达到极限,这些块将不能够再读写数据。从而造成硬盘容量的不断减少。理想状态下,一块固态硬盘中所有的块在使用寿命期间都能够实现相同的读写次数。

系统识别 vs 硬盘识别

 

在机械硬盘系统中,系统可以直接请求新数据写入到旧数据存储的位置。机械硬盘可以直接覆盖旧数据。在固态硬盘中,境况有所不同。如果想让存储无用数据的块写入新数据,就需要先把整个块删除,才可以写入新的数据。固态硬盘并不具备直接覆盖旧数据的能力。

    操作系统可以理解数据、结构以及数据存储的逻辑位置,但是却不能够理解存储设备的物理结构。任何一个存储系统,硬盘并不明文件的结构。硬盘只简单的知道在某一特定的扇区内写有多少字节的数据。机械硬盘和固态硬盘一样,当操作系统请求相应的逻辑地址的数据时,它们会把物理地址中的数据发送给系统。

    当系统删除某个文件时候,它只是简单的在逻辑数据表内把存储要删除的数据的位置标记为可用而已。使用机械硬盘的系统根本就不需要向存储设备发送任何有关文件删除的消息,因为在将来,系统可以随时把新数据直接覆盖到无用的数据上。固态硬盘的情况就不同,当系统准备把新数据要写入那个位置的时候,固态硬盘才意识到原来这写数据已经被删除了!(无用数据。)当然,固态硬盘也可能再相同的时间内实施了垃圾回收操作,但是受到固态硬盘的结构以及其他条件的影响。

TRIM指令

 

在新一代操作系统中,例如Windows 7/Windows Server 2008 R2/Linux 2.6.33/FreeBSD 8.2/Open Solaris/Mac OS X Lion,它们都加入对Trim指令的支持。这可以让操作系统在删除逻辑表中删除逻辑扇区地址的同时通知固态硬盘某些数据已经无用了。TRIM的先进性在于它可以让固态硬盘在进行垃圾回收的时候跳过移动无用数据的过程,从而不再用重新写入这些无用的数据,达到节省时间的目的。这也会减少闪存删除数据的次数,从而在写入过程中实现高性能。固态硬盘也不需要立即删除或者“垃圾回收”这些TRIM指令告知的位置了,它只是先标记这些位置的数据为“无用”即可。

    下表II和表III展示了不同。

 

 

    表二表示没有TRIM指令的垃圾回收过程。

微微一笑很倾城正版手游千年风华无限钻石版第7装甲师无限金条安卓暴击联盟千年风华tv版女神危机未和谐版武林群侠传魔与道官网最新版剑魂之刃免费gm版明星梦工厂游戏宝宝爱拼图祖玛泡泡龙皇家骑士团多牛百变方块啪啪联盟乱世神将bt版坦克大决战新版王者守卫内购无限钻石金币明星梦工厂游戏塔防西游记无限内购版汉家江湖福利版封仙之怒手机版萌菌大作战2变态版三国杀OL互通版最新航海王启航满v版牧羊人之心内购版超神三国志正版荣耀战国无限内购版美杜莎传奇最新版安卓三国萌将录无限元宝版