数据存储系统的操作处理方法,数据存储系统的制作方法

文档序号:6372443阅读:222来源:国知局
专利名称:数据存储系统的操作处理方法,数据存储系统的制作方法
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据存储系统的操作处理方法,数据存储系统。
背景技术
网络缓存(Web Cache)需要对热点数据进行缓存,网络服务器(Web Server)需要对海量数据存储,大量的Web网页和视频文件也需要进行高性能存储。而用户体验Web访问的关键指标的一环是快速的数据存储、索引、读取。目前现有技术中,第三扩展文件系统(Third extended file system, Ext3)是Linux系统中通用、常见的文件系统,可以利用它存储海量的关键字(Key)数据。其中,Ext3 目录的存储结构类似于树状,Ext3目录的索引技术是根据每个目录项名称的hash值来确定这个文件放在Htree的哪个页节点上。每个目录文件的Htree结构包括索引块或目录项块,每个索引项包含一个hash key值和一个指向目录项块的逻辑指针,目录项块包含正常的目录项(directory entry)列表。Ext3支持一级或二级目录索引块,当根(root)索引块满时,就会由一级索引变为二级索引。因此,通过Ext3中文件到存数据文件数据的磁盘数据块的映射就具有了间接索引的方式一次间接索引,先找到索引块,再通过索引块里索引数据,找到存储数据的块号,才能定位到实际的数据存储块;二次间接索引,先找到二次间接索引块,从中得到一次索引块,在该一次索引块中得到索引块的块号,最后通过该索引块的块号,再得到索引块的数据,从而定位到数据的位置。这样在目录中查找文件时,遍历其下的所有记录,并与要查找的文件名比较,当名称相同时,则查找成功。然而,如果文件目录很深或者目录下文件很多(如超过1000个),访问文件时要经过多个层级的目录读取以及最后目录下的匹配比较,访问性能会很差。因此,现有技术中通过目录组织访问磁盘时,存在访问性能差的缺陷。

发明内容
本发明实施例提供一种数据存储系统的操作处理方法,数据存储系统,可以提高磁盘访问性能。本发明实施例一方面提供一种数据存储系统的操作处理方法,数据存储系统的存储磁盘包括哈希表、数据块和索引块,方法包括接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;根据数据标识从哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系;从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识;对数据块的标识对应的数据块进行相应的数据操作处理。本发明实施例另一方面提供一种数据存储系统,数据存储系统的存储磁盘包括哈希表、索引块和数据块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据表示所标识数据的数据块的映射关系,系统还包括接口单元,用于接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;第一获取单元,与接口单元连接,用于根据数据标识从哈希表中获取对应的索引块,并发送给第二获取单元;第二获取单元,与第一获取单元连接,用于从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,并发送给操作处理单元;
操作处理单元,与第二获取单元连接,用于对数据块的标识对应的数据块进行相应的数据操作处理。本发明上述实施例中,通过在数据存储系统的存储磁盘包括哈希表桶、数据块和索引块,从而使该系统的操作方法为首先接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;再根据数据标识从哈希表桶里的哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系;接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识。相对于现有技术中通过目录组织访问磁盘,能够有效提高访问速度,提高磁盘的访问性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例提供的一种数据存储系统的操作处理方法的流程图;图2为本发明实施例提供的一种数据存储系统的数据写入方法的流程图;图3为本发明实施例提供的一种数据存储系统的数据覆盖写入文件的示意图;图4为本发明实施例提供的一种数据存储系统的数据覆盖写入方法的示意图;图5为本发明实施例提供的一种数据存储系统的数据读取方法的流程图;图6A为本发明实施例中数据块读取的示意图一;图6B为本发明实施例中数据块读取的示意图二 ;图7为本发明实施例提供的一种数据存储系统的数据删除方法的流程图;图8为本发明实施例提供的一种数据存储系统的构架示意图;图9为本发明实施例提供的另一种数据存储系统的构架示意图;图10为本发明实施例提供的一种数据存储系统操作示意图;图11为本发明实施例提供的一种数据存储系统的磁盘布局图;图12为本发明实施例提供的一种数据存储系统中写入处理单元的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图I为本发明实施例提供的一种数据存储系统的操作处理方法的流程图。如图I所示,数据存储系统的存储磁盘包括哈希表桶、数据块和索引块,该数据存储系统的操作处理方法包括步骤101、接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识。 本实施例中数据操作处理请求消息中携带的数据标识为数据在存储磁盘中的唯一标识,可以用关键字key表示,也可以是表示为哈希地址id,在此不作限制。步骤102、根据数据标识从哈希表桶里设置的哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系。哈希表以表桶的方式存储在哈希表桶内,哈希表存储有索引块的信息,即查找索引块时需要的信息。具体而言,哈希表也称为散列表,是一种根据数据标识来直接进行访问的数据结构。也就是说,通过把数据标识映射到哈希表中一个位置来访问记录,以加快查找的速度,其中,这个位置的记录中可以包括有索引块的地址。哈希表是通过哈希计算将比较大的数据存放到相对较小的空间中,而哈希表的空间相对较小,会产生两个不同的数据标识被映射到同一哈希表的位置上而产生冲突(collision),可以采用开链法解决,具体而言,就是从位图区域的磁盘管理模块中申请一个空闲块作为新的Hash表的存储空间,并将现有Hash表链接到新的Hash表,其中,空闲块内的所有索引记录都是在冲突链上的,冲突链可以是链表的形式,且各节点物理不连续,也可以是连续的。本实施例中解决哈希表的冲突不局限于此,可以用其它数据结构如B树去组织冲突记录,凡是本领域技术人员使用的能解决哈希表的冲突的其它方法均可。需要说明的,根据关键字key应用哈希函数HashFunl,即Hash值index =HashFunc I (key),可以得到对应的索引块的地址,如果没有在正查找的索引块中找到对应的索引块地址,可以继续查询向后的索引块直至查找到,或者返回查询失败。索引块保存了共有此Hash值的所有记录的索引信息,而一个索引块的空间不够存储索引记录时,则会产生冲突,本实施例使用开链法解决冲突。具体而言是从位图区域的磁盘管理模块中申请一个空闲块作为新的索引块,并将现有索引块与新的索引块相链接。在磁盘空间足够的情况下,可以通过这种单向串联的方式存储无限多的索引记录。图6A为本发明实施例中数据块读取的示意图一。图6B为本发明实施例中数据块读取的示意图二。如图6A和图6B所示,索引块可以包含如下区域头部区域、串联指针、最大最小id、记录区域,需要说明的是记录区域可以有多个,例如记录区域I直到记录区域n,本实施例中索引块包括的区域不以此为限,索引块可以包括上述区域的几个、全部或是在此基础上再增加其它区域。其中,头部区域保存有该索引块的基本信息,例如单个记录的大小、总的记录个数、实际的记录个数及记录在索引块中的起始位置,本实施例不以所列举的基本彳目息为限。串联指针,保存有下一个索引块的彳目息。最大最小id,是指对关键字Key应用哈希函数HashFunC2后得到的索引记录在本索引块的位置范围。其中,最大最小id是为索引定位使用,可以快速确定索引记录是否在该索引块中。记录区域保存有该索引块中所有的索引记录,主要包含数据在数据块的哈希地址id、数据在数据块的范围,也就是索引块的位置信息、数据块号,也可以包含有该索引记录的哈希地址id或关键字(key)所对应的其它信息,如创建时间、修改时间、删除时间或使用者的信息。步骤103、从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识。也就是说,从索引块的索引记录中查找存储有数据标识的数据块的标识,数据块的标识可以是数据块的地址。索引记录可以按照一定的数据结构存储的方式进行查找,如排序算法、二叉树,使用一定算法的查找可以减少在查找过程中匹配的次数,从而加速查询。因为一个索引块可以保存很多索引记录,如果应用一定的算法对索引记录进行查找匹配,可以在插入、删除或读取数据时,减少对数据块的频繁操作。步骤104、对数据块的标识对应的数据块进行相应的数据操作处理。
本实施例中对数据块进行相应的数据操作处理,可以包括读取数据、写入数据和删除数据,其中,写入数据类型可以包括有新写入、覆盖写和追加写。在读取数据与写入数据操作并行处理时,通过对写入类型的判断,可以判定写入数据与读取数据是否在同一数据块中操作,如果不是,可以并行操作读取数据与操作数据,提高读写并发性能。本实施例通过将数据存储系统的存储磁盘划分为包括哈希表桶、数据块和索引块的区域,可以简化该系统的操作方法,首先接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;再根据数据标识从哈希表桶里的哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系;接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识;从而使该系统操作方法的步骤简化,进而可以一定程度的提高磁盘的访问性能。本实施例,可选的,数据存储系统还可以包括缓冲区,缓存管理主要是将部分数据块的数据设置在内存中,在进行访问时可以直接从内存中访问,方便访问,从而提高访问速度。在接收数据操作处理请求消息后,首先在缓冲区中根据数据标识从哈希桶的哈希表中获取对应的索引块的地址,具体步骤与上述实施例中步骤102相同,在此不再说明,与上述实施例步骤102区别在于与数据标识对应的哈希表桶所处位置不同,本实施例的哈希表桶位于缓冲区,也就是说,本实施例中是根据数据标识从位于缓冲区中的哈希表桶的哈希表中获取对应的索引块信息。接着,从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,与上述实施例步骤103的相同部分在此不再说明,区别在于索引块位于缓冲区中,具体而言,是从位于缓冲区中的索引块的索引记录中获取存储数据标识所标识数据的数据块的标识。将部分数据块设置在缓冲区中,可以方便访问,而且对于固态硬盘(solid state disk, SSD)来说,操作次数过多会影响其使用寿命,例如在写入操作时,可以先写入在缓冲区,到一定次数后再同步到磁盘,这样减少了写磁盘的次数,同时也可以提高磁盘的寿命。图2为本发明实施例提供的一种数据存储系统的数据写入方法的流程图;如图2所示,数据存储系统的数据写入方法包括接收数据操作处理请求消息,其中,数据操作处理请求消息可以为写数据请求消息,写数据请求消息中还携带有偏移值(offset)和数据信息(data),其中,写数据请求消息中还可以包括有从索引块的索引记录中还可以获取数据块中已有数据的存储范围,对数据块的标识对应的数据块进行相应的数据操作处理。相应的数据操作处理是根据偏移值来判断写数据请求消息对应的写入类型,写入类型包括覆盖写、追加写或新写入。其中,覆盖写是指在已有数据区域写入新数据;追加写是指在已有数据区域之后写入数据;其它情形则是新写入。数据存储系统的数据写入方法具体步骤包括步骤201、接收写数据请求消息。其中,写数据请求消息中可以携带偏移值(offset)和数据信息data、关键字(key)、写数据的大小(size),如write (key, offset, size, data),或者是仅携带数据信息,即表不成write (data)。步骤202、根据数据标识从哈希表桶的哈希表中获取对应的索引块,也就是,根据关键字key应用哈希函数HashFunl,即index = HashFuncl (key),可以得到对应的索引块 的哈希地址。步骤203、从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,可以根据关键字key应用哈希函数HashFun2,生成一个索引记录的哈希地址id。需要说明的,在设计哈希表时,可以根据消息摘要算法第五版(Message Digest Algorithm, MD5)或安全哈希算法(SHAl),使应用哈希函数HashFunc2得到的索引记录的哈希地址id不冲突或者冲突的几率比较小。步骤204、将新生成的索引记录的哈希地址id与索引记录匹配,也就是说,在索引记录中将应用哈希函数HashFunc2得到的索引记录的哈希地址id与索引记录匹配,可以采用排序算法或二叉树,在此不限制在索引记录中查找数据块标识的方法。如果匹配成功进入步骤205,否则匹配失败,返回失败消息。步骤205、根据偏移值判断写数据请求消息对应的写入类型。可以根据偏移量(offset)在数据块中数据的长度范围(range)的情况判定写入类型。具体包括如果偏移量(offset)在数据块中数据的长度范围(range)之中,则写入请求消息对应的写入类型为覆盖写时,进入步骤2051 ;如果偏移量(offset)在数据块中数据的长度范围(range)之后,则写入请求消息对应的写入类型为追加写,进入步骤206 ;其它则是新写入,进入步骤206。判断写入类型为覆盖写时,将数据信息写入到对应的数据块中包括一下步骤步骤2051、生成一个新数据块的版本号及数据块地址id,根据新版本号和关键字key,应用HashFun2,生成一个准备进行覆盖写操作的新的数据块地址id。步骤2052、查找该数据块地址id的数据是否存在,如果该数据块地址id的数据块内有数据,则返回步骤2051,再生成一个新版本号,并根据新版本号和关键字key,应用HashFun2生成新的数据块地址id,直到查找该数据块地址id的数据块内没有存储任何数据;如果该地址id数据块内没有任何数据存在,则进入下一步骤2053 ;步骤2053、向磁盘管理模块申请一个新的数据块,再将原来的数据块复制到新数据块中,其中,磁盘管理模块位于位图区域。步骤2054、将原有的数据块移除到回收区域,其中,用于存储被删除的数据块的回收区域设置在存储磁盘中,存储磁盘中还包括有用于分配数据块的位图。步骤2055、返回数据块的标识,数据块的标识可以包括有新版本号。步骤206、根据写入类型将数据信息写入到对应的数据块中。本实施例根据写数据请求消息的数据标识从哈希表中获取对应的索引块,接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,再将数据写入数据块中,其中写入方法包括覆盖写、新写入和追 加写。在该数据存储系统的数据写入方法中,可以通过一次查找就查找到相应的索引块,从而可以简化该系统的操作方法,进而可以提高磁盘的访问性能。图3为本发明实施例提供的一种数据存储系统的数据覆盖写入文件的示意图;图4为本发明实施例提供的一种数据存储系统的数据覆盖写入方法的示意图。如图3和图4所示,原文件包括四个数据块blockl、block2、block3和block4,将新数据覆盖数据块block3的原数据时,首先根据在索引记录中匹配到的哈希地址id,在索引记录中查找需要进行覆盖写的数据块,也就是在索引记录存储的所有数据块的位置范围内匹配索引记录中的数据块号。以整个数据块为单位进行更改,在磁盘管理模块中申请一个新的数据块Block3’,将原来的数据块复制到新数据块Block3’中,再向数据块Block3’写入新数据,并生成新的版本号,同时将原有数据块block3移至到回收区域。这样实施的覆盖写法,可以将其余数据块不更改,并将新生成的版本号保存在应用层中,对应用层而言,可以继续使用被覆盖的数据,即延迟删除功能。当对原有数据块block3的部分数据改写时,写时复制技术可以满足以下四点,一)被覆盖的原文件可以正常使用;二)新写数据不会影响对原来文件的数据块的操作;三)在覆盖写的操作中,对需要更改的数据更改很少,不会造成恶化写入性能;四)只需要申请需要更改的数据块,空间占用少。而且对用户来说,对新文件的读取包括blockl、2、4和新数据块block3’,相对而言,新数据块block3’是新申请的,可以减少数据空间的占用和写入开销。并且以前的旧数据block3也可以继续被访问。图5为本发明实施例提供的一种数据存储系统的数据读取方法的流程图。如图5、图6A和图6B所示,数据操作处理请求消息为读数据请求消息,即read (key, offset, size),则数据方法包括步骤501、接收读数据请求消息。其中,该消息携带有偏移值(offset),关键字(key)和期望读取的数据大小、(size),如 read (key, offset, size)。步骤502、根据数据标识从哈希表桶的哈希表中获取对应的索引块,也就是说,根据关键字key应用哈希函数HashFunl,即哈希值index = HashFuncl (key),可以得到对应的索引块的哈希地址,其中,关键字key在磁盘中是唯一的数据标识。步骤503、从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,可以根据关键字key应用哈希函数HashFun2,生成一个新的索引记录的哈希地址id。步骤504、判断在索引记录中与新生成的索引记录的哈希地址id的匹配结果,与新生成的新的标识id的匹配方法可以采用排序算法、二叉树,在此不限制在索引记录中查找数据块标识的方法。如果匹配成功进入步骤507,否则进入步骤505。步骤505、进入回收区查找。在未从索引块的索引记录中获取到存储数据标识所标识数据的数据块的标识时,根据数据标识从回收区域中获取存储数据标识所标识数据的数据块的标识。回收区记录着被删除的对象信息,具体包括索引的标识和对象的存储数据块,可以在后续的读取中使用。回收区域在磁盘空间不足时会被强制回收,回收区域可以使用最近最少使用算法(Least Recently Used, LRU)判断需要彻底删除的数据块。步骤506、判断在回收区域中与新生成的索引记录的哈希地址id匹配结果,如果查找的结果与新生成的索引记录的哈希地址id匹配,则进入步骤507 ;否则返回失败信息。步骤507、读取数据,也就是说,读取与新的索引记录的哈希地址id匹配的数据块的数据,在回收区域中,从数据块的标识对应的数据块中读取数据标识所标识数据,也可以从索引块的索引记录中,从数据块的标识对应的数 据块中读取数据标识所标识数据。步骤508、返回成功信息。本实施例根据数据读取请求消息的数据标识从哈希表中获取对应的索引块,接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,再对数据块进行相应的操作。在该数据存储系统的数据读取方法中,可以一次查找就查找到需要的索引块,从而可以简化该系统的操作方法,进而可以一定程度的提高磁盘的访问性能。图7为本发明实施例提供的一种数据存储系统的数据删除方法的流程图;如图7所示,数据存储系统的数据删除方法的步骤601-步骤604与上述实施例中的步骤501-步骤504基本相同,相同部分不再说明,区别在于,步骤601所接收的数据操作处理请求消息是删除数据请求消息,其中,该消息携带有数据信息(key),其中,key是关键字也是存储磁盘中的唯一标识,删除数据请求可以表示为delete (key)。判断在索引记录中与新生成的新的标识id的匹配结果,如果匹配成功进入步骤605,否则返回失败信息。步骤605、根据查找的结果,将该数据块移除到回收区域。步骤606、返回成功信息。本实施例根据数据删除请求消息的数据标识从哈希表中获取对应的索引块,接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,再将数据块移除到回收区域。在该数据存储系统的数据删除方法中,可以一次查找就查找到需要的索引块,从而可以简化该系统的操作方法,进而可以一定程度的提高磁盘的访问性能。图8为本发明实施例提供的一种数据存储系统的架构示意图。如图8所示,数据存储系统的存储磁盘包括哈希表桶、索引块和数据块,其中,哈希表桶里设置的哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据表示所标识数据的数据块的映射关系。索引块,保存有关键字Key到数据块的映射信息,可以提供定位数据块的信息;数据块数据的存储区域。存储磁盘的最小管理单元是数据块,数据块的大小影响着存储磁盘的访问性能。因此在格式化存储磁盘时可以设定数据块的大小,此值大小的设定可以具体根据存储对象的平均大小、存储对象的个数和存储磁盘总容量,对哈希表桶和数据块的大小进行调整,以得到一个较好的性能。例如固态硬盘,数据块大小的设定可以是最小擦除单元的整数倍大小。一般来说,数据块的大小需要满足较少的查找匹配次数和较少的管理空间的损耗,本实施例中数据块最小是4Kbytes,但不以此为限。本实施例的数据存储系统还包括接口单元101、第一获取单元102、第二获取单元103和操作处理单元104。
接口单元101,用于接收写数据请求消息,数据操作处理请求消息可以包括,数据读取操作、数据写入操作和数据删除操作,并且在接受倒的数据操作处理请求消息中携带有数据标识,该数据标识是数据存储系统中唯一的信息,没有与此相同的其他信息。第一获取单元102,与接口单元101连接,用于根据数据标识从哈希表中获取对应的索引块,哈希表保存有数据标识和索引块的映射关系,从哈希表得到索引块的信息后发送给第二获取单元103。第二获取单元103,与第一获取单元102连接,用于从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识,其中,每个 索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系,从索引块得到数据块的标识后发送给操作处理单元104。操作处理单元104,与第二获取单元103连接,用于对数据块的标识对应的数据块进行相应的数据操作处理。本实施例数据存储系统的存储磁盘可以包括哈希表桶、索引块和数据块,该系统还包括接口单元101、第一获取单元102、第二获取单元103和操作单元104。进而在该系统的操作方法上可以通过哈希表桶内设置的哈希表,进行一次查找就可以查找到与数据请求信息相对应的索引块,从而可以简化该系统的操作方法,进而可以一定程度的提高磁盘的访问性能。在上述技术方案的基础上,可选的,数据存储系统还包括一个基本且重要的模块缓冲区,具体而言,缓冲区是将部分数据块的数据设置在内存,以提高访问速度。磁盘布局和存储数据组织直接影响着缓冲区内数据的设置。在接口单元101接收到写数据请求消息时,首先将该消息传递到缓冲区中的哈希表中,具体而言,第一获取单元102根据写数据请求消息中携带的数据标识从位于缓冲区中的哈希表中获取对应的索引块。从哈希表得到索引块的地址后,第二获取单元103从位于缓冲区中的索引块的索引记录中获取存储数据标识所标识数据的数据块的标识。图9为本发明实施例提供的另一种数据存储系统的架构示意图。如图9所示,在上述技术方案的基础上,可选的,数据存储系统还可以包括第三获取单元105,与第二获取单元103连接,用于在数据操作处理请求消息为读数据请求消息,且第二获取单元103未从索引块的索引记录中获取到存储数据标识所标识数据的数据块的标识时,可以根据数据标识从回收区域中获取存储数据标识所标识数据的数据块的标识,再将从索引块得到数据块的标识发送给操作处理单元104 ;具体而言,操作处理单元104可以用于从第二获取单元103或第三获取单元105获取的数据块的标识对应的数据块中读取数据标识所标识数据。需要说明的,本实施例的存储磁盘是裸设备磁盘,也称为裸分区(原始分区)设备,是一种没有经过格式化,在Unix/Linux操作系统中可以不通过文件系统来读取的块设备,在裸设备磁盘中的数据操作可以不经过文件系统的缓冲,由应用程序直接对它进行操作。裸设备磁盘是作为一个设备被操作系统所管理的。依据磁盘驱动,系统可以进行数据的实际操作。接口单元101可以提供和外部的操作接口,包括有基本操作和管理操作,其中,基本操作有数据的读取、数据的写入和数据的删除,管理操作可以包括有格式化和加载。图10为本发明实施例提供的一种数据存储系统操作示意图。如图10所示本实施例的该操作可以是数据的读取、数据的写入和数据的删除,在此不作限制I、通过接口单元调用打开裸设备的文件系统;2、向裸设备管理发送读取数据请求;3、裸设备管理接收得数据与到缓冲区数据匹配,并判断是否匹配成功,如果匹配成功直接从缓冲区返回,如果匹配失败,进入步骤4 ;4、裸设备管理向磁盘驱动发送请求,并调用文件系统的操作;5、磁盘驱动定位具体的磁盘位置,并对该位置的数据磁盘进行写入操作。需要说明的,数据读取操作与图9流程相同,数据删除操作的步骤与图10流程中 的步骤I-步骤3相同,在此不再一一说明。 图11为本发明实施例提供的一种数据存储系统的磁盘布局图。如图11所示,存储磁盘可以包括超级块、Hash表桶、回收区域、位图区域、索引块区域、数据块区域。其中,超级块记载有该存储磁盘的基本信息,如存储磁盘总的大小、使用情况、存储磁盘中数据块的数量、hash表大小、索引块大小,回收区域大小、块位图大小,及索引块中的索引记录大小和索引记录个数等信息。位图区域记录有所有数据块的使用情况,即已使用和未使用的情况。例如对于固态硬盘的磁盘,位图区域的记录影响到磁盘的分配顺序,也直接影响到对磁盘的使用寿命,因此在访问磁盘时,可以根据磁盘块的顺序,按照从前向后的顺序分配,这样可以保证每个磁盘块的写入次数比较均衡,从而延长固态硬盘的寿命。对于硬盘驱动器(Hard Disk Drive, HDD),因为机械磁头的影响,可以连续性地分配磁盘块,以延长硬盘驱动器的寿命。其余区域已在上述实施例中说明,在此不再一一赘述。本实施例中,可以考虑实际的性能,以及在磁盘初始化时根据磁盘空间、总的记录数,设计合适的hash表的大小、数据块的大小,以得到最佳的访问性能。基于上述的实施例,数据存储系统的缓冲区中可以包括有该磁盘区的管理实例、超级块、Hash表、回收区域、位图区域、索引块区域、数据块区域中的一种或几种组合。其中,该磁盘区的管理实例提供裸设备管理程序使用。回收区域,可以将已经删除的数据块的数据保存在回收区域,以供延迟删除模块使用。在裸设备管理的启动运行过程中延迟删除模块生效,可以访问已经删除的数据,然而重新启动后,此部分数据可以永久删除,因此可以将回收区域设置在缓冲区,本实施例不局限于此,也可以将它设置在磁盘中。其中,超级块、Hash表、位图区域、索引块区域的具体描述与上述实施例中的非缓冲区的磁盘结构相同,在此不再说明。可以将该磁盘区的管理实例、超级块、整个Hash表数据、位图、索引块和部分的数据块常驻于缓冲区。选择常驻于缓冲区的部分数据块的方法,可以通过最近最少使用算法或其他智能高速缓冲存储器的算法。在数据存储系统,进行读数据操作时,如果可以直接在缓冲区中选择到需要读取的数据,则直接从缓冲区读取数据。进行写入数据操作时,如果可以在缓冲区查找到需要写入的数据块,则直接写入数据在缓冲区中,并由用户根据显示同步或者替换的操作再将更改的数据同步到磁盘中。通过将经常访问的数据块放置在缓冲区中,可以加快访问速度。图12为本发明实施例提供的一种数据存储系统中写入处理单元的结构示意图。如图12所示,接口单元接收数据操作处理请求消息为写数据请求消息时,写数据请求消息中可以携带有偏移值(offset)和数据信息(data),写数据请求消息还可以包括数据大小尺寸(size)和关键字(key),根据数据信息从哈希表中获取对应的索引块,再从索引块的索引记录中获取数据块中已有数据的存储范围,其中,数据块的信息中携带有数据的长度范围(range)的数据,操作处理单元可以根据数据请求消息中的偏移量(offset)在数据块中数据的长度范围(range)判定写入类型,其中操作处理单元包括第一判断子单元1041,用于根据偏移值判断写数据请求消息对应的写入类型,写入类型包括覆盖写、追加写或新写入;具体而言,如果偏移量(offset)在数据块中数据长度的范围(range)之中,则写入请求消息对应的写入类型为覆盖写时;如果偏移量(offset)在数据块中数据的范围(range)之后,则写入请求消息对应的写入类型为追加写;其它则是新写入。写操作子单元1043,用于根据写入类型将数据信息写入到对应的数据块中。具体方法与上述实施例图3的方法相同,在此不再说明。
在上述技术方案的基础上,可选的,接口单元接收的写数据请求消息中还携带有数据大小值,数据存储系统还包括有第二判断单元1042,用于根据偏移值和数据大小值判断确定待写入的数据处于数据块的空间时,返回写入失败错误。也就是说,第二判断单元1042可以根据偏移值和数据大小值判断确定待写入的数据处于数据块的空间位置,如果偏移值和数据大小值超过数据块的空间范围时,则不写入任何数据,并返回写入失败错误。如果偏移值和数据大小值在数据块的空间范围内时,则进行写入操作。在本实施例中,存储磁盘还可以包括有用于分配数据块的位图,以及用于存储被删除的数据块的回收区域,在写入请求消息对应的写入类型为覆盖写时,写操作子单元1043具体用于将数据块移除到回收区域;从位图区域的磁盘管理模块中申请新数据块,并生成数据块的标识;将数据信息写入到新数据块中。本实施例的具体实现方法与上述实施例步骤2051-步骤2054相同,在此不再——赘述。在上述实施例的基础上,可以增加预取功能。当读取数据时,可以根据访问模式或读取接口显示的指明对象的方式,预先读取磁盘块到缓冲区,当再次读取数据请求时,可以直接从缓冲区中读取,进而提磁盘的访问高性能。本实施例数据存储系统的数据操作处理请求消息为写数据请求消息,写数据请求消息中还携带有偏移值和数据信息,从索引块的索引记录中还获取数据块中已有数据的存储范围,操作处理单元包括有第一判断子单元1041、写操作子单元1043和第二判断单元104。在该系统的写入数据操作时可以通过哈希表桶内设置的哈希表,进行一次查找就可以查找到与数据请求信息相对应的索引块,从而可以简化该系统的操作方法,进而可以一定程度的提高磁盘的访问性能。基于上述实施例,通过在数据存储系统的存储磁盘包括哈希表桶、数据块和索引块,从而使该系统的操作方法为首先接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;再根据数据标识从哈希表桶里的哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系;接着从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识;进而可以一定程度的提高磁盘的访问性倉泛。本领域普通技术人员可以理解实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种数据存储系统的操作处理方法,其特征在于,所述数据存储系统的存储磁盘包括哈希表桶、数据块和索引块,所述方法包括 接收数据操作处理请求消息,所述数据操作处理请求消息中携带有数据标识; 根据所述数据标识从所述哈希表桶里设置的哈希表中获取对应的索引块,所述哈希表中存储有数据标识和所述索引块的映射关系,每个索引块中存储有索引记录,所述索引记录中包括有所述数据标识和存储所述数据标识所标识数据的数据块的映射关系; 从所述索引块的索引记录中获取存储所述数据标识所标识数据的数据块的标识; 对所述数据块的标识对应的数据块进行相应的数据操作处理。
2.根据权利要求I所述的数据存储系统的操作处理方法,其特征在于,所述数据存储系统还包括缓冲区,所述根据数据标识从哈希表中获取对应的索引块具体为 根据所述数据标识从位于缓冲区中的哈希表中获取对应的索引块; 所述从索引块的索引记录中获取存储所述数据标识所标识数据的数据块的标识具体为 从位于缓冲区中的索引块的索引记录中获取存储所述数据标识所标识数据的数据块的标识。
3.根据权利要求I或2所述的数据存储系统的操作处理方法,其特征在于,所述数据操作处理请求消息为写数据请求消息,所述写数据请求消息中还携带有偏移值和数据信息,从索引块的索引记录中还获取所述数据块中已有数据的存储范围,所述对数据块的标识对应的数据块进行相应的数据操作处理包括 根据所述偏移值判断所述写数据请求消息对应的写入类型,所述写入类型包括覆盖与、追加与或新与入; 根据所述写入类型将所述数据信息写入到对应的数据块中。
4.根据权利要求3所述的数据存储系统的操作处理方法,其特征在于,所述存储磁盘还包括有用于分配数据块的位图,以及用于存储被删除的数据块的回收区域,在所述写入请求消息对应的写入类型为覆盖写时,所述根据写入类型将所述数据信息写入到对应的数据块中包括 将所述数据块移除到回收区域; 从位图中申请新数据块,并生成所述数据块的标识; 将所述数据信息写入到新数据块中。
5.根据权利要求I或2所述的数据存储系统的操作处理方法,其特征在于,所述存储磁盘还包括有用于存储被删除的数据块的回收区域,所述数据操作处理请求消息为写数据请求消息,所述对所述数据块的标识对应的数据块进行相应的数据操作处理包括 将所述数据块移除到回收区域。
6.根据权利要求I或2所述的数据存储系统的操作处理方法,其特征在于,所述数据操作处理请求消息为读数据请求消息,所述方法还包括 在未从所述索引块的索引记录中获取到存储所述数据标识所标识数据的数据块的标识时,根据所述数据标识从回收区域中获取存储所述数据标识所标识数据的数据块的标识; 所述对所述数据块的标识对应的数据块进行相应的数据操作处理包括从所述数据块的标识对应的数据块中读取所述数据标识所标识数据。
7.一种数据存储系统,其特征在于,所述数据存储系统的存储磁盘包括哈希表桶、索引块和数据块,所述哈希表桶里设置的哈希表中存储有数据标识和所述索引块的映射关系,每个索引块中存储有索引记录,所述索引记录中包括有所述数据标识和存储所述数据表示所标识数据的数据块的映射关系,所述系统还包括 接口单元,用于接收数据操作处理请求消息,所述数据操作处理请求消息中携带有数据标识; 第一获取单元,与所述接口单元连接,用于根据所述数据标识从哈希表中获取对应的索引块,并发送给所述第二获取单元; 第二获取单元,与所述第一获取单元连接,用于从所述索引块的索引记录中获取存储所述数据标识所标识数据的数据块的标识,并发送给所述操作处理单元; 操作处理单元,与所述第二获取单元连接,用于对所述数据块的标识对应的数据块进行相应的数据操作处理。
8.根据权利要求7所述的数据存储系统,其特征在于,所述系统还包括缓冲区,所述第一获取单元具体用于根据所述数据标识从位于缓冲区中的哈希表中获取对应的索引块; 所述第二获取单元具体用于从位于缓冲区中的索引块的索引记录中获取存储所述数据标识所标识数据的数据块的标识。
9.根据权利要求7或8所述的数据存储系统,其特征在于,所述数据操作处理请求消息为写数据请求消息,所述写数据请求消息中还携带有偏移值和数据信息,从索引块的索引记录中还获取所述数据块中已有数据的存储范围,所述操作处理单元包括 第一判断子单元,用于根据所述偏移值判断所述写数据请求消息对应的写入类型,所述写入类型包括覆盖写、追加写或新写入; 写操作子单元,用于根据所述写入类型将所述数据信息写入到对应的数据块中。
10.根据权利要求9所述的数据存储系统,其特征在于,所述写数据请求消息中还携带有数据大小值,所述系统还包括; 第二判断单元,用于根据所述偏移值和所述数据大小值判断确定待写入的数据处于所述数据块的空间时,返回写入失败错误。
11.根据权利要求10所述的数据存储系统,其特征在于,所述存储磁盘还包括有用于分配数据块的位图,以及用于存储被删除的数据块的回收区域,在所述写入请求消息对应的写入类型为覆盖写时,所述写操作子单元具体用于将所述数据块移除到回收区域;从位图中申请新数据块,并生成所述数据块的标识;将所述数据信息写入到新数据块中。
12.根据权利要求7或8所述的数据存储系统,其特征在于,所述存储磁盘还包括有用于存储被删除的数据块的回收区域,所述数据操作处理请求消息为写数据请求消息,所述操作处理单元具体用于将所述数据块移除到回收区域。
13.根据权利要求7或8所述的数据存储系统,其特征在于,还包括 第三获取单元,与所述第二获取单元连接,用于在所述数据操作处理请求消息为读数据请求消息,且第二获取单元未从所述索引块的索引记录中获取到存储所述数据标识所标识数据的数据块的标识时,根据所述数据标识从回收区域中获取存储所述数据标识所标识数据的数据块的标识;所述操作处理单元具体用于从第二获取单元或第三获取单元获取的数据块的标识对应的数据块中读取所述数据标识所标识数据。
14.根据权利要求7或8所述的数据存储系统,其特征在于,所述存储磁盘还包括 超级块,用于存储所述存储磁盘的大小、所述存储磁盘的使用状态信息、哈希表大小、数据块大小、回收区域大小、位图大小、数据块数目、索引块中索引记录的大小、索引块中索弓I记录的数目中的一项或多项组合。
15.根据权利要求7或8所述的数据存储系统,其特征在于,所述存储磁盘为裸设备磁盘。
16.根据权利要求7或8所述的数据存储系统,其特征在于,所述缓冲区中还包括超级块信息、Hash表数据、回收区域、位图区域、索引块区域、数据块区域中的一种或几种组合。
全文摘要
本发明实施例提供一种数据存储系统的操作处理方法,数据存储系统。该方法包括数据存储系统的存储磁盘包括哈希表桶和索引块,接收数据操作处理请求消息,数据操作处理请求消息中携带有数据标识;根据数据标识从哈希表中获取对应的索引块,哈希表中存储有数据标识和索引块的映射关系,每个索引块中存储有索引记录,索引记录中包括有数据标识和存储数据标识所标识数据的数据块的映射关系;从索引块的索引记录中获取存储数据标识所标识数据的数据块的标识;对数据块的标识对应的数据块进行相应的数据操作处理。本发明实施例可以通过在存储磁盘中设置哈希表桶和索引块,使该系统的操作方法进一步简化,进而可以一定程度的提高磁盘的访问性能。
文档编号G06F17/30GK102779180SQ201210222998
公开日2012年11月14日 申请日期2012年6月29日 优先权日2012年6月29日
发明者王兴勇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1