KR101237746B1 - Data backup apparatus and method for the same - Google Patents

Data backup apparatus and method for the same Download PDF

Info

Publication number
KR101237746B1
KR101237746B1 KR1020100103478A KR20100103478A KR101237746B1 KR 101237746 B1 KR101237746 B1 KR 101237746B1 KR 1020100103478 A KR1020100103478 A KR 1020100103478A KR 20100103478 A KR20100103478 A KR 20100103478A KR 101237746 B1 KR101237746 B1 KR 101237746B1
Authority
KR
South Korea
Prior art keywords
file
backup
data
information
target file
Prior art date
Application number
KR1020100103478A
Other languages
Korean (ko)
Other versions
KR20120042020A (en
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/en
Publication of KR20120042020A publication Critical patent/KR20120042020A/en
Application granted granted Critical
Publication of KR101237746B1 publication Critical patent/KR101237746B1/en

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

데이터가 변경된 파일을 찾아내어 변경된 데이터를 백업하는 데이터 백업 장치 및 방법을 개시한다.
일실시예로서, 데이터 백업 장치 및 방법은, 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업함으로써 데이터 백업에 소요되는 시간을 단축하고, 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업함으로써 백업에 사용되는 저장 매체를 낭비 없이 이용하고, 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업함으로써 동일 데이터를 중복되지 않게 데이터 백업을 수행한다.
Disclosed are a data backup apparatus and method for finding a file whose data has changed and backing up the changed data.
In one embodiment, the apparatus and method for backing up data shortens the time required to back up data by incrementally backing up a file based on a file based on finding a changed file in a short time without navigating the entire directory tree, and the entire changed file. Instead, it finds only some changed records of the file and backs up only the changed part of the file without waste of using the storage media used for backup. Perform data backup so that data is not duplicated.

Description

데이터 백업 장치 및 방법{DATA BACKUP APPARATUS AND METHOD FOR THE SAME}DATA BACKUP APPARATUS AND METHOD FOR THE SAME}

본 발명의 실시예들은 데이터가 변경된 파일을 찾아내어 변경된 데이터를 백업하는 데이터 백업 장치 및 방법에 관한 것이다.Embodiments of the present invention relate to a data backup apparatus and method for finding a file whose data has changed and backing up the changed data.

컴퓨터의 메모리에 저장되어 프로세서에 의해 실행되는 모든 응용 프로그램은 데이터를 처리하기 위하여 동작한다. 이때 응용 프로그램의 데이터 연산을 통하여 처리된 결과 데이터는 입출력 관련 시스템 콜(system call)에 의하여 다시 저장 매체에 저장된다. 저장 매체에 저장된 데이터는 시스템의 장애와 같은 여러 요인으로 인해 손실 또는 유실 될 수 있으며, 이로 인해 업무의 연속성을 보장할 수 없을 뿐만 아니라 데이터 복구에 막대한 비용이 소요될 수 있다.Every application program stored in a computer's memory and executed by a processor operates to process data. In this case, the result data processed through the data operation of the application program is stored in the storage medium again by an input / output related system call. Data stored on storage media can be lost or lost due to various factors such as system failures, which can not only guarantee the continuity of work, but can also be expensive for data recovery.

데이터 손실로부터 발생하는 업무 공백을 최소화하기 위하여 데이터 관리 파트에서 데이터 백업 시스템을 도입하여 운용하고 있다. 데이터 백업 시스템은 데이터의 중요도 및 성격 등에 따라 전체 백업 (full backup), 증분 백업 (incremental backup) 등의 방법을 이용하여 데이터를 백업한다. 전체 백업은 현재 백업을 하고자 하는 모든 데이터를 백업하고, 증분 백업은 전체 백업 이후 변화된 데이터에 대하여만 백업을 한다. 증분 백업은 전체 데이터를 백업하는 전체 백업 시간보다 데이터 백업할 대상이 줄 수 있어 백업하는 시간을 절약할 수 있다.In order to minimize the work gap resulting from data loss, the data management system has introduced a data backup system. The data backup system backs up the data using a method such as full backup and incremental backup depending on the importance and nature of the data. A full backup backs up all the data you want to back up. An incremental backup backs up only the data that has changed since the full backup. Incremental backups can save more time backing up because more data can be backed up than the full backup time.

전체 백업 또는 증분 백업을 수행할 때 데이터를 읽어오는 방법은 크게 파일을 기반으로 읽는 방법과 디스크의 블록을 기반으로 데이터를 읽는 방법이 있다. 블록을 기반으로 데이터를 읽는 방법은 디스크 전체를 한번에 읽어 데이터를 백업하는 방법으로 데이터를 읽는 시간을 줄일 수 있다. 반면 파일 또는 파일 시스템 구조 등에 대한 정보를 무시하고 백업을 했으므로 특정 파일 시스템의 파일의 일부를 복구하는 등의 요구를 처리하기 위해서는 파일을 기반으로 한 백업보다 더 많은 시간이 걸릴 수 있다. 파일을 기반으로 데이터를 백업하는 방법은 블록 기반의 백업 방법보다 데이터를 읽는 시간은 더 걸릴 수 있으나, 파일 시스템과 파일에 대한 정보를 온전히 백업하고 있어 데이터를 복구하는데 편리성과 효율성을 가질 수 있다.When performing a full backup or incremental backup, there are two main methods of reading data: file-based and data-based blocks. Reading data on a block basis can reduce the time to read data by reading the entire disk at once and backing up the data. On the other hand, since backups are ignored while ignoring information on file or file system structure, it may take more time than file-based backups to handle requests such as recovering a part of a file in a specific file system. The method of backing up data based on files may take longer to read the data than the block based backup method, but since the information on the file system and files is completely backed up, it may be convenient and efficient to recover data.

전체 백업은 모든 데이터를 백업 대상으로 삼고 데이터를 읽어 백업을 하므로 백업 대상을 찾는 시간은 전체 백업 시간에서 그리 중요한 요소가 아닐 수 있다. 그러나 증분 백업에서 백업 대상을 찾는 것은 아주 중요한 일이며 많은 시간이 걸릴 수 있다. 예를 들어, 블록 기반으로 데이터를 읽어 증분 백업을 하기 위해서는 전체 백업 이후 변경된 데이터 블록을 선별하여야 하며 이를 위해 어떠한 블록이 변경되었나를 추적하는 방법을 제공하여야 한다. 또한 파일 기반으로 데이터를 읽어 증분 백업을 하기 위해서는 전체 백업 이후 어떤 파일이 변경되었는지를 알 수 있어야 한다.A full backup uses all data as a backup target and reads the data to back up, so finding the backup target may not be an important factor in the overall backup time. However, finding a backup destination in an incremental backup is very important and can take a lot of time. For example, in order to incrementally back up data by reading data on a block basis, it is necessary to select data blocks that have changed since the full backup and provide a method of tracking which blocks have changed. In addition, incremental backup by reading data on a file basis requires knowing which files have changed since the full backup.

일반적으로 파일 단위의 백업에서 백업 대상 파일을 찾기 위해서는 전체 디렉토리 트리(directory tree)를 도 1에 도시된 바와 같이, 일일히 탐색하면서 직전 백업 이후 어떤 파일이 변경되었는지를 검사하여야 한다. 도 1은 루트 디렉토리(root directory)의 하위 디렉토리 중 하나를 깊이 우선 탐색(depth first search) 방법으로 검색하는 방법을 나타내고 있다. 모든 디렉토리는 이러한 방법으로 검사되어야 하며 직전 백업 정보와 비교를 해서 어떤 변화가 생겼나를 판단한다. 따라서 많은 수의 파일을 포함하고 있는 파일 시스템의 백업은 데이터 백업 자체도 시간이 걸리겠지만 백업을 준비하는 과정에서 많은 시간을 소비할 수 있다.In general, in order to find a backup target file in a file-by-file backup, as illustrated in FIG. 1, the entire directory tree must be searched to check which file has changed since the previous backup. FIG. 1 illustrates a method of searching one of subdirectories of a root directory by a depth first search method. All directories should be checked in this way and compared with previous backup information to determine what has changed. Therefore, a backup of a file system containing a large number of files may take a long time in preparing a backup, although the data backup itself may take time.

본 발명의 일실시예는 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업하는 데이터 백업 장치 및 방법을 제공한다.One embodiment of the present invention provides a data backup apparatus and method for finding a file whose data has been changed in a short time and incrementally backing up the file without searching the entire directory tree.

또한, 본 발명의 일실시예는 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업하는 데이터 백업 장치 및 방법을 제공한다.In addition, an embodiment of the present invention provides a data backup apparatus and method for finding only a partial changed record of a file and backing up only the changed part of the file instead of the entire changed file.

또한, 본 발명의 일실시예는 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업하는 데이터 백업 장치 및 방법을 제공한다.In addition, an embodiment of the present invention provides a data backup apparatus and method for applying a deduplication method to a changed portion of a file to search and back up non-duplicate data.

상기의 목적을 이루기 위한, 파일 백업 장치는, 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하고, 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 입출력 훅커; 및 상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 디스패처를 포함한다.In order to achieve the above object, a file backup device may input and output a file information about a backup target file processed by hooking the system call and being processed in association with the hooked system call as a system call occurs in an application program. Hooker; And a dispatcher for extracting the backup target file from a file pool using the generated file information and storing the backup target file in a backup storage.

또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 파일 백업 방법은, 응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하는 단계; 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 단계; 및 상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계를 포함한다.In addition, as a technical method for achieving the above object, a file backup method, the system call in the application, the step of hooking the system call; Generating file information about a backup target file processed in association with the hooked system call; And extracting the backup target file from a file pool using the generated file information and storing the backup target file in a backup storage.

본 발명의 일실시예에 따르면, 전체 디렉토리 트리를 탐색하지 않고 데이터가 변경된 파일을 짧은 시간내에 찾아내서 파일 기반으로 증분 백업함으로써 데이터 백업에 소요되는 시간을 단축한다.According to one embodiment of the present invention, the time required for data backup is shortened by finding the file whose data has been changed in a short time and incrementally backing up the file without searching the entire directory tree.

또한, 본 발명의 일실시예에 따르면, 데이터가 변경된 파일 전체 대신 파일의 일부 변경된 레코드만 찾아내어 파일의 변경된 부분만 백업함으로써 백업에 사용되는 저장 매체를 낭비 없이 이용한다.In addition, according to an embodiment of the present invention, the storage medium used for backup is used without waste by finding only a part of the changed record of the file and backing up only the changed part of the file instead of the entire changed file.

또한, 본 발명의 일실시예에 따르면, 파일의 변경된 부분에 대해서 중복 제거 방법을 적용하여 중복되지 않은 데이터를 검색하여 백업함으로써 동일 데이터를 중복되지 않게 데이터 백업을 수행한다.In addition, according to an embodiment of the present invention, by applying a deduplication method to the changed portion of the file to search for data that is not duplicated and backs up, the same data is not duplicated.

도 1은 종래 루트 디렉토리의 하위 디렉토리 중 하나를 깊이 우선 검색 방법으로 검색하는 동작을 보인 예시도이다.
도 2는 본 발명의 일실시예를 설명하기 위한 시스템 콜을 훅킹하는 방법을 보인 예시도이다.
도 3은 본 발명의 일실시예를 설명하기 위한 훅킹이 있을 때와 없을 때의 함수 수행 흐름을 보인 예시도이다.
도 4는 본 발명의 일실시예를 설명하기 위한 적재 가능 커널 모듈 방법을 이용한 시스템 콜 후킹 방법을 보인 예시도이다.
도 5는 본 발명의 일실시예를 설명하기 위한 데이터 백업 수행을 위한 기본 구성 및 수행 과정을 보인 예시도이다.
도 6은 본 발명의 일실시예에 따른 데이터 백업 장치의 구성 및 데이터 흐름을 보인 블록도이다.
도 7은 본 발명의 일실시예를 설명하기 위한 전체 백업 이후 증분 백업 대상을 도시한 예시도이다.
도 8은 본 발명의 일실시예를 설명하기 위한 파일 백업시 데이터 중복을 제거하기 위해 파일을 데이터 조각으로 분할한 예를 보인도이다.
1 is an exemplary view illustrating an operation of searching one of subdirectories of a conventional root directory by a depth-first search method.
Figure 2 is an exemplary view showing a method of hooking a system call for explaining an embodiment of the present invention.
3 is an exemplary view showing a function execution flow with and without hooking for explaining an embodiment of the present invention.
4 is an exemplary view showing a system call hooking method using a loadable kernel module method for explaining an embodiment of the present invention.
5 is an exemplary view showing a basic configuration and a process for performing data backup for explaining an embodiment of the present invention.
6 is a block diagram showing the configuration and data flow of a data backup apparatus according to an embodiment of the present invention.
7 is an exemplary diagram illustrating an incremental backup target after full backup for explaining an embodiment of the present invention.
8 is a diagram illustrating an example of dividing a file into pieces of data to remove data duplication during file backup for explaining an embodiment of the present invention.

이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.

컴퓨터에서 프로세서에 의해 수행되는 모든 응용 프로그램은 데이터를 처리하기 위하여 파일 입출력을 수행한다. 이때 응용 프로그램의 수행을 통하여 처리된 결과 데이터는 운영체제의 입출력 관련 시스템 콜에 의하여 다시 저장 매체에 저장된다. 즉, 응용 프로그램은 운영체제가 제공하는 입출력 관련 시스템 콜을 수행함으로써 디렉토리를 생성하고, 파일을 생성하고, 파일 내용을 변경하는 등의 파일에 관련된 모든 연산을 수행한다.Every application program executed by a processor in a computer performs file input / output to process data. At this time, the result data processed through the execution of the application program is stored in the storage medium again by the input and output system call of the operating system. That is, the application program performs all operations related to a file such as creating a directory, creating a file, changing a file's contents, etc. by performing an input / output related system call provided by an operating system.

파일 기반 증분 백업에서 백업 프로세서는 전체 디렉토리 트리를 탐색하지 않고 백업 대상 파일을 찾기 위해서는 변경되거나, 새로 생성되는 파일 및 디렉토리, 또는 파일에 관련된 모든 연산을 추적하여 기록한 후 이들 정보를 백업 시에 이용하면 가능하다. 이들 정보는 모든 입출력 관련 시스템 콜을 훅킹(hooking)하여 추적 및 추출할 수 있다.In file-based incremental backups, the backup processor tracks and records all changed or newly created files and directories, or operations related to files, to find the backup target file without traversing the entire directory tree. It is possible. This information can be tracked and extracted by hooking all I / O related system calls.

도 2는 본 발명의 일실시예를 설명하기 위한 시스템 콜을 훅킹하는 방법을 보인 예시도이다.Figure 2 is an exemplary view showing a method of hooking a system call for explaining an embodiment of the present invention.

응용 프로그램이 수행 도중 데이터 저장을 위해 쓰기 시스템 콜(write() system call) 명령어가 호출된다면, 쓰기 시스템 콜은 데이터 백업 장치의 입출력 훅커에 의해 훅킹(hooking)되고, 커널 레벨(kernel level)에서 훅킹된 함수(function)가 호출된다. 이때 훅킹된 함수에서는 데이터를 백업하기 위해 필요한 모든 정보를 획득하고 원래의 시스템 콜의 수행 흐름으로 복귀한다. 여기서, 쓰기 시스템 콜은 변수 버퍼(buf)에 저장되어 있는 변수 사이즈(size) 바이트 크기의 데이터를 파일 디스크립터(file descriptor; fd)가 가리키는 파일에 저장하기 위한 시스템 콜이다.Write system call (write ()) to save data while the application is running If the system call command is called, the write system call is hooked by an input / output hooker of the data backup device, and a function hooked at the kernel level is called. The hooked function then acquires all the information needed to back up the data and returns to the flow of the original system call. Here, the write system call is a system call for storing the data of the variable size byte size stored in the variable buffer buf in the file indicated by the file descriptor fd.

쓰기 시스템 콜에서 데이터를 백업하기 위해 필요한 정보는 파일 자체에 대한 정보(파일의 절대 경로를 포함하는 파일 명), 쓰여질 데이터의 파일 내 위치 및 크기, 쓰여질 데이터 자체 등으로 시스템 콜의 파라미터를 이용하여 추출할 수 있다. 백업을 위하여 추출되는 정보는 시스템 콜 마다 조금씩 다를 수 있으나, 모두 같은 방법으로 추출할 수 있다. 따라서 파일 시스템에 영향을 미치는 모든 시스템 콜을 훅킹하여 데이터 백업에 필요한 정보를 획득하면, 디렉토리 트리를 탐색하지 않고도 효율적으로 백업을 할 수 있다. 또한 이러한 백업 방법은 응용 프로그램의 수행을 멈추지 않게 하면서 백업할 파일 및 데이터에 대한 모든 정보를 추출할 수 있어 응용 프로그램은 백업 소프트웨어의 존재를 인식하지 못한다.The information needed to back up data in a write system call includes information about the file itself (file name including the absolute path of the file), the location and size of the file to be written, and the data itself to be written. Can be extracted. The information extracted for backup may vary slightly for each system call, but they can all be extracted in the same way. Therefore, by hooking up all system calls affecting the file system to obtain the information needed to back up data, you can efficiently back up without having to navigate the directory tree. In addition, this backup method can extract all the information about the files and data to be backed up without stopping the application from running, so the application does not recognize the existence of the backup software.

도 3은 본 발명의 일실시예를 설명하기 위한 훅킹이 있을 때와 없을 때의 함수 수행 흐름을 보인 예시도이다.3 is an exemplary view showing a function execution flow with and without hooking for explaining an embodiment of the present invention.

훅킹(hooking)은 핸들러 함수(handler function)를 활용하여 원래 프로그램의 수행 흐름에 수정을 가하는 프로그램 기술을 의미한다. 새로운 훅(hook)은 어떤 특정 함수(function)를 위한 주소를 가진 함수로 등록되며, 그 특정 함수가 불리게 되면, 훅이 그 특정 함수 대신 수행되게 된다. 이때, 일반적으로 훅은 어떤 특정 시점에 원래의 함수를 불러 원래 함수의 수행 목적을 준수한다.Hooking refers to a program technique that uses a handler function to modify the execution flow of the original program. A new hook is registered as a function with the address for a particular function, and when that particular function is called, the hook is executed instead of that specific function. In this case, the hook generally calls the original function at a certain point in time to comply with the purpose of executing the original function.

도 4는 본 발명의 일실시예를 설명하기 위한 적재 가능 커널 모듈 방법을 이용한 시스템 콜 후킹 방법을 보인 예시도이다.4 is an exemplary view showing a system call hooking method using a loadable kernel module method for explaining an embodiment of the present invention.

시스템 콜은 응용 프로그램이 운영체제 커널의 서비스 요청을 위한 엔트리 포인트(entry point)이다. 이런 엔트리 포인트를 훅킹함으로써 원래 운영체제의 커널이 제공하는 서비스를 확장시킬 수 있다. 시스템 콜을 훅킹하는 방법은 운영체제마다 약간의 차이가 있다. 예를 들어, 리눅스(Linux) 운영체제에서 적재 가능 커널 모듈(Loadable Kernel Module: LKM) 방법을 간략하게 기술한다. A system call is an entry point for an application to request a service from the operating system kernel. By hooking these entry points, you can extend the services provided by the kernel of the original operating system. The way you hook system calls differs slightly by operating system. For example, we briefly describe the Loadable Kernel Module (LKM) method in the Linux operating system.

LKM 방법은 리눅스 커널 기능을 확장하는데 사용하는 방법으로, 별도의 커널 모듈을 만들어 기존의 커널의 수정이나 재 컴파일 없이 그 모듈을 동적으로 리눅스 커널에 적재하고, 내리고 하는 방식이다. 커널의 수정, 그리고 재 컴파일 없이 동적으로 모듈을 적재할 수 있는 장점 때문에 새로운 디바이스의 드라이버 또는 파일 시스템 등은 이 방식을 많이 사용한다.The LKM method is a method used to extend Linux kernel functionality. It creates a separate kernel module and dynamically loads and unloads the module into the Linux kernel without modifying or recompiling the existing kernel. The new device's driver or file system uses this approach a lot because of kernel modifications and the ability to load modules dynamically without recompilation.

응용 프로그램이 시스템 콜을 호출하게 되면 훅된 모듈이 적재된 상태에서는 훅된 시스템 콜이 수행되며, 훅된 모듈이 적재되지 않았다면 원래의 시스템 콜이 수행된다. 위에서 설명한 바와 같이 훅된 함수는 어는 시점에서 항상 원래 수행되어야 할 함수를 불러 함수 수행 목적을 준수한다.When an application calls a system call, the hooked system call is executed while the hooked module is loaded. If the hooked module is not loaded, the original system call is executed. As described above, a hooked function always calls the function that should be executed at some point in time to comply with the purpose of executing the function.

도 5는 본 발명의 일실시예를 설명하기 위한 데이터 백업 수행을 위한 기본 구성 및 수행 과정을 보인 예시도이다.5 is an exemplary view showing a basic configuration and a process for performing data backup for explaining an embodiment of the present invention.

데이터 백업에 필요한 정보를 추출하기 위하여는 커널에 크게 두가지의 대표적인 모듈이 필요하며, 이들 모듈은 사용자 레벨의 백업 프로세서(550)와 긴밀하게 연결되어 실행된다.In order to extract information required for data backup, two representative modules are needed in the kernel, and these modules are closely connected to the user-level backup processor 550 and executed.

응용 프로그램(510)이 입출력 관련 시스템 콜을 호출하면 입출력 훅커(520)는 훅킹된 시스템 콜을 통하여 백업에 필요한 파일 정보를 추출한다. 원래의 입출력 관련 시스템 콜은 계속해서 수행되며, 추출된 파일 정보는 커널 내 또 다른 모듈인 콜렉터(530)에 의하여 리스트(540)에 저장된다. 백업 프로세서(550)는 리스트(540)에 저장된 파일 정보를 활용하여 백업할 데이터를 읽어 백업 스토리지(560)에 저장한다.When the application 510 calls an I / O related system call, the I / O hooker 520 extracts file information necessary for backup through the hooked system call. The original I / O related system call is continuously performed, and the extracted file information is stored in the list 540 by the collector 530 which is another module in the kernel. The backup processor 550 reads data to be backed up using the file information stored in the list 540 and stores the data to be backed up in the backup storage 560.

여기서, 입출력 훅커(520)에 의하여 추출되는 파일 정보는 크게 다음과 같이 세가지로 분류된다:Here, the file information extracted by the input / output hooker 520 is classified into three categories as follows:

(1) 파일 또는 디렉토리에 관한 정보 (파일 레벨 기반의 증분 백업을 위한 정보)(1) information about files or directories (information for file-level incremental backups)

(2) (1)번에서 얻어진 정보에 파일의 어느 부분이 얼마만큼 (size) 변경되었는지 또는 데이터가 파일의 어느 부분에 얼마만큼 삽입 또는 추가되었는지에 관한 정보 (레코드 레벨의 증분 백업을 위한 정보)(2) Information on which part of the file has changed in size or how much data has been inserted or added to the information obtained in step (1) (information for incremental backup at record level).

(3) (1)(2)의 정보에 추가하여 실제 파일에 쓰여지는 데이터 자체 (CDP(Continuous Data Protection)를 위한 정보)(3) In addition to the information in (1) (2), the data itself written to the actual file (information for Continuous Data Protection)

도 6은 본 발명의 일실시예에 따른 데이터 백업 장치의 구성 및 데이터 흐름을 보인 블록도이다.6 is a block diagram showing the configuration and data flow of a data backup apparatus according to an embodiment of the present invention.

입출력 훅커(610)는 입출력 관련 시스템 콜을 훅킹하여 파일 또는 디렉토리에 관한 정보로, 파일 또는 디렉토리의 생성, 제거에 관한 정보, 변경되는 파일에 대한 정보(데이터의 append, update 등), 심볼릭 또는 하드링크와 관련된 파일 또는 디렉토리 정보를 추출한다. 입출력 훅커(610)는 추출된 정보를 콜렉터(630)와 공유되는 메시지 큐(620)에 저장한다.The I / O hooker 610 hooks I / O related system calls to information about a file or directory, and information about the creation or removal of a file or directory, information about a file to be changed (append, update, etc.), symbolic or hard. Extract the file or directory information associated with the link. The input / output hooker 610 stores the extracted information in the message queue 620 shared with the collector 630.

여기서, 파일과 디렉토리를 동일하게 파일로 취급한다. 실제적으로 유닉스 계열의 시스템에서는 파일과 디렉토리를 동일하게 파일로 처리한다:Here, files and directories are treated as files in the same way. In fact, Unix-like systems treat files and directories as files:

입출력 훅커(610)에 의하여 추출되어 메시지 큐(620)에 저장된 파일 정보는 콜렉터(630)에 의해 리스트에 저장된다.The file information extracted by the input / output hooker 610 and stored in the message queue 620 is stored in the list by the collector 630.

커널 영역의 입출력 훅커(610)와 사용자 영역의 환경설정 매니저(651)는 디렉토리 정보 파일(641)을 공유하여 서로 정보를 주고 받는다. 즉, 사용자가 백업 대상으로 정하는 디렉토리 관련 정보는 사용자 영역의 환경설정 매니저(651)에 의해 디렉토리 정보 파일로 저장되고, 입출력 훅커(610)는 디렉토리 정보 파일(641)에 저장된 정보를 이용하여 백업 대상에 속하는 파일 관련 정보를 추출한다.The kernel area input / output hooker 610 and the user area configuration manager 651 share directory information files 641 to exchange information with each other. That is, the directory related information that the user defines as the backup target is stored in the directory information file by the environment setting manager 651 of the user area, and the input / output hooker 610 uses the information stored in the directory information file 641 to back up the target. Extract information about files belonging to.

백업 프로세서(650)는 사용자가 원하는 주기에 따라 백업 작업을 스케쥴링하여 데이터를 백업한다. 데이터를 백업하여야 하는 주기가 되면 사용자 레벨의 백업 프로세서(650)의 한 모듈인 디스패처(dispatcher)(652)는 콜렉터(collector)(630)에게 백업 준비를 하라는 명령을 내린다. 백업 명령을 받은 콜렉터(630)는 현재까지 메시지 큐(620)에 저장된 파일 정보를 리스트로 저장하고 디스패처(652)에게 백업 준비가 되었음을 알린다. 콜렉터(630)는 동시에 다른 리스트를 생성하여 이후에 입출력 훅커(610)에 의하여 추출되는 파일 정보를 별도로 새로 생성된 리스트에 저장하여 다음 백업을 할 수 있도록 준비한다.The backup processor 650 backs up data by scheduling a backup job according to a period desired by the user. When the data needs to be backed up, a dispatcher 652, a module of the user level backup processor 650, instructs the collector 630 to prepare for backup. The collector 630 receiving the backup command stores the file information stored in the message queue 620 as a list so as to inform the dispatcher 652 that the backup is ready. The collector 630 simultaneously generates another list and stores the file information extracted by the input / output hooker 610 in a newly created list separately and prepares for the next backup.

디스패처(652)는 콜렉터(630)에 의하여 리스트에 저장된 파일 정보를 이용하여 백업대상파일(642)을 정리하고, 백업대상파일(642)을 읽어 백업 스토리지(640)에 저장한다. 이때 디스패처(652)는 백업대상파일(642)을 찾기 위하여 파일의 디렉토리 트리를 전부 찾을 필요가 없으며. 이미 입출력 훅커(610)에 의하여 추출된 파일 정보를 이용하여 백업대상파일을(642) 정리할 수 있어 백업 속도를 향상시킬 수 있다.The dispatcher 652 organizes the backup target file 642 using the file information stored in the list by the collector 630, reads the backup target file 642, and stores the backup target file 642 in the backup storage 640. In this case, the dispatcher 652 does not need to search the directory tree of the files to find the backup target file 642. The backup target file 642 can be cleaned up using the file information already extracted by the input / output hooker 610, thereby improving the backup speed.

도 7은 본 발명의 일실시예를 설명하기 위한 전체 백업 이후 증분 백업 대상을 도시한 예시도이다.7 is an exemplary diagram illustrating an incremental backup target after full backup for explaining an embodiment of the present invention.

백업 프로세서는 전체 백업에서 파일 6을 제외한 모든 파일을 백업하였다. 이후 백업 프로세서가 증분 백업을 하기 전까지 파일 6이 새로이 생성되었고, 파일 3과 파일 7에서는 다른 색으로 도시한 부분의 데이터가 변경된 것으로 가정한다. 이런 파일의 변화 정보는 모두 콜렉터에 의해 생성된 리스트에 저장된다. 따라서 백업 프로세서가 콜렉터에 의해 생성된 리스트의 파일 정보를 참조하여 파일 레벨의 증분 백업을 수행하면 백업대상파일을 검색하는 과정 없이 파일 3, 파일 6, 파일 7의 변경된 데이터를 전부 백업함으로써 모든 증분 백업 과정을 종료한다.The backup processor backed up all files except file 6 in the full backup. Subsequently, it is assumed that file 6 is newly created until the backup processor incrementally backs up, and that data in different colors are changed in files 3 and 7. All of this file's change information is stored in a list generated by the collector. Therefore, if the backup processor performs file-level incremental backup by referring to the file information in the list generated by the collector, all incremental backups are performed by backing up all changed data of files 3, 6, and 7 without searching the backup target file. End the process.

백업 프로세서가 파일 레벨의 증분 백업 정보에 추가하여 데이터에 관한 정보를 추출하여 데이터 백업을 할 수 있다면 더욱 더 백업 시간을 단축시킬 수 있다. 본 발명의 일실시예에서는 이를 레코드 레벨의 백업이라 부르며, 위에서 설명한 파일 레벨 백업 정보에 추가하여 변경된 데이터의 파일 내에서의 위치 및 데이터의 크기 정보를 추출하여 이를 가능하게 한다. 즉, 입출력 훅커는 다음과 같은 ((절대 경로를 포함한 파일명, 파일의 생성 / 제거 / 링크 / unlink 여부, 파일의 변경 여부), 변경된 데이터의 파일 내의 위치 (offset), 변경된 데이터의 크기)형식으로 백업할 정보를 추출하고 백업 프로세서는 위에서 설명한 동일한 과정을 통하여 데이터를 백업한다.If the backup processor can extract the information about the data in addition to the file-level incremental backup information, it can further reduce the backup time. In an embodiment of the present invention, this is called a record level backup, and in addition to the file level backup information described above, it is possible to extract the location and size information of the changed data in the file. In other words, the I / O hooker is in the following format (file name including absolute path, whether file is created / removed / linked / unlinked, file changed), the location of the changed data in the file, the size of the changed data, and so on. The information to be backed up is extracted and the backup processor backs up the data through the same process described above.

레코드 레벨의 증분 백업은 파일 레벨의 백업을 위한 파일 정보에 추가하여 파일 내에서 변경되는 데이터를 레코드 레벨의 정보로 추가하여 가능하다. 즉, 백업 프로세서는 변경된 파일 전체를 백업하는 대신에 변경된 데이터의 파일 내의 위치 및 변경된 데이터의 크기 정보를 이용하여 정확히 변경된 데이타만 읽어서 백업할 수 있다. 따라서 백업 프로세서는 백업 대상을 찾는 시간을 절약할 수 있음은 물론, 파일 레벨의 증분 백업보다 백업하는 데이터 양을 줄일 수 있어 백업 시간 및 백업을 위한 스토리지 용량을 줄일 수 있다.Record-level incremental backup is possible by adding data that is changed in the file as record-level information in addition to file information for file-level backup. That is, instead of backing up the entire changed file, the backup processor may read and back up only the changed data by using the location of the changed data and the size of the changed data. Thus, the backup processor not only saves time looking for backup targets, but also reduces the amount of data backed up rather than incremental backup at the file level, thereby reducing backup time and storage capacity for backups.

입출력 훅커는 레코드 레벨의 데이터 백업을 위해 추출한 정보에 더하여 변경되는 데이터 자체를 추출하여 CDP(Continuous Data Protection)를 구현할 수 있다. 즉, 입출력 훅커는 쓰기 시스템 콜을 훅킹하여 쓰기 시스템 콜의 변수인 buf[size]에 저장된 데이터를 추출하여 정확히 변경되는 데이터를 추출할 수 있다. CDP를 위하여 입출력 훅커는 다음과 같은 ((절대 경로를 포함한 파일명, 파일의 생성 / 제거 / 링크 / unlink 여부, 파일의 변경 여부,) 변경된 데이터의 파일 내의 위치 (offset), 변경된 데이터의 크기, 데이터, 데이터가 변경된 시간)형식으로 백업할 파일 정보를 추출하고 백업 프로세서는 입출력 훅커에 의해 추출된 파일 정보를 참조하여 데이터를 백업한다:I / O hookers can implement CDP (Continuous Data Protection) by extracting the data that changes in addition to the information extracted for record-level data backup. That is, the I / O hooker can extract data that is changed correctly by hooking the write system call and extracting data stored in buf [size] which is a variable of the write system call. For the CDP, I / O hookers use the following (file names including absolute paths, file creation / removal / linking / unlinking, file changes, offsets within the file), changed data size, and Extract the file information to be backed up in the form of when the data was changed, and the backup processor refers to the file information extracted by the I / O hooker to back up the data:

레코드 레벨의 백업 정보에 더 추가 된 정보는 데이터 자체와 데이터가 변경된 시간이다. 데이터를 백업하는 과정은 앞에서 설명한 방법과 거의 동일하나, 다른 점은 실제 백업 할 데이터가 입출력 훅커에 의해 이미 추출되었고 추출된 데이터가 콜렉터에 의해 리스트에 저장되어 있다. 따라서 백업 프로세서는 실제 파일에 저장된 데이터를 읽어 백업 스토리지에 데이터를 저장 할 필요가 없고, 콜렉터 에 의해 저장된 데이터를 읽어 백업 스토리지에 저장하는 것으로 데이터의 백업이 완료된다. 이때 파일에 저장된 정보는 데이터가 변경된 시간을 기준으로 백업 스토리지에 저장될 수 있으며, 백업 프로세서는 이를 이용하여 원하는 시간 대의 데이터를 복구할 수 있다.Further information added to the record level backup information is the data itself and the time the data was changed. The process of backing up data is almost the same as the previous method, except that the data to be backed up is already extracted by the I / O hooker and the extracted data is stored in the list by the collector. Therefore, the backup processor does not need to read the data stored in the actual file and store the data in the backup storage. The data backup is completed by reading the data stored by the collector and storing the data in the backup storage. In this case, the information stored in the file may be stored in the backup storage on the basis of the time when the data is changed, and the backup processor may use the same to recover data of a desired time period.

도 8은 본 발명의 일실시예를 설명하기 위한 파일 백업시 데이터 중복을 제거하기 위해 파일을 데이터 조각으로 분할한 예를 보인도이다.8 is a diagram illustrating an example of dividing a file into pieces of data to remove data duplication during file backup for explaining an embodiment of the present invention.

인터넷의 발달과 더불어 매일 같이 생산되고 유통되는 디지털 데이터의 양이폭발적으로 증가하고 있다. 이에 따라 이들 데이터를 저장하기 위한 스토리지의 수요 또한 폭발적으로 증가하고 있다. 하지만 이러한 대용량의 디지털 데이터들에는 중복 데이터가 많은 부분을 차지하고 있는 것도 사실이다. 예를 들어 웹 스토리지의 경우 수많은 사용자들이 파일을 서로 업로드, 다운로드하게 되는데 이때 이름만 다른 파일이나 전체 파일에서 일부분만 변경된 파일이 무분별하게 남게 된다. 이러한 중복된 데이터로 인해 스토리지의 저장 공간을 낭비한다.With the development of the Internet, the amount of digital data produced and distributed every day is exploding. As a result, the demand for storage to store these data is exploding. However, it is also true that redundant data is a large part of such a large amount of digital data. For example, in the case of web storage, a large number of users upload and download files from each other, but files with different names or only partially changed files in the entire file are left indiscriminately. This redundant data wastes storage space on the storage.

따라서 중복된 데이터를 관리하여 스토리지를 효율적으로 사용 할 수 있는 기술이 필요하며, 이를 위하여 이름하여 데이터 중복 제거 기술이 활용되고 있다. 데이터 중복 제거 기술은 데이터 백업에 특히 많이 사용되고 있다. 즉, 데이터 백업 시 중복된 데이터를 발견하여 동일한 데이터가 여러 번 반복적으로 백업 스토리지에 저장되는 것을 방지하여 저장장치의 사용 효율을 높이고 있다.Therefore, there is a need for a technology that can efficiently use storage by managing redundant data. For this purpose, data deduplication technology is being used. Data deduplication technology is particularly popular for data backup. In other words, by detecting duplicate data during data backup, the same data is prevented from being repeatedly stored in the backup storage to increase the use efficiency of the storage device.

데이터의 중복 여부를 확인하는 가장 확실한 방법으로는 비트 단위로 비교하는 방법이다. 그러나 이 방법은 확실하게 데이타의 중복 검사가 가능하지만 속도가 늦다. 속도 문제를 보완하기 위한 방법으로는 파일의 해시값을 비교하는 방법이 있다. 이 방법의 문제는 파일의 일부가 변경되었을 때 혹은 파일 일부분의 중복을 찾지 못한다. 이러한 이유로 파일의 내부 중복을 찾는 방법으로는 파일을 잘게 나누어 데이터 조각의 중복 여부를 검사하는 방법이 널리 활용되고 있다. 파일을 나누는 방법은 크게 고정 길이의 데이터 조각으로 나누는 방법과 가변 길이의 데이터 조각으로 나누는 방법이 있다.The most obvious way to check for data redundancy is to compare bit by bit. However, this method can reliably check the data, but it is slow. One way to solve the speed problem is to compare the hash values of the files. The problem with this method is that when part of a file is changed or duplicates of a part of the file are not found. For this reason, the method of finding the internal duplication of a file is widely used by dividing the file into pieces and checking for duplicate data fragments. There are two ways to divide a file into fixed-length pieces of data and variable-length pieces of data.

고정 크기 분할 방법은 파일을 데이터 조각으로 나누는 속도가 빠르나 수정된 데이터의 중복을 찾는 성능은 떨어진다. 이에 반하여 가변 길이 분할 방법은 중간에 수정된 데이터의 중복도 찾아내므로 중복감지 확률이 고정 크기 분할 방법에 비해 월등히 높다. 반면 가변 길이 분할 방법은 파일을 데이터 조각으로 분할하는 시간이 많이 걸린다. Fixed-size partitioning speeds up file splitting into pieces of data, but slows down finding duplicates of modified data. On the other hand, the variable length segmentation method also finds duplicates of data modified in the middle, so the probability of overlap detection is much higher than that of the fixed size segmentation method. On the other hand, the variable length partitioning method takes a long time to split a file into pieces of data.

백업 프로세서가 파일을 잘게 데이터 조각으로 나누어 데이터의 중복을 제거하고 디스패처가 중복되지 않은 데이터를 백업 스토리지에 백업하는 과정은 다음과 같다.The process by which the backup processor breaks up the file into pieces of data, deduplicates the data, and backs up the non-redundant data to backup storage.

백업 프로세서가 파일을 잘게 데이터 조각으로 나눈다. 그리고 백업 프로세서가 분할된 데이터 조각에 고유의 인덱스 값을 부여하고, 효율적인 검색을 위하여 별도로 관리한다.The backup processor divides the file into chunks of data. The backup processor assigns unique index values to the fragmented data fragments and manages them separately for efficient retrieval.

백업 프로세서는 분할된 데이터 조각의 인덱스 값을 비교함으로써 데이터 조각의 중복 여부를 판단한다.The backup processor determines whether the data fragments overlap by comparing the index values of the divided data fragments.

백업 프로세서의 중복 여부 판단 결과 중복된 데이터 조각이 아니면 디스패처는 데이터 조각에 대한 정보(파일 내의 위치, 데이터 조각의 크기)와 데이터 조각을 인덱스와 함께 백업 스토리지에 저장하고, 중복된 데이터 조각이면 중복된 데이터 조각을 백업 스토리지에 저장하지 않고 인덱스를 통하여 중복 여부만 나타낸다.If the backup processor determines that the data is duplicated, the dispatcher stores the information about the data fragment (location within the file, the size of the data fragment) and the data fragment along with the index in backup storage. Instead of storing data fragments in backup storage, only indexes are indicated through indexes.

데이터 조각의 인덱스 값은 보통 128비트 이상으로 인덱스 값 간의 충돌을 최대한 줄이기 위하여 사용한다. 따라서 백업 프로세서가 인덱스 값들을 효율적으로 관리하고 빠르게 검색할 수 있도록 하는 것이 데이터 중복 제거 과정에서 성능에 영향을 미치는 중요한 요소라는 것을 알 수 있다. 물론 백업 프로세서가 파일을 데이터 조각으로 잘게 나누는 과정도 많은 시간을 요하는 작업이다.The index value of the data fragment is usually 128 bits or more and is used to minimize the collision between the index values. Therefore, it can be seen that enabling the backup processor to efficiently manage and retrieve index values is an important factor affecting performance during data deduplication. Of course, the process of dividing a file into pieces of data can be time-consuming.

결국 데이터 중복 제거 과정에서 가장 성능에 영향을 미치는 요소는 파일을 잘게 나누는 과정과 데이터 조각에 상응하는 인덱스 값을 관리하고 검색하는 과정이라 할 수 있다.As a result, the most performance-neutral factors in data deduplication are the process of dividing files and managing and retrieving index values corresponding to pieces of data.

전체 백업을 하는 과정에서는 데이터 중복 제거를 위해서는 모든 데이터 파일에 대하여 위에서 설명한 과정을 반듯이 거쳐야 한다. 그러나 증분 백업을 하는 과정에서 위와 같은 과정을 똑같이 거친다면 데이터 중복 제거에 걸리는 시간으로 전체 백업 시간이 증가될 수 밖에 없다.In the process of full backup, data deduplication must go through the process described above for all data files. However, if you go through the same steps in the incremental backup process, the time required for data deduplication will increase the total backup time.

현재 데이터 중복 제거 방법은 파일의 일부분에 변경이 생기면, 그 파일 전체를 다시 데이터 조각으로 잘게 나누고, 데이터 조각의 중복 여부를 검사하는 과정을 거쳐 백업 시간에 막대한 영향을 주고 있다. 하지만 변화된 부분에 한하여 데이터 조각으로 나누는 작업을 진행하고, 이 부분에 대한 중복 여부만 검사할 수 있다면 데이터의 중복 제거를 하면서도 백업 시간이 증가되는 부분을 최소화할 수 있다.Current data deduplication methods have a significant impact on backup time when a change is made to a part of a file, the whole file is divided into pieces of data, and the data pieces are checked for duplication. However, if you can break down the data into pieces that have changed and only check for redundancy, you can minimize the backup time while deduplicating the data.

이는 위에서 설명한 레코드 레벨 데이터 백업 방법을 활용하면 구현 가능하다. 도 8의 (a)는 전체 백업시 데이터 중복 제거를 위하여 파일을 n 개의 데이터 조각으로 분할한 예시도이다. 전체 백업 후 도 8의 (b)는 데이터 조각 n+1에 해당하는 데이터가 파일에 쓰여진 것을 의미한다. 종래 데이터 중복 제거 방법을 채택한다면 파일을 처음부터 다시 데이터 조각으로 나누는 작업과 중복 여부를 검사하여 파일 전체에 대한 증분 백업을 하게 된다.This can be achieved using the record-level data backup method described above. FIG. 8A illustrates an example of dividing a file into n pieces of data for data deduplication during full backup. After the full backup, (b) of FIG. 8 means that data corresponding to data fragment n + 1 is written to the file. If you use the traditional data deduplication method, you can divide the file into pieces of data from the beginning, and check for duplication to make an incremental backup of the entire file.

반면 위에서 설명한 레코드 레벨 방법을 활용한다면 백업 프로세서는 파일의 변경된 부분에 한하여 데이터 조각으로 나누고 그 부분의 중복 여부만 파악하여 디스패처에 의해 중복되지 않은 부분만 백업할 수 있다. 즉, 레코드 레벨의 백업에서는 변경되는 데이터의 파일 내 위치와 크기 등에 대한 정보를 입출력 훅커를 통하여 이미 추출하여 알 수 있다. 따라서 백업 프로세서는 변경되는 데이터에 의하여 영향을 받는 데이터 조각을 알 수 있으며 영향을 받는 데이터 조각 부분에 대해서만 다시 새로운 데이터 조각으로 나누고, 새로 생성된 데이터 조각에 대한 중복 여부를 검사 한 후 디스패처에 의해 중복되지 않은 데이터 조각만 백업 스토리지에 저장하면 된다. 예를 들어 도 8의 (b)에서는 백업 프로세서가 새로 추가된 부분 Ch n+1 대하여 데이터 조각으로 나누고 중복 검사를 하고, 도 8의 (c)에 도시된 바와 같이 데이터가 변경된다면 백업 프로세서는 변경된 데이터로 영향받는 세 개의 데이터 조각(Ch1, Ch2, Ch3)을 새로운 데이터 조각으로 나누고 중복 여부를 검사하여 백업을 한다.On the other hand, using the record-level method described above, the backup processor can divide only the changed parts of the file into pieces of data, and only check whether the parts are duplicated, and back up only the parts that are not duplicated by the dispatcher. That is, in the record level backup, information on the location and size of the data to be changed can be already extracted through the input / output hooker. Therefore, the backup processor knows which data fragments are affected by the data that is being changed, divides it back into new data fragments only for the affected data fragments, checks for duplicates for newly created data fragments, and then duplicates them by the dispatcher. Only unspent pieces of data need to be stored in backup storage. For example, in FIG. 8 (b), the backup processor divides the newly added portion Ch n + 1 into pieces of data and performs redundancy check. If the data is changed as shown in FIG. 8 (c), the backup processor is changed. Divide the three data fragments (Ch1, Ch2, Ch3) affected by the data into new data fragments and back them up by checking for duplicates.

결론적으로 백업 프로세서는 변화된 데이터 부분에 한정하여 데이터 조각을 새로 생성하고, 중복 여부를 검사하여 이들 부분만 백업을 수행하면 되므로 데이터를 분할하는 시간과 데이터 조각의 중복 여부를 검사하는 시간을 대폭 줄일 수 있다.As a result, the backup processor only needs to create new pieces of data that are limited to the changed parts of the data, check for redundancy, and back up only those parts, thereby significantly reducing the time for splitting data and checking for duplicates. have.

또한, 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.Further, embodiments of the present invention include a computer readable medium having program instructions for performing various computer implemented operations. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.In the present invention as described above has been described by the specific embodiments, such as specific components and limited embodiments and drawings, but this is provided to help a more general understanding of the present invention, the present invention is not limited to the above embodiments. For those skilled in the art, various modifications and variations are possible from these descriptions. Therefore, the spirit of the present invention should not be construed as being limited to the described embodiments, and all of the equivalents or equivalents of the claims, as well as the following claims, are included in the scope of the present invention.

510 : 응용 프로그램
520 : 입출력 훅커
530 : 콜렉터
540 : 리스트
550 : 백업 프로세서
560 : 백업 스토리지
510: Application
520: input and output hooker
530: Collector
540: list
550: Backup Processor
560: backup storage

Claims (15)

응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하고, 상기 훅킹된 시스템 콜과 연관되어 처리된 백업대상파일에 관한 파일정보를 생성하는 입출력 훅커; 및
상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 디스패처
를 포함하고,
상기 입출력 훅커는,
상기 시스템 콜을 분석하여, 적어도 일부의 데이터에 대한 변경 처리가 수행된 파일을 상기 백업대상파일로 결정하고, 상기 결정된 백업대상파일을 식별하기 위한 식별자를 포함하는 파일정보를 생성하는, 파일 백업 장치.
An input / output hooker for hooking the system call and generating file information about a backup target file processed in association with the hooked system call as a system call occurs in an application program; And
A dispatcher that extracts the backup target file from a file pool and stores the backup target file in a backup storage using the generated file information.
Including,
The input and output hooker,
Analyzing the system call to determine a file on which at least a part of the data has been subjected to the change processing as the backup target file, and generating file information including an identifier for identifying the determined backup target file. .
제1항에 있어서,
상기 파일 백업 장치는,
선정된 기간 동안 생성된 상기 파일정보를 포함하는 리스트를 작성하는 콜렉터
를 더 포함하고,
상기 디스패처는,
상기 리스트 내 파일정보에 의해 식별되는 파일을, 상기 백업대상파일로서 추출하는, 파일 백업 장치.
The method of claim 1,
The file backup device,
Collector for creating a list containing the file information generated during the selected period
Further comprising:
The dispatcher,
A file backup device for extracting a file identified by file information in the list as the backup target file.
제2항에 있어서,
상기 콜렉터는,
상기 기간에 대응하여 할당된 메시지 큐에 상기 리스트를 유지하되, 상기 기간의 종료 후, 상기 메시지 큐에 유지된 리스트를 제거하는, 파일 백업 장치.
The method of claim 2,
The collector,
And maintain the list in a message queue allocated corresponding to the period, and after the end of the period, remove the list maintained in the message queue.
삭제delete 제1항에 있어서,
상기 입출력 훅커는,
상기 시스템 콜을 분석하여, 변경 처리가 수행된 데이터의 위치를 식별하기 위한 식별자와 상기 데이터의 크기 정보를 포함하는 파일정보를 생성하고,
상기 디스패처는,
상기 식별자에 의해 식별되는 상기 백업대상파일 내 위치로부터 상기 크기 정보에 대응하는 데이터를, 상기 파일풀로부터 추출하여 백업 스토리지에 저장하는, 파일 백업 장치.
The method of claim 1,
The input and output hooker,
Analyzing the system call to generate file information including an identifier for identifying a location of the data on which the change processing is performed and size information of the data,
The dispatcher,
And a data corresponding to the size information from a position in the backup target file identified by the identifier, is extracted from the file pool and stored in backup storage.
제1항 또는 제5항에 있어서,
상기 변경 처리는,
파일 내 데이터에 관한 생성, 제거, 링크 연결, 또는 링크 해제 중 적어도 하나에 관한 처리인, 파일 백업 장치.
6. The method according to claim 1 or 5,
The change process,
A file backup device that is a process relating to at least one of creation, removal, linking, or unlinking of data in a file.
제1항에 있어서,
상기 파일정보는, 상기 백업대상파일 내 적어도 일부의 데이터에 대한 변경 처리가 수행된 시간 정보를 포함하고,
상기 디스패처는,
상기 시간 정보를 고려하여, 상기 백업대상파일을 추출하여 상기 백업 스토리지에 저장하는 시점을 결정하는, 파일 백업 장치.
The method of claim 1,
The file information includes time information on which a change process on at least part of data in the backup target file is performed.
The dispatcher is,
In consideration of the time information, and determines the time to extract the backup target file to store in the backup storage.
제1항에 있어서,
상기 파일 백업 장치는,
사용자로부터 백업대상파일을 입력받고, 상기 입출력 훅커를 제어하여 상기 입력된 백업대상파일에 관한 파일정보를 생성하는 환경설정 매니저
를 더 포함하는, 파일 백업 장치.
The method of claim 1,
The file backup device,
A configuration manager that receives a backup target file from a user and controls the input / output hooker to generate file information on the input backup target file.
Further comprising, a file backup device.
제1항에 있어서,
상기 파일 백업 장치는,
상기 백업대상파일을 복수 개의 데이터 조각으로 분할하고, 상기 분할된 데이터 조각 각각에 대해 인덱스를 부여하는 백업 프로세서
를 더 포함하는, 데이터 백업 장치.
The method of claim 1,
The file backup device,
A backup processor for dividing the backup target file into a plurality of data pieces and assigning an index to each of the divided data pieces
Further comprising a data backup device.
제9항에 있어서,
상기 백업 프로세서는,
상기 복수 개의 데이터 조각 중에서, 상기 백업 스토리지에서 검색되는 데이터 조각에 대해, 상기 부여된 인덱스를 중복인덱스로 대체하여 부여하고,
상기 디스패처는,
상기 중복인덱스가 부여된 데이터 조각을 제외한, 데이터 조각을 상기 백업 스토리지에 저장하는, 데이터 백업 장치.
10. The method of claim 9,
The backup processor,
Among the plurality of data pieces, for the data pieces retrieved from the backup storage, the given indexes are replaced by redundant indexes.
The dispatcher is,
And storing the data fragments in the backup storage except for the data fragments to which the redundant index has been given.
응용 프로그램에서 시스템 콜이 발생함에 따라, 상기 시스템 콜을 훅킹하는 단계;
상기 훅킹된 시스템 콜과 연관되어 상기 시스템 콜을 분석하여, 적어도 일부의 데이터에 대한 변경 처리가 수행된 파일을 백업대상파일로 결정하는 단계;
상기 결정된 백업대상파일을 식별하기 위한 식별자를 포함하는 파일정보를 생성하는 단계; 및
상기 생성된 파일정보를 이용하여, 파일풀로부터 상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계
를 포함하는, 파일 백업 방법.
Hooking the system call as a system call occurs in an application;
Analyzing the system call in association with the hooked system call and determining a file to which a change process of at least some data has been performed as a backup target file;
Generating file information including an identifier for identifying the determined backup target file; And
Extracting the backup target file from a file pool using the generated file information and storing the backup target file in a backup storage;
Including, file backup method.
삭제delete 제11항에 있어서,
상기 파일정보는, 변경 처리가 수행된 데이터의 위치를 식별하기 위한 식별자와 상기 데이터의 크기 정보를 포함하고,
상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계는,
상기 식별자에 의해 식별되는 상기 백업대상파일 내 위치로부터 상기 크기 정보에 대응하는 데이터를, 상기 파일풀로부터 추출하여 백업 스토리지에 저장하는 단계
를 포함하는, 파일 백업 방법.
The method of claim 11,
The file information includes an identifier for identifying a location of data on which change processing has been performed and size information of the data,
Extracting the backup target file and storing in the backup storage,
Extracting data corresponding to the size information from a location in the backup target file identified by the identifier from the file pool and storing the data in the backup storage;
Including, file backup method.
제11항에 있어서,
상기 파일정보는, 상기 백업대상파일 내 적어도 일부의 데이터에 대한 변경 처리가 수행된 시간 정보를 포함하고,
상기 백업대상파일을 추출하여 백업 스토리지에 저장하는 단계는,
상기 시간 정보를 고려하여, 상기 백업대상파일을 추출하여 상기 백업 스토리지에 저장하는 시점을 결정하는 단계
를 포함하는, 파일 백업 방법.
The method of claim 11,
The file information includes time information on which a change process on at least part of data in the backup target file is performed.
Extracting the backup target file and storing in the backup storage,
Determining a time point at which the backup target file is extracted and stored in the backup storage in consideration of the time information;
Including, file backup method.
제11항에 있어서,
상기 백업대상파일을 복수 개의 데이터 조각으로 분할하는 단계;
상기 분할된 데이터 조각 각각에 대해 인덱스를 부여하는 단계로서, 상기 복수 개의 데이터 조각 중에서, 상기 백업 스토리지에서 검색되는 데이터 조각에 대해, 상기 부여된 인덱스를 중복인덱스로 대체하여 부여하는 단계; 및
상기 중복인덱스가 부여된 데이터 조각을 제외한, 데이터 조각을 상기 백업 스토리지에 저장하는 단계
를 더 포함하는, 데이터 백업 방법.
The method of claim 11,
Dividing the backup target file into a plurality of pieces of data;
Assigning an index to each of the partitioned data fragments, wherein the indexes are replaced with redundant indexes for the data fragments retrieved from the backup storage among the plurality of data fragments; And
Storing the data fragments in the backup storage except for the data fragments to which the redundant index has been assigned.
Further comprising a data backup method.
KR1020100103478A 2010-10-22 2010-10-22 Data backup apparatus and method for the same KR101237746B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100103478A KR101237746B1 (en) 2010-10-22 2010-10-22 Data backup apparatus and method for the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100103478A KR101237746B1 (en) 2010-10-22 2010-10-22 Data backup apparatus and method for the same

Publications (2)

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

Family

ID=46262885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100103478A KR101237746B1 (en) 2010-10-22 2010-10-22 Data backup apparatus and method for the same

Country Status (1)

Country Link
KR (1) KR101237746B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658741B1 (en) 2015-11-23 2016-09-21 (주)클로닉스 Mixing back up and restoration device using incremental back up and differential back up of computer system and method for controlling the same
KR20190062197A (en) 2017-11-27 2019-06-05 주식회사 데이타커맨드 Continous data mangement system and method
US11138156B2 (en) 2017-11-27 2021-10-05 DataCommand Corp. Continuous data management system and operating method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305830A (en) 1999-04-26 2000-11-02 Toshiba Corp Method and system for managing file in computer system
JP2003280939A (en) 2002-03-25 2003-10-03 Toshiba Corp Process pair execution control method and process pair execution control program in fault tolerant system, and fault tolerant system
JP2007164265A (en) * 2005-12-09 2007-06-28 Hitachi Ltd File backup system and method
KR100766863B1 (en) 2006-12-07 2007-11-15 주식회사 스펙트라 Software-installation system using movable data storage and method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305830A (en) 1999-04-26 2000-11-02 Toshiba Corp Method and system for managing file in computer system
JP2003280939A (en) 2002-03-25 2003-10-03 Toshiba Corp Process pair execution control method and process pair execution control program in fault tolerant system, and fault tolerant system
JP2007164265A (en) * 2005-12-09 2007-06-28 Hitachi Ltd File backup system and method
KR100766863B1 (en) 2006-12-07 2007-11-15 주식회사 스펙트라 Software-installation system using movable data storage and method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658741B1 (en) 2015-11-23 2016-09-21 (주)클로닉스 Mixing back up and restoration device using incremental back up and differential back up of computer system and method for controlling the same
KR20190062197A (en) 2017-11-27 2019-06-05 주식회사 데이타커맨드 Continous data mangement system and method
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
KR20120042020A (en) 2012-05-03

Similar Documents

Publication Publication Date Title
US10776315B2 (en) Efficient and flexible organization and management of file metadata
US10599337B2 (en) Method and device for writing data and acquiring data in a distributed storage system
US8898114B1 (en) Multitier deduplication systems and methods
US20170295239A1 (en) Data processing method, apparatus, and system
KR100622801B1 (en) Rapid restoration of file system usage in very large file systems
US9286165B2 (en) Apparatus and method for recovering partition using backup boot record information
CA2818472C (en) Optimized startup verification of file system integrity
US20150066857A1 (en) Replication of snapshots and clones
US10452608B2 (en) Log-structured file system
KR102031588B1 (en) Method and system for implementing index when saving file
US11288128B2 (en) Indexing a relationship structure of a filesystem
US10133638B1 (en) Recovery of in-memory state in a log-structured filesystem using fuzzy checkpoints
CN107665219B (en) Log management method and device
JP2015514241A (en) Storage device
US11461140B2 (en) Systems and methods for controller-worker architecture for searching a storage system
KR20150064593A (en) Deduplication method using data association and system thereof
US11782878B2 (en) Systems and methods for searching deduplicated data
US11494334B2 (en) Embedded reference counts for file clones
US20040143609A1 (en) System and method for data extraction in a non-native environment
US9858287B2 (en) Storage system
EP2669806B1 (en) Storage system
KR101237746B1 (en) Data backup apparatus and method for the same
US11397706B2 (en) System and method for reducing read amplification of archival storage using proactive consolidation
US9798793B1 (en) Method for recovering an index on a deduplicated storage system
US10452496B2 (en) System and method for managing storage transaction requests

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