KR102008042B1 - 저장 풀에서의 디스크 소유권 중재 기법 - Google Patents

저장 풀에서의 디스크 소유권 중재 기법 Download PDF

Info

Publication number
KR102008042B1
KR102008042B1 KR1020147025714A KR20147025714A KR102008042B1 KR 102008042 B1 KR102008042 B1 KR 102008042B1 KR 1020147025714 A KR1020147025714 A KR 1020147025714A KR 20147025714 A KR20147025714 A KR 20147025714A KR 102008042 B1 KR102008042 B1 KR 102008042B1
Authority
KR
South Korea
Prior art keywords
node
reservation
registration
key
data structure
Prior art date
Application number
KR1020147025714A
Other languages
English (en)
Other versions
KR20140131961A (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 KR20140131961A publication Critical patent/KR20140131961A/ko
Application granted granted Critical
Publication of KR102008042B1 publication Critical patent/KR102008042B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 하나 이상의 물리적 디스크에 대한 소유권을 수립하기 위한 지속적 예약 기법(persistent reservation techniques)을 구현하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 이들 지속적 예약 기법은 저장 풀 내의 물리적 디스크와 기타 저장을 위한 구조체에 대한 소유권을 결정하기 위해 채용될 수 있다. 본 발명의 지속적 예약 기법을 이용하면, 네트워크 구획이 발생한 경우 물리적 디스크의 방어자는 도전자가 더 이상 방어자의 구획 내에 있지 않다는 통지를 수신할 때까지는 도전자의 등록 키를 제거하지 않는다. 이러한 방식으로, 물리적 디스크의 적절한 소유관계가 해결될 때까지 도전자의 키가 제거되지 않으므로 도전자 상에서 실행되는 애플리케이션으로부터의 진행 중인 I/O는 실패하지 않게 된다.

Description

저장 풀에서의 디스크 소유권 중재 기법{ARBITRATION OF DISK OWNERSHIP IN A STORAGE POOL}
본 발명은 저장 풀에서 디스크 소유권을 중재하는 기법에 관한 것이다.
컴퓨터 시스템 및 관련 기술은 이 사회의 많은 측면에 영향을 미치고 있다. 정보를 처리하는 컴퓨터의 성능은 우리가 생활하고 일하는 방식을 완전히 바꿔 놓았다. 이제 컴퓨터 시스템이 도래하기 전에는 수동으로 수행되었던 다수의 작업(예컨대, 워드 프로세싱, 스케쥴링, 회계 등)을 컴퓨터 시스템으로 수행하는 것이 통상적이다. 근래에는 컴퓨터 시스템이 다른 컴퓨터 시스템이나 기타 전자 장치들과 연결되어 유/무선 컴퓨터 네트워크를 형성함으로써, 이를 통해 컴퓨터 시스템과 기타 전자 장치들이 전자 데이터를 전송할 수 있게 되었다. 따라서, 많은 컴퓨팅 작업이 여러 상이한 컴퓨터 시스템 및/또는 여러 상이한 컴퓨팅 환경에 걸쳐 분산되게 되었다.
클러스터링이란 본 명세서에서 노드라고 지칭되는 여러 컴퓨터 시스템들을 그룹으로 묶는 것을 의미한다. 클러스터는 종종 공유 저장부를 이용하여 임의의 노드 상에서 실행되는 애플리케이션들이 동일한 데이터에 액세스할 수 있도록 한다. 공유된 저장부는 애플리케이션이 클러스터 내의 여러 노드 사이에서 대체 실행(fail over)하도록 한다. 예를 들어, 하나의 노드가 실패한 경우, 그 실패한 노드 상에서 실행 중이던 애플리케이션은 다른 노드로 스위칭되어 계속하여 실행될 수 있다. 대체 실행된 애플리케이션에 의해 사용되는 데이터는 모든 노드로부터 액세스가능한 공유 저장부 상에 저장되어 있으므로, 다른 노드로 스위칭된 후에도 애플리케이션이 계속해서 실행(이를테면, 동일한 데이터를 액세스)될 수 있다. 이러한 방식으로, 대체 실행은 본질적으로 사용자의 측면에서 볼 때 투명(transparent)한 방식을 취한다.
클러스터를 구현하기 위해서는 노드들 사이에서 일관성(consistency)을 유지할 필요가 있다. 예컨대, 클러스터 설정 데이터(cluster configuration data)는 각 노드가 설정 데이터에 대한 액세스를 가지고 있더라도 노드들 사이에서 일관되게 유지되어야 한다. 각 노드가 클러스터 내의 다른 노드들과 통신할 수 있는 한, 일관성은 유지될 수 있다. 어떤 클러스터에서는 각 노드가 클러스터 설정 데이터의 사본을 저장하고, 클러스터 서비스는 노드들 사이에서 데이터를 동기화한다.
네트워크 구획(network partition)이 발생하여 노드들이 통신할 수 없게 되는 경우 문제가 생긴다. 도 1(종래 기술)은 클러스터(100) 내에서 네트워크 구획(107)이 발생하여 제 1 구획에 속한 노드들(노드 101, 102)이 제 2 구획에 속한 노드들(노드 103, 104)과 통신할 수 없게 된 예를 나타내고 있다. 공유 저장부(106)는 클러스터의 각 노드에 액세스할 수 있으나, 제 1 구획 내의 노드들은 네 2 구획 내의 노드들과 통신할 수 없다. 클러스터 내에서 이러한 분리(split)가 발생하면, 하나의 구획만이 계속하여 클러스터로서 기능하여 일관성이 유지되도록 보장해야 한다.
클러스터 내의 하나의 구획만이 계속해서 실행되도록(즉, 공유 저장부(106)에 대한 액세스를 갖도록) 보장하기 위해, 클러스터 서비스는 구획이 의사 정족수(quorum)를 충족시킬 것을 요구한다. 일반적으로, "의사 정족수를 충족"시킨다는 것은 해당 구획이 클러스터 내의 구성요소들의 과반수를 포함하는 것을 의미한다. 클러스터의 구성에 따라, 구성요소는 클러스터의 노드들과 (어쩌면) 디스크(종종 디스크 위트니스(disk witness)라고 지칭함) 또는 파일 공유(file share)를 포함할 수 있다. 디스크 위트니스는 (다수를 판정할 때만 그 노드가 고려되어) 짝수 개의 노드가 존재하여 동률(tie)이 발생하는 상황을 방지한다.
도 1에서, 제 1 및 제 2 구획 모두는 동일한 개수의 노드들을 갖는다. 따라서, 공유 저장부(106)에 대한 소유권(ownership)을 갖게 되는 쪽의 구획이 의사 정족수(즉, 2개의 노드 + 1 개의 디스크)를 갖게 될 것이다. 노드가 디스크를 소유하면, 그 노드는 디스크에 대한 기록 액세스(write access)를 갖는다. 다른 노드도 디스크에 기록은 할 수 있으나, 어느 노드가 액세스할 수 있는지는 소유자(owner)가 제어한다. 이러한 방식으로, 누가 디스크에 액세스할 수 있는지에 대한 제어는 단일 노드가 갖게 된다. 도 1에서, 네트워크 구획(107)이 일어나기 전에는 노드(101)가 공유 저장부(106)에 대한 소유권을 갖는다.
일반적으로, 소유자 노드는 자신이 클러스터 멤버라고 알고 있으면서 (예를 들어, 구획이 발생한다면) 소유자 노드의 구획 내에 있는 노드들에 대한 액세스를 허용한다. 그러므로, 구획이 발생하면, 디스크를 소유하는 노드는 다수에 속하지 않는 노드들이 공유 저장부에 액세스하는 것을 방지하는 것을 담당하게 된다. 이를테면, 도 1에서 네트워크 구획(107)이 발생한 후, 노드(101)는 소유자로서 노드들(103, 104)이 공유 저장부(106)에 액세스하지 못하도록 막을 것이다.
디스크 소유권은 PR(Persistent Reservation: 지속적 예약)이라고 알려진 SCSI 프로토콜을 사용하여 결정되고 관리된다. PR은 방어/도전 메커니즘(defense/challenge mechanism)이다. PR에서 각 노드는 등록 키라고 알려진 고유의 키를 갖는다. 디스크에 대한 소유권을 획득하기 위해 노드는 자신의 키를 등록시켜야 하고, 이어서 그 키를 이용한 예약을 획득해야 한다.
도 2a(종래 기술)는 PR에서 사용되는 2 개의 테이블을 도시하고 있다. 도 2a는 노드(101)가 디스크(공유 저장부(106))의 현재 소유자일 때 두 테이블의 상태를 나타낸다. 이 예에서는 두 개의 테이블이 도시되었지만, 하나의 테이블 또는 유사한 정보를 저장하는 기타 데이터 구조체를 사용하여 구현될 수 있다.
디스크에 대한 기록 액세스를 갖기 위해 노드는 자신의 등록 키를 등록해야 한다. 노드는 자신의 등록 키를 등록 테이블(201)에 추가함으로써 등록한다. 예를 들면, 등록 테이블(201)은 노드(101 ~ 104)가 각각 자신의 키를 등록시켰음을 보여주고 있다. 따라서, 노드들(101 ~ 104)은 공유 저장부(106)에 대해 기록 액세스를 갖는다.
등록이 되고 나면 노드는 자신의 키를 예약 테이블(202)에 추가함으로써 이를 예약하려 시도한다. 이를테면, 예약 테이블(202)은 노드(101)가 자신의 키를 성공적으로 예약시켜, 노드(101)가 디스크의 소유자가 되었음을 보여주고 있다. 노드가 자신의 키를 예약하고 나면, 이를 이용하여 디스크를 제어한다.
그러나, 노드(도전자(challenger)라고 지칭함)가 자신의 키를 예약하려고 할 때 이미 예약이 존재하고 있다면, 그 예약은 실패할 것이다. 예컨대, 노드(101)의 키가 이미 예약되어 있으므로, 자신의 키를 예약하려는 다른 노드의 시도는 실패할 것이다. 이와 같이 실패한 예약의 일부로서, 도전자는 현재 예약 키(예를 들어, 노드(101)의 키)를 수신한다.
예약이 이미 존재하는 경우, 노드는 자신의 키를 예약할 수 있게 되기 전에 먼저 예약을 선취(preempt)해야 한다. 소유자 노드(방어자(defender)라고 지칭함)가 디스크에 대한 자신의 소유권을 방어할 수 있도록 하기 위해, PR 규칙은 예약이 실패한 후 선취 커맨드를 발행하기 전 지정된 시간(일반적으로 6초) 동안 도전자가 기다릴 것을 요구한다. 이 시간 후에, 도전자가 깨어나서(awake) 예약 테이블로부터 방어자의 키를 제거하도록 시도하라는 선취 커맨드를 발행한다. 선취 커맨드는 현재 예약 키(도전자가 예약 실패했을 때 수신한 예약 테이블 내에 예약된 방어자의 키)는 물론 도전자의 키도 지정(specify)한다. 이를테면, 선취 커맨드는 예약 테이블(202)로부터 제거할 키(방어자의 키)와 예약 테이블(202) 내에 예약할 키(도전자의 키)도 지정한다.
선취 커맨드가 성공하려면, 도전자의 키는 등록 테이블(201) 내에 여전히 존재해야 한다. 자신의 소유권을 방어하기 위해서는 (즉, 도전자의 선취 커맨드가 실패하도록 하기 위해서는), 방어자는 도전자가 선취 커맨드를 발행하기 전에 등록 테이블(201)로부터 도전자의 등록 키를 제거해야 한다. 일반적으로, 3초 마다 방어자는 깨어나서 예약 테이블(202)을 확인하여, 도전이 있었는지를 판단한다. 방어자가 디스크를 소유하므로, 방어자는 등록 테이블(201)로부터 다른 노드의 등록 키를 제거할 수 있다.
노드(101)가 등록 테이블(201) 내에 노드(104)의 키가 있는 것을 발견하면, 노드(101)는 등록 테이블(201)로부터 노드(104)의 등록 키를 제거할 것이다. 도 2b(종래 기술)은 노드(101)가 노드(103)의 도전을 방어한 후의 두 개의 테이블의 상태를 보여준다. 도시한 바와 같이, 노드(104)의 키는 더 이상 등록 테이블(201) 내에 존재하지 않는다.
따라서, 노드(104)가 깨어나서 선취 커맨드를 발행하더라도, 방어자가 이미 노드(104)의 등록 키를 제거한 후이므로, 선취 커맨드는 실패할 것이다. 노드(104)의 등록 키가 등록 테이블(201)로부터 제거되었으므로, 노드(104)는 더 이상 공유 저장부(106)에 액세스할 수 없다.
방어자는 도전자보다 짧은 시간 동안만 수면 상태를 취하므로, 방어자가 동작하고 있고 자신의 소유권을 방어하지 않을 이유가 생기지 않는 한, 방어자는 소유권에 대해 도전하는 모든 노드의 등록 키를 주기적으로 제거함으로써 자신의 소유권을 유지할 수 있을 것이다. 그러나, 방어자가 실패하거나 다른 이유로 디스크에 대한 액세스를 상실하면, 도전자의 등록 키를 제거하지 못할 것이고, 따라서 도전자가 성공적으로 소유권을 선취(즉, 방어자의 키를 등록 및 예약 테이블로부터 제거)하게 될 것이다.
방어로서 도전자의 등록 키를 제거하는 것에 더하여, 방어자는 활성화된 클러스터의 일부라고 인식되지 않는 모든 노드의 등록 키들을 주기적으로 제거할 수도 있다. 달리 말해서, 클러스터 내의 노드는 자신이 어느 노드와 통신할 수 있는지에 관해 주기적으로 갱신된다. (예를 들어, 네트워크 구획으로 인해) 소유자 노드가 자신이 클러스터 내의 다른 노드와 통신할 수 없다는 통지를 수신하면, 소유자 노드는 다른 노드의 등록 키를 제거하여 그 다른 노드가 클러스터 저장부를 액세스하지 못하도록 막을 것이다.
따라서, 통상적인 PR에서는 어떤 노드의 등록 키가 제거되는 2 가지 일반적인 방법이 있는데, (1) 하나는 소유자 노드가 그 어떤 노드와 통신할 수 없다는 통지를 수신한 경우이고, (2) 또 하나는 그 어떤 노드가 공유 저장부에 대한 소유권에 대해 도전했다가 실패한 경우이다.
네트워크 구획이 발생하면 (즉, 노드가 클러스터 내의 각 노드와 통신할 수 없다는 것을 알게 되면), 디스크의 소유권을 갖지 못하는 구획 내의 노드는 일반적으로 디스크의 소유권에 대한 도전을 시작할 것이다. 예컨대, 도 1에서 네트워크 구획(107)이 발생한 후, 하나 이상의 노드들(103, 104)은 (노드들(103, 104)이 의사 정족수를 달성(하여 클러스터 내에서 계속하여 작동)할 수 있기 위해서는 공유 저장부(106)에 대한 소유권이 필요하므로) 노드(101)의 공유 저장부(106)에 대한 소유권을 선취하려는 도전을 개시할 수 있다.
도 1에서, 네트워크 구획(107)은 노드들 중 어떤 것도 공유 저장부(106)에 액세스하지 못하도록 막는다 (즉, 노드들(101, 102)이 노드들(103, 104)과 통신하지 못하도록 막는다). 따라서, 노드(101)는 노드(103)나 노드(104)의 도전으로부터 자신의 공유 저장부(106)의 소유권을 계속해서 방어한다.
그러나, 노드(101)가 실패하거나 공유 저장부(106)에 대한 접속을 손실하면 (또는 자신이 의사 정족수를 달성할 수 있는 구획에 속하지 않아서 방어해서는 안 된다고 판단하면), (노드(101)는 노드(103)나 노드(104)의 등록 키를 제거할 수 없을 것이므로) 노드들(103, 104)로부터의 도전이 성공할 것이다. 그 결과, 도전자(노드(103) 또는 노드(104))가 깨어나면, 그 등록 키는 등록 테이블(201) 내에 여전히 존재할 것이고, 따라서, 노드(101)의 소유권을 선취할 수 있게 될 것이다. 이어서, 도전자는 공유 저장부(106)에 대한 소유권을 취할 것이다. (노드(101 또는 102)가 소유권에 대한 도전을 개시하면) 소유자로서 노드는 전술한 바와 같이 자신의 소유권을 방어하기 시작할 것이다.
전술한 예는 노드와 저장부에 소유권을 결정할 투표권(votes)을 제공하는 클러스터를 기술하고 있다. 전술한 PR 기법을 이용하는 다른 투표 방안도 존재한다. 이들 방안들은 노드만의 투표(노드들만 투표권을 가짐) 및 노드 + 파일 공유(file share) 투표(노드와 파일 공유 모두 투표권을 가짐)를 포함한다. 노드만의 투표는 클러스터가 홀수 개의 노드를 포함하는 경우 흔히 사용된다. 노드 + 파일 공유 투표는 전술한 노드 + 저장부 투표와 유사하지만, 공유 저장부로서 파일 공유가 사용될 때 이용된다.
전술한 PR은 많은 전형적인 저장부 구성(storage configurations)에서 올바르게 작동한다. 그러나, 전술한 바와 같이 PR은 다른 유형의 저장부 구성에서 사용되는 경우 (예를 들어, 클러스터가 공유 저장부로서 가상 디스크를 채용하는 경우) 항상 만족스럽게 동작하지는 못한다. 윈도우 운영 체제에서, 가상 디스크는 저장 스페이스(Storage Spaces)"라고 지칭된다. 저장 스페이스에서는 여러 개의 물리적 디스크들이 결합되어 하나의 저장 풀이 된다. 저장 풀은 하나 이상의 논리적 "스페이스" (또는 가상 디스크)로 나뉜다. 각 스페이스는 가상의 것이고 실제로는 여러 상이한 물리적 저장 장치에 걸쳐 존재할 수 있지만, 애플리케이션에는 하나의 물리적 저장부로서 나타난다.
이를테면, 도 3(종래 기술)은 도 1의 클러스터(100)와 유사한 클러스터(300)를 도시하는데, 공유 저장부(106)가 저장 풀(306)로 대체되었다는 점은 다르다. 저장 풀(306)은 3 개의 물리적 저장 장치(310 ~ 312)를 포함한다. 이 풀로부터 사용자는 하나 이상의 스페이스들을 생성할 수 있다. 도 3은 사용자가 하나의 스페이스(307)를 생성한 것을 보여주고 있다. 스페이스(307)는 클러스터 내의 각 노드 상에 있는 애플리케이션의 관점에서는 정규 물리적 디스크로 취급될 수 있다.
스페이스가 사용되면, 클러스터의 노드들은 하부 풀 내에 있는 각각의 물리적 디스크에 대한 액세스를 가질 필요가 있는데, 이는 스페이스가 물리적 디스크들 사이에 걸쳐 있기 때문이다. 예를 들어, 클러스터(300) 내에서 스페이스(307)에 기록된 데이터는 저장 풀(306) 내의 3 개의 물리적 저장 장치 중 임의의 것에 물리적으로 저장될 수 있다. 스페이스를 사용하는 경우, 하나의 노드가 저장 풀을 소유한다 (즉, 그 노드가 풀 내의 각 물리적 디스크를 소유한다).
스페이스를 이용하는 표준 PR 기법을 적용함에 있어 발생하는 문제는, 스페이스들이 생성된 풀의 소유권을 도전자가 선취하려고 시도할 때마다, 풀의 소유자가 도전자의 키를 제거하여, (도전자 상의 애플리케이션들이 물리적 디스크에 기록할 수 있기 위해서는 도전자의 키가 물리적 디스크에 등록되어야 하기 때문에) 도전자 상의 애플리케이션으로부터의 스페이스에 대한 모든 I/O가 실패하게 된다는 것이다.
도전자로부터의 I/O가 실패하도록 하는 것은 도전의 잘못된 결과일 것이다. 예컨대, 도전자는 방어자에 앞서 네트워크 구획에 대한 통지를 받을 수 있다. 네트워크 구획에 응답하여 도전자는 풀에 대한 도전을 개시한다. 도전자가 의사 정족수를 충족시키는 구획 내에 있는 경우, 올바른 결과는 도전자가 풀의 소유권을 취하려는 도전에서 성공하(여, 도전자의 구획이 계속해서 실행되도록 하)는 것이다.
그러나, 방어자가 네트워크 구획에 대해 통지받지 못했으면 (따라서, 의사 정족수를 충족시키지 못하는 구획 내에 있다는 사실을 통지받지 못했으면), 방어자는 풀에 대한 자신의 소유권을 성공적으로 방어할 것이다. 전술한 통상의 PR 기법을 사용하면, 이러한 방어는 도전자로부터의 모든 기록이 실패하도록 도전자의 등록 키를 제거하는 것을 포함한다. 방어자는 네트워크 구획에 대한 통지를 수신할 때까지는 자신의 소유권을 계속해서 성공적으로 방어한다. 따라서, 방어자가 네트워크 구획에 대한 통지를 수신하기까지, 클러스터는 의사 정족수를 갖는 구획(즉, 도전자의 구획) 상에서 적절한 동작을 개시하지 못할 것이다. 다른 시나리오에서는 통상의 PR 기법을 적용하면 바람직하지 못한 결과를 초래한다.
개요
본 발명은 하나 이상의 물리적 디스크에 대한 소유권을 수립하기 위한 지속적 예약 기법(persistent reservation techniques)을 구현하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 이들 지속적 예약 기법은 저장 풀 내의 물리적 디스크와 기타 저장을 위한 구조체에 대한 소유권을 결정하기 위해 채용될 수 있다. 본 발명의 지속적 예약 기법을 이용하면, 네트워크 구획이 발생한 경우 물리적 디스크의 방어자는 도전자가 더 이상 방어자의 구획 내에 있지 않다는 통지를 수신할 때까지는 도전자의 등록 키를 제거하지 않는다. 이러한 방식으로, 물리적 디스크의 적절한 소유관계가 해결될 때까지 도전자의 키가 제거되지 않으므로 도전자 상에서 실행되는 애플리케이션으로부터의 진행 중인 I/O는 실패하지 않게 된다.
일 실시예에서는 제 1 노드가 저장 장치에 대한 제 1 노드의 지속적 예약을 선취하려고 하는 다른 노드의 시도에 대해 방어한다. 제 1 노드가 클러스터 내의 다른 노드와 통신하지 못하도록 하는 네트워크 구획이 발생한 후, 제 1 노드가 네트워크 구획에 대해 통지받기 전, 제 1 노드는 클러스터 내의 다른 노드가 클러스터의 노드들에 의해 공유되는 저장 장치를 예약하려고 시도하였다는 것을 검출하게 된다. 이 검출은 다른 노드가 등록 데이터 구조체 내에 있는 자신의 등록 키를 변경하였다는 것을 식별하는 것을 포함한다.
제 1 노드는 자신의 등록 키를 변경하고, 변경된 등록 키를 등록 데이터 구조체에 등록하며, 변경된 등록 키를 등록 데이터 구조체에 예약한다.
다른 실시예에서, 제 2 노드는 제 2 노드를 위한 지속적 예약을 획득하기 위해 저장 장치에 대한 제 1 노드의 지속적 예약을 제거하려고 시도한다. 제 2 노드는 제 2 노드가 제 1 노드와 통신하지 못하도록 하는 네트워크 구획이 발생했다는 통지를 수신한다.
제 2 노드는 저장 장치에 대한 지속적 예약을 획득하기 위해 제 2 노드의 등록 키를 예약하려고 시도한다. 예약 시도는 제 2 노드가 예약 데이터 구조체 내에 저장된 제 1 노드의 등록 키를 판독하고, 제 1 노드의 키를 저장하는 것을 포함한다. 예약 시도는 제 2 노드가 제 2 노드의 등록 키를 변경하고, 변경된 등록 키를 등록하는 것도 포함한다. 예약 시도는 제 2 노드가 제 1 노드의 지속적 예약을 제거하라는 선취 커맨드를 발행하기 전 지정된 시간 동안 수면 모드를 취하는 것도 포함한다.
본 개요는 후속하는 발명의 상세한 설명에서 설명될 개념들을 선택하여 간략한 형식으로 소개하기 위한 것이다. 본 개요는 특허청구범위의 청구 대상의 중심 특징이나 핵심 특징을 밝히고자 함이 아니며, 특허청구범위의 청구 대상의 범위를 결정하는 것을 돕고자 함도 아니다.
본 발명의 추가적인 특징과 장점은 후속하는 발명의 상세한 설명에 기술되거나 그로부터 자명할 것이며, 본 발명을 실시함으로써 학습될 수도 있을 것이다. 본 발명의 특징과 장점은 첨부하는 특허청구범위에서 구체적으로 지적된 도구나 조합에 의해 구현되고 달성될 수 있다. 본 발명의 이러한 특징 및 다른 특징들은 후속하는 발명의 상세한 설명과 청부하는 특허청구범위로부터 충분히 분명해질 것이며, 이하에서 기술하는대로 본 발명을 실시함으로써 학습될 수도 있을 것이다.
본 발명의 전술한 장점과 특징, 그리고 기타 장점과 특징이 달성될 수 있도록 하는 방식을 기술하기 위해, 첨부하는 도면에 도시된 구체적인 실시예들을 참조하여, 위에서 간략히 설명한 발명에 대해 보다 구체적으로 설명하도록 한다. 이들 도면은 본 발명의 전형적인 실시예들을 묘사한 것일 뿐이고, 따라서, 본 발명의 범위를 제한하는 것으로 해석해서는 안 되며, 본 발명은 첨부하는 도면을 사용하여 보다 구체적이고 자세히 기술되고 설명될 것이다.
도 1은 통상의 지속적 예약 기법을 사용하는 전형적인 노드들의 클러스터를 도시한다.
도 2a 내지 도 2b는 통상적인 지속 예약에서 사용되는 예시적인 테이블들을 보여준다.
도 3은 공유 디스크로서 가상 디스크를 사용하는 노드들의 클러스터를 나타낸다.
도 4는 공유 저장부로서 복수 개의 가상 디스크들을 사용하는 다른 노드들의 클러스터를 묘사한다.
도 5a 내지 5f는 본 발명에 따른 지속적 예약 기법을 구현하는 데 사용되는 예시적인 테이블들을 도시한다.
도 6은 본 발명에 따른 지속적 예약을 위해 사용될 수 있는 등록 키의 예시적인 포맷을 나타낸다.
도 7은 저장 장치에 대한 제 1 노드의 지속적 예약을 선취하려는 다른 노드의 시도에 대해 제 1 노드가 방어하는 예시적인 방법의 흐름도를 보여준다.
도 8은 제 2 노드를 위한 지속적 예약을 획득하기 위해 저장 장치에 대한 제 1 노드의 지속적 예약을 제 2 노드가 제거하려고 시도하는 예시적인 방법을 묘사하는 흐름도이다.
본 발명은 하나 이상의 물리적 디스크에 대한 소유권을 수립하기 위한 지속적 예약 기법(persistent reservation techniques)을 구현하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 이들 지속적 예약 기법은 저장 풀 내의 물리적 디스크와 기타 저장을 위한 구조체에 대한 소유권을 결정하기 위해 채용될 수 있다. 본 발명의 지속적 예약 기법을 이용하면, 네트워크 구획이 발생한 경우 물리적 디스크의 방어자는 도전자가 더 이상 방어자의 구획 내에 있지 않다는 통지를 수신할 때까지는 도전자의 등록 키를 제거하지 않는다. 이러한 방식으로, 물리적 디스크의 적절한 소유관계가 해결될 때까지 도전자의 키가 제거되지 않으므로 도전자 상에서 실행되는 애플리케이션으로부터의 진행 중인 I/O는 실패하지 않게 된다.
일 실시예에서는 제 1 노드가 저장 장치에 대한 제 1 노드의 지속적 예약을 선취하려고 하는 다른 노드의 시도에 대해 방어한다. 제 1 노드가 클러스터 내의 다른 노드와 통신하지 못하도록 하는 네트워크 구획이 발생한 후, 제 1 노드가 네트워크 구획에 대해 통지받기 전, 제 1 노드는 클러스터 내의 다른 노드가 클러스터의 노드들에 의해 공유되는 저장 장치를 예약하려고 시도하였다는 것을 검출하게 된다. 이 검출은 다른 노드가 등록 데이터 구조체 내에 있는 자신의 등록 키를 변경하였다는 것을 식별하는 것을 포함한다.
제 1 노드는 자신의 등록 키를 변경하고, 변경된 등록 키를 등록 데이터 구조체에 등록하며, 변경된 등록 키를 등록 데이터 구조체에 예약한다.
다른 실시예에서, 제 2 노드는 제 2 노드를 위한 지속적 예약을 획득하기 위해 저장 장치에 대한 제 1 노드의 지속적 예약을 제거하려고 시도한다. 제 2 노드는 제 2 노드가 제 1 노드와 통신하지 못하도록 하는 네트워크 구획이 발생했다는 통지를 수신한다.
제 2 노드는 저장 장치에 대한 지속적 예약을 획득하기 위해 제 2 노드의 등록 키를 예약하려고 시도한다. 예약 시도는 제 2 노드가 예약 데이터 구조체 내에 저장된 제 1 노드의 등록 키를 판독하고, 제 1 노드의 키를 저장하는 것을 포함한다. 예약 시도는 제 2 노드가 제 2 노드의 등록 키를 변경하고, 변경된 등록 키를 등록하는 것도 포함한다. 예약 시도는 제 2 노드가 제 1 노드의 지속적 예약을 제거하라는 선취 커맨드를 발행하기 전 지정된 시간 동안 수면 모드를 취하는 것도 포함한다.
본 발명의 실시예들은 후속하여 보다 구체적으로 논의될 하나 이상의 프로세서와 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 컴퓨터 또는 범용 컴퓨터를 포함하거나 이용할 수 있다. 본 발명의 범위 내의 실시예들은 컴퓨터-실행가능 인스트럭션 및/또는 데이터 구조체를 저장하거나 운반하는 물리적 및 기타 컴퓨터-판독가능 매체도 포함한다. 이러한 컴퓨터-판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 실행가능 인스트럭션을 저장하는 컴퓨터-판독가능 매체는 컴퓨터 저장 매체(장치)이다. 컴퓨터-실행가능 인스트럭션을 운반하는 컴퓨터-판독가능 매체는 전송 매체이다. 따라서, 예를 들어 본 발명의 실시예들은 적어도 2 가지 상이한 종류의 컴퓨터-판독가능 매체 (컴퓨터 저장 매체(장치)와 전송 매체)를 포함할 수 있으며, 이는 본 발명을 제한하는 것은 아니다.
컴퓨터 저장 매체(장치)는 RAM, ROM, EEPROM, CD-ROM, SSD(Solid State Device)(예컨대, RAM 기반), 플래시 메모리, PCM(Phase-Change Memory), 기타 유형의 메모리, 기타 광학 디스크 저장부, 자기 디스크 저장부 또는 기타 자기 저장 장치, 또는 컴퓨터-실행가능 인스트럭션이나 데이터 구조체 형태로 원하는 프로그램 코드 수단을 저장하는 데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 기타 매체를 포함한다.
"네트워크"는 컴퓨터 시스템들 및/또는 모듈들 및/또는 기타 전자 장치들 사이에서 전자 데이터를 전송할 수 있게 하는 하나 이상의 데이터 링크를 의미한다. 네트워크가 다른 통신 접속부(유선, 무선, 또는 유/무선의 조합)를 통해 다른 컴퓨터로 정보가 전달되거나 제공될 때, 컴퓨터는 그러한 접속부를 전송 매체로 보는 것이 타당하다. 전송 매체는 네트워크 및/또는 컴퓨터-실행가능 인스트럭션 또는 데이터 구조체 형태로 원하는 프로그램 코드 수단을 전송하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 전술한 것들의 조합 역시 컴퓨터-판독가능 매체의 범위 내에 포함될 수 있다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달하면, 컴퓨터-실행가능 인스트럭션 또는 데이터 구조체 형태의 프로그램 코드 수단은 전송 매체로부터 컴퓨터 저장 매체(장치)로 또는 그 반대로 자동 전송될 수 있다. 예컨대, 네트워크나 데이터 링크를 통해 수신된 컴퓨터-실행가능 인스트럭션 또는 데이터 구조체는 네크워크 인터페이스 모듈(NIC) 내의 RAM에 버퍼링될 수 있고, 종국적으로는 컴퓨터 시스템에 있는 컴퓨터 시스템 RAM 및 또는 휘발성이 약한 컴퓨터 저장 매체(장치)로 전달된다. 따라서, 컴퓨터 저장 매체(장치)가 전송 매체도 이용하는 (또는 전송 매체를 주로 이용하는) 컴퓨터 시스템 컴포넌트에 포함될 수 있음을 이해해야 한다.
컴퓨터-실행가능 인스트럭션은, 예를 들어, 프로세서에 의해 실행되면 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 소정의 기능이나 기능들의 그룹을 수행하도록 하는 인스트럭션과 데이터를 포함한다. 컴퓨터-실행가능 인스트럭션은 이를테면, 어셈블리 언더나 소스 코드와 같은 이진, 중간 포맷(binaries, intermediate format) 인스트럭션일 수 있다. 본 발명의 청구 대상은 구조적 특징이나 방법적 동작에 특유한 표현으로 기술되었지만, 첨부하는 특허청구범위에 정의된 청구대상은 기술된 특징이나 동작으로 국한될 필요는 없다. 오히려, 기술되는 특징이나 동작은 특허청구범위를 구현하는 예시적인 형태로서 개시된 것일 뿐이다.
당업자라면 본 발명이 퍼스널 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 휴대용 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 이동 전화, PDA, 태블릿, 호출기, 라우터, 스위치 등을 포함하는 많은 종류의 컴퓨터 시스템 구성을 이용하는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 이해할 것이다. 본 발명은 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 유/무선 데이터 링크의 조합에 의해) 연결된 로컬 및 원격 컴퓨터 시스템이 함께 작업을 수행하는 분산형 시스템 환경에서 실시될 수도 있다. 분산형 시스템 환경에서 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 모두에 존재할 수 있다.
본 발명은 도 4에 도시된 클러스터(400) 내에서 구현되는 것으로 기술되지만, 복수 개의 노드를 포함하는 다른 컴퓨터 아키텍쳐에서 PR 기법을 구현할 수 있다는 점을 이해해야 한다. 클러스터(400)는 4 개의 상호접속된 노드들(노드 401 ~ 404)을 포함한다. 각각의 노드는 저장 장치(410 ~ 412)에 각각 접속되어 있다. 저장 장치(410 ~ 412)는 복수 개의 가상 디스크(또는 스페이스)(430a ~ 430n)가 생성된 저장 풀(420)을 포함한다. 따라서, 각 노드 상의 애플리케이션은 가상 디스크(430a ~ 430n) 각각을 액세스할 수 있다. 클러스터(400) 내의 의사 정족수는 노드 + 저장부 투표 기법을 이용하여 결정되는 것으로 가정한다. 그러므로, 노드(401 ~ 404) 각각과 풀(420)이 투표권을 갖는다. 주어진 시간에 하나의 노드는 풀(420) 내의 각 저장 장치를 소유한다.
또한, 도 5a 내지 도 5f는 본 발명의 PR 기법을 구현하도록 유지될 수 있는 등록 테이블(501)과 예약 테이블(502)의 다양한 상태를 도시하고 있다. 저장 장치(410 ~ 412) 각각을 위해 별개의 등록 및 예약 테이블 세트가 유지된다. 후속하는 상세한 설명에서는, 등록 테이블(501)과 예약 테이블(502)이 저장 장치(410)와 관련된 것으로 가정할 것이지만, 각 저장 장치의 소유권을 결정하기 위해 유사한 프로세스가 뒤따름을 이해해야 한다. 또한, 2 개의 테이블만 도시하였지만, 본 발명은 하나의 테이블 또는 임의의 개수의 다른 데이터 구조체를 이용하여 구현될 수 있다. 따라서, 키를 저장하는 데 사용되는 데이터 구조체는 본 발명의 핵심이 아니다.
도 5a 내지 도 5f는 본 발명의 PR 프로세스 동안 현재 예약된 키들을 노드가 저장하는 방법을 나타낸다. 물론, 도시하지는 않았지만 각 노드도 자신의 등록 키를 저장하고 있다.
도 5a는 네트워크 구획(405)이 발생하기 전의 2 개의 테이블의 상태를 보여준다. 도 5a에서 등록 테이블(501)은 노드(401 ~404) 각각에 대해 하나씩 4 개의 등록 키를 포함하는데, 클러스터 내의 각 노드는 저장 장치(410)에 기록할 수 있다. 예약 테이블(502)은 노드의 등록 키도 포함하는데, 이는 노드(401)가 저장 장치(410)에 대한 예약을 갖고 있음을 나타낸다 (즉, 노드(401)가 물리적 디스크의 현재 소유자임).
네트워크 구획(405)이 발생하면, 클러스터 내의 각 노드는 구획에 대해 통지받는다. 그러나, 각 노드가 반드시 동시에 통지를 받아야 하는 것은 아니다. 본 실시예에서는 노드(404)가 네트워크 구획(405)에 대해 통지받았고, 따라서, (노드(404)의 구획이 의사 정족수를 충족시키기 위해서는 풀(420)에 대한 소유권이 필요하므로) 풀(420)의 소유권 풀(420) 내의 각 저장 장치의 소유권에 대한 도전을 개시하였다.
그러나, 노드(401)는 노드(404)가 도전을 하고 있는 시점에 네트워크 구획(405)에 대해 아직 통지받지 못했다. 따라서, 노드(401)는 자신이 노드(404)와 여전히 같은 구획에 속한다고 믿을 것이다. 통상의 PR에서는, 노드(404)가 저장 장치(410)에 대한 소유권에 도전하면, 노드(404)가 자신과 동일한 구획에 속한다고 노드(401)가 여전히 생각하고 있다는 사실은 중요하지 않고, 노드(401)는 등록 테이블(501)로부터 노드(404)의 등록 키를 제거하여, 노드(404)로부터의 I/O가 실패하게 된다.
반면, 본 발명에서는, 상이한 PR 기법이 적용되어, 노드(404)가 더 이상 같은 구획에 속하지 않는다는 사실을 노드(401)가 알게 되기 전에는 노드(401)가 노드(404)의 등록 키를 제거하지 않도록 보장한다. 도 5b 내지 5e는 본 발명에 따른 PR 기법이 구현되는 방법을 보여주고 있다.
도 5b는 노드(404)가 저장 장치(410)에 대한 소유권에 도전하기 시작한 후의 2 개의 테이블의 상태를 나타낸다. 따라서, 도 5b는 노드(404)는 수면 상태이고 노드(401)는 아직 자신의 소유권을 방어하기 위해 깨어나지 않은 시간 동안을 나타낸다.
노드(404)는 다음 작업을 수행함으로써 예약을 시도한다. 노드(404)는 자신의 등록 키를 증강(또는 변경)시키고 (기존 등록 키 대신) 이를 등록 테이블(501)에 등록한다. 그러나, 노드(401)가 현재 소유자이므로, 노드(404)의 예약 시도는 처음에는 실패할 것이고, 따라서, 노드(404)는 노드(401)의 예약을 선취하려 시도하기 전에 수면 상태를 취해야 할 것이다. 예약이 실패했으므로, 노드(404)는 현재 예약 키(예약 테이블(502) 내의 노드(401)의 키)를 판독하고 이를 저장한다.
따라서, 도 5b는 노드(404)의 기존 등록 키를 노드(404)의 증강된 등록 키로 대체함으로써 등록 테이블(501)이 변경된 것을 보여준다. 도 5b에서 노드(404)는 노드(401)의 등록 키인 현재 예약 키를 저장하고 있는 것으로 도시된다.
도 5c는 노드(401)가 깨어나서 자신의 소유권을 방어하기 시작한 후, 그러나 노드(401)가 네트워크 구획(405)에 대해 아직 통지받기 전의 2 개의 테이블의 상태를 나타내고 있다. 방어에 있어, 노드는 소유자 노드의 구획에 속하지 않는 것으로 인식되는 모든 노드의 등록 키들을 제거한다. 그러므로, 노드(401)가 등록 테이블(501) 내의 노드(404)의 증강된 등록 키를 발견해도, 노드(401)는 노드(404)가 여전히 같은 구획 내에 있다고 믿고 있으므로 노드(404)의 등록 키를 제거하지 않을 것이다.
등록 테이블(501)로부터 노드(404)의 등록 키를 제거(하여, 노드(404)가 저장 장치(410)에 기록하지 못하도록 )하는 대신, 노드(401)는 자신의 등록 키를 증강시키고, 증강된 키를 등록한 후, 증강된 키를 예약한다. 이는 다른 구획에 속한 것으로 알려지지 않은 노드가 소유권에 대해 도전할 때 취하는 소유자 노드의 방어 방식이다.
따라서, 도 5c는 등록 테이블(501)과 예약 테이블(502) 각각이 이제 노드(401)의 과거 키 대신 노드(401)의 증강된 등록 키를 포함하고 있는 것을 도시하고 있다. 간략히 말하면, 노드(401)는 노드(401)와 노드(404)가 더 이상 같은 구획에 속하지 않는다는 것을 아직 모르기 때문에, 노드(404)의 도전에 대한 노드(401)의 반응은 등록 테이블(501)로부터 노드(404)의 등록 키를 제거하는 대신 자신의 등록 키를 증강시켜 예약하는 것을 포함한다.
도 5d는 노드(404)가 깨어나서 선취 커맨드(530)를 발행한 후의 2 개의 테이블의 상태를 보여준다. 선취 커맨드(530)는 노드(404)가 수면 상태로 들어가기 전에 판독한 예약 키와 노드(404)의 현재 등록 키를 포함한다. 노드(401)가 자신의 등록 키를 증강시키고 증강된 키를 예약하였으므로, 노드(404)가 갖고 있는 예약 키는 예약 테이블(502)에 저장된 현재 예약 키와 일치하지 않을 것이다. (노드_401_키_0001 != 노드_401_키_0002) 따라서, 노드(404)의 선취 시도는 실패할 것이고, 노드(401)는 저장 장치(410)의 소유자로 남아 있게 된다. 도 5d는 노드(401)가 소유자로 남아 있지만 노드(404)의 등록은 제거하지 않았으므로, 도 5c와 동일한 상태로 남아 있는 2 개의 테이블을 보여주고 있다.
추후에 노드(404)(또는 노드(403)도 마찬가지임)는 도 5a 및 5b를 참조하여 전술한 방식으로 다른 도전을 개시할 수 있다. 도 5e는 노드(404)가 또 다른 도전을 개시한 후 2 개의 테이블의 상태를 나타낸다. 도시한 바와 같이, 등록 테이블(501)은 이제 노드(404)의 증강된 키(노드_404_키_003)를 포함한다. 노드(404)는 현재의 예약 키(노드_401_키_0002)도 저장해 두고 있다.
노드(401)가 깨어나 자신의 소유권을 방어하기 전, 노드(401)는 네트워크 구획(405)에 대해 통지받는다. 따라서, 노드(401)는 노드(404)의 도전에 대해 다르게 반응한다. 구체적으로, 노드(401)는 이제 노드(404)가 자신과 같은 구획에 속하지 않는다는 것을 알기 때문에 등록 테이블(501)로부터 노드(404)의 등록 키를 제거함으로써, 노드(404)의 도전이 실패하도록 함과 동시에 노드(404)가 저장 장치(410)에 기록하는 것을 막는다.
그러므로 도 5f는 노드(401)가 네트워크 구획(405)에 대해 통지받은 후, 그리고 노드(401)가 노드(404)의 도전에 대해 방어한 후의 2 개의 테이블의 상태를 보여준다. 도시한 바와 같이, 등록 테이블(501)은 노드(404)의 등록 키를 포함하지 않는다. 노드(404)가 현재 예약 키를 여전히 저장하고 있는 것으로 도시되어 있지만, 노드(404)의 등록 키는 등록 테이블(501) 내에 있지 않으므로 노드(404)에 의한 선취 시도는 실패할 것이다.
전술한 설명은 키를 증강시키는 실시예를 사용하였지만, 본 발명은 다른 노드에게 도전 사실을 통지하기 위한 임의의 다른 방법으로 키를 변경함으로써 구현될 수도 있다. 예컨대, 키를 증강시키는 대신 노드(404)는 비트(bit)를 변경할 수 있다. 본질적으로 등록 키를 변경하는 것은 네트워크 구획이 노드들의 직접적인 통신을 막을지라도 노드들이 계속해서 통신할 수 있도록 해주는 역할을 한다. 따라서, 등록 키를 수정하여 노드의 도전을 통신하게 하는 임의의 수단을 본 발명에 사용할 수 있다.
노드(404)의 등록 키는 노드(404)가 도전을 개시하지 않더라도 제거될 수 있음에 유의해야 한다. 노드(401)가 깨어나 소유권을 방어할 때면, 자신이 동일한 구획의 일원으로 인식하고 있지 않은 노드들의 등록 키들에 대해 우선 확인한다. 예를 들어, 네트워크 구획(405) 후 노드(404)가 도전을 개시하기 전 노드(401)가 깨어나면, 노드(404, 403)는 더 이상 동일한 구획에 속하지 않으므로 노드(401)는 노드(404)의 키(와 노드(403)의 키)를 제거할 것이다.
따라서, 소유자 노드는 다른 노드가 자신과 같은 구획 내에 속하지 않는다는 것을 알게 되기까지는 그 다른 노드의 등록 키를 제거하지 않는다. 이러한 방식으로, 소유자 노드는 네트워크 구획이 발생하더라도 네트워크 구획에 대해 알게 되어 (이를테면, 자신의 소유권을 방어하거나 방어하지 않음으로써) 그에 따라 반응하기까지는 다른 노드의 키를 제거하지 않는다.
물론, 임의의 방어 동안, 소유자 노드는 자신과 동일한 구획에 속하는 것으로 인식되지 않는 임의의 노드의 등록 키들을 제거할 수도 있고, 또한 다른 구획에 속하는지 여부를 알지 못하는 다른 노드로부터의 도전에 응답하여 자신의 등록 키를 증강, 등록, 예약할 수도 있다. 도 5a 내지 도 5f의 예와 동일한 예를 사용하여, 노드(403, 404)가 동시에 도전하였지만 노드(401)는 노드(404)가 동일한 구획에 존재하지 않는다는 사실만 통지받은 경우, 노드(401)는 노드(404)의 키는 제거하면서 노드(403)의 키는 그대로 두고 자신의 키를 증강시킬 것이다.
마찬가지로, 노드(401)가 자신의 의사 정족수를 충족시키지 못하는 구획에 속한다는 것을 깨닫게 되면 (예를 들어, 네트워크 구획(405)이 노드(401)를 노드들(402 ~ 404)로부터 분리시킨 경우), 노드(401)는 자신의 소유권을 방어하지 않을 것이고, 따라서 다른 구획 내의 노드들 중 하나가 노드(401)의 소유권을 성공적으로 선취하도록 허용할 것이다.
전술한 바와 같이, 도 5a 내지 5f를 참조하여 전술한 프로세스는 저장 풀 내의 모든 저장 장치에 대해 수행된다. 이를테면, 노드(404)는 저장 장치(411)와 저장 장치(412)의 소유권에 대해 동일한 방식으로 도전할 것이다. 그러나, 하나의 노드는 일반적으로 풀 내의 모든 저장 장치에 대해 소유권을 가져야 한다. 하나의 노드가 각 저장 장치에 대한 소유권을 획득하고 유지하는 것을 보장하기 위해 전술한 프로세스는 사전결정된 순서대로 각 저장 장치 상에서 수행된다.
달리 말하면, 각 노드는 각 저장 장치에 대한 도전 순서를 알고 있다는 것이다. 이 순서는 예컨대, 저장 장치와 연관된 식별자(예를 들어, pool guid)에 기초하여 결정될 수 있다. 이를테면, 노드(404)가 깨어나서 선취 커맨드를 발행할 때, 지정된 순서에 따라 (저장 장치(410)에 대해 선취하고, 이어서, 저장 장치(411)에 대해 선취한 후, 저장 장치(412)에 대해 선취하는 식으로) 선취 커맨드를 발행할 수 있다.
선취 커맨드 중 하나라도 실패하면, 도전 노드는 소유권에 대한 도전을 중단할 것이다. 예컨대, 노드(404)의 저장 장치(410)에 대한 선취 커맨드가 실패하면, 노드(404)는 저장 장치(411)와 저장 장치(412)의 소유권에 대한 선취를 시도하지 않을 것이다. 지정된 순서에 따라 선취 커맨드를 발행함으로써, 한 노드가 풀 내의 어떤 저장 장치의 소유권을 획득하고 하나 이상의 다른 노드들이 그 풀 내의 다른 저장 장치들에 대한 소유권을 획득하는 상황을 방지할 수 있게 된다.
소유자 노드나 도전자 노드가 의사 정족수를 충족시키는 (또는 풀에 대한 소유권을 획득함으로써 의사 정족수를 충족시키게 되는) 구획에 속하도록 보장하는 것에 더하여, 노드는 풀 내의 저장 장치들에 대한 방어 또는 도전을 개시하기 전에 풀 내의 의사 정족수만큼의 디스크들에 액세스할 수 있는지를 확인할 수도 있다. 예를 들어, 노드(401)가 깨어나 자신의 소유권을 방어할 때, 노드는 먼저 풀(420) 내의 모든 저장 장치들을 하나씩 확인(enumerate)할 것이다. 확인된 저장 장치들의 개수가 풀 내의 저장 장치들의 과반수 미만이면 (이를테면, 저장 장치들(410 ~ 412) 중 2개 미만이면), 노드(401)는 자신의 방어를 중단할 수 있다. 마찬가지로, 노드(404)가 도전을 시도할 때, 노드(404)도 저장 장치들을 하나씩 확인하고, 의사 정족수만큼의 저장 장치를 액세스할 수 없으면 도전을 중단할 수 있다. 저장 장치가 실패하거나 올바르게 작동하기를 멈추면 액세스할 수 없게 된다.
도 6은 등록 키(600)에 대한 예시적인 포맷을 나타낸다. 등록 키(600)는 4 개의 섹션(즉, 식별자 섹션(601), 수정 섹션(revision section: 602), 노드 식별자 섹션(603), 시그니쳐 섹션(signature section: 604))을 포함한다. 식별자 섹션(601)은 등록 키가 사용되는 저장 장치의 식별자를 포함한다. 수정 섹션(602)은 전술한 바와 같이 증강된 키의 일부이다. 노드 식별자 섹션(603)은 키가 관련된 노드의 식별자를 포함한다. 시그니쳐 섹션(604)은 대응하는 노드에 의해 생성된 고유한 시그니쳐를 포함한다.
도 7은 저장 장치에 대한 제 1 노드의 지속적 예약을 선취하려는 다른 노드의 시도에 대해 제 1 노드가 방어하는 예시적인 방법(700)을 나타내는 흐름도이다. 방법(700)은 도 4 및 도 5a 내지 5f를 참조하여 기술될 것이다.
방법(700)은 제 1 노드가 클러스터 내의 다른 노드와 통신할 수 없도록 하는 네트워크 구획이 발생한 후, 제 1 노드가 네트워크 구획에 대해 통지받기 전, 제 1 노드가 클러스터 내의 다른 노드가 클러스터 내의 노드들의 의해 공유되는 저장 장치를 예약하려고 시도하였음을 검출하는 동작(701)을 포함한다. 이 검출 동작은 그 다른 노드가 등록 데이터 구조체 내의 그 다른 노드의 등록 키를 변경하였음을 식별하는 것을 포함한다. 예컨대, 노드(401)는 자신이 저장 장치(410)에 대한 지속적 예약을 갖고 있는 상황에서 노드(404)가 저장 장치(410)와 관련된 등록 테이블(501) 내의 자신의 등록 키를 변경하였음을 검출할 수 있다.
방법(700)은 제 1 노드가 자신의 등록 키를 변경하고, 변경된 등록 키를 등록 데이터 구조체에 등록하며, 변경된 등록 키를 예약 데이터 구조체에 예약하는 동작(702)을 포함한다. 이를테면, 노드(401)는 자신의 등록 키를 변경(예컨대, 증강)하고, 변경된 등록 키를 등록 테이블(501)에 등록하며, 변경된 등록 키를 예약 테이블(502)에 예약할 수 있다.
도 8은 제 2 노드가 자신을 위한 지속적 예약을 획득하기 위해 저장 장치에 대한 제 1 노드의 지속적 예약을 제거하려고 시도하는 예시적인 방법(800)의 흐름도를 보여준다. 방법(800)은 도 4 및 도 5a 내지 도 5f를 참조하여 설명될 것이다.
방법(800)은 제 2 노드가 제 1 노드와 통신할 수 없도록 하는 네트워크 구획이 발생하였다는 통지를 제 2 노드가 수신하는 동작(801)을 포함한다. 예를 들어, 노드(404)는 네트워크 구획(405)이 발생하였다는 통지를 수신할 수 있다.
방법(800)은 제 2 노드가 저장 장치에 대한 지속적 예약을 획득하기 위해 자신의 등록 키를 예약하려고 시도하는 동작(802)을 포함한다. 동작(802)은 하위 동작(802a 내지 802c)을 포함한다.
하위 동작(802a)은 제 2 노드가 예약 데이터 구조체 내에 저장된 제 1 노드의 등록 키를 판독하고, 제 1 노드의 키를 저장하는 것을 포함한다. 이를테면, 노드(404)는 예약 테이블(502) 내의 노드(401)의 등록 키를 판독할 수 있다.
하위 동작(802b)은 제 2 노드가 자신의 등록 키를 변경하고 변경된 등록 키를 등록하는 것을 포함한다. 예컨대, 노드(404)는 자신의 등록 키를 변경하고, 변경된 등록 키를 등록 테이블(501)에 등록할 수 있다.
하위 동작(802c)은 제 2 노드가 제 1 노드의 지속적 예약을 제거하려는 선취 커맨드를 발행하기 전 지정된 시간 동안 수면 모드를 취하는 것을 포함한다. 예를 들면, 노드(404)는 깨어나서 저장 장치(410)에 대한 노드(401)의 예약을 제거하려는 선취 커맨드를 발행하기 전에 방어자 노드가 수면 상태에 있는 것의 적어도 2배만큼의 시간 동안 (예컨대, 노드(401)가 3초간 수면 모드를 취한다면, 6초간) 수면 모드를 취할 수 있다.
본 발명은 그 사상이나 핵심적인 특징으로부터 벗어나지 않으면서 전술한 것과 상이한 형태로 구현될 수 있다. 전술한 실시예들은 모두 예시적인 것이며 본 발명을 제한하는 것으로 고려되어서는 안 된다. 따라서, 본 발명의 범위는 전술한 상세한 설명이 아니라 첨부하는 특허청구범위에 의해 정해진다. 특허청구범위의 의미와 범위 내에 속하는 모든 변경은 청구항의 범위 내에 포함되는 것이다.
401, 404: 노드
501, 502: 등록 테이블
Node_401_key_0001: 노드_401_키_0001
Node_402_key_0001: 노드_402_키_0001
Node_403_key_0001: 노드_403_키_0001
Node_404_key_0001: 노드_404_키_0001

Claims (20)

  1. 클러스터의 제 1 노드 - 상기 제 1 노드는 상기 클러스터의 노드들에 의해 공유되는 저장 장치에 대한 지속적 예약(persistent reservation)을 갖고 있음 - 에서 수행되어, 상기 제 1 노드의 지속적 예약을 다른 노드가 선취(preempt)하지 못하게 상기 제 1 노드가 방어하도록 하는 방법으로서,
    상기 제 1 노드가 상기 클러스터 내의 다른 노드와 통신하지 못하도록 하는 네트워크 구획(network partition) 발생 후, 상기 제 1 노드가 상기 네트워크 구획에 대해 통지받기 전에, 상기 클러스터 내의 도전자 노드(challenger node)를 포함하는 다른 노드가 상기 클러스터의 노드들에 의해 공유되는 저장 장치를 예약하려고 시도했음을 상기 제 1 노드가 검출하는 단계 - 상기 검출 단계는 상기 도전자 노드가 등록 데이터 구조체(registration data structure) 내의 상기 도전자 노드의 등록 키(registration key)를 변경했음을 식별하는 단계를 포함함 - 와,
    상기 네트워크 구획에 대해 통지받기 전에, 상기 제 1 노드가 상기 등록 데이터 구조체에 등록된 자신의 등록 키를 상기 도전자 노드가 인식하고 있지 않은 새로운 등록 키로 변경하고, 상기 새로운 등록 키를 상기 등록 데이터 구조체에 등록하며, 상기 등록 데이터 구조체로부터 상기 도전자 노드와 연관된 임의의 등록 키를 제거하지 않고 상기 새로운 등록 키를 예약 데이터 구조체(reservation data structure)에 예약하는 단계
    를 포함하는 예약 선취 방어 방법.
  2. 제 1 항에 있어서,
    상기 제 1 노드가 상기 네트워크 구획에 대한 통지를 수신하는 단계와,
    상기 제 1 노드가 상기 등록 데이터 구조체로부터 상기 도전자 노드의 등록 키를 제거하여, 상기 도전자 노드가 상기 저장 장치를 액세스하지 못하도록 하는 단계
    를 더 포함하는 예약 선취 방어 방법.
  3. 제 2 항에 있어서,
    상기 도전자 노드의 등록 키를 제거하는 단계 전에, 상기 제 1 노드가 의사 정족수(quorum)가 충족된 구획의 일부라고 상기 제 1 노드가 판단하는 단계
    를 더 포함하는 예약 선취 방어 방법.
  4. 제 1 항에 있어서,
    상기 제 1 노드가 상기 네트워크 구획에 대한 통지를 수신하는 단계와,
    상기 제 1 노드가 의사 정족수가 충족되지 않은 구획의 일부라고 상기 제 1 노드가 판단하는 단계와,
    상기 제 1 노드의 지속적 예약을 다른 노드가 선취하지 못하도록 상기 제 1 노드가 방어하는 데 실패하는 단계
    를 더 포함하는 예약 선취 방어 방법.
  5. 제 1 항에 있어서,
    상기 제 1 노드 및 상기 도전자 노드의 새로운 등록 키는 각각 상기 제 1 노드의 등록 키 및 상기 도전자 노드의 등록 키의 증강된 버전(incremented version)을 포함하는
    예약 선취 방어 방법.
  6. 제 1 항에 있어서,
    상기 등록 데이터 구조체와 상기 예약 데이터 구조체는 동일한 데이터 구조체이거나 별개의 데이터 구조체들인
    예약 선취 방어 방법.

  7. 제 1 항에 있어서,
    상기 제 1 노드가 상기 제 1 노드의 등록 키를 변경하고, 등록하고, 예약한 후에, 상기 제 1 노드의 지속적인 예약을 방어하도록 깨어나기 전에 지정된 시간 동안 상기 제 1 노드가 수면(sleeping) 상태를 취하는 단계를 더 포함하는
    예약 선취 방어 방법.
  8. 제 7 항에 있어서,
    상기 제 1 노드가 상기 네트워크 구획에 대해 통지 받기 전에, 상기 제 1 노드의 지속적인 예약을 방어하도록 상기 제 1 노드가 깨어나는 단계와,
    상기 도전자 노드가 상기 저장 장치의 소유권에 대해 다시 도전했음을 상기 제 1 노드가 검출하는 단계 - 상기 검출 단계는 상기 도전자 노드가 상기 등록 데이터 구조체 내의 상기 도전자 노드의 등록 키를 다시 변경했음을 식별하는 단계를 포함함 - 와,
    상기 제 1 노드가 상기 제 1 노드의 등록 키를 다시 변경하고, 상기 변경된 등록 키를 상기 등록 데이터 구조체에 등록하며, 상기 변경된 등록 키를 상기 예약 데이터 구조체에 예약하는 단계를 더 포함하는
    예약 선취 방어 방법.
  9. 제 7 항에 있어서,
    상기 제 1 노드가 상기 네트워크 구획에 대해 통지 받은 후에, 상기 제 1 노드의 지속적인 예약을 방어하도록 상기 제 1 노드가 깨어나는 단계와,
    상기 도전자 노드가 상기 저장 장치를 액세스하지 못하도록 상기 제 1 노드가 상기 다른 노드의 등록 키를 상기 등록 데이터 구조체로부터 제거하는 단계를 더 포함하는
    예약 선취 방어 방법.
  10. 제 1 항에 있어서,
    상기 저장 장치는 복수의 저장 장치를 포함하는 저장 풀의 일부인
    예약 선취 방어 방법.
  11. 제 10 항에 있어서,
    상기 풀 내의 액세스가능한 모든 저장 장치들을 상기 제 1 노드가 하나씩 확인(enumerate)하는 단계와,
    상기 액세스가능한 저장 장치의 수가 상기 풀 내의 저장 장치의 과반수 미만이면 상기 제 1 노드의 지속적인 예약을 방어하는 데 실패하는 단계를 더 포함하는
    예약 선취 방어 방법.
  12. 클러스터의 제 2 노드 - 상기 제 2 노드는 상기 클러스터 내의 제 1 노드에 의해 지속적으로 예약되어 있는 저장 장치를 공유함 - 에서 수행되어, 상기 제 2 노드를 위한 지속적 예약을 획득하도록 상기 제 2 노드가 상기 제 1 노드의 지속적 예약을 제거하려는 시도를 하게 하는 방법으로서,
    상기 제 2 노드가 상기 제 1 노드와 통신하지 못하도록 하는 네트워크 구획이 발생하였다는 통지를 상기 제 2 노드가 수신하는 단계와,
    상기 저장 장치에 대한 지속적 예약을 획득하기 위해, 상기 제 2 노드가 상기 제 2 노드의 등록 키를 예약하려고 시도하는 단계
    를 포함하되,
    상기 예약하려고 시도하는 단계는
    예약 데이터 구조체 내에 저장된 상기 제 1 노드의 등록 키를 상기 제 2 노드가 판독하고 상기 제 1 노드의 등록 키를 저장하는 단계와,
    상기 제 2 노드가 등록 데이터 구조체에서 자신의 등록 키를 변경하고 상기 변경된 등록 키를 상기 등록 데이터 구조체에 등록하는 단계와,
    상기 제 1 노드의 등록 키를 상기 예약 데이터 구조체로부터 제거하라는 선취 커맨드(preempt command)를 발행(issuing)하기 전에, 지정된 시간 동안 상기 제 2 노드가 수면(sleeping) 상태를 취하는 단계를 포함하는
    예약 제거 시도 방법.
  13. 제 12 항에 있어서,
    상기 지정된 시간 후에 상기 제 2 노드가 깨어나는(awaking) 단계와,
    상기 제 2 노드가 상기 제 1 노드의 지속적 예약을 제거하려고 시도하라는 선취 커맨드를 발행하는 단계 - 상기 선취 커맨드는 상기 제 2 노드의 변경된 등록 키와 상기 예약 데이터 구조체로부터 판독된 상기 제 1 노드의 등록 키를 포함함 - 와,
    상기 제 1 노드가 상기 제 1 노드의 등록 키를 변경함으로 인해 상기 선취 커맨드 내의 상기 제 1 노드의 등록 키가 상기 예약 데이터 구조체 내에 예약된 상기 제 1 노드의 등록 키의 현재 변경된 버전과 일치하지 않게 되어 상기 선취 커맨드가 실패했다는 통지를 상기 제 2 노드가 수신하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  14. 제 12 항에 있어서,
    상기 지정된 시간 후에 상기 제 2 노드가 깨어나는 단계와,
    상기 제 2 노드가 상기 제 1 노드의 지속적 예약을 제거하려고 시도하라는 선취 커맨드를 발행하는 단계 - 상기 선취 커맨드는 상기 제 2 노드의 변경된 등록 키와 상기 예약 데이터 구조체로부터 판독된 상기 제 1 노드의 등록 키를 포함함 - 와,
    상기 제 2 노드의 변경된 등록 키가 상기 등록 데이터 구조체에 저장되어 있고 상기 선취 커맨드 내의 상기 제 1 노드의 등록 키가 상기 예약 데이터 구조체 내의 상기 제 1 노드의 등록 키와 일치함으로 인해 상기 선취 커맨드가 성공했다는 통지를 상기 제 2 노드가 수신하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  15. 제 12 항에 있어서,
    상기 저장 장치는 복수의 저장 장치들을 포함하는 저장 풀(storage pool)의 일부인
    예약 제거 시도 방법.
  16. 제 15 항에 있어서,
    상기 지정된 시간 후에 상기 제 2 노드가 깨어나는 단계와,
    상기 풀 내의 액세스가능한 모든 저장 장치들을 상기 제 2 노드가 하나씩 확인(enumerate)하는 단계와,
    액세스가능한 저장 장치들의 개수가 상기 풀 내의 상기 저장 장치들의 과반수 미만이면 상기 제 2 노드가 선취 커맨드를 발행하는데 실패하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  17. 제 15 항에 있어서,
    상기 지정된 시간 후에 상기 제 2 노드가 깨어나는 단계와,
    지정된 순서에 따라 상기 풀 내의 각각의 저장 장치에 대해 상기 제 2 노드가 선취 커맨드를 발행하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  18. 제 17 항에 있어서,
    선취 커맨드 중 하나라도 실패하면, 상기 제 2 노드가 상기 풀 내의 추가 저장 장치들에 대한 선취 커맨드의 발행을 중단하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  19. 제 12 항에 있어서,
    상기 제 2 노드가 상기 제 2 노드의 등록 키를 예약하려고 시도하기 전에, 의사 정족수가 된 구획 또는 상기 제 2 노드가 상기 저장 장치에 대해 지속적 예약을 획득했다면 의사 정족수가 충족되었을 구획 내에 상기 제 2 노드가 있음을 제 2 노드가 판단하는 단계
    를 더 포함하는 예약 제거 시도 방법.
  20. 노드들의 클러스터로서,
    상기 클러스터의 상기 노드들에 의해 공유되는 저장 장치들의 풀 내에 있는 복수의 저장 장치들 각각에 대해 지속적 예약을 갖는 제 1 노드와,
    도전자 노드를 포함하되,
    상기 제 1 노드는 상기 풀 내의 각각의 저장 장치에 대한 자신의 지속적 예약을 방어하기 위해,
    상기 클러스터 내의 제 2 노드와 상기 제 1 노드가 통신하는 것을 금지하는 네트워크 구획 후, 상기 제 1 노드가 상기 네트워크 구획에 대해 통지받기 전에, 상기 도전자 노드를 포함하는 상기 클러스터 내의 상기 제 2 노드가 상기 풀 내의 각각의 저장 장치를 소유(take ownership of)하고자 함을 검출하는 단계 - 상기 검출 단계는 상기 도전자 노드가 각각의 저장 장치를 위한 등록 데이터 구조체에 상기 도전자 노드의 등록 키의 증강된 버전을 추가했음을 식별하는 단계를 포함함 - 와,
    각각의 저장 장치에 대해, 상기 등록 데이터 구조체에 등록된 상기 제 1 노드의 등록 키를 상기 도전자 노드가 인식하고 있지 않은 새로운 등록 키로 변경하고, 상기 증강된 등록 키를 상기 등록 데이터 구조체에 등록하며, 상기 증강된 등록 키를 예약 데이터 구조체에 예약하는 단계
    를 수행하고,
    상기 도전자 노드는 상기 네트워크 구획에 대해 통지받으면 상기 풀 내의 각각의 저장 장치에 대한 지속적 예약을 획득하도록 시도하기 위해,
    각각의 저장 장치에 대해, 상기 예약 데이터 구조체 내에 저장된 상기 제 1 노드의 상기 등록 키를 판독하고 상기 제 1 노드의 등록 키를 저장하는 단계와,
    각각의 저장 장치에 대해, 상기 제 2 노드의 등록 키를 상기 등록 데이터 구조체에서 증강시키고 상기 증강된 등록 키를 상기 등록 데이터 구조체에 등록하는 단계와,
    각각의 저장 장치 상에서 상기 예약 데이터 구조체로부터 상기 제 1 노드의 등록 키를 선취하도록 시도하라는 선취 커맨드를 상기 저장 장치들 각각에 대해 발행하기 전에 지정된 시간 동안 수면상태를 취하는 단계
    를 수행하는
    클러스터.
KR1020147025714A 2012-02-28 2013-02-13 저장 풀에서의 디스크 소유권 중재 기법 KR102008042B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/407,428 US8738701B2 (en) 2012-02-28 2012-02-28 Arbitration of disk ownership in a storage pool
US13/407,428 2012-02-28
PCT/US2013/025798 WO2013130262A1 (en) 2012-02-28 2013-02-13 Arbitration of disk ownership in a storage pool

Publications (2)

Publication Number Publication Date
KR20140131961A KR20140131961A (ko) 2014-11-14
KR102008042B1 true KR102008042B1 (ko) 2019-10-21

Family

ID=49004471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147025714A KR102008042B1 (ko) 2012-02-28 2013-02-13 저장 풀에서의 디스크 소유권 중재 기법

Country Status (7)

Country Link
US (1) US8738701B2 (ko)
EP (1) EP2820549B1 (ko)
JP (1) JP6170512B2 (ko)
KR (1) KR102008042B1 (ko)
CN (1) CN104160380B (ko)
ES (1) ES2632558T3 (ko)
WO (1) WO2013130262A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652030B2 (en) 2009-01-30 2017-05-16 Microsoft Technology Licensing, Llc Navigation of a virtual plane using a zone of restriction for canceling noise
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US9389968B2 (en) * 2014-04-30 2016-07-12 Netapp, Inc. Preventing non-detectable data loss during site switchover
US10270735B2 (en) * 2014-10-10 2019-04-23 Microsoft Technology Licensing, Llc Distributed components in computing clusters
WO2016106682A1 (zh) 2014-12-31 2016-07-07 华为技术有限公司 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
JP6472508B2 (ja) * 2015-04-06 2019-02-20 株式会社日立製作所 管理計算機およびリソース管理方法
US9923965B2 (en) 2015-06-05 2018-03-20 International Business Machines Corporation Storage mirroring over wide area network circuits with dynamic on-demand capacity
US9930140B2 (en) * 2015-09-15 2018-03-27 International Business Machines Corporation Tie-breaking for high availability clusters
US10341252B2 (en) * 2015-09-30 2019-07-02 Veritas Technologies Llc Partition arbitration optimization
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10581680B2 (en) 2015-11-25 2020-03-03 International Business Machines Corporation Dynamic configuration of network features
US9923839B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Configuring resources to exploit elastic network capability
US9923784B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Data transfer using flexible dynamic elastic network service provider relationships
US10057327B2 (en) 2015-11-25 2018-08-21 International Business Machines Corporation Controlled transfer of data over an elastic network
US10216441B2 (en) 2015-11-25 2019-02-26 International Business Machines Corporation Dynamic quality of service for storage I/O port allocation
US10177993B2 (en) 2015-11-25 2019-01-08 International Business Machines Corporation Event-based data transfer scheduling using elastic network optimization criteria
US10158743B2 (en) * 2016-06-12 2018-12-18 International Business Machines Corporation Compute node cluster management
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041287A1 (en) 2001-08-20 2003-02-27 Spinnaker Networks, Inc. Method and system for safely arbitrating disk drive ownership
US20100077249A1 (en) 2008-09-19 2010-03-25 Microsoft Corporation Resource arbitration for shared-write access via persistent reservation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6279032B1 (en) 1997-11-03 2001-08-21 Microsoft Corporation Method and system for quorum resource arbitration in a server cluster
US7774469B2 (en) 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6845395B1 (en) * 1999-06-30 2005-01-18 Emc Corporation Method and apparatus for identifying network devices on a storage network
US6990606B2 (en) * 2000-07-28 2006-01-24 International Business Machines Corporation Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters
US6954881B1 (en) 2000-10-13 2005-10-11 International Business Machines Corporation Method and apparatus for providing multi-path I/O in non-concurrent clustering environment using SCSI-3 persistent reserve
US6965936B1 (en) 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US7631066B1 (en) 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US20050132154A1 (en) 2003-10-03 2005-06-16 International Business Machines Corporation Reliable leader election in storage area network
US7260678B1 (en) * 2004-10-13 2007-08-21 Network Appliance, Inc. System and method for determining disk ownership model
US7840730B2 (en) * 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8046467B2 (en) 2008-08-29 2011-10-25 Microsoft Corporation Maintaining client affinity in network load balancing systems
US8417899B2 (en) 2010-01-21 2013-04-09 Oracle America, Inc. System and method for controlling access to shared storage device
US8443231B2 (en) 2010-04-12 2013-05-14 Symantec Corporation Updating a list of quorum disks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041287A1 (en) 2001-08-20 2003-02-27 Spinnaker Networks, Inc. Method and system for safely arbitrating disk drive ownership
US20100077249A1 (en) 2008-09-19 2010-03-25 Microsoft Corporation Resource arbitration for shared-write access via persistent reservation
JP2012503249A (ja) 2008-09-19 2012-02-02 マイクロソフト コーポレーション 永続予約を介する共有書込みアクセスのリソースアービトレーション

Also Published As

Publication number Publication date
ES2632558T3 (es) 2017-09-14
EP2820549B1 (en) 2017-04-19
JP6170512B2 (ja) 2017-07-26
CN104160380A (zh) 2014-11-19
US20130227009A1 (en) 2013-08-29
CN104160380B (zh) 2017-08-15
EP2820549A1 (en) 2015-01-07
WO2013130262A1 (en) 2013-09-06
KR20140131961A (ko) 2014-11-14
JP2015508213A (ja) 2015-03-16
EP2820549A4 (en) 2016-03-30
US8738701B2 (en) 2014-05-27

Similar Documents

Publication Publication Date Title
KR102008042B1 (ko) 저장 풀에서의 디스크 소유권 중재 기법
US20220239602A1 (en) Scalable leadership election in a multi-processing computing environment
US10235077B2 (en) Resource arbitration for shared-write access via persistent reservation
US7277952B2 (en) Distributed system resource protection via arbitration and ownership
EP3357191B1 (en) Input/output fencing optimization
US10412066B1 (en) Hierarchical input/output fencing in clustered environments
US9411646B2 (en) Booting secondary processors in multicore system using kernel images stored in private memory segments
US9063937B2 (en) Storage array reservation forwarding
US9832267B2 (en) Resource arbitration for shared-write access via persistent reservation
US9229648B2 (en) Storage array reservation forwarding
CN102917010A (zh) 多计算机系统中的自动抢占
CN102904946B (zh) 集群内节点管理方法和装置
ES2963703T3 (es) Procedimientos, dispositivos y sistemas para actualizaciones no disruptivas de un motor de coordinación distribuida en un entorno informático distribuido
JP2021009554A (ja) コンピュータ装置、データ共有システム、データアクセス方法、及びプログラム
JP2005025289A (ja) 複数計算機間で共有する外部記憶装置におけるデータ保護プログラムおよびデータ保護方法
Balakrishnan et al. Going beyond paxos
CN117785020A (zh) 一种数据存储方法、装置和系统
Canini et al. A Distributed SDN Control Plane for Consistent Policy Updates

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant