KR102624824B1 - 데이터 볼륨들의 동적 구성 - Google Patents

데이터 볼륨들의 동적 구성 Download PDF

Info

Publication number
KR102624824B1
KR102624824B1 KR1020227002965A KR20227002965A KR102624824B1 KR 102624824 B1 KR102624824 B1 KR 102624824B1 KR 1020227002965 A KR1020227002965 A KR 1020227002965A KR 20227002965 A KR20227002965 A KR 20227002965A KR 102624824 B1 KR102624824 B1 KR 102624824B1
Authority
KR
South Korea
Prior art keywords
data volume
configuration
storage
data
recommendation
Prior art date
Application number
KR1020227002965A
Other languages
English (en)
Other versions
KR20220018087A (ko
Inventor
마크 존 브루커
제임스 마이클 톰슨
마크 스티븐 올슨
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20220018087A publication Critical patent/KR20220018087A/ko
Application granted granted Critical
Publication of KR102624824B1 publication Critical patent/KR102624824B1/ko

Links

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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0653Monitoring storage devices or systems
    • 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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

스토리지 시스템은 데이터 볼륨들의 동적 구성을 구현할 수 있다. 스토리지 시스템내 데이터 볼륨의 클라이언트 사용이 추적되거나 또는 모니터링될 수 있다. 데이터 볼륨의 사용에 기초하여, 데이터 볼륨 오퍼링들에 따라 데이터 볼륨을 재구성하기 위한 구성 추천들이 결정될 수 있다. 데이터 볼륨은 인가된 구성 추천에 따라 구성될 수 있다. 일부 실시예들에서, 이들 추천들은 클라이언트에 제공될 수 있고 수행할 구성 추천의 선택이 수신될 수 있다. 일부 실시예들에서, 구성 추천은 데이터 볼륨을 구성하기 위해 미리 제공된 인증에 기초하여 자동으로 수행될 수 있다.

Description

데이터 볼륨들의 동적 구성{DYNAMIC CONFIGURATION OF DATA VOLUMES}
네트워크들을 가로질러 하드웨어 자원들, 소프트웨어, 및 정보 스토리지의 가상화(virtualization)들을 동적으로 공유하기 위한 가상화들을 위한 최근 기술들에서의 혁신이 컴퓨팅의 신뢰성, 확장성, 및 비용 효율성을 증가시켰다. 보다 구체적으로, 가상화의 출현을 통하여 온 디멘드(on demand) 가상 컴퓨팅 자원들 및 스토리지를 제공하는 능력은 프로세싱 자원들 및 스토리지의 소비자들로 하여금 즉각적으로 인지된 컴퓨팅 및 스토리지 요구들에 응답하여 그것들의 컴퓨팅 및 스토리지 비용들을 유연하게 구조화하는 것을 가능하게 하였다. 가상화는 고객들이 지연들 및 제조 비용들 및 하드웨어의 배치에 의해 영향을 받았던 프로비전 사이클들내 고정된 하드웨어를 사거나 또는 차용하기 보다는 필요한 시간에 프로세서 사이클들 및 스토리지를 구매하는 것을 허용한다. 컴퓨팅 및 스토리지의 이용 가능성을 결정하기 위해서 미래 수요의 예측들에 대한 정확성에 의존하기 보다는, 유저들은 상대적으로 순간적인 필요한 베이시스(basis)에 기초하여 컴퓨팅 및 스토리지 자원들의 사용을 구매할 수 있다.
가상화된 컴퓨팅 환경들은 컴퓨팅 자원들의 이용 가능성 및 내구성에 관하여 다양한 보증을 제공할 수 있다. 다수의 자원 호스트들 가운데 분배 컴퓨팅 자원들은 상이한 이용 가능성 및 내구성 특성들을 제공할 수 있다. 예를 들어, 가상 컴퓨팅 자원들은 블럭기반의 스토리지를 제공할 수 있다. 이런 블럭-기반 스토리지는 블럭-기반 스토리지가 지원하는 볼륨들의 구조상 및 기능상 세부사항들에 그리고 스토리지 이용 가능성을 제공하는 가상화들을 실행시키는 운영 체제들에 기능적으로 애그노스틱(agnostic)하는 블럭-기반 스토리지를 제공하는 일련의 표준화된 스토리지 호출(call)들을 통하여 다양한 컴퓨팅 가상화들과 상호 작용할 수 있는 스토리지 시스템을 제공한다. 블럭기반의 스토리지는 많은 방식들로 구성될 수 있고, 이들 중 일부는 다른 것들보다 특정한 사용 경우에 대하여는 보다 최적일 수 있다. 그러나, 블럭기반의 스토리지가 구성될 수 있는 많은 방법들이 있기 때문에, 스토리지를 처음에 설정할 때 최적의 구성을 발견하는 것이 어려울 수 있다.
도 1 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 예시하는 일련의 로직 블럭 다이어그램들을 예시한다.
도 2 는 일부 실시예들에 따른 데이터 볼륨의 동적 구성을 구현하는 블럭 기반 스토리지 서비스를 포함하는 제공자 네트워크를 예시하는 블럭 다이어그램이다.
도 3 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구현하는 구성 관리기를 예시하는 로직 블럭 다이어그램이다.
도 4 는 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구성하기 위한 클라이언트와 스토리지 서비스간의 상호작용들을 예시하는 로직 블럭 다이어그램이다.
도 5 는 일부 실시예들에 따른 데이터 볼륨을 위한 구성 추천(configuration recommendation)의 통지의 예제 예시이다.
도 6 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구현하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 7은 일부 실시예들에 따른 구성 추천을 결정하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 8은 일부 실시예들에 따른 데이터 볼륨들을 구성하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 9는 일부 실시예들에 따른 예제 컴퓨팅 시스템을 예시하는 블럭 다이어그램이다.
본 출원에서 실시예들은 예로서 여러 개의 실시예들 및 예시적인 도면들에 대해 설명되지만, 이 기술분야의 숙련자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않는다는 것을 인식할 것이다. 도면들 및 그것에 대한 상세한 설명은 개시된 특정한 형태로 실시예들을 제한하도록 의도되지 않지만, 그와는 반대로, 의도는 첨부된 청구항들에 의해 정의된 바와 같이 사상 및 범위 내에 속하는 모든 수정들, 등가물들 및 대안들을 커버하는 것임이 이해되어야 한다. 본 출원에 사용된 제목들은 단지 구조적 목적을 위한 것이며 설명 또는 청구항들의 범위를 제한하기 위해 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된 바와 같이, 단어(“일 수 있다(may)”)는 의무적 의미(즉, 해야 한다는 의미하는)보다는 허용적 의미(즉, ~하기 위한 가능성을 가짐을 의미하는)에서 사용된다. 유사하게, 단어들(“포함하다”, “포함하는”, 및 “포함하다”)은 이에 제한되지 않지만, 포함하는 것을 의미한다.
본 출원에서 설명된 시스템들 및 방법들은 데이터 볼륨들의 동적 구성을 구현할 수 있다. 데이터 볼륨들은 다양한 실시예들에서 여러 클라이언트들을 위한 블럭기반의 스토리지를 제공할 수 있다. 이들 클라이언트들은 많은 상이한 애플리케이션들, 예컨대 데이터베이스 시스템들, 가상 데스크탑들, 개발 및 테스트 환경들, 비즈니스 애플리케이션들, 또는 데이터 보관소(archives)를 수행하는 부분으로서 데이터 볼륨을 활용할 수 있다. 더 나은 성능 및/또는 비용 장점들을 제공하기 위해, 데이터 볼륨들은 상이하게 구성될 수 있다. 예를 들어, 일부 데이터 볼륨들은 큰 I/O 워크로드(workload)들을 수신할 수 있지만, 반면에 다른 데이터 볼륨들은 빈번하지 않게 액세스될 수 있다. 데이터 볼륨의 예견된 사용은 데이터 볼륨의 실제 사용과 같지 않을 수 있기 때문에 적절한 데이터 볼륨 구성을 결정하는 것은 어려울 수 있다. 따라서, 선택된 데이터 볼륨들의 최초 구성들은 데이터 볼륨의 사용이 개시된 후에 어떤 태스크(task)들에 대하여는 최적인 것으로 판명되지 않을 수 있다. 데이터 볼륨들의 동적 구성 데이터 볼륨의 실제 사용에 기초하여 최적의 데이터 볼륨 구성들을 발견하는 방법을 제공할 수 있다. 데이터 볼륨 구성에 대한 변화들은 자동으로, 또는 분명한 인증으로 수행될 수 있다.
도 1 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 예시하는 일련의 로직 블럭 다이어그램들을 예시한다. 신(scene) (102)에 예시된 바와 같이, 클라이언트 (130)는 다양한 클라이언트 애플리케이션들, 태스크들, 및/또는 기능들을 위하여 블럭기반의 스토리지를 제공하는 데이터 볼륨 (112)을 사용한다(140). 예를 들어, 클라이언트 (130)는 데이터 볼륨 (112)내 데이터베이스에 대한 데이터를 저장하는 데이터베이스 엔진일 수 있고, 데이터베이스에 대한 데이터를 획득하고 업데이트하는 다양한 판독 및 기록 요청들을 수행한다. 스토리지 시스템 (110)은 클라이언트 (130)을 위한 데이터 볼륨 (112)을 특정 구성으로 호스트할 수 있다. 예를 들어, 데이터 볼륨 (112)은 데이터 볼륨에 데이터를 저장하기 위해 고체 상태 드라이브들 (SSD들) 또는 자기 스토리지 드라이브들 (예를 들어, HDD들)에 의해 구현될 수 있다. 데이터 볼륨들은 많은 상이한 유형들 중 하나로 구현될 수 있다. 게다가, 상이한 볼륨 유형들을 위해 자원들의 상이한 할당들이 사용될 수 있다 (예를 들어, 데이터 볼륨에 액세스를 제공하기 위해 할당된 IOPS의 수 또는 스토리지 공간의 양). 데이터 볼륨 구성들은 스토리지 시스템 (110)에 의해 제공되는 데이터 볼륨 오퍼링(offering)에 따라 구현될 수 있다. 예를 들어, 어떤 유형의 데이터 볼륨은 상이한 자원 할당들을 가질 수 있다 (예를 들어, 100 IOPS의 증분들로 IOPS를 할당, 또는 특정 범위내 유저 정의된 자원 할당 허용).
스토리지 시스템 (110)은 데이터 볼륨 (112)의 클라이언트 사용 (142)을 추적하는 구성 관리기 (120)를 구현할 수 있다. 신 (104)에 예시된 바와 같이, 구성 관리기 (120)는 데이터 볼륨 (112)를 재구성하기 위한 구성 추천(configuration recommendation)(들) (144)을 제공할 수 있다. 다양한 실시예들에서, 스토리지 시스템 (110)의 데이터 볼륨 오퍼링들에 따라 데이터 볼륨의 유형 및/또는 자원 할당을 바꾸는 이런 추천된 구성들은 데이터 볼륨의 성능 및/또는 비용을 개선할 수 있다. 예를 들어, 만약 데이터 볼륨 (112)이 HDD들에 저장되면, 구성 추천은 SSD들에 의해 배후 지원이 되는 볼륨 유형으로의 변화가 데이터 볼륨의 워크로드 용량을 증가시킬 수 있다는 것을 표시할 수 있다. 추천은 SSD들에 의해 배후 지원되는 볼륨 유형을 포함하는 데이터 볼륨 오퍼링을 표시할 수 있다. 이하의 도면들 6 및 7은 구성 추천(들)을 결정하는 다양한 예들을 제공한다.
신 (106)에 예시된 바와 같이, 재구성 인증(reconfiguration authorization) (146)이 추천된 구성 추천들 중 하나를 인증하기 위해 제공될 수 있다. 예를 들어, 수행할 구성 추천을 표시하는 그래픽 유저 인터페이스 또는 애플리케이션 프로그래밍 인터페이스 (API) 요청을 통하여 선택이 제공될 수 있다. 구성 관리기 (148)는 재구성된 데이터 볼륨 (114)을 구현하기 위해 재구성(148)을 지시할 수 있다. 일부 실시예들에서, 재구성된 데이터 볼륨을 호스트하는 것이 가능할 수 있는 다른 호스트들로 데이터 볼륨을 이동시키는 마이그레이션 동작(migration operation)들은 수행될 수 있다. 신 (106)에 예시된 바와 같이, 클라이언트 (130)는 재구성 동안에 데이터 볼륨 (112)에 대한 액세스를 계속하여 가질 수 있다. 완료된 후에, 클라이언트 (130)는 재구성된 데이터 볼륨 (114)을 액세스할 수 있고, 새로운 구성에 따라 데이터 볼륨 (150)을 사용한다.
이전 설명들은 한정하도록 의도되지 않고, 단지 데이터 볼륨들의 동적 구성의 일 예로서 제공된다는 것에 유의한다. 다양한 컴포넌트들이 구성 관리를 수행할 수 있다. 상이한 수들 또는 유형들의 데이터 볼륨들, 및 클라이언트들이 채용될 수 있다.
본 명세서는 블럭기반의 스토리지 서비스를 통하여 공급되는 데이터 볼륨들의 동적 구성을 구현할 수 있는 제공자 네트워크(provider netwrok)의 전반적인 설명으로 시작한다. 그런다음 블럭기반의 스토리지 서비스내 데이터 볼륨들을 구성하는 부품들로서 사용될 수 있는 컴포넌트들/모듈의 배열들 또는 상이한 컴포넌트들/모듈들을 포함하는 블럭기반의 스토리지 서비스의 다양한 예들이 논의된다. 그런 다음 데이터 볼륨들의 동적 구성을 구현하기 위한 많은 상이한 방법들 및 기술들이 논의되고, 이들의 일부가 첨부 플로우 차트들에 예시된다. 마지막으로, 다양한 컴포넌트들, 모듈들, 시스템들, 디바이스들, 및/또는 노드들이 구현될 수 있는 예제 컴퓨팅 시스템의 설명이 제공된다. 다양한 예들이 명세서 전체에 걸쳐 제공된다.
도 2 는 일부 실시예들에 따른 데이터 볼륨의 동적 구성을 구현하는 블럭 기반 스토리지 서비스를 포함하는 제공자 네트워크를 예시하는 블럭 다이어그램이다. 제공자 네트워크 (200)는 인터넷 및/또는 다른 네트워크들을 통하여 클라이언트들 (210)에 액세스 가능한 하나 이상의 서비스들 (예컨대 다양한 유형들의 클라우드기반의 컴퓨팅 또는 스토리지)을 제공하는 엔티티 예컨대 회사 또는 공공 섹터 조직에 의해 셋 업될 수 있다. 제공자 네트워크 (200)는 제공자 네트워크 (200)에 제공되는 인프라스트럭처 및 서비스들을 구현하고 분배하기 위해 요구되는 다양한 자원 풀들(pools), 예컨대 물리적 및/또는 가상화된 컴퓨터 서버들, 스토리지 디바이스들, 네트워킹 장비 및 유사한 것의 무리들(예를 들어, 도 9에 관하여 이하에서 설명되는 컴퓨팅 시스템 (1000))을 호스팅하는 많은 데이터센터들을 포함할 수 있다. 일부 실시예들에서, 제공자 네트워크 (200)는 컴퓨팅 자원들, 예컨대 가상의 컴퓨팅 서비스 (230), 스토리지 서비스들, 예컨대 블럭-기반 스토리지 서비스 (220) 및 다른 스토리지 서비스 (240) (다양한 스토리지 유형들 예컨대 오브젝트/키-값 기반 데이터 저장소들 또는 다양한 유형들의 데이터베이스 시스템들을 포함할 수 있다), 및/또는 임의의 다른 유형의 네트워크기반 서비스들 (250)을 제공할 수 있다. 클라이언트들 (210)는 네트워크 (260)를 통하여 제공자 네트워크 (200)에 의해 제공되는 이들 다양한 서비스들을 액세스할 수 있다. 마찬가지로 네트워크기반 서비스들은 그것들끼리 통신할 수 있고 및/또는 상이한 서비스들을 제공하기 위해 서로의 사용을 가능하게 한다. 예를 들어, 유닛들 소위 “인스턴스들(instances),” 예컨대 가상의 또는 물리적 컴퓨팅 인스턴스들 또는 스토리지 인스턴스들내 클라이언트들 (210)에 제공된 컴퓨팅 자원들은, 특정 데이터 볼륨들 (226)의 사용을 가능하게 할 수 있고, 컴퓨팅 인스턴스들을 위한 가상의 블럭 스토리지를 제공한다.
상기에서 언급한 바와 같이, 가상 컴퓨팅 서비스 (230)는 다양한 컴퓨팅 인스턴스들을 클라이언트들 (210)에 제공할 수 있다. 가상 컴퓨팅 인스턴스는 예를 들어, 지정된 컴퓨터의 용량 (CPU들의 유형 및 수, 주 메모리 사이즈, 등등을 나타냄으로써 특정될 수 있다) 및 지정된 소프트웨어 스택 (예를 들어, 하이퍼바이저(hypervisor)의 상부에서 동작할 수 있는 운영 체제의 특정 버전)을 갖는 하나 이상의 서버들을 포함할 수 있다. 많은 상이한 유형들의 컴퓨팅 디바이스들은 특별한 용도 컴퓨터 서버들, 스토리지 디바이스들, 네트워크 디바이스들 및 유사한 것을 포함하는 상이한 실시예들에서, 가상 컴퓨팅 서비스 (230)의 컴퓨팅 인스턴스들을 구현하기 위해서 단독으로 또는 조합하여 사용될 수 있다. 일부 실시예들에서 인스턴스 클라이언트들 (210) 또는 다른 임의의 다른 유저는 네트워크 트래픽을 컴퓨팅 인스턴스로 보내도록 구성될 수 있다(및/또는 허가된다). 다양한 실시예들에서, 컴퓨팅 인스턴스들은 다양한 동작들을 수행하기 위한 영구 블럭-기반 스토리지를 획득하기 위해서 블럭-기반 스토리지 서비스 (220)에 의해 제공된 하나 이상의 데이터 볼륨들 (226)에 매핑되거나 또는 부착될 수 있다.
컴퓨팅 인스턴스들은 예를 들어, 인스턴스를 액세스 하기 위해 클라이언트 (210)를 요구하지 않고서 클라이언트 애플리케이션들을 수행하기에 적절한 다양한 해석 또는 컴파일 프로그래밍 언어들 예컨대 루비(Ruby), 펄(Perl), 파이손(Python), C, C++ 및 유사한 것, 또는 고성능 컴퓨팅 플랫폼들)을 지원하는 여러 가지 상이한 플랫폼들, 예컨대 애플리케이션 서버 인스턴스들, Java™ 가상 기계들 (JVMs), 특정 목적 운영 체제들, 플랫폼들을 동작하거나 또는 구현할 수 있다. 일부 실시예들에서, 컴퓨팅 인스턴스들은 예상되는 가동시간 비율(uptime ratio)들에 기초하여 상이한 유형들 또는 구성들을 가진다. 특정 컴퓨팅 인스턴스의 가동시간 비율은 인스턴스가 활성화된 시간의 양, 대 인스턴스가 리저브드(reserve)되는 시간의 총 양의 비율로서 정의될 수 있다. 일부 구현예들에서 가동시간 비율은 또한 이용률(utilization)로서 지칭될 수 있다. 만약 클라이언트가 인스턴스가 리저브드되는 시간의 비교적 작은 부분동안 컴퓨팅 인스턴스를 사용할 것으로 예상한다면 (예를 들어, 연간 예약(year-long reservation)의 30% - 35%), 클라이언트는 인스턴스를 저 가동시간 비율 인스턴스(Low Uptime Ratio instance)로 예약하도록 결정할 수 있고, 관련 가격 정책에 따라 할인된 시간당 사용 금액을 지불할 수 있다. 만약 클라이언트가 최대 시간의 인스턴스를 필요로 하는 스테디-상태(steady-state) 워크로드를 가질 것으로 예상되면, 비록 일부 실시예들에서 시간당 금액은 실제 사용 시간들에 관계없이 가격 정책에 따라 예약의 전체 지속기간동안 부과될 수 있지만 클라이언트는 고 가동시간 비율(High Uptime Ratio) 인스턴스를 예약할 수 있고 훨씬 더 낮은 시간당 사용 금액을 지불할 수 있다. 상응하는 가격 정책을 갖는 중간 가동시간 비율 인스턴스들에 대한 옵션이 일부 실시예들에서 또한 지원될 수 있고, 선불 비용 및 시간당 비용들은 대응하는 고 가동시간 비율 과 저 가동시간 비율 비용들 사이에 해당한다.
컴퓨팅 인스턴스 구성들은 범용 또는 특정 용도, 예컨대 컴퓨팅 집중 애플리케이션들 (예를 들어, 고-트래픽 웹 애플리케이션들, 광고 서비스(ad serving), 배치(batch) 프로세싱, 비디오 인코딩, 분배 분석론, 고-에너지 물리현상, 게놈 분석, 및 컴퓨터의 유동체 동력학)을 위한 컴퓨터 워크로드들, 그래픽스 집중 워크로드들 (예를 들어, 게임 스트리밍, 3D 애플리케이션 스트리밍, 서버-측 그래픽스 워크로드들, 렌더링, 금융 모델링, 및 엔지니어링 디자인), 메모리 집중 워크로드들 (예를 들어, 고성능 데이터베이스들, 분배 메모리 캐시들, 인-메모리 분석론, 게놈 어셈블리 및 분석), 및 스토리지 최적화된 워크로드들 (예를 들어, 데이터 웨어하우징 (warehousing) 및 클러스터 파일 시스템들)을 갖는 컴퓨팅 인스턴스들을 또한 포함할 수 있다. 컴퓨팅 인스턴스들의 사이즈, 예컨대 가상 CPU 코어들의 특정 수, 메모리, 캐시, 스토리지, 뿐만 아니라 임의의 다른 성능 특성. 컴퓨팅 인스턴스들의 구성들은 그것들의 위치, 특정 데이터센터내, 이용 가능한 존, 지리적, 위치, 등... 및 (리저브드 컴퓨팅 인스턴스들의 경우에) 예약 기간 길이(reservation term length)를 또한 포함할 수 있다.
다양한 실시예들에서, 제공자 네트워크 (200)는 스토리지 동작들을 수행하기 위해 블럭-기반 스토리지 서비스 (220)를 또한 구현할 수 있다. 블럭기반의 스토리지 서비스 (220)는 하나 이상의 세트들의 데이터 볼륨들, 데이터 볼륨(들) (226a, 226b, 226c, 내지 226n)을 저장하기 위한 블럭 레벨 스토리지를 제공하는 다수의 독립적인 자원 호스트들 (224a, 224b, 224c 내지 224n)(예를 들어, 서버 블럭 데이터 스토리지 시스템들 또는 스토리지 노드들)의 풀(pool)로 구성되는 스토리지 시스템이다. 데이터 볼륨들 (226)은 특정 클라이언트들에 대해 네트워크상에서 매핑될 수 있거나 또는 부착될 수 있고 (예를 들어, 가상 컴퓨트 서비스 (230)의 가상 컴퓨트 인스턴스), 연접 셋의 로직 블럭들로서 가상의 블럭기반 스토리지 (예를 들어, 하드 디스크 스토리지 또는 다른 영구 스토리지)를 제공한다. 일부 실시예들에서, 데이터 볼륨 (226)은 다른 블럭 스토리지 동작들, 예컨대 스냅샷 동작들 또는 복제 동작들을 수행하기 위해 다수의 데이터 청크(chunk)들 또는 파티션들 (하나 이상의 데이터 블럭들을 포함하는)로 나누어질 수 있다. 데이터 볼륨 (226)의 볼륨 스냅샷(volume snapshot)은 데이터 볼륨 (226)의 상태에 대한 고정된 시간내 지점(point-in-time) 표현일 수 있다. 일부 실시예들에서, 볼륨 스냅샷들은 데이터 볼륨을 유지하는 자원 호스트(224)에서 원격인, 예컨대 다른 스토리지 서비스 (240)에 저장될 수 있다. 스냅샷 동작들은 다른 스토리지 서비스 (240)내 원격 스냅샷 데이터 저장소와 같은 다른 스토리지 위치내 소정의 데이터 볼륨의 스냅샷을 발송, 복제 및/또는 다른식으로 보존하도록 수행될 수 있다.
자원 호스트들(224)는 하나 이상의 컴퓨팅 시스템들 또는 디바이스들, 예컨대 스토리지 서버 또는 다른 컴퓨팅 시스템 (예를 들어, 도 9에 관하여 이하에서 설명되는 컴퓨팅 시스템 (1000))일 수 있다. 각각의 자원 호스트 (224)는 데이터 볼륨들의 개별 복제본들을 유지할 수 있다. 일부 실시예들에서, 일부 데이터 볼륨들은 다른 데이터 볼륨들과 구성(configuration)에서 다를 수 있다. 따라서 일부 자원 호스트들 (224)은 상이한 구성들을 가질 수 있는 다수의 데이터 볼륨들을 호스트할 수 있다. 데이터 볼륨들의 일부 구성들은 데이터 볼륨의 상이한 유형들, 사양들, 및 다른 성능 특성들을 허용하기 위해서 특정 유형의 하드웨어 (예를 들어, 고체 상태 스토리지 드라이브들(SSD들) 또는 자기 디스크 스토리지 (예를 들어, 하드 디스크 드라이브들 (HDD들)) 또는 소프트웨어 (예를 들어, 상이한 스토리지 관리기 동작들/애플리케이션들)을 갖는 자원 호스트들에서 구현될 수 있다. 예를 들어, 일부 자원 호스트들은 더 높은 스루풋 성능들 (예를 들어, IOPS(Input/Output Operations per Second))을 제공하기 위해서 영구 블럭 스토리지를 위한 SSD들을 구현할 수 있지만, 하지만 다른 자원 호스트들은 더 큰 스토리지 용량 (만약 낮은 스루풋 성능)을 가질 수 있는 HDD들 또는 다른 자기기반의 영구 스토리지 디바이스들을 구현할 수 있다.
자원 호스트들은 또한 멀티-테넌트(multi-tenant) 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서, 하나의 자원 호스트는 블럭기반의 스토리지 서비스 (220)의 하나의 계정을 위한 데이터 볼륨을 유지할 수 있지만, 하지만 동일한 자원 호스트에서 유지되는 다른 데이터 볼륨은 상이한 계정을 위해 유지될 수 있다. 자원 호스트들은 개별 자원 호스트를 구현하는 컴퓨팅 시스템 또는 디바이스에 직접 부착될 수 있는 하나 이상의 블럭-기반 스토리지 디바이스들 (예를 들어, 하드 디스크 드라이브들, 고체 상태 드라이브들, 등)에 그것들의 개별 데이터 볼륨들을 지속할 수 있다. 자원 호스트들은 상이한 영구 스토리지 디바이스들을 구현할 수 있다.
블럭기반의 스토리지 서비스 (220)는 여러 가지 상이한 방식들로 데이터 불륨들을 관리하고 유지할 수 있다. 데이터 볼륨의 상이한 파티션들에서 데이터 볼륨의 동일한 복제본을 유지하는 분배된 자원으로서의 두개 이상의 자원 호스 트들 가운데 일부 데이터 볼륨들에 대하여 상이한 내구성 기법들이 구현될 수 있다. 예를 들어, 예컨대 데이터 볼륨에 대한 단일 지점의 고장을 배제시킴으로써 상이한 유형들의 미러링(mirroring) 및/또는 복제 기술들이 데이터 볼륨의 내구성을 증가시키기 위해 구현될 수 있다(예를 들어, RAID 1). 데이터 볼륨에 대한 액세스를 제공하기 위해서, 그런다음 자원 호스트들은 데이터 볼륨의 복제본을 유지하는 두개 이상의 자원 호스트들 가운데 I/O 요청들, 예컨대 기록 요청들을 조정할 수 있다. 예를 들어, 소정의 데이터 볼륨을 위한 하나의 자원 호스트는 마스터 자원 호스트(master resource host)의 역할을 할 수 있다. 마스터 자원 호스트는 다양한 실시예들에서, 데이터 볼륨의 클라이언트들로부터 요청들 (예를 들어, I/O 요청들)을 수신 및 프로세스할 수 있다. 따라서, 마스터 자원 호스트는 그런다음 슬레이브 자원 호스트들로서 역할을 하는 하나 이상의 다른 자원 호스트들에 대한 데이터 볼륨으로의 I/O 요청들 예컨대 기록 요청들, 또는 임의의 다른 변화들 또는 수정들의 복제를 조정할 수 있다. 따라서, 기록 요청이 마스터 자원 호스트에서의 데이터 볼륨에 대하여 수신된 때, 마스터 자원 호스트는 기록 요청을 슬레이브 자원 호스트(들)로 포워딩할 수 있고 마스터 자원 호스트에서 기록 요청을 완료하기 전에 슬레이브 자원 호스트(들)이 완료한 것으로 기록 요청을 확인 응답(acknowledge)할 때까지 대기한다. 마스터 자원 호스트들은 스냅샷 동작들 또는 다른 I/O 동작들 (예를 들어, 판독 요청 서비스) 같은 데이터 볼륨들에 대한 다른 동작들을 지시할 수 있다.
일부 실시예들에서, 마스터 및 슬레이브 자원 호스트들의 역할이 데이터 볼륨마다 할당될 수 있다는 것에 유의한다. 예를 들어, 하나의 자원 호스트에서 유지되는 데이터 볼륨에 대하여, 자원 호스트는 마스터 자원 호스트의 역할을 할 수 있다. 반면에 동일한 자원 호스트에서 유지되는 다른 데이터 볼륨에 대하여, 자원 호스트는 슬레이브 자원 호스트의 역할을 할 수 있다. 자원 호스트들은 개별 I/O 관리기들을 구현할 수 있다. I/O 관리기들은 특정 자원 호스트에서 유지되는 데이터 볼륨들 쪽으로 보내지는 I/O 요청을 취급할 수 있다. 따라서, I/O 관리기들은 예를 들어 자원 호스트에서의 볼륨으로의 기록 요청을 취급하고 프로세스할 수 있다. I/O 관리기는 블럭-기반 스토리지 서비스 애플리케이션 프로그래밍 인터페이스 (API) 및/또는 iSCSI(internet small computer system interface)과 같은 다른 통신 프로토콜들에 따라 I/O 요청들을 프로세스하도록 구성될 수 있다.
자원 호스트들은 상이한 인프라스트럭처 존들에 위치될 수 있다. 인프라스트럭처 존들은 디바이스들, 예컨대 서버 랙들, 네트워킹 스위치들, 라우터들, 또는 다른 컴포넌트들, 전원들 (또는 다른 자원 호스트 서플라이어(supplier)들), 또는 물리적 또는 지리적 위치들 (예를 들어, 특정한 로에 위치들, 룸, 빌딩, 데이터센터, 고장 저항력이 있는(tolerant) 존, 등)에 의해 정의될 수 있다. 인프라스트럭처 존들은 자원 호스트 (및 자원 호스트상에 구현된 데이터 볼륨들의 복제본들)가 다수의 상이한 유형들의 인프라스트럭처 존들, 예컨대 특정한 네트워크 라우터 또는 브릭(brick), 특정한 룸 위치, 특정 사이트, 등내에 있을 수 있도록 범위에서 변화할 수 있다.
상기에서 언급한 바와 같이, 블럭기반의 스토리지 서비스 (220) 는 여러 가지 상이한 구성들의 데이터 볼륨들, 예컨대 상이한 성능 특성들을 제공하기 위한 상이한 유형들의 데이터 볼륨들 또는 상이한 자원 할당들을 제공할 수 있다. 블럭기반의 스토리지 서비스 (220)에 의해 제공된 상이한 데이터 볼륨 오퍼링들(data volume offering)은 클라이언트에 의한 사용을 위한 데이터 볼륨들의 다양한 유형들 및/또는 자원 할당들을 결합할 수 있다. 예를 들어, 적어도 일부 실시예들에서, 블럭기반의 스토리지 서비스 (220)는 상이한 유형들의 데이터 볼륨들, 예컨대 (하지만, 이것에 한정되지는 않는다) 범용 데이터 볼륨들, 프로비저닝된(provisioned) 액세스 데이터 볼륨들, 및/또는 비용-효율적인 데이터 볼륨들을 포함하는 데이터 볼륨 오퍼링들을 제공할 수 있다. 데이터 볼륨 오퍼링들은 클라이언트들에 (가변 세분화(granularity)로) 데이터 볼륨들의 성능 및/또는 비용을 선택하는 능력을 제공 할 수 있다.
적어도 일부 실시예들에서, 범용 데이터 볼륨들은 SSD들에 의해 배후 지원될 수 있고 많은 상이한 유형들의 워크로드들, 예컨대 작은 내지 중간-사이즈의 데이터베이스들, 개발 및 테스트 환경들, 및 부트 데이터 볼륨(boot data volume)들에 대하여 충분한 성능을 제공할 수 있다. 부트 데이터 볼륨은 일부 실시예들에서, 가상 컴퓨트 인스턴스, 예컨대 가상 컴퓨트 서비스 (230)에 의해 제공된 인스턴스가 부트 데이터 볼륨으로부터 직접 부트하는 것을 허용할 수 있다. 부트 데이터 볼륨으로부터 부트된 가상 인스턴스들은 중지될 수 있고 나중에 재시작될 수 있고, 부트 데이터 볼륨에 저장된 임의의 상태를 보존하고 인스턴스들이 중단된 동안에 가상 컴퓨트 인스턴스들의 일부 특성들의 수정을 허용한다. 범용 데이터 볼륨들을 위한 자원 할당은 많은 방식들로 구성될 수 있다. 예를 들어, 범용 데이터 볼륨들은 상이한 스토리지 사이즈들 (예를 들어, 1 기가바이트 내지 1 테라바이트)의 범위로 구성될 수 있다.
저장된 데이터에 대한 액세스를 제공하기 위한 자원 할당 또한 변화할 수 있다. 예를 들어, 일부 실시예들에서, 범용 데이터 볼륨들의 상이한 데이터 볼륨 오퍼링들은 베이스라인 액세스 성능을 제공할 수 있다 (예를 들어, 데이터 볼륨에 대하여 초당 128 메가바이트까지의 총 스루풋을 갖는 기가바이트당 3IOPS). 추가 액세스 성능 용량(capacity)이 이용 가능한 때 또는 상이한 공유 또는 스케줄링 기법들에 기초하여 제공될 수 있다. 예를 들어, 범용 데이터 볼륨들은 버스트 성능을 위한 추가 액세스 용량을 제공할 수 있다(예를 들어, 볼륨당 3,000 IOPS까지의 버스트에 대한 능력). 이 버스트 성능 용량은 일부 실시예들에서 볼륨 사이즈와 무관할 수 있다 (예를 들어, 20 GB 데이터 볼륨 또는 900 GB 데이터 볼륨에 대하여 3,000 IOPS의 버스트 성능 허용). 버스트-성능 용량은 일부 실시예들에서, 데이터 볼륨에 대하여 얼마나 많은 추가 액세스 용량이 제공될 수 있는지를 결정하기 위한 신용거래 잔고 기법(credit balance scheme)을 구현함으로써 재할당될 수 있다. 예를 들어, 데이터 볼륨의 스토리지 사이즈는 데이터 볼륨의 신용거래 잔고에 대한 신용거래 보충율(credit refill rate)에 결부될 수 있다. 신용거래는 시간 기간 동안 추가 액세스 용량을 보장할 수 있다 (예를 들어, 1 초 동안 3,000 IOPS 보장). 각각의 시간 기간 동안 추가 용량이 사용되고, 신용거래는 데이터 볼륨에 대한 신용거래 잔고로부터 공제될 수 있다. 새로운 신용거래가 신용거래 보충 잔고에 따라 신용거래 잔고에 추가될 수 있다. 만약 데이터 볼륨에 대한 모든 신용거래들이 사용되면, 그러면 데이터 볼륨에 액세스는 성능 레벨, 일부 실시예들에서 베이스라인 성능 레벨(baseline performance level)까지 쓰로틀(throttle)될 수 있다.
블럭기반의 스토리지 서비스 (200)는 일부 실시예들에서 프로비저닝되는 액세스 데이터 볼륨 유형을 제공할 수 있다. 프로비저닝되는 액세스 데이터 볼륨들은 일관된 저-레이턴시 성능을 갖는 스토리지를 공급할 수 있고, 이는 I/O-집중 워크로드들 (예를 들어, 데이터베이스들)을 갖는 클라이언트 사용에 대하여 유익할 수 있다. 적어도 일부 실시예들에서, 프로비저닝되는 액세스 데이터 볼륨들은 SSD들에 의해 배후 지원될 수 있다. 예를 들어, 프로비저닝되는 액세스 데이터 볼륨들은 데이터 볼륨에 대하여 특정 수의 IOPS까지 지원한다 (예를 들어, GB 당 30 IOPS, 이는 134 GB 만큼 작은 프로비저닝되는 액세스 데이터 볼륨 볼륨에 대하여 4,000 IOPS가 프로비저닝되는 것을 허용한다). 프로비저닝되는 액세스 데이터 볼륨들은 데이터 볼륨에 대하여 상이한 스루풋 레벨들이 달성되는 것을 허용할 수 있다(예를 들어, 데이터 볼륨에 대하여 500 IOPS 프로비저닝은 128 MB/S 스루풋까지 허용할 수 있다). 일부 실시예들에서, 다수의 볼륨들은 논리적으로 결합될 수 있고 (예를 들어, RAID 포맷에 함께 스트라이프된(striped)), 이는 증가된 액세스 및 스루풋 성능을 제공할 수 있다. 일부 실시예들에서, 프로비저닝되는 액세스를 최적화하도록 구성된 가상 컴퓨트 인스턴스 유형들은 저 레이턴시 및 일관된 성능을 제공하기 위해 프로비저닝되는 액세스 데이터 볼륨들과 함께 이용될 수 있다.
블럭기반의 스토리지 서비스 (200)는 일부 실시예들에서 비용-효율적인(cost-efficient) 데이터 볼륨 유형을 제공할 수 있다. 비용-효율적인 데이터 볼륨 유형들은 다른 데이터 볼륨 유형들보다 데이터의 저장에 더 낮은 비용을 제공할 수 있다. 예를 들어, 일부 실시예들에서 비용-효율적인 데이터 볼륨들은 자기 스토리지 드라이브들 (예를 들어, HDD들) 배후 지원될 수 있다. 비용-효율적인 데이터 볼륨들은 최저 스토리지 비용이 중요한 시나리오들 및/또는 데이터가 빈번하지 않게 액세스되는 데이터 볼륨 사용에 대하여 효율적인 스토리지를 제공할 수 있다. 비용-효율적인 데이터 볼륨들은 다양한 액세스 성능들 (예를 들어, 버스트(burst) 내지 수백 IOPS에 대한 능력을 갖는 100 IOPS 베이스라인(baseline) 성능)을 제공할 수 있다.
블럭-기반 스토리지 서비스 (220)는 블럭-기반 스토리지 서비스 (220)의 동작을 보조하기 위해서 블럭-기반 스토리지 서비스 제어 플레인 (222)을 구현할 수 있다. 다양한 실시예들에서, 블럭기반의 스토리지 서비스 제어 평면 (222)은 가상 컴퓨팅 서비스 (230)에 의해 제공되는 컴퓨팅 인스턴스들상에서 실행하는 프로그램들 및/또는 제공자 네트워크 (200) 및/또는 선택적으로 하나 이상의 다른 데이터센터들내에 위치된 컴퓨팅 시스템들 (미도시), 또는 네트워크 (260)상에서 이용 가능한 제공자 네트워크 (200)에 외부에 있는 다른 컴퓨팅 시스템들내에 위치된 다른 네트워크기반 서비스들과 같은 클라이언트들에 대한 블럭 데이터 스토리지의 이용 가능성 관리를 보조한다. 데이터 볼륨들 (226)에 대한 액세스는 블럭 데이터 트랜잭션(transaction) 명령들에 응답하여 제공자 네트워크 (200)내의 내부 네트워크상에서 또는 네트워크 (260)를 통하여 외부에서 제공될 수 있다.
블럭-기반 스토리지 서비스 제어 플레인 (222)은 유저 계정들의 관리 (예를 들어, 생성, 삭제, 과금, 지불 징수, 등)를 포함하여 블럭 레벨 스토리지 기능 제공에 관련된 여러 가지 서비스들을 제공할 수 있다. 블럭기반의 스토리지 서비스 제어 평면 (222)은 배치 요청들에 응답하여 데이터 볼륨들 (226)의 생성, 사용 및 삭제에 관련된 서비스들을 추가로 제공할 수 있다. 적어도 일부 실시예들에서, 블럭기반의 스토리지 서비스 제어 평면 (222)은 예컨대 도 3에 관해서 이하에서 보다 상세하게 설명될 구성 관리기 (227), 및 예컨대 도 4에 관해서 이하에 설명되는 인터페이스 (229)를 구현할 수 있다. 블럭-기반 스토리지 서비스 제어 플레인 (222)은 또한 다른 스토리지 서비스 (240)상에 볼륨 스냅샷들의 생성, 사용 및 삭제에 관련된 서비스들을 제공할 수 있다. 블럭기반의 스토리지 서비스 제어 평면 (222)은 데이터 볼륨들 (226) 및 다른 볼륨들의 스냅샷들의 사용에 관련된 데이터 검사 및 성능의 프로세싱 및 수집에 관련된 서비스들을 또한 제공할 수 있다.
제공자 네트워크 (200)는 상기에서 언급한 바와 같이 다른 스토리지 서비스 (240)를 또한 구현할 수 있다. 다른 스토리지 서비스 (240)는 블럭기반의 스토리지 서비스 (220)에 의해 제공되는 것과 동일하거나 상이한 유형의 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서 다른 스토리지 서비스 (240)는 데이터를 데이터 오브젝트(object)들로서 저장 및 관리할 수 있는 오브젝트기반의 스토리지 서비스를 제공할 수 있다. 예를 들어, 다양한 데이터 볼륨들 (226)의 볼륨 스냅샷들은 특정 데이터 볼륨 (226)에 대한 스냅샷 오브젝트들로서 저장될 수 있다. 적어도 일부 실시예들에서, 구성 추천들은 데이터 볼륨이 다른 스토리지 서비스로 이동되거나 또는 다른 스토리지 서비스에 저장 (예를 들어, 스냅샷 또는 보존 복사본(archived copy)으로)되는 것을 나타낼 수 있다. 다른 스토리지 서비스 (240)에 추가하여, 제공자 네트워크 (200)는 다양한 태스크들 수행 또는 요청하기 위해서 제공자 네트워크 (200)의 다른 서비스들 (예를 들어, 블럭기반의 스토리지 서비스 (220), 가상 컴퓨팅 서비스 (230) 및/또는 다른 스토리지 서비스 (240)) 뿐만 아니라 클라이언트들 (210)을 허용하는 다양한 상이한 유형들의 분석적, 컴퓨터, 스토리지, 또는 다른 네트워크기반의 시스템을 포함할 수 있는 다른 네트워크기반 서비스들 (250)을 구현할 수 있다.
클라이언트들 (210)은 네트워크 제공자 (200)에 대한 요청들을 제출하도록 구성 가능한 임의 유형의 클라이언트를 아우를 수 있다. 예를 들어, 소정의 클라이언트 (210)는 적절한 버전의 웹 브라우저를 포함할 수 있거나, 또는 웹 브라우저에 의해 제공되는 실행 환경내에서 또는 그것에 대한 익스텐션(extension)으로서 실행하도록 구성된 플러그-인 모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트 (210)는 데이터베이스 애플리케이션 (또는 그것의 유저 인터페이스), 미디어 애플리케이션, 오피스 애플리케이션 또는 컴퓨팅 인스턴스들, 데이터 볼륨 (226), 또는 다양한 동작들을 수행하기 위한 제공자 네트워크 (200)내 다른 네트워크기반 서비스의 사용을 제공할 수 있는 임의의 다른 애플리케이션과 같은 애플리케이션을 아우를 수 있다. 일부 실시예들에서, 이런 애플리케이션은 반드시 모든 유형들의 네트워크-기반 데이터에 대한 전체 브라우저 지원을 구현하지 않고서 네트워크기반 서비스들 요청들을 생성 및 프로세싱하기 위한 충분한 프로토콜 지원 (예를 들어, 적절한 버전의 하이퍼텍스트 전송 프로토콜 (HTTP))을 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (210)은 REST(Representational State Transfer)-스타일 네트워크기반 서비스들 아키텍처, 문서- 또는 메시지기반의 네트워크기반 서비스들 아키텍처, 또는 다른 적절한 네트워크기반 서비스들 아키텍처에 따른 네트워크기반 서비스들 요청들을 생성하도록 구성될 수 있다. 일부 실시예들에서, 클라이언트 (210) (예를 들어, 컴퓨터의 클라이언트)는 컴퓨팅 인스턴스에 의해 제공된 컴퓨터 자원들 또는 데이터 볼륨 (226)에 의해 제공된 블럭 스토리지를 사용하는 클라이언트 (210)상에서 애플리케이션들 구현에 투과성인(transparent) 방식으로 컴퓨팅 인스턴스 또는 데이터 볼륨 (226) 에 대한 액세스를 제공하도록 구성될 수 있다.
클라이언트들 (210)은 외부 네트워크 (260)를 통하여 제공자 네트워크 (200)로 네트워크기반 서비스들 요청들을 전달할 수 있다. 다양한 실시예들에서, 외부 네트워크 (260)는 클라이언트들 (210)와 제공자 네트워크 (200) 간에 네트워크-기반 통신을 수립하기 위해 필요한 네트워킹 하드웨어 및 프로토콜들의 임의 적절한 조합을 아우를 수 있다. 예를 들어, 네트워크 (260)는 일반적으로 다양한 텔레통신(telecommunications) 네트워크들 및 총괄하여 인터넷을 구현하는 서비스 제공자들을 아우를 수 있다. 네트워크 (260)는 개인 네트워크들 예컨대 로컬 영역 네트워크들 (LAN들) 또는 광 영역 네트워크들 (WAN들) 뿐만 아니라 공공 또는 개인 무선 네트워크들을 또한 포함할 수 있다. 예를 들어, 소정의 클라이언트 (210)및 제공자 네트워크 (200) 양쪽은 그것들 자체 내부의 네트워크들을 갖는 엔터프라이즈(enterprise)들 내에서 개별적으로 프로비저닝될 수 있다. 이런 실시예에서, 네트워크 (260)는 주어진 클라이언트 (210)와 인터넷 사이 뿐만 아니라 인터넷과 제공자 네트워크 (200) 사이에서 네트워킹 링크를 수립하기 위해 필요한 하드웨어 (예를 들어, 모뎀들, 라우터들, 스위치들, 부하 분산기(load balancer)들, 프락시 서버들, 등) 및 소프트웨어 (예를 들어, 프로토콜 스택들, 계정 소프트웨어, 방화벽/보안 소프트웨어, 등)를 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (210)은 공공 인터넷 보다는 개인 네트워크를 이용하여 제공자 네트워크 (200)와 통신할 수 있다는 것에 유의한다.
도 3 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구현하는 구성 관리기를 예시하는 로직 블럭 다이어그램이다. 구성 관리기 (227)는 다양한 기술들, 예컨대 데이터 볼륨들의 동적 구성을 제공하는 도면들 4 - 8에 관하여 이하에 논의되는 것들을 구현하기 위해 제공될 수 있다. 구성 관리기 (227)는 구성 추천들을 결정 및/또는 수행하기 위한 추천 이벤트들을 감지할 수 있다. 일부 실시예들에서, 재구성은 구성 추천들의 통지들을 클라이언트(들) (350)에 제공할 수 있고 및/또는 구성 추천들을 수행하기 위한 선택들 또는 인증들을 수신할 수 있다. 일부 실시예들에서, 구성 추천들은 자동으로 수행될 수 있다 (예를 들어, 클라이언트로부터 미리 수신된 인증 및/또는 앞에서 선택된 최적화 목표들에 기초하여).
상기에서 언급한 바와 같이, 블럭기반의 스토리지 서비스들을 제공하기 위해 다수의 자원 호스트들, 예컨대 자원 호스트(들) (300)이 구현될 수 있다. 다양한 실시예들에서, 구성 관리기 (227)는 이력(이력al) 클라이언트 사용 데이터를 수집, 추적 및/또는 모니터링하는 클라이언트 사용 모니터 (320)을 구현할 수 있다. 예를 들어, 클라이언트 사용 모니터 (320)는 자원 호스트(들)상에 호스트되는 데이터 볼륨들의 클라이언트 사용을 표시하는 정보, 메트릭들, 또는 메타데이터에 대한 쿼리(query)로 자원 호스트(들) (300)을 주기적으로 스윕(sweep)할 수 있다. 예를 들어, 클라이언트 사용 데이터(client utilization data)는 다양한 실시예들에서, 데이터 볼륨이 클라이언트를 위하여 사용되었는지 다양한 측면들을 표시할 수 있다. 스토리지 사용은, 예를 들어, 데이터 볼륨 데이터 볼륨에 할당된 총 스토리지(예를 들어, 200 기가바이트) 가운데 데이터 볼륨에 저장된 총 데이터 양(예를 들어, 10 기가바이트)을 표시할 수 있다. 액세스 사용 (또는 데이터 볼륨을 액세스하기 위해 수행된 워크로드의 일부 다른 표시)은 수집될 수 있다(예를 들어, 사용된 IOPS 의 수). 클라이언트 사용을 나타내거나 또는 그에 관련될 수 있는 다른 성능 특성들, 예컨대 스루풋(throughput) (예를 들어, 초당 전송된 바이트들의 수) 또는 레이턴시(latency) (예를 들어, 데이터 볼륨에서 동작 또는 거래(transaction)를 수행한 시간의 양)가 수집될 수 있다. 클라이언트 사용 모니터 (320)는 이력 클라이언트 사용 저장소(322)에 데이터를 저장할 수 있고, 이는 수집된 데이터를 영구적으로 유지할 수 있다. 일부 실시예들에서 이력의 클라이언트 사용 저장소(322)는 블럭기반의 스토리지 서비스 제어 평면 (226) 또는 구성 관리기 (227) (예를 들어, 구성 추천들을 결정하기 위한 추천 엔진 (310)에 의해)의 다른 컴포넌트들에 액세스를 제공하기 위한 데이터베이스 또는 그렇지 않으면, 검색가능한/쿼리할 수 있는(query-able) 스토리지 시스템으로 구현될 수 있다.
적어도 일부 실시예들에서, 클라이언트 사용 모니터 (320)는 추천 이벤트들 (또는 구성 추천을 수행하기 위한 이벤트들)을 감지 또는 트리거할 수 있다. 예를 들어, 만약 현재 스토리지 사용이 총 용량 근처에 있다면, 클라이언트 사용 모니터 (320)는 추천 이벤트를 트리거링할 수 있고, 이는 추천 엔진 (310)은 구성 추천(들)을 감지하고 결정할 수 있다 (예를 들어, 증가된 스토리지 사이즈를 갖는 데이터 볼륨을 구성하기 위해). 다양한 실시예들에서, 데이터 볼륨들을 결정하기 위한 트리거들은 인증 관리 (340)를 통하여 클라이언트(들) (350)에 의해 구성 및/또는 결정될 수 있다.
구성 관리기 (227)는 다양한 실시예들에서, 자원 호스트(들) (300)에서 데이터 볼륨들에 대한 구성 추천들을 결정 및/또는 추천 이벤트들을 감지하기 위해 추천 엔진 (310)을 구현할 수 있다. 추천 엔진 (310)은 데이터 볼륨을 재구성하기 위한 데이터 볼륨들에 대한 상이한 구성 추천들을 식별하는 다양한 추천 기술들을 구현할 수 있어서 재구성 후에 데이터 볼륨에 대한 후속 액세스는 새로운 구성에서 제공된다. 예를 들어, 데이터 볼륨에 대한 베이스라인(baseline) 또는 가능성 있는(likely) 사용 또는 요건들은 이력 클라이언트 사용 데이터의 분석에 기초하여 결정될 수 있다. 만약, 예를 들어, 데이터 볼륨의 워크로드가 100 과 500 IOPS 사이에서 변하면, 그러면 500 IOPs의 베이스라인 요건이 식별될 수 있다. 적어도 일부 실시예들에서, 베이스라인 또는 가능성이 있는 사용은 데이터 볼륨의 현재 구성에 대하여 조사될 수 있다. 데이터 볼륨에 대하여 때대로 500 IOPs까지 사용될 수 있는 상기의 예를 고려한다. 현재 구성은 데이터 볼륨에서 워크로드들에 대하여 단지 보증된 100IOPs를 제공하는 비용-효율적인 데이터 볼륨 유형에서 구현될 수 있다. 데이터 볼륨에 대한 워크로드가 데이터 볼륨의 유형에 대하여 제공된 보증(guarantee)들을 초과하고 따라서 그것은 데이터 볼륨의 상이한 구성이 서비스의 더 나은 보증을 제공할 수 있다는 것일 수 있다 (예를 들어, 베이스라인 IOPS 성능의 더 높은 양의 범용 데이터 볼륨 유형). 데이터 볼륨의 워크로드를 충족시키는 성능을 제공하는 데이터 볼륨 오퍼링이 추천을 위하여 식별될 수 있다.
성능 및/또는 비용에 대하여 데이터 볼륨을 최적화 또는 개선시킬 수 있는 구성 추천들이 결정될 수 있다. 그것이 성능 결함들 (상기의 예에서 설명된) 또는 비용 결함들 (예를 들어, 데이터 볼륨의 전부를 사용하지 않아서 비용이 낭비되는)이 식별되는 간에, 구성 목표(configuration goal)들이 데이터 볼륨에 대하여 식별될 수 있다. 일부 실시예들에서, 구성 목표들은 명확하게 클라이언트에 의해 정의될 수 있다 (예를 들어, 더 낮은 비용 및 성능을 증가시키는 구성 추천들을 단지 제공). 다른 실시예들에서, 구성 목표들은 볼륨 구성들이 변화될 필요가 있을 수 있는 (예를 들어, 데이터 볼륨이 이용 가능한 스토리지 범위 밖에서 운용되고 있는 것을 감지) 상기에서 설명된 성능 및/또는 비용 결함들 및/또는 다른 트리거들, 알람들 또는 시나리오들에 기초하여 동적으로 식별될 수 있다. 상이한 최적화 기술들이 가능한 데이터 볼륨의 구성들 (예를 들어, 다양한 종단(terminating), 반복, 또는 휴리스틱(heuristic) 기반의 기술들을 구현하는) 해결하도록 구현될 수 있어서 하나 이상의 식별된 목표들에 대하여 데이터 볼륨을 개선시키는 구성들을 해결할 수 있다. 구성 추천들은 데이터 볼륨 (예를 들어, 스토리지 볼륨)의 사용 또는 자원 할당 및/또는 데이터 볼륨 유형에 대한 변화들 (예를 들어, 범용, 프로비저닝되는 액세스, 또는 비용-효율적인)을 포함할 수 있다. 일부 실시예들에서, 상이한 집약성(locality) (예를 들어, 상이한 자원 호스트 또는 인프라스트럭처 존)이 데이터 볼륨에 대하여 더 나은 성능 (예를 들어, 데이터 볼륨에 대한 더 나은 네트워크 액세스를 제공하기 위해서 더 낮은 네트워크 사용과 집약성에서 데이터 볼륨을 구성하는 것)을 제공할 수 있다는 결정에 기초하여 구성 추천들이 생성될 수 있다. 추천된 구성들을 제공하는 적절한 데이터 볼륨 오퍼링들이 일부 실시예들에서 식별될 수 있다. 다수의 구성 추천들이 데이터 볼륨에 대하여 생성될 수 있다.
구성 관리기 (227)는 을 이하에서 설명될 다양한 실시예들에서 클라이언트(들) (350)에 구성 추천들의 통지들을 제공할 수 있다. 예를 들어, 인증 관리 (340)는 구성 추천들을 포함하는 통지들 (예를 들어, 전자 메일 메시지들, 클라이언트 모니터링되는 메시지 보드들에 포스트 메시지(post message)들, 또는 다른 통신 기술들)을 생성 및 발송하도록 구현될 수 있다. 인증 관리 (340)는 일부 실시예들에서 도 4에 관해서 이하에서 설명될 데이터 볼륨들의 자동화된 재구성을 위한 인증을 셋 업하고 및/또는 수행하기 위해 인가된 구성 추천들의 이면 선택(back selection)들을 수신하기 위한 인터페이스를 제공할 수 있다.
구성 관리기 (227)는 허가된 구성들을 수행하기 위한 재구성 조정자 (330)를 구현할 수 있다. 예를 들어, 적어도 일부 실시예들에서, 데이터 볼륨을 새로운 추천된 구성으로 호스트하기 위해서 성능 및/또는 용량을 갖는 상이한 자원 호스트로 데이터 볼륨을 이동시키는 마이그레이션 동작(migaration operation)들이 수행될 수 있다. 마이그레이션 동작은 일부 실시예들에서, 데이터 볼륨을 목적지 자원 호스트로 전송할 것을 현재 자원 호스트에 지시함으로써 수행될 수 있다. 일부 실시예들에서, 중개자, 예컨대 마이그레이션 워커 태스크(migration worker task) 또는 노드가 자원을 목적지 자원 호스트에 발송하기 전에 자원을 보내고 및/또는 수신할 수 있다. 일부 실시예들에서 다수의 복제본들 또는 복사본들 (예를 들어, 마스터 및 슬레이브(들))을 갖는 데이터 볼륨을 이동시키는 다수의 마이그레이션 동작들이 수행될 수 있다. 마이그레이션 동작들은 데이터 볼륨의 클라이언트 사용을 방해하거나 또는 영향을 미치지 않는 방식으로 수행될 수 있다. 예를 들어, 마이그레이션 동작은 항상 데이터 볼륨의 하나 이상의 복제본들이 데이터 볼륨에 대한 서비스 액세스 요청들에 이용 가능하도록 수행될 수 있다 (예를 들어, 2 복제본들이 새로운 구성에 3번째 복제본을 추가, 데이터 볼륨을 3번째 복제본에 복사, 첫번째 2 복제본(replica)들 중 하나를 드랍(drop), 및 두번째 새로운 복제본을 새로운 구성에 추가하는 것을 반복, 마지막으로 새로운 구성에 2 복제본들을 갖도록 하기 위해 구 구성의 제 2 복제본을 드랍시킴). 적어도 일부 실시예들에서, 데이터 볼륨을 구성하는 단계는 데이터 볼륨을 마이그레이션 하지 않고서 (예를 들어, 추가 스토리지를 데이터 볼륨에 할당, 추가의 IOPs를 데이터 볼륨에 할당, 등) 새로운 구성에서 데이터 볼륨을 제공하기 위해 자원 호스트를 업데이트하는 단계를 포함할 수 있다. 상이한 메타데이터, 계정 정보, 과금(billing), 미터링(metering), 또는 클라이언트에 대한 다른 데이터 (예를 들어, 유저 계정 데이터)에 대한 업데이트들이 데이터 볼륨을 재구성함으로써 이루어진 변화들을 반영하기 위해 수행될 수 있다 (예를 들어, 새로운 볼륨 구성을 반영하기 위해 과금율 또는 다른 미터링 정보를 업데이팅).
도 4 는 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구성하기 위한 클라이언트와 스토리지 서비스간의 상호작용들을 예시하는 로직 블럭 다이어그램이다. 클라이언트(들) (400)에 예컨대 제공자 네트워크 (200)에 외부에 클라이언트들 (예를 들어, 클라이언트들 (210)) 또는 제공자 네트워크 (200)에 내부의 클라이언트들 (예를 들어, 다른 서비스들 (230, 240) 등등)에, 블럭기반의 스토리지 서비스 (220)에 의해 제공되는 다양한 서비스들 및 기능들에 대한 액세스를 제공하기 위해 도 2에 관해서 상기에서 논의된 바와 같이 인터페이스 (229)가 블럭기반의 스토리지 서비스 (220)에 대하여 구현될 수 있다. 인터페이스 (229)는 네트워크기반의 사이트 (예를 들어, 웹사이트)에서 구현될 수 있는 것과 같은 그래픽 유저 인터페이스 (GUI)으로 및/또는 프로그램가능한(programmatic) 인터페이스 (예를 들어, 애플리케이션 프로그래밍 인터페이스 (API))으로 구현될 수 있다. 이하에서 설명되는 다양한 요청들, 응답들, 통지들, 및 다른 통신들이 일부 실시예들에서 인터페이스 (229)를 통하여 제공될 수 있다. 예를 들어, 특정 API 요청들이 요청들 (410) 및 (430) 및 응답들 (420) 및 (440)를 위하여 포맷될 수 있다.
자동화된 구성 (410)을 인가하는 하나 이상의 요청(들)이 인터페이스 (229)를 통하여 발송될 수 있다. 예를 들어, 팝-업 윈도우(pop-up window), 인터페이스들 (예를 들어, 위저드(wizard)), 또는 다른 그래픽 유저 인터페이스의 시리즈가 데이터 볼륨의 자동화된 구성을 구성하기 위한 하나 이상의 옵션들 또는 선택들을 제공할 수 있다. 예를 들어, 데이터 볼륨 이름 또는 다른 식별자가 입력될 수 있는 검색 인터페이스 또는 특정한 데이터 볼륨을 식별하는 인터페이스 엘리먼트가 구현될 수 있다(예를 들어, 특정한 유저 계정과 관련된 데이터 볼륨들의 드랍 메뉴). 데이터 볼륨을 식별하기 위해 선택들 또는 입력 (410)이 제공될 수 있다. 자동화된 재구성을 수행하는 인증 또는 동의는 동일한 및/또는 상이한 유저 인터페이스 엘리먼트들 (예를 들어, "아이 어그리(I AGREE)" 버튼)을 통하여 통신될 수 있다. 적어도 일부 실시예들에서, 자동화된 구성은 특정 환경들에서 수행하도록 구성될 수 있다. 예를 들어, 트리거 이벤트 또는 알람에 응답하여 재구성이 수행될 수 있는 트리거 이벤트 또는 알람이 설정될 수 있다(도 6에 관해서 이하에서 설명될). 추천 또는 구성 이벤트를 트리거 하기 위한 상이한 메트릭들, 정보, 또는 다른 시나리오들이 일부 실시예들에서 자동화된 구성 요청 (410)에 대한 인증 부분으로서 지정될 수 있다.
추천 통지(들) (420)이 인터페이스 (229) (또는 일부 다른 통신 기술)를 통하여 클라이언트(들) (400)에 제공될 수 있다. 예를 들어, 추천 통지(들) (420)이 클라이언트에 직접 발송되는 API 포맷된 응답을 통하여 제공될 수 있다. 일부 실시예들에서, 추천 통지들, 예컨대 전자 메일 (이메일), 가청 메시지들 (예를 들어, 이동 전화로), 또는 SMS 또는 MMS 문자 메시지들을 제공하기 위해 대안적인 통신 프로토콜들 또는 기술들이 이용될 수 있다. 적어도 일부 실시예들에서, 그래픽 유저 인터페이스 통지가 도 5에 관해서 이하에서 설명되는 것과 같이 제공될 수 있다. 예를 들어, 이메일은 추천 통지를 포함하는 그래픽 유저 인터페이스를 구현하는 네트워크기반의 사이트에 링크를 제공할 수 있는 추천 통지들을 위한 유저 계정 또는 허가된 수신자에 등록된 이메일 어드레스에 발송될 수 있다. 통지는 그래픽 유저 인터페이스를 통하여 제공된 사이트 대시보드(dashboard), 메시지-보드, 또는 다른 통신 인터페이스에서 포스트(post)되거나 또는 디스프레이될 수 있다.
도 5 는 일부 실시예들에 따른 데이터 볼륨을 위한 구성 추천의 통지의 예제 예시이다. 추천 통지(recommendation notification) (500)는 데이터 볼륨에 대한 표시 추천 구성(들)을 제공하는 문자 및/또는 그래픽 엘리먼트들을 포함할 수 있다. 예를 들어, 추천 통지는 데이터 볼륨 이름 또는 식별자에 의해 특정한 데이터 볼륨 을 식별할 수 있다. 적어도 일부 실시예들에서, 요약 서술(statement)또는 섹션은 구성 추천을 수행하기 위해 선택하는 것이 달성될 수 있는 장래의 변화들을 표시할 수 있다. 예를 들어, 도 5에 예시된 바와 같이, "재구성에 의해 데이터 볼륨 492SA104XZ에 대하여 기록 성능 X% 증가되고 X% 비용을 절감한다고 명시된다."
일부 실시예들에서, 현재 구성 엘리먼트 (510)은 데이터 볼륨의 현재 구성을 설명하는 세부 사항들을 제공할 수 있다. 예를 들어, 현재 구성 (510)은 현재 데이터 볼륨 유형 (예를 들어, 배후 지원되는 고체 상태 스토리지 또는 배후 지원되는(backed) 자기 스토리지), 스토리지 사이즈 (예를 들어, 총 및/또는 현재 사용되는), 스토리지 스루풋이 어떻게 관리되고/할당되는지 (예를 들어, 신용거래기반의(credit-based), 프로비저닝되는), 및/또는 현재 비용들을 디스플레이 할 수 있다. 적어도 일부 실시예들에서, 하나 이상의 클라이언트 사용 메트릭들 또는 이력 성능 (512)이 제공될 수 있다 (예를 들어, IOPs). 예를 들어, 추천을 추진하거나 트리거링하는 메트릭들이 설명 목적 (또는 추천된 구성들과 대조를 위해서)을 위해 포함될 수 있다. 도 5에 예시된 바와 같이, 이력 성능 (512)은 점선 임계값 (예를 들어, IOPs 신용거래 잔고가 초과된 때 I/O의 쓰로틀을 예시하는)을 교차할 때 급격한 감소들을 예시하는 사용 메트릭을 예시한다.
다양한 변화들 (예를 들어, 볼륨 유형, 자원 할당에 대한 변화들, 또는 다른 변화, 예컨대 위치 및/또는 비용에서의 변화) 및/또는 추천된 변화들을 제공하는 데이터 볼륨 오퍼링들을 설명하는 구성 추천(들) (520)이 추천 통지 (500)에 포함될 수 있다. 적어도 일부 실시예들에서, 잠재적인 긍정적인면들 또는 최적화들 (예를 들어, 성능 및/또는 비용에 대한)을 예시하기 위해 예상된 성능 (522) 표시가 포함될 수 있다. 예를 들어, 예상된 성능 (522)은 보다 일관된 성능 (이력 성능 (512)에 예시된 흔들림(vacillation)에 반대되는)을 표시할 수 있는 점선 (예를 들어, 프로비저닝된 IOPs 임계값)을 초과하지 않는 것으로 예시된다. 비록 하나의 추천 구성이 도 5에 예시되지만, 다수의 추천된 구성들이 추천 통지 (500) (이들 중 하나가 선택될 수 있다)에 포함될 수 있고 따라서 도 5 는 포함될 수 있는 추천된 구성들의 수에 관하여 예시된 것으로 의도되지 않는다는 것에 유의한다.
적어도 일부 실시예들에서, 구성 추천들은 상이한 데이터 볼륨 오퍼링들로서 디스플레이될 수 있고, 추가 세부사항들의 디스플레이를 위해서 선택될 수 있는 다수의 상이한 데이터 볼륨 오퍼링들을 열거한다. 예를 들어, 예를 들어, 상이한 더 큰 스토리지 사이즈들을 제공하는 데이터 볼륨 오퍼링들이 열거될 수 있다. 상호작용(interaction), 예컨대 상이한 데이터 볼륨 오퍼링들 중 하나의 선택은 추가 정보, 예컨대 성능 특성들 및/또는 비용을 제공할 수 있다. 적어도 일부 실시예들에서, 상이한 가격책정(pricing) 모델들이 상이한 데이터 볼륨 오퍼링들에 대하여 구현될 수 있다. 예를 들어, 오픈 마켓(marketplace) 모델은 특정한 구성들을 갖는 데이터 볼륨 오퍼링들이 제공자 네트워크 또는 제 3-당사자 제공자들/협력자들/운영자들에 의해 열거되는 것을 허용할 수 있다. 데이터 볼륨 오퍼링들은 현재 수요에 기초하여 제공될 수 있고 (예를 들어, 볼륨 오퍼링에 따라 데이터 볼륨을 재구성하는 비용 변화) 및/또는 상이한 사용 조건들을 공급할 수 있다(예를 들어, 상이한 가격책정 기법 길이들, 리저브드 또는 중단가능한 서비스, 등).
도 5에 예시된 바와 같이, 추천 통지 (500)에 응답을 제공하기 위해 하나 이상의 그래픽 유저 인터페이스 엘리먼트들 (530) 및 (540)이 구현될 수 있다. 예를 들어, 도 5에서, 구성 추천 (520)에 따라 데이터 볼륨을 재구성하기 위해 “예(YES)” 엘리먼트 (530)가 선택될 수 있다. 적어도 일부 실시예들에서, “예” 엘리먼트 (530)는 "원-클릭" 유저 경험을 제공할 수 있어서 선택된 후에 재구성이 추가 유저 상호작용 없이 자동으로 수행된다. 다른 이런 유저 인터페이스 엘리먼트들은 유사한 원-클릭 경험 (예컨대 다수의 구성 추천들의 각각의 리스트 옆에 "예” 엘리먼트)을 제공할 수 있다. "아니오(NO)" 인터페이스 엘리먼트 (540)는 일부 실시예들에서, 재구성을 수행하는 것을 거절하기 위해 선택될 수 있다.
그래픽 유저 인터페이스, 문자 통지, 또는 다른 형태의 통신으로 구현되든지 간에 도 5에 관해서 상기에서 논의된 많은 다양한 부분들의 정보가 통지에 포함될 수 있다. 유사하게, 구성 선택 (430)은 상기에서 논의된 다양한 유저 인터페이스 엘리먼트들 대신에 또는 거기에 추가하여 문자 응답 (예를 들어, 명령어 라인 인터페이스(command line interface)를 통하여)으로 제공될 수 있다. 따라서 이전 논의는 다른 형태들 추천 통지(들) (420) 또는 구성 선택 (430)에 관해서는 제한되는 것으로 의도되지 않는다.
적어도 일부 실시예들에서, 구성 완료 통지가 데이터 볼륨의 재구성의 완료시에 인터페이스 (229)을 통하여 발송될 수 있다(440). 구성이 자동으로 수행되는 경우들에서, 구성 추천을 갖는 상기에서 논의된 바와 같은 추가 세부사항들이 제공될 수 있다 (예를 들어, 볼륨 유형, 자원 할당, 위치에 대한 변화, 등). 일부 실시예들에서, 통지 (440)가 추천 통지(들) (420)에 대하여 상기에서 논의된 바와 같이 고객 계정에 대한 그래픽 통지 시스템 또는 메시지 보드를 통하여 제공될 수 있다.
도면들 2 - 5에 관해서 상기에서 논의된 데이터 볼륨들의 동적 구성의 예들이 블럭기반의 스토리지 서비스에 관련하여 제공된다. 데이터 볼륨들을 제공하는 스토리지 시스템들 또는 서비스들의 다양한 다른 유형들 또는 구성들이 이들 기술들을 구현할 수 있다. 상기에서 설명된 다양한 모듈들, 컴포넌트들, 시스템들, 및 또는 서비스들의 상이한 구성들이 데이터 볼륨들의 동적 구성을 구현할 수 있고 구성 추천들을 결정하고, 구성 추천들을 수행하는 인증을 감지하고, 및 데이터 볼륨들을 구성하도록 구성될 수 있다. 도 6 은 일부 실시예들에 따른 데이터 볼륨들의 동적 구성을 구현하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. 이들 기술들은 도면들 2 - 5에 관하여 상기에서 설명된 스토리지 시스템에 데이터 볼륨들을 구성하기 위한 제어 평면, 구성 관리기 또는 다른 컴포넌트를 이용하여 구현될 수 있다.
(610)에 표시된 대로, 클라이언트를 위하여 스토리지 서비스에 호스트되는 데이터 볼륨의 클라이언트 사용이 모니터링 될 수 있다. 클라이언트 사용 데이터는 다양한 실시예들에서, 데이터 볼륨의 클라이언트 사용을 나타낼 수 있거나 또는 클라이언트 사용에 관련될 수 있는 데이터 볼륨에 할당된 총 스토리지로 중에서 데이터 볼륨에 저장된 총 데이터 양을 나타내는 스토리지 활용, 액세스 활용, 예컨대 IOPS (또는 데이터 볼륨을 액세스하기 위해 수행되는 워크로드의 일부 다른 표시), 및/또는 임의의 다른 성능 특성들, 예컨대 스루풋 (예를 들어, 초당 전송된 바이트의 수) 또는 레이턴시(latency) (예를 들어, 데이터 볼륨에서 동작 또는 거래를 수행하는 시간의 양)일 수 있다.
(620)에 표시된 대로, 추천 이벤트가 감지될 수 있다. 추천 이벤트는 일부 실시예들에서 모니터링된 클라이언트 사용 데이터 (예를 들어, 데이터 볼륨이 X번째 횟수동안 버스트 액세스 신용거래 잔고(burst access credit balance)를 초과하였다)에 의해 표시되는 시나리오 또는 특정 알람의 감지에 기초하여 트리거링될 수 있다. 일부 실시예들에서, 추천 이벤트는 간단하게 데이터 볼륨들에 대하여 주기적인 추천 생성 (예를 들어, 일주에 또는 한달에 한번)을 실시하는 타이머 또는 다른 이벤트일 수 있다. 일부 실시예들에서, 구성 추천(들)은 감지된 추천 이벤트에 응답하여 결정될 수 있다.
(630)에 표시된 대로, 일부 실시예들에서 적어도 부분적으로, 데이터 볼륨의 클라이언트 사용에 기초하여 서비스의 데이터 볼륨 오퍼링들에 따라 데이터 볼륨을 재구성하기 위한 구성 추천(들)이 결정될 수 있다. 재구성 후에 데이터 볼륨에 대한 후속 액세스가 새로운 구성을 통하여 제공되도록 데이터 볼륨을 재구성하는 이용 가능한 데이터 볼륨 오퍼링들 에 따른 데이터 볼륨들에 대한 구성 추천들을 결정하기 위한 다양한 추천 기술들이 구현될 수 있다. 예를 들어, 데이터 볼륨에 대한 베이스라인 또는 가능성 있는 사용 또는 요건들이 이력 클라이언트 사용 데이터의 분석에 기초하여 결정될 수 있다. 만약, 예를 들어, 데이터 볼륨의 사용된 스토리지가 450 과 650 기가바이트 사이에서 변하면, 그러면 650 기가바이트의 베이스라인 요건이 식별될 수 있다. 성능 및/또는 비용에 대하여 데이터 볼륨을 최적화 또는 개선시킬 수 있는 구성 추천들이 결정될 수 있다. 이하에 논의되는 도 7은 구성 목표들을 최적화하기 위한 구성 분석의 다양한 예들을 제공한다. 일부 실시예들에서, 구성 목표들은 명확하게 클라이언트에 의해 정의될 수 있다 (예를 들어, 더 낮은 비용 및 성능을 증가시키는 구성 추천들을 단지 제공). 다른 실시예들에서, 구성 목표들은 볼륨 구성들이 변화될 필요가 있을 수 있는 (예를 들어, 데이터 볼륨이 이용 가능한 스토리지 범위 밖에서 운용되고 있는 것을 감지) 상기에서 설명된 성능 및/또는 비용 결함들 및/또는 다른 트리거들, 알람들 또는 시나리오들에 기초하여 동적으로 식별될 수 있다.
상이한 최적화 기술들이 가능한 데이터 볼륨의 구성들 (예를 들어, 다양한 종단(terminating), 반복, 또는 휴리스틱(heuristic) 기반의 기술들을 구현하는) 해결하도록 구현될 수 있어서 하나 이상의 식별된 목표들에 대하여 데이터 볼륨을 개선시키는 구성들을 해결할 수 있다. 구성 추천들은 데이터 볼륨 (예를 들어, 스토리지, IOPS)의 사용 또는 자원 할당 및/또는 데이터 볼륨 유형에 대한 변화들 (예를 들어, 상기에서 논의된 범용, 프로비저닝되는 액세스, 또는 비용-효율적인)을 포함할 수 있다. 예를 들어, 구성 추천은 IOPS를 증가시키기 위해 데이터 볼륨 유형들을 바꿀 수 있거나 또는 IOPS를 증가시키기 위해 스토리지 사이즈를 바꿀수 있다. 일부 실시예들에서, 상이한 집약성(locality) (예를 들어, 상이한 자원 호스트 또는 인프라스트럭처 존)이 데이터 볼륨에 대하여 더 나은 성능 (예를 들어, 데이터 볼륨에 대한 더 나은 네트워크 액세스를 제공하기 위해서 더 낮은 네트워크 사용과 집약성에서 데이터 볼륨을 구성하는 것 )을 제공할 수 있다는 결정에 기초하여 구성 추천들이 생성될 수 있다. 추천된 구성들을 제공하는 적절한 데이터 볼륨 오퍼링들이 일부 실시예들에서 식별될 수 있다. 다수의 구성 추천들이 데이터 볼륨에 대하여 생성될 수 있다.
(640)에 표시된 대로, 추천을 수행하기 위한 클라이언트 인증이 감지될 수 있다. 클라이언트 인증은 일부 실시예들에서 인터페이스를 통하여 확실하게 수신되고 감지될 수 있다. 예를 들어, 그래픽 유저 인터페이스는 도 5에 관해서 상기에서 논의된 바와 같이 구현될 수 있고, 이는 선택된다면, 구성 추천이 수행되어야 하는 것을 표시할 수 있는 단일 유저 인터페이스 엘리먼트를 제공할 수 있다. 명령어 라인 인터페이스로부터 생성된 예컨대 API 요청들과 같은 구성 추천들의 선택들의 표시 또는 구성의 다른 유형들이 수신될 수 있다. 적어도 일부 실시예들에서, 클라이언트들 또는 유저들은 클라이언트 추천들, 특정 최적화 목표들 (예를 들어, 비용 및 성능), 또는 트리거 이벤트들 (예를 들어, 이용 가능한 불충분한 스토리지 용량) 중 어느 하나를 사전 인가(pre-authorize)할 수 있다. 사전 인증이 수여된 해당 데이터 볼륨들을 (및 구성 추천의 어떤 유형에 대하여) 표시하는 유저 계정 설정, 데이터 저장소, 또는 다른 셋의 정보가 유지될 수 있다.
(650)에 표시된 대로, 데이터 볼륨은 구성 추천에 따라 재구성될 수 있다. 예를 들어, 데이터 볼륨을 새로운 추천된 구성에 호스트하기 위해서 성능 및/또는 용량을 갖는 상이한 자원 호스트로 데이터 볼륨을 이동시키는 마이그레이션 동작들이 수행될 수 있다. 마이그레이션 동작은 일부 실시예들에서, 데이터 볼륨을 목적지 자원 호스트로 전송할 것을 현재 자원 호스트에 지시함으로써 수행될 수 있다. 일부 실시예들에서, 중개자, 예컨대 마이그레이션 워커 태스크(migration worker task) 또는 노드가 자원을 목적지 자원 호스트에 발송하기 전에 자원을 보내고 및/또는 수신할 수 있다. 일부 실시예들에서 다수의 복제본들 또는 복사본들 (예를 들어, 마스터 및 슬레이브(들))을 갖는 데이터 볼륨을 이동시키는 다수의 마이그레이션 동작들이 수행될 수 있다. 마이그레이션 동작들은 데이터 볼륨의 클라이언트 사용을 방해하거나 또는 영향을 미치지 않는 방식으로 수행될 수 있다. 적어도 일부 실시예들에서, 데이터 볼륨을 구성하는 단계는 데이터 볼륨을 마이그레이션 하지 않고서 새로운 구성에서 데이터 볼륨을 제공하기 위해 자원 호스트를 업데이트하는 단계를 포함할 수 있다. 데이터 볼륨들이 어떻게 호스트(들)에서 구현되는지를 제어하는 메타데이터, 액세스 또는 사용 정책들, 스토리지 매핑, 또는 다른 데이터가 일부 실시예들에서 새로운 구성을 반영하도록 업데이트될 수 있다.
도 6에 관해서 상기에서 설명된 기술들은 추천된 변화들을 수행하기 위해 데이터 볼륨들의 그룹들을 평가하기 위한 제어 평면 또는 다른 스토리지 서비스 관리 시스템의 일부로서 수행될 수 있다. 예를 들어, 많은 상이한 클라이언트들 또는 유저 계정들을 위한 데이터 볼륨들은 상이한 구성이 데이터 볼륨들의 비용을 낮출 수 있는지를 (예를 들어, 성능을 낮추지 않고서) 결정하기 위해서 제어 평면에 의해 주기적으로 평가될 수 있다. 만약 그렇다면, 제어 평면은 데이터 볼륨들의 그룹에 대한 비용 절감들을 달성하기 위해서 데이터 볼륨들의 그룹을 재구성할 수 있다.
도 7은 일부 실시예들에 따른 구성 권고를 결정하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. (710)에 표시된 대로, 데이터 볼륨에 대한 최적화 목표들이 식별될 수 있다. 최적화 목표들은 일부 실시예들에서 데이터 볼륨의 유저 또는 클라이언트에 의해 명백하게 정의되거나 또는 설정될 수 있다. 예를 들어, 비용 개선들이 데이터 볼륨에 대하여 식별된 때 데이터 볼륨은 자동화된 구성이 인가될 수 있다. 유사하게, 데이터 볼륨은 추천들의 통지 수신시에 유저가 명백하게 인가 또는 거절할 수 있는 성능 개선들을 고려하기 위해 식별될 수 있다. 적어도 일부 실시예들에서, 다수의 목표들이 식별될 수 있다(예를 들어, 비용, 성능, 및 비용 및 성능 둘 모두).
(720,730), 및 (740)에 표시된 대로 비용 최적화 목표들, 성능 최적화 목표들, 및 성능 및 비용을 개선하기 위한 최적화 목표들이 식별될 수 있다. (722,732), 및 (742)에 표시된 각각의 이들 목표들의 각각으로 데이터 볼륨을 개선하기 위한 데이터 볼륨 오퍼링들의 개별 결정들이 이루어질 수 있다. 각각의 상이한 최적화 목표들이 어떻게 도달될 수 있는지를 평가하기 위해 데이터 볼륨의 이력 클라이언트 사용 데이터가 분석될 수 있다. 예를 들어, 만약 데이터 볼륨에서 수행된 IOPS가 데이터 볼륨의 프로비저닝되는 액세스 용량을 완전히 사용하지 않았고 범용 데이터 볼륨을 포함하는 데이터 볼륨 오퍼링에 의해 제공되는 버스트 용량이 유사한 성능 경험을 제공하기에 충분하다는 것을 이력 클라이언트 사용 데이터가 표시하였다면 비용 최적화 목표는 프로비저닝되는 액세스 볼륨으로부터 범용 볼륨으로 볼륨 유형들을 바꾸는 것이 데이터 볼륨에 대한 액세스 용량에 어떤 영향도 없이 (또는 무시가능하게) 특정한 데이터의 양을 액세스 및 저장하는 비용을 낮출 수 있다는 것으로 인식될 수 있다. 비용 최적화 목표의 다른 예에서, 데이터 볼륨의 평가는 데이터가 데이터 볼륨의 성능에 어떤 영향도 없이 (또는 무시가능한) 데이터 볼륨에 대하여 더 낮은 비용들을 제공할 비용-효율적인 데이터 볼륨을 포함하는 데이터 볼륨 오퍼링에 대한 볼륨 유형으로 바꾸도록 그렇게 빈번하지 않게 액세스된다고 결정할 수 있다.
유사한 분석이 성능 목표들에 대하여 수행될 수 있다. 예를 들어, 비용-효율적인 데이터 볼륨 유형으로 구현된 데이터 볼륨의 이력 클라이언트 사용은 데이터 볼륨에 대한 더 나은 액세스를 제공할 범용 또는 프로비저닝되는 액세스 볼륨 유형을 포함하는 데이터 볼륨 오퍼링으로 바꾸는 것을 표시할 수 있다. 상기에서 언급한 바와 같이 일부 데이터 볼륨 오퍼링들은 데이터 볼륨에 대한 자원 할당 (설사 볼륨 유형에 대하여 바뀌지 않는다 할지라도)을 바꾸는 것을 수반할 수 있다. 예를 들어, 다른 성능 최적화 예에서, 데이터 볼륨에 대한 액세스가 액세스 신용 거래들의 부족동안에 쓰로틀된 것을 나타내는 클라이언트 사용 이력의 분석에 기초하여 버스트 액세스 신용거래들이 데이터 볼륨에 대한 신용거래 잔고에 추가되는 보충율(refill rate)을 증가시키기 위해 범용 볼륨의 스토리지 사이즈에 대한 추천된 증가가 결정될 수 있다.
일부 실시예들에서, (742)에 표시된 대로 성능 및 비용 둘 모두가 최적화될 수 있다 (비용 또는 성능에 대하여 개별적으로 최적화하는 것보다 상이한 데이터 볼륨 오퍼링들을 제공할 수 있다). 예를 들어, 이력 클라이언트 사용 데이터는 액세스에 제공되는 데이터 볼륨에 제공되는 액세스가 불충분한 (예를 들어, 충분한 IOPS가 아닌)것을 표시할 수 있다. 버스트 액세스 신용거래에 대하여 더 빠른 보충율을 제공하기 위해 데이터 볼륨의 스토리지 사이즈는 클 수 있지만, 그러나 스토리지 사이즈의 일부만이 실제로 사용된다. 이력 클라이언트 사용 데이터에 의해 표시된 IOPS 요건들을 충족시키기 위해 프로비저닝되는 많은 IOPS를 갖는 프로비저닝되는 액세스 볼륨으로서 더 작은 (및 더 값이 싼) 스토리지 사이즈를 갖는 데이터 볼륨을 구성하기 위한 데이터 볼륨 오퍼링이 식별될 수 있다.
적어도 일부 실시예들에서, 데이터 볼륨 오퍼링(들) (들)이 개선 임계값을 초과하는 구성 추천(들)로서 제공될 수 있다. 개선 임계값은 구성을 수행하는 비용 가치가 있는 이익의 일부 임계값을 충족시키지 않는 추천들을 배제시키기 위해 클라이언트 및/또는 스토리지 시스템에 의해 결정될 수 있다. 예를 들어, 스토리지 시스템은 무시할 수 있게 이로운 추천들이 제공되지 않고 및/또는 자동으로 수행되지 않고, 구성들을 수행하는 시스템 자원들을 낭비하는 것을 보장하는 임계값을 구현할 수 있다. 유사하게, 클라이언트들은 장점이 어떤 의미를 가질 때만 (예를 들어, 비용들의 어떤 양을 절약한다) 추천들을 수신하도록 선택할 수 있다.
(760)에 표시된 대로, 구성 추천(들) (760)의 통지가 제공될 수 있다. 도면들 4 및 5에 관해서 상기에서 논의된 바와 같이, 통지들은 클라이언트에 직접 발송된 API 포맷된 응답을 통하여 제공될 수 있다. 일부 실시예들에서, 추천 통지들, 예컨대 전자 메일 (이메일), 가청 메시지들 (예를 들어, 이동 전화로), 또는 SMS 또는 MMS 문자 메시지들을 제공하기 위해 대안적인 통신 프로토콜들 또는 기술들이 이용될 수 있다. 적어도 일부 실시예들에서, 그래픽 유저 인터페이스 통지가 제공될 수 있다. 통지는 그래픽 유저 인터페이스를 통하여 제공된 사이트 대시보드(dashboard), 메시지-보드, 또는 다른 통신 인터페이스에서 포스트(post)되거나 또는 디스프레이될 수 있다.
도 8은 일부 실시예들에 따른 데이터 볼륨들을 구성하기 위한 여러 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. 데이터 볼륨에 대한 허가된 구성 추천이 상기에서 논의된 다양한 기술들에 따라 결정될 수 있다. 데이터 볼륨을 구성하는 단계는 재구성된 데이터 볼륨을 호스트 하기 위한 성능 및 용량을 갖는 자원 호스트들을 식별하는 단계를 포함할 수 있다. (810)에 표시된 대로, 데이터 볼륨의 인가된 재구성을 위한 호스트 위치들이 일부 실시예들에서 식별될 수 있다. 예를 들어, 재구성된 데이터 볼륨을 호스트하기 위한 스토리지 용량 또는 액세스 용량 (예를 들어, IOPs)을 갖는 해당 자원 호스트들을 식별하기 위해 호스트 사용 데이터 및/또는 구성 데이터는 평가될 수 있다. 유사하게, 재구성된 데이터 볼륨을 제공하기 위한 하드웨어 (예를 들어, SSD들 또는 HDD들) 및/또는 소프트웨어를 갖는 호스트 위치들이 식별될 수 있다.
적어도 일부 실시예들에서, 제 1 결정은 (820)에 표시된 대로 현재 데이터 볼륨을 호스트하는 자원 호스트가 구성 후에 데이터 볼륨을 계속 호스트할 수 있는지 여부에 관하여 체크할 수 있다. 예를 들어, 만약 호스트가 SSD 배후 지원되는 스토리지를 구현하고, 구성 추천이 SSD 배후 지원되는 스토리지를 둘 모두 사용하는 볼륨 유형들간에 변화를 포함한다면, 그러면 호스트는 재구성 후에 데이터 볼륨을 호스트할 수 있다. (850)에 표시된 대로, 이런 시나리오들에서, 일부 실시예들에서 현재 호스트(들)은 데이터 볼륨을 재구성하기 위해 업데이트될 수 있다. 예를 들어, 데이터 볼륨들이 어떻게 호스트(들)에서 구현되는지를 제어하는 메타데이터, 액세스 또는 사용 정책들, 스토리지 매핑, 또는 다른 데이터가 새로운 구성 (예를 들어, 스토리지 사이즈를 증가/감소시키는 것, IOPs를 증가/감소시키는 것, 등)을 반영하도록 업데이트될 수 있다.
만약, (820)으로부터 긍정적인 출구에 의해 표시된 대로, 데이터 볼륨이 이동될 것이라면, 그러면 (830)에 표시된 대로 식별된 호스트 위치들에서 데이터 볼륨을 재배치하기 위해 마이그레이션 동작(들)이 개시될 수 있다. 다양한 실시예들에서, 엘리먼트 (850)에 관해서 상기에서 논의된 바와 같이, 새로운 구성에서 데이터 볼륨을 구현하도록 식별된 호스트 위치들이 구성될 수 있다 (예를 들어, 메타데이터, 액세스 또는 사용 정책들, 스토리지 매핑, 또는 데이터 볼륨들이 어떻게 구현되는지를 제어하는 다른 데이터 업데이팅). 마이그레이션 동작은 일부 실시예들에서, 데이터 볼륨을 목적지 자원 호스트로 전송할 것을 현재 자원 호스트에 지시함으로써 수행될 수 있다. 일부 실시예들에서, 중개자, 예컨대 마이그레이션 워커 태스크(migration worker task) 또는 노드가 자원을 목적지 자원 호스트에 발송하기 전에 자원을 보내고 및/또는 수신할 수 있다. 일부 실시예들에서 다수의 복제본들 또는 복사본들 (예를 들어, 마스터 및 슬레이브(들))을 갖는 데이터 볼륨을 이동시키는 다수의 마이그레이션 동작들이 수행될 수 있다. 마이그레이션 동작들은 데이터 볼륨의 클라이언트 사용을 방해하거나 또는 영향을 미치지 않는 방식으로 수행될 수 있다. 예를 들어, 마이그레이션 동작들이 완료되지 않는 동안, 데이터 볼륨에 대한 액세스는 데이터 볼륨의 현재 구성에 따라 계속해서 제공될 수 있다. 마이그레이션 동작들의 완료시에, 다양한 실시예들에서 재구성이 완료된 것을 나타내는 통지가 (860)에 표시된 대로 발송될 수 있다.
본 개시의 실시예들은 이하의 항목들을 고려하여 설명될 수 있다:
1. 네트워크기반, 블럭기반의 스토리지 서비스에 있어서,
상기 블럭기반의 스토리지 서비스의 복수의 클라이언트들을 위한 복수의 데이터 볼륨들을 저장하도록 구성된 하나 이상의 스토리지 노드들로서, 상기 복수의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨은 상기 복수의 데이터 볼륨들 중 다른 데이터 볼륨과 같은 스토리지 노드상에 저장되는, 상기 하나 이상의 스토리지 노드들;
상기 스토리지 시스템을 위한 구성 관리기로서:
상기 데이터 볼륨들 중 소정의 데이터 볼륨에 대하여:
상기 데이터 볼륨의 클라이언트 사용을 추적하고;
적어도 부분적으로, 상기 데이터 볼륨의 클라이언트 사용에 기초하여 상기 블럭기반의 스토리지 서비스의 하나 이상의 데이터 볼륨 오퍼링들에 따라 상기 데이터 볼륨을 재구성하기 위한 하나 이상의 구성 추천(configuration recommendation)들을 결정하고;
상기 하나 이상의 구성 추천들을 상기 클라이언트에 제공하고; 상기 구성 추천들 중 하나의 구성 추천을 수행하기 위해 클라이언트 인증을 수신하고; 및
상기 인가된 구성 추천에 따른 상기 데이터 볼륨의 구성을 지시하여 상기 데이터 볼륨의 후속 사용이 상기 재구성된 데이터 볼륨에 따라 제공되도록 구성되는, 상기 구성 관리기를 포함한다.
2. 항목 1의 시스템에 있어서, 상기 데이터 볼륨을 재구성하기 위한 상기 하나 이상의 구성 추천들을 결정하기 위해, 상기 구성 관리기는: 상기 데이터 볼륨에 대한 하나 이상의 최적화 목표들을 식별하고,
상기 최적화 목표들은 :
성능 최적화 목표; 또는
비용 최적화 목표; 중 적어도 하나를 포함하고,
상기 구성 추천들로서 제공하는 상기 최적화 목표들에 대하여 상기 데이터 볼륨을 개선시키는 상기 하나 이상의 데이터 볼륨 오퍼링들(offering)을 결정하도록 구성된다.
3.항목 1의 시스템에 있어서, 상기 인가된 구성 추천에 따라 상기 데이터 볼륨 구성을 지시하기 위해서, 상기 구성 관리기는 상기 인가된 구성 추천을 제공하는 것이 가능한 하나 이상의 상이한 자원 호스트들에 상기 데이터 볼륨을 재배치하는 하나 이상의 마이그레이션 동작들을 개시하도록 구성된다.
4. 항목 1의 시스템에 있어서,
상기 하나 이상의 구성 추천들은 그래픽 유저 인터페이스를 통하여 상기 클라이언트에 제공되고; 및
상기 하나의 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하기 위해서, 상기 구성 관리기는 상기 클라이언트로부터 상기 그래픽 유저 인터페이스를 통하여 상기 하나의 구성 추천의 표시를 수신한다.
5. 방법에 있어서,
하나 이상의 컴퓨팅 디바이스들에 의해,
적어도 부분적으로, 데이터 볼륨의 이력 클라이언트 사용에 기초하여 블럭기반의 스토리지 서비스의 하나 이상의 데이터 볼륨 오퍼링들에 따라 상기 블럭기반의 스토리지 서비스내 클라이언트를 위하여 호스트되는 상기 데이터 볼륨을 재구성하기 위한 하나 이상의 구성 추천(configuration recommendation)들을 결정하는 단계;
상기 구성 추천들 중 하나의 구성 추천을 수행하기 위해 클라이언트 인증을 감지하는 단계; 및
상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계로서, 상기 데이터 볼륨의 후속 사용이 상기 재구성된 데이터 볼륨에 따라 제공되는, 상기 데이터 볼륨을 구성하는 단계를 수행하는 것을 포함한다.
6. 항목 5의 방법에 있어서,
상기 방법은 상기 하나 이상의 구성 추천들을 상기 클라이언트에 제공하는 단계를 더 포함하고; 및
상기 하나의 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하는 단계는 상기 클라이언트로부터 상기 하나의 구성 추천의 표시를 수신하는 단계를 포함한다.
7. 항목 6의 방법에 있어서,
상기 하나 이상의 구성 추천들은 그래픽 유저 인터페이스를 통하여 상기 클라이언트에 제공되고, 및 수신된 상기 표시는 상기 그래픽 유저 인터페이스의 유저 인터페이스 엘리먼트의 선택을 갖고; 및
상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계는 상기 그래픽 유저 인터페이스의 상기 유저 인터페이스 엘리먼트의 선택에 응답하여 수행된다.
8. 항목 5의 방법에 있어서,
상기 데이터 볼륨에 대한 추천 이벤트를 감지하는 단계;를 더 포함하고, 및
상기 구성 추천들을 결정하는 단계는 상기 추천 이벤트 감지에 응답하여 수행된다.
9. 항목 5의 방법에 있어서, 상기 데이터 볼륨을 재구성하기 위한 상기 하나 이상의 구성 추천들을 결정하는 단계는 :
상기 데이터 볼륨에 대한 하나 이상의 최적화 목표들을 식별하는 단계로서, 상기 최적화 목표들 중 적어도 하나는 성능 최적화 목표인, 상기 식별하는 단계; 및
상기 최적화 목표들에 대하여 상기 데이터 볼륨을 개선시키는 상기 하나 이상의 데이터 볼륨 오퍼링들(offering)을 결정하는 단계를 포함한다.
10. 항목 5의 방법에 있어서, 상기 인가된 구성 추천은 상기 데이터 볼륨을 상이한 데이터 볼륨 유형으로 바꾸는 것을 포함한다.
11. 항목 5의 방법에 있어서, 상기 인가된 구성 추천은 상기 데이터 볼륨에 대한 하나 이상의 자원 할당들을 바꾸는 것을 포함한다.
12. 항목 5의 방법에 있어서, 상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계는 상기 인가된 구성 추천을 제공하는 것이 가능한 하나 이상의 상이한 자원 호스트들에 상기 데이터 볼륨을 재배치하는 하나 이상의 마이그레이션 동작들을 수행하는 단계를 포함한다.
13. 항목 5의 방법에 있어서, 상기 블럭기반의 스토리지 서비스는 제공자 네트워크(provider network)의 일부로서 구현되고, 상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계는 상기 제공자 네트워크의 일부로서 구현된 다른 스토리지 서비스에 상기 데이터 볼륨을 마이그레이션하는 단계(migrating)를 포함한다.
14. 프로그램 명령들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로그램 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하나 이상의 컴퓨팅 디바이스들로 하여금:
블럭기반의 스토리지 서비스에 클라이언트를 위하여 호스트되는 데이터 볼륨의 클라이언트 사용을 모니터링하고;
적어도 부분적으로, 상기 데이터 볼륨의 클라이언트 사용에 기초하여 상기 블럭기반의 스토리지 서비스의 하나 이상의 데이터 볼륨 오퍼링들에 따라 상기 데이터 볼륨을 재구성하기 위한 하나 이상의 구성 추천(configuration recommendation)들을 결정하는 단계;
상기 구성 추천들 중 하나의 구성 추천을 수행하기 위해 클라이언트 인증을 감지하는 단계; 및
상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계로서, 상기 데이터 볼륨의 후속 사용이 상기 재구성된 데이터 볼륨에 따라 제공되는, 상기 데이터 볼륨을 구성하는 단계를 구현하게 한다.
15. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서,
상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 클라이언트에 상기 하나 이상의 구성 추천들을 제공하는 단계를 더 구현하게 하고; 및
상기 하나의 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 클라이언트로부터 상기 하나의 구성 추천의 표시를 수신하는 단계를 구현하게 한다.
16. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 데이터 볼륨을 재구성하기 위해 상기 하나 이상의 구성 추천들을 결정하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
상기 데이터 볼륨에 대한 하나 이상의 최적화 목표들을 식별하는 단계로서, 상기 최적화 목표들 중 적어도 하나는 비용 최적화 목표인, 상기 식별하는 단계; 및
상기 최적화 목표들에 대하여 상기 데이터 볼륨을 개선시키는 상기 하나 이상의 데이터 볼륨 오퍼링들(offering)을 결정하는 단계를 구현하게 한다.
17. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 데이터 볼륨에 대한 추천 이벤트를 감지하는 단계;를 구현하게 하고, 및
상기 구성 추천들을 결정하는 단계는 상기 추천 이벤트 감지에 응답하여 수행된다.
18. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 인가된 구성 추천에 따라 상기 데이터 볼륨을 구성하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 재구성된 데이터 볼륨을 제공하기 위해 상기 데이터 볼륨의 하나 이상의 호스트들을 업데이트하는 단계를 구현하게 한다.
19. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 데이터 볼륨의 구성 완료시에, 상기 데이터 볼륨의 구성이 완료된 것을 나타내는 통지를 상기 클라이언트에 제공하는 단계를 구현하게 한다.
20. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서,
상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 그래픽 유저 인터페이스를 통하여 상기 하나 이상의 구성 추천들을 상기 클라이언트에 제공하는 단계를 추가로 구현하게 하고; 및
상기 하나의 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 그래픽 유저 인터페이스를 통하여 상기 클라이언트로부터 상기 하나의 구성 추천의 표시를 수신하는 단계를 구현하게 한다.
다양한 실시예들에서 본 출원에서 설명된 방법들은 하드웨어 및 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 예를 들어, 일 실시예에서, 방법들은 프로세서들에 결합된 컴퓨터-판독가능한 스토리지 매체상에 저장된 프로그램 명령들을 실행시키는 하나 이상의 프로세서들을 포함하는 컴퓨터 시스템 (예를 들어, 도 9에서의 컴퓨터 시스템)에 의해 구현될 수 있다. 프로그램 명령들은 본 출원에서 설명된 기능을 구현하도록 구성될 수 있다 (예를 들어, 다양한 서버들, 자원 호스트들, 제어 평면들, 관리기들 및/또는 다른 컴포넌트들의 기능, 예컨대 본 출원에서 설명된 블럭기반의 스토리지 서비스를 구현하는 것들). 도면들에 예시되며 본 출원에서 설명된 다양한 방법들은 방법들의 예시적인 실시예들을 나타낸다. 임의의 방법의 순서는 변경될 수 있으며, 다양한 요소들이 부가되고, 재순서화되고, 조합되고, 생략되고, 수정될 수 있다.
본 출원에서 설명된 데이터 볼륨들의 동적 구성의 실시예들은 다양한 다른 디바이스들과 상호 작용할 수 있는 하나 이상의 컴퓨터 시스템들상에서 실행될 수 있다. 도 9는 다양한 실시예들에 따른 예제 컴퓨터 시스템을 예시하는 블럭 다이어그램이다. 예를 들어, 상이한 실시예들에서 컴퓨터 시스템 (1000)은 컴퓨팅 클러스터, 데이터 저장소들, 및/또는 클라이언트의 스토리지 및/또는 컴퓨팅 노드들을 구현하도록 구성될 수 있다. 컴퓨터 시스템 (1000)은 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스, 애플리케이션 서버, 스토리지 디바이스, 전화기, 모바일 전화기, 또는 일반적 컴퓨팅 디바이스의 유형을 포함하는 임의의 다양한 유형들의 디바이스들일 수 있지만 이에 한정되는 것을 아니다.
컴퓨터 시스템 (1000)은 입력/출력 (I/O) 인터페이스 (1030)을 통하여 시스템 메모리 (1020)에 결합된 하나 이상의 프로세서들 (1010) (단일 또는 멀티-스레드일 수 있는 다수의 코어들을 포함할 수 있는 임의의 것)을 포함한다. 컴퓨터 시스템 (1000)은 I/O 인터페이스 (1030)에 결합된 네트워크 인터페이스 (1040)를 더 포함한다. 다양한 실시예들에서, 컴퓨터 시스템 (1000)은 하나의 프로세서 (1010)을 포함하는 유니프로세서 시스템, 또는 몇몇의 프로세서들 (1010) (예를 들어, 두개, 네개, 여덟개, 또는 다른 적절한 수)을 포함하는 멀티프로세서 시스템일 수 있다. 프로세서들(1010)은 명령들을 실행할 수 있는 임의의 적절한 프로세서일 수 있다. 예를 들면, 다양한 실시예들에서, 프로세서들(1010)은 x86, PowerPC, SPARC, 또는 MIPS ISA들, 또는 임의의 다른 적절한 ISA와 같은, 다양한 명령 세트 아키텍처들(ISA들) 중 임의의 것을 구현한 범용 또는 내장 프로세서들일 수 있다. 다중프로세서 시스템들에서, 프로세서들(1010)의 각각은, 일반적으로, 반드시는 아니지만, 동일한 ISA를 구현할 수 있다. 컴퓨터 시스템 (1000)는 또한 통신 네트워크 (예를들어, 인터넷, LAN, 등)상에서 다른 시스템들 및/또는 컴포넌트들과 통신하는 하나 이상의 네트워크 통신 디바이스들 (예를 들어, 네트워크 인터페이스 (1040))를 포함한다.
예시된 실시예에서, 컴퓨터 시스템 (1000)은 또한 하나 이상의 영구 스토리지 디바이스들 (1060) 및/또는 하나 이상의 I/O 디바이스들 (1080)을 포함한다. 다양한 실시예들에서, 지속성 스토리지 디바이스들 (1060)은 디스크 드라이브들, 테이프 드라이브들, 고체 상태 메모리, 다른 대용량 저장 디바이스들, 블럭기반 스토리지 디바이스들, 또는 임의의 다른 지속성 스토리지 디바이스에 해당할 수 있다. 컴퓨터 시스템 (1000) (또는 컴퓨터 시스템상에서 동작하는 분배 애플리케이션 또는 운영 체제)은 원하는 때 영구 스토리지 디바이스들 (1060)에 명령들 및/또는 데이터를 저장할 수 있고 요구될 때 저장된 명령 및/또는 데이터를 인출할 수 있다. 예를 들어, 일부 실시예들에서, 컴퓨터 시스템 (1000)은 스토리지 시스템 서버 노드를 호스트 할 수 있고, 영구 스토리지 (1060)는 서버 노드에 부착된 SSD들을 포함할 수 있다.
컴퓨터 시스템 (1000)은 프로세서(들) (1010)에 의해 액세스 가능한 명령들 및 데이터를 저장하도록 구성된 하나 이상의 시스템 메모리들 (1020)을 포함한다. 다양한 실시예들에서, 시스템 메모리들 (1020)은 임의의 적절한 메모리 기술, (예를 들어, 하나 이상의 캐시, 정적 랜덤 액세스 메모리 (SRAM), DRAM, RDRAM, EDO RAM, DDR 10 RAM, 동기식 동적 RAM (SDRAM), 램버스(Rambus) RAM, EEPROM, 비-휘발성/플래시-유형 메모리, 또는 임의의 다른 유형의 메모리)을 이용하여 구현될 수 있다. 시스템 메모리 (1020)는 본 출원에서 설명된 방법들 및 기술들을 구현하기 위해 프로세서(들) (1010)에 의해 실행 가능한 프로그램 명령들 (1025)을 수용할 수 있다. 다양한 실시예들에서, 프로그램 명령들 (1025)은 플랫폼 고유의 바이너리, 임의의 기계 번역 언어로 예컨대 JavaTM 바이트-코드로, 또는 임의의 다른 언어로 예컨대 C/C++, JavaTM, 등., 또는 그것의 임의 조합으로 인코딩될 수 있다. 예를 들어, 예시된 실시예에서, 프로그램 명령들 (1025)은 상이한 실시예들에서 자원 호스트의 기능을 구현하기위해 실행가능한 프로그램 명령들을 포함한다. 일부 실시예들에서, 프로그램 명령들 (1025)은 다수의 개별 클라이언트들, 노드들, 및/또는 다른 컴포넌트들을 구현할 수 있다.
일부 실시예들에서, 프로그램 명령들 (1025)은 임의의 다양한 운영 체제들, 예컨대 UNIX, 리눅스, 솔라리스(Solaris) TM, MacOSTM, 윈도우들TM, 등일 수 있는 운영 체제 (미도시)을 구현하기 위해 실행 가능한 명령들을 포함할 수 있다. 임의 또는 전부의 프로그램 명령들 (1025)은 다양한 실시예들에 따라 프로세스를 수행하는 컴퓨터 시스템 (또는 다른 전자 디바이스들)을 프로그램하기 위해 사용될 수 있는 명령들을 그 위에 저장한 비-일시적 컴퓨터-판독가능한 스토리지 매체를 포함할 수 있는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있다. 비-일시적 컴퓨터-판독가능한 스토리지 매체는 기계 (예를 들어, 컴퓨터)에 의해 판독가능한 형태(예를 들어, 소프트웨어, 프로세싱 애플리케이션)로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 개괄적으로 말해서, 비-일시적 컴퓨터-액세스 가능한 매체는 I/O 인터페이스 (1030)를 통하여 컴퓨터 시스템 (1000)에 결합된 컴퓨터-판독가능한 스토리지 매체 또는 메모리 매체들 예컨대 자기 또는 광 매체, 예를 들어, 디스크 또는 DVD/CD-ROM를 포함할 수 있다. 비-일시적 컴퓨터-판독가능한 스토리지 매체는 시스템 메모리(1020) 또는 다른 유형의 메모리로서 컴퓨터 시스템 (1000)의 일부 실시예들에 포함될 수 있는 RAM (예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM, 등), ROM, 등과 같은 임의의 휘발성 또는 비-휘발성 매체들을 또한 포함할 수 있다. 다른 실시예들에서, 프로그램 명령들은 네트워크 인터페이스 (1040)를 통하여 구현될 수 있는 것과 같은 통신 매체 예컨대 네트워크 및/또는 무선 링크를 통하여 전송되는 광, 음향 또는 다른 형태의 전파 신호 (예를 들어, 반송파들, 적외선 신호들, 디지털 신호들, 등)를 이용하여 통신될 수 있다.
일부 실시예들에서, 시스템 메모리 (1020)는 본 출원에서 설명된 것처럼 구성될 수 있는 데이터 저장소 (1045)를 포함할 수 있다. 일반적으로, 시스템 메모리 (1020) (예를 들어, 시스템 메모리 (1020)내 데이터 저장소 (1045)), 영구 스토리지 (1060), 및/또는 원격 스토리지 (1070)는 데이터 블럭들, 데이터 블럭들의 복제본들, 데이터 블럭들 및/또는 그것들의 상태와 관련된 메타데이터, 구성 정보, 및/또는 본 출원에서 설명된 방법들 및 기술들을 구현하는데 인에이블한 임의의 다른 정보를 저장할 수 있다.
일 실시예에서, I/O 인터페이스 (1030)는 프로세서 (1010), 시스템 메모리 (1020) 및 스루네트워크 인터페이스 (1040) 또는 다른 주변기기 인터페이스들을 포함하는 시스템내 임의의 주변 디바이스들 사이에 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예들에서, I/O 인터페이스(1030)는 하나의 구성요소(예로서, 시스템 메모리(1020))에서 다른 구성요소(예로서, 프로세서(1010))에 의한 사용에 적합한 포맷으로 데이터 신호들을 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환들을 수행할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(1030)는 예를 들면, 주변 구성요소 상호 연결(PCI) 버스 표준 또는 범용 직렬 버스(USB) 표준의 변형과 같은, 다양한 유형들의 주변 버스들을 통해 접속된 디바이스들에 대한 지원을 포함할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(1030)의 기능은 예를 들면, 노스 브리지 및 사우스 브리지와 같은, 둘 이상의 별개의 구성요소들로 분리될 수 있다. 또한, 몇몇 실시예들에서, 시스템 메모리(1020)로의 인터페이스와 같은, I/O 인터페이스(1030)의 기능 중 일부 또는 모두는 프로세서(1010)로 직접 통합될 수 있다.
네트워크 인터페이스 (1040)는 데이터가 컴퓨터 시스템 (1000) 및 예를 들어 다른 컴퓨터 시스템들 (1090)과 같은 네트워크에 부착된 다른 디바이스들 간에 교환되는 것을 허용하도록 구성될 수 있다. 추가하여, 네트워크 인터페이스 (1040)는 컴퓨터 시스템 (1000) 및 다양한 I/O 디바이스들 (1050) 및/또는 원격 스토리지 (1070)간에 통신을 허용하도록 구성될 수 있다. 입력/출력 디바이스들 (1050)은 일부 실시예들에서, 하나 이상의 디스플레이 단말들, 키보드들, 키패드들, 터치패드들, 스캐닝 디바이스들, 음성 또는 광 인식 디바이스들, 또는 하나 이상의 컴퓨터 시스템들 (1000)에 의해 데이터를 입력하거나 또는 인출하기에 적절한 임의의 다른 디바이스들을 포함할 수 있다. 다수의 입력/출력 디바이스들 (1050)은 컴퓨터 시스템 (1000)내에 존재할 수 있거나 또는 컴퓨터 시스템 (1000)을 포함하는 분배 시스템의 다양한 노드들상에 분포될 수 있다. 일부 실시예들에서, 유사한 입력/출력 디바이스들은 컴퓨터 시스템 (1000)과 분리될 수 있고 유선 또는 무선 연결을 통하여, 예컨대 네트워크 인터페이스 (1040)상에서 컴퓨터 시스템 (1000)을 포함하는 분배 시스템의 하나 이상의 노드들과 상호 작용할 수 있다. 네트워크 인터페이스 (1040)는 공통으로 하나 이상의 무선 네트워킹 프로토콜들 (예를 들어, Wi-Fi/IEEE 802.11, 또는 다른 무선 네트워킹 표준)을 지원할 수 있다. 그러나, 다양한 실시예들에서, 네트워크 인터페이스(1040)는 예를 들면, 이더넷 네트워크의 유형들과 같은, 임의의 적절한 유선 또는 무선 일반 데이터 네트워크들을 통해 통신을 지원할 수 있다. 부가적으로, 네트워크 인터페이스(1040)는 파이버 채널 SAN들과 같은 저장 영역 네트워크들을 통해, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해, 아날로그 음성 네트워크들 또는 디지털 파이버 통신들 네트워크들과 같은 전기통신들/전화 네트워크들을 통해 통신을 지원할 수 있다. 다양한 실시예들에서, 컴퓨터 시스템 (1000)은 도 9에 예시된 것들보다 더 많거나, 더 적거나 또는 상이한 컴포넌트들 (예를 들어, 디스플레이들, 비디오 카드들, 오디오 카드들, 주변 디바이스들, 다른 네트워크 인터페이스들 예컨대 ATM 인터페이스, 이더넷 인터페이스, 프레임 릴레이 인터페이스, 등)을 포함할 수 있다.
본 출원에서 설명된 임의의 분배 시스템 실시예들, 또는 임의의 그것들의 컴포넌트들이, 하나 이상의 네트워크기반 서비스들로 구현될 수 있다는 것에 유의한다. 예를 들어, 컴퓨팅 서비스내 컴퓨팅 클러스터는 네트워크기반 서비스들의 컴퓨팅 클러스터로 본 출원에서 설명된 분배 컴퓨팅 시스템들을 사용하는 컴퓨팅 및/또는 스토리지 서비스들 및/또는 다른 유형들의 서비스들을 제공할 수 있다. 일부 실시예들에서, 네트워크기반 서비스는 네트워크상에서 상호 운용 가능한 기계-대-기계 상호작용을 지원하도록 디자인된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 네트워크기반 서비스는 WSDL(Web Services Description Language)와 같은 기계-프로세스가능한 포맷으로 설명되는 인터페이스를 가질 수 있다. 다른 시스템들은 네트워크기반 서비스의 인터페이스의 설명에 의해 미리 규정된 방식에 네트워크기반 서비스와 상호 작용할 수 있다. 예를 들어, 네트워크기반 서비스는 다른 시스템들이 호출할 수 있는 다양한 동작들을 정의할 수 있고 그럼에도 불구하고 다양한 동작들을 요청할 때 다른 시스템들이 따를 것으로 예상될 수 있는 특정 애플리케이션 프로그래밍 인터페이스 (API)을 정의할 수 있다.
다양한 실시예들에서, 네트워크기반 서비스는 네트워크기반 서비스들 요청과 관련된 파라미터들 및/또는 데이터를 포함하는 메시지의 사용을 통하여 요청되거나 또는 호출될 수 있다. 이런 메시지는 특정 마크업 언어 예컨대 확장 마크업 언어 (XML)에 따라 포맷될 수 있고/있거나 프로토콜 예컨대 SOAP(Simple Object Access Protocol)을 이용하여 엔캡슐레이트(encapsulate)될 수 있다. 네트워크기반 서비스들 요청을 수행하기 위해서, 네트워크기반 서비스들 클라이언트는 요청을 포함하는 메시지를 조합할 수 있고 인터넷기반 애플리케이션 계층 전송 프로토콜 예컨대 하이퍼텍스트 전송 프로토콜 (HTTP)을 이용하여 네트워크기반 서비스에 해당하는 자체 어드레스를 가진 엔드 포인트 (예를 들어, URL(Uniform Resource Locator)로 메시지를 전송할 수 있다.
일부 실시예들에서, 네트워크기반 서비스들은 메시지기반의 기술들보다는 "RESTful"(Representational State Transfer) 기술들을 이용하여 구현될 수 있다. 예를 들어, REST를 따라 구현된 네트워크기반 서비스는 SOAP 메시지내에 엔캡슐레이트된 파라미터들보다 HTTP 방법 예컨대 PUT, GET, 또는 DELETE내에 포함된 파라미터들을 통하여 호출될 수 있다.
비록 실시예들은 상기에서 상당히 상세하게 설명되었지만, 상기의 개시가 완전히 이해된 후에 당해 기술분야의 통상의 기술자들에 명확해질 수 있는 많은 변형예들 및 수정예들이 이루어질 수 있다. 이하의 청구항들은 모든 이런 수정예들 및 변화예들을 포괄하는 것으로 해석되어서 상기 설명을 제한하는 의미보다는 예시적으로 간주되도록 의도된다.

Claims (15)

  1. 네트워크기반, 블럭기반의 스토리지 시스템으로서,
    제공자 네트워크의 블럭기반의 스토리지 서비스의 복수의 클라이언트들을 위한 복수의 데이터 볼륨들을 저장하도록 구성된, 상기 제공자 네트워크 내의 상이한 네트워크 위치들에서의 복수의 스토리지 노드들 - 상기 복수의 데이터 볼륨들 중 적어도 하나는 상기 복수의 데이터 볼륨들 중 다른 하나와 동일한 스토리지 노드상에 저장되고, 상기 복수의 클라이언트들은 외부 네트워크를 통해 상기 블럭기반의 스토리지 시스템에 결합됨 -; 및
    상기 스토리지 시스템을 위한 구성 관리기
    를 포함하고, 상기 구성 관리기는:
    상기 데이터 볼륨들 중 소정의 데이터 볼륨에 대하여 - 상기 소정의 데이터 볼륨은 상기 제공자 네트워크의 가상 컴퓨팅 서비스가 제공하는 제각기의 가상 컴퓨팅 인스턴스를 통해 상기 복수의 클라이언트들 중 하나의 클라이언트에 매핑됨 -,
    상기 데이터 볼륨의 클라이언트 사용(client utilization)을 추적하고;
    상기 복수의 클라이언트들 중 상기 하나의 클라이언트에 의한 상기 데이터 볼륨의 클라이언트 사용에 적어도 부분적으로 기초하여 상기 블럭기반의 스토리지 서비스의 데이터 볼륨 오퍼링(offering)들에 따라 상기 데이터 볼륨을 재구성하기 위한 복수의 구성 추천(configuration recommendation)들을 결정하고 - 상기 구성 추천들은:
    하드 디스크 드라이브(HDD) 스토리지 또는 고체 상태 드라이브(SSD) 스토리지 중 하나를 사용하는 특정 데이터 볼륨 유형으로부터, HDD 스토리지 또는 SSD 스토리지 중 다른 하나를 사용하는 상이한 데이터 볼륨 유형으로 상기 데이터 볼륨을 재구성하기 위한 추천; 및
    증가된 스토리지 크기를 갖는 데이터 볼륨으로 변경하기 위한 추천 또는 더 낮은 네트워크 사용(network utilization)을 갖는 상이한 네트워크를 통해 액세스가능한 데이터 볼륨으로 변경하기 위한 추천 중 적어도 하나
    를 포함함 -;
    상기 복수의 구성 추천들을 상기 복수의 클라이언트들 중 상기 하나에 제공하고;
    상기 복수의 클라이언트들 중 상기 하나의 클라이언트에 의해 상기 복수의 구성 추천들로부터 선택되는 상기 구성 추천들 중 하나를 수행하기 위해 클라이언트 인증을 수신하고; 그리고
    상기 복수의 클라이언트들 중 상기 하나의 클라이언트에 의한 상기 데이터 볼륨의 후속 사용이 재구성된 데이터 볼륨에 따라 제공되도록, 상기 인증된 그리고 선택된 구성 추천에 따른 상기 데이터 볼륨의 구성을 지시 - 상기 데이터 볼륨의 재구성은:
    상기 인증된 그리고 선택된 구성 추천에 따른 새로운 구성을 제공할 수 있는 하나 이상의 상이한 호스트들에 상기 데이터 볼륨을 재배치하기 위한 하나 이상의 마이그레이션 동작들의 수행을 포함함 -
    하도록 구성되는, 시스템.
  2. 청구항 1에 있어서, 상기 데이터 볼륨을 재구성하기 위한 상기 구성 추천을 결정하기 위해, 상기 구성 관리기는:
    상기 데이터 볼륨에 대한 하나 이상의 목표들을 식별하고 - 상기 목표들은 :
    성능 목표; 또는
    비용 목표
    중 적어도 하나를 포함함 -; 그리고
    상기 복수의 구성 추천들 중 적어도 하나가 상기 하나 이상의 목표들에 대하여 상기 데이터 볼륨을 개선시킨다고 결정하도록 구성된, 시스템.
  3. 삭제
  4. 청구항 1에 있어서,
    상기 복수의 구성 추천들은 그래픽 유저 인터페이스를 통하여 상기 복수의 클라이언트들 중 상기 하나의 클라이언트에 제공되고; 그리고
    상기 선택된 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하도록, 상기 구성 관리기는 상기 복수의 클라이언트들 중 상기 하나의 클라이언트로부터 상기 그래픽 유저 인터페이스를 통하여 상기 선택된 구성 추천의 인증의 표시를 수신하는, 시스템.
  5. 방법으로서,
    하나 이상의 컴퓨팅 디바이스들에 의해,
    블럭기반의 스토리지 서비스에서 복수의 클라이언트들 중 제각기의 클라이언트를 위하여 호스팅되는 데이터 볼륨을 재구성하기 위한 복수의 구성 추천들을, 상기 제각기의 클라이언트에 의한 상기 데이터 볼륨의 이력상의 클라이언트 사용(historical client utilization)에 적어도 부분적으로 기초하여 상기 블럭기반의 스토리지 서비스의 데이터 볼륨 오퍼링(offering)에 따라 결정하는 단계 - 상기 데이터 볼륨은 제공자 네트워크의 가상 컴퓨팅 서비스가 제공하는 제각기의 가상 컴퓨팅 인스턴스를 통해 상기 제각기의 클라이언트에 매핑되고, 상기 블럭기반의 스토리지는 상기 제공자 네트워크에 위치되고 상기 복수의 클라이언트들은 외부 네트워크를 통해 블럭기반의 스토리지 시스템에 결합되고, 상기 구성 추천들은:
    하드 디스크 드라이브(HDD) 스토리지 또는 고체 상태 드라이브(SSD) 스토리지 중 하나를 사용하는 특정 데이터 볼륨 유형으로부터, HDD 스토리지 또는 SSD 스토리지 중 다른 하나를 사용하는 상이한 데이터 볼륨 유형으로 상기 데이터 볼륨을 재구성하기 위한 추천; 및
    증가된 스토리지 크기를 갖는 데이터 볼륨으로 변경하기 위한 추천 또는 더 낮은 네트워크 사용(network utilization)을 갖는 상이한 네트워크를 통해 액세스가능한 데이터 볼륨으로 변경하기 위한 추천 중 적어도 하나
    를 포함함 -;
    상기 복수의 구성 추천들을 상기 제각기의 클라이언트에게 제공하는 단계;
    상기 복수의 구성 추천들 중 선택된 하나를 수행하기 위해 클라이언트 인증을 감지하는 단계 - 상기 선택된 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하는 단계는 상기 제각기의 클라이언트로부터 상기 선택된 구성 추천의 상기 클라이언트 인증의 표시를 수신하는 단계를 포함함 - ; 및
    상기 데이터 볼륨의 후속 사용이 재구성된 데이터 볼륨에 따라 제공되도록, 상기 감지된, 인증된, 그리고 선택된 구성 추천에 따라 상기 데이터 볼륨을 재구성하는 단계 - 상기 데이터 볼륨을 재구성하는 단계는:
    상기 인증된 그리고 선택된 구성 추천에 따른 새로운 구성을 제공할 수 있는 하나 이상의 상이한 호스트들에 상기 데이터 볼륨을 재배치하기 위한 하나 이상의 마이그레이션 동작들을 수행하는 단계를 포함함 -
    를 수행하는 것을 포함하는, 방법.
  6. 청구항 5에 있어서,
    상기 데이터 볼륨에 대한 추천 이벤트를 감지하는 단계를 더 포함하고,
    상기 복수의 구성 추천들을 결정하는 단계는 상기 추천 이벤트 감지에 응답하여 수행되는, 방법.
  7. 청구항 5에 있어서, 상기 데이터 볼륨을 재구성하기 위한 상기 복수의 구성 추천들을 결정하는 단계는:
    상기 데이터 볼륨에 대한 하나 이상의 목표들을 식별하는 단계 - 상기 목표들 중 적어도 하나는 성능 목표임 -; 및
    상기 데이터 볼륨 오퍼링들 중 하나 이상의 데이터 볼륨 오퍼링이 상기 하나 이상의 목표들에 대하여 상기 데이터 볼륨을 개선시킨다고 결정하는 단계
    를 포함하는, 방법.
  8. 청구항 5에 있어서, 상기 인증된 그리고 선택된 구성 추천은 상기 데이터 볼륨에 대한 하나 이상의 자원 할당들을 바꾸는 것을 포함하는, 방법.
  9. 청구항 5에 있어서, 상기 블럭기반의 스토리지 서비스는 상기 제공자 네트워크의 일부로서 구현되고, 상기 인증된 그리고 선택된 구성 추천에 따라 상기 데이터 볼륨을 재구성하는 단계는 상기 제공자 네트워크의 일부로서 구현된 다른 스토리지 서비스에 상기 데이터 볼륨을 마이그레이션하는 단계(migrating)를 포함하는, 방법.
  10. 프로그램 명령들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체로서, 상기 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스들에 의해 실행될 때 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
    블럭기반의 스토리지 서비스에서의 복수의 클라이언트들 중 제각기의 클라이언트를 위하여 호스팅되는 데이터 볼륨의 클라이언트 사용을 모니터링하는 단계 - 상기 데이터 볼륨은 제공자 네트워크의 가상 컴퓨팅 서비스가 제공하는 제각기의 가상 컴퓨팅 인스턴스를 통해 상기 제각기의 클라이언트에 매핑되고, 상기 블럭기반의 스토리지는 상기 제공자 네트워크에 위치되고 상기 복수의 클라이언트들은 외부 네트워크를 통해 블럭기반의 스토리지 시스템에 결합됨 -;
    상기 제각기의 클라이언트에 의한 상기 데이터 볼륨의 클라이언트 사용에 적어도 부분적으로 기초하여 상기 블럭기반의 스토리지 서비스의 데이터 볼륨 오퍼링들에 따라 상기 데이터 볼륨을 재구성하기 위한 복수의 구성 추천들을 결정하는 단계 - 상기 구성 추천들은:
    하드 디스크 드라이브(HDD) 스토리지 또는 고체 상태 드라이브(SSD) 스토리지 중 하나를 사용하는 특정 데이터 볼륨 유형으로부터, HDD 스토리지 또는 SSD 스토리지 중 다른 하나를 사용하는 상이한 데이터 볼륨 유형으로 상기 데이터 볼륨을 재구성하기 위한 추천; 및
    증가된 스토리지 크기를 갖는 데이터 볼륨으로 변경하기 위한 추천 또는 더 낮은 네트워크 사용(network utilization)을 갖는 상이한 네트워크를 통해 액세스가능한 데이터 볼륨으로 변경하기 위한 추천 중 적어도 하나
    를 포함함 -;
    상기 복수의 구성 추천들을 상기 제각기의 클라이언트에게 제공하는 단계;
    상기 복수의 구성 추천들 중 선택된 하나를 수행하기 위해 클라이언트 인증을 감지하는 단계 - 상기 선택된 구성 추천을 수행하기 위해 클라이언트 인증을 감지하는 단계는 상기 제각기의 클라이언트로부터 상기 선택된 구성 추천의 인증의 표시를 수신하는 단계를 포함함 - ; 및
    상기 데이터 볼륨의 후속 사용이 재구성된 데이터 볼륨에 따라 제공되도록, 상기 인증된 그리고 선택된 구성 추천에 따라 상기 데이터 볼륨을 재구성하는 단계 - 상기 데이터 볼륨을 재구성하는 단계는:
    상기 인증된 그리고 선택된 구성 추천에 따른 새로운 구성을 제공할 수 있는 하나 이상의 상이한 호스트들에 상기 데이터 볼륨을 재배치하기 위한 하나 이상의 마이그레이션 동작들을 수행하는 단계를 포함함 -
    를 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  11. 청구항 10에 있어서, 상기 데이터 볼륨을 재구성하기 위해 상기 제각기의 클라이언트에게 제공되는 상기 복수의 구성 추천들을 결정하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
    상기 데이터 볼륨에 대한 하나 이상의 목표들을 식별하는 단계로서, 상기 하나 이상의 목표들 중 적어도 하나는 비용 목표인, 상기 식별하는 단계; 및
    상기 데이터 볼륨 오퍼링들 중 적어도 하나가 상기 하나 이상의 목표들에 대하여 상기 데이터 볼륨을 개선시킨다고 결정하는 단계
    를 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  12. 청구항 10에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
    상기 데이터 볼륨에 대한 추천 이벤트를 감지하는 단계를 구현하게 하고; 그리고
    상기 복수의 구성 추천들을 결정하는 단계는 상기 추천 이벤트 감지에 응답하여 수행되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  13. 청구항 10에 있어서, 상기 인증된 그리고 선택된 구성 추천에 따라 상기 데이터 볼륨을 재구성하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 재구성된 데이터 볼륨을 제공하기 위해 상기 데이터 볼륨의 하나 이상의 호스트들을 업데이트하는 단계를 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  14. 청구항 10에 있어서,
    상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 그래픽 유저 인터페이스를 통하여 상기 복수의 구성 추천들을 상기 제각기의 클라이언트에 제공하는 단계를 추가로 구현하게 하고; 그리고
    상기 선택된 구성 추천을 수행하기 위해 상기 클라이언트 인증을 감지하는 단계에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 그래픽 유저 인터페이스를 통하여 상기 제각기의 클라이언트로부터 상기 선택된 구성 추천의 인증의 표시를 수신하는 단계를 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  15. 청구항 10에 있어서, 상기 인증된 그리고 선택된 구성 추천에 따라 상기 데이터 볼륨을 재구성하는 단계는 상기 데이터 볼륨을 상기 제공자 네트워크의 일부로서 구현되는 다른 스토리지 서비스로 마이그레이션하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
KR1020227002965A 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성 KR102624824B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/668,782 2015-03-25
US14/668,782 US9658785B2 (en) 2015-03-25 2015-03-25 Dynamic configuration of data volumes
PCT/US2016/024328 WO2016154587A1 (en) 2015-03-25 2016-03-25 Dynamic configuration of data volumes
KR1020217001652A KR20210008953A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217001652A Division KR20210008953A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성

Publications (2)

Publication Number Publication Date
KR20220018087A KR20220018087A (ko) 2022-02-14
KR102624824B1 true KR102624824B1 (ko) 2024-01-16

Family

ID=55745822

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217001652A KR20210008953A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성
KR1020177030330A KR20170129254A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성
KR1020227002965A KR102624824B1 (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217001652A KR20210008953A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성
KR1020177030330A KR20170129254A (ko) 2015-03-25 2016-03-25 데이터 볼륨들의 동적 구성

Country Status (9)

Country Link
US (2) US9658785B2 (ko)
EP (1) EP3274804A1 (ko)
JP (2) JP6840125B2 (ko)
KR (3) KR20210008953A (ko)
CN (1) CN107408020B (ko)
AU (2) AU2016238240B2 (ko)
CA (1) CA2980171C (ko)
SG (1) SG11201707642YA (ko)
WO (1) WO2016154587A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9658785B2 (en) 2015-03-25 2017-05-23 Amazon Technologies, Inc. Dynamic configuration of data volumes
US10200261B2 (en) * 2015-04-30 2019-02-05 Microsoft Technology Licensing, Llc Multiple-computing-node system job node selection
US10025519B1 (en) * 2015-09-25 2018-07-17 EMC IP Holding Company LLC Data-driven online storage reconfiguration
US20170243268A1 (en) * 2016-02-23 2017-08-24 International Business Machines Corporation Method and system for determining an optimized service package model for market participation
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10567222B2 (en) * 2016-08-23 2020-02-18 Cisco Technology, Inc. Recommending configurations for client networking environment based on aggregated cloud managed information
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN108124073A (zh) * 2016-11-30 2018-06-05 京瓷办公信息系统株式会社 信息处理系统
US10474366B2 (en) * 2016-12-28 2019-11-12 Sandisk Technologies Llc Non-volatile storage system with in-drive data analytics
US12056383B2 (en) 2017-03-10 2024-08-06 Pure Storage, Inc. Edge management service
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US12086651B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Migrating workloads using active disaster recovery
US12061822B1 (en) * 2017-06-12 2024-08-13 Pure Storage, Inc. Utilizing volume-level policies in a storage system
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US12086650B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Workload placement based on carbon emissions
US10592362B2 (en) * 2017-11-30 2020-03-17 International Business Machines Corporation Modifying journaling associated with data mirroring within a storage system
US10795598B1 (en) * 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
US11567664B2 (en) 2018-04-16 2023-01-31 International Business Machines Corporation Distributing data across a mixed data storage center
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US10712958B2 (en) 2018-07-24 2020-07-14 Accenture Global Solutions Limited Elastic storage volume type selection and optimization engine for public cloud environments
EP3599547B1 (en) * 2018-07-24 2023-07-12 Accenture Global Solutions Limited Elastic storage volume type selection and optimization engine for public cloud environments
US10855556B2 (en) 2018-07-25 2020-12-01 Netapp, Inc. Methods for facilitating adaptive quality of service in storage networks and devices thereof
US10728255B2 (en) * 2018-09-24 2020-07-28 Nutanix, Inc. System and method for protection of entities across availability zones
US10963189B1 (en) * 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
CN111221620B (zh) * 2018-11-27 2024-02-09 华为技术有限公司 存储方法、装置及存储介质
US11379266B2 (en) 2019-09-10 2022-07-05 Salesforce.Com, Inc. Automatically identifying and right sizing instances
CN111736968B (zh) * 2020-05-27 2023-08-22 华南理工大学 配电系统云数据中心计算资源优化配置方法、装置、设备及介质
EP3929718A1 (en) * 2020-06-26 2021-12-29 Accenture Global Solutions Limited System of selecting and optimizing resources for cloud block storage volume
US11592989B1 (en) * 2020-11-25 2023-02-28 Amazon Technologies, Inc. Dynamically modifying block-storage volumes using forecasted metrics
US11941454B1 (en) 2020-12-08 2024-03-26 Amazon Technologies, Inc. Dynamically modifying block-storage volumes using workload classifications
JP7563993B2 (ja) 2021-01-13 2024-10-08 日立ヴァンタラ株式会社 管理計算機及び管理計算機によるデータ管理方法
WO2023146237A1 (ko) * 2022-01-26 2023-08-03 (주)한국소프트웨어아이엔씨 지능형 데이터 관리 및 저장 장치 및 이를 이용한 지능형 데이터 관리 및 저장 방법
CN114936115A (zh) * 2022-05-24 2022-08-23 苏州浪潮智能科技有限公司 一种数据存储备份方法、装置、计算机设备和存储介质
US12073078B2 (en) * 2022-06-03 2024-08-27 Bank Of America Corporation Surge volume management

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895485B1 (en) 2000-12-07 2005-05-17 Lsi Logic Corporation Configuring and monitoring data volumes in a consolidated storage array using one storage array to configure the other storage arrays
US7343410B2 (en) 2001-06-28 2008-03-11 Finisar Corporation Automated creation of application data paths in storage area networks
US7447939B1 (en) 2003-02-28 2008-11-04 Sun Microsystems, Inc. Systems and methods for performing quiescence in a storage virtualization environment
US7065611B2 (en) * 2004-06-29 2006-06-20 Hitachi, Ltd. Method for controlling storage policy according to volume activity
US7428658B2 (en) 2004-10-26 2008-09-23 International Business Machines Corporation Checking storage reconfiguration
JP2008299559A (ja) * 2007-05-31 2008-12-11 Hitachi Ltd ストレージシステム及びストレージシステムにおけるデータ移行方法
US20100276826A1 (en) * 2007-09-21 2010-11-04 Hiroaki Takahata Process for producing retardation film
US8296514B2 (en) 2007-12-20 2012-10-23 International Business Machines Corporation Automated correction of contentious storage virtualization configurations
US8244868B2 (en) 2008-03-24 2012-08-14 International Business Machines Corporation Thin-provisioning adviser for storage devices
KR100963152B1 (ko) * 2008-08-28 2010-06-15 고려대학교 산학협력단 직접 메탄올 연료 전지용 Pt-Ru-Co-W 사성분 합금 촉매
US9207984B2 (en) * 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US8549224B1 (en) * 2009-12-16 2013-10-01 Emc Corporation Migration analyzer for hardware-based storage tiering
WO2012066671A1 (ja) * 2010-11-18 2012-05-24 株式会社日立製作所 計算機システムの管理装置及び管理方法
US8918613B2 (en) 2011-02-02 2014-12-23 Hitachi, Ltd. Storage apparatus and data management method for storage area allocation based on access frequency
US8577836B2 (en) 2011-03-07 2013-11-05 Infinidat Ltd. Method of migrating stored data and system thereof
EP2881864A4 (en) * 2012-11-07 2016-04-13 Hitachi Ltd COMPUTER SYSTEM, MEMORY MANAGEMENT COMPUTER AND MEMORY MANAGEMENT PROCESS
WO2014073024A1 (en) * 2012-11-09 2014-05-15 Hitachi, Ltd. Management computer, computer system, and instance management method
US9658785B2 (en) 2015-03-25 2017-05-23 Amazon Technologies, Inc. Dynamic configuration of data volumes

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2010-0077169호(2010.03.25.) 1부.*
미국공개특허 제2010-0250748호(2010.09.30.) 1부.*

Also Published As

Publication number Publication date
CA2980171A1 (en) 2016-09-29
CA2980171C (en) 2020-02-11
US20170255409A1 (en) 2017-09-07
US20160283139A1 (en) 2016-09-29
US9658785B2 (en) 2017-05-23
SG11201707642YA (en) 2017-10-30
JP6928055B2 (ja) 2021-09-01
AU2019213340A1 (en) 2019-08-29
CN107408020A (zh) 2017-11-28
WO2016154587A1 (en) 2016-09-29
KR20170129254A (ko) 2017-11-24
US9971531B2 (en) 2018-05-15
AU2016238240A1 (en) 2017-10-12
JP2018513510A (ja) 2018-05-24
KR20210008953A (ko) 2021-01-25
AU2016238240B2 (en) 2019-05-16
CN107408020B (zh) 2020-10-30
JP2020024733A (ja) 2020-02-13
EP3274804A1 (en) 2018-01-31
JP6840125B2 (ja) 2021-03-10
KR20220018087A (ko) 2022-02-14
AU2019213340B2 (en) 2021-02-18

Similar Documents

Publication Publication Date Title
KR102624824B1 (ko) 데이터 볼륨들의 동적 구성
US11290360B2 (en) Analyzing resource placement fragmentation for capacity planning
CA2978889C (en) Opportunistic resource migration to optimize resource placement
KR101920173B1 (ko) 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링
EP3117331B1 (en) Dynamically modifying durability properties for individual data volumes
US10057187B1 (en) Dynamic resource creation to connect client resources in a distributed system
AU2015229684A1 (en) Page cache write logging at block-based storage
US10616134B1 (en) Prioritizing resource hosts for resource placement
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10154091B1 (en) Deploying infrastructure units according to resource hosting constraints
US10776173B1 (en) Local placement of resource instances in a distributed system
CN116249976A (zh) 统一存储环境中的存储分层
US11336519B1 (en) Evaluating placement configurations for distributed resource placement
US10721181B1 (en) Network locality-based throttling for automated resource migration
US10708340B2 (en) Methods and systems for improving efficiency in data transfers

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant