CN111989656A - 可配置的恢复状态 - Google Patents

可配置的恢复状态 Download PDF

Info

Publication number
CN111989656A
CN111989656A CN201980020496.XA CN201980020496A CN111989656A CN 111989656 A CN111989656 A CN 111989656A CN 201980020496 A CN201980020496 A CN 201980020496A CN 111989656 A CN111989656 A CN 111989656A
Authority
CN
China
Prior art keywords
computing device
response
state
reboot
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201980020496.XA
Other languages
English (en)
Other versions
CN111989656B (zh
Inventor
D·欧阳
O·卡根
S·C·塞亚
R·S·塞因德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN111989656A publication Critical patent/CN111989656A/zh
Application granted granted Critical
Publication of CN111989656B publication Critical patent/CN111989656B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

在持久性存储器的第一区域中,存储定义了已知良好状态的数据,该数据可操作用于响应于重启以将计算设备启动到已知良好状态。响应于对持久性存储器的第一区域的写请求,所请求的写被定向到持久性存储器的第二区域,并且对持久性存储器的第二区域的重新定向的写的记录被更新。接收用于建立对已知良好状态的更新的请求。更新的已知良好状态可操作用于响应于重启而将计算设备启动到更新的已知良好状态。响应于该请求,该记录被保持,使得响应于重启,该记录可用于恢复重新定向的写,从而将计算设备启动到更新的已知良好状态。

Description

可配置的恢复状态
背景技术
嵌入式或专用计算设备可以在公共信息亭、学校和其他公共用途设置中使用。期望用户不能修改这样的设备,以使设备在被重启时可恢复到已知状态。例如可以允许学校的学生使用的膝上型计算机安装和加载多个应用并下载数据。但是,一旦重启膝上型计算机,膝上型计算机应被配置为放弃用户改变并回复为已知状态。此类设备可以被配置为将所有改变视为临时的,并在重启设备时丢弃所有改变。关于这些和其他考虑,提出了本文所作的公开。
发明内容
可以实现诸如统一写入过滤器(UWF)的功能,该功能允许计算设备在重启期间保持已知状态。例如可以在诸如自助服务终端中使用或用作共享PC的IoT、嵌入式和台式机系统的各种设备中实现这种功能。这种功能在本文中通常可以称为写过滤器。
写过滤器可以被配置为通过将对某个卷的写操作重新定向到覆盖来保护该计算设备上的受保护卷的内容。覆盖可以是对受保护卷的改变的虚拟表示。覆盖可用于累积有关到设备上受保护卷的重新定向的写的信息。受保护的卷可以具有计算设备支持的任意定义的大小。
在一个实施例中,覆盖图不镜像整个受保护的卷,而是跟踪重新定向的写。在一个实施例中,可以将一组存储块保留为覆盖。当对受保护的卷进行写尝试时,可以将写尝试重新定向到覆盖区域。这可以称为重新定向或数据放置。
因为受保护卷的改变存储在覆盖中,所以如果在重启计算设备时这些改变被丢弃,则计算设备将回复为由受保护卷中未修改数据定义的状态。该状态可以称为已知良好状态。
覆盖可以被存储在RAM中,或诸如硬盘的持久性存储器上的诸如系统卷的预分配文件中。在一个实施例中,在计算设备重启或经历功率损失之后,覆盖中的所有信息都被丢弃,而不管覆盖如何存储。该覆盖可以在文件系统第一次安装卷时创建。每次将写尝试重新定向到覆盖时,将要修改的磁盘扇区都将复制到覆盖中。当文件系统擦除或删除受保护卷上不存在的文件时,可能会从覆盖中移除不需要的群集,并将释放的资源返回到可用池。
使用覆盖的一个好处是可以改进计算设备的可靠性和稳定性。此外,可以减少诸如固态驱动器的写敏感介质的磨损,从而增加其使用寿命。
在一个实施例中,对覆盖区域的写入被持久化,使得当计算设备被重启时,计算设备将保持在覆盖区域中的改变维持在已知良好状态。覆盖的内容因此被保留,并在重启时被回复,除非将系统手动回滚到原始的已知良好状态。
在一个实施例中,维护日志,其中到覆盖的映射被保存为对受保护卷的原始写和到覆盖区域的对应重新定向之间的变换索引。通过维护和保持此日志,可以使用该日志来恢复到覆盖区域的映射,从而允许系统回复到由覆盖区域中的信息定义的状态。在一个实施例中,日志可以保存在覆盖区域中。重启设备后,可以通过访问日志来重新创建映射。如果希望丢弃改变并回复到已知的良好状态,则可以丢弃日志及其映射信息。在一个实施例中,当重启时,映射可以被视为未初始化。因此,覆盖层的内容将不会被映射,从而可以回复到原始的已知良好状态。
在一个实施例中,替代的已知良好状态可以被定义为包括相对于已知良好状态的改变的系统的状态。这种替代状态可以称为锚定点或回滚点。当定义了锚定点或回滚点时,覆盖区域中的改变可以被保持,使得当重启计算设备时,计算设备回复到替代的已知良好状态,而不是原始的已知良好状态。
可以基于来自用户的经由API和UI的输入来定义新的锚定点或回滚点。在一些实施例中,可以定义多个锚定点,并且用户可以选择所定义的锚定点之一作为系统在重启时将回复到的回滚点。除非将系统手动回滚到原始的已知良好状态,否则由回滚点定义的覆盖的内容在重启时被保留和回复。
在一个实施例中,可以使用日志来启用回滚特征,其中保存了到覆盖的映射。如果没有建立回滚,则可以丢弃该映射,并且不映射覆盖的内容,从而允许回滚到原始的已知良好状态。如果设置了回滚,则该日志将被保持并将映射恢复到覆盖区域,从而允许系统回复到由覆盖区域中的信息所定义的锚定点。
如果覆盖的大小接近或完全使用最大的覆盖大小,则其他写尝试将失败,并返回错误,指示没有足够的空间来完成尝试的操作。如果覆盖达到此状态,则计算设备可能变得无响应和缓慢,表现出错误,和/或需要重启计算设备。
在一个实施例中,为了避免覆盖被填满至容量并因此需要重启,可以实现空闲空间直通机制。系统可以确定受保护的卷中的哪些存储块实际上正在使用(例如分配)以及哪些块是空闲的。当尝试写入空闲块时,允许写入这些块,而不是被重新定向。在一个实施例中,该写入信息在实际保持时将在重启时被视为未初始化。例如下一次设备重启时,经由直通机制写入的受保护卷中的块将被状态化为空闲,并且其内容将不保留。在其他实施例中,也可以在日志中描述直通的写,以便在重启时,也可以将通过的写与覆盖映射一起恢复。通过实现空闲空间直通机制,可以减少对覆盖区域的写的次数,从而降低了覆盖区域将被填充的可能性,并减少了对持久性存储器此区域的写的次数。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在本发明内容用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任意部分中指出的任意或所有缺点的实现。
附图说明
参照附图描述了具体实施方式。在本文详述的描述中,参考了构成本文一部分的附图,并且通过说明的方式示出了特定的实施例或示例。本文中的附图未按比例绘制。在所有若干附图中,类似的数字表示类似的元素。
图1A是根据本公开的示例功能图;
图1B是根据本公开的示例计算设备;
图2是根据本公开的示例计算设备;
图3是描绘根据本公开的示例过程流程的流程图;
图4是示出根据本公开的重新定向的图;
图5是示出根据本公开的锚定点的图;
图6是示出根据本公开的空闲空间直通的图;
图7是描绘用于实现根据本公开的技术的示例过程的流程图。
图8是描绘用于实现根据本公开的技术的示例过程的流程图。
图9是描绘了用于实现根据本公开的技术的示例过程的流程图。
具体实施方式
下面的具体实施方式描述了使计算设备能够维护和更新已知的良好状态,同时改善用于这样做的机制的操作和效率的系统和方法。已知良好状态通常可以指被配置为支持诸如业务功能或教育场景的特定操作场景的用户模式操作状态。示例用户模式操作状态是零售应用或用于在指定区域进行研究的教育配置,该零售应用被配置为扫描带标签的商品和/或信用卡信息的条形码。当设备重启时,计算设备可以维护定义和/或可用于重新进入用户模式操作状态的数据。
在一些实施例中,计算设备可以被配置为将驱动器、OS和应用连同用户模式操作状态数据一起存储在第一分区上,该第一分区可以被写过滤器(例如MICROSOFT的统一写过滤器(UWF)和/或增强型写过滤器(EWF))保护。当使计算设备能够维护和更新已知的良好状态并进入用户模式操作状态时,可以启用写过滤器以防止用户活动改变驱动程序、OS、应用和/或状态数据,该状态数据定义用户模式操作状态。当启用写入过滤器后,将预期用于第一分区的数据写重新定向到存储器位置、虚拟覆盖、不同分区或任意其他合适的存储位置。
写过滤器可以被配置为拦截对受保护的卷上的任意扇区的所有修改。扇区通常是可以在存储卷上改变的最小单位。每当文件系统尝试修改受保护的扇区时,写过滤器都可以替代将扇区从受保护的卷重新定向到覆盖,然后修改覆盖。如果应用尝试从该扇区读取,则UWF会从覆盖图返回数据,以便系统维护已写入受保护卷的外观,而该卷维持不变。本公开进一步描述了用于持久保持覆盖中累积的改变的技术。此外,本公开描述了用于允许用户将替代的已知良好状态定义为包括与已知良好状态的改变的系统状态的技术。
在图1A所示的一个示例中,当调用写过滤器(图1A中未示出)时,向操作系统(OS)和应用170提供对受保护卷150(例如C:)的访问。发送到受保护卷150的任意写都将被重新定向到覆盖文件151。可以将发送到受保护卷150的任意读发送到底层卷152,除非那些扇区已经存在于覆盖文件151中,在这种情况下,读被从覆盖文件151取回。底层卷152可以驻留在底层硬盘驱动器160中。底层系统152可以驻留在底层硬盘驱动器160中。在重启系统时,覆盖文件151的内容将被丢弃,并且自写过滤器被调用以来改变的任意扇区都将丢失。因此,受保护的卷150被返回到与底层卷152相同的状态。
继续图1A中的示例,写过滤器可以暴露底层卷152的第二副本,该第二副本被示出为对用户隐藏的持久性卷153。如果将读发送到持久性卷153,则直接从底层卷152读取数据。当将写发送到持久性卷153时,首先数据从底层卷152从现有数据扇区被读取,然后被写入覆盖文件151。一旦此旧数据已被存储在覆盖文件151中,就允许写修改底层卷152。如果写过滤器识别出在受保护卷150上与排除文件名或路径相匹配的任意文件的打开或创建,则文件被重新定向到持久性卷153。
作为另一示例,假设存在排除文件夹“C:\excluded”。如果:\excluded\excluded_file.txt被打开,则实际被打开的是<Persistent Volume>:\excluded\excluded_file.txt。此外,如果将“XYZ”写入<Persistent Volume>:\excluded\excluded_file.txt,则NTFS 154将一个新扇区分配给exclude_file.txt,修改描述该文件的文件系统元数据,并将“XYZ”写入该扇区。写过滤器拦截这些写,将那些扇区的内容复制到覆盖文件151中,然后允许那些写修改底层卷152。
在该操作之后,由于被保护的卷150仅看到其期望的数据,并且持久性卷153具有被保存到底层卷152的排除文件中的所有改变,因此仍然可以保证被保护的卷的完整性。在一些实施例中,这些改变可以被保持,以便在需要时改变可以在重启后保持。
继续图1A,当调用空闲空间直通功能时,确定对受保护卷150的写是否将覆盖底层卷152中未使用的扇区。如果目标扇区未被使用,则允许写进入到底层卷152,从而节省了覆盖文件151中的空间。如果持久性卷153将使用底层卷152中的相同扇区,则将内容复制到覆盖文件151中,以便于确保受保护的卷150将看到预期的数据。
在许多其他益处中,本文描述的技术相对于配置计算设备以重复地恢复到用户模式操作状态(例如计算设备实现MICROSOFT的休眠一次/恢复多次(HORM)功能或任意其他类似功能)改进了效率。例如本文描述的技术能够实现即使在用户已经输入对各种应用、组件和数据的改变之后也可以重复地重新输入的改变在被输入之前定义的期望的用户模式操作状态。此外,所描述的技术能够实现用户定义的用户模式操作状态被保持,并且在一些实施例中,多个状态被定义和被保持。因此,至少由于减轻了重新定义期望的用户模式操作状态的负担,所描述的技术改进了计算效率和/或人与计算机的交互。所描述的技术还允许在改进覆盖区域的有效利用并防止覆盖区域变满的情况下维护用户模式操作状态。
转到图1B,示出了用于维护用户模式操作状态数据120以维护重复进入用户模式操作状态的能力的示例计算系统100。计算设备102提供通过更新用户模式操作状态数据120来修改和保持用户模式操作状态的能力。
示例系统组件包括但不限于驱动器110、操作系统(OS)112、应用114、注册表116和/或库118。示例计算系统100使计算设备102能够:执行本文介绍的软件组件和/或功能的任意方面。此外,图1B所示的示例计算架构100示出了用于以下各项的示例架构:工业设备(例如部署在制造设施中的计算机数控(CNC)设备、部署在医疗设施中的瘦客户端设备、游戏设备、人机界面(HMI)设备、和/或部署在实体零售设施中的销售点(POS)设备)、个人计算机(例如膝上型计算机和/或台式计算机)、平板计算机、智能电话、服务器计算机、服务器机架、服务器计算机网络、或适用于实现本文所述功能的任意其他类型的计算设备。
如图1B所示,计算设备102可以包括一个或多个驱动器104(以下称为“驱动器”),其具有为计算设备102提供非易失性存储的计算机可读介质。示例驱动器包括但不限于SATA型固态硬盘、SATA型硬盘、PATA型固态硬盘、PATA型硬盘、和/或适用于向计算设备适合提供非易失性计算机可读介质的任意其他驱动器类型。驱动器104可包括用于逻辑上分离一个或多个系统组件和/或数据对象的多个分区106。
在所示的示例中,驱动器104分为第一分区106(1)、第二分区106(2)和第N分区106(N)。在一些实施例中,分区106中的至少一个分区存储驱动器110和操作系统(OS)112,以使引导管理器130能够启动驱动器110并将OS 112加载到存储器124中。在所述示例中,存储器124包括随机存取存储器(“RAM”)126和只读存储器(“ROM”)128。如进一步示出的,计算设备102包括中央处理单元(“CPU”)122,该中央处理单元122经由总线136连接到驱动器104、存储器124和引导管理器130。在一些实施例中,总线136还连接输入/输出(I/O)控制器132和/或网络接口134。
可以理解,本文所述的系统组件(例如驱动器110、OS 112和/或应用114)在加载到CPU 122中并执行时,可以将CPU 122和整个计算设备102从通用计算系统转换到被定制以促进本文中呈现的功能的专用计算系统。CPU 122可以由任意数量的晶体管或其他分立电路元件构成,其可以单独或共同地呈现任意数量的状态。更具体地,响应于在本文公开的软件模块内包含的可执行指令,CPU 122可以作为有限状态机操作。这些计算机可执行指令可以通过指定CPU 122如何在状态之间转变,从而对构成CPU 122的晶体管或其他分立的硬件元素进行转换来对CPU 122进行转换。
驱动器104和相关联的计算机可读介质为计算设备102提供了非易失性存储。尽管本文包含的计算机可读介质的描述是指大容量存储设备,诸如固态驱动器和/或在硬盘上,本领域技术人员应该理解,计算机可读介质可以是可以由诸如例如计算架构100的计算架构访问的任意可用的非暂态计算机存储介质或通信介质。通信介质包括计算机可读指令、数据结构和/或程序模块。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质。以上任意内容的组合也被包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任意方法或技术实现的易失性和非易失性、可移除和不可移除介质。例如计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储设备、盒式磁带、磁带、磁盘存储设备或其他磁性存储设备、或可用于存储所需信息并可由计算设备102访问的任意其他介质。在权利要求书中,短语“计算机存储介质”、“计算机可读存储介质”及其变体本身并不包括波、信号和/或其他瞬时和/或无形通信介质。
引导管理器130可以从驱动器104(或其分区)访问OS 112,并且可以将OS 112加载到存储器124中以由计算设备102(例如通过调用OS引导加载器)的运行时执行。在OS引导协议的执行期间,引导管理器130(和/或其OS引导加载器)可以识别用户模式操作状态数据120的存在(和/或验证其有效性)。引导管理器130可以将用户模式操作状态数据120加载到存储器124以从断电状态直接进入预定义的用户模式操作状态(例如在没有任意用户动作的情况下进入预定义的用户模式操作状态)。
I/O控制器132可以接收并处理来自许多其他设备的输入,包括键盘、鼠标或电子触控笔(图1B中未示出)。类似地,I/O控制器132可以将输出提供给显示屏、打印机或其他类型的输出设备(在图1B中也未示出)。网络接口134可以使计算设备102能够连接到一个或多个网络144,诸如局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、或用于在计算设备102和远程资源142之间传递信息的任意其他合适的网络。
如上所述,驱动器104可以包括多个分区106,该多个分区用于逻辑上分离一个或多个系统组件和/或数据对象。在所示的示例中,驱动器104包括第一分区106(1),其存储驱动器110、OS 112、应用114、注册表116、库118和用户模式操作状态数据120的实例。驱动程序110可以包括一个或多个程序,用于控制通信地耦合到计算设备102的一个或多个设备,诸如例如打印机、显示器、相机、声卡、网卡、计算机存储设备等。OS112可以是用于管理计算机硬件和/或软件资源以及用于向应用114和/或其他应用(未示出)提供服务的任意合适的系统软件。示例OS 112可以包括但不限于各种版本的MICROSOFT WINDOWS(例如WINDOWS8.1或10、WINDOWS嵌入式标准7等)、Mac OS X、iOS等。
应用114可以是被配置为由OS 112运行以执行一个或多个协调功能、任务和/或活动的计算机程序。示例应用114包括但不限于被配置为支持一个或多个特定企业操作的应用(例如用于促进患者管理的医疗应用、用于促进POS零售交易和/或客户服务的商业应用等)以及/或通用应用(例如文字处理器和/或电子表格应用、Web浏览器应用等)。
注册表116可以对应于包含可用于引导和/或配置OS 112的信息、控制OS 112的操作的系统范围软件设置、安全数据库和/或用户特定配置设置的数据库。注册表116可以进一步包含与存储器内易失性数据相关联的信息,诸如例如OS 112的当前硬件状态(例如OS112当前加载了并且正在使用哪些驱动程序)。
库118可以包括应用114和/或其他应用(未示出)可用(例如可调用)的非易失性资源的集合。示例资源包括但不限于预先编写的代码和/或子例程、配置数据和/或类(例如用于创建各种类型的对象的可扩展程序代码模板)。在各种实现中,库118可以使应用114能够调用由OS 112提供的各种系统服务。例如库118可以包括一个或多个子系统动态链接库(DLL),其被配置用于将OS 112的应用编程接口(API)功能实现和/或公开到应用114。
用户模式操作状态数据120可以定义计算设备102和/或其系统组件的用户模式操作状态。如本文所使用的,术语用户模式操作状态可以指特定“用户模式”(例如其中用户可以经由I/O设备与计算设备进行交互的模式)操作状态,其被设计为支持一个或多个特定的企业功能(例如运行教育应用、执行POS零售交易等)。术语用户模式操作状态还可以指基于用户输入的改变的任意其他操作状态。根据已知的良好状态,可以将用户模式操作状态数据120加载到存储器124中,以将计算设备102恢复到用户模式操作状态。
因此,可以理解,用户模式操作状态数据120可以对应于计算设备102的各个系统组件上的状态的快照,并且可以包括关于驱动器110、OS 112以及在记录已知良好状态数据时正在运行的任何应用的数据。此外,可以理解的是,用户模式操作状态数据因此可以指示功能状态和/或库状态。通常,用户模式操作状态数据120对应于存储器124的内容,其对应于(例如导致)用户模式操作状态。
例如在接收到保存定义用户模式操作状态的数据的指令时,计算设备102(和/或其电源管理器)可以压缩存储器124的内容并将存储器124的压缩内容保存到用户模式操作状态数据120(例如以文件的形式,诸如例如可以保存在系统卷的根目录中的“Hiberfil.sys”文件)。
在用户模式操作状态数据120被存储在为计算设备102提供非易失性存储的驱动器104上的配置中,计算设备102可以完全断电(甚至突然断电)而不会丢失对用户模式操作状态数据120的访问。在稍后打开计算设备102时,由于引导管理器130可以标识用户模式操作状态数据120包括有效的存储器映像,即存储器124的压缩内容,因此计算设备102可自动变换为已知的良好状态。然后,引导管理器130可以执行特定的引导协议以使计算设备102重新进入用户模式操作状态。
例如引导管理器130可以启动特定的引导协议(例如“%SystemRoot%\System32\Winresume.exe”),该协议将用户模式操作状态数据120的内容读入存储器124,并且,最终,在该时刻在用户模式操作状态数据120(即,用户模式操作状态)中记录的存储器中恢复运行时执行。
在各种实施例中,计算设备102可以被配置为保持对系统组件和/或用户模式操作状态数据120的改变,以保留进入用户模式操作状态的能力(例如在电源循环或重启)。例如如图1B进一步所示,计算设备102可以实现堆栈138,以使各种系统组件能够一起工作以产生一个或多个期望的结果。此外,堆栈138可以包括写过滤器140,该写过滤器140接收旨在用于分区106中的一个或多个(或驱动器104的任意其他指定卷)的尝试的数据写,并且将这些尝试的数据写重新路由到虚拟覆盖或一些其他替代存储位置。
作为更具体但非限制性的示例,写过滤器140可以是在堆栈138中操作的过滤器驱动器,该堆栈驱动器正好位于存储驱动器(例如被包括在驱动器110中)下方,该存储驱动器被配置为促进向驱动器104和/或存储器124的数据写操作。在此示例中,从OS 112的角度看,似乎已将尝试的数据写入成功写入驱动器104,而实际上,从最初保存用户模式操作状态数据120的时间起,驱动器104的任意受保护卷的状态仍维持不变。
因此,修改系统组件的操作状态的任意用户动作都可以从存储器124(或者如果建立例外的情况下从驱动器104的指定卷)中被冲刷。例如在从用户模式操作状态获得对计算设备102的控制后,用户可以执行各种操作,这些操作可以创建、编辑、删除或以其他方式与在存储器124中存储的各种数据进行交互。尽管用户执行了这些各种操作然而,在操作过程中,可以使计算设备102重复地重新进入由用户模式操作状态数据120定义并由启用的写过滤器保存的用户模式操作状态。
转到图2,在并入锚定点之后示出了示例计算系统100,该锚定点导致至少一些系统组件基于与锚定点关联的时间点的覆盖120中保存的信息来被更新。在所示示例中,若干系统组件的各个方面已被更新,因此,第一分区106(1)被显示为包括更新的驱动程序110(U)、更新的OS 112(U)、更新的应用114(U)、更新的注册表116(U)和更新的库118(U)。
在一个示例中,锚定点可以包括对驱动器110的改变。在另一示例中,锚定点可以包括对OS 112的改变。例如注册表116和/或库118的各个方面可能已改变。在又一示例中,锚定点可以包括对应用114的改变。当定义锚定点时,计算设备102现在将允许在重启发生时用户重复地将计算设备102变换到由锚定点定义的用户模式操作状态。写过滤器140将继续允许用户与OS和应用交互而不影响受保护的数据,该受保护的数据现在包括由锚定点定义的改变。
可以理解,微软的“一次休眠/多次回复”(HORM)特征可以代表所公开技术中的至少一些的示例实现。具体地,计算设备可以被配置为总是通过与合适的写过滤器一起部署MICROSOFT的HORM特征来从已知良好状态数据文件的最后保存版本恢复和重启,诸如例如MICROSOFT的统一写过滤器(UWF))和/或增强型写过滤器(EWF)。因此,在各种实现中,写过滤器140被配置为防止数据被写入到第一分区106(1)或第二分区106(2)中的至少一个,以维护引导管理器130在已知的良好状态和用户模式操作状态之间变换计算设备102的能力。在一些实现中,驱动器104可以包括相对于写入过滤器140维持不受保护的至少一些存储卷。出于本讨论的目的,假定写过滤器140被默认配置为(例如用户模式)允许写入第N个分区106(N)。
现在转到图3,示出了示例过程300的图形流程图,在该过程期间,可以保存定义用户模式操作状态的数据,并且在该过程期间,可以生成更新的用户模式操作状态数据120(U),该用户模式操作状态数据定义锚定点或回滚点。
本领域普通技术人员应该理解,本文公开的方法的操作不一定以任意特定顺序呈现,并且可以以替代的(一种或多种)顺序执行一些或全部操作是可能的并且是预期的。为了便于描述和说明,已按说明的顺序介绍了操作。在不脱离所附权利要求的范围的情况下,可以增加、省略、一起执行和/或同时执行操作。还应该理解,所示的方法可以在任意时间结束,并且不需要整体执行。方法的一些或全部操作和/或基本等同的操作可以通过在计算机存储介质上包括的计算机可执行指令的执行来执行,如本文所定义。
在系统状态S1中,诸如例如计算设备102的计算设备处于断电状态(例如计算设备完全关闭和/或功率管理器正在重启计算设备)并且没有以设计成使得引导管理器130自动将相应的已知良好状态文件加载到存储器124中的方式存储的用户模式操作状态数据120。例如系统状态S1可以对应于当最初从原始设备制造商(OEM)接收到时计算设备102所处的状态和/或计算设备102在根据断电协议而被关闭时所处的状态。
如图所示,在系统状态S1和系统状态S2之间,引导了操作系统(OS)112,该操作系统使计算设备102进入“用户模式”操作状态。如本文中所使用的,术语“用户模式”通常可以指其中OS 112已经被引导并且计算设备102的控制已经被传递给用户的操作状态。在某些情况下,可以在OS 112的默认操作状态下将计算设备102的控制转交给用户。例如在过程300中,由于在系统状态S1下不存在用户模式操作状态数据120,因此,引导管理器130可以在OS的默认操作状态而不是用户模式操作状态下将计算设备102的控制传递给用户。例如默认操作状态可以对应于以下状态:计算设备102在从OEM接收到之后第一次被打开时所处的状态、和/或计算设备102在没有有效的用户模式操作状态文件被保存在指定的非易失性存储位置中时打开时的状态。如下所述,在一些实例中,在默认操作状态下可能不会将对计算设备102的控制传递给用户,而是引导管理器130可保留控制,直到计算设备102已恢复到用户模式操作状态。
在系统状态S1和系统状态S2之间,计算设备102可以接收各种输入,这些输入导致诸如例如应用114的应用被初始化为用户模式操作状态。为了本讨论的目的,用户模式操作状态可以指特定的操作状态,在该特定的操作状态期间,OS 112起作用并且以用户模式操作(例如已经向用户授予了对计算设备102的控制的模式),并且在该特定的操作状态期间,应用114处于期望的操作状态(例如最初由系统状态S1和系统状态S2之间接收的各种输入定义)。示例性用户模式操作状态包括但不限于以下操作状态:在该操作状态中,业务线(LOB)应用已准备就绪以执行特定的企业任务,例如医疗应用,其已准备就绪以接收为了患者管理目的数据扫描;商业应用,其已准备就绪以促进POS零售交易等。
另外,在系统状态S2和系统状态S3之间,用户模式操作状态数据120被标识并存储。在一个示例中,用户模式操作状态数据120被存储在驱动器104上,使得在重新通电(“powercycled”)(例如关闭然后再打开、重启等)之后,引导管理器130和/或其引导加载器可以识别出有效存储器映像的存在(例如以已知的良好状态数据文件的形式存储的),并且响应于此,可以将存储器映像直接加载到存储器124中。附加地,在系统状态S2和系统状态S3之间,启动写过滤器140来保护至少一部分存储器,诸如驱动器104,在其上存储了用户模式操作状态数据120。换句话说,一旦生成了用户模式操作状态数据,就将其保存到驱动器104并标记为只读,以便将其保留。因此,可以理解,在系统状态S3下,计算设备102已经被置于可以重复进入的已知良好状态,并且计算设备102可以在重新通电后一次又一次地从该状态恢复到用户模式操作状态。基于以下讨论将进一步理解,系统状态S'2、S'3和S'4分别是系统状态S2、S3和S4的更新的对应物。
如图所示,可以使计算设备102在S2处从系统状态S3直接重新进入用户模式操作状态。然后,用户可以与计算设备102进行交互以执行用户模式操作状态被设计为促进的特定企业操作。例如用户可以将计算设备102部署在零售位置以执行POS交易(例如将衬衫出售给消费者)。一旦完成,用户可以使计算设备102在S2处变换回到已知的良好状态,计算设备102可以从该状态再次恢复到用户模式操作状态。在此变换期间,与用户先前的交互相关的数据可能会被刷新,使得每次重新进入用户模式时操作状态时用户模式操作状态都完全相同。
如进一步示出的,计算设备102从系统状态S2被断电到系统状态S4。例如用户可以按下计算设备102上的电源按钮以关闭和/或重启计算设备102。替代地,计算设备102可能崩溃(例如由于系统错误)。替代地,计算设备102可以掉电(例如停电可能在制造设施处发生、电池可能用完、计算设备102可能被无意拔出等等)。
在系统状态S4和系统状态S3之间,OS 112再次引导和/或闪存到存储器124,以使计算设备102进入操作状态。但是,相比之下,当在生成和保存用户模式操作状态数据120之前对计算设备102供电时,在默认操作系统状态下,计算设备102的控制不会被传递给用户。相反,引导管理器130保留对计算设备102的控制(例如由于所保存的用户模式操作状态数据120的存在),直到计算设备102恢复到用户模式操作状态为止。例如在从系统状态S4被供电时,引导管理器130可以标识有效存储器映像的存在,并且可以将该存储器映像加载到存储器124中。然后,引导管理器130可以向存储器124加载映像以最终从用户模式操作状态恢复运行时执行。
在用户模式操作状态期间的活动可以引起活动数据的生成,该活动数据可以被写入易失性存储器,并且每当计算设备102变换到已知良好状态时,就可以刷新这种数据。
在系统状态S2和系统状态S5之间,计算设备102可以进入更新状态(例如保持当前状态以进行回滚的模式)。当更新后的状态被保护时,将来在S2处向用户模式操作状态的变换现在可以进入状态S'2。当计算设备102从恢复就绪状态变换为用户模式操作状态时,计算设备102可以利用保持的数据。
在回滚点的定义之后,计算设备可以从系统状态S6变换为包括保持的改变的状态S'3
转到图4,示出了根据本公开的重新定向的写的示例。图4描绘了数据A 410的块,数据A 410的块将被写入包括块1至8的受保护区域420的存储器块1。由于块1至8被保护,因此数据A 410被重新定向到覆盖区域430的块101,覆盖区域430包括块101到104。将来用于读取块1的请求被重新定向到块101,以便“看到”数据A 410被写入保护区420的块1。
因为当应用继续写入受保护的卷时,写入覆盖层的数据可以增长并使用可用容量,因此当可用容量严重不足时,计算设备可以向用户提供通知。在一些实施例中,写过滤器可以增加用于覆盖的可用空间。如果有可用空间,则可以允许覆盖的最大大小增加到磁盘文件的大小。
转到图5,示出了根据本公开的锚的示例实现。图5描绘了时序图500,其示出了设备在时间t1的启动502,其中设备被带到已知的良好状态。直到定义了锚定点的时间t2为止,设备的用户才能进行改变。当定义锚定点520时,这些改变被描述为保持的改变510,这使得保持的改变510可用于将来的重启。
在时间t2之后,由于没有定义新的锚定点,因此在重启506时设备上的其他改变520不被保持。因此,响应于重启506,设备被带回到由锚504定义的操作状态,其包括原始的已知良好状态以及直到锚504的改变。
随着应用继续写入受保护的卷,基于RAM的覆盖可能会使用可用的空闲RAM,直到覆盖达到指定的最大大小或达到可用RAM的极低水平为止,这需要重启系统。因为RAM通常比磁盘空间贵得多,所以可用RAM通常会限制计算设备在需要重启之前可以运行多长时间。在基于磁盘的覆盖中,可以使用覆盖区域中的可用空闲空间,直到覆盖达到覆盖的指定最大大小为止,此后系统操作可能会受影响或系统必须被重启。
转到图6,示出了根据本公开的覆盖直通的示例。图6描绘了将被写入保护区620的存储块的数据A 610的块,该保护区包括由“F”表示的空闲块和由“A”表示的已分配块。可以从例如文件系统访问空闲/分配的信息。由于块A 610将被写入空闲块,因此允许将块A直接写入该块。另一方面,数据B 630将被写入已分配的块。因为块B 630将被写入保护区的已分配块,所以块B 630被重新定向到覆盖区域640。将来读取块B 630的请求被重新定向到覆盖640,从而数据B 630被“看到”到被写入保护区域620。
在一些实施例中,空闲空间直通机制可以在磁盘覆盖模式下默认被启用,而在RAM覆盖模式下默认被禁用。
参考图7,示出了根据本公开的示例操作过程。参照图7,操作700示出了在计算设备的持久性存储器的第一区域中存储定义已知良好状态的状态数据。在一个实施例中,状态数据可操作用于响应于计算设备的重启来将计算设备启动到已知良好状态。在一个实施例中,可以实现本文所述的写过滤器以存储对已知良好状态的改变。写过滤器可以被配置为拦截对受保护卷上的任意扇区或其他单元的所有修改。每当文件系统尝试修改受保护的扇区时,写过滤器都会将该扇区从受保护的卷复制到覆盖,然后继续修改覆盖而不是原始目标。如果应用尝试从该扇区读取数据,则写过滤器会代之以从覆盖返回数据,从而使系统维护已写入卷的外观,而卷维持不变。
操作700之后可以是操作702。操作702示出了访问指示持久性存储器的空闲和已分配部分的分配表。操作702之后可以是操作704。操作704示出了响应于对持久性存储器的第一区域的写请求,确定何时写请求是针对持久性存储器的分配部分的。如果写请求是针对持久性存储器的分配部分,则操作704之后可以是操作706。操作706示出将所请求的写重新定向到持久性存储器的第二区域。操作706之后可以是操作708。操作708示出了更新到持久性存储器的第二区域的重新定向的写的记录。在一个实施例中,记录被存储在第二区域中。
如果写请求是用于持久性存储器的空闲部分的,则操作704之后可以是操作710。操作710示出了允许在持久性存储器的第二区域中执行写请求。
操作708和710之后可以是操作712。操作712示出了接收用于建立锚定点的请求,该锚定点定义了对已知良好状态的更新,其中该锚定点可操作用于响应于计算设备的重启来将计算设备启动至更新后的已知良好状态。操作712之后可以是操作714。操作714示出了响应于建立锚定点的请求,将记录持久化,使得响应于计算设备的重启,该记录可用于恢复重新定向的写,从而将计算设备启动到更新的已知良好状态。
参照图8,示出了根据本公开的示例操作过程。参照图8,操作800示出了操作的开始,并且操作802示出了在计算设备的持久性存储器的第一区域中存储定义了已知良好状态的数据,其可操作用于响应于计算设备的重启来将计算设备启动到已知良好状态。在一个实施例中,第一区域是计算设备的受保护卷。
操作802之后可以是操作804。操作804示出了响应于对持久性存储器的第一区域的写请求,将所请求的写重新定向到持久性存储器的第二区域。在一个实施例中,持久性存储器的第二区域是预定的覆盖区域。在一实施例中,重新定向通过写过滤器实现。
响应于对持久性存储器的第一区域的写请求,操作806可以进一步跟随操作804。操作806示出了更新对持久性存储器的第二区域的重新定向的写的记录。在一个实施例中,该记录包括对第一区域的所请求的写与对第二区域的相应重新定向之间的转换的索引。附加地和可选地,记录被存储在第二区域中。
操作806之后可以是操作808。操作808示出了接收建立对已知良好状态的更新的请求。在一个实施例中,更新的已知良好状态可操作为响应于计算设备的重启来将计算设备启动到更新的已知良好状态。在一些实施例中,响应于重启,记录被访问并且对第二区域的映射被恢复。
操作808之后可以是操作810。操作810示出了响应于建立更新的已知良好状态的请求,保持记录使得响应于计算设备的重启。在一个实施例中,该记录可用于恢复重新定向的写,从而将计算设备启动到更新的已知良好状态。在一个实施例中,当要取消更新的已知良好状态时,响应于重启,到第二区域的映射被丢弃并且已知良好状态被回复。在一实施例中,丢弃包括将映射视为未初始化。
在一个实施例中,可以建立多个更新的已知良好状态。
参考图9,示出了根据本公开的示例操作过程。参照图9,操作900示出了将定义已知良好状态的状态数据存储在计算设备的持久性存储器的第一区域中,该已知良好状态数据可用于响应于计算设备的重启来将计算设备启动到已知良好状态。在一个实施例中,第一区域是计算设备的受保护卷。操作900之后可以是操作902。操作902示出了访问指示持久性存储器的空闲和分配部分的分配信息。
操作902之后可以是操作904。操作904示出了响应于对持久性存储器的第一区域的写请求,确定写请求何时用于持久性存储器的已分配部分。如果写请求用于持久性存储器的已分配部分,则操作906可以跟随操作904。操作906示出了将所请求的写重新定向到持久性存储器的第二区域。在一个实施例中,持久性存储器的第二区域是预定义的覆盖区域。
操作906之后可以是操作908。操作908示出了更新到持久性存储器的第二区域的重新定向的写的记录。在一个实施例中,该记录被存储在第二区域中。在一个实施例中,该记录包括到第一区域的原始写入和到第二区域的对应的重新定向之间的变换索引。该记录可以进一步包括在持久性存储器的第一区域中执行的写的索引。在一个实施例中,记录可以被存储在第二区域中。
如果写请求是用于持久性存储器的空闲部分的,则操作904之后可以是操作910。操作910示出了允许在持久性存储器的第一区域中执行写请求。操作910之后可以是操作912。操作912示出了允许写请求在持久性存储器的第一区域中被执行。
在一个实施例中,响应于重启,可以访问该记录并且可以恢复到第二区域的映射。在一些实施例中,响应于重启,可以访问记录并且可以恢复到第一区域的映射。在一些实施例中,响应于重启,到第二区域的映射可以被丢弃并且已知的良好状态可以被回复。在一个实施例中,丢弃映射包括将映射视为未初始化。
可以鉴于以下条款考虑本文提出的公开。
示例条款A,一种计算机实现的方法,包括:
在计算设备的持久性存储器的第一区域中存储定义已知良好状态的状态数据,所述状态数据可操作用于响应于计算设备的重启来将计算设备启动到已知良好状态;
访问指示持久性存储器的空闲和已分配部分的分配信息;
响应对持久性存储器的第一区域的写请求:
当写请求用于持久性存储器的分配部分时:
将请求的写重新定向到持久性存储器的第二区域;以及
更新到持久性存储器的所述第二区域的重新定向的写的记录;
当所述写请求用于所述持久性存储器的空闲部分时:
允许写请求在持久性存储器的第一区域中被执行;以及
使用对持久性存储器的第一区域的写来更新重新定向的写的记录。
示例条款B,根据示例条款A的计算机实施的方法,其中持久性存储器的第二区域是预定义的覆盖区域。
示例条款C,根据示例条款A至B中任一项的计算机实现的方法,其中记录包括对第一区域的原始写和到第二区域的对应的重新定向之间的变换索引。
示例条款D,根据示例条款A至C中任一项的计算机实现的方法,其中记录还包括在持久性存储器的第一区域中执行的写的索引。
示例条款E,根据示例条款A至D中任一项的计算机实现的方法,还包括:响应于重启,访问记录并恢复到第二区域的映射和对第一区域的写。
示例条款F,根据示例条款A至E中任一项的计算机实现的方法,还包括:响应于重启,访问记录并恢复对第一区域的写的记录。
示例条款G,根据示例条款A至F中任一项的计算机实现的方法,其中记录被存储在第二区域中。
示例条款H,根据示例条款A至G中任一项的计算机实现的方法,其中响应于重启,丢弃到第二区域的映射以及对第一区域的写的记录并恢复为已知良好状态。
示例条款I,根据示例条款A至H中任一项的计算机实现的方法,其中丢弃包括将映射视为未初始化。
示例条款J,根据示例条款A至I中任一项的计算机实现的方法,其中第一区域是计算设备的受保护卷
示例条款K,一种计算设备,包括:
一个或多个处理器;
与一个或多个处理器通信的存储器,该存储器具有存储在其上的计算机可读指令,该计算机可读指令在由一个或多个处理器执行时,使计算设备调用通信耦合至持久性存储器的计算设备的操作状态,操作状态将计算设备配置为:
在存储器的第一区域中保持指示已知良好状态的数据,该数据可响应于计算设备的重启而将计算设备启动到已知良好状态;
响应于对存储器的第一区域的写请求:
当写请求用于到存储器的已分配部分时:
将请求的写重新定向到存储器的第二区域;以及
当写请求用于存储器的空闲部分时:
允许写请求在存储器的第一区域中被执行。
示例条款L,根据示例条款K的计算设备,其中操作状态由写过滤器实现。
示例条款M,根据示例条款K至L中的任一项的计算设备,其中存储器的第二区域是预定义的覆盖区域。
示例条款N,根据示例条款K至M中的任一项的计算设备,还包括:更新对第二区域的重新定向的写和对第一区域的允许的写的记录。
示例条款O,根据示例条款K至N中任一项的计算设备,还包括:响应于重启,访问记录并恢复到第一区域和第二区域的映射。
示例条款P,根据示例条款K至O中任一项的计算设备,其中映射被视为未初始化,以便响应于计算设备的重启而将计算设备启动到已知的良好状态。
示例条款Q,一种计算设备,包括:
一个或多个处理器;
与一个或多个处理器通信的存储器,该存储器具有存储在其上的计算机可读指令,该计算机可读指令当由一个或多个处理器执行时,使计算设备调用通信耦合至持久性存储器的计算设备的操作状态,操作状态将计算设备配置为:
在持久性存储器的第一区域中存储数据,该数据可操作用于响应于计算设备的重启而将计算设备启动到已知的良好状态;
响应对持久性存储器的第一区域的写请求:
当写请求用于持久性存储器的已分配部分时:
将请求的写重新定向到持久性存储器的第二区域;以及
更新包括到持久性存储器的第二区域的重新定向的写的记录;以及
当写请求用于持久性存储器的空闲部分时:
允许写请求在持久性存储器的第一区域中被执行;以及
用于对持久性存储器的第一区域的执行的写来更新记录。
示例条款R,根据示例条款Q的计算设备,还包括:响应于重启,访问记录并恢复对第一区域的写的记录和对第二区域的映射的记录。
示例条款S,根据示例条款Q至R中任一项的计算设备,其中响应于重启,将映射视为未初始化,并恢复为已知的良好状态。
示例条款T,根据示例条款Q至S中任一项的计算设备,其中第一区域是计算设备的受保护卷。
示例条款U,一种计算设备,包括:
一个或多个处理器;
与一个或多个处理器通信的存储器,该存储器具有存储在其上的计算机可读指令,该计算机可读指令在由一个或多个处理器执行时,使计算设备调用通信耦合至持久性存储器的计算设备的操作状态,操作状态将计算设备配置为:
在持久性存储器的第一区域中存储定义已知良好状态的状态数据,该状态数据可操作用于响应于计算设备的重启而将计算设备启动至已知良好状态;
访问分配表,该分配表指示持久性存储器的空闲和已分配部分;
响应对持久性存储器的第一区域的写请求:
当写请求用于持久性存储器的已分配部分时:
将请求的写重新定向到持久性存储器的第二区域;以及
更新对持久性存储器的第二区域的重新定向的写的记录,该记录被存储在第二区域中;以及
当写请求用于对持久性存储器的空闲部分时:
允许写请求在持久性存储器的第一区域中被执行。
示例条款V,根据示例条款U的计算设备,其中操作状态还将计算设备配置为:
接收用于定义锚定点的请求,该锚定点定义了对所述已知良好状态的修改,其中所述锚定点可操作用于响应于所述计算设备的重启而将所述计算设备启动到所述修改后的已知良好状态;以及
响应于定义锚定点的请求,保持记录,使得响应于计算设备的重启,记录可用于恢复重新定向的写,从而利用重新定向的写入的修改将计算设备启动到已知的良好状态。
示例条款W,一种计算机实现的方法,包括:
在计算设备的持久性存储器的第一区域中存储定义已知良好状态的数据,该数据可操作用于响应于计算设备的重启而将计算设备启动到已知良好状态;
响应对持久性存储器的第一区域的写请求:
将所请求的写重新定向到持久性存储器的第二区域;以及
更新对持久性存储器的第二区域的重新定向的写的记录;
接收建立对已知良好状态的更新的请求,其中更新的已知良好状态可操作以响应于计算设备的重启,将计算设备启动到更新的已知良好状态;以及
响应于用于建立更新的已知良好状态的请求,保持该记录,使得响应于计算设备的重启,该记录可用于恢复重新定向的写,从而将计算设备启动到更新的已知良好状态。
示例条款X,根据示例条款V的计算机实现的方法,还包括建立多个更新的已知良好状态。
示例条款Y,根据示例条款W至X中任一项的计算机实现的方法,其中持久性存储器的第二区域是预定义的覆盖区域。
示例条款Z,根据示例条款W至Y中任一项的计算机实现的方法,其中记录包括对第一区域的所请求的写与对第二区域的对应重新定向之间的变换索引。
示例条款AA,根据示例条款W至Z中任一项的计算机实现的方法,还包括:响应于重启,访问记录并恢复到第二区域的映射。
示例条款BB,根据示例条款W到AA中任一项的计算机实现的方法,其中记录被存储在第二区域中。
示例条款CC,根据示例条款W至BB中任一项的计算机实现的方法,其中当更新的已知良好状态要被取消时,响应于重启,丢弃到第二区域的映射并回复到已知良好状态。
示例条款DD,根据示例条款W到CC中任一项的计算机实现的方法,其中丢弃包括将映射视为未初始化。
示例条款EE,根据示例条款W到DD中任一项的计算机实现的方法,其中第一区域是计算设备的受保护的卷。
示例条款FF,根据示例条款W到EE中任一项的计算机实现的方法,其中重新定向是通过写过滤器实现。
示例条款GG,一种计算设备,包括:
一个或多个处理器;
与一个或多个处理器通信的存储器,该存储器具有存储在其上的计算机可读指令,该计算机可读指令在由一个或多个处理器执行时,使计算设备:
在持久性存储器的第一区域中存储定义已知良好状态的数据,该数据可操作用地响应于计算设备的重启而将计算设备启动到已知良好状态;
响应对持久性存储器的第一区域的写请求:
将请求的写重新定向到持久性存储器的第二区域;以及
更新对持久性存储器的第二区域的重新定向的写的记录;以及
响应于用于定义锚定点的请求,该锚定点定义对所述已知良好状态的修改,其中所述锚定点可操作以响应于所述计算设备的重启而将所述计算设备启动到所述修改后的已知良好状态,保持所述记录,使和响应于计算设备的重启,该记录可用于恢复重新定向的写,从而利用重新定向的写指示的修改将计算设备启动到已知的良好状态。
示例条款HH,根据示例条款GG的计算设备,还包括建立多个更新的已知良好状态。
示例条款II,根据示例条款GG至HH中任一项的计算设备,其中重新定向由写过滤器实现
示例条款JJ,根据示例条款GG至II中任一项的计算设备,其中存储器的第二区域是预定义的覆盖区域。
示例条款KK,根据示例条款GG到JJ中的任一个的计算设备,还包括将重新定向的写的记录更新到存储器的第二区域。
示例条款LL,根据示例条款GG至KK中任一项的计算设备,还包括:响应于重启,访问记录并恢复到第二区域的映射。
示例条款MM,根据示例条款GG至LL中任一项的计算设备,其中响应于计算设备的重启,将映射视为未初始化,以便将计算设备启动到已知的良好状态。
示例条款NN,一种计算机实现的方法,包括:
在计算设备的持久性存储器的第一区域中存储已知良好状态,该已知良好状态包括可操作用于响应于计算设备的重启而将计算设备启动到已知良好状态的数据;
响应对持久性存储器的第一区域的写请求:
将所请求的写入重新定向到持久性存储器的第二区域;以及
更新到持久性存储器的第二区域的重新定向的写的记录;
接收用于更新已知良好状态的请求,该更新包括可操作用于响应于计算设备的重启而将计算设备启动至更新后的已知良好状态的数据;以及
响应于对已知良好状态的请求,保持记录,使得响应于计算设备的重启,该记录可用于恢复重新定向的写,从而将计算设备启动到更新的已知良好状态。
示例条款OO,根据示例条款NN的计算机实现的方法,还包括:建立对已知良好状态的多个更新。
示例条款PP,根据示例条款NN至OO中任一项的计算机实现的方法,其中持久性存储器的第二区域是预定义的覆盖区域。
在前面的部分中描述的每个过程、方法和算法可以在由一个或多个计算机或计算机处理器执行的代码模块中实现、并且完全或部分被自动化。代码模块可以被存储在任意类型的非暂态计算机可读介质或计算机存储设备上,诸如硬盘驱动器、固态存储器、光盘等。可以在专用电路中部分或全部实现过程和算法。所公开的过程和过程步骤的结果可以被持久地或以其他方式存储在任意类型的非暂态计算机存储装置中,诸如易失性或非易失性存储装置。
上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。另外,在一些实现中可以省略某些方法或过程框。本文描述的方法和过程也不限于任意特定的顺序,并且可以以适当的其他顺序执行与之相关的框或状态。例如可以以不同于具体公开的顺序来执行所描述的框或状态,或者可以在单个框或状态中组合多个框或状态。示例框或状态可以串行、并行或以其他方式执行。框或状态可以被添加到所公开的示例实施例或从所公开的示例实施例中去除。本文描述的示例系统和组件可以与所描述的不同地配置。例如与所公开的示例实施例相比,可以将元素添加到所公开的示例实施例、从所公开的示例实施例中移除或重新布置。
还将意识到,各种项目被示为存储在存储器中或在使用时存储在存储器中,并且出于存储器管理和数据完整性的目的,这些项目或其部分可以在存储器和其他存储设备之间转移。替代地,在其他实施例中,一些或所有软件模块和/或系统可以在另一设备上的存储器中执行,并且经由计算机间通信与所示的计算系统进行通信。此外,在一些实施例中,可以以其他方式来实现或提供一些或所有系统和/或模块,诸如至少部分地以固件和/或硬件,包括但不限于一个或多个专用集成电路(ASIC)、标准集成电路、控制器(例如通过执行适当的指令并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等。因此,本发明可以用其他计算机系统配置来实践。
本文使用的条件语言,诸如“可以”、“能”、“可能”、“能够”、“例如”等,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这样的条件语言通常不旨在暗示特征、元素和/或步骤以任意方式对于一个或多个实施例是必需的,或者一个或多个实施例必然包括逻辑,该逻辑用于用或不用作者输入或提示来确定这些特征、元素和/或步骤在任意特定实施例中被包括或将被执行。术语“包括”、“包含”、“具有”等是同义词,以开放式方式包含在内,并且不排除其他要素、特征、动作、操作等。同样,术语“或”以其包含的含义使用(而不是以其排他的含义使用),因此,例如在用于连接元素列表时,术语“或”表示一个、一些或所有元素在列表中。
尽管已经描述了某些示例实施例,但是这些实施例仅通过示例的方式给出,并且不意图限制本文公开的发明的范围。因此,以上描述中的任意内容都不意味着任意特定的特征、特性、步骤、模块或框是必要的或必不可少的。实际上,本文描述的新颖的方法和系统可以以多种其他形式来体现;此外,在不背离本文公开的本发明的精神的情况下,可以对本文所述的方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在覆盖落入本文所公开的某些发明的范围和精神内的形式或修改。

Claims (15)

1.一种计算机实现的方法,包括:
在计算设备的持久性存储器的第一区域中存储定义已知良好状态的数据,所述数据可操作以响应于所述计算设备的重启来将所述计算设备启动到所述已知良好状态;
响应于对持久性存储器的所述第一区域的写请求:
将所请求的写重新定向到所述持久性存储器的第二区域;以及
更新对持久性存储器的所述第二区域的重新定向的写的记录;
接收用于建立对所述已知良好状态的更新的请求,其中更新的已知良好状态可操作以响应于所述计算设备的重启将所述计算设备启动到所述更新的已知良好状态;以及
响应于用于建立所述更新的已知良好状态的所述请求,保持所述记录,使得响应于所述计算设备的重启,所述记录可用于恢复所述重新定向的写,从而将所述计算设备启动到所述更新的已知良好状态。
2.根据权利要求1所述的计算机实现的方法,还包括:建立多个更新的已知良好状态。
3.根据权利要求1所述的计算机实现的方法,其中所述持久性存储器的所述第二区域是预定义的覆盖区域。
4.根据权利要求1所述的计算机实现的方法,其中所述记录包括对所述第一区域的所请求的所述写与对所述第二区域的对应重新定向之间的变换索引。
5.根据权利要求1所述的计算机实现的方法,还包括:响应于重启,访问所述记录并将映射恢复到所述第二区域。
6.根据权利要求1所述的计算机实现的方法,其中所述记录被存储在所述第二区域中。
7.根据权利要求1所述的计算机实现的方法,其中当所述更新的已知良好状态要被取消时,响应于重启,丢弃到所述第二区域的映射并回复到所述已知良好状态。
8.根据权利要求7所述的计算机实现的方法,其中丢弃包括将所述映射视为未被初始化。
9.一种计算设备,包括:
一个或多个处理器;
存储器,与所述一个或多个处理器通信,所述存储器具有存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述计算设备:
在持久性存储器的第一区域中存储定义已知良好状态的数据,所述数据可操作以响应于所述计算设备的重启来将所述计算设备启动到所述已知良好状态;
响应于对持久性存储器的所述第一区域的写请求:
将所请求的写重新定向到所述持久性存储器的第二区域;以及
更新对持久存储器的所述第二区域的重新定向的写的记录;以及
响应于用于定义对所述已知良好状态的修改的锚定点的请求,其中所述锚定点可操作以响应于所述计算设备的重启来将所述计算设备启动到所修改的所述已知良好状态,保持所述记录,使得响应于所述计算设备的重启,所述记录可用于恢复所述重新定向的写,从而利用由所述重新定向的写指示的所述修改来将所述计算设备启动到所述已知良好状态。
10.根据权利要求9所述的计算设备,还包括:建立多个更新的已知良好状态。
11.根据权利要求9所述的计算设备,其中所述存储器的所述第二区域是预定义的覆盖区域。
12.根据权利要求9所述的计算装置,还包括:更新到存储器的所述第二区域的重新定向的写的记录。
13.根据权利要求12所述的计算设备,还包括:响应于重启,访问所述记录并恢复到所述第二区域的映射。
14.根据权利要求12所述的计算设备,其中映射被视为未被初始化,以响应于所述计算设备的重启将所述计算设备启动到所述已知良好状态。
15.一种计算机实现的方法,包括:
在计算设备的持久性存储器的第一区域中存储已知良好状态,所述已知良好状态包括可操作以响应于所述计算设备的重启将所述计算设备启动到所述已知良好状态的数据;
响应于对持久性存储器的所述第一区域的写请求:
将所请求的写重新定向到所述持久性存储器的第二区域;以及
更新对持久存储器的所述第二区域的重新定向的写的记录;
接收用于更新所述已知良好状态的请求,所述更新包括可操作以响应于所述计算设备的重启来将所述计算设备启动到更新的已知良好状态的数据;以及
响应于对所述已知良好状态的所述请求,保持所述记录,使得响应于所述计算设备的重启,所述记录可用于恢复所述重新定向的写,从而将所述计算设备启动到所述更新的已知良好状态。
CN201980020496.XA 2018-03-20 2019-03-12 可配置的恢复状态 Active CN111989656B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862645725P 2018-03-20 2018-03-20
US62/645,725 2018-03-20
US15/968,130 2018-05-01
US15/968,130 US10592354B2 (en) 2018-03-20 2018-05-01 Configurable recovery states
PCT/US2019/021716 WO2019182796A1 (en) 2018-03-20 2019-03-12 Configurable recovery states

Publications (2)

Publication Number Publication Date
CN111989656A true CN111989656A (zh) 2020-11-24
CN111989656B CN111989656B (zh) 2024-06-11

Family

ID=65904595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980020496.XA Active CN111989656B (zh) 2018-03-20 2019-03-12 可配置的恢复状态

Country Status (4)

Country Link
US (1) US10592354B2 (zh)
EP (1) EP3769224B1 (zh)
CN (1) CN111989656B (zh)
WO (1) WO2019182796A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564894B2 (en) 2018-03-20 2020-02-18 Microsoft Technology Licensing, Llc Free space pass-through
TWI704573B (zh) * 2019-05-24 2020-09-11 宜鼎國際股份有限公司 資料保護方法
US11340883B2 (en) * 2019-06-11 2022-05-24 Dell Products L.P. Installing, updating or reconfiguring an application without disabling a write filter
US10852979B1 (en) * 2019-06-19 2020-12-01 Dell Products L.P. System and method of utilizing a non-volatile solid state storage device
US11226933B2 (en) * 2019-12-02 2022-01-18 Dell Products L.P. Enhancing write filter features using an auxiliary overlay
US11226869B2 (en) * 2020-04-20 2022-01-18 Netapp, Inc. Persistent memory architecture
US11714782B2 (en) * 2021-03-30 2023-08-01 Netapp, Inc. Coordinating snapshot operations across multiple file systems
CN117112313B (zh) * 2023-10-23 2024-02-13 深圳市科力锐科技有限公司 业务容灾切换方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155930A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
CN102436387A (zh) * 2010-12-06 2012-05-02 微软公司 快速计算机启动
US20120311263A1 (en) * 2011-06-04 2012-12-06 Microsoft Corporation Sector-based write filtering with selective file and registry exclusions
CN105009094A (zh) * 2013-03-05 2015-10-28 西部数据技术公司 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4301849B2 (ja) 2003-03-31 2009-07-22 株式会社日立製作所 情報処理方法及びその実施システム並びにその処理プログラム並びにディザスタリカバリ方法およびシステム並びにその処理を実施する記憶装置およびその制御処理方法
US7308547B2 (en) 2003-07-30 2007-12-11 Agilent Technologies, Inc. Apparatus and method for control of write filter
US20060047927A1 (en) * 2004-08-31 2006-03-02 Bin Xing Incremental provisioning of software
US7395394B2 (en) 2006-02-03 2008-07-01 Hewlett-Packard Development Company, L.P. Computer operating system with selective restriction of memory write operations
US11205019B2 (en) 2011-10-28 2021-12-21 Hewlett-Packard Development Company, L.P. Multiple computing environments on a computer system
CN102799542B (zh) 2012-07-12 2014-12-10 福建升腾资讯有限公司 扇区增量的树形多层覆盖层的磁盘保护系统及其实现方法
US9489267B1 (en) 2014-12-19 2016-11-08 Emc Corporation Optimization to permit block based incremental backup across system reboot or crash
US10296423B2 (en) 2016-03-31 2019-05-21 Acronis International Gmbh System and method for live virtual incremental restoring of data from cloud storage
US10120578B2 (en) 2017-01-19 2018-11-06 International Business Machines Corporation Storage optimization for write-in-free-space workloads
US10346320B2 (en) * 2017-01-27 2019-07-09 Wyse Technology L.L.C. Restricting applications and users that can make persistent changes to artifacts
US10353636B2 (en) * 2017-02-06 2019-07-16 Wyse Technology L.L.C. Write filter with dynamically expandable overlay
US10564894B2 (en) 2018-03-20 2020-02-18 Microsoft Technology Licensing, Llc Free space pass-through

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155930A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
CN102436387A (zh) * 2010-12-06 2012-05-02 微软公司 快速计算机启动
US20120311263A1 (en) * 2011-06-04 2012-12-06 Microsoft Corporation Sector-based write filtering with selective file and registry exclusions
CN105009094A (zh) * 2013-03-05 2015-10-28 西部数据技术公司 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄英;李战怀;侯利曼;: "一种基于选择性初始备份和逆向恢复机制的CDP系统", 科学技术与工程, no. 10 *

Also Published As

Publication number Publication date
EP3769224B1 (en) 2023-04-19
CN111989656B (zh) 2024-06-11
WO2019182796A1 (en) 2019-09-26
EP3769224A1 (en) 2021-01-27
US10592354B2 (en) 2020-03-17
US20190340083A1 (en) 2019-11-07

Similar Documents

Publication Publication Date Title
CN111989656B (zh) 可配置的恢复状态
US10067835B2 (en) System reset
US11249745B2 (en) Image upgrade method and device
US8429639B2 (en) Image-based software update
CN101650660B (zh) 从中央存储装置引导计算机系统
US8433890B2 (en) Preparing and preserving a system configuration during a hot upgrade
US10521218B2 (en) Enhanced techniques for updating software
EP3769225B1 (en) Free space pass-through
US9852029B2 (en) Managing a computing system crash
US10761892B2 (en) Method and electronic device for executing data reading/writing in volume migration
CN111868698B (zh) 空闲空间直通
US11620136B2 (en) Space snapshots

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant