用来于一储存系统中进行高速缓存管理的方法与装置与流程

文档序号:12484898阅读:211来源:国知局
用来于一储存系统中进行高速缓存管理的方法与装置与流程

本发明涉及数据储存系统的效能管理,尤其涉及一种用来于一储存系统中进行高速缓存管理的方法与相关装置。



背景技术:

依据相关技术,一传统的储存系统可采用某些传统的高速缓存(或称快取(Cache))运作机制,以提升读写效能。然而,所述传统的高速缓存运作机制有些问题。例如:一传统的高速缓存运作机制所采用的高速缓存区块的大小等于所述传统的储存系统中的块设备(Block Device)的存取单位。为了记录每个高速缓存区块对应到的块设备位置,所述传统的高速缓存运作机制需要大量的存储器资源。以EXT4文件系统为例,其存取请求是以4096字节(4Kilobyte,以下简称为「4KB」)为最小单位。在所述传统的高速缓存运作机制采用4KB作为每个高速缓存区块的大小、且所述块设备的储存容量通常远大于4KB的状况下,用来记录每个高速缓存区块对应到的块设备位置的存储器的总量相当可观。

相关技术中提出一些传统的方案,其通过加大高速缓存区块大小以试图减少存储器的使用量,却带来其它问题诸如一些副作用。例如:另一传统的高速缓存运作机制在处理小于高速缓存区块大小的存取请求时,常常绕过(Bypass)高速缓存、且直接存取硬式磁盘驱动器,这会导致多数的存取都没办法被高速缓存住,使所述另一传统的高速缓存运作机制无法发挥效果。于是,高速缓存效能降低。又一传统的高速缓存运作机制在处理小于高速缓存区块大小的存取请求时,复制所述存取请求的数据至高速缓存区块,并使用一结构来记录所述数据位于所述高速缓存区块的位置。然而,所述传统的高速缓存区块中典型地(Typically)存在高速缓存空洞,这导致读取和写入运作都会受到影响。以EXT4文件系统为例,经过一段时间的随机存取后,由于数据不连续,会造成高速缓存区块中存在大量的高速缓存空洞,而高速缓存中的有效数据少,将导致大部分的存取请求都需从所述块设备读取,使效能下降。举例来说,假设此传统的高速缓存运作机制要读取所述块设备上某一区块中的数据。虽然所述区块已对应到高速缓存中的某一高速缓存区块,但由于所要读取的数据不在高速缓存上,此传统的高速缓存运作机制还是要从所述块设备读取,这造成高速缓存空间的浪费与效能的下降。

由以上可知,相关技术无法在不造成额外的问题(诸如上述的副作用)的状况下,妥善地解决既有的问题。因此,需要一种新颖的方法及相关的架构,以在较少副作用、或不造成副作用的状况下,妥善地解决既有的问题。



技术实现要素:

本发明的目的之一在于公开一种用来于一储存系统中进行高速缓存管理的方法与相关装置,以解决上述问题。

本发明的另一目的在于公开一种用来于一储存系统中进行高速缓存管理的方法与相关装置,以提升数据存取(Access)的效能。

本发明的至少一较佳实施例中公开一种用来于一储存系统中进行高速缓存管理的方法,其中所述储存系统包括多个储存装置。所述方法包括:利用所述多个储存装置中的一储存装置作为所述多个储存装置中的另一储存装置的一高速缓存(Cache),其中所述储存装置的访问速度大于所述另一储存装置的访问速度,且所述高速缓存包括多个高速缓存区块;以及当发生所述高速缓存的一读取失败(Read Miss)时,自所述另一储存装置读取对应于至少一高速缓存区块的数据,以将所述数据储存于所述高速缓存中,其中对应于所述读取失败的数据量小于所述多个高速缓存区块中的每一高速缓存区块的数据量。

本发明在公开上述方法的同时,也对应地公开一种用来于一储存系统中进行高速缓存管理的装置,其中所述装置可包括所述储存系统的至少一部分(例如:一部分或全部),而所述储存系统包括多个储存装置。所述装置可包括:所述多个储存装置中的一储存装置,其中所述储存装置是用来储存信息;以及一控制电路,设置于所述储存系统中、且耦接至所述储存装置。例如:所述储存装置的访问速度大于所述多个储存装置中的另一储存装置的访问速度。另外,所述控制电路是用来控制所述储存系统的运作、且利用所述储存装置作为所述另一储存装置的一高速缓存,其中所述高速缓存包括多个高速缓存区块。此外,当发生所述高速缓存的一读取失败时,所述控制电路自所述另一储存装置读取对应于至少一高速缓存区块的数据,以将所述数据储存于所述高速缓存中,其中对应于所述读取失败的数据量小于所述多个高速缓存区块中的每一高速缓存区块的数据量。

本发明的有益效果之一是,本发明的方法与相关装置可在较少副作用、或不造成副作用的状况下,妥善地解决既有的问题。另外,本发明的方法与相关装置可有效提高高速缓存效能,并且不会有浪费高速缓存空间的问题。

附图说明

图1为依据本发明一实施例的一种储存系统的示意图。

图2绘示图1所示的储存系统于一实施例中所涉及的实施细节。

图3为依据本发明一实施例的一种用来于一储存系统中进行高速缓存管理的方法的流程图。

图4绘示图3所示的方法于一实施例中所涉及的目标读取数据。

图5绘示图3所示的方法于图4所示实施例中所涉及的一控制方案。

图6绘示图3所示的方法于一实施例中所涉及的工作流程。

图7绘示图3所示的方法于一实施例中所涉及的工作流程。

图8绘示图3所示的方法于一实施例中所涉及的目标写入数据。

图9绘示图3所示的方法于图8所示实施例中所涉及的一控制方案。

其中,附图标记说明如下:

100,200 储存系统

110 控制电路

120-1,120-2,…,120-N, 储存装置

220

122,222 高速缓存

221 块设备

300 方法

310,320,510~560 步骤

610~630

411,412,413,414,711, 存储索引

712,713,714

421,422,423,424,721, 高速缓存区块

722,723,724

431,432,433,434,731, 区块群组

732,733,734

605 同步程序

具体实施方式

图1为依据本发明一实施例的一种储存系统100的示意图。储存系统100可包括一控制电路110,且可包括多个储存装置,诸如N个储存装置{120-1,120-2,…,120-N},其中控制电路110耦接至所述多个储存装置。符号「N」可代表大于1的正整数。例如:当N=2时,所述多个储存装置可包括两个储存装置120-1与120-2。又例如:当N>2时,所述多个储存装置可包括三个或三个以上的储存装置,诸如储存装置120-1、120-2、…、120-N。所述N个储存装置{120-1,120-2,…,120-N}中的任一储存装置120-n(符号「n」可代表落入区间[1,N]的范围的任一正整数)的例子可包括(但不限于):固态硬盘(Solid State Drive,SSD)、硬式磁盘驱动器(Hard Disk Drive,HDD)。

依据本实施例,控制电路110是用来控制储存系统100的运作,而所述N个储存装置{120-1,120-2,…,120-N}中的每一储存装置可用来储存信息。另外,控制电路110可利用所述N个储存装置{120-1,120-2,…,120-N}中的某一储存装置的至少一部分(例如:一部分或全部)作为其它储存装置的一高速缓存(Cache)。例如:控制电路110可利用储存装置120-1来实施高速缓存122。

在实施例中,所述N个储存装置{120-1,120-2,…,120-N}中的任一储存装置120-n可代表一个实体储存装置、或由多个实体储存装置所组成的一个逻辑储存装置。尤其是,在所述N个储存装置{120-1,120-2,…,120-N}中的任一储存装置120-n代表由多个实体储存装置所组成的一个逻辑储存装置的状况下,所述N个储存装置{120-1,120-2,…,120-N}中的每一储存装置可为容错式磁盘阵列(Redundant Array of Independent Disks,以下简称为「RAID」)。例如:储存装置120-1可为由多个固态硬盘所组成的RAID,以供实施高速缓存122。又例如:其它储存装置{120-2,…,120-N}中的某一储存装置可为多个硬式磁盘驱动器所组成的RAID,以供储存数据,诸如文件系统中的数据或档案、或用户数据。另外,控制电路110可实施成执行一程序模块的一处理电路。例如:所述程序模块可包括韧体码(Firmware Code)。这只是为了说明的目的而已,并非对本发明的限制。例如:所述程序模块可包括软件码(Software Code)。

在某些实施例中,用来于储存系统100中进行高速缓存管理的装置可包括储存系统100的至少一部分(例如:一部分或全部)。例如:此装置可包括储存系统100的一部分,诸如控制电路110。又例如:此装置可包括储存系统100的一部分,诸如控制电路110以及所述N个储存装置{120-1,120-2,…,120-N}中的至少一储存装置(例如:一个或多个储存装置)。又例如:此装置可包括储存系统100的一部分,诸如控制电路110、以及设置于储存装置120-1中的高速缓存122。又例如:此装置可包括储存系统100的整体。所述储存系统100的例子可包括(但不限于):服务器、网络附加储存(Network Attached Storage,NAS)。

图2绘示图1所示的储存系统100于一实施例中所涉及的实施细节。于本实施例中,上述高速缓存122的大小可扩展至整个储存装置120-1,而储存装置120-1的访问速度可大于所述N个储存装置{120-1,120-2,…,120-N}中的任一其它储存装置的访问速度。例如:储存装置120-1可为固态硬盘,而所述其它储存装置可为块设备(Block Device)221,诸如硬式磁盘驱动器。因应在架构上的这些限制条件,高速缓存122、储存系统100于本实施例中分别改称为高速缓存222、储存系统200。

依据本实施例,块设备221可用来储存用户数据,而高速缓存222可用于储存一部分块设备数据(例如:所述用户数据的一部分)的副本。高速缓存222上所述储存哪些数据的副本,可依高速缓存222的类别而予以变化。例如:在控制电路110的控制下,高速缓存222可为一只读高速缓存(Read-Only Cache)。又例如:在控制电路110的控制下,高速缓存222可为一读写高速缓存(Read-Write Cache)。不论高速缓存222为只读高速缓存或读写高速缓存,高速缓存222的数据管理单位可称为高速缓存区块(Cache Block)。在实施例中,高速缓存222中的每个高速缓存区块可对应到块设备221上的一段连续数据,其中不同高速缓存区块之间的关系则不必是连续数据。控制电路110可配置一段存储器来记录高速缓存区块以及块设备221中的区块群组之间的对应关系,以供进行高速缓存管理运作。

例如:在高速缓存222为只读高速缓存的状况下,高速缓存222中储存的内容可为最近读取的数据。当收到读取指令或读取请求(Request)时,控制电路110会先至高速缓存222中查看欲读取的数据是否存在。若高速缓存命中(Cache Hit),则控制电路110直接从高速缓存222中取出并回传数据;否则,控制电路110从块设备221读取、并储存一份副本(Copy)于高速缓存222中,以供后续读取之用。另外,在高速缓存222为读写高速缓存的状况下,高速缓存222中储存的内容可为最近读写过的数据。除了读取的运作方式与只读高速缓存相同之外,还有写入控制机制。当有新的写入指令或写入请求时,控制电路110会先写入高速缓存222中,待达到某些条件(例如:储存系统200闲暇、或高速缓存222已满)再将高速缓存222中的数据写入块设备221中。

图3为依据本发明一实施例的一种用来于一储存系统中进行高速缓存管理的方法300的流程图。所述方法可应用于图1所示的储存系统100与图2所示的储存系统200中的任一者,尤其是上述的控制电路110。所述方法说明如下。

于步骤310中,控制电路110利用所述多个储存装置中的一储存装置作为所述多个储存装置中的另一储存装置的一高速缓存,其中所述储存装置的访问速度大于所述另一储存装置的访问速度,且所述高速缓存包括多个高速缓存区块。为了便于理解,以储存系统200为例来说明。例如:控制电路110利用储存装置120-1作为块设备221的高速缓存222。这只是为了说明的目的而已,并非对本发明的限制。例如:所述储存装置可代表储存装置120-1,而所述另一储存装置可代表所述N个储存装置{120-1,120-2,…,120-N}中的任一其它储存装置,且高速缓存122可作为步骤310中所述的高速缓存的一例。

于步骤320中,当发生所述高速缓存(也就是说,步骤310中所述的高速缓存,以下同)的一读取失败(Read Miss)时,控制电路110自所述另一储存装置读取对应于至少一高速缓存区块的数据,以将此数据储存于所述高速缓存中,其中对应于所述读取失败的数据量小于所述多个高速缓存区块中的每一高速缓存区块的数据量。例如:当发生高速缓存222的所述读取失败时,控制电路110自块设备221读取对应于上述至少一高速缓存区块的所述数据,以将此数据储存于高速缓存222中。

依据本实施例,当发生所述读取失败时,控制电路110可自所述另一储存装置(诸如块设备221)读取对应于所述读取失败的一组目标读取数据、且自所述另一储存装置预先读取至少一组额外数据(诸如一或多组额外数据),并且利用所述组目标读取数据与上述的至少一组额外数据作为对应于上述至少一高速缓存区块的所述数据。例如:当发生所述读取失败时,控制电路110可自所述另一储存装置预先读取上述的至少一组额外数据,以供后续读取、并且避免在所述高速缓存(诸如高速缓存222)中的上述至少一高速缓存区块中产生任何高速缓存空洞,其中对应于所述读取失败的所述数据量可等于所述组目标读取数据的数据量。另外,在所述另一储存装置中,对应于上述至少一高速缓存区块的所述数据可为连续数据。控制电路110可检查对应于所述读取失败的一读取数据范围是否符合一预定高速缓存规则,其中(步骤320)自所述另一储存装置读取对应于上述至少一高速缓存区块的所述数据以将所述数据储存于所述高速缓存中的运作是在所述读取数据范围不符合所述预定高速缓存规则的状况下进行,以避免在所述高速缓存(诸如高速缓存222)中的上述至少一高速缓存区块中产生任何高速缓存空洞。例如:所述预定高速缓存规则可代表「所述读取数据范围对齐一个或多个高速缓存区块」。于是,当所述读取数据范围对齐一个或多个高速缓存区块时,控制电路110可判断所述读取数据范围符合所述预定高速缓存规则;否则,控制电路110可判断所述读取数据范围不符合所述预定高速缓存规则。

请注意,针对不同的状况,控制电路110的高速缓存管理运作可予以改变。依据一实施例,当发生所述高速缓存的另一读取失败时,控制电路110可自所述另一储存装置(诸如块设备221)读取对应于一个或多个高速缓存区块的其它数据,以将所述其它数据储存于所述高速缓存(诸如高速缓存222)中,其中对应于所述另一读取失败的数据量等于所述其它数据的数据量。例如:(此实施例中所述)自所述另一储存装置读取所述其它数据以将所述其它数据储存于所述高速缓存中的运作是在对应于所述另一读取失败的一读取数据范围符合所述预定高速缓存规则的状况下进行。由于本实施例的所述另一读取失败所对应的所述读取数据范围本来就符合所述预定高速缓存规则(尤其是,对齐一个或多个高速缓存区块),故所述另一读取失败所对应的读取指令根本就不可能导致在所述高速缓存(诸如高速缓存222)中产生任何高速缓存空洞。

依据某些实施例,步骤320中所述的高速缓存(诸如高速缓存222)是读写高速缓存。控制电路110可触发一同步程序(Synchronization Procedure),其中所述同步程序是用来将所述高速缓存中的一组新写入数据同步(Synchronize)至所述另一储存装置(诸如块设备221)。于所述同步程序中,在将所述高速缓存中的所述组新写入数据同步至所述另一储存装置之前,控制电路110可检查所述高速缓存中用来储存所述组新写入数据的一个或多个高速缓存区块是否存在至少一高速缓存空洞,以选择性地填满上述至少一高速缓存空洞。例如:于所述同步程序中,当侦测到所述高速缓存中用来储存所述组新写入数据的所述一个或多个高速缓存区块存在上述至少一高速缓存空洞时,控制电路110可先自所述另一储存装置读取对应于上述至少一高速缓存空洞的数据以填满上述至少一高速缓存空洞,然后将所述高速缓存的所述一个或多个高速缓存区块中的全部数据同步至所述另一储存装置。又例如:于所述同步程序中,当侦测到所述高速缓存中用来储存所述组新写入数据的所述一个或多个高速缓存区块不存在任何高速缓存空洞时,控制电路110可直接将所述高速缓存的所述一个或多个高速缓存区块中的全部数据同步至所述另一储存装置。

图4绘示图3所示的方法300于一实施例中所涉及的目标读取数据,诸如块设备221中的所述区块群组431、432、433与434中的任一区块群组内以阴影表示的小方块。例如:块设备221中的最小存取单位(也就是说,块设备221中的区块)的大小为4096字节(4Kilobyte,以下简称为「4KB」),此即块设备221的区块大小。另外,高速缓存222中的每一高速缓存区块的大小可为65536字节(64Kilobyte,以下简称为「64KB」)。相似地,块设备221中的每一区块群组(诸如区块群组431、432、433与434)的大小可为64KB,以便于进行高速缓存管理。尤其是,控制电路110可于储存系统200的存储器中存储索引411、412、413与414,诸如数值2、5、7与4,以分别指出所述高速缓存区块421、422、423与424以及所述区块群组431、432、433与434之间的映射(Mapping)关系。

图5绘示图3所示的方法300于图4所示实施例中所涉及的一控制方案。依据此控制方案,控制电路110可自所述另一储存装置预先读取上述的至少一组额外数据。此状况下,所述高速缓存区块421、422、423与424内的阴影可代表所述区块群组431、432、433与434中的全部数据(其于所述区块群组431、432、433与434中以阴影表示)的副本。

图6绘示图3所示的方法300于一实施例中所涉及的工作流程。

于步骤510中,控制电路110接收读取请求。

于步骤520中,控制电路110检查欲读取的数据是否在高速缓存222中。当所述数据在高速缓存222中,进入步骤550;否则,进入步骤530。

于步骤530中,控制电路110检查读取数据范围是否对齐高速缓存区块。例如:控制电路110可进行计算以判断所述读取数据范围(也就是说,欲读取的数据的地址范围)是否对齐高速缓存222中的高速缓存区块。当所述读取数据范围对齐高速缓存区块,进入步骤560;否则,进入步骤540。

于步骤540中,控制电路110将读取数据范围扩大至与一个或多个高速缓存区块对齐。于是,最新的读取数据范围变成步骤540当中扩大后的读取范围。

于步骤550中,控制电路110从高速缓存222读取数据。

于步骤560中,依据最新的读取数据范围,控制电路110从块设备221读取数据、并将读取的数据写入高速缓存222。

例如:若于步骤530中已判断对齐,则控制电路110直接于步骤560中从块设备221读取;否则,控制电路110于步骤540中将读取范围扩大至与所述一个或多个高速缓存区块对齐,再于步骤560中从块设备221预先读取出对齐高速缓存区块的数据,并将读取的数据写入高速缓存222中。如此可以确保每次发生高速缓存读取失败后,新写入的高速缓存区块是没有空洞的。

依据某些实施例,预先读取的范围并不限制在一个高速缓存区块。例如:控制电路110可依储存系统上所执行的应用的存取特性,将对应于相邻的高速缓存区块的数据都预先读取至高速缓存222中,以进一步提升高速缓存命中率。又例如:控制电路110可检查块设备221当中某一区块群组中的一区块以及另一区块群组中的一区块是否为连续数据。当侦测到这两个区块群组各自的这两个区块所述连续数据时,控制电路110可于步骤540中将读取数据范围扩大至包括这两个区块群组。于是,控制电路110可将块设备221中的读取数据范围(诸如欲读取的数据的区块的范围)扩大到整段连续数据所对应的区块的范围。

以EXT4文件系统,其最小的读写单位为4KB,高速缓存区块大小为64KB,当发生高速缓存读取失败时,若读取请求有未满64KB的部份,则一律读满64KB,再写回高速缓存222中。通过此预先读取机制,能减少高速缓存中的空洞。若短时间内又存取到同一高速缓存区块中的其它数据时,由于数据已预先读取并储存于高速缓存222中,故高速缓存命中的机率便可增加。因此,控制电路110可常常直接从高速缓存读取,并读取块设备221的次数可减少,进而提升储存系统200的整体效能。

图7绘示图3所示的方法300于一实施例中所涉及的工作流程,其中同步程序605可作为上述所述同步程序的一例。此工作流程说明如下。

于步骤610中,控制电路110检查某(些)高速缓存区块上的数据是否完整。例如:上述的某(些)高速缓存区块可代表一个或多个高速缓存区块。当新数据占满所述(些)高速缓存区块(这可表示所述(些)高速缓存区块上的数据完整),进入步骤630;否则(这可表示,所述(些)高速缓存区块上有缺数据之处,也就是说,高速缓存空洞),进入步骤620。

于步骤620中,控制电路110从块设备221读取对应的数据(诸如对应于所述(些)高速缓存区块的块设备区块当中,所述(些)高速缓存区块所缺的数据),并将所述对应的数据和高速缓存222上的新数据合并。于是,所述(些)高速缓存区块不存在任何高速缓存空洞。

于步骤630中,控制电路110将整个高速缓存区块的数据写入块设备221。

在实施例中,不需要针对写入请求(或写入指令)套用预读机制。于写入时,若还要耗费额外的硬盘读取时间,会影响当下的写入效能。因此,储存了写入数据的高速缓存区块中,可能会有高速缓存空洞,其中这个部分的高速缓存空洞可于同步程序605中被填满。

图8绘示图3所示的方法300于一实施例中所涉及的目标写入数据,诸如高速缓存222中的所述高速缓存区块721、722、723与724中的任一高速缓存区块内以阴影表示的小方块。例如:块设备221中的最小存取单位(也就是说,块设备221中的区块)的大小为4KB,此即块设备221的区块大小。另外,高速缓存222中的每一高速缓存区块的大小可为64KB。相似地,块设备221中的每一区块群组(诸如区块群组731、732、733与734)的大小可为64KB,以便于进行高速缓存管理。尤其是,控制电路110可于储存系统200的存储器中存储索引711、712、713与714,诸如数值2、5、7与4,以分别指出所述高速缓存区块721、722、723与724以及所述区块群组731、732、733与734之间的映射关系。

为了便于理解,于一实施例中,假设:控制电路110的一部分高速缓存管理运作可被暂时地禁能、或被暂时地搁置,以致控制电路110尚未执行步骤620的运作。此状况下,所述高速缓存区块721、722、723与724内没有阴影的区域可代表高速缓存空洞。这只是为了说明的目的而已,并非对本发明的限制。

图9绘示图3所示的方法300于图8所示实施例中所涉及的一控制方案。依据此控制方案,控制电路110可执行步骤620的运作。此状况下,所述高速缓存区块721、722、723与724内的阴影可代表控制电路110于步骤620中所备妥的合并数据,以供进一步写入。例如:于步骤630中,控制电路110可将所述合并数据写入所述区块群组731、732、733与734,其中所述区块群组731、732、733与734内的阴影可代表被写入的数据。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1