KR102005727B1 - 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법 - Google Patents

파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법 Download PDF

Info

Publication number
KR102005727B1
KR102005727B1 KR1020180007617A KR20180007617A KR102005727B1 KR 102005727 B1 KR102005727 B1 KR 102005727B1 KR 1020180007617 A KR1020180007617 A KR 1020180007617A KR 20180007617 A KR20180007617 A KR 20180007617A KR 102005727 B1 KR102005727 B1 KR 102005727B1
Authority
KR
South Korea
Prior art keywords
snapshot
partition
directory
source
chunk
Prior art date
Application number
KR1020180007617A
Other languages
English (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 KR1020180007617A priority Critical patent/KR102005727B1/ko
Application granted granted Critical
Publication of KR102005727B1 publication Critical patent/KR102005727B1/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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

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

백업 방법 및 장치가 개시된다. 백업 방법은 복수의 시점들 각각에서, 상기 소스 파티션에 대한 백업 기록을 나타내는 스냅샷을 생성 및 관리하며, 각각의 스냅샷을 생성 및 관리하는 과정은 상기 스냅샷의 생성 시점에서의 소스 파티션의 소스 디렉토리로부터, 스냅샷 디렉토리를 상기 소스 파티션에 생성하는 단계, 상기 스냅샷 디렉토리에 마운트(mount) 되는 마운트 디렉토리를 스냅샷 파티션에 생성하는 단계, 상기 소스 파티션의 시스템 콜(system call)을 가로채기(hooking)하는 단계, 가로채기한 시스템 콜로부터, 상기 소스 파티션에서 변경 전 복사(Copy on Write; CoW) 영역을 결정하는 단계 및 상기 소스 파티션에서 상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하는 단계를 포함한다.

Description

파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법{MULTIPLE SNAPSHOT METHOD BASED ON CHANGE CALCULATION HOOKING TECHNIQUE OF FILE SYSTEM}
본 발명은 백업 과 같은 데이터 보호, 개발, 데이터 분석을 위한 스냅샷 방법 및 장치에 관한 것으로, 서로 다른 복수 시점의 스토리지 이미지를 유지해서 필요에 따라 복원, 개발, 분석을 위한 방법 및 장치에 관한 것이다.
컴퓨터의 메모리에 저장되어 프로세서에 의해 실행되는 모든 응용 프로그램은 데이터를 처리하기 위하여 동작한다. 저장 매체에 저장된 데이터는 시스템의 장애와 같은 여러 요인으로 인해 손실 또는 유실 될 수 있으며, 이로 인해 업무의 연속성을 보장할 수 없을 뿐만 아니라 데이터 복구에 막대한 비용이 소요될 수 있다.
데이터 손실에 의한 피해를 줄이기 위해 데이터를 보호하는 시스템이 운영되고 있다. 데이터 백업 시스템은 데이터의 중요도 및 성격 등에 따라 전체 백업 (full backup), 증분 백업 (incremental backup) 등의 방법을 이용하여 데이터를 백업한다. 전체 백업은 현재 백업을 하고자 하는 모든 데이터를 백업하고, 증분 백업은 전체 백업 이후 변화된 데이터에 대하여만 백업을 한다. 증분 백업은 전체 데이터를 백업하는 전체 백업 시간보다 데이터 백업할 대상이 줄 수 있어 백업하는 시간을 절약할 수 있다.
백업 기술에 대한 수요가 다양해지면서, 최종 데이터에 대한 보전뿐만 아니라 필요할 때, 원하는 시점의 데이터를 복원하여 사용할 수 있는 백업 기술이 요구되고 있다. 또한, 시스템 개발시에 스냅샷 기술이 사용될 수 있고, 분석을 위해 스냅샷 기술이 사용될 수 있다. 스토리지 스냅샷 기술은 특정 시점의 데이터를 보전하고, 필요할 때 원하는 시점의 데이터에 접근할 수 있는 기술이다. 리눅스 LVM (Logical Volume Manager)나 Device Mapper 등 블록 수준에서 스냅샷 기술을 구현한 예로 선행기술1(Xiao, W.J., Yang, Q., Ren, J., Xie, C.S., Li, H.Y.: Design and Analysis of Block-Level Snapshots for Data Protection and Recovery. IEEE Transactions on Computers, Vol. 58, No. 12, 1615-1625. (2009)), 선행기술2(Xiao, W.J., Ren, J., Yang, Q.: A Case for Continuous Data Protection at Block Level in Disk Array Storages. IEEE Transactions on Parallel and Distributed Systems, Vol. 20, No. 6, 898-911. (2009)) 등이 있다.
디스크 어레이(Array)에 통합하여 구현한 스냅샷 기술로 선행기술3(Lee, E.K., Thekkath, C.A.: Petal: distributed virtual disks. In Proceedings of the 7th Interna-tional Conference on Architectural Support for Programming Languages and Operating Systems, Cambridge, MA, USA, 84-92. (1996))이 있으며, 특정 파일 시스템에서 구현한 스냅샷 기술로 선행기술4(14. Xiang, X.J., Shu J.W., Zheng, W.M.: An efficient fine granularity multi-version file system. Journal of Software, Vol. 20, No. 3, 754-765. (2009)) 등이 있다.
선행기술1 및 2는 LVM 또는 Device Mapper 등을 사용하는 환경에서만 유용하며, 선행기술 3은 백업 시스템이 하드웨어에 종속적인 문제가 있다. 또한, 선행기술 4는 파일 시스템에 종속적인 문제가 있다.
NetApp, EMC VNX, VERITAS, Hitachi 등과 같은 스토리지 하드웨어에서 제공하는 스냅샷 기능들도 응용 프로그램을 고려(application-aware)해야 하 하므로, 응용 프로그램의 변화에 대처하지 못하면 데이터의 정합성이 보장되지 않는 문제가 있다.
이에 따라, 다양한 환경에서 효율적으로 스냅샷을 생성할 수 있는 스냅샷 기술이 요구되고 있다.
본 발명에서는 VFS(Virtual File System) 수준에서 스토리지 장비나 논리 볼륨, 파일 시스템에 독립적으로 fine granule 단위(예를 들어, 파티션, 디렉토리, 파일)로 스냅샷을 효과적으로 생성 및 유지하여 스토리지 보호, 개발 데이터 제공, 데이터 분석을 수행하기 위한 스냅샷을 효과적으로 생성 및 유지하는 방법 및 장치를 제공한다.
일 측면에 있어서, 복수의 시점들 각각에서, 상기 소스 파티션, 소스 디렉토리, 소스 파일에 대한 데이터를 보존하는 스냅샷을 생성 및 관리하며,
각각의 스냅샷을 생성 및 관리하는 과정은 상기 스냅샷의 생성 시점에서의 상기 소스 파티션, 소스 디렉토리, 소스 파일로부터, 스냅샷 디렉토리를 상기 소스 파티션에 생성하는 단계; 상기 스냅샷 디렉토리에 마운트(mount) 되는 마운트 디렉토리를 스냅샷 파티션에 생성하는 단계; 상기 소스 파티션의 시스템 콜(system call)을 가로채기(hooking)하는 단계; 가로채기한 시스템 콜로부터, 상기 소스 파티션에서 변경 전 복사(Copy on Write; CoW) 영역 및 CoW 필요 여부를 결정하는 단계; 및 상기 소스 파티션에서 상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하는 단계;를 포함하는 스냅샷 방법이 제공된다.
상기 스냅샷 디렉토리를 생성하는 단계는,
상기 스냅샷을 생성하는 시점에서, 상기 소스 파티션, 디렉토리, 또는 파일의 구조 및 상기 소스 파티션, 디렉토리 및 파일들의 파일 하드링크를 복사함으로써, 상기 스냅샷 디렉토리를 생성할 수 있다.
상기 각각의 스냅샷을 생성하는 과정은,
상기 소스 파티션의 디렉토리 구조 복사가 완료된 시점과, 가로채기한 시스템 호출의 로그 레코드 생성 시점을 비교하는 단계; 및
상기 소스 파티션의 디렉토리 구조 복사가 완료되기 전에 상기 소스 디렉토리의 구조를 변경하는 로그 레코드가 생성된 경우, 상기 소스 디렉토리의 구조를 변경하는 로그 레코드를 반영하여 상기 스냅샷 디렉토리를 보정하는 단계;를 더 포함할 수 있다.
상기 CoW 영역을 결정하는 단계는,
해당 스냅샷 생성 시점부터 다음 스냅샷 생성 시점까지 가로채기한 시스템 콜에 기초하여 상기 CoW 영역 및 CoW 필요 여부를 결정할 수 있다.
상기 CoW 영역 및 CoW 필요 여부를 결정하는 단계는,
상기 소스 파티션에 저장된 파일을 청크(chunk) 단위로 구분하고, 상기 가로채기한 시스템 콜에 의해 변경되는 청크를 상기 CoW 영역으로 결정할 수 있다. 또한, 해당 CoW 영역에 대해서 실제 CoW 를 수행해야 하는지를 비트맵 인덱스 등을 통해서 결정할 수 있다.
상기 각각의 스냅샷을 생성하는 과정은,
상기 소스 파티션에 저장된 파일에 대응하는 공파일을 상기 스냅샷 파티션에 생성하는 단계;를 더 포함하며,
상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하는 단계는,
상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 청크를 변경 전 복사(CoW)하고, 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 파일에 대응하는 공파일에 변경 전 복사한 청크를 저장할 수 있다.
상기 복수의 시점들 중 어느 한 시점을 복원 시점으로 하여, 상기 소스 파티션의 기록을 복원하는 단계;를 더 포함하며, 상기 소스 파티션의 기록을 복원하는 단계는,
청크 단위로 상기 소스 파티션의 기록을 복원하며, 상기 복원 시점으로부터 가장 먼저 대상 청크가 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원할 수 있다.
상기 각각의 스냅샷을 생성하는 과정은,
상기 스냅샷 생성 시점에서 상기 소스 파티션에 저장된 파일 각각에 포함되는 청크 개수에 대응하는 크기의 비트맵을 상기 스냅샷 파티션에 생성하는 단계;를 포함할 수 있다.
상기 각각의 스냅샷을 생성하는 과정은,
상기 스냅샷에서 변경 전 복사한 청크에 대응하는 상기 비트맵의 성분의 인덱스를 변경하는 단계;를 포함할 수 있다.
상기 소스 파티션의 기록을 복원하는 단계는,
상기 비트맵에 기초하여, 상기 대상 청크를 복원하기 위해 어느 시점의 스냅샷을 이용할 지를 결정할 수 있다.
상기 소스 파티션의 기록을 복원하는 단계는,
상기 비트맵으로부터 상기 복원 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사되었는지 여부를 판단하고,
상기 복원 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사 된 경우, 상기 복원 시점에 대응하는 스냅샷으로부터 상기 대상 청크를 복원할 수 있다.
상기 소스 파티션의 기록을 복원하는 단계는,
상기 복원 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사되지 않은 경우, 상기 복원 시점 이후, 상기 대상 청크가 가장 먼저 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원할 수 있다.
다른 측면에 있어서, 소스 파티션의 스냅샷을 생성 및 관리하는 스냅샷 장치에 있어서, 프로세서(processor); 및 상기 프로세서를 통해 실행되는 적어도 하나의 명령이 저장되는 메모리(memory)를 포함하고,
상기 적어도 하나의 명령은 복수의 시점들 각각에서, 상기 소스 파티션에 대한 스냅샷을 생성 및 관리하며,
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서, 상기 스냅샷의 생성 시점에서의 소스 파티션의 소스 디렉토리로부터, 스냅샷 디렉토리를 상기 소스 파티션에 생성하고; 상기 스냅샷 디렉토리에 마운트(mount) 되는 마운트 디렉토리를 스냅샷 파티션에 생성하고; 상기 소스 파티션의 시스템 콜(system call)을 가로채기(hooking)하고; 가로채기한 시스템 콜로부터, 상기 소스 파티션에서 변경 전 복사(Copy on Write; CoW) 영역 및 CoW 필요 여부를 결정하고; 상기 소스 파티션에서 상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하도록 수행되는 스냅샷 장치가 제공된다.
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
상기 소스 파티션의 디렉토리 구조 복사가 완료된 시점과, 가로채기한 시스템 호출의 로그 레코드 생성 시점을 비교하고; 상기 소스 파티션의 디렉토리 구조 복사가 완료되기 전에 상기 소스 디렉토리의 구조를 변경하는 로그 레코드가 생성된 경우, 상기 소스 디렉토리의 구조를 변경하는 로그 레코드를 반영하여 상기 스냅샷 디렉토리를 보정하도록 수행될 수 있다.
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
해당 스냅샷 생성 시점부터 다음 스냅샷 생성 시점까지 가로채기한 시스템 콜에 기초하여 상기 CoW 영역 및 CoW 필요 여부를 결정하도록 수행될 수 있다.
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
상기 소스 파티션에 저장된 파일을 청크(chunk) 단위로 구분하고, 상기 가로채기한 시스템 콜에 의해 변경되는 청크를 상기 CoW 영역 및 CoW 필요 여부를 결정하도록 수행될 수 있다.
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
상기 소스 파티션에 저장된 파일에 대응하는 공파일을 상기 스냅샷 파티션에 생성하고; 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 청크를 변경 전 복사(CoW)하고; 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 파일에 대응하는 공파일에 변경 전 복사한 청크를 저장하도록 수행될 수 있다.
상기 적어도 하나의 명령은 복수의 시점들 중 어느 한 시점을 복원 시점으로 하여, 상기 소스 파티션의 기록을 복원하되,
청크 단위로 상기 소스 파티션의 기록을 복원하며, 상기 복원 시점으로부터 가장 먼저 대상 청크가 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원하도록 수행될 수 있다.
상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
상기 스냅샷 생성 시점에서 상기 소스 파티션에 저장된 파일 각각에 포함되는 청크 개수에 대응하는 크기의 비트맵을 상기 스냅샷 파티션에 생성하고; 상기 스냅샷에서 변경 전 복사한 청크에 대응하는 상기 비트맵의 성분의 인덱스를 변경하도록 수행될 수 있다.
상기 적어도 하나의 명령은 상기 비트맵에 기초하여, 상기 대상 청크를 복원하기 위해 어느 시점의 스냅샷을 이용할 지를 결정하도록 수행될 수 있다.
본 발명의 실시예들에 따르면, 스냅샷 장치가 복수의 스냅샷들을 저장함으로써, 여러 시점에서의 소스 파티션 기록을 복원할 수 있다. 또한, 스냅샷 별로, 소스 파티션의 모든 기록을 저장하지 않고, 변경 전 복사 영역을 선택하고, 청크 단위로 변경 전 복사를 수행함으로써, 스냅샷 기록의 복사 및 저장 과정이 짧아질 수 있다. 또한, 스냅샷 별로 요구되는 저장 공간(저장 용량)을 줄일 수 있다. 스냅샷 장치는 변경 전 복사된 청크들을 식별하기 위해 비트맵을 생성하고, 비트맵을 이용하여 변경 전 복사된 청크들에 접근함으로써, 소스 파티션에 대한 다수 시점의 스냅샷에 접근하는 것이 용이해질 수 있다.
또한, VFS 수준에서 파일 시스템, 논리 볼륨, 스토리지 하드웨어에 독립적으로 스냅샷을 생성 및 관리할 수 있으며, 페이지 캐시(Page Cache)의 변경 기록까지 스냅샷에 반영할 수 있기 때문에 데이터의 정합성 유지가 가능하다. 스냅샷 대상에 대한 단위를 파티션, 디렉토리, 파일 단위로 조절 가능하므로, 기존 블록 장치 및 파일 시스템 단위의 스냅샷에 비해 유연하게 데이터에 대한 스냅샷을 생성 및 유지할 수 있다.
도 1은 본 발명의 실시예에 따른 스냅샷 장치를 나타낸 블록도이다.
도 2는 본 발명의 실시예에 따른 스냅샷 장치의 기능들을 블록 단위로 나타낸 블록 다이어그램이다.
도 3은 본 발명의 실시예에 따른 스냅샷 장치가 스냅샷을 생성 및 관리하는 과정을 나타낸 순서도이다.
도 4는 스냅샷 디렉토리의 구조와 소스 디렉토리의 구조가 다른 예들을 나타낸 개념도이다.
도 5는 스냅샷 디렉토리의 보정 과정을 나타낸 흐름도이다.
도 6은 스냅샷 장치가 청크 단위로 변경 전 복사를 수행하는 것을 나타낸 개념도이다.
도 7은 도 6에서 나타낸 변경 전 복사에 의해, 스냅샷 별로 1.txt 파일에서 변경 전 복사 된 청크들을 나타낸 개념도이다.
도 8은 파일 '1.txt'의 변경 전 복사 히스토리를 기록한 비트맵을 나타낸 개념도이다.
도 9는 스냅샷 장치가 CoW 공간에 저장된 청크들에 접근하는 방식을 나타낸 개념도이다.
도 10은 스냅샷이 T0, T4, T8, T12 시점에 S0 ~ S3까지 생성된 이후에 스냅샷 장치가 T0 시점에 생성된 스냅샷 S0의 1.txt 파일에 접근하는 방법을 나타낸 개념도이다.
도 11은 스냅샷 장치가 T4 시점에서의 1.txt 파일에 대한 스냅샷에 T12이후에 접근하는 방법을 나타낸 개념도이다.
도 12는 스냅샷 장치가 비트맵을 이용하여 스냅샷을 위한 CoW 청크에 접근하는 방법의 제1 실시예를 나타낸 개념도이다.
도 13은 스냅샷 장치가 비트맵을 이용하여 스냅샷에 접근하는 방법의 제2 실시예를 나타낸 개념도이다.
도 14는 스냅샷 장치가 비트맵을 이용하여 스냅샷에 접근하는 방법의 제3 실시예를 나타낸 개념도이다.
도 15는 스냅샷 장치가 스냅샷을 삭제하는 과정을 나타낸 개념도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 스냅샷 장치(100)를 나타낸 블록도이다.
도 1을 참조하면, 예시적인 실시예에 따른 스냅샷 장치(100)는 적어도 하나의 프로세서(110), 메모리(120) 및 저장 장치(125) 등을 포함할 수 있다.
프로세서(110)는 메모리(120) 및/또는 저장 장치(125)에 저장된 프로그램 명령(program command)을 실행할 수 있다. 프로세서(110)는 중앙 처리 장치(central processing unit; CPU), 그래픽 처리 장치(graphics processing unit; GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리(120)와 저장 장치(160)는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있다. 예를 들어, 메모리(120)는 읽기 전용 메모리(read only memory; ROM) 및/또는 랜덤 액세스 메모리(random access memory; RAM)로 구성될 수 있다.
메모리(120)는 프로세서(110)를 통해 실행되는 적어도 하나의 명령을 저장하고 있을 수 있다. 프로세서(110)는 저장 장치(125)를 논리적으로 구분할 수 있다. 예를 들어, 프로세서(110)는 저장 장치(125)를 소스 파티션과, 스냅샷 파티션으로 나누고, 스냅샷 파티션에 소스 파티션의 백업 기록에 해당하는 스냅샷을 저장할 수 있다.
도 2는 본 발명의 실시예에 따른 스냅샷 장치의 기능들을 블록 단위로 나타낸 블록 다이어그램이다.
도 2를 참조하면, 스냅샷 장치는 유저(user) 단과 커널(kernel) 단으로 구분될 수 있다. 커널 단은 운영 체제의 핵심 부분으로서 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 하드웨어 추상화 기능을 수행할 수 있다.
스냅샷 장치는 멀티 스냅샷 기능을 제공할 수 있다. 스냅샷 장치는 파티션, 디렉토리, 파일 단위로 스냅샷을 생성할 수 있지만 이후에는 디렉토리를 예로 하여 설명한다. 스냅샷 장치는 서로 다른 소스 디렉토리들(소스 디렉토리0, 소스 디렉토리1, ... 소스 디렉토리 n) 각각에 대해 스냅샷을 생성할 수 있다. 스냅샷 장치는 하나의 소스 디렉토리에 대하여, 서로 다른 시점에서 복수의 스냅샷을 생성할 수 있다.
스냅샷이란 스냅샷이 생성된 시점에서의 소스 파티션의 기록을 유지하기 위한 기록일 수 있다. 스냅샷은 여러 시점에서 생성될 수 있다. 스냅샷은 스냅샷이 생성된 시점에서의 소스 디렉토리 전체를 포함할 수 있다.
멀티 스냅샷 데몬(212)은 스냅샷을 생성하고, 생성된 스냅샷에 대한 메타 데이터를 관리할 수 있다. 스냅샷에 대한 메타 데이터는 메타 데이터 테이블(210)에 저장될 수 있다. 메타 데이터는 스냅샷의 생성 시점, 생성 주기, 변경 전 복사 관리 정책(CoW 영역 등의 자동 조정 등), 스냅샷 리스트 등의 정보를 포함할 수 있다. 멀티 스냅샷 데몬(212)은 스냅샷 생성을 멈추거나, 생성된 스냅샷을 삭제할 수도 있다.
표 1은 멀티 스냅샷 데몬(212)이 지원할 수 있는 기능들을 나타낸다.
Figure 112018007224288-pat00001
스냅샷 매니저(242, 244)는 유저단과 커널단에서 각 시점의 스냅샷에 접근(액세스 access)할 수 있다. 커널단의 스냅샷 매니저(244)는 소스 디렉토리의 특정 경로가 변경되는 경우, 변경 전 경로와 변경 후 경로를 Rename Table(246)에 저장할 수 있다.
표 2는 유저단의 스냅샷 매니저(242)가 지원할 수 있는 기능들을 나타낸다.
Figure 112018007224288-pat00002
소스 파티션(220)의 스냅샷을 관리하기 위해, 스냅샷 장치는 소스 파티션(220)과 스냅샷 파티션(230)을 추상적으로 구분할 수 있다. 스냅샷 파티션(230)에는 소스 파티션(220)에서 변경 전 복사(Copy on Write; CoW)되는 청크(Chunk)들이 저장될 수 있다. 변경 전 복사와, 청크에 관해서는 뒷부분에서 설명한다.
소스 파티션(220)에는 복수개의 스냅샷 디렉토리들(224, 226, 228)이 생성될 수 있다. 스냅샷 디렉토리들(224, 226, 228)은 각각 서로 다른 시점에서, 소스 디렉토리(222)의 구조 및 하드링크(hardlink)의 복사에 의해 생성될 수 있다. 예를 들어, 스냅샷 디렉토리 S0(224)는 첫 번째 시점에서의 소스 디렉토리(222)를 복사한 것이고, 스냅샷 디렉토리 S1(226)은 첫 번째 시점보다 늦은 두 번째 시점에서의 소스 디렉토리(224)를 복사한 것일 수 있다. 각각의 스냅샷 디렉토리는 해당 스냅샷이 생성되는 시점의 소스 디렉토리(222)로부터 획득될 수 있다.
스냅샷 파티션(230)에는 스냅샷 디렉토리들(224, 226, 228) 각각에 마운트(mount)된 마운트 디렉토리들(231, 232, 233)이 생성될 수 있다. 예를 들어, 마운트 디렉토리 M0(231)는 스냅샷 디렉토리 S0(224)에 마운트될 수 있다. 마운트 디렉토리(M1)은 스냅샷 디렉토리 S1(226)에 마운트될 수 있다. 청크가 변경 전 복사될 때, 스냅샷 파티션(230)은 마운트 디렉토리들(231, 232, 233)을 통해 소스 파티션(220)에 저장된 파일들의 청크들에 접근할 수 있다.
비트맵(236)은 각 스냅샷 별로 어느 청크가 변경 전 복사되었는지에 대한 정보를 포함할 수 있다. 비트맵(236)에서, 변경 전 복사가 이루어진 청크에 대응하는 성분과 변경 전 복사가 이루어지지 않은 청크에 대응하는 성분에는 서로 다른 인덱스가 부여될 수 있다. 파일 경로 테이블(234)은 CoW 공간(238)에 저장된 청크들 각각의 접근 경로에 대한 색인 정보를 저장할 수 있다. 색인 정보는 파일 경로에 대한 해쉬 인덱스(hash index)를 포함할 수 있다.
파일 경로 테이블(234)은 변경 전 복사가 이루어진 청크들 각각의 경로에 대한 색인 정보와, 비트맵(236)에서 해당 청크에 대응하는 인덱스를 매칭하여 저장할 수 있다. 스냅샷 장치는 접근하고자 하는 청크의 파일 경로를 키(key)로 하여 파일 경로 테이블에서 키와 매칭되는 해쉬 인덱스를 검색할 수 있다. 그리고, 비트맵(236)에서 접근하고자 하는 청크에 대응하는 인덱스를 확인할 수 있다.
스냅샷 장치는, 파일 경로 테이블(234)과, 비트맵(236)을 이용하여, 접근하고자 하는 스냅샷의 청크를 용이하고 빠르게 접근할 수 있다. 또한, 스냅샷 장치는 비트맵(236)으로부터 청크가 특정 스냅샷에서 변경 전 복사 되었는지 여부를 용이하게 판단할 수 있다.
시스템 콜 후킹(System call hooking hooking) 매니저(256)는 소스 파티션(220)에 저장된 파일의 컨텐츠나, 소스 디렉토리의 구조를 변경하는 시스템 콜(System call)을 가로채기(hooking) 할 수 있다. 시스템 콜 후킹 매니저(256)는 시스템 콜을 가로채기 하여, 로그 레코드(log record)를 생성할 수 있다. 시스템 콜 후킹 매니저(256)는 후킹한 시스템 콜이 디렉토리 구조를 변경하는 경우 변경 후 이미지를 포함하는 로그 레코드를 생성하고, 시스템 콜이 파일의 컨텐츠를 변경하는 경우, 변경 전 이미지를 포함하는 로그 레코드를 생성할 수 있다.
시스템 콜 후킹 매니저(256)는 변경 연산을 분석함으로써 어떤 파일의 어떤 청크에 대한 변경인지를 확인할 수 있고, CoW가 필요한지를 먼저 확인할 수 있다. 이를 위해 시스템 콜 후킹 매니저(256)는 파일 별 비트맵 인덱스에 접근하여 CoW 필요 여부를 판단할 수 있다.
시스템 콜 후킹 매니저(256)는 생성한 로그 레코드를 커널 단의 CoW 매니저(254)에게 전달할 수 있다. 유저 단 및 커널 단의 CoW 매니저(254)는 로그 레코드로부터 시스템 콜에 의해 어느 파일의 어느 부분이 변경되는지 또는 소스 디렉토리가 어떻게 변경 되는지 등을 파악할 수 있다. CoW 매니저(254)는 로그 레코드에 기초하여, 스냅샷 별로 변경 전 복사할 영역을 결정할 수 있다. CoW 매니저(254)는 후술하는 청크 단위로 변경 전 복사할 영역을 결정할 수 있다.
스냅샷 장치는 소스 디렉토리 별로 서로 다른 복수의 시점에서 스냅샷을 생성할 수 있다. 스냅샷은 주기적으로, 혹은 비주기적으로 생성될 수 있다. 스냅샷 장치가 각각의 스냅샷을 생성하고 관리하는 과정은 도 3과 같이 나타낼 수 있다.
도 3은 본 발명의 실시예에 따른 스냅샷 장치가 스냅샷을 생성 및 관리하는 과정을 나타낸 순서도이다. 도 3에서는 하나의 스냅샷을 생성하고 관리하는 과정을 나타냈다. 스냅샷 장치는 시간의 흐름에 따라, 서로 다른 시점에서 복수의 스냅샷들을 생성할 수 있다.
도 3을 참조하면, S110 단계에서, 스냅샷 장치는 소스 파티션(220)에 스냅샷 디렉토리를 생성할 수 있다. 스냅샷 장치는 스냅샷을 생성하는 시점에서, 소스 디렉토리의 구조 및 소스 디렉토리의 파일 하드링크(hardlink)를 복사함으로써, 스냅샷 디렉토리를 생성할 수 있다. 파일 하드링크는 소스 디렉토리에 속한 파일에 접근하기 위한 링크를 제공할 수 있다.
스냅샷 디렉토리의 생성이 완료된 시점에서, 소스 디렉토리와 스냅샷 디렉토리는 같아야 한다. 그래야 소스 디렉토리에 속한 파일의 변경 전 복사를 스냅샷 파티션에 반영할 수 있다.
그런데, 소스 디렉토리를 복사하여 스냅샷 디렉토리를 생성하는 데는 유한한 시간이 소요된다. 소스 디렉토리를 복사하는 동안 소스 디렉토리의 구조가 변경될 수 있다. 이로 인해 스냅샷 디렉토리의 복사가 완료된 시점에서 스냅샷 디렉토리의 구조와 소스 디렉토리의 구조가 서로 다를 수 있다.
도 4는 스냅샷 디렉토리의 구조와 소스 디렉토리의 구조가 다른 예들을 나타낸 개념도이다.
도 4를 참조하면, 스냅샷 장치가 소스 디렉토리에서 박스로 표시한 영역의 복사를 완료하고, “source_path/A/D/" 디렉토리 및 하위 디렉토리를 복사를 완료하기 전에 “source_path/A/B/new"경로에 새로운 파일이 생성될 수 있다. 즉, 소스 디렉토리의 복사가 완료되기 전에, 소스 디렉토리의 구조를 변경하는 시스템 콜이 발생할 수 있다. 이 경우, 스냅샷 디렉토리 완료 시점에서, new 파일의 하드링크는 복사되지 않을 수 있다. 따라서, 스냅샷 디렉토리 생성 후, new 파일에 변경 연산이 가해지는 경우, 해당 부분을 스냅샷에 반영하지 못할 수 있다.
따라서, 도 3의 S120 단계를 수행하기 전에 스냅샷 디렉토리를 보정할 필요가 있다.
도 5는 스냅샷 디렉토리의 보정 과정을 나타낸 흐름도이다.
도 5를 참조하면, S112 단계에서, 스냅샷 장치는 소스 디렉토리의 구조 복사를 완료한 시점과 가로채기한 시스템 콜의 로그 레코드 생성 시점을 비교할 수 있다.
S114 단계에서, 스냅샷 장치는, 소스 디렉토리 구조를 복사하기 시작한 시점으로부터 소스 디렉토리 구조 복사가 완료되기 전에 소스 디렉토리 구조를 변경하는 시스템 콜이 발생하였는지 여부를 판단할 수 있다. 스냅샷 장치는 소스 디렉토리 구조 복사 시점과, 로그 레코드의 생성 시점을 비교할 수 있다. 만약, 소스 디렉토리 구조 복사 완료 전에 소스 디렉토리 구조를 변경하는 시스템 콜의 로그 레코드가 생성되지 않은 경우, 스냅샷 장치는 스냅샷 디렉토리 보정 절차를 종료할 수 있다.
소스 디렉토리 구조 복사 완료 전에 소스 디렉토리 구조를 변경하는 시스템 콜이 발생한 경우, S116 단계에서, 스냅샷 장치는 스냅샷 디렉토리를 보정할 수 있다. 예를 들어, 도 3에서와 같이 new 파일이 스냅샷 디렉토리에 미반영 된 경우, 스냅샷 장치는 가로채기에 의해 획득한 로그 레코드 creat("/source_path/A/B/new")를 스냅샷 디렉토리에 대해 재실행(redo) 할 수 있다. 여기서 로그 레코드 creat("/source_path/A/B/new")는 new 파일을 생성하는 시스템 콜의 로그 레코드일 수 있다. 스냅샷 장치는 소스 디렉토리를 복사하는 동안 미 반영된 로그 레코드 creat("/source_path/A/B/new")를 재실행 함으로써, 스냅샷 디렉토리의 구조와 소스 디렉토리의 구조를 일치시킬 수 있다.
다수의 스냅샷들을 생성하는 경우에 하나의 소스 디렉토리에 대해서 다수의 스냅샷 디렉토리가 생성될 수 있다. 이때 다수의 스냅샷 디렉토리의 구조는 대부분 유사할 수 있다. 다수 스냅샷 디렉토리를 효과적으로 유지하기 위해서 최초에 생성된 스냅샷 디렉토리를 기준으로 이후에 생성되는 다른 시점의 스냅샷 디렉토리에 대해서는 차이가 있는 부분만 유지하는 방법이 사용될 수 있다.
다시 도 3을 참조하면, S120 단계에서, 스냅샷 장치는 소스 파티션(230)에 마운트 디렉토리를 생성할 수 있다. 마운트 디렉토리는 S110 단계에서 생성한 스냅샷 디렉토리에 마운트 될 수 있다. 스냅샷 파티션(230)은 마운트 디렉토리를 통해 소스 파티션(220)에 저장된 파일에 접근할 수 있다.
S130 단계에서, 스냅샷 장치는 소스 파티션(220)의 소스 디렉토리에 속한 파일 별로 각 파일에 대응하는 공파일을 스냅샷 파티션(230)의 CoW 공간(238)에 생성할 수 있다. 공파일은 데이터를 포함하지 않을 수 있다. 스냅샷 장치는 각 스냅샷 별로 공파일을 생성할 수 있다. 공파일의 이름은 소스 디렉토리에 속한 파일 이름에 대응할 수 있다. 예를 들어, 소스 디렉토리에 속한 파일 이름이 '1.txt'인 경우, 스냅샷 S0, S1 ... 각각에서 '1.txt'에 대응하는 공파일의 이름은 아래와 같을 수 있다.
1.txt_S0, 1.txt_S1, …
스냅샷 장치는 소스 디렉토리에 속한 파일 별로 각 파일의 크기에 대응하는 비트맵을 스냅샷 파티션(230)에 생성할 수 있다. 비트맵의 크기는 해당 파일에 포함되는 청크의 개수에 따라 결정될 수 있다. 스냅샷 장치는 파일들을 청크 단위로 관리할 수 있다. 청크의 크기는 시스템 설정에 따라 미리 정해질 수 있다.
예를 들어, 청크의 크기가 1MB이고, 파일의 크기가 5MB인 경우, 스냅샷 장치는 파일을 5개의 청크로 나누어 관리할 수 있다. 그리고, 스냅샷 장치는 해당 파일에 대응하는 비트맵의 크기를 5로 설정할 수 있다. 다른 예로, 청크의 크기가 1MB이고 파일의 크기가 3.5MB인 경우, 스냅샷 장치는 파일을 4개의 청크로 나누어 관리할 수 있다. 그리고, 스냅샷 장치는 해당 파일에 대응하는 비트맵의 크기를 4로 설정할 수 있다. 파일의 크기가 청크의 크기의 정수 배가 아닌 경우, 스냅샷 장치는 마지막 청크의 끝은 패딩(padding)으로 처리할 수도 있다.
S140 단계에서, 스냅샷 장치는 소스 파티션의 시스템 콜을 가로채기(hooking) 할 수 있다. 스냅샷 장치는 가로채기한 시스템 콜로부터 소스 디렉토리의 파일 중 어느 파일이 변경되는 지를 확인할 수 있다. 스냅샷 장치는 가로채기한 시스템 콜로부터 파일에서 어느 부분이 변경되는 지를 확인할 수 있다. 스냅샷 장치는 파일의 변경 부분에 해당하는 청크가 어느 청크인 지를 확인할 수 있다. 스냅샷 장치는 해당 청크를 CoW 해야 하는지 확인할 수 있다. 시스템 콜의 가로채기는 S140 단계에서뿐만 아니라, 다른 시점에서도 지속적으로 이루어질 수 있다. 예를 들어, S110 단계에서 스냅샷 디렉토리를 생성하는 동안에도 스냅샷 장치는 시스템 콜을 가로채기하고, 이로부터 생성된 스냅샷 디렉토리의 보정 여부를 판단할 수 있다.
S150 단계에서, 스냅샷 장치는 가로채기한 시스템 콜에 기초하여, 소스 파티션(220)에서 변경 전 복사(Copy on Write)할 영역을 결정할 수 있다. 변경 전 복사란 시스템 콜에 의해 파일이 변경 되는 경우, 변경을 수행하기 전의 파일 내용을 복사해 두는 것을 의미할 수 있다. 스냅샷 장치는 변경 전 복사 영역(이하 편의상 CoW 영역이라 함)을 청크 단위로 결정할 수 있다. 스냅샷 장치는 파일 별로, 가로채기 한 시스템 콜에 의해 변경 전 복사되는 청크를 결정할 수 있다. 스냅샷 장치는 마운트 디렉토리를 통해 스냅샷 파티션(230)이 변경 전 복사되는 청크에 접근하도록 할 수 있다.
S160 단계에서, 스냅샷 장치는 CoW 영역에 해당하는 데이터를 변경 전 복사하여 스냅샷 파티션(230)의 CoW 공간(238)에 저장할 수 있다. 이 과정에서 스냅샷 파티션(230)은 마운트 디렉토리를 통해 소스 파티션(220)에 저장된 파일의 청크에 접근할 수 있다. 스냅샷 장치는 소스 파티션(220)에서 변경되는 파일에 대응하는 공파일에 변경 전 복사한 청크를 저장할 수 있다. 공파일은 스냅샷 파티션(230)에 저장되어 있을 수 있다. 스냅샷 장치는 스냅샷 생성시, 소스 파티션(220)에 저장된 모든 파일을 복사하지 않고, 시스템 콜에 의해 변경되는 청크만 변경 전 복사하여, 스냅샷 파티션(230)의 CoW 공간(238)에 저장할 수 있다. 따라서, 스냅샷 장치는 복사 과정에 필요한 시간 및 연산을 줄일 수 있다. 또한, 스냅샷 장치는 스냅샷 생성을 위해 필요한 저장 공간의 양을 줄이고 효율적으로 스냅샷을 생성할 수 있다.
스냅샷 장치는 변경 전 복사된 청크를 고려하여, 비트맵의 인덱스를 변경할 수 있다. 스냅샷 장치는 비트맵의 성분들 중, 변경 전 복사된 청크에 대응하는 성분의 인덱스를 변경할 수 있다. 예를 들어, 비트맵에서 변경 전 복사된 청크에 대응하는 성분의 인덱스는 '1'이고, 변경 전 복사되지 않은 청크에 대응하는 성분의 인덱스는 '0'일 수 있다. 물론, 이는 예시적인 것에 불과할 뿐 반대의 경우도 가능하다. 스냅샷 장치가 변경 전 복사된 청크에 대응하는 비트맵의 인덱스를 변경함으로써, 후술하는 소스 파티션(220)의 특정 시점의 스냅샷에 효과적으로 접근할 수 있다.
이하에서는 청크 단위로 스냅샷 장치가 변경 전 복사 영역을 선택하고, 변경 전 복사를 수행하는 과정을 보다 상세히 설명한다.
도 6은 스냅샷 장치가 청크 단위로 변경 전 복사를 수행하는 것을 나타낸 개념도이다. 도 6에서는 하나의 파일 '1.txt'에 포함된 청크들(C1, C2, C3, C4)을 나타냈다.
도 6을 참조하면, 스냅샷 장치는 T0 시점에서 스냅샷 S0를 생성하고, T4 시점에서 스냅샷 S1을 생성하고, T8 시점에서 스냅샷 S2를 생성하고, T12 시점에서 스냅샷 S3를 생성할 수 있다. 스냅샷 장치는 T0 시점부터 T4 시점까지 스냅샷 S0를 관리할 수 있다. 스냅샷 장치는 T0 시점부터 T4 시점까지 스냅샷 S0에 대해 변경 전 복사 작업을 수행할 수 있다. 스냅샷 장치는 T0 시점부터 T4 시점까지 스냅샷 S0의 CoW 공간에 변경 전 복사한 청크를 저장할 수 있다. 마찬가지로, 스냅샷 장치는 T4 시점부터 T8 시점까지 스냅샷 S1을 관리할 수 있다.
T1 시점에서 소스 파티션(220)의 파일 1.txt를 변경하는 시스템 콜이 발생할 수 있다. 시스템 콜에 의해 청크 C1 및 청크 C2의 일부가 변경될 수 있다. 스냅샷 장치는 청크 C1 및 청크 C2의 일부를 변경하는 시스템 콜을 가로채기 할 수 있다. 스냅샷 장치는 가로채기한 시스템 콜에 기초하여, 청크 C1 및 청크 C2를 CoW 영역으로 결정할 수 있다. 스냅샷 장치는 청크 C1 및 청크 C2를 변경 전 복사할 수 있다. 스냅샷 장치는, 청크 C1 및 청크 C2가 변경되기 전에 청크 C1 및 청크 C2를 복사하여, CoW 공간(238)에 저장된 공파일 1.txt_S0에 저장할 수 있다. 이로 인해, 파일 1.txt_S0는 더 이상 공파일이 아니게 되며, 데이터를 포함할 수 있다. 스냅샷 장치는 모든 청크들을 복사하지 않기 때문에, 저장공간을 효율적으로 이용할 수 있다.
T2 시점에서 소스 파티션(220)의 파일 1.txt의 청크 C2를 변경하는 시스템 콜이 발생할 수 있다. 그런데, 청크 C2는 이미 T1 시점에서 변경 전 복사가 이루어졌으므로, 스냅샷 장치는 청크 C2에 대한 변경 전 복사를 수행하지 않을 수 있다.
T3 시점에서 청크 C2의 일부를 변경하는 시스템 콜 및 청크 C5를 추가하는 시스템 콜이 발생할 수 있다. 청크 C2는 이미 T1 시점에서 변경 전 복사가 이루어졌으므로, 스냅샷 장치는 청크 C2에 대한 변경 전 복사를 수행하지 않을 수 있다. 또한, 청크 C5는 새로 추가된 청크로서, 변경 전 복사할 내용이 없기 때문에 이에 대해서도 변경 전 복사가 수행되지 않을 수 있다. T4 시점에서 새로운 스냅샷 S1이 생성될 수 있다. 스냅샷 장치는 T4 시점부터 스냅샷 S0의 관리를 종료할 수 있다. 따라서, 스냅샷 S0의 파일 1.txt_S0는 더 이상 변경되지 않을 수 있다.
스냅샷 S1이 생성된 후, T5 시점에서 청크 C2 및 청크 C3 중 일부를 변경하는 시스템 콜이 발생할 수 있다. 스냅샷 장치는 청크 C2 및 청크 C3의 일부를 변경하는 시스템 콜을 가로채기 할 수 있다. 스냅샷 장치는 가로채기한 시스템 콜에 기초하여, 청크 C2및 청크 C3를 CoW 영역으로 결정할 수 있다. 스냅샷 장치는 청크 C2 및 청크 C3를 변경 전 복사할 수 있다. 스냅샷 장치는, 청크 C2 및 청크 C3가 변경되기 전에 청크 C1 및 청크 C2를 복사하여, CoW 공간(238)에 저장된 공파일 1.txt_S1에 저장할 수 있다. 이로 인해, 파일 1.txt_S1는 더 이상 공파일이 아니게 되며, 데이터를 포함할 수 있다.
T6 시점에서 소스 파티션(220)의 파일 1.txt의 청크 C1을 변경하는 시스템 콜 및 청크 C5를 삭제하는 시스템 콜이 발생할 수 있다. 스냅샷 장치는 가로채기한 시스템 콜에 기초하여, 청크 C1 및 청크 C5를 CoW 영역으로 결정할 수 있다. 스냅샷 장치는 청크 C1 및 청크 C5를 변경 전 복사할 수 있다. 따라서, 소스 파티션(220)에서 T3 시점에 추가된 청크 C5는 T6시점에서, 스냅샷 파티션(230)의 CoW 공간(238)에 저장될 수 있다. 스냅샷 장치는, 청크 C1 및 청크 C5가 변경되기 전에 청크 C1 및 청크 C5를 복사하여, CoW 공간(238)에 저장된 공파일 1.txt_S1에 저장할 수 있다.
T7 시점에서 청크 C2의 일부를 변경하는 시스템 콜이 발생할 수 있다. 청크 C2는 이미 T5 시점에서 변경 전 복사가 이루어졌으므로, 스냅샷 장치는 청크 C2에 대한 변경 전 복사를 수행하지 않을 수 있다. T8 시점에서 새로운 스냅샷 S1이 생성될 수 있다. 스냅샷 장치는 T8 시점부터 스냅샷 S1의 관리를 종료할 수 있다. 따라서, 스냅샷 S0의 파일 1.txt_S1은 더 이상 변경되지 않을 수 있다.
도 7은 도 6에서 나타낸 변경 전 복사에 의해, 스냅샷 별로 1.txt 파일에서 변경 전 복사 된 청크들을 나타낸 개념도이다. 도 7에서 Cij는 소스 파티션(220)에 저장된 1.txt의 Tj 시점의 Ci 청크 이미지를 의미한다.
도 7을 참조하면, 스냅샷 S0에서, 1.txt_S0에 첫 번째 청크와 두 번째 청크가 변경 전 복사되어 저장될 수 있다. 파일 헤더가 추가될 수 있으며 파일 헤더는 청크의 개수를 나타낼 수 있다. 1.txt_S0의 첫 번째 청크에는 C10가 저장되고, 두 번째 청크에는 C20가 저장될 수 있다. 즉, 1.txt_S0의 첫 번째 청크에는 T0시점에서 소스 파티션(220)의 1.txt의 첫 번째 청크가 저장되고, 1.txt_S0의 두 번째 청크에는 T0시점에서 소스 파티션(220)의 1.txt의 두번째 청크가 저장될 수 있다.
스냅샷 S1에서, 1.txt_S1에 첫 번째 청크와 두 번째 청크가 변경 전 복사되어 저장될 수 있다. 1.txt_S1의 첫 번째 청크에는 C11이 저장되고, 두 번째 청크에는 C23가 저장되고, 세 번째 청크에는 C30이 저장되고, 다섯번째 청크에는 C53이 저장될 수 있다. 즉, 1.txt_S1의 첫 번째 청크에는 T1시점에서 1.txt의 첫 번째 청크가 저장될 수 있다. 왜냐하면, T4 시점 이전에 마지막으로 청크 C1이 변경된 것이 T1 시점이고, T4 시점 이전에 마지막으로 청크 C2가 변경된 것이 T3 시점이고, T4 시점 이전에 마지막으로 청크 C5가 변경된 시점이 T3 시점이기 때문이다.
스냅샷 S2에서 1.txt_S2에 세 번째 청크와 네 번째 청크가 변경 전 복사되어 저장될 수 있다. 1.txt_S1의 세 번째 청크에는 C35가 저장되고, 네 번째 청크에는 C40이 저장될 수 있다. 왜냐하면, T8 시점 이전에 마지막으로 청크 C3가 변경된 것은 T5 시점이기 때문이다.
도 8은 파일 '1.txt'의 변경 전 복사 히스토리를 기록한 비트맵을 나타낸 개념도이다.
도 8을 참조하면, 스냅샷 S0에서 첫 번째, 두 번째 청크가 변경 전 복사되었으므로 비트맵의 첫 번째, 두 번째 성분의 인덱스가 '1'이고, 세 번째, 네 번째 성분의 인덱스는 '0'일 수 있다. 마찬가지로 다른 스냅샷들에 대해서도 변경 전 복사된 청크에 대응하는 성분들의 인덱스는 '1'이고, 나머지 성분들의 인덱스는 '0'일 수 있다. 스냅샷 장치는 후술하는 특정 시점의 소스 파티션(220)의 기록을 복원하는 과정에서 비트맵을 이용하여, 어느 스냅샷의 어느 청크에 접근할 지를 결정할 수 있다.
이하에서는 생성된 스냅샷들을 이용하여, 스냅샷 장치가 특정 시점에서의 소스 파티션(220)의 기록을 복원하는 방법에 관하여 설명한다.
도 9는 스냅샷 장치가 CoW 공간(238)에 저장된 청크들에 접근하는 방식을 나타낸 개념도이다.
도 9를 참조하면, 스냅샷 장치는 파일 경로 테이블(234)과, 비트맵(236)을 이용하여 CoW 공간(238)에 저장된 청크들에 접근할 수 있다. 비트맵은 비트열로 저장될 수 있다. 스냅샷 장치는 헤더 정보에서, 각 스냅샷 별로 파일에 포함된 청크 개수를 참조하여, 비트열을 스냅샷 별로 구분할 수 있다. 예를 들어, 스냅샷 장치는 비트열에서 각각의 스냅샷에 해당하는 비트의 시작점이 어디인지를 판단할 수 있다.
파일 경로 테이블(234)은 변경 전 복사가 이루어진 청크들 각각이 포함된 파일 경로에 대한 색인 정보와, 비트맵(236)에서 해당 청크에 대응하는 인덱스를 매칭하여 저장할 수 있다. 스냅샷 장치는 접근하고자 하는 청크의 파일 경로를 키(key)로 하여 파일 경로 테이블에서 키와 매칭되는 해쉬 인덱스를 검색할 수 있다. 그리고, 비트맵(236)에서 접근하고자 하는 청크에 대응하는 인덱스를 확인할 수 있다.
도 10은 스냅샷이 T0, T4, T8, T12 시점에 S0 ~ S3까지 생성된 이후에 스냅샷 장치가 T0 시점에 생성된 스냅샷 S0의 1.txt 파일에 접근하는 방법을 나타낸 개념도이다.
스냅샷 장치는 청크 단위로 소스 파티션(220)의 스냅샷에 접근할 수 있다. 예를 들어, 스냅샷 장치는 T0 시점에 생성된 S0의 1.txt 파일에 접근할 수 있다. 스냅샷 장치는 스냅샷 S0에 접근하기 위해 1.txt의 청크를 확인함으로써 CoW된 청크는 CoW 공간에서 가져오고 그렇지 않은 청크는 소스 파티션에서 가져올 수 있다. 예를 들어, 도 10에서 보는 바와 같이, 스냅샷 S0의 비트맵에서 첫 번째 청크에 대한 인덱스와 두 번째 청크에 대한 인덱스가 '1'일 수 있다. 따라서, 스냅샷 장치는 CoW 영역에서 첫 번째 청크와 두 번째 청크에 접근할 수 있다.
세 번째 청크의 경우, 스냅샷 S0에서 비트맵의 인덱스가 '0'일 수 있다. 그리고, 스냅샷 S1에서 처음으로 세 번째 청크에 대한 인덱스가 '1'일 수 있다. 즉, 스냅샷 S0을 위한 T0 시점의 세 번째 청크는 스냅샷 S1이 생성된 이후에 가장 먼저 변경 전 복사되었을 수 있다. 따라서, 스냅샷 장치는 스냅샷 S1에 CoW된 세 번째 청크에 접근할 수 있다.
네 번째 청크의 경우, 스냅샷 S0 및 스냅샷 S1에서 비트맵의 인덱스가 '0'일 수 있다. 그리고, 스냅샷 S2에서 처음으로 세 번째 청크에 대한 인덱스가 '1'일 수 있다. 즉, S0을 위한 T0 시점의 네 번째 청크는 스냅샷 S2가 생성된 이후에 가장 먼저 변경 전 복사되었을 수 있다. 따라서, 스냅샷 장치는 스냅샷 S2에 CoW된 네 번째 청크에 접근할 수 있다.
도 11은 스냅샷 장치가 T4 시점에서의 1.txt 파일에 대한 스냅샷에 T12 이후에 접근하는 방법을 나타낸 개념도이다.
스냅샷 장치는 청크 단위로 소스 파티션(220)에 대한 T5 시점의 스냅샷에 접근할 수 있다. 스냅샷 장치는 T4 시점에 1.txt 파일의 스냅샷에 접근할 수 있다. 스냅샷 장치는 T4 시점의 스냅샷 S1의 1.txt에 접근하기 위해서 1.txt의 CoW된 청크는 CoW 영역에서 가져올 수 있고, 그렇지 않은 청크는 소스 파티션에서 가져올 수 있다. 예를 들어, 도 11에서 보는 바와 같이, 스냅샷 S1의 비트맵에서 첫 번째 청크에 대한 인덱스, 두 번째 청크에 대한 인덱스, 세 번째 청크에 대한 인덱스 및 다섯 번째 청크에 대한 인덱스가 '1'일 수 있다. 따라서, 스냅샷 장치는 스냅샷 S1의 CoW 공간에서 첫 번째 청크, 두 번째 청크, 세 번째 청크 및 다섯 번째 청크에 접근할 수 있다.
네 번째 청크의 경우, 스냅샷 S1에서 비트맵의 인덱스가 '0'일 수 있다. 그리고, T4 시점 이후 처음으로 스냅샷 S2에서 네 번째 청크에 대한 인덱스가 '1'일 수 있다. 즉, T5 시점의 스냅샷을 위한 네 번째 청크는 스냅샷 S2에서 가장 먼저 변경 전 복사되었을 수 있다. 따라서, 스냅샷 장치는 스냅샷 S2부터의 CoW 공간에서 네 번째 청크에 접근할 수 있다.
도 12는 스냅샷 장치가 비트맵을 이용하여 스냅샷을 위한 CoW 청크에 접근하는 방법의 제1 실시예를 나타낸 개념도이다.
도 12를 참조하면, 스냅샷 장치는 T0시점의 스냅샷 S0의 파일 '1.txt'의 첫 번째 청크에 접근할 수 있다. 스냅샷 장치는 S0가 T0시점에서 생성된 이후, '1.txt'의 첫 번째 청크가 어느 시점에서 가장 먼저 변경 전 복사되었는 지 여부를 비트맵으로부터 판단할 수 있다. 예를 들어, 스냅샷 장치는 비트맵의 헤더를 참조하여, 각 스냅샷 별로 파일 '1.txt'의 청크 개수가 4, 5, 4, 3 이라는 것을 알아낼 수 있다. 스냅샷 장치는 각 스냅샷 별로 1.txt'의 청크 개수를 고려하여, 비트열 '1000100001000100' 및 파일 '1.txt'에 대한 비트맵의 비트열에 대해 비트별 AND 연산(Bitwise AND operation)을 수행할 수 있다. 스냅샷 장치는 비트별 AND 연산에서 가장 먼저 '1' 성분이 출력되는 스냅샷을 확인할 수 있다. 예를 들어, 스냅샷 장치는 가장 먼저 '1' 성분이 출력되는 스냅샷 S0에서 '1'성분에 대응하는 청크 C10에 접근함으로써, T0시점에서의 파일 '1.txt'의 첫 번재 청크를 복원할 수 있다.
도 13은 스냅샷 장치가 비트맵을 이용하여 스냅샷에 접근하는 방법의 제2 실시예를 나타낸 개념도이다.
도 13을 참조하면, 스냅샷 장치는 T4 시점의 스냅샷 S1의 파일 '1.txt'전체에 접근할 수 있다. 스냅샷 장치는 비트맵의 헤더로부터 T4 시점에 생성된 스냅샷 S1의 청크들에 대응하는 성분들을 비트맵에서 결정할 수 있다. 스냅샷 장치는 스냅샷 S1의 청크들에 대응하는 성분들에 인덱스 '1'을 부여한 비트열 '0000111110000000'을 생성할 수 있다. 스냅샷 장치는 비트열 '0000111110000000' 및 파일 '1.txt'에 대한 비트맵의 비트열에 대해 비트별 AND 연산을 수행할 수 있다. 스냅샷 장치는 '0000111010000000'결과를 얻을 수 있다. AND 연산의 결과로부터 스냅샷 장치는 '1.txt'의 1, 2, 3, 5번째 청크가 스냅샷 S1 생성 이후 S2가 생성되기 전에 복사되었음을 알 수 있다.
스냅샷 장치는 스냅샷 S2 생성 이후에 발생한 청크 CoW를 확인하기 위해, 다음 스냅샷(스냅샷 S2)에서 4번째 청크에 대한 인덱스에 '1'을 부여한 비트열 '0000000000001000'및 '1.txt'에 대한 비트맵의 비트열에 대해 비트별 AND 연산을 수행할 수 있다. 스냅샷 장치는 '0000000000001000'결과를 얻을 수 있다. 스냅샷 장치는 계산 결과에 기초하여, 스냅샷 S2에서 T4 시점 이후, 최초로 네 번째 청크가 변경 전 복사되었다고 판단할 수 있다. 따라서, 스냅샷 장치는 스냅샷 S2의 C40 청크로부터 1.txt 파일의 네 번째 청크에 접근할 수 있다.
도 14는 스냅샷 장치가 비트맵을 이용하여 스냅샷에 접근하는 방법의 제3 실시예를 나타낸 개념도이다.
도 14를 참조하면, 스냅샷 장치는 T0 시점 이후, 파일 '1.txt'의 첫 번째 청크의 변경 히스토리를 모두 접근할 수 있다. 스냅샷 장치는 비트맵의 헤더로부터, 각 스냅샷의 첫 번째 청크에 해당하는 성분에 인덱스 '1'을 부여한 비트열 '10001000001000100'을 생성할 수 있다. 스냅샷 장치는 비트열 '10001000001000100' 및 파일 '1.txt'에 대한 비트맵의 비트열에 대해 비트별 AND 연산을 수행할 수 있다. 스냅샷 장치는 '1000100000000000'결과를 얻을 수 있다. 스냅샷 장치는 1000100000000000'로부터 스냅샷 S0 및 스냅샷 S1에서 첫 번째 청크가 변경 전 복사되었다는 것을 확인할 수 있다.
스냅샷 장치는 스냅샷 S0 및 스냅샷 S1으로부터 파일 '1.txt'의 첫 번째 청크의 변경 히스토리를 획득할 수 있다. 스냅샷 장치는 스냅샷 S0에서 청크 C10를 획득하고, 스냅샷 S1에서 청크 C11을 획득할 수 있다.
상술한 실시예들은 예시적인 것에 불과할 뿐 실시예가 이에 제한되는 것은 아니다. 예를 들어, 스냅샷 장치는 다른 방식으로 비트맵을 이용할 수도 있다. 예를 들어, 스냅샷 장치는 비트맵의 비트열에서 '1'에 해당하는 청크들을 모두 액세스할 수도 있다. 이 경우, 스냅샷 장치는 각 스냅샷 별로 변경 전 복사된 청크들을 모두 불러올 수 있다. 스냅샷 장치는 파일 별로 청크들 각각의 변경 히스토리를 모두 복원할 수도 있다.
도 15는 스냅샷 장치가 스냅샷을 삭제하는 과정을 나타낸 개념도이다.
도 15를 참조하면, 스냅샷 장치는 스냅샷 파티션(230)에 저장 공간이 부족할 경우, 일부 스냅샷을 삭제할 수 있다. 스냅샷 장치는 생성 시점이 오래된 스냅샷부터 순차적으로 삭제할 수 있다. 예를 들어, T4 시점 이후, 소스 파티션(220)의 기록을 복원하기 위해서는, T4 시점부터 생성된 스냅샷 S1, 스냅샷 S2 ... 등이 필요할 수 있으며, T4 시점 이전에 생성된 스냅샷 S0는 필요하지 않을 수 있다. 따라서, 스냅샷 장치는 오래된 스냅샷부터 순차적으로 삭제하면, 남겨둔 스냅샷들의 생성 시점부터의 기록은 여전히 복원할 수 있다.
이상에서 도 1 내지 도 15를 참조하여 본 발명의 실시예들에 따른 스냅샷 장치 및 스냅샷 방법에 관하여 설명하였다. 상술한 실시예들에 따르면, 스냅샷 장치가 복수의 스냅샷들을 저장함으로써, 여러 시점에서의 소스 파티션 기록을 복원할 수 있다. 또한, 스냅샷 별로, 소스 파티션의 모든 기록을 저장하지 않고, 변경 전 복사 영역을 선택하고, 청크 단위로 변경 전 복사를 수행함으로써, 스냅샷 기록의 복사 및 저장 과정이 짧아질 수 있다. 또한, 스냅샷 별로 요구되는 저장 공간(저장 용량)을 줄일 수 있다. 스냅샷 장치는 변경 전 복사된 청크들을 식별하기 위해 비트맵을 생성할 수 있고, 비트맵을 이용하여 변경 전 복사된 청크들에 접근함으로써, 소스 파티션에 대한 다수 시점의 스냅샷을 접근 하는 것이 용이해질 수 있다.
또한, VFS 수준에서 파일시스템, 논리 볼륨, 스토리지 하드웨어에 독립적으로 스냅샷을 생성 및 관리 할 수 있으며, 페이지 캐시(Page Cache)의 변경기록까지 스냅샷에 반영할 수 있기 때문에 데이터의 정합성 유지가 가능하다. 스냅샷 대상에 대한 단위를 파티션, 디렉토리, 파일 단위로 조절 가능하므로, 기존 블록장치 및 파일 시스템 단위의 스냅샷에 비해 유연하게 데이터에 대한 스냅샷을 생성 및 유지할 수 있다.
본 발명에 따른 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬, 램, 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러(compiler)에 1의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 스냅샷 장치에 의해 수행되는 스냅샷 방법에 있어서,
    복수의 시점들 각각에서, 소스 파티션에 대한 백업 기록을 나타내는 스냅샷을 생성 및 관리하며,
    각각의 스냅샷을 생성 및 관리하는 과정은,
    상기 스냅샷의 생성 시점에서의 상기 소스 파티션의 소스 디렉토리로부터, 스냅샷 디렉토리를 상기 소스 파티션에 생성하는 단계;
    상기 스냅샷 디렉토리에 마운트(mount) 되는 마운트 디렉토리를 스냅샷 파티션에 생성하는 단계;
    상기 소스 파티션의 시스템 콜(system call)을 가로채기(hooking)하는 단계;
    가로채기한 시스템 콜로부터, 상기 소스 파티션에서 변경 전 복사(Copy on Write; CoW) 영역을 결정하는 단계; 및
    상기 소스 파티션에서 상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하는 단계;를 포함하는 스냅샷 방법.
  2. 청구항 1에 있어서,
    상기 스냅샷 디렉토리를 생성하는 단계는,
    상기 스냅샷을 생성하는 시점에서, 상기 소스 디렉토리의 구조 및 상기 소스 디렉토리의 파일 하드링크를 복사함으로써, 상기 스냅샷 디렉토리를 생성하는 스냅샷 방법.
  3. 청구항 1에 있어서,
    상기 각각의 스냅샷을 생성하는 과정은,
    상기 소스 파티션의 디렉토리 구조 복사가 완료된 시점과, 가로채기한 시스템 호출의 로그 레코드 생성 시점을 비교하는 단계;
    상기 소스 파티션의 디렉토리 구조 복사가 완료되기 전에 상기 소스 디렉토리의 구조를 변경하는 로그 레코드가 생성된 경우, 상기 소스 디렉토리의 구조를 변경하는 로그 레코드를 반영하여 상기 스냅샷 디렉토리를 보정하는 단계; 및
    다수의 스냅샷들을 생성하는 경우, 최초 스냅샷 디렉토리와 상기 최초 스냅샷 디렉토리 이후에 생성되는 다른 스냅샷 디렉토리 간에 차이가 있는 부분을 유지하는 단계; 를 더 포함하는 스냅샷 방법.
  4. 청구항 1에 있어서,
    상기 CoW 영역을 결정하는 단계는,
    해당 스냅샷 생성 시점부터 다음 스냅샷 생성 시점까지 가로채기한 시스템 콜에 기초하여 상기 CoW 영역을 결정하는 스냅샷 방법.
  5. 청구항 4에 있어서,
    상기 CoW 영역을 결정하는 단계는,
    상기 소스 파티션에 저장된 파일을 청크(chunk) 단위로 구분하고, 상기 가로채기한 시스템 콜에 의해 변경되는 청크를 상기 CoW 영역으로 결정하는 스냅샷 방법.
  6. 청구항 5에 있어서,
    상기 각각의 스냅샷을 생성하는 과정은,
    상기 소스 파티션에 저장된 파일에 대응하는 공파일을 상기 스냅샷 파티션에 생성하는 단계;를 더 포함하며,
    상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하는 단계는,
    상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 청크를 변경 전 복사(CoW)하고, 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 파일에 대응하는 공파일에 변경 전 복사한 청크를 저장하는 스냅샷 방법.
  7. 청구항 6에 있어서,
    상기 복수의 시점들 중 어느 한 시점을 복원 시점으로 하여, 상기 소스 파티션에 대한 다수 시점의 스냅샷에 접근하는 단계;를 더 포함하며,
    상기 소스 파티션의 기록을 복원하는 단계는,
    청크 단위로 상기 소스 파티션의 기록을 복원하며, 상기 복원 시점으로부터 가장 먼저 대상 청크가 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원하는 스냅샷 방법.
  8. 청구항 7에 있어서,
    상기 각각의 스냅샷을 생성하는 과정은,
    상기 스냅샷 생성 시점에서 상기 소스 파티션에 저장된 파일 각각에 포함되는 청크 개수에 대응하는 크기의 비트맵을 상기 스냅샷 파티션에 생성하는 단계;를 포함하는 스냅샷 방법.
  9. 청구항 8에 있어서,
    상기 각각의 스냅샷을 생성하는 과정은,
    상기 스냅샷에서 변경 전 복사한 청크에 대응하는 상기 비트맵의 성분의 인덱스를 변경하는 단계;를 포함하는 스냅샷 방법.
  10. 청구항 9에 있어서,
    상기 소스 파티션에 대한 다수 시점의 스냅샷에 접근하는 단계는,
    상기 비트맵에 기초하여, 상기 대상 청크를 복원하기 위해 어느 시점의 스냅샷을 이용할 지를 결정하는 스냅샷 방법.
  11. 청구항 10에 있어서,
    상기 소스 파티션에 대한 다수 시점의 스냅샷에 접근하는 단계는,
    상기 비트맵으로부터 상기 접근 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사되었는지 여부를 판단하고,
    상기 복원 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사 된 경우, 상기 복원 시점에 대응하는 스냅샷으로부터 상기 대상 청크를 복원하는 스냅샷 방법.
  12. 청구항 10에 있어서,
    상기 소스 파티션에 대한 다수 시점의 스냅샷에 접근하는 단계는,
    상기 복원 시점에 생성된 스냅샷에 상기 대상 청크가 변경 전 복사되지 않은 경우, 상기 복원 시점 이후, 상기 대상 청크가 가장 먼저 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원하는 스냅샷 방법.
  13. 소스 파티션의 백업 기록을 관리하는 스냅샷 장치에 있어서,
    프로세서(processor); 및
    상기 프로세서를 통해 실행되는 적어도 하나의 명령이 저장되는 메모리(memory)를 포함하고,
    상기 적어도 하나의 명령은 복수의 시점들 각각에서, 상기 소스 파티션에 대한 백업 기록을 나타내는 스냅샷을 생성 및 관리하며,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서, 상기 스냅샷의 생성 시점에서의 소스 파티션의 소스 디렉토리로부터, 스냅샷 디렉토리를 상기 소스 파티션에 생성하고; 상기 스냅샷 디렉토리에 마운트(mount) 되는 마운트 디렉토리를 스냅샷 파티션에 생성하고; 상기 소스 파티션의 시스템 콜(system call)을 가로채기(hooking)하고; 가로채기한 시스템 콜로부터, 상기 소스 파티션에서 변경 전 복사(Copy on Write; CoW) 영역을 결정하고; 상기 소스 파티션에서 상기 CoW 영역을 변경 전 복사하여 상기 스냅샷 파티션에 저장하도록 수행되는 스냅샷 장치.
  14. 청구항 13에 있어서,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
    상기 소스 파티션의 디렉토리 구조 복사가 완료된 시점과, 가로채기한 시스템 호출의 로그 레코드 생성 시점을 비교하고; 상기 소스 파티션의 디렉토리 구조 복사가 완료되기 전에 상기 소스 디렉토리의 구조를 변경하는 로그 레코드가 생성된 경우, 상기 소스 디렉토리의 구조를 변경하는 로그 레코드를 반영하여 상기 스냅샷 디렉토리를 보정하도록 수행되는 스냅샷 장치.
  15. 청구항 13에 있어서,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
    해당 스냅샷 생성 시점부터 다음 스냅샷 생성 시점까지 가로채기한 시스템 콜에 기초하여 상기 CoW 영역을 결정하도록 수행되는 스냅샷 장치.
  16. 청구항 15에 있어서,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
    상기 소스 파티션에 저장된 파일을 청크(chunk) 단위로 구분하고, 상기 가로채기한 시스템 콜에 의해 변경되는 청크를 상기 CoW 영역으로 결정하도록 수행되는 스냅샷 장치.
  17. 청구항 16에 있어서,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
    상기 소스 파티션에 저장된 파일에 대응하는 공파일을 상기 스냅샷 파티션에 생성하고; 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 청크를 변경 전 복사(CoW)하고; 상기 시스템 콜에 의해 상기 소스 파티션에서 변경되는 파일에 대응하는 공파일에 변경 전 복사한 청크를 저장하도록 수행되는 스냅샷 장치.
  18. 청구항 17에 있어서,
    상기 적어도 하나의 명령은 복수의 시점들 중 어느 한 시점을 복원 시점으로 하여, 상기 소스 파티션의 기록을 복원하되,
    청크 단위로 상기 소스 파티션의 기록을 복원하며, 상기 복원 시점으로부터 가장 먼저 대상 청크가 변경 전 복사된 스냅샷으로부터 상기 대상 청크를 복원하도록 수행되는 스냅샷 장치.
  19. 청구항 18에 있어서,
    상기 적어도 하나의 명령은 각각의 스냅샷을 생성 및 관리하는 과정에서,
    상기 스냅샷 생성 시점에서 상기 소스 파티션에 저장된 파일 각각에 포함되는 청크 개수에 대응하는 크기의 비트맵을 상기 스냅샷 파티션에 생성하고; 상기 스냅샷에서 변경 전 복사한 청크에 대응하는 상기 비트맵의 성분의 인덱스를 변경하도록 수행되는 스냅샷 장치.
  20. 청구항 19에 있어서,
    상기 적어도 하나의 명령은 상기 비트맵에 기초하여, 상기 대상 청크를 복원하기 위해 어느 시점의 스냅샷을 이용할 지를 결정하도록 수행되는 스냅샷 장치.
KR1020180007617A 2018-01-22 2018-01-22 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법 KR102005727B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180007617A KR102005727B1 (ko) 2018-01-22 2018-01-22 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180007617A KR102005727B1 (ko) 2018-01-22 2018-01-22 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법

Publications (1)

Publication Number Publication Date
KR102005727B1 true KR102005727B1 (ko) 2019-07-31

Family

ID=67473951

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180007617A KR102005727B1 (ko) 2018-01-22 2018-01-22 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법

Country Status (1)

Country Link
KR (1) KR102005727B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101086116B1 (ko) * 2004-02-25 2011-11-25 마이크로소프트 코포레이션 데이터베이스 데이터 복구 시스템 및 방법
KR20120024133A (ko) * 2010-09-06 2012-03-14 삼성전자주식회사 컴퓨터 시스템을 부팅하기 위한 방법과 장치
KR20140032475A (ko) * 2011-06-03 2014-03-14 애플 인크. 복수-단계 복수-소스 백업을 위한 방법 및 장치
KR20150081810A (ko) * 2014-01-07 2015-07-15 한국전자통신연구원 데이터 저장장치에 대한 다중 스냅샷 관리 방법 및 장치
KR101731606B1 (ko) * 2016-01-12 2017-04-28 (주) 글루시스 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101086116B1 (ko) * 2004-02-25 2011-11-25 마이크로소프트 코포레이션 데이터베이스 데이터 복구 시스템 및 방법
KR20120024133A (ko) * 2010-09-06 2012-03-14 삼성전자주식회사 컴퓨터 시스템을 부팅하기 위한 방법과 장치
KR20140032475A (ko) * 2011-06-03 2014-03-14 애플 인크. 복수-단계 복수-소스 백업을 위한 방법 및 장치
KR20150081810A (ko) * 2014-01-07 2015-07-15 한국전자통신연구원 데이터 저장장치에 대한 다중 스냅샷 관리 방법 및 장치
KR101731606B1 (ko) * 2016-01-12 2017-04-28 (주) 글루시스 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법

Similar Documents

Publication Publication Date Title
US20230117542A1 (en) Remote Data Replication Method and System
US10860547B2 (en) Data mobility, accessibility, and consistency in a data storage system
US9842026B2 (en) Snapshot-protected consistency checking file systems
US9785518B2 (en) Multi-threaded transaction log for primary and restore/intelligence
US6678809B1 (en) Write-ahead log in directory management for concurrent I/O access for block storage
US10229009B2 (en) Optimized file system layout for distributed consensus protocol
US9880756B2 (en) Successive data fingerprinting for copy accuracy assurance
US9235479B1 (en) Distributed file system having separate data and metadata and providing a consistent snapshot thereof
JP4336129B2 (ja) 複数のスナップショットを管理するシステム及び方法
US8806115B1 (en) NVRAM data organization using self-describing entities for predictable recovery after power-loss
JP5671615B2 (ja) マップリデュース即時分散ファイルシステム
US7257690B1 (en) Log-structured temporal shadow store
US11093387B1 (en) Garbage collection based on transmission object models
US10628298B1 (en) Resumable garbage collection
US20130159257A1 (en) Systems, Method, and Computer Program Products Providing Sparse Snapshots
US11003554B2 (en) RAID schema for providing metadata protection in a data storage system
US11797397B2 (en) Hybrid NVRAM logging in filesystem namespace
US20170212919A1 (en) Bottom-up dense tree repair technique
US20240028486A1 (en) Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors
US7472307B2 (en) Recovery operations in storage networks
US10331362B1 (en) Adaptive replication for segmentation anchoring type
JP6494787B2 (ja) 分散ストレージシステム
US7930495B2 (en) Method and system for dirty time log directed resilvering
KR102005727B1 (ko) 파일 시스템의 변경 연산 가로채기 기법을 기반으로 한 다중 스냅샷 방법
CN114328373A (zh) 管理文件系统的方法、电子设备和计算机程序产品

Legal Events

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