用于实现基于服务器的分层大容量存储系统的系统和方法
相关申请
本专利申请要求先前在2012年5月20日提交的题为“System And Methods ForImplementing A Server-Based Hierarchical Mass Storage System(用于实现基于服务器的分层大容量存储系统的系统和方法)”的临时专利申请SN61/649,305的权益。本申请还通过援引纳入了先前在2010年4月1日提交的题为“System and Method for EfficientlyCreating Off-Site Data Volume Back-Ups(用于高效地创建非现场数据卷备份的系统和方法)”的美国专利申请SN12/798,321以及先前在2011年1月6日提交的题为“System AndMethod For Storing Data Off Site(用于将数据存储在非现场的系统和方法)”的美国专利申请SN 12/930,502。
技术领域
本发明涉及数字大容量存储系统领域。具体而言,但非限制,本公开教导了用于在服务器系统内或在基于云的虚拟机中实现分层大容量存储系统的若干技术。
背景
计算机系统已经变成现代生活中使用的不可缺少的工具。几乎每个公司和政府实体现在都依赖计算机系统进行数字通信、项目规划、文档创建、信息存储、事务处理、项目管理、库存管理、财务操作、以及大量的其他任务关键服务。
由于信息技术对大多数组织的重大重要性,能够修复或替换信息技术基础设施的出现故障的任何部分是重要的。虽然各单独的计算机硬件和计算机软件可能容易地被实体通过购买新计算机装备或计算机软件来替换,但该实体的累积的数字信息的存储可能不能容易地被替换。因此,数字信息存储和数字信息保护是任何现代信息技术基础设施系统的最关键部分之一。
现代组织需要能够为它们的计算机用户支持各种各样的不同计算机环境。信息技术部门可能被要求向大型的中心总部场地、其他地理上位于远程的场地、远程分部办公室、区域开发办公室、小型远程销售办公室、以及甚至单独工作的个人提供数字信息存储服务。理想地,所有这些不同大小的办公环境可被提供,具有相同的信息技术服务和支持水平。此外,信息技术部门必需处理以下事实:新办公室开张、现有办公室关闭、以及办公室可在组织的寿命期间移动。向可包括地理上位于远程的办公室的这样的各种各样的办公环境提供数字信息存储服务对任何信息技术部门而言都是重要的挑战。因此,开发能提供可被容易地管理的以及高质量的数字信息存储服务以处理任何类型的计算机环境的可缩放的数字信息存储系统是合乎需要的。
附图说明
在附图中,相同的附图标记描述在若干视图中基本上相同的组件,其中附图不一定按比例绘制。具有不同文字前缀的相同的附图标记表示基本上相同组件的不同实例。附图概括示出了(作为示例而非限制)本文中讨论的各实施例。
图1示出计算机系统的示例形式的机器的图形表示,其中可执行使得机器执行本文所讨论的一种或多种方法的指令集。
图2示出了解说传统直接访问存储系统与存储区域网络(SAN)之间的差异的框图。
图3示出了分层存储系统的概念图,其中被频繁访问的数据被存储得靠近顶部且较不频繁的数据被存储得靠近底部。
图4示出在办公环境的计算机网络系统内使用的分层大容量存储系统。
图5示出被用来构造分层大容量存储系统的体系结构的一个实施例的概念框图。
图6在概念上示出分层大容量存储系统的一个实施例中的一组数据存储层。
图7示出描述分层大容量存储系统可如何对从客户机系统接收到的读请求进行响应的流程图。
图8示出描述分层大容量存储系统可如何对从客户机系统接收到的写请求进行响应的流程图。
图9示出描述分层大容量存储系统可如何将数据组块划分成数据片并移除重复的流程图。
图10是示出可如何使用在移动窗口上计算得到的渐进指纹而将数据组块划分成数据片的概念图。
图11A示出已经用可扩展压缩系统压缩的数据片的框图。
图11B示出已经用可扩展加密系统加密的图11A的经压缩数据片的框图。
图12示出用于只具有使用工作站的三个本地雇员的小型办公环境的计算机基础设施。
图13示出与图12类似的小型办公计算机环境,其中小型服务器系统包括集成的分层存储系统。
图14示出具有集成的分层存储系统的服务器系统的一个实施例的详细框图。
图15A示出具有总部和伦敦及苏黎世的两个卫星办公室的、期望在东京开办公室的公司的框图。
图15B示出图15A的在配置东京的服务器以用于区域云存储之后的框图。
图15C示出图15B的在配置东京的服务器以访问总部处的服务器之后的框图。
图15D示出图15C的在将恢复卫星办公室模板卷服务器配置到东京服务器上之后的框图。
图15E示出图15D的在东京办公室正在运作的情况下的示图。
图15F示出图15E的在对来自东京卫星办公室的重要数据卷进行备份之后的示图。
图15G示出图15F的在关闭东京办公室之后的示图。
图15H示出图15G的在新加坡开启具有来自已关闭的东京卫星办公室的所有数据的新办公室之后的框图。
图15I示出图15H的框图,其中库卷被分发给所有不同的卫星办公室。
图16示出具有集成的分层存储系统的在云服务提供者处执行的虚拟服务器系统。
图17示出在云服务提供者处执行的具有集成的分层存储系统的两个虚拟服务器系统。
图18示出具有网络存储接口的在云服务提供者处执行的虚拟分层存储系统。
具体实施方式
以下详细描述包括对附图的引用,其中附图形成该详细描述的一部分。附图示出根据各示例实施例的图解。这些实施例(在本文中也被称为“示例”)被以足够的细节来描述以使本领域技术人员能够实施本发明。本领域技术人员将显而易见的是具体细节。
以下详细描述包括对附图的引用,其中附图形成该详细描述的一部分。附图示出根据各示例实施例的图解。这些实施例(在本文中也被称为示例摂)被以足够的细节来描述以使本领域技术人员能够实施本发明。本领域技术人员将显而易见的是各示例实施例中的具体细节不是实施本发明所必需的。例如,虽然参考基于微软Windows的服务器系统内实现的分层数据存储系统公开了各示例实施例中的一些,但相同的技术可以用其他来实现。各示例实施例可被组合,其他实施例可被利用,或者可作出各种结构、逻辑、以及电子变化而不背离所要求保护的范围。由此,以下详细描述并不旨在限制,且范围由所附权利要求及其等效方案所定义。
在本文中,使用术语“一”或“一个”(如在专利文献中常见的)以包括一个或一个以上。在本文中,术语“或”被用来指非排他性的,使得“A或B”包括“A但非B”、“B但非A”以及“A和B”,除非另外指明。此外,本文中所引用的所有出版物、专利以及专利文献被通过援引整体纳入于此,如同被单独地通过援引纳入一样。在本文与通过援引纳入的这些文献之间不一致的使用的情况下,在被纳入参考文献中的使用应当被认为是本文的使用的补充;对于矛盾的不一致性,以本文中的使用为准。
计算机系统
本公开关注数字计算机系统。图1示出可被用来实现本公开的各部分的计算机系统100的示例形式的机器的图形表示。在图1的计算机系统100内,存在可被执行以使机器执行在本文中讨论的方法中的任何一者或多者的指令集124。
在联网部署中,图1的机器可在服务器-客户机网络环境中以服务器机器或客户机机器的能力来操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、个人数字助理(PDA)、蜂窝电话、web电器、网络路由器、网络交换机、网桥、或者能够执行指定将由该机器采取的动作的(连续的或以其他方式的)计算机指令集的任何机器。此外,虽然仅示出了单个机器,但是术语“机器”还应被视为包括任何机器集合,这些机器个体地或联合地执行一个(或多个)指令集以执行本文中所讨论的任何一种或多种方法。
图1的示例计算机系统100包括处理器102(例如,中央处理单元(CPU)、图形处理单元(GPU)或两者)以及主存储器104和非易失性存储器106,它们经由总线108彼此通信。非易失性存储器106可包括闪存并且可被用作计算机系统存储器、文件存储单元、或两者。计算机系统100还可包括驱动视频显示器系统115(如液晶显示器(LCD)或阴极射线管(CRT))的视频显示适配器110。计算机系统100还包括字母数字输入设备112(例如,键盘)、光标控制设备114(例如,鼠标或轨迹球)、盘驱动单元116、信号发生单元118(例如,扬声器)、以及网络接口设备120。注意,并非图1所示的所有这些部分都将存在于所有实施例中。例如,如果服务器是通过网络接口设备120控制的,则该计算机服务器系统可不具有视频显示适配器110或视频显示器系统115。
盘驱动单元116包括其上存储实现本文中所描述的任何一种或多种方法或功能或者由它们使用的一个或多个计算机指令集和数据结构(例如,指令124也被称为‘软件’)的机器可读介质122。指令124还可完全或至少部分地驻留在与处理器102相关联的主存储器104内和/或高速缓存存储器103内。与处理器102相关联的主存储器104和高速缓存存储器103也构成机器可读介质。
指令124还可在计算机网络126上经由网络接口设备120传送或接收。这样的传输可利用多种公知传输协议中的任一种来发生,如公知的文件传输协议(FTP)。
尽管机器可读介质122在一示例实施例中被示为单个介质,但术语“机器可读介质”应被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可读介质”还应被理解为包括能够存储、编码或承载一组供机器执行并使得该机器执行本文描述的任何一种或多种方法的指令的任何介质,或者能够存储、编码或携带由这样的指令集利用或与其相关联的数据结构的任何介质。因此,术语“机器可读介质”应被理解为包括但不限于,固态存储器、光学介质、带后备电池的RAM和磁性介质。
出于本说明书的目的,术语“模块”包括代码的可标识部分、可计算或可执行指令、数据、或计算对象,以实现特定功能、操作、处理或过程。模块不必用软件实现;模块可以用软件、硬件/电路、或软件和硬件的组合来实现。
存储区域网络
为了使企业数据中心更加高效,引入了存储区域网络(SAN)的概念。SAN允许计算机应用以远程存储设备看起来与本地附连的存储设备没有不同的方式访问远程计算机存储设备(如硬盘阵列、磁带库、以及光盘存储设备)。SAN的使用允许多个应用和服务器共享存储系统。共享存储的使用简化了存储系统管理,因为需要维护较少的存储系统。SAN还简化了为计算机系统创建灾难恢复系统的任务,因为位于远处位置的独立的辅助存储系统可被用来复制存储在主位置处的主存储系统上的数据。
存储区域网络一般作为计算机设备中的操作系统的集成部分来操作。具体而言,操作系统提供用于处理文件的基本文件系统,且SAN在文件系统下操作并且只向文件系统提供原始逻辑块存储服务。传统直接访问存储系统与SAN之间的差异在图2中示出。
参考图2,若干服务器应用(201、202、以及203)在服务器系统210上运行。服务器应用(201、202、以及203)一般将使用服务器系统210的文件系统211来操作数据文件。服务器应用还可绕过文件系统211以直接向存储读和写原始数据块。在具有传统直接附连的存储系统240的计算机系统中,文件系统211访问直接附连的存储控制器220以访问本地存储系统230。为了使用存储区域网络(SAN)系统280,代替访问本地存储设备,文件系统211访问存储区域网络控制器250。存储区域网络控制器250向存储设备(271、272、273、以及274)发起存储区域网络260上的存储请求。绕过文件系统211以直接使用直接附连的存储系统240的服务器应用可类似地绕过文件系统211以直接访问SAN控制器250。
使用存储区域网络系统280,在需要时,附加的存储设备可被容易地添加到存储区域网络260。通过将服务器系统从它们的存储组件解耦,出故障的服务器系统(如服务器210)可被能即访问在存储区域网络系统280上可用的该服务器的数据的新服务器系统快速替换。类似地,如果存储区域网络260上的存储设备出现故障,则该单独的存储设备可被替换。
分层大容量存储系统概览
已经创建了许多不同的数字存储技术来存储数字数据。每一不同的数字存储技术在往往具有其自己的在性能度量、成本、功耗、噪声、可靠性等方面的优点和缺点。理想的数字存储系统将以极低的成本来提供极高的性能。然而,高性能存储技术往往很昂贵且消耗功率。因而,为了存储非常大量的数据,较低成本的数据存储技术必须被使用。
用户不同等地使用访问所有所存储的数据。一般而言,少量的“活动”的所存储的数据被频繁访问,而大多数所存储的数据极少被访问。可通过构造以分层方式使用各种不同数据存储技术的混合存储系统来利用这一数据访问使用模式。例如,图3示出了一个可能的分层存储系统实施例的概念图,其中被频繁访问的数据被存储得靠近顶部且较不频繁的数据被存储得靠近底部。
在分层存储系统的顶部是可非常快速地处理数据存储请求但非常昂贵且消耗功率的少量带后备电池的随机存取存储器320。用户最频繁访问的数据可被存储在具有最低等待响应时间的带后备电池的随机存取存储器区域320中。下一级是非易失性固态存储器层340,如闪存。非易失性固态存储器层340可以使用比带后备电池的随机存取存储器320少的功率,但往往以较低速率操作。非易失性固态存储器层340之下是磁硬盘存储层360。磁硬盘存储层360可被用来在不昂贵的磁数据存储介质上存储大量数据,但等待时间性能一般比前两层320和340更慢。最后,可扩展的基于云的存储层380可被用来提供日益扩张数量的数据存储。然而,因为外部网络必须被用来访问基于云的存储,所以基于云的存储层380将不提供快速的数据访问服务。
本文公开了用于实现在各种不同类型的环境中提供数据存储服务的各种不同类型的分层大容量存储系统的若干技术。分层大容量存储系统将若干数据存储技术以利用每一不同数据存储技术的优势和弱点的方式组合起来。图4示出用在办公环境内的分层大容量存储系统460的一个示例。分层大容量存储系统460将固态存储、硬盘存储、以及甚至基于云的数据存储系统491组合在一起以创建用于本地存储区域网络450的协同数据存储系统。
分层大容量存储系统460可被用来向典型的联网计算机环境提供大容量数据存储服务。参考图4,典型的联网计算机环境具有耦合到局域网(LAN)430的多个用户工作站(421到427)。LAN 430还具有向工作站(421到427)处的用户提供各种服务的多个服务器系统(441、442、以及443)。典型的服务器系统应用包括用于发送和接收电子邮件消息的电子邮件服务器、用于存储特定结构化数据的数据库服务器、以及用于存储一般用户文件的文件服务器。各种服务器系统(441、442以及443)耦合到存储区域网络450上的分层大容量存储装备460。分层大容量存储装备460上的存储网络接口461使用标准存储区域网络协议来向本地服务器系统(441、442以及443)提供数据存储服务。
分层大容量存储系统460以分层的方式使用诸如固态存储器(471和481)和硬盘存储(472和482)等存储技术来本地地存储数据。在一个实施例中,固态存储器(471和481)可以用诸如闪存等非易失性存储器技术来实现。与硬盘驱动器(HDD)存储系统相比,闪存系统一般更快、使用更少功率、输出更少噪声、并且更可靠。HDD存储(472和482)可以提供非常大量的本地存储,以用于每存储位低成本。分层大容量存储系统460还可通过第二接口使用因特网连接465耦合到基于云的存储系统491,以利用远程基于云的数据存储服务491的益处。
分层大容量存储系统460上的存储区域网络(SAN)接口461的使用允许管理员像常规SAN存储设备那样使用分层大容量存储系统460。多个服务器系统可使用标准存储区域网络450来共享分层大容量存储系统460。使用耦合到云存储提供者491的第二接口465允许分层大容量存储系统460提供可被按需使用的附加存储资源。如在早先章节中阐明的,存储区域网络允许管理员将数据存储功能从服务器系统解耦,使得只有单个统一数据存储系统需要被维护。因此,所有服务器系统(441、442以及443)可耦合到被用来处理原始数据存储读和写的存储区域网络450。耦合到存储区域网络450的单个分层大容量存储系统460可以处理整个存储区域网络450的数据存储操作。(注意,附加的分层大容量存储系统或常规存储设备也可耦合到存储区域网络450以用于附加的存储容量。)
在图4的特定实施例中,分层大容量存储系统460包括两个不同的控制器单元:控制器A 470和控制器B 480。这两个不同的控制器单元可被用来提供容错镜像存储系统,其中任一控制器可在另一个控制器出现故障的情况下接管。或者,这两个控制器(470和480)可被用来对数据卷“静态地进行负载平衡”,使得在这两个控制器健康的情况下,这些控制器各自对一半数据存储请求进行服务,从而提高性能。在这样的配置中在任一控制器出现故障时,剩余的正在工作的控制器接纳双倍工作负荷,慢下到某种程度,但向所有数据卷提供连续存储服务。
控制器单元A 470和控制器单元B 480可各自具有本地数据存储系统。在图4的实施例中,每一控制器具有固态存储器存储(471和481)以及基于硬盘的存储(472和482)。本地数据存储系统处理来自服务器系统(441、442以及443)的所有数据写请求。本地数据存储系统还处理对当前存储在本地数据存储系统中的数据的数据读操作。
为了补充本地数据存储系统,分层大容量存储系统460还可使用可在因特网490上获得的基于云的数据存储系统491所提供的数据存储。在利用基于云的存储系统491的分层大容量存储系统中,分层大容量存储系统460尝试将所有被频繁访问的数据保持在本地数据存储系统内,使得在分层大容量存储系统460内大多数读操作在本地被处理。然而,在所存储的数据的量超过本地数据存储系统的容量时,分层大容量存储系统460将开始将较不频繁访问的数据存储在基于云的数据存储系统491处。这允许分层大容量存储系统460利用由运行基于云的存储系统491的专家维护的无限大的存储系统,同时具有用于被频繁访问的数据(存储在本地数据存储系统中的数据)的本地存储性能。
如图所示,在图4中,使用基于云的数据存储的分层大容量存储系统460担当现场SAN 450以及非现场基于云的数据存储提供者491之间的中介。因此,分层大容量存储系统460必须调和到SAN 450的前端接口461与到基于云的数据存储系统491的后端465接口之间的显著差异。一个显著差异是速度差,因为SAN 450一般以非常快的速度操作(如每秒1千兆位),而因特网连接465可能只以每秒10兆位操作。
为了补偿速度差,分层大容量存储系统460利用数据存储系统一般使用的方式。大多数大容量数据存储系统只需要处理被频繁访问的相对少量的动态数据,如参考图3所阐明的。例如,电子邮件服务器每天需要存储新电子邮件消息,且文件服务器需要处理被用户活跃地访问的有限数量的文件。然而,存储在大容量存储系统上的大多数数据一般是静态的且很少被访问。例如,文件服务器可以存储不再被经常访问的旧文档的存档。因而,因为只有存储在大容量数据存储系统中的相对少量数据被活跃地使用,该少量活跃数据可被存储在可被以高数据率且低等待时间来重复访问的本地数据存储系统(固态存储471和481以及本地HDD 472和482)中。很少被访问的数据可被存储在基于云的数据存储提供者491处并且只在需要时被检索。从基于云的数据存储提供者491访问数据通常将造成增加的等待时间;然而,这样的等待时间在某些应用或使用模式中可能是可接受的。此外,这样的等待时间应当很少遇到,因为只有很少使用的数据将被存储在基于云的数据存储提供者491处。
分层大容量存储系统460的核心概念是高效地使用在分层大容量存储系统460内可用的本地数据存储。只要分层大容量存储系统460准确地标识最频繁访问的数据并将该频繁访问的数据保持在本地数据存储(471、481、472、以及482)中,则在SAN接口461上接收到的大多数存储请求(读操作和写操作两者)可只使用本地数据存储系统(471、481、472、以及482)来进行服务。这将极大地降低接口465上到基于云的数据存储491的数据话务的量,从而向分层大容量存储系统460的用户隐藏这两个接口之间的速度差。
为了最高效地使用本地存储,分层大容量存储系统460使用智能数据分级算法和存储空间优化技术两者。数据分级算法被用来标识最频繁访问的数据并将该频繁访问的数据保持在本地存储系统中。数据分级算法还可使用智能缓存系统(如预读高速缓存)以防止高速缓存未命中。例如,通过使用试探法来标识可能即将被请求的数据,分层大容量存储系统460可以在接收到对当前存储在基于云的数据存储491处的数据的实际传入请求之前发出对该数据的预测请求。各种存储空间优化技术可被用来在本地存储空间中存储尽可能多的数据。可以使用的技术包括重复数据的标识和消除以及数据压缩。
在一个实施例中,分层大容量存储系统460的管理员可被允许以应用相关的方式来分配和配置数据存储。例如,如果特定应用不频繁地使用特定数据集,但在该数据被访问时需要低等待时间响应,则管理员可被允许为该应用或为该特定数据集指定这一限制。以此方式,在先前被分级到基于云的存储491的情况下,分层大容量存储系统460将确保本地副本存在或将预先主动地从云获取并将其移至本地存储。其他数据集可被显式地标记为‘存档’数据,使得所指定的存档数据被快速发出到基于云的存储提供者491。这防止这样的存档数据使用宝贵的本地存储空间,直至数据分级系统最终确定这样的存档数据没有被频繁访问。在一个实施例中,分层大容量存储系统可以允许管理员指定数据卷为100%本地卷。分层大容量存储系统460将确保这样的所指定的100%本地卷将被存储在本地存储的某一组合中。
分层大容量存储系统体系结构
各种不同的体系结构可被用来构造图4的分层大容量存储系统460。图5示出可被用来构造分层大容量存储系统500的一个特定体系结构的概念框图。在分层大容量存储系统500框图的顶部是被用于配置、控制、以及监视分层大容量存储系统500的管理组件510。管理员可以通过耦合到局域网505的接口来访问管理组件510。
管理员使用管理组件510来初始地配置分层大容量存储系统500。对于初始配置,管理员指定哪一虚拟存储展示给存储区域网络(SAN)501上的主机。这类似于传统系统,其中管理员指定存储阵列中的哪一些LUN展示给主机。管理员还指定将被使用的云存储提供者591的地址和接入信息。管理员可以指定存储限制,但这一般是不建议的,因为分层存储系统500应当被允许按需生长。
管理员还可指定到云数据存储提供者591的通信链路596的带宽约束以及特定云数据存储提供者591的带宽约束(云存储提供者将处理数据访问请求的最大速率)。通信链路596的带宽约束可被用来确保分层大容量存储系统500不尝试比通信链路596可处理数据更快地发送数据。此外,如果通信链路596是与其他用户共享的(如与人类用户、邮件服务器、以及其他因特网用户共享的因特网连接),则分层大容量存储系统500可被配置成使用比通信链路596上可用的全部带宽少的带宽。
在初始配置之后,管理员可以使用管理组件510来用于若干不同的维护操作。例如,管理组件510可被用来调度分层大容量存储系统500中的数据卷的周期快照,并在基于云的存储中制作这些快照卷的备份副本。附加数据卷可被添加到分层存储系统500或现有数据卷可被移除。
管理组件510将收集可被用来测量分层大容量存储系统500的性能的操作统计信息511。操作统计信息511可被分析并被用来更改分层大容量存储系统500的配置以提高性能。数据存储请求栈515中的每一较低层可以生成其自己的单独的统计信息。管理组件510可以周期性地轮询分层大容量存储系统500的各较低层以及各其他部分以创建所有分层大容量存储系统统计信息的集中式集合。
分层大容量存储系统500的主组件是处理给分层大容量存储系统500的所有数据存储请求问题的多层数据存储请求栈515。数据存储请求是在数据存储请求栈515的顶部处接收到的且各数据存储层尝试解决这些数据请求。在一层不能完全解决请求时,该层将请求传递到较低层,直至数据请求被最终解决。数据存储请求处理栈515的细节将在本文的后续章节被逐层公开。
数据存储请求栈515的顶层是通过前端接口502耦合到存储区域网络(SAN)501的SAN接口层520。SAN接口层520接收来自本地系统(如,服务器507和508)的存储请求。分层大容量存储系统500的前端接口502将一般使用公知的SAN协议。公知SAN协议的示例包括工业标准因特网小型计算机系统接口(iSCSI)协议以及光纤通道协议(FCP)。这些SAN协议允许存储客户机对通过逻辑单元号(LUN)寻址的数据存储单元执行诸如启动、停止、读、写、以及格式化等操作。
在处理存储请求时,数据存储请求处理栈515的顶部各层(500、531以及532)处理一些形式问题。在各形式层下是一组分层数据存储层。第一数据存储层(线性存储层540)通过以相对原始的格式将数据存储在本地针对快速处理数据请求来被优化。第二数据存储层(去重复存储层550)通过标识并消除重复数据来以更高效的方式将数据存储在本地。第三数据存储层(瞬态存储层560)针对以非常密集的经压缩的形式将大量数据存储在本地而被优化。第四数据存储层通过将数据非现场地存储在基于云的数据存储提供者591处以使用基于云的存储来储存无限量数据。注意,图5只示出一个可能的分层存储系统,并且其他分层存储系统可以使用更多或更少的数据存储层。为了完整描述图5的数据存储请求处理栈515,存储请求处理栈中的每一层将单独地进一步详细描述。
前端接口和初始层
在数据存储请求栈515的顶部是存储区域网络(SAN)接口520。在将被详细考虑的一个特定实现中,存储区域网络接口520实现所使用的公知iSCSI协议以接受在TCP/IP网络上携带的SCSI命令。然而,任何其他数据存储协议可被实现在存储请求处理栈515的顶部。
在iSCSI实施例中,SAN接口520将iSCSI卷展示给SAN 501上的主机。SAN接口520随后接收来自主机的iSCSI数据存储请求并对这些数据存储请求进行响应。SAN接口520解析iSCSI命令并确定这些命令应当被如何处理。不与读和写数据直接相关的管理性iSCSI请求中的许多请求可由SAN接口层520完全处理。SAN接口层520将数据存储请求沿数据存储请求栈515向下传递到下一层以处理这样的数据存储请求。
存储区域网络接口层520下是卷抽象层531。卷抽象层531在跟踪分层大容量存储系统500所存储的不同卷中处理许多形式。例如,卷抽象层531跟踪所存在的数据卷、每一卷的大小、访问控制列表(ACL)、以及其他管理性信息。因此,卷抽象层531处理卷管理任务中的一些,使得存储请求处理栈515的各较低层可专注于实际数据存储。
快照层
卷抽象层531下是快照层532。快照层532被用于在接收到对快照的请求后拍摄分层大容量存储系统500中的指定数据卷的“快照”。在本公开中,快照是数据卷在特定时刻的状态。然而,立即复制整个数据卷是不实际的(若非不可能的话)。相反,快照层532创建初始只包括快照卷的指定拍摄快照的时间的时间图和到父卷的指针的新卷。如果不存在对父卷的新的写,则该父卷的当前数据可被用作快照卷的数据。然而,在接收到变更快照卷所引用的父卷中的数据的新的写操作时,在写发生之前,旧的现有数据必须被复制出父卷且被置于快照卷中,以保存在创建快照卷时已存在的数据。与快照层532有关的详细信息可在2010年4月1日提交的题为“System and Method for Efficiently Creating Off-Site DataVolume Back-Ups(用于高效地创建非现场数据卷备份的系统和方法)”的美国专利申请SN12/798,321中找到,它通过援引纳入于此。
高速线性存储层
在快照层532中执行了任何所需的快照操作后,数据存储请求随后被传递到作为分层大容量存储系统500中的第一级数据存储的线性存储层540。线性存储层540是被设计为处理“热门”数据的高性能数据存储层。热门数据被定义为被频繁读和/或写的数据。
线性存储层540一般将接收使用传统数据存储语义术语来寻址的数据存储请求,如逻辑卷、逻辑块地址(LBA)以及块传输长度(BTL)。如上所述,分层大容量存储系统500的前端可以实现使用不同数据存储寻址系统的许多不同的可能的数据存储协议。然而,只要分层大容量存储系统500正确地对接收到的所有数据存储请求进行响应,分层大容量存储系统500就在内部自由使用任何不同类型的寻址系统。
在一个实施例中,分层大容量存储系统500对每一数据卷使用平面线性寻址系统,其中每一逻辑卷被划分成固定大小的“组块(chunk)”,组块是大多数基于盘的存储系统所使用的逻辑块(SCSI逻辑块通常是512字节长)的偶数倍。非常简单的转换系统可被用来将按盘上的逻辑块地址(LBA)范围(或任何其他数据存储寻址系统)作出的数据请求转换成在线性存储层540内使用的基于组块的线性寻址系统。在一个特定实施例中,每一固定大小的组块是256千字节长(它可装下各自12字节长的512个逻辑块)。然而,这仅仅是一个特定设计选择并且可以使用其他大小。
线性存储层540将数据存储在本地数据存储的所分配的线性存储区547中。在一个实施例中,诸如闪存等固态存储器被用来存储线性存储层540的所有数据。闪存可快速处理存储请求并且是非易失性的,使得即使断电数据也将保持存储。
线性存储层540维护线性存储映射541以跟踪所有数据被存储在何处。具体而言,对于存储在分层大容量存储系统500中的每一数据卷,线性存储映射541指定每一数据组块驻留在何处(并且因此指定可如何获得该数据)。对于当前存储在线性存储层540内的数据组块,线性存储映射541可以指定线性数据存储区547中的特定物理存储器地址。对于当前没有存储在线性存储层540内的所有数据,线性存储映射541可以指定用来唯一地标识存储在数据存储请求栈515的各较低数据存储级内的数据片的数据指纹集合。在一个特定实施例中,32字节长的SHA-256指纹被用来唯一地标识存储在各较低数据存储层内的数据片。
图6在概念上示出前三个数据存储层如何使用本地数据存储。注意,图6只是概念性的,并且为简明起见省略了许多细节。线性存储层640使用将每一数据组块映射到线性存储647中的位置或映射到表示该数据组块的指纹标识符集合的线性存储映射641。指纹标识符可被用来在存储请求处理栈的各较低数据层中定位所请求的数据。在图6的示例中,组块0被存储在线性存储区647中,如指针所指示的。组块1被存储在较低数据存储层中,因为线性存储映射641指定指纹标识符集合。指纹标识符中的每一个唯一地指定数据组块的数据片。数据片的集合等于数据组块的大小(在一个特定实施例中,是256K)。
线性存储映射641可以用将各条目链接在一起的有序链表来实现,每一条目包含指向线性存储区647中的数据组块的指针或存储在较低数据存储层中的数据片的指纹标识符集合。对于存储在较低数据存储层中的数据,各链表条目将包含具有数据指纹的一系列条目,其中通过指纹标识符所引用的各数据片的总大小等于一个组块大小。为了提高性能,链表可由被用来改进链表的搜索的附加数据结构来补充。例如,红-黑树、散列表、或包含指向链表节点的指针的另一类似数据结构可被用来提高搜索链表的速度。
线性存储层640如何处理读请求的描述将参考图7中呈现的流程图以及图6的概念图来公开。参考图7,在阶段705,从主机客户机接收到的读请求首先由SAN接口层、卷抽象层、快照层以及任何其他初始层处理。读请求随后被传递给线性存储层640以获得数据。
在阶段710和715,线性存储层640首先检查线性存储映射641以寻找所请求的数据,以确定如何对该读请求进行响应。如果所请求的数据可在线性存储647中获得,则在阶段720,线性存储层640简单地从线性存储区647读取该数据并对读请求进行响应。该系统随后可在阶段780更新某些统计信息(如被用来确定数据是否热门、温暖、或冷门的统计信息),并且它随后完成对读请求的处理。
如果在阶段715所请求的数据没有在线性存储647中找到,则在阶段730,线性存储层640向数据存储请求栈的各较低层请求所需数据。该请求是通过请求所需数据片的指纹来作出的。注意,如果读请求只请求了数据的特定组块内的少量数据,则该读请求可能只需要数据的少量数据片。在这一特定实施例中,下一较低层是图6的去重复存储层650。在引用去重复层的各方面时,本文可以使用术语‘去重复’。
在阶段735,去重复存储层650检查去重复存储映射651以确定是否所有所请求的数据片都在去重复存储区657中。如果去重复存储层650具有所有所需数据片,则在阶段750,去重复存储层650可以用所请求的数据进行响应。如果去重复存储层650不具有所有所请求的数据片,则在阶段740,去重复存储层650将向较低数据存储层请求所需数据片。在这一特定实施例中,该请求将向存储请求处理栈的下一较低层(瞬态存储层660)作出。
在阶段743,瞬态存储层660处理该数据请求。因而,瞬态存储层660检查瞬态存储映射661。如果瞬态存储层660具有所请求的数据,则它返回该数据。如果瞬态存储层660不具有所请求的数据,则瞬态存储层660可向较低层请求并接收未命中数据。该系统以这一分层的方式继续进行,直至在阶段745,去重复存储层650从较低层接收到所有所请求的数据并将所请求的数据置于去重复存储区657中。在阶段750,去重复存储层650随后可以用所请求的数据对线性存储层640进行响应。
在从去重复存储层650接收到所请求的数据片后,在阶段760,线性存储层640将组装来自接收到的数据片的所请求的数据。最后,在阶段770,线性存储层640随后可以用所请求的数据对读请求进行响应。在阶段780,统计信息计数器随后可被更新。
可以看到,在阶段720对读请求进行服务将比在必须从较低数据存储层获取数据时对读请求进行服务更加快速。此外,必须访问的数据层越低,处理读请求将需要花费的时间就越多。
写请求是以类似方式处理的。对分层大容量存储系统的所有写操作最初被写入与线性存储层640相关联的线性存储647中。对写请求的处理将参考图8的流程图和图6的概念图来公开。图8的示例描述了对单个数据组块的写。然而,相同的步骤可被多次执行以处理对多个数据组块的写。
参考图8,在阶段805,从主机客户机接收到的写请求首先由诸如SAN接口层、卷抽象层以及快照层等初始形式层处理。写请求随后被传递给线性存储层640,其中线性存储层640首先在阶段810和815检查线性存储映射641以确定如何处理该写请求。如果该写被定向到已经在线性存储区647中可用的数据组块,则通过前进至阶段850并且在阶段850将新数据写入线性存储区647内的适当的数据组块来处理该写请求。在阶段860,该系统随后还可更新某些统计信息。此时,写请求已被只使用线性存储层640完全处理。
如果在阶段815写请求被定向到的数据组块没有在线性存储区647中找到,则线性存储层640一般将首先将目标数据组块的数据拉取到线性存储层640中以盖写现有数据。在数据被盖写之前它被上拉到线性存储层640的原因是使得如果在写操作期间出现故障,该故障将至少留下已被新数据部分盖写的旧数据。这是传统基于盘的存储系统操作的方式,使得应用程序已经准备好处理由于写操作期间发生的这样的故障而遭破坏的数据。
为了将目标数据上拉到线性存储区647,在阶段820,线性存储层640可能首先需要在线性存储区647中分配新的存储器组块。(一般而言,该系统将总是保持少量存储器组块可用于处理新的传入写选项。)分配新存储器组块可通过将数据从线性存储区647中的现有组块向下流出到较低数据存储层来执行。将数据组块向下流出到较低数据存储层将在本文的稍后章节中描述。
使用线性数据存储区647中可用的存储器组块,在阶段830,线性存储层640随后向数据存储请求栈的较低数据存储层请求该数据组块的所有数据片。对数据片的请求可通过提供所需数据片的指纹标识符来作出。注意,被盖写的数据组块的所有数据片是所需要的,因为整个数据组块现在将作为单个数据组块被表示在线性存储区647中。如果去重复存储层650在去重复存储657中不具有该组块的所有所需数据片,则去重复存储层650将向数据存储请求栈的下一较低数据存储层(在这一实施例中是瞬态层660)请求未命中的数据片。
在从较低数据存储层接收到所请求的数据片之后,在阶段840,线性存储层640随后在缓冲区中组装各数据片。完全组装的数据组块随后被复制到线性存储区647中的空闲存储器组块,使得线性存储层640现在完全负责该特定数据组块。因而,线性存储层640更新线性存储映射641以反映线性存储层640现在具有在线性存储区647内表示的该特定存储器组块。
应当注意,所获取的数据片一般将被允许也保留在下方去重复存储区657中。这些数据片将继续存在于去重复存储区657中的主要原因是数据卷的其他区域(或其他数据卷)可能引用相同的所获取的数据片。如果数据片没有被任何数据组块引用,则垃圾收集机制可最终丢弃该未被引用的数据片。
未被引用的数据片可被允许保留在去重复存储区657中一段时间。将未使用的数据片保持在去重复存储区657中一段时间实际上是有益的。具体而言,从去重复存储层650(或较低层)上拉到线性存储层640的数据组块可能很快向下流回到去重复存储层650。当这一点发生时,去重复存储区657中预先存在的数据片可被再次使用,如果该数据片仍然表示数据组块的一部分的话。
回头参考图8,在数据组块被完全上移回至线性存储区647并在阶段840被组装之后,在阶段850,线性存储层640随后可盖写该数据组块。在写期间的故障的不太可能的情况下,数据组块将包含盖写到旧数据上的新数据的混合。如上所述,这是现有应用程序已经准备好处理的情况。最后,在阶段860,该系统可以更新某些统计信息。例如,与该数据组块相关联的计数器可被递增以指示该数据组块最近被访问。这一计数器值可由数据分级算法使用来确定该数据组块是否应当保持在线性存储层中。
在大多数情况下,在特定存储层需要逐出旧数据来为新数据腾出空间时,分层大容量存储系统将只把数据向下流出到存储请求栈的较低数据存储层。例如,线性存储层640可将数据组块逐出来在线性存储区647中为新数据腾出空间。逐出策略可以使用与常见高速缓存替换策略类似的逐出策略。例如,该系统可以使用公知的最近最少使用(LRU)、最近最少分配(LRA)、或最不频繁使用(LFU)高速缓存替换策略来确定数据组块何时可从线性存储层640中逐出。本文的稍后章节将描述与数据逐出有关的附加细节。
存储器高效去重复层
回头参考图5,在线性存储层540确定特定数据组块没有被频繁时,线性存储层540将该数据组块向下流出到较低数据存储层以用于该数据组块的更高效存储。在一个实施例中,线性存储层540将数据组块发送到去重复存储层550以用于存储在去重复存储区557中。去重复存储层550担当不像线性存储层540中的“热门”数据那样被频繁访问但仍然经常被访问且通常读比写更频繁的“温暖”数据的储存库。顾名思义,去重复存储层550尝试从所存储的数据中移除重复数据,使得去重复存储层550比线性存储层540更高效地存储数据。
在去重复存储层550(以及这一实施例的所有较低数据存储层)中,数据是作为数据片来被存储的。每一数据片用数据指纹(如,SHA-256指纹)来唯一地标识。去重复存储层550可以使用去重复存储映射651来跟踪每一数据片是否被存储在本地数据存储系统的去重复存储区557内。图6示出去重复存储映射651和去重复存储区657的概念图。
如图6所示,去重复存储映射651可被实现为将每一数据片的数据指纹和每一数据片在去重复存储区657内的存储位置链接在一起的表。在实践中,去重复存储映射651可被实现为散列表(或类似数据结构)以优化搜索性能。如果所请求的数据片没有被存储在去重复存储区657内,则该数据片可被假定存储在较低数据存储层中。
在线性存储区647充满时,线性存储层640必须选择一个或多个线性数据组块来向下流出。在一个实施例中,线性存储层640使用“最近最少分配”(LRA)策略来确定特定数据组块何时应当被向下流出到较低数据存储层。在一个特定实施例中,数据组块的向下流出可由尝试保持线性存储区647大约85%充满的后台流出进程来执行。这允许大量数据被存储,但保持线性存储层640准备好接受新的数据写猝发。
图9示出了描述数据片如何从线性存储层640向下流出到去重复存储层650的流程图。在阶段920,线性存储层640将数据组块划分成各单独的数据片的集合。许多不同的技术可被用来将数据组块(如在线性存储层中使用的)切分成数据片(如在较低数据存储层中使用的)的集合。目标是以将造成标识重复数据片的高概率的方式将每一数据组块切分成各单独的数据片。在一个特定实施例中,每一数据组块是使用Rabin指纹来被切分的。Rabin指纹是在所定义的窗口上计算得到的渐进多项式。它是渐进的,因为连贯的Rabin指纹可通过从所定义的窗口的一端丢弃1字节并在所定义的窗口的另一端添加另一字节来计算得到。这允许Rabin指纹扫过被划分成数据组块的数据的一个组块。
图10在概念上示出Rabin指纹计算器窗口1050可如何扫过数据组块1010,渐进地计算Rabin指纹。Rabin指纹系统可被用来扫过数据组块1010并周期性地丢弃锚以定义数据片。在Rabin指纹等于某一任意值时,锚可被丢弃。在一个特定实施例中,该系统创建在由数据组块的开始或先前锚来定义的第一锚处开始的、至少8K字节长、且在指定的任意Rabin指纹值被生成或达到64K限度时结束(以先发生的为准)的数据片。这一实现将创建长度全部在8K和64K之间的数据片。如果选择了任意值作为在二进制Rabin指纹的最低有效位中具有16个0的值,则数据片的大小将平均是约16K。
回头参考图9,在阶段930,该系统随后可能需要在去重复存储区657中分配空间(如果没有空间可用的话)。这可通过选择去重复存储区657中的最近最少分配的组块的空间并将该区域中的各数据片向下流出到较低数据层来完成。注意,与线性存储层640一样,去重复存储层650也可具有总是尝试将去重复存储区657保持在约85%充满的正在运行的后台进程,使得去重复存储层650存储大量数据但仍然总是能接受新数据。
在将数据组块划分成数据片并确保去重复存储层650中存在空间后,线性存储层640随后开始向下流出来自该数据组块的各单独的数据片。在阶段940,线性存储层640首先计算数据片的数据指纹。这一指纹是统计上唯一的标识符指纹,如SHA-256指纹。在阶段950,线性存储层640随后将数据片和该数据片的指纹提供给去重复存储层650。(该数据可通过简单地传递指向数据片的指针来被提供。)
接着,在阶段970,去重复存储层650检查它接收到的指纹标识符并搜索去重复存储映射651以查看是否已经存在现有相同的数据片已被存储在去重复存储区657中。使用具有极低混淆概率的足够强的指纹标识符,简单地比较指纹标识符可足以标识重复数据。在一替换实施例中,去重复可以按两个阶段来执行。第一阶段可以使用概率方法来定位可能的重复候选。在标识了重复的候选之后,详尽算法验证重复数据并可能调整数据片边界以获得更多重复的数据片。
在阶段980,如果去重复存储层650标识了冗余数据,则去重复存储层650可以丢弃该数据。在其中该系统维护引用计数器以跟踪多少不同数据组块引用特定数据片的实施例中,该系统可以递增该引用计数器。在接收到的数据片尚未被表示在去重复存储层650中时(在阶段975,相同的指纹没有在去重复存储映射651中找到),则在阶段990,去重复存储层650将该数据片添加到去重复存储映射651。具体而言,去重复存储层650将实际数据片存储在去重复存储区657中并在去重复存储映射651(它可以是散列表)中创建包括数据指纹标识符和指向新添加的数据片的指针的新条目。
在阶段995,线性存储层640确定这是否是向下流出的数据组块的最后数据片。如果不是,则线性存储层640返回阶段940来向下流出另一数据片。如果这是来自数据组块的最终数据片,则线性存储层640现在可通过移除指向线性存储区647中的该数据组块的指针并将组成该数据组块的所有数据片的数据指纹标识符条目添加到线性存储映射641中来更新线性存储映射641。因此,在接收到引用该特定存储器组块的后续存储器请求时,该系统将需要通过使用指纹标识符来访问现在存储在去重复存储区657(或较低数据存储层)中的数据片。
通过在阶段975和980移除重复数据,去重复存储层650极大地提高了存储效率。这允许更多数据逻辑卷被存储在线性存储层540下的本地存储层中,线性存储层540只以原始未经压缩的形式来存储数据。然而,这一提高的数据存储效率是有成本的。线性存储层540必须将每一数据组块切分并计算每一数据片的指纹标识符。去重复存储层550必须处理重复数据片的标识和消除。此外,将数据流出到去重复存储层550涉及大量元数据更新以维护去重复数据存储映射651。然而,因为处理功率现在非常便宜且本地存储层的带宽远大于到云数据存储的带宽,所以这是值得的折衷。
提高的存储器效率的另一成本是在接收到对去重复存储层650中的数据组块的读请求时,该读请求必须用来自去重复存储区657的已分解的数据来满足。因而,线性存储层640必须从去重复存储层650(或较低数据存储层)获取每一所需数据片并随后重新组装各数据片以获得所请求的数据组块。这意味着由去重复存储层650进行服务的读请求的等待时间将高于由线性存储层640进行服务的读请求的等待时间。然而,这一等待时间差异相对很小且值得折衷,因为数据去重复允许多得多的数据被存储在高速去重复存储区657内。将更多数据存储在高速去重复存储区657中将意味着对将数据存储在硬盘上或用非现场云数据存储提供者(它将具有大得多的等待时间)来存储数据的更低(更慢)数据存储层的较少访问。
回头参考图5,去重复存储层550担当相对快速的本地数据存储级。去重复存储层550中的“温暖”数据不像线性存储层540中的数据那样被频繁访问,但去重复存储层550中的数据仍然在相对频繁的基础上被访问。虽然去重复存储层550更高效地存储数据,但是去重复存储层550将最终用尽存储空间。在去重复存储层550用尽存储空间时,去重复存储层550必须开始逐出现有数据片来为新数据片腾出空间。去重复存储层550将所逐出的数据片沿存储请求处理栈515进一步向下流出。
注意,去重复存储层550所使用的数据逐出策略可以与线性存储层540所使用的数据逐出策略相同、相似或不同。参考图6,去重复存储层650的一些实现可在去重复数据存储映射651中维护‘引用计数器’值,该值维护每一数据片被数据组块引用的次数计数。在其中实现这样的引用计数器的实施例中,引用计数器可由数据逐出算法使用,使得被多次引用的数据片较不可能从去重复存储层650中逐出。
作为向下流出数据来使去重复存储区557中的更多存储空间可用的补充,去重复存储层550可在它必须将数据片向下流出到较低数据存储层之前主动这样做。具体而言,在被请求将数据流出到云存储提供者591之前主动这样做可能是非常有利的。这允许到云数据存储提供者591的通信链路的带宽被更高效地使用,因为数据片可在存在空闲带宽时发送。然而,数据片也可本地地保留在分层大容量存储系统500内,使得对这些数据片的读请求可被快速地进行服务。
瞬态存储层
参考图5,对不能被先前两个数据存储层完全进行服务的数据片的读请求被传递到瞬态存储层560。瞬态存储层560可被用来存储相对不频繁地访问的“微温”数据。瞬态存储层560可以将数据存储在能以低成本提供非常大量的数据存储的硬盘驱动器上。然而,将数据存储在硬盘驱动器上而非固态存储器(SSM)内意味着在对读请求进行响应时将存在稍微更长的等待时间。
在去重复存储层550充满时,它将把数据片向下流出到瞬态存储层560。参考图6的实施例,瞬态存储层660可以维护标识存储在瞬态存储区667内的数据片的位置的它自己的瞬态存储映射661。
回头参考图5的实施例,向下流出到瞬态层560的所有数据片穿过压缩层559,压缩层559压缩数据片以将数据更紧致地存储在瞬态存储层560内。压缩层559可以允许使用多种不同的压缩系统。为了允许这一点,压缩层559可以将压缩信息1115前置到经压缩的数据片1110上,如图11A所示。压缩信息1115可包括指定用来压缩该经压缩的数据片1110的特定压缩算法和版本的代码。在使用多种不同的压缩系统时,这允许压缩层559选择正确的解压系统。这样的可扩展系统可能能够为特定数据片选择最优压缩系统。此外,这允许新的压缩算法被随时间添加到该系统。
数据片的压缩实现了两个目标。第一,压缩降低需要存储在瞬态存储567中的数据量,使得可被本地地存储在分层大容量存储系统500内的数据量增加。第二,在数据片最终被发送到数据存储提供者591的情况下,压缩降低了因特网连接596上的带宽使用。降低带宽使用非常重要,因为这降低了前端存储区域网络连接502处的高速带宽与到云数据存储提供者591的这一后端因特网连接596之间的巨大差异。
云存储层
参考图5,在瞬态存储层560下是可被用来将数据存储在非现场云存储提供者591处的云存储层580。存储在非现场的数据一般在该数据被读回时将引入某些等待时间。取决于分层大容量存储系统500是被如何配置的,云存储层580可被按各种不同的方式使用。例如,分层大容量存储系统500可被指令仅将云存储层580用于备份操作、仅在绝对必要时才用于正常数据存储、或只是用作分层数据大容量存储系统500的另一层。
在“仅限备份”配置中,分层大容量存储系统500被设计成只使用本地存储层(线性、去重复以及瞬态)作为主数据存储。在这样的配置中,云存储层580只在管理员明确请求创建非现场备份卷时才被激活。如果分层大容量存储系统500设备在本地存储层中以低的存储空间运行,则该系统的管理员将被警告,使得管理员可以添加更多本地存储容量、删除数据以创建更多本地空间、或改变配置以开始使用云存储层580作为正常数据存储。使用“仅限备份”配置确保所有数据将总是可在本地获得,使得如果到云存储提供者591的数据链路596出现故障,所有数据卷仍然将可在本地获得。此外,使用“仅限备份”配置将确保数据请求永不存在很长的等待时间,因为所有数据将可本地地在分层大容量存储系统500内获得。
在“仅限必要”配置中,分层大容量存储系统500将总是尝试将所有数据保持在本地。然而,如果本地存储层(线性、去重复以及瞬态)中剩余的存储空间不足,则分层大容量存储系统500会开始将数据存储在非现场云存储提供者591处。将通知管理员非现场数据正在发生,使得管理员可以采取各种动作来作为响应。如上所述,管理员可以添加更多本地存储容量、删除数据以创建更多本地存储空间、或开始使用云存储层580来用于正常数据存储。
最后,在正常“云存储”配置中,分层大容量存储系统500使用云存储层580来作为另一连贯数据存储级。在一个这样的实施例中,存在三个不同的本地存储层(线性、去重复以及瞬态)以及第四无限可扩展的云存储层。当在正常云存储模式中时,分层大容量存储系统500将因为使用可扩展云存储而永远不会用尽存储空间。在正常云存储模式中,云存储层580将“冷门”数据(很少被访问的数据)存储在云存储数据提供者591处。因为从非现场数据存储提供者591检索数据花费时间,所以对于需要访问非现场云数据存储提供者591的任何数据存储请求而言,一般将存在较大的等待时段。理想地,这样的等待时间应当极少发生、只在访问旧数据存档时发生,因为大多数被频繁使用的数据应当被表示在分层大容量存储系统500的本地存储层中。
在较高数据存储层将数据片朝云存储层580向下流出时,屏障层570首先将该数据片的副本存储在屏障存储区547中。屏障存储区547被用来临时存储云存储层580将传送到数据存储提供者591的数据的副本。图5示出SSM中的屏障存储区547,但屏障存储可以指SSM中或在硬盘驱动器上。屏障层570将数据片存储在屏障存储577中达‘安置时段’,这允许数据存储提供者591完全完成其自己的数据存储任务。如果发送到数据存储提供者591的数据过快被请求,则数据存储提供者591可能在提供该数据时失败,因为数据存储提供者591可能尚未准备好对数据查询进行响应。因而,在瞬态存储层560将读请求向下流出时,屏障层570首先检查屏障存储区547以查看所请求的数据是否可在其中获得。如果所请求的数据位于屏障存储区547中,则屏障层570将使用位于屏障存储区547中的数据片对该数据请求进行响应。如果所请求的数据片没有位于屏障存储区547中,则屏障层570会将该读请求向下传递给云存储层580,使得云存储层580可以向云数据存储提供者591请求数据片。
除了允许所传送的数据片在数据存储提供者591处安置外,屏障层570还用于各附加目的。一个重要目的是处理存储请求序列化。许多云数据存储提供者将以接收到数据存储请求的初始次序不同的次序执行在很近的时间邻近度内接收到的这些数据存储请求。因而,如果清除请求被传送并随后是对同一数据位置的写请求,则云数据存储提供者591可能反转这些请求的次序,使得该系统写入数据并随后清除该数据,从而破坏数据。为了防止这一潜在的灾难事件,屏障层570在引用同一数据片的各数据存储请求之间放置长的等待时段。
在云存储层580将数据传送到数据存储提供者591之前,云存储层580首先准备要被发送的数据片。具体而言,数据片可首先被加密层583加密。通过对数据进行加密,分层大容量存储系统500的用户不必担心他们的数据安全性。加密防止分接因特网连接596或检查存储在存储提供者591处的数据的任何人能够理解数据的真实含义。
许多不同的数据加密系统可被用在加密层583内。在一个特定实施例中,AES-256加密系统被实现在加密层583内。与压缩阶段一样,加密层583可以通过将加密信息1125前置到经加密的数据片1120来允许使用多个不同的加密系统,如图11B所示。在可使用多个不同的数据加密系统时,加密信息1125允许加密层583选择正确的解密系统和版本。被前置的加密信息1125还可指定所封装的数据片的大小,因为一些加密系统只操作固定大小的数据并且因此需要填充字节。注意,使用前置压缩1115和加密信息1125允许在任何时刻将新压缩和加密系统添加到分层大容量存储系统500。
被前置的加密信息1125的使用还可被用来帮助加密密钥管理。加密密钥可在周期性的基础上改变以提高数据安全性。代码可被置于被前置的加密信息1125中以帮助选择正确的数据解密密钥。在一个实施例中,该系统允许管理员使用口令短语来生成加密密钥。多级授权可被用来保护密钥以防丢失。另外,如果用于加密密钥的口令短语丢失,则内置系统可允许消费者联系分层大容量存储系统500系统的制造商。
在将副本存储在屏障存储577中且由加密层583加密之后,经压缩的且经加密的数据片被提供给负责将数据片传送到数据存储提供者591的云存储层580。云存储层580首先在云数据存储提供者591内创建新数据对象以存储该数据片。在一个实施例中,云存储层580使用来自先前存储层的相同指纹标识符作为该数据对象的名称。云存储层580随后将该数据写(传送)到新创建的数据对象。云存储层580随后允许安置时段,其中它在该数据可从数据存储提供者591读回之前等待指定时间量。这一安置时段是可基于正使用的特定数据存储提供者591来配置的时间值。一旦安置时段期满,云存储层580就向屏障层570通知屏障层570可以删除被置于屏障存储577中的数据片的副本。因而,针对该数据片的后续读操作必须通过向云数据存储提供者591请求回该数据片来被服务。
为了确保该数据被正确地存储在数据存储提供者591内,云存储层580可使用数据存储提供者591所使用的同一类型的校验和来计算数据的校验和值。在接收到数据以供存储时,数据存储提供者591可以在确收消息中传送回校验和值。如果两个校验和值不匹配,则云存储层580可重传数据片。在使用这样的校验和时,屏障存储577中的数据的副本应当不被移除,直至已经达到匹配的校验和且安置时段已期满。
与较高存储层不同,云存储层580不需要维护数据片的映射。数据存储提供者591负责维护将数据片指纹标识符链接到数据片对象的系统,使得云存储层580可以向数据存储提供者591请求回并获得数据片。
由瞬态存储层560向下传递的数据读请求以与写请求基本上相同的方式被处理,但按照相反的次序。如上所述,屏障层570将首先尝试使用存储在屏障存储577中的数据来对数据请求进行服务。如果数据请求不能用从屏障存储577中的数据服务,则云存储层580将使用数据片指纹标识符作为所请求的数据对象的名称来向云数据存储提供者591发送读请求。在接收到来自云数据存储提供者591的响应之后,云存储层580可以通过计算接收到的数据的校验和来对接收到的数据片执行数据完整性校验。如果计算得到的校验和与从去重复存储层550接收到的校验和不匹配,则云数据存储提供者591可能已经破坏了该数据。可尝试重试以从云数据存储提供者591获得正确数据。如果正确数据不能被检索到,则‘媒体错误’消息可沿数据存储栈515向上往回传播。
在接收到经校验的数据时,经校验的数据随后被提供给加密层583以供解密。经解密的数据随后被传递给瞬态存储层560,其中数据片可被存储在瞬态存储567中。然而,为了处理数据读请求,数据片由压缩层559解压并且所请求的数据片被沿请求处理栈515进一步向上传递。去重复存储层550将接收从云获取的该数据片,并且可将该数据放回到其重复存储区557中。去重复存储层550将所请求的数据向上传递到线性存储层540,并且最终,线性存储层通过组装所请求的数据(如图7的阶段760所述)来完成读请求。
注意,在数据片沿数据请求处理栈515向上往回传递时,该数据片可被存储在数据请求处理栈515的若干不同的存储层内并且将继续保留在云数据存储提供者591处。如果去重复存储层550再次逐出也被存储在瞬态存储层560中的数据片(且该数据片尚未改变),则该数据片不必被再次存储在瞬态存储层560中,因为它已经存在于其中。因而,去重复存储层550可只是将删除它的数据片副本。
取决于特定应用的需求,数据请求处理栈515及其各种数据存储层可以用各种不同的方式来实现。注意,各种不同的技术可独立地或相组合地用在分层大容量存储系统500中。
缩放分层数据存储系统
图5的分层大容量存储系统500可被实现为用于如图4所示的办公环境的大容量存储装备460,其中大容量存储装备460向若干服务器系统(441、442以及443)提供数据存储服务。服务器系统(441、442以及443)向用户工作站的集合(421到427)提供各种服务。然而,图4中描绘的办公环境也将需要本地信息技术部门配置并维护局域网430、各种服务器系统(441、442以及443)、存储区域网络450、分层大容量存储系统460以及云存储提供者491的帐户。
对于小型办公室或远程分支办公室,雇佣专用信息技术雇员一般是不可行的。例如,图12示出用于只具有使用工作站1221、1222以及1223的三个本地雇员的小型办公环境的计算机基础设施。除三个工作站(1221、1222以及1223)外,图12的小型办公室包括局域网1230、小型本地服务器1250、以及提供因特网服务的因特网网关设备1271。小型本地服务器1250运行少量服务器应用,如向该办公室提供诸如文件共享、打印共享、电子邮件等某些本地服务的服务器应用A 1256和服务器应用B 1257。
虽然图12的计算机基础设施比图4的更复杂基础设施简单得多,但仍然将需要一些信息技术维护。例如,服务器系统1250的直接附连的存储(DAS)1251需要维护且必须使用备份系统1259执行服务器的直接附连的存储(DAS)1251的周期性备份。因而,为了维护图12的甚至非常有限的基础设施,来自较大办公室的信息技术(IT)人员必须周期性地拜访这一办公室、必须在合同的基础上雇佣外部IT人员、或该办公室的雇员之一必须花费他们的部分时间来从事该小型办公室的IT问题。
代替需要信息技术人员拜访图12的小型办公室,该办公室的所有数据存储服务可被远程处理将是合乎需要的。为了提供这样的解决方案,本公开提出了将可远程控制的分层存储系统集成到服务器系统1250中。具体而言,图13示出与图12非常类似的小型办公计算机环境,其中小型服务器系统1350包括集成的分层存储系统1355。集成的分层存储系统1355向在服务器系统1350上运行的应用(应用A 1356和应用B 1357)提供数据存储服务。
图13的具有包括集成的分层存储系统1355的服务器系统1350的小型办公环境提供了超过图12的传统小型办公环境的若干优点。例如,集成的分层存储系统1355使用基于云的数据存储服务1391来向服务器系统1350提供不断扩张的存储容量。此外,集成的分层存储系统1355使用数据去重复和压缩技术来非常高效地使用直接附连的存储1351内的本地存储容量。但集成的分层存储系统1355的最重要方面之一是远程管理能力。
如参考图5阐明的,分层存储系统500包括管理组件510。管理组件510允许分层存储系统500通过网络接口被远程地配置和维护。回头参考图13,这意味着在公司总部1310的IT部门处(或在合约代理处)的管理员1311可远程地访问、配置并维护服务器系统1350的所有数据存储功能。数据存储相关维护任务一般需要人员在物理上在场,因为管理员通常必须处理物理存储硬件。例如,在办公室成长超出当前数据存储容量时,管理员可能需要用较大硬盘驱动器在物理上替换现有硬盘驱动器。然而,因为分层存储系统1355虚拟化盘卷并使用可不断扩张的基于云的存储,分层存储系统1355允许远程地处理大多数数据存储维护任务。
例如,使用图12所示的传统小型办公服务器1250,在用备份系统1259对直接附连的存储1251进行备份时,本地管理员必须经常在场以处理物理备份介质。但在图13的具有集成的分层存储系统1355的服务器系统1350中,远程管理员1311可以指令分层存储系统1355在基于云的数据存储1391中创建数据卷的备份,类似地,在需要新数据卷来存储更多数据时,远程管理员1311可指令分层存储系统1355创建新数据卷。新数据卷的创建将不需要物理添加新盘,因为分层存储系统1355将改为按需把旧的不活跃数据从本地直接附连的存储1351中逐出,来为新数据卷创建空间。因而,只要本地存储系统能够处理在服务器系统1350上活跃地使用的数据,就不需要新本地存储。相反,基于云的数据存储1391担当不断扩张的存储系统。
集成的分层数据存储系统细节
集成的分层存储系统1355可以用各种不同的方式来实现。图14示出具有集成的分层存储系统1404的服务器系统1400的一个实施例的详细框图。分层存储系统1404可被实现在微软Windows、Linux、以及其他操作系统内。
在服务器系统1400中,软件环境被划分成用户空间和操作系统(即,内核)空间。操作系统、各种库以及设备驱动程序在操作系统空间中执行。在操作系统空间中运行的程序被授予更多特权且能够直接访问硬件部件。出于安全原因,在用户空间中执行的应用程序被授予较少特权且不被允许直接访问硬件部件。例如,应用A 1456和应用B 1457在用户空间中执行。这一安排允许计算机系统以更稳健的方式操作,因为应用程序(无论有意恶意还是仅仅被编写得很差)被阻止执行会造成服务器崩溃的操作。
为了访问存储资源(这需要访问某些数据存储硬件),应用程序必须向操作系统1479发出请求。例如,应用A 1456和应用B 1457可以通过操作系统1479发出存储请求,这些存储请求被提供给处理数据存储请求的虚拟存储驱动程序1480。在典型的计算机系统中,正常存储驱动程序将通过把数据存储到数据存储设备(如,直接附连的存储1475)上来完成该存储请求。然而,在图14的实施例中,虚拟存储驱动程序1480改为看起来使得虚拟盘卷1451、1452以及1453可用,但通过将请求传递给分层存储系统1404来处理对这些虚拟盘卷的存储请求。在Windows服务器环境中,虚拟存储驱动程序1480可被实现为Storport驱动程序。在Linux环境中,虚拟存储驱动程序1480可被实现为虚拟SCSI设备驱动程序。
注意,通过在虚拟存储设备驱动程序处实现该系统,所公开的系统处理所有类型的存储请求。具体而言,回头参考图2,应用程序可以通过操作系统的文件系统211作出存储请求或可以向存储控制系统作出直接存储请求以存储原始数据块。通过在操作系统空间内实现虚拟存储驱动程序1480,所公开的系统可以处理来自应用的高级存储请求,如使用原始块存储请求代替通过文件系统的简单文件请求的数据库。
在图14所公开的特定实施例中,分层存储系统1404的数据存储处理栈被实现在用户空间内。这可被完成,因为有更多编程支持工具供在用户空间中开发,且用户空间应用不需要来自创建操作系统的实体的批准。然而,在其他实施例中,数据存储处理栈可被实现在操作系统空间中。虚拟存储驱动程序1480将所有存储请求传递给数据存储处理栈的顶部处的驱动程序接口1420。数据存储请求随后由数据存储处理栈的各不同层处理,直至该请求被完全解决。为了处理本地数据存储,各数据存储层(线性存储1440、去重复存储1450、瞬态存储1460等)访问处理针对服务器系统中的真实直接附连的存储设备1475的存储请求的真实存储驱动程序1474。
各种不同的实施例可以将各种不同类型的数据存储用于不同的各级。例如,为了实现高性能系统,线性存储层1400可以使用固态存储来降低等待时间并具有高吞吐量。然而,在图13所示的小型办公环境中,低等待时间性能可能不是重要的性能,使得所有本地数据存储各级可简单地使用本地硬盘驱动器系统。虽然这样的基于盘的集成的分层存储系统实施例将不提供非常低的等待时间或高吞吐量,但集成的分层存储系统1404将仍然从通过在去重复存储层1450中执行数据重复以及在瞬态存储层1460中执行数据压缩所提供的提升的存储效率中获益。更重要的,基于服务器的分层存储系统1404将从大量存储管理特征中获益,如远程卷创建、基于云的备份、无需硬件升级的不断扩张的存储大小、远程卷复制、跨多个地点的集中式存储管理,等等。这些特征的重要性将在下一章节中更详细地描述。
数据存储处理栈的云存储层1481与云数据存储提供者1491交互,以使服务器系统1400能够处理比可只存储在直接附连的存储设备1475中多得多的数据。具体而言,云存储层的将数据存储在云数据存储提供者1491处的能力允许分层存储系统1404在服务器系统1400上提供不断扩张的数据存储。
集成的分层数据存储服务器特征
具有带集成的分层存储系统的服务器系统极大地简化了卫星小型办公室的创建和支持。为了解说卫星办公室可被支持的容易性,将参考图15A-15H呈现一组示例。
图15A示出具有总部1510和位于伦敦及苏黎世的两个卫星办公室的公司的框图。总部1510处的管理员1511维护伦敦及苏黎世的卫星办公室处的分别具有集成的分层数据存储系统的两个服务器系统1560和1550。卫星办公室服务器系统(1560和1550)中的每一个使用区域云存储提供者来提供高速云存储服务(分别是1569和1559)。注意,许多国家具有描述数据必须被如何处理的数据隐私规章,使得用区域云存储提供者来存储数据将帮助履行这样的法律义务。
公司决定在东京开张新卫星办公室。为了在东京设立卫星办公室,具有集成的分层存储系统的新服务器系统1570被建立并发送到东京办公室。一旦服务器系统1570到达新东京办公室,它就被耦合到因特网连接并被引导。
在服务器系统1570被引导之后,管理员1511可登录到服务器系统1570并配置服务器系统1570以供操作,如图15B所示。管理员1511所做的首批任务之一是打开本地云存储提供者1579的帐户并配置服务器系统1570将本地云存储提供者1579用作分层数据存储系统的底部一级。此时,东京服务器系统1570准备好处理不断扩张的数据存储量。
接着,管理员1511可能希望创建一些虚拟数据卷并用供东京办公室使用的应用和数据来填充东京服务器系统1570。为此,管理员1511可以配置东京服务器系统1570中的云存储层以使用总部1510处的服务器系统1507作为数据源,如图15C所示。随后,管理员1511可在东京服务器系统1570内‘复原’总部1510处的卫星办公室模板卷1551。
图15D示出在将卫星办公室模板卷复原到东京服务器系统1570上并创建其他所需数据卷之后的东京服务器系统1570的状态。注意,总部1510处的卫星办公室模板卷1511只被用作备份源卷。并且,对所复原的卷的任何变更将只影响东京服务器系统1570中的本地驱动器和东京服务器系统1570所使用的云存储服务1579。使用常规远程管理系统,管理员1511可以在东京服务器系统1570上安装并配置所需要的任何服务器应用。
此时,东京服务器系统1570已被配置且加载了应用,准备好以供使用。因而,工作站1571和1572处的用户可开始使用东京服务器系统1570,如图15E所示。注意,整个配置过程能够由管理员1511在公司总部1510处远程执行。
一年后,公司可能决定东京不是它们的远东卫星办公室的最适当位置并且可能希望将办公室移至新加坡。具有分层存储系统的服务器系统1570可极大地便于这一移动办公计算机基础设施的任务。第一任务是使管理员1511创建来自东京服务器系统1570的所需数据卷的备份。这可通过拍摄所需卷的快照并随后在云存储1579处或在公司总部1510处创建快照卷的基于云的备份来执行。图15F示出在公司总部1510中的服务器系统1507处来自已关闭东京办公室的服务器系统1570的备份1552。
注意,在备份过程期间,来自区域云存储系统1579的所有所需数据将被提取并复制到备份1552。一旦完成了所有备份,东京办公室可被关闭且与区域云存储系统1579的合同可被终止,如图15G所示。。注意,这样的云提供者变更的时机可独立于场所转移来确定,并且可发生在转移已完成之后的稍后阶段。这允许在持久的基础上或在临时转移(例如,在灾难恢复、故障切换情况下)的情况下的无缝转移,作为失败返回的一部分允许在东京场所处复原原始服务。
新新加坡办公室随后可通过遵循参考图15A到15E阐明的相同步骤来快速开张,除了代替复原卫星办公室模板卷1551,管理员改为在新新加坡办公室处复原东京办公室备份卷1552。最终结果在图15H中示出。注意,如果未经配置的服务器系统1580被设立并且准备好在东京办公室关闭之前进入新新加坡办公室,则东京服务器系统1570可在东京办公室最后一天关闭之后被立即备份并在新加坡办公室处立即复原。以此方式,新新加坡办公室可在东京办公室关闭之后当天开张,刚关闭的东京办公室的所有数据立即可在新新加坡办公室处获得!
分层存储系统可被用来将信息卷容易地分发给所有不同的卫星办公室。参考图15I,公司总部1510创建了库卷1553作为服务器系统1507上的备份卷。库卷1553包含公司总部想要分发给所有不同的卫星办公室的信息,如公司章程、与健康保险有关的信息、培训视频、供所有雇员使用的软件许可,等等。为了将库卷1553分发给所有卫星办公室,管理员联系服务器系统1550、1560以及1580中的每一者,并指令这些服务器复原库卷1553作为本地卷。每一卫星服务器1550、1560以及1580随后将创建包含来自库卷1553的所有信息的本地卷。
注意,来自库卷1553的所有数据可不被立即传送给所有卫星服务器(1550、1560以及1580)。相反,一开始只有创建本地库卷1553的外观所需的信息的索引被传送。随后,当各卫星办公室处的用户请求来自库卷的本地实例的文档时,库卷1553的各个片段将在被请求时传送。这一技术降低了不必要的网络带宽使用并且不会因没有用户访问的文档而浪费本地存储空间。
云中的集成的分层数据存储
有时甚至管理如图13所示的单个小型网络服务器1350可能也不是理想的。例如,如果有多个销售人员在远程地理区域中工作,则没有方便的中央办公室来主存用于这些远程销售人员的服务器。或者,公司可能决定通过只将所有基于服务器的应用移至基于云的计算机服务提供者,来外包所有服务器硬件的物理维护。为了实现这一目标,具有集成的分层存储系统1404的服务器系统1400可被移至基于云的虚拟服务器。理想地,基于云的计算机服务提供者将位于相对靠近用户的地理位置处,使得响应时间被优化。
图16示出具有在云服务提供者1699处执行的集成的分层存储系统1604的虚拟服务器系统1600。通过将服务器系统移至基于云的服务提供者,实体可以消除并外包物理上维护服务器硬件的所有任务。各单独用户(如瘦客户机系统1698处的用户)可以跨因特网1690从虚拟服务器系统1600访问服务器应用。因而,许多地理上位于远程的各单独用户(如地理上分散的销售人员)全部可以共享服务器应用1656和1656。
注意,在基于云的环境中,分层存储系统1404的不同层的优点可能不被同样多地察觉到。例如,当在基于云的环境中执行时,线性存储层1640可能不具有非常低的等待时间响应,因为基于云的环境可能不支持将某些存储区域分配为固态存储器,而是将改为使用盘存储,如图16所示。因而,用于各存储层的存储大小分配和逐出策略可被调整以适应云环境。
图16的虚拟服务器系统1600实现使用专用虚拟存储驱动程序1680来向各应用程序提供存储服务。由于这一体系结构,希望使用分层存储系统1604的任何服务器应用必须在同一虚拟服务器系统1600上运行。例如,服务器应用A 1656和B 1657在虚拟服务器系统1600上执行,并且因而可以访问该虚拟服务器系统1600中的虚拟存储驱动程序1680。为了提高性能,每一应用程序可被分配其自己的单独的虚拟机。
图17示出运行两个分开的虚拟服务器系统(1700和1701)的云服务提供者1799,其中每一服务器系统正在运行单个服务器应用(分别是1756和1757)。附加的虚拟服务器可被产生以处理附加应用,其中每一虚拟服务器具有其自己的分层存储系统实例。这一安排允许该系统利用云计算方面的横向扩展(sacle out)代替纵向扩展(sacle up)。具体而言,多个不同的计算机实例可被分配处理各单独的任务,代替使用运行多个不同的应用的单个大型计算机实例。因而,对于类似任务,系统可以使用其成员可生长或缩水的较小节点集群,而非使用一个消耗预定义资源集合的大型计算节点。
在一替换实施例中,分层存储系统可被一般化成允许在其他机器(真实或虚拟)上运行的其他应用更容易地访问基于云的分层存储系统。图18示出在云服务提供者1899处执行的虚拟分层存储系统1804。然而,虚拟分层存储系统1804向外部世界展示网络存储接口1880,如iSCSI接口。以此方式,服务器应用A 1871、B 1872以及C 1873可以在它们自己的虚拟系统(或办公室处的物理系统)上运行并通过网络存储接口1880访问存储服务。在瘦客户机系统1898处的单独用户被示为跨因特网1890访问服务器应用C 1873。
注意,图18的实施例使得易于较快地扩展应用服务。具体而言,由于应用的许多实例有必要在它们自己的虚拟服务器中创建并被允许访问同一网络存储接口1880,使得在需要处理能力来处理多个同时用户时,应用处理能力可被快速扩展。
使用云中的数据存储进行灾难恢复
将虚拟分层存储系统1804主存在基于云的服务提供者1899内的能力提供了为使用分层存储系统的任何实体创建低成本灾难恢复系统的能力。使用图4的分层存储装备460或图13的集成的分层存储服务器1350,管理员可容易地创建在分层存储系统所使用的云存储提供者处存储的日常备份卷。因而,如果灾难来临(如容纳分层存储装备460或集成的分层存储服务器1350的办公建筑烧毁),则最近备份卷可被复原到云服务提供者1899处的基于云的虚拟分层存储系统1804。一旦备份数据卷在虚拟分层存储系统1804处被复原,基于云的应用程序(如应用1871、1872以及1873)就可开始使用所复原的数据卷来操作。
因而,简单地通过创建定期基于云的备份卷,使用分层存储系统的任何组织都有能力在云服务提供者1899内快速复原整个备份办公基础设施。该待命灾难恢复实际上没有任何维护成本,因为在灾难来临时云服务提供者1899帐户可立即打开。
前述技术公开旨在是说明性而非限制性的。例如,上述实施例(或其一个或多个方面)可以彼此组合使用。在审阅以上说明书,其他实施例对本领域技术人员而言将是显而易见的。因此,要求保护的范围应当参考所附权利要求连同这些权利要求享有的等效方案的全部范围来确定。在所附权利要求书中,术语“包括”和“其中”用作术语“包含”和“其特征在于”的易懂的英文等价词。同样,在所附权利要求书中,术语“包括”和“包含”是开放的,即包括除在权利要求中这样的术语之后列出的元件之外的各元件的系统、设备、制品、或方法仍然被认为落入该权利要求的范围内。此外,在所附权利要求书中,“第一”、“第二”以及“第三”等术语仅用作标号,不是对其对象的数字要求。
提供摘要以遵循37C.F.R.第1.72(b)节,其要求将允许读者能快速查明技术公开的本质的摘要。该摘要是以不用于解释或限制权利要求的范围或含义的理解而提交的。同样,在以上的详细描述中,可将各种特征组合在一起以使本公开流畅。这不应被认为是意指不要求保护的特征对任何权利要求是关键的。相反,本发明的主题在于少于特定公开实施例的所有特征。从而,据此将所附权利要求结合进详细描述中,其中每个权利要求独立地代表一个单独的实施例。