访问存储池的方法以及分布式存储系统转让专利

申请号 : CN202210317574.6

文献号 : CN114415977B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王志远

申请人 : 阿里云计算有限公司

摘要 :

本说明书实施例提供一种访问存储池的方法以及分布式存储系统,其中,访问存储池的方法应用于存储管理侧,方法包括:响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;将目标数据从当前存储池标识对应的存储盘迁移到目标存储池标识对应的存储盘,并对目标数据与存储池的对应关系进行更新。由于存储管理侧管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向存储管理侧发出请求即可自动使存储管理侧根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,提高了存储池之间数据迁移的效率。

权利要求 :

1.一种访问存储池的方法,应用于分布式存储系统的存储管理侧,所述存储管理侧包括存储节点,所述存储节点包括多个存储盘,并管理所述多个存储盘,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,每个存储池对应一颗拓扑树,所述拓扑树包含所有的存储节点以及存储盘信息,在每个存储池标识对应的拓扑树中,其他存储池标识与存储盘的对应关系,以及其他数据与存储盘的对应关系携带隐藏标签,所述方法包括:主服务器通过管控接口接收到用户端对目标数据的存储池标识变更信息,确定数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;

由所述存储节点将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并对所述当前存储池标识对应的拓扑树以及所述目标存储池标识对应的拓扑树中所述目标数据与存储池的对应关系进行更新。

2.根据权利要求1所述的方法,所述获取目标数据的当前存储池标识,包括:根据预设的拓扑树确定所述目标数据对应的当前存储盘;

根据所述拓扑树确定所述当前存储盘对应的当前存储池标识。

3.根据权利要求2所述的方法,所述将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,包括:根据所述目标存储池标识确定目标存储盘;

将所述目标数据从所述当前存储盘,移动至所述目标存储盘。

4.根据权利要求3所述的方法,所述对所述目标数据与存储池的对应关系进行更新,包括:根据所述目标数据与所述目标存储盘的对应关系,和所述目标存储池标识与所述目标存储盘的对应关系更新所述拓扑树。

5.根据权利要求2所述的方法,还包括:

响应于客户端的文件创建指令,根据所述文件创建指令确定所述目标存储池标识;

将所述目标存储池标识发送至客户端,并获取所述客户端发送的存储盘的标识,其中,所述存储盘与所述目标存储池标识相对应,根据所述文件创建指令创建的目标文件与所述存储盘相对应;

根据所述目标文件与所述存储盘的对应关系,和所述目标存储池标识与所述存储盘的对应关系更新所述拓扑树。

6.根据权利要求5所述的方法,所述根据所述文件创建指令确定目标存储池标识,包括:在所述文件创建指令未携带所述目标存储池标识的情况下,将预设存储池标识作为所述目标存储池标识。

7.根据权利要求2所述的方法,还包括:

响应于文件读取指令,根据所述文件读取指令确定待读取用户文件;

在所述待读取用户文件存在文件副本的情况下,根据所述拓扑树确定所述待读取用户文件对应的存储盘,以及所述文件副本对应的存储盘;

从所述待读取用户文件对应的存储盘和所述文件副本对应的存储盘中,选择通信时延较小的存储盘读取所述用户文件。

8.根据权利要求1所述的方法,还包括:

接收存储节点发送的第一类型的存储盘的缓存数据和用户数据的占用比例;

根据所述占用比例调整所述第一类型的存储盘在对应的存储池中的存储空间。

9.根据权利要求2所述的方法,还包括:

响应于控制端的存储池创建指令,根据所述存储池创建指令确定待创建存储盘;

根据所述待创建存储盘生成对应的存储池标识,并根据所述待创建存储盘与所述对应的存储池标识的对应关系更新所述拓扑树。

10.根据权利要求1所述的方法,还包括:

响应于存储池修改指令,根据所述存储池修改指令确定目标存储池的待删除的存储盘;

暂停对所述待删除的存储盘的写操作,并将所述待删除的存储盘中的数据移动至隐藏存储池对应的存储盘;

在所述待删除的存储盘中的数据移动完成的情况下,解除所述待删除的存储盘与所述目标存储池的对应关系。

11.一种分布式存储系统,所述系统包括存储管理侧和用户接口,所述存储管理侧包括管控端、管控接口、多个存储节点、主节点、元数据节点,其中,所述存储节点包括多个存储盘;

所述管控端,被配置为通过所述管控接口向所述主节点、元数据节点和/或存储节点发送配置指令,其中,所述管理所述存储盘包括将目标数据从当前存储池标识对应的存储盘迁移到目标存储池标识对应的存储盘的管理步骤;

所述存储节点,被配置为管理所述存储盘,并根据读写指令对所述管理盘进行读/写;

所述主节点,被配置为通过接收用户通过所述用户接口发送的查询指令,根据所述查询指令从所述元数据节点中查询目标数据对应的存储池;

所述元数据节点,被配置为管理用户数据与所述存储盘的对应关系,以及所述存储盘与存储池的对应关系,每个存储池对应一颗拓扑树,所述拓扑树包括所有存储节点以及存储盘的对应关系,在每个所述存储池标识对应的拓扑树中,其他存储池标识与存储盘的对应关系,以及其他数据与存储盘的对应关系携带隐藏标签。

12.一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述访问存储池的方法的步骤。

13.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述访问存储池的方法的步骤。

说明书 :

访问存储池的方法以及分布式存储系统

技术领域

[0001] 本说明书实施例涉及云计算技术领域,特别涉及一种访问存储池的方法。

背景技术

[0002] 随着云计算技术的发展,云在越来越多的应用场景中得以利用,给用户带来了极大方便。由于很多用户有数据隔离的需求,出现了存储池技术。存储池技术,将不同用户间数据物理隔离。目前,存储池技术在设计之初就是为专有云的场景建立的技术栈,针对物理隔离的需求和一些相关的企业级特性进行设计。技术架构简单,天然支持了物理划分,但这种物理划分是固化的,数据的流动只能依赖于用户,用户操作麻烦,而且网络资源消耗较大,效率低。

发明内容

[0003] 有鉴于此,本说明书实施例提供了一种访问存储池的方法。本说明书一个或者多个实施例同时涉及一种访问存储池的装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
[0004] 根据本说明书实施例的第一方面,提供了一种访问存储池的方法,应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述方法包括:
[0005] 响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;
[0006] 将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并
[0007] 对所述目标数据与存储池的对应关系进行更新。
[0008] 根据本说明书实施例的第二方面,提供了一种访问存储池的装置,应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述装置包括:
[0009] 确定模块,被配置为响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;
[0010] 访问模块,被配置为将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并
[0011] 对所述目标数据与存储池的对应关系进行更新。
[0012] 根据本说明书实施例的第三方面,提供了一种计算设备,包括:
[0013] 存储器和处理器;
[0014] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述访问存储池的方法的步骤。
[0015] 根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述访问存储池的方法的步骤。
[0016] 根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述访问存储池的方法的步骤。
[0017] 本说明书实施例提供一种访问存储池的方法以及分布式存储系统,其中所述访问存储池的方法应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述方法包括:响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并对所述目标数据与存储池的对应关系进行更新。由于存储管理侧管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向存储管理侧发出请求即可自动使存储管理侧根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,无需用户对数据进行其他数据流转操作,用户操作简单,占用网络资源少,提高了存储池之间数据迁移的效率。

附图说明

[0018] 图1是本说明书一个实施例提供的一种访问存储池的方法的流程图;
[0019] 图2示出了根据本说明书一个实施例提供的一种访问存储池的方法的架构图;
[0020] 图3示出了根据本说明书一个实施例提供的一种访问存储池的方法的文件创建时序图;
[0021] 图4示出了根据本说明书一个实施例提供的一种访问存储池的方法的池创建时序图;
[0022] 图5是本说明书一个实施例提供的一种访问存储池的方法的处理过程流程图;
[0023] 图6是本说明书一个实施例提供的一种访问存储池的装置的结构示意图;
[0024] 图7是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

[0025] 在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
[0026] 在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0027] 应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0028] 首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
[0029] 存储池(StoragePool):将文件系统管理的存储节点的磁盘的一部分划分出来的支持独立访问的物理单元。
[0030] topo树(拓扑树):分布式文件系统可以管理上万个存储节点的数十万块盘,这些物理节点在存在于不同数据中心,不同机房的不同机架上,这些机器的空间物理结构可以通过一个虚拟的根节点构建出一个树形结构,这个结构就是topo树,分布式文件系统的元数据层就是通过这样的物理结构来控制用户数据的分布。
[0031] 固态硬盘(SolidStateDisk或SolidStateDrive,简称SSD):又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
[0032] HDD(HardDiskDrive):即硬盘驱动器的英文名。最基本的电脑存储器。
[0033] SDK:指软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
[0034] id(Identitydocument):是身份证标识号、账号、唯一编码、专属号码、工业设计、国家简称、法律词汇、通用账户、译码器、软件公司等各类专有词汇的缩写。
[0035] 每秒查询率(QPS,Queriespersecond):是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
[0036] Cache:缓存,是指可以进行高速数据交换的存储器。
[0037] 在本说明书中,提供了一种访问存储池的方法,本说明书同时涉及一种访问存储池的装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
[0038] 参见图1,图1示出了根据本说明书一个实施例提供的一种访问存储池的方法的流程图,访问存储池的方法,应用于存储管理侧,存储管理侧可以理解为对元数据进行管理的一侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述方法包括:具体包括以下步骤。
[0039] 步骤102:响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识。
[0040] 其中,目标数据可以理解为用户选择的文件数据,例如,音乐格式的文件、图片格式的文件、文本格式的文件;数据迁移请求可以理解为将目标数据从一个存储池移动到另一个存储池的请求,例如,将目标数据从存储池A移动至存储池B;存储池标识可以理解为对不同的存储池进行识别的标识,进一步地,当前存储池标识可以理解为目标数据在迁移之前存在的存储池的标识,目标存储池标识可以理解为目标数据需要迁移到的存储池的标识,例如,当前存储池标识为A,目标存储池标识为B,即,将目标数据从存储池A迁移至存储池B。
[0041] 在实际应用中,参见图2,图2示出了根据本说明书一个实施例提供的一种访问存储池的方法的架构图,其中,包括管控端,管控接口,包括多个存储盘的存储节点,包括多个存储盘的存储池,主服务器,元数据节点以及用户接口。管控接口(rootserver)作为控制服务提供API给管控端或者用户端,支持存储池的配置能力,包括创建,删除,修改,查询存储池的功能,并且管控接口(rootserver)通过心跳将存储池的配置同步给主服务器(master)以及存储节点(chunkserver),通过这个步骤元数据节点和数据节点都有了存储池的配置,用户接口(SDK)访问文件系统的时候可以指定对应的存储池标识(ID),这样主服务器(master)就会分配指定存储池包含的存储节点(chunkserver)给用户接口(SDK),在写入数据的时候,存储节点(chunkserver)也知道自身哪些磁盘数据属于当前访问的存储池,数据就只会写入到对应的磁盘。这样,用户可以直接修改存储池的标识,将存在存储池的数据移动到另一个存储池。
[0042] 举例来说,目标数据F存在当前存储池标识为A,用户将配置文件中的目标数据F对应的存储池标识更改为B,主服务器在扫描到这一更改的情况下,即接收到对目标数据的数据迁移请求。主服务器通过元数据节点获取目标数据F存在当前存储池标识为A。
[0043] 需要说明的是,元数据节点可以单独配备一台物理设备,也可以将元数据节点与主服务器放在一起,所以,存储管理侧可以为主服务器,也可以为单独的元数据节点,另外,在存储盘的数量较少的情况下,可以通过主服务器直接管理存储盘,在存储盘的数量较多的情况下,主服务器的处理能力有限,则需要增加存储节点以承载管理存储盘的任务。
[0044] 在一种可实现的方式中,所述获取目标数据的当前存储池标识,包括:
[0045] 根据预设的拓扑树确定所述目标数据对应的当前存储盘;
[0046] 根据所述拓扑树确定所述当前存储盘对应的当前存储池标识。
[0047] 其中,当前存储盘可以理解为当前目标数据存储在的硬盘中,例如,当前存储盘为存储盘1。
[0048] 在实际应用中,可以用拓扑树实现元数据节点的元数据管理功能,拓扑树可以为一棵,即,所有存储池用一颗拓扑树,也可以由全局一棵拓扑树演变成每个存储池构建一棵专属的拓扑树,这样拓扑树的逻辑不需要针对存储池做改动,新建块数据(chunk)、备份(replication)等多场景的现有逻辑都不需要调整,保持更大的复用性。
[0049] 例如,可以通过拓扑树确定目标数据F的当前存储盘为存储盘1,进而确定存储盘1属于当前存储池标识为A的存储池。
[0050] 进一步地,在每个存储池对应一颗专属的拓扑树的情况下,具体实施方式如下所述。
[0051] 具体地,每个存储池标识对应一个所述拓扑树;
[0052] 在每个所述存储池标识对应的拓扑树中,其他存储池标识与存储盘的对应关系,以及其他数据与存储盘的对应关系携带隐藏标签。
[0053] 在实际应用中,每棵拓扑树都包含所有的存储节点以及存储盘信息,通过将不在拓扑树的存储节点以及存储盘加黑(设置为SHUTDOWN)方式来实现排除。
[0054] 例如,存在存储池A和存储池B,存储池A对应拓扑树T1,存储池B对应拓扑树T2,其中,拓扑树T1中会存在存储池B的对应关系,但是,拓扑树T1中的存储池B的对应关系携带隐藏标签,即存储盘加黑(设置为SHUTDOWN)方式,同样地,拓扑树T2中的存储池A的对应关系携带隐藏标签,即存储盘加黑(设置为SHUTDOWN)方式。
[0055] 本说明书实施例通过对每个存储池构建一棵专属的拓扑树,这样拓扑树的逻辑不需要针对存储池做改动,提高了复用性。
[0056] 步骤104:将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并对所述目标数据与存储池的对应关系进行更新。
[0057] 其中,对所述目标数据与存储池的对应关系进行更新可以理解为,将目标数据迁移后的存储池与目标数据建立对应关系,例如,在目标数据F迁移至目标存储池B之后,在对应关系中删除目标数据F与原来的存储池的对应关系,并建立目标数据F与目标存储池B的对应关系。
[0058] 在实际应用中,所有的文件都和存储池的标识有对应关系,用户只需要通过将一个文件或者一组文件的存储池标识修改成目标存储池的标识,这样就会在后台将文件的数据迁移到目标存储池,同时如果两个池的磁盘如果在同一个存储节点,那么数据的迁移会在存储节点内进行,不会占用用户的网络。
[0059] 具体地,所述将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,包括:
[0060] 根据所述目标存储池标识确定目标存储盘;
[0061] 将所述目标数据从所述当前存储盘,移动至所述目标存储盘。
[0062] 例如,目标数据F存在当前存储池标识为A,用户将配置文件中的目标数据F对应的存储池标识更改为B,主服务器在扫描到这一更改的情况下,即接收到对目标数据的数据迁移请求。主服务器通过元数据节点获取目标数据F存在当前存储池标识为A,与配置文件中目标数据F对应的存储池标识为B不一致,则确定存储池标识为B的存储池中的存储盘2,将目标数据F迁移至存储盘2。
[0063] 进一步地,所述对所述目标数据与存储池的对应关系进行更新,包括:
[0064] 根据所述目标数据与所述目标存储盘的对应关系,和所述目标存储池标识与所述目标存储盘的对应关系更新所述拓扑树。
[0065] 在实际应用中,拓扑树实现元数据节点的元数据管理功能,则需要对拓扑树中的对应关系进行更新。
[0066] 例如,在拓扑树中,将目标数据F与存储池标识A的对应关系删除,并添加目标数据F与存储池标识B的对应关系。
[0067] 本说明书实施例通过在存储节点之间进行数据迁移,不会占用用户的网络资源,提高了效率以及用户的体验。
[0068] 进一步地,本说明书实施例的访问存储池的方法还包括:
[0069] 响应于客户端的文件创建指令,根据所述文件创建指令确定所述目标存储池标识;
[0070] 将所述目标存储池标识发送至客户端,并获取所述客户端发送的存储盘的标识,其中,所述存储盘与所述目标存储池标识相对应,根据所述文件创建指令创建的目标文件与所述存储盘相对应;
[0071] 根据所述目标文件与所述存储盘的对应关系,和所述目标存储池标识与所述存储盘的对应关系更新所述拓扑树。
[0072] 其中,客户端可以为用户端、控制端等;存储盘的标识可以理解为每块硬盘的识别标识,例如,存储盘1。
[0073] 在实际应用中,用户在创建新的文件的情况下,参见图3,图3示出了根据本说明书一个实施例提供的一种访问存储池的方法的文件创建时序图,客户端首先要通过用户接口向元数据节点发送创建文件请求,其中创建文件请求携带用户标识,接着,元数据节点想客户端返回反馈消息,客户端再向元数据节点发送写请求,元数据节点根据用户标识确定待写入的存储池,并将相应的存储池标识发送给客户端,客户端再通过用户接口向存储节点发送携带存储池标识的写请求,存储节点根据存储池标识选择一块硬盘进行写操作,并向客户端返回携带硬盘的存储盘标识的写完成反馈消息,客户端在拿到存储盘标识后,将该标识发送给元数据节点,以使元数据节点可以根据存储盘标识更新拓扑树。
[0074] 例如,元数据节点在接收到客户端的文件创建指令后,确定写入存储池A,并将存储池标识A发送给客户端,客户端通过存储池标识A在存储节点中创建文件F1并拿到写入数据的存储盘标识:存储盘1,并将存储盘1发送给元数据节点,元数据节点在拓扑树中记录创建的文件F1与存储盘1的对应关系。
[0075] 在元数据节点根据用户标识确定待写入的存储池的情况下,可以为用户指定的存储池,也可以为默认的存储池,具体实现方式如下所述。
[0076] 进一步地,所述根据所述文件创建指令确定目标存储池标识,包括:
[0077] 在所述文件创建指令未携带所述目标存储池标识的情况下,将预设存储池标识作为所述目标存储池标识。
[0078] 在实际应用中,在未创建新的存储池之前,默认所有的存储节点的存储盘都在默认存储池(DefaultPool)中,默认存储池是默认存在的,不能创建或者删除。
[0079] 举例来说,元数据节点在接收到客户端的文件创建指令后,文件创建指令没有携带目标存储池标识,则确定写入默认的存储池A,并将存储池标识A发送给客户端,客户端通过存储池标识A在存储节点中创建文件F1并拿到写入数据的存储盘标识:存储盘1,并将存储盘1发送给元数据节点,元数据节点在拓扑树中记录创建的文件F1与存储盘1的对应关系。
[0080] 在另一种可实施的方式中,元数据节点在接收到客户端的文件创建指令后,文件创建指令携带目标存储池标识B,则确定写入存储池B,并将存储池标识B发送给客户端,客户端通过存储池标识B在存储节点中创建文件F1并拿到写入数据的存储盘标识:存储盘2,并将存储盘2发送给元数据节点,元数据节点在拓扑树中记录创建的文件F1与存储盘2的对应关系。
[0081] 本说明书实施例通过根据设定的目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,提高了存储池之间数据迁移的效率。
[0082] 进一步地,用户可以将数据存在一个单独建立的存储池,那么也可以建立一个除默认存储池之外的存储池。具体实施方式如下所述。
[0083] 本说明书实施例的访问存储池的方法还包括:
[0084] 响应于控制端的存储池创建指令,根据所述存储池创建指令确定待创建存储盘;
[0085] 根据所述待创建存储盘生成对应的存储池标识,并根据所述待创建存储盘与所述对应的存储池标识的对应关系更新所述拓扑树。
[0086] 在实际应用中,参见图4,图4示出了根据本说明书一个实施例提供的一种访问存储池的方法的池创建时序图,可以将默认存储池中的存储盘拿出,用于组建新的存储池。相应地,也要在元数据节点解除拿出的存储盘与旧的存储池的对应关系,以及建立拿出的存储盘与新的存储池的对应关系。
[0087] 例如,默认存储池包括存储盘1,存储盘2、存储盘3和存储盘4,将存储盘3与默认存储池的对应关系删除,将存储盘4与默认存储池的对应关系删除,并建立存储盘3与存储池A的对应关系,以及建立存储盘4与存储池A的对应关系。
[0088] 进一步地,如果要拿出的存储盘中还存在有数据,则需要将数据先备份,再清除其中的数据,最后解除与旧的存储池的对应关系。具体实施方式如下所述。
[0089] 本说明书实施例的访问存储池的方法还包括:
[0090] 响应于存储池修改指令,根据所述存储池修改指令确定目标存储池的待删除的存储盘;
[0091] 暂停对所述待删除的存储盘的写操作,并将所述待删除的存储盘中的数据移动至隐藏存储池对应的存储盘;
[0092] 在所述待删除的存储盘中的数据移动完成的情况下,解除所述待删除的存储盘与所述目标存储池的对应关系。
[0093] 在实际应用中,想要从旧的存储池中拿出一块存储盘,需要先确定不会再对其进行数据写入,才能将数据先备份,再清除其中的数据。可以建立一个特殊的存储池:隐藏存储池(BlackPool),所有从其他存储池删除的存储盘都会先进入到隐藏存储池中进行数据迁移,只有数据迁移完成的存储盘才允许加到其他的存储池中,隐藏存储池理论上不需要对用户可见。
[0094] 例如,默认存储池包括存储盘1,存储盘2、存储盘3和存储盘4,想要将存储盘3和存储盘4拿出,则先停止对存储盘3和存储盘4的写操作,再将其中的数据备份至隐藏存储池,然后清除存储盘3和存储盘4中的数据,接着将存储盘3与默认存储池的对应关系删除,将存储盘4与默认存储池的对应关系删除,并建立存储盘3与存储池A的对应关系,以及建立存储盘4与存储池A的对应关系。
[0095] 需要说明的是,数据备份至隐藏存储池之后,还需要将其中的数据移动至其他可用的存储池或者移动至新创建的存储池,以保证数据可访问。
[0096] 除此之外,由于超大集群都是跨机房甚至跨域的,存储池的配置也是一样,这种配置可以保证了机房或者域出现问题的时候数据仍然可以被访问,但是在正常的情况下跨机房甚至跨域的数据流动的延时高,而且处理不当会导致机房间带宽打满,本方案存储池支持数据位置亲和性的特质,即数据写入多副本放置在不同的机房或者域,在读取的时候会根据访问节点的位置信息就近访问池内的节点,在增加可靠性的同时提高性能。具体实施方式如下所述。
[0097] 进一步地,本说明书实施例的访问存储池的方法还包括:
[0098] 响应于文件读取指令,根据所述文件读取指令确定待读取用户文件;
[0099] 在所述待读取用户文件存在文件副本的情况下,根据所述拓扑树确定所述待读取文件对应的存储盘,以及所述文件副本对应的存储盘;
[0100] 从所述待读取文件对应的存储盘和所述文件副本对应的存储盘中,选择通信时延较小的存储盘读取所述用户文件。
[0101] 其中,文件副本可以理解为对用户文件进行的备份得到的文件副本,例如,对文件F2进行备份,将文件F2复制到多个存储节点的存储盘中,复制的文件称为文件副本;选择通信时延较小的存储盘可以理解为选择与存储盘所在的存储节点通信延迟较小的存储节点。
[0102] 在实际应用中,距离可以影响消息的响应延迟,所以可以通过判断通信延迟的方式确定进行通信的存储节点。
[0103] 例如,用户要读取文件F2,文件F2存在存储盘1中,文件F2存在三个副本,第一副本、第二副本、第三副本,其中,第一副本存在存储盘2中,第二副本存在存储盘3中,第一副本存在存储盘4中,存储盘2和存储盘1属于同一个存储池A,且分布于两个存储节点,存储盘1位于存储节点C1,存储盘2位于存储节点C2,存储盘3和存储盘4均位于存储节点C1,但是属于存储池B,用户侧相对于存储节点C1的通信延迟为41ms,而对于存储节点C2的通信延迟为
110ms,则选择存储节点C1中的存储盘1、存储盘3和存储盘4均可。
[0104] 本说明书实施例通过通信延迟确定存储节点的亲和性,以选择通信延迟较小的存储节点进行访问,提高了访问效率。
[0105] 进一步地,一般的产品只支持存储池内分层或者非分层的使用方式,两者是只选其一的,即如果配置了分层,那么固态硬盘(SSD)就会作为缓存(cache),写入后异步回刷到机械硬盘(HDD),或者SSD就只作为高速介质。而本方案的SSD即可以作为cache同时也作为高性能介质:即SSD作为cache的比例是动态的,如果SSD非cache的数据多,则cache就动态减少,存储节点报告给主服务器的cache能力动态降低,这样主服务器针对存储池的这个存储节点,会分配与之相配的请求压力。这种用法的价值在于很多应用写SSD的数据的生命周期短暂,并不需要下刷到HDD,但是又需要较高的QPS,而有的应用数据有长期保存的需求,这样需要一种方案可以同时满足这两种类型的数据模式共用一个存储池。具体实施方式如下所述。
[0106] 本说明书实施例的访问存储池的方法还包括:
[0107] 接收存储节点发送的第一类型的存储盘的缓存数据和用户数据的占用比例;
[0108] 根据所述占用比例调整所述第一类型的存储盘在对应的存储池中的存储空间。
[0109] 举例来说,存储节点C1的存储盘1为固态硬盘,其中存储盘1的缓存数据占全部数据的百分之十,存储节点C1将该占用比例报告给主服务器,主服务器判定存储盘1还存在较大的存储空间可以存储数据,则对存储盘1的存储能力对应的属性进行变更,以使其可以存储更多的用户数据。
[0110] 相应地,存储盘1的缓存数据占全部数据的百分之九十,主服务器判定存储盘1的存储空间不可以存储用户数据,则对存储盘1的存储能力对应的属性进行变更,以使其停止存储更多的用户数据。
[0111] 本说明书实施例通过动态调整硬盘类型为固态硬盘的存储盘的存储能力,以提高数据节点的数据存储效率。
[0112] 本说明书实施例提供一种访问存储池的方法以及分布式存储系统,其中所述访问存储池的方法应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述方法包括:响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并对所述目标数据与存储池的对应关系进行更新。由于存储管理侧管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向存储管理侧发出请求即可自动使存储管理侧根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,无需用户对数据进行其他数据流转操作,用户操作简单,占用网络资源少,提高了存储池之间数据迁移的效率。下述结合附图5,以本说明书提供的访问存储池的方法在元数据节点的应用为例,对所述访问存储池的方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种访问存储池的方法的处理过程流程图,具体包括以下步骤。
[0113] 步骤502:元数据节点响应于接收到对目标数据的数据迁移请求,根据预设的拓扑树确定所述目标数据对应的当前存储盘,根据所述拓扑树确定所述当前存储盘对应的当前存储池标识。
[0114] 举例来说,目标数据F存在当前存储池标识为A,用户将配置文件中的目标数据F对应的存储池标识更改为B,主服务器在扫描到这一更改的情况下,即接收到对目标数据的数据迁移请求。主服务器通过拓扑树确定目标数据F的当前存储盘为存储盘1,进而确定存储盘1属于当前存储池标识为A的存储池。
[0115] 步骤504:元数据节点根据所述目标存储池标识确定目标存储盘,将所述目标数据从所述当前存储盘,移动至所述目标存储盘。
[0116] 沿用上例,元数据节点通过元数据节点获取目标数据F存在当前存储池标识为A,与配置文件中目标数据F对应的存储池标识为B不一致,则确定存储池标识为B的存储池中的存储盘2,将目标数据F迁移至存储盘2。
[0117] 步骤506:元数据节点根据所述目标数据与所述目标存储盘的对应关系,和所述目标存储池标识与所述目标存储盘的对应关系更新所述拓扑树。
[0118] 在实际应用中,拓扑树实现元数据节点的元数据管理功能,则需要对拓扑树中的对应关系进行更新。
[0119] 沿用上例,在拓扑树中,将目标数据F与存储池标识A的对应关系删除,并添加目标数据F与存储池标识B的对应关系。
[0120] 由于元数据节点管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向元数据节点发出请求即可自动使元数据节点根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,无需用户对数据进行其他数据流转操作,用户操作简单,占用网络资源少,提高了存储池之间数据迁移的效率。
[0121] 与上述方法实施例相对应,本说明书还提供了访问存储池的装置实施例,图6示出了本说明书一个实施例提供的一种访问存储池的装置的结构示意图。如图6所示,该装置应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,该装置包括:
[0122] 确定模块602,被配置为响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;
[0123] 访问模块604,被配置为将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并
[0124] 对所述目标数据与存储池的对应关系进行更新。
[0125] 可选地,确定模块602,还被配置为:
[0126] 根据预设的拓扑树确定所述目标数据对应的当前存储盘;
[0127] 根据所述拓扑树确定所述当前存储盘对应的当前存储池标识。
[0128] 可选地,访问模块604,还被配置为:
[0129] 根据所述目标存储池标识确定目标存储盘;
[0130] 将所述目标数据从所述当前存储盘,移动至所述目标存储盘。
[0131] 可选地,访问模块604,还被配置为:
[0132] 根据所述目标数据与所述目标存储盘的对应关系,和所述目标存储池标识与所述目标存储盘的对应关系更新所述拓扑树。
[0133] 可选地,访问模块604,还被配置为:
[0134] 在每个所述存储池标识对应的拓扑树中,其他存储池标识与存储盘的对应关系,以及其他数据与存储盘的对应关系携带隐藏标签。
[0135] 可选地,访问模块604,还被配置为:
[0136] 响应于客户端的文件创建指令,根据所述文件创建指令确定所述目标存储池标识;
[0137] 将所述目标存储池标识发送至客户端,并获取所述客户端发送的存储盘的标识,其中,所述存储盘与所述目标存储池标识相对应,根据所述文件创建指令创建的目标文件与所述存储盘相对应;
[0138] 根据所述目标文件与所述存储盘的对应关系,和所述目标存储池标识与所述存储盘的对应关系更新所述拓扑树。
[0139] 可选地,访问模块604,还被配置为:
[0140] 在所述文件创建指令未携带所述目标存储池标识的情况下,将预设存储池标识作为所述目标存储池标识。
[0141] 可选地,访问模块604,还被配置为:
[0142] 响应于文件读取指令,根据所述文件读取指令确定待读取用户文件;
[0143] 在所述待读取用户文件存在文件副本的情况下,根据所述拓扑树确定所述待读取文件对应的存储盘,以及所述文件副本对应的存储盘;
[0144] 从所述待读取文件对应的存储盘和所述文件副本对应的存储盘中,选择通信时延较小的存储盘读取所述用户文件。
[0145] 可选地,访问模块604,还被配置为:
[0146] 接收存储节点发送的第一类型的存储盘的缓存数据和用户数据的占用比例;
[0147] 根据所述占用比例调整所述第一类型的存储盘在对应的存储池中的存储空间。
[0148] 可选地,访问模块604,还被配置为:
[0149] 响应于控制端的存储池创建指令,根据所述存储池创建指令确定待创建存储盘;
[0150] 根据所述待创建存储盘生成对应的存储池标识,并根据所述待创建存储盘与所述对应的存储池标识的对应关系更新所述拓扑树。
[0151] 可选地,访问模块604,还被配置为:
[0152] 响应于存储池修改指令,根据所述存储池修改指令确定目标存储池的待删除的存储盘;
[0153] 暂停对所述待删除的存储盘的写操作,并将所述待删除的存储盘中的数据移动至隐藏存储池对应的存储盘;
[0154] 在所述待删除的存储盘中的数据移动完成的情况下,解除所述待删除的存储盘与所述目标存储池的对应关系。
[0155] 本说明书实施例提供一种访问存储池的装置,应用于存储管理侧,其中,所述存储管理侧用于存储数据与存储池的对应关系以及存储池与存储盘的对应关系,不同存储池对应不同存储盘,所述方法装置响应于接收到对目标数据的数据迁移请求,获取目标数据的当前存储池标识以及目标存储池标识;将所述目标数据从所述当前存储池标识对应的存储盘迁移到所述目标存储池标识对应的存储盘,并对所述目标数据与存储池的对应关系进行更新。由于存储管理侧管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向存储管理侧发出请求即可自动使存储管理侧根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,无需用户对数据进行其他数据流转操作,用户操作简单,占用网络资源少,提高了存储池之间数据迁移的效率。
[0156] 根据本公开的另一方面,本说明书实施例提供分布式存储系统,所述系统包括存储管理侧和用户接口,所述存储管理侧包括管控端、管控接口、多个存储节点、主节点、元数据节点,其中,所述存储节点包括多个存储盘;
[0157] 所述管控端,被配置为通过所述管控接口向所述主节点、元数据节点和/或存储节点发送配置指令;
[0158] 所述存储节点,被配置为管理所述存储盘,并根据读写指令对所述管理盘进行读/写;
[0159] 所述主节点,被配置为通过接收用户通过所述用户接口发送的查询指令,根据所述查询指令从所述元数据节点中查询目标数据对应的存储池;
[0160] 所述元数据节点,被配置为管理用户数据与所述存储盘的对应关系,以及所述存储盘与存储池的对应关系。
[0161] 在一种可能的实现方式中,存储管理侧还被配置为:
[0162] 根据预设的拓扑树确定所述目标数据对应的当前存储盘;
[0163] 根据所述拓扑树确定所述当前存储盘对应的当前存储池标识。
[0164] 在一种可能的实现方式中,存储管理侧还被配置为:
[0165] 根据所述目标存储池标识确定目标存储盘;
[0166] 将所述目标数据从所述当前存储盘,移动至所述目标存储盘。
[0167] 在一种可能的实现方式中,存储管理侧还被配置为:
[0168] 根据所述目标数据与所述目标存储盘的对应关系,和所述目标存储池标识与所述目标存储盘的对应关系更新所述拓扑树。
[0169] 在一种可能的实现方式中,每个存储池标识对应一个所述拓扑树;
[0170] 在每个所述存储池标识对应的拓扑树中,其他存储池标识与存储盘的对应关系,以及其他数据与存储盘的对应关系携带隐藏标签。
[0171] 在一种可能的实现方式中,存储管理侧还被配置为:
[0172] 响应于客户端的文件创建指令,根据所述文件创建指令确定所述目标存储池标识;
[0173] 将所述目标存储池标识发送至客户端,并获取所述客户端发送的存储盘的标识,其中,所述存储盘与所述目标存储池标识相对应,根据所述文件创建指令创建的目标文件与所述存储盘相对应;
[0174] 根据所述目标文件与所述存储盘的对应关系,和所述目标存储池标识与所述存储盘的对应关系更新所述拓扑树。
[0175] 在一种可能的实现方式中,存储管理侧还被配置为:
[0176] 在所述文件创建指令未携带所述目标存储池标识的情况下,将预设存储池标识作为所述目标存储池标识。
[0177] 在一种可能的实现方式中,存储管理侧还被配置为:
[0178] 响应于文件读取指令,根据所述文件读取指令确定待读取用户文件;
[0179] 在所述待读取用户文件存在文件副本的情况下,根据所述拓扑树确定所述待读取文件对应的存储盘,以及所述文件副本对应的存储盘;
[0180] 从所述待读取文件对应的存储盘和所述文件副本对应的存储盘中,选择通信时延较小的存储盘读取所述用户文件。
[0181] 在一种可能的实现方式中,存储管理侧还被配置为:
[0182] 接收存储节点发送的第一类型的存储盘的缓存数据和用户数据的占用比例;
[0183] 根据所述占用比例调整所述第一类型的存储盘在对应的存储池中的存储空间。
[0184] 在一种可能的实现方式中,存储管理侧还被配置为:
[0185] 响应于控制端的存储池创建指令,根据所述存储池创建指令确定待创建存储盘;
[0186] 根据所述待创建存储盘生成对应的存储池标识,并根据所述待创建存储盘与所述对应的存储池标识的对应关系更新所述拓扑树。
[0187] 在一种可能的实现方式中,存储管理侧还被配置为:
[0188] 响应于存储池修改指令,根据所述存储池修改指令确定目标存储池的待删除的存储盘;
[0189] 暂停对所述待删除的存储盘的写操作,并将所述待删除的存储盘中的数据移动至隐藏存储池对应的存储盘;
[0190] 在所述待删除的存储盘中的数据移动完成的情况下,解除所述待删除的存储盘与所述目标存储池的对应关系。
[0191] 本公开实施例由于存储管理侧管理了各个存储池与数据的对应关系,从而在用户需要对数据进行迁移时,只需向存储管理侧发出请求即可自动使存储管理侧根据目标数据的存储池标识,自动将目标数据从所在的当前存储池迁移至目标存储池,无需用户对数据进行其他数据流转操作,用户操作简单,占用网络资源少,提高了存储池之间数据迁移的效率。
[0192] 上述为本实施例的一种访问存储池的装置的示意性方案。需要说明的是,该访问存储池的装置的技术方案与上述的访问存储池的方法的技术方案属于同一构思,访问存储池的装置的技术方案未详细描述的细节内容,均可以参见上述访问存储池的方法的技术方案的描述。
[0193] 图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
[0194] 计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi‑MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
[0195] 在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
[0196] 计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
[0197] 其中,处理器720用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述访问存储池的方法的步骤。
[0198] 上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的访问存储池的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述访问存储池的方法的技术方案的描述。
[0199] 本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述访问存储池的方法的步骤。
[0200] 上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的访问存储池的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述访问存储池的方法的技术方案的描述。
[0201] 本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述访问存储池的方法的步骤。
[0202] 上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的访问存储池的方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述访问存储池的方法的技术方案的描述。
[0203] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0204] 所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动存储盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0205] 需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
[0206] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0207] 以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。