分布式存储的系统和方法_2

文档序号:8909166阅读:来源:国知局
器和一个或多个存储设备(例如一个或多个本地硬驱动),并可具有软件,例如包括操作系统(例如微软视窗、Mac OS、Linux等)以及伴随的软件应用。
[0038]计算设备121的用户能根据本文披露的技术来保存和检索文件。例如,当操作计算设备111的用户想要存储电子文件150时,电子文件150可首先被存储(101)到计算设备111中的一个的本地存储层I1中。本地存储层110可例如是关联于计算设备111的一个或多个存储设备112的一部分(例如本地硬盘驱动)。本地存储可允许由保存它的用户进行快速和高效的读/写访问。
[0039]如前面提到的,仅在本地存储112中存储文件可能包括若干缺陷。因此,电子文件150可在网络上以多个部分(例如151a、151b、151c和151d[统称151])的形式被异步地传送(102)至其它多个计算设备(例如121a、121b),以使电子文件150跨分布式存储层120中的其它计算设备121而被存储。分布式存储层120(其可被称为例如中间存储层)可包括跨经由广域网、局域网等连接的多个机器的分布式存储。每个机器可被配置成跨其它机器的分布式存储。例如,软件可被安装在每个机器上,当软件被执行时,允许机器与其它机器通信以使特定文件能被存储在局域网上的多个机器上。
[0040]电子文件150可进一步在网络上被异步地传送(103)至云存储层130以使电子文件150被镜像(miiror)在云存储层130中。这种传输可包括在传输前首先加密与文件150对应的数据。如下文中更详细描述的那样,每个电子文件的元数据可被存储在每个计算设备121的本地存储层110中。元数据可包括指向被存储在本地存储层和分布式存储层中的电子文件的诸个部分的位置的指针。
[0041]根据示例性实施例,从计算设备111向分布式存储层120异步传送被存储在本地存储层110中的电子文件150可包括:将电子文件150分割成多个部分151并跨其它计算设备121存储这些部分151。这些部分151可以是固定或可变大小的部分。例如,创建部分151 (可被称为“分块”)可包括将电子文件150的数据分割成固定大小的块(例如但不构成限制,在4kB和8kB大小之间)。替代地,电子文件150可通过使用例如滑动窗技术而被分块成可变大小的块。一般来说,为了解说而非限制,滑动窗技术可包括向上或向下“移动”分块文件至预定义“滑动窗”内的某个点,以尝试寻找公共块。这种滑动可产生能够通过新块填充的间隙。本领域内技术人员将理解,也可使用许多其它合适的变化和技术以将电子文件150分割成多个部分151,并且所披露的主题不旨在限制至本文披露的示例性实施例。
[0042]部分151可经由网络被散列到其它计算设备121的存储设备(例如122a、122b[统称122])上。例如,每个块可被散列(例如通过SHA-1算法等),从而产生可标识键空间(keyspace)内的块的位置的值(通常被称为键)。即,例如,并且如下文中更详细描述的那样,为了检索文件(即检索至少一个块),散列值可标识在哪里能找到块。另外,如果一个块具有与另一个块相同的值,则其散列值将是一样的,并因此相同的数据不需要被复制。经散列化部分151可随后经由网络被传送至另一计算设备121。例如,部分151a、151b可被传送至计算设备121a并被存储在与计算设备121a关联的一个或多个存储设备122a中。部分151b、151c可被传送至计算设备121b并被存储在与存储设备121b关联的一个或多个存储设备122b中。
[0043]被存储在每个计算设备(例如lll、121a和121b)上的元数据随后可被更新以包括指向经散列化部分151的位置的指针。例如,计算设备111可将部分151散列并更新本地存储的元数据,并可使用例如流言协议(gossip protocol)经由网络将元数据发送至另一计算设备。根据所披露的主题的某些实施例,经散列化部分151可通过进一步散列而被复制到一个或多个其它计算设备以形成冗余。
[0044]在示例性和非限定性实施例中,经由网络将部分151散列化在其它计算设备121的存储设备(例如122a、122b (统称122))上可使用诸如Chord之类的分布式散列表实现来达成。为了解说并且不作为限制,每个计算设备(例如121)可以是Chord节点,其中每个Chord节点负责键空间的一些部分。当电子文件150被存储在分布式存储层120中时,它被分解成诸个部分(“块”或“区块”)151并且这些块中的每一个被散列化,由此产生标识每个块在键空间中的位置的值,以及由此的其上将存储每个块的每个计算设备实例。也就是说,例如为了检索数据,计算设备仅需要知道文件的(或块的)散列值,该散列值标识在哪里能够找到数据。这些技术可避免中央协调或数据布置启发。
[0045]如前面提到的,电子文件150可进一步在网络上被异步地传送至云存储层130,以使电子文件150被镜像在云存储层130中。根据示例性实施例,参照图2A和图2B,云存储层130可包括被存储在系统中的整个数据集。云存储层130可充当本地层110和分布式层120的冗余,并且补充或替代地作为超出本地层110和分布式层120的容量的数据的存储库。例如,如图2A所示,在系统包括文件部分A-1的情形下,一个计算设备的本地存储层110可存储例如文件部分A、D和F,分布式存储层120可存储文件部分A、B、C、D、G和F,并且云存储层可存储所有文件部分A-1。
[0046]在示例性实施例中,数据可以类似于本文描述技术的方式被写至云存储层130,以将电子文件从本地存储层异步地传送至分布式存储层。也就是说,文件可被分割成一系列部分或“块”,它们可被传送至云存储层130。云存储层130可包括任何合适的存储服务,其可包括可操作用以在诸如因特网之类的网络上存储电子数据和提供对电子数据的访问的一个或多个存储设备、处理器和/或软件。例如,云存储层130可包括市面上可购得的web存储服务,例如 Amazon S3、Apple iDi sk、EMC Mozy 和 Pro SoftNet iDrive0 本领域内技术人员将理解,可使用多种其它合适的云存储服务,并且所披露的主题不旨在限制于本文披露的例子。例如,75:存储层130不一定是市面上可得的,而是可以是专有75:存储系统。
[0047]根据示例性实施例,云存储层130可包括来自多个分布式存储层的文件,如图2B所示。例如,公司可在两个位置运作局域网,其中在每个网络上的计算机运行本文描述的系统。尽管每个网络可具有单独的分布式存储层(220a、220b),两个层均可被包括在云存储层130中。例如,与分布式存储层220a对应的局域网可包括两个计算设备210a、210b,它们可将电子文件存储在相应的本地存储层中或分布式存储层210a中。类似地,与分布式存储层220b对应的局域网可包括两个计算设备210c、210d,它们可将电子文件存储在相应的本地存储层中或分布式存储层220b中。电子文件可从在其上创建或编辑文件的计算设备(例如210a、210b、210c或210d)被写至云存储层130,或者替代地,文件部分可从分布式存储层220a或220b被写入。
[0048]在示例性实施例中,本地存储层110的容量可被限制。例如,系统可被配置以使给定机器将贡献IGB数据给系统。在一些实施例中,本地存储层110可充当高速缓存。例如,在预定时间流逝后,可从本地存储再分配文件。作为附加或替代,可根据启发模型将文件从本地存储110中移除。分布式存储层120可类似地充当云存储层130的高速缓存。例如并如前面提到的,电子文件可被异步地传送至本地分布式存储110,其中数据可使用例如Chord来存储以确定布置。被发送至分布式层110存储的数据可被复制,以使其保持可用,而不管包含数据的η-1机器的故障,在那里数据被复制η次。存储在分布式存储层120中的操作可异步地执行,因此存储文件数据的用户或应用不需要等待分布式存储操作完成。在一些情形下,分布式存储层120的容量可小于存储系统中的总数据量,在这种情形下,分布式存储层120可充当云存储层130的高速缓存。云存储层130可存储被存储在存储系统中的整个数据集。更新可异步地被写至云存储,并在某些实施例中也可在被发送前被排队。排列可允许系统将一系列短更新作为单个单元上传,而不是在新的更新发生时重复地发送它们。
[0049]云存储层130可另外提供对系统的远程访问,例如通过因特网从远离其上安装系统的局域网的位置进行访问。例如,参见图3,远程计算设备310可访问被存储在云存储层130上的电子文件。远程计算设备310可因此经由云存储层130访问从分布式存储层120镜像的文件。
[0050]如本文中体现的,分布式存储层120中的每个计算设备的本地存储层110可存储与被存储在分布式存储层120和本地存储层110中的电子文件关联的元数据。根据示例性实施例并参照图4,对于所存储的每个电子文件(例如文件150),元数据可包括版本信息420、访问信息、许可信息和逻辑驱动路径信息410。
[0051]为解说目的而非限定,图4描绘文件的元数据,被命名为“test, txt”,具有三个版本:V0430、V1440和V2450。如图4所
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1