详细描述
在此所述的技术的各方面一般涉及非易失性存储器的使用从而提供保存已在硬盘驱动器备份之间改变的数据的相对便宜且稳健的数据安全性解决方案。在硬盘驱动器失效(或者诸如对于膝上型计算机的被盗硬盘驱动器)的情况下,则所备份数据改变可与最后一次硬盘驱动器数据备份相组合以将数据还原到其当前状态。如将理解的,本技术还具有允许性能增强的额外益处。
在一个示例实现中,所改变的数据通过将该数据写入诸如闪存设备之类的非易失性存储器来同时备份。然而,如将理解的,任何类型的非易失性存储器将足够作为改变备份介质,包括电池备份RAM、另一硬盘驱动器、静态RAM、EEPROM设备、网络存储位置等等。此外,包括不同类型介质的多个备份介质可被组合在同一计算机系统中。
更进一步地,虽然如在此所述地可被备份的改变数据的单元的示例包括文件、文件的各部分、或盘分配单元(例如,在此称为块的扇区或簇),但是不要求使用任何特定单元,并且实际上,各种类型的单元可被混合在同一备份介质上,诸如将整个文件作为一个单元来备份、将一些块作为其它单元来备份等等。此外,不是每个写入盘的每一改变都需要被备份;例如,用户可设置过滤器以使仅写入某一目录组的改变被同时备份到非易失性存储器,而其它改变不被备份。
如此,本发明不限于在此所描述的任何特定实施例、方面、概念、结构、功能和/或示例。相反,在此所描述的实施例、方面、概念、结构、功能和/或示例中的任何一个都是非限制性的,并且本发明可以按一般在计算和数据安全性中提供益处和优点的各种方式来使用。
图1示出一示例框图,其中通用计算机系统110包括耦合到南桥芯片114的非易失性存储器112,该南桥芯片114又耦合到其它常规计算机系统组件。典型地,图1的示例计算机系统110包括经由北桥芯片118耦合到RAM 120和图形处理单元(GPU/卡)122的处理单元(CPU)116。同样典型地,南桥芯片114被示为连接到用于远程连接的网络接口卡(NIC)124、连接到硬盘驱动器126、以及连接到用于设备连接的其它端口128。
注意,如由图2中的虚线所指示地,非易失性存储器112可替换地通过诸如通用串行总线(USB)存储设备接口之类的这种端口128连接。非易失性存储器112可作为卡(例如,外围部件互连即PCI、PCI express、PCMCIA)来连接,可内置到计算机系统主板,或者可以用基本上任何其它方式来耦合,包括经由网络连接、火线、、红外线、串行端口、并行端口等等。更进一步地,如以上所提及地,在单个计算机系统中可存在多个非易失性存储器类型。
注意,图1仅是一个示例体系结构;其它替换体系结构可包括使非易失性存储器链接到北桥(NB),诸如电池备份RAM的一部分。
如以上所描述地,与自从某一先前所保存的状态(例如,先前的硬盘备份)以来的硬盘写相对应的改变被存储在非易失性存储器112中。如图2中所表示地,在一个示例替换实现中,改变备份可在分配单元、或块级发生。更具体地,当写请求正待决时,写请求数据230在实际被写入硬盘驱动器126之前被发送通过多个驱动程序。该请求可以采用通过驱动程序栈的I/O请求分组,即IRP的形式,或者可由驱动程序管理器体系结构来控制,该驱动程序管理器体系结构以受管的顺序将IRP或其它数据结构选择性地路由到每个驱动程序并且处理所返回的数据。无论如何,要被写入硬盘驱动器126的数据230可在其正被写入之前由一个或多个驱动程序处理。
在图2的示例中,如已知地,文件系统232将与指定文件位置处的数据相对应的写请求映射到与硬盘驱动器格式化相对应的各个块(例如,簇或扇区),并且经由卷管理器234将文件数据写入那些块。文件系统232跟踪该映射(例如,在文件分配表或主文件表中),以使适当的数据被定位用于对指定文件位置处的数据的读请求。
为安全地备份与自从最后一个状态以来的改变相对应的块级写入(例如,基于实用程序的硬盘驱动器备份),在块级操作的改变备份驱动程序236将写数据230复制到非易失性存储器112。对非易失性存储器112的每一次写都经由元数据240来跟踪,藉此写入元数据的数据242可被适当地读回。虽然可以使用各种技术来跟踪这些写,诸如伴随每组写入的数据的头部,但是图2例示了其中元数据240记录硬盘驱动器上的块号以及其在非易失性存储器112中的相应位置的机制。
如可容易地理解的,块级改变备份的一个优点是它通过将改变应用于在最后一次全备份时保存的数据来基本使硬盘驱动器能被精确地重新创建在另一硬盘驱动器上。尽管如此,也可能在功能上(而非精确地)重新创建硬盘驱动器,诸如通过选择性地复制某些所改变的数据,而不复制频繁改变但与存储在硬盘驱动器上的程序和用户数据不相关的诸如日志、某些元数据等其它数据。为减少所复制的数据量,可执行块级过滤,诸如不备份已知对在功能上重新创建硬盘驱动器不必要的块。用户模式改变备份软件244在图2中示出,诸如向用户提供界面以配置设置的软件,例如排除可从中定位相应块用于块级过滤的某些类型的数据。软件244还可允许用户指定块级备份(相对于以下所描述的文件级改变备份和阈值)以及控制任何其它改变备份变量(例如,添加或调整非易失性空间)。
块级改变备份的缺点是用户可能高速缓存不为其特定用途所需的许多改变,即使采用了相对复杂的块级过滤。例如,用户可能希望来自工作文件的数据被备份,而不是与所记录的电视演出、游戏文件等相对应的数据改变。如此,一种替换数据改变备份机制执行文件级改变备份,在文件级改变备份中仅对所选文件(例如,由其扩展名来标识)和/或目录的改变被备份。
图3例示文件级改变备份概念,其中要写入的数据125在它到达文件系统232之前被文件级改变备份驱动程序336复制。如已知地,数据写附带有包括文件标识符、对文件的偏移量、以及写大小的元数据。如可容易地理解的,该文件元数据可以是用来跟踪复制到非易失性存储器112中的一个或一组位置的数据342的元数据340的基础。此外,用户模式改变备份软件344在图3中示出,诸如向用户提供界面以选择文件、文件类型和/或目录来进行文件级包括或排除过滤的软件;该软件344还可使用户能指定块级对文件级改变备份,设置阈值(以下所述),控制其它变量等等。
非易失性存储器112不需要专用于改变备份,而是部分地可用于诸如用作磁盘驱动器之类的常规用途、以及用于新用途。空间可针对每一用途来分配,例如四千兆字节闪存设备可具有一千兆字节用于盘驱动器以及三千兆字节用于备份改变存储。重新分配是可能的,然而一旦空间被用在盘驱动器或备份改变存储中,该空间不能被重新分配用于另一用途直到该空间被释放,否则其相应文件数据或备份改变数据将丢失。
一种使用非易失性存储器的新技术是通过使非易失性存储器用作盘高速缓存来提高计算机系统性能。为此,块(例如,扇区)在写请求时被复制到非易失性存储器,并且在可用时,在读请求时从该非易失性存储器读回。如所理解地,这相比常规盘访问要快得多,从而提供显著的性能改进。
关于在同一设备(或一组设备)上组合性能高速缓存和备份改变数据,动态重新分配通过在性能高速缓存中释放存储备份改变数据所需的空间而是可能的。在需要空间并且空间已被转储清除到磁盘时,性能高速缓存数据可如同任何其它高速缓存的数据一样被丢弃。注意一旦被备份,改变数据就还可被用于性能增益,因为改变数据还可用于在非易失性存储器112上的读访问。然而,所备份的改变数据例如在从许多写中被过滤时可以仅是用户的总数据写的子集,并且因而保留性能高速缓存在非易失性存储器空间否则不为改变数据备份所需要时仍具有重大价值。
图4A-4C示出将改变备份数据部分440增长到可供使用或由非易失性存储器112的性能高速缓存部分442先前所使用的空间的概念。如在图4A至4B的部分的大小中的变化可见,由于对于改变写需要更多的备份空间,所以改变备份部分440随着性能高速缓存部分442收缩而增长,通常直到非易失性存储器112中没有剩余任何空间为止(如以下所述)。如图4C所表示地,在改变备份部分440不再为存储改变数据所需要时,性能高速缓存部分442可被返回给非易失性存储器112空间的更大的部分(例如,所有或者几乎所有部分,如果一些小空间总是为改变备份扇区440所保存的话)。可为改变备份扇区440定义某一最小空间量。该重新分配可在硬盘的下一基于实用程序的备份操作之后,或者在改变备份部分440被转移到另一介质之后,如以下所描述地。
如可容易地理解的,块级性能高速缓存和块级改变备份可被合并到同一模块,例如同一驱动程序中。确实,如果块级改变备份不执行过滤操作,则处理写时没有真实差异存在。然而,与性能高速缓存不同,为在硬盘驱动器失效时保护免于数据丢失,改变备份软件需要在高速缓存满时通知用户,在该情况中用户需要采取行动来保存未来改变,例如执行基于实用程序的硬盘驱动器备份,将非易失性存储器内容转移到另一存储,添加更多的存储,压缩数据等。
图5示出与性能高速缓存驱动程序537(这还可包括块级改变备份驱动程序)共存的文件级改变备份驱动程序536的概念。在图5中,改变备份驱动程序536经由过滤操作来有效地备份仅与一组指定文件、一组指定目录等相对应的那些改变。如此,并非所有改变都被备份,并且改变备份部分440(图4A,与非易失性存储器112A的图5中的元数据540A和数据542B区域相对应)不会像在块级改变数据备份情况下增长得那么快。
在此示例中,性能级高速缓存在块级经由性能高速缓存驱动程序537发生。这可以是高速缓存到其非易失性存储器112B的其自己的区域540A和540B,这些区域可收缩。注意在一个替换中,在文件级的任何备份改变数据也被写到(作为在其相应块中的数据)性能高速缓存。出于效率起见,改变备份驱动程序536可与性能高速缓存驱动程序537通信以避免将同一数据两次写到非易失性存储器112中。
到非易失性存储的改变备份的各种其它方面可被用来改进总的用户体验。例如,数据加密和解密可在更高的驱动程序级对备份驱动程序透明地发生。出于安全性起见,解密密钥可与大量备份数据而非与非易失性存储一起保持,因为如果非易失性存储是可移动的并且丢失或被盗,则其上的任何数据在没有密钥附带在该加密数据上的情况下被加密。
用户还可确定数据安全性的级别。例如,用户可采用镜像或类似的RAID技术将改变数据散布在多个(便宜的)非易失性存储设备上。多个非易失性存储设备还可出于性能原因而使用,例如提供并行数据访问。
在管理设备的软件建议执行硬盘驱动器备份或将备份改变转移到另一介质之前,可设置诸如可被备份改变消耗的空间量之类的阈值。更仔细的用户,或者那些往往会执行大尺寸改变的用户可设置阈值警告级别以提供充足的预先警告。
改变可对每一用户备份。例如,用户可使非易失性存储仅备份该用户的改变,而非另一用户的改变,而不管改变的文件的所有权。可采用识别(例如,作为元数据的一部分)当前用户的改变的过滤器,藉此用户可仅用自最后一次备份以来的用户的改变来重新创建硬盘状态。替换地,非易失性存储中的元数据可被用来保留哪一用户做了改变以便稍后在改变中进行区分。这使用户能在某人也对共享文件作出改变(例如,破坏)的情况下还原他或她自己的改变。
转到从非易失性存储还原数据的考虑,图6示出还原到新的硬盘驱动器670的示例。尽管如此,可以理解,如果硬盘驱动器失效不是问题,诸如如果用户的数据或共享数据被另一用户破坏,如以上所描述地,则还原可以是对同一硬盘驱动器的(重新格式化或对其上的空闲空间)。
为还原,最后一次硬盘驱动器备份数据672(例如,在硬盘驱动器状态1由某一备份实用程序674等先前备份的,其在先前硬盘驱动器126失效的情况下可不再存在)由还原实用程序676写入新的硬盘驱动器670,且来自非易失性存储器112的改变被应用来更新该新的硬盘驱动器670以重新创建其最后一个状态,状态2。如以上所描述地,此基本上可以是精确的重新创建、功能上的重新创建、或者指定数据的重新创建。
还在图6中表示的是可存在的一个或多个增量备份数据集678的概念。更具体地,用户可将非易失性存储器112的内容转移到包含备份改变的增量备份数据组,例如在非易失性存储器变得充满备份改变时。与备份状态1a相对应的该数据集或数据集的组678可被存储在任何地方,但是出于安全性的目的,由于失效或丢失的可能性,将不被存储在硬盘驱动器上,(虽然出于从数据破坏恢复的目的,它可被存储在硬盘驱动器上)。例如,可选择网络转储清除以将非易失性存储器112自动地转移到网络存储,这可保持最后一次硬盘驱动器备份数据672与一个或多个增量备份数据集678相关联。光学介质转储清除是另一替换方案,其可被插入不同的闪存设备,从而知道新的闪存设备相对于先前的增量备份数据678是增量的,而不与最后一次硬盘驱动器备份数据672直接相关。
可保留任何数目的增量备份数据集678,只要保持顺序。在还原之后,所备份硬盘驱动器数据(状态1)与任何增量备份数据集678中的改变一起与在开始在非易失性存储器112上写入改变之前的状态(在此一起称为状态1a且保持顺序)相对应。注意,一种还原方式是写入硬盘驱动器内容,并且然后在改变发生时按顺序通过任何增量备份数据集并且然后以非易失性存储器112中的改变结束来盖新写数据。一种替换的还原方式是一次填充每一块,从可针对该块找到的最新近的改变开始,在需要时在时间上返回以找到最后一次改变(如果不存在更新近的改变,则一直到状态1硬盘驱动器备份数据672)。注意在该后一还原替换方案中,非易失性存储器112中的改变被首先还原。
又一方面涉及在非易失性存储设备不可用时,例如被用户拆下或为满时,在硬盘驱动器自身上高速缓存改变。然后,在稍后可用后,(例如,重新附连或转移到另一介质),那些高速缓存的改变可被同步回到非易失性存储器。这在完全同步之前带有硬盘驱动器失效或丢失的奉献,但是仍提供益处。
作为示例,在块级,改变备份驱动程序或类似的组件可简单地记录哪些块关于需要被同步被改变(变脏)。类似地,在文件级,改变备份驱动程序可跟踪相关写的原数据。当非易失性存储器再次变得可用时,同步可以是自动的。通过使用事务概念来分别同步每一块或各块的子集、或文件的一部分或各部分,部分同步在完全同步不能在单个会话中完成时是可能的。
用户可以用各种方式被通知关于改变备份数据的状态,包括经由文本、图形等等。例如,在计算机显示的图标上或其它地方上的绿色指示器(例如,在非易失性存储器设备上的LED)可指示所有相关改变已被备份并且数据是安全的。黄色指示器可指示所有相关改变已被备份,但是非易失性存储器设备的空间不够,并且硬盘驱动器备份或增量转移应被执行。红色指示器可指示例如由于空间限制、设备已被移除等等所有改变尚未被备份,虽然如以上所描述地这些改变可被保留在硬盘驱动器上以用于同步。
转到处理写数据的示例性说明,图7是示出例如在改变备份驱动程序上可被采用处理写数据的可能步骤的流程图。步骤702表示接收写数据,且步骤704表示对作为过滤的结果被排除在改变备份存储之外的写数据的任何一个进行性能高速缓存。
如果至少一些写数据要作为改变来备份,则步骤706将其大小与非易失性存储器上的空闲空间量进行比较。该空闲空间包括任何性能高速缓存空间,这可经由步骤708和710来收缩。更进一步地,步骤706包括如果非易失性存储已被移除,在该情况中空闲空间为零。如果空间不足,则改变不能被备份,并且经由步骤720通知用户该数据不是安全的。虽然未被具体示出,但是可理解如以上描述地,未备份的数据改变可被记录或者以其他方式保存在硬盘驱动器上,以使同步可稍后在空间可用/非易失性存储器设备被重新附连时发生。
如果由于性能高速缓存空间而在非易失性存储器中有足够空间可用,但是在备份部分中空间不足,则步骤708和710通过收缩性能高速缓存空间来增长备份部分空间。步骤712然后将适当的数据和元数据写入备份部分。注意,数据可盖写已存在的相应数据(例如,在同一块或文件部分中),这或者通过直接盖写或者通过写入新空间并释放旧空间来进行。更进一步地,注意写错误等可以用已知方式来处理。
步骤714评估在写之后,空闲空间量是否接近阈值限制,该阈值限制可以是用户可配置的。如果是,则警告用户备份空间不够,即很快需要硬盘驱动器备份或转移到增量数据集以避免数据丢失的可能性。
图8表示可被采用来通过在可能时从非易失性存储器读取以有效方式处理读请求的示例步骤,各步骤在接收读请求的步骤802开始。步骤804评估所请求的数据是否在备份部分中。注意,这往往是频繁使用的数据,并且因而通常是存在的。替换地,可首先对性能部分评估所请求数据是否存在于其中。
在步骤804,如果数据的至少一些存在于改变备份部分中,则执行步骤806以将该数据读入读缓冲器,否则执行步骤812以在性能高速缓存中寻找所请求数据。如果在步骤806读取并且该请求如步骤808所示地被完全满足,则在步骤824返回具有适当成功状态的读缓冲器。
如果没有或仅一部分数据可从改变备份部分中获得,则步骤810将原始请求修改成寻找缺失数据的一个或多个读请求。在步骤812,如果数据中的至少一些存在于性能部分中,则步骤812分支到步骤814以执行一次读(或多次读),否则步骤812分支到步骤820以执行从硬盘驱动器的一次读(或多次读)。
如果执行步骤814,则步骤816表示原始读请求是否被完全满足。如果是,则在步骤824返回具有适当成功状态的读缓冲器。如果未完全满足,则然后步骤818调整一次或多次读以访问硬盘驱动器来寻找缺失数据,并且步骤820从硬盘驱动器读取;执行步骤822和824以使读请求对请求实体表现为是正常读操作。
应注意,图8的各步骤仅是满足读请求的一种方式,例如通过使用来自非易失性存储的数据建立读缓冲器到可能的程度,以使硬盘驱动器仅在必要时被访问以获得仅仅是完成请求所需的数据。然而,可实现其他替换方案,诸如确定读是否可经由非易失性存储来完全满足,并且如果不是,则像往常一样执行从硬盘驱动器的完整读取。
图9表示还原操作,步骤902和904表示备份硬盘驱动器(例如,经由备份实用程序备份到完全备份),以及步骤904表示保留任何增量备份,即自最后一次规则备份操作以来从非易失性存储转移。
步骤906表示等待还原操作,该还原操作可在遥远的将来发生。因而,步骤906通常不是过程中反复出现额循环,而是表示等待开始完全分开的还原操作过程。
步骤908和910表示基于诸如保留在网络备份位置处的所有保留的数据将硬盘驱动器的状态重新创建到某一接收介质(例如,新的硬盘驱动器)。如以上所描述地,硬盘驱动器状态可从初始备份数据(备份状态1)、以及按顺序应用的任何其它增量备份数据(如备份状态1a)来重新创建。
为还原最新近的状态,步骤910表示使用非易失性存储的备份改变数据。注意,步骤910可独立地执行,或者替换地可被合并到步骤908,例如通过转移非易失性存储内容以在执行步骤908之前变成最新近的增量备份,并且然后执行步骤908。
尽管本发明易于作出各种修改和替换构造,其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。