CN118076946A - 通过主动的存储器中毒恢复来防止存储器错误 - Google Patents

通过主动的存储器中毒恢复来防止存储器错误 Download PDF

Info

Publication number
CN118076946A
CN118076946A CN202280067853.XA CN202280067853A CN118076946A CN 118076946 A CN118076946 A CN 118076946A CN 202280067853 A CN202280067853 A CN 202280067853A CN 118076946 A CN118076946 A CN 118076946A
Authority
CN
China
Prior art keywords
memory
host
error
mce
errors
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.)
Pending
Application number
CN202280067853.XA
Other languages
English (en)
Inventor
王珏
格雷戈里·塞伦
安德鲁·克里斯托弗·沃尔顿
曹逸
詹姆斯·霍顿
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.)
Google LLC
Original Assignee
Google 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 Google LLC filed Critical Google LLC
Publication of CN118076946A publication Critical patent/CN118076946A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

公开技术提供了用于在分布式计算环境中主动地检测、遏制不可纠正的存储器错误并从中恢复的技术、系统和装置。公开技术的一个方面包括由主机的扫描器扫描主机的存储器以查找错误。在扫描器检测到错误后,扫描器可以生成错误通知。扫描器可以向主机的一个或多个处理器发送错误通知以实施缓解技术。

Description

通过主动的存储器中毒恢复来防止存储器错误
相关申请的交叉引用:
本申请是2022年3月15日提交的美国专利申请第17/695,406号的继续申请,其名称为“通过主动的存储器中毒恢复来防止存储器错误”,其公开内容通过引用结合于此。
背景技术
云计算通过经济高效地提供可靠、灵活、可扩展和冗余的计算资源,已经影响了企业管理计算需求的方式。例如,云计算使企业能够管理其信息技术需求,而无需考虑例如管理和维护计算机设备时遇到的传统资本投资和维护问题。此外,随着越来越多的计算转移到云系统,这些云系统存储、处理和输出数据的能力已经提高到曾经难以想象的水平。
转移到云系统的影响是,云系统中发生的存储器错误如果不加以遏制和/或恢复,可能会对客户和用户体验产生与企业在云上的足迹相当的影响。例如,检测到主机上不可纠正的存储器错误导致关闭主机,从而导致主机托管的所有虚拟机(VM)和应用突然终止的情况并不罕见。由于云系统具有十亿字节或万亿字节规模的存储器大小,这种存储器错误可能会影响大量VM和应用,从而导致大量停机和数据丢失,以及客户不认可。
当物理存储器经历存储器故障(例如“不可纠正的错误”)时,通常会存在其他尚未检测到的存储器错误,并且该存储器很可能“永久”损坏。在这种情况下,在保留VM运行状态的同时迁移VM可以减少停机时间,同时控制存储器错误传播的数量和严重性。
发明内容
公开技术的各方面可以包括在云计算环境中实施的方法或系统,其允许主动检测、遏制不可纠正的存储器错误(例如,防止被破坏的数据在迁移中传播到目标主机)以及从不可纠正的存储器错误中恢复。
本公开的一个方面涉及一种用于在云计算环境中主动检测存储器错误的方法。该方法可以包括由主机的扫描器扫描所述主机的存储器以查找错误;由所述扫描器检测所述主机的所述存储器中的存储器错误;由所述主机的一个或多个处理器生成机器检查异常(MCE);以及由所述一个或多个处理器向在所述主机上执行的内核提供所述MCE。
在某些情况下,所述扫描由所述扫描器连续地进行。在一些示例中,所述扫描是只读扫描。在一些示例中,所述存储器错误是不可纠正的存储器错误。在一些示例中,所述MCE包括所述存储器的位置的指示,在所述存储器的位置,所述存储器错误被所述扫描器检测到。
在一些实例中,所述方法进一步包括基于扫描器检测到所述存储器错误的所述存储器的位置,将被确定为与所述存储器错误相关联的一个或多个存储页面识别为一个或多个中毒存储页面。
在一些实例中,所述方法进一步包括隔离所述主机对所述一个或多个中毒存储页面的访问。
在一些示例中,所述方法进一步包括接收页面故障,所述页面故障与在所述主机上执行的虚拟机的客户做出的读取请求相关联;以及由所述内核向所述虚拟机的管理程序发送SIGBUS信号。
在一些示例中,所述方法进一步包括由所述管理程序生成机器检查异常;以及向所述客户发送所述机器检查异常。
所述技术的另一方面涉及一种系统。所述系统可以包括主机,能够支持一个或多个虚拟机;以及一个或多个处理设备,被耦接到包含指令的存储器。所述指令可以导致所述一个或多个处理设备:扫描所述主机的存储器以查找错误;检测所述主机的所述存储器中的存储器错误;生成机器检查异常(MCE);以及将所述MCE发送到所述主机的内核,所述MCE包括与所述存储器错误相关联的信息。
在某些情况下,所述扫描由所述扫描器连续地进行。在一些示例中,所述扫描是只读扫描。在一些示例中,所述存储器错误是不可纠正的存储器错误。在一些示例中,所述MCE包括所述存储器的位置的指示,在所述存储器的位置,所述存储器错误被所述扫描器检测到。
在一些示例中,所述指令进一步导致所述一个或多个处理器:基于检测到所述存储器错误的所述存储器的位置,将被确定为与所述存储器错误相关联的一个或多个存储页面识别为一个或多个中毒存储页面。
在一些示例中,所述指令进一步导致所述一个或多个处理器隔离所述主机对所述一个或多个中毒存储页面的访问。
在一些示例中,所述指令进一步导致所述一个或多个处理器接收页面故障,所述页面故障与在所述主机上执行的虚拟机的客户做出的读取请求相关联;以及向所述虚拟机的管理程序发送SIGBUS信号。
在一些示例中,所述指令进一步导致所述一个或多个处理器生成机器检查异常;以及向所述客户发送所述机器检查异常。
本公开的另一方面涉及一种存储指令的非暂时性计算机可读介质,当所述指令由一个或多个处理器执行时,导致所述一个或多个处理器:扫描所述主机的存储器以查找错误;检测所述主机的所述存储器中的存储器错误;生成机器检查异常(MCE);以及将所述MCE发送到所述主机的内核,所述MCE包括与所述存储器错误相关联的信息。
附图说明
图1说明性地描绘了根据公开技术的各方面的示例系统或环境的框图。
图2说明性地描绘了根据公开技术的各方面的示例系统或环境的框图。
图3A说明性地描绘了根据公开技术的各方面的示例过程或方法的流程图或泳道图。
图3B说明性地描绘了根据公开技术的各方面的示例过程或方法的流程图或泳道图。
图3C说明性地描绘了根据公开技术的各方面的示例过程或方法的流程图或泳道图。
图4描绘了根据公开技术的各方面的示例过程或方法的流程图。
图5A至5D示出了根据公开技术的各方面的示例过程或方法以及子过程或子方法的各方面。
具体实施方式
概述
存储器错误通常分为可纠正的和不可纠正的。可纠正的错误通常不影响云环境中主机的正常操作,从而不影响主机计算系统的正常操作。不可纠正的错误通常对整个主机计算系统是致命的,例如导致主机崩溃或关机。在基于云的虚拟机环境中,这意味着主机支持的所有虚拟机(VM)将与主机一起崩溃或关闭,几乎没有或根本没有关于崩溃原因的线索,并且VM/用户几乎没有恢复的机会。在现代云计算系统中,不可纠正的存储器错误的影响通常是巨大的。在这方面,云计算系统通常在每个主机上使用相对较大的存储器。例如,云计算引擎可以支持单个具有12tb或更多存储器的VM。这些较大的主机通常比较小的主机遇到更高的不可纠正的存储器错误率。在这方面,存储器的容量越大,发生存储器错误的机会就越大。存储器错误导致的停机通常代价高昂,尤其是对于大型主机而言。
不可纠正的错误的存在会导致在管理VM预期行为中的额外复杂性,因为这些不可纠正的错误通常表明底层物理存储器的额外损坏,其中可能包含额外的隐藏错误或未知错误。此外,由于底层硬件的存在,可纠正的错误可能会变得不可纠正,这些硬件可能会随着时间的推移而退化。如果不进行检查,随着不可纠正的错误的数量继续增加,运行一个或多个VM的物理主机很可能会发生严重崩溃,主机上的所有VM也会相应崩溃。因此,缓解技术(例如将在损坏的硬件上运行的虚拟机迁移到已知“良好”的机器)可以限制检测到的不可纠正的错误的影响以及此类错误的下游影响。但是,在迁移“活动”机器的过程中必须考虑其他因素,包括在迁移过程开始时未考虑到的其他存储器错误发生。
典型的缓解技术仅在主机或运行在主机上的VM遇到存储器错误后才会出现。本文所述的技术依赖于扫描器来主动扫描系统存储器,以便在主机或VM遇到错误之前检测到错误。通过这样做,本文描述的缓解技术可以在主机或VM使用存在错误的“坏的”存储器之前被实施。通过这样做,可以避免主机和VM损坏等问题。
公开技术的各方面包括将正在运行的VM从一台物理主机“实时”迁移到另一台物理主机。在一些示例中,迁移可以在一系列步骤中发生,包括以关键程度的顺序迁移存储页面。在一些示例中,可以迁移存储器的最相关或最关键的部分。在一些示例中,可以进行存储器错误的仿真来排除被确定为“中毒”的某些存储器区段或存储页面。例如,中毒的存储页面可以包括具有对应于主机上损坏的存储器元件的虚拟存储器位置的存储页面,例如具有翻转位或损坏的存储器部件的物理存储器位置。公开技术的各方面允许保存某些类型的存储器错误(包括这些错误的迁移),以在实时迁移事件之后向终端用户启用一致的视图。此外,虚拟环境(例如在管理程序抽象级别)中的存储器错误的检测、识别和处理可用于改进实时迁移(例如跟踪和隔离中毒页面),使得它们不会作为自然实时迁移过程的一部分被复制和传输到目标主机。其他方面可以包括向目标主机通知中毒页面或损坏的存储器位置,使得目标主机处的计算(例如校验和计算(checksum computation))不包括中毒页面或损坏的存储器位置。
公开技术的各方面包括一个或多个VM的迁移。在一些示例中,可以按照基于重要性、当前使用或与特定VM相关联的关键错误的数量的顺序来迁移虚拟机。在一些示例中,在检测到一个或多个不可纠正的存储器错误时,运行在包含一个或多个不可纠正的存储器错误的特定主机上的所有VM可以被迁移到健康的物理主机。
公开技术的各方面包括从特定的底层微架构平台抽象和通用的架构,允许跨多个主机平台或架构的虚拟机的“通用”抽象。
通过将VM从一台主机迁移到另一台主机,公开技术的各方面能够遏制某些类型的存储器错误以保持虚拟机环境的数据完整性、稳定性、可扩展性和健壮性。
公开技术的一个方面包括云计算基础设施,该基础设施允许扫描器主动检测存储器错误(包括不可纠正的存储器错误),以及定位和包含存储器错误,使得它们不影响系统的其他部分,例如客户VM工作负载。例如,公开技术包括配置主机扫描器(包括相关联的存储器元件)以使得错误信号能够在操作系统(OS)处恢复,在检测到存储页面上的存储器错误时增强并启用OS的恢复路径。公开技术的一个示例包括中央处理单元(CPU)能力,其可以向操作系统(OS)发信号通知与存储器错误相关联的情境信息(例如,地址、严重性、是否被隔离地发信号通知以使得错误可恢复等)。例如,这种机制可以包括英特尔的x86机器检查架构,其中CPU向OS报告硬件错误。OS内核中的机器检查异常(MCE)处理程序(例如经由Linux提供的)然后可以使用应用编程接口(API)(例如POSIX)向虚拟机管理器发信号以通知错误的存在,以及提供关于错误的情境信息(例如位置、错误类型、不可恢复与否、关于相邻存储器位置的状态等)。虚拟机管理器然后可以将该错误信息作为实时迁移过程启动的一部分。
例如,公开技术的一个方面包括云计算系统或架构,其中提供了一种机制,使得虚拟机管理器或管理程序包括由主机警告存储器错误,尤其是不可纠正的存储器错误的能力。管理程序在被警告时处理它从主机接收的存储器错误信息,以确定可能正在访问(或可能最终访问)损坏的存储器元件的VM,该损坏的存储器元件可从包括在警告中的存储器错误信息中识别。管理程序在识别受影响的VM后,可以启动对运行在受影响的主机上的VM进行故障转移的过程,以便最终可以修复主机。
可以理解,根据前述机制实施的云计算系统或架构可以包含并允许从不可纠正的存储器错误中优雅地恢复。具体地,通过识别受影响的存储器,管理程序可以限制或消除对此类存储器的预期使用(例如读取或访问)。此外,管理程序可以将影响仅限于受影响的VM。此外,管理程序可以恰当地启动受影响的VM的故障转移,然后管理将由损坏的主机支持的未受影响的VM移动到另一主机,以允许修复损坏的主机。通过这种方式,客户或用户暴露于不可纠正的存储器错误的影响可能仅限于受影响的VM,该VM的虚拟存储器链接到损坏的物理存储器元件或地址,而不相关的VM则不会意识到该错误,也不会受到其影响。
示例系统
图1是根据本公开各方面的示例系统100。系统100包括一个或多个计算设备110(其可以包括计算设备1101至110k),网络140和一个或多个云计算系统150(其可以包括云计算系统1501至150m)。计算设备110可以包括位于客户位置的计算设备,这些计算设备利用云计算服务,例如基础设施即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。例如,如果计算设备110位于商业企业,则计算设备110可以使用云系统150作为服务,其将软件应用(例如,会计、文字处理、库存跟踪等应用)提供到在操作企业系统中使用的计算设备110。作为替代示例,计算设备110可以以虚拟机的形式租用基础设施,在其上运行软件应用以支持企业运营。
如图1所示,每个计算设备110可以包括一个或多个处理器112、存储数据(D)和指令(I)的存储器116、显示器120、通信接口124和输入系统128,它们被示为经由网络130互连。计算设备110还可以被耦接或连接到存储装置136,存储装置136可以包括(例如存储区域网络(SAN)上的)本地存储装置或远程存储装置,其存储作为客户操作的一部分而积累的数据。计算设备110可以包括独立的计算机(例如台式或膝上型计算机)或与客户相关联的服务器。给定的客户也可以作为其业务的一部分将多个计算设备实施为服务器。如果是独立的计算机,网络130可以包括计算机内部的数据总线等;如果是服务器,网络130可以包括一个或多个局域网、虚拟专用网、广域网或下面结合网络140描述的其他类型的网络。存储器116存储可由一个或多个处理器112访问的信息,包括可由处理器112执行或使用的指令132和数据134。存储器116可以是能够存储处理器可访问的信息的任何类型,包括计算设备可读介质或存储可在电子设备的帮助下读取的数据的其他介质,例如硬盘驱动器、存储卡、ROM、RAM、DVD或其他光盘,以及其他可写和只读存储器。系统和方法可以包括前述的不同组合,由此指令和数据的不同部分存储在不同类型的介质上。
指令132可以是由处理器直接执行(如机器代码)或间接执行(如脚本)的任何指令集。例如,指令可以作为计算设备代码被存储在计算设备可读介质上。在这方面,术语“指令”和“程序”在本文中可以互换使用。指令可以以用于处理器直接处理的目标代码格式存储,或者以任何其他计算设备语言存储,包括按需解释或预先编译的独立源代码模块的脚本或集合。下面更详细地解释指令的过程、功能、方法和例程。
处理器112可以根据指令132来检索、存储或修改数据134。作为示例,与存储器116相关联的数据134可以包括用于支持一个或多个客户端设备、应用等的服务的数据。这种数据可以包括支持托管基于网络的应用、文件共享服务、通信服务、游戏、共享视频或音频文件或任何其他基于网络的服务的数据。
一个或多个处理器112可以是任何传统的处理器,例如商用CPU。或者,一个或多个处理器可以是专用设备,例如ASIC或其他基于硬件的处理器。尽管图1在功能上将计算设备110的处理器、存储器和其他元件示出为在单个块中,但是本领域普通技术人员将会理解,处理器、计算设备或存储器实际上可以包括多个处理器、计算设备或存储器,这些处理器、计算设备或存储器可以位于或存储在同一物理外壳内,也可以不位于或存储在同一物理外壳内。在一个示例中,一个或多个计算设备110可以包括具有多个计算设备的一个或多个服务器计算设备,例如负载平衡的服务器群,其与网络的不同节点交换信息,用于接收、处理和向其他计算设备发送数据以及从其他计算设备发送数据,作为客户业务操作的一部分。
计算设备110还可以包括显示器120(例如,具有屏幕、触摸屏、投影仪、电视或可操作来显示信息的其他设备的监视器),其提供用户接口,该用户接口允许控制计算设备110并访问一个或多个云系统150中支持的用户空间应用和/或数据相关联的VM,例如在云系统150中的主机上。这种控制可以包括例如使用计算设备使得数据通过输入系统128上传到云系统150以供处理,使数据在存储装置136上累积,或者更一般地,管理客户的计算系统的不同方面。在一些示例中,计算设备110还可以访问API,该API允许计算设备110指定在云中的VM上运行的工作负载或作业作为IaaS或SaaS的一部分。虽然输入系统128可以用于上传数据,例如USB端口,但是计算设备110也可以包括可以用于接收命令和/或数据的鼠标、键盘、触摸屏或麦克风。
网络140可以包括各种配置和协议,包括短程通信协议,例如BluetoothTM、BluetoothTMLE、互联网、万维网、内联网、虚拟专用网、广域网、局域网、使用一个或多个公司专有的通信协议的专用网络、以太网、WiFi、HTTP等,以及前述的各种组合。这种通信可以由能够向其他计算设备和从其他计算设备传输数据的任何设备来促进,其他计算设备例如是调制解调器和无线接口。计算设备通过通信接口124与网络140连接,通信接口124可以包括支持给定通信协议所必需的硬件、驱动程序和软件。
云计算系统150可以包括一个或多个数据中心,这些数据中心可以经由高速通信或计算网络链接。系统150内的给定数据中心可以包括容纳计算系统及其相关组件(例如存储系统和通信系统)的建筑物内的专用空间。通常,数据中心将包括通信设备机架、服务器/主机和磁盘。服务器/主机和磁盘包括用于提供虚拟计算资源(例如VM)的物理计算资源。就给定的云计算系统包括一个以上的数据中心而言,这些数据中心可能位于彼此相对接近的不同地理位置,被选择来以及时和经济有效的方式提供服务,以及提供冗余和保持高可用性。类似地,不同的云计算系统通常在不同的地理位置提供。
如图1所示,计算系统150可以被示为包括主机152、存储装置154和基础设施160。主机152、存储装置154和基础设施160可以包括云计算系统150内的数据中心。基础设施160可以包括一个或多个主机以及交换机、物理链路(例如光纤)和用于将数据中心内的主机与存储装置154互连的其他设备。存储装置154可以包括磁盘或其他存储设备,其可被分区以向运行在数据中心内的处理设备上的虚拟机提供物理或虚拟存储。存储装置154可以作为SAN被提供在托管由存储装置154所支持的虚拟机的数据中心内,或者被提供在不与其所支持的虚拟机共享物理位置的不同数据中心内。给定数据中心内的一个或多个主机或其他计算机系统可以被配置为在创建和管理与给定数据中心内的一个或多个主机相关联的虚拟机时充当监管代理或管理程序。一般而言,被配置为用作管理程序的主机或计算机系统将包含例如管理操作所必需的指令,该操作是由于对源自例如计算设备110的服务的请求而向客户或用户提供IaaS、PaaS或SaaS而产生的。
在图2所示的示例中,分布式系统200(例如示出的与图1的云系统150有关的系统)包括支持或执行虚拟计算环境300的主机210(例如硬件资源210)的集合204。虚拟计算环境300包括虚拟机管理器(VMM)320和虚拟机(VM)层340,该虚拟机层340运行一个或多个虚拟机(VM)350a-n,虚拟机350a-n被配置为执行一个或多个软件应用360的实例362a,362a-n。每个主机210可以包括一个或多个物理中央处理单元(pCPU)212(“数据处理硬件212”)和相关联的存储器硬件216。虽然每个硬件资源或主机210被示为具有单个物理处理器212,但是任何硬件资源210都可以包括多个物理处理器212。主机210还包括物理存储器216,物理存储器216可以由主机操作系统(OS)220划分成虚拟存储器,并分配给VM层340中的VM350来使用或者甚至VMM 320或主机OS220来使用。物理存储器216可以包括随机存取存储器(RAM)和/或磁盘存储装置(包括如图1所示可通过基础设施160访问的存储装置154)。
主机操作系统(OS)220可以在给定的一个主机210上执行,或者可以被配置为在包括多个主机210的集合上操作。为了方便起见,图2将主机OS 220示为在机器2101至210m的集合上操作。此外,尽管主机OS220被示为虚拟计算环境300的一部分,但是每个主机210都配备有其自己的OS218。然而,从虚拟环境的角度来看,每台机器上的操作系统对于VMM 320和VM层340来说表现为集合操作系统220并作为集合操作系统220来管理。
在一些示例中,VMM 320对应于管理程序320(例如,计算引擎),管理程序320包括被配置为创建、实例化/部署和执行VM 350的软件、固件或硬件中的至少一个。与执行一个或多个VM 350的VMM 320相关联的计算机(例如数据处理硬件212),通常被称为主机210(如上所用),而每个VM 350可以被称为客户机。这里,VMM 320或管理程序被配置为向每个VM350提供具有虚拟操作平台的对应的客户操作系统(OS)354(例如354a-n),并管理VM 350上对应的客户OS 354的执行。如此处所使用的,每个VM 350可以被称为“实例”或“VM实例”。在一些示例中,各种操作系统的多个实例可以共享虚拟化资源。例如,操作系统的第一VM 350、操作系统的第二VM 350和OS操作系统的第三VM 350都可以在单个物理x86机器上运行。
VM层340包括一个或多个虚拟机350。分布式系统200使用户能够(通过一个或多个计算设备110)按需启动VM 350,即通过经由网络140向分布式系统200(包括云系统150)发送命令或请求170(图1)。例如,命令/请求170可以包括与对应的操作系统220相关联的映像或快照,并且分布式系统200可以使用该映像或快照来为对应的VM 350创建根资源210。这里,命令/请求170内的映像或快照可以包括引导加载程序、对应的操作系统220和根文件系统。响应于接收到命令/请求170,分布式系统200可以实例化对应的VM 350,并在实例化时自动启动VM 350。
VM 350模拟真实计算机系统(例如,主机210),并基于真实计算机系统或假想计算机系统的计算机架构和功能进行操作,这可能涉及专用硬件、软件或其组合。在一些示例中,分布式系统200在启动一个或多个虚拟机350之前授权和认证用户设备110。软件应用360的实例362,或简称为实例,是指被托管在分布式系统200的数据处理硬件212上(在其上执行)的VM 350。
主机OS220虚拟化底层主机硬件并管理一个或多个VM实例350的并发执行。例如,主机OS220可以管理VM实例350a-n,并且每个VM实例350可以包括底层主机硬件的模拟版本或不同的计算机架构。与每个VM实例350,350a-n相关联的硬件的模拟版本被称为虚拟硬件352,352a-n。虚拟硬件352可以包括模拟主机210的一个或多个物理处理器212的一个或多个虚拟中央处理单元(vCPU)(“虚拟处理器”)。虚拟处理器可以互换地称为与VM实例350相关联的“计算资源”。计算资源可以包括执行对应的个体服务实例362所需的目标计算资源水平。
虚拟硬件352可以进一步包括虚拟存储器,该虚拟存储器与虚拟处理器通信并存储可由虚拟处理器执行的用于进行操作的客户指令(例如客户软件)。例如,虚拟处理器可以执行来自虚拟存储器的指令,这些指令使得虚拟处理器执行软件应用360的对应的个体服务实例362。这里,个体服务实例362可以被称为客户实例,该客户实例不能确定它是由虚拟硬件352执行的还是由物理数据处理硬件212执行的。主机的微处理器可以包括处理器级机制,以通过允许客户软件指令直接在主机的微处理器上执行而无需代码重写、重新编译或指令仿真来使虚拟硬件352能够高效地执行应用360的软件实例362。虚拟存储器可以互换地称为与VM实例350相关联的“存储器资源”。存储器资源可以包括执行对应的个体服务实例362所需的目标存储器资源水平。
虚拟硬件352可以进一步包括至少一个虚拟存储设备,其为物理存储器硬件212上的服务提供运行时间容量。该至少一个虚拟存储设备可以被称为与VM实例350相关联的存储资源。存储资源可以包括执行对应的个体服务实例362所需的目标存储资源水平。在每个VM实例350上执行的客户软件可以进一步分配网络边界(例如,分配网络地址),通过该网络边界,相应的客户软件可以与通过内部网络160(图1)、外部网络140(图1)或两者可达的其他进程通信。网络边界可以被称为与VM实例350相关联的网络资源。
在每个VM 350上执行的客户OS 354包括软件,该软件控制由VM实例350执行对应的个体服务实例362(例如应用360的362a-n中的一个或多个)。在VM实例350,350a-n上执行的客户OS 354,354a-n可以与在其他VM实例350上执行的其他客户OS 354相同或不同。在一些实施方式中,VM实例350不需要客户OS 354来执行个体服务实例362。主机OS220可以进一步包括为主机OS 220的内核226保留的虚拟存储器。内核226可以包括内核扩展和设备驱动,并且可以进行对在主机OS220的用户进程空间中运行的进程禁止的某些特权操作。特权操作的示例包括访问不同的地址空间、访问主机210中的特殊功能处理器单元,例如存储器管理单元等。运行在主机OS220上的通信进程224可以提供VM网络通信功能的一部分,并且可以在用户进程空间或与内核226相关联的内核进程空间中执行。
根据公开技术的各方面,在实施MCE的主机210上发生的不可恢复的存储器错误(例如位翻转)可以在管理程序层进行管理,以减轻和/或避免受影响的客户VM崩溃,并将不可恢复的存储器错误的影响仅限于受影响的客户VM。例如,与给定主机210相关联的BIOS被配置为使得在主机上由pCPU 212生成的MCE被发送到内核226。MCE包括关于错误的情境信息,包括例如物理存储器地址、错误的严重性、错误是否是隔离的错误、发出错误信号的pCPU内的部件等。内核226将该错误转发给管理程序320。管理程序320然后处理该信息以识别与该错误相关联的虚拟存储器,并识别任何受影响的存储页面以及相关联的VM。由于VM通常不共享虚拟存储器,因此给定的存储器错误可能会被隔离到给定的VM。因此,将错误传播到受影响的VM之外的风险很小甚至没有。管理程序320然后将被破坏的存储页面隔离以避免客户OS访问它。接下来,管理程序通过模拟错误来将错误通知受影响的客户操作系统。具体地,管理程序将中断(例如中断80)注入客户OS,这将该错误通知给客户OS。以这种方式,例如,只有受该错误影响的VM被通知该错误,并且只有该VM或与该VM相关联的应用可以被重启。
此外,在已经被通知损坏的虚拟存储器地址或包含这种地址的存储页面后,受影响的VM可以避免读取或访问这些存储器位置,这导致对错误的遏制。例如,每次存储器读取或访问损坏的存储器元件都会生成MCE。公开技术的一个方面减轻和/或避免了在主机级检测到损坏的存储器元件并向VMM和/或客户OS通知该错误后导致对损坏的存储器元件的多次读取或访问。
在其他示例中,用户应用可以在多个虚拟机上运行,并且与单个VM相关联的存储器错误可以影响多个VM(例如,机器学习训练工作)。在这样的示例中,错误的影响可能要求向不止一个VM通知该错误。例如,如果管理程序已经在多个VM之间分发了一个或多个给定的作业,则管理程序可以向所有受影响的VM广播该错误。在该实例下,用户可以决定关闭并重新启动受影响的应用程序是可行的选择。相比之下,在涉及单个虚拟机的情况下,通过例如为其提供新的存储页面或将其重新启动来保持虚拟机活动可能是一个可行的选择。
根据公开技术的各方面,扫描器(例如扫描器301)可用于在由BIOS检测到MCE之前识别存储器错误。对于每个识别的存储器错误,扫描器可以向内核提供关于该错误的情境信息,包括例如物理存储器地址、错误的严重性、错误是否是隔离的错误等。内核可以隔离存储页面,该存储页面属于由扫描器检测到错误的每个单独的VM。存储器错误的检测和存储页面的隔离无需与管理程序和/或客户OS/客户应用进行任何交互。因此,存储器错误的检测和受影响的存储页面的隔离对于客户VM的执行是透明的。
扫描器会主动搜索存储器错误,以隔离受影响的存储器,使其不被主机或在主机上执行的VM使用。通过主动搜索存储器错误,扫描器尝试检测“空闲页面”(即主机设备或在主机设备上运行的VM未使用的存储页面)上的存储器错误。通过检测“空闲页面”上的存储器错误,与内核协同工作的扫描器可以隔离坏的存储页面,防止在主机上执行的VM的主机系统使用这些存储页面。因此,主机设备和VM与坏的存储器完全隔离,并且不会触发可能导致死机或关机的MCE。此外,即使扫描器检测到不在空闲页面上的存储器错误,虚拟机的未来访问也不会导致实际硬件MCE发出信号,从而避免了易受各种CPU漏洞(bug)的影响,这些漏洞可能会导致可恢复的MCE发出的信号为不可恢复的。也就是说,保证对由扫描器检测到错误的这些页面的所有未来访问都是可恢复的;或者当扫描器检测到的错误在空闲页面上时,这些未来的访问被完全阻止。
示例过程或方法
图3A示出了根据公开技术的各方面的处理流程或方法370的示例。主机372包括BIOS、CPU和内核(作为其OS的一部分)。主机被配置为检测不可纠正的存储器错误并响应于这种检测发出机器检查异常(MCE)。此外,还提供了对检测到的不可纠正的存储器错误进行分类的功能。例如,分类可以包括在哪里发现错误、错误是否可恢复以及允许或需要何种类型的恢复。例如,一些硬件架构转发情境信息,其向软件发出无法恢复的信号,并因此内核需要进入紧急模式。发生这种情况的典型例子是当执行情境被破坏时(例如,在CPU执行某些指令的过程中发生错误)。当在主机372中检测到不可纠正的存储器错误时,BIOS向CPU发送MCE,线376。
然后,CPU将MCE信息(描述为#MC)转发到主机372的内核,线378。#MC和MCE或MCE信息可以包括相同的情境信息或相同类型的情境信息。内核中的处理程序(例如,MCE或#MC处理程序)接收关于不可纠正的存储器事件的、包括情境信息的MCE信息(#MC)其,并向管理程序386中的MCE信号处理程序发信号(线382)。发信号可以经由总线错误信号(例如SIGBUS)进行。管理程序386对MCE信息进行解码,并将其映射到与由受影响的主机所支持的VM相关联的虚拟存储器空间,线388。这样做时,管理程序386确定与损坏的存储器元件相关联的虚拟存储器和存储页面。此外,管理程序386仿真MCE事件,线388。也就是说,管理程序386将与物理存储器错误相关联的情境信息翻译成与虚拟存储器位置相关联的情境信息。此外,管理程序386可以将在受影响的主机372上的VM迁移到另一主机373所需的进程实例化,线390。
如上所述,公开技术的各方面包括让主机内核的MCE处理程序向虚拟机管理器或管理程序发信号通知所有相关的MCE细节。利用管理程序,MCE SIGBUS处理程序将存储器错误事件记录在,例如VmEvents表中。事件表可以包括记录以下详细信息的字段:常规VM元数据(例如,VM id、项目id);MCE详细信息:DIMM、等级、存储体、来自所有相关存储体的MCA寄存器)。可选地,还可以记录邻居信息,例如哪些其他VM在主机上、在同一套接字上等。邻居信息在分析潜在的安全攻击(例如Row Hammer攻击)时可能很重要。在这样的示例中,公开技术可以向客户用户空间通知所有受影响的VM,并导致启动到另一主机的更优雅的故障转移。
在主机上,在BIOS中启用了存储器错误遏制和存储器错误恢复,以及IIO停止和尖叫(scream)。经由特定的新MSI/NMI处理程序发出的错误信号被添加到主机内核中,其行为对主机来说只是死机。主机内核被配置为知道MCE错误属于哪个地址空间,以及该进程是否是VM。
图3B示出了根据公开技术的各方面的处理流程或方法870的示例。主机872包括扫描器801、CPU 802、内核(作为其OS的一部分)803和存储器816。扫描器801被配置为检测主机设备的存储器816内的存储器错误。当扫描器801遇到存储器错误时,如线876所示,CPU802可以生成MCE并将其发送到内核803,如线878所示。内核803然后可以确定错误通知属于哪个地址空间(例如,存储页面)。主机设备然后可以阻止(“中毒”)受影响的存储页面被主机872和在其上执行的VM访问,如线888所示。
扫描器801可以是在主机872上执行的软件扫描器和/或在主机872内或以其他方式与主机872通信的独立硬件组件。扫描器可以主动扫描主机872的整个系统存储器以查找错误。通过这样做,扫描器可以在VM或主机本身使用存储器之前识别存储器问题。
例如,扫描器801可以每X分钟对主机设备的整个存储器执行扫描。如此,X是可以发现错误的上限。也就是说,任何错误发生后不超过X分钟就会被扫描器识别出来。通过使用扫描器主动检测存储器错误,可以阻止使用任何有错误的存储页面,以便主机设备和在主机上执行的VM不依赖有错误的存储页面。此外,在受影响的主机上执行的任何虚拟机都可以迁移到新的主机上,以便能够修复有错误的存储器。扫描器检测到的每个错误还可以被提供给用户空间,以供用户或主机设备和/或在主机设备上执行的VM的其他这种管理员将来审查。
扫描器801可以进行只读或读写扫描以避免改变被扫描的存储器的内容。通过进行只读扫描,扫描器801可以避免干扰存储器内容,该存储器内容属于在主机872上执行的任何软件,包括操作系统/内核803、应用、虚拟机等。
为了最小化由扫描器301引入的处理开销和存储器带宽&缓存争用,存储器副本可以被卸载到集成DMA引擎,例如Crystal Beach DMA。额外地,扫描器可以确保非统一存储器访问本地套接字本地分块(chunked)读取,并且一旦在当前块中检测到存储器错误就尽早返回,而不必完成对块的剩余字节的读取。此外,扫描器可以使用非时态指令来消除任何缓存污染。在这方面,x86上的非时态指令是一组特殊的指令,为CPU缓存层次结构提供“非时态”属性,即“不会导致存储器内容存储在缓存中”。这样,扫描器可以在后台持续运行,而不会对主机设备和在主机设备上执行的VM的工作负载性能产生任何影响或影响很小。
CPU 802可以被配置为向主机设备872的内核803发送MCE。在接收时,内核803可以审查包含在MCE中的信息,例如扫描器801遇到存储器错误的存储器的物理位置。内核803可能毒害受影响的存储器,使得它不能被在主机设备872上执行的VM或主机设备872本身访问。
这种主动扫描与以前的错误检测方法形成对比,以前的方法依赖于主机或在主机上执行的VM遇到存储器错误后由CPU生成的MCE。因此,在实施缓解技术之前,至少主机或在主机上执行的一个或多个VM受到该错误的影响。
主机设备872的内核803可以。在空闲页面上发生存储器错误的情况下,不会检测到关于存储器错误的额外错误,因为空闲页面不是主机设备或在主机设备上执行的VM使用的选项。也就是说,当扫描器在这些存储器位置遇到错误时,没在使用的存储器位置将不会被系统使用。因此,这些存储器位置不会继续触发MCE或其他错误。
即使在被VM使用的存储页面上出现存储器错误,也会向VM提供页面故障。页面故障将被检测到(或以其他方式提供给)主机设备872的内核803。内核可以向发生页面故障的VM的管理程序提供带有MCE错误代码的“Sigbus”信号。然后,管理程序可以向客户vCPU发送模拟的MCE,客户vCPU可以根据需要处理模拟的MCE。因此,只有使用发生存储器错误的存储器的VM可能会受到存储器错误的影响。其他VM和主机设备可以不受存储器错误的影响。
如上所述,公开技术的各方面包括让主机内核的MCE处理程序向虚拟机管理器或管理程序发信号通知所有相关的MCE详细信息。利用管理程序,MCE SIGBUS处理程序将存储器错误事件记录在,例如VmEvents表中。事件表可以包括记录以下详细信息的字段:常规VM元数据(例如,VM id、项目id;MCE详细信息:DIMM、等级、存储体、来自所有相关存储体的MCA寄存器)。可选地,还可以记录邻居信息,例如哪些其他VM在主机上、在同一套接字上等。邻居信息在分析潜在的安全攻击(例如Row Hammer攻击)时可能很重要。在这样的示例中,公开技术可以向客户用户空间通知所有受影响的VM,并导致启动到另一主机的更优雅的故障转移。
在主机上,在BIOS中启用了存储器错误遏制和存储器错误恢复,以及IIO停止和尖叫。经由特定的新MSI/NMI处理程序发出的错误信号被添加到主机内核中,其行为对主机来说只是死机。主机内核被配置为知道MCE错误属于哪个地址空间,以及该进程是否是VM。
图3C示出了根据公开技术的各方面的方法或架构374的各方面。主机372和主机373可以包含各种组件,包括BIOS、CPU和OS/内核。此外,主机372和主机373可以包含可以被分成多个段的易失性存储器和非易失性存储器。主机372和主机373可以类似于如上所述的分布式系统200或主机210。
VMM/管理程序386可以在主机上运行。如上所述,VMM/管理程序386可以控制、协调或以其他方式使一个或多个VM能够被创建和操作,例如VM 391A至391N。尽管为了简单起见仅示出了两个,但是应当理解,多于两个虚拟机(例如,100个甚至1000个)可以在主机372上实例化或运行。每个VM可以对应于主机372上的易失性存储器或其他存储器的一部分。主机372和主机373不需要作为给定云系统的一部分驻留在同一数据中心中(例如,参见图1中的系统150)。在一些示例中,迁移可能发生在云环境中不同数据中心的主机之间。在这种情况下,VMM/管理程序386可以包括位于不同物理位置或不同数据中心的不同VMM/管理程序组件。此外,在一些示例中,根据底层主机是如何被管理的,VMM/管理程序386可以包括给定数据中心中的不同组件。此外,VMM/管理程序可以在功能上分布在多个主机或机器上。
在一些示例中,如在存储器中“!”所示,可以知道主机372内的存储器的某些区段或部分包含不可恢复的错误。如参考图3C所解释的,这些不可恢复的错误会影响虚拟机及其支持的客户应用或实例的运行。作为一个示例,VM 391A可以运行在存储器中包含与MCE相关的不可恢复的错误的特定区段上。其他虚拟机可能正在使用不包含错误的物理硬件,包括易失性存储器。由给定VM使用的物理存储器和其他物理组件通过VMM/管理程序386来管理。例如,给定的VM即使可能使用主机的物理存储器上的空间,通常也不知道实际的物理存储器地址等,因为VMM通常会将其映射到虚拟机环境中的虚拟存储器地址。
各种存储器区段可以对应于一个或多个存储页面,其在图3C中示为主机372的一部分。在一些示例中,一个或多个存储页面可以是主机372的易失性存储器的一个或多个区段的存储器转储(dump)。存储页面可以存储在任何适当的存储器中,例如低级缓存存储器、非易失性存储器或易失性存储器。可以标记对应于具有不可恢复错误(例如MCE)的某些存储页面。在一些示例中,页面可被标记为或包含将页面标识为“中毒的”或包含中毒存储器的信息。在一些示例中,存储页面可以仅包含“客户存储器”或对应于特定VM实例的存储器,例如图2中引用的实例362a。
主机373可以类似于主机372,管理程序386可以控制、协调或以其他方式启用一个或多个VM的操作,例如主机373上特定的VM 392A至392N。在一些示例中,主机373上的VM数量可以与主机372上的VM数量相同。
存储器迁移模块371可以包含远程过程调用、API、联网功能和其他“低级”存储器操作,例如发生在OS级之下或发生在OS级的那些操作,以使得虚拟机能够从一个主机转移或迁移到另一主机。存储器迁移模块371可以分布在一个或多个物理机器上,例如主机372和主机373。存储器迁移模块371还可以运行在连接主机372和主机373或其他主机或允许数据在主机372和主机373或其他主机之间传输的网络上。
存储器迁移模块371还能够生成校验和,从反弹缓冲区读取,并知道存储器和存储页面中的MCE错误。存储器迁移模块371可以使用RPC、软件或其他适于执行公开技术的动态迁移功能方面的API。存储器迁移模块371可以包括执行迁移过程的功能(如本文所述)的一个或多个模块,并且可以被实施为在一个或多个处理设备上运行的指令集。
在一些示例中,存储器迁移模块371可以是“通用的”,并且包含在不同类型的硬件和物理主机(例如那些包含不同型号的处理器的硬件和物理主机)上进行抽象和兼容的模块,并且理解由特定物理机器生成的特定存储器或其他错误代码。
图4示出了根据公开技术的各方面的方法或过程400。
方法400可包括由扫描器主动检测并向虚拟机管理器或管理程序转发与不可纠正的存储器错误相关的MCE。MCE信息由虚拟机管理器或管理程序解码并映射到受影响的存储页面,并因此映射到受影响的虚拟机。然后,虚拟机管理器或管理程序可以开始将VM迁移到另一设备的过程。这里已经描述了关于这些操作的进一步细节。
如框401所示,扫描器扫描主机的存储器以查找错误。
在框403,扫描器检测主机的存储器中的存储器错误。
在框405,扫描器在检测到存储器错误后生成错误信号。
在框407,扫描器将错误信号传输到主机的一个或多个处理器。
图5A-5D示出了从“源VM”到“目标VM”的实时存储器迁移的各个方面。如图5A-5D所示,迁移的各方面可以相对于时间来描述,例如“复制前”和“复制后”。此外,在实时存储器迁移期间,可以描述源VM和目标VM的操作状态。在一些示例中,并且如在图5A-5D中使用的,“时间箭头”从左到右顺序地移动到未来,指示可以进行动作块的示例。然而,本领域技术人员将认识到过程的顺序可以交换或颠倒,并且某些过程可以重复。
如在图5A-5D中所使用的,“源VM”可以是从中迁移数据或信息的虚拟机,以及“目标VM”可以是数据或信息被迁移到的虚拟机。在一些示例中,“源VM”可以与特定物理机相关联或在其上运行,例如主机210。在一些示例中,一旦在与源VM相关联的物理机上出现特定错误,例如上述MCE,方法500就可以开始。“源”可以指源VM或对应于源VM的主机,以及“目标”可以指目标VM或对应于目标VM的目标机器。
本领域技术人员将认识到,关于图5A-5D描述的方法的具体实施方式可以变化,并涉及一个或多个软件模块、API、RPC,并使用一种或多种类型的数据结构、日志、二进制结构和硬件来执行该方法。
图5A示出了示例方法500。图5A中示出了源VM 510和目标VM 515。总之,方法500可由可在“复制前”阶段和“复制后”阶段内概念化的操作组成。方法500可以由参考图5B-5D描述的过程的任意组合组成,包括方法520、方法530和方法540。
在复制前阶段,“客户存储器”可以被从源VM 510复制到目标VM 515。客户存储器可以包括在客户用户空间或访客用户应用中创建的存储器。在一些示例中,客户存储器也可以指底层物理存储器,该底层物理存储器与属于特定的客户用户空间或虚拟机实例的特定虚拟存储器相对应。在复制前阶段期间,源VM 510在相关联的源物理机上运行。在此阶段,一个或多个处理器将客户存储器复制到目标。例如,存储器内容被复制到网络缓冲区,并经由RPC协议通过网络(例如,图1的网络160)发送到目标VM 515,其中目标VM上有对应的RPC接收器线程来接收客户存储器并将接收的客户存储器存储到相应的客户物理地址中。
如图5A所示,在复制前和复制后期间,源或目标可能会进入停电(brownout)期,在此期间,尽管正在进行迁移,但VM不会暂停。在此阶段,客户执行可能会因例如脏跟踪或复制后网络页调入(page-ins)等原因而变慢。
图5B示出了方法500或方法520与“复制前”阶段相关的方面。可以使用一个或多个存储器迁移模块,这些存储器迁移模块可以是读取、写入和跟踪存储器和存储页面的指令组。方法520可以在源虚拟机“活动”或活跃时执行,从而允许用户在进行方法520时继续使用虚拟机。
如图5B所示,在从源迁移到目标的过程中,由于源虚拟机上发生的用户进程或其他处理,某些存储页面可能会被修改。这些差异是可以追踪的。在客户存储器被转移期间,已经被修改的存储页面可以被称为“脏页面”。在一些示例中,在复制前阶段只能传输特定页面的子集。在某些情况下,中毒页面可能包括脏页面的子集,但这种脏页面将被跳过或不作为迁移目标上常规脏页面处理的一部分来被处理。
可以在源VM 510上读取客户存储器,并将其写入目标VM 515的客户存储器。在一些示例中,读取和写入过程可以通过使用一个或多个远程过程调用或RPC来进行。在一些示例中,远程过程调用可以使用指向特定存储器内容的指针来标识要从源VM 510复制到目标VM 515的物理存储器或虚拟存储器的一个或多个部分。
在一些示例中,回弹缓冲区可以用作传输的一部分。回弹缓冲区是一种存储器类型,它驻留在架构上足够低的存储器中,以便处理器从中复制数据和向其中写入数据。可以在回弹缓冲区中分配页面来组织存储器。作为增量更新“脏位图”(dirty bitmap)和复制脏页面的一部分,存储器迁移模块可以重复地多次通过存储器和脏页面。
在一些示例中,还可以跟踪和识别“中毒页面”或包含不可恢复错误的页面。在一些示例中,“中毒”页面可以选择性地从存储器迁移过程和脏页面中被排除。在一些示例中,在发现MCE时,可以将与该MCE相关联的存储页面标记为中毒。存储器迁移模块可以通知存储器总线特定页面为“中毒”,并使得存储器总线避免将该存储器从源复制到目标。
方法520还可以包括校验和的生成。将客户存储器从源写入目标后,可以生成校验和。可以在源存储页面和相关的目标存储页面上生成校验和,以确保该存储页面的转移没有发生错误。在一些示例中,对于中毒页面,可以跳过校验和生成或校验和检查。
方法520可以包含以下或类似的被描述为伪代码的过程:
换句话说,方法520可以实现对脏存储页面的跟踪,并且在没有实施“断电(blackout)”过程时,准备好脏存储页面日志,并且对于每个脏存储页面日志,将与该脏存储页面日志中的变化相关的更新从源发送到目标,例如通过位图。此外,作为方法520的一部分,校验和以及对变化的跟踪可以由存储器迁移模块来执行。
图5C示出了断电期间方法500或方法530的各方面。在断电期间,源处于“暂停”状态,用户将无法操作或使用源虚拟机。在方法530期间,还可以跟踪并减去中毒页面。
方法530可以在断电期间开始时或源VM暂停时开始。存储器迁移模块可以遍历源VM的存储器以识别最新的存储器或断电前的“最后存储器”,并将脏位图发送到目标。
在方法530期间,与中毒页面相关的信息或中毒页面本身可以被复制。由于预计中毒页面是罕见的,因此在一些示例中,可以使用不同于“位图”的结构来传输中毒页面或与中毒页面相关的信息以限制存储器开销。在一些示例中,中毒页面可以仅在封锁期开始时被发送一次,因为对中毒页面的更改预计最小并且中毒页面本身预计很少。
方法530可以包含以下或类似的被描述为伪代码的过程:
换句话说,在方法530中,可以读取一个或多个存储器日志,并且通过读取存储器日志,仅可以复制除中毒页面之外的脏页面。
图5D示出了方法500或方法540的各方面,其可涉及“复制后”阶段。在该阶段,某些信息已经从源转移到目标。在该阶段,在源上运行的虚拟机现在可以在目标上运行。在该阶段,目标上运行的虚拟机可能与源上运行的虚拟机不同,因为脏存储页面和中毒的存储页面尚未传输。
在复制后的期间或作为方法540的一部分,可以用最终脏位图来初始化“需求分页”。“需求分页”控件可以用相同的脏位图初始化后台获取器模块。如上所述,该位图可以已经知道或包含被减去的中毒页面的列表。
在复制后的期间或作为方法540的一部分,尚未从源被获取或迁移的存储页面的后台获取可以由后台获取器模块或存储器迁移模块访问。
在一些示例中,在目标上,根据尚未从目标转移到源的特定存储页面的要求,远程存储器访问(RMA)或其他远程过程调用可用于目标去访问尚未迁移到目标的存储页面。
在目标处接收到存储页面后,当没有MCE错误发生或与该特定存储页面相关联时,可以为获得的存储器内容生成校验和。该校验和可用于验证存储器迁移过程是否正确进行。
方法540可以包含以下过程或类似的过程,这些过程可以被描述为伪代码:
如上所示,以上公开的技术提供了用于在分布式计算环境中主动检测、遏制不可纠正的存储器错误并从中恢复的技术、系统和装置。公开技术的一个方面包括由主机的扫描器来扫描主机的存储器以查找错误。在扫描器检测到错误后,扫描器可以生成错误通知。扫描器可以向主机的一个或多个处理器发送错误通知以实施缓解技术。
除非另有说明,否则前述替代示例并不相互排斥,而是可以以各种组合来实施以实现独特的优势。由于在不脱离权利要求所定义的主题的情况下,可以利用上述特征的这些和其他变型和组合,因此前面对实施例的描述应当被视为对权利要求所定义的主题的说明而非限制。此外,本文描述的示例的提供以及措辞为“例如”、“包括”等的条款不应被解释为将权利要求的主题限制于特定示例;相反,这些示例仅旨在说明许多可能实施例中的一个。此外,不同附图中的相同附图标记可以标识相同或相似的元件。

Claims (20)

1.一种用于在云计算环境中主动检测存储器错误的方法,其特征在于,包括:
由主机的扫描器扫描所述主机的存储器以查找错误;
由所述扫描器检测所述主机的所述存储器中的存储器错误;
由所述主机的一个或多个处理器生成机器检查异常(MCE);以及
由所述一个或多个处理器向在所述主机上执行的内核提供所述MCE。
2.根据权利要求1所述的方法,其特征在于,所述扫描由所述扫描器连续地进行。
3.根据权利要求1所述的方法,其特征在于,所述扫描是只读扫描。
4.根据权利要求1所述的方法,其特征在于,所述存储器错误是不可纠正的存储器错误。
5.根据权利要求1所述的方法,其特征在于,所述MCE包括所述存储器的位置的指示,在所述存储器的位置,所述存储器错误被所述扫描器检测到。
6.根据权利要求1所述的方法,其特征在于,进一步包括基于所述扫描器检测到所述存储器错误的所述存储器的位置,将被确定为与所述存储器错误相关联的一个或多个存储页面识别为一个或多个中毒存储页面。
7.根据权利要求6所述的方法,其特征在于,进一步包括隔离所述主机对所述一个或多个中毒存储页面的访问。
8.根据权利要求6所述的方法,其特征在于,进一步包括:
接收页面故障,所述页面故障与在所述主机上执行的虚拟机的客户做出的读取请求相关联;以及
由所述内核向所述虚拟机的管理程序发送SIGBUS信号。
9.根据权利要求8所述的方法,其特征在于,进一步包括:
由所述管理程序生成机器检查异常;以及
向所述客户发送所述机器检查异常。
10.一种云计算系统,其特征在于,包括:
主机,能够支持一个或多个虚拟机;以及
一个或多个处理设备,被耦接到包含指令的存储器,所述指令使得所述一个或多个处理设备:
扫描所述主机的存储器以查找错误;
检测所述主机的所述存储器中的存储器错误;
生成机器检查异常(MCE);以及
将所述MCE发送到所述主机的内核,所述MCE包括与所述存储器错误相关联的信息。
11.根据权利要求10所述的系统,其特征在于,所述扫描被连续地进行。
12.根据权利要求10所述的系统,其特征在于,所述扫描是只读扫描。
13.根据权利要求10所述的系统,其特征在于,所述存储器错误是不可纠正的存储器错误。
14.根据权利要求10所述的系统,其特征在于,所述MCE包括所述存储器的位置的指示,在所述存储器的位置,所述存储器错误被所述扫描器检测到。
15.根据权利要求10所述的系统,其特征在于,所述指令进一步使得所述一个或多个处理器:
基于检测到所述存储器错误的所述存储器的位置,将被确定为与所述存储器错误相关联的一个或多个存储页面识别为一个或多个中毒存储页面。
16.根据权利要求15所述的系统,其特征在于,所述指令进一步使得所述一个或多个处理器隔离所述主机对所述一个或多个中毒存储页面的访问。
17.根据权利要求15所述的系统,其特征在于,所述指令进一步使得所述一个或多个处理器:
接收页面故障,所述页面故障与在所述主机上执行的虚拟机的客户做出的读取请求相关联;以及
向所述虚拟机的管理程序发送SIGBUS信号。
18.根据权利要求17所述的系统,其特征在于,所述指令进一步使得所述一个或多个处理器:
生成机器检查异常;以及
向所述客户发送所述机器检查异常。
19.一种存储指令的非暂时性计算机可读介质,其特征在于,当由一个或多个处理器执行时,所述指令使得所述一个或多个处理器:
扫描所述主机存储器以查找错误;
检测所述主机的所述存储器中的存储器错误;
生成机器检查异常(MCE);以及
将所述MCE发送到所述主机的内核,所述MCE包括与所述存储器错误相关联的信息。
20.根据权利要求19所述的非暂时性计算机可读介质,其特征在于,所述扫描被连续地进行。
CN202280067853.XA 2022-03-15 2022-10-28 通过主动的存储器中毒恢复来防止存储器错误 Pending CN118076946A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/695,406 US11977431B2 (en) 2022-03-15 2022-03-15 Memory error prevention by proactive memory poison recovery
US17/695,406 2022-03-15
PCT/US2022/048188 WO2023177421A1 (en) 2022-03-15 2022-10-28 Memory error prevention by proactive memory poison recovery

Publications (1)

Publication Number Publication Date
CN118076946A true CN118076946A (zh) 2024-05-24

Family

ID=84487788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280067853.XA Pending CN118076946A (zh) 2022-03-15 2022-10-28 通过主动的存储器中毒恢复来防止存储器错误

Country Status (4)

Country Link
US (2) US11977431B2 (zh)
EP (1) EP4374259A1 (zh)
CN (1) CN118076946A (zh)
WO (1) WO2023177421A1 (zh)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020800B2 (en) * 2002-01-24 2006-03-28 Hewlett-Packard Development Company L.P. System and method for memory failure recovery using lockstep processes
US7865762B2 (en) * 2007-12-04 2011-01-04 Intel Corporation Methods and apparatus for handling errors involving virtual machines
JP5161696B2 (ja) 2008-08-07 2013-03-13 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
JP5574230B2 (ja) 2010-04-28 2014-08-20 株式会社日立製作所 障害処理方法および計算機
CN104115125B (zh) 2011-12-29 2017-12-01 英特尔公司 安全的错误处理
US9317360B2 (en) * 2011-12-29 2016-04-19 Intel Corporation Machine check summary register
US9026865B2 (en) 2012-06-11 2015-05-05 Unisys Corporation Software handling of hardware error handling in hypervisor-based systems
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US9507727B2 (en) 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US20150058520A1 (en) 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9183035B2 (en) 2013-11-08 2015-11-10 International Business Machines Corporation Virtual machine migration with swap pages
US9552233B1 (en) 2015-09-10 2017-01-24 Red Hat Israel, Ltd. Virtual machine migration using free page hinting
US10275272B2 (en) 2016-06-20 2019-04-30 Vmware, Inc. Virtual machine recovery in shared memory architecture
US10296416B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
US10544370B2 (en) * 2016-08-15 2020-01-28 Baker Hughes, A Ge Company, Llc Enhanced bitumen recovery, separation and water clarification process
US10671465B2 (en) * 2016-11-28 2020-06-02 Intel Corporation Serializing machine check exceptions for predictive failure analysis
JP2019016135A (ja) 2017-07-06 2019-01-31 富士通株式会社 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法
US10521149B2 (en) 2018-05-30 2019-12-31 Red Hat, Inc. Memory poisoning support for free page hinting
US10817333B2 (en) 2018-06-26 2020-10-27 Nutanix, Inc. Managing memory in devices that host virtual machines and have shared memory
US10725853B2 (en) * 2019-01-02 2020-07-28 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US20200218599A1 (en) * 2019-01-09 2020-07-09 Hewlett Packard Enterprise Development Lp Methods and systems for smart memory data integrity checking
US11113094B1 (en) 2019-08-28 2021-09-07 Parallels International Gmbh Physical memory management for virtual machines
US11169870B2 (en) 2020-01-15 2021-11-09 Vmware, Inc. Managing the migration of virtual machines in the presence of uncorrectable memory errors
US11544153B2 (en) * 2020-03-12 2023-01-03 International Business Machines Corporation Memory error handling during and/or immediately after a virtual machine migration
US20210294707A1 (en) 2020-03-20 2021-09-23 Nvidia Corporation Techniques for memory error isolation
US11681455B2 (en) 2021-07-22 2023-06-20 Dell Products L.P. Shadow live migration over a smart network interface card

Also Published As

Publication number Publication date
US11977431B2 (en) 2024-05-07
US20230297454A1 (en) 2023-09-21
EP4374259A1 (en) 2024-05-29
WO2023177421A1 (en) 2023-09-21
US20240231980A1 (en) 2024-07-11

Similar Documents

Publication Publication Date Title
US11669388B2 (en) Managing the migration of virtual machines in the presence of uncorrectable memory errors
US11960366B2 (en) Live migrating virtual machines to a target host upon fatal memory errors
US8219851B2 (en) System RAS protection for UMA style memory
US9448895B2 (en) Recording activity of software threads in a concurrent software environment
US20230342268A1 (en) Uncorrectable Memory Error Recovery For Virtual Machine Hosts
US11853172B2 (en) Virtual machines recoverable from uncorrectable memory errors
US11226875B2 (en) System halt event recovery
US11977431B2 (en) Memory error prevention by proactive memory poison recovery
US11947420B2 (en) Hardware memory error tolerant software system
Le Resilient virtualized systems
Jann et al. An os-hypervisor infrastructure for automated os crash diagnosis and recovery in a virtualized environment
Jann et al. Towards an immortal operating system in virtual environments
Wang et al. kMemvisor: flexible system wide memory mirroring in virtual environments

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