KR20230097184A - Asynchronous cross-region block volume replication - Google Patents
Asynchronous cross-region block volume replication Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/263—Network 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
관련 출원들에 대한 상호 참조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
일부 실시예들에서, 제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
일부 실시예들에서, 비동기적 복제(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
일부 실시예들에서, 스냅샷 생성(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
일부 실시예들에서, 스냅샷 생성(142)은 파티션 단위로 블록 볼륨 시스템(122)에 저장된 데이터의 이미지를 생성하는 것을 포함할 수 있다. 블록 볼륨 시스템(122)이 하나 이상의 파티션들에 데이터를 저장하는 경우, 스냅샷 생성(142)은, 스냅샷 생성이 하나의 파티션의 입력-출력 동작을 방해하지 않도록 파티션 이미지의 생성을 스케줄링할 수 있다. 스냅샷 생성(142)은, 이미징되고 있는 파티션 이외의 파티션들의 정상 입력-출력 동작들의 중단을 잠재적으로 회피하면서 블록 볼륨 시스템에 포함된 모든 파티션의 이미지들을 생성하고 컴파일(compile)할 수 있다. In some embodiments, creating snapshot 142 may include creating an image of data stored in
스냅샷은 특정 논리적 시간에서 데이터의 이미지를 기록할 수 있으며, 여기서 논리적 시간은 스냅샷 생성(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
일부 실시예들에서, 델타 생성(144)은, 적어도 부분적으로 비동기적 복제(140)가 변경되지 않은 데이터를 전송하지 않고 새로운 또는 수정된 데이터를 제2 데이터 센터(130)에 전송하는 것을 가능하게 함으로써 비동기적 복제(140)를 가능하게 할 수 있다. 일부 경우들에서, 델타는 제1 스냅샷과 제2 스냅샷 사이의 블록 볼륨 시스템(122)의 파티션에 저장된 데이터의 변경들을 설명할 수 있다. 예를 들어, 델타 생성(144)은 제2 스냅샷과 제1 스냅샷을 비교할 수 있으며, 추가되거나, 제거되거나, 수정되거나 하는 등의 블록들을 확인할 수 있다. 이러한 방식으로, 델타들은, 2개의 연속적인 스냅샷들 사이에 제거된 데이터를 또한 설명할 수 있다. In some embodiments,
일부 경우들에서, 델타는 고유 식별자뿐만 아니라 메모리 포인터들의 리스트를 포함하는 논리적 구조체일 수 있다. 메모리 포인터는, 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,
일부 실시예들에서, 비동기적 복제(140)는, 블록 볼륨 시스템(122)의 파티션들에 대응하는 델타들이 생성된 이후에 체크포인트를 생성할 수 있다. 일부 실시예들에서, 체크포인트 생성(148) 서브-시스템은, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이, 델타들을 집성하고 집성된 변경들을 이전에 생성된 체크포인트에 적용함으로써 체크포인트를 생성할 수 있다. In some embodiments, asynchronous replication 140 may create a checkpoint after deltas corresponding to partitions of
제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
도 2는 하나 이상의 실시예들에 따른 비동기적 블록 볼륨 복제를 위한 예시적인 기술(200)을 예시한다. 이상에서 설명된 바와 같이, 비동기적 복제는, 사용자 데이터가 단일 백업 이미지로서가 아니라 증분 단위들로 소스 시스템으로부터 목적지 시스템으로 전송되는 것을 가능하게 할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)는, 입력-출력(input-output; I/O) 동작들(210)을 통해 사용자로부터 수신되고 사용자에게 제공될 수 있는 데이터를 저장할 수 있다. 따라서, 수신된 데이터는 블록 볼륨 시스템(122)의 하나 이상의 구성 파티션들(220)에 저장될 수 있다. 비동기적 복제 시스템들(예를 들어, 도 1의 비동기적 복제(140))은 이하에서 설명되는 하나 이상의 프로세스들에 의해 블록 볼륨 시스템(122)으로부터의 사용자 데이터를 복제하여 데이터 저장부(132)로 송신할 수 있다. 2 illustrates an
일부 실시예들에서, 사용자 데이터는 제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
일부 경우들에서, 제1 스냅샷(230)은 블록 볼륨 시스템(122)에 저장된 사용자 데이터의 비동기적 복제의 가장 첫 번째 구현이다. 이러한 경우들에서, 제1 스냅샷(230)에 의해 표현되는 전체 데이터 세트는 데이터 저장부(132)로 전송될 수 있다. 이러한 방식으로, 제1 스냅샷(130)은, 적어도, 메타데이터(예를 들어, 이하에서 설명되는 바와 같은 매니페스트) 및 사용자 데이터의 레코드가 소스 시스템으로부터 목적지 시스템으로 전송될 수 있다는 점(예를 들어, 동작(252))에서 백업과 유사할 수 있다. In some cases,
일부 실시예들에서, 제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
일부 실시예들에서, 비동기적 복제는 제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
제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
일단 생성되면, 델타들(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
도 3은 하나 이상의 실시예들에 따른 비동기적 복제에 의해 블록 볼륨 시스템을 복원하기 위한 예시적인 기술(300)을 예시한다. 이상에서 도 1 내지 도 2를 참조하여 설명된 비동기적 복제 시스템의 부분으로서, 목적지 시스템, 예를 들어, 제2 데이터 센터(130)는 소스 시스템(예를 들어, 도 1의 제1 데이터 센터(120))에 저장된 데이터의 복제본을 수신하고 유지할 수 있다. 일부 실시예들에서, 제2 데이터 센터(130)는 소스 시스템의 지리적 영역과는 상이한 지리적 영역(예를 들어, 영역 A가 아니라 영역 B)에 위치될 수 있다. 제2 데이터 센터(130)는, 복제된 데이터를 하나 이상의 데이터 객체들(310)로서 객체 저장부에 저장할 수 있는 데이터 저장부(132)를 포함할 수 있다. 3 illustrates an
일부 실시예들에서, 데이터 저장부(132)는 적어도 부분적으로 비동기적 복제 시스템의 구성에 기초하여 객체 저장 시스템으로 동작할 수 있어서, 비동기적 복제는 블록들이 아니라 청크 객체들로서 복제된 데이터를 저장하도록 구성될 수 있다. 즉, 일부 실시예들에서, 제2 데이터 센터(130)는 스탠바이 볼륨을 포함하여 스탠바이 볼륨에 대한 델타들의 직접 적용을 가능하게 할 수 있다. 데이터 저장부(132)가 스탠바이 볼륨을 포함하는 실시예들에서, 비동기적 복제는 블록들을 객체들로 변환(예를 들어, 데이터 변환(146))하지 않고 완료될 수 있다. In some embodiments,
일부 실시예들에서, 비동기적 복제는 제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
비동기적 복제의 부분으로서, 제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/
델타들(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
일부 실시예들에서, 제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,
일부 실시예들에서, 제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
도 4는 하나 이상의 실시예들에 따른 블록 볼륨 복제 메타데이터를 집성하기 예시적인 기술(400)을 예시한다. 비동기적 복제는, 데이터가 복제될 수 있는 시간 기간에 걸쳐 하나 이상의 구성 동작들(예를 들어, 스냅샷 생성, 델타 생성, 등)의 다수의 반복들을 포함할 수 있다. 이러한 경우들에서, 목적시 시스템(예를 들어, 도 1 내지 도 3의 제2 데이터 센터(130))을 업데이트하는 것은, 각각의 후속 반복에 의해 도입된 변경들을 반영하는 복제된 데이터에 대응하는 메모리 위치들의 업데이트된 레코드를 유지하는 것을 포함할 수 있다. 4 illustrates an
일부 실시예들에서, 비동기적 복제는 델타들(예를 들어, 도 3의 델타들(330)) 및 제1 체크포인트(320)에 대한 하나 이상의 동작들을 통해 제2 체크포인트(340)를 생성하는 것을 포함할 수 있다. 예를 들어, 제1 체크포인트(320)의 생성 이후에 소스 시스템으로부터의 다수의 델타들이 목적지 시스템에서 수신될 때, 메모리 위치들의 정확한 레코드는 제1 체크포인트만을 참조하는 것이 아니라 제1 체크포인트(320)에 적용되는 바와 같이 델타들에 의해 표시되는 변경들에 의해 더 양호하게 표현될 수 있다.In some embodiments, asynchronous replication generates
일부 실시예들에서, 제1 체크포인트(320)는 매니페스트(420)를 포함할 수 있다. 매니페스트(420)는 (예를 들어, 페일오버/페일백 동작들을 가이드하기 위한) 소스 시스템의 파티션에 대응할 수 있으며, 이와 같이, 다수의 매니페스트들은, 소스 시스템이 다수의 파티션들을 포함할 때 소스 시스템으로부터의 데이터의 비동기적 복제를 설명할 수 있다. 매니페스트(420)는 청크 포인터들(422)(예를 들어, 청크 포인터들(1-N), 여기서 'N"은 매니페스트(420)에 포함된 청크 포인터들(422)의 수를 참조하는 정수)을 포함할 수 있다. 청크 포인터들(422)은 (예를 들어, 데이터 저장부(132)에 청크 객체들로서 저장된) 복제된 데이터와 연관된 메모리 위치들을 설명할 수 있다. 제1 체크포인트(320)를 생성하는 것에 후속하여, 목적지 시스템은, 예를 들어, 스냅샷 생성 및 델타 생성의 반복에 의해 생성되는 바와 같은 다수의 델타들을 수신할 수 있다. 이러한 방식으로, 제2 체크포인트(340)를 생성하는 것은 델타들을 집성하는 것(예를 들어, 동작(450))을 포함할 수 있다. 예를 들어, 델타들을 집성하는 것은, 델타들이 생성된 스냅샷을 확인하기 위해 제1 체크포인트(320)의 식별자를 참조하는 것을 포함할 수 있다. 이러한 방식으로, 체크포인트 참조는, 수신된 델타들(스냅샷을 참조하는 식별자를 또한 포함함)이 매니페스트(420)에 이미 반영되었는지 여부의 결정을 가능하게 할 수 있다. In some embodiments,
일부 실시예들에서, 델타들은 업데이트된 매니페스트(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
일부 실시예들에서, 목적지 시스템, 예를 들어, 제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
일부 실시예들에서, 스탠바이 볼륨(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
일부 실시예들에서, 스탠바이 볼륨(560)은 페일오버/페일백 요청을 수신하는 것(예를 들어, 동작(522))에 응답하여 페일오버 볼륨 또는 페일백 볼륨을 생성하기 위해 사용될 수 있다. 일부 실시예들에서, 데이터 복원은, 페일오버 볼륨에 대한 교차 영역 복제를 가능하게 함으로써 데이터를 다시 소스 영역으로 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 요청이 페일백 요청일 때, 스탠바이 볼륨(560)이 클로닝되고 제1 데이터 센터(120)에서 복원될 수 있다(예를 들어, 동작(524)). 스탠바이 볼륨(560)을 클로닝하는 것은, 제1 데이터 센터(120)에서 페일백 볼륨(562)을 생성하고 데이터를 복원하는 것을 포함할 수 있다(예를 들어, 때때로 "클론을 하이드레이트하는 것(hydrating)"으로 지칭됨). 일부 실시예들에서, 복원된 데이터는, 제2 델타가 페일백 요청이 구현된 시점에서 완전히 적용된 경우에, 제2 델타(550)에 의해 표시된 수정들을 포함할 수 있다. 클로닝을 사용하여 페일오버 복원을 구현하는 것은 잠재적으로, 교차 영역 복제가 기존 스탠바이 볼륨에서 계속되는 것을 가능하게 할 수 있다. 유익하게는, 클론 볼륨들은 적은 레이턴시로 또는 레이턴시 없이 이용가능할 수 있어서 RTO에 대한 무시할 수 있는 효과를 가능하게 한다.In some embodiments,
도 6은 하나 이상의 실시예들에 따른 스탠바이 볼륨의 크기를 조정하기 위한 예시적인 기술(600)을 예시한다. 제1 데이터 센터(120)에서의 소스 볼륨(522)과 같은 소스 시스템의 정상 동작은, (예를 들어, 파티션들을 추가하거나, 파티션들을 제거하거나, 소스 볼륨(522)의 하나 이상의 파티션들의 크기를 조정하는 것 등을 위해) 소스 볼륨(522)의 크기를 조정하는 것을 포함할 수 있다. 일부 실시예들에서, 델타들이 하나의 파티션에 대해 생성되기 때문에, 소스 볼륨(522)의 크기를 조정하는 것은 스탠바이 볼륨(560)에 대한 소스 볼륨 델타들(522)의 매핑에 영향을 줄 수 있다. 이와 같이, 스탠바이 볼륨(560)은, 소스 볼륨(522)의 크기를 조정하는 것에 의해 도입되는 델타 적용에서의 잠재적인 오류들을 제한하기 위한 하나 이상의 접근방식들을 구현한 이후에 소스 볼륨(522)의 크기를 조정하는 것을 고려하도록 크기가 조정될 수 있다.6 illustrates an
일부 실시예들에서, 하나 이상의 델타들(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
도 7은 하나 이상의 실시예들에 따른 복원 볼륨을 생성하기 위한 예시적인 흐름(700)을 예시한다. 흐름(700)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.7 illustrates an
일 예에서, 흐름(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
일 예에서, 흐름(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,
일 예에서, 흐름(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
일 예에서, 흐름(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.,
일 예에서, 흐름(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,
일 예에서, 흐름(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
일 예에서, 흐름(800)은, 컴퓨터 시스템이 페일오버 요청인 복원 요청을 수신하는 동작(802)을 포함한다. 이상에서 도 1 내지 도 6을 참조하여 더 상세하게 설명된 바와 같이, 페일오버 요청은, 분산 저장 시스템(예를 들어, 클라우드 저장부)의 부분을 형성할 수 있는 블록 볼륨 시스템(예를 들어, 도 1의 블록 볼륨 시스템(122))에 영향을 주는 재해 또는 다른 장애 이후에 비동기적 복제(예를 들어, 도 1의 비동기적 복제(140))에 의해 수신될 수 있다. 일부 실시예들에서, 페일오버 요청은, 블록 볼륨 시스템에 영향을 주는 장애에 의해 잠재적으로 영향을 받지 않은 제2 지리적 영역에서 블록 볼륨 시스템을 재현하는 페일오버 볼륨을 생성하기 위한 요청을 포함할 수 있다. In one example, flow 800 includes an
일 예에서, 흐름(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/
일 예에서, 흐름(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/
일 예에서, 흐름(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
일 예에서, 흐름(900)은, 컴퓨터 시스템이 페일백 요청인 복원 요청을 수신하는 동작(902)을 포함한다. 일부 실시예들에서, 복원 요청을 야기한 장애는 불명확한 지속기간이 아닐 수 있다. 예를 들어, 장애는, 장애가 쉽게 극복될 수 있는 일시적인 전력 또는 네트워크 중단들에 의해 초래된 때와 같이, 예측가능한 시간의 길이 내에 해결가능할 수 있다. 이와 같이, 페일백 요청은, (예를 들어, 분산 저장 성능의 관점으로부터의) 페일오버 볼륨을 생성하기 위한 바람직한 대안 및 페일오버 볼륨에 대한 RTO와 관련하여 잠재적으로 제한된 차이를 나타낼 수 있다.In one example, flow 900 includes an
일 예에서, 흐름(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
일 예에서, 흐름(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
도 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
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨 시스템으로부터 델타를 생성하는 동작(1002)을 포함한다. 델타는, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 제1 논리적 시간에서의 제1 스냅샷과 제2 논리적 시간에서의 제2 스냅샷 사이의 블록 볼륨 시스템에 저장된 데이터에 대한 수정들을 나타낼 수 있다. In one example,
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨 시스템의 스냅샷을 생성하는 동작(1004)을 포함한다. 일부 실시예들에서, 스탠바이 볼륨을 업데이트하는 것 이전에 스탠바이 볼륨의 스냅샷을 생성하는 것이 선행될 수 있다. 도 1을 참조하여 상세하게 설명된 바와 같이, 스냅샷을 생성하는 것은, 스탠바이 볼륨을 구성하는 블록들의 복수의 블록 이미지들을 파티션 단위로 생성하는 것을 포함할 수 있다. 조립되면, 이러한 이미지들은 (예를 들어, 이상에서 2-단계 커밋 프로토콜들을 참조하여 설명된 바와 같이) 스냅샷의 생성에 대응하는 논리적 시간에서의 스탠바이 볼륨 내의 데이터의 상태를 설명할 수 있다. 스냅샷은, 블록 볼륨 시스템을 복원할 때 사용하기 위한 비동기적 복제 시스템에 대한 폴백(fallback) 위치를 제공할 수 있다. 예를 들어, 스탠바이 볼륨이 새로운 델타들로 업데이트되고 있는 동안 복원 요청이 수신되는 경우, 비동기적 복제는 스냅샷을 사용하여 복원 볼륨을 생성할 수 있다. In one example,
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 델타를 스탠바이 볼륨 시스템에 적용하는 동작(1006)을 포함한다. 객체 저장부를 사용하는 데이터 복제를 참조하여 설명된 접근방식과는 대조적으로, 스탠바이 볼륨은 델타들을 직접적으로 적용함으로써 업데이트될 수 있다. 예를 들어, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 델타는, 수정의 결과로서 복제되는 데이터에 대한 블록 볼륨 시스템의 메모리 내의 위치를 설명하는 메타데이터(예를 들어, 블록 식별자)를 포함할 수 있다. 이러한 방식으로, 델타로부터의 표시된 수정을 적용함으로써 스탠바이 볼륨에 대한 수정이 이루어질 수 있다. In one example,
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 페일백 요청을 수신하는 동작(1008)을 포함한다. 이상에서 설명된 바와 같이, 페일백 요청은 블록 볼륨 시스템에서의 동작의 장애 또는 다른 중단 이후에 수신될 수 있어서, 스탠바이 시스템은 중단이 해결된 이후에 페일백 시스템을 생성하기 위해 사용될 수 있다.In one example,
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 스탠바이 볼륨을 클로닝하는 동작(1010)을 포함한다. 도 5를 참조하여 더 상세하게 설명된 바와 같이, 스탠바이 볼륨을 클로닝하는 것(예를 들어, 도 5의 동작(524))은, (예를 들어, 크기, 파티션들, 등과 관련하여) 스탠바이 볼륨의 구조를 재현할 수 있는 제1 지리적 영역(예를 들어, 도 1의 제1 데이터 센터(120))에서 페일백 볼륨(예를 들어, 도 5의 페일백 볼륨(562))을 생성하는 것을 포함할 수 있다. In one example,
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 복제된 데이터를 제1 지리적 영역에서의 페일백 볼륨으로 복원하는 동작(1012)을 포함한다. 이상에서 설명된 바와 같이, 복제된 데이터를 복원하는 것은, 제2 지리적 영역으로부터의 블록 데이터를 제1 지리적 영역으로 카피하는 것("하이드레이팅"으로도 지칭됨) 및 블록 데이터를 페일백 볼륨에 매핑하는 것을 포함할 수 있다. 일부 구현예들에서, 입력-출력 동작들은, 일단 복제된 데이터가 복원되면 및/또는 복제된 데이터를 복원하는 동안에 페일백 볼륨에서 시작될 수 있다.In one example,
도 11은 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(1100)을 예시한다. 흐름(1100)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.11 illustrates an
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 크기 조정 요청을 수신하는 동작(1102)을 포함한다. 예를 들어, 스냅샷 생성의 반복들 사이의 또는 델타 생성 동안의 비동기적 복제 시스템의 동작 동안, 제1 지리적 영역에서의 블록 볼륨 시스템은 크기 조정 요청을 받을 수 있다. 크기 조정 요청이 하나 이상의 파티션들의 추가 및/또는 제거, 또는 블록 볼륨 시스템의 하나 이상의 파티션들의 크기의 변경을 포함할 수 있기 때문에, 크기 조정 이전에 생성된 델타들은 이것이 크기 조정이 된 이후의 스탠바이 볼륨과 호환되지 않을 수 있다.In one example,
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 마지막 델타를 생성하는 동작(1104)을 포함한다. 일부 실시예들에서, 비동기적 복제 시스템은, 블록 볼륨 시스템의 크기 조정 요청의 수신에 응답하여 수정된 복제 프로토콜을 구현할 수 있다. 예를 들어, 크기 조정 요청의 수신 시에 즉시 블록 볼륨 시스템을 크기 조정하는 것이 아니라, 다른 스냅샷이 생성될 수 있고, 하나 이상의 마지막 델타들이 생성될 수 있다. 이러한 접근방식은 복제된 데이터가 크기 조정 이전의 블록 볼륨 시스템의 업데이트된 상태를 반영하는 것을 가능하게 할 수 있으며, 이는 결과적으로 복제된 데이터로부터 생성된 복원 볼륨의 RPO를 감소시킬 수 있다.In one example,
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨에 마지막 델타를 적용하는 동작(1106)을 포함한다. 이상에서 설명된 바와 같이, 마지막 델타를 적용하는 것은, 동작(1104)에서 생성된 하나 이상의 마지막 델타들에 의해 설명되는 블록 볼륨 시스템에 대한 수정들을 반영하도록 스탠바이 볼륨을 수정하는 것을 포함할 수 있다.In one example,
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 크기를 조정하는 동작(1108)을 포함한다. 동작(1104) 다음에, 크기 조정 요청은 블록 볼륨 시스템에 적용될 수 있다.In one example,
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 크기 조정 요청에 대응하여 스탠바이 볼륨의 크기를 조정하는 동작(1110)을 포함한다. 유사하게, 동작(1106) 다음에, 스탠바이 볼륨은 또한 크기 조정 요청에 대응하는 방식으로 크기가 조정될 수 있다. 비동기적 복제가 파티션-특정 델타들을 생성할 수 있기 때문에, 스탠바이 볼륨은 블록 볼륨 시스템의 구조를 재현하도록 구조화될 수 있다. 예를 들어, 스탠바이 볼륨은 블록 볼륨 시스템과 동일한 크기의 동일한 수의 파티션들을 포함할 수 있다.In one example,
이상에서 언급된 바와 같이, 서비스형 인프라스트럭처(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.
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(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
제어 평면 VCN(1216)은 앱 서브넷(들)(1226)을 포함할 수 있는 데이터 평면 미러 앱 계층(1240)을 포함할 수 있다. 데이터 평면 미러 앱 계층(1240)에 포함된 앱 서브넷(들)(1226)은 컴퓨팅 인스턴스(1244)를 실행할 수 있는 가상 네트워크 인터페이스 제어기(virtual network interface controller; VNIC)(1242)를 포함할 수 있다. 컴퓨팅 인스턴스(1244)는, 데이터 평면 미러 앱 계층(1240)의 앱 서브넷(들)(1226)을 데이터 평면 앱 계층(1246)에 포함될 수 있는 앱 서브넷(들)(1226)에 통신가능하게 결합할 수 있다.
데이터 평면 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
일부 예들에서, 제어 평면 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
일부 예들에서, 보안 호스트 테넌시(1204)는, 그렇지 않았다면 격리되었을 서비스 테넌시(1219)에 직접적으로 연결될 수 있다. 보안 호스트 서브넷(1208)은, 달리 격리된 시스템을 통한 2-방향 통신을 가능하게 할 수 있는 LPG(1210)를 통해 SSH 서브넷(1214)과 통신할 수 있다. 보안 호스트 서브넷(1208)을 SSH 서브넷(1214)에 연결하는 것은 서비스 테넌시(1219) 내의 다른 엔티티들에게 보안 호스트 서브넷(1208) 액세스를 제공할 수 있다.In some examples,
제어 평면 VCN(1216)은 서비스 테넌시(1219)의 사용자들이 희망되는 자원을 셋업하거나 또는 달리 프로비저닝하는 것을 가능하게 할 수 있다. 제어 평면 VCN(1216)에 프로비저닝된 희망되는 자원들은 데이터 평면 VCN(1218)에서 배포되거나 또는 달리 사용될 수 있다. 일부 예들에서, 제어 평면 VCN(1216)는 데이터 평면 VCN(1218)으로부터 격리될 수 있으며, 제어 평면 VCN(1216)의 데이터 평면 미러 앱 계층(1240)은, 데이터 평면 미러 앱 계층(1240) 및 데이터 평면 앱 계층(1246)에 포함될 수 있는 VNIC들(1242)을 통해 데이터 평면 VCN(1218)의 데이터 평면 앱 계층(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
일부 예들에서, 데이터 평면 미러 앱 계층(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
일부 실시예들에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은 서비스 테넌시(1219)에 포함될 수 있다. 이러한 경우에, 시스템의 사용자 또는 고객은 제어 평면 VCN(1216) 또는 데이터 평면 VCN(1218)를 소유하거나 또는 운영하지 않을 수 있다. 대신에, IaaS 제공자가 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)를 소유하거나 또는 운영할 수 있으며, 이들 둘 모두는 서비스 테넌시(1219)에 포함될 수 있다. 이러한 실시예는, 사용자들 또는 고객들이 다른 사용자들의 또는 다른 고객들의 자원들과 상호작용하는 것을 방지할 수 있는 네트워크들의 격리를 가능하게 할 수 있다. 또한, 이러한 실시예는 시스템의 사용자들 또는 고객들이, 저장을 위해 희망되는 보안 레벨을 갖지 않을 수 있는 공용 인터넷(1254)에 의존할 필요 없이 데이터베이스들을 사적으로 저장하는 것을 가능하게 할 수 잇다.In some embodiments,
다른 실시예들에서, 제어 평면 VCN(1216)에 포함된 LB 서브넷(들)(1222)은 서비스 게이트웨이(1236)로부터 신호를 수신하도록 구성될 수 있다. 이러한 실시예에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은, 공용 인터넷(1254)을 호출하지 않고 IaaS 제공자의 고객에 의해 호출되도록 구성될 수 있다. 고객들이 사용하는 데이터베이스(들)가 IaaS 제공자에 의해 제어될 수 있으며 공용 인터넷(1254)으로부터 격리될 수 있는 서비스 테넌시(1219) 상에 저장될 수 있기 때문에, IaaS 제공자의 고객들은 이러한 실시예를 희망할 수 있다.In other embodiments, LB subnet(s) 1222 included in
도 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.,
제어 평면 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
제어 평면 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) 사이의 통신을 가능하게 할 수 있다.
제어 평면 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
일부 예들에서, 데이터 평면 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
다른 예들에서, 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,
일부 실시예들에서, 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
도 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,
제어 평면 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
데이터 평면 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,
신뢰할 수 없는 앱 서브넷(들)(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
제어 평면 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
일부 실시예들에서, 데이터 평면 VCN(1418)은 고객 테넌시들(1470)과 통합될 수 있다. 이러한 통합은, 코드를 실행할 때 지원을 희망할 수 있는 경우와 같은 일부 경우들에서 IaaS 제공자의 고객들에 대해 유용하거나 또는 바람직할 수 있다. 고객은, 파괴적일 수 있거나 또는 다른 고객 자원들과 통신할 수 있거나 또는 달리 바람직하지 않은 효과들을 야기할 수 있는, 실행할 코드를 제공할 수 있다. 이에 응답하여, IaaS 제공자는 고객에 의해 IaaS 제공자에게 주어진 코드를 실행할지 여부를 결정할 수 있다.In some embodiments, data plane VCN 1418 may be integrated with
일부 예들에서, 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
일부 실시예들에서, 신뢰할 수 있는 앱 서브넷(들)(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
도 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.,
제어 평면 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)를 포함할 수 있다.
데이터 평면 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,
신뢰할 수 없는 앱 서브넷(들)(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
제어 평면 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
일부 예들에서, 도 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
다른 예들에서, 고객은 클라우드 서비스들(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
도면들에 도시된 IaaS 아키텍처들(1200, 1300, 1400, 1500)이 도시된 것들과는 다른 구성요소들을 가질 수 있다는 것이 이해되어야 한다. 추가로, 도면에 도시된 실시예는 본 발명의 일 실시예를 통합할 수 있는 클라우드 인프라스트럭처 시스템의 단지 일부 예들이다. 일부 다른 실시예들에서, IaaS 시스템들은 도면들에 도시된 것보다 더 많거나 또는 더 적은 구성요소들을 가질 수 있거나, 2개 이상의 구성요소들을 결합할 수 있거나, 또는 구성요소들의 상이한 구성 또는 배열을 가질 수 있다. It should be understood that the
특정 실시예들에서, 본원에서 설명된 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
버스 서브시스템(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)로서 구현될 수 있다.
하나 이상의 집적 회로들(예를 들어, 통상적인 마이크로프로세서 또는 마이크로제어기)로서 구현될 수 있는 프로세싱 유닛(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
다양한 실시예들에 있어서, 프로세싱 유닛(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
I/O 서브시스템(1608)은 사용자 인터페이스 입력 디바이스들 및 사용자 인터페이스 출력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 키보드, 포인팅 디바이스들 예컨대 마우스 또는 트랙볼, 터치패드 또는 디스플레이 내에 통합된 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 명령 인식 시스템들을 가진 오디오 입력 디바이스들, 마이크들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 예를 들어, 사용자들이 제스처들 및 구두(spoken) 명령들을 사용하는 자연스러운 사용자 인터페이스를 통해, Microsoft Xbox® 360 게임 제어기와 같은, 입력 디바이스를 제어하고 이와 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서와 같은 모션 센싱 및/또는 제스처 인식 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 사용자들로부터 눈 움직임(eye activity)(예를 들어, 사진을 찍는 동안의 및/또는 메뉴를 선택하는 동안의 '깜박임')을 검출하고 눈 제스처들을 입력 디바이스(예를 들어, Google Glass®) 내로의 입력으로서 변환하는 Google Glass® 눈 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 사용자들이 음성 명령들을 통하여 음성 인식 시스템(예를 들어, Siri® 네비게이터(navigator))과 상호작용하는 것을 가능하게 하는 음성 인식 센싱 디바이스들을 포함할 수 있다. I/
사용자 인터페이스 입력 디바이스들은 또한, 비제한적으로, 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
컴퓨터 시스템(1600)은, 시스템 메모리(1610) 내에 현재 위치되어 있는 것으로 도시되는 소프트웨어 요소들을 포함하는 저장 서브시스템(1618)을 포함할 수 있다. 시스템 메모리(1610)는, 프로세싱 유닛(1604) 상에 로딩가능하며 실행가능한 프로그램 명령어들뿐만 아니라 이러한 프로그램들의 실행 동안 생성되는 데이터를 저장할 수 있다.
컴퓨터 시스템(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
저장 서브시스템(1618)은 또한 일부 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성물들을 저장하기 위한 유형의 컴퓨터-판독가능 저장 매체를 제공할 수 있다. 프로세서에 의해 실행될 때 이상에서 설명된 기능을 제공하는 소프트웨어(프로그램들, 코드 모듈들, 명령어들)가 저장 서브시스템(1618) 내에 저장될 수 있다. 이러한 소프트웨어 모듈들 또는 명령어들이 프로세싱 유닛(1604)에 의해 실행될 수 있다. 저장 서브시스템(1618)은 또한 본 개시에 따라 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다.
저장 서브시스템(1600)은 또한, 추가적으로 컴퓨터-판독가능 저장 매체(1622)에 연결될 수 있는 컴퓨터-판독가능 저장 매체 리더(1620)를 포함할 수 있다. 시스템 메모리(1610)와 함께 그리고 선택적으로 이와 조합되어, 컴퓨터-판독가능 저장 매체(1622)는, 컴퓨터-판독가능 정보를 일시적으로 및/또는 더 영구적으로 포함하고, 저장하며, 송신하고, 및 검색하기 위한 저장 매체들에 더하여 원격, 로컬, 고정, 및/또는 착탈가능 저장 디바이스들을 포괄적으로 나타낼 수 있다.
코드, 또는 코드의 부분들을 포함하는 컴퓨터-판독가능 저장 매체(1622)는 또한, 비제한적으로, 정보의 저장 및/또는 송신을 위하여 임의의 방법 또는 기술로 구현된 휘발성 및 비-휘발성, 착탈가능 및 비-착탈가능 매체와 같은 저장 매체 및 통신 매체를 포함하는 당업계에서 알려지거나 또는 사용되는 임의의 적절한 매체를 포함할 수 있다. 이는 유형의 컴퓨터-판독가능 저장 매체, 예컨대 RAM, ROM, 전기 소거가능 프로그램가능 ROM(electronically erasable programmable ROM; EEPROM), 플래시 메모리 또는 다른 메모리 기술품, CD-ROM, 디지털 다기능 디스크(digital versatile disk; DVD), 또는 광 저장장치, 자기 카세트들, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스들, 또는 다른 유형의 컴퓨터 판독가능 매체를 포함할 수 있다. 이는 또한 비유형적인 컴퓨터-판독가능 매체, 예컨대 데이터 신호들, 데이터 송신들, 또는 희망되는 정보를 송신하기 위해 사용될 수 있으며 컴퓨팅 시스템(1600)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.A computer-
예로서, 컴퓨터-판독가능 저장 매체(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-
통신 서브시스템(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)은 무선 인터페이스에 더하여 또는 그 대신에 유선 네트워크 연결(예를 들어, 이더넷)을 제공할 수 있다.
일부 실시예들에 있어서, 통신 서브시스템(1624)은 또한 컴퓨터 시스템(1600)을 사용할 수 있는 하나 이상의 사용자들을 대표하여 구조화된 및/또는 구조화되지 않은 데이터 피드들(1626), 이벤트 스트림들(1628), 이벤트 업데이트들(1630), 및 그와 유사한 것의 형태의 입력 통신을 수신할 수 있다.In some embodiments,
예로서, 통신 서브시스템(1624)은 소셜 네트워크들 및/또는 다른 통신 서비스들의 사용자들로부터의 실-시간 데이터 피드들(1626) 예컨대 Twitter® 피드들, Facebook® 업데이트들, 웹 피드들 예컨대 리치 사이트 서머리(Rich Site Summary; RSS) 피드들, 및/또는 하나 이상의 제3 자 정보 소스들로부터의 실-시간 업데이트들을 수신하도록 구성될 수 있다.By way of example,
추가적으로, 통신 서브시스템(1624)은 또한, 사실상 명시적인 종료를 갖지 않는 제한이 없거나 또는 연속적일 수 있는 실-시간 이벤트들 및/또는 이벤트 업데이트들(1630)의 이벤트 스트림들(1628)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예들은, 예를 들어, 센서 데이터 애플리케이션들, 금융 시세표시기들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것을 포함할 수 있다. Additionally,
통신 서브시스템(1624)은 또한, 구조화되거나 및/또는 구조화되지 않은 데이터 피드들(1626), 이벤트 스트림들(1628), 이벤트 업데이트들(1630), 및 유사한 것을 컴퓨터 시스템(1600)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신할 수 있는 하나 이상의 데이터베이스들로 출력하도록 구성될 수 있다.
컴퓨터 시스템(1600)은, 핸드헬드 휴대용 디바이스(예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 웨어러블 디바이스(예를 들어, Google Glass® 머리 착용형 디스플레이), PC, 워크스테이션, 메인프레임, 키오스크, 서버 랙, 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 유형들 중 임의의 유형일 수 있다.
컴퓨터들 및 네트워크들의 계속해서 변화하는 성질에 기인하여, 도면에 도시된 컴퓨터 시스템(1600)의 설명은 오로지 특정한 일 예로서만 의도된다. 도면에 도시된 시스템보다 더 많거나 또는 더 적은 구성요소들을 갖는 다수의 다른 구성들이 가능하다. 예를 들어, 커스텀화된 하드웨어가 또한 사용될 수 있거나 및/또는 특정 요소들이 하드웨어, 펌웨어, (애플릿(applet)들을 포함하는) 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 추가로, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다. 본원에 제공되는 개시 및 교시들에 기초하여, 당업자는 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들을 인식할 것이다.Due to the ever-changing nature of computers and networks, the description of
본 개시의 특정 실시예들이 설명되었지만, 다양한 수정예들, 대안예들, 대안적인 구성들, 및 등가물들이 또한 본 개시의 범위 내에 포괄된다. 본 개시의 실시예들은 정확한 특정 데이터 프로세싱 환경들 내에서 동작하도록 제한되는 것이 아니라, 복수의 데이터 프로세싱 환경들 내에서 자유롭게 동작할 수 있다. 추가적으로, 본 개시의 실시예들이 특정한 일련의 트랜잭션(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
상기 제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
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;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
상기 복원 볼륨이 상기 제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
상기 제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
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계; 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.
상기 복수의 델타들을 생성하는 단계는,
상기 제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 스냅샷을 생성하는 단계는,
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 방법.
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.
상기 복원 요청은 페일오버(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.
상기 복원 요청은 페일백(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.
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 방법.
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.
상기 체크포인트는 상기 객체 메타데이터의 매니페스트(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.
상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제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.
상기 복수의 델타들을 생성하는 단계는,
상기 제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.
상기 제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.
상기 복원 요청은 페일오버 요청이며, 상기 방법은,
상기 복원 볼륨이 상기 제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.
상기 복원 요청은 페일백 요청이며, 상기 방법은,
상기 제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.
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터 시스템.
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.
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터 시스템.
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.
상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제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.
상기 복수의 델타들을 생성하는 단계는,
상기 제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.
상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
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.
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터-판독가능 저장 매체.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.
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)
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)
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 |
-
2020
- 2020-11-06 US US17/091,635 patent/US11537633B2/en active Active
-
2021
- 2021-09-29 KR KR1020237018995A patent/KR20230097184A/en unknown
- 2021-09-29 CN CN202180075194.XA patent/CN116457760A/en active Pending
- 2021-09-29 JP JP2023527053A patent/JP2023548373A/en active Pending
- 2021-09-29 EP EP21802047.7A patent/EP4241158A1/en active Pending
- 2021-09-29 WO PCT/US2021/052600 patent/WO2022098450A1/en active Application Filing
-
2022
- 2022-10-12 US US17/964,643 patent/US12001453B2/en active Active
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 |