一种数据存储的方法、装置和系统转让专利

申请号 : CN201610046390.5

文献号 : CN105718221B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董如良余思王工艺

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种数据存储的方法、装置和系统。方法应用于存储系统中,存储系统包括控制设备和至少两个外存储设备。控制设备接收待存储数据,并将待存储数据分为N个待存储数据块。每个分区组包括i个分区。控制设备根据基准分区表,获取每个待存储数据块对应的分区信息。根据分区信息,将每个待存储数据块存储至对应的外存储设备中。本发明实施例通过对基准分区表进行计算,从而获取所需要的分区组中各个分区的分区信息,减少了存储系统中存储分区信息所需的空间。

权利要求 :

1.一种数据存储的方法,所述方法应用于存储系统中,存储系统包括控制设备和至少两个外存储设备,控制设备用于接收用户设备发送的待存储数据,并通过外存储设备对待存储数据进行存储,其特征在于,所述方法包括:控制设备获取基准分区表,所述基准分区表用于记录St个包括了L个分区的分区组中每个分区的分区信息,所述St为预设值,所述L为所述存储系统中分区数量最多的分区组的分区的数量,所述分区信息包括外存储设备编号;

所述控制设备接收第一待存储数据,并将所述第一待存储数据分为N个待存储数据块,每个待存储数据块对应一个分区组,每个分区组包括i个分区,所述N为大于1的自然数,所述i为正整数且1≤i≤L;

所述控制设备根据所述基准分区表,获取所述每个待存储数据块对应的分区组的每个分区的分区信息;

所述控制设备根据所述每个待存储数据块对应的分区组的每个分区的分区信息,将所述每个待存储数据块对应的分区组的每个分区存储至对应的外存储设备。

2.根据权利要求1所述的方法,其特征在于,所述根据所述基准分区表,获取所述每个待存储数据块对应的分区组的每个分区的分区信息包括:通过Dni=MT[n%St][i]+(n/St)%D确定所述第一待存储数据的第n个待存储数据块对应的分区组的第i个分区的分区信息,其中,1≤n≤N,所述MT指示所述基准分区表,所述D为所述存储系统中外存储设备的总数。

3.根据权利要求1或2所述的方法,其特征在于,所述控制设备存储了所述存储系统中每个外存储设备的元数据信息,所述元数据信息包括外存储设备编号和外存储设备状态信息,所述外存储设备状态信息指示外存储设备添加至所述存储系统或外存储设备从所述存储系统删除;

所述获取基准分区表包括:根据所述控制设备中存储的每个外存储设备的元数据信息,获取所述基准分区表。

4.一种控制设备,其特征在于,所述控制设备应用于存储系统,所述存储系统包括至少两个外存储设备,所述控制设备用于接收用户设备发送的待存储数据,并通过所述至少两个外存储设备对所述待存储数据进行存储;所述控制设备包括:处理器,存储器,通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信;

所述通信接口用于与所述至少两个外存储设备和所述用户设备通信;

所述存储器用于存储程序;

当装置运行时,所述处理器用于执行所述存储器存储的所述程序,以执行权利要求1至

3任一项所述的方法。

5.一种控制装置,所述控制装置应用于存储系统,存储系统包括至少两个外存储设备,控制装置用于接收用户设备发送的待存储数据,并通过至少两个外存储设备对所述待存储数据进行存储,其特征在于,所述控制装置包括:获取单元,用于获取基准分区表,所述基准分区表用于记录St个包括了L个分区的分区组中每个分区的分区信息,所述St为预设值,所述L为所述存储系统中分区数量最多的分区组的分区的数量,所述分区信息包括外存储设备编号;

处理单元,用于接收第一待存储数据,并将所述第一待存储数据分为N个待存储数据块,每个待存储数据块对应一个分区组,每个分区组包括i个分区,所述N为大于1的自然数,所述i为正整数且1≤i≤L;还用于,根据所述基准分区表,获取所述每个待存储数据块对应的分区组的每个分区的分区信息;

发送单元,用于根据所述每个待存储数据块对应的分区组的每个分区的分区信息,将所述每个待存储数据块对应的分区组的每个分区存储至对应的外存储设备。

6.根据权利要求5所述的装置,其特征在于,所述处理单元根据所述基准分区表,获取所述每个待存储数据块对应的分区组的每个分区的分区信息包括:通过Dni=MT[n%St][i]+(n/St)%D确定所述第一待存储数据的第n个待存储数据块对应的分区组的第i个分区的分区信息,其中,1≤n≤N,所述MT指示所述基准分区表,所述D为所述存储系统中外存储设备的总数。

7.根据权利要求5或6所述的装置,其特征在于,所述获取单元存储有所述存储系统中每个外存储设备的元数据信息,所述元数据信息包括外存储设备编号和外存储设备状态信息,所述外存储设备状态信息指示外存储设备添加至所述存储系统或外存储设备从所述存储系统删除;所述获取单元获取基准分区表包括:根据所述装置中存储的每个外存储设备的元数据信息,获取所述基准分区表。

说明书 :

一种数据存储的方法、装置和系统

技术领域

[0001] 本发明涉及存储技术领域,尤其涉及一种数据存储的方法、装置和系统。

背景技术

[0002] 新兴的大规模分布式存储系统正面临的问题—将PB级的数据分散到成千上万个存储设备。现有的存储结构包括树形的分层拓扑,由虚拟的根节点开始,向下依次为机架、控制设备和磁盘,最终将数据放到磁盘中。当存储元数据时,往往采用基于副本的存储模式,当存储普通数据时,通常采用基于PT组的存储模式。通过分区算法将海量的数据分布到这些存储设备上,并保证分配数据的安全性、均衡性、类型均衡性和分散性。
[0003] 在基于PT组的存储模式中,PT组中包括多个PT。PT组中PT个数相同则为同一规模,由多个同一规模的PT组形成分区信息表。通过选择由不同规模的PT组形成的分区信息表,以及从选定的分区信息表中选择不同的PT组,进而根据选定的PT组中包括的磁盘信息,将数据存储在相应的磁盘中。
[0004] 分区信息表中保存每个PT组中的每个PT排布的磁盘编号的元数据,每个PT需要4个Byte的空间保存其位于的磁盘编号,所以整个分区表的大小是M(PT组个数)*N(每个PT组中的PT个数)*4Byte。
[0005] 但是,存储系统是一个动态的系统,系统有可能发生存储扩容—增加机架、控制设备和磁盘,也有可能发生减容—规模减小或设备损坏而减少存储设备。如果PT组规模很大,或者PT组个数是不断增长的,则存储分区信息表需要的存储空间也随之增长。

发明内容

[0006] 本发明实施例提供了一种数据存储方法、装置和系统,可以实现根据基准分区表确定存储待存储数据所需的分区信息。
[0007] 一方面,本发明实施例提供了一种数据存储的方法,所述方法应用于存储系统。存储系统包括控制设备和至少两个外存储设备,控制设备用于接收用户设备发送的待存储数据,并通过外存储设备对待存储数据进行存储。所述方法包括所述控制设备获取基准分区表。基准分区表中包括了St个PT组,每个PT组中包括L个PT,基准分区表中存储了每个PT对应的分区信息,每个PT对应的分区信息包括存储该PT的外存储设备的编号。其中,St为预设的值,具体可以根据用户的需求自行设定,L为存储系统中PT数量最多的PT组的PT的数量。控制设备接收第一待存储数据,并将接收的第一待存储数据分为N个待存储数据块,具体的,控制设备中预设有分块规则,根据分块规则可知N的取值。通过基准分区表,为每个待存储数据块确定一个PT组。其中,每个PT组中包括i个PT,所述i为正整数且1≤i≤L,具体的,第一待存储数据中会携带第一待存储数据的安全信息等内容,控制设备根据这些内容可以确定每个待存储数据块对应的PT组中有几个PT,也即i的取值。获取每个待存储数据块对应的PT组的每个PT的分区信息。根据每个待存储数据块对应的PT组的每个PT的分区信息,将每个待存储数据块对应的PT组的每个PT存储至对应的外存储设备中。控制设备中仅通过基准分区表就可以获取各个PT组的PT的分区信息,从而解决了在内存和磁盘中存储多种不同规模的分区表的问题,释放了磁盘和内存的存储空间。
[0008] 在一个可能的设计中,每个待存储数据块对应的PT组的每个PT的分区信息通过Dni=MT[n%St][i]+(n/St)%D确定。其中,1≤n≤N,所述MT指示所述基准分区表,所述D为所述存储系统中外存储设备的总数,所述Dni指示所述第一待存储数据的第n个待存储数据块对应的分区组的第i个分区的分区信息。从而通过上述公式,确定待存储数据的每个PT组中的每个PT的分区信息。
[0009] 在一个可能的设计中,控制设备中存储有存储系统中每个外存储设备的元数据信息。每个外存储设备的元数据信息包括该外存储设备的编号和该外存储设备的状态信息。外存储设备的状态信息指示外存储设备添加至所述存储系统或外存储设备从所述存储系统删除。控制设备通过控制设备中存储的每个外存储设备的元数据信息来确定基准分区表。从而在无须存储基准分区表,可以通过元数据信息获取基准分区表,节省了控制设备的存储空间。
[0010] 在一个可能的设计中,控制设备内存储的外存储设备的元数据信息包括外存储设备的状态信息和外存储设备编号。当存储系统中增加新的外存储设备时,控制设备将新增加的外存储设备的编号,以及新增加的外存储设备的状态信息存储至元数据信息中。控制设备将根据新增加的外存储设备的元数据信息对基准分区表进行更新,并根据更新后的基准分区表,将存储系统中的数据向新增加的外存储设备迁移。从而在增加存储系统的存储空间的同时,保证存储系统中数据的均衡性。
[0011] 在一个可能的设计中,控制设备内存储的外存储设备的元数据信息包括外存储设备的状态信息和外存储设备编号。当存储系统中删除部分外存储设备或部分外存储设备故障时,需要修改外存储设备的元数据的状态信息。控制设备还需要将基准分区表中故障或删除的外存储设备所对应的PT删除,以更新基准分区表,并为删除的PT更换外存储设备。从而保证存储系统中,数据的安全。
[0012] 另一方面,本发明实施例还提供了一种存储介质,该存储介质中存储了用于执行前述方面中数据存储的方法或其各个可能的设计的程序代码。

附图说明

[0013] 图1为本发明实施例提供的一种存储系统结构图;
[0014] 图2为本发明实施例提供的一种PT组基准分区表;
[0015] 图3为本发明实施例提供的一种通过基准分区表确定的分区信息。;
[0016] 图4为本发明实施例提供的一种分区算法流程图;
[0017] 图5为本发明实施例提供的一种分区算法中确定PT中包括的外存储设备编号的方法流程图;
[0018] 图6为本发明实施例提供的在同一层级下的所有节点进行比较的方法;
[0019] 图7为本发明实施例提供的控制设备中存储的外存储设备的元数据;
[0020] 图8为本发明实施例提供的一种元数据存储方法;
[0021] 图9为本发明实施例提供的一种控制装置;
[0022] 图10为本发明实施例提供的一种控制设备示意图。

具体实施方式

[0023] 下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
[0024] 本申请中,分区(英文:part i t ion,缩写:PT)指代磁盘的基本存储单位,多个分区可以组成一个PT组。
[0025] 本发明实施例提供了一种数据存储的方法、装置和系统。该方法和系统中包括基准分区表,通过基准分区表,可以确定不同规模的各PT组的分区信息。根据确定的分区信息,获取分区信息中的磁盘信息对数据进行输入/输出(英文:input/output,缩写:I/O)操作。
[0026] 图1为本发明实施例提供的一种存储系统结构图。所述存储系统包括控制设备和至少两个外存储设备,外存储设备可以是磁盘或固态硬盘(英文:Sol id State Drives,缩写:SSD)。控制设备与用户设备连接,用户设备通过控制设备进行数据的I/O操作。控制设备将用户设备发送的数据经过处理后,发送至第一磁盘至第三磁盘中的一个或多个进行存储。
[0027] 在本发明的实施例中,实例性的,采用磁盘作为外存储设备。
[0028] 控制设备通过第一接口与用户设备连接,从而接收用户设备发出的请求,以及根据用户设备发送的请求,将具体的操作请求发送至处理器等。控制设备还通过第二接口与第一磁盘、第二磁盘和第三磁盘连接,从而将处理过的数据发送至第一磁盘、第二磁盘或第三磁盘中的一个或多个进行存储。控制控制设备与用户设备连接的第一接口和控制控制设备与磁盘连接的第二接口的形式不限。例如,第一接口或第二接口可以是以太网接口。
[0029] 在一个例子中,控制设备可以包括处理器、内存和内存储设备。内存用于缓存基准分区表和供处理器调用的指令。
[0030] 处理器用于接收用户设备发送的待存储数据,将待存储数据分为N个待存储数据块,每个待存储数据块对应一个PT组。通过基准分区表确定每个PT组中各个PT的分区信息,将每个待存储数据块存储到PT组中各PT所对应的磁盘。
[0031] 内存储设备用于存储外存储设备的元数据信息,元数据信息包括外存储设备编号和外存储设备状态信息。在本例子中即为第一磁盘、第二磁盘和第三磁盘的元数据信息,以及在第一磁盘、第二磁盘和第三磁盘的状态发生变化时,存储外存储设备的状态变化信息。从而在控制设备掉电等情况下,内存储设备能够为处理器提供第一磁盘、第二磁盘和第三磁盘的元数据。处理器根据获得的外存储设备的元数据,构建存储系统的拓扑关系,根据拓扑关系,更新基准分区表。
[0032] 为了区分本发明实施例中外存储设备的磁盘和内存储设备的磁盘,将内存储设备的磁盘命名为控制设备磁盘。
[0033] 在本发明的实施例中,第一接口接收用户设备发送的数据写入的请求后,处理器将根据所能存储的数据块的大小对接收的数据进行分块。同时,处理器还要根据用户发送的数据中包括的安全信息,确定将数据块存储至PT个数不同的PT组中。例如,每个块要求存储至8个PT的PT组中,处理器将根据算法(例如轮询算法或哈希算法)为该数据块从基准分区表中找到合适的PT组。获取该PT组中前8个PT的分区信息,获取每个PT的分区信息中包括的外存储设备信息。将数据块存储至8个PT的分区信息中对应的外存储设备。
[0034] 在一个例子中,接收用户设备发送的待存储数据,例如100M大小。控制设备通过对待存储数据分块后,获取25个待存储数据块,每个待存储数据块的大小为4M。例如,待存储数据的安全信息要求将每个待存储数据块存储在有8个PT的PT组中,其中6个PT为待存储数据块中的数据,2个PT为待存储数据块对应的校验数据。从基准分区表中选取25个PT组,用于该25个待存储数据块的存储。从基准分区表的PT组中选取需要存储的PT组的方法可以有多种,本发明对此不作限定。在确定存储待存储数据块的PT组后,确定各个PT组的前8个PT。根据获取的每个PT组中前8个PT的分区信息将数据及校验数据存储至控制设备磁盘。
[0035] 其中,每个PT的分区信息包括了该PT对应的外存储设备编号。若该PT的分区信息对应的外存储设备编号为唯一,则该PT的分区信息仅包括外存储设备编号。若该PT的分区信息对应的外存储设备编号不是唯一,则该PT的分区信息包括了外存储设备编号、服务器编号和机架编号。例如,当不同的机架、服务器复用了外存储设备编号,则不同PT需要通过机架编号、服务器编号以及外存储设备编号来区别。
[0036] 在一个例子中,每个PT的分区信息都需要4Byte(32bi t)空间来记录,其中前2个bi t用于记录外存储设备的状态。例如,“00”代表初始添加外存储设备,“01”代表新添加的外存储设备,“10”代表故障的外存储设备,“11”代表删除的外存储设备。后30个bi t用于记录外存储设备编号、控制设备编号、机架编号等。
[0037] 根据基准分区表,获取每个待存储数据块对应的PT组的每个PT的分区信息包括:
[0038] Dni=MT[n%St][i]+(n/St)%D;
[0039] MT指示所述基准分区表,基准分区表用于记录St个包括了L个分区的分区组中每个分区的分区信息。St为预设值,L为所述存储系统中分区数量最多的分区组的分区的数量。
[0040] 例如,要求存储的最大规模的数据需要在一个PT组中分为32个PT,其中28个PT用于存储待存储数据块,4个PT用于存储待存储数据块对应的校验数据,于是基准分区表中的L为32。
[0041] i为正整数且1≤i≤L,D为存储系统中外存储设备的总数。当待存储数据分为N个待存储数据块时,1≤n≤N。Dni指示第n个待存储数据块对应的PT组的第i个PT的分区信息。
[0042] MT[n%St][i]用于从基准分区表中获取PT组序号为n的PT组中的第i个PT的分区信息。其中n%St用于表示对n/St结果取余以确定基准分区表中的PT组的序号。例如,当n为105,St为100时,取余结果为5,则获取基准分区表中的序号为5的PT组。
[0043] 当确定某一个PT组后,还需要从该PT组中获取该PT组中的i个PT。在本发明的实施例中,通常获取PT组中的前i个PT。例如,当i为10时,取余结果为5时,获取基准分区表中序号为5的PT组中的前10个PT。
[0044] n/St用于表示对采用分数算法的结果取商。例如,当n为5,St为2时,n/St的商为2,余为1。从而对上述确定的某一个PT组中包括的PT对应的磁盘号进行偏移,偏移量为取商的结果。例如,在取余过程中,确定的PT组中各PT的磁盘号为“1、2、5、6、7”,当偏移量为“1”时,则该PT组中各PT实际对应的磁盘号为“2、3、6、7、8”。在一个例子中,为了使偏移的磁盘号不大于存储系统中总的盘号,通过(n/St)%D用于表示对n/St取商的结果取余,根据取余的结果对PT组中各PT对应的磁盘编号进行偏移。例如,当n为10000,St为100时,对序号为10000的PT组的各个PT的盘号的偏移为100;若整个存储系统中磁盘总数为“80”个,则实际偏移量时“100”对“80”取余,结果为“20”。此时,实际对序号为10000的PT组的各个PT的磁盘编号的偏移为20。
[0045] 在一个例子中,图2为本发明实施例提供的一种基准分区表,存储系统中包括60个外存储设备。如图2所示,基准分区表包括10个PT组,每个PT组中包括6个PT。当控制设备接收一个待存储数据,该待存储数据数据分成12个数据块,每个数据块对应一个PT组,每个PT组包括5个PT。于是,确定12个数据块在PT组中存储的位置,例如,分别是序号为1、2、3、4、5、6、7、8、9、10、11、12的PT组。于是,根据图2所示的基准分区表以及分区计算公式计算新的分区信息。
[0046] 第一个PT组时,分别获取第一至第五个PT的分区信息:
[0047] D11=MT[1%10][1]+(1/10)%60,从而获取PT组中的第一个PT的分区信息;
[0048] D12=MT[1%10][2]+(1/10)%60,从而获取PT组中的第二个PT的分区信息;
[0049] D13=MT[1%10][3]+(1/10)%60,从而获取PT组中的第三个PT的分区信息;
[0050] D14=MT[1%10][4]+(1/10)%60,从而获取PT组中的第四个PT的分区信息;
[0051] D15=MT[1%10][5]+(1/10)%60,从而获取PT组中的第五个PT的分区信息。
[0052] 在上述计算过程中,对1%10取余为1,于是选取基准分区表中第一行PT组中的PT。
[0053] 对(1/10)取商为0,对0%60取余为0,于是对第一个PT组中各PT的盘号的偏移为0。结果为“00****A11、00****B12、00****C13、00****D14、00****E15”。
[0054] 需要说明的是,所列举的获取的各个pt的分区信息为省略写法,所述分区信息中包括外存储设备编号,还可以包括服务器编号和机架编号,其中“00”可表示外存储设备状态,中间省略的部分用于表示机架编号和服务器编号,“A11”、“B12”等可用于表示磁盘编号。
[0055] 第二个PT组时,分别获取第一至第五个PT的分区信息:
[0056] D21=MT[2%10][1]+(2/10)%60,从而获取PT组中的第一个PT的分区信息;
[0057] D22=MT[2%10][2]+(2/10)%60,从而获取PT组中的第二个PT的分区信息;
[0058] D23=MT[2%10][3]+(2/10)%60,从而获取PT组中的第三个PT的分区信息;
[0059] D24=MT[2%10][4]+(2/10)%60,从而获取PT组中的第四个PT的分区信息;
[0060] D25=MT[2%10][5]+(2/10)%60,从而获取PT组中的第五个PT的分区信息。
[0061] 在上述计算过程中,对2%10取余为2,于是选取基准分区表中第二行的PT组中的PT。
[0062] 对(2/10)取商为0,对0%60取余为0,于是对第二个PT组中各PT的磁盘编号的偏移为0。结果为“00****B21、00****C22、00****D23、00****E24、00****F25”。
[0063] 第三个PT组时,分别获取第一至第五个PT的分区信息:
[0064] D41=MT[3%10][1]+(3/10)%60,从而获取PT组中的第一个PT的分区信息;
[0065] D42=MT[3%10][2]+(3/10)%60,从而获取PT组中的第二个PT的分区信息;
[0066] D43=MT[3%10][3]+(3/10)%60,从而获取PT组中的第三个PT的分区信息;
[0067] D44=MT[3%10][4]+(3/10)%60,从而获取PT组中的第四个PT的分区信息;
[0068] D45=MT[3%10][5]+(3/10)%60,从而获取PT组中的第五个PT的分区信息;
[0069] 对3%10取余为3,于是选取基准分区表中第三行的PT组中的前5个PT。
[0070] 对(3/10)取商为0,对0%60取余为0,于是对第三行的PT组中个PT的磁盘编号的偏移为0:结果为“00****C31、00****D32、00****E33、00****F34、00****G35”。
[0071] 第四PT组至第十一PT组的计算方法与前述计算方法相同,在此省略。具体如图3所示。
[0072] 第十二PT组时,分别计算第一至第五个PT的分区信息:
[0073] D121=MT[12%10][1]+(12/10)%60,从而获取PT组中的第一个PT的分区信息;
[0074] D122=MT[12%10][2]+(12/10)%60,从而获取PT组中的第二个PT的分区信息;
[0075] D123=MT[12%10][3]+(12/10)%60,从而获取PT组中的第三个PT的分区信息;
[0076] D124=MT[12%10][4]+(12/10)%60,从而获取PT组中的第四个PT的分区信息;
[0077] D125=MT[12%10][5]+(12/10)%60,从而获取PT组中的第五个PT的分区信息。
[0078] 对12%10取余为2,于是选取基准分区表中的第二行的PT组中PT。
[0079] 对(12/10)取商为1,对1%10取余为1,于是对第二PT组的各PT的磁盘编号的偏移为1。结果为“00****B22、00****C23、00****D24、00****E24、00****F26”。
[0080] 通过对上述确定的12个PT组进行计算,得到的分区信息的结果如图3所示。图3为本发明实施例提供的一种通过基准分区表确定的分区信息。
[0081] 在一个例子中,当其中一个数据块中的一个PT的数据丢失时,可以根据同一PT组中的其他数据进行恢复,数据的恢复形式根据数据在存储时采用的保护机制而不同。数据的保护机制包括校验和备份两种形式。例如,当采用校验的保护形式时,可以根据校验数据和其它数据块中包括的内容,通过算法(例如异或算法)确定丢失数据块的内容,从而进行恢复。
[0082] 在一个例子中,一个待存储数据块的内容为“0101”,需要将该数据存储在一个规模为5的PT组中。其中第一个PT存储“0”、第二个PT存储“1”、第三个PT存储“0”、第四个PT存储“1”。第五个PT存储该数据的校验数据,校验数据指示每个PT的数据存储的位置和数据的排布信息,数据的排布信息可以是数据排布的规律。
[0083] 在一个例子中,若存储系统中包括28中不同规模的PT组,PT组中的PT的个数从5个到32个,每种规模的PT组均一个。每种规模的PT组的数量(即同规模的PT组个数)为12000,则:
[0084] 按照现有技术的方法,需要在控制设备中存储不同规模的分区信息表。存储的不同规模的分区信息表的大小为:
[0085] 12000*(5+6+-+32)4=12000*518*4=24864000(Byte)≈23.7(MB)
[0086] 而在本发明中,控制设备中仅需存储一张基准分区表。若基准分区表PT组数量为2024,规模为32,则需要存储在内存中的基准分区表的大小为:
[0087] 2048*4*32=262144(Byte)≈0.25(MB)
[0088] 从而节省了控制设备中的存储空间。
[0089] 在本发明的实施例中,控制设备中还存储了外存储设备的元数据信息,基准分区表还可以通过外存储设备的元数据信息计算而来。图3为本发明实施例提供的一种外存储设备的元数据信息。如图3所示,外存储设备的元数据信息包括外存储设备号和外存储设备状态。
[0090] 在本发明的实施例中,还包括一种控制设备磁盘中仅存储了外存储设备的元数据信息和外存储设备的状态变化信息,而没有存储基准分区表的情况。根据外存储设备的元数据信息和外存储设备的状态变化信息,计算出基准分区表。当外存储设备状态发生变化、控制设备掉电并重新上电等情况后,根据外存储设备的变化信息,重新计算基准分区表。
[0091] 相对于控制设备中同时存储磁盘的元数据信息和基准分区表,在控制设备中也可以无须存储基准分区表,而是通过外存储设备的元数据信息计算基准分区表,能够进一步节省控制设备的存储空间。
[0092] 在本发明的实施例中,配置存储系统前,需要获取该存储系统存储的数据的量、以及规模最大的数据等,从而确定存储系统中包括的外存储设备的数量。在存储系统工作前,还需要根据存储系统中外存储设备的数量以及存储数据时所需要的最多的PT组数据等,确定基准分区表中PT组中PT的个数以及基准分区表中包括的PT组数量。
[0093] 在一个例子中,通过一种算法流程确定基准分区表中各PT组中PT的分区信息。图4为本发明实施例提供的一种分区算法流程图。如图4所示,在本发明的实施例中,当确定基准分区表的规模后,执行步骤401,启动算法。再执行步骤402,初始化全局变量。再通过执行步骤403,构建存储系统拓扑关系。存储系统的拓扑关系是根据固化存储到控制设备磁盘的外存储设备的元数据信息确定。执行步骤404,根据拓扑关系,计算每个存储节点期望排布的PT数量。执行步骤405,从确定基准分区表的规模中,选取确定一个PT组,遍历该PT组中的每一个PT。遍历该PT组后,再执行步骤406,为此PT组中的一个PT逐层寻找合适的OSD(Object-based Storage Device,对象存储设备)进行排布。对一个PT组中的一个PT找到合适的OSD排布后,执行步骤407判断是否对该PT组中的每个PT找到合适的OSD排布。若结果为否,则执行步骤408,遍历下一个PT,以及执行步骤406,为此PT逐层寻找合适的OSD排布。若结果为是则执行步骤409,判断是否为所有的PT组中的所有PT找到合适的OSD排布。若结果为是,则执行步骤411,结束算法。若结果为否,则执行步骤410,遍历下一个PT组,以及执行步骤405,遍历此PT组中的所有PT,为PT组中的一个PT逐层寻找合适的OSD排布。
[0094] 在本发明的实施例中,对PT组中的每个PT寻找合适的OSD排布可以采用多种不同的具体实施方法。例如,可以选择一个PT排布最少的外存储设备。
[0095] 图5为本发明实施例提供的一种分区算法中确定PT中包括的外存储设备编号的方法流程图。如图5所示,在一个例子中,在对一个PT寻找合适的OSD进行排布时,通过步骤501构建存储系统中所有外存储设备的拓扑关系。在构建存储系统中所有外存储设备的拓扑关系后,通过执行步骤502将相同安全层级的所有节点都加入到候选队列中。执行步骤504,从候选队列中选取一个不冲突的节点,记为第一节点。执行步骤505,将本层级剩余的所有节点与第一节点比较,从所有候选节点中选取一个最终的节点。在与同一安全层级的所有节点比较后,执行步骤506,潘丹最终确定的节点是否为OSD节点。若不为OSD节点,则执行步骤503,对该节点的下一安全层级的所有子节点进行比较,比较方式与上述相同。在遍历完所有的节点,并确定一个节点后,再次确定该节点是否为OSD节点。若不是OSD节点则重复上述的步骤,若是OSD节点,则执行步骤507,则确定该节点下的磁盘为该PT存储的节点。
[0096] 图6为本发明实施例提供的在同一层级下的所有节点进行比较的方法。如图6所示,在执行图5所示的505步骤时,将本层级剩余的所有节点与第一节点比较具体可以是:通过执行步骤601,从剩余节点中选取一个节点记为第二节点,将第二节点与第一节点比较。执行步骤602判断第二节点有冲突(已有同组PT排布在此节点中,安全性差),若结果为是,则执行步骤601从剩余节点中选择一个新的节点替换第二节点,用新的第二节点与第一节点比较。若结果为否则执行步骤603,判断第二节点的已排布PT数权重小于第一节点。若结果为是则执行步骤611,将第二节点替换为第一节点。通过执行步骤612判断是否存在剩余节点,若存在剩余节点则执行步骤601,从剩余节点中选取新的节点记为第二节点与替换后的第一节点比较。若不存在剩余节点则将该节点范围图5所示的步骤506继续执行。
[0097] 若结果为否则执行步骤604,判断第二节点已排布PT类型权重小于第一节点。若结果为是则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否则执行步骤605,执行步骤605,判断第二节点的已排布PT数是否小于第一节点。若执行步骤605的结果为是,则执行步骤611,执行步骤611的方法与上述相同,在此不再敖述。若执行605的结果为否,则执行步骤606,判断第二节点已排布PT类型权重大于第一节点,若结果为是则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否则执行步骤605,执行步骤607,判断第二节点的与本组已排布的PT的相关度之和小于第一节点和第二节点的拓扑编号小于第一节点。若执行步骤607的结果为是,则执行步骤611,执行步骤611的方法与上述相同,在此不再敖述。若执行步骤607的结果为否则执行步骤608,执行步骤608,以判定第二节点的与本组已怕不PT的相关度之和是否大于第一节点。若执行步骤608的结果为是,则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否,则执行步骤609,执行步骤609,以判定第二点的拓扑编号小于第一节点。若执行步骤609的结果为是,则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若执行步骤609的结果是否,则执行步骤612,确定是否遍历完成本层级的所有节点。若没有遍历本层级的所有节点,存在剩余节点,则执行步骤601,从剩余节点中选取新的节点替换原有的第二节点与第一节点比较。若不存在剩余节点则将该节点范围图5所示的步骤506继续执行。
[0098] 在一个例子中,图7为本发明实施例提供的控制设备中存储的外存储设备的元数据信息。如图7所示,所述外存储设备为磁盘,存储系统中包括200个磁盘,每个磁盘需要保存对应的元数据信息。存储每个磁盘的元数据信息需要4Byte,从而所需要的存储空间大小为:
[0099] 200*4=800Byte≈7.6*10-4(MB)
[0100] 根据保存的每个盘元数据信息,计算出基准分区表,从而相对于存储基准分区表,直接存储外存储设备的元数据,通过外存储设备的元数据计算出基准分区表能够更大的节省内存和控制设备磁盘中存储的元数据信息。
[0101] 以上提供了一种根据外存储设备的元数据信息来获取基准分区表的方法,实际运用中也可以采用该方法的各种可替代方案,本申请中仅为实例性的介绍其中的一种方法。
[0102] 在本发明的实施例中,当初始系统开始工作后,对正在运行的系统增加外存储设备、删除外存储设备和外存储设备故障时,还需要将相应的外存储设备的元数据信息更新至控制设备。存储系统根据存储至控制设备磁盘的外存储设备的元数据对基准分区表进行修改,以及根据修改后的基准分区表,对外存储设备中的数据进行转移。
[0103] 对基准分区表的修改可以是根据修改后的外存储设备的元数据进行,选择相应状态的外存储设备,确定该外存储设备的编号。根据确定的编号,确定该编号在基准分区表中各个PT组的各个PT。对确定的PT所进行重新的分区计算,所述重新的分区计算是为该PT重新选择外存储设备。
[0104] 在一个例子中,在将存储系统中的一个外存储设备删除时,还需要修改基准分区表,以及,将相应外存储设备中的数据进行迁移。当确定一个外存储设备被删除时,该外存储设备的信息将会被发送至控制设备中。控制设备将修改该磁盘的状态。例如,将其状态修改为“11”,表示删除。处理器将根据修改后的外存储设备的状态确定删除的磁盘,并获取该外存储设备的盘号。通过获取的外存储设备的磁盘号,确定基准分区表中为该磁盘号的PT组的PT,将所有为该磁盘号的PT组的PT加入到候选队列中。从候选队列中选取一个PT,对该PT从存储系统中获取合适的OSD进行排布。在确定到某一个OSD后,将根据获取的外存储设备对基准分区表中的相应外存储设备进行修改。在完成一个PT的修改后,再从候选队列中选取下一个PT,对新选定的PT从存储系统中获取合适的OSD进行排布。在确定一个PT的新的外存储设备时,将该PT的数据从原外存储设备迁移到新选定的外存储设备。
[0105] 在一个例子中,为删除的外存储设备中包括的PT选定新的外存储设备的方法可以如图5所示,在一个例子中,在对一个PT寻找合适的OSD进行排布时,通过步骤501构建存储系统中所有外存储设备的拓扑关系。在构建存储系统中所有外存储设备的拓扑关系后,通过执行步骤502将相同安全层级的所有节点都加入到候选队列中。执行步骤504,从候选队列中选取一个不冲突的节点,记为第一节点。执行步骤505,将本层级剩余的所有节点与第一节点比较,从所有候选节点中选取一个最终的节点。在与同一安全层级的所有节点比较后,执行步骤506,潘丹最终确定的节点是否为OSD节点。若不为OSD节点,则执行步骤503,对该节点的下一安全层级的所有子节点进行比较,比较方式与上述相同。在遍历完所有的节点,并确定一个节点后,再次确定该节点是否为OSD节点。若不是OSD节点则重复上述的步骤,若是OSD节点,则执行步骤507,则确定该节点下的磁盘为该PT存储的节点。
[0106] 图6为本发明实施例提供的在同一层级下的所有节点进行比较的方法。如图6所示,在执行图5所示的505步骤时,将本层级剩余的所有节点与第一节点比较具体可以是:通过执行步骤601,从剩余节点中选取一个节点记为第二节点,将第二节点与第一节点比较。执行步骤602判断第二节点有冲突(已有同组PT排布在此节点中,安全性差),若结果为是,则执行步骤601从剩余节点中选择一个新的节点替换第二节点,用新的第二节点与第一节点比较。若结果为否则执行步骤603,判断第二节点的已排布PT数权重小于第一节点。若结果为是则执行步骤611,将第二节点替换为第一节点。通过执行步骤612判断是否存在剩余节点,若存在剩余节点则执行步骤601,从剩余节点中选取新的节点记为第二节点与替换后的第一节点比较。若不存在剩余节点则将该节点范围图5所示的步骤506继续执行。
[0107] 若结果为否则执行步骤604,判断第二节点已排布PT类型权重小于第一节点。若结果为是则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否则执行步骤605,执行步骤605,判断第二节点的已排布PT数是否小于第一节点。若执行步骤605的结果为是,则执行步骤611,执行步骤611的方法与上述相同,在此不再敖述。若执行605的结果为否,则执行步骤606,判断第二节点已排布PT类型权重大于第一节点,若结果为是则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否则执行步骤605,执行步骤607,判断第二节点的与本组已排布的PT的相关度之和小于第一节点和第二节点的拓扑编号小于第一节点。若执行步骤607的结果为是,则执行步骤611,执行步骤611的方法与上述相同,在此不再敖述。若执行步骤607的结果为否则执行步骤608,执行步骤608,以判定第二节点的与本组已怕不PT的相关度之和是否大于第一节点。若执行步骤608的结果为是,则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若结果为否,则执行步骤609,执行步骤609,以判定第二点的拓扑编号小于第一节点。若执行步骤609的结果为是,则执行步骤601,执行步骤601的方法与上述相同,在此不再敖述。若执行步骤609的结果是否,则执行步骤612,确定是否遍历完成本层级的所有节点。若没有遍历本层级的所有节点,存在剩余节点,则执行步骤601,从剩余节点中选取新的节点替换原有的第二节点与第一节点比较。若不存在剩余节点则将该节点范围图5所示的步骤506继续执行。
[0108] 上述将删除外存储设备中的数据进行迁移的方法仅是对本发明实施例中分区表及基准分区表进行修改的一个举例,不用于对本发明的限定,对基准分区表的修改以及对外存储设备中数据的迁移不仅限于上述方法。例如,在一种方法中,根据修改后的外存储设备的元数据信息,重新计算基准分区表,重新计算基准分区表的方法可以与上述算法相同。根据新算出的基准分区表,重新确定分区信息,根据相应的分区信息将外存储设备中的数据进行迁移。
[0109] 当存储系统中的外存储设备出现故障时,由于外存储设备的故障使磁盘不能使用或部分不能使用时,还需要对外存储设备中的数据进行迁移。当整个外存储设备故障时,修改基准分区表以及将外存储设备中的数据迁移的方法与将外存储设备删除后对基准分区表的修改以及将外存储设备中数据迁移的方法相同。
[0110] 当存储系统中的外存储设备需要新增加时,由于新增加的外存储设备和原有外存储设备中的数据不均衡导致不能发挥系统的最佳性能。同时,由于新增加的外存储设备并没有在基准分区表中,导致数据将不能存储至新增加的外存储设备中。由此,需要对新增加的外存储设备更新基准分区表,以及对存储系统中的数据进行均衡。
[0111] 在一个例子中,存储系统包括100个磁盘,当重新添加100块盘时,还可以将原100块外存储设备中包括的PT平均的分布到新的外存储设备中,以保证整个存储系统中数据的均衡。
[0112] 在一种确定需要迁移的PT的方法中,例如,原有存储系统中的100块外存储设备中,设定每个外存储设备的权重为存储整个系统总PT数的1/100。新增加100个盘时,将该外存储设备的权重修改为存储整个系统中总PT数的0.5/100。控制控制设备在修改外存储设备权重后,遍历所有的外存储设备,确定超出权重的外存储设备,将所有超出权重的外存储设备加入到候选队列中。从候选队列中的外存储设备选取一个外存储设备,确定该外存储设备在基准分区表中包括几个PT。再对该外存储设备在基准分区表中包括的几个PT建立列表。从列表中选取一个PT进行迁移,在确定该PT的迁移的目标外存储设备后,还需要将该PT在基准分区表中进行修改。
[0113] 在完成一个PT的迁移后,判断该外存储设备的权重是否超出系统设定的权重。若任然超出系统设定的权重,则从PT的列表中选取下一个PT进行迁移,修改该PT所对应的基准分区表。再次判断该外存储设备的权重,直到该外存储设备的权重小于系统设定的权重时,再从该候选队列中选取下一个外存储设备。确定该磁盘在基准分区表中包括几个PT。再对该外存储设备在基准分区表中包括的几个PT建立列表。从列表中选取一个进行迁移,直到该外存储设备的权重小于系统设定的权重再选取队列中的下一个外存储设备进行迁移,直至遍历候选队列中的所有外存储设备。
[0114] 将PT从一个外存储设备中选取一个需要迁移的PT,所采用的方法可以是选取一个最大或最小的PT。
[0115] 在一种方法中,从外存储设备中选取需要迁移的PT可以是,遍历该外存储设备中的每个PT,选取一个确定为第一PT,并在该外存储设备中选取另一个为第二PT。对第一PT和第二PT进行比较,当第二节点的已排布PT数权重大于第一节点、第二节点已排布PT类型权重大于第一节点、第二节点的与本组已排布的PT的相关度之和大于第一节点和第二节点的拓扑编号大于第一节点,则从外存储设备中选取一个为第三PT,将第三PT与第一PT比较。
[0116] 当第二节点的已排布PT数权重小于第一节点、第二节点已排布PT类型权重小于第一节点、第二节点的与本组已排布的PT的相关度之和小于第一节点和第二节点的拓扑编号小于第一节点,则用第二节点替换第一节点。并从外存储设备中选取一个第三PT,将第二PT与第三PT比较。
[0117] 在将第三PT与第一PT比较或第二PT与第三PT比较时,比较的内容与上述相同,直至与外存储设备中的每个PT进行比较,并确定一个PT时,将该PT确定为需要迁移的PT。
[0118] 在确定需要迁移的PT后,还需要确定将该PT迁入的外存储设备。例如,在选定一个需要迁移的PT后,通过算法为该PT从存储系统中重新确定一个外存储设备,并根据重新确定的存储空间将基准分区表进行修改。根据确定的外存储设备,将该需要迁移的PT发送到确定的外存储设备上。
[0119] 从存储系统中重新确定一个进行存储的外存储设备的方法可以是根据外存储设备的状态,选取确定状态下的所有外存储设备。例如,选取所有状态为“01”的外存储设备,通过用“01”表示新添加的外存储设备。将“01”状态下的所有外存储设备的节点加入到候选队列中,从候选队列中选取一个标记为第一节点。再从候选队列中选取另一个节点,记为第二节点,将第一节点和第二节点进行比较。
[0120] 当第二节点的已排布PT数权重大于第一节点、第二节点已排布PT类型权重大于第一节点、第二节点的与本组已排布的PT的相关度之和大于第一节点和第二节点的拓扑编号大于第一节点,则从候选队列中选取另一个节点为第三节点,将第三节点与第一节点比较。
[0121] 当第二节点的已排布PT数权重小于第一节点、第二节点已排布PT类型权重小于第一节点、第二节点的与本组已排布的PT的相关度之和小于第一节点和第二节点的拓扑编号小于第一节点,则用第二节点替换第一节点。并从磁盘中选取一个第三节点,将第二节点与第三节点比较。
[0122] 在将第三节点与第一节点比较或第二节点与第三节点比较时,比较的内容与上述相同,直至与每个节点进行比较,并确定一个节点时,将该节点确定为需要迁移的PT迁入的外存储设备。
[0123] 在确定迁入的外存储设备后,还需要将基准分区表中的相应PT所在的外存储设备进行修改。以及将相应的数据进行迁移。
[0124] 当迁移完成一个外存储设备中的一个PT后,再根据上述方法确定需要迁移的同一外存储设备中的或不同外存储设备中的PT,以及为该确定的PT寻找合适的OSD排布,并进行迁移。重复上述步骤,直至将所有外存储设备中所存储的PT数占整个总外存储设备数的0.5/100完成本次迁移。
[0125] 上述将PT向新加入的外存储设备迁移,使存储系统中的数据分布更加均衡,仅是本发明的一种具体实施例,也可以不将PT进行迁移。
[0126] 在本发明的实施例中,在系统运行的过程中,若增加了外存储设备后,还需要将新增加的外存储设备的元数据固化存储至控制设备磁盘中。固化存储至控制设备磁盘的数据包括增加外存储设备的磁盘状态和磁盘序号。在一个例子中,新添加外存储设备的磁盘状态为“01”,用于表示新添加的磁盘。若添加的外存储设备为100个时,则需要存储到控制设备的数据为:
[0127] 100*4=400(Byte)≈3.8*10-4(MB)
[0128] 在本发明的实施例中,在系统运行的过程中,若外存储设备发生了故障,还需要将故障的外存储设备的元数据固化存储到控制设备磁盘。固化存储到控制设备磁盘的数据包括改变外存储设备的磁盘状态和磁盘序号。在一个例子中,故障外存储设备的磁盘状态为“10”,用于表示故障后的外存储设备。若故障的外存储设备为300个时,则需要存储到控制设备的数据为:
[0129] 300*4=1200(Byte)≈11.4*10-4(MB)
[0130] 在本发明的实施例中,在系统运行的过程中,若有外存储设备被删除时,还需要将被删除的外存储设备的元数据固化存储到控制设备磁盘。固化存储到控制设备磁盘的数据包括被删除的外存储设备的磁盘状态和磁盘序号。在一个例子中,被删除的外存储设备的磁盘状态为“11”,用于表示被删除后的外存储设备。若被删除的外存储设备为100个时,则需要存储到控制设备的数据为:
[0131] 100*4=400(Byte)≈3.8*10-4(MB)
[0132] 这样,在存储系统的运行过程中,若存储系统的初始盘为200个、故障盘为300个、新增加盘100个和被删除的盘100个。整个存储系统在运行过程中需要存储的数据为:
[0133] (200+100+300+100)*3=2800(Byte)≈2.67*10-3(MB)
[0134] 从而在内存空间和控制设备磁盘紧张时,能够比直接存储基准分区表更大的节省存储空间。
[0135] 图8为本发明实施例提供的一种元数据存储方法。如图8所示,所述方法应用于存储系统中,存储系统通过接收用户设备的请求对数据进行存储。所述存储系统包括控制设备和外存储设备。控制设备接收用户设备的请求后,根据控制设备中保存的外存储设备的元数据信息,将用户设备发送的数据根据算法确定的PT组将数据存储至不同的外存储设备中。
[0136] S801,控制设备获取基准分区表,所述基准分区表用于记录St个包括了L个PT的PT组中每个PT的分区信息,所述St为预设值,所述L为所述存储系统中PT数量最多的PT组的PT的数量,所述分区信息包括外存储设备编号。
[0137] 在本发明的实施例中,基准分区表包括St个PT组,每个PT组中包括L个PT,基准分区表记录了每个PT中的分区信息。在本发明的实施例中,基准分区表中PT组的组数即St根据基准分区表的规模和存储系统中包括的若干外存储设备决定。只要包括存储系统中的所有外存储设备即可,本发明在此不作限定。
[0138] 在本发明的实施例中,基准分区表可以直接固化存储到控制设备的磁盘中,从而在需要时,将基准分区表从控制设备的磁盘中读取到内存,供处理器调用。基准分区表也可以根据固化存储到磁盘的元数据信息计算,将计算的基准分区表保存在内存中。从而在下次启动或掉电并重新上电后,根据外存储设备的元数据信息重新计算基准分区表。
[0139] 控制设备的磁盘中存储有外存储设备的元数据信息,存储至控制设备磁盘的外存储设备的元数据信息包括外存储设备的状态和磁盘编号。计算基准分区表时,根据外存储设备的元数据信息确定存储系统的拓扑关系,根据拓扑关系和需要建立的基准分区表的规模,利用分区算法,计算出基准分区表。
[0140] 在一个例子中,分区算法可以是,当确定需要建立的基准分区表的规模和PT组数后,则启动算法流程,构建存储系统拓扑关系。根据拓扑关系,确定每个节点排布的PT数量。遍历PT组中的每一个PT,为每个PT逐层寻找合适的OSD(Object-based Storage Device,对象存储设备)进行排布。对一个PT组中的所有PT找到合适的OSD进行排布后,再对下一个PT组中的每个PT寻找合适的OSD进行排布。循环遍历所有的PT组,直至将基本分区表中包括的每个PT组中的每个PT寻找到合适的OSD进行排布后,算法结束。
[0141] S802,所述控制设备接收第一待存储数据,并将所述第一待存储数据分为N个待存储数据块,每个待存储数据块对应一个PT组,每个PT组包括i个PT,所述N为大于1的自然数,所述i为正整数且1≤i≤L。
[0142] 在本发明的实施例中,在获得基准分区表后,获取需要存储的待存储数据,将根据所能存储的数据块的大小对接收的数据进行分块,从而形成待存储数据块。通过算法为每个待存储数据块从基准分区表中寻找PT组,在本发明的实施例中,所述同一待存储数据形成的多个待存储数据块中,每个待存储数据块分别存储在不同的PT组中。
[0143] 同时,根据需要存储的数据要求的数据保护方法,从寻找到的PT组中获取相应个数的PT,即从一个PT组的L个PT中,获取i个PT,所述i为正整数且1≤i≤L。在一个例子中,获取的相应个数的PT为该PT组的前相应各个的PT。
[0144] S803,所述控制设备根据所述基准分区表,获取所述每个待存储数据块对应的PT组的每个PT的分区信息。
[0145] 控制设备在确定获取的PT和PT组后,还需要获取该确定的么个PT组的每个PT中包括的分区信息。
[0146] 每个PT的分区信息包括了该PT对应的外存储设备编号、服务器编号、机架编号等。若该PT的分区信息对应的外存储设备编号为唯一,则该PT的分区信息仅存储外存储设备编号。若该PT的分区信息对应的外存储设备编号不是唯一,则该PT的分区信息包括了外存储设备编号、服务器编号或机架编号中的多个。例如,当不同的机架、服务器重复用了相同的外存储设备编号,则该两个相同外存储设备编号的PT的分区信息中还包括服务器编号和机架编号。
[0147] S804,所述控制设备根据所述每个待存储数据块对应的分区组的每个分区的分区信息,将所述每个待存储数据块对应的分区组的每个分区存储至对应的外存储设备中。
[0148] 根据获取的分区信息中包括的外存储设备编号或外存储设备编号与服务器编号和机架编号,确定每个待存储数据块所要存储的外存储设备。将数据发送至相应的外存储设备进行存储。
[0149] 在一个例子中,控制设备接收用户设备发送的请求,该请求包括需要读取的数据的信息。控制设备根据数据的信息确定该数据形成的分块,以及根据数据的保护方式确定该数据存储的PT组的规模。使用与数据存储时使用的相同的算法,计算该数据形成的数据块所在的PT组。根据数据的保护方式确定PT组的规模。获取上述数据块在在PT组的相应规模的PT。根据获取的PT组和PT,确定该数据存储的外存储设备。控制设备向确定的数据存储的外存储设备发送指令,使外存储设备向控制设备返回相应的数据,控制设备根据外存储设备返回的相应的数据经过处理后再发送给用户设备。
[0150] 图9为本发明实施例提供的一种控制装置。如图8所示,控制装置应用于所述存储系统。存储系统包括存储控制装置和外存储设备。存储控制装置用于接收用户设备发送的数据,对数据进行处理后发送至外存储设备,通过外存储设备对数据进行存储。
[0151] 控制装置包括:
[0152] 获取单元901,用于获取基准分区表,所述基准分区表用于记录St个包括了L个PT的PT组中每个PT的分区信息,所述St为预设值,所述L为所述存储系统中PT数量最多的PT组的PT的数量,所述分区信息包括外存储设备编号。
[0153] 处理单元902,用于接收第一待存储数据,并将所述第一待存储数据分为N个待存储数据块,每个待存储数据块对应一个PT组,每个PT组包括i个分区,所述N为大于1的自然数,所述i为正整数且1≤i≤L。以及,所述服务器根据所述基准分区表,获取所述每个待存储数据块对应的PT组的每个PT的分区信息。
[0154] 发送单元903,用于根据所述每个待存储数据块对应的PT组的每个PT的分区信息,将所述每个待存储数据块对应的PT组的每个PT存储至对应的外存储设备中。
[0155] 图10为本发明实施例提供的一种控制设备示意图。
[0156] 如图10所示,所述设备包括:处理器1001、存储器1002、通信接口1003和总线1004。其中,处理器1001、存储器1002和通信接口1003通过总线1004实现彼此之间的通信连接。
[0157] 处理器1001可以采用通用的中央处理器(Central Process ing Unit,CPU),微处理器,应用专用集成电路(Appl icat ion Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现前述本发明方法实施例所提供的技术方案。
[0158] 存储器1002可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器902可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明前述方法实施例提供的任一可选技术方案的程序代码保存在存储器1002中,并由处理器1001来执行。通信接口1003用以与其他交换机或控制控制设备通信。
[0159] 总线1004可包括一通路,在设备各个部件(例如处理器1001、存储器1002和通信接口1003)之间传送信息。
[0160] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0161] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0162] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。