KR20120042020A - 데이터 백업 장치 및 방법 - Google Patents

데이터 백업 장치 및 방법 Download PDF

Info

Publication number
KR20120042020A
KR20120042020A KR1020100103478A KR20100103478A KR20120042020A KR 20120042020 A KR20120042020 A KR 20120042020A KR 1020100103478 A KR1020100103478 A KR 1020100103478A KR 20100103478 A KR20100103478 A KR 20100103478A KR 20120042020 A KR20120042020 A KR 20120042020A
Authority
KR
South Korea
Prior art keywords
file
backup
data
information
target file
Prior art date
Application number
KR1020100103478A
Other languages
English (en)
Other versions
KR101237746B1 (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 KR1020100103478A priority Critical patent/KR101237746B1/ko
Publication of KR20120042020A publication Critical patent/KR20120042020A/ko
Application granted granted Critical
Publication of KR101237746B1 publication Critical patent/KR101237746B1/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
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

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

Abstract

데이터가 변경된 파일을 찾아내어 변경된 데이터를 백업하는 데이터 백업 장치 및 방법을 개시한다.
일실시예로서, 데이터 백업 장치 및 방법은, 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업함으로써 데이터 백업에 소요되는 시간을 단축하고, 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업함으로써 백업에 사용되는 저장 매체를 낭비 없이 이용하고, 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업함으로써 동일 데이터를 중복되지 않게 데이터 백업을 수행한다.

Description

데이터 백업 장치 및 방법{DATA BACKUP APPARATUS AND METHOD FOR THE SAME}
본 발명의 실시예들은 데이터가 변경된 파일을 찾아내어 변경된 데이터를 백업하는 데이터 백업 장치 및 방법에 관한 것이다.
컴퓨터의 메모리에 저장되어 프로세서에 의해 실행되는 모든 응용 프로그램은 데이터를 처리하기 위하여 동작한다. 이때 응용 프로그램의 데이터 연산을 통하여 처리된 결과 데이터는 입출력 관련 시스템 콜(system call)에 의하여 다시 저장 매체에 저장된다. 저장 매체에 저장된 데이터는 시스템의 장애와 같은 여러 요인으로 인해 손실 또는 유실 될 수 있으며, 이로 인해 업무의 연속성을 보장할 수 없을 뿐만 아니라 데이터 복구에 막대한 비용이 소요될 수 있다.
데이터 손실로부터 발생하는 업무 공백을 최소화하기 위하여 데이터 관리 파트에서 데이터 백업 시스템을 도입하여 운용하고 있다. 데이터 백업 시스템은 데이터의 중요도 및 성격 등에 따라 전체 백업 (full backup), 증분 백업 (incremental backup) 등의 방법을 이용하여 데이터를 백업한다. 전체 백업은 현재 백업을 하고자 하는 모든 데이터를 백업하고, 증분 백업은 전체 백업 이후 변화된 데이터에 대하여만 백업을 한다. 증분 백업은 전체 데이터를 백업하는 전체 백업 시간보다 데이터 백업할 대상이 줄 수 있어 백업하는 시간을 절약할 수 있다.
전체 백업 또는 증분 백업을 수행할 때 데이터를 읽어오는 방법은 크게 파일을 기반으로 읽는 방법과 디스크의 블록을 기반으로 데이터를 읽는 방법이 있다. 블록을 기반으로 데이터를 읽는 방법은 디스크 전체를 한번에 읽어 데이터를 백업하는 방법으로 데이터를 읽는 시간을 줄일 수 있다. 반면 파일 또는 파일 시스템 구조 등에 대한 정보를 무시하고 백업을 했으므로 특정 파일 시스템의 파일의 일부를 복구하는 등의 요구를 처리하기 위해서는 파일을 기반으로 한 백업보다 더 많은 시간이 걸릴 수 있다. 파일을 기반으로 데이터를 백업하는 방법은 블록 기반의 백업 방법보다 데이터를 읽는 시간은 더 걸릴 수 있으나, 파일 시스템과 파일에 대한 정보를 온전히 백업하고 있어 데이터를 복구하는데 편리성과 효율성을 가질 수 있다.
전체 백업은 모든 데이터를 백업 대상으로 삼고 데이터를 읽어 백업을 하므로 백업 대상을 찾는 시간은 전체 백업 시간에서 그리 중요한 요소가 아닐 수 있다. 그러나 증분 백업에서 백업 대상을 찾는 것은 아주 중요한 일이며 많은 시간이 걸릴 수 있다. 예를 들어, 블록 기반으로 데이터를 읽어 증분 백업을 하기 위해서는 전체 백업 이후 변경된 데이터 블록을 선별하여야 하며 이를 위해 어떠한 블록이 변경되었나를 추적하는 방법을 제공하여야 한다. 또한 파일 기반으로 데이터를 읽어 증분 백업을 하기 위해서는 전체 백업 이후 어떤 파일이 변경되었는지를 알 수 있어야 한다.
일반적으로 파일 단위의 백업에서 백업 대상 파일을 찾기 위해서는 전체 디렉토리 트리(directory tree)를 도 1에 도시된 바와 같이, 일일히 탐색하면서 직전 백업 이후 어떤 파일이 변경되었는지를 검사하여야 한다. 도 1은 루트 디렉토리(root directory)의 하위 디렉토리 중 하나를 깊이 우선 탐색(depth first search) 방법으로 검색하는 방법을 나타내고 있다. 모든 디렉토리는 이러한 방법으로 검사되어야 하며 직전 백업 정보와 비교를 해서 어떤 변화가 생겼나를 판단한다. 따라서 많은 수의 파일을 포함하고 있는 파일 시스템의 백업은 데이터 백업 자체도 시간이 걸리겠지만 백업을 준비하는 과정에서 많은 시간을 소비할 수 있다.
본 발명의 일실시예는 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업하는 데이터 백업 장치 및 방법을 제공한다.
또한, 본 발명의 일실시예는 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업하는 데이터 백업 장치 및 방법을 제공한다.
또한, 본 발명의 일실시예는 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업하는 데이터 백업 장치 및 방법을 제공한다.
상기의 목적을 이루기 위한, 파일 백업 장치는, 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하고, 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 입출력 훅커; 및 상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 디스패처를 포함한다.
또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 파일 백업 방법은, 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하는 단계; 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 단계; 및 상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계를 포함한다.
본 발명의 일실시예에 따르면, 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업함으로써 데이터 백업에 소요되는 시간을 단축한다.
또한, 본 발명의 일실시예에 따르면, 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업함으로써 백업에 사용되는 저장 매체를 낭비 없이 이용한다.
또한, 본 발명의 일실시예에 따르면, 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업함으로써 동일 데이터를 중복되지 않게 데이터 백업을 수행한다.
도 1은 종래 루트 디렉토리의 하위 디렉토리 중 하나를 깊이 우선 검색 방법으로 검색하는 동작을 보인 예시도이다.
도 2는 본 발명의 일실시예를 설명하기 위한 시스템 콜을 훅킹하는 방법을 보인 예시도이다.
도 3은 본 발명의 일실시예를 설명하기 위한 훅킹이 있을 때와 없을 때의 함수 수행 흐름을 보인 예시도이다.
도 4는 본 발명의 일실시예를 설명하기 위한 적재 가능 커널 모듈 방법을 이용한 시스템 콜 후킹 방법을 보인 예시도이다.
도 5는 본 발명의 일실시예를 설명하기 위한 데이터 백업 수행을 위한 기본 구성 및 수행 과정을 보인 예시도이다.
도 6은 본 발명의 일실시예에 따른 데이터 백업 장치의 구성 및 데이터 흐름을 보인 블록도이다.
도 7은 본 발명의 일실시예를 설명하기 위한 전체 백업 이후 증분 백업 대상을 도시한 예시도이다.
도 8은 본 발명의 일실시예를 설명하기 위한 파일 백업시 데이터 중복을 제거하기 위해 파일을 데이터 조각으로 분할한 예를 보인도이다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
컴퓨터에서 프로세서에 의해 수행되는 모든 응용 프로그램은 데이터를 처리하기 위하여 파일 입출력을 수행한다. 이때 응용 프로그램의 수행을 통하여 처리된 결과 데이터는 운영체제의 입출력 관련 시스템 콜에 의하여 다시 저장 매체에 저장된다. 즉, 응용 프로그램은 운영체제가 제공하는 입출력 관련 시스템 콜을 수행함으로써 디렉토리를 생성하고, 파일을 생성하고, 파일 내용을 변경하는 등의 파일에 관련된 모든 연산을 수행한다.
파일 기반 증분 백업에서 백업 프로세서는 전체 디렉토리 트리를 탐색하지 않고 백업 대상 파일을 찾기 위해서는 변경되거나, 새로 생성되는 파일 및 디렉토리, 또는 파일에 관련된 모든 연산을 추적하여 기록한 후 이들 정보를 백업 시에 이용하면 가능하다. 이들 정보는 모든 입출력 관련 시스템 콜을 훅킹(hooking)하여 추적 및 추출할 수 있다.
도 2는 본 발명의 일실시예를 설명하기 위한 시스템 콜을 훅킹하는 방법을 보인 예시도이다.
응용 프로그램이 수행 도중 데이터 저장을 위해 쓰기 시스템 콜(write() system call) 명령어가 호출된다면, 쓰기 시스템 콜은 데이터 백업 장치의 입출력 훅커에 의해 훅킹(hooking)되고, 커널 레벨(kernel level)에서 훅킹된 함수(function)가 호출된다. 이때 훅킹된 함수에서는 데이터를 백업하기 위해 필요한 모든 정보를 획득하고 원래의 시스템 콜의 수행 흐름으로 복귀한다. 여기서, 쓰기 시스템 콜은 변수 버퍼(buf)에 저장되어 있는 변수 사이즈(size) 바이트 크기의 데이터를 파일 디스크립터(file descriptor; fd)가 가리키는 파일에 저장하기 위한 시스템 콜이다.
쓰기 시스템 콜에서 데이터를 백업하기 위해 필요한 정보는 파일 자체에 대한 정보(파일의 절대 경로를 포함하는 파일 명), 쓰여질 데이터의 파일 내 위치 및 크기, 쓰여질 데이터 자체 등으로 시스템 콜의 파라미터를 이용하여 추출할 수 있다. 백업을 위하여 추출되는 정보는 시스템 콜 마다 조금씩 다를 수 있으나, 모두 같은 방법으로 추출할 수 있다. 따라서 파일 시스템에 영향을 미치는 모든 시스템 콜을 훅킹하여 데이터 백업에 필요한 정보를 획득하면, 디렉토리 트리를 탐색하지 않고도 효율적으로 백업을 할 수 있다. 또한 이러한 백업 방법은 응용 프로그램의 수행을 멈추지 않게 하면서 백업할 파일 및 데이터에 대한 모든 정보를 추출할 수 있어 응용 프로그램은 백업 소프트웨어의 존재를 인식하지 못한다.
도 3은 본 발명의 일실시예를 설명하기 위한 훅킹이 있을 때와 없을 때의 함수 수행 흐름을 보인 예시도이다.
훅킹(hooking)은 핸들러 함수(handler function)를 활용하여 원래 프로그램의 수행 흐름에 수정을 가하는 프로그램 기술을 의미한다. 새로운 훅(hook)은 어떤 특정 함수(function)를 위한 주소를 가진 함수로 등록되며, 그 특정 함수가 불리게 되면, 훅이 그 특정 함수 대신 수행되게 된다. 이때, 일반적으로 훅은 어떤 특정 시점에 원래의 함수를 불러 원래 함수의 수행 목적을 준수한다.
도 4는 본 발명의 일실시예를 설명하기 위한 적재 가능 커널 모듈 방법을 이용한 시스템 콜 후킹 방법을 보인 예시도이다.
시스템 콜은 응용 프로그램이 운영체제 커널의 서비스 요청을 위한 엔트리 포인트(entry point)이다. 이런 엔트리 포인트를 훅킹함으로써 원래 운영체제의 커널이 제공하는 서비스를 확장시킬 수 있다. 시스템 콜을 훅킹하는 방법은 운영체제마다 약간의 차이가 있다. 예를 들어, 리눅스(Linux) 운영체제에서 적재 가능 커널 모듈(Loadable Kernel Module: LKM) 방법을 간략하게 기술한다.
LKM 방법은 리눅스 커널 기능을 확장하는데 사용하는 방법으로, 별도의 커널 모듈을 만들어 기존의 커널의 수정이나 재 컴파일 없이 그 모듈을 동적으로 리눅스 커널에 적재하고, 내리고 하는 방식이다. 커널의 수정, 그리고 재 컴파일 없이 동적으로 모듈을 적재할 수 있는 장점 때문에 새로운 디바이스의 드라이버 또는 파일 시스템 등은 이 방식을 많이 사용한다.
응용 프로그램이 시스템 콜을 호출하게 되면 훅된 모듈이 적재된 상태에서는 훅된 시스템 콜이 수행되며, 훅된 모듈이 적재되지 않았다면 원래의 시스템 콜이 수행된다. 위에서 설명한 바와 같이 훅된 함수는 어는 시점에서 항상 원래 수행되어야 할 함수를 불러 함수 수행 목적을 준수한다.
도 5는 본 발명의 일실시예를 설명하기 위한 데이터 백업 수행을 위한 기본 구성 및 수행 과정을 보인 예시도이다.
데이터 백업에 필요한 정보를 추출하기 위하여는 커널에 크게 두가지의 대표적인 모듈이 필요하며, 이들 모듈은 사용자 레벨의 백업 프로세서(550)와 긴밀하게 연결되어 실행된다.
응용 프로그램(510)이 입출력 관련 시스템 콜을 호출하면 입출력 훅커(520)는 훅킹된 시스템 콜을 통하여 백업에 필요한 파일 정보를 추출한다. 원래의 입출력 관련 시스템 콜은 계속해서 수행되며, 추출된 파일 정보는 커널 내 또 다른 모듈인 콜렉터(530)에 의하여 리스트(540)에 저장된다. 백업 프로세서(550)는 리스트(540)에 저장된 파일 정보를 활용하여 백업할 데이터를 읽어 백업 스토리지(560)에 저장한다.
여기서, 입출력 훅커(520)에 의하여 추출되는 파일 정보는 크게 다음과 같이 세가지로 분류된다:
(1) 파일 또는 디렉토리에 관한 정보 (파일 레벨 기반의 증분 백업을 위한 정보)
(2) (1)번에서 얻어진 정보에 파일의 어느 부분이 얼마만큼 (size) 변경되었는지 또는 데이터가 파일의 어느 부분에 얼마만큼 삽입 또는 추가되었는지에 관한 정보 (레코드 레벨의 증분 백업을 위한 정보)
(3) (1)(2)의 정보에 추가하여 실제 파일에 쓰여지는 데이터 자체 (CDP(Continuous Data Protection)를 위한 정보)
도 6은 본 발명의 일실시예에 따른 데이터 백업 장치의 구성 및 데이터 흐름을 보인 블록도이다.
입출력 훅커(610)는 입출력 관련 시스템 콜을 훅킹하여 파일 또는 디렉토리에 관한 정보로, 파일 또는 디렉토리의 생성, 제거에 관한 정보, 변경되는 파일에 대한 정보(데이터의 append, update 등), 심볼릭 또는 하드링크와 관련된 파일 또는 디렉토리 정보를 추출한다. 입출력 훅커(610)는 추출된 정보를 콜렉터(630)와 공유되는 메시지 큐(620)에 저장한다.
여기서, 파일과 디렉토리를 동일하게 파일로 취급한다. 실제적으로 유닉스 계열의 시스템에서는 파일과 디렉토리를 동일하게 파일로 처리한다:
입출력 훅커(610)에 의하여 추출되어 메시지 큐(620)에 저장된 파일 정보는 콜렉터(630)에 의해 리스트에 저장된다.
커널 영역의 입출력 훅커(610)와 사용자 영역의 환경설정 매니저(651)는 디렉토리 정보 파일(641)을 공유하여 서로 정보를 주고 받는다. 즉, 사용자가 백업 대상으로 정하는 디렉토리 관련 정보는 사용자 영역의 환경설정 매니저(651)에 의해 디렉토리 정보 파일로 저장되고, 입출력 훅커(610)는 디렉토리 정보 파일(641)에 저장된 정보를 이용하여 백업 대상에 속하는 파일 관련 정보를 추출한다.
백업 프로세서(650)는 사용자가 원하는 주기에 따라 백업 작업을 스케쥴링하여 데이터를 백업한다. 데이터를 백업하여야 하는 주기가 되면 사용자 레벨의 백업 프로세서(650)의 한 모듈인 디스패처(dispatcher)(652)는 콜렉터(collector)(630)에게 백업 준비를 하라는 명령을 내린다. 백업 명령을 받은 콜렉터(630)는 현재까지 메시지 큐(620)에 저장된 파일 정보를 리스트로 저장하고 디스패처(652)에게 백업 준비가 되었음을 알린다. 콜렉터(630)는 동시에 다른 리스트를 생성하여 이후에 입출력 훅커(610)에 의하여 추출되는 파일 정보를 별도로 새로 생성된 리스트에 저장하여 다음 백업을 할 수 있도록 준비한다.
디스패처(652)는 콜렉터(630)에 의하여 리스트에 저장된 파일 정보를 이용하여 백업대상파일(642)을 정리하고, 백업대상파일(642)을 읽어 백업 스토리지(640)에 저장한다. 이때 디스패처(652)는 백업대상파일(642)을 찾기 위하여 파일의 디렉토리 트리를 전부 찾을 필요가 없으며. 이미 입출력 훅커(610)에 의하여 추출된 파일 정보를 이용하여 백업대상파일을(642) 정리할 수 있어 백업 속도를 향상시킬 수 있다.
도 7은 본 발명의 일실시예를 설명하기 위한 전체 백업 이후 증분 백업 대상을 도시한 예시도이다.
백업 프로세서는 전체 백업에서 파일 6을 제외한 모든 파일을 백업하였다. 이후 백업 프로세서가 증분 백업을 하기 전까지 파일 6이 새로이 생성되었고, 파일 3과 파일 7에서는 다른 색으로 도시한 부분의 데이터가 변경된 것으로 가정한다. 이런 파일의 변화 정보는 모두 콜렉터에 의해 생성된 리스트에 저장된다. 따라서 백업 프로세서가 콜렉터에 의해 생성된 리스트의 파일 정보를 참조하여 파일 레벨의 증분 백업을 수행하면 백업대상파일을 검색하는 과정 없이 파일 3, 파일 6, 파일 7의 변경된 데이터를 전부 백업함으로써 모든 증분 백업 과정을 종료한다.
백업 프로세서가 파일 레벨의 증분 백업 정보에 추가하여 데이터에 관한 정보를 추출하여 데이터 백업을 할 수 있다면 더욱 더 백업 시간을 단축시킬 수 있다. 본 발명의 일실시예에서는 이를 레코드 레벨의 백업이라 부르며, 위에서 설명한 파일 레벨 백업 정보에 추가하여 변경된 데이터의 파일 내에서의 위치 및 데이터의 크기 정보를 추출하여 이를 가능하게 한다. 즉, 입출력 훅커는 다음과 같은 ((절대 경로를 포함한 파일명, 파일의 생성 / 제거 / 링크 / unlink 여부, 파일의 변경 여부), 변경된 데이터의 파일 내의 위치 (offset), 변경된 데이터의 크기)형식으로 백업할 정보를 추출하고 백업 프로세서는 위에서 설명한 동일한 과정을 통하여 데이터를 백업한다.
레코드 레벨의 증분 백업은 파일 레벨의 백업을 위한 파일 정보에 추가하여 파일 내에서 변경되는 데이터를 레코드 레벨의 정보로 추가하여 가능하다. 즉, 백업 프로세서는 변경된 파일 전체를 백업하는 대신에 변경된 데이터의 파일 내의 위치 및 변경된 데이터의 크기 정보를 이용하여 정확히 변경된 데이타만 읽어서 백업할 수 있다. 따라서 백업 프로세서는 백업 대상을 찾는 시간을 절약할 수 있음은 물론, 파일 레벨의 증분 백업보다 백업하는 데이터 양을 줄일 수 있어 백업 시간 및 백업을 위한 스토리지 용량을 줄일 수 있다.
입출력 훅커는 레코드 레벨의 데이터 백업을 위해 추출한 정보에 더하여 변경되는 데이터 자체를 추출하여 CDP(Continuous Data Protection)를 구현할 수 있다. 즉, 입출력 훅커는 쓰기 시스템 콜을 훅킹하여 쓰기 시스템 콜의 변수인 buf[size]에 저장된 데이터를 추출하여 정확히 변경되는 데이터를 추출할 수 있다. CDP를 위하여 입출력 훅커는 다음과 같은 ((절대 경로를 포함한 파일명, 파일의 생성 / 제거 / 링크 / unlink 여부, 파일의 변경 여부,) 변경된 데이터의 파일 내의 위치 (offset), 변경된 데이터의 크기, 데이터, 데이터가 변경된 시간)형식으로 백업할 파일 정보를 추출하고 백업 프로세서는 입출력 훅커에 의해 추출된 파일 정보를 참조하여 데이터를 백업한다:
레코드 레벨의 백업 정보에 더 추가 된 정보는 데이터 자체와 데이터가 변경된 시간이다. 데이터를 백업하는 과정은 앞에서 설명한 방법과 거의 동일하나, 다른 점은 실제 백업 할 데이터가 입출력 훅커에 의해 이미 추출되었고 추출된 데이터가 콜렉터에 의해 리스트에 저장되어 있다. 따라서 백업 프로세서는 실제 파일에 저장된 데이터를 읽어 백업 스토리지에 데이터를 저장 할 필요가 없고, 콜렉터 에 의해 저장된 데이터를 읽어 백업 스토리지에 저장하는 것으로 데이터의 백업이 완료된다. 이때 파일에 저장된 정보는 데이터가 변경된 시간을 기준으로 백업 스토리지에 저장될 수 있으며, 백업 프로세서는 이를 이용하여 원하는 시간 대의 데이터를 복구할 수 있다.
도 8은 본 발명의 일실시예를 설명하기 위한 파일 백업시 데이터 중복을 제거하기 위해 파일을 데이터 조각으로 분할한 예를 보인도이다.
인터넷의 발달과 더불어 매일 같이 생산되고 유통되는 디지털 데이터의 양이폭발적으로 증가하고 있다. 이에 따라 이들 데이터를 저장하기 위한 스토리지의 수요 또한 폭발적으로 증가하고 있다. 하지만 이러한 대용량의 디지털 데이터들에는 중복 데이터가 많은 부분을 차지하고 있는 것도 사실이다. 예를 들어 웹 스토리지의 경우 수많은 사용자들이 파일을 서로 업로드, 다운로드하게 되는데 이때 이름만 다른 파일이나 전체 파일에서 일부분만 변경된 파일이 무분별하게 남게 된다. 이러한 중복된 데이터로 인해 스토리지의 저장 공간을 낭비한다.
따라서 중복된 데이터를 관리하여 스토리지를 효율적으로 사용 할 수 있는 기술이 필요하며, 이를 위하여 이름하여 데이터 중복 제거 기술이 활용되고 있다. 데이터 중복 제거 기술은 데이터 백업에 특히 많이 사용되고 있다. 즉, 데이터 백업 시 중복된 데이터를 발견하여 동일한 데이터가 여러 번 반복적으로 백업 스토리지에 저장되는 것을 방지하여 저장장치의 사용 효율을 높이고 있다.
데이터의 중복 여부를 확인하는 가장 확실한 방법으로는 비트 단위로 비교하는 방법이다. 그러나 이 방법은 확실하게 데이타의 중복 검사가 가능하지만 속도가 늦다. 속도 문제를 보완하기 위한 방법으로는 파일의 해시값을 비교하는 방법이 있다. 이 방법의 문제는 파일의 일부가 변경되었을 때 혹은 파일 일부분의 중복을 찾지 못한다. 이러한 이유로 파일의 내부 중복을 찾는 방법으로는 파일을 잘게 나누어 데이터 조각의 중복 여부를 검사하는 방법이 널리 활용되고 있다. 파일을 나누는 방법은 크게 고정 길이의 데이터 조각으로 나누는 방법과 가변 길이의 데이터 조각으로 나누는 방법이 있다.
고정 크기 분할 방법은 파일을 데이터 조각으로 나누는 속도가 빠르나 수정된 데이터의 중복을 찾는 성능은 떨어진다. 이에 반하여 가변 길이 분할 방법은 중간에 수정된 데이터의 중복도 찾아내므로 중복감지 확률이 고정 크기 분할 방법에 비해 월등히 높다. 반면 가변 길이 분할 방법은 파일을 데이터 조각으로 분할하는 시간이 많이 걸린다.
백업 프로세서가 파일을 잘게 데이터 조각으로 나누어 데이터의 중복을 제거하고 디스패처가 중복되지 않은 데이터를 백업 스토리지에 백업하는 과정은 다음과 같다.
백업 프로세서가 파일을 잘게 데이터 조각으로 나눈다. 그리고 백업 프로세서가 분할된 데이터 조각에 고유의 인덱스 값을 부여하고, 효율적인 검색을 위하여 별도로 관리한다.
백업 프로세서는 분할된 데이터 조각의 인덱스 값을 비교함으로써 데이터 조각의 중복 여부를 판단한다.
백업 프로세서의 중복 여부 판단 결과 중복된 데이터 조각이 아니면 디스패처는 데이터 조각에 대한 정보(파일 내의 위치, 데이터 조각의 크기)와 데이터 조각을 인덱스와 함께 백업 스토리지에 저장하고, 중복된 데이터 조각이면 중복된 데이터 조각을 백업 스토리지에 저장하지 않고 인덱스를 통하여 중복 여부만 나타낸다.
데이터 조각의 인덱스 값은 보통 128비트 이상으로 인덱스 값 간의 충돌을 최대한 줄이기 위하여 사용한다. 따라서 백업 프로세서가 인덱스 값들을 효율적으로 관리하고 빠르게 검색할 수 있도록 하는 것이 데이터 중복 제거 과정에서 성능에 영향을 미치는 중요한 요소라는 것을 알 수 있다. 물론 백업 프로세서가 파일을 데이터 조각으로 잘게 나누는 과정도 많은 시간을 요하는 작업이다.
결국 데이터 중복 제거 과정에서 가장 성능에 영향을 미치는 요소는 파일을 잘게 나누는 과정과 데이터 조각에 상응하는 인덱스 값을 관리하고 검색하는 과정이라 할 수 있다.
전체 백업을 하는 과정에서는 데이터 중복 제거를 위해서는 모든 데이터 파일에 대하여 위에서 설명한 과정을 반듯이 거쳐야 한다. 그러나 증분 백업을 하는 과정에서 위와 같은 과정을 똑같이 거친다면 데이터 중복 제거에 걸리는 시간으로 전체 백업 시간이 증가될 수 밖에 없다.
현재 데이터 중복 제거 방법은 파일의 일부분에 변경이 생기면, 그 파일 전체를 다시 데이터 조각으로 잘게 나누고, 데이터 조각의 중복 여부를 검사하는 과정을 거쳐 백업 시간에 막대한 영향을 주고 있다. 하지만 변화된 부분에 한하여 데이터 조각으로 나누는 작업을 진행하고, 이 부분에 대한 중복 여부만 검사할 수 있다면 데이터의 중복 제거를 하면서도 백업 시간이 증가되는 부분을 최소화할 수 있다.
이는 위에서 설명한 레코드 레벨 데이터 백업 방법을 활용하면 구현 가능하다. 도 8의 (a)는 전체 백업시 데이터 중복 제거를 위하여 파일을 n 개의 데이터 조각으로 분할한 예시도이다. 전체 백업 후 도 8의 (b)는 데이터 조각 n+1에 해당하는 데이터가 파일에 쓰여진 것을 의미한다. 종래 데이터 중복 제거 방법을 채택한다면 파일을 처음부터 다시 데이터 조각으로 나누는 작업과 중복 여부를 검사하여 파일 전체에 대한 증분 백업을 하게 된다.
반면 위에서 설명한 레코드 레벨 방법을 활용한다면 백업 프로세서는 파일의 변경된 부분에 한하여 데이터 조각으로 나누고 그 부분의 중복 여부만 파악하여 디스패처에 의해 중복되지 않은 부분만 백업할 수 있다. 즉, 레코드 레벨의 백업에서는 변경되는 데이터의 파일 내 위치와 크기 등에 대한 정보를 입출력 훅커를 통하여 이미 추출하여 알 수 있다. 따라서 백업 프로세서는 변경되는 데이터에 의하여 영향을 받는 데이터 조각을 알 수 있으며 영향을 받는 데이터 조각 부분에 대해서만 다시 새로운 데이터 조각으로 나누고, 새로 생성된 데이터 조각에 대한 중복 여부를 검사 한 후 디스패처에 의해 중복되지 않은 데이터 조각만 백업 스토리지에 저장하면 된다. 예를 들어 도 8의 (b)에서는 백업 프로세서가 새로 추가된 부분 Ch n+1 대하여 데이터 조각으로 나누고 중복 검사를 하고, 도 8의 (c)에 도시된 바와 같이 데이터가 변경된다면 백업 프로세서는 변경된 데이터로 영향받는 세 개의 데이터 조각(Ch1, Ch2, Ch3)을 새로운 데이터 조각으로 나누고 중복 여부를 검사하여 백업을 한다.
결론적으로 백업 프로세서는 변화된 데이터 부분에 한정하여 데이터 조각을 새로 생성하고, 중복 여부를 검사하여 이들 부분만 백업을 수행하면 되므로 데이터를 분할하는 시간과 데이터 조각의 중복 여부를 검사하는 시간을 대폭 줄일 수 있다.
또한, 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
510 : 응용 프로그램
520 : 입출력 훅커
530 : 콜렉터
540 : 리스트
550 : 백업 프로세서
560 : 백업 스토리지

Claims (15)

  1. 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하고, 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 입출력 훅커; 및
    상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 디스패처
    를 포함하는, 파일 백업 장치.
  2. 제1항에 있어서,
    선정된 기간 동안 생성된 상기 파일정보를 포함하는 리스트를 작성하는 콜렉터
    를 더 포함하고,
    상기 디스패처는,
    상기 리스트 내 파일정보에 의해 식별되는 파일을, 상기 백업대상파일로서 추출하는, 파일 백업 장치.
  3. 제2항에 있어서,
    상기 콜렉터는,
    상기 기간에 대응하여 할당된 메시지 큐에 상기 리스트를 유지하되, 상기 기간의 종료 후, 상기 메시지 큐에 유지된 리스트를 제거하는, 파일 백업 장치.
  4. 제1항에 있어서,
    상기 입출력 훅커는,
    상기 시스템 콜을 분석하여, 적어도 일부의 데이터에 대한 변경 처리가 수행된 파일을 상기 백업대상파일로 결정하고, 상기 결정된 백업대상파일을 식별하기 위한 식별자를 포함하는 파일정보를 생성하는, 파일 백업 장치.
  5. 제1항에 있어서,
    상기 입출력 훅커는,
    상기 시스템 콜을 분석하여, 변경 처리가 수행된 데이터의 위치를 식별하기 위한 식별자와 상기 데이터의 크기 정보를 포함하는 파일정보를 생성하고,
    상기 디스패처는,
    상기 식별자에 의해 식별되는 상기 백업대상파일 내 위치로부터 상기 크기 정보에 대응하는 데이터를, 상기 파일풀로부터 추출하여 백업 스토리지에 저장하는, 파일 백업 장치.
  6. 제4항 또는 제5항에 있어서,
    상기 변경 처리는,
    파일 내 데이터에 관한 생성, 제거, 링크 연결, 또는 링크 해제 중 적어도 하나에 관한 처리인, 파일 백업 장치.
  7. 제1항에 있어서,
    상기 파일정보는, 상기 백업대상파일 내 적어도 일부의 데이터에 대한 변경 처리가 수행된 시간 정보를 포함하고,
    상기 디스패처는,
    상기 시간 정보를 고려하여, 상기 백업대상파일을 추출하여 상기 백업 스토리지에 저장하는 시점을 결정하는, 파일 백업 장치.
  8. 제1항에 있어서,
    사용자로부터 백업대상파일을 입력받고, 상기 입출력 훅커를 제어하여 상기 입력된 백업대상파일에 관한 파일정보를 생성하는 환경설정 매니저
    를 더 포함하는, 파일 백업 장치.
  9. 제1항에 있어서,
    상기 백업대상파일을 복수 개의 데이터 조각으로 분할하고, 상기 분할된 데이터 조각 각각에 대해 인덱스를 부여하는 백업 프로세서
    를 더 포함하는, 데이터 백업 장치.
  10. 제9항에 있어서,
    상기 백업 프로세서는,
    상기 복수 개의 데이터 조각 중에서, 상기 백업 스토리지에서 검색되는 데이터 조각에 대해, 상기 부여된 인덱스를 중복인덱스로 대체하여 부여하고,
    상기 디스패처는,
    상기 중복인덱스가 부여된 데이터 조각을 제외한, 데이터 조각을 상기 백업 스토리지에 저장하는, 데이터 백업 장치.
  11. 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하는 단계;
    상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 단계; 및
    상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계
    를 포함하는, 파일 백업 방법.
  12. 제11항에 있어서,
    상기 백업대상파일에 관한 파일정보를 생성하는 단계는,
    상기 시스템 콜을 분석하여, 적어도 일부의 데이터에 대한 변경 처리가 수행된 파일을 상기 백업대상파일로 결정하고, 상기 결정된 백업대상파일을 식별하기 위한 식별자를 포함하는 파일정보를 생성하는 단계
    를 포함하는, 파일 백업 방법.
  13. 제11항에 있어서,
    상기 파일정보는, 변경 처리가 수행된 데이터의 위치를 식별하기 위한 식별자와 상기 데이터의 크기 정보를 포함하고,
    상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계는,
    상기 식별자에 의해 식별되는 상기 백업대상파일 내 위치로부터 상기 크기 정보에 대응하는 데이터를, 상기 파일풀로부터 추출하여 백업 스토리지에 저장하는 단계
    를 포함하는, 파일 백업 방법.
  14. 제11항에 있어서,
    상기 파일정보는, 상기 백업대상파일 내 적어도 일부의 데이터에 대한 변경 처리가 수행된 시간 정보를 포함하고,
    상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계는,
    상기 시간 정보를 고려하여, 상기 백업대상파일을 추출하여 상기 백업 스토리지에 저장하는 시점을 결정하는 단계
    를 포함하는, 파일 백업 방법.
  15. 제11항에 있어서,
    상기 백업대상파일을 복수 개의 데이터 조각으로 분할하는 단계;
    상기 분할된 데이터 조각 각각에 대해 인덱스를 부여하는 단계로서, 상기 복수 개의 데이터 조각 중에서, 상기 백업 스토리지에서 검색되는 데이터 조각에 대해, 상기 부여된 인덱스를 중복인덱스로 대체하여 부여하는 단계; 및
    상기 중복인덱스가 부여된 데이터 조각을 제외한, 데이터 조각을 상기 백업 스토리지에 저장하는 단계
    를 더 포함하는, 데이터 백업 방법.
KR1020100103478A 2010-10-22 2010-10-22 데이터 백업 장치 및 방법 KR101237746B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100103478A KR101237746B1 (ko) 2010-10-22 2010-10-22 데이터 백업 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100103478A KR101237746B1 (ko) 2010-10-22 2010-10-22 데이터 백업 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120042020A true KR20120042020A (ko) 2012-05-03
KR101237746B1 KR101237746B1 (ko) 2013-02-28

Family

ID=46262885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100103478A KR101237746B1 (ko) 2010-10-22 2010-10-22 데이터 백업 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101237746B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658741B1 (ko) 2015-11-23 2016-09-21 (주)클로닉스 컴퓨터 시스템의 증분 백업과 차등 백업을 이용한 혼합 백업과 복원 장치 및 제어 방법
US11138156B2 (en) 2017-11-27 2021-10-05 DataCommand Corp. Continuous data management system and operating method thereof
KR102089710B1 (ko) 2017-11-27 2020-03-16 주식회사 데이타커맨드 연속 데이터 관리 시스템 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305830A (ja) 1999-04-26 2000-11-02 Toshiba Corp コンピュータシステムにおけるファイル管理方法およびファイル管理システム
JP3708891B2 (ja) 2002-03-25 2005-10-19 株式会社東芝 フォールトトレラントシステムにおけるプロセスペア実行制御方法、プロセスペア実行制御プログラム、及びフォールトトレラントシステム
JP4410754B2 (ja) * 2005-12-09 2010-02-03 株式会社日立製作所 ファイルバックアップシステム及び方法
KR100766863B1 (ko) 2006-12-07 2007-11-15 주식회사 스펙트라 이동식저장장치를 이용한 소프트웨어 설치 시스템 및 그방법

Also Published As

Publication number Publication date
KR101237746B1 (ko) 2013-02-28

Similar Documents

Publication Publication Date Title
US10776315B2 (en) Efficient and flexible organization and management of file metadata
US8898114B1 (en) Multitier deduplication systems and methods
US10599337B2 (en) Method and device for writing data and acquiring data in a distributed storage system
US10175894B1 (en) Method for populating a cache index on a deduplicated storage system
KR100622801B1 (ko) 파일 시스템 액세스 방법, 파일 시스템 복원 방법, 컴퓨터 판독 가능 기록 매체 및 데이터 처리 시스템
US20170295239A1 (en) Data processing method, apparatus, and system
US20150066857A1 (en) Replication of snapshots and clones
US10452608B2 (en) Log-structured file system
US10387066B1 (en) Providing data deduplication in a data storage system with parallelized computation of crypto-digests for blocks of host I/O data
CA2953206A1 (en) Systems and methods for optimized signature comparisons and data replication
US20130046944A1 (en) Storage apparatus and additional data writing method
US11288128B2 (en) Indexing a relationship structure of a filesystem
US10133638B1 (en) Recovery of in-memory state in a log-structured filesystem using fuzzy checkpoints
US11461140B2 (en) Systems and methods for controller-worker architecture for searching a storage system
JP2015514241A (ja) ストレージ装置
KR20150064593A (ko) 데이터 연관정보를 이용한 중복제거 방법 및 시스템
CN107665219B (zh) 一种日志管理方法及装置
KR20180008774A (ko) 파일 저장 시의 색인 구현 방법 및 시스템
US11544150B2 (en) Method of detecting source change for file level incremental backup
US11782878B2 (en) Systems and methods for searching deduplicated data
US20040143609A1 (en) System and method for data extraction in a non-native environment
US9858287B2 (en) Storage system
KR101237746B1 (ko) 데이터 백업 장치 및 방법
US20220197861A1 (en) System and method for reducing read amplification of archival storage using proactive consolidation
CA2825891A1 (en) Storage system for storing data in a plurality of storage devices

Legal Events

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

Payment date: 20160218

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170203

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180109

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190131

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200210

Year of fee payment: 8