KR100420549B1 - 논리 디스크의 트랜잭션 지원 장치 및 방법 - Google Patents

논리 디스크의 트랜잭션 지원 장치 및 방법 Download PDF

Info

Publication number
KR100420549B1
KR100420549B1 KR10-2001-0052936A KR20010052936A KR100420549B1 KR 100420549 B1 KR100420549 B1 KR 100420549B1 KR 20010052936 A KR20010052936 A KR 20010052936A KR 100420549 B1 KR100420549 B1 KR 100420549B1
Authority
KR
South Korea
Prior art keywords
data
transaction
block
storage device
tsld
Prior art date
Application number
KR10-2001-0052936A
Other languages
English (en)
Other versions
KR20020018158A (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
Priority claimed from US09/651,910 external-priority patent/US6668304B1/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20020018158A publication Critical patent/KR20020018158A/ko
Application granted granted Critical
Publication of KR100420549B1 publication Critical patent/KR100420549B1/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
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명은 데이터 트랜잭션을 수행하기 위한 장치로서, 내부에 개개의 물리적 위치에 기억하기 위해 데이터를 연속 데이터 블럭으로서 수신하도록 적응되는 적어도 하나의 기억 장치와 제어 회로를 포함하고 있다. 제어 회로는 적어도 하나의 기억 장치에 기록하는 동안에, 데이터 블럭들 중 적어도 몇 개의 데이터 블럭과, 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 파라미터들, 트랜잭션 상태의 레코더의 식별자, 및 연속 데이터 블럭에서의 후속의 데이터 블럭의 위치와 함께, 연속 데이터 블럭을 적어도 하나의 기억 장치에 전달하도록 구성되어 있다. 또한, 제어 회로는, 표시 파라미터들 중 몇 개의 표시 파라미터를 이용하여 데이터 트랜잭션을 완료(완결 또는 중지)하기 위해 데이터의 상태를 변환하도록 구성되어 있다. 소정의 트랜잭션이 완료, 즉 완결 또는 중지되기 전에 본 발명의 장치에 오류가 발생하면, 본 발명의 장치는 데이터 블럭에 기억된 데이터를 이용하여 완전한 복구를 용이하게 한다.

Description

논리 디스크의 트랜잭션 지원 장치 및 방법{TRANSACTION SUPPORT ON LOGICAL DISKS}
트랜잭션이란 정보 교환의 순서와, 데이터의 완전성(integrity)을 보증하기 위한 원자성(atomicity)의 단위로서 취급되는 관련 작업(예컨대, 데이터베이스의 갱신)이다. 트랜잭션시, 데이터는 하나의 일관성 상태에서 다른 일관성 상태로 변형된다. 소정의 트랜잭션이 완료되고 데이터의 변경이 영구적으로 만들어지는(또는"완결되는") 경우, 소정의 트랜잭션은 오류에 대해서 원자적으로 행해져야 한다. 즉, 그 트랜잭션은 그의 전체로써 완료되어야 한다. 만일 그 트랜잭션이 성공적으로 완료되기 전에 무슨 일이 생기면, 마치 그 트랜잭션은 전혀 존재하지 않았던 것과 같은 효과가 나타나도록, 그 트랜잭션은 중지되고, 어떠한 데이터 변경도 행해지지 않아야 한다. 이하, 트랜잭션에 사용될 때의 용어 "완료"는 그 트랜잭션이 완결 또는 중지 중 어느 하나가 된 것임을 의미한다.
트랜잭션 지원의 고유한 어려움은 그 트랜잭션의 참가자가 분산형 시스템의 일부일 때 더욱 악화된다. 따라서, 트랜잭션이 모든 참가자들에 의해 원자적으로 또는 일관성 있게 완결하거나 중지하는 것을 보증할 필요가 있다. 예컨대, 트랜잭션의 일부 참가자가 오류를 일으킬 수 있을 것이고, 분산형 시스템의 경우에 그 밖의 참가자 중 일부 참가자가 그 오류를 알지 못하게 될 가능성이 있다. 또한, 오류 후에 복구된 참가자들은 그 트랜잭션의 운명을 결정하여야 한다.
공저자가 Berstein 등(Addison-Wesley사, 1987년판)이고 본 명세서에 인용되는데이터베이스 시스템의 병행 제어 및 복구 방법(Concurrency Control and Recovery in Database Systems)은 제7장에서 분산형 시스템의 여러 사이트에서 트랜잭션의 일관성을 보증하는 원자적 완결 프로토콜(ACP)에 관한 설명이 나타나 있다. 저자들은 2단계의 완결(2PC) 프로토콜을 ACP의 일례로서 설명하고 있다. 2PC 프로토콜은 제1 단계, 즉 트랜잭션의 모든 참가자가 그 트랜잭션을 완결하여야 할지 또는 중지하여야 할지의 여부에 관하여 문의(poll)받는 단계를 포함하고 있다. 2PC 프로토콜 중 제2 단계에서는 트랜잭션의 코디네이터가 그 문의를 기초로 하여그 트랜잭션을 완결하거나 중지하여야 할지를 결정하고 그 결정을 참가자들에게 전송한다.
데이터를 효율적으로 기억하고 그 기억된 데이터를 컴퓨터 시스템의 오류시에 복구하는 방법들은 기술상 공지되어 있다. 그들 방법은 그 데이터에 부가하는 정보를 불휘발성 메모리, 통상적으로 디스크에 기억시키고 그 부가 정보를 이용하여 오류가 발생할 때 그 기억된 정보를 복구하는 것에 의존하고 있다.
발명자가 English 등이고 개시 내용이 본 명세서에 인용되는 미국 특허 제5,345,575호는 메모리를 포함하는 디스크 제어기에 관하여 설명하고 있다. 그 메모리는 디스크에 기억된 데이터 블럭의 논리 어드레스를, 물리적 기억 위치를 식별하는 라벨에 사상(mapping)하는 표를 포함하고 있다. 데이터를 기억 위치에 기록하는 것에 더하여, 디스크 제어기는 각 기억 위치의 관련된 논리 어드레스, 타임 스탬프, 및 데이터 블럭의 순서에서 특정 데이터 블럭이 나타나는 곳을 표시하는 데이터를 기록한다. 그 부가 정보는 거의 전체의 디스크를 판독함으로써 시스템 오류로부터 복구하기 위하여 이용된다.
발명자가 Chao 등이고 개시 내용이 본 명세서에 인용되는 미국 특허 제5,481,694호는 메모리, 복수 개의 자기 디스크 장치, 및 제어기를 포함하는 전자 데이터 기억 시스템에 관하여 설명하고 있다. 그 메모리는 논리 어드레스를 디스크 장치의 물리 어드레스와 상호 비교하는 표, 진부한 데이터를 포함하고 있는 물리 어드레스들의 리스트, 및 데이터를 수신할 수 있는 디스크 장치의 세그먼트를 위한 물리 어드레스들의 리스트를 포함하고 있다. 데이터가 디스크 장치에 기록될 때,논리 어드레스와 다중 블럭 기록의 순번을 포함하는 태그는 그 데이터와 함께 기록된다. 시스템의 오류로부터 복구하기 위하여, 체크포인트 로그와, 디스크 장치에 기억된 체크포인트 세그먼트들은 표와 리스트들을 복구시킨다.
제14차 운용 체계 원리 심포지움 회보(Proceedings of the 14th Symposium on Operating Systems Principles)(1993년 12월)의 15쪽∼28쪽에 게재되고 본 명세서에 인용하는 Jong 등의 논문 "논리 디스크: 파일 시스템 개선을 위한 새로운 접근 방법(The Logical Disk: A New Approach to Improving File Systems)"에서, 논문의 저자들은 디스크 기억을 위해 파일 관리와 디스크 관리를 분리하는 인터페이스가 설치된 논리 디스크에 관하여 설명하고 있다. 그 인터페이스는 논리 블럭수와 블럭 리스트를 이용하여, 다중 파일 시스템들을 지원한다. 그 저자들은 원자적 복구 장치(ARU: Atomic Recovery Unit)의 지원을 주장하고 있다. 복구 중에, 동일한 ARU에 속하는 모든 논리 디스크 명령은 보이지 않는 단일의 동작으로서 취급된다. 따라서, 논리 디스크는 항상, ARU의 모든 동작을 수행하기 이전에 존재했던 상태, 또는 그 후에 존재했던 상태 중 어느 하나로 복구할 것이다.
1992년 동계 USENIX 기술 회의 회보(Proceedings of the USENIX Winter1992Technical Conference)(1992년 1월)의 237쪽∼251쪽에 게재되고 본 명세서에 인용하는 English 등의 논문 "로지: 자체 편성 디스크 제어기(로지: a self-organizing disk controller)"에서, 그 저자들은 변환표와 할당맵을 이용하여 데이터를 디스크에 기억시키는 시스템에 관하여 설명하고 있다. 블럭 어드레스와 타임 스템프를 포함하는 트레일러 태그는 기억된 데이터와 함께 디스크에 기록된다. 그 트레일러 태그의 정보에 의하여, 시스템은 오류로부터 복구될 수 있다.
HPL-CSP-92-9(1992년 11월, 휴렛팩커드사 발간)에 게재되고 본 명세서에 인용하는 Chao 등의 논문 "마임: 복구 보장성이 강력한 고성능 병렬 기억 장치(마임: a high performance parallel storage device with strong recovery guarantees)"에서, 그 저자들은 전술한 로지의 디스크 기억 아키텍쳐와 유사한 것에 관하여 설명하고 있다. 마임에서, 트레일러 태그는 블럭 어드레스, 다중 블럭 기록들의 순번, 및 last-packet-in-multiblock-write 플래그를 포함하고 있다. 로지에서와 같이, 트레일러 태그의 정보에 의하여, 시스템은 오류로부터 복구될 수 있다.
마임은 제한된 형태의 트랜잭션 지원을 갖는 원자적 다중 블럭 기록들을 가시성 그룹의 형태로 지원한다. 마임은 오류 발생의 경우에 활동 중인 가시성 그룹 내의 모든 블럭 기록이 중지되는 것을 보장한다.
본 발명의 몇 가지 양상의 목적은 데이터 트랜잭션을 지원하기 위한 개선된 시스템을 제공하는 것이다.
본 발명의 몇 가지 양상의 다른 목적은 트랜잭션의 참가자들이 네트워크 상에 분산되어 있을 때 동시 데이터 트랜잭션들을 수행하기 위한 개선된 시스템을 제공하는 것이다.
본 발명의 양호한 실시예에서, 하나 이상의 기억 장치, 양호하게는 불휘발성 디스크는 그들 기억 장치의 하나 이상의 클라이언트가 개시하는 트랜잭션의 데이터 내용을 기억하기 위하여 이용된다. 각 기억 장치는 트랜잭션의 데이터 내용을 기억 장치의 선택된 블럭 프레임에 기록하는 제어 회로, 양호하게는 기억 서버에 의하여 관리된다. 본 명세서에서는 이러한 기억 장치를 트랜잭션 지원 논리 디스크(TSLD)라고 부른다. 기억 서버는 휘발성 메모리를 가지며, 그 메모리 내에서, 기억 서버는, 특히, TSLD에 기록된 트랜잭션 데이터를 추적하고 그 데이터가 기록되어 있는 블럭 프레임의 물리 어드레스와 논리 어드레스를 동적으로 링크하는데 이용되는 값을 갖는 데이터 구조를 유지하고 있다.
특정 기억 서버의 오류로부터 TSLD를 보호하기 위하여, 서버의 데이터 구조 안에 있는 값은 체크포인트 동작을 이용하여 주기적인 간격으로 그 TSLD에 기억된다. 체크포인트 동작들 사이에, 데이터 구조들의 값은 또한, 각 TSLD의 블럭 프레임 내의 트랜잭션의 데이터 내용과 함께 기억된다. 양호하게는, 데이터 구조의 값과 체크포인트 데이터에 의해, 블럭 프레임 내의 데이터 내용이 복구될 수 있도록, 그 블럭 프레임은 기억 서버 오류의 경우에 종래와 같이 발견될 수 있다. 오류의 경우에, 기억 서버는, 최종 체크포인트 데이터가 수행된 이후에, 그 기억된 체크포인트 데이터를 판독하고, 트랜잭션 완결과 트랜잭션 중지를 비롯한 TSLD 동작의 과정을 "재생"한다. 재생 과정에 의해, 기억 서버는 그의 상태와, 오류시의 소정의 진행 중인 트랜잭션의 상태를 복구할 수 있다. 다른 기억 및 복구의 방법들은 전술한 특허 가출원과, 특허 출원일이 2000년 6월 6일이고 본 출원의 양수인에게 양도되고 본 명세서에 인용되며 발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"인 다른 특허 출원에 설명되어 있다.
본 발명의 양호한 실시예는, 양호하게는, 발명의 배경 항목에서 포괄적으로 설명된 2단계 완결(2PC) 프로토콜을 지원한다. 트랜잭션의 제1 단계에서, 트랜잭션 코디네이터라고 부르는 특정 TSLD 클라이언트는 기본 TSLD가 될 트랜잭션에 참가하는 TSLD들 중 하나를 지정함으로써 트랜잭션을 개시한다. 그 기본 TSLD은 트랜잭션의 상태를 추적함으로써 레코더로서 기능하고, 그 클라이언트는 트랜잭션을 시작하도록 기본 TSLD에 지시한다. 클라이언트는 다른 TSLD들의 관리 서버를 통하여, 트랜잭션에 참가하는 그들 다른 TSLD에게 지시하고, 트랜잭션의 적절한 데이터 내용을 각 TSLD에 "소프트-기록"하며, 따라서 비-완결된 블럭값들을 발생하고, 이것이 수행된 각 경우에 클라이언트에게 통지한다. 소프트-기록시, 기록된 블럭 프레임의 논리 어드레스와 물리 어드레스는 임시적으로 링크된다. 일단 제1 단계가 성공적으로 달성되었음을 클라이언트가 알게 되면, 제2 단계에서 클라이언트는 기본 TSLD에게 지시하여 트랜잭션을 완결시키고, 이어서 클라이언트는 완결 지시를 참가 중인 각 TSLD에 발송하여 트랜잭션을 완결시켜서, 완결된 블럭값을 발생한다. 완결 동작은 임시적으로 링크된 어드레스들을 영구적으로 링크시킴으로써 수행된다. 제1 단계가 미리 결정된 기간 내에 성공적으로 완료되지 않으면, 클라이언트는 기본 TSLD에게 지시하여 트랜잭션을 중지시키고, 이어서 클라이언트는 중지 지시를 참가 중인 각 TSLD에 발송하여 트랜잭션을 중지시키며, 이 때 트랜잭션 이전에 존재하는 어드레스 링크는 복원된다.
전술한 시스템은 기술상 공지된 트랜잭션에 대하여 시스템 상의 트랜잭션 동작시 여러 가지의 중요한 이점을 갖는다. 특히,
● 데이터 구조 내의 동일 정보는 TSLD가 서버의 오류로부터 거의 완전하게 복구될 수 있고, 또한 2단계 완결 프로토콜의 효율적인 실시를 가능하게 하도록 이용된다.
● 시스템은 복수 개의 TSLD를 통해 분산된 트랜잭션을 지원하고, 또한 하나 이상의 TSLD에 관한 동시 데이터 트랜잭션을 지원한다.
● 트랜잭션 상태들의 중심 로그는 없다. 각 트랜잭션은 상이한 기본 TSLD를 선택할 수 있고, 따라서 트랜잭션 상태 로깅(logging)은 분산된다.
● TSLD는 동시 활동 중인 트랜잭션들을 지원하고 복수 개의 트랜잭션 오류들로부터 복구될 수 있다.
● 데이터 구조 내의 모든 정보는 소정의 TSLD에 기억되기 때문에, TSLD들은 오류 발생 서버로부터 작업 중인 서버로 이동 가능하고, 따라서 개방 트랜잭션에 관한 정보와 어드레스 링키지들을 재생할 수 있다.● 데이터 구조를 TSLD에 증가적으로 기억시키는 것은 그 TSLD에 대한 추가의 입출력 동작이 없이 수행된다.
● 트랜잭션의 완결 및 중지와 함께 소프트-기록 동작들은 시스템이 소정의 네트워크에 걸쳐서 분산된 복수 개의 디스크 및/또는 복수 개의 서버를 포함하는 경우에도 지원된다.
● 체크포인트 동작은, 예컨대 배경 동작으로서 또는 최종 체크포인트 이후에 변경된 데이터 구조들 내의 성분들을 식별함으로써 유연하게 실시될 수도 있다.
● 이 TSLD의 최종 체크포인트 동작 이후에 기억된 블럭 프레임들만이 판독될 필요가 있기 때문에, 오류 이후의 TSLD의 복구가 신속하다.
● 오류 이후의 TSLD의 복구는 개방 트랜잭션에 관하여 충분한 정보를 발생하여, 트랜잭션의 참가자들이 트랜잭션 상태를 질문하고 트랜잭션을 완결하거나 중지할 지의 여부에 관한 일치를 얻을 수 있다. 소정의 클라이언트에 오류가 발생한 경우에, 트랜잭션을 완결하거나 중지하기 위한 TSLD에 관한 정보는 충분하고, 이 정보는 다른 클라이언트들에 의해서 기능할 수도 있다.
따라서, 본 발명의 양호한 실시예에 따라, 데이터 트랜잭션을 지원하기 위한 장치로서,
데이터를 연속 데이터 블럭으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 TSLD와,
상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터를 이용하여 상기 데이터 트랜잭션을 완료하도록 상기 데이터의 상태를 변환하도록 구성되는 제어 회로를
포함하는 것인 데이터 트랜잭션 지원 장치를 제공한다.
양호하게는, 상기 제어 회로는 상기 제어 회로를 상기 적어도 하나의 TSLD에 접속하는 적어도 하나의 통신 링크를 포함하고, 상기 제어 회로는 상기 적어도 하나의 링크를 통해서 상기 적어도 하나의 기억 장치를 관리한다.
양호하게는, 상기 장치는 상기 데이터를 상기 제어 회로에 전달하고 또한 상기 제어 회로에 접속되는 데이터 전송 네트워크를 포함한다.
보다 양호하게는, 상기 데이터 전송 네트워크는 상기 적어도 하나의 TSLD에 접속되고 상기 데이터를 상기 적어도 하나의 TSLD에 전달하며, 상기 제어 회로는 상기 데이터 전송 네트워크를 통해서 상기 적어도 하나의 기억 장치를 관리한다.
양호하게는, 상기 장치는 상기 데이터를 상기 제어 회로에 전달하는 클라이언트를 포함한다.
양호하게는, 상기 제어 회로는 상기 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 하나 이상의 특성을 표시하는 데이터를 포함하는 하나 이상의 데이터 구조를 기억하도록 적응되는 적어도 하나의 휘발성 메모리를 포함하고, 상기 데이터 중 적어도 일부의 데이터는, 상기 제어 회로에 의해 상기 적어도 하나의 기억 장치에 기록되고, 이것에 의해서, 상기 적어도 하나의 휘발성 메모리의 내용이 상기 적어도 하나의 TSLD에 기억되는 하나 이상의 데이터 구조 내의 상기 데이터 중 상기 적어도 일부의 데이터로부터 재생될 수 있다.
보다 양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는, 상기 연속 데이터 블럭들의 논리 블럭 어드레스들을 각각의 물리 어드레스들에 사상(寫像)하고 상기 데이터 블럭들 중 개방 데이터 트랜잭션에 현재 연동되어 있는 데이터 블럭에 태그를 붙이는 변환표를 포함한다.
양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 보조 변환표를 포함하며, 이 보조 변환표는 각 개개의 개방 데이터 트랜잭션마다 상기 개방 데이터 트랜잭션에 관련된 논리 블럭 어드레스들을, 상기 데이터 트랜잭션의 개시 이전에 존재한 상기 연속 데이터 블럭들의 개개의 물리 어드레스들과 상기 개방 데이터 트랜잭션의 식별자에 사상한다.
양호하게는, 상기 제어 회로는 상기 개개의 논리 블럭 어드레스들을 상기 연속 데이터 블럭에 기록한다.
양호하게는, 상기 제어 회로는 데이터 트랜잭션의 식별자를 상기 연속 데이터 블럭에 기록한다.
양호하게는, 상기 제어 회로는 데이터 트랜잭션의 상태의 레코더의 식별자를 상기 연속 데이터 블럭에 기록한다.
양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 상기 연속 데이터 블럭의 각각의 가용성을 사상하는 할당 비트맵을 포함한다.
보다 양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 상기 연속 데이터 블럭에서의 다음의 가용 데이터 블럭의 위치를 가리키는 포인터값을 포함한다.
양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 연속 데이터 블럭 중 최초 가용 블럭의 위치를 가리키는 포인터값을 포함한다.
양호하게는, 상기 적어도 하나의 TSLD는 디스크 헤드를 갖는 디스크를 포함하고, 상기 제어 회로는 상기 디스크의 표면 상에서 상기 디스크 헤드의 한방향으로의 일련의 통과 시에 상기 데이터 블럭을 상기 디스크에 기록한다.
보다 양호하게는, 상기 일련의 통과의 각각은 체크포인트수를 갖고, 상기 데이터 구조들 중 하나의 데이터 구조는 현재의 체크포인트수를 표시하는 값을 포함한다.
양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 상기 디스크 헤드의 하나 이상의 통과의 종결 시에 상기 연속 데이터 블럭들의 각각의 가용성을 기억하는 작업 할당 비트맵을 포함한다.
양호하게는, 상기 제어 회로는 상기 디스크 헤드의 하나 이상의 통과의 종결 시에 상기 하나 이상의 데이터 구조들의 데이터 중 적어도 일부의 데이터를 상기 적어도 하나의 기억 장치에 기록한다.
양호하게는, 상기 데이터 구조들 중 하나의 데이터 구조는 상기 데이터 트랜잭션의 적어도 하나의 레코드를 기억하도록 구성된 트랜잭션 상태 로그를 포함하고, 상기 적어도 하나의 레코드는 상기 데이터 트랜잭션의 식별자와 상기 데이터 트랜잭션에 참가하는 상기 적어도 하나의 기억 장치의 식별자를 포함하며, 상기 적어도 하나의 레코드는 레코드군 중 적어도 하나의 레코드를 포함하고, 상기 레코드군은 트랜잭션 개시, 트랜잭션 완결 및 트랜잭션 중지로 이루어지고, 이들 레코드는 각각 상기 트랜잭션이 개시되고 완결되며 중지되는 것을 각각 레코드한다.
양호하게는, 상기 제어 회로는 트레일러를 상기 연속 데이터 블럭에 기록하고, 상기 트레일러는 상기 데이터 블럭의 각각의 사용을 표시하는 하나 이상의 데이터 필드를 포함한다.
양호하게는, 상기 하나 이상의 데이터 필드는 상기 데이터 트랜잭션의 식별자와 상기 데이터 트랜잭션 상태의 레코더로서 작용하는 기본 TSLD의 식별자를 포함한다.
양호하게는, 상기 하나 이상의 데이터 필드는 상기 데이터 블럭의 논리 어드레스를 포함한다.
양호하게는, 상기 하나 이상의 데이터 필드는 상기 데이터 트랜잭션의 상태를 표시하는 태그를 포함한다.
양호하게는, 상기 장치는 상기 적어도 하나의 TSLD를 제어하는 디스크 제어기를 포함하고, 상기 디스크 제어기는 상기 제어 회로에 의해 상기 적어도 하나의 TSLD에 기록된 데이터로부터 휘발성 메모리의 내용을 복구할 수 있다.
양호하게는, 상기 적어도 하나의 파라미터는 복수 개의 파라미터를 포함한다.
양호하게는, 상기 데이터 트랜잭션은 복수 개의 동시 데이터 트랜잭션을 포함한다.
양호하게는, 상기 적어도 하나의 TSLD는 서버에 의해 관리되는 디스크를 포함한다.
양호하게는, 상기 적어도 하나의 TSLD는 복수 개의 기억 장치를 포함한다.
양호하게는, 상기 적어도 하나의 파라미터는 상기 데이터 트랜잭션의 하나 이상의 상태를 레코드하는 트랜잭션 상태 로그를 포함한다.
양호하게는, 상기 적어도 하나의 파라미터는 상기 데이터 트랜잭션의 하나 이상의 상태를 레코드하는 분산 트랜잭션 상태 로그의 적어도 일부를 포함한다.
양호하게는, 상기 적어도 하나의 기억 장치는 상기 적어도 하나의 기억 장치에 기억된 정보를 복구하기 위해 다른 제어 회로에 의해 동작되도록 이동 가능하게 구성된다.
또한, 본 발명의 양호한 실시예에 따라, 데이터 트랜잭션을 수행하는 방법으로서,
적어도 몇 개의 데이터 블럭의 각각 및, 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 데이터를 연속 데이터 블럭으로서 적어도 하나의 파라미터를 수신하는 단계와,
상기 데이터 트랜잭션을 완료하기 위해 상기 적어도 하나의 파라미터에 응답하여 상기 적어도 하나의 기억 장치 내의 상기 데이터의 상태를 변환하는 단계
를 포함하는 것인 데이터 트랜잭션 수행 방법이 제공된다.
양호하게는, 상기 적어도 하나의 파라미터는 복수 개의 파라미터를 포함한다.
양호하게는, 상기 데이터를 상기 적어도 하나의 기억 장치에 수신하는 단계는 상기 데이터를 데이터 전송 네트워크를 거쳐서 상기 적어도 하나의 기억 장치에 전달하는 단계를 포함한다.
양호하게는, 상기 데이터를 전달하는 단계는 상기 적어도 하나의 기억 장치를 상기 데이터 전송 네트워크에 접속하는 단계를 포함한다.
양호하게는, 상기 데이터를 전달하는 단계는,
제어 회로를 거쳐서 상기 적어도 하나의 기억 장치를 상기 데이터 전송 네트워크에 접속하는 단계와,
상기 제어 회로를 상기 데이터 전송 네트워크에 접속하는 단계를 포함한다.
보다 양호하게는, 상기 데이터를 수신하는 단계는 클라이언트로부터 데이터를 수신하는 단계를 포함한다.
양호하게는, 상기 단계는, 적어도 하나의 휘발성 메모리에 상기 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 하나 이상의 특성을 표시하는 데이터를 포함하는 하나 이상의 데이터 구조를 기억하는 단계와, 상기 데이터 구조 내에 있는 데이터 중 적어도 일부의 데이터를 상기 적어도 하나의 TSLD에 기록하는 단계를 포함하고, 상기 적어도 하나의 휘발성 메모리의 내용은 상기 적어도 하나의 TSLD에 기억된 상기 하나 이상의 데이터 구조 내의 상기 데이터 중 상기 적어도 일부의 데이터로부터 재생될 수 있다.
양호하게는, 상기 하나 이상의 데이터 구조를 기억하는 단계는 상기 연속 데이터 블럭의 논리 블럭 어드레스를 개개의 물리 어드레스에 사상하고 상기 데이터 블럭들 중 개방 데이터 트랜잭션에서 현재 연동되어 있는 데이터 블럭에 태그를 붙이는 변환표를 기억하는 단계를 포함한다.
양호하게는, 상기 하나 이상의 데이터 구조를 기억하는 단계는 상기 데이터 구조들 중 하나의 데이터 구조는 보조 변환표를 구비하는 단계를 포함하며, 이 보조 변환표는 각 개개의 개방 데이터 트랜잭션마다 상기 개방 데이터 트랜잭션에 관련된 논리 블럭 어드레스들을, 상기 데이터 트랜잭션의 개시 이전에 존재한 상기 연속 데이터 블럭들의 개개의 물리 어드레스들과 상기 개방 데이터 트랜잭션의 식별자에 사상한다.
양호하게는, 상기 데이터를 수신하는 단계는 상기 개개의 논리 어드레스들을 상기 연속 데이터 블럭에 기록하는 단계를 포함한다.
양호하게는, 상기 방법은, 특정 데이터 블럭의 데이터를 판독하도록 상기 특정 데이터 블럭을 찾기 위해 상기 변환표를 이용하는 단계를 더 포함한다.
양호하게는, 상기 하나 이상의 데이터 구조를 기억하는 단계는 상기 연속 데이터 블럭의 각각의 가용성을 표시하는 할당 비트맵을 기억하는 단계를 포함한다.
보다 양호하게는, 상기 데이터 중 상기 적어도 일부의 데이터를 상기 적어도 하나의 TSLD에 기록하는 단계는,
1) 상기 적어도 하나의 TSLD 내의 가용 데이터 블럭의 물리적 위치를 결정하기 위해 상기 하나 이상의 데이터 블럭을 주사하는 단계와,
2) 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개 데이터 구조의 내용을 상기 물리적 위치에 기록하는 단계와,
3) 상기 결정된 물리적 위치에 응답하여 상기 하나 이상의 데이터 구조를 갱신하는 단계를 이용하여,
상기 데이터를 상기 연속 데이터 블럭 중 하나의 데이터 블럭에 기록하는 단계를 포함한다.
양호하게는, 상기 하나 이상의 데이터 구조를 주사하는 단계는 논리 블럭 어드레스가 개방 트랜잭션에 관여되어 있는 지를 검사하는 단계를 포함한다.
양호하게는, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는,
소프트-기록 동작에 상응하는 값을 기록하는 단계와,
일시 기록 동작을 수행하기 위해서 상기 데이터 트랜잭션의 레코더로서 작용하는 상기 적어도 하나의 TSLD 중 하나의 TSLD의 식별자를 기본 TSLD로서 기록하는 단계를 포함한다.
양호하게는, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 개시 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는 상기 개시 동작을 수행하기 위해서 상기 기본 TSLD의 식별자와 상기 적어도 하나의 기억 장치의 식별자를 포함하는 개시 레코드를 기록하는 단계를 포함한다.
양호하게는, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 완결 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는,
상기 트랜잭션의 개방 상태를 표시하는 태그를 제거하는 단계와,
상기 완결 동작을 수행하기 위해서 상기 트랜잭션의 식별자와 상기 기본 TSLD의 식별자를 포함하는 완결 레코드를 기록하는 단계와,
트랜잭션 상태 로그를 갱신하는 단계를 포함한다.
양호하게는, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 중지 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는,
상기 트랜잭션의 개방 상태를 표시하는 태그를 제거하는 단계와,
상기 중지 동작을 수행하기 위해서 상기 트랜잭션의 식별자와 상기 기본 TSLD의 식별자를 포함하는 중지 레코드를 기록하는 단계와,
트랜잭션 상태 로그를 갱신하는 단계를 포함한다.
양호하게는, 상기 방법은, 상기 데이터 트랜잭션의 상태를 결정하기 위해 상기 하나 이상의 데이터 구조를 주사하는 단계를 더 포함한다.
양호하게는, 상기 방법은,
상기 하나 이상의 데이터 구조를 고정(로크)하는 단계와,
상기 하나 이상의 데이터 구조의 내용을 상기 적어도 하나의 기억 장치 내의 체크포인트 위치에 기록하는 단계와,
상기 내용을 상기 적어도 하나의 TSLD에 기록하는 것에 응답하여 상기 하나 이상의 데이터 구조의 내용 중 적어도 일부의 내용을 변경하는 단계를 포함하는
체크포인트 동작을 수행하는 단계를 포함한다.
양호하게는, 상기 방법은,
상기 적어도 하나의 TSLD로부터 상기 하나 이상의 데이터 구조의 내용을 판독하는 단계와,
상기 내용에 응답하여 상기 적어도 하나의 휘발성 메모리 내의 상기 하나 이상의 데이터 구조를 갱신하는 단계를
포함하는 복구 동작을 수행하는 단계를 더 포함한다.
양호하게는, 상기 복구 동작을 수행하는 단계는 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조의 내용 전부를 판독하는 단계를 포함한다.
보다 양호하게는, 상기 복구 동작을 수행하는 단계는 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조 전부를 기록하는데 걸리는 시간보다 길지 않은 시간 내에 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조 전부의 내용 전부를 판독하는 단계를 포함한다.
양호하게는, 상기 복구 동작을 수행하는 단계는, 개방 트랜잭션의 상태를 결정하는 단계와, 상기 개방 트랜잭션의 하나 이상의 클라이언트가 상기 상태를 질문하고 상기 개방 트랜잭션을 완결할 지 또는 중지할 지의 여부를 결정할 수 있게 하는 단계를 포함한다.
양호하게는, 상기 방법은,
상기 적어도 하나의 기억 장치 중 하나의 기억 장치를 상기 데이터 트랜잭션의 상태의 레코더로서 선택하는 단계와,
트랜잭션 개시 동작을 상기 레코더에 제시하는 단계와,
상기 적어도 하나의 기억 장치로부터, 상기 데이터 트랜잭션의 상기 상태를 표시하는 응답을 미리 결정된 시간 대기하는 단계와,
상기 응답의 조건에 따라서, 하나 이상의 소프트-기록 동작을 상기 적어도 하나의 TSLD에 제시하는 단계와,
상기 응답의 조건에 따라서, 트랜잭션 완결 동작 또는 트랜잭션 중지 동작을 발송함으로써 상기 트랜잭션을 완결할지 또는 중지할지의 여부를 결정하는 단계를
포함하는 트랜잭션 조정 동작을 수행하는 단계를 포함한다.
보다 양호하게는, 상기 방법은,
상기 적어도 하나의 TSLD로부터, 상기 데이터 트랜잭션의 상태를 표시하는 내용을 포함하는 연속 데이터 블럭의 제1 세트를 판독하는 단계와,
상기 연속 데이터 블럭의 제1 세트의 내용에 응답하여, 상기 연속 데이터 블럭의 제2 세트를 상기 적어도 하나의 TSLD에 기록하고 상기 하나 이상의 데이터 구조의 세트를 상기 적어도 하나의 휘발성 메모리에 기억시키는 단계를
포함하는 트랜잭션 완료 동작을 수행하는 단계를 포함한다.
양호하게는, 상기 데이터 트랜잭션은 복수 개의 동시 데이터 트랜잭션을 포함한다.
양호하게는, 상기 적어도 하나의 TSLD는 서버에 의해 관리되는 디스크를 포함한다.
양호하게는, 상기 적어도 하나의 TSLD는 복수 개의 기억 장치를 포함한다.
또한, 본 발명의 양호한 실시예에 따라, 연속 데이터 블럭을 수신하여 개개의 물리적 위치에 기억하도록 구성된 TSLD와,
상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터와 함께, 상기 TSLD에 전송하는 한편, 상기 TSLD에 기록하도록 구성되는 제어 회로를
포함하는 것인 전자 데이터 기억 장치를 제공한다.
양호하게는, 상기 하나 이상의 파라미터는 복수 개의 파라미터를 포함한다.
또한, 본 발명의 양호한 실시예에 따라,
TSLD 내의 개개의 물리적 위치에 기억하기 위해 연속 데이터 블럭을 제공하는 단계와,
상기 연속 데이터 블럭의 상기 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 각각마다, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터를 결정하는 단계와,
상기 연속 데이터 블럭과 상기 하나 이상의 파라미터를 상기 TSLD에 기억시키는 단계를 포함하는 전자 데이터 기억을 위한 방법을 제공한다.
양호하게는, 상기 하나 이상의 파라미터는 복수 개의 파라미터를 포함한다.
또한, 본 발명의 양호한 실시예에 따라, 데이터 트랜잭션을 수행하기 위한 컴퓨터 소프트웨어 제품으로서, 상기 제품은 프로그램 명령을 내부에 기록하고 있는 컴퓨터 판독 가능 매체를 포함하고,상기 프로그램 명령은 컴퓨터에 의해서 판독되고,상기 프로그램 명령은,
연속 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 각각과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 데이터를 연속 데이터 블럭으로서 적어도 하나의 TSLD에 수신하도록 상기 컴퓨터에 지시하는 명령과, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 데이터의 상태를 변환하도록 상기 컴퓨터에 지시하는 명령
을 포함하는 것인 컴퓨터 소프트웨어 제품을 제공한다.
또한, 본 발명의 양호한 실시예에 따라, 데이터 트랜잭션을 수행하기 위한 컴퓨터 소프트웨어 제품으로서, 상기 제품은 프로그램 명령을 내부에 기록하고 있는 컴퓨터 판독 가능 매체를 포함하고,상기 프로그램 명령은 컴퓨터에 의해서 판독되고,상기 프로그램 명령은,
기억 장치 내의 개개의 물리적 위치에 기억하기 위한 연속 데이터 블럭을 제공하도록 상기 컴퓨터에 지시하는 명령과, 상기 연속 데이터 블럭의 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 각각마다 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터를 결정하도록 상기 컴퓨터에 지시하는 명령과, 상기 연속 데이터 블럭과 상기 하나 이상의 파라미터를 상기 기억 장치에 기억하게 하도록 상기 컴퓨터에 지시하는 명령
을 포함하는 것인 컴퓨터 소프트웨어 제품을 제공한다.
본 발명은 도면을 함께하여 후술하는 양호한 실시예의 상세한 설명으로부터 보다 충분히 이해될 것이다.
관련 출원의 자료
본 출원은 출원일이 2000년 1월 18일이고 본 명세서에 인용되는 미국 특허 가출원 번호 제60/176,507호의 수혜를 주장한다. 본 출원은 출원일이 2000년 7월 6일이고 발명의 명칭이 "Enhanced Stable Disk Storage"인 미국 특허 출원에 관한 것이며, 이 특허 출원은 본 출원의 양수인에게 양도되었고, 그 내용은 본 명세서에 인용되고 있다.
본 발명은 일반적으로 데이터 트랜잭션, 특히 불휘발성 메모리에 기록된 데이터의 분산 트랜잭션 지원에 관한 것이다.
도 1a는 본 발명의 양호한 실시예에 따라, 디스크들이 기억 서버에 물리적으로 연결되어 있고 트랜잭션들이 발생하는 분산형 기억 시스템을 도시하는 개략적인 블럭도.
도 1b는 본 발명의 양호한 실시예에 따라, 디스크들이 기억 서버에 가상적으로 연결되어 있고 트랜잭션들이 발생하는 다른 분산형 기억 시스템을 도시하는 개략적인 블럭도.
도 2는 본 발명의 양호한 실시예에 따라, 도 1a 및 도 1b의 시스템에 포함되어 있는, 서버와 트랜잭션 지원 논리 디스크(TSLD)간의 관계를 도시하는 개략적인 블럭도.
도 3은 본 발명의 양호한 실시예에 따라, TSLD에 의해 기억된 온-디스크 블럭 구조의 개략적인 블럭도.
도 4는 본 발명의 양호한 실시예에 따라, 소프트-기록 동작에 관여한 단계들을 도시하는 흐름도.
도 5는 본 발명의 양호한 실시예에 따라, 소프트-판독 동작에 관여한 단계들을 도시하는 흐름도.
도 6은 본 발명의 양호한 실시예에 따라, 판독 동작에 관여한 단계들을 도시하는 흐름도.
도 7은 본 발명의 양호한 실시예에 따라, 개시 동작에 관여한 단계들을 도시하는 흐름도.
도 8은 본 발명의 양호한 실시예에 따라, 완결 동작에 관여한 단계들을 도시하는 흐름도.
도 9는 본 발명의 양호한 실시예에 따라, 중지 동작에 관여한 단계들을 도시하는 흐름도.
도 10a는 본 발명의 양호한 실시예에 따라, 질문 동작에 관여한 단계들을 도시하는 흐름도.
도 10b는 본 발명의 양호한 실시예에 따라, 도 10a의 질문 동작에 포함된 가능한 결과의 상태도.
도 11은 본 발명의 양호한 실시예에 따라, 체크포인트 동작에 관여한 단계들을 도시하는 흐름도.
도 12는 본 발명의 양호한 실시예에 따라, 조정 동작에 관여한 단계들을 도시하는 흐름도.
도 13은 본 발명의 양호한 실시예에 따라, 제1 복구 동작에 관여한 단계들을 도시하는 흐름도.
도 14는 본 발명의 양호한 실시예에 따라, 제2 복구 동작에 관여한 단계들을 도시하는 흐름도.
도 15는 본 발명의 양호한 실시예에 따라, 제3 복구 동작에 관여한 단계들을 도시하는 흐름도.
도 16은 본 발명의 양호한 실시예에 따라, 트랜잭션 종료 동작에 관여한 단계들을 도시하는 흐름도.
<도면에 사용된 부호의 설명>
20, 40: 시스템
22: 클라이언트
24: 데이터 전송 네트워크
26, 32: 기억 서버
28, 30, 34: 디스크
33, 35, 37: 제어 회로
42: 기억 영역 네트워크
61: 디스크 드라이브
62: 디스크
63: 자기 매체
64a, 64b, 64c: 섹터
70: 메모리
72: 변환표
74: 할당 비트맵
76: 디스크 제어기
78: 디스크 헤드
79: 디스크 아암
82: 블럭 프레임
90: 트랜잭션 상태 로그
172: 보조 변환표
174: 작업 할당 비트맵
이제, 본 발명의 양호한 실시예에 따라, 트랜잭션들이 발생하는 분산형 기억 시스템(20)을 도시하는 개략적인 블럭도인 도 1a를 참조한다. 시스템(20)은 기억 장치로서 동작하는 복수 개의 디스크(28, 30 및 34)를 포함하고 있다. 디스크(34)는 기억 서버(32)가 그 디스크를 관리할 수 있게 하는 제어 회로(33)을 포함하는 기억 서버(32)에 접속되어 있다. 디스크(28 및 30)는 각각 기억 서버(26)가 그들 디스크를 관리할 수 있게 하는 제어 회로(35 및 37)을 포함하는 기억 서버(26)에 접속되어 있다. 본 명세서에서는 디스크(28, 30 및 34) 등의 적절한 제어 회로를 통해 관리되는 기억 장치를 트랜잭션 지원 논리 디스크(TSLD)라고 부른다. 본 명세서에서 TSLD 인터페이스라고 부르는 제어 회로는 기억 장치 또는 그 제어 회로에 접속된 장치에 관하여 TSLD 동작을 수행한다. TSLD의 구조와 동작, TSLD 인터페이스 및 TSLD 동작에 관한 상세한 설명은 후술된다. 시스템(20) 내의 각 디스크(28, 30 및 34)에는 본 명세서에서 각각 TSLD1, TSLD2및 TSLD3이라고 부르는 고유의 식별자가 할당되어 있다. 시스템(20)은 3개의 TSLD를 포함하고 있지만, 시스템은 소정 개수의 TSLD를 포함하고 각 TSLD는 기억 서버(이하, 서버라고 약칭한다)에 접속되고 그에 의해 관리될 수 있음을 이해할 것이다. 또한, 시스템(20)의 각 서버는 하나 이상의 TSLD를 관리할 수 있음도 이해할 것이다.
이어서, 서버(26 및 32)는 근거리 통신망(LAN) 등의 데이터 전송 네트워크(24)에 접속되어 있고, 여기에는 클라이언트(22)도 접속되어 있다. 클라이언트(22)는 시스템(20)의 각 디스크의 식별자와 각 디스크를 관리하는 개개의 서버를 인지하고 있다. 클라이언트(22)는 TSLD 트랜잭션의 수행을 조정한다. 클라이언트는 TSLD 동작을 개시하고, 그 TSLD 동작을 그 동작이 보내져야 할 하나 이상의 TSLD의 식별자와 함께 적절한 기억 서버(들)에 전달된다. TSLD 동작의 수신시, 각 서버는 클라이언트(22)에 의해 지정된 하나 이상의 TSLD에 관한 동작을 수행하고, 클라이언트에 응답한다.
도 1b는 본 발명의 양호한 실시예에 따라, 트랜잭션들이 발생하는 다른 분산형 기억 시스템(40)을 도시하는 개략적인 블럭도이다. 후술하는 차이점들은 별도로 하고, 시스템(40)의 동작은 대체로 디스크(30)(도 1a)와 유사하고, 따라서 시스템(40)과 시스템(20)에서 동일한 참조 부호로 표시된 구성 요소들은 대체로 구성과 동작이 같다. 시스템(40)은 서버(26 및 32)와 디스크(TSLD1, TSLD2및 TSLD3)가 부착된 기억 영역 네트워크(42)를 포함하고 있다. 서버(26 및 32)는 도면에서 점선으로 도시한 바와 같이 가상적으로 네트워크(42)에 접속되어 그를 통해 서버들의 개개의 디스크를 관리한다. 클라이언트(22)는 TSLD 동작을 네트워크(42)를 통해 적절한 서버(들)에 전달함으로써 TSLD 동작을 개시하고, 각 특정 서버는 네트워크를 통해 클라이언트(22)에 응답한다.
도 2는 본 발명의 양호한 실시예에 따라 서버(26)와 TSLD(28)간의 관계를 나타내는 개략적인 블럭도이다. 다음의 설명은 TSLD(28)와 서버(26) 내에 구성되어 있는 그의 관련 TSLD 인터페이스(25)에 관하여 이루어지지만, 시스템(20) 및/또는시스템(40)의 각 TSLD와 그의 개개의 서버는 TSLD(28)와 서버(26)에 대해서 후술하는 바와 같이 실질적으로 상호 작용함을 이해할 것이다.
TSLD(28)는 디스크 드라이브(61)에 의해 작동되는 불휘발성 메모리 기억 디스크(62)를 포함하고 있다. 양호하게는, 디스크(62)는 디스크 아암(79) 상의 디스크 헤드(78)에 의해 기록 및 판독되는 자기 매체(63)가 이용된다. 보다 상세하게 후술하는 바와 같이, 온-블럭 기록 디스크 아암(79)은 "move-forward-and-store" 동작으로 동작한다. 양호하게는, 디스크 제어기(76), 디스크 드라이브(61) 및 그들의 모든 구성 요소는 기성품, 산업 표준 품목이다. 자기 매체(63)는 이하에서 기술상 공지되어 있는 방법으로 일괄하여 섹터(64)라고 부르는 복수 개의 물리 섹터(64a, 64b, 64c, ..., 64z)로 분할되어 있다. 각 물리 섹터는 는 물리 섹터 어드레스에 의해 참조된다. 보다 양호하게는, 각 섹터는 크기가 2 바이트의 정수승, 예컨대 512 바이트이다.
디스크(62)에 기억될 데이터는 이하에서 일괄하여 블럭 프레임(82)이라고 부르는 고정 크기의 복수 개의 블럭 프레임 위치(82a, 82b, 82c, ...)에 기록된다. 각 블럭 프레임은 블럭 프레임을 구성하는 제1 섹터의 물리 섹터 어드레스에 의해 양호하게 참조된다. 각 블럭 프레임(82)은 정수 개의 연속 섹터(64)로 가장 양호하게 형성되고, 각 블럭 프레임은 한 블럭의 데이터를 기억할 수 있다. 디스크(62)를 포맷하는 동안에, 몇 개의 섹터(64)는 서버(26)와 디스크(62)에 관련한 물리 파라미터와 논리 파라미터를 기재하기 위해 예비로 둔다. 파라미터들은 각 섹터(64)의 크기, 디스크(62) 내의 섹터수, 블럭 프레임(82)의 크기와 개수, 및 디스크(62)에 의해 지원되는 논리 블럭 어드레스(LBA)의 영역을 포함하고 있다. 또한, 디스크(62)의 포맷 중에 예비로 둔 공간은 체크포인트 동작 중에 사용되고, 그 중에서도, 서버(26)에 구성되어 있는 휘발성의 주메모리(70)에 기억된 데이터는 디스크(62)에 기억된다. 체크포인트의 동작은 보다 상세하게 후술한다.
휘발성의 메모리(70)는 상세하게 후술하는 복수 개의 휘발성 동적 데이터 구조를 기억하고, 그들 구조는 TSLD 인터페이스(35)로서 작용한다. 데이터 구조의 내용는 서버(26)에 의해 양호하게 제어된다.
메모리(70)는 TSLD 인터페이스(35)로서 다음을 기억한다.
● 변환표 데이터 구조(72): 이 구조는 LBA와 물리 블럭 어드레스간을 변환한다. 변환표는 각 물리 블럭 어드레스 "i"를 디스크(62)의 블럭 프레임[본 명세서에는 TT(i)라고 부른다]의 상응하는 물리 어드레스에 연결한다. 가장 양호하게는, TT(i)는 논리 어드레스가 "i"인 가장 최근에 기억된 블럭의 내용을 완결하고 있는 블럭 공간의 제1 섹터이다. 초기에, TT(i)의 모든 값은 NULL 값으로 세트되어 있다. 데이터가 디스크(62)에 기록됨에 따라, 특정 논리 블럭 어드레스(i)의 TT(i)의 값들은 그들의 NULL 값으로부터 변경되고, 블럭(i)이 최근에 기억된 블럭 공간의 디스크 섹터 어드레스가 될 때까지 갱신된다. 또한, 변환표(72)는 태그 필드(73)를 포함하고 있고, 그 태그 필드에 의해 변환표(72) 내의 각 엔트리 TT(i)의 태그는 블럭 "i"가 현재 개방 트랜잭션에 연동하고 있음을 표시하도록 세트될 수 있다. 특정 태그가 세트되는 동안에, 개개의 엔트리 TT(i)는 비-완결된 블럭 프레임을 지시한다. 후술하는 바와 같이, 블럭(i)의 완결된 블럭 프레임은 보조 변환표 엔트리 ATT(i)를 이용하여 찾을 수 있다. TT(i) 엔트리에 태그가 없으면, TT(i)는 블럭(i)의 완결된 블럭 프레임을 지시한다.
● 보조 변환표(ATT) 데이터 구조(172): 이 구조는 표(72)가 단축된 형태로서, 태그 필드(73)가 이미 세트된 표(72)의 비(非)-NULL 엔트리를 포함하고 있다. 다른 말로 하면, 보조 변환표(172)는 개방 트랜잭션에 현재 관여하고 있는 블럭들을 추적한다. 보조 변환표(172)는 개방 트랜잭션에 관여한 각 블럭(i)마다의 엔트리, 블럭(i)이 개방 트랜잭션 이전에 기억되어 있는 곳인 상응하는 블럭 프레임 어드레스 ATT(i), 및 블럭(i)이 현재 관여되어 있는 트랜잭션의 식별자 '트랜잭션 ID'를 포함하고 있다.
● 할당 비트맵 데이터 구조(74): 이 구조는 블럭들을 각각 디스크(62)에 기억하는 동안에 가용한 디스크 블럭 프레임(82)을 찾는데 이용된다. 각 블럭 프레임(i)마다, 그 블럭 프레임이 블럭의 내용을 기억하기 위해 이용 가능하다면 할당 비트맵(74) 내의 상응하는 비트는 0으로 세트된다. 그 블럭 프레임이 한 블럭의 내용을 포함하고 있거나 그 블럭 프레임이 이미 서버(26) 데이터 구조가 이용하기 위해 예비로 되어 있다면, 그 상응하는 비트는 1로 세트된다. 디스크(62)가 초기화하면, 서버(26)용의 예비 블럭 프레임을 제외한 모든 블럭 프레임은 할당 비트맵(74) 내의 각 비트가 0으로 세트되도록 이용 가능하게 된다.
● 작업 할당 비트맵 데이터 구조(174): 작업 비트맵(174)은 최종 체크포인트 동작이 수행되었을 때 행해지는 할당 비트맵(74)의 복사본이다.
● 체크포인트수 데이터 구조(84): 이 구조는 이미 수행된 복수 개의 체크포인트 동작을 레코드한다. 체크포인트 동작은 디스크 아암(79)이 move-forward-and-store 동작을 이미 완료하고 다른 동작을 개시하려고 할 때 자동으로 실행된다. 초기에, 체크포인트수(84)는 0으로 세트된다.
● 2개의 포인터 데이터 구조 - first-available-block-frame 포인터(86)와 next-available-block-frame 포인터(88): first-available-block-frame 포인터(86)는 체크포인트 동작이 발생할 때 최초의 가용 블럭 프레임을 지시한다. next-available-block-frame 포인터(88)는 다음의 블럭 기억 동작이 이용할 가용 블럭 프레임을 지시한다. 포인터(88)는 각 블럭 기억 동작시에 갱신된다.
디스크 복구가 수행되는 경우에, first-available-block-frame 포인터(86)가 지시한 블럭 프레임 이후의 블럭 프레임의 어드레스는 최종 체크포인트 이래로 블럭 기억의 프로세스를 "재생"하는 서버(26)에 의해 복구된다. 초기에, 2개의 포인터는 최초의 비-예비 블럭 프레임의 어드레스로 세트되어 있다.
● 트랜잭션 상태 로그 데이터 구조(90): 이 구조는 트랜잭션 상태에 관한 레코드 리스트를 포함하고 있다. 각 트랜잭션에는 본 명세서에서 Tid라고 부르는 일반적으로 단일의 식별자가 배정된다. 로그(90)의 레코드는 Tid를 포함하고 있고 Tid를 트랜잭션에 참가하고 있는 TSLD의 리스트(94)를 관련짓는다. 로그 레코드는 3개의 부분, 즉 레코드 유형, 트랜잭션 식별자 및 리스트(94)로 이루어져 있다. 로그(90) 안에 입력되는 레코드의 유형들, 즉 트랜잭션 개시, 트랜잭션 완결 및 트랜잭션 중지에 관해서는 후술한다.
전술한 각 데이터 구조의 구성 요소, 즉 변환표(72), 보조 변환표(172), 할당 비트맵(74), 작업 비트맵(174), 체크포인트수(84), first-available-block-frame 포인터(86), next-available-block-frame 포인터(88) 및 트랜잭션 상태 로그(90)는 TSLD 인터페이스(35)로서 주메모리(70)에 유지되어 있고, TSLD(28)에 대한 체크포인트 동작 중에 TSLD(28)에 기억된다.
데이터를 기억하기 위해 새로운 블럭 프레임이 필요한 경우에, 블럭 프레임은 할당 비트맵(74)에 따라 디스크(62)에 이용 가능한 자유 블럭 프레임들 중에서 할당되고, 작업 비트맵(174)은 그 새로운 할당을 반영하도록 갱신된다. 어느 블럭 프레임이 기록되는 지를 선택하기 위해, 서버(26)는 next-available-block-frame 포인터(88)를 참고한다. 서버(26)는 이 값을 할당 비트맵(74)과 함께 이용하여, 최종 기록된 블럭 프레임이 어드레스 전달되는 다음의 가용 블럭 프레임을 찾는다. 따라서, 디스크 아암(79)은 체크포인트 동작이 호출될 때가지 move-forward-and-store 동작으로 이동한다. move-forward-and-store 방법에 관한 보다 세부는 전술한 미국 특허 가출원 제60/176,507호와, 발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"이고 2000년 7월 6일자로 출원되며 본 발명의 양수인에게 양도된 미국 특허 출원에 설명되어 있다.
클라이언트가 복수 개의 TSLD의 트랜잭션을 개시하는 경우에, 클라이언트는 그들 TSLD 중 하나의 TSLD, 양호하게는 최소의 식별을 갖는 TSLD를 기본 TSLD로서 선택한다. 기본 TSLD는 트랜잭션 상태의 레코더로서 작용한다. 트랜잭션 상태 로그(90)의 레코드는 전술한 바와 같이 3개의 유형이 가장 양호하다.
트랜잭션 개시 레코드(92)는 트랜잭션 Tid가 개시되었다는 사실을 레코드하고, 그 트랜잭션에 참가하는 TSLD들을 리스트(94)에 등재한다. 리스트(94)의 기본 TSLD(96)는 트랜잭션 Tid에 대해서 선택된 기본 TSLD이다. 여기에서 이용하는 트랜잭션 개시 레코드(92)의 표기는 다음과 같다.
Begin(Tid; TSLD1, TSLD2...TSLDm)
여기에서, TSLD1은 기본 TSLD이고, TSLD2...TSLDm은 트랜잭션 Tid에 참가하고 있는 다른 TSLD들이다.
트랜잭션 완결 레코드(102)는 트랜잭션이 완결된다는 사실을 레코드하고 있다. 각 트랜잭션 완결 레코드(102)는 트랜잭션의 식별자 Tid와 트랜잭션에 참가하고 있는 TSLD의 리스트(94)를 포함하고 있다. 여기에서 이용하는 트랜잭션 완결 레코드(102)의 표기는 다음과 같다.
Commit(Tid; TSLD1, TSLD2...TSLDm)
트랜잭션 중지 레코드(112)는 트랜잭션이 중지된다는 사실을 레코드하고 있다. 각 트랜잭션 중지 레코드(102)는 트랜잭션의 식별자 Tid와 트랜잭션에 참가하고 있는 TSLD의 리스트(94)를 포함하고 있다. 여기에서 이용하는 트랜잭션 중지 레코드(112)의 표기는 다음과 같다.
Abort(Tid; TSLD1, TSLD2...TSLDm)
가장 양호하게는, 각 트랜잭션 개시 레코드(92)는, 후술하는 바와 같이 트랜잭션이 완결되거나 중지될 때까지, 트랜잭션 Tid에 대해서 기본 TSLD의 트랜잭션 로그에 기억될 뿐이다.
가장 양호하게는, 각 트랜잭션 완결 레코드(102)는 트랜잭션 Tid의 기본 TSLD의 트랜잭션 상태 로그(90)에 기억된다. 양호하게는, 트랜잭션 완결 레코드는, 트랜잭션이 완결되어 있음을 다른 TSLD들이 아직 알지 못할 수 있다는 이점 때문에, 트랜잭션 Tid에 관한 데이터 구조들이 특정 TSLD에서 이미 갱신된 후에 그 특정 TSLD의 트랜잭션 상태 로그에 유지된다. 특정의 기본 TSLD의 경우, 트랜잭션 완결 레코드는 트랜잭션 개시 레코드를 대체한다.
가장 양호하게는, 각 트랜잭션 중지 레코드(112)는 트랜잭션 Tid의 기본 TSLD의 트랜잭션 로그(90)에 기억된다. 양호하게는, 각 트랜잭션 중지 레코드(112)는, 트랜잭션이 중지되어 있음을 다른 TSLD들이 아직 알지 못할 수 있다는 이점 때문에, 트랜잭션 Tid에 관한 데이터 구조들이 특정 TSLD에서 이미 갱신된 후에 그 특정 TSLD의 트랜잭션 로그에 유지된다. 특정의 기본 TSLD의 경우, 트랜잭션 중지 레코드는 트랜잭션 개시 레코드를 대체한다.
비-기본 TSLD들의 경우, 비-기본 TSLD들이 포함되어 있는 트랜잭션 중지 레코드와 트랜잭션 완결 레코드는 다음의 체크포인트까지 양호하게 유지된다.
도 3은 본 발명의 양호한 실시예에 따라 TSLD(28)에 의해 기억된 온-디스크 블럭 구조의 개략도이다. 데이터는 블럭(200)으로서 특정 블럭 프레임(82)에 기억되어 있다. 블럭(200)은 클라이언트(22)가 내용 데이터를 기억시키기 위해 이용하는 클라이언트부(202)와, TSLD(28)가 이용하는 필드들을 포함하는 트레일러(204)를 포함하고 있다. 트레일러(204)는 다음의 필드들을 포함하고 있다.
● 온-디스크 체크포인트수 필드(206): 이 필드에는 체크포인트수(84)의 현재값이 기억되어 있다. 이것은 블럭 기억 동작시의 체크포인트수이다.
● 논리 블럭 어드레스(LBA) 필드(804): 이 필드에는 블럭(200)의 LBA가 기억되어 있다.
● 블럭형 필드(210): 이 필드에는 블럭(200)의 유형을 설명하는 태그가 기억되어 있다. 블럭(200)의 유형들에 대해서는 후술한다.
● 트랜잭션-식별 필드(212): 이 필드에는 블럭(200)이 참가하고 있는 트랜잭션의 식별자 Tid가 기억되어 있다. 이와 달리, 블럭(200)이 기억되어 있을 때 그 블럭이 트랜잭션에 참가하고 있지 않다면, 필드(212)는 1으로 세트된다.
● 기본 TSLD 필드(214): 이 필드에는 블럭(200)이 참가하고 있는 트랜잭션의 기본 TSLD의 식별자 TSLDp가 기억되어 있다. 이와 달리, 블럭(200)이 기억되어 있을 때 그 블럭이 트랜잭션에 참가하고 있지 않다면, 필드(212)는 1으로 세트된다.
블럭형 필드(210)는 다음 유형의 블럭들을 가정할 수 있다.
● 데이터 블럭형: 클라이언트(22)로부터의 내용 데이터는 클라이언트 데이터 필드(202)에 기억되어 있고, 블럭이 기억되어 있는 블럭 프레임은 변환표(72)에 의해 참조되며, 블럭은 개방 트랜잭션의 일부가 아니다.
● 소프트-기록 블럭형: 클라이언트(22)로부터의 내용 데이터는 클라이언트 데이터 필드(202)에 기억되어 있고, 내부에 데이터가 기억되어 있는 비-완결된 블럭 프레임은 표(72)에 의해 참조되지만, 내부에 과거에 완결된 블럭 내용이 기억되어 있는 블럭 프레임은 클라이언트(22)가 이용하도록 해제되지 않고, 오히려표(172)에 의해 참조된다. 2개의 블럭 프레임은 할당 비트맵(74)에 표식되어 할당된다.
● 개시-블럭형: 트랜잭션 Tid에 참가하고 있는 TSLD들의 식별자들과 함께, 필드(202)에 특정 트랜잭션 식별자 Tid가 기억되어 있다. 이 블럭 유형은 트랜잭션 Tid가 개시했다는 사실을 레코드하고, 개시-블럭은 다음 체크포인트 동작시까지만 그의 개개의 블럭 프레임을 점유한다. 성공적인 체크포인트 동작 후에, 점유된 블럭 프레임은 후술하는 바와 같이 해제된다.
● 완결-블럭형: 트랜잭션 Tid에 참가하고 있는 TSLD들의 식별자들과 함께, 필드(202)에 특정 트랜잭션 식별자 Tid가 기억되어 있다. 특정 완결-블럭은 트랜잭션 Tid가 완결되어 있다는 사실을 레코드하고, 다음 체크포인트 동작시까지만 그의 개개의 블럭 프레임을 점유한다. 성공적인 체크포인트 동작 후에, 점유된 블럭 프레임은 후술하는 바와 같이 해제된다.
● 중지-블럭형: 트랜잭션 Tid에 참가하고 있는 TSLD들의 식별자들과 함께, 필드(202)에 특정 트랜잭션 식별자 Tid가 기억되어 있다. 특정 중지-블럭은 트랜잭션 Tid가 중지되어 있다는 사실을 레코드하고, 다음 체크포인트 동작시까지만 그의 개개의 블럭 프레임을 점유한다. 성공적인 체크포인트 동작 후에, 점유된 블럭 프레임은 후술하는 바와 같이 해제된다.
도 4는 본 발명의 양호한 실시예에 따라 소프트-기록 동작(220)에 관여한 단계들을 도시하는 흐름도이다. 소프트-기록 동작(220)은 트랜잭션 Tid의 내용, 즉 primTSLD의 값을 트랜잭션 Tid가 갱신하는 각 블럭 프레임에 기억시킨다. 여기에서 이용하는 소프트-기록 동작(220)의 표기는 다음과 같다.
Soft-Write(Tid, primTSLD, i, contents)
이하, TSLD(28)는 참가하고 있는 TSLD들 중 하나라고 가정하고, 동작(220)은 클라이언트(22)가 개시한다고 가정된다. 또한, 동작(220)은 LBA i의 과거의 내용을 유실함이 없이 내용을 LBA i와 연결짓는다. 소프트-기록 동작(220)은 나중에 완결 또는 중지 중 어느 하나로 될 수 있는 임시 기록 동작으로서 작용하고, 따라서 발명의 배경 항목에서 전술한 바와 같이, 2단계-완결 프로토콜 중 제1 단계로서 작용한다.
검사 단계(222)에서, 변환표(72)는 LBA i, 즉 TT(i)에 상응하는 엔트리가 그의 태그를 세트했는 지를 확인하기 위해 검사된다. 태그가 세트되어 있다면, 개방-트랜잭션-오류 코드(이의 기능은 도 16을 참조하여 아래에 설명되어 있다)는 클라이언트(22)로 반송된다. 태그가 세트되어 있지 않다면, 주사 단계(224)에서, next-available-block-frame 포인터(88)에 기록된 블럭 프레임에 이어지는 최초의 가용 블럭 프레임을 찾기 위해 할당 비트맵(74)이 주사된다. 가용성 검사 단계(226)에서 가용한 블럭 프레임이 없다고 확인되면, 후술하는 체크포인트 동작이 수행된다. 블럭 프레임이 확인되면, 그의 물리 어드레스는 "a"라고 가정된다.
기억 단계(228)에서, 체크포인트수(LBA i), 트랜잭션 식별자(Tid) 및 기본 TSLD(primTSLD)의 값들은 next-available-block-frame 포인터(88)에 레코드된 블럭 프레임의 블럭의 개개의 트레일러 필드(206, 208, 212 및 214)(도 3)에 기록된다.그 블럭 유형, 즉 소프트-기록 블럭형에 상응하는 값은 블럭 프레임의 트레일러 필드(210)에 기록된다. 더욱이, 클라이언트(22)가 공급한 Tid의 데이터 내용는 블럭 프레임의 데이터 필드(202)에 기록된다.
갱신 단계(230)에서, 메모리(26) 내에서는 다음의 배정 작업이 수행된다.
● 작업 할당 비트맵(174)의 경우, A(Next-Available-Block-frame) ←1;
● 보조 변환표(172)의 경우, (ATT(i), Trans ID) ←<TT(i), Tid>;
● 변환표(72)의 경우, TT(i) ←Next-Available-Block-frame, 그리고 TT(i)의 태그는 태그 필드(73)에 세트된다; 그리고
● 데이터 구조 Next-Available-Block-frame(88)은 값 "a"로 세트된다.
소프트-기록 동작(220)은 데이터와 트레일러 필드 데이터를 아직 완료하지 않은 트랜잭션의 일부로서 next-available-block-frame 포인터(88)의 블럭에 기록하는 것을 이해할 것이다. 그러나, i의 과거 내용을 유지하는데 이용하는 특정 블럭 프레임은 변경되지 않고, 그 특정 블럭 프레임은, 필요시 과거 내용이 여전히 액세스될 수 있도록, 0으로 세트되고 있는 그의 할당 비트에 의해 해제되지 않는다.
도 5는 본 발명의 양호한 실시예에 따라 소프트-판독 동작(240)에 관여한 단계들을 도시하는 흐름도이다. 소프트-판독 동작(240)은 소프트-기록 동작(220)에 기억된 데이터 내용을 미완료 트랜잭션의 일부로서 판독한다. 여기에서 이용하는 소프트-판독 동작(240)의 표기는 다음과 같다.
Soft-Read(i)
검사 단계(241)에서는 변환표(72)를 검사하여 LBA i에 상응하는 엔트리[TT(i)]가 그의 태그를 세트했는 지를 확인한다. 태그가 세트되어 있지 않으면, open-transaction-error 코드가 클라이언트(22)에게 반송된다. 태그가 세트되어 있으면, 판독 단계(242)에서, 클라이언트(22) 등의 요구자는 변환표(72)에서 TT(i)가 지시한 블럭 프레임의 블럭의 데이터 내용(202)을 요구한다. 데이터 내용(202)은 요구자에게 반송되고, 이어서 소프트-판독 동작(240)은 종료한다.
도 6은 본 발명의 양호한 실시예에 따라 판독 동작(250)에 관여한 단계들을 도시하는 흐름도이다. 동작(250)은 트랜잭션을 완료한 블럭 프레임의 논리 블럭(i)의 데이터 내용을 판독하고, 그 내용을 클라이언트(22) 등의 요구자에게 반송하는데 이용된다. 여기에서 이용하는 판독 동작(250)의 표기는 다음과 같다.
Read(i)
제1 단계(254)에서, 변환표(72)에서 TT(i)가 지시한 블럭 프레임의 블럭의 데이터 내용(202)은 TSLD로부터 판독된다. 동작(250)은 계속해서 TT(i)의 태그가 세트되어 있는 지를 검사한다. 태그가 세트되어 있어 TT(i)를 포함하고 있는 트랜잭션이 아직 완료하지 않았음을 나타내면, 이미 판독한 블럭 프레임과 함께 open-transaction-error 오류 신호가 요구자에게 반송된다. TT(i)의 태그가 세트되어 있지 않아 블럭이 개방 트랜잭션에 포함되어 있지 않음을 나타내면, 동작(250)은 블럭 프레임을 사용자에게 반송함으로써 완료한다. 이어서, 동작(250)은 종료한다.
도 7은 본 발명의 양호한 실시예에 따라 개시 동작(260)은 트랜잭션의 세부를 임시로 레코드하는 블럭(여기에서는 개시-블럭이라고 부른다)을 기본 TSLD에 기억시킨다. 또한, 동작(260)은 도 2를 참조하여 전술한 트랜잭션 개시 레코드(92)[Begin(Tid; TSLD1, TSLD2, ... TSLDm)를 기억시킨다. 트랜잭션은 식별자 Tid를 가지며 다음의 1, 즉 TSLD1, TSLD2, ... TSLDm를 관여시킨다고 가정된다. 가장 양호하게는, TSLD1은 트랜잭션 Tid의 기본 TSLD(primTSLD)로서 작용한다. 여기에서 클라이언트(22)라고 가정한 트랜잭션 코디네이터는 기본 TSLD, 즉 TSLD1에 관해서 개시 동작(260)을 개시한다. 여기에서 이용하는 개시 동작(260)의 표기는 다음과 같다.
Begin(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)
레코드 단계(262)에서, 식별자 Tid와, 트랜잭션의 참가 중인 TSLD들(TSLD1, TSLD2, TSLD3...TSLDm)이 트랜잭션 로그(90)에 레코드된다. 주사 단계(264)에서, 할당 비트맵(74)은 Next-Available-Block-frame(88)에 레코드된 블럭 프레임에 이어지는 최초의 가용 블럭 프레임을 찾기 위해 주사된다. 가용성 검사 단계(266)에서 이용 가능한 블럭 프레임이 없다고 확인되면, 체크포인트 동작이 수행된다. 이어지는 블럭 프레임이 확인되면, 그의 물리 어드레스는 "a"라고 가정된다.
기억 단계(268)에서, 체크포인트수, 트랜잭션 식별자 Tid 및 TSLD1(primTSLD)의 값들은, 여기에서 물리 어드레스가 "p"라고 가정한, Next-Available-Block-frame(88)에 레코드된 블럭 프레임의 블럭의 개개의 트레일러 필드(206, 212 및 214)(도 3)에 기록된다. 그 블럭 유형에 상응하는 값, 즉 개시 블럭형이 블럭의 트레일러 필드(210)에 기록된다. 논리 어드레스 필드(208)에는 엔트리가 생성되지 않는다. 또한, 기억 단계(268)에서, 트랜잭션의 참가 중인 TSLD(TSLD1, TSLD2, ...TSLDm)의 식별자들은 블럭 프레임 "p"의 블럭의 데이터 필드(202)에 레코드된다.
갱신 단계(270)에서, 메모리(26) 내의 데이터 구조 Next-Available-Block-frame(88)은 값 "a"로 세트된다. 이어서, 동작(260)은 종료한다.
작업 할당 비트맵(174)은 동작(260)시 갱신되지 않음을, 즉 A(p)는 0의 세트 상태를 유지함을 주목하여야 할 것이다. 따라서, 블럭 프레임 "p"는 자유(free)로서 표기되어 유지된다. 그러나, 동작(260)의 완료시, "a"는 "p"보다 크므로, 동작(260)에 후속하는 동작들은 항상 물리 어드레스가 "p"보다 큰 블럭들을 찾을 것이다. 따라서, 블럭 프레임 "p"는 디스크 아암(79)의 현재 통로 중에 기억되지 않을 것이다. 현재의 통로는 체크포인트 동작이 수행될 때 종료하고, 그 사이에 블럭 프레임 "p"의 모든 관련 파라미터는 디스크(62)에 기억된다. 체크포인트 동작 후, 이어서 블럭 프레임 "p"는 추가의 기억 동작들에게도 이용 가능하게 된다.
도 8은 본 발명의 양호한 실시예에 따라 완결 동작(280)에 관여한 단계들을 도시하는 흐름도이다. 동작(280)은 소정의 트랜잭션과 관련된 모든 소프트-기록 동작(220)이 성공적으로 완료한 후에 수행되어야 하고, 그 때 수행된 임시 기록 동작들을 영속하게 만든다. 소프트-기록 동작(220)의 경우와 같이 동작(280)은 트랜잭션 Tid에 관여한 각 TSLD에 관해서 수행되어야 한다. 여기에서 이용하는 완결 동작(280)의 표기는 다음과 같다.
Commit(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)
후술하는 단계들(284, 286 및 288)은 완결-블럭을 디스크(62)에 기억시킨다. 기억된 완결-블럭은 후속의 체크포인트 동작이 수행될 때까지 완결 동작의 임시 기억으로서 작용한다.
주사 단계(284)에서, 할당 비트맵(74)은 Next-Available-Block-frame(88)에 레코드된 블럭 프레임에 이어지는 최초의 가용 블럭 프레임을 찾기 위해 주사된다. 가용성 검사 단계(286)에서 이용 가능한 블럭 프레임이 없다고 확인되면, 체크포인트 동작이 수행된다. 이어지는 블럭 프레임이 확인되면, 그의 물리 어드레스는 "a"라고 가정된다.
기억 단계(288)에서, 체크포인트수, 트랜잭션 식별자 Tid 및 TSLD1(primTSLD)의 값들은, 여기에서 물리 어드레스가 "p"라고 가정된, Next-Available-Block-frame(88)에 레코드된 블럭 프레임의 블럭의 개개의 트레일러 필드(206, 212 및 214)(도 3)에 기록된다. 그 블럭 유형에 상응하는 값, 즉 완결 블럭형이 블럭 프레임의 트레일러 필드(210)에 기록된다. 논리 어드레스 필드(208)에는 엔트리가 생성되지 않는다. 또한, 기억 단계(288)에서, 트랜잭션의 참가 중인 TSLD(TSLD1, TSLD2, ...TSLDm)의 식별자들은 블럭 프레임 "p"의 블럭의 데이터 필드(202)에 레코드된다.
갱신 단계(290)에서, 메모리(26) 내의 데이터 구조 Next-Available-Block-frame(88)은 값 "a"로 세트된다.
주사 단계(292)에서, 보조 변환표(172)는 트랜잭션 식별자 Tid를 포함하고 있는 엔트리들에 대해서 주사된다. 확인된 각 엔트리마다,
● 그 엔트리가 지시한 블럭 프레임이 이용 가능해지도록, 작업 할당 비트맵(174)의 상응 비트는 0으로 세트된다.
● 변환표(72)에서, 보조 변환표(172)에서 확인된 것들에 상응하는 각 엔트리는 삭제된다.
● 보조 변환표(172)의 엔트리는 제거되고, 따라서 보조 변환표(172)는 축약된 형태로 유지된다.
레코드 단계(294)에서, TSLD(28)가 기본 TSLD(TSLD1)이면, 레코드 단계(262)(도 7)에서 수행된 트랜잭션 로그(90)의 트랜잭션 개시 레코드는 트랜잭션 Tid의 완결 레코드와 참가 중인 TSLD들로 대체되고, 이어서 완결 동작(280)은 종료한다. TSLD(28)가 기본 TSLD가 아니면, 동작(280)은 단계(292) 후에 종료한다.
블럭 프레임 "p"는 다음 체크포인트 동작 때까지만 점유되고, 그 후에는 그 블럭 프레임이 이용 가능해짐을 이해할 것이다.
도 9는 본 발명의 양호한 실시예에 따라 중지 동작(300)에 관여한 단계들을 도시하는 흐름도이다. 동작(300)은 소정의 트랜잭션과 관련된 소프트-기록 동작들(220) 중 하나의 소프트-기록 동작이 실패하면 수행되어야 한다. 동작(300)은 동작(220)에서 수행한 임시 기록 동작들로부터 철수하여, 동작(220)에서 수행되기 전에 블럭 프레임의 내용을 이용 가능하게 한다. 소프트-기록 동작(220)의 경우와 같이 동작(300)은 트랜잭션 Tid에 관여한 각 TSLD에 관해서 수행되어야 한다. 여기에서 이용하는 중지 동작(300)의 표기는 다음과 같다.
Abort(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)
단계들(304, 306, 308 및 310)은 중지-블럭을 디스크(62)에 기억시킨다. 기억된 중지-블럭은 후속의 체크포인트 동작이 수행될 때까지 중지 동작의 임시 기억으로서 작용한다. 단계들(304, 306, 308 및 310)은 전술한 단계들(284, 286 및 290)과 각각 상당히 유사하다. 기억 단계(308)에서, 체크포인트수, 트랜잭션 식별자 Tid 및 TSLD1(primTSLD)의 값들은, 여기에서 물리 어드레스가 "q"라고 가정한, Next-Available-Block-frame(88)에 레코드된 블럭 프레임의 블럭의 개개의 트레일러 필드(206, 212 및 214)(도 3)에 기록된다. 그 블럭 유형에 상응하는 값, 즉 중지 블럭이 그 블럭의 트레일러 필드(210)에 기록된다. 논리 어드레스 필드(208)에는 엔트리가 생성되지 않는다. 또한, 기억 단계(308)에서, 트랜잭션의 참가 중인 TSLD(TSLD1, TSLD2, ...TSLDm)의 식별자들은 블럭 프레임 "q"의 블럭의 데이터 필드(202)에 레코드된다.
주사 단계(312)에서, 보조 변환표(172)는 트랜잭션 식별자 Tid를 포함하고 있는 엔트리들에 대해서 주사된다. 확인된 각 엔트리마다, 변환표(72)는 상응하는 블럭 프레임을 찾기 위해 이용된다. 이어서, 작업 할당 비트맵(174)의 상응 비트는 리셋된다. 또한, 단계(312)에서, 비트들이 리셋된 후, 이제 변환표(72)는 확인된 엔트리들이 보조 변환표(172)에서 확인한 엔트리들을 지시하도록 갱신된다. 마지막으로, 보조 변환표(172) 내의 각 엔트리는 제거되고, 변환표(72) 내의 각 상응 엔트리의 태그들이 제거된다.
레코드 단계(314)에서, TSLD(28)가 기본 TSLD(TSLD1)이면, 레코드 단계(262)(도 7)에서 수행된 트랜잭션 로그(90)의 트랜잭션 개시 레코드는 트랜잭션 Tid의 중지 레코드와 참가 중인 TSLD들로 대체되고, 이어서 중지 동작(300)은 종료한다. TSLD(28)가 기본 TSLD가 아니면, 동작(300)은 단계(312) 후에 종료한다.
블럭 프레임 "q"는 다음 체크포인트 동작 때까지만 점유되고, 그 후에는 그 블럭 프레임이 이용 가능해짐을 이해할 것이다.
도 10a는 본 발명의 양호한 실시예에 따라 질문 동작(320)에 관여한 단계들을 도시하는 흐름도이다. 시스템(20) 또는 시스템(40)의 각 TSLD마다, 질문 동작(320)은 특정 트랜잭션의 상태에 관한 트랜잭션 상태 로그(90)를 검사하고, 그 트랜잭션에 관해 알고 있는 것을 클라이언트(22) 등의 요구자에게 반송한다. 여기에서 이용하는 질문 동작(320)의 표기는 다음과 같다.
Query_State(Tid)
제1 질문(322)에서, 로그(90)는 그 특정 트랜잭션의 개시 레코드가 존재하는 지를 알기 위해 검사된다. 그 개시 레코드가 존재하면(이것은, 질문 받은 TSLD가 기본 TSLD이고 트랜잭션 Tid이 아직 처리 중에 있다는, 즉 개방 상태라는 것을 나타낸다), (그 개시 레코드로부터 얻은) 참가 중인 TSLD들의 리스트를 갖는 반송 개방 상태가 반송된다. 리스팅은 트랜잭션이 개방 상태임을 나타내고, 다른 참가 중인 TSLD들을 리스팅한다.
개시 레코드가 존재하지 않으면, 동작(320)은 제2 질문(324)으로 진행하고, 여기에서 보조 변환표(172)는 표가 트랜잭션 Tid의 엔트리들을 포함하고 있는 지를 알기 위해 검사된다. 그 표가 Tid의 하나 이상의 엔트리를 포함하고 있으면(이것은, 그 트랜잭션이 처리 중에 있음을 나타낸다), "개방" 선언문이 반송된다.
질문(324)에 대한 대답이 부정적이면, 동작(320)은 제3 질문(326)으로 진행하고, 여기에서 트랜잭션 로그(90)는 그 특정 트랜잭션의 중지 레코드가 존재하는 지를 알기 위해 검사된다. 중지 레코드가 존재하면, "중지" 선언문이 반송된다.
질문(326)에 대한 대답이 부정적이면, 동작(320)은 제4 질문(328)으로 진행하고, 여기에서 트랜잭션 로그(90)는 그 특정 트랜잭션의 완결 레코드가 존재하는 지를 알기 위해 검사된다. 완결 레코드가 존재하면, "완결" 선언문이 반송된다. 완결 레코드가 존재하지 않으면, "불명" 선언문이 반송되고, 동작(320)은 종료한다.
도 10b는 본 발명의 양호한 실시예에 따라 특정 TSLD에 관한 동작(320)으로부터 얻은 수 있는 결과들의 상태도(330)이다. 상태도(330)에 도시한 바와 같이, 특정 트랜잭션 Tid는 개방 상태(332), 중지 상태(334), 완결 상태(336) 또는 불명 상태(338)에 존재할 수 있다.
트랜잭션 Tid의 기본 TSLD가 질문 상태에 대해서 "불명"으로 응답하는 반면에, 다른 비-기본 TSLD가 그 질문에 대해서 "개방" 상태로 응답하면, 트랜잭션은 완결되었음을 유추할 수 있다. 이러한 일은 트랜잭션이 기본 TSLD에서 완결 동작을 성공적으로 수행하였지만 비-기본 TSLD에서 그것을 행하는데 실패하였을 때 발생할 수 있다.
도 11은 본 발명의 양호한 실시예에 따라 체크포인트 동작(430)에 관여한 단계들을 도시하는 흐름도이다. 동작(340)에 관한 다음의 설명은 TSLD(28)에 특히 적용하지만(도 2), 시스템(20) 또는 시스템(40)의 모든 TSLD는 개개의 체크포인트 동작들을 수행함에 있어서 후술하는 동일 단계들을 실질적으로 따른다. 체크포인트 동작(340)은 휘발성 메모리(70) 내의 TSLD 인터페이스(35)에 유지된 값들을 디스크62)에 기록하고, 여기에서 그 값들은 영구적으로 기억된다. 가장 양호하게는, 체크포인트 동작(340)은 그 동작을 위해 미리 할당된 디스크(62)의 블럭 프레임(82e)에 기록한다. 보다 가장 양호하게는, 체크포인트 데이터는 블럭 프레임(82e) 내부의 동일 공간에 기록되지 않지만, 선행 체크포인트 데이터가 즉시 덧씌여지거나 소거되지 않도록 다른 방법으로 기록된다. 체크포인트 동작(340)은, 오류 발생시 TSLD(28)가 신속히 복구될 수 있도록, 주기적인 간격으로 구조를 TSLD 인터페이스(35)에서부터 디스크(62)로 복사한다. 체크포인트 동작(340)은 언제라도 TSLD(28)에 의해 수행될 수 있고, next-available-block-frame(88)을 벗어나서 이용할 수 있는 블럭 프레임이 없을 때 수행되어야 한다.
개시 단계(342)에서, TSLD 인터페이스(35)의 모든 데이터 구조는, 그 TSLD(28)가 체크포인트 동작 이외의 동작들에 대한 지원을 중단하도록 고정된다. 제2 단계(344)에서, 체크포인트 동작(340)은 인터페이스(35)로부터 first-available-block-frame(86)의 값을 판독한다. 블럭 프레임(86)은, 작업 할당 비트맵(174)으로부터 결정되는 바와 같이, 자유(free)이고 최하위의 디스크 섹터 어드레스와 관련되어 있는 블럭 프레임이다. 증가 단계(346)에서, 체크포인트수(84)의 값은 증가되고, 증가된 값이 판독된다.
기억 단계(348e, 348b, 348c, 348d 및 348e)에서, 동작(340)은 변환표(72), 보조 변환표(172), 작업 할당 비트맵(174), first-available-block-frame(86), 증가된 체크포인트수(84) 및 트랜잭션 상태 로그(90)를 블럭 프레임(32e)에 기록한다.
제1 재배당 단계(350)에서, next-available-block-frame(88)의 값은 단계(344)에서 확인된 first-available-block-frame(86)의 값이 되도록 배정되고, next-available-block-frame은 후속의 move-forward-and-store 동작에 이용된다. 제2 재배정 단계(352)에서, 할당 비트맵(74)은 작업 할당 비트맵(174)의 값들이 배정된다. 이어서, 동작(340)은 TSLD 인터페이스(35)의 고정된 데이터 구조들을 고정 해제하고 종료하며, 이 때 TSLD(28)는 갱신된 데이터 구조를 이용하여 동작들을 다시 계속한다.
체크포인트 동작(340)은 특정 TSLD에서 수행하고 있지만, 그 TSLD는 다른 동작들을 중단시킨다. 시스템 사용자에 대한 영향을 감소시키기 위해, 동작(340)은 소시간 분량으로 수행될 수 있다. 전술한 특허 가출원에서 그리고 발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"인 전술의 특허 출원에서, 동작(340)에 실질적으로 유사한 체크포인트 동작에 관한 설명이 나타나 있다. 더욱이, 시스템 사용자에 대한 영향을 감소시키기 위해 체크포인트 동작을 소시간 분량으로 수행하는 방법에 관한 상세한 설명이 나타나 있다. 당해 기술 분야의 숙련자는 동작(340)을 소시간 분량으로 수행하기 위해, 발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"인 특허 출원에 나타난 방법을 적응시킬 수 있을 것이다.
도 12는 본 발명의 양호한 실시예에 따라 트랜잭션 Tid의 조정 동작(360)에 관여한 단계들을 도시하는 흐름도이다. 여기에서, 트랜잭션은 트랜잭션 코디네이터로서 작용하는 클라이언트(22)가 개시한다고 가정하고, 그 트랜잭션에 참가하는 TSLD들은 TSLD1, TSLD2, ... TSLDm이라고 가정된다.
개시 단계(362)에서, 클라이언트(22)는 그 참가 중인 TSLD들 중 하나의 TSLD를 트랜잭션 Tid의 기본 TSLD로서 작용하도록 선택한다. 그러한 선택은 최하위의 식별자를 갖는 TSLD, 또는 가장 덜 반응적인 TSLD를 선택함으로써, 또는 임의로 행해질 수 있다. 여기에서, TSLD1은 기본 TSLD(primTSLD)라고 가정된다.
트랜잭션 개시 단계(364)에서, 클라이언트(22)는 개시 동작(260)(도 7)[Begin(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 TSLD1에 제시하고, 제1 대기 단계(365)에서, TSLD1로부터 개시 동작이 성공적으로 완료하였다는 사실의 응신을 위해 미리 결정된 기간 동안 대기한다. 응신이 없으면, 클라이언트(22)는 중지 동작(300)[Abort(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 TSLD1에 제시하고, 트랜잭션을 중지시킨다.
클라이언트(22)가, 개시 동작(260)이 성공적으로 완료하였다는 응신을 수신하면, 소프트-기록 단계(366)에서, 클라이언트(22)는 하나 이상의 소프트-기록 동작(220)(도 4)[Soft-Write(Tid, primTSLD, i, contents)]을 참가 중인 각 TSLD에 제시한다. 클라이언트(22)는 참가 중인 각 TSLD에 다음의 데이터, 즉 트랜잭션 식별자 Tid, 기본 TSLD 식별자(TSLD1), 관련 논리 블럭 어드레스 및 기억될 관련 데이터 블럭 내용을 제공한다.
제2 대기 단계(368)에서, 클라이언트(22)는 참가 중인 각 TSLD로부터 각 소프트-기록 동작이 성공적으로 완료하였다는 긍정적인 응신을 수신하기 위해 미리 결정된 기간을 대기한다.
미리 결정된 기간 내에 참가 중인 모든 TSLD로부터 긍정적인 응신이 수신되지 않으면, 중지 단계(370)에서, 클라이언트(22)는 중지 동작(300)[Abort(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 참가 중인 각 TSLD에 제시한다. 기본 TSLD가, 동작(300)이 성공적으로 완료하였다는 응신을 받는데 실패하면, 클라이언트(22)는 엄격-중지 동작(후술함)[StickyAbort(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 참가 중인 각 비-기본 TSLD에 차례로 제시하고, 각 제시 후에 완료의 응신을 대기한다. 소정의 응신이 수신되거나 참가 중인 모든 TSLD가 질문 받고 아무도 응답하지 않으면, 조정 동작(360)은 종료한다.
미리 결정된 기간 이내에 참가 중인 모든 TSLD로부터 긍정적인 응신이 수신되면, 완결 단계(372)에서, 클라이언트(22)는 완결 동작(280)[Commit(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 트랜잭션의 기본 TSLD에 제시한다. 기본 TSLD가 완결 동작을 응신하면, 그 동작은 참가 중인 각 TSLD에 전송된다. 기본 TSLD가, 동작(280)이 성공적으로 완료하였음을 응신하는데 실패하면, 클라이언트(22)는 엄격-완결 동작(후술함)[Stickycommit(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 참가 중인 각 비-기본 TSLD에 차례로 제시하고, 각 제시 후에 완료의 응신을 대기한다. 소정의 응신이 수신되거나 참가 중인 모든 TSLD가 질문 받고 아무도 응답하지 않으면, 조정 동작(360)은 종료한다.
엄격-완결 동작은 완결 동작과 실질적으로 같고, 상응하는 엄격-완결 레코드는 완결 레코드와 실질적으로 같다. 엄격-완결 동작과 레코드는 비-기본 TSLD에 제공한다. 엄격-완결 동작의 결과로서, 엄격-완결 레코드는 비-기본 TSLD의 트랜잭션 상태 로그에 부가된다. 엄격-완결 레코드는 클라이언트가 명확히 명령하지 않으면 비-기본 TSLD의 트랜잭션 상태 로그로부터 제거될 수 없다. 또한, 전술의 설명은 엄격-중지 동작과 중지 동작간, 그리고 엄격-중지 레코드와 중지 레코드간에도 적용된다.
조정 동작(360)은 트랜잭션 Tid를 완결 또는 중지 중 어느 하나로 하고, 그 동작의 결과를 트랜잭션의 참가 중인 적어도 하나의 TSLD에 레코드하도록 시도하는 것임을 이해할 것이다.
도 13은 본 발명의 양호한 실시예에 따라 제1 복구 동작(373)에 관여한 단계들을 도시하는 흐름도이다. 동작(373)은 시스템(20) 또는 시스템(40)의 서버(26) 등의 기억 서버의 오류의 복구 후에 수행된다. 상세하게 후술하는 바와 같이, 동작(373)은 할당 비트맵(74)을 주사하는 것을 필요로 한다. [발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"인 전술의 특허 출원은 불휘발성 디스크 메모리의 오류 복구에 관한 다른 방법을 상세하게 설명하고 있고, 당해 기술 분야의 숙련자는 그러한 설명을, 서버(26) 등의 서버를 시스템 오류로부터의 복구에 적용할 수 있을 것이다. 그러한 다른 방법은 최종 체크포인트 이래로 기록된 블럭의 수의 선형 함수인 시간이 걸린다.]
제1 판독 단계(374)에서, 최종 체크포인트 동작(340)시 디스크(62)에 기억된 할당 비트맵(74)의 값들은 TSLD 인터페이스(35)에서 할당 비트맵(74)과 작업 비트맵(174)에 다시 독입(讀入)된다.
제2 판독 단계(375)에서, 최종 체크포인트 동작(340)시 디스크(62)에기억된적이 있는 first-available-block-frame(86)의 값은 first-available-block-frame(86)과 next-available-block-frame(88)에 다시 독입된다.
제3 판독 단계(376)에서, 최종 체크포인트 동작(340)시 기억된 적이 있는 변환표(72), 보조 변환표(172), 체크포인트수(84) 및 트랜잭션 상태 로그(90)의 값들은 TSLD 인터페이스(35)의 개개의 데이터 구조에 다시 독입된다.
제4 판독 단계(377)에서, next-available-block-frame(88)에 의해 주어진 블럭 프레임 어드레스에 기억된 블럭이 판독된다.
갱신 단계(378)에서, 판독된 각 블럭마다 TSLD 인터페이스(35)의 체크포인트수(84)가 그 기억된 체크포인트수에 상응하는지를 검사하는 동안에,
1. 판독된 최종 블럭에 따라 TSLD 인터페이스(35)의 모든 관련 데이터 구조를 갱신한다[초기에 단계(377)부터]. 즉, 블럭 프레임이 기억된 동안에 발생한 TSLD 동작들을 재생한다.
2. 할당 비트맵(74)에서 가용한 블럭 프레임을 표식하는 제1 비트를 기대함으로써 기억된 다음 블럭 프레임을 찾고, 그 블럭 프레임 내의 블럭을 판독한다.
3. 할당 비트맵(74)이 정방향으로 완전히 주사할 때까지, 오류 섹터(64)로 인해 판독되지 못하는 소정의 블럭들을 무시하고 단계(378a)와 단계(378b)를 계속한다.
이어서, 동작(378)이 종료한다.
제1 복구 동작(373)은, 판독되지 못하는 블럭들에 의해 생긴 곳곳의 오류는 별문제로 하고, 최종 체크포인트 동작 이래로 수행된 TSLD 동작들의 "재생" 처리에 의해 TSLD 인터페이스(35) 내부의 데이터 구조들을 거의 완전히 그들의 오류 이전의 값들로 복귀시킴을 이해할 것이다. 재생 처리는, 디스크(62)에 기록된 최종 체크포인트 동작으로부터 하나 이상의 파라미터를 판독하여 그 동작 이래로 기록된 블럭 프레임 위치들을 얻음으로써 달성된다.
도 14는 본 발명의 양호한 실시예에 따라 제2 복구 동작(380)에 관여한 단계들을 도시하는 흐름도이다. 동작(380)은, 개방 트랜잭션들의 상황을 결정하기 위해, 동작(373)이 여기에서 서버(26)라고 가정한 복구된 서버에서 결론지은 후에 가장 양호하게 수행된다.
복구 동작(380)의 제1 단계(382)에서, 서버(26)는 트랜잭션 개시 레코드를 위한 그의 트랜잭션 상태 로그(90)[이것은, TSLD(28)가 기본 TSLD인 개방 트랜잭션들을 나타냄]를 주사한다. 이러한 각 트랜잭션마다, 질문 단계(384)에서, TSLD(28)는 트랜잭션의 참가 중인 TSLD에 대해서 완결 레코드 또는 중지 레코드를 검사한다. 갱신 단계(386)에서, TSLD(28)는 단계(384)의 결과에 따라 그의 트랜잭션 로그(90)를 갱신한다. 이어서, 제1 복구 동작(380)은 종료한다. 동작(380)을 수행함으로써, 이어서 TSLD(28)는 최신 정보에 대해서 TSLD(28)가 기본 TSLD인 트랜잭션에 관여한 다른 TSLD들로부터의 질문에 응답할 수 있는 상태가 된다.
도 15는 본 발명의 양호한 실시예에 따라 제3 복구 동작(390)에 관여한 단계들을 도시하는 흐름도이다. 복구 동작(380)의 경우에서와 같이, 복구 동작(390)은, 서버가 오류로부터 복구된 후에, 가장 양호하게는 동작(380)을 수행한 후에, 서버(26)에 의해서 수행된다. 제1 단계(392)에서, 서버(26)는 전술한 바와 같이 재구성을 마친 그의 보조 변환표(172)를 주사하여, 개방되어 있는 것으로 보이는 트랜잭션들을 확인한다. 이러한 각 트랜잭션마다, 서버(26)는 이하의 단계들을 따른다. 질문 단계(394)에서, 특정 트랜잭션에 상응하는 소프트-기록된 블럭을 찾고 그의 트랜잭션 로그(90)에 질문하여, 그 트랜잭션의 상태를 확인한다. 트랜잭션 로그(90)가 그 트랜잭션의 상태를 제공하면, 서버(26)는 요구받은 대로 메모리(70) 내의 데이터 구조들을 갱신하고, 다음의 개방 트랜잭션으로 진행한다.
트랜잭션 로그(90)가 트랜잭션의 상태를 제공하지 못하면, 제2 질문 단계(396)에서 트랜잭션의 기본 TSLD는, 트랜잭션의 블럭 프레임의 트레일러 필드(214)에서 지정된 바와 같이, 질문을 받는다. 서버(26)는 기본 TSLD에 질문 결과를 TSLD 인터페이스(35)의 데이터 구조에 편입시킨다. 동작(390)은 단계(392)에서 확인된 모든 개방 트랜잭션이 단계(394) 및/또는 단계(396)를 통해서 처리를 마친 후에 종료한다.
도 16은 본 발명의 양호한 실시예에 따라, 클라이언트가 수행한 트랜잭션 완료 동작(400)에 관여한 단계들을 도시하는 흐름도이다. 통상, 이것은 소정의 트랜잭션을 수행하는 동안 소정의 클라이언트가 발생하는 오류의 결과로서 생긴다. 동작(400)은 시스템(20)의 클라이언트가 특정 TSLD 내의 특정 블럭 프레임을 판독하려고 할 때 open-transaction-error 반송 신호를 수신하는 경우에 그 클라이언트에 의해서 가장 양호하게 수행된다. [전술한 바와 같이, 예컨대, 소프트-기록 동작(220)의 검사 단계(222)에서.) 여기에서, 클라이언트는 클라이언트(22)라고 가정되고, 블럭 프레임은 TSLD(28)의 블럭 프레임(64a)이라고 가정된다. open-transction-error는 블럭 프레임(64a)이 개방 트랜잭션에 연동하고 있음을 표시한다. 동작(400)은 소정의 개방 트랜잭션에 대한 참가자들이 그 트랜잭션을 완결할지 또는 중지할지의 여부의 일치를 얻고, 따라서 그 트랜잭션을 완료할 수 있게 한다.
제1 단계(402)에서, 클라이언트(22)는 블럭 프레임(64a)에 관한 소프트-판독 동작(240)(도 5)[Soft-Read(i)]을 수행하고, 트랜잭션 식별자 Tid와 기본 TSLD의 식별자를 수신한다. 제1 질문 단계(404)에서, 클라이언트(22)는 기본 TSLD에 관한 질문 동작(320)(도 10a)[Query_State(Tid)]을 수행하고, 수신된 응답에 따라 작용한다.
응답이 없으면, 기본 TSLD는 기능하지 않고 있으므로 클라이언트(22)는 그 트랜잭션은 완료할 수 없다. 이 경우, 대기 단계(406)에서, 클라이언트(22)는 기능 중인 서버로 이송될 기본 TSLD를 대기한다.
만일 제1 응답 단계(408)에서 기본 TSLD가 "불명" 선언문으로 응답하면, 클라이언트(22)는 그것이 open-transaction-error 신호를 수신한 곳, 이 경우에는 TSLD(28)로부터의 특정 TSLD에 관한 완결 동작(280)[Commit(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 수행한다.
만일 제2 응답 단계(410)에서 기본 TSLD가 트랜잭션에 참가하고 있는 다른 TSLD들의 리스트와 함께 "개방" 선언문으로 응답하면, 제2 질문 단계(412)에서 클라이언트(22)는 참가 중인 각 TSLD들에 관하여 차례로 질문 동작(320)을 수행한다.
만일 참가 중인 TSLD들 중 어느 TSLD로부터 명확한 응답, 즉 "완결" 응신 또는 "중지" 응신이 수신되면, 제3 응답 단계(414)에서 클라이언트(22)는 참가 중인 나머지 TSLD들에 관하여 개개의 완결 동작(280) 또는 중지 동작(300)[Abort(Tid; primTSLD, TSLD2, TSLD3, ... TSLDm)]을 수행한다.
만일 제2 응답 단계(412)에서 참가 중인 모든 TSLD가 "개방" 응신을 반송하면, 제4 응답 단계(416)에서, 동작(400)의 개시 이래로 소정의 변경이 있는 경우에, 클라이언트(22)는 다시 개시 블럭 프레임, 즉 블럭 프레임(64a)를 판독하려고 한다. 변경이 없었다면, 클라이언트(22)는 참가 중인 TSLD들에 관하여 중지 동작(300)을 수행한다.
만일 제2 응답 단계(412)에서 참가 중인 TSLD들 중 하나의 TSLD가 응답하지 않으면, 요구 받은 대답을 특정한 무응답 TSLD가 갖고 있을 수도 있기 때문에, 제5 응답 단계(418)에서 클라이언트(22)는 그 특정한 TSLD의 응답을 대기한다. 단계(406, 408, 414, 416 또는 418) 후에, 동작(400)은 종료한다.
TSLD(28)가 액세스 가능한 모든 시기에, TSLD(28)의 특정 블럭 프레임(82)은 소정의 트랜잭션과 연동되어 있지 않거나 또는 연동되어 있을 것이어서 변환표(72)가 그 연동 관계를 표식할 것임을 이해할 것이다. 동일한 것이 시스템(20) 또는 시스템(40)의 액세스 가능한 다른 TSLD들과 그들의 개개의 변환표들에 적용된다. 따라서, 트랜잭션 완료 동작(400)에서, 시스템(20) 또는 시스템(40)이 일관성 없어 보이도록 하나의 TSLD에 관한 블럭 프레임의 블럭 내용과 다른 TSLD에 관한 블럭 프레임의 블럭 내용을 판독할 수 있다. 그러나, 이 경우에도, 클라이언트(22)는 그 시스템의 상황을 잘 인지하고 있고, 또한 소정의 불완전 트랜잭션의 상태에 대해서와 같은 결론에 도달할 수 있다.
트랜잭션 상태 로그(90)의 크기를 최소화하기 위해, 레코드들이 더 이상 필요하지 않을 때 그들 레코드은 로그로부터 제거될 필요가 있다. 전술한 바와 같이, 기본 TSLD에서 각 트랜잭션 개시 레코드는 완결 레코드 또는 중지 레코드로 대체된다. 미리 결정된 기간 후, 완결 레코드들은 필요하지 않으므로, 기본 TSLD에 관한 그들 완결 레코드는 제거된다. (전술한 바와 같이, 소정의 트랜잭션이 소정의 비-기본 TSLD에 관하여 개방되어 있다고 알려져 있고, "불명"으로 질문 받았을 때 그 기본 TSLD가 응답하면, 그 트랜잭션은 이미 완결하였다고 가정된다.) 관련 트랜잭션의 참가 중인 모든 TSLD이 그 트랜잭션의 상태를 인지하고 있음을 소정의 기본 TSLD가 확인하였다면 그 기본 TSLD의 중지 레코드들은 제거될 수 있다.
특정 트랜잭션의 기본 TSLD가 그 트랜잭션에 관한 비-기본 TSLD에 질문하였으면, 그 질문을 작성하였을 때 그 기본 TSLD가 트랜잭션 상태를 레코드하므로, 그 비-기본 TSLD는 그 특정 트랜잭션의 완결 레코드 또는 중지 레코드를 제거할 수 있다. 따라서, 가장 양호하게는, 소정의 시스템 내의 TSLD들은 트랜잭션 상태 로그(90)로부터 불필요한 트랜잭션 레코드들을 제거하기 위해 전술한 바와 같이 조정한다.
시스템(20)과 시스템(40)이 복수 개의 TSLD와 그들 TSLD를 관리하는 복수 개의 서버를 이용하지만, 본 발명의 원리는 하나의 TSLD를 관리하는 하나의 서버에도 적용됨을 이해할 것이다. 더욱이, 본 발명의 원리는 복수 개의 동시 데이터 트랜잭션이 로그되고 실질적으로 서로 독립적으로 복구되므로, 이들 트랜잭션이 하나 이상의 TSLD에 관하여 수행될 때 그 복수 개의 트랜잭션의 복구 및 완료에도 적용됨을 이해할 것이다.
또한, 본 발명의 범주는 서버의 오류 후에 데이터를 연속 데이터 블럭으로부터 복구하기 위한, 전술한 것과 다른 방법들을 포함하고, 후속의 데이터 블럭의 위치를 표시하는 하나 이상의 파라미터가 소정의 기억 장치에 기록되는 것도 이해할 것이다. 이러한 방법들의 예는 특허 가출원 제60/176,507호와 발명의 명칭이 "안정성이 향상된 디스크 기억 방식(Enhanced Stable Disk Storage)"인 특허 출원에 설명되어 있다.
또한, 본 발명의 양호한 실시예들은 컴퓨터 프로그램 제품으로서 제공될 수도 있음을 더 이해할 것이다. 이러한 제품은 전자 데이터 전송으로서 또는 CD-ROM 등의 컴퓨터 판독 가능 매체의 유형의 형식으로, 또는 두 형식의 혼합품으로서 제공될 수도 있다.
따라서, 전술한 양호한 실시예들은 예로서 인용되고, 본 발명은 앞에서 특히 나타내고 설명해 온 것에 제한되지 않음을 이해할 것이다. 그 보다는, 본 발명의 범주는 전술한 다양한 구성물들의 컴비네이션 또는 서브컴비네이션 모두와, 당해 기술 분야의 숙련자들이 전술의 설명을 읽고 발상할, 그리고 종래 기술에서 개시하지 않은 변경례들과 변형례들을 포함함을 이해할 것이다.

Claims (66)

  1. 데이터 트랜잭션을 지원하기 위한 장치로서,
    데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 이 블럭들 중 적어도 몇 개의 데이터 블럭에 관한 개개의 성질을 표시하는 하나 이상의 값을 구비함 -으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 구성되는 제어 회로를
    포함하는 것인 데이터 트랜잭션 지원 장치.
  2. 제1항에 있어서, 상기 제어 회로는 상기 제어 회로를 상기 적어도 하나의 기억 장치에 접속하는 적어도 하나의 통신 링크를 포함하고, 상기 제어 회로는 상기 적어도 하나의 통신 링크를 통해서 상기 적어도 하나의 기억 장치를 관리하는 것인 데이터 트랜잭션 지원 장치.
  3. 제1항에 있어서, 상기 데이터를 상기 제어 회로에 전달하고 또한 상기 제어 회로에 접속되는 데이터 전송 네트워크를 더 포함하는 것인 데이터 트랜잭션 지원 장치.
  4. 제3항에 있어서, 상기 데이터 전송 네트워크는 상기 적어도 하나의 기억 장치에 접속되고 상기 데이터를 상기 적어도 하나의 기억 장치에 전달하며, 상기 제어 회로는 상기 데이터 전송 네트워크를 통해서 상기 적어도 하나의 기억 장치를 관리하는 것인 데이터 트랜잭션 지원 장치.
  5. 제1항에 있어서, 상기 데이터를 상기 제어 회로에 전달하는 클라이언트를 더 포함하는 것인 데이터 트랜잭션 지원 장치.
  6. 데이터 트랜잭션을 지원하기 위한 장치로서,
    데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 이 블럭들 중 적어도 몇 개의 데이터 블럭에 관한 개개의 성질을 표시하는 하나 이상의 값을 구비함 -으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 구성되는 제어 회로를
    포함하고,
    상기 제어 회로는 상기 하나 이상의 데이터 구조를 기억하도록 구성된 적어도 하나의 휘발성 메모리를 포함하고, 상기 데이터 구조들 중 적어도 일부의 데이터 구조는 상기 제어 회로에 의해 상기 적어도 하나의 기억 장치에 기록되고, 이것에 의해서, 상기 적어도 하나의 휘발성 메모리의 내용이 상기 적어도 하나의 기억 장치에 기록된 상기 적어도 몇 개의 데이터 구조로부터 재생되는 것인 데이터 트랜잭션 지원 장치.
  7. 제6항에 있어서, 상기 하나 이상의 데이터 구조 중 하나의 데이터 구조는, 상기 연속 데이터 블럭들의 논리 블럭 어드레스들을 각각의 물리 어드레스들에 사상(寫像)하고 상기 데이터 블럭들 중 개방 데이터 트랜잭션에 현재 연동되어 있는 데이터 블럭에 태그를 붙이는 변환표를 포함하는 것인 데이터 트랜잭션 지원 장치.
  8. 제7항에 있어서, 상기 하나 이상의 데이터 구조들 중 하나의 데이터 구조는 보조 변환표를 포함하며, 이 보조 변환표는 각 개개의 개방 데이터 트랜잭션마다 개방 데이터 트랜잭션에 관련된 논리 블럭 어드레스들을, 상기 데이터 트랜잭션의 개시 이전에 존재한 상기 연속 데이터 블럭들의 개개의 물리 어드레스들과 상기 개방 데이터 트랜잭션의 식별자에 사상하는 보조 변환표를 포함하는 것인 데이터 트랜잭션 지원 장치.
  9. 제7항에 있어서, 상기 제어 회로는 상기 개개의 논리 블럭 어드레스들 또는 데이터 트랜잭션의 식별자 또는 데이터 트랜잭션의 상태의 레코더의 식별자를 상기 연속 데이터 블럭에 기록하는 것인 데이터 트랜잭션 지원 장치.
  10. 삭제
  11. 삭제
  12. 제6항에 있어서, 상기 하나 이상의 데이터 구조들 중 하나의 데이터 구조는 상기 연속 데이터 블럭의 각각의 가용성을 사상하는 할당 비트맵을 포함하는 것인 데이터 트랜잭션 지원 장치.
  13. 제6항에 있어서, 상기 하나 이상의 데이터 구조들 중 하나의 데이터 구조는 상기 연속 데이터 블럭에서의 다음의 가용 데이터 블럭의 위치를 가리키는 포인터값 또는 최초 가용 데이터 블럭의 위치를 가리키는 포인터값을 포함하는 것인 데이터 트랜잭션 지원 장치.
  14. 삭제
  15. 제6항에 있어서, 상기 적어도 하나의 기억 장치는 디스크 헤드를 갖는 디스크를 포함하고, 상기 제어 회로는 상기 디스크의 표면 상에서 상기 디스크 헤드의 한방향으로의 일련의 통과 시에 상기 데이터 블럭을 상기 디스크에 기록하는 것인 데이터 트랜잭션 지원 장치.
  16. 제15항에 있어서, 상기 일련의 통과의 각각은 체크포인트수를 갖고, 상기 데이터 구조들 중 하나의 데이터 구조는 현재의 체크포인트수를 표시하는 값을 포함하는 것인 데이터 트랜잭션 지원 장치.
  17. 제15항에 있어서, 상기 하나 이상의 데이터 구조들 중 하나의 데이터 구조는 상기 디스크 헤드의 하나 이상의 통과의 종결 시에 상기 연속 데이터 블럭들의 각각의 가용성을 기억하는 작업 할당 비트맵을 포함하는 것인 데이터 트랜잭션 지원 장치.
  18. 제15항에 있어서, 상기 제어 회로는 상기 디스크 헤드의 하나 이상의 통과의 종결 시에 상기 하나 이상의 데이터 구조들 중 적어도 몇 개의 데이터 구조를 상기 적어도 하나의 기억 장치에 기록하는 것인 데이터 트랜잭션 지원 장치.
  19. 제6항에 있어서, 상기 하나 이상의 데이터 구조들 중 하나의 데이터 구조는 상기 데이터 트랜잭션의 적어도 하나의 레코드를 기억하도록 구성된 트랜잭션 상태 로그를 포함하고, 상기 적어도 하나의 레코드는 상기 데이터 트랜잭션의 식별자와 상기 데이터 트랜잭션에 참가하는 상기 적어도 하나의 기억 장치의 식별자를 포함하며, 상기 적어도 하나의 레코드는 레코드군 중 적어도 하나의 레코드를 포함하고, 상기 레코드군은 트랜잭션 개시, 트랜잭션 완결 및 트랜잭션 중지로 이루어지고, 이들 레코드는 각각 상기 트랜잭션을 개시하고 완결하며 중지하는 것을 기록하는 것인 데이터 트랜잭션 지원 장치.
  20. 데이터 트랜잭션을 지원하기 위한 장치로서,
    데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 이 블럭들 중 적어도 몇 개의 데이터 블럭에 관한 개개의 성질을 표시하는 하나 이상의 값을 구비함 -으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 구성되는 제어 회로를
    포함하고,
    상기 제어 회로는 트레일러를 상기 연속 데이터 블럭에 기록하고, 상기 트레일러는 상기 데이터 블럭의 각각의 사용을 표시하는 하나 이상의 데이터 필드를 포함하는 것인 데이터 트랜잭션 지원 장치.
  21. 제20항에 있어서, 상기 하나 이상의 데이터 필드는 상기 데이터 트랜잭션의 식별자와 상기 데이터 트랜잭션의 레코더의 식별자를 포함하고, 상기 데이터 트랜잭션의 상기 레코더는 상기 적어도 하나의 기억 장치 중 하나의 기억 장치를 포함하는 것인 데이터 트랜잭션 지원 장치.
  22. 제20항에 있어서, 상기 하나 이상의 데이터 필드는 상기 데이터 블럭의 논리 어드레스 또는 상기 데이터 트랜잭션의 상태를 표시하는 태그를 포함하는 것인 데이터 트랜잭션 지원 장치.
  23. 삭제
  24. 제1항에 있어서, 상기 적어도 하나의 기억 장치를 제어하는 디스크 제어기를 더 포함하고, 상기 디스크 제어기는 상기 제어 회로에 의해 상기 적어도 하나의 기억 장치에 기록된 데이터로부터 휘발성 메모리의 내용을 복구할 수 있는 것인 데이터 트랜잭션 지원 장치.
  25. 삭제
  26. 삭제
  27. 제1항에 있어서, 상기 적어도 하나의 기억 장치는 서버에 의해 관리되는 디스크를 포함하는 것인 데이터 트랜잭션 지원 장치.
  28. 삭제
  29. 데이터 트랜잭션을 지원하기 위한 장치로서,
    데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 이 블럭들 중 적어도 몇 개의 데이터 블럭에 관한 개개의 성질을 표시하는 하나 이상의 값을 구비함 -으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 구성되는 제어 회로를
    포함하고,
    상기 적어도 하나의 파라미터는 상기 데이터 트랜잭션의 하나 이상의 상태를 레코드하는 트랜잭션 상태 로그를 포함하는 것인 데이터 트랜잭션 지원 장치.
  30. 데이터 트랜잭션을 지원하기 위한 장치로서,
    데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 이 블럭들 중 적어도 몇 개의 데이터 블럭에 관한 개개의 성질을 표시하는 하나 이상의 값을 구비함 -으로서 수신하여 개개의 물리적 위치에 기억하도록 구성된 적어도 하나의 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 상기 적어도 하나의 기억 장치에 전송하는 한편, 상기 적어도 하나의 기억 장치에 기록하고, 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 구성되는 제어 회로를
    포함하고,
    상기 적어도 하나의 파라미터는 상기 데이터 트랜잭션의 하나 이상의 상태를 레코드하는 분산 트랜잭션 상태 로그의 적어도 일부를 포함하는 것인 데이터 트랜잭션 지원 장치.
  31. 제1항에 있어서, 상기 적어도 하나의 기억 장치는 상기 적어도 하나의 기억 장치에 기억된 정보를 복구하기 위해 다른 제어 회로에 의해 동작되도록 이동 가능하게 적응되는 것인 데이터 트랜잭션 지원 장치.
  32. 데이터 트랜잭션을 수행하는 방법으로서,
    적어도 몇 개의 데이터 블럭의 각각 및, 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 데이터 블럭들 중 적어도 몇 개의 데이터 블럭의 개개의 성질을 표시하는 하나 이상의 값을 구비하는 하나 이상의 데이터 구조를 구비함 -으로서 적어도 하나의 파라미터를 수신하는 단계와,
    상기 데이터 트랜잭션을 완료하기 위해 상기 적어도 하나의 파라미터에 응답하여 상기 적어도 하나의 기억 장치 내의 상기 데이터의 상태를 변환하는 단계
    를 포함하는 것인 데이터 트랜잭션 수행 방법.
  33. 삭제
  34. 제32항에 있어서, 상기 데이터를 상기 적어도 하나의 기억 장치 내에 수신하는 단계는 상기 데이터를 데이터 전송 네트워크를 거쳐서 상기 적어도 하나의 기억 장치에 전달하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  35. 삭제
  36. 삭제
  37. 삭제
  38. 데이터 트랜잭션을 수행하는 방법으로서,
    적어도 몇 개의 데이터 블럭의 각각 및, 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 데이터를 연속 데이터 블럭- 이 연속 데이터 블럭은 데이터 블럭들 중 적어도 몇 개의 데이터 블럭의 개개의 성질을 표시하는 하나 이상의 값을 구비하는 하나 이상의 데이터 구조를 구비함 -으로서 적어도 하나의 파라미터를 수신하는 단계와,
    상기 데이터 트랜잭션을 완료하기 위해 상기 적어도 하나의 파라미터에 응답하여 상기 적어도 하나의 기억 장치 내의 상기 데이터의 상태를 변환하는 단계
    를 포함하고,
    적어도 하나의 휘발성 메모리에 상기 하나 이상의 데이터 구조를 기억하는 단계와,
    상기 데이터 구조 내에 있는 데이터 중 적어도 일부의 데이터를 상기 적어도 하나의 기억 장치에 기록하는 단계
    를 더 포함하며,
    상기 적어도 하나의 휘발성 메모리의 내용은 상기 적어도 하나의 기억 장치에 기록된 상기 하나 이상의 데이터 구조 내의 상기 데이터 중 상기 적어도 일부의 데이터로부터 재생되는 것인 데이터 트랜잭션 수행 방법.
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 제38항에 있어서, 상기 데이터 중 상기 적어도 일부의 데이터를 상기 적어도 하나의 기억 장치에 기록하는 단계는,
    1) 상기 적어도 하나의 기억 장치 내의 가용 데이터 블럭의 물리적 위치를 결정하기 위해 상기 하나 이상의 데이터 블럭을 주사하는 단계와,
    2) 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개 데이터 구조의 내용을 상기 물리적 위치에 기록하는 단계와,
    3) 결정된 물리적 위치에 응답하여 상기 하나 이상의 데이터 구조를 갱신하는 단계를 이용하여,
    상기 데이터를 상기 연속 데이터 블럭 중 하나의 데이터 블럭에 기록하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  45. 제44항에 있어서, 상기 하나 이상의 데이터 구조를 주사하는 단계는 논리 블럭 어드레스가 개방 트랜잭션에 관여되어 있는 지를 검사하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  46. 제44항에 있어서, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는,
    소프트-기록 동작에 상응하는 값을 기록하는 단계와,
    일시 기록 동작을 수행하기 위해서 상기 적어도 하나의 기억 장치 중 하나의 기억 장치의 식별자를 트랜잭션 상태로서 기록하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  47. 제44항에 있어서, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 개시 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는 상기 개시 동작을 수행하기 위해서 상기 트랜잭션의 식별자와 상기 적어도 하나의 기억 장치의 식별자를 포함하는 개시 레코드를 기록하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  48. 제44항에 있어서, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 완결 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는,
    상기 트랜잭션의 개방 상태를 표시하는 태그를 제거하는 단계와,
    상기 완결 동작을 수행하기 위해서 상기 트랜잭션의 식별자와 상기 적어도 하나의 기억 장치의 식별자를 포함하는 완결 레코드를 기록하는 단계와,
    트랜잭션 상태 로그를 갱신하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  49. 제44항에 있어서, 상기 데이터와, 상기 하나 이상의 데이터 구조 중 적어도 몇 개의 데이터 구조의 내용을 기록하는 단계는 중지 동작에 상응하는 값을 기록하는 단계를 포함하고, 상기 하나 이상의 데이터 구조를 갱신하는 단계는,
    상기 트랜잭션의 개방 상태를 표시하는 태그를 제거하는 단계와,
    상기 중지 동작을 수행하기 위해서 상기 트랜잭션의 식별자와 상기 적어도 하나의 기억 장치의 식별자를 포함하는 중지 레코드를 기록하는 단계와,
    트랜잭션 상태 로그를 갱신하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  50. 제38항에 있어서, 상기 데이터 트랜잭션의 상태를 결정하기 위해 상기 하나 이상의 데이터 구조를 주사하는 단계를 더 포함하는 것인 데이터 트랜잭션 수행 방법.
  51. 제38항에 있어서,
    상기 하나 이상의 데이터 구조를 고정(로크)하는 단계와,
    상기 하나 이상의 데이터 구조의 내용을 상기 적어도 하나의 기억 장치 내의 체크포인트 위치에 기록하는 단계와,
    상기 내용을 상기 적어도 하나의 기억 장치에 기록하는 것에 응답하여 상기 하나 이상의 데이터 구조의 내용 중 적어도 일부의 데이터 구조의 내용을 변경하는 단계를 포함하는
    체크포인트 동작을 수행하는 단계를 더 포함하는 것인 데이터 트랜잭션 수행 방법.
  52. 제51항에 있어서,
    상기 적어도 하나의 기억 장치로부터 상기 하나 이상의 데이터 구조의 내용을 판독하는 단계와,
    상기 내용에 응답하여 상기 적어도 하나의 휘발성 메모리 내의 상기 하나 이상의 데이터 구조를 갱신하는 단계를
    포함하는 복구 동작을 수행하는 단계를 더 포함하는 것인 데이터 트랜잭션 수행 방법.
  53. 제52항에 있어서, 상기 복구 동작을 수행하는 단계는 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조의 내용 전부를 판독하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  54. 제52항에 있어서, 상기 복구 동작을 수행하는 단계는 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조 전부를 기록하는데 걸리는 시간보다 길지 않은 시간 내에 상기 체크포인트 동작을 수행한 이후에 기록된 상기 하나 이상의 데이터 구조 전부의 내용 전부를 판독하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  55. 제52항에 있어서, 상기 복구 동작을 수행하는 단계는, 개방 트랜잭션의 상태를 판정하는 단계와, 상기 개방 트랜잭션의 하나 이상의 클라이언트가 상기 상태를 질문하고 상기 개방 트랜잭션을 완결할 지 또는 중지할 지의 여부를 결정할 수 있게 하는 단계를 포함하는 것인 데이터 트랜잭션 수행 방법.
  56. 제38항에 있어서,
    상기 적어도 하나의 기억 장치 중 하나의 기억 장치를 상기 데이터 트랜잭션의 상태의 레코더로서 선택하는 단계와,
    트랜잭션 개시 동작을 상기 레코더에 제시하는 단계와,
    상기 적어도 하나의 기억 장치로부터, 상기 데이터 트랜잭션의 상기 상태를 표시하는 응답을 미리 결정된 시간 대기하는 단계와,
    상기 응답의 조건에 따라서, 하나 이상의 소프트-기록 동작을 상기 적어도 하나의 기억 장치에 제시하는 단계와,
    상기 응답의 조건에 따라서, 트랜잭션 완결 동작 또는 트랜잭션 중지 동작을 발송함으로써 상기 트랜잭션을 완결할지 또는 중지할지의 여부를 결정하는 단계를
    포함하는 트랜잭션 조정 동작을 수행하는 단계를 더 포함하는 것인 데이터 트랜잭션 수행 방법.
  57. 제38항에 있어서,
    상기 적어도 하나의 기억 장치로부터, 상기 데이터 트랜잭션의 상태를 표시하는 내용을 포함하는 상기 연속 데이터 블럭의 제1 세트를 판독하는 단계와,
    상기 연속 데이터 블럭의 제1 세트의 내용에 응답하여, 상기 연속 데이터 블럭의 제2 세트를 상기 적어도 하나의 기억 장치에 기록하고 상기 하나 이상의 데이터 구조의 세트를 상기 적어도 하나의 휘발성 메모리에 기억시키는 단계를
    포함하는 트랜잭션 완료 동작을 수행하는 단계를 더 포함하는 것인 데이터 트랜잭션 수행 방법.
  58. 삭제
  59. 삭제
  60. 삭제
  61. 연속 데이터 블럭을 수신하여 개개의 물리적 위치에 기억하도록 구성된 불휘발성 기억 장치와,
    상기 연속 데이터 블럭을, 적어도 몇 개의 데이터 블럭과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터와 함께, 상기 불휘발성 기억 장치에 전달하는 한편, 상기 기억 장치에 기록하도록 구성되는 제어 회로를
    포함하는 것인 전자 데이터 기억 장치.
  62. 삭제
  63. 불휘발성 기억 장치 내의 개개의 물리적 위치에 기억하기 위해 연속 데이터 블럭을 제공하는 단계와,
    상기 연속 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 각각마다, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터를 결정하는 단계와,
    상기 연속 데이터 블럭과 상기 하나 이상의 파라미터를 상기 기억 장치에 기억시키는 단계를 포함하는 것인 전자 데이터 기억 방법.
  64. 삭제
  65. 데이터 트랜잭션을 수행하기 위한 컴퓨터 판독 가능 기록 매체로서,
    컴퓨터에 의해서 판독될 때,
    1) 연속 데이터 블럭- 이 연속 데이터 블럭은 이들 중 적어도 몇 개의 데이터 블럭의 개개의 성질을 표시하는 하나 이상의 값을 구비하는 하나 이상의 데이터 구조를 구비함 -중 적어도 몇 개의 데이터 블럭의 각각과, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 적어도 하나의 파라미터와 함께, 데이터를 연속 데이터 블럭으로서 적어도 하나의 기억 장치에 수신하도록 상기 컴퓨터에 지시하고,
    2) 상기 적어도 하나의 파라미터에 응답하여 상기 데이터 트랜잭션을 완료하도록 상기 적어도 하나의 기억 장치 내의 상기 하나 이상의 값 중 적어도 하나의 값을 변경하도록 상기 컴퓨터에 지시하는
    명령들을 구비한 프로그램 명령이 기록된 컴퓨터 판독 가능 기록 매체.
  66. 데이터 트랜잭션을 수행하기 위한 컴퓨터 판독 가능 기록 매체로서,
    컴퓨터에 의해서 판독될 때,
    1) 불휘발성 기억 장치 내의 개개의 물리적 위치에 기억하기 위한 연속 데이터 블럭을 제공하도록 상기 컴퓨터에 지시하고,
    2) 상기 연속 데이터 블럭의 데이터 블럭 중 적어도 몇 개의 데이터 블럭의 각각마다, 상기 연속 데이터 블럭에서의 후속의 데이터 블럭의 물리적 위치를 표시하는 하나 이상의 파라미터를 결정하도록 상기 컴퓨터에 지시하며,
    3) 상기 연속 데이터 블럭과 상기 하나 이상의 파라미터를 상기 불휘발성 기억 장치에 기억하도록 상기 컴퓨터에 지시하는
    명령들을 구비한 프로그램 명령이 기록된 컴퓨터 판독 가능 기록 매체.
KR10-2001-0052936A 2000-08-30 2001-08-30 논리 디스크의 트랜잭션 지원 장치 및 방법 KR100420549B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/651,910 US6668304B1 (en) 2000-01-18 2000-08-30 Transaction support on logical disks
US09/651,910 2000-08-30

Publications (2)

Publication Number Publication Date
KR20020018158A KR20020018158A (ko) 2002-03-07
KR100420549B1 true KR100420549B1 (ko) 2004-03-02

Family

ID=24614740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0052936A KR100420549B1 (ko) 2000-08-30 2001-08-30 논리 디스크의 트랜잭션 지원 장치 및 방법

Country Status (5)

Country Link
JP (1) JP2002149454A (ko)
KR (1) KR100420549B1 (ko)
CN (1) CN1190741C (ko)
SG (1) SG99941A1 (ko)
TW (1) TW522303B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100898228B1 (ko) * 2002-09-16 2009-05-18 주식회사 케이티 테이블스페이스 자동할당 장치 및 그 방법
US8495131B2 (en) 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US11734393B2 (en) 2004-09-20 2023-08-22 Warner Bros. Entertainment Inc. Content distribution with renewable content protection
CN101248405B (zh) * 2005-04-29 2010-09-15 微软公司 使用并发域的多线程化
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
JP4740766B2 (ja) * 2006-02-27 2011-08-03 富士通株式会社 データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム
GB0616068D0 (en) * 2006-08-12 2006-09-20 Ibm Method,Apparatus And Computer Program For Transaction Recovery
KR101132389B1 (ko) * 2007-04-09 2012-04-03 엘지엔시스(주) 분산자료구조 기반 체크포인트메모리 구조화 장치 및 방법
JP5461436B2 (ja) 2008-02-11 2014-04-02 セキュアー コンテント ストレージ アソシエイション, リミテッド ライアビリティ カンパニー 簡易非自律ピアリング環境透かし、認証、及びバインド
CN102999434A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 一种内存管理方法及装置
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US10509658B2 (en) * 2012-07-06 2019-12-17 Nvidia Corporation System, method, and computer program product for simultaneously determining settings for a plurality of parameter variations
CN103578207B (zh) * 2012-07-20 2015-12-02 中国移动通信集团公司 一种数据处理方法、装置、系统及相关设备
CN103235747B (zh) * 2013-04-24 2016-12-28 曙光信息产业(北京)有限公司 元数据的恢复方法和系统
CN103605583B (zh) * 2013-07-08 2017-03-15 宇龙计算机通信科技(深圳)有限公司 文件恢复方法与系统
KR102593362B1 (ko) * 2016-04-27 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102694946B1 (ko) 2018-10-01 2024-08-14 에스케이하이닉스 주식회사 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 데이터베이스 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02310665A (ja) * 1989-05-25 1990-12-26 Toshiba Corp 分散トランザクション処理システム
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
JPH0619761A (ja) * 1992-07-06 1994-01-28 Fujitsu Ltd ファイル管理方式
JPH07175700A (ja) * 1993-12-20 1995-07-14 Fujitsu Ltd データベース管理方式
US5630047A (en) * 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
JPH0991183A (ja) * 1995-09-27 1997-04-04 Toshiba Corp データベースリカバリ装置
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
JPH1153235A (ja) * 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6202067B1 (en) * 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
JP2000163294A (ja) * 1998-11-30 2000-06-16 Nec Corp データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体

Also Published As

Publication number Publication date
SG99941A1 (en) 2003-11-27
CN1190741C (zh) 2005-02-23
JP2002149454A (ja) 2002-05-24
CN1365056A (zh) 2002-08-21
TW522303B (en) 2003-03-01
KR20020018158A (ko) 2002-03-07

Similar Documents

Publication Publication Date Title
KR100420549B1 (ko) 논리 디스크의 트랜잭션 지원 장치 및 방법
US6668304B1 (en) Transaction support on logical disks
US6311193B1 (en) Computer system
US7213116B2 (en) Method and apparatus for mirroring objects between storage systems
US6092087A (en) Log file optimization in a client/server computing system
US5535381A (en) Apparatus and method for copying and restoring disk files
US6360232B1 (en) Disaster recovery method for a removable media library
US5499367A (en) System for database integrity with multiple logs assigned to client subsets
US5267351A (en) Media storage and retrieval system
US5274807A (en) Method for reducing magnetic storage volume for computer disk image backup
CA2397127C (en) Administration of a differential backup system in a client-server environment
US5029125A (en) Method of reading and writing files on nonerasable storage media
US6539402B1 (en) Using periodic spaces of block ID to improve additional recovery
US7136977B2 (en) Backup acquisition method and disk array apparatus
US6701455B1 (en) Remote copy system with data integrity
US20040078641A1 (en) Operating system-independent file restore from disk image
JPS62145574A (ja) 消去不能サポ−トに情報を書込む方法
US8015155B2 (en) Non-disruptive backup copy in a database online reorganization environment
JP2002041368A (ja) 複製されたデータに独立してアクセスできるようにするためのデータプロセッシングの方法及び装置
US7051054B1 (en) Method and apparatus for emulating read/write file system on a write-once storage disk
US6477628B1 (en) Backup copy achieving improved efficiency by waiting until rewind/unload command for bulk data copy
US7693874B2 (en) Method and system for object linking
US20030101315A1 (en) Method for writing and reading data to and from a compact disc media
US6128699A (en) Method for providing read/write access while copying data between shared storage devices
US6029229A (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records

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
FPAY Annual fee payment

Payment date: 20120201

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130124

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee