KR101024249B1 - 실시간 데이터 복제 시스템 - Google Patents

실시간 데이터 복제 시스템 Download PDF

Info

Publication number
KR101024249B1
KR101024249B1 KR1020080049646A KR20080049646A KR101024249B1 KR 101024249 B1 KR101024249 B1 KR 101024249B1 KR 1020080049646 A KR1020080049646 A KR 1020080049646A KR 20080049646 A KR20080049646 A KR 20080049646A KR 101024249 B1 KR101024249 B1 KR 101024249B1
Authority
KR
South Korea
Prior art keywords
source node
target
node
module
target node
Prior art date
Application number
KR1020080049646A
Other languages
English (en)
Other versions
KR20090123518A (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 매크로임팩트 주식회사
Priority to KR1020080049646A priority Critical patent/KR101024249B1/ko
Publication of KR20090123518A publication Critical patent/KR20090123518A/ko
Application granted granted Critical
Publication of KR101024249B1 publication Critical patent/KR101024249B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 데이터 복제(data replication) 시스템에 관한 것이다. 보다 구체적으로는 실시간 데이터 복제 시스템에 관한 것이다.
전술한 과제를 해결하기 위하여 본 발명에 데이터 복제 시스템은, 소스 노드(source node)에서 저장되는 레코드 레벨의 데이터를 하나 이상의 목표 노드(target node)로 실시간으로 복제하는 데이터 복제 시스템으로서, 적어도 상기 소스 노드에 설치되고, 상기 소스 노드에서 처리되는 입출력(I/O: Input/Output) 관련 명령어를 훅킹(hooking) 또는 인터셉트(intercept)하고 상기 목표 노드로 전송하는 소스 노드 모듈(source node module); 적어도 상기 목표 노드에 설치되고, 상기 소스 노드 모듈로부터 전송된 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리함으로써, 상기 소스 노드에 저장되는 레코드 레벨의 데이터가 상기 목표 노드에도 실시간으로 저장되게 하는 목표 노드 모듈(target node module); 상기 소스 노드 모듈 및 상기 목표 노드 모듈에서의 명령어 처리를 관리하는 공통 모듈(common module)을 포함한다.
실시간, 데이터 복제, 소스 노드, 목표 노드

Description

실시간 데이터 복제 시스템{REAL-TIME DATA REPLICATION SYSTEM}
본 발명은 데이터 복제(data replication) 시스템에 관한 것이다. 보다 구체적으로는 실시간 데이터 복제 시스템에 관한 것이다.
인터넷이 널리 이용되어 감에 따라, 여러 종류의 동종 또는 이종 시스템들 사이에 데이터 복제의 필요성이 점점 높아지고 있다. 데이터 복제에 의하여 데이터 중복성(data redundancy)을 높임으로써 시스템 장애 시 사용자의 불편함을 최소화하고 데이터 복구 가능성을 높일 수 있다. 또한, 데이터 복제에 의하여 지리적으로 넓은 범위에 걸쳐 분포된 다수의 사용자들에 대해 보다 향상된 데이터에 대한 위치적 접근성을 제공할 수 있다.
데이터 복제 기술은 크게 두 가지로 분류할 수 있다. 그 중 하나는, 스코어카드 복제(scorecard replication)이고, 또 다른 하나는 데이터 복제이다. 스코어카드 복제는 파일 시스템 또는 디스크 블록 비트맵을 생성하여 정기적으로 변화 상태를 모니터링하고, 그 변화를 복제본 데이터(replica data)로서 기록하는 방식이다. 데이터 복제는 복제 시스템(replication system)에 의하여, 응용 프로그램(application program) 또는 그 프로세스(application process)로부터 저장장치, 예를 들어 디스크 또는 메모리로 데이터 기록이 발생하면, 이와 동일한 데이터 기록을 다른 저장장치에도 행하는 방식을 의미한다. 이하 응용 프로그램이라 하면 응용 프로그램, 응용 프로그램의 특정 프로세스, 및 그와 등가인 것을 모두 포함하는 것을 의미한다. 이러한 데이터 복제는 원본과 복제본의 데이터 기록 방식에 따라 동기식(synchoronous), 비동기식(asynchronous) 및 반동기식(semi-synchronous)으로 구분할 수 있다.
컴퓨터 시스템에서 모든 응용 프로그램은 데이터를 처리하기 위하여 수행된다. 이때 응용 프로그램의 수행을 통하여 처리된 결과 데이터는 입출력 관련 시스템 콜(system call) 및 사용자 명령에 의하여 다시 저장 장치에 저장되게 된다. 저장된 데이터는 시스템의 장애와 같은 여러 요인으로 인해 손실 또는 유실될 수 있으며, 이로 인해 업무의 연속성을 보장할 수 없을 뿐만 아니라 막대한 데이터 복구 비용이 소요될 수 있다.
데이터 손실로부터 발생하는 업무 공백을 최소화하기 위하여 많은 조직에서 데이터 백업 시스템을 도입하여 운용하고 있으나, 데이터 백업 주기와 레벨에 따라 데이터의 손실은 피할 수가 없는 실정이다. 데이터 백업을 아주 빈번하게 또는 실시간으로 수행할 수 있다면 데이터의 손실을 최소화할 수 있을 것이다. 하지만 백업 시에 발생하는 오버헤드(overhead) 때문에 데이터를 처리하여야 할 응용 프로그램의 수행에 막대한 지장을 줄 수 있어 빈번히 데이터를 백업받는 것이 불가능하다.
시스템 장애와는 별도로 재난에 대한 대처를 위해 원격지에 재난 복구를 위 한 시스템을 별도로 두어 운영을 하는데, 이때도 데이터의 백업과 같이 복제된 데이터를 유지할 수 있는 시스템이 필요하다. 이런 상황에서의 데이터 백업은 일반적으로 데이터 복제로 불리우며, 데이터 백업과는 다르게 취급된다.
이를 위한 솔루션(solution)은 크게 하드웨어와 소프트웨어를 중심으로 분류될 수 있다. 이들 대부분의 솔루션은 자체 솔루션이 가지는 오버헤드 때문에 실시간으로 데이터를 복제하기 보다는 시스템이 가장 한가한 때를 골라 오프라인 상황에서 데이터를 복제하는 방법을 택하고 있다.
따라서, 데이터의 손실을 최소화하기 위해서는 응용 프로그램에 미치는 영향을 최소화하면서, 실시간으로 데이터를 보호할 수 있는 솔루션이 필요하다.
본 발명은 응용 프로그램에 미치는 영향을 최소화하면서, 실시간으로 데이터를 복제할 수 있는 데이터 복제 시스템을 제공하는 것을 목적으로 한다.
전술한 과제를 해결하기 위하여 본 발명에 데이터 복제 시스템은, 소스 노드(source node)에서 저장되는 데이터를 하나 이상의 목표 노드(target node)로 복제하는 데이터 복제 시스템으로서, 적어도 상기 소스 노드에 설치되고, 상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹(hooking) 또는 인터셉트(intercept)하여 상기 목표 노드로 전송하는 소스 노드 모듈(source node module); 적어도 상기 목표 노드에 설치되고, 상기 소스 노드 모듈로부터 전송된 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리함으로써, 상기 소스 노드에 저장되는 데이터가 상기 목표 노드에도 실시간으로 저장되게 하는 목표 노드 모듈(target node module); 상기 소스 노드 모듈 및 상기 목표 노드 모듈에서의 명령어 처리를 관리하는 공통 모듈(common module)을 포함한다.
여기서, 바람직하게는, 상기 소스 노드 모듈은, 상기 목표 노드의 구성 정보를 생성 및 관리하는 목표 노드 관리부(target node manager); 상기 소스 노드로부터 상기 목표 노드로 복제되는 특정 디렉터리(directory) 또는 파일을 복제대상 목록에 등록하고 모니터링하는 복제대상 관리부; 상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹 또는 인터셉트하고, 데이터 복제에 필요한 정보를 추출하는 인터셉터부(interceptor); 상기 인터셉터부에 의하여 추출된 상기 데이터 복제에 필요한 정보를 상기 목표 노드에서 수행될 수 있는 형태로 재구성하는 요청부(requestor); 및 상기 요청부에서 재구성된 상기 정보를 상기 소스 노드 모듈로 전송하는 소스 노드 측 통신 관리부(communication manager)를 포함한다.
여기서, 바람직하게는, 상기 소스 노드 측 통신 관리부는, 상기 요청부에서 재구성된 상기 정보를 저장하는 메시지큐(message queue); 상기 메시지큐에 저장된 상기 정보를 상기 목표 노드로 송신하고, 상기 목표 노드로부터 데이터 복제 성공 여부 등의 결과를 수신하는 송수신부; 상기 목표 노드로 부터 수신되는 상기 데이터 복제 성공 여부 등의 결과를 저장하는 수신큐(receive queue); 및 상기 메시지큐에 저장된 상기 정보를 상기 목표 노드로 전송한 후 상기 메시지큐로부터 상기 정보를 이동 시켜 저장시켰다, 목표 노드에서 데이타 복제 성공 여부에 따라 후속 조치를 취하고자 대비하는 확인큐를(confirm queue) 포함한다.
여기서, 바람직하게는, 상기 목표 노드 모듈은, 상기 소스 노드의 구성 정보를 생성 및 관리하는 소스 노드 관리부; 상기 소스 노드 모듈로부터 전송받은 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리하기 위한 데이터 맵핑부; 상기 소스 노드로부터 전송받은 명령어를 상기 목표노드에서 실행하는 실행부; 상기 소스 노드 모듈로부터 상기 명령어를 수신하고, 상기 목표 노드 모듈에서의 상기 소스 노드 모듈로부터 수신된 명령어의 처리 결과를 상기 소스 노드 모듈로 송신하는 목표 노드 측 통신 관리부를 포함한다.
여기서, 바림직하게는, 상기 목표 노드 측 통신 관리부는, 상기 소스 노드로 부터 전송되는 명령어를 수신하고, 상기 명령어의 처리 결과를 송신하는 송수신부; 상기 송수신부가 수신한 명령어를 저장하는 메시지큐; 상기 실행부에서의 상기 명령어의 처리 결과를 저장하는 송신큐(transmit queue)를 포함한다.
여기서, 바림직하게는, 상기 공통 모듈은, 상기 소스 노드 모듈로부터 상기 목표 노드 모듈로 전송된 명령에에 대한 처리 결과를 관리하고, 상기 소스 노드 모듈로부터 상기 목표 노드 모듈로 데이터 복제의 성공 여부에 따라, 상기 소스 노드 모듈이 상기 명령어 전송을 재시도하게 하는 로그 관리부; 상기 소스 노드 및 상기 목표 노드 중 적어도 어느 하나의 오류 발생 시, 상기 오류를 처리하는 오류 관리부; 및 상기 데이터 복제 시스템의 사용 환경을 제공하는 유틸리티부를 포함한다.
또한, 본 발명에 따른 데이터 복제 방법은, 소스 노드에서 저장되는 데이터를 하나 이상의 목표 노드로 복제하는 데이터 복제 방법으로서, 소스 노드에서 실행되는 명령어를 훅킹(hooking) 또는 인터셉트하는 단계; 상기 명령어를 상기 목표 노드의 운영 체제(operating system)에 적합하게 변환하는 단계; 상기 변환된 명령어를 상기 목표 노드로 전송하는 단계; 상기 목표 노드로 전송된 명령어를 상기 소스 노드에서 실행된 방식과 동일한 방식으로 상기 목표 노드에서 실행하는 단계; 및 상기 목표 노드에서의 상기 명령어의 실행 결과를 상기 소스 노드로 전송하는 단계를 포함한다.
여기서, 바람직하게는, 상기 목표 노드에서 상기 명령어의 실행이 실패한 경우, 상기 소스 노드로부터 상기 목표 노드로 상기 명령어를 재전송하는 단계를 더 포함한다.
본 발명에 따른 데이터 복제 방법은 컴퓨터로 읽을 수 있는 기록 매체에 프로그램 형태로 저장되어, 컴퓨터로 실행될 수 있다.
본 발명에 의하여, 응용 프로그램에 미치는 영향을 최소화하면서, 실시간으로 레코드 레벨의 데이터를 복제할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 데이터 복제 시스템을 상세하게 설명한다. 명세서 전체적으로 동일한 구성요소는 가급적 동일한 인용부호를 사용하여 나타내었다. 또한, 발명의 요지를 흐릴 수 있다고 생각되는 세부적인 부분의 설명은 생략하도록 한다.
1. 데이터 복제 시스템(100)의 개략적인 동작
이하, 도 1 내지 도 4을 참조하여 본 발명에 따른 데이터 복제 시스템(100)의 개략적인 동작을 설명한다. 도 1은 본 발명에 따른 데이터 복제 시스템(100)이 적용될 수 있는 소스 노드(101)와 목표 노드(102, 103, 104)를 포함하는 네트워크를 나타낸 도면이다.
본 발명에 따른 데이터 복제 시스템(100)은 응용 프로그램의 수행 도중 응용 프로그램에서 변경하고 저장하고자 하는 레코드 레벨(record level)의 데이터를, 그 응용 프로그램의 수행에 최소한의 영향을 끼치면서, 실시간으로 원격지에 복제하거나 백업하는 시스템이다. 즉, 하나의 노드에서 변경되는 레코드 레벨의 데이터 를 즉각적으로 다른 노드들에 반영할 수 있는 소프트웨어 시스템이다.
예를 들어, 도 1에 나타낸 바와 같이, 한 컴퓨터 노드, 예를 들어 소스 노드(101)에서, 실행되는 응용 프로그램(101-1)에서 데이터 저장을 위해 write() 시스템 콜 명령어가 수행되면, 데이터 복제 시스템(100)은 그 소스 노드(101)에서 저장되는 동일한 데이터를 가지고 동일한 시스템 콜을 다른 노드, 예를 들어, 목표 노드(102, 103, 104)에서 실시간으로 수행되도록 하여 동일한 데이터를 여러 곳에 동시에 복제할 수 있다 (102-1). 편의상 상기 시스템 콜이(102-1) 하나의 목표 노드(102)에서만 실행되는 것으로 도면에 나타내었으나, 실제로 다수의 목표 노드(103, 104)에서도 동시에 실행될 수 있다.
여기서, write() 시스템 콜은 변수 buf에 저장되어 있는 변수 size 바이트 크기의 데이터를 파일 디스크립터(file descriptor) fd가 가리키는 파일에 저장하기 위한 시스템 콜이다.
본 발명에 따른 데이터 복제 시스템(100)이 소스 노드(101)에 저장되는 데이터를 여러 목표 노드(102, 103, 104)에 복제하는 방법은 크게 두 가지로 분류된다. 그 하나는, 도 2에 나타낸 바와 같이, 입출력 시스템 콜을 훅킹하는 방법이다.
훅킹은 핸들러 함수(handler function; 이하 훅(hook)이라 함)을 활용하여 원래 프로그램의 수행 흐름(control flow)에 수정을 가하는 프로그램 기술을 의미한다. 새로운 훅은 어떤 특정 함수를 위한 주소를 가진 함수로 등록되며, 그 특정 함수가 호출되면, 훅이 그 특정 함수 대신 수행되게 된다. 이때, 일반적으로 훅은 어떤 특정 시점에 원래의 함수를 불러 원래의 함수들의 수행 목적을 준수하게 한 다.
시스템 콜(System call)은 응용 프로그램이 운영체제 커널의 서비스 요청을 위한 진입 지점(entry point)이다. 이런 진입 지점을 훅킹 함으로써 원래 운영체제의 커널이 제공하는 서비스를 확장시킬 수 있으며, 시스템 콜을 훅킹하는 방법은 운영체제마다 약간의 차이가 있다. 여기에서는 리눅스(Linux) 운영체제에서 LKM (Loadable Kernel Module) 방식을 예로 들어 간략하게 기술한다. 이를 참조하여 당업자는 본 발명에 따른 훅킹을 모든 운영체제에 용이하게 적용시킬 수 있을 것이다.
LKM은 리눅스 커널 기능을 확장하는데 사용하는 방식으로, 별도의 커널 모듈(kernel module)을 만들어 기존의 커널의 수정이나 재 컴파일 없이 그 모듈을 동적으로 리눅스 커널에 적재하고, 내리고 하는 방식이다. 커널의 수정, 그리고 재 컴파일 없이 동적으로 모듈을 적재할 수 있는 장점 때문에 새로운 디바이스의 드라이버 또는 파일 시스템 등은 이 방식을 많이 사용한다.
도 3은 LKM 방식을 이용한 시스템 콜 훅킹을 나타낸다. 여기서 응용 프로그램이 시스템 콜을 호출하게 되면 훅킹된 모듈이 적재된 상태에서는 훅킹된 시스템 콜이 수행되며, 훅킹된 모듈이 적재되지 않았다면 원래의 시스템 콜이 수행된다. 도 3에서 또 알 수 있는 것은 위에서 설명한 바와 같이 훅킹된 함수는 어느 특정 시점에서 항상 원래 수행되어야 할 함수를 불러 함수 수행 목적을 준수하고 있다는 것이다.
다시 도 2를 참조하면, 여기서, 사용자 레벨(user level)에서 사용된 함수인 write()는 데이터 복제 시스템(100)에 의해 훅킹되고, 커널 레벨(kernel level)에서 훅킹된 함수(function)가 호출된다. 훅킹된 함수는 후술하는 데이터를 복제하기 위해 필요한 모든 정보를 획득하고 원래의 시스템 콜의 수행 흐름으로 복귀한다. 이때, 획득된 정보는 데이터 복제 시스템(100)에 의하여 후술하는 바와 같이, 관리 및 정제되어 다른 컴퓨터 시스템으로 전송되어 동일한 시스템 콜이 수행되게 된다. 이 방법은 응용 프로그램의 수행을 멈추지 않게 하면서 복제할 데이터에 대한 모든 정보를 추출할 수 있다.
데이터 복제 방법 중 다른 하나는 응용 프로그램의 수행을 추적(tracing)하면서 입출력 관련 시스템 콜 및 사용자 명령(user command, 이하 명령어)을 인터셉트하고, 다른 컴퓨터 시스템에서도 동일한 시스템 콜 및 명령어가 수행되도록 하여 동일한 데이터가 저장될 수 있도록 하는 방법이다. 이 방법은 복제할 데이터에 대한 정보를 추출하는 동안 응용 프로그램의 수행을 멈추게 하는 단점이 있다. 하지만, 특정 응용 프로그램이 취급하는 데이터만을 복제할 경우 유용하게 사용될 수 있다.
현재 사용되고 있는 대부분의 운영체제는 사용자 레벨에서 시스템 콜을 인터셉트하는 기능을 제공하고 있다. 여기서 시스템 콜을 인터셉트하는 기능을 제공한 원래의 목적은 프로그램의 디버깅 그리고 시스템 콜을 추적(trace)하는 것이다. 그러나, 이러한 기술을 이용하여 시스템 콜 기능의 일부를 확장 또는 변경시킬 수 있다.
구체적으로 운영체제에서 제공하는 ptrace 또는 strace 함수를 활용하여 프로세스의 수행을 제어하고 시스템 콜을 인터셉트할 수 있다. 즉, 이들 trace 함수는 시스템 콜의 수행 전 또는 수행 후에 프로세스의 수행을 임시 중단시키고 필요한 정보를 추출하거나 또는 다른 일을 수행할 수 있도록 한다. 따라서, 입출력 관련 명령어가 수행되기 전에 프로세스의 수행을 잠시 중단시키고 필요한 정보를 추출하고 원래의 프로세스를 재 수행시킬 수 있으며, 추출된 정보를 목표 노드로 전송하여 동일한 명령어를 수행하여 데이터를 복제할 수 있다.
본 발명에 따른 데이터 복제 시스템(100)은 위에서 설명한 두 방법, 즉 훅킹 및 인터셉트를 모두 제공한다.
본 발명에 따른 데이터 복제 시스템(100)은 소스 노드(101)에 설치되는 소스 노드 모듈(201)과 목표 노드(102, 103, 104)에 설치되는 목표 노드 모듈(202)을 포함한다. 소스 노드(101)에 소스 노드 모듈(201)이 설치되고, 목표 노드(102, 103, 104)에 목표 노드 모듈(202)이 설치되어, 본 발명에 따른 데이터 복제가 수행된다. 이와 다르게는, 소스 노드(101)와 목표 노드(102, 103, 104) 각각에 소스 노드 모듈(201)과 목표 노드 모듈(202)을 포함하는 데이터 복제 시스템(100)이 설치되고, 각 노드(소스 노드, 목표 노드)의 역할에 따라 필요한 모듈이 동작을 수행할 수도 있다.
도 4은 데이터 복제 시스템(100)의 기본 구조 및 데이터 복제 수행 과정을 나타낸다. 도 4에는 데이터 복제 시스템(100)의 소스 노드 모듈(201)이 소스 노드(101)에 설치되고, 목표 노드 모듈(202)이 목표 노드(102, 103, 104)에 설치된 경우를 나타낸 것이다. 앞서 설명한 바와 같이, 소스 노드(101)와 목표 노드(102, 103, 104) 각각에 데이터 복제 시스템(100)이 설치될 수도 있다.
데이터 복제 시스템(100)의 소스 노드 모듈(201)은, 응용 프로그램(application program, 301)이 입출력(I/O: Input/Output) 관련 명령어를(302) 수행하면 그 명령어를 훅킹 또는 인터셉트하고, 후술하는 복제에 필요한 정보를 획득한다 (S10).
훅킹 또는 인터셉트된 명령어는 소스 노드(101)에서 계속 실행되고, 동시에 목표 노드(102, 103, 104)로 전송된다 (S20). 목표 노드로 전송된 명령어는 목표 노드 모듈(202)에 의하여 후술하는 일련의 과정을 거쳐 처리되며 (S30), 처리 결과에 대한 정보는 다시 소스 노드(101)로 전송된다 (S40). 여기서 응용 프로그램(301)은 데이터 복제 시스템(100) 존재를 인식하지 못한다. 따라서, 응용 프로그램(301)의 수정 없이 데이터 복제 시스템(100)이 동작하며, 데이터 이중화 또는 다중화, 분산 복제, 데이터 통합, 데이터 백업, 재난 복구 등에 활용될 수 있다.
2. 데이터 복제 시스템(100)의 구성
이하, 본 발명에 따른 데이터 복제 시스템(100)의 구성을 도 5 내지 도 7을 참조하여 상세히 설명한다.
도 5는 본 발명에 따른 데이터 복제 시스템(100)을 모식적으로 나타낸 블록도이다. 도 5에 나타낸 바와 같이, 데이터 복제 시스템(100)은 소스 노드 모듈(201), 목표 노드 모듈(202) 및 공통 모듈(203)을 포함한다. 앞서 설명한 바와 같이, 소스 노드 모듈(201) 및 목표 노드 모듈(202)은 데이터 복제 시스템(100)이 설치된 컴퓨터 노드의 역할에 따라 구동되며, 공통 모듈(203)은 컴퓨터 노드의 역할에 관계없이 공통적으로 구동된다. 이와 다르게는, 데이터 복제 시스템(100)이 소스 노드(101)와 목표 노드(102, 103, 104)에 각각 설치되고, 각 노드에 따라 소스 노드 모듈(201) 또는 목표 노드 모듈(202)이 동작할 수도 있다. 이 경우에 공통 모듈(203)은 모든 노드에서 동작을 수행한다.
공통 모듈(203)은 목표 노드(102, 103, 104)에 문제가 발생하였거나, 목표 노드(102, 103, 104)에 연결되는 네트워크의 장애 등으로 더 이상 소스 노드(101)로부터 전송된 명령어를 목표 노드(102, 103, 104)가 수행할 수 없는 상황의 감시 및 이후 처리를 수행한다.
소스 노드(101)에 오류(error)가 발생하여 더 이상 서비스를 할 수 없을 경우, 목표 노드(102, 103, 104) 중 하나를 활용하여 데이터 복제가 수행될 수도 있다. 이때 소스 노드(101)와 목표 노드(102, 103, 104) 중 하나의 역할이 바뀔 수 있으며, 각 노드(101, 102, 103, 104)에서 구동되는 모듈은 이에 따라 바뀌게 된다. 문제가 발생한 소스 노드는 문제 처리 후 재구동될 수 있으며, 목표 노드로 활용될 수도 있고, 원래대로 소스 노드로 원상 복귀될 수도 있다.
하나의 노드가 소스와 목표 노드의 역할을 동시에 수행할 수 있으며, 이때는 모든 모듈이 동시에 구동되게 된다. 예를 들어 데이터 복제 시스템(100)을 통하여 데이터를 멀티캐스팅(multicasting) 또는 브로드캐스팅(broadcasting)할 때 이들을 구현하는 알고리즘에 따라 어떤 노드들은 데이터를 복제함과 동시에, 복제할 데이 터를 다른 노드들에 전달하는 소스 노드의 역할을 수행하여야 한다.
이하, 데이터 복제 시스템(100)의 각 모듈(201, 202, 203) 및 그 구성 요소를 상세히 설명한다.
2.1 소스 노드 모듈(201)
도 5에 나타낸 바와 같이, 소스 노드 모듈(201)은 목표 노드 관리부(401), 복제대상 관리부(specification manager, 402), 인터셉터부(403), 요청부(requestor, 404) 및 통신 관리부(communication manager, 405)를 포함한다.
2.1.1 목표 노드 관리부(401)
목표 노드 관리부(401)는 소스 노드(101)의 데이터를 복제 또는 분산시켜야 하는 목표 노드들(102, 103, 104)의 구성 정보를 생성 및 관리하고, 목표 노드들(102, 103, 104)의 상태 정보를 다른 모듈에게 제공한다. 목표 노드(102, 103, 104)에서 문제가 발생한 것이 의심되면 후술하는 유틸리티부(utility, 412)의 오류 검출기(fault detector)에 의하여 문제 발생 여부가 확인되며, 확인된 정보는 목표 노드 관리부(401)에 전달된다. 이때 다른 모듈들은 이들 정보를 바탕으로 적절한 조치를 취하게 된다. 목표 노드들(102, 103, 104)의 구성 정보는 모든 목표 노드(102, 103, 104)에 똑같이 복제된다.
소스 노드(101)로부터 전송된 데이터는 목표 노드(102, 103, 104)에서 직접 소스 노드(101)와 동일한 명령어를 실행하게 함으로써 실시간으로 복제될 수도 있고, 파일로 저장되었다가 문제가 발생 시, 명령어를 실행하여 데이터를 복제할 수도 있다.
2.1.2 복제대상 관리부(Specification Manager, 402)
사용자가 복제를 원하는 데이터 즉, 특정 디렉터리(directory) 또는 파일들은 복제대상 관리부(402)에 의하여 복제대상 목록에 등록되고 모니터링된다. 특별히 복제에서 제외하고자 하는 디렉터리나 파일 등이 있을 수 있으며 이 또한 복제대상 관리부(402)에 의하여 등록되고, 관리된다. 사용자는 또한 소스 노드(101)에서 특정 응용 프로그램(301)이 취급하는 데이터만 목표 노드(102, 103, 104)에 복제 또는 분산시킬 것을 원할 수 있다. 이 또한 복제대상 관리부(402)에 의하여 이루어질 수 있으며, 이를 위해 복제대상 관리부(402)는 응용 프로그램(301)의 정보 및 상태를 등록하고, 모니터링한다.
2.1.3 인터셉터부(403)
데이터 복제 시스템(100)의 소스 노드 모듈(201)은 운영 체제가(302) 제공하는 인터페이스를 활용하여 응용 프로그램(301)이 발생하는 입출력 관련 시스템 콜 및 명령어를, 응용 프로그램(301)의 수정 없이 가로챈다. 이들 명령어를 가로채는 방법으로 데이터 복제 시스템(100)은 훅킹, 또는 프로세스를 추적하면서 관련 명령어를 선택적으로 인터셉트하는 방법을 모두 제공한다.
여기서 전자의 방법 지원을 위하여 복제 시스템은 데이터 복제에 필요한 운영체제의 인터페이스를 훅킹하는 모듈을 운영체제의 커널에서 수행한다 (도 2 참조). 후자의 방법에서는 만약 응용 프로세스에서 fork 등을 수행, 자식 프로세스를 생성하여 수행한다면, 이 또한 추적하여 부모 프로세스에게 수행한 작업과 동일한 작업을 수행한다.
인터셉터부(403)는 가로챈 명령어에서 데이터 복제에 필요한 정보를 추출한다. 복제에 필요한 정보에는 복제되어야 할 실제 데이터, 데이터의 양, 데이터가 저장되어야 할 디렉터리 및 파일, 그리고 명령어를 수행하는 프로세스 등과 같은 정보가 포함된다. 이렇게 추출된 정보는 다른 모듈에서 처리될 수 있도록 일정한 형태로 메모리에 저장되며, 이 후 응용 프로그램(301)은 원래의 수행 흐름(control flow)대로 진행된다. 즉, 데이터 복제 시스템(100)의 인터셉터부(403) 부분만 응용 프로그램(301)의 수행에 영향을 주며, 이후는 응용 프로그램(301)의 수행과 데이터 복제 시스템(100)이 동시에 동작하므로, 데이터 복제 시스템(100)의 동작이 응용 프로그램(301)의 성능에 거의 영향을 미치지 않는다. 따라서, 응용 프로그램(301)의 성능에 거의 영향을 미치지 않고, 데이터 복제가 수행될 수 있다.
2.1.4 요청부(Requestor, 404)
인터셉터부(403)에 의해 추출되어 저장된 데이터 복제를 위한 정보는, 요청부(404)에 의하여 재구성된다. 즉, 데이터 복제를 위한 정보가, 목표 노드(102, 103, 104)에서 데이터 복제를 위하여 필요한 명령어가 수행될 수 있는 형 태(format)로 재구성된다. 소스 노드(101)의 운영 체제와(302) 목표 노드(102, 103, 104의 운영 체제가(303) 다른 경우, 예를 들어, 소스 노드(101)의 운영 체제가(302) 리눅스(Linux)이고 목표 노드(102, 103, 104)의 운영 체제가(303) 마이크로소프트(Microsoft)사의 윈도우(Windows)인 경우, 소스 노드(101)에서 실행된 명령어는 목표 노드(102, 103, 104)에서 그대로 실행될 수 없다. 따라서, 소스 노드(101)에서 실행된 명령어에 상응하는 명령어가 목표 노드(102, 103, 104)에서 실행될 수 있는 조치가 필요하며, 이는 요청부(404)에 의해 이루어진다.
도 6에 나타낸 바와 같이, 요청부(404)에 의하여 재구성된 명령어는 메시지큐(message queue, 501)에 저장된다. 메시지큐(501)는 큐의 일종이다. 여기서, 목표 노드(102, 103, 104) 또는 네트워크에 이상이 생겨 데이터 복제를 더 이상 진행할 수 없을 경우가 발생할 수 있다. 이런 경우, 이상이 발생한 목표 노드(102, 103, 104)로 전송될 명령어는 메시지큐(501)에 저장되지 않고 목표 노드(102, 103, 104)에서 정상적으로 데이터 복제가 가능할 때까지 후술하는 로그 관리부(log manager, 410)가 생성한 특정 파일에 저장된다.
2.1.5 통신 관리부(Communication Manager, 405)
통신 관리부(405)는 소스 노드(101)와 목표 노드(102, 103, 104) 간의 통신을 담당한다. 통신 관리부(405)는 앞서 그 기능을 설명한 메시지큐(501)와, 수신큐(502), 확인큐(503) 및 송수신부(504)를 포함한다.
요청부(404)에 의해 목표 노드(102, 103, 104)에서 수행될 수 있는 형태로 재구성된, 복제할 데이터가 포함된 명령어(message)가 요청부(404)로부터 메시지큐(501)로 전송된다. 송수신부(504)는 메시지큐(501)에 저장되어 있는 명령어를 목표노드(102, 103, 104)로 송신한다. 그 후, 송수신부(504)는 목표노드(102, 103, 104)로 송신된 명령어에 대한 목표노드(102, 103, 104)에서의 처리여부(ACK)를 목표노드(102, 103, 104)로부터 수신하고, 수신된 처리여부(ACK)를 수신큐(502)에 저장한다.
이때, 목표 노드(102, 103, 104)로 제대로 전송된 명령어는 확인큐(confirm queue, 503)로 이동된다. 확인큐(503)는 후술하는 로그 관리부(410)에 의하여 관리된다. 로그 관리부(410)는 수신큐(502)로부터 메시지를 가져와 해석하고 확인큐(503)에 저장되어 있는 메시지의 제거 또는 다른 절차를 밟을 것인가 여부를 판단한다.
소스 노드(101)와 목표 노드(102, 103, 104) 사이에서 데이터 복제는 동기화 방식(synchronous mode) 또는 비동기화 방식(asynchronous mode)으로 이루어질 수 있다. 동기화 방식의 수행에서는 소스 노드(101)로부터 전송된 명령어에 대한 처리가 목표 노드(102, 103, 104)에서 모두 처리 된 후 소스 노드(101)에서 다른 명령어를 전송하여 데이터를 복제하는 방식이다. 반면 비동기화 방식의 수행에서는 목표 노드(102, 103, 104)에서의 명령어 처리에 무관하게, 데이터 복제에 필요한 명령어를 계속해서 목표 노드(102, 103, 104)로 전송하고 데이터 복제 여부를 나중에 확인하는 방식이다.
2.2 목표 노드 모듈(202)
도 5에 나타낸 바와 같이, 목표 노드 모듈(202)은 소스 노드 관리부(source node manager, 406), 데이터 맵핑부(data mapper, 407), 실행부(executor, 408) 및 통신 관리부(communication manager, 409)를 포함한다.
2.2.1 소스 노드 관리부(406)
하나의 목표 노드(102, 103, 104)는 여러 소스 노드(101)로부터 데이터의 복제를 요구받을 수 있다. 따라서 목표 노드(102, 103, 104)는 데이터를 제공하는 소스 노드(101)의 구성 정보를 생성 관리하여야 하며, 이들의 상태 정보를 유지하여야 한다. 소스 노드(101)에서 문제가 발생한 것이 의심되면 유틸리티부(412)의 오류 검출기에 의하여 문제 발생 여부가 확인되며, 확인된 정보는 소스 노드 관리부(406)로 전달된다. 이때 다른 모듈들은 이들 정보를 바탕으로 적절한 조치를 취하게 된다. 소스 노드들(101)의 구성 정보는 모든 목표 노드(102, 103, 104)에 똑같이 복제된다.
2.2.2 데이터 맵핑부( 407)
소스 노드(101)로부터 목표 노드(102, 103, 104)로 전송된 명령어는, 목표 노드(102, 103, 104)에서 실시간으로 실행되어 복제될 수도 있고, 일단 파일로 저장된 후, 필요할 때 명령어가 실행되어 복제될 수도 있다. 이때 소스 노드(101)로 부터 전송된 시스템 콜 및 명령어들은 여러 응용 프로그램(301)에 의해 여러 파일 또는 디렉터리에 대하여 실행된 것일 수 있다. 따라서 목표 노드(102, 103, 104)에서는 이들에 대한 구분이 필요하며, 데이터 맵핑부(407)는 이들을 구분하여 목표 노드(102, 103, 104)에서 정확한 명령어가 정확한 대상에 대하여 수행될 수 있도록 해준다. 예를 들어 소스 노드(101)에서 동일한 파일을 여러 프로세스가 공유하여 데이터를 변경시킨다면, 목표 노드(102, 103, 104)에서도 이와 동일한 상황을 재현하여 소스 노드(101)에서 명령어가 수행된 동일한 순서로 명령어를 수행시켜 소스 노드(101)에 저장된 데이터와 동일한 데이터가 저장되도록 하여야 한다.
2.2.3 실행부(408)
실행부(408)는 통신 관리부(409)에 의해 후술하는 메시지큐(601)에 저장된 메시지를 차례로 가져와 분석하는 분석부와, 분석부에서 분석된 메시지를 기반으로 데이터 복제에 필요한 명령어를 실제로 실행하는 명령실행부를 포함한다. 이때, 메시지큐(601)에 저장된 명령어에 대한 메시지는 실시간으로 분석, 실행되거나, 혹은 특정 파일에 이들 정보를 저장하였다가 이후에 분석되고 실행될 수 있다. 후자의 경우, 메시지큐(601)에 저장된 모든 정보는 로그 관리부(410)에 의해 특정 파일에 저장되며, 데이터 복제를 실제로 수행할 때 실행부(408)에 의하여 액세스된다. 전자의 경우는 실행부(408)가 직접 메시지큐(601)를 액세스하여 메시지를 분석하고, 명령어를 실행한다.
목표 노드(102, 103, 104)에서 명령어를 실행하는 과정은 소스 노드(101)에 서 명령어가 실행되는 과정과 동일하여야 한다. 이를 위해 실행부(408)는 데이터 맵핑부(407)와 공조하여 정확한 명령어가, 정확한 대상에, 정확한 순서로 실행될 수 있도록 한다. 이때 실행된 명령어 및 실행 결과에 대한 정보는 통신 관리부(603)에 의하여 소스 노드(101)로 전송된다. 통신 관리부(603)의 구성 및 동작에 관해서는 도 7을 참조하여 후술하도록 한다.
2.2.4 통신 관리부(Communication Manager, 409)
목표 노드(102, 103, 104)의 통신 관리부(409)는 기본적으로 소스 노드(101)로부터 전송된 메시지를 수신하고, 메시지 처리 결과에 대한 정보를 소스 노드(101)로 전송하는 역할을 수행한다. 통신 관리부(409)는 도 7에 나타낸 바와 같이, 메시지큐(601), 송신큐(602) 및 송수신부(603)를 포함한다. 소스 노드(101)로부터 수신된 메시지는 메시지큐(601)에서 관리되며, 실행부(408)에 의해 하나하나 분석되고 후속 작업이 수행된다. 이때 메시지큐(601)는 소스 노드(101) 별로 별도로 존재한다.
데이터 복제에 필요한 명령어의 수행 결과에 대한 정보는 실행부(408)에 의해 송신큐(602)에 저장되며, 이 송신큐(602)에 저장된 메시지는 송수신부(603)에 의해 소스 노드(101)로 전송된다.
2.3 공통 모듈(203)
공통 모듈(203)은 소스 노드(101) 및 목표 노드(102, 103, 104)에서 동시에 동작하는 모듈로서, 도 5에 나타낸 바와 같이, 로그 관리부(410), 오류 관리부(fault manager, 411) 및 유틸리티부(utility, 412를 포함한다.
2.3.1 로그 관리부(410)
로그 관리부(410)는 목표 노드(102, 103, 104)로 전송된 명령어에 대한 기록을 관리하고, 목표 노드(102, 103, 104)로 전송된 명령어에 대한 목표 노드(102, 103, 104)에서의 처리 결과를 모니터링한다. 즉, 소스 노드 측 통신 관리부(405)의 수신큐(502)에 저장된 메시지를 해석하여, 목표 노드(102, 103, 104)에서의 데이터 복제 성공 여부를 판단한 후 확인큐(504)로부터 상응하는 메시지를 삭제하거나 또는 메시지큐(501)에 다시 메시지를 저장하여 소스 노드 모듈(201)이 데이터 복제를 재시도하도록 한다. 이때, 재시도된 데이터 복제가 다시 실패하면 유틸리티부(412)의 오류 검출부(fault detector)에 목표 노드(102, 103, 104)의 상태 등을 파악하도록 지시한다. 만약 목표 노드(102, 103, 104) 또는 네트워크에 문제가 생겨 더 이상 데이터를 복제할 수 없을 경우, 로그 관리부(410)는 확인큐(503)에서 문제가 발생한 노드로 전송된 메시지를 특정 파일로 저장한다. 이때부터 요청부(404)는 이상이 발생한 목표 노드로 보낼 메시지를 메시지큐(501)에 저장하지 않고, 로그 관리부(410)가 생성한 특정 파일에 저장한다.
목표 노드(102, 103, 104)의 메시지큐(601)에 저장된 명령어는 특정 파일에 저장된 후, 이후 분석 및 실행될 수 있다. 이때 로그 관리부(410)는 특정 파일을 생성하고 메시지큐(601)에 저장된 명령어를 파일에 저장한다.
2.3.2 오류 관리부(Fault Manager, 411)
유틸리티부(412)의 오류 검출부에 의하여 문제 발생 여부가 확인되면, 오류 관리부(411)는 문제의 발생 원인을 확인하여 문제의 종류에 따라 문제를 적절히 처리한다. 문제의 원인이 소스 노드(101)에 있을 때와 목표 노드(102, 103, 104)에 있을 때에 따라서 문제를 처리하는 방식이 달라질 수 있으며, 이를 위해 오류 관리부(411)는 이들 노드(101, 102, 103, 104) 사이의 장애극복(failover)과 전환(switchover) 메커니즘(mechanism)을 제공한다.
목표 노드(102, 103, 104)에서 문제가 해결되어 정상적으로 데이터 복제가 가능하게 되면, 장애극복 과정을 거치게 된다. 이때 가장 중요한 것 중의 하나는 목표 노드(102, 103, 104)에서 이상이 발생한 동안 복제되지 않은 데이터를 먼저 복제하고 정상적으로 후속 데이터에 대한 복제를 할 수 있도록 하는 것이다. 이 과정에서 오류 관리부(411)는 로그 관리부(410)에 의하여 생성된 파일을 목표 노드(102, 103, 104)로 전송하며, 전송된 파일의 처리가 목표 노드(102, 103, 104)에서 완료된 후 정상적인 데이터 복제 과정이 수행되도록 한다.
소스 노드(101)에서 문제가 발생한 경우, 반대로 목표 노드(102, 103, 104) 중 어느 하나가 소스 노드(101)가 될 수 있으며, 이때 위에서 설명한 과정을 거치게 된다. 이상이 발생한 소스 노드(101)가 정상적으로 동작하게 되면 원래대로 노드 들의 역할을 환원시킬 수 있다.
2.3.3 유틸리티부(412)
유틸리티부(412)는 데이터 복제 시스템(100)을 사용할 수 있는 기본적인 환경을 제공한다. 복제 시스템(100)을 사용할 수 있는 기본적인 환경이란 데이터 복제 시스템(100)을 사용자가 운용할 수 있는 하드웨어적 환경 및 소프트웨어적 환경 중 적어도 어느 하나를 의미한다. 또한, 유틸리티부(412)는 소스 노드(101)와 목표 노드(102, 103, 104) 등의 상태를 모니터링하여, 문제 발생 여부를 판단하고, 이에 대한 처리를 다른 모듈에서 할 수 있도록 한다.
이상 본 발명에 따른 데이터 복제 시스템(100)을 첨부된 도면과 예시적인 실시예를 들어 상세히 설명하였다. 상세한 설명에서 제시한 실시예는 예시적인 것에 불과하며 본 발명의 권리범위가 이 실시예로 한정되는 것은 아니다. 본 발명의 권리범위는 이하의 특허청구범위에 의하여 특정되어야 하며, 본 발명의 사상을 벗어나지 않는 범위 내에서, 상세한 설명에서 설명한 실시에의 변형예, 등가 실시예 등도 본 발명의 권리범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명에 따른 데이터 복제 시스템(100)이 적용될 수 있는 소스 노드(101)와 목표 노드(102, 103, 104)를 포함하는 네트워크를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따라 응용 프로그램의 입출력 시스템 콜을 훅킹하는 과정을 나타낸 도면이다.
도 4은 데이터 복제 시스템(100)의 기본 구조 및 데이터 복제 수행 과정을 나타낸다.
도 5는 본 발명에 따른 데이터 복제 시스템(100)을 나타낸 도면이다.
도 6는 본 발명에 따른 메시지 복제 시스템(100)의 소스 노드에서의 명령어의 전송 흐름을 나타내는 도면이다.
도 7은 본 발명에 따른 메시지 복제 시스템(100)의 목표 노드에서의 명령어의 전송 흐름을 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
100 : 데이터 복제 시스템
101 : 소스 노드
102, 103, 104 : 목표 노드
201 : 소스 노드 모듈
202 : 목표 노드 모듈
203 : 공통 모듈
301 : 응용 프로그램
302, 303 : 운영 시스템(operating system)
401 : 목표 노드 관리부
402 : 복제대상 관리부
403 : 인터셉터부
404 : 요청부
405 : 통신 관리부
406 : 소스 노드 관리부
407 : 데이터 맵핑부
408 : 실행부
409 : 통신 관리부
410 : 로그 관리부
411 : 오류 관리부
412 : 유틸리티부
501, 601 : 메시지큐
502 : 수신큐
503 : 확인큐
504, 603 : 송수신부
602 : 송신큐

Claims (9)

  1. 삭제
  2. 소스 노드(source node)에서 저장되는 데이터를 하나 이상의 목표 노드(target node)로 복제하는 데이터 복제(data replication) 시스템에 있어서,
    적어도 상기 소스 노드에 설치되고, 상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹(hooking) 또는 인터셉트(intercept)하여 상기 목표 노드로 전송하는 소스 노드 모듈(source node module);
    적어도 상기 목표 노드에 설치되고, 상기 소스 노드 모듈로부터 전송 받은 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리함으로써, 상기 소스 노드에 저장되는 레코드 레벨의 데이터가 상기 목표 노드에도 저장되게 하는 목표 노드 모듈(target node module); 및
    상기 소스 노드 모듈 및 상기 목표 노드 모듈에서의 명령어 처리를 관리하는 공통 모듈(common module)을 포함하고,
    상기 소스 노드 모듈은,
    상기 목표 노드의 구성 정보를 생성 및 관리하는 목표 노드 관리부(target node manager);
    상기 소스 노드로부터 상기 목표 노드로 복제되는 특정 디렉터리(directory) 또는 파일을 복제대상 목록에 등록하고 모니터링하는 복제대상 관리부;
    상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹 또는 인터셉트하고, 상기 명령어에서 데이터 복제에 필요한 정보를 추출하는 인터셉터부(interceptor);
    상기 인터셉터부에 의하여 추출된 상기 데이터 복제에 필요한 정보를 상기 목표 노드에서 수행될 수 있는 형태로 재구성하는 요청부(requestor); 및
    상기 요청부에서 재구성된 상기 정보를 상기 목표 노드 모듈로 전송하는 소스 노드 측 통신 관리부(communication manager)를 포함하는, 데이터 복제 시스템.
  3. 제2항에 있어서,
    상기 소스 노드 측 통신 관리부는,
    상기 요청부에서 재구성된 상기 정보를 저장하는 메시지큐(message queue);
    상기 메시지큐에 저장된 상기 정보를 상기 목표 노드로 송신하고, 상기 목표 노드로부터 데이터 복제 결과를 수신하는 송수신부;
    상기 송수신부에서 송신된 정보를 옮겨 저장하는 확인큐 (confirm queue); 및
    상기 목표노드로부터 수신되는 상기 데이터 복제 결과를 저장하는 수신큐(receive queue)를 포함하는, 데이터 복제 시스템.
  4. 소스 노드(source node)에서 저장되는 데이터를 하나 이상의 목표 노드(target node)로 복제하는 데이터 복제(data replication) 시스템에 있어서,
    적어도 상기 소스 노드에 설치되고, 상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹(hooking) 또는 인터셉트(intercept)하여 상기 목표 노드로 전송하는 소스 노드 모듈(source node module);
    적어도 상기 목표 노드에 설치되고, 상기 소스 노드 모듈로부터 전송 받은 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리함으로써, 상기 소스 노드에 저장되는 레코드 레벨의 데이터가 상기 목표 노드에도 저장되게 하는 목표 노드 모듈(target node module); 및
    상기 소스 노드 모듈 및 상기 목표 노드 모듈에서의 명령어 처리를 관리하는 공통 모듈(common module)을 포함하고,
    상기 목표 노드 모듈은,
    상기 소스 노드의 구성 정보를 생성 및 관리하는 소스 노드 관리부;
    상기 소스 노드 모듈로부터 전송받은 입출력 관련 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리하기 위한 데이터 맵핑부(data mapper);
    상기 소스 노드로부터 전송받은 입출력 관련 명령어를 상기 목표노드에서 실행하는 실행부(executor); 및
    상기 소스 노드 모듈로부터 상기 입출력 관련 명령어를 수신하고, 상기 목표 노드 모듈에서의 상기 소스 노드 모듈로부터 수신된 명령어의 처리 결과를 상기 소스 노드 모듈로 송신하는 목표 노드 측 통신 관리부를 포함하는, 데이터 복제 시스템.
  5. 제4항에 있어서,
    상기 목표 노드 측 통신 관리부는,
    상기 소스 노드로부터 전송되는 명령어를 수신하고, 상기 명령어의 처리 결과를 송신하는 송수신부;
    상기 송수신부가 수신한 명령어를 저장하는 메시지큐;
    상기 실행부에서의 상기 명령어의 처리 결과를 저장하는 송신큐(transmit queue)를 포함하는, 데이터 복제 시스템.
  6. 소스 노드(source node)에서 저장되는 데이터를 하나 이상의 목표 노드(target node)로 복제하는 데이터 복제(data replication) 시스템에 있어서,
    적어도 상기 소스 노드에 설치되고, 상기 소스 노드에서 처리되는 입출력 관련 명령어를 훅킹(hooking) 또는 인터셉트(intercept)하여 상기 목표 노드로 전송하는 소스 노드 모듈(source node module);
    적어도 상기 목표 노드에 설치되고, 상기 소스 노드 모듈로부터 전송 받은 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리함으로써, 상기 소스 노드에 저장되는 레코드 레벨의 데이터가 상기 목표 노드에도 저장되게 하는 목표 노드 모듈(target node module); 및
    상기 소스 노드 모듈 및 상기 목표 노드 모듈에서의 명령어 처리를 관리하는 공통 모듈(common module)을 포함하고,
    상기 공통 모듈은,
    상기 소스 노드 모듈로부터 상기 목표 노드 모듈로 전송된 입출력 관련 명령어에 대한 처리 결과를 관리하고, 상기 소스 노드 모듈로부터 상기 목표 노드 모듈로 데이터 복제의 성공 여부에 따라, 상기 소스 노드 모듈이 상기 입출력 관련 명령어 전송을 재시도하게 하는 로그 관리부;
    상기 소스 노드 및 상기 목표 노드 중 적어도 어느 하나의 오류 발생 시, 상기 오류를 처리하는 오류 관리부; 및
    상기 데이터 복제 시스템의 사용 환경을 제공하는 유틸리티부를 포함하는, 데이터 복제 시스템.
  7. 소스 노드에서 저장되는 데이터를 하나 이상의 목표 노드로 복제하는 데이터 복제 방법에 있어서,
    소스 노드에서 실행되는 입출력 관련 명령어를 훅킹 또는 인터셉트하는 단계;
    상기 입출력 관련 명령어를 상기 목표 노드의 운영 시스템(operating system)에 적합하게 변환하는 단계;
    상기 변환된 입출력 관련 명령어를 상기 목표 노드로 전송하는 단계;
    상기 소스 노드 모듈로부터 전송받은 입출력 관련 명령어를 상기 소스 노드에서 처리되는 방식과 동일한 방식으로 상기 목표 노드에서 처리하기 위하여 정확한 명령어가 정확한 대상에 대하여 수행될 수 있도록 데이터를 맵핑하는 단계;
    상기 목표 노드로 전송된 입출력 관련 명령어를 상기 소스 노드에서 실행된 방식과 동일한 방식으로 상기 목표 노드에서 실행하는 단계; 및
    상기 목표 노드에서의 상기 입출력 관련 명령어의 실행 결과를 상기 소스 노드로 전송하는 단계를 포함하는, 데이터 복제 방법.
  8. 제7항에 있어서,
    상기 목표 노드에서 상기 입출력 관련 명령어의 실행이 실패한 경우, 상기 소스 노드로부터 상기 목표 노드로 상기 입출력 관련 명령어를 재전송하는 단계를 더 포함하는, 데이터 복제 방법.
  9. 제7항 또는 제8항의 방법을 컴퓨터로 실행하기 위한 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록 매체.
KR1020080049646A 2008-05-28 2008-05-28 실시간 데이터 복제 시스템 KR101024249B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080049646A KR101024249B1 (ko) 2008-05-28 2008-05-28 실시간 데이터 복제 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080049646A KR101024249B1 (ko) 2008-05-28 2008-05-28 실시간 데이터 복제 시스템

Publications (2)

Publication Number Publication Date
KR20090123518A KR20090123518A (ko) 2009-12-02
KR101024249B1 true KR101024249B1 (ko) 2011-03-29

Family

ID=41685746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080049646A KR101024249B1 (ko) 2008-05-28 2008-05-28 실시간 데이터 복제 시스템

Country Status (1)

Country Link
KR (1) KR101024249B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190062197A (ko) 2017-11-27 2019-06-05 주식회사 데이타커맨드 연속 데이터 관리 시스템 및 방법
US11138156B2 (en) 2017-11-27 2021-10-05 DataCommand Corp. Continuous data management system and operating method thereof

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482971B1 (ko) * 2014-06-25 2015-01-16 주식회사 엔트리브 듀얼 에뮬레이터를 이용한 실시간 데이터 백업시스템 및 백업방법
KR101826827B1 (ko) 2017-10-11 2018-02-09 (주)데이타뱅크시스템 데이터베이스 간의 실시간 통합 복제 시스템
CN110532113B (zh) * 2019-08-30 2023-03-24 北京地平线机器人技术研发有限公司 信息处理方法、装置、计算机可读存储介质及电子设备
KR102405890B1 (ko) * 2020-09-28 2022-06-08 주식회사 데이타커맨드 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010079365A (ko) * 2001-07-09 2001-08-22 유영진 네트웍 컴퓨터의 프로그램 실시간 이벤트 공유 처리 방법및 시스템
KR20070059095A (ko) * 2004-08-12 2007-06-11 텔레콤 이탈리아 소시에떼 퍼 아찌오니 통신 네트워크를 통한 데이터 세트 업데이트 시스템, 방법및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010079365A (ko) * 2001-07-09 2001-08-22 유영진 네트웍 컴퓨터의 프로그램 실시간 이벤트 공유 처리 방법및 시스템
KR20070059095A (ko) * 2004-08-12 2007-06-11 텔레콤 이탈리아 소시에떼 퍼 아찌오니 통신 네트워크를 통한 데이터 세트 업데이트 시스템, 방법및 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190062197A (ko) 2017-11-27 2019-06-05 주식회사 데이타커맨드 연속 데이터 관리 시스템 및 방법
US11138156B2 (en) 2017-11-27 2021-10-05 DataCommand Corp. Continuous data management system and operating method thereof

Also Published As

Publication number Publication date
KR20090123518A (ko) 2009-12-02

Similar Documents

Publication Publication Date Title
US10114834B2 (en) Exogenous virtual machine synchronization and replication
KR100575497B1 (ko) 내고장성 컴퓨터 시스템
US9563684B1 (en) Replication cookie
US5621885A (en) System and method for providing a fault tolerant computer program runtime support environment
US10282259B1 (en) System and method for event-driven live migration of multi-process applications
US6367029B1 (en) File server system tolerant to software and hardware failures
US7882393B2 (en) In-band problem log data collection between a host system and a storage system
US20180039436A1 (en) Replication based security
EP2062139B1 (en) Method for improving transfer of event logs for replication of executing programs
US8458422B1 (en) Policy based creation of export sets and backup media
US7613597B2 (en) Non-intrusive method for simulation or replay of external events related to an application process, and a system implementing said method
US8539434B2 (en) Method for the management, logging or replay of the execution of an application process
JP4570312B2 (ja) コンピュータシステムにおいてボリュームスナップショット依存関係を提供する方法および装置
KR101024249B1 (ko) 실시간 데이터 복제 시스템
KR20140025503A (ko) 서비스의 2차 위치에서의 작업의 재생 기법
US10725980B2 (en) Highly available cluster agent for backup and restore operations
WO2020088533A1 (zh) 虚拟化平台的容灾方法及装置
US7120821B1 (en) Method to revive and reconstitute majority node set clusters
US10860411B2 (en) Automatically detecting time-of-fault bugs in cloud systems
US9734022B1 (en) Identifying virtual machines and errors for snapshots
US11550677B2 (en) Client-less database system recovery
CN112261114A (zh) 一种数据备份系统及方法
JP3467750B2 (ja) 分散オブジェクト処理システム
CN113934575A (zh) 一种基于分布式拷贝的大数据备份系统及方法
US8533331B1 (en) Method and apparatus for preventing concurrency violation among resources

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140317

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150911

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160309

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180109

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200309

Year of fee payment: 10