KR101020016B1 - 실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법 - Google Patents

실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법 Download PDF

Info

Publication number
KR101020016B1
KR101020016B1 KR20097004024A KR20097004024A KR101020016B1 KR 101020016 B1 KR101020016 B1 KR 101020016B1 KR 20097004024 A KR20097004024 A KR 20097004024A KR 20097004024 A KR20097004024 A KR 20097004024A KR 101020016 B1 KR101020016 B1 KR 101020016B1
Authority
KR
South Korea
Prior art keywords
event
storage device
response
nae
executable program
Prior art date
Application number
KR20097004024A
Other languages
English (en)
Other versions
KR20090048607A (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 KR20090048607A publication Critical patent/KR20090048607A/ko
Application granted granted Critical
Publication of KR101020016B1 publication Critical patent/KR101020016B1/ko

Links

Images

Classifications

    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Holo Graphy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

제1 저장 수단을 갖는 컴퓨터 시스템 상에서 실행되는 프로그램을 복제하기 위한 방법, 컴퓨터 프로그램 또는 시스템으로서, 상기 방법은 비결정적(non-deterministic)인 하나의 실행 프로그램(복제될 실행 프로그램과 다를 수 있음)으로부터의 요청에 대응하는 이벤트를 식별하고 프로그램의 재생에 있어서 재현되어야 할 외부 세계의 상태를 복구 불가능하게 변경하는 무 중단 이벤트(NAE; Non Abortable Event)를 식별하는 단계를 포함하며, 이들 이벤트는 재생을 위해 즉시 전송되고 실행 프로그램은 전송이 확인응답될 때까지 차단된다. 다른 비결정적 이벤트에 대하여, 그것들은 로깅되고 실행 프로그램에 보내지며, 실행 프로그램은 로그가 완전히 차있거나 그리고/또는 2개의 NAE 사이의 타이머가 만료한 경우에만 차단된 채 남게 되고, 이 경우에 실행 프로그램의 차단 해제 이전에 복제를 준비하도록 예비 기계로의 로그 전송이 수행된다. 전술한 실시예의 옵션은 NAE 또는 NAE들을 로깅하는 캐시 메모리의 사용에 의해 그것이 완전히 찰 때까지 이벤트 로그 전송에 대한 애플리케이션의 차단을 제한한다. 이 옵션의 사용은 전송의 수와 프로그램이 차단된 채 유지되는 시간을 제한한다.

Description

실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법{A METHOD FOR IMPROVING TRANSFER OF EVENT LOGS FOR REPLICATION OF EXECUTING PROGRAMS}
본 발명은 일반적으로 운영 시스템의 모듈 또는 애플리케이션으로부터 실행 프로그램의 복제(replication)에 관한 것으로, 보다 상세하게는, 본 발명은 프로그램이 실행되는 일차 기계(primary machine)로부터 예비(standby) 컴퓨터 시스템으로 이벤트를 기록하고 그것들을 전송하는 프로세스를 최적화한다.
일차 기계 상에서 실행되고 있는 운영 시스템 또는 애플리케이션을 이차 기계 상에 전체 복제하는 것이 바람직할 수 있다. 복제는 프로그램 디버깅 목적을 위해 필요할 수 있다. 복제는 또한 시스템 관리 목적을 위해 시스템의 작업 부하(workload)의 균형을 맞추는데 필요할 수 있다. 또한, 복제는 일차 기계, 이차 기계, 일차 기계의 교체에 사용될 예비 기계의 장애로 인해 필요할 수도 있다. 복제를 사용하는 시스템 관리 및 장애 허용(FT; Fault Tolerant) 시스템은 성능을 위한 필요성을 갖는다. 이들 경우에는 심지어 즉각(instant) 복제를 필요로 한다.
복제는 비결정적(non deterministic) 결과를 생성하는 이벤트의 기록 및 재생에 의해 이루어진다. 결정적(deterministic) 결과를 생성하는 이벤트는 기록되지 않는데, 그것들은 예비 기계 상에서 프로그램의 단순한 재실행에 의해 재생성될 수 있기 때문이다. 외부 세계와 통신하는 서버 애플리케이션과 같이 통신 프로토콜을 구현하는 애플리케이션 또는 트랜잭션(transactional) 애플리케이션은 복제를 위한 이벤트 로깅(logging)에 대한 입력 정보 후보를 수신하고 출력 정보를 발생시킨다. 출력 이벤트는 로깅될 필요가 없으며, 그것들은 단지 예비 기계에서 애플리케이션을 재실행함으로써 재생된다. 대조적으로, 내부 또는 외부 입력 이벤트가 발생하면, 이벤트는 먼저 예비 시스템에 국부적으로 로깅되고 전송된다. 전송된 데이터는 능동-능동 FT 모델에서 바로 사용될 수 있거나, 또는 능동-수동 FT 모델에서의 추후 재생에 사용될 수 있다. 일차 시스템 상에 기록된 로깅된 이벤트 데이터의, 그것들이 재생될 예비 시스템으로의 전송은 안전하게 그리고 효율적으로 행해져야 한다.
로그에의 이벤트의 메인 스트림 기록 및 이 로그의 전송의 효율성을 향상시키는 것이, 장애 허용 시스템에서의 복제를 위해 항상 바람직하고 필요하다. 국부 저장 시스템 상에 이벤트 로그를 저장함으로써 일차 기계 상에 국부적으로 기록 및 재생을 구현할 수 있다고 가정하면, 장애 허용을 달성하기 위한 다음 단계는 모든 필요한 데이터(기록된 이벤트)를 예비 기계에 실시간으로 전송할 수 있어야 하는 것이다. 장애 허용 시스템에 대하여 복제 프로세스에서의 가장 비용이 드는 단계는 일차 시스템과 예비 시스템 사이의 이러한 정보 전송이며, 확인응답 전송이 이더넷(Ethernet) Gbit 링크를 통해 수십 마이크로초 정도 걸릴 때 국부적 로깅은 1Go/s 메모리 처리량 CPU에 대해 수 나노초 정도 걸린다.
그러나, 프로세스는 안전하게 행해져야 하며, 이러한 요건들은 장애가 발생할 때 예비 시스템이 일차 시스템의 장애로부터 아무 문제없이 복구할 수 있는 경우 달성된다. 운용 기계(operational machine)의 장애의 경우, 장애가 발생한 지점까지 애플리케이션을 재생하기 위해 모든 데이터를 이용할 수 있게 되어야 하고, 그 다음 애플리케이션은 외부 세계로부터의 눈에 보이는 방해 없이 예비 기계 상에서 다시 시작할 수 있다. 운용 기계 상의 애플리케이션의 실행 동안, 장애는 어느 때라도 일어날 수 있다. 특히, 장애는 로그 전송 자체에 강한 영향을 미칠 수 있으며, 결정적인 재생 데이터의 손실을 야기한다.
기존의 로그 전송 시스템은 데이터 무결성(data integrity)을 보장하지 못함으로써 빠르지만 안전하지 못한 것으로 설계되어 왔으며, 이러한 빠르지만 안전하지 못한 해결책은 FT 시스템에는 허용될 수 없다. 이러한 빠르지만 안전하지 못한 프로토콜의 예는, 멀티미디어 스트림 브로드캐스트 시스템에서 사용될 때, UDP 또는 멀티캐스트 IP이다.
다른 표준 해결책은 안전하지만 느리다. 하나의 예로는, 장애 허용을 보장하도록 동기 모드로 사용될 때 오라클(Oracle)에 의한 TCP-IP를 통한 타임즈텐 데이터베이스 트랜잭션(TimesTen Database Transaction) 복제 프로토콜이 있다. 마지막 기록된 이벤트의 손실의 부정적인 영향을 피하기 위해, 가능한 해결책, 소위 나머지 문서에서의 표준 해결책은, 임의의 이벤트를 운용 일차 기계 상의 애플리케이션에 의한 그것의 처리 전에 예비 기계에 전송하는 것이다. 그러면, 일차 기계는 그것들이 예비 기계에 전송된 후에만 비결정적 이벤트 또는 결과를 수신한다. 이 표 준 해결책은 애플리케이션에 이벤트의 로깅 및 전송과 그에 이어지는 확인응답의 전송 및 수신에 대응하는 레이턴시(latency)를 부여한다. 이 표준 해결책은 애플리케이션 실행에 있어서의 다수의 직렬화 점(serialization point) 또는 빈번하게 전송되어야 할 대량의 데이터를 부과한다. 각각의 입력은 애플리케이션에 제공되기 전에 지연된다.
예를 들어 장애 허용 시스템에서 애플리케이션을 복제할 때 적용가능한 데이터 무결성을 보유하는 동시에 이벤트 로깅 및 전송의 효율성을 향상시키기 위한 필요성이 있다.
본 발명의 목적은 예를 들어 장애 허용 시스템에서 복제 동안의 이들 처리의 효율성을 향상시킴으로써 애플리케이션의 예를 들어 프로그램의 실행 동안 발생하는 이벤트의 로그 및 전송 중의 대기 시간을 감소시키는 것이다.
본 해결책은 무 중단 이벤트(NAE; Non Abortable Event)의 특징화를 포함한다. 무 중단 이벤트는 비복귀점(non return point)을 구성하는 외부 이벤트(비결정적 출력 이벤트)이다. 무 중단 이벤트는, 일차 기계 자체는 원상 복귀(rollback)될 수 있다 해도 외부 세계의 상태를 원상 복귀될 수 없도록 복구 불가능하게(irremediably) 변경한다. 본 해결책의 하나의 추가적인 특징에서는, NAE 또는 일부 NAE를 저장하는데 '기록 캐시(write cache)'가 사용된다.
제1 저장 수단을 갖는 컴퓨터 시스템 상에서 실행되는 프로그램을 복제하기 위해 상기 컴퓨터 시스템 상에서 실행하는 방법으로서, 상기 컴퓨터 시스템으로부터 하나의 수신지(destination)에 액세스 가능하고, 상기 방법은,
- 비결정적 이벤트가 발생하는 경우, 상기 이벤트에 대응하는 실행 프로그램으로부터의 요청을 차단하는 단계;
- 상기 비결정적 이벤트가 상기 복제될 실행 프로그램에 대한 입력인 메시지에 대응하는지 아니면 출력 메시지를 보내기 위한 실행 프로그램으로부터의 요청에 대응하는지 테스트하는 단계(소위 무 중단 이벤트(Non Abortable Event) 또는 NAE);
- NAE 통지가 발생하지 않는 경우, 상기 제1 저장 수단에 상기 이벤트를 로깅하고, 상기 이벤트를 상기 복제될 실행 프로그램에 전달하고, 상기 입력 요청을 차단 해제(unblock)하는 단계;
- NAE 통지가 발생하는 경우, 상기 수신지에 상기 제1 저장 수단 콘텐츠를 전송하고, 확인응답을 기다리고, 확인응답이 수신되면 상기 출력 요청을 차단 해제하고 첫 번째 단계로 진행하는 단계;
를 포함하는 방법인 청구항 1에 따르면, 본 발명의 목적이 달성된다.
청구항 1에 있어서, 상기 로깅 단계 후에,
상기 제1 저장 수단이 완전히 찬(full) 경우, 상기 수신지에 상기 제1 저장 수단 콘텐츠를 전송하고, 확인응답을 기다리고, 확인응답이 수신되면 상기 실행 프로그램 요청을 차단 해제하고 첫 번째 단계로 진행하는 단계를 더 포함하는 방법인 청구항 2에 따르면, 본 발명의 목적이 달성된다.
청구항 1 또는 청구항 2에 있어서, 상기 로깅 단계 후에,
NAE 통지의 각각의 발생시 리셋되는 타이머가 만료된 경우, 상기 수신지에 상기 제1 저장 수단 콘텐츠를 전송하고, 확인응답을 기다리고, 확인응답이 수신되면 상기 입력 요청을 차단 해제하고 첫 번째 단계로 진행하는 단계를 더 포함하는 방법인 청구항 3에 따르면, 본 발명의 목적이 달성된다.
청구항 1 내지 청구항 3 중 어느 한 항에 있어서, NAE 통지가 발생하는 경우, 다음 대체 단계, 즉
- 제2 저장 수단에 상기 NAE를 기록하고 다음 단계들, 즉
- 상기 실행 프로그램 요청을 차단 해제하고 첫 번째 단계로 진행하는 단계; 및 병행으로
- 상기 수신지에 상기 제1 저장 수단 콘텐츠를 전송하고, 확인응답을 기다리고, 확인응답이 수신되면 상기 요청을 수행하고, 상기 제2 저장 수단으로부터 상기 NAE를 삭제하고, 첫 번째 단계로 진행하는 단계
를 병행하여 실행하는 단계;
가 실행되는 것인 방법인 청구항 4에 따르면, 본 발명의 목적이 달성된다.
청구항 4에 있어서, NAE 통지가 발생하는 경우,
상기 제2 저장 수단이 완전히 찬 경우, 삭제 단계가 실행되고 상기 제2 저장 수단이 더 이상 완전히 차지 않게 될 때까지 상기 제2 저장 수단이 완전히 차 있는지 재테스트(re-test)하는 단계를 더 포함하는 방법인 청구항 5에 따르면, 본 발명의 목적이 달성된다.
청구항 1 내지 청구항 5 중 어느 한 항에 있어서, NAE 통지가 발생하는 경우, 다음 대체 단계들, 즉
- 상기 제2 저장 수단이 완전히 차지 않은 경우, 제2 저장 수단에 상기 NAE를 기록하고, 상기 실행 프로그램 요청을 차단 해제하고, 첫 번째 단계로 진행하는 단계;
- 상기 제2 저장 수단이 완전히 찬 경우, 상기 제2 저장 수단에서의 모든 NAE 및 마지막 NAE에 대하여, 상기 수신지에 이 NAE까지의 상기 제1 저장 수단 콘텐츠를 전송하고, 확인응답을 기다리고, 확인응답이 수신되면 상기 요청을 수행하고, 상기 제2 저장 수단으로부터 상기 NAE를 삭제하고, 첫 번째 단계로 진행하는 단계;
가 실행되는 것인 방법인 청구항 6에 따르면, 본 발명의 목적이 달성된다.
청구항 1 내지 청구항 6 중 어느 한 항에 있어서, 제1 저장 수단에서의 상기 로깅 단계는 FIFO에서 수행되는 것인 방법인 청구항 7에 따르면, 본 발명의 목적이 달성된다.
청구항 4 내지 청구항 7 중 어느 한 항에 있어서, 제2 저장 수단에서의 상기 기록 단계는 캐시 메모리에서 수행되는 것인 방법인 청구항 8에 따르면, 본 발명의 목적이 달성된다.
청구항 6에 있어서, 제2 저장 수단에서의 상기 기록 단계는 하나보다 많은 엔트리(entry)를 갖는 캐시 메모리에서 수행되는 것인 방법인 청구항 9에 따르면, 본 발명의 목적이 달성된다.
컴퓨터 프로그램 제품으로서, 프로그램이 컴퓨터 상에서 실행될 때 청구항 1 내지 청구항 9 중 어느 한 항에 따른 방법의 단계들을 실행하는 프로그래밍 코드 명령들을 포함하는 컴퓨터 프로그램 제품인 청구항 10에 따르면, 본 발명의 목적이 달성된다.
시스템으로서, 청구항 1 내지 청구항 9 중 어느 한 항에 따른 방법을 수행하도록 적응된 수단들을 포함하는 시스템인 청구항 11에 따르면, 본 발명의 목적이 달성된다.
본 발명의 해결책은 부가의 이점들을 준다:
- 본 해결책을 이용하면, 출력 이벤트의 처리가 증가되지만 더 낮은 측정치에 있더라도 애플리케이션에의 입력의 수신시 더 이상의 대기 시간이 없다. 애플리케이션은 통상적으로 외부 입력보다 10 내지 100 배 이상의 내부 입력을 수신하지만, 애플리케이션은 외부 입력 이벤트와 동일한 외부 출력의 발생을 발생시킨다. 따라서, 외부 이벤트의 처리 시간에 약간의 영향을 미침으로써, 통상적으로 표준 해결책을 이용한 경우보다 100배 더 적게 늦출 수 있다. 전송 프로토콜 특성의 변경 없이 그리고 단순히 로그가 내부 또는 외부 입력 이벤트의 발생이 아닌 외부 출력 이벤트의 발생시 전송된다면, 오버헤드가 상당히 감소된다.
- 표준 해결책을 이용한 경우와 같이, 본 발명의 해결책을 구현하는 것은 애플리케이션에 있어서의 어떠한 변경도 수반하지 않는다.
- 본 발명의 해결책을 이용하며 전송 프로토콜은 변경되지 않는 채 유지된다. 본 발명의 해결책을 구현하는 FT 시스템은 데이터 무결성을 보장하는 TCP와 같은 표준 전송 프로토콜을 사용할 수 있다.
- 마지막으로, 본 발명의 해결책의 강력한 이점은 애플리케이션으로부터의 출력 요청의 차단 해제(unblocking)를 가능하게 하는 선택적 '기록 캐시'(지연(deferred) 기록 전략)를 이용하여 업그레이드할 수 있는 능력이다. 이 옵션을 활성화하면, 표준 해결책을 이용한 경우의 로그 사이즈에 필적하는 증가된 저장 용량을 필요로 하게 된다.
- 멀티cpu 일차 시스템의 경우, 본 발명의 해결책은 전송의 완전 병행(full parallelism)을 가능하게 하며, 한 프로세서가 애플리케이션을 늦추는 일 없이 로그 전송에 전용될 수 있다. 이와 대조적으로, 전송 및 이벤트 전달의 직렬화(serialization)로 인해 표준 해결책을 이용하는 경우에는, 전용 CPU가 성능을 향상시키는데 무용하다.
본 발명의 사용의 일반화:
- 복제 동안 이벤트 로그의 전송 성능을 향상시키는 본 발명의 해결책은 복제가 필요한 임의의 환경에 적용될 수 있다. 성능에 매우 민감한 것으로서 장애 허용 시스템이 예로서 취해진다. 본 발명은 능동-능동 모델을 적용하는 장애 허용 시스템, 즉 둘 다 능동 모드에 있는 일차 및 예비 기계를 갖는 장애 허용 시스템의 경우 더 유용하다. 그러나, 본 발명의 이벤트 로그의 전송은 능동-수동 모델을 구현하는 장애 허용 시스템, 즉 능동 모드에 있는 일차 기계 및 수동 모드에 있는 예비 기계를 갖는 장애 허용 시스템에서 수행될 수 있다. 이벤트 로그 데이터는 하나의 다른 기계에서의 추후 재생을 위해 이벤트 로그 데이터를 저장하는 원격 기계를 향하여 일차 기계에 의해 보내질 수 있으며, 이 원격 기계는 이벤트 로그 데이터의 수신을 일차 기계에 확인응답한다. 이러한 구성은, 예를 들어 법에 의해 요구되는 경우, 파일 보관(archiving) 목적을 위해 사용될 수 있다.
- 본 발명은 이의 사용이 성능에 덜 민감하더라도 디버깅 목적을 위해 애플리케이션을 복제하는 데에도 구현될 수 있다.
- 마지막으로, 본 문서에서 취한 애플리케이션의 복제의 예는 임의의 유형의 애플리케이션을 포함하도록 충분히 일반적인 것이다. 복제는 가상화(virtualization)에 대한 해결책이고, 가상화의 수많은 모델이 존재한다. 일부 모델에 있어서, 사용자 애플리케이션이 가상화되고, 따라서 복제될 수 있다. 다른 모델에 있어서, 사용자 애플리케이션을 운영하는 하이퍼바이저(hypervisor) 자체가 가상화되고, 따라서 복제될 수 있다. 마지막으로, 가상 기계도 또한 가상화될 수 있고, 이 경우에 전체 가상 기계가 복제될 수 있다. 모든 경우에, 본 발명의 해결책의 향상은 이벤트 로그의 전송에 적용될 수 있다.
도 1은 이벤트 로그 전송에 대한 종래 기술의 표준 해결책을 구현하는 FT 시스템을 도시한다.
도 2는 바람직한 실시예에 따른 이벤트 로그 전송에 대한 해결책을 구현하는 FT 모델을 도시하며, 전송은 각각의 외부 출력 이벤트에 의해 트리거링된다.
도 3은 외부 출력 커밋(commit)을 지연하도록 기록 캐시를 사용하는 선택적 프로세스의 일차 기계와 예비 기계 사이의 데이터 흐름을 도시한다.
도 4는 본 발명의 바람직한 실시예에 따른 로그 전송 방법의 일반적인 흐름 도이다.
도 5는 하나의 NAE를 포함하는 선택적 기록 캐시 메모리가 사용되는 본 발명의 바람직한 실시예에 따른 로그 전송 방법의 일반적인 흐름도이다.
도 6은 하나보다 많은 NAE를 포함하는 선택적 기록 캐시 메모리가 사용되는 본 발명의 바람직한 실시예에 따른 로그 전송 방법의 일반적인 흐름도이다.
실행 프로그램의 복제는 프로그램이 실행되고 있는 컴퓨터 시스템에서의 일 시점에서 프로그램의 실행에 관한 로깅 정보로 이루어진다. 그 다음, 로깅된 정보는 하나의 다른 컴퓨터 시스템에서 그 시점에서의 프로그램을 재생하고 프로그램 환경을 재현하도록 그 다른 컴퓨터 시스템에서 사용된다. 이 복제는 장애 허용 시스템에 대하여 행해지며, 그 목적은 프로그램의 실행을 언제라도 재시작할 준비가 된 예비 기계를 보유하는 것이다. 복제는 또한 파일보관 목적을 위해 또는 프로그램을 위해 사용될 수 있다. 복제는 일반적으로 나머지 명세서에서 취한 최선의 예인 전체 애플리케이션에 적용된다. 애플리케이션이 컴퓨터 상에서 실행될 때, 실행 프로그램은 애플리케이션 자체로부터의 프로그램이거나 애플리케이션을 실행하는 운영 시스템 모듈과 같은 다른 프로그램일 수 있다는 점을 유의한다.
로깅된 정보는 일련의 이벤트이며, 이벤트는 애플리케이션이 실행되고 있는 컴퓨터 시스템에서 운영하는 운영 시스템의 모듈 또는 애플리케이션의 모듈에 의해 보내지거나 수신된다. 결정적 이벤트는 로깅할 필요가 없는데, 그것들은 애플리케이션을 단순히 재실행함으로써 재생될 수 있기 때문이다. 비결정적 이벤트는 로깅 되어야 하는데, 그것들은 애플리케이션의 재생 동안 재주입될 것이기 때문이다. 목적은 이벤트의 로깅 동안 애플리케이션의 실행에 최소한의 영향을 미치는 것이다. 도면들은, 장애 허용 시스템에서의 복제에 대하여, 즉 로깅된 이벤트가 즉각 재생을 위해 예비 기계에 전송될 때, 이벤트를 로깅하고 그것들을 전송하는 방법을 도시한다.
도 1은, 자신의 다양한 시스템 부품 간의 다이얼로그를 이용하여, 이벤트 로그 전송에 대하여 종래 기술의 "안전하고 느린" 표준 해결책을 구현하는 FT 시스템을 도시한다. 이 해결책에서는, 이벤트 로그 전송이 각각의 입력 이벤트에 의해 트리거되며, 즉 애플리케이션에 의해 수신되며 복제 프로그램에 의해 로깅되는 각각의 비결정적 이벤트에 대한 것으로, 복제 프로그램은 일차 기계 상에의 애플리케이션의 기록과 예비 기계 상에의 이 애플리케이션의 재생을 수행한다. 도 1에서, 운용 기계, 즉 일차 기계(110)는 사용자 공간(135)에서 애플리케이션(145)을 실행한다. 일차 기계에서의 애플리케이션 기록을 수행하는 복제 프로그램(140)은 시스템의 커널(kernel) 공간(130)에서 동작한다. 외부 세계, 네트워크(100)로부터 또는 커널의 하나의 다른 프로세스로부터의 내부 입력(155)으로서 애플리케이션에 대하여 입력(155)이 수신되면, 그것은 표준 해결책을 구현하는 복제 프로그램(140)에 의해 캡쳐된다. 복제 프로그램의 기록 부분은 캡쳐된 이벤트의 로그를 생성하며, 이는 여기에서는 상세하게 설명되지 않지만 복제의 재생 단계에서 그 재생을 위한 이벤트를 기록하기 위한 임의의 효율적인 방식에 의해 수행될 수 있다. 복제 프로그램은 예비 기계(120)의 커널 공간에서 동작하는 복제 프로그램(140)의 재생 부분 에 캡쳐된 입력 이벤트를 이벤트 로그로서 보낸다(160). 그 다음, 예비 기계에서의 복제 프로그램의 재생 부분은 이벤트 로그 전송의 양호한 수신을 확인응답한다(165). 확인응답의 수신시, 일차 기계에서의 복제 프로그램의 기록 부분은 애플리케이션에 그 이벤트를 전달할 수 있다(170). 동시에, 이는 장해 허용 시스템을 설명하는 것이므로, 예비 기계에서 동작하는 복제 프로그램의 재생 부분은 장애의 경우 그것을 업데이트된 상태로 유지하기 위하여 예비 기계에서 동작하는 애플리케이션에 이벤트를 전달한다(175). 본 문서에서 곧 언급하는 바와 같이, 일차 기계 상에서 실행되는 애플리케이션은, 입력을 캡쳐하고 그것을 로깅하고 이벤트를 전달하고 예비 기계에 의한 양호한 수신의 확인응답을 수신하기 위한 지연을 포함하는 레이턴시 후에, 그 입력 이벤트를 수신한다. 이러한 표준 해결책이 애플리케이션의 복제가 필요한 임의의 상황에 대하여 사용될 수 있다 해도, 장애 허용 시스템의 경우 2개 애플리케이션이 실시간으로 동조하여(in phase) 유지되어야 하며, 이는 전송(160, 165)을 위해 일차 기계와 예비 기계 사이에 고속 통신이 바람직하다는 것을 의미한다. 이들은 도 1에 도시된 바와 같은 광섬유 접속와 같이 표준 네트워크(100)로부터의 다양한 물리적 링크의 사용을 포함할 수 있다.
이러한 표준 해결책의 문제점은, 외부 소스 아니면 내부 소스로부터일 각각의 매 이벤트 발생시에 이제 부과되는 로그 전송 및 확인응답 프로토콜의 레이턴시에 있다. 고속 상호접속 네트워크를 이용하더라도, 이 레이턴시는 수 마이크로초의 범위(잘해야) 내에 있을 것이며, 이는 내부 이벤트의 경우 나노초의 초기 기간에 비교하면 엄청난 것이다. 이벤트 로깅의 레이턴시는 애플리케이션에 대한 입력 데 이터의 소스에 위치된다. 그것은 먼저 애플리케이션에 대한 외부 데이터의 속도를 늦춘다. 또한, 직렬화 점에서 매우 빈번한 내부 비결정적 이벤트를 변환함으로써 운영 시스템을 매우 느리게 한다.
도 2는 바람직한 실시예에 따른 이벤트 로그 전송에 대한 해결책을 구현하는 FT 모델을 도시한다. 도 2의 장애 허용 시스템에 있어서, 도 1의 복제 프로그램은 바람직한 실시예에 따른 본 발명을 구현하도록 일차 기계(110) 및 예비 기계(120)에 대해 변형될 수 있다(240). 외부 클라이언트에 접속된 트랜잭션 시스템의 장애 허용에 결정적 재생을 적용하면(이들 원격 통신 피어가 원상 복귀될 수 없다고 가정함), 주목할 중요한 점은 메시지가 외부 세계에 보내지지 않는 한 복제물의 상이한(diverging) 거동이 허용될 수 있다는 점이다. 병행(concurrent) 처리에 기초한 장애 허용 시스템에 있어서, 그것은 결정적 재생에 의해 외부 메시지가 보내진 순간에 복제물의 상태가 원본과 동일하여야 함을 의미한다. 장애가 발생하는 경우, 마지막 외부 메시지 전송 후의 모든 비결정적 이벤트는 무시될 수 있고, 복제물은 여전히 외부 세계와 일치할 수 있다. 결과적으로, 외부 메시지의 출력은 비복귀점을 구성한다. 외부 메시지를 보내기 전에, 예비 기계가 그 시점까지의 비결정적 이벤트의 로그의 수신을 확인응답하게 함으로써, 예비 기계가 그 상태에 도달할 수 있다는 것을 보장하여야 한다. 이러한 개념을, 원상 복귀할 수 없는 것으로(서버만 원상 복귀할 수 있음) 외부 세계의 상태를 복구 불가능하게 변경할 수 있는 이벤트인 "무중단 이벤트(NAE)"로 일반화하자. 또한, 예비 복구에서 안전하게 무시될 수 있는 모든 비결정적 이벤트의 리스트로서 “이벤트의 중단 시퀀스”(ASE; Aortable Sequence of Events)로도 정의할 수 있다. 그것들은 전부 마지막 NAE에 이어지는 이벤트이다. 본래 출력 메시지인 NAE는 이벤트 로그의 일부가 아니며, 출력 콘텐츠는 이미 재생 시스템에 의해 결정된다. 그것은 오히려 복구 가능성(recoverability)을 보장하기 위해 이벤트 로그가 진행되기 전에 예비 기계에 커밋(commit)되어야 함을 표시하는 신호이다. 외부 세계와 상호작용하는 트랜잭션 애플리케이션의 일관된(consistent) 복구는, 비결정적 이벤트 발생 자체보다는 결정적인 로그 데이터가 무중단 이벤트의 시점에서 커밋되었다는 사실에 따라 좌우된다.
일차 기계의 사용자 공간에서 실행되는 애플리케이션(145)에 의해 수신된 2개 입력(150, 155)은 복제 프로그램(140)에 의해 캡쳐되지 않고 애플리케이션에 도달한다. 대조적으로, 일차 기계(140) 상에서 동작하는 복제 프로그램의 기록 부분은 NAE인, 애플리케이션으로부터 보내진 출력(230)을 캡쳐한다. 그 다음, 복제 프로그램의 기록 부분은 캡쳐된 이벤트의 로그를 생성하며, 이는 여기에서는 상세하게 설명되지 않지만 복제의 재생 단계에서 그 재생을 위해 이벤트를 기록할 수 있는 임의의 효율적인 방식에 의해 수행될 수 있다. 복제 프로그램은 예비 기계(120)의 커널 공간에서 동작하는 복제 프로그램(240)의 재생 부분에 신호를 보낸다(260). 그 다음, 예비 기계에서의 복제 프로그램의 재생 부분은 이벤트 로그 전송의 양호한 수신을 확인응답한다(265). 확인응답의 수신시, 일차 기계에서의 복제 프로그램의 기록 부분은 외부 세계, 이 경우에는 네트워크(100)에 애플리케이션의 명목으로 출력을 전달할 수 있다(240). 동시에, 이는 장애 허용 시스템을 설명하는 것이므로, 예비 기계에서 동작하는 복제 프로그램의 재생 부분은 장애의 경우 그것을 업데이트된 상태로 유지하기 위하여 예비 기계에서 동작하는 애플리케이션에 NAE 이벤트를 전달한다(175). 애플리케이션에 의해 발행된 출력은 실제로 캡쳐, 로깅, 이벤트의 전달, 및 예비 기계에 의한 양호한 수신의 확인응답을 수신하기 위한 지연을 포함한 레이턴시 후에 보내진다. 이러한 신규 방법으로, 로그 전송 직렬화 점은 임의의 NDE(내부 또는 외부) 입력에서 NAE의 출력으로만 이동된다.
이 해결책을 이용하면, 어떤 상황에서는, 일부 이벤트의 전체 시퀀스가 복구된 애플리케이션의 일관성에 영향을 미치는 일 없이 무시될 수 있기 때문에, 비결정적 이벤트의 결과는 그것들을 예비 기계에 보내기 전에 애플리케이션에 전달될 수 있다. 결론은, 비결정적 이벤트의 시퀀스가 하나씩이 아니라 "배치(batch)"로 보내질 수 있고 그리하여 전송 레이턴시의 영향을 감소시킬 수 있다는 것이다. 이벤트 로그 전송은 각각의 외부 출력 이벤트에 의해 트리거된다. 이 방법은, 입력 동작을 가속화하고 물리적 기록 동작을 지연하는 캐싱(caching)과 유사한 전략을 적용함으로써, 이벤트 로그 전송으로 인한 내부 직렬화 점을 제거한다. 로그 전송은 직렬화되는 대신에 애플리케이션의 정상적인 실행과 병행하여 실행할 수 있으며, 로그 전송 레이턴시의 영향을 훨씬 많이 감소시킬 수 있다.
도 3은 외부 출력 커밋을 지연하도록 기록 캐시를 사용하는 선택적 프로세스의 일차 기계와 예비 기계 사이의 데이터 흐름을 도시한다. 본 해결책의 이러한 옵션은 애플리케이션의 실행과 이벤트 로그 전송의 병행화를 도입함으로써 추가적인 수준의 최적화를 가져다준다. NAE의 발생은 2단계로 분류된다. 제1 단계는 NAE의 통지(notification)이며, NAE 통지에서 상태가 도달할 때까지 예비 기계에 이벤트 로그 플러시(flush)의 동작을 트리거한다. 제2 단계는 NAE 물리적 커밋이며, 이는 예비 기계로부터의 확인응답이 수신될 때까지 버퍼(buffer) 및 지연된다. NAE에 대한 처리는 다음과 같다:
- 운용 기계(110)에서의 복제 프로그램은 막 시작하려고 하는 NAE(아직 커밋되지 않았음), 즉 NAE 통지(320)를 인터셉트(intercept)한다.
- 커밋되는 대신에, NAE가 임시 버퍼, NAE 캐시에 저장되고(330), NAE를 포스트(post)한 모듈에 확인응답됨으로써, 애플리케이션 또는 운영 시스템이 차단되지 않는다.
- 마지막 NAE까지의 캐시의 NAE에 더하여 운용 기계 상의 FIFO에서의 로깅된 ASE를 포함한 모든 로그 이벤트가 예비 기계(120)에 전송된다(335).
- 예비 기계로부터 확인응답을 수신하면(340), NAE는 물리적으로 커밋되고(345), 캐시로부터 삭제된다.
- 이벤트의 ASE 로그(390)는 로그 전송(335) 후에 예비 기계 상에서 재생된다.
외부 데이터 출력에서 로그를 커밋하는 것은 복구의 일관성을 보장하기에 충분하며, ASE의 버스트로 이벤트 로그의 전송을 가능하게 한다. 이벤트 로그 전송 확인응답의 수신까지 NAE의 전송을 지연하는 것은, 이벤트 로그 및 운용 애플리케이션의 부가 실행에 대하여 전송이 병행화될 수 있게 해준다. NAE 지연(350)은 로그 레이턴시(355) + 확인응답 레이턴시(360)를 포함한다. 재생 지연(370)은 ASE 레 이턴시(375) + 로그 레이턴시(380)를 포함한다. 이러한 총 레이턴시는 ASE에 포함된 여러 이벤트의 일 세트마다 한번씩만 초래되는 반면에, 종래 기술에서 제안된 방법에서는, 동등한 레이턴시가 각각의 매 비결정적 이벤트마다 초래된다. 다수의 이벤트에 걸쳐 오버헤드(overhead)를 분할(amortizing)함으로써, 제안된 시스템은 고성능을 달성한다.
도 4는 본 발명의 바람직한 실시예에 따른 로그 전송 방법의 일반적인 흐름도이다. 이 방법은 운용 기계에서 실행되는 프로그램 세트(예를 들어 애플리케이션으로부터 또는 그것이 운영 시스템으로부터의 모듈일 수 있음)의 복제 프로세스의 일부로서 운용 기계 내의 프로그램으로서 구현된다. 이 복제 프로세스는 애플리케이션 프로그램의 실행에 대한 정보를 로깅하는 것과 예비 기계에서의 애플리케이션의 재생을 위해 그 예비 기계에 이 정보를 전송하는 것으로 구성된다. 바람직한 실시예는 운용 기계와 예비 기계에서의 병행 처리를 유지하는 장애 허용 시스템에서 설명된다. 로깅 및 전송된 정보는 실행 프로그램들 사이에 발생하는 '이벤트'로 구성된다. 이들 이벤트는 실행 프로그램의 입력 또는 출력으로 운용 기계에 대하여 내부적이거나 외부적일 수 있다. 결정적 이벤트에 대해 요구되는 처리는 없으며, 결정적 이벤트 정보는 예비 기계에 로깅 및 전송될 필요가 없는데, 애플리케이션의 단순한 실행에 의해 예비 기계에서 재생될 것이기 때문이다. 비결정적 이벤트는 잠재적으로 하나보다 많은 결과적인 애플리케이션 상태를 초래할 수 있고, 그리하여 이 이벤트는 이 정보로 재생을 위해 예비 기계에 로깅 및 전송되어야 한다. 제1 단계는 애플리케이션의 실행 동안 무중단 이벤트(NAE) 통지 또는 비결정적 이벤 트(NDE)(400)를 기다리는 단계로 구성된다. 비결정적 이벤트를 찾기 위한 테스트가 실행되고(410), 이러한 테스트는 어느 것이 비결정적 이벤트인지의 질의 시간 동안 시스템 호출과 같은 일부 유형의 이벤트를 선택함으로써 구현된다. 그 다음, 테스트는 소위 NAE 통지가 발생되었는지 체크하도록 실행된다(420). 운용 기계로부터 출력 메시지를 보내라는 실행 모듈에 의한 요청과 같은 NAE의 발생은 외부 세계의 상태의 불가역적(irreversible) 변경이 존재할 것임을 의미한다. 이 경우에, 이 상황을 복제해야 할 필요가 있고, NAE 통지까지 이미 로깅된 이벤트는 즉시 예비 기계에 보내져야 한다. NAE의 통지가 없는 경우(테스트(410)에서의 대답 NO) 그리고 비결정적 이벤트가 발생한다는 통지가 없는 경우, 비결정적 이벤트는 예비 기계 복구에서 안전하게 무시될 수 있는데, 계속되고 있는 외부 세계 상태의 불가역적 변경이 없기 때문이다. 이 이벤트는 운용 기계에 로깅되어야 한다. 이 비결정적 이벤트는 애플리케이션에 입력 메시지에 대한 요청을 보내는 하나의 실행 프로그램에 대응할 수 있다. 입력 메시지는 차단된다(425). 이벤트(NAE가 통지된 직후 발생하면 ASE를 시작함)는 로그 FIFO가 완전히 차(full) 있지 않은 경우(테스트(460)에서의 대답 No) 바람직하게 FIFO에 로깅되고(480), 선택적으로, 바람직하게 로그 플러시 타이머로 설정된 타임아웃(timeout)이 만료되지 않은 경우(테스트(470)에서의 대답 No), 이벤트는 애플리케이션에 전달되고(490) 요청 모듈은 운용 기계에서 차단 해제된다(495). FIFO가 완전히 차 있는 경우(테스트(460)에서의 대답 Yes), 로깅은 불가능하고, 이벤트 정보를 풀어놓기를 원하지 않는다. 타임아웃의 사용은 선택적이고, NAE가 오랫동안 발생하지 않는 경우, 전환(switchover) 시간이 작다는 것을 보장하도록 로그 플러시(430)를 강행하는 것이 바람직할 수 있다. 로그 플러시 타이머라 불리는 타이머는 후속 NAE들 사이의 시간 간격을 추적한다. 타이머는 새로운 NAE가 발생할 때마다 리셋되고, 이는 도면들을 복잡하게 하는 것을 피하기 위해 전반적인 알고리즘에서는 언급되지 않는다. 두 개의 NAE들 사이의 타임아웃을 카운트하는 임의의 방식이 구현될 수 있으며 본 발명의 방법과 동일한 이점을 갖는다는 점을 유의한다. 둘 다의 경우(테스트(460)에서의 대답 Yes 또는 테스트(470)에서의 대답 Yes), 이벤트 로그 정보는 예비 기계에 전송되어야 한다.
NAE 통지가 발생하는 경우(테스트(420)에서의 대답 Yes), 이는 애플리케이션 외부의 출력 메시지를 보내기 위한 요청이 실행 모듈에 의해 수행된다는 것을 의미한다. 이 요청은 차단된다(427). NAE의 발생은 애플리케이션 상태의 일부분이 외부 세계에 알려져야 함을 의미하고, 이 경우에 NAE 통지까지 FIFO에서의 로깅된 이벤트 기록은 예비 기계에 전송되어야 한다.
NAE 통지가 발생하는 경우(테스트(420)에서의 대답 Yes) 또는 NAE가 아닌 비결정적 이벤트가 운용 기계에 로깅될 수 없는 경우(테스트(460)에서의 대답 Yes 또는 테스트(470)에서의 대답 Yes), 로그의 콘텐츠는 예비 기계에 전송된다(430). 복제 프로세스는 전송의 확인응답이 수신될 때까지(테스트(450)에서의 대답 No(440)) 운용 기계에서 기다린다. 확인응답이 수신되면(테스트(450)에서의 대답 Yes), 출력(NAE 통지) 또는 입력(임의의 NAE 통지 없는 비결정적 이벤트)에 대한 요청이 운용 기계에서 차단 해제되고 실행이 진행된다. 로그가 완전히 차 있거나 로그 플러시 타이머가 만료된 경우 로그 전송(430)은 2개 NAE들 사이의 전체 ASE 시퀀스에 대한 것임을 유의한다.
도 5는 하나의 NAE를 포함하는 선택적인 기록 캐시 메모리가 사용되는 본 발명의 바람직한 실시예에 따른 로그 전송 방법의 일반적인 흐름도이다. 복제 프로세스의 일부로서, 운용 기계에서의 프로그램으로서 구현되는 방법은, 운용 기계에서의 기록 캐시를 사용하여 NAE 통지를 캐시에 저장하면서, NAE를 포스트한 모듈에 확인응답함으로써 운용 기계 상에서의 실행 차단을 피한다. 그 다음, 캐시가 하나의 NAE로 완전히 차고 새로운 NAE가 도달하는 경우, 이벤트 로그 전송은 NAE까지 수행되며, 프로세스의 차단 해제는 전송 확인응답의 수신까지 출력이 차단되도록 요청한 것이다. 동시에, NAE 물리적 커밋이 수행되고 캐시가 비어진다.
도 5는 선택적 기록 캐시의 사용이 추가된 바람직한 실시예의 방법의 흐름도이다. 이 방법은 복제 프로세스의 일부로서 운용 기계에서의 프로그램으로서 구현되며, 예비 기계에서의 애플리케이션의 재생을 위해 예비 기계에 애플리케이션의 실행에 대한 정보를 전송한다. 기록 캐시 옵션은 프로그램의 맞춤화(customization) 동안 선택될 수 있다. 이 경우에, 운용 시스템은 캐시가 완전히 찰 때까지 NAE 통지를 캐시하는데 사용되는 기록 캐시 메모리를 포함한다. 기본적인 운영 시스템이 이미 기록 캐시(예를 들어, 파일 시스템의 경우 버퍼 캐시)를 제공하는 경우에, 추가의 기록 캐시가 사용되지 않는다. 이 경우에, 운영 시스템에 의해 제공된 캐시의 플러시는 NAE일 것이다. 운용 기록 캐시를 이용하지 않은 방법에 비교하면(단계 400 내지 495), 운용 기계에서 실행된 이 방법은 기록 캐시 메모리의 사용과 관련하여 새로운 단계들(500, 510, 530, 535, 540, 550)을 포함한다. NAE 통지 또는 NDE가 발생하는 경우(400) 그리고 그것이 NAE가 아닌 경우(테스트(420)에서의 대답 No), 프로세스는 바람직한 실시예(415 420, 460, 470, 430, 440, 450, 470, 480, 490)의 경우에 입력 요청을 차단 해제하는 단계(도 4의 495가 540으로 교체됨)를 더 갖는 경우와 유사하며, 그 요청은 항상 도 5에서는 입력 요청이다. NAE 통지가 발생하고(테스트(420)에서의 대답 Yes) 캐시 메모리가 완전히 차 있지 않은 경우(테스트(500)에서의 대답 No), 이벤트는 기록 캐시에 로깅되고(510), 출력 메시지를 보내도록 요청하는 NAE를 포스트한 모듈에 확인응답하며, 그리하여 실행은 차단 해제된다(550). 출력 요청의 차단 해제의 실행과 병행하여(550), NAE 통지까지 FIFO에 있는 이벤트의 로그 및 ASE를 포함하는 이벤트의 로그는 예비 기계에 전송된다(430). 복제 프로세스는 전송의 확인응답이 수신될 때까지(440, 테스트(450)에서의 대답 No) 운용 기계에서 기다린다. 확인응답이 수신되면(테스트(450)에서의 대답 Yes), NAE는 캐시로부터 판독되고 예비 기계에 물리적으로 커밋된다(530). 그 다음, NAE는 캐시 메모리로부터 삭제된다(535).
커밋이 아직 완료되지 않았기 때문에 NAE가 캐시로부터 삭제되지 않았지만, 또 다른 NAE 통지가 발생하는 경우에, 캐시 메모리는 완전히 찬 것으로서 테스트된다(테스트(500)에서의 대답 Yes). 루프는 캐시가 비어지기를 기다리며 테스트가 부정이 될 수 있게 해준다(테스트(500)에서의 대답 No).
도 6은 하나보다 많은 NAE를 포함하도록 적응된 선택적 기록 캐시의 사용이 추가된 바람직한 실시예의 방법의 흐름도이다. 이 방법은 예비 기계에서의 애플리케이션의 재생을 위해 예비 기계에 애플리케이션의 실행에 대한 정보를 전송하는 복제 프로세스의 일부로서 운용 기계에서의 프로그램으로서 구현된다. 멀티NAE(multiNAE) 기록 캐시 옵션은 프로그램의 맞춤화 동안 선택될 수 있다. 이 경우에, 운영 시스템은 재판독(re-read)될 하나보다 많은 NAE를 포함하도록 충분히 큰 기록 캐시 메모리를 포함하며, NAE는 캐시가 완전히 찰 때까지 저장된다. 기본적인 운영 시스템이 필요한 용량을 갖는 기록 캐시(예를 들어, 파일 시스템의 경우 버퍼 캐시)를 이미 제공하는 경우에, 추가의 기록 캐시는 사용되지 않는다. 이 경우, 운영 시스템에 의해 제공된 캐시의 플러시는 NAE일 것이다. 하나의 NAE만 저장하기 위한 운용 기록 캐시를 갖는 방법과 비교하여, 운용 기계에서 실행되는 이 방법은 멀티NAE 사이즈의 기록 캐시 메모리의 사용에 관련하여 새로운 단계들(525, 555, 532)을 포함한다. 도 6에 있어서, NAE 프로세스는, 이벤트가 NAE이고(테스트(420)에서의 대답 Yes) 캐시 메모리가 완전히 차지 않은 경우(테스트(500)에서의 대답 No), 이벤트가 기록 캐시에 추가되고(510) NAE를 포스트한 모듈에 확인응답됨으로써 실행이 차단 해제된다는(520) 점에서 차이가 있다. NAE 통지가 발생한 후에 캐시가 완전히 차는 경우(테스트(500)에서의 대답 Yes), 이벤트의 로그, 캐시에 있는 다른 NAE까지 그리고 FIFO에 로깅된 ASE가 예비 기계에 전송된다(525). 복제 프로세스는 전송의 확인응답이 수신될 때까지(440, 테스트(450)에서의 대답 No) 운용 기계에서 기다린다. 확인응답이 수신되면(테스트(450)에서의 대답 Yes), 확인응답된 로그 전송에 대응하는 NAE는 예비 기계에 물리적으로 커밋되고(530) NAE는 캐시로부터 삭제된다(525). FIFO에 로깅된 모든 ASE가 전부 전송되지 않은 경우, 로그 전송은 모든 로그가 마지막 NAE까지 전송될 때까지 반복된다(525, 440, 450, 530, 535, 450).
장애의 경우에 예비 기계를 유지하는 운용 기계를 포함하는 장애 허용 시스템의 경우에 예비 기계에의 즉각 전송을 위해 복제를 수행하는 컴퓨터 시스템에서 도 4, 도 5, 및 도 6에서 설명된 3개의 실시예가 사용될 수 있다. 파일보관(archiving) 목적을 위해 하나의 다른 기계 상에서 추후 재생되도록 애플리케이션 복제 정보를 기록하기 위한 저장 공간에 전송이 행해지는 경우에 동일한 실시예가 사용될 수 있다. 또는, 애플리케이션을 테스트하기 위해 그리고 모든 로깅 및 전송된 이벤트를 분석할 개발자에 의해 동일한 실시예가 사용될 수 있다. 복제 방법은 애플리케이션에 대해 실행되는 프로그램에 적용될 수 있으며, 복제는 이 경우에 애플리케이션 컨테이너 분리(application container isolation)를 가능하게 한다. 그러나, 이미 언급한 바와 같이, 운용 기계 상에서 실행되는 운영 시스템의 복제 모듈에 이러한 동일한 방법을 적용할 수 있다. 이 방법은 하이퍼바이저에 기초한 가상화 아키텍쳐에 사용되는 복제에 적용된다.

Claims (10)

  1. 제1 저장 장치(storage)를 갖는 컴퓨터 시스템 상에서 실행되는 프로그램을 복제하기 위해 상기 컴퓨터 시스템 상에서 실행하는 방법으로서, 상기 컴퓨터 시스템으로부터 하나의 목적지(destination)에 액세스 가능하고, 상기 방법은,
    비결정적 이벤트(non-deterministic event)에 응답하여, 상기 이벤트에 대응하는 실행 프로그램으로부터의 실행 프로그램 요청을 차단하고;
    상기 비결정적 이벤트가 상기 복제될 실행 프로그램에 대한 입력인 메시지에 대응하는지 아니면 출력 메시지를 보내기 위한 상기 실행 프로그램으로부터의 출력 요청에 대응하는지 결정하고 - 상기 비결정적 이벤트는 무중단 이벤트(non-abortable event)임 - ;
    무중단 이벤트가 발생하지 않는 것에 응답하여, 상기 제1 저장 장치에 상기 이벤트를 로깅(logging)하고, 상기 이벤트를 상기 복제될 실행 프로그램에 전달하고, 상기 실행 프로그램 요청을 차단 해제(unblock)하고;
    무중단 이벤트에 응답하여, 상기 목적지에 상기 제1 저장 장치의 콘텐츠를 전송하고, 상기 목적지로부터 확인응답이 수신되는 것에 응답하여, 상기 실행 프로그램 요청을 차단 해제하는 것을 포함하는 방법.
  2. 청구항 1에 있어서,
    무중단 이벤트와 상기 제1 저장 장치가 완전히 찬(full) 것에 응답하여, 상기 목적지에 상기 제1 저장 장치의 콘텐츠를 전송하고, 상기 목적지로부터 확인응답이 수신되는 것에 응답하여, 상기 실행 프로그램 요청을 차단 해제하는 것을 더 포함하는 방법.
  3. 청구항 1에 있어서,
    무중단 이벤트의 각각의 발생시 리셋되는 타이머의 만료(expiration)에 응답하여, 상기 목적지에 상기 제1 저장 장치의 콘텐츠를 전송하고, 상기 목적지로부터 확인응답이 수신되는 것에 응답하여, 상기 실행 프로그램 요청을 차단 해제하는 것을 더 포함하는 방법.
  4. 청구항 1에 있어서,
    무중단 이벤트에 응답하여,
    제2 저장 장치에 상기 무중단 이벤트를 기록하고;
    상기 실행 프로그램 요청을 차단 해제하고, 이 해제와 동시에,
    상기 목적지에 상기 제1 저장 장치의 콘텐츠를 전송하고, 상기 목적지로부터 확인응답이 수신되는 것에 응답하여, 상기 실행 프로그램 요청을 수행하고, 상기 제2 저장 장치로부터 상기 무중단 이벤트를 삭제하는 것을
    수행하는 것을 더 포함하는 방법.
  5. 청구항 4에 있어서,
    무중단 이벤트와 상기 제2 저장 장치가 완전히 찬 것에 응답하여, 삭제 단계가 실행되고 상기 제2 저장 장치가 더 이상 완전히 차지 않게 될 때까지 상기 제2 저장 장치가 완전히 차 있는지 다시 테스트하는 것을 더 포함하는 방법.
  6. 청구항 4에 있어서,
    무중단 이벤트와 상기 제2 저장 장치가 완전히 차지 않은 것에 응답하여, 상기 제2 저장 장치에 상기 무중단 이벤트를 기록하고, 상기 실행 프로그램 요청을 차단 해제하고;
    무중단 이벤트와 상기 제2 저장 장치가 완전히 찬 것에 응답하여, 상기 제2 저장 장치에서의 모든 무중단 이벤트 및 마지막 무중단 이벤트에 대하여, 상기 목적지에 상기 마지막 무중단 이벤트까지의 상기 제1 저장 장치의 콘텐츠를 전송하고, 확인응답이 수신되는 것에 응답하여, 상기 요청을 수행하고, 상기 제2 저장 장치로부터 상기 무중단 이벤트를 삭제하는 것을 더 포함하는 방법.
  7. 청구항 1에 있어서,
    상기 제1 저장 장치는 선입선출(first-in-first-out) 버퍼를 포함하는 것인 방법.
  8. 청구항 4에 있어서,
    상기 제2 저장 장치는 캐시 메모리를 포함하는 것인 방법.
  9. 컴퓨터 판독가능한 프로그램이 기록되어 있는 컴퓨터 판독가능한 기록매체로서,
    상기 컴퓨터 판독가능한 프로그램은 컴퓨팅 디바이스 상에서 실행될 때 상기 컴퓨팅 디바이스로 하여금 청구항 1 내지 청구항 8 중 어느 한 항에 따른 방법의 단계들을 수행하도록 하는 것인 컴퓨터 판독가능한 기록매체.
  10. 컴퓨터 장치로서,
    프로세서; 및
    상기 프로세서에 연결된 메모리를 포함하고,
    상기 메모리는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 청구항 1 내지 청구항 8 중 어느 한 항에 따른 방법의 단계들을 수행하도록 하는 명령어들을 포함하는 것인 컴퓨터 장치.
KR20097004024A 2006-08-28 2007-03-30 실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법 KR101020016B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP06300896 2006-08-28
EP06300896.5 2006-08-28

Publications (2)

Publication Number Publication Date
KR20090048607A KR20090048607A (ko) 2009-05-14
KR101020016B1 true KR101020016B1 (ko) 2011-03-09

Family

ID=38457698

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20097004024A KR101020016B1 (ko) 2006-08-28 2007-03-30 실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법

Country Status (7)

Country Link
US (1) US8984513B2 (ko)
EP (1) EP2062139B1 (ko)
KR (1) KR101020016B1 (ko)
AT (1) ATE445878T1 (ko)
DE (1) DE602007002828D1 (ko)
ES (1) ES2335055T3 (ko)
WO (1) WO2008025575A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2335055T3 (es) 2006-08-28 2010-03-18 International Business Machines Corporation Metodo para mejorar la transferencia de registros de eventos para la replica de programas en ejecucion.
CN101446909B (zh) 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统
US8832682B2 (en) * 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
US9058420B2 (en) * 2008-06-20 2015-06-16 Vmware, Inc. Synchronous decoupled program analysis in virtual environments
US9064043B2 (en) * 2008-12-19 2015-06-23 Ncr Corporation Fault replay system and method
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US8386602B2 (en) 2010-11-02 2013-02-26 International Business Machines Corporation Relevant alert delivery in a distributed processing system
US8364813B2 (en) 2010-11-02 2013-01-29 International Business Machines Corporation Administering incident pools for event and alert analysis
US8621277B2 (en) 2010-12-06 2013-12-31 International Business Machines Corporation Dynamic administration of component event reporting in a distributed processing system
US8868984B2 (en) 2010-12-07 2014-10-21 International Business Machines Corporation Relevant alert delivery in a distributed processing system with event listeners and alert listeners
US8737231B2 (en) 2010-12-07 2014-05-27 International Business Machines Corporation Dynamic administration of event pools for relevant event and alert analysis during event storms
US8805999B2 (en) 2010-12-07 2014-08-12 International Business Machines Corporation Administering event reporting rules in a distributed processing system
US8756462B2 (en) 2011-05-24 2014-06-17 International Business Machines Corporation Configurable alert delivery for reducing the amount of alerts transmitted in a distributed processing system
US8645757B2 (en) 2011-05-26 2014-02-04 International Business Machines Corporation Administering incident pools for event and alert analysis
US9213621B2 (en) 2011-05-27 2015-12-15 International Business Machines Corporation Administering event pools for relevant event analysis in a distributed processing system
US8676883B2 (en) 2011-05-27 2014-03-18 International Business Machines Corporation Event management in a distributed processing system
US9348883B2 (en) * 2011-06-01 2016-05-24 Clustrix, Inc. Systems and methods for replication replay in a relational database
US8880943B2 (en) 2011-06-22 2014-11-04 International Business Machines Corporation Restarting event and alert analysis after a shutdown in a distributed processing system
US8392385B2 (en) 2011-06-22 2013-03-05 International Business Machines Corporation Flexible event data content management for relevant event and alert analysis within a distributed processing system
US8713366B2 (en) 2011-06-22 2014-04-29 International Business Machines Corporation Restarting event and alert analysis after a shutdown in a distributed processing system
US9419650B2 (en) 2011-06-22 2016-08-16 International Business Machines Corporation Flexible event data content management for relevant event and alert analysis within a distributed processing system
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
WO2013042268A1 (ja) * 2011-09-22 2013-03-28 富士通株式会社 サーバ装置、ログ転送プログラム、ログ転送方法およびログ転送システム
US20130097215A1 (en) 2011-10-18 2013-04-18 International Business Machines Corporation Selected Alert Delivery In A Distributed Processing System
US8887175B2 (en) 2011-10-18 2014-11-11 International Business Machines Corporation Administering incident pools for event and alert analysis
US20130097272A1 (en) 2011-10-18 2013-04-18 International Business Machines Corporation Prioritized Alert Delivery In A Distributed Processing System
US9178936B2 (en) 2011-10-18 2015-11-03 International Business Machines Corporation Selected alert delivery in a distributed processing system
US8713581B2 (en) 2011-10-27 2014-04-29 International Business Machines Corporation Selected alert delivery in a distributed processing system
US20130290385A1 (en) * 2012-04-30 2013-10-31 Charles B. Morrey, III Durably recording events for performing file system operations
US9600206B2 (en) * 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US8954811B2 (en) 2012-08-06 2015-02-10 International Business Machines Corporation Administering incident pools for incident analysis
US8943366B2 (en) 2012-08-09 2015-01-27 International Business Machines Corporation Administering checkpoints for incident analysis
US9129058B2 (en) 2013-02-19 2015-09-08 Microsoft Technology Licensing, Llc Application monitoring through continuous record and replay
US9361184B2 (en) 2013-05-09 2016-06-07 International Business Machines Corporation Selecting during a system shutdown procedure, a restart incident checkpoint of an incident analyzer in a distributed processing system
US9170860B2 (en) 2013-07-26 2015-10-27 International Business Machines Corporation Parallel incident processing
US9658902B2 (en) 2013-08-22 2017-05-23 Globalfoundries Inc. Adaptive clock throttling for event processing
US9256482B2 (en) 2013-08-23 2016-02-09 International Business Machines Corporation Determining whether to send an alert in a distributed processing system
US9086968B2 (en) 2013-09-11 2015-07-21 International Business Machines Corporation Checkpointing for delayed alert creation
US9602337B2 (en) 2013-09-11 2017-03-21 International Business Machines Corporation Event and alert analysis in a distributed processing system
US9389943B2 (en) 2014-01-07 2016-07-12 International Business Machines Corporation Determining a number of unique incidents in a plurality of incidents for incident processing in a distributed processing system
US9959178B2 (en) 2014-11-25 2018-05-01 Sap Se Transactional and parallel log replay for asynchronous table replication
US9747191B1 (en) * 2015-10-05 2017-08-29 Amazon Technologies, Inc. Tool to replicate actions across devices in real time for improved efficiency during manual application testing
US9747174B2 (en) * 2015-12-11 2017-08-29 Microsoft Technology Licensing, Llc Tail of logs in persistent main memory
US10585745B2 (en) * 2017-11-28 2020-03-10 International Business Machines Corporation Prevention of application container failure between replicated containers
US11593309B2 (en) * 2020-11-05 2023-02-28 International Business Machines Corporation Reliable delivery of event notifications from a distributed file system
WO2023034311A1 (en) * 2021-09-03 2023-03-09 Twitter, Inc. Batch event delivery with identifiers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006079623A1 (en) 2005-01-28 2006-08-03 International Business Machines Corporation Method for counting instructions for logging and replay of a deterministic sequence of events
EP2881309A1 (de) * 2013-12-04 2015-06-10 Schmitz Cargobull AG Seitenwand oder Dach eines Kofferaufbaus eines Nutzfahrzeugs

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4812968A (en) * 1986-11-12 1989-03-14 International Business Machines Corp. Method for controlling processor access to input/output devices
US5638509A (en) * 1994-06-10 1997-06-10 Exabyte Corporation Data storage and protection system
US5802265A (en) * 1995-12-01 1998-09-01 Stratus Computer, Inc. Transparent fault tolerant computer system
US5895485A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Method and device using a redundant cache for preventing the loss of dirty data
US6077260A (en) * 1998-02-19 2000-06-20 Target Therapeutics, Inc. Assembly containing an electrolytically severable joint for endovascular embolic devices
US7290056B1 (en) * 1999-09-09 2007-10-30 Oracle International Corporation Monitoring latency of a network to manage termination of distributed transactions
US6832367B1 (en) * 2000-03-06 2004-12-14 International Business Machines Corporation Method and system for recording and replaying the execution of distributed java programs
US6785893B2 (en) * 2000-11-30 2004-08-31 Microsoft Corporation Operating system event tracker having separate storage for interrupt and non-interrupt events and flushing the third memory when timeout and memory full occur
US7100167B2 (en) * 2001-05-01 2006-08-29 Microsoft Corporation Method and apparatus for creating templates
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs
FR2881309B1 (fr) * 2005-01-21 2007-03-23 Meiosys Soc Par Actions Simpli Procede d'optimisation de la transmission de donnees de journalisation en environnement multi-ordinateurs et systeme mettant en oeuvre ce procede
FR2881241B1 (fr) 2005-01-24 2007-05-04 Meiosys Soc Par Actions Simpli Procede d'optimisation de la journalisation et du rejeu d'application multi-taches dans un systeme informatique mono-processeur ou multi-processeurs
ES2335055T3 (es) 2006-08-28 2010-03-18 International Business Machines Corporation Metodo para mejorar la transferencia de registros de eventos para la replica de programas en ejecucion.
CN101446909B (zh) * 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006079623A1 (en) 2005-01-28 2006-08-03 International Business Machines Corporation Method for counting instructions for logging and replay of a deterministic sequence of events
EP2881309A1 (de) * 2013-12-04 2015-06-10 Schmitz Cargobull AG Seitenwand oder Dach eines Kofferaufbaus eines Nutzfahrzeugs

Also Published As

Publication number Publication date
US20090328044A1 (en) 2009-12-31
ATE445878T1 (de) 2009-10-15
KR20090048607A (ko) 2009-05-14
DE602007002828D1 (de) 2009-11-26
ES2335055T3 (es) 2010-03-18
EP2062139A1 (en) 2009-05-27
EP2062139B1 (en) 2009-10-14
WO2008025575A1 (en) 2008-03-06
US8984513B2 (en) 2015-03-17

Similar Documents

Publication Publication Date Title
KR101020016B1 (ko) 실행 프로그램의 복제를 위한 이벤트 로그의 전송을 향상시키는 방법
USRE47852E1 (en) Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
Scales et al. The design of a practical system for fault-tolerant virtual machines
US8868492B2 (en) Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
Brown et al. Undo for Operators: Building an Undoable E-mail Store.
US10152398B2 (en) Pipelined data replication for disaster recovery
US8689047B2 (en) Virtual disk replication using log files
JP3790589B2 (ja) 分散データベーストランザクションのコミットメント方法
US20080077686A1 (en) System and Method for Replication of Network State for Transparent Recovery of Network Connections
US6526487B2 (en) Performing acknowledged operations on original and mirrored copies of data
US7673174B2 (en) Recovering device drivers
US20060047713A1 (en) System and method for database replication by interception of in memory transactional change records
US20180101558A1 (en) Log-shipping data replication with early log record fetching
MX2007000075A (es) Metodo de mejorar el funcionamiento de servidor de replica y un sistema de servidor de replica.
Goldstein et al. Ambrosia: Providing performant virtual resiliency for distributed applications
AU2015336250B2 (en) Recovery and fault-tolerance under computational indeterminism
Wang et al. A fast, general storage replication protocol for active-active virtual machine fault tolerance
AT&T
JPH10207849A (ja) 分散システムにおける高信頼化と負荷分散方法
Kelly et al. Output-valid rollback-recovery
Sultan System support for service availability, remote healing and fault tolerance using lazy state propagation
Xiang et al. Storage virtualization based asynchronous remote mirror
Yao et al. Using Block Filter Device for Acceleration of Storage Synchronization on Fault-tolerant Virtual Machines
WO2017023244A1 (en) Fault tolerant computing
Gupta et al. Just-In-Time Checkpointing: Low Cost Error Recovery from Deep Learning Training Failures

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: 20140124

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170125

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 10