使用动态块大小粒度来为计算群集中的不同类型的应用优化文件系统技术领域
本发明的各实施例涉及数据存储的领域,具体而言,涉及使用动
态块大小粒度来为计算群集中的不同类型的应用优化文件系统。
背景技术
文件系统是用于存储和组织文件和数据的方法。文件系统使用存
储子系统以维持文件和数据。文件系统是对存储子系统施加逻辑结构
以使客户端计算机创建、存储和访问存储子系统上的数据的文件的管
理结构。分布式文件系统是通过网络支持文件以及多个客户端的存储
器资源的共享的文件系统。群集文件系统是一种使群集中的多个计算
节点同时访问存储在共享存储子系统上的相同数据的分布式文件系
统。
计算群集是带有多个节点的系统,所述多个节点彼此进行交互,
以给客户端系统作为单个实体提供数据、应用、及其他系统资源。
计算群集通过允许节点和共享存储器被添加到群集中来提供可
缩放性和可靠性。文件系统被用来管理数据在计算群集内的存储。通
过将存储器的特定区域指定到要被存储的数据,存储器被计算群集中
的文件系统分配。群集中的计算节点将文件系统视为带有对群集文件
系统的共享存储子系统的直接访问的本地资源。
云计算是给客户端提供远程虚拟化计算资源作为服务的计算模
型。云计算通过托管和通过网络远程并按需作为服务来提供资源,向
客户端提供软件和硬件资源。从而,最终用户被允许按需利用计算资
源,无需对基础结构和管理的投资。云计算的基础体系结构通常包括
协力工作的服务器的大的分布式群集。
发明内容
相应地,在第一方面,本发明提供了使用动态块大小粒度来为计
算群集中的不同类型的应用优化文件系统的方法:为群集中的每一个
节点预留预定数量的存储分配区域,其中,每个存储分配区域都包括
本地附接的存储器的单个存储盘上的一组连续的数据块;使用本地附
接的存储器的单个存储盘上的连续的数据块集合,作为文件系统的块
分配粒度,以便条带化要为所述群集中的计算操作而存储在文件系统
中的数据;以及,使用共享存储子系统的单个数据块,作为文件系统
的块分配粒度,以便条带化要为群集中的数据访问操作而存储在文件
系统中的数据。
该方法还可以进一步包括将用于计算操作的数据分配到预留的
存储分配区域中的至少一个。该方法还可以进一步包括,当所述群集
中的节点的所述预留的存储分配区域的总数小于所述预定数量时,预
留至少一个另外的存储分配区域,直到所述节点的预留的存储分配区
域的总数等于所述预定数量。该方法还可以进一步包括将计算操作发
送到所述计算群集中的节点,所述计算操作的数据被分配给所述节点
的本地附接的存储器。该方法还可以进一步包括将分配给节点的本地
附接的存储器的每个连续的数据块集合复制到所述群集中的第二节点
的本地附接的存储器。该方法还可以进一步包括将用于数据访问操作
的数据分配到共享存储子系统。该方法还可以进一步包括跟踪分配给
所述共享存储子系统以及所述文件系统中的本地附接的存储器的每个
数据块的位置。优选地,所述数据访问操作是从包括下列各项的组中
选择的:簿记操作、数据传输操作、缓存管理操作、以及预先获取操
作。该方法还可以进一步包括,如果节点的计算操作有故障,则在与
所述计算操作相关联的数据被复制到其中的第二节点上重新启动所述
计算操作。优选地,群集为远程客户端托管计算服务。
在第二方面,提供了使用动态块大小粒度来为计算群集中的不同
类型的应用优化文件系统的系统,包括:计算群集,所述计算群集包
括多个节点,其中,所述多个节点中的每一个都包括本地附接的存储
器,耦合到所述多个节点中的每一个的共享存储子系统,以及耦合到
所述共享存储子系统以及所述多个节点中的每一个的文件系统管理
器,其中,所述文件系统管理器:为所述计算群集中的所述多个节点
中的每一个预留预定数量的存储分配区域,其中,每个存储分配区域
都包括本地附接的存储器的单个存储盘上的一组连续的数据块,使用
本地附接的存储器的单个存储盘上的连续的数据块集合,作为文件系
统的块分配粒度,以便条带化要为所述计算群集中的计算操作而存储
在文件系统中的数据,以及使用共享存储子系统的单个数据块,作为
文件系统的块分配粒度,以便条带化要为所述计算群集中的数据访问
操作而存储在文件系统中的数据。
优选地,文件系统管理器将计算操作发送到所述计算群集中的节
点,所述计算操作的数据被分配给所述节点的本地附接的存储器。
优选地,当所述节点的所述预留的存储分配区域的总数小于所述
预定数量时,所述文件系统管理器预留至少一个另外的存储分配区域,
直到所述节点的所述预留的存储分配区域的总数等于所述预定数量。
优选地,文件系统管理器:将分配给节点的本地附接的存储器的每个
连续的数据块集合复制到所述计算群集中的第二节点的本地附接的存
储器,以及如果所述节点的计算操作有故障,则在与所述计算操作相
关联的数据被复制到其中的第二节点上重新启动所述计算操作。
在第三方面,提供了包括存储在计算机可读介质上的计算机程序
代码的计算机程序,当被加载到计算机系统中并在其上执行时,导致
所述计算机系统执行根据第一方面所述的方法的所有步骤。
该计算机程序可以呈现用于使用动态块大小粒度来为计算群集
中的不同类型的应用优化文件系统的计算机程序产品的形式,包括:
其中具有计算机可读的程序代码的计算机可读存储介质,所述计算机
可读的程序代码包括:计算机可读存储介质包括被配置成为群集中的
每一个节点预留预定数量的存储分配区域的计算机可读的程序代码,
其中,每个存储分配区域都包括本地附接的存储器的单个存储盘上的
一组连续的数据块,计算机可读存储介质还包括计算机可读的程序代
码,这些程序代码被配置成使用本地附接的存储器的单个存储盘上的
连续的数据块集合,作为文件系统的块分配粒度,以便条带化要为群
集中的计算操作而存储在文件系统中的数据,以及被配置成使用共享
存储子系统的单个数据块,作为文件系统的块分配粒度,以便条带化
要为群集中的数据访问操作而存储在文件系统中的数据的计算机可读
的程序代码。
优选地,计算机可读的程序代码还包括:被配置成将计算操作发
送到所述计算群集中的节点,所述计算操作的数据被分配给所述节点
的本地附接的存储器的计算机可读的程序代码。优选地,计算机可读
的程序代码还包括:计算机可读的程序代码,所述计算机可读的程序
代码被配置成,当所述节点的所述预留的存储分配区域的总数小于所
述预定数量时,所述文件系统管理器预留至少一个另外的存储分配区
域,直到所述节点的所述预留的存储分配区域的总数等于所述预定数
量。优选地,计算机可读的程序代码还包括:计算机可读的程序代码,
所述计算机可读的程序代码被配置成跟踪分配给所述共享存储子系统
以及所述文件系统中的本地附接的存储器每个数据块的位置。优选地,
计算机可读的程序代码还包括:计算机可读的程序代码,所述计算机
可读的程序代码被配置成将分配给节点的本地附接的存储器的每个连
续的数据块集合复制到所述群集中的第二节点的本地附接的存储器。
优选地,计算机可读的程序代码还包括:计算机可读的程序代码,所
述计算机可读的程序代码被配置成,如果所述节点的计算操作有故障,
则在与所述计算操作相关联的数据被复制到其中的第二节点上重新启
动所述计算操作。
本发明的各实施例涉及使用动态块大小粒度来为计算群集中的
不同类型的应用优化文件系统。本发明的一方面包括用于使用动态块
大小粒度来为计算群集中的不同类型的应用优化文件系统的方法。该
方法可包括,为群集中的每一个节点预留预定数量的存储分配区域,
其中,每个存储分配区域都包括本地附接的存储器的单个存储盘上的
一组连续的数据块;使用本地附接的存储器的单个存储盘上的连续的
数据块集合,作为文件系统的块分配粒度,以便条带化要为所述群集
中的计算操作而存储在文件系统中的数据;以及使用共享存储子系统
的单个数据块,作为文件系统的块分配粒度,以便条带化要为群集中
的数据访问操作而存储在文件系统中的数据。
本发明的另一实施例包括用于使用动态块大小粒度来为计算群
集中的不同类型的应用优化文件系统的系统。该系统可包括计算群集,
该计算群集包括:多个节点,其中,所述多个节点中的每一个都包括
本地附接的存储器,耦合到所述多个节点中的每一个的共享存储子系
统,以及,耦合到所述共享存储子系统以及所述多个节点中的每一个
的文件系统管理器,其中,所述文件系统管理器:为所述计算群集中
的所述多个节点中的每一个预留预定数量的存储分配区域,其中,每
个存储分配区域都包括本地附接的存储器的单个存储盘上的一组连续
的数据块,使用本地附接的存储器的单个存储盘上的连续的数据块集
合,作为文件系统的块分配粒度,以便条带化要为所述计算群集中的
计算操作而存储在文件系统中的数据,以及使用共享存储子系统的单
个数据块,作为文件系统的块分配粒度,以便条带化要为所述计算群
集中的数据访问操作而存储在文件系统中的数据。
本发明的另一实施例包括用于使用动态块大小粒度来为计算群
集中的不同类型的应用优化文件系统的计算机程序产品,包括:其中
具有计算机可读的程序代码的计算机可读存储介质,所述计算机可读
的程序代码包括:计算机可读存储介质包括被配置成为群集中的每一
个节点预留预定数量的存储分配区域的计算机可读的程序代码,其中,
每个存储分配区域都包括本地附接的存储器的单个存储盘上的一组连
续的数据块,计算机可读存储介质还包括计算机可读的程序代码,这
些程序代码被配置成使用本地附接的存储器的单个存储盘上的连续的
数据块集合,作为文件系统的块分配细粒度,以便条带化要为群集中
的计算操作而存储在文件系统中的数据,以及被配置成使用共享存储
子系统的单个数据块,作为文件系统的块分配粒度,以便条带化要为
群集中的数据访问操作而存储在文件系统中的数据的计算机可读的程
序代码。
附图说明
现在将参考各个附图,只作为示例,对本发明的优选实施例进行
描述,其中:
图1示出了根据一个实施例的带有使用动态块大小粒度为不同类
型的应用优化的文件系统的计算群集;
图2示出了根据一个实施例的用于使用动态块大小粒度来为计算
群集中的不同类型的应用优化文件系统的方法的流程图;
图3示出了根据一个实施例的用于条带化要为计算群集中的计算
操作存储在文件系统中的数据的块分配方案;
图4示出了根据一个实施例的用于条带化要为计算群集中的数据
访问操作存储在文件系统中的数据的块分配方案;以及
图5示出了根据一个实施例的其中可以实现用于使用动态块大小
粒度来为计算群集中的不同类型的应用优化文件系统的过程的系统的
框图。
具体实施方式
下面的描述只用于说明本发明的一般原理,而不对下面要求的权
利要求书中所叙述的发明构思作出限制。此外,此处所描述的特定特
征可以与各种可能的组合和置换中的每一种中的其他所描述的特征组
合地使用。除非特别声明,所有术语都应被赋予它们的最广泛的可能
的解释,包括从说明书的暗示含义以及被本领域的技术人员所理解的
含义和/或如词典,论文等等中所定义的含义。
该描述可以公开用于使用动态块大小粒度来为计算群集中的不
同类型的应用优化文件系统的多个优选实施例,以及其操作和/或构成
部分。尽管将以存储分配过程以及存储设备来描述下面的描述以将本
发明置于示例性实施例上的上下文中,但是应该记住,此处的包括权
利要求的教导对其他类型的系统、设备以及应用(包括云计算环境中
的系统、设备以及应用)可以具有广泛的应用。
本发明的各实施例涉及使用动态块大小粒度来为计算群集中的
不同类型的应用优化文件系统。使用共享存储器的群集文件系统不支
持计算向数据的发送,支持处理大数据集的数据密集型应用(例如,
数据分析应用)所需的特征。另外,使用共享存储器的群集文件系统
的默认块大小很小,导致每个数据块预定一个任务的数据密集型应用
的高任务开销。运行数据密集型应用的基础存储体系结构基于不提供
标准的用于Unix的接口的可移植操作系统接口(POSIX)的因特网
规模的文件系统。因特网规模的文件系统是适合于数据密集型应用但
是不支持传统的应用的性能要求的专门的文件系统。
在一个实施例中,对文件系统的块分配方案提供修改,以支持单
个计算群集中的传统的应用以及数据密集型应用。例如,修改文件系
统的数据分配,以允许POSIX存储栈支持构建于传统的基于POSIX
的群集文件系统上的云分析。在一个实施例中,计算群集的文件系统
可以为数据密集型应用选择与计算操作相关联的数据的大块粒度以及
为传统的应用选择与数据访问操作相关联的数据的小块粒度。在一示
例性实施例中,修改文件系统循环的块分配方案,以使用连续的块(大
块)的集合,作为用于为计算操作条带化数据的分配粒度。在另一示
例性实施例中,文件系统对于用于传统的应用的所有数据访问操作内
部使用默认块大小粒度,小块大小。
图1示出了根据一个实施例的带有使用动态块大小粒度为不同类
型的应用优化的文件系统的计算群集。计算群集102包括多个计算节
点104a,104b...104,也称为应用节点。在一示例性实施例中,计算
群集102包括可以扩展到数千计算节点104a,104b...104n的硬件体
系结构。
每个计算节点104a,104b...104n都耦合到本地附接的存储器
106a,106b...106n。例如,本地附接的存储器106a,106b...106n可
以在物理上是计算节点104a,104b...104n内部的和/或在物理上外部
的,使用磁盘阵列设备直接附接的。在一个实施例中,本地附接的存
储器106a,106b...106n包括通过接口标准直接附接到计算节点104a,
104b...104n的存储设备。例如,接口标准包括但不仅限于,光纤通道
(FC)、小型计算机系统接口(SCSI)或集成驱动器电子电路(IDE)。
在一示例性实施例中,每个计算节点104a,104b...104n都包括本地
附接的存储器106a,106b...106n的四个750GB串行高级技术附接
(SAT A)驱动器。
计算群集102包括被配置成管理计算群集102的文件系统的文件
系统管理器108。例如,计算群集102的文件系统可包括但不仅限于,
IBM通用并行文件系统TM(GPFSTM)。在一示例性实施例中,文件
系统管理器108被具体化成软件,并可以从计算群集102中的任何独
立节点运行。
计算群集102还包括共享存储子系统114。例如,共享存储子系
统114可包括但不仅限于,存储区域网络(SAN)设备。共享存储子
系统114耦合到存储交换机112。计算节点104a,104b...106耦合到
存储交换机112以便访问共享存储子系统114。文件系统管理器108
耦合到存储交换机112,以便使用共享存储子系统114来管理计算群
集102的文件系统。共享存储子系统114被配置成给计算节点104a,
104b...104n提供对相同数据的并行访问。共享存储子系统114允许跨
计算节点104a,104b...104n共享写入带宽。在一个实施例中,共享
存储子系统114被设计成使用基础数据保护技术来规避硬件故障。例
如,共享存储子系统114可以使用廉价磁盘冗余阵列(RAID)技术来
提供数据保护。
计算群集102还包括交换网络110。交换网络110被配置成为文
件系统内的组件提供互连。在一个实施例中,交换网络110被配置成
为计算节点104a,104b...104n和文件系统管理器108提供互连。在
一示例性实施例中,交换网络110是对于每一个节点支架的千兆以太
网交换机,以Linux软件运行1千兆/每秒(gbps)的交换机之间的链
路。在另一实施例中,交换网络110进一步被配置成通过网络116提
供对客户端节点118的访问。例如,网络116包括但不仅限于广域网
(WAN)。
在一个实施例中,计算群集102远程地为客户端118托管数据和
计算服务。例如,计算群集102启用云计算服务,以便为远程客户端
在数据站点托管数据和计算服务。在一示例性实施例中,计算群集102
被配置成托管数据分析应用的运行以及通过网络116远程为客户端
118存储与数据分析应用相关联的数据。相应地,计算群集102以云
方式启用并行性和可缩放性,以运行带有大数据集的数据密集型应用。
例如,数据密集型应用包括将大计算任务分解为一组较小的并行化计
算的数据分析应用。
图2示出了根据一个实施例的用于使用动态块大小粒度来为计算
群集中的不同类型的应用优化文件系统的方法200的流程图。在202,
文件系统管理器108为群集102中的每一个计算节点104a,104b...
104n都预留了本地附接的存储器106a,106b...106n的单个存储盘上
的包括一组连续的数据块的预先确定的数量的存储分配区域。在一个
实施例中,文件系统管理器108事先为计算群集102中的每一个计算
节点104a,104b...104n预先获取连续的存储分配区域的池。例如,
事先预先获取连续的存储分配区域的池防止网络延迟和应用性能影
响。相应地,每一计算节点104a,104b...104n将准备好连续的存储
分配区域的池,将不会在输入/输出(I/O)请求的路径中产生网络延
迟。
在一示例性实施例中,为计算群集102中的每一个计算节点
104a,104b...104n预留的预定的存储分配区域的数量是10。例如,
文件系统为计算群集102中的每一个计算节点104a,104b...104n预
先获取十个存储分配区域的池,包括连续的一组数据块。在其他实施
例中,为计算群集102中的每一个计算节点104a,104b...104n预留
的存储分配区域的预定数量可以在但不仅限于5-200个存储分配区域
之间。为群集102中的每一个计算节点104a,104b...104n预留的存
储分配区域的预定数量可以基于要用于数据块的相邻性的级别,在计
算群集102中支持的应用的类型,要使用的文件系统,以及计算群集
102中的应用的性能要求而变化范围。
在204,文件系统管理器108使用本地附接的存储器106a,106b...
106n的单个存储盘上的连续的数据块集合,来作为文件系统的块分配
粒度,以便条带化要被存储在文件系统中以便从计算群集102中的计
算节点104a,104b...104n执行计算操作的数据。在一个实施例中,
文件系统管理器108使用本地附接的存储器106a,106b...106n的单
个存储盘上的连续的数据块集合,大数据块或大块大小粒度,作为分
配要为从计算群集102中的计算节点104a,104b...104n的计算操作
存储的数据的分配粒度。例如,文件系统管理器108使用大块大小粒
度来分配要为计算操作存储的数据,因为小块大小会导致数据密集型
应用的高任务开销。相应地,文件系统的数据分配以及计算群集102
的数据布局信息被修改以使用大块大小粒度,以支持数据密集型应用
的要求。
单个块的块大小粒度可以变化。取决于性能要求以及折衷以及所
使用的文件系统,单个块的默认块大小可以变化。例如,单个块的块
大小粒度可以但不仅限于,在8KB到16MB之间变化。在一示例性
实施例中,单个块的块大小粒度是1MB。例如,1MB固定大小的数
据块防止文件系统中的分段,保持最优顺序读取和写入性能,并允许
节点级别的局部性。在其他示例性实施例中,单个块的块大小粒度是
256KB和512KB。
在一个实施例中,用于条带化要为计算操作存储在文件系统中的
数据的存储分配区域与预先确定的大小相邻。例如,用于条带化要为
计算操作存储在文件系统中的数据的存储分配区域可以是但不仅限
于,从8MB到256MB连续的。在一示例性实施例中,64个1MB
块被分组到用于条带化要为计算操作存储在文件系统中的数据的64
MB存储分配区域。例如,用于条带化要为计算操作存储在文件系统
中的数据的大块粒度可以是包括64个连续的单个1MB数据块的64
MB数据块。在其他实施例中,用于条带化要为计算操作存储在文件
系统中的数据的块大小粒度可以随着所使用的文件系统和应用性能要
求而变化。
文件系统管理器108使用计算群集102中的每一计算节点104a,
104b...104n的本地附接的存储器106a,106b...106n,而并非共享存
储子系统114来为计算操作存储数据。例如,由于本地附接的存储器
106a,106b的低成本以及共享存储子系统114的带宽限制,本地附接
的存储器106a,106b...106n用于为计算操作存储数据。例如,数据
密集型应用的存储器层构建于商品组件上,本地附接的存储器106a,
106b...10n,以最小化存储成本,允许计算群集102可缩放到数千计
算节点104a,104b...104n,以便高度并行的应用可以处理大量的数据。
此外,数据密集型应用的存储器层还使用本地附接的存储器106a,
106b...106n来构建,以通过能够将计算操作发送到数据而并非将数据
发送到计算操作,来有效地支持在数据密集型应用中常见的大文件。
在一示例性实施例中,计算节点104a,104b...104n运行和支持
从其中启动了计算操作的数据密集型类别的应用。在一个实施例中,
数据密集型类别的应用包括但不仅限于,将大计算分解为较小的可并
行化的计算的集合的应用。数据密集型应用中的常见的特征是,它们
是并行的,以及它们的数据访问带宽要求支配其他资源要求。例如,
数据密集型应用通过分区数据集使用映射图,支持计算被分解成较小
的并行计算,并通过可以在计算群集102中的大计算节点104a,104b...
104n上并行化和执行的键/值对来减少函数。
在一示例性实施例中,数据密集型应用包括基于云计算的分析应
用。例如,基于云计算的分析应用包括但不仅限于,处理大量的连续
地变化的数据的科学应用,包括卫星图像模式匹配应用,用于从基因
组序列发现生物机能的应用,用于从望远镜图像导出的天文学数据的
应用,以及使用磁共振成像(MRI)数据的大脑图形(patters)。在
另一实施例中,数据密集型应用还包括诸如web搜索应用以及数据索
引和挖掘应用之类的因特网规模的数据处理应用。
在206,文件系统管理器108将用于计算操作的数据分配到至少
一个预留的存储分配区域中。在一个实施例中,文件系统管理器108
跨文件系统实现数据的条带化,其中大文件被分成相等大小的块,以
及以循环的方式将连续的块置于不同的磁盘上。在一示例性实施例中,
文件系统使用宽条带化,以循环的方式跨本地附接的存储器106a,
106b...106n来条带化连续的数据块集合。例如,条带化技术包括但不
仅限于,宽条带化、窄条带化、以及无条带化。
在208,当计算节点104a,104b...104n的预留的存储分配区域
的总数小于预定阈值时,文件系统管理器108预留至少一个另外的存
储分配区域,直到计算节点104a,104b...104n的预留的存储分配区
域的总数等于预定阈值。在一个实施例中,文件系统管理器108为计
算节点104a,104b...104n预留了本地附接的存储器106a,106b...106n
的单个存储盘上的包括一组连续的数据块的至少一个另外的存储分配
区域,直到节点104a,104b...104n的预留的存储分配区域的总数等
于预定阈值。例如,当计算节点104a,104b...104n的池的基数小于
10时,文件系统管理器108为计算群集102中的计算节点104a,104b...
104n预留了包括连续的数据块集合的另外的存储分配区域。
在210,文件系统管理器108将计算操作发送到计算群集102中
的计算节点104a,104b...104n,所述计算操作的数据被分配给计算节
点104a,104b...104n的本地附接的存储器106a,106b...106n。在一
个实施例中,计算操作以及任务被发送到用于计算操作的数据所驻留
的计算节点104a,104b...104n。例如,将计算任务发送到数据降低了
网络开销,使得计算被处理得很快。在一示例性实施例中,通过使用
文件系统的ioctl,使文件系统的块位置信息向应用暴露,计算任务与
数据一起位于文件系统中。相应地,文件系统管理器108使用块位置
信息来将计算任务发送到与计算任务相关联的数据所驻留的带有本地
附接的存储器106a,106b...106n的计算节点104a,104b...104n。
在212,文件系统管理器108将分配给计算节点104a,104b...104n
的本地附接的存储器106a,106b...106n的每个连续的数据块集合复
制到计算群集102中的至少一个另外的计算节点104a,104b...104n
的本地附接的存储器106a,106b...106n。例如,数据密集型应用需要
能够从基础商品组件中的故障恢复。相应地,在需要数据被跨多个节
点复制的多个节点和盘故障的情况下,数据密集型应用需要能够恢复
和前进,以便在节点或盘故障的情况下,计算可以在不同的节点上重
新启动。在一个实施例中,如果节点的计算操作有故障,则在与计算
操作相关联的数据被复制到其中的第二节点上重新启动计算操作。
复制的机制可以基于所使用的文件系统和群集组件而变化。在一
示例性实施例中,文件系统使用单个源复制模型,写入器将副本转发
到所有副本中。在另一示例性实施例中,文件系统使用流水线复制,
其中,写入器上的向外的带宽不跨多个流共享,以及写入数据可以在
数据被写入到节点的同时,以从流水线中的一个节点到下一节点的序
列被流水线化。
在214,文件系统管理器108使用共享存储子系统114的单个数
据块,作为文件系统的块分配粒度,以便条带化要为计算群集102中
的计算节点104a,104b...104n的数据访问操作而被存储在文件系统
中的数据。在一个实施例中,文件系统管理器108使用共享存储子系
统114的单个数据块,小块,作为用于为传统的应用分配数据的块分
配粒度。在一示例性实施例中,文件系统管理器108使用到同一个文
件的并行写入器,允许为传统的应用跨多个节点共享写入带宽。
在一示例性实施例中,文件系统管理器108为传统的应用的数据
访问操作使用共享存储子系统114的单个数据块,以便进行有效的缓
存管理,并降低预先获取开销,因为应用记录可以横跨不同的盘上的
多个块。例如,内部数据访问操作可包括但不仅限于,簿记操作、数
据传输操作、缓存管理操作,以及预先获取操作。相应地,文件系统
管理器108为已经为传统的应用优化的盘访问以及预先获取操作使用
小块粒度。在216,文件系统管理器108为从计算节点104a,104b...
104n到共享存储子系统114的数据访问操作分配数据。
在218,文件系统管理器108跟踪分配给共享存储子系统114以
及计算群集102中的每一个计算节点104a,104b...104n的本地附接
的存储器106a,106b...106n的每个数据块的位置。在一个实施例中,
文件系统管理器108使用分配图来跟踪分配给共享存储子系统114以
及计算群集102中的每一个计算节点104a,104b...104n的本地附接
的存储器106a,106b...106n的每个数据块的位置。在一个实施例中,
文件系统管理器108为计算群集102中的每一个计算节点104a,104b...
104n提供对分配图的访问。例如,计算节点104a,104b...104n使用
分配图来确定分配给共享存储子系统114以及本地附接的存储器
106a,106b...106n的每一个块的位置。
在一个实施例中,分配图被分成大量的可锁定的分配区域,n节
点计算群集102有n个区域,以允许对分配位图的并行更新。在一示
例性实施例中,分配图中的每个区域都包含群集文件系统102中的每
个盘上的1/n的盘块的分配状态,在任何给定时间点,每个计算节点
104a,104b...104n都具有x个区域的所有权,并使用这些区域来试图
满足所有分配请求。例如,位图布局使文件系统通过一次只访问单个
分配区域来分配跨所有盘适当地条带化的盘空间。相应地,锁定冲突
被最小化,因为计算节点104a,104b...104n可以从不同的区域分配
空间。
图3示出了根据一个实施例的用于条带化要被存储在文件系统中
以便在计算群集中执行计算操作的数据的块分配方案。在一个实施例
中,块分配方案使用本地附接的存储器106a,106b...106n的单个存
储盘上的连续的数据块集合,来作为给来自计算群集102中的计算节
点104a,104b...104n的计算操作分配要被存储的数据的块分配粒度。
示出了本地附接的存储器106a,106b...104n的多个存储盘302a,
302b...302n。文件304被分成多个固定大小的数据块。在一示例性实
施例中,文件304被分成多个1MB的数据块。多个单个1MB数据
块被分组到多个连续的数据块集合。例如,对于64MB级别的相邻性,
64个1MB固定大小的连续的数据块被分组到多个64MB数据块集
合。每一单个64MB数据块集合以循环的方式被分配给本地附接的存
储器106a,106b...106n的单个盘。
例如,连续的数据块集合306a被分配给本地附接的存储器106a,
106b...106n的单个存储盘302a。连续的数据块集合306a被分配给本
地附接的存储器106a,106b...106n的单个存储盘302a。连续的数据
块集合306b被分配给本地附接的存储器106a,106b...106n的单个存
储盘302b。连续的数据块集合306c被分配给本地附接的存储器106a,
106b...106n的单个存储盘302c。连续的数据块集合306n被分配给本
地附接的存储器106a,106b...106n的单个存储盘302n。
连续的数据块集合308a被分配给本地附接的存储器106a,106b...
106n的单个存储盘302a。连续的数据块集合308b被分配给本地附接
的存储器106a,106b...106n的单个存储盘302b。连续的数据块集合
306c被分配给本地附接的存储器106a,106b...106n的单个存储盘
308c。连续的数据块集合308n被分配给本地附接的存储器106a,106b...
106n的单个存储盘302n。
连续的数据块集合310a被分配给本地附接的存储器106a,106b...
106n的单个存储盘302a。连续的数据块集合310b被分配给本地附接
的存储器106a,106b...106n的单个存储盘302b。连续的数据块集合
310c被分配给本地附接的存储器106a,106b...106n的单个存储盘
302c。连续的数据块集合306n被分配给本地附接的存储器106a,106b...
106n的单个存储盘310。
图4示出了根据一个实施例的用于条带化要为计算群集102中的
数据访问操作存储在文件系统中的数据的块分配方案。在一示例性实
施例中,文件系统管理器108使用共享存储子系统114的单个存储盘
上的单个块,作为用于为用于传统的应用的数据访问操作分配数据的
块分配粒度。例如,数据访问操作包括内部簿记操作、数据传输操作、
缓存管理操作,以及为传统的应用优化的预先获取操作。文件404被
分成多个固定大小的数据块。在一示例性实施例中,文件404被分成
多个1MB的数据块。每一单个1MB数据块集合以循环的方式被分
配给共享存储子系统114的单个盘。例如,数据块406a被分配给共享
存储子系统114的单个存储盘402a。数据块406a被分配给共享存储
子系统114的存储盘402a,数据块406b被分配给存储盘402b,数据
块406c被分配给存储盘402c,以及数据块406n被分配给存储盘402n。
数据块408a被分配给共享存储子系统114的存储盘402a,数据块408b
被分配给存储盘402b,数据块408c被分配给存储盘402c,以及数据
块408n被分配给存储盘402n。数据块410a被分配给共享存储子系统
114的存储盘402a,数据块410b被分配给存储盘402b,数据块410c
被分配给存储盘402c,以及数据块410n被分配给存储盘402n。数据
块412a被分配给共享存储子系统114的存储盘402a,数据块412b被
分配给存储盘402b,数据块412c被分配给存储盘402c,以及数据块
412n被分配给存储盘402n。数据块414a被分配给共享存储子系统114
的存储盘402a,数据块414b被分配给存储盘402b,数据块414c被分
配给存储盘402c,以及数据块414n被分配给存储盘402n。数据块416a
被分配给共享存储子系统114的存储盘402a,数据块416b被分配给
存储盘402b,数据块416c被分配给存储盘402c,以及数据块416n
被分配给存储盘402n。
图5示出了根据一个实施例的其中可以实现用于使用动态块大小
粒度来为计算群集中的不同类型的应用优化文件系统的过程的系统的
框图。系统500包括连接到一个或多个服务器计算系统530的一个或
多个客户端设备501。服务器530包括用于传递信息的总线502或其
他通信机制,以及用于处理信息的与总线502耦合的处理器(CPU)
504。服务器530还包括耦合到总线502的主存储器506,如随机存取
存储器(RAM)或其他动态存储设备,用于存储信息和待由处理器504
执行的指令。主存储器506还可以用于在待由处理器504执行的指令
的执行过程中存储临时变量或其他中间信息。
服务器计算机系统530进一步包括耦合到总线502的只读存储器
(ROM)508或其他静态存储设备,用于为处理器504存储静态信息
和指令。提供了存储设备510,如磁盘或光盘,并耦合到总线502,用
于存储信息和指令。总线502可以包含,例如用于寻址视频存储器或
主存储器506的32地址线。总线502也可以包括,例如用于在诸如
CPU 504、主存储器506、视频存储器和存储器510之间传输数据的
32比特数据总线。可另选地,可以使用多路复用数据/地址线来代替单
独的数据线和地址线。
服务器530可以通过总线502耦合到显示器512,以便向计算机
用户显示信息。包括字母数字键及其他键的输入设备514耦合到总线
502,以便向处理器504传递信息和命令选择。另一种用户输入设备包
括光标控制装置516,如鼠标、轨迹球或光标方向键,用于向处理器
504传递方向信息和命令选择,并用于控制显示器512上的光标移动。
响应于处理器504执行主存储器506中包含的一个或多个指令的
一个或多个序列,由服务器530执行本发明的功能。可以从另一个计
算机可读介质(如存储设备510)将这样的指令读取到主存储器506
中。执行主存储器506中包含的指令序列会使处理器504执行此处所
描述的处理步骤。还可以使用多处理布局中的一个或多个处理器来执
行主存储器506中包含的指令序列。在替换实施例中,可以使用硬线
连接的电路来代替软件指令或与软件指令相结合,来实现本发明。如
此,本发明的各实施例不限于硬件电路和软件的任何特定的组合。
计算机可读介质的各种形式可以涉及向处理器504传送一个或多
个指令的一个或多个序列以供其执行。例如,指令最初可以位于远程
计算机的磁盘上。远程计算机可以将指令加载到其动态存储器中,并
使用调制解调器通过电话线路发送指令。服务器530本地的调制解调
器可以通过电话线接收数据,并使用红外发射器将数据转换为红外信
号。耦合到总线502的红外检测器可以接收红外信号中携带的数据,
并将数据放到总线502中。总线502向主存储器506传送数据,处理
器504从主存储器506中检索指令并执行这些指令。在由处理器504
执行之前或之后,从主存储器506接收到的指令可以可选地存储在存
储设备510中。
服务器530还包括耦合到总线502的通信接口518。通信接口518
提供耦合到网络链路520的双向数据通信,而网络链路520又连接到
现在通常被称为因特网528的全球分组数据通信网络。因特网528使
用携带了数字数据流的电的、电磁的或光的信号。向服务器530以及
从服务器530传送数字数据的经过各种网络的信号和网络链路520上
的信号,以及经过通信接口518的信号,是输送信息的载波的示例形
式。
在服务器530的另一实施例中,接口518通过通信链路520连接
到网络522。例如,通信接口518可以是用于提供到对应类型的电话
线路(可以包括网络链路520的一部分)的数据通信连接的综合业务
数字网(ISDN)卡,或调制解调器。作为另一个示例,通信接口518
可以是提供到兼容的LAN的数据通信连接的局域网(LAN)卡。还
可以实现无线链路。在任何这样的实现中,通信接口518都发送和接
收携带了代表各种信息的数字数据流的电的、电磁的或光的信号。
网络链路520通常通过一种或多种网络提供到其他数据设备的数
据通信。例如,网络链路520可以通过局域网522提供到主机计算机
524或到由因特网服务提供商(ISP)526运营的数据设备的连接。ISP
526又通过因特网528提供数据通信业务。局域网522和因特网528
两者都使用携带了数字数据流的电的、电磁的或光的信号。向服务器
530以及从服务器530传送数字数据的经过各种网络的信号和网络链
路120上的信号,以及经过通信接口518的信号,是输送信息的载波
的示例形式。
服务器530可以通过网络、网络链路520和通信接口518发送/
接收消息和数据,包括电子邮件、程序代码。此外,通信接口518可
以包括USB/调谐器,以及网络链路520可以是用于将服务器530连接
到有线信号提供商、卫星提供商或其他陆地传输系统以便从另一源接
收消息、数据和程序代码的天线或电缆。
此处所描述的本发明的示例性版本可以被实现为诸如包括服务
器530的系统500之类的分布式处理系统中的逻辑操作。本发明的逻
辑操作可被实现为在服务器530中执行的步骤的序列,以及作为系统
500内的互连的机器模块。实现是选择问题,并可以取决于实现本发
明的系统500的性能要求。如此,构成本发明的所述示例版本的逻辑
操作被称为,例如操作、步骤或模块。
类似于上文所描述的服务器530,客户端设备501可包括处理器、
存储器、存储设备、显示器、输入设备和用于将客户端设备连接到因
特网528、ISP 526或LAN 522,用于与服务器530进行通信的通信接
口(例如,电子邮件接口)。
系统500还可以包括以与客户端设备501相同方式操作的计算机
(例如,个人计算机、计算节点)505,其中,用户可以使用一台或多
台计算机505来管理服务器530中的数据。
一般而言,如此处所使用的术语“计算机可读介质”是指参与向处
理器504提供指令以供其执行的任何介质。这样的介质可以呈现许多
形式,包括但不仅限于,非易失性介质,易失性介质和传输介质。非
易失性介质包括,例如光盘或磁盘,如存储设备510。易失性介质包
括动态存储器,如主存储器506。传输介质包括同轴电缆、铜线和光
纤,包括构成总线502的线路。
如此,公开了使用动态块大小粒度来为计算群集中的不同类型的
应用优化文件系统。如本领域技术人员所理解的,本发明的各方面可
以作为系统、方法或计算机程序产品来实现。本发明的一方面包括用
于使用动态块大小粒度来为计算群集中的不同类型的应用优化文件系
统的计算机程序产品。该计算机程序产品包括其上包含计算机可读程
序代码的计算机可读存储介质。
计算机可读存储介质包括被配置成为群集中的每一个节点预留
预定数量的存储分配区域的计算机可读程序代码,其中,每个存储分
配区域都包括本地附接的存储器的单个存储盘上的一组连续的数据
块。计算机可读存储介质还包括计算机可读程序代码,这些程序代码
被配置成使用本地附接的存储器的单个存储盘上的连续的数据块集
合,作为文件系统的块分配粒度,以便条带化要为群集中的计算操作
而存储在文件系统中的数据。计算机可读存储介质还包括计算机可读
程序代码,这些程序代码被配置成使用共享存储子系统的单个数据块,
作为文件系统的块分配粒度,以便条带化要为群集中的数据访问操作
而存储在文件系统中的数据。
因此,本发明的各方面可以采取此处可以一般性地被称为“电
路”、“模块”或“系统”的完全硬件实施例、完全软件实施例(包括固件、
常驻软件,微代码等等)或组合了软件和硬件方面的实施例的形式。
此外,本发明的各方面还可以采取以在其上体现了计算机可读的程序
代码的一个或多个计算机可读介质体现的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介
质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介
质可以是,例如但不仅限于,电、磁、光、电磁、红外、或半导体系
统、装置、或设备或前面的各项的任何合适的组合。更具体的计算机
可读存储介质的示例(非穷尽列表)包括下列各项:具有一个或多个
导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、
只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、
光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设
备,或前面的各项的任何合适的组合。在此文档的上下文中,计算机
可读存储介质可以是可以包含、或存储供指令执行系统、设备或装置
使用或与它们一起使用的程序的任何有形的介质。
计算机可读信号介质可以包括其中带有计算机可读程序代码的
传播的数据信号,例如,无论是在基带中,还是作为载波的一部分。
这样的传播信号可以呈现各种形式中的任何一种形式,包括但不仅限
于,电磁、光学或其任何合适的组合。计算机可读信号介质可以是不
是计算机可读存储介质,并且能够传递、传播或传输供指令执行系统、
设备或装置使用或与它们结合使用的程序的任何计算机可读介质。
在计算机可读介质上体现的程序代码可以使用任何合适的介质
进行传输,包括但不仅限于无线、有线线路、光缆、RF等等,或前
面的各项的任何合适的组合。
用于执行本发明的各方面的操作的计算机程序代码可以以一种
或多种编程语言的任何组合来进行编写,包括诸如Java、Smalltalk、
C++等等之类的面向对象编程语言,以及诸如“C”编程语言或类似的编
程语言之类的常规过程编程语言。程序代码可以作为独立软件包完全
在用户的计算机上,部分地在用户的计算机上执行,部分地在用户的
计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或
服务器上执行。在后一种情况下,远程计算机可以通过任何网络类型
连接到用户的计算机,包括LAN或广域网WAN,或者可以连接到外
部计算机(例如,使用因特网服务提供商,通过因特网)。
上文参考根据本发明的各实施例的方法、设备(系统)、以及计
算机程序产品的流程图图示和/或框图描述了本发明的各个方面。可以
理解,流程图和/或框图的每一框,流程图和/或框图中的框的组合,
都可以通过计算机程序指令来实现。这些计算机程序指令可以被提供
给通用计算机、专用计算机,或其他可编程数据处理设备的处理器,
以产生机器,以便通过计算机或其他可编程数据处理设备的处理器执
行的指令产生用于实现在该流程图和/或框图框所指定的功能/动作的
装置。
这些计算机程序指令还可以存储在计算机可读介质中,该介质可
以指示计算机或其他可编程数据处理设备或其他设备以特定方式运
转,以便存储在计算机可读介质中的指令产生一种包括了指令的产品,
这些指令实现了在该流程图和/或框图框所指定的功能/动作。
计算机程序指令还可以加载到计算机、其他可编程数据处理设
备,或其他设备中,以使一系列操作步骤在计算机上、其他可编程设
备上或其他设备上执行,以产生计算机实现的过程,以便在计算机或
其他可编程设备上执行的指令提供用于实现在流程图和/或框图框所
指定的功能/动作的过程。