存储系统资源分配方法及装置与流程

文档序号:11458426阅读:310来源:国知局
存储系统资源分配方法及装置与流程

本申请涉及存储技术领域,尤其涉及一种存储系统资源分配方法及装置。



背景技术:

对于目前的存储系统中的存储介质,根据其性能差异可以将存储空间分为多种存储层,例如,分为三层,分别是高性能层、次高性能层和低性能层。通常高性能层采用ssd(solidstatedrive,固态硬盘),次高性能层采用sas(serialattachedscsi,串行连接scsi)盘,低性能层采用sata(serialadvancedtechnologyattachment,串口硬盘)。

在相关技术中,存储设备通常将各存储层的raid(redundantarraysofindependentdisks,磁盘阵列)放在同一个存储池中,并在存储池中启动自动分层功能,从而在该存储池中创建的lun也具有自动分层功能,存储设备通过一个索引表记录该lun的lba(logicalblockaddress,逻辑区块地址)地址与分配的存储空间的对应关系,并且为lun预先分配的存储空间随机分布在各个存储层上。然而在该lun初始接收到读写命令时,由于该读写命令中的lba地址在索引表中对应的存储空间可能位于低性能层,而低性能层存储空间的读写速度慢,从而会导致新创建的lun在处理初始读写命令时io响应慢的问题,进而影响lun的整体性能。



技术实现要素:

有鉴于此,本申请提供一种存储系统资源分配方法及装置,以解决现有分配方式会导致新创建的lun在处理初始读写命令时io响应慢的问题。

根据本申请实施例的第一方面,提供一种存储系统资源分配方法,所述方法应用于存储设备,所述存储设备上创建有至少一个lun,所述方法包括:

统计写入所述至少一个lun已分配存储空间中的数据量;

在统计得到的数据量高于所述至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为所述至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容所述至少一个lun;

向应用服务器发送扩容通知,以使所述应用服务器查询所述至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息。

根据本申请实施例的第二方面,提供一种存储系统资源分配方法,所述方法应用于应用服务器,所述方法包括:

接收存储设备发送的扩容通知;

根据所述扩容通知携带的容量发生变化的lun标识,向所述存储设备发送查询容量命令;

接收所述存储设备返回的所述lun标识对应的扩容后的容量信息,利用所述扩容后的容量信息更新磁盘信息,并触发扩容后的相关处理。

根据本申请实施例的第三方面,提供一种存储系统资源分配装置,所述装置应用于存储设备,所述存储设备上创建有至少一个lun,所述装置包括:

统计模块,用于统计写入所述至少一个lun已分配存储空间中的数据量;

分配模块,用于在统计得到的数据量高于所述至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为所述至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容所述至少一个lun;

发送模块,用于向应用服务器发送扩容通知,以使所述应用服务器查询所述至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息。

根据本申请实施例的第四方面,提供一种存储系统资源分配装置,所述装置应用于应用服务器,所述装置包括:

接收模块,用于接收存储设备发送的扩容通知;

查询模块,用于根据所述扩容通知携带的容量发生变化的lun标识,向所述存储设备发送查询容量命令;

更新及触发模块,用于接收所述存储设备返回的所述lun标识对应的扩容后的容量信息,利用所述扩容后的容量信息更新磁盘信息,并触发扩容后的相关处理。

应用本申请实施例,存储设备在创建至少一个lun之后,可以开始统计写入该至少一个lun已分配存储空间中的数据量,在统计得到的数据量高于该至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为该至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容该至少一个lun,并向应用服务器发送扩容通知,以使应用服务器查询该至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息,以触发扩容后的相关处理。基于上述实现方式,针对创建的lun,在统计得到的写入数据量高于lun当前逻辑容量与扩容阈值的第一差值时,就按照扩容容量进行一次扩容,以实现按需小步扩容的目的,而不是为lun预先分配好对应的存储空间,从而可以提高存储空间的利用率。并且本申请结合自动分层技术进行的扩容,即优先从高性能层分配存储空间,可以保证存储设备始终使用高性能层的存储空间处理lun的初始io,降低处理初始io的延时,进而提高lun的整体性能。

附图说明

图1为本申请根据一示例性实施例示出的一种存储系统资源分配场景图;

图2为本申请根据一示例性实施例示出的一种存储系统资源分配方法的实施例流程图;

图3为本申请根据一示例性实施例示出的另一种存储系统资源分配方法的实施例流程图;

图4为本申请根据一示例性实施例示出的一种存储设备的硬件结构图;

图5为本申请根据一示例性实施例示出的一种应用服务器的硬件结构图;

图6为本申请根据一示例性实施例示出的一种存储系统资源分配装置的实施例结构图;

图7为本申请根据一示例性实施例示出的另一种存储系统资源分配装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种存储系统资源分配场景图,图1包括应用服务器和存储设备,应用服务器通过san网络与存储设备相连,应用服务器可以基于标准的iscsi(互联网小型计算机系统接口)协议对存储设备进行数据的读写操作。其中,应用服务器中设置有磁盘管理模块和启动器(initiator),并且安装有应用程序,存储设备中设置有目标器(target),从而可以将initiator关联到target上,即建立initiator-target映射,此外存储设备会将属于不同存储层的存储空间组成一个存储池,在该存储池中可以创建lun,并且还可以为创建的lun按需分配存储空间,并将创建的lun关联到initiator-target映射上,即建立initiator-target-lun映射。当应用服务器通过initiator与存储设备的target建立initiator-target连接之后,通过查询该应用服务器对应的initiator-target-lun映射,可以获取到与该应用服务器关联的lun信息,进而将获取的lun信息加到磁盘管理模块中,从而应用程序可以使用为该lun分配的存储空间。

本领域技术人员可以理解的是,上述图1所示的一个应用服务器仅为示例性说明而非限制,本申请对应用服务器的个数不做限制。并且存储设备与几个应用服务器连接,便会建立几个initiator-target映射,在每个initiator-target映射中均会根据对应的应用服务器实际运行的业务需求关联不同数量的lun。为了描述方便,在本申请中以一个应用服务器与存储设备连接为例进行详细描述。

图2为本申请根据一示例性实施例示出的一种存储系统资源分配方法的实施例流程图,该存储系统资源分配方法可以应用于存储设备,该存储设备上创建有至少一个lun,结合图1所示的场景图,在本申请实施例中,存储设备创建lun时,需要预先设置lun的初始容量,该初始容量表示创建lun时的逻辑容量,即lun在创建时占用的物理存储空间的大小,在创建完成lun之后,优先从高性能层的可用存储空间中分配初始容量的存储空间,并将创建的lun分配给应用服务器,即关联到应用服务器对应的initiator-target映射中,从而,应用服务器在建立initiator-target连接后,可以获取到该lun的信息,并将该lun的信息加到磁盘管理模块中,从而该lun可以作为一个新磁盘进行管理,供应用程序存取数据。

在一示例性场景中,存储设备中具有自动分层功能的存储池容量为100tb,其中,高性能层为20tb、次高性能层为50tb,低性能层为30tb。在存储池中需要创建10个lun,每个lun的初始容量均设置为500gb,因此存储设备创建10个lun后,将从高性能层分配走5000gb的存储空间,且每个lun当前逻辑容量为500gb,从而应用服务器可以获取到10个容量为500gb的lun。

如图2所示,该存储系统资源分配方法包括如下步骤:

步骤201:统计写入至少一个lun已分配存储空间中的数据量。

在一实施例中,存储设备可以针对存储池中的每个lun,该lun每接收到一个写请求,累加一次写入该lun已分配存储空间中的数据量。

步骤202:在统计得到的数据量高于该至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为该至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容至少一个lun。

在一实施例中,存储设备在创建lun时,还可以预先设置lun的扩容阈值和扩容容量,其中,扩容阈值表示触发lun要进行扩容的阈值,扩容容量表示每次要扩容的容量。在统计得到的数据量高于lun当前逻辑容量与扩容阈值的第一差值时,自动为lun分配存储空间,并将分配的存储空间记录到lun对应的索引表中,从而达到扩容该lun的目的。

在另一实施例中,针对优先从属于高性能层的可用存储空间中为该至少一个lun分配预设扩容容量的存储空间的过程,以按照性能特征将存储池中的存储空间分为高性能层、次高性能层和低性能层为例进行分配,若属于高性能层的可用存储空间的大小高于预设扩容容量,则从属于高性能层的可用存储空间中为该至少一个lun分配预设扩容容量的存储空间;否则,将属于高性能层的可用存储空间作为该至少一个lun的存储空间,并计算预设扩容容量与属于高性能层的可用存储空间的大小的第二差值,并判断属于次高性能层的可用存储空间的大小是否高于第二差值;若高于第二差值,则从属于次高性能层的可用存储空间中为该至少一个lun继续分配第二差值的存储空间;若不高于第二差值,则将属于次高性能层的可用存储空间作为该至少一个lun的存储空间,并继续计算所述预设扩容容量与属于高性能层的可用存储空间以及属于次高性能层的可用存储空间的大小的第三差值,并从属于低性能层的可用存储空间中为该至少一个lun继续分配第三差值的存储空间。

基于上述所述的示例性场景,扩容阈值为50gb,扩容容量为50gb,假设对于某一lunx,在统计得到的数据量为450gb,当前逻辑容量500gb-扩容阈值50gb=450gb时,自动触发lunx第一次扩容,lunx当前逻辑容量扩大为550gb;在统计得到的数据量为500gb,当前逻辑容量550gb-扩容阈值50gb=500gb时,又触发lunx第二次扩容,lunx当前逻辑容量扩大为600gb,依次类推。此外,存储设备在刚创建完成10个lun后,存储池中属于高性能层的可用存储空间剩余20tb-5000gb=19980gb大小,因此lunx的两次扩容均可以从属于高性能层的可用存储空间中分配得到。

需要说明的是,存储设备在创建lun时,还可以预先设置lun的最大容量,当该至少一个lun当前逻辑容量与预设最大容量相等时,表示无需再为该至少一个lun自动分配存储空间,可以停止步骤201的过程。其中,预设最大容量可以结合存储池的总容量和lun数量进行设置,例如,对于100tb的存储池,创建有10个lun,每个lun的最大容量可以设置为10tb。

需要进一步说明的是,存储设备可以对写入该至少一个lun且属于高性能层和次高性能层的已分配存储空间中的数据进行热度统计,并根据统计得到的热度获取冷点数据,并从属于低性能层的可用存储空间中为获取的冷点数据分配存储空间,然后将冷点数据迁移至分配的存储空间中,并释放该冷点数据占用的当前所属存储层的存储空间,使可用于分配的高性能层和次高性能层的存储空间变大。通过对已分配存储空间中冷点数据的迁移,保证初始io始终能够使用高性能层和次高性能层的存储空间,提高lun初始io的处理速度。

其中,热度统计可以根据数据被访问的频率,或者也可以根据预设时间段内数据被访问的次数确定热度的高低,进而可以将热度低于某个数值的数据确定为冷点数据,并将冷点数据迁移至低性能层的存储空间中。此外,在为冷点数据分配存储空间,并将冷点数据迁移至分配的存储空间中之后,需要更新分配的存储空间对应的raid的块表以及lun的索引表,并且可以通过更新冷点数据占用的当前所属存储层的存储空间对应的raid的块表以及lun的索引表释放冷点数据占用的当前所属存储层的存储空间,本领域技术人员可以理解的是,具体如何更新块表和索引表,可以通过相关技术实现,本申请在此不再详述。

步骤203:向应用服务器发送扩容通知,以使所应用服务器重新查询该至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息。

在一实施例中,存储设备可以通过目标器将扩容通知发送至应用服务器的启动器,以触发应用服务器查询该至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘管理模块中的磁盘信息,该扩容通知中可以携带该至少一个lun的标识。

由上述实施例可知,存储设备在创建至少一个lun之后,可以开始统计写入该至少一个lun已分配存储空间中的数据量,在统计得到的数据量高于该至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为该至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容该至少一个lun,并向应用服务器发送扩容通知,以使应用服务器查询该至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息,以触发扩容后的相关处理。基于上述实现方式,针对创建的lun,在统计得到的写入数据量高于lun当前逻辑容量与扩容阈值的第一差值时,就按照扩容容量进行一次扩容,以实现按需小步扩容的目的,而不是为lun预先分配好对应的存储空间,从而可以提高存储空间的利用率。并且本申请结合自动分层技术进行的扩容,即优先从高性能层分配存储空间,可以保证存储设备始终使用高性能层的存储空间处理lun的初始io,降低处理初始io的延时,进而提高lun的整体性能。

图3为本申请根据一示例性实施例示出的另一种存储系统资源分配方法的实施例流程图,该存储系统资源分配方法可以应用于应用服务器,如图3所示,该存储系统资源分配方法包括如下步骤:

步骤301:接收存储设备发送的扩容通知。

在一实施例中,存储设备在对某一lun进行扩容之后,应用服务器可以接收到携带该某一lun的标识的扩容通知。

步骤302:根据该扩容通知携带的容量发生变化的lun标识,向存储设备发送查询容量命令。

步骤303:接收存储设备返回的该lun标识对应的扩容后的容量信息,利用扩容后的容量信息更新磁盘信息,并触发扩容后的相关处理。

在一实施例中,应用服务器在接收到扩容后的容量信息之后,可以将该容量信息更新磁盘管理模块中的磁盘信息,并触发扩容后的相关处理。

其中,扩容后的相关处理可以分两种方式进行处理,第一种为通过专门的处理模块进行处理,例如,专门的处理模块可以利用os(operatingsystem,操作系统)提供的命令行扩容该lun对应的磁盘上已创建的文件系统;第二种为通过通知应用程序,由应用程序自行完成相关处理,例如,应用程序可以根据扩容后的容量信息为自身的数据库进行扩容。

由上述实施例可知,应用服务器在接收到存储设备发送的扩容通知后,可以根据扩容通知携带的容量发生变化的lun标识,向存储设备发送查询容量命令,以获取到该lun标识对应的扩容后的容量信息,并扩容后的容量信息更新磁盘信息,从而自动触发扩容后的相关处理,无需人工干预,提高了处理效率。

与前述存储系统资源分配方法的实施例相对应,本申请还提供了存储系统资源分配装置的实施例。

本申请存储系统资源分配装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请根据一实施例性实施例示出的一种存储设备的硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

本申请存储系统资源分配装置的实施例还可以应用在应用服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请根据一实施例性实施例示出的一种应用服务器的硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

图6为本申请根据一示例性实施例示出的一种存储系统资源分配装置的实施例结构图,该存储系统资源分配装置可以应用于存储设备,该存储设备上创建有至少一个lun。如图6所示,该存储系统资源分配装置包括:统计模块61、分配模块62以及发送模块63。

其中,统计模块61,用于统计写入所述至少一个lun已分配存储空间中的数据量;

分配模块62,用于在统计得到的数据量高于所述至少一个lun当前逻辑容量与预设扩容阈值的第一差值时,优先从属于高性能层的可用存储空间中为所述至少一个lun分配预设扩容容量的存储空间,并利用分配的存储空间扩容所述至少一个lun;

发送模块63,用于向应用服务器发送扩容通知,以使所述应用服务器查询所述至少一个lun扩容后的容量信息,并利用查询到的扩容后的容量信息更新磁盘信息。

在一可选的实现方式中,按照性能特征将存储池中的存储空间分为高性能层、次高性能层和低性能层,所述分配模块62,具体用于在优先从属于高性能层的可用存储空间中为所述至少一个lun分配预设扩容容量的存储空间过程中,若属于高性能层的可用存储空间的大小高于所述预设扩容容量,则从属于高性能层的可用存储空间中为所述至少一个lun分配预设扩容容量的存储空间;否则,将属于高性能层的可用存储空间作为所述至少一个lun的存储空间,并计算所述预设扩容容量与所述属于高性能层的可用存储空间的大小的第二差值,并判断属于次高性能层的可用存储空间的大小是否高于所述第二差值;若高于所述第二差值,则从属于次高性能层的可用存储空间中为所述至少一个lun继续分配所述第二差值的存储空间;若不高于所述第二差值,则将属于次高性能层的可用存储空间作为所述至少一个lun的存储空间,并继续计算所述预设扩容容量与所述属于高性能层的可用存储空间以及所述属于次高性能层的可用存储空间的大小的第三差值,并从属于低性能层的可用存储空间中为所述至少一个lun继续分配所述第三差值的存储空间。

在一可选的实现方式中,所述装置还包括(图6中未示出):

数据迁移模块,具体用于对写入所述至少一个lun且属于高性能层和次高性能层的已分配存储空间中的数据进行热度统计;根据统计得到的热度获取冷点数据,并从属于低性能层的可用存储空间中为获取的冷点数据分配存储空间;将获取的冷点数据迁移至属于低性能层的分配的存储空间中,并释放所述冷点数据占用的当前所属存储层的存储空间。

在一可选的实现方式中,所述装置还包括(图6中未示出):

停止模块,用于当所述至少一个lun当前逻辑容量与预设最大容量相等时,停止统计写入所述至少一个lun已分配存储空间中的数据量的过程。

图7为本申请根据一示例性实施例示出的另一种存储系统资源分配装置的实施例结构图,该存储系统资源分配装置可以应用于应用服务器,如图7所示,该存储系统资源分配装置包括:接收模块71、查询模块72以及更新及触发模块73。

其中,接收模块71,用于接收存储设备发送的扩容通知;

查询模块72,用于根据所述扩容通知携带的容量发生变化的lun标识,向所述存储设备发送查询容量命令;

更新及触发模块73,用于接收所述存储设备返回的所述lun标识对应的扩容后的容量信息,利用所述扩容后的容量信息更新磁盘信息,并触发扩容后的相关处理。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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