KR102031471B1 - 자원 배치 최적화를 위한 기회적 자원 이주 - Google Patents

자원 배치 최적화를 위한 기회적 자원 이주 Download PDF

Info

Publication number
KR102031471B1
KR102031471B1 KR1020177024942A KR20177024942A KR102031471B1 KR 102031471 B1 KR102031471 B1 KR 102031471B1 KR 1020177024942 A KR1020177024942 A KR 1020177024942A KR 20177024942 A KR20177024942 A KR 20177024942A KR 102031471 B1 KR102031471 B1 KR 102031471B1
Authority
KR
South Korea
Prior art keywords
resources
resource
migration
candidate
deployment
Prior art date
Application number
KR1020177024942A
Other languages
English (en)
Other versions
KR20170110708A (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 KR20170110708A publication Critical patent/KR20170110708A/ko
Application granted granted Critical
Publication of KR102031471B1 publication Critical patent/KR102031471B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

분산 시스템은 자원 배치를 최적화하기 위해 기회적 자원 이주를 구현할 수 있다. 자원은 분산 시스템의 상이한 자원 호스트들 간에 배치될 수 있다. 현재 배치의 평가는 분산 시스템에서 자원의 배치를 향상시키는 배치 기준에 따라 수행될 수 있다. 평가에 기초하여, 개선 임계치를 초과하는 자원의 장래의 이주는 이주시킬 후보 자원으로서 식별될 수 있다. 후보 자원에 대한 이주는 기회적으로 수행될 수 있다. 일부 실시예에서, 우선순위는 후보 자원들에 할당되고 이에 따라 후보 자원들이 이주를 수행하기 위해 선택된다.

Description

자원 배치 최적화를 위한 기회적 자원 이주
네트워크를 통해 하드웨어 자원, 소프트웨어 및 정보 스토리지의 가상화를 동적으로 공유하는 기술에 있어 최근에 혁명은 컴퓨팅의 신뢰성, 확장성, 및 비용 효율성을 증가시켰다. 보다 구체적으로, 가상화의 출현으로 요구시 가상 컴퓨팅 자원 및 스토리지를 제공할 수 있게 됨으로써 처리 자원 및 스토리지의 소비자는 즉시 인식된 컴퓨팅 및 스토리지 요구에 응하여 컴퓨팅 및 스토리지 비용을 융통성있게 구성할 수 있게 되었다. 가상화는 고객이 하드웨어 제조 및 전개의 지연과 비용에 의해 정해지는 프로비저닝 사이클로 고정 하드웨어를 구매하거나 임대하게 하지 않고, 요구시 프로세서 사이클과 스토리지를 구매할 수 있게 한다. 컴퓨팅 및 스토리지의 가용성을 결정하기 위해 미래의 수요 예측의 정확성에 의존하기보다, 사용자는 상대적으로 즉각적인 필요에 따라 컴퓨팅 및 스토리지 자원을 사용할 수 있다.
가상화된 컴퓨팅 환경은 컴퓨팅 자원의 가용성 및 내구성에 대해 다양한 보장을 제공할 수 있다. 다수의 자원 호스트 간에 컴퓨팅 자원을 분산하는 것은 상이한 가용성 및 내구성 특성을 제공할 수 있다. 예를 들어, 가상 컴퓨팅 자원은 블록 기반 스토리지를 제공할 수 있다. 이러한 블록 기반 스토리지는, 블록 기반 스토리지를, 이것이 지원하는 볼륨의 그리고 스토리지 가용성을 제공하는 가상화 상에서 실행되는 운영 시스템의 구조 및 기능 상의 세부사항과는 기능적으로 무관하게 만드는 것인 일련의 표준화된 스토리지 호출을 통해 다양한 컴퓨팅 가상화와 상호작용할 수 있는 스토리지 시스템을 제공한다. 블록 기반 스토리지를 제공하기 위해, 다양한 상이한 배치 최적화 및/또는 제약이 성능 보증을 제공하기 위해 구현될 수 있다. 자원 호스트 간에 블록 기반 스토리지 자원을 배치할 때, 스토리지를 배치하기 위한 최적화 및/또는 제약을 만족시키는 상이한 배치 옵션 중에서 선택하는 것은 어려울 수 있다.
도 1은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주에 대한 논리 블록도를 도시한다.
도 2는 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 구현하는 블록 기반 스토리지 서비스와 같은 다수의 네트워크 기반 서비스를 포함하는 제공자 네트워크를 도시하는 블록도이다.
도 3은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 구현하는 볼륨 배치를 도시하는 논리 블록도이다.
도 4는 일부 실시예에 따라, 낙관적 자원 이주를 위한 이주 큐를 도시하는 논리 블록도이다.
도 5는 일부 실시예에 따라, 블록 기반 스토리지 서비스에서 데이터 볼륨을 기회적으로(opportunistically) 이주하는 상호작용을 도시하는 논리 블록도이다.
도 6은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다.
도 7은 일부 실시예에 따라, 기회적 자원 이주를 위한 후보로서 자원을 식별하기 위한 다양한 방법 및 기술을 도시하는 하이-레벨 흐름도이다.
도 8은 일부 실시예에 따라, 후보 자원을 선택하고 이주하기 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다.
도 9는 일부 실시예에 따라, 이주 큐로부터 후보 자원을 제거하기 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다.
도 10은 일부 실시예에 따라, 예시적 컴퓨팅 시스템을 도시하는 블록도이다.
몇몇 실시예 및 예시적인 도면에 대해 실시예들이 예로서 본원에 설명되었지만, 당업자는 실시예가 설명된 실시예 또는 도면로 제한되지 않음을 인식 할 것이다. 도면 및 이에 대한 상세한 설명은 실시예를 개시된 특정 형태로 제한하려는 것이 아니라, 반대로, 첨부된 청구항에 의해 정의된 정신 및 범위 내에 있는 모든 수정, 등가물 및 대안예를 포함하는 의도임을 이해해야 한다. 본원에서 사용되는 표제는 단지 조직 목적을 위한 것이며 설명 또는 청구항의 범위를 제한하기 위해 사용하려는 것이 않는다. 이 출원 전반에 걸쳐 사용되는 바와 같이, "수 있다"라는 단어는 강제적 의미(즉, 해야 한다를 의미한다)가 아닌 관용적 의미(즉, 할 가능성을 가짐을 의미한다)로 사용된다. 마찬가지로, "들을 포함하다", "포함하는" 및 "을 포함하다"는 단어는 포함하지만 이것으로 제한되지는 않음을 의미한다.
본원에 기술된 시스템 및 방법은 자원 배치를 위한 기회적 자원 이주를 구현할 수 있다. 분산 시스템은 상이한 시스템, 서비스, 애플리케이션 및/또는 기능을 수행하거나 구현하기 위한 다양한 자원을 호스팅할 수 있다. 일부 자원은 상이한 자원 호스트들 간에 다수의 자원에 위치된, 보다 큰 분산 자원의 일부일 수 있다. 다른 자원은 개별적이거나 또는 독자형일 수 있다. 자원은, 다양한 유형의 물리적 또는 가상화된 컴퓨팅 자원, 스토리지 자원, 또는 네트워킹 자원 중 하나와 같은, 다양한 유형의 자원 중 하나일 수 있다. 예를 들어, 스토리지 서비스는 다수의 상이한 자원 호스트들에 걸쳐 서로 상이한 데이터 복제를 호스팅할 수 있다.
배치 결정은 생성 동안 상이한 자원 호스트들에 자원을 위치시키기 위해 이루어질 수 있다. 그러나, 동작을 시작하기 위해 자원이 배치될 필요가 있을 수도 있기 때문에, 최적의 위치가 가용할 때까지 자원 배치를 기다리는 것은 어려울 수 있다. 대신에, 자원 호스트에 자원의 초기 배치는 가용한 최상의 배치에 따라 이루어질 수 있다. 시간이 지남에 따라 차선의 배치(배치가 초기 배치시 자원에 대해 최상의 위치였음에도 불구하고)는 결국에는, 제대로 활용되지 못하는 자원 호스트, 분산 자원에 대한 비효율적이거나 덜 내구성있는 구성, 및/또는 전반적으로 자원 또는 분산 시스템에 대한 그외 여러 다른 종류의 낭비 또는 비효율성과 같은, 비용이 상당해지게 한다.
일부 실시예에서, 배치 결정은 배치 기준에 따라 이루어질 수 있다. 배치 기준은 전체적으로 분산 시스템에 걸친 자원의 배치뿐만 아니라, 개개의 자원에 대해 최상의 또는 최적의 배치 위치를 결정하기 위해 사용될 수 있다. 예를 들어, 자원의 가용성, 내구성 및/또는 그외 다른 성능 특성을 제공하거나 향상시키기 위해, 배치 기준은 자원이 배치되어질 특정 위치(예를 들면, 네트워크 라우터 또는 브릭과 같은 서로 다른 인프라스트럭처 존)를 결정하기 위해 사용될 수 있다. 이러한 위치가 가용하지 않다면, 배치 기준은 자원을 배치하기에 덜 최적인 위치(예를 들면, 배치된 자원이 통신하는 다른 자원과는 상이한 네트워크 라우터 또는 브릭과 같이, 덜 효율적인 인프라스트럭처 존 내에 있는 자원 호스트)를 나타낼 수 있다. 배치 기준은 분산 자원의 일부인 다른 자원과 함께 자원의 구성, 가용 바이트, IOP, 또는 슬롯, 바이트 대 IOP 밸런스과 같은 자원 활용 밸런스, 용량 단편화에의 영향, 하드웨어/소프트웨어 특성, 및/또는 다양한 원하는 위치 기반 구성을 포함할 수 있는데, 그러나 이들로 제한되지 않는다.
도 1은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 위한 논리 블록도를 도시한다. 기회적 자원 배치(120)는, 개개의 자원에 대해서나 및/또는 분산 시스템 내 자원들의 전체적인 배치에 대해 더 나은 배치인 다른 자원 호스트로 분산 시스템 내 자원들이 이주될 수 있도록 기회적 자원 이주(들)(140)을 수행하기 위해, 현재 배치된 자원(100)을 평가할 수 있다. 하나 이상의 컴퓨팅 시스템, 노드 또는 디바이스(예를 들면, 밑에 도 10에 시스템(1000))일 수 있는 자원 호스트는 분산 시스템의 자원을 호스팅하거나 구현하도록 구성될 수 있다.
기회적 자원 배치(120)는 자원의 구성에 관한 정보(예를 들어, 분산 자원의 개별적 또는 부분, 크기, 성능 특성, 등), 자원 호스트에 관한 정보(예를 들면, 호스트된 자원 수, 자원 활용(예를 들면, 처리, 네트워크, 스토리지, 대역폭, 등), 하드웨어/소프트웨어 구성, 또는 자원 호스트의 상태와 호스팅하는 능력을 결정하기 위한 그외 임의의 다른 데이터)와 같은, 현재 배치된 자원에 관한 정보를 입수할 수 있다. 기회적 이주를 위한 후보 자원으로서 자원을 식별하기 위해 비용-이익 이주 분석(130)이 수행될 수 있다. 비용-이익 이주 분석(130)은 이주된 자원, 이주되지 않은 다른 자원에 대한 배치, 및/또는 분산 시스템에서 장래의 이주가 더 일반적인 자원 배치를 향상시키게 될 이주를 위한 후보 자원을 식별하기 위해 수행될 수 있다. 예를 들어, 배치 데이터(110)는 자원(112a, 112b, 112c, 112d, 112e)의 최적성을 예시한다. 그래프는 최적 배치(118)와 비교하여 자원의 현재 배치(116)의 스코어, 백분율, 또는 이외 다른 표시를 나타낸다. 적어도 일부 실시예에서, 배치 스코어 또는 이외 다른 메트릭이 각각의 자원(112)마다 생성될 수 있다. 자원을 호스팅하기 위해 이용될 수 있는 자원 호스트에 관련하여 유사한 평가가 이루어질 수 있다. 가용 자원 호스트에 자원의 가능한 배치의 효과는 가설적으로 자원을 포함하는 가용 자원 호스트에 대한 배치 스코어를 생성함으로써 결정될 수 있다. 자원(114)의 배치 스코어에 근거한 이주의 효과가 각 자원(112)에 대해 그래프에 추가(예를 들어, 개선)로 도시되었다.
자원을 이동시키는 이주 동작은 얼마간의 비용을 발생시킬 수 있다. 따라서, 자원을 보다 나은 위치에 이동시키기 위해 이주 동작을 수행하는 비용은 이주에 의해 제공되는 이점과 비교검토될 수 있다. 예를 들어, 이주 동작 이익이 이주를 수행하는 비용보다 더 큰 자원들을 식별할 수 있는 개선 최적화 임계치가 구현될 수 있다. 비록 자원(112b)이 다른 자원들(112)에 관련하여 최악의 현재 배치를 가지고 있을지라도, 배치를 개선하기 위한 이주의 효과는 자원(112a, 112c, 112e)과 같은 다른 자원들만큼 크지 않을 수 있다. 자원(112b)(및 112d)에 대한 개선량은 개선 임계치를 초과하지 못할 수도 있다.
분산 시스템에 자원의 전체적인 배치를 반영하는 측정 또는 스코어(도시되지 않음)에 관해서도 유사한 분석이 이루어질 수 있다. 예를 들어, 자원(112a)과 같은 자원을 이주시키는 것이 전체 배치에 대해 이주 스코어에 미치는 효과는 전체 배치에 대한 이익이 이주 동작을 수행하기 위한 비용의 가치가 있는지를 결정하기 위해 최적화 임계치와 비교될 수 있다. 마찬가지로, 한 자원의 장래의 이주가 다른 자원의 배치를 개선 임계치를 초과하여 개선하여 이주를 수행하는지 여부를 검토하는, 다른 개개의 자원 또는 자원 그룹에 이주가 미치는 영향에 관련하여 동일한 분석이 수행될 수 있다.
기회적 자원 이주(들)(140)은 비용-이익 이주 분석(130)의 일부로서 식별되어진 후보 자원들에 대해 수행될 수 있다. 기회적 자원 이주(들)(140)은 자원 자신들의 동작을 간섭하지 않는 방식으로 스케줄링되거나 지시될 수 있다(예를 들어, 기회적 자원 이주(들)(140)은 백그라운드 프로세스 또는 서비스의 일부로서 수행될 수 있다). 적어도 일부 실시예에서, 보다 큰 또는 보다 이로운 효과를 갖는 이주가 더 빨리 수행되도록(예를 들어, 자원(112e)에 대한 이주 전에 자원(112c)에 대한 이주) 우선순위가 이주에 할당될 수 있다.
시간이 지남에 따라 기회적 자원 이주를 동적으로 수행하는 것은 분산 시스템 내 자원의 배치를 최적의 위치로 재조정할 수 있어, 자원 및 분산 시스템에 대해 달성하도록 배치 기준이 설계된 더 큰 효율, 내구성, 가용성, 또는 그외 임의의 다른 수행 목표를 달성한다. 예를 들어, 분산 자원(예를 들어, 마스터 및 슬레이브 쌍 또는 피어 노드 그룹)은 기회적 자원 이주의 결과로서 궁극적으로 달성될 수 있는 초기 배치에서 달성되지 않은 분산 자원의 다른 멤버에 대해 최적의 구성을 가질 수 있다. 또한, 이러한 최적의 배치에 대한 장벽은 다른 자원을 이주시킴으로써(이주가 일부 자원 또는 전체 분산 시스템에 대해 더 낫다면 다른 자원에 대한 심지어 덜 최적인 위치로) 제거될 수 있다. 예를 들어, 추가 자원을 호스팅할 수 없는 자원 호스트는 현재 차선인 다른 자원에 대한 최적의 배치를 제공할 수도 있을 위치로서 식별될 수 있다. 자원은 다른 자원을 호스팅함으로써 자원 호스트를 차선의 배치를 구체화하는데 사용할 수 있게 하기 위해 후보 자원으로서 식별되고 이주될 수 있다(호스트에서 이동된 자원이 동일 수준의 최적성 혹은 덜 최적인 위치에 배치될 수도 있을지라도). 개개의 자원에 대해 바람직한 구성이 또한 입수할 수 있다. 일부 실시예에서, 인프라스트럭처 존에 관한 배치가 매우 바람직할 수 있으며, 기회적 자원 이주를 구현하는 것은 상이한 자원 호스트로의 이주가 최적의 인프라스트럭처 존에 자원을 위치시킬 수 있게 한다.
이전의 설명은 제한하려는 것이 아니며 단지 자원 배치를 위한 기회적 자원 이주의 예로서 제공되는 것에 유의한다. 다양한 구성요소가 자원 배치를 수행할 수 있다. 상이한 수 또는 유형의 자원 및 배치 데이터가 채용될 수 있다.
이 명세서는 블록 기반 스토리지 서비스를 통해 제공되는 데이터 볼륨에 대한 기회적 이주와 같은, 제공자 네트워크의 하나 이상의 네트워크 기반 서비스를 통해 제공되는 자원 배치를 위한 기회적 자원 이주를 구현할 수 있는 제공자 네트워크의 일반적인 설명으로 시작된다. 이어, 블록 기반 스토리지 서비스에서 데이터 볼륨에 대한 볼륨 배치의 일부로서 채용될 수 있는 상이한 구성요소/모듈, 또는 구성요소/모듈의 배열을 포함하는, 블록 기반 스토리지 서비스의 다양한 예가 설명된다. 다음으로, 자원 배치를 위한 기회적 자원 이주를 구현하기 위한 다수의 상이한 방법 및 기술이 논의되는데, 이 중 일부는 첨부된 흐름도에 도시되어 있다. 마지막으로, 다양한 구성요소, 모듈, 시스템, 디바이스 및/또는 노드가 구현될 수 있는 예시적 컴퓨팅 시스템에 대한 설명이 제공된다. 다양한 예들이 명세서 전반에 걸쳐 제공된다.
도 2는 일부 실시예에 따라, 자원 배치를 위한 기회적 자원 이주를 구현하는 블록 기반 스토리지 서비스를 포함하는 다수의 네트워크 기반 서비스를 구현하는 제공자 네트워크를 도시한 블록도이다. 제공자 네트워크(200)는 인터넷 및/또는 이외 다른 네트워크를 통해 클라이언트(210)가 액세스할 수 있는 하나 이상의 서비스(다양한 유형의 클라우드 기반 컴퓨팅 또는 스토리지와 같은)를 제공하는 회사 또는 공공 부문 조직과 같은 실체에 의해 설정될 수 있다. 제공자 네트워크(200)는 제공자 네트워크(200)에 의해 제공되는 인프라스트럭처 및 서비스를 구현하고 분배하기 위해 필요한, 물리적 및/또는 가상화된 컴퓨터 서버, 스토리지 디바이스, 네트워킹 장비, 등(예를 들어, 도 10과 관련하여 후술되는 컴퓨팅 시스템(1000))의 모음과 같은, 다양한 자원 풀을 호스팅하는 다수의 데이터 센터를 포함할 수 있다. 일부 실시예에서, 제공자 네트워크(200)는 가상 컴퓨팅 서비스(230)와 같은 컴퓨팅 자원, 블록 기반 스토리지 서비스(220) 및 이외 다른 스토리지 서비스(240)(객체/키-값 기반 데이터 스토어 또는 다양한 유형의 데이터베이스 시스템을 포함할 수 있는)과 같은 스토리지 서비스, 및/또는 이외 임의의 다른 유형의 네트워크 기반 서비스(250)를 제공할 수 있다. 클라이언트(210)는 네트워크(260)를 통해 제공자 네트워크(200)에 의해 제공되는 이들 다양한 서비스에 액세스할 수 있다. 마찬가지로, 네트워크 기반 서비스는 상이한 서비스를 제공하기 위해 자신들이 서로 통신하고 서로를 사용할 수 있다. 예를 들어, 가상 또는 물리적 컴퓨팅 인스턴스 또는 스토리지 인스턴스와 같은 "인스턴스"라 불리는 단위로 클라이언트(210)에 제공되는 컴퓨팅 자원은 특정 데이터 볼륨(226)을 이용할 수 있어, 컴퓨팅 인스턴스를 위한 가상 블록 스토리지를 제공할 수 있다.
전술한 바와 같이, 가상 컴퓨팅 서비스(230)는 클라이언트(210)에 다양한 컴퓨팅 인스턴스를 제공할 수 있다. 가상 컴퓨팅 인스턴스는, 예를 들어, 특정된 계산 용량(CPU의 유형 및 수, 주 메모리 크기, 등을 표시함으로써 특정될 수 있는), 및 특정된 소프트웨어 스택(예를 들어, 하이퍼바이저 상위에서 실행될 수 있게 되는 운영 시스템의 특정한 버전)을 가진 하나 이상의 서버를 포함할 수 있다. 전용 컴퓨터 서버, 스토리지 디바이스, 네트워크 디바이스, 등을 포함하는, 상이한 실시예에서 가상 컴퓨팅 서비스(230)의 컴퓨팅 인스턴스를 구현하기 위해 다수의 상이한 유형의 컴퓨팅 디바이스가 단독으로 또는 조합되어 사용될 수 있다. 일부 실시예에서, 인스턴스 클라이언트(210) 또는 이외 다른 임의의 다른 사용자는 네트워크 트래픽을 컴퓨팅 인스턴스로 보내도록 구성(및/또는 위임)될 수 있다. 여러 실시예에서, 컴퓨팅 인스턴스는 여러 동작을 수행하기 위해 지속적인 블록-기반 스토리지를 입수하기 위해서 블록-기반 스토리지 서비스(220)에 의해 제공되는 하나 이상의 데이터 볼륨(226)에 부착되거나 이에 매핑될 수 있다.
컴퓨팅 인스턴스는, 애플리케이션 서버 인스턴스, JavaTM 가상 기계(JVM), 전용 운영 시스템, 루비(Ruby), 펄(Perl), 파이썬, C, C++, 등과 같은 다양한 해석되거나 컴파일된 프로그래밍 언어를 지원하는 플랫폼, 또는 예를 들어, 클라이언트(210)가 인스턴스에 액세스할 것을 요구함이 없이, 클라이언트 애플리케이션을 수행하기에 적합한 고성능 컴퓨팅 플랫폼과 같은, 다양한 상이한 플랫폼을 동작시키거나 구현할 수 있다. 일부 실시예에서, 컴퓨팅 인스턴스는 예상 업타임 비에 기초하여 서로 상이한 유형 또는 구성을 갖는다. 특정 컴퓨팅 인스턴스의 업타임 비는 인스턴스가 활성화된 시간량 대 인스턴스가 예약된 총 시간량의 비로서 정의할 수 있다. 업타임 비는 일부 구현예에서 활용이라고도 한다. 클라이언트가 인스턴스가 예약된 시간의 비교적 작은 부분(예를 들면, 년 간 지속되는(year-long) 예약의 30%-35%) 동안 컴퓨팅 인스턴스를 사용할 것으로 예상한다면, 클라이언트는 인스턴스를 저 업타임 비 인스턴스로서 예약하고, 관련 가격 책정 정책에 따라 할인된 시간당 사용료를 지불하기로 결정할 수 있다. 클라이언트가 대부분의 시간 동안 인스턴스를 필요로하는 정상-상태 워크로드를 가질 것으로 예상한다면, 클라이언트는, 일부 실시예에서 고 업타임 비 인스턴스를 예약하고, 시간당 요금이 가격 책정 정책에 따라 실제 사용 시간 수에 관계없이 예약 전체 기간에 대해 부과될 수 있을지라도, 잠재적으로 훨씬 더 낮은 시간당 사용료를 지불할 수 있다. 선불 비용(upfront cost) 및 시간당 비용이 대응하는 고 업타임 비율 비용(High Uptime Ratio cost) 과 저 업타임 비율 비용(Low Uptime Ratio cost) 사이에 해당하는 경우, 대응하는 가격 책정 정책으로, 중간 업타임 비 인스턴스에 대한 옵션이 일부 실시예에서 지원될 수 있다.
또한, 컴퓨팅 인스턴스 구성은, 계산 집약적 애플리케이션을 위한 계산 워크로드(예를 들어, 고-트래픽 웹 애플리케이션, 광고 서빙, 일괄 처리, 비디오 인코딩, 분산 분석, 고-에너지 물리학, 게놈 분석, 및 계산 유체 역학), 그래픽스 집약적 워크로드(예를 들면, 게임 스트리밍, 3D 애플리케이션 스트리밍, 서버측 그래픽스 워크로드, 렌더링, 재무 모델링, 및 엔지니어링 설계), 메모리 집약적 워크로드(예를 들면, 고성능 데이터베이스, 분산 메모리 캐시, 메모리 내 분석, 게놈 어셈블리 및 분석), 및 스토리지 최적화 워크로드(예를 들면, 데이터 웨어하우징 및 클러스터 파일 시스템)와 같은, 범용 혹은 전용의 인스턴스를 포함할 수 있다. 가상 CPU 코어의 특정한 수, 메모리, 캐시, 스토리지, 및 다른 성능 특성과 같은 컴퓨팅 인스턴스의 크기. 컴퓨팅 인스턴스의 구성은 또한, 특정 데이터 센터 내 이들의 위치, 가용 존, 지리적, 위치, 등, 및 (예약된 컴퓨팅 인스턴스의 경우) 예약 기간 길이를 포함할 수 있다.
여러 실시예에서, 제공자 네트워크(200)는 또한 스토리지 동작을 수행하기 위한 블록 기반 스토리지 서비스(220)를 구현할 수 있다. 블록 기반 스토리지 서비스(220)는 하나 이상의 데이터 볼륨 데이터 볼륨(들)의 세트(226a, 226b, 226c 내지 226n)를 저장하기 위한 블록 레벨 스토리지를 제공하는, 다수의 독립적인 자원 호스트(224a, 224b, 224c 내지 224n) 풀로 구성된 스토리지 시스템(예를 들어, 서버 블록 데이터 스토리지 시스템)이다. 데이터 볼륨(226)은 특정 클라이언트(예를 들어, 가상 컴퓨팅 서비스(230)의 가상 컴퓨팅 인스턴스)에 매핑될 수 있어, 가상 블록 기반 스토리지(예를 들어, 하드디스크 스토리지 또는 다른 영구 스토리지)를 논리 블록의 인접한 세트로서 제공할 수 있다. 일부 실시예에서, 데이터 볼륨(226)은 스냅샷 동작 또는 복제 동작과 같은 다른 블록 스토리지 동작을 수행하기 위해 다수의 데이터 청크 또는 파티션(하나 이상의 데이터 블록 포함한다)으로 분할될 수 있다. 데이터 볼륨(226)의 볼륨 스냅샷은 데이터 볼륨(226)의 상태의 고정 시점 표현일 수 있다. 일부 실시예에서, 볼륨 스냅샷은 다른 스토리지 서비스(240)와 같이, 데이터 볼륨을 유지하는 자원 호스트(224)로부터 원격으로 저장될 수 있다. 스냅샷 동작은 다른 스토리지 서비스(240) 내 원격 스냅샷 데이터 스토어와 같은 다른 스토리지 위치에 주어진 데이터 볼륨의 스냅샷을 전송, 복사 및/또는 보존하기 위해 수행될 수 있다.
블록 기반 스토리지 서비스(220)는 블록 기반 스토리지 서비스(220)의 동작을 돕기 위해 블록 기반 스토리지 서비스 제어 플레인(222)을 구현할 수 있다. 여러 실시예에서, 블록 기반 스토리지 서비스 제어 플레인(222)은 가상 컴퓨팅 서비스(230) 및/또는 제공자 네트워크(200) 내에 위치된 다른 네트워크 기반 서비스에 의해 제공되는 컴퓨팅 인스턴스, 및/또는 선택적으로, 하나 이상의 다른 데이터 센터 내에 위치된 컴퓨팅 시스템(도시되지 않음) 또는 네트워크(260)를 통해 가용한 제공자 네트워크(200) 외부의 다른 컴퓨팅 시스템 상에서 실행되는 프로그램과 같은, 클라이언트에의 블록 데이터 스토리지의 가용성을 관리하는 것을 돕는다. 데이터 볼륨(226)에의 액세스는, 블록 데이터 트랜잭션 명령에 응답하여, 제공자 네트워크(200) 내의 내부 네트워크를 통해 또는 네트워크(260)를 통해 외부적으로 제공될 수 있다.
블록 기반 스토리지 서비스 제어 플레인(222)은 사용자 계정(예를 들어, 생성, 삭제, 빌링, 지불 징수, 등)의 관리를 포함한, 블록 레벨 스토리지 기능을 제공하는 것과 관련된 다양한 서비스를 제공할 수 있다. 블록 기반 스토리지 서비스 제어 플레인(222)은 구성 요청에 응하여 데이터 볼륨(226)의 생성, 사용 및 삭제에 관계된 서비스를 더욱 제공할 수 있다. 적어도 일부 실시예에서, 블록 기반 스토리지 서비스 제어 플레인(222)은 도 3과 관련하여 이하에서 더 상세히 설명되는 바와 같이 볼륨 배치(228)를 구현할 수 있다. 블록 기반 스토리지 서비스 제어 플레인(222)은 또한 다른 스토리지 서비스(240) 상의 볼륨 스냅샷의 생성, 사용 및 삭제에 관계된 서비스를 제공할 수 있다. 블록 기반 스토리지 서비스 제어 플레인(222)은 또한 데이터 볼륨(226)의 사용 및 이들 볼륨의 스냅샷에 관계된 수행 및 감사 데이터의 수집 및 처리에 관계된 서비스를 제공할 수 있다.
또한, 제공자 네트워크(200)는 전술한 바와 같이 또 다른 스토리지 서비스(240)를 구현할 수 있다. 다른 스토리지 서비스(240)는 블록 기반 스토리지 서비스(220)에 의해 제공되는 것과 동일한 또는 상이한 유형의 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예에서, 다른 스토리지 서비스(240)는 데이터 객체로서 데이터를 저장하고 관리할 수 있는 객체 기반 스토리지 서비스를 제공할 수 있다. 예를 들어, 다양한 데이터 볼륨(226)의 볼륨 스냅샷은 특정 데이터 볼륨(226)에 대한 스냅샷 객체로서 저장될 수 있다. 다른 스토리지 서비스(240)에 더하여, 제공자 네트워크(200)는 다양한 상이한 유형의 분석, 계산, 스토리지, 또는, 제공자 네트워크(200)의 다른 서비스(예를 들어, 블록 기반 스토리지 서비스(220), 가상 컴퓨팅 서비스(230) 및/또는 다른 스토리지 서비스(240)) 뿐만 아니라, 클라이언트(210)가 다양한 타스크를 수행 또는 요청할 수 있게 하는 그외 다른 네트워크 기반 시스템을 포함할 수 있는, 다른 네트워크 기반 서비스(250)를 구현할 수 있다.
클라이언트(210)는 네트워크 제공자(200)에게 요청을 제출하게 구성가능한 임의의 유형의 클라이언트를 포함할 수 있다. 예를 들어, 주어진 클라이언트(210)는 웹 브라우저의 적합한 버전을 포함할 수 있거나, 웹 브라우저에 의해 제공되는 실행 환경에 대한 확장으로서 또는 실행 환경 내에서 실행되도록 구성된 플러그인-모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트(210)는 데이터베이스 애플리케이션(또는 이의 사용자 인터페이스), 미디어 애플리케이션, 오피스 애플리케이션, 또는 다양한 동작을 수행하기 위해 컴퓨팅 인스턴스, 데이터 볼륨(226), 또는 제공자 네트워크(200) 내 다른 네트워크 기반 서비스를 이용할 수 있는 임의의 다른 애플리케이션과 같은 애플리케이션을 포함할 수 있다. 일부 실시예에서, 이러한 애플리케이션은 모든 유형의 네트워크 기반 데이터에 대한 모든 브라우저 지원을 반드시 구현함이 없이 네트워크 기반 서비스 요청을 생성 및 처리하는데 충분한 프로토콜 지원(예를 들면, HTTP(Hypertext Transfer Protocol)의 적합한 버전)을 포함할 수 있다. 일부 실시예에서, 클라이언트(210)는 REST(Representational State Transfer)-스타일 네트워크 기반 서비스 아키텍처, 문서 기반 또는 메시지 기반 네트워크 기반 서비스 아키텍처, 또는 다른 적합한 네트워크 기반 서비스 아키텍처에 따라 네트워크 기반 서비스 요청을 생성하게 구성될 수 있다. 일부 실시예에서, 클라이언트(210)(예를 들어, 계산 클라이언트)는 컴퓨팅 인스턴스에 의해 제공되는 계산 자원 또는 데이터 볼륨(226)에 의해 제공되는 블록 스토리지를 이용하여 클라이언트(210) 상에서 구현하는 애플리케이션에 투명한 방식으로 컴퓨팅 인스턴스 또는 데이터 볼륨(226)에의 액세스를 제공하게 구성된다.
클라이언트(210)는 네트워크 기반 서비스 요청을 외부 네트워크(260)를 통해 제공자 네트워크(200)에 전달할 수 있다. 여러 실시예에서, 외부 네트워크(260)는 클라이언트(210)와 제공자 네트워크(200) 사이의 네트워크 기반 통신을 설정하는데 필요한 네트워킹 하드웨어 및 프로토콜의 임의의 적절한 조합을 포함할 수 있다. 예를 들어, 네트워크(260)는 일반적으로 인터넷을 전체적으로 구현하는 다양한 전기통신 네트워크 및 서비스 제공자를 포함할 수 있다. 네트워크(260)는 또한 공공 또는 사설 무선 네트워크 뿐만 아니라 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)과 같은 사설 네트워크를 포함할 수 있다. 예를 들어, 주어진 클라이언트(210) 및 제공자 네트워크(200) 둘 다는 내부 네트워크를 자체에 갖는 기업 내에 각각 제공될 수 있다. 이러한 실시예에서, 네트워크(260)는 인터넷과 제공자 네트워크(200) 간에 뿐만 아니라 주어진 클라이언트(210)와 인터넷 간에 네트워킹 링크를 확립하는데 필요한 하드웨어(예를 들어, 모뎀, 라우터, 스위치, 로드 밸런서, 프록시 서버, 등) 및 소프트웨어(예를 들어, 프로토콜 스택, 어카운팅 소프트웨어, 방화벽/보안 소프트웨어, 등)를 포함할 수 있다. 일부 실시예에서, 클라이언트(210)는 공공 인터넷이 아닌 사설 네트워크를 사용하여 제공자 네트워크(200)와 통신할 수도 있다.
도 3은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 구현하는 볼륨 배치를 도시한 논리 블록도이다. 전술한 바와 같이, 블록 기반 스토리지 서비스를 제공하기 위해 자원 호스트(300)와 같은 다수의 자원 호스트가 구현될 수 있다. 자원 호스트는 스토리지 서버 또는 다른 컴퓨팅 시스템(예를 들어, 도 10과 관련하여 후술되는 컴퓨팅 시스템(1000))과 같은 하나 이상의 컴퓨팅 시스템 또는 디바이스일 수 있다. 각 자원 호스트는 데이터 볼륨의 각각의 복제를 유지할 수 있다. 일부 데이터 볼륨은, 일부 실시예에서, 다른 데이터 볼륨과는 크기가 다를 수 있다. 자원 호스트는 멀티-터넌트 스토리지(multi-tenant storage)를 제공할 수도 있다. 예를 들어, 일부 실시예에서, 하나의 자원 호스트는 블록 기반 스토리지 서비스(220)의 하나의 계정에 대한 데이터 볼륨을 유지할 수 있고, 반면 동일한 자원 호스트에 유지되는 또 다른 데이터 볼륨은 다른 계정에 대해 유지될 수 있다. 자원 호스트는 각각의 자원 호스트를 구현하는 컴퓨팅 시스템 또는 디바이스에 직접 부착될 수 있는 하나 이상의 블록 기반 스토리지 디바이스(예를 들어, 하드디스크 드라이브, 고체상태 드라이브, 등)에 자신들의 각각의 데이터 볼륨을 지속시킬 수 있다. 자원 호스트는 다른 영구 스토리지 디바이스를 구현할 수 있다. 예를 들어, 일부 자원 호스트는 영구 블록 스토리지를 위한 SSD(Solid State Drive)를 구현할 수 있으며, 반면 다른 자원 호스트는 하드디스크 드라이브(HDD) 또는 다른 자기 기반 영구 스토리지 디바이스를 구현할 수 있다. 이러한 방식으로, 자원 호스트에 구현되는 영구 스토리지에 따라 상이한 볼륨 유형, 사양 및 이외 다른 성능 특성이 제공될 수 있다.
블록 기반 스토리지 서비스(220)는 다양한 상이한 방식으로 데이터 볼륨을 관리 및 유지할 수 있다. 상이한 내구성 수법은 데이터 볼륨의 동일한 복제를 데이터 볼륨의 상이한 파티션으로 유지하는 분산된 자원으로서 둘 이상의 자원 호스트 간에 일부 데이터 볼륨에 대해 구현될 수 있다. 예를 들어, 데이터 볼륨에 대한 단일 실패 지점을 제거함으로써, 데이터 볼륨의 내구성을 증가시키기 위해 상이한 유형의 미러링 및/또는 복제 기술(예를 들어, RAID 1)이 구현될 수 있다. 데이터 볼륨에의 액세스를 제공하기 위해, 자원 호스트는 데이터 볼륨의 복제를 유지하는 둘 이상의 자원 호스트 간에 기입 요청과 같은 I/O 요청을 조정할 수 있다. 예를 들어, 주어진 데이터 볼륨에 대해, 하나의 자원 호스트는 마스터 자원 호스트로 사용될 수 있다. 마스터 자원 호스트는, 여러 실시예에서, 데이터 볼륨의 클라이언트로부터 요청(예를 들어, I/O 요청)을 수신하고 처리할 수 있다. 따라서, 마스터 자원 호스트는 기입 요청과 같은 I/O 요청의 복제를, 또는 슬레이브 자원 호스트로서 기능하는 하나 이상의 다른 자원 호스트에 대한 데이터 볼륨의 임의의 다른 변경 또는 수정을 조정할 수 있다. 따라서, 데이터 볼륨에 대한 기입 요청이 마스터 자원 호스트에 수신되었을 때, 마스터 자원 호스트는 기입 요청을 슬레이브 자원 호스트(들)에 전달하고, 마스터 자원 호스트에서 기입 요청을 완료하기 전에 슬레이브 자원 호스트가 기입 요청을 완료로서 인정할 때까지 대기할 수 있다. 마스터 자원 호스트는 스냅샷 동작 또는 다른 I/O 동작(예를 들어, 판독 요청에 서비스)과 같은, 데이터 볼륨에 대해 다른 동작을 지시할 수 있다.
일부 실시예에서, 마스터 및 슬레이브 자원 호스트의 역할은 데이터 볼륨마다 할당될 수 있음을 유의한다. 예를 들어, 하나의 자원 호스트에 유지되는 데이터 볼륨에 대해서, 자원 호스트는 마스터 자원 호스트로서 사용할 수 있다. 반면 동일한 자원 호스트에서 유지되는 다른 데이터 볼륨에 대해, 자원 호스트는 슬레이브 자원 호스트로 사용될 수 있다. 자원 호스트는 각각의 I/O 관리기를 구현할 수 있다. I/O 관리기는 특정 자원 호스트에 유지되는 데이터 볼륨으로 향하는 I/O 요청을 취급할 수 있다. 따라서, I/O 관리기는, 예를 들어, 자원 호스트에서 볼륨에 대한 기입 요청을 처리하고 취급할 수 있다. I/O 관리기는 블록 기반 스토리지 서비스 애플리케이션 프로그래밍 인터페이스(API) 및/또는 인터넷 소형 컴퓨터 시스템 인터페이스(iSCSI)와 같은 다른 통신 프로토콜에 따라 I/O 요청을 처리하도록 구성될 수 있다.
자원 호스트는 상이한 인프라스트럭처 존 내에 위치될 수 있다. 인프라스트럭처 존은 서버 랙, 네트워킹 스위치, 라우터, 또는 이외 다른 구성요소와 같은 디바이스, 전원(또는 다른 자원 호스트 서플라이어), 또는 물리적 또는 지리적 위치(예를 들면, 특정 행에 위치, 룸, 빌딩, 데이터 센터, 내결함성 존, 등)에 의해 정의될 수 있다. 인프라스트럭처 존은 자원 호스트(및 자원 호스트에 구현된 데이터 볼륨의 복제)가 특정 네트워크 라우터 또는 브릭, 특정 룸 위치, 특정 사이트, 등과 같은 다수의 상이한 유형의 인프라스트럭처 존 내에 있을 수 있게 범위가 다양할 수 있다.
블록 기반 스토리지 서비스 제어 플레인(222)은, 여러 실시예에서, 볼륨 배치(228)를 구현할 수 있다. 볼륨 배치(228)는 하나 이상의 컴퓨팅 노드, 시스템, 또는 디바이스(예를 들어, 도 10의 시스템(1000))에서 구현될 수 있다. 적어도 일부 실시예에서, 볼륨 배치(228)는 정보, 메트릭, 메타데이터, 또는 볼륨 배치를 수행하기 위한 임의의 다른 정보를 수집하기 위해 배치 데이터 수집(320)을 구현할 수 있다. 배치 데이터 수집(320)은 정보, 메트릭 또는 메타데이터에 대한 질의로 자원 호스트(300)를 주기적으로 스위핑할 수 있다. 예를 들어, 자원 호스트는 자원 호스트에 거주하는 볼륨에 대한 볼륨에 특정한 정보를 포함하여, 현재 활용 메트릭, 진행중인 타스크 또는 동작(예를 들면, 이주 또는 리미러 타스크), 및 자원 호스트에 대한 임의의 다른 상태 정보를 제공할 수 있다. 일부 실시예에서, 배치 데이터 수집(320)은 인프라스트럭처 존, 파티션, 자원 호스트, 또는 블록 기반 스토리지 서비스(220)에 대한 다른 세분성(granularity)에 따라 데이터를 모을 수 있다. 배치 데이터 수집(320)은 수집된 데이터를 지속적으로 유지할 수 있는 볼륨/서비스 상태 스토어(322)에 데이터를 저장할 수 있다. 일부 실시예에서, 볼륨/서비스 상태 스토어(322)는 볼륨 배치(228) 또는 블록 기반 스토리지 서비스 제어 플레인(226)의 다른 구성요소에의 액세스를 제공하기 위해 데이터베이스 또는 다른 검색가능/질의가능 스토리지 시스템으로서 구현될 수 있다.
볼륨 배치(228)는, 다양한 실시예에서, 배치 엔진(310)을 구현할 수 있다. 배치 엔진(310)은 새로운 데이터 볼륨의 복제 또는 현재 배치된 데이터 볼륨 이주와 같은, 자원에 대한 배치 위치를 식별하기 위해 다양한 종류의 분석을 수행할 수 있다. 분석은 개개의 자원에 대해 또는 블록 기반 스토리지 서비스 전체에 대해 최적일 수 있는 배치 위치를 결정하기 위해 위에서 논의된 배치 기준과 관련하여 수행될 수 있다. 예를 들어, 배치 엔진(310)은 데이터 볼륨의 마스터, 슬레이브(들)의 배치와 같은 분산 자원 내의 모든 자원의 장래의 배치 구성을 평가하기 위해 구성 분석(312)을 구현할 수 있다. 일부 실시예에서, 클라이언트 또는 분산 자원(또는 분산 자원의 자원)의 다른 사용자는 구성 분석(예를 들어, 데이터 볼륨에 첨부된 가상 인스턴스를 포함하는 배치 배치를 평가하는)에서 고려될 수 있다. 구성 분석(312)은 분산 자원의 다른 자원에 대해 더 나은 구성을 제공할 자원 호스트에서 공간을 확보하기 위해 현재 배치된 자원을 다른 자원 호스트에 이주하는 영향을 고려할 수 있다. 예를 들어, 이것은 슬레이브 볼륨(예를 들면, 자원)을 다른 자원 호스트에 이주하여 이 호스트에서 다른 슬레이브 볼륨의 자리를 만드는 것을 포함할 수도 있는데, 이는 동일한 인프라스트럭처 존 내에 다른 슬레이브 볼륨을 볼륨의 마스터로서 혹은 볼륨의 클라이언트로서 만들 것이다. 일부 상황에서, 이 구성(예를 들면, 동일한 네트워크 라우터에 연결되는 것과 같은, 클라이언트와 동일한 인프라스트럭처 존에 마스터 또는 슬레이브 볼륨을 갖는)은 개선된 성능을 제공하고 최적의 구성이 될 수 있다.
배치 엔진(310)에서 배치 요청을 수신한 것에 응하여, 구성 분석(312)은 볼륨/서비스 상태(322)에 액세스함으로써 장래의 배치를 결정할 수 있다. 가용한, 그리고 배치 제약을 위반하지 않는 자원 호스트가 평가될 수 있다(예를 들어, 데이터 볼륨의 두 파티션은 동일한 자원 호스트, 충분한 용량을 가진 자원 호스트, 또는 특정 하드웨어 및/또는 소프트웨어를 구현하는 자원 호스트에 의해 호스팅될 수 없다). 일부 실시예에서, 가용한 자원 호스트의 서브-세트가 배치 결정을 위해 평가될 수 있다(가용한 매우 큰 자원 호스트 풀을 평가하는 것은 계산적으로 너무 비쌀 수 있다). 장래의 배치 구성은 자원에 대해 가용한 자원 호스트에 기초하여 생성되거나 식별될 수 있다. 데이터 볼륨의 다른 복제는 실제 또는 가설적 배치 위치에 기초하여 평가될 수 있다.
하나 이상의 인프라스트럭처 존 지역들은 여러 실시예에서, 볼륨/서비스 상태(332)에 기초하여 분산의 상이한 장래의 배치 구성에 대해 결정될 수 있다. 예를 들어, 메타데이터는 데이터 볼륨의 서로 상이한 복제들의 자원 호스트들이 어느 네트워크 브릭 또는 라우터들에 연결되는가를 나타낼 수 있다. 적어도 일부 실시예에서, 장래의 배치 구성의 인프라스트럭처 존 지역(배치될 자원이 다른 가용한 자원 호스트에 위치되는)에 대해 스코어가 생성될 수 있다. 배치 엔진(310)은 인프라스트럭처 존 지역 이외의 많은 다른 메트릭, 데이터, 또는 고려사항에 대해 구성 분석(312)을 수행할 수 있다. 예를 들어, 적어도 일부 실시예에서, 데이터 볼륨의 복제를 호스팅하는 자원 호스트의 상이한 수행 메트릭에 관련하여 장래의 구성에 대해 분석이 수행될 수 있다. 예를 들어, 스토리지 용량, 워크로드 부하, 또는 초당 입력/출력 동작(IOP)는 데이터 볼륨 전체에 대해 평가될 수 있다. 일부 데이터 볼륨은 상이한 파티션들이 데이터 볼륨에 대한 데이터의 상이한 부분들을 유지하도록 파티션될 수 있다. 예를 들어, 데이터 볼륨은 3 세트의 마스터-슬레이브 복제 쌍으로 파티션될 수 있다. 구성 분석(312)은 복제되는 데이터 볼륨의 각 부분(예를 들어, 각각의 마스터-슬레이브 복제 쌍) 또는 모든 데이터 볼륨 파티션(예를 들어, 마스터-슬레이브 복제 쌍 모두 3)에 대한 배치 구성에 기초하여 수행될 수 있다.
배치 엔진(310)은 파티션 배치를 결정하기 위해 다른 분석(314)을 구현할 수 있다. 예를 들어, 특정 자원 호스트가 연락되었거나 연락받은 마지막 시간에 기초하여 배치에 대해 스코어가 생성될 수 있다. 다수의 마스터-슬레이브 복제 쌍이 동일한 두 자원 호스트에 배치되는 것을 식별하고 방지하기 위해 분석이 수행될 수 있다. 일부 실시예에서, 파티션을 호스트할 수 있고 최소량의 공간을 과소활용된 채로 놔두는 자원 호스트에 대한 자원의 배치를 최적화하기 위해 자원 호스트 단편화 분석이 수행될 수 있다. 위의 구성 분석에서와 같이, 위에서 제공된 예시적 분석은 이주되었다면 이동되지 않은 다른 자원을 더 잘 배치하였을 일부 자원의 배치 위치를 결정하기 위해 수행될 수 있다.
일부 실시예에서, 볼륨 배치(228)는 기회적 배치 관리기(330)를 구현할 수 있다. 기회적 배치 관리(330)는 자원(예를 들어, 데이터 볼륨)에 대한 배치가 더 최적이 되도록 그리고/또는 자원 호스트(들)(310) 간에 자원들의 배치가 전체적으로 더 최적이 되도록(이주가 이주된 자원에 대해 동일하거나 덜 최적인 새로운 배치를 초래할지라도) 현재 배치된 자원 자원(예, 볼륨 복제)을 하나의 자원 호스트로부터 다른 자원 호스트로 동적으로 또는 사전 대비적으로 이주시킬 수 있다. 예를 들어, 기회적 배치 관리기(330)는 도 6 및 도 7에 관련하여 이하에서 논의되는 바와 같이, 차선으로 배치되도록 결정된(예를 들어, 스코어가 낮은 인프라스트럭처 존 카테고리) 배치 엔진(310)으로부터의 자원에 대한 배치를 요청하기 위해 이주 동작 스케쥴링(332)을 구현할 수 있다. 이어, 이주 동작 스케줄링(332)은 수행된다면 어떤 배치가 이주 최적화 또는 다른 개선 임계치(예를 들어, 현재 배치 스코어와 새로운 배치 스코어 간의 차이)를 초과하게 될 것인지를 결정할 수 있다. 배치 최적화 임계치를 초과할 가능한 배치를 갖는 자원에 대해, 이주 동작 스케줄링(332)은 파티션을 위한 이주 동작을 이주 동작 큐(336)에 넣어둘 수 있다. 일부 실시예에서, 이주 동작 스케줄링(332)은 더 이로운 이주 동작이 더 빨리 수행되도록, 이주 동작에 우선순위를 할당할 수 있다.
하나의 자원 호스트로부터 다른 자원 호스트로 자원을 이주하는 이주 동작의 수행은 비동기적일 수 있다. 스케줄링 및/또는 상이한 이주 동작의 수행을 조정하기 위해, 스케줄링 구조 또는 다른 데이터 세트가 유지될 수 있다. 일부 실시예에서, 이주 동작 큐(336)와 같은 이주 동작 큐가 구현될 수 있다. 도 4는 일부 실시예에 따라, 낙관적 자원 이주를 위한 이주 큐를 도시한 논리 블록도이다.
이주 동작 큐(400)는 분산형 또는 집중형 데이터 스토어과 같은 지속적 스토리지에 유지될 수 있다. 적어도 일부 실시예에서, 트랜잭션 제어를 제공하는 데이터베이스 시스템 또는 다른 스토리지 시스템이 이주 동작 큐를 유지하기 위해 이용될 수 있다. 예를 들어, 이주 동작 큐(400)는 다른 스토리지 서비스(240)의 일부로서 구현된 NoSQL 데이터 스토어와 같은 다른 네트워크 기반 서비스 내 데이터베이스 테이블로서 유지될 수 있다. 이주 동작 스케쥴링(332)은 도 6-도 9와 관련하여 후술되는 다양한 기술에 따라, 주기적으로 이주 동작 큐(400)를 업데이트할 수 있다. 예를 들어, 이주 동작(404)은 상태가 "진행중"에서 완료로 변경되어져 있을 수 있다. 볼륨 식별자, 목적지 호스트의 위치, 상태, 마지막 업데이트 시간, 및/또는 우선순위 값과 같은, 이주 동작에 대한 여러 메타데이터 및 정보가 유지될 수 있다.
또한, 이주 동작 스케줄링(332)은 완료 또는 실패로서 식별된 이주 동작(예를 들어, 이주 동작(404, 408))과 같은 이주 동작을 큐(400)로부터 제거할 수 있다. 아직 수행되지 않은 이주 동작은 큐에 저장된 우선순위를 업데이트할 수 있다(예를 들어, 우선순위 값을 높이거나 낮춘다). 마지막 업데이트 시간은 큐 내의 이주 동작에 대한 업데이트가 언제 마지막으로 행해졌는지를 나타낼 수 있다. 예를 들어, 이주 동작(502)은 다른 이주 동작(504, 506, 508)보다 더 나중의 업데이트 시간(14:34:06)을 가지며, 따라서 더 최근/관련 데이터를 갖는 것으로 간주될 수 있다. 도 7과 관련하여 후술되는 바와 같이, 우선순위 값은 이주 동작을 기회적으로 스케줄링하기 위해 이주 동작에 할당될 수 있다. 적어도 일부 실시예에서, 이주 동작 큐(400)는 우선순위 큐로서 구현될 수 있고, 따라서 가장 높은 우선순위 이주 동작이 수행을 위해 선택될 수 있다.
도 3으로 되돌아 가면, 이주 동작을 수행하기 위해 이주 작업기(들)(340)가 구현될 수 있다. 이주 작업기(들)(340)는 이주 동작을 수행하기 위해 기회적 배치 관리기(330)에게 요청을 발송할 수 있다. 기회적 배치 관리기(330)는 이주 동작 큐(336)로부터 이주 동작을 인출하여 이주 동작을 이주 작업기(340)에게 할당하여 지시할 수 있다. 대안적으로, 일부 실시예에서, 이주 작업기는 수행할 이주 동작을 식별하기 위해 이주 동작 큐(336)에 직접 액세스할 수 있다. 일부 실시예에서, 이주 작업기(340)는 이주 동작 큐(336) 내의 이주 동작에 대한 메타데이터를 업데이트할 수 있다(예를 들어, "준비"에서 "진행중"으로 상태를 변경하기 위해).
일부 실시예에서, 이주 동작 스로틀링(throttling)(342)은 진행중인 이주 동작의 수를 제어하기 위해 구현될 수 있다. 배치 데이터 수집(320)은, 네트워크 활용, 자원 호스트 활용, 또는 임의의 다른 동작 메트릭 및 업데이트 볼륨/서비스 상태(322)와 같은 다른 데이터와 함께, 자원 호스트(들)(310)에서 진행중인 현재 이주 동작을 추적, 유지, 또는 모니터링할 수 있다. 이주 작업기(들)(340)는 이주 동작이 일부 이주 한도에 따라 스로틀되어야 하는지 여부를 결정하기 위해 볼륨/서비스 상태(322)에 액세스할 수 있다. 예를 들어, 일부 실시예에서, 하나 이상의 자원 호스트(들)(310), 네트워킹 디바이스(들), 라우터(들), 스위치, 전원(들), 또는 가상 블록 기반 스토리지 서비스의 그외 다른 구성요소 또는 디바이스는 식별된 자원 이주 동작을 수행하는 효과에 대해 평가될 수 있다. 상이한 이주 한도(예를 들면, 이주 동작 수, 네트워크 활용, 자원 호스트 활용, 등)이 네트워크 지역에 관련하여 집행될 수 있다. 이주 동작이 다른 네트워크 지역 중 하나에 대한 한도를 초과한다면, 이주 작업기는 이주 동작의 수행을 스로틀시킬 수 있다(예를 들면, 이주 동작은 거부되거나 지연될 수 있다). 일부 실시예에서, 이주 동작 스로틀링은 특정 인프라스트럭처 존 또는 네트워크 지역으로(예를 들면, 이주 동작의 현재 및 목적지 자원 호스트를 포함하는 존과 같은, 이주를 수행하는 것에 연루된 인프라스트럭처 존 또는 네트워크 지역으로) 한정될 수 있다. 일부 실시예에서, 기회적 배치 관리(330)는 이주 작업기(들)(340)에 추가하여 또는 그 대신에 이주 동작 스로틀링을 수행할 수 있다.
여러 실시예에서, 이주 작업기(340)는 자원에 대한 새로운 배치 위치를 제공하기 위해 위에서 및 아래에서 논의된 다양한 기술을 수행할 수 있는 배치 엔진(310)으로부터 이주될 자원에 대한 업데이트된 배치를 요청할 수 있다.
도 5는 일부 실시예에 따라, 자원(예를 들어, 데이터 볼륨의 복제)를 이주시키는 상호작용을 도시한 논리 블록도이다. 상술한 바와 같이, 배치 데이터 수집(320)은 볼륨 서비스 상태(322)를 업데이트하기 위해 자원 호스트(들)(500)로부터 호스트/볼륨 데이터(502)를 스위핑하거나 요청할 수 있다. 자원 호스트(들)(502)는 볼륨/서비스 상태(506)를 모으거나 및/또는 업데이트할 수 있는 배치 데이터 수집(320)에 호스트/볼륨 데이터를 발송할 수 있다. 기회적 배치 관리(330)는 배치 엔진(310)으로부터 볼륨 배치(들)(508)를 요청할 수 있다. 배치 엔진(310)은, 이를테면 도 3과 관련하여 전술한 기술에 따라, 배치 위치를 결정할 수 있다. 볼륨 배치(들)(512)는 기회적 배치 관리(330)에 제공될 수 있다. 이주 최적화 임계치를 초과하는 볼륨(또는 자원)에 대해, 이주 동작 큐(514)는 새로운 이주 동작을 추가하도록 업데이트될 수 있다. 스테일(stale)하거나 완료된 이주 동작은 이주 큐(336)로부터 제거될 수 있다.
이주 작업기(들)(340)는 기회적 배치 관리기(330)로부터 이주 동작(516)을 입수할 수 있다. 기회적 배치 관리기(330)는 후보 이주 동작(들)(518)을 입수하기 위해 이주 동작 큐(336)를 평가할 수 있다. 이주 동작 큐(336)로부터의 이주 동작(들)(520)은 이주 작업기(들)(340)에게 리턴될 수 있다(522). 이어서, 이주 작업기(들)(340)는 영향을 받은 자원 호스트(들)(500)에 이주 동작(524)을 지시할 수 있다. 일부 실시예에서, 이주 작업기(들)(340)은 중재자로서 행동할 수 있고, 목적지 자원 호스트에 자원을 보내기 전에 발원 자원 호스트로부터 자원을 입수할 수 있다. 도 5에 제공된 다양한 상호작용 및 예시는 다양한 표준 또는 커스터마이즈된 통신 기술을 사용하여 통신될 수 있다. 예를 들어, 배치 엔진(310), 기회적 배치 관리(330), 이주 동작 큐(336), 볼륨 서비스 상태(322), 자원 호스트(들)(500), 등을 위한 다양한 내부 API는 각각 각각의 인터페이스(예를 들어, API와 같은 프로그래믹 인터페이스)을 가질 수 있고, 도 5의 각각의 통신은 그에 따라 포맷될 수 있다.
도 2-도 5와 관련하여 전술한 자원 배치를 위한 기회적 자원 이주의 예는 블록 기반 스토리지 서비스 및/또는 그외 다른 네트워크 기반 서비스와 관련하여 주어졌다. 자원 호스트에 분산 자원의 자원을 배치하는 분산 시스템의 다양한 다른 유형 또는 구성은 이들 기술을 구현할 수 있다. 예를 들어, 백업 또는 아카이브 분산 스토리지 시스템은 현재 배치된 데이터에 대해 보다 최적의 배치를 결정할 수 있다. 자원 배치를 위해 기회적 자원 이주를 구현할 수 있는 상술한 다양한 모듈, 구성요소, 시스템, 및/또는 서비스의 상이한 구성은 자원의 현재 배치를 평가하고, 후보 자원을 식별하고, 후보 자원을 이주하도록 구성될 수 있다. 도 6은 일부 실시예에 따라, 자원 배치를 최적화하기 위한 기회적 자원 이주를 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다. 이들 기술은 도 2-도 5와 관련하여 전술한 바와 같이, 분산 시스템에 다른 자원 호스트에 현재 배치된 자원을 배치하기 위한 제어 플레인, 기회적 배치 관리기, 또는 다른 구성요소를 사용하여 구현될 수 있다.
자원은 다양한 유형의 물리적 또는 가상화된 컴퓨팅 자원, 스토리지 자원, 또는 네트워킹 자원 중 하나와 같은, 많은 서로 상이한 유형의 자원들 중 하나일 수 있다. 일부 자원은 분산 자원을 구성하는 자원 그룹의 일부일 수 있다. 예를 들어, 도 2-도 5와 관련하여 상술한 블록 기반 스토리지 서비스의 데이터 볼륨은, 마스터 복제 및 하나 이상의 복제 슬레이브로서 구현되는 분산 자원일 수 있다. 자원 호스트에 자원의 초기 배치는 최적의 배치 위치를 사용할 수 없을 때 수행될 수 있다. 볼륨을 더 나은 위치에 기회적으로 이주하는 것은 분산 시스템에 자원들에 대한 다양한 설계 목표, 보장, 또는 그외 다른 바람직한 속성에 따라, 개개의 자원 수행 및/또는 분산 시스템 수행을 향상시킬 수 있다.
610에 나타낸 바와 같이, 분산 시스템의 상이한 자원 호스트에 호스팅된 자원의 현재 배치는 상이한 자원 호스트들 간에 자원 배치를 개선 또는 최적화하는 배치 기준에 따라 평가될 수 있다. 배치 기준은 자원 호스트에 자원의 배치 및/또는 전체적으로 자원 호스트 간에 자원의 배치(개별적 배치가 최적 미만일지라도)의 바람직함 또는 최적성을 결정하기 위한, 다양한 분석, 조사, 계산일 수 있다. 예를 들어, 배치 기준은, 자원의 현재 자원 배치가 현재 자원 호스트에서의 자원 활용에 관련하여 최적인지를 결정하기 위해(예를 들면, 자원의 IOP 요건은 다른 타스크를 수행하거나 다른 자원을 호스팅하기 위한 IOP 요건을 충족시키기 위한 자원 호스트의 능력을 무리하게 한다) 자원 호스트에서 자원 활용(예를 들면, 스토리지 자원, 처리 자원, 네트워킹 자원, 등)을 평가할 수 있다.
일부 실시예에서, 자원의 현재 배치의 구성은 분산 자원을 구성하는 다른 자원에 관하여 결정될 수 있다. 하나 이상의 주 복제가 실패한 경우 데이터에의 액세스 요청에 서비스하기 위해 자원이 데이터의 2차 또는 백업 복제로서 행동하는 시나리오를 고찰한다. 이러한 시나리오에서, 주 복제와 마찬가지의 실패가 일어나지 않는 위치에 자원을 배치하는 것이 바람직할 수 있다. 예를 들어, 현재 자원이 복제 자원을 호스트하는 다른 자원 호스트와 동일한 전원에 연결된 자원 호스트에 배치되었다면, 전체적으로 분산 자원 구성의 평가는 자원에 대한 이주가 분산 자원에 대한 이 자원의 배치를 최적화할 것이므로 자원(마스터 또는 복제) 중 하나가 다른 자원 호스트와 동일한 전원에 연결된 자원 호스트에 더 이상 배치되지 않았음을 나타낼 수 있다. 배치 기준은 각종의 수행, 실패, 및 다른 시나리오를 지원, 예방, 또는 감안할 수 있도록 재단될 수 있으므로, 배치 기준의 수와 유형은, 분산 자원의 부분인 다른 자원과 더불어 자원의 구성, 가용 바이트, IOP, 또는 슬롯, 바이트 대 IOP 밸런스과 같은 자원 활용 밸런스, 용량 단편화에의 영향, 하드웨어/소프트웨어 특성, 및/또는 다양한 원하는 위치 기반 구성을 포함하여 -그러나 이들로 제한되지 않는다- 다양할 수 있다. 도 7과 관련하여 후술되는 바와 같이, 일부 실시예에서, 현재 배치 적합성의 스코어 또는 다른 표시자는 잠재적인 목적지 자원 호스트의 스코어와 더불어 결정될 수 있다.
620에 나타낸 바와 같이, 적어도 부분적으로 평가에 기초하여, 후보 자원(들)을 현재 호스팅하고 있는 각각의 자원 호스트(들)로부터 목적지 자원 호스트(들)로 기회적으로 이주하기 위한 후보 자원(들)을 식별한다. 식별된 후보 자원(들)은, 여러 실시예에서, 개선 임계치를 초과하는 장래의 이주를 가질 수 있다. 예를 들어, 후보 자원은 배치 기준에 대해 차선으로서(예를 들어, 하나 이상의 상이한 배치 기준에서의 최적 배치를 위한 테스트, 분석, 또는 임계치를 실패한) 식별될 수 있다. 배치 기준과 관련하여 최적인 자원을 수신하는데 가용한 자원 호스트가 식별될 수 있다(예를 들어, 실패한 테스트, 분석, 또는 임계치를 해결할 수 있는 위치를 제공). 페어링은 식별됨으로써 개선 임계치를 초과할 수 있다. 일부 실시예에서, 개선 임계치는 선택되어 이주가 수행되었다면 큰 배치 개선을 경험할 수 있을 후보 자원으로만 이들 자원을 식별하는, 초기 비용-이익 분석 결정으로서 행동할 수 있다. 또한, 개선 임계치는 후보 이주가 전체적으로 분산 시스템의 자원의 최적화를 향상시킬지 여부를 결정하기 위해 구현될 수 있다. 예를 들어, 후보 자원은 다른 자원을 이주함이 없이 다른 자원의 배치를 향상시키게 될 이주 동작을 수행하기 위해 식별될 수 있다. 식별된 후보 자원(들)은, 이하에서 설명되는 바와 같이, 이주 동작을 스케줄링하기 위해 이주 큐 또는 다른 데이터 구조에 입력된 대응하는 이주 동작 엔트리를 가질 수 있다. 이렇게 하여, 이주 동작은 더 나은 위치를 사용할 수 있을 때 자원을 이주시키기 위해 기회적으로 행해질 수 있다.
630에 나타낸 바와 같이, 후보 자원(들) 중 적어도 하나는 이주가 이주 동작 임계치를 초과하여 분산 시스템에서의 자원의 자원 배치를 개선하도록 목적지 자원 호스트(들)에 이주될 수 있다. 개선은, 이주된 자원의 배치 및/또는 전체적으로(예를 들면, 어떤 위치에 덜 집중된 자원) 분산 시스템에서 자원 배치에 대한 것일 수 있다. 기회적으로 이주 동작을 수행하는 것은 다른 자원이 이주를 위해 식별된 후 식별되어져 있을 수 있는 후보 자원에 대해 일부 이주 동작이 수행될 수 있게 한다. 예를 들어, 일부 실시예에서, 우선순위 또는 순서화 스키마는 식별된 후보 자원에 대해 이주 동작의 수행을 선택하기 위해 적용될 수 있다. 우선순위는 자원, 혹은 자원이 일부인 분산된 자원, 또는 전체 분산 시스템에 큰 차이를 만드는 이주 동작이 배치를 적게 개선하는 이주보다 빨리 수행될 수 있게 한다.
자원의 이주는 현재 자원 호스트에게 자원을 목적지 자원 호스트에 전송하도록 지시함으로써 수행될 수 있다. 일부 실시예에서, 도 3에 작업기(들)(340)와 같은 중재자는, 자원을 목적지 자원 호스트에 보내기 전에 자원을 보내거나 및/또는 수신할 수 있다. 적어도 일부 실시예에서, 자원은 물리적으로 이주되지 않고, 논리적으로 이주될 수 있다(예를 들어, 현재 호스트로부터 자원을 디저블 또는 제거하고 목적지 호스트에서 자원을 인스턴스화 또는 생성한다). 일부 시나리오에서, 후보 자원 호스트가 식별되었을 때 식별된 목적지 자원 호스트는 더 이상 최적이 아닐 수 있다(혹은 중간에 다른 자원이 추가되어져 있을 때 사용가능할 수 있다). 따라서, 일부 실시예에서, 새로운 목적지 자원 호스트가 식별될 수 있다. 분산 자원의 부분인 자원에 대해, 자원은, 일부 실시예에서, 분산 자원의 다른 자원이 현재 이주되고 있다면 선택되지 않을 수 있다. 도 3와 관련하여 전술한 바와 같이, 이주 동작을 제한하는 스로틀 기술이 또한 구현될 수도 있다.
도 7은 일부 실시예에 따라, 기회적 자원 이주를 위한 후보로서 자원을 식별하기 위한 다양한 방법 및 기술을 도시하는 하이 레벨 흐름도이다. 710에 나타낸 바와 같이, 자원 호스트에 자원의 현재 배치에 대한 배치 스코어가 하나 이상의 배치 기준에 관련하여 생성될 수 있다. 위에서 논의된 바와 같이, 배치 기준은 분산 시스템에서 자원 배치를 최적화하기 위해 사용될 수 있다. 예를 들어, 배치 기준은 분산 자원의 부분인 다른 자원과 더불어 자원의 구성, 가용 바이트, IOP, 또는 슬롯, 바이트 대 IOP 밸런스과 같은 자원 활용 밸런스, 용량 단편화에의 영향, 하드웨어/소프트웨어 특성, 및/또는 다양한 원하는 위치 기반 구성을 포함할 수 있다. 자원이 분산 자원(예를 들어, 전술한 바와 같이 데이터 볼륨의 마스터 또는 슬레이브 복제)를 구성하는 다수의 자원 중 하나인 시나리오를 고찰한다. 분산 자원의 다른 자원와 동일한 인프라스트럭처 존(예를 들어, 동일한 네트워크 라우터에 연결된)에 자원을 배치하는 것이 최적일 수 있다. 배치 스코어는 보다 최적의 시나리오(예를 들면, 동일한 네트워크 라우터)에 관련하여 현재 배치가 얼마나 근접한가에 스코어를 반영될 수 있다. 스코어는 자원, 자원 호스트, 및/또는 분산 시스템 전체에 영향을 고려하여, 다수의 상이한 배치 기준의 복합일 수 있다.
자원 호스트는 자원을 호스팅할 수 있는 자원 호스트를 결정하기 위해 초기에 평가될 수 있다. 예를 들어, 어떤 조건을 만족하지 않는 호스트는 고려하지 않고 걸러낼 수 있다. 이러한 조건은, 논리 그룹(예를 들면, 자원이 배치될 특정 서버 풀을 식별하는), 자원을 호스트할 수 있는 능력 또는 용량(예를 들면, 데이터를 저장하기에 충분한 바이트, 충분한 IOP 대역폭, 설치된 적절한 하드웨어 및/또는 소프트웨어, 등), 위치 또는 다양성 제약(예를 들면, 분산 자원의 일부인 자원은 분산 자원의 다른 자원을 호스팅하는 다른 자원 호스트와 동일한 서버 랙에 있는 자원 호스트에 배치될 수 없다), 및/또는 명시적으로 배제된 자원 호스트(예를 들면, 블랙리스트)를 포함할 수 있는데, 그러나 이들로 제한되지 않는다. 이어, 자원을 호스팅할 수 있는 남아있는 가용한 자원 호스트는 잠재적 목적지 호스트로서 평가될 수 있다. 예를 들어, 720에 나타낸 바와 같이, 가능한 목적지 자원 호스트(들)에 자원의 배치에 대해 배치 스코어(들)가 생성될 수 있다. 적어도 일부 실시예에서, 가용한 자원 호스트의 서브-세트는 가능한 배치로서 생성된 스코어를 가질 수 있는 반면, 다른 실시예에서, 모든 가용한 자원 호스트는 배치 스코어를 생성함으로써 고려될 수 있다. 710에서 스코어를 생성하기 위해 사용되는 동일한 배치 기준은 720에서 스코어를 생성하기 위해 사용될 수 있다(예를 들면, 분산 자원의 부분인 다른 자원과 더불어 자원의 구성, 가용 바이트, IOP, 또는 슬롯, 바이트 대 IOP 밸런스과 같은 자원 활용 밸런스, 용량 단편화에의 영향, 하드웨어/소프트웨어 특성, 및/또는 다양한 원하는 위치 기반 구성).
730에 나타낸 바와 같이, 자원의 현재 배치의 배치 스코어와 가능한 배치들의 스코어 간의 차이가 결정되어 최적화 임계치와 비교될 수 있다. 예를 들어, 차이는 임계값과 비교되는 값일 수 있다(차이>0.3이다). 가능한 배치 중 임의의 것의 차이가 최적화 임계치를 초과하지 않는다면, 730으로부터의 아니오 진행으로 나타낸 바와 같이, 다른 자원이, 780에 나타낸 바와 같이, 평가하기 위해 선택될 수 있다. 그러나, 임의의 배치의 차이가 자원을 초과한다면, 자원은 이주를 위한 후보 자원으로서 식별될 수 있다. 가장 큰 차이를 생성한 가능한 목적지는 목적지 호스트로서 식별될 수 있다(하나 이상의 목적지 호스트가 평가되었다면).
적어도 일부 실시예에서, 740에 나타낸 바와 같이, 목적지 자원 호스트에자원의 이주를 수행하기 위한 우선순위가 할당될 수 있다. 우선순위 인자는 할당된 우선순위를 스코어하거나, 가중하거나, 생성하거나, 아니면 표시하기 위해 사용될 수 있다. 예를 들어 우선순위 인자는 현재 목적지와 가능한 목적지 간의 차이 값(예를 들면, 더 큰 개선을 하는 이주를 수행하는 것을 지지하는), 자원 연령 또는 이력(예를 들면, 최신 자원은 오래 존재할 가능성이 적고 따라서 이주는 중요하지 않을 수 있다), 이주를 수행하기 위한 크기 또는 비용(예를 들어, 자원이 큰 데이터 볼륨, 복잡한 구성요소 또는 서비스, 또는 다른 자원 집약적인 이주가라면 이주를 지연시킨다), 및/또는 로컬 네트워크 상태(예를 들면, 클라이언트 요청에 서비스하는 것과 같은, 포어그라운드 처리때문에 네트워크 또는 다른 자원 제약 하에 있을 수도 있을 분산 시스템 내의 위치에서 이주 동작이 수행되는 것으로부터 지연시킨다)을 포함할 수 있다. 이러한 인자는, 다른 것들과 함께, 이주 동작에 대한 우선순위를 결정하기 위해 가중되거나, 조합되거나, 정렬되거나, 또는 선택적으로 적용될 수 있다.
이주 동작을 수행하는 우선순위와 함께, 수행될 이주 동작을 나타내기 위해, 이주 큐 또는 다른 데이터 구조, 자원, 또는 스케줄이 유지될 수 있다. 도 7과 관련하여 기술된 기술들은, 이주 큐를 주기적으로 또는 비주기적으로 업데이트하기 위해 사용될 수 있다. 예를 들어, 분산 시스템에서 자원 호스트의 활용은 자원이 추가되거나, 제거되거나, 어떤 방식으로 변경됨에 기인하여 변경될 수 있다. 이주 결정은 결과적으로 변경될 수 있다. 도 7의 기술을 주기적으로 수행하는 것은, 분산 시스템의 자원 호스트에서 발생하는 변경에 따라 이주 큐에서 이주 동작을 업데이트하거나 우선순위를 다시 정하기 위해 사용할 수 있다. 단계 750에 나타낸 바와 같이, 자원에 대한 이주 동작이 이주 큐에 위치되어 있는지에 대한 결정이 이루어질 수 있다. 그렇다면, 750으로부터의 예 진행으로 나타낸 바와 같이, 이주 큐 내의 자원에 대한 이주 동작이 업데이트될 수 있다. 예를 들어, 단계(740)에서 새로운 분석에 따라 우선순위 할당이 변경될 수 있으며, 이주 동작의 상태(예를 들어, 대기, 진행중, 완료), 타임스탬프, 새로운 목적지 호스트, 또는 다른 정보와 같은, 이주 동작 메타데이터가 변경될 수 있다. 일부 실시예에서, 진행중인 이주 동작은 업데이트되지 않을 수도 있다(예를 들어, 이주 큐에 있는 후속 분석을 위한 메타데이터를 보존하기 위해). 자원이 이주 큐에 없다면, 요소(750)로부터의 아니로 진행으로 나타낸 바와 같이, 자원을 목적지 자원 호스트에 이주시키기 위해 이주 동작이 추가될 수 있다. 이어, 780에 나타낸 바와 같이, 다른 자원 배치가 평가하기 위해 선택될 수 있다.
이주를 위한 후보 자원을 나타내는 이주 큐 또는 다른 구조는 이주 동작을 스케줄하고 수행하기 위해 이용될 수 있다. 예를 들어, 일부 이주 동작의 수행은 다른 이주 동작보다 더 큰 이익을 제공할 수 있다(자원의 동작 또는 분산 시스템에). 도 8은 일부 실시예에 따라, 후보 자원을 선택하고 이주하기 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다.
810에 나타낸 바와 같이, 일부 실시예에서, 수행될 이주 동작을 포함하는 이주 큐가 평가될 수 있다. 이주를 위해 유지되는 다양한 정보는 현재 수행될 필요가 없는(예를 들어, 이미 진행중이거나, 실패되었거나, 아니면 수행될 준비가 되지 않은 이주 동작) 동작을 걸러내기 위해 사용될 수 있다. 일부 실시예에서, 일부 이주 동작은 이주 동작이 스로틀되거나 특정 수로 제한되는 분산 시스템의 위치에서 수행될 수 있다. 적어도 부분적으로 평가에 기초하여, 이주 동작은, 820에 나타낸 바와 같이, 일부 실시예에서, 이주 큐 내의 이주 동작에 할당된 각각의 우선순위에 따라 수행하기 위해 큐로부터 선택될 수 있다. 예를 들어, 이주 큐는 우선순위 큐일 수 있고, 따라서 가장 높은 우선순위의 이주 동작이 이주 큐로부터 선택될 수 있다. 이주 동작의 수행을 스케줄링하기 위한 다양한 다른 우선순위 또는 순서화 스키마가 구현될 수 있다(예를 들면, FIFO(First In First Out)).
830에 나타낸 바와 같이, 일부 실시예에서, 목적지 자원 호스트는, 일부 실시예에서, 이주 동작의 후보 자원을 수신하기 위해 식별될 수 있다. 예를 들어, 이주 동작이 이주 큐에 추가되었을 때 선택된 목적지 자원 호스트를 사용하는 대신 현재 데이터에 기초하여 새로운 또는 다른 목적지 자원 호스트를 제공할 수 있는, 배치 엔진이나 다른 시스템, 서비스 또는 디바이스에 대한 요청이 행해질 수 있다. 대안적으로, 이주 큐에 이주 동작 엔트리에 표시된 목적지 자원 호스트는 목적지 자원 호스트로서 식별될 수 있다.
현재 자원 호스트로부터 식별된 목적지 자원 호스트로의 이주 동작이, 840에 나타낸 바와 같이, 지시될 수 있다. 예를 들어, 코맨드 또는 명령이 현재 위치의 자원 호스트에 보내질 수 있어, 후보 자원을 목적지 자원 호스트로 보내거나, 카피하거나, 통신하거나, 또는 전송할 수 있다. 일부 실시예에서, 현재 자원 호스트는 추가의 지시없이 이 전송을 수행하도록 구성될 수 있다. 적어도 일부 실시예에서, 자원은 먼저 현재의 자원 호스트로부터 입수될 수 있고, 이어서 이주 작업기(들)(340)과 같은 중재자에 의해 전송될 수 있다. 자원 호스트를 이주하는 것은 목적지 자원 호스트에서 다양한 구성 동작을 수행하거나 지시하는 동작을 포함할 수 있다. 예를 들어, 도 2-도 5와 관련하여 상술한 바와 같이, 슬레이브 복제 및 마스터 복제를 수반하는 데이터 볼륨의 복제의 이주는 이주된 복제의 유형에 따라 데이터 볼륨의 복제에 대한 슬레이브 또는 마스터로서 행동하도록 목적지 자원 호스트를 구성하는 것을 수반할 수 있다.
도 8에 도시된 기술들은 하나 또는 많은 상이한 시스템 또는 디바이스에 의해 수행될 수 있다. 예를 들어, 도 3에 330과 같은, 기회적 이주 관리기는 이주 큐의 평가를 수행하고 수행할 이주 동작을 선택할 수 있고, 반면 도 3에 단계(340)와 같이, 이주 작업기는 이주 동작의 일부로서 자원을 수신하고 이주 동작을 지시하기 위해 목적지 자원 호스트의 식별을 수행할 수 있다. 비동기적으로 이주가 수행될 수 있으므로, 이주 작업기는 자원의 이주 동작을 지시하고, 이어 다른 이주 동작을 입수하도록 지시할 수 있다. 일부 실시예에서, 단일 이주 관리기는 위에서 논의된 다양한 기술 모두를 수행할 수 있다. 대안적으로, 이주 작업기는 위의 기술을 수행할 수 있다. 따라서, 선행 예들은 제한하는 것으로 의도되지 않는다.
도 4와 관련하여 전술한 바와 같이, 이주를 위한 후보 자원을 나타내는 이주 큐 또는 다른 구조는 후보 자원에 대한 상태 정보를 유지할 수 있다. 이주 큐에서 상태 정보에 대한 변경은 이주 큐 내 일부 이주 동작을 무용이 되게 할 수 있다. 도 9는 일부 실시예에 따라, 이주 큐로부터 후보 자원을 제거하기 위한 다양한 방법 및 기술을 도시한 하이-레벨 흐름도이다. 910에 나타낸 바와 같이, 자원을 목적지 자원 호스트로 이주시키기 위해 이주 동작의 큐(예를 들어, 도 4에 이주 큐(400)) 내 이주 동작이 평가될 수 있다. 예를 들어, 이주 큐에 각 엔트리는 이주 큐로부터 제거되어야 하는 이주 동작을 식별하기 위해 평가될 수 있다. 요소(920, 930)는 이주 동작의 제거를 트리거할 수 있는 조건의 예를 제공한다.
분산 시스템에서 자원 호스트의 상태는 빈번하게 변경될 수 있다. 자원 호스트의 동작 또는 활용에서 자원이 생성, 제거 또는 변경될 수 있다. 이 동적인 정황은 자원을 이주하기 위한 앞선 결정을 변경시킬 수 있다. 예를 들어, 도 7에서 논의된 바와 같이, 후보 자원에 대해 이주의 우선순위가 변경되면, 이주 큐에 포함된 우선순위는 이주에 대한 현재의 우선순위를 반영하도록 업데이트될 수 있다. 일부 실시예에서, 일부 이주 동작은 더 이상 최적이 아닐 수 있다. 920에 나타낸 바와 같이, 이주 동작이 스테일하게 되면, 920로부터 예 진행로 나타낸 바와 같이, 이주 동작은, 950에 나타낸 바와 같이, 큐로부터 제거될 수 있다.
스테일 이주 동작은 다양한 실시예에서, 더 이상 수행하기에 최적이 아닐 수 있다(예를 들어, 전술한 배치 기준에 따라). 예를 들어, 스테일 이주 동작은 새로운 우선순위 또는 상태 정보로 업데이트되어 있지 않을 수 있다. 이주 동작의 우선순위 및/또는 다른 상태 정보가 이주 큐의 우선순위화 스위핑이 수행되었던 마지막 시간에 업데이트되지 않았다면, 이는 이주 동작이 더 이상 수행하기에 최적이 아닐 수 있음을 나타낼 수 있다. 마지막 업데이트 시간을 나타내는 이주 동작에 대해 타임스탬프 또는 다른 표시가 유지될 수 있다. 일부 실시예에서, 업데이트된 타임스탬프를 갖지 않을 수 있는 "진행중" 상태의 이주 동작에 대해 예외가 만들어 질 수 있다. 일부 실시예에서, 초과한다면 이주 동작이 스테일한 것임을 나타내는 유지시간 임계치와 타임스탬프와 간에 비교가 있을 수 있다. 일부 실시예에서, 이주 동작이 스테일하여 제거되어야 함을 나타내는 마커 또는 다른 표시(예를 들어, 툼스톤)가 이주 큐 내에 이주 동작에 대한 엔트리에 놓여질 수 있다. 일부 시나리오에서, 이주 동작이 시작되었지만 실패되었거나 완료되지 않았음을 나타내는(예를 들어, "이주하는" 상태에서 시간을 이주 시간 임계치와 비교함으로써) 이주 동작.
930에 나타낸 바와 같이, 이주 동작이 완료되면, 930으로부터 예 진행으로 나타낸 바와 같이, 이주 동작은, 950에 나타낸 바와 같이, 이주 큐로부터 제거될 수 있다. 예를 들어, 이주 동작의 상태를 완료로 업데이트하기 위해 이주 큐의 우선순위 스위핑 동안에 이주 동작 상태가 변경될 수 있다.
일부 이주 동작이 다른 것들보다 길게 걸릴 수 있기 때문에(예를 들어, 일부 자원은 다른 자원보다 클 수 있다), 이주 동작은 요소(920, 930)에 의해 예시된 바와 같은 제거 조건이 만족될 때까지 이주 큐에 남아 있을 수 있다. 따라서, 제거 조건이 만족되지 않으면, 940에 나타낸 바와 같이, 큐 내의 다른 이주 동작이 평가하기 위해 선택될 수 있다. 도 9에 도시된 기술은 이주 큐에 모든 이주 동작이 평가될 때까지 수행될 수 있다. 이주 동작을 제거하기 위해 이주 큐가 다시 평가되기 전에 일정 시간이 경과될 수 있다.
본 개시물의 실시예는 이하의 항목들 면에서 설명될 수 있다:
1. 분산 시스템에 있어서,
하나 이상의 복수의 자원들을 각각 호스팅하는 복수의 자원 호스트들;
기획적 배치 관리기(opportunistic placement manager)로서,
상기 복수의 자원들의 현재 배치들을 하나 이상의 배치 기준에 따라 평가하고, 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대한 상기 복수의 자원 호스트들 간에 자원 배치를 개선시키고;
상기 평가에 적어도 부분적으로 기초하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 상기 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들에 이주시키기 위한 상기 복수의 자원들 중 하나 이상의 후보 자원들을 식별하고, 상기 복수의 자원 중 상기 하나 이상의 후보 자원들의 장래의 이주들은 상기 하나 이상의 배치 기준에 관한 개선 임계치를 초과하고;
상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키는 이주 동작을 지시하도록 구성되고, 상기 각각의 목적지 자원 호스트에 상기 적어도 하나의 후보 자원의 상기 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원 호스트들의 자원 배치를 향상시키는, 기회적 배치 관리기를 포함한다.
2. 항목 1의 시스템에 있어서, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하기 위해, 상기 기회적 배치 관리기는,
상기 하나 이상의 후보 자원들의 이주에 대한 각각의 우선순위들을 결정하고;
상기 하나 이상의 후보 자원들에 대한 각각의 이주 동작을 큐에 배치하도록 구성되고;
상기 기회적 배치 관리기는, 상기 큐의 평가에 적어도 부분적으로 기초하여, 상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하도록 더 구성된다.
3. 항목 2의 시스템에 있어서, 복수의 이주 작업기들을 더 포함하고,
상기 적어도 하나의 후보 자원을 이주시키는 상기 이주 동작을 지시하기 위해, 상기 기회적 배치 관리기는 상기 복수의 이주 작업기 중 하나에 수행할 상기 이주 동작을 발송하도록 구성된다.
4. 항목 1의 시스템에 있어서, 상기 분산 시스템은 가상 블록 기반 스토리지 서비스이고, 상기 복수의 자원은 상기 가상 블록 기반 스토리지 서비스의 복수의 클라이언트에 대해 유지되는 복수의 데이터 볼륨이다.
5. 방법에 있어서,
하나 이상의 컴퓨팅 디바이스들에 의해,
하나 이상의 배치 기준에 따라 분산 시스템의 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 복수의 자원들의 현재 배치를 평가하는 단계로서, 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대해 상기 복수의 자원 호스트들 간에 자원 배치를 개선시키는, 상기 평가하는 단계;
상기 평가에 적어도 부분적으로 기초하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 상기 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들로 이주시키기 위한 상기 복수의 자원들의 하나 이상의 후보 자원들을 식별하는 단계로서, 상기 복수의 자원 중 상기 하나 이상의 후보 자원들의 장래의 이주들은 개선 임계치를 초과하는, 상기 식별하는 단계; 및
상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키는 단계로서, 상기 각각의 목적지 자원 호스트로의 상기 적어도 하나의 후보 자원의 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원들의 자원 배치를 개선시키는, 상기 이주시키는 단계를 수행한다.
6. 항목 5의 방법에 있어서, 상기 복수의 자원 중 하나 이상의 후보 자원을 식별하는 단계는 상기 하나 이상의 후보 자원의 이주를 수행하기 위해 각각의 우선순위를 할당하는 단계를 포함하고;
상기 방법은 상기 하나 이상의 후보 자원에 할당된 각각의 우선순위에 따라 이주시킬 적어도 하나의 후보 자원을 선택하는 단계를 더 포함한다.
7. 항목 6의 방법에 있어서, 상기 복수의 자원의 현재 배치의 다른 평가에 따라 상기 하나 이상의 후보 자원의 각각의 우선순위를 업데이트하는 단계; 및
하나 이상의 후보 자원의 업데이트된 각각의 우선순위에 따라 이주시킬 하나 이상의 후보 자원 중 또 다른 자원을 선택하는 단계를 더 포함한다.
8. 항목 6의 방법에 있어서,
상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하는 단계는 상기 하나 이상의 후보 자원들에 대한 각각의 이주 동작들을 큐에 배치시키는 단계를 더 포함하고;
상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하는 단계는 상기 큐의 평가에 기초하여 수행된다.
9. 항목 8의 방법에 있어서, 상기 복수의 자원들의 상기 현재 배치들의 또 다른 평가에 따라 상기 큐로부터 상기 하나 이상의 후보 자원들 중 적어도 하나를 제거하는 단계를 더 포함한다.
10. 항목 5의 방법에 있어서, 상기 하나 이상의 배치 기준에 따라 상기 분산 시스템의 상기 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 상기 복수의 자원들의 현재 배치들을 평가하는 단계는,
상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 상기 현재 배치들에 대한 각각의 배치 스코어들을 생성하는 단계를 포함하고,
상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하는 단계는,
상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 하나 이상의 가능한 배치에 대한 각각의 배치 스코어들을 생성하는 단계;
상기 현재 배치들에 대한 상기 각각의 배치 스코어들과 하나 이상의 가능한 배치들에 대한 상기 각각의 배치 스코어들 간에 각각의 스코어 차이를 계산하는 단계; 및
상기 개선 임계치를 초과하는 각각의 스코어 차이들을 갖는 자원들을 상기 하나 이상의 후보 자원들로서 결정하는 단계를 포함한다.
11. 항목 5의 방법에 있어서, 상기 자원은 분산 자원을 구현하는 복수의 자원들 중 하나이며, 상기 하나 이상의 배치 기준은 상기 분산 자원의 상기 복수의 자원들에 대한 현재 배치 구성의 평가를 포함한다.
12. 항목 5의 방법에 있어서, 상기 각각의 목적지 자원 호스트에 상기 하나 이상의 후보 자원 중 적어도 하나를 이주하는 단계는 상기 목적지 자원 호스트를 식별하는 단계를 포함한다.
13. 항목 5의 방법에 있어서, 상기 적어도 하나의 후보 자원을 상기 각각의 목적지 자원 호스트에 이주하는 단계는 상기 복수의 자원 중 또 다른 자원에 대한 배치를 향상시킨다.
14. 항목 5의 방법에 있어서, 상기 분산 시스템은 네트워크 기반 서비스이고,
상기 복수의 자원들은 상기 네트워크 기반 서비스의 복수의 클라이언트들을 위해 상기 네트워크 기반 서비스에서 유지되고, 상기 평가 단계, 상기 식별 단계, 상기 이주 단계는 상기 네트워크 기반 서비스의 백그라운드 서비스의 일부로서 수행된다.
15. 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 하나 이상의 컴퓨팅 디바이스들에 의해 실행되었을 때 상기 하나 이상의 컴퓨팅 디바이스들로 하여금,
하나 이상의 배치 기준에 따라 분산 시스템의 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 복수의 자원들의 현재 배치를 평가하고, 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대해 상기 복수의 자원 호스트들 간에 자원 배치를 개선시키고;
상기 평가에 적어도 부분적으로 기초하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 상기 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들로 이주시키기 위해 상기 복수의 자원들의 하나 이상의 후보 자원들을 식별하고, 상기 복수의 자원 중 상기 하나 이상의 후보 자원들의 장래의 이주들은 개선 임계치를 초과하고; 및
상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키고, 상기 각각의 목적지 자원 호스트에 상기 적어도 하나의 후보 자원의 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원들의 자원 배치를 개선시키는 것을 구현하게 하는 프로그램 명령들을 저장한다.
16. 항목 15의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서,
상기 복수의 자원들 중 하나 이상의 후보 자원들을 식별할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 후보 자원들의 이주를 수행하기 위한 각각의 우선순위들을 할당하는 것을 구현하게 하고;
상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하는 것을 더 구현하게 한다.
17. 항목 16의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금
상기 복수의 자원들의 상기 현재 배치들의 또 다른 평가에 따라 상기 하나 이상의 후보 자원들의 상기 각각의 우선순위들을 업데이트하고;
상기 하나 이상의 후보 자원들의 상기 업데이트된 각각의 우선순위들에 따라 이주시킬 상기 하나 이상의 후보 자원들 중 또 다른 자원을 선택하는 것을 더 구현하게 한다.
18. 항목 16의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 복수의 자원 중 하나 이상의 후보 자원을 식별할 때, 상기 프로그램 명령은 상기 하나 이상의 컴퓨팅 디바이스로 하여금 상기 하나 이상의 후보 자원에 대한 각각의 이주 동작을 큐에 배치시키는 것을 더 구현하게 하고;
상기 하나 이상의 후보 자원에 할당된 각각의 우선순위에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하는 단계는 상기 큐의 평가에 기초하여 수행된다.
19. 항목 18의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 프로그램 명령들은 상기 하나 또는 그 이상의 컴퓨팅 디바이스로 하여금,
상기 적어도 하나의 후보 자원에 대한 각각의 이주 동작이 완료되었는지를 결정하는 단계; 및
상기 각각의 이주 동작이 완료되었다는 결정에 응답하여, 상기 이주 큐로부터 상기 각각의 이주 동작을 제거하는 단계를 구현하게 한다.
20. 항목 15의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 하나 이상의 배치 기준에 따라 상기 분산 시스템의 상기 복수의 자원 호스트들의 상기 각각의 자원 호스트들에 호스팅된 상기 복수의 자원들의 현재 배치를 평가할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 상기 현재 배치들에 대한 각각의 배치 스코어들을 생성하는 것을 구현하게 하며;
상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금,
상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 하나 이상의 가능한 배치들에 대한 각각의 배치 스코어들을 생성하고;
상기 현재 배치들에 대한 상기 각각의 배치 스코어들과 하나 이상의 가능한 배치들에 대한 상기 각각의 배치 스코어들 간에 각각의 스코어 차이들 계산하고;및
상기 개선 임계치를 초과하는 각각의 스코어 차이들을 갖는 자원들을 상기 하나 이상의 후보 자원들로서 결정하도록 구현하게 한다.
21. 항목 15의 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 분산 시스템은 가상 블록 기반의 스토리지 서비스이고, 상기 복수의 자원들은 상기 가상 블록 기반 스토리지 서비스의 복수의 클라이언트들을 위해 유지되는 데이터 볼륨(data volume)들이다.
여기에 설명된 방법은 하드웨어 및 소프트웨어의 임의의 조합에 의해 다양한 실시예에서 구현될 수 있다. 예를 들어, 일 실시예에서, 방법은 프로세서에 결합된 컴퓨터 판독가능 저장 매체에 저장된 프로그램 명령을 실행하는 하나 이상의 프로세서를 포함하는 컴퓨터 시스템(예를 들어, 도 10에서와 같은 컴퓨터 시스템)에 의해 구현될 수 있다. 프로그램 명령은 본원에 기술된 기능(예를 들어, 다양한 서버, 자원 호스트, 제어 플레인, 관리기, 및/또는 본원에 설명된 블록-기반 스토리지 서비스를 구현하는 것들과 같은 그외 다른 구성요소들의 기능)을 구현하도록 구성될 수 있다. 도면에 도시되고 본원에 기술된 바와 같은 다양한 방법들은 방법의 예시적 실시예를 나타낸다. 임의의 방법의 순서는 변경될 수 있고, 다양한 요소가 추가, 재정렬, 조합, 생략, 수정, 등등이 될 수 있다.
본원에 설명된 바와 같이 자원 배치를 최적화하기 위한 기회적 자원 이주의 실시예는 다양한 다른 디바이스와 상호 작용할 수 있는 하나 이상의 컴퓨터 시스템상 에서 실행될 수 있다. 도 10은 다양한 실시예에 따라, 예시적 컴퓨터 시스템을 도시하는 블록도이다. 예를 들어, 컴퓨터 시스템(1000)은 상이한 실시예에서, 스토리지 및/또는 컴퓨팅 클러스터, 데이터 스토어, 및/또는 클라이언트의 컴퓨팅 노드를 구현하도록 구성될 수 있다. 컴퓨터 시스템(1000)은 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스, 애플리케이션 서버, 스토리지 디바이스, 전화, 모바일 전화, 또는 일반적으로 임의의 유형의 컴퓨팅 디바이스를 포함하는, 그러나 이들로 제한되지 않는 다양한 유형의 디바이스 중 임의의 것일 수 있다.
컴퓨터 시스템(1000)은 입력/출력(I/O) 인터페이스(1030)를 통해 시스템 메모리(1020)에 결합된 하나 이상의 프로세서(1010)(이 중 어느 것이든 단일 또는 멀티스레드일 수 있는 다중 코어를 포함할 수 있다)를 포함한다. 컴퓨터 시스템(1000)은 I/O 인터페이스(1030)에 결합된 네트워크 인터페이스(1040)를 더 포함한다. 여러 실시예에서, 컴퓨터 시스템(1000)은 하나의 프로세서(1010)를 포함하는 단일 프로세서 시스템일 수 있거나, 몇개의 프로세서(1010)(예를 들어, 2, 4, 8 또는 다른 적절한 수)를 포함하는 멀티프로세서 시스템일 수 있다. 프로세서(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), 및 램버스 RAM, EEPROM, 비휘발성/플래시형 메모리, 또는 임의의 다른 유형의 메모리 중 하나 이상). 시스템 메모리(1020)는 본원에 설명된 방법 및 기술을 구현하기 위해 프로세서(들)(1010)에 의해 실행가능한 프로그램 명령(1025)을 포함할 수 있다. 여러 실시예에서, 프로그램 명령(1025)은 플랫폼 네이티브 바이너리로, JavaTM 바이트-코드와 같은 임의의 해석된 언어, 또는 C/C++, JavaTM, 등과 같은 임의의 다른 언어로, 또는 이들의 임의의 조합으로 인코딩될 수 있다. 예를 들어, 도시된 실시예에서, 프로그램 명령(1025)은 상이한 실시예에서, 자원 호스트의 기능을 구현하기 위해 실행가능한 프로그램 명령을 포함한다. 일부 실시예에서, 프로그램 명령(1025)은 다수의 분리된 클라이언트, 노드, 및/또는 다른 구성요소를 구현할 수 있다.
일부 실시예에서, 프로그램 명령(1025)은 UNIX, LINUX, SolarisTM, MacOSTM, WindowsTM, 등과 같은 다양한 운영 시스템 중 임의의 것일 수 있는 운영 시스템(도시되지 않음)을 구현하도록 실행가능한 명령을 포함할 수 있다. 프로그램 명령(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)는 네트워크 인터페이스(1040) 또는 다른 주변 디바이스 인터페이스를 통하는 것을 포함하여, 프로세서(1010)와, 시스템 메모리(1020)와, 시스템 내의 임의의 주변 디바이스 간에 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예에서, I/O 인터페이스(1030)는 하나의 구성요소(예를 들어, 시스템 메모리(1020))로부터 데이터 신호를 다른 구성요소(예를 들어, 프로세서(1010))에 의한 사용에 적합한 포맷으로 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환을 수행할 수 있다. 일부 실시예에서, I/O 인터페이스(1030)는, 예를 들어, PCI(Peripheral Component Interconnect) 버스 표준 또는 USB(Universal Serial Bus) 표준의 변형과 같은 다양한 유형의 주변 디바이스 버스를 통해 부착된 디바이스에 대한 지원을 포함할 수 있다. 일부 실시예에서, I/O 인터페이스(1030)의 기능은, 예를 들어, 노스 브릿지 및 사우스 브릿지와 같은 2 이상의 개별 구성요소로 분할될 수 있다. 또한, 일부 실시예에서, 시스템 메모리(1020)에 대한 인터페이스와 같은, I/O 인터페이스(1030)의 일부 또는 모든 기능은 프로세서(1010)에 직접 탑재될 수 있다.
네트워크 인터페이스(1040)는, 예를 들어, 다른 컴퓨터 시스템(1090)과 같은 네트워크에 부착된 다른 디바이스와 컴퓨터 시스템(1000) 간에 데이터가 교환될 수 있도록 구성될 수 있다. 또한, 네트워크 인터페이스(1040)는 컴퓨터 시스템(1000)과 다양한 I/O 디바이스(1050) 및/또는 원격 스토리지(1070) 간에 통신을 허용하도록 구성될 수 있다. 일부 실시예에서, 입력/출력 디바이스(1050)는 하나 이상의 디스플레이 단말, 키보드, 키패드, 터치패드, 스캐닝 디바이스, 음성 또는 광학 인식 디바이스, 또는 하나 이상의 컴퓨터 시스템(1000)에 의해 데이터를 입력하거나 인출하는데 적합한 임의의 다른 디바이스를 포함할 수 있다. 다수의 입/출력 디바이스(1050)는 컴퓨터 시스템(1000)에 있을 수 있거나, 컴퓨터 시스템(1000)을 포함하는 분산 시스템의 여러 노드 상에 분산될 수 있다. 일부 실시예에서, 유사한 입력/출력 디바이스는 컴퓨터 시스템(1000)과는 별개일 수 있고, 네트워크 인터페이스(1040)와 같은 유선 또는 무선 연결을 통해 컴퓨터 시스템(1000)을 포함하는 분산 시스템의 하나 이상의 노드와 상호작용할 수 있다. 네트워크 인터페이스(1040)는 하나 이상의 무선 네트워킹 프로토콜(예를 들어, Wi-Fi/IEEE 802.11, 또는 다른 무선 네트워킹 표준)을 공통적으로 지원할 수 있다. 그러나, 여러 실시예에서, 네트워크 인터페이스(1040)는, 예를 들어, 다른 유형의 이더넷 네트워크와 같은 임의의 적합한 유선 또는 무선 일반 데이터 네트워크를 통해 통신을 지원할 수 있다. 또한, 네트워크 인터페이스(1040)는 아날로그 음성 네트워크 또는 디지털 광섬유 통신 네트워크와 같은 전기통신/전화 네트워크를 통해, 또는 파이버 채널 SAN과 같은 스토리지 영역 네트워크를 통해, 또는 임의의 다른 적합한 유형의 네트워크 및/또는 프로토콜을 통해, 통신을 지원할 수 있다. 여러 실시예에서, 컴퓨터 시스템(1000)은 도 10에 도시된 것들보다 더 많거나 적거나 또는 상이한 구성요소들을 포함할 수 있다(예를 들어, 디스플레이, 비디오 카드, 오디오 카드, 주변 디바이스, ATM 인터페이스와 같은 다른 네트워크 인터페이스, 이더넷 인터페이스, 프레임 릴레이 인터페이스, 등).
본원에서 설명된 분산 시스템 실시예 중 임의의 것, 혹은 이들의 구성요소 중 임의의 것이 하나 이상의 네트워크 기반 서비스로서 구현될 수 있음에 유의한다. 예를 들어, 컴퓨팅 서비스 내의 컴퓨팅 클러스터는 본원에 기술된 분산 컴퓨팅 시스템을 채용하는 컴퓨팅 및/또는 스토리지 서비스 및/또는 다른 유형의 서비스를 네트워크 기반 서비스로서 클라이언트에 제공할 수 있다. 일부 실시예에서, 네트워크 기반 서비스는 상호운용 가능한 기계-대-기계 상호작용을 네트워크를 통해 지원하도록 설계된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 네트워크 기반 서비스는 WSDL(Web Services Description Language)과 같은 기계 처리가능 포맷으로 기술된 인터페이스를 가질 수 있다. 다른 시스템은 네트워크 기반 서비스의 인터페이스에 대한 설명에 의해 규정된 방식으로 네트워크 기반 서비스와 상호작용할 수 있다. 예를 들어, 네트워크 기반 서비스는 다른 시스템이 호출할 수 있는 다양한 동작을 정의할 수 있으며, 그래도, 다양한 동작을 요청할 때 다른 시스템이 준수할 것으로 예상되는 특정 애플리케이션 프로그래밍 인터페이스(API)를 정의할 수 있다.
여러 실시예에서, 네트워크 기반 서비스는 네트워크 기반 서비스 요청과 관련된 파라미터 및/또는 데이터를 포함하는 메시지를 사용하여 요청되거나 호출될 수 있다. 이러한 메시지는 XML(Extensible Markup Language)과 같은 특정 마크업 언어에 따라 포맷될 수 있고, 및/또는 SOAP(Simple Object Access Protocol)와 같은 프로토콜을 사용하여 캡슐화될 수 있다. 네트워크 기반 서비스 요청을 수행하기 위해, 네트워크 기반 서비스 클라이언트는 요청을 포함하는 메시지를 어셈블하고 이 메시지를 HTTP(Hypertext Transfer Protocol)와 같은 인터넷 기반 애플리케이션 계층 전송 프로토콜을 사용하여 네트워크 기반 서비스에 대응하는 어드레스가능한 엔드포인트(예를 들어, URL(Uniform Resource Locator))에 전달할 수 있다.
일부 실시예에서, 네트워크 기반 서비스는 메시지 기반 기술보다는 표현형 상태 전송("RESTful") 기술을 사용하여 구현될 수 있다. 예를 들어, RESTful 기술에 따라 구현된 네트워크 기반 서비스는 SOAP 메시지 내에 캡슐화되지 않고 PUT, GET 또는 DELETE와 같은 HTTP 방법 내에 포함된 파라미터를 통해 호출될 수 있다.
위에 실시예가 상당히 상세하게 설명되었지만, 일단 위에 개시가 완전히 이해되면 당업자에게 명백하게 되는 바와 같이 많은 변형 및 수정이 이루어질 수 있다. 다음의 청구범위는 이러한 모든 수정 및 변경을 포함하는 것으로 해석되고, 따라서 위에 설명은 제한적인 의미가 아니라 예시적인 것으로 간주되게 의도된 것이다.

Claims (15)

  1. 분산 시스템에 있어서,
    복수의 자원들 중 하나 이상을 각각 호스팅하는 복수의 자원 호스트들 - 상기 복수의 자원 호스트들은 각각의 자원들이 네트워크를 통해 상기 복수의 자원 호스트들과는 상이한 클라이언트에 액세스가능하게 함 -; 및
    기회적 배치 관리기(opportunistic placement manager)
    를 포함하고,
    상기 기회적 배치 관리기는:
    상기 복수의 자원들의 현재 배치들을 하나 이상의 배치 기준에 따라 평가하고 - 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대한 상기 복수의 자원 호스트들 간에 자원 배치를 개선시킴 -;
    상기 평가에 적어도 부분적으로 기초하여 상기 복수의 자원들 중 하나 이상의 후보 자원들을 식별하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들로 이주시키고 - 상기 각각의 목적지 자원 호스트들은 현재 상기 복수의 자원들 중 하나 이상의 다른 자원들이 상기 네트워크를 통해 액세스가능하게 하고, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들의 장래의(prospective) 이주들은 상기 하나 이상의 배치 기준에 관하여 개선 임계치를 초과함 -; 그리고
    상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키는 이주 동작을 지시 - 상기 각각의 목적지 자원 호스트으로의 상기 적어도 하나의 후보 자원의 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원들의 자원 배치를 향상시킴 -
    하도록 구성되는, 분산 시스템.
  2. 청구항 1에 있어서, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하기 위해, 상기 기회적 배치 관리기는,
    상기 하나 이상의 후보 자원들의 이주에 대한 각각의 우선순위들을 결정하고;
    상기 하나 이상의 후보 자원들에 대한 각각의 이주 동작을 큐에 배치하도록 구성되고;
    상기 기회적 배치 관리기는, 상기 큐의 평가에 적어도 부분적으로 기초하여, 상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하도록 더 구성된, 분산 시스템.
  3. 청구항 2에 있어서, 복수의 이주 작업기들(migration worker)을 더 포함하고,
    상기 적어도 하나의 후보 자원을 이주시키는 상기 이주 동작을 지시하기 위해, 상기 기회적 배치 관리기는 상기 복수의 이주 작업기 중 하나에 수행할 상기 이주 동작을 발송하도록 구성된, 분산 시스템.
  4. 방법에 있어서,
    하나 이상의 컴퓨팅 디바이스들에 의해,
    하나 이상의 배치 기준에 따라 분산 시스템의 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 복수의 자원들의 현재 배치를 평가하는 단계 - 상기 복수의 자원 호스트들은 상기 복수의 자원들 중 각각의 자원들이 네트워크를 통해 상기 복수의 자원 호스트들과는 상이한 클라이언트에 액세스가능하게 하고, 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대한 상기 복수의 자원 호스트들 간에 자원 배치를 개선시킴 -;
    상기 평가에 적어도 부분적으로 기초하여 상기 복수의 자원들의 하나 이상의 후보 자원들을 식별하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 상기 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들로 이주시키기 위한 단계 - 상기 각각의 목적지 자원 호스트들은 현재 상기 복수의 자원들 중 하나 이상의 다른 자원들이 상기 네트워크를 통해 액세스가능하게 하고, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들의 장래의 이주들은 개선 임계치(improvement threshold)를 초과함 -; 및
    상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키는 단계 - 상기 각각의 목적지 자원 호스트에 상기 적어도 하나의 후보 자원의 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원들의 자원 배치를 개선시킴 -
    를 수행하는, 방법.
  5. 청구항 4에 있어서, 상기 복수의 자원들 중 하나 이상의 후보 자원들을 식별하는 단계는 상기 하나 이상의 후보 자원들의 이주를 수행하기 위해 각각의 우선순위들을 할당하는 단계를 포함하고;
    상기 방법은 상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하는 단계를 더 포함하는, 방법.
  6. 청구항 5에 있어서, 상기 복수의 자원들의 상기 현재 배치들의 또 다른 평가에 따라 상기 하나 이상의 후보 자원들의 상기 각각의 우선순위들을 업데이트하는 단계; 및
    상기 하나 이상의 후보 자원들의 상기 업데이트된 각각의 우선순위들에 따라 이주시킬 상기 하나 이상의 후보 자원들 중 또 다른 자원을 선택하는 단계를 더 포함하는, 방법.
  7. 청구항 5에 있어서, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하는 단계는 상기 하나 이상의 후보 자원들에 대한 각각의 이주 동작들을 큐에 배치시키는 단계를 더 포함하고;
    상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하는 단계는 상기 큐의 평가에 기초하여 수행하는, 방법.
  8. 청구항 7에 있어서, 상기 복수의 자원들의 상기 현재 배치들의 또 다른 평가에 따라 상기 큐로부터 상기 하나 이상의 후보 자원들 중 적어도 하나를 제거하는 단계를 더 포함하는, 방법.
  9. 청구항 4에 있어서, 상기 하나 이상의 배치 기준에 따라 상기 분산 시스템의 상기 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 상기 복수의 자원들의 현재 배치들을 평가하는 단계는,
    상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 상기 현재 배치들에 대한 각각의 배치 스코어(placement score)들을 생성하는 단계를 포함하고,
    상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별하는 단계는,
    상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 하나 이상의 가능한 배치에 대한 각각의 배치 스코어들을 생성하는 단계;
    상기 현재 배치들에 대한 상기 각각의 배치 스코어들과 하나 이상의 가능한 배치들에 대한 상기 각각의 배치 스코어들 간에 각각의 스코어 차이를 계산하는 단계; 및
    상기 개선 임계치(improvement threshold)를 초과하는 각각의 스코어 차이들을 갖는 자원들을 상기 하나 이상의 후보 자원들로서 결정하는 단계를 포함하는, 방법.
  10. 청구항 4에 있어서, 상기 적어도 하나의 후보 자원은 분산 자원을 구현하는 복수의 자원들 중 하나이며, 상기 하나 이상의 배치 기준은 상기 분산 자원의 상기 복수의 자원들에 대한 현재 배치 구성의 평가를 포함하는, 방법.
  11. 청구항 4에 있어서, 상기 분산 시스템은 네트워크 기반 서비스이고,
    상기 복수의 자원들은 상기 네트워크 기반 서비스의 복수의 클라이언트들을 위해 상기 네트워크 기반 서비스에서 유지되고, 상기 평가, 상기 식별, 상기 이주는 상기 네트워크 기반 서비스의 백그라운드(background) 서비스의 일부로서 수행되는, 방법.
  12. 비-일시적 컴퓨터 판독가능 저장 매체로서,
    하나 이상의 컴퓨팅 디바이스들에 의해 실행되었을 때 상기 하나 이상의 컴퓨팅 디바이스들로 하여금,
    하나 이상의 배치 기준에 따라 분산 시스템의 복수의 자원 호스트들의 각각의 자원 호스트들에 호스팅된 복수의 자원들의 현재 배치를 평가하고 - 상기 복수의 자원 호스트들은 상기 복수의 자원들 중 각각의 자원들이 네트워크를 통해 상기 복수의 자원 호스트들과는 상이한 클라이언트에 액세스가능하게 하고, 상기 하나 이상의 배치 기준은 상기 분산 시스템에 대해 상기 복수의 자원 호스트들 간에 자원 배치를 개선시킴 -;
    상기 평가에 적어도 부분적으로 기초하여 상기 복수의 자원들의 하나 이상의 후보 자원들을 식별하여, 상기 하나 이상의 후보 자원들을 현재 호스팅하고 있는 상기 각각의 자원 호스트들로부터 상기 복수의 자원 호스트들의 각각의 목적지 자원 호스트들로 이주시키고 - 상기 각각의 목적지 자원 호스트들은 현재 상기 복수의 자원들 중 하나 이상의 다른 자원들이 상기 네트워크를 통해 액세스가능하게 하고, 상기 복수의 자원들 중 상기 하나 이상의 후보 자원들의 장래의(prospective) 이주들은 개선 임계치를 초과함 -; 그리고
    상기 하나 이상의 후보 자원들 중 적어도 하나를 상기 각각의 목적지 자원 호스트에 이주시키는 것 - 상기 각각의 목적지 자원 호스트에 상기 적어도 하나의 후보 자원의 이주는 상기 개선 임계치를 초과하여 상기 복수의 자원들의 자원 배치를 개선시킴 -
    을 구현하게 하는 프로그램 명령들을 저장하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  13. 청구항 12에 있어서, 상기 복수의 자원들 중 하나 이상의 후보 자원들을 식별할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 후보 자원들의 이주를 수행하기 위한 각각의 우선순위들을 할당하는 것을 구현하게 하고;
    상기 프로그램 명령들은 또한 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 후보 자원들에 할당된 상기 각각의 우선순위들에 따라 이주시킬 상기 적어도 하나의 후보 자원을 선택하고;
    상기 복수의 자원들의 상기 현재 배치들의 또 다른 평가에 따라 상기 하나 이상의 후보 자원들의 상기 각각의 우선순위들을 업데이트하고; 및
    상기 하나 이상의 후보 자원들의 상기 업데이트된 각각의 우선순위들에 따라 이주시킬 상기 하나 이상의 후보 자원들 중 또 다른 자원을 선택하는 것을 구현하게 하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  14. 청구항 12에 있어서, 상기 하나 이상의 배치 기준에 따라 상기 분산 시스템의 상기 복수의 자원 호스트들의 상기 각각의 자원 호스트들에 호스팅된 상기 복수의 자원들의 현재 배치를 평가할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 상기 현재 배치들에 대한 각각의 배치 스코어들을 생성하는 것을 구현하게 하며;
    상기 복수의 자원들 중 상기 하나 이상의 후보 자원들을 식별할 때, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금,
    상기 하나 이상의 배치 기준에 따라 상기 복수의 자원들의 하나 이상의 가능한 배치들에 대한 각각의 배치 스코어들을 생성하고;
    상기 현재 배치들에 대한 상기 각각의 배치 스코어들과 하나 이상의 가능한 배치들에 대한 상기 각각의 배치 스코어들 간에 각각의 스코어 차이들을 계산하고;
    상기 개선 임계치를 초과하는 각각의 스코어 차이들을 갖는 자원들을 상기 하나 이상의 후보 자원들로서 결정하게 하는 것을 구현하게 하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  15. 청구항 12에 있어서, 상기 분산 시스템은 가상 블록 기반 스토리지 서비스이고, 상기 복수의 자원들은 상기 가상 블록 기반 스토리지 서비스의 복수의 클라이언트들을 위해 유지되는 데이터 볼륨(data volume)들인, 비-일시적 컴퓨터 판독가능 저장 매체.
KR1020177024942A 2015-03-09 2016-03-09 자원 배치 최적화를 위한 기회적 자원 이주 KR102031471B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/642,445 US10715460B2 (en) 2015-03-09 2015-03-09 Opportunistic resource migration to optimize resource placement
US14/642,445 2015-03-09
PCT/US2016/021580 WO2016145091A1 (en) 2015-03-09 2016-03-09 Opportunistic resource migration to optimize resource placement

Publications (2)

Publication Number Publication Date
KR20170110708A KR20170110708A (ko) 2017-10-11
KR102031471B1 true KR102031471B1 (ko) 2019-11-08

Family

ID=55590159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177024942A KR102031471B1 (ko) 2015-03-09 2016-03-09 자원 배치 최적화를 위한 기회적 자원 이주

Country Status (9)

Country Link
US (1) US10715460B2 (ko)
EP (1) EP3268860A1 (ko)
JP (2) JP2018514018A (ko)
KR (1) KR102031471B1 (ko)
CN (1) CN107430528B (ko)
AU (2) AU2016229135A1 (ko)
CA (1) CA2978889C (ko)
SG (1) SG11201707091TA (ko)
WO (1) WO2016145091A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US10721181B1 (en) * 2015-03-10 2020-07-21 Amazon Technologies, Inc. Network locality-based throttling for automated resource migration
US11336519B1 (en) * 2015-03-10 2022-05-17 Amazon Technologies, Inc. Evaluating placement configurations for distributed resource placement
US10491667B1 (en) 2015-03-16 2019-11-26 Amazon Technologies, Inc. Customized memory modules in multi-tenant service provider systems
US9740510B2 (en) * 2015-03-31 2017-08-22 Alcatel Lucent Minimizing overhead over-provisioning costs in machine configurations
WO2016163025A1 (ja) * 2015-04-10 2016-10-13 株式会社日立製作所 データ量削減機能に関する課金額を算出する方法及び管理システム
US9710178B2 (en) * 2015-04-10 2017-07-18 International Business Machines Corporation Optimizing volume placement based upon desired response time and priority
US10216744B2 (en) * 2015-05-01 2019-02-26 Microsoft Technology Licensing, Llc Data migration to a cloud computing system
US10938655B2 (en) * 2016-01-26 2021-03-02 International Business Machines Corporation Enterprise cloud garbage collector
CN107181774B (zh) * 2016-03-09 2020-11-20 伊姆西Ip控股有限责任公司 分布式数据中心之间的数据移动
US10455007B2 (en) * 2016-07-14 2019-10-22 International Business Machines Corporation Managing asset placement with respect to a distributed computing environment having a set of hosts
US10353736B2 (en) 2016-08-29 2019-07-16 TidalScale, Inc. Associating working sets and threads
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US20180321981A1 (en) * 2017-05-04 2018-11-08 Huawei Technologies Co., Ltd. System and method for self organizing data center
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN108228326A (zh) * 2017-12-29 2018-06-29 深圳乐信软件技术有限公司 批量任务处理方法和分布式系统
US20190306236A1 (en) * 2018-03-29 2019-10-03 Servicenow, Inc. Insight for cloud migration and optimization
US11567664B2 (en) 2018-04-16 2023-01-31 International Business Machines Corporation Distributing data across a mixed data storage center
US10768835B1 (en) * 2018-06-27 2020-09-08 Amazon Technologies, Inc. Opportunistic storage service
US11121981B1 (en) * 2018-06-29 2021-09-14 Amazon Technologies, Inc. Optimistically granting permission to host computing resources
CN109120678B (zh) * 2018-07-26 2021-05-14 北京百度网讯科技有限公司 用于分布式存储系统的服务托管的方法和装置
CN109325016B (zh) * 2018-09-12 2021-04-20 杭州朗和科技有限公司 数据迁移方法、装置、介质及电子设备
JP6842447B2 (ja) 2018-09-12 2021-03-17 株式会社日立製作所 リソース割当ての最適化を支援するシステム及び方法
US11113119B2 (en) 2018-09-17 2021-09-07 International Business Machines Corporation Managing computer resources
US11188368B2 (en) 2018-10-31 2021-11-30 Nutanix, Inc. Asynchronous workload migration control
US11194620B2 (en) 2018-10-31 2021-12-07 Nutanix, Inc. Virtual machine migration task management
CN113678415B (zh) * 2019-02-27 2024-06-07 新加坡电信有限公司 用于优化数据通信的系统
US10949241B2 (en) * 2019-03-08 2021-03-16 Google Llc Cost-efficient high-availability multi-single-tenant services
KR102427473B1 (ko) * 2020-09-29 2022-08-01 한국전자기술연구원 마이크로 데이터센터내 가용 자원상태 기반 워크로드 예측 정확도 증가 방법
US11375006B1 (en) 2020-12-28 2022-06-28 Pensando Systems, Inc. Methods and systems for rating workloads based on network interface device resources and for optimal scheduling
US11586466B2 (en) * 2021-01-20 2023-02-21 EMC IP Holding Company LLC Centralized high-availability flows execution framework
US11894985B1 (en) * 2022-12-20 2024-02-06 Starbucks Corporation Optimizing locations of physical objects in a network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452819B1 (en) * 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
US20130151683A1 (en) 2011-12-13 2013-06-13 Microsoft Corporation Load balancing in cluster storage systems
JP5363646B2 (ja) 2009-04-08 2013-12-11 マイクロソフト コーポレーション 最適化仮想マシンマイグレーション機構
WO2014073024A1 (en) * 2012-11-09 2014-05-15 Hitachi, Ltd. Management computer, computer system, and instance management method

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784883A (ja) 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
US6463509B1 (en) 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US6922724B1 (en) 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
JP2001337790A (ja) * 2000-05-24 2001-12-07 Hitachi Ltd 記憶システム及びその階層管理制御方法
US7032119B2 (en) 2000-09-27 2006-04-18 Amphus, Inc. Dynamic power and workload management for multi-server system
CA2322601A1 (en) 2000-10-06 2002-04-06 Ibm Canada Limited-Ibm Canada Limitee System and method for generating a filtered product list from a master product list in a contract
US7958199B2 (en) 2001-11-02 2011-06-07 Oracle America, Inc. Switching systems and methods for storage management in digital networks
US7392390B2 (en) 2001-12-12 2008-06-24 Valve Corporation Method and system for binding kerberos-style authenticators to single clients
US7146522B1 (en) 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
CA2380762A1 (en) 2002-04-04 2003-10-04 Intrinsyc Software, Inc. Internet-enabled device provisioning, upgrade and recovery mechanism
US7072815B1 (en) 2002-08-06 2006-07-04 Xilinx, Inc. Relocation of components for post-placement optimization
US6760899B1 (en) 2002-08-08 2004-07-06 Xilinx, Inc. Dedicated resource placement enhancement
CN1182465C (zh) * 2002-12-04 2004-12-29 联想(北京)有限公司 动态迁移数据的方法及其装置
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
JP4257834B2 (ja) 2003-05-06 2009-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 磁気ディスク装置、ファイル管理システム及びその方法
US7302536B2 (en) 2003-06-17 2007-11-27 Hitachi, Ltd. Method and apparatus for managing replication volumes
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
JP4418286B2 (ja) * 2003-07-14 2010-02-17 富士通株式会社 分散型ストレージシステム
US7426570B2 (en) 2003-07-25 2008-09-16 Hewlett-Packard Development Company, L.P. Determining placement of distributed application onto distributed resource infrastructure
US7277960B2 (en) 2003-07-25 2007-10-02 Hewlett-Packard Development Company, L.P. Incorporating constraints and preferences for determining placement of distributed application onto distributed resource infrastructure
CN101566931B (zh) 2003-08-14 2011-05-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US8825591B1 (en) 2003-12-31 2014-09-02 Symantec Operating Corporation Dynamic storage mechanism
US7328265B2 (en) 2004-03-31 2008-02-05 International Business Machines Corporation Method and system to aggregate evaluation of at least one metric across a plurality of resources
US7209967B2 (en) 2004-06-01 2007-04-24 Hitachi, Ltd. Dynamic load balancing of a storage system
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US20070083482A1 (en) * 2005-10-08 2007-04-12 Unmesh Rathi Multiple quality of service file system
US20110010518A1 (en) * 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US7711711B1 (en) 2006-03-29 2010-05-04 Emc Corporation Networked storage system employing information lifecycle management in conjunction with a distributed global file system
US7653832B2 (en) 2006-05-08 2010-01-26 Emc Corporation Storage array virtualization using a storage block mapping protocol client and server
JP4749255B2 (ja) 2006-07-03 2011-08-17 株式会社日立製作所 複数種類の記憶デバイスを備えたストレージシステムの制御装置
US20080052026A1 (en) 2006-08-23 2008-02-28 Qurio Holdings, Inc. Configuring a content capture device for one or more service providers
US8738749B2 (en) 2006-08-29 2014-05-27 Digimarc Corporation Content monitoring and host compliance evaluation
US8046767B2 (en) 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
US20080291204A1 (en) 2007-05-22 2008-11-27 International Business Machines Corporation Coupled placement of items using stable marriage techniques
US7827286B1 (en) * 2007-06-15 2010-11-02 Amazon Technologies, Inc. Providing enhanced access to stored data
JP5238235B2 (ja) 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
US8230069B2 (en) 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
JP5642338B2 (ja) 2008-03-10 2014-12-17 富士通株式会社 ジョブ管理プログラムおよびジョブ管理方法
US8336094B2 (en) 2008-03-27 2012-12-18 Juniper Networks, Inc. Hierarchical firewalls
WO2009126154A1 (en) * 2008-04-10 2009-10-15 Hewlett-Packard Development Company, L.P. Virtual machine migration according to environmental data
KR20110031441A (ko) 2008-06-06 2011-03-28 피봇3 분산 raid 구현을 위한 방법 및 시스템
KR101180763B1 (ko) 2008-08-04 2012-09-07 후지쯔 가부시끼가이샤 멀티프로세서 시스템, 멀티프로세서 시스템용 관리 장치 및 멀티프로세서 시스템용 관리 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US8019732B2 (en) 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US8015343B2 (en) * 2008-08-08 2011-09-06 Amazon Technologies, Inc. Providing executing programs with reliable access to non-local block data storage
US8725967B2 (en) 2008-08-08 2014-05-13 Amazon Technologies, Inc. Providing executing programs with access to stored block data of others
US8285687B2 (en) 2008-08-27 2012-10-09 Netapp, Inc. System and method for file system level compression using compression group descriptors
US8365183B2 (en) 2008-09-02 2013-01-29 Ca, Inc. System and method for dynamic resource provisioning for job placement
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
WO2010033497A1 (en) 2008-09-18 2010-03-25 Marvell World Trade Ltd. Preloading applications onto memory at least partially during boot up
JP5234342B2 (ja) 2008-09-22 2013-07-10 株式会社日立製作所 計算機システム及びその制御方法
US7984151B1 (en) 2008-10-09 2011-07-19 Google Inc. Determining placement of user data to optimize resource utilization for distributed systems
US7996719B2 (en) 2008-10-24 2011-08-09 Microsoft Corporation Expressing fault correlation constraints
US8190832B2 (en) 2009-01-29 2012-05-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
US8321862B2 (en) 2009-03-20 2012-11-27 Oracle America, Inc. System for migrating a virtual machine and resource usage data to a chosen target host based on a migration policy
US8930539B1 (en) * 2009-03-26 2015-01-06 Symantec Corporation Method and apparatus for optimizing resource utilization within a cluster and facilitating high availability for an application
JP5781925B2 (ja) 2009-04-23 2015-09-24 株式会社日立製作所 計算機システム及びその制御方法
US8190811B2 (en) 2009-06-09 2012-05-29 Seagate Technology, Llc Defragmentation of solid state memory
US8489744B2 (en) * 2009-06-29 2013-07-16 Red Hat Israel, Ltd. Selecting a host from a host cluster for live migration of a virtual machine
US8407190B2 (en) * 2009-06-30 2013-03-26 Commvault Systems, Inc. Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer
US8140812B2 (en) 2009-07-01 2012-03-20 International Business Machines Corporation Method and apparatus for two-phase storage-aware placement of virtual machines
US8234377B2 (en) * 2009-07-22 2012-07-31 Amazon Technologies, Inc. Dynamically migrating computer networks
US8914598B2 (en) * 2009-09-24 2014-12-16 Vmware, Inc. Distributed storage resource scheduler and load balancer
US20110078303A1 (en) * 2009-09-30 2011-03-31 Alcatel-Lucent Usa Inc. Dynamic load balancing and scaling of allocated cloud resources in an enterprise network
US8307362B1 (en) * 2009-12-18 2012-11-06 Emc Corporation Resource allocation in a virtualized environment
US8402140B2 (en) 2010-01-13 2013-03-19 Nec Laboratories America, Inc. Methods and apparatus for coordinated energy management in virtualized data centers
US9342801B2 (en) * 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US9197514B2 (en) 2010-03-31 2015-11-24 Paypal, Inc. Service level agreement based storage access
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US8504689B2 (en) 2010-05-28 2013-08-06 Red Hat, Inc. Methods and systems for cloud deployment analysis featuring relative cloud resource importance
US8479211B1 (en) * 2010-06-29 2013-07-02 Amazon Technologies, Inc. Dynamic resource commitment management
US8539197B1 (en) * 2010-06-29 2013-09-17 Amazon Technologies, Inc. Load rebalancing for shared resource
US8812653B2 (en) * 2010-08-05 2014-08-19 Novell, Inc. Autonomous intelligent workload management
US8826292B2 (en) * 2010-08-06 2014-09-02 Red Hat Israel, Ltd. Migrating virtual machines based on level of resource sharing and expected load per resource on candidate target host machines
US8583867B1 (en) 2010-09-08 2013-11-12 Netapp, Inc. Non-disruptive data migration between processing systems that do not share storage
US8612330B1 (en) * 2010-09-14 2013-12-17 Amazon Technologies, Inc. Managing bandwidth for shared resources
US8533103B1 (en) * 2010-09-14 2013-09-10 Amazon Technologies, Inc. Maintaining latency guarantees for shared resources
US8484353B1 (en) 2010-09-28 2013-07-09 Amazon Technologies, Inc. Resource placement templates for virtual networks
US9304867B2 (en) 2010-09-28 2016-04-05 Amazon Technologies, Inc. System and method for providing flexible storage and retrieval of snapshot archives
US10013662B2 (en) * 2010-09-30 2018-07-03 Amazon Technologies, Inc. Virtual resource cost tracking with dedicated implementation resources
US8645529B2 (en) * 2010-10-06 2014-02-04 Infosys Limited Automated service level management of applications in cloud computing environment
US8589538B2 (en) * 2010-10-22 2013-11-19 International Business Machines Corporation Storage workload balancing
US8924539B2 (en) * 2010-11-24 2014-12-30 Red Hat, Inc. Combinatorial optimization of multiple resources across a set of cloud-based networks
US9329886B2 (en) * 2010-12-10 2016-05-03 Amazon Technologies, Inc. Virtual machine morphing for heterogeneous migration environments
US8615579B1 (en) * 2010-12-28 2013-12-24 Amazon Technologies, Inc. Managing virtual machine migration
WO2012105980A1 (en) 2011-02-03 2012-08-09 Empire Technology Development Llc Improving reliability in distributed environments
US8738972B1 (en) 2011-02-04 2014-05-27 Dell Software Inc. Systems and methods for real-time monitoring of virtualized environments
US9223616B2 (en) * 2011-02-28 2015-12-29 Red Hat Israel, Ltd. Virtual machine resource reduction for live migration optimization
US8832219B2 (en) * 2011-03-01 2014-09-09 Red Hat, Inc. Generating optimized resource consumption periods for multiple users on combined basis
US8949688B2 (en) 2011-04-01 2015-02-03 Cleversafe, Inc. Updating error recovery information in a dispersed storage network
JP5691062B2 (ja) * 2011-04-04 2015-04-01 株式会社日立製作所 仮想計算機の制御方法及び管理計算機
KR101544485B1 (ko) * 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치
US9021475B2 (en) 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
US8806015B2 (en) 2011-05-04 2014-08-12 International Business Machines Corporation Workload-aware placement in private heterogeneous clouds
US8719627B2 (en) * 2011-05-20 2014-05-06 Microsoft Corporation Cross-cloud computing for capacity management and disaster recovery
US8706869B2 (en) 2011-06-14 2014-04-22 International Business Machines Corporation Distributed cloud placement software
US8615589B1 (en) * 2011-06-27 2013-12-24 Amazon Technologies, Inc. Resource optimization recommendations
WO2013001392A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Managing organizational computing resources in accordance with computing environment entitlement contracts
CN103649910A (zh) * 2011-07-11 2014-03-19 惠普发展公司,有限责任合伙企业 虚拟机放置
WO2013019185A1 (en) * 2011-07-29 2013-02-07 Hewlett-Packard Development Company, L.P. Migrating virtual machines
US9229777B2 (en) * 2011-08-08 2016-01-05 International Business Machines Corporation Dynamically relocating workloads in a networked computing environment
US8949431B2 (en) * 2011-08-24 2015-02-03 Radware, Ltd. Method for live migration of virtual machines
US8661448B2 (en) * 2011-08-26 2014-02-25 International Business Machines Corporation Logical partition load manager and balancer
US9026837B2 (en) 2011-09-09 2015-05-05 Microsoft Technology Licensing, Llc Resource aware placement of applications in clusters
EP2744186B1 (en) * 2011-09-14 2016-05-25 Nec Corporation Resource optimization method, ip network system and resource optimization program
US9009317B2 (en) * 2011-10-10 2015-04-14 Verizon Patent And Licensing Inc. System for and method of managing network resources
US8782242B2 (en) 2011-10-13 2014-07-15 Vmware, Inc. Software application placement using computing resource containers
US8914515B2 (en) * 2011-10-28 2014-12-16 International Business Machines Corporation Cloud optimization using workload analysis
US8898505B2 (en) * 2011-12-01 2014-11-25 International Business Machines Corporation Dynamically configureable placement engine
KR101343617B1 (ko) * 2011-12-28 2013-12-20 대전대학교 산학협력단 클라우드 환경에서 서비스품질 보장을 위한 서비스수준협약 관리방법
JP5596716B2 (ja) 2012-01-24 2014-09-24 日本電信電話株式会社 リソース管理装置、リソース管理システム、リソース管理方法およびリソース管理プログラム
US8788658B2 (en) * 2012-02-03 2014-07-22 International Business Machines Corporation Allocation and balancing of storage resources
CN103365781B (zh) * 2012-03-29 2016-05-04 国际商业机器公司 用于动态地重新配置存储系统的方法和设备
CN104303168B (zh) * 2012-04-25 2016-12-07 英派尔科技开发有限公司 用于灵活资源需求应用的认证
US9619292B2 (en) 2012-04-30 2017-04-11 Alcatel Lucent Resource placement in networked cloud based on resource constraints
WO2013171787A2 (en) * 2012-05-15 2013-11-21 Hitachi, Ltd. File storage system and load distribution method
CN102821158B (zh) * 2012-08-20 2015-09-30 广州杰赛科技股份有限公司 一种实现虚拟机迁移的方法和云系统
US8856386B2 (en) 2012-08-21 2014-10-07 Cisco Technology, Inc. Cloud resource placement using placement pivot in physical topology
US8745261B1 (en) * 2012-10-02 2014-06-03 Nextbit Systems Inc. Optimized video streaming using cloud computing platform
US9317223B2 (en) * 2012-12-17 2016-04-19 International Business Machines Corporation Method and apparatus for automated migration of data among storage centers
US20140250440A1 (en) * 2013-03-01 2014-09-04 Adaptive Computing Enterprises, Inc. System and method for managing storage input/output for a compute environment
WO2014192132A1 (ja) * 2013-05-31 2014-12-04 株式会社日立製作所 負荷分散装置及び方法
US9185960B2 (en) 2013-11-08 2015-11-17 Julep Beauty, Inc. Stylus for cosmetics, nail polish applicator and systems and kits based thereon
US9396009B2 (en) 2014-01-30 2016-07-19 International Business Machines Corporation Optimized global capacity management in a virtualized computing environment
US9582303B2 (en) 2014-03-03 2017-02-28 Vmware, Inc. Extending placement constraints for virtual machine placement, load balancing migrations, and failover without coding
WO2015186248A1 (ja) * 2014-06-06 2015-12-10 株式会社日立製作所 ストレージシステム、計算機システム及びデータ移行方法
US9477743B2 (en) * 2014-07-02 2016-10-25 Oracle International Corporation System and method for load balancing in a distributed system by dynamic migration
US9526012B2 (en) 2014-07-03 2016-12-20 Alcatel Lucent Efficient evaluation of hotspots for metrocell deployment
US9395967B2 (en) 2014-11-03 2016-07-19 International Business Machines Corporation Workload deployment density management for a multi-stage computing architecture implemented within a multi-tenant computing environment
US10162656B2 (en) * 2014-11-26 2018-12-25 Vmware, Inc. Minimizing guest operating system licensing costs in a processor based licensing model in a virtual datacenter
US9886296B2 (en) 2014-12-01 2018-02-06 International Business Machines Corporation Managing hypervisor weights in a virtual environment
JP6356599B2 (ja) * 2014-12-26 2018-07-11 株式会社日立製作所 監視支援システム、監視支援方法、および監視支援プログラム
US9870244B2 (en) * 2014-12-29 2018-01-16 International Business Machines Corporation Optimized migration of virtual objects across environments in a cloud computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5363646B2 (ja) 2009-04-08 2013-12-11 マイクロソフト コーポレーション 最適化仮想マシンマイグレーション機構
US8452819B1 (en) * 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
US20130151683A1 (en) 2011-12-13 2013-06-13 Microsoft Corporation Load balancing in cluster storage systems
WO2014073024A1 (en) * 2012-11-09 2014-05-15 Hitachi, Ltd. Management computer, computer system, and instance management method

Also Published As

Publication number Publication date
AU2019202695A1 (en) 2019-05-09
CA2978889C (en) 2021-01-26
EP3268860A1 (en) 2018-01-17
WO2016145091A1 (en) 2016-09-15
CN107430528A (zh) 2017-12-01
CN107430528B (zh) 2021-06-04
JP2018514018A (ja) 2018-05-31
US10715460B2 (en) 2020-07-14
CA2978889A1 (en) 2016-09-15
JP2020064676A (ja) 2020-04-23
US20160269313A1 (en) 2016-09-15
SG11201707091TA (en) 2017-09-28
AU2016229135A1 (en) 2017-09-21
JP7138126B2 (ja) 2022-09-15
KR20170110708A (ko) 2017-10-11

Similar Documents

Publication Publication Date Title
KR102031471B1 (ko) 자원 배치 최적화를 위한 기회적 자원 이주
AU2019213340B2 (en) Dynamic configuration of data volumes
JP6437007B2 (ja) ブロックベースのストレージにおけるページキャッシュ書き込みロギング
US9405483B1 (en) Optimized write performance at block-based storage during volume snapshot operations
EP3117331B1 (en) Dynamically modifying durability properties for individual data volumes
US10057187B1 (en) Dynamic resource creation to connect client resources in a distributed system
US10616134B1 (en) Prioritizing resource hosts for resource placement
US10154091B1 (en) Deploying infrastructure units according to resource hosting constraints
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10776173B1 (en) Local placement of resource instances in a distributed system
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources
US10594620B1 (en) Bit vector analysis for resource placement in a distributed system
US11336519B1 (en) Evaluating placement configurations for distributed resource placement
US11080092B1 (en) Correlated volume placement in a distributed block storage service
US11121981B1 (en) Optimistically granting permission to host computing resources
US10721181B1 (en) Network locality-based throttling for automated resource migration
US11381468B1 (en) Identifying correlated resource behaviors for resource allocation
US11048554B1 (en) Correlated volume placement in a distributed block storage service

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right