数据保护方法、数据保护装置以及固态硬盘存储系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据保护方法、数据保护装置以及固态硬盘存储系统。
背景技术
固态硬盘(Solid State Drives,简称SSD),是用固态电子存储芯片阵列而制成的硬盘。固态硬盘可以使用与非门闪存(NAND flash)来实现。与非门闪存是一种非易失性存储介质,其特点是断电后数据不消失。目前,企业级的固态硬盘大多采用这种固态硬盘。
闪存转换层(Flash Translation Layer,简称FTL),作为Flash文件系统数据管理器(Flash Translation Layer),是一个与非门闪存芯片与基础文件系统之间的一个转换层,它使操作系统和文件系统能够像访问硬盘一样访问与非门闪存设备。
现有的对企业级数据的保护方法一般有两种,第一种方法是将传统的在机械磁盘上的磁盘阵列(Redundant Arrays of independent Disks,RAID)技术(例如RAID5)直接应用到固态硬盘上实现数据保护,第二种方法是基于Raise(Redundant Array ofIndependent Silicon Element,独立的硅元素的冗余阵列)技术的数据保护。
在第一种方法中,针对企业级的固态硬盘,一般采用页映射的方式,以页为单位生成一个条带,当有新的数据写入的时候,把条带的其他页的数据读出来,在内存中直接生成新的校验数据然后写入到校验页。该方案虽然能够在一定程度上实现对数据的保护,但是带来了两个问题,第一个问题是,每次有数据更新的时候都要更新校验数据,写放大问题会比较严重,降低了固态硬盘的寿命,第二个问题是,校验块都被固定在相同的物理块,校验块更新比较频繁,校验块容易损坏。因此该方案在实际产品中应用较少。
在第二种方法中,通过改进型的RAID5应用,将第一种方法中的校验位的固定的物理块通过闪存转换层均匀分布到整个固态硬盘,避免了对校验块的过于频繁的修改,但是,这种方法仍然没有解决写放大的问题。
发明内容
有鉴于此,本发明提供一种能够解决写放大问题的数据保护方法以及固态硬盘存储系统。
本发明一实施例提出一种数据保护方法,应用于固态硬盘存储系统,所述固态硬盘存储系统包括闪存转换层、易失性存储器以及非易失性存储器,所述闪存转换层包括条带化的逻辑块层,每个条带中包括至少两个数据块以及一个校验块。所述方法可以包括:在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据;当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区;当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
本发明另一实施例提出一种数据保护装置,用于固态硬盘存储系统中对数据进行保护,所述固态硬盘存储系统还包括闪存转换层、易失性存储器以及非易失性存储器,所述闪存转换层包括条带化的逻辑块层,每个条带中包括至少两个数据块以及一个校验块。所述装置可以包括:存储区创建模块,用于在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据;数据保护模块,用于当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区;数据写入模块,用于当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
本发明又一实施例提供一种固态硬盘存储系统,所述固态硬盘存储系统包括闪存转换层、易失性存储器以及非易失性存储器。所述闪存转换层包括条带化的逻辑块层,每个条带中包括至少两个数据块以及一个校验块。所述系统还包括数据保护装置,所述数据保护装置可以包括:存储区创建模块,用于在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据;数据保护模块,用于当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区;数据写入模块,用于当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
相对于现有技术,本发明实施例提供的数据保护方法以及数据保护装置将新的校验数据存储在易失性存储器的校验数据存储区,并设置适当的预定数目,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为本发明实施例所提供的数据保护方法以及数据保护装置所运用的存储系统的系统架构图。
图2为本发明第一实施例提供的数据保护方法的流程图。
图3为本发明第二实施例提供的数据保护方法的流程图。
图4A及图4B为本发明第二实施例中进行数据恢复时的数据保护方法的示意图。
图5为本发明第三实施例提供的固态存储系统的结构框图。
图6为本发明第四实施例提供的数据保护装置的结构框图。
图7为图6中部分模块的结构框图。
具体实施方式
基于与非门闪存的结构特点,在对固态硬盘进行读、写、擦除操作时都有一些基本属性,例如包括:读取以页大小对齐、写入以页大小对齐、页不能被复写、擦除以块对齐等。这些属性所带来的最大的问题是写放大,具体来讲,在进行数据读取时,一次读取不能少于一页的内容,虽然系统可以只请求一个字节,但是固态硬盘会访问整个页,强制读取远超所需的数据。在进行数据写入时,写入的增量也是页大小。因此即使一个写入操作只影响到一个字节,无论如何整个页都会写入,而一页的大小在某些型号的固态硬盘中可能达到16KB。写入比所需更多的数据的行为被称为写放大。
本发明提出的技术方案主要是解决现有技术中写放大过高的问题。其主要思路在于,将闪存转换层的逻辑块层进行条带化,每个条带中包括至少两个数据块以及一个校验块。同时在固态硬盘存储系统中的易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据。当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区;当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。
本发明实施例所提供的数据保护方法及装置可运用于图1所示的存储系统10中。如图1所示,存储系统10例如可以包括软件部分:上层应用(application)101、多业务适配系统102、闪存转换层(FTL)103、底层驱动(low level driver)104,以及硬件部分:固件(firmware)105、易失性存储器106以及非易失性存储器107。易失性存储器106例如可以是随机存取存储器(Random-Access Memory,简称RAM),非易失性存储器107例如可以是与非门闪存存储器(NAND flash)。
其中,闪存转换层103位于系统底层驱动104和上层多业务适配系统102之间,负责逻辑块映射表的建立和维护,实现磨损均衡,和垃圾回收等。逻辑块映射表将来自主机空间的逻辑块地址(Logical Block Address,简称LBA),转换为物理与非门闪存存储器空间的物理块地址(Physical Block Address,简称PBA)。
多业务适配系统102主要用于完成与上层应用101之间输出和输入(I/O)的整合,使得在闪存转换层103的写请求能够在块内连续,从而可以进行块映射,减少了映射表的大小。多业务适配系统102例如可以为腾讯自研的多业务适配系统TSSD,但是,需要说明的是,只要是可以保证写请求能够在块内连续,也就是能够保证块内顺序写的多业务适配系统均可用于本发明,本发明的具体实施方式并不以此为限。
底层驱动104负责闪存转换层103与固件105之间的交互。
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
第一实施例
图2是本发明第一实施例中的数据保护方法的流程图。该方法应用于固态硬盘存储系统,在本发明实施例中,所述固态硬盘存储系统至少包括闪存转换层、易失性存储器以及非易失性存储器。
在本发明实施例中,首先对闪存转换层中的逻辑块层以块为单位进行条带化,每个条带中包括至少两个与用户数据对应的数据块以及一个校验块。其中,每个条带中的校验块中所对应的是该条带中其他数据块的奇偶校验值。每个条带的校验块是随机分布的,具体如何分布取决于闪存转换层。每个条带的大小相同。这里,条带的大小指的是条带中所包含的逻辑块的数目。优选的,每个条带包括8到16个逻辑块。每个逻辑块的大小一般在2KB至512KB之间,例如可以为2KB、4KB、8KB、16KB…。
与逻辑块对应的物理块分布在所述非易失性存储器中,逻辑块与物理块的之间的映射表-逻辑块映射表,由闪存转换层的建立和维护,存储在易失性存储器与非易失性存储器中。
请参照图2,本实施例所提供的方法主要包括以下步骤:
步骤S11,在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据。
于本发明的实施例中,易失性存储器中除了对逻辑块映射表进行存储外,还创建了一个校验数据存储区,用于专门存储与每个条带中的校验块相对应的校验数据。校验数据也是以块为单位进行存储。
步骤S12,当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区。
具体的,每计算一个新的校验数据,就会将该新的校验数据按照时间顺序记录在所述易失性存储器的校验数据存储区中,从而保证数据的安全性。
当数据发生改变时,新的数据会被存储在一个“空闲”的物理块中,数据并不是在原物理块中进行更新,一旦数据被保存,原先的物理块会被标记为普通坏块,直到其被擦除,擦除命令则是当固态硬盘需要回收被标记为普通坏块的物理块时,由其垃圾回收进程触发。为了确保每次数据的安全性,每次在写完一个数据块的时候,就要重新计算检验块,同时,几乎是每写一个数据块,就要写同样容量的校验数据,写入数据放大了一倍。但是,在本发明实施例中,新的校验数据会被存储在易失性存储器的校验数据存储区中,而不是直接写在新的物理块中。
步骤S13,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
可以为新的校验数据的数目设定一个阈值,也就是设定预定数目,预定数目的设定可以根据所述条带的具体大小以及实际需求来设定,本发明的具体实施方式并不以预定数目的具体值为限定。
当新的校验数据被写入到与所述校验块具有映射关系的物理块中后,可以重新开始计数,当再次达到预定数目时,又可以将校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中,以此类推。
于本发明实施例中,只有当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中,这样可以减少对校验数据的频繁写入,减少了写放大的问题。
需要说明的是,在数据没有写满一个条带的情况下,例如,在数据存储时,数据的校验值也可以存储在校验数据存储区,当数据写满该条带的数据块时,也就是当与数据块具有映射关系的物理块中均写有数据时,才将校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
进一步的,可以设定超时和掉电保护。在超时情况下,即使数据未写满一个条带,也可以将校验数据缓存区中所存储的最后一个校验数据写入与校验块具有映射关系的物理块中,达到数据保护的目的。在掉电的情况下,通过储能元件(超级电容或电池元件)为固态硬盘提供电能,借此可以将缓存在校验数据存储区的校验数据写到与校验块具有映射关系的物理块中。
相对于现有技术,本实施例提供的数据保护方法将新的校验数据存储在易失性存储器的校验数据存储区,并设置适当的预定数目,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。
第二实施例
图3所述为本发明第二实施例提供的数据保护方法的流程图。请参照图3,所述方法可以包括:
步骤S21,在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据。
步骤S22,当与所述条带中的数据块具有映射关系的物理块发生损坏时,根据所述条带中其他的数据块与校验块将该数据块的数据恢复出来。
进一步的,当与所述条带中的数据块具有映射关系的物理块发生损坏时,可以将发生损坏的所述物理块标记为特殊坏块,被标记为特殊坏块的物理块不进入回收流程,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将发生损坏的所述物理块标记为普通坏块,被标记为普通坏块的物理块进入回收流程。
步骤S23,将该数据块映射到新的物理块,将恢复后的数据写到新的物理块中。
步骤S24,根据更新后的物理块中的数据,计算新的校验数据。
步骤S25,将所述新的校验数据存储在所述易失性存储器的校验数据存储区。
步骤S26,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
请参照图4A及图4B,下面将结合一个具体示例详细介绍一下本实施例中数据保护方法。图4A及图4B显示了当与一个条带中的某数据块具有映射关系的物理块发生损坏时,如何进行数据保护。该具体示例中,以每个条带具有7个数据块和1个校验块为例,如图4A所示:其中标号为1到7的逻辑块为数据块,标号为8的逻辑块为校验块。
假设与数据块1具有映射关系的是物理块B1,与数据块2具有映射关系的是物理块B2,与数据块3具有映射关系的是物理块B3,与数据块4具有映射关系的是物理块B4,与数据块5具有映射关系的是物理块B5,与数据块6具有映射关系的是物理块B6,与数据块7具有映射关系的是物理块B7,与校验块8具有映射关系的是物理块B8。如果与数据块4具有映射关系的物理块B4发生了损坏,会通过与其他数据块与校验块具有映射关系的物理块中的数据将数据块4的数据恢复出来,具体的恢复方法可以采用RAID5技术中的数据恢复方法,这里不再赘述。同时,可以将与数据块4对应的物理块B4标记为特殊坏块,然后把恢复后的数据写到新的物理块B4’,根据更新后的物理块B4’以及物理块B1、B2、B3、B5、B6、B7中的数据,计算新的校验数据。将新的校验数据存储在所述易失性存储器的校验数据存储区。
请参照图4B,假设预定数目为4个,当校验数据存储区中所存储的新的校验数据的数目达到4个时,将所述校验数据存储区中所存储的最后一个校验数据写入与校验块8具有映射关系的新的物理块B8’中,原来的物理块8’作为垃圾块回收。
当所存储的新的校验数据的数目达到4个时,将发生损坏的物理块标记为普通坏块,被标记为普通坏块的物理块可以进入回收流程。
相对于现有技术,本实施例提供的数据保护方法将新的校验数据存储在易失性存储器的校验数据存储区,并设置适当的预定数目,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。
第三实施例
请参见图5,为本发明第三实施例提供的固态硬盘存储系统的结构示意图;请参照图5,所述固态硬盘存储系统30至少可以包括闪存转换层31、易失性存储器32、非易失性存储器33、以及储能元件34。
所述闪存转换层31包括条带化的逻辑块层,每个条带中包括至少两个数据块以及一个校验块,所述非易失性存储器中包括与所述逻辑块具有映射关系的物理块。
闪存转换层31负责逻辑块映射表的建立和维护,实现磨损均衡,和垃圾回收等。
储能元件34在固态硬盘正常工作时存储电能,其可以是电容或是电池元件,当固态硬盘异常掉电时,储能元件34对固态硬盘提供电能,借此使固态硬盘可以处理需要保护的数据。
易失性存储器32作为固态硬盘的缓存机构,本发明实施例中,优选采用RAM,其存储有逻辑块映射表。同时,该易失性存储器32中还包括校验数据存储区,用于存储与所述校验块对应的校验数据。
非易失性存储器33是固态硬盘的主存储机构,其具有flash阵列,且在实际应用中,优选采用NAND flash。非易失性存储器33中还可以保存逻辑块映射表以防发生掉电故障,当固态硬盘启动后,这个映射表可以从NAND flash中读出并在固态的易失性存储器32中重建。
所述系统30还包括数据保护装置36,其中,数据保护装置36用于在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据,当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。其中,所述易失性存储器可以是随机存取存储器,所述非易失性存储器可以是与非门闪存存储器。
本实施例中数据保护装置36实现其功能的具体过程,请参见上述图6至图7所示实施例中描述的具体内容,此处不再赘述。
相对于现有技术,本实施例提供的固态硬盘存储系统将新的校验数据存储在易失性存储器的校验数据存储区,并设置适当的预定数目,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。
第四实施例
请参见图6,为本发明第四实施例提供的数据保护装置的结构示意图。本实施例提供的装置用于固态硬盘存储系统中对数据进行保护,所述固态硬盘存储系统还包括闪存转换层、易失性存储器以及非易失性存储器,所述闪存转换层包括条带化的逻辑块层,每个条带中包括至少两个数据块以及一个校验块,所述非易失性存储器中包括与所述逻辑块具有映射关系的物理块。所述数据保护装置40可以包括:
存储区创建模块41,用于在所述易失性存储器中创建校验数据存储区,用于存储与所述校验块对应的校验数据;
数据保护模块42,用于当所述条带中的数据块所对应的数据发生更新时,根据更新后的数据,计算新的校验数据,将所述新的校验数据存储在所述易失性存储器的校验数据存储区;
数据写入模块43,用于当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。
请参照图7,其中,所述数据保护模块42可以包括:
数据恢复单元421,用于当与所述条带中的数据块具有映射关系的物理块发生损坏时,根据所述条带中其他的数据块与校验块将该数据块的数据恢复出来;
数据写入单元422,用于将该数据块映射到新的物理块,将恢复后的数据写到新的物理块中;
数据校验单元423,用于根据更新后的物理块中的数据,计算新的校验数据;以及
数据缓存单元424,用于将所述新的校验数据存储在所述易失性存储器的校验数据存储区。
所述数据保护模块42还可以包括:
标记单元425,用于当与所述条带中的数据块具有映射关系的物理块发生损坏时,将发生损坏的所述物理块标记为特殊坏块,被标记为特殊坏块的物理块不进入回收流程,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,将发生损坏的所述物理块标记为普通坏块,被标记为普通坏块的物理块进入回收流程。
以上各模块可以是由软件代码实现,此时,上述的各模块可存储于计算机的存储器内。以上各模块同样可以由硬件例如集成电路芯片实现。
本实施例对实现数据保护装置40的各功能模块实现各自功能的具体过程,请参见上述图1至图4所示实施例中描述的具体内容,此处不再赘述。
相对于现有技术,本实施例提供的数据保护装置将新的校验数据存储在易失性存储器的校验数据存储区,并设置适当的预定数目,当所述校验数据存储区中所存储的新的校验数据的数目达到预定数目时,才将所述校验数据存储区中所存储的最后一个校验数据写入与所述校验块具有映射关系的物理块中。相对于现有技术中每个逻辑块被修改都要生成校验块相比,可以大大减少对校验数据的修改,避免了对校验数据的频繁改写,从而在很大程度上可以解决现有技术中的写放大问题,提高整个固态硬盘的使用寿命,同时将校验数据缓存在校验数据存储区内,保证数据的安全性。以及一个校验块
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。