在存储节点上存储数据的制作方法
【专利摘要】用于在存储节点上存储数据的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。在一个方面中,一种方法包括接收将跨越各自包括高速缓存的多个存储节点存储的文件。通过各自在不同存储节点上存储文件的部分存储文件。向第一存储节点的高速缓存写入第一部分,直至确定第一存储节点的高速缓存为满。响应于确定第一存储节点的高速缓存为满,选择不同的第二存储节点。为文件的每个部分记录该部分的位置,该位置至少指示存储该部分的存储节点。
【专利说明】在存储节点上存储数据
[0001]有关_请的交叉引用
[0002]本申请要求对通过引用将其公开内容结合于此、名称为STORING DATA ON STORAGENODES、于2011年I月20日提交的第13 / 010, 548号美国专利申请的优先权。
【技术领域】
[0003]本说明书涉及在物理存储设备上存储数字数据。
【背景技术】
[0004]数据分条(striping)包括跨越存储设备阵列存储数据。取代向单个设备写入所有数据,向多个设备并行写入数据,从而使得写入数据的总速率大于仅用单个设备而可能的速率。数据分条可以与其他数据存储技术(例如,存储冗余数据、随着数据的检错或者纠错码)组合以创建快速、可靠的存储。
【发明内容】
[0005]计算机存储系统在存储节点阵列上存储文件。每个存储节点包括一个或者多个存储设备,并且每个存储节点包括高速缓存(例如,随机存取存储器(RAM))和更慢存储装置(例如,硬盘)。高速缓存可以比更慢存储装置存储数据更快。例如,存储节点可以是具有高速缓存能力的硬盘。计算机存储系统从文件向第一存储节点写入数据直至第一存储节点的高速缓存为满,并且然后从文件向第二存储节点写入数据。第一存储节点从第一存储节点的高速缓存向第一存储节点的更慢存储装置复制数据。计算机存储系统继续向各种存储设备写入数据,从而使得完全存储文件。无论存储节点是否被附着到例如个别计算机或者多个数据处理装置,都可以用相同方式写入向存储节点写入的数据。
[0006]一般而言,可以在包括以下动作的方法中体现在本说明书中描述的主题内容的一个创新方面:接收将跨越各自包括高速缓存的多个存储节点存储的文件;通过各自在不同存储节点上存储文件的多个部分存储文件,包括向第一存储节点的高速缓存写入第一部分直至确定第一存储节点的高速缓存为满并且响应于确定第一存储节点的高速缓存为满选择不同的第二存储节点;以及为文件的每个部分记录该部分的位置,该位置至少指示存储该部分的存储节点。这ー方面的其他实施例包括对应系统、装置和在计算机存储设备上编码的被配置用于执行方法的动作的计算机程序。
[0007]这些和其他实施例可以可选地包括以下特征中的ー个或者多个特征。确定第一存储节点的高速缓存为满包括确定用于写入第一部分的数据存储速率已经下降。确定第一存储节点的高速缓存为满包括比较第一部分的数量与第一存储节点的高速缓存的已知大小并且确定数量等于或者超过已知大小。选择第二存储节点包括从存储节点随机选择第二存储节点。选择第二存储节点包括选择具有以往最远写入时间的存储节点。动作还包括向多个存储节点中的每个存储节点分配权值,并且其中选择第二存储节点包括使用权值。每个存储节点的权值基于存储节点的性能特性。选择第二存储节点基于以下各项中的一项或者多项:第二存储节点的性能特性、第二存储节点的使用历史和用于第二存储节点的以往性能记录。选择第二存储节点基于以下各项中的ー项或者多项:由第二存储节点存储的绝对数据数量和由第二存储节点存储的相对于第二存储节点的容量的数据数量。第一存储节点响应于向第一存储节点的高速缓存写入第一部分从第一存储节点的高速缓存向更慢存储装置复制第一部分。存储文件包括向第二存储节点写入第二部分。向第二存储节点写入第二部分包括向第二存储节点的高速缓存写入第二部分直至确定第二存储节点的高速缓存为满。存储文件包括继续向各种存储节点写入文件的部分直至在存储节点中完全存储文件。动作还包括:接收对于文件的请求;从第一存储节点读取第一部分;以及从第二存储节点读取第二部分。
[0008]可以实施在本说明书中描述的主题内容的特定实施例以便实现以下优点中的一个或者多个优点。计算机存储系统可以通过向具有高速缓存的存储节点写入来増加它的存储速度。在高速缓存模式中更频繁地保持存储节点以减少延时并且增加呑吐量。计算机存储系统可以使用存储日志来恢复存储的数据。
[0009]在附图和以下描述中阐述在本说明书中描述的主题内容的一个或者多个实施例的细节。主题内容的其他特征、方面和优点将从描述、附图和权利要求变得清楚。
【专利附图】
【附图说明】
[0010]图1是示例存储系统的框图。
[0011]图2是用于在各自具有高速缓存的存储节点的阵列上存储数据的示例技术的流程图。
[0012]图3是用于在各自具有高速缓存的存储节点的阵列上存储数据的示例技术的流程图。
[0013]图4是用于从各自具有高速缓存的存储节点的阵列读取数据的示例技术的流程图。
[0014]图5是用于存储数据的示例计算系统的示意图。
[0015]在各种附图中的相似标号和标示指示相似要素。
【具体实施方式】
[0016]图1是示例存储系统102的框图。存储系统102包括可以在地理上分布的ー个或者多个数据处理装置。存储系统102在存储节点IlOa-1lOd的阵列上存储数字数据文件。存储系统102可以通过计算机网络106从客户端设备104或者从另ー来源接收电子文件(或者“文件”)。文件可以是任何数据,例如,文本、图像、音频内容、视频内容或者其组合。文件可以如例如通过网络文件系统协议由存储系统102接收。其他协议是可能的。存储系统102可以例如通过在正常操作期间产生服务日志来创建数据以用于存储。存储系统102可以基于其他数据(例如,通过从高分辨率源图像产生小缩略图图像)创建数据以用于存储。存储引擎108确定如何分布文件的内容以用于在存储节点IlOa-1lOd上存储。
[0017]每个存储节点110包括高速缓存112和一个或者多个更慢存储装置114设备。高速缓存112可以例如是RAM、闪存、硬盘等。更慢存储装置114也可以是RAM或者硬盘,但是更慢存储装置114比高速缓存112花费更长时间来存储数据。更慢存储装置114通常具有比高速缓存112更大的存储容量。首先向高速缓存112写入向存储节点110写入的数据,因为可以在高速缓存112中比更慢存储装置114更快地存储数据。存储节点110然后从高速缓存112向更慢存储装置114复制数据。
[0018]例如,存储节点110可以是具有RAM高速缓存的硬盘。首先向RAM高速缓存写入并且然后向盘复制向存储节点110写入的数据。在另ー示例中,存储节点110是具有共享RAM高速缓存的硬盘阵列,例如,廉价盘冗余阵列(RAID)设备。虽然存储节点110包括多个盘,但是存储引擎108可以将存储节点在逻辑上作为单个设备来寻址。
[0019]存储引擎108通过从文件向存储节点写入数据的一部分来存储文件。存储引擎108向该存储节点写入数据直至确定存储节点的高速缓存为满。高速缓存在它存储达到或者接近它的容量的数据数量以使得它不再可以接受新数据以用于存储时为满。以下描述用于确定高速缓存为满的技木。存储引擎108然后从文件向不同存储节点写入数据的另一部分直至确定不同存储节点的高速缓存为满。由存储引擎108写入的部分未必在文件中相邻,并且无需有序写入文件的内容。
[0020]存储引擎108继续从文件在各种存储节点上写入数据直至完全写入文件的内容。备选地,写入少于整个文件的内容。如果所有存储节点具有为满的高速缓存,则存储引擎108可以等待直至高速缓存具有自由空间(在向更慢存储装置复制它的内容之后)或者向更慢存储装置直接写入。在一些实现方式中,无论是否所有存储节点具有为满的高速缓存,存储引擎108继续选择用于写入到的新存储节点直至它发现可用的存储节点。通过向具有可用高速缓存存储的存储节点写入,无论高速缓存是否为满,与向单个设备写入单个文件比较,存储引擎108增加它的数据存储速率。
[0021]存储引擎108跟踪来自文件的写入的数据在存储日志116中的位置。存储日志116包括为了从存储节点恢复文件而必需的信息。例如,存储日志116可以包括数据在第一存储节点上的位置。存储日志116也包括在位置与文件之间的关联(例如,通过在表的相同记录或者行中包括位置和文件名称)。以下在表1中举例说明示例存储日志。
[0022]
【权利要求】
1.一种由数据处理装置执行的方法,所述方法包括: 接收将跨越各自包括高速缓存的多个存储节点存储的文件; 通过各自在不同的存储节点上存储所述文件的多个部分存储所述文件,包括向第一存储节点的高速缓存写入第一部分直至确定所述第一存储节点的高速缓存为满以及响应于确定所述第一存储节点的高速缓存为满选择不同的第二存储节点;以及 为所述文件的每个部分记录所述部分的位置,所述位置至少指示存储所述部分的存储节点。
2.根据权利要求1所述的方法,其中确定所述第一存储节点的高速缓存为满包括确定用于写入所述第一部分的数据存储速率已经下降。
3.根据权利要求1所述的方法,其中确定所述第一存储节点的高速缓存为满包括比较所述第一部分的数量与所述第一存储节点的高速缓存的已知大小并且确定所述数量等于或者超过所述已知大小。
4.根据权利要求1所述的方法,其中选择所述第二存储节点包括从所述存储节点随机选择所述第二存储节点。
5.根据权利要求1所述的方法,其中选择所述第二存储节点包括选择具有以往最远写入时间的存储节点。
6.根据权利要求1所述的方法,还包括向所述多个存储节点中的每个存储节点分配权值,并且其中选择所述第二存储节点包括使用所述权值。
7.根据权利要求6所述的方法,其中每个存储节点的权值基于所述存储节点的性能特性。`
8.根据权利要求1所述的方法,其中选择所述第二存储节点基于以下各项中的ー项或者多项:所述第二存储节点的性能特性、所述第二存储节点的使用历史和用于所述第二存储节点的以往性能记录。
9.根据权利要求1所述的方法,其中选择所述第二存储节点基于以下各项中的ー项或者多项:由所述第二存储节点存储的绝对数据数量和由所述第二存储节点存储的相对于所述第二存储节点的容量的数据数量。
10.根据权利要求1所述的方法,其中所述第一存储节点响应于向所述第一存储节点的高速缓存写入所述第一部分从所述第一存储节点的高速缓存向更慢存储装置复制所述第一部分。
11.根据权利要求1所述的方法,其中存储所述文件包括向所述第二存储节点写入第二部分。
12.根据权利要求11所述的方法,其中向所述第二存储节点写入所述第二部分包括向所述第二存储节点的高速缓存写入所述第二部分直至确定所述第二存储节点的高速缓存为满。
13.根据权利要求1所述的方法,其中存储所述文件包括继续向各种存储节点写入所述文件的部分直至在所述存储节点中完全存储所述文件。
14.根据权利要求1所述的方法,还包括: 接收对于所述文件的请求; 从所述第一存储节点读取所述第一部分;以及从所述第二存储节点读取所述第二部分。
15.ー种包括被配置用于执行操作的一个或者多个数据处理装置的系统,所述操作包括: 接收将跨越各自包括高速缓存的多个存储节点存储的文件; 通过各自在不同存储节点上存储所述文件的多个部分存储所述文件,包括向第一存储节点的高速缓存写入第一部分直至确定所述第一存储节点的高速缓存为满并且响应于确定所述第一存储节点的高速缓存为满选择不同的第二存储节点;以及 为所述文件的每个部分记录所述部分的位置,所述位置至少指示存储所述部分的存储节点。
16.根据权利要求15所述的系统,其中确定所述第一存储节点的高速缓存为满包括确定用于写入所述第一部分的数据存储速率已经下降。
17.根据权利要求15所述的系统,其中确定所述第一存储节点的高速缓存为满包括比较所述第一部分的数量与所述第一存储节点的高速缓存的已知大小并且确定所述数量等于或者超过所述已知大小。
18.根据权利要求15所述的系统,其中选择所述第二存储节点包括从所述存储节点随机选择所述第二存储节点。
19.根据权利要求15所述的系统,其中选择所述第二存储节点包括选择具有以往最远写入时间的存储节点。
20.根据权利要求15所述的系统,所述操作还包括向所述多个存储节点中的每个存储节点分配权值,并且其中选择所述第二存储节点包括使用所述权值。
21.根据权利要求20所述的方法,其中每个存储节点的权值基于所述存储节点的性能特性。
22.根据权利要求15所述的系统,其中选择所述第二存储节点基于以下各项中的ー项或者多项:所述第二存储节点的性能特性、所述第二存储节点的使用历史和用于所述第二存储节点的以往性能记录。
23.根据权利要求15所述的系统,其中选择所述第二存储节点基于以下各项中的ー项或者多项:由所述第二存储节点存储的绝对数据数量和由所述第二存储节点存储的相对于所述第二存储节点的容量的数据数量。
24.根据权利要求15所述的系统,其中所述第一存储节点响应于向所述第一存储节点的高速缓存写入所述第一部分从所述第一存储节点的高速缓存向更慢存储装置复制所述第一部分。
25.根据权利要求15所述的系统,其中存储所述文件包括向所述第二存储节点写入第二部分。
26.根据权利要求25所述的系统,其中向所述第二存储节点写入所述第二部分包括向所述第二存储节点的高速缓存写入所述第二部分直至确定所述第二存储节点的高速缓存为满。
27.根据权利要求15所述的系统,其中存储所述文件包括继续向各种存储节点写入所述文件的部分直至在所述存储节点中完全存储所述文件。
28.根据权利要求15所述的系统,所述操作还包括:接收对于所述文件的请求; 从所述第一存储节点读取所述第一部分;以及 从所述第二存储节点读取所述第二部分。
29.—种编码有计算机程序的计算机存储介质,所述程序包括在由数据处理装置执行时使所述数据处理装置执行操作的指令,所述操作包括: 接收将跨越各自包括高速缓存的多个存储节点存储的文件; 通过各自在不同存储节点上存储所述文件的多个部分存储所述文件,包括向第一存储节点的高速缓存写入第一部分直至确定所述第一存储节点的高速缓存为满并且响应于确定所述第一存储节点的高速缓存为满选择不同的第二存储节点;以及 为所述文件的每个部分记录所述部分的位置,所述位置至少指示存储所述部分的存储节点。
【文档编号】G06F15/16GK103597482SQ201280012751
【公开日】2014年2月19日 申请日期:2012年1月19日 优先权日:2011年1月20日
【发明者】A·卡达奇, L·E·格林菲尔德 申请人:谷歌公司