一种分布式存储系统中管理异构副本的方法及装置转让专利

申请号 : CN201410206795.1

文献号 : CN105095294B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程宁韩盛中

申请人 : 中兴通讯股份有限公司

摘要 :

本发明提供了一种分布式存储系统中管理异构副本的方法及装置,其中方法包括:获取用于存储文件的副本的写请求参数;根据写请求参数从元数据服务器获取分布式存储系统中每个存储服务器的位置信息;根据写请求参数将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本;根据从元数据服务器获取的存储服务器的位置信息,将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上。通过本发明的实施例可以将一个文件在多个存储服务器中分别存储多个不同的异构副本,在读取文件的异构副本时,可以根据需要读取对应的异构副本,能够有效提高用户处理数据的工作效率。

权利要求 :

1.一种分布式存储系统中管理异构副本的方法,其特征在于,包括:获取用于存储文件的副本的写请求参数;

根据所述写请求参数从元数据服务器获取分布式存储系统中每个存储服务器的位置信息;

根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本,文件的异构副本是指对文件的副本进行数据格式的转换得到的副本,文件的异构副本中的内容与文件的副本以及文件中的内容相同,每个异构副本适用于不同的应用场景;

根据从所述元数据服务器获取的所述存储服务器的位置信息,将转换得到的多个不同格式的所述文件的异构副本分别存储在指定的存储服务器上。

2.根据权利要求1所述的方法,其特征在于,在根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤之前,所述方法还包括:根据所述写请求参数判断是否启用所述文件的异构副本;

如果启用所述文件的异构副本,则进入根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤。

3.根据权利要求1或2所述的方法,其特征在于,所述根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤为:根据所述写请求参数将所述文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的所述文件的异构副本,并缓存转换得到的多个不同格式的所述文件的异构副本。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取用于读取文件的副本的读请求参数;

根据所述读请求参数从所述元数据服务器获取要读的所述存储服务器的位置信息;

根据所述读请求参数判断是否启用所述文件的异构副本;

如果启用所述文件的异构副本,则根据从所述元数据服务器获取要读的存储服务器的位置信息,从指定的存储服务器上读取所述文件的异构副本。

5.根据权利要求4所述的方法,其特征在于,所述写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式,其中所述文件的副本的格式包括:按照行模式存储、按照列模式存储或者按照块模式存储;

所述读请求参数包括:文件句柄、文件偏移量、文件长度和所述文件的副本的读取模式,所述读取模式包括按照行模式读取副本、按照列模式读取副本或者按照块模式读取副本。

6.一种分布式存储系统中管理异构副本的装置,其特征在于,包括:写请求获取模块,用于获取用于存储文件的副本的写请求参数;

第一位置获取模块,用于根据所述写请求参数从元数据服务器获取分布式存储系统中每个存储服务器的位置信息;

格式转换模块,用于根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本,文件的异构副本是指对文件的副本进行数据格式的转换得到的副本,文件的异构副本中的内容与文件的副本以及文件中的内容相同,每个异构副本适用于不同的应用场景;

副本存储模块,用于根据从所述元数据服务器获取的所述存储服务器的位置信息,将转换得到的多个不同格式的所述文件的异构副本分别存储在指定的存储服务器上。

7.根据权利要求6所述的装置,其特征在于,所述装置还包括:

第一判断模块,用于根据所述写请求参数判断是否启用所述文件的异构副本;如果启用所述文件的异构副本,则触发所述格式转换模块。

8.根据权利要求6或7所述的装置,其特征在于,所述格式转换模块进一步用于根据所述写请求参数将所述文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的所述文件的异构副本,并缓存转换得到的多个不同格式的所述文件的异构副本。

9.根据权利要求6所述的装置,其特征在于,所述装置还包括:

读请求获取模块,用于获取用于读取文件的副本的读请求参数;

第二位置获取模块,用于根据所述读请求参数从所述元数据服务器获取要读的所述存储服务器的位置信息;

第二判断模块,用于根据所述读请求参数判断是否启用所述文件的异构副本;

副本读取模块,用于如果启用所述文件的异构副本,则根据从所述元数据服务器获取要读的所述存储服务器的位置信息,从指定的存储服务器上读取所述文件的异构副本。

10.根据权利要求9所述的装置,其特征在于,所述写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式,其中所述文件的副本的格式包括:按照行模式存储、按照列模式存储或者按照块模式存储;

所述读请求参数包括:文件句柄、文件偏移量、文件长度和所述文件的副本的读取模式,所述读取模式包括按照行模式读取副本、按照列模式读取副本或者按照块模式读取副本。

说明书 :

一种分布式存储系统中管理异构副本的方法及装置

技术领域

[0001] 本发明涉及数据存储技术领域,尤其涉及一种分布式存储系统中管理异构副本的方法及装置。

背景技术

[0002] 大数据在通讯、互联网、金融、医疗、军工、科学等各个领域均有应用。大数据分析相比于传统的数据仓库应用,具有数据量大、查询分析复杂等特点。而针对分布式文件系统来说,要管理的自然是海量数据。就以电信的流量分析数据为例,每天都会有新的数据,每个地区也会有不同的数据,时间一长比如说十年的数据,就会是海量数据。如果运营商要根据这些数据统计出规律,指定更合理的计费方案,那么,这些庞大的数据存储在分布式文件系统中,怎样提高读取效率是一件很重要的事情。
[0003] 相关技术中,这些庞大的表格以一些大文件的方式存储,一开始存储时,是以追加写的方式存入,而需要读取时,再顺序读出来。如果写入时是按行的方式写进去,顺序读出来的时候就是以行的格式读出来。但是如果业务想分析每一列的数据,就会比较麻烦,需要读出来重新整合,数据量越大工作量也就越大。

发明内容

[0004] 鉴于上述技术问题,本发明提供了一种克服上述技术问题或者至少部分地解决上述技术问题的分布式存储系统中管理异构副本的方法及装置,通过将一个文件在多个存储服务器中分别存储多个不同的异构副本,在读取文件的异构副本时,可以根据需要读取对应的异构副本,能够有效提高用户处理数据的工作效率。
[0005] 依据本发明的一个方面,提供了一种分布式存储系统中管理异构副本的方法,包括:
[0006] 获取用于存储文件的副本的写请求参数;
[0007] 根据所述写请求参数从元数据服务器获取每个存储服务器的位置信息;
[0008] 根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本;
[0009] 根据从所述元数据服务器获取的所述存储服务器的位置信息,将转换得到的多个不同格式的所述文件的异构副本分别存储在指定的存储服务器上。
[0010] 可选地,在根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤之前,所述方法还包括:
[0011] 根据所述写请求参数判断是否启用所述文件的异构副本;
[0012] 如果启用所述文件的异构副本,则进入根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤。
[0013] 可选地,所述将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本的步骤为:
[0014] 根据所述写请求参数将所述文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的所述文件的异构副本,并缓存转换得到的多个不同格式的所述文件的异构副本。
[0015] 可选地,所述方法还包括:
[0016] 获取用于读取文件的副本的读请求参数;
[0017] 根据所述读请求参数从所述元数据服务器获取要读的存储服务器的位置信息;
[0018] 根据读请求参数判断是否启用所述文件的异构副本;
[0019] 如果启用所述文件的异构副本,则根据从所述元数据服务器获取要读的存储服务器的位置信息,从指定的存储服务器上读取所述文件的异构副本。
[0020] 可选地,所述写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式,其中所述文件的副本的格式包括:按照行模式存储、按照列模式存储或者按照块模式存储;
[0021] 所述读请求参数包括:文件句柄、文件偏移量、文件长度和所述文件的副本的读取模式,所述读取模式包括按照行模式读取副本、按照列模式读取副本或者按照块模式读取副本。
[0022] 依据本发明的另一个方面,还提供了一种分布式存储系统中管理异构副本的装置,包括:
[0023] 写请求获取模块,用于获取用于存储文件的副本的写请求参数;
[0024] 第一位置获取模块,用于根据所述写请求参数从元数据服务器获取每个所述存储服务器的位置信息;
[0025] 格式转换模块,用于根据所述写请求参数将所述文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本;
[0026] 副本存储模块,用于根据从所述元数据服务器获取的所述存储服务器的位置信息,将转换得到的多个不同格式的所述文件的异构副本分别存储在指定的存储服务器上。
[0027] 可选地,所述装置还包括:
[0028] 第一判断模块,用于根据所述写请求参数判断是否启用所述文件的异构副本;如果启用所述文件的异构副本,则触发所述格式转换模块;。
[0029] 可选地,所述格式转换模块进一步用于根据所述写请求参数将所述文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的所述文件的异构副本,并缓存转换得到的多个不同格式的所述文件的异构副本。
[0030] 可选地,所述装置还包括:
[0031] 读请求获取模块,用于获取用于读取文件的副本的读请求参数;
[0032] 第二位置获取模块,用于根据所述读请求参数从所述元数据服务器获取要读的存储服务器的位置信息;
[0033] 第二判断模块,用于根据所述读请求参数判断是否启用所述文件的异构副本;
[0034] 副本读取模块,用于如果启用所述文件的异构副本,则根据从所述元数据服务器获取要读的存储服务器的位置信息,从指定的存储服务器上读取所述文件的异构副本。
[0035] 可选地,所述写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式,其中所述文件的副本的格式包括:按照行模式存储、按照列模式存储或者按照块模式存储;
[0036] 所述读请求参数包括:文件句柄、文件偏移量、文件长度和所述文件的副本的读取模式,所述读取模式包括按照行模式读取副本、按照列模式读取副本或者按照块模式读取副本。
[0037] 本发明的有益效果是:在本发明的实施例中,由于客户端程序可以将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本,并将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上,通过将一个文件存多个异构副本,每个异构副本之间是可以相互转换,多个异构副本起到冗余的作用,以提高文件系统的可靠性。而且由于每个存储服务器中存储的文件的异构副本的格式不同,使得用户可以根据需要(例如根据数据分析的需要)选择读取文件的异构副本,例如当用户需要按行分析文件的副本时,就可以选择读取按行模式存储的文件的异构副本;当用户需要按列分析文件的副本时,就可以选择读取按列模式存储的文件的异构副本;当用户需要按块分析文件的副本(一些多维表格数据)时,就可以选择读取按块模式存储的文件的异构副本。由于用户可以根据需要选择读取文件的异构副本,能够有效提高用户处理数据的工作效率,特别适用于海量的规则性数据操作和大数据库的管理。

附图说明

[0038] 图1表示本发明的实施例中分布式存储系统中管理异构副本的方法中存储文件的异构副本的流程图之一;
[0039] 图2表示本发明的实施例中分布式文件系统中的副本冗余架构的示意图;
[0040] 图3表示本发明的实施例中按行模式存储的文件的异构副本的示意图;
[0041] 图4表示本发明的实施例中按列模式存储的文件的异构副本的示意图;
[0042] 图5表示本发明的实施例中按块模式存储的文件的异构副本的示意图;
[0043] 图6表示本发明的实施例中分布式存储系统中管理异构副本的方法中存储文件的异构副本的流程图之二;
[0044] 图7表示本发明的实施例中分布式存储系统中管理异构副本的方法中读取文件的异构副本的流程图;
[0045] 图8表示本发明的实施例中分布式存储系统中管理异构副本的方法中修复异构副本的流程图;以及
[0046] 图9表示本发明的实施例中分布式存储系统中管理异构副本的装置的框图。

具体实施方式

[0047] 依据本发明的一个方面公开了一种分布式存储系统中管理异构副本的方法,首先获取用于存储文件的副本的写请求参数;然后根据写请求参数从元数据服务器获取每个存储服务器的位置信息;然后根据写请求参数将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本;最后根据从元数据服务器获取的存储服务器的位置信息,将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上。
[0048] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0049] 如图1所示,为本发明的实施例中分布式存储系统中管理异构副本的方法中存储文件的异构副本的流程图之一,该方法中各个步骤的执行主体可以是客户端程序,该方法包括:
[0050] 步骤S101、获取用于存储文件的副本的写请求参数。
[0051] 在本发明的实施例中,文件的副本与文件具有相同的内容,副本技术是一种数据管理机制,将数据项复制多份分别放在分布式系统的多个节点(存储服务器)上,用以提高系统的可靠性和访问效率。
[0052] 具体地,在步骤S101中该客户端程序调用文件系统的写数据接口,以获取用于存储文件的副本的写请求参数,其中该写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式等,其中文件的副本的格式包括:按照行模式存储(可参见图3)、按照列模式存储(可参见图4)或者按照块模式存储(可参见图4)。
[0053] 步骤S103、根据写请求参数从元数据服务器获取分布式存储系统中每个存储服务器的位置信息。
[0054] 通常情况下,为了确保文件系统的可靠性,可以将不同格式的文件的副本存储在不同的存储服务器中,即每个存储服务器存储一种格式的文件的副本,例如写请求参数中还包括文件的副本的格式,此时客户端程序可以根据该写请求参数通过元数据服务器查询与文件的副本的格式对应的多个存储服务器的位置信息,并将查询得到的多个存储服务器的位置信息作为文件的副本的存储位置。
[0055] 如图2所示,为本发明的实施例中分布式文件系统中的副本冗余架构的示意图,其中分布式文件系统包括:客户端程序201、元数据服务器203、以及与客户端程序201连接的多个存储服务器205,其中元数据服务器203中可以记录分布式文件系统中每个存储服务器205的位置信息,存储服务器205用于存储文件的异构副本或文件的副本。
[0056] 步骤S105、根据写请求参数将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本。
[0057] 在本发明的实施例中,文件的异构副本是指对文件的副本进行数据格式的转换得到的副本,文件的异构副本中的内容与文件的副本以及文件中的内容相同,其中每个异构副本可以适用于不同的应用场景(例如按行模式存储文件的副本、按列模式存储文件的副本、按块模式存储文件的副本等),同样每个异构副本之间也可以互为冗余。
[0058] 可选地,在本发明的一个实施例中,在步骤S105中,根据写请求参数将文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的文件的异构副本,并缓存转换得到的多个不同格式的文件的异构副本。
[0059] 如图3所示,为本发明的实施例中按行模式存储的文件的副本的示意图,其中文件的副本2中的内容以表格的方式存储,该表格包括多个行21和多个列23,其中行21包括a行、b行、c行和d行,列23包括1列、2列、3列和4列,其中a行记录的内容:50、28、352和120,b行记录的内容:21、99、66和112,c行记录的内容:32、52、123和13,d行记录的内容:65、23、87和344。可选地,在步骤S105中将如图3所示的文件的副本2按照行模式存储的格式转换成如图
3所示的文件的异构副本3,并缓存转换得到的文件的异构副本3,文件的异构副本3记录的内容:50、28、352、120、21、99、66、112、32、52、123、13、65、23、87和344,当然可以理解的是,在本发明的实施例中并不限定文件的副本2中记录的具体内容。
[0060] 如图4所示,为本发明的实施例中按列模式存储的文件的副本的示意图,其中文件的副本2中的内容以表格的方式存储,表格包括多个行21和多个列23,行21包括a行、b行、c行和d行,列23包括1列、2列、3列和4列,其中1列记录的内容:50、21、32和65,2列记录的内容:28、99、52和23,3列记录的内容:352、66、123和87,4列记录的内容:120、112、13和344。可选地,在步骤S105中将如图4所示的文件的副本2按照列模式存储的格式转换成如图4所示的文件的异构副本4,并缓存转换得到的文件的异构副本4,文件的异构副本4中记录的内容:50、21、32、65、28、99、52、23、352、66、123、87、120、112、13和344,当然可以理解的是,在本发明的实施例中并不限定文件的副本2中记录的具体内容。
[0061] 如图5所示,表示本发明的实施例中按块模式存储的文件的副本的示意图,其中文件的副本2中的内容以表格的方式存储,该表格包括多个行21和多个列23,其中行21包括a行、b行、c行和d行,列23包括1列、2列、3列和4列,图中对多个行和多个列进行划分得到多个块,其中块25记录的内容:50、28、21和99,块27记录的内容:352、120、66和112,块29记录的内容:123、13、87和344,块31记录的内容:32、52、65和23。可选地,在步骤S105中将如图5所示的文件的副本2按照块模式存储的格式转换成如图5所示的文件的异构副本5,并缓存转换得到的文件的异构副本5,文件的异构副本5中记录的内容:50、28、21、99、352、120、66、112、32、52、65、23、123、13、87和344,当然可以理解的是,在本发明的实施例中并不限定文件的副本2中记录的具体内容。当然可以理解的是,图3~图5中仅列举了三种格式转换的方式,在本发明的实施例中并不限定格式转换的方式。在具体实施时,用户可以根据具体情况来调整格式转换的方式。
[0062] 可选地,在本发明的实施例中,执行完步骤S101之后,可以进入步骤S103,或者进入步骤S105,或者同时进入步骤S103和步骤S105,即在本发明的实施例中并不限定上述步骤S103和步骤S105之间的先后顺序。
[0063] 步骤S107、根据从元数据服务器获取的存储服务器的位置信息,将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上。
[0064] 继续参见图2,客户端程序201可以根据从元数据服务器203获取的存储服务器的位置信息,将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器205上,即每个存储服务器205中存储不同格式的文件的异构副本。
[0065] 在本发明的实施例中,由于客户端程序可以将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本,并将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上,通过将一个文件存多个异构副本,而每个异构副本的内容都是一样的,多个异构副本起到冗余的作用,以提高文件系统的可靠性。而且在本发明的实施例中用户可以根据需要选择读取文件的副本,例如当用户需要按行分析文件的异构副本时,就可以选择读取按行模式存储的文件的副本;当用户需要按列分析文件的异构副本时,就可以选择读取按列模式存储的文件的副本时;当用户需要按块分析文件的异构副本(一些多维表格数据)时,就可以选择读取按块模式存储的文件的异构副本。由于用户可以根据需要选择读取文件的异构副本,能够有效提高用户处理数据的工作效率。
[0066] 如图6所示,为本发明的实施例中分布式存储系统中管理异构副本的方法中存储文件的副本的流程图之二,与图1中所示的存储文件的副本的流程图之一的区别是,在图6中在步骤S105之前,方法还包括:步骤S109、客户端程序判断是否启用文件的异构副本;如果启用文件的异构副本,则进入步骤S105;如果没有启用文件的异构副本,则进入步骤S111,在步骤S111中,客户端程序根据从元数据服务器获取每个存储服务器的位置信息,将文件的副本分别存储在指定的存储服务器上。可选地,在本发明的实施例客户端程序可以根据用户输入的参数来判断是否启用文件的异构副本,当然可以理解的是,在本发明的实施例中并不限定判断是否启用文件的异构副本的具体条件。
[0067] 如图7所示,为本发明的实施例中分布式存储系统中管理异构副本的方法中读取文件的异构副本的流程图,当分布式存储系统中的存储服务器中存储有文件的副本或文件的异构副本时,该方法还包括:
[0068] 步骤S113、获取用于读取文件的副本的读请求参数。
[0069] 可选地,在本发明的实施例中,读请求参数包括:文件句柄、文件偏移量、文件长度、文件的副本的读取模式,其中读取模式包括行模式读取副本、列模式读取副本或者块模式读取副本。例如当用户需要按行分析文件的副本时,该读请求参数中包括行模式读取副本;当用户需要按列分析文件的副本时,该读请求参数中包括列模式读取副本;当用户需要按块分析文件的副本时,该读请求参数中包括块模式读取副本。由于读请求参数中包括读取模式,使得用户可以根据需要选择读取文件的副本。
[0070] 步骤S115、根据读请求参数从元数据服务器获取要读的存储服务器的位置信息。
[0071] 可选地,在元数据服务器中记录有存储服务器与该存储服务器中存储的文件的副本的格式的对应关系,例如存储服务器A中存储的文件的副本为按照行模式存储的异构副本;存储服务器B中存储的文件的副本为按照列模式存储的异构副本;存储服务器C中存储的文件的副本为按照块模式存储的异构副本。
[0072] 步骤S117、判断是否启用文件的异构副本。
[0073] 如果启用所述文件的异构副本,则进入步骤S119,在步骤S119中,客户端程序根据从元数据服务器获取要读的存储服务器的位置信息,从指定的存储服务器上读取文件的异构副本。例如客户端程序要读取按照行模式存储的异构副本,客户端程序可以根据元数据服务器中记录有存储服务器中文件的副本的格式的对应关系,查询得到存储服务器A的位置信息,然后在步骤S119中,从存储服务器A中读取按照行模式存储的异构副本。
[0074] 如果没有启用所述文件的异构副本,则进入步骤S121,在步骤S121中,客户端程序根据从元数据服务器获取要读的存储服务器的位置信息,从指定的多个存储服务器中的任意一个存储服务器上读取文件的副本。由于多个存储服务器中所存储的文件的副本的格式并未转换,多个存储服务器中存储的文件的副本格式相同,因此可以从多个存储服务器中的任意一个存储服务器中读取文件的副本。
[0075] 在本发明的实施例中为了提高异构副本存储的可靠性,可以在存储服务器上存储的异构副本出现问题的时候,对该异构副本进行修复处理。如图8所示,为本发明的实施例中分布式存储系统中管理异构副本的方法中修复异构副本的流程图,包括如下步骤:
[0076] 步骤S801、服务器端程序发起副本修复处理。
[0077] 可选地,在本发明的实施例中,异构副本进行修复处理的触发条件有两个:
[0078] 触发条件之一、客户端程序请求读副本时(比如是行模式),发现指定的副本已经丢失(可能是磁盘坏了或者对应的存储服务器关闭了),此时服务器端程序发起副本修复处理。
[0079] 触发条件之二、文件系统内部定期检测磁盘状态,发现有磁盘损坏或者移除,在达到老化时间后,也发起对应的副本修复处理。
[0080] 步骤S803、服务器端程序判断是否启用异构副本,如果是,则进入步骤S805;如果否,则进入步骤S809。
[0081] 如果启用异构副本,则进入步骤S805,在步骤S805中,服务器端程序从其他存储服务器中读取对应的异构副本,然后进入步骤S807。
[0082] 步骤S807、服务器端程序将从其他存储服务器读取的文件的异构副本,转化成本存储服务器对应的异构副本,并将新的异构副本存到指定的存储服务器中的磁盘上。
[0083] 可选地,步骤S807中关于异构副本的数据恢复算法,描述如下:
[0084] (1)行->列,列->行的转换,只需要知道行数(或列数),将二维矩阵进行转置运算。如图3~图5,数据在表格中都有具体的位置信息,例如可以通过行数和列数来表示数据的位置信息,因此,当需要进行行->列或列->行的转换时,根据数据的行数或列数,将二维矩阵进行转置运算。
[0085] (2)行->块,块->行的转换。当行->块转化时,根据行列数和块数,将对应的行数据取出来,组成块数据。如图3~图5,数据在表格中都有具体的位置信息,例如可以通过行数、列数和块数来表示数据的位置信息,因此,当行->块转化时,可根据行数、列数和块数,将对应的行数据取出来,组成块数据。
[0086] (3)列->块,块->列的转换方式同(2)类似,在此不再敷述。
[0087] 步骤S809,如果没有启用异构副本,则可以将其他存储服务器的副本直接拷贝至本存储服务器上。
[0088] 依据本发明的另一个方面还公开了一种分布式存储系统中管理异构副本的装置。如图9所示,分布式存储系统中管理异构副本的装置900包括:
[0089] 写请求获取模块901,用于获取用于存储文件的副本的写请求参数,其中该写请求参数包括:文件句柄、文件偏移量和文件长度;
[0090] 第一位置获取模块903,用于根据写请求参数从元数据服务器获取分布式存储系统中每个存储服务器的位置信息。如图2所示,为本发明的实施例中分布式文件系统中的副本冗余架构的示意图,其中元数据服务器203中可以存储多个存储服务器的位置信息。
[0091] 格式转换模块905,用于根据所述写请求参数将文件的副本按照预先指定的格式转换得到多个不同格式的所述文件的异构副本。在本发明的实施例中,文件的异构副本是指对文件的副本进行数据格式的转换得到的副本,文件的异构副本所记录的内容与文件的副本以及文件中的内容相同,每个异构副本适用于不同的应用场景(例如按行模式存储文件的副本、按列模式存储文件的副本、按块模式存储文件的副本等),同样也可以互为冗余。具体可参见图3~图5。
[0092] 副本存储模块907,用于根据从元数据服务器获取存储服务器的位置信息,将转换得到的多个不同格式的所述文件的异构副本分别存储在指定的存储服务器上。继续参见图2,客户端程序201可以根据从元数据服务器203获取的存储服务器的位置信息,将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器205上。
[0093] 在本发明的实施例中,由于客户端程序可以将文件的副本按照预先指定的格式转换得到多个不同格式的文件的异构副本,并将转换得到的多个不同格式的文件的异构副本分别存储在指定的存储服务器上,通过将一个文件存多个异构副本,异构副本之间可以相互转换,使得多个异构副本起到冗余的作用,以提高文件系统的可靠性。而且在本发明的实施例中用户可以根据需要选择读取文件的副本,例如当用户需要按行分析文件的副本时,就可以选择读取按行模式存储的文件的异构副本;当用户需要按列分析文件的副本时,就可以选择读取按列模式存储的文件的异构副本;当用户需要按块分析文件的异构副本(一些多维表格数据)时,就可以选择读取按块模式存储的文件的异构副本。由于用户可以根据需要选择读取文件的异构副本,能够有效提高用户处理数据的工作效率。
[0094] 可选地,在本发明的另一个实施例中,所述装置900还包括:
[0095] 第一判断模块909,用于根据写请求参数判断是否启用所述文件的异构副本;如果启用异构文件的副本,则触发格式转换模块905;如果没有启用所述文件的异构副本,则触发副本存储模块907根据从元数据服务器获取每个存储服务器的位置信息,将所述文件的副本分别存储在指定的存储服务器上。
[0096] 可选地,在本发明的另一个实施例中,格式转换模块905进一步用于根据写请求参数将所述文件的副本按照行模式存储、列模式存储或块模式存储的格式转换成多个不同格式的所述文件的异构副本,并缓存转换得到的多个不同格式的所述文件的异构副本。
[0097] 可选地,在本发明的另一个实施例中,所述装置900还包括:
[0098] 读请求获取模块911,用于获取用于读取文件的副本的读请求参数;
[0099] 第二位置获取模块913,用于根据所述读请求参数从所述元数据服务器获取要读的存储服务器的位置信息;
[0100] 第二判断模块915,用于根据读请求参数判断是否启用所述文件的异构副本;
[0101] 副本读取模块917,用于如果启用所述文件的异构副本,则根据从所述元数据服务器获取要读的存储服务器的位置信息,从指定的存储服务器上读取所述文件的异构副本;以及用于如果没有启用所述文件的异构副本,则根据从所述元数据服务器获取要读的存储服务器的位置信息,从指定的多个存储服务器上读取任意一个文件的副本。
[0102] 可选地,在本发明的另一个实施例中,所述写请求参数包括:文件句柄、文件偏移量、文件长度和文件的副本的格式,其中所述文件的副本的格式包括:按照行模式存储、按照列模式存储或者按照块模式存储;所述读请求参数包括:文件句柄、文件偏移量、文件长度和所述文件的副本的读取模式,所述读取模式包括行模式读取副本、列模式读取副本或者块模式读取副本。
[0103] 以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。