数据管理方法及固态存储系统转让专利

申请号 : CN200910001242.1

文献号 : CN101464838B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 柯乔刘明刚

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明实施例提供一种数据管理方法及固态存储系统,其中数据管理方法包括:判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;如果否,将所述需要缓存的数据放入所述Cache中的块Block中进行缓存;如果是,将所述需要缓存的数据放入所述Cache中的Page中进行缓存。使用本发明实施例所提供的技术方案,既可以提高IOPS,又便于数据的管理。

权利要求 :

1.一种数据管理方法,其特征在于,包括:

接收写数据指令;

判断所述写数据指令要写入的数据与前一个写数据指令所写入的数据是否连续;其中,所述写数据指令要写入的数据是需要缓存的数据;

当所述写数据指令要写入的数据与前一个写数据指令所写入的数据不连续时,判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;

如果否,将所述需要缓存的数据放入所述Cache中的块Block中进行缓存;

如果是,将所述需要缓存的数据放入所述Cache中的Page中进行缓存;

其中,Cache的配置为:Cache中存放读写数据的区域划为两部分,一部分为Page区,另一部分为Block区;Page区中的每个Page与存储介质的逻辑块一一对应;Block区中一个Block的大小与存储介质中物理块的大小相同。

2.根据权利要求1所述的方法,其特征在于,

所述将所述需要缓存的数据放入所述Cache中的Page中进行缓存的步骤包括:根据预先设置的存储介质中逻辑块与Cache中Page的一一对应关系,确定所述需要缓存的数据的逻辑地址所对应的Cache中的Page,将所述需要缓存的数据放入所确定的Cache中的Page中进行缓存。

3.根据权利要求1或者2所述的方法,其特征在于,该方法还包括:当所述写数据指令要写入的数据与前一个写数据指令所写入的数据连续时,将本次需要写入的数据放入Block区中的Block中进行缓存。

4.一种数据管理方法,其特征在于,包括:

接收读数据指令;

判断所述读数据指令需要读出的数据与前一个读数据指令所读出的数据是否连续;其中,所述读数据指令需要读出的数据是需要缓存的数据;

当所述读数据指令需要读出的数据与前一个读数据指令所读出的数据不连续时,判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;

如果否,将所述需要缓存的数据放入所述Cache中的块Block中进行缓存;

如果是,将所述需要缓存的数据放入所述Cache中的Page中进行缓存;

其中,Cache的配置为:Cache中存放读写数据的区域划为两部分,一部分为Page区,另一部分为Block区;Page区中的每个Page与存储介质的逻辑块一一对应;Block区中一个Block的大小与存储介质中物理块的大小相同。

5.根据权利要求4所述的方法,其特征在于,该方法还包括:当所述读数据指令需要读出的数据与前一个读数据指令所读出的数据连续时,从存储介质中读出所述数据放入Cache中的Block中进行缓存,将Cache中Block中所缓存的数据传给主机。

6.根据权利要求4所述的方法,其特征在于,

在接收读数据指令之后,该方法还包括:

在所述Cache中查找是否有所述需要读出的数据,如果是,从所述Cache中读出所述数据并传给主机,如果否,执行判断所述读数据指令需要读出的数据与前一个读数据指令所读出的数据是否连续的步骤。

7.根据权利要求6所述的方法,其特征在于,

在所述Cache中查找是否有所述需要读出的数据的步骤包括:根据存储介质中逻辑块与Cache中的Page的对应关系,确定需要读出的数据的逻辑地址所对应的Cache中的Page,在所述Cache中的Page中查找是否有所述需要读出的数据。

8.根据权利要求4所述的方法,其特征在于,

所述将所述需要缓存的数据放入所述Cache中的Page中进行缓存的步骤包括:根据预先设置的存储介质中逻辑块与Cache中Page的一一对应关系,确定所述需要缓存的数据的逻辑地址所对应的Cache中的Page,将所述需要缓存的数据放入所确定的Cache中的Page中进行缓存。

9.一种固态存储系统,其特征在于,包括:数据接口、存储控制器、Cache,数据接口,用于接收写数据指令;所述写数据指令需要写入的数据是需要缓存的数据;

所述存储控制器包括:

第二判断单元,用于判断所述写数据指令需要写入的数据与前一个写数据指令所写入的数据是否连续;

第一判断单元,用于当所述写数据指令要写入的数据与前一个写数据指令所写入的数据不连续时,判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;

第一控制单元,用于当第一判断单元的判断结果为否时,控制将所述需要缓存的数据放入Cache中的Block中进行缓存;

第二控制单元,用于当第一判断单元的判断结果为是时,控制将所述需要缓存的数据放入所述Cache中的Page中进行缓存;

所述Cache,用于在所述存储控制器的控制下,将所述需要缓存的数据放入所述Page中或者Block中进行缓存;其中,Cache的配置为:Cache中存放读写数据的区域划为两部分,一部分为Page区,另一部分为Block区;Page区中的每个Page与存储介质的逻辑块一一对应;Block区中一个Block的大小与存储介质中物理块的大小相同。

10.根据权利要求9所述的固态存储系统,其特征在于,所述第二控制单元包括:

页确定单元,用于根据预先设置的存储介质中逻辑块与Cache中Page的一一对应关系,确定所述需要缓存的数据的逻辑地址所对应的Cache中的Page;

控制缓存单元,用于当第一判断单元的判断结果为是时,将所述需要缓存的数据放入所确定的Cache中的Page中进行缓存。

11.根据权利要求9或者10所述的固态存储系统,其特征在于,所述第一控制单元,还用于当第二判断单元的判断结果为是时,将所述需要写入的数据放入Cache中的Block进行缓存。

12.一种固态存储系统,其特征在于,包括:数据接口、存储控制器、Cache,数据接口,用于接收读数据指令;所述读数据指令需要读出的数据是需要缓存的数据;

所述存储控制器包括:

第二判断单元,用于判断所述读数据指令需要读出的数据与前一个读数据指令所读出的数据是否连续;

第一判断单元,用于当所述读数据指令需要读出的数据与前一个读数据指令所读出的数据不连续时,判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;

第一控制单元,用于当第一判断单元的判断结果为否时,控制将所述需要缓存的数据放入Cache中的Block中进行缓存;

第二控制单元,用于当第一判断单元的判断结果为是时,控制将所述需要缓存的数据放入所述Cache中的Page中进行缓存;

所述Cache,用于在所述存储控制器的控制下,将所述需要缓存的数据放入所述Page中或者Block中进行缓存;其中,Cache的配置为:Cache中存放读写数据的区域划为两部分,一部分为Page区,另一部分为Block区;Page区中的每个Page与存储介质的逻辑块一一对应;Block区中一个Block的大小与存储介质中物理块的大小相同。

13.根据权利要求12所述的固态存储系统,其特征在于,还包括:第一执行单元,用于当第二判断单元的判断结果为是时,从存储介质中读出所述数据存入Cache中的Block中进行缓存。

14.根据权利要求12所述的固态存储系统,其特征在于,所述存储控制器还包括:

查找单元,用于在所述Cache中查找是否有所述需要读出的数据;

第三执行单元,用于当所述查找单元在所述Cache中找到所述需要读出的数据时,将所找到的数据传给主机。

15.根据权利要求12所述的固态存储系统,其特征在于,所述第二控制单元包括:

页确定单元,用于根据预先设置的存储介质中逻辑块与Cache中Page的一一对应关系,确定所述需要缓存的数据的逻辑地址所对应的Cache中的Page;

控制缓存单元,用于当第一判断单元的判断结果为是时,将所述需要缓存的数据放入所确定的Cache中的Page中进行缓存。

说明书 :

数据管理方法及固态存储系统

技术领域

[0001] 本发明涉及存储技术领域,特别涉及一种数据管理方法及固态存储系统。

背景技术

[0002] 随着数据业务的快速增长,服务器性能的不断提高,服务器的每秒IO的输入/输出次数(Input/Output per second,IOPS)也持续增长,而传统的存储设备具有机械转动装置,限制了IOPS。于是基于闪存(Flash)的SSD(Solidstate disk,固态硬盘)应运而生,其存储介质多采用非易失性的Flash芯片,其不具有机械转动装置,因而SSD具有读写性能高、抗震能力强、电源开销小等优势。
[0003] 现在固态存储系统(比如固态硬盘)中的高速缓存Cache中常采用单纯以块为单位进行数据管理或单纯以页为单位进行数据管理的方式。
[0004] 发明人在实现本发明的过程中,发现现有技术具有如下缺点:
[0005] 固态存储系统中采用以块为单位进行数据管理的方式,有利于大量数据读写性能的提高,但是如果读写少量数据,也以块为单位进行数据读写,则限制了随机IOPS的提高;
[0006] 固态存储系统中采用以页为单位进行数据管理的方式,有利于随机小数据读写性能的提高,但是由于每个页与存储介质中块Block中的页一一对应,所以数据的逻辑地址与页的映射关系的查找等操作繁琐,管理难度与开销很大。

发明内容

[0007] 本发明实施例提供一种数据管理方法及固态存储系统,既可以提高IOPS,又便于存储介质中数据的管理。
[0008] 有鉴于此,本发明实施例提供:
[0009] 一种数据管理方法,包括:
[0010] 判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;
[0011] 如果否,将所述需要缓存的数据放入所述Cache中的块Block中进行缓存;
[0012] 如果是,将所述需要缓存的数据放入所述Cache中的Page中进行缓存。
[0013] 一种固态存储系统,包括:存储控制器、Cache,
[0014] 所述存储控制器包括:
[0015] 第一判断单元,用于判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;
[0016] 第一控制单元,用于当第一判断单元的判断结果为否时,控制将所述需要缓存的数据放入Cache中的Block中进行缓存;
[0017] 第二控制单元,用于当第一判断单元的判断结果为是时,控制将所述需要缓存的数据放入所述Cache中的Page中进行缓存;
[0018] 所述Cache,用于在所述存储控制器的控制下,将所述需要缓存的数据放入所述Page中或者Block中进行缓存。
[0019] 本发明实施例中在需要缓存的数据长度小于缓存Cache中存储单元Page的长度时,将数据放入Cache中的存储单元Page中进行缓存,在数据长度大于缓存Cache中存储单元Page的长度时,将数据放入Cache中的Block中进行缓存,采用块和页联合的方式管理数据,既能保证随机IOPS的提高,又能降低管理难度。

附图说明

[0020] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0021] 图1是本发明实施例提供的Cache与存储介质的映射示意图;
[0022] 图2是本发明实施例一提供的数据写入方法流程图;
[0023] 图3是本发明实施例二提供的数据读出方法流程图;
[0024] 图4是本发明实施例三提供的固态存储系统结构图。

具体实施方式

[0025] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 本发明实施例提供一种数据管理方法,包括:判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;如果否,将所述需要缓存的数据放入Cache中块Block进行缓存;如果是,将所述需要缓存的数据放入所述Cache中的Page中进行缓存。
[0027] 本发明实施例中在需要缓存的数据长度小于缓存Cache中存储单元Page的长度时,将数据放入Cache中的存储单元Page中进行缓存,在数据长度大于缓存Cache中存储单元Page的长度时,将数据放入Cache中的Block中进行缓存,采用块和页联合的方式管理数据,既能保证随机IOPS的提高,又能降低管理难度。
[0028] 为了使本发明实施例更加清楚明白,如图1所示,先对本发明实施例用到的Cache区的配置作详细介绍:
[0029] 1、将Cache中存放读写数据的区域化为两部分,一部分为Page区,另一部分为Block区;
[0030] 2、配置Page区中的每个存储单元(一个Page)与存储介质的逻辑块一一对应。
[0031] 如图1所示,可以配置Page0对应存储介质的LogicalNum0(LogicalNum0为存储介质中第一个逻辑块Block的标识)。
[0032] 可配置Page区中的每个存储单元Page的大小与存储介质中物理块中的Page大小相同(可以为2K或者4K),存储介质中一个物理块包括多个Page,比如64个Page,因此可以推出Cache中的Page区的总容量为存储介质容量的1/page数,如果一个物理块包括64个Page,则Page区的总容量为存储介质容量的1/64。
[0033] 3、配置Block区中一个存储单元(一个Block)的大小与存储介质中物理块的大小相同,目前为128K或者256K或者512K。
[0034] 实施例一:
[0035] 参阅图2,本发明实施例一提供一种数据写入方法,该方法具体包括:
[0036] 201、固态存储系统通过数据接口接收写数据指令,写数据指令中携带需要写入的数据的LBA(Logic BlockAdress,逻辑块地址)和需要写入的数据的长度。
[0037] 202、根据本次写数据指令需要写入的数据的LBA,判断本次需要写入的数据与前一次写数据指令所写入的数据是否连续,如果否,执行203,如果是,步骤206。
[0038] 203、判断本次需要写入的数据的长度是否小于一个Page的长度,如果是,执行204,如果否,执行206。
[0039] 204、根据预置的Page区中的Page与存储介质的逻辑块的对应关系,确定本次需要写入的数据的LBA所对应的Page区中的Page,将本次需要写入的数据放入该Page中进行缓存。
[0040] 其中,由于数据的LBA是属于存储介质中某个逻辑块内的具体逻辑地址,所以根据预置的Page区中的存储单元Page与存储介质的逻辑块的对应关系,能确定本次需要写入的数据的LBA所对应的Page区中的Page。
[0041] 205、根据LBA地址与存储介质中具体物理地址的对应关系,将该Page区中的Page中缓存的数据刷Flush到存储介质中的Page中,结束本流程。
[0042] 将Page区中的Page中所缓存的数据刷到存储介质中的Page的方式可以是:在系统空闲时将Page区中的Page中所缓存的数据Flush到存储介质中的Page;或者,当新的随机数据到来,而需要缓存该数据的page中已有数据时,假定该Page中的已有数据是需要Flush到存储介质中的对应物理块的Page10的,而根据LBA地址确定本次需要缓存的数据也是需要Flush到存储介质中的对应物理块的Page10,则直接将本次需要缓存的数据放入Page区的Page中,覆盖原来的数据;否则,将该Page区的Page中所缓存的原数据Flush到存储介质中的Page,然后再将本次需要缓存的数据放入该Page区的Page进行缓存。
[0043] 206、将本次需要写入的数据放入Block区中的Block中进行缓存。
[0044] 207、根据LBA地址与存储介质中具体物理地址的对应关系,将Block区的Block中所缓存的数据Flush到存储介质中。
[0045] 其中,可以采用LRU(Least Recently Used,最近最久未使用算法)或者RBLRU(Block Padding Least Recently Used)方法将Block区的Block中所缓存的数据Flush到存储介质中。
[0046] 例如,假定Cache中Block区有两个Block,写3次数据,第一次写数据时将数据放入Cache中第一个Block进行缓存,第二次写数据时将数据放入Cache中第二个Block进行缓存,第三次写数据时,如果这两个Block都装有数据,可以将Cache中第一个Block中的数据刷到存储介质的具体物理块中,再将第三次需要写入的数据放入Cache中第一个Block中进行缓存。
[0047] 本发明实施例一在需要写入的数据长度小于Page的长度时,将数据放入Cache中Page区的Page中进行缓存,在数据长度大于Page的长度时,将数据放入Cache中Block区的Block中进行缓存,采用块和页联合的方式管理数据,既能保证随机IOPS的提高,又能降低管理难度,减小开销,节约了成本。
[0048] 实施例二:
[0049] 参阅图3,本发明实施例二提供一种数据读出方法,该方法具体包括:
[0050] 301、固态存储系统接收读数据指令,读数据指令中携带需要访问的LBA地址(即需要读出的数据的LBA地址)和需要读出的数据的长度。
[0051] 302、判断Cache中是否存在读数据指令需要读出的数据,如果是,则执行303;如果否,执行304。
[0052] 该步骤的具体实现方式是:根据预置的Page区中的存储单元Page与存储介质的逻辑块的对应关系,确定本次需要读出的数据的LBA所对应的Page区中的Page,在该Page区中的Page中查找是否有读数据指令需要读出的数据;和/或,在Block区的Block中查找是否有读数据指令需要读出的数据;
[0053] 该步骤中可适用于在某些数据刚写入,存储在Cache中的Page区或者Block区中,固态存储系统接收到读数据指令,直接从Cache中的Page区或者Block区中将数据读出,可以节省读数据的时间。
[0054] 其中,从Cache中的Block区中将数据读出的前提也适用于步骤308的具体描述,详见步骤308。
[0055] 303、直接从Cache中的Page区或者Block区中读出数据,并传输到主机,结束本流程。
[0056] 304、根据读数据指令中携带需要访问的LBA地址,判断本次需要读出的数据与前一次读数据指令所读出的数据是否连续,如果否,执行305;如果是,执行308。
[0057] 305、判断本次需要读出的数据的长度是否小于一个Page的长度,如果是,执行306,如果否,执行308。
[0058] 306、根据预置的Page区中的Page与存储介质的逻辑块的对应关系,确定本次需要读出的数据的LBA所对应的Page区中的Page;根据LBA地址与存储介质中具体物理地址的对应关系,从存储介质中读取数据放入所确定的Page区中的Page进行缓存。
[0059] 307、将Page区中Page所缓存的数据读出,并传输到主机,结束本流程。
[0060] 308、根据LBA地址与存储介质中具体物理地址的对应关系,从存储介质中读取数据放入Cache中Block区中的Block进行缓存。
[0061] 该步骤中可以采用预取方式,将需要读出的数据和与需要读出的数据连续的数据读出并放入Block区中的Block进行缓存,以便下一个读指令到来时,能够在Block区直接读取数据,以节省读取数据的时间。
[0062] 309、将Block区中Block所缓存的数据读出,并传输到主机。
[0063] 本发明实施例二在需要读出的数据长度小于Page的长度时,将数据放入Page区中的Page中进行缓存,在数据长度大于Page的长度时,将数据放入Block区中的Block中进行缓存,采用块和页联合的方式管理数据,既能保证随机IOPS的提高,又能降低管理难度,减小开销,节约了成本。
[0064] 参阅图4,本发明实施例三提供一种固态存储系统,包括:数据接口401、存储控制器402、Cache 403和存储介质404,
[0065] 其中,存储控制器402包括:
[0066] 第一判断单元,用于判断需要缓存的数据的长度是否小于缓存Cache中页Page的长度;
[0067] 第一控制单元,用于当第一判断单元的判断结果为否时,控制将所述需要缓存的数据放入Cache中的Block中进行缓存;
[0068] 第二控制单元,用于当第一判断单元的判断结果为是时,控制将所述需要缓存的数据放入所述Cache中的Page中进行缓存;
[0069] Cache 403,用于在所述存储控制器402的控制下,将所述需要缓存的数据放入所述Page中或者Block中进行缓存。
[0070] 其中,数据接口401,用于接收写数据指令,所述写数据指令需要写入的数据是所述需要缓存的数据;存储控制器402还包括:第二判断单元,用于判断所述写数据指令需要写入的数据与前一个写数据指令所写入的数据是否连续;具体的,第一控制单元还用于当第二判断单元的判断结果为是时,将所述需要写入的数据放入Cache中的Block进行缓存。
[0071] 数据接口401,用于接收读数据指令,所述读数据指令需要读出的数据是所述需要缓存的数据;存储控制器402还包括:第二判断单元,用于判断所述读数据指令需要读出的数据与前一个读数据指令所读出的数据是否连续;具体的,第一执行单元还用于当第二判断单元的判断结果为是时,从存储介质中读出所述数据存入Cache中的Block中进行缓存。
[0072] 优选的,存储控制器402还包括:查找单元,用于在所述Cache中查找是否有所述需要读出的数据;第三执行单元,用于当所述查找单元在所述Cache中找到所述需要读出的数据时,将所找到的数据传给主机;具体的,所述第二判断单元在所述查找单元在所述Cache中没有找到需要读出的数据时,再判断读数据指令需要读出的数据与前一个读数据指令所读出的数据是否连续。该部分可适用于在某些数据刚写入,存储在Cache中的Page区或者Block区中,固态存储系统接收到读数据指令,直接从Cache中的Page区或者Block区中将数据读出,可以节省读数据的时间。
[0073] 本发明实施例三中在需要缓存的数据长度小于缓存Cache中存储单元Page的长度时,将数据放入Cache中的存储单元Page中进行缓存,在数据长度大于缓存Cache中存储单元Page的长度时,将数据放入Cache中的Block中进行缓存,采用块和页联合的方式管理数据,既能保证随机IOPS的提高,又能降低管理难度,减小开销,节约了成本。
[0074] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,例如只读存储器,磁盘或光盘等。
[0075] 以上对本发明实施例所提供的数据管理方法及固态存储系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。