CN101252589A - 数据缓存装置和采用该装置的网络存储系统及缓存方法 - Google Patents
数据缓存装置和采用该装置的网络存储系统及缓存方法 Download PDFInfo
- Publication number
- CN101252589A CN101252589A CNA2008101027078A CN200810102707A CN101252589A CN 101252589 A CN101252589 A CN 101252589A CN A2008101027078 A CNA2008101027078 A CN A2008101027078A CN 200810102707 A CN200810102707 A CN 200810102707A CN 101252589 A CN101252589 A CN 101252589A
- Authority
- CN
- China
- Prior art keywords
- data
- chained list
- memory
- data block
- cache chained
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据缓存装置和采用该装置的网络存储系统及缓存方法。该缓存装置包括:网络接口;内存,与所述网络接口连接,用于存储所述计算节点请求的数据;计算节点接口协议转换模块,与所述内存连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元,并用于与缓存存储介质传输数据;处理单元,与所述计算节点接口协议转换模块、所述网络接口和所述内存连接,用于控制数据的传输和确定数据的缓存关系;缓存存储介质,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。本发明能够减少计算节点对通过网络访问存储节点的依赖性,减少网络负载,同时可以减少整个系统在一定时刻的网络负载压力。
Description
技术领域
本发明涉及计算机信息技术领域,特别是涉及在动态绑定计算节点和存储节点的环境下的一种数据缓存装置和采用该装置的网络存储系统及缓存方法。
背景技术
在现有的动态绑定计算节点和存储节点的系统中,其数据存储方式是采用集中存储方式。
图1表示动态绑定计算节点和存储节点的网络存储系统的结构,其中包括多个存储节点即存储服务器,和多个计算节点,它们通过网络连接,每个计算节点通过网络访问存储节点。
图1中仅表示出三个存储服务器,9个计算节点在一定时刻的连接关系,它们之间的传输介质是目前普遍使用的100Mb网络环境,如图中的箭头,其中标记A的箭头连线是表示计算节点连接到第一存储节点上;标记为B的箭头连线表示计算节点连接到第二存储节点上;标记为C的箭头连线表示计算节点连接到第三存储节点上。在一定时刻,多个计算节点可能对应同一个存储服务器,例如图1的系统中有三个存储节点,第一存储节点上面的数据有3个计算节点访问,分别是计算节点11、14、18;第二存储节点上面的数据也有3个计算节点访问,分别是计算节点12、16、19;第三存储节点上面的数据也有3个计算节点访问,分别是计算节点13、15、17,那么整个存储系统中有3个存储节点,9个计算节点,通过网络组织起来。当然,按照存储节点和计算节点的配比,还可以在存储系统中增加存储节点和计算节点。
现有的动态绑定计算节点和存储节点的网络存储系统的缺点是:多个计算节点同时访问存储节点的时候,由于计算节点的处理速度远大于访问存储节点的速度,而且在某一时刻出现并发访问的情况,访问存储数据的速度瓶颈就会出现在传输介质或者集中在存储节点上面。例如多个计算节点启动的时候,因为所需要的数据可能在同一个存储节点中,这样可能引起单个计算节点启动缓慢,用户体验不佳;严重的情况下,可能导致一部分计算节点会蓝屏或者死机,甚至导致存储节点即存储服务器死机,造成系统瘫痪。
解决这种问题的一个方法是为整个网络存储系统增加存储节点,虽然该方法能够解决这个问题,但同时增加了整个存储系统的存储节点的数量,相应地大大增加了存储系统的成本。
发明内容
本发明的目的是克服现有技术的不足,提供一种数据缓存装置、方法及采用该装置的网络存储系统,其能够减少计算节点对通过网络访问存储节点的依赖性,减少网络负载,同时可以减少整个存储系统对网络的负载压力;并在多个计算节点在一定时刻出现并发访问的情况下,减少对存储节点的访问次数。
为了达到上述目的,本发明提供如下技术方案:
一种数据缓存装置,用于动态绑定计算节点和存储节点的网络存储系统中,其特征在于,包括:
网络接口,用于连接到网络中的所述存储节点;
内存,与所述网络接口连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块,与所述内存连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元,并用于与缓存存储介质传输数据;
处理单元,与所述计算节点接口协议转换模块、所述网络接口和所述内存连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。
优选地,所述网络接口包括媒体访问控制子层协议控制器和物理接口收发器。
优选地,所述接口为集成驱动电子设备接口或串行传输技术硬盘接口。
优选地,所述计算节点接口协议转换模块包括现场可编程门阵列处理单元。
优选地,所述处理单元包括处理器和用于存储控制程序的存储固件。
优选地,所述处理单元包括:
缓存信息管理模块,与缓存处理模块连接,用于管理所述缓存存储介质中的缓存数据的元数据,搜索所述元数据的索引信息的索引表;
缓存处理模块,用于向内存管理模块和脏数据写回模块提供管理信息,并根据来自计算节点的读写请求,处理缓存存储介质中缓存数据的缓存关系;
内存管理模块,用于管理内存中的数据;
硬件抽象层模块,用于为内存管理模块和脏数据写回模块提供硬件操作接口;
脏数据写回模块,用于从所述缓存处理模块获得脏数据信息后,将对应的脏数据写回到网络中的所述存储节点中。
优选地,所述元数据存储在所述缓存存储介质的预定的集中存储区域。
优选地,所述元数据还保存在所述缓存存储介质的与当前缓存数据块相关的冗余区。
优选地,所述索引表采用链式哈希表,哈希函数使用直接映射方式。
优选地,所述硬件抽象层模块采用异步硬件操作方法为内存管理模块和脏数据写回模块提供硬件操作接口。
优选地,所述处理单元还包括:网络协议模块,与所述内存管理模块连接,用于按照不同的存储位置对数据块进行处理。
本发明还提供一种动态绑定计算节点和存储节点的网络存储系统,包括通过网络连接的多个计算节点和至少一个存储节点,其特征在于,还包括缓存装置,所述计算节点与所述缓存装置连接并通过所述缓存装置连接到网络上的所述存储节点,所述缓存装置包括:
网络接口,用于连接到网络中的所述存储节点;
内存,与所述网络接口连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块,与所述内存连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元,并用于与缓存存储介质传输数据;
处理单元,与所述计算节点接口协议转换模块、所述网络接口和所述内存连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。
优选地,所述计算节点接口协议转换模块包括现场可编程门阵列处理单元。
优选地,所述处理单元包括:
缓存信息管理模块,与缓存处理模块连接,用于管理所述缓存存储介质中的缓存数据的元数据,搜索所述元数据的索引信息的索引表;
缓存处理模块,用于向内存管理模块和脏数据写回模块提供管理信息,并根据来自计算节点的读写请求,处理缓存存储介质中缓存数据的缓存关系;
内存管理模块,用于管理内存中的数据;
硬件抽象层模块,用于为内存管理模块和脏数据写回模块提供硬件操作接口;
脏数据写回模块,用于从所述缓存处理模块获得脏数据信息后,将对应的脏数据写回到网络中的所述存储节点中。
优选地,所述元数据存储在所述缓存存储介质的预定的集中存储区域。
优选地,所述元数据还保存在所述缓存存储介质的与当前缓存数据块相关的冗余区。
优选地,所述硬件抽象层模块采用异步硬件操作方法为内存管理模块和脏数据写回模块提供硬件操作接口。
优选地,所述处理单元还包括:网络协议模块,与所述内存管理模块连接,用于按照不同的存储位置对数据块进行处理。
为达到上述目的,本发明还提供一种动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,包括如下步骤:
步骤S1,当计算节点发出读请求后,分别按照请求的数据块的存储位置进行处理,在内存中将数据块处理后提供给计算节点,并处理数据的缓存关系;
步骤S2,当计算节点发出写请求后,通过处理数据的缓存关系确定在缓存存储介质上需要被替换出去的数据并将该数据写回到存储节点上,确定写请求的相关数据中需要写入缓存存储介质的数据块,并将该数据块写入缓存存储介质。
优选地,所述步骤S2中还包括:在将缓存数据写入所述缓存存储介质时,先将该数据写入缓存存储介质中设定的备用区,然后修改该数据的元数据,最后把被替换的区域中的旧数据擦掉并写入新数据。
优选地,所述步骤S2中还包括:当有数据块需要写入缓存存储介质时,通过元数据的擦写位图判断是否要对缓存存储介质中的写入位置进行擦除操作,如果需要擦除操作,则先把需要擦除操作的位置的数据读到内存中,之后在内存中根据要写入缓存存储介质的数据块修改数据后一起写入缓存存储介质。
优选地,步骤S1具体包括:
步骤S10,当计算节点发出读请求后,对请求的数据块按照存储位置进行如下分类处理:
内存命中的数据块,则记录该数据块在内存中的位置,且如果内存中命中的数据也存储在缓存存储介质或存储节点上,则仅处理内存中的数据块;
缓存存储介质未命中的数据块,则读取存储节点上的数据块。
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域外,则从缓存存储介质中读取该数据块;
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域内,则通过读取存储节点上的数据块;
缓存命中且脏的数据块,则从缓存存储介质中读取该数据块;
所述数据区域是由连续的数据块构成;
步骤S20,对按照步骤S10分类处理的数据块处理后,在内存中合并数据块并提交给计算节点。
优选地,步骤S1和步骤S2中所述处理数据的缓存关系包括如下步骤:
如果读请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则数据块在第一物理缓存链表队列中的对应位置不改变;如果同时命中内部对应的扇区,则把这个数据块移到第二物理缓存链表队列的队首;所述第一物理缓存链表用来描述缓存存储介质中命中一次的缓存数据在缓存介质中的位置;所述第二物理缓存链表用来描述缓存存储介质中命中至少两次的缓存数据在缓存介质中的位置;
如果写请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则将该数据块对应的位置移到第一物理缓存链表队列的队首;如果同时命中内部对应的扇区,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求命中第二物理缓存链表对应的数据块,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第一逻辑缓存链表队列对应的数据块,且命中内部的对应扇区,则用第一修改方法修改用于调整第一物理缓存链表与第二物理缓存链表的队列长度的调整因子p,执行第一替换操作,然后将读或写请求的数据块在第一逻辑缓存链表的对应位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第一替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变;对于读请求,数据块在第一逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,所述第一逻辑缓存链表用来描述从第一物理缓存链表中被替换出去的数据在缓存存储介质中的位置信息,第二逻辑缓存链表用来描述从第二物理缓存链表中被替换出去的数据在缓存存储介质中的位置;用于修改调整因子p值的所述第一修改方法是选取p+δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第一逻辑缓存链表的队列长度大于或等于所述第二逻辑缓存链表的队列长度时,δ等于1;否则δ等于所述第二逻辑缓存链表的队列长度除以所述第一逻辑缓存链表的队列长度;所述第一替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第二逻辑缓存链表对应的数据块,且命中内部的对应扇区,则用第二修改方法修改所述调整因子p,执行第二替换操作,然后将读或写请求的数据块的对应信息从第二逻辑缓存链表对应的位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第二替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变,对于读请求,数据块在第二逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,用于修改调整因子p值的所述第二修改方法是选取p-δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第二逻辑缓存链表的队列长度大于或等于所述第一逻辑缓存链表的队列长度的时,δ等于1;否则δ等于所述第一逻辑缓存链表的队列长度除以所述第二逻辑缓存链表的队列长度;所述第二替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,或满足第二条件:所述第一物理缓存链表的队列长度大于0,并且等于所述调整因子p值,同时读或写请求命中第二逻辑缓存链表,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件和第二条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置。
如果读或写请求没有命中所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表,则按照以下两种情况处理:
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度等于物理缓存的容量时,如果第一物理缓存链表的队列长度小于物理缓存的容量,则删除第一逻辑缓存链表的队尾位置对应的数据,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其位置信息放在第一物理缓存链表队列的队首;如果第一物理缓存链表的队列长度不小于物理缓存的容量,则删除第一物理缓存链表队列的队尾位置的数据并将请求的数据块放入缓存存储介质并将其放在第一物理缓存链表队列的队首;
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度小于物理缓存的容量时,则删除第二逻辑缓存链表的队尾位置对应的数据块位置信息;进一步判断如果所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度总和等于两倍的物理缓存容量,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其数据块对应的位置信息放在第一物理缓存链表队列的队首。
优选地,所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度在初始化时设为零。
优选地,还包括如下步骤:
步骤S3,在计算节点启动时,启动并判断上次关机是否是正常关机,如果上次是非正常关机,则计算节点扫描存储在与缓存数据相关的冗余区内的元数据,重新构建缓存数据的元数据;如果是正常关机,则计算节点读取缓存数据的元数据;
步骤S4,判断计算节点和存储节点的绑定关系是否发生改变,如果绑定关系没有发生改变,则继续启动并完成初始化,等待计算节点的读或写请求;如果绑定关系发生改变,则把脏数据按照上次的绑定关系写回到存储节点,然后等待计算节点的读或写请求,并按本次绑定关系进行使用。
优选地,步骤S4中所述初始化包括对缓存数据的元数据进行初始化和对用于搜索所述元数据的索引信息的索引表初始化。
与现有技术相比,本发明具有如下有益效果:
本发明能够减少计算节点对通过网络访问存储节点的依赖性,减少网络负载,同时可以减少整个系统在一定时刻的网络负载压力;并在多个计算节点在一定时刻出现并发访问的情况下,减少对存储节点的访问次数。
本发明的缓存方法使得缓存的命中率提高。在存储节点的访问次数比较多时,读写存储节点上的数据性能差于读写缓存装置的性能,因此从单个计算节点的访问性能上看,访问效率也获得比较好的提高。
本发明在动态绑定计算节点和存储节点的网络存储系统中采用缓存装置和缓存方法,不仅能够提高网络存储系统性能,而且降低了整个存储系统的成本。
附图说明
图1是现有的动态绑定计算节点和存储节点的网络存储系统的结构图;
图2是本发明的动态绑定计算节点和存储节点的网络存储系统的结构图;
图3是本发明的缓存装置的结构图;
图4是本发明的缓存装置中的处理单元的结构图;
图5是本发明的缓存装置中的索引表的结构图;
图6是本发明的实施例中一段数据的结构示意图;
图7是本发明的缓冲装置的元数据存储位置示意图;
图8是本发明的实施例所产生的效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的数据缓存装置、方法及采用该装置的网络存储系统进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
为了达到本发明的目的,如图2、3所示,作为一种可实施的方式,本发明提供一种缓存装置30,用于动态绑定计算节点和存储节点的网络存储系统中,连接在所述计算节点上并通过网络连接到所述存储节点。该缓存装置30包括网络接口31、内存32、处理单元33、计算节点接口协议转换模块34和缓存存储介质35,其中:
网络接口31,用于连接到网络中的所述存储节点;
较佳地,所述网络接口31包括媒体访问控制(Media Access Control,MAC)子层协议控制器和物理接口(PHY)收发器。
内存32,与所述网络接口31连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块34,与所述内存32连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元33,并用于与缓存存储介质35传输数据;所述接口为集成驱动电子设备接口(IDE)或串行传输技术硬盘接口(SATA)。采用这种接口有如下优点:
(1)电气接口和协议都有通用的标准;
(2)在个人计算机(PC)和服务器领域都有比较广泛的厂商支持,是大部分主机支持的启动设备,操作系统软件支持成熟完善;
(3)成本较低,容量和性能方面可以接近小型计算机系统接口设备,协议比较成熟,相关技术资源充足,相对其他存储设备控制器容易实现,普及率比较高。
较佳地,所述计算节点接口协议转换模块包括现场可编程门阵列(FPGA)处理单元。
处理单元33,与所述计算节点接口协议转换模块34、所述网络接口31和所述内存32连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质35,与所述计算节点接口协议转换模块34连接,用于根据处理单元33确定的缓存关系缓存数据。
图3中细箭头连线表示控制关系,粗实心箭头连线表示数据传输方向。处理单元33作为核心部件控制其他部件。网络接口30和计算节点接口协议转换模块34通过内存32缓冲传输数据,数据的传输均使用存储器直接访问(DMA)方式,这样不占用处理单元的资源。
较佳地,如图4所示,所述处理单元33包括:缓存信息管理模块41、缓存处理模块42、内存管理模块43、硬件抽象层模块44和脏数据写回模块45;其中:
缓存信息管理模块41,与缓存处理模块42连接,用于管理缓存存储介质中的缓存数据的元数据和用于搜索所述元数据的索引信息的索引表。
其中,在缓存装置30工作过程中,是将所述元数据从缓存存储介质35中读到内存32中进行处理,所述元数据包括缓存管理的控制信息,如表示缓存存储介质的数据和存储节点上的数据对应关系的信息,以及缓存存储介质上数据的状态信息,如脏数据位图,有效数据位图,擦写位图,缓存数据对应的链表队列,以及在链表队列中所处的位置。脏数据位图用于表示缓存数据为脏或干净,所述脏数据是指数据在缓存存储介质上或内存中而没有写回到存储节点上,即缓存存储介质或内存中为新数据,而存储节点上还是旧数据;所述干净数据是指该数据在缓存介质35上并且已经通过网络写回到存储节点上;有效位图是标志该数据是否有效的位图,擦写位图是指如果要写入缓存存储介质35中时,是否引发擦除操作的位图。缓存装置30的运行围绕着对元数据的设置、修改和检测进行,例如当在缓存储存介质中发生缓存数据替换时,修改缓存数据的链表队列及所在链表队列中的位置,当要写入缓存存储介质时要修改擦写位图和有效位图,当缓存数据写回到存储节点时要修改脏数据位图等。如图7所示,元数据以分散和集中两种方式分别存储在缓存存储介质的两处位置。一处位置是在缓存存储介质上预定的集中存储区域71(当然也可以提供另外的存储介质用于存储该元数据),此种存储方式称作元数据集中存储方式;另一处位置是缓存数据区72的冗余区73,只包含与当前数据块相关的元数据信息,此种存储方式称作元数据分散存储方式。元数据的存储采用这两种存储方式的好处在于:如果缓存装置30和计算节点意外断电或死机等造成非正常关机,在计算节点下次启动时能够按照冗余区中的分散元数据重建元数据结构;如果缓存装置和计算节点正常关机后,计算节点在下次启动时按照集中存储方式的元数据重建元数据结构,即直接从预定的集中存储区域71读取元数据,这样启动速度比较快。
当系统出现异常断电或计算节点死机等情况,由于此时元数据还在内存32中处理,同时,内存32中也可能有一部分脏数据,所以断电或重启后会丢失,导致缓存装置30的数据不可用。为解决内存32中的元数据丢失问题,所以本发明采用如上述的将离散的元数据和缓存数据一起写入缓存存储介质35中,在系统异常后的下一次启动的时候,扫描所有离散的元数据,通过这些离散的元数据,重新构建该缓存装置的元数据,重新获得缓存装置上的数据和其存储节点上的磁盘位置的对应关系。
图5表示出索引表的结构图。所述索引表的存储位置是在缓存装置的内存中,是用来快速搜索元数据的索引信息。索引表采用链式哈希(HASH),哈希函数使用最简单的直接映射方式,冲突的块信息以链表的形式挂入哈希表。直接映射的方式是通过磁盘块号的低14位来查找哈希表。如果发生哈希冲突,既低14位一致,则根据磁盘块号来判断该数据块是否在缓存存储介质中命中。整个索引表的大小可根据缓存装置的内存空间紧张情况调整,如果缓存装置的内存比较小的情况下,需要把索引表的长度修改小,但是造成哈希冲突的概率也与之上升,如果内存比较大的情况下,索引表的长度可以增长,可以解决哈希冲突过多造成的缓存装置的性能下降。
缓存处理模块42,用于向内存管理模块43和脏数据写回模块45提供管理信息,并根据来自计算节点的读写请求处理缓存存储介质36中缓存数据的缓存关系。
内存管理模块43,与所述缓存处理模块42连接,用于管理内存32中的数据。虽然内存32的存储空间相对于缓存存储介质35的存储空间不大,但是可以结合硬件抽象层一起屏蔽底层硬件信息以及减少不必要的硬件损耗,节省硬件存取时间、发挥硬件优势。
硬件抽象层模块44,用于采用异步硬件操作方法为内存管理模块43和脏数据写回模块45提供硬件操作接口,如读写接口,擦除接口等。硬件抽象层模块45按照不同的缓存存储介质,把其共性抽象出来,针对不同的存储介质采用相应的处理方式,方便硬件移植工作。作为一种实施方式,如对NAND FLASH类硬件,主要为内存管理模块43和脏数据写回模块45提供异步的硬件操作接口。硬件抽象层的硬件操作包括读写NAND FLASH、擦除NAND FLASH、对设备各种状态的检测(如一些完成标志等)、对数据的校验结果进行核实(数据的正确性)、对有问题的数据完成纠错,还包括厂商信息读取命令。
所述异步操作的方法包括如下步骤:
步骤A,硬件抽象层模块44接到所述内存管理模块43和所述脏数据写回模块45用命令队列的方式发送的读写命令;
步骤B,硬件抽象层模块44分析所述读写命令,计算读写的起始地址和结束地址,分析写命令的操作范围,判断该操作范围内是否发生擦除操作,根据判断结果生成新的命令队列;具体来说,有些命令需要在硬件抽象层中分解成多个命令,例如如果发生写NAND FLASH的操作,并且要写的区域已经被写过了,这样要引发一次读取和擦除操作,既一个写命令分解成多个命令即读取、擦除和写。
步骤C,硬件抽象层模块44将分析后的读写命令以中断处理方式发送给缓存存储介质35。读取和写入的操作采用中断的方式。既操作是否完成是以中断信号的方式通知给缓存设备的处理器。
上述异步操作方法的优点在于:内存管理模块43和脏数据写回模块45在发送命令以后,缓存装置30的处理单元33不需要在原地查询,处理单元还可以继续处理其他事务,如在操作NAND FLASH的同时,处理单元仍能进行缓存处理和网络上的数据,达到一种并行处理的效果,从而提高缓存装置的性能。
需要注意的是,如果发生写NAND FLASH的操作,因为硬件抽象层模块44的写操作的数据是在内存32中,也就是说是从内存32写入缓存介质35中,这可能会涉及到在写入之前要先将缓存存储介质35中的原数据擦除,在重新写入以前如果异常断电则会造成数据丢失的问题,即新的数据在内存32中会丢失,旧的数据又被擦除,这样会造成数据不完整。
为解决上述问题,本发明在缓存存储介质35上提供一个备用区,写入数据的时候先将数据写入备用区,如果在这个过程中没有异常断电和死机的情况,则写完以后修改该数据的元数据,最后把原来要写的区域擦掉再写入新的数据。这样做的好处是:即使断电或死机,要写的区域的数据也没有被先擦掉,数据还是可以还原以前的旧数据,数据不会丢失和出错。同时解决了缓存存储介质的磨损平衡的问题。
脏数据写回模块45,与所述缓存处理模块42连接,用于从缓存处理模块42获得脏数据信息后,将对应的脏数据写回到远程的存储节点中。
图3中粗实心箭头方向即数据流向的方向;细箭头方向即调用关系。计算节点的读或写请求的数据可能分布在三个层次中:
(a)缓存装置30的内存32中;
(b)缓存装置30的非易失性的缓存存储介质35中,作为一种实施方式,该缓存存储介质35采用与非型闪存(NAND FLASH);
(c)存储节点的存储介质中。
进一步地,所述处理单元33还包括:网络协议模块46,与内存管理模块43、所述硬件抽象层模块44连接,用于按照不同的存储位置对数据块进行处理。该网络协议模块46是对TCP/IP协议的优化,以减少网络的输入/输出(I/O)次数。如图6所示,作为一个实施方式,对于计算节点请求的数据块的处理方法为:
步骤S10,对数据块按照存储位置进行如下分类处理;
(1)缓存未命中的数据块,通过网络读取存储节点上的数据。对于存储节点来说,其存储介质一般是磁盘介质,因为请求的次数的开销和请求的数据量会对整个系统的性能有比较大的影响,所以希望通过网络读取存储节点上的数据的长度最少而且尽量保证网络读取的次数最少,因此,图6中需要从网络读取的区域是从标号4-9的数据块。
(2)缓存命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从网络读取的数据区域外,则从缓存存储介质中读取该数据块,如数据块3;所述数据区域是由连续的数据块构成;
(3)缓存命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从网络读取的数据区域内,则通过网络读取存储节点上的数据;具体来说,如果数据块在需要从网络读取的数据区域内,则不从缓存存储介质读取该数据,而从网络读取存储服务器上的数据,因为通过网络读取存储节点上的数据块也是一样的,这样计算读网络上数据的开销小于读缓存存储介质上的数据,所以不读缓存存储介质,如图6中的数据块6。
(3)缓存命中且脏的数据,需要读取缓存存储介质,如图6中数据块1、5、10。
(4)内存命中的数据块,不需要从缓存或是网络上读取,但是为了下一步骤的数据块合并,记录该数据块在内存32中的位置,。
步骤S20,对分类处理的数据块按照各自的方式处理后,在内存32中合并数据块并提交给计算节点。这样做的一个优点是通过网络读取存储节点上的数据和通过缓存存储介质35读取数据可以同时进行,如从存储节点读取数据块4到9的同时可以进行从缓存存储介质35读取数据块5。
在所述缓存处理模块42中,对数据进行缓存分为物理缓存和逻辑缓存,缓存数据在缓存存储介质35中的位置信息都通过链表的形式保存。物理缓存指实际存在在所述缓存存储介质35的存储空间中,需要有缓存数据的位图的描述信息,位图表示的最小单位是访问的最小单位,包括该数据是否有效(如没有写过的数据区的数据是无效的)和是否脏等信息,所述脏数据是指存储在缓存存储介质35或内存32中的新的数据,而与该数据对应的存储节点中的数据是旧的。所述逻辑缓存没有对应缓存存储介质35的存储空间,实质上是为了保存缓存关系的历史记录,需要管理的信息包括一些链表控制信息,状态,以及映射的磁盘块号。
为了达到本发明的目的,如图2所示,本发明还提供一种动态绑定计算节点和存储节点的网络存储系统,包括通过网络连接的多个计算节点,图2中所示计算节点11至19,和至少一个存储节点,图2中所示第一至第三存储节点;还包括缓存装置30,所述计算节点与所述缓存装置30连接并通过所述缓存装置30连接到网络上的所述存储节点,下面对各部分进行详细描述:
所述缓存装置30包括:
网络接口31,用于连接到网络中的所述存储节点;
内存32,与所述网络接口31连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块34,与所述内存32连接,用于通过接口将计算节点的请求转换成外部设备请求并提交给处理单元33,并用于与缓存存储介质35传输数据。优选地,所述计算节点接口协议转换模块包括现场可编程门阵列处理单元。
处理单元33,与所述计算节点接口协议转换模块34、所述网络接口31和所述内存32连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质35,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。
计算节点,又称为客户机,其本地没有任何存储节点,客户机和存储节点之间存在动态绑定的关系。所述动态绑定是指计算节点和存储节点的对应关系可能改变,一种改变方式例如,用户在一个时间使用的是windows xp的系统,在另一个时间使用是linux系统,而windows xp系统在第一存储服务器,linux系统在第二存储服务器中,这样,计算节点与存储节点的对应关系就发生改变。另外一种改变方式是,用户使用的计算节点变为另一个计算节点,这样计算节点与存储节点的对应关系也会发生改变。
存储节点,它是在集中的物理存储节点虚拟多个磁盘供用户使用;
网络,作为一种可实施方式,所述计算节点和所述存储节点之间的网络连接采用以太网。以太网不仅性能稳定,而且部署以太网的价格也比较低廉,因此使用以太网技术不仅能获得最大性价比,而且能获得较广泛的兼容性。同样,TCP/IP协议是Internet标准协议,使得缓存系统能获取最广泛的兼容性和支持,此外由于TCP/IP成熟且提供简单统一的编程接口支持,这有利于系统程序的迅速开发和可移植。
较佳地,所述处理单元33包括:
缓存信息管理模块41,与缓存处理模块42连接,用于管理所述缓存存储介质35中的缓存数据的元数据,搜索所述元数据的索引信息的索引表;
缓存处理模块42,用于向内存管理模块43和脏数据写回模块45提供管理信息,并根据来自计算节点的读写请求,处理缓存存储介质35中缓存数据的缓存关系;
内存管理模块43,用于管理内存32中的数据;
硬件抽象层模块44,用于为内存管理模块43和脏数据写回模块45提供硬件操作接口;优选地,所述硬件抽象层模块采用异步硬件操作方法为内存管理模块和脏数据写回模块提供硬件操作接口。
脏数据写回模块45,用于从所述缓存处理模块42获得脏数据信息后,将对应的脏数据写回到网络中的所述存储节点中。
较佳地,所述处理单元还包括:网络协议模块,与所述内存管理模块连接,用于按照不同的存储位置对数据块进行处理。
较佳地,所述元数据存储在所述缓存存储介质的预定的集中存储区域。
较佳地,所述元数据还保存在所述缓存存储介质的与当前缓存数据块相关的冗余区。
为了达到本发明的目的,本发明还提供一种数据缓存方法,用于动态绑定计算节点和存储节点的系统中,所述计算节点通过用于缓存数据的缓存装置连接到网络上的所述存储节点。该方法包括如下步骤:
步骤S1,当计算节点发出读请求后,计算读的起始扇区和长度,分别按照请求的数据块的存储位置进行处理,在内存中将数据块处理后提供给计算节点,并处理数据的缓存关系;
步骤S2,当计算节点发出写请求后,计算读的起始扇区和长度,通过处理数据的缓存关系确定在缓存存储介质上需要被替换出去的数据并将该数据写回到存储节点上,确定写请求的相关数据中需要写入缓存存储介质的数据块,并将该数据块写入缓存存储介质。
较佳地,所述步骤S2中还包括:在将缓存数据写入所述缓存存储介质时,先将该数据写入缓存存储介质中设定的备用区,然后修改该数据的元数据,最后把被替换的区域中的旧数据擦掉并写入新数据。
较佳地,所述步骤S2中还包括:当有数据块需要写入缓存存储介质时,通过元数据的擦写位图判断是否要对缓存存储介质中的写入位置进行擦除操作,如果需要擦除操作,则先把需要擦除操作的位置的数据读到内存中,之后在内存中根据要写入缓存存储介质的数据块修改数据后一起写入缓存存储介质。
较佳地,步骤S1具体包括:
步骤S101,当计算节点发出读请求后,对请求的数据块按照存储位置进行如下分类处理:
内存命中的数据块,则记录该数据块在内存中的位置,且如果内存中命中的数据也存储在缓存存储介质或存储节点上,则仅处理内存中的数据块;
缓存存储介质未命中的数据块,则读取存储节点上的数据块。
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域外,则从缓存存储介质中读取该数据块;
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域内,则通过读取存储节点上的数据块;
缓存命中且脏的数据块,则从缓存存储介质中读取该数据块;
所述数据区域是由连续的数据块构成;
步骤S102,对按照步骤S101分类处理的数据块处理后,在内存中合并数据块并提交给计算节点。
较佳地,步骤S1和步骤S2中所述处理数据的缓存关系包括如下步骤:
如果读请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则数据块在第一物理缓存链表队列中的对应位置不改变;如果同时命中内部对应的扇区,则把这个数据块移到第二物理缓存链表队列的队首;所述第一物理缓存链表用来描述缓存存储介质中命中一次的缓存数据在缓存介质中的位置;所述第二物理缓存链表用来描述缓存存储介质中命中至少两次的缓存数据在缓存介质中的位置;
如果写请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则将该数据块对应的位置移到第一物理缓存链表队列的队首;如果同时命中内部对应的扇区,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求命中第二物理缓存链表对应的数据块,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第一逻辑缓存链表队列对应的数据块,且命中内部的对应扇区,则用第一修改方法修改用于调整第一物理缓存链表与第二物理缓存链表的队列长度的调整因子p,执行第一替换操作,然后将读或写请求的数据块在第一逻辑缓存链表的对应位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第一替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变;对于读请求,数据块在第一逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,所述第一逻辑缓存链表用来描述从第一物理缓存链表中被替换出去的数据在缓存存储介质中的位置信息,第二逻辑缓存链表用来描述从第二物理缓存链表中被替换出去的数据在缓存存储介质中的位置;用于修改调整因子p值的所述第一修改方法是选取p+δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第一逻辑缓存链表的队列长度大于或等于所述第二逻辑缓存链表的队列长度时,δ等于1;否则δ等于所述第二逻辑缓存链表的队列长度除以所述第一逻辑缓存链表的队列长度;所述第一替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第二逻辑缓存链表对应的数据块,且命中内部的对应扇区,则用第二修改方法修改所述调整因子p,执行第二替换操作,然后将读或写请求的数据块的对应信息从第二逻辑缓存链表对应的位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第二替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变,对于读请求,数据块在第二逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,用于修改调整因子p值的所述第二修改方法是选取p-δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第二逻辑缓存链表的队列长度大于或等于所述第一逻辑缓存链表的队列长度的时,δ等于1;否则δ等于所述第一逻辑缓存链表的队列长度除以所述第二逻辑缓存链表的队列长度;所述第二替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,或满足第二条件:所述第一物理缓存链表的队列长度大于0,并且等于所述调整因子p值,同时读或写请求命中第二逻辑缓存链表,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件和第二条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置。
如果读或写请求没有命中所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表,则按照以下两种情况处理:
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度等于物理缓存的容量时,如果第一物理缓存链表的队列长度小于物理缓存的容量,则删除第一逻辑缓存链表的队尾位置对应的数据,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其位置信息放在第一物理缓存链表队列的队首;如果第一物理缓存链表的队列长度不小于物理缓存的容量,则删除第一物理缓存链表队列的队尾位置的数据并将请求的数据块放入缓存存储介质并将其放在第一物理缓存链表队列的队首;
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度小于物理缓存的容量时,则删除第二逻辑缓存链表的队尾位置对应的数据块位置信息;进一步判断如果所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度总和等于两倍的物理缓存容量,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其数据块对应的位置信息放在第一物理缓存链表队列的队首。
所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度在初始化时设为零。
本发明提供的处理数据的缓存关系的方法产生的有益效果是:由于缓存介质的存储粒度是128K字节,而计算节点访问的最小粒度是512字节,既1个扇区,针对缓存存储介质128K的数据块,存在命中128K字节对应的数据块,但是没有命中512字节的区域,由于两部分粒度有差别,所以基于这种情况,本发明对命中情况作了细分,产生的有益效果是:克服扫描和低局部性的访问模式造成的网络存储系统性能下降,并可以自适应功能,针对不同的缓存存储介质,本发明的控制粒度是固定的,NAND FLASH的存储粒度是128K字节,而客户机I/O的粒度也是固定的,以扇区(512字节)为单位,这种方法切合替换粒度大于真正访问粒度的这种情况,减小了算法的失真,提高了缓存的命中率。
较佳地,为了解决非正常关机和绑定关系发生变化产生的数据不完整问题,上述数据缓存方法还包括如下步骤
步骤S3,在计算节点启动时,启动并判断上次关机是否是正常关机,如果上次是非正常关机,则计算节点扫描存储在与缓存数据相关的冗余区内的元数据,重新构建缓存数据的元数据;如果是正常关机,则计算节点读取缓存数据的元数据;
步骤S4,判断计算节点和存储节点的绑定关系是否发生改变,如果绑定关系没有发生改变,则继续启动并完成初始化,等待计算节点的读或写请求;如果绑定关系发生改变,则把脏数据按照上次的绑定关系写回到存储节点,然后等待计算节点的读或写请求,并按本次绑定关系进行使用。
步骤S4中所述初始化包括对缓存数据的元数据进行初始化和对用于搜索所述元数据的索引信息的索引表初始化。
与现有技术相比,本发明能够产生如下有益效果:
本发明能够减少计算节点对通过网络访问存储节点的依赖性,减少网络负载,同时可以减少整个系统在一定时刻的网络负载压力;并在多个计算节点在一定时刻出现并发访问的情况下,减少对存储节点的访问次数。
本发明的缓存方法使得缓存的命中率提高。在存储节点的访问次数比较多时,读写存储节点上的数据性能差于读写缓存装置的性能,因此从单个计算节点的访问性能上看,访问效率也获得比较好的提高。如图8所示,测试使用多个计算节点模拟windows的读写过程,其中,本发明的带有缓存装置的网络存储系统的测试数据点用方块标记,而现有的没有缓存装置的网络存储系统的测试数据点用圆形块标记。可以明显的看出,加入缓存装置后,单点的平均性能有了比较好的提升。随着计算节点的数目增多,对存储节点的压力增长不快。
本发明在动态绑定计算节点和存储节点的网络存储系统中采用缓存装置和缓存方法,不仅能够提高网络存储系统性能,而且降低了整个存储系统的成本。例如对于现有的系统,一台存储节点可能承受40个计算节点的读写压力,通过在计算节点端加入缓存装置,一台存储服务器可以承受65个计算节点。这样,如果对于195个计算节点现在需要3台存储服务器,那么以前的情况,需要195/40=4.8台存储服务器。对于更大规模的使用情况,达到相同的系统性能,整个系统的成本会下降很多。
以上所述内容,仅为本发明具体的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。
Claims (26)
1、一种数据缓存装置,用于动态绑定计算节点和存储节点的网络存储系统中,其特征在于,包括:
网络接口,用于连接到网络中的所述存储节点;
内存,与所述网络接口连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块,与所述内存连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元,并用于与缓存存储介质传输数据;
处理单元,与所述计算节点接口协议转换模块、所述网络接口和所述内存连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。
2、根据权利要求1所述的缓存装置,其特征在于,所述网络接口包括媒体访问控制子层协议控制器和物理接口收发器。
3、根据权利要求1所述的缓存装置,其特征在于,所述接口为集成驱动电子设备接口或串行传输技术硬盘接口。
4、根据权利要求1所述的缓存装置,其特征在于,所述计算节点接口协议转换模块包括现场可编程门阵列处理单元。
5、根据权利要求1所述的缓存装置,其特征在于,所述处理单元包括处理器和用于存储控制程序的存储固件。
6、根据权利要求1所述的缓存装置,其特征在于,所述处理单元包括:
缓存信息管理模块,与缓存处理模块连接,用于管理所述缓存存储介质中的缓存数据的元数据,搜索所述元数据的索引信息的索引表;
缓存处理模块,用于向内存管理模块和脏数据写回模块提供管理信息,并根据来自计算节点的读写请求,处理缓存存储介质中缓存数据的缓存关系;
内存管理模块,用于管理内存中的数据;
硬件抽象层模块,用于为内存管理模块和脏数据写回模块提供硬件操作接口;
脏数据写回模块,用于从所述缓存处理模块获得脏数据信息后,将对应的脏数据写回到网络中的所述存储节点中。
7、根据权利要求6所述的缓存装置,其特征在于,所述元数据存储在所述缓存存储介质的预定的集中存储区域。
8、根据权利要求7所述的缓存装置,其特征在于,所述元数据还保存在所述缓存存储介质的与当前缓存数据块相关的冗余区。
9、根据权利要求6所述的缓存装置,其特征在于,所述索引表采用链式哈希表,哈希函数使用直接映射方式。
10、根据权利要求6所述的缓存装置,其特征在于,所述硬件抽象层模块采用异步硬件操作方法为内存管理模块和脏数据写回模块提供硬件操作接口。
11、根据权利要求6所述的缓存装置,其特征在于,所述处理单元还包括:网络协议模块,与所述内存管理模块连接,用于按照不同的存储位置对数据块进行处理。
12、一种动态绑定计算节点和存储节点的网络存储系统,包括通过网络连接的多个计算节点和至少一个存储节点,其特征在于,还包括缓存装置,所述计算节点与所述缓存装置连接并通过所述缓存装置连接到网络上的所述存储节点,所述缓存装置包括:
网络接口,用于连接到网络中的所述存储节点;
内存,与所述网络接口连接,用于存储所述计算节点请求的数据;
计算节点接口协议转换模块,与所述内存连接,用于通过接口将计算节点的请求转换成外部设备请求后提交给处理单元,并用于与缓存存储介质传输数据;
处理单元,与所述计算节点接口协议转换模块、所述网络接口和所述内存连接,用于控制数据的传输和确定数据的缓存关系;
缓存存储介质,与所述计算节点接口协议转换模块连接,用于根据处理单元确定的缓存关系缓存数据。
13、根据权利要求12所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述计算节点接口协议转换模块包括现场可编程门阵列处理单元。
14、根据权利要求12所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述处理单元包括:
缓存信息管理模块,与缓存处理模块连接,用于管理所述缓存存储介质中的缓存数据的元数据,搜索所述元数据的索引信息的索引表;
缓存处理模块,用于向内存管理模块和脏数据写回模块提供管理信息,并根据来自计算节点的读写请求,处理缓存存储介质中缓存数据的缓存关系;
内存管理模块,用于管理内存中的数据;
硬件抽象层模块,用于为内存管理模块和脏数据写回模块提供硬件操作接口;
脏数据写回模块,用于从所述缓存处理模块获得脏数据信息后,将对应的脏数据写回到网络中的所述存储节点中。
15、根据权利要求14所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述元数据存储在所述缓存存储介质的预定的集中存储区域。
16、根据权利要求14或15所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述元数据还保存在所述缓存存储介质的与当前缓存数据块相关的冗余区。
17、根据权利要求14所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述硬件抽象层模块采用异步硬件操作方法为内存管理模块和脏数据写回模块提供硬件操作接口。
18、根据权利要求14所述的动态绑定计算节点和存储节点的网络存储系统,其特征在于,所述处理单元还包括:网络协议模块,与所述内存管理模块连接,用于按照不同的存储位置对数据块进行处理。
19、一种动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,包括如下步骤:
步骤S1,当计算节点发出读请求后,分别按照请求的数据块的存储位置进行处理,在内存中将数据块处理后提供给计算节点,并处理数据的缓存关系;
步骤S2,当计算节点发出写请求后,通过处理数据的缓存关系确定在缓存存储介质上需要被替换出去的数据并将该数据写回到存储节点上,确定写请求的相关数据中需要写入缓存存储介质的数据块,并将该数据块写入缓存存储介质。
20、根据权利要求19所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,所述步骤S2中还包括:在将缓存数据写入所述缓存存储介质时,先将该数据写入缓存存储介质中设定的备用区,然后修改该数据的元数据,最后把被替换的区域中的旧数据擦掉并写入新数据。
21、根据权利要求19或20所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,所述步骤S2中还包括:当有数据块需要写入缓存存储介质时,通过元数据的擦写位图判断是否要对缓存存储介质中的写入位置进行擦除操作,如果需要擦除操作,则先把需要擦除操作的位置的数据读到内存中,之后在内存中根据要写入缓存存储介质的数据块修改数据后一起写入缓存存储介质。
22、根据权利要求19所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,步骤S1具体包括:
步骤S10,当计算节点发出读请求后,对请求的数据块按照存储位置进行如下分类处理:
内存命中的数据块,则记录该数据块在内存中的位置,且如果内存中命中的数据也存储在缓存存储介质或存储节点上,则仅处理内存中的数据块;
缓存存储介质未命中的数据块,则读取存储节点上的数据块。
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域外,则从缓存存储介质中读取该数据块;
缓存存储介质命中且干净的数据块,并且该数据块在读请求数据中的位置是在需要从存储节点读取的数据区域内,则通过读取存储节点上的数据块;
缓存命中且脏的数据块,则从缓存存储介质中读取该数据块;
所述数据区域是由连续的数据块构成;
步骤S20,对按照步骤S10分类处理的数据块处理后,在内存中合并数据块并提交给计算节点。
23、根据权利要求19所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,步骤S1和步骤S2中所述处理数据的缓存关系包括如下步骤:
如果读请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则数据块在第一物理缓存链表队列中的对应位置不改变;如果同时命中内部对应的扇区,则把这个数据块移到第二物理缓存链表队列的队首;所述第一物理缓存链表用来描述缓存存储介质中命中一次的缓存数据在缓存介质中的位置;所述第二物理缓存链表用来描述缓存存储介质中命中至少两次的缓存数据在缓存介质中的位置;
如果写请求命中第一物理缓存链表对应的数据块,但没有命中内部对应的扇区,则将该数据块对应的位置移到第一物理缓存链表队列的队首;如果同时命中内部对应的扇区,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求命中第二物理缓存链表对应的数据块,则把这个数据块对应的位置移到第二物理缓存链表队列的队首;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第一逻辑缓存链表队列对应的数据块,且命中内部的对应扇区,则用第一修改方法修改用于调整第一物理缓存链表与第二物理缓存链表的队列长度的调整因子p,执行第一替换操作,然后将读或写请求的数据块在第一逻辑缓存链表的对应位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第一替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变;对于读请求,数据块在第一逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,所述第一逻辑缓存链表用来描述从第一物理缓存链表中被替换出去的数据在缓存存储介质中的位置信息,第二逻辑缓存链表用来描述从第二物理缓存链表中被替换出去的数据在缓存存储介质中的位置;用于修改调整因子p值的所述第一修改方法是选取p+δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第一逻辑缓存链表的队列长度大于或等于所述第二逻辑缓存链表的队列长度时,δ等于1;否则δ等于所述第二逻辑缓存链表的队列长度除以所述第一逻辑缓存链表的队列长度;所述第一替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置;
如果读或写请求没有命中第一物理缓存链表和第二物理缓存链表,但是命中第二逻辑缓存链表对应的数据块,且命中内部的对应扇区,则用第二修改方法修改所述调整因子p,执行第二替换操作,然后将读或写请求的数据块的对应信息从第二逻辑缓存链表对应的位置移到第二物理缓存链表的队首位置;如果没有命中内部的对应扇区,则对于写请求,执行第二替换操作,把该数据块的位置移到第一物理缓存链表队列的队首,所述调整因子p值不改变,对于读请求,数据块在第二逻辑缓存链表队列中的位置不变,所述调整因子p值也不改变;
其中,用于修改调整因子p值的所述第二修改方法是选取p-δ和缓存存储介质的物理缓存容量中的最小值,其中δ的取值是:当所述第二逻辑缓存链表的队列长度大于或等于所述第一逻辑缓存链表的队列长度的时,δ等于1;否则δ等于所述第一逻辑缓存链表的队列长度除以所述第二逻辑缓存链表的队列长度;所述第二替换操作为:如果满足第一条件:所述第一物理缓存链表的队列长度大于0并且大于所述调整因子p值,或满足第二条件:所述第一物理缓存链表的队列长度大于0,并且等于所述调整因子p值,同时读或写请求命中第二逻辑缓存链表,则从所述缓存存储介质中删除所述第一物理缓存链表的队尾位置对应的数据块信息,将描述该数据块的信息移到第一逻辑缓存链表的队首的位置;如果不满足所述第一条件和第二条件,则删除第二物理缓存链表的队尾位置,将其移到第二逻辑缓存链表的队首位置;
如果读或写请求没有命中所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表,则按照以下两种情况处理:
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度等于物理缓存的容量时,如果第一物理缓存链表的队列长度小于物理缓存的容量,则删除第一逻辑缓存链表的队尾位置对应的数据,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其位置信息放在第一物理缓存链表队列的队首;如果第一物理缓存链表的队列长度不小于物理缓存的容量,则删除第一物理缓存链表队列的队尾位置的数据并将请求的数据块放入缓存存储介质并将其放在第一物理缓存链表队列的队首;
当第一物理缓存链表的队列长度加上第一逻辑缓存链表的队列长度小于物理缓存的容量时,则删除第二逻辑缓存链表的队尾位置对应的数据块位置信息;进一步判断如果所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度总和等于两倍的物理缓存容量,执行所述第一替换操作,然后将请求的数据块写入缓存存储介质并将其数据块对应的位置信息放在第一物理缓存链表队列的队首。
24、根据权利要求23所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,所述第一物理缓存链表、第二物理缓存链表、第一逻辑缓存链表和第二逻辑缓存链表的队列长度在初始化时设为零。
25、根据权利要求19所述的动态绑定计算节点和存储节点的网络存储系统的数据缓存方法,其特征在于,还包括如下步骤:
步骤S3,在计算节点启动时,启动并判断上次关机是否是正常关机,如果上次是非正常关机,则计算节点扫描存储在与缓存数据相关的冗余区内的元数据,重新构建缓存数据的元数据;如果是正常关机,则计算节点读取缓存数据的元数据;
步骤S4,判断计算节点和存储节点的绑定关系是否发生改变,如果绑定关系没有发生改变,则继续启动并完成初始化,等待计算节点的读或写请求;如果绑定关系发生改变,则把脏数据按照上次的绑定关系写回到存储节点,然后等待计算节点的读或写请求,并按本次绑定关系进行使用。
26、根据权利要求17所述的缓存方法,其特征在于,步骤S4中所述初始化包括对缓存数据的元数据进行初始化和对用于搜索所述元数据的索引信息的索引表初始化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101027078A CN101252589B (zh) | 2008-03-25 | 2008-03-25 | 数据缓存装置和采用该装置的网络存储系统及缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101027078A CN101252589B (zh) | 2008-03-25 | 2008-03-25 | 数据缓存装置和采用该装置的网络存储系统及缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101252589A true CN101252589A (zh) | 2008-08-27 |
CN101252589B CN101252589B (zh) | 2011-01-05 |
Family
ID=39955773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101027078A Expired - Fee Related CN101252589B (zh) | 2008-03-25 | 2008-03-25 | 数据缓存装置和采用该装置的网络存储系统及缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101252589B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724074A (zh) * | 2012-06-20 | 2012-10-10 | 江苏亿通高科技股份有限公司 | 一种判断eoc局端设备异常重启的方法 |
CN102750224A (zh) * | 2011-04-19 | 2012-10-24 | 苏州捷泰科信息技术有限公司 | 减小固态硬盘写入放大的写入方法和数据写入系统 |
CN103731489A (zh) * | 2013-12-27 | 2014-04-16 | 华为技术有限公司 | 一种数据存储方法、系统和设备 |
CN103870204A (zh) * | 2012-12-11 | 2014-06-18 | 华为技术有限公司 | 一种cache中数据写入和读取方法、cache控制器 |
CN104636327A (zh) * | 2013-11-06 | 2015-05-20 | 上海语镜汽车信息技术有限公司 | 一种基于增量计算的分布式流式数据系统 |
CN105516263A (zh) * | 2015-11-28 | 2016-04-20 | 华为技术有限公司 | 存储系统中数据分发方法、装置、计算节点及存储系统 |
CN105897859A (zh) * | 2016-03-25 | 2016-08-24 | 天津书生云科技有限公司 | 一种存储系统 |
CN106202485A (zh) * | 2016-07-18 | 2016-12-07 | 乐视控股(北京)有限公司 | 数据操作方法和系统 |
CN106201918A (zh) * | 2016-07-14 | 2016-12-07 | 合肥易立迅科技有限公司 | 一种基于大数据量和大规模缓存快速释放的方法和系统 |
CN108009250A (zh) * | 2017-12-01 | 2018-05-08 | 武汉斗鱼网络科技有限公司 | 一种多分类赛事数据缓存建立、查询方法及装置 |
CN108733805A (zh) * | 2018-05-18 | 2018-11-02 | 招银云创(深圳)信息技术有限公司 | 文件交互方法、系统、计算机设备和存储介质 |
CN109086462A (zh) * | 2018-09-21 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种分布式文件系统中元数据的管理方法 |
CN109561152A (zh) * | 2018-12-13 | 2019-04-02 | 深圳先进技术研究院 | 数据访问请求响应方法、装置、终端和存储介质 |
CN111414347A (zh) * | 2019-01-04 | 2020-07-14 | 阿里巴巴集团控股有限公司 | 节点信息处理方法及装置,输出方法及存储和电子设备 |
CN111488125A (zh) * | 2020-04-10 | 2020-08-04 | 西安交通大学 | 一种基于Ceph集群的Cache Tier缓存优化方法 |
CN112400297A (zh) * | 2018-07-06 | 2021-02-23 | 华为技术有限公司 | 用于减少时延和缓存大小的传输缓存系统和传输缓存器操作方法 |
WO2021052230A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种存储系统、存储节点和数据存储方法 |
CN113487026A (zh) * | 2021-07-05 | 2021-10-08 | 江苏号百信息服务有限公司 | 一种图计算中io节点高效读取数据的方法及系统 |
CN115442439A (zh) * | 2022-08-31 | 2022-12-06 | 云知声智能科技股份有限公司 | 分布式缓存集群管理方法、系统、终端及存储介质 |
WO2024001827A1 (zh) * | 2022-06-28 | 2024-01-04 | 华为技术有限公司 | 数据访问方法、装置及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240105B2 (en) * | 2001-01-26 | 2007-07-03 | International Business Machines Corporation | Distributed multicast caching technique |
CN100440830C (zh) * | 2004-04-13 | 2008-12-03 | 中国科学院计算技术研究所 | 一种基于网络的计算环境可动态重构的系统及其方法 |
CN100505762C (zh) * | 2006-04-19 | 2009-06-24 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存系统 |
-
2008
- 2008-03-25 CN CN2008101027078A patent/CN101252589B/zh not_active Expired - Fee Related
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750224A (zh) * | 2011-04-19 | 2012-10-24 | 苏州捷泰科信息技术有限公司 | 减小固态硬盘写入放大的写入方法和数据写入系统 |
CN102750224B (zh) * | 2011-04-19 | 2015-01-14 | 苏州捷泰科信息技术有限公司 | 减小固态硬盘写入放大的写入方法和数据写入系统 |
CN102724074B (zh) * | 2012-06-20 | 2015-01-07 | 江苏亿通高科技股份有限公司 | 一种判断eoc局端设备异常重启的方法 |
CN102724074A (zh) * | 2012-06-20 | 2012-10-10 | 江苏亿通高科技股份有限公司 | 一种判断eoc局端设备异常重启的方法 |
CN103870204B (zh) * | 2012-12-11 | 2018-01-09 | 华为技术有限公司 | 一种cache中数据写入和读取方法、cache控制器 |
CN103870204A (zh) * | 2012-12-11 | 2014-06-18 | 华为技术有限公司 | 一种cache中数据写入和读取方法、cache控制器 |
CN104636327A (zh) * | 2013-11-06 | 2015-05-20 | 上海语镜汽车信息技术有限公司 | 一种基于增量计算的分布式流式数据系统 |
CN103731489B (zh) * | 2013-12-27 | 2017-12-15 | 华为技术有限公司 | 一种数据存储方法、系统和设备 |
CN103731489A (zh) * | 2013-12-27 | 2014-04-16 | 华为技术有限公司 | 一种数据存储方法、系统和设备 |
CN105516263A (zh) * | 2015-11-28 | 2016-04-20 | 华为技术有限公司 | 存储系统中数据分发方法、装置、计算节点及存储系统 |
CN105516263B (zh) * | 2015-11-28 | 2019-02-01 | 华为技术有限公司 | 存储系统中数据分发方法、装置、计算节点及存储系统 |
CN105897859A (zh) * | 2016-03-25 | 2016-08-24 | 天津书生云科技有限公司 | 一种存储系统 |
CN105897859B (zh) * | 2016-03-25 | 2021-07-30 | 北京书生云科技有限公司 | 一种存储系统 |
CN106201918A (zh) * | 2016-07-14 | 2016-12-07 | 合肥易立迅科技有限公司 | 一种基于大数据量和大规模缓存快速释放的方法和系统 |
CN106201918B (zh) * | 2016-07-14 | 2019-02-12 | 合肥易立迅科技有限公司 | 一种基于大数据量和大规模缓存快速释放的方法和系统 |
CN106202485A (zh) * | 2016-07-18 | 2016-12-07 | 乐视控股(北京)有限公司 | 数据操作方法和系统 |
CN108009250A (zh) * | 2017-12-01 | 2018-05-08 | 武汉斗鱼网络科技有限公司 | 一种多分类赛事数据缓存建立、查询方法及装置 |
CN108733805A (zh) * | 2018-05-18 | 2018-11-02 | 招银云创(深圳)信息技术有限公司 | 文件交互方法、系统、计算机设备和存储介质 |
CN112400297A (zh) * | 2018-07-06 | 2021-02-23 | 华为技术有限公司 | 用于减少时延和缓存大小的传输缓存系统和传输缓存器操作方法 |
CN112400297B (zh) * | 2018-07-06 | 2022-03-29 | 华为技术有限公司 | 用于减少时延和缓存大小的传输缓存系统和传输缓存器操作方法 |
CN109086462A (zh) * | 2018-09-21 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种分布式文件系统中元数据的管理方法 |
CN109561152A (zh) * | 2018-12-13 | 2019-04-02 | 深圳先进技术研究院 | 数据访问请求响应方法、装置、终端和存储介质 |
CN111414347A (zh) * | 2019-01-04 | 2020-07-14 | 阿里巴巴集团控股有限公司 | 节点信息处理方法及装置,输出方法及存储和电子设备 |
CN111414347B (zh) * | 2019-01-04 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 节点信息处理方法及装置,输出方法及存储和电子设备 |
WO2021052230A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种存储系统、存储节点和数据存储方法 |
CN111488125A (zh) * | 2020-04-10 | 2020-08-04 | 西安交通大学 | 一种基于Ceph集群的Cache Tier缓存优化方法 |
CN113487026A (zh) * | 2021-07-05 | 2021-10-08 | 江苏号百信息服务有限公司 | 一种图计算中io节点高效读取数据的方法及系统 |
CN113487026B (zh) * | 2021-07-05 | 2024-05-03 | 江苏号百科技有限公司 | 一种图计算中io节点高效读取数据的方法及系统 |
WO2024001827A1 (zh) * | 2022-06-28 | 2024-01-04 | 华为技术有限公司 | 数据访问方法、装置及系统 |
CN115442439A (zh) * | 2022-08-31 | 2022-12-06 | 云知声智能科技股份有限公司 | 分布式缓存集群管理方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101252589B (zh) | 2011-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101252589B (zh) | 数据缓存装置和采用该装置的网络存储系统及缓存方法 | |
US7146467B2 (en) | Method of adaptive read cache pre-fetching to increase host read throughput | |
US7117309B2 (en) | Method of detecting sequential workloads to increase host read throughput | |
CN100405304C (zh) | 基于存储区域网络的高速固态存储设备的实现方法 | |
JP4429780B2 (ja) | 記憶制御装置、制御方法、および制御プログラム。 | |
US20090132621A1 (en) | Selecting storage location for file storage based on storage longevity and speed | |
US20070162692A1 (en) | Power controlled disk array system using log storage area | |
US20030088591A1 (en) | Data storage device with deterministic caching and retention capabilities to effect file level data transfers over a network | |
CN1770087A (zh) | 使用外部存储器设备来改进系统性能 | |
JP2012523624A (ja) | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 | |
JP4401305B2 (ja) | デイスクアレイ装置の構成定義設定方法及びデイスクアレイ装置 | |
JP5020774B2 (ja) | 先読みを用いたストレージ消費電力削減方法及びその方法を用いた計算機システム | |
US7725654B2 (en) | Affecting a caching algorithm used by a cache of storage system | |
US6782444B1 (en) | Digital data storage subsystem including directory for efficiently providing formatting information for stored records | |
US20160371017A1 (en) | Processing read and write requests | |
JP4461089B2 (ja) | ストレージ制御装置およびストレージ制御方法 | |
CN115826882B (zh) | 一种存储方法、装置、设备及存储介质 | |
US11960419B2 (en) | Systems and methods for data prefetching for low latency data read from a remote server | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
WO2022021280A1 (zh) | 存储控制器、存储控制方法、固态硬盘及存储系统 | |
US20060143378A1 (en) | Information processing apparatus and control method for this information processing apparatus | |
CN114265791A (zh) | 一种数据调度方法、芯片以及电子设备 | |
CN110209343B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN102402397B (zh) | 存储数据的方法和装置 | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110105 |
|
CF01 | Termination of patent right due to non-payment of annual fee |