KR20220011186A - 클라우드 제공자 서브스트레이트 익스텐션의 가상화 블록 저장 서버 - Google Patents

클라우드 제공자 서브스트레이트 익스텐션의 가상화 블록 저장 서버 Download PDF

Info

Publication number
KR20220011186A
KR20220011186A KR1020217042912A KR20217042912A KR20220011186A KR 20220011186 A KR20220011186 A KR 20220011186A KR 1020217042912 A KR1020217042912 A KR 1020217042912A KR 20217042912 A KR20217042912 A KR 20217042912A KR 20220011186 A KR20220011186 A KR 20220011186A
Authority
KR
South Korea
Prior art keywords
block storage
pse
storage server
volume
instance
Prior art date
Application number
KR1020217042912A
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
Priority claimed from US16/457,856 external-priority patent/US10949125B2/en
Priority claimed from US16/457,853 external-priority patent/US10949131B2/en
Priority claimed from US16/457,850 external-priority patent/US10949124B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20220011186A publication Critical patent/KR20220011186A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

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)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

컴퓨터 시스템의 하나 이상의 저장 디바이스를 사용하여 제1 볼륨을 호스팅하는 제1 블록 저장 서버 가상 머신이 컴퓨터 시스템에 의해 실행된다. 가상 블록 저장 디바이스에 대한 액세스를 갖는 제2 가상 머신이 컴퓨터 시스템에 의해 실행된다. 블록 저장 클라이언트가 컴퓨터 시스템에 의해 실행된다. 제1 블록 저장 동작은 제2 가상 머신으로부터 블록 저장 클라이언트에 의해 수신되고, 제1 블록 저장 동작은 가상 블록 저장 디바이스 상에서 수행한다. 블록 저장 클라이언트에 의해 제1 블록 저장 서버 가상 머신으로 메시지가 발송되어, 제1 블록 저장 서버 가상 머신이 제1 볼륨으로 블록 저장 동작을 수행하게 한다.

Description

클라우드 제공자 서브스트레이트 익스텐션의 가상화 블록 저장 서버
많은 회사들 및 다른 조직들은, 컴퓨팅 시스템들이 (예를 들어, 로컬 네트워크의 일부로서) 함께 위치되거나 대신에 다수의 별개의 지리적 위치들에 (예를 들어, 하나 이상의 사설 또는 공공 중간 네트워크들을 통해 연결된) 위치되는 것과 같이, 그것들의 동작들을 지원하기 위해 다수의 컴퓨팅 시스템들을 상호 연결하는 컴퓨터 네트워크들을 동작시킨다. 예를 들어, 단일 조직에 의해 또는 이를 대신하여 운영되는 사설 데이터 센터, 및 고객에게 컴퓨팅 자원을 제공하기 위해 사업체로서 엔티티에 의해 운영되는 공공 데이터 센터와 같이, 상당수의 상호 연결된 컴퓨팅 시스템을 수용하는 데이터 센터가 일반적이 되었다. 일부 공공 데이터 센터 운영자는 다양한 고객이 보유한 하드웨어에 대한 네트워크 액세스, 전력 및 보안 설치 시설을 제공하는 반면, 다른 공공 데이터 센터 운영자는 고객이 사용할 수 있도록 만들어진 하드웨어 자원을 포함하는 "풀 서비스(full service)" 시설을 제공한다. 그러나, 전형적인 데이터 센터의 규모와 범위가 증가함에 따라 물리적 컴퓨팅 자원의 프로비저닝, 관리 및 관리 태스크가 점점 복잡해지고 있다.
상용 하드웨어에 대한 가상화 기술의 출현은 다양한 요구를 가진 많은 고객들을 위해 대규모 컴퓨팅 자원을 관리하는 것에 대한 장점을 제공하여, 다양한 컴퓨팅 자원이 다수의 고객들에 의해 효율적이고 안전하게 공유되도록 한다. 예를 들어, 가상화 기술들은 각각의 사용자에게 단일 물리적 컴퓨팅 머신에 의해 호스팅되는 하나 이상의 가상 머신들을 제공함으로써 단일 물리적 컴퓨팅 머신이 다수의 사용자들 사이에서 공유되는 것을 허용할 수 있다. 각각의 이러한 가상 머신은, 다양한 가상 머신들 사이에서 애플리케이션 격리 및 보안을 제공하면서, 사용자들이 주어진 하드웨어 컴퓨팅 자원의 유일한 운영자들 및 관리자들이라는 착각을 제공하는 별개의 로직 컴퓨팅 시스템으로서 동작하는 소프트웨어 시뮬레이션이다. 또한, 일부 가상화 기술들은 다수의 별개의 물리적 컴퓨팅 시스템들에 걸쳐 있는 다수의 가상 프로세서들을 갖는 단일 가상 머신과 같은, 2개 이상의 물리적 자원들에 걸쳐 있는 가상 자원들을 제공할 수 있다. 또 다른 예로서, 가상화 기술들은 각각의 사용자에게 다수의 데이터 저장 디바이스들에 걸쳐 분산될 수 있는 가상화된 데이터 저장소를 제공함으로써 데이터 저장 하드웨어가 다수의 사용자들 사이에서 공유되도록 허용할 수 있으며, 각각의 이러한 가상화된 데이터 저장소는 사용자들이 데이터 저장 자원의 유일한 운영자들 및 관리자들이라는 착각을 제공하는 별개의 로직 데이터 저장소로서 동작한다.
컴퓨팅 집약적 애플리케이션, 메모리 집약적 애플리케이션 등과 같은 상이한 유형의 애플리케이션에 최적화된 매우 다양한 가상 머신 유형이 클라이언트 요청에 응답하여 일부 클라우드 컴퓨팅 제공자 네트워크의 데이터 센터에 설정될 수 있다. 또한, 데이터베이스 인스턴스들이 가상 컴퓨팅 서비스들의 가상 머신들을 사용하여 인스턴스화되는 일부 데이터베이스 서비스들과 같은 그러한 제공자 네트워크들의 가상 컴퓨팅 서비스들에 의존하는 더 하이-레벨 서비스들이 또한 제공자 네트워크 클라이언트들에 가용 가능하게 될 수 있다. 그러나, 제공자 네트워크 외부의 고객 구내에 저장되어야 하는 매우 많은 양의 데이터를 처리하는 애플리케이션과 같은 일부 유형의 애플리케이션의 경우, 제공자 네트워크의 데이터 센터에 위치된 하드웨어를 사용하여 가상화된 자원을 제공하는 것으로 제한되는 서비스는, 예를 들어, 레이턴시 관련 및/또는 다른 이유로 최적이 아닐 수 있다.
이하, 본 발명에 따른 다양한 실시예를 도면을 참조하여 설명한다.
도 1은 적어도 일부 실시예들에 따른 제공자 네트워크 외부의 네트워크 내에 위치된 제공자 서브스트레이트 익스텐션(provider substrate extension)에 의해 확장된 예시적인 제공자 네트워크를 예시하는 블록도이다.
도 2는 적어도 일부 실시예들에 따른 예시적인 제공자 서브스트레이트 익스텐션을 예시하는 블록도이다.
도 3은 적어도 일부 실시예들에 따른 제공자 네트워크와 제공자 서브스트레이트 익스텐션 사이의 예시적인 연결을 예시하는 블록도이다.
도 4 및 5는 적어도 일부 실시예들에 따른 예시적인 가상화 블록 저장 시스템을 보여주는 블록도이다.
도 6은 적어도 일부 실시예들에 따른 제1 기술을 사용하여 가상화된 블록 저장 서버를 부팅하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 7은 적어도 일부 실시예들에 따른 제2 기술을 이용하여 가상화된 블록 저장 서버를 부팅하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 8은 적어도 일부 실시예들에 따른 블록 저장 서버로부터 제공자 서브스트레이트 익스텐션 내의 추가적인 컴퓨팅 인스턴스들을 부팅하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 9는 적어도 일부 실시예들에 따른 가상화된 블록 저장 서버들을 관리하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 10은 적어도 일부 실시예들에 따른 블록 저장 클라이언트들에 볼륨 맵핑(volume mapping)들을 제공하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 11은 적어도 일부 실시예들에 따른 볼륨 맵핑들을 추적하기 위한 예시적인 시스템을 예시하는 블록도이다.
도 12는 적어도 일부 실시예들에 따른 가상화된 블록 저장 서버를 론칭하기 위한 방법의 동작들을 예시하는 흐름도이다.
도 13은 적어도 일부 실시예들에 따른 가상화 블록 저장 서버를 이용하는 방법의 동작들을 예시하는 흐름도이다.
도 14는 적어도 일부 실시예들에 따른 제공자 서브스트레이트 익스텐션에서 가상화된 블록 저장 서버들을 관리하기 위한 방법의 동작들을 예시하는 흐름도이다.
도 15는 적어도 일부 실시예들에 따른 예시적인 제공자 네트워크 환경을 예시한다.
도 16은 적어도 일부 실시예들에 따른 고객들에게 저장 서비스 및 하드웨어 가상화 서비스를 제공하는 예시적인 제공자 네트워크의 블록도이다.
도 17은 적어도 일부 실시예들에서 사용될 수 있는 예시적인 컴퓨터 시스템을 예시하는 블록도이다.
본 개시는 제공자 네트워크 외부의 네트워크와의 통신을 위해 제공자 서브스트레이트 익스텐션을 구성하고, 제공자 네트워크에서 가용 가능한 자원들과 동일하거나 유사한 가상화된 자원들을 서브스트레이트 익스텐션 상에 제공하기 위한 방법들, 장치, 시스템들, 및 비일시적 컴퓨터 판독가능 저장 매체에 관한 것이다. 제공자 네트워크 운영자(또는 제공자)는 컴퓨팅 자원(예를 들어, 가상 머신(VM) 및/또는 컨테이너 실행, 배치 작업(batch job) 실행, 프로비저닝 서버 없이 코드 실행), 데이터/저장 자원(예를 들어, 객체 저장, 블록 레벨 저장, 데이터 보관 저장, 데이터베이스 및 데이터베이스 테이블 등), 네트워크 관련 자원(예를 들어, 컴퓨팅 자원 그룹, 콘텐츠 전달 네트워크(CDN), 도메인 이름 서비스(DNS)를 포함하는 가상 네트워크 구성), 애플리케이션 자원(예를 들어, 데이터베이스, 애플리케이션 구축/배포 서비스), 액세스 정책 또는 역할, 아이덴티티 정책 또는 역할, 머신 이미지, 라우터 및 다른 데이터 처리 자원 등과 같은 다양한 유형의 컴퓨팅 관련 자원 중 하나 이상을 이용할 수 있는 능력을 사용자(또는 고객)에게 제공한다. 이들 및 다른 컴퓨팅 자원들이 서비스로서 제공될 수 있다.
제공자 네트워크 운영자는 종종 이러한 컴퓨팅 자원 및 다른 컴퓨팅 자원을 가상화 기술에 의존하는 서비스로서 제공한다. 예를 들어, 가상화 기술들은 컴퓨팅 인스턴스(computing instance)들(예를 들어, 기본 호스트 OS의 상부에서 더 동작할 수 있거나 또는 더 동작하지 않을 수 있는 하이퍼바이저를 사용하여 동작하는 게스트 운영 체제(OS)를 사용하는 VM, VM에서 동작할 수 있거나 또는 동작하지 않을 수 있는 컨테이너, 기본 하이퍼바이저 없이 "베어 메탈(bare metal)" 하드웨어 상에서 실행할 수 있는 인스턴스)을 제어 또는 활용하는 능력을 사용자에게 제공하기 위해 사용될 수 있으며, 여기서 하나 또는 다수의 컴퓨팅 인스턴스들은 단일 전자 디바이스를 사용하여 구현될 수 있다. 따라서, 사용자는 다양한 컴퓨팅 태스크들을 수행하기 위해 제공자 네트워크에 의해 호스팅되는 인스턴스 관리 서비스(때때로 하드웨어 가상화 서비스라 불림)에 의해 제공되는 컴퓨팅 인스턴스를 직접 이용할 수 있다. 부가적으로 또는 대안적으로, 사용자는 (예를 들어, 온-디맨드 코드 실행 서비스를 통해) 제공자 네트워크에 의해 실행될 코드를 제출함으로써 컴퓨팅 인스턴스를 간접적으로 이용할 수 있고, 이는 결국 코드를 실행하기 위해 컴퓨팅 인스턴스를 이용하며 - 전형적으로 사용자가 관련된 기본 컴퓨팅 인스턴스(들)의 임의의 제어 또는 지식을 갖지 않는다.
사용자들에게 컴퓨팅-관련 자원들을 제공하는 서비스들 및 사용자들에게 프로비저닝된 컴퓨팅-관련 자원들 모두를 지원하는 자원들은 일반적으로 제공자 네트워크 서브스트레이트(provider network substrate)로 지칭될 수 있다. 이러한 자원들은 전형적으로 많은 네트워크 컴퓨터 시스템의 형태의 하드웨어 및 소프트웨어를 포함한다. 제공자 네트워크 서브스트레이트의 트래픽 및 동작들은 다양한 실시예들에서 2개의 카테고리들로 광범위하게 세분될 수 있다: 로직 제어 평면을 통해 전달되는 제어 평면 트래픽 및 로직 데이터 평면을 통해 전달되는 데이터 평면 동작들. 데이터 평면은 분산 컴퓨팅 시스템을 통한 사용자 데이터의 이동을 나타내지만, 제어 평면은 분산 컴퓨팅 시스템을 통한 제어 신호들의 이동을 나타낸다. 제어 평면은 일반적으로 하나 이상의 제어 서버들에 걸쳐 분산되고 그에 의해 구현되는 하나 이상의 제어 평면 컴포넌트들을 포함한다. 제어 평면 트래픽은 일반적으로 다양한 고객에 대한 격리된 가상 네트워크를 수립하는 것, 자원 사용 및 헬스(health)를 모니터링하는 것, 요청된 컴퓨팅 인스턴스가 론칭될 특정 호스트 또는 서버를 식별하는 것, 필요에 따라 추가 하드웨어를 프로비저닝하는 것 등과 같은 관리 동작들을 포함한다. 데이터 평면은 제공자 네트워크(예를 들어, 컴퓨팅 인스턴스, 컨테이너, 블록 저장 볼륨, 데이터베이스, 파일 저장) 상에서 구현되는 고객 자원을 포함한다. 데이터 평면 트래픽은 일반적으로 고객 자원로/로부터 데이터를 전송하는 것과 같은 비-관리 동작을 포함한다. 제어 평면 컴포넌트들은 전형적으로 데이터 평면 서버들로부터 서버들의 별개의 세트 상에 구현되고, 제어 평면 트래픽 및 데이터 평면 트래픽은 별개의/구별 네트워크들을 통해 발송될 수 있다. 일부 실시예들에서, 제어 평면 트래픽 및 데이터 평면 트래픽은 상이한 프로토콜들에 의해 지원될 수 있다. 일부 실시예들에서, 제공자 네트워크를 통해 발송된 메시지들(예를 들어, 패킷들)은 트래픽이 제어 평면 트래픽 또는 데이터 평면 트래픽인지 여부를 표시하기 위한 플래그를 포함한다. 일부 실시예들에서, 트래픽의 페이로드(payload)는 그 유형(예를 들어, 제어 또는 데이터 평면)을 결정하기 위해 검사될 수 있다. 트래픽 유형들을 구별하기 위한 다른 기술들이 가능하다.
일부 고객 애플리케이션은 제공자 네트워크 환경으로 쉽게 마이그레이션되지만 레이턴시가 짧고, 데이터 양이 많으며, 데이터 보안 또는 기타 고객 데이터 처리 요구 사항으로 인해 일부 고객 워크로드는 구내(on premise)("on-prem")에 유지되어야 한다. 예시적인 구내 환경은 고객 데이터 센터, 로보틱스 통합, 현장 위치, 공동-위치 시설, 통신 시설(예를 들어, 근접 셀 타워) 등을 포함한다. 고객 요구사항들을 만족시키기 위해, 본 개시는 서브스트레이트형 자원들(substrate-like resource)의 구내의 배치에 관한 것이다. 용어 "제공자 서브스트레이트 익스텐션"(PSE)은 고객이 구내(예를 들어, 제공자 네트워크로부터 지리적으로 분리된 위치)에 배치할 수 있지만 제공자 네트워크에서 제공되는 것과 동일하거나 유사한 기능(예를 들어, 가상화된 컴퓨팅 자원)을 제공하는 자원(예를 들어, 하드웨어, 소프트웨어, 펌웨어, 구성 메타데이터 등)의 집합을 지칭한다. 이러한 자원들은 구내 위치들에서 일반적으로 발견되는 것들과 같은 랙 또는 캐비닛에서 전달되는 하나 이상의 컴퓨터 시스템들 또는 서버들로서 물리적으로 전달될 수 있다. PSE는 전술한 제공자 네트워크의 특징들과 유사하게 구내에 배치될 수 있는 특징들 및 능력들의 세트를 고객에게 제공할 수 있다. 사실상, 제공자 네트워크의 고객의 관점에서, PSE는 (예를 들어, 물리적 공간, 전력, 인터넷 액세스 등에 관하여) PSE를 수용할 수 있는 임의의 원하는 물리적 위치에서 셋업될 수 있는 제공자 네트워크의 능력들의 로컬 확장을 나타낸다. 제공자 네트워크 자체의 관점에서, PSE는 고객-선택 배치 사이트에 물리적으로 위치되면서 코어 제공자 네트워크 서브스트레이트와 동일한 제공자 네트워크 데이터 센터들에 가상으로 위치하는 것으로 간주될 수 있다. 적어도 일부 실시예들에서, PSE를 물리적으로 호스팅하고 있는 고객은 그 자신의 고객들(예를 들어, 제공자 네트워크의 다른 사용자들)에게 이들 사용자들이 고객의 구내 위치에서 PSE 내에서 그들 각각의 워크로드들을 호스팅하기 위한 인스턴스들을 론칭하는 것을 허용하고, 일부 경우들에서, 그러한 워크로드들이 고객의 네트워크에 액세스하는 것을 허용하는 허가들을 부여할 수 있다.
적어도 일부 실시예들에서, PSE는, 예를 들어, 제공자 네트워크 운영자에 의해, 제공자 네트워크 자체 또는 제공자 네트워크의 임의의 다른 고객들의 보안을 손상시키지 않으면서 다양한 유형들의 컴퓨팅-관련 자원들을 지원하고, 다양한 로컬 데이터 처리 요건들을 충족시키는 방식으로 그렇게 하기 위해 하드웨어, 소프트웨어 및/또는 펌웨어 엘리먼트들의 적절한 조합으로 미리 구성될 수 있다. 적어도 일부 실시예들에서, PSE는 일반적으로 고객이 제공자 네트워크 내의 컴퓨팅 관련 자원들에 액세스하기 위해 사용할 인터페이스들의 동일하거나 유사한 세트를 통해 관리된다. 예를 들어, 고객은 제공자 네트워크 내에서 컴퓨팅 관련 자원을 프로비저닝, 관리 및 동작하기 위해 사용하는 것과 동일한 API 또는 콘솔 기반 인터페이스를 사용하여 제공자 네트워크를 통해 다양한 배치 사이트에서 구내 PSE 또는 PSE 내에서 컴퓨팅 관련 자원을 프로비저닝, 관리 및 동작시킬 수 있다.
적어도 일부 실시예들에서, 제공자 네트워크의 자원들은 제공자 네트워크와 PSE 사이의 안전하고 신뢰성 있는 통신들을 보장하기 위해 다양한 네트워킹 컴포넌트들을 인스턴스화한다. 이러한 컴포넌트들은 PSE와 하나 이상의 보안 터널(예를 들어, VPN)을 수립할 수 있다. 이러한 컴포넌트들은 제어 평면 트래픽 및 데이터 평면 트래픽을 추가로 분할하고, (예를 들어, PSE로 또는 PSE로부터) 트래픽의 방향을 포함하는 인자들에 기초하여 각각의 유형의 트래픽을 상이하게 처리할 수 있다. 적어도 일부 실시예들에서, 제어 평면 서비스는 배치된 PSE들에 대한 이러한 네트워킹 컴포넌트들을 동적으로 프로비저닝하고 구성한다. 이러한 제어 평면 서비스는 각각의 PSE에 대한 네트워킹 컴포넌트들을 모니터링할 수 있고, 제공자 네트워크 내에서 발생하는 결함들로 인해 PSE와의 통신들이 손실되는 것을 방지하도록 설계된 자가-치유 또는 복구 메커니즘들을 호출할 수 있다.
인스턴스는 물리적 저장 자원의 로직 뷰가 제공되지만, 이러한 로직 저장 공간을 스토리지의 실제 물리적 위치에 매핑하는 것은 가상화 시스템에 의해 처리된다는 점에서 제공자 네트워크의 고객에게 일반적으로 제공되는 하나의 서비스는 인스턴스에 대한 가상화된 영구 디스크로서 작용할 수 있는 블록 저장 서비스(block storage service)이다. 볼륨은 한 번 이상 복제되어 고객에게 높은 가용성과 내구성을 제공할 수 있으며 복제본은 전형적으로 상이한 서버에 저장된다. 고객은 하나 이상의 블록 저장 볼륨을 인스턴스에 부착할 수 있고, 인스턴스를 지원하는 클라이언트는 가상화된 블록 저장 볼륨을 사용하여 인스턴스의 블록 기반 동작을 수행할 수 있다. 예를 들어, 고객은 특정 인스턴스가 주어진 부트 볼륨(예를 들어, 운영 체제를 포함하는 볼륨)으로부터 론칭되어야 한다고 특정하고 인스턴스에 의해 실행되는 고객 애플리케이션에 의해 저장된 데이터를 지원하기 위해 다른 부착된 볼륨을 가질 수 있다. 가용 가능한 스토리지 측면에서 높은 정도의 유연성을 제공하기 위해, 제공자 네트워크는 주어진 컴퓨팅 인스턴스를 지원하는 컴퓨팅 자원들로부터 주어진 부착된 볼륨을 지원하는 물리적 저장 디바이스들을 디커플링(decouple)한다. 전통적으로, 블록 저장 서비스를 지원하는 블록 저장 서버들의 무리(fleet)는 그들의 부착된 물리적 저장 디바이스들(예를 들어, 솔리드-스테이트 드라이브들, 자기 드라이브들 등)을 많은 로직 볼륨들로 분할할 것이다. 하나의 블록 저장 서버는 수백 또는 수천 개의 인스턴스에 대한 저장 자원을 지원할 수 있다. 이러한 블록 저장 서버는 일반적으로 "베어 메탈" 구성으로 실행되며 - 여기서 서버 소프트웨어는 예를 들어 가상 머신 또는 컨테이너 대신에 전용 서버 하드웨어에서 직접 실행되는 운영 체제 환경 내에서 실행된다.
제공자 서브스트레이트의 익스텐션에서의 용량이 가용 가능 구역에서의 용량에 비해 상당히 제한될 수 있기 때문에, 이러한 베어-메탈 블록 저장 서버 설계는 서브스트레이트 익스텐션에 적합하지 않을 수 있다. 예를 들어, 일부 서브스트레이트 익스텐션들은 단일 서버(또는 다른 작은 수의 서버들)만을 가질 수 있고, 따라서 블록 저장 자원들에 전체 서버를 전용하는 것이 실현가능하지 않을 수 있고, 이에 의해 컴퓨팅 인스턴스들에 대한 그 서버의 사용을 방지한다. 이러한 과제를 해결하기 위해, 본 발명의 실시예들은 블록 저장 서비스를 가상화하여 컴퓨팅 인스턴스 내에서 실행될 수 있고, 이에 의해 제한된 용량의 보다 유연하고 효율적인 사용을 가능하게 한다. 예를 들어, 단일 서버는 컴퓨팅 인스턴스와 그것의 부착된 볼륨을 가상화한 인스턴스(예를 들어, 블록 저장 서버) 모두를 호스팅하도록 구성될 수 있어, PSE의 한정된 자원 세트의 사용에 높은 정도의 유연성을 제공한다. 단일 서버를 격리된 장애 도메인으로 파티셔닝하여 여러 블록 저장 서버(및 볼륨의 여러 복제본)를 호스팅할 수도 있다. 장애 도메인(failure domain)은 일반적으로 시스템의 다른 부분에 영향을 주지 않고 장애가 발생할 수 있는 시스템의 로직 부분을 지칭한다. 베어 메탈 시스템 상에서 실행될 때, 블록 저장 시스템에 대한 장애 영역은 전형적으로 전체 베어 메탈 컴퓨터 시스템에 대응한다. 가상화를 사용하여 장애 도메인을 서버별(per-server) 기준으로부터 서브-서버 기준으로 디커플링함으로써, 블록 저장 서버 인스턴스들을 지원하는데 사용되는 기본 하드웨어에서의 이중화들은 PSE 내의 장애 도메인들의 수를 증가시키기 위해 이용될 수 있다. 결과적으로, 블록 저장 서버들은 더 적은 양의 데이터를 개별적으로 관리할 수 있어서, 장애가 발생할 때, 장애와 관련된 데이터를 복구하기 위한 워크로드가 감소된다. 이러한 블록 저장 인스턴스는 VPC(virtual private cloud)로 생성될 수 있으며, 블록 저장 볼륨과 통신하는 인스턴스 클라이언트도 동일한 VPC에서 통신할 수 있다. 유리하게, 이것은 서브스트레이트 익스텐션에서 더 안전한 통신들을 위해 VPC 암호화의 레버리징을 가능하게 한다.
그러나, 제공자 서브스트레이트의 익스텐션에서 블록 저장 서비스를 가상화하는 것은, 부트 볼륨을 저장할 수 있을 서브스트레이트 익스텐션에서 실행되는 임의의 블록 저장 서비스가 있기 전에 부트 볼륨(또한 블록 저장 서비스 머신 이미지로 지칭됨)으로부터 블록 저장 서비스를 초기화하는 것을 포함하는 특정 기술적 과제들을 생성한다. PSE가 구내 시설에 저 레이턴시 컴퓨팅 자원을 제공하지만, 이들 자원은 제공자 네트워크에 다시 도달할 때 증가된 레이턴시를 겪게 된다. PSE는 제공자 네트워크의 영역 내의 블록 저장 서버들에 의존할 수 있지만, 이러한 의존성은 증가된 지연에 종속될 것이고 따라서 바람직하지 않을 것이다. 아래에서 더 상세히 설명되는 바와 같이, 본 개시의 실시예들은 제공자 네트워크의 영역에 저장된 데이터로부터 PSE의 로컬 스토리지 상에 블록 저장 서버에 대한 부트 볼륨을 로딩할 수 있는 로컬 부팅 기술들을 통해 이러한 문제를 해결하고 그런 다음, PSE 내에서 론칭된 다른 인스턴스들로 볼륨들을 서빙하기 위해 블록 저장 서버를 부팅할 수 있다. 따라서, 개시된 로컬 부팅 기술들은, 블록 저장 서비스 자체가 서브스트레이트 익스텐션에 아직 존재하지 않을 때에도, 고객들이 서브스트레이트 익스텐션에서 인스턴스를 론칭하기 위해 블록 저장 서비스 머신 이미지를 사용할 수 있게 한다.
개시된 시스템들 및 기술들은 또한 PSE를 제공자 네트워크에 연결함으로써 인에이블될 수 있는 잠재적인 보안 문제들로부터 제공자 네트워크를 차폐한다. 일부 실시예들에서, PSE들은 동작하기 위해 그것들이 설치되는 고객 사이트로부터 제공자 네트워크 서브스트레이트(예를 들어, 머신들의 물리적 네트워크)으로의 보안 네트워킹 터널들을 요구할 수 있다. 이러한 터널들은 가상화된 컴퓨팅 인스턴스들(예를 들어, VM들)에서 그리고 서브스트레이트 상에서 호스팅되는 가상 인프라스트럭처 컴포넌트들을 포함할 수 있다. 터널 컴포넌트들의 예들은 VPC들 및 프록시 컴퓨팅 인스턴스들 및/또는 컴퓨팅 인스턴스들 상에서 실행되는 컨테이너들을 포함한다. PSE 내의 각각의 서버는 적어도 2개의 터널들을 사용할 수 있는데, 하나는 제어 평면 트래픽을 위한 것이고, 하나는 데이터 평면 트래픽을 위한 것이다. 아래에서 더 상세히 설명되는 바와 같이, 제공자 네트워크 서브스트레이트와 PSE 사이의 네트워크 경로를 따라 위치된 중간 자원들은 서브스트레이트와 PSE 사이에서 흐르는 트래픽을 안전하게 관리할 수 있다.
적어도 일부 실시예들에서, 제공자 네트워크는 클라우드 제공자 네트워크이다. 클라우드 제공자 네트워크, 또는 "클라우드"는 액세스 가능한 가상화된 컴퓨팅 자원(컴퓨팅, 스토리지, 네트워킹 자원, 애플리케이션, 서비스 등)의 대규모 풀(pool)을 지칭한다. 클라우드는 고객 명령에 응답하여 프로그래밍 방식으로 프로비저닝되고 릴리스될 수 있는 구성 가능한 컴퓨팅 자원의 공유 풀에 대한 편리한 온-디맨드 네트워크 액세스를 제공할 수 있다. 이러한 자원은 가변 로드에 맞게 동적으로 프로비저닝되고 재구성될 수 있다. 따라서, 클라우드 컴퓨팅은 공공으로 액세스가능한 네트워크(예를 들어, 인터넷, 셀룰러 통신 네트워크)를 통해 서비스들로서 전달되는 애플리케이션들 및 이러한 서비스들을 제공하는 클라우드 제공자 데이터 센터들에서의 하드웨어 및 소프트웨어 둘 모두로서 고려될 수 있다.
클라우드 제공자 네트워크는 다수의 영역들로서 형성될 수 있으며, 여기서 영역은 클라우드 제공자가 데이터 센터들을 클러스터링하는 지리적 영역이다. 각각의 영역은 사설 고속 네트워크, 예를 들어 파이버 통신 연결을 통해 서로 연결되는 2개 이상의 가용 구역을 포함할 수 있다. 가용 구역은 다른 가용 구역에 있는 것과 별도의 전원, 별도의 네트워킹 및 별도의 냉각을 갖는 하나 이상의 데이터 센터 시설을 포함하는 격리된 장애 도메인을 의미한다. 바람직하게는, 영역 내의 가용 구역들은 동일한 자연 재해가 하나 이상의 가용 구역을 동시에 오프라인(offline)으로 취하지 않아야 할 만큼 서로 충분히 멀리 떨어져 위치된다. 고객은 공공으로 액세스 가능한 네트워크(예를 들어, 인터넷, 셀룰러 통신 네트워크)를 통해 클라우드 제공자 네트워크의 가용 구역에 연결할 수 있다. 본 명세서에 설명된 바와 같은 PSE는 또한 공공으로 액세스가능한 네트워크를 통해 하나 이상의 가용 구역들에 연결될 수 있다.
클라우드 제공자 네트워크는 서브스트레이트로 지칭되는 물리적 네트워크(예를 들어, 시트 금속 박스들, 케이블들)를 포함할 수 있다. 클라우드 제공자 네트워크는 또한 서브스트레이트 상에서 실행되는 가상화된 컴퓨팅 자원들의 오버레이 네트워크(overlay network)를 포함할 수 있다. 이와 같이, 네트워크 패킷들은 오버레이 네트워크(예를 들어, VPC들, 보안 그룹들)에서의 구성들에 따라 서브스트레이트 네트워크를 따라 라우팅될 수 있다. 매핑 서비스는 이러한 네트워크 패킷들의 라우팅을 조정할 수 있다. 맵핑 서비스는, 분산된 서브스트레이트 컴퓨팅 디바이스들이 패킷들을 전송할 곳을 룩업할 수 있도록, 오버레이 IP 및 네트워크 식별자의 조합을 서브스트레이트 IP에 맵핑하는 영역 분산된 룩업 서비스(regional distributed look up service)일 수 있다.
예시하기 위해, 각각의 물리적 호스트는 서브스트레이트 네트워크에서 IP 어드레스를 가질 수 있다. 하드웨어 가상화 기술은 예를 들어, 호스트 상의 가상 머신들, 호스트 컴퓨터 상에서 다수의 운영 체제들이 동시에 실행될 수 있게 한다. 호스트의 하이퍼바이저 또는 가상 시스템 모니터는 호스트의 다양한 가상 시스템 사이에 호스트의 하드웨어 자원을 할당하고 가상 시스템의 실행을 모니터링한다. 각각의 가상 머신은 오버레이 네트워크에서 하나 이상의 IP 어드레스를 제공받을 수 있고, 호스트 상의 가상 머신 모니터는 호스트 상의 가상 머신의 IP 어드레스를 인식할 수 있다. 가상 머신 모니터들(및/또는 네트워크 서브스트레이트 상의 다른 디바이스들 또는 프로세스들)은 클라우드 제공자 네트워크 내의 상이한 호스트들 상의 가상화된 자원들 사이에서 네트워크 서브스트레이트를 통해 네트워크 패킷들(예를 들어, 클라이언트 IP 패킷들)을 캡슐화하고 라우팅하기 위해 캡슐화 프로토콜 기술(encapsulation protocol technology)을 사용할 수 있다. 캡슐화 프로토콜 기술은 오버레이 네트워크 경로들 또는 라우트(route)들을 통해 네트워크 서브스트레이트 상의 엔드포인트(endpoint)들 사이에서 캡슐화된 패킷들을 라우팅하기 위해 네트워크 서브스트레이트 상에서 사용될 수 있다. 캡슐화 프로토콜 기술은 네트워크 서브스트레이트 상에 오버레이된 가상 네트워크 토폴로지를 제공하는 것으로 간주될 수 있다. 캡슐화 프로토콜 기술은 엔드포인트들 사이에서 패킷들을 라우팅하기 위해 클라우드 제공자 네트워크 상의 다양한 프로세스들에 의해 액세스될 수 있는, 서브스트레이트 IP 어드레스들(사설 IP 어드레스들)에 IP 오버레이 어드레스들(공공 IP 어드레스들)을 매핑하는 매핑 디렉토리를 유지하는 매핑 서비스를 포함할 수 있다.
본 개시를 고려하여 당업자가 이해할 수 있는 바와 같이, 특정 실시예들은, (a) 제공자 네트워크에 의해 가능하게 되는 확장성, 보안, 가용성 및 다른 동작 장점들을 여전히 보유하면서, 제공자 네트워크 운영자의 고객들이 고객들에 의해 선택된 사이트들에서 제공자-관리 인프라스트럭처(예를 들어, PSE들)를 사용하여 위치-독립적 방식으로 매우 다양한 애플리케이션들을 전개할 수 있게 하고, (b) 고객 데이터 센터들과 제공자 네트워크 데이터 센터들 사이의 링크들을 통하는 것과 같이, 장거리 상에서 전송되어야 하는 애플리케이션 데이터 및 결과들의 양을 감소시키고, (c) 애플리케이션들을 데이터 소스들/목적지들에 근접시킴으로써, 잠재적으로 많은 양의 데이터가 입력으로서 소비되거나 출력으로서 생성될 수 있는 애플리케이션들의 전체 레이턴시 및 응답성을 개선시키고, 및/또는 (d) 민감한 애플리케이션 데이터의 보안을 개선시키는 것 중 일부 또는 전부를 포함하는 다양한 장점들을 달성할 수 있다.
도 1은 적어도 일부 실시예들에 따른 제공자 네트워크 외부의 네트워크 내에 위치된 제공자 서브스트레이트 익스텐션에 의해 확장된 예시적인 제공자 네트워크를 예시하는 블록도이다. 제공자 네트워크(100) 내에서, 고객은 하나 이상의 격리된 가상 네트워크(102)를 생성할 수 있다. 고객은 자신의 애플리케이션을 실행하기 위해 IVN 내에서 컴퓨팅 인스턴스(101)를 론칭할 수 있다. 이러한 컴퓨팅 인스턴스들(101)은 제공자 네트워크 서브스트레이트(미도시)의 일부인 SAD(substrate addressable device)에 의해 호스팅된다. 유사하게, 제공자 네트워크 서브스트레이트의 일부인 SAD들은 제어 평면 서비스들(104)을 호스팅할 수 있다. 예시적인 제어 평면 서비스들(104)은 고객 또는 다른 제어 평면 서비스가 인스턴스들 및/또는 IVN들을 론칭하고 구성하게 하는 인스턴스 관리 서비스(때때로 하드웨어 가상화 서비스로서 지칭됨), 객체(object) 저장을 제공하는 객체 저장 서비스, 블록 저장 디바이스들을 인스턴스들에 부착하는 능력을 제공하는 블록 저장 서비스들, 다양한 데이터베이스 유형들을 제공하는 데이터베이스 서비스들 등을 포함한다.
제공자 네트워크(100) 내에 도시된 컴포넌트들은 로직 컴포넌트들로서 취급될 수 있다는 것에 유의한다. 언급된 바와 같이, 이들 컴포넌트들은 제공자 네트워크 서브스트레이트(미도시)의 SAD들에 의해 호스팅된다. 예를 들어, 제공자 네트워크 서브스트레이트는 IVN(isolated virtual network) 내에서 동작하는 컨테이너 또는 가상 머신을 사용하여 인스턴스(101)를 호스팅할 수 있다. 이러한 컨테이너 또는 가상 머신은 SAD에 의해 실행된다. 다른 예로서, 제공자 네트워크 서브스트레이트는 (예를 들어, 가상화 없이) 베어 메탈 구성에서 SAD들을 사용하여 제어 평면 서비스들(104) 중 하나 이상을 호스팅할 수 있다. 적어도 일부 실시예들에서, SAD는 다른 네트워크(예를 들어, 고객 네트워크, IVN 등)보다는 제공자 네트워크의 네트워크 어드레스를 통해 어드레스가능 하드웨어에 의해 실행되는 소프트웨어(예를 들어, 서버)를 지칭한다. 적어도 일부 실시예들에서, SAD는 소프트웨어를 실행하는 기본 하드웨어(예를 들어, 컴퓨터 시스템)를 추가로 지칭할 수 있다.
예시된 바와 같이, 제공자 네트워크(100)는 고객 네트워크(185) 내에 배치된 PSE(provider substrate extension)(188) 및 고객 네트워크(195) 내에 배치된 PSE(198)와 통신한다. 각각의 PSE는 PSE(188) 내에 예시된 SAD들(189A-189N)과 같은 하나 이상의 서브스트레이트 어드레스가능 디바이스들(SAD들)을 포함한다. 이러한 SAD들(189)은 PSE 내의 컴퓨팅 관련 자원들의 프로비저닝(provisioning)을 가능하게 한다. SAD들 (189A-189N)에 대한 경우와 같은, 컴포넌트에 대한 실선 박스 타원들-파선 박스 조합의 예시는 일반적으로, (대응하는 텍스트에서의 참조들이 문자 접미사(suffix)를 갖거나 갖지 않을 수도 있지만 단일 또는 복수의 형태의 컴포넌트를 지칭할 수도 있고) 이 및 후속 도면들에서 이들 컴포넌트들 중 하나 이상이 있을 수도 있다는 것을 나타내기 위해 이용된다는 것에 유의한다. 고객 게이트웨이/라우터(186)는 제공자 네트워크(100)와 PSE(188) 사이에서 뿐만 아니라 PSE(188)와 다른 고객 자원들(187)(예를 들어, 고객 네트워크(185)에 연결된 다른 구내 서버들 또는 서비스들) 사이에서 연결을 제공한다. 유사하게, 고객 게이트웨이/라우터(196)는 제공자 네트워크(100)와 PSE(198) 사이에서 뿐만 아니라 PSE(198)와 다른 고객 자원들(197) 사이의 연결을 제공한다. PSE(188)에 대해 도시된 인터넷과 같은 공공 네트워크 또는 PSE(198)에 대해 도시된 바와 같은 직접 연결과 같은 다양한 연결 옵션들이 제공자 네트워크(100)와 PSE들(198) 사이에 존재한다.
제공자 네트워크(100) 내에서, 제어 평면 트래픽(106)은 일반적으로(항상 그렇지는 않지만) SAD들로 지향되는 반면, 데이터 평면 트래픽(104)은 일반적으로(항상 그렇지는 않지만) 인스턴스들로 지향된다(direct). 예를 들어, 일부 SAD들은 인스턴스들의 론칭 및 종료를 허용하는 API를 벤딩(vend)할 수 있다. 제어 평면 서비스(104)는 IVN(102)에서 새로운 인스턴스를 론칭하기 위해 제어 평면을 통해 이러한 SAD의 API로 명령을 발송할 수 있다.
이름에 의해 제안된 바와 같이, IVN은 제공자 네트워크의 다른 자원들(예를 들어, 다른 IVN들)로부터 로직상으로 격리되거나 분리되는 호스팅된(예를 들어, 가상화된) 자원들의 세트를 포함할 수 있다. 제어 평면 서비스는 각각의 IVN에 다른 IVN들과 구별하기 위한 식별자를 할당하는 것을 포함하여 IVN들을 설정 및 구성할 수 있다. 제공자 네트워크는 IVN들(예를 들어, 다른 IVN의 게이트웨이와 통신하도록 구성된 하나의 IVN의 게이트웨이) 사이의 피어링 관계(peering relationship)들을 설정하는 것과 같이, IVN들 사이의 통신들을 허용하는 다양한 방식들을 제공할 수 있다.
IVN은 다양한 목적으로 설정될 수 있다. 예를 들어, IVN은 고객에게 제공되는 자원들의 세트에 대한 네트워킹 구성에 대해 상당한 유연성을 가지고, 고객에 의한 독점적 사용을 위해 자원들의 세트를 따로 설정함으로써 특정 고객을 위해 설정될 수 있다. 그들의 IVN 내에서, 고객은 서브넷(subnet)을 설정하고, 원하는 사설 IP 어드레스를 다양한 자원에 할당하고, 인입 및 인출 트래픽을 관리하는 보안 규칙 등을 설정할 수 있다. 적어도 일부 실시예들에서, 디폴트로, 하나의 IVN 내에 설정된 사설 네트워크 어드레스들의 세트는 다른 IVN으로부터(또는 더 일반적으로 IVN 외부로부터) 액세스가능하지 않을 수 있다.
터널링 기술(tunneling technique)들은 제공자 네트워크 (100) 상의 상이한 SAD들에 의해 호스팅되는 인스턴스들 사이의 IVN 트래픽의 순회(traversal)를 가능하게 한다. 예를 들어, IVN(102) 내의 새롭게 론칭된 인스턴스는 IVN 어드레스 A를 가질 수 있고 서브스트레이트 어드레스 X를 갖는 SAD에 의해 호스팅될 수 있는 반면, 인스턴스(101)는 IVN 어드레스 B를 가질 수 있고 서브스트레이트 어드레스 Y를 갖는 SAD에 의해 호스팅될 수 있다. 이들 컴퓨팅 인스턴스들 사이의 통신들을 가능하게 하기 위해, SAD X 는 각각의 인스턴스들을 (서브스트레이트 어드레스 X 로부터 서브스트레이트 어드레스 Y 로) 호스팅하는 SAD들의 어드레싱 정보를 갖는 패킷의 페이로드 내에서 (IVN 어드레스 A 로부터 IVN 어드레스 B 로) 새롭게 론칭된 인스턴스로부터 인스턴스 (101)로 전송된 패킷을 캡슐화한다. SAD들 사이에서 발송된 패킷은, 데이터가 서브스트레이트 어드레스 Y를 갖는 SAD에 의해 호스팅되는 다른 IVN과는 대조적으로 IVN(102) 행 임을 나타내기 위해 IVN(102)의 식별자를 더 포함할 수 있다. 일부 실시예들에서, SAD는 IVN과 관련된 암호화 키를 사용하여 SAD들 사이에서 발송된 패킷의 페이로드 내에 인스턴스들 사이에서 발송된 패킷을 추가로 암호화한다. 적어도 일부 실시예들에서, 캡슐화 및 암호화는 인스턴스를 호스팅하는 SAD의 소프트웨어 컴포넌트에 의해 수행된다.
PSE의 경우, 제공자 네트워크(100)는 제공자 네트워크(100) 외부의 제공자 네트워크 서브스트레이트를 고객의 구내 네트워크에 연결된 PSE로 효과적으로 확장하기 위한 하나 이상의 네트워킹 컴포넌트를 포함한다. 이러한 컴포넌트들은 PSE를 타겟으로 하는 데이터 평면 및 제어 평면 동작들이 PSE에 안전하고, 신뢰성있고, 투명하게 통신되는 것을 보장할 수 있다. 예시된 실시예에서, PSE 인터페이스(108), PSE SAD 프록시(110), 및 PSE SAD 앵커(anchor)(112)는 제공자 네트워크(100)와 PSE(188) 사이의 데이터 및 제어 평면 통신을 가능하게 한다. 유사하게, PSE 인터페이스(118), PSE SAD 프록시(120), 및 PSE SAD 앵커(122)는 제공자 네트워크(100)와 PSE(198) 사이의 데이터 및 제어 평면 통신들을 가능하게 한다. 본 명세서에 설명된 바와 같이, PSE 인터페이스들은 제공자 네트워크로부터 제어 및 데이터 평면 트래픽을 수신하고, 이러한 제어 평면 트래픽을 PSE SAD 프록시로 발송하고, 이러한 데이터 평면 트래픽을 PSE로 발송한다. PSE 인터페이스들은 또한 PSE로부터 데이터 평면 트래픽을 수신하고 이러한 데이터 평면 트래픽을 제공자 네트워크 내의 적절한 목적지로 발송한다. PSE SAD 프록시는 PSE 인터페이스로부터 제어 평면 트래픽을 수신하고, 이러한 제어 평면 트래픽을 PSE SAD 앵커로 발송한다. PSE SAD 앵커들은 PSE SAD 프록시들로부터 제어 평면 트래픽을 수신하고 이러한 제어 평면 트래픽을 PSE로 발송한다. PSE SAD 앵커들은 또한 PSE로부터 제어 평면 트래픽을 수신하고 이러한 제어 평면 트래픽을 PSE SAD 프록시로 발송한다. PSE SAD 프록시는 또한 PSE SAD 앵커로부터 제어 평면 트래픽을 수신하고 이러한 제어 평면 트래픽을 제공자 네트워크 내의 적절한 목적지로 발송한다. 다른 실시예들은 제공자 네트워크(100)와 PSE들 사이의 통신들을 가능하게 하기 위해 네트워킹 컴포넌트들의 상이한 조합들 또는 구성들을 이용할 수 있다(예를 들어, PSE 인터페이스, PSE SAD 프록시, 및/또는 PSE SAD 앵커들의 기능은 다양한 방식들로 예컨대, PSE 인터페이스 및 PSE SAD 프록시 둘 모두의, PSE SAD 프록시 및 PSE SAD 앵커 둘 모두의, 3개의 컴포넌트들 모두의, 등등의 동작들을 수행하는 애플리케이션에 의해서 조합될 수 있다).
위에 나타낸 바와 같이, 각각의 PSE는 SAD들(예를 들어, SAD들(189A-189N))에 대한 하나 이상의 서브스트레이트 네트워크 어드레스들을 갖는다. 이들 서브스트레이트 어드레스들은 제공자 네트워크(100)를 통해 직접 도달가능하지 않기 때문에, PSE 인터페이스들(108, 118)은 각각의 PSE의 서브스트레이트 어드레스들과 매칭되는 부착된 VNA(virtual network address)로 가장한다. 예시된 바와 같이, PSE 인터페이스(108)는 PSE(188) SAD 어드레스(들)에 매칭되는 VNA(들)(150)를 부착하였고, PSE 인터페이스(118)는 PSE(198) SAD 어드레스(들)에 매칭되는 VNA(들)(152)를 부착하였다. 예를 들어, PSE(188) 내에서 IP(Internet Protocol) 어드레스 192.168.0.10을 갖는 SAD 행의 트래픽은 192.168.0.10의 부착된 가상 어드레스를 갖는 PSE 인터페이스(108)로 발송되고, PSE(198) 내에서 IP 어드레스 192.168.1.10을 갖는 SAD 행의 트래픽은 192.168.1.10의 부착된 가상 어드레스를 갖는 PSE 인터페이스(118)로 발송된다. IPv4 또는 IPv6 어드레스 지정이 사용될 수 있다는 것에 유의한다. 적어도 일부 실시예들에서, VNA는 IP 어드레스들과 같은 다양한 네트워킹-관련 속성들이 인스턴스들 사이에서 프로그램적으로 전송될 수 있게 하는 로직 구성이다. 이러한 전송은 VNA를 인스턴스에 "부착" 및 VNA를 인스턴스로부터 "분리"하는 것으로 지칭될 수 있다.
하이 레벨에서, PSE 인터페이스는 그 트래픽이 제어 평면 트래픽 또는 데이터 평면 트래픽인지 여부에 기초하여 트래픽을 라우팅하는 실제로 패킷 포워딩 컴포넌트이다. 위에서 설명된 서브스트레이트 어드레싱 및 캡슐화 기술들이 주어지면, 제어 및 데이터 평면 트래픽은 둘 모두 SAD 행이기 때문에 PSE 인터페이스로 라우팅된다. 제어 평면 트래픽의 경우, PSE 인터페이스는 SAD 어드레스에 기초하여 트래픽을 PSE SAD 프록시로 라우팅한다. 데이터 평면 트래픽의 경우, PSE 인터페이스는 제공자 네트워크(100)와 PSE들 사이의 하나 이상의 암호화된 데이터 평면 트래픽 터널들(예를 들어, PSE 인터페이스(108)와 PSE(188) 사이의 터널(191), PSE 인터페이스(118)와 PSE(198) 사이의 터널(193))에 대한 엔드포인트로서 수립 및 역할을 한다. 제공자 네트워크(100)로부터 수신된 데이터 평면 트래픽에 대해, PSE 인터페이스는 PSE로의 터널을 통한 송신을 위해 트래픽을 암호화한다. PSE로부터 수신된 데이터 평면 트래픽에 대해, PSE 인터페이스는 트래픽을 복호화하고, 옵션으로 패킷들의 SAD-어드레싱을 검증하고, 제공자 네트워크(100)를 통해 식별된 SAD 목적지로 트래픽을 발송한다. PSE 인터페이스가 데이터 평면 트래픽을 송신하는데 사용되는 예상된 포맷(예를 들어, 프로토콜)에 부합하지 않는 트래픽을 PSE로부터 수신하면, PSE 인터페이스는 이러한 트래픽을 드랍(drop)할 수 있다. 또한, PSE 인터페이스가 트래픽의 발원자(originator) (예를 들어, 특정 IVN 내의 PSE에 의해 호스팅되는 인스턴스)가 어드레싱된 목적지(예를 들어, 동일하거나 상이한 IVN 내의 제공자 네트워크에 의해 호스팅되는 인스턴스)로 트래픽을 발송하는 것을 허용됨을 보장하기 위해 캡슐화된 패킷의 어드레싱을 검증할 수 있다는 것에 유의한다.
PSE 내의 각각의 SAD는 하나 이상의 PSE 인터페이스들의 대응하는 그룹을 가지며, 그룹의 각각의 멤버는 PSE와의 데이터 평면 트래픽을 위한 하나 이상의 터널들을 수립한다. 예를 들어, 4개의 SAD들을 갖는 PSE에 대한 4개의 PSE 인터페이스들이 존재하면, PSE 인터페이스들 각각은 SAD들 각각에 대한 데이터 평면 트래픽 엔드포인트와 안전한 터널을 수립한다(예를 들어, 16개의 터널들). 대안적으로, PSE 인터페이스들의 그룹은 관련된 VNA들을 그룹의 각각의 멤버에 부착함으로써 다수의 SAD들에 의해 공유될 수 있다.
각각의 PSE는 제공자 네트워크(100)와 PSE의 SAD들 사이의 제어 평면 트래픽을 처리하는 하나 이상의 PSE SAD 앵커들 및 하나 이상의 PSE SAD 프록시들을 갖는다. 제어 평면 트래픽은 전형적으로 명령-응답 또는 요청-응답 형태를 갖는다. 예를 들어, 제공자 네트워크(100)의 제어 평면 서비스는 인스턴스를 론칭하기 위해 PSE SAD에 명령을 발행할 수 있다. PSE 자원들의 관리가 제공자 네트워크로부터 가능하게 되기 때문에, 보안 터널을 통해 발송되는 제어 평면 명령들은 전형적으로 PSE로부터 발원되지 않아야 한다. 하이 레벨에서, PSE SAD 프록시는 제공자 네트워크(100)와 PSE 사이의 상태 기반(stateful) 보안 경계로서 동작한다(그러한 경계는 때때로 데이터 다이오드로 지칭된다). 그렇게 하기 위해, PSE SAD 프록시는 수신된 제어 평면 트래픽에 다양한 보안 정책들 또는 규칙들을 적용하는 것과 같은 하나 이상의 기술들을 사용할 수 있다. 다른 제어 평면 서비스들(104)은 PSE에 의해 호스팅되는 인스턴스들이 비-터널링된 통신들을 통해(예를 들어, 인터넷과 같은 공공 네트워크를 통해) 제공자 네트워크(100)에 명령들을 발행하는 것을 허용하기 위해 자유롭게 접근 가능한 API를 간접적으로 또는 직접적으로 제공할 수 있다는 것에 유의한다.
제공자 네트워크(100) 내로부터 발원되고 PSE 행인 트래픽에 대해, PSE SAD 프록시는 PSE 내의 대응하는 SAD의 제어 평면 엔드포인트 API를 제공할 수 있다. 예를 들어, 인스턴스들을 호스팅할 수 있는 PSE SAD에 대한 PSE SAD 프록시는 인스턴스들을 론칭, 구성 및 종료하기 위해 제어 평면 동작들을 수신할 수 있는 것과 일치하는 API를 제공할 수 있다. API 호출 및 PSE SAD 행이며, PSE SAD 프록시에 의해 수신된 관련된 파라미터들에 따라, PSE SAD 프록시는 다양한 동작들을 수행할 수 있다. 일부 동작들에 대해, PSE SAD 프록시는 수정 없이 동작 및 관련된 파라미터들을 목적지 SAD로 전달할 수 있다. 일부 실시예들에서, PSE SAD 프록시는 제공자 네트워크(100) 내로부터의 수신된 API 호출의 파라미터들이 이들 동작들을 전달하기 전에 API에 대해 잘 형성됨을 검증할 수 있다.
일부 API 호출들 또는 관련된 파라미터들에 대해, PSE SAD는 민감한 정보가 제공자 네트워크(100)의 외부로 발송되는 것을 방지하기 위한 중개자로서 작용할 수 있다. 예시적인 민감한 정보는 암호화 정보 예컨대, 암호화 키, 네트워크 인증서 등을 포함할 수 있다. 예를 들어, PSE SAD 프록시는 민감한 키를 사용하여 데이터를 복호화하고 PSE에 노출될 수 있는 키를 사용하여 데이터를 재암호화할 수 있다. 다른 예로서, PSE SAD 프록시는 제공자 네트워크(100) 내로부터 발원되는 제 1 보안 세션(예를 들어, TLS(Transport Layer Security) 세션)을 종료하고, 제공자 네트워크 인증서들이 PSE로 누설되는 것을 방지하기 위해 상이한 인증서를 사용하여 대응하는 SAD와의 새로운 보안 세션을 생성할 수 있다. 따라서, PSE SAD 프록시는 민감한 정보를 포함하는 특정 API 호출을 제공자 네트워크(100) 내로부터 수신하고, 민감한 정보를 대체하는 대체 또는 교체 API 호출을 PSE SAD에 발행할 수 있다.
PSE로부터 발원되고 제공자 네트워크(100) 행인 트래픽에 대해, PSE SAD 프록시는 PSE로부터 발원되는 모든 제어 평면 명령들 또는 요청들, 또는 예를 들어 제공자 네트워크 내의 자유롭게 접근 가능한 제어 평면 엔드포인트로 지향되지 않는 이들 명령들 또는 요청들만을 드랍할 수 있다.
일부 실시예들에서, PSE SAD 프록시는, 만약 있다면, 예상된 응답의 특성에 따라 제어 평면 동작들에 대한 응답들을 처리할 수 있다. 예를 들어, 일부 응답들에 대해, PSE SAD 프록시는 대응하는 명령 또는 요청의 발원자에게 임의의 메시지를 발송하지 않고 단순히 응답을 드랍할 수 있다. 다른 예로서, 일부 응답들에 대해, PSE SAD 프록시는 대응하는 명령 또는 요청의 발원자에게 제어 평면 트래픽(107)을 통해 새니타이즈된 응답을 전송하기 전에, 대응하는 명령 또는 요청에 대한 예상된 응답 포맷을 준수하는 것을 보장하기 위해 응답을 새니타이즈(sanitize)할 수 있다. 또 다른 예로서, PSE SAD 프록시는 (즉시 또는 SAD로부터의 실제 응답의 수신시에) 응답을 생성하고, 생성된 응답을 제어 평면 트래픽(107)을 통해 대응하는 명령 또는 요청의 발원자에게 발송할 수 있다.
제공자 네트워크(100)와 PSE 사이의 보안 경계로서 작용하는 것의 일부로서, PSE SAD 프록시는 제공자 네트워크의 컴포넌트들(예를 들어, 제어 평면 서비스들(104))과 PSE의 각각의 SAD 사이의 통신들의 상태를 추적할 수 있다. 상태 데이터(state data)는 세션들의 지속기간 동안 세션 키들, 미해결 응답들을 추적하기 위해 관련된 소스 및 목적지와의 보류 중인 아웃바운드 API 호출들, 제공자 네트워크(100) 내로부터 수신된 API 호출들과 대체되거나 치환된 민감한 정보를 갖는 SAD에 발행된 API 호출들 사이의 관계 등을 포함할 수 있다.
일부 실시예들에서, PSE SAD 프록시는 제어 평면 트래픽에 더하여 다른 PSE-대-제공자 네트워크 통신들을 위한 상태 기반(stateful) 통신들을 제공할 수 있다. 이러한 통신들은 DNS 트래픽, NTP 트래픽, 및 운영 체제 활성화 트래픽(예를 들어, Windows 활성화를 위한)을 포함할 수 있다.
일부 실시예들에서, PSE의 특정 컴포넌트들만이 제공자 네트워크(100)와의 암호화된 제어 평면 트래픽 터널들에 대한 엔드포인트들로서 기능할 수 있다. 제공자 네트워크(100)와 PSE 사이의 연결에 대한 이중화 및 신뢰성을 제공하기 위해, PSE SAD 앵커는 PSE의 가용 가능한 터널 엔드포인트들 각각에 대한 제공자-네트워크 측 엔드포인트(provider-network side endpoint)로서 기능할 수 있다. 예시된 바와 같이, PSE SAD 앵커(들)(112)는 터널(190)을 통해 PSE(188)로 제어 평면 트래픽을 터널링하는 역할을 하고, PSE SAD 앵커(들)(122)는 터널(192)을 통해 PSE(1198)로 제어 평면 트래픽을 터널링하는 역할을 한다.
다양한 실시예들은 전술한 트래픽을 처리하는 기술들을 이용함으로써 뿐만 아니라 제공자 네트워크(100)의 다른 부분들로부터 트래픽에 노출된 네트워킹 컴포넌트들을 격리시킴으로써 제공자 네트워크의 외부로부터(예를 들어, PSE가 포함되어야 하는 것으로부터) 발원하는 임의의 시도된 공격들의 방사상(radial) 영향을 제한할 수 있다. 특히, 네트워킹 컴포넌트들은 공격자가 얼마나 멀리 침투할 수 있는지를 경계를 정하기 위해 하나 이상의 IVN들 내에서 동작할 수 있고, 이에 의해 제공자 네트워크 및 다른 고객들의 동작들 모두를 보호한다. 따라서, 다양한 실시예들은 하나 이상의 IVN들 내에서 실행되는 가상 머신들 또는 컨테이너들에 의해 실행되는 애플리케이션들로서 PSE 인터페이스들, PSE SAD 프록시들, 및 PSE SAD 앵커들을 인스턴스화할 수 있다. 예시된 실시예에서, 상이한 PSE들에 대한 PSE 인터페이스들의 그룹들은 멀티-테넌트(multi-tenant) IVN(예를 들어, PSE들(188 및 198)에 대한 PSE 인터페이스 IVN(132)) 내에서 실행된다. 다른 실시예들에서, PSE 인터페이스들의 각각의 그룹은 단일-테넌트(single-tenant) IVN에서 실행될 수 있다. 더욱이, PSE SAD 프록시들의 각각의 그룹 및 주어진 PSE 에 대한 PSE SAD 앵커들의 각각의 그룹은 단일-테넌트 IVN들 내에서 실행된다 (예를 들어, PSE(188)에 대한 PSE SAD 프록시 IVN(134), PSE(188)에 대한 PSE SAD 앵커 IVN(136), PSE(198)에 대한 PSE SAD 프록시 IVN(138), 및 PSE(198)에 대한 PSE SAD 프록시 IVN(40)).
네트워킹 컴포넌트들(예를 들어, PSE 인터페이스들, PSE SAD 프록시들, 및 PSE SAD 앵커들) 각각에 대해 다수의 인스턴스들을 동작시킴으로써 제공되는 이중화는 제공자 네트워크가 PSE-대-제공자 네트워크 통신들을 중단하지 않고 이러한 컴포넌트들을 호스팅하는 인스턴스들을 주기적으로 리사이클할 수 있게 한다는 것에 유의한다. 리사이클링(recycling)은 예를 들어 인스턴스를 재시작하거나 새 인스턴스를 론칭하고 리사이클링된 인스턴스의 어드레스를 사용하여 다른 인스턴스를 재구성하는 것을 포함할 수 있다. 주기적인 리사이클링은 공격자가 손상된 네트워크 컴포넌트가 손상될 경우 이를 활용할 수 있는 타임 윈도우를 제한한다.
PSE 연결 관리자(180)는 제공자 네트워크(100)와 PSE들 사이의 연결을 제공하는 네트워킹 컴포넌트들의 설정 및 구성을 관리한다. 위에서 언급된 바와 같이, PSE 인터페이스들(108, 118), PSE SAD 프록시들(110, 120), 및 PSE SAD 앵커들(112, 122)은 제공자 네트워크 서브스트레이트에 의해 인스턴스들로서 호스팅될 수 있다. PSE 연결 관리자(180)는 PSE들이 고객들에게 배송될 때 및/또는 PSE들이 온라인이 되어 제공자 네트워크와 구성 데이터를 교환할 때 PSE들에 대한 PSE 인터페이스(들), PSE SAD 프록시/프록시들, 및 PSE SAD 앵커(들)의 론칭을 요청하거나 개시할 수 있다. 또한, PSE 연결 관리자(180)는 PSE 인터페이스(들), PSE SAD 프록시/프록시들, 및 PSE SAD 앵커(들)를 더 구성할 수 있다. 예를 들어, PSE 연결 관리자(180)는 PSE의 SAD들에 대응하는 VNA(들)을 PSE 인터페이스(들)에 부착하고, PSE 인터페이스(들)에 PSE SAD들에 대한 PSE SAD 프록시/프록시들의 어드레스를 제공하고, PSE SAD 프록시/프록시들에 PSE에 대한 PSE SAD 앵커(들)의 어드레스를 제공할 수 있다. 또한, PSE 연결 관리자(180)는 예를 들어, PSE 인터페이스 IVN(132)과 PSE에 대한 PSE SAD 프록시 IVN 사이, 및 PSE SAD 프록시 IVN과 PSE에 대한 PSE SAD 앵커 IVN 사이의 통신을 허용하도록 다양한 컴포넌트들의 IVN들을 구성할 수 있다.
터널(190-193)의 설정을 가능하게 하기 위해, 터널 엔드포인트들은 하나 이상의 부착된 VNA들 또는 그들 각각의 네트워크의 외부로부터(예를 들어, PSE 인터페이스들 및 PSE SAD 앵커들에 대한 제공자 네트워크의 외부로부터, PSE의 터널 엔드포인트들에 대한 고객 네트워크의 외부로부터) 트래픽을 수신할 수 있는 할당된 물리적 네트워크 어드레스들을 가질 수 있다는 것에 유의한다. 예를 들어, PSE(188)는 단일 외향(outward-facing) 네트워크 어드레스를 가질 수 있고, PAT(port address translation) 또는 다수의 외향 네트워크 어드레스들을 사용하여 다수의 SAD들로의 통신들을 관리할 수 있다. 각각의 PSE SAD 앵커(112, 122)는 외향 네트워크 어드레스를 (예를 들어, PAT를 통해) 갖거나 공유할 수 있고, 각각의 PSE 인터페이스(108, 118)는 외향 액세스 가능한 네트워크 어드레스를 (예를 들어, PAT를 통해) 갖거나 공유할 수 있다.
도 2는 적어도 일부 실시예들에 따른 예시적인 제공자 서브스트레이트 익스텐션을 예시하는 블록도이다. 예시된 실시예에서, PSE(188)는 하나 이상의 PSE 프레임워크들(202) 및 하나 이상의 호스트들(220)을 포함한다. 하이 레벨에서, 각각의 호스트(220)는 제공자 네트워크 서브스트레이트의 부분들(예를 들어, 제공자 네트워크 내의 인스턴스들을 호스팅하는 서브스트레이트 자원들)을 형성하는 컴퓨터 시스템들 중 적어도 일부와 기능적으로(그리고, 가능하게는, 구조적으로) 유사할 수 있고 한편, PSE 프레임워크(들)(202)는 제어 및 데이터 평면 트래픽 터널들(예를 들어, 도 1의 터널들(190-193))을 통해 제공자 네트워크에 연결을 제공할 뿐만 아니라 PSE 내에서 제공자 네트워크 서브스트레이트를 에뮬레이팅(emulate)하기 위한 지원 인프라스트럭처를 제공한다.
적어도 일부 실시예들에서, PSE 제어 평면 트래픽(240) 및 PSE 데이터 평면 트래픽(242)에 의해 표시된 바와 같이, 각각의 PSE 프레임워크(202)는 각각의 호스트(220)로부터 제어 또는 데이터 평면 트래픽을 발신하거나 수신할 수 있고, 그 반대도 마찬가지이다. 이러한 이중화는 고객이 제공자 네트워크에서 기대할 수 있는 신뢰성 레벨을 가능하게 한다.
PSE 프레임워크(202)는 제어 평면 트래픽(예를 들어, 터널(190), 터널(192))을 운반하는 암호화된 터널들을 종료하는 하나 이상의 제어 평면 터널 엔드포인트들(204)을 포함한다. 일부 실시예들에서, 제공자 네트워크(100)는 각각의 제어 평면 터널 엔드포인트(204)에 대한 PSE SAD 앵커를 호스팅한다. 다시 제공자 네트워크에서, PSE SAD 프록시 또는 프록시들(예를 들어, 프록시들(110))은 PSE SAD 앵커들(예를 들어, 앵커들(112))에 제어 평면 트래픽을 분배할 수 있고, PSE(188)의 PSE 프레임워크들(202)에 걸쳐 제어 평면 트래픽의 로딩을 효과적으로 분배할 수 있다. PSE 프레임워크(202)는 제공자 네트워크의 PSE 인터페이스들로부터 데이터 평면 트래픽(예를 들어, 터널(191), 터널(193))을 운반하는 암호화된 터널들을 종료하는 하나 이상의 데이터 평면 터널 엔드포인트들(206)을 더 포함하며, 이는 메쉬형(mesh like) 아키텍처로 연결될 수 있다(예를 들어, 주어진 PSE 인터페이스(108)는 각각의 PSE 프레임워크(202)의 데이터 평면 터널 엔드포인트(206)와 터널을 설정한다).
위에서 나타낸 바와 같이, 제어 평면 트래픽의 패킷들 및 데이터 평면 트래픽의 패킷들은 소스 및 목적지들 둘 모두로서 SAD들을 포함할 수 있고 - 후자는 SAD-기반 어드레싱을 갖는 패킷으로 캡슐화된다. 예시된 바와 같이, PSE 프레임워크(202)는 SAD(289)이고, 호스트(220)는 SAD(290)이다. PSE(188) 내의 SAD들(예를 들어, SAD(289, 290))은 또한 대응하는 PSE SAD 프록시 또는 제공자 네트워크 내의 프록시들(예를 들어, PSE SAD 프록시들(110))과 수립된 보안 세션들에 대한 보안 세션 종료(예를 들어, TLS 종료)를 제공할 수 있다.
SAD들은 SAD의 자원들을 관리하는 SAD로 지향된 제어 평면 동작들을 처리하기 위해 하나 이상의 제어 평면 API들을 벤딩한다. 예를 들어, PSE 프레임워크(202)의 PSE 관리자(210)는 PSE 프레임워크(202)의 컴포넌트들의 관리를 위해 제어 평면 API를 벤딩할 수 있다. 이러한 컴포넌트 중 하나는 PSE 관리자(210)로 SAD(289) 행의 제어 평면 트래픽과 같은 제어 및/또는 데이터 평면 트래픽을 PSE(188) 내외로 라우팅하고, SAD(290) 행의 제어 또는 데이터 평면 트래픽을 호스트 관리자(222)로 라우팅하는 PSE 게이트웨이(208)이다. PSE 게이트웨이(208)는 PSE 배치 사이트의 네트워크(예를 들어, 고객 네트워크(185))를 통해 액세스 가능한 다른 고객 자원들(187)로 또는 이들로부터 고객 네트워크와의 통신을 추가로 가능하게 할 수 있다.
PSE 관리자(210)의 API는 PSE 프레임워크(202)의 PSE 게이트웨이(208)를 구성하기 위한 하나 이상의 명령들을 포함할 수 있다. PSE 프레임워크(202)의 다른 컴포넌트들(212)은 DNS, DHCP(Dynamic Host Configuration Protocol), 및/또는 NTP 서비스들과 같은, 호스트들(220)에 대한 PSE의 서브스트레이트의 동작에 참여하는 다양한 애플리케이션들 또는 서비스들을 포함할 수 있다.
호스트 관리자(222)는 호스트(220)의 컴포넌트들의 관리를 위해 제어 평면 API를 벤딩(vend)할 수 있다. 예시된 실시예에서, 호스트 관리자(222)는 인스턴스 관리자(224) 및 네트워크 관리자(226)를 포함한다. 인스턴스 관리자(224)는 호스트(220)에 의해 호스팅되는 인스턴스들을 론칭, 구성 및/또는 종료하기 위한 명령들을 포함하는, 호스트(220)의 관리와 관련된 API 호출들을 처리할 수 있다. 예를 들어, 제공자 네트워크(미도시) 내의 인스턴스 관리 서비스는 호스트(220) 상에서 인스턴스를 론칭하기 위해 인스턴스 관리자(224)에 제어 평면 명령를 발행할 수 있다. 예시된 바와 같이, 호스트(220)는 고객 IVN(233)의 내부에서 실행되는 고객 인스턴스(232), 3P(third-party) IVN(235)의 내부에서 실행되는 제3자(3P) 인스턴스(234), 및 서비스 IVN(237)의 내부에서 실행되는 서비스 인스턴스(236)에 호스팅된다. 이들 IVN들(233, 234, 235) 각각은 제공자 네트워크 내에 수립된 기존의 IVN들을 확장할 수 있다는 것에 유의한다. 고객 인스턴스(232)는 일부 고객 애플리케이션 또는 워크로드를 실행하고 있을 수 있고, 3P 인스턴스(234)는 고객이 PSE(188) 내에서 인스턴스들을 론칭하는 것을 허용한 다른 당사자의 애플리케이션 또는 워크로드를 실행하고 있을 수 있고, 서비스 인스턴스(236)는 PSE(188)에 제공하기 위해 로컬에서 제공자 네트워크의 서비스(예를 들어, 블록 저장 서비스, 데이터베이스 서비스 등)를 실행하고 있을 수 있다.
네트워크 관리자(226)는 호스트(220)에 의해 수신된 SAD-어드레스된 데이터 평면 트래픽을 처리할 수 있다. 이러한 트래픽에 대해, 네트워크 관리자는 IVN 패킷을 어드레싱된 호스팅된 인스턴스로 발송하기 전에 필요한 디캡슐레이션(decapsulation)을 수행할 수 있다. 또한, 네트워크 관리자(226)는 호스팅된 인스턴스들에 의해 발송된 트래픽의 라우팅을 처리할 수 있다. 호스팅된 인스턴스가 다른 로컬에서 호스팅된 인스턴스로(예를 들어, 동일한 호스트 상의) 트래픽을 발송하려고 시도할 때, 네트워크 관리자(226)는 그 트래픽을 어드레싱된 인스턴스로 포워딩할 수 있다. 호스팅된 인스턴스가 트래픽을 비-로컬 인스턴스로 (예를 들어, 동일한 호스트 상에 있지 않은) 발송하려고 시도할 때, 네트워크 관리자(226)는 비-로컬 인스턴스를 호스팅하는 디바이스의 서브스트레이트 어드레스 위치를 찾고, 대응하는 패킷을 SAD-어드레스된 패킷으로 캡슐화하고 옵션으로 암호화하고, 해당 패킷을 데이터 평면을 통해 (예를 들어, PSE 내의 다른 호스트로 또는 PSE 게이트웨이(208)를 통해 제공자 네트워크로 다시 발송할 수 있다. 네트워크 관리자(226)는 데이터 평면 트래픽의 라우팅을 가능하게 하는 다양한 데이터를 포함하거나 그에 대한 액세스를 가질 수 있다 (예를 들어, 호스팅된 인스턴스로부터 수신된 패킷의 목적지에서 IVN 네트워크 어드레스를 갖는 인스턴스를 호스팅하는 SAD의 어드레스를 룩업하기 위해).
도 3은 적어도 일부 실시예들에 따른 제공자 네트워크와 제공자 서브스트레이트 익스텐션 사이의 예시적인 연결을 예시하는 블록도이다. 특히, 도 3은 제공자 네트워크와 PSE 사이의 예시적인 연결을 예시한다. 도 3에 대해, 그리고 도면의 상단에 표시된 바와 같이, 용어 "인바운드(inbound)"은 제공자 네트워크에 의해 PSE로부터 수신된 트래픽을 지칭하고, 용어 "아웃바운드(outbound)"는 제공자 네트워크에 의해 PSE로 전송된 트래픽을 지칭한다. 도시되지는 않았지만, 이 예에 대해, PSE는 총 4개의 SAD들에 대해 2개의 PSE 프레임워크들(202) 및 2개의 호스트들(220)을 포함한다고 가정한다. PSE 프레임워크들은 데이터 평면 트래픽에 대한 제어 평면 트래픽 터널 엔드포인트들(206A, 206B)에 대한 터널 엔드포인트들(204A, 204B)을 제공한다. 아웃바운드 트래픽은 복호화되어 PSE 게이트웨이(208A, 208B)를 통해 PSE 서브스트레이트 내의 목적지로 발송된다.
4개의 SAD들 각각에 대해, 제공자 네트워크는 VNA, 하나 이상의 PSE 인터페이스들, 및 하나 이상의 PSE SAD 프록시들을 포함한다. 이 예에서, 제공자 네트워크는 주어진 PSE SAD에 대한 PSE SAD VNA(304), 2개의 PSE 인터페이스들(108A, 108B) 및 2개의 PSE SAD 프록시들(110A, 110B)을 포함한다. 함께, PSE 인터페이스(들) 및 PSE SAD 프록시/프록시들은 표시된 바와 같이 슬라이스(slice)로서 지칭될 수 있고, 각각의 슬라이스는 PSE 내의 특정 SAD에 대응한다. 다른 실시예들에서, PSE 인터페이스(들)는 SAD들 중 하나에 대한 단일 VNA보다는 VPN에 대한 모든 VNA들에 의해 공유될 수 있다.
PSE SAD VNA(304)는 제공자 네트워크의 다른 컴포넌트들이 PSE의 대응하는 SAD로 트래픽을 발송하고 이로부터 트래픽을 수신할 수 있는 주어진 PSE에 대한 프론트(front)로서 기능한다. 로드 밸런서(load balancer)(미도시)는 PSE SAD VNA(304)로 발송된 아웃바운드 트래픽을 PSE 인터페이스들(108A, 108B) 중 하나로 라우팅할 수 있다. 주어진 슬라이스에 대한 예시된 PSE 인터페이스들(108A, 108B) 및 다른 슬라이스들(미도시)에 대한 인터페이스들은 PSE 인터페이스 IVN(132) 내에서 동작한다. PSE 인터페이스들(108A, 108B)은 제어 평면 트래픽을 슬라이스의 PSE SAD 프록시들(110A, 110B)로 포워딩함으로써 데이터 평면 트래픽 터널들을 통해 PSE로 데이터 평면 트래픽을 발송하고 PSE로 제어 평면 트래픽을 발송한다. PSE 인터페이스들(108A, 108B)은 관련된 SAD의 PSE SAD 프록시/프록시들의 네트워크 어드레스들, 데이터 평면 터널 엔드포인트(들)의 네트워크 어드레스들, 및 PSE의 데이터 평면 터널 엔드포인트(들)과의 통신들을 보안하기 위해 해당 엔드포인트(들)의 또는 관련된 하나 이상의 키들을 저장(또는 액세스)한다.
적어도 일부 실시예들에서, PSE 인터페이스들(110A, 110B)은 N개의 데이터 평면 터널들을 초래하는 각각의 데이터 평면 터널 엔드포인트(206A, 206B)와 데이터 평면 트래픽에 대한 보안 터널을 수립하며, 여기서 N은 SAD들의 수가 곱해지고 데이터 평면 터널 엔드포인트의 수가 곱해진 SAD당 PSE 인터페이스들의 수(각각의 SAD가 동일한 수의 인터페이스들을 가진다고 가정함)이다. 이 예에서, 16개의 데이터 평면 터널들이 PSE 인터페이스들과 데이터 평면 터널 엔드포인트들(즉, SAD 당 2개의 PSE 인터페이스들 x 2개의 데이터 평면 터널 엔드포인트들 x 4개의 SAD들) 사이에 수립된다.
PSE SAD 프록시들(110A, 110B)은 PSE 인터페이스들(108A, 108B)로부터 제어 평면 트래픽을 수신하고, 본 명세서의 다른 곳에서 설명된 다양한 동작들을 수행하고, 제어 평면 트래픽을 2개의 PSE SAD 앵커들(112A, 112B) 중 어느 하나를 통해 PSE로 발송한다. 유사하게, PSE SAD 프록시들 (110A, 110B)은 2 개의 PSE SAD 앵커들 (112A, 112B) 중 어느 하나로부터 제어 평면 트래픽을 수신하고, 본원의 다른 곳에서 설명된 다양한 동작들을 수행하고, 제공자 네트워크 내의 목적지들로의 제어 평면 트래픽 (107)을 수행한다. 주어진 슬라이스에 대한 예시된 PSE SAD 프록시들 (110A, 110B) 및 다른 슬라이스들 (미도시)에 대한 것들은 PSE SAD 프록시 IVN (134) 내에서 동작한다. PSE 인터페이스들(108A, 108B)은 PSE SAD 앵커(들)의 네트워크 어드레스들을 저장(또는 액세스)한다.
적어도 일부 실시예들에서, PSE SAD 프록시들은 공유 데이터 저장소(306)에 대한 액세스를 갖거나, 그렇지 않으면 정보를 교환할 수 있다. 이러한 정보 교환은 많은 이유로 사용될 수 있다. 예를 들어, PSE SAD 프록시는 PSE 내의 관련된 SAD의 API 인터페이스를 에뮬레이트하기 위해 API 인터페이스를 벤딩할 수 있다는 것을 상기한다. 일부 통신들은 상태 기반일 수 있고, 다양한 로드 밸런싱 기술들은 동일한 PSE SAD 프록시가 주어진 세트의 동작들에 대한 모든 통신들을 처리하는 것을 방지할 수 있기 때문에, 하나의 PSE SAD 프록시는 상이한 PSE SAD 프록시에 의해 이전에 처리되었던 통신들의 상태에 액세스할 필요가 있을 수 있다(예를 들어, PSE SAD 프록시(110A)는 제어 평면 동작을 PSE로 발송하고, PSE SAD 프록시(110B)는 제어 평면 동작에 대한 응답을 PSE로부터 수신한다). 인바운드 제어 평면 트래픽에 대해, PSE SAD 프록시는 인바운드 메시지가 예상 상태와 일치하는지 여부를 체크할 수 있고, 일치한다면, 본 명세서의 다른 곳에서 설명된 바와 같이 제어 평면 트래픽(107)을 통해 메시지를 발송할 수 있다. 그렇지 않다면, PSE SAD 프록시들(110A, 110B)은 트래픽을 드랍할 수 있다. 다른 예로서, PSE SAD 프록시는 제공자 네트워크 인증서가 PSE로 발송되는 것을 방지하기 위해 별도의 보안 세션(예를 들어, TLS 세션)을 브리징(bridge)할 수 있다는 것을 상기한다. 다시, 아웃바운드 메시지를 처리하는 PSE SAD 프록시는 해당 메시지에 대한 응답을 처리하는 PSE SAD 프록시와 상이할 수 있기 때문에, 응답 메시지를 처리하는 PSE SAD 프록시는 제어 평면 트래픽(107)을 통해 발원자에게 보안 응답 메시지를 발송하기 위해 아웃바운드 메시지의 발원자와 아웃바운드 메시지를 처리하는 PSE SAD 프록시 사이에 수립된 동일한 키를 사용할 수 있다.
이 예에서, 각각의 PSE 프레임워크는 단일 제어 평면 터널 엔드포인트(204)를 제공한다. 가용 가능한 제어 평면 터널 엔드포인트들(204) 각각에 대해, 제공자 네트워크는 PSE 앵커를 포함한다. 이 예에서, 제공자 네트워크는 2개의 PSE 앵커들(112A, 112B)을 포함한다. PSE SAD 앵커들(112A, 112B)은 PSE SAD 앵커 IVN(136) 내에서 동작한다. PSE 앵커들(112)은 8개의 PSE SAD 프록시들(4개의 SAD들 각각에 대해 슬라이스 당 2개) 각각으로부터 제어 평면 트래픽을 수신하고 해당 트래픽을 PSE로 발송한다. PSE 앵커들은 또한 PSE로부터 제어 평면 트래픽을 수신하고, 그 트래픽을 PSE로부터 트래픽을 소싱한 SAD와 관련된 2개의 PSE SAD 프록시들 중 하나로 발송한다. PSE 앵커들(112A, 112B)은 각각의 SAD에 대한 PSE SAD 프록시/프록시들의 네트워크 어드레스들, PSE의 제어 평면 터널 엔드포인트(들)의 네트워크 어드레스들, 및 PSE의 제어 평면 터널 엔드포인트(들)의 또는 제어 평면 터널 엔드포인트(들)와 관련된 하나 이상의 키들을 저장(또는 액세스)하여, 이들 엔드포인트(들)와의 통신들을 보장한다.
적어도 일부 실시예들에서, 네트워크 컴포넌트들 또는 제공자 네트워크는 제공자 네트워크와 PSE 사이에서 라우팅 제어 및 데이터 평면 트래픽의 워크로드를 분배하기 위해 로드 밸런싱 기술들을 이용할 수 있다. 예를 들어, PSE SAD VNA(304)로 전송되는 트래픽은 PSE 인터페이스들(108A, 108B) 사이에 분배될 수 있다. 다른 예로서, 각각의 PSE 인터페이스(108)는 데이터 평면 터널 엔드포인트들(206A, 206B) 사이에서 트래픽을 분배할 수 있다. 또 다른 예로서, 각각의 PSE 인터페이스(108)는 PSE SAD 프록시들(110A, 110B) 사이에서 트래픽을 분배할 수 있다. 또 다른 예로서, 각각의 PSE SAD 프록시(110)는 PSE SAD 앵커들(112A, 112B) 사이에서 아웃바운드 트래픽을 분배할 수 있다. 또 다른 예로서, PSE SAD 앵커들(112)은 PSE SAD 프록시들(110A, 110B) 사이에서 인바운드 트래픽을 분배할 수 있다. 어느 경우든, 이러한 로드 밸런싱은 전송 엔티티에 의해 또는 로드 밸런서(미도시)에 의해 수행될 수 있다. 예시적인 로드 밸런싱 기술들은 트래픽을 해당 어드레스 "뒤에 있는(behind)" 다수의 컴포넌트들에 분배하는 단일 VNA를 갖는 로드 밸런서를 채용하는 것, 각각의 데이터 발신자에 다수의 수신자들의 어드레스를 제공하는 것, 및 애플리케이션 레벨에서 선택된 수신자를 분배하는 것 등을 포함한다.
비록 실시예들이 도 1-3은 제어 평면 트래픽 및 데이터 평면 트래픽에 대한 별개의 터널들의 수립을 도시하고 있지만, 다른 실시예들은 제어 및 데이터 평면 트래픽 둘 모두에 대해 하나 이상의 터널들을 이용할 수 있다는 것에 유의해야 한다. 예를 들어, PSE 인터페이스들은 제어 평면 트래픽 상의 PSE SAD 프록시들에 의해 수행되는 추가적인 동작들을 우회하여, PSE로의 터널로의 공유된 터널을 통한 전송을 위해 데이터 평면 트래픽을 PSE SAD 앵커들로 라우팅할 수 있다.
도 4 및 5는 본 발명의 실시예에 따른 가상화 블록 저장 시스템을 예시하는 블록도이다. 도 4에 예시된 바와 같이, 제공자 네트워크(400) 또는 PSE(488)는 호스트(420A)를 포함한다. 호스트(420A)는 블록 저장 서버 인스턴스(450)에 대한 호스트이다. 블록 저장 서버 인스턴스(450)를 호스팅할 때, 호스트(420A)는 일부 양의 호스트 저장 디바이스(들)(421)를 블록 저장 서버 인스턴스(450)에 대한 프로비저닝된 저장 디바이스(447)(예를 들어, 가상 드라이브 또는 디스크)로서 프로비저닝하였다. 블록 저장 서버 인스턴스(450)는 프로비저닝된 저장 디바이스(447)를 파티셔닝하고 다른 인스턴스들을 대신하여 볼륨(volume)들을 생성 및 호스팅할 수 있다. 제공자 네트워크(400)의 인스턴스 관리 서비스(미도시)는 인스턴스 관리자(426)를 통해 제공자 네트워크(400)의 호스트 또는 PSE(488)의 호스트 중 어느 하나에서 이러한 블록 저장 서버 인스턴스의 론칭을 개시할 수 있다. 인스턴스 관리자(426)는 인스턴스(예를 들어, 가상 머신)에 대한 호스트 자원들(예를 들어, 컴퓨팅, 메모리, 네트워크, 저장)을 프로비저닝하고 인스턴스들을 론칭 및 종료할 수 있는 VMM(virtual machine manager), 하이퍼바이저, 또는 다른 가상화 프로그램일 수 있다.
호스트(420A)는 또한 인스턴스 IVN(432) 내의 인스턴스 A(430)에 호스트된다. 블록 저장 서버 인스턴스(450)는 블록 저장 볼륨 A(434)를 인스턴스 A(430)에 제공하고, 블록 저장 볼륨 B(440)를 다른 인스턴스(미도시)에 제공한다. 호스트(420A)는 (예를 들어, 가상 블록 저장 인터페이스를 인스턴스에 제공함으로써) 호스팅된 인스턴스들이 블록 저장 서버에 의해 호스팅되는 블록 저장 볼륨들에 액세스하는 블록 저장 클라이언트(460A)를 포함한다. 특히, 블록 저장 클라이언트들(460)은 인스턴스에 "부착된" 볼륨(예를 들어, 인스턴스 A(430)에 부착된 블록 저장 볼륨 A(434))에 발행된 블록 저장 동작들을 인터셉트하거나 다른 식으로 수신하는 소프트웨어 프로그램들일 수 있다.
도 5에 예시된 바와 같이, 제공자 네트워크(400) 또는 PSE(488)는 2개의 호스트들(420A 및 420B)을 포함한다. 다시, 호스트(420A)는 블록 저장 서버 인스턴스(450)에 대한 호스트이다. 호스트(420B)는 인스턴스 IVN(438) 내의 인스턴스 B(436)에 대해 호스트이다. 블록 저장 서버 인스턴스(450)는 블록 저장 볼륨 B(440)를 인스턴스 B(436)에 제공한다. 호스트들(420B)은 블록 저장 클라이언트(460B)를 포함하며, 이를 통해 호스팅된 인스턴스들은 블록 저장 서버에 의해 호스팅되는 블록 저장 볼륨들에 액세스한다.
볼륨이 인스턴스에 부착되면 블록 저장 클라이언트는 복제본을 호스팅하는 블록 저장 서버 인스턴스와 볼륨을 연관시키는 매핑을 획득한다. 블록 저장 클라이언트는 블록 저장 서버 인스턴스들 각각과 (예를 들어, 네트워크 기반 데이터 전송 프로토콜을 통해) 통신 세션을 오픈할 수 있다. 인스턴스로부터 블록 저장 동작을 수신하면, 블록 저장 클라이언트는 인스턴스의 동작을 이행하기 위해 적절한 블록 저장 서버(들)에 동작들을 발행한다. 예를 들어 그리고 도 4를 참조하면, 인스턴스 A(430)는 볼륨 A(434)로부터 주어진 블록 어드레스(예를 들어, 로직 블록 어드레스 또는 LBA)에서 데이터의 블록의 판독을 발행할 수 있다. 블록 저장 클라이언트(460A)는 판독 동작을 수신하고, 블록 저장 서버 인스턴스(450)에 대한 인스턴스-부착 볼륨 A(434)의 맵핑 데이터에 기초하여 블록 저장 서버 인스턴스(450)에 요청된 블록 어드레스를 포함하는 동작을 발행한다. 블록 저장 서버 인스턴스(450)로부터 데이터를 수신하면, 블록 저장 클라이언트(460A)는 데이터를 인스턴스 A(430)에 제공한다. 유사한 일련의 동작들이 도 5의 인스턴스 B(436), 블록 저장 클라이언트(460B), 블록 저장 서버 인스턴스(450), 및 볼륨 B(440) 사이에서 수행될 수 있다.
도 4 및 5를 참조하면, GNDB(Global Network Block Device)와 같은 네트워크 기반 데이터 전송 프로토콜을 이용하여 블록 저장 클라이언트와 블록 저장 서버 인스턴스 간의 블록 저장 메시징이 발송될 수 있다. 이러한 메시지들은 데이터 평면 트래픽으로서 캡슐화될 수 있고, 본 명세서의 다른 곳에서 설명된 바와 같이, 각각의 호스트들의 네트워크 관리자들(424)에 의해 블록 저장 클라이언트들(460)과 블록 저장 서버(450) 사이에서 라우팅될 수 있다. 블록 저장 서버 인스턴스가 블록 저장 동작을 발행하는 인스턴스와 동일한 호스트에 의해 호스팅되는 일부 실시예들에서, 블록 저장 클라이언트는 네트워크 기반 데이터 전송 프로토콜을 통해 관련된 동작을 네트워크 관리자에게 발행할 수 있고, 이는 결국 동작을 호스팅된 블록 저장 서버 인스턴스로 내부적으로 라우팅할 수 있다. 블록 저장 서버 인스턴스가 블록 저장 동작을 발행하는 인스턴스와 동일한 호스트에 의해 호스팅되는 다른 실시예들에서, 블록 저장 클라이언트는 블록 저장 클라이언트와 호스팅된 인스턴스들 사이에 상주하는 PCIe 또는 다른 상호 연결부를 통해 관련된 동작을 발행할 수 있고, 이에 의해 네트워크 기반 전송과 관련된 프로토콜 패킹을 회피한다.
도 4 및 도 5를 참조하면, 시스템은 다양한 레벨의 암호화를 구축하여 블록 저장 데이터를 보호할 수 있다. 블록 저장 트래픽의 엔드-투-엔드(end-to-end) 암호화를 제공하기 위해, 블록 저장 서버 인스턴스(452)는 임의의 수의 블록 저장 서버 인스턴스들을 포함할 수 있고 제공자 네트워크로부터 PSE로 스팬(span)할 수 있는 BSS(block storage service) IVN(452) 내에서 실행된다. 블록 저장 클라이언트들(460)은 블록 저장 서비스 IVN(452)과 관련된 VNA들(462)을 갖는다. 이러한 방식으로, 블록 저장 서비스 IVN 암호화 키(484)를 사용하는 IVN-레벨 암호화는 블록 저장 서버 인스턴스(450)와 블록 저장 클라이언트들(460) 사이에서 발송되는 트래픽을 암호화하고 복호화하는데 사용될 수 있다. 블록 저장 서비스(IVN)를 통해 전달되는 트래픽의 암호화 및 복호화는 IVN의 엔드포인트들에서 네트워크 관리자에 의해 수행될 수 있다는 것에 유의한다. 예를 들어, 네트워크 관리자(424B)는 VNA(462B)를 통해 블록 저장 클라이언트(460B)로부터 발송된 트래픽을 암호화한다. 다른 예로서, 네트워크 관리자(424A)는 블록 저장 서버 인스턴스(450)를 포함하여, BSS IVN(452) 내에서 호스팅되는 인스턴스들로 발송되는 트래픽을 복호화한다. 데이터의 나머지 암호화를 제공하기 위해, 블록 저장 볼륨들은 볼륨 레벨 암호화를 추가로 가질 수 있다. 예를 들어, 볼륨 A(434)는 볼륨 A 암호화 키(480)로 암호화될 수 있고, 볼륨 B(440)는 볼륨 B 암호화 키(482)로 암호화될 수 있다. 암호화 키(480)를 사용하여, 블록 저장 클라이언트(460A)는 인스턴스 A(430)에 의해 기록된 데이터를 볼륨 A(434)에 암호화하고, 볼륨 A(434)로부터 인스턴스 A(430)에 의해 판독된 데이터를 복호화한다. 암호화 키(482)를 사용하여, 블록 저장 클라이언트(460B)는 인스턴스 B(436)와 볼륨 B(440) 사이에서 유사한 암호화 및 복호화 동작들을 수행할 수 있다. 일부 실시예들에서, (예를 들어, 볼륨 A 암호화 키(480) 및 볼륨 A(434)가 호스트(420A) 상에 있지 않도록) 볼륨 암호화 키가 그것이 암호화하는 볼륨과 동일한 호스트 상에 있는 것을 방지하기 위해, 볼륨을 호스팅하는 블록 저장 서버 인스턴스가 해당 볼륨에 부착된 인스턴스와 동일한 호스트 상에 호스팅되는 것을 방지하는 정책이 준비가 되어 있을 수 있다는 것에 유의한다.
일부 실시예들에서, 인스턴스들 및 호스트 관리자들은 도 4 및 5에 표시된 바와 같이 상이한 프로세서(들)에 의해 실행된다. 예를 들어, 블록 저장 서버 인스턴스(450)는 제1 프로세서(예를 들어, 프로세서(1710))에 의해 실행될 수 있고, 호스트 관리자(422A)는 제2 프로세서(예를 들어, 프로세서(1775))에 의해 실행될 수 있다. 블록 저장 서버 인스턴스를 실행하는 프로세서(들)는 하나 이상의 상호 연결부를 통해 호스트의 저장 디바이스(들)에 액세스한다. 예를 들어, 블록 저장 서버 인스턴스(450)를 실행하는 프로세서(들)(예를 들어, 프로세서(1710))는 둘 사이의 PCIe 상호 연결을 통해 저장 디바이스(들)(421)(예를 들어, 저장 디바이스(1780))에 액세스할 수 있다. 다른 예로서, 블록 저장 서버 인스턴스(450)를 실행하는 프로세서(들)는 프로세서 또는 호스트 관리자(422A)(예를 들어, 프로세서(1775))를 실행하는 시스템-온-칩에 대한 제 1 PCIe 버스를 통해 저장 디바이스(들)(421)에 액세스할 수 있고, 이는 결국 제 2 PCIe 버스를 통해 이러한 통신들을 저장 디바이스(들)(421)에 브리징한다.
도 4 및 5에서는 단일 볼륨으로 예시되었으나, 각각의 인스턴스 볼륨(434, 440)은 시스템에 높은 정도의 신뢰성을 제공하기 위해 다수의 상이한 블록 저장 서버들에 저장된 다수의 복제본들에 걸쳐 미러링될 수 있다. 예를 들어, 하나의 복제본을 볼륨의 판독 및 기록(입력 및 출력 동작 또는 "I/O")를 처리하는 1차 복제본이라고 할 수 있으며, 1차 복제본을 호스팅하는 서버는 기록을 다른 2차 복제본에 동기식으로 전파할 수 있다. 1차 복제본에 장애가 발생하면, 2차 복제본 중 하나가 1차 복제본으로 사용된다(페일오버(failover)라고 함). 복제본은 파티션으로 세분화(예를 들어, 스트라이핑(strip))될 수 있으며, 주어진 복제본의 각 파티션은 다른 서버에 저장되어 병렬 판독 및 기록를 가능하게 한다. 복제본들은 또한, 블록 저장 서버가 (예를 들어, 서버 또는 디스크 장애로 인해) 이용불가능하게 될 때, 손실된 데이터가 가용 가능한 데이터로부터 복구될 수 있도록 이중화 (예를 들어, 패러티 비트들)로 인코딩될 수도 있다. 결과적으로, 인스턴스-부착 볼륨은 많은 블록 저장 서버들에 의해 호스팅될 수 있다.
가상화된 상황에서 블록 저장 서버를 호스팅하는 것과 관련된 하나의 문제는 이러한 서버를 부팅하는 것이다. 작동 중인 블록 저장 서버 인스턴스가 없는 경우 블록 저장 서버 인스턴스에 의해 호스팅되는 부트 볼륨으로부터 블록 저장 서버 인스턴스가 부팅되는 방법은 무엇인가? 이는 전용(또는 베어 메탈) 블록 저장 서버를 포함하지 않을 수 있는 PSE의 상황에서 특히 문제가 된다. 도 6 및 7은 PSE 내에서 제1 또는 "시드(seed)" 블록 저장 서버 인스턴스 - 다른 인스턴스들이 론칭될 수 있는 블록 저장 서버 인스턴스 - 를 부팅하기 위한 예시적인 로컬 부팅 기술들을 도시한다. 일단 론칭되면 시드 블록 저장 서버 인스턴스에서 다른 인스턴스가 론칭될 수 있다.
도 6은 적어도 일부 실시예들에 따른 제1 기술을 사용하여 가상화된 블록 저장 서버를 부팅하기 위한 예시적인 시스템을 예시하는 블록도이다. 하이 레벨에서, 도 6은 제공자 네트워크(600) 내에 호스팅된 프록시 서버를 통해 인스턴스(690) 내의 블록 저장 서버(650)를 원격으로 부팅하는 예를 도시한다. 제공자 네트워크(600)의 블록 저장 서비스(BSS)(606)는 사용자에게 블록 저장 볼륨을 생성하고 이러한 볼륨을 인스턴스에 부착하는 능력을 제공한다. 예를 들어, 사용자(예를 들어, 제공자 네트워크의 고객, 제공자 네트워크의 다른 서비스)는 BSS에 의해 관리되는 볼륨들을 생성, 크기 조정 또는 삭제하고 이러한 볼륨들을 인스턴스에 부착 또는 분리하기 위해 BSS(606)를 통해 중계(relay)되는 API 또는 콘솔을 통해 명령들을 제출할 수 있다. BSS(606)는 볼륨 스냅샷들을 포함하는 BSS 객체 저장소(608)를 유지한다. 스냅샷은, 파일과 같이, 객체 데이터 및 객체에 대한 메타데이터(예를 들어, 생성 시간 등)를 포함할 수 있는 객체의 유형으로 간주될 수 있다. 볼륨 스냅샷은 지정된 시점에 물리적 또는 가상 드라이브에서 다시 생성할 수 있는 볼륨의 복제본이다. 스냅샷은 일반적으로 부트 볼륨(boot volume)과 비부트 볼륨(non-boot volume)으로 분할할 수 있으며, 이러한 볼륨은 인스턴스 내에서 실행되는 소프트웨어의 부팅을 가능하게 한다. 머신 이미지는 부트 볼륨을 포함하여 주어진 인스턴스에 대한 하나 이상의 스냅샷의 그룹일 수 있다.
일부 실시예들에서, BSS(606)는 BSS 객체 저장소(608) 내의 객체들의 객체-레벨 암호화를 적용한다. 제공자 네트워크(600) 내에서 사용되는 암호화 키들의 누설을 방지하기 위해, BSS(606)는 PSE 객체 저장소(610)를 더 관리할 수 있고, BSS 객체 저장소(608) 내의 객체들을 암호화하는데 사용되는 것과 상이한 암호화 키를 사용하여 주어진 PSE로 발송될 객체들을 재암호화할 수 있다. 이 예에서, 블록 저장 서버 인스턴스 머신 이미지(612A)는 PSE의 호스트(620) 상에서 블록 저장 서버(650)를 부팅하는데 사용될 것이다. 원(circle) A에 표시된 바와 같이, BSS(606)는 제공자 네트워크(600) 내에 유지된 키를 사용하여 블록 저장 서버 인스턴스 머신 이미지(612A)를 복호화하고, PSE로 발송될 수 있는 키(613)를 사용하여 블록 저장 서버 인스턴스 머신 이미지(612B)로서 이를 재암호화한다.
IVN은 블록 저장 서버 인스턴스와 블록 저장 클라이언트 간의 트래픽에 대한 보안을 제공할 수 있다. 일부 실시예들에서, BSS(606)는 BSS IVN(652)으로서 예시된 IVN을 관리한다. 블록 저장 서버(650)가 론칭될 호스트(620)는 BSS IVN(652) 내의 관련된 VNA(662)와 블록 저장 클라이언트(660)를 갖는 호스트 관리자(622)를 포함한다. BSS IVN(652)을 통한 블록 저장 클라이언트(660)와 제공자 네트워크(600) 사이의 통신들을 가능하게 하기 위해, BSS(606)는 BSS IVN(652) 내의 프록시 서버 인스턴스(642)를 론칭한다. 프록시 서버 인스턴스(642)는 블록-저장형 인터페이스를 블록 저장 클라이언트(660)에 제공하여 클라이언트(660)가 블록 저장 서버 인스턴스 머신 이미지(612B)에 액세스하게 할 수 있다. BSS(606)는 다음과 같이 프록시 서버 인스턴스(642)를 론칭한다.
원 B에 표시된 바와 같이, BSS(606)는 프록시 서버 인스턴스(642)에 대한 부트 볼륨으로서 기능하도록 새로운 로직 볼륨을 생성하기 위해 베어 금속 블록 저장 서버(614)에 메시지를 먼저 발송한다. 베어 금속 블록 저장 서버(614)는 베어 금속 서버(614)의 하나 이상의 저장 디바이스(618) 상에 새로운 로직 볼륨(619)을 생성하고, 볼륨(619)을 BSS 객체 저장소(608)에 저장된 프록시 서버 머신 이미지(616)와 함께 로딩한다.
원 C에 표시된 바와 같이, BSS(606)는 인스턴스 관리 서비스(640)를 이용하여 프록시 서버 인스턴스(642)의 론칭을 개시한다. 인스턴스 관리 서비스(640)는 제공자 네트워크(600) 또는 PSE 내의 인스턴스들의 론칭을 가능하게 하는 제공자 네트워크(600)의 다른 제어 평면 서비스이다. 일부 실시예들에서, 인스턴스 관리 서비스(640)는 호스트가 얼마나 "핫"인지를 표시하는 호스트 이용 메트릭들 - 즉, CPU, 메모리, 및 네트워크 이용과 같은 메트릭들을 추적하거나 그에 대한 액세스를 가질 수 있다. 예를 들어, 인스턴스 관리 서비스(640) 또는 다른 서비스는 이용 메트릭들을 획득하기 위해 호스트들을 주기적으로 폴링(poll)할 수 있다. 인스턴스 관리 서비스(640)는 (주어진 PSE 내에서와 같이 호스트 위치에 대한 임의의 제약들에 종속되는) 잠재적인 호스트들의 풀(pool)과 관련된 메트릭들에 액세스하고 낮은 이용률(예를 들어, 일부 임계치 또는 임계치들 미만)을 갖는 호스트를 선택함으로써 론칭 요청에 응답하여 인스턴스를 호스팅할 호스트를 식별할 수 있다. 프록시 서버 인스턴스(642)의 론칭을 요청할 때, BSS(606)는 인스턴스가 BSS IVN(652) 내에서 그리고 볼륨(619)으로부터 론칭되어야 함을 지정한다. 원 D에 표시된 바와 같이, 인스턴스 관리 서비스(640)는 인스턴스를 호스팅하기 위한 호스트(646)를 식별하고, 인스턴스를 론칭하기 위한 메시지를 호스트(646)로 발송한다. 호스트(646)의 인스턴스 관리자(미도시)는 프록시 서버 인스턴스(642)에 대한 호스트의 자원들을 프로비저닝하고, 부트 볼륨(619)으로부터 그것을 론칭한다.
BSS(606)는 또한 인스턴스 관리 서비스(640)를 통해 블록 저장 서버(650)의 론칭을 개시한다. BSS(606)는 인스턴스가 특정 PSE(예를 들어, PSE 식별자를 이용하여) 상에서 그리고 프록시 서버 인스턴스(642)에 의해 가용 가능하게 된 부트 볼륨으로부터 BSS IVN(652) 내에서 론칭되어야 함을 지정한다. 원 E에 표시된 바와 같이, 인스턴스 관리 서비스(640)는 블록 저장 서버 인스턴스(650)를 호스팅하기 위해 호스트(620)를 식별하고, (예를 들어, 제어 평면 트래픽 터널을 통해) 인스턴스를 론칭하기 위해 호스트(620)에 메시지를 발송한다. 예시된 바와 같이, 인스턴스를 론칭하기 위한 요청은 인스턴스들에 대한 호스트 자원들을 프로비저닝하고 인스턴스들을 론칭하고 종료할 수 있는 인스턴스 관리자(626)에 의해 수신된다. 여기서, 인스턴스 관리자(626)는 블록 저장 서버를 호스팅하기 위한 인스턴스(690)를 생성한다.
인스턴스(690)를 구성하는 것의 일부로서, 인스턴스 관리자(626)는 프록시 서버 인스턴스(642)를 통해 블록 저장 서버 인스턴스 머신 이미지(612B)와 함께 가상 부트 볼륨(694)을 로딩하도록 인스턴스(690)의 BIOS(basic input/output system)(692)을 구성할 수 있다. BIOS(692)는 블록 저장 디바이스 드라이버(예를 들어, 비휘발성 메모리 익스프레스(NVMe) 드라이버)를 포함할 수 있고, 2개의 부착된 블록 저장 디바이스들, 즉 블록 저장 클라이언트(660) 및 부트 볼륨(694)을 통해 프록시 서버 인스턴스(642)에 의해 제공되는 가상화된 블록 저장 디바이스를 가질 수 있다. 인스턴스(690) 내에 예시되어 있지만, 부트 볼륨(694)은 블록 저장 클라이언트(660) 또는 호스트 관리자(622)의 다른 컴포넌트를 통해 액세스될 수 있는 호스트(620)의 저장 디바이스(미도시)로부터 인스턴스 관리자(626)에 의해 인스턴스(690)에 할당된 가상 드라이브 상의 볼륨에 대응한다는 것에 유의한다. 다른 실시예들은 인스턴스(690)를 2개의 블록 디바이스들(예를 들어, UEFI)에 연결하기 위해 BIOS 이외의 인터페이스를 포함할 수 있다.
실행 동안, BIOS(692)(또는 UEFI와 같은 다른 펌웨어)는 블록 저장 서버 인스턴스 머신 이미지(612B)로부터 부트 볼륨(694)을 로딩할 수 있다. 블록 저장 서버 인스턴스 머신 이미지(612B)가 키(613)를 사용하여 암호화되면, 블록 저장 클라이언트(660)는 로딩 프로세스 동안 블록 저장 서버 인스턴스 머신 이미지(612B)를 복호화한다. 로딩 동작이 완료되면, BIOS는 블록 저장 서버 소프트웨어를 포함하는 부트 볼륨 D94로부터 인스턴스(690)를 부팅하기 위해 부트 프로세스를 계속한다. 일부 실시예들에서, BIOS(692)는 블록 저장 서버 소프트웨어(650)를 부팅하기 전에 프록시 서버 인스턴스(642)에 대응하는 블록 저장 디바이스를 분리할 수 있다.
프록시 서버 인스턴스(642)를 사용하여 예시되고 설명되었지만, 다른 실시예들은 블록 저장 클라이언트(660)를 통해 인스턴스(690)에 블록 저장 디바이스를 제공하기 위해 블록 저장 서버 인스턴스 머신 이미지(612A)로부터 론칭된 블록 저장 서버 인스턴스(미도시)를 사용할 수 있다. BSS(606)는 론칭된 블록 저장 서버 인스턴스의 가상 드라이브 또는 디스크 상에 볼륨을 생성하고, 블록 저장 서버 인스턴스 머신 이미지(612A)와 함께 볼륨을 로딩한다. 로딩 프로세스 동안, 블록 저장 서버 인스턴스는 제공자 네트워크 키를 사용하여 머신 이미지를 복호화하고, 옵션으로 BSS(606)가 블록 저장 클라이언트(660)에 제공할 수 있는 볼륨-특정 키(예를 들어, 키(480)가 어떻게 볼륨 B(440)를 암호화하는지와 같은)를 사용하여 볼륨을 암호화한다.
도 7은 본 발명의 실시예들에 따른 제2 기술을 이용하여 가상화된 블록 저장 서버를 부팅하기 위한 시스템을 예시하는 블록도이다. 하이 레벨에서, 도 7은 블록 저장 서버 소프트웨어(750)를 실행하기 전에 인스턴스(790)에 의해 실행되는 사전 부트(pre-boot) 소프트웨어를 통해 블록 저장 서버 소프트웨어(750)를 실행하기 위해 인스턴스(790)를 원격으로 부팅하는 예를 예시한다. 특히, PSE(720)의 저장 디바이스(721)는 사전 부트 인스턴스 부트 볼륨(723)과 함께 사전 로딩된다(예를 들어, PSE의 출하 전에). 사전 부트 인스턴스 부트 볼륨(723)은 블록 저장 서버 사전 부트 단계(798) 동안 인스턴스 상에서 부팅될 수 있는 소프트웨어를 포함하여 다른 부트 볼륨을 블록 저장 서버 소프트웨어로 로딩한다. 그런 다음, 인스턴스는 블록 저장 서버 부팅 단계(799) 동안 블록 저장 서버 인스턴스를 론칭하기 위해 다른 부트 볼륨으로부터 재시작 및 부팅할 수 있다.
원 A에 표시된 바와 같이, BSS(606)는 인스턴스 관리 서비스(640)를 이용하여 블록 저장 서버 인스턴스의 론칭을 개시하며, 특정 PSE 상의 BSS IVN 내에서 인스턴스가 개시되어야 함을 특정한다. 다시, 인스턴스 관리 서비스(640)는 블록 저장 서버 인스턴스(650)를 호스팅하기 위해 PSE의 호스트(620)를 식별하고, (예를 들어, 제어 평면 트래픽 터널을 통해) 인스턴스를 론칭하기 위해 호스트의 호스트 관리자(722)로 메시지를 발송한다. 인스턴스를 론칭하기 위한 요청은 호스트 관리자(722)의 인스턴스 관리자(미도시)에 의해 수신된다.
원 B에 표시된 바와 같이, 호스트 관리자(722)(또는 인스턴스 관리자)는 블록 저장 서버(750)를 실행할 인스턴스(790)에 대한 호스트의 자원들을 프로비저닝한다. 추가적으로, 호스트 관리자(722)는 2개의 부착된 블록 저장 디바이스 - 블록 저장 클라이언트(미도시)에 의해 사전 부트 인스턴스 부트 볼륨(723) 및 가상 부트 볼륨(794)(전술한 부트 볼륨(694)과 같은)에 제공되는 블록 저장 디바이스 인터페이스 - 및 사전 부트 인스턴스 부트 볼륨(723)으로부터 부팅되도록 BIOS(792A)(또는 UEFI)를 구성할 수 있다.
원 C에 표시된 바와 같이, BIOS(792A)는 사전 부트 인스턴스 부트 볼륨(723)으로부터 사전 부트 소프트웨어(796)의 부트를 허용하도록 진행한다. 사전 부트 인스턴스 부트 볼륨(723)이 일반 머신 이미지에 기초하는 경우, 원 D에 표시된 바와 같이, 호스트 관리자(722)는 추가로 사전 부트 소프트웨어(796)와 제공자 네트워크(700) 사이의 통신을 가능하게 하기 위해 인스턴스(790)의 구성을 업데이트해야 할 수 있다. 특히, 호스트 관리자(722)는 VNA를 인스턴스(790)에 부착하고, PSE 객체 저장소(610)에 액세스할 때 사용할 인증서들을 사전 부트 소프트웨어(796)에 제공하고, 부트 볼륨(794)에 로딩될 머신 이미지를 복호화하기 위한 키를 제공할 수 있다. VNA 구성, 인증서들, 및 키는 인스턴스를 론칭하기 위한 인스턴스 관리 서비스(640)로부터의 요청의 일부로서 호스트 관리자(722)로 전달될 수 있다.
원 E에 표시된 바와 같이, 일단 인스턴스(790)가 구성되고 사전 부트 소프트웨어(796)를 실행하면, 사전 부트 소프트웨어(796)는 PSE 객체 저장소(610)로부터 블록 저장 서버 인스턴스 머신 이미지(612B)를 복사하고 그것을 부트 볼륨(794)에 로딩한다. 부트 볼륨(794)을 로딩하는 것의 일부로서, 사전 부트 소프트웨어(796)는 블록 저장 서버 인스턴스 머신 이미지(612B)를, 암호화된 것으로 가정하여, 키(613)를 이용하여 복호화할 수 있다. 호스트 관리자(722)는 부트 볼륨(794)의 로드의 완료를 검출할 수 있거나 사전 부트 소프트웨어가 시그널링할 수 있다. 예를 들어, 사전 부트 소프트웨어는 부트 볼륨(794)이 로딩되었을 때 인스턴스 재시작을 개시할 수 있다. 다른 예로서, 네트워크 관리자(724)는 (예를 들어, TCP 세션이 닫힐 때) 인스턴스(790)와 PSE 객체 저장소(610) 사이의 세션의 종료를 검출할 수 있다.
원 F에 표시된 바와 같이, 호스트 관리자(722)는 데이터 전송 동안 또는 데이터 전송이 완료되면 BIOS(792A 내지 792B)를 업데이트하거나 다른 식으로 재구성할 수 있다. 이러한 재구성은 부트 볼륨을 사전 부트 인스턴스 부트 볼륨(723)으로부터 부트 볼륨(794)으로 변경하는 것 및 사전 부트 인스턴스 부트 볼륨(723)을 포함하는 블록 저장 디바이스를 제거하는 것을 포함한다. 인스턴스(790)를 재시작하기 전에, 호스트 관리자(722)는 사전 부트 소프트웨어(796)에 의해 기록된 잔존(left over) 데이터를 포함할 수 있는 인스턴스(790)에 프로비저닝된 메모리를 추가로 삭제할 수 있다. 인스턴스(790)를 재시작할 때, BIOS(792B)는 부트 볼륨(794)으로부터 블록 저장 서버(750)를 부팅한다.
도 6 및 7은 PSE 내에서 블록 저장 서버 인스턴스를 부팅하기 위한 예시적인 기술들을 도시하지만, 다른 기술들이 가능하다. 예를 들어, 인스턴스 관리자는 론칭될 인스턴스에 대한 프로비저닝 자원들의 일부로서 PSE의 저장 디바이스 상에 볼륨을 생성할 수 있다. 인스턴스를 론칭하기 전에, 인스턴스 관리자는 제어 평면 서비스(예를 들어, 블록 저장 서비스 또는 인스턴스 관리 서비스)에 메시지를 발송하여 볼륨에 로딩하기 위한 부팅 가능한 스냅샷을 요청할 수 있다. 제어 평면 서비스는 부팅 가능 스냅샷을 제어 평면 트래픽 터널을 통해 인스턴스 관리자에게 발송할 수 있다. 일단 로딩되면 인스턴스 관리자는 인스턴스 소프트웨어를 시작할 수 있다.
도 8은 적어도 일부 실시예들에 따른 블록 저장 서버로부터 제공자 서브스트레이트 익스텐션 내의 추가적인 컴퓨팅 인스턴스들을 부팅하기 위한 예시적인 시스템을 예시하는 블록도이다. 일단 블록 저장 서버 인스턴스가 도 6 또는 7을 참조하여 설명된 기술들을 사용하는 것과 같이 론칭되면, "시드(seed)" 블록 저장 서버 인스턴스는 다른 인스턴스(다른 블록 저장 서버 인스턴스 포함)에 대한 부트 볼륨을 제공할 수 있다. 이것은 시드 블록 저장 서버 인스턴스가 PSE의 서브스트레이트 상호연결과 비교하여 제공자 네트워크와 PSE 사이의 비교적 느린 연결을 통해 전달되거나 호스팅되는 머신 이미지로부터 론칭되는 PSE의 상황에서 특히 유용할 수 있다. 이 예에서, 인스턴스(890)는 PSE(888)의 호스트(820A) 상에서 론칭되었다. 인스턴스(890)는 블록 저장 서버 소프트웨어(850)를 실행하고 있고 BSS IVN(844) 내에서 동작한다. 부가적으로, 블록 저장 클라이언트들(860A 및 860B)은 BSS IVN(844) 상에서의 통신을 허용하는 VNA들(862A 및 862B)을 부착한다.
원 A에 표시된 바와 같이, 제공자 네트워크(800)의 인스턴스 관리 서비스(640)는 BSS(606)가 지정된 스냅샷으로부터 새로운 볼륨을 생성하도록 요청할 수 있다. 원 B에 표시된 바와 같이, BSS(606)는 지정된 스냅샷들에 기초하여 볼륨들을 생성하도록 블록 저장 서버 인스턴스(890)에 지시할 수 있다. 일부 실시예들에서, 인스턴스 관리 서비스(640)는 볼륨을 암호화하기 위해 볼륨 특정 암호화 키(예를 들어, 키(680))를 제공할 수 있다.
원 C에 표시된 바와 같이, 블록 저장 서버 인스턴스(890)는 PSE 객체 저장소(610)와 같은 객체 저장소(810)로부터 지정된 스냅샷을 페치(fetch)함으로써 볼륨을 생성할 수 있다. 예시되지는 않았지만, 다른 실시예들에서, 객체 저장소(810)는 볼륨 스냅샷들 및/또는 머신 이미지들을 캐싱하기 위해 PSE(888) 상의 BSS 캐시 인스턴스에 의해 호스팅되는 객체 저장소일 수 있다. BSS(606)는 BSS 캐시 인스턴스를 관리할 수 있고, 고객은 인스턴스를 론칭하기 위한 임의의 요청들 이전에 특정 스냅샷들이 캐시에 로딩될 것임을 BSS(606)에 특정할 수 있다. 이러한 방식으로, 블록 저장 서버 인스턴스(890)는 캐싱된 부트 볼륨 스냅샷들로부터 볼륨들을 생성할 수 있고, 제공자 네트워크(800) 내의 객체 저장소로부터 블록 저장 서버 인스턴스(890)로의 데이터 전송과 관련된 지연을 회피함으로써 PSE 상의 인스턴스들의 부트 시간을 극적으로 감소시킨다.
원 C에 표시된 바와 같이, 제공자 네트워크(600)의 인스턴스 관리 서비스(640)는 블록 저장 서버 인스턴스(890)에 의해 호스팅되는 볼륨들을 PSE(888)에 의해 호스팅되는 다른 인스턴스들에 부착하거나 분리하는 PSE(888)의 호스트들에 명령들을 발행할 수 있다. 예를 들어, 볼륨 A(832)에는 부팅 가능한 스냅샷이 로딩될 수 있다. 인스턴스 관리 서비스(640)는 볼륨 A(832)와 관련된 볼륨 식별자를 사용하여 인스턴스 A(830)를 론칭하도록 호스트(820A)에 지시할 수 있다. 이에 응답하여, 블록 저장 클라이언트(860A)는 블록 저장 서버 인스턴스(890)에 의해 호스팅되는 볼륨 A(832)를 BSS IVN(844)을 통해 인스턴스 A(830)에 부착할 수 있고, 이에 의해 인스턴스 A(830)가 볼륨 A(832)로부터 론칭할 수 있게 한다. 다른 예로서, 볼륨 B(836)는 다른 데이터를 포함하는 부팅가능하지 않은 스냅샷으로 로딩될 수 있다. 인스턴스 관리 서비스(640)는 호스트(820B)에 볼륨 B(836)를 호스팅된 인스턴스(834)에 부착하도록 지시할 수 있다. 이에 응답하여, 블록 저장 클라이언트(860B)는 블록 저장 서버 인스턴스(890)에 의해 호스팅되는 볼륨 B(836)를 BSS IVN(844)을 통해 인스턴스 B(834)에 부착할 수 있다.
도 9는 적어도 일부 실시예들에 따른 가상화된 블록 저장 서버들을 관리하기 위한 예시적인 시스템을 예시하는 블록도이다. 가상 환경에서 블록 저장 서버를 실행하면 인스턴스 관리 서비스가 실행 중인 블록 저장 서버 인스턴스의 수를 요구에 따라 자동으로 확장할 수 있는 등 여러 가지 장점이 있다. 수동으로 확장되는 베어-메탈 서버들의 정의된 풀로 동작하는 BSS보다는, 인스턴스 관리 서비스는 호스트 자원들(예를 들어, CPU, 메모리, 네트워크 등)의 활용을 모니터링하고, 실행 중인 블록 저장 서버 인스턴스들의 수를 자동으로 조정할 수 있다. 예를 들어, 블록 저장 서버 인스턴스의 두 호스트가 높은 자원 사용률을 보고하고 있는 경우, 인스턴스 관리 서비스는 더 낮은 자원 사용률을 가진 호스트에서 추가 블록 저장 서버 인스턴스를 론칭할 수 있다. 그러면 블록 저장 서비스는 새로 론칭된 인스턴스에 볼륨을 생성하여 실행 중인 블록 저장 서버 인스턴스의 워크로드가 증가하고 성능이 저하되는 것을 방지할 수 있다.
또한 블록 저장 서버를 인스턴스로 실행하면 전체 컴퓨터 시스템에서 장애 도메인을 분리함으로써 장애 도메인의 수가 호스트 컴퓨터 시스템의 수를 초과할 수 있다. 장애 도메인의 수를 늘리면 고정된 하드웨어 세트에서 실행되는 블록 저장 서버의 수가 늘어나고, 블록 저장 서버의 수를 늘리면 특정 서버에서 관리하는 전체 데이터 풋프린트(footprint)가 줄어든다. 예를 들어, 시스템이 더 작은 장애 도메인으로 세분되지 않은 9개의 호스트 컴퓨터 시스템을 포함한다고 가정한다(즉, 하나의 컴퓨터 시스템은 하나의 장애 도메인이다). 데이터 손실을 방지하기 위해 각 호스트 또는 장애 도메인은 단일 블록 저장 서버를 실행한다. 9개의 블록 저장 서버가 인스턴스를 위해 볼륨 간에 90TB(데이터 복구를 위한 인코딩 포함)의 데이터를 호스팅하는 경우, 각 블록 저장 서버는 약 10TB의 데이터를 저장한다. 호스트 중 하나에 장애가 발생하면 (예를 들어, 다른 80TB에서) 10TB가 복구되어야 한다. 이러한 데이터 복구는 데이터 계산, 전송 및 저장 비용을 부과한다. 이러한 9개의 호스트가 각각 2개의 장애 도메인으로 세분화되고 블록 저장 서버의 수가 18개로 증가하면, 각 블록 저장 서버는 약 5TB의 데이터를 저장하고, 장애 도메인 중 하나에서 컴포넌트에 장애가 발생할 경우 복구해야 하는 데이터의 양(및 그에 따른 비용)을 절반으로 줄인다.
이 예에서, PSE(988) 또는 제공자 네트워크(900)는 3개의 호스트들(920A, 920B, 및 920C)을 포함한다. 호스트의 하드웨어 설계에 따라 호스트를 단일 장애 도메인으로 처리하거나 둘 이상의 장애 도메인으로 세분화할 수 있다. 여기서, 호스트들(920)은 각각 2개의 장애 도메인들을 포함한다. 호스트(920A)는 장애 도메인(922) 및 장애 도메인(924)을 포함하여, 하나의 장애 도메인의 컴포넌트들은 다른 장애 도메인에서 컴포넌트의 장애가 있는 경우에도 계속 동작할 수 있다. 예를 들어, 장애 도메인(922)은 제1 메모리 뱅크(예를 들어, RAM)에 연결되고 하나 이상의 저장 드라이브들(예를 들어, SSD들)의 제1 세트를 사용하는 멀티-프로세서 시스템의 제1 프로세서에 대응할 수 있는 반면, 장애 도메인(924)은 제2 메모리 뱅크에 연결되고 하나 이상의 저장 드라이브들의 제2 세트를 사용하는 시스템의 제2 프로세서에 대응할 수 있다. 전원 공급 장치와 같은 장애 도메인에서 일부 컴포넌트가 공유될 수 있으며, 다시 하드웨어 설계에서의 이중화 및 장애 도메인이 하드웨어에 오버레이되는 방법에 영향을 받는다는 것에 유의한다.
호스트(920A)는 장애 도메인(922) 내의 블록 저장 서버 인스턴스(950A) 및 장애 도메인(924) 내의 블록 저장 서버 인스턴스(950B)를 실행하고 있다. 호스트(920B)는 장애 도메인(926) 내의 블록 저장 서버 인스턴스(950C) 및 장애 도메인(928) 내의 블록 저장 서버 인스턴스(950F)를 실행하고 있다. 볼륨 A는 블록 저장 서버 인스턴스(950A)에 의해 제공되는 1차 복제본(660) 및 블록 저장 서버 인스턴스(950B)에 의해 제공되는 2차 복제본(662)을 포함한다. 볼륨 B는 블록 저장 서버 인스턴스(950C)에 의해 제공되는 1차 복제본(664) 및 블록 저장 서버 인스턴스(950A)에 의해 제공되는 2차 복제본(666)을 포함한다. 볼륨 C는 블록 저장 서버 인스턴스(950B)에 의해 제공되는 1차 복제본(668) 및 블록 저장 서버 인스턴스(950C)에 의해 제공되는 2차 복제본(670)을 포함한다. 볼륨당 두 개의 복제본으로 표시되었지만 실제로 각 볼륨은 더 적거나 더 많은 복제본을 가질 수 있으며 각 복제본은 여러 다른 블록 저장 서버 인스턴스로 분할될 수 있다(예를 들어, 스트라이핑을 통해).
원 A에 표시된 바와 같이, 인스턴스 관리 서비스(940)는 프로세서 이용률, 메모리 이용률, 저장 이용률, 및 네트워크 이용률과 같은 호스트들의 물리적 자원들의 이용률을 모니터링하며, 이는 장애 도메인에 의해 분리되거나, 또는 자원-당 기반으로 호스트에 걸쳐 집계될 수 있다(예를 들어, 인스턴스 관리 서비스(940)는 평균 CPU 이용률이 50%이고, 장애 도메인(922)의 프로세서(들)의 CPU 이용률이 50%이거나, 또는 장애 도메인(922)을 지원하는 특정 프로세서의 CPU 이용률이 50%임을 나타내는 메트릭들을 호스트(920A)로부터 수신할 수 있다). 인스턴스 관리 서비스(940)는 데이터베이스(미도시)에서 호스트들의 자원 이용률을 추적할 수 있다. 블록 저장 서버 인스턴스 외에, 예시된 장애 도메인은 호스트의 물리적 자원의 활용에 기여하는 다른 인스턴스(예를 들어, 고객 인스턴스)를 호스팅할 수 있다는 것에 유의한다. 인스턴스 관리 서비스(940)는 원 B에 표시된 바와 같이, 새로운 볼륨들을 생성할 때 BSS(906)가 더 낮은-사용 블록 저장 서버 인스턴스들을 선택하는 것을 허용하기 위해 자원 이용 메트릭들을 이용하여 BSS(906)를 주기적으로 업데이트할 수 있다.
원 C에 표시된 바와 같이, 인스턴스 관리 서비스(940)는 블록 저장 서버 인스턴스들을 지원하는 호스트들의 자원 이용률이 하나 이상의 임계치들을 초과할 때 새로운 블록 저장 서버 인스턴스를 론칭할 수 있다. 임계치들은, 호스트들에 걸쳐 집계된 자원별 기반(예를 들어, 블록 저장 서버들을 실행하는 모든 프로세서들의 평균 프로세서 이용률이 50% 초과임), 호스트들에 걸친 자원들의 일부 조합(예를 들어, 저장 이용률이 80% 초과이고 프로세서 이용률이 50% 초과임), 또는 개별 자원 및/또는 호스트 기반과 같은 다양한 방식들로 정의될 수 있다. 블록 저장 서버 인스턴스를 이미 호스팅하는 장애 도메인들에서 블록 저장 서버 인스턴스들을 론칭하는 것을 회피하기 위해, 인스턴스 관리 서비스(940)는 어느 장애 도메인들이 점유되고 어느 것이 가용 가능한지를 (예를 들어, 자원 사용 메트릭들을 포함하는 데이터베이스에서) 추적할 수 있다. 여기서, 인스턴스 관리 서비스(940)는 호스트들(920A, 920B, 및/또는 920C)의 자원 이용률이 일부 임계치를 초과했다고 결정하고, 호스트(920C)의 이전에 점유되지 않은 장애 도메인들(930 및 932)에서 각각 새로운 블록 저장 서버 인스턴스들(950D 및 950E)을 론칭하였다. 장애 도메인(928)은 어떠한 볼륨도 호스팅하지 않는 블록 저장 서버(950F)를 포함하지만, 해당 장애 도메인 내에서 호스팅된 다른 인스턴스들의 자원 이용률 또는 호스트(920B)의 전체 자원 이용률은 너무 높아서 다른 블록 저장 서버 인스턴스를 지원할 수 없을 수 있다.
원 D에 표시된 바와 같이, 인스턴스 관리 서비스(940)는 동작 블록 저장 인스턴스들(950)(이제 블록 저장 서버들(950D 및 950E)을 포함함)의 업데이트된 식별을 제공하기 위해 BSS(906)를 업데이트할 수 있다. 식별된 블록 저장 인스턴스들(950) 및 인스턴스 관리 서비스(940)로부터 수신된 자원 이용 메트릭들에 기초하여, BSS(906)는 원 E에 표시된 바와 같이 호스트(920C) 상에 새로운 볼륨들을 생성할 수 있다. 여기서, 호스트(920C)가 인스턴스 관리 서비스(940)로부터 보고된 바와 같이 낮은 자원 이용률을 나타낸다고 가정하면, BSS(906)는 블록 저장 서버 인스턴스(950D)에 의해 제공되는 1차 복제본(670) 및 블록 저장 서버 인스턴스(950E)에 의해 제공되는 2차 복제본(672)을 포함하는 새로운 볼륨 D를 생성한다.
도 10은 적어도 일부 실시예들에 따른 블록 저장 클라이언트들에 볼륨 맵핑들을 제공하기 위한 예시적인 시스템을 예시하는 블록도이다. 위에서 언급한 바와 같이, 단일 볼륨은 1차 복제본 및 일부 수의 2차 복제본과 같은 다수의 복제본과 관련될 수 있다. 각 복제본은 몇 개의 블록 저장 서버에 분산될 수 있다. 하드웨어 장애가 발생하거나 백그라운드 로드 밸런싱 작업의 일부로 서버 간에 데이터를 마이그레이션하면 볼륨, 해당 복제본 및 해당 복제본(또는 복제본)을 호스팅하는 서버 간의 연결이 시간에 따라 변경될 수 있다. 블록 저장 서버들을 PSE에 배치함에 있어서, 이러한 관련성들은, PSE가 높은 정도의 데이터 가용성(예를 들어, 1차 복제본으로부터 2차 복제본으로 장애) 내구성을 유지하기 위해(예를 들어, 서버 장애의 경우에 손실된 데이터를 재생성하는 프로세스를 즉시 시작하기 위해) 제공자 네트워크로부터 연결해제되거나 또는 그에 도달할 수 없을 때에도 바람직하게 변화하는 것을 허용된다.
예시된 바와 같이, PSE(1088)는 블록 저장 클라이언트가 볼륨에 액세스할 필요가 있을 때 블록 저장 클라이언트가 해당 볼륨을 호스팅하는 블록 저장 서버들의 위치를 찾을 수 있도록 블록 저장 서버 인스턴스들에 걸쳐 볼륨이 어떻게 분산(또는 매핑)되는지를 추적하는 컴포넌트들을 포함한다. 예시적인 볼륨 A 매핑 데이터(1098)는 각각의 엔트리에 대한 여러 아이템들: 서버 식별자(예를 들어, 인스턴스 또는 호스트 하드웨어와 관련된 고유 식별자), 서버 어드레스(예를 들어, IP 어드레스), 및 볼륨 A에 대한 볼륨 유형(예를 들어, 1차 또는 2차)을 포함한다. 매핑 데이터는 블록 식별자와 같은 상이한 또는 추가적인 아이템을 포함할 수 있다(예를 들어, 복제본이 다수의 블록 저장 서버 인스턴스에 걸쳐 분할되거나 스트라이핑되는 경우). 예시적인 볼륨 A 매핑 데이터(1098)는 볼륨 A가 각각 블록 저장 서버 인스턴스(1050A)에 의해 제공되는 1차 복제본(1052) 및 블록 저장 서버 인스턴스들(950B 및 1050C)에 의해 제공되는 2개의 2차 복제본들(1054 및 1056)을 포함한다는 것을 나타낸다. PSE(1088)는 많은 다른 블록 저장 서버 인스턴스들(미도시)을 호스팅할 수 있고, 아마도 이를 수행할 수 있다는 것에 유의한다.
볼륨 매핑 데이터(1098)를 신뢰성 있게 저장하기 위해, 분산 데이터 저장소들(1064)은 볼륨 매핑 데이터(1098)를 저장할 수 있다. 일부 실시예들에서, 각각의 분산 데이터 저장소는 볼륨 매핑(들)의 상태를 개별적으로 유지하는 노드들의 클러스터(cluster)에 대응한다. 클러스터의 각각의 노드는 클러스터의 다른 노드와 메시지를 교환하여 다른 클러스터 노드가 보는 상태에 따라 그 상태를 업데이트한다. 클러스터의 노드들 중 하나는 볼륨 매핑들에 대한 변경들이 제안되는 리더(leader) 또는 1차 노드로서 지정될 수 있다. 클러스터의 노드들은 주어진 볼륨에 대한 볼륨 매핑 데이터에 대한 변경들을 제안하고 그에 동의하기 위해 팍소스 프로토콜(Paxos protocol)과 같은 컨센서스 프로토콜(consensus protocol)을 구현할 수 있다. 클러스터는 하나 이상의 볼륨에 대한 볼륨 매핑 데이터를 추적할 수 있다. 예시된 바와 같이, 클러스터(1066)는 볼륨 A에 대한 볼륨 매핑 데이터(1098)를 추적하는 반면, 다른 클러스터들(1067)은 다른 볼륨들에 대한 볼륨 매핑 데이터를 추적한다.
일부 실시예들에서, 클러스터의 노드들은 제공자 네트워크의 호스트들에 의해 실행되는 인스턴스들이다. 이러한 인스턴스들은 (예를 들어, 블록 저장 클라이언트를 통해 블록 저장 서버 인스턴스에 의해 호스팅되는 볼륨으로의) 호스트의 비휘발성 저장(non-volatile)에 대한 볼륨 맵핑 데이터의 개별 뷰를 지속한다. 다른 실시예들에서, 클러스터의 노드들은 블록 저장 서버 인스턴스들에 의해 실행되는 블록 저장 서버 소프트웨어의 일부이다. 예시적인 노드 소프트웨어 환경(1090)에 예시된 바와 같이, 노드는 블록 저장 서버 소프트웨어(1080)에 포함된 컨테이너 엔진 프로세스 내에서 호스팅되는 컨테이너(1082)로서 실행될 수 있다. 이러한 노드는 블록 저장 서버 소프트웨어에 의해 제공된 볼륨에 직접 볼륨 매핑 데이터의 뷰를 유지할 수 있다. 바람직하게는, 클러스터의 노드들은 별개의 인스턴스들에 의해 또는 별개의 장애 도메인들 내에서 호스팅된다.
PSE의 호스트에 의해 실행되는 다른 소프트웨어와 마찬가지로, 노드들은 하드웨어 장애의 영향을 받는다. 이러한 경우에, 나머지 노드들(또는 제공자 네트워크의 블록 저장 서비스)은 노드의 손실을 검출하고, 손실된 노드를 대체할 새로운 노드를 생성하고, 다른 노드들의 볼륨 매핑 데이터의 컨센서스 뷰에 기초하여 새로운 노드의 볼륨 매핑 데이터를 업데이트할 수 있다. 결과적으로, 볼륨 매핑 데이터가 변경될 수 있을 뿐만 아니라, 클러스터의 노드들을 호스팅하는 인스턴스들의 아이덴티티들이 변경될 수 있다. 클러스터 매핑 데이터를 사용하여 클러스터를 추적할 수 있다. 예시적인 클러스터 매핑 데이터(1099)는 몇 개의 아이템들: 노드 식별자(예를 들어, VOL_A_NODE1), 노드 어드레스(예를 들어, IP 어드레스), 및 노드 유형(예를 들어, 리더 노드 여부)을 포함한다. 이 예에서, 클러스터는 5개의 노드들로 구성된다.
클러스터 매핑 데이터는 클러스터 발견 서비스(1062)에 의해 결정되고 유지될 수 있다. 원 A에 표시된 바와 같이, 클러스터 발견 서비스(1062)는 PSE 내의 블록 저장 서버 인스턴스들에 의해 호스팅되는 다양한 볼륨들에 대한 클러스터들의 노드 위치들을 모니터링할 수 있다. 클러스터 발견 서비스(1062)는 다양한 방식으로 노드 위치들을 모니터링할 수 있다. 예를 들어, 노드들이 환경(1090)에서 실행되는 실시예들에서, 클러스터 발견 서비스(1062)는 임의의 상주 노드들의 아이덴티티를 획득하기 위해 PSE(1088)에 의해 호스팅되는 모든 블록 저장 서버 인스턴스들(1050)을 주기적으로 폴링할 수 있다. 다른 예로서, PSE(1088)의 호스트들의 네트워크 관리자들은 특수 브로드캐스트 메시지를 임의의 호스팅된 클러스터 노드(예를 들어, 블록 저장 서버 인스턴스에 의해서와 같이 직접적으로 또는 간접적으로 호스팅됨)로 라우팅하도록 구성될 수 있다. 클러스터 발견 서비스(1062)는 임의의 호스팅된 클러스터 노드들의 아이덴티티를 획득하기 위해 쿼리(query)를 주기적으로 브로드캐스트할 수 있다.
일부 실시예들에서, 클러스터 발견 서비스(1062)는 PSE(1088)의 호스트들 중 하나에 의해 호스팅되는 인스턴스이다. 이러한 인스턴스는 BSS IVN(1052) 내에 리저브된 IP 어드레스를 갖는 VNA를 가질 수 있어서, 하드웨어 장애로 인해 호스트를 변경해야 하는 경우에도 도달될 수 있다. 다른 실시예들에서, 클러스터 발견 서비스(1062)는 PSE의 DNS 서비스에 통합될 수 있다. 예를 들어, 볼륨 클러스터들은 도메인과 관련될 수 있고, DNS 서비스는 클러스터의 하나 이상의 노드들의 IP 어드레스로 그 이름에 대한 이름 확인 요청들을 분석할 수 있다.
원 B에 표시된 바와 같이, 인스턴스 관리 서비스(1040)는 특정 호스트의 블록 저장 클라이언트(1060)에 메시지를 발송하여 호스팅된 인스턴스(미도시)에 볼륨을 첨부할 수 있다. 예를 들어, 인스턴스 관리 서비스(1040)는 볼륨 A의 인스턴스 식별자 및 볼륨 식별자를 포함하는 메시지를 호스트에 발송할 수 있다. 원 C에 표시된 바와 같이, 블록 저장 클라이언트(1060)는 볼륨 A 클러스터(1066)의 하나 이상의 노드들의 아이덴티티를 획득하기 위해 클러스터 발견 서비스(1062)에 쿼리할 수 있다. 일부 실시예들에서, 블록 저장 클라이언트(1060)는 클러스터 매핑 데이터 캐시(1066)에 클러스터 매핑 데이터를 캐싱할 수 있다. 일부 실시예들에서, 클러스터 발견 서비스(1062)는 생략될 수 있고, 블록 저장 클라이언트(1060)는 볼륨 A 클러스터(1066)의 노드들을 식별하기 위해 PSE(1088)의 블록 저장 서버 인스턴스들에 (예를 들어, 전술한 브로드캐스트 메커니즘을 통해) 쿼리하도록 구성된다는 것에 유의한다.
원 D에 표시된 바와 같이, 블록 저장 클라이언트(1060)는 클러스터(1066)로부터 볼륨 A에 대한 볼륨 매핑 데이터의 현재 뷰를 획득할 수 있고, 볼륨 매핑 데이터에 기초하여, 원 E에 표시된 바와 같이, 볼륨 A를 호스팅하는 블록 저장 서버들(1050)에 연결할 수 있다. 예시되지는 않았지만, 일부 실시예들에서, 클라이언트로부터 연결 요청을 수신할 때, 블록 저장 서버는 블록 저장 서버가 여전히 그 볼륨(또는 볼륨의 적어도 일부)을 호스팅하고 있는지 여부를 표시하기 위해 볼륨 클러스터에 메시지를 발송할 수 있다. 블록 저장 클라이언트로부터 연결 요청을 수신함에도 불구하고, 블록 저장 서버는 다양한 이유로 볼륨을 호스팅하지 않을 수 있다. 예를 들어, 볼륨을 호스팅하는 서버들의 세트에 대한 최근의 변화는 아직 볼륨 클러스터로 또는 볼륨 클러스터를 통해 전파되지 않았을 수 있거나, 또는 연결 요청을 발송하는 블록 저장 클라이언트는 오래된(out-of-date) 캐싱된 볼륨 맵핑 데이터에 의존했을 수 있다. 블록 저장 서버가 볼륨을 호스팅하고 있는지 여부에 관계없이, 클라이언트로부터 연결 요청을 수신하는 블록 저장 서버는 클러스터 발견 서비스(1062)로부터 볼륨의 하나 이상의 노드의 아이덴티티를 획득할 수 있다. 블록 저장 서버가 더 이상 볼륨을 호스팅하지 않는 경우, 블록 저장 서버는 볼륨 매핑 데이터로부터 블록 저장 서버를 제거하기 위해 클러스터에 의해 유지되는 데이터 저장소에 대한 업데이트를 제안할 수 있다. 또한, 블록 저장 서버는 연결 시도가 장애했음을 나타내기 위해 요청을 개시한 블록 저장 클라이언트에 응답을 발송할 수 있으며, 옵션으로 볼륨이 서버에 의해 더 이상 호스팅되지 않음을 나타낸다. 블록 저장 서버가 여전히 볼륨을 호스팅하고 있는 경우, 블록 저장 서버는 매핑 데이터의 적어도 그 부분이 유효함을 클러스터에 표시하기 위해 확인 응답(acknowledge)을 클러스터에 발송할 수 있다.
도 11은 적어도 일부 실시예들에 따른 볼륨 맵핑들을 추적하기 위한 예시적인 시스템을 예시하는 블록도이다. 상술한 바와 같이, PSE와 제공자 네트워크 간의 연결은 보장될 수 없다. 원하는 레벨의 데이터 가용성 및 데이터 내구성을 충족시키기 위해, PSE는 주어진 볼륨과 해당 볼륨을 호스팅하는 블록 저장 서버 인스턴스 사이의 매핑이 변경되도록 하는 기능을 포함한다. 도 10을 참조하여 설명된 바와 같이, 주어진 볼륨에 대한 볼륨은 분산 데이터 저장소를 구현하는 클러스터를 사용하여 추적될 수 있다. 도 11 은 볼륨 배치에 대한 계층화된(tiered) 접근 방식 - 또는 블록 저장 서버 인스턴스들이 볼륨에 대한 복제본들 또는 복제본들의 일부를 호스팅하도록 선택되는 프로세스를 도시한다. 특히, BSS(1106)의 BSS 볼륨 배치 서비스(1107)는 볼륨의 생성시 초기 배치 결정들 및 관련된 볼륨 매핑을 수행하고, PSE 볼륨 배치 서비스(1108)는 볼륨의 수명에 걸쳐 볼륨 매핑에 대한 후속 변경들을 관리한다. PSE 볼륨 배치 서비스(1108)는 PSE(1188)에 의해 호스팅되는 인스턴스에 의해, PSE 프레임워크(예를 들어, PSE 프레임워크(202))의 컴포넌트로서 통합되는 등 다양한 방식들로 구현될 수 있다.
원 A에 표시된 바와 같이, PSE 볼륨 배치 서비스(1108)는 PSE(1188)에 의해 호스팅되는 블록 저장 서버 인스턴스들의 상태를 모니터링한다. 예를 들어, PSE 볼륨 배치 서비스(1108)는 호스팅된 블록 저장 서버 인스턴스들을 주기적으로 폴링하여 그들이 응답하는지 여부를 체크하고 그리고/또는 (예를 들어, 도 9를 참조하여 설명된 바와 같이) 호스팅된 블록 저장 서버 인스턴스들, 그들의 장애 도메인들, 및/또는 호스트들의 자원 사용과 관련된 메트릭들을 수집할 수 있다. 예시된 바와 같이, PSE 볼륨 배치 서비스(1108)는 원형 B에 표시된 바와 같이 수집된 서버 상태를 BSS 볼륨 배치 서비스(1107)로 발송할 수 있다. 다른 실시예들에서, BSS 볼륨 배치 서비스(1107)는 (도 9를 참조하여 설명된 바와 같이) 인스턴스 관리 서비스로부터 자원 활용과 관련된 메트릭들을 획득할 수 있다는 것에 유의한다.
PSE(1188)에 의해 호스팅되는 인스턴스에 대한 새로운 블록 저장 볼륨을 생성하라는 요청을 수신하면, BSS(1106)는 BSS 배치 서비스(1107)로부터 볼륨 배치 추천들을 요청할 수 있다. 새로운 볼륨의 프로파일(예를 들어, 얼마나 많은 복제본들, 스트라이프된 복제본들 등)에 따라, BSS 배치 서비스(1107)는 추천된 블록 저장 서버 인스턴스들의 식별들을 제공할 수 있다. 이 예에서, BSS 배치 서비스(1107)는 블록 저장 서버 인스턴스들(1150A 및 1150B)이 2개의 복제본들을 갖는 새로운 볼륨 A를 호스팅하도록 추천한다. 추천된 블록 저장 서버 인스턴스들을 채택하면, BSS(1106)는 원 C에 표시된 바와 같이 볼륨 A에 대한 볼륨 매핑 데이터를 추적하기 위해 새로운 클러스터(1166)를 생성한다. 매핑 데이터는 초기에 1차 복제본을 호스팅하는 블록 저장 서버 인스턴스(1150A) 및 2차 복제본을 호스팅하는 블록 저장 서버 인스턴스들(1150B)을 식별한다. 부가적으로, 원 D에 표시된 바와 같이, BSS(1106)는 저장 볼륨들(예를 들어, 블록 저장 서버 인스턴스(1150A)에 의해 호스팅되는 저장 볼륨 및 블록 저장 서버 인스턴스(1150B)에 의해 호스팅되는 저장 볼륨)을 생성하기 위해 하나 이상의 메시지들을 식별된 블록 저장 서버들로 발송한다. 저장 볼륨은 각 블록 저장 서버 인스턴스에 프로비저닝된 기본 호스트 저장 디바이스 용량으로 백업할 수 있다. 블록 저장 서버 인스턴스(1150A)로 생성된 저장 볼륨은 볼륨 A의 1차 복제본(1152)을 호스팅할 수 있고, 블록 저장 서버 인스턴스(1150B)로 생성된 저장 볼륨은 볼륨 A의 2차 복제본(1154A)을 호스팅할 수 있다. 일부 실시예들에서, 블록 저장 서버 인스턴스들은 도 8을 참조하여 설명된 바와 같이 볼륨 스냅샷 또는 머신 이미지로부터 새롭게 생성된 저장 볼륨들을 로딩할 수 있다. 이 예에서, 볼륨 A에 부착된 인스턴스(미도시)는 일정 시간 동안 블록 저장 동작들을 수행하고, 블록 저장 서버 인스턴스(1150A)는 블록 저장 서버 인스턴스(1150B)와 통신한다(예를 들어, 원 E에 표시된 바와 같이 1차 복제본(1152)에 대한 기록들을 2차 복제본(1154B)에 전파하기 위해).
일부 시점에서, 원 F에 표시된 바와 같이, 블록 저장 서버 인스턴스(1150B)는 문제를 경험할 수 있다. 예를 들어, 블록 저장 서버 인스턴스(1150B)는 (예를 들어, 메모리 누설, 하드웨어 고장 등으로 인해) 느리거나 응답하지 않을 수 있다. 문제의 검출은 다양한 방식으로 발생할 수 있다. 일부 실시예들에서, 블록 저장 서버 인스턴스(1150A)는 전파된 기록들을 확인 응답하는 것에 대한 장애로 인한 것과 같은 문제를 검출한다. 이러한 경우, 블록 저장 서버 인스턴스(1150A)는 검출된 문제에 응답하여 수행할 하나 이상의 액션을 포함하는 정책을 포함할 수 있다. 예를 들어, 블록 저장 서버 인스턴스(1150A)는 확인 응답되지 않은 상태로 가기 위해 일부 수의 연속적 전파된 기록들을 대기하거나 또는 일부 시간 기간을 대기할 수 있다. 이 시점에서, 블록 저장 서버 인스턴스(1150A)는 PSE 볼륨 배치 서비스(1108)로부터 2차 복제본(1154)에 대한 대체 블록 저장 서버 인스턴스를 요청할 수 있다. 다른 실시예들에서, PSE 볼륨 배치 서비스(1108)는 원 A를 참조하여 위에서 설명된 모니터링 동안 (예를 들어, 수집된 메트릭들 또는 응답성에 기초하여) 문제를 검출한다. 다시, PSE 볼륨 배치 서비스(1108)는 2차 복제본(1154)에 대한 블록 저장 서버 인스턴스의 교체를 개시하는 것을 포함하여, 검출된 문제에 응답하여 수행할 하나 이상의 액션들을 포함하는 정책을 포함할 수 있다. 검출기와 무관하게, PSE 볼륨 배치 서비스(1108)는 대체 블록 저장 서버 인스턴스의 아이덴티티를 블록 저장 서버 인스턴스(1150A)에 제공한다.
이 예에서, PSE 볼륨 배치 서비스(1108)는 원 G로 표시된 바와 같이 블록 저장 서버 인스턴스(1150A)에 대해 블록 저장 서버 인스턴스(1150C)를 식별한다. 케이트되는 복제 데이터를 백업하기 위한 저장 볼륨을 생성하기 위해 블록 저장 서버 인스턴스(1150C)에 메시지가 발송된다. 예를 들어, 블록 저장 서버 인스턴스(1150C)를 식별하면, PSE 볼륨 배치 서비스(1108)는 저장 볼륨을 생성하기 위해 블록 저장 서버 인스턴스(1150C)에 메시지를 발송할 수 있다. 다른 예로서, 블록 저장 서버 인스턴스(1150A)는 PSE 볼륨 배치 서비스(1108)로부터 식별을 수신하면 저장 볼륨을 생성하기 위한 메시지를 발송할 수 있다. 일단 생성되면, 블록 저장 서버 인스턴스(1150A)는 원 H에 표시된 바와 같이 복제본(1154B)으로서 블록 저장 서버 인스턴스(1150C)로의 복제본(1152)의 미러링을 개시할 수 있다. 블록 저장 서버 인스턴스(1150B)가 응답을 유지하는 경우(예를 들어, 그러나 열악한 성능을 나타내는 경우), 미러링 동작은 복제본(1154A)을 복제본(1154B)에 복사함으로써 수행될 수 있다는 것에 유의한다. 이 시나리오에서, 복제본(1154) 또는 복제본(1152) 중 어느 하나로부터의 재미러링이 실현 가능한데, 그 이유는 이들 복제본들이 저장 서버들 사이에 분산되지 않기 때문이며, 다른 실시예들에서, 복제본이 분산되는 다양한 저장 서버들은, 예를 들어, 저장된 데이터로 인코딩된 이중화(예를 들어, 패러티 비트들, 에러 정정 코드들 등)를 사용함으로써, 손실된 데이터를 재생성 또는 다른 식으로 생성하기 위해 액세스될 필요가 있을 수 있다. 예를 들어, 복제본 데이터가 10개의 블록 저장 서버 인스턴스에 걸쳐 인코딩 및 배포되고 그 중 하나가 손실된 경우, 손실된 데이터는 9개의 나머지 블록 저장 서버 인스턴스로부터 복제본과 관련된 데이터를 판독함으로써 재생성될 수 있다. 다른 예로서, 다른 10개의 블록 저장 서버가 동일한 분배 패턴을 사용하여 볼륨의 다른 복제본을 호스팅하는 경우, 손실된 데이터는 다른 복제본의 대응하는 부분을 호스팅하는 블록 저장 서버 인스턴스로부터 복사될 수 있다.
원 I에 표시된 바와 같이, 블록 저장 서버 인스턴스(1150A)는 볼륨 A에 대한 볼륨 매핑을 업데이트하기 위한 요청을 클러스터(1166)에 제출할 수 있고, 블록 저장 서버 인스턴스(1150B)를 2차 복제본의 호스트로서 블록 저장 서버 인스턴스(1150C)로 대체한다. 블록 저장 서버 인스턴스(1150A)는 블록 저장 서버 인스턴스(1150C)로의 리미러링을 개시하거나 완료할 때 클러스터(1166)에 요청을 제출할 수 있다. 다른 실시예들에서, 다른 엔티티는 PSE 볼륨 배치 서비스(1108) 또는 블록 저장 서버 인스턴스(1150C)와 같은 클러스터(1166)에 볼륨 A에 대한 볼륨 매핑을 업데이트하기 위한 요청을 제출할 수 있다.
도 12는 적어도 일부 실시예들에 따른 가상화된 블록 저장 서버를 론칭하기 위한 방법의 동작들을 예시하는 흐름도이다. 동작들 (또는 본 명세서에서 설명된 다른 프로세스들, 또는 변형들, 및/또는 이들의 조합들)의 일부 또는 전부는 실행가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행되고, 하드웨어 또는 이들의 조합들에 의해, 하나 이상의 프로세서들 상에서 집합적으로 실행되는 코드 (예를 들어, 실행가능한 명령어들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로 구현된다. 코드는 하나 이상의 프로세서에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독 가능 저장 매체에 저장된다. 컴퓨터 판독가능 저장 매체는 비일시적이다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 제공자 네트워크의 익스텐션의 하나 이상의 컴포넌트들에 의해 실행되는 컴퓨터 프로그램들 또는 애플리케이션들에 의해 수행된다. 제공자 네트워크의 익스텐션은 하나 이상의 물리적 컴퓨팅 디바이스들 또는 시스템들을 포함하고, 제공자 네트워크의 고객의 구내와 같은 제공자 네트워크의 데이터 센터(예를 들어, 데이터 센터 네트워크의 외부)로부터 원격에 위치된다. 클라우드 제공자 네트워크와 같은 제공자 네트워크는 제공자 네트워크의 데이터 센터 내에 위치된 컴퓨터 시스템들에 의해 실행되는 다양한 서비스들을 포함한다. 익스텐션의 하나 이상의 컴포넌트들은 제공자 네트워크의 컴퓨터 시스템들에 의해 실행되는 서비스들로부터 관리 동작들을 수신함으로써, 제공자 네트워크와 통신한다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 다른 도면들의 호스트(예를 들어, 호스트(420A))의 컴포넌트들에 의해 수행된다.
동작들은, 블록(1205)에서, 제공자 네트워크의 익스텐션의 컴퓨터 시스템에 의해, 블록 저장 서버 애플리케이션을 호스팅하기 위해 제1 가상 머신을 론칭하기 위한 제1 요청을 수신하는 것을 포함하며, 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신한다. PSE에 의해 호스팅되는 인스턴스들에 블록 저장 디바이스들을 제공할 때, PSE의 호스트들에 의해 제공되는 가상화는 블록 저장 서버를 호스팅하는데 사용될 수 있다. 예를 들어, 제공자 네트워크의 블록 저장 서비스는 인스턴스 관리 서비스에 의해 블록 저장 서버 가상 머신의 론칭을 개시할 수 있고, 이는 결국 제공자 네트워크와 PSE 사이의 보안 통신 채널을 통해 PSE의 선택된 호스트의 호스트 관리자에게 개시 요청을 발행할 수 있다.
동작들은, 블록(1210)에서, 호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스들의 저장 용량의 적어도 일부를 프로비저닝된 저장 디바이스로서 제1 가상 머신에 프로비저닝하는 것을 더 포함한다. 가상 머신을 론칭하는 것의 일부로서, 호스트 시스템의 호스트 관리자는 호스트 시스템의 컴퓨팅 자원들의 일부를 가상 머신에 할당하거나 다른 식으로 프로비저닝할 수 있다. 이러한 자원들은, 예를 들어, 호스트 시스템의 저장 디바이스들(예를 들어, SSD들)의 저장 용량, 메모리 용량(예를 들어, RAM), 프로세서 또는 프로세서 코어들 등을 포함할 수 있다.
동작들은, 블록(1215)에서, 제1 가상 머신으로 블록 저장 서버 애플리케이션을 실행하는 것을 더 포함한다. 블록 저장 서버 애플리케이션을 실행하는 것의 일부로서, 동작들은, 블록(1220)에서, 로직 볼륨을 생성하기 위해 제공자 네트워크의 블록 저장 서비스로부터의 제2 요청에 응답하여 프로비저닝된 저장 디바이스 상에 로직 볼륨을 생성하는 것을 더 포함한다. 예를 들어, 제공자 네트워크의 블록 저장 서비스는 인스턴스가 블록 저장 인터페이스를 통해 볼륨에 액세스할 수 있도록 다른 인스턴스에 부착될 수 있는 (프로비저닝된 저장 용량을 사용하여) 볼륨을 생성하기 위해 하나 이상의 메시지를 발송할 수 있다.
블록 저장 서버 애플리케이션을 실행하는 일부로서, 동작들은, 블록(1225)에서, 로직 볼륨으로 입력/출력 동작을 수행하기 위한 제3 요청을 수신하는 것, 및 블록(1230)에서, 로직 볼륨을 이용하여 요청된 입력/출력 동작을 수행하는 것을 더 포함한다. 예를 들어 그리고 도 4를 참조하면, 인스턴스 A(430)는 인스턴스에 부착되고 블록 저장 볼륨 A(434)에 의해 백업되는 가상 블록 디바이스의 블록 어드레스로부터 데이터의 블록을 판독하기 위한 명령를 발행할 수 있다. 블록 저장 서버 인스턴스(450)는 (예를 들어, BSS IVN(452)을 통해) 해당 명령를 수신하고, 블록 저장 볼륨 A(434)에 대해 그것을 처리할 수 있다. 다른 예로서 그리고 도 5를 참조하면, 인스턴스 B(436)는 인스턴스에 부착되고 블록 저장 볼륨 B(440)에 의해 백업되는 가상 블록 디바이스의 블록 어드레스에 데이터의 블록을 기록하기 위한 명령를 발행할 수 있다. 블록 저장 서버 인스턴스(450)는 (예를 들어, BSS IVN(452)을 통해) 해당 명령를 수신하고, 블록 저장 볼륨 A(440)에 대해 그것을 처리할 수 있다.
도 13은 본 발명의 실시예에 따른 가상화 블록 저장 서버를 이용하는 방법을 보여주는 흐름도이다. 동작들 (또는 본 명세서에서 설명된 다른 프로세스들, 또는 변형들, 및/또는 이들의 조합들)의 일부 또는 전부는 실행가능한 명령어들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행되고, 하드웨어 또는 이들의 조합들에 의해, 하나 이상의 프로세서들 상에서 집합적으로 실행되는 코드 (예를 들어, 실행가능한 명령어들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서 구현된다. 코드는 하나 이상의 프로세서에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독 가능 저장 매체에 저장된다. 컴퓨터 판독가능 저장 매체는 비일시적이다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 제공자 네트워크의 익스텐션의 하나 이상의 컴포넌트들에 의해 실행되는 컴퓨터 프로그램들 또는 애플리케이션들에 의해 수행된다. 제공자 네트워크의 익스텐션은 하나 이상의 물리적 컴퓨팅 디바이스들 또는 시스템들을 포함하고, 제공자 네트워크의 고객의 구내와 같은 제공자 네트워크의 데이터 센터(예를 들어, 데이터 센터 네트워크의 외부)로부터 원격에 위치된다. 클라우드 제공자 네트워크와 같은 제공자 네트워크는 제공자 네트워크의 데이터 센터 내에 위치된 컴퓨터 시스템들에 의해 실행되는 다양한 서비스들을 포함한다. 익스텐션의 하나 이상의 컴포넌트들은 제공자 네트워크의 컴퓨터 시스템들에 의해 실행되는 서비스들로부터 관리 동작들을 수신함으로써, 제공자 네트워크와 통신한다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 다른 도면들의 호스트(예를 들어, 호스트(420A))에 의해 수행된다.
동작들은, 블록(1305)에서, 컴퓨터 시스템에 의해, 컴퓨터 시스템의 하나 이상의 저장 디바이스들을 사용하여 제1 볼륨을 호스팅하기 위해 제1 블록 저장 서버 가상 머신을 실행하는 것을 포함한다. 도 4에 예시된 바와 같이, 예를 들어, 호스트(420A)는 가상 머신 - 블록 저장 서버 인스턴스(450)를 호스팅하고 있다. 동작들은, 블록(1310)에서, 컴퓨터 시스템에 의해, 가상 블록 저장 디바이스에 대한 액세스를 갖는 제2 가상 머신을 실행하는 것을 더 포함한다. 호스트(420A)는 또한 다른 가상 머신, 즉 인스턴스(430)를 호스팅하고 있다. 동작들은, 블록(1315)에서, 컴퓨터 시스템에 의해, 블록 저장 클라이언트를 실행하는 것을 더 포함한다. 호스트(420A)는 블록 저장 클라이언트(460A)를 포함하며, 이는 호스팅된 가상 머신들에 블록 저장 디바이스들의 부착을 가능하게 할 수 있다. 블록 저장 클라이언트를 실행의 일부로서, 동작들은, 블록(1320)에서, 제2 가상 머신으로부터, 가상 블록 저장 디바이스 상에서 수행할 제1 블록 저장 동작을 수신하는 것, 및 블록(1325)에서, 제1 블록 저장 서버 가상 머신이 제1 볼륨을 이용하여 제1 블록 저장 동작을 수행하게 하는 메시지를 제1 블록 저장 서버 가상 머신에 발송하는 것을 더 포함한다. 가상 머신들은 블록 저장 클라이언트를 통해 부착된 블록 저장 디바이스들에 블록 저장 동작들을 발행할 수 있다(예를 들어, 블록 판독들, 기록들, 버스트 판독들, 기록들 등). 블록 저장 클라이언트는 예를 들어 네트워크를 통해 블록 어드레스를 포함하는 볼륨을 호스팅하는 블록 저장 서버로 이러한 블록 저장 동작들을 중계할 수 있다.
도 14는 적어도 일부 실시예들에 따른 제공자 서브스트레이트 익스텐션에서 가상화된 블록 저장 서버들을 관리하기 위한 방법의 동작들을 예시하는 흐름도이다. 동작들 (또는 본 명세서에서 설명된 다른 프로세스들, 또는 변형들, 및/또는 이들의 조합들)의 일부 또는 전부는 실행가능한 명령어들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행되고, 하드웨어 또는 이들의 조합들에 의해, 하나 이상의 프로세서들 상에서 집합적으로 실행되는 코드 (예를 들어, 실행가능한 명령어들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들) 로서 구현된다. 코드는 하나 이상의 프로세서에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독 가능 저장 매체에 저장된다. 컴퓨터 판독가능 저장 매체는 비일시적이다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 제공자 네트워크의 익스텐션의 하나 이상의 컴포넌트들에 의해 실행되는 컴퓨터 프로그램들 또는 애플리케이션들에 의해 수행된다. 제공자 네트워크의 익스텐션은 하나 이상의 물리적 컴퓨팅 디바이스들 또는 시스템들을 포함하고, 제공자 네트워크의 고객의 구내와 같은 제공자 네트워크의 데이터 센터(예를 들어, 데이터 센터 네트워크의 외부)로부터 원격에 위치된다. 클라우드 제공자 네트워크와 같은 제공자 네트워크는 제공자 네트워크의 데이터 센터 내에 위치된 컴퓨터 시스템들에 의해 실행되는 다양한 서비스들을 포함한다. 익스텐션의 하나 이상의 컴포넌트들은 제공자 네트워크의 컴퓨터 시스템들에 의해 실행되는 서비스들로부터 관리 동작들을 수신함으로써, 제공자 네트워크와 통신한다. 일부 실시예들에서, 동작들 중 하나 이상(또는 전부)은 다른 도면들의 PSE(예를 들어, PSE(1088), PSE(1188))의 컴포넌트들에 의해 수행된다.
동작들은, 블록(1405)에서, 제1 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제1 부분을 저장하기 위해 제1 저장 볼륨을 생성하기 위한 제1 요청을 수신하는 것, 및 블록(1410)에서, 제2 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 저장하기 위해 제2 저장 볼륨을 생성하기 위한 제2 요청을 수신하는 것을 포함한다. 도 11에 예시된 바와 같이, 예를 들어, 볼륨(예를 들어, 복제본들, 스트라이프된 복제본들 등)의 초기 배치는 제공자 네트워크의 블록 저장 서비스(1106)로부터 발원할 수 있고 PSE(1188)의 컴포넌트들에 의해 수신될 수 있다. 도 11에 도시된 예에서, 볼륨 A는 PSE(1188)의 호스트들 상의 블록 저장 서버 인스턴스들(1150A 및 1150C)을 사용하여 초기에 저장된다.
동작들은, 블록(1415)에서, 제1 로직 볼륨의 제2 부분을 저장하도록 제3 저장 볼륨을 생성하기 위해 제3 블록 저장 서버 인스턴스에 제3 요청을 발송하는 것을 더 포함한다. 일부 시점에서, 볼륨의 일부를 호스팅하는 블록 저장 서버 인스턴스가 변경될 필요가 있을 수 있다. 본 명세서에 설명된 바와 같이, PSE 볼륨 배치 서비스(1108) 또는 볼륨을 호스팅하는 다른 블록 저장 서버 인스턴스들 중 하나는 변경되는 인스턴스를 대체하기 위해 다른 블록 저장 서버 인스턴스에 메시지를 발송할 수 있다.
동작들은, 블록(1420)에서, 제3 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 제3 저장 볼륨에 저장하는 것을 더 포함한다. 동작들은, 블록(1425)에서, 제2 블록 저장 서버 인스턴스의 식별을 제거하고 제3 블록 저장 서버 인스턴스의 식별을 추가하기 위해 제1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 포함하는 데이터 저장소를 업데이트하는 것을 더 포함한다. 인스턴스들에 걸친 볼륨의 마이그레이션을 추적하기 위해, PSE(1188)는 볼륨을 매핑하는 데이터 저장소를 호스팅할 수 있다(그것의 복제본들, 서버들에 걸친 스트라이핑, 만약 있다면, 등 포함). 이러한 데이터 저장소는 도 10을 참조하여 설명된 클러스터일 수 있다.
도 15는 적어도 일부 실시예들에 따른 예시적인 제공자 네트워크(또는 "서비스 제공자 시스템") 환경을 예시한다. 제공자 네트워크(1500)는, 하나 이상의 데이터 센터들에서의 네트워크들 또는 제공자 네트워크 내의 디바이스들 상에서 구현되는, 계산 및 저장 자원들을 포함하지만 이에 제한되지 않는, 가상화된 자원들의 인스턴스들(1512)을 고객이 구매, 대여 또는 달리 획득할 수 있게 하는 하나 이상의 가상화 서비스들(1510)을 통해 고객들에게 자원 가상화를 제공할 수 있다. 로컬 인터넷 프로토콜(IP) 어드레스들(1516)은 자원 인스턴스들(1512)과 관련될 수 있고; 로컬 IP 어드레스들은 제공자 네트워크(1500) 상의 자원 인스턴스들(1512)의 내부 네트워크 어드레스들이다. 일부 실시예들에서, 제공자 네트워크(1500)는 또한 고객들이 제공자(1500)로부터 획득할 수 있는 공공 IP 어드레스들(1514) 및/또는 공공 IP 어드레스 범위들(예를 들어, 인터넷 프로토콜 버전 4(IPv4) 또는 인터넷 프로토콜 버전 6(IPv6) 어드레스들)을 제공할 수 있다.
통상적으로, 제공자 네트워크(1500)는 가상화 서비스들(1510)을 통해, 서비스 제공자의 고객(예를 들어, 하나 이상의 고객 디바이스(들)(1552)를 포함하는 하나 이상의 클라이언트 네트워크들(1550A-1550C)을 동작시키는 고객)이 고객에게 할당되거나 할당된 적어도 일부 공공 IP 어드레스들(1514)을 고객에게 할당된 특정 자원 인스턴스들(1512)과 동적으로 관련시키는 것을 허용할 수 있다. 제공자 네트워크(1500)는 또한 고객이 고객에게 할당된 하나의 가상화된 컴퓨팅 자원 인스턴스(1512)에 이전에 매핑된 공공 IP 어드레스(1514)를 고객에게 또한 할당된 다른 가상화된 컴퓨팅 자원 인스턴스(1512)에 재매핑하는 것을 허용할 수 있다. 서비스 제공자에 의해 제공된 가상화된 컴퓨팅 자원 인스턴스들(1512) 및 공공 IP 어드레스들(1514)을 사용하여, 고객 네트워크(들)(1550A-1550C)의 운영자와 같은 서비스 제공자의 고객은, 예를 들어, 고객-특정 애플리케이션들을 구현할 수 있고, 인터넷과 같은 중간 네트워크(1540) 상에 고객의 애플리케이션들을 제시할 수 있다. 그 다음, 중간 네트워크(1540) 상의 다른 네트워크 엔티티들(1520)은 고객 네트워크(들)(1550A-1550C)에 의해 발행된 목적지 공공 IP 어드레스(1514)로의 트래픽을 생성할 수 있고; 트래픽은 서비스 제공자 데이터 센터로 라우팅되고, 데이터 센터에서 네트워크 서브스트레이트를 통해 목적지 공공 IP 어드레스(1514)에 현재 맵핑된 가상화된 컴퓨팅 자원 인스턴스(1512)의 로컬 IP 어드레스(1516)로 라우팅된다. 유사하게, 가상화된 컴퓨팅 자원 인스턴스(1512)로부터의 응답 트래픽은 네트워크 서브스트레이트를 통해 중간 네트워크(1540)로 다시 소스 엔티티(1520)로 라우팅될 수 있다.
본 명세서에서 사용되는 바와 같이, 로컬 IP 어드레스들은, 예를 들어, 제공자 네트워크에서의 자원 인스턴스들의 내부 또는 "사설" 네트워크 어드레스들을 지칭한다. 로컬 IP 어드레스들은 IETF(Internet Engineering Task Force) RFC 1918에 의해 리저브된 어드레스 블록들 및/또는 IETF RFC 4193에 의해 지정된 어드레스 포맷 내에 있을 수 있고 제공자 네트워크 내에서 변경 가능할 수 있다. 제공자 네트워크 외부에서 발원하는 네트워크 트래픽은 로컬 IP 어드레스로 직접 라우팅되지 않는다; 대신 트래픽은 자원 인스턴스의 로컬 IP 어드레스로 매핑되는 공공 IP 어드레스를 사용한다. 제공자 네트워크는 NAT(network address translation) 또는 공공 IP 어드레스들로부터 로컬 IP 어드레스들로의 그리고 그 반대의 매핑을 수행하기 위한 유사한 기능을 제공하는 네트워킹 디바이스들 또는 기기들을 포함할 수 있다.
공공 IP 어드레스는 서비스 공급업체나 고객이 자원 인스턴스에 할당한 인터넷 변경 가능 네트워크 어드레스이다. 공공 IP 어드레스로 라우팅되는 트래픽은 예를 들어 1:1 NAT를 통해 변환되고, 자원 인스턴스의 각각의 로컬 IP 어드레스로 포워딩된다.
일부 공공 IP 어드레스들은 제공자 네트워크 인프라스트럭처에 의해 특정 자원 인스턴스들에 할당될 수 있고; 이러한 공공 IP 어드레스들은 표준 공공 IP 어드레스들, 또는 단순히 표준 IP 어드레스들로 지칭될 수 있다. 일부 실시예들에서, 자원 인스턴스의 로컬 IP 어드레스에 대한 표준 IP 어드레스의 매핑은 모든 자원 인스턴스 유형들에 대한 디폴트 론칭 구성이다.
적어도 일부 공공 IP 어드레스들은 제공자 네트워크(1500)의 고객들에 할당되거나 그에 의해 획득될 수 있고; 그런 다음 고객은 자신의 할당된 공공 IP 어드레스들을 고객에게 할당된 특정 자원 인스턴스들에 할당할 수 있다. 이러한 공공 IP 어드레스들은 고객 공공 IP 어드레스들, 또는 단순히 고객 IP 어드레스들로 지칭될 수 있다. 표준 IP 어드레스의 경우에서와 같이 제공자 네트워크(1500)에 의해 자원 인스턴스에 할당되는 대신에, 고객 IP 어드레스는 예를 들어 서비스 제공자에 의해 제공되는 API를 통해 고객에 의해 자원 인스턴스에 할당될 수 있다. 표준 IP 어드레스와는 달리, 고객 IP 어드레스는 고객 계정에 할당되고, 필요에 따라 또는 원하는 대로 각각의 고객에 의해 다른 자원 인스턴스에 재매핑될 수 있다. 고객 IP 어드레스는 특정 자원 인스턴스가 아닌 고객의 계정과 관련되며 고객이 해당 IP 어드레스를 릴리즈하도록 선택할 때까지 고객이 제어한다. 기존의 고정 IP 어드레스와는 달리 고객 IP 어드레스를 사용하면 고객의 공공 IP 어드레스를 고객의 계정과 연결된 자원 인스턴스로 재매핑하여 자원 인스턴스 또는 가용 구역 장애를 마스킹할 수 있다. 예를 들어, 고객 IP 어드레스는 고객 IP 어드레스를 교체 자원 인스턴스로 재매핑하여 고객의 자원 인스턴스 또는 소프트웨어에 대한 문제를 해결할 수 있도록 한다.
도 16은 적어도 일부 실시예들에 따른 고객들에게 저장 서비스 및 하드웨어 가상화 서비스를 제공하는 예시적인 제공자 네트워크의 블록도이다. 하드웨어 가상화 서비스(1620)는 다수의 컴퓨팅 자원들(1624)(예를 들어, VM들)을 고객들에게 제공한다. 컴퓨팅 자원들(1624)은, 예를 들어, 제공자 네트워크(1600)의 고객들에게(예를 들어, 고객 네트워크(1650)를 구현하는 고객에게) 렌트되거나 리스될 수 있다. 각각의 컴퓨팅 자원(1624)에는 하나 이상의 로컬 IP 어드레스들이 제공될 수 있다. 제공자 네트워크(1600)는 컴퓨팅 자원들(1624)의 로컬 IP 어드레스들로부터 공공 인터넷 목적지들로, 그리고 공공 인터넷 소스들로부터 컴퓨팅 자원들(1624)의 로컬 IP 어드레스들로 패킷들을 라우팅하도록 구성될 수 있다.
제공자 네트워크(1600)는 예를 들어 로컬 네트워크(1656)를 통해 중간 네트워크(1640)에 결합된 고객 네트워크(1650), 중간 네트워크(1640)에 그리고 제공자 네트워크(1600)에 결합된 하드웨어 가상화 서비스(1620)를 통해 가상 컴퓨팅 시스템(1692)을 구현하는 능력을 제공할 수 있다. 일부 실시예들에서, 하드웨어 가상화 서비스(1620)는 하나 이상의 API들(1602), 예를 들어 웹 서비스 인터페이스를 제공할 수 있고, 이를 통해 고객 네트워크(1650)는 예를 들어 콘솔(1694)(예를 들어, 웹-기반 애플리케이션, 독립형 애플리케이션, 모바일 애플리케이션 등)을 통해 하드웨어 가상화 서비스(1620)에 의해 제공되는 기능에 액세스할 수 있다. 일부 실시예들에서, 제공자 네트워크(1600)에서, 고객 네트워크(1650)에서의 각각의 가상 컴퓨팅 시스템(1692)은 고객 네트워크(1650)에 리스되거나, 렌트되거나, 또는 다른 방식으로 제공되는 컴퓨팅 자원(1624)에 대응할 수 있다.
가상 컴퓨팅 시스템(1692) 및/또는 다른 고객 디바이스(1690)의 인스턴스로부터(예를 들어, 콘솔(1694)을 통해), 고객은 제공자 네트워크(1600)에 의해 제공되는 가상 데이터 저장소(1616)(예를 들어, 폴더 또는 "버킷(bucket)", 가상화된 볼륨, 데이터베이스 등)의 저장 자원들(1618A-1618N)로부터 데이터를 액세스하고 그에 데이터를 저장하기 위해, 예를 들어 하나 이상의 API들(1602)을 통해 저장 서비스(1610)의 기능에 액세스할 수 있다. 일부 실시예들에서, 가상화된 데이터 저장소 게이트웨이(미도시)는 적어도 일부 데이터, 예를 들어 빈번하게 액세스되거나 중요한 데이터를 로컬에 캐싱할 수 있고, 데이터의 1차 저장소(가상화된 데이터 저장소(1616))가 유지되도록 로컬 캐시로부터 새로운 또는 수정된 데이터를 업로드하기 위해 하나 이상의 통신 채널들을 통해 저장 서비스(1610)와 통신할 수 있는 고객 네트워크(1650)에 제공될 수 있다. 일부 실시예들에서, 사용자는 가상 컴퓨팅 시스템(1692)을 통해 및/또는 다른 고객 디바이스(1690) 상에서, 저장 가상화 서비스로서 작용하는 저장 서비스(1610)를 통해 가상 데이터 저장소(1616) 볼륨들을 설치하고 액세스할 수 있고, 이들 볼륨들은 사용자에게 로컬(가상화된) 스토리지(1698)로서 나타날 수 있다.
도 16에 도시되지 않았지만, 가상화 서비스(들)는 또한 API(들)(1602)를 통해 제공자 네트워크(1600) 내의 자원 인스턴스들로부터 액세스될 수 있다. 예를 들어, 고객, 기기 서비스 제공자, 또는 다른 엔티티는 가상 네트워크 내의 또는 다른 가상 네트워크 내의 하나 이상의 자원 인스턴스들의 할당을 요청하기 위해 API(1602)를 통해 제공자 네트워크(1600) 상의 각각의 가상 네트워크 내로부터 가상화 서비스에 액세스할 수 있다.
도 17은 적어도 일부 실시예들에서 사용될 수 있는 예시적인 컴퓨터 시스템을 예시하는 블록도이다. 적어도 일부 실시예들에서, 이러한 컴퓨터 시스템은 본 명세서에 설명된 제공자 서브스트레이트 및/또는 PSE, 다양한 가상화된 컴포넌트들(예를 들어, 가상 머신들, 컨테이너들 등), 및/또는 SED를 지원하는데 사용되는 제어-평면 및/또는 데이터-평면 컴포넌트들 중 하나 이상을 구현하는 서버로서 사용될 수 있다. 이러한 컴퓨터 시스템은 하나 이상의 컴퓨터 액세스가능 매체를 포함하거나 액세스하도록 구성된 범용 또는 특수 목적 컴퓨터 시스템을 포함할 수 있다. 적어도 일부 실시예들에서, 이러한 컴퓨터 시스템은 또한 제공자 서브스트레이트 및/또는 제공자 서브스트레이트 익스텐션(예를 들어, 고객 게이트웨이/라우터(186), 다른 고객 자원들(187) 등) 외부의 컴포넌트들을 구현하기 위해 사용될 수 있다. 컴퓨터 시스템의 예시된 실시예에서, 컴퓨터 시스템 컴퓨터 시스템(1700)은 입력/출력(I/O) 인터페이스(1730)를 통해 시스템 메모리(1720)에 결합된 하나 이상의 프로세서(1710)를 포함한다. 컴퓨터 시스템(1700)은 I/O 인터페이스(1730)에 결합된 네트워크 인터페이스(1740)를 더 포함한다. 도 17은 단일 컴퓨팅 디바이스로서 컴퓨터 시스템(1700)을 도시하지만, 다양한 실시예들에서, 컴퓨터 시스템(1700)은 단일 컴퓨터 시스템(1700)으로서 함께 동작하도록 구성된 하나의 컴퓨팅 디바이스 또는 임의의 수의 컴퓨팅 디바이스들을 포함할 수 있다.
다양한 실시예들에서, 컴퓨터 시스템(1700)은 하나의 프로세서(1710)를 포함하는 유니프로세서 시스템, 또는 몇몇 프로세서들(1710)(예를 들어, 2개, 4개, 8개, 또는 다른 적절한 수)을 포함하는 멀티프로세서 시스템일 수 있다. 프로세서들(1710)은 명령어들을 실행할 수 있는 임의의 적절한 프로세서들일 수 있다. 예를 들어, 다양한 실시예들에서, 프로세서들(1710)은 x86, ARM, PowerPC, SPARC, 또는 MIPS ISA들, 또는 임의의 다른 적절한 ISA와 같은 다양한 명령어 세트 아키텍처들(ISAs) 중 임의의 것을 구현하는 범용 또는 임베디드 프로세서들일 수 있다. 멀티프로세서 시스템들에서, 프로세서들(1710) 각각은 공통적으로 동일한 ISA를 구현할 수 있지만, 반드시 그럴 필요는 없다.
시스템 메모리(1720)는 프로세서(들)(1710)에 의해 액세스가능한 명령어들 및 데이터를 저장할 수 있다. 다양한 실시예들에서, 시스템 메모리(1720)는 RAM, SRAM, SDRAM, 비휘발성/플래시-유형 메모리, 또는 임의의 다른 유형의 메모리와 같은 임의의 적절한 메모리 기술을 사용하여 구현될 수 있다. 예시된 실시예에서, 전술한 방법, 기술 및 데이터와 같은 하나 이상의 원하는 기능을 구현하는 프로그램 명령어 및 데이터는 코드(1725) 및 데이터(1726)로서 시스템 메모리(1720) 내에 저장되는 것으로 도시된다.
일 실시예에서, I/O 인터페이스(1730)는 프로세서(1710), 시스템 메모리(1720), 및 네트워크 인터페이스(1740) 또는 다른 주변 인터페이스들을 포함하는 디바이스 내의 임의의 주변 디바이스들 사이에서 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예들에서, I/O 인터페이스(1730)는 하나의 컴포넌트(예를 들어, 시스템 메모리(1720))로부터의 데이터 신호들을 다른 컴포넌트(예를 들어, 프로세서(1710))에 의한 사용에 적합한 포맷으로 변환하기 위해 임의의 필요한 프로토콜, 타이밍, 또는 다른 데이터 변환들을 수행할 수 있다. 예를 들어, I/O 인터페이스(1730)는 PCI(Peripheral Component Interconnect) 버스 표준 또는 USB(Universal Serial Bus) 표준의 변형과 같은 다양한 유형의 주변 버스를 통해 연결되는 디바이스들을 지원할 수 있다. 일부 실시예들에서, I/O 인터페이스(1730)의 기능은 예를 들어, 노스 브리지(north bridge) 및 사우스 브리지(south bridge)와 같은 2개 이상의 별개의 컴포넌트들로 분할될 수 있다. 또한, 일부 실시예들에서, 시스템 메모리(1720)에 대한 인터페이스와 같은 I/O 인터페이스(1730)의 기능의 일부 또는 전부는 프로세서(1710)에 직접 통합될 수 있다.
네트워크 인터페이스(1740)는 예를 들어, 도 1에 도시된 바와 같은 다른 컴퓨터 시스템들 또는 디바이스들과 같은, 네트워크 또는 네트워크들(1750)에 부착된 다른 디바이스들(1760)과 컴퓨터 시스템(1700) 사이에서 데이터가 교환되도록 구성될 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(1740)는, 예를 들어, 이더넷 네트워크의 유형들과 같은, 임의의 적절한 유선 또는 무선 일반 데이터 네트워크들을 통한 통신을 지원할 수 있다. 부가적으로, 네트워크 인터페이스(1740)는 아날로그 음성 네트워크들 또는 디지털 파이버 통신 네트워크들과 같은 원격통신/전화 네트워크들을 통해, 파이버 채널 SAN(storage area network)들과 같은 SAN들을 통해, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다.
일부 실시예들에서, 컴퓨터 시스템(1700)은 I/O 인터페이스(1730) 예를 들어, PCI-E(Peripheral Component Interconnect - Express) 표준의 버전을 구현하는 버스, 또는 QPI(QuickPath interconnect) 또는 UPI(UltraPath interconnect)와 같은 다른 상호 연결을 사용하여 연결되는 하나 이상의 오프로드 카드(1770)(하나 이상의 프로세서(1775)를 포함하고, 가능하게는 하나 이상의 네트워크 인터페이스(1740)를 포함함)를 포함한다. 예를 들어, 일부 실시예들에서, 컴퓨터 시스템(1700)은 컴퓨팅 인스턴스들을 호스팅하는 호스트 전자 디바이스(예를 들어, 하드웨어 가상화 서비스의 일부로서 동작하는)로서 동작할 수 있고, 하나 이상의 오프로드 카드(1770)는 호스트 전자 디바이스 상에서 실행되는 컴퓨팅 인스턴스들을 관리할 수 있는 가상화 관리자를 실행한다. 예로서, 일부 실시예들에서, 오프로드 카드(들)(1770)는 컴퓨팅 인스턴스들을 일시정지 및/또는 일시정지 해제, 컴퓨팅 인스턴스들을 론칭 및/또는 종료, 메모리 전송/복사 동작들을 수행하는 것 등과 같은 컴퓨팅 인스턴스 관리 동작들을 수행할 수 있다. 이러한 관리 동작들은, 일부 실시예들에서, 컴퓨터 시스템(1700)의 다른 프로세서들(1710A-1710N)에 의해 실행되는 하이퍼바이저와 협력하여(예를 들어, 하이퍼바이저로부터의 요청 시에) 오프로드 카드(들)(1770)에 의해 수행될 수 있다. 그러나, 일부 실시예들에서, 오프로드 카드(들)(1770)에 의해 구현되는 가상화 관리자는 다른 엔티티들로부터의(예를 들어, 컴퓨팅 인스턴스들 자체로부터의) 요청들을 수용할 수 있고, 임의의 별개의 하이퍼바이저와 조정하지 않을(또는 서비스하지 않을) 수 있다. 도 2를 참조하면, 적어도 일부 실시예들에서, PSE 프레임워크(202) 및 호스트 관리자(222)의 기능의 적어도 일부는 오프로드 카드들(1770)의 하나 이상의 프로세서들(1775) 상에서 실행되는 반면, 인스턴스들(예를 들어, 232, 234, 236)은 하나 이상의 프로세서들(1710) 상에서 실행된다.
일부 실시예들에서, 컴퓨터 시스템(1700)은 하나 이상의 저장 디바이스(SD)(1780)를 포함한다. 예시적인 저장 디바이스들(1780)은 (예를 들어, 다양한 유형들의 플래시 또는 다른 메모리를 갖는) 솔리드-스테이트 드라이브들 및 자기 드라이브들을 포함한다. 프로세서(들)(1710)는 인터페이스(들)(1730)를 통해 또는 일부 경우들에서 오프로드 카드(들)(1770)를 통해 SD들(1780)에 액세스할 수 있다. 예를 들어, 오프로드 카드(들)(1770)는, 인터페이스들(1730)을 SD들(1780)에 대한 인터페이스(예를 들어, PCIe-대-PCIe 브리지)에 브리징하는 다수의 상호연결 인터페이스들을 포함하는 시스템-온-칩(SoC)을 포함할 수 있다.
일부 실시예들에서, 시스템 메모리(1720)는 전술한 바와 같이 프로그램 명령어들 및 데이터를 저장하도록 구성된 컴퓨터 액세스가능 매체의 일 실시예일 수 있다. 그러나, 다른 실시예들에서, 프로그램 명령어들 및/또는 데이터는 상이한 유형들의 컴퓨터-액세스가능 매체 상에 수신, 발송 또는 저장될 수 있다. 일반적으로 말하면, 컴퓨터 액세스가능 매체는 I/O 인터페이스(1730)를 통해 컴퓨터 시스템(1700)에 결합된 자기 또는 광학 매체, 예를 들어 디스크 또는 DVD/CD와 같은 비일시적 저장 매체 또는 메모리 매체를 포함할 수 있다. 비일시적 컴퓨터 액세스가능 저장 매체는 또한 시스템 메모리(1720) 또는 다른 유형의 메모리로서 컴퓨터 시스템(1700)의 일부 실시예들에 포함될 수 있는, RAM(예를 들어, SDRAM, DDR(double data rate) SDRAM, SRAM 등), 판독 전용 메모리(ROM) 등과 같은 임의의 휘발성 또는 비휘발성 매체를 포함할 수 있다. 또한, 컴퓨터 액세스가능 매체는 네트워크 인터페이스(1740)를 통해 구현될 수 있는 바와 같이, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는, 전기, 전자기, 또는 디지털 신호들과 같은 송신 매체들 또는 신호들을 포함할 수 있다.
본 명세서에서 논의되거나 제안된 다양한 실시예들은 매우 다양한 동작 환경들에서 구현될 수 있으며, 이는 일부 경우들에서, 다수의 애플리케이션들 중 임의의 애플리케이션을 동작시키는데 사용될 수 있는 하나 이상의 사용자 컴퓨터들, 컴퓨팅 디바이스들, 또는 처리 디바이스들을 포함할 수 있다. 사용자 또는 클라이언트 디바이스들은 표준 운영 체제를 실행하는 데스크탑 또는 랩탑 컴퓨터들 뿐만 아니라 모바일 소프트웨어를 실행하고 다수의 네트워킹 및 메시징 프로토콜들을 지원할 수 있는 셀룰러, 무선, 및 핸드헬드 디바이스들과 같은 다수의 범용 개인용 컴퓨터들 중 임의의 것을 포함할 수 있다. 이러한 시스템은 또한 개발 및 데이터베이스 관리와 같은 목적을 위해 임의의 다양한 상업적으로 가용 가능한 운영 체제 및 다른 공지된 애플리케이션을 실행하는 다수의 워크스테이션을 포함할 수 있다. 이들 디바이스들은 또한 더미 단말기들, 씬-클라이언트들, 게임 시스템들, 및/또는 네트워크를 통해 통신할 수 있는 다른 디바이스들과 같은 다른 전자 디바이스들을 포함할 수 있다.
대부분의 실시예는 TCP/IP(Transmission Control Protocol/Internet Protocol), FTP(File Transfer Protocol), UPnP(Universal Plug and Play), NFS(Network File System), CIFS(Common Internet File System), XMPP(Extensible Messaging and Presence Protocol), AppleTalk 등과 같은 상업적으로 이용 가능한 다양한 프로토콜 중 임의의 것을 사용하여 통신을 지원하기 위해 당업자에게 친숙할 적어도 하나의 네트워크를 활용한다. 네트워크(들)는 예를 들어 근거리 통신망(LAN), 광역 통신망(WAN), 가상 사설망(VPN), 인터넷, 인트라넷, 엑스트라넷, 공공 교환 전화 네트워크(PSTN), 적외선 네트워크, 무선 네트워크 및 이들의 조합을 포함할 수 있다.
웹 서버를 이용하는 실시예들에서, 웹 서버는 HTTP 서버들, 파일 전송 프로토콜(FTP) 서버들, 공통 게이트웨이 인터페이스(CGI) 서버들, 데이터 서버들, 자바 서버들, 비즈니스 애플리케이션 서버들 등을 포함하는 다양한 서버 또는 중간 계층 애플리케이션들 중 임의의 것을 실행할 수 있다. 서버(들)는 또한, 예를 들어, Java®, C, C# 또는 C++와 같은 임의의 프로그래밍 언어, 또는 Perl, Python, PHP, 또는 TCL과 같은 임의의 스크립팅 언어, 및 이들의 조합들로 기록된 하나 이상의 스크립트들 또는 프로그램들로서 구현될 수 있는 하나 이상의 웹 애플리케이션들을 실행함으로써, 사용자 디바이스들로부터의 요청에 응답하여 프로그램들 또는 스크립트들을 실행할 수 있다. 서버(들)는 또한 Oracle(R), Microsoft(R), Sybase(R), IBM(R) 등으로부터 상업적으로 가용 가능한 것들을 포함하지만 이에 제한되지 않는 데이터베이스 서버들을 포함할 수 있다. 데이터베이스 서버는 관계형 또는 비관계형(예를 들어, "NoSQL"), 분산형 또는 비분산형 등일 수 있다.
환경은 다양한 데이터 저장소들 및 전술한 바와 같은 다른 메모리 및 저장 매체들을 포함할 수 있다. 이들은 하나 이상의 컴퓨터에 로컬(및/또는 상주)하거나 네트워크를 통해 임의의 또는 모든 컴퓨터로부터 원격인 저장 매체와 같은 다양한 위치에 상주할 수 있다. 특정 세트의 실시예에서, 정보는 당업자에게 친숙한 SAN(storage-area network)에 상주할 수 있다. 유사하게, 컴퓨터, 서버 또는 다른 네트워크 디바이스에 기인하는 기능을 수행하기 위해 필요한 임의의 파일은 적절하게 로컬 및/또는 원격으로 저장될 수 있다. 시스템이 컴퓨터화된 디바이스들을 포함하는 경우, 각각의 이러한 디바이스는 버스를 통해 전기적으로 커플링될 수 있는 하드웨어 엘리먼트들을 포함할 수 있고, 이러한 엘리먼트들은, 예를 들어, 적어도 하나의 중앙 처리 유닛 (CPU), 적어도 하나의 입력 디바이스 (예를 들어, 마우스, 키보드, 제어기, 터치 스크린, 또는 키패드), 및/또는 적어도 하나의 출력 디바이스 (예를 들어, 디스플레이 디바이스, 프린터, 또는 스피커)를 포함한다. 이러한 시스템은 또한 디스크 드라이브들, 광학 저장 디바이스들과 같은 하나 이상의 저장 디바이스들, 및 RAM 또는 ROM과 같은 솔리드 스테이트 저장 디바이스들, 및 착탈식 매체 디바이스들, 메모리 카드들, 플래시 카드들 등을 포함할 수 있다.
이러한 디바이스들은 또한, 전술한 바와 같이, 컴퓨터 판독가능 저장 매체 판독기, 통신 디바이스(예를 들어, 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스 등), 및 작업 메모리를 포함할 수 있다. 컴퓨터-판독가능 저장 매체 판독기는 컴퓨터-판독가능 정보를 일시적으로 및/또는 더 영구적으로 포함, 저장, 전송 및 검색하기 위한 저장 매체 뿐만 아니라 원격, 로컬, 고정 및/또는 착탈식 저장 디바이스들을 나타내는 컴퓨터-판독가능 저장 매체와 연결되거나, 또는 수신하도록 구성될 수 있다. 시스템 및 다양한 디바이스들은 또한 통상적으로, 클라이언트 애플리케이션 또는 웹 브라우저와 같은 운영 체제 및 애플리케이션 프로그램들을 포함하여, 적어도 하나의 작업 메모리 디바이스 내에 위치된 다수의 소프트웨어 애플리케이션들, 모듈들, 서비스들, 또는 다른 엘리먼트들을 포함할 것이다. 대안적인 실시예들은 위에서 설명된 것으로부터 많은 변형들을 가질 수 있다는 것이 이해되어야 한다. 예를 들어, 맞춤화된 하드웨어가 또한 사용될 수 있고/있거나 특정 엘리먼트들이 하드웨어, 소프트웨어(애플릿들과 같은 휴대용 소프트웨어를 포함함), 또는 둘 모두에서 구현될 수 있다. 또한, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다.
코드 또는 코드의 일부를 포함하는 저장 매체 및 컴퓨터 판독 가능 매체는, RAM, ROM, EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스를 포함하는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 포함하는 정보의 저장 및/또는 전송을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 비 착탈식 매체와 같은(그러나 이에 제한되지 않음) 저장 매체 및 통신 매체를 포함하는, 당업계에 공지되거나 사용되는 임의의 적절한 매체를 포함할 수 있다. 본 명세서에 제공된 개시 및 교시에 기초하여, 당업자는 다양한 실시예들을 구현하기 위한 다른 방법들 및/또는 방법들을 이해할 것이다.
앞선 설명에서는 다양한 실시예들이 설명된다. 설명의 편의를 위하여 구체적인 구성 및 상세한 설명은 본 발명의 실시예에 대한 이해를 돕기 위하여 서술된다. 그러나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 본 발명의 실시예가 구체적인 내용 없이 실시될 수 있음은 자명하다. 또한, 본 발명을 설명함에 있어 관련된 공지 사항을 기재하지 않기 위해 생략하거나 간소화할 수 있다.
대괄호로 묶인 텍스트 및 점선 테두리를 갖는 블록(예를 들어, 큰 대시, 작은 대시, 점 대시 및 점)은 일부 실시예에 추가적인 특징을 추가하는 선택적인 동작을 설명하기 위해 본 명세서에서 사용된다. 그러나, 이러한 표기법은 이들이 유일한 옵션들 또는 선택적인 동작들이고, 그리고/또는 실선 경계들을 갖는 블록들이 특정 실시예들에서 선택적인 것이 아니라는 것을 의미하는 것으로 취해져서는 안된다.
접미사 문자(예를 들어, 101A, 102A 등)를 갖는 참조 번호들은 다양한 실시예들에서 참조된 엔티티의 하나 또는 다수의 인스턴스들이 존재할 수 있음을 나타내기 위해 사용될 수 있고, 다수의 인스턴스들이 존재할 때, 각각은 동일할 필요가 없지만 대신에 일부 일반적인 특성들을 공유하거나 공통적인 방식으로 동작할 수 있다. 또한, 사용되는 특정 접미사는 특별히 반대로 지시되지 않는 한, 엔티티의 특정 양이 존재함을 의미하는 것은 아니다. 따라서, 동일한 또는 상이한 접미사 문자들을 사용하는 2개의 엔티티들은 다양한 실시예들에서 동일한 수의 인스턴스들을 가질 수 있거나 갖지 않을 수 있다.
"하나의 실시예", "일 실시예", "일 예시적인 실시예" 등에 대한 언급은 설명된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있음을 나타내지만, 모든 실시예가 반드시 특정 특징, 구조, 또는 특성을 포함할 필요는 없다. 또한, 이러한 문구들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 특징, 구조, 또는 특성이 일 실시예와 관련하여 기술될 때, 명시적으로 기술되든 아니든 다른 실시예들과 관련하여 이러한 특징, 구조, 또는 특성에 영향을 주는 것은 당업자의 지식 내에 있다는 것이 제출된다.
더욱이, 위에서 설명된 다양한 실시예들에서, 특별히 달리 언급되지 않는 한, 문구 "A, B, 또는 C 중 적어도 하나"와 같은 택일적인 언어는 A, B, 또는 C 중 어느 하나, 또는 이들의 임의의 조합(예를 들어, A, B, 및/또는 C)을 의미하는 것으로 이해되도록 의도된다. 이와 같이, 택일적 언어는 주어진 실시예가 A 중 적어도 하나, B 중 적어도 하나, 또는 C 중 적어도 하나가 각각 존재할 것을 요구한다는 것을 암시하는 것으로 의도되지 않고, 또한 그러한 것으로 이해되어야 한다.
개시된 기술들의 실시예들 중 적어도 일부는 다음의 예들을 고려하여 설명될 수 있다:
1. 컴퓨터 구현 방법으로서,
제공자 네트워크의 제1 컴퓨터 시스템의 제1 하나 이상의 프로세서에 의해, 제1 컴퓨터 시스템의 하나 이상의 저장 디바이스를 사용하여 제1 저장 볼륨을 호스팅하기 위해 블록 저장 서버 가상 머신을 실행하는 단계;
제1 하나 이상의 프로세서에 의해, 가상 블록 저장 디바이스에 대한 액세스를 갖는 고객 가상 머신을 실행하는 단계;
제1 컴퓨터 시스템의 제2 하나 이상의 프로세서에 의해, 블록 저장 클라이언트를 실행하는 단계를 포함하고, 상기 블록 저장 클라이언트를 실행하는 단계는:
상기 고객 가상 머신으로부터, 상기 가상 블록 저장 디바이스에 대해 수행할 제1 블록 저장 동작을 수신하는 단계; 및
블록 저장 서버 가상 시스템이 제1 저장 볼륨으로 제1 블록 저장 동작을 수행하도록 하는 메시지를 블록 저장 서버 가상 시스템에 발송하는 단계를 포함하는, 컴퓨터 구현 방법.
2. 제1절에 있어서, 상기 메시지는 상기 가상 네트워크를 통해 발송된 트래픽을 암호화하고 복호화하기 위해 키를 사용하여 보안된 가상 네트워크를 통해 발송되는, 컴퓨터 구현 방법.
3. 제2절에 있어서, 상기 가상 네트워크의 제 1 가상 네트워크 어드레스는 상기 블록 저장 서버 가상 머신과 관련되고, 상기 가상 네트워크의 제 2 가상 네트워크 어드레스는 상기 블록 저장 클라이언트와 관련되는, 컴퓨터 구현 방법.
4. 컴퓨터 구현 방법으로서,
컴퓨터 시스템에 의해, 컴퓨터 시스템의 하나 이상의 저장 디바이스를 사용하여 제1 볼륨을 호스팅하기 위해 제1 블록 저장 서버 가상 머신을 실행하는 단계;
컴퓨터 시스템에 의해, 가상 블록 저장 디바이스에 대한 액세스를 갖는 제2 가상 머신을 실행하는 단계;
컴퓨터 시스템에 의해, 블록 저장 클라이언트를 실행하는 단계를 포함하고, 상기 블록 저장 클라이언트를 실행하는 단계는:
상기 제2 가상 머신으로부터 상기 가상 블록 저장 디바이스에 대해 수행할 제1 블록 저장 동작을 수신하는 단계; 및
제1 블록 저장 서버 가상 머신이 제1 볼륨으로 제1 블록 저장 동작을 수행하게 하는 메시지를 제1 블록 저장 서버 가상 머신으로 발송하는 단계를 포함하는, 컴퓨터 구현 방법.
5. 제4절에 있어서, 상기 메시지는 상기 가상 네트워크를 통해 전송된 트래픽을 암호화하고 복호화하기 위해 키를 사용하여 보안된 가상 네트워크를 통해 발송되는, 컴퓨터 구현 방법.
6. 제5절에 있어서, 상기 가상 네트워크의 제1 가상 네트워크 어드레스는 상기 제1 블록 저장 서버 가상 머신과 관련되고, 상기 가상 네트워크의 제2 가상 네트워크 어드레스는 상기 블록 저장 클라이언트와 관련되는, 컴퓨터 구현 방법.
7. 제4절 내지 제6절 중 어느 한 절의 컴퓨터 구현 방법으로서, 상기 제1 블록 저장 서버 가상 머신 및 상기 제2 가상 머신은 상기 컴퓨터 시스템의 제1 하나 이상의 프로세서에 의해 실행되고, 상기 블록 저장 클라이언트는 상기 컴퓨터 시스템의 제2 하나 이상의 프로세서에 의해 실행되는, 컴퓨터 구현 방법.
8. 제4절 내지 제7절 중 어느 한 절의 컴퓨터 구현 방법으로서, 상기 제 1 블록 저장 서버 가상 머신은 상기 컴퓨터 시스템에 의해 호스팅되는 제 1 가상 머신이고, 상기 제 2 가상 머신은 상기 컴퓨터 시스템에 의해 호스팅되는 제 2 가상 머신인, 컴퓨터 구현 방법.
9. 제4절에 있어서, 상기 컴퓨터 시스템에 의해, 상기 컴퓨터 시스템의 상기 하나 이상의 저장 디바이스를 사용하여 제2 볼륨을 호스팅하기 위해 제2 블록 저장 서버 가상 머신을 실행하는 단계를 더 포함하며, 상기 제2 볼륨은 상기 제1 볼륨과 관련된 복제본(replica)인, 컴퓨터 구현 방법.
10. 제9절에 있어서, 상기 제1 블록 저장 서버 가상 머신은 상기 컴퓨터 시스템의 제1 물리적 컴포넌트를 사용하여 실행되고, 상기 제2 블록 저장 서버 가상 머신은 상기 제1 물리적 컴포넌트와 상이한 상기 컴퓨터 시스템의 제2 물리적 컴포넌트를 사용하여 실행되는, 컴퓨터 구현 방법.
11. 제4절 내지 제10절 중 어느 한 절의 컴퓨터 구현 방법으로서, 상기 제1 블록 저장 동작은 데이터 블록의 기록이고, 상기 블록 저장 클라이언트는 또한 상기 가상 블록 저장 디바이스와 관련된 암호화 키를 사용하여 상기 데이터 블록을 암호화하여 암호화된 데이터 블록을 생성하고, 상기 제1 블록 저장 서버 가상 머신으로 발송된 메시지는 상기 암호화된 데이터 블록을 포함하고, 상기 제1 블록 저장 서버 가상 머신으로 하여금 상기 암호화된 데이터 블록을 상기 제1 볼륨에 기록하게 하는, 컴퓨터 구현 방법.
12. 제4절 내지 제11절 중 어느 한 절의 컴퓨터 구현 방법으로서:
컴퓨터 시스템은 제공자 네트워크의 익스텐션(extension)에 포함되고, 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신하고;
제공자 네트워크의 인스턴스 관리 서비스는 컴퓨터 시스템에 의해 제1 블록 저장 서버 가상 머신 및 제2 가상 머신의 실행을 개시한, 컴퓨터 구현 방법.
13. 시스템에 있어서:
호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스; 및
가상 블록 저장 디바이스에 대한 액세스를 갖는 제1 블록 저장 서버 애플리케이션 및 제2 애플리케이션을 실행하기 위한 호스트 컴퓨터 시스템의 제1 하나 이상의 프로세서로서, 상기 제1 블록 저장 서버 애플리케이션은, 실행시 상기 제1 블록 저장 서버 애플리케이션으로 하여금 상기 하나 이상의 저장 디바이스를 사용하여 제1 볼륨을 호스팅하게 하는 명령어들을 포함하는, 제1 블록 저장 서버 애플리케이션;
블록 저장 클라이언트 애플리케이션을 실행하기 위한 호스트 컴퓨터 시스템의 제1 하나 이상의 프로세서를 포함하고, 상기 블록 저장 클라이언트 애플리케이션은 실행 시에 블록 저장 클라이언트 애플리케이션으로 하여금 :
상기 가상 블록 저장 디바이스에 대해 수행할 제1 블록 저장 동작을 상기 제2 애플리케이션으로부터 수신하고; 및
제1 블록 저장 서버 애플리케이션이 제1 볼륨으로 제1 블록 저장 동작을 수행하게 하는 메시지를 제1 블록 저장 서버 애플리케이션에 발송하게 하는 명령어들을 포함하는, 시스템.
14. 제13절에 있어서, 상기 메시지는 상기 가상 네트워크를 통해 발송된 트래픽을 암호화하고 복호화하기 위해 키를 사용하여 보안된 가상 네트워크를 통해 발송되는, 시스템.
15. 제14절에 있어서, 상기 가상 네트워크의 제1 가상 네트워크 어드레스는 상기 제1 블록 저장 서버 애플리케이션과 관련되고, 상기 가상 네트워크의 제2 가상 네트워크 어드레스는 상기 블록 저장 클라이언트 애플리케이션과 관련되는, 시스템.
16. 제13절 내지 제15절 중 어느 한 절의 시스템에 있어서, 상기 제1 블록 저장 서버 애플리케이션은 상기 호스트 컴퓨터 시스템에 의해 호스팅되는 제1 가상 머신 내에서 실행되고, 상기 제2 애플리케이션은 상기 호스트 컴퓨터 시스템에 의해 호스팅되는 제2 가상 머신 내에서 실행되는, 시스템.
17. 제13절에 있어서, 상기 호스트 컴퓨터 시스템의 상기 제1 하나 이상의 프로세서는 제2 블록 저장 서버 애플리케이션을 추가로 실행하고, 상기 제2 블록 저장 서버 애플리케이션은, 실행 시에 상기 제2 블록 저장 서버 애플리케이션으로 하여금 상기 호스트 컴퓨터 시스템의 상기 하나 이상의 저장 디바이스를 사용하여 제2 볼륨을 호스팅하게 하는 명령어들을 포함하고, 상기 제2 볼륨은 상기 제1 볼륨과 관련된 복제본인, 시스템.
18. 제17절에 있어서, 상기 제1 블록 저장 서버 애플리케이션은 상기 컴퓨터 시스템의 제1 물리적 컴포넌트를 사용하여 실행되고, 상기 제2 블록 저장 서버 애플리케이션은 상기 제1 물리적 컴포넌트와 상이한 상기 컴퓨터 시스템의 제2 물리적 컴포넌트를 사용하여 실행되는, 시스템.
19. 제13절 내지 제18절 중 어느 한 절의 시스템에 있어서, 상기 제1 블록 저장 동작은 데이터 블록의 기록이고, 상기 블록 저장 클라이언트 애플리케이션은 실행 시에 상기 블록 저장 클라이언트 애플리케이션으로 하여금 상기 가상 블록 저장 디바이스와 관련된 암호화 키를 사용하여 상기 데이터 블록을 암호화하여 암호화된 데이터 블록을 생성하게 하는 추가 명령어들을 포함하고, 상기 제1 블록 저장 서버 애플리케이션으로 발송된 메시지는 상기 암호화된 데이터 블록을 포함하고, 상기 제1 블록 저장 서버 애플리케이션으로 하여금 상기 암호화된 데이터 블록을 상기 제1 볼륨에 기록하게 하는 시스템.
20. 제13절 내지 제19절 중 어느 한 절의 시스템으로서:
호스트 컴퓨터 시스템은 제공자 네트워크의 익스텐션에 포함되고, 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신하고;
제공자 네트워크의 인스턴스 관리 서비스는 호스트 컴퓨터 시스템에 의해 제1 블록 저장 서버 애플리케이션 및 제2 애플리케이션의 실행을 개시하는, 시스템.
21. 컴퓨터 구현 방법으로서,
제공자 네트워크의 익스텐션의 호스트 컴퓨터 시스템에서, 블록 저장 서버 애플리케이션을 호스팅하기 위해 제1 가상 머신을 론칭하라는 제1 요청을 수신하는 단계 - 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신함 -;
상기 호스트 컴퓨터 시스템의 하나 이상의 물리적 저장 디바이스의 저장 용량의 적어도 일부를 프로비저닝된 저장 디바이스로서 상기 제1 가상 머신에 프로비저닝하는 단계; 및
제1 가상 머신을 이용하여 블록 저장 서버 애플리케이션을 실행하는 단계를 포함하고, 상기 블록 저장 서버 애플리케이션을 실행하는 단계는:
로직 볼륨을 생성하기 위해 제공자 네트워크의 블록 저장 서비스로부터의 제2 요청에 응답하여 프로비저닝된 저장 디바이스에 로직 볼륨을 생성하는 단계;
가상 네트워크를 통해 블록 저장 클라이언트 애플리케이션으로부터, 로직 볼륨과의 입력/출력 동작을 수행하기 위한 제3 요청을 수신하는 단계; 및
로직 볼륨을 사용하여 요청된 입력/출력 동작을 수행하는 단계를 포함하는, 컴퓨터 구현 방법.
22. 제21절에 있어서, 상기 제1 가상 머신을 이용하여 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 상기 방법은:
제공자 네트워크의 데이터 저장소로부터 획득된 머신 이미지로부터 부트 볼륨으로 부트 볼륨을 로딩하기 위해 제1 가상 머신으로 다른 애플리케이션을 실행하는 단계로서, 부트 볼륨은 프로비저닝된 저장 디바이스의 다른 로직 볼륨인, 상기 실행하는 단계;
부트 볼륨으로부터 부팅할 제1 가상 컴퓨터 수정하는 단계; 및
제1 가상 컴퓨터를 재시작하는 단계를 더 포함하는, 컴퓨터 구현 방법.
23. 제21절에 있어서, 상기 제1 가상 머신으로 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 상기 방법은 제1 블록 저장 디바이스에 의해 저장된 머신 이미지로부터 상기 제1 가상 머신의 부트 볼륨을 로딩하는 단계를 더 포함하고, 상기 부트 볼륨은 프로비저닝된 저장 디바이스의 다른 로직 볼륨이고, 상기 제1 블록 저장 디바이스는 가상 블록 저장 디바이스인, 컴퓨터 구현 방법.
24. 컴퓨터 구현 방법으로서,
제공자 네트워크의 익스텐션의 컴퓨터 시스템에 의해, 블록 저장 서버 애플리케이션을 호스팅하기 위해 제1 가상 머신을 론칭하기 위한 제1 요청을 수신하는 단계 - 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신함 -;
호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스의 저장 용량의 적어도 일부를 프로비저닝된 저장 디바이스로서 상기 제1 가상 머신에 프로비저닝하는 단계; 및
제1 가상 머신을 이용하여 블록 저장 서버 애플리케이션을 실행하는 단계를 포함하고, 상기 블록 저장 서버 애플리케이션을 실행하는 단계는:
로직 볼륨을 생성하기 위해 제공자 네트워크의 블록 저장 서비스로부터의 제2 요청에 응답하여 프로비저닝된 저장 디바이스에 로직 볼륨을 생성하는 단계;
상기 로직 볼륨으로 입력/출력 동작을 수행하기 위한 제3 요청을 수신하는 단계; 및
로직 볼륨을 사용하여 요청된 입력/출력 동작을 수행하는 단계를 포함하는, 컴퓨터 구현 방법.
25. 제24절에 있어서, 상기 제1 가상 머신을 이용하여 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 상기 방법은:
제공자 네트워크의 데이터 저장소로부터 획득된 머신 이미지로부터 부트 볼륨을 로딩하기 위해 제1 가상 머신으로 다른 애플리케이션을 실행하는 단계로서, 부트 볼륨은 프로비저닝된 저장 디바이스의 다른 로직 볼륨인, 상기 실행하는 단계;
부트 볼륨으로부터 부팅할 제1 가상 컴퓨터를 수정하는 단계; 및
제1 가상 컴퓨터를 재시작하는 단계를 더 포함하는, 컴퓨터 구현 방법.
26. 제25절에 있어서, 상기 블록 저장 서버 애플리케이션을 실행하기 전에 상기 제1 가상 머신의 메모리를 삭제하는 단계를 더 포함하는, 컴퓨터 구현 방법.
27. 제24절에 있어서, 상기 제1 가상 머신으로 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 상기 방법은 제1 블록 저장 디바이스에 의해 저장된 머신 이미지로부터 상기 제1 가상 머신의 부트 볼륨을 로딩하는 단계를 더 포함하고, 상기 부트 볼륨은 프로비저닝된 저장 디바이스의 다른 로직 볼륨이고, 상기 제1 블록 저장 디바이스는 가상 블록 저장 디바이스인, 컴퓨터 구현 방법.
28. 제27절에 있어서, 상기 로딩은 상기 제1 가상 머신의 기본 입력/출력 시스템 및 상기 제1 가상 머신의 통합된 확장가능 펌웨어 인터페이스 중 적어도 하나에 의해 수행되는, 컴퓨터 구현 방법.
29. 제24절 내지 제28절 중 어느 한 절의 컴퓨터 구현 방법으로서:
상기 제3 요청은 가상 네트워크를 통해 블록 저장 클라이언트 애플리케이션으로부터 수신되고;
가상 네트워크를 통해 발송된 트래픽은 가상 네트워크와 관련된 키를 사용하여 암호화되는, 컴퓨터 구현 방법.
30. 제24절 내지 제29절 중 어느 한 절의 컴퓨터 구현 방법으로서, 상기 제1 가상 머신은 복수의 가상 머신 중 하나이고, 상기 복수의 가상 머신 각각은 블록 저장 서버 애플리케이션을 실행하고, 상기 방법은:
상기 복수의 가상 머신들 중 하나 이상과 관련된 자원 이용률이 임계치를 초과하였는지를 결정하는 단계;
다른 호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스의 저장 용량의 적어도 일부를 제2 가상 머신에 프로비저닝하는 단계; 및
제2 가상 컴퓨터를 사용하여 다른 블록 저장 서버 애플리케이션을 실행하는 단계를 포함하는, 컴퓨터 구현 방법.
31. 제24절 내지 제30절 중 어느 한 절의 컴퓨터 구현 방법으로서,
호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스의 저장 용량의 적어도 다른 일부를 다른 프로비저닝된 저장 디바이스로서 제2 가상 머신에 프로비저닝하는 단계; 및
제2 가상 머신을 이용하여 다른 블록 저장 서버 애플리케이션을 실행하는 단계로서, 제1 가상 머신은 컴퓨터 시스템의 제1 물리적 컴포넌트를 사용하여 실행되고, 제2 가상 머신은 제1 물리적 컴포넌트와 상이한 컴퓨터 시스템의 제2 물리적 컴포넌트를 사용하여 실행되는, 상기 실행하는 단계를 더 포함하는, 컴퓨터 구현 방법.
32. 제31절에 있어서, 상기 입력/출력 동작은 상기 로직 볼륨의 블록 어드레스에 데이터의 블록을 기록하기 위한 기록 동작이고, 상기 로직 볼륨으로 상기 요청된 입력/출력 동작을 수행하는 단계는 상기 로직 볼륨의 블록 어드레스에 상기 데이터의 블록을 기록하는 단계를 포함하고, 상기 제1 물리적 컴포넌트는 제1 메모리 디바이스이고, 상기 제2 물리적 컴포넌트는 제2 메모리 디바이스이고, 상기 제공자 네트워크의 익스텐션은 상기 제공자 네트워크의 데이터 센터의 외부에 그리고 상기 제공자 네트워크의 고객의 구내에 위치된 하나 이상의 물리적 컴퓨팅 디바이스를 포함하는, 컴퓨터 구현 방법.
33. 시스템에 있어서,
제공자 네트워크의 익스텐션의 호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스로서, 상기 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 상기 제공자 네트워크와 통신하는, 상기 하나 이상의 저장 디바이스; 및
호스트 관리자 애플리케이션을 실행하기 위한 호스트 컴퓨터 시스템의 하나 이상의 프로세서를 포함하고, 상기 호스트 관리자 애플리케이션은 실행시 호스트 관리자 애플리케이션으로 하여금 :
블록 저장 서버 애플리케이션을 호스팅하기 위해 제1 가상 머신을 론칭하기 위한 제1 요청을 수신하고;
상기 하나 이상의 저장 디바이스의 저장 용량의 적어도 일부를 프로비저닝된 저장 디바이스로서 상기 제1 가상 머신에 프로비저닝하고; 및
블록 저장 서버 애플리케이션을 제1 가상 머신으로 실행하게 하는 명령어들을 포함하고, 블록 저장 서버 애플리케이션은 실행시 블록 저장 서버 애플리케이션으로 하여금 :
로직 볼륨을 생성하기 위해 제공자 네트워크의 블록 저장 서비스로부터의 제2 요청에 응답하여 프로비저닝된 저장 디바이스에 로직 볼륨을 생성하고;
로직 볼륨으로 입/출력 작업을 수행하기 위한 제3 요청을 수신하고; 및
로직 볼륨을 사용하여 요청된 입력/출력 동작을 수행하게 하는 명령어를 포함하는, 시스템.
34. 제33절에 있어서, 상기 호스트 관리자 애플리케이션은, 상기 제1 가상 머신을 이용하여 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 실행시 상기 호스트 관리자 애플리케이션로 하여금:
상기 제공자 네트워크의 데이터 저장소로부터 획득된 머신 이미지로부터 부트 볼륨을 로딩하기 위해 상기 제1 가상 머신으로 다른 애플리케이션을 실행하고, 상기 부트 볼륨은 상기 프로비저닝된 저장 디바이스의 다른 로직 볼륨이고;
부트 볼륨으로부터 부팅하도록 제1 가상 컴퓨터를 수정하고; 및
제1 가상 컴퓨터를 재시작하도록 하는 추가 명령어들을 포함하는, 시스템.
35. 제34절에 있어서, 상기 호스트 관리자 애플리케이션은, 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 실행시, 상기 호스트 관리자 애플리케이션이 상기 제1 가상 머신의 메모리를 삭제하도록 하는 추가 명령어들을 포함하는, 시스템.
36. 제33절에 있어서, 상기 제1 가상 머신의 컴포넌트는, 상기 제1 가상 머신을 이용하여 상기 블록 저장 서버 애플리케이션을 실행하기 전에, 실행시, 상기 컴포넌트로 하여금, 제1 블록 저장 디바이스에 의해 저장된 머신 이미지로부터 상기 제1 가상 머신의 부트 볼륨을 로딩하게 하는 명령어들을 포함하고, 상기 부트 볼륨은 상기 프로비저닝된 저장 디바이스의 다른 로직 볼륨이고, 상기 제1 블록 저장 디바이스는 가상 블록 저장 디바이스인, 시스템.
37. 제36절에 있어서, 상기 컴포넌트는 상기 제1 가상 머신의 기본 입력/출력 시스템 및 상기 제1 가상 머신의 통합된 확장가능 펌웨어 인터페이스 중 적어도 하나인, 시스템.
38. 제33절 내지 제37절 중 어느 한 절의 시스템으로서:
상기 제3 요청은 가상 네트워크를 통해 블록 저장 클라이언트 애플리케이션으로부터 수신되고;
가상 네트워크를 통해 발송된 트래픽은 가상 네트워크와 관련된 키를 사용하여 암호화되는, 시스템.
39. 제33절 내지 제38절 중 어느 한 절의 시스템으로서, 호스트 관리자 애플리케이션은 실행시 호스트 관리자 애플리케이션으로 하여금 :
호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스의 저장 용량의 적어도 다른 일부를 다른 프로비저닝된 저장 디바이스로서 제2 가상 머신에 프로비저닝하는 단계; 및
제2 가상 머신을 이용하여 다른 블록 저장 서버 애플리케이션을 실행하게 하는 추가 명령어들을 포함하고, 제1 가상 머신은 컴퓨터 시스템의 제1 물리적 컴포넌트를 이용하여 실행되고, 제2 가상 머신은 제1 물리적 컴포넌트와 상이한 컴퓨터 시스템의 제2 물리적 컴포넌트를 이용하여 실행되는, 시스템.
40. 제39절에 있어서, 상기 입력/출력 동작은 상기 로직 볼륨의 블록 어드레스에 데이터의 블록을 기록하기 위한 기록 동작이고, 상기 로직 볼륨으로 상기 요청된 입력/출력 동작을 수행하는 것은 상기 로직 볼륨의 블록 어드레스에 상기 데이터의 블록을 기록하는 것을 포함하고, 상기 제1 물리적 컴포넌트는 제1 메모리 디바이스이고, 상기 제2 물리적 컴포넌트는 제2 메모리 디바이스이고, 상기 제공자 네트워크의 익스텐션은 상기 제공자 네트워크의 데이터 센터 외부에 그리고 상기 제공자 네트워크의 고객의 구내에 위치된 하나 이상의 물리적 컴퓨팅 디바이스를 포함하는, 시스템.
41. 컴퓨터 구현 방법으로서,
제1 블록 저장 서버 인스턴스에 의해, 제공자 네트워크의 블록 저장 서비스로부터 제1 요청을 수신하는 단계 - 제1 요청은 제1 로직 볼륨의 제1 부분을 저장하기 위해 제1 저장 볼륨을 생성하기 위한 것임 -;
제2 블록 저장 서버 인스턴스에 의해, 상기 블록 저장 서비스로부터 제2 요청을 수신하는 단계 - 상기 제2 요청은 상기 제1 로직 볼륨의 제2 부분을 저장하기 위해 제2 저장 볼륨을 생성하기 위한 것임 -;
제2 블록 저장소 서버 인스턴스가 응답하지 않는지를 결정하는 단계;
제1 로직 볼륨의 제2 부분을 저장하기 위해 제3 저장 볼륨을 생성하도록 제3 블록 저장 서버 인스턴스에 제3 요청을 발송하는 단계;
제3 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 제3 저장 볼륨에 저장하는 단계;
제 2 블록 저장 서버 인스턴스의 식별을 제거하고 제 3 블록 저장 서버 인스턴스의 식별을 추가하기 위해 제 1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 포함하는 데이터 저장소를 업데이트하는 단계를 포함하고; 및
제1 블록 저장 서버 인스턴스, 제2 블록 저장 서버 인스턴스, 및 제3 블록 저장 서버 인스턴스는 제공자 네트워크의 익스텐션의 하나 이상의 컴퓨터 시스템에 의해 호스팅되고, 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 제공자 네트워크와 통신하는, 컴퓨터 구현 방법.
42. 제41절의 컴퓨터 구현 방법으로서,
블록 저장 클라이언트에 의해, 데이터 저장소로부터 제1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 수신하는 단계;
블록 저장 클라이언트에 의해, 식별에 포함된 적어도 하나의 블록 저장 서버 인스턴스에 대한 연결을 수립하는 단계;
블록 저장 클라이언트에 의해, 다른 인스턴스로부터 제1 블록 저장 동작을 수신하는 단계로서, 제1 블록 저장 동작은 데이터의 블록을 가상 블록 저장 디바이스의 블록 어드레스에 기록하기 위한 것인, 상기 수신하는 단계; 및
블록 저장 클라이언트에 의해, 적어도 하나의 블록 저장 서버 인스턴스가 데이터의 블록을 제1 저장 볼륨의 블록 어드레스에 기록하게 하기 위해 연결을 통해 적어도 하나의 블록 저장 서버 인스턴스에 메시지를 발송하는 단계를 더 포함하는, 컴퓨터 구현 방법.
43. 제41절 내지 제42절 중 어느 한 절의 시스템으로서 컴퓨터 구현 방법으로서, 응답에 대해 상기 제1 블록 저장 서버 인스턴스 및 상기 제2 블록 저장 서버 인스턴스를 폴링하는 단계(polling)를 더 포함하는, 컴퓨터 구현 방법.
44. 컴퓨터 구현 방법으로서,
제1 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제1 부분을 저장하기 위해 제1 저장 볼륨을 생성하기 위한 제1 요청을 수신하는 단계;
제2 블록 저장 서버 인스턴스에 의해, 상기 제1 로직 볼륨의 제2 부분을 저장하기 위해 제2 저장 볼륨을 생성하기 위한 제2 요청을 수신하는 단계;
제1 로직 볼륨의 제2 부분을 저장하기 위해 제3 저장 볼륨을 생성하기 위한 제3 블록 저장 서버 인스턴스에 제3 요청을 발송하는 단계;
제3 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 제3 저장 볼륨에 저장하는 단계; 및
제 2 블록 저장 서버 인스턴스의 식별을 제거하고 제 3 블록 저장 서버 인스턴스의 식별을 추가하기 위해 제 1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 포함하는 데이터 저장소를 업데이트하는 단계를 포함하는, 컴퓨터 구현 방법.
45. 제44절의 컴퓨터 구현 방법으로서,
블록 저장 클라이언트에 의해, 데이터 저장소로부터 제1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 수신하는 단계;
블록 저장 클라이언트에 의해, 식별에 포함된 적어도 하나의 블록 저장 서버 인스턴스에 대한 연결을 수립하는 단계;
블록 저장 클라이언트에 의해, 다른 인스턴스로부터 제1 블록 저장 동작을 수신하는 단계로서, 제1 블록 저장 동작은 데이터의 블록을 가상 블록 저장 디바이스의 블록 어드레스에 기록하기 위한 것인, 상기 수신하는 단계; 및
블록 저장 클라이언트에 의해, 적어도 하나의 블록 저장 서버 인스턴스가 데이터의 블록을 제1 저장 볼륨의 블록 어드레스에 기록하게 하기 위해 연결을 통해 적어도 하나의 블록 저장 서버 인스턴스에 메시지를 발송하는 단계를 더 포함하는, 방법.
46. 제45절에 있어서, 상기 데이터 저장소는 상기 식별을 업데이트하기 위해 컨센서스 프로토콜(consensus protocol)을 독립적으로 실행하는 복수의 노드들을 포함하는 분산 데이터 저장소인, 컴퓨터 구현 방법.
47. 제46절에 있어서, 상기 블록 저장 클라이언트에 의해, 서비스로부터 상기 복수의 노드들 중 각각의 노드의 식별을 획득하는 단계를 더 포함하는, 컴퓨터 구현 방법.
48. 제46절에 있어서, 상기 복수의 노드들 중 하나의 노드는 상기 제1 블록 저장 서버 인스턴스에 의해 호스팅되는 컨테이너 내에서 실행되는, 컴퓨터 구현 방법.
49. 제48절에 있어서, 상기 블록 저장 클라이언트에 의해, 상기 복수의 노드들 중 임의의 노드의 식별에 대한 요청을 복수의 블록 저장 서버 인스턴스들에 브로드캐스팅하는 단계(broadcasting)를 더 포함하는, 컴퓨터 구현 방법.
50. 제44절 내지 제49절 중 어느 한 절의 컴퓨터 구현 방법으로서, 응답에 대해 상기 제1 블록 저장 서버 인스턴스 및 상기 제2 블록 저장 서버 인스턴스를 폴링하는 단계를 더 포함하고, 상기 제3 요청은 상기 제2 블록 저장 서버 인스턴스가 응답하지 않는다는 결정에 응답하여 발송되는, 컴퓨터 구현 방법.
51. 제44절 내지 제50절 중 어느 하나의 컴퓨터 구현 방법으로서, 상기 제1 저장 볼륨은 복수의 블록 저장 서버 인스턴스들에 걸쳐 스트라이핑(stripe)되고, 상기 복수의 블록 저장 서버 인스턴스들 각각은 상기 식별에 포함되는, 컴퓨터 구현 방법.
52. 제44절 내지 제51절 중 어느 한 절의 컴퓨터 구현 방법에 있어서, 상기 제1 블록 저장 서버 인스턴스, 상기 제2 블록 저장 서버 인스턴스, 및 상기 제3 블록 저장 서버 인스턴스는 제공자 네트워크의 익스텐션의 하나 이상의 컴퓨터 시스템에 의해 호스팅되고, 상기 제1 요청 및 상기 제2 요청은 상기 제공자 네트워크의 블록 저장 서비스로부터 발송되고, 상기 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 상기 제공자 네트워크와 통신하는, 컴퓨터 구현 방법.
53. 시스템에 있어서,
제공자 네트워크의 익스텐션의 하나 이상의 컴퓨팅 디바이스를 포함하고, 상기 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 상기 제공자 네트워크와 통신하고, 상기 하나 이상의 컴퓨팅 디바이스들은 하나 이상의 프로세서들 상에서의 실행 시에 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
제1 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제1 부분을 저장하기 위해 제1 저장 볼륨을 생성하기 위한 제1 요청을 수신하는 단계;
제2 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 저장하기 위해 제2 저장 볼륨을 생성하기 위한 제2 요청을 수신하는 단계;
제1 로직 볼륨의 제2 부분을 저장하기 위해 제3 저장 볼륨을 생성하기 위한 제3 요청을 제3 블록 저장 서버 인스턴스에 발송하는 단계;
제3 블록 저장 서버 인스턴스에 의해, 제1 로직 볼륨의 제2 부분을 제3 저장 볼륨에 저장하는 단계; 및
제2 블록 저장 서버 인스턴스의 식별을 제거하고 제3 블록 저장 서버 인스턴스의 식별을 추가하기 위해 제1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 포함하는 데이터 저장소를 업데이트하게 하는 명령어를 포함하는, 시스템.
54. 제53절에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는, 상기 하나 이상의 프로세서 상에서의 실행 시에, 상기 하나 이상의 컴퓨팅 디바이스로 하여금,
블록 저장 클라이언트에 의해, 데이터 저장소로부터 제1 로직 볼륨의 일부를 호스팅하는 각각의 블록 저장 서버 인스턴스의 식별을 수신하고;
블록 저장 클라이언트에 의해, 식별에 포함된 적어도 하나의 블록 저장 서버 인스턴스에 대한 연결을 수립하는 단계;
블록 저장 클라이언트에 의해, 다른 인스턴스로부터 제1 블록 저장 동작을 수신하고, 제1 블록 저장 동작은 데이터의 블록을 가상 블록 저장 디바이스의 블록 어드레스에 기록하기 위한 것이고;
블록 저장 클라이언트에 의해, 적어도 하나의 블록 저장 서버 인스턴스가 데이터의 블록을 제1 저장 볼륨의 블록 어드레스에 기록하게 하기 위해 연결을 통해 적어도 하나의 블록 저장 서버 인스턴스에 메시지를 발송하게 하는 추가 명령어를 포함하는, 시스템.
55. 제54절에 있어서, 상기 데이터 저장소는 상기 식별을 업데이트하기 위해 컨센서스 프로토콜을 독립적으로 실행하는 복수의 노드들을 포함하는 분산 데이터 저장소인, 시스템.
56. 제55절에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는, 상기 하나 이상의 프로세서 상에서의 실행 시에, 상기 하나 이상의 컴퓨팅 디바이스로 하여금, 상기 블록 저장 클라이언트에 의해, 서비스로부터 상기 복수의 노드의 각각의 노드의 식별을 획득하게 하는 추가 명령어를 포함하는, 시스템.
57. 제55절에 있어서, 상기 복수의 노드들 중 하나의 노드는 상기 제1 블록 저장 서버 인스턴스에 의해 호스팅되는 컨테이너 내에서 실행되는, 시스템.
58. 제57절에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는, 상기 하나 이상의 프로세서 상에서의 실행 시에, 상기 하나 이상의 컴퓨팅 디바이스로 하여금, 상기 블록 저장 클라이언트에 의해, 상기 복수의 노드 중 임의의 노드의 식별에 대한 요청을 복수의 블록 저장 서버 인스턴스에 브로드캐스팅하게 하는 추가 명령어를 포함하는, 시스템.
59. 제53절 내지 제58절 중 어느 한 절의 시스템에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는, 상기 하나 이상의 프로세서 상에서의 실행 시에, 상기 하나 이상의 컴퓨팅 디바이스로 하여금 응답에 대해 상기 제1 블록 저장 서버 인스턴스 및 상기 제2 블록 저장 서버 인스턴스를 폴링하게 하는 추가 명령어를 포함하고, 상기 제3 요청은 상기 제2 블록 저장 서버 인스턴스가 응답하지 않는다는 결정에 응답하여 발송되는, 시스템.
60. 제53절 내지 제59절 중 어느 한 절의 시스템에 있어서, 상기 제1 저장 볼륨은 복수의 블록 저장 서버 인스턴스에 걸쳐 스트라이핑되고, 상기 복수의 블록 저장 서버 인스턴스 각각은 상기 식별에 포함되는, 시스템.
따라서 본 명세서 및 도면은 제한적인 의미보다는 예시적인 것으로 이해되어야 한다. 그러나, 청구범위에 기재된 바와 같은 본 개시의 더 넓은 사상 및 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있다는 것이 명백할 것이다.

Claims (15)

  1. 컴퓨터 구현 방법에 있어서,
    컴퓨터 시스템에 의해, 상기 컴퓨터 시스템의 하나 이상의 저장 디바이스를 사용하여 제1 볼륨(volume)을 호스팅하기 위해 제1 블록 저장 서버 가상 머신을 실행하는 단계;
    상기 컴퓨터 시스템에 의해, 가상 블록 저장 디바이스에 대한 액세스를 갖는 제2 가상 머신을 실행하는 단계;
    상기 컴퓨터 시스템에 의해, 블록 저장 클라이언트를 실행하는 단계를 포함하고, 상기 블록 저장 클라이언트를 실행하는 단계는,
    상기 제2 가상 머신으로부터 상기 가상 블록 저장 디바이스에 대해 수행할 제1 블록 저장 동작을 수신하는 단계; 및
    상기 제1 블록 저장 서버 가상 머신으로 하여금 상기 제1 볼륨으로 상기 제1 블록 저장 동작을 수행하게 하는 메시지를 상기 제1 블록 저장 서버 가상 머신으로 발송하는 단계를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 메시지는 상기 가상 네트워크를 통해 발송된 트래픽을 암호화하고 복호화하기 위해 키를 사용하여 보안된 가상 네트워크를 통해 발송되는, 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 가상 네트워크의 제1 가상 네트워크 어드레스는 상기 제1 블록 저장 서버 가상 머신과 관련되고, 상기 가상 네트워크의 제2 가상 네트워크 어드레스는 상기 블록 저장 클라이언트와 관련되는, 컴퓨터 구현 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제1 블록 저장 서버 가상 머신 및 상기 제2 가상 머신은 상기 컴퓨터 시스템의 제1 하나 이상의 프로세서에 의해 실행되고, 상기 블록 저장 클라이언트는 상기 컴퓨터 시스템의 제2 하나 이상의 프로세서에 의해 실행되는, 컴퓨터 구현 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 제1 블록 저장 서버 가상 머신은 상기 컴퓨터 시스템에 의해 호스팅되는 제1 가상 머신이고, 상기 제2 가상 머신은 상기 컴퓨터 시스템에 의해 호스팅되는 제2 가상 머신인, 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 컴퓨터 시스템에 의해, 상기 컴퓨터 시스템의 상기 하나 이상의 저장 디바이스를 사용하여 제2 볼륨을 호스팅하기 위해 제2 블록 저장 서버 가상 머신을 실행하는 단계를 더 포함하고, 상기 제2 볼륨은 상기 제1 볼륨과 관련된 복제본(replica)인, 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 제1 블록 저장 서버 가상 머신은 상기 컴퓨터 시스템의 제1 물리적 컴포넌트를 사용하여 실행되고, 상기 제2 블록 저장 서버 가상 머신은 상기 제1 물리적 컴포넌트와 상이한 상기 컴퓨터 시스템의 제2 물리적 컴포넌트를 사용하여 실행되는, 컴퓨터 구현 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제1 블록 저장 동작은 데이터 블록의 기록이고, 상기 블록 저장 클라이언트는 또한 상기 가상 블록 저장 디바이스와 관련된 암호화 키를 사용하여 상기 데이터 블록을 암호화하여 암호화된 데이터 블록을 생성하고, 상기 제1 블록 저장 서버 가상 머신으로 발송된 메시지는 상기 암호화된 데이터 블록을 포함하고, 상기 제1 블록 저장 서버 가상 머신으로 하여금 상기 암호화된 데이터 블록을 상기 제1 볼륨에 기록하게 하는, 컴퓨터 구현 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 컴퓨터 시스템은 제공자 네트워크의 익스텐션(extension)에 포함되고, 상기 제공자 네트워크의 익스텐션은 적어도 제3자 네트워크를 통해 상기 제공자 네트워크와 통신하고;
    상기 제공자 네트워크의 인스턴스 관리 서비스는 상기 컴퓨터 시스템에 의해 상기 제1 블록 저장 서버 가상 머신 및 상기 제2 가상 머신의 실행을 개시한, 컴퓨터 구현 방법.
  10. 시스템에 있어서,
    호스트 컴퓨터 시스템의 하나 이상의 저장 디바이스; 및
    가상 블록 저장 디바이스에 대한 액세스를 갖는 제1 블록 저장 서버 애플리케이션 및 제2 애플리케이션을 실행하기 위한 상기 호스트 컴퓨터 시스템의 제1 하나 이상의 프로세서로서, 상기 제1 블록 저장 서버 애플리케이션은, 실행시 상기 제1 블록 저장 서버 애플리케이션으로 하여금 상기 하나 이상의 저장 디바이스를 사용하여 제1 볼륨을 호스팅하게 하는 명령어들을 포함하는, 상기 제1 하나 이상의 프로세서;
    블록 저장 클라이언트 애플리케이션을 실행하기 위한 상기 호스트 컴퓨터 시스템의 제1 하나 이상의 프로세서를 포함하고, 상기 블록 저장 클라이언트 애플리케이션은 실행 시에 상기 블록 저장 클라이언트 애플리케이션으로 하여금,
    상기 가상 블록 저장 디바이스에 대해 수행할 제1 블록 저장 동작을 상기 제2 애플리케이션으로부터 수신하고; 및
    상기 제1 블록 저장 서버 애플리케이션으로 하여금 상기 제1 볼륨으로 상기 제1 블록 저장 동작을 수행하게 하는 메시지를 상기 제1 블록 저장 서버 애플리케이션에 발송하게 하는 명령어들을 포함하는, 시스템.
  11. 제10항에 있어서, 상기 메시지는 상기 가상 네트워크를 통해 발송된 트래픽을 암호화하고 복호화하기 위해 키를 사용하여 보안된 가상 네트워크를 통해 발송되는, 시스템.
  12. 제11항에 있어서, 상기 가상 네트워크의 제1 가상 네트워크 어드레스는 상기 제1 블록 저장 서버 애플리케이션과 관련되고, 상기 가상 네트워크의 제2 가상 네트워크 어드레스는 상기 블록 저장 클라이언트 애플리케이션과 관련되는, 시스템.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 블록 저장 서버 애플리케이션은 상기 호스트 컴퓨터 시스템에 의해 호스팅되는 제1 가상 머신 내에서 실행되고, 상기 제2 애플리케이션은 상기 호스트 컴퓨터 시스템에 의해 호스팅되는 제2 가상 머신 내에서 실행되는, 시스템.
  14. 제10항에 있어서, 상기 호스트 컴퓨터 시스템의 상기 제1 하나 이상의 프로세서는 제2 블록 저장 서버 애플리케이션을 추가로 실행할 것이고, 상기 제2 블록 저장 서버 애플리케이션은, 실행 시에, 상기 제2 블록 저장 서버 애플리케이션으로 하여금 상기 호스트 컴퓨터 시스템의 상기 하나 이상의 저장 디바이스를 사용하여 제2 볼륨을 호스팅하게 하는 명령어들을 포함하고, 상기 제2 볼륨은 상기 제1 볼륨과 관련된 복제본인, 시스템.
  15. 제14항에 있어서, 상기 제1 블록 저장 서버 애플리케이션은 상기 컴퓨터 시스템의 제1 물리적 컴포넌트를 사용하여 실행되고, 상기 제2 블록 저장 서버 애플리케이션은 상기 제1 물리적 컴포넌트와 상이한 상기 컴퓨터 시스템의 제2 물리적 컴포넌트를 사용하여 실행되는, 시스템.
KR1020217042912A 2019-06-28 2020-06-11 클라우드 제공자 서브스트레이트 익스텐션의 가상화 블록 저장 서버 KR20220011186A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US16/457,856 US10949125B2 (en) 2019-06-28 2019-06-28 Virtualized block storage servers in cloud provider substrate extension
US16/457,853 US10949131B2 (en) 2019-06-28 2019-06-28 Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US16/457,850 US10949124B2 (en) 2019-06-28 2019-06-28 Virtualized block storage servers in cloud provider substrate extension
US16/457,850 2019-06-28
US16/457,853 2019-06-28
US16/457,856 2019-06-28
PCT/US2020/037195 WO2020263578A1 (en) 2019-06-28 2020-06-11 Virtualized block storage servers in cloud provider substrate extension

Publications (1)

Publication Number Publication Date
KR20220011186A true KR20220011186A (ko) 2022-01-27

Family

ID=71950729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217042912A KR20220011186A (ko) 2019-06-28 2020-06-11 클라우드 제공자 서브스트레이트 익스텐션의 가상화 블록 저장 서버

Country Status (5)

Country Link
EP (1) EP3987387A1 (ko)
JP (2) JP7440195B2 (ko)
KR (1) KR20220011186A (ko)
CN (2) CN114008593B (ko)
WO (1) WO2020263578A1 (ko)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US9235589B2 (en) * 2011-12-13 2016-01-12 International Business Machines Corporation Optimizing storage allocation in a virtual desktop environment
EP3133775B1 (en) * 2011-12-29 2020-05-06 Huawei Technologies Co., Ltd. Cloud computing system and method for managing storage resources therein
CN103797770B (zh) * 2012-12-31 2015-12-02 华为技术有限公司 一种共享存储资源的方法和***
EP4053699A1 (en) 2013-01-22 2022-09-07 Amazon Technologies, Inc. Instance host configuration
US9658899B2 (en) 2013-06-10 2017-05-23 Amazon Technologies, Inc. Distributed lock management in a cloud computing environment
US20140366155A1 (en) 2013-06-11 2014-12-11 Cisco Technology, Inc. Method and system of providing storage services in multiple public clouds
US10268492B2 (en) * 2014-05-20 2019-04-23 Amazon Technologies, Inc. Low latency connections to workspaces in a cloud computing environment
CN105549904B (zh) * 2015-12-08 2019-01-08 华为技术有限公司 一种应用于存储***中的数据迁移方法及存储设备
CN105892943B (zh) * 2016-03-30 2019-03-01 上海爱数信息技术股份有限公司 一种分布式存储***中块存储数据的访问方法及***
US20180150234A1 (en) * 2016-11-28 2018-05-31 Hewlett Packard Enterprise Development Lp Cloud volume storage
CN106656631B (zh) * 2017-01-19 2019-10-25 武汉噢易云计算股份有限公司 在共享存储上实现逻辑卷动态分配的方法
US10684894B2 (en) 2017-11-10 2020-06-16 Amazon Technologies, Inc. Capacity management in provider networks using dynamic host device instance model reconfigurations

Also Published As

Publication number Publication date
WO2020263578A1 (en) 2020-12-30
CN116010035A (zh) 2023-04-25
CN116010035B (zh) 2024-06-25
JP7440195B2 (ja) 2024-02-28
JP2024073416A (ja) 2024-05-29
CN114008593B (zh) 2023-03-24
JP2022538826A (ja) 2022-09-06
EP3987387A1 (en) 2022-04-27
CN114008593A (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
US10949125B2 (en) Virtualized block storage servers in cloud provider substrate extension
US11620081B1 (en) Virtualized block storage servers in cloud provider substrate extension
US11539552B1 (en) Data caching in provider network substrate extensions
US10949131B2 (en) Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US11502920B1 (en) Multi-carrier access to provider substrate extensions
US20150317169A1 (en) Constructing and operating high-performance unified compute infrastructure across geo-distributed datacenters
US11659058B2 (en) Provider network connectivity management for provider network substrate extensions
US11159344B1 (en) Connectivity of cloud edge locations to communications service provider networks
US11431497B1 (en) Storage expansion devices for provider network substrate extensions
US11394662B2 (en) Availability groups of cloud provider edge locations
US10698721B2 (en) Virtual machine migration
US10462009B1 (en) Replicating customers' information technology (IT) infrastructures at service provider networks
US10924429B1 (en) Using edge-optimized compute instances to execute user workloads at provider substrate extensions
US11219034B1 (en) Distributed network connectivity monitoring of provider network edge location resources from cellular networks
US11411771B1 (en) Networking in provider network substrate extensions
CN114026826B (zh) 提供商网络底层扩展的提供商网络连接管理
US11374789B2 (en) Provider network connectivity to provider network substrate extensions
US11662928B1 (en) Snapshot management across cloud provider network extension security boundaries
CN116010035B (zh) 云提供者底层扩展部分中的虚拟化的块存储服务器
US11595347B1 (en) Dual-stack network addressing in cloud provider network edge locations
US20240036988A1 (en) Disaster recovery pipeline for block storage and dependent applications
JP7212158B2 (ja) プロバイダネットワークサービス拡張

Legal Events

Date Code Title Description
E902 Notification of reason for refusal