虚拟文件系统的制作方法

文档序号:6504972阅读:179来源:国知局
专利名称:虚拟文件系统的制作方法
技术领域
本发明涉及交互式宽带服务器系统,特别涉及管理和维护分布于存储装置阵列的数据信息的虚拟文件系统。
背景技术
一直以来,希望提供一个存储和传输流式媒体内容的解决方案。虽然考虑了不同数据的速度,在以4兆比特每秒(Mbps)每流的速度传输时,可伸缩性的初始目标为100至1,000,000个同时独立同步内容流。全部可用带宽受到最大可用底板交换机的限制,目前最大交换机处于太比特(terabit)每秒的范围,或者大约200,000个同时输出流。通常,输出流的数量与每流比特率成反比例。
内容存储最简单的模式是连接至含有单一网络连接器的单一处理器的单一盘驱动器。数据由盘读取,放置于内存,通过网络以分组形式分发给用户。传统数据,例如网页等,以异步方式传输。换句话说,存在任意时延的任意量的数据。从Web服务器上传输了低容量,低分辨率的视频。实时媒体内容,例如视听,需要同步传输,或带有保证传输时间的传输。这样,对带宽的限制在于盘驱动器,盘需要解决臂状移动和旋转延搁。如果在特定时间从驱动器至处理器,系统只能支持6个连续内容的同时流,那么第7个用户的请求需要等待6个优先用户的其中一个放弃内容流。该设计的上层是简单的,下层是盘,作为该设计中唯一的机械装置,其只能这么快速地访问和传输数据。
通过添加另一个驱动器,或多个驱动器,交错驱动器访问,来进行改进。也可以存储复制的内容于每个驱动器,而获得冗余和高性能。这是较好的方案,但还是存在许多问题。只用那么多的内容可以放置于本地的一个驱动器或多个驱动器中。盘驱动器,CPU,和内存每个都是故障单点,其造成的后果将是灾难性的。该系统只能承受盘控制器能控制的驱动器数量。即使带有很多装置,还存在标题分配的问题。在真实世界中,每个人都希望看到最新的电影。单凭经验,80%的内容请求只针对20%的标题。所有机器的带宽不能由一个标题占有,因为这将阻碍对只存储在该机器中不很流行标题的访问。因此,“高需求”标题需要加载于大多数或所有的机器中。简而言之,如果用户希望看一部老电影,那么他将会运气不好-即使该电影已经装入系统中。在一个大型图书馆中,这一比例比上述例子中80/20的比例更大。
如果该系统基于标准局域网(LAN)处理数据,还存在其他效率低的问题。现代基于以太网TCP/IP系统是传输保证方面的重大突破,但还是存在分组冲突和局部丢失分组而重新传递引起的时间代价的问题,需要对其管理使之运作。不能保证及时地获得内容流集。每个用户占据一个交换端口,每个内容服务器也占据一个交换端口。因此,交换端口数是服务器数的两倍,限制了整个在线带宽。


根据下面的说明,结合附图,能更好地理解本发明的益处,特性和优点附图1是根据本发明一个示范实施例实现的交互式内容引擎(ICE)部分简化方框图;附图2是附图1中ICE的部分逻辑方框图,阐述同步数据传输系统;附图3是附图1中ICE的部分方框图,根据本发明实施例进一步阐述附图2中VFS细节和支持功能;附图4显示了表1,阐述附图1中只包含3个盘阵列组的ICE的示范配置;附图5显示了表2,阐述了4个标题是如何使用表1的配置保存;附图6显示了表3,阐述了描述于表2的4个标题的最初12个定位器的内容;和附图7显示了表4,进一步阐述了子块如何存储于附图1中ICE的不同组,SPN,和盘驱动器的细节。
具体实施例方式
下面的说明是为了能使本领域普通技术人员可以制造和使用在特定申请上下文和必要条件中提供的本发明。但是对于本技术领域熟练的技术人员,最优实施例的不同修改是显然的,在此确定的通用原则可应用于其他实施例。因此,本发明不限于这里显示和描述的特定实施例,而是同与这里揭露的原则和新颖特性一致的最宽范围相符合。
这里描述的体系结构提供了改变性能的独立组件,避免当购买初始系统时进行的安装。使用商品组件可以确保使用最新的优良技术,避免单一来源,和得到每流的最低成本。也能容忍独立组件的故障。在许多情况下,从用户的角度,在运行中没有显著的变换。但另一方面,存在简短的“自我修复”周期。在多数情况下,若干故障可以容忍。多数情况下(如果不是全部),不需要立即注意系统即可恢复,使其适于“熄灯(light out)”操作。
内容存储分配和内部宽带由最近最少使用(LRU)算法自动管理,确保RAM缓存和硬盘阵列缓存的内容适应当前的需要,以最有效的方式使用底板交换宽带。系统的带宽很少订购超额(如果有的话),因此不必丢弃或延迟分组的传输。该结构充分利用每个组件的合成宽带,因此可以获得保证,同时网络是私人的,处于完全的掌控,因此即使是不曾预料到的最高要求的情况下,也没有数据通路超载。可以提供任意比特率的流,但还是希望典型的流位于1至20Mbps的范围内。基于有效的带宽,提供异步内容。为了应用程序的需要保存带宽。文件可以是任何大小,且带有最小的低存储效率。
附图1是根据本发明一个示范实施例实现的交互式内容引擎(ICE)100部分简化方框图。为了清楚,并没有显示不能适于完全彻底理解本发明的部分。ICE100包含适当的多个端口(或多端口)吉比特以太网(GbE)交换机101作为底板构造,其拥有连接至许多存储器处理节点(SPN)103的多个以太网端口。每个SPN103是被简化的服务器,包含两个吉比特以太网端口,一个或更多处理器107,存储器109(例如随机存取存储器(RAM)),和合适数量(例如四个至八个)的盘驱动器111。每个SPN103上的第一Gb端口105连接至交换机101的相应端口,实现全双工操作(在每个SPN/端口连接的同时传输和接收),以及用于在ICE100中传输数据。另一个Gb端口(未显示)传输内容输出至下游的用户(未显示)。
每个SPN103可以高速访问其本地盘驱动器,和高速访问每组五个SPN中其他四个SPN的盘驱动器。交换机101是ICE100的底板,而不仅仅是SPN103之间的通信装置。为了阐述的原因,只显示了五个SPN103,但我们知道ICE可典型地包含大量的服务器。每个SPN103用于存储,处理和传输内容。在显示的配置中,每个SPN103使用现有组件进行配置,已经不是通常意义上的计算机。虽然可以考虑标准操作系统,但是这样的中断驱动操作系统会造成不必要瓶颈。
每个标题(例如视频,电影或其他媒体内容)不完全存储在任一单一盘驱动器111中。相反,每个标题数据被分割,存储于多个ICE100的盘驱动器,以此获得交错访问速度优势。单一标题内容分布在多个SPN103的多个盘驱动器中。标题内容的短“时间帧”从每个SPN103的每个驱动器以循环方式(round robin)聚集。以这种方式展开物理加载,避免SCSI和IDE的驱动器数量限制,获得失效-安全操作的形式,并且识别和管理大量标题组。
在显示的特定配置中,每个内容标题被分成固定大小(典型地每块2兆字节(MB))的具体数据块。每个数据块以循环方式存储于不同SPN103组。每个数据块分成四个子块,创建表示奇偶的第五子块。每个子块存储于不同SPN103的盘驱动器。在显示和描述的特定配置中,子块大小大约是512千字节(KB)(“K”是1024),其与每个盘驱动器111的额定数据单元匹配。一次SPN103分为五个,每组或SPN集存储一个标题的一个数据块。如所显示的,该五个SPN103被标为1-4和“奇偶”,其共同存储了数据块113,SPN1、2、3、4和奇偶分别存储了子块113a、113b、113c、113d和113e。子块113a-113e显示为以分布方式存储在每个不同SPN(例如SPN1/DRIVE1,SPN2/DRIVE2,SPN3/DRIVE3等)的不同驱动器中,但也可以存储在任何其他可能的组合(例如SPN1/DRIVE1,SPN2/DRIVE1,SPN3/DRIVE3等)中。子块1-4包含了数据,子块奇偶包含了数据子块的奇偶信息。每个SPN组大小,虽然典型的是五个,可以是任意的,可以是任意其他合适的数量,例如两个SPN至十个SPN。两个SPN可以使用其存储量的50%用于冗余,十个将使用10%。五个是存储效率和发生故障可能性的折中数目。
通过这种方式分布内容,至少可以实现两个目标。第一,可以观看单一标题的用户数量不限于由单一SPN组服务的数量,而受所有SPN组一起的带宽的限制。因此,只需要每个内容标题的一个副本。所折衷的是每秒钟能启动的给定标题的新观察者数量的限制,但该限制性远不及浪费的空间和冗余存储管理额外开销。第二目标是ICE100全面可靠性的提升。使用奇偶驱动器,单一驱动器故障由其内容实时再生所掩盖,其与独立盘冗余阵列(RAID)相似。SPN103的故障由其包含来自若干RAID组的每一组的一个驱动器的事实所掩盖,其中的每一个连续操作。连接至一个故障SPN的用户很快由运行于其他SPN的影子(shadow)程序所接管。在盘驱动器或整个SPN出现故障时,操作员被告知维修或更换故障装置。当一个丢失子块由用户过程重建时,其被传回应该提供该块的SPN中,在那里其被缓存在RAM中(就好像已经从本地盘读取)。这避免浪费其他用户过程执行同一修复流行标题的时间,因为后来的需求由来自RAM的子块满足,只要子块足够流行而保持缓存。
运行于每个“用户”SPN103的用户过程(UP)的目标是从其自身盘聚集子块,加上来自其他用户SPN相应的四个子块,组成视频内容数据块进行传输。用户SPN与一个或多个管理MGMT SPN相区别,后者以相同的方式配置,但实现不同的功能,这将在下面阐述。一对冗余MGMT SPN用于提升可靠性和性能。由每个UP实现的汇聚和组成功能为了多个用户在每个用户SPN103上被实现多次。因此,在用户SPN103之间,存在大量的数据传输。带有分组冲突校验和重试的典型以太网协议将被淹没。典型协议是为了随机传输设计的,其依靠这些事件之间的空闲时间。因此没有使用该方法。在ICE100中,通过使用全双工的、全交换的结构,和通过仔细管理带宽,可以避免冲突。多数通信可以同步实现。交换机101自身以同步方式管理,将在下面进一步阐述,因此传输是协同的。由于确定了哪个SPN103何时开始传输,在特定期间端口不会被比其所能控制的更多的数据所压倒。事实上,数据首先聚集于用户SPN103的存储器109,然后同步地控制其传输。作为协调的一部分,在用户SPN103间存在状态信号。不像实际发往最终用户的内容,该用户SPN装置间的传输信令的数据非常小。
如果允许子块随机或异步地传输,每个子块(大约512K字节,此处“K”是1024)的长度可以压倒GbE交换机101中的任何可用缓冲。传输这么多信息的期间大约是4毫秒(ms),且希望确保多个端口不同时尝试传输至单一端口。因此,如下面将进一步阐述,以导致同步运行的方式控制交换机101,在全加载的情况下充分利用所有的端口。
管理文件系统(或虚拟文件系统或VFS)的冗余目录过程用于当给定内容标题被用户请求时报告它存储在哪里。当加载新标题时,它也可以用于分配所需求的存储空间。所有分配是完整的数据块,它们中的每一个都由五个子块组成。每个盘驱动器的空间由逻辑块地址(LBA)在驱动器中进行管理。子块存储在盘驱动器邻近的扇区或LBA地址中。ICE100中每个盘驱动器的容量由其最大的LBA地址除以每个子块扇区数目来表示。
每个标题映射或“目录项”包含一个列表,在表中显示在哪里存储了标题数据块,特别是每个数据块的子块位于何处。在该阐述的实施例中,列表中代表子块的每一项包含确定具体用户SPN103的SPNID,确定被确定用户SPN103的特定盘驱动器111的盘驱动器号(DD#),和压缩为64比特值的子块指针(或者逻辑块地址或LBA)。每个目录项包含在额定4Mbps下的大约半小时内容的子块列表。这等于450数据块,或者2250子块。每个目录项大约20KB并带有辅助数据。当运行在SPN上的UP请求目录项时,为了相应的用户,整个项被发送并本地保存。即使一个SPN支持1,000个用户,本地列表或目录项只消耗20MB的存储器容量。
ICE100维持所有对于用户可用的标题的数据库。该列表包含本地光盘库,实时网络程序设计,和已经进行许可和传输设置的远程位置的标题。该数据库包含每个标题的所有元数据,包含管理信息(许可期间,比特率,图形分辨率等。)和用户感兴趣的信息(制片人,导演,演员,制作成员,作者等。)。当用户做出选择,查询虚拟文件系统(VFS)209(附图2)的目录,确定该标题是否已经加载在盘阵列中。如果没有,则为该内容启动加载程序(未显示),如果需要的话UP被告知何时该内容可以观看。多数情况下,该延迟时间不超过光盘检索自动设备(未显示)的机械延迟时间,或者大约30秒。
在光盘上存储的信息(未表示)包括所有元数据(它们当盘第一次装载到库中时读入数据库)、以及代表关于这些数据流可预先搜集的标题和所有信息的压缩数字视频和声频。例如,它包含对于在数据流中的所有相关信息的指针,如时钟值和时间戳。它已经划分成子块,具有预计算的和在盘上存储的奇偶性子块。一般地,任何可预先进行以节省装载和处理开销的内容都包括在光盘上。
包括在资源管理系统中的是调度程序(未表示),UP咨询该调度程序以接收用于其流的开始时间(通常在请求的数个毫秒内)。调度程序保证在系统上的负载保持均匀、等待最小、及在ICE100内需要的带宽在所有时间都不超过可用的带宽。当用户请求停止、暂停、快进、后退或中断其流的流动的其它操作时,其带宽被重新分配,并且对于请求的任何新服务(例如,快进流)进行新分配。
图2是ICE100的一部分的逻辑方块图,表明根据本发明的实施例实现的同步数据传送系统200。开关101表示成联接到几个典型SPN103上,包括第一用户SPN201、第二用户SPN203、及管理(MGMT)SPN205。如以前提到的那样,多个SPN103联接到交换机101上,并且为了解释本发明只有两个用户SPN201、203被表示,并且如以前描述的那样实际上仅作为任何SPN103实施。MGMT SPN205实际上仅像任何其它SPN103那样实现,但通常完成管理功能而不是特定用户功能。SPN201表明某些功能,并且SPN203表明每个用户SPN103的其它功能。然而,要理解,每个用户SPN103被设置为完成类似功能,从而对于SPN201描述的功能(和过程)也提供在SPN203,并且反之亦然。
如以前描述的那样,交换机101以每端口1Gbps操作,从而每个子块(约512KB)占用约4ms以从一个SPN传到另一个。每个用户SPN103执行一个或多个用户过程(UP),每个用户过程用来支持一个下游用户。当需要标题的新块重新填充用户输出缓冲器(未表示)时,来自列表的下五个子块从存储那些子块的其它用户SPN请求。由于多个UP可能大体上在同一时间请求多个子块,所以子块传输持续时间另外地会淹没用于单个端口的几乎任何GbE交换机的缓冲能力,勿论用于整个交换机。这对于所示的交换机101是真实的。如果不管理子块传输,则导致用于每个UP的所有五个子块可能同时返回,淹没输出端口带宽。希望收紧ICE100的SPN的传输的计时,从而最关键数据被首先且完好地传输。
SPN201显示成执行UP207以便服务相应的下游用户。用户请求标题(例如,影片),该请求被转发到UP207。UP207把标题请求(TR)传送到位于MGMT SPN205上的VFS209(下面进一步描述)。VFS209把目录条目(DE)返回到UP207,UP207本地存储在211处显示的DE。DE211包括定位标题的每个子块(SC1、SC2、等等)的列表,每个条目包括识别特定用户SPN103的SPNID、识别所述被识别的SPN103的特定盘驱动器111的盘驱动器号码(DD#)、及在所述识别盘驱动器上提供子块的特定位置的地址或LBA。SPN201对于在DE211中的每个子块一次一个地启动时间戳读取请求(TSRR)。在ICE100中,立即和直接进行所述请求。换句话说,SPN201向存储数据的特定用户SPN103立即和直接地提出对于子块的请求。在显示的结构中,即使本地存储,也以同样方式进行请求。换句话说,即使请求的子块驻留在SPN201的本地盘驱动器上,它也像远程布置那样经交换机201送出请求。网络是可以构造成识别出请求正在从SPN发送到同一SPN的定位。同样地处置所有情形会更加简单,特别是在其中请求实际上是本地的可能性较小的较大设施。
尽管请求被立即和直接地送出,子块每个都以完全管理方式返回。每个TSRR使用SPNID到特定用户SPN,并且包括用于目标用户SPN的DD#和LBA,以检索和返回数据。TSRR还可以包括任何其它识别信息,该信息足以保证请求的子块适当地返回到适当的请求者并且使请求者能够识别子块(例如,区分在目的地SPN上执行的多重UP的UP标识符、区分用于每个数据块的多个子块的子块标识符、等等)。每个TSRR也包括识别何时进行原始请求的具体时间的时间戳(TS)。TS识别用于同步传输目的的请求的优先级,其中优先级基于时间,从而较早请求呈现较高优先级。当被接收到时,被请求标题的返回子块存储在本地标题存储器213中,以便进一步处理和传送到请求该标题的用户。
用户SPN203表明在每个用户SPN(例如,201、203)上执行的传送过程(TP)215的操作和支持功能,用来接收TSRR和用来返回请求子块。TP215包括存储过程(未表示)或者否则与存储过程相接口,该存储过程与在SPN203上的本地盘驱动器111相接口,其用来请求和访问存储子块。存储过程可以以任何希望方式实现,如状态机等,并且可以是在TP215与本地盘驱动器111之间接口的分离过程,如对于本领域的技术人员已知的那样。如表示的那样,TP215从在其它用户SPN103上执行的一个或多个UP接收一个或多个TSRR,并且把每个请求存储在其本地存储器109中的读取请求队列(RRQ)217中。RRQ217存储对子块SCA、SCB等等的请求列表。存储被请求子块的盘驱动器从RRQ217除去对应请求,把它们以实际顺序分类,并且然后以分类顺序执行每个读取。对于在每个盘上的子块的访问按组管理。每一组根据“电梯寻找(elevator seek)”操作(一次扫描从低到高,下次扫描从高到低,等等,从而跨过盘表面的盘头来回扫描,暂停以读取下个顺序子块)按实际顺序分类。成功读取的请求存储在按TS顺序分类的成功读取队列(SRQ)218中。对于失败读取的请求(如果有的话)存储在失败读取队列(FRQ)220中,并且失败信息转发到网络管理系统(未表示),该网络管理系统确定错误和适当的校正动作。注意,在显示的构造中,队列217、218及220存储请求信息而不是实际子块。
成功读取的每个子块放置在为最近请求子块的LRU高速缓冲器而保留的存储器中。对于每个被检索子块,TP215创建对应消息(MSG),该消息包括用于子块的TS、子块的源(SRC)(例如正在从其传输子块的SPNID和其实际存储器位置以及任何其它识别信息)、及子块待传输到的目的地(DST)SPN(例如,SPN201)。如显示的那样,SRQ218包括分别用于子块SCA、SCB等等的消息MSGA、MSGB等等。在读取和高速缓冲被请求的子块之后,TP215把对应MSG发送到在MGMT SPN205上执行的同步交换机管理器(SSM)219。
SSM219从TP接收来自用户SPN的多重MSG并把其按优先级排序,并且最终把传送请求(TXR)发送到识别在其SRQ218中的MSG之一的TP215,如使用消息标识符(MSGID)等。当SSM219把带有识别在SRQ218中的子块的MSGID的TXR发送到TP215时,请求列表从SRQ218移动到网络传送过程(NTP)221(其中“移动”指示从SRQ218除去请求),该过程221建立用来把子块传送到目的地用户SPN的分组。其中从SRQ218除去子块请求列表的顺序不必是顺序的,尽管列表按时间戳顺序,因为只有SSM219确定适当的排序。SSM219把一个TXR发送到具有至少一个子块待发送的每个其他SPN103,除非所述子块要发送到已经计划接收相等或较高优先级子块的SPN103上的UP,如下面进一步描述的那样。SSM219然后向所有用户SPN103广播单个传送命令(TX CMD)。TP215响应由SSM219广播的TX CMD命令而指示NTP221把所述子块传送到用户SPN103的请求UP。以这种方式,已经从SSM219接收到TXR的每个SPN103同时传送到另一个请求用户SPN103。
在MGMT SPN205上的VFS209管理标题列表和它们的在ICE100中的位置。在典型计算机系统中,目录(数据信息)通常驻留在数据所驻留的同一盘上。然而,在ICE100中,VFS209集中布置以管理分布数据,因为用于每个标题的数据跨在盘阵列中的多个盘上分布,该多个盘又跨在多个用户SPN103上分布。如以前描述的那样,在用户SPN103上的盘驱动器111主要存储标题的子块。VFS209如以上描述的那样,借助PSNID、DD#、及LBA,包括用于每个子块的位置的标识符。VFS209也包括外部的ICE100的其它部分(如光学存储)的标识符。当用户请求标题时,使目录信息的完全集合(ID/地址)对于接收了用户的请求的用户SPN103上执行的UP可用。从那里,任务是把子块传送离开盘驱动器到存储器(缓冲器),经交换机101把它们移动到请求用户SPN103,该请求用户SPN103在缓冲器中组装完整的块,把它输送到用户,及重复直到完成。
SSM219在准备消息(RDY MSG)列表223中按时间戳顺序创建“准备”消息列表。其中在用户SPN103上从TP接收消息的顺序不必按时间戳顺序,而是按在RDY MSG列表223中的TS顺序。刚好在下个传送集合之前,SSM219从最早时间戳开始扫描RDY MSG列表223。SSM219首先识别在RDY MSG列表223中的最早TS,并且产生和发送对应TXR消息到存储对应子块的用户SPN103的TP215,以启动该子块的当前传送。SSM219对于每个随后子块按TS顺序继续扫描列表223,产生用于每个子块的TXR消息,该子块的源和目的地还没有包括在当前子块传送中。对于到所有用户SPN103的每个TXCMD广播,每个用户SPN103只一次传送一个子块,并且只一次接收一个子块,尽管它可同时地进行两者。例如,如果TXR消息发送到SPN#10的TP以计划到SPN#2的当前子块传送,那么SPN#10不能同时发送另一个子块。然而,SPN#10可同时从另一个SPN接收子块。此外,SPN#2在从SPN#10接收子块的同时不能同时接收另一个子块,尽管SPN#2可同时传送到另一个SPN,这是因为交换机101的端口的每一个的全双工属性。
SSM219继续扫描RDY MSG列表223,直到已经考虑所有用户SPN103,或者当到达RDY MSG列表223的末端。与TXR消息相对应的RDY MSG列表223中的每个条目最终从RDY MSG列表223除去(或者当发送TXR消息时、或者在完成传送之后)。当前一段时间的最后传送已经结束时,SSM219广播TX CMD分组,该TX CMD分组向所有用户SPN103发信号以开始下一轮传输。对于所描述的特定配置,每次传送在近似4至5秒的时段内同时发生。在每个传送轮次期间,额外的MSG发送到SSM219,并且新TXR消息送出到用户SPN103以计划下一轮传输,及重复该过程。在连续TX CMD之间的时段近似等于传送子块所有字节所必需的时段,包括分组总开销和分组间延迟,加上清除在子块的传输期间在交换机中可能已经发生的所有高速缓冲的时段,典型地为60微秒(μs),加上考虑到由单独SPN识别TX CMD时的延迟引起的任何抖动的时段,典型地小于100μs。
在一个实施例中,复制或镜像MGMT SPN(未表示)是主MGMTSPN205的镜像,从而SSM219、VFS209、及调度程序每个都复制在一对冗余专用MGMT SPN上。在一个实施例中,同步TX CMD广播作为指示MGMT SPN205的健康的脉动(heartbeat)。脉动发送到辅助MGMT SPN,指示一切都好。在没有脉动的情况下,辅助MGMTSPN在预定时间段内,像例如在5ms内,接管所有管理功能。
附图3是ICE的部分方框图,根据本发明的一个实施例进一步阐述VFS209的细节和支持功能。如图所示,VFS209包含虚拟文件管理器(VFM)301和VFS接口管理器(VFSIM)302。VFSIM302是VFS301和ICE100其余部分之间的通信端口,所述其余部分包含系统监视器(SM)303、库加载器(LL)305和用户主监视器(UMM)307。VFSIM302从SM303接收请求和指示,以及向LL305和UMM307提供服务。提供给VFM301的请求和指示被排队并保存,直到被取得。VFM301的响应被缓存,并返回至请求器。VFSIM302管理由其自己和VFM301启动的后台任务。这些任务包含自动内容再分割(re-striping)、存储装置验证/修复、以及容量增大和减少。VFSIM302监控硬件添加/去除的通知;记录装置序列号,以便需要时自动启动验证/修复。这里的讨论涉及VFS209,其分别或都涉及VSM301和VFSIM302,除非另有说明。
VFS209以最大化整体系统性能和便于从硬件故障恢复的方式,管理标题内容存储(分布于存储装置或盘驱动器)。VFS209尽可能地设计成灵活的支持大范围地硬件配置,使ICE100的每个站点部署都能够精细调整硬件支出,满足特定使用特性。当整个系统保持可运行状态时,通过添加新的SPN103,站点可以提升自己的容量。同样地,保持运行的同时,VFS209也能够使SPN以及各个存储装置(例如串行ATA(SATA)驱动器)交替地工作和不工作。ICE100中SPN103的数量只受实施交换机101的当前最大的底板交换机带宽的限制(比如目前大约是500 SPN)。每个SPN103可以有任意数量的存储装置(通常对于给定站点,每个SPN存储装置数量是不变的),每个存储装置含有不同的存储容量(大约或等于该站点指定的最小值)。目前,对于一个站点,典型的是每个SPN103含有1-8硬盘驱动器,虽然该设计能足够灵活地容纳新装置类型(当新装置类型可用时)。进一步,如果单个物理SPN103的容量是站点最小容量的两倍或三倍,可向VFS209添加两个或三个逻辑SPN(这适用于所述最小容量任意偶数倍的情况)。设计所述VFS209使得允许每个站点能随着时间逐步更新其硬件,如所需要的,在每次添加时使用最好的可用硬件。
VFS209智能地管理内容。它具有一些规定以平稳地处理最大负荷的问题,推迟并非要紧的任务,自动再分配内容(再分割过程)以充分利用提升的站点容量,它优先地进行故障恢复以在需要之前预期指令和重建内容,同时它具有较强的从先前使用的存储装置中恢复内容的能力。在显示的一个实施例中,VFM301排他地与VFSIM302通信,VFSIM302由SM303管理、并向LL305和UMM307提供服务。在加电时,VFS209不了解系统硬件配置。当每个用户SPN103自我导入和声明时,SM303组合该SPN的相关细节(它的组联系,盘数量,每个盘的存储容量等),其在VFSIM302注册,VFSIM302通知VFM301。虽然每个SPN都可以存储内容,但并非都需要这么做。VFS209允许任意数量的“热空闲(hot spare)”被保存以储备为空盘,准备在故障修复、定期维修、或其他目的时起作用。
在站点初始,做出关于RAID组中SPN数量的决定。内容均匀地分布在每个SPN组,因此必须添加SPN至RAID组增量中的一个站点。唯一的例外是被指定为空闲的SPN(其以任意数量独立添加)和冗余管理的SPN。在系统初始化时,多数SPN103被添加,但是新SPN组可以在系统的整个过程中的任意时间点被添加。当一个站点通过添加新SPN组提升其容量时,现存的内容在后台自动地被再分割(下面将更详细地解释再分割的过程),来充分利用新添加的硬件。通过第一次再分割(后台的分割过程)实现缩小ICE100的大小,然后删除已经被解除分配的装置。
在VFS209中,每个SPN103完全任意地分配一个逻辑ID,但是为了方便,其通常与SPN的物理地址相应。一旦添加,给定的SPN作为逻辑实体存在于VFS209中,直到被删除。任何无空闲的SPN可以被另一个SPN代替,当该情况发生时,分配同样的逻辑地址。因此,可以随意交换物理SPN(下面将更详细地解释),能够不用中断服务即可提供执行定期维护。一旦全部SPN组在VFS209注册,可以开始在该组中存储内容。但是,为了允许在整个系统上进行统一的内容分配,在加载第一标题之前,所有存储内容的SPN组应当进行注册。
如前所述,标题内容的每个数据块存储于不同的组,内容以循环模式分布于所有的组。更为特别地,每个数据块分成子块(子块的数量等于该站点的组的大小,从数据子块中衍生出奇偶子块作为数组子块之一),每个子块存储于特定组的不同SPN上。例如,假设五个盘驱动器的RAID大小,那么SPN组的大小是五(每个内容数据块有五个子块)。如果每个SPN包含四个驱动器,则共有四个RAID组。第一组包含每个SPN的驱动器1;第二组包含每个SPN的驱动器2,等等。
考虑ICE100的一个示例性的配置,如附图4中表1所述的第一个标题,“标题1”,其只包含三组GP1-GP3,其中每个组被指定为GP,每个数据块被指定为C,每个数据块的子块被指定SC。附图4的表1显示了标号为GP1-GP3的3个组,标号为C1-C12的12个数据块,和数据块的标号为SC1、SC2、SC3、SC4、和SCP的5个子块,其中最后“P”子块表示奇偶子块。标题1的第一数据块C1记录为5个子块SC1-4、SCP(第五个子块为奇偶子块),分别位于第一组GP1的SPN1-5的驱动器1中。标题1的下一个数据块C2记录为5个子块(再次为子块SC1-4、SCP),分别位于第二组GP2的SPN1-5的驱动器1中。同样,第三数据块C3记录在第三组GP3的SPN1-5的驱动器1中。第四数据块C4记录在第一组GP1的SPN1-5的驱动器2中。表1显示了第一标题,“标题1”,是如何存储的。丢失整个SPN(表1的一行)导致损失四个RAID组的每个组中的一个驱动器。所有RAID组继续生产内容,并且通过奇偶再建而不丢失内容。在紧跟先前标题开始的组和驱动器中开始其他的标题。因此,第二个标题,标题2(未显示),在GP2的驱动器2中开始(第二个数据块位于GP3的驱动器2,第三个数据块位于组1的驱动器3,等等)。标题以这种分配方式,以最小化开始时间延迟。每个标题以螺旋方式围绕ICE100,从组3的每个SPN的驱动器4,循环至组1的每个SPN的驱动器1。
附图5的表2显示了如何使用表1中的配置存储四个标题。为了阐述的目的,第一标题T1包含24个数据块T1C1-T1C24,第二标题T2包含10个数据块T2C1-T2C10,第三标题T3包含9个数据块T3C1-T3C9,第四标题T4包含12个数据块T4C1-T4C12。为了简化,3个SPN组中的每一个(SPN组1,SPN组2,SPN组3)折叠至一行,每个标题的第一数据块加下划线,设置为粗体。4Mbps的典型标题包含1350数据块,位于三个VFS目录项中,每个包含450个数据块,其代表了一个半小时的内容。使用100吉字节(GB)盘驱动器,每个RAID组含有超过200,000个数据块(意味着组中的每个驱动器含有超过200,000个子块)。RAID组的每个驱动器的子块分配典型地位于每个驱动器同样的点(逻辑块地址)。
在阐述的配置中,VFS209的每个目录项(DE)包含关于标题的不同的元数据,以及数据块定位器阵列。数据块定位器数据结构包含8个字节两个字节确定所述组,两个字节确定所述盘,四个字节确定所述盘的分配块(block),其中每个块含有一个子块。附图6显示了表3,其阐述了附图2中4个标题T1-T4(显示为标题1-标题4)的最先12个定位器的内容。标题1的未显示的上方12个定位器用完每个盘的块2。在VFSIM302和每个SPN103中复制查找表,该查找表映射每个盘的逻辑地址至其所连接的SPN的MAC(介质访问控制)ID。通过简单用所述块数乘以每个子块的扇区数,可以获得对应于子块的LBA。附图7显示了表4,其进一步阐述了子块如何被存储于ICE100的不同RAID组,SPN(标号为1-5),和盘驱动器(标号为1-4)的细节。例如,标题T1的数据块C01的子块Sa存储于RAID组1的SPN1的盘1的块0,标题T1的数据块C01的下一个子块Sb存储于RAID组1的SPN2的盘1的块0,等等。
内容长度的变化导致存储于每个SPN103的内容数量的微小且不可预测的变化。对于这些示例性的标题,该变化被夸大了,但是对于成百个各自包含一千或更多数据块的标题来说,期望SPN间的差异小于1%。虽然单个存储装置含有大于站点最小值的任意容量,但超过站点最小值的容量可以不用于存储等时(isochronous)内容。因此,站点最小值尽可能地保持足够大,典型地它应当设置为等于站点中最小容量存储装置的容量。站点最小值可在任何时间升高或降低,例如较大装置代替最小容量装置的任何时候,它应当升高至一个较高的值。
依据ICE100的给定配置安装在哪里以及其是如何使用的,VFS209可以很少地接收新标题的存储分配的请求,或者它可以在每半小时的起始接收上百个几乎同时发生的请求。为了快速高效满足存储期望的需求,VFS209维持了一个预先分配的目录项的池。池的大小基于站点的使用概况而预先设置,可以在任何时间改变池的大小,以进行调节或回应站点特性的变化。当VFS209接收了存储分配请求,其首先试图从预先分配的目录项的池来满足所述请求。如果其可用,一个预先分配的目录项立即被返回给该请求者。如果池被用尽,按需地产生新的目录项,如下面将描述的。如果一个分配请求需要同一标题的多个目录项,只有第一个项被立即返回。该标题剩下项的分配将在随后发生,因此加载该任务至由VFS209维护的后台程序列表。补充预先分配的目录项池也是一个后台任务。
为了产生目录项(预先分配的或按需产生的),VFS209需要首先确定被需要的容量是否可用(例如目前不被使用)。如果可用,可以容易地完成请求。如果不可用,VFS209解除分配一个或更多最近最少使用(LRU)标题,以便完成请求。当一个标题以这种方式解除分配,VFS209把该事件告知SM303和的SPN103。当VFS209返回第一目录项至请求者(或呼叫者),则初步的完成分配请求。在一个标题含有多个项时,当呼叫者能够详细说明需要哪个项时,根据需要来提供随后项。每个项包含一个能够存储30分钟内容的子块定位器的表。因此,一个95分钟的电影需要4个项,大多数情况第4个项是不充分使用的。更确切地说,通常第4个项表是基本不使用的,但在盘驱动器上不存在被浪费的空间,因为该盘空间消耗的实际盘驱动器仅是所述5分钟的内容所需要的。在内部,VFS209使用高效存储数据结构来跟踪每个存储装置上的可用子块位置。
通过合并每个项中最后有效数据块(LVC)指针,收回未使用的存储空间成为可能。在上述例子中,当提供给请求者时,第4项最初含有保留的30分钟存储。当实际存储内容的组件结束其任务时,其更新LVC指针并告知VFS209。然后VFS209释放任何未使用的区域,可以在别处使用。由于在长度上是可变的,每个标题可以随处结束,不需要因为任何原因而浪费盘空间,例如对齐存储至任意边界。因此,VFS209尽可能压缩全部盘,利用装置的任何下一个空闲块。最初,为了简化,小文件(例如完全能装在单个块内的系统文件)和其他内容以同样的方式管理。最后,添加微FVS性能,其处理数据块使得它仿佛其是一个盘驱动器,以为了存储许多小文件。
SM303也可以在任意时间指示VFS209解除分配标题,例如当标题许可期限已到,或者其他原因。解除分配命令可以由于当前正在使用标题这一事实而复杂,当这种情况发生时,在一个实施例中,解除分配一直不结束直到访问该标题的每个用户发出结束该标题的全部使用的信号为止。VFS209跟踪当前由每个UMM307使用的所有项,也跟踪由后台程序使用的项。在延迟期间,不允许新的用户访问被标记为解除分配的标题。
在添加或删除新SPN组之后,重新分配现存的内容,或“再分割”,以在再分割过程期间使得资源利用尽可能统一。VFS209在任何需要的时候自动完成再分割。为了使事情简单化,新的和旧的项没有任何重叠;对于新的旧的不存在共用的存储区域(见下)。一旦新的再分割复制结束(由于进展速度受可用带宽的限制,结束时间是不可预期的),新用户可以访问它,并且使用标准程序简单地解除分配旧的复本。在再分割过程中,大多数子块从原先SPN复制到不同的SPN,但小部分复制至同一SPN的不同方位。保留在同一SPN的子块比率是m/(m*n),其中“m”是SPN先前数量,“n”是SPN的新数量。对于从100个更新至110个SPN的站点,每11,000子块中的100个复制于同一SPN。
实时操作包含内容完全是瞬时的实例,还包含正保存其内容的实例。如果任何时候需要瞬时实时缓冲器,在一个实施例中,ICE100使用单个30分钟目录项作为循环缓冲器,以及当不再需要时,使用标准程序解除分配该项以用于任何其他标题。当实时内容正被保存时,需要请求额外的30分钟项,必要的话VFS209解除分配LRU标题。与其他任何标题一样,原始内容可立即用于回放至由LVC指针表示的点,当存储继续时LVC指针定期被更新。在一些场合,“原始内容”在被用户可用之前,被分成具体标题,其中所述用户在原始内容初始开始时间之后希望请求它。准备好后,被编辑内容被添加至VFS209,如同其他任何标题,并且原始内容能被删除。
偶尔希望使得操作的SPN103或盘驱动器离线,以满足其他什么目的。为了完成此操作而不产生负面影响,设置ICE100,使用热空闲之一作为内容容器来复制,更准确地是“克隆”所述装置。当复制过程结束(再次,因为其受到可用带宽的限制,时间不可预期),所述克隆随后呈现前一个装置的标识,操作平稳地与接收通知的VFSIM302和SPN103一起继续。除非该装置物理地断开并且再连至ICE100(也就是除非它不被拔去和去除),VFM301不需要任何参与,因为所述克隆过程和身份交换对于VFM301是不可见的(SPN对于VFM301是逻辑实体,不是物理实体,因为使用互联网协议(IP)地址而非MAC ID)。当盘或SPN连接至ICE100时,其自动完成验证/维修过程(下面描述)以保证数据完成。
从任何给定内容流的角度,一个存储装置的损失或整个SPN的损失看起来都是一样的。特别地,每第n个数据块遗漏一个子块(n由系统中SPN103的数量确定)。通过奇偶再建,指示ICE100弥补这类损失,允许硬件替换的足够时间。维修、验证、和克隆是特定于盘的过程。为了维修、验证、克隆SPN,只需简单启动SPN中的每个盘的程序。当一个UP发送数据块的子块请求,以及任何一个子块没有在预定时间内返回时,UP使用被取回的子块来重建丢失的子块。在一个实施例中,重建的子块被发送至用户SPN,该子块应当从该用户SPN获得而无论故障的原因是什么(也就是由于SPN或SPN的驱动器的故障或者只是网络的延迟)。如果作为应当获得该丢失子块的用户SPN不能接收该重建子块(例如SPN暂时不能上线或故障被限制于SPN的盘驱动器),则它仅是在传输过程中丢失。如果该SPN能够接收该重建子块(例如,所述SPN恢复在线、或故障被限制在该SPN的一个盘驱动器),则它在存储器中缓冲该子块,就好像其从本地盘驱动器中读取。
热交换和奇偶重建需要每个SPN103意识到每个装置的每个块是否有效。最初,当SPN上线时,其没有有效块。当SPN接收和存储子块时(或者验证已经存在的),其把该块标记为有效。当一个SPN接收一个对存储于标为无效的块中的请求时,该SPN回复以一个请求接收该子块。如果所述丢失子块在ICE100的其他地方通过奇偶重建而产生,其被发回SPN(使用可用带宽)以被存储,并且所述块被标记为有效。缺乏对该子块的请求表示该SPN仍然是无用的,且没有重建子块需要被发送。使用这个协议,使用最小额外花销来重新放入替代装置。同时,为了捕获那些由于它们高要求而未受照顾的数据块,简单的后台验证/维修过程完成始-末重建,跳过已经标为有效的区域。
在特定环境下,如当VFSIM302识别出先前已知含有有效内容的盘的再连接时,指导SPN193不考虑其不能发送标为无效的子块的禁止。如果试用的子块通过检验和测试,该子块可以使用(并且源SPN标记其有效),因此可以避免奇偶重建的不必要开销。SPN未能提供被请求子块以及未能请求该子块表示SPN故障。通过监控这些故障,ICE100自动通知系统操作员,并且在熄灯操作期间启动恢复程序。
当不同的物理盘代替一个包含内容的现有盘时,VFSIM302自动启动和管理盘验证/维修。对于盘验证/维修,VFM301准备与已使用的目录项相似的盘维修项(DRE),但是存在一些小差异。450子块都来自坏的驱动器,包含来自超过一个标题的数据块。每个子块(包括丢失的)的检验和也被包含。DRE以最近使用的标题开始,由下一个最近使用的标题紧跟等等的方式提供。如果标题不完全合适,这并没有什么关系,因为在最后一个停止的地方获得下一个DRE。由于事先不知道DRE的全部数量,DRE简单地含有一个标记告知是否其是最后一个。这个过程允许所述维修以有序、优先的方式进行,保持最大的数据完整性。
任何时候出现数据丢失的时候都希望能维修,例如当一个新的盘代替故障盘时。当故障盘在ICE100的某个地方无效时,在整个SPN103中进行恢复接收新盘。一次使用一个DRE,主机SPN请求丢失子块的组员,并使用它们用于奇偶重建。保存该重建子块,并且标记该块为有效。另一方面,如果故障盘连接至空闲SPN,VFSIM302识别它,并试图恢复任何可用子块,以努力减少所需要的奇偶重建的量。VFSIM302首先发送DRE至空闲SPN,在那里它使用检验和和定位器检测候选子块的有效性。当一个通过后,空闲SPN标记该子块为有效,并发送至需要它的SPN,在那里它被存储为有效。当空闲SPN已经恢复并且发送所有能够发送的子块,它通知VFSIM302其已经完成该DRE。如果这时并非所有子块被恢复,VFSIM302发送该DRE至接收新盘的SPN,并且在需要进行奇偶重建。
当一个重建盘从一个SPN移至另一个时,盘或SPN连至系统的任何时候都希望进行内容确认。确认过程本质上与维修过程一样,只是更快。同样的DRE对每个候选子块使用,其一次检测一个。为存在于盘的子块计算校验和。如果被计算的校验和与DRE中校验和相匹配,该子块被认为有效。如果校验和不匹配,从RAID组的其他SPN请求对应于该子块的另外四个子块,重建并存储该丢失的子块。验证过程比重建过程更快,仅仅是因为多数子块(如果不是全部)将通过最初的校验和测试。由于验证程序同重建程序相同,使得操作员可以方便地移动一个驱动器至其正确的槽,即使重建程序只完成了一部分。当操作员拔出部分重建的盘,则重建程序被放弃,当该盘放入新的插槽中时,启动新的验证/重建程序。
克隆比重建/验证程序简单,因为只需从主机装置复制数据。克隆主机将存储内容发送至接受者,此外克隆主机根据发生的变化进行发送。这意味着在内容整体传输至接受者之后,允许克隆程序无限地空闲,保持该两个装置一直同步。当克隆结束后,克隆装置呈现出主机装置的逻辑身份标识,不再需要进一步的确认(除非该装置被移动)。除了验证中的潜在作用,VFS209不涉及克隆。由于主机负责发送和同步,不需要在VFS209中为接受者创建(然后损坏)复制数据结构。
关于来自SM303的请求,VFS209能报告有利于管理ICE100的信息,包含最常使用(MRU)标题列表(未显示)和包含统计的装置使用报告(未显示)。MRU列表包含每个当前存储的每个标题的一个记录,同该标题具体信息一起,例如其被最后请求的日期,其被请求总的次数,其全部大小,以及其是否可以被删除。装置使用报告包含每个SPN的一个记录,提供它的IP地址,它的组联系,以及含有每个存储装置信息的阵列,例如装置ID,块的总数和目前分配块的总数。VFS209也参与系统日志,添加每个重要事件的项。
现在认识到,根据本发明的虚拟文件系统提供了一个标题数据有组织的分布,其最大化标题的访问速度和存储效率。每个标题分为多个子块,分配于连接至多个存储处理器节点的盘驱动器阵列的盘驱动器,所述多个存储处理器节点包含一个管理节点。执行于管理节点的虚拟文件管理器管理存储并访问存储于阵列每个标题的每个子块。虚拟文件管理器维持每个标题的目录项,每个目录项是该标题的子块位置项的列表。每个子块位置项包含一个存储处理器节点标识符、盘驱动器标识符、以及定位和访问存储在盘驱动器阵列的每个标题的每个子块的逻辑地址。
文件管理的集中化提供了优于盘和存储系统的现有技术许多优点。文件或“标题”可以是最大为所有结合的驱动器存储容量的任何大小,不受单一驱动器或冗余存储组的限制。由于目录信息是集中存储的,每个驱动器的全部容量可以存储内容。标题的每个请求不受一个盘驱动器或若干盘驱动器的限制,而是所述负载分布于最多为阵列中的所有盘驱动器。同步交换管理器通过在顺序传输期间确保每个节点一次收到一个数据子块而使效率最大化。集中化的文件管理器允许实现最大程度输出每个盘驱动器的带宽,而不要求任何盘驱动器的任何本地目录类别。在一个实施例中,在每个盘驱动器上使用工厂设置的逻辑至物理再映射,允许信息从每个驱动器通过单一寻找操作被恢复。如本领域熟练技术人员所理解的,标准目录寻找惩罚是严重的,减少驱动器带宽,远不及其规定的一半。相反,每个子块位置项足以定位并访问标题相应的子块,从而最小化每个存储处理器节点检索和转发数据子块的花销。不需要与复杂的操作系统接口、或执行中间的目录查找或者等等。所识别的处理器节点的传输过程通过向识别的盘驱动器提供逻辑地址(即,逻辑块地址)来访问子块,该识别的盘驱动器立即返回存储在所述逻辑地址的子块。
虚拟文件系统进一步使用数据和/或过程冗余保护以防止数据丢失,在重建期间不中断服务,冗余存储组跨越各个存储处理器节点,允许任何驱动器、每个冗余盘组(例如RAID阵列)的任意驱动器的故障,或者去除所有其驱动器的任何单个节点。每个驱动器唯一被确定,允许在启动时系统自动配置,更快地从盘的局部故障或预期故障恢复。当产生驱动器误差时,执行奇偶重建,重建数据被发送至节点,该数据应当来源于此节点,因此可以在此缓存。这样的结构和过程避免流行标题的冗余重建,直到驱动器和/或节点被替换,其为分布于节点的用户过程提供了主时间节省。进一步,执行冗余虚拟文件管理器的冗余管理节点,可以在整个系统的任意单点故障事件时,不中断操作。
还获得了许多其他优点。交互式内容引擎100不会因为成百上千的存储分配的同时请求而超载。它使用目录处理(小于100,000流的带宽的1%)而允许大量视频流被同时记录和回放,且没有超载系统。它允许管理功能(例如预先分配存储、再分割内容、删除标题、以及克隆驱动器和SPN)发生于后台,而不干扰同步内容回放和注入。
虽然本发明参考特定优选版本进行了相当详细地阐述,但是也可能出现和考虑到其他版本和变化。本领域熟练的技术人员应当能领会,他们可以轻易地使用揭露的观念和具体的实施例,作为设计或修改其他提供本发明同样目的结构的依据,而不离开本发明的原则和范围,如下面权利要求所定义的。
权利要求
1.一种虚拟文件系统,包含多个存储处理器节点,其中至少包括一个管理节点;底板交换机,其连接至所述多个存储处理器节点,使得所述多个存储处理器节点的每个节点之间能够进行通信;盘驱动器阵列,其连接和分布于所述多个存储处理器节点,所述盘驱动器阵列存储多个标题,每个标题被分成分布于所述盘阵列的多个子块,其中每个子块被存储在所述盘驱动器阵列的一个盘驱动器中;以及所述至少一个管理节点运行一个虚拟文件管理器,其管理所述多个标题的每个子块的存储和访问,以及维护包括每个标题的目录项的多个目录项,每个所述目录项包括一个子块位置项列表,其中每个子块位置项包括一个存储处理器节点标识符、一个盘驱动器标识符、以及用于定位和访问存储于所述盘驱动器阵列的每个标题的每个子块的逻辑地址。
2.权利要求1中的所述虚拟文件系统,其中通过对一个被标识的存储处理器节点的一个被标识的盘驱动器提供所述逻辑地址,以单个寻找操作取得所述多个子块中的每一个子块。
3.权利要求1中的所述虚拟文件系统,其中所述盘驱动器阵列的每个盘驱动器的全部容量可用于存储所述多个标题的所述多个子块。
4.权利要求1中的所述虚拟文件系统,进一步包含用户过程,其执行于一个存储处理器节点上,其向所述虚拟文件管理器提交一个选定标题的标题请求,其接收所述选定标题的相应目录项,以及针对所述相应目录项中的每个子块位置项提交一个子块读取请求;其中每个子块读取请求被发送至由所述相应目录项中的相应子块位置项中的存储处理器节点标识符所标识的存储处理器节点,以及其中每个子块读取请求包括一个目的节点标识符、所述盘驱动器标识符和所述逻辑地址;和其中所述虚拟文件管理器取得所述选定标题的所述相应目录项,并将所述相应目录项转发给所述用户过程以回复所述标题请求。
5.权利要求4中的所述虚拟文件系统,进一步包含一个传输过程,其执行于一个存储处理器节点,其接收子块读取请求,其通过使用所述逻辑地址以从由所述盘驱动器标识符所标识的本地盘驱动器中定位一个被请求的子块,来请求所述子块,以及将所取得的子块转发到由所述目的节点标识符所标识的存储处理器节点。
6.权利要求4中的所述虚拟文件系统,其中每个标题分成多个数据块,每个所述数据块包括多个子块,所述多个子块联合地包含每个数据块的冗余数据,以及其中所述用户过程可操作以从包含任一数据块的所有子块中少一个子块的多个子块中重建所述数据块。
7.权利要求6中的所述虚拟文件系统,其中所述盘驱动器阵列分成多个冗余阵列组,其中每个冗余阵列组包括分布于多个存储处理器节点的多个盘驱动器,以及其中每个数据块的所述多个子块分布在一个相应冗余阵列组的多个盘驱动器上。
8.权利要求7中的所述虚拟文件系统,其中所述用户过程用于在以下任一情况下重建任何被存储的标题任一盘驱动器故障;所述多个冗余阵列组的每一个的任一盘驱动器故障;和所述多个存储处理器节点的任意一个故障。
9.权利要求8中的所述虚拟文件系统,其中所述用户过程用于从所述数据块剩下的子块中重建该数据块丢失的一个子块,以及用于返回所述重建的丢失子块到一个应该获得所述丢失子块的存储处理器节点。
10.权利要求9中的所述虚拟文件系统,其中在所述应该获得所述丢失子块的存储处理器节点故障时被一个替代存储器处理节点替代,所述替代存储处理器节点通过存储接收的子块而再存储丢失和新的标题数据,其中所述接收的子块包括返回子块和重建子块。
11.权利要求9中的所述虚拟文件系统,进一步包含缓冲存储器,其连接至所述应该获得所述丢失子块的所述存储处理器节点,并且暂时存储包括被返回子块和重建子块的被接收的子块,以用于传输至故障盘驱动器的替代盘驱动器。
12.权利要求1中的所述虚拟文件系统,其中每个子块存储于由所述逻辑地址标识的盘驱动器的一个块上,其中所述逻辑地址包含逻辑块地址。
13.权利要求1中的所述虚拟文件系统,其中所述虚拟文件管理器管理标题存储,其中每个标题分成多个数据块,每个数据块包含多个子块,所述多个子块包含每个数据块的冗余数据。
14.权利要求13中的所述虚拟文件系统,其中所述盘驱动器阵列分成多个冗余阵列组,其中每个冗余阵列组包含分布于多个存储处理器节点的多个盘驱动器,以及其中每个数据块的所述多个子块分布于一个相应冗余阵列组的多个盘驱动器上。
15.权利要求14中的所述虚拟文件系统,进一步包含一个具有多个丢失子块的替代盘驱动器,其连接至第一存储处理器节点;所述虚拟文件管理器准备一个盘修复目录项,其中列出每个丢失子块及其构成一数据块的相应奇偶子块,并且转发所述盘修复目录项至所述第一存储处理器节点;以及修复过程,执行于所述第一存储处理器节点,该修复过程针对所述盘修复目录项中列出的每个奇偶子块提交一个子块读取请求,其对应于每个丢失子块,该修复过程使用所接收的相应奇偶子块来重建每个丢失子块,以及存储重建的子块至所述替代盘驱动器。
16.权利要求15中的所述虚拟文件系统,进一步包含空闲存储处理器节点;局部故障盘驱动器,由所述替代盘驱动器替代,连接至所述空闲存储处理器节点;所述虚拟文件管理器在发送所述盘修复目录项至所述第一存储处理器节点之前首先发送到所述空闲存储处理器节点;和文件挽救过程,执行于所述空闲存储处理器节点,其使用检验和与定位器检测存储在所述局部故障盘驱动器的所述丢失子块的有效性,以及把从所述局部故障盘驱动器读取的有效子块转发至所述第一存储处理器节点,以存储在所述替代盘驱动器上。
17.权利要求16中的所述虚拟文件系统,其中所述修复过程在相应丢失子块已经被重建且存储在所述替代盘驱动器时,丢弃从局部故障盘驱动器读取的被接收的有效子块。
18.权利要求14中的所述虚拟文件系统,其中所述盘驱动器阵列包含预定数量的盘驱动器,以及其中所述虚拟文件管理器可操作以平均地分配所述多个数据块在所述多个冗余阵列组上。
19.权利要求18中的所述虚拟文件系统,响应所述盘驱动器的预定数量的变化,其中所述虚拟文件管理器执行再分割过程,以再分配所述多个数据块以维持数据的平均分配。
20.权利要求19中的所述虚拟文件系统,其中所述再分割过程作为后台任务运行。
21.权利要求19中的所述虚拟文件系统,其中检测到所述盘驱动器阵列的所述盘驱动器预定数量增加时,所述虚拟文件管理器执行所述再分割过程,来在所述盘驱动器阵列的新的盘驱动器中再分配所述多个数据块,以维持数据的平均分配。
22.权利要求19中的所述虚拟文件系统,其中所述虚拟文件管理器检测到去除所述盘驱动器阵列的指定盘驱动器的请求,执行所述再分割过程以再分配所述多个数据块,以在剩余的盘驱动器中来维持数据平均分配,并且解除分配所述指定的盘驱动器。
23.权利要求1中的所述虚拟文件系统,其中所述至少一个管理节点包含一个镜像管理节点,其运行镜像所述虚拟文件管理器操作的一个镜像虚拟文件管理器。
24.权利要求1中的所述虚拟文件系统,其中所述虚拟文件管理器维持一个预先分配的目录项的池,每个都包括可用子块位置项的一个列表。
25.权利要求24中的所述虚拟文件系统,其中所述预先分配的目录项的池的数目是基于性能和站点使用概况。
全文摘要
一种虚拟文件系统(209),包含多个存储处理器节点(103),其中有一个管理节点(205),以及底板交换机(101)、盘驱动器阵列(111),和运行在所述管理节点的虚拟文件管理器(301)。底板交换机使得存储处理器节点间能进行通信。盘驱动器阵列连接和分布于所述多个存储处理器节点,并存储多个标题。每个标题分成数据子块(113a)-(113e),它们分布于盘驱动器阵列,其中每个子块存储于盘驱动器阵列的一个盘驱动器。虚拟文件管理器管理每个子块的存储和访问,以及管理包含每个标题的目录项的多个目录项。每个目录项是子块位置项的列表,其中每个子块位置项包含存储处理器节点标识符、盘驱动器标识符、以及用于定位和访问每个标题的每个子块的逻辑地址。
文档编号G06F7/00GK1902620SQ200480039804
公开日2007年1月24日 申请日期2004年12月2日 优先权日2003年12月2日
发明者史蒂文·W·罗斯, 尼尔·A·罗茨, 科里纳·G·阿布杜尔 申请人:交互式内容引擎有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1