KR20130123387A - 클러스터 캐시 코히어런시 프로토콜 - Google Patents

클러스터 캐시 코히어런시 프로토콜 Download PDF

Info

Publication number
KR20130123387A
KR20130123387A KR1020137010492A KR20137010492A KR20130123387A KR 20130123387 A KR20130123387 A KR 20130123387A KR 1020137010492 A KR1020137010492 A KR 1020137010492A KR 20137010492 A KR20137010492 A KR 20137010492A KR 20130123387 A KR20130123387 A KR 20130123387A
Authority
KR
South Korea
Prior art keywords
click
cluster
caching
cache
logic
Prior art date
Application number
KR1020137010492A
Other languages
English (en)
Inventor
아르빈드 프루씨
램 키쇼어 조리
아브히지트 피. 골
Original Assignee
마벨 월드 트레이드 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마벨 월드 트레이드 리미티드 filed Critical 마벨 월드 트레이드 리미티드
Publication of KR20130123387A publication Critical patent/KR20130123387A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5683Storage of data provided by user terminals, i.e. reverse caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

클러스터 캐시 코히어런시 프로토콜과 관련된 시스템, 방법, 및 다른 실시예들이 기술된다. 일 실시예에서 장치는 컴퓨팅 머신과 관련(association)된 캐시로서 구성된 비-일시적(non-transitory) 저장 매체를 포함한다. 컴퓨팅 머신은 저장 디바이스에 대한 액세스를 공유하는 컴퓨팅 머신들의 클러스터의 멤버(member)이다. 클러스터 캐싱 로직이 상기 컴퓨팅 머신과 관련된다. 상기 클러스터 캐싱 로직은 저장 디바이스 내의 데이터에 대한 캐싱 동작들을 수행하는 클러스터 캐싱 로직들의 클리크(clique)의 동작적 상태(operational status)를 결정하기 위하여 다른 컴퓨팅 머신들과 관련된 클러스터 캐싱 로직과 통신하도록 구성된다. 상기 클러스터 캐싱 로직은 또한 상기 클리크 내의 상기 클러스터 캐싱 로직의 멤버십 상태에 적어도 부분적으로 근거하여 상기 캐시 내에 상기 저장 디바이스로부터의 데이터의 캐싱을 선택적으로 인에이블하도록 구성된다.

Description

클러스터 캐시 코히어런시 프로토콜{CLUSTER CACHE COHERENCY PROTOCOL}
본 출원은 2010년 10월 25일 출원된 미국 가 특허출원 제 61/406,428호에 대한 우선권의 이익을 주장하며, 상기 가 특허출원은 그 전체가 본 명세서에 참조로서 포함된다.
여기에서 제공되는 배경 기술은 본 발명의 내용을 개괄적으로 제시하기 위한 목적에서 제공되는 것이다. 이 배경 기술 설명란에 기술된 정도의 내용이 본 발명의 발명자들의 발명에 속하는 것이라면 이 기술 내용은 물론, 출원 당시 선행 기술이라고 단서를 달지 않은 발명의 양상들은 명시적으로든 암묵적으로든 본 출원 발명에 대한 선행 기술로서 인정하는 것이 아니다.
저장 영역 네트워크(SAN; Storage Area Network)는 수 개의 컴퓨팅 머신들 또는 서버들의 클러스터에 의해 공유될 수 있는 대량의 저장 용량을 제공한다. 머신들은 일반적으로 인터넷(iSCSI) 또는 파이버 채널(fibre channel) 연결을 통해 SCSI 프로토콜을 사용하여 SAN과 통신한다. 종종, 머신은 상기 머신과 SAN 사이의 데이터 흐름을 제어하는 SCSI 인터페이스 카드 또는 제어기를 포함할 것이다. 머신에 대해, SAN은 마치 그것이 운영 시스템에 논리적으로 연결되어있는 것처럼 나타날 것이다. 클러스터 내의 머신들 모두가 SAN 내의 공유 메모리(shared memory)에 대한 액세스를 가지기 때문에, 다양한 머신들 상의 캐시들 사이에서 코히어런시를 유지하는 것에 있어서의 곤란성을 방지하기 위하여 개별 머신들 상의 캐싱(caching)이 종종 디스에이블된다.
일 실시예에서 장치는 컴퓨팅 머신과 관련(association)된 캐시로서 구성된 비-일시적(non-transitory) 저장 매체를 포함한다. 컴퓨팅 머신은 저장 디바이스에 대한 액세스를 공유하는 컴퓨팅 머신들의 클러스터의 멤버(member)이다. 클러스터 캐싱 로직이 상기 컴퓨팅 머신과 관련된다. 상기 클러스터 캐싱 로직은 저장 디바이스 내의 데이터에 대한 캐싱 동작들을 수행하는 클러스터 캐싱 로직들의 클리크(clique)의 동작 상태(operational status)를 결정하기 위하여 다른 컴퓨팅 머신들과 관련된 클러스터 캐싱 로직과 통신하도록 구성된다. 상기 클러스터 캐싱 로직은 또한 상기 클리크 내의 상기 클러스터 캐싱 로직의 멤버십 상태에 적어도 부분적으로 근거하여 상기 캐시 내에 상기 저장 디바이스로부터의 데이터의 캐싱을 선택적으로 인에이블하도록 구성된다.
일 실시예에서, 상기 클러스터 캐싱 로직은 상기 클러스터 캐싱 로직이 상기 클리크의 멤버일 때 상기 저장 디바이스로부터의 데이터의 캐싱을 인에이블하고, 그리고 상기 클러스터 캐싱 로직이 상기 클리크의 멤버가 아닐 때 캐싱을 디스에이블하도록 구성된다. 일 실시예에서, 상기 클러스터 캐싱 로직은, 상기 클리크의 헬스 상태(health status)가 저하(degrade)될 때 상기 저장 디바이스로부터의 데이터의 캐싱을 디스에이블하도록 구성된다. 일 실시예에서, 상기 클러스터 캐싱 로직은 상기 컴퓨팅 머신이 상기 캐시 내에 캐시된 가상 디스크 파일을 갖는 가상 머신의 호스팅을 중단할 때 상기 컴퓨팅 머신의 캐시 내의 데이터를 무효화(invalidate)하도록 구성된다.
다른 실시예에서, 본 방법은 공유 저장 디바이스로부터의 데이터를 캐시하는 캐싱 로직들의 클리크 내의 멤버십을 결정하는 단계, 그리고 상기 클리크에서의 멤버십이 확립되면, 캐시 내에 상기 공유 저장 디바이스로부터의 데이터의 캐싱을 인에이블하는 단계를 포함한다.
일 실시예에서, 본 방법은 또한 다른 클리크 멤버들에게 헬스 체크 메시지를 브로드캐스팅하는 단계; 상기 다른 클리크 멤버들로부터의 응답에 대해 모니터링하는 단계; 그리고 상기 다른 클리크 멤버들로부터 응답이 수신되지 않으면 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지(clique degradation message)를 브로드캐스팅하는 단계를 포함한다. 일 실시예에서, 본 방법은 가상 머신이 삭제되면 가상 머신의 가상 디스크에 대응하는 캐시 내의 데이터를 무효화하는 단계를 포함한다. 일 실시예에서, 본 방법은 가상 머신이 다른 호스트 컴퓨팅 머신으로 이동하면 가상 머신의 가상 디스크에 대응하는 캐시 내의 데이터를 무효화하는 단계를 포함한다. 일 실시예에서, 본 방법은 상기 클리크의 멤버로부터 수신된 클리크 저하 메시지를 수신함에 응답하여 캐싱을 디스에이블하는 단계를 포함한다.
일 실시예에서, 본 방법은 공유 메모리 디바이스에 대한 배타적(exclusive) 액세스를 예약하는 상기 클리크 내의 요청 클러스터 캐싱 로직(requesting cluster caching logic)으로부터 영구 예약 메시지(persistent reserve message)를 검출하는 단계; 상기 공유 저장 디바이스가 예약되어 있는 동안 상기 요청 클러스터 캐싱 로직에 의해 기록된 메모리 블록들의 리스트를 레코딩하는 단계; 상기 요청 클러스터 캐싱 로직으로부터의 철회(revocation) 메시지를 검출하는 단계; 상기 클리크 내의 상기 클러스터 캐싱 로직들에 상기 메모리 블록들의 리스트를 브로드캐스팅하는 단계; 및 응답이 상기 클리크의 모든 멤버들로부터 수신되지 않으면 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지를 브로드캐스팅하는 단계를 포함한다.
다른 실시예에서, 디바이스는 물리적 컴퓨팅 머신에 결합하도록 구성된 클러스터 캐시 제어기를 포함한다. 상기 클러스터 캐시 제어기는 공유 저장 디바이스로부터의 데이터를 캐시하는 클러스터 캐시 제어기들의 클리크의 헬스 상태를 평가(assess)하고; 상기 클리크와 관련한 상기 클러스터 캐시 제어기의 멤버십 상태를 결정하고; 그리고 상기 클러스터 캐시 제어기가 상기 클리크의 멤버이고 상기 클리크의 헬스 상태가 저하되어 있지 않다면, 상기 물리적 컴퓨팅 머신와 관련된 캐시 내의 캐싱을 인에이블하도록 구성된다.
본 명세서에 포함되며 본 명세서의 일부를 구성하는 첨부의 도면들은 본 발명의 다양한 시스템, 방법, 및 다른 실시예들을 도시한다. 도면에서 도시된 구성요소의 경계들(예컨대, 박스, 박스들의 그룹, 또는 다른 형상들)은 상기 경계들의 일 예를 나타낸다. 당업자는 일부 예들에서 일 구성요소가 복수의 구성요소들로서 설계되거나 또는 복수의 구성 요소들이 일 구성요소로서 설계될 수 있음을 이해할 것이다. 일부 예들에서, 다른 구성요소의 내부 컴포넌트로서 도시된 구성요소가 외부 컴포넌트로 구현될 수 있으며 그 역도 성립한다. 또한, 구성요소들은 스케일되어 도시되지 않을 수 있다.
도 1은 클러스터링된 볼륨들(clustered columes)을 위한 클러스터 캐시 코히어런시 프로토콜과 관련된 시스템의 일 실시예를 도시한다.
도 2는 클러스터 캐시 코히어런스 프로토콜과 관련된 방법의 일 실시예를 도시한다.
도 3은 클러스터 캐시 코히어런시 프로토콜과 관련된 방법의 일 실시예를 도시한다.
도 4는 클러스터 캐시 코히어런시 프로토콜과 관련된 방법의 일 실시예를 도시한다.
도 5는 클러스터 캐시 코히어런시 프로토콜과 관련된 방법의 일 실시예를 도시한다.
도 6은 클러스터 캐시 코히어런시 프로토콜과 관련된 시스템의 일 실시예를 도시한다.
CPU 성능이 향상되면서, 가상 머신이 널리 사용되게 되었다. Vmware 및 Windows Hyper-V와 같은 운영 시스템은 단일의 물리적 머신(physical machine)으로 하여금 운영 시스템의 복수의 인스턴스들(상기 인스턴스들 각각은 완전히 독립적인 머신으로서 행동함)을 실행(run)할 수 있게 한다. 가상 머신의 운영 시스템 인스턴스는 종종 SAN에 저장되는 파일의 형태로 가상 "디스크"에 액세스한다. SAN 상에 가상 머신의 가상 디스크 파일을 저장하는 것은, 가상 머신이 물리적 머신들 사이로 끊김없이(seamelessly) 이동될 수 있게 한다. SAN이 가상화 클러스터(virtualization cluster) 내의 두 개 이상의 물리적 머신들에 의해 액세스될 수 있는 한, 가상 머신은 머신들 사이에서 이동될 수 있다.
SAN에 액세스하는 것은 전형적으로 고 레이턴시(high latency)를 수반하고, 그럼으로써 결과적으로 가상 머신 가상 디스크 파일을 캐시할 필요가 있게 한다. 그러나, 동일한 SAN에 액세스하는 복수의 물리적 머신들의 가상화 클러스터를 사용하여 캐시 코히어런스가 처리(address)되어야 한다. 가상 머신이 하나의 물리적 머신(A)으로부터 다른 물리적 머신(B)로 이동하면, B가 상기 이동된 가상 머신으로부터 데이터를 캐시하기 시작하기 전에, 상기 가상 머신을 위한 머신 A 상의 캐시가 무효화될 필요가 있다. 가상 머신에 의해 사용되는 저장은 블록 디바이스(SAN)의 최상위 파일(file on top of block deivce)의 형태, 예컨대 vmfs 상의 vmdk 파일들일 수 있다. (그러한 경우에, 블록 디바이스는 일반적으로 vmfs와 같은 클러스터-인식(cluster-aware) 파일 시스템으로 포맷된다). 일반적으로 블록 층의 최상부에서 동작하는 물리적 머신의 캐시는 어느 블록들이 임의의 주어진 가상 머신의 파일과 관련되는지를 식별하지 못할 수 있고 따라서 어느 블록들이 무효화되어야만 하는지를 식별하지 못할 것이다.
본 명세서에는 클러스터 캐시 코히어런시 프로토콜과 관련된 예시적인 시스템들, 방법들, 및 다른 실시예들이 기술된다. 클러스터 코히어런시 프로토콜을 사용하여, 저장 디바이스에 대한 액세스를 공유하는 컴퓨팅 머신들의 클러스터는 캐시 코히어런시 문제를 동적으로 해결하는 한편 로컬 캐싱을 수행할 수 있다. 코히어런시 프로토콜은, 클러스터 내의 개별 컴퓨팅 머신이 상기 컴퓨팅 머신들 사이에서 캐시 코히어런시를 용이하게 하기 위해 협력(collaboration)할 수 있게 한다. 일부 실시예들에서, 컴퓨팅 머신의 클러스터는 복수의 가상 머신들을 호스팅하는 컴퓨팅 머신들의 가상화 클러스터이다.
클러스터된 캐시 코히어런시 프로토콜을 사용하면, 캐싱 동작들을 수행하기 위한 클러스터 내의 컴퓨팅 머신을 위한 권리(right)가 동일한 공유 저장 디바이스로부터 캐싱하는 머신들의 클리크에서의 멤버십에 의존한다. 클리크 내의 컴퓨팅 머신들은 상기 클리크가 "헬시(healthy)"(예컨대, 멤버들 사이의 통신이 가능함)한지를 결정하기 위하여 서로 통신한다. 클리크의 멤버들은 프로토콜을 준수하며 프로토콜에 따라 캐싱 관련 동작들을 수행한다. 클리크가 헬시한 한, 클리크 멤버들은 프로토콜을 준수하고 프로토콜에 따라 캐싱 관련 동작들을 수행한다. 클리크가 헬시하고 그리고 클리크가 프로토콜을 따르는 한, 클리크의 멤버들 사이의 캐시 코히어런시가 유지될 수 있다.
가상 머신들은 가상 머신을 위한 가상 디스크로서 기능하는 저장 장치(storage)의 전용 블록(dedicated block)에 액세스하는 경향이 있기 때문에, 가상 머신들은 일반적으로 다른 가상 머신들에 할당된 저장장치의 블록들에 액세스하지 않는다. 이는 본 명세서에서 기술된 클러스 캐시 코히어런시 프로토콜을 가상 머신 환경에서 사용하기에 적합하게 만드는데, 그 이유는 이것이 가상 머신으로 하여금 다른 호스트 머신으로 끊김없이 이동될 수 있게 하는 동시에 호스트 머신 상에 가상 머신의 가상 디스크 파일의 캐싱을 용이하게 해주기 때문이다.
도 1을 참조로, 클러스터 캐시 코히어런시 프로토콜과 관련된 시스템(100)의 일 실시예가 도시된다. 시스템(100)은 저장 디바이스(170)에 대한 액세스를 공유하는 3개의 컴퓨팅 머신들(110, 130, 150)을 포함한다. 컴퓨팅 머신들(110, 130, 150)은 캐시(115, 135, 155)로서 사용하도록 구성된 적어도 하나의 프로세서(도시 생략) 및 로컬 메모리를 포함한다. 세 개의 컴퓨팅 머신들만이 도 1에 도시되어 있으나, 본 명세서에 기술된 클러스터 캐시 코히어런시 프로토콜은 임의의 개수의 컴퓨팅 머신들과 사용될 수 있다. 머신들 사이에서 캐시 코히어런시를 용이하게 하기 위하여, 컴퓨팅 머신들(110, 130, 150)에 대한 로컬 캐싱을 각각 제어하는 클러스터 캐싱 로직들(120, 140, 160) 사이에 클러스터 캐시 코히어런시 프로토콜이 확립된다.
일 실시예에서, 클러스터 캐시 코히어런시 프로토콜은 공유 블록 저장 디바이스(예컨대, SAN)에 액세스하는 가상화 클러스터 내의 복수의 컴퓨팅 머신들에 걸쳐 캐시 코히어런시를 확립하기 위하여 시맨틱스(semantics)를 제공하는 대역외(out-of-band)(데이터 경로 외부의) 프로토콜이다. 일부 실시예들에서, 클러스터 캐싱 로직들(120, 140, 160)은 컴퓨팅 머신에 인스톨된 SCSI 인터페이스 카드 상에 구현된다. 클러스터 캐싱 로직은 Microsoft 운영 시스템 내에서 "개시자(initiator)"의 부분으로서 구현될 수 있다. 클러스터 캐싱 로직들은 다른 캐싱 로직들과 통신할 수 있으며 그리고 공유 저장 디바이스로부터의 데이터의 물리적 컴퓨팅 머신 상의 캐싱을 인에이블/디스에이블할 수 있는 임의의 논리 유닛에 구현될 수 있다.
하기의 설명의 목적으로, 단 하나의 컴퓨팅 머신(110), 관련된 캐시(115), 및 클러스터 캐싱 로직(120)의 동작이 설명될 것이다. 컴퓨팅 머신들(130, 150), 관련된 캐시들(135, 155) 및 클러스터 캐싱 로직들(140, 160)은 대응하는 방식으로 동작한다. 클러스터 캐시 코히어런시 프로토콜의 일 실시예에 따라, 클러스터 캐싱 로직(120)은 그것이 클리크(105)의 멤버일 때 그리고 그 클리크가 헬시할 때 캐시(115)에의 캐싱을 인에이블한다. 클러스터 캐싱 로직은 그것이 클리크의 다른 모든 멤버들과 통신할 수 있을 때 상기 클리크의 멤버이다. 따라서, 클러스터 캐싱 로직(120)은 클리크의 멤버일 수 있고 상기 클러스터 캐싱 로직(120)이 클리크(105)(즉, 클러스터 캐싱 로직들(140, 160))의 다른 멤버들과 통신할 수 있을 때 컴퓨팅 머신(110)을 위한 캐싱 동작들을 인에이블할 수 있다.
일 실시예에서, 정상 동작(normal operation) 중에, 클러스터 내의 각각의 물리적 컴퓨팅 머신이 공유 저장 디바이스(170)로부터의 메모리 블록들에 액세스하는 것으로 가정된다. 이는 가상 머신들이 일반적으로 메모리 블록들을 공유하지 않고 오히려 각각이 가상 디스크 파일로서의 사용을 위해 예약된 메모리 블록들의 세트에 액세스하는 가상화 클러스터에 대해 안전한 가정이다. 유지될 캐시 코히어런스에 대해, 클리크(105)는 공유 저장 디바이스(170)로부터의 데이터에 액세스하고 있는(그리고 캐싱할 수 있는) 모든 물리적 컴퓨팅 머신들(110, 130, 150)을 위한 클러스터 캐싱 로직(120, 140, 160)을 포함한다. 프로토콜에 따라, 클러스터 캐싱 로직이 다른 클러스터 캐싱 로직들과 통신할 수 없으면, 그것은 공유 저장 디바이스(170)로부터의 데이터에 대한 캐싱 동작들을 디스에이블해야만 하며 공유 저장 디바이스로부터의 관련된 캐시 내의 임의의 데이터를 무효화하여야 한다. 서로 통신하기 위하여 클러스터 캐싱 로직들에 의해 사용되는 네트워크 연결의 브레이크다운(breakdown)으로 인해 통신 실패가 발생할 수 있다.
클러스터 캐싱 로직(120, 140, 160)은 임의의 시간에 클리크로부터 등록(register) 또는 등록해제(de-register)할 수 있다. 클러스터 캐싱 로직(120, 140, 160)은 그것이 현재 클리크(105)의 부분이면 공유 저장 디바이스(170)를 위해 캐싱만을 할 수 있다. 클러스터 캐싱 로직이 클리크로부터 등록해제하면, 그것은 더 이상 공유 저장 디바이스(170)를 위한 캐싱 동작들을 수행하고 있지 않은 것으로 가정된다. 클러스터 캐싱 로직이 클리크(105)에 등록하면, 그것은 상기 클리크의 다른 멤버들과 동일하게(on par) 취급된다. 새로 등록된 클러스터 캐싱 로직이 클리크(105)를 위한 메시지들을 수신하기 시작하고 처리할 것이다.
도 2는 클러스터 캐시 코히어런시 프로토콜의 실행시 수행되는 클러스터 캐시 코히어런시 방법(200)의 일 실시예를 도시한다. 일부 실시예들에서, 방법(200)이 클러스터 캐싱 로직들(120, 140, 160)에 의해 수행된다. 단계(210)에서, 캐시 제어기들(예컨대, 클러스터 캐싱 로직들)의 클리크 내의 멤버십이 결정된다. 단계(220)에서, 클리크에서의 멤버십이 확립되면, 공유 저장 디바이스로부터의 데이터의 캐싱이 인에이블된다.
클러스터 캐싱 로직이 시동(boot up)될 때, 그것은 공유 저장 디바이스 상의 클러스터 코히어런트 캐싱을 수행하는 클리크의 부분인 피어 클러스터 캐싱 로직들의 리스트를 판독한다. 클러스터 캐싱 로직은 상기 리스트를 조사(go through)함으로써 그 자신을 클리크에 등록하려 한다. 임의의 다른 클러스터 캐싱 로직이 상기 클러스터 캐싱 로직으로부터의 메시지에 응답하면, 상기 클러스터 캐싱 로직은 그 클리크의 멤버이다. 이 시점에서부터 앞으로, 상기 클러스터 캐싱 로직은 공유 저장 디바이스에 대한 데이터의 캐싱을 인에이블하도록 허용된다. 상기 클러스터 캐싱 로직은 또한, 도 4와 관련하여 하기에서 기술될 바와 같이 헬스 체크 및 토큰 패싱을 수행하는 것을 포함하여, 상기 클리크에 참여할 것으로 예측된다.
도 3은 클러스터 캐시 코히어런시 프로토콜의 실행시 수행되는 클러스터 캐시 코히어런시 방법(300)의 일 실시예를 도시한다. 일부 실시예들에서, 방법(300)이 복수의 가상 머신들을 호스팅하는 가상화 클러스터 내의 클러스터 캐싱 로직(120, 140, 160)(도 1)에 의해 수행된다. 단계(310)에서, 클리크 내의 멤버십으로 인해 캐싱이 인에이블된다. 단계(320)에서, 관련된 물리적 컴퓨팅 머신에 의해 호스트되는 가상 머신이 다른 호스트로 이동하고 있는지에 대한 결정이 이루어진다. 단계(330)에서, 관련된 물리적 컴퓨팅 머신에 의해 호스팅되는 가상 머신이 삭제되고 있는지에 대한 결정이 이루어진다. 가상 머신이 삭제되고 있다면, 단계(340)에서, 공유 저장 디바이스로부터의 캐시 내의 데이터가 무효화된다. 캐시 내의 데이터의 무효화는 캐싱 동작들을 디스에이블하기 위한 클러스터 캐싱 로직을 요구하지 않으며, 오히려 클러스터 캐싱 로직은 그것이 클리크의 멤버로 유지되는 한 캐싱을 계속할 수 있다.
단계(350)에서, 저하 메시지가 수신되었는지 여부에 대한 결정이 이루어진다. 저하 메시지가 수신되었다면, 단계(360)에서, 캐싱이 디스에이블된다. 도 4 및 5 각각과 관련하여 설명될 바와 같이, 저하 메시지들은 실패한 헬스 체크의 결과로서 또는 영구 예약(PERSISTANT RESERVATION) 요청의 처리 중에 클리크 멤버에 의해 브로드캐스팅될 수 있다. 단계(370)에서, 헬스 확인(health confirmation) 메시지가 수신될 때까지 캐싱이 디스에이블되고, 상기 헬스 확인 메시지가 수신된 시점에, 캐싱이 인에이블될 수 있다.
도 4는 클러스터 캐시 코히어런시 프로토콜의 실행시 수행되는 클러스터 캐시 코히어런시 방법(400)의 일 실시예를 도시한다. 일부 실시예들에서, 방법(400)은 클러스터 캐싱 로직(120, 140, 160)에 의해 수행된다. 단계(410)에서, 클리크 멤버로부터 토큰이 수신된다. 토큰을 수신함에 응답하여, 단계(420)에서, 헬스 체크 메시지가 클리크의 모든 멤버들에게 브로드캐스팅된다. 단계(430)에서, 모든 클리크 멤버들이 헬스 체크 메시지에 응답했는지 여부에 대해 결정이 이루어진다. 다른 클리크 멤버들 모두가 응답하지 않았다면, 단계(440)에서 저하 메시지가 모든 클리크 멤버들에게 송신된다. 다른 클리크 멤버들이 응답했다면, 단계(450)에서 헬스 확인 메시지가 모든 클리크 멤버들에게 송신된다. 단계(450)에서, 토큰이 다음 클리크 멤버에게 패스(pass)되어 상기 클리크에 대한 다음 헬스 체크를 수행한다.
도 5는 클러스터 캐시 코히어런시 프로토콜의 실행시 수행되는 영구 예약 방법(500)의 일 실시예를 도시한다. 일부 실시예들에서, 방법(500)은 가상화 클러스터의 메타데이터 마스터로서 기능하는 클러스터 캐싱 로직에 의해 수행된다. 메타 데이터 마스터는 클러스터 파일 시스템으로 공유 저장 디바이스를 포맷한다. 메타데이터 마스터는 클러스터 파일 시스템에 대한 메타데이터 수정(metadata modification)을 책임진다. 일부 환경에서, 클러스터 내의 클러스터 캐싱 로직은 공유 저장 디바이스에 SCSI 영구 예약 요청을 발행할 수 있다. 이 요청은 일반적으로 가상 머신들이 생성되거나 물리적 머신들 사이에서 이동될 때 필요한 메타데이터의 갱신을 허용하기 위하여 수행된다. 상기 요청에 따라, 클러스터 캐싱 로직은 일반적으로 새 물리적 머신에 대해 가상 머신의 존재를 반영하기 위하여 메타데이터를 갱신하기 위하여 기록 I/O 요청들을 수행할 것이다. 이 기록 동작들 동안, 다른 클러스터 캐싱 로직들은 저장 디바이스에 액세스할 수 없다.
일단 메타데이터가 갱신되면, 예약 클러스터 캐싱 로직은 영구 예약의 철회를 발행하며 캐싱 동작들이 종래의 가상 머신의 호스트와 관련되지 않은 클러스터 캐싱 로직들에 대해 재개(resume)될 수 있다. 도 3과 관련하여 위에서 이미 논의된 바와 같이, 클러스터 캐시 코히어런시 프로토콜에 따라, 클러스터 캐싱 로직은 상기 클러스터 캐싱 로직과 관련된 물리적 머신으로부터 이동하거나 제거되는 임의의 가상 머신을 위한 캐시 내의 데이터를 무효화한다.
방법(500, 510)으로 돌아가면, 메타데이터 마스터와 관련된 클러스터 캐싱 로직에 의해 영구 예약 메시지가 검출된다. 메시지는 클러스터 내의 임의의 클러스터 캐싱 로직에 의해 발행되었을 수 있으나, 메타데이터 마스터와 관련된 클러스터 캐싱 로직이 방법(500)을 수행한다. 단계(530)에서 철회 메시지가 검출될 때까지, 단계(520)에서, 예약 중에 기록된 메모리 블록들의 리스트가 레코딩된다. 단계(540)에서, 예약 중에 기록되었던 블록들의 리스트가 클리크의 모든 멤버들에게로의 브로드캐스트 메시지 내에 송신된다. 상기 메시지는 예약 중에 오버라이트(overwrite)된 메타데이터 블록들에 대해 그들의 캐시들을 무효화하게 할 것이다. 단계(550)에서, 클리크의 모든 멤버들에 의해 응답이 수신되었는지에 대한 결정이 이루어진다. 응답이 수신되었다면, 방법이 종료된다. 응답이 클리크의 모든 멤버들로부터 수신되지 않았다면, 단계(560)에서 저하 메시지가 클리크의 모든 멤버들에게 브로드캐스팅된다.
일 실시예에서, 클러스터 캐시 코히어런시 프로토콜은, 클러스터 캐싱 로직들 및/또는 클러스터 캐시 제어기들로 하여금 클리크에 참여하고, 클리크를 빠져나오고, 클리크 헬스 체크를 수행하고, 클리크 상태를 갱신하고, 캐시 내의 메모리 블록들의 범위를 무효화하고, 공유 캐시를 무효화하고, 캐싱을 중단하고, 캐싱을 시작하고, 그리고 토큰들을 패스할 수 있게 한다. 클러스터 캐시 코히어런시 프로토콜은 피어-투-피어 통신으로 하여금 어떠한 방식으로든 공유 저장 디바이스의 동작을 수정할 필요 없이 가상화 클러스터 내의 캐시 코히어런시를 유지할 수 있게 한다.
도 6은 클러스터 캐시 코히어런시 프로토콜과 관련된 클러스터된 가상화 환경(600)의 일 실시예를 도시한다. 가상화 환경(600)에서, 두 개의 물리적 컴퓨팅 머신들(610, 530)이 존재한다. 물리적 컴퓨팅 머신(610)은 가상 머신들(VM1, VM2)을 위한 호스트 머신으로서 동작하며, 한편 머신(630)은 가상 머신들(VM3, VM4)을 위한 호스트로서 동작한다. 공유 LUN(670)이 두 머신들(610, 630) 모두에 엑스포트(export)된다. 컴퓨팅 머신(610)은 이 가상화 환경에서 메타데이터 마스터로서 작동한다. 메타데이터 마스터는 LUN(670)을 클러스터 파일 시스템으로 포맷한다. 메타데이터 마스터는 클러스터 파일 시스템에 대한 메타데이터 수정을 책임진다.
각각의 가상 머신은 LUN(670) 상의 파일로서 그 고유의(own) 가상 디스크를 생성한다. 각각의 머신을 위한 가상 디스크 파일들이 LUN(670) 내의 대응하는 숫자로 라벨링된다("md"는 메타데이터를 나타내고 "u"는 비할당 블록들을 나타낸다). 메타데이터 마스터가 가상 디스크 파일들을 생성한 후, 개별 가상 머신들이 이들 파일들의 완전한 소유권을 보유한다. 그러나, 클러스터 파일 시스템의 메타데이터와 관련된 임의의 변경들은 메타데이터 마스터(즉, 머신(610))에 의해 처리된다. 각각의 컴퓨팅 머신(610, 630)은 클러스터 캐시 제어기(620, 640)에 의해 제어되는 캐시(615, 635)를 포함한다. 도 1 및 5와 관련하여 위에서 기술된 것과 같이, 그리고 하기의 설명과 같이, 클러스터 캐시 제어기들은 블록 저장 디바이스와 상호작용하며 클러스터 캐싱 로직들에 의해 수행되는 동작들과 유사한 동작들을 수행하는 인터페이스 카드의 일부일 수 있는 디바이스들이다.
정상 상태(steady state) 판독/기록 시나리오에서, 각각의 가상 머신은 LUN(670) 내의 그것의 각각의 메모리 블록들에 액세스한다. 여기에 기술된 클러스터 캐시 코히어런시 프로토콜하에서, LUN으로부터 캐시하기 위한 클러스터 캐시 제어기의 허가는 클러스터 캐시 제어기들 사이의 통신에 의해 확립된 것과 같은 클리크 내의 그들의 멤버십에 의존할 것이다.
가상 머신(VM1)이 컴퓨팅 머신(610)으로부터 컴퓨팅 머신(630)으로 이동하면, 클러스터 캐시 제어기(620)는 가상 머신(VM1)을 위한 가상화 운영 시스템이 VM 이동(Move) 동작을 개시하였다는 신호를 수신할 것이다. 응답으로, 클러스터 캐시 제어기(620)는 LUN(670)을 위한 그것의 로컬 캐시(615)을 무효화할 것이다. 메타데이터 마스터(컴퓨팅 머신(610))는 메타데이터가 갱신될 수 있도록 LUN(670)을 예약하기 위해 영구 예약을 발행할 것이다. 영구 예약이 시행 중(in effect)인 동안, 클러스터 캐시 제어기는 LUN(670)에 기록된 메모리 블록 식별자들을 레코딩할 것이다. 기록되고 있는 블록들은 주로 메타데이터일 것이므로, 컴퓨팅 머신(630)으로 하여금 필요할 때 LUN으로부터 업로드된 메타데이터를 재기록하게 한다. SCSI 메시지가 예약을 철회하게 한 후, 클러스터 캐시 제어기(620)는 먼저 클러스터 캐시 제어기(640)(클리크의 유일한 다른 멤버)에 메시지를 송신하여, 예약 동안에 기록된 블록들을 무효화할 것이다. 이는 캐시(635)가 오래된(stale) 메타데이터를 포함하지 않게 한다. 이 과정이 완료된 후, 클러스터 캐시 제어기(620)는 예약의 철회를 허용할 것이다.
컴퓨팅 머신(610)이 새 가상 머신을 생성하면, 이것은 LUN(670)을 예약하기 위하여 영구 예약 요청을 발행하고, 메타데이터를 갱신하여 새 가상 디스크 파일을 생성하고, 그리고 그것을 비할당 블록들로부터의 블록 범위들에 배정할 것이다. 영구 예약이 시행 중인 동안, 클러스터 캐시 제어기(620)는 LUN(670)에 기록될 메모리 블록 식별자들을 레코딩할 것이다. 기록되고 있는 블록들은 주로 메타데이터일 것이므로, 컴퓨팅 머신(630)으로 하여금 필요할 때 LUN으로부터 업로딩된 메타데이터를 재판독하게 한다. SCSI 메시지가 예약을 철회하게 한 후, 클러스터 캐시 제어기(620)는 먼저 클러스터 캐시 제어기(640)(클리크의 유일한 다른 멤버)에 메시지를 송신하여 예약 중에 기록된 블록들을 무효화할 것이다. 이는 캐시(635)가 오래된(stale) 메타데이터를 포함하지 않게 한다. 이 과정이 완료된 후, 클러스터 캐시 제어기(620)는 예약의 철회를 허용할 것이다.
다음은 본 명세서에서 사용되는 선택된 용어들의 정의들을 포함한다. 정의들은 구현에 사용될 수 있는 그리고 용어의 범주 내에 들어오는 다양한 예들 및/또는 형태들을 포함한다. 예들은 제한적인 것으로 의도된 것이 아니다. 단수형 그리고 복수형 용어들 둘 모두가 이 정의들 내에 속할 수 있다.
"일 실시예", "실시예", "일 예", "예" 등에 대한 참조는 그렇게 설명된 실시예(들) 또는 예(들)이 구체적인 피쳐, 구조, 특징, 특성, 요소, 또는 제한을 포함함을 나타낼 수 있으나, 모든 실시예 또는 예가 그 특정한 피쳐, 구조, 특징, 특성, 요소 또는 제한을 포함하는 것은 아니다. 또한, 용어 "일 실시예"의 반복적인 사용이 동일한 실시예를 지칭할 수도 있으나 반드시 동일한 실시예를 지칭할 필요는 없다.
본 명세서에서 사용되는 것과 같은 "로직"은, 기능(들) 또는 동작(들)을 수행하기 위한 그리고/또는 다른 로직, 방법 및/또는 시스템으로부터의 기능 또는 동작을 하게 하는, 하드웨어, 펌웨어, 비-일시적 매체에 저장된 또는 머신 상에서 실행되는 명령어들, 및/또는 이것들 각각의 조합을 포함하나 이들로 제한되는 것은 아니다. 로직은 소프트웨어 제어 마이크로프로세서, 이산 로직(예컨대, ASIC), 아날로그 회로, 디지털 회로, 프로그램된 로직 디바이스, 명령어들을 포함하는 메모리 디바이스 등을 포함할 수 있다. 로직은 하나 이상의 게이트들, 게이트들의 조합, 또는 다른 회로 컴포넌트들을 포함할 수 있다. 복수의 로직들이 기술되는 경우, 상기 복수의 로직들을 하나의 물리적 로직에 통합시키는 것이 가능할 수 있다. 유사하게, 단일 로직이 기술되는 경우, 복수의 물리적 로직들 사이에 그 단일 로직을 분포시키는 것이 가능할 수 있다. 본 명세서에 기술된 컴포넌트들 또는 기능들 중 하나 이상은 하나 이상의 로직 소자를 사용하여 구현될 수 있다.
설명의 간결성을 위하여, 예시된 방법들이 일련의 블록들로 도시 및 기술되어 있다. 일부 블록들이 도시되고 기술된 것과는 상이한 순서로 그리고/또는 다른 블록들과 동시에 발생할 수 있으므로 방법들이 블록들의 순서에 의해 제한되지 않는다.
용어 "포함하다(includes)" 또는 "포함하는(including)"가 상세한 설명 또는 청구항에서 사용되는 경우에, 상기 용어는 용어 "구성하는(comprising)"이 청구항에서 전이어로서 사용될 때 해석되는 것과 같은 유사한 방식으로 포괄적인 것으로 의도된 것이다.
예들을 설명함으로써 예시적인 시스템, 방법, 등이 예시되었고, 상기 예들이 상당히 자세히 기술되나, 그러한 세부사항들로 첨부된 청구항들의 범주를 한정하거나 어떠한 식으로든 제한하는 것은 본 출원인의 의도가 아니다. 물론, 여기에 기술된 시스템, 방법, 등을 기술하기 위한 목적의 컴포넌트들 또는 방법들의 모든 고려가능한 조합을 기술하는 것은 불가능하다. 따라서, 본 개시는 구체적인 세부사항들, 대표적 장치, 도시되고 설명된 예시적 예들로 제한되는 것이 아니다. 따라서, 본 출원은 첨부된 청구항의 범주 내에 들어오는 개조, 수정, 및 변형을 포괄하도록 의도된 것이다.

Claims (21)

  1. 장치로서,
    일 컴퓨팅 머신과 관련된 캐시로서 구성된 비일시적(non-transitory) 저장 매체와, 상기 컴퓨팅 머신은 저장 디바이스에 대한 액세스를 공유하는 컴퓨팅 머신들의 클러스터의 멤버이고; 그리고
    상기 컴퓨팅 머신과 관련된 클러스터 캐싱 로직을 포함하며, 상기 캐싱 로직은,
    타 컴퓨팅 머신들과 관련된 클러스터 캐싱 로직들과 통신하여 상기 저장 디바이스 내의 데이터에 대해 캐싱 동작들을 수행하는 클러스터 캐싱 로직들의 클리크의 동작 상태를 결정하고; 그리고
    상기 클리크 내의 상기 클러스터 캐싱 로직의 멤버십 상태에 적어도 부분적으로 근거하여 상기 저장 디바이스로부터의 데이터의 상기 캐시 내에의 캐싱을 선택적으로 인에이블하도록 된 것을 특징으로 하는 장치.
  2. 제1 항에 있어서,
    상기 클러스터 캐싱 로직은 상기 클러스터 캐싱 로직이 상기 클리크의 멤버일 때 상기 저장 디바이스로부터의 데이터의 캐싱을 인에이블하고 그리고 상기 클러스터 캐싱 로직이 상기 클리크의 멤버가 아닐 때 캐싱을 디스에이블하도록 된 것을 특징으로 하는 장치.
  3. 제1 항에 있어서,
    상기 클러스터 캐싱 로직은 상기 클리크의 헬스 상태가 저하되어 있을 때 상기 저장 디바이스로부터의 데이터의 캐싱을 디스에이블하도록 된 것을 특징으로 하는 장치.
  4. 제3 항에 있어서,
    상기 클러스터 캐싱 로직은 헬스 체크 메시지를 타 클리크 멤버들에 브로드캐스팅하고 그리고 이에 후속하여 상기 클리크의 타 멤버들로부터 응답이 수신되지 않으면 상기 클리크의 상기 헬스 상태가 저하되어있음을 표시하는 클리크 저하 메시지를 송신함으로써 상기 클리크의 상기 헬스 상태를 결정하도록 된 것을 특징으로 하는 장치.
  5. 제1 항에 있어서,
    상기 클러스터 캐싱 로직은 클리크 저하 메시지를 수신함에 응답하여 캐싱을 디스에이블하도록 된 것을 특징으로 하는 장치.
  6. 제1 항에 있어서, 상기 클러스터 캐싱 로직은 상기 컴퓨팅 머신이 상기 캐시 내에 캐시된 가상 디스크 파일을 갖는 가상 머신의 호스팅을 중단할 때 상기 컴퓨팅 머신의 상기 캐시 내의 데이터를 무효화하도록 된 것을 특징으로 하는 장치.
  7. 제1 항에 있어서, 상기 클러스터 캐싱 로직은,
    상기 메모리 디바이스에 대한 배타적 액세스를 예약한 상기 클리크 내의 요청 클러스터 캐싱 로직으로부터 영구 예약 메시지를 검출하고;
    상기 저장 디바이스가 예약되어 있는 동안 상기 요청 클러스터 캐싱 로직에 의해 기록된 메모리 블록들의 리스트를 레코딩하고;
    상기 요청 클러스터 캐싱 로직으로부터 철회 메시지(revocation message)를 검출하고;
    상기 클리크 내의 상기 클러스터 캐시 로직들에 상기 메모리 블록들의 리스트를 브로드캐스팅하고; 그리고
    응답이 상기 클리크의 모든 멤버들로부터 수신되지 않으면 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지를 브로드캐스팅하도록 된 것을 특징으로 하는 장치.
  8. 공유 저장 디바이스로부터의 데이터를 캐시하는 캐싱 로직들의 클리크 내의 멤버십을 결정하는 단계와; 그리고
    상기 클리크 내의 멤버십이 확립되면, 상기 공유 저장 디바이스로부터의 데이터의 캐시 내에의 캐싱을 인에이블하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8 항에 있어서,
    타 클리크 멤버들에게 헬스 체크 메시지를 브로드캐스팅하는 단계와;
    상기 타 클리크 멤버들로부터의 응답에 대해 모니터링하는 단계와; 그리고
    상기 타 클리크 멤버들로부터 응답이 수신되지 않으면, 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지를 브로드캐스팅하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제9 항에 있어서,
    상기 클리크의 멤버인 또 다른(another) 클러스터 캐싱 로직으로부터 토큰을 수신하는 단계와;
    상기 토큰을 수신함에 응답하여 상기 헬스 체크 메시지를 브로드캐스팅하는 단계와; 그리고
    모든 클리크 멤버들로부터 응답을 수신한 후에 상기 클리크의 또 다른 멤버에게 상기 토큰을 전달하거나 또는 상기 클리크 저하 메시지를 브로드캐스팅하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제8 항에 있어서,
    상기 가상 머신이 삭제되면 가상 머신의 가상 디스크에 대응하는 상기 캐시 내의 데이터를 무효화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제8 항에 있어서,
    가상 머신이 다른(different) 호스트 컴퓨팅 머신으로 이동한다면, 상기 가상 머신의 가상 디스크에 대응하는 상기 캐시 내의 데이터를 무효화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제8 항에 있어서,
    상기 클리크의 멤버로부터 수신되는 클리크 저하 메시지를 수신함에 응답하여 캐싱을 디스에이블하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제13 항에 있어서,
    상기 클리크의 멤버로부터 수신되는 캐싱 재개 메시지(resume caching message)에 응답하여 캐싱을 재개하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제8 항에 있어서,
    상기 공유 메모리 디바이스에 대한 배타적 액세스를 예약하는 상기 클리크 내의 요청 클러스터 캐싱 로직으로부터 영구 예약 메시지를 검출하는 단계와;
    상기 공유 저장 디바이스가 예약되어있는 동안 상기 요청 클러스터 캐싱 로직에 의해 기록된 메모리 블록들의 리스트를 레코딩하는 단계와;
    상기 요청 클러스터 캐싱 로직으로부터 철회 메시지를 검출하는 단계와;
    상기 클리크 내의 상기 클러스터 캐싱 로직들에 상기 메모리 블록들의 리스트를 브로드캐스팅하는 단계와; 그리고
    응답이 상기 클리크의 모든 멤버들로부터 수신되지 않으면 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지를 브로드캐스팅하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 물리적 컴퓨팅 머신에 결합하도록 된 클러스터 캐시 제어기로서,
    공유 저장 디바이스로부터의 데이터를 캐시하는 클러스터 캐시 제어기들의 클리크의 헬스 상태를 평가(assess)하고;
    상기 클리크와 관련한 상기 클러스터 캐시 제어기의 멤버십 상태를 결정하고; 그리고
    상기 클러스터 캐시 제어기가 상기 클리크의 멤버이고 상기 클리크의 상기 헬스 상태가 저하되어있지 않으면, 상기 물리적 컴퓨팅 머신과 관련된 캐시 내에의 캐싱을 인에이블하도록 된 것을 특징으로 하는 클러스터 캐시 제어기.
  17. 제16 항에 있어서, 상기 클러스터 캐시 제어기는 캐싱 동작들을 수행하기 전에,
    상기 클리크의 멤버인 적어도 하나의 클러스터 캐시 제어기와 대역외(out-of-band) 연결을 확립하고; 그리고
    상기 클리크의 멤버로서 등록하는 동작을 수행하는 것을 특징으로 하는 클러스터 캐시 제어기.
  18. 제16 항에 있어서, 상기 클러스터 캐시 제어기는 또한,
    헬스 체크 메시지를 타 클리크 멤버들에게 브로드캐스팅하고;
    상기 타 클리크 멤버들로부터의 응답에 대해 모니터링하고; 그리고
    상기 타 클리크 멤버들 각각으로부터 응답이 수신되지 않으면, 상기 클리크의 상기 헬스 상태가 저하되어 있음을 나타내는 클리크 저하 메시지를 브로드캐스팅하도록 된 것을 특징으로 하는 클러스터 캐시 제어기.
  19. 제16 항에 있어서, 상기 클러스터 캐시 제어기는 또한 상기 물리적 컴퓨팅 머신이 상기 캐시 내에 캐시된 가상 디스크 파일을 갖는 가상 머신의 호스팅을 중단할 때 상기 캐시 내의 데이터를 무표화하도록 된 것을 특징으로 하는 클러스터 캐시 제어기.
  20. 제16 항에 있어서, 상기 클러스터 캐시 제어기는 또한 클리크 저하 메시지를 수신함에 응답하여 상기 캐시 내의 데이터의 캐싱을 디스에이블하고 그리고 상기 데이터를 무효화하도록 된 것을 특징으로 하는 클러스터 캐시 제어기.
  21. 제16 항에 있어서, 상기 클러스터 캐시 제어기는 또한,
    상기 공유 메모리 디바이스에 대한 배타적 액세스를 예약하는 상기 클리크 내의 요청 클러스터 캐싱 로직으로부터 영구 예약 메시지를 검출하고;
    상기 공유 저장 디바이스가 예약되어 있는 동안 상기 요청 클러스터 캐싱 로직에 의해 기록된 메모리 블록들의 리스트를 레코딩하고;
    상기 요청 클러스터 캐싱 로직으로부터 철회 메시지를 검출하고;
    상기 클리크 내의 상기 클러스터 캐싱 로직들에 상기 메모리 블록들의 리스트를 브로드캐스팅하고; 그리고
    상기 응답이 상기 클리크의 모든 멤버들로부터 수신되지 않으면 상기 클리크의 헬스 상태가 저하되어 있음을 표시하는 클리크 저하 메시지를 브로드캐스팅하도록 된 것을 특징으로 하는 클러스터 캐시 제어기.
KR1020137010492A 2010-10-25 2011-10-21 클러스터 캐시 코히어런시 프로토콜 KR20130123387A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US40642810P 2010-10-25 2010-10-25
US61/406,428 2010-10-25
PCT/US2011/057222 WO2012061035A1 (en) 2010-10-25 2011-10-21 Cluster cache coherency protocol

Publications (1)

Publication Number Publication Date
KR20130123387A true KR20130123387A (ko) 2013-11-12

Family

ID=44993172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137010492A KR20130123387A (ko) 2010-10-25 2011-10-21 클러스터 캐시 코히어런시 프로토콜

Country Status (4)

Country Link
US (1) US20120102137A1 (ko)
KR (1) KR20130123387A (ko)
CN (1) CN103154910A (ko)
WO (1) WO2012061035A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683111B2 (en) 2011-01-19 2014-03-25 Quantum Corporation Metadata storage in unused portions of a virtual disk file
US9069587B2 (en) 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
US20130268930A1 (en) * 2012-04-06 2013-10-10 Arm Limited Performance isolation within data processing systems supporting distributed maintenance operations
US9232005B1 (en) 2012-06-15 2016-01-05 Qlogic, Corporation Methods and systems for an intelligent storage adapter used for both SAN and local storage access
US9588900B2 (en) * 2012-07-25 2017-03-07 Empire Technology Development Llc Management of chip multiprocessor cooperative caching based on eviction rate
US8984234B2 (en) 2013-01-11 2015-03-17 Lsi Corporation Subtractive validation of cache lines for virtual machines
US9460049B2 (en) * 2013-07-18 2016-10-04 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic formation of symmetric multi-processor (SMP) domains
US9454305B1 (en) 2014-01-27 2016-09-27 Qlogic, Corporation Method and system for managing storage reservation
US9423980B1 (en) 2014-06-12 2016-08-23 Qlogic, Corporation Methods and systems for automatically adding intelligent storage adapters to a cluster
US9436654B1 (en) 2014-06-23 2016-09-06 Qlogic, Corporation Methods and systems for processing task management functions in a cluster having an intelligent storage adapter
US9477424B1 (en) 2014-07-23 2016-10-25 Qlogic, Corporation Methods and systems for using an intelligent storage adapter for replication in a clustered environment
US20160050112A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
US9460017B1 (en) 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring
KR20160046235A (ko) * 2014-10-20 2016-04-28 한국전자통신연구원 컨텐츠 캐시의 그룹 형성 방법 및 컨텐츠 제공 방법
US9483207B1 (en) 2015-01-09 2016-11-01 Qlogic, Corporation Methods and systems for efficient caching using an intelligent storage adapter
US10362143B2 (en) * 2016-09-29 2019-07-23 International Business Machines Corporation Dynamically transitioning the file system role of compute nodes for provisioning a storlet
CN110765036B (zh) * 2018-07-27 2023-11-10 伊姆西Ip控股有限责任公司 在控制设备处管理元数据的方法和设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839752B1 (en) * 2000-10-27 2005-01-04 International Business Machines Corporation Group data sharing during membership change in clustered computer system
US7007042B2 (en) * 2002-03-28 2006-02-28 Hewlett-Packard Development Company, L.P. System and method for automatic site failover in a storage area network
JP4244572B2 (ja) * 2002-07-04 2009-03-25 ソニー株式会社 キャッシュ装置、およびキャッシュデータ管理方法、並びにコンピュータ・プログラム
US7433898B1 (en) * 2004-06-01 2008-10-07 Sanbolic, Inc. Methods and apparatus for shared storage journaling
US7653682B2 (en) * 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US8762642B2 (en) * 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication

Also Published As

Publication number Publication date
WO2012061035A1 (en) 2012-05-10
CN103154910A (zh) 2013-06-12
US20120102137A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
KR20130123387A (ko) 클러스터 캐시 코히어런시 프로토콜
US9043560B2 (en) Distributed cache coherency protocol
US10817333B2 (en) Managing memory in devices that host virtual machines and have shared memory
US9648081B2 (en) Network-attached memory
US8645611B2 (en) Hot-swapping active memory for virtual machines with directed I/O
CN112422606A (zh) 云游戏数据存储和检索的高速数据通信架构的系统和方法
US20110138102A1 (en) Data storage management using a distributed cache scheme
US20140237183A1 (en) Systems and methods for intelligent content aware caching
US10162681B2 (en) Reducing redundant validations for live operating system migration
US20200097183A1 (en) Workload based device access
JP2014021972A (ja) 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造
KR20130142965A (ko) 스마트 액티브-액티브 고가용성 das 시스템
EP3350713B1 (en) Distributed cache live migration
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US9239682B2 (en) I/O hint framework for Server Flash Cache
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US9811404B2 (en) Information processing system and method
US9471226B2 (en) Reverse copy on write for better cache utilization
US9875184B2 (en) Multi-level snapshot caching
JPWO2012063334A1 (ja) 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ
US10223265B2 (en) Operating local caches for a shared storage device
US10579277B1 (en) Non-disruptive insertion of virtualized storage appliance
US11093275B2 (en) Partial surprise removal of a device for virtual machine migration
US20160217076A1 (en) Speculative cache reading using shared buffer
US20140201462A1 (en) Subtractive Validation of Cache Lines for Virtual Machines

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal