一种数据存储的方法、装置和系统的制作方法
【技术领域】
[0001]本发明涉及存储技术领域,尤其涉及一种数据存储的方法、装置和系统。
【背景技术】
[0002]新兴的大规模分布式存储系统正面临的问题一将PB级的数据分散到成千上万个存储设备。现有的存储结构包括树形的分层拓扑,由虚拟的根节点开始,向下依次为机架、控制设备和磁盘,最终将数据放到磁盘中。当存储元数据时,往往采用基于副本的存储模式,当存储普通数据时,通常采用基于PT组的存储模式。通过分区算法将海量的数据分布到这些存储设备上,并保证分配数据的安全性、均衡性、类型均衡性和分散性。
[0003]在基于PT组的存储模式中,PT组中包括多个PT AT组中PT个数相同则为同一规模,由多个同一规模的PT组形成分区信息表。通过选择由不同规模的PT组形成的分区信息表,以及从选定的分区信息表中选择不同的PT组,进而根据选定的PT组中包括的磁盘信息,将数据存储在相应的磁盘中。
[0004]分区信息表中保存每个PT组中的每个PT排布的磁盘编号的元数据,每个PT需要4个Byte的空间保存其位于的磁盘编号,所以整个分区表的大小是Μ(ΡΤ组个数)*Ν(每个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为正整数且I < i SL,具体的,第一待存储数据中会携带第一待存储数据的安全信息等内容,控制设备根据这些内容可以确定每个待存储数据块对应的PT组中有几个PT,也即i的取值。获取每个待存储数据块对应的PT组的每个PT的分区信息。根据每个待存储数据块对应的PT组的每个PT的分区信息,将每个待存储数据块对应的PT组的每个PT存储至对应的外存储设备中。控制设备中仅通过基准分区表就可以获取各个PT组的PT的分区信息,从而解决了在内存和磁盘中存储多种不同规模的分区表的问题,释放了磁盘和内存的存储空间。
[0008]在一个可能的设计中,每个待存储数据块对应的PT组的每个PT的分区信息通过Dni=MT[n%St] [i] + (n/St) %D确定。其中,I < η < N,所述MT指示所述基准分区表,所述D为所述存储系统中外存储设备的总数,所述Dni指示所述第一待存储数据的第η个待存储数据块对应的分区组的第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]本申请中,分区(英文:parti t 1n,缩写: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]在一个例子中,接收用户设备发送的待存储数据,例如10M大小。控制设备通过对待存储数据分块后,获取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(32bit)空间来记录,其中前2个bi t用于记录外存储设备的状态。例如,“00”代表初始添加外存储设备,“01”代表新添加的夕卜存储设备,“10”代表故障的外存储设备,“11”代表删除的外存储设备。后30个bi t用于记录外存储设备编号、控制设备编号、机架编号等。
[0037]根据基准分区表,获取每个待存储数据块对应的PT组的每个PT的分区信息包括:
[0038]Dn