KR20040015223A - 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법,클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터프로그램 - Google Patents

클러스터형 컴퓨터 시스템의 자원 작용 수행 방법,클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터프로그램 Download PDF

Info

Publication number
KR20040015223A
KR20040015223A KR10-2003-7014214A KR20037014214A KR20040015223A KR 20040015223 A KR20040015223 A KR 20040015223A KR 20037014214 A KR20037014214 A KR 20037014214A KR 20040015223 A KR20040015223 A KR 20040015223A
Authority
KR
South Korea
Prior art keywords
cluster
computer system
resource
clustered computer
nodes
Prior art date
Application number
KR10-2003-7014214A
Other languages
English (en)
Other versions
KR100637775B1 (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 KR20040015223A publication Critical patent/KR20040015223A/ko
Application granted granted Critical
Publication of KR100637775B1 publication Critical patent/KR100637775B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Abstract

본 발명의 장치, 클러스터형 컴퓨터 시스템, 프로그램 제품 및 방법은 자원 작용과 연계해서 고유한 준비 동작을 이용하여 노드와 클러스터 오브젝트와 같은 누락 클러스터 독립체 또는 비활성 클러스터 독립체가 자원 작용에 후속하여 클러스터형 컴퓨터 시스템에 재연결되지 못하게 효율적으로 "로크 아웃(lock out)"시킨다. 준비 동작은 클러스터형 컴퓨터 시스템에 있는 복수의 독립체에 관련된 하나 이상의 클러스터 설정 변수를 변경하되, 준비 동작 기간 중에 활성인 클러스터 독립체는 변경을 수용하지만 준비 동작 기간 중에 비활성인 클러스터 독립체는 변경을 수용하지 않도록 변경을 행하는 것을 포함한다. 활성 클러스터 독립체에 대해서 클러스터 설정 변수를 변경함으로써, 이미 비활성인 클러스터 독립체가 자원 작용 후에 클러스터링을 활성화하거나 재연결하려고 하는 시도가 있다면, 이것은 이러한 독립체들에 대한 부정확한 클러스터 설정 변수 또는 진부한 클러스터 설정 변수 때문에 대체로 실패할 것이며, 따라서 이러한 클러스터 독립체는 클러스터형 컴퓨터 시스템에 수용되지 못하게 효율적으로 차단될 것이다.

Description

클러스터형 컴퓨터 시스템의 자원 작용 수행 방법, 클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터 프로그램 {RESOURCE ACTION IN CLUSTERED COMPUTER SYSTEM INCORPORATING PREPARE OPERATION}
"클러스터링"은 일반적으로, 복수의 컴퓨터, 즉 노드가 컴퓨터의 작업을 협동하여 수행하도록 일체로 네트워크화되어 있는 컴퓨터 시스템 구성을 지칭한다. 컴퓨터 클러스트의 중요한 한 가지 형태는 그 클러스터의 노드 전제가 단일의 시스템 이미지로 나타나는 것, 즉, 1명의 사용자가 볼 때, 하나의 클러스터 안에 있는 복수의 노드가 협동하여 단일의 컴퓨터, 즉 독립체로서 나타나는 것이다.
클러스터링은 고성능과 고신뢰도가 중요한 비교적 대형 멀티 유저 컴퓨터 시스템에 사용되는 경우가 많다. 예컨대, 클러스터링은, 하나의 클러스터 안에 있는 어떤 노드가 고장난 경우에 그 노드가 이전에 수행한 동작을 그 클러스터 안에 있는 다른 노드들이 취급할 수 있도록, 리던던시(redundancy), 즉 오류 허용 오차를 제공하는데 사용될 수 있다. 복수의 노드는, 경우에 따라서 가용한 단일 컴퓨터보다 더욱 많은 수의 작업을 병렬로 취급할 수 있는 경우가 많기 때문에, 전체 성능을 향상시키는 데에도 사용된다. 많은 경우에는, 부하 균형 방식을 이용하여 복수의 작업을 복수의 노드간에 공정하게 분배함으로써 개개의 노드가 과부하되지 않도록 방지하고, 따라서 시스템 전체의 성능을 최대화하는 것도 가능하다. 예컨대, 클러스터링의 특정한 하나의 응용예는 데이터베이스 또는 기억 장치와 같은 공유 자원을 멀티 유저에 의해서 액세스하는 것이다. 그 이유는, 복수의 노드는 비교적 많은 수의 사용자 액세스 요구를 취급할 수 있고, 공유 자원은 클러스터 안의 주어진 어떤 노드가 고장나더라도 여전히 사용자들에게 이용 가능한 것이 통상적이기 때문이다.
클러스터는 통상, 개개의 노드 내에서 "업무(job)" 또는 "프로세스"를 수행함으로써 컴퓨터 작업을 취급한다. 상황에 따라서는, 상이한 노드들에 의해서 수행되고 있는 업무들은 하나의 컴퓨터 작업을 취급하기 위해서 다른 노드와 협동하기도 한다. 이러한 협동에 의한 업무들은 통상, 서로에 대해서 통신 가능하며, "그룹"이라고 알려진 논리적 독립체를 이용하여 클러스터 안에서 관리되는 것이 통상적이다. 하나의 그룹에는 몇 가지 형태의 식별자가 배정되는 것이 통상적이며, 각 그 그룹 안의 각 업무마다에는 그 그룹 안에 있다는 그의 멈버십을 표시하기 위한 식별자가 붙어 있다. 다수의 클러스터 관리 동작도 또한, 흔히 클러스터 제어 그룹이라고 지칭하는 협동 업무 그룹을 이용하여 취급될 수 있다.
한 그룹 안에 있는 멤버 업무들은 통상, 메시지 지시형 구성(ordered massage-based scheme)을 이용하여 서로 통신하고, 그룹 멤버들간에 전송된 메시지들의 특정 순서는, 다른 멤버들에 의해서 전송된 메시지들을 다른 모든 멤버와 동일한 순서로 보고, 따라서 노드들간의 동기를 보증하도록 유지된다. 한 그룹에 속하는 멤버들이 수행할 동작의 요구를 흔히 "프로토콜"이라고 지칭하고, 한 그룹에 속하는 멤버들이 복수의 작업을 협동하여 수행하는 것은 하나 또는 그 이상의 프로토콜을 사용하는 것이 통상적이다.
클러스터형 컴퓨터 시스템은 시스템의 효용을 최대화함에 있어서 프리미엄이 높다. 이러한 것으로서, 이러한 시스템에서는 오류 자동 검출 및 복구가 극히 바람직한 속성이 된다. 하나의 잠재적인 오류원은 클러스터형 컴퓨터 시스템, 예컨대 메모리 어드레스 범위 및 입출력(I/O) 장치의 관리 및 동작 시에 사용되는 자원의 손실에 관한 것이다.
특히, 높은 효용을 요구하는 시스템 임계형 애플리케이션의 경우, 자원을 관리하고, 특히 손실 자원을 복구하면, 이러한 자원을 사용하는 애플리케이션의 신호도는 매우 개선될 수 있다. 어떤 상황에서는, 한 클러스터 안에서 다수의 노드와 다수의 독립체 간에 자원이 전송되며, 자원의 손실 위험이 가장 큰 것은 이러한 전송 기간인 경우가 많다. 2 개의 독립체가 동일 자원을 소유하는 경우를 피하기 위해서, 통상, 클러스터형 컴퓨터 시스템은 그 자원을 공여하는 독립체가 그 자원의 전송 이전에 소유권을 해제할 필요가 있다. 따라서, 그 자원의 소유권을 해제하는 공여측 독립체와 그 자원의 소유권을 수취하는 다른 독립체 간에 오류가 발생하면 그 자원은 손실될 수 있다.
대부분의 클러스터형 컴퓨터 시스템에서는 다른 독립체가 손실 자원을 이용할 수 있도록 이러한 손실 자원을 복구할 수 있는 것이 매우 요망된다. 그러나, 종래 기술에 의한 시스템은 신뢰성 있는 손실 자원 복구 방법을 제공하지 않고 있다. 또한, 다른 타입의 자원 관련 작용, 예컨대 복수의 독립체 또는 복수 타입의 독립체간의 자원 전송도 역시, 마찬가지의 위험이 있을 수 있다. 예컨대, 가상 어드레스 범위와 같은 자원의 경우에는, 상이한 독립체간, 또는 상이한 타입의 독립체간 자원 이동이 요망될 수 있다.
따라서, 당해 기술에서, 클러스터형 컴퓨터 시스템의 자원들에 관한 자원 작용을 수행하는 방법, 특히 자원 충돌 및 다른 잠재 오류의 위험이 감소되도록 자원을 효율적으로 관리하는 방법에 대해서 상당한 요구가 있다.
본 발명은 일반적으로 클러스터형 컴퓨터 시스템에 관한 것으로서, 특히 그 클러스터형 컴퓨터 시스템 상에서의 자원 작용을 처리하는 것에 관한 것이다.
도 1은 본 발명의 양호한 실시예에 부합하는 클러스터형 컴퓨터 시스템을 도시하는 블럭도이다.
도 2는 도 1에 도시한 클러스터형 컴퓨터 시스템에서의 노드를 도시하는 블럭도이다.
도 3은 도 1에 도시한 클러스터형 컴퓨터 시스템에서의 예시적인 클러스터 독립체를 도시하는 블럭도이다.
도 4는 도 1에 도시한 클러스터형 컴퓨터 시스템이 수행하는 자원 작용 루틴의 프로그램 흐름을 설명하는 흐름도이다.
도 5는 도 1에서 참조한 작용 루틴의 준비에 관한 프로그램 흐름을 설명하는 흐름도이다.
도 6은 도 5에 나타낸 루틴의 준비 시에 클러스터 설정 변수를 수정하기에 적합한 ID 수정 루틴의 프로그램 흐름을 설명하는 흐름도이다.
도 7은 도 4에 나타낸 자원 작용 루틴이 수행하는 예시적인 자원 관리 동작을 실시하는 자원 복구 루틴의 프로그램 흐름을 설명하는 흐름도이다.
도 8은 도 4 및 도 5에서 참조한 작용 종료 루틴의 프로그램 흐름을 설명하는 흐름도이다.
따라서, 본 발명은 제1 양태로, 복수의 자원과, 이 복수의 자원을 소유하도록 구성된 복수의 클러스터 독립체를 포함하는 타입의 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법으로서, 상기 클러스터형 컴퓨터 시스템 안에 있는 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하는 단계를 구비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하도록 차단되는 것인 클러스터형 컴퓨터 시스템의자원 작용 수행 방법을 제공한다.
바람직하게는, 상기 복수의 클러스터 독립체는 복수의 클러스터 노드를 포함한다.
바람직하게는, 상기 클러스터 설정 변수는 상기 복수의 클러스터 노드의 각 클러스트 오브젝트에 기억된 클러스터 식별자를 포함한다.
바람직하게는, 상기 복수의 클러스터 독립체는 복수의 클러스터 오브젝트를 포함한다.
바람직하게는, 상기 클러스터 설정 변수는 오브젝트 식별자와, 상기 복수의 클러스터 오브젝트의 각 클러스터 오브젝트에 관련된 소유권 이관 카운트를 포함한다.
상기 제1 양태의 방법은 바람직하게는, 상기 클러스터형 컴퓨터 시스템을 준비한 후에 자원 작용을 수행하는 단계를 더 구비한다.
바람직하게는, 상기 자원 작용을 수행하는 자원 작용 수행 단계는 자원 복구 동작을 수행하는 단계를 더 구비한다.
바람직하게는, 상기 자원 작용은 가상 어드레스 범위, 클러스터 오브젝트 번호, 직접 액세스 기억 장치(DASD) 번호, 및 이들의 조합으로 이루어진 그룹 중에서 선택되는 자원의 복구를 구비한다.
바람직하게는, 상기 복수의 클러스터 독립체는 복수의 노드와, 상기 복수의 노드에 위치하는 복수의 클러스터 오브젝트를 구비하고, 상기 자원 작용을 수행하는 것은, (a) 복수의 자원 중에서 어느 자원이 소유되어 있는 지를 판정하기 위해서 상기 클러스터형 컴퓨터 시스템에 있는 상기 복수의 노드에 질의하는 단계와 (b) 무소유 자원의 소유권을 상기 복수의 노드 중 제1 노드에 이관하는 단계를 구비한다.
바람직하게는, 상기 클러스터형 컴퓨터 시스템을 준비하는 단계는 상기 클러스터 설정 변수를 변경하기 이전에 상기 클러스터형 컴퓨터 시스템에 관한 로크(lock)를 획득하는 것을 포함한다.
상기 제1 양태의 방법은 바람직하게는, 상기 자원 작용의 수행 후에 상기 로크를 해제(릴리즈)하는 단계를 더 구비한다.
바람직하게는, 상기 클러스터 설정 변수는 값 쌍을 포함하고, 상기 클러스터 설정 변수를 변경하는 단계는 상기 값 쌍의 각 값을 순차적으로 변경하는 것을 포함한다.
바람직하게는, 상기 클러스터형 컴퓨터 시스템을 준비하는 단계는 클러스터 프로토콜을 시동하는 단계를 더 포함한다.
바람직하게는, 상기 클러스터형 컴퓨터 시스템을 준비하는 단계는 상기 자원 작용에 의해서 작용될 자원을 소유할 능력이 있는 누락 클러스터 독립체를 검출하는 단계를 포함한다.
본 발명은 장치로서, (a) 메모리와, (b) 복수의 자원과, (c) 상기 메모리에 상주하여 상기 복수의 자원을 소유하도록 구성된 복수의 클러스트 독립체와, (d) 프로그램으로서, 상기 프로그램은 상기 클러스터형 컴퓨터 시스템에 있는 상기 복수의 자원의 적어도 하나의 서브세트에서 자원 작용을 수행하도록 구성되고, 또한상기 프로그램은, 상기 클러스터형 컴퓨터 시스템 안에 있는 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하게 차단되도록 구성되는 것인 장치를 제공할 수 있다.
바람직하게는, 상기 복수의 클러스터 독립체는 복수의 클러스터 노드 또는 클러스터 오브젝트를 포함한다.
바람직하게는, 상기 클러스터 설정 변수는 상기 복수의 클러스터 노드의 각 클러스트 오브젝트에 기억된 클러스터 식별자를 포함하고, 상기 클러스터 설정 변수는 오브젝트 식별자와, 상기 복수의 클러스터 오브젝트의 각 클러스터 오브젝트에 관련된 소유권 이관 카운트를 포함한다.
바람직하게는, 상기 프로그램은, 복수의 자원 중에서 어느 자원이 소유되어 있는 지를 판정하기 위해서 상기 클러스터형 컴퓨터 시스템에 있는 상기 복수의 노드에 질의하고, 무소유 자원의 소유권을 상기 복수의 노드 중 제1 노드에 이관함으로써 상기 자원 복구 작용을 수행하도록 구성된다.
바람직하게는, 상기 자원 작용은 가상 어드레스 범위, 클러스터 오브젝트 번호, 직접 액세스 기억 장치(DASD) 번호, 및 이들의 조합으로 이루어진 그룹 중에서 선택되는 자원의 복구를 구비한다.
바람직하게는, 상기 프로그램은, 상기 클러스터 설정 변수를 변경하기 이전에 상기 클러스터형 컴퓨터 시스템에 관한 로크(lock)를 획득하고, 상기 자원 작용의 수행 후에 상기 로크를 해제(릴리즈)함으로써 상기 클러스터형 컴퓨터 시스템을 준비하도록 더 구성된다.
바람직하게는, 상기 클러스터 설정 변수는 값 쌍을 포함하고, 상기 클러스터 설정 변수를 변경하는 단계는 상기 값 쌍의 각 값을 순차적으로 변경하는 것을 포함한다.
바람직하게는, 상기 프로그램은 클러스터 프로토콜을 시동함으로써 상기 클러스터형 컴퓨터 시스템을 준비하도록 더 구성된다.
바람직하게는, 상기 프로그램은 상기 자원 작용에 의해서 작용될 자원을 소유할 능력이 있는 누락 클러스터 독립체를 검출함으로써 상기 클러스터형 컴퓨터 시스템을 준비하도록 더 구성된다.
제2 양태로, 본 발명은 클러스터형 컴퓨터 시스템으로서, (a) 네트워크를 통해서 서로 결합되어 있는 복수의 노드와, (b) 복수의 자원과, (c) 상기 복수의 자원을 소유하도록 구성된 복수의 클러스트 독립체와, (d) 상기 복수의 노드 중 제1 노드에 상주하는 프로그램을 구비하고, 상기 프로그램은 상기 복수의 자원의 적어도 하나의 서브세트에서 자원 작용을 수행하도록 구성되고, 또한 상기 프로그램은, 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하게 차단되도록 구성되는 것인 클러스터형 컴퓨터 시스템을 제공한다.
제3 양태로, 본 발명은 컴퓨터 시스템에 로드되고 실행될 때 상기 제1 양태에 따른 방법의 모든 단계를 수행하는 컴퓨터 프로그램 코드를 구비하는 컴퓨터 프로그램을 제공한다.
제3 양태의 바람직한 특징은 상기 제1 양태의 바람직한 단계들에 대응하는 단계들을 수행하는 컴퓨터 프로그램 코드 요소를 구비한다.
바람직하게는, 본 발명은 프로그램 제품으로서, (a) 프로그램으로서, 이 프로그램은 복수의 자원과, 상기 복수의 자원을 소유하도록 구성된 복수의 클러스터 독립체를 포함하는 타입의 클러스터형 컴퓨터 시스템에서 자원 작용을 수행하도록 구성되고, 또한 상기 프로그램은, 상기 클러스터형 컴퓨터 시스템에 있는 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하게 차단되도록 구성되는 것인 프로그램과, (b) 상기 프로그램을 기록하는 신호 기록 매체를 구비하는 것인 프로그램 제품을 제공한다.
바람직하게는, 상기 신호 기록 매체는 기록 가능 매체와 전송 매체 중 적어도 하나를 포함한다.
실시예들은 바람직하게는, 복수의 노드와, 이 복수의 노드 중 적어도 일부에 상주하는 복수의 클러스터 오브젝트를 포함하는 타입의 클러스터형 컴퓨터 시스템에 있는 자원에 관하여 자원 작용을 수행하는 방법으로서, 상기 복수의 노드와 상기 복수의 클러스터 오브젝트는 각각 자원을 소유할 수 있는 능력이 있고, 상기 방법은, (a) 상기 복수의 노드 중에서 각 활성 노드에 관하여 로크를 획득하는 단계와, (b) 상기 복수의 노드 중에서 각 활성 노드마다 노드 설정 변수를 변경하되, 상기 복수의 노드 중에서 비활성 노드가 이후에 상기 클러스터형 컴퓨터 시스템으로 수용되지 못하게 차단되도록 하는 노드 설정 변수 변경 단계와, (c) 상기 자원을 소유할 수 있는 각 활성 클러스터 오브젝트에 관하여 오브젝트 설정 변수를 변경하되, 상기 자원을 소유할 수 있는 비활성 클러스터 오브젝트가 이후에 상기 클러스터형 컴퓨터 시스템으로 수용되지 못하게 차단되도록, 그리고 비활성 노드가 이후에 비활성 클러스터 오브젝트를 수용하지 못하게 차단되도록 하는 오브젝트 설정 변수 변경 단계와, (d) 상기 로크가 획득되고 상기 노드 설정 변수와 상기 오브젝트 설정 변수가 변경된 후에 상기 자원에 관한 자원 작용을 수행하는 단계와, (e) 상기 자원 작용 수행 후에 각 활성 노드에 관한 로크를 해제(릴리즈)하는 단계를 구비하는 것은 방법을 제공한다.
이러한 실시예의 방법은 상기 자원을 소유할 수 있는 모든 클러스터 오브젝트가 활성이라는 것을 판정하는 단계를 더 구비할 수 있다.
본 발명의 실시예는 자원 작용과 연계해서 고유한 준비 동작을 이용하여 노드와 클러스터 오브젝트와 같은 누락 클러스터 독립체 또는 비활성 클러스터 독립체가 자원 작용에 후속하여 클러스터형 컴퓨터 시스템에 재연결되지 못하도록 효율적으로 "로크 아웃"하는 장치, 클러스터형 컴퓨터 시스템, 프로그램 제품 및 방법을 제공함으로써 종래 기술과 관련된 문제를 다룬다. 이와 같이 하면 비활성 클러스터 독립체가, 클러스터형 컴퓨터 시스템에 있는 다른 클러스터 독립체로 이관되었을 수도 있는 자원을 재활성시켜서 이용하려고 시도할 위험을 최소화하게 된다. 이러한 시도는 자원의 충돌을 발생할 잠재성이 있다.
예시한 실시예에서는, 준비 동작은 클러스터형 컴퓨터 시스템에 있는 복수의 독립체에 관련된 하나 이상의 클러스터 설정 변수를 변경하되, 준비 동작 기간 중에 활성인 클러스터 독립체는 변경을 수용하지만 준비 동작 기간 중에 비활성인 클러스터 독립체는 변경을 수용하지 않도록 변경을 행하는 것을 포함한다. 또한, 통상, 예시한 실시예에서는, 이미 비활성인 클러스터 독립체가 자원 작용에 후속하여 클러스터링을 활성화하거나 재연결하려고 하는 시도가 있다면, 이것은 이러한 독립체들에 대하여 부정확한 클러스터 설정 변수 또는 진부한 클러스터 설정 변수를 검출한 것이 되고, 이와 같이 하여 이러한 클러스터 독립체는 클러스터형 컴퓨터 시스템에 수용되지 못하게 효율적으로 차단될 것이다.
더 나아가, 본 발명에 부합하는 다양한 실시예는 또한, 각종 노드에 관련된 노드 설정 변수를 변경하기 이전에, 그리고 각종 클러스터 오브젝트에 관련된 오브젝트 설정 변수를 변경하기 이전에 클러스터형 컴퓨터 시스템에 있는 각 노드에 관하여 획득되는 로크를 내장한다. 로크는 변경의 완료 시에 해제(릴리즈)되고, 이후에 해당 자원을 소유할 수 있는 비활성의 노드 및/또는 클러스터 오브젝트가 클러스터형 컴퓨터 시스템에 나중에 수용되지 못하게 차단된다.
후술하는 실시예에서는 자원 작용의 수행과 연계해서 준비 동작을 이용하여, 클러스터형 컴퓨터 시스템에서의 자원 소유권 변경에 후속하여 클러스터형 컴퓨터 시스템으로 수용되지 않도록 누락 클러스트 독립체 또는 비활성 클러스터 독립체를 효과적으로 "로크 아웃(lock out)시킨다. 이 준비 동작 기간에는 영향받는 타입의 클러스터 독립체에 관련된 하나 또는 그 이상의 클러스터 설정 변수가 변경되므로, 이러한 클러스터 독립체가 활성된 경우에만 이 변경을 수용한다. 이러한 클러스터 독립체가 비활성된 경우에는 이 변경을 수용하지 않으므로, 이들 비활성 독립체가 클러스터링을 활성화하여 재연결하려는 연속적인 시도는 무효 변수 때문에 실패할 것이다.
이러한 정황에서의 자원을 통상, 어떤 처리 작업을 수행하는데 필요한 타입의 독립체 또는 "물(物)"이라고 한다. 여기서, 이러한 물의 갯수는 제한되어 있고, 이러한 물을 사용하려면 "소유"하여야 한다. 클러스터 독립체를 통상, 클러스터링에 이용되는 논리적 소프트웨어 구성체라고 하며, 이것은 자원을 "소유"할 수 있는능력, 즉 동작 시에 자원을 이용 및/또는 관리할 수 있는 능력이 있다.
예시한 실시예의 경우, 예컨대, 클러스터 독립체는 클러스터 노드(즉, 다중 노드 클러스터에서 "노드"로서 기능하는 개개의 컴퓨터 시스템 및/또는 이들 개개의 컴퓨터 시스템 내부에 존재하는 논리 구역) 및/또는 클러스터 오브젝트(즉, 클러스터형 컴퓨터 시스템 내부에서, 클러스터링에 동참하거나 클러스터의 관리를 보조하거나 또는 클러스터링에 동참하면서도 클러스터의 관리를 보조하는 논리적 독립체)를 포함할 수 있다. 예컨대, 후술하는 실시예에서, 클러스터 오브젝트는 집합적으로 관리되고 단일의 논리 장치로서 액세스되는 직접 액세스 기억 장치(DASD) 등과 같은 한 세트 또는 그룹의 입출력(I/O) 장치일 수 있다.
또한, 예시한 실시예에서는 가상 어드레스 또는 가상 어드레스의 범위, 입출력(I/O) 장치 등과 같은 자원을 이 명세서에서 설명하는 방식으로 관리한다. 더욱 구체적으로, 이러한 자원은, 통상, 특정한 식별자를 특정한 클러스터 독립체와 연결짓는 작업을 통해서 자원을 소유하도록, 식별자를 통해서 표시되는 것이 통상적이다. 따라서, 예컨대, 가상 메모리 공간에서의 어드레스 범위는 그 범위의 경계 어드레스로 표시될 수 있고, DASD와 같은 I/O 장치는 이러한 장치와 연결된 고유의 식별자 또는 번호로 표시될 수 있다. 나아가, 예시한 실시예에서는, 다른 자원을 소유할 수 있는 능력이 있는 클러스터 오브젝트가 한 클러스터 노드에 의해서 통상 소유되는 한에 있어서 클러스터 독립체와 자원 양쪽 모두라고 간주될 수 있다. 이러한 경우에는, 클러스터 오브젝트를, 소유측 클러스터 노드에 연결되어 있는 오브젝트 식별자와 같은 고유 식별자로 표시할 수 있다.
클러스터 설정 변수는 자원 작용 이전에 한 클러스터 독립체의 특정 상황이 활성 상태였는 지를 검출하는데 사용될 수 있는 클러스터 노드나 클러스터 오브젝트와 같은 클러스터 독립체와 연결지어 유지되는 데이터를 표시할 수 있다. 클러스터 설정 변수의 현재 상태를 검출하면 오류를 간단히 전송하거나 한 독립체가 한 클러스트와 재연결되지 못하게 하거나 또는 오류를 전송하여 한 독립체가 한 클러스터와 재연결되지 못하게 할 수 있다. 대안적으로는, 이 검출된 변수를 이용하여, 한 클러스터 독립체가 한 클러스터와 재연결할 수 있기 이전에 자원을 연결 해제(릴리즈)하는 데 적합한 복구 동작을 수행할 수 있다.
예시한 실시예에서는, 예컨대, 클러스터 노드와 연결지어 사용하는 클러스터 설정 변수는 클러스터 식별자(CID)이며, 이것은 한 클러스터의 모든 특정 상황에서 모든 활성 노드가 공유하는 공통의 "토큰" 또는 고유 식별자로서 사용된다. 따라서, 클러스터 안에는, 클러스터로의 연결을 시도하는 특정 노드에 대한 CID를 확인하고, 무효인 경우에는 그 클러스터 노드를 거부하여 클러스터에의 연결을 차단하는 클러스터 관리 소프트웨어가 있어야 한다. 전형적으로는, CID는 자원 관리를 벗어나서, 허가받은 노드만이 클러스터를 연결할 수 있는 보안 메카니즘으로서 사용된다. 따라서, 전형적으로는, 본 명세서에서 개시하는 기능을 실시하기 위해서는 클러스터형 컴퓨터 시스템의 노드 관리 루틴을 변경하지 않아야 한다.
클러스터 오브젝트의 경우, 사용되는 클러스터 설정 변수는 각 클러스터 오브젝트에 유지되고 있는 소유권 이관 카운트(OTC)와 같은 오브젝트 설정 변수이다. 이것은 클러스터 오브젝트 식별자와 관련하여 옵션으로 사용될 수 있다.
다른 변수를 사용하여 비활성 클러스터 독립체가 본 발명의 양호한 실시예에 부합하는 클러스트와 연결되지 못하게 차단하여도 좋다는 점을 이해하여야 한다. 또한, 다른 타입의 자원도 소정 타입의 독립체에 의해서 소유될 수 있고, 이것에 의해서, 여기에서 개시한 준비 동작이, 작용되고 있는 특정 타입의 자원에 관련된 소정 타입의 독립체에 영향을 미칠 수 있다는 점도 이해하여야 한다. 따라서, 본 발명의 실시예는 여기에서 개시한 특정 구현예에 한정되지 않는다.
이제 도면으로 돌아가서, 동일한 도면 부호는 몇 개의 도면 전체에 걸쳐서 동일한 구성 요소를 나타내고, 도 1은 복수의 노드(4)가 네트워크 패브릭(5)을 통해서 다른 노드와 연결되어 있는 클러스터형 컴퓨터 시스템(2)을 나타내고 있다. 본 발명의 양호한 실시예에 부합하도록, 클러스터형 컴퓨터 시스템에 공통으로 사용되는 네트워크 토폴로지는 많다. 예컨대, 고속 포인트 투 포인트 버스 또는 링크, 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷 등과 같은 공중망 및 이들의 조합 등이 있다. 나아가, 개개의 노드(4)는 기술상 공지되어 있는 바와 같이, 다른 노드와 물리적으로 매우 근접하게 위치해 있을 수도 있고, 다른 노드와는 지리적으로 떨어져 있을 수도 있다.
전형적으로는, 클러스터형 컴퓨터 시스템은 네트워크 패브릭(5)을 통해서 개개의 노드와 접속될 수 있는 I/O 장치(7)와 같은 하나 이상의 I/O 장치를 내장할 것이다. 나아가, 상황에 따라서는, 네트워크 패브릭(5)을 통해서 I/O 장치(7)에 액세스하는 것은 이 I/O 장치(7)가 네트워크 패브릭에 직접 연결되지 않고 중간 노드에 의해서 관리되어도 좋다. 다양한 I/O 장치, 예컨대 DASD, 워크스테이션, 기억장치 제어기, 워크스테이션 제어기, 네트워크 어댑터, 프린터, 디스플레이 등을 예상할 수 있다.
본 발명의 양호한 실시예에 부합하도록, 클러스터형 컴퓨터 시스템(2)에는 복수의 클러스터 독립체가 존재한다. 예컨대, 노드(4)(이것은 각각 노드 A~노드 E로 표기되어 있기도 함)는 복수 개가 도시되어 있다. 따라서, 이 명세서에서 클러스터 ID(CID)(7)라고 칭하는 클러스터 설정 변수는 각 노드 안에 유지되어 있다. 도 1에는 복수의 클러스터 오브젝트(8)(이것의 예시적인 참조 부호를 오브젝트 O1~오브젝트 O4로 표기하고 있음)도 도시되어 있으며, 여기서 각 클러스터 오브젝트는 클러스터 설정 변수(이것은 도 1에 도시되어 있지 않음)를 내장하고 있다.
전술한 각종 클러스터 독립체는 복수의 자원(9)을 관리하고 이용하도록 구성되어 있고, 이러한 자원의 예시적인 참조 부호를 도 1에서 각각 자원 R1~자원 R5로 표기하고 있다. 전술한 클러스터 독립체가 이러한 자원을 소유하고 관리하는 방법은 이하에서 도 3 내지 도 8과 관련하여 상세하게 설명된다.
이제 도 2로 되돌아가면 클러스터형 컴퓨터 시스템(2) 중에서 하나의 노드(4)의 예시적인 하드웨어 구성을 도시하고 있다. 노드(4)는 통상, 네트워크 서버, 중형 컴퓨터, 메인프레임 컴퓨터 등, 예컨대 IBM사에서 시판 중인 AS/400 또는 iSeries 중형 컴퓨터 시스템과 같은 멀티유저 컴퓨터이다. 그러나, 본 발명의 실시예는 다른 컴퓨터와 데이터 처리 시스템, 예컨대 워크스테이션, 데스트톱 컴퓨터, 휴대용 컴퓨터 등과 같은 스탠드 얼론형이나 단일 사용자 컴퓨터 또는 다른 프로그램 가능형 전자 장치(예컨대, 임베디드 제어기 등을 내장한 것)에서 실시되어도 좋다는 점을 이해하여야 한다.
노드(4)는 통상, 캐시 시스템(16) 안에 마련되어 있는 하나 이상의 레벨의 캐시 메모리를 통해서 주기억 장치(14)에 연결된 하나 이상의 시스템 프로세서(12)를 포함한다. 또한, 주기억 장치(14)는, 하나 이상의 외부 네트워크[예컨대, 네트워크(26)], 하나 이상의 워크스테이션(28) 및/또는 직접 액세스 기억 장치(DASD)(30)와 같은 하나 이상의 기억 장치에 외부적으로 액세스하는 시스템 입출력(I/O) 버스(18) 및 복수의 인터페이스 장치, 예컨대 입출력 어댑터(20), 워크스테이션 제어기(22) 및 기억 장치 제어기(24)를 통해서 여러 가지 타입의 외부 장치에 연결된다. 대안으로는 대안의 다수의 컴퓨터 아키텍쳐를 사용하여도 좋다.
이 명세서에서 설명하는 클러스터링 기능을 AS/400의 환경에서 실시하기 위하여, 한 클러스터에 있는 각 노드는 시스템 라이센스드 내부 코드(SLIC)(32), 기계 인터페이스(34) 및 운용 체제(36) 안에 분할되어 들어가 있는 시스템 프로그램 코드를 포함하는 것이 통상적이고, 이들의 각각은 주기억 장치(14) 안에 상주해 있지만, 이것은 기술상 공지되어 있는 가상 메모리 관리 시스템을 이용하여 실제로 주기억 장치의 안팎에서 선택적으로 페이지 처리되는 것이 통상적이다. 작업의 수행은 이러한 작업 수행 시에 기저의 시스템 프로그램 코드를 이용하는 하나 이상의 업무(job)나 애플리케이션(38)에 의해서 사용자를 위해 행해진다.
SLIC(32)의 일부는 깅거 장치 관리 블럭(40)으로 표시된 메모리 및 외부 기억 장치를 관리하도록 할당되는 것이 통상적이다. 또한, 클러스터링 환경에서 이용하는 경우에는, 노드(4)는 노드 상에서의 클러스터링 관련 동작을 관리하기 위해서자원 클러스터링 서비스(42)라고 칭하는 클러스터링 인프라스트럭쳐를 실행하는 것이 통상적이다. 또한, 클러스터링은 복수의 업무(38) 중 하나로서 클러스터 제어(CTL) 업무의 실행을 필요로 할 수 있으며, 이 업무는 클러스터 제어 그룹에 동참하여 노드를 위해서 클러스터링 기능의 관리를 보조한다. 여기서 설명하는 대부분의 자원 관리 기능을 실시하는 곳은 이들 프로그램의 내부이다.
그러나, 여기서 설명하는 기능은 노드(4) 안의 다른 레이어의 프로그램에 실시되어도 좋고, 이 기능이 클러스터형 컴퓨터 시스템(2) 안에 있는 다른 프로그램, 컴퓨터 또는 구성 요소에 할당되어도 좋다는 점을 이해할 것이다. 특히, AS/400 환경이 아닌 경우에는, 시스템 프로그램 코드 및 클러스터링 인프라스트럭쳐는 다른 레이어의 프로그램 코드에 실시되어도 좋다. 또한, 클러스터링 환경은 클러스터링 인프라스트럭쳐와 클러스터 제어 그룹에 유사한 기능에 의존하는 것이 통상적이다. 따라서, 본 발명의 실시예는 여기서 설명하는 특정한 소프트웨어 구현예에 한정되지 않는다.
이하의 설명은 전술한 자원 관리 기능을 실시하는데 이용되는 특정 루틴에 촛점을 맞출 것이다. 본 발명의 실시예를 구현하기 위해서 실행되는 루틴을, 운용 체제의 일부로서 실시하든 또는 특정 애플리케이션, 구성 요소, 프로그램, 오브젝트나 명령 시퀀스로서 실시하든, 여기서는 "컴퓨터 프로그램" 또는 줄여서 "프로그램"이라고도 칭할 것이다. 컴퓨터 프로그램은, 컴퓨터 안에 있는 각종 메모리와 기억 장치에 다양한 시각에 존재하고, 또한 컴퓨터 안에 있는 하나 이상의 프로세서에 의해서 판독되고 실행될 때에는 그 컴퓨터로 하여금 본 발명의 다양한 양태를실시하는 단계들이나 요소들을 실행하는데 필요한 단계들을 수행하게 하는 하나 이상의 명령을 구비하는 것이 통상적이다. 또한, 이하의 본 발명의 실시예를 컴퓨터 및 컴퓨터 시스템을 충분하게 작용시키는 정황에서 설명할 것이지만, 당업자는 본 발명의 다양한 실시예가 다양한 형태의 프로그램 제품으로서 배포될 수 있고, 또한 본 발명이 그 배포를 실제로 행하는데 사용되는 신호 기록 매체의 특정한 타입에 관계 없이 동등하게 적용된다는 점을 이해할 것이다. 신호 기록 매체의 예에는 휘발성 및 불휘발성 메모리 장치, 플로피 디스크 및 기타의 삽입/배출형 디스크, 하드디스크 드라이브, 광디스크(예컨대, CD-ROM, DVD 등)과 같은 기록 가능 타입 매체와, 특히 디지털 통신 링크 및 아날로그 통신 링크와 같은 전송 타입 매체 등 있지만 이들에 한정되지 않는다.
후술하는 다양한 프로그램은 이들 프로그램을 본 발명의 특정 실시예에 구현하는 애플리케이션에 기초하여 동일시되어도 좋다는 점을 이해할 것이다. 그러나, 후술하는 특정 프로그램의 명칭이 단지 편의상 표현에 지나지 않고, 따라서 본 발명을 이러한 명칭이 동일시 및/또는 암시하는 어떤 특정한 애플리케이션에만 사용하는 것으로 한정되지는 않아야 한다는 점을 이해하여야 한다.
이제 전술한 자원 관리 기능의 예시적인 구현예로 되돌아가서, 전술한 시스템의 경우에, 자원 복구 또는 자원 소유권 이관과 같은 자원 작용을 정확하고 완전하도록 보증하기 위해서, 다음의 4 가지 조건을 만족하여야 한다는 점을 알았다.
●모든 클러스터 노드가 존재하여야 한다. 또한, 자원 작용의 수행 시에 비활성 상태이거나 누락되어 있는 클러스터 노드는 나중에 클러스터 안으로 수용될 수없다.
●클러스터 노드들간의 자원 이관은 자원 작용과 함께 동시에 행해지지 않는다.
●특정 자원을 소유할 수 있는 모든 클러스터 오브젝트가 존재하여야 한다. 또한, 자원 작용의 수행 시에 비활성 상태이거나 누락되어 있는 클러스터 오브젝트는 나중에 클러스터 안으로 수용될 수 없다.
●클러스터 노드와 클러스터 오브젝트간의 자원 이관은 자원 작용과 함께 동시에 행해지지 않는다.
후술하는 실시예에서, 이들 조건을 만족하기 위하여, 고유한 준비 동작을 연계하여 이용하되, 이 고유한 준비 동작은 다음 동작을 수행하기 위해서 자원 작용에 선행한다.
●모든 클러스터 노드를 직렬화하여, 모든 클러스터 노드가 활성 상태임을 보증하고 각 클러스터 노드 상의 로크(lock)를 획득함으로써, 자원의 이관을 방지하고 노드들이 클러스터를 이탈하거나 클러스터에 연결되지 않게 방지하며 클러스터 오브젝트의 생성 또는 삭제를 방지한다. 합리적인 시간 이내에 로크를 획득할 수 없는 경우에는 그 준비는 실패로 될 것이고, 자원 작용은 수행되지 않을 것이다.
●복수의 클러스터 노드를 일체로 묶는 고유 식별자를 수정하고, 이것에 의해서, 비활성 클러스터 노드가 나중에 클러스터 안에 수용되지 못한다.
●특정 자원을 소유할 수 있는 모든 클러스터 오브젝트가 존재하는 것을 보증하고, 그렇지 않은 경우에, 준비는 실패한다.
●이러한 모든 클러스터 오브젝트에 대한 설정 데이터(예컨대, 클러스터 오브젝트 식별자)를 수정하고, 이것에 의해서, 비활성 클러스터 오브젝트가 나중에 클러스터 안에 수용되지 못하고, 또한 비활성 노드가 나중에 활성 클러스터 오브젝트를 수용하지 못한다.
다음에, 도 3은 예시적인 세트의 클러스터 독립체와, 본 발명의 양호한 실시예에 부합하는 자원 관리와 연계하여 이들 각 클러스터 독립체 내에 유지되어 있는 관련 데이터 스트럭쳐를 예시하고 있다. 예컨대, 한 쌍의 노드(4)가 예시되고, 각 노드는 클러스터 ID(CID)(52) 및 공지된 오브젝트 ID(54)의 테이블 또는 리스트를 포함하는 설정 데이터(50)를 포함하고 있고, 클러스터형 컴퓨터 시스템 내에 존재하는 것으로 알려진 각종 클러스터 오브젝트와 관련된 처리 또는 토큰을 제공한다. 또한, 각 노드(4)는, 예컨대 가상 어드레스 범위, 오브젝트 번호, DASD 유닛 번호 등을 포함하는 소유 자원의 리스트(56)를 유지하는 것이 통상적이다. 예시된 실시예에서는, 오브젝트는 식별자와 번호 양쪽 모두를 포함하고 있고, 이들 각각은 오브젝트를 고유하게 식별한다. 그러나, 다른 실시예에서는, 다른 고유 식별자를 사용하여 각 오브젝트를 식별하여도 좋다.
도 3은 예시적인 클러스터 오브젝트(8)도 나타내고 있다. 이 클러스터 오브젝트(8)는 설정 데이터(60)와 소유 자원의 리스트 또는 테이블(62)을 포함하고 있다. 설정 데이터는 예컨대, 클러스터 오브젝트에 관련된 오브젝트 ID(64)와, 그 오브젝트에 대한 소유권 이관 카운트(OTC)(66)를 포함하고 있다. 또한, 그 클러스터 오브젝트에 관련된 소유 자원은 각종 가상 어드레스 범위와, 그 클러스터 오브젝트의 오브젝트 번호를 포함할 수 있다. 클러스터 오브젝트는 예컨대, AS/400 기반의 클러스터형 컴퓨터 시스템에 연결된 I/O 타워 내에 실시된 하나 이상의 DASD 유닛이어도 좋다. 따라서, 예컨대, 클러스터 오브젝트는 복수의 입출력 어댑터(IOA)를 포함하는 하나 이상의 DASD 유닛 및 하나 이상의 입출력 프로세서(IOP)에 연결되는 인터페이스 체인 내에서 다양한 계층적 장치를 논리적으로 나타낼 수 있다. 또한, 소유 자원은 클러스터 오브젝트가 소유한 하나 이상의 DASD 유닛의 ID(identification)를 포함할 수 있다.
예시한 실시예에서는, 각 노드(4)를 추적하는 클러스터 설정 변수는 CID(52)이고, 각 클러스터 오브젝트를 추적하는 클러스터 변수는 오브젝트 ID(64) 및 OTC(66)의 조합이며, 통상적으로 OTC(66)는 각 자원 작용 기간 중에 변경된다.
다음에, 도 4는 본 발명의 양호한 실시예에 부합하도록 자원 작용을 실시하기 위한 예시적인 루틴(70)을 예시하고 있다. 전술한 바와 같이, 자원 작용은, 예컨대 작용 루틴 72를 준비함으로써 수행되는 작용 동작의 선행 준비를 포함하는 것이 통상적이다. 루틴 72는 동작이 성공적으로 수행되었는 지를 나타내는 결과를 되돌린다. 성공적으로 수행되지 않았다면, 자원 작용은 블럭 74에서 블럭 76으로 제어를 진행하여 일찌감치 종료되고, 이 때, 오류를 결과로서 되돌린다. 그러나, 작용에 대한 준비가 성공적으로 생성되었다면, 블럭 74는 블럭 78로 제어를 진행하여 원하는 자원 작용을 수행한다.
실시예에 따라서는, 단일 준비에 후속하여 복수의 자원 작용을 수행하는 것이 바람직할 수도 있다. 이와 같은 것으로서, 옵션 루틴 82가 제공하는 바와 같이,하나 이상의 추가의 자원 작용을 수행하는 것이 바람직할 수도 있다. 또한, 옵션 블럭 80이 제공하는 바와 같이, 후속하는 자원 작용을 수행하기 이전에 선행 자원 작용의 결과를 문의하는 것이 바람직할 수도 있다. 이에 상관 없이, 일단 준비 작용이 성공적으로 수행되고 하나 이상의 자원 작용이 시도되면, 작용 종료 루틴 84는 통상, 준비 작용의 결과로서 클러스터형 컴퓨터 시스템에 배치된 로크를 방출(릴리즈)하도록 수행된다. 작용 종료 루틴 84의 완료 시에는 블럭 86에 나타낸 바와 같이 적절한 결과를 원래의 호출 루틴으로 되돌린다. 그 결과는, 더욱 상세하게 후술되는 바와 같이, 루틴의 진전에 따라서 오류를 나타낼 수도 있고 오류 없음을 나타낼 수도 있다.
도 5는 작용 루틴 72의 준비를 더욱 상세하게 예시하고 있다. 루틴 72는 자원 작용이 수행되어야 할 필요가 있다고 판정될 때마다 클러스터형 컴퓨터 시스템의 노드에 의해서 호출되는 것이 통상적이다. 예컨대, 특정 노드 상에서의 유실 자원 또는 낮은 자원(low resource)의 검출에 응답하여, 클러스터형 컴퓨터 시스템의 그 노드는 자원 작용을 개시할 수 있다.
루틴 72는 블럭 100에서 시작하고, 이 블럭 100에서는 노드가 적절한 클러스터링 환경에 있는 지와 같은 다양한 검사를 비롯해서 환경이 어떤 준비에 대해 유효한 지를 결정한다. 유효하지 않다면, 블럭 100은 블럭 102로 제어를 진행하여 오류 상태를 되돌리고 자원 작용을 종료한다.
그 외에는, 블럭 100은 블럭 104로 제어를 진행하여 로컬 샌드박스(local sandbox)를 생성하고, 따라서 노드의 로컬 로크(local lock)를 획득한다. 이러한정황으로, 샌드박스를, 노드에 대한 작업 공간을 생성하고 그 노드의 동작을 직렬화하는 소프트웨어 오브젝트라고 칭한다. 통상, 하나의 노드에 관하여 주어진 시간에 1 개의 샌드박스만이 실행될 수 있고, 또한, 변경은 그 변경이 한 샌드박스의 종료 시에 클러스터에 대해서 지속되기 이전에 그 샌드박스에서 인도되거나 종료화될 때 한 클러스터에 대해서 행해진다. 이 샌드박스 생성의 결과는 노드가 직렬화된다는 것인데, 그 범위는 클러스터 오브젝트가 생성 또는 제거될 수 없고, 자원 소유권이 수정될 수 없으며, 노드가 클러스터형 컴퓨터 시스템에 추가되거나 클러스터형 컴퓨터 시스템로부터 제거(로컬 노드의 시각에서)될 수 없는 정도까지이다. 그러나, 다른 형태의 로크 또는 시그널(semaphore)도 본 발명의 양호한 실시예에 부합하도록 로컬 노드의 동작을 직렬화하는데 이용될 수 있다는 점을 이해하여야 한다.
블럭 104의 완료 시에, 블럭 106은 로컬 샌드박스의 생성이 성공적이었는 지를 판정한다. 성공적이지 않았다면, 제어는 블럭 102로 진행하여 루틴 72를 종료한다. 그 외에는, 제어는 블럭 108로 진행하여 로컬 노드가 스탠드얼론 모드인 지를 옵션으로 판정하고, 클러스터링에는 참가하지 않는다. 로컬 노드가 스탠드얼론 모드라면, 제어는 블럭 110으로 진행하여 스탠드얼론 준비 동작을 수행한 후 블럭 112로 진행하여 그 준비 동작의 결과를 되돌린다. 스탠드얼론 준비 동작은, 예컨대 노드 상에서 설정된 모든 클러스터 오브젝트가 소유되어 있고 활상 상태에 있다는 것을 확인하고, 또한 누락된 클러스터 오브젝트를 로크 아웃시키기 위해서 클러스터 오브젝트 설정 데이터를 적절하게 업데이트함으로써 실시될 수 있다. 통상, 스탠드얼론 설정에서는, 클러스터링 환경 준비와 연계하여 후술하는 대부분의 노드 관련 기능은 생략되지만, 어떤 상황에서는 유사한 기능을 이용하는 것이 바람직할 수 있다. 예컨대, 클러스터링 환경에서의 다른 노드를 제거하기 때문에 한 노드가 스탠드얼론 모드인 경우가 있다.
블럭 108로 되돌아가서, 노드가 스탠드얼론 모드이면, 제어는 블럭 114로 진행하여 준비 동작이 현재의 클러스터 프로토콜 내에서 수행되고 있는 지를 판정한다. 특히, 자원 작용은 클러스터 프로토콜 내에서 수행될 수도 있고 클러스터 프로토콜과는 별개로 수행될 수 있으며, 복수의 자원 작용은 단일 클러스터 프로토콜 내에서 수행될 수 있다. 예시한 실시예에서는, 클러스터 프로토콜은 노드는 준비 및 자원 작용의 완료를 보증하기 위해서 다른 노드와 통신할 수 있도록 어떤 자원 작용을 수행하기 이전에 개시되어야 한다. 따라서, 클러스터 프로토콜이 아직 달성되어 있지 않다면, 블럭 114는 블럭 116으로 진행하여 클러스터 프로토콜을 시동하고 노드들간의 통신을 개시한다. 다음에, 블럭 118은 그 프로토콜을 시동하려는 시도가 성공적이었는 지를 판정한다. 성공적이지 않았다면, 블럭 118은 작용 종료 루틴 84(후술함) 또는 유사 기능을 갖는 다른 루틴을 호출하고, 그 결과, 오류가 발생되고 그 오류는 준비의 결과로서 되돌려진다.
그러나, 클러스터 프로토콜을 시작하려는 시도가 성공적이었다면, 블럭 118은 제어를 블럭 120으로 진행하여 다른 노드들 상의 샌드박스를 시동하고, 따라서 그 다른 노드들 각각에 관하여 로크를 획득한다. 또한, 블럭 114로 되돌아가서, 클러스터 프로토콜이 이미 존재하면, 제어는 블럭 120으로 직행한다.
다른 노드마다 샌드박스를 개시함으로써, 로컬 샌드박스는 각 로컬 노드에 관하여 생성된다. 통상, 제1 노드에서는 샌드박스를 생성하고 적절한 응답을 되돌리기 위해서 각각의 다른 노드를 대기시키기 위해서 약간의 지연이 행해진다. 설정 기간 내에 적절한 응답이 되돌려지지 않으면, 블럭 122는 준비가 실패하였다고 판정할 것이고, 따라서 제어는 작용 종료 루틴 84로 진행하여 준비 동작을 종료한다. 또한 어떤 노드가 비활성이지만 샌드박스를 시작하기 위해서 메시지를 전송한다면, 그 노드는 적절한 기간 안에 응답하지 않을 것이고, 따라서 준비 동작이 실패하게 될 것이다. 이와 같은 것으로서, 다른 노드에 관하여 샌드박스를 시작하는 동작은 알려진 모든 노드가 시스템에서 활성인 지를 효과적으로 판정한다.
샌드박스가 성공적으로 생성되면, 블럭 122는 제어를 블럭 124로 진행하여 그 다른 노드에 클러스터 오브젝트 누락에 관하여 질의한다. 예시한 실시예에서는, 블럭 124는 알려진 각 오브젝트[도 3, 알려진 오브젝트 ID의 리스트(54)에 기억되어 있는 것]에게 소유주가 있는 지를 판정하도록 각각의 다른 노드에 질의를 건넴으로써 실시된다. 이어서, 블럭 126은 누락 오브젝트(소유주가 없는 오브젝트)가 존재하는 지를 판정한다. 누락 오브젝트가 있다면, 제어는 루틴 84로 진행하고, 준비 작용은 종료된다. 이 외에는, 제어는 블럭 128로 진행하여 각 클러스터 노드마다 설정 변수를 업데이트하는 CID 수정 루틴을 실시한다.
예시한 실시예에서는, 다른 노드에 관하여 샌드박스를 시작하는 동작, 누락 클러스터 오브젝트에 질의하는 동작 등은 자원 작용과 연계하여 개시된 클러스터 프로토콜을 통해서 지시된 메시지를 이용하여 실시된다. 따라서, 예컨대, 다른 노드에 관하여 샌드박스를 시작하도록 요구한 결과로 메시지가 각 노드에 전송되며, 각 노드가 전송한 응답 메시지는 샌드박스가 그 노드에 관하여 성공적으로 시작되었는 지를 나타낸다. 마찬가지로, 누락 클러스터 오브젝트에 질문한 결과로 메시지가 각 노드에 전송되어 해당 클러스터 오브젝트를 식별한다. 이어서, 각 노드는 그 오브젝트가 노드에 의해서 소유되어 있는 지를 나타내는 메시지로 응답한다. 따라서, 누락 오브젝트는 응답측 노드에 의해서 오브젝트 소유주를 나타내지 않는 메시지만을 수신함으로써 검출될 수 있다.
CID 수정 루틴 128은 각 활성 노드에 관련된 클러스터 식별자를 수정하고, 이것에 의해서, 비활성 노드는 마찬가지로 업데이트되지 않을 것이고, 따라서 준비에 후속하는 클러스터링에 참가하는 일이 방지될 것이다.
루틴 128은 블럭 130에서 질의되는 결과는 되돌린다. 이 수정이 성공적으로 수행되지 않았다면, 루틴 84가 호출되고 준비 동작은 실패한다. 이 외에는, 제어가 블럭 132로 진행하여 비활성 클러스터 오브젝트가 클러스터를 재연결하지 못하게 로크 아웃하도록 다양한 해당 클러스터 오브젝트의 클러스터 오브젝트 변수를 수정한다. 준비 동작이 지정 타입의 자원에 관하여 특정 타입의 자원 작용에 연계하여 수행되고 있다면, 그 타입(예컨대, 가상 어드레스 범위 대 DASD 유닛 번호)의 자원을 소유하고 있는 클러스터 오브젝트만을 수정할 수 있다. 클러스터 오브젝트 변수를 수정하는 것은 통상, 그 오브젝트를 소유하는 노드에 메시지를 보내는 것을 포함하므로, 각 노드는 그 노드에 국한된 오브젝트 설정 변수 데이터를 업데이트할 수 있다. 그러나, 클러스터 오브젝트를 소유하고 있는 노드는 클러스터 오브젝트와함께 로컬 정보를 더 수정한다.
루틴 132는 마찬가지로 블럭 134에서 질의되는 결과를 되돌린다. 이 수정 동작이 성공적으로 수행되지 않았다면, 제어는 루틴 84로 진행하여 그 작용을 종료하고 준비를 종료한다. 이 외에는, 블럭 136에서 나타내는 바와 같이 "오류 없음" 상태를 되돌림으로서 성공적인 결과를 나타낸다.
클러스터 설정 변수를 수정하는 것은 변수에 관련된 단일 값을 간단히 수정하고, 또한 지시된 메시지 처리를 이용하여 그 수정이 모든 관련 클러스터 독립체에 전파되는 것을 보증함으로써 수행될 수 있다. 대안으로, 각 클러스터 설정 변수마다 복수의 값을 이용하여 현재 값과 "미래" 값을 나타내는 것이 바람직할 수도 있다. 변수의 수정 시에는, 먼저 "미래" 값을 새로운 값으로 수정하고 나서 정규 사본(regular copy)을 새로운 값으로 수정한다. 따라서, 이 프로세스가 어느 시점에서 실패하면 모든 노드는 적어도 하나의 값에 일치가 유지된다.
값의 쌍을 이용하여 클러스터 ID 또는 클러스터 오브젝트 변수를 수정하는데 사용될 수 있는 예시적인 루틴을 도 6의 ID 수정 루틴 140으로 예시하고 있다. "ID"를 첨부한 모든 참조 부호는 변경되어 있는 특정 클러스터 설정 변수에 따라서 클러스터 ID 또는 클러스터화된 오브젝트 변수를 지칭할 수 있다는 점을 이해하여야 한다.
루틴 140은 블럭 142에서 시작하는데, 이 블럭 142에서는 각 노드에 기억된 현재의 ID 쌍 값에 관하여 질의한다. 통상, 블럭 142는 지시된 메시지를 이용하여 실시되고, 이 때, 각 노드는 요구에 응답하여 특정 변수에 대한 현재 값으로 응답한다.
다음에, 블럭 144는 제1 값이 동기화되는 지, 즉 동일한 제1 값이 각 노드에 기억되어 있는 지를 판정한다. 동기화되어 있지 않다면, 제어는 블럭 146으로 진행하여 각노드의 제1 값을, 루틴 140을 실행하고 있는 노드가 선택한 임의의 값으로 설정한다. 지시된 메시지를 통해서 설정 동작도 수행되며, 그 결과로서, 각 노드가 성공적으로 업데이트된 값을 갖는다는 것을 확인하기 위해서 적절한 응답 메시지를 기다린다. 따라서, 블럭 148은 제1 값이 성공적으로 업데이트되었는 지를 판정하고, 어떤 오류가 검출되면 제어는 블럭 150으로 진행하여 루틴 140을 종료하고 오류 상태를 되돌린다. 이 외에는, 블럭 148은 제어를 블럭 152로 진행하여 제2 값이 동기화되어 있는 지를 판정한다. 또한, 블럭 144에서 제1 값이 동기화되어 있음을 판정하면, 제어는 블럭 152로 직행한다.
제2 값이 동기화되어 있지 않으면, 제어는 블럭 154로 진행하여 제2 값을, 제1 값이 블럭 146에 연계하여 설정된 것과 동일한 방식으로 설정한다. 이어서, 블럭 156은 설정 동작이 성공적이었는 지를 판정하고, 오류가 검출되면 제어를 블럭 158로 진행한다. 이 외에는, 블럭 156은 제어를 블럭 158로 진행하여 새로운 ID 쌍 값을 발생하게 되는데, 이러한 새로운 ID 쌍 값의 발생은 예컨대 그들의 원래 상태에서부터 그 값들을 증분함으로써 행해진다. 대안으로, 이 수정이 모든 노드에 전파되는 한 각 노드마다 임의의 수를 선택하여도 좋다. 또한, 블럭 152로 되돌아가서, 제2 값이 동기화되어 있다면, 제어는 블럭 158로 직행한다.
새로운 변수 값이 발생되면, 제어는 블럭 160으로 진행하여 제1 값을 수정한다. 블럭 146에서와 같이, 제1 값의 수정은 지시된 메시지를 통해서 수행되며, 뒤이어서 블럭 162는 제1 값이 성공적으로 수정되었는 지를 판정한다. 제1 값이 성공적으로 수정되지 않았다면, 제어는 블럭 150으로 진행하여 오류를 되돌린다. 이 외에는, 제어는 블럭 164로 진행하여 전술한 바와 동일한 방식으로 제2 값을 수정한다. 이 결과에 기초하여, 블럭 166은 제어를 블럭 150으로 진행하여 오류를 되돌리거나 제어를 블럭 168로 진행하여 오류 없음 상태를 되돌림으로써, 그 수정이 성공적으로 완료되었다는 것을 표시한다.
이제 도 4로 되돌아가서, 작용 준비가 완료되고 성공적인 결과가 되돌려지면 원하는 자원 작용이 수행된다. 전술한 바와 같이, 수 많은 각종 자원 작용을 예상할 수 있다. 도 7은 예시적인 자원 복구 루틴 180을 예시하며, 이 자원 복구 루틴 180은 예컨대 특정 타입 자원 손실의 검출에 응답하여 특정 타입 자원을 복구하도록 수행된다.
루틴 180은 블럭 182에서 시작하는데, 이 블럭 182에서는 모든 노드에 질의하여 다른 노드에 의해서 소유된 자원이 어떤 자원인 지, 그리고 그 다른 자원에 의해서 소유된 클러스터 오브젝트에 의해서 소유된 자원이 어떤 자원인 지를 판정한다. 블럭 182는 기본적으로, 시스템 안에 있는 현존 자원을 재고 조사하는 것에 상당한다. 통상, 이러한 재고 조사는 다양한 노드에 대해서 복수의 질의를 발생하는 것으로 이루어지며, 그 질의에 대한 응답 시에 적절한 응답이 발생된다. 블럭 182의 결과로 소유 자원의 리스트 또는 테이블이 생성된다.
블럭 182의 완료 시에, 블럭 184는 질의가 성공적이었는 지, 그리고 소유 자원의 유효 테이블이 생성되었는 지를 판정한다. 이들 판정이 부정적이면, 제어는 블럭 186으로 진행하여 루틴 180을 종료하고 오류 상태를 되돌린다. 이 외에는, 제어는 블럭 188로 진행하여 소유 자원을 시스템 안에 있는 알려진 자원과 비교한다. 이러한 비교를 통해서, 무소유 자원의 리스트가 생성되고, 이러한 것으로서 블럭 190을 실행하여 누락 자원을 복구함으로써 이들 누락 자원의 소유권을 획득한다. 이들 무소유 자원도 역시 누락 자원이라고 칭한다. 그 이유는 이들 자원이 어떤 클러스터 독립체가 소유권을 상실하여 유실되었기 때문이다.
누락 자원을 복구하고 초기 노드가 이 누락 자원을 청구하면, 제어는 블럭 192로 진행하여 루틴을 종료하고 오류 없음 상태를 되돌린다. 따라서 자원 복구가 완료된다.
각종 타입의 자원이 본 발명의 양호한 실시예에 부합하도록 복구될 수 있다는 점을 이해하여야 한다. 예컨대, 가상 어드레스 범위, 클러스터 오브젝트 및 DASD 유닛을 별개로 복구할 수 있는 능력을 지원하는 것이 바람직할 수 있다.
다른 형태의 자원 작용을 지원하는 것이 바람직할 수도 있다. 예컨대, 가상 어드레스 공간에서 "경계 이동"을 지원하는 것이 바람직할 수도 있다. 예시한 실시예에서는, 예컨대, 가상 어드레스를 분할하여 클러스터 노드와 클러스터 오브젝트에 각각 할당되는 2 개의 범위로 구획될 수 있다. 가상 어드레스가 상이한 노드 및 오브젝트에 할당되면, 메모리 공간은 가상 어드레스 공간의 각 단부측에서부터 그 2 개의 구획간의 경계쪽을 향해서 소비될 수 있다. 클러스터 노드 또는 클러스터 오브젝트가 자신의 개별 구획 내에 있는 가용 공간 전부를 이용하면, 경계를 이동하고 그에 따라서 추가의 메모리 공간을 가득찬 공간쪽으로 할당하는 것이 바람직할 수 있다. 또한, 예시한 실시예에서는 노드에 할당된 구획에 의해서, 각 노드 내에서 가상 어드레스가 재사용될 수 있다. 그 이유는 가상 어드레스가 각 노드에 국부적으로 이용되기 때문이다. 그러나, 다양한 노드가 클러스터 오브젝트를 소유할 수 있기 때문에, 오브젝트에 할당된 각 가상 어드레스는 고유하여야 한다. 따라서, 경계 동작의 이동을 수행하기 위해서는 각 노드에 질의를 행하여 경계의 이동이어드레스 범위를 잃고 있는 구획 안에서 사용되는 가상 어드레스와 충돌하지 않는다는 것을 보증하여야 한다.
다시 도 4로 되돌아가서, 다양한 자원 작용 수행의 완료 시에는, 작용 종료 루틴 84를 호출하여 자원 작용 프로세스를 완료한다. 또한, 도 5에 나타낸 바와 같이, 루틴 84는 로컬 노드에서 로컬 샌드박스를 획득한 후에는 언제든지 준비 동작 기간 중에 호출될 수 있다.
도 8에서는 작용 종료 루틴 84를 더욱 상세하게 예시하고 있다. 루틴 84는 블럭 200에서 시작하는데, 이 블럭 200에서는 로컬 노드가 스탠드얼론 모드에 있는 지를 판정한다. 로컬 노드가 스탠드얼론 모드에 있지 않으면, 제어는 블럭 202로 진행하여 다른 노드의 샌드박스를 종료한다. 이 종료 처리는 통상, 메시지를 각 다른 노드에 전송하여 그의 로컬 샌드박스를 종료함으로써 행해진다. 다음에, 블럭 204는 자원 작용이 다른 클러스터 프로토콜에 안주되고 있는 지를 판정한다. 먼저 자원 작용이 안주되고 있지 않다고 가정하면, 제어는 블럭 206으로 진행하여 클러스터 프로토콜을 종료하고, 이어서 블럭 208로 진행하여 그 노드의 로컬 샌드박스를 종료한다. 이어서, 이 동작의 결과가 복귀되고, 루틴 84는 블럭 210에서 종료된다.
블럭 200과 블럭 204로 되돌아가서, 노드가 스탠드얼론 모드에 있거나 자원 작용이 다른 클러스터 프로토콜에 안주되어 있다면, 중간에 있는 블럭들은 생략되고, 제어는 블럭 208로 직행하여 그 노드의 로컬 샌드박스를 종료한다.

Claims (9)

  1. 복수의 자원과, 이 복수의 자원을 소유하도록 구성된 복수의 클러스터 독립체를 포함하는 타입의 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법으로서,
    상기 클러스터형 컴퓨터 시스템 안에 있는 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하는 단계를 구비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하도록 차단되는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  2. 제1항에 있어서, 상기 복수의 클러스터 독립체는 복수의 클러스터 노드 또는 클러스터 오브젝트를 포함하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  3. 제2항에 있어서, 상기 클러스터 설정 변수는 상기 복수의 클러스터 노드의 각 클러스트 오브젝트에 기억된 클러스터 식별자를 포함하고, 상기 클러스터 설정변수는 오브젝트 식별자와, 상기 복수의 클러스터 오브젝트의 각 클러스터 오브젝트에 관련된 소유권 이관 카운트를 포함하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  4. 선행항 중 어느 한 항에 있어서, 상기 클러스터형 컴퓨터 시스템을 준비한 후에 자원 작용을 수행하는 단계를 더 구비하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  5. 제4항에 있어서, 상기 복수의 클러스터 독립체는 복수의 노드와, 상기 복수의 노드에 위치하는 복수의 클러스터 오브젝트를 구비하고, 상기 자원 작용을 수행하는 것은, (a) 복수의 자원 중에서 어느 자원이 소유되어 있는 지를 판정하기 위해서 상기 클러스터형 컴퓨터 시스템에 있는 상기 복수의 노드에 질의하는 단계와 (b) 무소유 자원의 소유권을 상기 복수의 노드 중 제1 노드에 이관하는 단계를 구비하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  6. 선행항 중 어느 한 항에 있어서, 상기 클러스터형 컴퓨터 시스템을 준비하는 단계는 상기 클러스터 설정 변수를 변경하기 이전에 상기 클러스터형 컴퓨터 시스템에 관한 로크(lock)를 획득하는 것을 포함하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  7. 제6항에 있어서, 상기 자원 작용의 수행 후에 상기 로크를 해제(릴리즈)하는 단계를 더 구비하는 것인 클러스터형 컴퓨터 시스템의 자원 작용 수행 방법.
  8. 클러스터형 컴퓨터 시스템으로서,
    (a) 네트워크를 통해서 서로 결합되어 있는 복수의 노드와,
    (b) 복수의 자원과,
    (c) 상기 복수의 자원을 소유하도록 구성된 복수의 클러스트 독립체와,
    (d) 상기 복수의 노드 중 제1 노드에 상주하는 프로그램을 구비하고,
    상기 프로그램은 상기 복수의 자원의 적어도 하나의 서브세트에서 자원 작용을 수행하도록 구성되고, 또한
    상기 프로그램은, 상기 클러스터형 컴퓨터 시스템 안에 있는 상기 복수의 클러스터 독립체에 관련된 적어도 하나의 클러스터 설정 변수를 변경하되, 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하도록, 그리고 상기 클러스터형 컴퓨터 시스템이 준비되어 있는 기간 중에 비활성되어 있는 클러스터 독립체는 상기 클러스터 설정 변수에 대한 변경을 수용하지 않도록 함으로써, 상기 자원 작용을 수행하기 이전에 상기 클러스터형 컴퓨터 시스템을 준비하고, 이것에 의해서, 이러한 비활성 클러스터 독립체가 이후에 상기 클러스터형 컴퓨터 시스템 안으로 수용되지 못하게 차단되도록 구성되는
    것인 클러스터형 컴퓨터 시스템.
  9. 컴퓨터 코드를 구비하는 컴퓨터 프로그램으로서, 상기 컴퓨터 코드는 컴퓨터 시스템에 로드되어 실행될 때, 청구항 제1항 내지 제7항 중 어느 한 항에 따른 방법의 모든 단계들을 수행하도록 상기 컴퓨터 시스템을 작용시키는 것인 컴퓨터 프로그램.
KR1020037014214A 2001-04-30 2002-04-18 클러스터형 컴퓨터 시스템의 자원 대상 작용 수행 방법 및 장치, 클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 기록 매체 KR100637775B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/845,592 US6889253B2 (en) 2001-04-30 2001-04-30 Cluster resource action in clustered computer system incorporation prepare operation
US09/845,592 2001-04-30
PCT/GB2002/001809 WO2002088946A2 (en) 2001-04-30 2002-04-18 Resource action in clustered computer system incorporating prepare operation

Publications (2)

Publication Number Publication Date
KR20040015223A true KR20040015223A (ko) 2004-02-18
KR100637775B1 KR100637775B1 (ko) 2006-10-24

Family

ID=25295589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037014214A KR100637775B1 (ko) 2001-04-30 2002-04-18 클러스터형 컴퓨터 시스템의 자원 대상 작용 수행 방법 및 장치, 클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 기록 매체

Country Status (8)

Country Link
US (1) US6889253B2 (ko)
EP (1) EP1386234A2 (ko)
JP (1) JP3910539B2 (ko)
KR (1) KR100637775B1 (ko)
CN (1) CN1224905C (ko)
AU (1) AU2002253319A1 (ko)
TW (1) TWI251781B (ko)
WO (1) WO2002088946A2 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US20040139125A1 (en) * 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US7228351B2 (en) * 2002-12-31 2007-06-05 International Business Machines Corporation Method and apparatus for managing resource contention in a multisystem cluster
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7085862B2 (en) * 2003-03-13 2006-08-01 International Business Machines Corporation Apparatus and method for controlling resource transfers in a logically partitioned computer system by placing a resource in a power on reset state when transferring the resource to a logical partition
US7039820B2 (en) 2003-04-24 2006-05-02 International Business Machines Corporation Method for detecting and powering off unused I/O slots in a computer system
US7587475B2 (en) * 2003-06-25 2009-09-08 Nokia Siemens Networks Oy System for joining a cluster by cloning configuration
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7302607B2 (en) * 2003-08-29 2007-11-27 International Business Machines Corporation Two node virtual shared disk cluster recovery
US7353536B1 (en) * 2003-09-23 2008-04-01 At&T Delaware Intellectual Property, Inc Methods of resetting passwords in network service systems including user redirection and related systems and computer-program products
JP2005165702A (ja) * 2003-12-03 2005-06-23 Hitachi Ltd クラスタストレージのデバイス連結方法
US20050144402A1 (en) * 2003-12-29 2005-06-30 Beverly Harlan T. Method, system, and program for managing virtual memory
US7490325B2 (en) 2004-03-13 2009-02-10 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US7523204B2 (en) * 2004-06-01 2009-04-21 International Business Machines Corporation Coordinated quiesce of a distributed file system
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
CN100465901C (zh) * 2004-08-02 2009-03-04 索尼计算机娱乐公司 网络系统、管理计算机以及集群管理方法
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US20060074940A1 (en) * 2004-10-05 2006-04-06 International Business Machines Corporation Dynamic management of node clusters to enable data sharing
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US8631130B2 (en) 2005-03-16 2014-01-14 Adaptive Computing Enterprises, Inc. Reserving resources in an on-demand compute environment from a local compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US9225663B2 (en) 2005-03-16 2015-12-29 Adaptive Computing Enterprises, Inc. System and method providing a virtual private cluster
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
DE102006001257A1 (de) * 2005-12-30 2007-07-12 Advanced Micro Devices, Inc., Sunnyvale Automatisiertes Zustandabschätzungssystem für Cluster-Anlagen und Verfahren zum Betreiben des Systems
US20080189715A1 (en) * 2006-03-14 2008-08-07 International Business Machines Corporation Controlling resource transfers in a logically partitioned computer system
US8209417B2 (en) * 2007-03-08 2012-06-26 Oracle International Corporation Dynamic resource profiles for clusterware-managed resources
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8627451B2 (en) * 2009-08-21 2014-01-07 Red Hat, Inc. Systems and methods for providing an isolated execution environment for accessing untrusted content
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9684785B2 (en) 2009-12-17 2017-06-20 Red Hat, Inc. Providing multiple isolated execution environments for securely accessing untrusted content
US8473959B2 (en) * 2010-02-22 2013-06-25 Virtustream, Inc. Methods and apparatus related to migration of customer resources to virtual resources within a data center environment
US9122538B2 (en) 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
CN102339283A (zh) * 2010-07-20 2012-02-01 中兴通讯股份有限公司 集群文件系统访问控制方法及集群节点
US9027151B2 (en) * 2011-02-17 2015-05-05 Red Hat, Inc. Inhibiting denial-of-service attacks using group controls
EP2748705A4 (en) 2011-08-25 2015-05-20 Virtustream Inc SYSTEMS AND METHODS FOR HOST-RELATED RESOURCE MANAGEMENT WITH CLUSTER-BASED RESOURCE POOLS
US9665411B2 (en) * 2012-05-01 2017-05-30 Red Hat, Inc. Communication between a server orchestration system and a messaging system
US10454999B2 (en) * 2013-03-14 2019-10-22 Red Hat, Inc. Coordination of inter-operable infrastructure as a service (IAAS) and platform as a service (PAAS)
US9954958B2 (en) 2016-01-29 2018-04-24 Red Hat, Inc. Shared resource management
US11212175B2 (en) * 2016-06-22 2021-12-28 EMC IP Holding Company, LLC Configuration management for cloud storage system and method
US11321359B2 (en) * 2019-02-20 2022-05-03 Tamr, Inc. Review and curation of record clustering changes at large scale
US20230117962A1 (en) * 2021-10-18 2023-04-20 Sophos Limited Executable policy declarations for network security

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996075A (en) 1995-11-02 1999-11-30 Sun Microsystems, Inc. Method and apparatus for reliable disk fencing in a multicomputer system
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database

Also Published As

Publication number Publication date
WO2002088946A3 (en) 2003-09-18
AU2002253319A1 (en) 2002-11-11
WO2002088946A2 (en) 2002-11-07
EP1386234A2 (en) 2004-02-04
JP2004529431A (ja) 2004-09-24
US20020161869A1 (en) 2002-10-31
JP3910539B2 (ja) 2007-04-25
CN1503942A (zh) 2004-06-09
TWI251781B (en) 2006-03-21
KR100637775B1 (ko) 2006-10-24
US6889253B2 (en) 2005-05-03
CN1224905C (zh) 2005-10-26

Similar Documents

Publication Publication Date Title
KR100637775B1 (ko) 클러스터형 컴퓨터 시스템의 자원 대상 작용 수행 방법 및 장치, 클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 기록 매체
US7631066B1 (en) System and method for preventing data corruption in computer system clusters
US7272674B1 (en) System and method for storage device active path coordination among hosts
US8055735B2 (en) Method and system for forming a cluster of networked nodes
KR100423225B1 (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
US7454422B2 (en) Optimization for transaction failover in a multi-node system environment where objects' mastership is based on access patterns
US7464378B1 (en) System and method for allowing multiple sub-clusters to survive a cluster partition
US7131120B2 (en) Inter Java virtual machine (JVM) resource locking mechanism
US7739541B1 (en) System and method for resolving cluster partitions in out-of-band storage virtualization environments
US7130897B2 (en) Dynamic cluster versioning for a group
US8856091B2 (en) Method and apparatus for sequencing transactions globally in distributed database cluster
US7953890B1 (en) System and method for switching to a new coordinator resource
US20040205148A1 (en) Method for operating a computer cluster
US20030056013A1 (en) Synchronization of group state data when rejoining a member to a primary-backup group in a clustered computer system
US20020165929A1 (en) Method and protocol for assuring synchronous access to critical facilitites in a multi-system cluster
JPH09237226A (ja) マルチコンピュータ・システムにおける信頼性の高いディスク・フェンシングのための方法および装置
WO2007028248A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster
JP2003515813A (ja) 記憶ネットワーク内の定足数資源アービタ
CN1989500A (zh) 文件系统串行化重新初始化装置、方法和系统
US5550973A (en) System and method for failure recovery in a shared resource system having a moving write lock
US8230086B2 (en) Hidden group membership in clustered computer system
JP3846852B2 (ja) 分散コンピューティング環境の処理グループを管理する方法、システム、およびプログラム製品
JP3790717B2 (ja) クラスタ化コンピュータ・システムでの入出力ブリッジ・デバイスのアトミック所有権変更動作
US20040107176A1 (en) Method and apparatus for providing storage control in a network of storage controllers
WO2007028249A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee