KR20130142123A - 분산 캐쉬 일관성 프로토콜 - Google Patents

분산 캐쉬 일관성 프로토콜 Download PDF

Info

Publication number
KR20130142123A
KR20130142123A KR1020137011458A KR20137011458A KR20130142123A KR 20130142123 A KR20130142123 A KR 20130142123A KR 1020137011458 A KR1020137011458 A KR 1020137011458A KR 20137011458 A KR20137011458 A KR 20137011458A KR 20130142123 A KR20130142123 A KR 20130142123A
Authority
KR
South Korea
Prior art keywords
caching
block
logic
memory blocks
cache
Prior art date
Application number
KR1020137011458A
Other languages
English (en)
Other versions
KR101845110B1 (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 KR20130142123A publication Critical patent/KR20130142123A/ko
Application granted granted Critical
Publication of KR101845110B1 publication Critical patent/KR101845110B1/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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

분산 캐쉬 일관성 프로토콜에 관련된 시스템들, 방법들, 그리고 다른 실시예들이 개시된다. 일 실시예에 따른 방법은 두 개 이상의 물리적 컴퓨팅 머신들이 공유하는 블록 저장 장치 내에 위치한 하나 이상의 메모리 블록들에 대한 액세스 요청을 요청자로부터 수신하는 단계와 적어도 하나 이상의 메모리 블록들에 대한 캐슁 권리가 다른 요청자에게 이미 부여되었는지를 결정하는 단계를 포함한다. 상기 캐슁 권리가 상기 다른 요청자에게 부여되지 않은 경우 상기 하나 이상의 메모리 블록들에 대한 상기 요청자의 액세스는 허용된다.

Description

분산 캐쉬 일관성 프로토콜{DISTRIBUTED CACHE COHERENCY PROTOCOL}
본 발명은 2010년 10월 6일자로 미국에 출원된 미국 가출원(가출원번호 61/390,588)의 우선권을 주장하며, 상기 미국 가출원은 본 발명에 대한 참조로서 그 전체 내용이 본 명세서에 통합된다.
본 발명은 분산 캐쉬 일관성 프로토콜(distributed cache coherency protocol)에 연관된 시스템 및 방법에 관한 것이다.
여기에 제공된 배경기술 부분은 본 발명의 맥락을 일반적으로 제시하기 위한 것이다. 현재 알려진 발명자들의 연구 성과는, 이러한 연구 성과가 본 배경기술 부분에 서술되어 있다고 해서, 출원 당시에 종래 기술로서 달리 인정될 수 없는 상세한 설명의 여러 양상들과 마찬가지로, 본 개시 내용에 대한 종래 기술로서 명시적으로도 혹은 묵시적으로도 인정되지 않는다.
저장 영역 네트워크(Storage Area Networks : SANs)는 다수의 컴퓨팅 머신들이 공유할 수 있는 대규모의 저장용량(storage capacity)을 제공한다. 상기 머신들은 일반적으로 인터넷(iSCSI) 또는 광(fibre)채널 커넥션을 통해 SCSI 프로토콜을 이용하여 저장영역 네트워크와 통신한다. 상기 머신은 일반적으로 SCSI 인터페이스 카드 또는 상기 머신과 상기 저장영역 네트워크(SAN)간의 데이터의 흐름을 제어하는 컨트롤러를 포함할 수 있다. 상기 머신 측면에서는, 저장영역 네트워크(SAN)가 운영 시스템에 로컬(locally) 방식으로 연결되어 있는 것처럼 보일 것이다. 이러한 모든 머신들이 상기 저장영역 네트워크 내의 공유 메모리(shared memory)에 액세스 할 수 있기 때문에 다양한 머신들 상의 캐쉬들(caches) 사이의 일관성(coherency)을 유지하기 위한 어려움을 회피하도록, 각각의 머신에 대한 캐슁(caching)은 빈번히 중단(disabled) 될 수 있다.
일실시예에서, 장치는, 블록 저장 장치에 대한 액세스를 하나 이상의 다른 물리적 컴퓨팅 머신과 공유하는 물리적 컴퓨팅 머신에 관련된 캐쉬로서 구성되는 비-일시적인 저장 매체를 포함한다. 상기 장치는 또한, 물리적 컴퓨팅 머신과 관련된 캐슁 로직을 포함한다. 상기 캐슁 로직은 상기 캐쉬 내에 데이터를 캐슁하도록 구성된다. 상기 캐슁 로직은 메모리 블록들의 위임된(delegated) 범위 내에 저장된 데이터를 캐쉬하고 그리고 메모리 블록들의 상기 위임된 범위 외부에 저장된 데이터는 캐쉬하지 않는다. 상기 장치는 또한, 상기 블록 저장 장치 내의 메모리 블록들의 상기 위임된 범위에 대한 캐슁 권리를 상기 캐슁 로직에게 할당하는 블록 위임 로직을 포함한다. 상기 캐슁 권리는 상기 캐슁 로직에게 부여된 배타적 권리이다.
다른 실시예에서, 방법은, 2개 이상의 물리적 컴퓨팅 머신들에 의해서 공유되는 블록 저장 장치 내의 하나 이상의 메모리 블록들에 대한 액세스 요청을 요청자로부터 수신하는 단계와 그리고 상기 하나 이상의 메모리 블록들 중 임의의 것에 대한 캐싱 권리가 다른 요청자에게 부여되었는지의 여부를 결정하는 단계를 포함한다. 상기 캐슁 권리가 상기 다른 요청자에게 부여되지 않은 경우, 상기 하나 이상의 메모리 블록들에 대한 액세스가 상기 요청자에게 승인된다.
다른 실시예에서, 물리적 컴퓨팅 머신과 연결되도록 구성된 블록 메모리 인터페이스가 제공된다. 상기 블록 메모리 인터페이스는, 또한, 하나 이상의 다른 물리적 컴퓨팅 머신에 의해서 액세스가능한 블록 메모리 장치 내에 저장된 데이터에 액세스하기 위한 요청을 상기 물리적 컴퓨팅 머신으로부터 수신하고; 요청된 하나 이상의 메모리 블록들을 포함하는 메모리 블록들의 범위에 대한 캐슁 권리가 상기 블록 메모리 인터페이스에게 할당되었는지의 여부를 결정하고; 만일, 상기 캐슁 권리가 상기 블록 메모리 인터페이스에게 할당되었다면, 캐쉬 내의 데이터에 대한 액세스를 제공하도록 구성된다. 상기 캐슁 권리는 상기 물리적 컴퓨팅 머신이 상기 블록 메모리 장치 내의 메모리 블록들의 범위를 캐슁하기 위한 배타적인 권리이다.
명세서에 포함되어 상기 명세서의 일부를 구성하는 첨부된 상기 도면들은 다양한 시스템들, 방법들, 그리고 본 발명의 다른 실시예들을 도시한다. 도면들에 예시된 구성요소들의 경계선들(예컨대, 박스들, 박스들의 그룹, 혹은 다른 형상)은 경계선들의 하나의 일례를 나타냄을 유의해야 한다. 몇몇 실시예에서, 하나의 구성요소는 여러 개의 구성요소로 설계될 수도 있으며, 혹은 상기 여러 개의 구성요소들은 하나의 구성요소로 설계될 수도 있다. 일부 실시예들에서, 다른 구성요소의 내부 성분으로 도시된 구성요소는 외부 성분으로 구현될 수도 있으며, 그 반대의 경우도 마찬가지이다. 또한, 구성요소들은 축척대로 도시되지 않을 수도 있다.
도1은 다수의 컴퓨터로 분산 캐쉬 일관성 프로토콜(a distributed cache coherency protocol) 장치 시스템에 관한 하나의 실시예를 도시한 것이다.
도2는 분산된 캐쉬 일관성 프로토콜에 관한 방법에 대한 하나의 실시예를 도시한 것이다.
도3은 분산된 캐쉬 일관성 프로토콜에 관한 방법에 대한 하나의 실시예를 도시한 것이다.
도4는 분산된 캐쉬 일관성 프로토콜에 관한 방법에 대한 하나의 실시예를 도시한 것이다.
도5는 분산된 캐쉬 일관성 프로토콜에 관한 방법에 대한 하나의 실시예를 도시한 것이다.
도6은 분산된 캐쉬 일관성 프로토콜에 관한 방법에 대한 하나의 실시예를 도시한 것이다.
도7은 분산된 캐쉬 일관성 프로토콜에 관한 시스템에 대한 하나의 실시예를 도시한 것이다.
CPU의 용량이 증가됨에 따라 가상 컴퓨터의 사용은 광범위하게 되었다. Vmware 또는 Windows Hyper-V와 같은 운영 시스템들은 하나의 물리적 머신이, 그 각각이 완벽한 독립적 머신으로 행동하는 단일 운영 시스템(OS)의 다수의 인스턴스들(multiple instances)을 구동할 수 있게 한다. 가상 머신의 운영 시스템 인스턴스는 저장공간 네트워크(SAN)에 자주 저장되는 파일 형태로 가상 디스크(virtual disk)에 액세스한다. 가상 머신의 가상 디스크 파일(virtual disk file)을 저장공간 네트워크(SAN)에 저장하는 것은 가상 머신이 물리적 머신들 사이에서 무결절성으로(seamlessly) 이동할 수 있게 한다. 둘 이상의 물리적 머신들에 의해서 저장 공간 네트워크(SAN)가 액세스될 수 있는 한, 가상 머신은 물리적 머신들 사이에서 무결절성으로이동할 수 있다.
저장 공간 네트워크(SAN)에 액세스한다는 것은 통상적으로 높은 지연시간(high latency)과 연관되기 때문에, 가상 머신의 가상 디스크 파일의 로컬 캐슁(local caching)을 호스트 물리적 머신(host physical machine) 상에 만든다는 것은 매우 매력적인 옵션(option)이다. 그렇지만, 상기 배경기술 부분에서 언급한 바와 같이, 동일한 저장 공간 네트워크(SAN)에 액세스하는 다수의 물리적 머신들 간의 캐쉬 일관성(cache coherence)이 문제가 된다. 가상 머신이 하나의 물리적 머신 A로부터 또 다른 물리적 머신 B로 이동하는 경우, 머신 B가 상기 이동된 가상 머신로부터 데이터를 캐슁(caching)하기에 앞서, 상기 가상 머신을 위한 머신 A 상의 캐쉬는 무효화(invalidated)되어야 한다. 이러한 케이스는 가상 머신에 의해 사용되는 저장소(storage)가 블록 디바이스(SAN)의 꼭대기(top)에 위치한 파일 형식인 경우(예컨대, vmfs 상의 vmdk 파일인 경우) 더 복잡해 진다. 이러한 경우, 상기 블록 디바이스는 일반적으로 vmfs 와 같은 클러스터-어웨어 파일 시스템(cluster aware file system)으로 포맷된다. 일반적으로 상기 블록 층의 맨 위에서 작동하는 물리적 머신의 캐쉬는 어떤 블록들이 임의의 주어진 가상 머신의 파일과 연관되는지를 확인할 수 없으므로, 무효화(invalidated)될 블록들을 식별할 수 없다.
분산 캐쉬 일관성 프로토콜(a distributed cache coherency protocol)에 관한 예시적인 시스템들, 방법들, 그리고 이에 관한 다른 실시예들이 개시된다. 일관성 프로토콜을 통해 블록 저장 디바이스를 공유하는 컴퓨팅 머신들은 로컬 캐싱(local caching)을 수행하면서 동적으로 캐쉬 일관성(cache coherency)에 관한 문제를 해결할 수 있다. 이러한 일관성 프로토콜은 블록 저장 디바이스와 각각의 컴퓨팅 머신이 상기 컴퓨팅 머신들 간의 캐쉬 일관성을 용이하게 유지하게끔 협력하게 한다.
분산 캐쉬 일관성 프로토콜을 사용하는 경우, 블록 저장 장치 내의 메모리 블록 범위에 대한 배타적 캐싱 권리(exclusive caching rights)는 상기 메모리 블록에 접근하는 컴퓨팅 머신에게 위임(delegated)된다. 이러한 메모리 블록들에 관하여 캐슁 권리가 머신에게 부여되지 않는 한, 상기 컴퓨팅 머신은 상기 메모리 블록들을 캐쉬하지 않는다. 이와 같은 방식으로, 중앙집중화된 블록 위임 로직(centralized block delegation logic)은 상기 저장 디바이스 내의 지정된 컴퓨팅 머신이 캐쉬해야 하는 메모리 블록들을 결정하고, 상기 블록들에 관한 캐슁 권리를 부여한다. 상기 블록 위임 로직은 또한 다른 컴퓨팅 머신에 의해 캐슁된 메모리 블록에 대한 소정의 컴퓨팅 머신의 액세스를 통제한다.
가상 머신은 상기 가상 머신의 가상 디스크를 위한 전용 저장 블록에 접근하는 경향이 있기 때문에, 일반적으로 다른 가상 머신을 위해 할당된(allocated) 저장 블록들에 접근하지 않는다. 이러한 성향 때문에 여기에 서술된 분산 캐쉬 일관성 프로토콜은 가상 머신 환경에 적합한데, 이는 호스트 머신에서 가상 머신의 가상 디스크 파일의 캐싱을 용이하게 하는 한편 상기 가상 머신이 다른 호스트 머신쪽으로 무결정성으로 이동할 수 있게 하기 때문이다.
도1을 참조하면, 분산 캐쉬 일관성 프로토콜과 관련된 시스템 100의 일실시예가 도시된다. 상기 시스템 100은 블록 저장 장치 160의 액세스를 공유하는 두 개의 컴퓨팅 머신(computing machine) 110,130을 포함한다. 상기 컴퓨팅 머신 110,130은 최소 하나 이상의 프로세서(미도시)와 캐쉬 115, 135로 사용되기 위한 로컬 메모리를 포함한다. 상기 캐쉬 115, 135는 상기 블록 저장 장치 160으로부터 선택된 데이터를 저장하는데 이는 상기 컴퓨팅 머신 110, 130 내의 데이터에 직접 액세스(direct access)하기 위한 것이다(즉, 상기 블록 저장장치 내의 데이터를 요청하거나 데이터를 상기 블록 저장장치 내에 저장하기 보다는). 상기 캐쉬 110, 135 내의 데이터 액세스는 상기 블록 저장장치 160을 통하는 것보다 상기 컴퓨팅 머신의 입/출력(I/O) 동작 속도를 증가시킨다. 도1에서는 오직 두 개의 컴퓨팅 머신들이 도시되었지만, 본 발명의 분산 캐쉬 일관성 프로토콜은 임의의 다수의 컴퓨팅 머신들에게도 사용될 수 있다. 상기 장치들 사이에 캐쉬 일관성을 촉진하기 위해, 분산 캐쉬 일관성 프로토콜은 상기 컴퓨팅 머신들 110, 130의 로컬 캐슁을 제어하는 캐슁 로직 120,140 그리고 상기 블록 저장 장치 160의 액세스를 제어하는 블록 위임 로직(block delegation logic) 150 사이에 확립된다.
분산 캐쉬 일관성 프로토콜은 위임(delegations)을 통해 이루어진다. 위임은 배타적 캐싱 권리(exclusive caching rights)로서 상기 블록 위임 로직 150에 의해 각각의 캐싱 로직 120, 140에 배정(assign)된다. 메모리 블록들의 범위(range of memory block)에 관하여 상기 캐싱 권리가 부여된다(granted).
예시적인 실시예들에 따르면, 상기 캐싱로직 120,140은 컴퓨팅 머신에 설치된 SCSI 인터페이스에 포함된다(embodied on). 상기 캐싱 로직은 마이크로소프트 운영 시스템 내의 "initiator" 로서 구현될 수 있다. 블록 위임 로직 150은 상기 블록 저장 장치 160를 위한 컨트롤러의 일부로서 구현될 수 있다. 다른 실시예들에서, 상기 캐싱 권리는 저장공간 네트워크(SAN) 상에 생성되는 LNU(Logical Unit Number) 디스크에 대한 LBA(Logical Block Address)의 범위에 관한 것이 될 수도 있다(하나의 특별한 실시예를 위해 도 6을 참조). 따라서, 하나의 할당은 D(LUN ID, LBA, 길이, 캐싱 로직 ID)로 표현될 수 있으며, 여기서 LBA는 위임되는 범위의 시작 어드레스이고 길이는 상기 범위의 길이이다. 블록 위임 로직 150은 위임들에 관한 기록(log)을 보유하며 따라서 상기 컴퓨팅 머신 110, 130의 리부팅시에도 상기 위임들이 일관될 수 있다.
다음의 설명을 위하여, 오직 하나의 컴퓨팅 머신 110, 이와 관계된 캐쉬 115, 그리고 캐싱 로직 120의 동작이 서술될 것이다. 상기 컴퓨팅 머신 130, 이와 관계된 캐쉬 135, 그리고 캐싱 로직 140은 상응하는 방식으로 작동한다. 분산 캐쉬 일관성 프로토콜의 일실시예에 따르면, 상기 캐싱 로직 120은 캐쉬 115로부터의 데이터를 오직 캐쉬 또는 서브하되, 상기 데이터는 메모리 블록 범위 내에 있고, 상기 블록 범위는 상기 블록 위임 로직 150에 의해 캐싱 권리를 부여 받은 것에 해당된다. 컴퓨팅 머신 110이 캐쉬 115 내에 이미 저장되어 있지 않은 데이터를 요구 또는 출력하는 경우, 캐쉬 115는 일반적으로 블록 저장 장치 160로부터 데이터를 회수하고 차후 컴퓨팅 머신 110의 액세스을 위하여 상기 데이터를 캐쉬 115에 보관한다. 분산 캐쉬 일관성 프로토콜을 사용하여 블록 저장 장치 160으로부터 데이터를 캐쉬 115에 저장하거나 상기 캐쉬로부터 상기 컴퓨팅 머신 110에 데이터를 제공하기에 앞서, 상기 캐쉬 115는 그것이 상기 데이터에 대한 캐싱 권리를 소유하는지 여부를 결정할 것이다. 만약, 캐쉬 115가 상기 데이터에 대한 캐싱 권리가 없다면 상기 데이터는 캐쉬 115에 저장되지 않는다. 상기 데이터가 벌써 캐쉬 115 내에 있는 경우 캐쉬 115는 컴퓨팅 머신 110에 데이터를 제공하지 않을 것인바, 왜냐하면 다른 캐쉬가 캐싱 권리를 가질 수도 있고, 이는 캐쉬들 사이에서 데이터 충돌을 야기할 수도 있기 때문이다.
상기 캐싱 로직 120은 상기 블록 저장 장치 160으로부터 상기 캐싱 로직에 위임된 캐싱 권리범위 밖의 입/출력(I/O) 요청들을 상기 컴퓨팅 머신 110을 통해 서브한다. 상기 블록 위임 로직 150은 상기 컴퓨팅 머신 110에 의해 액세스되고 있는 상기 블록 저장 장치 160내의 메모리 블록들을 모니터링(monitor)하며 액스한 메모리 블록들에 대한 캐슁 권리를 캐싱 로직 120에 부여할 수 있고, 이에 관한 세부 사항들은 아래에서 개시된다. 컴퓨팅 머신 110,130은 상기 블록 저장 장치 160으로부터 데이터를 페치(fetch)할 필요 없이, 상기 캐쉬 115,135 내에 있는 데이터를 사용하여 동작들을 수행한다.
블록 위임 로직 150은 상기 블록 저장장치 160에 대한 액세스를 제어하는바, 따라서 위임 권리를 소유한 캐싱 로직만이 위임된 범위의 메모리 블록에 대한 쓰기 입/출력(I/O)을 발행하도록 허용된다. 위임되지 않은 범위의 메모리 블록들에 대해서, 캐싱 로직은 읽기 입/출력(I/O)의 발행을 허락 받을 수 있다. 만일, 캐싱 로직이 캐싱 권리가 다른 캐싱 로직에게 부여된 메모리 블록 또는 블록들에게 대하여 쓰기 입/출력을 발행한다면, 상기 블록 위임 로직 150은 상기 쓰기 입/출력을 에러로서 거절하거나 또는 상기 쓰기 입/출력을 완료하기 전에 상기 충돌되는 위임을 먼저 취소할 것이다.
분산 캐쉬 일관성 프로토콜에 관한 하나의 실시예로서, 블록 위임 로직 150은 위임들을 관리한다. 블록 위임 로직 150은 캐싱 로직들의 데이터 액세스 패턴들에 기초하여 다양한 캐싱 로직들에게 위임들을 할당한다. 블록 위임 로직 150은 또한 위임을 취소하거나 혹은 위임의 범위를 변경할 수 있다.
메모리 블록에 대한 캐싱 권리가 캐싱 로직 120에 부여되면, 캐싱 로직 120은 메모리 블록들의 범위에 대해서 캐쉬 115 내로의 캐슁을 시작한다. 블록 위임 로직 150에 의해서 위임이 취소되는 경우, 상기 캐싱 로직 120는 위임이 취소된 메모리 블록들의 범위에 대해서 캐쉬 115 내의 데이터에 의존하는 것을 중단한다. 캐싱 로직 120은 캐쉬 115 내의 데이터를 무효(invalidate)시킬 것이며, 따라서 위임이 취소된 데이터는 상기 캐쉬로부터 더 이상 서브될 수 없을 것이다. 만약 캐싱 로직 120이, 위임된 메모리 블록들의 범위를 수정하라는 메시지를 상기 블록 위임 로직 150으로부터 수신한다면, 캐싱 로직 120은 수정된 위임을 반영하도록 상기 캐쉬 115의 구조를 업데이트하며 그리고 축소된(diminished) 위임 범위의 외부에 속하는 데이터에 대응하는 데이터를 무효화 할 수 있다.
도2는 분산 캐쉬 일관성 프로토콜에 따른 캐슁 로직과 블록 위임 로직의 일련의 동작들(200)에 대한 일실시예를 도시한다. 상기 캐슁 로직이 임의의 캐슁을 수행하거나 또는 상기 캐슁 로직의 캐쉬로부터 데이터를 서브(serve)하기 전에, 상기 캐슁 로직은 210에 도시된 동작들을 수행한다. 캐슁 로직은 대역 외(out-of-band) 프로토콜을 위해 상기 블록 저장 장치 상의 잘-정의된 포트로의 TCP 연결을 생성한다. 연결이 확립된 이후, 상기 캐슁 로직은 가장 최근의 통용 프로토콜 버전(the latest common protocol version)을 결정하기 위하여 프로토콜 핸드 쉐이크(protocol handshake)를 실시한다. 캐슁 로직은 자신의 능력들(capabilities)을 블록 위임 로직에게 알려준다. 다음으로, 캐슁 로직은 상기 캐슁 로직에게 할당된 기존의 위임들을 알아내기 위하여 블록 위임 로직에게 질의한다(quiry). 이것은 이러한 위임들을 기록(records)하고 그리고 상기 위임들에 의해 지정된 메모리 블록들의 범위들에서 캐슁을 즉시 실시한다. 상기 캐쉬는 소정의 데이터를 이미 포함할 수도 있다. 캐슁 로직은 상기 캐쉬 내의 데이터와 상기 블록 위임 로직으로부터 수신된 위임들을 조화시킨다(reconcile).
220에서, 캐싱 로직은 그것의 위임들 범위 밖의 데이터에 관한 입/출력 요청(I/O request)을 수신한다. 230에서, 캐싱 로직은 입/출력 요청을 블록 저장 장치로 전송한다. 240에서, 블록 위임 로직은 요청된 데이터에 대한 캐싱 권리들의 임의의 위임들이 부여되었는지의 여부를 결정한다. 250에서, 만약 아무런 위임이 부여되지 않았다면, 상기 블록 위임 로직은 액세스를 요청한 캐싱 로직에게 위임을 할당한다. 이러한 위임을 수신한 이후, 캐싱 로직은 메모리 블록들의 할당된 범위에 대한 데이터 캐슁을 시작할 수 있다.
요청된 데이터를 포함하는 임의의 메모리 블록들에 대한 위임이 부여되었고 그리고 260에서, 상기 I/O 요청이 읽기 요청이라고 판별된다면, 270에서, 블록 저장 장치는 캐슁 로직에 새로운 위임을 할당함이 없이, 상기 읽기 요청을 서브할 것이다. 만일, I/O 요청이 쓰기 요청(a write request)이라면, 280에서, 블록 저장 장치는 기존의 위임(existing delegation)을 취소함이 없이 상기 요청을 서브하지 않을 것이다. 이 경우, 두 가지 가능한 결과(outcomes)가 있을 수 있다. 하나의 결과로서, 상기 블록 저장 장치는 상기 블록 위임 로직에 의해 제어되는 바에 따라, 에러(an error)로서 상기 입/출력 요청을 거절한다(reject). 다른 결과로서, 상기 블록 위임 로직은 기존의 위임을 취소하고(revokes) 상기 쓰기 요청을 서브한다. 그러면, 상기 블록 위임 로직은 방금 상기 쓰기 연산을 수행한 캐슁 로직(caching logic)에게 새로운 위임(a new delegation)을 할당할 수 있다.
도3은 분산 캐쉬 일관성 프로토콜의 실행을 통해 수행되는 캐쉬 권리 위임 방법 300에 관한 일실시예를 도시한다. 일부 실시예들에서, 상기 방법 300은 블록 위임 로직 150에 의해 수행된다. 310에서, 공유되는 블록 저장 장치 내의 하나 이상의 메모리 블록들에 액세스(읽기 액세스 또는 쓰기 액세스)하기 위한 요청이 수신된다. 320에서, 하나 이상의 메모리 블록들 중 임의의 것에 대한 캐싱 권리가 다른 요청자(requester)에게 부여되었는지가 결정된다. 330에서, 만약 상기 캐싱 권리가 다른 요청자에 부여되지 않은 경우, 상기 메모리 블록에 대한 액세스 요청은 승인된다.
도4는 분산 캐쉬 일관성 프로토콜의 실행을 통해 수행되는 캐쉬 권리 위임 방법 400에 관한 일실시예를 도시한다. 상기 방법 400은, 블록 저장 장치 내의 메모리 블록들이 하나의 컴퓨팅 머신에 의해 요청되고 그리고 다른 컴퓨팅 머신이 상기 메모리 블록들에 관한 캐싱 권리를 보유하고 있는 경우에 일어날 수 있는 하나의 결과를 도시한다. 몇몇 실시예들에서, 상기 방법 400은 블록 위임 로직 150에 의해 구현된다. 410에서, 공유되는 블록 저장 장치 내의 하나 이상의 메모리 블록들에 액세스(읽기 액세스 또는 쓰기 액세스)하기 위한 요청이 수신된다. 420에서, 하나 이상의 메모리 블록들 중 임의의 것에 대한 캐싱 권리가 다른 요청자에게 부여되었는지가 결정된다. 상기 캐싱 권리가 다른 요청자에게 부여되지 않은 경우, 440에서, 상기 메모리 블록에 대한 접근요청은 승인된다. 만약 상기 캐싱 권리가 다른 요청자에게 부여되었다면, 430에서 상기 캐싱 권리는 취소되고 440에서 상기 메모리 블록의 접근 요청은 승인된다.
도5는 분산 캐쉬 일관성 프로토콜의 실행을 통해 이루어지는 캐쉬 권리 위임 방법 500에 관한 일실시예를 도시한다. 상기 방법 500은 블록 저장 장치 내의 메모리 블록들이 하나의 컴퓨팅 머신에 의해서 요청되고 그리고 다른 컴퓨팅 머신이 상기 메모리 블록들에 관한 캐슁 권리를 보유하는 경우에 일어날 수 있는 가능한 하나의 결과를 도시한다. 몇몇 실시예들에서, 상기 방법 500은 블록 위임 로직 150에 의해 구현된다. 510에서, 공유되는 저장 장치 내의 하나 이상의 메모리 블록들을 액세스(읽기 액세스 또는 쓰기 액세스)하기 위한 요청이 수신된다. 520에서, 하나 이상의 메모리 블록들에 대한 캐싱 권리가 다른 요청자에게 부여되었지가 결정된다. 상기 캐싱 권리가 다른 요청자에게 부여된 경우, 530에서, 상기 메모리 블록들에 대한 액세스는 거절된다. 만약 상기 캐싱 권리가 다른 요청자에게 부여되지 않은 경우, 540에서, 상기 메모리 블록들에 대한 액세스는 승인된다.
도6은 분산 캐쉬 일관성 프로토콜의 실행을 통해 이루어지는 위임된 캐슁 방법(delegated caching method) 600에 관한 일실시예를 도시한다. 상기 방법 600은 블록 위임 로직 150에 의해서 수행되었던 상기 방법들 300, 400, 500과 달리, 캐싱 로직에 의해 구현된다. 몇몇 실시예들에서, 상기 방법 600은 캐싱 로직 120, 140 또는 블록 메모리 인터페이스 장치 720, 740(도 7)에 의해 수행된다. 610에서, 공유되는 저장 장치 내의 하나 이상의 메모리 블록들에 액세스(읽기 또는 쓰기 액세스)하기 위한 요청이 수신된다. 620에서, 상기 요청의 수신자가 상기 메모리 블록들에 관한 캐싱 권리를 현재 보유하고 있는지의 여부가 결정된다. 만약 상기 캐싱 권리가 상기 요청의 수신자에게 있다면, 630에서 데이터가 캐쉬로부터 서브된다. 만약 상기 캐싱 권리가 상기 요청의 수신자에게 있지 않다면, 640에서 상기 요청은 상기 블록 저장 장치로부터 서브된다. 캐쉬 일관성은 유지가 되는데, 왜냐하면 상기 방법 600에 따르면, 캐싱 로직은 오직 상기 데이터에 대한 캐싱 권리를 가진 캐쉬에 데이터를 저장하거나 또는 상기 데이터에 대한 캐싱 권리를 가진 캐쉬로부터 데이터를 서브할 것이기 때문이다. 그러므로, 오직 하나의 캐쉬만이 주어진 데이터 블록에 대해 캐쉬할 수 있으며 다른 캐쉬는 동일한 데이터에 대한 변경(modify)을 할 수 없다.
일실시예에서, 상기 캐싱 로직(120, 도1)과 상기 블록 위임 로직(150, 도1) 간의 대역 외(데이터 경로 외부)(outside the data path) 통신을 위하여 프로토콜이 설립된다. 상기 프로토콜은 TCP/IP를 통해 수행된다. 블록 위임 로직은 블록 저장 장치(160, 도1) 상의 미리-정의되고 잘-알려진 포트(port)를 경청한다(listen). 캐싱 로직은 블록 위임 로직과의 연결(connection) 수립을 담당하고, 캐싱 로직은 상기 프로토콜 설립 전까지 어떠한 캐싱도 수행하지 않는다. 이러한 연결 수립된 이후, 상기 캐싱 로직은 블록 위임 로직과 프로토콜 핸드쉐이크를 실시하는데 이는 상기 캐싱 로직과 상기 블록 위임 로직 둘다가 지원할 수 있는 가장 최근의 공통 버전을 확립하기 위한 것이다.
상기 블록 위임 로직은 질의 인터페이스(query interface)를 지원하는데, 상기 인터페이스를 통해 캐슁 로직은 상기 캐슁 로직에게 할당된 기존의 모든 위임들(all existing delegations)을 상기 블록 위임 로직에게 질의(query)를 할 수 있다. 예를 들어, 이러한 인터페이스는 컴퓨팅 머신의 리부팅(reboot) 후에 사용되는데 그 이유는 위임(delegations)이 지속되어야 하기 때문이다(persistent). 블록 위임 로직 또한 인터페이스를 지원할 수도 있으며, 이를 통해 상기 캐슁 로직은 자신의 능력들(capabilities)을 알린다. 예를 들어, 상기 캐슁 로직은 지원하는 캐슁 타입(예컨대, 읽기-캐쉬(READ-CACHE), 라이트-쓰루(WRITE-THRU), 라이트-백(WRITE-BACK)), 사용 가능한 상기 캐쉬 사이즈(the size of the available cache), 블록 저장 장치당 또는 전체 운용 가능한 최대 위임 수(maximum number of delegations)를 통신할 수도 있다.
상기 캐슁 로직은 하나의 인터페이스를 제공하되, 상기 인터페이스를 통해 블록 위임 로직은 위임을 할당(assign), 위임들을 취소(revoke), 기존의 위임들을 수정(modify), 그리고 상기 캐쉬(cache) 내의 메모리 블록의 범위를 무효화(invalidate)시킬 수 있다. 또한, 상기 캐슁 로직에 의해서 정보/디버깅 인터페이스(information/debugging interface)가 제공될 수도 있다.
몇몇 상황들에서, 캐슁 로직은 SCSI 지속적 예약 (SCSI PERSISTENT RESERVATION) 요청을 상기 블록 저장 장치에 발행할 수 있다. 아래에서 보다 자세히 설명되는 바와 같이, 이러한 요청은 메타데이터(metadata)의 갱신을 허용하기 위해 수행되는데, 상기 메타 데이터는 가상 머신이 만들어지거나 또한 물리적 머신들 사이에서 이동시에 필수적인 것이다. 상기 요청에 후속하여, 캐슁 로직은 일반적으로 몇 가지 쓰기 I/O 요청들을 수행하되, 상기 요청들은 상기 블록 위임 로직에 의해 최소 두 가지 다른 방법들로 처리될 수 있다.
상기 블록 위임 로직은 상기 PERSISTENT RESERVATION 를 발행한 캐슁 로직을 제외한 모든 캐슁 로직들에 대한 기존의 모든 위임들을 취소할 수 있다. 이러한 경우, 상기 모든 캐싱 로직들은 그들의 캐쉬 내의 데이터를 무효화시킬 것이다. 대안적으로는, 상기 블록 위임 로직은, 상기 PERSISTENT RESERVATION 기간 동안 기입되는 메모리 블록들에 대한 위임을 갖는 캐슁 로직에게 무효화 요청을 전송할 수 있다. 이러한 접근법은 PERSISTENT RESERVATION 의 영향을 상대적으로 낮게 유지할 수 있다. 상기 PERSISTENT RESERVATION 의 발행자가 비-예약 동작(un-reserve operation)을 수행하면, 상기 캐싱은 그것이 멈춰진 곳에서 계속될 수 있다.
상기 분산 캐쉬 일관성 프로토콜은 라이트-백(write-back) 타입의 캐슁을 지원을 할 수 있도록 강화될 수 있는데, 라이트-백(write-back) 타입의 캐슁에서 각각의 로컬 캐쉬들은 상기 블록 저장 장치와 동기화되지 않은 부정 데이터(dirty data)를 보유할 수 있다. 이러한 것은, 상호 배타적 위임(mutually exclusive delegations)이라 지칭되는 다른 타입의 위임을 추가함으로서 달성될 수 있다. 이러한 타입의 위임은 주어진 임의의 메모리 블록에 대한 오직 하나의 리더(reader) 또는 라이터(writer)만을 허용할 것이다. 따라서, 메모리 블록에 대한 위임을 구비한 캐싱 로직들만이 상기 블록 저장 장치 내의 메모리 블록을 읽기 또는 쓰기할 수 있다. 이와 같은 타입의 위임의 경우, 요청된 블록들에 대한 캐싱 권리들의 위임을 보유하고 있지 않은 캐싱 로직으로부터 상기 블록 위임 로직이 I/O 요청을 수신한다면, 상기 블록 위임 로직은 다른 캐싱 로직이 상기 위임을 보유하고 있는지의 여부를 결정한다. 만일, 그 어떤 다른 로직도 상기 위임을 보유하고 있지 않다면, 상기 블록 위임 로직은 I/O 요청을 서빙하기 전에, 상기 요청한 캐싱 로직에게 상기 위임을 할당한다. 다른 캐싱 로직이 상기 위임을 보유하고 있다면, 상기 블록 위임 로직은 I/O 에러를 반환(return)하거나 또는 상기 I/O 요청을 서빙(serving)하기 전에 앞서 상기 다른 캐싱 로직에 대한 위임을 취소 또는 변경하고 그리고 상기 위임을 상기 요청한 캐싱 로직에게 할당한다.
도7은 분산 캐쉬 일관성 프로토콜에 관련된 클러스터화된(clustered) 가상 환경 700의 일실시예를 도시한다. 상기 가상화된 환경 700에서 두 개의 물리적 컴퓨팅 머신들 710,730이 존재한다. 물리적 컴퓨팅 머신 710은 가상 머신 1과 2에 대한 호스트 머신으로서 활동하며 반면에, 상기 물리적 컴퓨팅 머신 730은 가상 머신 3과 4에 대한 호스트로서 역할을 수행한다. 공유되는 LUN 760이 머신 710과 730 둘다 쪽으로 익스포트된다(exported). 컴퓨팅 머신 710은 가상화된 환경에서 메타데이터 마스터(metadata master)로서의 역할을 한다. 메타데이터 마스터는 LUN 760을 클러스터 파일 시스템(cluster file system)으로 포맷한다. 상기 메타데이터 마스터는 클러스터 파일 시스템에 대한 메타데이터 변조를 책임진다.
각각의 가상 머신은 상기 LUN 760 상의 파일로서 그 자신의 가상 디스크를 생성한다. 각 머신을 위한 가상 디스크 파일들은 상기 LUN 760 내의 해당 번호로 라벨링된다("md" 는 메타데이터를 나타내고, "u"는 할당되지 않은(unallocated) 블록들을 나타냄). 메타데이터 마스터가 상기 가상 디스크 파일을 생성한 이후에, 각각의 가상 머신은 이러한 파일들에 대한 완벽한 소유권(complete ownership)를 보유하게 된다. 하지만, 클러스터 파일 시스템의 메타데이터에 관련된 임의의 변화(예를 들면, 가상 디스크들의 추가/삭제/확장)들은 메타데이터 마스터(예를 들면, 머신 710)에 의해서 처리된다. 각각의 컴퓨팅 머신 710, 730은 캐쉬 715, 735를 포함하고, 상기 캐쉬들은 블록 메모리 인터페이스 720, 740에 의해 제어된다. 상기 블록 메모리 인터페이스 720, 740은 블록 위임 로직 750과의 캐쉬 동작을 조율한다. 상기 블록 메모리 인터페이스들은 장치로서, 상기 장치는 도1 및 도6에 관한 전술한 바와 같이, 캐싱 로직들에 관하여 앞서 설명된 동작들과 유사한 동작들을 수행한다.
정상 상태 읽기/쓰기(steady state read/write) 시나리오에서, 각각의 가상 머신은 상기 LUN 760 내의 각 메모리 블록들에 액세스한다. 본 발명에 따른 분산 캐쉬 일관성 프로토콜 하에서, 상기 블록 위임 로직 750은 각각의 블록 메모리 인터페이스 720, 740에 의해서 액세스되는 블록들의 범위를 식별할 것이며 그리고 상기 액세스된 블록들에 대한 적절한 위임을 상기 블록 메모리 인터페이스들에게 할당할 것이다.
만약 가상 머신 1이 컴퓨팅 머신 710으로부터 컴퓨팅 머신 730으로 이동한다면, 상기 메타데이터 마스터(컴퓨팅 머신 710)는 상기 LUN 760을 예약(reserve)하도록 PERSISTENT RESERVATION을 발행할 것인바, 따라서 상기 메타데이터가 업데이트될 수 있다. 상기 PERSISTENT RESERVATION 이 유효한 동안, 블록 위임 로직 750은 상기 메타데이터 마스터에 의해 기입되는 블록들에 대해서 위임 취소를 컴퓨팅 머신 730에게 전송할 것이다. 상기 기입되는 블록들은 대부분이 반드시 메타데이터이어야 하며, 이것은 상기 컴퓨팅 머신 730으로 하여금 차후 필요시 상기 LUN으로부터 업로딩된 메타데이터를 재-판독할 수 있게 한다. 가상 머신 1이 컴퓨팅 머신 730 으로부터 동작가능하면, 블록 메모리 인터페이스 740은 가상 머신 1에 대한 가상 디스크 파일에 액세스할 것이다. 이들 블록들에 대한 캐싱 권리(caching right)는 상기 블록 메모리 인터페이스 720가 여전히 소유하고 있음을 유의해야 한다. 상기 블록 위임 로직 750은 상기 블록 메모리 인터페이스 720에게 할당되었던 캐싱 권리를 취소 또는 변경할 것이고 그리고 새로운 캐싱 권리 위임을 상기 블록 메모리 인터페이스 740에게 할당할 것이다. 오직 하나의 블록 메모리 인터페이스만이 상기 LUN 760 내의 특정 메모리 블록들에 대한 캐싱 권리들을 가질 수 있으므로, 컴퓨팅 머신 730은 컴퓨팅 머신 710 상에서 구동되는 애플리케이션들에게 부정확한 데이터를 서빙하지 않을 것이다.
만일, 컴퓨팅 머신 710이 새로운 가상 머신을 생성한다면, 이는 상기 LUN 760을 예약하기 위해 PERSISTENT RESERVATION 요청을 발행할 것이며, 새로운 가상 디스크 파일을 생성하기 위해 메타데이터를 업데이트할 것이며 그리고 할당되지 않은 블록들로부터의 블록 범위들을 할당할 것이다. 상기 PERSISTENT RESERVATION 이 유효한 동안, 상기 블록 위임 로직 750은 상기 메타데이터 마스터에 의해서 기입되는 블록들에 대하여 위임 취소(delegation revocation)를 컴퓨팅 머신 730에게 전송할 것이다. 상기 기입되는 블록들은 대부분이 반드시 메타데이터이어야 하며, 이것은 상기 컴퓨팅 머신 730으로 하여금 차후 필요시 상기 LUN으로부터 업로딩된 메타데이터를 재-판독할 수 있게 한다. 일단 상기 컴퓨팅 머신 710이 메타데이터 업데이팅을 완료하고 그리고 상기 예약을 제거하면, 가상 머신은 상기 LUN 760 상의 그것의 가상 디스크 파일에 대한 읽기와 쓰기를 개시할 수 있다. 블록 위임 로직 750은, 새로운 가상 머신을 호스트 하는 컴퓨팅 머신 710 상의 블록 메모리 인터페이스 720에게 새로운 캐싱 권리 위임들을 할당할 것이다.
다음은 본 명세서에서 사용되는 선택된 용어들의 정의들을 포함한다. 정의들은 구현에 사용될 수 있는 그리고 용어의 범주 내에 들어오는 다양한 예들 및/또는 형태들을 포함한다. 예들은 제한적인 것으로 의도된 것이 아니다. 단수형 그리고 복수형 용어들 둘 모두가 이 정의들 내에 속할 수 있다.
"일 실시예", "실시예", "일 예", "예" 등에 대한 참조는 그렇게 설명된 실시예(들) 또는 예(들)이 구체적인 피쳐, 구조, 특징, 특성, 요소, 또는 제한을 포함함을 나타낼 수 있으나, 모든 실시예 또는 예가 그 특정한 피쳐, 구조, 특징, 특성, 요소 또는 제한을 포함하는 것은 아니다. 또한, 용어 "일 실시예"의 반복적인 사용이 동일한 실시예를 지칭할 수도 있으나 반드시 동일한 실시예를 지칭할 필요는 없다.
본 명세서에서 사용되는 것과 같은 "로직"은, 기능(들) 또는 동작(들)을 수행하기 위한 그리고/또는 다른 로직, 방법 및/또는 시스템으로부터의 기능 또는 동작을 하게 하는, 하드웨어, 펌웨어, 비-일시적 매체에 저장된 또는 머신 상에서 실행되는 명령어들, 및/또는 이것들 각각의 조합을 포함하나 이들로 제한되는 것은 아니다. 로직은 소프트웨어 제어 마이크로프로세서, 이산 로직(예컨대, ASIC), 아날로그 회로, 디지털 회로, 프로그램된 로직 디바이스, 명령어들을 포함하는 메모리 디바이스 등을 포함할 수 있다. 로직은 하나 이상의 게이트들, 게이트들의 조합, 또는 다른 회로 컴포넌트들을 포함할 수 있다. 복수의 로직들이 기술되는 경우, 상기 복수의 로직들을 하나의 물리적 로직에 통합시키는 것이 가능할 수 있다. 유사하게, 단일 로직이 기술되는 경우, 복수의 물리적 로직들 사이에 그 단일 로직을 분산시키는 것이 가능할 수 있다. 본 명세서에 기술된 컴포넌트들 또는 기능들 중 하나 이상은 하나 이상의 로직 소자를 사용하여 구현될 수 있다.
설명의 간결성을 위하여, 예시된 방법들이 일련의 블록들로 도시 및 기술되어 있다. 일부 블록들이 도시되고 기술된 것과는 상이한 순서로 그리고/또는 다른 블록들과 동시에 발생할 수 있으므로 방법들이 블록들의 순서에 의해 제한되지 않는다. 또한, 예시된 모든 블록들 보다 적은 개수의 블록들이 이용되어 예시적인 방법을 구현할 수도 있다. 블록들은 결합될 수도 있으며 혹은 복수의 구성요소들로 분리될 수도 있다. 또한, 추가적인 및/또는 대안적인 방법들은 예시된 블록들이 아닌, 추가의 블록들을 채용할 수도 있다.
용어 "포함하다(includes)" 또는 "포함하는(including)"가 상세한 설명 또는 청구항에서 사용되는 경우에, 상기 용어는 용어 "구성하는(comprising)"이 청구항에서 전이어로서 사용될 때 해석되는 것과 같은 유사한 방식으로 포괄적인 것으로 의도된 것이다.
예들을 설명함으로써 예시적인 시스템, 방법, 등이 예시되었고, 상기 예들이 상당히 자세히 기술되나, 그러한 세부사항들로 첨부된 청구항들의 범주를 한정하거나 어떠한 식으로든 제한하는 것은 본 출원인의 의도가 아니다. 물론, 여기에 기술된 시스템, 방법, 등을 기술하기 위한 목적의 컴포넌트들 또는 방법들의 모든 고려가능한 조합을 기술하는 것은 불가능하다. 따라서, 본 개시는 구체적인 세부사항들, 대표적 장치, 도시되고 설명된 예시적 예들로 제한되는 것이 아니다. 따라서, 본 출원은 첨부된 청구항의 범주 내에 들어오는 개조, 수정, 및 변형을 포괄하도록 의도된 것이다.

Claims (20)

  1. 장치로서,
    블록 저장 장치에 대한 액세스를 하나 이상의 다른 물리적 컴퓨팅 머신과 공유하는 물리적 컴퓨팅 머신에 관련된 캐쉬로서 구성되는 비-일시적인 저장 매체와;
    상기 물리적 컴퓨팅 머신과 관련된 캐슁 로직 -상기 캐슁 로직은 상기 캐쉬 내에 데이터를 캐슁하도록 구성되며, 상기 캐슁 로직은 메모리 블록들의 위임된(delegated) 범위 내에 저장된 데이터를 캐쉬하고 그리고 메모리 블록들의 상기 위임된 범위 외부에 저장된 데이터는 캐쉬하지 않으며- 과; 그리고
    상기 블록 저장 장치 내의 메모리 블록들의 상기 위임된 범위에 대한 캐슁 권리를 상기 캐슁 로직에게 할당하는 블록 위임 로직
    을 포함하며,
    상기 캐슁 권리는 상기 캐슁 로직에게 부여된 배타적 권리인 것을 특징으로 하는 장치.
  2. 제1항에 있어서,
    상기 블록 저장 장치에 대한 액세스를 구비하는 각각의 물리적 컴퓨팅 머신은 상기 블록 저장 장치에 관련된 각각의 블록 위임 로직과 캐싱 로직을 포함하는 것을 특징으로 하는 장치.
  3. 제1항에 있어서,
    상기 캐슁 로직은 상기 데이터를 캐슁함이 없이 상기 블록 저장 장치로부터의 상기 데이터에 액세스함으로써, 상기 위임된 범위 외부에 저장된 데이터에 대한 상기 물리적 머신으로부터의 입력/출력 요청을 서빙하도록 된 것을 특징으로 하는 장치.
  4. 제1항에 있어서,
    상기 블록 위임 로직은, 제 2 캐슁 로직에 할당된 위임된 범위의 일부인 상기 블록 저장 장치 내의 데이터 블록들에 쓰기 액세스를 하기 위한 제 1 캐슁 로직으로부터의 요청을 거절하도록 된 것을 특징으로 하는 장치.
  5. 제1항에 있어서,
    상기 블록 위임 로직으로부터 상기 캐슁 권리의 취소를 수신하면, 상기 캐슁 로직은 상기 캐쉬 내의 데이터를 무효화시키는 것을 특징으로 하는 장치.
  6. 제1항에 있어서,
    상기 블록 위임 로직은,
    메모리 블록들의 요청된 범위에 대한 캐슁 권리를, 메모리 블록들의 상기 요청된 범위 내의 임의의 메모리 블록들에 대한 캐슁 권리를 다른 캐슁 로직이 갖지 않는다면, 메모리 블록들의 상기 요청된 범위에 대해 액세스를 요청하는 캐슁 로직에게 할당하는 것을 특징으로 하는 장치.
  7. 제1항에 있어서,
    상기 블록 위임 로직은,
    상기 메모리 블록들에 대한 캐싱 권리를 갖지 않는 캐슁 로직에 대해서 상기 블록 저장 장치 내의 메모리 블록들에 대한 액세스를 거부하는 것을 특징으로 하는 장치.
  8. 방법으로서,
    2개 이상의 물리적 컴퓨팅 머신들에 의해서 공유되는 블록 저장 장치 내의 하나 이상의 메모리 블록들에 대한 액세스 요청을 요청자로부터 수신하는 단계와;
    상기 하나 이상의 메모리 블록들 중 임의의 것에 대한 캐싱 권리가 다른 요청자에게 부여되었는지의 여부를 결정하는 단계와; 그리고
    상기 캐슁 권리가 상기 다른 요청자에게 부여되지 않은 경우, 상기 하나 이상의 메모리 블록들에 대한 액세스를 상기 요청자에게 승인하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 캐슁 권리가 상기 다른 요청자에게 부여되지 않은 경우, 상기 요청된 메모리 블록들이 포함된 메모리 블록들의 범위에 대한 캐슁 권리를 상기 요청자에게 부여하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  10. 제8항에 있어서,
    상기 캐슁 권리가 상기 다른 요청자에게 부여된 경우, 상기 하나 이상의 메모리 블록들에 대한 액세스를 상기 요청자에게 승인하기 전에 상기 다른 요청자에게 부여된 캐슁 권리를 취소하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  11. 제8항에 있어서,
    상기 캐슁 권리가 상기 다른 요청자에게 부여된 경우, 상기 하나 이상의 메모리 블록들에 대한 상기 요청자의 액세스를 거부하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  12. 제8항에 있어서,
    상기 요청자의 리부팅(reboot)시, 상기 요청자가 현재 보유하고 있는 캐슁 권리들에 대한 식별자가 상기 요청자에게 제공되도록, 요청자들에게 부여된 캐슁 권리들에 대한 기록(record)을 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  13. 제8항에 있어서,
    상기 하나 이상의 메모리 블록들에 대한 지속적 예약(persistent reservation)을 제 1 요청자로부터 수신하고 그리고 상기 제 1 요청자가 상기 블록 저장 장치에 액세스하는 동안 다른 요청자들이 상기 블록 저장 장치에 액세스하는 것을 방지하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 지속적 예약을 수신하는 것에 응답하여, 상기 제 1 요청자가 상기 블록 저장 장치에 액세스하는 것을 허용하기 전에 모든 요청자들에게 부여된 모든 캐슁 권리들을 취소하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  15. 제13항에 있어서,
    상기 지속적 예약 동안 상기 제 1 요청자에 의해 수행된 소정의 메모리 블록에 대한 모든 기입(write)에 대하여, 상기 소정의 메모리 블록을 포함하는 메모리 블록들의 범위에 대한 캐슁 권리를 취소하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  16. 물리적 컴퓨팅 머신과 연결되는 블록 메모리 인터페이스로서, 상기 블록 메모리 인터페이스는,
    하나 이상의 다른 물리적 컴퓨팅 머신에 의해서 액세스가능한 블록 메모리 장치 내에 저장된 데이터에 액세스하기 위한 요청을 상기 물리적 컴퓨팅 머신으로부터 수신하고;
    요청된 하나 이상의 메모리 블록들을 포함하는 메모리 블록들의 범위에 대한 캐슁 권리가 상기 블록 메모리 인터페이스에게 할당되었는지의 여부를 결정하고;
    만일, 상기 캐슁 권리가 상기 블록 메모리 인터페이스에게 할당되었다면, 캐쉬 내의 데이터에 대한 액세스를 제공하도록 구성되며,
    상기 캐슁 권리는 상기 물리적 컴퓨팅 머신이 상기 블록 메모리 장치 내의 메모리 블록들의 범위를 캐슁하기 위한 배타적인 권리인 것을 특징으로 하는 블록 메모리 인터페이스.
  17. 제16항에 있어서,
    상기 블록 메모리 인터페이스는 또한, 캐슁 동작들을 수행하기 전에,
    상기 블록 메모리 장치와 대역 외 커넥션(out-of-band connection)을 확립하고;
    상기 블록 메모리 인터페이스의 캐슁 능력들을 상기 블록 메모리 장치에 알리고; 그리고
    상기 블록 메모리 인터페이스에 할당된 기존의 캐슁 권리들에 대해서 상기 블록 메모리 장치에 질의하는 것
    을 특징으로 하는 블록 메모리 인터페이스.
  18. 제17항에 있어서,
    상기 블록 메모리 인터페이스는 또한,
    상기 캐쉬 내에 존재하는 데이터와 기존의 캐슁 권리들에 대한 상기 질의에 대한 응답을 통해 확인된 캐슁 권리들을 조화(reconcile)시키도록 된 것을 특징으로 하는 블록 메모리 인터페이스.
  19. 제16항에 있어서,
    운영 시스템의 제 1 및 제 2 인스턴스가 상기 물리적 컴퓨팅 머신 상에서 구동되며, 상기 운영 시스템의 상기 제 1 및 제 2 인스턴스는 제 1 및 제 2 파일을 각각 액세스하며, 각각의 파일은 메모리 블록들의 세트에 대응하며, 그리고 상기 블록 메모리 인터페이스는 상기 캐쉬 내에 저장된 메모리 블록들 중 어떤 것이 상기 제 1 및 제 2 파일에 대응하는지를 판별함이 없이, 캐슁 동작들을 수행하는 것을 특징으로 하는 블록 메모리 인터페이스.
  20. 제16항에 있어서,
    상기 블록 메모리 인터페이스는 또한,
    취소된 메모리 블록들의 범위에 대한 캐슁 권리의 취소를 수신하고; 그리고
    상기 취소된 메모리 블록들의 범위에 대응하는 상기 캐쉬에 저장된 데이터를 무효화시키는 것을 특징으로 하는 블록 메모리 인터페이스.
KR1020137011458A 2010-10-06 2011-09-23 분산 캐쉬 일관성 프로토콜 KR101845110B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39058810P 2010-10-06 2010-10-06
US61/390,588 2010-10-06
PCT/US2011/052961 WO2012047551A1 (en) 2010-10-06 2011-09-23 Distributed cache coherency protocol

Publications (2)

Publication Number Publication Date
KR20130142123A true KR20130142123A (ko) 2013-12-27
KR101845110B1 KR101845110B1 (ko) 2018-04-03

Family

ID=44736104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137011458A KR101845110B1 (ko) 2010-10-06 2011-09-23 분산 캐쉬 일관성 프로토콜

Country Status (4)

Country Link
US (1) US9043560B2 (ko)
KR (1) KR101845110B1 (ko)
CN (1) CN103154909B (ko)
WO (1) WO2012047551A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
US9507524B1 (en) 2012-06-15 2016-11-29 Qlogic, Corporation In-band management using an intelligent adapter and methods thereof
US20140059293A1 (en) * 2012-08-27 2014-02-27 Samsung Electronics Co., Ltd. Method for protecting a gpt cached disks data integrity in an external operating system environment
US9454487B2 (en) 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9164949B1 (en) 2012-12-28 2015-10-20 Emc Corporation System and method for LUN and cache management
US8984234B2 (en) 2013-01-11 2015-03-17 Lsi Corporation Subtractive validation of cache lines for virtual machines
US9501410B2 (en) * 2013-03-15 2016-11-22 Veritas Technologies Llc Providing local cache coherency in a shared storage environment
US9378141B1 (en) * 2013-04-05 2016-06-28 Veritas Technologies Llc Local cache pre-warming
CN103281200B (zh) * 2013-05-07 2016-07-06 成都交大光芒科技股份有限公司 一种用于轨道交通综合监控系统的冗余热备实现方法
US9619248B2 (en) * 2013-08-30 2017-04-11 Bluedata Software, Inc. Configuration manager and method for configuring a host system for processing a processing job in a virtual data-processing environment
US9454305B1 (en) 2014-01-27 2016-09-27 Qlogic, Corporation Method and system for managing storage reservation
CN103902354A (zh) * 2014-04-11 2014-07-02 浪潮电子信息产业股份有限公司 一种虚拟化应用中快速初始化磁盘的方法
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
US9477414B1 (en) * 2014-08-20 2016-10-25 Qlogic, Corporation Methods and systems for improved caching with data recovery
US9460017B1 (en) 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring
US9483207B1 (en) 2015-01-09 2016-11-01 Qlogic, Corporation Methods and systems for efficient caching using an intelligent storage adapter
CN105549905B (zh) * 2015-12-09 2018-06-01 上海理工大学 一种多虚拟机访问分布式对象存储系统的方法
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
CN106657356A (zh) * 2016-12-29 2017-05-10 郑州云海信息技术有限公司 一种云存储系统的数据写入方法、装置及云存储系统
CN113946286A (zh) * 2021-08-17 2022-01-18 丝路信息港云计算科技有限公司 一种云节点块级缓存方法,存储装置及服务器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4244572B2 (ja) * 2002-07-04 2009-03-25 ソニー株式会社 キャッシュ装置、およびキャッシュデータ管理方法、並びにコンピュータ・プログラム
US8019779B2 (en) * 2004-05-04 2011-09-13 International Business Machines Corporation Efficient locking protocol for sub-document concurrency control using prefix encoded node identifiers in XML databases
US7433898B1 (en) * 2004-06-01 2008-10-07 Sanbolic, Inc. Methods and apparatus for shared storage journaling
US7694065B2 (en) * 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
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
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US8307177B2 (en) * 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US10831721B2 (en) * 2009-03-23 2020-11-10 Riverbed Technology, Inc. Virtualized data storage system architecture

Also Published As

Publication number Publication date
KR101845110B1 (ko) 2018-04-03
US9043560B2 (en) 2015-05-26
CN103154909A (zh) 2013-06-12
US20120089786A1 (en) 2012-04-12
WO2012047551A1 (en) 2012-04-12
CN103154909B (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
KR101845110B1 (ko) 분산 캐쉬 일관성 프로토콜
EP3433737B1 (en) Memory sharing for working data using rdma
US10552337B2 (en) Memory management and device
Lameter NUMA (Non-Uniform Memory Access): An Overview: NUMA becomes more common because memory controllers get close to execution units on microprocessors.
US9489239B2 (en) Systems and methods to manage tiered cache data storage
US20120102137A1 (en) Cluster cache coherency protocol
CA2593289A1 (en) A new point-in-time copy operation
US9298624B2 (en) Systems and methods for cache coherence protocol
US9519546B2 (en) Striping cache blocks with logical block address scrambling
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
KR20220002746A (ko) 통신 네트워크 연결을 통한 운영 체제 간 메모리 서비스
KR101321369B1 (ko) 디스크 블록 액세스 처리 방법 및 시스템
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US7793051B1 (en) Global shared memory subsystem
US8627016B2 (en) Maintaining data coherence by using data domains
JP2006164218A (ja) ストレージシステム及びそのキャッシュ制御方法
US9405689B2 (en) Locally caching data from a shared storage
US11928336B2 (en) Systems and methods for heterogeneous storage systems
JP2009026310A (ja) データ記憶方法
CN113906399A (zh) 基于连接带宽节制存储器即服务
CN116700605A (zh) 用于异构存储系统的系统和方法
CN115756742A (zh) 直通i/o虚拟化的性能优化设计方法、系统、介质及设备

Legal Events

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