CN112740186A - 对存储段应用日志 - Google Patents
对存储段应用日志 Download PDFInfo
- Publication number
- CN112740186A CN112740186A CN201980061784.XA CN201980061784A CN112740186A CN 112740186 A CN112740186 A CN 112740186A CN 201980061784 A CN201980061784 A CN 201980061784A CN 112740186 A CN112740186 A CN 112740186A
- Authority
- CN
- China
- Prior art keywords
- log
- computing system
- log record
- segment
- storage
- 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
Links
- 238000000034 method Methods 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 11
- 230000002085 persistent effect Effects 0.000 description 27
- 238000011084 recovery Methods 0.000 description 23
- 239000003795 chemical substances by application Substances 0.000 description 14
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004513 sizing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在存在对数据进行操作的主要计算系统、以及如果旧的主要计算系统发生故障则准备好被提升为新的主要计算系统的(多个)次要计算系统的情境中,使用日志服务计算系统来对存储段应用日志。数据被分离在共同地被分布在多个存储段服务器之间的存储段中,而不是使主要计算系统和次要计算系统中的每个计算系统在本地维持它们自己复制的整个数据。
Description
背景技术
如今各种服务在云计算环境中被提供。“云计算”是一种用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用以及服务)的共享池的普遍存在的、按需的网络访问的模型。云计算模型也可以采用各种应用服务模型的形式,例如,诸如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础架构即服务(“IaaS”)。云计算模型也可以使用不同的部署模型而被部署,诸如私有云、社区云、公共云、混合云等。软件即服务(“SaaS”)的一个类型被称为数据库即服务(DBaaS)。
常规的DBaaS通常被实现在包括一个主要计算节点和一个或多个次要计算节点(每个节点经常被提供为虚拟机)的架构内。主要计算节点操作数据库服务器,并且具有直接被附接的固态驱动,主要数据库服务器可以从该直接被附接的固态驱动读取或者向其写入。次要计算节点也操作数据库服务器并且也具有固态驱动,相应的次要数据库服务器可以从该固态驱动读取或者向其写入。主要计算节点上的数据被与次要计算节点同步。
次要计算节点提供以满足服务可用性目标为目的的冗余。如果主要计算节点将发生故障,则通过将次要计算节点中的一个次要计算节点提升为主要计算节点、并且实例化附加的次要计算节点来维持所需的冗余的级别,数据库的故障转移(failover)可以发生。
为了使主要计算节点处的数据与次要计算节点处的数据同步,要求从主要计算节点到次要计算节点的通信。主要计算节点保留在主要计算节点处发生的操作的日志。主要计算节点可以向次要计算节点发送日志记录(或者单独地或者作为块)。次要计算节点各自应用由主要计算节点指定的操作,并且将其确认回主要计算节点。一旦主要计算节点从法定数量(quorum)(例如,三个次要计算节点中的两个次要计算节点)接收回这样的确认,则主要计算节点已经将其数据与次要计算节点同步到以下程度:如果主要计算节点出现故障,则存在次要计算系统的大多数都将应用日志记录的保障。因此,在恢复的情况下,即使新提升的主要计算节点尚未应用日志记录,该新提升的主要计算节点也仍然可以通过咨询其他次要计算节点来使用当前数据更新自身。
本文中所要求保护的主题不限于解决任何缺点或者仅在诸如以上所描述的环境中操作的实施例。而是,提供该背景仅是为说明可以在其中实践本文中所描述的一些实施例的一个示例性技术领域。
发明内容
本文中所描述的至少一些实施例涉及在存在对数据进行操作的主要计算系统、以及如果旧的主要计算系统发生故障则准备好被提升为新的主要计算系统的(多个)次要计算系统的情境中,对存储段应用日志。但是,数据被分离到存储段中,这些存储段共同被分布在多个存储段服务器间,而不是使主要计算系统和次要计算系统中的每一个计算系统在本地维护它们自己的整个数据的经复制的副本。存储段服务器共同充当数据的集中式存储库。日志服务计算系统根据本文中所描述的原理来支持这点。
例如,当主要计算系统在数据上操作时,各种写操作被记录日志在各种日志记录中。作为示例,为了对存储段执行写操作,主要计算系统可以从适当的存储段服务器(或者,如果存储段被高速缓存,则从其自己的高速缓存)读取存储段,并且可以对该存储段的副本执行写操作。此外,为将该写操作记录日志,主要计算系统标识存储段的内容如何改变,在日志记录内记录增量改变和存储段的标识符,并且将该日志记录写入到持久日志(也许具有块中的其他日志记录)中。日志服务计算系统可以或者通过从持久日志中读取日志记录、或者通过从主要计算系统接收通信而注意日志记录的存在。
日志服务计算系统通过标识以下特定的存储段服务器来支持日志记录的应用:该存储段服务器被分配为存储包括要被写到的存储段的存储段的特定的集合。日志服务计算系统然后使特定的存储段服务器执行在该日志记录中所指定的特定的写操作。日志服务计算系统还可以使一个或多个次要计算系统对存在于(多个)次要计算系统上的存储段的副本执行特定的写操作。作为示例,日志服务计算系统可以从(多个)存储段服务器和(多个)次要计算系统接收针对日志记录的请求。日志服务计算系统然后可以向请求该日志记录的实体提供其意识到的日志记录。在一个实施例中,为了避免不一致的恢复,日志服务计算系统不提供尚未被证实已经被保存在持久性日志中的日志记录。
以这种方式处置日志记录具有许多技术优势。首先,数据(例如,数据库和对该用户数据上的操作记录日志的日志记录)不再局限于可能具有相对有限的存储容量的主要计算系统或次要计算系统自身。例如,如果计算系统是在虚拟机内执行的,则数据的大小常规上受限于最大虚拟机存储大小的大小。相反,日志记录被保存在集中式持久日志中。用户数据(例如,数据库)被存储在存储段服务器之间。用户数据越大,则可以存在越多的存储段服务器。因此,数据的大小是潜在地无限的。
此外,当存储段服务器使用由云计算环境提供的存储服务来存储它们各自的数据时,不需要执行数据大小规定(size of data)操作。例如,这样的数据大小规定操作可以是数据的全部的完整备份(或快照)的性能。常规地,主要计算系统和次要计算系统中的每个次要计算系统会必须通过在网络之上传输数据来分别执行完整备份。因此,本文中所描述的原理避免了数据大小规定操作,并且因此对于数据的更大大小更好地缩放。
附加地,由于以下,构建新的次要计算系统所花费的时间显著地被减少:新的次要计算系统不再需要具有直接被附接的卷,该卷具有数据的整个复本(replica)。相反,次要计算系统可以仅需要操作应用(例如,数据库服务器),以及相对小的高速缓存。此外,在其中主要计算系统向被附接到该存储服务中的卷写的情况下,用于确定日志记录是否已经恰当地被录入日志中的目的的法定数量的确立现在可以由存储服务处置。在这样的情况下,仅在存储服务已经确立日志记录已经被持久地写到适当数目的位置之后,向持久日志的写才完成。
本发明内容以简化的形式介绍了一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用于协助确定所要求保护的主题的范围。
附图说明
为了描述可以获得本发明的上述和其他优点和特征的方式,将通过参考在附图中示出的本发明的特定实施例来对以上简要描述的本发明进行更具体的描述。因此,这些附图仅描绘了本发明的示例实施例并且因此不应被认为对本发明的范围是限制性的。考虑到这一点,将参考附图描述和解释本发明的示例实施例,其中:
图1图示了在其中可以采用本文中所描述的原理的环境,该环境包括主要计算系统、一个或多个次要计算系统、数据被存储在其间的存储段服务器、持久性存储、以及用于应用由主要计算系统生成的日志记录的日志服务;
图2图示了用于生成日志记录和执行写操作的方法的流程图。
图3图示了日志记录,该日志记录包括日志序列号、对存储段的增量的改变的描述、以及改变被应用到的存储段标识符;
图4图示了被以多个日志记录填充的块;
图5图示了根据本文中所描述的原理的用于对存储段应用日志记录的方法的流程图;
图6图示了日志环境,在该日志环境中日志由以下两个组件组成:固定大小的日志部分和可增长的日志部分;
图7A图示了表示图6的日志环境的具体示例的日志环境,并且在该日志环境中固定大小的日志部分包括三个虚拟日志文件(每个都具有四个块),并且在该日志环境中可增长的日志部分在其中具有十八个虚拟日志文件;
图7B图示了表示图7A的日志环境在虚拟日志文件VLF19已经被降级(destage)、并且固定大小的日志部分的存储位置由后续的虚拟日志文件VLF22重用之后的后续状态的日志环境;
图7C图示了表示图7B的日志环境在检查点在该点处采取检查点之后、并且在块进一步被写至块22B并且包括块22B之后的后续状态的日志环境。
图7D图示了具有被插入到块中以表示被绑定到虚拟日志文件的写标记位的X和O的图7C的日志环境;以及
图8图示了在其中可以采用本文中所描述的原理的示例计算机系统。
具体实施方式
本文中所描述的至少一些实施例涉及在有在数据上操作的主要计算系统、以及准备好如果旧的主要计算系统发生故障则被提升为新的主要计算系统的(多个)次要计算系统的情境中,对存储段应用日志。但是,数据被分离到存储段中,这些存储段共同被分布在多个存储段服务器间,而不是使每个主要计算系统和次要计算系统在本地维护它们自己的整个数据的复制副本。存储段服务器共同充当数据的集中式存储库。日志服务计算系统根据本文中所描述的原理来支持这点。
例如,当主要计算系统在数据上操作时,各种写操作被记录日志在各种日志记录中。作为示例,为了对存储段执行写操作,主要计算系统可以从适当的存储段服务器(或者,如果存储段被缓存,则从其自己的高速缓存)读取存储段,并且可以对该存储段的副本执行写操作。此外,为将该写操作记录日志,主要计算系统表示存储段的内容如何改变,在日志记录内记录增量的变化和存储段的标识符,将该日志记录写入到持久日志(也许其他日志记录)中。日志服务计算系统可以或者通过从持久日志中读取日志记录,或者通过从主要计算系统接收通信而注意日志记录的存在。
日志服务计算系统通过标识以下特定的存储段服务器来来支持日志记录的应用:该存储段服务器被分配为存储包括要被写到的存储段的存储段的特定的集合。日志服务计算系统然后使特定的存储段服务器执行在该日志记录中所指定的特定的写操作。日志服务计算系统还可以使一个或多个次要计算系统对存在于(多个)次要计算系统上的存储段的副本执行特定的写操作。作为示例,日志服务计算系统可以从(多个)存储段服务器和(多个)次要计算系统接收针对日志记录的请求。日志服务计算系统然后可以其意识到的日志记录提供给请求该日志记录的实体。在一个实施例中,为了避免不一致的恢复,日志服务计算系统不提供尚未被证实已经被保存在持久性日志中的日志记录。
以这种方式处置日志记录具有许多技术优势。首先,数据(例如,数据库和对该用户数据上的操作记录日志的日志记录)不再局限于可能具有相对有限的存储容量的主要计算系统或次要计算系统自身。例如,如果计算系统是在虚拟机内执行的,则数据的大小常规上受限于最大虚拟机存储大小的大小。而是,日志记录被保存在集中式持久日志中。用户数据(例如,数据库)被存储在存储段服务器之间。用户数据越大,可以存在越多的存储段服务器。因此,数据的大小是潜在地无限的。
此外,当存储段服务器使用由云计算环境提供的存储服务来存储它们各自的数据时,不需要执行数据大小规定操作。例如,这样的数据大小规定操作可以是整个数据的完整备份(或快照)的执行。常规地,主要计算系统和次要计算系统中的每个次要计算系统会必须通过在网络之上传输数据来分别执行完整备份。因此,本文中所描述的原理避免了数据大小规定操作,并且因此对于数据的更大的大小更好地缩放。
附加地,由于以下,构建新的次要计算系统所花费的时间显著地被减少:新的次要计算系统不再需要具有直接被附接的卷,该卷具有数据的整个复本。而是,次要计算系统可以仅需要操作应用(例如,数据库服务器),以及相对小的高速缓存。此外,在其中主要计算系统向被附接到该存储服务中的卷写入的情况下,用于确定日志记录是否已经恰当地被录入日志中的目的的法定数量的确立现在可以由存储服务处置。在这样的情况下,仅在存储服务确立日志记录已经被持久地写到适当数目的位置之后,向持久日志的写才完成。
图1示出了可以在其中采用本文中所描述的原理的环境100。仅作为示例,环境100可以是网络,诸如或许是云计算环境。环境100包括在其上操作应用110A的主要计算系统110。作为示例,应用110A可以是数据库服务器应用。主要计算系统110可以是物理计算系统(诸如云计算环境中的计算节点),在这种情况下,主要计算系统110可以如下关于以下图8的计算系统800所描述的被构造。备选地或附加地,主要计算系统110可以是模拟计算系统的虚拟机。在主要计算系统110上运行的应用110A对用户数据执行写操作。例如,如果应用110A是数据库服务器,则用户数据会是数据库。
环境100还包括(多个)次要计算系统120。(多个)次要计算系统120中的每个次要计算系统操作一个相应的应用,该应用可以是正在主要计算系统110上被运行的同一应用的实例。例如,如果主要计算系统110上的应用110A是数据库服务器应用,则该数据库服务器应用的实例可以在(多个)次要计算系统120中的每个次要计算系统上运行。(多个)次要计算系统120每个都可以是物理计算系统(诸如云计算环境中的一个计算节点),在这种情况下,次要计算系统可以如以下关于图8的计算系统800所描述的被构造。备选地或附加地,每个(多个)次要计算系统120可以是模拟计算系统的虚拟机。
(多个)次要计算系统120可以包括任何数目的次要计算系统。在所图示的实施例中,存在所示出的两个次要计算系统121和122,每个次要计算系统分别操作对应的应用121A和122A。省略号123表示本文中所描述的原理不限于(多个)次要计算系统120的数目。如果主要计算系统110发生故障使得无法有效地恢复,则(多个)次要计算系统120中的一个次要计算系统会被提升为新的主要计算系统,从而允许被提升的计算系统能够执行写操作。因此,(多个)次要计算系统120允许环境100内存在内置冗余。如果次要计算系统被提升为主要计算系统,则新的次要计算系统可以被开始,以便替换被升级的计算系统,并且由此保持期望数目的(多个)次要计算系统120。另一方面,独立于主要计算系统110是否已经发生故障,次要计算系统可以随意从(多个)次要计算系统的集合被添加或者被删除。
当主要计算系统110对用户数据(例如,数据库)执行写操作时,主要计算系统110将这些数据操作记录日志(如由箭头101A表示的)到持久性日志131中。持久性日志131被保留,以使得环境100可以在故障的情况下恢复。现在将描述主要计算系统110向存储段(例如,用户数据的页面)写,同时持久地将该写操作记录日志的过程。
特别地,图2图示了用于生成日志记录并且执行写操作的方法200的流程图。作为示例,方法200可以由图1的主要计算系统110执行。主要计算系统首先读取特定的存储段(动作201)。这确保存储段的副本被带入主要计算系统的高速缓存中。该存储段可能先前已经由主要计算系统读取,在这种情况下,该存储段将已经在主要计算系统的高速缓存内。否则,主要计算系统从包含要被写到的存储段的相应存储段服务器执行读操作。例如,在图1中,主要计算系统110从存储段服务器142读取(如由箭头102表示的)存储段(例如,页面)。
然后,主要计算系统向该存储段的被读取的(例如,被高速缓存的)副本写(动作202)。并且,为了创建该写操作的日志记录(动作203),作为该写操作的一部分而被做出或者要被做出的增量改变被确定(动作211)。然后,主要计算系统创建包括增量改变的日志记录(动作212)。例如,图3示出了日志记录300,其包括日志序列号301、增量改变的描述302、以及该改变被应用到的存储段标识符303。日志序列号是唯一标识日志记录并且表示该日志记录在日志内的位置的数字。日志序列号通常是单调递增的数字,使得日志序列号越高,日志记录在日志内被放置的时间越近。日志记录被写入到持久性日志中(动作204)。例如,在图1中,如由箭头101A表示的,主要计算系统110将日志记录(例如,日志记录300)写入到持久性日志131中。
在一个实施例中,日志记录被组织成块。块是可以原子地被向其写入和从其读取的存储单元(即,一次——使得写或读或者针对整个块被完成,或者在根本不执行写的情况下被放弃)。典型的块大小在计算系统中将是恒定的,但是示例块大小包括512字节和4096字节。因为日志记录可能比块小得多,所以一个块可以包含多个日志记录。图4示出了被填充以多个日志记录401、402、403和404的块400。作为示例,图3的日志记录300可以是图4的日志记录402。省略号405表示框400可以包括适合给定日志记录的大小和块的大小的任何数目的块。可以说每个日志记录在块内占据一个“槽”。当将日志记录写到持久性日志时(如由图1的箭头101A和图2的动作204表示的),其可以是被写到持久性日志的日志记录的块(诸如块400)。因此,在将日志记录作为块写到持久性日志131之前,主要计算系统110可以等待一些数目的日志记录被生成。
返回到图1,环境100还包括日志服务计算系统132。日志服务计算系统132可以是物理计算系统,诸如以下关于图8所描述的计算系统800。备选地或附加地,日志服务计算系统132可以是虚拟机,或者或许可以是可执行组件,诸如以下关于图8所描述的可执行组件806。日志服务计算系统132帮助由主要计算系统110执行和记录日志的写操作被传播到适当的存储段服务器140以及被传播到(多个)次要计算系统120。
环境100还包括多个存储段服务器140。由应用110A在主要计算系统110上操作的数据跨存储段服务器140被散布。因此,每个存储段服务器用于服务仅与用户数据的一部分对应的存储段。存储段可以例如是数据页面。数据的每页可以包括多个块。
例如,如由图1中的箭头161表示的,存储段服务器141仅针对被分配的存储段集合151执行数据操作。此外,箭头162表示存储段服务器142仅针对其被分配的存储段集合152执行数据操作,箭头163表示存储段服务器143仅针对其被分配的存储段集合153执行数据操作,以及箭头164表示存储段服务器144仅针对其被分配的存储段集合154执行数据操作。省略号145和155表示本文中所描述的原理不限于存储段服务器的数目。此外,被分配给任何给定存储段服务器的存储段集合不需要是地址空间内的连续存储段。
然而,如果被分配给任何给定存储段的存储段(例如,页面)在用户数据的地址空间内是连续的,则标识哪个存储段服务器被分配以执行针对给定存储段的数据操作更加简单。此外,由于可以发出单个读操作以潜在地返回在用户数据的地址空间中连续的许多连续存储段,所以可以在连续存储段上更有效率地执行对连续存储段的读操作。在一个实施例中,用户数据在位于存储段服务器140之下的存储服务170内被表示。跨存储段服务器140被分布的用户数据可以维持与存储服务170上的用户数据相同的布局和结构。
存储段集合151至存储段集合155共同地被图示为存储段集合150。当存储段服务器140使用由云计算环境提供的存储服务170存储它们相应的数据时,执行数据大小操作的需要被消除。例如,这样的数据大小操作可以是数据的全部的完整备份的性能。常规地,主要计算系统和次要计算系统中的每个次要计算系统会必须通过在网络之上传输数据来分别执行完整备份。因此,本文中所描述的原理允许卓越的能力来向上缩放数据。然而,存储段集合151至存储段集合155的副本也可以被保留在相应的存储段服务器141至存储段服务器145中的每个存储段服务器处的高速缓存中。这允许对存储段的快速访问。但是,如果存储段在存储段服务器140的高速缓存中丢失(或者即使存储段服务器中的一个存储段服务器自身停机),则该存储段在云计算环境中的存储服务170中仍然可用。
图5图示了根据本文中所描述的原理的用于对存储段应用日志记录的方法500的流程图。方法500可以针对被标识为要被应用的多个日志记录中的每个日志记录而被执行。方法500的执行多次允许日志被应用到适当的存储段。即是说,在日志记录中被指定的写操作被应用到适当的存储段服务器内的存储段。作为示例,方法500可以由图1的日志服务计算系统132执行。方法500可以在图1的环境100内被执行,以便应用图3的日志300。从而,现在将参考图1和图3来描述图5。
在确定特定的日志记录将被应用时,方法500被发起(动作501)。例如,该特定的日志记录可以是图3的日志记录300。响应于标识特定的日志记录要被应用(动作501),特定的日志记录被应用(动作510)。这可以关于与存储段对应的存储段服务器而被完成。这也可以关于次要计算系统而被完成。
从而,日志记录的应用(动作510)包括标识被分配给存储段的特定的集合的存储段服务器,该存储段的特定的集合包括在特定的写操作中要被写到的存储段(动作511)。在存储段集合在地址空间连续的情况下,可以使存储段集合向存储段服务器的分配与存储段标识符的最高有效位对齐。例如,假定存储段标识符的范围从二进制00000,00000(为帮助读者,每五位添加逗号)到二进制01101,01111。在该情况下,可以存在七个存储段服务器,一个针对具有四个最高有效位为0000的标识符的存储段,另一个针对具有四个最高有效四位为0001的标识符的存储段,如此继续,直到第七个存储段针对具有四个最高有效四位为0110的标识符的存储段为止。因此,确定哪个存储段服务器被分配来存储特定的存储段成为有效率的计算。日志服务计算系统132可以因此基于存储段标识符303来确定针对日志记录300的适当的存储段服务器。
然后,使特定的存储段服务器向在特定的日志记录中所指定的存储段执行写操作(动作512)。例如,日志服务计算系统132可以向适当的存储段服务器(例如存储段服务器142)提供(例如,如由箭头103B表示的)日志记录300。这会表示当主要计算系统110从存储段服务器读取(如由箭头102表示的)该存储段时开始的写操作的完成。
在一个示例中,该通知(由箭头103B表示)未被推送到适当的存储段服务器。而是,取决于存储段服务器来针对适当的日志记录做出对日志服务计算系统132的查询。因此,向存储段服务器提供适当的日志记录可以是响应于来自特定的存储段服务器的请求。因此,在存储段服务器142询问可应用的日志条目之后(如由箭头103A表示的),可以向被分配给被写到的存储段的存储段服务器142通知写操作。
日志服务计算系统132可以在其上具有代理(broker)组件133,代理组件133处置针对日志记录的传入请求的处理。代理133可以是日志服务计算系统上的可执行组件。例如,代理133可以如以下针对图8的可执行组件806所描述的而被组织。代理133可以不是每次提供一个日志记录,而是可能每次提供一个块。例如,如果代理133确定在日志记录的块(例如,块400)内存在任何日志记录(例如,日志记录401、402、403、404或405中的任何日志记录),该日志记录在被分配给特定的存储段服务器的存储段集合内具有存储段标识符,代理133可以向特定的存储段服务器发送整个块。
另外,代理133可以确保日志记录不被传达到任何实体,直到日志服务计算系统132已经被通知日志记录已经被安全地写入到持久性日志131中为止(即,日志记录已经变得公开)。这有助于恢复过程是一致的。在恢复期间,恢复使用持久性日志131来确定哪些操作已经被完成。如果系统中的其他组件(例如,次要计算系统或存储段服务器)已经执行了持久日志131未意识到的操作,则恢复将无法达成可靠的状态。然后,用户数据变得含糊,并且因此被破坏。
代理133还可以执行其他任务。例如,代理133可以预期主要计算系统110(其是所生成的日志记录的源)是不可靠的。为了对此进行补偿,代理133可以实现不同的策略,用于对已经从主要计算系统110被接收多次的日志记录去重。代理133可以通过跟踪主要计算系统生成并且通过针对所有日志记录仅保留最近的生成来执行该去重。代理133还可以预期日志记录丢失,并且通过填充以下描述的丢失的日志记录(例如,通过从固定大小的日志部分601读取)来对其进行补偿。
返回到图5的方法500,日志服务计算系统也使(多个)次要计算系统对在次要计算系统处的存储段的副本执行特定的写操作(动作520)。这也可以通过向每个次要计算系统121和122传达(如由图1中的箭头104B和105B表示的)日志记录(例如,日志记录300)而被执行。虽然日志记录可以被推送给次要计算系统120,但是代理131可以类似地处置来自次要计算系统120的针对日志记录的请求(如由箭头104A和105A表示的)。再次,日志记录可以被提供为块。作为提醒,代理133可以确保日志记录不被传达给次要计算系统120,除非日志记录已经被证实为被写到持久性日志131。作为一种可能的优化,如果日志记录是针对向还未被高速缓存的存储段的写,则次要计算系统也可以或许忽略日志记录(并且因此会引起从存储段服务器的读取)。在该情况下,如果次要计算系统稍后要使用该存储段,则次要计算节点可以从存储段服务器(其已经应用了被跳过的日志的写)读取该存储段。
持久性日志131可以被存储在卷135内,卷135在云计算环境的存储服务170内。在向主要计算系统110提供回日志记录块已经被写入的证实之前,该存储服务170会确保日志记录(例如,每个日志记录块)冗余地被保存。一旦存储服务170确保日志的恰当的最小数目的副本已经被写到卷135中,存储服务170就确认写已经被完成。持久性日志131然后可以立刻向主要计算系统110确认(如由箭头101B表示的)回写入已经被完成,允许主要计算系统110继续执行依赖于该完成的操作。
卷135可以被安装到多个计算系统。例如,单个被安装的卷135可以作为读写卷被包括在被安装到主要计算系统110的驱动内,同时作为只读卷被安装到(多个)二级计算系统120。因为仅有一个计算系统被安装到作为写卷的该卷,所以多个计算系统可以在没有由于竞争的或不一致的写操作的数据损坏的风险的情况下被安装到卷135。卷可以在云计算环境内作为云存储服务的部分。例如,存储段服务器140和/或次要计算系统可以直接从持久性日志131读取日志记录,而不是从代理131读取日志记录。
在一些实施例中,存储段集合150可以由云计算环境中的云服务管理。在该情况下,在写操作被视为成功的之前,云服务自身可以确保存储段的最小数目(或者法定数量)的冗余副本被存储在云存储装置内。法定数量被确立,使得在发生故障的情况下,存储段的法定数量的冗余副本允许对存储段的内容是什么的决定性的确定。因此,当存储段服务器确认写操作的完成时,写操作已经在至少法定数量的存储位置上被执行。因为次要计算系统不再负责维持法定数量,所以次要计算系统的数目是高度灵活的。相反,次要计算系统更经常地被用于允许本地次要计算系统对处理可用,并且也负责故障转移,并且不是确保存储装置自身的耐久性。
从而,本文中所描述的原理描述了一种架构,在该架构中数据从主要计算系统和次要计算系统被分离。因为实际由次要计算系统高速缓存相对更小量的数据,所以构建新的次要计算系统变得相对快速。次要计算系统的高速缓存可以是空的,这仅会意味着初始读操作中的一些初始读操作可能花费更久。例如,当需要进一步的冗余以便提高可用性的级别时,新的次要计算系统可以被确立。备选地,新的次要计算系统可以被确立以替代现在正充当主要计算系统的刚被提升的次要计算系统,以便维持可用性的当前级别。
因为新的次要计算系统不再需要具有带有数据的整个复本的直接被附接的卷,所以构建新的次要计算系统所花费的时间被显著降低。相反,次要计算系统可以仅需要应用、以及相对小的高速缓存。此外,在其中主要计算系统向被附接到该存储服务中的卷写的情况下,用于确定日志记录是否已经恰当地被录入日志中的目的的法定数量的确立现在可以由存储服务处置。在这样的情况下,仅在存储服务已经确立日志记录已经被持久地写到适当数目的位置之后,向日志的写才完成。
已经参考图1至图5描述了环境100,现在将参考图6至图7D描述更多关于卷135内的日志。回想卷135是针对主要计算系统110的写卷,但是是针对(多个)次要计算系统120的只读卷。这是可能的,因为仅主要计算系统110向卷135内的日志写入,而(多个)次要计算系统120仅从卷135内的持久日志131读取卷135。本文中描述了在允许从日志读取的实体中的所有实体都知晓要从日志内读取什么地址的同时,对无限的日志(可以在极限内增长的日志)如何基于卷135而被容纳的改进。
图6图示了日志环境600,在日志环境600中存在由两个组件组成的日志——固定大小的日志部分601和可增长的日志部分602。如由边界611和612象征性地表示为更厚,固定大小的日志部分的大小是固定的。固定大小的日志部分601包括被记录在日志中的更近的日志记录(并且包括日志的尾部)。如以下将进一步变得明显的,固定大小的日志部分601大小固定的优势在于固定大小的日志部分601的读取方能够仅使用该日志记录的日志序列号就确定性地知晓日志记录位于固定大小的日志部分601内的何处。此外,固定大小的日志部分是以被设计为在读取方和写入方之间安全地被共享的格式。这简化了使读取方能够从日志读取日志记录的过程。
如由箭头621表示的,固定大小的日志部分601被顺序地写入。当遇到固定大小的日志部分601的末端(例如,末端612)时,弯曲写回(如由虚线箭头622表示的)到固定大小的日志部分601的开端(例如,开端611)以继续向日志写入。因此,向固定大小的日志部分601的写入以循环的方式发生。因为循环的写入模式,较旧的日志记录将由较新的日志记录覆写。在那发生之前,降级器组件610将那些较旧的日志记录顺序地写到可增长的日志部分602的末端(例如,末端613)上。以这种方式,可增长的日志部分602在方向623上顺序增长。
因此,固定大小的日志部分601包括较新的日志记录,其是最经常被从其读取的日志记录。另一方面,可增长的日志部分602包括较不经常被读取的较旧的日志记录。此外,固定大小的日志部分601将包括日志的尾部,其是作为整体被写到日志的最后的日志记录。在发生故障的情况下,能够标识日志的尾部是重要的,因为该日志记录是日志服务已经保证将被执行的最后的日志记录,即使在由日志记录表示的数据操作已经被完成之前有故障发生。在恢复期间,恢复过程还原最后的检查点,并且每次一个地重新进行每个日志记录的数据操作,直到遇到日志的尾部为止。
图7A图示了表示图6的日志环境600的具体示例的日志环境700A。图7A的固定大小的日志部分701表示图6的固定大小的日志部分601的示例。图7A的可增长的日志部分702A表示图6的可增长的日志部分602的示例。在该示例中,以及在一个实施例中,固定大小的日志部分701A被规定大小以包括奇数个子部分。例如,子部分可以是虚拟日志文件。如从下面的描述将变得明显的是,日志部分701A被规定大小为包括奇数个虚拟日志文件的优势在于初始化子部分的正常操作被简化,同时仍然允许恢复过程以找到日志的尾部。在此特定的示例中,固定大小的日志部分701A被规定大小以包括三个虚拟日志文件。
假设到目前为止,该日志由21个虚拟日志文件(或“VLF”)组成,并且虚拟日志文件以顺序的次序被标识为VLF1、VLF2、VLF3等。固定大小的日志部分701A会包括最后三个虚拟日志文件VLF19、VLF20和VLF21。较旧的虚拟日志文件VLF1至VLF18会先前已经由降级器710降级到可增长的日志部分701A中。
在该示例中,并且如从固定大小的日志部分701A最明显的是,每个部分(例如,虚拟日志文件)包括固定数目的块。尽管虚拟日志文件通常可以具有非常大数目的块,为保持示例简单,每个虚拟日志文件(例如,VLF19至VLF21)被图示为具有四(4)个块。例如,虚拟日志文件VLF19由块19A至块19D顺序地组成,虚拟日志文件VLF20由块20A至块20D顺序地组成,以及虚拟日志文件VLF21由块21A至块21D顺序地组成。
当日志记录被写入到持久性日志中时,包括该日志记录的块被写入到固定大小的日志文件中。块内的每个日志记录出现在块内的槽。日志序列号因此可以由虚拟日志文件标识符、块标识符和槽标识符的连结组成。注意,在知晓固定大小日志部分701A在其内使VLF19、VLF20和VLF21以该次序顺序地被安排的情况下,任何读取方都可以仅利用日志序列号来获得那些虚拟文件中的任何虚拟文件内的任何日志记录。块可以从日志序列号被标识,这允许恰当的块被读取。然后,来自日志序列号的槽标识符可以被用于从该块提取恰当的日志记录。
在任何情况下,块由主要计算系统110顺序地每次一个块写到固定大小的日志文件。在图7A的示例中,在块在右上角具有星号时,表示其已经被写入。因此,在图7A中所图示的时间点处,因为块21A是被写入的最后的块,所以日志的尾部(由指针711表示)刚好在块21A之后。
降级器710监控固定大小的日志部分701A中的日志的尾部的位置(即最近被写到的位置),并且确保即将被覆写的任何虚拟日志文件被降级到可增长的日志部分702A中。然后,曾经被用于存储该新被降级的虚拟日志文件的固定大小的日志部分701A的存储位置可以被重用于后续的虚拟日志文件。
图7B图示了日志环境700B,日志环境700B表示日志环境700B在虚拟日志文件VLF19已经被降级之后的后续状态,并且固定大小的日志文件701A(现在被称为被标记为701B)的存储位置由具有块22A、22B、22C以及22D的虚拟日志文件VLF22重用。在该示例中,每次新的子部分(例如,虚拟日志文件)在固定大小的日志部分内被初始化,针对每个相继地被初始化的子部分(例如,虚拟日志文件)的子部分标识符(例如,虚拟日志文件标识符)被增加。也注意,可增长的日志部分702B现在已经增长一个虚拟日志文件到现在包括虚拟日志文件VLF19。在该示例中,与图7A中的日志的尾部相比较,图7B中日志的尾部711还未移动。即是说,日志的尾部711仍然刚好在块21A之后。
现在假定在该点采取检查点(就在块21A被写到固定大小的日志部分701B之后)。然后,与顺序的并且循环的写模式一致,假定接下来的块然后按顺序被写到固定大小的日志部分701B:块21B、块21C、块21D、块22A以及块22B。结果将是图7C的日志环境700C。现在注意固定大小的日志部分701C具有直至块22B,以星号示出,并且因此日志的尾部711现在刚好在块22B之后。此外,为方便起见,快照指针712为读者的方便而被表示,并且将在以下进一步被引用。
现在假定当日志的尾部711刚好在块22B之后时(如图7C所示),故障发生。在恢复期间的任务首先会是还原最近的快照。在图7C中,那会使数据的状态进至刚好在针对块21A内的日志记录中的所有日志记录的数据操作被执行之后。但是为使数据完全地是当前的,恢复过程执行由后续的日志记录表示的所有后续的数据操作,直到遇到日志的尾部为止(在指针711处)。但是问题是标识何时遇到日志的尾部。毕竟,块22C和块22D中仍然具有数据,尽管其是作为块19C和块19D的部分而被降级的日志记录。因此,标识已经向什么块写入作为当前虚拟日志文件(VLF22)的部分、并且将那些块与具有来自先前的循环写周期的陈旧数据的那些块区分开是重要的。
为了允许恢复过程进行该区分,每个块内有新的标记数据,该新的标记数据与当前的虚拟日志文件标识符一起,允许恢复过程可以确定性地做出以下结论:是否新的数据已经作为当前虚拟日志文件的部分被写到该块中。在一个实施例中,块内新的标记数据可以是两位。这些位的值结合子部分标识符,允许恢复过程确定已经向哪些块写。
例如,假定当向具有奇数子部分标识符的子部分的块(例如VLF19或VLF21)写入时,该两位以第一可能值(例如,01)被写入。在该情况下,当向具有偶数子部分标识符的子部分的块(例如VLF20或VLF22)写入时,该两位以第二可能值(例如,10)被写入。
图7D是与图7C的环境700C相同的日志环境700D,除了“O”填充使用先前段落中所描述的约定则会具有位01的那些块、并且“X”填充使用先前段落中所描述的约定则会具有位10的那些块。因为星号仅为读者的方便而被使用,所以它们已经被移除。
子部分VLF20已经使其块中的所有块被写入(因为日志的尾部在VLF22中是向前的)。因此,因为子部分标识符VLF20是偶数,所以两位会是10,并且因此块20A、20B、20C以及20D被示出为具有X。当然,恢复应当在最近的子部分VLF22中寻找日志的尾部。然而,尽管恢复不需要在先前的子部分中的任何子部分中寻找日志的尾部,但是如果恢复确实检查了子部分VLF20,则恢复会知晓日志的尾部不在那儿。
子部分VLF21已经使其块中的所有块被写入(因为日志的尾部在VLF22中是向前的)。因此,因为子部分标识符VLF21是奇数,所以两位会是01,并且因此块21A、21B、21C以及21D被示出为具有O。因此,如果恢复确实检查了子部分VLF21,则恢复会知晓日志的尾部不在那儿。
因为日志的尾部711在子部分VLF22内,所以子部分VLF22仅使其块中的一些块被写入。具体地,因为子部分标识符VLF是偶数,所以被写入到的两个块22A和22B的两位会是10,并且因此在内部被示出以“X”。然而,注意来自VLF19的旧数据仍然在块22C和块22D内。当主要计算系统正在向作为子部分VLF19的部分的块19C和块19D写入时,该旧数据被写入到那些块。因为该数据完全没有改变,所以块22C和块22D的两位保持为01,并且因此在其内被标记以“O”。因此,当开始针对子部分VLF22重用存储空间时,无需必须重新格式化被用于子部分VLF19的存储空间,恢复过程仍然可以找到日志的尾部。正是因为在固定大小的日志部分内存在奇数(三)个子部分,并且子部分被添加了在偶数和奇数之间交替的标识符(其发生在它们单调地每次增加一个时),所以该效果才被精确地达成。
因此,被写入到卷135的日志可以被优化,以使得更频繁被访问的块(包括最近的日志记录)被优化,以使得任何读取方可以仅使用日志序列号来读取那些块并且访问适当的日志记录。此外,写可以在正常操作期间发生,以使得在后续的恢复中,日志的尾部可以快速被找到,无需必须花费精力重新格式化固定大小的日志部分中的存储空间。因此,确实,一旦具有该日志记录的块被写入到图6的日志环境600的日志中,日志服务就可以确认数据操作被保证发生。
附加地,因为固定大小的日志部分的大小是固定的,所以驱动135的管理数据保持不变。并且,如以上所描述的,因为内容是自描述的,所以固定大小的日志部分被设计为在读取方和写入方之间安全地被共享。即使读取方和写入方不需要彼此通信,这也允许读取方和写入方免受撕裂的写和其他并发访问失真影响。因此,驱动135可以被安装到多个计算系统。
因为本文中所描述的原理在计算系统的情境中操作,所以将参考图8描述计算系统。计算系统现在正越来越多地采用多种形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、或者甚至是常规上还未被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜、手表、带等)。在本说明书和权利要求书中,术语“计算系统”被宽泛地定义为包括如下任何设备或者系统(或者其组合):该设备或者系统包括至少一个物理和有形的处理器、以及能够在其上具有由处理器可执行的计算机可执行指令的物理和有形的存储器。存储器可以采取任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境之上,并且可以包括多个构成的计算系统。
如图8所图示,在其最基础的配置中,计算系统800通常包括至少一个硬件处理单元802以及存储器804。存储器通常包括至少一个硬件处理单元802和存储器804。存储器804可以是物理系统存储器,其可以是易失性的、非易失性的、或者两者的某种组合。术语“存储器”在本文中也可以被用于指诸如物理存储介质的非易失性大容量存储装置。如果计算系统是分布式的,则该处理、存储器和/或存储能力也可以是分布式的。
计算系统800在其上具有经常被称为“可执行组件”的多个结构。例如,计算系统800的存储器804被图示为包括可执行组件806。术语“可执行组件”是对计算领域中的普通技术人员中众所周知的结构的名称,该结构可以是软件、硬件或其组合。例如,当以软件被实现时,本领域普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上被执行的软件对象、例程、方法,无论这样的可执行组件是否存在于计算系统的堆中,或者可执行组件是否存在于计算机可读存储介质上。
在这样的情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得该可执行组件的结构当由计算系统的一个或多个处理器(例如,由处理器线程)解译时,使计算系统执行功能。这样的结构可以是由处理器直接地计算机可读取的(如,如果可执行组件是二进制的情况)。备选地,该结构可以被组织为可解译的和/或经编译的(无论是在单个阶段中还是在多个阶段中),以便生成这样由处理器直接可解译的二进制。当使用术语“可执行组件”时,对可执行组件的示例结构的这样的理解很好地在计算领域的普通技术人员的理解之内。
术语“可执行组件”也被本领域的普通技术人员很好地理解为包括排他地或几乎排他地以硬件被实现的结构,例如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是用于被计算领域的普通技术人员很好理解的结构的术语,无论其是以软件、硬件还是组合被实现。在本说明书中,术语“组件”或者“顶点”等也可以被使用。如本说明书中所使用的,并且在这种情况下,这些术语(无论该术语是否被一个或多个修饰语修改)也旨在与术语“可执行组件”同义或者是这样的“可执行组件”的特定的类型,并且因此也具有被计算领域的普通技术人员很好地理解的结构。
在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件被实现,则响应于已经执行了构成可执行组件的计算机可执行指令,(执行该动作的相关联的计算系统的)一个或多个处理器引导计算系统的操作。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及数据的操纵。
计算机可执行指令(和所操纵的数据)可以被存储在计算系统800的存储器804中。计算系统800还可以包含通信信道808,该通信信道808允许计算系统800通过例如网络810与其他计算系统通信。
尽管并非所有计算系统都要求用户接口,但是在一些实施例中,计算系统800包括用于与用户进行接口的用户接口812。用户接口812可以包括输出机构812A以及输入机构812B。本文中所描述的原理不限于精确的输出机构812A或者输入机构812B,因为这将取决于设备的性质。然而,输出机构812A可以包括例如扬声器、显示器、触觉输出、全息图、虚拟现实等。输入机制812B的示例可以包括例如麦克风、触摸屏、全息图、虚拟现实、相机、键盘、其他指针输入的鼠标、任何类型的传感器等。
本文中所描述的实施例可以包括或者利用包括计算机硬件(诸如,例如一个或多个处理器和系统存储器)的专用或通用计算系统,如以下更详细地讨论的。本文中所描述的实施例还包括用于携带或者存储计算机可执行指令和/或数据结构的物理的以及其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,实施例可以包括至少两种明显不同种类的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或者其他磁性存储设备、或者以下任何其他物理和有形的存储介质:该物理和有形的存储介质可以被用于以计算机可执行指令或数据结构的形式来存储所期望的程序代码部件,并且可以由通用或专用计算系统访问。
“网络”被定义为支持在计算系统和/或组件和/或其他电子设备之间运送电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或者硬连线或无线的组合)而被传输或提供给计算系统时,计算系统将该连接适当地视为传输介质。传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以被用于以计算机可执行指令或者数据结构的形式来携带所期望的程序代码并且可以由通用或专用计算系统访问。以上的组合也应被包括在计算机可读介质的范围内。
此外,在实现各种计算系统组件时,计算机可执行指令或者数据结构形式的程序代码部件可以自动地从传输介质被传送到存储介质(反之亦然)。例如,通过网络或数据链路被接收的计算机可执行指令或者数据结构可以被缓冲在网络接口组件(例如,“NIC”)内的RAM中,并且然后最终被传送到计算系统RAM和/或计算系统处易失性较小的存储介质。因此,应理解,可读介质可以被包括在也(或者甚至主要地)利用传输介质的计算系统组件中。
计算机可执行指令包括例如指令和数据,当在处理器处被执行时,该指令和数据使通用计算系统、专用计算系统或者专用处理设备执行某些功能或功能组。替代地或附加地,计算机可执行指令可以将计算系统配置为执行某些功能或功能组。计算机可执行指令可以是,例如二进制或者甚至在由处理器直接执行之前经过某种翻译(例如编译)的指令(诸如中间格式指令(诸如汇编语言)),或者甚至是源代码。
本领域技术人员将认识到,可以在具有许多类型的计算系统配置的网络计算环境中实践本发明,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程的消费者电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(例如眼镜或手表)等。还可以在分布式系统环境中实践本发明,在分布式系统环境中,通过网络被链接(或者通过硬连线数据链路、无线数据链路、或者通过硬连线链路和无线数据链路的组合)的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序组件可以位于本地存储器设备和远程存储器存储设备两者中。
本领域技术人员还将理解,可以在由一个或多个数据中心或其部分支持的云计算环境中实践本发明。云计算环境可以是分布式的,尽管这不是必需的。当被分布时,云计算环境可以在组织内国际地被分布和/或具有跨多个组织被拥有的组件。
在本说明书和所附权利要求中,“云计算”被定义为用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用以及服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在适当地被部署时可以从这样的模型中所获取的其他众多优势中的任何优势。
例如,云计算当前在市场中被采用,以便提供对可配置的计算资源的共享池的普遍存在和方便的按需访问。此外,可配置的计算资源的共享池可以通过虚拟化而被快速供应,并以低管理工作量或服务提供方交互而被发布,并且然后相应地被扩展。
云计算模型可以由各种特征组成,诸如按需、自助服务,广泛的网络访问、资源池、快速弹性、经测量的服务等。云计算模型也可以使用各种应用服务模型的形式,例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”)。还可以使用诸如私有云、社区云、公共云、混合云等不同的部署模型来部署。在本说明书和权利要求书中,“云计算环境”是在其中采用云计算的环境。
在不脱离本发明的精神或本质特性的情况下,可以以其他特定的形式来体现本发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前文的描述指示。落在权利要求的含义和等同范围内的所有改变均应被包含在其范围之内。
Claims (10)
1.一种用于对存储段应用日志的方法,所述方法包括:
标识要应用的一个或多个日志记录,所述一个或多个日志记录包括特定的日志记录,所述特定的日志记录指定对特定的存储段的特定的写操作;以及
响应于标识要应用的所述特定的日志记录,通过执行以下操作来应用所述特定的日志记录:
标识特定的存储段服务器,所述特定的存储段服务器被分配给特定的存储段集合,所述特定的存储段集合包括在所述特定的写操作中要被写到的所述特定的存储段;以及
使所述特定的存储段服务器对在所述特定的日志记录中所指定的所述特定的存储段执行所述特定的写操作。
2.根据权利要求1所述的方法,所述特定的日志记录是第一日志记录,所述特定的写操作是第一写操作,所述特定的存储段是第一存储段,所述特定的存储段服务器是第一存储段服务器,所述特定的存储段集合是第一存储段集合,所述一个或多个日志记录还包括第二日志记录,所述第二日志记录指定对第二存储段的第二写操作,所述方法还包括:
标识被分配给第二存储段集合的第二存储段服务器,所述第二存储段集合包括在所述第二写操作中要被写到的所述第二存储段,所述第二存储段服务器与所述第一存储段服务器不同,所述第二存储段集合与所述第一存储段集合不同;
使所述第二存储段服务器对在所述第二日志记录中所指定的所述第二存储段执行所述第二写操作。
3.根据权利要求1所述的方法,响应于接收来自所述特定的存储段服务器的针对所述特定的日志记录的请求,所述使所述特定的存储段服务器执行所述特定的写操作被执行,通过响应于来自所述特定的存储段服务器的所述请求来向所述特定的存储段服务器提供所述特定的日志记录,所述使所述特定的存储段服务器执行所述特定的写操作被执行。
4.根据权利要求3所述的方法,所述特定的日志记录包括被组织在块内的多个日志记录,通过向所述特定的存储段服务器提供所述块,所述特定的日志记录被提供给所述特定的存储段服务器。
5.根据权利要求1所述的方法,所述特定的日志记录响应于主要计算系统从所述特定的存储段服务器读取所述特定的存储段而被生成,确定要对所述特定的存储段做出的增量改变,对所述特定的存储段的被读取的副本做出所述增量改变,以及在所述特定的日志记录内标识所述增量改变以及所述特定的存储段的标识符。
6.根据权利要求1所述的方法,所述使所述特定的存储段服务器对所述特定的存储段执行所述特定的写操作发生在证实所述特定的日志记录已经被保存到集中式日志之后。
7.根据权利要求1所述的方法,所述方法还包括响应于标识要应用的所述特定的日志记录进行以下操作:
使次要计算系统在所述次要计算系统处的存储段的副本上执行所述特定的写操作。
8.根据权利要求7所述的方法,响应于接收来自所述次要计算系统的针对所述特定的日志记录的请求,所述使所述特定的存储段服务器执行所述特定的写操作被执行,通过响应于来自所述次要计算系统的所述请求来向所述次要计算系统提供所述特定的日志记录,所述使所述次要计算系统执行所述特定的写操作被执行,所述特定的日志记录包括被组织在块内的多个日志记录,通过向所述次要计算系统提供所述块,所述特定的日志记录被提供给所述次要计算系统。
9.根据权利要求1所述的方法,所述使所述次要计算系统执行所述特定的写操作发生在证实所述特定的日志记录已经被保存到集中式日志之后。
10.一种计算系统,包括:
一个或多个处理器;以及
一个或多个计算机可读存储介质,在其上具有计算机执行指令,所述计算机执行指令被构造为使得当由所述一个或多个处理器执行时,所述计算系统被使得执行用于对存储段应用日志的方法,所述方法包括:
标识要应用的一个或多个日志记录,所述一个或多个日志记录包括特定的日志记录,所述特定的日志记录指定对特定的存储段的特定的写操作;以及
响应于标识要应用的所述特定的日志记录,通过执行以下操作来应用所述特定的日志记录:
标识特定的存储段服务器,所述特定的存储段服务器被分配给特定的存储段集合,所述特定的存储段集合包括在所述特定的写操作中要被写到的所述特定的存储段;以及
使所述特定的存储段服务器对在所述特定的日志记录中所指定的所述特定的存储段执行所述特定的写操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/138,083 US10877868B2 (en) | 2018-09-21 | 2018-09-21 | Applying a log to storage segments |
US16/138,083 | 2018-09-21 | ||
PCT/US2019/039099 WO2020060627A1 (en) | 2018-09-21 | 2019-06-26 | Applying a log to storage segments |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112740186A true CN112740186A (zh) | 2021-04-30 |
Family
ID=67297303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980061784.XA Pending CN112740186A (zh) | 2018-09-21 | 2019-06-26 | 对存储段应用日志 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10877868B2 (zh) |
EP (1) | EP3853734A1 (zh) |
CN (1) | CN112740186A (zh) |
WO (1) | WO2020060627A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200349012A1 (en) * | 2019-05-01 | 2020-11-05 | EMC IP Holding Company LLC | Method and system for full restore point creation using incremental backups |
CN111506479A (zh) * | 2020-04-20 | 2020-08-07 | 深圳前海微众银行股份有限公司 | 一种日志数据处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
US20180067662A1 (en) * | 2015-03-04 | 2018-03-08 | Amazon Technologies, Inc. | Memory-based on-demand data page generation |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466970B1 (en) | 1999-01-27 | 2002-10-15 | International Business Machines Corporation | System and method for collecting and analyzing information about content requested in a network (World Wide Web) environment |
US6879995B1 (en) | 1999-08-13 | 2005-04-12 | Sun Microsystems, Inc. | Application server message logging |
US20030237022A1 (en) | 2002-06-21 | 2003-12-25 | Thayer Jennifer J. | System and mehod for providing a service log for processor-based devices |
GB0605578D0 (en) | 2006-03-20 | 2006-04-26 | Speed Trap Com Ltd | Content management |
CN101414255A (zh) | 2007-10-19 | 2009-04-22 | 国际商业机器公司 | 日志事件处理方法与设备 |
US9208032B1 (en) * | 2013-05-15 | 2015-12-08 | Amazon Technologies, Inc. | Managing contingency capacity of pooled resources in multiple availability zones |
US10055352B2 (en) | 2014-03-11 | 2018-08-21 | Amazon Technologies, Inc. | Page cache write logging at block-based storage |
US9785510B1 (en) * | 2014-05-09 | 2017-10-10 | Amazon Technologies, Inc. | Variable data replication for storage implementing data backup |
US10580032B2 (en) | 2014-09-25 | 2020-03-03 | Oracle International Corporation | Evaluating page content to determine user interest |
US10474694B2 (en) * | 2015-02-25 | 2019-11-12 | International Business Machines Corporation | Zero-data loss recovery for active-active sites configurations |
US10567500B1 (en) * | 2015-12-21 | 2020-02-18 | Amazon Technologies, Inc. | Continuous backup of data in a distributed data store |
-
2018
- 2018-09-21 US US16/138,083 patent/US10877868B2/en active Active
-
2019
- 2019-06-26 EP EP19740155.7A patent/EP3853734A1/en active Pending
- 2019-06-26 CN CN201980061784.XA patent/CN112740186A/zh active Pending
- 2019-06-26 WO PCT/US2019/039099 patent/WO2020060627A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
US20180067662A1 (en) * | 2015-03-04 | 2018-03-08 | Amazon Technologies, Inc. | Memory-based on-demand data page generation |
Also Published As
Publication number | Publication date |
---|---|
WO2020060627A1 (en) | 2020-03-26 |
US20200097384A1 (en) | 2020-03-26 |
US10877868B2 (en) | 2020-12-29 |
EP3853734A1 (en) | 2021-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210342304A1 (en) | Dynamically configuring a proxy server using containerization for concurrent and/or overlapping backup, restore, and/or test operations | |
EP2731013B1 (en) | Backing up method, device, and system for virtual machine | |
US7546431B2 (en) | Distributed open writable snapshot copy facility using file migration policies | |
CN107003890B (zh) | 高效地提供虚拟机参考点 | |
US7395389B2 (en) | Extending non-volatile storage at a computer system | |
US7814077B2 (en) | Restoring a source file referenced by multiple file names to a restore file | |
US10620851B1 (en) | Dynamic memory buffering using containers | |
US11044312B2 (en) | Storage segment server covered cache | |
CN112740186A (zh) | 对存储段应用日志 | |
US10853314B1 (en) | Overlay snaps | |
US11188516B2 (en) | Providing consistent database recovery after database failure for distributed databases with non-durable storage leveraging background synchronization point | |
US10802715B2 (en) | Mounting a drive to multiple computing systems | |
US11048664B2 (en) | Log destaging from fixed-size log portion | |
US11455292B2 (en) | Brokering persisted and unpersisted log records | |
US11151101B2 (en) | Adjusting growth of persistent log | |
US10976959B2 (en) | Method and system for accessing virtual machine state while virtual machine restoration is underway | |
US20160216988A1 (en) | Exposing storage entity consistency capability status | |
US11099948B2 (en) | Persistent storage segment caching for data recovery | |
US10802926B2 (en) | Accessing prior storage segment server state | |
US10949412B2 (en) | Log marking dependent on log sub-portion |
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 |