为存储优化操作分配存储设备的资源的方法和系统
技术领域
本发明涉及数据存储的优化,更具体地涉及一种为机器执行的存储优化操作分配存储设备的资源的方法和系统。
背景技术
在数据存储领域,常常构造具有分层存储架构的存储设备以供一个或多个主机使用来存储数据,从而实现存储成本和存储性能的平衡。具体地,可以使用具有不同性能和成本的存储器件来形成分层存储架构,所述存储器件可以是具有不同性能(例如转速)的机械硬盘(HDD)、基于闪存的固态硬盘(SSD)等。例如,可以使用每秒15000转的HDD、每秒7200转的HDD、以及SSD构造3层存储架构。相应地,为了提高存储设备的使用效率,降低使用成本,常常需要对存储在其中的数据进行分层存储优化操作,即,根据数据的特点,将存储在某一存储层中的数据转移到另一存储层中。例如,对于被频繁地访问的数据(即,热数据),可以将其从存取速度较慢的HDD转移到较为昂贵但是存取速度较快的SSD上以提高存取速度,而对于空闲数据或者较少被访问的数据(即,冷数据),可以将其从SSD转移到虽然存取速度较慢但是较为廉价的HDD上以降低存储成本。然而,这种分层存储优化操作需要消耗存储设备的资源,例如带宽等,因而会影响在存储设备上运行并且也需要消耗该资源的客户工作负载。
数据存储的另一种趋势是将基于高速闪存的直接附接存储(DAS)设备连接到所述主机,并且使用该DAS设备作为高速缓冲存储器来存储数据,以减少数据存取延迟。在这种情况下,需要进行高速缓冲存储优化操作。具体地,当主机的客户发出数据读取请求,但是该请求没有命中(即,该数据在高速缓冲存储器中不存在)时,主机从上述存储设备读取所请求的数据并且将其提供给客户,然后,为了提高以后的数据读取请求的命中率,主机将所述数据从该存储设备填充到高速缓冲存储器中,也就是说,该优化操作是以异步的方式执行的。然而,由于DAS设备存储容量通常比较大,因此在其启动期间或者在其客户工作负载转变期间,这一高速缓冲存储优化操作将给存储设备带来较大的负担,从而影响使用在该存储设备上运行的客户工作负载。
因此,需要一种为主机和/或存储设备执行的存储优化操作分配该存储设备的资源的方法和系统,以便能够在对存储设备的正常客户工作负载造成较小影响的同时,允许在主机和/或存储设备上进行存储优化操作以提高其性能。
发明内容
本发明的一个目的是提供一种为机器执行的存储优化操作分配存储设备的资源的方法和系统,其能够允许在所述机器上进行存储优化操作以提高其长期性能,同时对在存储设备上运行的正常客户工作负载造成较小的短期影响。
根据本发明的一个方面,提供了一种为机器执行的存储优化操作分配存储设备的资源的方法,包括:监视存储设备的可用资源;基于所述机器的历史运行信息以及存储优化操作对所述机器的性能提高程度的预测值中的至少一个,确定分配给存储优化操作的资源的分配比例;基于所述可用资源和分配比例,向存储优化操作分配存储设备的资源。
根据本发明的另一个方面,提供了一种为机器执行的存储优化操作分配存储设备的资源的系统,包括:监视设备,被配置为监视存储设备的可用资源;比例确定设备,被配置为基于所述机器的历史运行信息以及存储优化操作对所述机器的性能提高程度的预测值中的至少一个,确定分配给存储优化操作的资源的分配比例;以及分配设备,被配置为基于所述可用资源和分配比例,向存储优化操作分配存储设备的资源。
根据本发明上述方面的机器可以是存储设备本身和使用该存储设备提供的服务的主机中的至少一个。利用根据本发明上述方面的方法和系统,当客户工作负载较高、或者所述存储优化操作带来的性能提升不大时,可以减少给存储优化操作分配的存储设备的资源,以避免由于存储优化操作消耗存储设备的过多资源而给其客户工作负载造成较大的短期影响;另一方面,当存储设备的客户工作负载较低或者所述存储优化操作带来的性能提升较大时,可以增大给所述存储优化操作分配的资源,从而提高所述主机和存储设备的长期性能。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2示出了本发明的实施例的示例性应用环境。
图3示出了根据本发明实施例的为机器执行的存储优化操作分配存储设备的资源的方法的流程图。
图4示出了确定对于存储优化操作的资源的分配比例的方法的流程图。
图5示出了根据本发明实施例的为机器执行的存储优化操作分配存储设备的资源的系统的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructI/On means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
下面,将参照附图来描述根据本发明实施例的为机器执行的存储优化操作分配存储设备的资源的方法和系统。
首先参照图2来描述本发明的实施例的示例性应用环境。
如图2所示,存储设备201包括存储池2011和优化器2012。如上所述,存储池2011可以采用由具有不同性能的存储器件构成的分层存储架构来分层地存储数据。存储设备201可以充当存储服务器,并且向一个或多个客户(例如连接到该存储设备的主机)提供数据存储服务。当接收来自其客户的数据读取请求时,存储设备201从存储池2011中读取所请求的数据,并且将其返回给该客户。优化器2012可以进行上文所述的分层存储优化操作,即,根据存储在存储池2011中的数据的特点,在各个存储层之间移动所述数据,以便提高存储池的使用效率。
主机202可以使用存储设备201提供的数据存储服务,并且可以向其客户(未示出)提供数据存取服务。诸如基于闪存的DAS设备之类的高速缓冲存储器203连接到主机202。当主机202接收到来自其客户的数据读取请求时,主机202首先查询在高速缓冲存储器203中是否存在所请求的数据,如果是,即该数据读取请求命中,则主机202从高速缓冲存储器203读取该数据并且将其返回给客户,反之,如果所请求的数据不在高速缓冲存储器203中,即该数据读取请求没有命中,则主机202从存储设备201读取所请求的数据并且将其返回给客户。主机202包括优化器2021,用于进行上文所述的高速缓冲存储优化操作,即,当所请求的数据不在高速缓冲存储器203时,主机202从存储设备201读取所请求的数据并且将其返回给客户,然后优化器2021将所述数据填充到高速缓冲存储器203中以供以后的数据读取请求使用,从而提高其命中率。
可以认识到,在存储设备201以及主机202中执行的存储优化操作将消耗存储设备201的资源。为了避免所述存储优化操作消耗过多的资源从而影响存储设备201的正常客户工作负载,可以利用下述根据本发明实施例的方法和系统来为存储优化操作合理地分配资源。应当注意,尽管图2中只示出了一个主机连接到存储设备201,但这只是示意性的,可以有更多的主机连接到存储设备201以使用其提供的数据存储服务,或者没有主机连接到存储设备201。此外,尽管在上文中提到在存储设备201和主机202二者中执行存储优化操作,但这不是限制性的,可以只在存储设备201或只在主机202中执行存储优化操作,并且在有多个主机的情况下,也可在这些主机中的一部分或全部中执行存储优化操作。
下面,参照图2和图3来描述根据本发明的实施例的为机器执行的存储优化操作分配存储设备的资源的方法。所述机器可以是上述存储设备201以及主机202中的至少一个。在下文中,以所述机器是存储设备201以及主机202,即在存储设备201和主机202二者中都执行存储优化操作的情形为例来进行描述。
如图3所示,在步骤S301中,监视存储设备201的可用资源。
具体地,存储设备201可以具有多种资源,例如存储带宽、每秒输入输出操作数量(IOPS)等,这些资源可以用于由存储设备201的客户执行的数据存取操作和存储优化操作、以及由存储设备201执行的数据存取操作和存储优化操作,从而可能成为制约所述数据存取操作和/或存储优化操作的瓶颈。在本发明的实施例中,可以选择存储设备201的、可能成为瓶颈的一种或多种资源作为要分配的资源,然后监视这种资源的可用性,即,监视这种资源的空闲资源量。例如,当所选择的资源是存储带宽的情况下,可以监视存储设备201的可用带宽。可以利用在存储设备201内部或外部设置的监视设备或者安装在存储设备201中的监视软件来进行这一监视。监视存储设备201的可用资源的具体方法是本领域公知的,在这里不再赘述。
接下来,在步骤S302中,基于存储设备201和主机202的历史运行信息以及存储优化操作对存储设备201和主机202的性能提高程度的预测值中的至少一个,确定分配给存储优化操作的资源的分配比例。
如上所述,当客户从存储设备201请求数据或者向存储设备201写入数据时,在存储设备201上产生客户工作负载。当客户从主机202请求数据或者向主机202写入数据时,在主机202上产生客户工作负载。此外,在存储设备201和主机202上还分别执行存储优化操作。在所述客户工作负载与存储优化操作之间可能存在资源和/或数据竞争。因此,需要了解存储设备201和主机202的各自的客户工作负载情况以及资源竞争的情况,这可以通过获取存储设备201和主机202的历史运行信息来实现。可以使用图2所示的优化器2012获取存储设备201的历史运行信息,并且可以使用图2所示的优化器2021获取主机202的历史运行信息。
对于存储设备201,所述历史运行信息可以包括表示在过去预定时段内存储设备201的客户工作负载的信息。该客户工作负载可以根据与在过去预定时段内在存储设备201执行的数据输入/输出(I/O)操作的数量来确定。具体地,对于存储设备201,如上文所述,其包括存储池2011,该存储池具有多个存储层,每个存储层具有一个或多个存储器件。在过去预定时段内,客户可能在各个存储层中存取数据,从而在每个存储层进行相应的数据I/O操作(以下称为客户工作负载数据I/O操作)。此外,在过去预定时段内,可能在存储设备201中执行了分层存储优化操作,使得在各个存储层之间转移数据,从而进行相应的数据I/O操作(以下称为分层存储优化数据I/O操作)。因此,可以获取在过去预定时段内在每个存储层执行的客户工作负载数据I/O操作的数量、以及分层存储优化数据I/O操作的数量。可以根据触发数据I/O操作的数据请求的发起者来辨别数据I/O操作是客户工作负载数据I/O操作还是分层存储优化数据I/O操作。例如,如果该数据请求来自存储设备201外部,则该数据请求必然是由存储设备201的客户发起的,因此对应的数据I/O操作是客户工作负载数据I/O操作,另一方面,如果该数据请求来自存储设备201内部,则该数据请求是由存储设备201自己发起的,因此对应的数据I/O操作是分层存储优化数据I/O操作。由此,可以利用在过去预定时段内,在存储设备201中执行的所有客户工作负载数据I/O操作占其最大数据I/O操作处理能力(即,能处理的数据I/O操作的最大数量)的比例,作为衡量其客户工作负载的指标。除了所述数据I/O操作的数量以外,所述历史运行信息还可以包括与每个数据I/O操作对应的数据读取请求的响应时间,即,从接收到触发该数据I/O操作的数据读取请求起到返回所请求的数据为止的时间。可以在每次执行数据I/O操作时,在存储设备201中记录与该数据I/O操作有关的信息,例如对应的数据读取请求的发起者、数据I/O操作的数量、所述请求的响应时间等,使得可以根据所记录的这些信息获得上述历史运行信息。
对于存储设备201,所述历史运行信息还可以包括表示在过去预定时段内,在存储设备201的客户工作负载和存储优化操作之间发生的数据I/O冲突的程度的冲突信息。具体地,当客户工作负载数据I/O操作所针对的数据与分层存储优化数据I/O操作所针对的数据存在重叠时,在所述客户工作负载和存储优化操作之间发生数据I/O冲突。可以用在过去预定时段内、所述数据I/O冲突占在存储设备201中执行的所有数据I/O操作的比例(即冲突I/O比例)来指示所述数据I/O冲突的程度。可以在每次发生数据I/O冲突时,在存储设备201中记录该数据I/O冲突的相关信息,例如数据I/O冲突的数量、发生场景等,使得可以根据所记录的这些信息来获得所述冲突信息。
对于主机202,所述历史运行信息也可以包括表示在过去预定时段内主机202的客户工作负载的信息。该客户工作负载可以根据与在过去预定时段内在主机202执行的数据I/O操作的数量来确定。具体地,在过去预定时段内,客户可能对主机202存取数据,从而进行相应的数据I/O操作(即,客户工作负载数据I/O操作)。此外,在过去预定时段内,可能在存储设备201中执行了高速缓冲存储优化操作,从而进行相应的数据I/O操作(以下称为高速缓冲存储优化数据I/O操作)。因此,可以获取在过去预定时段内执行的客户工作负载数据I/O操作的数量、以及高速缓冲存储优化数据I/O操作的数量。可以根据数据I/O操作所针对的数据的目的地来辨别该数据I/O操作是客户工作负载数据I/O操作还是高速缓冲存储优化数据I/O操作,例如,如果所述数据被发送给主机202的客户,则该数据I/O操作是客户工作负载数据I/O操作,而如果所述数据被发送给高速缓冲存储器2021,则该数据I/O操作是高速缓冲存储优化数据I/O操作。由此,可以利用在过去预定时段内,在主机202执行的所有客户工作负载数据I/O操作占其最大数据I/O操作处理能力的比例,作为衡量其客户工作负载的指标。对于主机202,所述历史运行信息还可以包括主机202接收到的客户的数据读取请求的命中率(即,所请求的数据位于高速缓冲存储器2021中的数据读取请求占所有数据读取请求的比例,以下称为高速缓冲存储器命中率)、命中的数据读取请求的响应时间(即,从接收到该数据读取请求起到将所请求的数据从高速缓冲存储器2021返回给客户的时间)、以及没有命中的数据读取请求的响应时间(即从接收到该数据读取请求起到将所请求的数据从存储设备201读取并返回给客户的时间)。可以在每次接收到数据读取请求和/或执行数据I/O操作时,在主机202中记录与所述数据读取请求和/或数据I/O操作有关的信息,例如在过去预定时段内执行的数据I/O操作的数量和所请求的数据的目的地、在过去预定时段内接收的所有数据读取请求的数量、命中的数据读取请求的数量、每个命中的数据读取请求的响应时间、以及每个没有命中的数据读取请求的响应时间等,使得可以根据所记录的这些信息来获得上述历史运行信息。
对于主机202,所述历史运行信息还可以包括表示在过去预定时段内,在主机202的客户工作负载和存储优化操作之间发生的数据I/O冲突的程度的冲突信息。具体地,当客户工作负载数据I/O操作所针对的数据与高速缓冲存储优化数据I/O操作所针对的数据存在重叠时,在所述客户工作负载和高速缓冲存储优化数据I/O操作之间发生数据I/O冲突。可以用在过去预定时段内、所述数据I/O冲突占在主机202中执行的所有数据I/O操作的比例(即冲突I/O比例)来指示所述数据I/O冲突的程度。可以在每次发生数据I/O冲突时,在主机202中记录该数据I/O冲突的相关信息,例如数据I/O冲突的数量、发生场景等,使得可以根据所记录的这些信息来获得所述冲突信息。
为了给存储优化操作合理地分配资源,还需要确定所述存储优化操作对存储设备201和主机202的性能提高程度,以评估该存储优化操作是否会带来较大的益处。在本发明的实施例中,可以通过预测所述存储优化操作使由客户工作负载引起的数据读取请求的响应时间减少的比例来预测所述性能提高程度。
具体地,对于存储设备201,可以通过预测分层存储优化操作使所述数据读取请求的响应时间减少的比例来获得所述性能提高程度的预测值。例如,可以使用下式(1)来计算所述响应时间减少的比例Pstorage-rt:
其中,N是存储池2011的存储层的数量,pio-t-target是第t存储层的客户工作负载数据I/O操作占全部存储层的客户工作负载数据I/O操作的比例的目标值,其表示分层数据存储优化操作的优化目标,并且可以根据实际需要灵活地设定,RTt表示在过去预定时段内第t存储层的所有客户工作负载数据I/O操作所对应的数据读取请求的平均响应时间,其可以通过对按照上文所述的方式获取的各个数据读取请求的响应时间求平均而获得,pio-t是在过去预定时段内第t存储层的客户工作负载数据I/O操作占全部存储层的客户工作负载数据I/O操作的比例,其可以通过计算在过去预定时段内第t存储层的客户工作负载数据I/O操作的数量与全部存储层的客户工作负载数据I/O操作的数量之比而获得。在上式(1)中,表示在进行分层数据存储优化操作并且达到优化目标之后针对存储设备201的数据读取请求的响应时间与未进行分层数据存储优化操作时针对存储设备201的数据读取请求的响应时间之比,因此,上式(1)可以表示获得进行分层存储优化操作之后针对存储设备201的数据读取请求的响应时间减少的比例。应当注意,通过上式(1)计算得到的Pstorage-rt可能为负值,这意味着存储优化操作不能提高存储设备201的性能,在这种情况下,应当将该响应时间减少的比例Pstorage-rt设置为0。
对于主机202,可以通过预测高速缓冲存储优化操作使数据读取请求的响应时间减少的比例来获得所述性能提高程度的预测值。例如,可以使用下式(2)来计算所述响应时间减少的比例Pcache-rt:
其中,CHt是高速缓冲存储器命中率的目标值,其表示预期通过进行高速缓冲存储优化操作而获得的高速缓冲存储器命中率,并且可以根据实际需要灵活地设定,CHc是在过去预定时段内的高速缓冲存储器命中率,即命中的数据读取请求的比率,而1-CHc是在过去预定时段内没有命中的数据读取请求的比率,RTstorage是在过去预定时段内所有没有命中的数据读取请求的响应时间的平均值,RTcache是在过去预定时段内所有命中的数据读取请求的响应时间的平均值。上式(2)的分子部分等效于由于进行高速缓冲存储优化操作而导致的响应时间的减少量,而分母部分等效于在未进行该存储优化操作时的响应时间,因此,上述(2)可以表示通过进行高速缓冲存储优化操作导致的响应时间减少的比例。应当注意,通过上式(2)计算得到的Pcache-rt可能为负值,这意味着存储优化操作不能提高主机202的性能,在这种情况下,应当将该响应时间减少的比例Pcache-rt设置为0。
在获得存储设备201和主机202的历史运行信息、以及存储设备201和主机202执行的存储优化操作对它们的性能提高程度的预测值之后,可以基于这些信息来确定分配给存储优化操作的资源的分配比例。下面,参照图4来描述所述分配比例的示例性方法。
如图4所示,在步骤S3021中,将所述分配比例设定为初始值,该初始值表示对所述存储资源优化操作分配的存储设备201的资源的初始分配比例。可以根据经验或者根据设计需要等因素来设置该初始值,例如,可以将该初始值设置为5%。
接下来,在步骤S3022中,确定在过去预定时段内存储设备201和主机202的整体客户工作负载是否超过第一阈值。所述整体客户工作负载可以是存储设备201的客户工作负载和主机202的客户工作负载的加权平均值。例如,可以使用下式(3)来计算所述整体客户工作负载wltotal:
wltotal=wlstoragesstorage+wlhostshost(3)
其中,wlstorage是上文所述的在过去预定时段内存储设备201的客户工作负载,wlhost是上文所述的在过去预定时段内主机202的客户工作负载,sstorage和shost是加权系数,其中,sstorage是在过去预定时段内由存储设备201执行的客户工作负载数据I/O操作占由存储设备201和主机202执行的全部客户工作负载数据I/O操作的比例,shost是在过去预定时段内由主机202执行的客户工作负载数据I/O操作占由存储设备201和主机202执行的全部客户工作负载数据I/O操作的比例。所述第一阈值是根据实际需要预先设定的客户工作负载的阈值,例如40%。
当在步骤S3022中确定所述整体客户工作负载不超过第一阈值时,这说明所述整体客户工作负载较小,从而可以将存储设备201的较多资源分配给存储优化操作。因此,在步骤S3023中,可以将所述分配比例从初始值调整为上限值,作为最终的资源分配比例,该上限值表示可分配给存储优化操作的资源的最大比例,并且可以根据存储设备201和主机202的实际情况灵活地设定,例如可以被设定为30%。这样,可以在客户工作负载较小的时候,将较多的资源分配给存储优化操作以加快存储优化操作的执行。
另一方面,如果在步骤S3022中确定所述整体客户工作负载大于第一阈值,则可以进一步基于存储设备201和主机202的冲突信息来调整所述分配比例。具体地,在步骤S3024中,确定在过去预定时段内存储设备201和主机202的整体冲突I/O比例是否超过第二阈值。所述整体冲突I/O比例可以是存储设备201的冲突I/O比例和主机202的冲突I/O比例的加权平均值。例如,可以使用下式(4)来计算所述整体冲突I/O比例ctotal:
ctotal=cstoragesstorage+chostshost(4)
其中,cstorage是在过去预定时段内存储设备201的冲突I/O比例,chost是在过去预定时段内主机202的冲突I/O比例,sstorage和shost是上述加权系数。所述第二阈值是可以根据实际需要设置的值,其表示可允许的冲突I/O比例的最大值,例如1%。
当在步骤S3024中确定整体冲突I/O比例不超过第二阈值时,在步骤S3025,保持当前的分配比例不变。另一方面,当在步骤S3024中确定整体冲突I/O比例大于第二阈值时,这意味着在客户工作负载和存储优化操作之间产生了较多的冲突,因此,在步骤S3026,减小所述分配比例。例如,可以利用下式(5)来减小所述分配比例:
其中,new_rresource是减小后的分配比例,cur_rresource是减小前的分配比例,即在执行步骤S3026之前的分配比例,thres_conflict_io_p是上述第二阈值,cur_conflict_io_p是上述整体冲突I/O比例。
接下来,可以根据存储优化操作对存储设备201和主机202的性能提高程度的整体预测值是否超过所述性能提高程度的目标值,来进一步调整所述分配比例。所述性能提高水平的整体预测值可以是上文所述的存储优化操作对存储设备201的性能提高程度的预测值和存储优化操作对主机202的性能提高程度的预测值的加权平均值。例如,可以使用下式(6)来计算所述性能提高程度的整体预测值perfpredicted:
perfpredicted=perfstoragesstorage+perfhostshost(6)
其中,perfstorage是存储设备201的性能提高程度的预测值,perfhost是主机202的性能提高程度的预测值,sstorage和shost是上述加权系数。具体地,在步骤S3027,确定性能提高程度的整体预测值是否超过所述性能提高程度的目标值。
如果所述性能提高程度的整体预测值超过所述性能提高程度的目标值,则在步骤S3028中增大所述分配比例,否则在步骤S3029中减小或维持所述分配比例。具体地,例如可以使用下式(7)来调整(增大或减小)所述分配比例:
其中,new_rresource是调整后的分配比例,cur_rresource是调整前的分配比例,即在执行步骤S3028或S3029之前的分配比例,thres_perf是所述性能提高程度的目标值,其可以根据需要灵活地设定。应当注意,根据上式(7)计算的分配比例可能大于上文所述的资源分配上限值,在这种情况下,应当将所述分配比例设定为所述上限值。
通过上述方法,可以根据存储设备201和主机202的历史运行信息以及由存储设备201和主机202执行的存储优化操作对它们的性能提高程度的预测值中的至少一个,确定分配给存储优化操作的资源的分配比例。应当注意,尽管在上文中分别根据三个参数(即,客户工作负载、冲突I/O比例和性能提高程度的预测值)依序调整所述分配比例,这只是说明性的,而非限制性的,也可以仅使用这三个参数中的一个或多个参数来调整所述分配比例,在这种情况下,只需要执行参照图4描述的上述步骤中与所使用的参数对应的步骤,而非全部步骤。
返回图3,在步骤S303中,基于在步骤S301监视的存储设备201的可用资源和在步骤S302中确定的资源的分配比例,向存储优化操作分配存储设备的资源。在步骤S303中分配的资源是对在存储设备201和主机202中执行的全部存储优化操作整体分配的资源。还可以将所述资源进一步细分给在存储设备201和主机202中执行的每个存储优化操作。在这种情况下,可以将在步骤S303中分配的资源平均分配给各个存储优化操作。可替换地,可以利用上述加权系数sstorage和shost来将在步骤S303中分配的资源按照相应的比例分配给各个存储优化操作。
这样,利用根据本发明实施例的上述方法,可以给存储优化操作合理地分配存储设备的资源。然后,可以利用例如分别设置在存储设备201和主机202中的工作负载控制器(未示出),根据分配给它们的资源来控制(允许或禁止)在存储设备201和主机202中执行的存储优化操作。这样,可以允许存储设备和主机进行存储优化操作以提高其长期性能,同时避免正常客户工作负载受到存储优化操作的显著短期影响。
下面,参照图2和图5来描述根据本发明实施例的为机器执行的存储优化操作分配存储设备的资源的系统。该系统可以执行在上文中描述的资源分配方法。同样,所述机器可以是存储设备201以及使用存储设备201提供的数据存储服务的主机202中的至少一个,并且在下文中,以在存储设备201和主机202二者中都执行存储优化操作的情形为例来进行描述。
如图5所示,系统500包括监视设备501、比例确定设备502和分配设备503。
监视设备501监视存储设备201的可用资源。如上文所述,存储设备201可以具有多种资源,例如存储带宽、IOPS等。监视设备501可以监视存储设备201的、可能成为瓶颈的一种或多种资源的可用性,即,监视所述资源的空闲资源量。
比例确定设备502基于存储设备201和主机202的历史运行信息以及存储优化操作对存储设备201和主机202的性能提高程度的预测值中的至少一个,确定分配给存储优化操作的资源的分配比例。
具体地,为了确定所述分配比例,比例确定设备502可以获取存储设备201和主机202的历史运行信息,以了解存储设备201和主机202的各自的客户工作负载情况以及资源竞争的情况。这可以通过获取存储设备201和主机202的历史运行信息来实现。如上文所述,可以使用图2所示的优化器2012收集存储设备201的历史运行信息,并且可以使用图2所示的优化器2021收集主机202的历史运行信息。相应地,比例确定设备502可以从优化器2012和2021获取所述历史运行信息。所述历史运行信息与在上文中针对图3描述的历史运行信息相同,因此下面只对其进行简单的描述。
对于存储设备201,所述历史运行信息可以包括表示在过去预定时段内存储设备201的客户工作负载的信息。该客户工作负载可以根据与在过去预定时段内在存储设备201执行的数据输入/输出(I/O)操作的数量来确定。具体地,可以获取在过去预定时段内在每个存储层执行的客户工作负载数据I/O操作的数量、以及分层存储优化数据I/O操作的数量。由此,可以利用在过去预定时段内,在存储设备201中执行的所有客户工作负载数据I/O操作占其最大数据I/O操作处理能力的比例,作为衡量其客户工作负载的指标。除了所述数据I/O操作的数量以外,所述历史运行信息还可以包括与每个数据I/O操作对应的数据读取请求的响应时间。此外,所述历史运行信息还可以包括表示在过去预定时段内,在存储设备201的客户工作负载和存储优化操作之间发生的数据I/O冲突的程度的冲突信息。可以用在过去预定时段内、所述数据I/O冲突占在存储设备201中执行的所有数据I/O操作的比例(即冲突I/O比例)来指示所述数据I/O冲突的程度。
对于主机202,所述历史运行信息也可以包括表示在过去预定时段内主机202的客户工作负载的信息。该客户工作负载可以根据与在过去预定时段内在主机202执行的数据I/O操作的数量来确定。具体地,可以获取在过去预定时段内执行的客户工作负载数据I/O操作的数量、以及高速缓冲存储优化数据I/O操作的数量。由此,可以利用在过去预定时段内,在主机202执行的所有客户工作负载数据I/O操作占其最大数据I/O操作处理能力的比例,作为衡量其客户工作负载的指标。所述历史运行信息还可以包括主机202接收到的客户的数据读取请求的命中率(即,高速缓冲存储器命中率)、命中的数据读取请求的响应时间、以及没有命中的数据读取请求的响应时间。此外,所述历史运行信息还可以包括表示在过去预定时段内,在主机202的客户工作负载和存储优化操作之间发生的数据I/O冲突的程度的冲突信息。可以用在过去预定时段内、所述数据I/O冲突占在主机202中执行的所有数据I/O操作的比例(即冲突I/O比例)来指示所述数据I/O冲突的程度。
除了获取历史运行信息以外,比例确定设备502还确定所述存储优化操作对存储设备201和主机202的性能提高程度。在本发明的实施例中,比例确定设备502通过预测所述存储优化操作使由客户工作负载引起的数据读取请求的响应时间减少的比例来预测所述性能提高程度。具体地,对于存储设备201,比例确定设备502可以通过预测分层存储优化操作使所述数据读取请求的响应时间减少的比例来获得所述性能提高程度的预测值。对于主机202,比例确定设备502可以通过预测高速缓冲存储优化操作使数据读取请求的响应时间减少的比例来获得所述性能提高程度的预测值。比例确定设备502进行所述预测的方式与上文所述的方式相同,在这里不再赘述。
然后,比例确定设备502可以基于所述历史运行信息以及性能提高程度的预测值,确定分配给存储优化操作的资源的分配比例。由于比例确定设备502确定所述比例的方式与在上文中参照图4描述方式相同,因此在这里为了避免重复,只对这一确定过程进行简要的描述,而省略对相同细节的详细描述。简单地说,比例确定设备502首先将所述分配比例设定为初始值,然后确定在过去预定时段内存储设备201和主机202的整体客户工作负载是否超过第一阈值。当所述整体客户工作负载不超过第一阈值时,比例确定设备502可以将所述分配比例从初始值调整为上限值,作为最终的资源分配比例。另一方面,如果所述整体客户工作负载超过第一阈值,则比例确定设备502可以进一步基于存储设备201和主机202的冲突信息来调整所述分配比例。具体地,比例确定设备502可以确定在过去预定时段内存储设备201和主机202的整体冲突I/O比例是否超过第二阈值。当整体冲突I/O比例不超过第二阈值时,比例确定设备502保持当前的分配比例不变。另一方面,当整体冲突I/O比例大于第二阈值时,比例确定设备502减小所述分配比例。接下来,比例确定设备502可以根据存储优化操作对存储设备201和主机202的性能提高程度的整体预测值是否超过所述性能提高程度的目标值,来进一步调整所述分配比例。具体地,如果所述性能提高程度的整体预测值超过所述性能提高程度的目标值,则比例确定设备502增大所述分配比例,否则减小或维持所述分配比例。这样,通过上述一系列调整操作,可以最终确定分配给存储优化操作的资源的分配比例。同样,除了分别根据上述三个参数(即,客户工作负载、冲突I/O比例和性能提高程度的预测值)依序调整所述分配比例以外,比例确定设备502也可以仅使用这三个参数中的一个或多个参数来调整所述分配比例,在这种情况下,只需要执行上述操作中与所使用的参数对应的操作,而不需要执行上述全部操作。
分配设备503接收监视设备501对于可用资源的监视结果以及比例确定设备502确定的所述资源的分配比例,然后基于所述可用资源和分配比例,向存储优化操作分配存储设备的资源。由此,可以向存储优化操作合理地分配资源。
应当注意,分配设备503分配的上述资源是对在存储设备201和主机202中执行的全部存储优化操作整体分配的资源,还可以将所述资源进一步细分给在存储设备201和主机202中执行的每个存储优化操作。例如,可以将分配设备503分配的资源平均分配给各个存储优化操作,或者利用上文所述的加权系数将所述资源按照相应的比例分配给各个存储优化操作。相应地,可以利用例如分别设置在存储设备201和主机202中的工作负载控制器(未示出),根据分配给它们的资源来控制(允许或禁止)在存储设备201和主机202中执行的存储优化操作。
这样,利用根据本发明实施例的上述方法和系统,可以在存储设备的客户工作负载较高、并且/或者存储优化操作带来的性能提升不大时,减少给存储优化操作分配的存储设备的资源,以避免由于所述存储优化操作消耗存储设备的过多资源而给其客户工作负载造成较大的短期影响;另一方面,当存储设备的客户工作负载较低或者所述存储优化操作带来的性能提升较大时,可以增大给所述存储优化操作分配的存储设备的资源,从而在较小地影响所述客户工作负载的情况下,提高所述主机和存储设备的长期性能。而且,可以以固定的时间间隔或者响应于用户的指令来进行上述分配,从而不断地优化主机和存储设备的性能。
应当认识到,上面描述的根据本发明实施例的方法和系统只是说明性的,而非限制性的,可以对其做出各种修改而不背离本发明的范围。例如,尽管在上文中描述根据本发明实施例的方法时先执行步骤S301中的监视操作,然后执行步骤S302中的确定分配比例的操作,但这两个步骤的执行顺序不是限制性的,也可以先执行步骤S302,然后执行步骤S301。此外,尽管在上文中针对存储设备201和主机202两者执行存储优化操作的情形描述了本发明的实施例,但是根据本发明实施例的方法和系统同样适用于存储设备201和主机202之一执行存储优化操作的情形,在这种情况下,只需要将参照图4描述的各种整体参数(整体客户工作负载、整体冲突I/O比例和性能提高程度的整体预测值)替换为存储设备201或主机202各自的参数即可,换言之,上文所述的整体客户工作负载、整体冲突I/O比例和性能提高程度的整体预测值分别成为执行所述存储优化操作的机器的客户工作负载、冲突I/O比例和性能提高程度的预测值。此外,根据本发明实施例的方法和系统也适用于更多主机执行存储优化操作的情况,在这种情况下,只需要在计算上述整体参数时考虑所有执行存储优化操作的主机即可。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。