KR20160097372A - 데이터 센터들에서의 효율적인 자원 이용 - Google Patents

데이터 센터들에서의 효율적인 자원 이용 Download PDF

Info

Publication number
KR20160097372A
KR20160097372A KR1020167020811A KR20167020811A KR20160097372A KR 20160097372 A KR20160097372 A KR 20160097372A KR 1020167020811 A KR1020167020811 A KR 1020167020811A KR 20167020811 A KR20167020811 A KR 20167020811A KR 20160097372 A KR20160097372 A KR 20160097372A
Authority
KR
South Korea
Prior art keywords
resources
amount
available
quota
tasks
Prior art date
Application number
KR1020167020811A
Other languages
English (en)
Other versions
KR101719116B1 (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 KR20160097372A publication Critical patent/KR20160097372A/ko
Application granted granted Critical
Publication of KR101719116B1 publication Critical patent/KR101719116B1/ko

Links

Images

Classifications

    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • 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]
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

방법(600)은, 분산형 시스템(100)의 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량을 요구하는 고가용도 작업들(122, 122a) 및 저가용도 작업들(122, 122b)을 식별하는 단계를 포함한다. 이 방법은, 저가용도 작업들에 이용가능한 자원들의 제1 할당량(Q1)을 정상 동작들 동안에 이용가능한 자원들의 양으로서 결정하는 단계, 및 고가용도 작업들에 이용가능한 자원들의 제2 할당량(Q2)을, 정상 동작들 동안에 이용가능한 자원들의 양에서, 용인된 이벤트로 인해 손실된 자원들의 양을 뺀 것으로서 결정하는 단계를 포함한다. 이 방법은 분산형 시스템 상에서 작업들을 실행하는 단계, 및 고가용도 작업들 및 저가용도 작업들 양쪽 모두에 의한 자원들의 전체 이용량을 정상 동작들 동안에 이용가능한 자원들의 양으로 제약하는 단계를 포함한다.

Description

데이터 센터들에서의 효율적인 자원 이용{EFFICIENT RESOURCE UTILIZATION IN DATA CENTERS}
본 개시내용은 시스템 고장 시의 데이터 센터들에서의 효율적인 자원 이용에 관한 것이다.
분산형 시스템은 일반적으로 많은 소결합된(loosely coupled) 컴퓨터들을 포함하며, 이들 각각은 통상적으로 컴퓨팅 자원(예를 들어, 하나 이상의 프로세서) 및/또는 스토리지 자원(예를 들어, 메모리, 플래시 메모리, 및/또는 디스크)을 포함한다. 분산형 스토리지 시스템은 분산형 시스템의 스토리지 자원 상에 스토리지 추상화(storage abstraction)(예를 들어, 키/값 저장소 또는 파일 시스템)를 오버레이한다. 분산형 스토리지 시스템에서, 하나의 컴퓨터 상에서 실행 중인 서버 프로세스는 그 컴퓨터의 자원을 다른 컴퓨터 상에서 실행 중인 클라이언트 프로세스에 엑스포트(export)할 수 있다. 원격 프로시저 호출(remote procedure calls)(RPC)은 서버 프로세스로부터 클라이언트 프로세스로 데이터를 전송할 수 있다. 대안으로서, 원격 직접 메모리 액세스(Remote Direct Memory Access)(RDMA) 프리미티브들은 서버 하드웨어로부터 클라이언트 프로세스들로 데이터를 전송하는데 이용될 수 있다.
본 개시내용의 한 양태는 데이터 센터에서 자원(예를 들어, 프로세서 및/또는 메모리 디바이스)을 효율적으로 이용하기 위한 방법을 제공한다. 이 방법은, 분산형 시스템의 자원의 이용량을 요구하는 고가용도 작업(high-availability job)과 저가용도 작업(low-availability job)을 식별하는 단계, 및 저가용도 작업에 이용가능한 자원의 제1 할당량을 정상 동작 동안에 이용가능한 자원의 양으로서 결정하는 단계를 포함한다. 이 방법은 선택사항으로서 고가용도 작업에 이용가능한 자원의 제2 할당량을, 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트(tolerated event)로 인해 손실된 자원의 양을 뺀 것으로서 결정하는 단계를 포함한다. 이 방법은 분산형 시스템의 자원 상에서 작업을 실행하는 단계, 및 고가용도 작업과 저가용도 작업 양쪽 모두에 의한 자원의 전체 이용량을 정상 동작 동안에 이용가능한 자원의 양으로 제약하는 단계를 포함할 수 있다.
본 개시내용의 구현은 다음과 같은 선택사항적 피쳐들 중 하나 이상을 포함할 수 있다. 일부 구현에서, 자원은 데이터 처리 디바이스, 네트워킹 시스템, 전력 시스템, 또는 쿨링 시스템을 포함한다. 이들 유형의 자원의 경우, 이 방법은, 용인된 이벤트로 인해 손실된 자원에 할당된 작업을 나머지 자원에 이전하거나 재실행하는 단계를 포함할 수 있다.
일부 구현에서, 자원은 (스토리지 자원이라고도 하는) 비일시적인 메모리 디바이스를 포함한다. 이러한 유형의 자원의 경우, 이 방법은, 손실된 자원에 할당된 작업을 나머지 자원에 재할당하지 않고 이 작업을 방치(leaving)하는 단계 및 손실된 자원과 연관된 임의의 이용가능하지 않은 데이터를 재구성(reconstructing)하는 단계를 포함할 수 있다. 스토리지 자원은 2가지의 이용량 유형을 가진다: 바이트 이용량/스토리지 용량; 및 (하드 디스크 스토리지에 허용된 초당 입력/출력 동작 수 또는 이러한 스토리지에 대해 허용된 스핀들 이용량/액세스 양 등의) 액세스 대역폭. 스토리지 자원으로의 작업의 할당은 그 이용 유형에 의존할 수 있다. 일부 예에서, 보통의 바이트 이용량/스토리지 용량의 100%까지가 고가용도 작업에 할당될 수 있는 반면, 보통의 대역폭(스핀들 이용량)의 일부가 고가용도 작업에 할당될 수 있다.
이 방법은, 고가용도 작업에 이용가능한 자원의 제2 할당량을, 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트로 인해 손실된 자원의 양을 빼고, 용인된 이벤트로 인해 필요한 나머지 자원의 증가된 양을 뺀 것으로서 결정하는 단계를 포함할 수 있다. 추가로 또는 대안으로서, 이 방법은 제1 할당량과 제2 할당량의 합을 최대 할당량으로 제한하는 단계를 포함할 수 있다.
일부 구현에서, 이 방법은 고가용도 작업에 의한 자원의 이용량을 모니터링하는 단계를 포함한다. 고가용도 작업이 임계 이용량을 초과하면, 이 방법은 고가용도 작업을 저가용도 작업으로 다운그레이드(downgrading)하는 단계를 포함한다. 이 방법은, 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업에 이용가능한 자원의 제1 할당량을 저하시키고 용인된 이벤트 이전의 상기 소정 시간 기간 동안 고가용도 작업에 이용가능한 자원의 제2 할당량을 증가시키는 단계를 포함할 수 있다. 추가로 또는 대안으로서, 이 방법은 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업들 중 적어도 일부를 보류 또는 종료하는 단계를 포함할 수 있다.
일부 예에서, 이 방법은 용인된 이벤트로 인해 손실된 자원의 양을 특정 자원으로의 작업의 할당과 분산형 시스템의 시스템 계층(system hierarchy)에 기초하여 결정하는 단계를 포함한다. 시스템 계층은 시스템 도메인(system domain)을 포함한다. 각각의 시스템 도메인은 활성 상태 또는 비활성 상태를 가진다. 시스템 계층은, 제1, 제2, 제3, 및 제4 시스템 레벨 등의, 시스템 레벨들을 포함할 수 있다. 제1 시스템 레벨은, 데이터 처리 디바이스, 비일시적인 메모리 디바이스, 또는 네트워크 인터페이스 제어기의 호스트 머신에 대응한다. 각각의 호스트 머신은 시스템 도메인을 가진다. 제2 시스템 레벨은, 호스트 머신을 하우징하는 랙의 전력 전달기, 통신 전달기, 또는 쿨링 전달기에 대응한다. 랙의 각각의 전력 전달기, 통신 전달기, 또는 쿨링 전달기는 시스템 도메인을 가진다. 제3 시스템 레벨은, 시스템 도메인을 갖는 셀의 전력 전달기, 통신 전달기, 또는 쿨링 전달기에 대응한다. 셀의 각각의 전력 전달기, 통신 전달기, 또는 쿨링 전달기는 시스템 도메인을 가진다. 제4 시스템 레벨은 셀들의 분배 센터 모듈(distribution center module)에 대응하고, 각각의 분배 센터 모듈은 시스템 도메인을 가진다.
본 개시내용의 다른 양태는 분산형 시스템의 자원을 효율적으로 이용하기 위한 시스템을 제공한다. 이 시스템은 분산형 시스템의 자원 및 이 자원과 통신하는 컴퓨터 프로세서를 포함한다. 컴퓨터 프로세서는, 자원의 이용량을 요구하는 고가용도 작업과 저가용도 작업을 식별하고 저가용도 작업에 이용가능한 자원의 제1 할당량을 정상 동작 동안에 이용가능한 자원의 양으로서 결정한다. 컴퓨터 프로세서는 선택사항으로서 고가용도 작업에 이용가능한 자원의 제2 할당량을, 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트로 인해 손실된 자원의 양을 뺀 것으로서 결정한다. 프로세서는 분산형 시스템 상에서 작업을 실행하고 고가용도 작업과 저가용도 작업 양쪽 모두에 의한 자원의 전체 이용량을 정상 동작 동안에 이용가능한 자원의 양으로 제약한다.
이 양태는 다음과 같은 선택사항적 피쳐들 중 하나 이상을 포함할 수 있다. 일부 구현에서, 시스템 자원은 데이터 처리 디바이스, 네트워킹 시스템, 전력 시스템, 또는 쿨링 시스템을 포함한다. 이들 유형의 자원의 경우, 컴퓨터 프로세서는, 용인된 이벤트로 인해 손실된 자원에 할당된 작업을 나머지 자원에 이전하거나 재실행할 수 있다.
일부 구현에서, 시스템 자원은 비일시적인 메모리 디바이스를 포함한다. 이러한 유형의 자원의 경우, 컴퓨터 프로세서는, 손실된 자원에 할당된 작업을 나머지 자원에 재할당하지 않고 이 작업을 방치하고 손실된 자원과 연관된 임의의 이용가능하지 않은 데이터를 재구성할 수 있다.
컴퓨터 프로세서는, 고가용도 작업에 이용가능한 자원의 제2 할당량을 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트로 인해 손실된 자원의 양을 빼고, 용인된 이벤트로 인해 필요한 나머지 자원의 증가된 양을 뺀 것으로서 결정할 수 있다. 추가로 또는 대안으로서, 컴퓨터 프로세서는 제1 할당량과 제2 할당량의 합을 최대 할당량으로 제한할 수 있다.
일부 구현에서, 컴퓨터 프로세서는 고가용도 작업에 의한 자원의 이용량을 모니터링한다. 고가용도 작업이 임계 이용량을 초과하면, 컴퓨터 프로세서는 고가용도 작업을 저가용도 작업으로 다운그레이드한다. 컴퓨터 프로세서는 또한, 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업에 이용가능한 자원의 제1 할당량을 저하시키고 용인된 이벤트 이전의 상기 소정 시간 기간 동안 고가용도 작업에 이용가능한 자원의 제2 할당량을 증가시킬 수 있다. 추가로 또는 대안으로서, 컴퓨터 프로세서는 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업들 중 적어도 일부를 보류 또는 종료할 수 있다.
일부 예에서, 컴퓨터 프로세서는 용인된 이벤트로 인해 손실된 자원의 양을 특정 자원으로의 작업의 할당과 분산형 시스템의 시스템 계층에 기초하여 결정한다. 시스템 계층은 시스템 도메인을 포함한다. 각각의 시스템 도메인은 활성 상태 또는 비활성 상태를 가진다. 시스템 계층은, 제1, 제2, 제3, 및 제4 시스템 레벨 등의, 시스템 레벨들을 포함할 수 있다. 제1 시스템 레벨은, 데이터 처리 디바이스, 비일시적인 메모리 디바이스, 또는 네트워크 인터페이스 제어기의 호스트 머신에 대응한다. 각각의 호스트 머신은 시스템 도메인을 가진다. 제2 시스템 레벨은, 호스트 머신을 하우징하는 랙의 전력 전달기, 통신 전달기, 또는 쿨링 전달기에 대응한다. 랙의 각각의 전력 전달기, 통신 전달기, 또는 쿨링 전달기는 시스템 도메인을 가진다. 제3 시스템 레벨은, 연관된 랙을 갖는 셀의 전력 전달기, 통신 전달기, 또는 쿨링 전달기에 대응한다. 셀의 각각의 전력 전달기, 통신 전달기, 또는 쿨링 전달기는 시스템 도메인을 가진다. 제4 시스템 레벨은 셀들의 분배 센터 모듈에 대응하고, 각각의 분배 센터 모듈은 시스템 도메인을 가진다.
본 개시내용의 다른 양태는, 분산형 시스템의 자원의 이용량을 요구하는 고가용도 작업과 저가용도 작업을 식별하는 단계, 저가용도 작업에 이용가능한 자원의 제1 할당량을 정상 동작 동안에 이용가능한 자원의 양으로서 결정하는 단계, 및 고가용도 작업에 이용가능한 자원의 제2 할당량을 자원 유형에 기초하여 결정하는 단계를 포함하는 방법을 제공한다. 스토리지 용량 자원의 경우, 고가용도 작업에 이용가능한 자원의 제2 할당량은 정상 동작 동안에 이용가능한 자원의 양이다. 스토리지 대역폭 자원의 경우, 고가용도 작업에 이용가능한 자원의 제2 할당량은, 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트로 인해 손실된 자원의 양을 빼고, 용인된 이벤트로 인해 필요한 나머지 자원의 증가된 양을 뺀 것이다. 다른 (즉, 비-스토리지(non-storage)) 자원의 경우, 고가용도 작업에 이용가능한 자원의 제2 할당량은, 정상 동작 동안에 이용가능한 자원의 양에서, 용인된 이벤트로 인해 손실된 자원의 양을 뺀 것이다. 이 방법은 분산형 시스템의 자원 상에서 작업을 실행하는 단계 및 고가용도 작업과 저가용도 작업 양쪽 모두에 의한 자원의 전체 이용량을 정상 동작 동안에 이용가능한 자원의 양으로 제약하는 단계를 더 포함한다.
본 개시내용의 하나 이상의 구현의 상세사항은 첨부된 도면과 이하의 상세한 설명에 개시되어 있다. 다른 양태들, 피쳐들, 및 이점들은, 상세한 설명, 도면, 및 청구항들로부터 명백할 것이다.
도 1a는 예시적인 분산형 시스템의 개략도이다.
도 1b는 작업 관리 시스템에 의해 관리되는 자원 호스트들의 셀을 갖는 예시적인 분산형 시스템의 개략도이다.
도 2은 분산형 시스템에 대한 예시적인 큐레이터의 개략도이다.
도 3a는 복제된 스트라이프들로 분할되는 예시적인 파일의 개략도이다.
도 3b는 데이터 청크들 및 비-데이터 청크들로 분할되는 예시적인 파일의 개략도이다.
도 4a 및 도 4b는 예시적인 시스템 계층들의 개략도들이다.
도 5는 유지보수 이벤트가 발생할 때 스토리지 자원들 및 데이터 프로세서들을 효율적으로 이용하기 위한 동작들의 예시적인 배열의 플로우차트이다.
도 6은 유지보수/고장 이벤트가 발생할 때 시스템의 자원들을 효율적으로 이용하기 위한 동작들의 예시적인 배열의 개략도이다.
도 7은 유지보수/고장 이벤트가 발생할 때 시스템의 자원을 효율적으로 이용하기 위한 동작들의 예시적인 배열의 개략도이다.
다양한 도면들에서 유사한 참조 심볼들은 유사한 요소들을 지시한다.
도 1a 및 도 1b를 참조하면, 일부 구현에서, 분산형 시스템(100)은 소결합된 자원 호스트들(110, 110a-n)(예를 들어, 컴퓨터 또는 서버)을 포함하고, 각각은 데이터를 캐싱하는데 이용될 수 있는 스토리지 자원(114)(예를 들어, 메모리, 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 상변화 메모리(PCM) 및/또는 디스크)과 통신하는 컴퓨팅 자원(112)(예를 들어, 하나 이상의 프로세서 또는 중앙 처리 유닛(CPU))을 가진다. 스토리지 자원(114) 상에 오버레이된 스토리지 추상화(예를 들어, 키/값 저장소 또는 파일 시스템)는 하나 이상의 클라이언트(120, 120a-n)에 의한 스토리지 자원(114)의 스케일가능한 이용을 허용한다. 클라이언트(120)는 네트워크(130)를 통해(예를 들어, RPC를 통해) 자원 호스트(110)와 통신할 수 있다.
분산형 시스템(100)은 데이터(312)가 복제되고 복수의 데이터 센터들에 저장되는 복수의 중복성 계층들(multiple layers of redundancy)을 포함할 수 있다. 데이터 센터(도시되지 않음)는, 통신 및 분산형 시스템(100) 등의 컴퓨터 시스템과 그 연관된 컴포넌트들을 하우징한다. 데이터 센터는 대개, 백업 전원, 중복 통신 접속, (일정한 온도를 유지하기 위한) 환경 제어, 및 보안 디바이스들을 포함한다. 데이터 센터는, (예를 들어, 작은 도시 정도로) 많은 양의 전기를 이용하는 큰 산업적 규모의 동작일 수 있다. 데이터(312)는 상이한 지리적 위치들(예를 들어, 상이한 도시들, 상이한 국가들, 및 상이한 대륙들)에 놓일 수 있다. 일부 예에서, 데이터 센터, 또는 그 일부는, (예를 들어, 정전, 또는 부품 교체를 위한 시스템의 일부의 접속해제, 시스템 고장, 또는 이들의 조합으로 인해) 유지보수를 요구한다. 이들 데이터 센터, 및 특히 분산형 시스템(100)에 저장된 데이터(312)는 유지보수 기간 동안에 사용자/클라이언트(120)에게 이용가능하지 않아 사용자의 동작의 손상 또는 중단을 초래할 수 있다. 따라서, 시스템(100) 또는 그 일부의 유지보수 및/또는 고장 동안에 시스템(100)의 자원 호스트(110), 프로세서(112), 스토리지 자원(114), 및 네트워크 자원을 효율적으로 이용할 수 있는 분산형 시스템(100)을 제공하는 것이 바람직하다.
일부 구현에서, 분산형 시스템(100)은 "단면형(single-sided)"이어서, 클라이언트(120)로부터의 원격 프로시저 호출(RPC)에 응답하기 위한 임의의 서버 작업이 그 대응하는 자원 호스트(110) 상에 데이터(312)를 저장하거나 검색할 필요성을 제거하고 대신에 원격 요청(122)을 처리하기 위한 전문화된 하드웨어에 의존할 수 있다. "단면형"이란, 자원 호스트(110) 상의 대부분의 요청 처리가 자원 호스트(110)의 CPU(112)에서 실행되는 소프트웨어가 아니라 하드웨어로 이루어질 수 있는 방법을 말한다. 자원 호스트(110)(예를 들어, 서버)의 프로세서(112)가, 클라이언트(120)에서 실행 중인 클라이언트 프로세스(128)에 대응하는 스토리지 자원(114)(예를 들어, 비일시적인 메모리)의 액세스를 엑스포트하는 서버 프로세스(118)를 실행하게 하는 것이 아니라, 클라이언트(120)가 자원 호스트(110)의 네트워크 인터페이스 제어기(NIC)(116)를 통해 스토리지 자원(114)에 직접 액세스할 수 있다. 즉, 클라이언트(120)에서 실행 중인 클라이언트 프로세스(128)는, 컴퓨팅 자원(112) 상에서 실행 중인 임의의 서버 프로세스(118)의 루틴의 실행을 요구하지 않고 하나 이상의 스토리지 자원(114)과 직접 인터페이싱할 수 있다. 이러한 단면형 분산형 아키텍쳐는, 클라이언트(120)가 자원 호스트(110)의 컴퓨팅 자원(112)과 인터페이싱하지 않고 스토리지 자원(114)에 액세스할 수 있기 때문에, 비교적 높은 처리량과 낮은 레이턴시를 제공한다. 이것은 전형적인 양면형(two-sided) 분산형 시스템(100)에 수반되는 스토리지(114)와 CPU 사이클에 대한 요건들을 디커플링하는 효과를 가진다. 단면형 분산형 시스템(100)은, 자원 호스트(110) 상에 여분 CPU 사이클이 있는지에 관계없이 원격 스토리지 자원(114)을 이용할 수 있다; 또한, 단면형 동작들은 서버 CPU(112) 자원에 대해 경합하지 않기 때문에, 자원 호스트(110)가 높은 CPU 이용률에서 동작하고 있을 때에도, 단면형 시스템은 매우 예측가능하고 낮은 레이턴시로 캐시 요청(122)을 서빙할 수 있다. 따라서, 단면형 분산형 시스템(100)은, 전통적인 양면형 시스템보다 클러스터 스토리지(114)와 CPU(112) 자원 양쪽 모두의 더 높은 이용률을 허용하면서 예측가능하고 낮은 레이턴시를 제공한다.
일부 구현에서, 분산형 시스템(100)은, 스토리지 로직부(102), 데이터 제어부(104), 및 데이터 스토리지부(106)를 포함한다. 스토리지 로직부(102)는, 예를 들어, RPC 또는 단면형 동작을 통해, 기저 데이터에 액세스하는 것을 책임지는 트랜잭션 애플리케이션 프로그래밍 인터페이스(API)(350)(예를 들어, 단면형 트랜잭션 시스템 클라이언트 라이브러리)를 포함할 수 있다. 데이터 제어부(104)는, 스토리지 자원(114) 할당, 대응하는 네트워크 인터페이스 제어기(116)로의 스토리지 자원(114) 등록, 클라이언트(들)(120)과 자원 호스트(110) 사이의 접속 셋업, 머신 고장의 경우 에러 핸들링 등의 태스크에서, 스토리지 자원(114)으로의 할당과 액세스를 관리할 수 있다. 데이터 스토리지부(106)는 소결합된 자원 호스트들(110, 110a-n)을 포함할 수 있다.
분산형 시스템(100)은 동적 랜덤 액세스 메모리(DRAM)(114)에 데이터(312)를 저장하고 원격 직접 메모리 액세스(RDMA)-가능 네트워크 인터페이스 제어기(116)를 통해 원격 호스트(110)로부터 데이터(312)를 서빙할 수 있다. (네트워크 인터페이스 카드, 네트워크 어댑터, 또는 LAN 어댑터라고도 알려진) 네트워크 인터페이스 제어기(116)는 컴퓨팅 자원(112)을 네트워크(130)에 접속하는 컴퓨터 하드웨어 컴포넌트일 수 있다. 자원 호스트들(110a-n)과 클라이언트(120) 양쪽 모두는 각각이 네트워크 통신을 위한 네트워크 인터페이스 제어기(116)를 가질 수 있다. 자원 호스트(110)의 컴퓨팅 프로세서(112) 상에서 실행 중인 호스트 프로세스(118)는 메모리(114)의 한 세트의 원격 직접 메모리 액세스가능한 영역(115a-n)을 네트워크 인터페이스 제어기(116)에 등록한다. 호스트 프로세스(118)는 메모리(114)의 원격 직접 메모리 액세스가능한 영역(115a-n)을 판독-전용 또는 판독/기록의 허용과 함께 등록한다. 자원 호스트(110)의 네트워크 인터페이스 제어기(116)는 각각의 등록된 메모리 영역(115a-n)에 대한 클라이언트 키(302)를 생성한다.
네트워크 인터페이스 제어기(116)에 의해 수행되는 단면형 동작들은, 간단한 판독, 기입, 및 비교-및-스왑(compare-and-swap) 동작으로 제한될 수 있고, 이들 동작들 중 어느 것도 캐시 요청을 실행하고 캐시 정책을 관리하기 위한 전통적인 캐시 서버 작업에 의해 구현된 소프트웨어 로직에 대한 드롭-인 대체(drop-in replacement)로서 역할하기에 충분히 정교하지 않을 수 있다. 트랜잭션 API(350)는, 데이터 조회 또는 삽입 커맨드 등의 커맨드를 프리미티브 네트워크 인터페이스 제어기 동작들의 시퀀스로 변환한다. 트랜잭션 API(350)는 분산형 시스템(100)의 데이터 제어부 및 데이터 스토리지부(104, 106)와 인터페이싱한다.
분산형 시스템(100)은 네트워크 인터페이스 제어기(116)와의 원격 액세스 및 클라이언트 프로세스(128)와의 접속 셋업을 위한 메모리(114)를 등록하는 공동-위치한 소프트웨어 프로세스를 포함할 수 있다. 일단 접속이 셋업되고 나면, 클라이언트 프로세스(128)는, 대응하는 자원 호스트(110)의 로컬 CPU(112) 상의 소프트웨어로부터의 임의의 관여 없이 네트워크 인터페이스 제어기(116)의 하드웨어 내의 엔진을 통해 등록된 메모리(114)에 액세스할 수 있다.
도 1b를 참조하면, 일부 구현에서, 분산형 시스템(100)은 복수의 셀(200)을 포함하고, 각각의 셀(200)은, 자원 호스트(110), 자원 호스트(110)와 통신하는 큐레이터(210), 및 자원 호스트(110)와 통신하는 작업 관리 시스템(220)을 포함한다. 큐레이터(210)(예를 들어, 프로세스)는 네트워크(130)에 접속된 컴퓨팅 프로세서(202)(예를 들어, 비일시적인 메모리(204)를 갖는 서버) 상에서 실행되어 데이터 스토리지를 관리(예를 들어, 자원 호스트(110) 상에 저장된 파일 시스템을 관리)하고, 데이터 배치를 제어하며, 및/또는 데이터 복구를 개시할 수 있다. 게다가, 큐레이터(210)는 자원 호스트(110) 상의 데이터(312)의 존재 및 스토리지 위치를 추적할 수 있다. 중복 큐레이터(210)들이 가능하다. 일부 구현에서, 큐레이터(들)(210)는, 복수의 자원 호스트(110)에 걸친 데이터(312)의 스트라이핑(striping)과, 중복성 및/또는 성능을 위한 주어진 스트라이프의 복수의 사본의 존재 및/또는 위치를 추적할 수 있다. 컴퓨터 데이터 스토리지에서, 데이터 스트라이핑은, 파일(310)(도 2) 등의, 논리적으로 순차적 데이터(312)를 세그먼트화하되, 상이한 물리적 스토리지 디바이스들(114)(예를 들어, 셀(200) 및/또는 자원 호스트(110))에 대해 순차적 세그먼트들의 액세스가 이루어지는 방식으로 세그먼트화하는 기술이다. 스트라이핑은, 처리 디바이스가, 스토리지 디바이스(114)가 액세스를 제공할 수 있는 것보다 더 신속하게 데이터(312)로의 액세스를 요청할 때 유용하다. 복수의 디바이스들 상에서의 세그먼트 액세스들을 수행함으로써, 복수의 세그먼트들이 동시에 액세스될 수 있다. 이것은 더 많은 데이터 액세스 처리량을 제공하여, 프로세서가 데이터 액세스를 위해 유휴상태로 대기하게 하는 것을 피할 수 있다. 작업 관리 시스템(220)은 작업들(예를 들어, 처리 작업 또는 메모리 작업)을 자원 호스트(110)들에 걸쳐 스케쥴링한다.
일부 구현에서, 트랜잭션 API(350)는 (예를 들어, 클라이언트 프로세스(128)를 갖는) 클라이언트(120)와 큐레이터(210) 사이에서 인터페이싱한다. 일부 예에서, 클라이언트(120)는 하나 이상의 원격 프로시저 호출(RPC)을 통해 큐레이터(210)와 통신한다. 클라이언트 요청(122)에 응답하여, 트랜잭션 API(350)는 자원 호스트(들)(110) 상의 소정 데이터(312)의 스토리지 위치를 발견하고, 데이터(312)로의 액세스를 허용하는 키(302)를 획득할 수 있다. 트랜잭션 API(350)는 (네트워크 인터페이스 제어기(116)를 통해) 적절한 자원 호스트(110)와 직접 통신하여 (예를 들어, 원격 직접 메모리 액세스를 이용하여) 데이터(312)를 판독 또는 기입한다. 자원 호스트(110)가 비동작이거나, 데이터(312)가 상이한 자원 호스트(110)로 이동된 경우에, 클라이언트 요청(122)은 실패하고, 큐레이터(210)에게 재-질의하도록 클라이언트(120)를 프롬프트한다.
도 2를 참조하면, 일부 구현에서, 큐레이터(210)는 파일 시스템 메타데이터(212)를 저장하고 관리한다. 메타데이터(212)는, 파일들(3101-n)을 파일 기술자(file descriptors, 3001-n)에 맵핑하는 파일 맵(214)을 포함할 수 있다. 큐레이터(210)는 그 영구 메타데이터(212)의 표현을 검사 및 수정할 수 있다. 큐레이터(210)는 메타데이터(212)에 대해 3개의 상이한 액세스 패턴을 이용할 수 있다: 판독-전용; 파일 트랜잭션; 및 스트라이프 트랜잭션.
도 3a 및 도 3b를 참조하면, 데이터(312)는 하나 이상의 파일(310)일 수 있고, 여기서, 각각의 파일(310)은 명시된 복제 레벨(311) 및/또는 에러-정정 코드(313)를 가진다. 큐레이터(210)는 각각의 파일(310)을 스트라이프들(320a-n)의 집합으로 분할할 수 있고, 각각의 스트라이프(320a-n)는 나머지 스트라이프들(320a-n)과는 독립적으로 복제되거나 인코딩된다. 복제된 파일(310)(도 3a)의 경우, 각각의 스트라이프(320a-n)는, 큐레이터(210)가 스트라이프 복제물(330n)로서 복제하고 복수의 스토리지 자원(114) 상에 저장하는 단일의 논리적 청크(logical chunk)이다. 이 시나리오에서, 스트라이프 복제물(330n)은 청크(330n)라고도 한다. 인코딩된 파일(310)(도 3b)의 경우, 각각의 스트라이프(320a-n)는, 큐레이터(210)가 복수의 스토리지 자원(114)에 배치하는 복수의 데이터 청크(330nDk)와 비-데이터 청크(330nC)(예를 들어, 코드 청크)로 구성되며, 여기서, 데이터 청크(330nD)와 비-데이터 청크(330nC)의 집합은 단일 코드 워드(code word)를 형성한다. 일반적으로, 큐레이터(210)는, 파일(310) 내의 다른 스트라이프들(320a-n)이 스토리지 자원(114) 상에 어떻게 배치되어 있는지와는 독립적으로, 각각의 스트라이프(320a-n)을 스토리지 자원(114) 상에 배치할 수 있다. 에러-정정 코드(313)는 중복 데이터, 또는 패리티 데이터를 파일(310)에 부가하여, (이용 중인 코드의 능력까지의) 다수의 에러가 유입되었더라도 파일(310)이 나중에 수신자에 의해 복구될 수 있게 한다. 에러-정정 코드(313)는 스토리지 디바이스에서 데이터(312) 무결성을 유지하거나, 성능(레이턴시)을 위해 데이터(312)를 재구성하거나, 머신을 더욱 신속하게 드레인(drain)하는데 이용된다.
도 2를 다시 참조하면, 일부 구현에서, 큐레이터(210)에 의해 저장된 파일 기술자들(3001-n)은, 스트라이프(320a-n)를, 적절하다면, 자원 호스트(110)에 저장된 스트라이프 복제물(330n)에 또는 데이터 청크(330nD) 및 코드 청크(330nC)에 맵핑하는 파일 맵(214) 등의 메타데이터(212)를 포함한다. 파일(310)을 개방하기 위해, 클라이언트(120)는 요청(122)을 큐레이터(210)에게 전송하고, 이 큐레이터는 파일 기술자(300)를 리턴한다. 클라이언트(120)는 파일 기술자(300)를 이용하여 파일 청크 오프셋들을 원격 메모리 위치들(115a-n)로 변환한다. 파일 기술자(300)는 자원 호스트(110) 상의 청크(330n)에 고유하고 그 청크(330n)를 RDMA-판독하는데 이용되는 클라이언트 키(302)(예를 들어, 32-비트 키)를 포함할 수 있다. 클라이언트(120)가 파일 기술자(300)를 로딩한 후에, 클라이언트(120)는 파일(310)의 데이터(312)를 RDMA 또는 다른 데이터 검색 방법을 이용하여 액세스할 수 있다.
큐레이터(210)는 셀(200)의 일부인 모든 자원 호스트(110)에 대한 상태 정보를 유지할 수 있다. 상태 정보는, 용량, 프리 공간, 자원 호스트(110) 상의 부하, 클라이언트 관점에서의 자원 호스트(110)의 레이턴시, 및 현재 상태를 포함할 수 있다. 큐레이터(210)는, 셀(200) 내의 자원 호스트(110)에게 직접 질의함으로써 및/또는 클라이언트(120)에게 질의하여 클라이언트 관점에서의 레이턴시 통계를 수집함으로써 이 정보를 획득할 수 있다. 일부 예에서, 큐레이터(210)는 자원 호스트 상태 정보를 이용하여 재밸런싱, 드레이닝(draining), 복구 결정, 및 할당 결정을 내린다.
큐레이터(들)(210)은, 파일(310) 내의 더 많은 스토리지 공간에 대한 및 재밸런싱과 복구에 대한 클라이언트 요청(122)을 핸들링하기 위하여 청크(330)를 할당할 수 있다. 일부 예에서, 프로세서(202)는, 스토리지 디바이스(114)들 사이에서 데이터 청크(330nD)와 코드 청크(330nC)를 분산시키는 것과는 상이하게, 스토리지 디바이스(114)들 사이에서 청크(330n)를 복제한다. 큐레이터(210)는 자원 호스트 부하와 활성도(liveliness)의 부하 맵(load map)(216)을 유지할 수 있다. 일부 구현에서, 큐레이터(210)는 후보 자원 호스트(110)들의 목록을 생성함으로써 청크(330)를 할당하고 청크 할당 요청을 후보 자원 호스트(110)들 각각에 전송한다. 자원 호스트(110)가 과부하되거나 이용가능한 공간을 갖지 않는다면, 자원 호스트(110)는 요청을 거부할 수 있다. 많은 경우에, 큐레이터(210)는 상이한 자원 호스트(110)를 선택한다. 각각의 큐레이터(210)는 파일 명칭공간의 지정된 부분을 지속적으로 스캔하여, 매 분마다 등등에서 모든 메타데이터(212)를 검사할 수 있다. 큐레이터(210)는 파일 스캔을 이용하여 메타데이터(212)의 무결성을 체크하고, 수행될 및/또는 통계를 생성할 것을 필요로 하는 작업을 결정할 수 있다. 파일 스캔은 큐레이터(210)의 다른 동작들과 동시에 동작할 수 있다. 스캔 그 자체는 메타데이터(212)를 수정하지 않을 수 있지만, 시스템의 다른 컴포넌트들에 의해 이루어질 작업을 스케쥴링하고 통계를 계산한다.
도 4a 및 도 4b를 참조하면, 작업 관리 시스템(220)은 분산형 시스템(100)의 시스템 계층(400)을 결정하거나 수신하여, 저장된 데이터(312)로의 사용자 액세스에 영향을 미치지 않고 및/또는 프로세서(112)가 저장된 데이터(312)로의 액세스를 허용하지 않고 유지보수 또는 고장이 발생할 수 있는 레벨(예를 들어, 레벨 1-4)을 식별할 수 있다. 유지보수 또는 고장(엄격 계층(400a)(도 4a), 비-엄격 계층(400b)(도 4b))은, 전력 유지보수/고장, 쿨링 시스템 유지보수/고장, 네트워킹 유지보수/고장, 부품 업데이트 또는 교체, 또는 분산형 시스템(100)에 영향을 주는 다른 유지보수 또는 정전을 포함할 수 있다. 유지보수는 스케쥴링될 수 있고, 일부 예에서는, 미스케쥴링된 시스템 고장이 발생할 수 있다.
시스템 계층(400)은 시스템 레벨들(예를 들어, 레벨 1-5)을 포함하고, 유지보수 유닛/시스템 도메인(402)이 하나 이상의 시스템 레벨 1-5까지 이른다. 각각의 시스템 도메인(402)은 활성 상태 또는 비활성 상태를 가진다. 분배 센터 모듈(410)은 하나 이상의 셀(420, 420a-n)을 포함하고, 각각의 셀(420)은 자원 호스트(110)의 하나 이상의 랙(430)을 포함한다. 각각의 셀(420)은 또한, 셀 쿨링(422), 셀 전력(424)(예를 들어, 버스 덕트(bus ducts)), 및 셀 레벨 네트워킹(426)(예를 들어, 네트워크 스위치(들))을 포함한다. 유사하게, 각각의 랙(430)은, 랙 쿨링(432), 랙 전력(434)(예를 들어, 버스 덕트), 및 랙 레벨 네트워킹(436)(예를 들어, 네트워크 스위치(들))을 포함한다.
시스템 레벨들은, 제1, 제2, 제3, 및 제4 시스템 레벨 1-4를 포함할 수 있다. 제1 시스템 레벨 1은, 데이터 처리 디바이스(112), 비일시적인 메모리 디바이스(114), 또는 네트워크 디바이스(116)(예를 들어, NIC)의 자원 호스트 또는 호스트 머신(110, 110a-n))에 대응한다. 각각의 호스트 머신/자원 호스트(110)는 시스템 도메인(402)을 가진다. 제2 시스템 레벨 2는, 랙 레벨에 있는 호스트 머신(110)의 랙(430, 430a-n) 및 쿨링 전달기(432), 전력 전달기(434)(예를 들어, 버스 덕트), 또는 통신 전달기(436)(예를 들어, 네트워크 스위치 및 케이블)에 대응한다. 각각의 랙(430) 또는 랙 레벨의 쿨링 전달기(432), 전력 전달기(434), 또는 통신 전달기(436)는 시스템 도메인(402)을 가진다. 제3 시스템 레벨 3은, 분배 센터 모듈(410)과 셀 쿨링(422), 셀 전력(424), 또는 연관된 랙(430)에 공급되는 셀 레벨 네트워킹(426)의 임의의 셀(420, 420a-n))에 대응한다. 각각의 셀(420) 또는 셀 쿨링(422), 셀 전력(424), 또는 셀 레벨 네트워킹(426)은 시스템 도메인(402)을 가진다. 제4 시스템 레벨 4는 분배 센터 모듈(410)에 대응한다. 각각의 분배 센터(410) 모듈은 시스템 도메인(402)을 가진다.
도 4a는, 시스템 계층(400)의 각각의 계층 컴포넌트(예를 들어, 자원 호스트(110), 랙(430), 셀(420), 또는 분배 센터 모듈(410))가 서로 다른 계층 컴포넌트(110, 410, 420, 430)에 의존하는 엄격 시스템 계층(400a)을 도시한다. 반면 도 4b는 비-엄격 시스템 계층(400b)을 도시하고, 여기서, 하나의 계층 컴포넌트(110, 410, 420, 430)는 하나보다 많은 입력 피드(input feed)를 가진다. 일부 예에서, 작업 관리 시스템(220)은 그 프로세서(202)의 비일시적인 메모리(204) 상에 시스템 계층(400)을 저장한다. 예를 들어, 작업 관리 시스템(220)은 제1 자원 호스트(110)(및 그 대응하는 프로세서 자원(112a) 및 스토리지 자원(114a))를 제1 랙(430a)에 맵핑하고, 제1 랙(430a)을 제1 버스 덕트(420a)에 맵핑하고, 제1 버스 덕트(420a)를 제1 분배 센터 모듈(410a)에 맵핑한다.
작업 관리 시스템(220)은, 계층 컴포넌트들(110, 410, 420, 430)의 맵핑에 기초하여, 계층 컴포넌트들(110, 410, 420, 430)이 유지보수를 겪고 있을 때 어느 자원 호스트(110)가 비활성인지를 결정한다. 일단 작업 관리 시스템(220)이 시스템 도메인(402)을 자원 호스트(110)들에(및 그에 따라 그들의 대응하는 프로세서 자원(112a) 및 스토리지 자원(114a)에) 맵핑하고 나면, 작업 관리 시스템(220)은 프로세서 또는 데이터 가용도를 유지하면서 유지보수가 수행될 수 있는 가장 높은 레벨(예를 들어, 레벨 1-4)을 결정한다.
시스템 도메인(402)은 유지보수를 겪고 있는 계층 컴포넌트(110, 410, 420, 430)와 이에 의존하는 임의의 계층 컴포넌트(110, 410, 420, 430)를 포함한다. 따라서, 하나의 계층 컴포넌트(110, 410, 420, 430)가 유지보수를 겪고 있을 때, 그 계층 컴포넌트(110, 410, 420, 430)는 비활성이고 계층 컴포넌트(110, 410, 420, 430)의 시스템 도메인(402) 내의 임의의 다른 계층 컴포넌트(110, 410, 420, 430)도 역시 비활성이다. 예를 들어, 자원 호스트(110)가 유지보수를 겪고 있을 때, 스토리지 디바이스(114), 데이터 프로세서(112), 및 NIC(116)를 포함하는 레벨 1 시스템 도메인(402a)은 비활성 상태에 있다. 랙(430)이 유지보수를 겪을 때, 랙(430) 및 랙(430)에 의존하는 임의의 자원 호스트(110)를 포함하는 레벨 2 시스템 도메인(402b)은 비활성 상태에 있다. 셀 컴포넌트(420)(예를 들어, 셀 쿨링 컴포넌트(422), 버스 덕트(424), 및/또는 셀 컴포넌트(420a)의 네트워크 스위치(426) 중 임의의 하나)가 유지보수를 겪고 있을 때, 셀(420)과 셀 컴포넌트(420)에 의존하는 레벨 3 및 레벨 4의 임의의 계층 컴포넌트(110, 410, 420, 430)를 포함하는 레벨 3 시스템 도메인(402c)은 비활성 상태에 있다. 마지막으로, 분배 센터 모듈(410)이 유지보수를 겪고 있을 때, 분배 센터 모듈(410a), 및 분배 센터 모듈(410)에 의존하는 레벨 2 내지 레벨 4의 임의의 계층 컴포넌트(110, 410, 420, 430)를 포함하는 레벨 4 시스템 도메인(402, 402d)은 비활성 상태에 있다.
일부 예에서, 도 4b에 도시된 바와 같이, 비-엄격 계층 컴포넌트(410, 420, 430, 114)는 이중 피드를 가질 수 있다, 즉, 계층 컴포넌트(110, 410, 420, 430)는 2개 이상의 다른 계층 컴포넌트(110, 410, 420, 430)에 의존한다. 예를 들어, 셀 컴포넌트(420)는 2개의 분배 센터 모듈(410)로부터의 피드를 가질 수 있고; 및/또는 랙(430)은 2개의 셀 컴포넌트(420)로부터의 이중 피드를 가질 수 있다. 도시된 바와 같이, 레벨 2 시스템 도메인(402b)은 2개의 랙(430a, 430n)을 포함할 수 있고, 제2 랙(430n)은 2개의 셀 컴포넌트(420a, 420n)로부터의 2개의 피드를 포함한다. 따라서, 제2 랙(430n)은 2개의 시스템 도메인(402bb 및 402cc)의 일부이다. 따라서, 시스템 계층(400)의 하위 레벨들은 시스템 계층(400)의 상위 레벨들의 손실을 야기하지 않고 유지된다. 이것은 데이터 접근성을 허용하는 분산형 시스템(100) 내의 중복성을 야기한다. 특히, 분배 센터 모듈(410)은 자신에게 의존하는 임의의 셀 컴포넌트(420)를 손실하지 않고 유지될 수 있다. 일부 예에서, 랙(430)은, 버스 덕트(424)에 의존하는 이중-전원형 랙(430)으로의 전력을 손실하지 않고 버스 덕트의 유지보수를 허용하는 이중-전원형 랙을 포함한다. 일부 예에서, 정전을 야기하지 않고 유지될 수 있는 시스템 도메인(402)은 유지보수를 허용하기 위해 청크(330n)를 분배할 때 무시된다; 그러나, 계획되지 않은 정전은 여전히 청크(330n)의 손실을 야기할 수 있기 때문에, 무시된 시스템 도메인(402)은 청크(330n)를 분배할 때 포함될 수 있다.
일부 예에서, 셀 쿨링(422) 및 랙 쿨링(432) 등의 쿨링 디바이스는, 각각 셀 컴포넌트(420)와 랙(430)을 쿨링하는데 이용된다. 셀 쿨링 컴포넌트(422)는 하나 또는 복수의 셀 컴포넌트(420)를 쿨링할 수 있다. 유사하게, 랙 쿨링 컴포넌트(432)는 하나 이상의 랙(430)을 쿨링할 수 있다. 큐레이터(210)는 쿨링 디바이스들(즉, 셀 쿨링(422) 및 랙 쿨링(432))과의 자원 호스트(110)의 연관을 저장한다. 일부 구현에서, 작업 관리 시스템(220)은, 쿨링 디바이스들(422, 432)과의 자원 호스트(110)의 연관을 저장하기 이전에, 시스템(100) 내에서 발생할 수도 있는 유지보수의 모든 가능한 조합을 고려하여 시스템 계층(400) 또는 유지보수 계층(400)의 조합을 결정한다. 예를 들어, 하나 이상의 쿨링 디바이스(422, 432)가 고장난 시스템 계층(400), 또는 네트워크 디바이스들(116, 426, 436)이 고장된 시스템 계층(400), 또는 전력 분배(424, 434)가 고장난 시스템 계층(400).
따라서, 시스템(100) 내의 계층 컴포넌트(110, 410, 420, 430)가 유지보수를 겪거나 고장났을 때, 그 계층 컴포넌트(110, 410, 420, 430) 및 그 계층 컴포넌트(110, 410, 420, 430)에 맵핑되거나 의존하는 임의의 계층 컴포넌트(110, 410, 420, 430)는 비활성 상태에 있다. 비활성 상태의 계층 컴포넌트(110, 410, 420, 430)는 사용자(120)에 의해 액세스불가능한 반면, 활성 상태의 계층 컴포넌트(110, 410, 420, 430)는 사용자(120)에 의해 액세스가능하여, 사용자(120)가 그 계층 컴포넌트(110, 410, 420, 430)에 의해 저장된/지원되는/유지되는 데이터(312)를 처리/액세스하는 것을 허용한다. 앞서 언급된 바와 같이, 비활성 상태 동안에, 사용자(120)는 유지보수를 겪고 있는 시스템 도메인(402)과 연관된 자원 호스트(110)에 액세스할 수 없다; 따라서, 사용자(120)는 파일(310)(즉, 스트라이프 복제물(330n), 데이터 청크(330nD) 및 비-데이터 청크(330nC)를 포함하는 청크(330))에 액세스할 수 없다.
일부 구현에서, 큐레이터(210)는, 예를 들어, 계층 컴포넌트(110, 410, 420, 430)의 맵핑에 기초하여, 임의의 하나의 시스템 도메인(402)의 스토리지 디바이스(114)에 분배되는 청크(330)의 수를 제약한다. 따라서, 레벨 1 시스템 도메인(402)이 비활성이라면, 큐레이터(210)는, 일부 청크(330)가 액세스불가능하더라도, 파일(310)(또는 스트라이프(320))으로의 액세스가능성을 유지한다. 일부 예에서, 각각의 파일(310)(또는 스트라이프(320))에 대해, 큐레이터(210)는 단일 시스템 도메인(402) 내의 임의의 스토리지 디바이스(114) 내에 위치할 수 있는 최대 개수의 청크(330)를 결정하여, 파일(310)에 대한 청크(330)를 저장하고 있는 스토리지 디바이스(114)와 연관된 시스템 도메인(402)이 유지보수를 겪고 있더라도, 큐레이터(210)가 여전히 파일(310)을 검색할 수 있게 한다. 최대 개수의 청크(330)는, 일부의 청크(330)가 이용가능하지 않더라도, 큐레이터(210)가 파일(310)을 재구성할 수 있도록 보장한다. 일부 예에서, 최대 개수의 청크(330)는, 청크(330)로부터 파일(310)을 여전히 재구성할 수 있으면서, 임의의 시스템 고장을 수용하도록, 더 낮은 임계치로 설정된다. 큐레이터(210)가 청크(330)를 스토리지 디바이스(114)에 둘 때, 큐레이터(210)는, 스트라이프(320) 내에서, 단일 시스템 도메인(402)이 유지보수를 겪을 때 최대 개수보다 많지 않은 청크(330)가 비활성인 것을 보장한다. 게다가, 큐레이터(210)는 또한, 예를 들어, 계층 컴포넌트(110, 410, 420, 430)의 맵핑에 기초하여, 시스템 도메인(402) 내의 자원 호스트(110)의 데이터 프로세서(112) 상의 처리 작업의 수를 제약할 수 있다. 따라서, 레벨 1 시스템 도메인(402)이 비활성이라면, 큐레이터(210)는, 자원 호스트(110)의 프로세서(112)들 중 일부가 비활성이더라도 작업에 대한 액세스가능성을 유지한다.
도 5를 참조하면, 일부 구현에서, 시스템(100)은 유지보수 이벤트가 발생할 때 스토리지 자원(114)과 데이터 프로세서(112)를 효율적으로 이용하기 위한 도시된 동작(500)을 따른다. 시스템(100)은, 단계(502)에서, 다음과 같은 자원 유형을 식별한다: 1) 비-스토리지 자원(예를 들어, 데이터 프로세서(112)의 컴퓨팅 이용량, 네트워킹, 전력 전달, 쿨링 등); 2) 스토리지 용량 자원(예를 들어, 스토리지 디바이스(114)의 바이트 이용량/스토리지 용량); 또는 3) 스토리지 대역폭 자원(예를 들어, 하드 디스크 스토리지에 허용된 초당 입력/출력 동작 수 또는 이러한 스토리지에 대해 허용된 스핀들 이용량/액세스량).
시스템(100)은 또한 2개 클래스의 작업/요청(122)을 식별한다. 제1 클래스의 작업(122)은 고가용도 작업(122a)을 포함하고 제2 클래스는 표준 또는 저가용도 작업(122b)(도 1b)을 포함한다. 시스템(100)은 자원 호스트(110)의 프로세서(112) 상에서 처리 작업(122)을 실행하고 자원 호스트(110)의 스토리지 디바이스(114) 상에서 데이터(312)를 액세스/저장하기 위한 스토리지 작업(122)을 실행한다. 양쪽 모두의 유형의 작업들(122a, 122b)이 (이하에서 논의되는) 할당량 내에 있을 때 고가용도 작업(122a)은 저가용도 작업(122b)보다 높은 우선순위를 갖는 작업(122)이다.
일부 구현에서, 시스템(100)이 어떤 유형의 자원 손실이 용인될 수 있는지를 지정할 때, 시스템(100)은, 단계(504)에서, 손실이 데이터 프로세서(112)의 손실 또는 메모리 디바이스(114)의 손실 또는 양쪽 모두를 포함하는지에 기초하여 그 손실을 용인하기 위한 전략을 결정한다. 비-스토리지 자원 이용량의 경우, 작업 관리 시스템(220)은, 고장난 비-스토리지 자원(예를 들어, 데이터 프로세서(112))으로부터 다른 이용가능한 비-스토리지 자원으로 작업(122)을 이전 및/또는 재시작하는 제1 전략(506a)을 이용한다. 스토리지 자원 이용량의 경우, 작업 관리 시스템(220)은, 고장난 스토리지 자원(114)에 액세스하는 작업(122)을 (적어도 소정 시간 기간 동안) 그대로 방치하고 및/또는 이용가능하지 않은 데이터(312)를 검색하기 위해 데이터 재구성을 이용하는 제2 전략(506b)을 이용한다. 일부 예에서, 제1 전략은 컴퓨팅 자원(112)(예를 들어, 계산 또는 네트워킹)에 관련된 자원(110)을 핸들링하고; 제2 전략은 스토리지 자원(114)(예를 들어, 하드 디스크 및 플래시 메모리 등의 스토리지 디바이스)을 핸들링한다. 고장/손실이 발생하면, 작업 관리 시스템(220)은 손실이 데이터 프로세서(112) 또는 스토리지 디바이스(114)의 손실인지를 결정할 수 있다. 손실이 스토리지 디바이스(114)의 손실이면, 작업 관리 시스템(220)은 단계(506b)에서 전략 2를 채용한다; 그렇지 않다면, 작업 관리 시스템(220)은 단계(506a)에서 전략 1을 채용한다.
작업 관리 시스템(220)이 (단계 506a에서) 데이터 프로세서(112)(즉, 계산 및 네트워킹)에 관련된 제1 전략을 채용할 때, 작업 관리 시스템(220)은 용인된 이벤트로 인해 손실된 데이터 프로세서(112)에 할당된 고가용도 컴퓨팅 작업(122)을 나머지 이용가능한 데이터 프로세서(112)에 이전 및/또는 재실행한다. 예를 들어, 소정의 전력 또는 네트워크 유지보수 이벤트가 데이터 프로세서(112)의 10%를 이용가능하지 않게 하면, 작업 관리 시스템(220)은 작업(122)을 이동시켜 데이터 프로세서(112)의 나머지 90% 상에서 실행한다.
작업 관리 시스템(220)이 (단계 506b에서) 스토리지 자원(114)에 이용되는 제2 전략을 채용하면, 작업 관리 시스템(220)은 유지보수 또는 고장 이벤트 동안에 비활성 상태에 있는 스토리지 디바이스(114) 상에 저장된 데이터(312)를 방치하고, 시스템(100)이 (도 3a 및 도 3b에 관하여 논의된) 복제 및/또는 코딩을 이용하여 이용가능하지 않은 데이터(312)를 재구성하는 것을 허용한다. 일부 예에서, 시스템(100)은 제1 및 제2 전략을 동시에 채용한다.
일단 시스템(100)이 어느 전략을 이용할 것인지를 결정하고 나면, 시스템(100)은 단계(508)에서 정상 이용 동안에(즉, 시스템(100)이 유지보수를 겪고 있지 않을 때) 작업(122)에게 이용가능한 각각의 자원(110)(즉, 스토리지 자원(114) 및 데이터 프로세서 자원(112))의 양(즉, 할당량 Q)을 계산한다.
작업 관리 시스템(220)은 이용가능한 자원(110)의 제1 할당량 Q1과 제2 할당량 Q2를 결정한다. 이용가능한 자원(110)의 제1 할당량 Q1은 저가용도 작업(122b)에 이용가능한 자원(110)을 포함하고 정상 동작 동안에(즉, 시스템(100)이 유지보수 또는 고장을 겪고 있지 않을 때) 이용가능한 자원(110)의 양이다. 이용가능한 자원(110)의 제2 할당량 Q2는 고가용도 작업(122b)에 이용가능한 자원(110)을 포함하고 정상 동작 동안에 이용가능한 자원(110)의 양이다. 빈번하지 않은 유지보수 또는 고장 이벤트가 발생하면, 저가용도 작업(122b)은 불충분한 자원(110)과 조우하고, 이것은 저하된 또는 존재하지 않는 성능(nonexistent performance)을 초래한다. 전체 이용가능한 할당량 또는 작업 용량 Q는 다음과 같은 수학식을 이용하여 계산될 수 있다:
[수학식 1]
Figure pct00001
여기서, Q는 작업(122)(고가용도 및 저가용도)에 의해 요구되는 자원(110)의 전체 이용가능한 할당량이고, Q1은 제1 할당량이며, Q2는 제2 할당량이다. 전체 이용가능한 요구된 할당량/용량 Q는 정상 동작 동안에 이용가능한 자원의 양 RN을 초과할 수도 있으므로, 작업 관리 시스템(220)은 고가용도 작업(122a)과 저가용도 작업(122b) 양쪽 모두에 의한 자원(110)의 전체 이용량을 정상 동작 동안에(즉, 시스템(100)이 유지보수 또는 고장을 겪고 있지 않을 때) 이용가능한 자원(110)의 양 RN으로 제약하여 자원(110)에 할당된 작업(122)의 수가 자원(110)의 실제의 이용가능한 용량(예를 들어, RN)을 초과하지 않도록 보장한다. 시스템(100)은 수학식 1을 이용하여 스토리지 자원(114)과 처리 자원(112)에 대한 이용가능한 할당량 Q를 결정할 수 있다. 이용가능한 할당량 Q는, 용량, 용량 퍼센트, 대역폭, 또는 자원의 크기 측정치일 수 있다.
일부 예에서, 시스템(100)은, 용인된 이벤트(즉, 유지보수 이벤트 또는 시스템 고장) 이전의 소정 시간 기간 동안 저가용도 작업(122b)에 이용가능한 자원(110)의 제1 할당량 Q1을 저하시키고 용인된 이벤트 이전의 상기 소정 시간 기간 동안 고가용도 작업(122a)에 이용가능한 자원(110)의 제2 할당량 Q2를 증가시킬 수 있다. 추가로 또는 대안으로서, 시스템(100)은 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업(122b)들 중 적어도 일부를 보류 또는 종료할 수 있다. 이것은 시스템(100)이 고가용도 작업(122a)을 이용가능한 자원(110)으로 이동시키는 것을 허용한다.
일부 구현에서, 시스템(100)은 분산형 스토리지 시스템(100)의 시스템 계층(400)(도 4a 및 도 4b)과 연관된 특정 자원(110)으로의 작업(122)의 할당에 기초하여 용인된 이벤트로 인해 손실된 자원(110)의 양을 결정할 수 있다. 일부 구현에서, 작업 관리 시스템(220)은 계획된 유지보수 또는 고장이 발생할 때 소정 유형의 호스트 자원(110) 손실을 "용인된 것"으로서 지정한다. 이들 작업(122)에 이용가능한 할당량 Q는, 데이터 액세스가능성과 데이터 처리 액세스가능성을 유지하면서, 용인되는 최대 손실량만큼 감소된다. 시스템 계층(400a, 400b), 분배 센터 모듈(410), 셀 컴포넌트(420), 랙(430), 또는 자원 호스트(110)는 용인되는 것으로 지정될 수 있다.
일부 예에서, 시스템(100)의 정상 동작 동안에, 스토리지 디바이스(114) 상에 데이터(312)를 저장하거나 자원 호스트(110)의 데이터 프로세서(112) 상에서 데이터(312)를 처리하는데 대해 자원(110)의 100%가 이용가능하다. "최대" 용인된 이벤트(즉, 유지보수 이벤트 또는 시스템 고장)은, 시스템 계층(400)과 시스템 도메인(402)으로의 자원(110)의 할당에 기초하여, 이용가능한 자원(110)의 20% 손실을 초래할 수 있다. 이것은, 자원(110)의 최대 20%의 손실에도 불구하고 자원(110)의 80%를 항상 이용가능하게 남겨둔다. 따라서, 작업 관리 시스템(220)은 자원(110)의 최대 80%를 고가용도 작업(122a)에 할당하여, 스케쥴링된 유지보수 또는 시스템 고장이 발생할 때 시스템(100)이 충분한 자원(110)을 갖는 것을 허용한다. 작업 관리 시스템(220)이 데이터 프로세서(212)에 관련된 작업(122)을 이용가능한 프로세서(212)의 80%에 재할당한다면, 시스템(100)은 고가용도 작업(122a)을 실행하기에 충분한 프로세서(212)를 가질 것이다. 또한, 시스템(100)이 데이터(312)를 저장하는 스토리지 디바이스(114)를 포함하는 시스템 도메인(402)의 비활성 상태로 인해 이용가능하지 않은 데이터(312)를 재구성해야 한다면, 시스템(100)은 손실된 데이터(312)를 재구성하기에 충분한 청크(330)(예를 들어, 데이터 청크(330nD)와 비-데이터 청크(330nC))와 복제물(330n)을 갖는 충분한 스토리지 디바이스(114)를 가진다.
단계(508a)에서, 비-스토리지 자원 이용량에 대해(즉, 전략 1 하에서) 고가용도 작업(122a)에게 이용가능한 자원(110)의 제2 할당량 Q2를 결정할 때, 이용가능한 자원(110)의 제2 할당량 Q2는, 정상 동작 동안에 이용가능한 자원(110)의 양에서, 용인된 이벤트로 인해 손실된 자원(110)의 양을 뺀 것이다. 따라서, 제2 할당량 Q2는 손실된 자원(110)이 데이터 프로세서(112)일 때 다음과 같은 수학식에 기초하여 계산될 수 있다:
[수학식 2]
Figure pct00002
여기서 R N 은 정상 동작 동안에 이용가능한 자원의 양이고, R L 은 용인된 이벤트로 인해 손실된 자원의 최대양이다.
일부 구현에서, 시스템(100)은 손실된 자원(110)이 스토리지 디바이스(114)일 때 제2 할당량 Q2를 결정한다. 단계(508b)에서, 스토리지 용량 이용량에 대해(즉, 전략 2 하에서) 고가용도 작업(122a)에게 이용가능한 자원(110)의 제2 할당량 Q2를 결정할 때, 고가용도 작업(122a)에게 이용가능한 스토리지 디바이스(114)의 제2 할당량 Q2는, (자원(110)의 이용량은 복제된 청크(330n) 또는 코딩된 청크(330nC, 330nD)의 중복을 요구할 수 있지만), 예를 들어, 수학식 3을 이용하여 계산되는 바와 같이, 정상적으로 이용가능한 자원(110)의 전체량과 같을 수 있다.
[수학식 3]
Figure pct00003
이것은 스토리지 디바이스(114)의 바이트 이용량/용량에 적용될 수 있다. 예를 들어, 스토리지 디바이스(114)의 바이트 이용량/용량의 100%까지가 고가용도 작업(122a)에 할당될 수 있다.
단계(508c)에서, 스토리지 대역폭 이용량에 대해(즉, 전략 2 하에서) 고가용도 작업(122a)에 이용가능한 자원(110)의 제2 할당량 Q2를 결정할 때, (하드 디스크 스토리지에 허용된 초당 입력/출력 동작 수 또는 이러한 스토리지에 대해 허용된 스핀들 이용량/액세스의 양과 같은) 그 스토리지 자원(114)의 제2 할당량 Q2(즉, 대역폭 또는 이용량)는, 다음과 같은 수학식에 도시된 바와 같이, 정상적으로 이용가능한 자원(110)의 양 RN에서, 용인된 이벤트로 인한 자원(110)의 최대 손실 RL을 빼고, 용인된 이벤트로 인한 최대 손실로 인한 이용되는 그 자원의 증가된 양 RI를 뺀 것으로서 계산될 수 있다.
[수학식 4]
Figure pct00004
일부 예에서, 시스템(100)은, 손실된 자원(110)의 계산이, 하드 디스크 등의, 스토리지 디바이스(114)일 때 다음과 같은 수학식을 이용하여 제2 할당량 Q2를 결정할 수 있다:
[수학식 5A]
Figure pct00005
여기서 x는 용인된 이벤트에 대응하는 자원 승수(resource multiplier)이다.
예를 들어, 용인된 이벤트에서 하드 디스크 스핀들의 10%까지가 손실될 수 있고, 손실된 데이터(312)로의 각각의 액세스가 (코드를 이용하여 데이터(312)를 재구성할 필요성으로 인해) 스핀들 이용량의 평균 4배를 요구한다면, 수학식 5A를 이용한다:
[수학식 5B]
Figure pct00006
따라서, 스핀들 자원의 69%가 고가용도 작업에 이용가능하게 될 수 있다(이 계산은, 스핀들의 90%만이 이용가능하고 고가용도 작업으로부터의 정상적 부하의 130%를 지원한다는 사실에 기초한다).
일단 시스템(100)이 자원(110)의 제2 할당량 Q2를 계산하고 나면, 시스템(100)은, 단계(510)에서의 2개의 제약을 조건부로, 저가용도 작업과 고가용도 작업 양쪽 모두가 데이터 센터에서 실행되는 것을 허용한다. 제1 제약은, 고가용도 및 저가용도 작업들(122a, 122b)에 의해 이용되는 각각의 자원(110)의 전체 양 (Q1 + Q2)은, 이하의 수학식에 도시된 바와 같이, 정상적으로 이용가능한 자원의 양 RN을 초과할 수 없다는 것이다:
[수학식 6]
Figure pct00007
제2 제약은, 고가용도 작업(122a)에 의해 이용되는 각각의 자원의 양 QU는, 다음과 같은 수학식에 도시된 바와 같이, 제2 할당량 Q2를 초과할 수 없다는 것이다.
[수학식 7]
Figure pct00008
일부 구현에서, 작업 관리 시스템(220)은 고가용도 작업(122a)에 의한 자원(110)의 이용량을 모니터링하여 이들이 너무 많은 자원(110)을 소비하지 않도록 보장한다. 고가용도 작업(122a)이 임계 이용량을 초과하면, 작업 관리 시스템(220)은 고가용도 작업(122a)을 저가용도 작업(122b)으로 다운그레이드한다. 고가용도 작업(122a)이 다운그레이드되면, 작업 관리 시스템(220)은 다운그레이드된 작업(122b)을 종료하여, 고가용도 작업(122a)에 대해 이용가능한 이용가능한 용량(제2 할당량)을 증가시킬 수 있다.
작업 관리 시스템(220)이 이용될 수 있는 할당량 Q2를 결정한 후에, 작업 관리 시스템(220)은 유지보수와 고장 이벤트를 수용하기 위한 프로세스를 구현한다. 유지보수 또는 고장 이벤트가 이용가능한 자원(110)의 양을 감소시키면, 작업 관리 시스템(220)은, 충분한 개수의 저가용도 작업(122b)을 보류, 중단(kill), 퇴출(evict), 또는 다른 방식으로 자원(110)을 이용하지 못하게 하여, 자원(110)이 고가용도 작업(122a)을 위해 이용가능하게 할 수 있다. 또한, 이들 작업(122)이 라이브 트래픽(live traffic)을 서빙하고 있다면, 이들에게 전송되는 트래픽의 양이 감소되거나 다른 데이터 센터들로 전환될 수 있다.
또한, 계획된 유지보수의 경우, 작업 관리 시스템(220)은, 고가용도 작업(122a)이 이들 자원(110)을 이용하기 위해 이동시키는 것을 허용하기 위하여, 유지보수에 이전의 소정량의 시간 동안 일부의 또는 모든 저가용도 작업(122b)을 보류, 중단, 퇴출, 또는 다른 방식으로 소정 자원(110)을 이용하지 못하게 할 수 있다.
상기 설명이 데이터 센터에서의 자원(110)에 중점을 두고 있지만, 동일한 원리가, 자원 호스트(110)(머신), 랙(430), 셀(420), 네트워크, 클러스터, 건물, 사이트, 영역, 또는 데이터 센터들의 전체의 전역적 집합의 레벨에서 적용될 수 있다.
도 6은 데이터 센터에서 자원(110)(예를 들어, 프로세서(112) 및/또는 자원 호스트(114))을 효율적으로 이용하기 위한 방법(600)에 대한 동작들의 예시적인 배열을 제공한다. 이 방법(600)은, 분산형 시스템(100)의 자원(110)의 이용량을 요구하는 고가용도 작업(122a)과 저가용도 작업(122b)을 식별하는 단계(602)와 저가용도 작업(122b)에 이용가능한 자원(110)의 제1 할당량 Q1을 정상 동작 동안에 이용가능한 자원(110)의 양 RN으로서 결정하는 단계(604)를 포함한다. 이 방법(600)은 또한, 고가용도 작업(122a)에 이용가능한 자원(110)의 제2 할당량 Q2를, 정상 동작 동안에 이용가능한 자원(110)의 양에서, 용인된 이벤트로 인해 손실된 자원(110)의 양 RL을 뺀 것으로서 결정하는 단계(606)를 포함한다. 이 방법(600)은 분산형 시스템(100) 상에서 작업들(122, 122a, 122b)을 실행하는 단계(608) 및 고가용도 작업(122a)과 저가용도 작업(122a) 양쪽 모두에 의한 자원(110)의 전체 이용량을 정상 동작 동안에 이용가능한 자원(110)의 양 RN으로 제약하는 단계를 포함한다.
일부 구현에서, 자원(110, 112, 116, 422, 424, 426, 432, 434, 436)은, 데이터 처리 디바이스(112), 네트워킹 시스템(116, 426, 436), 전력 시스템(424, 434), 또는 쿨링 시스템(422, 432)을 포함한다. 이들 유형의 자원(110, 112, 116, 422, 424, 426, 432, 434, 436)의 경우, 이 방법(600)은, 용인된 이벤트로 인해 손실된 자원(110)에 할당된 작업(122)을 나머지 자원(110)으로 이전 또는 재실행하여 데이터(312)의 액세스가능성 또는 데이터 프로세서(212)의 액세스가능성을 유지하는 단계를 포함할 수 있다.
일부 구현에서, 자원(110)은 비일시적인 메모리 디바이스들(114)을 포함한다. 이러한 유형의 자원(114)의 경우, 이 방법(600)은, 손실된 자원(110)에 할당된 작업을 나머지 자원(110)에 재할당하지 않고 이 작업을 방치하는 단계 및 손실된 자원(110)과 연관된 임의의 이용가능하지 않은 데이터를 재구성하는 단계를 포함할 수 있다.
이 방법(600)은, 고가용도 작업(122a)에 이용가능한 자원(110)의 제2 할당량 Q2를, 정상 동작 동안에 이용가능한 자원(110)의 양 RN에서, 용인된 이벤트로 인해 손실된 자원(110)의 양 RL을 빼고, 용인된 이벤트로 인해 필요한 나머지 자원(110)의 증가된 양 RI를 뺀 것으로서 결정하는 단계를 포함할 수 있다. 추가로 또는 대안으로서, 이 방법(600)은 제1 할당량 Q1과 제2 할당량 Q2의 합을 최대 할당량으로 제한하는 단계를 포함할 수 있다.
일부 구현에서, 이 방법(600)은 고가용도 작업(12a)에 의한 자원(110)의 이용량을 모니터링하는 단계를 포함한다. 고가용도 작업(122a)이 임계 이용량을 초과하면, 이 방법(600)은 고가용도 작업(122a)을 저가용도 작업(122b)으로 다운그레이드하는 단계를 포함한다.
이 방법(600)은, 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업(122b)에 이용가능한 자원(110)의 제1 할당량 Q1을 저하시키고 용인된 이벤트 이전의 상기 소정 시간 기간 동안 고가용도 작업(122a)에 이용가능한 자원(110)의 제2 할당량 Q2를 증가시키는 단계를 더 포함할 수 있다. 추가로 또는 대안으로서, 이 방법(600)은 용인된 이벤트 이전의 소정 시간 기간 동안 저가용도 작업(122b)들 중 적어도 일부를 보류 또는 종료하는 단계를 포함할 수 있다.
일부 예에서, 이 방법(600)은 용인된 이벤트로 인해 손실된 자원(110)의 양 RL을 특정 자원(110)으로의 작업(122)의 할당과 분산형 시스템(100)의 시스템 계층(400)에 기초하여 결정하는 단계를 포함한다. 시스템 계층(400)은 시스템 도메인 또는 유닛(402)을 포함한다. 각각의 시스템 도메인(402)은 활성 상태 또는 비활성 상태를 가진다. 시스템 계층(400)은, 레벨 1-4 등의, 시스템 레벨들을 포함할 수 있다. 제1 시스템 레벨(예를 들어, 레벨 1)은, 데이터 처리 디바이스(112), 비일시적인 메모리 디바이스(114) 또는 네트워크 인터페이스 제어기(116)를 갖는 자원 호스트(110)에 대응한다. 각각의 데이터 처리 디바이스(112) 또는 메모리 디바이스(114)는 하나 이상의 시스템 도메인(402)을 가진다. 제2 시스템 레벨(예를 들어, 레벨 2)은, 메모리 디바이스(114) 또는 데이터 처리 디바이스(112)의 호스트 머신(430)(예를 들어, 랙)에 대응하고, 각각의 호스트 머신은 하나 이상의 시스템 도메인(402)을 가진다. 제3 시스템 레벨(예를 들어, 레벨 3)은, 호스트 머신(110)에 대한 전력 전달기(424)(예를 들어, 버스 덕트), 통신 전달기(426), 또는 쿨링 전달기(422)에 대응한다. 각각의 전력 전달기(424), 통신 전달기(426) 또는 쿨링 전달기(422)는 시스템 도메인(402)을 가진다. 제4 시스템 레벨(예를 들어, 레벨 4)은, 전력 전달기(424), 통신 전달기(426), 또는 쿨링 전달기(422)의 분배 센터 모듈(410)에 대응한다. 각각의 분배 센터 모듈(410)은 시스템 도메인(402)을 가진다.
도 7은 자원(110)을 효율적으로 이용하기 위한 방법(700)에 대한 동작들의 예시적인 배열을 제공한다. 이 방법(700)은, 분산형 시스템(100)의 자원(112, 114)의 이용량을 요구하는 고가용도 작업(122a)과 저가용도 작업(122b)을 식별하는 단계(702), 저가용도 작업(122a)에 이용가능한 자원(112, 114)의 제1 할당량 Q1을 정상 동작 동안에 이용가능한 자원(112, 114)의 양으로서 결정하는 단계(702), 및 고가용도 작업(122a)에 이용가능한 자원(112, 114)의 제2 할당량 Q2를 작업(122)의 자원 이용량의 유형에 기초하여 결정하는 단계(706)를 포함한다. 스토리지 용량 이용량의 경우, 고가용도 작업(122a)에 이용가능한 자원(114)의 제2 할당량 Q2는 정상 동작 동안에 이용가능한 자원(114)의 양 RN이다. 스토리지 대역폭 이용량의 경우, 고가용도 작업(122a)에 이용가능한 자원(114)의 제2 할당량 Q2는, 정상 동작 동안에 이용가능한 자원(114)의 양 RN에서, 용인된 이벤트로 인해 손실된 자원(114)의 양 RL을 빼고, 용인된 이벤트로 인해 필요한 나머지 자원(114)의 증가된 양 RI를 뺀 것이다. 다른 자원 이용량의 경우, 고가용도 작업(122a)에 이용가능한 자원(112)의 제2 할당량 Q2는, 정상 동작 동안에 이용가능한 자원(112)의 양 RN에서, 용인된 이벤트로 인해 손실된 자원의 양 RL을 뺀 것이다. 이 방법은 분산형 시스템(100)의 자원(112, 114) 상에서 작업(122)을 실행하는 단계(708), 및 고가용도 작업(122a)과 저가용도 작업(122b) 양쪽 모두에 의한 자원(112, 114)의 전체 이용량을 정상 동작 동안에 이용가능한 자원의 양 RN으로 제약하는 단계(710)를 더 포함한다.
여기서 설명된 시스템 및 기술들의 다양한 구현들은, 디지털 전자 회로, 집적 회로, 특별 설계된 ASIC(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 이들 다양한 구현들은, 스토리지 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스와 데이터 및 명령어를 주고 받도록 결합된, 특별 목적 또는 범용일 수 있는, 적어도 하나의 프로그램가능한 프로세서를 포함하는 프로그램가능한 시스템 상에서 실행가능한 및/또는 인터프리트가능한 하나 이상의 컴퓨터 프로그램에서의 구현을 포함할 수 있다.
(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드라고도 알려져 있는) 이들 컴퓨터 프로그램은, 프로그램가능한 프로세서를 위한 머신 명령어를 포함하고, 고수준 절차형 및/또는 객체-지향형 프로그래밍 언어, 및/또는 어셈블리/머신 언어로 구현될 수 있다. 여기서 이용될 때, 용어 "머신 판독가능한 매체" 및 "컴퓨터 판독가능한 매체"란, 머신 판독가능한 신호로서 머신 명령어를 수신하는 머신 판독가능한 매체를 포함한, 머신 명령어 및/또는 데이터를 프로그램가능한 프로세서에 제공하는데 이용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예를 들어, 자기 디스크, 광학 디스크, 메모리, 프로그램가능한 로직 디바이스(PLD)를 말한다. 용어 "머신 판독가능한 신호"란, 머신 명령어 및/또는 데이터를 프로그램가능한 프로세서에 제공하는데 이용되는 임의의 신호를 말한다.
본 명세서에서 설명된 발명 대상과 기능적 동작들의 구현은, 본 명세서에서 개시된 구조들 및 그들의 구조적 균등물들을 포함한 디지털 전자 회로로, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 게다가, 본 명세서에서 설명된 발명 대상은, 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위한 컴퓨터 판독가능한 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독가능한 매체는, 머신 판독가능한 스토리지 디바이스, 머신 판독가능한 스토리지 기판, 메모리 디바이스, 머신 판독가능한 전파된 신호에 영향을 미치는 물질의 조성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치", "컴퓨팅 디바이스" 및 "컴퓨팅 프로세서"는, 예로서 프로그램가능한 프로세서, 컴퓨터, 또는 복수의 프로세서나 컴퓨터를 포함한, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 머신을 포괄한다. 장치는, 하드웨어 외에도, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합으로 구성된 코드를 포함할 수 있다. 전파된 신호는, 인공적으로 생성된 신호, 예를 들어, 적절한 수신 장치로의 전송을 위해 정보를 인코딩하도록 생성된 머신-생성된 전기적, 광학적, 또는 전자기 신호이다.
(애플리케이션, 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려진) 컴퓨터 프로그램은, 컴파일형 또는 인터프리터형 언어를 포함한 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 단독형 프로그램이나, 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 이용하기에 적합한 다른 유닛을 포함한, 임의 형태로 배치될 수 있다. 컴퓨터 프로그램은 반드시 파일 시스템 내의 파일에 대응할 필요는 없다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하고 있는 파일의 일부로서, 해당 프로그램에 전용된 단일 파일에, 또는 복수의 조율된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분들을 저장하고 있는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 상에, 또는 하나의 사이트에 위치되거나 복수의 사이트에 걸쳐 분산되고 통신 네트워크를 통해 상호접속된 복수의 컴퓨터 상에서 실행되도록 배치될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 플로우들은, 입력 데이터에 관해 동작하고 출력을 생성함으로써 하나 이상의 컴퓨터 프로그램을 실행하여 기능을 수행하는 하나 이상의 프로그램가능한 프로세서에 의해 수행될 수 있다. 프로세스들과 로직 플로우들은 또한, 특별 목적 로직 회로, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 또한 장치가 이들로서 구현될 수 있다.
컴퓨터 프로그램을 실행하기에 적합한 프로세서로는, 예로서, 범용 마이크로프로세서 및 특별 목적 마이크로프로세서 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서가 포함된다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어와 데이터를 수신할 것이다. 컴퓨터의 본질적 요소들은, 명령어를 실행하기 위한 프로세서와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 스토리지 디바이스, 예를 들어, 자기, 광자기 디스크, 또는 광학 디스크를 포함하거나, 이들로부터 데이터를 수신, 이들에게 데이터를 전송, 또는 양쪽 모두를 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요는 없다. 게다가, 컴퓨터는, 다른 디바이스에, 예를 들어, 몇 가지 예를 들자면, 모바일 전화, PDA(personal digital assistant), 모바일 오디오 플레이어, GPS(Global Positioning System) 수신기에 임베딩될 수 있다. 컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독가능한 매체는, 예로서, 반도체 메모리 디바이스, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기 디스크, 예를 들어, 내부 하드 디스크 또는 착탈식 디스크; 광자기 디스크; 및 CD ROM과 DVD-ROM 디스크를 포함한, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특별 목적 로직 회로에 의해 보충되거나, 이에 병합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 개시내용의 하나 이상의 양태들은, 디스플레이 디바이스, 예를 들어, CRT(cathode ray tube), LCD(liquid crystal display) 모니터, 또는 사용자에게 정보를 디스플레이하기 위한 터치스크린과, 선택사항으로서, 키보드 및 포인팅 디바이스, 예를 들어, 사용자가 컴퓨터에 입력을 제공할 수 있는 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들이 역시 이용될 수 있다; 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 센서 피드백, 예를 들어, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은, 음향, 음성, 또는 촉각적 입력을 포함한, 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는, 사용자에 의해 이용되는 디바이스에 문서를 전송하거나 디바이스로부터 문서를 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여, 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 상호작용할 수 있다.
본 개시내용의 하나 이상의 양태는, 백엔드 컴포넌트, 예를 들어, 데이터 서버를 포함하거나, 미들웨어 컴포넌트, 예를 들어, 애플리케이션 서버를 포함하거나, 프론트엔드 컴포넌트, 예를 들어, 사용자가 본 명세서에서 설명된 발명 대상의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스나 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하는 컴퓨팅 시스템, 또는 이러한 하나 이상의 백엔드, 미들웨어, 또는 프론트엔드 컴포넌트들의 임의의 조합으로 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태나 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크에 의해 상호접속될 수 있다. 통신 네트워크의 예로서는, 로컬 영역 네트워크("LAN"), 광역 네트워크("WAN"), 인터-네트워크(예를 들어, 인터넷), 및 피어-투-피어 네트워크(예를 들어, 애드 혹 피어-투-피어 네트워크)가 포함된다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로는 서로로부터 원격에 있고 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터 상에서 실행 중이며 서로에 관해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들 때문에 발생하는 것이다. 일부 구현에서, 서버는 데이터(예를 들어, HTML 페이지)를 (예를 들어, 클라이언트 디바이스와 상호작용하는 사용자로부터의 사용자 입력을 수신하고 데이터를 디스플레이하기 위한 목적으로) 클라이언트 디바이스에 전송한다. (예를 들어, 사용자 상호작용의 결과로서) 클라이언트 디바이스에서 생성된 데이터는 클라이언트 디바이스로부터 서버에서 수신될 수 있다.
본 명세서가 많은 특정한 사항들을 포함하지만, 이들은 본 개시내용의 범위의 또는 청구 범위의 제한으로서 해석되어서는 안 되고, 본 개시내용의 특정한 구현에 고유한 피쳐들의 설명으로서 해석되어야 한다. 별개의 구현들의 정황에서 본 명세서에서 설명된 소정 피쳐들은 또한, 조합하여 단일의 구현에서 조합하여 구현될 수 있다. 역으로, 단일 구현의 정황에서 설명된 다양한 피쳐들은 또한, 복수의 구현들에서 별개로 구현되거나 임의의 적절한 서브조합(subcombination)으로 구현될 수 있다. 게다가, 피쳐들이 상기에서 소정 조합으로 작용하는 것으로 설명되거나 심지어 이러한 것으로서 처음 청구되더라도, 청구된 조합으로부터의 하나 이상의 피쳐들은 일부 경우에는 그 조합으로부터 삭제될 수 있고, 청구된 조합은 서브조합이나 서브조합의 변형에 관한 것일 수도 있다.
유사하게, 동작들이 도면에서 특정 순서로 도시되더라도, 이것은, 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행될 것을 요구하거나, 예시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 소정 상황에서는, 멀티태스킹 및 병렬 처리가 유익할 수도 있다. 게다가, 전술된 실시예에서의 다양한 시스템 컴포넌트들의 분리는, 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트들 및 시스템들은 전체적으로 하나의 소프트웨어 제품으로 함께 통합되거나 복수의 소프트웨어 제품 내에 패키징될 수 있는 것으로 이해하여야 한다.
다수의 구현이 설명되었다. 그럼에도 불구하고, 본 개시내용의 사상과 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것을 이해할 것이다. 따라서, 다른 구현들도 이하의 청구항들의 범위 내에 있다. 예를 들어, 청구항에서 인용되는 액션들은 상이한 순서로 수행되어 여전히 바람직한 결과를 달성할 수 있다.

Claims (30)

  1. 방법(600)으로서,
    분산형 시스템(100)의 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량(usage)을 요구하는 고가용도 작업들(high-availability jobs)(122, 122a) 및 저가용도 작업들(low-availability jobs)(122, 122b)을 식별하는 단계;
    저가용도 작업들(122, 122b)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제1 할당량(quota)(Q1)을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로서 결정하는 단계;
    고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양에서, 용인된 이벤트(tolerated event)로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 뺀 것으로서 결정하는 단계;
    상기 분산형 시스템(100)의 상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436) 상에서 상기 작업들(122, 122a, 122b)을 실행하는 단계; 및
    상기 고가용도 작업들(122, 122a) 및 상기 저가용도 작업들(122, 122b) 양쪽 모두에 의한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 전체 이용량을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로 제약하는 단계
    를 포함하는 방법(600).
  2. 제1항에 있어서,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 데이터 처리 디바이스들(112), 네트워킹 시스템들(116, 426, 436), 전력 시스템들(424, 434) 또는 쿨링 시스템들(422, 432)을 포함하는 방법(600).
  3. 제2항에 있어서,
    상기 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로 이전(migrating)하거나 재실행하는 단계를 더 포함하는 방법(600).
  4. 제1항에 있어서,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 비일시적인 메모리 디바이스들(114)을 포함하는 방법(600).
  5. 제4항에 있어서,
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 재할당하지 않고서 상기 작업들(122, 122a, 122b)을 방치(leaving)하는 단계; 및
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)과 연관된 임의의 이용가능하지 않은 데이터(312)를 재구성하는 단계
    를 더 포함하는 방법(600).
  6. 제1항에 있어서,
    고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을,
    Figure pct00009
    로서 결정하는 단계를 더 포함하고,
    여기서, Q2는 상기 제2 할당량(Q2)이고, RN은 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RL은 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RI는 상기 용인된 이벤트로 인해 필요한 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 증가된 양인 방법(600).
  7. 제1항에 있어서,
    고가용도 작업들(122, 122a)에 이용가능한 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을,
    Figure pct00010
    로서 결정하는 단계를 더 포함하고,
    여기서, Q2는 상기 제2 할당량(Q2)이고, RN은 정상 동작들 동안에 이용가능한 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RL은 용인된 이벤트로 인해 손실된 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, x는 상기 용인된 이벤트에 대응하는 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436) 승수(multiplier)인 방법(600).
  8. 제7항에 있어서,
    상기 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 비일시적인 메모리 디바이스들(114)을 포함하는 방법(600).
  9. 제1항에 있어서,
    상기 제1 할당량(Q2)과 상기 제2 할당량(Q2)의 합을 최대 할당량(Q2)으로 제한하는 단계를 더 포함하는 방법(600).
  10. 제1항에 있어서,
    상기 고가용도 작업들(122, 122a)에 의한 상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량을 모니터링하는 단계; 및
    고가용도 작업(122, 122a)이 임계 이용량을 초과할 때, 상기 고가용도 작업(122, 122a)을 저가용도 작업(122, 122b)으로 다운그레이드하는 단계
    를 더 포함하는 방법(600).
  11. 제1항에 있어서,
    상기 용인된 이벤트 이전의 소정 시간 기간 동안 상기 저가용도 작업들(122, 122b) 중 적어도 일부를 보류(suspending)하거나 종료하는 단계를 더 포함하는 방법(600).
  12. 제1항에 있어서,
    특정 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로의 상기 작업들(122, 122a, 122b)의 할당 및 상기 분산형 시스템(100)의 시스템 계층(400, 400a, 400b)에 기초하여, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 결정하는 단계를 더 포함하고, 상기 시스템 계층(400, 400a, 400b)은 활성 상태 또는 비활성 상태를 각각 갖는 시스템 도메인들(402, 402a, 402b, 402c, 402d)을 포함하는 방법(600).
  13. 제13항에 있어서,
    상기 시스템 계층(400, 400a, 400b)은 시스템 레벨들(1, 2, 3, 4)을 포함하고,
    상기 시스템 레벨들은,
    데이터 처리 디바이스들(112), 비일시적인 메모리 디바이스들(114) 또는 네트워크 인터페이스 제어기들(116)의 호스트 머신들(110)에 대응하는 제1 시스템 레벨(레벨 1) ― 각각의 호스트 머신(110)은 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―;
    상기 호스트 머신들(110, 430)을 하우징하는 랙들(430, 430a, 430n)의 전력 전달기들(434), 통신 전달기들(436) 또는 쿨링 전달기들(432)에 대응하는 제2 시스템 레벨(레벨 2) ― 상기 랙의 각각의 전력 전달기(434), 통신 전달기(436) 또는 쿨링 전달기(432)는 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―;
    연관된 랙들(430, 430a, 430n)을 갖는 셀들(200)의 전력 전달기들(424), 통신 전달기들(426) 또는 쿨링 전달기들(422)에 대응하는 제3 시스템 레벨 ― 상기 셀(200)의 각각의 전력 전달기(424), 통신 전달기(426) 또는 쿨링 전달기(422)는 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―; 및
    상기 셀들(200)의 분배 센터 모듈(410)에 대응하는 제4 시스템 레벨(레벨 4) ― 각각의 분배 센터 모듈(410)은 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―
    을 포함하는 방법(600).
  14. 시스템으로서,
    분산형 시스템(100)의 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436); 및
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)과 통신하는 컴퓨터 프로세서(202)
    를 포함하고,
    상기 컴퓨터 프로세서(202)는,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량을 요구하는 고가용도 작업들(122, 122a) 및 저가용도 작업들(122, 122b)을 식별하고;
    저가용도 작업들(122, 122b)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제1 할당량(Q2)을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로서 결정하고;
    고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양에서, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 뺀 것으로서 결정하고;
    상기 분산형 시스템(100)의 상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436) 상에서 상기 작업들(122, 122a, 122b)을 실행하고;
    상기 고가용도 작업들(122, 122a) 및 상기 저가용도 작업들(122, 122b) 양쪽 모두에 의한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 전체 이용량을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로 제약하는 시스템.
  15. 제14항에 있어서,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 데이터 처리 디바이스들(112), 네트워킹 시스템들(116, 426, 436), 전력 시스템들(424, 434) 또는 쿨링 시스템들(422, 432)을 포함하는 시스템.
  16. 제15항에 있어서,
    상기 컴퓨터 프로세서(202)는, 상기 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로 이전하거나 재실행하는 시스템.
  17. 제1항에 있어서,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 비일시적인 메모리 디바이스들(114)을 포함하는 시스템.
  18. 제17항에 있어서,
    상기 컴퓨터 프로세서(202)는,
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 재할당하지 않고서 상기 작업들(122, 122a, 122b)을 방치하고;
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)과 연관된 임의의 이용가능하지 않은 데이터(312)를 재구성하는 시스템.
  19. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는, 고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을,
    Figure pct00011
    로서 결정하고,
    여기서, Q2는 상기 제2 할당량(Q2)이고, RN은 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RL은 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RI는 상기 용인된 이벤트로 인해 필요한 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 증가된 양인 시스템.
  20. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는, 고가용도 작업들(122, 122a)에 이용가능한 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을,
    Figure pct00012
    로서 결정하고,
    여기서, Q2는 상기 제2 할당량(Q2)이고, RN은 정상 동작들 동안에 이용가능한 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, RL은 용인된 이벤트로 인해 손실된 자원(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고, x는 상기 용인된 이벤트에 대응하는 자원 승수인 시스템.
  21. 제20항에 있어서,
    상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)은 비일시적인 메모리 디바이스들(114)을 포함하는 시스템.
  22. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는 상기 제1 할당량(Q2)과 상기 제2 할당량(Q2)의 합을 최대 할당량(Q2)으로 제한하는 시스템.
  23. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는,
    상기 고가용도 작업들(122, 122a)에 의한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량을 모니터링하고;
    고가용도 작업(122, 122a)이 임계 이용량을 초과할 때, 상기 고가용도 작업(122, 122a)을 저가용도 작업(122, 122b)으로 다운그레이드하는 시스템.
  24. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는 상기 용인된 이벤트 이전의 소정 시간 기간 동안 상기 저가용도 작업들(122, 122b) 중 적어도 일부를 보류하거나 종료하는 시스템.
  25. 제14항에 있어서,
    상기 컴퓨터 프로세서(202)는, 특정 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로의 상기 작업들(122, 122a, 122b)의 할당 및 상기 분산형 시스템(100)의 시스템 계층(400, 400a, 400b)에 기초하여, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 결정하고, 상기 시스템 계층(400, 400a, 400b)은 활성 상태 또는 비활성 상태를 각각 갖는 시스템 도메인들(402, 402a, 402b, 402c, 402d)을 포함하는 시스템.
  26. 제25항에 있어서,
    상기 시스템 계층(400, 400a, 400b)은 시스템 레벨들을 포함하고,
    상기 시스템 레벨들은,
    데이터 처리 디바이스들(112), 비일시적인 메모리 디바이스들(114) 또는 네트워크 인터페이스 제어기들(116)의 호스트 머신들(110)에 대응하는 제1 시스템 레벨(레벨 1) ― 각각의 호스트 머신(110)은 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―;
    상기 호스트 머신들(110, 430)을 하우징하는 랙들(430, 430a, 430n)의 전력 전달기들(434), 통신 전달기들(436) 또는 쿨링 전달기들(432)에 대응하는 제2 시스템 레벨(레벨 2) ― 상기 랙의 각각의 전력 전달기(434), 통신 전달기(436) 또는 쿨링 전달기(432)는 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―;
    연관된 랙들(430, 430a, 430n)을 갖는 셀들(200)의 전력 전달기들(424), 통신 전달기들(426) 또는 쿨링 전달기들(422)에 대응하는 제3 시스템 레벨(레벨 3) ― 상기 셀(200)의 각각의 전력 전달기(424), 통신 전달기(426) 또는 쿨링 전달기(422)는 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―; 및
    상기 셀들(200)의 분배 센터 모듈(410)에 대응하는 제4 시스템 레벨(레벨 4) ― 각각의 분배 센터 모듈(410)은 시스템 도메인(402, 402a, 402b, 402c, 402d)을 가짐 ―
    을 포함하는 시스템.
  27. 방법(700)으로서,
    분산형 시스템(100)의 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 이용량을 요구하는 고가용도 작업들(122, 122a) 및 저가용도 작업들(122, 122b)을 식별하는 단계;
    저가용도 작업들(122, 122b)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제1 할당량(Q2)을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로서 결정하는 단계;
    자원 유형에 기초하여, 고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)을 결정하는 단계 ― 스토리지 용량 자원들(114, 116, 422, 424, 426, 432, 434, 436)의 경우, 고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)은 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양이고,
    스토리지 대역폭 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 경우, 고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)은, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양에서, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 빼고, 상기 용인된 이벤트로 인해 필요한 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 증가된 양을 뺀 것이고,
    비-스토리지 자원 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 경우, 고가용도 작업들(122, 122a)에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 제2 할당량(Q2)은, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양에서, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 뺀 것임 ―;
    상기 분산형 시스템(100)의 상기 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436) 상에서 상기 작업들(122, 122a, 122b)을 실행하는 단계; 및
    상기 고가용도 작업들(122, 122a) 및 상기 저가용도 작업들(122, 122b) 양쪽 모두에 의한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 전체 이용량을, 정상 동작들 동안에 이용가능한 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양으로 제약하는 단계
    를 포함하는 방법(700).
  28. 제27항에 있어서,
    비-스토리지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 경우, 상기 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로 이전하거나 재실행하는 단계를 더 포함하는 방법(700).
  29. 제27항에 있어서,
    스토리지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 경우,
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 할당된 작업들(122, 122a, 122b)을 나머지 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)에 재할당하지 않고서 상기 작업들(122, 122a, 122b)을 방치하는 단계; 및
    상기 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)과 연관된 임의의 이용가능하지 않은 데이터를 재구성하는 단계
    를 더 포함하는 방법(700).
  30. 제27항에 있어서,
    특정 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)로의 상기 작업들(122, 122a, 122b)의 할당 및 상기 분산형 시스템(100)의 시스템 계층(400, 400a, 400b)에 기초하여, 용인된 이벤트로 인해 손실된 자원들(110, 112, 114, 116, 422, 424, 426, 432, 434, 436)의 양을 결정하는 단계를 더 포함하고, 상기 시스템 계층(400, 400a, 400b)은 활성 상태 또는 비활성 상태를 각각 갖는 시스템 도메인들(402, 402a, 402b, 402c, 402d)을 포함하는 방법(700).
KR1020167020811A 2014-01-31 2015-01-23 데이터 센터들에서의 효율적인 자원 이용 KR101719116B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/169,357 2014-01-31
US14/169,357 US9213576B2 (en) 2014-01-31 2014-01-31 Efficient resource utilization in data centers
PCT/US2015/012629 WO2015116490A1 (en) 2014-01-31 2015-01-23 Efficient resource utilization in data centers

Publications (2)

Publication Number Publication Date
KR20160097372A true KR20160097372A (ko) 2016-08-17
KR101719116B1 KR101719116B1 (ko) 2017-03-22

Family

ID=53754896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020811A KR101719116B1 (ko) 2014-01-31 2015-01-23 데이터 센터들에서의 효율적인 자원 이용

Country Status (8)

Country Link
US (2) US9213576B2 (ko)
EP (1) EP3100172B1 (ko)
KR (1) KR101719116B1 (ko)
CN (1) CN105849715B (ko)
AU (1) AU2015211224B2 (ko)
DE (1) DE202015009295U1 (ko)
GB (2) GB2592165B (ko)
WO (1) WO2015116490A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191771B2 (en) * 2015-09-18 2019-01-29 Huawei Technologies Co., Ltd. System and method for resource management
US10313429B2 (en) * 2016-04-11 2019-06-04 Huawei Technologies Co., Ltd. Distributed resource management method and system
US10782757B2 (en) * 2017-08-09 2020-09-22 Equinix, Inc. Rack level power control
CN109729113B (zh) * 2017-10-27 2021-03-23 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、服务器系统和计算机程序产品
WO2019125434A1 (en) * 2017-12-20 2019-06-27 James Giles Joint transmission commitment simulation
CN111858030B (zh) * 2020-06-17 2024-03-22 北京百度网讯科技有限公司 作业的资源处理方法、装置、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153748A1 (en) * 2002-12-19 2004-08-05 Alfio Fabrizi Method for configuring a data processing system for fault tolerance
US20040210895A1 (en) * 2003-04-17 2004-10-21 Esfahany Kouros H. Method and system for making an application highly available
US20070078982A1 (en) * 2005-09-30 2007-04-05 Mehrdad Aidun Application of virtual servers to high availability and disaster recovery soultions
US20130132958A1 (en) * 2011-11-19 2013-05-23 International Business Machines Corporation Work distribution and management in high availability cluster environment of resource adapters

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040100982A1 (en) * 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
US7225223B1 (en) * 2000-09-20 2007-05-29 Hewlett-Packard Development Company, L.P. Method and system for scaling of resource allocation subject to maximum limits
US20030212898A1 (en) 2002-05-09 2003-11-13 Doug Steele System and method for remotely monitoring and deploying virtual support services across multiple virtual lans (VLANS) within a data center
JP4755596B2 (ja) 2003-12-11 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送エラー検査
JP4935595B2 (ja) * 2007-09-21 2012-05-23 富士通株式会社 ジョブ管理方法、ジョブ管理装置およびジョブ管理プログラム
US7801994B2 (en) 2007-11-29 2010-09-21 Hitachi, Ltd. Method and apparatus for locating candidate data centers for application migration
JP2009217587A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd バッチ処理装置及び方法
US9063738B2 (en) 2010-11-22 2015-06-23 Microsoft Technology Licensing, Llc Dynamically placing computing jobs
US8713183B2 (en) 2011-03-27 2014-04-29 Hewlett-Packard Development Company, L.P. Resource compatability for data centers
US8554918B1 (en) * 2011-06-08 2013-10-08 Emc Corporation Data migration with load balancing and optimization
US8549519B2 (en) 2011-08-19 2013-10-01 Hitachi, Ltd. Method and apparatus to improve efficiency in the use of resources in data center
US10180807B2 (en) 2011-10-12 2019-01-15 Tata Consultancy Services Limited Method and system for consolidating a plurality of heterogeneous storage systems in a data center
US9170859B2 (en) * 2012-06-07 2015-10-27 Apple Inc. Targeted memory pressure event notifications
US9304803B2 (en) * 2012-11-12 2016-04-05 Vmware, Inc. Cooperative application workload scheduling for a consolidated virtual environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153748A1 (en) * 2002-12-19 2004-08-05 Alfio Fabrizi Method for configuring a data processing system for fault tolerance
US20040210895A1 (en) * 2003-04-17 2004-10-21 Esfahany Kouros H. Method and system for making an application highly available
US20070078982A1 (en) * 2005-09-30 2007-04-05 Mehrdad Aidun Application of virtual servers to high availability and disaster recovery soultions
US20130132958A1 (en) * 2011-11-19 2013-05-23 International Business Machines Corporation Work distribution and management in high availability cluster environment of resource adapters

Also Published As

Publication number Publication date
EP3100172A1 (en) 2016-12-07
US9823948B2 (en) 2017-11-21
GB2592165A (en) 2021-08-18
US20150220363A1 (en) 2015-08-06
GB201614046D0 (en) 2016-09-28
CN105849715B (zh) 2019-05-28
AU2015211224A1 (en) 2016-06-09
US20160077883A1 (en) 2016-03-17
GB202107020D0 (en) 2021-06-30
EP3100172B1 (en) 2023-03-29
WO2015116490A1 (en) 2015-08-06
US9213576B2 (en) 2015-12-15
GB2538198A (en) 2016-11-09
GB2592165B (en) 2021-11-03
DE202015009295U1 (de) 2017-01-26
AU2015211224B2 (en) 2016-12-22
GB2538198B (en) 2021-07-07
CN105849715A (zh) 2016-08-10
KR101719116B1 (ko) 2017-03-22
EP3100172A4 (en) 2017-11-22

Similar Documents

Publication Publication Date Title
US11113150B2 (en) Distributing data on distributed storage systems
AU2017201918B2 (en) Prioritizing data reconstruction in distributed storage systems
KR101719116B1 (ko) 데이터 센터들에서의 효율적인 자원 이용
JP6798960B2 (ja) 仮想化ストレージエリアネットワークのための仮想ディスクブループリント
KR101813431B1 (ko) 분산형 스토리지 시스템에서 데이터를 분배하는 방법 및 시스템
US9311194B1 (en) Efficient resource utilization in data centers
US9898360B1 (en) Preventing unnecessary data recovery
CN104238955A (zh) 一种存储资源虚拟化按需分配的装置和方法

Legal Events

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