CN104583965A - 将编码数据文件存储在多个文件服务器上 - Google Patents

将编码数据文件存储在多个文件服务器上 Download PDF

Info

Publication number
CN104583965A
CN104583965A CN201280075352.2A CN201280075352A CN104583965A CN 104583965 A CN104583965 A CN 104583965A CN 201280075352 A CN201280075352 A CN 201280075352A CN 104583965 A CN104583965 A CN 104583965A
Authority
CN
China
Prior art keywords
data
file
edit
file server
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201280075352.2A
Other languages
English (en)
Other versions
CN104583965B (zh
Inventor
张磊
宋学锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of CN104583965A publication Critical patent/CN104583965A/zh
Application granted granted Critical
Publication of CN104583965B publication Critical patent/CN104583965B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一些示例中,描述了一种用于对数据文件的数据块进行编码并且将数据文件的数据块存储在多个文件服务器上的方法。所述方法可以包括以下步骤:选择数据剪辑大小S;选择要包括在各个数据块中的数据剪辑的数量N;以及将所述数据文件划分成各自具有数据大小(S×N)的数据块。所述方法还可以包括以下步骤:对于各个数据块,将所述数据块划分成N个数据剪辑;生成随机数R,其中1≤R≤N;选择冗余数据剪辑的数量K,其中N≤K≤2^N;使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码;以及将K个编码的数据剪辑存储在所述多个文件服务器上。

Description

将编码数据文件存储在多个文件服务器上
背景技术
除非本文另外指示,否则本文所描述的材料对于本申请中的权利要求而言不是现有技术,并且不通过包括在此部分中承认为现有技术。
连接至因特网的计算机系统和用户的数量在迅速地增长。在诸如因特网的非常大的分布式计算环境中,文件服务器故障的可能性随着文件服务器的数量而增加。故障可能由于软件和硬件不正常工作、过度的文件服务器负荷、网络拥塞和/或自然灾难而发生。这样的故障可能导致数据不可用,并且因此导致对用户而言不太可靠的服务。
当前的分布式文件存储系统(诸如Coda文件系统、Andrew文件系统和Echo文件系统)跨越多个文件服务器存储数据对象。主要从Andrew文件系统继承的Coda文件系统关注于可用性问题而被开发。Coda不对文件系统重新配置以提供数据可用性。替代地它在文件服务器故障和断开操作情况下使文件的只读副本保持在远程站点。Echo文件系统具有自动地检测故障(诸如文件服务器故障)的各种方式,并且能够通过向负责处理故障的管理员发送消息的守护进程来报告这些故障。然而,重新配置是人工完成的。一般而言,通过使文件保持在主站点以用于下载并且在主站点故障情况下使其副本保持在其它站点来提供数据的可用性。Echo系统在故障情况下严重依赖一切的冗余拷贝。辅站点监测主站点可用性并且反之亦然。
用于在分布式环境中使能实现高数据可用性和可靠服务的这些方法中的每一个往往增加文件服务器管理的复杂性,增加计算复杂度,或者提供不足的冗余。
发明内容
本文所描述的技术通常涉及对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从所述多个文件服务器中获取(retrieving)所述数据文件并且对所述数据文件进行解码。
在一些示例中,描述了一种用于对数据文件的数据块进行编码并且将数据文件的数据块存储在多个文件服务器上的方法。所述方法可以包括以下步骤:选择数据剪辑大小S;选择要包括在各个数据块中的数据剪辑的数量N;以及将所述数据文件划分成各自具有数据大小(S×N)的数据块。所述方法还可以包括以下步骤:对于各个数据块,将所述数据块划分成N个数据剪辑;生成随机数R,其中1≤R≤N;选择冗余数据剪辑的数量K,其中N≤K≤2^N;使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码;以及将K个编码的数据剪辑存储在所述多个文件服务器上。
在一些示例中,描述了一种用于从多个文件服务器中获取数据文件的编码数据块并且对数据文件的编码数据块进行解码的方法。所述方法可以包括获取数据剪辑大小S和包括在各个数据块中的数据剪辑的数量N。所述方法还可以包括以下步骤:对于各个编码数据块,从所述多个文件服务器中获取与所述数据块对应的N个线性地独立编码的数据剪辑,使用一个或更多个线性方程来对所述N个线性地独立编码的数据剪辑进行解码,并且将各自具有所述数据剪辑大小S的所述N个数据剪辑组装(assemble)成所述数据块。所述方法还可以包括将所述数据块组装成所述数据文件。
在一些示例中,描述了一种用于将数据文件的编码数据块存储在多个文件服务器上并且从所述多个文件服务器中获取所述数据文件的编码数据块的系统。所述系统可以包括主文件服务器和一个或更多个辅文件服务器。所述主文件服务器可以被配置为在存储所述数据文件期间:选择数据剪辑大小S,选择要包括在各个数据块中的数据剪辑的数量N,将所述数据文件划分成各自具有数据大小(S×N)的数据块,以及,对于各个数据块:将所述数据块划分成N个数据剪辑;生成随机数R,其中1≤R≤N;选择冗余数据剪辑的数量K,其中N≤K≤2^N;使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码;并且将K个编码的数据剪辑存储在一个或更多个辅文件服务器上。所述主文件服务器可以被进一步配置为在所述数据文件的获取期间:对于各个编码数据块,从所述一个或更多个辅文件服务器中获取与所述数据块对应的N个线性地独立编码的数据剪辑,使用一个或更多个线性方程来对所述N个线性地独立编码的数据剪辑进行解码,并且将各自具有所述数据剪辑大小S的所述N个数据剪辑组装成所述数据块。所述主文件服务器可以被进一步配置为在所述数据文件的获取期间,将所述数据块组装成所述数据文件。
前面的发明内容仅是例示性的,并且不旨在以任何方式为限制性的。除以上所述的例示性方面、实施方式和特征之外,另外的方面、实施方式和特征通过参照附图和以下详细描述将变得显而易见。
附图说明
附图中:
图1是包括多个文件服务器的示例分布式文件存储系统的框图,在该示例分布式文件存储系统中可以实现对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从多个文件服务器中获取数据文件并且对数据文件进行解码的实施方式;
图2示出了用于对数据文件进行编码并且将数据文件存储在多个文件服务器上的方法的示例流程图;
图3示出了用于从多个文件服务器中获取编码数据文件并且对编码数据文件进行解码的方法的示例流程图;以及
图4是例示了完全根据本文所描述的至少一些实施方式布置的示例计算设备的框图,该示例计算设备被布置用于对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从多个文件服务器中获取编码数据文件并且对编码数据文件进行解码。
具体实施方式
在以下详细描述中,参照形成其一部分的附图。在附图中,除非上下文另外指示,否则相似的符号通常标识相似的部件。具体实施方式、附图和权利要求中所描述的例示性实施方式不意在为限制性的。在不脱离本文所呈现的主题的精神或范围的情况下,可以利用其它实施方式,并且可以做出其它改变。应当容易地理解,像本文所通常描述和图中所例示的那样,能够按照各式各样的不同配置来布置、取代、组合、分离和设计本公开的方面,所述不同配置中的全部在本文中被显式地设想到。
本文所描述的一些实施方式通常涉及对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从多个文件服务器中获取数据文件并且对数据文件进行解码。将编码数据文件存储在多个文件服务器上能够通过存储冗余数据来维持数据完整性和可用性。可以使用随机线性编码对数据文件进行编码,这往往降低文件服务器管理的复杂性,降低计算复杂度,并且提供充足的冗余。因此,在本文所描述的一些实施方式中,相对较大的数据文件(诸如高清晰度电影文件)能够被编码并且以分布式方式跨越多个文件服务器存储以及以后从多个文件服务器中获取出并且在文件服务器管理的相对较低的复杂性、相对较低的计算复杂度以及充足的冗余情况下解码,以通常避免由于文件服务器故障而导致的数据丢失。因此,当根据本文所描述的实施方式对数据文件进行编码和存储时,实现了冗余数据的存储或者实现了数据文件在多个文件服务器当中的分布或这二者。
图1是根据本文所描述的至少一些实施方式布置的包括多个文件服务器的示例分布式文件存储系统100的框图,在该示例分布式文件存储系统100中可以实现对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从多个文件服务器中获取数据文件并且对数据文件进行解码的实施方式。在所例示的实施方式中,示例分布式文件存储系统100可以包括网络102、主文件服务器104以及一个或更多个辅文件服务器106a-106n。
一般而言,网络102可以包括使得主文件服务器104和辅文件服务器106a-106n能够与彼此进行通信的一个或更多个广域网(WAN)和/或局域网(LAN)。在一些实施方式中,网络102包括因特网或由因特网构成,包括由多个WAN和/或LAN之间的逻辑连接和物理连接形成的全球互联网络。另选地或另外,网络102可以包括一个或更多个蜂窝RF网络和/或一个或更多个有线和/或无线网络,诸如但不限于802.xx网络、蓝牙接入点、无线接入点、基于IP的网络等。网络102还可以包括使得一个类型的网络能够与另一类型的网络接口对接的服务器。
主文件服务器104可以执行被配置为通过网络102与辅文件服务器106a-106n进行通信的应用(未示出)。在主文件服务器104上执行以与辅文件服务器106a-106n进行通信的应用可以包括分布式文件系统应用或其它适合的应用。辅文件服务器106a-106n中的每一个可以执行与由主文件服务器104执行的应用相似或相同的应用(未示出)。例如,主文件服务器104可以被配置为Hadoop分布式文件系统(HDFS)的名称节点(NameNode),并且一个或更多个辅文件服务器106a-106n可以被各自配置为HDFS的数据节点(DataNode)。主文件服务器104和辅文件服务器106a-106n中的每一个可以是但不限于web服务器、文件服务器、台式计算机、膝上型计算机、移动电话、智能电话、个人数字助理(PDA)或其它适合的文件服务器设备。
作为示例而非限制,辅文件服务器106a-106n中的每一个和主文件服务器104可以包括诸如一个或更多个中央处理单元(CPU)的处理资源、诸如一个或更多个存储设备的存储资源、诸如网络接口控制器(NIC)或其它通信接口设备的其它资源和/或其它适合的计算机资源。
在一些实施方式中,辅文件服务器106a-106n中的每一个和主文件服务器104可以实现用于对数据文件进行编码并且将数据文件存储在多个文件服务器上的方法,诸如参照图2本文所描述的方法200,以及用于从多个文件服务器中获取数据文件并且对数据文件进行解码的方法,诸如参照图3本文所描述的方法300。例如,可以使用图2的方法200来对被存储在主文件服务器104上或主文件服务器104以其它方式可访问的高清晰度电影文件108进行编码和划分以跨越辅文件服务器106a-106n存储。类似地,可以使用图3的方法300来对跨越辅文件服务器106a-106n存储的高清晰度电影文件108的编码划分进行获取、解码并且重新组装(reassemble)成高清晰度电影文件108。注意,高清晰度电影文件108只是能够使用本文所讨论的方法来编码和解码的数据文件的一个示例,并且能够使用本文所讨论的方法来对具有其它类型的内容的数据文件类似地进行编码和解码。
图2示出了根据本文所描述的至少一些实施方式布置的用于对数据文件进行编码并且将数据文件存储在多个文件服务器上的方法200的示例流程图。可以通过例如图1的主文件服务器104使用图1的辅文件服务器106a-106n全部地或部分地对数据文件执行方法200。仅出于例示的目的,以下在示例中讨论的数据文件将是被指定为具有4GB大小的高清晰度电影文件108。方法200包括如由块202-220中的一个或更多个所例示的各种操作、功能或动作。方法200在块202处开始。
在块202(“选择数据剪辑大小S”)中,选择了用于数据文件的编码的数据剪辑大小S。例如,主文件服务器104可以选择与主文件服务器104的系统页面大小匹配的数据剪辑大小S。选择与系统页面大小匹配的数据剪辑大小S能够通过读取各个剪辑的数据的全页面从而减少寻址和操作系统核模式以及用户模式切换次数来改进性能。在主文件服务器104正在运行具有设定为4kB的页面大小的Linux操作系统情况下,可以将数据剪辑大小S选择为4kB以和Linux操作系统页面大小匹配。类似地,在主文件服务器104正在运行被设定为具有16kB的页面大小的另一Linux操作系统情况下,可以将数据剪辑大小S选择为16kB以和另一个Linux操作系统页面大小匹配。在其它示例实施方式中,可以将数据剪辑大小S选择为除主文件服务器104的系统页面大小以外的大小。在块202之后可以是块204。
在块204(“选择要包括在各个数据块中的数据剪辑的数量N”)中,选择要包括在编码数据文件的各个数据块中的数据剪辑的数量N。例如,主文件服务器104可以将数量N选择为随机素数。在一些示例实施方式中,例如,可以将数量N选择为诸如9,973的随机素数。另选地,可以将数量N选择为随机非素数。在块204之后可以是块206。
在块206(“将数据文件划分成各自具有数据大小(S×N)的数据块”)中,数据文件被划分成各自具有数据大小(S×N)的数据块。例如,在主文件服务器104已将数据剪辑大小选择为4kB并且将数据剪辑的数量N选择为9,973情况下,主文件服务器104可以将大小(4GB=4,194,304kB)的高清晰度电影文件108划分成各自具有(4kB×9,973=39,892kB)的大小的数据块。在块206之后可以是块208。
在数据大小(S×N)未被均匀地划分成数据文件的大小情况下,最后是数据块可以用零填补。例如,主文件服务器104可以将高清晰度电影文件108划分成各自具有大小39,892kB的106个数据块,其中高清晰度电影文件108的最后的数据块具有5,644kB的实际数据和34,248kB的填补零。
在块208(“选择未编码数据块”)中,选择了未编码数据块中的一个。例如,主文件服务器104可以选择高清晰度电影文件108的大小39,892kB的未编码数据块中的一个用于编码。在块208之后可以是块210。
在块210(“将数据块划分成N个数据剪辑”)中,所选择的数据块被划分成N个数据剪辑。例如,在主文件服务器104已将数据剪辑的数量N选择为9,973情况下,主文件服务器104可以将所选择的数据块划分成9,973个数据剪辑。在块210之后可以是块212。
在块212(“生成随机数R,其中1≤R≤N”)中,生成了随机数R,其中1≤R≤N。例如,在主文件服务器104已将数据剪辑的数量N选择为9,973情况下,主文件服务器104可以生成大于1并且小于9,973的随机数。在块212之后可以是块214。
在块214(“选择冗余数据剪辑的数量K,其中N≤K≤2^N”)中,选择了冗余数据剪辑的数量K,其中N≤K≤2^N。例如,在主文件服务器104已将数据剪辑的数量N选择为9,973情况下,主文件服务器104可以选择大于或等于9,973并且小于2^9,973的冗余数据剪辑的数量K,其中2^9,973表示2的9,973次幂。在块214之后可以是块216。
在块216(“使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码”)中,使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码。例如,在主文件服务器104已将R选择为3并且将K选择为18,357情况下,主文件服务器104可以使用随机线性编码通过异或3个数据剪辑18,357次来对18,357个数据剪辑进行编码。在块216之后可以是块218。
在块218(“将K个编码的数据剪辑存储在多个文件服务器上”)中,K个编码的数据剪辑被存储在多个文件服务器上。例如,在主文件服务器104已将K选择为18,357情况下,主文件服务器104可以在多个辅文件服务器106a-106n上对18,357个数据剪辑编码。在块218之后可以是判定块220。
在判定块220(“剩余未编码数据块?”)中,确定是否剩余未编码数据块。例如,在像在以上示例中那样已将高清晰度电影文件108划分成106个数据块情况下,主文件服务器104确定106个数据块中的任一个是否保持为未编码并且尚未存储在多个辅文件服务器106a-106n上。如果是这样的话(在块220处“是”),则主文件服务器104可以返回到块208以便对剩余的块进行编码和存储。否则,方法200终止,因为高清晰度电影文件108的数据块中的全部已被编码并且存储在多个辅文件服务器106a-106n上。
因此,可以采用图2的方法200来对数据文件进行编码并且跨越多个文件服务器存储数据文件。继对数据文件(诸如如以上所讨论的高清晰度电影文件108)执行方法200之后,可以使用图3的方法300来对相同的数据文件进行获取和解码。
图3示出了根据本文所描述的至少一些实施方式布置的用于从多个文件服务器中获取编码数据文件和并且对编码数据文件进行解码的方法300的示例流程图。可以通过例如图1的主文件服务器104使用图1的辅文件服务器106a-106n全部地或部分地对数据文件执行方法300。仅出于例示的目的,以下在示例中讨论的数据文件将是先前已使用以上连同图2的讨论所讨论的方法的示例执行被编码并且存储在辅文件服务器106a-106n上的大小为4GB的高清晰度电影文件108。方法300包括如由块302-314中的一个或更多个所例示的各种操作、功能或动作。方法300在块302处开始。
在块302(“获取数据剪辑大小S和包括在各个数据块中的数据剪辑的数量N”)中,获取到了数据剪辑大小S和包括在各个数据块中的数据剪辑的数量N。例如,主文件服务器104可以获取先前选择的4kB的数据剪辑大小以及包括在先前编码的高清晰度电影文件108的各个数据块中的数据剪辑的先前选择的数量9,973。在块302之后可以是块304。
在块304(“选择编码数据块”)中,选择了编码数据块中的一个。例如,主文件服务器104可以选择高清晰度电影文件108的大小为39,892kB的先前编码的数据块中的一个。在块304之后可以是块306。
在块306(“从多个文件服务器中获取与数据块对应的N个线性地独立编码的数据剪辑”)中,从多个文件服务器中获取与所选择的数据块对应的N个线性地独立编码的数据剪辑。例如,主文件服务器104可以从辅文件服务器106a-106n中获取与所选择的数据块对应的9,973个线性地独立编码的数据剪辑。在块306之后可以是块308。
在块308(“使用一个或更多个线性方程对N个线性地独立编码的数据剪辑进行解码”)中,使用一个或更多个线性方程来对N个线性地独立编码的数据剪辑进行解码。例如,主文件服务器104可以使用一个或更多个线性方程通过在9,973个线性方程中异或9,973个线性地独立编码的数据剪辑中的至少一些来对已被获取到的对应于所选择的数据块的9,973个线性地独立编码的数据剪辑进行解码,以得出所选择的数据块的大小为4kB的原始9,973个数据剪辑。在至少一些示例实施方式中,可以使用各种已知的稀疏高斯消除方法来实现这个解码。在块308之后可以是块310。
在块310(“将各自具有数据剪辑大小S的N个数据剪辑组装成数据块”)中,各自具有数据剪辑大小S的N个数据剪辑被组装成数据块。例如,主文件服务器104可以将9,973个编码的数据剪辑(其中的每一个具有4kB的数据剪辑大小)组装成所选择的数据块。在块310之后可以是块312。
在判定块312(“剩余编码数据块?”)中,确定是否剩余编码数据块。例如,在像在以上示例中那样已将高清晰度电影文件108划分成106个数据块的情况下,主文件服务器104可以确定106个数据块中的任一个是否保持为编码且存储在辅文件服务器106a-106n上。如果是这样的话(在块312处“是”),则主文件服务器104可以返回到块304以便对剩余的块进行解码。如果不是(在块312处“否”),则主文件服务器104可以继续314(“将数据块组装成数据文件”),其中数据块被组装成数据文件。例如,主文件服务器104可以将106个解码数据块中的每一个组装成经解码的高清晰度电影文件108。方法300然后终止,因为高清晰度电影文件108已被解码并且重新组装。
本领域技术人员应当了解,对于本文所公开的这个及其它处理和方法,可以按照不同的顺序实现这些处理和方法中执行的功能。此外,所概述的步骤和操作可以仅作为示例被提供,并且在不减损所公开的实施方式的本质的情况下,这些步骤和操作中的一些可以是可选的、组合成较少的步骤和操作或者扩展成附加的步骤和操作。
例如,可以重复地执行方法200和方法300中的每一个以便对多个数据文件进行编码和解码。
本文所公开的一些实施方式包括计算机存储介质,该计算机存储介质具有计算设备可执行以执行包括在图2的方法200和图3的方法300中的操作的、存储在其上的计算机可执行指令,所述操作是诸如由块202-220和302-314中的任一个所例示的操作和/或其变型。计算机存储介质可以被包括在图1的主文件服务器104和辅文件服务器106a-106n的一个或更多个存储设备中。
因此,本文所描述的对数据文件进行编码并且将数据文件存储在多个文件服务器上的一些实施方式可以通过存储冗余数据来维持数据完整性和可用性。使用随机线性编码对数据文件进行编码往往降低文件服务器管理的复杂性,降低计算复杂度,并且提供充足的冗余。因此,在本文所描述的一些实施方式中,相对较大的数据文件(诸如具有大小为4GB的高清晰度电影文件108)能够被编码并且以分布式方式跨越多个文件服务器存储以及以后从多个文件服务器中获取并且在文件服务器管理的相对较低的复杂性、相对较低的计算复杂度以及充足的冗余情况下解码,以通常避免由于文件服务器故障而导致的数据丢失。
图4是例示了根据本文所描述的至少一些实施方式布置的示例计算设备400的框图,该示例计算设备400被布置用于对数据文件进行编码并且将数据文件存储在多个文件服务器上以及从多个文件服务器中获取编码数据文件并且对编码数据文件进行解码。在非常基本的配置402中,计算设备400通常包括一个和多个处理器404和系统存储器406。存储器总线408可以被用于在处理器404与系统存储器406之间进行通信。
取决于所期望的配置,处理器404可以具有任何类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任何组合。处理器404可以包括多于一级的缓存(诸如一级高速缓存410和二级高速缓存412)、处理器核414以及寄存器416。示例处理器核414可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任何组合。示例存储器控制器418还可以与处理器404一起使用,或者在一些实施方式中存储器控制器418可以是处理器404的内部部分。
取决于所期望的配置,系统存储器406可以具有任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪速存储器等)或其任何组合。系统存储器406可以包括操作系统420、一个或更多个应用422以及程序数据424。应用422可以包括被布置为执行包括相对于图2的方法200和图3的方法300所描述的那些功能的如本文所描述的功能的编码和解码算法426。程序数据424可以包括可用于像本文所描述的那样被编码或解码的数据文件428。在一些实施方式中,应用422可以被布置为在操作系统420上对程序数据424进行操作,使得可以像本文所描述的那样提供诸如图2的方法200的编码和存储方法以及诸如图3的方法300的获取和解码方法的实施方式。这个描述的基本配置402在图4中通过内部虚线内的那些部件来例示。
计算设备400可以具有附加的特征或功能性以及附加的接口以方便基本配置402及任何需要的设备和接口之间的通信。例如,总线/接口控制器430可以被用来方便经由存储接口总线434进行基本配置402与一个或更多个数据存储设备432之间的通信。数据存储设备432可以是可移动存储设备436、不可移动存储设备438或其组合。可移动存储设备和不可移动存储设备的示例包括诸如柔性盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如紧致盘(CD)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)以及磁带驱动器等等。示例计算机存储媒介可以包括用任何方法或技术实现以用于存储信息的易失性和非易失性、可移动和不可移动媒介,所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。
系统存储器406、可移动存储设备436和不可移动存储设备438是计算机存储媒介的示例。计算机存储媒介包括但不限于RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储部、磁盒、磁带、磁盘存储部或其它磁存储设备,或可以被用来存储所期望的信息并且可以被计算机400访问的任何其它介质。任何这样的计算机存储媒介可以是计算设备400的一部分。
计算设备400还可以包括接口总线440以用于方便经由总线/接口控制器430进行从各种接口设备(例如,输出设备442、外围接口444和通信设备446)到基本配置402的通信。示例输出设备442包括图形处理单元448和音频处理单元450,其可以被配置为经由一个或更多个AV端口452与诸如显示器或扬声器的各种外部设备进行通信。示例外围接口444包括串行接口控制器454或并行接口控制器456,其可以被配置为经由一个或更多个I/O端口458与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描器等)的外部设备进行通信。示例通信设备446包括网络控制器460,其可以被布置为方便经由一个或更多个通信端口464通过网络通信链路来进行与一个或更多个其它计算装置462的通信。
网络通信链路可以是通信媒介的一个示例。通信媒介可以通常由计算机可读指令、数据结构、程序模块或其它数据具体实现在诸如载波或其它传输机制的已调制数据信号中,并且包括任何信息递送媒介。“已调制数据信号”可以是这样的信号,所述信号使其特性集中的一个或更多个以这样的方式被设置或改变以便将信息编码在所述信号中。作为示例而非限制,通信媒介包括诸如有线网络或直接有线连接的有线媒介,以及诸如声学、射频(RF)、微波、红外线(IR)的无线媒介和其它无线媒介。如本文所使用的术语“计算机可读媒介”可以包括存储媒介和通信媒介这二者。
计算设备400可以被实现为小形状因素便携式(或移动)电子设备的一部分,所述电子设备诸如手机、个人数据助理(PDA)、个人媒介播放器设备、无线web观看设备、个人头戴式耳机设备、专用设备,或包括上述功能中的任一个的混合设备。计算设备400还可以被实现为包括膝上型计算机和非膝上型计算机配置这二者的个人计算机。
本公开将在旨在为各种方面的例示的本文所描述的特定实施方式方面不受限制。如对于本领域技术人员而言将显而易见的,在不脱离它的精神和范围的情况下能够做出许多修改和变化。根据前面的描述,除本文所枚举的那些之外在本公开的范围内的功能上等效的方法和装置对于本领域技术人员而言将是显而易见的。这样的修改和变化旨在落入所附权利要求的范围内。本公开将仅由所附权利要求的项以及这些权利要求享有的等同物的完全范围来限制。应当理解,本公开不限于特定方法、反应物、化合物成分或生物系统,其当然能够变化。还应当理解,本文所使用的术语用于仅描述特定实施方式的目的,并且不旨在为限制性的。
关于大体上任何复数和/或单数项在本文中的使用,像适于上下文和/或应用那样本领域技术人员能够从复数向单数和/或从单数向复数平移。为了清楚起见,可以在本文中明确地阐述各种单数/复数置换。
本领域技术人员应当理解,一般而言,本文以及尤其在所附权利要求(例如,所附权利要求的正文)中所用的术语通常意为“开放式”术语(例如,术语“包括有”应该被解释为“包括有但不限于”,术语“具有”应该被解释为“具有至少”,术语“包括”应该被解释为“包括但不限于”等)。本领域技术人员应当进一步理解,如果一定数量的引入的权利要求引用是意图的,则这样的意图将被显式地记载在权利要求中,并且在缺少这样的引用情况下不存在这样的意图。例如,作为对理解的帮助,以下所附权利要求可以包含介绍性短语“至少一个”和“一个或更多个”的使用以引入权利要求引用。然而,即便当相同的权利要求包括介绍性短语“一个或更多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时(例如,“一”和/或“一个”应该被解释为意指“至少一个”或“一个或更多个”),这样的短语的使用也不应该被解释为暗示权利要求引用通过不定冠词“一”或“一个”的引入将包含这样引入的权利要求引用的任何特定权利要求限制于包含仅一个这样的引用的实施方式;相同情况适用于用来引入权利要求引用的限定冠词的使用。另外,即使一定数量的引入的权利要求引用被显式地记载,本领域技术人员也将认识到,这样的引用典型地应该被解释为至少意指所记载的数量(例如,“两个引用”的仅有引用在没有其它修饰词的情况下,意指至少两个引用或两个或更多个引用)。此外,在其中使用了类似于“A、B和C中的至少一个等”的约定的那些实例中,一般而言这样的构造在本领域技术人员将理解该约定的意义上被打算(例如,“具有A、B和C中的至少一个的系统”将包括但不限于只有A、只有B、只有C、A和B一起、A和C一起、B和C一起和/或A、B以及C一起等的系统)。在其中使用了类似于“A、B和C中的至少一个等”的约定的那些实例中,一般而言这样的构造在本领域技术人员将理解该约定的意义上被打算(例如,“具有A、B或C中的至少一个的系统”将包括但不限于只有A、只有B、只有C、A和B一起、A和C一起、B和C一起和/或A、B以及C一起等的系统)。本领域技术人员应当进一步理解,实际上任何反意词和/或短语呈现两个或更多另选的术语,无论在本说明书、权利要求还是附图中,应该被理解为设想到包括这些术语中的一个、这些术语中的任何一个或两个术语的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。
另外,在按Markush组对本公开的特征或方面进行描述情况下,本领域技术人员将认识到,还因此按Markush组的成员的任何单独的成员或子组对本公开进行描述。
如将由本领域技术人员所理解的,出于任何和所有目的,诸如在提供撰写的说明书方面,本文所公开的所有范围还包含任何和所有可能的子范围以及其子范围的组合。任何列举的范围能够被容易地认识为充分地描述并且使能实现被分解成至少等二分之一、三分之一、四分之一、五分之一、十分之一等的相同范围。作为非限制性示例,本文所讨论的各个范围能够被容易地分解成下三分之一、中间三分之一和上三分之一等。如还将由本领域技术人员所理解的,诸如“多达”、“至少”等的所有语言包括所记载的数量,并且指代能够被随后分解成如以上所讨论的子范围的范围。最后,如将由本领域技术人员所理解的,范围包括各个单独的成员。因此,例如,具有1至3个单元的组指代具有1、2或3个单元的组。类似地,具有1至5个单元的组指代具有1、2、3、4或5个单元的组等等。
根据上文,应当了解,已经出于例示的目的描述了本公开的各种实施方式,并且在不脱离本公开的范围和精神的情况下可以做出各种修改。因此,本文所公开的各种实施方式不旨在为限制性的,同时真实范围和精神由以下权利要求来指示。

Claims (20)

1.一种用于对数据文件的数据块进行编码并且将数据文件的数据块存储在多个文件服务器上的方法,所述方法包括以下步骤:
选择数据剪辑大小S;
选择要包括在各个数据块中的数据剪辑的数量N;
将所述数据文件划分成各自具有数据大小S×N的数据块;以及
对于各个数据块,将所述数据块划分成N个数据剪辑,生成随机数R,其中1≤R≤N,选择冗余数据剪辑的数量K,其中N≤K≤2^N,使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码,并且将K个编码的数据剪辑存储在所述多个文件服务器上。
2.根据权利要求1所述的方法,其中,所述数据剪辑大小S被选择为与所述多个文件服务器的系统页面大小匹配。
3.根据权利要求2所述的方法,其中,所述系统页面大小是4kB。
4.根据权利要求2所述的方法,其中,所述系统页面大小是16kB。
5.根据权利要求1所述的方法,其中,数据剪辑的所述数量N被选择为随机数。
6.根据权利要求1所述的方法,其中,数据剪辑的所述数量N被选择为素数。
7.根据权利要求1所述的方法,其中,数据剪辑的所述数量N被选择为9973。
8.根据权利要求1所述的方法,其中,在所述数据块大小S×N没有被均匀地划分成所述数据文件的大小的情况下,用零填补最后的数据块。
9.根据权利要求1所述的方法,其中,所述多个文件服务器被配置为执行Hadoop分布式文件系统HDFS。
10.一种计算机存储介质,该计算机存储介质上存储有能够被计算设备执行以执行根据权利要求1所述的方法的计算机可执行指令。
11.一种用于从多个文件服务器中获取数据文件的编码数据块并且对数据文件的编码数据块进行解码的方法,所述方法包括以下步骤:
获取数据剪辑大小S和包括在各个数据块中的数据剪辑的数量N;
对于各个编码数据块,从所述多个文件服务器中获取与所述数据块对应的N个线性地独立编码的数据剪辑,使用一个或更多个线性方程来对所述N个线性地独立编码的数据剪辑进行解码,并且将各自具有所述数据剪辑大小S的所述N个数据剪辑组装成所述数据块;以及
将所述数据块组装成所述数据文件。
12.根据权利要求11所述的方法,其中,所述数据剪辑大小S被选择为与所述多个文件服务器的系统页面大小匹配。
13.根据权利要求11所述的方法,其中,所述系统页面大小是4kB或16kB。
14.根据权利要求11所述的方法,其中,数据剪辑的所述数量N被选择为随机素数。
15.根据权利要求11所述的方法,其中,数据剪辑的所述数量N被选择为9973。
16.根据权利要求11所述的方法,该方法还包括以下步骤:在将所述数据块组装成所述数据文件之前,如果所述数据块大小S×N没有被均匀地划分成所述数据文件的大小,则去除在最后的数据块上填补的零。
17.根据权利要求11所述的方法,其中,所述多个文件服务器被配置为执行Hadoop分布式文件系统HDFS。
18.一种计算机存储介质,该计算机存储介质上存储有能够被计算设备执行以执行根据权利要求11所述的方法的计算机可执行指令。
19.一种用于对数据文件的数据块进行编码并且将数据文件的数据块存储在多个文件服务器上以及从所述多个文件服务器中获取所述数据文件的编码数据块并且对所述数据文件的编码数据块进行解码的系统,所述系统包括:
主文件服务器和一个或更多个辅文件服务器,
所述主文件服务器被配置为在存储所述数据文件期间:
选择数据剪辑大小S;
选择要包括在各个数据块中的数据剪辑的数量N;
将所述数据文件划分成各自具有数据大小S×N的数据块;以及
对于各个数据块,将所述数据块划分成N个数据剪辑,生成随机数R,其中1≤R≤N,选择冗余数据剪辑的数量K,其中N≤K≤2^N,使用随机线性编码通过异或R个数据剪辑K次来对K个数据剪辑进行编码,并且将K个编码的数据剪辑存储在一个或更多个辅文件服务器上,以及
所述主文件服务器被进一步配置为在获取所述数据文件期间:
对于各个编码数据块,从所述一个或更多个辅文件服务器中获取与所述数据块对应的N个线性地独立编码的数据剪辑,使用一个或更多个线性方程来对所述N个线性地独立编码的数据剪辑进行解码,并且将各自具有所述数据剪辑大小S的所述N个数据剪辑组装成所述数据块;以及
将所述数据块组装成所述数据文件。
20.根据权利要求19所述的系统,其中,所述主文件服务器被配置为Hadoop分布式文件系统HDFS的名称节点,并且所述一个或更多个辅文件服务器被各自配置为Hadoop分布式文件系统HDFS的数据节点。
CN201280075352.2A 2012-08-16 2012-08-16 将编码数据文件存储在多个文件服务器上 Expired - Fee Related CN104583965B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/080229 WO2014026355A1 (en) 2012-08-16 2012-08-16 Storing encoded data files on multiple file servers

Publications (2)

Publication Number Publication Date
CN104583965A true CN104583965A (zh) 2015-04-29
CN104583965B CN104583965B (zh) 2017-08-11

Family

ID=50101207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280075352.2A Expired - Fee Related CN104583965B (zh) 2012-08-16 2012-08-16 将编码数据文件存储在多个文件服务器上

Country Status (3)

Country Link
US (1) US10303659B2 (zh)
CN (1) CN104583965B (zh)
WO (1) WO2014026355A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2660723A1 (en) * 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device
CN106991314A (zh) * 2016-01-20 2017-07-28 阿里巴巴集团控股有限公司 一种数据存储方法及装置
CN111046014A (zh) * 2019-12-24 2020-04-21 广州众鑫达科技有限公司 文件分布式存储系统、方法、装置及电子设备
CN115826865A (zh) * 2022-12-07 2023-03-21 安世数擎(杭州)信息科技服务有限公司 一种适用于大规模跨域机群文件的管理系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138125A (en) * 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US20070050543A1 (en) * 2005-08-31 2007-03-01 Ori Pomerantz Storage of computer data on data storage devices of differing reliabilities
CN101064596A (zh) * 2006-04-28 2007-10-31 富士通株式会社 数据保护系统、方法及程序
CN101976174A (zh) * 2010-08-19 2011-02-16 北京同有飞骥科技有限公司 一种垂直排布分布校验的节能型磁盘阵列的构建方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US7093182B2 (en) * 1999-08-02 2006-08-15 Inostor Corporation Data redundancy methods and apparatus
US7509322B2 (en) * 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US20040088380A1 (en) * 2002-03-12 2004-05-06 Chung Randall M. Splitting and redundant storage on multiple servers
US7194579B2 (en) * 2004-04-26 2007-03-20 Sun Microsystems, Inc. Sparse multi-component files
US7219289B2 (en) * 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US7552357B2 (en) * 2005-04-29 2009-06-23 Network Appliance, Inc. Lost writes detection in a redundancy group based on RAID with multiple parity
US20070208790A1 (en) * 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP5167243B2 (ja) * 2006-04-04 2013-03-21 パーマビット テクノロジー コーポレイション 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法
US8166012B2 (en) * 2007-04-11 2012-04-24 Emc Corporation Cluster storage using subsegmenting
US8533256B2 (en) * 2007-10-09 2013-09-10 Cleversafe, Inc. Object interface to a dispersed data storage network
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US20110153606A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Apparatus and method of managing metadata in asymmetric distributed file system
US9323775B2 (en) * 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138125A (en) * 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US20070050543A1 (en) * 2005-08-31 2007-03-01 Ori Pomerantz Storage of computer data on data storage devices of differing reliabilities
CN101064596A (zh) * 2006-04-28 2007-10-31 富士通株式会社 数据保护系统、方法及程序
CN101976174A (zh) * 2010-08-19 2011-02-16 北京同有飞骥科技有限公司 一种垂直排布分布校验的节能型磁盘阵列的构建方法

Also Published As

Publication number Publication date
US10303659B2 (en) 2019-05-28
US20140195574A1 (en) 2014-07-10
CN104583965B (zh) 2017-08-11
WO2014026355A1 (en) 2014-02-20

Similar Documents

Publication Publication Date Title
US10997023B1 (en) Processing a request for encoded data in a storage network
US10481978B2 (en) Optimal slice encoding strategies within a dispersed storage unit
US10042706B2 (en) Optimizing secondary storage in a dispersed storage network
US10013191B2 (en) Encoding data for storage in a dispersed storage network
US20170212803A1 (en) Consolidating data access in a dispersed storage network
CN103608783A (zh) 用于备份应用的存储体系结构
US11442627B2 (en) Data compression utilizing low-ratio compression and delayed high-ratio compression
US11455100B2 (en) Handling data slice revisions in a dispersed storage network
US10691541B2 (en) Method for partial updating data content in a distributed storage network
CN104583965A (zh) 将编码数据文件存储在多个文件服务器上
JP2013541111A (ja) ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化
US20180101329A1 (en) Strong consistency write threshold
US11237904B2 (en) Tracking data access in a dispersed storage network
US10528282B2 (en) Modifying and utilizing a file structure in a dispersed storage network
US11385964B1 (en) Maintaining storage of encoded data slices
US11157362B2 (en) Elastic storage in a dispersed storage network
US10540120B2 (en) Contention avoidance on associative commutative updates
US20190050303A1 (en) Using dispersed computation to change dispersal characteristics
Bhuvaneshwari et al. Review on LDPC codes for big data storage
US20190026147A1 (en) Avoiding index contention with distributed task queues in a distributed storage system
US10511665B2 (en) Efficient resource reclamation after deletion of slice from common file
US10417253B2 (en) Multi-level data storage in a dispersed storage network
US20180052735A1 (en) Efficient, secure, storage of meaningful content as part of a dsn memory
Lee et al. LZCode based compression method for effectively using the memory of embedded devices
US20180081546A1 (en) Modifying information dispersal algorithm (ida) thresholds by splitting existing slices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170811

Termination date: 20190816

CF01 Termination of patent right due to non-payment of annual fee