用于调整存储装置的分配的方法和装置转让专利

申请号 : CN201410240466.9

文献号 : CN105224475B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨奕张俊伟张昕刘洋

申请人 : 国际商业机器公司

摘要 :

本发明提供了用于调整存储装置的分配的方法和装置。在一个实施方式中,提供了一种用于调整存储装置的分配的方法,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储,方法包括:分别采集第一部分的运行状态和第二部分的运行状态;基于第一部分的运行状态获取第一部分的性能度量;基于第二部分的运行状态获取第二部分的性能度量;以及基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。在一个实施方式中,提供了一种用于调整存储装置的分配的装置。采用本发明的方法和装置,可以基于存储系统的运行状态来调整存储装置的分配,以便提高数据访问性能。

权利要求 :

1.一种用于调整存储装置的分配的方法,所述存储装置中的第一部分被分配以用作分级存储,所述存储装置中的第二部分被分配以用作高速缓存存储,所述方法包括:分别采集所述第一部分的运行状态和所述第二部分的运行状态;

基于所述第一部分的运行状态获取所述第一部分的性能度量;

基于所述第二部分的运行状态获取所述第二部分的性能度量;以及基于所述第一部分的性能度量和所述第二部分的性能度量,调整所述存储装置的容量在所述第一部分和所述第二部分之间的分配,其中所述第一部分的容量大于所述第二部分的容量,以及基于所述第一部分的运行状态获取所述第一部分的性能度量包括:从所述存储器的第一部分中选择与所述第二部分的容量相等的第三部分;

基于所述第一部分的运行状态中与所述第三部分相关联的数据,获取所述第一部分的性能度量。

2.根据权利要求1所述的方法,其中:

所述第一部分的运行状态和所述第二部分的运行状态中的至少一个包括对相应部分的一组访问的一组响应时间。

3.根据权利要求2所述的方法,其中:

基于所述第一部分的运行状态获取所述第一部分的性能度量以及基于所述第二部分的运行状态获取所述第二部分的性能度量中的至少一个包括:至少基于所述一组响应时间的总和获取对应部分的性能度量。

4.根据权利要求3所述的方法,其中:

所述第一部分的运行状态和所述第二部分的运行状态中的至少一个进一步包括附加状态,所述附加状态包括与所述一组访问相关联的读写类型、数据量以及位置特征中的至少任一项。

5.根据权利要求4所述的方法,其中:

至少基于所述一组响应时间的总和获取对应部分的性能度量包括:基于所述附加状态计算权重,以及基于利用所述权重加权的所述一组响应时间的总和获取对应部分的性能度量。

6.根据权利要求1-5中的任一项所述的方法,其中基于所述第一部分的性能度量和所述第二部分的性能度量,调整所述存储装置的容量在所述第一部分和所述第二部分之间的分配包括:响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第一阈值条件,将所述存储装置中的所述第一部分中的至少一部分进行再分配以用作所述高速缓存存储。

7.根据权利要求6所述的方法,其中响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第一阈值条件,将所述存储装置中的所述第一部分中的至少一部分进行再分配以用作所述高速缓存存储包括:维持再分配后的所述第一部分的容量大于或者等于第一阈值容量。

8.根据权利要求1-5中的任一项所述的方法,其中基于所述第一部分的性能度量和所述第二部分的性能度量,调整所述存储装置的容量在所述第一部分和所述第二部分之间的分配包括:响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第二阈值条件,将所述存储装置中的所述第二部分中的至少一部分进行再分配以用作所述分级存储。

9.根据权利要求8所述的方法,其中响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第二阈值条件,将所述存储装置中的所述第二部分中的至少一部分进行再分配以用作所述分级存储包括:维持再分配后的所述第二部分的容量大于或者等于第二阈值容量。

10.一种用于调整存储装置的分配的装置,所述存储装置中的第一部分被分配以用作分级存储,所述存储装置中的第二部分被分配以用作高速缓存存储,所述装置包括:采集模块,配置用于分别采集所述第一部分的运行状态和所述第二部分的运行状态;

第一获取模块,配置用于基于所述第一部分的运行状态获取所述第一部分的性能度量;

第二获取模块,配置用于基于所述第二部分的运行状态获取所述第二部分的性能度量;以及调整模块,配置用于基于所述第一部分的性能度量和所述第二部分的性能度量,调整所述存储装置的容量在的所述第一部分和所述第二部分之间的分配,其中所述第一部分的容量大于所述第二部分的容量,以及所述第一获取模块包括:选择模块,配置用于从所述存储器的第一部分中选择与所述第二部分的容量相等的第三部分;

第三获取模块,配置用于基于所述第一部分的运行状态中与所述第三部分相关联的数据,获取所述第一部分的性能度量。

11.根据权利要求10所述的装置,其中:

所述第一部分的运行状态和所述第二部分的运行状态中的至少一个包括对相应部分的一组访问的一组响应时间。

12.根据权利要求11所述的装置,其中:

所述第一获取模块和所述第二获取模块中的至少一个包括:性能获取模块,配置用于至少基于所述一组响应时间的总和获取对应部分的性能度量。

13.根据权利要求12所述的装置,其中:

所述第一部分的运行状态和所述第二部分的运行状态中的至少一个进一步包括附加状态,所述附加状态包括与所述一组访问相关联的读写类型、数据量以及位置特征中的至少任一项。

14.根据权利要求13所述的装置,其中:

所述性能获取模块包括:加权模块,配置用于基于所述附加状态计算权重,以及计算模块,配置用于基于利用所述权重加权的所述一组响应时间的总和获取对应部分的性能度量。

15.根据权利要求10-14中的任一项所述的装置,其中所述调整模块包括:第一调整模块,配置用于响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第一阈值条件,将所述存储装置中的所述第一部分中的至少一部分进行再分配以用作所述高速缓存存储。

16.根据权利要求15所述的装置,其中所述第一调整模块包括:第一维持模块,配置用于维持再分配后的所述第一部分的容量大于或者等于第一阈值容量。

17.根据权利要求10-14中的任一项所述的装置,其中所述调整模块包括:第二调整模块,配置用于响应于所述第一部分的性能度量与所述第二部分的性能度量之间的差异满足第二阈值条件,将所述存储装置中的所述第二部分中的至少一部分进行再分配以用作所述分级存储。

18.根据权利要求17所述的装置,其中所述第二调整模块包括:第二维持模块,配置用于维持再分配后的所述第二部分的容量大于或者等于第二阈值容量。

说明书 :

用于调整存储装置的分配的方法和装置

技术领域

[0001] 本发明的各实施方式涉及存储系统,更具体地,涉及用于调整存储系统中的存储装置的分配的方法和装置。

背景技术

[0002] 随着计算机硬件和软件技术的发展,在提供大容量数据存储的同时,存储系统的性能也越来越高。相对于传统的硬盘驱动器(Hard Disk Drive,HDD)而言,固态盘(Solid State Disk,SSD)能够提供更高的性能参数,因而固态盘已经逐渐地应用于存储系统中。
[0003] 然而,由于固态盘的单位价格较高,在常规的存储系统中还主要采用硬盘驱动器作为存储介质。目前,已经实现了可以将固态盘作为存储系统中的高速缓存存储,或者将固态盘用作分级(Tiering)存储的技术方案。向存储系统中引入固态盘可以在一定程度上提高存储系统的性能,然而应当注意,尽管高速缓存存储和分级存储都是用于提高存储系统的性能的有效方法,然而两者分别具有自身的优势并且适合于不同的应用环境。
[0004] 在现有的技术方案中,一旦已经将固态盘分配用作高速缓存存储或者用作分级存储,则在存储系统运行期间不能再改变固态盘的用途。换言之,按照目前的技术方案,固态盘的用途并不能随着应用环境的改变而进行调整。针对这一不足,如何进一步利用固态盘来改进存储系统的性能已经成为目前的一个研究方向。

发明内容

[0005] 因而,期望能够开发一种能够基于存储系统的运行状态来调整存储装置的分配的技术方案。换言之,期望可以在高速缓存存储和分级存储之间进行切换,并且还期望可以基于存储系统的运行状态来动态地调整存储装置中被分配用作高速缓存的部分和被用作分级的部分之间的比例。
[0006] 在本发明的一个实施方式中,提供了一种用于调整存储装置的分配的方法,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储,该方法包括:分别采集第一部分的运行状态和第二部分的运行状态;基于第一部分的运行状态获取第一部分的性能度量;基于第二部分的运行状态获取第二部分的性能度量;以及基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。
[0007] 在本发明的一个实施方式中,提供了一种用于调整存储装置的分配的装置,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储,该装置包括:采集模块,配置用于分别采集第一部分的运行状态和第二部分的运行状态;第一获取模块,配置用于基于第一部分的运行状态获取第一部分的性能度量;第二获取模块,配置用于基于第二部分的运行状态获取第二部分的性能度量;以及调整模块,配置用于基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。
[0008] 采用本发明所述的方法和装置,可以基于存储系统的运行状态来动态地调整存储装置的分配,以便提高数据访问的性能。

附图说明

[0009] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0010] 图1示意性示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
[0011] 图2A示意性示出了将存储装置用作高速缓存存储的技术方案的示意图,图2B示意性示出了将存储装置用作分级存储的技术方案的示意图;
[0012] 图3示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的技术方案的架构图;
[0013] 图4示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的方法的流程图;
[0014] 图5A和图5B分别示意性示出了根据本发明一个实施方式的计算性能度量的方法的示意图;
[0015] 图6示意性示出了根据本发明一个实施方式的用于计算与分级存储相关联的性能度量的示意图;以及
[0016] 图7示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的装置的框图。

具体实施方式

[0017] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0018] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施方式的功能和使用范围带来任何限制。
[0019] 如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0020] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0021] 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0022] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施方式的功能。
[0023] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施方式中的功能和/或方法。
[0024] 计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0025] 固态盘具有较高的性能,然而由于单位价格远远高于常规的硬盘驱动器,因而在常规的存储系统中通常以硬盘驱动器作为主要存储介质,而将固态盘用作高速缓存存储和/或分级存储。高速缓存存储和分级存储的原理均在于,利用具有较高访问性能的存储装置来存储“较热”的数据,进而提高整个存储系统的访问性能。然而,由于高速缓存存储和分级存储的实现原理不同,两者分布适合于不同的应用环境。
[0026] 应该注意,在本发明的上下文中仅仅以固态盘作为具有较高访问性能的存储装置的具体示例来阐明了本发明的原理。然而应当理解,在本发明的上下文中,存储装置的具体示例并不仅仅局限于固态盘,而是可以包括但不限于固态盘的目前已知的或者将在未来开发的任何其他具有较高访问性能的存储装置。
[0027] 图2A示意性示出了将存储装置用作高速缓存存储的技术方案的示意图,以及图2B示意性示出了将存储装置用作分级存储的技术方案的示意图。如图2A所示,在将存储装置用作高速缓存的技术方案中,存储系统220A包括存储接口222A、HDD存储224A和SSD高速缓存226A。此时,可以按照预定义的一系列规则来更新SDD高速缓存226A中的数据,例如,可以按照最近最少使用(Least Recently Used,LRU)算法等来更新数据。
[0028] 在如图2A所示的示意图中,响应于接收到来自应用210A中的访问接口212A的数据访问,存储系统220A经由存储接口222A向应用210A的访问接口212A进行数据推送(Data Stage)。此时,如果被访问的数据被存储于SSD高速缓存226A中,则可以由具有较高访问性能的SSD高速缓存226A来直接向存储接口222A执行数据推送(如箭头A2所示),此时对数据访问的响应时间较快,例如2ms;如果被访问的数据没有存储于SSD高速缓存226A中而是存储于HDD存储224A中,则必须在具有较低访问性能的HDD存储224A中进行检索,并经由如箭头A1所示的步骤来执行数据推送,此时对数据访问的响应时间较慢,例如10ms。
[0029] 在如图2B所示的将存储装置用作分级的技术方案中,存储系统220B包括存储接口222B、HDD存储224B以及SSD分级228B。此时SSD分级228B与HDD存储224B之间周期性地执行数据重定位(如箭头B3所示)操作。数据重定位操作可以按照预定义的一系列规则来执行,将更有可能被访问的数据重定位至SSD分级228B中,以便提高访问性能。在图2B所示的示意图中,响应于接收到来自应用210B中的访问接口212B的访问,存储系统220B中的HDD存储
224B和SSD分级228B可以经由存储接口222B来执行数据推送(分别如箭头B1和B2所示)。
[0030] 尽管如图2A和图2B所示的技术方案可以利用具有较高访问性能的SSD存储,在一定程度上提高存储系统的访问性能,然而由于高速缓存存储和分级存储分别适合于不同的应用场景,在某些情况下高速缓存存储以及分级存储的访问性能并不理想。
[0031] 一方面,分级存储更加适合于循环读取(cycling read)的应用场景。循环读取通常逐个读取不同的数据,因而造成高速缓存的命中率较低,使得高速缓存难以发挥自身优势。循环读取的一个示例是,假设用户希望从存储系统中按顺序读取大量数据(例如,400GB)并进行数据分析;在数据分析之后,用户还将重新读取上述的400GB的数据并且再次执行数据分析;继而如此循环地执行读取-分析的过程。
[0032] 假设目前高速缓存的容量为384GB并且采用最近最少使用算法来更新,由于384<400因而此时高速缓存并不能容纳全部400GB的数据。此时,基于最近最少使用算法在第一轮次的读取操作之后,需要从高速缓存中移除16GB的数据。然而,被移除的16GB数据恰好是下一轮次中需要被读取的数据,此时需要从HDD而不是高速缓存中读取这16GB的数据。之后,出于相同的原因,需要从HDD中读取下一块16GB的数据,因而导致在特定时间段内高速缓存的命中率为0%。在此情况下,高速缓存完全不能发挥作用,高速缓存对于改进存储系统的访问性能并不产生任何益处。此时,期望在遇到循环读取时能够将原本被分配用作高速缓存存储的SSD的容量进行再分配,例如再分配用作分级存储以便改进存储系统的性能。
[0033] 另一方面,高速缓存存储更加适合于“删除-定义(delete-define)”的应用场景。在金融行业的应用中广泛存在“删除-定义”的应用场景,具体地,金融行业的应用通常会在夜间针对日间产生的中间数据执行分析,并且在分析之后即删除这些中间数据。由于不会再次访问已删除的中间数据,因而中间数据并不适合于存储在分级存储上,而是更加适合于被存储在高速缓存中。在此情况下,期望在遇到“删除-定义”时能够将原本被分配用作分级存储的SSD的容量进行再分配,例如再分配用作高速缓存存储以便改进存储系统的性能。
[0034] 然而,在现有技术中,分级和高速缓存的容量是在存储系统的初始化期间设置的并且在运行期间不能被改变。因而针对这一不足,期望在存储系统运行期间能够实现改变存储装置的分配的技术方案,以便按照存储系统的应用场景来调整将存储装置分配用作高速缓存还是用作分级,并且期望可以调整高速缓存和分级的容量的比例。
[0035] 针对上述缺陷,本发明提出了一种用于调整存储装置的分配的方法,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储,该方法包括:分别采集第一部分的运行状态和第二部分的运行状态;基于第一部分的运行状态获取第一部分的性能度量;基于第二部分的运行状态获取第二部分的性能度量;以及基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。
[0036] 具体地,图3示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的技术方案的架构图300。具体地,如图3所示,根据本发明的一个实施方式,存储系统330包括存储接口322、HDD存储324、SSD高速缓存326和SSD分级328。并且HDD存储324、SSD高速缓存326和SSD分级328可以分别经由箭头A1-A3所示的步骤来分别执行数据推送操作。在此实施方式中,SSD高速缓存326和SSD分级328的容量并不是固定不变的,而是可以按照应用环境的变化而切换(如箭头B)所示。应当注意,当SSD从一种类型切换到另一种类型后,则遵循切换后的类型的规则来进行操作。例如,当一定容量的SSD从分级存储被切换至高速缓存存储后,则需要按照高速缓存的数据更新规则(例如,最近最少使用算法)来进行更新。
[0037] 采用本发明的技术方案,当发现提高存储系统中的高速缓存的容量可以提高存储系统的性能时,可以将当前被分配用作分级的存储装置的容量中的至少一部分再分配以用作高速缓存;当发现提高存储系统中的分级的容量可以提高存储系统的性能时,可以将当前被分配用作高速缓存的存储装置的容量中的至少一部分再分配以用作分级。采用本发明所述的方法和装置,可以基于存储系统的运行状态来调整存储装置的分配,进而提高数据访问性能。
[0038] 图4示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的方法的流程图400。具体地,提供了一种调整存储装置的分配的方法,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储。在初始时,可以针对不同存储类型设置相应的分配比例,例如,可以设置将存储装置中的80%用作分级存储,而将20%用作高速缓存存储。应当注意,在此的比例仅仅是示意性的,本领域技术人员可以根据具体应用环境的参数来选择适当的初始分配比例。例如,在存在大量“删除-定义”的情况下,可以对高速缓存存储设置较高的分配比例(例如,30%)。
[0039] 在步骤S402中,分别采集第一部分的运行状态和第二部分的运行状态。在此实施方式中,监视运行状态的目的在于获取当前的应用环境,以便在后续步骤中可以基于当前的运行环境确定哪种类型的存储装置(分级存储还是高速缓存存储)更能够提高数据访问性能。因而在此步骤中,可以分别监视被分配以用作分级存储和高速缓存存储的各个部分的运行状态。
[0040] 在步骤S404中,基于第一部分的运行状态获取第一部分的性能度量;以及在步骤S406中,基于第二部分的运行状态获取第二部分的性能度量。获取与各个部分相关联的性能度量的目的在于,分别获取当存储装置被分配用作分级存储和高速缓存存储时,对于访问性能的改进的程度。
[0041] 在步骤S408中,基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。由于在上文的步骤S404和步骤S406中已经分别获取了与分级存储和高速缓存存储相关联的性能度量,在此步骤中,可以衡量两个性能度量对于整个存储系统的访问性能的改进程度,并且选择更加有益于提高访问性能的存储类型,进而调整第一部分和第二部分的分配。
[0042] 具体而言,当通过采集与分级存储和高速缓存存储相关联的运行状态发现,目前的访问操作中存在较多的循环读取,并且分级存储的性能度量高于高速缓存存储的性能度量时,则可以调整两种类型的存储之间的分配比例,例如,可以将81%的容量分配用作分级存储,而将19%的容量分配用作高速缓存存储。以此方式,可以选择更加适合于当前的应用环境的分配方式,进而提高数据访问性能。
[0043] 为方便描述,在下文中将第一部分的运行状态和性能度量分别简称为第一运行状态和第一性能度量,将第二部分的运行状态和性能度量分别简称为第二运行状态和第二性能度量。
[0044] 在本发明的一个实施方式中,第一部分的运行状态和第二部分的运行状态中的至少一个包括对相应部分的一组访问的一组响应时间。具体地,第一运行状态至少包括对第一部分的第一组访问的第一组响应时间,以及第二运行状态至少包括对第二部分的第二组访问的第二组响应时间。由于响应时间是反映数据访问性能的一个重要参数,因而,可以分别采集存储装置中被分配用作分级存储的第一部分的响应时间、以及存储装置中被分配用作高速缓存存储的第二部分的响应时间。
[0045] 应当注意,由于响应时间是在命中存储装置后存储装置的响应时间,因而可以一组响应时间来衡量对存储装置的一组命中的响应时间。具体而言,假设已经将存储装置中20%的容量分配用作高速缓存存储,并且在采集周期内高速缓存的命中次数为n,则此时可以以维度为n的向量{RT1,...,RTi,...,RTn}来存储响应时间,在该向量中RTi表示第i次命中的响应时间。相应地,还可以以类似方式获取与分级存储相关联的响应时间。
[0046] 在本发明的一个实施方式中,基于第一部分的运行状态获取第一部分的性能度量以及基于第二部分的运行状态获取第二部分的性能度量中的至少一个包括:至少基于一组响应时间的总和获取对应部分的性能度量。具体地,基于第一运行状态获取第一部分的第一性能度量包括,至少基于第一组响应时间的总和获取第一性能度量;以及基于第二运行状态获取第二部分的第二性能度量包括,至少基于第二组响应时间的总和获取第二性能度量。
[0047] 具体地,图5A示意性示出了根据本发明一个实施方式的计算性能度量的方法的示意图500A。继续上文的示例,假设已经获取了与分级存储相关联的响应时间RTi512A(第一组响应时间{RT1,...,RTi,...,RTn}),并且针对分级存储存在n次命中,则此时可以基于如下公式1来获取与分级存储相关联的第一性能度量。
[0048]     公式1
[0049] 类似地,本领域技术人员还可以基于公式1来获取与高速缓存存储相关联的第二性能度量。
[0050] 在本发明的一个实施方式中,还可以分别将对第一部分和第二部分的命中次数作为第一性能度量和第二性能度量。
[0051] 在本发明的一个实施方式中,第一部分的运行状态和第二部分的运行状态中的至少一个进一步包括附加状态,所述附加状态包括与一组访问相关联的读写类型、数据量以及位置特征中的至少任一项。具体地,第一运行状态进一步包括第一组附加状态,第一组附加状态至少包括与第一组访问相关联的读写类型、数据量以及位置特征中的至少任一项;以及第二运行状态进一步包括第二组附加状态,第二组附加状态至少包括与第二组访问相关联的读写类型、数据量以及位置特征中的至少任一项。
[0052] 响应时间是反映性能度量的一个重要方面,此外,性能度量还可能会受到其他因素的影响。例如,对于读取访问和写入访问,两者的响应性能可能会有所不同。具体地,SSD对于读取操作的响应性能可能会高于对于写入操作的响应性能。又例如,访问操作所涉及的数据量也会影响响应性能,具体地,数据量越大则响应时间越长,SSD所提供的改进的程度越小。又例如,被访问的数据的位置特征也将会影响性能度量,具体地,对于随机访问操作而言,SSD能够提供较大的性能改进;而对于顺序访问操作而言,SSD能够提供的性能改进较小。
[0053] 因而,在采集运行状态的同时还可以采集附加状态(例如,包括与数据访问相关联的读写类型、数据量以及位置特征中的至少任一项),以便综合考虑各方面因素来计算性能度量。
[0054] 在本发明的一个实施方式中,至少基于一组响应时间的总和获取对应部分的性能度量包括:基于附加状态计算权重,以及基于利用权重加权的一组响应时间的总和获取对应部分的性能度量。具体地,至少基于第一组响应时间的总和获取第一性能度量包括:基于第一组附加状态计算第一组权重,以及基于利用第一组权重加权的第一组响应时间的总和获取第一性能度量;以及至少基于第二组响应时间的总和获取第二性能度量包括:基于第二组附加状态计算第二组权重,以及基于利用第二组权重加权的第二组响应时间的总和获取第二性能度量。
[0055] 具体地,在图5B中示意性示出了根据本发明一个实施方式的计算性能度量的方法的示意图500B。例如,可以采集与一个数据访问相关联的读写类型Typei514B、数据量Sizei516B以及位置特征PCi518B,继而,基于读写类型Typei514B、数据量Sizei516B以及位置特征PCi518B来计算针对该数据访问的权重Wi530B,并基于如下文所示的公式2来计算整体的性能度量PM540B。
[0056]     公式2
[0057] 可以针对附加状态中的各个方面设置不同的权重,并且基于权重和响应时间两者来计算性能度量。在下文中将举例说明具体的计算方法。假设针对SSD分级存储的平均响应时间为2ms,并且针对附加状态的权重如下文表1中所示:
[0058] 表1权重示例
[0059]
[0060] 应当注意,在上文中所示的权重示例仅仅是示意性的,本领域技术人员还可以基于具体应用环境来采用其他方式来表示各个附加状态之间的重要性的关系。
[0061] 假设针对分级存储的一个访问是读取访问、并且是随机访问时,针对该次访问的加权后的响应时间可以计算为(0.6+0.6)×2=2.4ms。在已经获得了针对每次访问的加权后的响应时间的情况下,即可获取与分级存储相关联的第一性能度量。类似地,本领域技术人员还可以基于上文所示的原理来获取与高速缓存存储相关联的第二性能度量。
[0062] 由于上文参见表1示出的公式2的计算较为复杂,为简化起见还可以使用公式3:
[0063]     公式3
[0064] 其中SSDRatio表示使用SSD的响应时间相对于使用HDD的响应时间的改进。具体地,假设使用SSD的响应时间为2ms,而使用HDD的响应时间为10ms,则SSDRatio=(10-2)/2=4。以此方式,可以简化计算的复杂度。
[0065] 在本发明的一个实施方式中,第一部分的容量大于第二部分的容量,以及基于第一部分的运行状态获取第一部分的性能度量包括:从存储器的第一部分中选择与第二部分的容量相等的第三部分;基于第一部分的运行状态中与第三部分相关联的数据,获取第一部分的性能度量。
[0066] 基于历史经验表明,在常规的存储系统中分级存储更加有助于提高数据访问性能,因而在存储系统中通常设置较大容量的分级存储。因而,在本发明的实施方式中,被分配用作分级存储的第一部分的容量大于被分配用作高速缓存存储的第二部分的容量,以便提高数据访问的性能。当第一部分和第二部分的容量不相等时可能会出现一种情况,即针对两个部分的命中数量将存在显著差异。
[0067] 图6示意性示出了根据本发明一个实施方式的用于计算与分级存储相关联的性能度量的示意图600。如图6所示,继续上文的示例,在将80%的容量分配用作分级存储(第一部分610),并将20%的容量分配用作高速缓存存储(第二部分620)的情况下,由于分级存储的容量远远大于高速缓存存储的容量(4倍),这造成针对分级存储的命中数量将会远远大于针对高速缓存存储的命中数量。此时,可以从被分配用作分级存储的第一部分610中,选择与被分配用作高速缓存存储的第二部分620容量相当的容量(即,第三部分,占据存储装置640中20%的容量),并获取与该部分相关联的性能度量来作为与分级存储相关联的性能度量(即,第一性能度量)。
[0068] 本领域技术人员可以基于不同规则来进行选择,例如,可以从用作分级存储的部分中按顺序选择20%的容量,可以从中随机地选择20%的容量,等等。或者,还可以按照每单位容量命中率从高到低的顺序,将分级存储进行排序,并且基于预定规则从排序的存储装置中选择20%的容量。例如,可以选择命中率最低、最高、或者居中的20%的容量。
[0069] 具体而言,假设存储装置的容量为100GB,按照80%的比例进行分配则将产生80GB的分级存储。当按照每GB的命中率从高到底进行排序时,可以将80GB的分级存储按照从高到底的顺序进行排序。在一个实施方式中,可以从排序后的分级存储中选择命中率最低的20GB,并且将与该部分相关联的性能度量作为整个分级存储的性能度量。在另一实施方式中,为了简化操作,还可以通过求取平均值的方式来获取性能度量。例如,针对分级存储和高速缓存存储,分别计算每GB存储装置的性能度量。在本发明的其他实施方式中,还可以采用其他公式来计算性能度量的具体数值。
[0070] 采用上文所述的方式,可以确保用作性能度量的基础的存储装置的容量是相等的,进而使得第一性能度量和第二性能度量是针对相同容量的存储装置的性能进行的度量。
[0071] 在本发明的一个实施方式中,可以基于比较第一性能度量和第二性能度量,来调整存储装置中用作分级存储和高速缓存存储的部分的分配比例。例如,可以在当第一性能度量高于第二性能度量时,为分级存储分配更高比例的容量,可以在当第一性能度量低于第二性能度量时,为高速缓存存储分配更高比例的容量。然而,由于在分级存储和高速缓存存储之间进行切换还需要额外的设置操作,为了防止在分级存储和高速缓存存储之间的频繁切换造成过多的额外工作负载,还可以考虑设置其他切换条件。
[0072] 在本发明的一个实施方式中,基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配包括:响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第一阈值条件,将存储装置中的第一部分中的至少一部分进行再分配以用作高速缓存存储。
[0073] 具体地,第一阈值条件可以设置为第一性能度量低于第二性能度量10%或更多(或者本领域技术人员还可以基于具体应用环境的需求而设置其他阈值条件)。此时,当与分级存储相关联的第一性能度量低于与高速缓存存储相关联的第二性能度量10%,将原本被分配用作分级存储的存储装置中的一部分再分配以用作高速缓存存储。以此方式,可以防止频繁地改变分级存储和高速缓存存储的容量而导致的额外开销。
[0074] 在本发明的一个实施方式中,响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第一阈值条件,将存储装置中的第一部分中的至少一部分进行再分配以用作高速缓存存储包括:维持再分配后的第一部分的容量大于或者等于第一阈值容量。
[0075] 由于分级存储和高速缓存存储是用于改进存储系统的数据访问性能的两种不同方式,并且两种方式在不同的应用环境下各具优势,因而整体而言,在存储系统中确保总是存在两种类型的存储装置有助于提高存储系统的数据访问性能。因而,在再分配期间需要确保分级存储的容量不低于特定的阈值。具体而言,历史经验表明分级存储通常能够确保较高的数据访问性能,因而可以将分级存储的容量的下限设置为例如50%。在此实施方式中,第一阈值容量为50%。应当注意,在此的50%仅仅是示意性的下限阈值,本领域技术人员还可以基于具体应用环境的需求来设置其他阈值。例如,当对于存储系统的数据访问大多属于循环读取时,还可以设置更高的下限(例如60%)。
[0076] 在本发明的一个实施方式中,其中基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配包括:响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第二阈值条件,将存储装置中的第二部分中的至少一部分进行再分配以用作分级存储。
[0077] 具体地,第二阈值条件可以设置为第二性能度量低于第一性能度量10%或更多(或者本领域技术人员还可以基于具体应用环境的需求而设置其他阈值条件)。此时,当与高速缓存存储相关联的第二性能度量低于与分级存储相关联的第一性能度量10%,将原本被分配用作高速缓存存储的存储装置中的一部分再分配以用作分级存储。以此方式,可以防止频繁地改变分级存储和高速缓存存储的容量而导致的额外开销。
[0078] 在本发明的一个实施方式中,响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第二阈值条件,将存储装置中的第二部分中的至少一部分进行再分配以用作分级存储包括:维持再分配后的第二部分的容量大于或者等于第二阈值容量。
[0079] 具体而言,可以将高速缓存的容量的下限设置为例如5%。在此实施方式中,第二阈值容量为5%。应当注意,在此的5%仅仅是示意性的下限阈值,本领域技术人员还可以基于具体应用环境的需求来设置其他阈值。例如,当对于存储系统的数据访问大多属于“删除-定义”时,还可以设置更高的下限(例如20%)。
[0080] 应当注意,已经在上文的示例中以第一阈值容量和第二阈值容量分别作为分级存储和高速缓存存储的下限阈值的具体示例,本领域技术人员还可以采取针对高速缓存存储和分级存储分别设置上限阈值的方式来限制高速缓存存储和分级存储之间的相对比例,在此不再赘述。
[0081] 应当注意,在本发明的上下文中,本领域技术人员可以根据具体应用环境的需要来设置每次调整时的步长(即,进行再分配的容量)。例如,可以设置每次以存储装置容量的1%为单位来进行调整,或者还可以在第一性能度量和第二性能度量之间的差异的大小来设置其他步长。例如,可以在当第一性能度量低于第二性能度量达到30%或者更多时,将步长设置为5%。
[0082] 在本发明的一个实施方式中,还可以设置其他的附加规则,例如,定义当数据已经存储在分级存储中时,不能再被加载到高速缓存存储中,等等。
[0083] 在本发明的一个实施方式中,存储装置是固态盘。应当注意,在本发明的上下文中,存储装置还可以是包括但不限于包括固态盘的目前已知或者将在未来开发的任何其他具有较高访问性能的存储装置。
[0084] 在本发明的一个实施方式中,本发明的方法周期性地执行。本领域技术人员可以根据应用环境的具体情况来选择执行周期,例如,可以根据数据访问操作的周期性变化来选择具体的周期,等等。具体地,对于例如金融行业等日间和夜间的业务量周期性分布的应用环境,可以选择24小时为一个周期。
[0085] 在下文中,将以具体示例方式阐明如何调整分级存储和高速缓存存储的分配。继续上文示例,假设存储系统中SSD存储装置的容量为10T,并且初始时将8T的容量分配用作分级存储,而将2T的容量分配用作高速缓存存储。在运行期间HDD的响应时间为10ms而SSD的响应时间为2ms,约定使用公式3来计算性能度量,并且本发明的方法的执行周期为24小时。
[0086] 假设在24小时期间,针对按照命中数量排序最低的2T的分级存储的命中数量为16000,则与分级存储相关联的第一性能度量=4×2×16000=128000ms。
[0087] 假设在24小时期间,针对2T的高速缓存的命中数量为20000,则与高速缓存存储相关联的第二性能度量=4×2×20000=160000ms。
[0088] 由于(160000-128000)/128000=0.25>10%,则此时可以将原本被分配用作分级存储的8T容量中的1%(即0.1T)再分配以用作高速缓存存储。再分配之后,用作分级存储的容量为7.9T,而用作高速缓存存储的容量为2.1T。
[0089] 前面已经参考附图描述了实现本发明的方法的各个实施方式。本领域技术人员可以理解的是,上述方法既可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发明构思的一种设备。即使该设备在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该设备表现出区别于通用处理设备的特性,从而形成本发明的各个实施方式的设备。本发明中所述设备包括若干装置或模块,所述装置或模块被配置为执行相应步骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程序实现所述装置或模块执行的动作。由于所述设备与方法基于相同的发明构思,因此其中相同或相应的实现细节同样适用于与上述方法对应的装置或模块,由于其在上文中已经进行了详细和完整的描述,因此在下文中可能不再进行赘述。
[0090] 图7示意性示出了根据本发明一个实施方式的用于调整存储装置的分配的装置的框图700。具体地,示出了一种用于调整存储装置的分配的装置,存储装置中的第一部分被分配以用作分级存储,存储装置中的第二部分被分配以用作高速缓存存储,装置包括:采集模块710,配置用于分别采集第一部分的运行状态和第二部分的运行状态;第一获取模块720,配置用于基于第一部分的运行状态获取第一部分的性能度量;第二获取模块730,配置用于基于第二部分的运行状态获取第二部分的性能度量;以及调整模块740,配置用于基于第一部分的性能度量和第二部分的性能度量,调整存储装置的容量在第一部分和第二部分之间的分配。
[0091] 在本发明的一个实施方式中,第一部分的运行状态和第二部分的运行状态中的至少一个包括对相应部分的一组访问的一组响应时间。
[0092] 在本发明的一个实施方式中,第一获取模块720和第二获取模块730中的至少一个包括:性能获取模块,配置用于至少基于一组响应时间的总和获取对应部分的性能度量。
[0093] 在本发明的一个实施方式中,第一部分的运行状态和第二部分的运行状态中的至少一个进一步包括附加状态,附加状态包括与一组访问相关联的读写类型、数据量以及位置特征中的至少任一项。
[0094] 在本发明的一个实施方式中,性能获取模块包括:加权模块,配置用于基于附加状态计算权重,以及计算模块,配置用于基于利用权重加权的一组响应时间的总和获取对应部分的性能度量。
[0095] 在本发明的一个实施方式中,第一部分的容量大于第二部分的容量,以及第一获取模块720包括:选择模块,配置用于从存储器的第一部分中选择与第二部分的容量相等的第三部分;第三获取模块,配置用于基于第一部分的运行状态中与第三部分相关联的数据,获取第一部分的性能度量。
[0096] 在本发明的一个实施方式中,调整模块740包括:第一调整模块,配置用于响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第一阈值条件,将存储装置中的第一部分中的至少一部分进行再分配以用作高速缓存存储。
[0097] 在本发明的一个实施方式中,第一调整模块包括:第一维持模块,配置用于维持再分配后的第一部分的容量大于或者等于第一阈值容量。
[0098] 在本发明的一个实施方式中,调整模块包括:第二调整模块,配置用于响应于第一部分的性能度量与第二部分的性能度量之间的差异满足第二阈值条件,将存储装置中的第二部分中的至少一部分进行再分配以用作分级存储。
[0099] 在本发明的一个实施方式中,第二调整模块包括:第二维持模块,配置用于维持再分配后的第二部分的容量大于或者等于第二阈值容量。
[0100] 采用本发明所述的方法和装置,可以基于存储系统的运行状态来调整存储装置的分配,以便提高存储系统的性能。
[0101] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0102] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0103] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0104] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施方式中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0105] 这里参照根据本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0106] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0107] 也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0108] 附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0109] 以上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。