KR102405890B1 - 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치 - Google Patents

데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치 Download PDF

Info

Publication number
KR102405890B1
KR102405890B1 KR1020200162250A KR20200162250A KR102405890B1 KR 102405890 B1 KR102405890 B1 KR 102405890B1 KR 1020200162250 A KR1020200162250 A KR 1020200162250A KR 20200162250 A KR20200162250 A KR 20200162250A KR 102405890 B1 KR102405890 B1 KR 102405890B1
Authority
KR
South Korea
Prior art keywords
file
module
request
replication
target file
Prior art date
Application number
KR1020200162250A
Other languages
English (en)
Other versions
KR20220042974A (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 KR20220042974A publication Critical patent/KR20220042974A/ko
Application granted granted Critical
Publication of KR102405890B1 publication Critical patent/KR102405890B1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치가 개시된다. 개시되는 일 실시예에 따른 컴퓨팅 장치는, 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치이고, 데이터 초기 복제를 위한 소스 노드로서, 타겟 노드로부터 요청 종류 정보가 포함된 복제 요청을 수신하는 리퀘스트 처리 모듈, 복제 요청에 대응하는 복제 대상 파일의 익스텐트 매핑 정보를 획득하고, 익스텐트 매핑 정보를 기 설정된 탐색 트리에 삽입하는 매핑 모듈, 소스 노드의 디스크에서 익스텐트 매핑 정보에 따라 복제 대상 파일에 관한 메시지를 읽어 들이는 수집 모듈, 및 수집 모듈이 읽어 들인 메시지를 받아 타겟 노드로 송신하는 송신 모듈을 포함한다.

Description

데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치{METHOD FOR COPYING DATA INITIAL AND COMPUTING DEVICE FOR EXECUTING THE METHOD}
본 발명의 실시예는 데이터 초기 복제 기술과 관련된다.
소스 노드(Source Node)의 데이터 파일들을 타겟 노드(Target Node)로 초기 복제하는 방법은 풀 백업(Full Backup), 리플리케이션(Replication), 마이그레이션(Migration) 등에서 사용할 수 있다. 초기 복제는 소스 노드의 데이터 파일들을 처음으로 타겟 노드에 복제하는 것을 말한다. 이때, 타겟 노드는 소스 노드의 데이터 파일들과 관련된 어떠한 데이터도 없는 상태이며, 부분 복제를 이용해 소스 노드와 타겟 노드의 데이터 파일들의 일관성을 보장할 수 없다.
복제의 일반적인 절차는 소스 노드의 데이터 파일들을 순회하며 파일 정보 및 데이터를 읽는 단계, 읽은 데이터를 타겟 노드로 전송하는 단계, 및 전송된 데이터를 타겟 노드에 적용하는 단계로 구성된다. 여기서, 소스 노드의 데이터 파일들을 읽을 때, 파일 단위로 데이터를 읽으면 대량의 랜덤 IO(여러 위치를 탐색해서 최종적으로 데이터를 찾음)가 발생할 수 있다. 이러한 랜덤 IO는 순차 IO(시작 위치부터 순차적으로 데이터를 찾음)보다 느리며, 그로 인해 복제 과정에 성능 저하가 발생할 수 있다.
또한, 기존의 복제 방법은 소스 노드에서 디렉토리 및 그 하위에 있는 파일들을 전위 순회하면서 디렉토리 구조를 동기(Synchronous) 모드로 타겟 노드에 전송하였는바, 데이터 전송에 오랜 시간이 걸리는 문제점이 있다.
한국등록특허공보 제10-0503899호(2005.07.25)
본 발명은 데이터를 신속하게 복제할 수 있는 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치를 제공하는 것을 목적으로 한다.
한편, 본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
개시되는 일 실시예에 따른 컴퓨팅 장치는, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치이고, 데이터 초기 복제를 위한 소스 노드로서, 타겟 노드로부터 요청 종류 정보가 포함된 복제 요청을 수신하는 리퀘스트 처리 모듈; 상기 복제 요청에 대응하는 복제 대상 파일의 익스텐트 매핑 정보를 획득하고, 상기 익스텐트 매핑 정보를 기 설정된 탐색 트리에 삽입하는 매핑 모듈; 상기 소스 노드의 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 복제 대상 파일에 관한 메시지를 읽어 들이는 수집 모듈; 및 상기 수집 모듈이 읽어 들인 메시지를 받아 상기 타겟 노드로 송신하는 송신 모듈을 포함한다.
상기 복제 대상 파일의 익스텐트 매핑 정보는, 상기 복제 대상 파일의 익스텐트의 물리적 위치, 상기 익스텐트의 논리적 위치, 상기 익스텐트의 길이, 및 상기 익스텐트 정보를 포함하고, 상기 매핑 모듈은, 상기 탐색 트리에 삽입할 때 상기 익스텐트 매핑 정보에 파일 식별자 및 플래그 정보를 추가할 수 있다.
상기 수집 모듈은, 상기 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 물리적 위치의 순서대로 데이터를 읽어 들일 수 있다.
상기 컴퓨팅 장치는, 상기 복제 요청에 따라 상기 소스 노드의 디렉토리를 순회하면서 엔트리 정보를 수집하는 순회 모듈; 및 상기 엔트리 정보에 기초하여 각 복제 대상 파일을 파일 타입에 따라 분류하고, 분류된 파일 타입에 기초하여 각 복제 대상 파일을 상기 매핑 모듈 및 상기 송신 모듈 중 하나 이상으로 전송하는 할당 모듈을 더 포함할 수 있다.
상기 할당 모듈은, 상기 복제 대상 파일의 파일 타입이 디렉토리인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_DIRECTORY를 할당한 후 상기 송신 모듈로 전송하고, 상기 복제 대상 파일의 파일 타입이 심링크(Symlink)인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_SYMFILE 를 할당한 후 상기 송신 모듈로 전송할 수 있다.
상기 할당 모듈은, 상기 복제 대상 파일의 파일 타입이 정규 파일인 경우, 상기 복제 대상 파일이 하드링크(Hardlink)인지 여부에 따라 상기 복제 대상 파일을 상기 송신 모듈로 전송하거나 상기 송신 모듈 및 상기 매핑 모듈로 각각 전송할 수 있다.
상기 할당 모듈은, 상기 복제 대상 파일의 파일 타입이 정규 파일이고, 상기 복제 대상 파일의 링크 수가 복수 개이며, 상기 탐색 트리에 상기 복제 대상 파일의 파일 식별자가 존재하는 경우, 상기 복제 대상 파일이 하드링크인 것으로 판단할 수 있다.
상기 할당 모듈은, 상기 복제 대상 파일이 정규 파일이면서 하드링크인 경우, 상기 복제 대상 파일에 대해 메시지 타입 MSG_HARDFILE를 할당한 후 상기 송신 모듈로 전송하고, 상기 복제 대상 파일이 정규 파일이면서 하드링크가 아닌 경우, 상기 복제 대상 파일에 대해 메시지 타입 MSG_FILE를 할당한 후 상기 송신 모듈 및 상기 매핑 모듈로 각각 전송할 수 있다.
상기 송신 모듈은, 다중 버퍼를 이용하여 상기 메시지를 상기 타겟 노드로 송신할 수 있다.
상기 요청 종류 정보는, 상기 복제 요청이 초기 복제 시작을 위한 요청인지 또는 초기 복제 중단 후 재시작을 위한 요청인지에 대한 정보를 포함할 수 있다.
상기 요청 종류 정보가 상기 초기 복제 중단 후 재시작을 위한 요청인 경우, 상기 복제 요청은, 상기 초기 복제 시작을 위한 요청에서 상기 타겟 노드에 마지막 적용된 데이터의 정보를 포함하고, 상기 컴퓨팅 장치는, 상기 복제 요청에 포함된 상기 마지막 적용된 데이터의 정보와 상기 익스텐트 매핑 정보를 비교하는 재개 모듈을 더 포함할 수 있다.
상기 타겟 노드는, 상기 요청 종류 정보가 포함된 복제 요청을 상기 소스 노드로 송신하는 리퀘스트 모듈; 상기 송신 모듈로부터 상기 메시지를 수신하는 수신 모듈; 및 상기 수신 모듈이 수신한 메시지를 메시지 규격에 따라 처리하는 실행 모듈을 포함할 수 있다.
상기 수신 모듈은, 상기 송신 모듈에서 송신하는 메시지를 다중 버퍼를 이용하여 수신하고, 수신한 메시지를 메시지 규격에 맞게 파싱(Parsing)할 수 있다.
상기 복제 대상 파일의 메시지 타입은, MSG_DIRECTORY, MSG_FILE, MSG_SYMFILE, MSG_HARDFILE, 및 MSG_DATA를 포함하고, 상기 실행 모듈은, 상기 메시지의 메시지 타입에 따라 상기 메시지를 처리하며, 상기 복제 대상 파일의 메시지 타입이 MSG_DATA인 경우, 상기 MSG_DATA의 플래그(Flag)를 이용하여 상기 복제 대상 파일에 오퍼레이션을 수행할 수 있다.
개시되는 일 실시예에 따른 데이터 초기 복제 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치이고, 데이터 초기 복제를 위한 소스 노드에서 수행되는 방법으로서, 타겟 노드로부터 요청 종류 정보가 포함된 복제 요청을 수신하는 동작; 상기 복제 요청에 대응하는 복제 대상 파일의 익스텐트 매핑 정보를 획득하고, 상기 익스텐트 매핑 정보를 기 설정된 탐색 트리에 삽입하는 동작; 상기 소스 노드의 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 복제 대상 파일에 관한 메시지를 읽어 들이는 동작; 및 상기 읽어 들인 메시지를 상기 타겟 노드로 송신하는 동작을 포함한다.
본 발명의 실시예에 따르면, 타겟 노드로부터 복제 요청이 있는 경우, 복제 대상 파일들에 대한 익스텐트 맵(Extent Map)을 생성하고, 복제 대상 파일들이 저장된 디스크(Disk)에서 익스텐트 맵의 물리적 순서에 따라 접근하여 랜덤 IO에 의한 복제 성능 저하를 방지할 수 있게 된다. 그로 인해, 데이터 초기 복제 시 복제 성능을 향상시키고 복제 시간을 단축할 수 있게 된다.
한편, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 초기 복제 시스템의 구성을 나타낸 도면이고,
도 2는 개시되는 일 실시예에서 복제 대상 파일에 대해 익스텐트 매핑 정보를 획득하는 상태를 설명하기 위한 도면이며,
도 3은 개시되는 일 실시예에 따른 소스 노드에서 익스텐트 맵에 따라 디스크에서 물리적 위치의 순서로 데이터를 읽는 상태를 개략적으로 나타낸 도면이고,
도 4는 본 발명의 일 실시예에 따른 소스 노드 및 타겟 노드의 구성을 나타낸 블록도이며,
도 5는 본 발명의 일 실시예에서, 복제 대상 파일이 하드링크인지 여부를 확인하는 과정을 나타낸 흐름도이고,
도 6은 본 발명의 일 실시예에서 복제 요청이 초기 복제 중단 후 재시작을 위한 요청인 경우 데이터 흐름을 나타낸 도면이며,
도 7은 본 발명의 일 실시예에 따른 데이터 초기 복제 방법의 성능 평가를 나타낸 그래프이고,
도 8은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다.
이하, 본 발명의 실시 예를 첨부된 도면들을 참조하여 더욱 상세하게 설명한다. 본 발명의 실시 예는 여러 가지 형태로 변형할 수 있으며, 본 발명의 범위가 아래의 실시 예들로 한정되는 것으로 해석되어서는 안 된다. 본 실시 예는 당업계에서 평균적인 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위해 제공되는 것이다. 따라서 도면에서의 요소의 형상은 보다 명확한 설명을 강조하기 위해 과장되었다.
본 발명이 해결하고자 하는 과제의 해결 방안을 명확하게 하기 위한 발명의 구성을 본 발명의 바람직한 실시 예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명 시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다.
도 1은 본 발명의 일 실시예에 따른 데이터 초기 복제 시스템의 구성을 나타낸 도면이다.
도 1을 참조하면, 데이터 초기 복제 시스템(100)은 소스 노드(Source Node)(102) 및 타겟 노드(Target Node)(104)를 포함한다. 소스 노드(102)와 타겟 노드(104)는 통신 네트워크(150)를 통해 상호 통신 가능하게 연결된다.
개시되는 실시예들에서, 통신 네트워크(150)는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wide area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
소스 노드(102) 및 타겟 노드(104)는 비일시적 컴퓨터 판독 가능한 저장 매체(non-transitory computer readable storage medium)를 구비하는 컴퓨팅 장치로서, 예를 들어, 스마트 폰, 태블릿 PC, 노트북, 및 데스크탑 PC 등을 포함할 수 있다.
소스 노드(102)는 복제 대상 파일들이 저장된 컴퓨팅 장치로서, 타겟 노드(104)의 복제 요청에 따라 복제 대상 파일들을 타겟 노드(104)로 전송할 수 있다. 타겟 노드(104)는 소스 노드(102)로부터 복제 대상 파일들을 수신하여 저장하는 컴퓨팅 장치로서, 소스 노드(102)로 복제 요청을 전송하여 복제 대상 파일들을 수신할 수 있다.
개시되는 실시예에서, 소스 노드(102)는 타겟 노드(104)로부터 복제 요청이 있는 경우, 복제 대상 파일들에 대한 익스텐트 맵(Extent Map)을 생성하고, 복제 대상 파일들이 저장된 디스크(Disk)에서 익스텐트 맵의 물리적 순서에 따라 접근하여 랜덤 IO에 의한 복제 성능 저하를 방지할 수 있다. 여기서, 익스텐트(Extent)는 하나의 파일에서 하나 이상의 연속적인 블록의 묶음을 의미하며, 블록(Block)은 파일 시스템에서 파일을 관리하는 기본 단위이다.
도 2는 개시되는 일 실시예에서 복제 대상 파일에 대해 익스텐트 매핑 정보를 획득하는 상태를 설명하기 위한 도면이다.
도 2를 참조하면, 블록의 크기는 4,096 Bytes 이고, 복제 대상 파일(A)의 크기는 10,000 Bytes이며, 복제 대상 파일(A)은 3개의 블록(B1, B2, B3)으로 구성된다고 가정한다. 여기서, 블록(B2)와 블록(B3)는 연속된 블록을 이루고 있으므로, 하나의 익스텐트(Extent 1)(제1 익스텐트)를 구성하고, 블록(B1)은 다른 블록과 단절되어 있으므로 또 다른 하나의 익스텐트(Extent 2)(제2 익스텐트)를 구성하게 된다.
소스 노드(102)는 각 익스텐트들에 대한 익스텐트 매핑 정보를 획득할 수 있다. 익스텐트 맵은 익스텐트 매핑 정보들의 집합을 의미할 수 있다. 여기서, 익스텐트 매핑 정보는 해당 익스텐트의 물리적 위치(fe_physical), 해당 익스텐트의 논리적 위치(fe_logical), 및 익스텐트의 길이(length)를 포함할 수 있다. 즉, 익스텐트 매핑 정보는 해당 익스텐트의 물리적 위치와 논리적 위치를 매핑한 정보일 수 있다. 익스텐트의 논리적 위치는 해당 익스텐트가 파일에 저장된 위치를 의미하고, 익스텐트의 물리적 위치는 해당 익스텐트가 디스크에 저장된 실제 위치를 의미할 수 있다.
제1 익스텐트(Extent 1)는 물리적 위치(fe_physical)가 20,480이고, 논리적 위치(fe_logical)가 4,096이며, 길이(length)가 5,904임을 확인할 수 있다. 제2 익스텐트(Extent 2)는 물리적 위치(fe_physical)가 40,960이고, 논리적 위치(fe_logical)가 0이며, 길이(length)가 4,096임을 확인할 수 있다.
소스 노드(102)는 복제 대상 파일들의 익스텐트 맵을 획득하고, 디스크에서 익스텐트들의 물리적 위치의 순서로 데이터를 읽어 들여 타겟 노드(104)로 전송할 수 있다. 이때, 소스 노드(102)는 데이터들을 비동기(Asynchronous) 모드로 전송할 수 있다. 소스 노드(102)에서는 데이터들을 비동기(Asynchronous) 모드로 전송하기 위해 다중 버퍼를 사용할 수 있다. 다중 버퍼를 사용함으로써, 버퍼에 데이터를 삽입하는 과정에서 성능 저하를 완화시키고 신속하게 데이터를 전송할 수 있게 된다.
소스 노드(102)는 각 복제 대상 파일의 익스텐트 맵을 탐색 트리(예를 들어, B+ Tree 등)에 삽입하여 디스크에서 해당 데이터가 저장된 실제 위치(즉, 물리적 위치)에 접근하고, 디스크에서 물리적 위치의 순서에 따라 데이터를 읽어 들일 수 있다. 탐색 트리는 엔트리들로 구성이 되며, 각 엔트리는 키(Key)와 값(Value)으로 구성될 수 있다. 이때, 키(Key)는 탐색 트리의 식별자가 된다. 개시되는 실시예에서, 물리적 위치는 탐색 트리의 키로 사용할 수 있다. 즉, 디스크에서 물리적 위치에 대한 정렬을 위해 탐색 트리를 사용할 수 있다.
여기서, 소스 노드(102)는 각 복제 대상 파일의 익스텐트 맵을 탐색 트리에 삽입할 때, 익스텐트 매핑 정보에 파일 식별자(inode) 및 플래그(flag) 정보를 추가할 수 있다. 각 복제 대상 파일의 익스텐트 맵을 탐색 트리에 삽입하면, 디스크에서 각 익스텐트들의 물리적 위치가 분류(Sorting) 되어 순서대로 정렬될 수 있게 된다.
도 3은 개시되는 일 실시예에 따른 소스 노드(102)에서 익스텐트 맵에 따라 디스크에서 물리적 위치의 순서로 데이터를 읽는 상태를 개략적으로 나타낸 도면이다.
도 3을 참조하면, 소스 노드(102)에 제1 파일(file 1) 및 제2 파일(file 2)이 존재하고, 제1 파일(file 1)은 제1 블록(B1), 제2 블록(B2), 및 제3 블록(B3)을 포함하며, 제2 파일(file 2)은 제4 블록(B4), 제5 블록(B5), 및 제6 블록(B6)을 포함한다고 가정한다.
그리고, 제1 파일(file 1) 및 제2 파일(file 2)에 대해 익스텐트 맵을 획득하고 탐색 트리에 삽입한 결과, 디스크에서 물리적 위치의 순서가 제2 블록(B2), 제4 블록(B4), 제1 블록(B1), 제5 블록(B5), 제6 블록(B6), 및 제3 블록(B3)이 된 경우, 소스 노드(102)는 제2 블록(B2) → 제4 블록(B4) → 제1 블록(B1) → 제5 블록(B5) → 제6 블록(B6) → 제3 블록(B3)의 순서로 데이터를 읽어 들일 수 있다.
이 경우, 디스크에 직접 접근하여 물리적 위치의 순서에 따라 데이터를 읽어 들이기 때문에, 파일을 열고 데이터를 읽어 들이는 것보다 신속하게 데이터를 읽어 들일 수 있게 된다. 즉, 제1 파일(file 1) 및 제2 파일(file 2)을 열어 각 블록을 읽어 들이려면, 디스크에서 제1 블록(B1) → 제2 블록(B2) → 제3 블록(B3) → 제4 블록(B4) → 제5 블록(B5) → 제6 블록(B6)의 순서로 데이터를 읽어야 하기 때문에, 디스크에서 물리적 위치를 이리저리 옮겨가면서 데이터를 읽게 되어 시간이 더 소요되게 된다. 또한, 파일 시스템 계층의 개입이 없이 디스크에서 데이터를 직접 읽으므로, 파일 시스템 계층의 개입으로 인한 파일 읽기의 성능 저하를 방지할 수 있게 된다.
또한, 소스 노드(102)는 복제 대상 파일을 통신 네트워크(150)를 통해 타겟 노드(104)로 전송 시 파일 경로 정보를 기존과 다른 방식으로 변경할 수 있다. 구체적으로, 기존에는 파일 경로를 표현하기 위해 Canonical Path 또는 Absolute Path(예를 들어, /path/to/soruce)를 타겟 노드(104)로 보내는데, 이러한 파일 경로를 표현하는데 4,096 bytes를 할당한 후 전송하였다.
반면, 개시되는 실시예에서는, 파일 경로를 표현하기 위해 베이스 네임(Basename), 파일 식별자(inode), 및 해당 파일의 부모 노드의 식별자(parent inode)를 사용할 수 있다. 여기서, 베이스 네임(Basename)에는 256bytes를 할당하고, 파일 식별자(inode)에는 8bytes를 할당하며, 해당 파일의 부모 노드의 식별자(parent inode)에 8bytes를 할당할 수 있다. 이 경우, 파일 경로를 표현하기 위해 사용되는 데이터는 256 + 8 + 8 = 272bytes에 해당하므로, 기존의 파일 경로보다 데이터 량을 줄일 수 있게 된다.
한편, 개시되는 실시예에서 파일 전송을 위해 사용되는 메시지(Message)의 규격은 다음과 같이 정의될 수 있다.
● MSG_DIRECTORY : 디렉토리
- 타입(type), 네임(name), 디렉토리의 소유자(uid), 디렉토리의 소유 그룹(gid), 디렉토리 식별자(inode), 디렉토리 부모의 식별자(parent_inode), 읽기/쓰기/실행권한(permission)
● MSG_FILE : 파일
- 타입(type), 네임(name), 파일의 소유자(uid), 파일의 소유 그룹(gid), 파일 식별자(inode), 파일 부모의 식별자(parent_inode), 읽기/쓰기/실행권한(permission), 크기(size)
● MSG_SYMFILE : 심링크
- 타입(type), 네임(name), 파일의 소유자(uid), 파일의 소유 그룹(gid), 파일 식별자(inode), 파일 부모의 식별자(parent_inode), 링크 경로(link_path)
● MSG_HARDFILE : 하드 링크
- 타입(type), 네임(name), 파일의 소유자(uid), 파일의 소유 그룹(gid), 파일 식별자(inode), 파일 부모의 식별자(parent_inode)
● MSG_DATA : 파일의 실 데이터
- 타입(type), 데이터 길이(length), 파일 식별자(inode), 파일의 논리적 위치(offset), 플래그(flag), 실 데이터(data)
여기서, 플래그(flag)는 다음의 3가지 모드가 있을 수 있다.
1) MD_FIRST : 해당 파일에서 물리적 위치가 처음 데이터인 경우
2) MD_LAST : 해당 파일에서 물리적 위치가 마지막 데이터인 경우
3) MD_FALLOCATE : 해당 파일의 물리적 위치부터 해당 파일의 길이만큼 fallocate(디스크 공간 할당은 되어 있으나 실제 데이터는 없는 상태)인 경우
플래그(flag)가 MD_FALLOCATE 모드인 경우 해당 파일의 데이터 크기는 0이 되고, 플래그(flag)가 MD_FALLOCATE 모드가 아닌 경우 해당 파일의 데이터 크기는 데이터 길이(length)에 해당하게 된다.
도 4는 본 발명의 일 실시예에 따른 소스 노드(102) 및 타겟 노드(104)의 구성을 나타낸 블록도이다. 도 4에서는 복제 요청이 초기 복제 시작을 위한 요청인 경우 데이터 흐름을 나타내었다.
도 4를 참조하면, 소스 노드(102)는 리퀘스트 처리 모듈(111), 순회 모듈(113), 할당 모듈(115), 매핑 모듈(117), 수집 모듈(119), 송신 모듈(121), 및 재개 모듈(123)을 포함할 수 있다. 또한, 타겟 노드(104)는 리퀘스트 모듈(131), 수신 모듈(133), 및 실행 모듈(135)을 포함할 수 있다.
타겟 노드(104)의 리퀘스트 모듈(131)은 사용자의 명령에 따라 복제 요청을 소스 노드(102)로 송신할 수 있다. 여기서, 복제 요청에는 요청 종류 정보가 포함될 수 있다. 요청 종류 정보는 해당 복제 요청이 초기 복제 시작을 위한 요청인지 아니면 초기 복제 중단 후 재시작을 위한 요청인지에 대한 정보를 포함할 수 있다.
리퀘스트 처리 모듈(111)은 리퀘스트 모듈(131)로부터 복제 요청을 수신할 수 있다. 리퀘스트 처리 모듈(111)은 복제 요청에 포함된 요청 종류 정보에 따라 순회 모듈(113) 또는 재개 모듈(123)을 실행시킬 수 있다. 구체적으로, 리퀘스트 처리 모듈(113)은 요청 종류 정보를 확인한 결과 해당 복제 요청이 초기 복제 시작을 위한 요청인 경우 순회 모듈(113)을 실행시킬 수 있다. 또한, 리퀘스트 처리 모듈(113)은 요청 종류 정보를 확인한 결과 해당 복제 요청이 초기 복제 중단 후 재시작을 위한 요청인 경우 재개 모듈(123)을 실행시킬 수 있다.
순회 모듈(113)은 소스 노드(102)의 디렉토리를 순회하면서 엔트리 정보를 수집할 수 있다. 순회 모듈(113)은 복제 요청에 포함된 소스 경로(source_path)에 따라 디렉토리를 순회하면서 복제 대상 파일들의 엔트리 정보를 수집하고, 수집한 엔트리 정보를 할당 모듈(115)로 전달할 수 있다. 여기서, 엔트리 정보는 복제 대상 파일의 파일 식별자, 파일의 종류 및 접근 권한, 하드링크 수, 소유자, 소유자 그룹 및 파일 크기 등을 포함할 수 있다.
할당 모듈(115)은 순회 모듈(113)로부터 수신한 엔트리 정보에 기초하여 각 복제 대상 파일을 파일 타입에 따라 분류할 수 있다. 할당 모듈(115)은 복제 대상 파일의 파일 타입에 따라 해당 복제 대상 파일을 매핑 모듈(117) 및 송신 모듈(121) 중 하나 이상으로 전송할 수 있다.
구체적으로, 할당 모듈(115)은 복제 대상 파일의 파일 타입이 디렉토리인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_DIRECTORY를 할당한 후 송신 모듈(121)로 전송할 수 있다.
또한, 할당 모듈(115)은 복제 대상 파일의 파일 타입이 정규 파일(Regular File)인 경우 하드링크(Hardlink)인지 여부를 확인하고, 하드링크인지 여부에 따라 해당 복제 대상 파일을 송신 모듈(121)로 전송하거나 해당 복제 대상 파일을 송신 모듈(121) 및 매핑 모듈(117)로 각각 전송할 수 있다.
도 5는 본 발명의 일 실시예에서, 복제 대상 파일이 하드링크인지 여부를 확인하는 과정을 나타낸 흐름도이다. 도 5를 참조하면, 할당 모듈(115)은 복제 대상 파일의 파일 타입이 정규 파일(Regular File)인지를 확인한다(S 101). 단계 S 101의 확인 결과, 복제 대상 파일이 정규 파일인 경우, 할당 모듈(115)은 복제 대상 파일의 링크 수가 복수 개인지 여부를 확인한다(S 103).
단계 S 103의 확인 결과, 복제 대상 파일의 링크 수가 복수 개인 경우, 할당 모듈(115)은 기 설정된 탐색 트리(예를 들어, B+ Tree)에 복제 대상 파일의 파일 식별자(inode)가 존재하는지 여부를 확인한다(S 105). 단계 S 105의 확인 결과, 기 설정된 탐색 트리에 복제 대상 파일의 파일 식별자가 존재하는 경우, 할당 모듈(115)은 복제 대상 파일이 하드링크인 것으로 판단한다(S 107).
예시적인 실시예에서, 할당 모듈(115)은 복제 대상 파일이 정규 파일이면서 하드링크인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_HARDFILE를 할당한 후 송신 모듈(121)로 전송할 수 있다. 또한, 할당 모듈(115)은 복제 대상 파일이 정규 파일이면서 하드링크가 아닌 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_FILE를 할당한 후 송신 모듈(121) 및 매핑 모듈(117)로 각각 전송할 수 있다.
또한, 할당 모듈(115)은 복제 대상 파일의 파일 타입이 심링크(Symlink)인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_SYMFILE 를 할당한 후 송신 모듈(121)로 전송할 수 있다.
매핑 모듈(117)은 할당 모듈(115)로부터 전달받은 복제 대상 파일(즉, 정규 파일이면서 하드링크가 아닌 파일)에 대해 익스텐트 매핑 정보를 획득할 수 있다. 즉, 매핑 모듈(117)은 해당 복제 대상 파일에 대해 익스텐트의 물리적 위치(fe_physical), 익스텐트의 논리적 위치(fe_logical), 및 익스텐트의 길이(length)를 포함하는 익스텐트 매핑 정보를 획득할 수 있다.
매핑 모듈(117)은 획득한 익스텐트 매핑 정보를 탐색 트리(예를 들어, B+ Tree 등)에 삽입하여 해당 복제 대상 파일의 익스텐트 매핑 정보를 정렬할 수 있다. 매핑 모듈(117)은 익스텐트 매핑 정보를 탐색 트리에 삽입할 때 익스텐트 매핑 정보에 파일 식별자(inode) 및 플래그(flag) 정보를 추가할 수 있다. 매핑 모듈(117)은 탐색 트리의 엔트리 개수가 일정 량을 넘어서면 새로운 탐색 트리를 할당하고, 기존의 탐색 트리는 수집 모듈(119)로 전송할 수 있다. 즉, 매핑 모듈(117)은 하나 이상의 탐색 트리를 생성하고, 이를 수집 모듈(119)로 전송할 수 있다.
표 1은 본 발명의 일 실시예에서 정렬되는 익스텐트 매핑 정보에 대한 매핑 테이블을 나타낸 표이다. 설명의 편의상 단위는 생략하였다.
물리적 위치 파일 식별자 논리적 위치 길이 플래그
10,000 103 60 20 MD_FIRST
10,020 106 0 20 MD_FIRST
10,040 103 0 60 MD_LAST
10,100 106 20 100 MD_LAST
20,000 100 0 120 MD_FIRST|MD_LAST
수집 모듈(119)은 매핑 모듈(117)로부터 전달되는 익스텐트 매핑 정보에 따라 디스크(Disk)에서 복제 대상 파일의 실제 데이터를 읽어 들여 송신 모듈(121)로 전송할 수 있다. 수집 모듈(119)은 익스텐트 매핑 정보에 따라 디스크에서 익스텐트들의 물리적 위치의 순서대로 복제 대상 파일의 실제 데이터를 읽어 들일 수 있다. 수집 모듈(119)은 디스크의 물리적 위치에서 익스텐트의 길이만큼 데이터를 읽어 들일 수 있다. 수집 모듈(119)은 디스크에서 읽어 들인 데이터에 대해 메시지 타입 MSG_DATA를 할당한 후 송신 모듈(121)로 전송할 수 있다.
송신 모듈(121)은 할당 모듈(115) 및 수집 모듈(119)로부터 전달받은 복제 대상 파일 관련 메시지를 타겟 노드(104)로 송신할 수 있다. 이때, 송신 모듈(121)은 다중 버퍼를 이용하여 할당 모듈(115) 및 수집 모듈(119)로부터 전달받은 복제 대상 파일 관련 메시지를 타겟 노드(104)로 송신할 수 있다.
구체적으로, 송신 모듈(121)은 할당 모듈(115) 및 수집 모듈(119)로부터 복제 대상 파일 관련 메시지를 수신하는 경우, 신규 버퍼를 할당함과 동시에 버퍼에 있는 데이터를 타겟 노드(104)로 송신할 수 있다. 이때, 전송중인 다른 버퍼가 있는 경우, 송신 모듈(121)은 전송중인 버퍼의 데이터 전송이 완료되면 상기 할당된 신규 버퍼의 데이터를 전송할 수 있다. 또한, 송신 모듈(121)은 할당된 버퍼에 데이터가 찰 때까지 데이터 전송을 대기할 수 있다.
한편, 타겟 노드(104)의 수신 모듈(133)은 소스 노드(102)로부터 복제 대상 파일 관련 메시지를 수신할 수 있다. 이때, 수신 모듈(133)은 다중 버퍼를 이용하여 송신 모듈(121)로부터 복제 대상 파일 관련 메시지를 수신할 수 있다. 수신 모듈(133)은 수신한 메시지를 메시지 타입 규격에 따라 파싱하여 실행 모듈(135)로 전달할 수 있다.
실행 모듈(135)은 수신 모듈(133)로부터 전달받은 데이터를 기 설정된 메시지의 규격에 맞게 처리할 수 있다. 실행 모듈(135)은 수신한 복제 대상 파일 관련 메시지를 메시지 타입에 따라 처리할 수 있다.
예를 들어, 수신한 복제 대상 파일 관련 메시지의 메시지 타입이 MSG_DIRECTORY 또는 MSG_FILE인 경우, 실행 모듈(135)은 디렉토리 또는 파일을 생성할 수 있다. 구체적으로, 실행 모듈(135)은 수신한 복제 대상 파일 관련 메시지의 inode, parent inode, 및 name을 이용하여 inode를 키(key)로 하는 해시맵 또는 트리를 구성하고, parent inode를 탐색하여 canonical path를 완성할 수 있다.
또한, 수신한 복제 대상 파일 관련 데이터의 메시지 타입이 MSG_SYMFILE인 경우, 실행 모듈(135)은 심링크를 생성할 수 있다. 구체적으로, 실행 모듈(135)은 수신한 복제 대상 파일 관련 데이터의 inode를 통해 해시맵 또는 트리에서 symfile의 path를 만든 후, 이를 이용하여 link_path로 symlink를 생성할 수 있다.
또한, 수신한 복제 대상 파일 관련 데이터의 메시지 타입이 MSG_HARDFILE인 경우, 실행 모듈(135)은 하드링크를 생성할 수 있다. 구체적으로, 실행 모듈은 수신한 복제 대상 파일 관련 데이터의 inode를 통해 해시맵 또는 트리에서 hardfile의 path를 생성하고, inode를 이용하여 기존 파일의 path를 얻어와 hardlink를 생성할 수 있다.
또한, 수신한 복제 대상 파일 관련 데이터의 메시지 타입이 MSG_DATA인 경우, 실행 모듈(135)은 파일의 실 데이터를 처리할 수 있다. 구체적으로, 실행 모듈(135)은 수신한 복제 대상 파일 관련 데이터의 inode를 통해 해시맵 또는 트리에서 file의 path를 구한 후, path를 통해 파일을 열고 data를 기록할 수 있다.
이때, 실행 모듈(135)은 데이터(data)를 기록하기 위해 플래그(Flag)를 이용할 수 있다. 구체적으로, MSG_DATA의 플래그(Flag)를 이용하여 파일에 대한 오퍼레이션(예를 들어, 파일 열기, 파일 닫기, 파일 쓰기, 및 파일 공간 확보 등)을 최적화 할 수 있다.
예시적인 실시예에서, 플래그 값이 MD_FIRST인 경우, 실행 모듈(135)은 path에 대한 파일을 열고, 파일의 정보를 캐시(Cache)에 등록한 후, 데이터 길이(length), 파일의 논리적 위치(offset), 및 실 데이터(data)를 이용해 데이터를 쓸 수 있다.
또한, 플래그 값이 MD_LAST인 경우, 실행 모듈(135)은 캐시에서 파일의 정보를 가져온 후, 데이터 길이(length), 파일의 논리적 위치(offset), 및 실 데이터(data)를 이용해 데이터를 쓰고, 파일을 닫은 후, 파일의 정보를 캐시에서 지울 수 있다.
또한, 플래그 값이 MD_FIRST|MD_LAST 인 경우, 실행 모듈(135)은 path에 대한 파일을 연 후, 캐시에 파일 정보를 저장하지 않고, 데이터 길이(length), 파일의 논리적 위치(offset), 및 실 데이터(data)를 이용해 데이터를 쓰고, 파일을 닫을 수 있다.
또한, 플래그 값이 MD_FALLOCATE인 경우, 실행 모듈(135)은 캐시에서 파일의 정보를 가져온 후, 데이터 길이(length) 및 파일의 논리적 위치(offset)를 이용해 파일의 공간 확보만을 수행할 수 있다.
또한, 플래그 값이 없는 경우, 실행 모듈(135)은 캐시에서 파일의 정보를 가져온 후, 데이터 길이(length), 파일의 논리적 위치(offset), 및 실 데이터(data)를 이용해 데이터를 쓸 수 있다.
여기서, 실행 모듈(135)은 복제 대상 파일 관련 데이터의 메시지 타입에 따라 인터페이스 함수를 사용하여 각 기능을 구현할 수 있다. 또한, 실행 모듈(135)은 초기 복제 시작을 위한 요청에 따라 소스 노드(102)로부터 수신한 복제 대상 파일 관련 마지막 적용 데이터를 복제 중단 후 재시작을 위해 별도의 저장 공간에 저장할 수 있다.
한편, 도 6은 본 발명의 일 실시예에서 복제 요청이 초기 복제 중단 후 재시작을 위한 요청인 경우 데이터 흐름을 나타낸 도면이다.
도 6을 참조하면, 리퀘스트 모듈(131)은 복제 요청을 소스 노드(102)로 송신할 수 있다. 이때, 복제 요청의 요청 종류 정보는 초기 복제 중단 후 재시작을 위한 요청일 수 있다. 리퀘스트 모듈(131)은 복제 요청에 초기 복제 시작을 위한 요청에서 수신한 마지막 적용 데이터의 정보를 포함시킬 수 있다.
리퀘스트 처리 모듈(111)은 복제 요청에 포함된 요청 종류 정보가 초기 복제 중단 후 재시작을 위한 요청이므로, 재개 모듈(123)을 실행시킬 수 있다.
재개 모듈(123)은 복제 요청에 포함된 마지막 적용 데이터와 익스텐트 매핑 정보에 대한 매핑 테이블을 비교하여 매핑 테이블에서 마지막 적용 데이터와 동일한 익스텐트를 확인할 수 있다.
수집 모듈(119)은 디스크에서 마지막 적용 데이터와 동일한 익스텐트의 다음 위치부터 복제 대상 파일의 실제 데이터를 읽어 들여 송신 모듈(121)로 전송할 수 있다. 송신 모듈(121)은 수신 모듈(133)로 복제 대상 파일을 전송하며, 실행 모듈(135)은 수신 모듈(133)이 수신한 데이터를 기 설정된 메시지의 규격에 맞게 처리할 수 있다.
개시되는 실시예에 의하면, 타겟 노드로부터 복제 요청이 있는 경우, 복제 대상 파일들에 대한 익스텐트 맵(Extent Map)을 생성하고, 복제 대상 파일들이 저장된 디스크(Disk)에서 익스텐트 맵의 물리적 순서에 따라 접근하여 랜덤 IO에 의한 복제 성능 저하를 방지할 수 있게 된다. 그로 인해, 데이터 초기 복제 시 복제 성능을 향상시키고 복제 시간을 단축할 수 있게 된다.
본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 "모듈"은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아니다.
도 7은 본 발명의 일 실시예에 따른 데이터 초기 복제 방법의 성능 평가를 나타낸 그래프이다. 여기서는, 전체 파일 크기가 10G Bytes이고, 폴더 개수가 44,380개이며, 파일 개수가 673,060개인 데이터를 초기 복제하여 성능을 평가하였다. 초기 복제 성능 비교는 v0.05 버전과 v0.07버전에 대해 각각 수행되었으며, 실험 환경에 관한 정보는 표 2와 같다.
구분 정보 상세


소스 노드 및 타겟 노드
CPU Intel® Xeon® CPU E5506 @ 2.13GHz 2cpu 8core
Network Transfer : 1.10GBytes, Bandwidth : 941~943 Mbits/sec
Mem 16GB
OS Red hat enterprise 7.8 64bit
kernel 3.10.0-1127.el7.x86_64
Package ver initsync-0.1.1-Linux.rpm
실 서버를 이용한 실험 결과, 도 6에 도시된 바와 같이, 본 발명의 실시예에 따른 데이터 초기 복제 방법(initsync)의 경우 복제 시간이 약 12분 35초이고, 종래의 복제 방법(rsync)의 경우 복제 시간이 약 24분 46초인 것을 알 수 있다. 이로부터 본 발명의 실시예에 따른 데이터 초기 복제 방법이 종래의 방법과 비교하여 약 2배 정도 빠른 복제 속도를 나타내는 것을 확인할 수 있다.
추가로, 아래의 표 3에 나타낸 실험 환경에서 표 4에 나타낸 데이터를 초기 복제하는 실험을 수행하여 본 발명의 실시예에 따른 데이터 초기 복제 방법과 종래의 초기 복제 방법의 성능을 비교하였다.
실험 환경
운영체제 Archlinux
커널 5.8.8-arch1-1
CPU AMD Ryzen 9 3900X 12-Core Processor
RAM 32 GiB
Source Disk Samsung SSD 860 EVO 500GB, ext4
Target Disk Samsung SSD 860 EVO 500GB, ext4
총 용량 95,840,781,296
파일 개수 7,002,230
디렉토리 개수 470,863
심링크 개수 3,838
하드링크 개수 0
그 결과, 본 발명의 실시예에 따른 데이터 초기 복제 방법의 경우 복제 시간이 약 8분 1초이고, 종래의 복제 방법의 경우 복제 시간이 약 13분 25초인 것으로 나타났다. 이로부터 본 발명의 실시예에 따른 데이터 초기 복제 방법에 의하면 종래의 방법과 비교하여 데이터 초기 복제 시간을 현저히 단축할 수 있다는 것을 확인할 수 있다.
도 8은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 소스 노드(102)일 수 있다. 또한, 컴퓨팅 장치(12)는 타겟 노드(104)일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 하나의 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상의 상세한 설명은 본 발명을 예시하는 것이다. 또한 전술한 내용은 본 발명의 바람직한 실시 형태를 나타내어 설명하는 것이며, 본 발명은 다양한 다른 조합, 변경 및 환경에서 사용할 수 있다. 즉 본 명세서에 개시된 발명의 개념의 범위, 저술한 개시 내용과 균등한 범위 및/또는 당업계의 기술 또는 지식의 범위내에서 변경 또는 수정이 가능하다. 저술한 실시예는 본 발명의 기술적 사상을 구현하기 위한 최선의 상태를 설명하는 것이며, 본 발명의 구체적인 적용 분야 및 용도에서 요구되는 다양한 변경도 가능하다. 따라서 이상의 발명의 상세한 설명은 개시된 실시 상태로 본 발명을 제한하려는 의도가 아니다. 또한 첨부된 청구범위는 다른 실시 상태도 포함하는 것으로 해석되어야 한다.
100 : 데이터 초기 복제 시스템
102 : 소스 노드
104 : 타겟 노드
111 : 리퀘스트 처리 모듈
113 : 순회 모듈
115 : 할당 모듈
117 : 매핑 모듈
119 : 수집 모듈
121 : 송신 모듈
123 : 재개 모듈
131 : 리퀘스트 모듈
133 : 수신 모듈
135 : 실행 모듈

Claims (15)

  1. 하나 이상의 프로세서들, 및
    상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치이고, 데이터 초기 복제를 위한 소스 노드로서,
    타겟 노드로부터 요청 종류 정보가 포함된 복제 요청을 수신하는 리퀘스트 처리 모듈;
    상기 복제 요청에 대응하는 복제 대상 파일의 익스텐트 매핑 정보를 획득하고, 상기 익스텐트 매핑 정보를 기 설정된 탐색 트리에 삽입하는 매핑 모듈;
    상기 소스 노드의 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 복제 대상 파일과 관련된 메시지를 읽어 들이는 수집 모듈; 및
    상기 수집 모듈이 읽어 들인 메시지를 받아 상기 타겟 노드로 송신하는 송신 모듈을 포함하는, 컴퓨팅 장치.
  2. 청구항 1에 있어서,
    상기 복제 대상 파일의 익스텐트 매핑 정보는, 상기 복제 대상 파일의 익스텐트의 물리적 위치, 상기 익스텐트의 논리적 위치, 및 상기 익스텐트의 길이를 포함하고,
    상기 매핑 모듈은, 상기 탐색 트리에 삽입할 때 상기 익스텐트 매핑 정보에 파일 식별자 및 플래그 정보를 추가하는, 컴퓨팅 장치.
  3. 청구항 2에 있어서,
    상기 수집 모듈은,
    상기 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 물리적 위치의 순서대로 데이터를 읽어 들이는, 컴퓨팅 장치.
  4. 청구항 1에 있어서,
    상기 컴퓨팅 장치는,
    상기 복제 요청에 따라 상기 소스 노드의 디렉토리를 순회하면서 엔트리 정보를 수집하는 순회 모듈; 및
    상기 엔트리 정보에 기초하여 각 복제 대상 파일을 파일 타입에 따라 분류하고, 분류된 파일 타입에 기초하여 각 복제 대상 파일을 상기 매핑 모듈 및 상기 송신 모듈 중 하나 이상으로 전송하는 할당 모듈을 더 포함하는, 컴퓨팅 장치.
  5. 청구항 4에 있어서,
    상기 할당 모듈은,
    상기 복제 대상 파일의 파일 타입이 디렉토리인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_DIRECTORY를 할당한 후 상기 송신 모듈로 전송하고,
    상기 복제 대상 파일의 파일 타입이 심링크(Symlink)인 경우, 해당 복제 대상 파일에 대해 메시지 타입 MSG_SYMFILE 를 할당한 후 상기 송신 모듈로 전송하는, 컴퓨팅 장치.
  6. 청구항 4에 있어서,
    상기 할당 모듈은,
    상기 복제 대상 파일의 파일 타입이 정규 파일인 경우, 상기 복제 대상 파일이 하드링크(Hardlink)인지 여부에 따라 상기 복제 대상 파일을 상기 송신 모듈로 전송하거나 상기 송신 모듈 및 상기 매핑 모듈로 각각 전송하는, 컴퓨팅 장치.
  7. 청구항 6에 있어서,
    상기 할당 모듈은,
    상기 복제 대상 파일의 파일 타입이 정규 파일이고, 상기 복제 대상 파일의 링크 수가 복수 개이며, 상기 탐색 트리에 상기 복제 대상 파일의 파일 식별자가 존재하는 경우, 상기 복제 대상 파일이 하드링크인 것으로 판단하는, 컴퓨팅 장치.
  8. 청구항 6에 있어서,
    상기 할당 모듈은,
    상기 복제 대상 파일이 정규 파일이면서 하드링크인 경우, 상기 복제 대상 파일에 대해 메시지 타입 MSG_HARDFILE를 할당한 후 상기 송신 모듈로 전송하고,
    상기 복제 대상 파일이 정규 파일이면서 하드링크가 아닌 경우, 상기 복제 대상 파일에 대해 메시지 타입 MSG_FILE를 할당한 후 상기 송신 모듈 및 상기 매핑 모듈로 각각 전송하는, 컴퓨팅 장치.
  9. 청구항 1에 있어서,
    상기 송신 모듈은,
    다중 버퍼를 이용하여 상기 메시지를 상기 타겟 노드로 송신하는, 컴퓨팅 장치.
  10. 청구항 1에 있어서,
    상기 요청 종류 정보는,
    상기 복제 요청이 초기 복제 시작을 위한 요청인지 또는 초기 복제 중단 후 재시작을 위한 요청인지에 대한 정보를 포함하는, 컴퓨팅 장치.
  11. 청구항 10에 있어서,
    상기 요청 종류 정보가 상기 초기 복제 중단 후 재시작을 위한 요청인 경우,
    상기 복제 요청은, 상기 초기 복제 시작을 위한 요청에서 상기 타겟 노드에 마지막 적용된 데이터의 정보를 포함하고,
    상기 컴퓨팅 장치는,
    상기 복제 요청에 포함된 상기 마지막 적용된 데이터의 정보와 상기 익스텐트 매핑 정보를 비교하는 재개 모듈을 더 포함하는, 컴퓨팅 장치.
  12. 청구항 1에 있어서,
    상기 타겟 노드는,
    상기 요청 종류 정보가 포함된 복제 요청을 상기 소스 노드로 송신하는 리퀘스트 모듈;
    상기 송신 모듈로부터 상기 메시지를 수신하는 수신 모듈; 및
    상기 수신 모듈이 수신한 메시지를 메시지 규격에 따라 처리하는 실행 모듈을 포함하는, 컴퓨팅 장치.
  13. 청구항 12에 있어서,
    상기 수신 모듈은,
    상기 송신 모듈에서 송신하는 메시지를 다중 버퍼를 이용하여 수신하고, 수신한 메시지를 메시지 규격에 맞게 파싱(Parsing)하는, 컴퓨팅 장치.
  14. 청구항 12에 있어서,
    상기 복제 대상 파일의 메시지 타입은, MSG_DIRECTORY, MSG_FILE, MSG_SYMFILE, MSG_HARDFILE, 및 MSG_DATA를 포함하고,
    상기 실행 모듈은,
    상기 복제 대상 파일의 메시지 타입에 따라 상기 복제 대상 파일을 처리하며, 상기 복제 대상 파일의 메시지 타입이 MSG_DATA인 경우, 상기 MSG_DATA의 플래그(Flag)를 이용하여 상기 복제 대상 파일에 오퍼레이션을 수행하는, 컴퓨팅 장치.
  15. 하나 이상의 프로세서들, 및
    상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치이고, 데이터 초기 복제를 위한 소스 노드에서 수행되는 방법으로서,
    타겟 노드로부터 요청 종류 정보가 포함된 복제 요청을 수신하는 동작;
    상기 복제 요청에 대응하는 복제 대상 파일의 익스텐트 매핑 정보를 획득하고, 상기 익스텐트 매핑 정보를 기 설정된 탐색 트리에 삽입하는 동작;
    상기 소스 노드의 디스크에서 상기 익스텐트 매핑 정보에 따라 상기 복제 대상 파일에 관한 메시지를 읽어 들이는 동작; 및
    상기 읽어 들인 메시지를 상기 타겟 노드로 송신하는 동작을 포함하는, 데이터 초기 복제 방법.
KR1020200162250A 2020-09-28 2020-11-27 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치 KR102405890B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20200125613 2020-09-28
KR1020200125613 2020-09-28

Publications (2)

Publication Number Publication Date
KR20220042974A KR20220042974A (ko) 2022-04-05
KR102405890B1 true KR102405890B1 (ko) 2022-06-08

Family

ID=81182177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200162250A KR102405890B1 (ko) 2020-09-28 2020-11-27 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102405890B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100962883B1 (ko) 2004-06-10 2010-06-09 인터내셔널 비지네스 머신즈 코포레이션 소스 데이터를 타겟 데이터로 이전하는 방법, 시스템 및제조물
US8601220B1 (en) 2011-04-29 2013-12-03 Netapp, Inc. Transparent data migration in a storage system environment
JP2015530629A (ja) 2012-10-11 2015-10-15 株式会社日立製作所 移行先ファイルサーバ及びファイルシステム移行方法
US20170060898A1 (en) 2015-08-27 2017-03-02 Vmware, Inc. Fast file clone using copy-on-write b-tree

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100503899B1 (ko) 2002-11-26 2005-07-25 진진시스템(주) 데이터베이스 복제시스템 및 그 복제방법
KR101024249B1 (ko) * 2008-05-28 2011-03-29 매크로임팩트 주식회사 실시간 데이터 복제 시스템
KR102089710B1 (ko) * 2017-11-27 2020-03-16 주식회사 데이타커맨드 연속 데이터 관리 시스템 및 방법
KR102089291B1 (ko) * 2018-06-19 2020-03-16 주식회사 티맥스데이터 데이터 익스텐트 이동 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100962883B1 (ko) 2004-06-10 2010-06-09 인터내셔널 비지네스 머신즈 코포레이션 소스 데이터를 타겟 데이터로 이전하는 방법, 시스템 및제조물
US8601220B1 (en) 2011-04-29 2013-12-03 Netapp, Inc. Transparent data migration in a storage system environment
JP2015530629A (ja) 2012-10-11 2015-10-15 株式会社日立製作所 移行先ファイルサーバ及びファイルシステム移行方法
US20170060898A1 (en) 2015-08-27 2017-03-02 Vmware, Inc. Fast file clone using copy-on-write b-tree

Also Published As

Publication number Publication date
KR20220042974A (ko) 2022-04-05

Similar Documents

Publication Publication Date Title
US11487787B2 (en) System and method for near-synchronous replication for object store
US10884633B2 (en) System and method for optimized signature comparisons and data replication
US8515911B1 (en) Methods and apparatus for managing multiple point in time copies in a file system
TWI549060B (zh) Access methods and devices for virtual machine data
WO2018040591A1 (zh) 一种远程数据复制方法及系统
US8966188B1 (en) RAM utilization in a virtual environment
KR20190095089A (ko) 분산 파일 시스템에 데이터 및 메타데이터를 효율적으로 저장하기 위한 키-값 스토리지를 활용하는 시스템 및 방법
KR20210075845A (ko) 네이티브 키-밸류 분산 스토리지 시스템
EP3206128A1 (en) Data storage method, data storage apparatus, and storage device
US9323771B2 (en) Efficient rename in a lock-coupled traversal of B+tree
US20120284231A1 (en) Distributed, asynchronous and fault-tolerant storage system
CN106528338B (zh) 一种远程数据复制方法、存储设备及存储系统
US9696919B1 (en) Source/copy reference tracking with block pointer sets
US10387384B1 (en) Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
KR102595120B1 (ko) 연속적으로 이용가능한 네트워크 파일 시스템(nfs) 상태 데이터를 위한 시스템들 및 방법들
US10691478B2 (en) Migrating virtual machine across datacenters by transferring data chunks and metadata
US10146466B1 (en) Merging mapping metadata to promote reference counting efficiency
KR102405890B1 (ko) 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치
WO2016127807A1 (zh) 多副本写入存储设备的方法及存储设备
US10372347B2 (en) Selectively limiting throughput of test objects that share system resources with production objects
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
US11709596B2 (en) Method, device and computer program for data storage
US10628391B1 (en) Method and system for reducing metadata overhead in a two-tier storage architecture
US11586353B2 (en) Optimized access to high-speed storage device
CN115812198A (zh) 利用多协议数据访问的一致实体标记

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant