KR20150010242A - 비대칭 파일 시스템의 데이터 복제 방법 - Google Patents

비대칭 파일 시스템의 데이터 복제 방법 Download PDF

Info

Publication number
KR20150010242A
KR20150010242A KR20130084967A KR20130084967A KR20150010242A KR 20150010242 A KR20150010242 A KR 20150010242A KR 20130084967 A KR20130084967 A KR 20130084967A KR 20130084967 A KR20130084967 A KR 20130084967A KR 20150010242 A KR20150010242 A KR 20150010242A
Authority
KR
South Korea
Prior art keywords
data
replication
data server
server
data block
Prior art date
Application number
KR20130084967A
Other languages
English (en)
Other versions
KR102137217B1 (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 KR1020130084967A priority Critical patent/KR102137217B1/ko
Priority to US14/071,796 priority patent/US20150026126A1/en
Publication of KR20150010242A publication Critical patent/KR20150010242A/ko
Application granted granted Critical
Publication of KR102137217B1 publication Critical patent/KR102137217B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

비대칭 파일 시스템에서 데이터 서버에 저장된 데이터를 효율적으로 복제할 수 있는 방법이 제공된다. 네트워크의 복제 처리 장치는 데이터 복제 작업을 수행하고 있지 않은 데이터 서버에만 복제 요청을 전송함으로써, 데이터 블록의 복제 시간을 단축할 수 있고, 데이터 서버에서 전송된 응답 메시지를 참고하여 타임 아웃을 연장할 수 있다. 또한, 각 데이터 서버는 파이프라인 데이터 전송 방식을 통해 다른 데이터 서버로 사본 데이터를 효율적으로 전송할 수 있다.

Description

비대칭 파일 시스템의 데이터 복제 방법 {Method of data re-replication in asymmetric file system}
본 발명은 비대칭 대용량 파일 시스템에서 데이터를 병렬적으로 복제하는 방법에 관한 것이다.
통상, 데이터 서버는 하드디스크 또는 솔리드 스테이트 드라이브(solid state drive, SSD) 등을 저장 매체로 이용하여 데이터를 저장하고 관리한다. 이때, 데이터 서버의 데이터 처리 성능은 저장 매체의 성능에 의존적이다. 이 경우, 여러 개의 데이터 요청을 동시에 처리할 때 데이터 처리 성능이 떨어질 수 있다.
한편, 대부분의 대용량 저장매체(storage) 시스템은 확장성을 확보하기 위하여 메타 데이터와 데이터를 관리 서버와 데이터 서버로 분리 처리하는 비대칭 구조를 채택하였다. 즉, 대용량 스토리지 시스템에서 데이터 서버는 사용자의 데이터를 저장하고 관리하며, 메타데이터 관리 서버는 메타 데이터를 저장하고 관리한다.
데이터를 저장하고 있는 데이터 서버는 저장 매체의 데이터 블록을 읽은 후, 네트워크를 통해 다른 데이터 서버로 데이터를 전송하고, 데이터를 수신한 데이터 서버가 저장 매체의 데이터 블록에 수신한 데이터를 기록함으로써 데이터가 복제될 수 있다. 이때, 저장 매체에서 데이터를 읽고 저장 매체에 데이터를 쓰는데 대부분이 시간이 소요된다.
대용량 스토리지 시스템에서 데이터의 재복제(re-replication)는 데이터 서버에 많은 읽기/쓰기 부하를 발생시킬 수 있다. 또한, 하나의 데이터 서버에는 최대 데이터 블록 읽기/쓰기 성능이 정해져 있으므로, 데이터가 여러 번 복제되는 경우 복제 성능이 향상되기 어렵다. 또한, 다량의 데이터를 복제하면, 스토리지 서비스의 성능이 저하될 수 있다.
통상 대용량 스토리지 시스템은 다수의 저장 매체를 포함하는 다수의 데이터 서버로 구성될 수 있다. 이때, 각 데이터 서버의 데이터 처리 성능이 제한적이기 때문에, 각 데이터 서버에서 대량의 데이터 복제 요청을 수신하여도, 많은 시간이 소요될 수 있다.
한편, 스토리지 시스템에서는 데이터 서버에 고장이 발생할 경우를 대비하여 데이터를 복제하여 다른 데이터 서버에 저장한다. 따라서 데이터 서버가 고장 나더라도, 시스템에 포함된 다른 데이터 서버로부터 복제된 데이터가 제공됨으로써 스토리지 시스템의 가용성이 보장될 수 있다.
이때, 이러한 가용성 보장을 위한 데이터 복제는 많은 데이터 서버에 부하를 발생시킬 수 있고, 사용자에게 스토리지 서비스를 제공할 때 데이터 병목 현상도 발생시킬 수 있다.
따라서, 본 발명의 실시 예에서는, 데이터 복제 요청을 처리하는 속도를 제어하여 원활한 스토리지 서비스를 제공할 수 있는 방법을 제공한다.
본 발명의 한 실시 예에 따르면, 복제 처리 장치에서 복수의 데이터 서버에 저장된 데이터 블록을 복제하는 방법이 제공된다. 상기 데이터 블록을 복제하는 방법은, 복수의 데이터 서버 중 적어도 두 개의 서버에서 상기 데이터 블록의 복제를 수행할 수 있는지 판단하는 단계, 데이터 블록의 복제를 수행할 수 있다면, 적어도 두 개의 데이터 서버 중, 데이터 블록이 저장되어 있는 제1 데이터 서버와 데이터 블록이 저장되어 있지 않은 제2 데이터 서버를 선택하는 단계, 제1 데이터 서버로 데이터 블록의 복제 요청을 전송하는 단계, 그리고 제1 데이터 서버로부터 응답 메시지를 수신하는 단계를 포함한다.
상기 데이터 블록을 복제하는 방법에서 판단하는 단계는, 복제 처리 장치의 복제 요청 큐에 대기하고 있는 복제 요청의 개수를 복제 가용 세마포어와 비교하는 단계, 그리고 복제 요청의 개수가 복제 가용 세마포어보다 적다면 데이터 블록의 복제를 수행할 수 있는 것으로 판단하는 단계를 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 복제 가용 세마포어는, 데이터 서버 사이의 병렬성 값과 데이터 서버 내의 병렬성 값을 이용하여 계산될 수 있다.
상기 데이터 블록을 복제하는 방법에서 데이터 서버 사이의 병렬성 값은 온라인(on-line) 상태인 데이터 서버의 개수를 2로 나눈 값이 될 수 있다.
상기 데이터 블록을 복제하는 방법은 데이터 블록의 위치 정보를 포함하고 있는 파일 메타데이터를 검색하여, 데이터 블록을 복제할 것인지 결정하는 단계를 더 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 결정하는 단계는, 파일 메타데이터에 포함된 복수의 데이터 블록의 개수가 복제 처리 장치에 설정된 목표 사본 개수보다 적을 때 데이터 블록의 복제를 결정할 수 있다.
상기 데이터 블록을 복제하는 방법에서 선택하는 단계는, 제1 데이터 서버 및 제2 데이터 서버의 서버 자원 세마포어를 통해 제1 데이터 서버 및 제2 데이터 서버가 각각 데이터 블록의 복제 작업을 수행할 수 있는지 판단하는 단계, 그리고 제1 데이터 서버 및 제2 데이터 서버에 각각 서버 자원 세마포어가 존재하는 경우 제1 데이터 서버 및 상기 제2 데이터 서버를 선택하는 단계를 포함한다.
상기 데이터 블록을 복제하는 방법에서 전송하는 단계는, 제1 데이터 서버로 복제 요청의 요청 식별자 및 데이터 블록의 식별자를 전송하는 단계를 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 수신하는 단계는, 제1 데이터 서버에 저장되어 있던 데이터 블록이 제2 데이터 서버에 성공적으로 복제되었을 때 복제 요청에 대한 성공 알림이 포함된 응답 메시지를 수신하는 단계를 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 복제 요청을 전송하는 단계 이후에, 복제 요청에 대한 타임 아웃을 시작하는 단계를 더 포함하고, 응답 메시지를 수신하는 단계는, 응답 메시지를 기초로 상기 타임 아웃(time-out)을 종료할 지 결정하는 단계를 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 타임 아웃을 종료할 지 결정하는 단계는, 응답 메시지에 진행 중(inprogress) 메시지가 포함되어 있고, 복제 요청에 대한 타임 아웃이 종료 되기 전에 응답 메시지를 수신했다면, 타임 아웃을 다시 시작하는 단계를 더 포함할 수 있다.
상기 데이터 블록을 복제하는 방법에서 타임 아웃을 종료할 지 결정하는 단계는, 응답 메시지에 진행 중 메시지가 포함되어 있지 않거나, 복제 요청에 대한 타임 아웃이 종료 된 후에 응답 메시지를 수신했다면, 응답 메시지에 포함된 복제 요청에 대한 식별자를 인식하여 복제 요청 큐에서 복제 요청을 삭제하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따르면, 데이터 블록을 저장하고 있는 데이터 서버에서 데이터 블록을 복제하는 다른 방법이 제공된다. 상기 데이터 블록을 복제하는 다른 방법은, 복제 처리 장치로부터 네트워크를 통해 데이터 블록의 제1 복제 요청을 수신하는 단계, 데이터 블록 중 제1 부분을 미리 설정된 버퍼 크기만큼 읽어 들이는 단계, 제1 부분 중 읽어 들인 부분을 데이터 블록이 저장되어 있지 않은 제1 데이터 서버로 전송하는 단계, 복제 요청에 대한 진행 중 메시지를 복제 처리 장치로 전송하는 단계, 그리고 복제 처리 장치로부터 진행 중 메시지에 대한 응답으로 데이터 블록의 제2 복제 요청을 수신하는 단계를 포함한다.
상기 데이터 블록을 복제하는 다른 방법은, 제1 부분 중 읽어 들인 부분을 전송하는 단계 이후에, 데이터 블록 중 제2 부분을 미리 설정된 버퍼 크기만큼 읽어 들이는 단계, 제2 부분 중 읽어 들인 부분을 제1 데이터 서버로 전송하는 단계, 그리고 진행 중 메시지를 복제 처리 장치로 전송하는 단계를 더 포함할 수 있다.
상기 데이터 블록을 복제하는 다른 방법은, 진행 중 메시지를 전송하는 단계 이후에, 미리 설정된 슬립(sleep) 시간 동안 슬립하는 단계, 그리고 슬립 시간이 경과한 후 제1 부분의 나머지 부분을 상기 버퍼 크기만큼 읽어 들이는 단계, 그리고 나머지 부분 중 읽어 들인 부분을 제1 데이터 서버로 전송하는 단계를 더 포함할 수 있다.
상기 데이터 블록을 복제하는 다른 방법은, 진행 중 메시지를 전송하는 단계 이후에, 미리 설정된 슬립(sleep) 시간 동안 슬립하는 단계, 그리고 슬립 시간이 경과한 후 제2 부분의 나머지 부분을 버퍼 크기만큼 읽어 들이는 단계, 그리고 나머지 부분 중 읽어 들인 부분을 제1 데이터 서버로 전송하는 단계를 더 포함할 수 있다.
상기 데이터 블록을 복제하는 다른 방법에서 슬립 시간은 복제 처리 장치로부터 할당된 복제 대역폭, 데이터 서버의 서버 최대 대역폭, 그리고 버퍼 크기를 이용하여 미리 설정될 수 있다.
이와 같이 본 발명의 한 실시 예에 따르면, 비대칭 파일 시스템에서 데이터 서버에 저장된 데이터를 효율적으로 복제할 수 있는 방법이 제공된다. 네트워크의 복제 처리 장치는 데이터 복제 작업을 수행하고 있지 않은 데이터 서버에만 복제 요청을 전송함으로써, 데이터 블록의 복제 시간을 단축할 수 있고, 데이터 서버에서 전송된 응답 메시지를 참고하여 타임 아웃을 연장할 수 있다. 또한, 각 데이터 서버는 파이프라인 데이터 전송 방식을 통해 다른 데이터 서버로 사본 데이터를 효율적으로 전송할 수 있다.
도 1은 비대칭 스토리지 시스템을 나타낸 도면이다.
도 2는 메타데이터 서버의 데이터 구조를 나타낸 도면이다.
도 3은 파일 데이터의 복제를 관리하는 복제 처리 장치와 파일 데이터가 저장된 데이터 서버를 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 데이터 블록의 병렬 재복제 프로세스를 개략적으로 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 데이터 서버에 복제된 복수의 데이터 블록을 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 사본 데이터 블록을 할당하는 프로세스를 나타낸 흐름도이다.
도 7은 본 발명의 실시 예에 따른 데이터 블록을 병렬적으로 복제하는 과정을 나타낸 흐름도이다.
도 8은 본 발명의 실시 예에 따른 데이터 서버에서 파이프 라인 데이터 전송 방식에 따라 데이터 블록을 전송하는 프로세스를 나타낸 도면이다.
도 9는 본 발명의 실시 예에 따른 복제 처리 장치의 데이터 구조를 나타낸다.
도 10은 본 발명의 실시 예에 따른 복제 처리 장치가 데이터 블록을 복제하는 프로세스를 나타낸 도면이다.
도 11는 본 발명의 실시 예에 따른 데이터 블록 병렬 재복제 프로세스를 나타낸 흐름도이다.
도 12은 본 발명의 실시 예에 따른 복제 처리 장치에서 복제를 수행할 데이터 서버를 결정하는 프로세스를 나타낸 흐름도이다.
도 13은 본 발명의 실시 예에 따른 복제 처리 장치가 데이터 서버로부터 수신한 응답 메시지를 처리하는 프로세스를 나타낸 흐름도이다.
도 14는 본 발명의 실시 예에 따른 복제 처리 장치가 복제 처리 리스트를 갱신하는 프로세스를 나타낸 흐름도이다.
도 15는 본 발명의 한 실시 예에 따른 원본 데이터 서버에서 복제 요청을 처리하는 프로세스를 나타낸 흐름도이다.
도 16은 본 발명의 실시 예에 따른 복제 대역폭을 제어하는 프로세스를 나타낸 도면이다.
도 17은 본 발명의 실시 예에 따른 복제 처리 장치에서 타임 아웃을 적용하는 프로세스를 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 비대칭 스토리지 시스템을 나타낸 도면이다.
도 1을 참조하면, 비대칭 스토리지 시스템(100)은, 복수의 사용자 파일 시스템(110), 메타데이터 관리 서버(120), 그리고 복수의 데이터 서버(130)를 포함한다.
사용자 파일 시스템(110)은, 사용자로부터 파일에 관련된 요청을 받아서 메타데이터 관리 서버(120)로 파일의 메타데이터(앞으로 '파일 메타데이터'라 함)를 조회하고, 조회된 파일 메타데이터를 이용하여 파일의 실제 데이터(앞으로 '파일 데이터'라 함)를 저장하고 있는 데이터 서버(130)로 접근할 수 있다.
메타데이터 관리 서버(120)는, 파일 메타데이터를 관리함으로써 파일 데이터의 위치 정보를 관리한다. 이때, 메타데이터 관리 서버(120)는 사용자 파일 시스템의 요청에 대한 타당성을 검사하고, 조회된 파일 메타데이터를 사용자 파일 시스템으로 네트워크를 통해 전송할 수 있다.
데이터 서버(130)는, 파일 데이터를 관리하며, 사용자 파일 시스템(110)의 요청이 있을 때 디스크에 저장된 파일 데이터를 전달한다. 파일 데이터는 데이터 블록 단위로 데이터 서버(130)에 저장될 수 있다.
도 2는 메타데이터 서버의 데이터 구조를 나타낸 도면이다.
도 2를 참조하면, 메타데이터 서버는 파일 메타데이터와, 데이터 서버 관리 테이블을 관리한다.
파일 메타데이터는 복수의 데이터 블록을 포함하는데, 이때 각 데이터 블록은 파일 데이터의 일부에 대한 데이터 서버 식별자 및 데이터 블록 식별자를 포함한다. 그리고, 각 데이터 블록은 적어도 하나의 복사본을 포함할 수 있다.
데이터 서버 관리 테이블은 파일 데이터가 저장된 데이터 서버의 주소 및 상태(예를 들어, ONLINE, FAILED 등)를 유지한다.
사용자는 파일을 읽거나 쓰기 위해, 메타데이터 서버에 접속하여 파일 메타데이터를 가져온 뒤, 파일 메타데이터에서 파일 데이터가 저장된 데이터 서버의 데이터 서버 식별자를 알아내고, 데이터 서버 관리 테이블에 유지된 데이터 서버의 주소 및 상태에 따라 데이터 서버에 접근하여 파일 데이터를 내려 받을 수 있다.
도 2를 참조하면, 파일 메타데이터는 각 데이터 블록에 해당하는 파일 데이터의 부분의 위치 정보를 관리하고, 파일 데이터 부분의 위치 정보는 복제된 데이터 블록이 n개일 때 n개가 될 수 있다. 예를 들어 0번 데이터 블록에 해당하는 파일 데이터 부분의 위치 정보는 0번 데이터 블록의 복사본에 포함되어 있고, 0번 데이터 블록의 복사본이 2개이므로, 사용자는 복제 번호 0번의 데이터 서버 식별자 및 데이터 블록 식별자와 복제 번호 1번의 데이터 서버 식별자 및 데이터 블록 식별자 중 어느 하나를 통해 0번 데이터 블록에 해당하는 파일 데이터 부분이 저장된 데이터 서버를 알 수 있다.
도 3은 파일 데이터의 복제를 관리하는 복제 처리 장치와 데이터 서버에서 데이터 블록을 복제하는 프로세스를 나타낸 도면이다.
복제 처리 장치(310)는 목표 사본 개수(311), 데이터 서버내 병렬성(312), 그리고 복제 대역폭(313)을 관리한다.
목표 사본 개수(311)는 스토리지 시스템 전체에서 파일 데이터의 복제 건수를 나타낸다. 즉, 비대칭 파일 시스템(100)에서 특정 파일에 대응되는 파일 데이터는 미리 설정된 개수만큼 여러 개가 유지되므로, 특정 데이터 서버에 오류가 발생하면, 줄어든 복제 파일 데이터 개수만큼 목표 사본 개수(311)가 설정될 수 있다.
데이터 서버내 병렬성(312)은 데이터 블록을 복제할 때, 동시에 수행할 수 있는 복제 수를 나타낸다. 예를 들어, 데이터 서버가 심플(simple) 데이터 전송 방식으로 데이터 블록을 복제하면 응답 대기 시간 동안 다른 데이터 블록을 복제할 수 있으므로 데이터 서버내 병렬성은 2가 될 수 있고, 데이터 서버가 파이프 라인(pipelined) 데이터 전송 방식으로 데이터 블록을 복제하면, 응답 대기 시간이 없으므로 데이터 서버내 병렬성은 1이 될 수 있다.
복제 대역폭(313)은 데이터 서버 간 데이터를 복제할 때 데이터 서버 사이에서 가용한 최대 대역폭 수치를 나타낸다.
다음 복제 처리 장치(310)와 데이터 서버 사이에서 데이터 블록을 복제하는 프로세스를 알아본다.
먼저, 복제 처리 장치(310)는 특정 파일 데이터에 대한 복제 요청 이벤트가 감지된 경우, 복제 처리 장치는 복제된 파일 데이터가 저장될 데이터 서버(사본 데이터 서버)(330)로 데이터 블록의 생성을 요청한다(S301).
이때, 복제 처리 장치(310)는 poll과 같은 다중 이벤트 감지 메커니즘을 통해 데이터 서버에서 발생하는 복제 요청 이벤트를 감지할 수 있다. 복제 처리 장치(310)는 복제 요청 이벤트가 감지되면, 복제 요청 이벤트가 발생한 데이터 서버로부터 수신한 복제 요청을 복제 요청 큐로 관리할 수 있다.
데이터 블록의 생성을 요청 받은 사본 데이터 서버(330)는 데이터 블록을 생성한 후(S302), 생성한 데이터 블록의 데이터 블록 식별자를 복제 처리 장치(310)로 전달한다(S303).
이후, 복제 처리 장치는 특정 파일 데이터의 원본 데이터 블록을 저장하고 있는 데이터 서버(원본 데이터 서버)(320)로 데이터 블록의 복제를 요청한다(S304).
예를 들어, 5번 데이터 서버에 복제된 파일 데이터가 저장될 것이라면, 복제 처리 장치는 5번 데이터 서버로 데이터 블록의 생성을 요청하고, 1번 데이터 서버 내지 3번 데이터 서버에서 원본 데이터 블록을 저장하고 있다면, 복제 처리 장치는 1번 데이터 서버 내지 3번 데이터 서버로 파일 데이터의 복제를 요청한다.
복제 처리 장치(310)가 원본 데이터 서버(320)로 파일 데이터의 복제를 요청할 때는, 복제 요청의 요청 식별자, 데이터 블록의 식별자, 데이터가 저장될 데이터 서버의 주소, 그리고 데이터가 저장될 데이터 블록의 데이터 블록 식별자가 전달될 수 있다.
이후, 데이터의 복제를 요청 받은 원본 데이터 서버(320)는 데이터 블록을 사본 데이터 서버로 전송함으로써(S305), 데이터 블록의 복제를 완료한 후(S306), 복제 처리 장치(310)로 데이터 블록의 복제가 완료되었음을 알린다(S307). 이때, 원본 데이터 서버(320)는 복제 요청 식별자 및 복제 결과 상태를 복제 처리 장치로 전달할 수 있다.
한편, 2대의 데이터 서버(데이터 서버a 및 데이터 서버b) 사이에서 하나의 데이터 블록(id 데이터 블록)을 복제하는 프로세스는 수학식 1로 표현될 수 있다.
Figure pat00001
수학식 1을 참조하면, 복제될 데이터 블록을 저장하고 있는 데이터 서버a는 복제될 데이터 블록을 단위 len(length)으로 나누어서 분할된 데이터 블록 단위로 복제한다. 즉, 분할된 데이터 블록은 데이터 서버a의 디스크에서 읽힌 뒤, 네트워크를 통해 데이터 서버b로 전송되고, 데이터 서버b에 기록된다. 이후, 데이터 서버b는 이에 대한 응답(reply)를 보낸다. 이때, T 함수는 데이터 서버a에 저장된 id 데이터 블록의 옵셋(offset)에 대한 디스크의 물리적 위치를 나타낼 수 있다.
도 4는 본 발명의 실시 예에 따른 데이터 블록의 병렬 재복제 프로세스를 개략적으로 나타낸 도면이다.
도 4를 참조하면, 본 발명의 실시 예에 따른 데이터 블록의 병렬 재복제 프로세스는 4개의 데이터 서버(401 내지 404) 사이에서 수행될 수 있다. 각 데이터 서버는 복수의 디스크를 저장 매체로 사용할 수 있다.
본 발명의 한 실시 예에서, 4개의 데이터 서버(401 내지 404)는 다음 4개의 데이터 블록 복제 프로세스를 수행한다.
- 1번 프로세스: 1번 데이터 서버 → 2번 데이터 서버
- 2번 프로세스: 2번 데이터 서버 → 3번 데이터 서버
- 3번 프로세스: 4번 데이터 서버 → 3번 데이터 서버
- 4번 프로세스: 4번 데이터 서버 → 1번 데이터 서버
이때, 각 프로세스는 2개씩 묶어 병렬적으로 수행될 수 있다. 총 4개의 프로세스가 있으므로, 병렬적으로 수행될 수 있는 프로세스의 조합은 총 3가지이다.
- 1번쌍: {(1번, 2번), (3번, 4번)}
- 2번쌍: {(1번, 3번), (2번, 4번)}
- 3번쌍: {(1번, 4번), (2번, 3번)}
3가지의 조합 중, 1번쌍에서 1번 프로세스와 2번 프로세스가 동시에 수행되면, 2번 데이터 서버(402)는 1번 데이터 서버로(401)부터 복제된 파일 데이터를 수신하는 동시에, 3번 데이터 서버(403)로 복제한 파일 데이터를 송신해야 한다. 그리고, 3번 프로세스와 4번 프로세스가 동시에 수행되면, 4번 데이터 서버(404)는 1번 및 3번 데이터 서버(401, 403)로 동시에 복제한 파일 데이터를 전송해야 한다.
또한, 3번쌍에서 1번 프로세스와 4번 프로세스가 동시에 수행되면, 1번 데이터 서버(401)는 2번 데이터 서버(402)로 복제한 파일 데이터를 송신하는 동시에, 4번 데이터 서버(404)로부터 복제된 파일 데이터를 수신해야 한다. 그리고, 2번 프로세스와 3번 프로세스가 동시에 수행되면, 3번 데이터 서버(403)는 2번 및 4번 데이터 서버(402, 404)로부터 동시에 복제된 파일 데이터를 수신해야 한다.
따라서, 데이터 블록 복제 프로세스를 1번쌍 또는 3번쌍과 같이 짝지으면, 병렬 복제 프로세스의 효율이 좋지 않고, 소요시간이 길어진다.
반면 2번쌍과 같이, 1번 프로세스와 3번 프로세스가 동시에 수행되면, 4개의 데이터 서버(401 내지 404) 모두가 복제된 파일 데이터의 수신 동작이나 복제한 파일 데이터의 송신 동작 둘 중 하나만 수행하게 된다. 또한, 2번 프로세스와 4번 프로세스가 동시에 수행되는 경우도 마찬가지이다. 따라서, 병렬 복제 프로세스의 효율이 좋고, 소요시간이 짧다.
즉, 본 발명의 실시 예에 따르면, 데이터 복제를 수행하고 있는 데이터 서버는 더 이상 복제 요청을 수신하지 않게 되고, 복제 처리 장치는 데이터 복제를 수행하지 않고 있는 데이터 서버에만 복제 요청을 전송함으로써, 데이터 블록의 복제 시간을 단축할 수 있다.
하나의 데이터 서버에서 데이터 블록의 복제를 병렬적으로 처리하기 위해서는 데이터 서버내 병렬성(intra data re-replication parallelism, p)과 데이터 서버간 병렬성(inter data re-replication parallelism, P)을 고려해야 한다. 수학식 2는 데이터 서버내 병렬성(intra data re-replication parallelism, p)을 나타내고, 수학식 3은 데이터 서버간 병렬성(inter data re-replication parallelism, p)을 나타낸다.
Figure pat00002
Figure pat00003
Figure pat00004
수학식 2 및 3을 참조하여, 시간 t에 복제 처리 장치에서 동시에 복제 프로세스의 수행을 요청할 수 있는 최대 데이터 서버의 개수는 수학식 4로 표현될 수 있다.
Figure pat00005
데이터 서버가 고장 나면, 복제 처리 장치는 고장난 데이터 서버에 포함된 데이터 블록의 복제 데이터 블록을 다른 데이터 서버에서 찾은 후, 찾은 데이터 블록을 재복제 한다. 이때, 복제 처리 장치가 동시에 병렬적으로 수행할 수 있는 복제 프로세스의 최대 개수는 p
Figure pat00006
P이다.
한편, 복제될 데이터 블록이 특정 데이터 서버에 집중되어 있으면, 병렬 데이터 복제 프로세스가 효과적으로 수행될 수 없다. 따라서, 파일 데이터를 데이터 블록 단위로 나누어 각 데이터 서버에 저장할 때, 각 데이터 블록을 네트워크에 포함된 모든 데이터 서버로 균등하게 분산시킬 필요가 있다.
도 5는 본 발명의 실시 예에 따른 데이터 서버에 복제된 복수의 데이터 블록을 나타낸 도면이다.
도 5를 참조하면, 0번 데이터 서버(500)에 저장된 데이터 블록은 0번 데이터 서버(500)를 제외한 나머지 데이터 서버(520 내지 540)로 복사될 수 있다.
사본 데이터 블록을 복수의 데이터 서버에 분산 저장하기 위해서, 원본 데이터 블록을 저장하고 있는 데이터 서버는 사본 데이터 블록이 저장되어 있는 데이터 서버의 리스트(앞으로 '사본 할당 데이터 서버 리스트'라 함)(501)를 유지한다.
즉, 원본 데이터 블록을 저장하고 있는 데이터 서버는 사본 데이터 블록을 다른 데이터 서버로 전송한 후, 다른 데이터 서버의 주소를 리스트업 할 수 있다. 원본 데이터 블록을 저장하고 있는 데이터 서버는 사본 할당 데이터 서버 리스트를 검색한 후, 리스트에 없는 데이터 서버에 사본 데이터 블록을 저장할 수 있다.
도 6은 본 발명의 실시 예에 따른 사본 데이터 블록을 할당하는 프로세스를 나타낸 흐름도이다.
먼저, 데이터 블록의 복제 요청 이벤트가 발생하면, 복제 처리 장치는 원본 데이터 블록이 저장된 원본 데이터 서버의 주소를 알아내고, 원본 데이터 서버에서 사본 데이터 블록을 전달한 최근 데이터 서버의 주소를 알아낸다(S601). 이후, 사본 데이터 블록을 전달할 수 있는 가용 데이터 서버 리스트를 탐색하여 가용 데이터 서버 리스트에 최근 데이터 서버가 포함되어 있는지 확인한다(S602).
가용 데이터 서버의 리스트에 최근 데이터 서버가 포함되어 있다면, 가용 데이터 서버의 리스트에서 최근 데이터 서버를 제외한 나머지 가용 데이터 서버에게 사본 데이터 블록을 전달한다(S603). 하지만, 가용 데이터 서버의 리스트에 최근 데이터 서버가 포함되어 있지 않다면, 가용 데이터 서버의 리스트에 가장 처음에 위치한 데이터 서버에게 사본 데이터 블록을 전달한다(S604).
이후, 원본 데이터 서버의 사본 할당 데이터 서버 리스트를 갱신한다(S605).
도 7은 본 발명의 실시 예에 따른 데이터 블록을 병렬적으로 복제하는 과정을 나타낸 흐름도이다.
도 7의 (A)는 데이터 서버에서 다른 데이터 서버로 데이터 블록을 복제하는 방법을 나타낸다. 도 7의 (A)를 참조하면, 데이터 서버a는 데이터 블록의 일부를 읽어서 데이터 서버b로 데이터 블록을 전송하고, 데이터 서버b는 데이터 블록의 일부를 수신하여 쓰고 데이터 블록의 복제가 완료되었음을 데이터 서버a로 응답한다.
다음으로, 데이터 서버a는 데이터 블록의 다음 일부를 읽어서 전송하고, 데이터 서버b는 데이터 블록의 다음 일부를 수신하여 쓴다. 이러한 방식을 '심플 데이터 전송 방식'이라고 하며, 데이터 블록을 전송하는 데이터 서버a는 데이터 서버b의 응답을 일정 시간 대기한다.
이때, 심플 데이터 전송 방식에 따른 소요 시간은 수학식 5으로 표시될 수 있다.
Figure pat00007
도 7의 (B)는 데이터 서버에서 다른 데이터 서버로 데이터 블록을 복제하는 다른 방식을 나타낸다. 도 7의 (B)를 참조하면, 데이터 서버a는 데이터 블록의 일부를 읽어서 데이터 서버b로 전송한다. 그 후, 심플 데이터 전송 방식과는 달리, 데이터 서버b의 응답을 기다리지 않고, 바로 데이터 블록의 다음 일부를 읽어서 데이터 서버b로 전송한다. 즉, 도 7의 (B)에 따르면, 데이터 블록이 병렬적으로 복제될 수 있으며, 이 경우를 '파이프 라인 데이터 전송 방식'이라고 한다.
이때 파이프 라인 데이터 전송 방식에 따른 소요 시간이 수학식 6에 표시되어 있다.
Figure pat00008
도 8은 본 발명의 실시 예에 따른 데이터 서버에서 파이프 라인 데이터 전송 방식에 따라 데이터 블록을 전송하는 프로세스를 나타낸 도면이다.
도 8을 참조하면, 먼저, 데이터 서버a는 원본 데이터 블록의 크기(size) 정보를 얻은 후(S801), 원본 데이터 블록을 복제 요청하는 크기(request size)를 이용하여 num 값을 계산하고(S802), 전송횟수(i)를 카운트 한다(S803).
num 값이 전송횟수보다 큰 경우(S804) 데이터 서버a는 원본 데이터 블록을 len 크기만큼 디스크에서 읽어 들이고(read out)(S805), 읽어 들인 데이터 블록의 일부를 데이터 서버b로 전송한다(S806). 전송횟수가 num 값보다 커질 때까지 위 과정을 반복하고(S807), 전송횟수가 num 값보다 커지면 종료한다. 따라서, 데이터 서버a는 데이터 서버b의 응답을 대기하는 시간 없이 데이터 블록을 연속적으로 복제할 수 있다.
본 발명의 다른 실시 예에서는, 원본 데이터 블록의 크기를 len 크기로 나누어서 원본 데이터 블록을 데이터 서버b에 전송할 횟수를 미리 계산한다.
이때, 원본 데이터 블록의 크기를 len 크기로 나눈 수의 천장 함수(ceiling function) 값이 전송 횟수가 될 수 있다(전송 횟수=
Figure pat00009
).
그리고, 데이터 서버a는 원본 데이터 블록을 len 크기만큼 디스크에서 읽어 들이고, 읽어 들인 데이터 블록을 데이터 서버b로 전송 횟수에 따라 전송할 수 있다.
한편, 데이터 서버b는 원본 데이터 블록을 len 크기만큼 수신하고, 데이터 서버b의 디스크에 수신한 데이터 블록을 기록한다.
도 9는 본 발명의 실시 예에 따른 복제 처리 장치의 데이터 구조를 나타낸다.
본 발명의 실시 예에 따른 복제 처리 장치는 복제 처리 리스트(910), 복제 상태 관리 테이블(920), 그리고 복제 요청 큐(930)를 관리한다.
복제 처리 리스트(910)는 고장난 데이터 서버에 포함되었던 데이터 블록에 대한 파일 메타데이터를 리스트 형태로 포함하고 있다.
복제 상태 관리 테이블(920)은 복제 가용 세마포어(Semaphore)(데이터 서버간 병렬성P×데이터 서버내 병렬성p)(921)와 서버자원 세마포어(922)를 포함한다.
복제 가용 세마포어(921)의 개수는 데이터 블록을 병렬적으로 복제할 수 있는 만큼 설정될 수 있고, 설정된 복제 가용 세마포어(921)의 개수보다 많이 복제가 요청되면, 복제 처리 장치는 대기한다(wait). 즉, 본 발명의 실시 예에 따르면, 복제 처리 장치는 복제 가용 세마포어를 이용하여 데이터 복제를 수행하고 있는 데이터 서버에게는 복제 요청을 전송하지 않고, 데이터 복제를 수행하지 않고 있는 데이터 서버에만 복제 요청을 전송함으로써, 데이터 블록의 복제 시간을 단축할 수 있다.
서버자원 세마포어(922)의 개수는 하나의 데이터 서버가 데이터 블록을 복제할 수 있는 수만큼 설정되고, 복제 가용 세마포어(921)의 경우와 같이 서버자원 세마포어(922)의 개수보다 많이 복제가 요청되면, 복제 처리 장치는 대기한다.
복제 요청 큐(930)는 복제 처리 장치가 데이터 서버에게 데이터 블록의 복제를 요청할 때 복제 요청 정보를 저장하고 관리한다. 즉, 복제 요청 큐(930)는 복제 요청이 완료되면 복제 요청 식별자를 이용하여 복제 요청 정보를 가져온 후 저장할 수 있다. 이때, 복제 요청 식별자는 사본 데이터 블록이 저장된 데이터 서버에서 전송한 응답 메시지에 포함될 수 있다. 또한, 복제 요청 큐(930)는 복제 요청 정보의 요청 시간을 이용하여 복제 요청의 타임 아웃(time-out)이 발생하였는지 판단할 수 있다.
복제 처리 리스트(910)는 복제하려는 데이터 블록에 대응하는 파일 메타데이터를 탐색하고, 복제 상태 관리 테이블(920)에서 복제 가용 세마포어(921)를 획득한 후, 각 데이터 서버의 서버자원 세마포어(922)를 획득하여 데이터 블록을 복제 할 수 있다.
도 9를 참조하면, 현재 복제 포인터는 복제 처리 리스트에서 점검한 파일 메타데이터의 현재 위치를 나타내고, 검사자(inspector) 포인터는 현재는 복제가 불가능한 첫 번째 데이터 블록 포인터를 나타낸다.
도 10은 본 발명의 실시 예에 따른 복제 처리 장치가 데이터 블록을 복제하는 프로세스를 나타낸 도면이다.
복제 처리 장치는 목표 사본 개수 및 복제 대역폭을 얻는다(S1001). 그리고, 데이터 서버 관리 테이블을 통해 상태가 온라인인 데이터 서버의 개수를 알아내고(S1002), 온라인인 데이터 서버의 개수와 데이터 서버내 병렬성 값(p)를 바탕으로 복제 가용 세마포어 값을 계산한다(S1003). 이때 복제 가용 세마포어 값은 아래 수학식 7을 통해 계산될 수 있다.
Figure pat00010
이후, 복제 처리 장치는 메타데이터 리스트에서 복제 작업이 필요한 파일 메타데이터가 있는지 탐색한다(S1004). 복제 작업이 필요한 파일 메타데이터가 있다면, 메타데이터 서버에서 고장 데이터 블록의 파일 메타데이터를 가져온다(S1005). 그리고 복제 처리 리스트에 있는 파일 메타데이터에 포함된 데이터 블록의 복제를 요청한다(S1006).
고장 데이터 블록의 사본 데이터 블록이 복제되면, 고장 데이터 블록의 파일 메타데이터를 갱신하고, 갱신된 파일 메타데이터를 메타데이터 서버에 저장한다(S1007).
도 11는 본 발명의 실시 예에 따른 데이터 블록 병렬 재복제 프로세스를 나타낸 흐름도이다.
도 11를 참조하면, 먼저 파일 데이터의 목표 사본 개수가 설정되거나 파일 데이터에 대한 복제 요청이 생성되면, 복제 처리 장치는 검사자 포인터를 복제 처리 리스트에 포함된 첫 번째 파일 메타데이터의 첫 번째 데이터 블록에 위치시킨다(S1101). 다음 복제 처리 리스트가 비어 있는지 확인하여, 요청된 복제 작업이 있는지 확인한다(S1102).
복제 처리 리스트가 비어 있지 않고, 요청된 복제 건이 있다면, 복제 처리 장치는 복제 요청 큐에 있는 복제 요청 개수가 복제 가용 세마포어(p×P)보다 작은지 검사하여 추가 복제 요청이 가능한지 판단한다(S1103).
즉, 복제 요청 개수가 복제 가용 세마포어보다 크거나 같다면, 추가 복제 요청이 가능하지 않으므로, 복제 처리 장치는 대기한다(S1104). 그리고, 대기하는 경우, 차후 수행할 복제를 위해 검사자 포인터를 남겨둔다.
복제 요청 개수가 복제 가용 세마포어보다 작다면 복제를 수행할 수 있으므로, 현재 복제 포인터의 데이터 블록을 가져와서 복제 필요 유무를 검사하고, 데이터 블록의 복제가 필요한 경우 데이터 블록의 복제를 요청한다(S1105). 즉, 데이터 블록의 사본 개수를 목표 사본 개수와 비교하여, 데이터 블록의 사본 개수가 목표 사본 개수보다 적다면, 해당 데이터 블록의 복제를 요청한다.
데이터 블록의 복제가 완료되면 현재 복제 포인터의 블록 위치와, 현재 복제 포인터가 위치한 파일 메타데이터에 포함된 데이터 블록의 개수를 가져온다. 그리고 현재 포인터를 저장하기 위해 현재 복제 포인터를 임시 복제 포인터에 넣는다(S1106).
그리고, 현재 복제 포인터가 위치한 데이터 블록이 파일 메타데이터에 포함된 데이터 블록 중 마지막 데이터 블록이 아닌 경우, 다음 데이터 블록에 현재 복제 포인터를 위치시킨다(S1107). 이후, 복제 요청된 데이터 블록의 복제가 완료되면, 검사자 포인터를 현재 복제 포인터로 설정한다(S1108).
한편, 현재 복제 포인터가 위치한 데이터 블록이 파일 메타데이터에 포함된 데이터 블록 중 마지막 데이터 블록이라면, 복제 처리 리스트에서 다음 파일 메타데이터를 가져온다(S1109). 그리고 복제 처리 장치는 현재 복제 포인터를 가져온 파일 메타데이터의 첫 번째 데이터 블록에 위치시킨다(S1110).
이때, 더 이상 가져올 파일 메타데이터가 없으면, 다시 복제 처리 리스트를 스캔하고, 복제 처리 리스트에 처리할 복제 작업이 없다면 프로세스를 종료한다(S1111).
도 12은 본 발명의 실시 예에 따른 복제 처리 장치에서 복제를 수행할 데이터 서버를 결정하는 프로세스를 나타낸 흐름도이다.
도 12에서 설명하는 본 발명의 한 실시 예는 도 11의 S1105 단계에 대한 세부 설명이 될 수 있다.
도 12을 참조하면, 복제 처리 장치는 복제가 요구되는 데이터 블록을 저장하고 있는 데이터 서버(원본 데이터 서버)의 서버 자원 세마포어를 통해 복제 가능 여부를 판단한다(S1201). 즉, 원본 데이터 서버의 서버 자원 세마포어가 있는 경우에만 복제 처리 장치는 원본 데이터 서버로 복제를 요청할 수 있다.
원본 데이터 서버의 서버 자원 세마포어가 없다면, 복제 작업이 수행될 수 없으므로, 복제 가용 세마포어를 해제하고(S1202), 복제 요청은 완료되지 못한다(S1203).
한편, 원본 데이터 서버의 서버 자원 세마포어가 있는 경우, 원본 데이터 서버의 서버 자원 세마포어를 하나 획득한다(S1204).
그리고 파일 메타데이터에서 현재 복제 포인터가 위치한 데이터 블록을 가져오고, 파일 메타데이터에 새로 할당된 데이터 블록을 추가한다(S1205). 추가된 데이터 블록의 버전 번호는 0으로 설정한다.
이후, 사본 데이터 블록이 저장될 사본 데이터 서버의 가용 여부를 사본 데이터 서버의 서버 자원 세마포어를 통해 판단한다(S1206). 사본 데이터 서버가 가용하지 않으면, 이미 획득한 복제 가용 세마포어 및 원본 데이터 서버의 서버 자원 세마포어를 해제하고(S1207), 복제 처리 장치로 복제 실패를 알린다(S1203).
반면, 사본 데이터 블록이 저장될 사본 데이터 서버가 가용하면, 사본 데이터 서버의 서버 자원 세마포어를 획득하고(S1208), 복제 작업을 복제 요청 큐에 삽입한다(S1209).
도 13은 본 발명의 실시 예에 따른 복제 처리 장치가 데이터 서버로부터 수신한 응답 메시지를 처리하는 프로세스를 나타낸 흐름도이다.
본 발명의 실시 예에 따르면, 데이터 블록이 원본 데이터 서버에서 사본 데이터 서버로 전송된 후, 사본 데이터 서버에 기록되면, 사본 데이터 서버는 원본 데이터 서버로 복제가 완료되었음을 알리고, 원본 데이터 서버는 복제 처리 장치로 복제 요청에 대한 응답 메시지를 전송한다. 즉, 이때 응답 메시지는 복제 요청이 접수되고, 데이터 블록이 성공적으로 복제되었음을 복제 처리 장치로 알릴 수 있다.
도 13을 참조하면, 먼저 복제 처리 장치는 네트워크를 통해 데이터 서버에서 전송된 응답 메시지를 수신한다(S1301). 이후, 복제 처리 장치는 응답 메시지에 포함된 복제 요청 식별자를 인식하여 복제 요청 큐에서 해당 복제 요청을 삭제할 지 결정한다(S1302). 이때, 해당 복제 요청이 복제 요청 큐에 없으면(S1303), 응답 메시지를 전송한 데이터 서버로 복제 취소 요청을 전송한다(S1304).
하지만, 복제 요청 큐에 해당 복제 요청이 있다면, 응답 메시지에 포함된 상기 복제 요청에 대한 결과 상태가 진행 중(inprogress)인지 판단한다(S1305). 결과 상태가 진행 중이면, 해당 복제 요청을 삭제하지 않고, 데이터 서버로 다시 복제 요청을 전송한다(S1306).
하지만, 결과 상태가 진행 중이 아니라면, 복제 처리 장치는 획득한 복제 가용 세마포어 및 데이터 서버의 서버 자원 세마포어를 하나씩 해제한다(S1307). 마지막으로 복제 처리 장치는 복제 처리 리스트를 갱신한다(S1308).
도 14는 본 발명의 실시 예에 따른 복제 처리 장치가 복제 처리 리스트를 갱신하는 프로세스를 나타낸 흐름도이다.
도 14에서 설명하는 본 발명의 한 실시 예는 도 13의 1308 단계를 설명할 수 있다. 도 14를 참조하면, 복제 처리 장치가 응답 메시지를 수신하고, 복제 가용 세마포어 및 서버 자원 세마포어를 해제하면(S1401), 복제 처리 장치는 복제 처리 리스트에서 해당하는 데이터 블록의 파일 메타데이터를 가져온다(S1402). 그리고, 복제 처리 장치는 해당하는 데이터 블록의 파일 메타데이터에서 데이터 서버 식별자 및 데이터 블록의 복제 정보를 읽어낸다(S1403). 이후, 복제 처리 장치는 복제된 데이터 블록의 버전 번호 및 복제 개수를 갱신한다(S1404).
이후, 복제 처리 장치는 해당 파일 메타데이터의 데이터 블록을 점검함으로써, 데이터 블록의 복제 완료 여부를 판단한다(S1405). 모든 데이터 블록의 사본 개수가 목표 사본 개수와 동일하면, 파일 메타데이터에 포함된 모든 데이터 블록이 복사된 것으로 판단하고, 복제 처리 리스트에서 해당 데이터 블록에 대한 복제 요청을 삭제한다(S1406).
도 15는 본 발명의 한 실시 예에 따른 원본 데이터 서버에서 복제 요청을 처리하는 프로세스를 나타낸 흐름도이다.
도 15를 참조하면, 복제 처리 장치로부터 데이터 블록의 복제 요청을 수신한 데이터 서버(원본 데이터 서버)는 미리 정해진 크기만큼 읽기 버퍼를 설정한다(S1501). 그리고, 복제 요청에 포함된 데이터 블록 식별자에 해당하는 데이터 블록을 설정된 읽기 버퍼 크기만큼 읽어 들인다(S1502).
복제 요청에 기록된 복제 대역폭의 크기가 무제한(Unlimited)이라면, 원본 데이터 서버는 슬립(sleep) 시간 없이 사본 데이터 블록이 저장될 데이터 서버(사본 데이터 서버)로 읽어 들인 데이터 블록을 연속적으로 전송한다(S1503). 이때, 원본 데이터 서버가 심플 데이터 전송 방식으로 동작하면 읽어 들인 데이터 블록의 일부분을 전송하고 사본 데이터 서버의 응답을 대기하지만, 원본 데이터 서버가 파이프라인 데이터 전송 방식으로 동작하면 사본 데이터 서버의 응답을 대기하지 않고 읽어 들인 데이터 블록의 일부분을 연속적으로 전송할 수 있다.
반면, 복제 요청에 기록된 복제 대역폭이 제한되어 있다면, 원본 데이터 서버는 슬립 시간을 설정하고(S1504), 읽어 들인 데이터 블록의 전송 시간과 슬립 시간을 차례대로 운영하며 데이터 블록을 전송한다(S1505). 이때, 슬립 시간은 수학식 8과 같이 설정될 수 있다.
Figure pat00011
이후, 슬립 시간이 되면, 읽어 들인 데이터 블록 중 일부분의 전송을 중단하고, 사본 데이터 서버로부터 응답을 기다리며, 복제 처리 장치로 복제 결과 상태를 전송한다(S1506). 이때 원본 데이터 서버는 복제 결과 상태를 진행 중으로 전송(진행 중 메시지)하고, 복제 처리 장치는 진행 중 메시지를 통해 해당 복제 요청에 대한 타임 아웃을 시프트 할 수 있다.
즉, 본 발명의 실시 예에 따른 복제 처리 장치에서는 타임 아웃을 설정하여 타임 아웃으로 설정된 시간이 경과하면 복제 작업이 삭제될 수 있는데, 각 데이터 서버에서는 슬립 시간에 불구하고 진행 중 메시지를 이용하여 복제 처리 장치에서 임의적으로 타임 아웃을 종료시킬 수 없도록 할 수 있다.
이후, 슬립 시간이 경과하면, 원본 데이터 블록은 다시 읽어 들인 데이터 블록 중 일부분의 전송을 계속한다(S1507). 이후, 원본 데이터 서버가 읽어 들인 모든 데이터 블록을 전송하면(S1508), 복제 처리 장치로 복제가 완료되었음을 알린다(S1509).
도 16은 본 발명의 실시 예에 따른 복제 대역폭을 제어하는 프로세스를 나타낸 도면이다.
먼저, 복제 처리 장치가 타임 아웃(1601)을 설정하여 데이터 서버로 데이터 블록의 복제를 요청한다. 데이터 서버는 복제 요청을 수신하고 데이터 블록을 복제하기 시작하는데, 데이터 블록을 한 번에 모두 복제하지 않고, 일부를 복제한 다음 슬립하고, 다시 일부를 복제하고 다시 슬립할 수 있다.
이때, 데이터 서버는 데이터 블록의 일부를 복제한 다음 복제 처리 장치로 진행 중 메시지(1602)를 전송한다. 데이터 서버는 데이터 블록이 모두 복제될 때까지 일부의 복제가 완료된 다음에는 매번 진행 중 메시지를 복제 처리 장치로 전송한다.
데이터 서버로부터 진행 중 메시지를 수신한 복제 처리 장치는 설정된 타임 아웃을 다시 시작한다. 즉, 진행 중 메시지가 수신되는 동안에는 타임 아웃이 완료되지 않는다.
도 17은 본 발명의 실시 예에 따른 복제 처리 장치에서 타임 아웃을 적용하는 프로세스를 나타낸 흐름도이다.
도 17을 참조하면, 먼저, 복제 처리 장치는 복제 요청 큐 잠금을 획득한다(S1701). 즉, 복제 처리 장치는 복제 요청 큐에 대한 잠금을 획득함으로써, 복제 요청 큐에서 복제 요청을 삭제할 수 있으며, 복제 요청에 대한 정보를 복제 요청 큐에서 검색할 수 있다.
이후, 복제 요청 큐에서 복제 요청에 대한 정보를 검색하여 타임 아웃이 경과되지 않았다면(S1702), 복제 요청을 유지한다(S1703). 하지만, 타임 아웃이 경과되었다고 판단되면, 현재 복제 포인터를 다음 복제 요청으로 설정하고, 복제 요청 큐에서 해당 복제 요청을 삭제한다(S1704).
더 이상 현재 복제 포인터가 없어서 복제 요청 큐에 포함된 모든 복제 요청이 점검되면, 복제 처리 장치는 복제 요청 큐 잠금을 해제한다(S1705).
위와 같이 본 발명의 한 실시 예에 따르면, 비대칭 파일 시스템에서 데이터 서버에 저장된 데이터를 효율적으로 복제할 수 있는 방법이 제공된다. 네트워크의 복제 처리 장치는 데이터 복제 작업을 수행하고 있지 않은 데이터 서버에만 복제 요청을 전송함으로써, 데이터 블록의 복제 시간을 단축할 수 있고, 데이터 서버에서 전송된 응답 메시지를 참고하여 타임 아웃을 연장할 수 있다. 또한, 각 데이터 서버는 파이프라인 데이터 전송 방식을 통해 다른 데이터 서버로 사본 데이터를 효율적으로 전송할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (17)

  1. 복제 처리 장치에서 복수의 데이터 서버에 저장된 데이터 블록을 복제하는 방법으로서,
    상기 복수의 데이터 서버 중 적어도 두 개의 서버에서 상기 데이터 블록의 복제를 수행할 수 있는지 판단하는 단계,
    상기 데이터 블록의 복제를 수행할 수 있다면, 상기 적어도 두 개의 데이터 서버 중, 상기 데이터 블록이 저장되어 있는 제1 데이터 서버와 상기 데이터 블록이 저장되어 있지 않은 제2 데이터 서버를 선택하는 단계,
    상기 제1 데이터 서버로 상기 데이터 블록의 복제 요청을 전송하는 단계, 그리고
    상기 제1 데이터 서버로부터 응답 메시지를 수신하는 단계
    를 포함하는 데이터 블록 복제 방법.
  2. 제1항에서,
    상기 판단하는 단계는,
    상기 복제 처리 장치의 복제 요청 큐에 대기하고 있는 상기 복제 요청의 개수를 복제 가용 세마포어와 비교하는 단계, 그리고
    상기 복제 요청의 개수가 상기 복제 가용 세마포어보다 적다면 상기 데이터 블록의 복제를 수행할 수 있는 것으로 판단하는 단계
    를 포함하는 데이터 블록 복제 방법.
  3. 제2항에서,
    상기 복제 가용 세마포어는,
    상기 데이터 서버 사이의 병렬성 값과 상기 데이터 서버 내의 병렬성 값을 이용하여 계산되는 데이터 블록 복제 방법.
  4. 제3항에서,
    상기 데이터 서버 사이의 병렬성 값은 온라인(on-line) 상태인 데이터 서버의 개수를 2로 나눈 값인 데이터 블록 복제 방법.
  5. 제1항에서,
    상기 데이터 블록의 위치 정보를 포함하고 있는 파일 메타데이터를 검색하여, 상기 데이터 블록을 복제할 것인지 결정하는 단계
    를 더 포함하는 데이터 블록 복제 방법.
  6. 제5항에서,
    상기 결정하는 단계는,
    상기 파일 메타데이터에 포함된 복수의 데이터 블록의 개수가 상기 복제 처리 장치에 설정된 목표 사본 개수보다 적을 때 상기 데이터 블록의 복제를 결정하는 데이터 블록 복제 방법.
  7. 제1항에서,
    상기 선택하는 단계는,
    상기 제1 데이터 서버 및 상기 제2 데이터 서버의 서버 자원 세마포어를 통해 상기 제1 데이터 서버 및 상기 제2 데이터 서버가 각각 상기 데이터 블록의 복제 작업을 수행할 수 있는지 판단하는 단계, 그리고
    상기 제1 데이터 서버 및 상기 제2 데이터 서버에 각각 서버 자원 세마포어가 존재하는 경우 상기 제1 데이터 서버 및 상기 제2 데이터 서버를 선택하는 단계
    를 포함하는 데이터 블록 복제 방법.
  8. 제1항에서,
    상기 전송하는 단계는,
    상기 제1 데이터 서버로 상기 복제 요청의 요청 식별자 및 상기 데이터 블록의 식별자를 전송하는 단계
    를 포함하는 데이터 블록 복제 방법.
  9. 제1항에서,
    상기 수신하는 단계는,
    상기 제1 데이터 서버에 저장되어 있던 상기 데이터 블록이 상기 제2 데이터 서버에 성공적으로 복제되었을 때 복제 요청에 대한 성공 알림이 포함된 응답 메시지를 수신하는 단계
    를 포함하는 데이터 블록 복제 방법.
  10. 제2항에서,
    상기 복제 요청을 전송하는 단계 이후에,
    상기 복제 요청에 대한 타임 아웃을 시작하는 단계
    를 더 포함하고,
    상기 응답 메시지를 수신하는 단계는,
    상기 응답 메시지를 기초로 상기 타임 아웃(time-out)을 종료할 지 결정하는 단계
    를 포함하는 데이터 블록 복제 방법.
  11. 제10항에서,
    상기 타임 아웃을 종료할 지 결정하는 단계는,
    상기 응답 메시지에 진행 중(inprogress) 메시지가 포함되어 있고, 상기 복제 요청에 대한 타임 아웃이 종료 되기 전에 상기 응답 메시지를 수신했다면, 상기 타임 아웃을 다시 시작하는 단계
    를 더 포함하는 데이터 블록 복제 방법.
  12. 제10항에서,
    상기 타임 아웃을 종료할 지 결정하는 단계는,
    상기 응답 메시지에 진행 중 메시지가 포함되어 있지 않거나, 상기 복제 요청에 대한 타임 아웃이 종료 된 후에 상기 응답 메시지를 수신했다면, 상기 응답 메시지에 포함된 상기 복제 요청에 대한 식별자를 인식하여 상기 복제 요청 큐에서 상기 복제 요청을 삭제하는 단계
    를 포함하는 데이터 블록 복제 방법.
  13. 데이터 블록을 저장하고 있는 데이터 서버에서 데이터 블록을 복제하는 방법으로서,
    복제 처리 장치로부터 네트워크를 통해 상기 데이터 블록의 제1 복제 요청을 수신하는 단계,
    상기 데이터 블록 중 제1 부분을 미리 설정된 버퍼 크기만큼 읽어 들이는 단계,
    상기 제1 부분 중 읽어 들인 부분을 상기 데이터 블록이 저장되어 있지 않은 제1 데이터 서버로 전송하는 단계,
    상기 복제 요청에 대한 진행 중 메시지를 상기 복제 처리 장치로 전송하는 단계, 그리고
    상기 복제 처리 장치로부터 상기 진행 중 메시지에 대한 응답으로 상기 데이터 블록의 제2 복제 요청을 수신하는 단계
    를 포함하는 데이터 블록 복제 방법.
  14. 제13항에서,
    상기 제1 부분 중 읽어 들인 부분을 전송하는 단계 이후에,
    상기 데이터 블록 중 제2 부분을 미리 설정된 버퍼 크기만큼 읽어 들이는 단계,
    상기 제2 부분 중 읽어 들인 부분을 상기 제1 데이터 서버로 전송하는 단계, 그리고
    상기 진행 중 메시지를 상기 복제 처리 장치로 전송하는 단계
    를 더 포함하는 데이터 블록 복제 방법.
    를 더 포함하는 데이터 블록 복제 방법.
  15. 제13항에서,
    상기 진행 중 메시지를 전송하는 단계 이후에,
    미리 설정된 슬립(sleep) 시간 동안 슬립하는 단계, 그리고
    상기 슬립 시간이 경과한 후 상기 제1 부분의 나머지 부분을 상기 버퍼 크기만큼 읽어 들이는 단계, 그리고
    상기 나머지 부분 중 읽어 들인 부분을 상기 제1 데이터 서버로 전송하는 단계
    를 더 포함하는 데이터 블록 복제 방법.
  16. 제14항에서,
    상기 진행 중 메시지를 전송하는 단계 이후에,
    미리 설정된 슬립(sleep) 시간 동안 슬립하는 단계, 그리고
    상기 슬립 시간이 경과한 후 상기 제2 부분의 나머지 부분을 상기 버퍼 크기만큼 읽어 들이는 단계, 그리고
    상기 나머지 부분 중 읽어 들인 부분을 상기 제1 데이터 서버로 전송하는 단계
    를 더 포함하는 데이터 블록 복제 방법.
  17. 제15항 또는 제16항에서,
    상기 슬립 시간은 상기 복제 처리 장치로부터 할당된 복제 대역폭, 상기 데이터 서버의 서버 최대 대역폭, 그리고 상기 버퍼 크기를 이용하여 미리 설정되는 데이터 블록 복제 방법.
KR1020130084967A 2013-07-18 2013-07-18 비대칭 파일 시스템의 데이터 복제 방법 KR102137217B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130084967A KR102137217B1 (ko) 2013-07-18 2013-07-18 비대칭 파일 시스템의 데이터 복제 방법
US14/071,796 US20150026126A1 (en) 2013-07-18 2013-11-05 Method of replicating data in asymmetric file system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130084967A KR102137217B1 (ko) 2013-07-18 2013-07-18 비대칭 파일 시스템의 데이터 복제 방법

Publications (2)

Publication Number Publication Date
KR20150010242A true KR20150010242A (ko) 2015-01-28
KR102137217B1 KR102137217B1 (ko) 2020-07-23

Family

ID=52344422

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130084967A KR102137217B1 (ko) 2013-07-18 2013-07-18 비대칭 파일 시스템의 데이터 복제 방법

Country Status (2)

Country Link
US (1) US20150026126A1 (ko)
KR (1) KR102137217B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180050180A (ko) * 2016-11-04 2018-05-14 에스케이하이닉스 주식회사 데이터 분산 처리를 수행하는 데이터 관리 시스템 및 데이터 관리 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339037B (zh) * 2020-02-14 2023-06-09 西安奥卡云数据科技有限公司 一种高效的并行分布式文件系统并行复制方法
US20210303523A1 (en) * 2020-03-30 2021-09-30 Pure Storage, Inc. Replicating a File System

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3323129B2 (ja) * 1998-05-22 2002-09-09 日本電気テレコムシステム株式会社 ファイル転送プロトコル方式、方法、および記録媒体
KR20090062106A (ko) * 2007-12-12 2009-06-17 한국전자통신연구원 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법
US20100299447A1 (en) * 2009-05-25 2010-11-25 Nilesh Anant Salvi Data Replication

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129562A1 (en) * 2004-10-04 2006-06-15 Chandrasekhar Pulamarasetti System and method for management of recovery point objectives of business continuity/disaster recovery IT solutions
WO2008018969A1 (en) * 2006-08-04 2008-02-14 Parallel Computers Technology, Inc. Apparatus and method of optimizing database clustering with zero transaction loss

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3323129B2 (ja) * 1998-05-22 2002-09-09 日本電気テレコムシステム株式会社 ファイル転送プロトコル方式、方法、および記録媒体
KR20090062106A (ko) * 2007-12-12 2009-06-17 한국전자통신연구원 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법
US20100299447A1 (en) * 2009-05-25 2010-11-25 Nilesh Anant Salvi Data Replication

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180050180A (ko) * 2016-11-04 2018-05-14 에스케이하이닉스 주식회사 데이터 분산 처리를 수행하는 데이터 관리 시스템 및 데이터 관리 방법

Also Published As

Publication number Publication date
KR102137217B1 (ko) 2020-07-23
US20150026126A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
US11218539B2 (en) Synchronous replication for storage
JP5192226B2 (ja) 待機系計算機の追加方法、計算機及び計算機システム
JP5320678B2 (ja) データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US9934242B2 (en) Replication of data between mirrored data sites
US9952940B2 (en) Method of operating a shared nothing cluster system
CN103207867B (zh) 处理数据块的方法、发起恢复操作的方法和节点
JP2017531250A (ja) 粒状同期/半同期アーキテクチャ
JP2006309638A (ja) 計算機システムおよびその計算機システムに用いられるホスト計算機およびストレージ装置、ならびに、計算機システムに用いられるボリューム切替方法
US20180101558A1 (en) Log-shipping data replication with early log record fetching
JP2011076294A (ja) 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
JP2012523023A (ja) 重複したデータを排除するストレージシステム
KR20160112758A (ko) 분산 파일 시스템
JP2007249776A (ja) データベース複製プログラム、データベース複製装置およびデータベース複製方法
US11768624B2 (en) Resilient implementation of client file operations and replication
US20160092536A1 (en) Hybrid data replication
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
JP4429763B2 (ja) 情報処理装置の制御方法、情報処理装置、及びストレージ装置の制御方法
CN106873902B (zh) 一种文件存储系统、数据调度方法及数据节点
JP2017174238A (ja) 制御プログラム、制御方法、および制御装置
KR102137217B1 (ko) 비대칭 파일 시스템의 데이터 복제 방법
WO2019000423A1 (zh) 一种数据存储方法及设备
US10169441B2 (en) Synchronous data replication in a content management system
JP2017227998A (ja) ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置
CN109992447A (zh) 数据复制方法、装置及存储介质
JP6697101B2 (ja) 情報処理システム

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