KR20230097184A - 비동기적 교차-영역 블록 볼륨 복제 - Google Patents

비동기적 교차-영역 블록 볼륨 복제 Download PDF

Info

Publication number
KR20230097184A
KR20230097184A KR1020237018995A KR20237018995A KR20230097184A KR 20230097184 A KR20230097184 A KR 20230097184A KR 1020237018995 A KR1020237018995 A KR 1020237018995A KR 20237018995 A KR20237018995 A KR 20237018995A KR 20230097184 A KR20230097184 A KR 20230097184A
Authority
KR
South Korea
Prior art keywords
data
snapshot
volume
deltas
computer system
Prior art date
Application number
KR1020237018995A
Other languages
English (en)
Inventor
벤카타 하리쉬 말리페디
트래비스 존 포츠
제페 아스카 마이어 라슨
마리오 타야
Original Assignee
오라클 인터내셔날 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Publication of KR20230097184A publication Critical patent/KR20230097184A/ko

Links

Images

Classifications

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

Landscapes

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

Abstract

블록 볼륨 데이터의 교차-영역 복제를 위한 기술들이 제공된다. 기술들은, 컴퓨터 시스템이, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 동작으로서, 블록 볼륨은 복수의 파티션들을 포함하는, 동작, 제2 지리적 영역에 있는 객체 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 동작, 제1 지리적 위치에서 제2 논리적 시간에 블록 볼륨의 제2 스냅샷을 생성하는 동작, 복수의 델타들을 생성하는 동작으로서, 복수의 델타들의 각각의 델타는 복수의 파티션들 중 하나의 파티션에 대응하는, 동작, 제2 지리적 영역에 있는 객체 저장 시스템으로 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 동작, 적어도 부분적으로 제1 스냅샷 및 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 동작, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 동작, 및 체크포인트로부터 복원 볼륨을 생성하는 동작을 포함하는 동작들을 구현하는 방법을 포함한다.

Description

비동기적 교차-영역 블록 볼륨 복제
관련 출원들에 대한 상호 참조
본 출원은 "ASYNCHRONOUS CROSS-REGION BLOCK VOLUME REPLICATION"이라는 명칭으로 2020년 11월 06일자로 출원된 미국 정규 특허 출원 제17/091,635호에 대한 우선권 및 이익을 주장한다. 미국 정규 특허 출원 제17/091,635호의 내용들은 모든 목적들을 위해 그 전체가 본원에 참조로서 포함된다.
클라우드-기반 플랫폼들은 사용자들에게 확장가능하고 유연한 컴퓨팅 자원들을 제공한다. 서비스형 인프라스트럭처(infrastructure as a service; IaaS)로도 지칭되는 이러한 클라우드-기반 플랫폼들은, 고객의 데이터에 대한 클라우드 솔루션들, 예를 들어, 변환들의 저작, 데이터의 로딩, 및 데이터의 표현을 위한 솔루션들의 전체 스위트들을 제공할 수 있다. 일부 경우들에서, 고객 데이터는 분산 저장 시스템(예를 들어, 클라우드 저장부) 내의 객체 저장부 및/또는 블록 볼륨 저장부에 저장될 수 있다.
기술들(예를 들어, 방법, 시스템, 하나 이상의 프로세서들에 의해 실행가능한 코드 또는 명령어들을 저장하는 비-일시적인 컴퓨터-판독가능 매체)은 비동기적 교차-영역 블록 볼륨 복제를 위해 제공된다.
일 실시예에서, 방법은, 컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 블록 볼륨은 복수의 파티션들을 포함하는, 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제1 지리적 위치에서 제2 논리적 시간에 블록 볼륨의 제2 스냅샷을 생성하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 복수의 델타들의 각각의 델타는 복수의 파티션들의 하나의 파티션에 대응하는, 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 적어도 부분적으로 제1 스냅샷 및 복수의 델타들과 연관된 객체 메타데이터를 집성(aggregate)함으로써 체크포인트를 생성하는 단계를 포함한다. 방법은, 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계를 포함한다. 방법은 또한, 컴퓨터 시스템에 의해, 체크포인트로부터 복원 볼륨을 생성하는 단계를 포함한다.
일 변형예에서, 복수의 델타들을 생성하는 단계는 제2 스냅샷과 제1 스냅샷 사이의 비교를 생성하는 단계를 포함한다. 복수의 델타들을 생성하는 단계는, 비교에 기초하여, 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계를 포함할 수 있다. 복수의 델타들은 복수의 파티션들에 대한 수정된 데이터를 설명할 수 있다. 제1 스냅샷을 생성하는 단계는, 논리적 시간에 대응하는 복수의 파티션들에 대한 입력/출력 동작들을 일시중단(suspend)하는 단계, 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계, 및 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함할 수 있다. 복원 요청은 페일오버(failover) 요청일 수 있거나 또는 이를 포함할 수 있다. 방법은, 복원 볼륨이 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계, 및 제2 지리적 영역에서의 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함할 수 있다. 복원 요청은 페일백(failback) 요청이거나 또는 이를 포함할 수 있으며, 방법은, 제2 지리적 영역에서 복원 볼륨을 생성하는 단계, 복원 볼륨을 클로닝(clone)함으로써 페일백 볼륨이 적어도 부분적으로 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계, 및 제1 지리적 영역에서 제1 스냅샷 데이터를 복원하는 단계를 더 포함할 수 있다. 복수의 델타 데이터 세트들을 송신하는 단계는, 복수의 델타 데이터 세트들로부터 복수의 청크(chunk) 객체들을 생성하는 단계, 복수의 델타들을 전송하는 단계, 및 복수의 청크 객체들을 객체 저장 시스템으로 전송하는 단계를 포함할 수 있다. 체크포인트는 객체 메타데이터의 매니페스트(manifest)를 포함할 수 있다. 객체 메타데이터는 객체 저장 시스템 내의 복수의 청크 객체들에 대응하는 청크 포인터들을 포함할 수 있다. 객체 메타데이터를 집성하는 단계는, 복수의 델타 데이터 세트들과 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 매니페스트를 업데이트하는 단계를 포함할 수 있다.
특정 실시예들에서, 컴퓨터 시스템은 하나 이상의 프로세스들 및 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 이상에서 설명된 방법 또는 그 변형예들의 단계들 중 하나 이상을 수행하게 한다.
특정 실시예들에서, 컴퓨터-판독가능 저장 매체는, 실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 이상에서 설명된 방법 또는 그 변형예들의 하나 이상의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장한다.
도 1은 하나 이상의 실시예들에 따른 비동기적 교차-영역 블록 볼륨 복제를 위한 예시적인 시스템을 예시한다.
도 2는 하나 이상의 실시예들에 따른 비동기적 블록 볼륨 복제를 위한 예시적인 기술을 예시한다.
도 3은 하나 이상의 실시예들에 따른 비동기적 복제에 의해 블록 볼륨 시스템을 복원하기 위한 예시적인 기술을 예시한다.
도 4는 하나 이상의 실시예들에 따른 블록 볼륨 복제 메타데이터를 집성하기 예시적인 기술을 예시한다.
도 5는 하나 이상의 실시예들에 따른 스탠바이(standby) 볼륨으로부터 페일오버 볼륨을 생성하기 위한 예시적인 기술을 예시한다.
도 6은 하나 이상의 실시예들에 따른 스탠바이 볼륨의 크기를 조정하기 위한 예시적인 기술을 예시한다.
도 7은 하나 이상의 실시예들에 따른 복원 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 8은 하나 이상의 실시예들에 따른 페일오버 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 9는 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름을 예시한다.
도 10은 하나 이상의 실시예들에 따른 스탠바이 시스템을 사용하여 블록 볼륨 시스템을 복원하기 위한 예시적인 흐름을 예시한다.
도 11은 하나 이상의 실시예들에 따른 블록 볼륨 시스템 및 스탠바이 시스템의 크기를 조정하기 위한 예시적인 흐름을 예시한다.
도 12는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 하나의 패턴을 예시하는 블록도이다.
도 13은 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 14는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 15는 적어도 일 실시예에 따른 서비스 시스템으로서 클라우드 인프라스트럭처를 구현하기 위한 다른 패턴을 예시하는 블록도이다.
도 16은 적어도 일 실시예에 따른 예시적인 컴퓨터 시스템을 예시하는 블록도이다.
첨부된 도면들에서, 유사한 구성요소들 및/또는 특징부들은 동일한 참조 라벨들을 가질 수 있다. 추가로, 동일한 유형의 다양한 구성요소들은, 참조 라벨 다음의 유사한 구성요소들을 구별하는 대시 및 제 2 라벨에 의해 구별될 수 있다. 명세서에서 제 1 참조 라벨이 사용되는 경우, 설명은 제 2 참조 라벨에 상관 없이 동일한 제 1 참조 라벨을 갖는 유사한 구성요소들 중 임의의 하나의 구성요소에 적용이 가능하다.
다음의 설명에서, 다양한 실시예들이 설명될 것이다. 설명의 목적들을 위해, 특정 구성들 및 세부사항들이 실시예들의 완전한 이해를 제공하기 위해 기술된다. 그러나, 실시예들이 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 또한 당업자에게 자명할 것이다. 추가로, 잘 알려진 특징들은 설명되는 실시예를 모호하게 하지 않기 위해 생략되거나 또는 단순화될 수 있다.
클라우드-기반 플랫폼들은 사용자들에게 확장가능하고 유연한 컴퓨팅 자원들을 제공한다. 서비스형 인프라스트럭처(infrastructure as a service; IaaS)로도 지칭되는 이러한 클라우드-기반 플랫폼들은, 고객의 데이터에 대한 클라우드 솔루션들, 예컨대, 변환들의 저작, 데이터의 로딩, 및 데이터의 표현을 위한 솔루션들의 전체 스위트들을 제공할 수 있다. 일부 경우들에서, 고객 데이터는 분산 저장 시스템(예를 들어, 클라우드 저장부(storage)) 내의 객체 저장부 및/또는 블록 볼륨 저장부에 저장될 수 있다. 고객 데이터는, 예를 들어, 글로벌 분산 저장 시스템의 부분으로서 지리적 영역에 위치된 데이터 센터에 저장될 수 있다. 데이터 센터는, 적어도 부분적으로, 레이턴시, 초당 입력-출력 동작들(Input-Output operations per second; IOPS), 스루풋, 비용, 안정성, 등을 포함하는 하나 이상의 성능 메트릭들에 기초하여 선택될 수 있다. 일부 경우들에서, 데이터 센터의 최적 위치는 고객의 위치에 대응할 수 있다(예를 들어, 고객이 상당한 볼륨의 내부 데이터를 생성할 때). 일부 경우들에서, 최적 위치는 고객의 클라이언트 및/또는 사용자들의 위치에 대응할 수 있다(예를 들어, 고객이 컨텐츠 전달 네트워크를 운영할 때).
고객 데이터는, 장애 다음에 백업 시스템을 1차 시스템으로 지정함("페일오버"로서 지칭됨)으로써 복구될 상이한 지리적 영역 또는 데이터 센터 내의 백업 시스템(가용성 도메인, 또는 "AD"로도 지칭됨)에 복사될 수 있다. 페일오버 시스템들은, 복구 포인트 목표(recovery point objective; RPO), 복구 시간 목표(recovery time objective; RTO) 및 재해 복구(disaster recovery; DR)를 포함하는 다수의 메트릭들에 의해 특징지어질 수 있다. 일반적으로, RPO는 페일오버 동안 얼마나 많은 데이터가 상실될 수 있는지를 설명하여 백업 시스템의 목표는 RPO를 최소화하는 것일 수 있다. 전형적으로, 백업 카피를 생성하는 단계는, 하나의 영역에서 백업을 수행하는 단계, 백업이 클라우드 시스템에 업로드될 때까지 대기하는 단계, 그런 다음 교차-영역 카피 동작을 개시하는 단계, 및 목적지 영역에서 백업이 완료될 때까지 대기하는 단계를 수반한다. 상당한 메타데이터 오버헤드가 각각의 백업과 연관될 수 있으며, 이는 높은 반복 레이트들로 계산 요구들 및 자원 비용을 증가시킬 수 있다. 이러한 이유로, RPO는 전형적으로 백업 시스템에 대해 몇 시간 단위로 이용가능하다(여기서 시간은 평균 데이터 전송 레이트를 고려할 때 데이터의 양을 나타낸다).
유사하게, RTO는, RTO가 페일오버 이후에 데이터를 복원하기 위해 수반되는 시간의 길이를 나타냄에 따라 페일오버 시스템의 중요한 메트릭일 수 있다. 상이한 지리적 영역으로부터 복원된 백업에 대해, 입력-출력 동작들은, 볼륨이 완전히 복원될 때까지 전형적인 조건들에 비해 상승된 레이턴시를 나타낼 수 있다. 더욱이, 온-디맨드 데이터 동작들의 복원 시간들 및 레이턴시는, 예를 들어, 넓은-영역(region-wide) 장애에 응답하는 데이터 트래픽 이동에 대응하는 시스템 부하의 스파이크에 응답하여 상당히 증가할 수 있다. 레이턴시는, 분산 데이터 저장 시스템이 또한 교차-영역 백업 카피들로부터 백업 복원을 구현하는 동안 추가로 상승될 수 있다.
고객 데이터는 가치가 있을 수 있기 때문에, 고객은, 예를 들어, 저장 안정성을 증가시키도록 구성된 데이터 중복성 및 인프라스트럭처(예를 들어, 예컨대 전원 공급장치 보강, 서지 보호, 등)를 포함하는 하나 이상의 접근방식들에 의해 데이터가 보호될 것으로 예상할 수 있다. 데이터 중복성은, 비제한적으로, 로컬 저장 매체(예를 들어, 물리적 저장 매체), 분산 저장 시스템, 및/또는 상이한 분산 저장 시스템에 고객 데이터를 복제하는 것을 포함하는 다수의 형태들을 취할 수 있다. 일부 경우들에서, 고객 데이터는 한 번에 모두 복제될 수 있으며, 이는 백업으로 지칭된다. 이러한 접근방식은, 백업이 발생하는 동안 시스템 입력-출력 동작들에서 상당한 레이턴시를 포함할 수 있다. 예를 들어, 저장 시스템은, 고객 데이터의 완전한 복사본(duplicate)이 보존된다는 것을 보장하기 위해 백업이 진행되는 동안 모든 판독 및 기입 동작들을 프리즈(freeze)할 수 있다. 이러한 경우들에서, 분산 저장 시스템에 새로운 데이터를 일시적으로 저장하기 위해 추가적인 버퍼 용량이 이용될 수 있거나 및/또는 고객 데이터 요청들이 지연될 수 있다.
전체 볼륨의 백업과는 대조적으로, 고객 데이터는, 이하에서 도면들을 참조하여 상세하게 설명되는 바와 같이 비동기적으로 복제될 수 있다. 예를 들어, 고객 데이터는, 적어도 부분적으로 데이터 저장 시스템의 서브-유닛(예를 들어, 블록 볼륨 시스템의 파티션)의 증분(incremental) 변경을 설명하는 객체를 생성함으로써 계속적으로(예를 들어, 백업 시스템들에서 전형적일 수 있는 시간(hour)들과는 달리 분 간격으로) 복제될 수 있다. 다음의 단락들에서, 증분 변경을 설명하는 객체는 "델타"로도 지칭된다. 도 1을 참조하여 상세하게 설명되는 바와 같이, 델타는 2개의 비동기적 레코드들 사이의 고객 데이터의 하나 이상의 변경들을 설명할 수 있다. 분산 저장 시스템 내의 사용자 데이터의 상태의 레코드는 "스냅샷"으로도 지칭되며, 이하에서 도면들을 참조하여 상세히 설명되는 바와 같이, 단일 연대순(chronological) 시간과는 대조적으로 단일 논리적 시간에서의 데이터의 상태를 나타낼 수 있다. 일부 경우들에서, 델타들이 생성될 수 있으며, 델타들은 델타들이 생성될 때 저장되거나 및/또는 전송/복제될 수 있다. 이와 같이, 비동기적 복제는, 고객 데이터가 백업들이 아니라 델타들을 전송함으로써 복제되는 것을 허용할 수 있다.
적어도 이러한 이유들로, 본원에서 설명되는 기술들은 백업 고객 데이터에 의존하는 데이터 중복 접근방식을 뛰어 넘는 하나 이상의 장점들을 나타낸다. 예를 들어, 스냅샷 이후의 데이터에 대한 변경들을 복제하기 위해 다수의 델타들을 생성하는 것은 데이터 복제 프로세스가 연대순 시간으로 세분화되는 것을 허용할 수 있으며, 레이턴시, IOPS 및/또는 다른 성능 메트릭들에 대한 데이터 복제의 영향을 감소시킬 수 있다.
전체 볼륨을 백업하는 것에 의존하는 접근방식들은, 시스템 장애가 가용성 백업이 고객 데이터의 가치 있는 변경들을 반영하지 않을 때 발생하는 경우(예를 들어, 기존 백업이 이루어진 이후 오랜 시간이 지나서 장애가 발생하는 경우, 또는 마지막 백업 이후 고객 데이터에 대한 상당한 변경들이 발생한 경우) 데이터 손실의 위험성을 가질 수 있다. 비동기적 복제를 구현하는 것은 또한, 고객 데이터의 보존을 개선할 뿐만 아니라 전체 시스템 성능을 개선할 수 있다. 이와 같이, 비동기적 복제 접근방식들은 백업 시스템들에 비해 개선된 RPO, RTO, 및 DR을 제공할 수 있다.
예시적인 예로서, 블록 볼륨 시스템은 전 세계의 다수의 지리적 영역들에 다수의 데이터 센터들을 갖는 분산 저장 시스템에 구현될 수 있다. 데이터 센터들 중 하나의 블록 볼륨 시스템에 저장된 고객 데이터는, 제1 데이터 센터가 심각한 장애를 경험하는 경우에 데이터 손실을 방지하기 위해 제2 데이터 센터에 복제될 수 있다. 고객 데이터는 스냅샷들 및 델타들 둘 모두를 생성함으로써 복제될 수 있으며, 여기서 스냅샷들은 다수의 파티션들에 걸쳐 고객 데이터의 전체적(holistic) 복제를 제공할 수 있으며, 델타는 선행 스냅샷에 후속하는 단일 파티션에 대한 고객 데이터에 대한 변경들의 증분 추적을 허용할 수 있다. 일단 델타가 생성되면, 델타는 델타가 설명하는 고객 데이터와 함께 제2 데이터 센터로 전송될 수 있으며, 이는 제1 데이터 센터에서 장애가 발생하는 경우에 고객 데이터를 복원하기 위해 제2 데이터 센터에 있는 저장 시스템에 의해 사용될 수 있다. 델타가 하나의 파티션에 대해 생성되고 있는 동안, 다른 파티션들은 입력-출력 동작들을 위해 이용가능한 채로 남아 있을 수 있으며, 제1 데이터 센터에 있는 저장 시스템이 희망되는 레벨의 성능을 유지하는 것을 가능하게 할 수 있다. 제1 데이터 센터에서 장애가 발생하는 경우에, 제2 데이터 센터는 제1 데이터 센터의 역할을 맡을 수 있거나("페일오버"라고 함) 및/또는 고객 데이터가 제1 데이터 센터로 복원되어 동작을 재개할 수 있다("페일백"이라고 함).
도 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 데이터 센터(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를 지정하는 것을 포함할 수 있다.
일부 실시예들에서, 비동기적 복제(140)는, 블록 볼륨 시스템(122)에 저장된 데이터의 스냅샷을 생성할 수 있는 스냅샷 생성(142) 서브-시스템을 포함할 수 있다. 일부 경우들에서, 스냅샷은, 이하에서 더 상세하게 설명되는 바와 같이 특정 논리적 시간에서의 블록 볼륨 시스템(122)에 저장된 사용자 데이터의 순간(instant) 상태를 설명할 수 있다. 백업 복제 접근방식과는 대조적으로, 비동기적 복제(140)는, 스냅샷 이후의 블록 볼륨 시스템(122) 내의 데이터에 대해 이루어진 변경들이 이에 의해 확인될 수 있는 델타 생성(144) 서브-시스템을 포함할 수 있다. 변경들은 결과적으로 델타들로서 표현될 수 있으며, 이들은 스냅샷을 전체적으로 교체하는 것이 아니라 스냅샷을 업데이트하기 위해 사용될 수 있다. 스냅샷 생성(142)은, 예를 들어, 분 단위로(예를 들어, 1-10 분, 10-20분, 20-30분 등) 및/또는 시간 단위로(예를 들어, 1-10 시간) 주기적으로 새로운 스냅샷들을 생성할 수 있다.
일부 실시예들에서, 스냅샷 생성(142)은 블록 볼륨 시스템(122)의 하나 이상의 파티션들을 수반하는 2-단계 커밋(commit) 프로토콜을 진행할 수 있다. 2-단계 커밋은, 스냅샷 생성(142)이, 블록 볼륨 시스템으로부터 파티션에 대한 입력-출력 동작들이 일시 중단되었다는 커밋먼트(commitment)를 수신한 이후에 파티션 이미지를 생성하는 것을 포함할 수 있다. 파티션 이미지가 완료된 이후에, 파티션은 입력-출력 동작들을 재개하도록 릴리즈될 수 있다. 일부 실시예들에서, 2-단계 커밋은 블록 볼륨 시스템(122)에 전체적으로 적용될 수 있어서 전체 블록 볼륨 시스템에 대한 모든 판독 및 기입 동작들은 스냅샷이 생성되는 시간 동안 차단될 수 있다. 일부 실시예들에서, 스냅샷은 대략 밀리초 단위(예를 들어, 1-15 msec, 5-10 msec, 등)로 생성될 수 있다.
일부 실시예들에서, 스냅샷 생성(142)은 파티션 단위로 블록 볼륨 시스템(122)에 저장된 데이터의 이미지를 생성하는 것을 포함할 수 있다. 블록 볼륨 시스템(122)이 하나 이상의 파티션들에 데이터를 저장하는 경우, 스냅샷 생성(142)은, 스냅샷 생성이 하나의 파티션의 입력-출력 동작을 방해하지 않도록 파티션 이미지의 생성을 스케줄링할 수 있다. 스냅샷 생성(142)은, 이미징되고 있는 파티션 이외의 파티션들의 정상 입력-출력 동작들의 중단을 잠재적으로 회피하면서 블록 볼륨 시스템에 포함된 모든 파티션의 이미지들을 생성하고 컴파일(compile)할 수 있다.
스냅샷은 특정 논리적 시간에서 데이터의 이미지를 기록할 수 있으며, 여기서 논리적 시간은 스냅샷 생성(142)의 구현을 나타낸다. 예를 들어, 스냅샷 생성(142)에 의해 제1 스냅샷은 제1 논리적 시간으로 식별될 수 있으며, 블록 볼륨 시스템(122)의 하나 이상의 파티션들이 스냅샷 생성(142)에 의해 프로세싱되는 연대순 시간의 길이 동안 생성될 수 있다. 마찬가지로, 스냅샷 생성(142)은, 스냅샷 생성(142) 서브시스템의 제2 반복에 대응하는, 제2 논리적 시간으로 식별될 수 있는 연대순 시간 기간이 만료된(예를 들어, 1-10분, 등) 이후에 블록 볼륨 시스템(122)의 제2 스냅샷을 생성할 수 있다.
일부 실시예들에서, 델타 생성(144)은, 적어도 부분적으로 비동기적 복제(140)가 변경되지 않은 데이터를 전송하지 않고 새로운 또는 수정된 데이터를 제2 데이터 센터(130)에 전송하는 것을 가능하게 함으로써 비동기적 복제(140)를 가능하게 할 수 있다. 일부 경우들에서, 델타는 제1 스냅샷과 제2 스냅샷 사이의 블록 볼륨 시스템(122)의 파티션에 저장된 데이터의 변경들을 설명할 수 있다. 예를 들어, 델타 생성(144)은 제2 스냅샷과 제1 스냅샷을 비교할 수 있으며, 추가되거나, 제거되거나, 수정되거나 하는 등의 블록들을 확인할 수 있다. 이러한 방식으로, 델타들은, 2개의 연속적인 스냅샷들 사이에 제거된 데이터를 또한 설명할 수 있다.
일부 경우들에서, 델타는 고유 식별자뿐만 아니라 메모리 포인터들의 리스트를 포함하는 논리적 구조체일 수 있다. 메모리 포인터는, 2개의 연속적인 스냅샷들 사이에서 변경된 데이터에 대한 제1 데이터 센터(120) 및/또는 제2 데이터 센터(130) 내의 메모리 위치들을 설명할 수 있다. 이하에서 도 2 내지 도 6을 참조하여 더 상세하게 설명되는 바와 같이, 비동기적 복제(140)를 구현하는 것은 전체 스냅샷을 전송하는 것이 아니라 파티션에 대한 델타를 제2 데이터 센터(130)로 전송하는 것을 포함할 수 있다.
일부 실시예들에서, 제2 데이터 센터(130)에 있는 데이터 저장부(132)는 복제된 데이터를 객체 저장물로서 저장할 수 있다. 이와 같이, 비동기적 복제(140)는 제1 데이터 센터(120)로부터의 데이터를 청크 객체들로 변환하기 위한 데이터 변환(146) 서브-시스템을 포함할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)으로부터의 데이터는 4 MB 청크 객체들에 통합될 수 있다. 일부 실시예들에서, 청크 객체들은 시스템 백업 동작들을 위해 사용되는 것과 유사한 포맷을 구현할 수 있으며, 이는 비동기적 복제(140)가 백업 및/또는 계층형 업로드 기술들을 이용하는 기존 분산 저장 시스템들에 통합되는 것을 가능하게 할 수 있다.
일부 실시예들에서, 비동기적 복제(140)는, 블록 볼륨 시스템(122)의 파티션들에 대응하는 델타들이 생성된 이후에 체크포인트를 생성할 수 있다. 일부 실시예들에서, 체크포인트 생성(148) 서브-시스템은, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이, 델타들을 집성하고 집성된 변경들을 이전에 생성된 체크포인트에 적용함으로써 체크포인트를 생성할 수 있다.
제1 데이터 센터가 장애(예를 들어, 심각한 장애)를 경험하고, 예를 들어, 블록 볼륨 시스템(122)의 사용자 및/또는 고객에 의해 시스템의 복원이 희망될 때, 페일오버/페일백 요청(150)이 비동기적 복제(140)에 제공될 수 있다. 페일오버/페일백 요청(150)은, 비동기적 복제(140)가 제2 지리적 영역에 저장된 복제된 데이터를 사용하여 복원 볼륨을 생성하게 하는 복원 요청의 형태일 수 있다. 일부 실시예들에서, 비동기적 복제(140)는 페일오버/페일백 요청(150)을 수신하는 것에 응답하여 하나 이상의 복원 동작들을 구현할 수 있다. 일부 실시예들에서, 페일오버/페일백 요청(150)은 분산 저장 시스템의 외부 서비스에 의한 요청 및/또는 분산 저장 시스템의 사용자에 의한 요청을 포함할 수 있다. 일부 경우들에서, 데이터 저장부(132)가 블록 볼륨 시스템(122)의 복제본(replica)(예를 들어, 스탠바이 볼륨)일 때와 같이, 페일오버 요청은, 데이터 저장부(132)가 블록 볼륨 시스템(122)의 역할을 맡아야 한다는 것을 나타낼 수 있다. 예를 들어, 데이터 저장부는 사용자 데이터를 수반하는 입력-출력 동작들을 핸들링할 수 있다. 일부 실시예들에서, 페일오버/페일백 요청(150)은, 제1 데이터 센터(120)가 이상에서 설명된 바와 같이 복제된 데이터를 수신하고 페일오버 요청을 초래한 장애 이전의 동작들을 재개하도록 구성되어야 한다는 것을 나타낼 수 있다.
도 2는 하나 이상의 실시예들에 따른 비동기적 블록 볼륨 복제를 위한 예시적인 기술(200)을 예시한다. 이상에서 설명된 바와 같이, 비동기적 복제는, 사용자 데이터가 단일 백업 이미지로서가 아니라 증분 단위들로 소스 시스템으로부터 목적지 시스템으로 전송되는 것을 가능하게 할 수 있다. 일부 실시예들에서, 블록 볼륨 시스템(122)는, 입력-출력(input-output; I/O) 동작들(210)을 통해 사용자로부터 수신되고 사용자에게 제공될 수 있는 데이터를 저장할 수 있다. 따라서, 수신된 데이터는 블록 볼륨 시스템(122)의 하나 이상의 구성 파티션들(220)에 저장될 수 있다. 비동기적 복제 시스템들(예를 들어, 도 1의 비동기적 복제(140))은 이하에서 설명되는 하나 이상의 프로세스들에 의해 블록 볼륨 시스템(122)으로부터의 사용자 데이터를 복제하여 데이터 저장부(132)로 송신할 수 있다.
일부 실시예들에서, 사용자 데이터는 제1 스냅샷(230)을 생성함으로써(예를 들어, 동작(250)) 복제될 수 있다. 도 1을 참조하여 상세하게 설명된 바와 같이, 스냅샷은 블록 볼륨 시스템(122)에 저장된 데이터의 레코드일 수 있다. 제1 스냅샷(130)의 스냅샷 생성(예를 들어, 도 1의 스냅샷 생성(142))은 제1 논리적 시간(260)에서 발생할 수 있다. 도 1을 참조하여 더 상세하게 설명된 논리적 시간은, 예를 들어, 스냅샷 생성이 파티션 단위로 진행될 때, 블록 볼륨 시스템(122)의 구성 파티션들(220)의 각각으로 2-단계 커밋 프로토콜들을 구현하는 스냅샷 생성 동작(예를 들어, 동작(250))의 반복을 설명할 수 있다. 이러한 경우들에서, 제1 논리적 시간(260)은 스냅샷이 생성되고 있는 동안의 시간 기간에 대응할 수 있다.
일부 경우들에서, 제1 스냅샷(230)은 블록 볼륨 시스템(122)에 저장된 사용자 데이터의 비동기적 복제의 가장 첫 번째 구현이다. 이러한 경우들에서, 제1 스냅샷(230)에 의해 표현되는 전체 데이터 세트는 데이터 저장부(132)로 전송될 수 있다. 이러한 방식으로, 제1 스냅샷(130)은, 적어도, 메타데이터(예를 들어, 이하에서 설명되는 바와 같은 매니페스트) 및 사용자 데이터의 레코드가 소스 시스템으로부터 목적지 시스템으로 전송될 수 있다는 점(예를 들어, 동작(252))에서 백업과 유사할 수 있다.
일부 실시예들에서, 제1 스냅샷은 블록 볼륨 시스템(122) 및/또는 구성 파티션들(220)의 디스크 이미지일 수 있다. 일부 실시예들에서, 제1 스냅샷(230)은 다수의 블록 이미지들(232)을 포함할 수 있어서, 제1 스냅샷(230)에 의해 설명되는 데이터는 적어도 부분적으로 블록 이미지들(232)을 개별적으로 및/또는 그룹들로 전송함으로써 데이터 저장부(132)에 비동기적으로 전송될 수 있다. 도 3을 참조하여 더 상세하게 설명되는 바와 같이, 블록 이미지들(232)은, 예를 들어, 데이터 저장부(132)가 객체 저장 시스템일 때 데이터 저장부(132)에 저장될 청크 객체들로 변환될 수 있다.
일부 실시예들에서, 비동기적 복제는 제2 논리적 시간(262)에서 제2 스냅샷(240)을 생성하는 것(예를 들어, 동작(254))을 포함할 수 있다. 일부 실시예들에서, 제2 논리적 시간(262)은, 이상에서 도 1을 참조하여 더 상세하게 설명된 바와 같은 제1 논리적 시간(260) 다음의 시간 기간에 대응한다. 예를 들어, 제2 스냅샷(240)은, 제1 스냅샷(230)의 생성 이후의 몇 분(예를 들어, 1-15분, 5-10분, 등)에서 이상에서 설명된 2-단계 커밋 프로토콜에 의해 생성될 수 있다. 일부 실시예들에서, 제2 스냅샷(240)은 제1 스냅샷(230)에 비해 블록 볼륨 시스템(122)에 저장된 데이터에 대한 하나 이상의 변경들을 포함할 수 있다.
제2 스냅샷(240)을 직접적으로 전송하는 것이 아니라, 기술(200)은 블록 볼륨 시스템(122)의 구성 파티션들에 대응하는 델타들(242)을 생성하는 것(예를 들어, 동작(256))을 포함할 수 있다. 이상에서 도 1을 참조하여 더 상세하게 설명된 바와 같이, 델타 생성(예를 들어, 도 1의 델타 생성(144))은, 각각의 파티션(220)에 대한 델타들(242)에 포함된 데이터의 적어도 부분을 구성할 수 있는, 목적지 시스템(예를 들어, 데이터 저장부(132))의 참조 청크 식별자에 페어링된 수정된 블록들(포인트들에 의해 식별됨)의 리스트를 생성하기 위해 제1 스냅샷(230)에 반영된 데이터의 상태와 제2 스냅샷(240)에 반영된 데이터의 상태를 비교하는 것을 포함할 수 있다. 일부 실시예들에서, 델타들은 또한 고유 델타 식별자를 포함할 수 있다. 일부 실시예들에서, 고유 델타 식별자는 제2 스냅샷(240)의 식별자에 대응할 수 있다. 이러한 방식으로, 델타들(242)은, 예를 들어, I/O 히스토리를 제공하기 위한 접근방식으로서 제2 논리적 시간(262)까지 추적될 수 있는 데이터에 대한 변경들을 반영할 수 있다.
일단 생성되면, 델타들(242)은 목적지 시스템, 예를 들어, 데이터 저장부(132)로 전송될 수 있다(예를 들어, 동작(258)). 일부 실시예들에서, 델타들(242)은 블록 볼륨 시스템(122)에 추가된 임의의 새로운 데이터와 함께 전송될 수 있다. 제1 논리적 시간(260)과 제2 논리적 시간(262) 사이에서 블록 볼륨 시스템(122)으로부터 제거된 데이터는, 소스 시스템으로부터 목적지 시스템으로 임의의 데이터(예를 들어, 청크 객체들)를 전송하지 않고 델타(242)에 포함된 메타데이터에 의해 반영될 수 있다.
도 3은 하나 이상의 실시예들에 따른 비동기적 복제에 의해 블록 볼륨 시스템을 복원하기 위한 예시적인 기술(300)을 예시한다. 이상에서 도 1 내지 도 2를 참조하여 설명된 비동기적 복제 시스템의 부분으로서, 목적지 시스템, 예를 들어, 제2 데이터 센터(130)는 소스 시스템(예를 들어, 도 1의 제1 데이터 센터(120))에 저장된 데이터의 복제본을 수신하고 유지할 수 있다. 일부 실시예들에서, 제2 데이터 센터(130)는 소스 시스템의 지리적 영역과는 상이한 지리적 영역(예를 들어, 영역 A가 아니라 영역 B)에 위치될 수 있다. 제2 데이터 센터(130)는, 복제된 데이터를 하나 이상의 데이터 객체들(310)로서 객체 저장부에 저장할 수 있는 데이터 저장부(132)를 포함할 수 있다.
일부 실시예들에서, 데이터 저장부(132)는 적어도 부분적으로 비동기적 복제 시스템의 구성에 기초하여 객체 저장 시스템으로 동작할 수 있어서, 비동기적 복제는 블록들이 아니라 청크 객체들로서 복제된 데이터를 저장하도록 구성될 수 있다. 즉, 일부 실시예들에서, 제2 데이터 센터(130)는 스탠바이 볼륨을 포함하여 스탠바이 볼륨에 대한 델타들의 직접 적용을 가능하게 할 수 있다. 데이터 저장부(132)가 스탠바이 볼륨을 포함하는 실시예들에서, 비동기적 복제는 블록들을 객체들로 변환(예를 들어, 데이터 변환(146))하지 않고 완료될 수 있다.
일부 실시예들에서, 비동기적 복제는 제1 체크포인트(320)를 생성하는 것(예를 들어, 동작(350))을 포함할 수 있다. 체크포인트는 적어도 부분적으로, 도 4를 참조하여 더 상세하게 설명되는 바와 같이 체크포인트가 데이터 저장부(132)에 저장된 청크 객체들의 식별자들 및 위치들을 설명하는 매니페스트(예를 들어, 메타데이터)를 포함할 수 있다는 점에서 스냅샷과는 상이할 수 있다. 예를 들어, 제1 체크포인트(320)가 체크포인트가 비동기적 복제의 부분으로서 생성된 제1 시간에 대응하는 경우, 제1 체크포인트는 복제된 데이터를 구성하는 청크 객체들의 각각에 대한 청크 포인터들의 리스트를 포함할 수 있다.
비동기적 복제의 부분으로서, 제2 데이터 센터(130)는 소스 시스템으로부터 델타들(330) 및 대응하는 데이터를 수신할 것이다(예를 들어, 동작(352)). 이상에서 설명된 바와 같이, 델타들은, 제1 스냅샷과 제2 스냅샷 사이의 입력-출력 동작들(도 2의 I/O 동작들(210))로부터 기인하는 소스 시스템에 저장된 데이터에 대한 변경들을 설명하는 메타데이터를 포함할 수 있다. 대응하는 데이터는 청크 객체들(예를 들어, 4 MB 청크 객체들)로서 수신될 수 있다.
델타들(330)은 제2 체크포인트(340)를 생성하는 것(예를 들어, 동작(354))의 부분으로서 제1 체크포인트(320)에 적용될 수 있다. 제2 체크포인트를 생성하는 것은, 델타들(330)에서 식별된 하나 이상의 청크 객체들을 식별하는 것, 및 델타들에 의해 표시되는 표시된 수정을 적용하는 것을 포함할 수 있다. 예를 들어, 청크 데이터로의 하나 이상의 변환들은 델타들(330)의 제1 델타(330-1)에 의해 표시될 수 있으며, 여기서 제1 델타(330-1)는 (예를 들어, 청크 포인터를 통해) 주어진 파티션에 대한 참조된 데이터의 데이터 저장부(132)의 객체 저장부 내의 위치를 나타낸다. 일부 실시예들에서, 참조된 데이터를 직접적으로 수정하는 것이 아니라, 비동기적 복제는, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이 제2 체크포인트(340)를 생성하는 것의 부분으로서 제1 델타(330-1)에 의해 표시된 변경들을 반영하도록 제1 체크포인트(320)를 업데이트하는 것을 포함할 수 있다.
일부 실시예들에서, 제2 데이터 센터(130)(예를 들어, 목적지 시스템)는, 비동기적 복제 시스템(예를 들어, 동작(356)을 통해 도 1의 비동기적 복제 시스템(140))의 사용자로부터 수신될 수 있는 페일오버/페일백 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))의 대상일 수 있다. 페일오버/페일백 요청은 소스 시스템(예를 들어, 도 1의 제1 데이터 센터(120))에 영향을 주는 장애(예를 들어, 자연 재해)에 응답하는 것일 수 있다. 페일오버/페일백 요청은, 이하에서 도 7 내지 도 10을 참조하여 더 상세하게 설명되는 바와 같이, 복제된 데이터 및 제2 체크포인트로부터 블록 볼륨 시스템이 복원될 방법을 가이드하는 파라미터들을 포함할 수 있다.
페일오버/페일백을 구현하는 것은 복원 볼륨으로도 지칭되는 페일오버/페일백 볼륨을 생성하는 것(예를 들어, 동작(358))을 포함할 수 있다. 이상에서 설명된 바와 같이, 페일오버 시스템은 목적지 시스템에서 호스팅될 수 있으며, 반면 페일백 시스템은 소스 시스템에서 호스팅될 수 있다. 일부 실시예들에서, 페일백 요청이 수신될 때와 같이, 제2 체크포인트(340)는 객체들(310)에 저장된 데이터를 소스 시스템(예를 들어, 블록 볼륨 시스템(122)) 내의 블록들에 매핑하기 위해 사용될 수 있다. 페일백 볼륨을 생성하는 프로세스는 이하에서 도 5를 참조하여 더 상세하게 설명된다. 마찬가지로, 페일오버는, 제1 데이터 센터(120)가 장애로부터 복구될 때까지 입력-출력 동작들과 관련하여 제1 데이터 센터(120)의 역할을 맡기 위해 제2 데이터 센터(130)에서 블록 볼륨 시스템을 생성하는 것을 포함할 수 있다. 제2 데이터 센터(130)에서 페일오버 볼륨을 생성하는 것은, 예를 들어, 이하에서 도 4를 참조하여 더 상세하게 설명되는 바와 같이 제2 체크포인트(340)를 사용함으로써 객체들(310)에 저장된 데이터를 블록들에 매핑하는 것을 포함할 수 있다. 일부 실시예들에서, 블록 볼륨 데이터를 복원하는 것은, 비제한적으로, 목적지 영역에서 새로운 블록 볼륨을 생성하는 것, 목적지 영역에 페일오버를 구현하는 것, 소스 영역 내의 새로운 볼륨으로의 교차-영역 복제를 가능하게 하는 것, 및 소스 영역에서 페일오버를 수행하는 것을 포함하는 하나 이상의 동작들을 포함할 수 있다.
일부 실시예들에서, 제2 데이터 센터(130)가 복제된 데이터를 저장하기 위한 스탠바이 볼륨을 유지하고 있을 때와 같이, 스탠바이 볼륨은, 장애 시점에 소스 시스템으로부터 전송되지 않은 임의의 델타들로부터의 변경들을 제외하고는 소스 볼륨으로부터의 모든 변경들을 이미 포함하고 있을 수 있다. 이와 같이, 페일오버는, 이하에서 도 5를 참조하여 더 상세하게 설명되는 바와 같이, 상대적으로 적은 손실 데이터로(예를 들어, 대략 1-15분의 스냅샷 생성 시간에 대한 RPO) 즉시 이용가능할 수 있다(예를 들어, 낮은 RTO를 나타냄). 대조적으로, 전체 백업 이미지들의 동기적 복제를 구현하는 백업 시스템은 약 몇 시간의 RPO를 야기할 수 있다.
일부 실시예들에서, 페일오버/페일백 볼륨을 생성하는 것이 아니라, 비동기적 복제는 역방향 복제(reverse replication)를 포함할 수 있다. 이러한 경우에, 목적지 시스템은 소스 시스템으로 지정될 수 있으며, 반면 이전 소스 시스템은 목적지 시스템의로 재지정될 수 있다. 이러한 방식으로, 데이터가 데이터 저장부(132)에서 기입되고 판독되는 입력-출력 동작들은 제2 데이터 센터(130)에서 발생할 수 있으며, 스냅샷 생성 및 델타 생성도 또한 제2 데이터 센터에서 발생할 수 있다. 대응하여, 복제된 데이터는 제1 데이터 센터(120)로 전송될 수 있다.
도 4는 하나 이상의 실시예들에 따른 블록 볼륨 복제 메타데이터를 집성하기 예시적인 기술(400)을 예시한다. 비동기적 복제는, 데이터가 복제될 수 있는 시간 기간에 걸쳐 하나 이상의 구성 동작들(예를 들어, 스냅샷 생성, 델타 생성, 등)의 다수의 반복들을 포함할 수 있다. 이러한 경우들에서, 목적시 시스템(예를 들어, 도 1 내지 도 3의 제2 데이터 센터(130))을 업데이트하는 것은, 각각의 후속 반복에 의해 도입된 변경들을 반영하는 복제된 데이터에 대응하는 메모리 위치들의 업데이트된 레코드를 유지하는 것을 포함할 수 있다.
일부 실시예들에서, 비동기적 복제는 델타들(예를 들어, 도 3의 델타들(330)) 및 제1 체크포인트(320)에 대한 하나 이상의 동작들을 통해 제2 체크포인트(340)를 생성하는 것을 포함할 수 있다. 예를 들어, 제1 체크포인트(320)의 생성 이후에 소스 시스템으로부터의 다수의 델타들이 목적지 시스템에서 수신될 때, 메모리 위치들의 정확한 레코드는 제1 체크포인트만을 참조하는 것이 아니라 제1 체크포인트(320)에 적용되는 바와 같이 델타들에 의해 표시되는 변경들에 의해 더 양호하게 표현될 수 있다.
일부 실시예들에서, 제1 체크포인트(320)는 매니페스트(420)를 포함할 수 있다. 매니페스트(420)는 (예를 들어, 페일오버/페일백 동작들을 가이드하기 위한) 소스 시스템의 파티션에 대응할 수 있으며, 이와 같이, 다수의 매니페스트들은, 소스 시스템이 다수의 파티션들을 포함할 때 소스 시스템으로부터의 데이터의 비동기적 복제를 설명할 수 있다. 매니페스트(420)는 청크 포인터들(422)(예를 들어, 청크 포인터들(1-N), 여기서 'N"은 매니페스트(420)에 포함된 청크 포인터들(422)의 수를 참조하는 정수)을 포함할 수 있다. 청크 포인터들(422)은 (예를 들어, 데이터 저장부(132)에 청크 객체들로서 저장된) 복제된 데이터와 연관된 메모리 위치들을 설명할 수 있다. 제1 체크포인트(320)를 생성하는 것에 후속하여, 목적지 시스템은, 예를 들어, 스냅샷 생성 및 델타 생성의 반복에 의해 생성되는 바와 같은 다수의 델타들을 수신할 수 있다. 이러한 방식으로, 제2 체크포인트(340)를 생성하는 것은 델타들을 집성하는 것(예를 들어, 동작(450))을 포함할 수 있다. 예를 들어, 델타들을 집성하는 것은, 델타들이 생성된 스냅샷을 확인하기 위해 제1 체크포인트(320)의 식별자를 참조하는 것을 포함할 수 있다. 이러한 방식으로, 체크포인트 참조는, 수신된 델타들(스냅샷을 참조하는 식별자를 또한 포함함)이 매니페스트(420)에 이미 반영되었는지 여부의 결정을 가능하게 할 수 있다.
일부 실시예들에서, 델타들은 업데이트된 매니페스트(440)를 제공하기 위해 제1 체크포인트와 조합될 수 있다. 델타들을 조합하는 것은, 델타에 의해 표시된 바와 같은 매니페스트 내의 제1 청크 포인터(422-1)를 수정하는 것을 포함할 수 있다(예를 들어, 데이터의 위치에 대한 포인터는 델타에 의해 설명된 복제된 데이터에 대한 변환에 응답하여 변경될 수 있다). 이러한 방식으로, 모든 수신된 델타들에 표시된 모든 변환들을 매니페스트에 적용함으로써, 업데이트된 매니페스트(440)는, 페일오버/페일백 볼륨이 이전 매니페스트(예를 들어, 매니페스트(420))가 사용되는 경우보다 잠재적으로 감소된 RPO로 생성되는 것을 가능하게 할 수 있다. 유사하게, 비동기적 복제의 각각의 반복에 대해, 새로 생성된 델타들이 생성되고 목적지 시스템으로 전송될 수 있으며, 여기서 이들은 가장 최근의 매니페스트(예를 들어, 업데이트된 매니페스트)와 집성될 수 있다.
도 5는 하나 이상의 실시예들에 따른 스탠바이 볼륨으로부터 페일백 볼륨을 생성하기 위한 예시적인 기술(500)을 예시한다. 이상에서 설명된 바와 같이, 페일백 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))은, 소스 시스템, 예를 들어, 제1 데이터 센터(120)에서의 장애 복구의 부분으로서 수신될 수 있다. 목적지 시스템에서 호스팅되는 페일오버 볼륨 또는 역방향 복제와는 대조적으로, 페일백 볼륨은, 제1 데이터 센터(120)가 사용자 데이터를 호스팅하도록 선택되는 것을 야기하는 동일한 이유들(예를 들어, 성능 메트릭, 안정성, 등)로 선호될 수 있다.
일부 실시예들에서, 목적지 시스템, 예를 들어, 제2 데이터 센터(130)는, 소스 볼륨(522)에서 데이터를 복제하기 위해 스탠바이 볼륨(560)을 복제할 수 있다. 스탠바이 볼륨(560)은 소스 볼륨으로부터 수신된 모든 델타들을 포함할 수 있어서, 스탠바이 볼륨은 소스 볼륨(522)의 현재 상태를 반영할 수 있다. 예를 들어, 제1 델타(540)는 (예를 들어, 동작(512)에 의해) 소스 볼륨(522)으로부터 생성될 수 있으며, 제1 델타(540)는 (예를 들어, 동작(514)에 의해) 스탠바이 볼륨(560)에 직접적으로 적용될 수 있다. 일부 실시예들에서, 스탠바이 볼륨(560)에 델타를 적용하는 것은, 소스 볼륨으로부터 참조된 데이터(예를 들어, 수정된 블록들)를 카피(copy)하고 참조된 데이터를 입력-출력 동작(예를 들어, 사용자-기입 동작)과 유사한 방식으로 스탠바이 볼륨에 복제하는 것을 포함할 수 있다. 추가로, 델타를 적용하는 것은 도 4를 참조하여 설명된 바와 같이 매니페스트를 업데이트하는 것을 포함할 수 있다. 도 4가 청크 포인터들과 관련하여 매니페스트를 설명하지만, 매니페스트는 복제된 데이터가 저장될 수 있는 스탠바이 볼륨 내의 메모리 위치들을 유사하게 설명할 수 있다.
일부 실시예들에서, 스탠바이 볼륨(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)이 또한 삭제될 수 있다.
일부 실시예들에서, 스탠바이 볼륨(560)은 페일오버/페일백 요청을 수신하는 것(예를 들어, 동작(522))에 응답하여 페일오버 볼륨 또는 페일백 볼륨을 생성하기 위해 사용될 수 있다. 일부 실시예들에서, 데이터 복원은, 페일오버 볼륨에 대한 교차 영역 복제를 가능하게 함으로써 데이터를 다시 소스 영역으로 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 요청이 페일백 요청일 때, 스탠바이 볼륨(560)이 클로닝되고 제1 데이터 센터(120)에서 복원될 수 있다(예를 들어, 동작(524)). 스탠바이 볼륨(560)을 클로닝하는 것은, 제1 데이터 센터(120)에서 페일백 볼륨(562)을 생성하고 데이터를 복원하는 것을 포함할 수 있다(예를 들어, 때때로 "클론을 하이드레이트하는 것(hydrating)"으로 지칭됨). 일부 실시예들에서, 복원된 데이터는, 제2 델타가 페일백 요청이 구현된 시점에서 완전히 적용된 경우에, 제2 델타(550)에 의해 표시된 수정들을 포함할 수 있다. 클로닝을 사용하여 페일오버 복원을 구현하는 것은 잠재적으로, 교차 영역 복제가 기존 스탠바이 볼륨에서 계속되는 것을 가능하게 할 수 있다. 유익하게는, 클론 볼륨들은 적은 레이턴시로 또는 레이턴시 없이 이용가능할 수 있어서 RTO에 대한 무시할 수 있는 효과를 가능하게 한다.
도 6은 하나 이상의 실시예들에 따른 스탠바이 볼륨의 크기를 조정하기 위한 예시적인 기술(600)을 예시한다. 제1 데이터 센터(120)에서의 소스 볼륨(522)과 같은 소스 시스템의 정상 동작은, (예를 들어, 파티션들을 추가하거나, 파티션들을 제거하거나, 소스 볼륨(522)의 하나 이상의 파티션들의 크기를 조정하는 것 등을 위해) 소스 볼륨(522)의 크기를 조정하는 것을 포함할 수 있다. 일부 실시예들에서, 델타들이 하나의 파티션에 대해 생성되기 때문에, 소스 볼륨(522)의 크기를 조정하는 것은 스탠바이 볼륨(560)에 대한 소스 볼륨 델타들(522)의 매핑에 영향을 줄 수 있다. 이와 같이, 스탠바이 볼륨(560)은, 소스 볼륨(522)의 크기를 조정하는 것에 의해 도입되는 델타 적용에서의 잠재적인 오류들을 제한하기 위한 하나 이상의 접근방식들을 구현한 이후에 소스 볼륨(522)의 크기를 조정하는 것을 고려하도록 크기가 조정될 수 있다.
일부 실시예들에서, 하나 이상의 델타들(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)).
도 7은 하나 이상의 실시예들에 따른 복원 볼륨을 생성하기 위한 예시적인 흐름(700)을 예시한다. 흐름(700)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 스냅샷을 생성하는 동작(702)을 포함한다. 도 1 내지 도 2를 참조하여 상세하게 설명된 바와 같이, 블록 볼륨(예를 들어, 도 1의 블록 볼륨(122))은, 입력/출력 동작들, 안정성, 비용 등과 연관된 하나 이상의 성능 메트릭들에 적어도 부분적으로 기초하여 결정될 수 있는 제1 지리적 영역 내의 제1 데이터 센터(예를 들어, 도 1의 제1 데이터 센터(120))에서 호스팅될 수 있으며, 제1 스냅샷을 생성하는 것(예를 들어, 도 2의 동작(250))은 블록 볼륨을 구성하는 하나 이상의 블록들의 하나 이상의 블록 이미지들(예를 들어, 도 2의 블록 이미지들(232))을 생성하는 것을 포함할 수 있다. 스냅샷을 생성하는 것은 2-단계 커밋 프로토콜을 구현하는 것을 포함할 수 있으며, 이에 의해 입력-출력 동작들(예를 들어, 도 2의 I/O 동작들(210))은, 파티션에 대한 블록 이미지들이 생성되는 시간 동안 블록 볼륨의 해당 파티션에 대해 일시 중단될 수 있다. 블록 볼륨 시스템에 대한 또는 파티션에 대한 스냅샷의 생성 이후에, 컴퓨터 시스템은 블록 볼륨에 대한 입력-출력 동작들을 재개할 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 제2 지리적 영역에 있는 제2 저장 시스템으로 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 동작(704)을 포함한다. 일부 실시예들에서, 제1 스냅샷이 블록 볼륨의 생성된 가장 처음의 스냅샷일 때 또는 이전에 생성된 스냅샷이 이용가능하지 않은 경우와 같이, 스냅샷 데이터는 블록 이미지들을 포함할 수 있다. 이와 같이, 블록 이미지들은 시스템(예를 들어, 도 1의 데이터 저장부(132))으로 송신될 수 있다. 일부 구현예들에서, 블록 이미지들은 청크 객체들로 변환되고 스냅샷 데이터로서 제2 저장 시스템으로 송신될 수 있다(예를 들어, 도 2의 동작(252)). 일부 경우들에서, 청크 객체들은, 예를 들어, 메모리 내의 스냅샷 데이터의 위치들을 식별하는 청크 포인터들을 리스팅하는 매니페스트를 포함하는 스냅샷 데이터를 설명하는 메타데이터와 함께 송신된다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 제2 스냅샷을 생성하는 동작(706)을 포함한다. 도 2를 참조하여 더 상세하게 설명된 바와 같이, 제2 스냅샷(예를 들어, 도 2의 제2 스냅샷(240))은, 제1 스냅샷이 생성된 제1 논리적 시간(예를 들어, 도 2의 제1 논리적 시간(260)) 다음의 제2 논리적 시간(예를 들어, 도 2의 제2 논리적 시간(262))에서의 블록 볼륨의 상태를 설명할 수 있다. 제2 스냅샷은, 제1 스냅샷의 생성 이후에 발생한 블록 볼륨 시스템에 저장된 데이터에 대한 수정들(예를 들어, 데이터에 대한 판독-기입 동작들)에 대한 정보를 포함할 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 복수의 델타들을 생성하는 동작(708)을 포함한다. 제2 스냅샷을 제2 저장 시스템에 직접적으로 송신하는 것이 아니라, 복수의 델타들이 제2 스냅샷의 생성(예를 들어, 제2 논리적 시간)과 제1 스냅샷의 생성(예를 들어, 제1 논리적 시간) 사이의 블록 볼륨에 저장된 데이터에 대한 하나 이상의 변경들을 설명할 수 있다. 델타들을 생성하는 것은, 제2 스냅샷 내의 파티션의 블록 이미지들을 제1 스냅샷 내의 파티션의 대응하는 이미지들과 비교하는 것, 및 파티션 내의 데이터에 대한 하나 이상의 수정들을 식별하는 것을 포함할 수 있다. 도 1 내지 도 2를 참조하여 더 상세하게 설명된 바와 같이, 델타들은, 비제한적으로, 스냅샷에 대응하는 델타 식별자, 수정된 블록 볼륨 내의 데이터를 설명하는 하나 이상의 블록 식별자들, 및/또는 블록 식별자들에 의해 식별된 데이터의 위치들을 설명하는 대응하는 수의 객체 식별자들을 포함하는 메타데이터를 포함할 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 복수의 델타들에 대한 데이터를 송신하는 동작(710)을 포함한다. 도 2를 참조하여 상세하게 설명된 바와 같이, 데이터를 송신하는 것은 블록 볼륨 시스템으로부터 제2 저장 시스템으로 데이터의 복제본을 생성하는 것을 포함할 수 있다. 이는, 복제된 데이터가 객체 저장부에 저장될 때와 같이, 청크 객체들을 생성하는 것 및 청크 객체들을 제2 저장 시스템(예를 들어, 목적지 시스템)에 카피하는 것을 포함할 수 있다. 데이터에는 복수의 델타들이 수반될 수 있으며, 이들은 파티션 단위로 블록 볼륨 시스템의 블록들과 청크 객체들 사이의 대응성을 설명하는 메타데이터를 제공할 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 제2 지리적 영역에서 체크포인트를 생성하는 동작(712)을 포함한다. 도 3 내지 도 4를 참조하여 더 상세하게 설명된 바와 같이, 체크포인트(예를 들어, 도 3의 체크포인트(320))는 복수의 청크 포인터들을 설명하는 매니페스트(예를 들어, 도 4의 매니페스트(420))를 포함할 수 있다. 일부 실시예들에서, 체크포인트를 생성하는 것은, 체크포인트에 적용된 바와 같은 복수의 델타들에 포함된 수정들을 반영하는 제2 복수의 청크 포인터들을 설명하는 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(420))를 포함할 수 있는 업데이트된 체크포인트(예를 들어, 도 3의 제2 체크포인트(340))를 생성하기 위해 델타들을 이전에 생성된 체크포인트와 함께 집성하는 것(예를 들어, 도 4의 동작(450))을 포함할 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 복원 요청을 수신하는 동작(714)을 포함한다. 복원 요청(예를 들어, 도 1의 페일오버/페일백 요청(150))은 페일오버 볼륨으로도 지칭되는 복원 볼륨을 제2 지리적 위치에서 생성하기 위한 사용자 요청을 포함할 수 있다. 일부 실시예들에서, 복원 요청은 페일백 볼륨으로도 지칭되는 복원 볼륨을 제1 지리적 위치에서 생성하기 위한 사용자 요청을 포함할 수 있다. 일부 실시예들에서, 복원 요청은 비동기적 복제를 역전시키기 위한 요청을 포함할 수 있으며, 이에 의해 비동기적 복제를 위해 제2 저장 시스템(예를 들어, 도 1의 데이터 저장부(132))을 소스 시스템으로 지정하고 블록 볼륨 시스템(예를 들어, 도 1의 블록 볼륨 시스템(122))을 목적지 시스템으로 지정한다. 일부 실시예들에서, 복원 요청은 비동기적 복제의 구성의 부분으로서 (예를 들어, 사용자 상호작용 없이) 자동으로 생성될 수 있다. 예를 들어, 비동기적 복제 시스템은 소스 시스템에서 발생하는 장애에 응답하여 복원 요청을 자동으로 생성하도록 구성될 수 있다.
일 예에서, 흐름(700)은, 컴퓨터 시스템이 복원 볼륨을 생성하는 동작(716)을 포함한다. 복원 볼륨을 생성하는 것은, 도 3 및 도 5를 참조하여 설명된 바와 같이, 예를 들어, 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(440))를 참조하여 객체 저장부에 저장된 청크 객체들로부터의 복제 데이터를 블록 볼륨 내의 블록들에 매핑함으로써 블록 볼륨을 생성하는 것을 포함할 수 있다. 이러한 방식으로, 복원 볼륨은 백업 시스템에 의해 달성될 수 있는 것보다 더 낮은 RPO로 생성될 수 있다. 유사하게, 복원 요청을 수신하는 것과 정상 입력/출력 동작들을 재개하는 것 사이의 시간을 반영할 수 있는 시스템 복원 동작의 RTO는 복원 요청이 페일오버 또는 페일백 요청인지 여부에 의존할 수 있으며, 이는 이하에서 도 8 및 도 9를 참조하여 더 상세하게 설명된다.
도 8은 하나 이상의 실시예들에 따른 페일오버 볼륨을 생성하기 위한 예시적인 흐름(800)을 예시한다. 흐름(800)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.
일 예에서, 흐름(800)은, 컴퓨터 시스템이 페일오버 요청인 복원 요청을 수신하는 동작(802)을 포함한다. 이상에서 도 1 내지 도 6을 참조하여 더 상세하게 설명된 바와 같이, 페일오버 요청은, 분산 저장 시스템(예를 들어, 클라우드 저장부)의 부분을 형성할 수 있는 블록 볼륨 시스템(예를 들어, 도 1의 블록 볼륨 시스템(122))에 영향을 주는 재해 또는 다른 장애 이후에 비동기적 복제(예를 들어, 도 1의 비동기적 복제(140))에 의해 수신될 수 있다. 일부 실시예들에서, 페일오버 요청은, 블록 볼륨 시스템에 영향을 주는 장애에 의해 잠재적으로 영향을 받지 않은 제2 지리적 영역에서 블록 볼륨 시스템을 재현하는 페일오버 볼륨을 생성하기 위한 요청을 포함할 수 있다.
일 예에서, 흐름(800)은, 컴퓨터 시스템이 제2 지리적 영역에서 페일오버 볼륨을 생성하는 동작(804)을 포함한다. 일부 경우들에서, 페일오버 볼륨은, 블록 볼륨 시스템에 영향을 주는 장애가 해결되기 이전에 입력-출력 동작들(예를 들어, 도 2의 I/O 동작들(210))의 재개를 허용할 수 있다. 이러한 경우들에서, RTO는, 페일백 볼륨에 비해 페일오버 볼륨을 생성함으로써 개선될 수 있다. 이상에서 도 7을 참조하여 설명된 바와 같이, 객체 저장부에 저장된 복제 데이터를 사용하여 페일오버 볼륨을 생성하는 것은, 비동기적 복제 동안 생성된 최근에 집성된 델타들로 업데이트되는, 복제 데이터의 메모리 내의 위치들을 설명하는 업데이트된 매니페스트(예를 들어, 도 4의 업데이트된 매니페스트(440))를 참조하여 페일오버 볼륨을 생성하는 것을 포함할 수 있다.
일 예에서, 흐름(800)은, 컴퓨터 시스템이 페일오버 볼륨을 하이드레이트(hydrate)하는 동작(806)을 포함한다. 이상에서 더 상세하게 설명된 바와 같이, 페일오버 볼륨을 하이드레이트하는 것은, 업데이트된 매니페스트에서 설명된 데이터를 객체 저장부(예를 들어, 이상에서, 도 1을 참조하여 설명된 청크 객체들로 있는 것과 같음)로부터 블록 볼륨 시스템의 판독/기입 동작들(예를 들어, 도 2의 I/O 동작들(210))에 의해 어드레스가능할 수 있는 블록으로 복원하는 것을 포함한다. 일부 실시예들에서, 블록 볼륨 시스템의 파티션들은 페일오버 볼륨에서 보존될 수 있다.
일 예에서, 흐름(800)은, 컴퓨터 시스템이 입력-출력 동작들을 개시하는 동작(808)을 포함한다. 블록 볼륨 시스템으로부터의 복제된 데이터가 복원되고 페일오버 볼륨에 매핑되는 "하이드레이션" 다음에, 페일오버 볼륨은 입력-출력 동작들을 시작할 수 있으며, 장애가 해결될 수 있는 동안에 블록 볼륨 시스템의 역할을 맡을 수 있다.
도 9는 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(900)을 예시한다. 흐름(900)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.
일 예에서, 흐름(900)은, 컴퓨터 시스템이 페일백 요청인 복원 요청을 수신하는 동작(902)을 포함한다. 일부 실시예들에서, 복원 요청을 야기한 장애는 불명확한 지속기간이 아닐 수 있다. 예를 들어, 장애는, 장애가 쉽게 극복될 수 있는 일시적인 전력 또는 네트워크 중단들에 의해 초래된 때와 같이, 예측가능한 시간의 길이 내에 해결가능할 수 있다. 이와 같이, 페일백 요청은, (예를 들어, 분산 저장 성능의 관점으로부터의) 페일오버 볼륨을 생성하기 위한 바람직한 대안 및 페일오버 볼륨에 대한 RTO와 관련하여 잠재적으로 제한된 차이를 나타낼 수 있다.
일 예에서, 흐름(900)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨을 생성하는 동작(904)을 포함한다. 일부 실시예들에서, 스탠바이 볼륨은, 스탠바이 볼륨이 제2 지리적 영역(예를 들어, 도 1의 제2 데이터 센터(130))에서 입력-출력 동작들을 수행하도록 설계되지 않는다는 점을 제외하면 페일오버 볼륨과 유사한 블록 볼륨 시스템을 포함할 수 있다. 예를 들어, 스탠바이 볼륨은 분산 저장 시스템의 사용자에게 보이지 않을 수 있거나 및/또는 입력-출력 동작들에 대해 부적합하도록 구성될 수 있다. 일부 실시예들에서, 스탠바이 볼륨은 (예를 들어, 파티셔닝, 크기, 등과 관련하여) 블록 볼륨 시스템의 구조 및 청크 객체들로서 저장된 복제된 데이터에 대한 블록들의 매핑을 재현할 수 있다.
일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 스탠바이 볼륨을 클로닝하는 동작(906)을 포함한다. 이상에서 도 5를 참조하여 더 상세하게 설명된 바와 같이, 스탠바이 볼륨을 클로닝하는 것(예를 들어, 도 5의 동작(524))은, 적어도 부분적으로 스탠바이 볼륨의 구조를 사용하여 페일백 볼륨을 생성함으로써 제1 지리적 영역에 블록 볼륨 시스템을 복원하는 것을 포함할 수 있다. 예를 들어, 스탠바이 볼륨은 복제된 데이터의 구조 및 매핑들을 (예를 들어, 업데이트된 매니페스트를 참조하여) 설명할 수 있어서, 페일백 볼륨은, 일단 복제된 데이터가 제2 지리적 영역으로부터 다시 제1 지리적 영역으로 카피되면 새로운 매핑들로 복원되도록 구성될 수 있다.
일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 페일백 볼륨을 하이드레이트하는 동작(908)을 포함한다. 일부 실시예들에서, 페일백 볼륨을 하이드레이트하는 것은, 페일백 볼륨이 입력-출력 동작들을 재개할 수 있도록 제1 지리적 영역(예를 들어, 도 1의 제1 데이터 센터(120))으로 복제된 데이터를 복원하는 것을 포함할 수 있다. 복제된 데이터를 복원하는 것은, 제2 지리적 영역으로부터 제1 지리적 영역으로 데이터를 카피하는 것을 포함할 수 있다. 복제된 데이터를 복원하는 것은 또한, 비동기적 복제 반복들로부터의 매핑들로부터의 데이터(예를 들어, 델타 적용에 의해 생성된 것들)를 페일백 볼록 볼륨 시스템 내의 새로운 데이터 위치들에 대응하는 새로운 매핑들로 다시 매핑하는 것을 포함할 수 있다.
일 예에서, 흐름(900)은, 컴퓨터 시스템이 제1 지리적 영역에서 입력-출력 동작들을 시작하는 동작(910)을 포함한다. 입력-출력 동작들은 페일백 볼륨을 사용하여 데이터를 액세스하는 것, 저장하는 것, 및 수정하는 것을 설명한다. 시스템 복원의 부분으로서, 낮은 RTO 및 낮은 RPO는 시스템 성능을 개선할 수 있다. 적어도 이러한 이유로, 일부 실시예들에서, 입력-출력 동작들은, 동작(908)의 데이터 복원이 진행 중인 동안 시작될 수 있다. 예를 들어, 판독-기입 동작들은, 복제된 데이터가 제2 지리적 영역으로부터 다시 제1 지리적 영역으로 완전히 카피되기 이전에 시작될 수 있다. 일부 실시예들에서, 카피-오버(copy over) 및 재매핑은, 페일백 볼륨에서 입력-출력 동작들이 시작되기 이전에 완전히 완료될 수 있다.
도 10은 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(1000)을 예시한다. 흐름(1000)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.
도 6을 참조하여 더 상세하게 설명된 바와 같이, 일부 실시예들에서, 비동기적 복제는, 복제된 데이터의 객체 저장물에 추가적으로 또는 대안적으로, 제2 지리적 위치에 있는 스탠바이 볼륨을 포함할 수 있다. 델타들에 의해 설명된 데이터를 (예를 들어, 도 1의 데이터 변환(146)을 참조하여 설명된 바와 같이) 청크 객체들로 변환하는 것이 아니라, 스탠바이 볼륨은 블록 볼륨 시스템으로부터 스탠바이 볼륨으로의 블록 데이터의 직접 전송을 포함할 수 있다. 일부 실시예들에서, 스탠바이 볼륨은 블록 볼륨 시스템의 사용자에게 보이지 않을 수 있지만(예를 들어, 입력-출력 동작들을 위해 이용가능하지 않을 수 있지만), 블록 볼륨 시스템에 영향을 주는 중단의 경우에 RTO 및 RPO를 잠재적으로 최소화하기 위해 업데이트된 블록 데이터를 유지할 수 있다. 일부 실시예들에서, 스탠바이 볼륨은, 예를 들어, 객체 저장 데이터에 대한 체크포인트 동작들을 또한 구현하면서 델타들로부터 데이터를 캐싱(caching)함으로써 목적지 영역에서 객체 저장과 상호작용할 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨 시스템으로부터 델타를 생성하는 동작(1002)을 포함한다. 델타는, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 제1 논리적 시간에서의 제1 스냅샷과 제2 논리적 시간에서의 제2 스냅샷 사이의 블록 볼륨 시스템에 저장된 데이터에 대한 수정들을 나타낼 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨 시스템의 스냅샷을 생성하는 동작(1004)을 포함한다. 일부 실시예들에서, 스탠바이 볼륨을 업데이트하는 것 이전에 스탠바이 볼륨의 스냅샷을 생성하는 것이 선행될 수 있다. 도 1을 참조하여 상세하게 설명된 바와 같이, 스냅샷을 생성하는 것은, 스탠바이 볼륨을 구성하는 블록들의 복수의 블록 이미지들을 파티션 단위로 생성하는 것을 포함할 수 있다. 조립되면, 이러한 이미지들은 (예를 들어, 이상에서 2-단계 커밋 프로토콜들을 참조하여 설명된 바와 같이) 스냅샷의 생성에 대응하는 논리적 시간에서의 스탠바이 볼륨 내의 데이터의 상태를 설명할 수 있다. 스냅샷은, 블록 볼륨 시스템을 복원할 때 사용하기 위한 비동기적 복제 시스템에 대한 폴백(fallback) 위치를 제공할 수 있다. 예를 들어, 스탠바이 볼륨이 새로운 델타들로 업데이트되고 있는 동안 복원 요청이 수신되는 경우, 비동기적 복제는 스냅샷을 사용하여 복원 볼륨을 생성할 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 델타를 스탠바이 볼륨 시스템에 적용하는 동작(1006)을 포함한다. 객체 저장부를 사용하는 데이터 복제를 참조하여 설명된 접근방식과는 대조적으로, 스탠바이 볼륨은 델타들을 직접적으로 적용함으로써 업데이트될 수 있다. 예를 들어, 도 2를 참조하여 더 상세하게 설명된 바와 같이, 델타는, 수정의 결과로서 복제되는 데이터에 대한 블록 볼륨 시스템의 메모리 내의 위치를 설명하는 메타데이터(예를 들어, 블록 식별자)를 포함할 수 있다. 이러한 방식으로, 델타로부터의 표시된 수정을 적용함으로써 스탠바이 볼륨에 대한 수정이 이루어질 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 페일백 요청을 수신하는 동작(1008)을 포함한다. 이상에서 설명된 바와 같이, 페일백 요청은 블록 볼륨 시스템에서의 동작의 장애 또는 다른 중단 이후에 수신될 수 있어서, 스탠바이 시스템은 중단이 해결된 이후에 페일백 시스템을 생성하기 위해 사용될 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 스탠바이 볼륨을 클로닝하는 동작(1010)을 포함한다. 도 5를 참조하여 더 상세하게 설명된 바와 같이, 스탠바이 볼륨을 클로닝하는 것(예를 들어, 도 5의 동작(524))은, (예를 들어, 크기, 파티션들, 등과 관련하여) 스탠바이 볼륨의 구조를 재현할 수 있는 제1 지리적 영역(예를 들어, 도 1의 제1 데이터 센터(120))에서 페일백 볼륨(예를 들어, 도 5의 페일백 볼륨(562))을 생성하는 것을 포함할 수 있다.
일 예에서, 흐름(1000)은, 컴퓨터 시스템이 복제된 데이터를 제1 지리적 영역에서의 페일백 볼륨으로 복원하는 동작(1012)을 포함한다. 이상에서 설명된 바와 같이, 복제된 데이터를 복원하는 것은, 제2 지리적 영역으로부터의 블록 데이터를 제1 지리적 영역으로 카피하는 것("하이드레이팅"으로도 지칭됨) 및 블록 데이터를 페일백 볼륨에 매핑하는 것을 포함할 수 있다. 일부 구현예들에서, 입력-출력 동작들은, 일단 복제된 데이터가 복원되면 및/또는 복제된 데이터를 복원하는 동안에 페일백 볼륨에서 시작될 수 있다.
도 11은 하나 이상의 실시예들에 따른 페일백 볼륨을 생성하기 위한 예시적인 흐름(1100)을 예시한다. 흐름(1100)의 동작들은, 도 1의 비동기적 복제 시스템(140)과 같은, 컴퓨터 시스템의 비-일시적 컴퓨터-판독가능 매체 상에 컴퓨터-판독가능 명령어들로서 저장되거나 및/또는 하드웨어 회로부로서 구현될 수 있다. 구현된 바와 같이, 명령어들은 컴퓨터 시스템의 프로세서(들)에 의해 실행가능한 코드 또는 회로부를 포함하는 모듈들을 나타낸다. 이러한 명령어들의 실행은 본원에서 설명된 특정 동작들을 수행하도록 컴퓨터 시스템을 구성한다. 프로세서와 결합하여 각각의 회로부 또는 코드는 개별적인 동작(들)을 수행한다. 동작들이 특정 순서로 예시되지만, 특정 순서가 필수적이지 않으며 하나 이상의 동작들이 생략되거나, 스킵되거나 및/또는 재배열될 수 있다는 것을 이해해야 한다.
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 크기 조정 요청을 수신하는 동작(1102)을 포함한다. 예를 들어, 스냅샷 생성의 반복들 사이의 또는 델타 생성 동안의 비동기적 복제 시스템의 동작 동안, 제1 지리적 영역에서의 블록 볼륨 시스템은 크기 조정 요청을 받을 수 있다. 크기 조정 요청이 하나 이상의 파티션들의 추가 및/또는 제거, 또는 블록 볼륨 시스템의 하나 이상의 파티션들의 크기의 변경을 포함할 수 있기 때문에, 크기 조정 이전에 생성된 델타들은 이것이 크기 조정이 된 이후의 스탠바이 볼륨과 호환되지 않을 수 있다.
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 마지막 델타를 생성하는 동작(1104)을 포함한다. 일부 실시예들에서, 비동기적 복제 시스템은, 블록 볼륨 시스템의 크기 조정 요청의 수신에 응답하여 수정된 복제 프로토콜을 구현할 수 있다. 예를 들어, 크기 조정 요청의 수신 시에 즉시 블록 볼륨 시스템을 크기 조정하는 것이 아니라, 다른 스냅샷이 생성될 수 있고, 하나 이상의 마지막 델타들이 생성될 수 있다. 이러한 접근방식은 복제된 데이터가 크기 조정 이전의 블록 볼륨 시스템의 업데이트된 상태를 반영하는 것을 가능하게 할 수 있으며, 이는 결과적으로 복제된 데이터로부터 생성된 복원 볼륨의 RPO를 감소시킬 수 있다.
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제2 지리적 영역에서 스탠바이 볼륨에 마지막 델타를 적용하는 동작(1106)을 포함한다. 이상에서 설명된 바와 같이, 마지막 델타를 적용하는 것은, 동작(1104)에서 생성된 하나 이상의 마지막 델타들에 의해 설명되는 블록 볼륨 시스템에 대한 수정들을 반영하도록 스탠바이 볼륨을 수정하는 것을 포함할 수 있다.
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 제1 지리적 영역에서 블록 볼륨의 크기를 조정하는 동작(1108)을 포함한다. 동작(1104) 다음에, 크기 조정 요청은 블록 볼륨 시스템에 적용될 수 있다.
일 예에서, 흐름(1100)은, 컴퓨터 시스템이 크기 조정 요청에 대응하여 스탠바이 볼륨의 크기를 조정하는 동작(1110)을 포함한다. 유사하게, 동작(1106) 다음에, 스탠바이 볼륨은 또한 크기 조정 요청에 대응하는 방식으로 크기가 조정될 수 있다. 비동기적 복제가 파티션-특정 델타들을 생성할 수 있기 때문에, 스탠바이 볼륨은 블록 볼륨 시스템의 구조를 재현하도록 구조화될 수 있다. 예를 들어, 스탠바이 볼륨은 블록 볼륨 시스템과 동일한 크기의 동일한 수의 파티션들을 포함할 수 있다.
이상에서 언급된 바와 같이, 서비스형 인프라스트럭처(infrastructure as a service; IaaS)는 클라우드 컴퓨팅의 하나의 특정 유형이다. IaaS는 공용 네트워크(예를 들어, 인터넷)를 통해 가상화된 컴퓨팅 자원들을 제공하도록 구성될 수 있다. IaaS 모델에서, 클라우드 컴퓨팅 제공자는 인프라스트럭처 구성요소들(예를 들어, 서버들, 저장 디바이스들, 네트워크 노드들(예를 들어, 하드웨어), 배포 소프트웨어, 플랫폼 가상화(예를 들어, 하이퍼바이저 계층), 또는 유사한 것)을 호스팅할 수 있다. 일부 경우들에서, IaaS 제공자는 또한 이러한 인프라스트럭처 구성요소들에 수반되는 다양한 서비스들(예를 들어, 청구, 모니터링, 로깅, 보안, 부하 밸런싱 및 클러스팅, 등)을 공급할 수 있다. 따라서, 이러한 서비스들이 정책-구동될 수 있기 때문에, IaaS 사용자들은 애플리케이션 가용성 및 성능을 유지하기 위한 부하 밸런싱을 구동하기 위한 정책들을 구현할 수 있다.
일부 인스턴스들에서, IaaS 고객은 인터넷과 같은 광역 네트워크(wide area network; WAN)를 통해 자원들 및 서비스들에 액세스할 수 있으며, 애플리케이션 스택의 나머지 요소들을 설치하기 위해 클라우드 제공자의 서비스들을 사용할 수 있다. 예를 들어, 사용자는 가상 머신(virtual machine; VM)들을 생성하고, 각각의 VM에 운영 체계(operating system; OS)들을 설치하며, 데이터베이스와 같은 미들웨어를 배치하고, 작업부하들 및 백업들에 대한 저장 버킷들을 생성하며, 심지어 해당 VM 내에 기업 소프트웨어를 설치하기 위해 IaaS 플랫폼에 로그인할 수 있다. 그런 다음, 고객들은, 네트워크 트래픽의 밸런싱, 애플리케이션 이슈들의 트러블슈팅, 성능의 모니터링, 재해 복구의 관리, 등을 포함하는 다양한 기능들을 수행하기 위해 제공자의 서비스들을 사용할 수 있다.
대부분의 경우들에서, 클라우드 컴퓨팅 모델은 클라우드 제공자의 참여를 필요로 할 것이다. 클라우드 제공자는, 반드시 그래야 하지는 않지만, IaaS를 제공(예를 들어, 제공, 임대, 판매)하는 것을 전문으로 하는 제3자 서비스일 수 있다. 엔티티(entity)는 또한 사설 클라우드를 배포하여 인프라스트럭처 서비스들의 자체 제공자가 될 것을 선택할 수도 있다.
일부 예들에서, IaaS 배포는 새로운 애플리케이션 또는 애플리케이션의 새로운 버전을 준비된 애플리케이션 서버 또는 유사한 것에 배치하는 프로세스이다. 이는 또한, 서버를 준비하는(예를 들어, 라이브러리들, 데몬들, 등을 설치하는) 프로세스를 포함할 수 있다. 이는 보통 하이퍼바이저 계층(예를 들어, 서버들, 저장부, 네트워크 하드웨어, 및 가상화) 아래에서 클라우드 제공자에 의해 관리된다. 따라서, 고객은 (예를 들어, 셀프-서비스 가상 머신들(예를 들어, 요청 시 가동될 수 있음) 또는 유사한 것 상에서) 핸들링(OS), 미들웨어, 및/또는 애플리케이션 배포를 담당할 수 있다.
일부 예들에서, IaaS 프로비저닝은 사용하기 위한 컴퓨터들 또는 가상 호스트들을 획득하고, 심지어 이들에 필요한 라이브러리들 또는 서비스들을 설치하는 것을 나타낼 수 있다. 대부분의 경우들에서, 배포는 프로비저닝을 포함하지 않으며, 프로비저닝이 먼저 수행되어야 할 수 있다.
일부 경우들에서, IaaS 프로비저닝에 대해 2개의 상이한 문제들이 있다. 첫째, 어떤 것도 실행되기 이전에 인프라스트럭처의 초기 세트를 프로비저닝해야 하는 초기 문제가 있다. 둘째, 일단 모든 것이 프로비저닝되면 기존 인프라스트럭처를 진화시키는 문제(예를 들어, 새로운 서비스들을 추가하는 것, 서비스들을 변경하는 것, 서비스들을 제거하는 것, 등)가 있다 일부 경우들에서, 이러한 2개의 문제들은, 인프라스트럭처의 구성이 선언적으로 정의되는 것을 가능하게 함으로써 해결될 수 있다. 다시 말해서, 인프라스트럭처(예를 들어, 필요한 구성요소들 및 이들이 상호작용하는 방법)는 하나 이상의 구성 파일들에 의해 정의될 수 있다. 따라서, 인프라스트럭처의 전체 토폴로지(예를 들어, 어떤 리소스들이 어떤 것에 의존하는지, 그리고 이들이 각각 함께 작용하는 방법)는 선언적으로 설명될 수 있다. 일부 경우들에서, 일단 토폴로지가 정의되면, 구성 파일들에서 설명된 상이한 구성요소들을 생성하거나 및/또는 관리하는 워크플로우(workflow)가 생성될 수 있다.
일부 예들에서, 인프라스트럭처는 다수의 상호연결된 요소들을 가질 수 있다. 예를 들어, 코어 네트워크로도 알려진 하나 이상의 가상 사설 클라우드(virtual private cloud; VPC)(예를 들어, 구성가능한 및/또는 공유된 컴퓨팅 자원들의 잠재적으로 온-디맨드 풀)가 존재할 수 있다. 일부 예들에서, 네트워크의 보안이 셋업될 방법 및 하나 이상의 가상 머신(VM)들을 정의하기 위해 프로비저닝된 하나 이상의 보안 그룹 규칙들도 존재할 수 있다. 부하 밸런서, 데이터베이스, 또는 유사한 것과 같은 다른 인프라스트럭처 요소들이 또한 프로비저닝될 수 있다. 점점 더 많은 인프라스트럭처 요소들이 희망되거나 및/또는 추가됨에 따라, 인프라스트럭처는 점진적으로 발전할 수 있다.
일부 경우들에서, 연속적인 배포 기술들은 다양한 가상 컴퓨팅 환경들에 걸친 인프라스트럭처 코드의 배포를 가능하게 하기 위해 이용될 수 있다. 추가적으로, 설명되는 기술들은 이러한 환경들 내에서 인프라스트럭처 관리를 가능하게 할 수 있다. 일부 예들에서, 서비스 팀들은, (예를 들어, 다양하고 상이한 지리적 위치들에 걸쳐, 때때로 전 세계에 걸쳐) 하나 이상의 하지만 흔히 다수의 상이한 생산 환경들로 배포되도록 희망되는 코드를 작성할 수 있다. 그러나, 일부 예들에서, 코드가 배포될 인프라스트럭처가 먼저 셋업되어야 한다. 일부 경우들에서, 프로비저닝은 수동으로 이루어질 수 있으며, 프로비저닝 툴은 자원들을 프로비저닝하기 위해 사용될 수 있거나 및/또는 배포 툴은 일단 인프라스트럭처가 프로비저닝되면 코드를 배포하기 위해 사용될 수 있다.
도 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 게이밍 콘솔), 및/또는 개인용 메시징 디바이스일 수 있다.
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)를 포함할 수 있다.
제어 평면 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)을 포함할 수 있다.
제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 인터넷 게이트웨이(1234)는, 공용 인터넷(1254)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1252)에 통신가능하게 결합될 수 있다. 공용 인터넷(1254)은 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 NAT 게이트웨이(1238)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)의 서비스 게이트웨이(1236)는 클라우드 서비스들(1256)에 통신가능하게 결합될 수 있다.
일부 예들에서, 제어 평면 VCN(1216) 또는 데이터 평면 VCN(1218)의 서비스 게이트웨이(1236)는 공용 인터넷(1254)을 거치지 않는 클라우드 서비스들(1256)에 대한 애플리케이션 프로그래밍 인터페이스(application programming interface; API) 호출(call)들을 만들 수 있다. 서비스 게이트웨이(1236)로부터 클라우드 서비스들(1256)로의 API 호출들은 1-방향일 수 있다: 서비스 게이트웨이(1236)는 클라우드 서비스들(1256)로의 호출들을 만들 수 있으며, 클라우드 서비스들(1256)은 서비스 게이트웨이(1236)로 요청된 데이터를 전송할 수 있다. 그러나, 클라우드 서비스들(1256)은 서비스 게이트웨이(1236)에 대한 API 호출들을 개시하지 않을 수 있다.
일부 예들에서, 보안 호스트 테넌시(1204)는, 그렇지 않았다면 격리되었을 서비스 테넌시(1219)에 직접적으로 연결될 수 있다. 보안 호스트 서브넷(1208)은, 달리 격리된 시스템을 통한 2-방향 통신을 가능하게 할 수 있는 LPG(1210)를 통해 SSH 서브넷(1214)과 통신할 수 있다. 보안 호스트 서브넷(1208)을 SSH 서브넷(1214)에 연결하는 것은 서비스 테넌시(1219) 내의 다른 엔티티들에게 보안 호스트 서브넷(1208) 액세스를 제공할 수 있다.
제어 평면 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)에 저장될 수 있다.
일부 예들에서, 데이터 평면 미러 앱 계층(1240)은 제어 평면 VCN(1216)과 데이터 평면 VCN(1218) 사이의 직접 통신을 가능하게 할 수 있다. 예를 들어, 구성에 대한 변경들, 업데이트들, 또는 다른 적절한 수정들은 데이터 평면 VCN(1218)에 포함된 자원들에 적용되도록 희망될 수 있다. VNIC(1242)를 통해, 제어 평면 VCN(1216)은 데이터 평면 VCN(1218)에 포함된 자원들과 직접적으로 통신할 수 있으며, 그럼으로써 데이터 평면 VCN에 포함된 자원들에 대해 구성에 대한 변경들, 업데이트들 또는 다른 적절한 수정들을 실행할 수 있다.
일부 실시예들에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은 서비스 테넌시(1219)에 포함될 수 있다. 이러한 경우에, 시스템의 사용자 또는 고객은 제어 평면 VCN(1216) 또는 데이터 평면 VCN(1218)를 소유하거나 또는 운영하지 않을 수 있다. 대신에, IaaS 제공자가 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)를 소유하거나 또는 운영할 수 있으며, 이들 둘 모두는 서비스 테넌시(1219)에 포함될 수 있다. 이러한 실시예는, 사용자들 또는 고객들이 다른 사용자들의 또는 다른 고객들의 자원들과 상호작용하는 것을 방지할 수 있는 네트워크들의 격리를 가능하게 할 수 있다. 또한, 이러한 실시예는 시스템의 사용자들 또는 고객들이, 저장을 위해 희망되는 보안 레벨을 갖지 않을 수 있는 공용 인터넷(1254)에 의존할 필요 없이 데이터베이스들을 사적으로 저장하는 것을 가능하게 할 수 잇다.
다른 실시예들에서, 제어 평면 VCN(1216)에 포함된 LB 서브넷(들)(1222)은 서비스 게이트웨이(1236)로부터 신호를 수신하도록 구성될 수 있다. 이러한 실시예에서, 제어 평면 VCN(1216) 및 데이터 평면 VCN(1218)은, 공용 인터넷(1254)을 호출하지 않고 IaaS 제공자의 고객에 의해 호출되도록 구성될 수 있다. 고객들이 사용하는 데이터베이스(들)가 IaaS 제공자에 의해 제어될 수 있으며 공용 인터넷(1254)으로부터 격리될 수 있는 서비스 테넌시(1219) 상에 저장될 수 있기 때문에, IaaS 제공자의 고객들은 이러한 실시예를 희망할 수 있다.
도 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)에 포함될 수 있다.
제어 평면 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)를 포함할 수 있다.
제어 평면 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))에 통신가능하게 결합될 수 있다.
일부 예들에서, 데이터 평면 VCN(1318)은 고객 테넌시(1321)에 포함될 수 있다. 이러한 경우에, IaaS 제공자는 각각의 고객에 대해 제어 평면 VCN(1316)를 제공할 수 있으며, IaaS 제공자는, 각각의 고객에 대해, 서비스 테넌시(1319)에 포함된 고유 컴퓨팅 인스턴스(1344)를 셋업할 수 있다. 각각의 컴퓨팅 인스턴스(1344)는 서비스 테넌시(1319)에 포함된 제어 평면 VCN(1316)과 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318) 사이의 통신을 가능하게 할 수 있다. 컴퓨팅 인스턴스(1344)는 서비스 테넌시(1319)에 포함된 제어 평면 VCN(1316)에 프로비저닝된 자원들이 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318)에 배포되거나 또는 달리 사용되는 것을 가능하게 할 수 있다.
다른 예들에서, 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)은 고객의 자원들의 희망되는 배포 또는 다른 사용을 가능하게 할 수 있다.
일부 실시예들에서, IaaS 제공자의 고객은 데이터 평면 VCN(1318)에 필터들을 적용할 수 있다. 이러한 실시예에서, 고객은 데이터 평면 VCN(1318)이 액세스할 수 있는 것을 결정할 수 있고, 고객은 데이터 평면 VCN(1318)으로부터 공용 인터넷(1354)에 대한 액세스를 제한할 수 있다. IaaS 제공자는 임의의 외부 네트워크들 또는 데이터베이스들에 대한 데이터 평면 VCN(1318)의 액세스에 필터를 적용하거나 또는 달리 이를 제어하지 못할 수 있다. 고객 테넌시(1321)에 포함된 데이터 평면 VCN(1318) 상에 고객에 의한 필터들 및 제어들을 적용하는 것은 데이터 평면 VCN(1318)을 다른 고객들 및 공용 인터넷(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와 통신가능하게 결합되거나 또는 이와 달리 통신하지 않을 수 있다.
도 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))에 포함될 수 있다.
제어 평면 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)를 포함할 수 있다.
데이터 평면 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)을 포함할 수 있다.
신뢰할 수 없는 앱 서브넷(들)(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)를 포함할 수 있다.
제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 인터넷 게이트웨이(1434)는, 공용 인터넷(1454)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1452)(예를 들어, 도 12의 메타데이터 관리 시스템(1252))에 통신가능하게 결합될 수 있다. 공용 인터넷(1454)은, 제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 NAT 게이트웨이(1438)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1416)에 포함되고 데이터 평면 VCN(1418)에 포함된 서비스 게이트웨이(1436)는 클라우드 서비스들(1456)에 통신가능하게 결합될 수 있다.
일부 실시예들에서, 데이터 평면 VCN(1418)은 고객 테넌시들(1470)과 통합될 수 있다. 이러한 통합은, 코드를 실행할 때 지원을 희망할 수 있는 경우와 같은 일부 경우들에서 IaaS 제공자의 고객들에 대해 유용하거나 또는 바람직할 수 있다. 고객은, 파괴적일 수 있거나 또는 다른 고객 자원들과 통신할 수 있거나 또는 달리 바람직하지 않은 효과들을 야기할 수 있는, 실행할 코드를 제공할 수 있다. 이에 응답하여, IaaS 제공자는 고객에 의해 IaaS 제공자에게 주어진 코드를 실행할지 여부를 결정할 수 있다.
일부 예들에서, 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) 또는 달리 폐기할 수 있다.
일부 실시예들에서, 신뢰할 수 있는 앱 서브넷(들)(1460)은, IaaS 제공자에 의해 소유되거나 또는 운영될 수 있는 코드를 실행할 수 있다. 이러한 실시예에서, 신뢰할 수 있는 앱 서브넷(들)(1460)은 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있으며, DB 서브넷(들)(1430)에서 CRUD 동작들을 실행하도록 구성될 수 있다. 신뢰할 수 없는 앱 서브넷(들)(1462)은 DB 서브넷(들)(1430)에 통신가능하게 결합될 수 있지만, 이러한 실시예에서, 신뢰할 수 없는 앱 서브넷(들)은 DB 서브넷(들)(1430)에서 판독 동작들을 실행하도록 구성될 수 있다. 각각의 고객의 VM(1466(1)-(N))에 포함될 수 있으며 고객으로부터의 코드를 실행할 수 있는 컨테이너들(1471(1)-(N))은 DB 서브넷(들)(1430)과 통신가능하게 결합되지 않을 수 있다.
다른 실시예들에서, 제어 평면 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)과 통신할 수 있는 서비스에 대한 요청을 포함할 수 있다.
도 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))에 포함될 수 있다.
제어 평면 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)을 포함할 수 있다.
신뢰할 수 없는 앱 서브넷(들)(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)를 포함할 수 있다.
제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 인터넷 게이트웨이(1534)는, 공용 인터넷(1554)에 통신가능하게 결합될 수 있는 메타데이터 관리 서비스(1552)(예를 들어, 도 12의 메타데이터 관리 시스템(1252))에 통신가능하게 결합될 수 있다. 공용 인터넷(1554)은, 제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 NAT 게이트웨이(1538)에 통신가능하게 결합될 수 있다. 제어 평면 VCN(1516)에 포함되고 데이터 평면 VCN(1518)에 포함된 서비스 게이트웨이(1536)는 클라우드 서비스들(1556)에 통신가능하게 결합될 수 있다.
일부 예들에서, 도 15의 블록도(1500)의 아키텍처에 의해 예시된 패턴은 도 14의 블록도(1400)의 아키텍처에 의해 예시된 패턴에 대한 예외로서 간주될 수 있으며, IaaS 제공자가 고객과 직접적으로 통신할 수 없는 경우(예를 들어, 분리된 영역) IaaS 제공자의 고객에게 바람직할 수 있다. 각각의 고객에 대한 VM들(1566(1)-(N))에 포함된 개별적인 컨테이너들(1567(1)-(N))은 고객에 의해 실시간으로 액세스될 수 있다. 컨테이너들(1567(1)-(N))은, 컨테이너 출구 VCN(1568)에 포함될 수 있는 데이터 패널 앱 계층(1546)의 앱 서브넷(들)(1526)에 포함된 개별적인 2차 VNIC들(1572(1)-(N))에 대한 호출들을 만들도록 구성될 수 있다. 2차 VNIC들(1572(1)-(N))은, 공용 인터넷(1554)으로 호출들을 송신할 수 있는 NAT 게이트웨이(1538)로 호출들을 송신할 수 있다. 이러한 예에서, 고객에 의해 실시간으로 액세스될 수 있는 컨테이너들(1567(1)-(N))은 제어 평면 VCN(1516)으로부터 격리될 수 있고, 데이터 평면 VCN(1518)에 포함된 다른 엔티티들로부터 격리될 수 있다. 컨테이너들(1567(1)-(N))은 또한 다른 고객들의 자원들로부터 격리될 수 있다.
다른 예들에서, 고객은 클라우드 서비스들(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)로 요청을 송신할 수 있다.
도면들에 도시된 IaaS 아키텍처들(1200, 1300, 1400, 1500)이 도시된 것들과는 다른 구성요소들을 가질 수 있다는 것이 이해되어야 한다. 추가로, 도면에 도시된 실시예는 본 발명의 일 실시예를 통합할 수 있는 클라우드 인프라스트럭처 시스템의 단지 일부 예들이다. 일부 다른 실시예들에서, IaaS 시스템들은 도면들에 도시된 것보다 더 많거나 또는 더 적은 구성요소들을 가질 수 있거나, 2개 이상의 구성요소들을 결합할 수 있거나, 또는 구성요소들의 상이한 구성 또는 배열을 가질 수 있다.
특정 실시예들에서, 본원에서 설명된 IaaS 시스템들은, 셀프-서비스(self-service)의, 가입-기반(subscription-based)의, 탄력적 스케일러블(scalable)의, 신뢰할 수 있는, 고도로 이용가능하며, 안전한 방식으로 고객에게 전달되는 애플리케이션들, 미들웨어, 및 데이터베이스 서비스 제공(offering)들의 스위트(suite)를 포함할 수 있다. 이러한 IaaS 시스템의 일 예는 본 양수인에 의해 제공되는 오라클 클라우드 인프라스트럭처(Oracle Cloud Infrastructure; OCI)이다.
도 16은 본 개시의 다양한 실시예들에 구현될 수 있는 예시적인 컴퓨터 시스템(1600)을 예시한다. 시스템(1600)은 이상에서 설명된 컴퓨터 시스템들 중 임의의 것을 구현하기 위하여 사용될 수 있다. 도면에 도시된 바와 같이, 컴퓨터 시스템(1600)은 버스 서브시스템(1602)을 통해 복수의 주변 서브시스템들과 통신하는 프로세싱 유닛(1604)을 포함한다. 이러한 주변 서브시스템들은 프로세싱 가속 유닛(1606), I/O 서브시스템(1608), 저장 서브시스템(1618) 및 통신 서브시스템(1624)을 포함할 수 있다. 저장 서브시스템(1618)은 유형적인 컴퓨터-판독가능 저장 매체(1622) 및 시스템 메모리(1610)를 포함한다.
버스 서브시스템(1602)은 컴퓨터 시스템(1600)의 다양한 구성요소들 및 서브시스템들이 의도된 바와 같이 서로 통신하는 것을 가능하게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(1602)이 단일 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예들은 복수의 버스들을 사용할 수 있다. 버스 서브시스템(1602)은, 다양한 버스 아키텍처들 중 임의의 것을 사용하는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 및 로컬 버스를 포함하는 몇몇 유형들의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 이러한 아키텍처들은, 산업 표준 아키텍처(Industry Standard Architecture; ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture; MCA) 버스, 개량 ISA(Enhanced ISA; EISA) 버스, 비디오 전자공학 표준 위원회(Video Electronics Standards Association; VESA) 로컬 버스, 및 주변 컴포넌트 상호연결(Peripheral Component Interconnect; PCI) 버스를 포함할 수 있으며, 이들은 IEEE P1386.1 표준에 대하여 제조되는 메자닌 버스(Mezzanine bus)로서 구현될 수 있다.
하나 이상의 집적 회로들(예를 들어, 통상적인 마이크로프로세서 또는 마이크로제어기)로서 구현될 수 있는 프로세싱 유닛(1604)은 컴퓨터 시스템(1600)의 동작을 제어한다. 하나 이상의 프로세서들이 프로세싱 유닛(1604) 내에 포함될 수 있다. 이러한 프로세서들은 단일 코어 또는 다중코어 프로세서들을 포함할 수 있다. 특정 실시예들에 있어서, 프로세싱 유닛(1604)은 각각의 프로세싱 유닛 내에 포함된 단일 또는 다중코어 프로세서들을 갖는 하나 이상의 독립적인 프로세싱 유닛들(1632 및/또는 1634)로서 구현될 수 있다. 다른 실시예들에 있어서, 프로세싱 유닛(1604)은 또한 2개의 듀얼-코어 프로세서들을 단일 칩 내에 통합함으로써 형성된 쿼드-코어 프로세싱 유닛으로서 구현될 수 있다.
다양한 실시예들에 있어서, 프로세싱 유닛(1604)은 프로그램 코드에 응답하여 다양한 프로그램들을 실행할 수 있으며, 프로그램들 또는 프로세스들의 동시 다중 실행을 유지할 수 있다. 임의의 주어진 시점에, 실행될 프로그램 코드의 전부 또는 일부가 프로세서(들)(1604) 내에 및/또는 저장 서브시스템(1618) 내에 상주할 수 있다. 적절한 프로그래밍을 통하여, 프로세서(들)(1604)는 이상에서 설명된 다양한 기능들을 제공할 수 있다. 컴퓨터 시스템(1600)은, 디지털 신호 프로세서(digital signal processor; DSP), 특수-목적 프로세서, 및/또는 유사한 것을 포함할 수 있는 프로세싱 가속 유닛(1606)을 추가적으로 포함할 수 있다.
I/O 서브시스템(1608)은 사용자 인터페이스 입력 디바이스들 및 사용자 인터페이스 출력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 키보드, 포인팅 디바이스들 예컨대 마우스 또는 트랙볼, 터치패드 또는 디스플레이 내에 통합된 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 명령 인식 시스템들을 가진 오디오 입력 디바이스들, 마이크들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은, 예를 들어, 사용자들이 제스처들 및 구두(spoken) 명령들을 사용하는 자연스러운 사용자 인터페이스를 통해, Microsoft Xbox® 360 게임 제어기와 같은, 입력 디바이스를 제어하고 이와 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서와 같은 모션 센싱 및/또는 제스처 인식 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 사용자들로부터 눈 움직임(eye activity)(예를 들어, 사진을 찍는 동안의 및/또는 메뉴를 선택하는 동안의 '깜박임')을 검출하고 눈 제스처들을 입력 디바이스(예를 들어, Google Glass®) 내로의 입력으로서 변환하는 Google Glass® 눈 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 사용자들이 음성 명령들을 통하여 음성 인식 시스템(예를 들어, Siri® 네비게이터(navigator))과 상호작용하는 것을 가능하게 하는 음성 인식 센싱 디바이스들을 포함할 수 있다.
사용자 인터페이스 입력 디바이스들은 또한, 비제한적으로, 3차원(3D) 마우스들, 조이스틱들 또는 포인팅 스틱들, 게임패드들 및 그래픽 태블릿들, 및 음향/시각 디바이스들 예컨대 스피커들, 디지털 카메라들, 디지털 캠코더들, 휴대용 매체 플레이어들, 웹캠들, 이미지 스캐너들, 핑거프린트 스캐너들, 바코드 리더 3D 스캐너들, 3D 프린터들, 레이저 거리계들, 및 시선 추적 디바이스들을 포함할 수 있다. 추가적으로, 사용자 인터페이스 입력 디바이스들은, 예를 들어, 의료 이미징 입력 디바이스들 예컨대 컴퓨터 단층촬영, 자기 공명 이미징, 양전자 방출 단층촬영, 의료 초음파 검사 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 예를 들어, 오디오 입력 디바이스들 예컨대 MIDI 키보드들, 디지털 악기들, 및 유사한 것을 포함할 수 있다.
사용자 인터페이스 출력 디바이스들은 디스플레이 서브시스템, 표시등들, 또는 비-시각적 디스플레이들 예컨대 오디오 출력 디바이스들, 등을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(cathode ray tube; CRT), 액정 디스플레이(liquid crystal display; LCD) 또는 플라즈마 디스플레이를 사용하는 것과 같은 평면-패널 디바이스, 프로젝션 디바이스, 터치 스크린, 및 유사한 것일 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨터 시스템(1600)으로부터 사용자 또는 다른 컴퓨터로 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 예를 들어, 사용자 인터페이스 출력 디바이스들은, 비제한적으로, 시각적으로 텍스트, 그래픽들 및 오디오/비디오 정보를 전달하는 다양한 디스플레이 디바이스들, 예컨대 모니터들, 프린터들, 스피커들, 헤드폰들, 자동차 네비게이션 시스템들, 플로터(plotter)들, 음성 출력 디바이스들, 및 모뎀들을 포함할 수 있다.
컴퓨터 시스템(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 운영 시스템들을 포함할 수 있다.
저장 서브시스템(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)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.
예로서, 컴퓨터-판독가능 저장 매체(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)에 대한 다른 데이터의 비-휘발성 저장을 제공할 수 있다.
통신 서브시스템(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), 및 그와 유사한 것의 형태의 입력 통신을 수신할 수 있다.
예로서, 통신 서브시스템(1624)은 소셜 네트워크들 및/또는 다른 통신 서비스들의 사용자들로부터의 실-시간 데이터 피드들(1626) 예컨대 Twitter® 피드들, Facebook® 업데이트들, 웹 피드들 예컨대 리치 사이트 서머리(Rich Site Summary; RSS) 피드들, 및/또는 하나 이상의 제3 자 정보 소스들로부터의 실-시간 업데이트들을 수신하도록 구성될 수 있다.
추가적으로, 통신 서브시스템(1624)은 또한, 사실상 명시적인 종료를 갖지 않는 제한이 없거나 또는 연속적일 수 있는 실-시간 이벤트들 및/또는 이벤트 업데이트들(1630)의 이벤트 스트림들(1628)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예들은, 예를 들어, 센서 데이터 애플리케이션들, 금융 시세표시기들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것을 포함할 수 있다.
통신 서브시스템(1624)은 또한, 구조화되거나 및/또는 구조화되지 않은 데이터 피드들(1626), 이벤트 스트림들(1628), 이벤트 업데이트들(1630), 및 유사한 것을 컴퓨터 시스템(1600)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신할 수 있는 하나 이상의 데이터베이스들로 출력하도록 구성될 수 있다.
컴퓨터 시스템(1600)은, 핸드헬드 휴대용 디바이스(예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 웨어러블 디바이스(예를 들어, Google Glass® 머리 착용형 디스플레이), PC, 워크스테이션, 메인프레임, 키오스크, 서버 랙, 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 유형들 중 임의의 유형일 수 있다.
컴퓨터들 및 네트워크들의 계속해서 변화하는 성질에 기인하여, 도면에 도시된 컴퓨터 시스템(1600)의 설명은 오로지 특정한 일 예로서만 의도된다. 도면에 도시된 시스템보다 더 많거나 또는 더 적은 구성요소들을 갖는 다수의 다른 구성들이 가능하다. 예를 들어, 커스텀화된 하드웨어가 또한 사용될 수 있거나 및/또는 특정 요소들이 하드웨어, 펌웨어, (애플릿(applet)들을 포함하는) 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 추가로, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다. 본원에 제공되는 개시 및 교시들에 기초하여, 당업자는 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들을 인식할 것이다.
본 개시의 특정 실시예들이 설명되었지만, 다양한 수정예들, 대안예들, 대안적인 구성들, 및 등가물들이 또한 본 개시의 범위 내에 포괄된다. 본 개시의 실시예들은 정확한 특정 데이터 프로세싱 환경들 내에서 동작하도록 제한되는 것이 아니라, 복수의 데이터 프로세싱 환경들 내에서 자유롭게 동작할 수 있다. 추가적으로, 본 개시의 실시예들이 특정한 일련의 트랜잭션(transaction)들 및 단계들을 사용하여 설명되었지만, 본 개시의 범위가 설명된 일련의 트랜잭션들 및 단계들로 한정되지 않는다는 것이 당업자들에게 명백할 것이다. 이상에서 설명된 실시예들의 다양한 특징들 및 측면들이 개별적으로 또는 함께 사용될 수 있다.
추가로, 본 개시의 실시예들이 하드웨어 및 소프트웨어의 특정한 조합을 사용하여 설명되었지만, 하드웨어 및 소프트웨어의 다른 조합들이 또한 본 개시의 범위 내에 속한다는 것이 이해되어야 한다. 본 개시의 실시예들은 오로지 하드웨어로만, 또는 오로지 소프트웨어로만, 또는 이들의 조합들을 사용하여 구현될 수 있다. 본원에서 설명된 다양한 프로세스들은 동일한 프로세서 또는 임의의 조합의 상이한 프로세서들 상에 구현될 수 있다. 따라서, 구성요소들 또는 모듈들이 특정 동작들을 수행하도록 구성된 것으로 설명되는 경우, 이러한 구성은, 예를 들어, 동작을 수행하기 위한 전자 회로들을 설계함으로써, 동작을 수행하기 위하여 프로그램가능 전자 회로들(예컨대 마이크로프로세서들)을 프로그래밍함으로써, 또는 이들의 임의의 조합에 의해 달성될 수 있다. 프로세스들은 비제한적으로 프로세스-간 통신을 위한 통상적을 기술을 포함하는 다양한 기술들을 사용하여 통신할 수 있으며, 프로세스들의 상이한 쌍들이 상이한 기술들을 사용할 수 있거나, 또는 프로세스들의 동일한 쌍이 상이한 시점에 상이한 기술들을 사용할 수 있다.
따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 것으로서 간주되어야 한다. 그러나, 청구항들에 기술되는 바와 같은 광범위한 사상 및 범위로부터 벗어나지 않고 이에 대한 추가들, 대체들, 삭제들, 및 다른 수정들 및 변화들이 이루이질 수 있다는 것이 명백할 것이다. 따라서, 특정 개시 실시예들이 설명되었지만, 이들은 제한적인 것으로 의도되지 않는다. 다양한 수정예들 및 등가물들이 다음의 청구항들의 범위 내에 속한다.
개시된 실시예들을 설명하는 맥락에서(특히 다음의 청구항들의 맥락에서) 용어들 "일(a 및 an)"과 "상기(the)" 및 유사한 지시대상들의 사용은, 본원에서 달리 표시되거나 또는 문맥에 의해 명백히 모순되지 않는 한 단수형 및 복수형 둘 모두를 커버하는 것으로 해석되어야 한다. 용어들 "포함하는", "갖는", "구성되는", 및 "함유하는"은, 달리 언급되지 않는 한 개방적인 용어(즉, "포함하지만 이에 한정되지 않는")으로 해석되어야 한다. 용어 "연결되는"은, 어떤 개재물이 있는 경우에도, 부분적으로 또는 전체적으로 어떤 것 내에 포함되거나, 또는 이에 부착되거나, 또는 이와 함께 결합되는 것으로 해석되어야 한다. 본원에서 값들의 범위를 언급하는 것은, 본원에서 달리 표시되지 않는 한, 단지 범위 내에 속하는 각각의 개별 값을 개별적으로 참조하는 속기 방법으로서 역할하도록 의도되며, 각각의 개별적인 값은 마치 이것이 본원에서 개별적으로 언급되는 것과 같이 명세서에 통합된다. 본 명세서에서 설명된 모든 방법은, 본 명세서에서 달리 표시되지 않거나 문맥상 명백히 모순되지 않는 한 임의의 적절한 순서로 수행될 수 있다. 본원에서 제공되는 임의의 및 모든 예들 또는 예시적인 언어(예를 들어, "~와 같은")의 사용은 단지 본 개시의 실시예들을 더 양호하게 조명하도록 의도되며, 달리 청구되지 않는 한, 본 개시의 범위에 제한을 두지 않는다. 본 명세서의 어떤 언어도 본 개시의 실시에 필수적인 임의의 청구되지 않은 요소를 나타내는 것으로 해석되지 않아야 한다.
구절 "X, Y, 또는 Z 중 적어도 하나"와 같은 이접적 언어는, 특별히 달리 명시되지 않는 한, 항목, 용어 등이 X, Y, 또는 Z 중 하나, 또는 이들의 조합(예를 들어, X, Y, 및/또는 Z)일 수 있음을 나타내기 위해 일반적으로 사용되는 문맥 내에서 이해되도록 의도된다. 따라서, 그러한 이접적 언어는 일반적으로, 특정 실시예가 각각 존재하기 위해 X 중 적어도 하나, Y 중 적어도 하나, 또는 Z 중 적어도 하나가 필요하다는 것을 의미하도록 의도되지 않는다.
본 개시를 수행하기 위해 알려진 최적 모드를 포함하여 본 개시의 선호되는 실시예들이 본원에서 설명된다. 이러한 선호되는 실시예들의 변형들은 이상의 설명을 숙독할 때 당업자들에게 명백해질 것이다. 당업자들은 적절한 바와 같이 이러한 변형들을 이용할 수 있어야 하며, 본 개시는 본원에서 구체적으로 설명된 것과 달리 실시될 수 있다. 따라서, 본 개시는 적용가능한 법률에 의해 허용되는 바와 같이 본원에 첨부된 청구항들에 언급된 주제의 모든 수정예들 및 등가물들을 포함한다. 또한, 이의 모든 가능한 변형예들에서 이상에서 설명된 요소들의 임의의 조합은 따라서 본원에서 달리 표시되지 않는 한 본 개시에 의해 포괄된다.
본원에서 인용된 간행물들, 특허 출원들 및 특허들을 포함하는 모든 참조문헌들은, 이로써 각각의 참조문헌이 참조로서 포함되도록 개별적으로 그리고 구체적으로 표시되고 그 전체가 본원에서 기술된 것과 동일한 정도로 참조로서 본원에 포함된다.
이상의 명세서에서, 본 개시의 측면들이 본 개시의 특정 실시예들을 참조하여 설명되었지만, 당업자들은 본 개시가 이에 한정되지 않는다는 것을 인식할 것이다. 이상에서 설명된 개시내용의 다양한 특징들 및 측면들이 개별적으로 또는 함께 사용될 수 있다. 추가로, 실시예들은 본 명세서의 광범위한 사상 및 범위로부터 벗어나지 않고 본원에서 설명된 것들을 넘어 임의의 수의 환경들 및 애플리케이션들에서 사용될 수 있다. 따라서, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로서 간주되어야 한다.
다음의 조항들은 개시된 구현예의 실시예들을 설명한다:
조항 1: 방법으로서,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 방법.
조항 2: 조항 1에 있어서, 상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 방법.
조항 3: 조항 1에 있어서, 상기 제1 스냅샷을 생성하는 단계는,
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 방법.
조항 4: 조항 1에 있어서, 상기 복원 요청은 페일오버(failover) 요청이며, 상기 방법은,
상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 방법.
조항 5: 조항 1에 있어서, 상기 복원 요청은 페일백(failback) 요청이며, 상기 방법은,
상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 방법.
조항 6: 조항 1에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 방법.
조항 7: 조항 6에 있어서,
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 방법.
조항 8: 조항 7에 있어서, 상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 방법.
조항 9: 컴퓨터 시스템으로서,
하나 이상의 프로세서들;
상기 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 상기 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 상기 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하며, 상기 단계들은,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터 시스템.
조항 10: 조항 9에 있어서, 상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터 시스템.
조항 11: 조항 9에 있어서, 상기 제1 스냅샷을 생성하는 단계는,
논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 컴퓨터 시스템.
조항 12: 조항 9에 있어서, 상기 복원 요청은 페일오버 요청이며, 상기 방법은,
상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 컴퓨터 시스템.
조항 13: 조항 9에 있어서, 상기 복원 요청은 페일백 요청이며, 상기 방법은,
상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 컴퓨터 시스템.
조항 14: 조항 9에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터 시스템.
조항 15; 조항 14에 있어서, 상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터 시스템.
조항 16: 조항 15에 있어서, 상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 컴퓨터 시스템.
조항 17: 실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 컴퓨터-판독가능 매체로서, 상기 단계들은,
컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
조항 18: 조항 17에 있어서, 상기 복수의 델타들을 생성하는 단계는,
상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
조항 19: 조항 17에 있어서, 상기 복수의 델타 데이터 세트들을 송신하는 단계는,
상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
상기 복수의 델타들을 전송하는 단계; 및
상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
조항 20: 조항 19에 있어서,
상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터-판독가능 저장 매체.

Claims (20)

  1. 방법으로서,
    컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
    상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
    상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
    상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 복수의 델타들을 생성하는 단계는,
    상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
    상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
    상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 방법.
  3. 청구항 1에 있어서,
    상기 제1 스냅샷을 생성하는 단계는,
    논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
    상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
    상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 방법.
  4. 청구항 1에 있어서,
    상기 복원 요청은 페일오버(failover) 요청이며, 상기 방법은,
    상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
    상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 방법.
  5. 청구항 1에 있어서,
    상기 복원 요청은 페일백(failback) 요청이며, 상기 방법은,
    상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
    페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
    상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 방법.
  6. 청구항 1에 있어서,
    상기 복수의 델타 데이터 세트들을 송신하는 단계는,
    상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
    상기 복수의 델타들을 전송하는 단계; 및
    상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 방법.
  7. 청구항 6에 있어서,
    상기 체크포인트는 상기 객체 메타데이터의 매니페스트(manifest)를 포함하며,
    상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 방법.
  9. 컴퓨터 시스템으로서,
    하나 이상의 프로세서들;
    상기 하나 이상의 프로세서들과 통신하는 메모리를 포함하며, 상기 메모리는 컴퓨터-실행가능 명령어들을 저장하도록 구성되고, 상기 컴퓨터-실행가능 명령어들을 실행하는 것은 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하며, 상기 단계들은,
    컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
    상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
    상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
    상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터 시스템.
  10. 청구항 9에 있어서,
    상기 복수의 델타들을 생성하는 단계는,
    상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
    상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
    상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터 시스템.
  11. 청구항 9에 있어서,
    상기 제1 스냅샷을 생성하는 단계는,
    논리적 시간에 대응하여, 상기 복수의 파티션들에 대한 입력/출력 동작들을 일시 중단하는 단계;
    상기 복수의 파티션들 내의 볼륨 데이터를 설명하는 복수의 블록 이미지들을 생성하는 단계; 및
    상기 복수의 파티션들에 대한 입력/출력 동작들을 가능하게 하는 단계를 포함하는, 컴퓨터 시스템.
  12. 청구항 9에 있어서,
    상기 복원 요청은 페일오버 요청이며, 상기 방법은,
    상기 복원 볼륨이 상기 제2 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
    상기 제2 지리적 영역에서 상기 복원 볼륨을 사용하여 입력/출력 동작들을 가능하게 하는 단계를 더 포함하는, 컴퓨터 시스템.
  13. 청구항 9에 있어서,
    상기 복원 요청은 페일백 요청이며, 상기 방법은,
    상기 제2 지리적 영역에서 상기 복원 볼륨을 생성하는 단계;
    페일백 볼륨이 상기 제1 지리적 영역에서 생성되는 것을 가능하게 하는 단계; 및
    상기 제1 지리적 영역에서 상기 제1 스냅샷 데이터를 복원하는 단계를 더 포함하는, 컴퓨터 시스템.
  14. 청구항 9에 있어서,
    상기 복수의 델타 데이터 세트들을 송신하는 단계는,
    상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
    상기 복수의 델타들을 전송하는 단계; 및
    상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터 시스템.
  15. 청구항 14에 있어서,
    상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
    상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터 시스템.
  16. 청구항 15에 있어서,
    상기 객체 메타데이터를 집성하는 단계는, 상기 복수의 델타 데이터 세트들과 상기 제1 스냅샷 데이터 사이의 복수의 차이들을 반영하기 위해 상기 매니페스트를 업데이트하는 단계를 포함하는, 컴퓨터 시스템.
  17. 실행될 때, 컴퓨터 시스템의 하나 이상의 프로세서들이 하기의 단계들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 컴퓨터-판독가능 매체로서, 상기 단계들은,
    컴퓨터 시스템에 의해, 제1 지리적 위치에서 제1 논리적 시간에 블록 볼륨의 제1 스냅샷을 생성하는 단계로서, 상기 블록 볼륨은 복수의 파티션들을 포함하는, 단계;
    상기 컴퓨터 시스템에 의해, 제2 지리적 영역에 있는 객체 저장 시스템으로 상기 제1 스냅샷에 대응하는 제1 스냅샷 데이터를 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 제1 지리적 위치에서 제2 논리적 시간에 상기 블록 볼륨의 제2 스냅샷을 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복수의 델타(delta)들을 생성하는 단계로서, 상기 복수의 델타들의 각각의 델타는 상기 복수의 파티션들 중 하나의 파티션에 대응하는, 단계;
    상기 컴퓨터 시스템에 의해, 상기 제2 지리적 영역에 있는 상기 객체 저장 시스템으로 상기 복수의 델타들에 대응하는 복수의 델타 데이터 세트들을 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 적어도 부분적으로 상기 제1 스냅샷 및 상기 복수의 델타들과 연관된 객체 메타데이터를 집성함으로써 체크포인트를 생성하는 단계;
    상기 컴퓨터 시스템에 의해, 복원 볼륨을 생성하기 위한 복원 요청을 수신하는 단계; 및
    상기 컴퓨터 시스템에 의해, 상기 체크포인트로부터 상기 복원 볼륨을 생성하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
  18. 청구항 17에 있어서,
    상기 복수의 델타들을 생성하는 단계는,
    상기 제2 스냅샷과 상기 제1 스냅샷 사이의 비교를 생성하는 단계;
    상기 비교에 기초하여, 상기 제2 스냅샷에 대응하는 제2 스냅샷 데이터와 상기 제1 스냅샷 데이터 사이의 변경들에 대응하는 수정된 데이터를 결정하는 단계; 및
    상기 복수의 델타들을 생성하는 단계로서, 상기 복수의 델타들은 상기 복수의 파티션들에 대한 수정된 데이터를 설명하는, 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
  19. 청구항 17에 있어서,
    상기 복수의 델타 데이터 세트들을 송신하는 단계는,
    상기 복수의 델타 데이터 세트들로부터 복수의 청크 객체들을 생성하는 단계;
    상기 복수의 델타들을 전송하는 단계; 및
    상기 복수의 청크 객체들을 상기 객체 저장 시스템으로 전송하는 단계를 포함하는, 컴퓨터-판독가능 저장 매체.
  20. 청구항 19에 있어서,
    상기 체크포인트는 상기 객체 메타데이터의 매니페스트를 포함하며,
    상기 객체 메타데이터는 상기 객체 저장 시스템 내의 상기 복수의 청크 객체들에 대응하는 청크 포인터들을 포함하는, 컴퓨터-판독가능 저장 매체.
KR1020237018995A 2020-11-06 2021-09-29 비동기적 교차-영역 블록 볼륨 복제 KR20230097184A (ko)

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 (ko) 2023-06-30

Family

ID=78500701

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237018995A KR20230097184A (ko) 2020-11-06 2021-09-29 비동기적 교차-영역 블록 볼륨 복제

Country Status (6)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4104055A1 (en) * 2020-03-04 2022-12-21 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
US11899537B2 (en) 2021-10-27 2024-02-13 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
US11822432B2 (en) * 2021-10-27 2023-11-21 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 (zh) * 2023-08-15 2023-11-03 中移(苏州)软件技术有限公司 备份处理方法、装置、***、电子设备及可读存储介质
KR102671816B1 (ko) * 2023-12-18 2024-06-03 주식회사 로그프레소 오브젝트 스토리지에 빅데이터를 기록하는 방법 및 그렇게 기록된 빅데이터의 조회 방법

Family Cites Families (9)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
US12001453B2 (en) Asynchronous cross-region block volume replication
JP7379599B2 (ja) クラウドデータストアにわたるファイルシステム階層ミラーリング
US11079966B2 (en) Enhanced soft fence of devices
CN114341792B (zh) 存储集群之间的数据分区切换
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
US11023339B2 (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
CN118276783A (zh) 存储集群之间的数据分区切换