CN111656331B - 在系统中的垃圾收集处理期间从故障中恢复的方法和装置 - Google Patents

在系统中的垃圾收集处理期间从故障中恢复的方法和装置 Download PDF

Info

Publication number
CN111656331B
CN111656331B CN201980010582.2A CN201980010582A CN111656331B CN 111656331 B CN111656331 B CN 111656331B CN 201980010582 A CN201980010582 A CN 201980010582A CN 111656331 B CN111656331 B CN 111656331B
Authority
CN
China
Prior art keywords
garbage collection
log
target slot
transaction
slot
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.)
Active
Application number
CN201980010582.2A
Other languages
English (en)
Other versions
CN111656331A (zh
Inventor
A·古普塔
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111656331A publication Critical patent/CN111656331A/zh
Application granted granted Critical
Publication of CN111656331B publication Critical patent/CN111656331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/073Error 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 memory management context, e.g. virtual memory or cache management
    • 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/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/1474Saving, restoring, recovering or retrying in transactions
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

实施例提供了一种用于在系统中的垃圾收集处理期间从故障中恢复的方法,该系统包括由处理器事务性地执行时间顺序的垃圾收集,记录日志结构的目标槽内与垃圾收集事务相关联的特定偏址。跳过从由垃圾收集事务记录的日志结构的目标槽中的初始偏址直到目标槽的结尾的记录。

Description

在系统中的垃圾收集处理期间从故障中恢复的方法和装置
技术领域
本发明一般地涉及管理日志结构化存储系统。特别地,本发明提供在系统中的垃圾收集处理期间从故障中恢复。
背景技术
典型的日志结构存储系统以时间顺序将记录数据存储在“日志”中。这些典型的系统允许基本的原语操作,例如插入、更新、删除、读取。数据的每次更新导致在“日志”的末尾插入新记录。每次删除导致在日志末尾插入逻辑删除对象。另外,后台垃圾收集(GC)过程压缩数据,回收不包含有效数据的空间。然而,在垃圾收集期间从故障中恢复可能是个问题。
因此,在本领域中需要解决上述问题。
发明内容
从第一方面来看,本发明提供了一种用于在系统中的垃圾收集处理期间从故障中恢复的方法,包括:由处理器事务性地执行时间顺序垃圾收集;记录与所述垃圾收集事务相关联的日志结构的目标槽内的特定偏址;以及跳过从由所述垃圾收集事务记录的所述日志结构的所述目标槽中的初始偏址直到所述目标槽的结尾的记录。
从另一方面来看,本发明提供了一种装置,包括:存储器,存储指令;以及处理器,执行指令以:事务性地执行时间顺序垃圾收集,记录与所述垃圾收集事务相关联的日志结构的目标槽内的特定偏址;以及跳过从由所述垃圾收集事务记录的所述日志结构的所述目标槽中的初始偏址直到所述目标槽的结尾的记录,其中所述处理器从在系统中垃圾收集处理期间发生的故障中恢复。
从另一方面来看,本发明提供了一种用于在系统中的垃圾收集处理期间从故障中恢复的计算机程序产品,该计算机程序产品包括计算机可读存储介质,其可由处理电路读取并且存储用于由处理电路执行以便执行用于执行本发明的步骤的方法的指令。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行本发明的步骤。
实施例涉及在按时间排序的日志结构的键-值储存器中的垃圾收集期间从故障中的适当恢复。一个实施例提供了一种用于在按时间顺序排序的日志结构化键-值储存器中的垃圾收集期间从故障中恢复的方法,该方法包括由处理器事务性地执行按时间顺序的垃圾收集。跳过从由垃圾收集事务记录的日志结构的目标槽中的初始偏址直到目标槽的结尾的记录。
参考以下描述、所附权利要求和附图,将理解本发明的这些和其它特征、方面和优点。
附图说明
现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:
图1描绘了根据一个实施例的云计算环境;
图2描绘了根据一个实施例的抽象模型层的集合;
图3是根据一个实施例的用于日志结构化存储系统中的回顾性快照的网络体系结构;
图4示出了根据一个实施例的可以与图1的服务器和/或客户端相关联的代表性硬件环境;
图5是示出根据实施例的用于在日志结构化存储系统中的按时间顺序排序的日志结构化键-值储存器中的垃圾收集期间从故障中恢复的处理器的框图;
图6示出了根据一个实施例的垃圾收集期间的初始系统状态;
图7示出了根据一个实施例的在垃圾收集期间系统崩溃时的系统状态;
图8示出了根据一个实施例的在垃圾收集的回滚之后的系统状态;
图9示出根据一个实施例的在垃圾收集回滚期间修复断开的反向链的系统状态;
图10示出了根据一个实施例的用于在按时间顺序排序的日志结构化键-值储存器中的垃圾收集期间从故障中恢复的过程的框图。
具体实施方式
出于说明的目的给出对各种实施例的描述,但是不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
预先理解,尽管本公开包括云计算的详细描述,但是本文中记载的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
一个或多个实施例涉及在按时间排序的日志结构的键-值储存器(store)中的垃圾收集期间从故障中的适当恢复。一个实施例提供了一种用于在按时间顺序排序的日志结构键值储存器中的垃圾收集期间从故障中恢复的方法,该方法包括由处理器事务性地执行按时间顺序的垃圾收集。跳过从由垃圾收集事务记录的日志结构的目标槽中的初始偏址直到目标槽的结尾的记录。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机(VM)和服务)的共享池的方便的按需网络访问,这些可配置计算资源可以用最少的管理工作或与服务提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地按需自动地供应计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。
广域网接入:能力在网络上可用,并且通过促进由异构、薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不了解所提供资源的确切位置,但可能能够在较高抽象级(例如,国家、州或数据中心)处指定位置。
快速弹性:可以快速且弹性地提供能力,并且在一些情况下,自动地快速向外扩展以及快速释放以快速向内扩展。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动消费者账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。资源使用可以被监视、控制和报告,从而为所利用服务的提供者和消费者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力能够使用在云基础设施上运行的提供者的应用。应用程序可通过瘦客户机接口,诸如web浏览器(例如,基于web的电子邮件)从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至单独应用能力的底层云基础结构,可能的例外是有限的消费者专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础结构上的能力,所述消费者创建或获取的应用是使用由提供者支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力能够提供处理、存储、网络和其它基本计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使能数据和应用可移植性(例如,用于云之间的负载平衡的云突发传输)的标准化或私有技术绑定在一起。
云计算环境是面向集中于无状态、低耦合、模块性和语义互操作性的服务。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图2中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66.在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪以及用于消耗这些资源的开帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及在按时序排序的日志结构化键-值储存器中GC期间从故障中恢复的处理96。如上所述,关于图2描述的所有前述示例仅是说明性的,并且本发明不限于这些示例。
应当理解,如本文所述的一个或多个实施例的所有功能通常可由处理系统300(图3)或自主云环境410(图4)执行,其可被有形地体现为硬件处理器并具有程序代码模块。然而,对于非实时处理来说不必如此。相反,对于非实时处理,这里所叙述的功能可以由图2中所示的层60、70、80和90中的任何层来执行/实现和/或赋能。
重申,尽管本公开包括关于云计算的详细描述,但本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例可以用现在已知或以后开发的任何类型的集群计算环境来实现。
图3示出了根据一个实施例的网络架构300。如图3所示,提供了多个远程网络302,包括第一远程网络304和第二远程网络306。网关301可耦合在远程网络302与邻近网络308之间。在本网络架构300的上下文中,网络304、306可以各自采取任何形式,包括但不限于LAN、诸如因特网的WAN、公共交换电话网络(PSTN)、内部电话网络等。在使用中,网关301用作从远程网络302到邻近网络308的入口点。这样,网关301可以用作路由器和交换机,路由器能够引导到达网关301的给定数据分组,交换机为给定分组提供进出网关301的实际路径。
进一步包括耦合到近端网络308的至少一个数据服务器314,其可经由网关301从远程网络302访问。应当注意,数据服务器314可以包括任何类型的计算设备/组件。多个用户设备316耦合到每个数据服务器314。这样的用户设备316可以包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其他类型的包含逻辑的设备。应当注意,在一些实施例中,用户设备311也可以直接耦合到任何网络。
外围设备320或一系列外围设备320,例如传真机、打印机、扫描仪、硬盘驱动器、联网和/或本地存储单元或系统等,可以耦合到网络304、306、308中的一个或多个。应当注意,数据库和/或附加的组件,可以与耦合到网络304、306、308的任何类型的网络元件一起使用,或者可以集成到与耦合到网络304、306、308的任何类型的网络元件。在本说明书的上下文中,网络元件可以指网络的任何组件。
根据一些方法,本文描述的方法和系统可以利用和/或在虚拟系统和/或系统上实现,所述虚拟系统和/或系统仿真一个或多个其他系统,诸如仿真IBM z/OS环境的UNIX系统、虚拟地托管MICROSOFT WINDOWS环境的UNIX系统、仿真z//>环境的MICROSOFTWINDOWS系统等。在一些实施例中,可以通过使用VMWARE软件来实现这种虚拟化和/或仿真。Microsoft和Windows是Microsoft(微软)公司在美国、其他国家或二者的商标。IBM和z/OS是国际商业机器公司在全世界的许多管辖区注册的商标。
图4示出了根据一个实施例的与图3的用户设备416和/或服务器314相关联的代表性硬件系统400环境。在一个示例中,硬件配置包括具有诸如微处理器的中央处理单元410的工作站,以及经由系统总线412互连的多个其它单元。图4所示的工作站可以包括随机存取存储器(RAM)414、只读存储器(ROM)416、用于将诸如盘存储单元420的外围设备连接到总线412的I/O适配器418、用于将键盘424、鼠标426、扬声器428、麦克风432和/或诸如触摸屏、数字照相机(未示出)等的其它用户接口设备连接到总线412的用户接口适配器422、用于将工作站连接到通信网络435(例如,数据处理网络)的通信适配器434和用于将总线412连接到显示设备438的显示适配器436。
在一个示例中,工作站上可以驻留有操作系统,诸如MICROSOFT WINDOWS操作系统(OS)、MAC OS、OS等。在一个实施例中,系统400采用基于/>的文件系统。应当理解,除了所提及的那些之外,其他示例也可以在平台和操作系统上实现。这样的其它示例可包括使用JAVA、XML、C和/或C++语言或其它编程语言以及面向对象的编程方法编写的操作系统。也可以使用已经变得越来越多地用于开发复杂应用的面向对象编程(OOP)。UNIX是开放团体(The Open Group)在美国和其它国家的注册商标。Java和所有基于Java的商标和标志是甲骨文(Oracle)公司和/或其分支机构的商标或注册商标。
图5是示出根据实施例的用于在日志结构化存储系统中的按时间排序的日志结构化键-值储存器中的GC期间从故障中恢复的处理节点500的框图。术语“垃圾收集”(GC)是指收回由日志中的过时的(staled)条目占用的“磁盘空间”。例如,当插入记录时,将条目添加到日志的末尾,当删除同一记录时,将逻辑删除条目添加到日志的末尾。逻辑删除条目是指由插入创建的磁盘上数据的原始位置。由原始插入的记录占用的磁盘空间可以被垃圾收集(假设系统不维护较旧版本)。过时的数据可能是已被删除或更新的记录的结果。因为不再需要在日志中维护较旧版本的数据,所以更新会导致数据过时。注意,在日志结构化储存器中,每一个插入、更新或删除操作都会导致一条记录被插入到日志的末尾。
在一个实施例中,处理节点500包括一个或多个处理器510、垃圾收集接口530和存储器520。在一个实施例中,每个处理器510执行用于在日志结构化存储系统中的按时间排序的日志结构化键-值储存器中的GC期间从故障中恢复的处理。
在一个实施例中,当日志结构化存储系统中的处理节点500从故障中恢复时,需要重建内存索引(in-memory index)。为此,从开始直到结尾重放存储器520中的日志。如果在GC操作的中间发生故障,则需要清理。清理可以由处理器510和垃圾收集接口530立即执行,或者可以最终在延迟的时间完成。在没有清理的情况下,就会生成额外的垃圾,其最终需要被处理并且可能影响恢复时间。清理必须考虑任何“脏读取”(dirty-reads)。在GC操作期间可能已经发生的更新(Update(s))/删除(Delete(s))操作:可能指向“垃圾收集目标槽”。因此,GC回滚除了回滚目标槽上的内容,还必须“修复”断开的链。
在一个实施例中,由垃圾收集接口530作为事务来执行GC。事务处理将信息处理分成被称为事务的单独、不可细分的操作。每个事务必须作为一个完整单元成功或失败,并且永远不能仅仅部分完成。在一个实施例中,垃圾收集接口530在失败的情况下执行GC事务的回滚。GC事务记录包括:<目标槽(TS),牺牲槽(VS),目标槽中的开始偏址(BO)>。在一个实施例中,GC目标区是GC目标槽上的<BO,槽的结尾>区。GC事务记录GC事务的开始和结束。
在一个实施例中,垃圾收集接口530如下地执行GC回滚。垃圾收集接口530读取恢复日志以标识未完成的目标槽和牺牲槽。垃圾收集接口530开始索引重建,使得:1)如果某槽是GC目标槽且偏址>=BO,则跳过,直到槽的结尾,并且继续到下一个槽;2)如果某记录(更新或删除)指向(反向指针)一个GC目标区域:则a)读取该GC目标区域中被指向的位置;b)插入一个新的逻辑删除(tombstone)条目以在GC目标区域中的记录中保留一个反向指针(指向前一个地址)。接着,垃圾收集接口530结束索引重建,将从偏址BO到到槽的结束的目标槽TS归零,并将一个“垃圾收集事务的异常中止记录”插入恢复日志中。在恢复的结束时,系统状态与GC处理之前的系统状态相同。
图6示出了根据一个实施例的在GC期间的示例600初始系统状态。在示例600的右侧示出索引610,包括左列中的键和右列中的槽映射。在一个示例中,K1指槽1 620和偏址2;K2指槽1 620和偏址3,等等。在示例600中,所示的槽包括槽1 620、槽51 630和槽3640。牺牲槽VS被示为槽3 640,而目标槽TS被示为槽51 630。反向指针链650示出了从槽3 640k8到槽1 620k8的指针。
图7示出了根据实施例的在GC期间系统崩溃时的示例700系统状态。在示例700中,槽4 750示出了kl8和指向槽51 630的反向指针链770,以及槽51 630中的具有指向槽3 640和偏址1的前向指针链760的k8。
图8示出了根据实施例的GC回滚之后的系统状态的示例800。如图所示,从槽5 750到槽51 630的反向指针链770断开。
图9示出了根据一个实施例的在GC回滚期间系统状态修复打断开的反向链的示例900。如图所示,反向指针链770断开。在示例900中,为了修复断开的反向链770,槽4 750中的逻辑删除k8已经添加了指向槽3 640、偏址1的反向指针链960。
图10示出了根据一个实施例的用于在按时间排序的日志结构化键-值储存器中的GC期间从故障中恢复的过程1000的框图。在一个实施例中,过程1000中的框1010包括由处理器(例如,由图5的处理器510)事务性地执行按时间顺序的GC。在框1020,进程1000记录与GC事务相关联的日志结构的目标槽(TS)内的特定偏址。在框1030,进程1000跳过从该GC事务所记录的日志结构的TS中的初始偏址直到该TS的结尾的记录。
在一个实施例中,在过程1000中,系统可以是按时间排序的日志结构化键-值存储系统。在一个实施例中,过程1000还可以包括在单独的恢复日志上记录GC事务。过程1000可另外包括将与未完成的GC操作(例如,失败的事务)相关联的日志结构的TS的区域归零。在一个实施例中,过程1000可以包括通过在恢复日志中写入异常中止记录来中止GC事务。
在一个实施例中,过程1000可包括提供更新操作,以与日志结构的键-值储存器中的GC并发地进行,同时通过在GC期间在故障之后将系统恢复到一致的状态来维持时间顺序。
在一个实施例中,过程1000可包括让删除操作与日志结构化键-值储存器中的GC并发地进行,与此同时通过在GC期间的故障之后将系统恢复到一致的状态来维持按时间的顺序。
如本领域技术人员将理解的,本发明的各方面可以被实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,其在这里可以统称为"电路"、"模块"或"系统"。此外,本发明的各方面可以采取在其上包含计算机可读程序代码的一个或多个计算机可读介质中包含的计算机程序产品的形式。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如但不限于,电、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序。
计算机可读信号介质可以包括例如在基带中或者作为载波的一部分传播的数据信号,其中传播的数据信号具有在其中体现的计算机可读程序代码。这种传播信号可以采取多种形式中的任何一种,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质并且可以传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何计算机可读介质。
可以使用任何适当的介质来传输在计算机可读介质上包含的程序代码,所述介质包括但不限于无线、有线、光纤电缆、RF等或前述的任何适当组合。
用于执行本发明的各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言的常规过程编程语言。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。
参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。
这些计算机程序指令也可以存储在计算机可读介质中,其可以引导计算机、其他可编程数据处理装置或其他设备以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
权利要求中对单数元件的引用不是要表示“一个且仅一个”,除非明确地这样声明,而是表示“一个或多个”。当前已知或以后将为本领域普通技术人员所知的上述示例性实施例的元件的所有结构和功能等同物旨在被本权利要求所包含。本文的权利要求的要素不应根据美国法典(U.S.C)第35条第112款第6段的规定来解释,除非该要素使用短语“用于…的装置”或“用于…的步骤”来明确地陈述。
本文所用的术语仅是为了描述特定实施例的目的,而不是要限制本发明。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了本发明的描述,但是该描述不是穷举的或者将本发明限制为所公开的形式。在不背离本发明范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有各种修改的各种实施例,这些修改适合于所考虑的特定用途。

Claims (14)

1.一种用于在系统中的垃圾收集处理期间从故障中恢复的方法,包括:
由处理器事务性地执行按时间顺序的垃圾收集;
记录与所述垃圾收集事务相关联的日志结构的目标槽内的特定偏址,其中,所述垃圾收集事务的每个事务记录包括垃圾回收目标槽、牺牲槽和所述垃圾回收目标槽中的开始偏址;以及
跳过从由所述垃圾收集事务记录的所述日志结构的所述目标槽中的初始偏址直到所述目标槽的结尾的记录。
2.根据权利要求1所述的方法,其中所述系统包括按时间排序的日志结构的键-值储存系统,并且每个垃圾收集事务作为一个完整的单元成功或失败。
3.根据权利要求2所述的方法,还包括:
将所述垃圾收集事务记录在单独的恢复日志上,其中垃圾收集目标区是所述目标槽中的开始偏址到所述目标槽的结尾。
4.根据权利要求3所述的方法,还包括:
插入新的逻辑删除条目以在所述垃圾收集目标区域中的记录中保留反向指针;以及
将与未完成的垃圾收集操作相关联的日志结构的目标槽的区域清零。
5.根据权利要求4所述的方法,还包括:
通过在恢复日志中写入异常中止记录来中止所述垃圾收集事务。
6.根据权利要求2至5中任一项所述的方法,还包括:
执行更新操作以与日志结构化键-值储存器中的垃圾收集同时进行,同时通过在垃圾收集期间的故障之后将系统恢复到一致的状态来维持按时间的顺序。
7.根据权利要求6所述的方法,还包括:
执行删除操作以与所述日志结构化键-值储存器中的垃圾收集同时进行,同时通过在垃圾收集期间的故障之后将所述系统恢复到一致的状态来维持按时间的顺序。
8.一种用于在系统中的垃圾收集处理期间从故障中恢复的计算机可读存储介质,其可由处理电路读取并且存储用于由所述处理电路执行以用于执行根据权利要求1至7中任一项所述的方法的指令。
9.一种用于在系统中的垃圾收集处理期间从故障中恢复的装置,包括:
存储器,存储指令;以及
处理器,其执行所述指令以:
事务性地执行按时间顺序的无用单元收集,
记录与所述垃圾收集事务相关联的日志结构的目标槽内的特定偏址,其中,所述垃圾收集事务的每个事务记录包括垃圾回收目标槽、牺牲槽和所述垃圾回收目标槽中的开始偏址;以及
跳过从由所述垃圾收集事务记录的所述日志结构的所述目标槽中的初始偏址直到所述目标槽的结尾的记录,其中所述处理器从在系统中的垃圾收集处理期间发生的故障中恢复。
10.根据权利要求9所述的装置,其中,所述系统包括按时间排序的日志结构化键-值储存系统,并且每个垃圾收集事务作为一个完整的单元成功或失败。
11.根据权利要求10所述的装置,其中,所述处理器进一步执行包括将所述垃圾收集事务记录在单独的恢复日志上的指令,其中垃圾收集目标区是所述目标槽中的开始偏址到所述目标槽的结尾。
12.根据权利要求11所述的装置,其中,所述处理器还执行包括插入新的逻辑删除条目以在所述垃圾收集目标区域中的记录中保留反向指针的指令;以及将与未完成的垃圾收集操作相关联的所述日志结构的所述目标槽的区域清零的指令。
13.根据权利要求12所述的装置,其中,所述处理器还执行包括通过将异常中止记录写入恢复日志来中止所述垃圾收集事务的指令。
14.根据权利要求9至13中任一项所述的装置,其中,所述处理器还执行包括以下步骤的指令:
执行更新操作以与日志结构化键-值储存器中的垃圾收集同时进行,同时通过在垃圾收集期间的故障之后将系统恢复到一致的状态来维持按时间的顺序;以及
执行删除操作以与所述日志结构化键-值储存器中的垃圾收集同时进行,同时通过在垃圾收集期间的故障之后将所述系统恢复到一致的状态来维持按时间的顺序。
CN201980010582.2A 2018-02-23 2019-02-19 在系统中的垃圾收集处理期间从故障中恢复的方法和装置 Active CN111656331B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/904,180 2018-02-23
US15/904,180 US10642680B2 (en) 2018-02-23 2018-02-23 Chronologically ordered log-structured key-value store from failures during garbage collection
PCT/IB2019/051323 WO2019162828A1 (en) 2018-02-23 2019-02-19 A chronologically ordered log-structured key-value store from failures during garbage collection

Publications (2)

Publication Number Publication Date
CN111656331A CN111656331A (zh) 2020-09-11
CN111656331B true CN111656331B (zh) 2024-03-29

Family

ID=67685967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980010582.2A Active CN111656331B (zh) 2018-02-23 2019-02-19 在系统中的垃圾收集处理期间从故障中恢复的方法和装置

Country Status (6)

Country Link
US (2) US10642680B2 (zh)
JP (1) JP2021515301A (zh)
CN (1) CN111656331B (zh)
DE (1) DE112019000401B4 (zh)
GB (1) GB2583884B (zh)
WO (1) WO2019162828A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642680B2 (en) * 2018-02-23 2020-05-05 International Business Machines Corporation Chronologically ordered log-structured key-value store from failures during garbage collection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104063635A (zh) * 2014-07-02 2014-09-24 北京深思数盾科技有限公司 目标文件的保护方法及保护系统
CN105677297A (zh) * 2014-11-18 2016-06-15 龙芯中科技术有限公司 套锁实现方法及装置

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US7200623B2 (en) 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US9239763B2 (en) * 2012-09-28 2016-01-19 Oracle International Corporation Container database
US6728738B2 (en) * 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US7058670B2 (en) * 2002-12-20 2006-06-06 Sun Microsystems, Inc. Scalable, space-efficient, parallel remembered-sets
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US20090210429A1 (en) 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
US20100332240A1 (en) 2009-06-24 2010-12-30 Microsoft Corporation Decentralized account digest using signed electronic receipts
US9003159B2 (en) 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
US8412689B2 (en) 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8805984B2 (en) 2011-07-14 2014-08-12 Red Hat, Inc. Multi-operational transactional access of in-memory data grids in a client-server environment
JP2013033345A (ja) 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
CN103814362B (zh) 2011-09-30 2016-06-15 国际商业机器公司 用于分布式kvs系统的处理方法和系统
US8949190B2 (en) * 2011-11-07 2015-02-03 Sap Se Point-in-time database recovery using log holes
CN103164345B (zh) 2011-12-08 2016-04-27 光宝科技股份有限公司 固态存储装置遭遇断电后的数据存储方法
US9021421B1 (en) 2012-05-07 2015-04-28 Google Inc. Read and write barriers for flexible and efficient garbage collection
US20140136575A1 (en) * 2012-11-10 2014-05-15 Yuanyuan Zhao Log-structured garbage collection
US9400816B1 (en) 2013-02-28 2016-07-26 Google Inc. System for indexing collections of structured objects that provides strong multiversioning semantics
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US9519575B2 (en) 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US8683262B1 (en) 2013-06-21 2014-03-25 Terracotta Inc. Systems and/or methods for rapid recovery from write-ahead logs
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
WO2016024986A1 (en) 2014-08-15 2016-02-18 Hewlett-Packard Development Company, L.P. Three phase commit for a distributed file system
US9928264B2 (en) 2014-10-19 2018-03-27 Microsoft Technology Licensing, Llc High performance transactions in database management systems
US10210168B2 (en) 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure
US10083082B2 (en) 2015-09-07 2018-09-25 International Business Machines Corporation Efficient index checkpointing in log-structured object stores
CN107038131A (zh) 2016-02-04 2017-08-11 广明光电股份有限公司 固态硬盘断电保护装置及方法
CN107203552B (zh) 2016-03-17 2021-12-28 阿里巴巴集团控股有限公司 垃圾回收方法及装置
US10552404B2 (en) 2016-09-29 2020-02-04 International Business Machines Corporation Retrospective snapshots in log-structured storage systems
US10795779B2 (en) 2017-02-17 2020-10-06 Sap Se Asynchronous garbage collection in database redo log replay
US11210211B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management
US10783073B2 (en) * 2018-02-23 2020-09-22 International Business Machines Corporation Chronologically ordered out-of-place update key-value storage system
US10635523B2 (en) * 2018-02-23 2020-04-28 International Business Machines Corporation Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US10642680B2 (en) * 2018-02-23 2020-05-05 International Business Machines Corporation Chronologically ordered log-structured key-value store from failures during garbage collection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104063635A (zh) * 2014-07-02 2014-09-24 北京深思数盾科技有限公司 目标文件的保护方法及保护系统
CN105677297A (zh) * 2014-11-18 2016-06-15 龙芯中科技术有限公司 套锁实现方法及装置

Also Published As

Publication number Publication date
US20200183775A1 (en) 2020-06-11
JP2021515301A (ja) 2021-06-17
GB202013416D0 (en) 2020-10-14
DE112019000401T5 (de) 2020-10-22
CN111656331A (zh) 2020-09-11
WO2019162828A1 (en) 2019-08-29
DE112019000401B4 (de) 2022-01-05
US20190266043A1 (en) 2019-08-29
GB2583884A (en) 2020-11-11
US11163636B2 (en) 2021-11-02
US10642680B2 (en) 2020-05-05
GB2583884B (en) 2021-03-24

Similar Documents

Publication Publication Date Title
US10725976B2 (en) Fast recovery using self-describing replica files in a distributed storage system
CN111801661A (zh) 多主机分布式数据管理系统中的事务操作
US10324799B2 (en) Enhanced application write performance
US20150007169A1 (en) Deploying an application in a cloud computing environment
CN109906597B (zh) 向和从云网络中存储和取回受限制的数据集和非受限制的数据集
US10061665B2 (en) Preserving management services with self-contained metadata through the disaster recovery life cycle
CN111684437B (zh) 按时间顺序排序的错位更新键-值存储系统
US11150981B2 (en) Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US9904600B2 (en) Generating initial copy in replication initialization
US10552404B2 (en) Retrospective snapshots in log-structured storage systems
US10140054B2 (en) Retrospective snapshots in log structured storage systems
CN111656331B (zh) 在系统中的垃圾收集处理期间从故障中恢复的方法和装置
CN115485677A (zh) 在分布式数据存储环境中的安全数据复制
US11249967B1 (en) Database access performance improvement
US20200110819A1 (en) Low cost fast recovery index in storage class memory
CN115454562A (zh) 标识跨集群计算环境的资源锁定所有权
CN116724295A (zh) 基于日志流水线争用的数据库日志写入

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