首页> 中国专利> 以太网存储区域网络中基于目标器内存设备的缓存方法

以太网存储区域网络中基于目标器内存设备的缓存方法

摘要

以太网存储区域网络中基于目标器内存设备的缓存方法属于存储区域网络存储技术领域,其特征在于:它使用由IP SAN系统目标器上丰富的DARM内存资源所构成的大容量快速设备作为缓存资源,将IP SAN系统的磁盘空间划分为大小一致的映射粒度,自动的对磁盘空间的热点粒度进行缓存,它认为某一个粒度一旦被访问即为热点粒度,并且一直认为这个粒度是热点粒度直到此粒度由于长时间没有被访问而被替换出缓存设备为止,我们针对读操作占优的应用实现了写直达策略的缓存。它可以充分利用IP SAN系统目标器上的CPU以及DRAM内存资源,减少I/O延迟,减轻存储磁盘的I/O负载从而提高系统的整体性能。

著录项

  • 公开/公告号CN1946049A

    专利类型发明专利

  • 公开/公告日2007-04-11

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200610088931.7

  • 发明设计人 舒继武;薛巍;于冰;罗轶凤;

    申请日2006-07-27

  • 分类号H04L12/46(20060101);G06F12/08(20060101);G06F12/00(20060101);H04L12/54(20060101);G06F12/06(20060101);G06F3/06(20060101);

  • 代理机构

  • 代理人

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-17 18:29:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-09-19

    未缴年费专利权终止 IPC(主分类):H04L12/46 授权公告日:20080723 终止日期:20110727 申请日:20060727

    专利权的终止

  • 2008-07-23

    授权

    授权

  • 2007-06-06

    实质审查的生效

    实质审查的生效

  • 2007-04-11

    公开

    公开

说明书

技术领域

以太网存储区域网络中基于目标器内存设备的缓存方法属于存储区域网络(SAN)存储

技术领域。

背景技术

随着处理器和内存性能的迅速增长,在信息系统中存储系统由于其磁盘的机械特性而成为整个系统的瓶颈,并且这种瓶颈作用越来越明显地制约了系统性能的提高。特别是随着近年来科学计算和高性能网络服务等应用都采用高性能的机群系统进行事务处理,存储系统所承受的压力在不断增加:存储系统往往被要求具有越来越大的存储容量,越来越快的I/O访问速度以及越来越便宜的部署成本。这样基于以太网存储区域网络(IP SAN)技术的存储系统因为容量易扩展、部署成本低廉以及使用方便的优势而受到越来越多的用户的青睐。

然而由于IP SAN系统需要花费较多的开销将SCSI命令封装成IP包进行传输,IP SAN系统的性能一直是人们所关心的问题,IP SAN系统也往往难以很好的满足应用对存储系统在性能上的要求。事实上,磁盘的寻道和旋转延迟使得IP SAN系统的I/O性能更加不能满足应用对存储系统在性能要求,尤其是对于大规模在线事务处理以及科学计算等高性能应用。这样在IP SAN系统的各个级别对热点数据加以缓存能够有效的缓解存储磁盘的I/O压力并且有效的提高IP SAN系统的存储性能。

由于随机访问DRAM资源没有寻道和旋转延迟,并且近年来DRAM密度不断增长,单位存储价格不断降低,DRAM的性能也不断提高,使用DRAM作为大容量存储设备的性价比越来越高,IP SAN系统就可以利用这样的DRAM快速设备来提高系统的性能,从而使得IP SAN技术在存储解决方案中具有越来越明显的竞争优势。IP SAN系统的目标器拥有丰富的DRAM内存资源,并且目标器的功能比较简单,只需要很少的内存资源就可以满足需求,这样剩余的DRAM就可以被用作高速存储资源,形成高速的DRAM设备。

这样,如果用户对于应用程序的行为比较了解,也就是用户能够清晰的判断应用程序所经常访问的数据,用户就可以将这些经常访问的数据放置在高速的DRAM设备中,这样就可以有效地提高存储系统的整体性能。然而通常的情况是,用户对于应用程序的行为并不是很了解,从而不能清晰的判断应用程序经常所要访问的数据,也就是用户不能提前判断应用程序所要访问的全局热点数据,这样就不可能依靠用户来人为的将热点数据放置到DRAM设备中来减轻存储磁盘的I/O压力以便提高存储系统的性能,而只能通过自动缓存热点数据来为应用程序提供尽可能多的高速的I/O。

本发明就是针对用户对于应用程序的行为不了解,不能清晰判断哪些数据是应用程序所要经常访问的热点数据的情况,在IP SAN系统的目标器上不依靠用户的干预实现了对热点数据的自动缓存,从而减轻存储磁盘的I/O压力,提高存储系统的性能。

发明内容

本发明的目的在于提供一种利用IP SAN系统目标器内存设备对IP SAN系统中的热点数据进行自动缓存的方法,它可以充分利用IP SAN系统目标器上的CPU以及DRAM内存资源,减少I/O延迟,减轻存储磁盘的I/O负载和提高系统的整体性能。

本发明的特征在于:该方法利用IP-SAN中目标器上富余的CPU以及DRAM内存资源对热点数据进行自动缓存,依次含有以下步骤:

步骤(1)在作为存储管理节点的IP SAN目标器上的SCSI目标器中间层模块上建立一个缓存管理模块,该模块和IP SAN目标器软件共同运行在IP SAN系统目标器节点的嵌入式操作系统上;

步骤(2)按以下步骤为SCSI目标器中间层命令中所包含的SCSI命令分配I/O数据缓冲区:

步骤(2.1)把该IP SAN系统的磁盘空间按照磁盘的块地址逻辑地划分为大小与缓存块大小一致的映射粒度;

步骤(2.2)当为SCSI目标器中间层命令所包含的SCSI命令分配I/O数据缓冲区时,将SCSI命令所访问数据的块起始地址和块结束地址按照磁盘空间所划分的粒度大小进行对齐,块起始地址将会被对齐到所访问数据所在的第一个磁盘粒度的块起始地址,块结束地址将会被对其到所访问数据所在的最后一个磁盘粒度的块结束地址,而所分配的数据缓冲区将用于存取磁盘空间地址位于对齐后的块起始地址和块结束地址之间的数据,这些空间对应若干个完整的磁盘存储粒度;

步骤(2.3)把一个SCSI目标器中间层命令所包含的一个SCSI命令按照其所访问的数据所跨越的所述磁盘粒度进行拆分,为数据所在的每一个磁盘存储粒度都生成一个新的SCSI命令,将原来的SCSI命令中整段的缓冲区相应地分割给每一个新生成的SCSI命令;

步骤(3)当SCSI目标器中间层命令所包含的SCSI命令为读命令时,按以下步骤执行:

步骤(3.1)以SCSI命令访问数据所在的磁盘存储粒度的块起始地址作为索引、利用一种作为可扩展哈希树的基树结构对由内存资源所组成的缓存进行快速查找;

步骤(3.2)若所要访问的数据在所述缓存中,则直接利用相应缓存块中的数据对SCSI命令的I/O数据缓冲区进行填充,并且把SCSI命令返回给IP SAN的前端启动器;否则,则直接把所要访问的数据从磁盘读入到该SCSI命令的I/O数据缓冲区中,然后再把此SCSI命令I/O数据缓冲区中的数据填充到相应的缓存块中以备后续对相同数据区的访问,填充之后把该SCSI命令返回给IP SAN的前端启动器;

步骤(4)当SCSI目标器中间层命令所包含的SCSI命令为写命令时,执行如下步骤:

步骤(4.1)在所述IP SAN前端启动器把数据写入到SCSI命令的I/O数据缓冲区后,

按步骤(3.1)所属的方法对所述缓存资源进行快速查找,以确定所要写入的数据是否在缓存中;

步骤(4.2)若在缓存中,则首先把该SCSI命令I/O数据缓冲区中的数据直接写入到磁盘中相应的区域,然后利用SCSI命令I/O数据缓冲区中的数据对缓存中相应缓存块中的数据进行更新,在更新完成后,把该SCSI命令返回给IP SAN的前端启动器;若不在缓存中,则直接把该SCSI命令的I/O数据缓冲区中的数据写入到磁盘中的相应区域,然后把该SCSI命令返回给IP SAN前端启动器。

测试结果表明:与目标器不具缓存功能的IPSAN系统相比较而言,目标器具有缓存功能的IP SAN系统的性能得到了有效的提高:对于比较典型的情况随机的请求块大小为4KB的100%读I/O请求,系统的IOPS提高了15.6倍,系统的I/O带宽提高了15.4倍,系统的平均相应时间缩短了93%。

附图说明

图1:IP SAN系统示意图。

图2:存储管理节点的硬件结构。

图3:目标器具有缓存功能的IP SAN系统软件结构。

图4:系统程序流程图。

图5:为SCSI目标器中间层命令所包含的SCSI命令分配I/O数据缓冲区时地址对齐示意图。

图6:SCSI命令拆分示意图。

图7:缓存查找示意图。

具体实施方式

IP SAN将存储设备与主机分离,对存储空间进行统一的管理和分配,其结构如图1所示。

服务器节点的硬件子系统包括INTEL CPU、标准的PCI总线、SCSI接口卡、标准的光纤网络接口卡(FC HBA)、以太网络接口卡、硬盘。服务器节点可以运行WINDOWS 2000等多种操作系统和WEB服务器软件系统。

以太网交换机采用NETGEAR GS516T千兆交换机。管理主机采用商用PC机,使用以太网络接口卡连接到以太网络,管理IP SAN系统。

存储管理节点采用商业化商用PC机如联想天瑞3130,硬件子系统的模块结构如图2。

存储管理节点的主板采用商用的服务器主板,如Supermicro(超微)公司X5DA8、X5DAE主板等,所有的CPU采用INTEL公司XEON系列CPU。存储管理节点包括2个商用的光纤通道HBA,如QLOGIC公司的QLA2310F系列,它们之间可以实现容错备份或者捆绑功能。存储管理节点包括2-3个商用的SCSI接口卡,如ADAPTEC公司的7XXX系列接口卡,他们连接高密度的磁盘阵列子系统如ISD PinnacleRAID 500。电源子系统采用目前标准的、商用的N+1方式电源如山特公司的3C3系列,FLASH DISK负责存储各种软件,如M-SYSTEMS公司的DOC2000系列。Myrinet接口卡采用Myricom公司的LANai9系列接口卡。

本项发明基于内存设备的缓存方法实现在SCSI目标器中间层模块之上,与IP SAN的目标器软件一起运行在存储管理节点上。IP SAN系统的软件结构以及缓存模块的位置如图3所示。

各软件模块的功能如下表:

     软件模块                          功能  服务器  应用程序  用户使用应用程序,产生I/O请求  SCSI驱动  启动器模式,将I/O请求转化为SCSI命令  iSCSI驱动  启动器模式,将SCSI命令打包成IP格式,在以太网络  中传输。采用启动器方式与以太网络目标器进行通信  存储管  理节点  SCSI目标  器中间层软  件  模拟SCSI目标器模式,监控SCSI命令的执行,完成  SCSI中间层目标器的工作  缓存管理软  件  为缓存命中的SCSI命令提供数据,自动实现对热点数  据的缓存,适时更新缓存中的热点数据,管理缓存资源  SCSI子系  统  管理SCSI磁盘,完成SCSI命令  iSCSI驱动  目标器模式,接收启动器发送的IP帧,还原为SCSI  命令。采用目标器方式与以太网络启动器通信

缓存管理软件作为内核模块,在存储管理节点的嵌入式操作系统中运行(操作系统在图3中没有给出,实际上所有软件部分包括的模块都运行在操作系统当中)。缓存管理软件所实现的写直达策略的缓存主要是针对有大量的突发读操作的应用程序,其程序流程如图4所示。

缓存方法主要通过对读写操作所请求的数据操作完成方法功能,过程如下:

1.为SCSI目标器中间层命令所包含的SCSI命令分配I/O数据缓冲区

IP SAN系统的磁盘空间按照磁盘的块地址被逻辑地划分为大小与缓存管理单位(缓存块)一致的映射粒度。如果缓存管理软件决定对某一个命令所访问的数据进行缓存,则必须对此命令访问的数据所在的所有的磁盘存储粒度整块进行缓存,因此在为SCSI目标器中间层命令所包含的SCSI命令分配I/O数据缓冲区的时候,需要对命令所访问数据的块起始地址和结束地址按照磁盘空间所划分的粒度大小进行对齐,分配的数据缓冲区将用来存取块地址对齐后所形成的磁盘空间中的数据,这些数据空间为若干个完整的磁盘存储粒度。比如,如果缓存块大小为128KB,则磁盘空间在逻辑上由大小为128KB的磁盘存储粒度组成,假设某一个命令需要访问地址在210KB到430KB之间的磁盘数据,这些数据所在的磁盘存储粒度为粒度2、粒度3以及粒度4,这样为此命令分配的I/O数据缓冲区大小为540KB,用以对粒度2、粒度3以及粒度4进行访问,地址对齐如图5所示。

2.SCSI命令的拆分

为了便于缓存块的查找和替换,我们将一个SCSI目标器中间层命令所包含的一个SCSI命令按照其所访问的数据所跨越的磁盘存储粒度进行了拆分,为数据所在的每一个磁盘存储粒度都生成一个新的SCSI命令,原来的整段的I/O数据缓冲区也相应地被分割给每一个新生成的SCSI命令,如图6所示,这样缓存软件将对命令拆分所生成的SCSI命令进行逐个处理。

3.在缓存中对新生成的SCSI命令所访问的数据进行查找

对于读SCSI命令,在为其分配I/O数据缓冲区并且命令拆分之后,即可在缓存中对此命令所访问的数据进行查找;对于写命令则需要在IP SAN启动器将要写入到磁盘的数据填充到此SCSI命令的I/O数据缓冲区并且返回给IP SAN目标器后再在缓存中对此SCSI命令所访问的数据进行查找并且将数据更新。缓存中所缓存的数据都是完整的磁盘存储粒度,因此我们利用SCSI命令所访问的数据所在的磁盘存储粒度的块起始地址作为索引来进行缓存查找。由于缓存容量大,缓存块数目多,我们需要一种快速有效的方法来实现对缓存的查找。我们采用已有的基树(radix tree,一种可扩展哈希树)结构来实现对数据的索引和查找,基树结构能够实现大量数据的快速查找,从而大大提高大容量缓存的查找和管理速度。

每一个基树节点都有64个关联槽,每一个关联槽可以关联一个基树节点。在利用磁盘存储粒度的块起始地址作为键值查找所索引的信息时,基树根据当前树的高度将键值拆分成若干段,我们称之为键值段,拆分所生成的每一个键值段都与基树中的一层相对应,基树会从最顶层的根节点开始依次利用键值拆分所生成的键值段进行HASH得到相对应的关联槽,然后再利用下一个键值段在得到的关联槽所对应的节点中HASH得到下一个关联槽,直到基树的叶节点层(键值拆分所生成段的最后一段)。这时候,如果叶节点中对应的关联槽为空,则所需要进行读写的数据没有在缓存中,反之,如果叶节点中对应的关联槽为非空,则关联槽中保存有相对应的缓存块的指针信息,这时候可以直接对所得到的缓存块指针所指向的缓存块进行读写操作即可,基树的查找过程如图7所示。

  基树高度  最大索引值  叶子节点最多容  纳关联槽数目  0  None  0  1  26-1=63  64  2  212-1=4 095  64  3  218-1=262 143  64  4  224-1=16 777 215  64  5  230-1=1 073 741 823  64  6  232-1=4 294 967 295  4

                 表4.1基树高度与最大索引值对照表

在使用32位的索引值的情况下,树的最大高度为6,每个叶子节点上最多4个关联槽。也就是说,在该情况下,查找一个节点一般最多需要6次访存,时间复杂度为O(1)。在空间复杂度方面,基树与普通的HASH树不同,其中不存在无孩子的节点,这就使得它可以显著的节省内存空间。

4.对需要缓存的数据进行缓存

在对SCSI命令所访问的数据进行缓存查找之后,对于读操作的SCSI命令,如果缓存命中,则直接利用缓存中的数据填充SCSI命令的I/O数据缓冲区;如果缓存没有命中,则调用SCSI驱动程序的函数将所要访问的数据从磁盘读入到SCSI命令的I/O数据缓冲区中。在数据被读入到缓冲区之后,缓存软件将缓冲区中的数据填充到缓存中,并将此SCSI命令返回给IP SAN启动器。

对于写操作的SCSI命令,则首先将SCSI命令的I/O数据缓冲区中的数据写入到磁盘中。此后,如果缓存命中,则在将SCSI命令的I/O数据缓冲区中的数据更新到相应的缓存块中之后将此命令返回给IP SAN启动器;如果没有命中,则直接将此命令返回给IP SAN启动器。

调用SCSI驱动程序的函数接口从磁盘中读取数据以及往磁盘中写入数据是一个异步的过程,因此会出现如下的这种情况:在缓存软件模块调用SCSI驱动程序函数将一个SCSI命令发往磁盘正在被执行的过程中,接着被缓存软件模块处理的SCSI命令对同一块数据进行访问。如果没有采取某种策略来确保这种情况的正确处理,可能会出现同一个磁盘存储粒度在缓存中对应有多个缓存块的现象,同时也可能会出现读取数据无效以及更新数据无效的现象。

我们采取了如下的策略来确保一个被缓存的磁盘存储粒度只对应一个缓存块:在调用SCSI驱动程序的函数之前为需要缓存的磁盘存储粒度分配一个缓存块,这样当接着被处理的SCSI命令访问同一个数据块的时候就能够得知这个磁盘存储粒度已经有某一个缓存块与之对应,从而不会为这个磁盘存储粒度重复申请缓存块。我们采取如下的策略来确保读取以及更新的数据是有效的:对于某一个SCSI命令所访问的磁盘存储粒度是需要被缓存的情况,在此SCSI命令被发往磁盘正在被执行的过程中,我们标记已经为这个磁盘存储粒度分配好的缓存块为DATA_BEING_UPDATED,以表明此磁盘存储粒度正在被缓存只是缓存中的数据还未有效,在数据被完全更新到缓存之后,我们将缓存块标记为DATA_AVAILABLE以表明目前此缓存块中的数据是有效的。

这样,在接着被处理的SCSI命令对同一个磁盘存储粒度中的数据进行访问的时候,经过缓存查询之后,如果发现所访问的数据缓存命中并且相对应的缓存块被标识为DATA_BEING_UPDATED,则此命令暂时不会被处理直到缓存块的标识被更改为DATA_AVAILABLE;如果缓存块的标识为DATA_AVAILABLE,那么对于读操作的SCSI命令,缓存块中相应的数据段会被填充到SCSI命令的I/O数据缓冲区中,对于写操作的SCSI命令,命令I/O数据缓冲区中会在其被写入到磁盘之后更新到缓存块中。

对目标器具有缓存功能的IP SAN系统进行了实验,采用的测试工具是Iometer,使用随机读写命令流,其中我们测试了读请求与写请求各占50%以及全部是读请求,数据块大小为128KB和4KB的情况。

             表1.目标器具有写直达缓存功能的IP SAN系统性能

                          100%读请求,4KB请求块大小

  目标器具有缓存功能的IP SAN系统  目标器不具缓存功能的IP SAN系统  IOPS  2735  175  I/O带宽  10.5MB/s  0.68MB/s  平均响应时间  1.45ms  22.9ms

                      50%读请求50%写请求,4KB请求块大小

  目标器具有缓存功能的IP SAN系统  目标器不具缓存功能的IP SAN系统  IOPS  3050  153  I/O带宽  11.8MB/s  1.21MB/s  平均响应时间  1.33ms  12.9ms

                          100%读请求,128KB请求块大小

  目标器具有缓存功能的IP SAN系统  目标器不具缓存功能的IP SAN系统  IOPS  91  86  I/O带宽  11.3MB/s  10.9MB/s  平均响应时间  44.3ms  46.1ms

                     50%读请求50%写请求,128KB请求块大小

  目标器具有缓存功能的IP SAN系统  目标器不具缓存功能的IP SAN系统  IOPS  114  54  I/O带宽  14.3MB/s  13.6MB/s  平均响应时间  35.3ms  36.7ms

测试结果表明:与目标器不具缓存功能的IPSAN系统相比较而言,目标器具有缓存功能的IP SAN系统的性能得到了有效的提高:对于比较典型的情况是,随机的请求块大小为4KB的100%读I/O请求,系统的IOPS提高了15.6倍,系统的I/O带宽提高了15.4倍,系统的平均相应时间缩短了93%。

基于目标器内存设备的缓存方法具有如下主要特点:

1、充分利用IP SAN目标器的CPU以及DRAM内存资源;

2、自动的对磁盘空间的热点粒度进行缓存,减少了I/O延迟,减轻了存储磁盘的I/O负载和提高系统的整体性能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号