写入数据的方法及装置制造方法

文档序号:6515979阅读:181来源:国知局
写入数据的方法及装置制造方法
【专利摘要】本发明实施例提供一种写入数据的方法及装置,该方法包括:在cache中确定第一有效数据块,所述第一有效数据块包括多个连续的有效扇区,所述有效扇区保存有数据;在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区;将所述目标有效数据块中的数据写入固态硬盘。本发明实施例中,尽可能的减少了写入SSD中的干净扇区,从而减少了写入SSD的数据量,实现了SSD的使用寿命的延长。
【专利说明】写入数据的方法及装置【技术领域】
[0001]本发明涉及通信技术,尤其涉及一种写入数据的方法及装置。
【背景技术】
[0002]当前的固态硬盘(Solid State Device,简称SSD)基本都是基于闪存的介质,一个SSD内部,有多片闪存颗粒,每一个闪存颗粒内部,又分为若干的块(block),每个块由分为若干的页(page)。闪存介质不能对任意比特(bit)位进行0/1的相互转换,只能按照一定的颗粒度进行擦除和编程操作。其中,擦除的颗粒度为块,是指将指定块中所有的bit位全部设置为I ;编程的颗粒度为页,是指将页中指定的bit为设置为O。页是SSD内部进行读和写的最小粒度,但是SSD为了与硬盘驱动器(Hard Disk Drive,简称HDD)相兼容,SSD对外提供的接口是以扇区(sector )为访问粒度的。
[0003]现有技术中,主机往SSD中写数据的过程为:主机将要写的数据先给存储阵列,存储阵列将该数据给存储阵列中的高速缓存器(cache),cache向主机发出响应后将数据写入SSD0如果主机给存储阵列的数据大小小于一个页的大小,则cache可以执行补齐,即补足一个页的大小,然后写入硬盘。
[0004]但是,采用现有技术,由于SSD内部读写粒度和对外提供的访问粒度大小的差异,SSD会存在写惩罚和写放大次数过多的问题,具体地,对于主机的写请求,上述cache补齐的过程叫做“写惩罚”;写放大是指写入闪存的数据量大于写入SSD的数据量,写惩罚是一种特殊的写放大。还有其他原因也会造成写放大,例如写入SSD的数据没有按照闪存的“页”对齐,会进行补齐后再以 页的粒度写入闪存。也就是说采用现有技术会增加写入SSD的数据量,从而会减少SSD的使用寿命。

【发明内容】

[0005]本发明实施例提供一种写入数据的方法及装置,用于解决由于写放大和写惩罚次数太多增加写入SSD的数据量的问题。
[0006]本发明实施例第一方面提供一种写入数据的方法,所述方法应用于存储设备中,所述存储设备包括控制器和固态硬盘,所述控制器包括高速缓存器,所述高速缓存器包括多个页,每个页包括多个扇区,该方法包括:
[0007]在所述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续的有效扇区,所述有效扇区保存有数据;
[0008]在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;
[0009]在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区;
[0010]将所述目标有效数据块中的数据写入固态硬盘。
[0011]结合第一方面,在第一方面的第一种可能的实施方式中,所述在所述高速缓存器中确定第一有效数据块,包括:
[0012]遍历所述高速缓存器中预设指定区域的所有扇区;
[0013]获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块包括最多的连续有效扇区。
[0014]结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
[0015]本发明实施例第二方面提供一种写入数据的装置,所述存储设备包括控制器和固态硬盘,所述控制器包括高速缓存器,所述高速缓存器包括多个页,每个页包括多个扇区,包括:
[0016]确定模块,用于在上述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续有效的扇区,所述有线扇区保存有数据;在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区;
[0017]写入模块,用于将所述目标有效数据块中的数据写入固态硬盘。
[0018]结合第二方面,在第二方面的第一种可能的实施方式中,所述确定模块,具体用于遍历所述告诉缓存器中预设指定区域的所有扇区;获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块中包括最多的连续有效扇区。
[0019]结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
[0020]本发明实施例中,在cache中确定包含连续有效扇区的第一有效数据块,然后再第一有效数据块中确定包含脏扇区的有效数据块,最后在第二有效数据块中确定出目标数据块,该目标数据块中包含的每个页都有脏扇区,将该目标数据块写入SSD,这样尽可能的减少了写入SSD中的干净扇区,从而减少了写入SSD的数据量,实现了 SSD的使用寿命的延长。
【专利附图】

【附图说明】
[0021]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0022]图1为本发明提供的写入数据的方法实施例一的流程示意图;
[0023]图2为本发明提供的写入数据的方法实施例二的扇区结构示意图;
[0024]图3为本发明提供的写入数据的方法实施例三的扇区结构示意图;
[0025]图4为本发明提供的写入数据的方法实施例四的扇区结构示意图;
[0026]图5为本发明提供的写入数据的方法实施例五的扇区结构示意图;
[0027]图6为本发明提供的写入数据的装置实施例一的结构示意图;[0028]图7为本发明提供的存储设备实施例一的结构示意图。
【具体实施方式】
[0029]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]本发明实施例应用于存储设备中,该存储设备包括控制器和SSD,该控制器包括cache, cache中又包含多个页,每个页包含多个扇区。其中,扇区中如果保存有数据,则该扇区是有效扇区,如果没有保存数据,则是无效扇区。本发明实施例中,有效扇区包含脏扇区和干净扇区,其中,脏扇区中包括将要写入SSD的数据,干净扇区中包括已经写入SSD的数据。
[0031]图1为本发明提供的写入数据的方法实施例一的流程示意图,图2为本发明提供的写入数据的方法实施例二的扇区结构示意图,如图1所示,该方法包括:
[0032]S101、在cache中确定第一有效数据块。该第一有效数据块包括多个连续的有效扇区,该有效扇区中保存有数据。cache中包含很多的扇区,可以将连续的有效扇区划分为一个有效数据块,在cache中可以确定出一个或多个第一有效数据块。
[0033]具体地,脏扇区表示该扇区中的数据是实际要写入SSD的,该脏扇区中的数据与SSD中对应位置当前的数据不同,脏扇区在被擦除前不能写入新的数据。干净扇区中的数据是主机从SSD中读取过的数据,留在cache中,因而干净扇区中的数据与SSD中对应位置的数据相同。脏扇区和干净扇区都为有效扇区。无效扇区可以为没有任何内容的空白扇区,即主机没有从SSD中读取过对应扇区的数据,cache中该无效扇区内当前没有任何数据。确定出的第一有效数据块中都不包含无效扇区。
[0034]如图2所示,假设一个页包含8各扇区,其中,每一个方格代表一个扇区,空白的方格表示干净扇区,“斜纹”阴影的方格表示脏扇区,“点”阴影的方格表示无效扇区,ml-m8这8个扇区表示一个页,nl-n8这8各扇区表示另一个页,这两个页是SSD中连续的两个页。可以看出m5-n3连续扇区构成的数据块M中包含7个连续有效数据块,其中没有无效扇区,可以被确定为上述第一有效数据块。
[0035]S102、在上述第一有效数据块中确定第二有效数据块,该第二有效数据块是指包含脏扇区的有效数据块。
[0036]也就是,若SlOl中确定多个第一有效数据块,将其中不包含脏扇区的第一有效数据块剔除,将剩下的第一有效数据块作为第二有效数据块。
[0037]S103、在上述第二有效数据块中确定目标有效数据块。该目标有效数据块中包含多个页,其中任意一个页包含有脏扇区。
[0038]每个上述第二有效数据块中可以包含多个页,如果这多个页中存在有所有扇区都为干净扇区的页,则将这种页从上述第二有效数据块中剔除,形成新的有效数据块,作为目标有效数据块,这样目标有效数据块中包含的每个页中都包含脏扇区。
[0039]S104、将上述目标数据块中的数据写入SSD。
[0040]本实施例中,在cache中确定至少一个第一有效数据块,然后剔除只包含干净扇区的第一有效数据块,再进一步剔除只包含干净扇区的页,最后得到目标数据块,将目标数据块写入SSD,这样尽可能的减少了写入SSD中的干净扇区,从而减少了写入SSD的数据量,实现了 SSD的使用寿命的延长。
[0041]图3为本发明提供的写入数据的方法实施例三的扇区结构示意图,图4为本发明提供的写入数据的方法实施例四的扇区结构示意图,图5为本发明提供的写入数据的方法实施例五的扇区结构示意图。如图3、图4、图5所示,为连续的6个页,假设一个页包含8各扇区,其中,每一个方格代表一个扇区,空白的方格表不干净扇区,“斜纹”阴影的方格表示脏扇区,“点”阴影的方格表示无效扇区。
[0042]进一步地,上述在上述cache中确定第一有效数据块,具体为:遍历上述cache中预设指定区域的所有扇区;获取最大连续有效数据块作为上述第一有效数据块,上述最大连续有效数据块包括最多的连续有效扇区。这里最大连续有效数据块是指将尽可能多的有效扇区包含进来。
[0043]需要说明的是,cache的容量一般都比较大,为了减小管理开销,cache不会直接管理到页或扇区,而是会管理一个更大的粒度,例如可以是管理一个页面组(page group),上述预设指定区域是指采用预设算法选择出的page group。
[0044]举例说明上述流程,如图3所示,指定区域为图3所示的6个连续的页,首先遍历这48个扇区,获取到3个最大连续有效数据块,作为上述第一有效数据块,分别是数据块A、B、C,数据块A包括a3-a6共4个扇区、数据块B包括a8_d3共20个、数据块C包括d6_f8共19个扇区,可以看出这3第一有效数据块都是包括了最多的连续有效扇区,其中没有无效扇区。然后,在上述3个第一有效数据块中确定第二有效数据块,即将上述3个最大连续有效数据块中所有扇区都为干净扇区的数据块剔除,即剔除数据块A,因为a3_a6都为干净扇区,如图4所示,剩余的数据块B和C作为第二有效数据块,数据块B和C中都包含有脏扇区。进一步对第二有效数据块B和C进行处理,以页为单位进行处理,剔除第二有效数据块中所有扇区都为干净扇区的页,数据块B和C都跨越了多个页,如图4所示,数据块B跨越了 4个页,第一个页al-a8中,只有a8属于该数据块B,a8为干净的扇区,将a8剔除,第二个页cl_c8都为干净扇区,将cl_c8这整个页删除,获取目标数据块,如图5所示,处理后,原数据块B现在切成数据块D和数据块E。同理,数据块C跨越了 3个页,但是所跨越的这3个页的部分都包含脏扇区,d6-d8中d8为脏扇区,el-e8中el为脏扇区,fl_f8中fl、f2、f3、f8为脏扇区,于是最后得到的目标连续有效数据块F与数据块C 一样,即没有剔除数据块C中的扇区。这样确定出的目标数据块为数据块D、E、F,最后将数据块D、E、F中的数据都写入SSD。
[0045]需要说明的是每个数据块在写入SSD时都会产生一个输入/输出(Input/Output,简称1/0),本发明实施例中一个I/O表示一次写请求或读请求。
[0046]对于cache中的预设指定区域,例如图3所示的预设指定区域,如果采用现有技术,一种可以是简单的将脏扇区直接写入SSD,这样的话就会产生5个I/O:将b6写入SSD产生一个I/O、将d2写入SSD产生一个I/O、将d8-el写入SSD产生一个I/O、将f l_f3写入SSD产生一个I/O、将f8 —个写入SSD产生一个1/0,而且这5个I/O写入SSD时都需要补齐,会产生写惩罚,d2和d8-el这两个I/O可能会在写入SSD产生不必要的垃圾页,即会产生写放大,同样,fl-f3和f8这两个I/O写入时也会产生写放大。[0047]本实施例中,尽可能的减少了写入SSD中的干净扇区,实现了写放大和写惩罚减少,从而减少了写入SSD的数据量,实现了 SSD的使用寿命的延长,同时还可以减少I/O的产生,减小了整体开销。
[0048]图6为本发明提供的写入数据的装置实施例一的结构示意图,该装置应用与存储设备中,该存储设备包括控制器和固态硬盘,该控制器包括cache,该cache包括多个页,每个页包括多个扇区。如图6所示,该装置包括:确定模块601和写入模块602,其中:
[0049]确定模块601,用于在上述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续有效的扇区,所述有线扇区保存有数据;在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区。
[0050]写入模块602,用于将所述目标有效数据块中的数据写入固态硬盘。
[0051]在上述实施例的基础上,确定模块601,具体用于遍历所述告诉缓存器中预设指定区域的所有扇区;获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块中包括最多的连续有效扇区。。
[0052]需要说明的是,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
[0053]上述各模块用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0054]图7为本发明提供的存储设备实施例一的结构示意图,该存储设备110包括:处理器701、存储器702、系统总线(简称总线)703和通信接口 704,处理器701、存储器702和通信接口 704之间通过系统总线703连接并完成相互间的通信。
[0055]处理器701可以为中央处理单元。存储器702用于存储指令信息。通信接口 704用于与外部设备进行通信。
[0056]具体实现过程中,处理器701运行存储器702中的指令信息,可以执行图1所述的
方法流程。
[0057]具体地,该处理器701,用于在上述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续有效的扇区,所述有线扇区保存有数据;在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区。还用于将所述目标有效数据块中的数据写入固态硬盘。
[0058]在上述实施例的基础上,处理器701,具体用于遍历所述告诉缓存器中预设指定区域的所有扇区;获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块中包括最多的连续有效扇区。
[0059]其中,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
[0060]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0061]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种写入数据的方法,所述方法应用于存储设备中,所述存储设备包括控制器和固态硬盘,所述控制器包括高速缓存器,所述高速缓存器包括多个页,每个页包括多个扇区,其特征在于,所述方法包括: 在所述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续的有效扇区,所述有效扇区保存有数据; 在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块; 在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区; 将所述目标有效数据块中的数据写入固态硬盘。
2.根据权利要求1所述的方法,其特征在于,所述在所述高速缓存器中确定第一有效数据块,包括: 遍历所述高速缓存器中预设指定区域的所有扇区; 获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块包括最多的连续有效扇区。
3.根据权利要求2所述的方法,其特征在于,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
4.一种写入数据的装置,该装置应用于存储设备中,所述存储设备包括控制器和固态硬盘,所述控制器包括高速缓存器,所述高速缓存器包括多个页,每个页包括多个扇区,其特征在于,包括: 确定模块,用于在上述高速缓存器中确定第一有效数据块,所述第一有效数据块包括多个连续有效的扇区,所述有线扇区保存有数据;在所述第一有效数据块中确定第二有效数据块,所述第二有效数据块是指包含脏扇区的有效数据块;在所述第二有效数据块中确定目标有效数据块,所述目标有效数据块中包含多个页,其中任意一个页包含有脏扇区; 写入模块,用于将所述目标有效数据块中的数据写入固态硬盘。
5.根据权利要求4所述的装置,其特征在于,所述确定模块,具体用于遍历所述告诉缓存器中预设指定区域的所有扇区;获取最大连续有效数据块作为所述第一有效数据块,所述第一有效数据块中包括最多的连续有效扇区。
6.根据权利要求5所述的装置,其特征在于,所述脏扇区中包括将要写入固态硬盘的数据,所述干净扇区中包括已经写入固态硬盘的数据。
【文档编号】G06F12/08GK103513941SQ201310495179
【公开日】2014年1月15日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】龚涛, 梁剑 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1