对储存系统中数据高效存储与检索的组相关哈希表组织技术方案

技术编号:14842176 阅读:121 留言:0更新日期:2017-03-17 07:30
在本文中所描述的实施例涉及将哈希用于文件系统元数据配置,这样的使用减少储存在群集的节点的存储器中的元数据的量并且减少需要在节点处处理输入/输出(I/O)请求的元数据的量。说明性地,实施例涉及布谷鸟哈希,并且尤其涉及布谷鸟哈希可以被修改并且应用到构造文件系统元数据配置的方式。在一个实施例中,文件系统元数据配置可以说明性地配置为具体化为诸如布谷鸟哈希表之类数据结构的密钥值范围储存,其中,诸如哈希表索引之类的值可以配置为索引并且应用到布谷鸟哈希表以获取例如范围密钥的密钥,该范围密钥配置为引用在例如固态驱动器(SSD)的一个或多个存储装置上的范围的位置。

【技术实现步骤摘要】
【国外来华专利技术】
本公开涉及储存系统,并且特别涉及一种对储存系统中的数据进行高效存储与检索的元数据组织。
技术介绍
储存系统通常包括一个或多个存储装置,例如具体化为硬盘驱动器(HDD)或者固态驱动器(SSD)的磁盘。根据需要可以将信息输入存储装置以及从存储装置中获取。储存系统可以实施诸如文件系统之类的高层模块以将储存在磁盘上的信息从逻辑上组织为诸如文件或者逻辑单元(LUN)之类的存储对象。每个储存容器可以被实施为诸如数据块和元数据块之类的一组数据结构,数据块用于储存器的数据,元数据块描述储存容器的数据。例如,元数据可以描述(例如识别)用于该数据在磁盘上的存储位置。在传统的文件系统中,在处理诸如读取或写入请求之类的输入/输出(I/O)请求时,可能引起大量元数据更新(变化)。也就是说,与相关联的I/O请求的(待写入)数据量成正比(即,高写入放大)的相对大量的元数据可能被写入。例如,在具有改变LUN的数据(用户数据)的写入数据的写入请求的情况下,该请求在储存系统处的处理可能需要对大量地存取磁盘以获取并且更新与变化的用户数据相关联的一个或多个间接块(元数据)。间接块的更新可能导致大量元数据变化,由此造成高写入放大。在读取请求的情况下,如果在存取磁盘上的所请求的用户数据前需要存取磁盘上的元数据,可能引起大的延迟。例如,如果需要针对每读取请求对两次磁盘存取进行平均,所产生的读取放大使性能减半。此外,如果I/O请求需要打开目录以存取文件系统元数据,这可能需要大量存取磁盘,由此引起高读取放大。通过降低处理I/O请求所需要的元数据量并且保持在储存系统的存储器例如RAM中需要的元数据的基本量,可以降低磁盘存取(读取和写入)的量,因此降低读取放大和写入放大。附图说明通过结合附图引用以下描述可以更好地理解在本文中的实施例的上述的和进一步优点,其中相同附图标记表示相同或者功能上类似的部件,其中:图1是互连为群集的多个节点的框图;图2是节点的框图;图3是节点的存储器输入/输出(I/O)堆栈的框图;图4示出了存储器I/O堆栈的写入路径;图5示出了存储器I/O堆栈的读取路径;图6是范围哈希技术的框图;图7是桶映射技术的框图;图8a是哈希表条目选择技术的框图;图8b是哈希表槽的框图;图9是范围密钥重构技术的框图;以及图10是哈希冲突技术的框图。具体实施方式在本文中所描述的实施例涉及将哈希算法用于文件系统元数据配置中,哈希算法的使用降低储存在群集的节点的存储器中的元数据的量并且降低在节点处处理输入/输出(I/O)请求所需要的元数据的量。说明性地,实施例针对布谷鸟哈希算法,并且特别针对布谷鸟哈希算法(cuckoohashing)可以被修改并且应用于构造文件系统元数据配置的方式。在一实施例中,文件系统元数据配置可以说明性地配置为具体化为数据结构(例如,布谷鸟哈希表)的密钥值范围储存,其中,诸如哈希表索引之类的值可以配置为索引并且应用于布谷鸟哈希表以获取诸如范围密钥之类的密钥,该密钥配置为引用在一个或多个诸如固态驱动器(SSD)之类的存储装置上的范围(extent)的位置。因此,布谷鸟哈希表使描述范围得范围元数据具体化,并且由此可以被组织以将SSD上的位置与索引相关联,即与哈希表索引关联的值识别SSD上的位置。有利地,文件系统元数据配置实现高度元数据压缩,从而降低读取和写入放大以及存储器需求。说明存储器群集图1是互连为群集100并且配置为提供与存储装置上的信息组织有关的存储器服务的多个节点200的框图。节点200可以由群集互连构架110互连并且包括协作地提供群集100的分布式存储器架构的功能部件,其可以在存储器区域网(SAN)中使用。正如在本文中所描述的,每个节点200的部件包括硬件和软件功能,该硬件和软件功能使节点能够经由计算机网络130连接到一个或多个主机120上以及经由存储器互连140连接到存储装置的一个或多个存储器阵列150上,由此使得存储服务符合分布式存储器架构。每个主机120可以被具体化为通用计算机,该通用计算机配置为根据消息传递的客户端/服务器模型与任何节点200交互。也就是说,该客户端(主机)可以请求节点的服务,并且该节点可以通过在网络130上交换数据包返回由主机请求的服务的结果。主机在存取以的例如文件和目录的储存器形式时的节点上的信息时可以发出包括基于文件的存取协议,例如在传输控制协议/网络协议(TCP/IP)上的网络文件系统(NFS)协议。然而,在一个实施例中,在存取以诸如逻辑段元(LUN)之类的存储容器形式的信息时,主机120说明性地发出包括基于块的存取协议的数据包,该基于块的存取协议例如为在TCP(iSCSI)上封装的小型计算机系统接口(SCSI)协议和在FC上封装的SCSI(FCP)。尤其,任何节点200可以提供针对指向储存在群集100上的储存器的请求的服务。图2是说明性地具体化为存储系统的节点200的框图,该存储系统具有经由存储器总线215耦接到存储器220上的一个或多个中央处理器(CPU)210。CPU210还经由系统互连270耦接到网络适配器230、存储器控制器240、群集互连接口250以及非易失性随机存取存储器(NVRAM280)。网络适配器230可以包括适用于将节点200经由计算机网络130耦接至主机120上的一个或多个端口,该计算机网路可以包括点到点链路、广域网、在公用网(因特网)上实施的虚拟专用网络或者局域网。网络适配器230因此包括将节点连接至网络130所需要的机械、电学以及信号电路,其说明性地具体化为以太网或者光纤通道(FC)网络。存储器220可以包括通过可由CPU210寻址的的存储器位置,用于储存与在本文中所描述的实施例关联的软件程序和数据结构。CPU210则可以包括处理部件和/或逻辑电路,其配置为诸如存储器输入/输出(I/O)堆栈300之类的执行软件程序并对数据结构进行操作。说明性地,存储器I/O堆栈300可以被实施为可以被分解成多个线程的一组用户模式处理。操作系统内核224通过特别地调用支持由节点并且具体地由存储器I/O堆栈300所实施的存储器服务的操作来在功能上组织该节点,操作系统内核224的一部分通常驻留在存储器220(核内,in-core)中并且由处理部件(即,CPU210)执行。合适的操作系统内核224可以包括通用操作系统,例如,系列或者微软系列的操作系统或者具有本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/CN105683898.html" title="对储存系统中数据高效存储与检索的组相关哈希表组织原文来自X技术">对储存系统中数据高效存储与检索的组相关哈希表组织</a>

【技术保护点】
一种方法,包括:接收具有一范围的写入请求,所述写入请求在具有处理器和存储器的储存系统处被处理,所述储存系统耦接到固态驱动器(SSD);对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器、第一哈希表索引以及第二哈希表索引;使用所述哈希表选择器从哈希表组中选择哈希表,每个哈希表被分成多个索引地址空间;使用所述第一哈希表索引作为第一索引在所述哈希表的上索引地址空间中选择第一条目,所述第一条目包括第一组槽,所述第一组槽中的每个槽包括第一密钥和第一位置域;使用所述第二哈希表索引查找所述第一组槽中的每个第一密钥;确定所述第一组槽内是否存在第一自由槽;以及响应于确定存在第一自由槽,将SSD偏移储存在所述第一自由槽的所述第一位置域中,将所述第二哈希表储存为所述第一自由槽的所述第一密钥,以及将所述范围存储在所述SSD上的所述SSD偏移处。

【技术特征摘要】
【国外来华专利技术】2014.01.17 US 14/158,6081.一种方法,包括:
接收具有一范围的写入请求,所述写入请求在具有处理器和存储器的储存
系统处被处理,所述储存系统耦接到固态驱动器(SSD);
对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器、
第一哈希表索引以及第二哈希表索引;
使用所述哈希表选择器从哈希表组中选择哈希表,每个哈希表被分成多个
索引地址空间;
使用所述第一哈希表索引作为第一索引在所述哈希表的上索引地址空间中
选择第一条目,所述第一条目包括第一组槽,所述第一组槽中的每个槽包括第
一密钥和第一位置域;
使用所述第二哈希表索引查找所述第一组槽中的每个第一密钥;
确定所述第一组槽内是否存在第一自由槽;以及
响应于确定存在第一自由槽,将SSD偏移储存在所述第一自由槽的所述第
一位置域中,将所述第二哈希表储存为所述第一自由槽的所述第一密钥,以及
将所述范围存储在所述SSD上的所述SSD偏移处。
2.根据权利要求1所述的方法,还包括:
使用所述第二哈希表索引作为第二索引在所述哈希表的上索引地址空间中
选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括第
二密钥和第二位置域;
使用所述第一哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将所述SSD偏移储存在所述第二位置域中,
将第一哈希表索引储存为所述第二自由槽的所述第二密钥,以及将所述范围存
储在所述SSD上的所述SSD偏移处。
3.根据权利要求2所述的方法,其中,所述第一组槽中的第一数量的槽不

\t同于所述第二槽中的第二数量的槽。
4.根据任一前述权利要求所述的方法,其中,所述哈希值还包括额外密钥
位,并且其中,所述第一组槽的每个槽还包括所述额外密钥位。
5.根据任一前述权利要求所述的方法,所述第一组槽的每个第一密钥缓存
在所述储存系统的所述处理器的一个或多个缓存器行内。
6.根据任一前述权利要求所述的方法,其中,所述第一组槽的每个槽还包
括长度,该长度指示SSD上的一数量的分段。
7.根据任一前述权利要求所述的方法,其中,所述哈希表组的每个表中的
每个条目的每一组槽的槽总数大于221,并且其中,所述哈希表组驻留在所述存
储器中。
8.根据任一前述权利要求所述的方法,其中,所述第一组槽的每个槽还包
括引用计数,该引用计数指示对所述范围的一数量的引用。
9.根据权利要求1所述的方法,还包括:
将所述第一组槽中的第一密钥中的一个匹配至所述第二哈希表索引;
生成第一候选哈希表索引;
使用所述第二哈希表索引作为第二索引在所述哈希表的上索引地址空间中
选择第二条目,所述第二条目包括第二组槽,所述第二组槽中的每个槽包括在
所述SSD上的数据的第二密钥和第二位置域;
使用所述第一哈希表索引查找所述第二组槽中的每个第二密钥;
确定所述第二组槽内是否存在第二自由槽;以及
响应于确定存在第二自由槽,将所述SSD偏移储存在所述第二位置域中,
将第一哈希表索引储存为第二自由槽的所述第二密钥,以及将所述范围储存在
所述SSD上的所述SSD偏移处。
10.一种方法,包括:
接收具有一范围的写入请求,所述写入请求在具有处理器和存储器的储存
系统处被处理,所述储存系统耦接到固态驱动器(SSD);
对所述范围应用哈希函数以生成哈希值,所述哈希值包括哈希表选择器和
第一哈希表索引(K1,K2);
将所述哈希值的哈希空间划分为表示所述范围的一数量的桶;
使用所述哈希表选择器从哈希表组中选择第一哈希表;
使用所述第一哈希表索引的K1哈希表索引对所述第一哈希表进行索引以
从所述第一哈希表中选择第一条目,所述第一条目包括第一组槽,所述第一组
槽中的每个槽包括第一密钥;
将所述第一组槽中的每个第一密钥匹配至所述第一哈希表索引的K2哈希
表索引;
将所述数量添加至所述哈希值的一部分以生成包括第二哈希表索引(K3,
K4)的候选范围密钥;
使用K3哈希表索引对第二哈希表进行索引以选择第二条目,所述第二条

【专利技术属性】
技术研发人员:杰弗里·S·基梅尔T·拜伦·拉吉吉斯
申请(专利权)人:网络装置公司
类型:发明
国别省市:美国;US

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

1