KR20230097184A - Asynchronous cross-region block volume replication - Google Patents

Asynchronous cross-region block volume replication Download PDF

Info

Publication number
KR20230097184A
KR20230097184A KR1020237018995A KR20237018995A KR20230097184A KR 20230097184 A KR20230097184 A KR 20230097184A KR 1020237018995 A KR1020237018995 A KR 1020237018995A KR 20237018995 A KR20237018995 A KR 20237018995A KR 20230097184 A KR20230097184 A KR 20230097184A
Authority
KR
South Korea
Prior art keywords
data
snapshot
volume
deltas
computer system
Prior art date
Application number
KR1020237018995A
Other languages
Korean (ko)
Inventor
벤카타 하리쉬 말리페디
트래비스 존 포츠
제페 아스카 마이어 라슨
마리오 타야
Original Assignee
오라클 인터내셔날 코포레이션
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 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Publication of KR20230097184A publication Critical patent/KR20230097184A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

블록 볼륨 데이터의 교차-영역 복제를 위한 기술들이 제공된다. 기술들은, 컴퓨터 시스템이, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 동작으로서, 블록 볼륨은 복수의 파티션들을 포함하는, 동작, 제2 지리적 영역에 있는 객체 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 동작, 제1 지리적 위치에서 제2 논리적 시간에 블록 볼륨의 제2 스냅샷을 생성하는 동작, 복수의 델타들을 생성하는 동작으로서, 복수의 델타들의 각각의 델타는 복수의 파티션들 중 하나의 파티션에 대응하는, 동작, 제2 지리적 영역에 있는 객체 저장 시스템으로 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 동작, 적어도 부분적으로 제1 스냅샷 및 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 동작, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 동작, 및 체크포인트로부터 복원 볼륨을 생성하는 동작을 포함하는 동작들을 구현하는 방법을 포함한다.Techniques for cross-region replication of block volume data are provided. The techniques include the operation of a computer system creating a first snapshot of a block volume at a first logical time at a first geographic location, the block volume comprising a plurality of partitions, storing an object in a second geographic region. sending first snapshot data corresponding to the first snapshot to the system, creating a second snapshot of the block volume at a second logical time at a first geographic location, and creating a plurality of deltas; each delta of the plurality of deltas corresponds to one of the plurality of partitions; transmitting a plurality of delta data sets corresponding to the plurality of deltas to an object storage system in a second geographic region; Creating a checkpoint, in part by aggregating object metadata associated with a first snapshot and a plurality of deltas, receiving a restore request to create a restore volume, and creating a restore volume from the checkpoint. Includes methods for implementing operations that include.

Description

비동기적 교차-영역 블록 볼륨 복제Asynchronous cross-region block volume replication

관련 출원들에 대한 상호 참조CROSS REFERENCES TO RELATED APPLICATIONS

본 출원은 "ASYNCHRONOUS CROSS-REGION BLOCK VOLUME REPLICATION"이라는 명칭으로 2020년 11월 06일자로 출원된 미국 정규 특허 출원 제17/091,635호에 대한 우선권 및 이익을 주장한다. 미국 정규 특허 출원 제17/091,635호의 내용들은 모든 목적들을 위해 그 전체가 본원에 참조로서 포함된다.This application claims priority to and benefit from US Provisional Patent Application Serial No. 17/091,635, entitled "ASYNCHRONOUS CROSS-REGION BLOCK VOLUME REPLICATION", filed on November 06, 2020. The contents of US Provisional Patent Application Serial No. 17/091,635 are incorporated herein by reference in their entirety for all purposes.

클라우드-기반 플랫폼들은 사용자들에게 확장가능하고 유연한 컴퓨팅 자원들을 제공한다. 서비스형 인프라스트럭처(infrastructure as a service; IaaS)로도 지칭되는 이러한 클라우드-기반 플랫폼들은, 고객의 데이터에 대한 클라우드 솔루션들, 예를 들어, 변환들의 저작, 데이터의 로딩, 및 데이터의 표현을 위한 솔루션들의 전체 스위트들을 제공할 수 있다. 일부 경우들에서, 고객 데이터는 분산 저장 시스템(예를 들어, 클라우드 저장부) 내의 객체 저장부 및/또는 블록 볼륨 저장부에 저장될 수 있다.Cloud-based platforms provide scalable and flexible computing resources to users. These cloud-based platforms, also referred to as infrastructure as a service (IaaS), provide cloud solutions for customers' data, such as solutions for authoring transformations, loading data, and presenting data. can provide an entire suite of . In some cases, customer data may be stored in object storage and/or block volume storage within a distributed storage system (eg, cloud storage).

기술들(예를 들어, 방법, 시스템, 하나 이상의 프로세서들에 의해 실행가능한 코드 또는 명령어들을 저장하는 비-일시적인 컴퓨터-판독가능 매체)은 비동기적 교차-영역 블록 볼륨 복제를 위해 제공된다. Techniques (eg, methods, systems, non-transitory computer-readable media storing code or instructions executable by one or more processors) are provided for asynchronous cross-region block volume replication.

일 실시예에서, 방법은, 컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 블록 볼륨은 복수의 파티션들을 포함하는, 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제1 지리적 위치에서 제2 논리적 시간에 블록 볼륨의 제2 스냅샷을 생성하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 복수의 델타들의 각각의 델타는 복수의 파티션들의 하나의 파티션에 대응하는, 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 적어도 부분적으로 제1 스냅샷 및 복수의 델타들과 연관된 객체 메타데이터를 집성(aggregate)함으로써 체크포인트를 생성하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계를 포함한다. 방법은 또한, 컴퓨터 시스템에 의해, 체크포인트로부터 복원 볼륨을 생성하는 단계를 포함한다.In one embodiment, the method includes creating, by a computer system, a first snapshot of a block volume at a first logical time at a first geographic location, the block volume comprising a plurality of partitions. . The method includes sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic region. The method includes creating, by a computer system, a second snapshot of the block volume at a first geographic location and at a second logical time. The method includes generating, by a computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one partition of the plurality of partitions. The method includes sending, by a computer system, a plurality of delta data sets corresponding to the plurality of deltas to an object storage system in a second geographic region. The method includes generating, by a computer system, a checkpoint by aggregating, at least in part, object metadata associated with the first snapshot and the plurality of deltas. The method includes receiving, by a computer system, a restore request to create a restore volume. The method also includes creating, by the computer system, a restore volume from the checkpoint.

일 변형예에서, 복수의 델타들을 생성하는 단계는 제2 스냅샷과 제1 스냅샷 사이의 비교를 생성하는 단계를 포함한다. 복수의 델타들을 생성하는 단계는, 비교에 기초하여, 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계를 포함할 수 있다. 복수의 델타들은 복수의 파티션들에 대한 수정된 데이터를 설명할 수 있다. 제1 스냅샷을 생성하는 단계는, 논리적 시간에 대응하는 복수의 파티션들에 대한 입력/출력 동작들을 일시중단(suspend)하는 단계, 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계, 및 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함할 수 있다. 복원 요청은 페일오버(failover) 요청일 수 있거나 또는 이를 포함할 수 있다. 방법은, 복원 볼륨이 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계, 및 제2 지리적 영역에서의 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함할 수 있다. 복원 요청은 페일백(failback) 요청이거나 또는 이를 포함할 수 있으며, 방법은, 제2 지리적 영역에서 복원 볼륨을 생성하는 단계, 복원 볼륨을 클로닝(clone)함으로써 페일백 볼륨이 적어도 부분적으로 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계, 및 제1 지리적 영역에서 제1 스냅샷 데이터를 복원하는 단계를 더 포함할 수 있다. 복수의 델타 데이터 세트들을 송신하는 단계는, 복수의 델타 데이터 세트들로부터 복수의 청크(chunk) 객체들을 생성하는 단계, 복수의 델타들을 전송하는 단계, 및 복수의 청크 객체들을 객체 저장 시스템으로 전송하는 단계를 포함할 수 있다. 체크포인트는 객체 메타데이터의 매니페스트(manifest)를 포함할 수 있다. 객체 메타데이터는 객체 저장 시스템 내의 복수의 청크 객체들에 대응하는 청크 포인터들을 포함할 수 있다. 객체 메타데이터를 집성하는 단계는, 복수의 델타 데이터 세트들과 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 매니페스트를 업데이트하는 단계를 포함할 수 있다.In one variation, generating the plurality of deltas includes generating a comparison between the second snapshot and the first snapshot. Generating the plurality of deltas may include determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot based on the comparison. there is. A plurality of deltas may describe modified data for a plurality of partitions. Creating the first snapshot may include suspending input/output operations for a plurality of partitions corresponding to logical time, generating a plurality of block images describing volume data in the plurality of partitions. and enabling input/output operations on a plurality of partitions. A restore request may be or include a failover request. The method may further include enabling the recovery volume to be created in the second geographic region, and enabling input/output operations using the recovery volume in the second geographic region. The restore request may be or include a failback request, the method comprising: creating a restore volume in the second geographic region, cloning the restore volume so that the failback volume is at least partially in the first geographic region. region, and restoring the first snapshot data in the first geographic region. Transmitting the plurality of delta data sets includes creating a plurality of chunk objects from the plurality of delta data sets, transmitting the plurality of deltas, and transmitting the plurality of chunk objects to an object storage system. steps may be included. A checkpoint may contain a manifest of object metadata. Object metadata may include chunk pointers corresponding to a plurality of chunk objects in the object storage system. Aggregating the object metadata may include updating the manifest to reflect the plurality of differences between the plurality of delta data sets and the first snapshot data.

특정 실시예들에서, 컴퓨터 시스템은 하나 이상의 프로세스들 및 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 이상에서 설명된 방법 또는 그 변형예들의 단계들 중 하나 이상을 수행하게 한다.In certain embodiments, a computer system includes one or more processes and memory in communication with the one or more processors, the memory configured to store computer-executable instructions that execute the one or more processors. Causes the processors to perform one or more of the steps of the method or variations thereof described above.

특정 실시예들에서, 컴퓨터-판독가능 저장 매체는, 실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 이상에서 설명된 방법 또는 그 변형예들의 하나 이상의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장한다.In certain embodiments, a computer-readable storage medium stores computer-executable instructions that, when executed, cause one or more processors of a computer system to perform one or more steps of a method described above or variations thereof.

도 1은 하나 이상의 실시예들에 따른 비동기적 교차-영역 블록 볼륨 복제를 위한 예시적인 시스템을 예시한다.
도 2는 하나 이상의 실시예들에 따른 비동기적 블록 볼륨 복제를 위한 예시적인 기술을 예시한다.
도 3은 하나 이상의 실시예들에 따른 비동기적 복제에 의해 블록 볼륨 시스템을 복원하기 위한 예시적인 기술을 예시한다.
도 4는 하나 이상의 실시예들에 따른 블록 볼륨 복제 메타데이터를 집성하기 예시적인 기술을 예시한다.
도 5는 하나 이상의 실시예들에 따른 스탠바이(standby) 볼륨으로부터 페일오버 볼륨을 생성하기 위한 예시적인 기술을 예시한다.
도 6은 하나 이상의 실시예들에 따른 스탠바이 볼륨의 크기를 조정하기 위한 예시적인 기술을 예시한다.
도 7은 하나 이상의 실시예들에 따른 복원 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 8은 하나 이상의 실시예들에 따른 페일오버 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 9는 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 10은 하나 이상의 실시예들에 따른 스탠바이 시스템을 사용하여 블록 볼륨 시스템을 복원하기 위한 예시적인 흐름을 예시한다.
도 11은 하나 이상의 실시예들에 따른 블록 볼륨 시스템 및 스탠바이 시스템의 크기를 조정하기 위한 예시적인 흐름을 예시한다.
도 12는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 하나의 패턴을 예시하는 블록도이다.
도 13은 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 14는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 15는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 16은 적어도 일 실시예에 따른 예시적인 컴퓨터 시스템을 예시하는 블록도이다.
첨부된 도면들에서, 유사한 구성요소들 및/또는 특징부들은 동일한 참조 라벨들을 가질 수 있다. 추가로, 동일한 유형의 다양한 구성요소들은, 참조 라벨 다음의 유사한 구성요소들을 구별하는 대시 및 제 2 라벨에 의해 구별될 수 있다. 명세서에서 제 1 참조 라벨이 사용되는 경우, 설명은 제 2 참조 라벨에 상관 없이 동일한 제 1 참조 라벨을 갖는 유사한 구성요소들 중 임의의 하나의 구성요소에 적용이 가능하다.
1 illustrates an example system for asynchronous cross-region block volume replication in accordance with one or more embodiments.
2 illustrates an example technique for asynchronous block volume replication in accordance with one or more embodiments.
3 illustrates an example technique for restoring a block volume system with asynchronous replication in accordance with one or more embodiments.
4 illustrates an example technique for aggregating block volume replication metadata in accordance with one or more embodiments.
5 illustrates an example technique for creating a failover volume from a standby volume in accordance with one or more embodiments.
6 illustrates an example technique for resizing a standby volume in accordance with one or more embodiments.
7 illustrates an example flow for creating a recovery volume in accordance with one or more embodiments.
8 illustrates an example flow for creating a failover volume in accordance with one or more embodiments.
9 illustrates an example flow for creating a failback volume in accordance with one or more embodiments.
10 illustrates an example flow for restoring a block volume system using a standby system in accordance with one or more embodiments.
11 illustrates an example flow for resizing a block volume system and a standby system in accordance with one or more embodiments.
12 is a block diagram illustrating one pattern for implementing a cloud infrastructure as a service system according to at least one embodiment.
13 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment.
14 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment.
15 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment.
16 is a block diagram illustrating an exemplary computer system according to at least one embodiment.
In the accompanying drawings, similar components and/or features may have the same reference labels. Additionally, various elements of the same type may be distinguished by a second label and a dash distinguishing similar elements following the reference label. When a first reference label is used in the specification, the description is applicable to any one of similar elements having the same first reference label regardless of the second reference label.

다음의 설명에서, 다양한 실시예들이 설명될 것이다. 설명의 목적들을 위해, 특정 구성들 및 세부사항들이 실시예들의 완전한 이해를 제공하기 위해 기술된다. 그러나, 실시예들이 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 또한 당업자에게 자명할 것이다. 추가로, 잘 알려진 특징들은 설명되는 실시예를 모호하게 하지 않기 위해 생략되거나 또는 단순화될 수 있다.In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth to provide a thorough understanding of the embodiments. However, it will also be apparent to those skilled in the art that the embodiments may be practiced without these specific details. Additionally, well-known features may be omitted or simplified in order not to obscure the described embodiment.

클라우드-기반 플랫폼들은 사용자들에게 확장가능하고 유연한 컴퓨팅 자원들을 제공한다. 서비스형 인프라스트럭처(infrastructure as a service; IaaS)로도 지칭되는 이러한 클라우드-기반 플랫폼들은, 고객의 데이터에 대한 클라우드 솔루션들, 예컨대, 변환들의 저작, 데이터의 로딩, 및 데이터의 표현을 위한 솔루션들의 전체 스위트들을 제공할 수 있다. 일부 경우들에서, 고객 데이터는 분산 저장 시스템(예를 들어, 클라우드 저장부(storage)) 내의 객체 저장부 및/또는 블록 볼륨 저장부에 저장될 수 있다. 고객 데이터는, 예를 들어, 글로벌 분산 저장 시스템의 부분으로서 지리적 영역에 위치된 데이터 센터에 저장될 수 있다. 데이터 센터는, 적어도 부분적으로, 레이턴시, 초당 입력-출력 동작들(Input-Output operations per second; IOPS), 스루풋, 비용, 안정성, 등을 포함하는 하나 이상의 성능 메트릭들에 기초하여 선택될 수 있다. 일부 경우들에서, 데이터 센터의 최적 위치는 고객의 위치에 대응할 수 있다(예를 들어, 고객이 상당한 볼륨의 내부 데이터를 생성할 때). 일부 경우들에서, 최적 위치는 고객의 클라이언트 및/또는 사용자들의 위치에 대응할 수 있다(예를 들어, 고객이 컨텐츠 전달 네트워크를 운영할 때).Cloud-based platforms provide scalable and flexible computing resources to users. These cloud-based platforms, also referred to as infrastructure as a service (IaaS), are a suite of cloud solutions for a customer's data, such as solutions for authoring transformations, loading data, and presenting data. suites can be provided. In some cases, customer data may be stored in object storage and/or block volume storage within a distributed storage system (eg, cloud storage). Customer data may be stored, for example, in data centers located in geographic areas as part of a global distributed storage system. A data center may be selected based, at least in part, on one or more performance metrics including latency, input-output operations per second (IOPS), throughput, cost, reliability, and the like. In some cases, the optimal location of the data center may correspond to the customer's location (eg, when the customer generates significant volumes of internal data). In some cases, the optimal location may correspond to the location of the customer's clients and/or users (eg, when the customer operates a content delivery network).

고객 데이터는, 장애 다음에 백업 시스템을 1차 시스템으로 지정함("페일오버"로서 지칭됨)으로써 복구될 상이한 지리적 영역 또는 데이터 센터 내의 백업 시스템(가용성 도메인, 또는 "AD"로도 지칭됨)에 복사될 수 있다. 페일오버 시스템들은, 복구 포인트 목표(recovery point objective; RPO), 복구 시간 목표(recovery time objective; RTO) 및 재해 복구(disaster recovery; DR)를 포함하는 다수의 메트릭들에 의해 특징지어질 수 있다. 일반적으로, RPO는 페일오버 동안 얼마나 많은 데이터가 상실될 수 있는지를 설명하여 백업 시스템의 목표는 RPO를 최소화하는 것일 수 있다. 전형적으로, 백업 카피를 생성하는 단계는, 하나의 영역에서 백업을 수행하는 단계, 백업이 클라우드 시스템에 업로드될 때까지 대기하는 단계, 그런 다음 교차-영역 카피 동작을 개시하는 단계, 및 목적지 영역에서 백업이 완료될 때까지 대기하는 단계를 수반한다. 상당한 메타데이터 오버헤드가 각각의 백업과 연관될 수 있으며, 이는 높은 반복 레이트들로 계산 요구들 및 자원 비용을 증가시킬 수 있다. 이러한 이유로, RPO는 전형적으로 백업 시스템에 대해 몇 시간 단위로 이용가능하다(여기서 시간은 평균 데이터 전송 레이트를 고려할 때 데이터의 양을 나타낸다). Customer data is placed on a backup system (also referred to as an availability domain, or “AD”) in a different geographic area or data center to be recovered following a failure by designating the backup system as the primary system (referred to as “failover”). can be copied. Failover systems can be characterized by a number of metrics including recovery point objective (RPO), recovery time objective (RTO) and disaster recovery (DR). Typically, RPO describes how much data may be lost during a failover, so the goal of a backup system may be to minimize the RPO. Typically, creating a backup copy involves performing a backup in one region, waiting for the backup to be uploaded to the cloud system, then initiating a cross-region copy operation, and in the destination region This entails waiting for the backup to complete. Significant metadata overhead can be associated with each backup, which can increase computational demands and resource cost at high repetition rates. For this reason, RPOs are typically available on the order of hours for backup systems (where time represents the amount of data given the average data transfer rate).

유사하게, RTO는, RTO가 페일오버 이후에 데이터를 복원하기 위해 수반되는 시간의 길이를 나타냄에 따라 페일오버 시스템의 중요한 메트릭일 수 있다. 상이한 지리적 영역으로부터 복원된 백업에 대해, 입력-출력 동작들은, 볼륨이 완전히 복원될 때까지 전형적인 조건들에 비해 상승된 레이턴시를 나타낼 수 있다. 더욱이, 온-디맨드 데이터 동작들의 복원 시간들 및 레이턴시는, 예를 들어, 넓은-영역(region-wide) 장애에 응답하는 데이터 트래픽 이동에 대응하는 시스템 부하의 스파이크에 응답하여 상당히 증가할 수 있다. 레이턴시는, 분산 데이터 저장 시스템이 또한 교차-영역 백업 카피들로부터 백업 복원을 구현하는 동안 추가로 상승될 수 있다.Similarly, RTO can be an important metric of a failover system as it indicates the length of time involved to restore data after failover. For a backup restored from a different geographic area, input-output operations may exhibit elevated latency compared to typical conditions until the volume is fully restored. Moreover, recovery times and latency of on-demand data operations can increase significantly in response to a spike in system load, for example, corresponding to data traffic movement in response to a region-wide outage. Latency may be further raised while the distributed data storage system also implements backup restoration from cross-region backup copies.

고객 데이터는 가치가 있을 수 있기 때문에, 고객은, 예를 들어, 저장 안정성을 증가시키도록 구성된 데이터 중복성 및 인프라스트럭처(예를 들어, 예컨대 전원 공급장치 보강, 서지 보호, 등)를 포함하는 하나 이상의 접근방식들에 의해 데이터가 보호될 것으로 예상할 수 있다. 데이터 중복성은, 비제한적으로, 로컬 저장 매체(예를 들어, 물리적 저장 매체), 분산 저장 시스템, 및/또는 상이한 분산 저장 시스템에 고객 데이터를 복제하는 것을 포함하는 다수의 형태들을 취할 수 있다. 일부 경우들에서, 고객 데이터는 한 번에 모두 복제될 수 있으며, 이는 백업으로 지칭된다. 이러한 접근방식은, 백업이 발생하는 동안 시스템 입력-출력 동작들에서 상당한 레이턴시를 포함할 수 있다. 예를 들어, 저장 시스템은, 고객 데이터의 완전한 복사본(duplicate)이 보존된다는 것을 보장하기 위해 백업이 진행되는 동안 모든 판독 및 기입 동작들을 프리즈(freeze)할 수 있다. 이러한 경우들에서, 분산 저장 시스템에 새로운 데이터를 일시적으로 저장하기 위해 추가적인 버퍼 용량이 이용될 수 있거나 및/또는 고객 데이터 요청들이 지연될 수 있다. Because customer data may be valuable, customers may, for example, have one or more data redundancy and infrastructure configured to increase storage reliability (eg, power supply augmentation, surge protection, etc.) It can be expected that data will be protected by the approaches. Data redundancy can take many forms, including, but not limited to, replicating customer data to local storage media (eg, physical storage media), distributed storage systems, and/or different distributed storage systems. In some cases, customer data may be copied all at once, referred to as a backup. This approach can involve significant latency in system input-output operations while backups occur. For example, the storage system may freeze all read and write operations while the backup is in progress to ensure that a complete duplicate of customer data is preserved. In such cases, additional buffer capacity may be used to temporarily store new data in the distributed storage system and/or customer data requests may be deferred.

전체 볼륨의 백업과는 대조적으로, 고객 데이터는, 이하에서 도면들을 참조하여 상세하게 설명되는 바와 같이 비동기적으로 복제될 수 있다. 예를 들어, 고객 데이터는, 적어도 부분적으로 데이터 저장 시스템의 서브-유닛(예를 들어, 블록 볼륨 시스템의 파티션)의 증분(incremental) 변경을 설명하는 객체를 생성함으로써 계속적으로(예를 들어, 백업 시스템들에서 전형적일 수 있는 시간(hour)들과는 달리 분 간격으로) 복제될 수 있다. 다음의 단락들에서, 증분 변경을 설명하는 객체는 "델타"로도 지칭된다. 도 1을 참조하여 상세하게 설명되는 바와 같이, 델타는 2개의 비동기적 레코드들 사이의 고객 데이터의 하나 이상의 변경들을 설명할 수 있다. 분산 저장 시스템 내의 사용자 데이터의 상태의 레코드는 "스냅샷"으로도 지칭되며, 이하에서 도면들을 참조하여 상세히 설명되는 바와 같이, 단일 연대순(chronological) 시간과는 대조적으로 단일 논리적 시간에서의 데이터의 상태를 나타낼 수 있다. 일부 경우들에서, 델타들이 생성될 수 있으며, 델타들은 델타들이 생성될 때 저장되거나 및/또는 전송/복제될 수 있다. 이와 같이, 비동기적 복제는, 고객 데이터가 백업들이 아니라 델타들을 전송함으로써 복제되는 것을 허용할 수 있다.In contrast to full-volume backups, customer data can be replicated asynchronously, as described in detail with reference to the figures below. For example, customer data is continuously (eg, backed up) at least in part by creating objects that describe incremental changes to sub-units of a data storage system (eg, partitions in block volume systems). may be replicated (in intervals of minutes, as opposed to hours that may be typical in systems). In the following paragraphs, the object describing the incremental change is also referred to as a "delta". As described in detail with reference to FIG. 1, a delta can account for one or more changes of customer data between two asynchronous records. The record of the state of user data in a distributed storage system is also referred to as a "snapshot", and the state of the data in a single logical time as opposed to a single chronological time, as described in detail with reference to the figures below. can indicate In some cases, deltas may be created, and deltas may be stored and/or transmitted/replicated as the deltas are created. As such, asynchronous replication may allow customer data to be replicated by sending deltas rather than backups.

적어도 이러한 이유들로, 본원에서 설명되는 기술들은 백업 고객 데이터에 의존하는 데이터 중복 접근방식을 뛰어 넘는 하나 이상의 장점들을 나타낸다. 예를 들어, 스냅샷 이후의 데이터에 대한 변경들을 복제하기 위해 다수의 델타들을 생성하는 것은 데이터 복제 프로세스가 연대순 시간으로 세분화되는 것을 허용할 수 있으며, 레이턴시, IOPS 및/또는 다른 성능 메트릭들에 대한 데이터 복제의 영향을 감소시킬 수 있다. For at least these reasons, the techniques described herein exhibit one or more advantages over data redundancy approaches that rely on backup customer data. For example, creating multiple deltas to replicate changes to the data since the snapshot can allow the data replication process to be broken down in chronological time, and can measure latency, IOPS, and/or other performance metrics. Reduce the impact of data duplication.

전체 볼륨을 백업하는 것에 의존하는 접근방식들은, 시스템 장애가 가용성 백업이 고객 데이터의 가치 있는 변경들을 반영하지 않을 때 발생하는 경우(예를 들어, 기존 백업이 이루어진 이후 오랜 시간이 지나서 장애가 발생하는 경우, 또는 마지막 백업 이후 고객 데이터에 대한 상당한 변경들이 발생한 경우) 데이터 손실의 위험성을 가질 수 있다. 비동기적 복제를 구현하는 것은 또한, 고객 데이터의 보존을 개선할 뿐만 아니라 전체 시스템 성능을 개선할 수 있다. 이와 같이, 비동기적 복제 접근방식들은 백업 시스템들에 비해 개선된 RPO, RTO, 및 DR을 제공할 수 있다.Approaches that rely on backing up the entire volume are better suited for cases where a system failure occurs when an available backup does not reflect valuable changes to customer data (for example, when an existing backup fails long after it was made; or if significant changes have occurred to customer data since the last backup). Implementing asynchronous replication may also improve retention of customer data as well as improve overall system performance. As such, asynchronous replication approaches can provide improved RPO, RTO, and DR over backup systems.

예시적인 예로서, 블록 볼륨 시스템은 전 세계의 다수의 지리적 영역들에 다수의 데이터 센터들을 갖는 분산 저장 시스템에 구현될 수 있다. 데이터 센터들 중 하나의 블록 볼륨 시스템에 저장된 고객 데이터는, 제1 데이터 센터가 심각한 장애를 경험하는 경우에 데이터 손실을 방지하기 위해 제2 데이터 센터에 복제될 수 있다. 고객 데이터는 스냅샷들 및 델타들 둘 모두를 생성함으로써 복제될 수 있으며, 여기서 스냅샷들은 다수의 파티션들에 걸쳐 고객 데이터의 전체적(holistic) 복제를 제공할 수 있으며, 델타는 선행 스냅샷에 후속하는 단일 파티션에 대한 고객 데이터에 대한 변경들의 증분 추적을 허용할 수 있다. 일단 델타가 생성되면, 델타는 델타가 설명하는 고객 데이터와 함께 제2 데이터 센터로 전송될 수 있으며, 이는 제1 데이터 센터에서 장애가 발생하는 경우에 고객 데이터를 복원하기 위해 제2 데이터 센터에 있는 저장 시스템에 의해 사용될 수 있다. 델타가 하나의 파티션에 대해 생성되고 있는 동안, 다른 파티션들은 입력-출력 동작들을 위해 이용가능한 채로 남아 있을 수 있으며, 제1 데이터 센터에 있는 저장 시스템이 희망되는 레벨의 성능을 유지하는 것을 가능하게 할 수 있다. 제1 데이터 센터에서 장애가 발생하는 경우에, 제2 데이터 센터는 제1 데이터 센터의 역할을 맡을 수 있거나("페일오버"라고 함) 및/또는 고객 데이터가 제1 데이터 센터로 복원되어 동작을 재개할 수 있다("페일백"이라고 함).As an illustrative example, a block volume system may be implemented in a distributed storage system having multiple data centers in multiple geographic regions around the world. Customer data stored in a block volume system in one of the data centers may be replicated to a second data center to prevent data loss in case the first data center experiences a catastrophic failure. Customer data can be replicated by creating both snapshots and deltas, where snapshots can provide holistic replication of customer data across multiple partitions, where a delta follows a preceding snapshot. may allow incremental tracking of changes to customer data for a single partition that Once a delta is created, the delta, along with the customer data it describes, can be transferred to a second data center, which is stored in the second data center to restore customer data in the event of a failure in the first data center. can be used by the system. While a delta is being created for one partition, other partitions may remain available for input-output operations, enabling the storage system in the first data center to maintain a desired level of performance. can In the event of a failure in the first data center, the second data center may take over the role of the first data center (referred to as a "failover") and/or customer data may be restored to the first data center to resume operations. (referred to as "failback").

도 1은 하나 이상의 실시예들에 따른 비동기적 교차-영역 블록 볼륨 복제를 위한 예시적인 시스템(100)을 예시한다. 이상에서 설명된 바와 같이, 시스템(100)은, 장애 복구 동안 고객 데이터를 제공하기 위해, 고객 데이터를 소스 시스템으로부터 목적지 시스템으로 복제함으로써 데이터 중복성을 가능하게 할 수 있다. 일부 실시예들에서, 제1 데이터 센터(120)(예를 들어, 소스 시스템)는 블록 볼륨 시스템(122)에 데이터를 저장할 수 있다. 일부 실시예들에서, 제1 데이터 센터(120)는 블록 볼륨 시스템이 아니라 객체 저장 시스템에 데이터를 저장할 수 있다. 데이터는 제1 데이터 센터(120)의 사용자에 의해 생성되거나 및/또는 제공될 수 있다. 제1 데이터 센터(120)는, 예를 들어, 성능 메트릭들(예를 들어, 레이턴시, IOPS, 스루풋, 비용, 안정성, 등)과 같은 하나 이상의 동작 기준에 대응할 수 있거나 및/또는 사용자의 위치에 근접할 수 있는 제1 지리적 영역(예를 들어, 영역 A)에 위치될 수 있다. 일부 경우들에서, 제1 데이터 센터(120)의 정상적인 동작의 중단들(예를 들어, 전력 장애, 데이터 손상, 분산 서비스 거부 공격(distributed denial of service attack; DDOS), 자연 재해, 등)의 가능성들은 데이터 손실의 위험을 제기할 수 있다. 데이터 손실의 위험을 잠재적으로 감소시키기 위해, 데이터는 제2 데이터 센터(130)(예를 들어, 목적지 시스템)에 복제될 수 있다. 일부 실시예들에서, 제2 데이터 센터(130)는 제1 데이터 센터(120)의 위치와는 상이한 지리적 영역에 위치될 수 있으며, 이는 자연 재해들 또는 인프라스트럭처 장애들에 의해 제기되는 데이터 손실의 위험을 감소시킬 수 있다. 마찬가지로, 제1 데이터 센터(120)와 별개인 제2 데이터 센터(130)에 데이터를 저장하는 것은, 제1 데이터 센터를 목표로 하는 입력-출력 동작들을 중단시키거나 및/또는 데이터 손실을 야기할 수 있는 악성 액션들(예를 들어, DDOS, 데이터 손상, 등)에 대한 잠재적인 취약성을 감소시킬 수 있다. 이하에서 더 상세하게 설명되는 바와 같이, 제2 데이터 센터(130)는, (예를 들어, 고객 구성 및/또는 선호사항들에 기초하여) 스탠바이(standby) 볼륨, 객체 저장물(object storage), 및/또는 다른 저장 포맷들로서 데이터를 데이터 저장부(data store)(132)에 저장할 수 있다. 1 illustrates an example system 100 for asynchronous cross-region block volume replication in accordance with one or more embodiments. As described above, system 100 may enable data redundancy by replicating customer data from a source system to a destination system to provide customer data during disaster recovery. In some embodiments, first data center 120 (eg, source system) may store data in block volume system 122 . In some embodiments, first data center 120 may store data in an object storage system rather than a block volume system. Data may be generated and/or provided by users of the first data center 120 . The first data center 120 may correspond to one or more operating criteria, such as, for example, performance metrics (eg, latency, IOPS, throughput, cost, reliability, etc.) and/or a user's location. It may be located in a first geographic area that may be proximate (eg, area A). In some cases, the possibility of disruptions in the normal operation of the first data center 120 (eg, power failure, data corruption, distributed denial of service attack (DDOS), natural disaster, etc.) may pose a risk of data loss. To potentially reduce the risk of data loss, the data may be replicated to the second data center 130 (eg, destination system). In some embodiments, the second data center 130 may be located in a different geographic area than the location of the first data center 120, which reduces the risk of data loss posed by natural disasters or infrastructure failures. can reduce risk. Similarly, storing data in a second data center 130 separate from the first data center 120 may disrupt input-output operations targeting the first data center and/or cause data loss. It can reduce potential vulnerability to possible malicious actions (eg, DDOS, data corruption, etc.). As described in more detail below, the second data center 130 may include (e.g., based on customer configuration and/or preferences) a standby volume, object storage, and/or store data in data store 132 in other storage formats.

일부 실시예들에서, 제1 데이터 센터(120)에 저장된 데이터는 비동기적 복제(140) 시스템을 통해 제2 데이터 센터(130)에 복제될 수 있다. 이상에서 설명된 바와 같이, 비동기적 복제는, 동작을 복원할 때 비동기적 복제가 정상 입력-출력 프로세스들의 감소된 중단을 나타낼 수 있으며(예를 들어, RTO) 제1 데이터 센터(120)에서의 중단에 의해 초래되는 데이터 손실의 정도를 감소시킬 수 있다(예를 들어, RPO)는 점에서, 주기적 백업 복제에 비해 기술적인 장점들을 제공할 수 있다. 일부 실시예들에서, 비동기적 복제(140)는, 새로운 백업 이미지로 주기적으로 교체될 수 있는 특정 연대순 시간에 생성된 코히어런트(coherent) 백업 이미지로서가 아니라, 증분식으로 제1 데이터 센터(120)로부터 제2 데이터 센서(130)로 복제된 데이터를 생성하여 전송하는 것을 포함할 수 있다. 대신에, 이하에서 도 2를 참조하여 더 상세하게 설명되는 바와 같이, 비동기적 복제(140)는, 예를 들어, 제1 데이터 센터(120)에 저장된 데이터의 변경들의 레코드들 및/또는 데이터를 생성하고 전송함으로써 제2 데이터 센터(130)에 저장된 데이터를 동적으로 업데이트할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)의 고객 및/또는 사용자는, 구성 볼륨들이 생성될 때 및/또는 블록 볼륨 시스템(122)이 분산 데이터 저장 시스템으로서 이미 동작하고 있는 이후에 이용가능한 후속 옵션으로서 비동기적 복제(140)를 구성할 수 있다. 일부 실시예들에서, 비동기적 복제(140)를 구성하는 것은 목적지 영역(예를 들어, 제2 지리적 영역, "영역 B")을 지정하는 것을 포함할 수 있다. 일부 실시예들에서, 예를 들어, 복제된 데이터가 스탠바이 볼륨 시스템에 저장될 때, 비동기적 복제(140)를 구성하는 것은 목적지 영역 내의 목적지 AD를 지정하는 것을 포함할 수 있다. In some embodiments, data stored in first data center 120 may be replicated to second data center 130 via an asynchronous replication 140 system. As described above, asynchronous replication may represent reduced interruption of normal input-output processes when restoring operation (e.g., RTO) in the first data center 120. It can provide technical advantages over periodic backup replication in that it can reduce the extent of data loss caused by outages (eg, RPO). In some embodiments, asynchronous replication 140 is incrementally, rather than as a coherent backup image created at a specific chronological time, which can be periodically replaced with a new backup image ( 120 to the second data sensor 130 to generate and transmit the copied data. Instead, as described in more detail with reference to FIG. 2 below, asynchronous replication 140 may, for example, copy data and/or records of changes to data stored in first data center 120 . By generating and transmitting data stored in the second data center 130 may be dynamically updated. In some embodiments, customers and/or users of the block volume system 122 may have subsequent availability when the configuration volumes are created and/or after the block volume system 122 is already operating as a distributed data storage system. As an option, asynchronous replication 140 can be configured. In some embodiments, configuring asynchronous replication 140 may include designating a destination area (eg, a second geographic area, “region B”). In some embodiments, configuring asynchronous replication 140 may include specifying a destination AD within the destination area, for example when the replicated data is stored on the standby volume system.

일부 실시예들에서, 비동기적 복제(140)는, 블록 볼륨 시스템(122)에 저장된 데이터의 스냅샷을 생성할 수 있는 스냅샷 생성(142) 서브-시스템을 포함할 수 있다. 일부 경우들에서, 스냅샷은, 이하에서 더 상세하게 설명되는 바와 같이 특정 논리적 시간에서의 블록 볼륨 시스템(122)에 저장된 사용자 데이터의 순간(instant) 상태를 설명할 수 있다. 백업 복제 접근방식과는 대조적으로, 비동기적 복제(140)는, 스냅샷 이후의 블록 볼륨 시스템(122) 내의 데이터에 대해 이루어진 변경들이 이에 의해 확인될 수 있는 델타 생성(144) 서브-시스템을 포함할 수 있다. 변경들은 결과적으로 델타들로서 표현될 수 있으며, 이들은 스냅샷을 전체적으로 교체하는 것이 아니라 스냅샷을 업데이트하기 위해 사용될 수 있다. 스냅샷 생성(142)은, 예를 들어, 분 단위로(예를 들어, 1-10 분, 10-20분, 20-30분 등) 및/또는 시간 단위로(예를 들어, 1-10 시간) 주기적으로 새로운 스냅샷들을 생성할 수 있다. In some embodiments, asynchronous replication 140 may include a snapshot creation 142 sub-system that may create snapshots of data stored in block volume system 122 . In some cases, a snapshot can describe the instant state of user data stored in block volume system 122 at a particular logical time, as described in more detail below. In contrast to the backup replication approach, asynchronous replication 140 includes a delta creation 144 sub-system by which changes made to data in the block volume system 122 since the snapshot can be verified. can do. Changes can consequently be expressed as deltas, which can be used to update the snapshot rather than replace it entirely. Snapshot creation 142 may be, for example, minute-by-minute (eg, 1-10 minutes, 10-20 minutes, 20-30 minutes, etc.) and/or hourly (eg, 1-10 minutes, etc.). time) can create new snapshots periodically.

일부 실시예들에서, 스냅샷 생성(142)은 블록 볼륨 시스템(122)의 하나 이상의 파티션들을 수반하는 2-단계 커밋(commit) 프로토콜을 진행할 수 있다. 2-단계 커밋은, 스냅샷 생성(142)이, 블록 볼륨 시스템으로부터 파티션에 대한 입력-출력 동작들이 일시 중단되었다는 커밋먼트(commitment)를 수신한 이후에 파티션 이미지를 생성하는 것을 포함할 수 있다. 파티션 이미지가 완료된 이후에, 파티션은 입력-출력 동작들을 재개하도록 릴리즈될 수 있다. 일부 실시예들에서, 2-단계 커밋은 블록 볼륨 시스템(122)에 전체적으로 적용될 수 있어서 전체 블록 볼륨 시스템에 대한 모든 판독 및 기입 동작들은 스냅샷이 생성되는 시간 동안 차단될 수 있다. 일부 실시예들에서, 스냅샷은 대략 밀리초 단위(예를 들어, 1-15 msec, 5-10 msec, 등)로 생성될 수 있다. In some embodiments, snapshot creation 142 may proceed with a two-phase commit protocol involving one or more partitions of block volume system 122 . The two-phase commit may include creating a partition image after snapshot creation 142 receives a commitment from the block volume system that input-output operations for the partition have been suspended. After the partition image is complete, the partition can be released to resume input-output operations. In some embodiments, a two-phase commit may be applied to the block volume system 122 as a whole so that all read and write operations to the entire block volume system may be blocked during the time the snapshot is created. In some embodiments, snapshots may be created on the order of milliseconds (eg, 1-15 msec, 5-10 msec, etc.).

일부 실시예들에서, 스냅샷 생성(142)은 파티션 단위로 블록 볼륨 시스템(122)에 저장된 데이터의 이미지를 생성하는 것을 포함할 수 있다. 블록 볼륨 시스템(122)이 하나 이상의 파티션들에 데이터를 저장하는 경우, 스냅샷 생성(142)은, 스냅샷 생성이 하나의 파티션의 입력-출력 동작을 방해하지 않도록 파티션 이미지의 생성을 스케줄링할 수 있다. 스냅샷 생성(142)은, 이미징되고 있는 파티션 이외의 파티션들의 정상 입력-출력 동작들의 중단을 잠재적으로 회피하면서 블록 볼륨 시스템에 포함된 모든 파티션의 이미지들을 생성하고 컴파일(compile)할 수 있다. In some embodiments, creating snapshot 142 may include creating an image of data stored in block volume system 122 on a partition by partition basis. If block volume system 122 stores data in one or more partitions, snapshot creation 142 may schedule creation of a partition image such that snapshot creation does not disrupt input-output operations of one partition. there is. Snapshot creation 142 may create and compile images of all partitions included in the block volume system while potentially avoiding interruption of normal input-output operations of partitions other than the one being imaged.

스냅샷은 특정 논리적 시간에서 데이터의 이미지를 기록할 수 있으며, 여기서 논리적 시간은 스냅샷 생성(142)의 구현을 나타낸다. 예를 들어, 스냅샷 생성(142)에 의해 제1 스냅샷은 제1 논리적 시간으로 식별될 수 있으며, 블록 볼륨 시스템(122)의 하나 이상의 파티션들이 스냅샷 생성(142)에 의해 프로세싱되는 연대순 시간의 길이 동안 생성될 수 있다. 마찬가지로, 스냅샷 생성(142)은, 스냅샷 생성(142) 서브시스템의 제2 반복에 대응하는, 제2 논리적 시간으로 식별될 수 있는 연대순 시간 기간이 만료된(예를 들어, 1-10분, 등) 이후에 블록 볼륨 시스템(122)의 제2 스냅샷을 생성할 수 있다. A snapshot may record an image of data at a particular logical time, where the logical time represents an implementation of snapshot creation 142 . For example, a first snapshot by create snapshot 142 may be identified as a first logical time, the chronological time at which one or more partitions of block volume system 122 are processed by create snapshot 142 . can be generated for the length of Similarly, snapshot creation 142 may occur when a chronological time period, which may be identified as a second logical time, has expired (e.g., 1-10 minutes), corresponding to a second iteration of the snapshot creation 142 subsystem. , etc.), a second snapshot of the block volume system 122 may be created.

일부 실시예들에서, 델타 생성(144)은, 적어도 부분적으로 비동기적 복제(140)가 변경되지 않은 데이터를 전송하지 않고 새로운 또는 수정된 데이터를 제2 데이터 센터(130)에 전송하는 것을 가능하게 함으로써 비동기적 복제(140)를 가능하게 할 수 있다. 일부 경우들에서, 델타는 제1 스냅샷과 제2 스냅샷 사이의 블록 볼륨 시스템(122)의 파티션에 저장된 데이터의 변경들을 설명할 수 있다. 예를 들어, 델타 생성(144)은 제2 스냅샷과 제1 스냅샷을 비교할 수 있으며, 추가되거나, 제거되거나, 수정되거나 하는 등의 블록들을 확인할 수 있다. 이러한 방식으로, 델타들은, 2개의 연속적인 스냅샷들 사이에 제거된 데이터를 또한 설명할 수 있다. In some embodiments, delta generation 144, at least in part, enables asynchronous replication 140 to transmit new or modified data to second data center 130 without transmitting unchanged data. By doing so, asynchronous replication 140 can be made possible. In some cases, a delta can account for changes in data stored in a partition of block volume system 122 between the first and second snapshots. For example, delta generation 144 may compare the second snapshot with the first snapshot, and identify blocks that have been added, removed, modified, and the like. In this way, deltas can also account for data removed between two consecutive snapshots.

일부 경우들에서, 델타는 고유 식별자뿐만 아니라 메모리 포인터들의 리스트를 포함하는 논리적 구조체일 수 있다. 메모리 포인터는, 2개의 연속적인 스냅샷들 사이에서 변경된 데이터에 대한 제1 데이터 센터(120) 및/또는 제2 데이터 센터(130) 내의 메모리 위치들을 설명할 수 있다. 이하에서 도 2 내지 도 6을 참조하여 더 상세하게 설명되는 바와 같이, 비동기적 복제(140)를 구현하는 것은 전체 스냅샷을 전송하는 것이 아니라 파티션에 대한 델타를 제2 데이터 센터(130)로 전송하는 것을 포함할 수 있다. In some cases, a delta may be a logical structure containing a unique identifier as well as a list of memory pointers. A memory pointer may describe memory locations within the first data center 120 and/or the second data center 130 for data that has changed between two successive snapshots. As described in more detail with reference to FIGS. 2-6 below, implementing asynchronous replication 140 does not transfer the full snapshot, but rather the delta for the partition to the second data center 130. may include doing

일부 실시예들에서, 제2 데이터 센터(130)에 있는 데이터 저장부(132)는 복제된 데이터를 객체 저장물로서 저장할 수 있다. 이와 같이, 비동기적 복제(140)는 제1 데이터 센터(120)로부터의 데이터를 청크 객체들로 변환하기 위한 데이터 변환(146) 서브-시스템을 포함할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)으로부터의 데이터는 4 MB 청크 객체들에 통합될 수 있다. 일부 실시예들에서, 청크 객체들은 시스템 백업 동작들을 위해 사용되는 것과 유사한 포맷을 구현할 수 있으며, 이는 비동기적 복제(140)가 백업 및/또는 계층형 업로드 기술들을 이용하는 기존 분산 저장 시스템들에 통합되는 것을 가능하게 할 수 있다.In some embodiments, data store 132 in second data center 130 may store replicated data as an object store. As such, asynchronous replication 140 may include a data transformation 146 sub-system for transforming data from first data center 120 into chunked objects. In some embodiments, data from block volume system 122 may be consolidated into 4 MB chunk objects. In some embodiments, chunk objects may implement a format similar to that used for system backup operations, in which asynchronous replication 140 is integrated into existing distributed storage systems that utilize backup and/or tiered upload techniques. can make things possible

일부 실시예들에서, 비동기적 복제(140)는, 블록 볼륨 시스템(122)의 파티션들에 대응하는 델타들이 생성된 이후에 체크포인트를 생성할 수 있다. 일부 실시예들에서, 체크포인트 생성(148) 서브-시스템은, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이, 델타들을 집성하고 집성된 변경들을 이전에 생성된 체크포인트에 적용함으로써 체크포인트를 생성할 수 있다. In some embodiments, asynchronous replication 140 may create a checkpoint after deltas corresponding to partitions of block volume system 122 have been created. In some embodiments, the checkpoint generation 148 sub-system checks by aggregating the deltas and applying the aggregated changes to a previously created checkpoint, as described in more detail with reference to FIG. 4 below. points can be created.

제1 데이터 센터가 장애(예를 들어, 심각한 장애)를 경험하고, 예를 들어, 블록 볼륨 시스템(122)의 사용자 및/또는 고객에 의해 시스템의 복원이 희망될 때, 페일오버/페일백 요청(150)이 비동기적 복제(140)에 제공될 수 있다. 페일오버/페일백 요청(150)은, 비동기적 복제(140)가 제2 지리적 영역에 저장된 복제된 데이터를 사용하여 복원 볼륨을 생성하게 하는 복원 요청의 형태일 수 있다. 일부 실시예들에서, 비동기적 복제(140)는 페일오버/페일백 요청(150)을 수신하는 것에 응답하여 하나 이상의 복원 동작들을 구현할 수 있다. 일부 실시예들에서, 페일오버/페일백 요청(150)은 분산 저장 시스템의 외부 서비스에 의한 요청 및/또는 분산 저장 시스템의 사용자에 의한 요청을 포함할 수 있다. 일부 경우들에서, 데이터 저장부(132)가 블록 볼륨 시스템(122)의 복제본(replica)(예를 들어, 스탠바이 볼륨)일 때와 같이, 페일오버 요청은, 데이터 저장부(132)가 블록 볼륨 시스템(122)의 역할을 맡아야 한다는 것을 나타낼 수 있다. 예를 들어, 데이터 저장부는 사용자 데이터를 수반하는 입력-출력 동작들을 핸들링할 수 있다. 일부 실시예들에서, 페일오버/페일백 요청(150)은, 제1 데이터 센터(120)가 이상에서 설명된 바와 같이 복제된 데이터를 수신하고 페일오버 요청을 초래한 장애 이전의 동작들을 재개하도록 구성되어야 한다는 것을 나타낼 수 있다. When the first data center experiences a failure (eg, severe failure) and restoration of the system is desired by, for example, users and/or customers of the block volume system 122, a failover/failback request is requested. (150) may be provided for asynchronous replication (140). Failover/failback request 150 may be in the form of a restore request that causes asynchronous replication 140 to create a restore volume using replicated data stored in the second geographic region. In some embodiments, asynchronous replication 140 may implement one or more restore operations in response to receiving failover/failback request 150 . In some embodiments, failover/failback request 150 may include a request by a service external to the distributed storage system and/or a request by a user of the distributed storage system. In some cases, such as when data store 132 is a replica (e.g., a standby volume) of block volume system 122, a failover request may result in data store 132 being a block volume It may indicate that the role of system 122 should be assumed. For example, the data store may handle input-output operations involving user data. In some embodiments, the failover/failback request 150 causes the first data center 120 to receive the replicated data as described above and resume operations prior to the failure that caused the failover request. It may indicate that it should be configured.

도 2는 하나 이상의 실시예들에 따른 비동기적 블록 볼륨 복제를 위한 예시적인 기술(200)을 예시한다. 이상에서 설명된 바와 같이, 비동기적 복제는, 사용자 데이터가 단일 백업 이미지로서가 아니라 증분 단위들로 소스 시스템으로부터 목적지 시스템으로 전송되는 것을 가능하게 할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)는, 입력-출력(input-output; I/O) 동작들(210)을 통해 사용자로부터 수신되고 사용자에게 제공될 수 있는 데이터를 저장할 수 있다. 따라서, 수신된 데이터는 블록 볼륨 시스템(122)의 하나 이상의 구성 파티션들(220)에 저장될 수 있다. 비동기적 복제 시스템들(예를 들어, 도 1의 비동기적 복제(140))은 이하에서 설명되는 하나 이상의 프로세스들에 의해 블록 볼륨 시스템(122)으로부터의 사용자 데이터를 복제하여 데이터 저장부(132)로 송신할 수 있다. 2 illustrates an example technique 200 for asynchronous block volume replication in accordance with one or more embodiments. As described above, asynchronous replication may enable user data to be transferred from a source system to a destination system in increments rather than as a single backup image. In some embodiments, block volume system 122 may store data that may be received from and presented to a user via input-output (I/O) operations 210 . Thus, received data may be stored in one or more constituent partitions 220 of block volume system 122 . Asynchronous replication systems (e.g., asynchronous replication 140 of FIG. 1) replicate user data from block volume system 122 to data store 132 by one or more processes described below. can be sent to

일부 실시예들에서, 사용자 데이터는 제1 스냅샷(230)을 생성함으로써(예를 들어, 동작(250)) 복제될 수 있다. 도 1을 참조하여 상세하게 설명된 바와 같이, 스냅샷은 블록 볼륨 시스템(122)에 저장된 데이터의 레코드일 수 있다. 제1 스냅샷(130)의 스냅샷 생성(예를 들어, 도 1의 스냅샷 생성(142))은 제1 논리적 시간(260)에서 발생할 수 있다. 도 1을 참조하여 더 상세하게 설명된 논리적 시간은, 예를 들어, 스냅샷 생성이 파티션 단위로 진행될 때, 블록 볼륨 시스템(122)의 구성 파티션들(220)의 각각으로 2-단계 커밋 프로토콜들을 구현하는 스냅샷 생성 동작(예를 들어, 동작(250))의 반복을 설명할 수 있다. 이러한 경우들에서, 제1 논리적 시간(260)은 스냅샷이 생성되고 있는 동안의 시간 기간에 대응할 수 있다. In some embodiments, user data may be replicated by creating a first snapshot 230 (eg, operation 250 ). As described in detail with reference to FIG. 1 , a snapshot may be a record of data stored in block volume system 122 . Snapshot creation of the first snapshot 130 (eg, snapshot creation 142 of FIG. 1 ) may occur at a first logical time 260 . The logical time described in more detail with reference to FIG. 1 is, for example, when snapshot creation proceeds on a partition-by-partition basis, each of the constituent partitions 220 of the block volume system 122 uses a two-phase commit protocol. An iteration of the snapshot creation operation (eg, operation 250) to be implemented may be described. In such cases, first logical time 260 may correspond to a period of time during which the snapshot is being created.

일부 경우들에서, 제1 스냅샷(230)은 블록 볼륨 시스템(122)에 저장된 사용자 데이터의 비동기적 복제의 가장 첫 번째 구현이다. 이러한 경우들에서, 제1 스냅샷(230)에 의해 표현되는 전체 데이터 세트는 데이터 저장부(132)로 전송될 수 있다. 이러한 방식으로, 제1 스냅샷(130)은, 적어도, 메타데이터(예를 들어, 이하에서 설명되는 바와 같은 매니페스트) 및 사용자 데이터의 레코드가 소스 시스템으로부터 목적지 시스템으로 전송될 수 있다는 점(예를 들어, 동작(252))에서 백업과 유사할 수 있다. In some cases, first snapshot 230 is the very first implementation of an asynchronous copy of user data stored in block volume system 122 . In such cases, the entire data set represented by first snapshot 230 may be transferred to data store 132 . In this way, first snapshot 130 provides at least the knowledge that records of user data and metadata (e.g., a manifest as described below) can be transferred from a source system to a destination system (e.g., a manifest). For example, operation 252) may be similar to a backup.

일부 실시예들에서, 제1 스냅샷은 블록 볼륨 시스템(122) 및/또는 구성 파티션들(220)의 디스크 이미지일 수 있다. 일부 실시예들에서, 제1 스냅샷(230)은 다수의 블록 이미지들(232)을 포함할 수 있어서, 제1 스냅샷(230)에 의해 설명되는 데이터는 적어도 부분적으로 블록 이미지들(232)을 개별적으로 및/또는 그룹들로 전송함으로써 데이터 저장부(132)에 비동기적으로 전송될 수 있다. 도 3을 참조하여 더 상세하게 설명되는 바와 같이, 블록 이미지들(232)은, 예를 들어, 데이터 저장부(132)가 객체 저장 시스템일 때 데이터 저장부(132)에 저장될 청크 객체들로 변환될 수 있다.In some embodiments, the first snapshot may be a disk image of block volume system 122 and/or constituent partitions 220 . In some embodiments, first snapshot 230 may include multiple block images 232 such that the data described by first snapshot 230 is at least partially block images 232 may be asynchronously transmitted to the data store 132 by transmitting individually and/or in groups. As described in more detail with reference to FIG. 3 , the block images 232 are chunk objects to be stored in the data store 132 when the data store 132 is an object storage system, for example. can be converted

일부 실시예들에서, 비동기적 복제는 제2 논리적 시간(262)에서 제2 스냅샷(240)을 생성하는 것(예를 들어, 동작(254))을 포함할 수 있다. 일부 실시예들에서, 제2 논리적 시간(262)은, 이상에서 도 1을 참조하여 더 상세하게 설명된 바와 같은 제1 논리적 시간(260) 다음의 시간 기간에 대응한다. 예를 들어, 제2 스냅샷(240)은, 제1 스냅샷(230)의 생성 이후의 몇 분(예를 들어, 1-15분, 5-10분, 등)에서 이상에서 설명된 2-단계 커밋 프로토콜에 의해 생성될 수 있다. 일부 실시예들에서, 제2 스냅샷(240)은 제1 스냅샷(230)에 비해 블록 볼륨 시스템(122)에 저장된 데이터에 대한 하나 이상의 변경들을 포함할 수 있다.In some embodiments, asynchronous replication may include creating a second snapshot 240 at a second logical time 262 (eg, operation 254 ). In some embodiments, the second logical time 262 corresponds to a time period following the first logical time 260 as described in more detail with reference to FIG. 1 above. For example, the second snapshot 240 may take a few minutes (eg, 1-15 minutes, 5-10 minutes, etc.) after the creation of the first snapshot 230 to perform the above-described 2- It can be created by a step-commit protocol. In some embodiments, second snapshot 240 may include one or more changes to data stored in block volume system 122 relative to first snapshot 230 .

제2 스냅샷(240)을 직접적으로 전송하는 것이 아니라, 기술(200)은 블록 볼륨 시스템(122)의 구성 파티션들에 대응하는 델타들(242)을 생성하는 것(예를 들어, 동작(256))을 포함할 수 있다. 이상에서 도 1을 참조하여 더 상세하게 설명된 바와 같이, 델타 생성(예를 들어, 도 1의 델타 생성(144))은, 각각의 파티션(220)에 대한 델타들(242)에 포함된 데이터의 적어도 부분을 구성할 수 있는, 목적지 시스템(예를 들어, 데이터 저장부(132))의 참조 청크 식별자에 페어링된 수정된 블록들(포인트들에 의해 식별됨)의 리스트를 생성하기 위해 제1 스냅샷(230)에 반영된 데이터의 상태와 제2 스냅샷(240)에 반영된 데이터의 상태를 비교하는 것을 포함할 수 있다. 일부 실시예들에서, 델타들은 또한 고유 델타 식별자를 포함할 수 있다. 일부 실시예들에서, 고유 델타 식별자는 제2 스냅샷(240)의 식별자에 대응할 수 있다. 이러한 방식으로, 델타들(242)은, 예를 들어, I/O 히스토리를 제공하기 위한 접근방식으로서 제2 논리적 시간(262)까지 추적될 수 있는 데이터에 대한 변경들을 반영할 수 있다.Rather than directly transferring the second snapshot 240, the technique 200 involves creating deltas 242 corresponding to constituent partitions of the block volume system 122 (e.g., operation 256 )) may be included. As described in more detail with reference to FIG. 1 above, delta generation (eg, delta generation 144 of FIG. 1 ) is data included in deltas 242 for each partition 220 . First, to generate a list of modified blocks (identified by points) paired to a reference chunk identifier of the destination system (e.g., data store 132), which may constitute at least a portion of This may include comparing the state of data reflected in the snapshot 230 and the state of data reflected in the second snapshot 240 . In some embodiments, deltas may also include a unique delta identifier. In some embodiments, the unique delta identifier may correspond to the identifier of second snapshot 240 . In this way, deltas 242 can reflect changes to data that can be tracked up to a second logical time 262, for example, as an approach to providing I/O history.

일단 생성되면, 델타들(242)은 목적지 시스템, 예를 들어, 데이터 저장부(132)로 전송될 수 있다(예를 들어, 동작(258)). 일부 실시예들에서, 델타들(242)은 블록 볼륨 시스템(122)에 추가된 임의의 새로운 데이터와 함께 전송될 수 있다. 제1 논리적 시간(260)과 제2 논리적 시간(262) 사이에서 블록 볼륨 시스템(122)으로부터 제거된 데이터는, 소스 시스템으로부터 목적지 시스템으로 임의의 데이터(예를 들어, 청크 객체들)를 전송하지 않고 델타(242)에 포함된 메타데이터에 의해 반영될 수 있다.Once generated, deltas 242 may be transmitted to a destination system, eg, data store 132 (eg, operation 258). In some embodiments, deltas 242 may be transmitted along with any new data added to block volume system 122 . Data removed from the block volume system 122 between first logical time 260 and second logical time 262 does not transfer any data (eg, chunk objects) from the source system to the destination system. and may be reflected by the metadata included in delta 242.

도 3은 하나 이상의 실시예들에 따른 비동기적 복제에 의해 블록 볼륨 시스템을 복원하기 위한 예시적인 기술(300)을 예시한다. 이상에서 도 1 내지 도 2를 참조하여 설명된 비동기적 복제 시스템의 부분으로서, 목적지 시스템, 예를 들어, 제2 데이터 센터(130)는 소스 시스템(예를 들어, 도 1의 제1 데이터 센터(120))에 저장된 데이터의 복제본을 수신하고 유지할 수 있다. 일부 실시예들에서, 제2 데이터 센터(130)는 소스 시스템의 지리적 영역과는 상이한 지리적 영역(예를 들어, 영역 A가 아니라 영역 B)에 위치될 수 있다. 제2 데이터 센터(130)는, 복제된 데이터를 하나 이상의 데이터 객체들(310)로서 객체 저장부에 저장할 수 있는 데이터 저장부(132)를 포함할 수 있다. 3 illustrates an example technique 300 for restoring a block volume system with asynchronous replication in accordance with one or more embodiments. As part of the asynchronous replication system described with reference to FIGS. 1 and 2 above, the destination system, for example, the second data center 130 is a source system (for example, the first data center of FIG. 1 ( 120)) may receive and maintain a copy of the data stored. In some embodiments, second data center 130 may be located in a different geographic area than the geographic area of the source system (eg, area B rather than area A). The second data center 130 may include a data storage unit 132 capable of storing replicated data as one or more data objects 310 in the object storage unit.

일부 실시예들에서, 데이터 저장부(132)는 적어도 부분적으로 비동기적 복제 시스템의 구성에 기초하여 객체 저장 시스템으로 동작할 수 있어서, 비동기적 복제는 블록들이 아니라 청크 객체들로서 복제된 데이터를 저장하도록 구성될 수 있다. 즉, 일부 실시예들에서, 제2 데이터 센터(130)는 스탠바이 볼륨을 포함하여 스탠바이 볼륨에 대한 델타들의 직접 적용을 가능하게 할 수 있다. 데이터 저장부(132)가 스탠바이 볼륨을 포함하는 실시예들에서, 비동기적 복제는 블록들을 객체들로 변환(예를 들어, 데이터 변환(146))하지 않고 완료될 수 있다. In some embodiments, data store 132 can operate as an object storage system based at least in part on the configuration of an asynchronous replication system, such that asynchronous replication stores replicated data as chunk objects rather than blocks. can be configured. That is, in some embodiments, the second data center 130 may include a standby volume to enable direct application of deltas to the standby volume. In embodiments where data store 132 includes a standby volume, asynchronous replication may be completed without converting blocks to objects (eg, data conversion 146 ).

일부 실시예들에서, 비동기적 복제는 제1 체크포인트(320)를 생성하는 것(예를 들어, 동작(350))을 포함할 수 있다. 체크포인트는 적어도 부분적으로, 도 4를 참조하여 더 상세하게 설명되는 바와 같이 체크포인트가 데이터 저장부(132)에 저장된 청크 객체들의 식별자들 및 위치들을 설명하는 매니페스트(예를 들어, 메타데이터)를 포함할 수 있다는 점에서 스냅샷과는 상이할 수 있다. 예를 들어, 제1 체크포인트(320)가 체크포인트가 비동기적 복제의 부분으로서 생성된 제1 시간에 대응하는 경우, 제1 체크포인트는 복제된 데이터를 구성하는 청크 객체들의 각각에 대한 청크 포인터들의 리스트를 포함할 수 있다. In some embodiments, asynchronous replication may include creating a first checkpoint 320 (eg, operation 350 ). A checkpoint may, at least in part, generate a manifest (e.g., metadata) describing identifiers and locations of chunk objects stored in the data store 132, as described in more detail with reference to FIG. It may differ from a snapshot in that it can be included. For example, if first checkpoint 320 corresponds to the first time the checkpoint was created as part of an asynchronous replication, then the first checkpoint is a chunk pointer to each of the chunk objects that make up the replicated data. may contain a list of

비동기적 복제의 부분으로서, 제2 데이터 센터(130)는 소스 시스템으로부터 델타들(330) 및 대응하는 데이터를 수신할 것이다(예를 들어, 동작(352)). 이상에서 설명된 바와 같이, 델타들은, 제1 스냅샷과 제2 스냅샷 사이의 입력-출력 동작들(도 2의 I/O 동작들(210))로부터 기인하는 소스 시스템에 저장된 데이터에 대한 변경들을 설명하는 메타데이터를 포함할 수 있다. 대응하는 데이터는 청크 객체들(예를 들어, 4 MB 청크 객체들)로서 수신될 수 있다. As part of the asynchronous replication, the second data center 130 will receive the deltas 330 and corresponding data from the source system (eg, operation 352). As described above, deltas are changes to data stored in the source system resulting from input-output operations (I/O operations 210 in FIG. 2) between the first and second snapshots. may include metadata describing them. Corresponding data may be received as chunk objects (eg, 4 MB chunk objects).

델타들(330)은 제2 체크포인트(340)를 생성하는 것(예를 들어, 동작(354))의 부분으로서 제1 체크포인트(320)에 적용될 수 있다. 제2 체크포인트를 생성하는 것은, 델타들(330)에서 식별된 하나 이상의 청크 객체들을 식별하는 것, 및 델타들에 의해 표시되는 표시된 수정을 적용하는 것을 포함할 수 있다. 예를 들어, 청크 데이터로의 하나 이상의 변환들은 델타들(330)의 제1 델타(330-1)에 의해 표시될 수 있으며, 여기서 제1 델타(330-1)는 (예를 들어, 청크 포인터를 통해) 주어진 파티션에 대한 참조된 데이터의 데이터 저장부(132)의 객체 저장부 내의 위치를 나타낸다. 일부 실시예들에서, 참조된 데이터를 직접적으로 수정하는 것이 아니라, 비동기적 복제는, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이 제2 체크포인트(340)를 생성하는 것의 부분으로서 제1 델타(330-1)에 의해 표시된 변경들을 반영하도록 제1 체크포인트(320)를 업데이트하는 것을 포함할 수 있다.Deltas 330 may be applied to first checkpoint 320 as part of generating second checkpoint 340 (eg, operation 354 ). Generating the second checkpoint may include identifying one or more chunk objects identified in the deltas 330 and applying the indicated modifications indicated by the deltas. For example, one or more conversions to chunk data may be indicated by first delta 330-1 of deltas 330, where first delta 330-1 is (e.g., chunk pointer ) indicates the location in the object store of the data store 132 of the referenced data for a given partition. In some embodiments, rather than directly modifying the referenced data, the asynchronous replication is performed as part of generating the second checkpoint 340 as described in more detail with reference to FIG. 4 below. It may include updating the first checkpoint 320 to reflect the changes indicated by the 1 delta 330-1.

일부 실시예들에서, 제2 데이터 센터(130)(예를 들어, 목적지 시스템)는, 비동기적 복제 시스템(예를 들어, 동작(356)을 통해 도 1의 비동기적 복제 시스템(140))의 사용자로부터 수신될 수 있는 페일오버/페일백 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))의 대상일 수 있다. 페일오버/페일백 요청은 소스 시스템(예를 들어, 도 1의 제1 데이터 센터(120))에 영향을 주는 장애(예를 들어, 자연 재해)에 응답하는 것일 수 있다. 페일오버/페일백 요청은, 이하에서 도 7 내지 도 10을 참조하여 더 상세하게 설명되는 바와 같이, 복제된 데이터 및 제2 체크포인트로부터 블록 볼륨 시스템이 복원될 방법을 가이드하는 파라미터들을 포함할 수 있다.In some embodiments, the second data center 130 (e.g., the destination system) is an asynchronous replication system (e.g., asynchronous replication system 140 of FIG. 1 via operation 356). It may be the subject of a failover/failback request that may be received from a user (eg, failover/failback request 150 of FIG. 1). A failover/failback request may be in response to a failure (eg, natural disaster) affecting the source system (eg, first data center 120 of FIG. 1 ). The failover/failback request may include parameters guiding how the block volume system is to be restored from the replicated data and the second checkpoint, as described in more detail with reference to FIGS. 7-10 below. there is.

페일오버/페일백을 구현하는 것은 복원 볼륨으로도 지칭되는 페일오버/페일백 볼륨을 생성하는 것(예를 들어, 동작(358))을 포함할 수 있다. 이상에서 설명된 바와 같이, 페일오버 시스템은 목적지 시스템에서 호스팅될 수 있으며, 반면 페일백 시스템은 소스 시스템에서 호스팅될 수 있다. 일부 실시예들에서, 페일백 요청이 수신될 때와 같이, 제2 체크포인트(340)는 객체들(310)에 저장된 데이터를 소스 시스템(예를 들어, 블록 볼륨 시스템(122)) 내의 블록들에 매핑하기 위해 사용될 수 있다. 페일백 볼륨을 생성하는 프로세스는 이하에서 도 5를 참조하여 더 상세하게 설명된다. 마찬가지로, 페일오버는, 제1 데이터 센터(120)가 장애로부터 복구될 때까지 입력-출력 동작들과 관련하여 제1 데이터 센터(120)의 역할을 맡기 위해 제2 데이터 센터(130)에서 블록 볼륨 시스템을 생성하는 것을 포함할 수 있다. 제2 데이터 센터(130)에서 페일오버 볼륨을 생성하는 것은, 예를 들어, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이 제2 체크포인트(340)를 사용함으로써 객체들(310)에 저장된 데이터를 블록들에 매핑하는 것을 포함할 수 있다. 일부 실시예들에서, 블록 볼륨 데이터를 복원하는 것은, 비제한적으로, 목적지 영역에서 새로운 블록 볼륨을 생성하는 것, 목적지 영역에 페일오버를 구현하는 것, 소스 영역 내의 새로운 볼륨으로의 교차-영역 복제를 가능하게 하는 것, 및 소스 영역에서 페일오버를 수행하는 것을 포함하는 하나 이상의 동작들을 포함할 수 있다.Implementing failover/failback may include creating a failover/failback volume, also referred to as a restore volume (eg, operation 358). As described above, the failover system may be hosted on the destination system, while the failback system may be hosted on the source system. In some embodiments, such as when a failback request is received, second checkpoint 340 transfers data stored in objects 310 to blocks within the source system (eg, block volume system 122). can be used to map to The process of creating a failback volume is described in more detail with reference to FIG. 5 below. Similarly, failover is a block volume in the second data center 130 to assume the role of the first data center 120 with respect to input-output operations until the first data center 120 recovers from a failure. This may include creating a system. Creating a failover volume in the second data center 130 may be performed on objects 310 by, for example, using a second checkpoint 340 as described in more detail with reference to FIG. 4 below. It may include mapping stored data to blocks. In some embodiments, restoring block volume data includes, but is not limited to, creating a new block volume in the destination region, implementing a failover in the destination region, or cross-region replication to a new volume in the source region. and performing a failover in the source zone.

일부 실시예들에서, 제2 데이터 센터(130)가 복제된 데이터를 저장하기 위한 스탠바이 볼륨을 유지하고 있을 때와 같이, 스탠바이 볼륨은, 장애 시점에 소스 시스템으로부터 전송되지 않은 임의의 델타들로부터의 변경들을 제외하고는 소스 볼륨으로부터의 모든 변경들을 이미 포함하고 있을 수 있다. 이와 같이, 페일오버는, 이하에서 도 5를 참조하여 더 상세하게 설명되는 바와 같이, 상대적으로 적은 손실 데이터로(예를 들어, 대략 1-15분의 스냅샷 생성 시간에 대한 RPO) 즉시 이용가능할 수 있다(예를 들어, 낮은 RTO를 나타냄). 대조적으로, 전체 백업 이미지들의 동기적 복제를 구현하는 백업 시스템은 약 몇 시간의 RPO를 야기할 수 있다.In some embodiments, such as when the second data center 130 maintains a standby volume for storing replicated data, the standby volume contains data from any deltas not transferred from the source system at the time of failure. It may already contain all changes from the source volume except changes. As such, failover may be immediately available with relatively little lost data (e.g., RPO for snapshot creation times of approximately 1-15 minutes), as described in more detail with reference to FIG. 5 below. (e.g. exhibiting a low RTO). In contrast, a backup system that implements synchronous replication of full backup images can result in an RPO of around several hours.

일부 실시예들에서, 페일오버/페일백 볼륨을 생성하는 것이 아니라, 비동기적 복제는 역방향 복제(reverse replication)를 포함할 수 있다. 이러한 경우에, 목적지 시스템은 소스 시스템으로 지정될 수 있으며, 반면 이전 소스 시스템은 목적지 시스템의로 재지정될 수 있다. 이러한 방식으로, 데이터가 데이터 저장부(132)에서 기입되고 판독되는 입력-출력 동작들은 제2 데이터 센터(130)에서 발생할 수 있으며, 스냅샷 생성 및 델타 생성도 또한 제2 데이터 센터에서 발생할 수 있다. 대응하여, 복제된 데이터는 제1 데이터 센터(120)로 전송될 수 있다. In some embodiments, rather than creating a failover/failback volume, asynchronous replication may include reverse replication. In this case, the destination system may be designated as the source system, while the previous source system may be re-designated as the destination system's. In this way, input-output operations where data is written to and read from data store 132 can occur in the second data center 130, and snapshot creation and delta creation can also occur in the second data center. . Correspondingly, the replicated data may be transmitted to the first data center 120 .

도 4는 하나 이상의 실시예들에 따른 블록 볼륨 복제 메타데이터를 집성하기 예시적인 기술(400)을 예시한다. 비동기적 복제는, 데이터가 복제될 수 있는 시간 기간에 걸쳐 하나 이상의 구성 동작들(예를 들어, 스냅샷 생성, 델타 생성, 등)의 다수의 반복들을 포함할 수 있다. 이러한 경우들에서, 목적시 시스템(예를 들어, 도 1 내지 도 3의 제2 데이터 센터(130))을 업데이트하는 것은, 각각의 후속 반복에 의해 도입된 변경들을 반영하는 복제된 데이터에 대응하는 메모리 위치들의 업데이트된 레코드를 유지하는 것을 포함할 수 있다. 4 illustrates an example technique 400 for aggregating block volume replication metadata in accordance with one or more embodiments. Asynchronous replication can include multiple iterations of one or more configuration operations (eg, create snapshots, create deltas, etc.) over a period of time over which data can be replicated. In such cases, updating the system (eg, second data center 130 of FIGS. 1-3 ) on purpose corresponds to the replicated data reflecting the changes introduced by each subsequent iteration. It may include maintaining an updated record of memory locations.

일부 실시예들에서, 비동기적 복제는 델타들(예를 들어, 도 3의 델타들(330)) 및 제1 체크포인트(320)에 대한 하나 이상의 동작들을 통해 제2 체크포인트(340)를 생성하는 것을 포함할 수 있다. 예를 들어, 제1 체크포인트(320)의 생성 이후에 소스 시스템으로부터의 다수의 델타들이 목적지 시스템에서 수신될 때, 메모리 위치들의 정확한 레코드는 제1 체크포인트만을 참조하는 것이 아니라 제1 체크포인트(320)에 적용되는 바와 같이 델타들에 의해 표시되는 변경들에 의해 더 양호하게 표현될 수 있다.In some embodiments, asynchronous replication generates second checkpoint 340 through one or more operations on deltas (eg, deltas 330 in FIG. 3 ) and first checkpoint 320 . may include doing For example, when multiple deltas from the source system are received at the destination system after the creation of the first checkpoint 320, the correct record of memory locations does not refer only to the first checkpoint ( 320) can be better represented by changes indicated by deltas.

일부 실시예들에서, 제1 체크포인트(320)는 매니페스트(420)를 포함할 수 있다. 매니페스트(420)는 (예를 들어, 페일오버/페일백 동작들을 가이드하기 위한) 소스 시스템의 파티션에 대응할 수 있으며, 이와 같이, 다수의 매니페스트들은, 소스 시스템이 다수의 파티션들을 포함할 때 소스 시스템으로부터의 데이터의 비동기적 복제를 설명할 수 있다. 매니페스트(420)는 청크 포인터들(422)(예를 들어, 청크 포인터들(1-N), 여기서 'N"은 매니페스트(420)에 포함된 청크 포인터들(422)의 수를 참조하는 정수)을 포함할 수 있다. 청크 포인터들(422)은 (예를 들어, 데이터 저장부(132)에 청크 객체들로서 저장된) 복제된 데이터와 연관된 메모리 위치들을 설명할 수 있다. 제1 체크포인트(320)를 생성하는 것에 후속하여, 목적지 시스템은, 예를 들어, 스냅샷 생성 및 델타 생성의 반복에 의해 생성되는 바와 같은 다수의 델타들을 수신할 수 있다. 이러한 방식으로, 제2 체크포인트(340)를 생성하는 것은 델타들을 집성하는 것(예를 들어, 동작(450))을 포함할 수 있다. 예를 들어, 델타들을 집성하는 것은, 델타들이 생성된 스냅샷을 확인하기 위해 제1 체크포인트(320)의 식별자를 참조하는 것을 포함할 수 있다. 이러한 방식으로, 체크포인트 참조는, 수신된 델타들(스냅샷을 참조하는 식별자를 또한 포함함)이 매니페스트(420)에 이미 반영되었는지 여부의 결정을 가능하게 할 수 있다. In some embodiments, first checkpoint 320 may include manifest 420 . Manifest 420 may correspond to a partition of the source system (eg, to guide failover/failback operations), and as such, multiple manifests may correspond to a source system when the source system includes multiple partitions. Asynchronous replication of data from Manifest 420 includes chunk pointers 422 (e.g., chunk pointers 1-N, where 'N' is an integer referencing the number of chunk pointers 422 included in manifest 420). Chunk pointers 422 may describe memory locations associated with replicated data (eg, stored as chunk objects in data store 132) First checkpoint 320 Subsequent to generating , the destination system may receive a number of deltas, e.g., as generated by iterating snapshot creation and delta creation In this way, the second checkpoint 340 Generating may include aggregating the deltas (eg, operation 450 ) For example, aggregating the deltas may include a first checkpoint 320 to verify the snapshot from which the deltas were created. ) In this way, the checkpoint reference determines whether the received deltas (which also include an identifier referencing the snapshot) have already been reflected in the manifest 420. can make it possible

일부 실시예들에서, 델타들은 업데이트된 매니페스트(440)를 제공하기 위해 제1 체크포인트와 조합될 수 있다. 델타들을 조합하는 것은, 델타에 의해 표시된 바와 같은 매니페스트 내의 제1 청크 포인터(422-1)를 수정하는 것을 포함할 수 있다(예를 들어, 데이터의 위치에 대한 포인터는 델타에 의해 설명된 복제된 데이터에 대한 변환에 응답하여 변경될 수 있다). 이러한 방식으로, 모든 수신된 델타들에 표시된 모든 변환들을 매니페스트에 적용함으로써, 업데이트된 매니페스트(440)는, 페일오버/페일백 볼륨이 이전 매니페스트(예를 들어, 매니페스트(420))가 사용되는 경우보다 잠재적으로 감소된 RPO로 생성되는 것을 가능하게 할 수 있다. 유사하게, 비동기적 복제의 각각의 반복에 대해, 새로 생성된 델타들이 생성되고 목적지 시스템으로 전송될 수 있으며, 여기서 이들은 가장 최근의 매니페스트(예를 들어, 업데이트된 매니페스트)와 집성될 수 있다. In some embodiments, the deltas can be combined with the first checkpoint to provide an updated manifest 440 . Combining the deltas may include modifying the first chunk pointer 422-1 in the manifest as indicated by the delta (e.g., the pointer to the location of the data is duplicated described by the delta). may change in response to transformations on the data). In this way, by applying all transformations indicated in all received deltas to the manifest, the updated manifest 440 will ensure that the failover/failback volume is the same if the previous manifest (e.g., manifest 420) is used. It can be made possible with a more potentially reduced RPO. Similarly, for each iteration of the asynchronous replication, newly created deltas may be created and sent to the destination system, where they may be aggregated with the most recent manifest (eg, updated manifest).

도 5는 하나 이상의 실시예들에 따른 스탠바이 볼륨으로부터 페일백 볼륨을 생성하기 위한 예시적인 기술(500)을 예시한다. 이상에서 설명된 바와 같이, 페일백 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))은, 소스 시스템, 예를 들어, 제1 데이터 센터(120)에서의 장애 복구의 부분으로서 수신될 수 있다. 목적지 시스템에서 호스팅되는 페일오버 볼륨 또는 역방향 복제와는 대조적으로, 페일백 볼륨은, 제1 데이터 센터(120)가 사용자 데이터를 호스팅하도록 선택되는 것을 야기하는 동일한 이유들(예를 들어, 성능 메트릭, 안정성, 등)로 선호될 수 있다. 5 illustrates an example technique 500 for creating a failback volume from a standby volume in accordance with one or more embodiments. As described above, a failback request (eg, failover/failback request 150 of FIG. 1 ) is part of a failover at the source system, eg, first data center 120 . can be received as In contrast to a failover volume or reverse replication hosted on the destination system, a failback volume has the same reasons that cause the first data center 120 to be chosen to host user data (e.g., performance metrics, stability, etc.).

일부 실시예들에서, 목적지 시스템, 예를 들어, 제2 데이터 센터(130)는, 소스 볼륨(522)에서 데이터를 복제하기 위해 스탠바이 볼륨(560)을 복제할 수 있다. 스탠바이 볼륨(560)은 소스 볼륨으로부터 수신된 모든 델타들을 포함할 수 있어서, 스탠바이 볼륨은 소스 볼륨(522)의 현재 상태를 반영할 수 있다. 예를 들어, 제1 델타(540)는 (예를 들어, 동작(512)에 의해) 소스 볼륨(522)으로부터 생성될 수 있으며, 제1 델타(540)는 (예를 들어, 동작(514)에 의해) 스탠바이 볼륨(560)에 직접적으로 적용될 수 있다. 일부 실시예들에서, 스탠바이 볼륨(560)에 델타를 적용하는 것은, 소스 볼륨으로부터 참조된 데이터(예를 들어, 수정된 블록들)를 카피(copy)하고 참조된 데이터를 입력-출력 동작(예를 들어, 사용자-기입 동작)과 유사한 방식으로 스탠바이 볼륨에 복제하는 것을 포함할 수 있다. 추가로, 델타를 적용하는 것은 도 4를 참조하여 설명된 바와 같이 매니페스트를 업데이트하는 것을 포함할 수 있다. 도 4가 청크 포인터들과 관련하여 매니페스트를 설명하지만, 매니페스트는 복제된 데이터가 저장될 수 있는 스탠바이 볼륨 내의 메모리 위치들을 유사하게 설명할 수 있다.In some embodiments, the destination system, eg, second data center 130 , may clone standby volume 560 to replicate data from source volume 522 . Standby volume 560 may include all deltas received from the source volume, so that standby volume may reflect the current state of source volume 522 . For example, first delta 540 may be generated from source volume 522 (eg, by operation 512), and first delta 540 may be generated (eg, by operation 514). by) can be applied directly to the standby volume 560. In some embodiments, applying the delta to standby volume 560 copies the referenced data (eg, modified blocks) from the source volume and performs an input-output operation (eg, modified blocks) of the referenced data. eg, a user-write operation) to the standby volume in a similar way. Additionally, applying the delta may include updating the manifest as described with reference to FIG. 4 . Although Figure 4 describes the manifest in terms of chunk pointers, the manifest can similarly describe memory locations within a standby volume where replicated data can be stored.

일부 실시예들에서, 스탠바이 볼륨(560)을 업데이트하는 것은, 델타가 스탠바이 볼륨(560)에 부분적으로 적용되지 않을 수 있도록 별개의 동작들로 델타들을 적용하는 것을 포함할 수 있다. 예를 들어, 스탠바이 볼륨(560)의 제1 스냅샷(530)은, 페일오버/페일백 요청이 델타를 적용하는 동작(예를 들어, 동작(514)) 동안 수신되는 경우에 페일백 위치를 제공하기 위해 생성될 수 있다. 이러한 방식으로, 델타가 적용될 때까지 기다리는 것이 아니라, 시스템 복구가 제1 스냅샷(530)을 구현할 수 있으며, 이는 RPO에 대한 증분 증가를 비용으로 하여 개선된 RTO를 제공할 수 있다. 일부 실시예들에서, 제1 스냅샷(530)은, 일단 제1 델타(540)가 스탠바이 볼륨(560)에 적용되면 삭제될 수 있다. 결과적으로, 제2 델타(550)(또는 델타들)가 생성될 때(예를 들어, 동작(516)), 제2 스냅샷(532)은, 제2 델타를 적용하는 것(예를 들어, 동작(520)) 이전에 스탠바이 볼륨(560)에서 생성될 수 있다(예를 들어, 동작(518)). 제2 델타를 완전히 적용한 이후에, 제2 스냅샷(550)이 또한 삭제될 수 있다.In some embodiments, updating standby volume 560 may include applying the deltas in separate operations such that the deltas may not be partially applied to standby volume 560 . For example, first snapshot 530 of standby volume 560 provides a failback location if a failover/failback request is received during an operation to apply the delta (eg, operation 514 ). can be created to provide In this way, rather than waiting for the delta to be applied, system recovery can implement the first snapshot 530, which can provide an improved RTO at the cost of an incremental increase to the RPO. In some embodiments, first snapshot 530 may be deleted once first delta 540 is applied to standby volume 560 . Consequently, when the second delta 550 (or deltas) is generated (eg, operation 516 ), the second snapshot 532 may apply the second delta (eg, operation 516 ). It can be created in standby volume 560 prior to operation 520 (eg, operation 518). After fully applying the second delta, the second snapshot 550 may also be deleted.

일부 실시예들에서, 스탠바이 볼륨(560)은 페일오버/페일백 요청을 수신하는 것(예를 들어, 동작(522))에 응답하여 페일오버 볼륨 또는 페일백 볼륨을 생성하기 위해 사용될 수 있다. 일부 실시예들에서, 데이터 복원은, 페일오버 볼륨에 대한 교차 영역 복제를 가능하게 함으로써 데이터를 다시 소스 영역으로 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 요청이 페일백 요청일 때, 스탠바이 볼륨(560)이 클로닝되고 제1 데이터 센터(120)에서 복원될 수 있다(예를 들어, 동작(524)). 스탠바이 볼륨(560)을 클로닝하는 것은, 제1 데이터 센터(120)에서 페일백 볼륨(562)을 생성하고 데이터를 복원하는 것을 포함할 수 있다(예를 들어, 때때로 "클론을 하이드레이트하는 것(hydrating)"으로 지칭됨). 일부 실시예들에서, 복원된 데이터는, 제2 델타가 페일백 요청이 구현된 시점에서 완전히 적용된 경우에, 제2 델타(550)에 의해 표시된 수정들을 포함할 수 있다. 클로닝을 사용하여 페일오버 복원을 구현하는 것은 잠재적으로, 교차 영역 복제가 기존 스탠바이 볼륨에서 계속되는 것을 가능하게 할 수 있다. 유익하게는, 클론 볼륨들은 적은 레이턴시로 또는 레이턴시 없이 이용가능할 수 있어서 RTO에 대한 무시할 수 있는 효과를 가능하게 한다.In some embodiments, standby volume 560 may be used to create a failover volume or failback volume in response to receiving a failover/failback request (eg, operation 522 ). In some embodiments, restoring data may include transferring the data back to the source zone by enabling cross-region replication for the failover volume. In some embodiments, when the request is a failback request, standby volume 560 may be cloned and restored in first data center 120 (eg, operation 524). Cloning the standby volume 560 may include creating a failback volume 562 in the first data center 120 and restoring the data (e.g., sometimes "hydrating the clone"). )"). In some embodiments, the restored data may include the modifications indicated by second delta 550 if the second delta was fully applied at the time the failback request was implemented. Implementing failover recovery using cloning could potentially enable cross-region replication to continue on an existing standby volume. Advantageously, clone volumes can be available with low or no latency, allowing negligible effect on RTO.

도 6은 하나 이상의 실시예들에 따른 스탠바이 볼륨의 크기를 조정하기 위한 예시적인 기술(600)을 예시한다. 제1 데이터 센터(120)에서의 소스 볼륨(522)과 같은 소스 시스템의 정상 동작은, (예를 들어, 파티션들을 추가하거나, 파티션들을 제거하거나, 소스 볼륨(522)의 하나 이상의 파티션들의 크기를 조정하는 것 등을 위해) 소스 볼륨(522)의 크기를 조정하는 것을 포함할 수 있다. 일부 실시예들에서, 델타들이 하나의 파티션에 대해 생성되기 때문에, 소스 볼륨(522)의 크기를 조정하는 것은 스탠바이 볼륨(560)에 대한 소스 볼륨 델타들(522)의 매핑에 영향을 줄 수 있다. 이와 같이, 스탠바이 볼륨(560)은, 소스 볼륨(522)의 크기를 조정하는 것에 의해 도입되는 델타 적용에서의 잠재적인 오류들을 제한하기 위한 하나 이상의 접근방식들을 구현한 이후에 소스 볼륨(522)의 크기를 조정하는 것을 고려하도록 크기가 조정될 수 있다.6 illustrates an example technique 600 for resizing a standby volume in accordance with one or more embodiments. Normal operation of the source system, such as the source volume 522 in the first data center 120, (e.g., adding partitions, removing partitions, or changing the size of one or more partitions of the source volume 522) resizing the source volume 522 (to adjust, etc.). In some embodiments, because deltas are created for one partition, resizing source volume 522 may affect the mapping of source volume deltas 522 to standby volume 560. . As such, the standby volume 560 may, after implementing one or more approaches to limit potential errors in delta application introduced by resizing the source volume 522, It can be scaled to account for resizing.

일부 실시예들에서, 하나 이상의 델타들(620)은 이상에서 도 1 내지 도 2를 참조하여 더 상세하게 설명된 바와 같이 소스 볼륨(522)으로부터 생성될 수 있다(예를 들어, 동작(610)). 델타(620)는 이상에서 도 5를 참조하여 설명된 바와 같이 스탠바이 볼륨(560)에 적용될 수 있다(예를 들어, 동작(612)). 일부 경우들에서, 소스 볼륨(522)의 크기를 조정하는 것은, 사용자로부터 또는 다른 시스템으로부터 크기 조정(resize) 요청을 수신하는 것을 포함할 수 있다(예를 들어, 동작(614)). RPO에 대한 크기를 조정하는 것의 영향을 잠재적으로 제한하기 위해, 마지막 델타(630)는, 크기 조정 요청을 수신한 후 소스 볼륨(522)의 크기를 조정하기 이전에 생성될 수 있다(예를 들어, 동작(616)). 일부 실시예들에서, 마지막 델타(630)를 생성하는 것은, 소스 볼륨(522)의 새로운 스냅샷을 생성하는 것, 새로운 스냅샷에 적어도 부분적으로 기초하여 델타들을 생성하는 것, 및 그에 따라 생성된 델타들을 적용하는 것을 포함할 수 있다. 이러한 방식으로, 스탠바이 볼륨(560)은, 소스 볼륨(522)의 크기를 조정하는 것에 의한 크기 조정 요청의 구현 바로 직전의 소스 볼륨의 상태를 설명할 수 있다(예를 들어, 동작(618)). 마지막 델타를 적용하는 것(예를 들어, 동작(620))은 소스 볼륨(522)의 크기를 조정하는 것으로부터 분리될 수 있어서, 일단 마지막 델타(630)가 생성되면, 소스 볼륨은, 마지막 델타가 스탠바이 볼륨(560)에 적용될 수 있기 이전에 크기가 조정될 수 있다. 일부 실시예들에서, 스탠바이 볼륨(560)은 마지막 델타의 적용 다음에 대응하는 방식으로 크기가 조정될 수 있다(예를 들어, 동작(622)). In some embodiments, one or more deltas 620 may be generated from source volume 522 as described in more detail with reference to FIGS. 1-2 above (eg, operation 610 ). ). Delta 620 may be applied to standby volume 560 as described above with reference to FIG. 5 (eg, operation 612). In some cases, resizing the source volume 522 may include receiving a resize request from a user or from another system (eg, operation 614 ). To potentially limit the impact of resizing on the RPO, the last delta 630 can be generated after receiving a resize request and before resizing the source volume 522 (e.g. , action 616). In some embodiments, creating the last delta 630 includes creating a new snapshot of the source volume 522, creating the deltas based at least in part on the new snapshot, and creating the resulting deltas. It may include applying deltas. In this way, standby volume 560 can describe the state of the source volume immediately prior to implementation of the resize request by resizing source volume 522 (e.g., operation 618). . Applying the last delta (e.g., operation 620) can be separated from resizing the source volume 522, so that once the last delta 630 is created, the source volume may be resized before it can be applied to the standby volume 560 . In some embodiments, standby volume 560 may be resized in a corresponding manner following application of the last delta (eg, operation 622 ).

도 7은 하나 이상의 실시예들에 따른 복원 볼륨을 생성하기 위한 예시적인 흐름(700)을 예시한다. 흐름(700)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.7 illustrates an example flow 700 for creating a recovery volume in accordance with one or more embodiments. The operations of flow 700 may be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of a computer system, such as asynchronous replication system 140 of FIG. 1 . can As implemented, instructions represent modules containing code or circuitry executable by processor(s) of a computer system. Execution of these instructions configures the computer system to perform certain operations described herein. Each piece of circuitry or code in conjunction with the processor performs a separate operation(s). Although the actions are illustrated in a specific order, it should be understood that the specific order is not essential and that one or more actions may be omitted, skipped, and/or rearranged.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 스냅샷을 생성하는 동작(702)을 포함한다. 도 1 내지 도 2를 참조하여 상세하게 설명된 바와 같이, 블록 볼륨(예를 들어, 도 1의 블록 볼륨(122))은, 입력/출력 동작들, 안정성, 비용 등과 연관된 하나 이상의 성능 메트릭들에 적어도 부분적으로 기초하여 결정될 수 있는 제1 지리적 영역 내의 제1 데이터 센터(예를 들어, 도 1의 제1 데이터 센터(120))에서 호스팅될 수 있으며, 제1 스냅샷을 생성하는 것(예를 들어, 도 2의 동작(250))은 블록 볼륨을 구성하는 하나 이상의 블록들의 하나 이상의 블록 이미지들(예를 들어, 도 2의 블록 이미지들(232))을 생성하는 것을 포함할 수 있다. 스냅샷을 생성하는 것은 2-단계 커밋 프로토콜을 구현하는 것을 포함할 수 있으며, 이에 의해 입력-출력 동작들(예를 들어, 도 2의 I/O 동작들(210))은, 파티션에 대한 블록 이미지들이 생성되는 시간 동안 블록 볼륨의 해당 파티션에 대해 일시 중단될 수 있다. 블록 볼륨 시스템에 대한 또는 파티션에 대한 스냅샷의 생성 이후에, 컴퓨터 시스템은 블록 볼륨에 대한 입력-출력 동작들을 재개할 수 있다.In one example, flow 700 includes act 702 where the computer system creates a snapshot of a block volume in a first geographic region. As described in detail with reference to FIGS. 1-2, a block volume (eg, block volume 122 of FIG. 1 ) is dependent on one or more performance metrics associated with input/output operations, stability, cost, and the like. may be hosted at a first data center (eg, first data center 120 of FIG. 1 ) within a first geographic region, which may be determined based at least in part on the basis of creating a first snapshot (eg, For example, operation 250 of FIG. 2 may include generating one or more block images (eg, block images 232 of FIG. 2 ) of one or more blocks that make up the block volume. Creating the snapshot may include implementing a two-phase commit protocol, whereby input-output operations (eg, I/O operations 210 of FIG. 2 ) are blocked for a partition. Images can be suspended for that partition of a block volume during the time they are being created. After creation of a snapshot for a block volume system or for a partition, the computer system can resume input-output operations to the block volume.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 제2 지리적 영역에 있는 제2 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 동작(704)을 포함한다. 일부 실시예들에서, 제1 스냅샷이 블록 볼륨의 생성된 가장 처음의 스냅샷일 때 또는 이전에 생성된 스냅샷이 이용가능하지 않은 경우와 같이, 스냅샷 데이터는 블록 이미지들을 포함할 수 있다. 이와 같이, 블록 이미지들은 시스템(예를 들어, 도 1의 데이터 저장부(132))으로 송신될 수 있다. 일부 구현예들에서, 블록 이미지들은 청크 객체들로 변환되고 스냅샷 데이터로서 제2 저장 시스템으로 송신될 수 있다(예를 들어, 도 2의 동작(252)). 일부 경우들에서, 청크 객체들은, 예를 들어, 메모리 내의 스냅샷 데이터의 위치들을 식별하는 청크 포인터들을 리스팅하는 매니페스트를 포함하는 스냅샷 데이터를 설명하는 메타데이터와 함께 송신된다.In one example, flow 700 includes an act 704 of the computer system sending first snapshot data corresponding to the first snapshot to a second storage system in a second geographic region. In some embodiments, the snapshot data may include block images, such as when the first snapshot is the first created snapshot of a block volume or when a previously created snapshot is not available. As such, the block images can be transmitted to the system (eg, data store 132 of FIG. 1). In some implementations, the block images can be converted to chunk objects and sent as snapshot data to the second storage system (eg, operation 252 of FIG. 2 ). In some cases, chunk objects are transmitted along with metadata describing the snapshot data including, for example, a manifest listing chunk pointers identifying locations of the snapshot data in memory.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 제2 스냅샷을 생성하는 동작(706)을 포함한다. 도 2를 참조하여 더 상세하게 설명된 바와 같이, 제2 스냅샷(예를 들어, 도 2의 제2 스냅샷(240))은, 제1 스냅샷이 생성된 제1 논리적 시간(예를 들어, 도 2의 제1 논리적 시간(260)) 다음의 제2 논리적 시간(예를 들어, 도 2의 제2 논리적 시간(262))에서의 블록 볼륨의 상태를 설명할 수 있다. 제2 스냅샷은, 제1 스냅샷의 생성 이후에 발생한 블록 볼륨 시스템에 저장된 데이터에 대한 수정들(예를 들어, 데이터에 대한 판독-기입 동작들)에 대한 정보를 포함할 수 있다.In one example, flow 700 includes an act 706 of the computer system creating a second snapshot of a block volume in the first geographic region. As described in more detail with reference to FIG. 2 , the second snapshot (eg, second snapshot 240 of FIG. 2 ) is taken at a first logical time (eg, second snapshot 240 of FIG. 2 ) at which the first snapshot was created. . The second snapshot may include information on modifications to data stored in the block volume system (eg, read-write operations on data) occurring after the first snapshot is created.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 복수의 델타들을 생성하는 동작(708)을 포함한다. 제2 스냅샷을 제2 저장 시스템에 직접적으로 송신하는 것이 아니라, 복수의 델타들이 제2 스냅샷의 생성(예를 들어, 제2 논리적 시간)과 제1 스냅샷의 생성(예를 들어, 제1 논리적 시간) 사이의 블록 볼륨에 저장된 데이터에 대한 하나 이상의 변경들을 설명할 수 있다. 델타들을 생성하는 것은, 제2 스냅샷 내의 파티션의 블록 이미지들을 제1 스냅샷 내의 파티션의 대응하는 이미지들과 비교하는 것, 및 파티션 내의 데이터에 대한 하나 이상의 수정들을 식별하는 것을 포함할 수 있다. 도 1 내지 도 2를 참조하여 더 상세하게 설명된 바와 같이, 델타들은, 비제한적으로, 스냅샷에 대응하는 델타 식별자, 수정된 블록 볼륨 내의 데이터를 설명하는 하나 이상의 블록 식별자들, 및/또는 블록 식별자들에 의해 식별된 데이터의 위치들을 설명하는 대응하는 수의 객체 식별자들을 포함하는 메타데이터를 포함할 수 있다. In one example, flow 700 includes an act 708 where the computer system generates a plurality of deltas. Rather than sending the second snapshot directly to the second storage system, a plurality of deltas are used to determine the creation of the second snapshot (eg, the second logical time) and the creation of the first snapshot (eg, the second snapshot). 1 logical time) to the data stored in the block volume between Generating the deltas may include comparing block images of the partition in the second snapshot to corresponding images of the partition in the first snapshot, and identifying one or more modifications to data in the partition. As described in more detail with reference to FIGS. 1-2 , deltas include, but are not limited to, a delta identifier corresponding to a snapshot, one or more block identifiers describing data within a modified block volume, and/or block metadata comprising a corresponding number of object identifiers describing the locations of the data identified by the identifiers.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 복수의 델타들에 대한 데이터를 송신하는 동작(710)을 포함한다. 도 2를 참조하여 상세하게 설명된 바와 같이, 데이터를 송신하는 것은 블록 볼륨 시스템으로부터 제2 저장 시스템으로 데이터의 복제본을 생성하는 것을 포함할 수 있다. 이는, 복제된 데이터가 객체 저장부에 저장될 때와 같이, 청크 객체들을 생성하는 것 및 청크 객체들을 제2 저장 시스템(예를 들어, 목적지 시스템)에 카피하는 것을 포함할 수 있다. 데이터에는 복수의 델타들이 수반될 수 있으며, 이들은 파티션 단위로 블록 볼륨 시스템의 블록들과 청크 객체들 사이의 대응성을 설명하는 메타데이터를 제공할 수 있다.In one example, flow 700 includes an act 710 of the computer system transmitting data for a plurality of deltas. As described in detail with reference to FIG. 2, transmitting the data may include creating a copy of the data from the block volume system to the second storage system. This may include creating chunk objects and copying the chunk objects to a second storage system (eg, the destination system), such as when replicated data is stored in an object store. The data may be accompanied by a plurality of deltas, which may provide metadata describing the correspondence between blocks and chunk objects of the block volume system on a partition-by-partition basis.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 제2 지리적 영역에서 체크포인트를 생성하는 동작(712)을 포함한다. 도 3 내지 도 4를 참조하여 더 상세하게 설명된 바와 같이, 체크포인트(예를 들어, 도 3의 체크포인트(320))는 복수의 청크 포인터들을 설명하는 매니페스트(예를 들어, 도 4의 매니페스트(420))를 포함할 수 있다. 일부 실시예들에서, 체크포인트를 생성하는 것은, 체크포인트에 적용된 바와 같은 복수의 델타들에 포함된 수정들을 반영하는 제2 복수의 청크 포인터들을 설명하는 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(420))를 포함할 수 있는 업데이트된 체크포인트(예를 들어, 도 3의 제2 체크포인트(340))를 생성하기 위해 델타들을 이전에 생성된 체크포인트와 함께 집성하는 것(예를 들어, 도 4의 동작(450))을 포함할 수 있다. In one example, flow 700 includes act 712 where the computer system creates a checkpoint in a second geographic area. As described in more detail with reference to FIGS. 3-4, a checkpoint (e.g., checkpoint 320 in FIG. 3) is a manifest describing a plurality of chunk pointers (e.g., manifest in FIG. 4). (420)). In some embodiments, creating a checkpoint is an updated manifest describing a second plurality of chunk pointers that reflect modifications included in the plurality of deltas as applied to the checkpoint (e.g., in FIG. 4 ). Aggregating the deltas with previously created checkpoints to create an updated checkpoint (e.g., second checkpoint 340 in FIG. 3) that may include an updated manifest 420 ( For example, operation 450 of FIG. 4 ).

일 예에서, 흐름(700)은, 컴퓨터 시스템이 복원 요청을 수신하는 동작(714)을 포함한다. 복원 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))은 페일오버 볼륨으로도 지칭되는 복원 볼륨을 제2 지리적 위치에서 생성하기 위한 사용자 요청을 포함할 수 있다. 일부 실시예들에서, 복원 요청은 페일백 볼륨으로도 지칭되는 복원 볼륨을 제1 지리적 위치에서 생성하기 위한 사용자 요청을 포함할 수 있다. 일부 실시예들에서, 복원 요청은 비동기적 복제를 역전시키기 위한 요청을 포함할 수 있으며, 이에 의해 비동기적 복제를 위해 제2 저장 시스템(예를 들어, 도 1의 데이터 저장부(132))을 소스 시스템으로 지정하고 블록 볼륨 시스템(예를 들어, 도 1의 블록 볼륨 시스템(122))을 목적지 시스템으로 지정한다. 일부 실시예들에서, 복원 요청은 비동기적 복제의 구성의 부분으로서 (예를 들어, 사용자 상호작용 없이) 자동으로 생성될 수 있다. 예를 들어, 비동기적 복제 시스템은 소스 시스템에서 발생하는 장애에 응답하여 복원 요청을 자동으로 생성하도록 구성될 수 있다.In one example, flow 700 includes an act 714 of the computer system receiving a restore request. A restore request (eg, failover/failback request 150 of FIG. 1 ) may include a user request to create a restore volume, also referred to as a failover volume, at the second geographic location. In some embodiments, the restore request can include a user request to create a restore volume, also referred to as a failback volume, at the first geographic location. In some embodiments, the restore request may include a request to reverse the asynchronous replication, thereby retrieving the second storage system (eg, data store 132 of FIG. 1 ) for asynchronous replication. Specify the source system as the source system and the block volume system (eg, block volume system 122 of FIG. 1) as the destination system. In some embodiments, the restore request may be automatically generated (eg, without user interaction) as part of the configuration of the asynchronous replication. For example, an asynchronous replication system can be configured to automatically generate restore requests in response to failures occurring on the source system.

일 예에서, 흐름(700)은, 컴퓨터 시스템이 복원 볼륨을 생성하는 동작(716)을 포함한다. 복원 볼륨을 생성하는 것은, 도 3 및 도 5를 참조하여 설명된 바와 같이, 예를 들어, 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(440))를 참조하여 객체 저장부에 저장된 청크 객체들로부터의 복제 데이터를 블록 볼륨 내의 블록들에 매핑함으로써 블록 볼륨을 생성하는 것을 포함할 수 있다. 이러한 방식으로, 복원 볼륨은 백업 시스템에 의해 달성될 수 있는 것보다 더 낮은 RPO로 생성될 수 있다. 유사하게, 복원 요청을 수신하는 것과 정상 입력/출력 동작들을 재개하는 것 사이의 시간을 반영할 수 있는 시스템 복원 동작의 RTO는 복원 요청이 페일오버 또는 페일백 요청인지 여부에 의존할 수 있으며, 이는 이하에서 도 8 및 도 9를 참조하여 더 상세하게 설명된다.In one example, flow 700 includes an act 716 of the computer system creating a restore volume. Creating a restore volume may, for example, refer to an updated manifest (eg, updated manifest 440 of FIG. 4 ), as described with reference to FIGS. 3 and 5 , stored in the object store. It may include creating a block volume by mapping duplicate data from chunk objects to blocks within the block volume. In this way, the restore volume can be created with a lower RPO than can be achieved by the backup system. Similarly, the RTO of a system restore operation, which may reflect the time between receiving a restore request and resuming normal input/output operations, may depend on whether the restore request is a failover or failback request, which is It will be described in more detail with reference to FIGS. 8 and 9 below.

도 8은 하나 이상의 실시예들에 따른 페일오버 볼륨을 생성하기 위한 예시적인 흐름(800)을 예시한다. 흐름(800)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다. 8 illustrates an example flow 800 for creating a failover volume in accordance with one or more embodiments. The operations of flow 800 may be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of a computer system, such as asynchronous replication system 140 of FIG. 1 . can As implemented, instructions represent modules containing code or circuitry executable by processor(s) of a computer system. Execution of these instructions configures the computer system to perform certain operations described herein. Each piece of circuitry or code in conjunction with the processor performs a separate operation(s). Although the actions are illustrated in a specific order, it should be understood that the specific order is not essential and that one or more actions may be omitted, skipped, and/or rearranged.

일 예에서, 흐름(800)은, 컴퓨터 시스템이 페일오버 요청인 복원 요청을 수신하는 동작(802)을 포함한다. 이상에서 도 1 내지 도 6을 참조하여 더 상세하게 설명된 바와 같이, 페일오버 요청은, 분산 저장 시스템(예를 들어, 클라우드 저장부)의 부분을 형성할 수 있는 블록 볼륨 시스템(예를 들어, 도 1의 블록 볼륨 시스템(122))에 영향을 주는 재해 또는 다른 장애 이후에 비동기적 복제(예를 들어, 도 1의 비동기적 복제(140))에 의해 수신될 수 있다. 일부 실시예들에서, 페일오버 요청은, 블록 볼륨 시스템에 영향을 주는 장애에 의해 잠재적으로 영향을 받지 않은 제2 지리적 영역에서 블록 볼륨 시스템을 재현하는 페일오버 볼륨을 생성하기 위한 요청을 포함할 수 있다. In one example, flow 800 includes an act 802 of the computer system receiving a restore request that is a failover request. As described in more detail with reference to FIGS. 1-6 above, a failover request is a block volume system (eg, a cloud storage) that can form part of a distributed storage system (eg, cloud storage). may be received by asynchronous replication (eg, asynchronous replication 140 of FIG. 1 ) after a disaster or other failure affecting block volume system 122 of FIG. 1 . In some embodiments, the failover request may include a request to create a failover volume that reproduces the block volume system in a second geographic area potentially unaffected by the failure affecting the block volume system. there is.

일 예에서, 흐름(800)은, 컴퓨터 시스템이 제2 지리적 영역에서 페일오버 볼륨을 생성하는 동작(804)을 포함한다. 일부 경우들에서, 페일오버 볼륨은, 블록 볼륨 시스템에 영향을 주는 장애가 해결되기 이전에 입력-출력 동작들(예를 들어, 도 2의 I/O 동작들(210))의 재개를 허용할 수 있다. 이러한 경우들에서, RTO는, 페일백 볼륨에 비해 페일오버 볼륨을 생성함으로써 개선될 수 있다. 이상에서 도 7을 참조하여 설명된 바와 같이, 객체 저장부에 저장된 복제 데이터를 사용하여 페일오버 볼륨을 생성하는 것은, 비동기적 복제 동안 생성된 최근에 집성된 델타들로 업데이트되는, 복제 데이터의 메모리 내의 위치들을 설명하는 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(440))를 참조하여 페일오버 볼륨을 생성하는 것을 포함할 수 있다.In one example, flow 800 includes an act 804 of the computer system creating a failover volume in the second geographic region. In some cases, a failover volume may allow resume of input-output operations (eg, I/O operations 210 of FIG. 2 ) before a failure affecting the block volume system is resolved. there is. In these cases, RTO can be improved by creating a failover volume over a failback volume. As described above with reference to FIG. 7 , creating a failover volume using replicated data stored in the object storage unit is a memory of the replicated data, which is updated with recently aggregated deltas generated during asynchronous replication. creating the failover volume with reference to an updated manifest describing the locations within (eg, updated manifest 440 of FIG. 4 ).

일 예에서, 흐름(800)은, 컴퓨터 시스템이 페일오버 볼륨을 하이드레이트(hydrate)하는 동작(806)을 포함한다. 이상에서 더 상세하게 설명된 바와 같이, 페일오버 볼륨을 하이드레이트하는 것은, 업데이트된 매니페스트에서 설명된 데이터를 객체 저장부(예를 들어, 이상에서, 도 1을 참조하여 설명된 청크 객체들로 있는 것과 같음)로부터 블록 볼륨 시스템의 판독/기입 동작들(예를 들어, 도 2의 I/O 동작들(210))에 의해 어드레스가능할 수 있는 블록으로 복원하는 것을 포함한다. 일부 실시예들에서, 블록 볼륨 시스템의 파티션들은 페일오버 볼륨에서 보존될 수 있다.In one example, flow 800 includes act 806 where the computer system hydrates the failover volume. As described in more detail above, hydrating a failover volume may transfer the data described in the updated manifest to an object store (e.g., as being in chunk objects as described above with reference to Figure 1). equal) to a block that can be addressed by read/write operations of the block volume system (eg, I/O operations 210 of FIG. 2). In some embodiments, partitions of a block volume system may be preserved in a failover volume.

일 예에서, 흐름(800)은, 컴퓨터 시스템이 입력-출력 동작들을 개시하는 동작(808)을 포함한다. 블록 볼륨 시스템으로부터의 복제된 데이터가 복원되고 페일오버 볼륨에 매핑되는 "하이드레이션" 다음에, 페일오버 볼륨은 입력-출력 동작들을 시작할 수 있으며, 장애가 해결될 수 있는 동안에 블록 볼륨 시스템의 역할을 맡을 수 있다. In one example, flow 800 includes act 808 where the computer system initiates input-output operations. Following "hydration" where the replicated data from the block volume system is restored and mapped to the failover volume, the failover volume can initiate input-output operations and assume the role of the block volume system while the failure can be resolved. can

도 9는 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(900)을 예시한다. 흐름(900)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.9 illustrates an example flow 900 for creating a failback volume in accordance with one or more embodiments. The operations of flow 900 may be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of a computer system, such as asynchronous replication system 140 of FIG. 1 . can As implemented, instructions represent modules containing code or circuitry executable by processor(s) of a computer system. Execution of these instructions configures the computer system to perform certain operations described herein. Each piece of circuitry or code in conjunction with the processor performs a separate operation(s). Although the actions are illustrated in a specific order, it should be understood that the specific order is not essential and that one or more actions may be omitted, skipped, and/or rearranged.

일 예에서, 흐름(900)은, 컴퓨터 시스템이 페일백 요청인 복원 요청을 수신하는 동작(902)을 포함한다. 일부 실시예들에서, 복원 요청을 야기한 장애는 불명확한 지속기간이 아닐 수 있다. 예를 들어, 장애는, 장애가 쉽게 극복될 수 있는 일시적인 전력 또는 네트워크 중단들에 의해 초래된 때와 같이, 예측가능한 시간의 길이 내에 해결가능할 수 있다. 이와 같이, 페일백 요청은, (예를 들어, 분산 저장 성능의 관점으로부터의) 페일오버 볼륨을 생성하기 위한 바람직한 대안 및 페일오버 볼륨에 대한 RTO와 관련하여 잠재적으로 제한된 차이를 나타낼 수 있다.In one example, flow 900 includes an act 902 of the computer system receiving a restore request that is a failback request. In some embodiments, the failure that caused the restoration request may not be of indeterminate duration. For example, a disturbance may be resolvable within a predictable length of time, such as when a disturbance is caused by temporary power or network outages that can be easily overcome. As such, a failback request may represent a desirable alternative for creating a failover volume (eg, from a distributed storage performance perspective) and a potentially limited difference in terms of the RTO for the failover volume.

일 예에서, 흐름(900)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨을 생성하는 동작(904)을 포함한다. 일부 실시예들에서, 스탠바이 볼륨은, 스탠바이 볼륨이 제2 지리적 영역(예를 들어, 도 1의 제2 데이터 센터(130))에서 입력-출력 동작들을 수행하도록 설계되지 않는다는 점을 제외하면 페일오버 볼륨과 유사한 블록 볼륨 시스템을 포함할 수 있다. 예를 들어, 스탠바이 볼륨은 분산 저장 시스템의 사용자에게 보이지 않을 수 있거나 및/또는 입력-출력 동작들에 대해 부적합하도록 구성될 수 있다. 일부 실시예들에서, 스탠바이 볼륨은 (예를 들어, 파티셔닝, 크기, 등과 관련하여) 블록 볼륨 시스템의 구조 및 청크 객체들로서 저장된 복제된 데이터에 대한 블록들의 매핑을 재현할 수 있다.In one example, flow 900 includes an act 904 of the computer system creating a standby volume in the second geographic region. In some embodiments, the standby volume is capable of failover, except that the standby volume is not designed to perform input-output operations in a second geographic area (eg, second data center 130 in FIG. 1 ). It can include a block volume system similar to a volume. For example, a standby volume may be invisible to a user of a distributed storage system and/or configured to be unsuitable for input-output operations. In some embodiments, the standby volume may reproduce the structure of the block volume system (eg, with respect to partitioning, size, etc.) and the mapping of blocks to replicated data stored as chunk objects.

일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 스탠바이 볼륨을 클로닝하는 동작(906)을 포함한다. 이상에서 도 5를 참조하여 더 상세하게 설명된 바와 같이, 스탠바이 볼륨을 클로닝하는 것(예를 들어, 도 5의 동작(524))은, 적어도 부분적으로 스탠바이 볼륨의 구조를 사용하여 페일백 볼륨을 생성함으로써 제1 지리적 영역에 블록 볼륨 시스템을 복원하는 것을 포함할 수 있다. 예를 들어, 스탠바이 볼륨은 복제된 데이터의 구조 및 매핑들을 (예를 들어, 업데이트된 매니페스트를 참조하여) 설명할 수 있어서, 페일백 볼륨은, 일단 복제된 데이터가 제2 지리적 영역으로부터 다시 제1 지리적 영역으로 카피되면 새로운 매핑들로 복원되도록 구성될 수 있다. In one example, flow 900 includes an act 906 of the computer system cloning the standby volume in the first geographic region. As described in more detail with reference to FIG. 5 above, cloning the standby volume (eg, operation 524 of FIG. 5 ) at least partially uses the structure of the standby volume to create a failback volume. and restoring the block volume system to the first geographic region by creating. For example, the standby volume can describe the structure and mappings of the replicated data (eg, with reference to an updated manifest), such that the failback volume allows the data, once replicated, to be transferred back to the first geographic area from the second geographic area. Once copied to a geographic area, it can be configured to be restored with new mappings.

일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 페일백 볼륨을 하이드레이트하는 동작(908)을 포함한다. 일부 실시예들에서, 페일백 볼륨을 하이드레이트하는 것은, 페일백 볼륨이 입력-출력 동작들을 재개할 수 있도록 제1 지리적 영역(예를 들어, 도 1의 제1 데이터 센터(120))으로 복제된 데이터를 복원하는 것을 포함할 수 있다. 복제된 데이터를 복원하는 것은, 제2 지리적 영역으로부터 제1 지리적 영역으로 데이터를 카피하는 것을 포함할 수 있다. 복제된 데이터를 복원하는 것은 또한, 비동기적 복제 반복들로부터의 매핑들로부터의 데이터(예를 들어, 델타 적용에 의해 생성된 것들)를 페일백 볼록 볼륨 시스템 내의 새로운 데이터 위치들에 대응하는 새로운 매핑들로 다시 매핑하는 것을 포함할 수 있다. In one example, flow 900 includes an act 908 of the computer system hydrating a failback volume in a first geographic area. In some embodiments, hydrating the failback volume is replicated to a first geographic area (eg, first data center 120 of FIG. 1 ) so that the failback volume can resume input-output operations. This may include restoring data. Restoring the duplicated data may include copying the data from the second geographic area to the first geographic area. Restoring replicated data also includes data from mappings from asynchronous replication iterations (e.g., those created by delta application) to new mappings corresponding to new data locations within the failback convex volume system. may include mapping back to .

일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 입력-출력 동작들을 시작하는 동작(910)을 포함한다. 입력-출력 동작들은 페일백 볼륨을 사용하여 데이터를 액세스하는 것, 저장하는 것, 및 수정하는 것을 설명한다. 시스템 복원의 부분으로서, 낮은 RTO 및 낮은 RPO는 시스템 성능을 개선할 수 있다. 적어도 이러한 이유로, 일부 실시예들에서, 입력-출력 동작들은, 동작(908)의 데이터 복원이 진행 중인 동안 시작될 수 있다. 예를 들어, 판독-기입 동작들은, 복제된 데이터가 제2 지리적 영역으로부터 다시 제1 지리적 영역으로 완전히 카피되기 이전에 시작될 수 있다. 일부 실시예들에서, 카피-오버(copy over) 및 재매핑은, 페일백 볼륨에서 입력-출력 동작들이 시작되기 이전에 완전히 완료될 수 있다.In one example, flow 900 includes act 910 where the computer system initiates input-output operations in a first geographic area. Input-output operations describe accessing, storing, and modifying data using a failback volume. As part of system recovery, a low RTO and low RPO can improve system performance. For at least this reason, in some embodiments, input-output operations may be started while data recovery of operation 908 is in progress. For example, read-write operations may begin before the copied data is completely copied from the second geographic area back to the first geographic area. In some embodiments, copy over and remapping can be fully completed before input-output operations begin on the failback volume.

도 10은 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(1000)을 예시한다. 흐름(1000)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다. 10 illustrates an example flow 1000 for creating a failback volume in accordance with one or more embodiments. The operations of flow 1000 may be stored as computer-readable instructions on a non-transitory computer-readable medium of a computer system, such as asynchronous replication system 140 of FIG. 1, and/or implemented as hardware circuitry. can As implemented, instructions represent modules containing code or circuitry executable by processor(s) of a computer system. Execution of these instructions configures the computer system to perform certain operations described herein. Each piece of circuitry or code in conjunction with the processor performs a separate operation(s). Although the actions are illustrated in a specific order, it should be understood that the specific order is not essential and that one or more actions may be omitted, skipped, and/or rearranged.

도 6을 참조하여 더 상세하게 설명된 바와 같이, 일부 실시예들에서, 비동기적 복제는, 복제된 데이터의 객체 저장물에 추가적으로 또는 대안적으로, 제2 지리적 위치에 있는 스탠바이 볼륨을 포함할 수 있다. 델타들에 의해 설명된 데이터를 (예를 들어, 도 1의 데이터 변환(146)을 참조하여 설명된 바와 같이) 청크 객체들로 변환하는 것이 아니라, 스탠바이 볼륨은 블록 볼륨 시스템으로부터 스탠바이 볼륨으로의 블록 데이터의 직접 전송을 포함할 수 있다. 일부 실시예들에서, 스탠바이 볼륨은 블록 볼륨 시스템의 사용자에게 보이지 않을 수 있지만(예를 들어, 입력-출력 동작들을 위해 이용가능하지 않을 수 있지만), 블록 볼륨 시스템에 영향을 주는 중단의 경우에 RTO 및 RPO를 잠재적으로 최소화하기 위해 업데이트된 블록 데이터를 유지할 수 있다. 일부 실시예들에서, 스탠바이 볼륨은, 예를 들어, 객체 저장 데이터에 대한 체크포인트 동작들을 또한 구현하면서 델타들로부터 데이터를 캐싱(caching)함으로써 목적지 영역에서 객체 저장과 상호작용할 수 있다.As described in more detail with reference to FIG. 6 , in some embodiments the asynchronous replication may include a standby volume at the second geographic location, in addition to or alternatively to the object store of replicated data. there is. Rather than converting the data described by the deltas into chunk objects (e.g., as described with reference to data transformation 146 of FIG. 1), the standby volume is a block from the block volume system to the standby volume. This may include direct transmission of data. In some embodiments, the standby volume may not be visible to the user of the block volume system (e.g., may not be available for input-output operations), but RTO in case of an outage affecting the block volume system. and keep block data updated to potentially minimize RPO. In some embodiments, the standby volume can interact with the object store in the destination area, for example by caching data from deltas while also implementing checkpoint operations on the object store data.

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨 시스템으로부터 델타를 생성하는 동작(1002)을 포함한다. 델타는, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 제1 논리적 시간에서의 제1 스냅샷과 제2 논리적 시간에서의 제2 스냅샷 사이의 블록 볼륨 시스템에 저장된 데이터에 대한 수정들을 나타낼 수 있다. In one example, flow 1000 includes an act 1002 of the computer system generating a delta from a block volume system in a first geographic region. A delta represents modifications to data stored in a block volume system between a first snapshot at a first logical time and a second snapshot at a second logical time, as described in more detail with reference to FIG. 2 . can

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨 시스템의 스냅샷을 생성하는 동작(1004)을 포함한다. 일부 실시예들에서, 스탠바이 볼륨을 업데이트하는 것 이전에 스탠바이 볼륨의 스냅샷을 생성하는 것이 선행될 수 있다. 도 1을 참조하여 상세하게 설명된 바와 같이, 스냅샷을 생성하는 것은, 스탠바이 볼륨을 구성하는 블록들의 복수의 블록 이미지들을 파티션 단위로 생성하는 것을 포함할 수 있다. 조립되면, 이러한 이미지들은 (예를 들어, 이상에서 2-단계 커밋 프로토콜들을 참조하여 설명된 바와 같이) 스냅샷의 생성에 대응하는 논리적 시간에서의 스탠바이 볼륨 내의 데이터의 상태를 설명할 수 있다. 스냅샷은, 블록 볼륨 시스템을 복원할 때 사용하기 위한 비동기적 복제 시스템에 대한 폴백(fallback) 위치를 제공할 수 있다. 예를 들어, 스탠바이 볼륨이 새로운 델타들로 업데이트되고 있는 동안 복원 요청이 수신되는 경우, 비동기적 복제는 스냅샷을 사용하여 복원 볼륨을 생성할 수 있다. In one example, flow 1000 includes an act 1004 of the computer system creating a snapshot of the standby volume system in the second geographic region. In some embodiments, creating a snapshot of the standby volume may precede updating the standby volume. As described in detail with reference to FIG. 1 , creating a snapshot may include creating a plurality of block images of blocks constituting a standby volume in units of partitions. Once assembled, these images can describe the state of the data in the standby volume at the logical time corresponding to the creation of the snapshot (eg, as described with reference to the two-phase commit protocols above). Snapshots can provide a fallback location for an asynchronous replication system to use when restoring a block volume system. For example, if a restore request is received while the standby volume is being updated with new deltas, asynchronous replication can use the snapshot to create the restore volume.

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 델타를 스탠바이 볼륨 시스템에 적용하는 동작(1006)을 포함한다. 객체 저장부를 사용하는 데이터 복제를 참조하여 설명된 접근방식과는 대조적으로, 스탠바이 볼륨은 델타들을 직접적으로 적용함으로써 업데이트될 수 있다. 예를 들어, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 델타는, 수정의 결과로서 복제되는 데이터에 대한 블록 볼륨 시스템의 메모리 내의 위치를 설명하는 메타데이터(예를 들어, 블록 식별자)를 포함할 수 있다. 이러한 방식으로, 델타로부터의 표시된 수정을 적용함으로써 스탠바이 볼륨에 대한 수정이 이루어질 수 있다. In one example, flow 1000 includes act 1006 where the computer system applies the delta to the standby volume system. In contrast to the approach described with reference to data replication using an object store, the standby volume can be updated by applying the deltas directly. For example, as described in more detail with reference to FIG. 2, deltas include metadata (e.g., block identifiers) that describe locations within memory of a block volume system for data that is copied as a result of modifications. can include In this way, modifications can be made to the standby volume by applying the indicated modifications from delta.

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 페일백 요청을 수신하는 동작(1008)을 포함한다. 이상에서 설명된 바와 같이, 페일백 요청은 블록 볼륨 시스템에서의 동작의 장애 또는 다른 중단 이후에 수신될 수 있어서, 스탠바이 시스템은 중단이 해결된 이후에 페일백 시스템을 생성하기 위해 사용될 수 있다.In one example, flow 1000 includes an act 1008 of the computer system receiving a failback request. As described above, a failback request may be received after a failure or other disruption of operation in the block volume system, so that the standby system may be used to create a failback system after the disruption is resolved.

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 스탠바이 볼륨을 클로닝하는 동작(1010)을 포함한다. 도 5를 참조하여 더 상세하게 설명된 바와 같이, 스탠바이 볼륨을 클로닝하는 것(예를 들어, 도 5의 동작(524))은, (예를 들어, 크기, 파티션들, 등과 관련하여) 스탠바이 볼륨의 구조를 재현할 수 있는 제1 지리적 영역(예를 들어, 도 1의 제1 데이터 센터(120))에서 페일백 볼륨(예를 들어, 도 5의 페일백 볼륨(562))을 생성하는 것을 포함할 수 있다. In one example, flow 1000 includes act 1010 where the computer system clones the standby volume. As described in more detail with reference to FIG. 5, cloning the standby volume (eg, operation 524 of FIG. 5) may (eg, with respect to size, partitions, etc.) Creating a failback volume (eg, failback volume 562 in FIG. 5 ) in a first geographic area (eg, first data center 120 in FIG. 1 ) that can reproduce the structure of can include

일 예에서, 흐름(1000)은, 컴퓨터 시스템이 복제된 데이터를 제1 지리적 영역에서의 페일백 볼륨으로 복원하는 동작(1012)을 포함한다. 이상에서 설명된 바와 같이, 복제된 데이터를 복원하는 것은, 제2 지리적 영역으로부터의 블록 데이터를 제1 지리적 영역으로 카피하는 것("하이드레이팅"으로도 지칭됨) 및 블록 데이터를 페일백 볼륨에 매핑하는 것을 포함할 수 있다. 일부 구현예들에서, 입력-출력 동작들은, 일단 복제된 데이터가 복원되면 및/또는 복제된 데이터를 복원하는 동안에 페일백 볼륨에서 시작될 수 있다.In one example, flow 1000 includes an act 1012 of the computer system restoring the replicated data to a failback volume in the first geographic region. As described above, restoring replicated data involves copying block data from the second geographic area to the first geographic area (also referred to as “hydrating”) and copying the block data to a failback volume. may include mapping. In some implementations, input-output operations can be initiated on the failback volume once the replicated data is restored and/or while restoring the replicated data.

도 11은 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(1100)을 예시한다. 흐름(1100)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.11 illustrates an example flow 1100 for creating a failback volume in accordance with one or more embodiments. The operations of flow 1100 may be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of a computer system, such as asynchronous replication system 140 of FIG. 1 . can As implemented, instructions represent modules containing code or circuitry executable by processor(s) of a computer system. Execution of these instructions configures the computer system to perform certain operations described herein. Each piece of circuitry or code in conjunction with the processor performs a separate operation(s). Although the actions are illustrated in a specific order, it should be understood that the specific order is not essential and that one or more actions may be omitted, skipped, and/or rearranged.

일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 크기 조정 요청을 수신하는 동작(1102)을 포함한다. 예를 들어, 스냅샷 생성의 반복들 사이의 또는 델타 생성 동안의 비동기적 복제 시스템의 동작 동안, 제1 지리적 영역에서의 블록 볼륨 시스템은 크기 조정 요청을 받을 수 있다. 크기 조정 요청이 하나 이상의 파티션들의 추가 및/또는 제거, 또는 블록 볼륨 시스템의 하나 이상의 파티션들의 크기의 변경을 포함할 수 있기 때문에, 크기 조정 이전에 생성된 델타들은 이것이 크기 조정이 된 이후의 스탠바이 볼륨과 호환되지 않을 수 있다.In one example, flow 1100 includes an act 1102 of the computer system receiving a resize request in a first geographic area. For example, during operation of the asynchronous replication system between iterations of snapshot creation or during delta creation, the block volume system in the first geographic region may receive a resizing request. Because a resize request may involve adding and/or removing one or more partitions, or changing the size of one or more partitions of a block volume system, the deltas created before resizing are the same as those of the standby volume after it has been resized. may not be compatible with

일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 마지막 델타를 생성하는 동작(1104)을 포함한다. 일부 실시예들에서, 비동기적 복제 시스템은, 블록 볼륨 시스템의 크기 조정 요청의 수신에 응답하여 수정된 복제 프로토콜을 구현할 수 있다. 예를 들어, 크기 조정 요청의 수신 시에 즉시 블록 볼륨 시스템을 크기 조정하는 것이 아니라, 다른 스냅샷이 생성될 수 있고, 하나 이상의 마지막 델타들이 생성될 수 있다. 이러한 접근방식은 복제된 데이터가 크기 조정 이전의 블록 볼륨 시스템의 업데이트된 상태를 반영하는 것을 가능하게 할 수 있으며, 이는 결과적으로 복제된 데이터로부터 생성된 복원 볼륨의 RPO를 감소시킬 수 있다.In one example, flow 1100 includes an act 1104 of the computer system generating a final delta in a first geographic area. In some embodiments, the asynchronous replication system may implement a modified replication protocol in response to receiving a request to resize the block volume system. For example, rather than resizing the block volume system immediately upon receipt of a resize request, another snapshot may be created, and one or more final deltas may be created. This approach may enable the replicated data to reflect the updated state of the block volume system prior to resizing, which in turn may reduce the RPO of the restore volume created from the replicated data.

일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨에 마지막 델타를 적용하는 동작(1106)을 포함한다. 이상에서 설명된 바와 같이, 마지막 델타를 적용하는 것은, 동작(1104)에서 생성된 하나 이상의 마지막 델타들에 의해 설명되는 블록 볼륨 시스템에 대한 수정들을 반영하도록 스탠바이 볼륨을 수정하는 것을 포함할 수 있다.In one example, flow 1100 includes an act 1106 of the computer system applying the last delta to the standby volume in the second geographic region. As described above, applying the last delta may include modifying the standby volume to reflect modifications to the block volume system described by the one or more last deltas generated in operation 1104 .

일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 크기를 조정하는 동작(1108)을 포함한다. 동작(1104) 다음에, 크기 조정 요청은 블록 볼륨 시스템에 적용될 수 있다.In one example, flow 1100 includes an act 1108 of the computer system resizing a block volume in a first geographic region. Following operation 1104, a resize request may be applied to the block volume system.

일 예에서, 흐름(1100)은, 컴퓨터 시스템이 크기 조정 요청에 대응하여 스탠바이 볼륨의 크기를 조정하는 동작(1110)을 포함한다. 유사하게, 동작(1106) 다음에, 스탠바이 볼륨은 또한 크기 조정 요청에 대응하는 방식으로 크기가 조정될 수 있다. 비동기적 복제가 파티션-특정 델타들을 생성할 수 있기 때문에, 스탠바이 볼륨은 블록 볼륨 시스템의 구조를 재현하도록 구조화될 수 있다. 예를 들어, 스탠바이 볼륨은 블록 볼륨 시스템과 동일한 크기의 동일한 수의 파티션들을 포함할 수 있다.In one example, flow 1100 includes an act 1110 of the computer system resizing the standby volume in response to the resizing request. Similarly, following operation 1106, the standby volume may also be resized in a manner responsive to the resize request. Because asynchronous replication can create partition-specific deltas, the standby volume can be structured to reproduce the structure of a block volume system. For example, a standby volume can contain the same number of partitions of the same size as a block volume system.

이상에서 언급된 바와 같이, 서비스형 인프라스트럭처(infrastructure as a service; IaaS)는 클라우드 컴퓨팅의 하나의 특정 유형이다. IaaS는 공용 네트워크(예를 들어, 인터넷)를 통해 가상화된 컴퓨팅 자원들을 제공하도록 구성될 수 있다. IaaS 모델에서, 클라우드 컴퓨팅 제공자는 인프라스트럭처 구성요소들(예를 들어, 서버들, 저장 디바이스들, 네트워크 노드들(예를 들어, 하드웨어), 배포 소프트웨어, 플랫폼 가상화(예를 들어, 하이퍼바이저 계층), 또는 유사한 것)을 호스팅할 수 있다. 일부 경우들에서, IaaS 제공자는 또한 이러한 인프라스트럭처 구성요소들에 수반되는 다양한 서비스들(예를 들어, 청구, 모니터링, 로깅, 보안, 부하 밸런싱 및 클러스팅, 등)을 공급할 수 있다. 따라서, 이러한 서비스들이 정책-구동될 수 있기 때문에, IaaS 사용자들은 애플리케이션 가용성 및 성능을 유지하기 위한 부하 밸런싱을 구동하기 위한 정책들을 구현할 수 있다.As mentioned above, infrastructure as a service (IaaS) is one specific type of cloud computing. IaaS may be configured to provide virtualized computing resources over a public network (eg, the Internet). In the IaaS model, a cloud computing provider provides infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), distribution software, platform virtualization (e.g., hypervisor layer) , or similar). In some cases, the IaaS provider may also supply various services (eg, billing, monitoring, logging, security, load balancing and clustering, etc.) that accompany these infrastructure components. Thus, because these services can be policy-driven, IaaS users can implement policies to drive load balancing to maintain application availability and performance.

일부 인스턴스들에서, IaaS 고객은 인터넷과 같은 광역 네트워크(wide area network; WAN)를 통해 자원들 및 서비스들에 액세스할 수 있으며, 애플리케이션 스택의 나머지 요소들을 설치하기 위해 클라우드 제공자의 서비스들을 사용할 수 있다. 예를 들어, 사용자는 가상 머신(virtual machine; VM)들을 생성하고, 각각의 VM에 운영 체계(operating system; OS)들을 설치하며, 데이터베이스와 같은 미들웨어를 배치하고, 작업부하들 및 백업들에 대한 저장 버킷들을 생성하며, 심지어 해당 VM 내에 기업 소프트웨어를 설치하기 위해 IaaS 플랫폼에 로그인할 수 있다. 그런 다음, 고객들은, 네트워크 트래픽의 밸런싱, 애플리케이션 이슈들의 트러블슈팅, 성능의 모니터링, 재해 복구의 관리, 등을 포함하는 다양한 기능들을 수행하기 위해 제공자의 서비스들을 사용할 수 있다.In some instances, an IaaS customer can access resources and services over a wide area network (WAN), such as the Internet, and can use the services of a cloud provider to install the rest of the application stack. . For example, a user creates virtual machines (VMs), installs operating systems (OSs) in each VM, deploys middleware such as databases, and provides information about workloads and backups. It creates storage buckets and can even log in to the IaaS platform to install enterprise software within that VM. Customers can then use the provider's services to perform various functions including balancing network traffic, troubleshooting application issues, monitoring performance, managing disaster recovery, and the like.

대부분의 경우들에서, 클라우드 컴퓨팅 모델은 클라우드 제공자의 참여를 필요로 할 것이다. 클라우드 제공자는, 반드시 그래야 하지는 않지만, IaaS를 제공(예를 들어, 제공, 임대, 판매)하는 것을 전문으로 하는 제3자 서비스일 수 있다. 엔티티(entity)는 또한 사설 클라우드를 배포하여 인프라스트럭처 서비스들의 자체 제공자가 될 것을 선택할 수도 있다.In most cases, the cloud computing model will require the involvement of a cloud provider. A cloud provider may, but need not be, a third party service that specializes in providing (eg, offering, leasing, selling) IaaS. An entity may also choose to become its own provider of infrastructure services by deploying a private cloud.

일부 예들에서, IaaS 배포는 새로운 애플리케이션 또는 애플리케이션의 새로운 버전을 준비된 애플리케이션 서버 또는 유사한 것에 배치하는 프로세스이다. 이는 또한, 서버를 준비하는(예를 들어, 라이브러리들, 데몬들, 등을 설치하는) 프로세스를 포함할 수 있다. 이는 보통 하이퍼바이저 계층(예를 들어, 서버들, 저장부, 네트워크 하드웨어, 및 가상화) 아래에서 클라우드 제공자에 의해 관리된다. 따라서, 고객은 (예를 들어, 셀프-서비스 가상 머신들(예를 들어, 요청 시 가동될 수 있음) 또는 유사한 것 상에서) 핸들링(OS), 미들웨어, 및/또는 애플리케이션 배포를 담당할 수 있다.In some examples, IaaS deployment is the process of deploying a new application or a new version of an application to a prepared application server or similar. This may also include the process of preparing the server (eg, installing libraries, daemons, etc.). It is usually managed by the cloud provider below the hypervisor layer (eg, servers, storage, network hardware, and virtualization). Thus, the customer can be responsible for handling (OS), middleware, and/or application deployment (eg, on self-service virtual machines (eg, that can be launched on demand) or the like).

일부 예들에서, IaaS 프로비저닝은 사용하기 위한 컴퓨터들 또는 가상 호스트들을 획득하고, 심지어 이들에 필요한 라이브러리들 또는 서비스들을 설치하는 것을 나타낼 수 있다. 대부분의 경우들에서, 배포는 프로비저닝을 포함하지 않으며, 프로비저닝이 먼저 수행되어야 할 수 있다.In some examples, IaaS provisioning can refer to obtaining computers or virtual hosts for use, and even installing necessary libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may have to be performed first.

일부 경우들에서, IaaS 프로비저닝에 대해 2개의 상이한 문제들이 있다. 첫째, 어떤 것도 실행되기 이전에 인프라스트럭처의 초기 세트를 프로비저닝해야 하는 초기 문제가 있다. 둘째, 일단 모든 것이 프로비저닝되면 기존 인프라스트럭처를 진화시키는 문제(예를 들어, 새로운 서비스들을 추가하는 것, 서비스들을 변경하는 것, 서비스들을 제거하는 것, 등)가 있다 일부 경우들에서, 이러한 2개의 문제들은, 인프라스트럭처의 구성이 선언적으로 정의되는 것을 가능하게 함으로써 해결될 수 있다. 다시 말해서, 인프라스트럭처(예를 들어, 필요한 구성요소들 및 이들이 상호작용하는 방법)는 하나 이상의 구성 파일들에 의해 정의될 수 있다. 따라서, 인프라스트럭처의 전체 토폴로지(예를 들어, 어떤 리소스들이 어떤 것에 의존하는지, 그리고 이들이 각각 함께 작용하는 방법)는 선언적으로 설명될 수 있다. 일부 경우들에서, 일단 토폴로지가 정의되면, 구성 파일들에서 설명된 상이한 구성요소들을 생성하거나 및/또는 관리하는 워크플로우(workflow)가 생성될 수 있다.In some cases, there are two different issues with IaaS provisioning. First, there's the initial problem of having to provision an initial set of infrastructure before anything goes live. Second, there is the problem of evolving the existing infrastructure (eg, adding new services, changing services, removing services, etc.) once everything is provisioned. In some cases, these two The problems can be solved by enabling the configuration of the infrastructure to be defined declaratively. In other words, the infrastructure (eg, required components and how they interact) may be defined by one or more configuration files. Thus, the overall topology of an infrastructure (eg, which resources depend on which, and how they each work together) can be described declaratively. In some cases, once the topology is defined, a workflow can be created that creates and/or manages the different components described in the configuration files.

일부 예들에서, 인프라스트럭처는 다수의 상호연결된 요소들을 가질 수 있다. 예를 들어, 코어 네트워크로도 알려진 하나 이상의 가상 사설 클라우드(virtual private cloud; VPC)(예를 들어, 구성가능한 및/또는 공유된 컴퓨팅 자원들의 잠재적으로 온-디맨드 풀)가 존재할 수 있다. 일부 예들에서, 네트워크의 보안이 셋업될 방법 및 하나 이상의 가상 머신(VM)들을 정의하기 위해 프로비저닝된 하나 이상의 보안 그룹 규칙들도 존재할 수 있다. 부하 밸런서, 데이터베이스, 또는 유사한 것과 같은 다른 인프라스트럭처 요소들이 또한 프로비저닝될 수 있다. 점점 더 많은 인프라스트럭처 요소들이 희망되거나 및/또는 추가됨에 따라, 인프라스트럭처는 점진적으로 발전할 수 있다. In some examples, an infrastructure may have multiple interconnected elements. For example, there may be one or more virtual private clouds (VPCs), also known as core networks (eg, configurable and/or potentially on-demand pools of shared computing resources). In some examples, there may also be one or more security group rules provisioned to define one or more Virtual Machines (VMs) and how the security of the network will be set up. Other infrastructure elements such as load balancers, databases, or the like may also be provisioned. The infrastructure may evolve incrementally as more and more infrastructure elements are desired and/or added.

일부 경우들에서, 연속적인 배포 기술들은 다양한 가상 컴퓨팅 환경들에 걸친 인프라스트럭처 코드의 배포를 가능하게 하기 위해 이용될 수 있다. 추가적으로, 설명되는 기술들은 이러한 환경들 내에서 인프라스트럭처 관리를 가능하게 할 수 있다. 일부 예들에서, 서비스 팀들은, (예를 들어, 다양하고 상이한 지리적 위치들에 걸쳐, 때때로 전 세계에 걸쳐) 하나 이상의 하지만 흔히 다수의 상이한 생산 환경들로 배포되도록 희망되는 코드를 작성할 수 있다. 그러나, 일부 예들에서, 코드가 배포될 인프라스트럭처가 먼저 셋업되어야 한다. 일부 경우들에서, 프로비저닝은 수동으로 이루어질 수 있으며, 프로비저닝 툴은 자원들을 프로비저닝하기 위해 사용될 수 있거나 및/또는 배포 툴은 일단 인프라스트럭처가 프로비저닝되면 코드를 배포하기 위해 사용될 수 있다. In some cases, continuous deployment techniques may be used to enable deployment of infrastructure code across a variety of virtualized computing environments. Additionally, the described technologies may enable infrastructure management within these environments. In some examples, service teams may write code that is desired to be distributed to one or more but often many different production environments (eg, across a variety of different geographic locations, sometimes across the world). However, in some examples, the infrastructure on which the code will be deployed must first be set up. In some cases, provisioning can be done manually, a provisioning tool can be used to provision resources and/or a deployment tool can be used to deploy code once the infrastructure is provisioned.

도 12는 적어도 일 실시예에 따른 IaaS 아키텍처의 예시적인 패턴을 예시하는 블록도(1200)이다. 서비스 운영자들(1202)은 가상 클라우드 네트워크(virtual cloud network; VCN)(1206)를 포함할 수 있는 보안 호스트 테넌시(tenancy)(1204) 및 보안 호스트 서브넷(1208)에 통신가능하게 결합될 수 있다. 일부 예들에서, 서비스 운영자들(1202)은, Microsoft Windows Mobile® 및/또는 iOS, Windows Phone, Android, BlackBerry 8, Palm OS, 및 유사한 것과 같은 다양한 모바일 운영 시스템들과 같은 소프트웨어를 실행하며, 인터넷, e-메일, 단문 메시지 서비스(short message service; SMS), Blackberry®, 또는 다른 통신 프로토콜 가능형(enabled)일 수 있는, 휴대용 핸드헬드 디바이스들(예를 들어, iPhone®, 셀룰러 전화기, iPad®, 컴퓨팅 태블릿, 개인용 정보 단말기(personal digital assistant; PDA)) 또는 웨어러블(wearable) 디바이스들(예를 들어, Google Glass® 머리 착용형 디스플레이(head mounted display))일 수 있는 하나 이상의 클라이언트 컴퓨팅 디바이스들을 사용하고 있을 수 있다. 대안적으로, 클라이언트 컴퓨팅 디바이스들은, 예로서, 다양한 버전들의 Microsoft Windows®, Apple Macintosh®, 및/또는 리눅스 운영 시스템들을 실행하는 개인용 컴퓨터들 및/또는 랩탑 컴퓨터들을 포함하는 범용 개인용 컴퓨터들일 수 있다. 클라이언트 컴퓨팅 디바이스들은, 비제한적으로, 예를 들어, 구글 크롬 OS와 같은 다양한 GNU/리눅스 운영 시스템들을 포함하는, 다양한 상용-이용가능 UNIX® 또는 UNIX-유사 운영 시스템들 중 임의의 것을 실행하는 워크스테이션 컴퓨터들일 수 있다. 대안적으로 또는 추가적으로, 클라이언트 컴퓨팅 디바이스들은, VCN(1206)에 액세스할 수 있는 네트워크 및/또는 인터넷을 통해 통신할 수 있는 임의의 다른 전자 디바이스, 예컨대 씬-클라이언트(thin-client) 컴퓨터, 인터넷-가능형 게이밍 시스템(예를 들어, Kinect® 제스처 입력 디바이스를 갖는 또는 이를 갖지 않는 마이크로소프트 Xbox 게이밍 콘솔), 및/또는 개인용 메시징 디바이스일 수 있다.12 is a block diagram 1200 illustrating an example pattern of an IaaS architecture according to at least one embodiment. Service operators 1202 can be communicatively coupled to a secure host subnet 1208 and secure host tenancy 1204 , which can include a virtual cloud network (VCN) 1206 . . In some examples, service operators 1202 run software, such as Microsoft Windows Mobile® and/or various mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, and the like, and use the Internet, Portable handheld devices (e.g., iPhone®, cellular telephones, iPad®, using one or more client computing devices, which may be computing tablets, personal digital assistants (PDAs)) or wearable devices (eg, Google Glass® head mounted displays); There may be. Alternatively, the client computing devices may be general purpose personal computers including, for example, personal computers and/or laptop computers running various versions of the Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems. Client computing devices are workstations running any of a variety of commercially-available UNIX® or UNIX-like operating systems, including, but not limited to, various GNU/Linux operating systems such as, for example, Google Chrome OS. could be computers. Alternatively or additionally, the client computing devices can be any other electronic device capable of communicating over a network and/or the Internet that can access VCN 1206, such as a thin-client computer, an Internet- capable gaming system (eg, a Microsoft Xbox gaming console with or without a Kinect® gesture input device), and/or a personal messaging device.

VCN(1206)은, SSH VCN(1212)에 포함된 LPG(1210)를 통해 보안 쉘(secure shell; SSH) VCN(1212)에 통신가능하게 결합될 수 있는 로컬 피어링 게이트웨이(local peering gateway; LPG)(1210)를 포함할 수 있다. SSH VCN(1212)은 SSH 서브넷(1214)을 포함할 수 있으며, SSH VCN(1212)은 제어 평면 VCN(1216)에 포함된 LPG(1210)를 통해 제어 평면 VCN(1216)에 통신가능하게 결합될 수 있다. 또한, SSH VCN(1212)은 LPG(1210)를 통해 데이터 평면 VCN(1218)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은, IaaS 제공자에 의해 소유되거나 및/또는 운영될 수 있는 서비스 테넌시(1219)에 포함될 수 있다.VCN 1206 is a local peering gateway (LPG) that can be communicatively coupled to secure shell (SSH) VCN 1212 via LPG 1210 included in SSH VCN 1212. (1210). SSH VCN 1212 may include an SSH subnet 1214, and SSH VCN 1212 may be communicatively coupled to control plane VCN 1216 via LPG 1210 included in control plane VCN 1216. can Additionally, SSH VCN 1212 can be communicatively coupled to data plane VCN 1218 via LPG 1210 . Control plane VCN 1216 and data plane VCN 1218 may be included in service tenancy 1219, which may be owned and/or operated by an IaaS provider.

제어 평면 VCN(1216)은 주변 네트워크(예를 들어, 기업 인트라넷과 외부 네트워크들 사이의 기업 네트워크의 부분들)로서 역할하는 제어 평면 비무장 구역(demilitarized zone; DMZ) 계층(1220)을 포함할 수 있다. DMZ-기반 서버들은 제한된 책임들을 가질 수 있으며 보안 침해들을 억제하는 것을 도울 수 있다. 추가적으로, DMZ 계층(1220)은 하나 이상의 부하 밸런서(load balancer; LB) 서브넷(들)(1222), 앱 서브넷(들)(1226)을 포함할 수 있는 제어 평면 앱 계층(1224), 데이터베이스(database; DB) 서브넷(들)(1230)(예를 들어, 프런트엔드 DB 서브넷(들) 및/또는 백엔드 DB 서브넷(들))을 포함할 수 있는 제어 평면 데이터 계층(1228)을 포함할 수 있다. 제어 평면 DMZ 계층(1220)에 포함된 LB 서브넷(들)(1222)은 제어 평면 앱 계층(1224)에 포함된 앱 서브넷(들)(1226) 및 제어 평면 VCN(1216)에 포함될 수 있는 인터넷 게이트웨이(1234)에 통신가능하게 결합될 수 있으며, 앱 서브넷(들)(1226)은 제어 평면 데이터 계층(1228)에 포함된 DB 서브넷(들)(1230), 서비스 게이트 웨이(1236) 및 네트워크 어드레스 변환(network address translation; NAT) 게이트웨이(1238)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1216)은 서비스 게이트웨이(1236) 및 NAT 게이트웨이(1238)를 포함할 수 있다.The control plane VCN 1216 may include a control plane demilitarized zone (DMZ) layer 1220 that serves as a perimeter network (eg, portions of the corporate network between the corporate intranet and external networks). . DMZ-based servers can have limited responsibilities and can help contain security breaches. Additionally, DMZ layer 1220 includes control plane app layer 1224, which may include one or more load balancer (LB) subnet(s) 1222, app subnet(s) 1226, database ;DB) control plane data layer 1228, which may include subnet(s) 1230 (eg, frontend DB subnet(s) and/or backend DB subnet(s)). The LB subnet(s) 1222 included in the control plane DMZ layer 1220 is an internet gateway that can be included in the app subnet(s) 1226 included in the control plane app layer 1224 and the control plane VCN 1216 1234, the app subnet(s) 1226 may include DB subnet(s) 1230 included in the control plane data layer 1228, services gateway 1236 and network address translation. (network address translation; NAT) gateway 1238. The control plane VCN 1216 may include a service gateway 1236 and a NAT gateway 1238 .

제어 평면 VCN(1216)은 앱 서브넷(들)(1226)을 포함할 수 있는 데이터 평면 미러 앱 계층(1240)을 포함할 수 있다. 데이터 평면 미러 앱 계층(1240)에 포함된 앱 서브넷(들)(1226)은 컴퓨팅 인스턴스(1244)를 실행할 수 있는 가상 네트워크 인터페이스 제어기(virtual network interface controller; VNIC)(1242)를 포함할 수 있다. 컴퓨팅 인스턴스(1244)는, 데이터 평면 미러 앱 계층(1240)의 앱 서브넷(들)(1226)을 데이터 평면 앱 계층(1246)에 포함될 수 있는 앱 서브넷(들)(1226)에 통신가능하게 결합할 수 있다.Control plane VCN 1216 may include data plane mirror app layer 1240 , which may include app subnet(s) 1226 . The app subnet(s) 1226 included in the data plane mirror app layer 1240 can include a virtual network interface controller (VNIC) 1242 on which compute instances 1244 can run. The compute instance 1244 will communicatively couple the app subnet(s) 1226 of the data plane mirror app layer 1240 to the app subnet(s) 1226 that can be included in the data plane app layer 1246. can

데이터 평면 VCN(1218)은 데이터 평면 앱 계층(1246), 데이터 평면 DMZ 계층(1248), 및 데이터 평면 데이터 계층(1250)을 포함할 수 있다. 데이터 평면 DMZ 계층(1248)은, 데이터 평면 앱 계층(1246)의 앱 서브넷(들)(1226) 및 데이터 평면 VCN(1218)의 인터넷 게이트웨이(1234)에 통신가능하게 결합될 수 있는 LB 서브넷(들)(1222)을 포함할 수 있다. 앱 서브넷(들)(1226)은 데이터 평면 VCN(1218)의 서비스 게이트웨이(1236) 및 데이터 평면 VCN(1218)의 NAT 게이트 웨이(1238)에 통신가능하게 결합될 수 있다. 데이터 평면 데이터 계층(1250)은 또한, 데이터 평면 앱 계층(1246)의 앱 서브넷(들)(1226)에 통신가능하게 결합될 수 있는 DB 서브넷(들)(1230)을 포함할 수 있다.The data plane VCN 1218 may include a data plane App layer 1246 , a data plane DMZ layer 1248 , and a data plane data layer 1250 . Data plane DMZ layer 1248 includes LB subnet(s) that can be communicatively coupled to App subnet(s) 1226 of data plane App layer 1246 and Internet gateway 1234 of data plane VCN 1218. ) 1222 may be included. App subnet(s) 1226 can be communicatively coupled to service gateway 1236 of data plane VCN 1218 and NAT gateway 1238 of data plane VCN 1218 . Data plane data layer 1250 can also include DB subnet(s) 1230 that can be communicatively coupled to App subnet(s) 1226 of data plane App layer 1246 .

제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 인터넷 게이트웨이(1234)는, 공용 인터넷(1254)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1252)에 통신가능하게 결합될 수 있다. 공용 인터넷(1254)은 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 NAT 게이트웨이(1238)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 서비스 게이트웨이(1236)는 클라우드 서비스들(1256)에 통신가능하게 결합될 수 있다.Internet gateways 1234 of control plane VCN 1216 and data plane VCN 1218 can be communicatively coupled to metadata management service 1252 , which can be communicatively coupled to public Internet 1254 . Public Internet 1254 can be communicatively coupled to NAT gateway 1238 of control plane VCN 1216 and data plane VCN 1218 . The service gateway 1236 of the control plane VCN 1216 and data plane VCN 1218 can be communicatively coupled to cloud services 1256 .

일부 예들에서, 제어 평면 VCN(1216) 또는 데이터 평면 VCN(1218)의 서비스 게이트웨이(1236)는 공용 인터넷(1254)을 거치지 않는 클라우드 서비스들(1256)에 대한 애플리케이션 프로그래밍 인터페이스(application programming interface; API) 호출(call)들을 만들 수 있다. 서비스 게이트웨이(1236)로부터 클라우드 서비스들(1256)로의 API 호출들은 1-방향일 수 있다: 서비스 게이트웨이(1236)는 클라우드 서비스들(1256)로의 호출들을 만들 수 있으며, 클라우드 서비스들(1256)은 서비스 게이트웨이(1236)로 요청된 데이터를 전송할 수 있다. 그러나, 클라우드 서비스들(1256)은 서비스 게이트웨이(1236)에 대한 API 호출들을 개시하지 않을 수 있다.In some examples, service gateway 1236 of control plane VCN 1216 or data plane VCN 1218 provides an application programming interface (API) to cloud services 1256 that do not go over public internet 1254. You can make calls. API calls from service gateway 1236 to cloud services 1256 can be one-way: service gateway 1236 can make calls to cloud services 1256, and cloud services 1256 can make calls to cloud services 1256. The requested data may be transmitted to the gateway 1236. However, cloud services 1256 may not initiate API calls to service gateway 1236 .

일부 예들에서, 보안 호스트 테넌시(1204)는, 그렇지 않았다면 격리되었을 서비스 테넌시(1219)에 직접적으로 연결될 수 있다. 보안 호스트 서브넷(1208)은, 달리 격리된 시스템을 통한 2-방향 통신을 가능하게 할 수 있는 LPG(1210)를 통해 SSH 서브넷(1214)과 통신할 수 있다. 보안 호스트 서브넷(1208)을 SSH 서브넷(1214)에 연결하는 것은 서비스 테넌시(1219) 내의 다른 엔티티들에게 보안 호스트 서브넷(1208) 액세스를 제공할 수 있다.In some examples, secure host tenancy 1204 can be directly linked to an otherwise isolated service tenancy 1219 . Secure host subnet 1208 may communicate with SSH subnet 1214 via LPG 1210, which may enable two-way communication over an otherwise isolated system. Connecting the secure host subnet 1208 to the SSH subnet 1214 can provide secure host subnet 1208 access to other entities within the service tenancy 1219 .

제어 평면 VCN(1216)은 서비스 테넌시(1219)의 사용자들이 희망되는 자원을 셋업하거나 또는 달리 프로비저닝하는 것을 가능하게 할 수 있다. 제어 평면 VCN(1216)에 프로비저닝된 희망되는 자원들은 데이터 평면 VCN(1218)에서 배포되거나 또는 달리 사용될 수 있다. 일부 예들에서, 제어 평면 VCN(1216)는 데이터 평면 VCN(1218)으로부터 격리될 수 있으며, 제어 평면 VCN(1216)의 데이터 평면 미러 앱 계층(1240)은, 데이터 평면 미러 앱 계층(1240) 및 데이터 평면 앱 계층(1246)에 포함될 수 있는 VNIC들(1242)을 통해 데이터 평면 VCN(1218)의 데이터 평면 앱 계층(1246)과 통신할 수 있다.Control plane VCN 1216 may enable users of service tenancy 1219 to set up or otherwise provision desired resources. Desired resources provisioned in the control plane VCN 1216 may be distributed or otherwise used in the data plane VCN 1218. In some examples, the control plane VCN 1216 can be isolated from the data plane VCN 1218, and the data plane mirror app layer 1240 of the control plane VCN 1216 includes the data plane mirror app layer 1240 and data plane VCN 1216. It can communicate with data plane app layer 1246 of data plane VCN 1218 via VNICs 1242 , which can be included in plane app layer 1246 .

일부 예들에서, 시스템의 사용자들 또는 고객들은, 메타데이터 관리 서비스(1252)로 요청들을 통신할 수 있는 공용 인터넷(1254)을 통해 요청들, 예를 들어, 생성, 판독, 업데이트 또는 삭제(create, read, update, or delete; CRUD) 동작들을 만들 수 있다. 메타데이터 관리 서비스(1252)는 요청을 인터넷 게이트웨이(1234)를 통해 제어 평면 VCN(1216)으로 통신할 수 있다. 요청은 제어 평면 DMZ 계층(1220)에 포함된 LB 서브넷(들)(1222)에 의해 수신될 수 있다. LB 서브넷(들)(1222)은 요청이 유효하다는 것을 결정할 수 있으며, 이러한 결정에 응답하여, LB 서브넷(들)(1222)은 요청을 제어 평면 앱 계층(1224)에 포함된 앱 서브넷(들)(1226)로 송신할 수 있다. 요청이 검증되고 공용 인터넷(1254)에 대한 호출을 필요로 하는 경우, 공용 인터넷(1254)에 대한 호출은 공용 인터넷(1254)에 대한 호출을 만들 수 있는 NAT 게이트웨이(1238)로 송신될 수 있다. 요청에 의해 저장되도록 희망될 수 있는 메모리는 DB 서브넷(들)(1230)에 저장될 수 있다.In some examples, users or customers of the system may send requests, e.g., create, read, update, or delete (create, read, update, or delete (CRUD) operations. The metadata management service 1252 can communicate the request to the control plane VCN 1216 via the internet gateway 1234 . The request may be received by the LB subnet(s) 1222 included in the control plane DMZ layer 1220. LB subnet(s) 1222 may determine that the request is valid, and in response to such determination, LB subnet(s) 1222 may send the request to the app subnet(s) included in control plane app layer 1224. It can be sent to (1226). If the request is verified and requires a call to the public internet 1254, the call to the public internet 1254 can be sent to the NAT gateway 1238, which can make the call to the public internet 1254. Memory that may be desired to be stored by request may be stored in DB subnet(s) 1230 .

일부 예들에서, 데이터 평면 미러 앱 계층(1240)은 제어 평면 VCN(1216)과 데이터 평면 VCN(1218) 사이의 직접 통신을 가능하게 할 수 있다. 예를 들어, 구성에 대한 변경들, 업데이트들, 또는 다른 적절한 수정들은 데이터 평면 VCN(1218)에 포함된 자원들에 적용되도록 희망될 수 있다. VNIC(1242)를 통해, 제어 평면 VCN(1216)은 데이터 평면 VCN(1218)에 포함된 자원들과 직접적으로 통신할 수 있으며, 그럼으로써 데이터 평면 VCN에 포함된 자원들에 대해 구성에 대한 변경들, 업데이트들 또는 다른 적절한 수정들을 실행할 수 있다.In some examples, data plane mirror app layer 1240 can enable direct communication between control plane VCN 1216 and data plane VCN 1218 . For example, configuration changes, updates, or other suitable modifications may be desired to be applied to resources included in data plane VCN 1218. Via VNIC 1242, control plane VCN 1216 can communicate directly with resources included in data plane VCN 1218, thereby making changes to the configuration on resources included in data plane VCN 1218. , updates or other appropriate modifications.

일부 실시예들에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은 서비스 테넌시(1219)에 포함될 수 있다. 이러한 경우에, 시스템의 사용자 또는 고객은 제어 평면 VCN(1216) 또는 데이터 평면 VCN(1218)를 소유하거나 또는 운영하지 않을 수 있다. 대신에, IaaS 제공자가 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)를 소유하거나 또는 운영할 수 있으며, 이들 둘 모두는 서비스 테넌시(1219)에 포함될 수 있다. 이러한 실시예는, 사용자들 또는 고객들이 다른 사용자들의 또는 다른 고객들의 자원들과 상호작용하는 것을 방지할 수 있는 네트워크들의 격리를 가능하게 할 수 있다. 또한, 이러한 실시예는 시스템의 사용자들 또는 고객들이, 저장을 위해 희망되는 보안 레벨을 갖지 않을 수 있는 공용 인터넷(1254)에 의존할 필요 없이 데이터베이스들을 사적으로 저장하는 것을 가능하게 할 수 잇다.In some embodiments, control plane VCN 1216 and data plane VCN 1218 may be included in service tenancy 1219 . In this case, a user or customer of the system may not own or operate the control plane VCN 1216 or the data plane VCN 1218. Instead, an IaaS provider may own or operate a control plane VCN 1216 and a data plane VCN 1218 , both of which may be included in service tenancy 1219 . Such an embodiment may enable isolation of networks that may prevent users or customers from interacting with other users' or other customers' resources. Further, this embodiment may enable users or customers of the system to store databases privately without having to rely on the public internet 1254, which may not have the desired level of security for storage.

다른 실시예들에서, 제어 평면 VCN(1216)에 포함된 LB 서브넷(들)(1222)은 서비스 게이트웨이(1236)로부터 신호를 수신하도록 구성될 수 있다. 이러한 실시예에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은, 공용 인터넷(1254)을 호출하지 않고 IaaS 제공자의 고객에 의해 호출되도록 구성될 수 있다. 고객들이 사용하는 데이터베이스(들)가 IaaS 제공자에 의해 제어될 수 있으며 공용 인터넷(1254)으로부터 격리될 수 있는 서비스 테넌시(1219) 상에 저장될 수 있기 때문에, IaaS 제공자의 고객들은 이러한 실시예를 희망할 수 있다.In other embodiments, LB subnet(s) 1222 included in control plane VCN 1216 may be configured to receive signals from service gateway 1236 . In this embodiment, the control plane VCN 1216 and data plane VCN 1218 may be configured to be called by customers of the IaaS provider without calling the public internet 1254. Because the database(s) used by customers can be controlled by the IaaS provider and stored on a service tenancy 1219 that can be isolated from the public Internet 1254, customers of the IaaS provider may use this embodiment. you can hope

도 13은 적어도 일 실시예에 따른 IaaS 아키텍처의 다른 예시적인 패턴을 예시하는 블록도(1300)이다. 서비스 운영자들(1302)(예를 들어, 도 12의 서비스 운영자들(1202))은, 가상 클라우드 네트워크(VCN)(1306)(예를 들어, 도 12의 VCN(1206)) 및 보안 호스트 서브넷(1308)(예를 들어, 도 12의 보안 호스트 서브넷(1208))을 포함할 수 있는 보안 호스트 테넌시(1304)(예를 들어, 도 12의 보안 호스트 테넌시(1204))에 통신가능하게 결합될 수 있다. VCN(1306)은, SSH VCN(1312)에 포함된 LPG(1310)를 통해 보안 쉘(secure shell; SSH) VCN(1312)(예를 들어, 도 12의 SSH VCN(1212))에 통신가능하게 결합될 수 있는 로컬 피어링 게이트웨이(local peering gateway; LPG)(1310)(예를 들어, 도 12의 LPG(1210))를 포함할 수 있다. SSH VCN(1312)은 SSH 서브넷(1314)(예를 들어, 도 12의 SSH 서브넷(1214))을 포함할 수 있으며, SSH VCN(1312)는 제어 평면 VCN(1316)에 포함된 LPG(1310)를 통해 제어 평면 VCN(1316)(예를 들어, 도 12의 제어 평면 VCN(1216))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1316)은 서비스 테넌시(1319)(예를 들어, 도 12의 서비스 테넌시(1219))에 포함될 수 있으며, 데이터 평면 VCN(1318)(예를 들어, 도 12의 데이터 평면 VCN(1218))은 시스템의 사용자들 또는 고객들에 의해 소유되거나 또는 운영될 수 있는 고객 테넌시(1321)에 포함될 수 있다.13 is a block diagram 1300 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operators 1302 (e.g., service operators 1202 of FIG. 12) may include a virtual cloud network (VCN) 1306 (e.g., VCN 1206 of FIG. 12) and a secure host subnet ( 1308) (e.g., secure host subnet 1208 of FIG. 12) communicatively coupling to secure host tenancy 1304 (e.g., secure host tenancy 1204 of FIG. 12). It can be. The VCN 1306 is configured to communicate with a secure shell (SSH) VCN 1312 (eg, the SSH VCN 1212 of FIG. 12) through the LPG 1310 included in the SSH VCN 1312. and a local peering gateway (LPG) 1310 (eg, LPG 1210 in FIG. 12 ) to which it may be coupled. SSH VCN 1312 can include SSH subnet 1314 (eg, SSH subnet 1214 in FIG. 12 ), and SSH VCN 1312 can include LPG 1310 included in control plane VCN 1316 may be communicatively coupled to control plane VCN 1316 (eg, control plane VCN 1216 of FIG. 12 ) via Control plane VCN 1316 can be included in service tenancy 1319 (eg, service tenancy 1219 of FIG. 12 ), and data plane VCN 1318 (eg, data plane VCN of FIG. 12 ). 1218) may be included in customer tenancy 1321, which may be owned or operated by users or customers of the system.

제어 평면 VCN(1316)은, LB 서브넷(들)(1322)(예를 들어, 도 12의 LB 서브넷(들)(1222))을 포함할 수 있는 제어 평면 DMZ 계층(1320)(예를 들어, 도 12의 제어 평면 DMZ 계층(1220)), 앱 서브넷(들)(1326)(예를 들어, 도 12의 앱 서브넷(들)(1226))을 포함할 수 있는 제어 평면 앱 계층(1324)(예를 들어, 도 12의 제어 평면 앱 계층(1224)), 데이터베이스(DB) 서브넷(들)(1330)(예를 들어, 도 12의 DB 서브넷(들)(1230)과 유사함)을 포함할 수 있는 제어 평면 데이터 계층(1328)(예를 들어, 도 12의 제어 평면 데이터 계층(1228))을 포함할 수 있다. 제어 평면 DMZ 계층(1320)에 포함된 LB 서브넷(들)(1322)은 제어 평면 앱 계층(1324)에 포함된 앱 서브넷(들)(1326) 및 제어 평면 VCN(1316)에 포함될 수 있는 인터넷 게이트웨이(1334)(예를 들어, 도 12의 인터넷 게이트웨이(1234))에 통신가능하게 결합될 수 있으며, 앱 서브넷(들)(1326)은 제어 평면 데이터 계층(1328)에 포함된 DB 서브넷(들)(1330), 서비스 게이트 웨이(1336)(예를 들어, 도 12의 서비스 게이트웨이) 및 네트워크 어드레스 변환(NAT) 게이트웨이(1338)(예를 들어, 도 12의 NAT 게이트웨이(1238))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1316)은 서비스 게이트웨이(1336) 및 NAT 게이트웨이(1338)를 포함할 수 있다.The control plane VCN 1316 includes a control plane DMZ layer 1320 (eg, LB subnet(s) 1322 (eg, LB subnet(s) 1222 in FIG. 12 )). Control plane app layer 1324 (which may include control plane DMZ layer 1220 of FIG. 12), app subnet(s) 1326 (e.g., app subnet(s) 1226 of FIG. 12) 12), database (DB) subnet(s) 1330 (eg, similar to DB subnet(s) 1230 in FIG. 12). control plane data layer 1328 (eg, control plane data layer 1228 of FIG. 12 ) that can be The LB subnet(s) 1322 included in the control plane DMZ layer 1320 is an internet gateway that can be included in the app subnet(s) 1326 included in the control plane app layer 1324 and the control plane VCN 1316 1334 (e.g., Internet gateway 1234 of FIG. 12), and app subnet(s) 1326 can be communicatively coupled to DB subnet(s) included in control plane data layer 1328. 1330, to communicate with a service gateway 1336 (e.g., the service gateway of FIG. 12) and a network address translation (NAT) gateway 1338 (e.g., the NAT gateway 1238 of FIG. 12). can be combined The control plane VCN 1316 may include a service gateway 1336 and a NAT gateway 1338 .

제어 평면 VCN(1316)은 앱 서브넷(들)(1326)을 포함할 수 있는 데이터 평면 미러 앱 계층(1340)(예를 들어, 도 12의 데이터 평면 미러 앱 계층(1240))을 포함할 수 있다. 데이터 평면 미러 앱 계층(1340)에 포함된 앱 서브넷(들)(1326)은 컴퓨팅 인스턴스(1344)(예를 들어, 도 12의 컴퓨팅 인스턴스(1244)와 유사함)를 실행할 수 있는 가상 네트워크 인터페이스 제어기(VNIC)(1342)(예를 들어, VNIC(1242))를 포함할 수 있다. 컴퓨팅 인스턴스(1344)는, 데이터 평면 미러 앱 계층(1340)에 포함된 VNIC(1342) 및 데이터 평면 앱 계층(1346)에 포함된 VNIC(1342)를 통한 데이터 평면 앱 계층(1346)(예를 들어, 도 12의 데이터 평면 앱 계층(1246))에 포함될 수 있는 앱 서브넷(들)(1326)과 데이터 평면 미러 앱 계층(1340)의 앱 서브넷(들)(1326) 사이의 통신을 가능하게 할 수 있다.Control plane VCN 1316 may include data plane mirror app layer 1340 (eg, data plane mirror app layer 1240 in FIG. 12 ), which may include app subnet(s) 1326 . . The app subnet(s) 1326 included in the data plane mirror app layer 1340 are virtual network interface controllers that can run compute instances 1344 (eg, similar to compute instances 1244 in FIG. 12 ). (VNIC) 1342 (eg, VNIC 1242). Compute instance 1344 is connected to data plane app layer 1346 via VNIC 1342 included in data plane mirror app layer 1340 and VNIC 1342 included in data plane app layer 1346 (e.g. , may enable communication between the app subnet(s) 1326 that may be included in the data plane app layer 1246 of FIG. 12 and the app subnet(s) 1326 of the data plane mirror app layer 1340. there is.

제어 평면 VCN(1316)에 포함된 인터넷 게이트웨이(1334)는, 공용 인터넷(1354)(예를 들어, 도 12의 공용 인터넷(1254))에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1352)(예를 들어, 도 12의 메타데이터 관리 서비스(1252))에 통신가능하게 결합될 수 있다. 공용 인터넷(1354)은 제어 평면 VCN(1316)의 NAT 게이트웨이(1338)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1316)에 포함된 서비스 게이트웨이(1336)는 클라우드 서비스들(1356)(예를 들어, 도 12의 클라우드 서비스들(1256))에 통신가능하게 결합될 수 있다.An internet gateway 1334 included in the control plane VCN 1316 is a metadata management service 1352 that can be communicatively coupled to the public internet 1354 (e.g., public internet 1254 in FIG. 12). (eg, metadata management service 1252 of FIG. 12). Public Internet 1354 may be communicatively coupled to NAT gateway 1338 of control plane VCN 1316 . A service gateway 1336 included in control plane VCN 1316 can be communicatively coupled to cloud services 1356 (eg, cloud services 1256 in FIG. 12 ).

일부 예들에서, 데이터 평면 VCN(1318)은 고객 테넌시(1321)에 포함될 수 있다. 이러한 경우에, IaaS 제공자는 각각의 고객에 대해 제어 평면 VCN(1316)를 제공할 수 있으며, IaaS 제공자는, 각각의 고객에 대해, 서비스 테넌시(1319)에 포함된 고유 컴퓨팅 인스턴스(1344)를 셋업할 수 있다. 각각의 컴퓨팅 인스턴스(1344)는 서비스 테넌시(1319)에 포함된 제어 평면 VCN(1316)과 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318) 사이의 통신을 가능하게 할 수 있다. 컴퓨팅 인스턴스(1344)는 서비스 테넌시(1319)에 포함된 제어 평면 VCN(1316)에 프로비저닝된 자원들이 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318)에 배포되거나 또는 달리 사용되는 것을 가능하게 할 수 있다.In some examples, data plane VCN 1318 may be included in customer tenancy 1321 . In this case, the IaaS provider may provide a control plane VCN 1316 for each customer, and the IaaS provider may provide, for each customer, a unique compute instance 1344 included in the service tenancy 1319. can be set up. Each compute instance 1344 can facilitate communication between the control plane VCN 1316 included in the service tenancy 1319 and the data plane VCN 1318 included in the customer tenancy 1321 . Compute instance 1344 enables resources provisioned in control plane VCN 1316 included in service tenancy 1319 to be deployed or otherwise used in data plane VCN 1318 included in customer tenancy 1321 can do

다른 예들에서, IaaS 제공자의 고객은 고객 테넌시(1321)에 거주(live)하는 데이터베이스들을 가질 수 있다. 이러한 예에서, 제어 평면 VCN(1316)은 앱 서브넷(들)(1326)을 포함할 수 있는 데이터 평면 미러 앱 계층(1340)을 포함할 수 있다. 데이터 평면 미러 앱 계층(1340)은 데이터 평면 VCN(1318)에 상주할 수 있지만, 데이터 평면 미러 앱 계층(1340)은 데이터 평면 VCN(1318)에 거주하지 않을 수 있다. 즉, 데이터 평면 미러 앱 계층(1340)은 고객 테넌시(1321)에 대한 액세스를 가질 수 있지만, 데이터 평면 미러 앱 계층(1340)은 데이터 평면 VCN(1318)에 존재하지 않을 수 있거나 또는 IaaS 제공자의 고객에 의해 소유되거나 또는 운영되지 않을 수 있다. 데이터 평면 미러 앱 계층(1340)은 데이터 평면 VCN(1318)에 대한 호출들을 만들도록 구성될 수 있지만, 제어 평면 VCN(1316)에 포함된 엔티티에 대한 호출들을 만들도록 구성되지 않을 수 있다. 고객은 제어 평면 VCN(1316)에 프로비저닝된 데이터 평면 VCN(1318)에서 자원들을 배포하거나 또는 달리 사용하는 것을 희망할 수 있으며, 데이터 평면 미러 앱 계층(1340)은 고객의 자원들의 희망되는 배포 또는 다른 사용을 가능하게 할 수 있다.In other examples, a customer of an IaaS provider may have databases that live in customer tenancy 1321 . In this example, control plane VCN 1316 can include data plane mirror app layer 1340 , which can include app subnet(s) 1326 . Data plane mirror app layer 1340 may reside in data plane VCN 1318 , but data plane mirror app layer 1340 may not reside in data plane VCN 1318 . That is, the data plane mirror app layer 1340 may have access to the customer tenancy 1321, but the data plane mirror app layer 1340 may not exist in the data plane VCN 1318 or the IaaS provider's May not be owned or operated by the customer. The data plane mirror app layer 1340 may be configured to make calls to the data plane VCN 1318, but may not be configured to make calls to entities included in the control plane VCN 1316. A customer may wish to distribute or otherwise use resources in the data plane VCN 1318 provisioned in the control plane VCN 1316, and the data plane mirror app layer 1340 may wish to distribute or otherwise use the customer's desired distribution or other resources of the customer's resources. use can be made possible.

일부 실시예들에서, IaaS 제공자의 고객은 데이터 평면 VCN(1318)에 필터들을 적용할 수 있다. 이러한 실시예에서, 고객은 데이터 평면 VCN(1318)이 액세스할 수 있는 것을 결정할 수 있고, 고객은 데이터 평면 VCN(1318)으로부터 공용 인터넷(1354)에 대한 액세스를 제한할 수 있다. IaaS 제공자는 임의의 외부 네트워크들 또는 데이터베이스들에 대한 데이터 평면 VCN(1318)의 액세스에 필터를 적용하거나 또는 달리 이를 제어하지 못할 수 있다. 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318) 상에 고객에 의한 필터들 및 제어들을 적용하는 것은 데이터 평면 VCN(1318)을 다른 고객들 및 공용 인터넷(1354)으로부터 격리시키는 것을 도울 수 있다.In some embodiments, a customer of an IaaS provider may apply filters to the data plane VCN 1318. In this embodiment, the customer can determine what the data plane VCN 1318 can access, and the customer can restrict access to the public internet 1354 from the data plane VCN 1318. The IaaS provider may not be able to apply filters or otherwise control the data plane VCN 1318's access to any external networks or databases. Applying filters and controls by the customer on the data plane VCN 1318 included in the customer tenancy 1321 can help isolate the data plane VCN 1318 from other customers and the public Internet 1354 .

일부 실시예들에서, 클라우드 서비스들(1356)은, 공용 인터넷(1354) 상에, 제어 평면 VCN(1316) 상에, 또는 데이터 평면 VCN(1318) 상에 존재하지 않을 수 있는 서비스들을 액세스하기 위해 서비스 게이트웨이(1336)에 의해 호출될 수 있다. 클라우드 서비스들(1356)과 제어 평면 VCN(1316) 또는 데이터 평면 VCN(1318) 사이의 연결은 라이브가 아닐 수 있거나 또는 연속적이지 않을 수 있다. 클라우드 서비스들(1356)은 IaaS 제공자에 의해 소유되거나 또는 운영되는 상이한 네트워크 상에 존재할 수 있다. 클라우드 서비스들(1356)은 서비스 게이트웨이(1336)로부터 호출들을 수신하도록 구성될 수 있으며, 공용 인터넷(1354)으로부터의 호출들을 수신하지 않도록 구성될 수 있다. 일부 클라우드 서비스들(1356)은 다른 클라우드 서비스들(1356)으로부터 격리될 수 있으며, 제어 평면 VCN(1316)은, 제어 평면 VCN(1316)과 동일한 영역에 있지 않을 수 있는 클라우드 서비스들(1356)로부터 격리될 수 있다. 예를 들어, 제어 평면 VCN(1316)은 "영역 1"에 위치될 수 있으며, 클라우드 서비스 "배포 12"는 영역 1 및 "영역 2"에 위치될 수 있다. 배포 12에 대한 호출이 영역 1에 위치된 제어 평면 VCN(1316)에 포함된 서비스 게이트웨이(1336)에 의해 이루어지는 경우, 호출은 영역 1 내의 배포 12로 송신될 수 있다. 이러한 예에서, 제어 평면 VCN(1316) 또는 영역 1 내의 배포 12는 영역 2 내의 배포 12와 통신가능하게 결합되거나 또는 이와 달리 통신하지 않을 수 있다.In some embodiments, cloud services 1356 are used to access services that may not exist on the public Internet 1354, on the control plane VCN 1316, or on the data plane VCN 1318. Can be called by service gateway 1336. The connection between cloud services 1356 and control plane VCN 1316 or data plane VCN 1318 may not be live or may not be continuous. Cloud services 1356 may exist on different networks owned or operated by the IaaS provider. Cloud services 1356 can be configured to receive calls from service gateway 1336 and not to receive calls from public internet 1354 . Some cloud services 1356 may be isolated from other cloud services 1356, and control plane VCN 1316 may be isolated from cloud services 1356, which may not be in the same region as control plane VCN 1316. can be isolated. For example, the control plane VCN 1316 may be located in “region 1” and the cloud service “distribution 12” may be located in region 1 and “region 2”. If a call to distribution 12 is made by service gateway 1336 included in control plane VCN 1316 located in area 1, the call may be sent to distribution 12 in area 1. In this example, distribution 12 in region 1 or control plane VCN 1316 may be communicatively coupled or otherwise not in communication with distribution 12 in region 2.

도 14은 적어도 일 실시예에 따른 IaaS 아키텍처의 다른 예시적인 패턴을 예시하는 블록도(1400)이다. 서비스 운영자들(1402)(예를 들어, 도 12의 서비스 운영자들(1202))은, 가상 클라우드 네트워크(VCN)(1406)(예를 들어, 도 12의 VCN(1206)) 및 보안 호스트 서브넷(1408)(예를 들어, 도 12의 보안 호스트 서브넷(1208))을 포함할 수 있는 보안 호스트 테넌시(1404)(예를 들어, 도 12의 보안 호스트 테넌시(1204))에 통신가능하게 결합될 수 있다. VCN(1406)은, SSH VCN(1412)에 포함된 LPG(1410)를 통해 SSH VCN(1412)(예를 들어, 도 12의 SSH VCN(1212))에 통신가능하게 결합될 수 있는 LPG(1410)(예를 들어, 도 12의 LPG(1210))를 포함할 수 있다. SSH VCN(1412)은 SSH 서브넷(1414)(예를 들어, 도 12의 SSH 서브넷(1214))을 포함할 수 있으며, SSH VCN(1412)는 제어 평면 VCN(1416)에 포함된 LPG(1410)를 통해 제어 평면 VCN(1416)(예를 들어, 도 12의 제어 평면 VCN(1216))에 그리고 데이터 평면 VCN(1418)에 포함된 LPG(1410)를 통해 데이터 평면 VCN(1418)(예를 들어, 도 12의 데이터 평면 VCN(1218))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1416) 및 데이터 평면 VCN(1418)은 서비스 테넌시(1419)(예를 들어, 도 12의 서비스 테넌시(1219))에 포함될 수 있다.14 is a block diagram 1400 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operators 1402 (eg, service operators 1202 of FIG. 12 ) operate on a virtual cloud network (VCN) 1406 (eg, VCN 1206 of FIG. 12 ) and secure host subnets ( 1408) (e.g., secure host subnet 1208 of FIG. 12) communicatively coupling to secure host tenancy 1404 (e.g., secure host tenancy 1204 of FIG. 12). It can be. VCN 1406 is an LPG 1410 that can be communicatively coupled to SSH VCN 1412 (e.g., SSH VCN 1212 in FIG. 12) via LPG 1410 included in SSH VCN 1412. ) (eg, LPG 1210 of FIG. 12). SSH VCN 1412 can include SSH subnet 1414 (eg, SSH subnet 1214 in FIG. 12 ), and SSH VCN 1412 can include LPG 1410 contained in control plane VCN 1416 to the control plane VCN 1416 (e.g., the control plane VCN 1216 of FIG. 12) via the data plane VCN 1418 (e.g., , may be communicatively coupled to the data plane VCN 1218 of FIG. 12. Control plane VCN 1416 and data plane VCN 1418 may be included in service tenancy 1419 (eg, service tenancy 1219 in FIG. 12 ).

제어 평면 VCN(1416)은, 부하 밸런서(LB) 서브넷(들)(1422)(예를 들어, 도 9의 LB 서브넷(들)(1222))을 포함할 수 있는 제어 평면 DMZ 계층(1420)(예를 들어, 도 12의 제어 평면 DMZ 계층(1220)), 앱 서브넷(들)(1426)(예를 들어, 도 12의 앱 서브넷(들)(1226)과 유사함)을 포함할 수 있는 제어 평면 앱 계층(1424)(예를 들어, 도 12의 제어 평면 앱 계층(1224)), DB 서브넷(들)(1430)을 포함할 수 있는 제어 평면 데이터 계층(1428)(예를 들어, 도 12의 제어 평면 데이터 계층(1428))을 포함할 수 있다. 제어 평면 DMZ 계층(1420)에 포함된 LB 서브넷(들)(1422)은 제어 평면 앱 계층(1424)에 포함된 앱 서브넷(들)(1426) 및 제어 평면 VCN(1416)에 포함될 수 있는 인터넷 게이트웨이(1434)(예를 들어, 도 12의 인터넷 게이트웨이(1234))에 통신가능하게 결합될 수 있으며, 앱 서브넷(들)(1426)은 제어 평면 데이터 계층(1428)에 포함된 DB 서브넷(들)(1430), 서비스 게이트 웨이(1436)(예를 들어, 도 12의 서비스 게이트웨이) 및 네트워크 어드레스 변환(NAT) 게이트웨이(1438)(예를 들어, 도 12의 NAT 게이트웨이(1238))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1416)은 서비스 게이트웨이(1436) 및 NAT 게이트웨이(1438)를 포함할 수 있다.Control plane VCN 1416 includes control plane DMZ layer 1420 (which may include load balancer (LB) subnet(s) 1422 (e.g., LB subnet(s) 1222 in FIG. 9)). Controls that may include, for example, control plane DMZ layer 1220 of FIG. 12), app subnet(s) 1426 (e.g., similar to app subnet(s) 1226 of FIG. 12) control plane app layer 1424 (e.g., control plane app layer 1224 in FIG. 12), control plane data layer 1428 (e.g., FIG. of the control plane data layer 1428). The LB subnet(s) 1422 included in the control plane DMZ layer 1420 is an internet gateway that can be included in the app subnet(s) 1426 included in the control plane app layer 1424 and the control plane VCN 1416 1434 (e.g., Internet gateway 1234 of FIG. 12), and app subnet(s) 1426 can be communicatively coupled to DB subnet(s) included in control plane data layer 1428. 1430, to communicate with a service gateway 1436 (e.g., the service gateway of FIG. 12) and a network address translation (NAT) gateway 1438 (e.g., the NAT gateway 1238 of FIG. 12). can be combined The control plane VCN 1416 may include a service gateway 1436 and a NAT gateway 1438 .

데이터 평면 VCN(1418)은 데이터 평면 앱 계층(1446)(예를 들어, 도 12의 데이터 평면 앱 계층(1246)), 데이터 평면 DMZ 계층(1448)(예를 들어, 도 12의 데이터 평면 DMZ 계층(1248)), 및 데이터 평면 데이터 계층(1450)(예를 들어, 도 12의 데이터 평면 데이터 계층(1250))을 포함할 수 있다. 데이터 평면 DMZ 계층(1448)은, 데이터 평면 앱 계층(1446)의 신뢰할 수 있는 앱 서브넷(들)(1460)과 신뢰할 수 없는 앱 서브넷(들)(1462), 및 데이터 평면 VCN(1418)에 포함된 인터넷 게이트웨이(1434)에 통신가능하게 결합될 수 있는 LB 서브넷(들)(1422)을 포함할 수 있다. 신뢰할 수 있는 앱 서브넷(들)(1460)은 데이터 평면 VCN(1418)에 포함된 서비스 게이트웨이(1436), 데이터 평면 VCN(1418)에 포함된 NAT 게이트웨이(1438), 및 데이터 평면 데이터 계층(1450)에 포함된 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있다. 신뢰할 수 없는 앱 서브넷(들)(1462)은 데이터 평면 VCN(1418)에 포함된 서비스 게이트웨이(1436) 및 데이터 평면 데이터 계층(1450)에 포함된 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있다. 데이터 평면 데이터 계층(1450)은, 데이터 평면 VCN(1418)에 포함된 서비스 게이트웨이(1436)에 통신가능하게 결합될 수 있는 DB 서브넷(들)(1430)을 포함할 수 있다.Data plane VCN 1418 includes data plane app layer 1446 (e.g., data plane app layer 1246 in FIG. 12), data plane DMZ layer 1448 (e.g., data plane DMZ layer in FIG. 12) 1248), and a data plane data layer 1450 (eg, data plane data layer 1250 of FIG. 12). The data plane DMZ layer 1448 is included in the trusted app subnet(s) 1460 and untrusted app subnet(s) 1462 of the data plane app layer 1446, and the data plane VCN 1418. LB subnet(s) 1422 that can be communicatively coupled to the Internet gateway 1434 of the Internet Gateway 1434. Trusted app subnet(s) 1460 include service gateway 1436 included in data plane VCN 1418, NAT gateway 1438 included in data plane VCN 1418, and data plane data layer 1450 can be communicatively coupled to the DB subnet(s) 1430 included in. Untrusted app subnet(s) 1462 are communicatively coupled to service gateway 1436 included in data plane VCN 1418 and DB subnet(s) 1430 included in data plane data layer 1450. It can be. Data plane data layer 1450 can include DB subnet(s) 1430 that can be communicatively coupled to service gateways 1436 included in data plane VCN 1418 .

신뢰할 수 없는 앱 서브넷(들)(1462)은 테넌트(tenant) 가상 머신(VM)들(1466(1)-(N))에 통신가능하게 결합될 수 있는 하나 이상의 1차 VNIC들(1464(1)-(N))을 포함할 수 있다. 각각의 테넌트 VM(1466(1)-(N))은, 개별적인 고객 테넌시들(1470(1)-(N))에 포함될 수 있는 개별적인 컨테이너 출구 VCN들(1468(1)-(N))에 포함될 수 있는 개별적인 앱 서브넷(1467(1)-(N))에 통신가능하게 결합될 수 있다. 개별적인 2차 VNIC들(1472(1)-(N))은 데이터 평면 VCN(1418)에 포함된 신뢰할 수 없는 앱 서브넷(들)(1462)과 컨테이너 출구 VCN들(1468(1)-(N))에 포함된 앱 서브넷 사이의 통신을 가능하게 할 수 있다. 각각의 컨테이너 출구 VCN들(1468(1)-(N))은, 공용 인터넷(1454)(예를 들어, 도 12의 공용 인터넷(1254))에 통신가능하게 결합될 수 있는 NAT 게이트웨이(1438)를 포함할 수 있다.The untrusted app subnet(s) 1462 are one or more primary VNICs 1464(1) that can be communicatively coupled to tenant virtual machines (VMs) 1466(1)-(N). )-(N)). Each tenant VM 1466(1)-(N) has separate container egress VCNs 1468(1)-(N), which may be included in respective customer tenancies 1470(1)-(N). may be communicatively coupled to individual app subnets 1467(1)-(N), which may be included in Individual secondary VNICs 1472(1)-(N) include untrusted app subnet(s) 1462 contained in data plane VCN 1418 and container egress VCNs 1468(1)-(N) ) may enable communication between app subnets included in the subnet. Each container egress VCN 1468(1)-(N) has a NAT gateway 1438 that can be communicatively coupled to public internet 1454 (e.g., public internet 1254 in FIG. 12). can include

제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 인터넷 게이트웨이(1434)는, 공용 인터넷(1454)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1452)(예를 들어, 도 12의 메타데이터 관리 시스템(1252))에 통신가능하게 결합될 수 있다. 공용 인터넷(1454)은, 제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 NAT 게이트웨이(1438)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 서비스 게이트웨이(1436)는 클라우드 서비스들(1456)에 통신가능하게 결합될 수 있다.Internet gateway 1434, included in control plane VCN 1416 and included in data plane VCN 1418, provides metadata management services 1452 (e.g., It can be communicatively coupled to the metadata management system 1252 of FIG. 12 . Public Internet 1454 is included in control plane VCN 1416 and can be communicatively coupled to NAT gateway 1438 included in data plane VCN 1418 . A service gateway 1436 included in control plane VCN 1416 and included in data plane VCN 1418 can be communicatively coupled to cloud services 1456 .

일부 실시예들에서, 데이터 평면 VCN(1418)은 고객 테넌시들(1470)과 통합될 수 있다. 이러한 통합은, 코드를 실행할 때 지원을 희망할 수 있는 경우와 같은 일부 경우들에서 IaaS 제공자의 고객들에 대해 유용하거나 또는 바람직할 수 있다. 고객은, 파괴적일 수 있거나 또는 다른 고객 자원들과 통신할 수 있거나 또는 달리 바람직하지 않은 효과들을 야기할 수 있는, 실행할 코드를 제공할 수 있다. 이에 응답하여, IaaS 제공자는 고객에 의해 IaaS 제공자에게 주어진 코드를 실행할지 여부를 결정할 수 있다.In some embodiments, data plane VCN 1418 may be integrated with customer tenancies 1470 . Such integration may be useful or desirable for the IaaS provider's customers in some cases, such as where they may wish to assist when executing code. A customer may provide code to be executed, which may be disruptive or may communicate with other customer resources or cause other undesirable effects. In response, the IaaS provider may decide whether to execute code given to the IaaS provider by the customer.

일부 예들에서, IaaS 제공자의 고객은 IaaS 제공자에게 일시적인 네트워크 액세스를 승인할 수 있으며, 데이터 평면 계층 앱(1446)에 첨부될 기능을 요청할 수 있다. 기능을 실행하기 위한 코드는 VM들(1466(1)-(N))에서 실행될 수 있으며, 코드는 데이터 평면 VCN(1418) 상의 어느 곳에서 실행되도록 구성되지 않을 수 있다. 각각의 VM(1466(1)-(N))은 하나의 고객 테넌시(1470)에 연결될 수 있다. VM들(1466(1)-(N))에 포함된 개별적인 컨테이너들(1471(1)-(N))은 코드를 실행하도록 구성될 수 있다. 이러한 경우에, 이중 격리가 존재할 수 있으며(예를 들어, 코드를 실행하는 컨테이너들(1471(1)-(N)), 여기서 컨테이너들(1471(1)-(N))은 신뢰할 수 없는 앱 서브넷(들)(1462)에 포함된 적어도 하나의 VM(1466(1)-(N))에 포함될 수 있음), 이는 부정확하거나 또는 달리 바람직하지 않은 코드가 IaaS 제공자의 네트워크를 손상시키거나 또는 상이한 고객의 네트워크를 손상시키는 것을 방지하는 것을 도울 수 있다. 컨테이너들(1471(1)-(N))은 고객 테넌시(1470)에 통신가능하게 결합될 수 있으며, 고객 테넌시(1470)로 데이터를 송신하거나 또는 이로부터 데이터를 수신하도록 구성될 수 있다. 컨테이너들(1471(1)-(N))은 데이터 평면 VCN(1418) 내의 임의의 다른 엔티티로 데이터를 송신하거나 또는 이로부터 데이터를 수신하도록 구성되지 않을 수 있다. 코드 실행의 완료 시에, IaaS 제공자는 컨테이너들(1471(1)-(N))을 없애거나(kill) 또는 달리 폐기할 수 있다.In some examples, a customer of the IaaS provider may grant temporary network access to the IaaS provider and may request functionality to be attached to the data plane layer app 1446 . Code to execute a function may be executed in VMs 1466(1)-(N), and the code may not be configured to run anywhere on data plane VCN 1418. Each VM 1466(1)-(N) may be associated with one customer tenancy 1470. Individual containers 1471(1)-(N) included in VMs 1466(1)-(N) may be configured to execute code. In this case, there may be double isolation (e.g., containers 1471(1)-(N) executing code, where containers 1471(1)-(N) are untrusted apps). At least one VM (which may be included in 1466(1)-(N)) included in subnet(s) 1462, which may contain incorrect or otherwise undesirable code that may compromise the IaaS provider's network or It can help prevent compromising your customer's network. Containers 1471(1)-(N) can be communicatively coupled to customer tenancy 1470 and can be configured to transmit data to or receive data from customer tenancy 1470. . Containers 1471(1)-(N) may not be configured to transmit data to or receive data from any other entity within data plane VCN 1418. Upon completion of code execution, the IaaS provider may kill or otherwise discard the containers 1471(1)-(N).

일부 실시예들에서, 신뢰할 수 있는 앱 서브넷(들)(1460)은, IaaS 제공자에 의해 소유되거나 또는 운영될 수 있는 코드를 실행할 수 있다. 이러한 실시예에서, 신뢰할 수 있는 앱 서브넷(들)(1460)은 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있으며, DB 서브넷(들)(1430)에서 CRUD 동작들을 실행하도록 구성될 수 있다. 신뢰할 수 없는 앱 서브넷(들)(1462)은 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있지만, 이러한 실시예에서, 신뢰할 수 없는 앱 서브넷(들)은 DB 서브넷(들)(1430)에서 판독 동작들을 실행하도록 구성될 수 있다. 각각의 고객의 VM(1466(1)-(N))에 포함될 수 있으며 고객으로부터의 코드를 실행할 수 있는 컨테이너들(1471(1)-(N))은 DB 서브넷(들)(1430)과 통신가능하게 결합되지 않을 수 있다.In some embodiments, Trusted App subnet(s) 1460 may execute code that may be owned or operated by an IaaS provider. In this embodiment, trusted app subnet(s) 1460 can be communicatively coupled to DB subnet(s) 1430 and will be configured to execute CRUD operations on DB subnet(s) 1430. can Untrusted app subnet(s) 1462 can be communicatively coupled to DB subnet(s) 1430, but in this embodiment, untrusted app subnet(s) are DB subnet(s) 1430 ) to execute read operations. Containers 1471(1)-(N), which can be included in each customer's VM 1466(1)-(N) and can execute code from the customer, communicate with the DB subnet(s) 1430. Possibly uncoupled.

다른 실시예들에서, 제어 평면 VCN(1416) 및 데이터 평면 VCN(1418)은 직접적으로 통신가능하게 결합되지 않을 수 있다. 이러한 실시예에서, 제어 평면 VCN(1416)과 데이터 평면 VCN(1418) 사이의 직접 통신이 존재하지 않을 수 있다. 그러나, 통신은 적어도 하나의 방법을 통해 간접적으로 발생할 수 있다. 제어 평면 VCN(1416)과 데이터 평면 VCN(1418) 사이의 통신을 가능하게 할 수 있는 LPG(1410)가 IaaS 제공자에 의해 수립될 수 있다. 다른 예에서, 제어 평면 VCN(1416) 또는 데이터 평면 VCN(1418)은 서비스 게이트웨이(1436)을 통해 클라우드 서비스들(1456)에 대한 호출을 만들 수 있다. 예를 들어, 제어 평면 VCN(1416)으로부터 클라우드 서비스들(1456)으로의 호출은, 데이터 평면 VCN(1418)과 통신할 수 있는 서비스에 대한 요청을 포함할 수 있다. In other embodiments, control plane VCN 1416 and data plane VCN 1418 may not be directly communicatively coupled. In such an embodiment, there may not be direct communication between the control plane VCN 1416 and the data plane VCN 1418. However, communication may occur indirectly through at least one method. An LPG 1410 may be established by an IaaS provider that may enable communication between the control plane VCN 1416 and the data plane VCN 1418. In another example, control plane VCN 1416 or data plane VCN 1418 can make calls to cloud services 1456 via service gateway 1436 . For example, a call from control plane VCN 1416 to cloud services 1456 may include a request for a service that can communicate with data plane VCN 1418 .

도 15는 적어도 일 실시예에 따른 IaaS 아키텍처의 다른 예시적인 패턴을 예시하는 블록도(1500)이다. 서비스 운영자들(1502)(예를 들어, 도 12의 서비스 운영자들(1202))은, 가상 클라우드 네트워크(VCN)(1506)(예를 들어, 도 12의 VCN(1206)) 및 보안 호스트 서브넷(1508)(예를 들어, 도 12의 보안 호스트 서브넷(1208))을 포함할 수 있는 보안 호스트 테넌시(1504)(예를 들어, 도 12의 보안 호스트 테넌시(1204))에 통신가능하게 결합될 수 있다. VCN(1506)은, SSH VCN(1512)에 포함된 LPG(1510)를 통해 SSH VCN(1512)(예를 들어, 도 12의 SSH VCN(1212))에 통신가능하게 결합될 수 있는 LPG(1510)(예를 들어, 도 12의 LPG(1210))를 포함할 수 있다. SSH VCN(1512)은 SSH 서브넷(1514)(예를 들어, 도 12의 SSH 서브넷(1214))을 포함할 수 있으며, SSH VCN(1512)는 제어 평면 VCN(1516)에 포함된 LPG(1510)를 통해 제어 평면 VCN(1516)(예를 들어, 도 12의 제어 평면 VCN(1216))에 그리고 데이터 평면 VCN(1518)에 포함된 LPG(1510)를 통해 데이터 평면 VCN(1518)(예를 들어, 도 12의 데이터 평면 VCN(1218))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1516) 및 데이터 평면 VCN(1518)은 서비스 테넌시(1519)(예를 들어, 도 12의 서비스 테넌시(1219))에 포함될 수 있다.15 is a block diagram 1500 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operators 1502 (e.g., service operators 1202 of FIG. 12) may include a virtual cloud network (VCN) 1506 (e.g., VCN 1206 of FIG. 12) and secure host subnets ( 1508) (e.g., secure host subnet 1208 of FIG. 12) communicatively coupling to secure host tenancy 1504 (e.g., secure host tenancy 1204 of FIG. 12) It can be. VCN 1506 is an LPG 1510 that can be communicatively coupled to SSH VCN 1512 (e.g., SSH VCN 1212 in FIG. 12) via LPG 1510 included in SSH VCN 1512. ) (eg, LPG 1210 of FIG. 12). SSH VCN 1512 can include SSH subnet 1514 (eg, SSH subnet 1214 in FIG. 12 ), and SSH VCN 1512 can include LPG 1510 included in control plane VCN 1516 to the control plane VCN 1516 (e.g., the control plane VCN 1216 of FIG. 12) via the data plane VCN 1518 (e.g., , can be communicatively coupled to the data plane VCN 1218 of FIG. Control plane VCN 1516 and data plane VCN 1518 may be included in service tenancy 1519 (eg, service tenancy 1219 in FIG. 12 ).

제어 평면 VCN(1516)은, LB 서브넷(들)(1522)(예를 들어, 도 12의 LB 서브넷(들)(1222))을 포함할 수 있는 제어 평면 DMZ 계층(1520)(예를 들어, 도 12의 제어 평면 DMZ 계층(1220)), 앱 서브넷(들)(1526)(예를 들어, 도 12의 앱 서브넷(들)(1226))을 포함할 수 있는 제어 평면 앱 계층(1524)(예를 들어, 도 12의 제어 평면 앱 계층(1224)), DB 서브넷(들)(1530)(예를 들어, 도 14의 DB 서브넷(들)(1430))을 포함할 수 있는 제어 평면 데이터 계층(1528)(예를 들어, 도 12의 제어 평면 데이터 계층(1228))을 포함할 수 있다. 제어 평면 DMZ 계층(1520)에 포함된 LB 서브넷(들)(1522)은 제어 평면 앱 계층(1524)에 포함된 앱 서브넷(들)(1526) 및 제어 평면 VCN(1516)에 포함될 수 있는 인터넷 게이트웨이(1534)(예를 들어, 도 12의 인터넷 게이트웨이(1234))에 통신가능하게 결합될 수 있으며, 앱 서브넷(들)(1526)은 제어 평면 데이터 계층(1528)에 포함된 DB 서브넷(들)(1530), 서비스 게이트 웨이(1536)(예를 들어, 도 12의 서비스 게이트웨이) 및 네트워크 어드레스 변환(NAT) 게이트웨이(1538)(예를 들어, 도 12의 NAT 게이트웨이(1238))에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1516)은 서비스 게이트웨이(1536) 및 NAT 게이트웨이(1538)를 포함할 수 있다.Control plane VCN 1516 includes control plane DMZ layer 1520 (e.g., LB subnet(s) 1522 (e.g., LB subnet(s) 1222 in FIG. 12)). Control plane app layer 1524 (which may include control plane DMZ layer 1220 of FIG. 12 ), app subnet(s) 1526 (e.g., app subnet(s) 1226 of FIG. 12 ) Control plane data layer, which may include, for example, control plane app layer 1224 in FIG. 12), DB subnet(s) 1530 (eg, DB subnet(s) 1430 in FIG. 14) 1528 (eg, control plane data layer 1228 in FIG. 12). The LB subnet(s) 1522 included in the control plane DMZ layer 1520 are Internet gateways that can be included in the App subnet(s) 1526 included in the control plane App layer 1524 and the control plane VCN 1516 1534 (e.g., Internet gateway 1234 of FIG. 12), and app subnet(s) 1526 can be communicatively coupled to DB subnet(s) included in control plane data layer 1528. 1530, to communicate with a service gateway 1536 (e.g., the service gateway of FIG. 12) and a network address translation (NAT) gateway 1538 (e.g., the NAT gateway 1238 of FIG. 12). can be combined Control plane VCN 1516 may include service gateway 1536 and NAT gateway 1538 .

데이터 평면 VCN(1518)은 데이터 평면 앱 계층(1546)(예를 들어, 도 12의 데이터 평면 앱 계층(1246)), 데이터 평면 DMZ 계층(1548)(예를 들어, 도 12의 데이터 평면 DMZ 계층(1248)), 및 데이터 평면 데이터 계층(1550)(예를 들어, 도 12의 데이터 평면 데이터 계층(1250))을 포함할 수 있다. 데이터 평면 DMZ 계층(1548)은, 데이터 평면 앱 계층(1546)의 신뢰할 수 있는 앱 서브넷(들)(1560)(예를 들어, 도 14의 신뢰할 수 있는 앱 서브넷(들)(1460))과 신뢰할 수 없는 앱 서브넷(들)(1562)(예를 들어, 도 14의 신뢰할 수 없는 앱 서브넷(들)(1462)), 및 데이터 평면 VCN(1518)에 포함된 인터넷 게이트웨이(1534)에 통신가능하게 결합될 수 있는 LB 서브넷(들)(1522)을 포함할 수 있다. 신뢰할 수 있는 앱 서브넷(들)(1560)은 데이터 평면 VCN(1518)에 포함된 서비스 게이트웨이(1536), 데이터 평면 VCN(1518)에 포함된 NAT 게이트웨이(1538), 및 데이터 평면 데이터 계층(1550)에 포함된 DB 서브넷(들)(1530)에 통신가능하게 결합될 수 있다. 신뢰할 수 없는 앱 서브넷(들)(1562)은 데이터 평면 VCN(1518)에 포함된 서비스 게이트웨이(1536) 및 데이터 평면 데이터 계층(1550)에 포함된 DB 서브넷(들)(1530)에 통신가능하게 결합될 수 있다. 데이터 평면 데이터 계층(1550)은, 데이터 평면 VCN(1518)에 포함된 서비스 게이트웨이(1536)에 통신가능하게 결합될 수 있는 DB 서브넷(들)(1530)을 포함할 수 있다.Data plane VCN 1518 includes data plane app layer 1546 (e.g., data plane app layer 1246 in FIG. 12), data plane DMZ layer 1548 (e.g., data plane DMZ layer in FIG. 12) 1248), and a data plane data layer 1550 (eg, data plane data layer 1250 of FIG. 12). The data plane DMZ layer 1548 connects the trusted app subnet(s) 1560 (e.g., the trusted app subnet(s) 1460 of FIG. 14) of the data plane app layer 1546. Communicate with untrusted app subnet(s) 1562 (e.g., untrusted app subnet(s) 1462 in FIG. 14), and internet gateway 1534 included in data plane VCN 1518. LB subnet(s) 1522 that can be combined. Trusted app subnet(s) 1560 include service gateway 1536 included in data plane VCN 1518, NAT gateway 1538 included in data plane VCN 1518, and data plane data layer 1550 can be communicatively coupled to the DB subnet(s) 1530 included in Untrusted app subnet(s) 1562 are communicatively coupled to service gateway 1536 included in data plane VCN 1518 and DB subnet(s) 1530 included in data plane data layer 1550. It can be. Data plane data layer 1550 can include DB subnet(s) 1530 that can be communicatively coupled to service gateways 1536 included in data plane VCN 1518 .

신뢰할 수 없는 앱 서브넷(들)(1562)은, 신뢰할 수 없는 앱 서브넷(들)(1562) 내에 상주하는 테넌트 가상 머신(VM)들(1566(1)-(N))에 통신가능하게 결합될 수 있는 1차 VNIC들(1564(1)-(N))을 포함할 수 있다. 각각의 테넌트 VM(1566(1)-(N))은 개별적인 컨테이너(1567(1)-(N))에서 코드를 실행할 수 있으며, 컨테이너 출구 VCN(1568)에 포함될 수 있는 데이터 평면 앱 계층(1546)에 포함될 수 있는 앱 서브넷(1526)에 통신가능하게 결합될 수 있다. 개별적인 2차 VNIC들(1572(1)-(N))은 데이터 평면 VCN(1518)에 포함된 신뢰할 수 없는 앱 서브넷(들)(1562)과 컨테이너 출구 VCN들(1568)에 포함된 앱 서브넷 사이의 통신을 가능하게 할 수 있다. 컨테이너 출구 VCN은, 공용 인터넷(1554)(예를 들어, 도 12의 공용 인터넷(1254))에 통신가능하게 결합될 수 있는 NAT 게이트웨이(1538)를 포함할 수 있다.Untrusted app subnet(s) 1562 will be communicatively coupled to tenant virtual machines (VMs) 1566(1)-(N) residing within untrusted app subnet(s) 1562. primary VNICs 1564(1)-(N) that can be Each tenant VM 1566(1)-(N) can run code in a separate container 1567(1)-(N), and the data plane app layer 1546 can be included in the container exit VCN 1568. ), which can be communicatively coupled to the app subnet 1526. Individual secondary VNICs 1572(1)-(N) are provided between the untrusted app subnet(s) 1562 contained in data plane VCN 1518 and the app subnet contained in container egress VCNs 1568. can enable communication. The container egress VCN can include a NAT gateway 1538 that can be communicatively coupled to public internet 1554 (eg, public internet 1254 in FIG. 12 ).

제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 인터넷 게이트웨이(1534)는, 공용 인터넷(1554)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1552)(예를 들어, 도 12의 메타데이터 관리 시스템(1252))에 통신가능하게 결합될 수 있다. 공용 인터넷(1554)은, 제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 NAT 게이트웨이(1538)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 서비스 게이트웨이(1536)는 클라우드 서비스들(1556)에 통신가능하게 결합될 수 있다.Internet gateway 1534, included in control plane VCN 1516 and included in data plane VCN 1518, provides metadata management services 1552 (e.g., It can be communicatively coupled to the metadata management system 1252 of FIG. 12 . Public Internet 1554 is included in control plane VCN 1516 and can be communicatively coupled to NAT gateway 1538 included in data plane VCN 1518 . A service gateway 1536 included in control plane VCN 1516 and included in data plane VCN 1518 can be communicatively coupled to cloud services 1556 .

일부 예들에서, 도 15의 블록도(1500)의 아키텍처에 의해 예시된 패턴은 도 14의 블록도(1400)의 아키텍처에 의해 예시된 패턴에 대한 예외로서 간주될 수 있으며, IaaS 제공자가 고객과 직접적으로 통신할 수 없는 경우(예를 들어, 분리된 영역) IaaS 제공자의 고객에게 바람직할 수 있다. 각각의 고객에 대한 VM들(1566(1)-(N))에 포함된 개별적인 컨테이너들(1567(1)-(N))은 고객에 의해 실시간으로 액세스될 수 있다. 컨테이너들(1567(1)-(N))은, 컨테이너 출구 VCN(1568)에 포함될 수 있는 데이터 패널 앱 계층(1546)의 앱 서브넷(들)(1526)에 포함된 개별적인 2차 VNIC들(1572(1)-(N))에 대한 호출들을 만들도록 구성될 수 있다. 2차 VNIC들(1572(1)-(N))은, 공용 인터넷(1554)으로 호출들을 송신할 수 있는 NAT 게이트웨이(1538)로 호출들을 송신할 수 있다. 이러한 예에서, 고객에 의해 실시간으로 액세스될 수 있는 컨테이너들(1567(1)-(N))은 제어 평면 VCN(1516)으로부터 격리될 수 있고, 데이터 평면 VCN(1518)에 포함된 다른 엔티티들로부터 격리될 수 있다. 컨테이너들(1567(1)-(N))은 또한 다른 고객들의 자원들로부터 격리될 수 있다.In some examples, the pattern illustrated by the architecture of block diagram 1500 of FIG. 15 can be considered an exception to the pattern illustrated by the architecture of block diagram 1400 of FIG. This may be desirable for customers of IaaS providers when they are unable to communicate over the Internet (e.g., in an isolated area). Individual containers 1567(1)-(N) contained in VMs 1566(1)-(N) for each customer may be accessed in real time by the customer. Containers 1567(1)-(N) are individual secondary VNICs 1572 included in app subnet(s) 1526 of data panel app layer 1546, which may be included in container egress VCN 1568. It can be configured to make calls to (1)-(N)). Secondary VNICs 1572(1)-(N) can send calls to NAT gateway 1538, which can send calls to public internet 1554. In this example, containers 1567(1)-(N) that may be accessed in real time by the customer may be isolated from control plane VCN 1516 and other entities included in data plane VCN 1518. can be isolated from Containers 1567(1)-(N) may also be isolated from other customers' resources.

다른 예들에서, 고객은 클라우드 서비스들(1556)을 호출하기 위해 컨테이너들(1567(1)-(N))을 사용할 수 있다. 이러한 예에서, 고객은, 클라우드 서비스들(1556)으로부터 서비스를 요청하는 컨테이너들(1567(1)-(N))에서 코드를 실행할 수 있다. 컨테이너들(1567(1)-(N))은, 요청을 공용 인터넷(1554)으로 송신할 수 있는 NAT 게이트웨이로 요청을 송신할 수 있는 2차 VNIC들(1572(1)-(N))로 이러한 요청을 송신할 수 있다. 공용 인터넷(1554)은 요청을 인터넷 게이트웨이(1534)를 통해 제어 평면 VCN(1516)에 포함된 LB 서브셋(들)(1522)으로 송신할 수 있다. 요청이 유효하다고 결정하는 것에 응답하여, LB 서브넷(들)은, 서비스 게이트웨이(1536)를 통해 클라우드 서비스들(1556)로 요청을 송신할 수 있는 앱 서브넷(들)(1526)로 요청을 송신할 수 있다. In other examples, a customer may use containers 1567(1)-(N) to invoke cloud services 1556. In this example, a customer may execute code in containers 1567(1)-(N) requesting service from cloud services 1556. Containers 1567(1)-(N) are routed to secondary VNICs 1572(1)-(N) that can send requests to a NAT gateway that can send requests to the public internet 1554. You can send these requests. Public Internet 1554 may send a request to LB subset(s) 1522 included in control plane VCN 1516 via Internet gateway 1534 . In response to determining that the request is valid, the LB subnet(s) will send a request to the app subnet(s) 1526, which can send requests to cloud services 1556 via the service gateway 1536. can

도면들에 도시된 IaaS 아키텍처들(1200, 1300, 1400, 1500)이 도시된 것들과는 다른 구성요소들을 가질 수 있다는 것이 이해되어야 한다. 추가로, 도면에 도시된 실시예는 본 발명의 일 실시예를 통합할 수 있는 클라우드 인프라스트럭처 시스템의 단지 일부 예들이다. 일부 다른 실시예들에서, IaaS 시스템들은 도면들에 도시된 것보다 더 많거나 또는 더 적은 구성요소들을 가질 수 있거나, 2개 이상의 구성요소들을 결합할 수 있거나, 또는 구성요소들의 상이한 구성 또는 배열을 가질 수 있다. It should be understood that the IaaS architectures 1200, 1300, 1400, and 1500 shown in the figures may have other components than those shown. Additionally, the embodiments shown in the figures are just some examples of cloud infrastructure systems that may incorporate an embodiment of the present invention. In some other embodiments, IaaS systems may have more or fewer components than shown in the drawings, may combine two or more components, or may have a different configuration or arrangement of components. can have

특정 실시예들에서, 본원에서 설명된 IaaS 시스템들은, 셀프-서비스(self-service)의, 가입-기반(subscription-based)의, 탄력적 스케일러블(scalable)의, 신뢰할 수 있는, 고도로 이용가능하며, 안전한 방식으로 고객에게 전달되는 애플리케이션들, 미들웨어, 및 데이터베이스 서비스 제공(offering)들의 스위트(suite)를 포함할 수 있다. 이러한 IaaS 시스템의 일 예는 본 양수인에 의해 제공되는 오라클 클라우드 인프라스트럭처(Oracle Cloud Infrastructure; OCI)이다.In certain embodiments, the IaaS systems described herein are self-service, subscription-based, elastically scalable, reliable, highly available, and , a suite of applications, middleware, and database service offerings that are delivered to customers in a secure manner. One example of such an IaaS system is Oracle Cloud Infrastructure (OCI) provided by the assignee.

도 16은 본 개시의 다양한 실시예들에 구현될 수 있는 예시적인 컴퓨터 시스템(1600)을 예시한다. 시스템(1600)은 이상에서 설명된 컴퓨터 시스템들 중 임의의 것을 구현하기 위하여 사용될 수 있다. 도면에 도시된 바와 같이, 컴퓨터 시스템(1600)은 버스 서브시스템(1602)을 통해 복수의 주변 서브시스템들과 통신하는 프로세싱 유닛(1604)을 포함한다. 이러한 주변 서브시스템들은 프로세싱 가속 유닛(1606), I/O 서브시스템(1608), 저장 서브시스템(1618) 및 통신 서브시스템(1624)을 포함할 수 있다. 저장 서브시스템(1618)은 유형적인 컴퓨터-판독가능 저장 매체(1622) 및 시스템 메모리(1610)를 포함한다.16 illustrates an example computer system 1600 that may be implemented in various embodiments of the present disclosure. System 1600 can be used to implement any of the computer systems described above. As shown in the figure, computer system 1600 includes a processing unit 1604 that communicates with a plurality of peripheral subsystems via a bus subsystem 1602. These peripheral subsystems may include processing acceleration unit 1606 , I/O subsystem 1608 , storage subsystem 1618 and communications subsystem 1624 . Storage subsystem 1618 includes tangible computer-readable storage media 1622 and system memory 1610 .

버스 서브시스템(1602)은 컴퓨터 시스템(1600)의 다양한 구성요소들 및 서브시스템들이 의도된 바와 같이 서로 통신하는 것을 가능하게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(1602)이 단일 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예들은 복수의 버스들을 사용할 수 있다. 버스 서브시스템(1602)은, 다양한 버스 아키텍처들 중 임의의 것을 사용하는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 및 로컬 버스를 포함하는 몇몇 유형들의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 이러한 아키텍처들은, 산업 표준 아키텍처(Industry Standard Architecture; ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture; MCA) 버스, 개량 ISA(Enhanced ISA; EISA) 버스, 비디오 전자공학 표준 위원회(Video Electronics Standards Association; VESA) 로컬 버스, 및 주변 컴포넌트 상호연결(Peripheral Component Interconnect; PCI) 버스를 포함할 수 있으며, 이들은 IEEE P1386.1 표준에 대하여 제조되는 메자닌 버스(Mezzanine bus)로서 구현될 수 있다.Bus subsystem 1602 provides a mechanism for enabling the various components and subsystems of computer system 1600 to communicate with each other as intended. Although bus subsystem 1602 is shown schematically as a single bus, alternative embodiments of the bus subsystem may use multiple buses. Bus subsystem 1602 can be any of several types of bus structures, including a memory bus or memory controller using any of a variety of bus architectures, a peripheral bus, and a local bus. For example, these architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Council Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, which may be implemented as a Mezzanine bus manufactured to the IEEE P1386.1 standard.

하나 이상의 집적 회로들(예를 들어, 통상적인 마이크로프로세서 또는 마이크로제어기)로서 구현될 수 있는 프로세싱 유닛(1604)은 컴퓨터 시스템(1600)의 동작을 제어한다. 하나 이상의 프로세서들이 프로세싱 유닛(1604) 내에 포함될 수 있다. 이러한 프로세서들은 단일 코어 또는 다중코어 프로세서들을 포함할 수 있다. 특정 실시예들에 있어서, 프로세싱 유닛(1604)은 각각의 프로세싱 유닛 내에 포함된 단일 또는 다중코어 프로세서들을 갖는 하나 이상의 독립적인 프로세싱 유닛들(1632 및/또는 1634)로서 구현될 수 있다. 다른 실시예들에 있어서, 프로세싱 유닛(1604)은 또한 2개의 듀얼-코어 프로세서들을 단일 칩 내에 통합함으로써 형성된 쿼드-코어 프로세싱 유닛으로서 구현될 수 있다.Processing unit 1604, which may be implemented as one or more integrated circuits (eg, a conventional microprocessor or microcontroller) controls the operation of computer system 1600. One or more processors may be included in processing unit 1604 . These processors may include single core or multicore processors. In certain embodiments, processing unit 1604 may be implemented as one or more independent processing units 1632 and/or 1634 with single or multicore processors included within each processing unit. In other embodiments, processing unit 1604 can also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.

다양한 실시예들에 있어서, 프로세싱 유닛(1604)은 프로그램 코드에 응답하여 다양한 프로그램들을 실행할 수 있으며, 프로그램들 또는 프로세스들의 동시 다중 실행을 유지할 수 있다. 임의의 주어진 시점에, 실행될 프로그램 코드의 전부 또는 일부가 프로세서(들)(1604) 내에 및/또는 저장 서브시스템(1618) 내에 상주할 수 있다. 적절한 프로그래밍을 통하여, 프로세서(들)(1604)는 이상에서 설명된 다양한 기능들을 제공할 수 있다. 컴퓨터 시스템(1600)은, 디지털 신호 프로세서(digital signal processor; DSP), 특수-목적 프로세서, 및/또는 유사한 것을 포함할 수 있는 프로세싱 가속 유닛(1606)을 추가적으로 포함할 수 있다.In various embodiments, processing unit 1604 can execute various programs in response to program code, and can maintain simultaneous multiple execution of programs or processes. At any given point in time, all or part of the program code to be executed may reside within processor(s) 1604 and/or within storage subsystem 1618 . With proper programming, processor(s) 1604 can provide the various functions described above. The computer system 1600 may additionally include a processing acceleration unit 1606, which may include a digital signal processor (DSP), special-purpose processor, and/or the like.

I/O 서브시스템(1608)은 사용자 인터페이스 입력 디바이스들 및 사용자 인터페이스 출력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 키보드, 포인팅 디바이스들 예컨대 마우스 또는 트랙볼, 터치패드 또는 디스플레이 내에 통합된 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 명령 인식 시스템들을 가진 오디오 입력 디바이스들, 마이크들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 예를 들어, 사용자들이 제스처들 및 구두(spoken) 명령들을 사용하는 자연스러운 사용자 인터페이스를 통해, Microsoft Xbox® 360 게임 제어기와 같은, 입력 디바이스를 제어하고 이와 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서와 같은 모션 센싱 및/또는 제스처 인식 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 사용자들로부터 눈 움직임(eye activity)(예를 들어, 사진을 찍는 동안의 및/또는 메뉴를 선택하는 동안의 '깜박임')을 검출하고 눈 제스처들을 입력 디바이스(예를 들어, Google Glass®) 내로의 입력으로서 변환하는 Google Glass® 눈 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 사용자들이 음성 명령들을 통하여 음성 인식 시스템(예를 들어, Siri® 네비게이터(navigator))과 상호작용하는 것을 가능하게 하는 음성 인식 센싱 디바이스들을 포함할 수 있다. I/O subsystem 1608 can include user interface input devices and user interface output devices. User interface input devices include keyboard, pointing devices such as mouse or trackball, touchpad or touch screen integrated into the display, scroll wheel, click wheel, dial, button, switch, keypad, audio input devices with voice command recognition systems. , microphones, and other types of input devices. User interface input devices enable users to control and interact with an input device, such as a Microsoft Xbox® 360 game controller, through a natural user interface using, for example, gestures and spoken commands. motion sensing and/or gesture recognition devices such as a Microsoft Kinect® motion sensor that User interface input devices may also detect eye activity (eg, 'blinking' while taking a picture and/or selecting a menu) from users and send eye gestures to the input device (eg, For example, eye gesture recognition devices such as a Google Glass® eye blink detector that translates as input into Google Glass®. Additionally, user interface input devices may include voice recognition sensing devices that enable users to interact with a voice recognition system (eg, Siri® navigator) via voice commands.

사용자 인터페이스 입력 디바이스들은 또한, 비제한적으로, 3차원(3D) 마우스들, 조이스틱들 또는 포인팅 스틱들, 게임패드들 및 그래픽 태블릿들, 및 음향/시각 디바이스들 예컨대 스피커들, 디지털 카메라들, 디지털 캠코더들, 휴대용 매체 플레이어들, 웹캠들, 이미지 스캐너들, 핑거프린트 스캐너들, 바코드 리더 3D 스캐너들, 3D 프린터들, 레이저 거리계들, 및 시선 추적 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 예를 들어, 의료 이미징 입력 디바이스들 예컨대 컴퓨터 단층촬영, 자기 공명 이미징, 양전자 방출 단층촬영, 의료 초음파 검사 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 예를 들어, 오디오 입력 디바이스들 예컨대 MIDI 키보드들, 디지털 악기들, 및 유사한 것을 포함할 수 있다.User interface input devices also include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphics tablets, and audio/visual devices such as speakers, digital cameras, digital camcorders. fields, portable media players, webcams, image scanners, fingerprint scanners, barcode reader 3D scanners, 3D printers, laser rangefinders, and eye tracking devices. Additionally, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, positron emission tomography, medical ultrasound devices. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments, and the like.

사용자 인터페이스 출력 디바이스들은 디스플레이 서브시스템, 표시등들, 또는 비-시각적 디스플레이들 예컨대 오디오 출력 디바이스들, 등을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(cathode ray tube; CRT), 액정 디스플레이(liquid crystal display; LCD) 또는 플라즈마 디스플레이를 사용하는 것과 같은 평면-패널 디바이스, 프로젝션 디바이스, 터치 스크린, 및 유사한 것일 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨터 시스템(1600)으로부터 사용자 또는 다른 컴퓨터로 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 예를 들어, 사용자 인터페이스 출력 디바이스들은, 비제한적으로, 시각적으로 텍스트, 그래픽들 및 오디오/비디오 정보를 전달하는 다양한 디스플레이 디바이스들, 예컨대 모니터들, 프린터들, 스피커들, 헤드폰들, 자동차 네비게이션 시스템들, 플로터(plotter)들, 음성 출력 디바이스들, 및 모뎀들을 포함할 수 있다.User interface output devices may include a display subsystem, indicators, or non-visual displays such as audio output devices, and the like. The display subsystem can be a flat-panel device such as using a cathode ray tube (CRT), liquid crystal display (LCD) or plasma display, projection device, touch screen, and the like. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from computer system 1600 to a user or other computer. For example, user interface output devices include, but are not limited to, various display devices such as monitors, printers, speakers, headphones, car navigation systems that visually convey text, graphics and audio/video information. , plotters, audio output devices, and modems.

컴퓨터 시스템(1600)은, 시스템 메모리(1610) 내에 현재 위치되어 있는 것으로 도시되는 소프트웨어 요소들을 포함하는 저장 서브시스템(1618)을 포함할 수 있다. 시스템 메모리(1610)는, 프로세싱 유닛(1604) 상에 로딩가능하며 실행가능한 프로그램 명령어들뿐만 아니라 이러한 프로그램들의 실행 동안 생성되는 데이터를 저장할 수 있다.Computer system 1600 may include a storage subsystem 1618 that includes software elements shown as being currently located within system memory 1610 . System memory 1610 may store executable program instructions that are loadable onto processing unit 1604 as well as data generated during execution of such programs.

컴퓨터 시스템(1600)의 구성 및 유형에 따라서, 시스템 메모리(1610)는 (랜덤 액세스 메모리(random access memory; RAM)와 같은) 휘발성일 수 있거나 및/또는 (판독-전용 메모리(read-only memory; ROM), 플래시 메모리, 등과 같은) 비-휘발성일 수 있다. RAM은 전형적으로 프로세싱 유닛(1604)에 의해 현재 실행되고 동작되고 있거나 및/또는 이에 즉시 액세스가능한 데이터 및/또는 프로그램 모듈들을 포함한다. 일부 구현예들에 있어서, 시스템 메모리(1610)는 복수의 상이한 유형들의 메모리들, 예컨대 정적 랜덤 액세스 메모리(static random access memory; SRAM) 또는 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)를 포함할 수 있다. 일부 구현예들에 있어서, 예컨대 기동 동안에 컴퓨터 시스템(1600) 내의 요소들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(basic input/output system; BIOS)은 전형적으로 ROM 내에 저장될 수 있다. 예로서 그리고 비제한적으로, 시스템 메모리(1610)는 또한, 클라이언트 애플리케이션들, 웹 브라우저들, 중간-계층 애플리케이션들, 관계형 데이터 베이스 관리 시스템(relational database management system; RDBMS)들, 등을 포함할 수 있는 애플리케이션 프로그램들(1612), 프로그램 데이터(1614), 및 운영 시스템(1616)을 예시한다. 예로서, 운영 시스템(1616)은, 다양한 버전들의 Microsoft Windows®, Apple Macintosh®, 및/또는 리눅스 운영 시스템들, (비제한적으로 다양한 GNU/리눅스 운영 시스템들, Google Chrome® OS, 및 유사한 것을 포함하는) 다양한 상용-이용가능 UNIX® 또는 UNIX-유사 운영 시스템들 및/또는 모바일 운영 시스템들 예컨대 iOS, Windows® Phone, Android® OS, BlackBerry® 16 OS, 및 Palm® OS 운영 시스템들을 포함할 수 있다.Depending on the configuration and type of computer system 1600, system memory 1610 may be volatile (such as random access memory (RAM)) and/or (read-only memory; ROM), flash memory, etc.) may be non-volatile. RAM typically contains data and/or program modules that are currently being executed and operated upon by processing unit 1604 and/or are immediately accessible to it. In some implementations, system memory 1610 may include multiple different types of memories, such as static random access memory (SRAM) or dynamic random access memory (DRAM). can In some implementations, a basic input/output system (BIOS) containing basic routines that help transfer information between elements within computer system 1600, such as during startup, typically resides in ROM. can be stored By way of example and not limitation, system memory 1610 may also include client applications, web browsers, mid-tier applications, relational database management systems (RDBMS), and the like. Illustrates application programs 1612 , program data 1614 , and operating system 1616 . By way of example, operating system 1616 may include various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems, including but not limited to various GNU/Linux operating systems, Google Chrome® OS, and the like. ) various commercially-available UNIX® or UNIX-like operating systems and/or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® 16 OS, and Palm® OS operating systems. .

저장 서브시스템(1618)은 또한 일부 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성물들을 저장하기 위한 유형의 컴퓨터-판독가능 저장 매체를 제공할 수 있다. 프로세서에 의해 실행될 때 이상에서 설명된 기능을 제공하는 소프트웨어(프로그램들, 코드 모듈들, 명령어들)가 저장 서브시스템(1618) 내에 저장될 수 있다. 이러한 소프트웨어 모듈들 또는 명령어들이 프로세싱 유닛(1604)에 의해 실행될 수 있다. 저장 서브시스템(1618)은 또한 본 개시에 따라 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다.Storage subsystem 1618 may also provide tangible computer-readable storage media for storing basic programming and data constructs that provide functionality of some embodiments. Software (programs, code modules, instructions) that, when executed by a processor, provides the functionality described above may be stored within storage subsystem 1618 . These software modules or instructions may be executed by processing unit 1604 . Storage subsystem 1618 can also provide storage for storing data used in accordance with the present disclosure.

저장 서브시스템(1600)은 또한, 추가적으로 컴퓨터-판독가능 저장 매체(1622)에 연결될 수 있는 컴퓨터-판독가능 저장 매체 리더(1620)를 포함할 수 있다. 시스템 메모리(1610)와 함께 그리고 선택적으로 이와 조합되어, 컴퓨터-판독가능 저장 매체(1622)는, 컴퓨터-판독가능 정보를 일시적으로 및/또는 더 영구적으로 포함하고, 저장하며, 송신하고, 및 검색하기 위한 저장 매체들에 더하여 원격, 로컬, 고정, 및/또는 착탈가능 저장 디바이스들을 포괄적으로 나타낼 수 있다.Storage subsystem 1600 may also include computer-readable storage media reader 1620 , which may additionally be coupled to computer-readable storage media 1622 . Along with and optionally in combination with system memory 1610, computer-readable storage medium 1622 may temporarily and/or more permanently contain, store, transmit, and retrieve computer-readable information. Remote, local, fixed, and/or removable storage devices may be generically referred to in addition to storage media for storage.

코드, 또는 코드의 부분들을 포함하는 컴퓨터-판독가능 저장 매체(1622)는 또한, 비제한적으로, 정보의 저장 및/또는 송신을 위하여 임의의 방법 또는 기술로 구현된 휘발성 및 비-휘발성, 착탈가능 및 비-착탈가능 매체와 같은 저장 매체 및 통신 매체를 포함하는 당업계에서 알려지거나 또는 사용되는 임의의 적절한 매체를 포함할 수 있다. 이는 유형의 컴퓨터-판독가능 저장 매체, 예컨대 RAM, ROM, 전기 소거가능 프로그램가능 ROM(electronically erasable programmable ROM; EEPROM), 플래시 메모리 또는 다른 메모리 기술품, CD-ROM, 디지털 다기능 디스크(digital versatile disk; DVD), 또는 광 저장장치, 자기 카세트들, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스들, 또는 다른 유형의 컴퓨터 판독가능 매체를 포함할 수 있다. 이는 또한 비유형적인 컴퓨터-판독가능 매체, 예컨대 데이터 신호들, 데이터 송신들, 또는 희망되는 정보를 송신하기 위해 사용될 수 있으며 컴퓨팅 시스템(1600)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.A computer-readable storage medium 1622 containing code or portions of code may also include, but is not limited to, volatile and non-volatile, removable media implemented in any method or technology for storage and/or transmission of information. and any suitable media known or used in the art including storage media and communication media, such as non-removable media. It is a tangible computer-readable storage medium such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk; DVD), or optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer readable media. It can also include non-tangible computer-readable media, such as data signals, data transmissions, or any other medium that can be used to transmit desired information and that can be accessed by computing system 1600. there is.

예로서, 컴퓨터-판독가능 저장 매체(1622)는, 비-착탈가능 비휘발성 자기 매체로부터 판독하거나 또는 이에 기입하는 하드 디스크 드라이브, 착탈가능 비휘발성 자기 디스크로부터 판독하거나 또는 이에 기입하는 자기 디스크 드라이브, 및 착탈가능 비휘발성 광 디스크 예컨대 CD ROM, DVD, 및 Blu-Ray® 디스크, 또는 다른 광 매체로부터 판독하거나 또는 이에 기입하는 광 디스크 드라이브를 포함할 수 있다. 컴퓨터-판독가능 저장 매체(1622)는, 비제한적으로, Zip® 드라이브들, 플래시 메모리 카드들, 범용 직렬 버스(universal serial bus; USB) 플래시 드라이브들, 보안 디지털(secure digital; SD) 카드들, DVD 디스크들, 디지털 비디오 테이프, 및 유사한 것을 포함할 수 있다. 컴퓨터-판독가능 저장 매체(1622)는 또한, 비-휘발성 메모리 기반 고체-상태 드라이브(solid-state drive; SSD)들 예컨대 플래시-메모리 기반 SSD들, 기업 플래시 드라이브들, 고체 상태 ROM, 및 유사한 것, 휘발성 메모리 기반 SSD들 예컨대 고체 상태 RAM, 동적 RAM, 정적 RAM, DRAM-기반 SSD들, 자기저항성 RAM(magnetoresistive RAM; MRAM) SSD들, 및 DRAM 및 플래시 메모리 기반 SSD들의 조합을 사용하는 하이브리드 SSD들을 포함할 수 있다. 디스크 드라이브들 및 그들의 연관된 컴퓨터-판독가능 매체는 컴퓨터-판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터 시스템(1600)에 대한 다른 데이터의 비-휘발성 저장을 제공할 수 있다. By way of example, computer-readable storage medium 1622 may include a hard disk drive that reads from or writes to non-removable nonvolatile magnetic media, a magnetic disk drive that reads from or writes to removable nonvolatile magnetic disks, and an optical disc drive that reads from or writes to removable non-volatile optical discs such as CD ROM, DVD, and Blu-Ray® discs, or other optical media. Computer-readable storage medium 1622 includes, but is not limited to, Zip® drives, flash memory cards, universal serial bus (USB) flash drives, secure digital (SD) cards, DVD discs, digital video tape, and the like. Computer-readable storage medium 1622 may also include non-volatile memory based solid-state drives (SSDs) such as flash-memory based SSDs, enterprise flash drives, solid state ROM, and the like. , volatile memory based SSDs such as solid state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs using a combination of DRAM and flash memory based SSDs. can include Disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computer system 1600.

통신 서브시스템(1624)은 다른 컴퓨터 시스템들 및 네트워크들에 대한 인터페이스를 제공한다. 통신 서브시스템(1624)은 컴퓨터 시스템(1600)으로부터 다른 시스템들로 데이터를 송신하고 이로부터 데이터를 수신하기 위한 인터페이스로서 역할한다. 예를 들어, 통신 서브시스템(1624)은 컴퓨터 시스템(1600)이 인터넷을 통해 하나 이상의 디바이스들에 연결하는 것을 가능하게 할 수 있다. 일부 실시예들에 있어서, 통신 서브시스템(1624)은 (예를 들어, 셀룰러 전화기 기술, 진보된 데이터 네트워크 기술, 예컨대 3G, 4G 또는 EDGE(enhanced data rates for global evolution), WiFi(IEEE 802.11 패밀리 표준들, 또는 다른 모바일 통신 기술들, 또는 이들의 임의의 조합)을 사용하여) 무선 음성 및/또는 데이터 네트워크들에 액세스하기 위한 라디오 주파수(radio frequency; RF) 트랜시버 구성요소들, 위성 위치확인 시스템(global positioning system; GPS) 수신기 구성요소들, 및/또는 다른 구성요소들을 포함할 수 있다. 일부 실시예들에 있어서, 통신 서브시스템(1624)은 무선 인터페이스에 더하여 또는 그 대신에 유선 네트워크 연결(예를 들어, 이더넷)을 제공할 수 있다.Communications subsystem 1624 provides an interface to other computer systems and networks. Communications subsystem 1624 serves as an interface for transmitting data from computer system 1600 to and receiving data from other systems. For example, communications subsystem 1624 can enable computer system 1600 to connect to one or more devices over the Internet. In some embodiments, communication subsystem 1624 may be configured (e.g., cellular telephone technology, advanced data network technology such as 3G, 4G or enhanced data rates for global evolution (EDGE), WiFi (IEEE 802.11 family of standards) radio frequency (RF) transceiver components for access to wireless voice and/or data networks, satellite positioning systems (using other mobile communication technologies, or any combination thereof) global positioning system (GPS) receiver components, and/or other components. In some embodiments, communication subsystem 1624 can provide a wired network connection (eg, Ethernet) in addition to or instead of a wireless interface.

일부 실시예들에 있어서, 통신 서브시스템(1624)은 또한 컴퓨터 시스템(1600)을 사용할 수 있는 하나 이상의 사용자들을 대표하여 구조화된 및/또는 구조화되지 않은 데이터 피드들(1626), 이벤트 스트림들(1628), 이벤트 업데이트들(1630), 및 그와 유사한 것의 형태의 입력 통신을 수신할 수 있다.In some embodiments, communication subsystem 1624 also includes structured and/or unstructured data feeds 1626, event streams 1628 on behalf of one or more users who may use computer system 1600. ), event updates 1630, and the like.

예로서, 통신 서브시스템(1624)은 소셜 네트워크들 및/또는 다른 통신 서비스들의 사용자들로부터의 실-시간 데이터 피드들(1626) 예컨대 Twitter® 피드들, Facebook® 업데이트들, 웹 피드들 예컨대 리치 사이트 서머리(Rich Site Summary; RSS) 피드들, 및/또는 하나 이상의 제3 자 정보 소스들로부터의 실-시간 업데이트들을 수신하도록 구성될 수 있다.By way of example, communication subsystem 1624 may send real-time data feeds 1626 from users of social networks and/or other communication services such as Twitter® feeds, Facebook® updates, web feeds such as rich site Rich Site Summary (RSS) feeds, and/or real-time updates from one or more third party information sources.

추가적으로, 통신 서브시스템(1624)은 또한, 사실상 명시적인 종료를 갖지 않는 제한이 없거나 또는 연속적일 수 있는 실-시간 이벤트들 및/또는 이벤트 업데이트들(1630)의 이벤트 스트림들(1628)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예들은, 예를 들어, 센서 데이터 애플리케이션들, 금융 시세표시기들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것을 포함할 수 있다. Additionally, communication subsystem 1624 may also include event streams 1628 of real-time events and/or event updates 1630 that may be unlimited or continuous, with no explicit end in nature. may be configured to receive data in the form of continuous data streams that may be Examples of applications that generate continuous data include, for example, sensor data applications, financial tickers, network performance measurement tools (eg network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, and the like.

통신 서브시스템(1624)은 또한, 구조화되거나 및/또는 구조화되지 않은 데이터 피드들(1626), 이벤트 스트림들(1628), 이벤트 업데이트들(1630), 및 유사한 것을 컴퓨터 시스템(1600)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신할 수 있는 하나 이상의 데이터베이스들로 출력하도록 구성될 수 있다.Communications subsystem 1624 also includes structured and/or unstructured data feeds 1626, event streams 1628, event updates 1630, and the like coupled to computer system 1600. It can be configured to output to one or more databases that can communicate with one or more streaming data source computers.

컴퓨터 시스템(1600)은, 핸드헬드 휴대용 디바이스(예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 웨어러블 디바이스(예를 들어, Google Glass® 머리 착용형 디스플레이), PC, 워크스테이션, 메인프레임, 키오스크, 서버 랙, 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 유형들 중 임의의 유형일 수 있다.Computer system 1600 includes a handheld portable device (eg, iPhone® cellular phone, iPad® computing tablet, PDA), wearable device (eg, Google Glass® head-worn display), PC, workstation, It may be any of a variety of types including mainframes, kiosks, server racks, or any other data processing system.

컴퓨터들 및 네트워크들의 계속해서 변화하는 성질에 기인하여, 도면에 도시된 컴퓨터 시스템(1600)의 설명은 오로지 특정한 일 예로서만 의도된다. 도면에 도시된 시스템보다 더 많거나 또는 더 적은 구성요소들을 갖는 다수의 다른 구성들이 가능하다. 예를 들어, 커스텀화된 하드웨어가 또한 사용될 수 있거나 및/또는 특정 요소들이 하드웨어, 펌웨어, (애플릿(applet)들을 포함하는) 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 추가로, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다. 본원에 제공되는 개시 및 교시들에 기초하여, 당업자는 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들을 인식할 것이다.Due to the ever-changing nature of computers and networks, the description of computer system 1600 shown in the figure is intended as a specific example only. Many other configurations with more or fewer components than the system shown in the figures are possible. For example, customized hardware may also be used and/or certain elements may be implemented in hardware, firmware, software (including applets), or combinations thereof. Additionally, connectivity to other computing devices, such as network input/output devices, may be used. Based on the disclosure and teachings provided herein, those skilled in the art will recognize other ways and/or methods for implementing the various embodiments.

본 개시의 특정 실시예들이 설명되었지만, 다양한 수정예들, 대안예들, 대안적인 구성들, 및 등가물들이 또한 본 개시의 범위 내에 포괄된다. 본 개시의 실시예들은 정확한 특정 데이터 프로세싱 환경들 내에서 동작하도록 제한되는 것이 아니라, 복수의 데이터 프로세싱 환경들 내에서 자유롭게 동작할 수 있다. 추가적으로, 본 개시의 실시예들이 특정한 일련의 트랜잭션(transaction)들 및 단계들을 사용하여 설명되었지만, 본 개시의 범위가 설명된 일련의 트랜잭션들 및 단계들로 한정되지 않는다는 것이 당업자들에게 명백할 것이다. 이상에서 설명된 실시예들의 다양한 특징들 및 측면들이 개별적으로 또는 함께 사용될 수 있다.Although particular embodiments of this disclosure have been described, various modifications, alternatives, alternative configurations, and equivalents are also encompassed within the scope of this disclosure. Embodiments of the present disclosure are not limited to operating within precise particular data processing environments, but are free to operate within a plurality of data processing environments. Additionally, although embodiments of the present disclosure have been described using a specific series of transactions and steps, it will be apparent to those skilled in the art that the scope of the present disclosure is not limited to the described series of transactions and steps. Various features and aspects of the embodiments described above may be used individually or together.

추가로, 본 개시의 실시예들이 하드웨어 및 소프트웨어의 특정한 조합을 사용하여 설명되었지만, 하드웨어 및 소프트웨어의 다른 조합들이 또한 본 개시의 범위 내에 속한다는 것이 이해되어야 한다. 본 개시의 실시예들은 오로지 하드웨어로만, 또는 오로지 소프트웨어로만, 또는 이들의 조합들을 사용하여 구현될 수 있다. 본원에서 설명된 다양한 프로세스들은 동일한 프로세서 또는 임의의 조합의 상이한 프로세서들 상에 구현될 수 있다. 따라서, 구성요소들 또는 모듈들이 특정 동작들을 수행하도록 구성된 것으로 설명되는 경우, 이러한 구성은, 예를 들어, 동작을 수행하기 위한 전자 회로들을 설계함으로써, 동작을 수행하기 위하여 프로그램가능 전자 회로들(예컨대 마이크로프로세서들)을 프로그래밍함으로써, 또는 이들의 임의의 조합에 의해 달성될 수 있다. 프로세스들은 비제한적으로 프로세스-간 통신을 위한 통상적을 기술을 포함하는 다양한 기술들을 사용하여 통신할 수 있으며, 프로세스들의 상이한 쌍들이 상이한 기술들을 사용할 수 있거나, 또는 프로세스들의 동일한 쌍이 상이한 시점에 상이한 기술들을 사용할 수 있다.Additionally, although embodiments of the present disclosure have been described using a specific combination of hardware and software, it should be understood that other combinations of hardware and software are also within the scope of the present disclosure. Embodiments of the present disclosure may be implemented using only hardware, or only software, or combinations thereof. The various processes described herein may be implemented on the same processor or different processors in any combination. Thus, where components or modules are described as being configured to perform particular operations, such configuration may include programmable electronic circuits (eg, by designing electronic circuits to perform the operations) to perform the operations. microprocessors), or any combination thereof. Processes may communicate using a variety of technologies, including but not limited to conventional techniques for inter-process communication, different pairs of processes may use different technologies, or the same pair of processes may use different technologies at different times. can be used

따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 것으로서 간주되어야 한다. 그러나, 청구항들에 기술되는 바와 같은 광범위한 사상 및 범위로부터 벗어나지 않고 이에 대한 추가들, 대체들, 삭제들, 및 다른 수정들 및 변화들이 이루이질 수 있다는 것이 명백할 것이다. 따라서, 특정 개시 실시예들이 설명되었지만, 이들은 제한적인 것으로 의도되지 않는다. 다양한 수정예들 및 등가물들이 다음의 청구항들의 범위 내에 속한다.Accordingly, the present specification and drawings are to be regarded in an illustrative rather than a restrictive sense. However, it will be apparent that additions, substitutions, deletions, and other modifications and changes may be made thereto without departing from the broad spirit and scope as set forth in the claims. Thus, while specific disclosed embodiments have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.

개시된 실시예들을 설명하는 맥락에서(특히 다음의 청구항들의 맥락에서) 용어들 "일(a 및 an)"과 "상기(the)" 및 유사한 지시대상들의 사용은, 본원에서 달리 표시되거나 또는 문맥에 의해 명백히 모순되지 않는 한 단수형 및 복수형 둘 모두를 커버하는 것으로 해석되어야 한다. 용어들 "포함하는", "갖는", "구성되는", 및 "함유하는"은, 달리 언급되지 않는 한 개방적인 용어(즉, "포함하지만 이에 한정되지 않는")으로 해석되어야 한다. 용어 "연결되는"은, 어떤 개재물이 있는 경우에도, 부분적으로 또는 전체적으로 어떤 것 내에 포함되거나, 또는 이에 부착되거나, 또는 이와 함께 결합되는 것으로 해석되어야 한다. 본원에서 값들의 범위를 언급하는 것은, 본원에서 달리 표시되지 않는 한, 단지 범위 내에 속하는 각각의 개별 값을 개별적으로 참조하는 속기 방법으로서 역할하도록 의도되며, 각각의 개별적인 값은 마치 이것이 본원에서 개별적으로 언급되는 것과 같이 명세서에 통합된다. 본 명세서에서 설명된 모든 방법은, 본 명세서에서 달리 표시되지 않거나 문맥상 명백히 모순되지 않는 한 임의의 적절한 순서로 수행될 수 있다. 본원에서 제공되는 임의의 및 모든 예들 또는 예시적인 언어(예를 들어, "~와 같은")의 사용은 단지 본 개시의 실시예들을 더 양호하게 조명하도록 의도되며, 달리 청구되지 않는 한, 본 개시의 범위에 제한을 두지 않는다. 본 명세서의 어떤 언어도 본 개시의 실시에 필수적인 임의의 청구되지 않은 요소를 나타내는 것으로 해석되지 않아야 한다.Use of the terms "a and an" and "the" and similar referents in the context of describing disclosed embodiments (particularly in the context of the claims that follow) may be used herein, as otherwise indicated or in context. should be construed to cover both the singular and the plural unless clearly contradicted by The terms “comprising,” “having,” “comprising,” and “including” are to be interpreted as open-ended terms (ie, “including but not limited to”) unless otherwise stated. The term "linked to" should be construed as partially or wholly contained within, attached to, or bonded with something, even if there are any inclusions. Recitation of ranges of values herein, unless otherwise indicated herein, are merely intended to serve as a shorthand method of referring individually to each individual value falling within the range, each individual value as if it were individually referred to herein. incorporated into the specification as such. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. Any and all examples or use of exemplary language (eg, “such as”) provided herein is merely intended to better illuminate embodiments of the present disclosure, and unless otherwise claimed, the present disclosure do not limit the scope of No language in the specification should be construed as indicating any non-claimed element essential to the practice of the disclosure.

구절 "X, Y, 또는 Z 중 적어도 하나"와 같은 이접적 언어는, 특별히 달리 명시되지 않는 한, 항목, 용어 등이 X, Y, 또는 Z 중 하나, 또는 이들의 조합(예를 들어, X, Y, 및/또는 Z)일 수 있음을 나타내기 위해 일반적으로 사용되는 문맥 내에서 이해되도록 의도된다. 따라서, 그러한 이접적 언어는 일반적으로, 특정 실시예가 각각 존재하기 위해 X 중 적어도 하나, Y 중 적어도 하나, 또는 Z 중 적어도 하나가 필요하다는 것을 의미하도록 의도되지 않는다.Disjunctive language, such as the phrase "at least one of X, Y, or Z", unless specifically stated otherwise, means that an item, term, etc. is one of X, Y, or Z, or a combination thereof (e.g., X , Y, and/or Z). Accordingly, such disjunctive language is generally not intended to imply that at least one of X, at least one of Y, or at least one of Z is required for each specific embodiment to be present.

본 개시를 수행하기 위해 알려진 최적 모드를 포함하여 본 개시의 선호되는 실시예들이 본원에서 설명된다. 이러한 선호되는 실시예들의 변형들은 이상의 설명을 숙독할 때 당업자들에게 명백해질 것이다. 당업자들은 적절한 바와 같이 이러한 변형들을 이용할 수 있어야 하며, 본 개시는 본원에서 구체적으로 설명된 것과 달리 실시될 수 있다. 따라서, 본 개시는 적용가능한 법률에 의해 허용되는 바와 같이 본원에 첨부된 청구항들에 언급된 주제의 모든 수정예들 및 등가물들을 포함한다. 또한, 이의 모든 가능한 변형예들에서 이상에서 설명된 요소들의 임의의 조합은 따라서 본원에서 달리 표시되지 않는 한 본 개시에 의해 포괄된다. Preferred embodiments of the present disclosure are described herein, including the best known mode for carrying out the present disclosure. Variations of these preferred embodiments will become apparent to those skilled in the art upon reading the above description. Skilled artisans should be able to employ such variations as appropriate, and the present disclosure may be practiced otherwise than specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Also, any combination of the elements described above in all possible variations thereof is thus encompassed by this disclosure unless otherwise indicated herein.

본원에서 인용된 간행물들, 특허 출원들 및 특허들을 포함하는 모든 참조문헌들은, 이로써 각각의 참조문헌이 참조로서 포함되도록 개별적으로 그리고 구체적으로 표시되고 그 전체가 본원에서 기술된 것과 동일한 정도로 참조로서 본원에 포함된다.All references, including publications, patent applications and patents, cited herein are individually and specifically indicated to be incorporated by reference, and each reference is hereby incorporated by reference to the same extent as if it were set forth herein in its entirety. included in

이상의 명세서에서, 본 개시의 측면들이 본 개시의 특정 실시예들을 참조하여 설명되었지만, 당업자들은 본 개시가 이에 한정되지 않는다는 것을 인식할 것이다. 이상에서 설명된 개시내용의 다양한 특징들 및 측면들이 개별적으로 또는 함께 사용될 수 있다. 추가로, 실시예들은 본 명세서의 광범위한 사상 및 범위로부터 벗어나지 않고 본원에서 설명된 것들을 넘어 임의의 수의 환경들 및 애플리케이션들에서 사용될 수 있다. 따라서, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로서 간주되어야 한다.Although aspects of the present disclosure have been described in the above specification with reference to specific embodiments of the present disclosure, those skilled in the art will recognize that the present disclosure is not limited thereto. The various features and aspects of the disclosure described above may be used individually or together. Additionally, the embodiments may be used in any number of environments and applications beyond those described herein without departing from the broad spirit and scope of this disclosure. Accordingly, the present specification and drawings are to be regarded as illustrative rather than restrictive.

다음의 조항들은 개시된 구현예의 실시예들을 설명한다:The following clauses describe embodiments of the disclosed implementation:

조항 1: 방법으로서,Clause 1: As a method,

컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;

상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;

상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;

상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;

상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;

상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계; generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;

상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및receiving, by the computer system, a restore request to create a restore volume; and

상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 방법.creating, by the computer system, the recovery volume from the checkpoint.

조항 2: 조항 1에 있어서, 상기 복수의 델타들을 생성하는 단계는,Clause 2: The method of clause 1, wherein generating the plurality of deltas comprises:

상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;generating a comparison between the second snapshot and the first snapshot;

상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and

상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 방법.generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.

조항 3: 조항 1에 있어서, 상기 제1 스냅샷을 생성하는 단계는,Clause 3: The method according to clause 1, wherein creating the first snapshot comprises:

논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;corresponding to a logical time, suspending input/output operations for the plurality of partitions;

상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및generating a plurality of block images describing volume data in the plurality of partitions; and

상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 방법.and enabling input/output operations to the plurality of partitions.

조항 4: 조항 1에 있어서, 상기 복원 요청은 페일오버(failover) 요청이며, 상기 방법은,Clause 4: The method according to clause 1, wherein the restore request is a failover request, the method comprising:

상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및enabling the recovery volume to be created in the second geographic region; and

상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 방법.and enabling input/output operations using the recovery volume in the second geographic area.

조항 5: 조항 1에 있어서, 상기 복원 요청은 페일백(failback) 요청이며, 상기 방법은,Clause 5: The method according to clause 1, wherein the restore request is a failback request, and the method comprises:

상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;creating the recovery volume in the second geographic region;

페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및enabling a failback volume to be created in the first geographic region; and

상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 방법.restoring the first snapshot data in the first geographic region.

조항 6: 조항 1에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는, Clause 6: The method of clause 1, wherein transmitting the plurality of delta data sets comprises:

상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계; generating a plurality of chunk objects from the plurality of delta data sets;

상기 복수의 델타들을 전송하는 단계; 및transmitting the plurality of deltas; and

상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 방법.and sending the plurality of chunk objects to the object storage system.

조항 7: 조항 6에 있어서,Article 7: For the purpose of Article 6,

상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,the checkpoint includes a manifest of the object metadata;

상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 방법.wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.

조항 8: 조항 7에 있어서, 상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 방법.Clause 8: The clause 7, wherein aggregating the object metadata comprises updating the manifest to reflect a plurality of differences between the plurality of delta data sets and the first snapshot data. , method.

조항 9: 컴퓨터 시스템으로서,Article 9: As a computer system,

하나 이상의 프로세서들;one or more processors;

상기 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 상기 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 상기 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하며, 상기 단계들은,a memory in communication with the one or more processors, the memory configured to store computer-executable instructions, wherein executing the computer-executable instructions causes the one or more processors to perform the steps of: The steps are

컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;

상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;

상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;

상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;

상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;

상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계; generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;

상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및receiving, by the computer system, a restore request to create a restore volume; and

상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터 시스템.creating, by the computer system, the restore volume from the checkpoint.

조항 10: 조항 9에 있어서, 상기 복수의 델타들을 생성하는 단계는,Clause 10: The method of clause 9, wherein generating the plurality of deltas comprises:

상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;generating a comparison between the second snapshot and the first snapshot;

상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and

상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터 시스템.generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.

조항 11: 조항 9에 있어서, 상기 제1 스냅샷을 생성하는 단계는,Clause 11: The method according to clause 9, wherein creating the first snapshot comprises:

논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;corresponding to a logical time, suspending input/output operations for the plurality of partitions;

상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및generating a plurality of block images describing volume data in the plurality of partitions; and

상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 컴퓨터 시스템.enabling input/output operations to the plurality of partitions.

조항 12: 조항 9에 있어서, 상기 복원 요청은 페일오버 요청이며, 상기 방법은,Clause 12: The method according to clause 9, wherein the restore request is a failover request, the method comprising:

상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및enabling the recovery volume to be created in the second geographic region; and

상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 컴퓨터 시스템.enabling input/output operations using the recovery volume in the second geographic region.

조항 13: 조항 9에 있어서, 상기 복원 요청은 페일백 요청이며, 상기 방법은,Clause 13: The method according to clause 9, wherein the restore request is a failback request, the method comprising:

상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;creating the recovery volume in the second geographic region;

페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및enabling a failback volume to be created in the first geographic region; and

상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 컴퓨터 시스템.restoring the first snapshot data in the first geographic region.

조항 14: 조항 9에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는, Clause 14: The method of clause 9, wherein transmitting the plurality of delta data sets comprises:

상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계; generating a plurality of chunk objects from the plurality of delta data sets;

상기 복수의 델타들을 전송하는 단계; 및transmitting the plurality of deltas; and

상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터 시스템.and transferring the plurality of chunk objects to the object storage system.

조항 15; 조항 14에 있어서, 상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,Article 15; The method according to clause 14, wherein the checkpoint includes a manifest of the object metadata,

상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터 시스템.wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.

조항 16: 조항 15에 있어서, 상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 컴퓨터 시스템.Clause 16: The clause 16 of clause 15, wherein aggregating the object metadata comprises updating the manifest to reflect a plurality of differences between the plurality of delta data sets and the first snapshot data. , computer system.

조항 17: 실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 컴퓨터-판독가능 매체로서, 상기 단계들은,Clause 17: A computer-readable medium storing computer-executable instructions that, when executed, cause one or more processors of a computer system to perform the steps of:

컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;

상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;

상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;

상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;

상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;

상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계; generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;

상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및receiving, by the computer system, a restore request to create a restore volume; and

상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.creating, by the computer system, the restore volume from the checkpoint.

조항 18: 조항 17에 있어서, 상기 복수의 델타들을 생성하는 단계는, Clause 18: The method of clause 17, wherein generating the plurality of deltas comprises:

상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;generating a comparison between the second snapshot and the first snapshot;

상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and

상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터-판독가능 저장 매체.generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.

조항 19: 조항 17에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는, Clause 19: The method of clause 17, wherein transmitting the plurality of delta data sets comprises:

상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계; generating a plurality of chunk objects from the plurality of delta data sets;

상기 복수의 델타들을 전송하는 단계; 및transmitting the plurality of deltas; and

상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.and transmitting the plurality of chunk objects to the object storage system.

조항 20: 조항 19에 있어서,Article 20: For the purposes of Article 19,

상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,the checkpoint includes a manifest of the object metadata;

상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터-판독가능 저장 매체.wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.

Claims (20)

방법으로서,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 방법.
As a method,
creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;
sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;
creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;
generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;
sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;
generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;
receiving, by the computer system, a restore request to create a restore volume; and
creating, by the computer system, the recovery volume from the checkpoint.
청구항 1에 있어서,
상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 방법.
The method of claim 1,
Generating the plurality of deltas,
generating a comparison between the second snapshot and the first snapshot;
based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and
generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.
청구항 1에 있어서,
상기 제1 스냅샷을 생성하는 단계는,
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 방법.
The method of claim 1,
Creating the first snapshot,
corresponding to a logical time, suspending input/output operations for the plurality of partitions;
generating a plurality of block images describing volume data in the plurality of partitions; and
and enabling input/output operations to the plurality of partitions.
청구항 1에 있어서,
상기 복원 요청은 페일오버(failover) 요청이며, 상기 방법은,
상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 방법.
The method of claim 1,
The restoration request is a failover request, and the method comprises:
enabling the recovery volume to be created in the second geographic region; and
and enabling input/output operations using the recovery volume in the second geographic area.
청구항 1에 있어서,
상기 복원 요청은 페일백(failback) 요청이며, 상기 방법은,
상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 방법.
The method of claim 1,
The restoration request is a failback request, and the method comprises:
creating the recovery volume in the second geographic region;
enabling a failback volume to be created in the first geographic region; and
restoring the first snapshot data in the first geographic region.
청구항 1에 있어서,
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 방법.
The method of claim 1,
Transmitting the plurality of delta data sets comprises:
generating a plurality of chunk objects from the plurality of delta data sets;
transmitting the plurality of deltas; and
and sending the plurality of chunk objects to the object storage system.
청구항 6에 있어서,
상기 체크포인트는 상기 객체 메타데이터의 매니페스트(manifest)를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 방법.
The method of claim 6,
the checkpoint includes a manifest of the object metadata;
wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.
청구항 7에 있어서,
상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 방법.
The method of claim 7,
wherein aggregating the object metadata comprises updating the manifest to reflect a plurality of differences between the plurality of delta data sets and the first snapshot data.
컴퓨터 시스템으로서,
하나 이상의 프로세서들;
상기 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 상기 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 상기 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하며, 상기 단계들은,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터 시스템.
As a computer system,
one or more processors;
a memory in communication with the one or more processors, the memory configured to store computer-executable instructions, wherein executing the computer-executable instructions causes the one or more processors to perform the steps of: The steps are
creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;
sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;
creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;
generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;
sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;
generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;
receiving, by the computer system, a restore request to create a restore volume; and
creating, by the computer system, the restore volume from the checkpoint.
청구항 9에 있어서,
상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터 시스템.
The method of claim 9,
Generating the plurality of deltas,
generating a comparison between the second snapshot and the first snapshot;
based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and
generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.
청구항 9에 있어서,
상기 제1 스냅샷을 생성하는 단계는,
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 컴퓨터 시스템.
The method of claim 9,
Creating the first snapshot,
corresponding to a logical time, suspending input/output operations for the plurality of partitions;
generating a plurality of block images describing volume data in the plurality of partitions; and
enabling input/output operations to the plurality of partitions.
청구항 9에 있어서,
상기 복원 요청은 페일오버 요청이며, 상기 방법은,
상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 컴퓨터 시스템.
The method of claim 9,
The restoration request is a failover request, and the method comprises:
enabling the recovery volume to be created in the second geographic region; and
enabling input/output operations using the recovery volume in the second geographic region.
청구항 9에 있어서,
상기 복원 요청은 페일백 요청이며, 상기 방법은,
상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 컴퓨터 시스템.
The method of claim 9,
The restoration request is a failback request, and the method comprises:
creating the recovery volume in the second geographic region;
enabling a failback volume to be created in the first geographic region; and
restoring the first snapshot data in the first geographic region.
청구항 9에 있어서,
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터 시스템.
The method of claim 9,
Transmitting the plurality of delta data sets comprises:
generating a plurality of chunk objects from the plurality of delta data sets;
transmitting the plurality of deltas; and
and transferring the plurality of chunk objects to the object storage system.
청구항 14에 있어서,
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터 시스템.
The method of claim 14,
the checkpoint includes a manifest of the object metadata;
wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.
청구항 15에 있어서,
상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 컴퓨터 시스템.
The method of claim 15
wherein aggregating the object metadata comprises updating the manifest to reflect a plurality of differences between the plurality of delta data sets and the first snapshot data.
실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 컴퓨터-판독가능 매체로서, 상기 단계들은,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
A computer-readable medium storing computer-executable instructions that, when executed, cause one or more processors of a computer system to perform the steps of:
creating, by a computer system, a first snapshot of a block volume at a first geographic location at a first logical time, the block volume comprising a plurality of partitions;
sending, by the computer system, first snapshot data corresponding to the first snapshot to an object storage system in a second geographic area;
creating, by the computer system, a second snapshot of the block volume at the first geographic location and at a second logical time;
generating, by the computer system, a plurality of deltas, each delta of the plurality of deltas corresponding to one of the plurality of partitions;
sending, by the computer system, a plurality of delta data sets corresponding to the plurality of deltas to the object storage system in the second geographic region;
generating, by the computer system, a checkpoint at least in part by aggregating object metadata associated with the first snapshot and the plurality of deltas;
receiving, by the computer system, a restore request to create a restore volume; and
creating, by the computer system, the restore volume from the checkpoint.
청구항 17에 있어서,
상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
The method of claim 17
Generating the plurality of deltas,
generating a comparison between the second snapshot and the first snapshot;
based on the comparison, determining modified data corresponding to changes between the first snapshot data and second snapshot data corresponding to the second snapshot; and
generating the plurality of deltas, the plurality of deltas describing modified data for the plurality of partitions.
청구항 17에 있어서,
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
The method of claim 17
Transmitting the plurality of delta data sets comprises:
generating a plurality of chunk objects from the plurality of delta data sets;
transmitting the plurality of deltas; and
and transmitting the plurality of chunk objects to the object storage system.
청구항 19에 있어서,
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터-판독가능 저장 매체.
The method of claim 19
the checkpoint includes a manifest of the object metadata;
wherein the object metadata includes chunk pointers corresponding to the plurality of chunk objects in the object storage system.
KR1020237018995A 2020-11-06 2021-09-29 Asynchronous cross-region block volume replication KR20230097184A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/091,635 US11537633B2 (en) 2020-11-06 2020-11-06 Asynchronous cross-region block volume replication
US17/091,635 2020-11-06
PCT/US2021/052600 WO2022098450A1 (en) 2020-11-06 2021-09-29 Asynchronous cross-region block volume replication

Publications (1)

Publication Number Publication Date
KR20230097184A true KR20230097184A (en) 2023-06-30

Family

ID=78500701

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237018995A KR20230097184A (en) 2020-11-06 2021-09-29 Asynchronous cross-region block volume replication

Country Status (6)

Country Link
US (2) US11537633B2 (en)
EP (1) EP4241158A1 (en)
JP (1) JP2023548373A (en)
KR (1) KR20230097184A (en)
CN (1) CN116457760A (en)
WO (1) WO2022098450A1 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021175419A1 (en) * 2020-03-04 2021-09-10 Huawei Technologies Co., Ltd. Device and method for fast backup
US11693828B2 (en) 2021-03-22 2023-07-04 Sap Se Real-time data replication in a multiple availability zone cloud platform
US11687565B2 (en) * 2021-03-22 2023-06-27 Sap Se Asynchronous data replication in a multiple availability zone cloud platform
US11683201B2 (en) * 2021-10-22 2023-06-20 Vmware, Inc. Fast provisioning of machines using network cloning
US11716377B2 (en) 2021-10-22 2023-08-01 Vmware, Inc. Fast provisioning of machines using network cloning
US11822432B2 (en) * 2021-10-27 2023-11-21 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11797236B2 (en) 2021-10-27 2023-10-24 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11914866B2 (en) 2021-10-27 2024-02-27 EMC IP Holding Company LLC Optimized one pass delta streaming filter
US11899537B2 (en) 2021-10-27 2024-02-13 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11853166B2 (en) * 2022-01-07 2023-12-26 Dell Products L.P. Storage system recovery without data retransmission
CN116737466B (en) * 2023-08-15 2023-11-03 中移(苏州)软件技术有限公司 Backup processing method, device, system, electronic equipment and readable storage medium
KR102671816B1 (en) * 2023-12-18 2024-06-03 주식회사 로그프레소 Method for Recording Big Data in Object Storage and Querying the Recorded Big Data

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8176272B2 (en) 2008-09-04 2012-05-08 International Business Machines Corporation Incremental backup using snapshot delta views
US9727262B2 (en) * 2015-12-28 2017-08-08 Netapp, Inc. Low overhead resynchronization snapshot creation and utilization
US10831465B2 (en) * 2016-02-12 2020-11-10 Nutanix, Inc. Virtualized file server distribution across clusters
US11327846B2 (en) 2017-09-28 2022-05-10 Oracle International Corporation System and method for backup and recovery of services in a cloud computing environment
US11023157B2 (en) * 2018-04-30 2021-06-01 Amazon Technologies, Inc. Intermediary duplication to facilitate copy requests in distributed storage systems
US20220083245A1 (en) * 2019-07-18 2022-03-17 Pure Storage, Inc. Declarative provisioning of storage
US11036594B1 (en) * 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
US11016671B2 (en) * 2019-09-27 2021-05-25 Amazon Technologies, Inc. Snapshot block storage path structure wherein identification of blocks that are identical between two snapshots are determined without performing block by block comparison between the two snapshots
US11537553B2 (en) * 2020-03-10 2022-12-27 EMC IP Holding Company LLC Managing snapshots stored locally in a storage system and in cloud storage utilizing policy-based snapshot lineages

Also Published As

Publication number Publication date
JP2023548373A (en) 2023-11-16
WO2022098450A1 (en) 2022-05-12
US20230029465A1 (en) 2023-02-02
EP4241158A1 (en) 2023-09-13
US11537633B2 (en) 2022-12-27
US20220147541A1 (en) 2022-05-12
US12001453B2 (en) 2024-06-04
CN116457760A (en) 2023-07-18

Similar Documents

Publication Publication Date Title
US12001453B2 (en) Asynchronous cross-region block volume replication
JP7379599B2 (en) File system hierarchy mirroring across cloud datastores
US11079966B2 (en) Enhanced soft fence of devices
CN114341792B (en) Data partition switching between storage clusters
US10073747B2 (en) Reducing recovery time in disaster recovery/replication setup with multitier backend storage
US20130091376A1 (en) Self-repairing database system
US20200026786A1 (en) Management and synchronization of batch workloads with active/active sites using proxy replication engines
US9632724B1 (en) Point-in-time copy with chain cloning
US20200167250A1 (en) Asynchronous remote mirror cloud archival
US11799839B2 (en) Cross-regional replication of keys
US10289322B2 (en) Delayed consistent point-in-time copy from a secondary volume of a consistent asynchronous mirror copy
US20200081629A1 (en) Performing a recovery copy command to restore a safeguarded copy backup to a production volume
US20220382637A1 (en) Snapshotting hardware security modules and disk metadata stores
US20200073771A1 (en) Determining which target is most ahead in a multi-target mirroring environment
US10528593B2 (en) Consistent point-in-time copy of a consistent asynchronous mirror target without pausing a consistent asynchronous mirror copy
WO2022250826A1 (en) Managing keys across a series of nodes, based on snapshots of logged client key modifications
CN118276783A (en) Data partition switching between storage clusters