基于自动精简配置的存储资源分配方法和装置与流程

文档序号:12801392阅读:587来源:国知局
基于自动精简配置的存储资源分配方法和装置与流程

本发明涉及存储技术领域,特别涉及一种基于自动精简配置技术的存储资源分配方法和装置。



背景技术:

自动精简配置技术是一种在存储业界广泛使用的存储虚拟化技术,在自动精简配置技术中,存储系统利用精简池统一管理存储资源,由精简池将存储资源按需分配给精简卷供上层应用使用。

对于应用而言,可以看到的是精简卷中的逻辑空间地址,若想访问该逻辑空间地址对应的数据,则需要根据逻辑空间地址和物理空间地址的映射关系,查找精简池中与该逻辑空间对应的物理空间,然后访问查找到的物理空间中的数据。因此,在自动精简配置技术中,精简池中除了存储业务数据以外,还要存储用于记录逻辑空间地址到物理空间地址的映射关系的元数据。

现有技术中,精简池会将所有的存储资源统一分配给元数据和业务数据,对于元数据而言,其访问频率较高,采用现有的方式存储元数据,限制了元数据的读写速度,从而直接影响了自动精简配置业务的性能。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于自动精简配置的存储资源分配方法和装置。所述技术方案如下:

第一方面,本发明实施例提供了一种基于自动精简配置的存储资源分配方法,适用于具有至少两种硬盘的存储系统,所述方法包括:

获取主机发送的写输入输出io请求;

当所述写io请求未被分配存储空间时,判断第一硬盘是否存在可用空间,所述第一硬盘为所述至少两种硬盘中随机访问性能最好的硬盘;

若所述第一硬盘存在可用空间,则从第一硬盘中为所述写io请求分配元数 据存储空间;

若所述第一硬盘不存在可用空间,则从第二硬盘中为所述写io请求分配元数据存储空间,所述第二硬盘的硬盘性能为所述至少两种硬盘中随机访问性能第二好的硬盘。

其中,随机访问性能可以采用每秒进行读写操作的次数(inputoutputpersecond,简称iops)来衡量,iops越大,随机访问性能越好。

由于在自动精简配置技术的读写过程中,需要大量地对元数据进行读写,所以元数据的读写速度直接影响自动精简配置业务的性能,本发明实施例通过为元数据分配随机访问性能较好的硬盘的存储空间,从而可以提高自动精简配置业务的性能。此外,在随机访问性能最好的第一硬盘不可用的情况下,可以将元数据存储在随机访问性能仅次于第一硬盘的第二硬盘,通常随机访问性能越好的硬盘,价格越昂贵,通过采用此种方式,可以使得可以兼顾成本和容量。

可选地,所述至少两种硬盘选自固态硬盘ssd、串行高级技术附件sata硬盘、串行连接小型计算机系统接口sas硬盘和近线串行连接小型计算机系统接口nl-sas硬盘。

进一步地,所述第一硬盘为ssd,所述第二硬盘为sas硬盘。

由于ssd不需要寻址,所以ssd的随机访问性能最好,将元数据存储空间优先从ssd中分配,可以最大程度的保证元数据的访问速度,而sas硬盘为目前随机访问性能最好的机械硬盘,所以采用sas硬盘作为第二硬盘,也能提高元数据的访问速度。

在第一方面一种可能的实现方式中,每种硬盘对应一棵空间树,每棵空间树用于记录对应类型硬盘的存储空间的信息。每棵空间树可以包括根节点和多个叶子节点。其中,根节点可以用于记录对应类型的硬盘的总信息,例如该类型硬盘的总容量、该类型的硬盘的可用容量、已用容量等。每个叶子节点与该类型硬盘的一个存储单元对应,用于记录对应的存储单元的信息。存储单元的大小可以根据实际需要设置,例如设置为1g、2g或者一个第一硬盘的容量等。

每种类型的硬盘由一个空间树来管理,与所有类型的硬盘采用一颗树来管理相比,可以降低树的深度,进而在查找元数据时,可以显著提高查找效率。

在这种实现方式中,所述判断所述第一硬盘是否还有可用空间,包括:

根据第一硬盘的空间树判断所述第一硬盘是否还有可用空间,所述第一硬 盘的空间树用于记录所述第一硬盘的存储空间的信息。

进一步地,所述第一硬盘的空间树包括根节点和多个叶子节点,每个所述叶子节点对应所述第一硬盘的一个存储单元,每个所述节点用于记录对应的所述存储单元的容量、已用空间和可用空间。

在第一方面另一种可能的实现方式中,所述方法还包括:

在分配所述元数据存储空间之后,判断所述第二硬盘是否存在可用空间;

若所述第二硬盘存在可用空间,则在所述第二硬盘中为所述写io请求分配业务数据存储空间;

若所述第二硬盘不存在可用空间,则在第三硬盘中为所述写io请求分配业务数据存储空间,所述第三硬盘的随机访问性能弱于所述第二硬盘的随机访问性能。

在该实现方式中,将业务数据优先存储在随机访问性能较好的第二硬盘中,可以优先保证业务数据的访问速度,当第二硬盘无可用空间时,将业务数据存储在随机访问性能较弱的第三硬盘中,使得在访问速度无法保证的情况下,可以至少保存业务数据正常访问。同时,该方式可以兼顾存储容量和成本问题。

在其他实现方式中,也可以优先从第三硬盘为业务数据分配业务数据存储空间,当第三硬盘没有可用空间时,再从第二硬盘为业务数据分配业务数据存储空间。

在第一方面又一种可能的实现方式中,所述方法还包括:

若所述第三硬盘不存在可用空间,则在第四硬盘中为所述写io请求分配业务数据存储空间,所述第四硬盘属于所述至少两种硬盘中的一种。

可选地,第四硬盘可以为第一硬盘,也可以为除第一硬盘以外类型的硬盘。

第二方面,本发明实施例提供了一种基于自动精简配置的存储资源分配装置,所述装置包括用于实现上述第一方面所述的方法的单元,例如获取单元、判断单元和分配单元等。

第三方面,本发明实施例提供了一种基于自动精简配置的存储资源分配装置,所述装置包括处理器和存储器,所述存储器用于存储软件程序,当所述处理器运行或执行存储在所述存储器内的软件程序时,可以执行第一方面所述的方法。

第四方面,本发明实施例还提供了一种计算机可读介质,用于存储供基于 自动精简配置的存储资源分配装置执行的程序代码,所述程序代码包括执行第一方面所述的方法的指令。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的存储系统的结构示意图;

图2是本发明实施例提供的一种基于自动精简配置的存储资源分配方法的流程图;

图3是本发明实施例提供的一种基于自动精简配置的存储资源分配方法的流程图;

图4是本发明实施例提供的一种基于自动精简配置的存储资源分配装置的结构框图;

图5是本发明实施例提供的一种基于自动精简配置的存储资源分配装置的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

下面先结合图1简单介绍一下本发明适用的存储系统的结构,如图1所示,该存储系统100包括存储器110、处理器120、通信接口130和硬盘140。图1中示出的存储系统100结构并不构成对存储系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

处理器120是存储系统100的控制中心,利用各种接口和线路连接整个存储系统100的各个部分,通过运行或执行存储在存储器110内的软件程序,以及调用存储在存储器110内的数据,执行存储系统100的各种功能和处理数据,从而对存储系统100进行整体控制。可选的,处理器120可包括一个或多个处理核心。

存储器110可用于存储各种数据,例如各种配置参数,以及存储软件程序。处理器120通过运行存储在存储器110的软件程序,从而执行各种功能应用以及数据处理。存储器110可主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统111、获取模块112、判断模块113和分配模块114等;存储数据区可存储根据存储系统100的使用所创建的数据,例如硬盘的信息等。此外,存储器110可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(readonlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。

通信接口130用于与其他设备例如主机进行通信,例如接收主机的输入输出(inputoutput,简称io)请求,并发送响应消息。

硬盘140可以包括不同类型的硬盘,比如固态硬盘(solidstatedisk,简称ssd)、机械硬盘等,而机械硬盘还可以分为串行高级技术附件(serialadvancedtechnologyattachment,简称sata)硬盘,串行连接小型计算机系统接口(serialadvanced小型计算机系统接口(smallcomputersysteminterface,简称scsi),简称sas)硬盘、近线串行连接小型计算机系统接口(nearlinesas,简称nl-sas)等。其中,按照随机访问性能排序,ssd的随机访问性能最好,其次为sas硬盘,再次为sata硬盘,最后为nl-sas硬盘。

在本发明实施例中,存储系统100包括至少两种硬盘,每种硬盘的个数为一个或多个。其中,至少两种硬盘是指硬盘的类型不同。这些硬盘140可以为独立磁盘构成的冗余阵列(redundantarraysofindependentdisks,简称raid)。

硬盘140的存储空间需要对应的数据结构进行管理。在本发明实施例中,对于不同类型的硬盘,采用独立的数据结构进行管理。进一步地,可以采用空间树管理硬盘140的存储空间。

具体地,每种硬盘对应一棵空间树,每棵空间树用于记录一种类型的硬盘的存储空间的信息,包括但不限于一种类型的硬盘的总容量、该类型的硬盘的可用容量、已用容量、空间使用状态等。实现时,空间树可以为b树或b+树。 将每种硬盘采用各自独立的空间树进行管理,可以降低树的深度,提高查询效率,并且,可以降低并发io操作冲突的可能。

每棵空间树均包括根节点和多个叶子节点,每个叶子节点对应该类型硬盘的一个存储单元,用于记录对应的存储单元的信息,叶子节点记录的存储单元的信息包括但不限于硬盘容量、已用容量、已用空间、可用空间、预留空间等。存储单元的大小可以根据实际需要设置,例如设置为1g、2g或者一个第一硬盘的容量等。

实现时,可以采用位图、链表、哈希树等表示硬盘的存储空间的分配情况。例如,将每个存储单元划分为设定大小的存储块,例如,4k、8k等,存储块与位图中的位一一对应,位图中的位为1(或0)时,表示对应的存储块已使用;位图中的位为0(或1)时,表示对应的存储块未使用。需要说明的是,在本发明实施例中,硬盘的存储空间均指物理空间。

各类型的硬盘的空间树可以存储在精简池中某几个硬盘的固定区域或者存储在精简池以外的硬盘中,在系统启动时,会将其加载到缓存中,以提高访问速度。

创建或扩容时,若增加了某种类型的硬盘,只需要增加该类型硬盘对应的空间树的叶子节点,在增加的叶子节点中记录增加的硬盘的存储单元的相关信息,并在该空间树的根节点中更新该类型硬盘的相关信息即可,实现方便。

本发明基于自动精简配置,因此,前述至少两种硬盘采用精简池统一管理,精简池的容量的大小可以等于或者小于存储系统中所有硬盘的总容量。精简池上创建有精简卷,又称精简逻辑单元号(thinlogicalunitnumber,简称thinlun),精简卷的容量可以大于、等于或者小于精简池的总容量,精简卷的容量可以根据实际需要配置。

当该存储系统100接收到主机发送的写io请求时,通过精简卷为其中的业务数据分配逻辑空间,当分配了逻辑空间后,再从精简池中为该io请求中的业务数据分配对应的物理空间(即业务数据存储空间)和用于记录元数据的物理空间(即元数据存储空间),该元数据包括精简卷的逻辑空间的地址到精简池的物理空间的地址的映射关系,最后再将元数据写入元数据存储空间并将业务护具写入业务数据存储空间。

当该存储系统100接收到主机发送的读io请求时,先访问元数据存储空间, 得到读io请求对应的元数据,然后根据元数据记录的精简卷的逻辑空间的地址到精简池的物理空间的地址的映射关系,得到业务数据所在的物理空间的地址,进而从该物理空间读取业务数据。

元数据具有以下特点:

元数据与业务数据占用物理空间相比,仅占少量空间;

元数据读写非常频繁,且读io数量大于写io;

元数据读写请求为随机小io请求。

基于上述特点,本发明实施例通过优先为元数据分配随机访问性能高的硬盘的存储空间,从而可以提升元数据的访问性能,从而达到提升存储系统的整体读写性能的目的。具体方法见下面的基于自动精简配置的存储资源分配方法的实施例。

本发明实施例提供了一种基于自动精简配置的存储资源分配方法,本实施例以该方法应用于图1所示的存储系统为例说明,如图2所示,该方法包括:

步骤201:获取主机发送的写io请求。

步骤202:当该写io请求未被分配存储空间时,判断第一硬盘是否存在可用空间,若所述第一硬盘存在可用空间,则执行步骤203;若第一硬盘不存在可用空间,则执行步骤204。

其中,第一硬盘为所述至少两种硬盘中随机访问性能最好的硬盘。

步骤203:从第一硬盘中为该写io请求分配元数据存储空间。

步骤204:从第二硬盘中为该写io请求分配元数据存储空间。

其中,第二硬盘的硬盘性能为至少两种硬盘中随机访问性能第二好的硬盘。

本发明实施例提供了一种基于自动精简配置的存储资源分配方法,本实施例以该方法应用于图1所示的存储系统为例说明,在本实施例中,以存储系统包括三种硬盘为例,对本发明进行详细说明。其中,按照硬盘的随机访问性能排序,第一硬盘为ssd,第二硬盘为sas硬盘,第三硬盘为sata硬盘。如图3所示,该方法包括:

步骤301:接收主机发送的写io请求。

其中,该写io请求包括lun的id和逻辑区块地址(logicalblockaddress, lba)。该写io请求还包括待写入的业务数据。

当该lun为thinlun时,则执行步骤302,当该lun不是thinlun时,直接根据lba线性映射到物理空间,从该物理空间读取业务数据。

主机发送的io请求包括读io请求和写io请求,io请求中可以携带标识位,例如,当该标识位为1(或0)时,表示当前io请求为写io请求,当该标识位为0(或1)时,表示当前io请求为读io请求。

步骤302:判断该写io请求是否被分配存储空间,当该写io请求未被分配存储空间时,执行步骤303;当该写io请求被分配过存储空间时,执行步骤308。

其中,该步骤302可以包括:

在该lun对应的元数据存储空间中查找lba,若在该lun对应的元数据存储空间中查找到该lba,表示该写io请求已被分配过存储空间;若在该lun对应的元数据存储空间中未查找到该lba,则表示该写io请求未被分配过存储空间。

步骤303:判断第一硬盘是否存在可用空间,若第一硬盘存在可用空间,则执行步骤304;若第一硬盘不存在可用空间,则执行步骤305。

该步骤303可以包括:

根据第一硬盘的空间树判断所述第一硬盘是否还有可用空间,该第一硬盘的空间树用于记录所述第一硬盘的存储空间的信息。

如前所述,第一硬盘的空间树包括根节点和多个叶子节点,根节点用于记录第一硬盘的总容量,每个节点对应第一硬盘的一个存储单元,每个节点用于记录对应的存储单元的容量、已用空间和可用空间。

步骤304:从第一硬盘中为写io请求分配元数据存储空间。

步骤305:判断第二硬盘中是否存在可用空间,若第二硬盘存在可用空间,则执行步骤306;若第二硬盘不存在可用空间,则执行步骤307;

同样地,判断第二硬盘中是否存在可用空间,可以根据第二硬盘的空间树判断第二硬盘是否还有可用空间,该第二硬盘的空间树用于记录第二硬盘的存储空间的信息。

步骤306:从第二硬盘中为写io请求分配元数据存储空间。

步骤307:向主机发送响应消息。

该响应消息用于指示元数据存储空间不能分配。

在分配元数据存储空间之后,需要将元数据存储空间的索引加载到缓存中,

步骤308:根据写io请求中的lba,查找lba对应的存储空间的地址,并将写io请求中的业务数据写入查找到的存储空间。

步骤309:在分配元数据存储空间之后,判断第二硬盘是否存在可用空间;若第二硬盘存在可用空间,则执行步骤310;若第二硬盘不存在可用空间,则执行步骤311。

步骤310:在第二硬盘中为写io请求分配业务数据存储空间。

步骤311:判断第三硬盘是否存在可用空间,若第三硬盘存在可用空间,则执行步骤312;若第三硬盘不存在可用空间,则执行步骤313。

步骤312:在第三硬盘中为写io请求分配业务数据存储空间。

步骤313:判断第一硬盘是否存在可用空间,若第一硬盘存在可用空间,则执行步骤314;若第一硬盘不存在可用空间,则执行步骤315。

步骤314:从第一硬盘中为写io请求分配业务数据存储空间。

步骤315:向主机发送响应消息。

其中,该响应消息用于指示业务数据存储空间不能分配。

在分配了业务数据存储空间之后,本实施例的方法还包括:

将写io请求中的业务数据写入分配到的业务数据存储空间;

将记录业务数据存储空间的地址与thinlun的逻辑空间的地址的映射关系的元数据写入分配到的元数据存储空间。

容易知道,当元数据存储空间和业务数据存储空间分配以后,需要修改对应的硬盘的空间树的信息,例如,将分配的空间修改为已用空间。

值得注意的是,在其他实施例中,步骤313和步骤314中的第一硬盘可以由第四硬盘替换,该第四硬盘的随机访问性能比前述第一硬盘、第二硬盘和第三硬盘的随机访问性能差,例如nl-sas;或者,还可以在步骤313和步骤314之前,增加先判断第四硬盘是否存在可用空间的步骤,当第一硬盘不存在可用空间再执行步骤313。

上述步骤的执行可以通过存储系统根据前述软件程序执行。例如,步骤301由存储系统根据图1中的获取模块112执行,步骤303、305、309、311、313由存储系统根据判断模块113执行,步骤304、306、310、312、314由存储系统根据分配模块114执行。

本发明实施例提供了一种基于自动精简配置的存储资源分配装置,适用于图1所示的存储系统,参见图4,该装置可以通过软件、硬件或者两者的结合实现成为存储系统的全部或者一部分。该装置可以包括:

获取单元401,用于获取主机发送的写io请求;

判断单元402,用于当获取单元401获得的写io请求未被分配存储空间时,判断第一硬盘是否存在可用空间,该第一硬盘为所述至少两种硬盘中随机访问性能最好的硬盘;

分配单元403,用于当判断单元402判断第一硬盘存在可用空间时,从第一硬盘中为获取单元401获得的写io请求分配元数据存储空间;当判断单元403判断所述第一硬盘不存在可用空间时,从第二硬盘中为获取单元401获得的写io请求分配元数据存储空间,该第二硬盘的硬盘性能为至少两种硬盘中随机访问性能第二好的硬盘。

本发明实施例提供了一种基于自动精简配置的存储资源分配装置,适用于图1所示的存储系统,参见图5,该装置可以通过软件、硬件或者两者的结合实现成为存储系统的全部或者一部分。该装置可以包括:

获取单元501,用于获取主机发送的写io请求;

判断单元502,用于当获取单元501获得的写io请求未被分配存储空间时,判断第一硬盘是否存在可用空间,该第一硬盘为所述至少两种硬盘中随机访问性能最好的硬盘;

分配单元503,用于当判断单元502判断第一硬盘存在可用空间时,从第一硬盘中为获取单元501获得的写io请求分配元数据存储空间;当判断单元503判断所述第一硬盘不存在可用空间时,从第二硬盘中为获取单元501获得的写io请求分配元数据存储空间,该第二硬盘的硬盘性能为至少两种硬盘中随机访问性能第二好的硬盘。

可选地,至少两种硬盘选自ssd、sata硬盘、sas硬盘和nl-sas硬盘。

优选地,所述第一硬盘可以为ssd,所述第二硬盘可以为sas硬盘。

在本实施例的一种实现方式中,该判断单元502,具体用于根据第一硬盘的空间树判断所述第一硬盘是否还有可用空间,所述第一硬盘的空间树用于记录 所述第一硬盘的存储空间的信息。

所述第一硬盘的空间树包括多个节点,每个节点所述第一硬盘的一个存储单元,每个所述节点用于记录对应的所述存储单元的容量、已用空间和可用空间。

在本实施例的一种实现方式中,所述判断单元502,还用于在所述分配单元分配所述元数据存储空间之后,判断所述第二硬盘是否存在可用空间;

所述分配单元503,还用于当所述判断单元502判断所述第二硬盘存在可用空间时,在所述第二硬盘中为所述写io请求分配业务数据存储空间;当所述判断单元502判断所述第二硬盘不存在可用空间时,在第三硬盘中为所述写io请求分配业务数据存储空间,所述第三硬盘的随机访问性能弱于所述第二硬盘的随机访问性能。

实现时,第三硬盘可以为sata硬盘。

分配单元503,还用于当所述第三硬盘不存在可用空间时,在第四硬盘中为所述写io请求分配业务数据存储空间,所述第四硬盘属于所述至少两种硬盘中的一种。实现时,第四硬盘可以为ssd也可以为nl-sas硬盘。

需要说明的是,判断单元502可以根据各类型硬盘对应的空间树判断各类型硬盘是否存在可用空间,分配模块503可以根据判断单元503的判断结果,从各类型硬盘中为写io请求分配存储空间(元数据存储空间或业务数据存储空间)。在本发明的其他实施例中,也可以优先从随机读写性能最差的硬盘中为业务数据分配存储空间(即业务数据存储空间),当随机读写性能最差的硬盘的没有可用空间时,再从随机读写性能较好的硬盘中为业务数据分配存储空间。其具体实现可以参见图3所示方法实施例,在此省略详细描述。

需要说明的是:上述实施例提供的基于自动精简配置的存储资源分配装置在存储数据时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于自动精简配置的存储资源分配装置与基于自动精简配置的存储资源分配方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

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