一种对象存储设备中的对象查找方法技术

技术编号:2912005 阅读:285 留言:0更新日期:2012-04-11 18:40
一种对象存储设备中的对象查找方法,属于计算机存储系统的数据存取方法,解决现有对象查找方法需要多次读盘以及查找效率低的问题。本发明专利技术包括系统初始化、对象记录插入、对象记录查找和对象记录删除步骤,执行系统初始化步骤后,等待并根据用户不同类型的操作请求,分别进入对象记录插入、对象记录查找和对象记录删除步骤。本发明专利技术直接定位要搜索的哈希桶块以及直接定位要查找的记录,将现有方法的块搜索O(n)性能和记录搜索O(n)性能都提高到O(1)的性能,避免了多次读盘和平均查找长度大的不足,从而提高了对象查找速度,同时,本发明专利技术记录管理采用动态线性哈希查找方法,空间利用率高。特别适合包含大量对象的对象存储设备。

【技术实现步骤摘要】

本专利技术属于计算机存储系统的数据存取方法,特别涉及一种对象存储设备中的对象查找方法
技术介绍
在对象存储设备中,每个对象都有一个唯一的对象标志符ObjectID,由于没有目录层次信息,所有的对象标志符构成了一个平面的名字空间。目前,还没有设立对象接口的磁盘,一种普遍的做法是用通用文件系统(如Ext2,Ext3)来对对象进行组织和管理:一个对象被映射成为一个文件,设备上的所有对象,位于文件系统中的一个大目录下面。因此,根据对象标志符定位对象索引节点的对象查找过程,被映射成为文件系统下由文件名找文件索引节点的过程,并且这一过程包括两个阶段:(1)从磁盘读取相应目录文件块到内存;(2)在相应内存块中,进行匹配查找。然而,传统文件系统在大目录下根据文件名查找文件索引节点信息时,会出现两个问题:一是目录文件需要多次读盘,二是查找子目录项的线性查找算法效率低下(它的开销为O(n))。一个对象存储设备可能包含2128个对象,面对如此巨大的平面名字空间,用传统文件系统下的方法查找对象时,上述问题将尤其突出,以至降低了对象查找操作的效率,从而严重影响了对象创建,对象删除和对象读写操作的性能。有鉴于此,如何设计一种高效的对象查找方法,从而加快对象存储设备上对象相关操作的性能显得及其重要。
技术实现思路
-->本专利技术提出一种对象存储设备中的对象查找方法,解决现有对象存储设备上对象查找方法存在需要多次读盘以及线性查找算法效率低下的问题。本专利技术将对象标识符ObjectID和磁盘上的对象索引节点的位置OnodeBlock,以记录的形式存放在磁盘块中,对象查找过程就是在这些磁盘块中查找对象记录过程。通过采用动态的线性哈希技术对记录进行管理,使得在多数情况下,只需要一次磁盘读操作便能找到对应的记录所在的磁盘块,而在对记录进行匹配的同时,由于再次采用哈希技术,也在多数情况下能一次找到想要的记录。由于减少了读盘操作次数和缩短了记录平均查找长度,使得对象查找操作的性能得到了极大的提高,特别是当OSD上包含数量巨大的对象时,这种方法的好处将更是明显。本专利技术基于动态的线性哈希查找方法,构建在如下结构之上:记录,哈希桶,哈希函数和索引结构体;其中,记录:记录由对象标志符ObjectID和对象索引节点块号BlockNum组成,其中对象标志符ObjectID为128位的无符号整数,对象索引节点块号BlockNum为相应对象索引节点(Onode)在磁盘上的块号。本专利技术中,一个对象索引节点占4096字节,里面存放对象大小、对象访问时间、对象修改时间、对象创建时间和对象数据的位置等信息。对象索引节点块号可以是磁盘上任何可能被分配的块号。在本专利技术的实施例中,对象索引节点块号为32位无符号整数,它表明对象存储设备最大可以支持232×4096字节,即16TB的容量;如果要支持更大的磁盘空间,对象索引节点块号可以取64或128位无符号整数。哈希桶:哈希桶是一个存储单元,由磁盘上固定数目的磁盘块构成,它最多存放J个记录和一个32位的溢出桶地址,所有记录的对象标志符的哈希值的右边I位均相同,I由索引结构体中指定。本专利技术的实施例中规定一个哈希桶由一个磁盘块构成,为4096字节;因此,一个哈希桶所-->包含的记录数J为204个((4096×8—32)/(128+32)后取整)。当向一个已满的哈希桶中添加新记录时,就另外创建一个同样大小的溢出桶,哈希桶包含的溢出桶地址指向该溢出桶,新记录存放在该溢出桶中。本专利技术中,使用主记录号表示根据记录哈希值算出的记录在哈希桶中的位置;使用记录号表示哈希桶中动态查找的记录位置。哈希函数:哈希函数HASH,它是一个将对象标志符ObjectID映射成一个较小的哈希值hash_value的函数。索引结构体,是一个数据结构,由I、N、R、HT 4个参数组成,其中,I为二进制形式表示的哈希值中当前被使用的位数,N为当前哈希桶数,R为当前记录总数,HT为含有N个表项的哈希表,它的每个表项存放对应哈希桶在磁盘上的地址,以便通过它可以找到对应的哈希桶。索引结构体在磁盘上的位置放在磁盘的超级块中。本专利技术的记录通过哈希桶存放在磁盘上,索引结构体存放在磁盘上,当在对象存储设备上进行对象查找,创建,删除时,哈希桶中的内容被读到内存中的映射桶中、索引结构体被读到内存中的映射结构体中进行操作,映射桶的存储空间大小和哈希桶相同,映射结构体的数据结构和索引结构体相同;操作后如果内存中的映射桶中的内容和映射结构体发生了变化,就将相关的数据写回到磁盘中原哈希桶和索引结构体的对应位置,以保证磁盘上存储的结构能正确反映当前对象存储设备上的对象名字空间。本专利技术的一种对象存储设备中的对象查找方法,包括:(1)系统初始化步骤:读取磁盘上的索引结构体块,根据其内容设置内存索引结构体的内容,等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、(4);(2)对象记录插入步骤:创建一个新对象时,将一条新的记录添加-->到对应的哈希桶中,同时,判断当前记录总数/当前哈希桶数的值是否超过给定阈值,以决定是否要添加一个新哈希桶到哈希表中;等待用户操作,分别转步骤(2)、(3)、(4);(3)对象记录查找步骤:在读对象,写对象或者查看对象属性信息时进行,根据对象标志符,通过哈希表,在哈希桶中搜索记录是否存在,是则返回要查找的对象记录,否则返回空记录信息;等待用户操作,分别转步骤(2)、(3)、(4);(4)对象记录删除步骤:在删除一个已存在的对象时,删除相应的一条记录;等待用户操作,分别转步骤(2)、(3)、(4);所述步骤(2)、(3)、(4)根据用户操作类型独立运行。所述的对象查找方法,其特征在于:(1).所述系统初始化步骤,顺序进行下述过程:(1.1)根据磁盘的超级块信息,找到磁盘上索引结构体所在的磁盘块号W,根据磁盘块号W,将磁盘上索引结构体内容读到内存中;(1.2)在内存中建立映射结构体,将映射结构体的内容,设置为读取的索引结构体的I、R、N、HT;(1.3)等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、(4);(2).所述对象记录插入步骤,根据用户创建对象操作,进行下述过程:(2.1)从内存映射结构体中,取参数I、N、R、HT,以对象标志符为关键字,根据哈希函数,计算出哈希值,取出哈希值对应的二进制形式的低I位,并将其换算为整数,记为M,置R为R+1,将区分哈希桶是否要分裂的标志Splitflag置为0;(2.2)判断是否M<N,是则顺序进行,否则转过程(2.10);-->(2.3)将第一操作桶址D1置为HT中第M项的值,将块号为D1的磁盘块内容读到内存中的第一映射桶;(2.4)主记录号H置为所述哈希值除以J的余数,第一记录号F初始化为主记录号H;(2.5)在第一映射桶中取出第F个记录,判断该记录是否为空记录,是则顺序进行,否则转过程(2.7);(2.6)将新记录添加到第一映射桶中第F个记录的位置,同时将第一映射桶的内容写回到块号为D1的磁盘块中;转过程(2.12);(2.7)第一记录号F+1后除以J,所得余数赋予F,判断是否F=H,是则顺序进行,否则转过程(2.5);(2.8)判断第一映射桶是否有溢出桶,是则顺序进行,否则转过程(2.11);(本文档来自技高网...

【技术保护点】
一种对象存储设备中的对象查找方法,包括: (1)系统初始化步骤:读取磁盘上的索引结构体块,根据其内容设置内存索引结构体的内容,等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、(4); (2)对象记录插入步骤:创建一个新 对象时,将一条新的记录添加到对应的哈希桶中,同时,判断当前记录总数/当前哈希桶数的值是否超过给定阈值,以决定是否要添加一个新哈希桶到哈希表中;等待用户操作,分别转步骤(2)、(3)、(4); (3)对象记录查找步骤:在读对象,写对象或 者查看对象属性信息时进行,根据对象标志符,通过哈希表,在哈希桶中搜索记录是否存在,是则返回要查找的对象记录,否则返回空记录信息;等待用户操作,分别转步骤(2)、(3)、(4); (4)对象记录删除步骤:在删除一个已存在的对象时,删除相 应的一条记录;等待用户操作,分别转步骤(2)、(3)、(4); 所述步骤(2)、(3)、(4)根据用户操作类型独立运行。

【技术特征摘要】
1.一种对象存储设备中的对象查找方法,包括:(1)系统初始化步骤:读取磁盘上的索引结构体块,根据其内容设置内存索引结构体的内容,等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、(4);(2)对象记录插入步骤:创建一个新对象时,将一条新的记录添加到对应的哈希桶中,同时,判断当前记录总数/当前哈希桶数的值是否超过给定阈值,以决定是否要添加一个新哈希桶到哈希表中;等待用户操作,分别转步骤(2)、(3)、(4);(3)对象记录查找步骤:在读对象,写对象或者查看对象属性信息时进行,根据对象标志符,通过哈希表,在哈希桶中搜索记录是否存在,是则返回要查找的对象记录,否则返回空记录信息;等待用户操作,分别转步骤(2)、(3)、(4);(4)对象记录删除步骤:在删除一个已存在的对象时,删除相应的一条记录;等待用户操作,分别转步骤(2)、(3)、(4);所述步骤(2)、(3)、(4)根据用户操作类型独立运行。2.如权利要求1所述的对象查找方法,其特征在于:(1).所述系统初始化步骤,顺序进行下述过程:(1.1)根据磁盘的超级块信息,找到磁盘上索引结构体所在的磁盘块号W,根据磁盘块号W,将磁盘上索引结构体内容读到内存中;(1.2)在内存中建立映射结构体,将映射结构体的内容,设置为读取的索引结构体的I、R、N、HT;(1.3)等待用户操作,根据用户操作类型,分别转步骤(2)、(3)、(4);(2).所述对象记录插入步骤,根据用户创建对象操作,进行下述过程:(2.1)从内存映射结构体中,取参数I、N、R、HT,以对象标志符为关键字,根据哈希函数,计算出哈希值,取出哈希值对应的二进制形式的低I位,并将其换算为整数,记为M,置R为R+1,将区分哈希桶是否要分裂的标志Splitflag置为0;(2.2)判断是否M<N,是则顺序进行,否则转过程(2.10);(2.3)将第一操作桶址D1置为HT中第M项的值,将块号为D1的磁盘块内容读到内存中的第一映射桶;(2.4)主记录号H置为所述哈希值除以J的余数,第一记录号F初始化为主记录号H;(2.5)在第一映射桶中取出第F个记录,判断该记录是否为空记录,是则顺序进行,否则转过程(2.7);(2.6)将新记录添加到第一映射桶中第F个记录的位置,同时将第一映射桶的内容写回到块号为D1的磁盘块中;转过程(2.12);(2.7)第一记录号F+1后除以J,所得余数赋予F,判断是否F=H,是则顺序进行,否则转过程(2.5);(2.8)判断第一映射桶是否有溢出桶,是则顺序进行,否则转过程(2.11);(2.9)将D1置为第一映射桶的溢出桶地址,将块号为D1的磁盘块内容从磁盘读到内存中的第一映射桶,转过程(2.4);(2.10)将M置为M—2(I-1),转过程(2.3);(2.11)在磁盘上分配块号为V的磁盘块作为第一映射桶的溢出桶,将第一映射桶的内容写回到块号为D1的磁盘块中;将第一映射桶的所有内容置为空,将新记录添加到第一映射桶中第H条记录位置,将第一操作桶址D1置为V,将第一映射桶的内容写回到块号为D1的磁盘块中;(2.12)判断是否R/N>t,t为给定的阈值,是则顺序进行,否则转过程(2.22);(2.13)在磁盘上分配块号为U的磁盘块为一个新哈希桶,将HT的第N项值置为U,将N置为N+1;(2.14)判断是否N>2I,是则顺序进行,否则转过程(2.16);(2.15)将I置为I+1;(2.16)判断N—1的I位二进制形式第一位是否为1,是则顺序进行,否则转过程(2.23);(2.17)将N—1的I位二进制形式的低I-1位换算成整数,记为K,将第二操作桶址D2置为HT中第K项的值,将块号为D2的磁盘块内容读到内存中的...

【专利技术属性】
技术研发人员:冯丹何水兵胡洋陆承涛庞丽萍秦亦谭支鹏谢雨来
申请(专利权)人:华中科技大学
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1