CN105573682A - 一种san存储系统及其数据读写方法 - Google Patents

一种san存储系统及其数据读写方法 Download PDF

Info

Publication number
CN105573682A
CN105573682A CN201610105795.1A CN201610105795A CN105573682A CN 105573682 A CN105573682 A CN 105573682A CN 201610105795 A CN201610105795 A CN 201610105795A CN 105573682 A CN105573682 A CN 105573682A
Authority
CN
China
Prior art keywords
cache
data
read
block
written
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
Application number
CN201610105795.1A
Other languages
English (en)
Other versions
CN105573682B (zh
Inventor
马春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201610105795.1A priority Critical patent/CN105573682B/zh
Publication of CN105573682A publication Critical patent/CN105573682A/zh
Application granted granted Critical
Publication of CN105573682B publication Critical patent/CN105573682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供的SAN存储系统及其数据读写方法,其中,SAN存储系统包括:应用主机、存储节点和JBOD,存储节点包括控制模块和缓存模块,每个缓存模块包括至少2个缓存块,每个JBOD包括至少2个磁盘块,缓存块和磁盘块容量相同;方法包括:控制模块接收应用主机SCSI指令,根据该SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写,实时统计各存储节点访问频率,将闲置存储节点中缓存块内缓存该超载存储节点中缓存块数据,进行数据读写,并每隔预设时间选取与所有存储节点访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略。能够较好地适用于各种的应用场景,适用性较高,能够有效地分配缓存资源,提高缓存资源利用率。

Description

一种SAN存储系统及其数据读写方法
技术领域
本发明涉及存储技术领域,特别是涉及一种SAN存储系统及其数据读写方法。
背景技术
在数据存储领域,不管是传统的DAS(Direct-AttachedStorage,开放系统的直连式存储)存储系统,还是现今流行的NAS(NetworkAttachedStorage,网络附属存储)存储系统和SAN(StorageAreaNetwork,存储区域网络)存储系统,都是以磁盘作为存储的主要介质,其存储密度逐年提高,而其性能提升受限于机械构造,提升有限。因此,为了解决硬盘大容量和低性能之间的矛盾,出现了存储系统的缓存技术。
现有SAN存储系统中,使用DRAM(DynamicRandomAccessMemory,动态随机存取存储器)缓存用户访问频繁的热点数据,以提升存储系统整体性能。DRAM位于SAN存储系统中各个存储节点的控制器中,且各存储节点的DRAM缓存同一节点上磁盘中存储的热点数据。SAN存储系统的缓存模块中使用某种缓存策略进行数据的换入换出。现有缓存策略已发展处如LRU、LFU、FBR、SARC等适用于多种不同场景的策略和算法。
目前,现有SAN存储系统使用的缓存策略单一,每次只可采用一种缓存策略,而SAN存储系统往往应用于多种不同的应用场景,只采用一种缓存策略往往只能适用于一种或有限种类的应用场景,适用性较低;且现有的SAN存储系统中各存储节点只能够用于一个磁盘内热点数据的缓存,将出现部分存储节点中缓存有较多的热点数据,而部分存储节点中没有或仅缓存有较少的热点数据的现象,致使各存储节点中缓存资源分配不均,负载不均衡,从而降低了SAN存储系统的资源利用率。
发明内容
有鉴于此,本发明实施例提供一种SAN存储系统及其数据读写方法,以解决现有技术中现有SAN存储系统使用的缓存策略单一,每次只可采用一种缓存策略,适用性较低,只能够用于一个磁盘内热点数据的缓存,致使各存储节点中缓存资源分配不均,负载不均衡,从而降低了SAN存储系统的资源利用率的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种用于SAN存储系统的数据读写方法,用于SAN存储系统,所述SAN存储系统包括应用主机、存储节点和JBOD,所述存储节点包括控制模块和缓存模块,每个所述缓存模块包括至少2个缓存块,每个所述JBOD包括至少2个磁盘块,所述缓存块和所述磁盘块的容量相同,所述数据读写方法包括:
所述控制模块接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写;
每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将选取的缓存策略作为当前缓存策略。
其中,所述根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写包括:
对所述SCSI指令进行解析,提取所述SCSI指令中需读写数据的数据地址、数据长度和访问方式;
判断所述需读写数据是否在缓存块中;
若在,则根据当前缓存策略对缓存块中所述需读写数据进行数据读写;
若不在,则根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
其中,所述根据当前缓存策略对缓存块中所述需读写数据进行数据读写包括:
确定具有所述需读写数据的读写缓存块;
当所述数据读取指令为数据写指令时,根据哈希表中记载的磁盘块和缓存块映射关系,确定所述读写数据块相对应的读写磁盘块,将所述读写缓存块内数据写入所述读写磁盘块中;
当所述数据读取指令为数据读指令时,将所述读写数据块内数据返回应用主机进行显示。
其中,在判定所述需读写数据不在缓存块中后还包括:
根据所述需读写数据的数据长度判断缓存节点中是否具有足够的缓存块来缓存所述需读写数据;
若不具有,则将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内,在将所述指定缓存块内数据刷写至JBOD中指定磁盘块内后,根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
其中,在根据所述需读写数据的数据长度判定缓存节点中不具有足够的缓存块来缓存所述需读写数据后还包括:
向缓存节点中指定缓存块循环申请排他锁;
在所述排他锁申请成功后,将所述缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内。
其中,在判定所述需读写数据在缓存块中后还包括:
向具有所述需读取数据的缓存块循环申请共享锁;
在所述共享锁申请成功后,根据当前缓存策略对缓存块中所述需读写的数据进行数据读写。
其中,所述为所述需读写数据分配缓存块后还包括:
向分配的缓存块循环申请排他锁;
在所述排他锁申请成功后,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
一种SAN存储系统,包括:应用主机、存储节点和JBOD,所述存储节点包括控制模块和缓存模块,每个所述缓存模块包括至少2个缓存块,每个所述JBOD包括至少2个磁盘块,所述缓存块和所述磁盘块的容量相同;其中,
所述应用主机,用于接收应用程序发送的数据读写指令,将所述数据读取指令转换为SCSI指令发送给存储节点的控制模块;
所述控制模块,用于接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写,并实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写,并每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
所述JBOD,用于在各磁盘块中进行数据读写。
其中,所述控制模块包括:数据读写子模块、数据访问统计子模块和数据同步子模块;其中,
所述数据读写子模块,用于接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
所述数据访问统计子模块,用于实时统计各数据块的访问频率,并在预存的缓存策略中选取与所有数据块的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
所述数据同步子模块,用于当存在访问频率大于第一预设阈值的超载缓存块时,选取访问频率小于第二预设阈值的闲置缓存块缓存所述超载缓存块内数据,控制缓存有所述超载缓存块内数据的闲置缓存块进行数据读写。
其中,所述数据读写子模块包括:上层接口单元、缓存管理单元和缓存分配单元;其中,
所述上层接口单元,用于接收应用主机发送的SCSI指令,对所述SCSI指令进行解析,提取需读写数据的数据地址、数据长度和访问方式,生成数据读写请求,将所述数据读写请求发送给缓存管理单元;
所述缓存管理单元,用于在接收所述上层接口单元发送的数据读写请求后,判断所述需读写的数据是否在缓存块中,当确定需读写的数据在缓存块中,根据当前缓存策略对缓存块中所述需读写的数据进行数据读写;
所述缓存分配单元,用于当缓存管理单元确定需读写的数据不在缓存块中时,根据各缓存节点的负载情况,为所述需读写的数据分配缓存块,将所述需读写的数据置于分配的缓存块中根据当前缓存策略进行数据读写。
基于上述技术方案,本发明实施例提供的SAN存储系统及其数据读写方法,该SAN存储系统包括应用主机、存储节点和JBOD,每个存储节点均包括控制模块和缓存模块,各缓存模块中均包括至少2个缓存块,每个JBOD中均包括至少2个磁盘块,每个缓存块和磁盘块的容量均相同,当读写数据时,由应用主机接收应用程序发送的数据读写指令,并将该数据读取指令转换为SCSI指令后发送给存储节点的控制模块,控制模块在接收应用主机发送的SCSI指令后,根据该SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写,并实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存该超载存储节点中缓存块内数据,控制缓存有该超载存储节点中缓存块内数据的缓存块进行数据读写,并每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将选取的缓存策略作为当前缓存策略。能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高;且将缓存节点内缓存模块和JBOD分别划分为等大小的缓存块和磁盘块,每个缓存块均能够缓存所有JBOD中任一磁盘块内数据,当存在超载存储节点时,选取闲置存储节点,控制该闲置存储节点内缓存块缓存该超载存储节点中缓存块内数据,控制闲置存储节点中缓存有该超载存储节点中缓存块内数据的缓存块进行数据读写,存储节点上的缓存资源不再只能缓存同一磁盘上的热点数据,允许负载较轻的存储节点缓存负载较重的存储节点上的热点数据,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的用于SAN存储系统的数据读写方法的流程图;
图2为本发明实施例提供的用于SAN存储系统的数据读写方法中根据SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写的方法流程图;
图3为本发明实施例提供的用于SAN存储系统的数据读写方法中根据当前缓存策略对缓存块中需读写数据进行数据读写的方法流程图;
图4为本发明实施例提供的用于SAN存储系统的数据读写方法中将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内的方法流程图;
图5为本发明实施例提供的SAN存储系统的系统框图;
图6为本发明实施例提供的SAN存储系统中控制模块210的结构框图;
图7为本发明实施例提供的SAN存储系统中数据读写子模块2210的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的用于SAN存储系统的数据读写方法的流程图,能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率;参照图1,该用于SAN存储系统的数据读写方法可以包括:
步骤S100:所述控制模块接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
在本发明实施例提供的用于SAN存储系统的数据读写方法中,SAN(StorageAreaNetwork,存储区域网络)存储系统包括应用主机、存储节点和JBOD(JustaBunchOfDisks,磁盘簇),其中,每个存储节点均包括控制模块和缓存模块,每个缓存模块均包括至少2个缓存块,每个JBOD均包括至少2个磁盘块,每个缓存块的容量均相同,每个磁盘块的容量均相同,缓存块和磁盘块的容量也相同。将缓存节点内缓存模块和JBOD分别划分为等大小的缓存块和磁盘块,每个缓存块均能够缓存所有JBOD中任一磁盘块内数据。
当应用程序需通过SAN存储系统进行数据读写时,将向应用主机发送数据读取指令,相应的,应用主机将接收到应用程序发送的数据读取指令,并在接收到应用程序发送的数据读取指令后将该数据读取指令进行转换,得到的SCSI(SmallComputerSystemInterface,小型计算机系统接口)指令,然后将该得到的SCSI发送给存储节点的控制模块。相应的,控制模块将接收到应用主机发送的SCSI指令。
控制模块在接收到应用主机发送的SCSI指令后,将根据该SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写。当写入数据时,将由缓存块读取磁盘块内存储的需读取数据,然后将缓存块内的需读取数据返回应用主机;当读取数据时,由缓存块接收需存储数据,将后将需存储数据发送给磁盘块进行存储。
可选的,当控制模块在接收到应用主机发送的SCSI指令后,可通过对该接收的SCSI指令进行解析,提取该SCSI指令中需读写数据的数据地址、数据长度和访问方式,通过该需读取数据的数据地址来判断该需读写数据是否在缓存块中。
可选的,若判定该需读写数据在缓存块中,则可确定存储有该需读取数据的缓存块,根据当前缓存策略缓对该缓存块内该读写数据进行数据读写,若判定该需读写数据不在缓存块中,则可根据各缓存节点的负载情况,为该需读写数据分配缓存块,将该需读写数据置于分配的缓存块中,然后根据当前缓存策略对该存于该分配的缓存块内的读写数据进行数据读写。
可选的,根据当前缓存策略对缓存块中需读写数据进行数据读写时,可先确定具有需读写数据的读写缓存块,然后对该读写缓存块内读读写数据进行数据读写操作。具体的,当应用程序发送的数据读取指令为数据写指令时,即当应用程序需要写入数据时,可根据哈希表中记载的磁盘块和缓存块映射关系,确定读写数据块相对应的读写磁盘块,然后将该读写缓存块内数据写入读写磁盘块中;当应用程序发送的数据读取指令为数据读指令时,即当应用程序需要读取数据时,可将该读写数据块内数据返回应用主机进行显示。
可选的,若在进行数据读写时判定需读写数据不在缓存块中,则可先根据该需读写数据的数据长度判断缓存节点中是否具有足够的缓存块来缓存该需读写数据,在判定缓存节点中具有足够的缓存块来缓存该需读写数据时,直接根据各缓存节点的负载情况,为需读写数据分配缓存块,将该需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写;若判定缓存节点中不具有足够的缓存块来缓存该需读写数据,则可先将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内,在将该指定缓存块内数据刷写至JBOD中指定磁盘块内后,即在使该指定缓存块内无缓存数据后,将需读写数据缓存至该指定缓存块内,根据当前缓存策略对该指定缓存块中需读写的数据进行数据读写。
可选的,若判定缓存节点中不具有足够的缓存块来缓存该需读写数据,则还可向缓存节点中指定缓存块循环申请排他锁,在该排他锁申请成功后,将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内。
可选的,若在进行数据读写时判定需读写数据在缓存块中,则可先向具有需读取数据的缓存块循环申请共享锁,在该共享锁申请成功后,再根据当前缓存策略对缓存块中所述需读写的数据进行数据读写。
可选的,若在进行数据读写时判定需读写数据在缓存块中,则可先判断该缓存有该需读写数据的缓存块的状态,若该缓存块的状态为CLEAN,则根据当前缓存策略对缓存块中所述需读写数据进行数据读写;若该缓存块的状态为DIRTY,则将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内。
可选的,若在进行数据读写时判定需读写数据不在缓存块中,则在为需读写数据分配缓存块后,可先向分配的缓存块循环申请排他锁,在确定排他锁申请成功后,再将需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
步骤S110:实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写;
控制模块在根据SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写的同时,将实时统计各存储节点的访问频率,当确定存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存该超载存储节点中缓存块内数据,控制该缓存有超载存储节点中缓存块内数据的缓存块进行数据读写。
当存在超载存储节点时,选取闲置存储节点,控制该闲置存储节点内缓存块缓存该超载存储节点中缓存块内数据,控制闲置存储节点中缓存有该超载存储节点中缓存块内数据的缓存块进行数据读写,存储节点上的缓存资源不再只能缓存同一磁盘上的热点数据,允许负载较轻的存储节点缓存负载较重的存储节点上的热点数据,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率。
步骤S120:每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将选取的缓存策略作为当前缓存策略。
控制模块同时每隔预设时间将所有存储节点的访问频率与所有预存的缓存策略进行匹配,在所有预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,然后将该选取的缓存策略作为当前缓存策略。如此,将能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高。
可选的,对于存储与磁盘块中的数据,可实时通过各磁盘块内数据的访问频率,将当需读写访问频率较高的磁盘块内数据时,将该磁盘块内数据缓存至多个缓存块中,以减少数据访问竞争。
基于上述技术方案,本发明实施例提供的SAN存储系统及其数据读写方法,该SAN存储系统包括应用主机、存储节点和JBOD,每个存储节点均包括控制模块和缓存模块,各缓存模块中均包括至少2个缓存块,每个JBOD中均包括至少2个磁盘块,每个缓存块和磁盘块的容量均相同,当读写数据时,由应用主机接收应用程序发送的数据读写指令,并将该数据读取指令转换为SCSI指令后发送给存储节点的控制模块,控制模块在接收应用主机发送的SCSI指令后,根据该SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写,并实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存该超载存储节点中缓存块内数据,控制缓存有该超载存储节点中缓存块内数据的缓存块进行数据读写,并每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将选取的缓存策略作为当前缓存策略。能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高;且将缓存节点内缓存模块和JBOD分别划分为等大小的缓存块和磁盘块,每个缓存块均能够缓存所有JBOD中任一磁盘块内数据,当存在超载存储节点时,选取闲置存储节点,控制该闲置存储节点内缓存块缓存该超载存储节点中缓存块内数据,控制闲置存储节点中缓存有该超载存储节点中缓存块内数据的缓存块进行数据读写,存储节点上的缓存资源不再只能缓存同一磁盘上的热点数据,允许负载较轻的存储节点缓存负载较重的存储节点上的热点数据,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率。
可选的,图2示出了本发明实施例提供的用于SAN存储系统的数据读写方法中根据SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写的方法流程图,参照图2,该根据SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写的方法可以包括:
步骤S200:对所述SCSI指令进行解析,提取所述SCSI指令中需读写数据的数据地址、数据长度和访问方式;
当控制模块在接收到应用主机发送的SCSI指令后,对该SCSI指令进行解析,将可以提取到该SCSI指令中需读写数据的数据地址、数据长度和访问方式。
步骤S210:判断所述需读写数据是否在缓存块中;‘
可选的,可通过SCSI指令中解析得到的需读取数据的数据地址来判断该需读写数据是否在缓存块中。
步骤S220:若在,则根据当前缓存策略对缓存块中所述需读写数据进行数据读写;
若需读写数据在缓存块中,则可确定存储有该需读取数据的缓存块,根据当前缓存策略缓对该缓存块内该读写数据进行数据读写。
步骤S230:若不在,则根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
若需读写数据不在缓存块中,则可根据各缓存节点的负载情况,为该需读写数据分配缓存块,将该需读写数据置于分配的缓存块中,然后根据当前缓存策略对该存于该分配的缓存块内的读写数据进行数据读写。
可选的,图3示出了本发明实施例提供的用于SAN存储系统的数据读写方法中根据当前缓存策略对缓存块中需读写数据进行数据读写的方法流程图,参照图3,该根据当前缓存策略对缓存块中所述需读写数据进行数据读写的方法可以包括:
步骤S300:确定具有所述需读写数据的读写数据块;
根据当前缓存策略对缓存块中需读写数据进行数据读写时,可先确定具有需读写数据的读写缓存块,然后再对该读写缓存块内读读写数据进行数据读写操作。
步骤S310:判断所述数据读取指令是否为数据写指令;
步骤S320:若为,则根据哈希表中记载的磁盘块和缓存块映射关系,确定所述读写数据块相对应的读写磁盘块,将所述读写数据块内数据写入所述读写磁盘块中;
若应用程序发送的数据读取指令为数据写指令,则根据哈希表中记载的磁盘块和缓存块映射关系,确定读写数据块相对应的读写磁盘块,然后将该读写缓存块内数据写入读写磁盘块中,完成数据写入操作。
步骤S330:若不为,则将所述读写数据块内数据返回应用主机进行显示。
若应用程序发送的数据读取指令为数据读指令,则将该读写数据块内数据返回应用主机进行显示,完成数据读取操作。
可选的,图4示出了本发明实施例提供的用于SAN存储系统的数据读写方法中将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内的方法流程图,参照图4,该将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内的方法可以包括:
步骤S400:判断缓存节点中是否具有足够的缓存块来缓存所述需读写数据;
若在进行数据读写时判定需读写数据不在缓存块中,则在为需读写数据分配缓存块前,可先判断缓存节点中是否具有足够的缓存块来缓存该需读写数据。
步骤S410:若不具有,则将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内;
步骤S420:根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
若判定缓存节点中不具有足够的缓存块来缓存该需读写数据,则可先将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内,在将该指定缓存块内数据刷写至JBOD中指定磁盘块内后,即在使该指定缓存块内无缓存数据后,将需读写数据缓存至该指定缓存块内,根据当前缓存策略对该指定缓存块中需读写的数据进行数据读写。
反之,若判定缓存节点中具有足够的缓存块来缓存该需读写数据时,则可直接根据各缓存节点的负载情况,为需读写数据分配缓存块,将该需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
本发明实施例提供的用于SAN存储系统的数据读写方法,能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率。
下面对本发明实施例提供的SAN存储系统进行介绍,下文描述的SAN存储系统与上文描述的用于SAN存储系统的数据读写方法可相互对应参照。
图5为本发明实施例提供的SAN存储系统的系统框图,参照图5,该SAN存储系统可以包括:应用主机1000、存储节点2000和JBOD3000,存储节点200包括控制模块2100和缓存模块2200,缓存模块2200包括至少2个缓存块2210,JBOD3000包括至少2个磁盘块3010,缓存块2210和磁盘块3010的容量相同;其中,
应用主机1000,用于接收应用程序发送的数据读写指令,将所述数据读取指令转换为SCSI指令发送给存储节点的控制模块;
控制模块2100,用于接收应用主机1000在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块2210内数据进行读写,并实时统计各存储节点2000的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写,并每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
JBOD3000,用于在各磁盘块3010中进行数据读写。
可选的,图6示出了本发明实施例提供的SAN存储系统中控制模块210的结构框图,参照图6,该控制模块2100可以包括:数据读写子模块2110、数据访问统计子模块2120和数据同步子模块2130;其中,
数据读写子模块2110,用于接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
数据访问统计子模块2120,用于实时统计各数据块的访问频率,并在预存的缓存策略中选取与所有数据块的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
数据同步子模块2130,用于当存在访问频率大于第一预设阈值的超载缓存块时,选取访问频率小于第二预设阈值的闲置缓存块缓存所述超载缓存块内数据,控制缓存有所述超载缓存块内数据的闲置缓存块进行数据读写。
可选的,图7示出了本发明实施例提供的SAN存储系统中数据读写子模块2110的结构框图,参照图7,该数据读写子模块2110可以包括:上层接口单元2111、缓存管理单元2112和缓存分配单元2113;其中,
上层接口单元2111,用于接收应用主机发送的SCSI指令,对所述SCSI指令进行解析,提取需读写数据的数据地址、数据长度和访问方式,生成数据读写请求,将所述数据读写请求发送给缓存管理单元;
缓存管理单元2112,用于在接收所述上层接口单元发送的数据读写请求后,判断所述需读写的数据是否在缓存块中,当确定需读写的数据在缓存块中,根据当前缓存策略对缓存块中所述需读写的数据进行数据读写;
缓存分配单元2113,用于当缓存管理单元确定需读写的数据不在缓存块中时,根据各缓存节点的负载情况,为所述需读写的数据分配缓存块,将所述需读写的数据置于分配的缓存块中根据当前缓存策略进行数据读写。
本发明实施例提供的SAN存储系统,能够根据各存储节点的访问频率实时选取相匹配的缓存策略进行实施,能够较好地适用于各种的应用场景,适用性较高,在整个SAN存储系统的范围内有效地分配缓存资源,提高了SAN存储系统的缓存资源利用率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种用于SAN存储系统的数据读写方法,其特征在于,用于SAN存储系统,所述SAN存储系统包括应用主机、存储节点和JBOD,所述存储节点包括控制模块和缓存模块,每个所述缓存模块包括至少2个缓存块,每个所述JBOD包括至少2个磁盘块,所述缓存块和所述磁盘块的容量相同,所述数据读写方法包括:
所述控制模块接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写;
每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将选取的缓存策略作为当前缓存策略。
2.根据权利要求1所述的数据读写方法,其特征在于,所述根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写包括:
对所述SCSI指令进行解析,提取所述SCSI指令中需读写数据的数据地址、数据长度和访问方式;
判断所述需读写数据是否在缓存块中;
若在,则根据当前缓存策略对缓存块中所述需读写数据进行数据读写;
若不在,则根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
3.根据权利要求2所述的数据读写方法,其特征在于,所述根据当前缓存策略对缓存块中所述需读写数据进行数据读写包括:
确定具有所述需读写数据的读写缓存块;
当所述数据读取指令为数据写指令时,根据哈希表中记载的磁盘块和缓存块映射关系,确定所述读写数据块相对应的读写磁盘块,将所述读写缓存块内数据写入所述读写磁盘块中;
当所述数据读取指令为数据读指令时,将所述读写数据块内数据返回应用主机进行显示。
4.根据权利要求2所述的数据读写方法,其特征在于,在判定所述需读写数据不在缓存块中后还包括:
根据所述需读写数据的数据长度判断缓存节点中是否具有足够的缓存块来缓存所述需读写数据;
若不具有,则将缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内,在将所述指定缓存块内数据刷写至JBOD中指定磁盘块内后,根据各缓存节点的负载情况,为所述需读写数据分配缓存块,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
5.根据权利要求4所述的数据读写方法,其特征在于,在根据所述需读写数据的数据长度判定缓存节点中不具有足够的缓存块来缓存所述需读写数据后还包括:
向缓存节点中指定缓存块循环申请排他锁;
在所述排他锁申请成功后,将所述缓存节点中指定缓存块内数据刷写至JBOD中指定磁盘块内。
6.根据权利要求2所述的数据读写方法,其特征在于,在判定所述需读写数据在缓存块中后还包括:
向具有所述需读取数据的缓存块循环申请共享锁;
在所述共享锁申请成功后,根据当前缓存策略对缓存块中所述需读写的数据进行数据读写。
7.根据权利要求2所述的数据读写方法,其特征在于,所述为所述需读写数据分配缓存块后还包括:
向分配的缓存块循环申请排他锁;
在所述排他锁申请成功后,将所述需读写数据置于分配的缓存块中根据当前缓存策略进行数据读写。
8.一种SAN存储系统,其特征在于,包括:应用主机、存储节点和JBOD,所述存储节点包括控制模块和缓存模块,每个所述缓存模块包括至少2个缓存块,每个所述JBOD包括至少2个磁盘块,所述缓存块和所述磁盘块的容量相同;其中,
所述应用主机,用于接收应用程序发送的数据读写指令,将所述数据读取指令转换为SCSI指令发送给存储节点的控制模块;
所述控制模块,用于接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写,并实时统计各存储节点的访问频率,当存在访问频率大于第一预设阈值的超载存储节点时,选取访问频率小于第二预设阈值的闲置存储节点中缓存块缓存所述超载存储节点中缓存块内数据,控制缓存有所述超载存储节点中缓存块内数据的缓存块进行数据读写,并每隔预设时间在预存的缓存策略中选取与所有存储节点的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
所述JBOD,用于在各磁盘块中进行数据读写。
9.根据权利要求8所述的SAN存储系统,其特征在于,所述控制模块包括:数据读写子模块、数据访问统计子模块和数据同步子模块;其中,
所述数据读写子模块,用于接收所述应用主机在接收到应用程序发送的数据读取指令后转换得到的SCSI指令,根据所述SCSI指令通过当前缓存策略控制各缓存块对各磁盘块内数据进行读写;
所述数据访问统计子模块,用于实时统计各数据块的访问频率,并在预存的缓存策略中选取与所有数据块的访问频率相匹配的缓存策略,将该选取的缓存策略作为当前缓存策略;
所述数据同步子模块,用于当存在访问频率大于第一预设阈值的超载缓存块时,选取访问频率小于第二预设阈值的闲置缓存块缓存所述超载缓存块内数据,控制缓存有所述超载缓存块内数据的闲置缓存块进行数据读写。
10.根据权利要求9所述的SAN存储系统,其特征在于,所述数据读写子模块包括:上层接口单元、缓存管理单元和缓存分配单元;其中,
所述上层接口单元,用于接收应用主机发送的SCSI指令,对所述SCSI指令进行解析,提取需读写数据的数据地址、数据长度和访问方式,生成数据读写请求,将所述数据读写请求发送给缓存管理单元;
所述缓存管理单元,用于在接收所述上层接口单元发送的数据读写请求后,判断所述需读写的数据是否在缓存块中,当确定需读写的数据在缓存块中,根据当前缓存策略对缓存块中所述需读写的数据进行数据读写;
所述缓存分配单元,用于当缓存管理单元确定需读写的数据不在缓存块中时,根据各缓存节点的负载情况,为所述需读写的数据分配缓存块,将所述需读写的数据置于分配的缓存块中根据当前缓存策略进行数据读写。
CN201610105795.1A 2016-02-25 2016-02-25 一种san存储系统及其数据读写方法 Active CN105573682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610105795.1A CN105573682B (zh) 2016-02-25 2016-02-25 一种san存储系统及其数据读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610105795.1A CN105573682B (zh) 2016-02-25 2016-02-25 一种san存储系统及其数据读写方法

Publications (2)

Publication Number Publication Date
CN105573682A true CN105573682A (zh) 2016-05-11
CN105573682B CN105573682B (zh) 2018-10-30

Family

ID=55883876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610105795.1A Active CN105573682B (zh) 2016-02-25 2016-02-25 一种san存储系统及其数据读写方法

Country Status (1)

Country Link
CN (1) CN105573682B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227466A (zh) * 2016-07-15 2016-12-14 浪潮(北京)电子信息产业有限公司 一种数据段迁移方法及系统
CN106339181A (zh) * 2016-08-19 2017-01-18 华为技术有限公司 存储系统中数据处理方法和装置
CN106406764A (zh) * 2016-09-21 2017-02-15 郑州云海信息技术有限公司 一种分布式san块存储的高效能数据访问系统及方法
CN106776368A (zh) * 2016-11-29 2017-05-31 郑州云海信息技术有限公司 一种数据读取时的缓存管理方法、装置及系统
CN109542347A (zh) * 2018-11-19 2019-03-29 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置、设备及可读存储介质
CN109710183A (zh) * 2018-12-17 2019-05-03 杭州宏杉科技股份有限公司 一种数据同步方法及装置
CN110134650A (zh) * 2019-04-28 2019-08-16 深圳市腾讯网域计算机网络有限公司 一种文件加载方法、装置、设备及存储介质
CN113326335A (zh) * 2020-06-29 2021-08-31 阿里巴巴集团控股有限公司 数据存储系统、方法、装置、电子设备及计算机存储介质
CN114510474A (zh) * 2022-02-18 2022-05-17 中兴通讯股份有限公司 基于时间衰减的样本删除方法及其装置、存储介质
WO2022143751A1 (zh) * 2020-12-29 2022-07-07 华为技术有限公司 存储系统管理方法、存储系统及计算程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043731A (zh) * 2010-12-17 2011-05-04 天津曙光计算机产业有限公司 一种存储系统的缓存系统
CN102262512A (zh) * 2011-07-21 2011-11-30 浪潮(北京)电子信息产业有限公司 一种实现磁盘阵列缓存分区管理的系统、装置及方法
CN103392167A (zh) * 2012-12-28 2013-11-13 华为技术有限公司 分布式存储系统的缓存方法、节点和计算机可读介质
CN105159604A (zh) * 2015-08-20 2015-12-16 浪潮(北京)电子信息产业有限公司 一种磁盘数据读写方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043731A (zh) * 2010-12-17 2011-05-04 天津曙光计算机产业有限公司 一种存储系统的缓存系统
CN102262512A (zh) * 2011-07-21 2011-11-30 浪潮(北京)电子信息产业有限公司 一种实现磁盘阵列缓存分区管理的系统、装置及方法
CN103392167A (zh) * 2012-12-28 2013-11-13 华为技术有限公司 分布式存储系统的缓存方法、节点和计算机可读介质
CN105159604A (zh) * 2015-08-20 2015-12-16 浪潮(北京)电子信息产业有限公司 一种磁盘数据读写方法和系统

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227466B (zh) * 2016-07-15 2019-03-15 浪潮(北京)电子信息产业有限公司 一种数据段迁移方法及系统
CN106227466A (zh) * 2016-07-15 2016-12-14 浪潮(北京)电子信息产业有限公司 一种数据段迁移方法及系统
CN106339181A (zh) * 2016-08-19 2017-01-18 华为技术有限公司 存储系统中数据处理方法和装置
CN106339181B (zh) * 2016-08-19 2019-05-24 华为技术有限公司 存储系统中数据处理方法和装置
CN106406764A (zh) * 2016-09-21 2017-02-15 郑州云海信息技术有限公司 一种分布式san块存储的高效能数据访问系统及方法
CN106776368A (zh) * 2016-11-29 2017-05-31 郑州云海信息技术有限公司 一种数据读取时的缓存管理方法、装置及系统
CN106776368B (zh) * 2016-11-29 2021-02-05 苏州浪潮智能科技有限公司 一种数据读取时的缓存管理方法、装置及系统
CN109542347B (zh) * 2018-11-19 2022-02-18 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置、设备及可读存储介质
CN109542347A (zh) * 2018-11-19 2019-03-29 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置、设备及可读存储介质
CN109710183A (zh) * 2018-12-17 2019-05-03 杭州宏杉科技股份有限公司 一种数据同步方法及装置
CN110134650A (zh) * 2019-04-28 2019-08-16 深圳市腾讯网域计算机网络有限公司 一种文件加载方法、装置、设备及存储介质
CN110134650B (zh) * 2019-04-28 2022-03-25 深圳市腾讯网域计算机网络有限公司 一种文件加载方法、装置、设备及存储介质
US11907164B2 (en) 2019-04-28 2024-02-20 Tencent Technology (Shenzhen) Company Limited File loading method and apparatus, electronic device, and storage medium
CN113326335A (zh) * 2020-06-29 2021-08-31 阿里巴巴集团控股有限公司 数据存储系统、方法、装置、电子设备及计算机存储介质
WO2022143751A1 (zh) * 2020-12-29 2022-07-07 华为技术有限公司 存储系统管理方法、存储系统及计算程序产品
CN114510474A (zh) * 2022-02-18 2022-05-17 中兴通讯股份有限公司 基于时间衰减的样本删除方法及其装置、存储介质
CN114510474B (zh) * 2022-02-18 2024-06-18 中兴通讯股份有限公司 基于时间衰减的样本删除方法及其装置、存储介质

Also Published As

Publication number Publication date
CN105573682B (zh) 2018-10-30

Similar Documents

Publication Publication Date Title
CN105573682B (zh) 一种san存储系统及其数据读写方法
US10114749B2 (en) Cache memory system and method for accessing cache line
CN103116552B (zh) 用于在分布式存储系统中分配存储空间的方法和装置
US8914501B2 (en) Method, apparatus, and system for scheduling distributed buffer resources
US11899580B2 (en) Cache space management method and apparatus
CN113342615B (zh) 命令监控方法、装置、控制器、系统、设备和存储介质
CN108900626B (zh) 一种云环境下数据存储方法、装置及系统
CN111309644B (zh) 一种内存分配方法、装置和计算机可读存储介质
CN112506823B (zh) 一种fpga数据读写方法、装置、设备及可读存储介质
CN108089825B (zh) 一种基于分布式集群的存储系统
CN101645837A (zh) 实现负载均衡的方法和装置
CN108874324A (zh) 一种访问请求处理方法、装置、设备及可读存储介质
CN104133642B (zh) SSD Cache填充方法及装置
CN110442533A (zh) 一种提高访问性能的方法、设备及存储介质
US7660964B2 (en) Windowing external block translations
CN112825023A (zh) 集群资源管理方法、装置、电子设备和存储介质
WO2010012196A1 (zh) 一种数据读写的方法和装置
WO2016201998A1 (zh) 一种缓存分配、数据访问、数据发送方法、处理器及系统
CN111510479B (zh) 一种异构缓存系统的资源分配方法及装置
CN104503924B (zh) 一种分层存储系统中的区域分配方法及装置
CN113672171A (zh) 分布式对象存储方法、装置、系统和元数据服务器
CN115794366A (zh) 一种内存预取方法及装置
CN109582233A (zh) 一种数据的缓存方法和装置
CN117806989A (zh) 基于持久化内存的高速数据处理方法、装置、设备及介质
CN117215485A (zh) Zns ssd管理方法及数据写入方法、存储装置、控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant