CN112181295A - 数据访问方法、装置、存储设备及机器可读存储介质 - Google Patents
数据访问方法、装置、存储设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN112181295A CN112181295A CN202011001442.XA CN202011001442A CN112181295A CN 112181295 A CN112181295 A CN 112181295A CN 202011001442 A CN202011001442 A CN 202011001442A CN 112181295 A CN112181295 A CN 112181295A
- Authority
- CN
- China
- Prior art keywords
- data
- shared cache
- space
- cache space
- source volume
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据访问方法、装置、存储设备及机器可读存储介质。在本申请中,针对存在大量数据相同的源卷和目标快照卷,通过源卷和目标快照卷共用的共享缓存空间,实现了多个卷之间的缓存数据重用。一方面,提高了数据读访问的性能。另一方面,提高了缓存空间的利用率。
Description
技术领域
本申请涉及存储技术领域,尤其涉及数据访问方法、装置、存储设备及机器可读存储介质。
背景技术
LUN(Logical Unit Number,逻辑单元号)为存储对外提供可访问的存储空间的业务的一种实体,LUN通常指客户端可访问的存储空间,比如,LUN可用于指代存储卷。
自动精简配置技术,是一种实现存储物理资源动态分配的存储技术。应用了自动精简配置技术的LUN,通常也被简称为:精简LUN或精简卷。
快照技术,是一种用于记录存储卷在目标时刻(可以被称为快照时间点,或简称为时间点)的数据状态的存储技术。时间点LUN(可以被称为时间点卷或快照卷),是一个包括源LUN(源卷)的指定快照时间点数据状态对应数据的可读写的LUN(存储卷);其中,时间点LUN的数据由两部分组成,一部分是源LUN的指定快照时间点对应目标时刻的数据,另一部分是时间点LUN上的新增数据。
缓存技术,为了弥补存储设备的各个部件之间的性能差距,基于数据局部性原理可知,使用缓存可以极大地提高系统的性能。比如,存储设备通常可以使用内存缓存客户端访问的数据,从而加快客户端对存储设备的数据读写访问速度。
发明内容
本申请提供一种数据访问方法,所述方法应用于存储设备,所述存储设备包括源卷、与所述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,所述源卷和所述目标快照卷被分配各自对应的缓存空间,所述源卷和所述目标快照卷还被分配了共用的共享缓存空间,所述方法包括:
响应于与所述存储设备对接的数据访问发起端对所述源卷的数据读访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据读访问请求匹配的缓存命中数据;
如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
可选的,还包括:
如果存在缓存命中数据,则将匹配的缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
可选的,所述源卷和所述目标快照都为精简卷;精简卷包括元数据区、元数据区对应管理的物理空间;其中,所述物理空间用于保存数据访问发起端实际写入数据,所述元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
可选的,所述数据读访问请求中携带了待读取目标数据对应的目标读逻辑地址;所述共享缓存空间对应被分配了用于管理所述共享缓存空间的共享缓存空间管理数据;其中,所述共享缓存空间管理数据包括共享缓存空间中已缓存数据对应在所述源卷的虚拟空间中的逻辑地址、与该逻辑地址对应在所述源卷的物理空间中的物理地址、所述已缓存数据保存在所述共享缓存空间中的缓存地址、指示所述已缓存数据被所述源卷的缓存空间引用以及被所述目标快照卷的缓存空间引用的引用关系记录;
所述如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据,包括:
如果不存在缓存命中数据,则获取所述源卷的数据映射表,并以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
基于所述目标读逻辑地址和所述目标读物理地址在所述共享缓存空间管理数据中,进一步查找是否存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目;如果存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目,则确定存在与所述数据读访问请求匹配的共享缓存命中数据;否则,确定不存在与所述数据读访问请求匹配的共享缓存命中数据。
可选的,所述如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,包括:
如果确定在所述共享缓存空间缓存的数据中存在与所述数据读访问请求匹配的共享缓存命中数据,则将匹配的共享缓存命中数据从所述共享缓存空间映射更新至所述源卷的缓存空间。
可选的,当不存在缓存命中数据且不存在共享缓存命中数据时,还包括:
获取所述源卷的数据映射表,以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
从所述目标读物理地址所指示的所述源卷的物理空间中读取对应的数据;
基于读取对应的数据,更新所述源卷的缓存空间及所述共享缓存空间。
可选的,所述基于读取对应的数据,更新所述共享缓存空间,包括:
将读取对应的数据保存在所述共享缓存空间中,并在所述共享缓存空间管理数据中生成与读取对应的数据对应的数据条目。
可选的,还包括:
响应于与所述存储设备对接的数据访问发起端对所述源卷的数据写访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据写访问请求匹配的缓存命中数据;
如果存在与所述数据写访问请求匹配的缓存命中数据,则进一步在所述共享缓存空间管理数据中查找是否存在与所述数据写访问请求匹配的数据条目;
如果存在与所述数据写访问请求匹配的数据条目,则生成与所述数据写访问请求对应的数据写访问回应,并将所述数据写访问回应发送至所述数据访问发起端,以及删除该数据条目中的引用关系记录中的所述源卷的缓存空间的引用关系;
检查该数据条目中的引用关系记录是否为空;如果为空,则该数据条目管理的所述共享缓存空间中的已缓存数据回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在所述共享缓存空间中管理的已缓存数据占用的空间被释放。
本申请还提供一种数据访问装置,所述装置应用于存储设备,所述存储设备包括源卷、与所述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,所述源卷和所述目标快照卷被分配各自对应的缓存空间,所述源卷和所述目标快照卷还被分配了共用的共享缓存空间,所述装置包括:
第一数据访问模块,响应于与所述存储设备对接的数据访问发起端对所述源卷的数据读访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据读访问请求匹配的缓存命中数据;
第二数据访问模块,如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
可选的,还包括:
第三数据访问模块,如果存在缓存命中数据,则将匹配的缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
可选的,所述源卷和所述目标快照都为精简卷;精简卷包括元数据区、元数据区对应管理的物理空间;其中,所述物理空间用于保存数据访问发起端实际写入数据,所述元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
可选的,所述数据读访问请求中携带了待读取目标数据对应的目标读逻辑地址;所述共享缓存空间对应被分配了用于管理所述共享缓存空间的共享缓存空间管理数据;其中,所述共享缓存空间管理数据包括共享缓存空间中已缓存数据对应在所述源卷的虚拟空间中的逻辑地址、与该逻辑地址对应在所述源卷的物理空间中的物理地址、所述已缓存数据保存在所述共享缓存空间中的缓存地址、指示所述已缓存数据被所述源卷的缓存空间引用以及被所述目标快照卷的缓存空间引用的引用关系记录;
所述第二数据访问模块进一步:
如果不存在缓存命中数据,则获取所述源卷的数据映射表,并以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
基于所述目标读逻辑地址和所述目标读物理地址在所述共享缓存空间管理数据中,进一步查找是否存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目;如果存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目,则确定存在与所述数据读访问请求匹配的共享缓存命中数据;否则,确定不存在与所述数据读访问请求匹配的共享缓存命中数据。
可选的,所述第二数据访问模块进一步:
如果确定在所述共享缓存空间缓存的数据中存在与所述数据读访问请求匹配的共享缓存命中数据,则将匹配的共享缓存命中数据从所述共享缓存空间映射更新至所述源卷的缓存空间。
可选的,当不存在缓存命中数据且不存在共享缓存命中数据时,所述第二数据访问模块进一步:
获取所述源卷的数据映射表,以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
从所述目标读物理地址所指示的所述源卷的物理空间中读取对应的数据;
基于读取对应的数据,更新所述源卷的缓存空间及所述共享缓存空间。
可选的,所述第二数据访问模块进一步:
将读取对应的数据保存在所述共享缓存空间中,并在所述共享缓存空间管理数据中生成与读取对应的数据对应的数据条目。
可选的,还包括:
第四数据访问模块,响应于与所述存储设备对接的数据访问发起端对所述源卷的数据写访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据写访问请求匹配的缓存命中数据;
第五数据访问模块,如果存在与所述数据写访问请求匹配的缓存命中数据,则进一步在所述共享缓存空间管理数据中查找是否存在与所述数据写访问请求匹配的数据条目;
如果存在与所述数据写访问请求匹配的数据条目,则生成与所述数据写访问请求对应的数据写访问回应,并将所述数据写访问回应发送至所述数据访问发起端,以及删除该数据条目中的引用关系记录中的所述源卷的缓存空间的引用关系;
检查该数据条目中的引用关系记录是否为空;如果为空,则该数据条目管理的所述共享缓存空间中的已缓存数据回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在所述共享缓存空间中管理的已缓存数据占用的空间被释放。
本申请还提供一种存储设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
通过以上实施例,基于响应于与存储设备对接的数据访问发起端对源卷的数据读访问请求,在源卷的缓存空间缓存的数据中查找是否存在与数据读访问请求匹配的缓存命中数据;如果不存在缓存命中数据,则在共享缓存空间缓存的数据中,进一步查找是否存在与数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与数据读访问请求对应的数据读访问回应中,并将数据读访问回应发送至数据访问发起端。针对存在大量数据相同的源卷和目标快照卷,通过源卷和目标快照卷共用的共享缓存空间,实现了多个卷之间的缓存数据重用。一方面,提高了数据读访问的性能。另一方面,提高了缓存空间的利用率。
附图说明
图1是一示例性实施例提供的一种不同时刻的源LUN和时间点LUN的数据分布的示意图;
图2是一示例性实施例提供的一种精简LUN中元数据进行数据管理的过程示意图;
图3是一示例性实施例提供的一种精简LUN和时间点LUN的数据访问时的缓存管理过程的示意图;
图4是一示例性实施例提供的一种数据访问方法的流程图;
图5是一示例性实施例提供的另一种精简LUN和时间点LUN的数据访问时的缓存管理过程的的示意图;
图6是一示例性实施例提供的又一种精简LUN和时间点LUN的数据访问时的缓存管理过程的的示意图;
图7是一示例性实施例提供的一种存储设备的硬件结构图;
图8是一示例性实施例提供的一种数据访问装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,下面先对本申请实施例涉及的数据访问的相关技术,进行简要说明。
这里先简单介绍下快照的相关技术。
快照技术的具体包括ROW(Redirect on write,写时重定向)快照技术和COW(Copyon write,首写拷贝)快照技术,通过ROW及COW快照技术获得的时间点LUN,在虚拟化的场景中有着广泛的应用。比如,在虚拟机快速克隆,虚拟桌面等虚拟化应用部署,都是快照技术的具体应用场景。
对于时间点LUN而言,其数据来源于具体包括以下三个可能来源:
来源1、位于源LUN上并且同时归属源LUN的数据。
来源2、位于源LUN上但不归属源LUN,而归属时间点LUN的时间点所管理的对应时刻源LUN的快照数据。
来源3、位于时间点LUN上的归属时间点LUN的新增数据。
请参见图1,图1是本申请一实施例提供的一种不同时刻的源LUN和时间点LUN的数据分布的示意图。
如图1所示,存储设备管理三个LUN:精简LUN、时间点LUN T0、时间点LUN T1;其中,精简LUN作为源LUN;时间点LUN T0为包括精简LUN的T0时间点数据状态对应数据的可读写的LUN;时间点LUN T1为包括精简LUN的T1时间点数据状态对应数据的可读写的LUN。
在初始时刻,精简LUN中保存的数据包括A、B、C、D、E。
在时间点T0对应的时刻,精简LUN中数据A、B被分别修改为A1,B1,则T0时刻归属精简LUN管理的数据包括:A1、B1、C、D、E(如图1中所示的从精简LUN发出指向A1、B1、C、D、E的实线箭头)。
T0时刻归属时间点LUN T0管理的数据包括:A1、B1、C、D、E(如图1中所示的从时间点LUN T0发出指向A、B、C、D、E的虚线箭头)。另外,T0时刻归属时间点LUN T0管理的数据还包括Bt0;其中Bt0为时间点LUN T0在T0时刻的新增数据。
在时间点T1对应的时刻,精简LUN中的数据未发生改变,则T1时刻归属精简LUN管理的数据包括:A1、B1、C、D、E(如图1中所示的从精简LUN发出指向A1、B1、C、D、E的实线箭头)。T1时刻归属时间点LUN T1管理的数据包括:A1、B1、C、D、E(如图1中所示的从时间点LUNT1发出指向A1、B1、C、D、E的虚线箭头)
如图1及以上描述过程可见,对于时间点LUN T0其数据来源具体包括:
a)位于源LUN上并且同时归属源LUN的数据:C、D、E。
b)位于源LUN上但不归属源LUN,而归属时间点LUN的时间点所管理的对应时刻源LUN的快照数据:A、B。
c)位于时间点LUN T0上的归属时间点LUN T0的新增数据:Bt0。
而对于时间点LUN T1其数据来源具体包括:
a)位于源LUN上并且同时归属源LUN的数据:A1、B1、C、D、E。
需要说明的是,以上描述的归属源LUN或归属时间点LUN,是指通过源LUN、时间点LUN中的元数据进行数据管理。
为了方便理解,这里简单介绍下精简LUN(精简卷)中元数据进行数据管理的相关技术。
请参见图2,图2是本申请一实施例提供的一种精简LUN中元数据进行数据管理的过程示意图。
如图2所示,精简LUN通常由两部分组成:元数据区和元数据区对应管理的物理空间;其中,物理空间主要保存数据访问发起端实际写入数据,而元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
对于精简LUN的读写,主要是通过数据映射表中记录的逻辑地址与物理空间的映射关系获取对应的物理空间的实际物理地址,然后根据获取的物理空间的实际物理地址对精简LUN进行读写访问。
数据访问发起端针对精简LUN发起读写访问时,数据访问发起端仅需对精简LUN的虚拟空间中的逻辑地址进行读写访问。
如图2所示,以数据访问发起端从精简LUN的虚拟空间中的逻辑地址0读取数据块A0的读访问为例,精简LUN根据该读访问中的逻辑地址0,查找数据映射表(表项格式包括:数据的逻辑地址、与数据的逻辑地址对应的数据的物理地址)中存在匹配的表项(如图2中右上角所示的数据映射表中的包括地址0和地址A的地址映射关系的第一条表项),则获取地址A作为该待读取数据块A0对应的物理地址;然后,从物理地址A指示的精简LUN的物理空间中读取数据块A0(如图2中所示的由数据映射表第一表项指向物理空间中物理地址A对应的数据块A0的弧形箭头)。
如图2所示,针对数据块B0、F0的数据访问过程与数据块A0的数据访问过程类似。请参见图2中所示,具体过程不再赘述。
以上示出的架构基础上,随着OpenStack和VMware等虚拟化技术的广泛使用,快照技术的应用场景越来越广泛,像虚拟机快速克隆,虚拟桌面等应用都是快照技术的应用场景。企业的业务流程的运转越来越高度依赖这些应用和相关的数据,这使得数据越来越成为了支撑企业运作的重要基石,对于时间点LUN的读写性能提出了更高的要求。
请参见图3,图3是本申请一实施例提供的一种精简LUN和时间点LUN的数据访问时的缓存管理过程的示意图。
图3基于图1变化而来,图3与图1类似,图3与图1中的精简LUN及时间点LUN T0分别对应管理的数据相同。
图3与图1的主要区别在于:图1中时间点LUN T1相关未在图3中展示。另外,图3与图1相比,在图3中增加了展示了精简LUN对应被分配的缓存空间1,时间点LUN T0对应被分配的缓存空间2。
如图3所示,这里简单介绍下,数据访问发起端针对精简LUN进行数据访问的过程,主要包括以下步骤:
步骤S1.精简LUN接收到数据访问发起端下发的数据访问请求,如果该数据访问请求是数据读访问请求,则转到步骤S2;如果该数据访问请求是数据写访问请求,则转到步骤S4。
步骤S2.对于数据读访问请求中待读取的数据(比如:精简LUN中存储的A1、C),首先查找精简LUN的缓存空间1中是否存在,如果存在则指示缓存命中,则获取缓存空间1中的命中缓存数据(比如:缓存空间1中存储的A1、C)并将其返回给数据访问发起端,如果精简LUN的缓存空间1中没有缓存命中(比如:当缓存空间1中未存储A1、C时),则转到步骤S3。
步骤S3.在数据读访问请求在精简LUN的缓存空间1中没有缓存命中时,则基于数据读访问请求携带逻辑地址,查询精简LUN的数据映射表,获取对应数据(A1、C)对应的在精简LUN的物理空间中的具体物理地址,然后从具体物理地址读取该数据(A1、C)并将其返回给数据访问发起端,并同步更新缓存空间1中的数据(比如:将从精简LUN的物理空间读取的数据A1、C,保存在精简LUN的缓存空间1中,具体类似图2及其对应的描述的过程)。
步骤S4.对于数据写访问请求(比如:该数据写访问请求计划将数据A1、C写入至精简LUN中),先更新精简LUN的缓存空间1中的缓存数据(比如:将该数据写访问请求中携带的数据A1、C,先保存至精简LUN的缓存空间1),然后向数据访问发起端返回对应的写成功回应。后续,针对根据相关缓存刷新策略将缓存空间1中的缓存数据持久化到精简LUN对应的物理空间中。
类似地,数据访问发起端对时间点LUN T0进行数据访问的过程,与以上描述的对精简LUN进行数据访问的过程相似,具体过程这里不再赘述。
如图3所示,在时间点LUN T0的缓存空间2中已缓存数据A、C时,当数据访问发起端读取时间点LUN T0已保存的数据(比如:A、C)中,先从缓存空间2中查找到存在数据A、C(缓存命中),则直接从缓存空间2中读取数据A、C,并将其返回给数据访问发起端。
然而,在一些场景下,在虚拟桌面及虚拟机快速克隆等应用访问存储设备时,存储设备管理的精简LUN以及与该精简LUN对应多个的时间点LUN存在大量相同的数据。结合图1及图2及图3所示其对应描述的过程,在该过程的实现方式中,在访问这些数据之前,存储设备需要载入访问数据对应的数据映射表,通过查找数据映射表获取对应的数据块的物理地址,然后再获取物理地址对应的实际数据。
由此可见,在以上场景中的传统技术方案对性能会产生一定的影响,并且存储设备的缓存的利用率较低。比如:如图3所示,在首次从精简LUN读取数据A1、C,以及首次从时间点LUN T0读取数据A、C时,需要分别将各自读取的数据保存在各自的缓存空间中(A1、C保存缓存空间1中,A、C保存缓存空间2中);其中,各自的缓存空间中保存了相同的数据C。
基于此,在以上示出的架构基础上,本申请旨在提出一种,在精简LUN作为源LUN以及在数据访问发起端针对精简LUN及其对应多个的时间点LUN进行数据访问过程中,基于为精简LUN和时间点LUN分配共享缓存空间供多个LUN共享使用,来提高数据访问性能及缓存空间利用率的技术方案。
在实现时,存储设备包括源卷、与源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,源卷和目标快照卷被分配各自对应的缓存空间,源卷和目标快照卷还被分配了共用的共享缓存空间。
进一步地,存储设备响应于与存储设备对接的数据访问发起端对源卷的数据读访问请求,在源卷的缓存空间缓存的数据中查找是否存在与数据读访问请求匹配的缓存命中数据。
进一步地,如果不存在缓存命中数据,则在共享缓存空间缓存的数据中,进一步查找是否存在与数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与数据读访问请求对应的数据读访问回应中,并将数据读访问回应发送至数据访问发起端。
在以上方案中,针对存在大量数据相同的源卷和目标快照卷,通过源卷和目标快照卷共用的共享缓存空间,实现了多个卷之间的缓存数据重用。一方面,提高了数据读访问的性能。另一方面,提高了缓存空间的利用率。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图4,图4是本申请一实施例提供的一种数据访问方法的流程图,上述方法应用于存储设备,上述存储设备包括源卷、与上述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,上述源卷和上述目标快照卷被分配各自对应的缓存空间,上述源卷和上述目标快照卷还被分配了共用的共享缓存空间,上述方法执行以下步骤:
步骤402、响应于与上述存储设备对接的数据访问发起端对上述源卷的数据读访问请求,在上述源卷的缓存空间缓存的数据中查找是否存在与上述数据读访问请求匹配的缓存命中数据。
步骤404、如果不存在缓存命中数据,则在上述共享缓存空间缓存的数据中,进一步查找是否存在与上述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新上述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与上述数据读访问请求对应的数据读访问回应中,并将上述数据读访问回应发送至上述数据访问发起端。
在本说明书中,上述存储设备,包括存储介质为任何类型硬盘的任何形式的存储设备或存储设备集群。
例如,上述存储设备可以为存储介质为SATA(Serial Advanced TechnologyAttachment)机械硬盘、SAS(Serial Attached SCSI)机械硬盘、SCSI(Small ComputerSystem Interface)机械硬盘、固定硬盘的框式、柜式的存储设备或存储设备集群。当然,在实际应用中,上述存储设备还可以包含1个或多个存储控制器。
在本说明书中,上述数据访问发起端,可以包括与上述存储设备对接的、并向上述存储设备发起的数据读写访问请求的任何形式的客户端。
例如,在实际应用中,上述数据访问发起端可以包括与上述存储设备对接的、并向上述存储设备发起的数据读访问请求的客户端,也可以包括与上述存储设备对接的、并向上述存储设备发起的数据写访问请求的客户端;其中,客户端具体可以包括基于网络协议(比如:iSCSI、http)、函数调用等远程访问方式或本地访问方式来访问上述存储设备。
请参见图5,图5是本申请一实施例提供的一种精简LUN和时间点LUN的数据访问时的缓存管理过程的示意图。
图5与图3类似,图5与图3中的精简LUN及时间点LUN T0分别对应管理的数据相同。
图5与图3的主要区别在于:在图5中增加了共享缓存空间;其中,该共享缓存空间可以被精简LUN的缓存空间1和时间点LUN T0的缓存空间2共用;如图5所示,在共享缓存空间中存储了数据C、D、E;缓存空间1中的C和缓存空间2中的C实际是对应共享缓存空间中存储的数据C的引用,并未在缓存空间(缓存空间1、缓存空间2)中实际占用物理空间。
在本说明书中,上述存储设备包括源卷、与上述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,上述源卷和上述目标快照卷被分配各自对应的缓存空间,上述源卷和上述目标快照卷还被分配了共用的共享缓存空间。
例如,请参见图5,上述源卷为如图5中所示的精简卷,上述目标快照卷为如图5中所示的与该精简卷在目标时间点(T0)的数据状态一致的可读写的时间点LUN T0;该精简卷被分配了对应的缓存空间1,时间点LUN T0被分配了对应的缓存空间2,该精简卷和时间点LUN T0还被分配了如图5中所示的共用的共享缓存空间。
在示出的一种实施方式中,上述源卷及上述目标快照卷都为精简卷,也即,上述源卷及上述目标快照卷都为应用了自动精简配置技术的LUN。
例如,请参见图5,在图5中将上述源卷以精简卷直接命名,时间点LUN T0实际也为应用了自动精简配置技术的LUN。
当然,在实际应用中,上述源卷及上述目标快照卷也可以为普通卷。
在示出的一种实施方式中,在上述源卷及上述目标快照卷都为精简卷时,精简卷包括元数据区、元数据区对应管理的物理空间;其中,上述物理空间用于保存数据访问发起端实际写入数据,上述元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
例如,以源卷为精简卷为例,该源卷包括元数据区、元数据区对应管理的物理空间;其中,该物理空间用于保存数据访问发起端实际写入数据,该元数据区用于保存指示数据在源卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。具体请参见图2及前文对应的描述,这里不再赘述。
又例如,以目标快照卷(比如:时间点LUN T0)为精简卷为例,该目标快照卷包括元数据区、元数据区对应管理的物理空间;其中,该物理空间用于保存数据访问发起端实际写入数据,该元数据区用于保存指示数据在目标快照卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。具体请参见图2及前文对应的描述,这里不再赘述。
请参见图6,图6是本申请一实施例提供的又一种精简LUN和时间点LUN的数据访问时的缓存管理过程的示意图。
图6基于图5变化而来,图6与图5类似,图6与图5中的精简LUN及时间点LUN T0分别对应管理的数据相同,但为了方便画图展示,精简LUN及时间点LUN T0分别对应管理的数据在图6中未展示。
图6是对图5中涉及的缓存空间1、缓存空间2、共享缓存空间中的数据进行管理的进一步详细展示。
如图6所示,缓存空间1对应被分配了用于管理缓存空间1的缓存空间1管理数据,缓存空间2对应被分配了用于管理缓存空间2的缓存空间2管理数据;其中,缓存空间1管理数据和缓存空间2管理数据的表项定义相同。
以缓存空间1管理数据为例,请参见图6,缓存空间1管理数据的表项定义及表项内容,请参见如下表1所示:
表1
如表1所示,缓存空间1中的已缓存数据A1对应表1中的第1条表项,也即,已缓存数据A1对应在精简LUN的虚拟空间中的逻辑地址为“逻辑地址LBA”,已缓存数据A1对应在精简LUN的物理空间中的物理地址为“物理地址PBA1”,已缓存数据A1对应在保存在缓存空间1中的缓存地址为“缓存地址CBA1”。同理,缓存空间1中的已缓存数据C对应表1中的第2条表项,具体不再赘述。
类似地,以缓存空间2管理数据为例,请参见图6,缓存空间2管理数据的表项定义及表项内容,请参见如下表2所示:
表2
如表2所示,缓存空间2中的已缓存数据A对应表2中的第1条表项,也即,已缓存数据A对应在时间点LUN T0的虚拟空间中的逻辑地址为“逻辑地址LBA”,已缓存数据A对应在时间点LUN T0的物理空间中的物理地址为“物理地址PBA”,已缓存数据A对应在保存在缓存空间2中的缓存地址为“缓存地址CBA”。同理,缓存空间2中的已缓存数据C对应表2中的第2条表项,具体不再赘述。
需要说明的是,请将表1中的第1条表项和表2中的第1条表项进行对照参看;其中,缓存空间1中的已缓存数据A1和缓存空间2中的已缓存数据A,两者的逻辑地址相同(都为“逻辑地址LBA”),但两者的物理地址不同(A1对应的物理地址为“物理地址PBA1”,A对应的物理地址为“物理地址PBA”)及缓存地址不同(A1对应的缓存地址为“缓存地址CBA1”,A对应的缓存地址为“缓存地址CBA”)。
另外,需要说明的是,请将表1中的第2条表项和表2中的第2条表项进行对照参看;其中,缓存空间1中的已缓存数据C和缓存空间2中的已缓存数据C,两者的逻辑地址相同(都为“逻辑地址LBC”),两者的物理地址也相同(都为“物理地址PBC”)及缓存地址也相同(都为“缓存地址CBC”)。
如图6所示,共享缓存空间对应被分配了用于管理该共享缓存空间的共享缓存空间管理数据;共享缓存空间管理数据与缓存空间的管理数据(缓存空间1管理数据和缓存空间2管理数据)的表项定义相似,区别主要在于:共享缓存空间管理数据相比缓存空间的管理数据增加了“引用关系记录”字段;其中,“引用关系记录”用于记录共享缓存空间中的已缓存数据被缓存空间1的管理数据引用和或被缓存空间2的管理数据引用的引用关系。
例如,请参见图6,共享缓存空间管理数据的表项定义及表项内容,请参见如下表3所示:
表3
如表3所示,共享缓存空间中的已缓存数据C对应表3中的第1条表项,也即,已缓存数据C对应在数据归属LUN(请参见图5所示,数据C归属精简LUN)的虚拟空间中的逻辑地址为“逻辑地址LBC”,已缓存数据C对应在归属的精简LUN的物理空间中的物理地址为“物理地址PBC”,已缓存数据C对应在保存在共享缓存空间中的缓存地址为“缓存地址CBC”,已缓存数据C的引用关系记录为“引用关系记录C”,引用关系记录C中记录了共享缓存空间中的已缓存数据C被缓存空间1的管理数据和缓存空间2的管理数据同时引用。同理,共享缓存空间中的已缓存数据D对应表3中的第2条表项,共享缓存空间中的已缓存数据E对应表3中的第3条表项,具体不再赘述。
需要说明的是,请将表1中的第1条表项和表2中的第1条表项,分别与表3中的第1条表项进行对照参看;其中,三者分别对应的已缓存数据C的逻辑地址相同(都为“逻辑地址LBC”),三者的物理地址也相同(都为“物理地址PBC”)及缓存地址也相同(都为“缓存地址CBC”)。也即,针对共享缓存空间中的已缓存数据C,该数据C实际仅保存在共享缓存空间的物理空间中,并未保存在缓存空间1的物理空间中,以及并未保存在缓存空间2的物理空间中;表1中的第1条表项和表2中的第1条表项仅引用了表3中的第1条表项,也即,将表3中的第1条表项映射至表1中的第1条表项,以及将表3中的第1条表项映射至表2中的第1条表项。
在本说明书中,上述数据访问发起端对上述源卷发起数据访问请求和上述数据访问发起端对上述目标快照卷发起数据访问请求的过程是类似的。
为了方便理解和描述,以下以上述数据访问发起端对上述源卷发起数据访问请求进行详细描述。
在本说明书中,上述数据访问发起端对上述源卷发起数据读访问请求;其中,上述数据读访问请求中携带了待读取目标数据对应的目标读逻辑地址。
例如,请参见图5及图6所示,数据访问发起端对精简LUN发起数据读访问请求;其中,该数据读访问请求中携带了待读取目标数据(比如:A1或C)对应的目标读逻辑地址(比如:A1对应的目标读逻辑地址为LBA,C对应的目标读逻辑地址为LBC)。
在本说明书中,上述存储设备接收上述数据访问发起端对上述源卷的上述数据读访问请求,并响应于上述数据读访问请求,在上述源卷的缓存空间缓存的数据中查找是否存在与上述数据读访问请求匹配的缓存命中数据。
接着以上示例继续举例,存储设备接收数据访问发起端对精简LUN的数据读访问请求,并响应于该数据读访问请求,在精简LUN的缓存空间1缓存的数据中查找是否存在与该数据读访问请求匹配的缓存命中数据(比如:A1或C)。
在示出的一种实施方式中,如果存在缓存命中数据,则上述存储设备将匹配的缓存命中数据携带在与上述数据读访问请求对应的数据读访问回应中,并将上述数据读访问回应发送至上述数据访问发起端。
接着以上示例继续举例,在精简LUN的缓存空间1缓存的数据中存在缓存命中数据(比如:如图6所示的精简LUN的缓存空间1中存在A1),则存储设备将匹配的缓存命中数据(缓存空间1中存在的A1)携带在与该数据读访问请求对应的数据读访问回应中,并将该数据读访问回应发送至上述数据访问发起端,以完成该数据读访问。
在本说明书中,如果不存在缓存命中数据,则上述存储设备在上述共享缓存空间缓存的数据中,进一步查找是否存在与上述数据读访问请求匹配的共享缓存命中数据。
接着以上示例继续举例,在精简LUN的缓存空间1缓存的数据中不存在缓存命中数据(比如:如图6所示的精简LUN的缓存空间中不存在A1或C),存储设备在如图6所示的共享缓存空间缓存的数据中,进一步查找是否存在与该数据读访问请求匹配的共享缓存命中数据(比如:A1或C)。
在示出的一种实施方式中,当上述缓存命中数据不存在时,在上述共享缓存空间缓存的数据中进一步查找是否存在与上述数据读访问请求匹配的共享缓存命中数据的过程中,上述存储设备获取上述源卷的数据映射表,并以上述目标读逻辑地址作为查找索引在获取的上述源卷的数据映射表中查找得到与上述目标读逻辑地址对应的目标读物理地址。
接着以上示例继续举例,存储设备获取的精简LUN(如图6中所示)的数据映射表(数据映射表具体获取过程,请参见图2及前文对应的描述),并以目标读逻辑地址(比如:A1对应的目标读逻辑地址为“逻辑地址LBA”,C对应的目标读逻辑地址为“逻辑地址LBC”)作为查找索引在获取的精简LUN的数据映射表中查找得到与该目标读逻辑地址对应的目标读物理地址(比如:A1对应的目标读逻辑地址为“逻辑地址LBA”,则该目标读逻辑地址对应的目标读物理地址为“物理地址PBA1”;C对应的目标读逻辑地址为“逻辑地址LBC”,则该目标读逻辑地址对应的目标读物理地址为“物理地址PBC”)。
在本说明书中,进一步地,上述存储设备基于上述目标读逻辑地址和上述目标读物理地址在上述共享缓存空间管理数据中,进一步查找是否存在与上述目标读逻辑地址和上述目标读物理地址都匹配的数据条目;如果存在与上述目标读逻辑地址和上述目标读物理地址都匹配的数据条目,则确定存在与上述数据读访问请求匹配的共享缓存命中数据;否则,确定不存在与上述数据读访问请求匹配的共享缓存命中数据。
接着以上示例继续举例,存储设备基于该目标读逻辑地址(比如:“逻辑地址LBA”)和该目标读物理地址(比如:“物理地址PBC”)在共享缓存空间管理数据中,进一步查找是否存在与该目标读逻辑地址和该目标读物理地址都匹配的数据条目;如果存在与该目标读逻辑地址和该目标读物理地址都匹配的数据条目(比如:如图6所示表3中存在与“逻辑地址LBA”和“物理地址PBC”都匹配的数据条目,也即,表3中的第一条表项为存在与“逻辑地址LBA”和“物理地址PBC”都匹配的数据条目),则确定存在与该数据读访问请求匹配的共享缓存命中数据(也即,共享缓存空间中存在与该数据读访问请求匹配的C);否则,确定不存在与该数据读访问请求匹配的共享缓存命中数据。
在本说明书中,如果存在共享缓存命中数据,则上述存储设备基于匹配的共享缓存命中数据更新上述源卷的缓存空间中缓存的数据。
接着以上示例继续举例,在如图6所示的共享缓存空间缓存的数据中存在共享缓存命中数据(比如:A1或C),则存储设备基于匹配的共享缓存命中数据更新精简LUN的缓存空间1中缓存的数据。
在示出的一种实施方式中,当上述共享缓存命中数据存在时,在基于匹配的共享缓存命中数据更新上述源卷的缓存空间中缓存的数据的过程中,上述存储设备将匹配的共享缓存命中数据从上述共享缓存空间映射更新至上述源卷的缓存空间。
接着以上示例继续举例,请参见图6所示,在共享缓存空间缓存的数据中存在与该数据读访问请求匹配的共享缓存命中数据(比如:C),则将匹配的共享缓存命中数据C从共享缓存空间映射更新至精简LUN的缓存空间1中,也即,请参见前文的针对图6中的表项的相关描述,将表3中的第一条表项映射增加至表1中的第一条表项,无需将共享缓存命中数据C从共享缓存空间拷贝至精简LUN的缓存空间1中。
在示出的一种实施方式中,当不存在上述缓存命中数据且不存在上述共享缓存命中数据时,存储设备获取上述源卷的数据映射表,以上述目标读逻辑地址作为查找索引在获取的上述源卷的数据映射表中查找得到与上述目标读逻辑地址对应的目标读物理地址;从上述目标读物理地址所指示的上述源卷的物理空间中读取对应的数据;基于读取对应的数据,更新上述源卷的缓存空间及上述共享缓存空间。
接着以上示例继续举例,请参见图6所示,当缓存空间1中不存在缓存命中数据C且不存在共享缓存空间中不存在共享缓存命中数据C时,存储设备获取的精简LUN(如图6中所示)的数据映射表(数据映射表具体获取过程,请参见图2及前文对应的描述),并以目标读逻辑地址(比如:C对应的目标读逻辑地址为“逻辑地址LBC”)作为查找索引在获取的精简LUN的数据映射表中查找得到与该目标读逻辑地址对应的目标读物理地址(比如:C对应的目标读逻辑地址为“逻辑地址LBC”,则该目标读逻辑地址对应的目标读物理地址为“物理地址PBC”)。存储设备从目标读物理地址(“物理地址PBC”)所指示的精简LUN的物理空间中读取对应的数据C;基于读取对应的数据C,更新精简LUN的缓存空间1及共享缓存空间。
在示出的一种实施方式中,在基于读取对应的数据更新上述共享缓存空间过程中,上述存储设备将读取对应的数据保存在上述共享缓存空间中,并在上述共享缓存空间管理数据中生成与读取对应的数据对应的数据条目。
接着以上示例继续举例,存储设备将从精简LUN的物理空间中读取对应的数据C保存在共享缓存空间中,并在共享缓存空间管理数据中生成与已缓存的数据C对应的数据条目(表3中的第1条表项,如图6中所示)。
需要说明的是,更新上述源卷的缓存空间及上述共享缓存空间,具体是指更新上述源卷的缓存空间的管理数据及上述共享缓存空间的管理数据。比如,接着以上示例继续举例,如图6中所示的共享缓存空间管理数据在初始时没有任何表项,在首次从精简LUN的物理空间中读取数据C至共享缓存空间中后,在如图6中所示的缓存空间1的管理数据(表1)中增加对应表项(表1中的第2条表项),在如图6中所示的共享缓存空间管理数据(表3)中增加对应表项(表3中的第1条表项),表3中的第1条表项的引用关系记录C中记录了表3中的第1条表项被缓存空间1引用。又比如,如图6所示,表3中的第1条表项的引用关系记录C中除了记录了表3中的第1条表项被缓存空间1的管理数据引用外,还可以记录了表2中的第1条表项被缓存空间2的管理数据引用。
在示出的一种实施方式中,上述数据访问发起端还可以对上述源卷发起数据写访问请求。上述存储设备响应于上述数据访问发起端对上述源卷的数据写访问请求,在上述源卷的缓存空间缓存的数据中查找是否存在与上述数据写访问请求匹配的缓存命中数据。
例如,请参见图6所示,上述数据访问发起端还可以对精简LUN发起数据写访问请求。存储设备响应于该数据访问发起端对精简LUN的数据写访问请求,在精简LUN的缓存空间1缓存的数据(比如:A1、C)中查找是否存在与该数据写访问请求匹配的缓存命中数据。
在本说明书中,进一步地,如果存在与上述数据写访问请求匹配的缓存命中数据,则上述存储设备进一步在上述共享缓存空间管理数据中查找是否存在与上述数据写访问请求匹配的数据条目。
接着以上示例继续举例,请参见图6所示,当存在与该数据写访问请求匹配的缓存命中数据(比如:在表1中存在与缓存命中数据C对应的第2条表项,表示该数据写访问请求要写入至精简LUN的物理空间中的数据C在缓存空间1或共享缓存空间中存在),则存储设备进一步在共享缓存空间管理数据中查找是否存在与该数据写访问请求匹配的数据条目(比如:在如表3中查找是否存在与该数据写访问请求匹配的数据条目,表3中存在与该数据写访问请求匹配的第1条表项)。
在本说明书中,进一步地,如果存在与上述数据写访问请求匹配的数据条目,则上述存储设备生成与上述数据写访问请求对应的数据写访问回应,并将上述数据写访问回应发送至上述数据访问发起端,以及删除该数据条目中的引用关系记录中的上述源卷的缓存空间的引用关系。
接着以上示例继续举例,请参见图6所示,当存在与上述数据写访问请求匹配的数据条目时(表3中存在与该数据写访问请求匹配的第1条表项),则存储设备生成与该数据写访问请求对应的数据写访问回应,并将该数据写访问回应发送至上述数据访问发起端,以及删除该数据条目中的引用关系记录中的精简LUN的缓存空间1的引用关系(比如:将表3中存在与该数据写访问请求匹配的第1条表项的引用关系记录中记录的“精简LUN的缓存空间1的管理数据引用该表项”引用关系删除)。
在本说明书中,进一步地,上述存储设备检查该数据条目中的引用关系记录是否为空;如果为空,则该数据条目管理的上述共享缓存空间中的已缓存数据回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在上述共享缓存空间中管理的已缓存数据占用的空间被释放。
接着以上示例继续举例,存储设备检查该数据条目(表3中存在与该数据写访问请求匹配的第1条表项)中的引用关系记录是否为空(比如:在精简LUN的缓存空间1的管理数据引用该表项的引用关系删除后,不存在时间点LUN T0的缓存空间2的管理数据引用该表项的引用关系);如果为空,则该数据条目管理的共享缓存空间中的已缓存数据C回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在上述共享缓存空间中管理的已缓存数据占用的空间被释放。
当然,在实际应用中,在检查该数据条目中的引用关系记录是否为空的过程中;如果该数据条目中的引用关系记录不为空,则上述存储设备仅需删除该数据条目中的引用关系记录中的上述源卷的缓存空间的引用关系,也即,上述目标快照卷(比如:时间点LUN T0)还可以继续使用该数据条目对应管理的上述共享缓存空间中缓存的对应数据。
另外需要说明的是,在上述共享缓存空间更新后,上述存储设备同步更新上述源卷对应的缓存空间。比如:在共享缓存空间管理数据更新后(比如:在表3的第1条表项的引用关系C中删除缓存空间1的引用关系后),存储设备同步更新精简LUN的缓存空间1的管理数据。
以上描述及示例,详细描述了上述数据访问发起端对上述源卷发起数据访问请求(包括数据读访问请求和数据写访问请求)的过程。相应的,上述数据访问发起端对上述目标快照卷发起数据访问请求(包括数据读访问请求和数据写访问请求)的过程,与以上描述的过程类似,这里不再赘述。
在本说明书中,当数据访问发起端A对源卷发起数据读访问请求,并且该数据读访问请求对应的待读取数据(比如:C)已缓存在共享缓存空间中时,当数据访问发起端B也发起对目标快照卷发起数据读访问请求并且该数据读访问请求对应的待读取数据也为C时,数据访问发起端B可以直接从共享缓存空间中读取已缓存的数据C,无需如图3中所示的还需要重新去从目标快照卷的物理空间中重复读取数据C。请将图6与图3进行对比参看,也即,如图6所示的基于共享缓存空间的技术方案相比图3的技术方案,极大地提高了数据读访问的性能,并节省了缓存空间(比如:存储设备的真实物理内存)。
在以上技术方案中,基于响应于与存储设备对接的数据访问发起端对源卷的数据读访问请求,在源卷的缓存空间缓存的数据中查找是否存在与数据读访问请求匹配的缓存命中数据;如果不存在缓存命中数据,则在共享缓存空间缓存的数据中,进一步查找是否存在与数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与数据读访问请求对应的数据读访问回应中,并将数据读访问回应发送至数据访问发起端。针对存在大量数据相同的源卷和目标快照卷,通过源卷和目标快照卷共用的共享缓存空间,实现了多个卷之间的缓存数据重用。一方面,提高了数据读访问的性能。另一方面,提高了缓存空间的利用率。
与上述方法实施例相对应,本申请还提供了数据访问装置的实施例。
与上述方法实施例相对应,本说明书还提供了一种数据访问装置的实施例。本说明书的数据访问装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本说明书的数据访问装置所在存储设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该存储设备的实际功能,还可以包括其他硬件,对此不再赘述。
图8是本说明书一实施例示出的一种数据访问装置的框图。
请参考图8,所述数据访问装置80可以应用在前述图7所示的存储设备中,所述存储设备包括源卷、与所述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,所述源卷和所述目标快照卷被分配各自对应的缓存空间,所述源卷和所述目标快照卷还被分配了共用的共享缓存空间,所述装置包括:
第一数据访问模块801,响应于与所述存储设备对接的数据访问发起端对所述源卷的数据读访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据读访问请求匹配的缓存命中数据;
第二数据访问模块802,如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
在本实施例中,还包括:
第三数据访问模块803(图8中未示出),如果存在缓存命中数据,则将匹配的缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
在本实施例中,所述源卷和所述目标快照都为精简卷;精简卷包括元数据区、元数据区对应管理的物理空间;其中,所述物理空间用于保存数据访问发起端实际写入数据,所述元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
在本实施例中,所述数据读访问请求中携带了待读取目标数据对应的目标读逻辑地址;所述共享缓存空间对应被分配了用于管理所述共享缓存空间的共享缓存空间管理数据;其中,所述共享缓存空间管理数据包括共享缓存空间中已缓存数据对应在所述源卷的虚拟空间中的逻辑地址、与该逻辑地址对应在所述源卷的物理空间中的物理地址、所述已缓存数据保存在所述共享缓存空间中的缓存地址、指示所述已缓存数据被所述源卷的缓存空间引用以及被所述目标快照卷的缓存空间引用的引用关系记录;
所述第二数据访问模块802进一步:
如果不存在缓存命中数据,则获取所述源卷的数据映射表,并以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
基于所述目标读逻辑地址和所述目标读物理地址在所述共享缓存空间管理数据中,进一步查找是否存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目;如果存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目,则确定存在与所述数据读访问请求匹配的共享缓存命中数据;否则,确定不存在与所述数据读访问请求匹配的共享缓存命中数据。
在本实施例中,所述第二数据访问模块802进一步:
如果确定在所述共享缓存空间缓存的数据中存在与所述数据读访问请求匹配的共享缓存命中数据,则将匹配的共享缓存命中数据从所述共享缓存空间映射更新至所述源卷的缓存空间。
在本实施例中,当不存在缓存命中数据且不存在共享缓存命中数据时,所述第二数据访问模块802进一步:
获取所述源卷的数据映射表,以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
从所述目标读物理地址所指示的所述源卷的物理空间中读取对应的数据;
基于读取对应的数据,更新所述源卷的缓存空间及所述共享缓存空间。
在本实施例中,所述第二数据访问模块802进一步:
将读取对应的数据保存在所述共享缓存空间中,并在所述共享缓存空间管理数据中生成与读取对应的数据对应的数据条目。
可选的,还包括:
第四数据访问模块804(图8中未示出),响应于与所述存储设备对接的数据访问发起端对所述源卷的数据写访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据写访问请求匹配的缓存命中数据;
第五数据访问模块805(图8中未示出),如果存在与所述数据写访问请求匹配的缓存命中数据,则进一步在所述共享缓存空间管理数据中查找是否存在与所述数据写访问请求匹配的数据条目;
如果存在与所述数据写访问请求匹配的数据条目,则生成与所述数据写访问请求对应的数据写访问回应,并将所述数据写访问回应发送至所述数据访问发起端,以及删除该数据条目中的引用关系记录中的所述源卷的缓存空间的引用关系;
检查该数据条目中的引用关系记录是否为空;如果为空,则该数据条目管理的所述共享缓存空间中的已缓存数据回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在所述共享缓存空间中管理的已缓存数据占用的空间被释放。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (11)
1.一种数据访问方法,所述方法应用于存储设备,其特征在于,所述存储设备包括源卷、与所述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,所述源卷和所述目标快照卷被分配各自对应的缓存空间,所述源卷和所述目标快照卷还被分配了共用的共享缓存空间,所述方法包括:
响应于与所述存储设备对接的数据访问发起端对所述源卷的数据读访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据读访问请求匹配的缓存命中数据;
如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果存在缓存命中数据,则将匹配的缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
3.根据权利要求1所述的方法,其特征在于,所述源卷和所述目标快照都为精简卷;精简卷包括元数据区、元数据区对应管理的物理空间;其中,所述物理空间用于保存数据访问发起端实际写入数据,所述元数据区用于保存指示数据在精简卷的虚拟空间的逻辑地址与物理空间的物理地址之间的映射关系的数据映射表。
4.根据权利要求3所述的方法,其特征在于,所述数据读访问请求中携带了待读取目标数据对应的目标读逻辑地址;所述共享缓存空间对应被分配了用于管理所述共享缓存空间的共享缓存空间管理数据;其中,所述共享缓存空间管理数据包括共享缓存空间中已缓存数据对应在所述源卷的虚拟空间中的逻辑地址、与该逻辑地址对应在所述源卷的物理空间中的物理地址、所述已缓存数据保存在所述共享缓存空间中的缓存地址、指示所述已缓存数据被所述源卷的缓存空间引用以及被所述目标快照卷的缓存空间引用的引用关系记录;
所述如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据,包括:
如果不存在缓存命中数据,则获取所述源卷的数据映射表,并以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
基于所述目标读逻辑地址和所述目标读物理地址在所述共享缓存空间管理数据中,进一步查找是否存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目;如果存在与所述目标读逻辑地址和所述目标读物理地址都匹配的数据条目,则确定存在与所述数据读访问请求匹配的共享缓存命中数据;否则,确定不存在与所述数据读访问请求匹配的共享缓存命中数据。
5.根据权利要求1所述的方法,其特征在于,所述如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,包括:
如果确定在所述共享缓存空间缓存的数据中存在与所述数据读访问请求匹配的共享缓存命中数据,则将匹配的共享缓存命中数据从所述共享缓存空间映射更新至所述源卷的缓存空间。
6.根据权利要求4所述的方法,其特征在于,当不存在缓存命中数据且不存在共享缓存命中数据时,还包括:
获取所述源卷的数据映射表,以所述目标读逻辑地址作为查找索引在获取的所述源卷的数据映射表中查找得到与所述目标读逻辑地址对应的目标读物理地址;
从所述目标读物理地址所指示的所述源卷的物理空间中读取对应的数据;
基于读取对应的数据,更新所述源卷的缓存空间及所述共享缓存空间。
7.根据权利要求6所述的方法,其特征在于,所述基于读取对应的数据,更新所述共享缓存空间,包括:
将读取对应的数据保存在所述共享缓存空间中,并在所述共享缓存空间管理数据中生成与读取对应的数据对应的数据条目。
8.根据权利要求4所述的方法,其特征在于,还包括:
响应于与所述存储设备对接的数据访问发起端对所述源卷的数据写访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据写访问请求匹配的缓存命中数据;
如果存在与所述数据写访问请求匹配的缓存命中数据,则进一步在所述共享缓存空间管理数据中查找是否存在与所述数据写访问请求匹配的数据条目;
如果存在与所述数据写访问请求匹配的数据条目,则生成与所述数据写访问请求对应的数据写访问回应,并将所述数据写访问回应发送至所述数据访问发起端,以及删除该数据条目中的引用关系记录中的所述源卷的缓存空间的引用关系;
检查该数据条目中的引用关系记录是否为空;如果为空,则该数据条目管理的所述共享缓存空间中的已缓存数据回写至对应的物理空间中,并删除引用关系记录为空的该数据条目,以使引用关系记录为空的该数据条目对应在所述共享缓存空间中管理的已缓存数据占用的空间被释放。
9.一种数据访问装置,所述装置应用于存储设备,其特征在于,所述存储设备包括源卷、与所述源卷在目标时间点的数据状态一致的可读写的目标快照卷;其中,所述源卷和所述目标快照卷被分配各自对应的缓存空间,所述源卷和所述目标快照卷还被分配了共用的共享缓存空间,所述装置包括:
第一数据访问模块,响应于与所述存储设备对接的数据访问发起端对所述源卷的数据读访问请求,在所述源卷的缓存空间缓存的数据中查找是否存在与所述数据读访问请求匹配的缓存命中数据;
第二数据访问模块,如果不存在缓存命中数据,则在所述共享缓存空间缓存的数据中,进一步查找是否存在与所述数据读访问请求匹配的共享缓存命中数据;如果存在共享缓存命中数据,则基于匹配的共享缓存命中数据更新所述源卷的缓存空间中缓存的数据,以及将匹配的共享缓存命中数据携带在与所述数据读访问请求对应的数据读访问回应中,并将所述数据读访问回应发送至所述数据访问发起端。
10.一种存储设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行如权利要求1至8任一项所述的方法。
11.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011001442.XA CN112181295B (zh) | 2020-09-22 | 2020-09-22 | 数据访问方法、装置、存储设备及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011001442.XA CN112181295B (zh) | 2020-09-22 | 2020-09-22 | 数据访问方法、装置、存储设备及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181295A true CN112181295A (zh) | 2021-01-05 |
CN112181295B CN112181295B (zh) | 2022-02-18 |
Family
ID=73955266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011001442.XA Active CN112181295B (zh) | 2020-09-22 | 2020-09-22 | 数据访问方法、装置、存储设备及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181295B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346294A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
CN108319430A (zh) * | 2018-01-17 | 2018-07-24 | 杭州宏杉科技股份有限公司 | 处理io请求的方法及装置 |
US20180357176A1 (en) * | 2017-06-13 | 2018-12-13 | Vmware, Inc. | Shared Data Cache for Kernel Bypass Applications |
US20190065384A1 (en) * | 2017-08-22 | 2019-02-28 | Qualcomm Incorporated | Expediting cache misses through cache hit prediction |
CN110531925A (zh) * | 2019-08-01 | 2019-12-03 | 杭州宏杉科技股份有限公司 | 数据读取方法、装置、电子设备及机器可读存储介质 |
US20200142828A1 (en) * | 2018-11-01 | 2020-05-07 | Vmware, Inc. | Efficient global cache partition and dynamic sizing for shared storage workloads |
CN111221826A (zh) * | 2020-01-04 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种处理共享缓存同步消息的方法、系统、设备及介质 |
-
2020
- 2020-09-22 CN CN202011001442.XA patent/CN112181295B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346294A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
US20180357176A1 (en) * | 2017-06-13 | 2018-12-13 | Vmware, Inc. | Shared Data Cache for Kernel Bypass Applications |
US20190065384A1 (en) * | 2017-08-22 | 2019-02-28 | Qualcomm Incorporated | Expediting cache misses through cache hit prediction |
CN108319430A (zh) * | 2018-01-17 | 2018-07-24 | 杭州宏杉科技股份有限公司 | 处理io请求的方法及装置 |
US20200142828A1 (en) * | 2018-11-01 | 2020-05-07 | Vmware, Inc. | Efficient global cache partition and dynamic sizing for shared storage workloads |
CN110531925A (zh) * | 2019-08-01 | 2019-12-03 | 杭州宏杉科技股份有限公司 | 数据读取方法、装置、电子设备及机器可读存储介质 |
CN111221826A (zh) * | 2020-01-04 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种处理共享缓存同步消息的方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112181295B (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
US20080229046A1 (en) | Unified support for solid state storage | |
CN110196687B (zh) | 数据读写方法、装置、电子设备 | |
EP2711841A1 (en) | Data processing method, device and system based on block storage | |
CN110908609B (zh) | 一种磁盘处理的方法、系统、设备及可读存储介质 | |
JP2012527704A (ja) | 仮想マシンシステムにおけるショートカット入出力 | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
CN109902034B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
JP2017507448A (ja) | ファイルアクセス方法及び関係するデバイス | |
WO2024183559A1 (zh) | 数据共享方法、设备、系统及存储介质 | |
WO2019223377A1 (zh) | 文件处理方法、装置、设备及存储介质 | |
CN111177143B (zh) | 键值数据存储方法、装置、存储介质与电子设备 | |
EP3974974A1 (en) | Virtualization method and system for persistent memory | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
US20190272258A1 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
WO2020192710A1 (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
CN110187834B (zh) | 重删副本的数据处理方法、装置、电子设备 | |
CN111367856A (zh) | 数据复制方法、装置、电子设备及机器可读存储介质 | |
US20240143220A1 (en) | Data swapping method and apparatus | |
CN107590077B (zh) | 一种Spark负载访存行为追踪方法及装置 | |
CN112181295B (zh) | 数据访问方法、装置、存储设备及机器可读存储介质 | |
CN116467270A (zh) | 数据管理系统、数据更新方法及装置 | |
CN114647388B (zh) | 一种分布式块存储系统和管理方法 | |
CN108984432B (zh) | 一种处理io请求的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |