基于块映射表缓冲存储和虚拟文件系统的可堆叠文件系统模块的分布式存储结构的制作方法

文档序号:6656429阅读:264来源:国知局
专利名称:基于块映射表缓冲存储和虚拟文件系统的可堆叠文件系统模块的分布式存储结构的制作方法
技术领域
本公开一般涉及用于例如分布数据例如流视频数据的分布式存储系统。
背景技术
涉及本文公开的主题的背景信息可以在下列参考中找出(1)E.Zadok等人,“Extending File Systems Using StackableTemplates,”Proc.1999 USENIX Annual Technical Conf.,1999年6月;(2)D.Rosenthal,“Evolving the Vnode Interface,”Proceedings of thesummer USENIX Conference,107-117页,1999年6月;(3)A.Dan等人,“Buffer Management Policy for an On-Demand videoserver,”IBM Research Report RC19347(4)A.Dan等人,“Buffering and Caching in Large-scale video servers,”Proc.Compcon,217-224页,1995年3月;以及(5)M.Bar等人,“Long-term Movie Popularity Models inVideo-on-Demand Systems,”Proceedings of ACM Multimedia Conference,349-357页,1997年11月。


图1示意性的描述了一实施例中的分布式存储组(complex)。
图1A示意性的描述了图1所描述的系统的一个多服务器装置。
图2说明了块缓冲存储文件系统(BCFS)读取操作的例子。
图3说明了一典型的块映射表(block map)。
图4说明了层1和层2缓冲存储器的放大作用的例子。
图5说明了跨缓冲存储器层的流分布的例子。
图6说明了间隔缓冲存储的例子。
具体实施例方式
用于视频服务器组的共享存储系统可以基于缓冲存储块映射表的概念。所述系统可以实现多台视频服务器从服务器组的一公共存储池共同流资源,同时降低分布式文件系统的开销和复杂程度。所述系统可以允许资源的一公共资源池作为视频服务器上的本地文件,并明显地,通过存储区域网络(SAN)将流读出请求重定向到存储装置,所述网络例如为光纤通道存储区域网络(SAN)。
另外,高度可伸缩的视频服务器组可以基于分层缓冲存储的概念。所述系统可以使多台视频服务器能够共同流式传输从分布式组中的一公共存储池的资源。所述系统可以允许存储带宽、存储容量以及流带宽与终端用户需求相联系。
依据一实施例,用于流式传输数据的分布式存储系统可以包括一控制器、一第一计算机和一第二计算机、第一和第二交换机以及一存储设备。所述第一计算机包括一本地文件系统,且可使用所述本地文件系统将资源文件存储在第一存储设备上。另外,所述第一计算机可使用用于创建块映射表的程序,包括关于资源文件存储在第一存储设备上的界限的信息。可创建用于每一资源文件的块映射表。
根据另一实施例,可使用层缓存系统来用于流传输数字资源。这样的系统一典型的实施包括存储所述资源的一第三层高速缓冲存储器,和连接到所述第三层缓冲存储器的多个视频泵。每一视频泵可以包括一第二层高速缓冲存储器,其接收自所述第三层高速缓冲存储器的资源的复本,并发出一或更多流,以及包括一第一层高速缓冲存储器,其接收自第二层高速缓冲存储器的资源的复本,并发出多个流。所述系统还可包括一资源控制器,其从多个视频泵中选择一视频泵以流动所述资源。
图1说明了分布式存储系统的一实施例,其能够流动数据。如所示,所述系统可以包括控制器10、第一计算机12和第二计算机14、第一和第二交换机16和18以及存储设备20。第一计算机12可以包括一本地文件系统12B,其可以用于将本地文件系统中的资源文件存储在第一存储设备20上。另外,第一计算机12可以使用程序12A为每一资源文件产生一块映射表。所述块映射表包括关于资源文件存储在第一存储设备20上的界限的信息。
程序12A可以将块映射表的副本存储在第二存储设备14A上,所述第二存储设备14A连接到第二计算机14设备。如所示,第二计算机14还可以连接到第一存储设备20。
另外,所述系统可以包括虚拟文件系统14B,其使第二计算机14使用存储在存储设备14A中的块映射表的副本能够存取第一存储设备20上的资源文件。
块布局算法可以被第一计算机12的本地文件系统使用,并可以当第一计算机存储资源文件时,连续地写多个本地文件系统块。另外,交换机18可以提供在第一计算机12、第二计算机14和存储设备20之间的并行无阻碍的存取。程序12A可以产生包括指针的“提示文件”(下面将讨论)以在资源文件中定位。
一种读取自存储在第一存储设备上的第一存储文件的数据的方法包括存储第二文件中的块映射表,其中所述块映射表可以包括逻辑块地址列表,且所述列表中的每一逻辑块地址可以识别用于存储第一文件中的数据的扇区。所述方法还可包括发出系统调用以读取自与所述第一文件相关的虚拟文件的数据,检索与所述数据相关的逻辑块地址,和使用所述相关的逻辑块地址读取自所述第一存储设备的数据。
所述说明性的系统的另一方面涉及一种用于流数字资源的分层缓冲存储系统。这样的系统的一个典型的实施例可以包括存储资源的第三层高速缓冲存储器。这可包括例如图1的存储设备20。另外,所述示例性的系统可以进一步包括连接到所述第三层高速缓冲存储器的一或更多视频泵(例如第二计算机14)。这里,视频泵可以包括第二层高速缓冲存储器14A(第二存储设备),其接收自所述第三层高速缓冲存储器的所述资源的副本。并发出一或更多流;第一层高速缓冲存储器14C,其接收自第二层高速缓冲存储器的所述资源的副本,并发出多个流;和资源控制器(例如控制器10),其从多个视频泵中选择一视频泵以流所述资源。分布式存储结构图1A描述了一种可伸缩的视频服务器组的说明性实施例。这样的组可以包括资源控制器10、许多内容复写器12,一或更多所述复写器可以管理一或更多文件系统,以及许多视频泵14。一些或者所有这些部件可以通过以太网和光纤通道交换机16和18被相互连接。这些光纤通道交换机18可以提供视频泵14、内容复写器12和存储阵列20之间的并行无阻的存取。
内容复写器12管理自外部光纤通道存储阵列20的一或更多文件系统的容积。所述存储设备20可以作为本地文件系统安装在所述内容复写器12上。所述系统可以被设计成使得所述组中没有任何其他部件直接安放所述文件系统,但这种结构实现视频泵14自存储设备20流式传输,就如同其被本地地安装在每个视频泵上。一或更多文件系统可以包括一单独的LUN(逻辑单元号),其存在于RAID存储阵列上。
摄取(ingest)或者资源装载可以由内容复写器12执行。这些被摄取的资源可以被写入到所述内容复写器的本地文件系统。资源控制器10可以引导资源在文件系统中的分布,确保资源被统一地和随机地装载在所述存储阵列中。
组中的内容复写器12的数量c可以通过所需要的总摄取容量确定。由于每一内容复写器具有固定的最大摄取容量,因此c简单地为所述组的所期望的总摄取容量除以每一内容复写器的容量摄取。
视频泵14的数量v可以通过所述组提供的流的数量确定,并简单地为期望的流的总数除以每一视频泵的容量。
存储阵列20的数量s可以通过(1)最大存储容量要求,(2)所述组的唯一的或者无缓冲存储的流需求和/或(3)从每一阵列可获得的带宽来确定。统计技术可用于高可能性地确定,在任何给定时间落在最重装载阵列上的负载的最大百分率。
块映射表缓冲存储所述共享的存储结构实现视频泵14自内容复写器(content writer)的本地文件系统的流式传输。其使用块映射表(bmap)缓冲存储装置来完成,所述块映射表缓冲存储装置使内容复写器12能够将资源数据块的位置泄露给视频泵14。视频泵14然后能够通过光纤通道交换机18直接读取这些数据块和自其的流。在所述资源的使用期内,用于所述系统的一或更多资源的块映射表被缓冲存储在一或更多视频泵上的本地文件系统上。每一视频泵上运行的内容同步器程序(syncher process)确保所述块映射表缓冲存储器与内容复写器12上的资源的状态保持一致。持久地缓冲存储用于视频泵上的资源的块映射表和提示文件(hint file)可以使流能够在内容复写器故障的情况下继续。
一种称作块映射表缓冲存储文件系统BCFS的新文件系统层,在流动时,显然实施块映射表资源数据查找以应用。除了这些资源外,提示文件对于流是需要的。这些提示文件可以在摄取的过程中在内容复写器的本地存储上产生。在所述资源的使用期内,提示文件可以与块地图被传送到视频泵14,并类似地存储在本地文件系统上。可选择地,用于这些提示文件的块映射表可以被传送到视频泵14,其使这些文件能够以与资源类似的方式被存取,并需要更少的本地存储和网络资源,但如果在资源摄取过程中需要提示文件数据,则引入额外的延迟。
块映射表缓冲存储文件系统(BCFS)BCFS可以是一薄的文件系统层,所述薄的文件系统层向用户级的应用提供一明显的界面,使他们能够开启和流层3存储设备上的资源,就如同其被本地布置一样。
BCFS不是一文件存储,这意味着其不实施任何盘上的数据结构。它可以使用底层的UFS文件系统以保持所有的资源块映射表和提示文件。
BCFS可以基于可堆叠虚拟节点接口(stackable vnode interface)的概念(参看E.Zadok,等人的“Extending File System Using StackableTemplates,”Pro.1999 USENIX Annual Technical Conf.,1999年6月)。
一虚拟节点或虚拟节点可以是使用在Unix内核中的数据结构以代表实体,例如出现在文件系统名空间的打开文件或目录,所述虚拟节点接口对更高级的内核模块提供统一的方式以对虚拟节点实施操作。虚拟文件系统(VFS)实施共同的文件系统代码,其可包括虚拟节点接口。
这种虚拟节点接口支持称作堆栈的概念,其中,文件系统功能可以通过允许一虚拟节点接口实现调用另一个接口而被模块化。虚拟节点椎栈允许多个文件系统实现序列地出现和彼此调用。在可堆叠的虚拟节点实现中,在椎栈的给定级别的操作可以调用椎栈中的下一较低级别的相同的操作。
图2显示了使用者的读()调用如何可转化成可以被BCFS处理的VFS读取操作。步骤1-3显示,用户程学发布读取,所述读取可以传递到VNODE层,并被发布到bcfs。在步骤4-6中,通过VNDOE层发送递归读取,Bcfs_read从资源块映射表文件中读取块映射表。BCFS然后解析所述块映射表以确定所需要的数据块在层3存储设备上的位置。步骤7显示,bcfs将所翻译的读取直接发布到层3存储设备,并返回结果。
在设计BCFS中一些考虑是1.最小化固定代码的改变。通过引入新的文件系统层,流应用可以存取共享的提示文件和资源,而无需修改。
2.为缓冲存储的块映射表和提示文件提供持续的存储。这样可以降低块映射表缓冲存储的RAM需求,使块映射表能够通过系统的重新启动持续,并使资源块映射表在层3存储设备上的所述资源的使用期内能够保留在视频泵14中。
3.在视频泵14和内容复写器12之间的缓冲区超高速缓存相关性。使用块映射表而不是原始元数据提供对资源的共享存取可以避免超高速缓存相关性问题,如果仅模式,则可出现这些问题。
4.在视频泵14和内容复写器12之间的时间需求。当自主动摄取的内容的流等候的提示文件数据,对于盘为同步(sync),然后在视频泵上读取其,将引入不可接受的的延迟时,提示文件的改变应快速从内容复写器传送到视频泵。摄取所述FFS系统可以被实现使得其不是一共享文件系统例如,可以假设存在单独的服务器读或写安装的存储器。基于此假设,其可能够为其缓冲区缓冲存储器中的缓冲存储器索引节点和间接的块元数据。当文件系统元数据由于写或删除资源文件而改变时,没有用于将此高速缓冲存储器与其它服务器同步的机构。变。如果资源元数据在服务器A和服务器B中高速缓存,向所述资源写入,因此改变所述元数据,纳米服务器A将不知道新的元数据。虽然向FFS添加缓冲区高速缓存同步是概念上可能的,然而这样做将变得复杂并可潜在地使文件系统部件不稳定。通过将块映射表的当前状态公布给所有服务器,传送块映射表可避免超高速缓存相关性。注意,由于块映射表通信的开销,此方案在通用共享文件系统可能不令人满意地工作。然而,在一视频泵组中,所述视频泵组的特征为(1)每资源一单独的复写器,(2)资源被写一次且多次流,以及(3)大的资源块尺寸导致紧密的块映射表表示,所述方法是相当有效的。VFS堆栈可以通过在现有的较低层上安装BCFS层而被建立。例如,mount-tbcfs/localfs/assets/cache在安装点“/assets/cache”安装块缓冲存储文件系统/localfs。对/assets/cache中的文件的所有存取现在通过BCFS模块到底层本地文件系统,其包括块映射表和提示文件的副本。所述块映射表文件用作层3存储设备上的远程文件的代理。内容同步器程序安排本地块映射表文件具有与层3存储设备上的实际资源文件名相同的名(或可选择带有附加的“.bmap”扩展名)。
作为VFS一实现的例子,这种典型的VFS实现显示远程存储上的资源列表而不是本地文件。。这可能是通用共享文件系统的重要特征,但bcfs设计成具体处理使用最小的开销提供高性能共享存取资源的问题。提供分布式目录服务可需要块映射表文件(或者相关的结构)具有充足的信息,以存取描述共享存储上的目录项和索引节点(inodes)的元数据。将此信息传送到视频泵14需要用于保持超高速缓存相关性和锁住的条款,其增加额外的开销。更重要地,这些元数据存取将与流式存取存储阵列20的服务竞争,并且因此使流性能降低。从简单的1s命令产生的读取脉冲引起流传输的中断。如所设计的,在流期间VP由进行的对存储阵列20单独请求用于流数据,而不用于任何元数据。块映射表定义在实现例中,这部分描述了术语块映射表或bmap可包含的意思。如图3所示,存储在盘上的资源可以包括邻接的扇区序列,其称作块。依赖于所述文件系统的块布局策略,块可以邻接放置或以跨盘的地址空间的某种方式分布。
块可以通过它的逻辑块地址(LBA)和长度被完全制定。因而块映射表是块的序列,其中LBA和长度可以用于识别块。
为了实现从盘驱动器的高水平的吞吐量,块应该是具大的以分期偿大数据传送的寻找(移动磁头到所述块的初始位置)加等待时间(等待底板旋转直到数据在磁头下面)的成本。对于目前一代的光纤通道磁盘驱动器,尺寸在512K到2MB的范围的块可以提供邻接的数据上的50%-80%的盘可容忍的吞吐量。
由于单独的32位LBA和16位长度足于描述光纤通道设备的块,因此资源的尺寸与其块映射表的尺寸的比率可等于至多(块尺寸/6)∶1。对于块被文件系统邻近地放置的程度,块映射表的尺寸可以另外降低。
基于1MB的邻接的块排列,资源尺寸和块映射表尺寸之间的比例为167000∶1,并且由于在可能的情况下FFS连续地放置块,所述比例通常更小。例如,用于1GB的资源的块映射表最多6KB。
所述文件系统块尺寸不是由存储阵列确定;而是,其可以由在视频泵上的运行的文件系统确定。存储阵列根据逻辑块地址(LBAs)所述操作,其中LBA引用的每一块通常是512字节(所述设备的“扇区尺寸”)。
所述文件系统以文件系统块尺寸单元寻址数据块。用于FFS的最大的文件系统块尺寸是64K。由于这对于实现吞吐量的目标不足够大,因此文件系统的块布局算法可以被修改,以保证文件系统块被连续地布置成多个资源块尺寸。单独的资源块尺寸可以用于给定文件系统中的所有的资源,以避免分段的问题。
块映射表文件格式本部分描述用于bmap文件的采样格式(sample format)。所述bmap文件可以包括头文件(header),接着为块描述符列表。
bmap文件头可以包括版本号和SCSI目标和存储设备的LUN ID。

“盘片段(disk slice)”是类似于分割区的FreeBSD概念,其允许驱动器被分成独立的区域或“片段”。片段使一服务器能够引导装入多个操作系统。每个OS存在于独立的分区中。在一片段中,可以定义多个分割区,其中每一分割区对应一逻辑盘(例如,“a”,“b”,“c”,...)。当格式化层3存储设备时,可以使用特定定义的片段或分割区,但将所述片段和分割区放入bmap头以避免硬编码的消耗,且允许层3存储结构的灵活性。
LUN可以为bmap头,这是因为bcfs可需要其以识别哪一存储阵列RAID设备来读取。在存储阵列RAID设备中,从所述物理驱动器被去掉的块可以聚集地作为一个(或更多)LUNs提供给视频泵。由于一视频泵可以使用多个LUNb,其对于bmap头中的LUN ID识别哪一RAID设备来读取是有利的。
块描述符块描述符定义了盘上的单独的邻接的块的位置和尺寸。在多个fs-blocks尺寸中,逻辑块地址(LBA)和长度定义块的位置。

使用BCFS的资源缓冲存储bmap文件可以当加载资源时在内容复写器12上产生。视频泵14上的内容同步器确保在/assets/cache中的bmap文件相对于内容复写器上的文件是最新的新。当流被分配给视频泵时,然后流服务器程序可打开所述资源并从所述文件读取,如同所述资源被本地存储。
当流应用对于资源数据产生VOP_READ读取请求时,bcfs_read然后从文件读取所述块映射表和设备信息,并确定资源数据寄存的逻辑块地址;bcfs_read然后发布一个或更多对所需要的数据的读取请求并返回。
在资源从内容复写器12中移去后,视频泵上的内容同步器在在/assets/cache/assetname中移去其的bmap文件。此时,内容同步器也从层2本地盘高速缓冲存储器清除所述资源。
使用BCFS的提示文件的高速缓存提示文件可以包括用于执行“技巧模式”(例如快进、倒回)的资源元数据。这些提示文件可以通过软件在资源被加载到存储设备上时,在视频泵上产生出。它们包含用于资源中特殊场景的指针。
提示文件可以以类似bmap文件被处理。提示文件可以在资源被加载时在内容复写器上产生。视频泵上的内容同步器确保,在/assets/cache中的bmap文件相对于内容复写器上的文件是最新的。当流动被分配给视频泵时,流服务器然后可以打开所述提示文件并使用它,这是由于其被本地高速缓冲存储。
可选择地,如果流动资源如它正在被摄取的反应时间需求允许所述,用于提示文件的块映射表可以被缓冲存储在视频泵上。对于所述提示文件数据的读取要求可以通过bcfs用与上面描述的资源读取相同的方法进行处理。
分层高速缓冲存储如上面提到,在多个服务器组中的视频泵14可以使用三层内容存储或高速缓冲存储。分层高速缓冲存储的目的可以为两部分第一,其从资源存储带宽中分离开流带宽。随着高速缓冲存储的累加,“热点”或者阵列之中的负载不平衡的实例可以被避免。没有高速缓冲存储,由于因资源流行中的变化而导致从任何给定的存储阵列中请求数量不成比例的流,因此负载不平衡可以容易地发生。第二,通过从最节省成本类型的媒介提供不同流行程度的资源流,通过利用资源流行中的自然变化,其降低每流的成本。例如,由于存储需求低但带宽需求高,单独的非常流行的资源可以从RAM被最节省成本提供。从具有存储容量但具有低带宽的便宜的慢硬驱动,可最节省成本地提供不经常存取的内容的大的库。
所述分层的缓冲存储实现动态地和自动地最节省成本的(媒介的有类型基于此时的资源的流行度)提供资源。
所述系统的层1可以包括本地RAM,从前可提供相对少量的最流行资源。层2可以包括较大的本地盘高速缓冲存储器,其全部存储最近成流的资源。层2高速缓冲存储器可以是无复制和无文件系统的未处理的块级别的存储设备。层1和层2都是“存储和前向”类型的高速缓冲存储器。层3组成带有中等成流能力的大的、长期存储,其必须是大致等于在任何调整所请求的唯一流的最大数目。
图4和5显示了流传输怎样可在三个缓冲存储层分配。通过智能地选择用于流传输的视频泵14,资源控制器10估计跨连接到一个或更多服务器的缓冲存储层的流的分配。资源控制器10可以被用于确保,层2盘的缓冲存储带宽极限不被跨视频泵14分配流所超过,从而每个视频泵提供可缓冲存储和不可缓冲存储的资源的平衡混合。资源控制器10监控一个或更多视频泵14,和其关联的观察器流的当前特征,从而其可以确定哪个视频泵将被分配与特定资源有关的新的观察器流。这种方法中,组的带宽资源被整体优化。
图4中,u3是从层3存储设备读出的资源的数量,其中,确切地存在一个流。对于这些资源读取。流的数量n3等于从层3的读取的资源的数量。u2+u1表示从层3存储设备读取的资源的数量,其中存在多于一个流。对于这些流,层2缓冲存储器作用类似带宽放大器,在这种情况下,对于多读取的进入层2缓冲存储器每一资源,出现许多数量的观察器流。数量n2+n3表示从层2缓冲存储器传出的带有多个观察器的流的总数量。n2是直接从层2缓冲存储器传出且不进入层1缓冲存储器的观察器流的数量。由于缓冲存储时间改变每个观察器流动,从层2缓冲存储器传出的观察器流相对于与进入层2缓冲存储器的资源读取或相同资源的其他观察器流是时间不同步的,这是因为对于每一观察器流,缓冲存储器的时间偏移。层1缓冲存储算法选择u2+u1流的一子集u1,其是高度可缓冲存储,并引导这些流进入层1RAM缓冲存储器。如同层2缓冲存储器,对于层1缓冲存储器,在层1级缓存的流,出现几个流。数量n3是从层1缓冲存储器传出的流的总数,其不使用层2或层3存储设备任何额外的I/O带宽。由服务器提供的流的总数可为n1+n2+n3。层3存储设备所需要的总带宽可为u1+u2+u3。图5涉及用于IP2160视频泵的典型值的所述参数,其如zipfian资源流行分布所预测的,所述分布与视频流行相关,这公开在M.Bar等人的“Long-term Movie Popularity Models in Video-on-Demand Systems,”Proceedings of ACM Multimedia Conference,349-357页,1997年11月,在此引入作为参考。
除了层2本地盘缓冲存储器的放大作用外,有可能并不需要从层3存储设备读取的资源,这是因为其在先读取,且仍存在于层2的缓冲存储器中。通过层2缓冲存储器的总尺寸与层3存储器的总尺寸的比率可确定此出现的频繁程度。所述比率可以被称作盘缓冲存储命中率(DHCR)。
层1RAM缓冲存储器本部分概述了层1RAM缓冲存储算法的一种可能的实现。在此描述这种算法以解释,层1缓冲存储器如何与其他缓冲存储层联合操作以支持可伸缩的服务器组。
间隔缓存可以为缓冲器管理策略,其识别可被有效缓存来增加服务器吞吐量的暂时有关的流的段。所述算法被描述在A.Dan等人的,“BufferManagement Policy for an On-Demand video server,”IBM Research ReportRC19347中,这里引入作为参考。所述算法关于降低服务器的成性能在A.Dan,等人的文献中被检查,“Buffering and Caching in Large-scale videoservers,”Proc.Compcon,217-224页,1995年3月,这里引入作为参考。间隔可以定义为对相同资源的一对连续的流请求,其为时间重叠的。间隔缓存允许从缓冲存储器服务一对中的在后流,瞬时的缓存要求等于由流开始时间偏移所表示的数据的尺寸。如果所述流开始是紧密间隔的,那么存储可能是重要的。通过维护所有间隔的分类列表以及向具有最小缓存要求的一组间隔分配缓冲存储器,间隔缓存算法利用了这。
图6显示了间隔缓存的例子。在时间0,可从服务器请求流A。在某一随后时间,在流A完成之前,可以请求流B。由于流A和B使用相同的资源,可以形成间隔。可计算由重叠A表示的数据数量,以及间隔可插入分类的间隔列表。由于存在充足的高速缓冲存储器用于所述间隔,因此其可以分配给所述间隔,且从缓冲存储器可完全服务流B的阴影部分。当与静态资源复制相比时,间隔缓存更有效地利用高速缓冲存储器,且不需要任何在先知道资源的流行程度或者手动资源复制。由于技巧模式调用的变化的间隔关系,所述技巧模式中的流并不参与层1缓存,但若所请求的数据出现在层1缓冲存储器中,那么其可仍得益于层1缓存的命中。
层2本地磁盘缓冲存储器层2缓冲存储器的目的可以为,当从外部存储设备20全部读出资源时,通过缓存所有的所述资源,来从资源存储带宽分离开流带宽。其可以包括大的本地驱动阵列,所述阵列可以管理成无复制和无文件系统的原始块级存储设备。其可以是“存储和前向”类型的缓冲存储器,这意味着,当读取块时,写缓冲存储器的内容,且存储操作并不影响自外部存储设备的数据流。例如,在IP2160媒体服务器(中流技术Midstream Technologies)中,层2缓冲存储器寄存在内部驱动阵列的一部分。
层2本地盘缓冲存储器可以与层1间隔缓冲存储器的结构类似。当视频泵以流发布读取,其正被缓存,即,从外部存储器请求所述流时,所述块可以被复制到层2缓冲存储器中的所分配的块,且可产生散列表项,其盘上的文件亏映射表到缓冲存储器块。。在所述视频泵发布一读取之前,其可以检查散列表以查看是否块寄存在本地缓冲存储器上。如果是,从所述缓冲存储块而不是从层3盘设备中读取所述块。
资源控制器操作当选择视频泵14处理流服务请求时,资源控制器10可寻找最可能在缓冲存储器中已经具有资源的服务器,但可将所述请求导引到组中的另一个服务器,以优化使用组的资源。例如,假设从一个视频泵的层1RAM缓冲存储器中提供单独的、高度流行的资源被,且请求此资源的观察器流的数量使视频泵的带宽流容量饱和。在这种情况下,所述视频泵将不利用层3外部存储接口或者层2盘驱动,从而导致从这些层中发出较高的百分比全部流负载,其被布置在所述组中的其他的视频泵14上的。由于视频泵上的层2本地缓冲存储盘带宽被限制,所得到的在其他视频泵14上所缓存的流的增加可以超过其层2盘带宽,这有效地限制了所述组可支持的流的数量。为了最大化作为整体的所述组的吞吐量,在每个视频泵上必须保持可缓冲存储的和不可缓冲存储的资源的均衡的混合,以与图5中所描述的类似相称。
由资源控制器10使用的一相对简单的算法可以有效地保持所述平衡。为了最小化所述资源控制器和视频泵14之间的通信,其描述每个视频泵的动态缓冲存储状态,以及为了必瞒必须存储这样的信息,资源控制器10存储一表,所述表每所请求的资源具有一项,其指示哪一视频泵提供所述资源的观察器流。。由于缓冲存储器对于时间紧密间隔的流是最有效的,因此将新流导引到最后提供资源的视频泵14最有效地利用所述缓冲存储器。此外,所述资源控制器保持当前在每一视频泵上活动的流的数量的计数。如果所述计数超过了设定的阈值,流被导引到具有最小流带宽负载的视频泵。所述机构确保,在视频泵14共享高度流行的资源,没有任何单独的视频泵处理任何给定的高度流行资源的太多流。其也可以在视频泵14分配流负载。
总之,流负载平衡算法的说明性实现可以包括下面步骤1.流请求到达资源控制器10。
2.资源控制器10确定哪个视频泵14最后提供资源。
3.如果没有视频泵14提供所述资源,那么资源控制器10将所述请求导引到具有最可利用的流带宽的一视频泵。
4.否则,如果视频泵14被找到,那么资源控制器10检查对于视频泵上的所述资源的当前活动的计数小于预定的阈值。
a.如果不超过所述阈值,那么资源控制器10将所述请求引导到最后的视频泵;或者
b.如果超过所述阈值,那么资源控制器将所述请求导引到具有最可用的流带宽的视频泵。
结论权利请求并不局限于本文所公开的说明性被这里所公开实施例。例如,基于块映射表缓冲存储和VFS可堆叠文件系统的分布式存储结构模块,以及基于分层缓冲存储的可可伸缩的流视频服务器组的前述公开使用了说明性术语,例如内容复写器、视频泵、控制器等,其不应被解释为限制本申请的保护范围,或者另外暗示,本文所描述的这些系统、设备和方法的发明方面局限于所公开的特定的方法和装置。而且,如本领域技术人员所理解的,本文所公开的很多发明性的方面可以被应用到不用于流媒体或者视频点播目的的计算机系统中。类似地,本发明并不局限于使用VFS可堆叠的文件系统模块和/或上面描述的块映射表的系统,或者应用到特殊类型的计算机、处理器、交换机、存储设备、内存、算法等的系统。内容复写器、视频泵、资源控制器等是基本可编程的计算机,其可采用多种形式,而不脱离本文所公开的发明构思。
鉴于数字处理、网络和存储功能的成本的迅速下降,,例如将用于特殊功能的处理和存储从本文所述的功能性元件之一传送到另一功能元件而不改变本发明的系统的操纵是容易可能的。在许多情况下,本文所述的实现装置(即功能元件)仅是设计者的偏好,并不是硬性的要求。因此,除非其可被清楚的限制,否则本保护范围不能被理解为局限上述的具体实施例。
权利要求
1.一种用于流式传输数据的分布式存储系统,所述系统包括第一计算机,其能够在本地文件系统中存储一个或更多资源文件于第一存储设备,并产生用于所述资源文件的块映射表;一程序,其能够将所述块映射表的副本存储在第二存储设备,所述第二存储设备连接到第二计算机,其中所述第二计算机还连接到所述第一存储设备;一文件系统,其能够实现所述第二计算机存取所述第一存储设备上的所述资源文件;
2.如权利要求1所述的分布式存储系统,其中所述块映射表包括关于所述资源文件存储在所述第一存储设备的界限的信息。
3.如权利要求1所述的分布式存储装置,其中所述文件系统包括一虚拟文件系统(VFS),以及所述虚拟文件系统能够实现所述第二计算机使用所述块映射表的所述副本来存取所述第一存储设备上的所述资源文件。
4.如权利要求1所述的分布式存储系统,其中所述本地文件系统能够使用块布局算法在所述第一计算机存储所述资源文件时,连续地写多个本地文件系统块。
5.如权利要求1所述的分布式存储系统,进一步包括交换机,其能够提供所述第一计算机、所述第二计算机和所述第一存储设备间的并行的,不间断的存取。
6.如权利要求1所述的分布式存储系统,其中所述程序能够产生一提示文件,其包括指向所述资源文件中的位置的指针。
7.如权利要求1所述的分布式存储系统,其中所述第一存储设备能够提供第三层存储机构,以及所述第二计算机包括第一和第二层存储机构。
8.如权利要求7所述的分布式存储系统,其中所述第一层存储机构包括随机存取存储器(RAM),以及所述第二层存储装置包括盘存储设备。
9.如权利要求1所述的分布式存储系统,其中所述VFS包括可堆叠的虚拟节点接口和至少一个虚拟节点。
10.如权利要求1所述的分布式存储系统,进一步包括一内容同步程序,其能够安排连接到所述第二计算机的所述第二存储设备上的块映射表文件副本具有与所述第一存储设备上的相应的资源文件名基本相同的名字。
11.如权利要求1所述的分布式存储系统,其中所述块映射表包括关于所述资源文件存储在所述第一存储设备的界限的信息;所述文件系统包括一虚拟文件系统(VFS),其能够实现所述第二计算机使用所述块映射表的所述副本来存取所述第一存储设备上的所述资源文件,以及包括一可堆叠的虚拟节点接口和至少一个虚拟节点;以及所述程序能够产生一提示文件,其包括指向所述资源文件中的位置的指针。
12.如权利要求11所述的分布式存储系统,其中,所述第一存储设备能够提供第三层存储机构,所述第二存储设备提供第二层存储机构,以及所述第二计算机包括第一层存储机构,其中所述第一层存储机构包括随机存取存储器(RAM),以及所述第二层存储机构包括盘存储设备。
13.如权利要求11所述的分布式存储系统,进一步包括内容同步程序,其能够安排所述第二存储设备上的块映射表文件副本具有与所述第一存储设备上的相应的资源文件名相关的名字。
14.如权利要求11所述的分布式存储系统,进一步包括交换机,其能够提供所述第一计算机、所述第二计算机和所述第一存储设备间的并行的,不间断的存取。
15.一种虚拟文件系统,其使第二计算机能够读取第一存储设备上的文件,所述文件包括存储在第一文件系统中的多个数据块,所述第一存储设备连接到第一计算机,所述虚拟文件系统包括可堆叠的虚拟节点接口;和虚拟节点,其中所述虚拟节点使用存储在由所述第二计算机使用的第二文件系统中的块映射表文件来代表所述文件。
16.如权利要求15所述的虚拟文件系统,其中所述块映射表文件包括块描述符,所述块描述符包括逻辑块地址和块长度,所述块长度包括邻接的扇区的数量。
17.如权利要求16所述的虚拟文件系统,其中所述块描述符表示逻辑存储位置,其包括所述文件的数据块。
18.如权利要求16所述的虚拟文件系统,其所述块映射文件进一步包括头文件,其包括所述存储设备的参数。
19.如权利要求18所述的虚拟文件系统,其中所述参数包括小型计算机系统接口(SCSI)的目标标识符。
20.如权利要求18所述的虚拟文件系统,其中所述参数包括小型计算机系统接口(SCSI)的逻辑单元号。
21.如权利要求18所述的虚拟文件系统,其中所述参数包括盘片段。
22.如权利要求18所述的虚拟文件系统,其中所述参数包括所述第一文件系统的块尺寸。
23.如权利要求18所述的虚拟文件系统,其中所述参数包括所述块映射表文件中的块描述符的数量。
24.如权利要求15所述的虚拟文件系统,其中所述数据块的尺寸是所述第一文件系统的一个块尺寸的倍数。
25.如权利要求15所述的虚拟文件系统,其中所述块映射表文件由一程序在所述文件被存储于所述存储设备时产生。
26.如权利要求25所述的虚拟文件系统,其中所述程序在所述第一计算机上是可执行的。
27.如权利要求15所述的虚拟文件系统,其中所述第一和第二文件系统的类型是相同的。
28.一种自存储在第一存储设备上的第一文件读取数据的方法,所述方法包括将一个块映射表存储于第二文件中,其中所述块映射表包括逻辑块地址列表,以及其中所述列表中的至少一个逻辑块地址识别用于存储所述第一文件中的数据的扇区;发布系统调用从与所述第一文件相关的虚拟文件中读取数据;检索与所述数据相关的逻辑块地址;以及使用所述相关的逻辑块地址读取自所述第一存储设备的数据。
29.如权利要求28所述方法,进一步包括当所述第一文件被存储在所述第一存储设备时,产生所述块映射表。
30.如权利要求28所述方法,进一步包括产生提示文件,所述提示文件包括指向第一文件的指针。
31.如权利要求28所述方法,其中所述第二文件存储在第二存储设备上。
32.如权利要求31所述方法,进一步包括将所述第一存储设备连接到第一计算机和第二计算机,以及将所述第二存储设备连接到所述第二计算机。
33.如权利要求28所述方法,其中所述列表进一步包括与每一逻辑块地址相关的块长度,其中所述块长度表示继所识别的扇区之后的邻接的扇区的数量。
34.如权利要求33所述方法,进一步包括检索相关的块长度,以及其中所述数据块包括在由所述所检索的逻辑块地址和所述相关的块长度识别的逻辑存储区域内。
35.一种计算机可读介质,其包括计算机可读指令,用于将块映射表存储于第二文件中,其中所述块映射表包括逻辑块地址列表,以及其中所述列表中的至少一个逻辑块地址识别用于存储第一文件中的数据的扇区;发布系统调用以读取自与所述第一文件相关的虚拟文件的数据;检索与所述数据相关的逻辑块地址;使用所述相关的逻辑块地址读取自第一存储设备的数据。
36.如权利要求35所述的计算机可读介质,进一步包括用于当所述第一文件被存储在所述第一存储设备上时,产生所述块映射表的计算机可读指令。
37.如权利要求35所述的计算机可读介质,进一步包括用于产生提示文件的计算机可读指令,所述提示文件包括指向所述第一文件的指针。
38.如权利要求35所述的计算机可读介质,其中所述第二文件存储在第二存储设备上。
39.如权利要求35所述的计算机可读介质,其中所述列表进一步包括与每一逻辑块地址相关的块长度,其中所述块长度表示继所识别的扇区之后的邻接的扇区的数量。
40.如权利要求39所述的计算机可读介质,进一步包括用于检索相关的块长度的计算机可读指令,以及其中所述数据块包含在由所述所检索的逻辑块地址和所述相关的块长度识别的逻辑存储区域内。
41.一种分层缓冲存储系统,包括第三层高速缓冲存储器,其能够存储数字资源;和多个服务器,其连接到所述第三层高速缓冲存储器,一个或更多服务器,其包括第二层高速缓冲存储器,其能够接收自所述第三层高速缓冲存储器的所述资源的副本,并向外传输流;以及第一层高速缓冲存储器,其能够接收自所述第二层高速缓冲存储器的所述资源的副本,并向外传输多个流。
42.如权利要求41所述的分层缓冲存储系统,其中所述多个服务器包括多个视频泵。
43.如权利要求41所述的分层缓冲存储系统,进一步包括资源控制器,其能够从所述多个视频泵中选择一视频泵以传输所述资源。
44.如权利要求41所述的分层缓冲存储系统,其中所述第三层高速缓冲存储器包括盘存储设备。
45.如权利要求41所述的分层缓冲存储系统,其中所述第三层高速缓冲存储器包括盘阵列。
46.如权利要求41所述的分层缓冲存储系统,其中所述第二层高速缓冲存储器包括盘存储设备。
47.如权利要求41所述的分层缓冲存储系统,其中所述第一层高速缓冲存储器包括随机存取存储器(RAM)。
48.一种在分层的缓冲存储系统中流式传输资源的方法,所述缓冲存储系统包括第三层缓冲存储器和多个服务器,其中每一所述服务器连接到所述第三层缓冲存储器,并包括第一层缓冲存储器和第二层缓冲存储器,所述方法包括确定正从所述第三层缓冲存储器中流式传输所述资源的多个服务器中的最后一个服务器,和所述最后一个服务器的所述第一和第二层缓冲存储器中的资源流的数量;如果所述数量小于预定的阈值,则使用所述最后一个服务器流式传输所述资源;以及否则使用具有最大可利用的流带宽的服务器流式传输所述资源。
49.如权利要求48所述方法,其中所述服务器被设计为视频泵。
50.一种计算机可读介质,包括计算机可读指令,用于执行权利要求48所述的方法。
全文摘要
一种分布式存储结构和分层缓冲存储系统被使用在视频点播或流媒体应用中,基于块映射表缓存和虚拟文件系统的可堆叠文件系统模块的分布式存储结构的说明性的实施例包括控制器、第一计算机和第二计算机、第一和第二交换机以及存储设备。第一计算机包括本地文件系统,且使用此系统将本地文件系统中的资源文件存储在第一存储设备上。第一计算机使用用于为每一资源文件产生块映射表的程序,所述块映射表包括关于资源文件存储在第一存储设备上的界限的信息。
文档编号G06F17/30GK101027668SQ200580023822
公开日2007年8月29日 申请日期2005年7月20日 优先权日2004年7月21日
发明者杰弗里·L·迪克, 彼得·李 申请人:海滩无极限有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1