KR20170077231A - 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링 - Google Patents

스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링 Download PDF

Info

Publication number
KR20170077231A
KR20170077231A KR1020177015062A KR20177015062A KR20170077231A KR 20170077231 A KR20170077231 A KR 20170077231A KR 1020177015062 A KR1020177015062 A KR 1020177015062A KR 20177015062 A KR20177015062 A KR 20177015062A KR 20170077231 A KR20170077231 A KR 20170077231A
Authority
KR
South Korea
Prior art keywords
storage
volume
storage volume
client
scaling
Prior art date
Application number
KR1020177015062A
Other languages
English (en)
Other versions
KR101920173B1 (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 KR20170077231A publication Critical patent/KR20170077231A/ko
Application granted granted Critical
Publication of KR101920173B1 publication Critical patent/KR101920173B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5051Service on demand, e.g. definition and deployment of services in real time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • H04L67/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Abstract

스토리지 클라이언트들에서 파일 시스템들을 위한 스토리지 볼륨들을 유지하는 네트워크-기반 데이터 저장소는 동적 스토리지 볼륨 스케일링을 구현할 수 있다. 스케일링 이벤트는 스토리지 클라이언트에서 마운트되고 파일 시스템을 위하여 구성되는 네트워크-기반 데이터 저장소에서 유지되는 스토리지 볼륨에 대한 지정된 스케일링 정책에 따라 감지될 수 있다. 적어도 일부 실시예들에서, 스토리지 볼륨에 대한 스케일링 정책은 스토리지 클라이언트로부터 수신될 수 있다. 스토리지 이벤트 감지에 응답하여, 스토리지 볼륨을 유지하는 스토리지는 스토리지 볼륨을 스케일링하기 위해 스케일링 정책에 따라 변경될 수 있다. 파일 시스템이 스케일링된 스토리지 볼륨을 활용할 수 있도록 스토리지 클라이언트에서 파일 시스템을 업데이트하기 위해 스케일링 이벤트의 표시가 스토리지 클라이언트로 발송될 수 있다.

Description

스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링{DYNAMIC SCALING OF STORAGE VOLUMES FOR STORAGE CLIENT FILE SYSTEMS}
네트워크들을 가로질러 하드웨어 자원들, 소프트웨어, 및 정보 스토리지의 가상화(virtualization)들을 동적으로 공유하기 위한 가상화들을 위한 최근 기술들에서의 혁신이 컴퓨팅의 신뢰성, 확장성, 및 비용 효율성을 증가시켰다. 보다 구체적으로, 가상화의 출현을 통하여 온 디멘드(on demand) 가상 컴퓨팅 자원들 및 스토리지를 제공하는 능력은 프로세싱 자원들 및 스토리지의 소비자들로 하여금 즉각적으로 인지된 컴퓨팅 및 스토리지 요구들에 응답하여 그것들의 컴퓨팅 및 스토리지 비용들을 유연하게 구조화하는 것을 가능하게 하였다. 가상화는 고객들이 지연들 및 제조 비용들 및 하드웨어의 배치에 의해 영향을 받았던 프로비전 사이클들내 고정된 하드웨어를 사거나 또는 차용하기 보다는 필요한 시간에 프로세서 사이클들 및 스토리지를 구매하는 것을 허용한다. 컴퓨팅 및 스토리지의 이용 가능성을 결정하기 위해서 미래 수요의 예측들에 대한 정확성에 의존하기 보다는, 유저들은 상대적으로 순간적인 필요한 베이시스(basis)에 기초하여 컴퓨팅 및 스토리지 자원들의 사용을 구매할 수 있다.
가상화된 컴퓨팅 환경들은 흔히 블록-기반 스토리지(block-based storage)에 의해 지원된다. 이런 블록-기반 스토리지는 블록-기반 스토리지가 지원하는 볼륨들의 구조상 및 기능상 세부사항들에 그리고 스토리지 이용 가능성을 제공하는 가상화들을 실행시키는 운영 체제들에 기능적으로 애그노스틱(agnostic)하는 블록-기반 스토리지를 제공하는 일련의 표준화된 스토리지 호출(call)들을 통하여 다양한 컴퓨팅 가상화들과 상호 작용할 수 있는 스토리지 시스템을 제공한다. 그러나, 가상화된 자원들을 위한 더 큰 처리 용량과 함께 네트워크 송신 성능들이 증가하면서, 블록-기반 스토리지상에서 I/O 요구들이 증대될 수 있다. 만약 I/O 요구들이 서비스 요청들에 대하여 블록-기반 스토리지의 용량을 초과한다면, 그러면 가상화된 컴퓨팅 자원들을 위한 블록-기반 스토리지 성능의 레이턴시(latency) 및/또는 내구성(durability)을 겪고, 가상화된 컴퓨팅 성능의 손실을 초래한다.
도 1 은 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 예시하는 일련의 다이어그램들이다.
도 2 는 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하는 블록-기반 스토리지 서비스를 구현하는 제공자 네트워크를 예시하는 블록 다이어그램이다.
도 3 은 일부 실시예들에 따른 스토리지 클라이언트의 다양한 컴포넌트들을 예시하는 블록 다이어그램이다.
도 4 는 일부 실시예들에 따른 블록-기반 스토리지 서비스의 다양한 컴포넌트들을 예시하는 블록 다이어그램이다.
도 5 는 일부 실시예들에 따른 동적 스토리지 볼륨 스케일링을 구현하는 스토리지 클라이언트와 블록-기반 스토리지 서비스간의 상호작용들을 예시하는 블록 다이어그램이다.
도 6 은 예시하는 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하기 위한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 7 은 일부 실시예들에 따른 파일 시스템을 위한 스토리지 볼륨에 스케일링 이벤트에 따른 파일 시스템 업데이트를 위한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 8은 다양한 실시예들에 따른 예제 컴퓨터 시스템이다.
본 출원에서 실시예들은 예로서 여러 개의 실시예들 및 예시적인 도면들에 대해 설명되지만, 이 기술분야의 숙련자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않는다는 것을 인식할 것이다. 도면들 및 그것에 대한 상세한 설명은 개시된 특정한 형태로 실시예들을 제한하도록 의도되지 않지만, 그와는 반대로, 의도는 첨부된 청구항들에 의해 정의된 바와 같이 사상 및 범위 내에 속하는 모든 수정들, 등가물들 및 대안들을 커버하는 것임이 이해되어야 한다. 본 출원에 사용된 제목들은 단지 구조적 목적을 위한 것이며 설명 또는 청구항들의 범위를 제한하기 위해 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된 바와 같이, 단어(“일 수 있다(may)”)는 의무적 의미(즉, 해야 한다는 의미하는)보다는 허용적 의미(즉, ~하기 위한 가능성을 가짐을 의미하는)에서 사용된다. 단어들 “포함하다(include)”, “포함하는(including)”, 및 “포함하다(includes)”은 포함하는 것을 의미하지만, 이에 제한되지 않는다. 유사하게, 단어들 “갖다(have),” “갖는(having),” 및 “갖다(has)”는 또한 오픈 엔드(open-ended) 관계를 나타내고, 따라서 갖지만, 그에 제한되지 않은 것을 의미한다. 용어들 본 출원에서 사용되는 “제 1(first),” “제 2(second),” “제 3(third),” 및 등등은 이런 순서화가 다른 식으로, 명백하게 표시되지 않는 한 그것들은 선행하는 명사들에 대한 라벨들로서 사용되고 임의 유형의 순서화 (예를 들어, 공간적인, 시간적인, 로직상의, 등)을 의미하지 않는다.
다양한 컴포넌트들은 태스크(task) 또는 태스크들을 수행 "하도록 구성된(configured to)"으로 설명될 수 있다. 이런 상황들에서, “하도록 구성된다”는 일반적으로 동작 동안 태스크 또는 태스크들을 수행하는 “구조를 갖는 (having structure)”을 의미하는 넓은 설명이다. 이와 같이, 컴포넌트는 심지어 컴포넌트가 현재 해당 태스크를 수행하고 있지 않는 중일 때라도 태스크를 수행하는 것으로 구성될 수 있다 (예를 들어, 컴퓨터 시스템은 심지어 동작들이 현재는 수행되고 있지 않을 때라도 동작들을 수행하는 것으로 구성될 수 있다). 일부 상황들에서, “하도록 구성된다(configured to)”는 전반적으로 동작 동안 태스크 또는 태스크들을 수행하는 “회로부를 갖는 (having circuitry that)”을 의미하는 구조의 넓은 설명일 수 있다. 이와 같이, 컴포넌트는 심지어 컴포넌트가 현재 온(on)이 아닐 때라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, “하도록 구성된(configured to)”에 대응하는 구조를 형성하는 회로부는 하드웨어 회로들을 포함할 수 있다.
다양한 컴포넌트들은 설명에 편의를 위하여 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 이런 설명들은 어구 “하도록 구성된(configured to)”을 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크들을 수행하도록 구성된 컴포넌트를 나열하는 것은 명백하게 해당 컴포넌트에 대한 35 U.S.C. § 112(f)를 언급하지 않는 것으로 의도된다.
본 출원에서 사용되는 “에 기반되는 (based On)”, 이 용어는 결정에 영향을 미치는 하나 이상의 요인들을 설명하기 위해 이용된다. 이 용어는 결정에 영향을 미칠 수 있는 추가 요인들을 배제하지 않는다. 즉, 결정은 단지 해당 요인들에만 기반하거나 또는 적어도 부분적으로, 해당 요인들에 기반 될 수 있다. “B에 기반하여 A를 결정한다”는 어구를 고려해 본다. B는 A의 결정에 영향을 미치는 요인일 수 있지만, 이런 어구는 A의 결정이 또한 C에 기반되는 것을 배제하지 않는다. 다른 경우들에서는, 단지 B에만 기반하여 결정될 수 있다.
본 발명의 범위는 그것이 본 출원에 다루어진 임의의 문제 또는 모든 문제들을 완화시키는지 여부에 관계없이 본 출원에 개시된 임의의 특징 또는 특징들의 조합 (명백하게 또는 함축적으로), 또는 그것의 임의의 일반화를 포함한다. 따라서, 본 출원 (또는 우선권을 주장하는 출원)의 소추동안에 임의의 이런 조합의 특징들에 대한 새로운 청구항들이 형성될 수 있다. 특별히, 첨부된 청구항들을 참고로 하여, 종속항들로부터의 특징들은 독립항들의 특징들과 결합될 수 있고 개별 독립항들로부터의 특징들은 임의의 적절한 방식으로 결합될 수 있고 단지 첨부된 청구항들에 열거된 특정 조합들로 결합되지 않는다.
스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링의 다양한 실시예들이 본 출원에 설명된다. 네트워크-기반 데이터 저장소들은 여러 가지 상이한 스토리지 클라이언트 애플리케이션들을 위해 내구성 있고 가요적인(flexible) 스토리지 해결책들을 제공한다. 예를 들어, 스토리지 클라이언트(storage client)들은 네트워크-기반 데이터 저장소에 파일 시스템을 지원하는 스토리지 볼륨(storage volume)을 구현할 수 있다. 스토리지 볼륨들의 동적 스케일링(dynamic scaling) 제공은 시간이 흐르면서 스토리지 요건들 변화를 보상하여 스토리지 비용이 스토리지 볼륨의 실제 사용에 정확하게 맞추는 것을 허용한다. 도 1 은 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 예시하는 일련의 다이어그램들이다. 네트워크-기반 데이터 저장소 (110)는 다양한 스토리지 클라이언트(들) (140)에 대한 영구(persistent) 데이터 스토리지를 제공할 수 있다. 네트워크-기반 데이터 저장소 (110)에 스토리지는 적어도 일부 실시예들에서 블록-기반 스토리지일 수 있다. 스토리지 클라이언트(들) (140)은 네트워크-기반 데이터 저장소 (110)에 스토리지 볼륨 (130)을 프로비저닝(provision)할 수 있다. 데이터 저장소 프로비저닝시에, 스토리지 클라이언트(들) (140)은 스토리지 클라이언트(들) (140)에서 구현되는 파일 시스템을 위해 그것을 구성할 수 있고 스토리지 볼륨을 마운트(mount)할 수 있다.
앞에서 언급한 것 처럼, 스토리지 용량 및/또는 성능 요구들은 시간이 흐르면서 변할 수 있다. 이들 변화들을 고려하여, 정적으로(statically) 프로비저닝되는 스토리지 자원들은 덜 비용 효율적 일 수 있다. 게다가, 다수의 상이한 스토리지 클라이언트들에게 스토리지를 제공하는 네트워크-기반 데이터 저장소들에 대하여, 충분히 이용되지 않는 스토리지 자원들은 다른 스토리지 클라이언트를 위해 더 많이 활용될 수 있을 수 있어서, 네트워크-기반 데이터 저장소에 대한 효율을 줄인다. 따라서, 다양한 실시예들에서, 네트워크-기반 데이터 저장소 (110)는 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링(dynamic scaling)을 구현할 수 있다. 신 (102)에 예시된 바와 같이, 스토리지 클라이언트(들) (140)에서 파일 시스템 관리기 (150)는 스토리지 클라이언트(들) (140)에서 구현된 파일 시스템을 위한 스토리지 볼륨 활용의 일부로서 스토리지 볼륨 (130)에 대한 다양한 I/O 요청들을 발송할 수 있다. 볼륨 성능은 스토리지 볼륨 (130)에 대한 스케일링 이벤트(scaling event)들을 감지하기 위해 스토리지 볼륨을 감시할 수 있는 데이터 저장소 제어 플레인(data store control plane) (120)에 보고될 수 있다(132).
스케일링 이벤트들은 스토리지 볼륨 (130)에 대한 스케일링 정책에 따라 감지될 수 있다. 스케일링 정책(scaling policy)은 스토리지 볼륨 (130)을 스케일링하기 위해 다양한 제어 플레인 액션(action)들을 트리거하는 하나이상의 상태들을 포함할 수 있다. 예를 들어, 스토리지 볼륨 (130)은 사이즈에서 증가, 사이즈에서 축소, 스토리지 볼륨을 위한 스토리지 자원들을 상이하게 재분배, 및/또는 프로비전 스토리지 볼륨 (130)에 대한 상이한 스루풋 성능 (예를 들어, IOP(input/output operations per second)들))을 프로비저닝하기 위해 스케일링될 수 있다. 다양한 상이한 임계값들 또는 상태들이 스케일링 이벤트들 (예를 들어, 너무 많거나 또는 너무 작은 스토리지 용량 또는 대역폭)을 감지하기 위해 볼륨 성능 메트릭들 및 스토리지 용량에 대하여 평가될 수 있다.
신 (104)에 예시된 바와 같이, 스토리지 볼륨 (130)를 위한 스케일링 이벤트가 발생하였다. 데이터 저장소 제어 플레인 (120)은 볼륨 (122)에 대한 스케일링 이벤트의 표시를 파일 시스템 관리기 (150)에 제공한다. 이 표시는 파일 시스템 관리기 (150)가 스케일링된 스토리지 볼륨을 액세스하는 것을 허용할 수 있다. 데이터 저장소 제어 플레인 (120)은 또한 스토리지 볼륨을 동적으로 스케일링하여, 이 예에서는 증대부분(addition) (132)을 추가한다. 다양한 스토리지 유지보수 동작(maintenance operation)들을 포함하여, 스케일링 이벤트에 대한 스토리지 볼륨의 희망하는 구성과 어울리는 스토리지 자원들을 할당하기 위한 다양한 상이한 스토리지 동작들이 수행될 수 있다. 파일 시스템 관리기 (150)는 표시 (122)를 수신할 수 있고, 스케일링된 스토리지 볼륨 (160)을 포함하기 위해 스토리지 클라이언트(들) (140)에서 파일 시스템을 업데이트할 수 있다. 예를 들어, 파일 시스템 관리기 (150)는 볼륨 증대부분 (132)의 결과로서 스케일링된 스토리지 볼륨 (160)을 표시하기 위해 파일 시스템 메타데이터를 업데이트하기 위한 다양한 재사이즈(resize) 동작들을 수행할 수 있다. 파일 시스템 관리기 (150)는 그런 다음 네트워크-기반 데이터 저장소 (110)에 스케일링된 스토리지 볼륨을 활용하기 위해 I/O 요청들 (114)을 발송할 수 있다.
도 1 은 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링의 예시로서 제공되고, 거기에서 설명되는 물리적 배열, 사이즈, 또는 컴포넌트들, 모듈들, 또는 디바이스들의 수에 관하여 제한되는 것으로 의도되지 않는 것에 유의해라.
명세서는 먼저 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 제공할 수 있는 블록-기반(block-based) 스토리지 서비스로서 네트워크-기반 데이터 저장소의 예를 설명한다. 블록-기반 스토리지 서비스 및 블록-기반 스토리지 서비스의 클라이언트를 구현할 수 있는 다양한 컴포넌트들, 모듈들, 시스템들, 또는 디바이스들이 설명된다. 명세서는 그런 다음 방법들의 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하기 위한 다양한 실시예들의 방법들의 다양한 실시예들의 플로우 차트들을 설명한다. 다음으로, 명세서는 개시된 기술들을 구현할 수 있는 예제 시스템을 설명한다. 다양한 예들이 명세서 전체에 걸쳐 제공된다.
도 2 는 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하는 블록-기반 스토리지 서비스르 구현하는 제공자 네트워크를 예시하는 블록 다이어그램이다. 제공자 네트워크 (200)는 인터넷 및/또는 다른 네트워크들을 통하여 클라이언트들 (210)에 액세스 가능한 하나 이상의 서비스들 (예컨대 다양한 유형들의 클라우드기반의 컴퓨팅 또는 스토리지)을 제공하는 엔티티 예컨대 회사 또는 공공 섹터 조직에 의해 셋 업될 수 있다. 제공자 네트워크 (200)는 제공자 네트워크 (200)에 제공되는 인프라스트럭처 및 서비스들을 구현하고 분배하기 위해 요구되는 다양한 자원 풀들(pools), 예컨대 물리적 및/또는 가상화된 컴퓨터 서버들, 스토리지 디바이스들, 네트워킹 장비 및 유사한 것의 무리들(예를 들어, 도 8에 관하여 이하에서 설명되는 컴퓨팅 시스템 (1000))을 호스팅하는 많은 데이터센터들을 포함할 수 있다. 일부 실시예들에서, 제공자 네트워크 (200)는 컴퓨팅 자원들, 예컨대 가상의 컴퓨팅 서비스 (230), 스토리지 서비스들, 예컨대 블록-기반 스토리지 서비스 (220) 및 다른 스토리지 서비스 (240) (다양한 스토리지 유형들 예컨대 오브젝트/키-값 기반 데이터 저장소들 또는 다양한 유형들의 데이터베이스 시스템들을 포함할 수 있다), 및/또는 임의의 다른 유형의 네트워크기반 서비스들 (250)을 제공할 수 있다. 클라이언트들 (210)는 네트워크 (260)를 통하여 제공자 네트워크 (200)에 의해 제공되는 이들 다양한 서비스들을 액세스할 수 있다. 마찬가지로 네트워크기반 서비스들은 그것들끼리 통신할 수 있고 및/또는 상이한 서비스들을 제공하기 위해 서로의 사용을 가능하게 한다. 예를 들어, 유닛들 소위 “인스턴스들(instances),” 예컨대 가상의 또는 물리적 컴퓨팅 인스턴스들 또는 스토리지 인스턴스들내 클라이언트들 (210)에 제공된 컴퓨팅 자원들은, 특정 데이터 볼륨들 (226)의 사용을 가능하게 할 수 있고, 컴퓨팅 인스턴스들을 위한 가상의 블록 스토리지을 제공한다.
상기에서 언급한 바와 같이, 가상 컴퓨팅 서비스 (230)는 다양한 컴퓨팅 인스턴스(들)(232)을 클라이언트들 (210)에 제공할 수 있다. 가상 컴퓨팅 인스턴스는 예를 들어, 지정된 컴퓨터의 용량 (CPU들의 유형 및 수, 주 메모리 사이즈, 등등을 나타냄으로써 특정될 수 있다) 및 지정된 소프트웨어 스택 (예를 들어, 하이퍼바이저(hypervisor)의 상부에서 동작할 수 있는 운영 체제의 특정 버전)을 갖는 하나 이상의 서버들을 포함할 수 있다. 많은 상이한 유형들의 컴퓨팅 디바이스들은 범용 또는 특별한 용도 컴퓨터 서버들, 스토리지 디바이스들, 네트워크 디바이스들 및 유사한 것을 포함하는 상이한 실시예들에서, 가상 컴퓨팅 서비스 (230)의 컴퓨팅 인스턴스들을 구현하기 위해서 단독으로 또는 조합하여 사용될 수 있다. 일부 실시예들에서 인스턴스 클라이언트들 (210) 또는 다른 임의의 다른 유저는 네트워크 트래픽을 컴퓨팅 인스턴스로 보내도록 구성될 수 있다(및/또는 허가된다). 다양한 실시예들에서, 컴퓨팅 인스턴스들은 다양한 동작들을 수행하기 위한 영구 블록-기반 스토리지를 획득하기 위해서 블록-기반 스토리지 서비스 (220)에 의해 제공된 하나 이상의 데이터 볼륨들 (226)에 매핑되거나 또는 부착될 수 있다.
컴퓨팅 인스턴스(들) (232)은 예를 들어, 인스턴스를 액세스 하기 위해 클라이언트 (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)는 하나 이상의 영구 스토리지 디바이스(persistent sotrage device)(들) (226a,226b,226c, 내지 226n)을 활용하기 위한 블록 레벨 스토리지를 제공하는 다수의 독립적인 스토리지 노드들 (224a,224b,224c 내지 224n)(예를 들어, 서버 블록 데이터 스토리지 시스템들)의 풀(pool)로 구성되는 스토리지 시스템이다. 유지되는 스토리지 볼륨들은 특정 클라이언트들에 매핑될 수 있고, 연접하는(contiguous) 로직 블록들의 세트로서 가상 블록-기반 스토리지 (예를 들어, 하드 디스크 스토리지 또는 다른 영구 스토리지)를 제공한다. 일부 실시예들에서, 스토리지 볼륨은 다른 블록 스토리지 동작들, 예컨대 스냅샷 동작들 또는 복제 동작들을 수행하기 위해 다수의 데이터 청크(chunk)들 (하나 이상의 데이터 블록들을 포함하는)로 나누어질 수 있다.
스토리지 볼륨의 볼륨 스냅샷(volume snapshot)은 스토리지 볼륨의 상태의 고정된 시간내 지점(point-in-time) 표현일 수 있다. 일부 실시예들에서, 볼륨 스냅샷들은 스토리지 볼륨을 유지하는 스토리지 노드 (224)에서 원격인, 예컨대 백업(backup) 스토리지 서비스 (240)에 저장될 수 있다. 스냅샷 동작들은 백업스토리지 서비스 (240)내 원격 스냅샷 데이터 저장소와 같은 다른 스토리지 위치내 소정의 스토리지 볼륨의 스냅샷을 발송, 복제 및/또는 다른식으로 보존하도록 수행될 수 있다.
블록-기반 스토리지 서비스 (220)는 블록-기반 스토리지 서비스 (220)의 동작을 보조하기 위해서 블록-기반 스토리지 서비스 제어 플레인 (222)을 구현할 수 있다. 다양한 실시예들에서, 블록-기반 스토리지 서비스 제어 플레인 (222)은 가상 컴퓨팅 서비스 (230)에 의해 제공되는 컴퓨팅 인스턴스들상에서 실행하는 프로그램들 및/또는 제공자 네트워크 (200) 및/또는 선택적으로 하나 이상의 다른 데이터센터들내에 위치된 컴퓨팅 시스템들 (미도시), 또는 네트워크 (260)상에서 이용 가능한 제공자 네트워크 (200)에 외부에 있는 다른 컴퓨팅 시스템들(예를 들어, 클라이언트(들) (210))내에 위치된 다른 네트워크기반 서비스들과 같은 클라이언트들에 대한 블록 데이터 스토리지의 이용 가능성 관리를 보조한다. 스토리지 노드들 (224)상에 스토리지 볼륨들에 대한 액세스는 블록 데이터 트랜잭션(transaction) 명령들에 응답하여 제공자 네트워크 (200)내의 내부 네트워크상에서 또는 네트워크 (260)를 통하여 외부에서 제공될 수 있다.
블록-기반 스토리지 서비스 제어 플레인 (222)은 유저 계정들의 관리 (예를 들어, 생성, 삭제, 과금, 지불 징수, 등.)를 포함하여 블록 레벨 스토리지 기능 제공에 관련된 여러 가지 서비스들을 제공할 수 있다. 블록-기반 스토리지 서비스 제어 플레인 (222)은 구성 요청들에 응답하여 스토리지 볼륨들 및 스케일링 정책들의 생성, 사용 및 삭제에 관련된 서비스들을 추가로 제공할 수 있다. 블록-기반 스토리지 서비스 제어 플레인 (222)은 또한 백업 스토리지 서비스 (240)상에 볼륨 스냅샷들의 생성, 사용 및 삭제에 관련된 서비스들을 제공할 수 있다. 블록-기반 스토리지 서비스 제어 플레인 (222)은 스토리지 볼륨들 및 해당 볼륨들의 스냅샷들의 사용에 관련된 데이터 검사 및 성능의 프로세싱 및 수집에 관련된 서비스들을 또한 제공할 수 있다.
블록-기반 스토리지 서비스 (220)는 여러 가지 상이한 방식들로 스토리지 불륨들을 관리하고 유지할 수 있다. 스토리지 볼륨의 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 일부 데이터 볼륨들에 대하여 상이한 내구성 기법들이 구현될 수 있다. 예를 들어, 예컨대 데이터 볼륨에 대한 단일 지점의 고장을 배제시킴으로써 상이한 유형들의 미러링(mirroring) 및/또는 복제 기술들이 데이터 볼륨의 내구성을 증가시키기 위해 구현될 수 있다(예를 들어, RAID 1). 스토리지 볼륨에 대한 액세스를 제공하기 위해서, 그런다음 스토리지 노드들은 스토리지 볼륨의 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 I/O 요청들, 예컨대 기록 요청들을 조정할 수 있다.
제공자 네트워크 (200)는 상기에서 언급한 바와 같이 백업 스토리지 서비스 (240)를 또한 구현할 수 있다. 백업 스토리지 서비스 (240)는 블록-기반 스토리지 서비스 (220)에 의해 제공되는 것과 동일하거나 상이한 유형의 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서 다른 스토리지 서비스 (240)는 데이터를 데이터 오브젝트(object)들로서 저장 및 관리할 수 있는 오브젝트기반의 스토리지 서비스를 제공할 수 있다. 예를 들어, 다양한 스토리지 볼륨들의 볼륨 스냅샷들은 특정 스토리지 볼륨에 대한 스냅샷 오브젝트들로서 저장될 수 있다. 다른 백업 스토리지 서비스 (240)에 추가하여, 제공자 네트워크 (200)는 다양한 태스크들 수행 또는 요청하기 위해서 제공자 네트워크 (200)의 다른 서비스들 (예를 들어, 블록-기반 스토리지 서비스 (220), 가상 컴퓨팅 서비스 (230) 및/또는 다른 스토리지 서비스 (240)) 뿐만 아니라 클라이언트들 (210)을 허용하는 다양한 상이한 유형들의 분석적, 컴퓨터, 스토리지, 또는 다른 네트워크-기반 시스템을 포함할 수 있는 다른 네트워크기반 서비스들 (250)을 구현할 수 있다.
클라이언트들 (210)은 네트워크 제공자 (200)에 대한 요청들을 제출하도록 구성 가능한 임의 유형의 클라이언트를 아우를 수 있다. 예를 들어, 소정의 클라이언트 (210)는 적절한 버전의 웹 브라우저를 포함할 수 있거나, 또는 웹 브라우저에 의해 제공되는 실행 환경내에서 또는 그것에 대한 익스텐션(extension)으로서 실행하도록 구성된 플러그-인 모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트 (210)는 데이터베이스 애플리케이션 (또는 그것의 유저 인터페이스), 미디어 애플리케이션, 오피스 애플리케이션 또는 컴퓨팅 인스턴스들, 스토리지 볼륨들, 또는 다양한 동작들을 수행하기 위한 제공자 네트워크 (200)내 다른 네트워크기반 서비스의 사용을 제공할 수 있는 임의의 다른 애플리케이션과 같은 애플리케이션을 아우를 수 있다. 일부 실시예들에서, 이런 애플리케이션은 반드시 모든 유형들의 네트워크-기반 데이터에 대한 전체 브라우저 지원을 구현하지 않고서 네트워크기반 서비스들 요청들을 생성 및 프로세싱하기 위한 충분한 프로토콜 지원 (예를 들어, 적절한 버전의 하이퍼텍스트 전송 프로토콜 (HTTP))을 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (210)은 REST(Representational State Transfer)-스타일 네트워크기반 서비스들 아키텍처, 문서- 또는 메시지기반의 네트워크기반 서비스들 아키텍처, 또는 다른 적절한 네트워크기반 서비스들 아키텍처에 따른 네트워크기반 서비스들 요청들을 생성하도록 구성될 수 있다. 일부 실시예들에서, 클라이언트 (210) (예를 들어, 컴퓨터의 클라이언트)는 컴퓨팅 인스턴스에 의해 제공된 컴퓨터 자원들 또는 스토리지 볼륨에 의해 제공된 블록 스토리지를 사용하는 클라이언트 (210)상에서 애플리케이션들 구현에 투과성(transparent) 방식으로 컴퓨팅 인스턴스 또는 스토리지 볼륨에 대한 액세스를 제공하도록 구성될 수 있다. 적어도 일부 실시예들에서, 클라이언트(들) (210)은 클라이언트(들) (210)에서 구현된 파일 시스템들을 위한 블록-기반 스토리지 서비스 (220)에서 구현된 스토리지 볼륨들을 프로비저닝, 마운트 및 구성할 수 있다.
클라이언트들 (210)은 외부 네트워크 (260)를 통하여 제공자 네트워크 (200)로 네트워크기반 서비스들 요청들을 전달할 수 있다. 다양한 실시예들에서, 외부 네트워크 (260)는 클라이언트들 (210)와 제공자 네트워크 (200) 간에 네트워크-기반 통신을 수립하기 위해 필요한 네트워킹 하드웨어 및 프로토콜들의 임의 적절한 조합을 아우를 수 있다. 예를 들어, 네트워크 (260)는 일반적으로 다양한 텔레통신(telecommunications) 네트워크들 및 총괄하여 인터넷을 구현하는 서비스 제공자들을 아우를 수 있다. 네트워크 (260)는 개인 네트워크들 예컨대 로컬 영역 네트워크들 (LAN들) 또는 광 영역 네트워크들 (WAN들) 뿐만 아니라 공공 또는 개인 무선 네트워크들을 또한 포함할 수 있다. 예를 들어, 소정의 클라이언트 (210)및 제공자 네트워크 (200) 양쪽은 그것들 자체 내부의 네트워크들을 갖는 엔터프라이즈(enterprise)들 내에서 개별적으로 프로비저닝될 수 있다. 이런 실시예에서, 네트워크 (260)는 주어진 클라이언트 (210)와 인터넷 사이 뿐만 아니라 인터넷과 제공자 네트워크 (200) 사이에서 네트워킹 링크를 수립하기 위해 필요한 하드웨어 (예를 들어, 모뎀들, 라우터들, 스위치들, 부하 분산기(load balancer)들, 프락시 서버들, 등) 및 소프트웨어 (예를 들어, 프로토콜 스택들, 계정 소프트웨어, 방화벽/보안 소프트웨어, 등)를 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (210)은 공공 인터넷 보다는 개인 네트워크를 이용하여 제공자 네트워크 (200)와 통신할 수 있다는 것에 유의한다.
상기에서 논의된 다양한 스토리지 클라이언트들이 많은 방식들로 구현될 수 있다. 도 3 은 일부 실시예들에 따른 스토리지 클라이언트의 다양한 컴포넌트들을 예시하는 블록 다이어그램이다. 상기에서 논의된 클라이언트들 (210), 가상 컴퓨팅 인스턴스들 (232), 또는 내부 클라이언트일 수 있는 스토리지 클라이언트 (300)는 블록-기반 서비스 (370)와 네트워크 (360) (상기의 네트워크 (260)에 유사)를 통하여 통신할 수 있다. 블록-기반 스토리지 서비스 (370)는 일부 실시예들에서 블록-기반 스토리지 서비스 (220)에 유사할 수 있다. 스토리지 클라이언트 (300)는 스토리지 클라이언트 (300)에서 구현된 파일 시스템을 위해 블록-기반 스토리지 시스템 (370)에 유지되는 스토리지 볼륨 (372)을 마운트 할 수 있다.
다양한 실시예들에서, 스토리지 클라이언트 (300)는 스토리지 클라이언트 (300)의 다양한 컴포넌트들간에 입력/출력 (I/O)을 지시하도록 구성될 수 있는 파일 시스템 관리기 (310)를 구현할 수 있다. 다양한 실시예들에서, 파일 시스템 관리기 (310)는 스토리지 클라이언트 (300)를 위한 운영 체제에 커널(kernel) 부분으로서 구현될 수 있다. 파일 시스템 관리기 (310)는 다른 I/O 가운데 파일 시스템에 대한 변화들을 취급할 수 있다. 파일 시스템 관리기 (310)는 제어 플레인 (374)으로부터의 블록-기반 스토리지 서비스 (370)에 스토리지 볼륨 (372)에 대한 스케일링 이벤트들의 다양한 표시들을 취급하는 스케일링 관리 모듈 (314)을 구현할 수 있다. 예를 들어, 스케일링 관리 모듈 (314)은 스토리지 클라이언트 (300)에서 유지되는 파일 시스템을 업데이트하기 위해 도면들 6 및 7에 관하여 이하에서 설명되는 다양한 기술들을 수행할 수 있다. 예를 들어, 파일 시스템 (예시되지 않은)을 위한 다양한 메타데이터 및 정보 구조들을 업데이트 하기 위한 재사이즈(resize) 동작들. 스케일링 관리 모듈 (314)은 일부 실시예들에서, 다양한 파일 시스템 성능 메트릭들 (예를 들어, 스토리지 용량, 액세스 패턴들, I/O 성능)을 수집할 수 있고 그것들을 제어 플레인 (374)으로 발송할 수 있다. 적어도 일부 실시예들에서, 제어 플레인 (374)은 스토리지 클라이언트에서 수집된 성능 메트릭들에 적어도 부분적으로 기초하여 스토리지 볼륨들에 대한 스케일링 이벤트들을 감지할 수 있다. 다양한 실시예들에서, 파일 시스템 관리기 (310)는 백업 관리 모듈 (316)을 구현할 수 있다. 백업 관리 모듈 (368)은 예컨대 상기 도 2에 백업 스토리지 서비스 (240)에 의해 제공될 수 있는 백업 스토리지로 파일 시스템의 스냅샷들을 보내거나 또는 발송할 수 있다.
도 4 는 일부 실시예들에 따른 블록-기반 스토리지 서비스의 다양한 컴포넌트들을 예시하는 블록 다이어그램이다. 하나 이상의 컴퓨팅 노드들 또는 시스템들, 예컨대 도 8에 이하에 설명되는 컴퓨팅 시스템 (1000)은 블록-기반 서비스 (400)의 다양한 컴포넌트들을 구현할 수 있다. 스토리지 클라이언트(들) (450)는 네트워크 (452) (유사한 to 상기에서 논의된 네트워크 (260)에 유사한)를 통하여 또는 상기에서 논의된 제공자 네트워크 (컴퓨팅 인스턴스들 (232)이 블록-기반 스토리지 서비스 (400)와 통신하는 것을 허용할 수 있는)에 내부 네트워크 경로들을 통하여 블록-기반 스토리지 서비스 (400)를 액세스할 수 있다.
다양한 실시예들에서, 블록-기반 스토리지 서비스 (400)는 프론트 엔드(front end) 모듈 (412)을 구현할 수 있다. 프론트 엔드 모듈 (412)은 서비스 요청들을 수신하고 요청들을 포워딩하거나 또는 자원 관리 모듈 (414), 동적 볼륨 스케일링 모듈 (418), 또는 자원 모니터 (416)로부터의 적절한 응답을 개시할 수 있도록 구성될 수 있다. 다양한 실시예들에서 프런트 모듈 (410)은 서비스 (400)에 대한 프로그램 인터페이스 (API)에 따라 블록-기반 스토리지 서비스 (400)에 대한 요청들을 이동(translate)하고 및/또는 또다른 인터페이스를 통하여, 예컨대 프로그램의 인터페이스를 활용하는 스토리지 클라이언트(들) (450)에서의 웹 사이트 또는 명령어 라인 인터페이스(command line interface)를 통하여 구현되는 유저 인터페이스를 통하여 요청들을 수신하고, 수신된 요청들을 프로세스, 표시하도록 구성될 수 있다.
다양한 실시예들에서, 블록-기반 스토리지 서비스 (400)는 자원 관리(resource management) 모듈 (414)을 구현할 수 있다. 자원 관리 모듈 (414)은 클라이언트들 (450)을 위한 스토리지 볼륨들을 프로비저닝하고 스토리지 볼륨들에 대한 스케일링 정책들을 수용하도록 구성될 수 있다. 예를 들어, 자원 관리기 (414)는 블록-기반 스토리지 서비스 (400)에서 특정 클라이언트들 (450)로 특정 계정들 (및 관련 스토리지 볼륨들)을 링크하는 정보를 저장할 수 있다. 예를 들어, 스케일링 이벤트들의 결과로서, 상이한 스토리지 볼륨 비용들이 결정될 수 있다. 스토리지 볼륨들에 링크된 계정 정보는 계정을 정정하기 위해 추가될 스토리지 볼륨들에 대한 과금 및 계량(meter)을 허용할 수 있다. 자원 관리 모듈 (414)은 일부 실시예들에서, 스토리지 볼륨들을 액세스하는 클라이언트들 (450)에 대한 액세스 자격들 또는 다른 정보를 저장/관리할 수 있다. 일부 실시예들에서, 자원 관리 모듈 (414)은 다수의 스토리지 클라이언트들 (450)이 액세스 동일한 스토리지 볼륨을 액세스하는 것을 허용하기 위해 다양한 로킹(locking) 또는 동기화 기법들을 구현할 수 있다. 자원 관리 모듈 (412)은 스토리지 자원들, 예컨대 스토리지 노드들(420)상의 볼륨 스토리지 (426)의 부분들을 프로비저닝하도록 구성될 수 있다. 자원 관리 모듈 (414)은 또한 특정 클라이언트 (450)가 스토리지 볼륨을 액세스 하기 위해 클라이언트들 (450) 또는 인스턴스들에 액세스 자격들 및 다른 식별 정보를 제공할 수 있다.
다양한 실시예들에서, 블록-기반 스토리지 서비스 (400)는 자원 모니터(resource monitor) (416)을 구현할 수 있다. 자원 모니터 (416)는 성능 메트릭들을 수신할 수 있고, 및/또는 스토리지 노드(들) (420)에 대한 건강 체크(health check)들을 수행할 수 있다. 자원 모니터 (416)는 이 데이터를 분석, 종합 및/또는 자원 관리기 (414) (다양한 자원 관리 동작들을 수행하는) 및 동적 볼륨 스케일링 모듈 (418)에 제공할 수 있다. 예를 들어, 자원 관리 모듈 (414)은 자원 모니터 (416)에 의해 수집된 성능 메트릭들 및 다른 정보에 기초하여 스케일링 동작들을 위해 새로운 스토리지를 프로비저닝 또는 획득하고/ 스토리지를 제거하는 결정을 하도록 구성될 수 있다. 적어도 일부 실시예들에서, 자원 모니터 (416)는 스토리지 노드들이 스토리지 볼륨들에 대한 스케일링 이력에 기초하여 해당 볼륨들에 대하여 더 많은 데이터를 수용할 수 있는지에 대한 통계에 의해 기초된(statistically-based) 예측들을 제공할 수 있다.
다양한 실시예들에서, 블록-기반 스토리지 서비스는 스토리지 볼륨들을 동적으로 스케일링하기 위한 동적 볼륨 스케일링 (dynamic volume scaling) 모듈(418)을 구현할 수 있다. 아래에 도면들 5 및 6에 관하여 보다 상세하게 설명되는, 동적 볼륨 스케일링 모듈 (418)은 특정 스토리지 볼륨들에 대한 스토리지 스케일링 이벤트들을 감지할 수 있고, 스케일링 이벤트에 따라 스토리지 자원들을 변경할 수 있고 스케일링 이벤트들의 표시들을 스토리지 클라이언트들에 제공할 수 있다. 적어도 일부 실시예들에서, 동적 볼륨 스케일링 모듈은 다양한 블록-기반 스토리지 서비스 성능 기준에 대하여 트리거되는 스케일링 이벤트들을 감지할 수 있다. 예를 들어, 어떤 스토리지 노드(들) (420)은 다른 스토리지 노드들 보다 네트워크 트래픽의 큰 비율을 수신하는 것으로 “핫스팟(hotspot)들”로서 식별될 수 있다. 볼륨 스케일링 이벤트들은 핫스팟으로 향하는 네트워크 트래픽을 줄이기 위해 일부 볼륨 스토리지를 다른 스토리지 노드들로 재분배하도록 트리거 될 수 있다. 동적 볼륨 스케일링 모듈 (418)은 또한 스케일링되는 스토리지 볼륨들에 대한 다양한 스토리지 유지보수 동작들의 성능을 총괄할 수 있다. 예를 들어, 조각모으기(defragmentation) 동작들이 스토리지 노드(들) (420)에서 볼륨 스토리지 (426)에 활용되지 않는 스토리지 스페이스(space)들을 줄이기 위해 수행될 수 있다. 다양한 다른 압축, 환원, 및/또는 재구조화 기술들이 동적 볼륨 스케일링 모듈 (418) (또는 스토리지 노드(들) (422)에서의 제어 플레인 (410) 또는 I/O 관리기 (422)의 다른 컴포넌트)로부터 지시될 수 있다.
블록-기반 스토리지 서비스 (400)는 블록-기반 스토리지 서비스 (400)에서 유지되는 스토리지 볼륨들에 영구 스토리지를 제공하도록 다수의 스토리지 노드(들) (420)을 구현할 수 있다. 스토리지 노드 (420)는 하나 이상의 컴퓨팅 시스템들 또는 디바이스들, 예컨대 스토리지 서버 또는 다른 컴퓨팅 시스템 (예를 들어, 도 8에 관하여 이하에서 설명되는 컴퓨팅 시스템 (1000))일 수 있다. 각각의 스토리지 노드 (420)는 볼륨 스토리지 (426)에 스토리지 볼륨들의 개별 복제본들 또는 그것의 부분들을 유지할 수 있다. 스토리지 노드들 (420)은 또한 멀티-테넌트(multi-tenant) 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서, 스토리지 노드는 볼륨 스토리지 (426)에 다수의 스토리지 클라이언트들 (450)을 위한 스토리지 볼륨들을 유지할 수 있다. 볼륨 스토리지 (426)는 개별 스토리지 노드(420)를 구현하는 컴퓨팅 시스템 또는 디바이스에 직접 부착될 수 있는 하나 이상의 블록-기반 스토리지 디바이스들 (예를 들어, 하드 디스크 드라이브들, 고체 상태 드라이브들, 등)에 그것들의 개별 데이터 볼륨들을 지속할 수 있다. 다양한 실시예들에서, 스토리지 노드들은 스토리지 디바이스들의 상이한 유형들의 구성들을 가질 수 있어서, 일부 스토리지 볼륨들은 요청된 성능 특성 (예를 들어, SSD들상에 하이-프로비저닝된 스토리지 볼륨들)을 제공하기 위해 대응하는 스토리지 디바이스와 스토리지 노드들상에 구현될 수 있다.
블록-기반 스토리지 서비스 (400)는 여러 가지 상이한 방식들로 스토리지 불륨들을 관리하고 유지할 수 있다. 임의의 스토리지 볼륨에 대하여 임의의 내구성 상태를 수립하여 데이터 볼륨의 동일한 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 일부 데이터 볼륨들에 대하여 상이한 내구성 기법들이 구현될 수 있다. 예를 들어, 예컨대 스토리지 볼륨에 대한 단일 지점의 고장을 배제시킴으로써 상이한 유형들의 미러링(mirroring) 및/또는 복제 기술들이 스토리지 볼륨의 내구성을 증가시키기 위해 구현될 수 있다(예를 들어, RAID 1). 데이터 볼륨에 대한 액세스를 제공하기 위해서, 스토리지 노드들(420)은 그런 다음 스토리지 볼륨의 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 I/O 요청들, 예컨대 기록 요청들을 조정할 수 있다. 예를 들어, 소정의 스토리지 볼륨을 위한 하나의 스토리지 노드는 마스터 스토리지 노드(master storage node)의 역할을 할 수 있다. 마스터 스토리지 노드는 다양한 실시예들에서, 스토리지 볼륨의 클라이언트들로부터 요청들 (예를 들어, I/O 요청들)을 수신 및 프로세스할 수 있다. 따라서, 마스터 스토리지 노드는 그런다음 슬레이브 스토리지 노드들로서 역할을 하는 하나 이상의 다른 스토리지 노드들로의 스토리지 볼륨에 대한 I/O 요청들의 복제, 예컨대 기록 요청들, 또는 임의의 다른 변화들 또는 수정들을 조정할 수 있다. 따라서, 기록 요청이 스토리지 노드에서 스토리 볼륨에 대하여 수신된 때, 스토리지 노드는 기록 요청을 다른 스토리지 노드로 포워딩할 수 있고 스토리지 노드가 기록을 완료하기 전에 기록 요청을 완료한 것으로 확인응답할 때까지 대기한다. 마스터 스토리지 노드들은 스냅샷 동작들 또는 다른 I/O 동작들 (예를 들어, 판독 요청 서비스) 같은 스토리지 볼륨들에 대한 다른 동작들을 지시할 수 있다. 일부 실시예들에서, 마스터 및 슬레이브 스토리지 노드들의 역할은 데이터 볼륨마다 할당될 수 있다는 것에 유의한다.
스토리지 노드들 (420)은 개별 I/O 관리기들, 예컨대 I/O 관리기들 (422)을 구현할 수 있다. I/O 관리기들 (422)은 특정 스토리지 노드에서 유지되는 데이터 볼륨들 쪽으로 보내지는 I/O 요청을 취급할 수 있다. 따라서, I/O 관리기 (422)는 예를 들어 스토리지 노드에 스토리지 볼륨으로의 기록 요청을 취급하고 프로세스할 수 있다. I/O 관리기 (422)는 블록-기반 스토리지 서비스 애플리케이션 프로그래밍 인터페이스 (API) 및/또는 iSCSI(internet small computer system interface)과 같은 다른 통신 프로토콜들에 따라 I/O 요청들을 프로세스하도록 구성될 수 있다. 일부 실시예들에서, I/O 관리기들 (340)은 볼륨들 (또는 그에따라서 스토리지 노드 (420)에서 유지되는 부분들)에 대한 파일 시스템 매핑 정보를 구현할 수 있다. 파일 시스템 I/O는 다양한 실시예들에서 파일 시스템 매핑 정보를 이용하여 서비스 될 수 있다.
도 4의 앞선 설명은 단지 예시적인 목적을 위해 제공되고 설명된 기능들을 구현하는 다양한 컴포넌트들의 숫자, 배열 또는 구성을 제한하는 것으로 의도되지 않는 것에 유의한다.
도 5 는 일부 실시예들에 따른 동적 스토리지 볼륨 스케일링을 구현하는 스토리지 클라이언트와 블록-기반 스토리지 서비스간의 상호작용들을 예시하는 블록 다이어그램이다. 스토리지 클라이언트 (510) (또는 스토리지 클라이언트 (510)을 대신하여 동작하는 다른 클라이언트 디바이스)는 스토리지 서비스 인터페이스 (580) (예를 들어, API 또는 GUI)을 통하여 스토리지 서비스 제어 플레인 (520)으로 스토리지 볼륨을 위한 요청 (561)을 발송할 수 있다. 요청은 스토리지 볼륨의 최초 사이즈를 포함하는 다양한 파라미터들, 뿐만 아니라 생성시에 스토리지 볼륨을 포맷하기 위한 파일 시스템 구성을 포함할 수 있다. 다양한 실시예들에서, 요청 (561)은 스토리지 서비스 인터페이스 (580)을 통하여 스토리지 볼륨에 대한 스케일링 정책을 지정할 수 있다. 스케일링 정책을 지정하는 별개의 요청 뿐만 아니라 스케일링 정책 (예시되지 않음)을 업데이트, 대체, 및/또는 제거하는 다양한 요청들이 수행될 수 있다는 것에 유의한다. 스토리지 제어 플레인 (520)은 하나 이상의 스토리지 자원들, 예컨대 스토리지 노드(들) (530)을 가로질러 스토리지 볼륨 (563)을 프로비저닝할 수 있다. 일단 프로비저닝 된 후, 스토리지 서비스 제어 플레인 (520)은 스토리지 서비스 인터페이스 (580)를 통하여 스토리지 클라이언트 (510)에 스토리지 볼륨 엔드 포인트 (storage volume endpoint)(565)를 제공할 수 있다. 예를 들어, iSCSI 타겟이 스토리지 클라이언트 (510)에 제공될 수 있다.
일부 실시예들에서, 스토리지 클라이언트 (510)는 그런 다음 스토리지 노드(들) (530)에서 유지되는 스토리지 볼륨으로 파일 시스템 I/O을 개시할 수 있다. 파일 시스템 I/O은 네트워크-기반 스토리지 프로토콜 (582), 예컨대 iSCSI 에 따라 수행될 수 있다. 성능 메트릭(performance metric)들 (569) 뿐만 아니라 감시 스토리지 볼륨을 감시하는 적절한 다른 정보가 스토리지 노드(들) (530)로부터 스토리지 서비스 제어 플레인 (520)으로 보고될 수 있다. 일부 실시예들에서, 스토리지 클라이언트 (510)는 스케일링 이벤트들을 감지하는데 사용될 성능 메트릭들 (589) (이들의 일부는 스토리지 서비스에서 수집가능하지 않을 수 있다)을 스토리지 서비스 제어 플레인 (520)로 발송할 수 있다. 만약 스케일링 이벤트가 스토리지 볼륨에 대하여 감지되면, 스토리지 서비스 제어 플레인 (520)은 스케일 스토리지 볼륨 (571)에 대한 영구 스토리지를 변경할 수 있다. 예를 들어, 다양한 복사, 이동, 할당, 삭제, 또는 조각모으기 명령어들이 스토리지 노드(들) (530)로 발송될 수 있다. 스토리지 서비스 제어 플레인 (520)은 또한 스토리지 서비스 인터페이스 (580)를 통하여 스토리지 클라이언트 (510)에 스토리지 볼륨 (573)에 대한 스케일링 이벤트의 표시를 제공할 수 있다. 적어도 일부 실시예들에서, 스토리지 클라이언트 (510)는 스토리지 서비스 인터페이스 (580)를 통하여 스케일 스토리지 볼륨 (571)에 대한 영구 스토리지의 변경을 조정 및/또는 수행하기 위해 사용될 수 있는 스케일링 이벤트 응답 (575)을 제공할 수 있다. 따라서, 도 5에 예시된 다양한 메시지들이 상이한 시간들에 발송 및/또는 수신될 수 있고, 따라서 이전 설명은 제한하는 것으로 의도되지 않는다는 것에 유의한다. 일단 파일 시스템이 업데이트된 후, 스토리지 클라이언트 (510)는 스케일링된 스토리지 볼륨에 업데이트된 파일 시스템 I/O (577)를 수행할 수 있다. 적어도 일부 실시예들에서, 스토리지 볼륨이 온라인이고 파일 시스템 I/O를 계속하여 수용할 수 있도록 스토리지 볼륨의 스케일링이 수행된다는 것에 유의한다.
다양한 실시예들에서, 상기의 도면들 1-5 및 이하의 도면들 6-7 에서 설명된 네트워크-기반 또는 프로그램의 인터페이스들 (예컨대 API) 호출(call)들 및 응답들은보안 플락시 연결을 통하여 수행될 수 있거나 (예를 들어, 서비스 및/또는 제공자 네트워크으로 게이트웨이 제어 플레인에 의해 관리되는 것), 또는 공중 네트워크을 통하여 또는, 대안적으로, 개인 채널 예컨대 가상 개인 네트워크 (VPN) 연결을 통하여 수행될 수 있다는 것에 유의한다. 본 출원에서 설명된 시스템들의 컴포넌트에 및/또는 컴포넌트들간에 이들 및 다른 API들은 한정되는 것은 아니지만, SOAP(Simple Object Access Protocol) 기술 및 REST(Representational state transfer) 기술을 포함하는 상이한 기술들에 따라 구현될 수 있다. 예를 들어, 이들 API들은 반드시 그럴 필요는 없지만, SOAP API들 또는 REST를 따르는 API(RESTful API)들로 구현될 수 있다. SOAP는 네트워크-기반 서비스들의 상황하에서 정보를 상호교환하기 위한 프로토콜이다. REST는 분배 하이퍼미디어 시스템들을 위한 건축 스타일(architectural style)이다. REST를 따르는 API (REST를 따르는 네트워크-기반 서비스로 또한 지칭될 수 있다)는 HTTP 및 REST 기술을 이용하여 구현되는 네트워크-기반 서비스 API이다. 본 출원에서 설명된 API들은 일부 실시예들에서 네트워크-기반 데이터 저장소, 원격 내구성 있는 로깅(logging)을 구현하는 클라이언트 디바이스, 또는 다른 시스템, 서비스, 컴포넌트, 또는 디바이스와의 통합을 지원하기 위해 한정되는 것은 아니지만, C, C++, Java, C# 및 Perl을 포함하는 다양한 언어들에 클라이언트 라이브러리들로 랩핑(wrap)될 수 있다.
상기의 도면들 2 - 5에 관해서 상기에서 논의된, 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링의 다양한 실시예들은 상이한 방식으로 동적 스케일링을 수행할 수 있다. 게다가, 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링의 이런 시스템들에 제한되지 않는다. 예제 블록-스토리지 서비스에 추가하여 다양한 다른 종류의 스토리지 시스템들이 동적 스케일링을 구현할 수 있다. 추가적으로, 파일 시스템들 그 자체들은 유형, 기법 또는 구현예에서 폭넓게 변화할 수 있다. 모바일 컴퓨팅 디바이스들, 예컨대 태블릿 컴퓨터들, 랩탑들, 이동 전화기들, 또는 개인 디지털 보조장치들을 포함하는 많은 상이한 디바이스들은 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 또한 구현할 수 있다. 도 6 은 예시하는 일부 실시예들에 따른 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하기 위한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. 시스템들 및/또는 디바이스들의 상이한 조합들이 이하에 논의되는 다양한 기술들을 구현할 수 있다.
(610)에 표시된 대로, 스토리지 볼륨은 다양한 실시예들에서 네트워크-기반 데이터 저장소의 일부로서 구현된 스토리지로 프로비저닝될 수 있다. 네트워크-기반 데이터 저장소는 블록-기반 데이터 저장소, 또는 스토리지 클라이언트에서 구현된 파일 시스템이 활용할 수 있는 다른 데이터 저장소일 수 있다. 스토리지 클라이언트는 스토리지 클라이언트에서 구현된 파일 시스템을 위한 스토리지로서 서비스하는 네트워크-기반 데이터 저장소에 스토리지 볼륨을 마운트하도록 구성될 수 있는 임의의 시스템, 프로그램, 또는 디바이스일 수 있다. 적어도 일부 실시예들에서, 네트워크-기반 스토리지 프로토콜 (예를 들어, iSCSI(internet small computer system interface))은 마운트 하고 스토리지 클라이언트와 네트워크-기반 데이터 저장소에 스토리지 볼륨간에 통신하는데 이용될 수 있다. 다수의 스토리지 클라이언트들이 일부 실시예들에서, 액세스 동일한 스토리지 볼륨을 액세스할 수 있고 각각은 따라서 이하에 설명된 기술들을 수행할 수 있다.
적어도 일부 실시예들에서, 스케일링 정책은 스토리지 볼륨을 프로비저닝 하기 위한 요청과 함께 포함될 수 있다. 예를 들어, 네트워크-기반 인터페이스, 예컨대 API 또는 GUI는 프로비저닝 요청을 제출하고 및 스토리지 볼륨에 대한 스케일링 정책을 정의하는데 사용될 수 있다. 스케일링 정책은 하나 이상의 다수의 상태들을 포함할 수 있다. 예를 들어, 스케일링 정책은 상이한 임계값들 또는 알람들 뿐만 아니라 충족되거나 또는 트리거되는 경우에 결과적인 스케일링 액션들을 정의할 수 있다. 예를 들어, 의 양 스토리지 볼륨에서의 이용 가능한 스토리지 용량의 양은 바닥 및/또는 최대 임계값들을 가질 수 있고, 이들은 만약 초과된다면 스토리지 볼륨에 스토리지 용량의 양이 그에 따라서 증가되거나 또는 축소되게 한다. 유사하게, 다른 예에서, 스토리지 볼륨의 일부 (또는 전부)를 저장하는 하나 이상의 스토리지 디바이스들에서의 IOPs(input/output operations per second)의 숫자와 같은 스토리지 볼륨의 성능 특성들. 스케일링 정책은 트리거링된 알람에 응답하여 취해지는 액션을 정의할 수 있다. 예를 들어, 스케일링 정책은 스토리지 볼륨이 증가되거나 또는 축소되는 비율 또는 양을 정의할 수 있다. 일부 실시예들에서, 스케일링 정책은 볼륨이 재분배되어야 하는지 여부를 표시하기 위해 스토리지 볼륨의 일부 (또는 그것의 전부)를 유지하는 많은 복제품(replicas) 또는 노드들을 표시할 수 있다. 일부 실시예들에서, 스케일링 정책은 만약 네트워크-기반 데이터 저장소가 스토리지 서비스이면 비용 임계값들의 면에서 정의될 수 있다. 일부 실시예들에서, 스케일링 정책은 예컨대 다수의 상이한 요청 필드들 및/또는 메시지 플래그들에 다양한 정보를 입력함으로써 API를 이용하여 네트워크-기반 데이터 저장소에 제공되고 그리고 설명될 수 있다. 스케일링 정책은 다양한 인간-판독가능한 및/또는 스크립트기술들 (예를 들어, XML 또는 JSON)을 이용하여 정의될 수 있다. 다양한 실시예들에서, 스케일링 정책은 변경될 수 있거나, 대체될 수 있거나, 및/또는 삭제될 수 있다. 스케일링 정책들은 적어도 일부 실시예들에서 클라이언트들 및/또는 네트워크-기반 제공자에 의해 변경되거나 또는 제거될 수 있다.
다양한 실시예들에서, 스토리지 볼륨 (또는 만약 네트워크-기반 데이터 저장소에 걸쳐 감시된다면 스토리지 볼륨들)은 (620)에 표시된 대로 감시될 수 있다. 스케일링 이벤트가 발생하는지 여부를 나타내는 다양한 성능 메트릭들, 트래픽 메트릭들, 및/또는 임의의 다른 정보가 수집되거나 및/또는 분석될 수 있다. 제어 플레인(control plane), 또는 다른 감시 컴포넌트는 일부 실시예들에서, 스토리지 볼륨을 유지하는 다양한 스토리지 노드들 또는 컴포넌트들로부터 보고를 수신할 수 있거나, 또는 스토리지 볼륨과 상호작용할 수 있다 (예를 들어, 부하 분산기 또는 다른 트래픽 제어기). 일부 실시예들에서, 스토리지 클라이언트들은 다양한 성능 메트릭들을 또한 제공할 수 있다. 스케일링 이벤트는 다양한 실시예들에서 (630)으로부터의 긍정적인 출력에 표시된 스토리지 볼륨에 대한 지정된 스케일링 정책에 따라 감지될 수 있다. 스케일링 이벤트는 성능 메트릭들의 분석에 기초하여 파악될 수 있는 스토리지 볼륨에 대한 스케일링 정책 상태의 실패/만족에 의해 트리거링될 수 있다. 트리거링된 스케일링 이벤트는 다양한 실시예들에서 스케일링 정책에 정의된 대응하는 반응 액션을 나타낼 수 있다.
일부 실시예들에서, 네트워크-기반 데이터 저장소 정책들, 배치 기법들, 또는 다른 서비스 관리 동작들 또는 제약들은 스토리지 볼륨들에 대하여 지정된 디폴트(default) 스케일링 정책들로서 역할을 할 수 있다. 예를 들어, 스케일링 이벤트는 특정한 스토리지 노드 (다수의 상이한 스토리지 볼륨들의 부분들을 호스팅하는 멀티-테넌트일 수 있는) 상에 이용 가능한 스토리지 용량인지가 감지될 수 있다. 특정한 스토리지 노드상에 하나 이상의 스토리지 볼륨들에 대하여, 스케일링 이벤트는 하나 이상의 새로운 스토리지 위치들로 스토리지 볼륨의 재분배를 트리거 할 수 있다 (이는 스토리지 볼륨에 대하여 변경된 스토리지 위치들에 기초하여 파일 시스템 변화들을 초래할 수 있다). 유사하게, 열 관리, 트래픽 제어들, 및/또는 다른 스토리지 시스템 관심사항들이 스토리지 볼륨들에 대한 파일 시스템 I/O 요청들을 취급하는 작업부하를 재분배(또는 통합하기) 위해 스케일링 이벤트들을 트리거 할 수 있다.
만약 스토리지 볼륨에 대하여 어떤 스케일링 이벤트도 감지되지 않으면, 그러면 (620)으로부터 부정적 출력으로 표시된 대로, 스토리지 볼륨의 감시가 계속될 수 있다. 만약 스토리지 볼륨에 대하여 스케일링 이벤트가 감지되면, 그러면 (630)으로부터 긍정적인 출력으로 표시된 대로, 스토리지 볼륨이 동적으로 스케일링될 수 있다. (640)에 표시된 대로, 다양한 실시예들에서, 스토리지 볼륨을 유지하는 스토리지는 스케일링 정책에 따라 스토리지 볼륨을 동적으로 스케일링 하기 위해 변경될 수 있다. 따라서, 현재 스토리지 자원들 및 디바이스들, 또는 새로운 스토리지 자원들 또는 디바이스들 (예를 들어, 디스크 드라이브들 또는 스토리지 노드들)의 부분들은 스토리지 볼륨을 유지하는 것에 추가되거나 또는 거기서 제거될 수 있다. 적어도 일부 실시예들에서, 영구 스토리지의 변경은 정보 스토리지 클라이언트로부터 수신된 정보에 응답하여 수행될 수 있다. 예를 들어, 도 7에 관해서 이하에서 더 상세하게 설명되는 것과 같이, 파일 시스템은 스토리지 볼륨을 더 작은 사이즈로 스케일링하기 위해서 어떤 스토리지 위치들을 스토리지 볼륨으로부터 제거할지를 결정할 수 있다. 상기에서 언급한 바와 같이, 영구 스토리지의 변경은 스케일링 정책에 따라 수행될 수 있는데, 이는 예를 들어, 스토리지 용량 및/또는 스토리지 대역폭 (예를 들어, IOPs)이 스토리지 볼륨에 대하여 증가되거나 또는 축소될 수 있는 비율을 제한할 수 있다.
(650)에 표시된 대로, 스토리지 볼륨에 대하여 감지된 스케일링 이벤트는 다양한 실시예들에서 스토리지 클라이언트에 표시될 수 있다. 스토리지 클라이언트에서의 파일 시스템이 업데이트되어 스케일링된 스토리지 볼륨을 활용하도록 표시(indication)가 제공될 수 있다. 예를 들어, 일부 실시예들에서, 표시는 예컨대 스토리지 볼륨에서 증가되거나 또는 축소된 스토리지의 양 (예를 들어, 데이터 블록들/페이지들의 수)을 제공함으로써 파일 시스템을 위하여 스토리지 클라이언트에서 재사이즈(resize) 동작들을 수행하기 위한 정보 또는 파라미터들을 제공할 수 있다. 표시는 스토리지 클라이언트에서 동작하는 네트워크-기반 데이터 저장소 에이전트(agent) 또는 운영 체제가 파일 시스템을 업데이트하기 위해 수행할 수 있는 스크립트(script) 또는 실행가능한 것을 제공할 수 있다. 일부 실시예들에서, 스케일링 이벤트의 표시는 스토리지 볼륨에 변화에 관한 간단한 통지를 스토리지 클라이언트에 제공할 수 있다. 네트워크-기반 데이터 저장소는 스토리지 볼륨에 대한 스케일링 이벤트의 결과로서 새로운/재구성된 스토리지 위치들을 스케일링 이벤트 전에 스토리지 클라이언트에 제공된 해당 스토리지 위치들과 링크하는 매핑 정보를 유지할 수 있기 때문에 파일 시스템에 대한 업데이트는 간단하게 증가되거나 또는 축소된 스토리지를 확인할 수 있다(재사이즈 동작들에 대한 부담을 쉬프트(shift)시켜 예컨대 스토리지 클라이언트에서 파일 시스템 대신에 네트워크-기반 데이터 저장소에 파일들을 조각모으기(defrag)하여).
스토리지 클라이언트들에서 구현된 파일 시스템들은 앞에서 언급한 대로 상이한 방식들로, 네트워크-기반 데이터 저장소에 스케일링된 스토리지 볼륨들에 응답할 수 있다. 예를 들어, 일부 파일 시스템들은 온라인 재사이즈 기능을 구현할 수 있어서 스케일 스토리지 노드의 사이즈의 표시를 스토리지 클라이언트에 제공하기에 충분할 수 있고, 파일 시스템이 추가 보조 없이 표시된 사이즈에 따라 업데이트되거나 또는 네트워크-기반 데이터 저장소와 상호작용하는 것을 허용한다. 그러나, 일부 파일 시스템들은 스토리지 클라이언트에서 파일 시스템 업데이트 및/또는 네트워크-기반 데이터 저장소에서 스토리지 볼륨을 재스케일링하기 위해 제어 플레인 (또는 스토리지 볼륨 재스케일링을 지시하는 다른 네트워크-기반 데이터 저장소 컴포넌트)과 상호작용, 협력 및/또는 조정할 수 있다. 도 7 은 일부 실시예들에 따른 파일 시스템을 위한 스토리지 볼륨에 스케일링 이벤트에 따른 파일 시스템 업데이트를 위한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
상이한 유형들의 스케일링 이벤트들, 예컨대 스토리지 볼륨을 키우거나(grow) 또는 줄이는(shrink) 스케일링 이벤트들이 다양한 실시예들에서 스토리지 클라이언트에서 상이하게 취급될 수 있다. (710)에 표시된 대로, 일부 실시예들에서, 스토리지 클라이언트에서 구현된 파일 시스템을 위한 네트워크-기반 데이터 저장소에서 구현된 스토리지 볼륨을 키우는 스케일링 이벤트의 표시가 스토리지 클라이언트에서 수신될 수 있다. 표시는 다양한 실시예들에서 증가 양을 제공할 수 있다. 예를 들어, 표시는 스케일링된 스토리지 볼륨에 할당된 스토리지 스페이스의 페이지들 또는 추가 데이터 블록들의 수를 제공할 수 있다. 일부 실시예들에서, 매핑 정보, 예컨대 스토리지 볼륨에 할당된 특정 로직 블록들이 표시될 수 있거나, 또는 이런 결정들은 스토리지 클라이언트에서 파일 시스템에 대해 남겨질 수 있거나/리저브드될 수 있다.
(720)에 표시된 대로, 파일 시스템은 다양한 실시예들에서 표시된 스케일링 이벤트에 따라 스토리지 볼륨에 대하여 추가 스토리지 용량을 포함하도록 업데이트될 수 있다. 예를 들어, 파일 시스템은 스토리지 클라이언트에서 추가 스토리지 스페이스를 사용 하게 할 수 있는 다른 프로그램들, 애플리케이션들, 컴포넌트들, 또는 디바이스들에 액세스 가능하게 하도록 추가 스토리지 용량을 만드는 파일 시스템 메타데이터 및/또는 다른 파일 시스템 구조들을 업데이트하는 하나 이상의 구성 동작들을 실행할 수 있다. 인덱스 구조들, 슈퍼블록들, 및/또는 아이노드(inode)들은 스케일링된 스토리지 볼륨을 활용하기 위해 파일 시스템을 업데이트 할 때 변경될 수 있는 많은 상이한 파일 시스템 구조들의 일부이다. 일단 파일 시스템이 추가 스토리지 용량을 포함하도록 업데이트 된 후, 그런 다음 업데이트된 파일 시스템은 액세스 (730)에 표시된 대로 후속 파일 시스템 입력/출력 (I/O)에 대하여 스케일링된 스토리지 볼륨을 액세스하는데 이용될 수 있다. 예를 들어, 스토리지 클라이언트에서 파일 시스템을 활용하는 프로그램들, 애플리케이션들, 컴포넌트들, 또는 디바이스들은 이제 추가 파일들을 저장하기 위해 (또는 현존 파일들에 추가하여) 추가 스토리지를 활용할 수 있다.
일부 유형들의 스케일링 이벤트들에 대하여, 파일 시스템은 네트워크-기반 데이터에서 스토리지 볼륨을 스케일링하는데 더 큰 역할을 할 수 있다. 예를 들어, (730)에 표시된 대로, 일부 실시예들에서 스토리지 클라이언트에서 구현된 파일 시스템을 위한 네트워크-기반 데이터 저장소에서 구현된 스토리지 볼륨을 줄이는 스케일링 이벤트의 표시가 스토리지 클라이언트에서 수신될 수 있다. 표시는 스토리지 볼륨의 스토리지 용량 (예를 들어, 많은 데이터 블록들 또는 페이지들)에서의 감소를 식별할 수 있다.
다양한 실시예들에서 (740)에 표시된 대로, 스케일링 이벤트에 따라 스토리지 볼륨을 줄이기 위해 파일 시스템은 스토리지 볼륨에 할당된 스토리지 스페이스를 환원(reclaim)하도록 업데이트될 수 있다. 예를 들어, 스토리지 클라이언트에서 스토리지 스페이스를 사용할 수 있는 다른 프로그램들, 애플리케이션들, 컴포넌트들, 또는 디바이스들에 액세스 가능한 스토리지 용량을 줄이기 위해 파일 시스템 데이터 및/또는 다른 파일 시스템 구조들을 업데이트하도록 하나이상의 재사이즈 동작들이 수행될 수 있다. 인덱스 구조들, 슈퍼블록들, 및/또는 아이노드들(inode)은 스케일링된 스토리지 볼륨을 활용하기 위해 파일 시스템을 업데이트 할 때 변경될 수 있는 많은 상이한 파일 시스템 구조들의 일부이다. 적어도 일부 실시예들에서, 파일 시스템 업데이트의 일부로서, 다양한 실시예들에서, 줄어든 스토리지 볼륨에 대한 파일 시스템의 성능을 개선하기 위해 환원할 특정 스토리지 위치들이 식별될 수 있다. 예를 들어, 데이터를 잔류하는 스토리지 위치들에 타이트하게(tightly) 패킹(pack) 하기 위해 환원을 위한 어떤 스토리지 위치들이 선택될 수 있다. 스토리지 클라이언트에서 파일 시스템은 어떤 스토리지 위치들이 네트워크-기반 데이터 저장소 (스토리지 클라이언트에서 파일 시스템의 구현에 관하여 애그노스틱(agnostic)일 수 있는)보다 더 잘 환원하는데 더 많은 장점들이 있는지를 이해할 수 있다. 다양한 실시예들에서 (750)에 표시된 대로 네트워크-기반 데이터 저장소에서 영구 스토리지에 환원할 스토리지 스페이스를 식별하는 스토리지 볼륨에 대한 응답이 제어 플레인에 발송될 수 있다. 적어도 일부 실시예들에서, 환원할 특정 스토리지 스페이스 (예를 들어, 특정 로직 데이터 블록들 또는 페이지들을 식별하는)을 식별하는 응답이 수신될 때까지 스토리지 볼륨의 영구 스토리지는 변경되지 않을 수 있다.
일단 파일 시스템이 스토리지 볼륨내 환원된 스토리지 스페이스를 제거하도록 업데이트 된 후, 그런 다음 업데이트된 파일 시스템은 액세스 (730)에 표시된 대로 후속 파일 시스템 입력/출력 (I/O)에 대하여 스케일링된 스토리지 볼륨을 액세스하는데 이용될 수 있다. 예를 들어, 스토리지 클라이언트에서 파일 시스템을 활용하는 프로그램들, 애플리케이션들, 컴포넌트들, 또는 디바이스들은 더 이상 환원된 스토리지 스페이스를 활용하지 않거나 또는 추가 파일들을 (또는 현존 파일들에 추가하여)을 저장할 때 해당 스토리지 스페이스를 고려하지 않을 수 있다.
비록 엘리먼트들 (730) 내지 (750)에 대하여 스토리지 볼륨을 줄이기 위한 상기에서 설명된 예제는 스토리지 클라이언트에서 파일 시스템과 네트워크-기반 데이터 저장소간의 스토리지 스페이스들의 환원을 조정하는 것을 포함하지만, 적어도 일부 실시예들에서, 네트워크-기반 데이터 저장소가 스토리지 클라이언트에서 조각모으기(defragmentation) 또는 스토리지 스페이스들의 선택을 수행하지 않고 환원하기 위해 (즉, 조각모으기 수행) 어떤 스토리지 스페이스들을 선택할 수 있도록 파일 시스템 I/O 요청들을 서비스하기 위한 매핑 정보를 네트워크-기반 데이터 저장소는 유지할 수 있다. 예를 들어, 네트워크-기반 데이터 저장소로부터 스토리지 클라이언트에 파일 시스템에 제공된 로직 블록 번호들은 스토리지 볼륨에 대한 영구 스토리지에 대응하는 로직 블록 번호들과 다를 수 있다. 매핑 정보는 제어 플레인, 또는 네트워크-기반 데이터 저장소의 다른 컴포넌트가 스토리지 클라이언트상에 해당 작업부하(workload)를 부과하지 않고 환원할(즉, 조각모으기할) 스토리지 스페이스들을 최적으로 선택하는 것을 허용할 수 있다. 대신에, 네트워크-기반 데이터 저장소에서 수신된 스토리지 클라이언트로부터의 파일 시스템 I/O 요청들은 요청을 서비스하기 위해 스토리지 볼륨에 대하여 유지되는 매핑 정보에 따라 이동(translate)될 수 있다.
다양한 실시예들에서 본 출원에서 설명된 방법들은 하드웨어 및 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 예를 들어, 일 실시예에서, 방법들은 프로세서들에 결합된 컴퓨터-판독가능한 스토리지 매체상에 저장된 프로그램 명령들을 실행시키는 하나 이상의 프로세서들을 포함하는 컴퓨터 시스템 (예를 들어, 도 8에서의 컴퓨터 시스템)에 의해 구현될 수 있다. 프로그램 명령들은 본 출원에서 설명된 기능(예를 들어, 본 출원에서 설명된 데이터베이스 서비스들/시스템들 및/또는 스토리지 서비스들/시스템들을 구현하는 다양한 서버들 및 다른 컴포넌트들의 기능)을 구현하도록 구성될 수 있다. 도면들에 예시되며 본 출원에서 설명된 다양한 방법들은 방법들의 예시적인 실시예들을 나타낸다. 임의의 방법의 순서는 변경될 수 있으며, 다양한 요소들이 부가되고, 재순서화되고, 조합되고, 생략되고, 수정될 수 있다.
앞에서의 것들은 이하의 항목들을 고려하여 더 잘 이해될 수 있다:
1. 시스템에 있어서,
복수의 스토리지 클라이언트(storage client)들을 위한 하나 이상의 개별 스토리지 볼륨들을 유지하는 블록-기반 스토리지 서비스를 구현하는 복수의 컴퓨팅 노드들;
상기 복수의 스토리지 볼륨들을 유지하기 위한 스토리지를 제공하는 복수의 스토리지 노드들;
상기 블록-기반 스토리지 서비스를 위한 제어 플레인(control plane)을 구현하는 상기 복수의 컴퓨팅 노드들의 적어도 일부로서, 상기 제어 플레인은 :
상기 복수의 스토리지 볼륨들을 감시하고;
적어도 부분적으로, 상기 복수의 스토리지 볼륨들의 감시에 기초하여, 임의의 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 복수의 스토리지 볼륨들 중 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하고, 상기 스토리지 볼륨은 상기 복수의 스토리지 클라이언트들 중 임의의 스토리지 클라이언트에서 마운트(mount)되고 파일 시스템을 위하여 구성되고;
상기 스케일링 이벤트의 감지에 응답하여:
상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 동적으로 스케일링하기 위해 상기 스토리지 볼륨에 할당된 상기 스토리지를 변경하고; 및
상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하여 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 스토리지에 활용하기 위해 업데이트되도록 구성된다.
2. 항목 1의 시스템에 있어서, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책은 상기 스토리지 클라이언트로부터 상기 블록-기반 스토리지 서비스에 대한 인터페이스를 통하여 수신된다.
3. 항목 1의 시스템에 있어서,
상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하고;
상기 스케일링 이벤트에 따라 상기 파일 시스템을 업데이트하고; 및
상기 업데이트된 파일 시스템을 활용하여 후속 파일 시스템 입력/출력 (I/O)대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 구성된, 상기 스토리지 클라이언트를 더 포함한다.
4. 항목 1의 시스템에 있어서,
상기 파일 시스템에 대한 하나 이상의 성능 메트릭들(performance metric)을 수집하고; 및
상기 하나 이상의 성능 메트릭들을 상기 제어 플레인으로 발송하도록 구성된 상기 스토리지 클라이언트를 더 포함하되; 및
상기 스케일링 이벤트의 감지는 추가로 상기 스토리지 클라이언트에서 수집된 상기 하나 이상의 성능 메트릭들에 기반된다.
5. 항목 1의 시스템에 있어서, 상기 블록-기반 스토리지 서비스는 제공자 네트워크의 일부로 구현된 복수의 네트워크-기반 서비스들 중 하나이고, 상기 스토리지 클라이언트는 상기 제공자 네트워크에 상기 다른 네트워크-기반 서비스들 중 하나의 일부로 구현된다.
6. 방법에 있어서,
하나 이상의 컴퓨팅 디바이스들에 의해,
스토리지 클라이언트를 위해 네트워크-기반 데이터 저장소로서 구현된 스토리지에 스토리지 볼륨을 유지하는 단계로서, 상기 스토리지 볼륨은 상기 스토리지 클라이언트에서 마운트되고 파일 시스템을 위하여 구성되는, 상기 유지하는 단계;
상기 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하는 단계;
상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 감지에 응답하여:
상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 동적으로 스케일링하기 위해 상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계; 및
상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하는 단계로서, 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 스토리지에 활용하도록 업데이트를 수행하는 것을 포함한다.
7. 항목 6의 방법에 있어서, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책은 상기 스토리지 클라이언트로부터 상기네트워크-기반 데이터 저장소에 대한 인터페이스를 통하여 수신된다.
8. 항목 6의 방법에 있어서, 상기 네트워크-기반 데이터 저장소는 상기 스토리지 클라이언트를 포함하는 복수의 상이한 스토리지 클라이언트들에 대한 상기 스토리지 볼륨을 포함하는 복수의 스토리지 볼륨들을 유지하는 멀티-테넌트(multi-tenant), 블록-기반 스토리지 서비스이고, 상기 스토리지 볼륨을 유지하는 상기 스토리지는 상기 복수의 스토리지 볼륨들을 유지하는 스토리지 디바이스들의 무리(collection) 중 일부이고, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 감지하는 단계는 적어도 부분적으로, 상기 복수의 스토리지 볼륨들을 유지하는 상기 스토리지 디바이스들의 무리 감시에 기반된다.
9. 항목 6의 방법에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 키우고(grow), 상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계는 상기 스토리지 볼륨에 추가 스토리지 스페이스를 할당하는 단계를 포함한다.
10. 항목 9의 방법에 있어서,
상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하는 단계;
상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 스토리지 볼륨에 대하여 추가 스토리지 용량을 포함하도록 상기 파일 시스템을 업데이트하는 단계; 및
상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력 (I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 상기 업데이트된 파일 시스템 활용하는 단계를 더 포함한다.
11. 항목 6의 방법에 있어서,
상기 유지하는 단계, 상기 감지하는 단계, 상기 변경하는 단계, 및 상기 표시하는 단계는 상기 네트워크-기반 데이터 저장소에 대한 제어 플레인에 의해 수행되고;
상기 스케일링 이벤트는 상기 스토리지 볼륨을 줄이고(shrink);
상기 방법은 :
상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하는 단계;
상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 스토리지 볼륨에 할당된 스토리지 스페이스를 환원(reclaim)하도록 상기 파일 시스템을 업데이트하는 단계; 및
상기 스토리지 클라이언트로부터, 상기 네트워크-기반 데이터 저장소에 대한 제어 플레인으로 상기 스토리지에 환원될 상기 스토리지 스페이스를 식별하는 스케일링 이벤트 응답을 발송하는 단계;
상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력 (I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 상기 업데이트된 파일 시스템을 활용하는 단계를 더 포함하되, 및
상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계는 상기 스토리지의 식별된 스토리지 스페이스를 환원시키는 단계를 포함한다.
12. 항목 6의 방법에 있어서, 상기 감지하는 단계, 상기 변경하는 단계, 및 상기 표시하는 단계는 상기 스토리지 볼륨을 디스마운트(dismount)하지 않고 수행된다.
13. 항목 6에 방법에 있어서, 상기 네트워크-기반 데이터 저장소는 멀티-테넌트, 블록-기반 스토리지 서비스이고 상기 스토리지 클라이언트는 상기 블록-기반 스토리지 서비스의 복수의 스토리지 클라이언트들 중 하나이다.
14. 항목 13에 방법에 있어서, 상기 블록-기반 스토리지 서비스는 제공자 네트워크의 일부로 구현된 복수의 네트워크-기반 서비스들 중 하나이고, 상기 복수의 스토리지 클라이언트들 중 적어도 다른 하나는 상기 제공자 네트워크에 상기 다른 네트워크-기반 서비스들 중 하나의 일부로 구현되고, 및 상기 스토리지 클라이언트는 상기 제공자 네트워크에 외부에 구현된다.
15. 프로그램 명령들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로그램 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하나이상의 컴퓨팅 디바이스들로 하여금:
스토리지 클라이언트를 위한 네트워크-기반 데이터 저장소로서 구현된 블록 기반 스토리지에 유지되는 스토리지 볼륨을 감시하고, 상기 스토리지 볼륨은 상기 스토리지 클라이언트에서 마운트(mount)되고 파일 시스템을 위하여 구성되고;
적어도 부분적으로 상기 감시에 기초하여, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하고;
상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 감지에 응답하여:
상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 동적으로 스케일링하기 위해 상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지를 변경하고; 및
상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하여 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 블록-기반 스토리지에 활용하도록 업데이트되는 것을 수행하게 한다.
16. 항목 15의 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책은 상기 스토리지 클라이언트로부터 상기 네트워크-기반 데이터 저장소에 대한 인터페이스를 통하여 수신된다.
17. 항목 15의 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 줄이고, 상기 스토리지 볼륨을 유지하는 상기 스토리지 변경에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 스토리지 볼륨에 할당된 상기 스토리지의 스토리지 스페이스 환원(reclaim)을 구현하게 한다.
18. 항목 15의 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 키우고, 상기 스토리지 볼륨을 유지하는 상기 스토리지 변경에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 스토리지 볼륨에 추가 스토리지 스페이스 할당을 구현하게 한다.
19. 항목 15의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하고;
상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 파일 시스템을 업데이트하고; 및
상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력 (I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하기 위해 상기 업데이트된 파일 시스템 활용을 구현하게 한다.
20. 항목 15의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 스케일링 이벤트 감지에 응답하여, 상기 스케일링 이벤트에 따라 상기 스케일링된 스토리지 볼륨으로 보내지는 파일 시스템 입력/출력 (I/O)을 서비스하기 위해 상기 네트워크-기반 데이터 저장소에서 유지되는 매핑 정보 업데이트를 구현하게 한다.
21. 항목 15 의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 매핑 정보의 업데이트는 상기 스케일링된 스토리지 볼륨에 대한 조각모으기(defragmentation)을 수행하지 않고 상기 스토리지 클라이언트에서 상기 파일 시스템이 업데이트되도록 하여 수행된다.
22. 항목 15 의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지 변경에서 상기 스토리지 클라이언트를 위한 상기 스토리지 볼륨을 동적으로 스케일링하기 위해, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로 :
상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지에서 상기 스토리지 볼륨에 대한 하나 이상의 스토리지 유지보수(maintenance) 동작들을 구현하게 한다.
23. 항목 15의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 네트워크-기반 데이터 저장소는 멀티-테넌트, 블록-기반 스토리지 서비스이고, 상기 블록-기반 스토리지 서비스는 제공자 네트워크의 일부로 구현된 복수의 네트워크-기반 서비스들 중 하나이고, 상기 스토리지 클라이언트는 상기 제공자 네트워크에 상기 다른 네트워크-기반 서비스들 중 하나의 일부로 구현된다.
도 8 은 다양한 실시예들에 따라 본 출원에서 설명된 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링을 구현하도록 구성된 컴퓨터 시스템을 예시하는 블록 다이어그램이다. 예를 들어, 컴퓨터 시스템 (1000)은 클라이언트 디바이스, 또는 네트워크-기반 스토리지 시스템의 복수의 노드들 또는 컴포넌트들 중 하나 또는 상이한 실시예들에서 파일 시스템 변화 로그들의 원격 버전들과의 상호 작용하기 위해 사용되는 항해(journaling) 파일 시스템 서비스를 구현하도록 구성될 수 있다. 컴퓨터 시스템 (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) 상에서 실행하는 클라이언트 애플리케이션은 본 출원에서 설명된 네트워크-기반 서비스들의 하나 이상의 컴포넌트들을 구현하는 서버들의 클러스터상에서 또는 단일 서버상에서 실행하는 서버 애플리케이션과 통신하기 위해 네트워크 인터페이스 (1040)를 사용할 수 있다. 다른 예에서, 컴퓨터 시스템 (1000)상에서 실행하는 서버 애플리케이션의 인스턴스는 다른 컴퓨터 시스템들 (예를 들어, 컴퓨터 시스템들 (1090))상에서 구현될 수 있는 서버 애플리케이션 (또는 다른 서버 애플리케이션)의 다른 인스턴스들과 통신하기 위해 네트워크 인터페이스 (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)를 포함할 수 있다. 예를 들어, 네트워크-기반 스토리지 시스템에 의해 저장되는 본 출원에서 설명된 정보는 상이한 시간들에 및 다양한 실시예들에서 영구 스토리지 (1060)에 및/또는 하나 이상의 원격 스토리지 디바이스들 (1070)상에 하나 이상의 노드들상에 데이터 저장소 (1045)에 또는 시스템 메모리 (1020)의 다른 부분에 저장될 수 있다. 유사하게, 저장되는 본 출원에서 설명된 정보는 상이한 시간들에 및 다양한 실시예들에서 영구 스토리지 (1060)에 및/또는 하나 이상의 원격 스토리지 디바이스들 (1070)상에, 하나 이상의 노드들상의 데이터 저장소 (1045)에 또는 시스템 메모리 (1020)의 다른 부분에 저장될 수 있다. 일반적으로, 시스템 메모리 (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)은 도 8에 예시된 것들보다 더 많거나, 더 적거나 또는 상이한 컴포넌트들 (예를 들어, 디스플레이들, 비디오 카드들, 오디오 카드들, 주변 디바이스들, 다른 네트워크 인터페이스들 예컨대 ATM 인터페이스, 이더넷 인터페이스, 프레임 릴레이 인터페이스, 등)을 포함할 수 있다.
본 출원에서 설명된 임의의 분배 시스템 실시예들, 또는 임의의 그것들의 컴포넌트들이, 하나 이상의 네트워크기반 서비스들로 구현될 수 있다는 것에 유의한다. 예를 들어, 스토리지 서비스내 스토리지 노드는 네트워크기반 서비스들의 클라이언트에 본 출원에서 설명된 분산 스토리지 시스템들을 사용하는 데이터베이스 서비스들 및/또는 다른 유형들의 데이터 스토리지 서비스들을 제공할 수 있다. 일부 실시예들에서, 네트워크기반 서비스는 네트워크상에서 상호 운용 가능한 기계-대-기계 상호작용을 지원하도록 디자인된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 네트워크기반 서비스는 WSDL(Web Services Description Language)와 같은 기계-프로세스가능한 포맷으로 설명되는 인터페이스를 가질 수 있다. 다른 시스템들은 네트워크기반 서비스의 인터페이스의 설명에 의해 미리 규정된 방식에 네트워크기반 서비스와 상호 작용할 수 있다. 예를 들어, 네트워크기반 서비스는 다른 시스템들이 호출할 수 있는 다양한 동작들을 정의할 수 있고 다양한 동작들을 요청할 때 다른 시스템들이 따를 것으로 예상될 수 있는 특정 애플리케이션 프로그래밍 인터페이스 (API)을 정의할 수 있다.
다양한 실시예들에서, 네트워크기반 서비스는 네트워크기반 서비스들 요청과 관련된 파라미터들 및/또는 데이터를 포함하는 메시지의 사용을 통하여 요청되거나 또는 호출될 수 있다. 이런 메시지는 특정 마크업 언어 예컨대 확장 마크업 언어 (XML)에 따라 포맷될 수 있고/있거나 프로토콜 예컨대 SOAP(Simple Object Access Protocol)을 이용하여 엔캡슐레이트(encapsulate)될 수 있다. 네트워크기반 서비스들 요청을 수행하기 위해서, 네트워크기반 서비스들 클라이언트는 요청을 포함하는 메시지를 조합할 수 있고 인터넷기반 애플리케이션 계층 전송 프로토콜 예컨대 하이퍼텍스트 전송 프로토콜 (HTTP)을 이용하여 네트워크기반 서비스에 해당하는 자체 어드레스를 가진 엔드 포인트 (예를 들어, URL(Uniform Resource Locator)로 메시지를 전송할 수 있다.
일부 실시예들에서, 네트워크기반 서비스들은 메시지기반의 기술들보다는 REST(Representational State Transfer) 기술들을 이용하여 구현될 수 있다. 예를 들어, REST를 따라 구현된 네트워크기반 서비스는 SOAP 메시지내에 엔캡슐레이트된 파라미터들보다 HTTP 방법 예컨대 PUT, GET, 또는 DELETE내에 포함된 파라미터들을 통하여 호출될 수 있다.
비록 실시예들은 상기에서 상당히 상세하게 설명되었지만, 상기의 개시가 완전히 이해된 후에 당해 기술분야의 통상의 기술자들에 명확해질 수 있는 많은 변형예들 및 수정예들이 이루어질 수 있다. 이하의 청구항들은 모든 이러한 수정예들 및 변형예들을 포괄하는 것으로 해석되고, 그에 따라 상기 설명은 제한적 의미보다는 예시적으로 간주되는 것으로 의도된다.

Claims (15)

  1. 시스템에 있어서,
    복수의 스토리지 클라이언트(storage client)들을 위한 하나 이상의 개별 스토리지 볼륨들을 유지하는 블록-기반 스토리지 서비스를 구현하는 복수의 컴퓨팅 노드들;
    상기 복수의 스토리지 볼륨들을 유지하기 위한 스토리지를 제공하는 복수의 스토리지 노드들;
    상기 블록-기반 스토리지 서비스를 위한 제어 플레인(control plane)을 구현하는 상기 복수의 컴퓨팅 노드들의 적어도 일부
    를 포함하고, 상기 제어 플레인은:
    상기 복수의 스토리지 볼륨들을 감시하고;
    적어도 부분적으로, 상기 복수의 스토리지 볼륨들의 감시에 기초하여, 상기 복수의 스토리지 볼륨들 중 하나의 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하고, 상기 스토리지 볼륨은 상기 복수의 스토리지 클라이언트들 중 하나의 스토리지 클라이언트에서 마운트(mount)되고 파일 시스템을 위하여 구성되고;
    상기 스케일링 이벤트의 감지에 응답하여:
    상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 동적으로 스케일링하기 위해 상기 스토리지 볼륨에 할당된 상기 스토리지를 변경하고; 및
    상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하여 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 스토리지에 활용하기 위해 업데이트되도록 구성되는, 시스템.
  2. 청구항 1에 있어서,
    상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하고;
    상기 스케일링 이벤트에 따라 상기 파일 시스템을 업데이트하고; 및
    상기 업데이트된 파일 시스템을 활용하여 후속 파일 시스템 입력/출력(I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 구성된 상기 스토리지 클라이언트를 더 포함하는, 시스템.
  3. 청구항 1에 있어서,
    상기 파일 시스템에 대한 하나 이상의 성능 메트릭(performance metric)들을 수집하고; 및
    상기 하나 이상의 성능 메트릭들을 상기 제어 플레인으로 발송하도록 구성된, 상기 스토리지 클라이언트를 더 포함하되; 및
    상기 스케일링 이벤트의 감지는 추가로 상기 스토리지 클라이언트에서 수집된 상기 하나 이상의 성능 메트릭들에 기반되는, 시스템.
  4. 방법에 있어서,
    하나 이상의 컴퓨팅 디바이스들에 의해,
    스토리지 클라이언트를 위해 네트워크-기반 데이터 저장소의 부분으로서 구현된 스토리지에 스토리지 볼륨을 유지하는 단계로서, 상기 스토리지 볼륨은 상기 스토리지 클라이언트에서 마운트되고 파일 시스템을 위하여 구성되는, 상기 유지하는 단계;
    상기 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하는 단계;
    상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 감지에 응답하여:
    상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 스케일링하기 위해 상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계; 및
    상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하는 단계로서, 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 스토리지에 활용하도록 업데이트되도록 표시하는 단계
    를 수행하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책은 상기 스토리지 클라이언트로부터 상기 네트워크-기반 데이터 저장소에 대한 인터페이스를 통하여 수신되는, 방법.
  6. 청구항 4에 있어서, 상기 네트워크-기반 데이터 저장소는 상기 스토리지 클라이언트를 포함하는 복수의 상이한 스토리지 클라이언트들에 대한 상기 스토리지 볼륨을 포함하는 복수의 스토리지 볼륨들을 유지하는 멀티-테넌트(multi-tenant), 블록-기반 스토리지 서비스이고, 상기 스토리지 볼륨을 유지하는 상기 스토리지는 상기 복수의 스토리지 볼륨들을 유지하는 스토리지 디바이스들의 무리(collection) 중 일부이고, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 감지하는 단계는 적어도 부분적으로, 상기 복수의 스토리지 볼륨들을 유지하는 상기 스토리지 디바이스들의 무리를 감시하는 것에 기반되는, 방법.
  7. 청구항 4에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 키우고(grow), 상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계는 상기 스토리지 볼륨에 추가 스토리지 스페이스를 할당하는 단계를 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하는 단계;
    상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 스토리지 볼륨에 대하여 추가 스토리지 용량을 포함하도록 상기 파일 시스템을 업데이트하는 단계; 및
    상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력(I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 상기 업데이트된 파일 시스템을 활용하는 단계를 더 포함하는, 방법.
  9. 청구항 4에 있어서,
    상기 유지하는 단계, 상기 감지하는 단계, 상기 변경하는 단계, 및 상기 표시하는 단계는 상기 네트워크-기반 데이터 저장소에 대한 제어 플레인에 의해 수행되고;
    상기 스케일링 이벤트는 상기 스토리지 볼륨을 줄이고(shrink);
    상기 방법은 :
    상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하는 단계;
    상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 스토리지 볼륨에 할당된 스토리지 스페이스를 환원(reclaim)하도록 상기 파일 시스템을 업데이트하는 단계;
    상기 스토리지 클라이언트로부터, 상기 네트워크-기반 데이터 저장소에 대한 제어 플레인으로 상기 스토리지에 환원될 상기 스토리지 스페이스를 식별하는 스케일링 이벤트 응답을 발송하는 단계;
    상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력(I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하도록 상기 업데이트된 파일 시스템을 활용하는 단계를 더 포함하되; 및
    상기 스토리지 볼륨을 유지하는 상기 스토리지를 변경하는 단계는 상기 스토리지의 식별된 스토리지 스페이스를 환원시키는 단계를 포함하는, 방법.
  10. 프로그램 명령들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스들에 의해 실행될 때 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
    스토리지 클라이언트를 위한 네트워크-기반 데이터 저장소의 부분으로서 구현된 블록-기반 스토리지에 유지되는 스토리지 볼륨을 감시하고, 상기 스토리지 볼륨은 상기 스토리지 클라이언트에서 마운트(mount)되고 파일 시스템을 위하여 구성되고;
    적어도 부분적으로 상기 감시에 기초하여, 상기 스토리지 볼륨에 대하여 지정된 스케일링 정책에 따라 상기 스토리지 볼륨에 대한 스케일링 이벤트를 감지하고;
    상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 감지에 응답하여:
    상기 스케일링 정책에 따라 상기 스토리지 클라이언트에 대한 상기 스토리지 볼륨을 스케일링하기 위해 상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지를 변경하고; 및
    상기 스토리지 클라이언트에 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트를 표시하여 상기 스토리지 클라이언트에서 상기 파일 시스템은 상기 스케일링된 스토리지 볼륨을 상기 변경된 블록-기반 스토리지에 활용하도록 업데이트되도록 하는 것을 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  11. 청구항 10에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 줄이고, 상기 스토리지 볼륨을 유지하는 상기 스토리지 변경에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 스토리지 볼륨에 할당된 상기 스토리지의 스토리지 스페이스 환원(reclaim)을 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  12. 청구항 10에 있어서, 상기 스케일링 이벤트는 상기 스토리지 볼륨을 키우고, 상기 스토리지 볼륨을 유지하는 상기 스토리지 변경에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 스토리지 볼륨에 추가 스토리지 스페이스 할당을 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  13. 청구항 10에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
    상기 스토리지 클라이언트에서, 상기 스토리지 볼륨에 대한 상기 스케일링 이벤트의 표시를 수신하고;
    상기 스토리지 클라이언트에서, 상기 스케일링 이벤트에 따라 상기 파일 시스템을 업데이트하고; 및
    상기 스토리지 클라이언트에서, 후속 파일 시스템 입력/출력(I/O)에 대하여는 상기 스케일링된 스토리지 볼륨을 액세스하기 위해 상기 업데이트된 파일 시스템을 활용하는 것을 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  14. 청구항 10에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
    상기 스케일링 이벤트 감지에 응답하여, 상기 스케일링 이벤트에 따라 상기 스케일링된 스토리지 볼륨으로 보내지는 파일 시스템 입력/출력(I/O)을 서비스하기 위해 상기 네트워크-기반 데이터 저장소에서 유지되는 매핑 정보 업데이트를 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  15. 청구항 10에 있어서, 상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지 변경에서 상기 스토리지 클라이언트를 위한 상기 스토리지 볼륨을 스케일링하기 위해, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로 :
    상기 스토리지 볼륨을 유지하는 상기 블록-기반 스토리지에서 상기 스토리지 볼륨에 대한 하나 이상의 스토리지 유지보수(maintenance) 동작들을 수행하는 것을 구현하게 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
KR1020177015062A 2014-11-05 2015-11-05 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링 KR101920173B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/534,097 2014-11-05
US14/534,097 US9628350B2 (en) 2014-11-05 2014-11-05 Dynamic scaling of storage volumes for storage client file systems
PCT/US2015/059318 WO2016073775A1 (en) 2014-11-05 2015-11-05 Dynamic scaling of storage volumes for storage client file systems

Publications (2)

Publication Number Publication Date
KR20170077231A true KR20170077231A (ko) 2017-07-05
KR101920173B1 KR101920173B1 (ko) 2018-11-19

Family

ID=54705804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177015062A KR101920173B1 (ko) 2014-11-05 2015-11-05 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링

Country Status (9)

Country Link
US (5) US9628350B2 (ko)
EP (2) EP4044016A3 (ko)
JP (1) JP6381801B2 (ko)
KR (1) KR101920173B1 (ko)
CN (2) CN111625201B (ko)
AU (1) AU2015342945B2 (ko)
CA (1) CA2966355C (ko)
SG (1) SG11201703728TA (ko)
WO (1) WO2016073775A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200114746A (ko) 2019-03-29 2020-10-07 한국전자통신연구원 동적 데이터의 안전한 분산 데이터 관리를 위한 방법 및 시스템

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665633B2 (en) 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
US11386115B1 (en) * 2014-09-12 2022-07-12 Amazon Technologies, Inc. Selectable storage endpoints for a transactional data storage engine
US9628350B2 (en) 2014-11-05 2017-04-18 Amazon Technologies, Inc. Dynamic scaling of storage volumes for storage client file systems
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US9971525B2 (en) * 2015-02-26 2018-05-15 Red Hat, Inc. Peer to peer volume extension in a shared storage environment
US9792168B2 (en) * 2015-04-15 2017-10-17 Dell Products, Lp System and method for cloud remediation of a client with a non-bootable storage medium
US10817544B2 (en) * 2015-04-20 2020-10-27 Splunk Inc. Scaling available storage based on counting generated events
US10282455B2 (en) 2015-04-20 2019-05-07 Splunk Inc. Display of data ingestion information based on counting generated events
US10078562B2 (en) * 2015-08-18 2018-09-18 Microsoft Technology Licensing, Llc Transactional distributed lifecycle management of diverse application data structures
TWI587217B (zh) * 2016-03-07 2017-06-11 威聯通科技股份有限公司 電子裝置及擴增其儲存容量的方法
US11314413B2 (en) * 2016-04-12 2022-04-26 International Business Machines Corporation Adjustable tape storage capacity
US10606625B1 (en) 2016-09-16 2020-03-31 Google Llc Hot growing a cloud hosted block device
US10481836B2 (en) * 2016-09-27 2019-11-19 Bank Of America Corporation Machine learning method and system for predicting file controls
US9678683B1 (en) 2016-11-01 2017-06-13 Red Hat, Inc. Lazy persistent storage volume provisioning
US10868863B1 (en) 2016-12-14 2020-12-15 Ocient Inc. System and method for designating a leader using a consensus protocol within a database management system
US10545699B2 (en) * 2017-04-11 2020-01-28 International Business Machines Corporation Dynamic retention policies and optional deletes
CN109391498B (zh) * 2017-08-10 2021-07-16 华为技术有限公司 网络组件的管理方法和网络设备
CN108572795B (zh) * 2017-12-21 2021-05-25 北京金山云网络技术有限公司 基于搭建存储虚拟化的扩容方法、装置、设备和存储介质
US11023128B2 (en) * 2018-03-16 2021-06-01 Portworx, Inc. On-demand elastic storage infrastructure
JP6751111B2 (ja) * 2018-04-26 2020-09-02 株式会社日立製作所 ストレージシステム、ストレージシステムの制御方法及び管理ノード
CN109005056B (zh) * 2018-07-16 2020-06-23 网宿科技股份有限公司 基于cdn应用的存储容量评估方法和装置
US11030314B2 (en) * 2018-07-31 2021-06-08 EMC IP Holding Company LLC Storage system with snapshot-based detection and remediation of ransomware attacks
US11249852B2 (en) 2018-07-31 2022-02-15 Portwonx, Inc. Efficient transfer of copy-on-write snapshots
US11652883B2 (en) * 2018-08-25 2023-05-16 Panzura, Llc Accessing a scale-out block interface in a cloud-based distributed computing environment
US11354060B2 (en) 2018-09-11 2022-06-07 Portworx, Inc. Application snapshot for highly available and distributed volumes
CN109358806A (zh) * 2018-09-25 2019-02-19 郑州云海信息技术有限公司 卷远程容量收缩方法、装置、设备及可读存储介质
CN112753028A (zh) * 2018-09-28 2021-05-04 亚马逊科技公司 远程储存库的客户端侧文件系统
US10740023B1 (en) * 2019-01-29 2020-08-11 Dell Products L.P. System and method for dynamic application access-based mapping
US11237747B1 (en) 2019-06-06 2022-02-01 Amazon Technologies, Inc. Arbitrary server metadata persistence for control plane static stability
US11868772B2 (en) 2020-01-14 2024-01-09 Red Hat, Inc. Heterogeneous memory management and services
US11494128B1 (en) 2020-01-28 2022-11-08 Pure Storage, Inc. Access control of resources in a cloud-native storage system
US11720869B2 (en) 2020-07-27 2023-08-08 Bank Of America Corporation Detecting usage issues on enterprise systems and dynamically providing user assistance
FR3119060B1 (fr) * 2021-01-20 2023-03-24 Ebos Tech Interface d’application dynamique basée sur une intention ascendante
US11531467B1 (en) 2021-01-29 2022-12-20 Pure Storage, Inc. Controlling public access of resources in a secure distributed storage system
US11733897B1 (en) 2021-02-25 2023-08-22 Pure Storage, Inc. Dynamic volume storage adjustment
US11520516B1 (en) 2021-02-25 2022-12-06 Pure Storage, Inc. Optimizing performance for synchronous workloads
US11726684B1 (en) 2021-02-26 2023-08-15 Pure Storage, Inc. Cluster rebalance using user defined rules
US11388235B1 (en) * 2021-03-05 2022-07-12 Netapp, Inc. Decoupling volume deployment requirements and code implementation
US11775186B1 (en) 2021-08-04 2023-10-03 Amazon Technologies, Inc. Dynamic usage-metric-based configuration of storage volumes
US11561709B1 (en) * 2021-08-04 2023-01-24 Amazon Technologies, Inc. Dynamic recovery-objective-based configuration of backup volumes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095705A1 (en) * 2004-10-30 2006-05-04 James Wichelman Systems and methods for data storage management
US20070043923A1 (en) * 2005-08-16 2007-02-22 Shue Douglas Y Apparatus, system, and method for modifying data storage configuration
KR101340176B1 (ko) * 2005-08-25 2013-12-10 실리콘 이미지, 인크. 스마트 스케일러블 스토리지 스위치 아키텍처
US20140095826A1 (en) * 2009-03-12 2014-04-03 Vmware, Inc. System and method for allocating datastores for virtual machines

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389432B1 (en) 1999-04-05 2002-05-14 Auspex Systems, Inc. Intelligent virtual volume access
US6609187B1 (en) 1999-07-06 2003-08-19 Dell Products L.P. Method and apparatus for supporting resizing of file system partitions
US8195760B2 (en) * 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
JP2002222061A (ja) * 2001-01-25 2002-08-09 Hitachi Ltd 記憶領域を設定する方法、記憶装置およびプログラム記憶媒体
US6829688B2 (en) 2002-06-20 2004-12-07 International Business Machines Corporation File system backup in a logical volume management data storage environment
US7379990B2 (en) * 2002-08-12 2008-05-27 Tsao Sheng Ted Tai Distributed virtual SAN
US7509645B2 (en) 2002-10-17 2009-03-24 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed network attached storage system
US20050027938A1 (en) 2003-07-29 2005-02-03 Xiotech Corporation Method, apparatus and program storage device for dynamically resizing mirrored virtual disks in a RAID storage system
US7213021B2 (en) * 2004-03-11 2007-05-01 Hitachi, Ltd. Method and apparatus for storage network management
US20060101204A1 (en) * 2004-08-25 2006-05-11 Bao Bill Q Storage virtualization
US7409523B2 (en) 2005-12-16 2008-08-05 Microsoft Corporation Online storage volume shrink
JP2008204358A (ja) * 2007-02-22 2008-09-04 Hitachi Ltd 継続的データ保護方法および継続的データ保護システム
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8793223B1 (en) * 2009-02-09 2014-07-29 Netapp, Inc. Online data consistency checking in a network storage system with optional committal of remedial changes
JP5243991B2 (ja) * 2009-02-18 2013-07-24 株式会社日立製作所 ストレージシステム、容量管理方法、および管理計算機
EP2411918B1 (en) 2009-03-23 2018-07-11 Riverbed Technology, Inc. Virtualized data storage system architecture
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US9953178B2 (en) * 2010-02-03 2018-04-24 Os Nexus, Inc. Role based access control utilizing scoped permissions
US8479211B1 (en) * 2010-06-29 2013-07-02 Amazon Technologies, Inc. Dynamic resource commitment management
US9002907B2 (en) * 2010-08-30 2015-04-07 Unwired Planet, Llc Method and system for storing binary large objects (BLObs) in a distributed key-value storage system
KR101638436B1 (ko) 2010-12-10 2016-07-12 한국전자통신연구원 클라우드 스토리지 및 그의 관리 방법
US8601134B1 (en) * 2011-06-30 2013-12-03 Amazon Technologies, Inc. Remote storage gateway management using gateway-initiated connections
US9203900B2 (en) * 2011-09-23 2015-12-01 Netapp, Inc. Storage area network attached clustered storage system
CN102364474B (zh) * 2011-11-17 2014-08-20 中国科学院计算技术研究所 用于机群文件系统的元数据存储系统和管理方法
US20130227145A1 (en) * 2011-12-27 2013-08-29 Solidfire, Inc. Slice server rebalancing
US10394611B2 (en) 2012-11-26 2019-08-27 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system
WO2014087518A1 (ja) * 2012-12-06 2014-06-12 株式会社 日立製作所 ネットワークシステム及びその運用方法
US8977598B2 (en) * 2012-12-21 2015-03-10 Zetta Inc. Systems and methods for on-line backup and disaster recovery with local copy
CN103049574B (zh) * 2013-01-04 2015-12-09 中国科学院高能物理研究所 实现文件动态副本的键值文件系统及方法
US20140317681A1 (en) * 2013-03-15 2014-10-23 Jon Rav Gagan Shende Cloud forensics
CA3078018C (en) * 2013-03-15 2023-08-22 Amazon Technologies, Inc. Scalable analysis platform for semi-structured data
US20140359127A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Zero touch deployment of private cloud infrastructure
CN103561101A (zh) * 2013-11-06 2014-02-05 中国联合网络通信集团有限公司 一种网络文件系统
US9311194B1 (en) * 2014-03-28 2016-04-12 Google Inc. Efficient resource utilization in data centers
US10216770B1 (en) * 2014-10-31 2019-02-26 Amazon Technologies, Inc. Scaling stateful clusters while maintaining access
US9628350B2 (en) 2014-11-05 2017-04-18 Amazon Technologies, Inc. Dynamic scaling of storage volumes for storage client file systems
US10606625B1 (en) * 2016-09-16 2020-03-31 Google Llc Hot growing a cloud hosted block device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095705A1 (en) * 2004-10-30 2006-05-04 James Wichelman Systems and methods for data storage management
US20070043923A1 (en) * 2005-08-16 2007-02-22 Shue Douglas Y Apparatus, system, and method for modifying data storage configuration
KR101340176B1 (ko) * 2005-08-25 2013-12-10 실리콘 이미지, 인크. 스마트 스케일러블 스토리지 스위치 아키텍처
US20140095826A1 (en) * 2009-03-12 2014-04-03 Vmware, Inc. System and method for allocating datastores for virtual machines

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200114746A (ko) 2019-03-29 2020-10-07 한국전자통신연구원 동적 데이터의 안전한 분산 데이터 관리를 위한 방법 및 시스템

Also Published As

Publication number Publication date
CA2966355C (en) 2019-10-01
US9628350B2 (en) 2017-04-18
CN107077301A (zh) 2017-08-18
US20230344729A1 (en) 2023-10-26
AU2015342945A1 (en) 2017-05-25
CN111625201A (zh) 2020-09-04
EP4044016A2 (en) 2022-08-17
KR101920173B1 (ko) 2018-11-19
EP3215926A1 (en) 2017-09-13
CA2966355A1 (en) 2016-05-12
US11729073B2 (en) 2023-08-15
WO2016073775A1 (en) 2016-05-12
US20200220792A1 (en) 2020-07-09
AU2015342945B2 (en) 2018-02-08
US20170222890A1 (en) 2017-08-03
EP4044016A3 (en) 2022-11-30
CN107077301B (zh) 2020-06-26
JP6381801B2 (ja) 2018-08-29
SG11201703728TA (en) 2017-06-29
US11165667B2 (en) 2021-11-02
CN111625201B (zh) 2023-08-29
US20160127200A1 (en) 2016-05-05
EP3215926B1 (en) 2022-05-04
JP2017539000A (ja) 2017-12-28
US10594571B2 (en) 2020-03-17
US20220141100A1 (en) 2022-05-05

Similar Documents

Publication Publication Date Title
KR101920173B1 (ko) 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링
US9983825B2 (en) Efficient data volume replication for block-based storage
US10489422B2 (en) Reducing data volume durability state for block-based storage
US9792060B2 (en) Optimized write performance at block-based storage during volume snapshot operations
CN110609797B (zh) 基于块的存储的页面高速缓存存录
KR101764085B1 (ko) 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10594620B1 (en) Bit vector analysis for resource placement in a distributed system
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant