KR20110055263A - 데이터 처리 장치 및 데이터 처리 방법 - Google Patents

데이터 처리 장치 및 데이터 처리 방법 Download PDF

Info

Publication number
KR20110055263A
KR20110055263A KR1020090112214A KR20090112214A KR20110055263A KR 20110055263 A KR20110055263 A KR 20110055263A KR 1020090112214 A KR1020090112214 A KR 1020090112214A KR 20090112214 A KR20090112214 A KR 20090112214A KR 20110055263 A KR20110055263 A KR 20110055263A
Authority
KR
South Korea
Prior art keywords
chunk
threshold
data
chunks
size
Prior art date
Application number
KR1020090112214A
Other languages
English (en)
Other versions
KR101078586B1 (ko
Inventor
원유집
민재홍
이장선
오상규
Original Assignee
매크로임팩트 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 매크로임팩트 주식회사 filed Critical 매크로임팩트 주식회사
Priority to KR1020090112214A priority Critical patent/KR101078586B1/ko
Publication of KR20110055263A publication Critical patent/KR20110055263A/ko
Application granted granted Critical
Publication of KR101078586B1 publication Critical patent/KR101078586B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

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

Abstract

데이터 처리 장치가 제공된다. 상기 데이터 처리 장치는, 멀티 쓰레드(multi-thread) 환경에서 중복제거를 위한 파일분할을 수행할 수 있다. 상기 데이터 처리 장치는, 파일분할 멀티 쓰레드 처리를 위한 복수 개의 처리부를 포함할 수 있다. 그리고, 상기 복수 개의 처리부의 각각은, 소정의 조건을 만족하는 청크가 생성되기 전까지는 최대 크기 제한 또는 최소 크기 건너뜀 없이 청크 분할을 수행한다.
Figure P1020090112214
파일 분할, 중복 제거, 멀티 쓰레드, Deduplication, Multicore, Chunking

Description

데이터 처리 장치 및 데이터 처리 방법{DATA PROCESSING APPARATUS AND DATA PROCESSING METHOD}
본 발명의 일부 실시예들은 데이터 처리 장치에 연관되며, 보다 특정하게는 멀티 쓰레드 환경에서 중복제거를 위한 파일분할을 수행하는 데이터 처리 장치의 구성 및 동작 방법에 연관된다.
디지털 문명의 발달에 따라, 스토리지(Storage)에 저장되는 데이터의 크기는 급격히 증가하고 있다. J. F, Gants 등은, "The diverse and exploding digital universe: IDC, Tech, Rep., March 2008"에서, 2010년의 전세계 디지털 정보량이 988 엑사바이트(약 1조 기가바이트)에 달할 것으로 예상하기도 했다.
이러한 디지털 정보량의 증가추세는, 사용 가능한 저장장치의 용량을 초과할 수 있다. 더구나, UCC(사용자 제작 콘텐츠) 문화의 확산과, 콘텐츠의 대용량화 등의 추세를 고려하면, 이러한 디지털 정보량의 급격한 증가는 더욱 심각해질 것으로 판단된다.
이러한 문제를 해결하고자 하는 시도 중의 하나가, 중복제거 기술이다. 중복제거 기술은 기존에 저장되었던 데이터와 새로운 데이터 사이에 중복된 부분을 감지하여, 중복 영역은 다시 저장하지 않고 기존에 저장되었던 데이터를 참조하도록 하는 방식에 의해 저장 공간을 절약하는 기술이다.
그러나, 이러한 중복제거 기술은, 상기한 바와 같이 기존에 저장되었던 데이터와 새로운 데이터 사이에 중복된 부분을 감지하는 등, 추가적인 데이터 처리가 요구된다. 따라서, 중복제거 기술을 구현함에 있어서, 데이터 처리의 효율성을 높일 필요가 있다.
데이터의 중복제거 기술의 구현을 위해, 파일분할을 수행하게 되는데, 이러한 파일분할은 연산부하가 높은 작업이므로, 파일분할의 효율성을 크게 증가시킨 데이터 처리 장치 및 데이터 처리 방법이 제공된다.
또한, 중복제거 기술을 위한 파일분할 작업을 병렬적으로 수행하여, 속도를 높이면서도, 파일분할의 오류를 최소화하는 데이터 처리 장치 및 데이터 처리 방법이 제공된다.
본 발명의 일측에 따르면, 데이터로부터 분할된 제1 세그먼트에 세그먼트 스캔을 수행하고 기준 데이터와 일치하는 부분을 청크 분할점으로 결정하여 청크 분할을 수행하여 복수 개의 청크를 생성하는 제1 쓰레드를 처리하는 제1 처리부, 및 상기 데이터로부터 분할된 제2 세그먼트에 세그먼트 스캔을 수행하고 상기 기준 데이터와 일치하는 부분을 청크 분할점으로 결정하여 청크 분할을 수행하여 복수 개의 청크를 생성하는 제2 쓰레드를 처리하는 제2 처리부를 포함하고, 상기 제1 처리부 및 상기 제2 처리부 중 적어도 하나는, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터, 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터를 건너뛰고 세그먼트 스캔을 수행하는, 데이터 처리 장치가 제공된다.
여기서, 상기 제1 처리부 및 상기 제2 처리부 중 적어도 하나는, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터, 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할을 수행하며 세그먼트 스캔을 수행한다.
그리고, 상기 세그먼트 스캔은, 컨텐츠 기반의 스캔 알고리즘에 의해 수행될 수 있으며, 이를테면 BSW(Basic Sliding Window) 알고리즘을 이용하여, 윈도우를 이동하며 윈도우 내의 해시(Hash) 값을 계산함으로써 수행될 수 있다. 이 경우, 상기 계산된 해시 값과 기준 해시 값이 일치하는 경우, 청크 분할점으로 결정되어 청크 분할이 수행된다.
한편, 상기 데이터 처리 장치는 상기 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하고, 상기 복수 개의 세그먼트 중 적어도 일부의 복수 개의 세그먼트에 대해 병렬적인 청킹(chunking)을 수행할 수 있다.
이 경우, 데이터 처리 장치는, 상기 분할된 복수 개의 세그먼트 중, 제1 세그먼트를 상기 제1 처리부에 전달하고, 상기 복수 개의 세그먼트 중 상기 제2 세그먼트를 상기 제2 처리부에 전달하는 마스터 쓰레드를 수행하는 데이터 분할부를 더 포함할 수 있다.
또한, 상기 데이터 처리 장치는 상기 제1 쓰레드의 처리에 의해 생성되는 복수 개의 청크 중 마지막에 생성된 제1 청크와, 상기 제2 쓰레드의 처리 과정에서 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성되기 전에 생성된 청크 중 적어도 하나를 병합하여, 제2 청크를 생성하는 병합부를 더 포함할 수 있다.
또한, 상기 데이터 처리 장치는 상기 제1 쓰레드의 처리에 의해 생성되는 복수 개의 청크, 상기 제2 쓰레드의 처리에 의해 생성되는 복수 개의 청크, 및 상기 병합된 제2 청크에 대하여, 데이터 중복 부분을 제거하는 중복 제거부를 더 포함할 수 있다.
한편, 상기 제1 임계치는 청크 크기의 최소 설정 값이고, 상기 제2 임계치는 청크 크기의 최대 설정 값과 상기 청크 크기의 최소 설정 값의 차이이다.
본 발명의 다른 일측에 따르면, 파일분할 멀티 쓰레드 처리를 위한 복수 개의 처리부를 포함하고, 상기 복수 개의 처리부의 각각은, 데이터로부터 분할된 적어도 하나의 세그먼트에 대해, BSW 알고리즘을 적용하여 해시 값이 기준 해시 값과 일치하는 부분을 청크 분할점으로 하는 청크 분할을 수행하여 복수 개의 청크를 생성하고, 상기 복수 개의 처리부의 각각은, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 각 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터는 바로 건너뛰는, 데이터 처리 장치가 제공된다.
여기서, 상기 복수 개의 처리부의 각각은, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할을 수행한다.
본 발명의 또 다른 일측에 따르면, 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하는 단계, 및 복수 개의 처리부 중 적어도 하나의 처리부가, 상기 복수개의 세그먼트 중 적어도 하나의 세그먼트에 대해, BSW 알고리즘을 적용하여 해시 값이 기준 해시 값과 일치하는 부분을 청크 분할점으로 하는 청크 분할을 수행하는 단계를 포함하고, 상기 청크 분할을 수행하는 단계에서, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 각 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터는 바로 건너뛰는, 데이터 처리 방법이 제공된다.
이 경우, 상기 청크 분할을 수행하는 단계에서, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할이 수행될 수 있다.
한편, 상기 데이터 처리 방법은, 상기 파일분할 멀티 쓰레드에 의해 생성된 복수 개의 청크들 중, 각 세그먼트 내에 크기가 제1 임계치 미만인 청크와, 상기 해시 값 일치에 의한 청크 분할 점이 아닌 부분에서 분할된 청크를 병합하는 단계를 더 포함할 수 있다.
본 발명의 일부 실시예에 따르면, 중복제거 기술의 구현을 위해, 파일분할 을 수행하는 경우, 파일분할의 효율성을 크게 증가된다.
또한, 중복제거 기술을 위한 파일분할이 멀티코어 프로세서에 병렬적으로 수행되는 경우, 파일분할이 빠르게 수행되면서도 잘못된 청크의 생성 등의 오류가 방지된다.
이하에서, 본 발명의 일부 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 장치(100)를 도시한다.
데이터 처리 장치(100)의 데이터 분할부(110)는, 저장부(150)에 저장된 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하는 마스터 쓰레드를 처리한다.
다만, 실시예에 따라서는 마스터 쓰레드는 생략될 수 있으며, 이러한 경우는 데이터 분할부(110)의 구성도 다른 구성에 병합되거나 생략될 수 있다. 보다 상세한 내용은 후술한다.
본 실시예에서는 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하는 상기 마스터 쓰레드는 데이터 분할부(110)에서 처리되고, 이렇게 분할된 각 세그먼트들을 병렬적으로 파일분할 하는 파일분할 쓰레드는 멀티 쓰레드 환경의 처리부(120) 내의 각 처리부들(121 및 122 등)에서 처리된다.
그러나, 본 발명의 다른 실시예에서는 상기 각 처리부들(121 및 122 등) 중의 어느 하나의 처리부가 이러한 마스터 쓰레드를 수행하고, 마스터 쓰레드 처리 이후에는 다른 처리부들과 함께 병렬적인 파일 분할 쓰레드를 수행할 수도 있다.
이 경우에는 별도의 데이터 분할부(110)의 구성은 생략될 수 있다.
그리고, 상기 데이터 분할부(110) 및 병렬적인 처리부들(121 및 122 등)은, 범용적인 컴퓨팅 시스템에서 멀티 코어 프로세서 내의 각 코어 모듈들에 의해 구현될 수도 있다. 그러나, 이는 일부의 실시예일뿐이며, 다른 어떤 형태의 하드웨어 구현이 이러한 일부 실시예에 의해 배제되어서는 안 된다.
멀티 쓰레드 환경의 처리부(120)의 각 처리부들(121 및 122 등)은, 상기 복수 개의 세그먼트에 대해, 병렬적으로 청크 분할을 수행하는 파일분할 쓰레드들을 처리한다.
이 경우, 각 처리부(121, 122 등)에서 병렬적으로 처리되는 파일분할 쓰레드에 있어서, 소정의 조건을 만족하는 청크가 생성되기 전까지는 최소 크기 건너뜀 및/또는 최대 크기 제한 없이 청크 분할이 수행된다.
그리고, 상기 소정의 조건을 만족하는 청크가 생성된 이후에는 최소 크기 건너뜀 및/또는 최대 크기 제한을 적용하며 통상적인 청크 분할이 수행된다.
상기 소정의 조건, 상기 최소 크기 건너뜀 및 최대 크기 제한은 도 4, 도 5 및 도 8 등을 참조하여 보다 상세히 후술한다.
그리고 병합부(130)는, 병렬적으로 처리되는 파일분할 쓰레드 수행 이후에, 청크 분할이 완료된 각 세그먼트들 사이의 불완전한 청크들(즉, 세그먼트 끝에서 해시 값 일치 없이 생성된 청크 또는 최대/최소 크기 제한을 벗어나는 청크들)을 병합한다. 병합부(130)의 동작에 관한 보다 상세한 용은 도 8을 참조하여 후술한 다.
그리고, 이러한 병합에 의해, 전체 청크들이 최대/최소 조건을 만족하는 청크들로 재조합 되면, 중복제거부(140)는 각 청크들에서 중복된 데이터 부분을 제거되고, 미리 저장된 다른 데이터를 참조하도록 하여, 저장부(150) 내에 저장된 전체 데이터의 크기를 감소시킨다.
한편, 이러한 저장부(150)는, 스토리지 또는 메모리 기능을 수행하는 임의의 미디어일 수 있다. 이를테면, 하드디스크, 플래시 메모리, DRAM, NVRAM 등 어떤 형태의 미디어라도 가능하다.
도 2는 본 발명의 일 실시예에 따라 데이터(200)의 적어도 일부가 복수 개의 청크로 분할되는 모습을 도시한다.
데이터 처리 장치(100)의 데이터 분할부(110)는 데이터(200)의 적어도 일부를 일정한 크기로 분할하여, 복수 개의 세그먼트(210 및 220 등)를 생성한다.
본 발명의 일 실시예에 따르면 상기 세그먼트의 크기는 사용자에 의해 설정되거나, 변경될 수 있다. 그러나, 세그먼트 크기의 결정에 대한 내용은 일부 실시예에 의해 제한적으로 해석되어서는 안 되며, 본 발명의 사상을 벗어나지 않는 범위에서 다른 방식에 의해 설정되거나 변경될 수 있다.
이를 테면, 앞선 데이터 처리 결과를 반영하여, 파일분할의 속도를 최대화 시킬 수 있도록 적응적으로(adaptively) 조정되는 실시예도 가능하다.
이러한 복수 개의 세그먼트들(210 및 220 등)은 데이터 처리 장치(100)의 멀티 쓰레드 환경의 처리부(120) 내의 서로 다른 처리부(121 또는 122 등)에 전달 될 수 있다. 이를테면, 세그먼트(210)는 제1 처리부(121)에, 그리고 세그먼트(220)는 제2 처리부(122)에 전달될 수 있다.
그리고, 세그먼트 집합(201)은 파일분할 멀티 쓰레드에 의해 병렬적으로 처리되는 세그먼트들(210 및 220)의 집합이다. 본 실시예에서는 쓰레드 수가 2인 경우를 예로 들어 설명하지만, 상기 쓰레드 수는 하드웨어 및/또는 소프트웨어 구성에 따라 4, 6, 8, 16, 32 등 임의의 수일 수 있다.
도 3은 본 발명의 일 실시예에 따라, 세그먼트를 청크 단위로 분할하는 과정을 설명하기 위한 개념도이다.
하나의 세그먼트(210)을 복수 개의 청크(chunk)로 분할하기 위해, 데이터 내용의 중복성을 살피는 방식을 컨텐츠 기반 파일분할이라고 한다. 여기서 청크는 소정의 기준에 따라 분할되는 데이터 조각이며, 그 크기는 고정적일 수도 있지만, 본 실시예에서는 가변적이다.
한편 이러한 컨텐츠 기반 파일분할에 사용되는 방법 중 하나가 BSW(Basic Sliding Window) 알고리즘이다.
BSW 알고리즘에서는 일정한 크기의 윈도우(310)가 세그먼트(210) 내에서 한쪽 방향으로 이동해 가면서 이 윈도우(310) 내의 데이터에 대한 해시(Hash) 값을 계산한다.
현재 윈도우(310) 위치에서 계산되는 해시 값이 미리 설정된 기준 해시 값(Reference hash value)과 동일한지의 여부가 판단된다.
이 판단의 결과, 현재 윈도우(310) 위치에서 계산되는 해시 값이 기준 해시 값과 동일하다면, 이 윈도우(310)의 끝부분이 청크 분할 점(chunk dividing point or chunking point)로 결정되어, 청크 하나가 생성된다.
그러나, 현재 윈도우(310) 위치에서 계산되는 해시 값이 기준 해시 값과 동일하지 않다면 이 윈도우(310)를 진행 방향으로 1바이트(Byte) 이동하여 다시 해시 값을 계산하고, 이것이 상기 기준 해시 값과 동일한지의 여부가 판단되는 과정이 반복된다.
이러한 방식으로 윈도우를 이동하면서 BSW 알고리즘을 세그먼트(210)의 처음부터 끝까지 적용하면, 컨텐츠 기반 파일 분할에 의해 복수 개의 청크들이 생성된다.
한편, BSW 알고리즘에 의해 계속해서 윈도우를 이동해 가면서 해시 값을 계산하기 위해서는 빠르고 가벼운 해시함수를 사용해야 하는데 암호화에 사용되는 MD5나 SHA-1 등과 같은 해시함수는 계산 시간이 커서 이런 용도로 사용되기에 부적합 할 수 있다. 또한, 계산된 해시 값도 128~160비트(bit) 정도이기 때문에, 필요에 비해 너무 크다.
따라서, 이러한 BSW 알고리즘에 의한 윈도우 이동과 해시 값 계산 및 비교에는, 논문 "파일의 의미기반분할을 위한 효율적인 점진형 Modulo-K 알고리즘(Incremental Modulo-K algorithm for Content Based File Partitioning), 반종명, 원유집, 민재홍, 한국정보과학회, 한국정보과학회 2008 종합학술대회 논문집 제35권 제1호(B) pp. 460~463, 2008년 6월" 에서 제시된 점진형 Modulo-K 알고리즘 이용하는 방법도 가능하다.
그러나, 본 발명은 이러한 구체적인 일부 실시예에 의해 한정되지 않으며, 다른 방식의 BSW 알고리즘 또는 BSW 알고리즘 이외의 다른 어떤 방법에 의한 청크 분할을 배제하지 않는다.
도 4는 본 발명의 일 실시예에 따라, BSW 알고리즘에 의해 청크 분할 점을 결정함으로써 분할된 복수 개의 청크를 도시한다.
상기 도 3의 윈도우(310)가 진행 방향으로 이동하면서 해시 값을 계산하고, 이를 기준 해시 값과 비교하여 일치하는 부분마다 청크 분할이 수행되었다.
청크(410) 내지 청크(440)은 서로 크기가 상이할 수 있다. 그런데, 청크(410), 청크(420) 및 청크(430)는 도 3의 윈도우(310)의 이동 과정에서 계산된 해시 값이 상기 기준 해시 값과 일치하기 때문에 생성된 것이지만, 세그먼트의 끝에 있는 청크(440)는 세그먼트의 끝이기 때문에 남아버린 것일 수 있다.
이렇게 해시 값이 일치하는 경우 이외에 생성된 청크를 불완전한 청크라고 하는데, 이러한 불완전한 청크는 추후의 병합(merging) 과정에 의해 제거되어야 하며, 오직 전체 데이터 또는 파일의 끝에서만 허용될 수 있다. 보다 상세한 내용은 도 5 내지 도 7을 참조하여 후술한다.
도 5는 청크 크기에 관계 없이 BSW 알고리즘을 두 개의 세그먼트에 적용하는 경우, 청크 분할점으로 결정되는 부분들을 도시한다.
복수 개의 세그먼트 중 제1 세그먼트(510)에 상기 BSW 알고리즘을 적용하여 파일분할 쓰레드를 수행하면, 윈도우 내의 데이터에 대해 계산된 해시 값이 기준 해시 값과 일치하는 부분들(531, 532, 533 및 534 등)이 존재하고, 이러한 부분 들(531, 532, 533 및 534 등)의 끝이 즉 청크 분할 점들(501 내지 504)로 결정된다.
이러한 청크 분할 점들(501 내지 504)에서 청크 분할을 수행함으로써, 복수 개의 청크(511, 512, 521, 522, 523 등)가 생성된다.
청크(512)는 10KB, 청크(521)는 1.5KB, 청크(522)는 4KB, 그리고 청크(523)는 22KB의 크기를 갖는다.
그런데, 중복 제거를 위한 파일분할 과정에서, 청크의 크기가 지나치게 작거나 지나치게 큰 것은 바람직하지 않으므로, 통상적으로 최소 청크의 크기와 최대 청크의 크기가 설정된다.
이를 테면, 청크의 최소 크기는 2KB, 청크의 최대 크기는 64KB로 설정될 수 있다. 물론 이러한 수치는 예시적인 것에 불과하며, 얼마든지 다른 값으로 설정될 수 있다.
이 경우, 상기 예에서의 청크(521)와 같은 청크는 생성되지 않는다. 설정된 청크의 최소 크기인 2KB보다 작기 때문이다.
한편, 이렇게 청크의 최소 크기가 설정되면, 청크 분할이 된 이후 다음 청크 분할을 위해 BSW 윈도우를 이동하는 경우, 바로 전 청크 분할 점 이후의 2KB 크기의 데이터는 바로 건너뛴다. 이러한 과정을 최소 값 건너뛰기라고 한다.
바로 전 청크 분할 점 이후에 청크의 최소 크기인 2KB 크기의 데이터에서는 해시 값 일치 점이 찾아지더라도 청크 분할을 하지 않기 때문에 BSW 윈도우를 1 바이트씩 이동하면서 해시 값을 계산할 필요가 없는 것이다.
이러한 최소 값 건너뛰기에 의해 파일 분할 쓰레드 처리 속도가 향상될 수 있다. 이를테면, 평균적 청크 크기가 약 10KB라고 할 때, 2KB의 청크 최소 크기를 설정하고 최소 값 건너뛰기를 하면, 약 20%의 속도 향상이 기대된다.
그러나, 멀티 쓰레드 환경에서, 복수 개의 프로세서가 복수 개의 세그먼트들에 대해 병렬적 청크 분할을 수행하는 경우에는 이러한 최소 값 건너뛰기 때문에 오류가 생길 수 있다. 이는 도 6 내지 도 7을 참조하여 후술한다.
도 6은 파일분할 단일 쓰레드에 의해 최소 크기 건너뜀 및 최대 크기 제한을 적용하여 도 5의 두 개의 세그먼트(510 및 520)에 청크 분할을 수행한 결과를 도시한다.
파일분할 단일 쓰레드에서, 세그먼트(510)에 대한 청크 분할이 수행된 후에 세그먼트(520)에 대한 청크 분할이 수행된다. 따라서, 세그먼트(520)에 대한 청크 분할이 시작되는 시점에는, 세그먼트(510)의 마지막 청크가 불완전한 청크라는 정보가 처리부에 미리 주어진다. 따라서, 단일 쓰레드 환경의 처리부는 세그먼트(520)의 윈도우 이동 시 최소 값 건너뛰기를 하지 않고, 처음부터 BSW 윈도우를 이동시킨다.
따라서, 도 5의 청크(521)과 같이 청크 최소 크기보다 작은 1.5KB 크기의 청크가 분할될 수 있다.
그리고, 병합부(130)는 10KB 크기의 청크(512)와 1.5KB 크기의 청크(521)를 병합하여 11.5KB 크기의 새로운 청크(610)을 생성한다.
청크(620)는 기존에 분할된 청크(522)에 의해 그대로 확정되며, 청크(630) 역시 기존에 분할된 청크(523)에 의해 그대로 확정된다.
그러나, 상술한 예와 달리 멀티 쓰레드 환경의 파일분할 작업에서는, 세그먼트(510)에 대한 청크 분할과 세그먼트(520)에 대한 청크 분할이 병렬적으로 수행되므로, 세그먼트(520)에 대한 청크 분할을 시작하는 시점에는 세그먼트(510)의 마지막 청크가 불완전한 청크라는 정보가 주어지지 않아서 문제가 발생될 수 있다. 보다 상세한 내용은 도 7을 참조하여 후술한다.
도 7은 파일분할 멀티 쓰레드에 의해 최소 크기 건너뜀 및 최대 크기 제한을 적용하는 경우의 오류를 설명하기 위한 개념도이다.
세그먼트(520)에 대한 청크 분할을 수행하는 쓰레드에서, 청크 크기의 최소 값으로 설정된 2KB를 건너뛰고 BSW 윈도우가 이동하므로, 해시 값이 기준 해시 값과 일치하는 부분(532)가 탐색되지 않는다. 따라서, 1.5KB 크기의 청크(521)은 분할되지 못하고, 다음 해시 값 일치 부분(533)에서 청크 분할이 수행되어 5.5KB 크기의 청크가 생성된다.
그리고, 세그먼트(510)의 마지막 청크이자, 10KB 크기를 갖는 불완전한 청크인 청크(512)와 상기 5.5KB 크기의 청크가 병합부(130)에 의해 병합된다. 그러면, 15.5KB 크기의 잘못된 청크(710)가 생성된다. 이 청크(720)도 청크 크기의 최대 값인 20KB를 초과하지는 않으므로, 하나의 청크로서 인정되지만, 도 6에서 도시된 단일 쓰레드에 의한 청크 분할과 다른 결과를 초래한다. 다만, 청크(720)은 청크(523)에 의해 그대로 확정된다.
본 발명의 일 실시예에 따르면, 이러한 오류를 해결하기 위해, 멀티 쓰레드 환경에서 병렬적으로 청크 분할이 수행되는 각 세그먼트에 대하여, 소정의 조건을 만족할 때까지는 최소 값 건너뛰기 및/또는 최대 값 제한 없이 BSW 윈도우를 이동시키면서 청크 분할을 수행한다.
상기 소정의 조건에 대해서는 도 8을 참조하여 후술한다.
도 8은 본 발명의 일 실시예에 따라 파일 분할 멀티 쓰레드를 수행하는 경우를 설명하기 위한 개념도이다.
본 발명의 일 실시예에 따르면, 병렬적으로 복수 개의 세그먼트들에 대해 청크 분할을 수행하는 각 쓰레드는, 청크 크기가 제1 임계치 이상이고, 제2 임계치 이하인 청크가 생성되기 전까지는 최소 값 건너뛰기 및/또는 최대 값 제한 없이 청크 분할을 수행한다. 이것이 상술한 소정의 조건이다.
본 발명의 일 실시예에 따르면, 상기 제1 임계치는 미리 설정되는 청크 크기의 최소 값, 이를테면 상기 2KB이다. 그리고, 상기 제2 임계치는 상기한 청크 크기의 최소 값(상기 예에서는 2KB)와 최대 값(상기 예에서는 64KB)의 차이(62KB)이다.
따라서, 병렬적으로 각 세그먼트들에 대해 BSW 알고리즘을 이용하여 윈도우를 이동하면서 해시 값 일치 점을 청크 분할 점으로 결정하는 각 쓰레드들은, 상기 소정의 조건을 만족하는 청크가 생성되기 전까지는 최소 값 건너뛰기 및/또는 최대 값 제한 없이 청크 분할을 수행한다. 그리고, 상기 소정의 조건을 만족하는 청크가 생성된 이후부터는 최소 값 건너뛰기 및 최대 값 제한을 적용하여 청크 분할을 해 나간다.
도 8에 도시된 실시예에서, 세그먼트(800)에 대해 이렇게 최소 값 건너뛰기 및 최대 값 제한 없이 BSW 윈도우 부분의 데이터의 해시 값이 기준 해시 값과 일치하는 부분에서 청크 분할이 수행되었고, 따라서 청크 X 및 청크 Y가 생성되었다.
여기서 청크 Y는 상기 소정의 조건을 만족하는 청크이다.
이러한 실시예에 의하면, 세그먼트(800)와 병렬적으로 처리되지만, 각 세그먼트에 대한 청크 분할을 시작하는 시점에서 최소 크기 건너뛰기 없이 청크를 분할하므로 도 7을 참조하여 상술한 문제, 이를테면 1.5KB 크기의 청크(521)가 분할되지 않는 문제가 해결된다.
또한, 원래의 데이터 내에서 세그먼트(800)의 바로 앞에 위치했던 세그먼트(도시되지 않음)의 불완전한 마지막 청크가 어떤 크기를 가지더라도 청크 Y에서 청크 병합(merging) 작업이 종료되게 된다. 그러므로, 단일 쓰레드에 의한 청크 분할과 결과에 있어서 차이가 나지 않는다.
이것은 하기와 같이 증명될 수 있다.
청크 X 및 청크 Y 가 최소크기 건너뜀 없이 분할된 청크이고, 청크 Y의 크기가 제1 임계치(최소 크기인 2KB) 이상이고, 제2 임계치(최대 크기와 최소 크기의 차이인 62KB)이하일 때, 그 바로 전 청크 X 에 대해 아래 3가지 경우로 나누어서 생각 할 수 있다. 이때, X 와 Y 를 합친 청크를 Z 라 표현한다.
1. 청크 X의 크기가 청크 크기의 최소 값(2KB) 미만인 경우:
이 경우, 청크 X 자신은 하나의 독립된 청크로서 인정되지 못한다. 따라서, 추후 병합 과정에서, 청크 X는 앞선 청크와 병합되거나, 또는 뒤의 청크 Y와 병합된다. 청크 X가 앞선 청크와 병합되는 경우 또는, 청크 Y 와 병합되는 경우에는 하나의 청크로서의 조건을 갖추게 된다. 이때, 원래 청크 X 는 Z 의 최소크기 건너뜀 영역 안에 존재하게 된다. 또한 청크 Y 는 청크 크기의 최대 값과 최소 값의 차이(62KB) 보다 작으므로 청크 X 의 크기를 합하여도 최대 크기 제한은 만족된다. 따라서, 청크 병합은 청크 Y에서 종료되고, 청크 Y 이후에 생성된 청크와는 서로 병합이 발생되지 않는다.
2. 청크 X의 크기가 청크 크기의 최소 값(2KB) 이상이고, 청크 크기의 최대 값과 최소값 차이(62KB) 이하인 경우:
이 경우, 청크 X는 자기 자신이 곧 하나의 완전한 청크이다. 따라서 청크 X 와 청크 Y 는 각각 다른 청크로 인정되므로, 청크 Y에서 청크 분할이 종료되고, 청크 Y 이후에 생성된 청크와는 서로 병합이 발생되지 않는다.
3. 청크 X의 크기가 청크 크기의 최대 값(64KB)를 초과하는 경우:
청크 X의 크기가 가 청크 크기의 최대 값보다 큰 경우, 청크 X는, 앞에서부터 최대 크기를 가지는 몇 개의 청크와 나머지 부분 X'으로 나누어 볼 수 있다. 이때, 최대 크기의 청크들은 각각이 완전한 청크로 인정받을 수 있다. 따라서 이 경우는 나머지 부분 X' 과 Y 의 관계로 다시 표현할 수 있게 되고, 이는 상기 1 또는 2의 경우로 귀결된다.
따라서 청크 Y 가 상기 소정의 조건을 만족하면 청크 X 가 어떠한 크기를 갖더라도 남는 조각 없이 모두 완전한 청크로 병합될 수 있다.
이것은 청크 Y 이후의 청크는 앞에 나오는 청크들과 머징 작업이 일어나지 않는다는 것을 의미한다.
상기 증명은 청크 Y 이전에 청크들이 최소크기 건너뜀 없이 분할 되었다는 가정이 있다면, 청크 Y 이전에 모든 청크를 포함하는 증명으로 쉽게 확장될 수 있다. 즉, 청크 Y 이전에 청크들이 머징 과정을 거치더라도, 청크 Y 앞에 남게 되는 청크의 크기는 위의 3가지 조건 중 하나를 만족할 수 밖에 없다.
또한 최소크기 건너뜀 없이 분할되었기 때문에, Y 앞의 청크 분할 점은 반드시 기준 해시 값과 일치하는 지점이다. 결국 앞의 청크들과 상관없이, 청크 Y 만 상기 소정의 조건을 만족한다면 청크 Y 에서 머징 작업이 완료되는 것으로 이해될 수 있다.
도 9는 본 발명의 일 실시예에 따른 데이터 처리 방법을 도시한다.
단계(S910)에서, 도 1의 데이터 분할부(110)는, 저장부(150)에 저장된 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하는 마스터 쓰레드를 처리한다. 이 과정은 도 2를 참조하여 상술한 바와 같다.
그리고, 단계(S920)에서, 멀티 쓰레드 환경의 처리부(120)의 각 처리부들(121 및 122 등)은, 상기 복수 개의 세그먼트에 대해, 병렬적으로 청크 분할을 수행하는 파일분할 쓰레드들이 처리된다.
이 경우, 각 처리부(121, 122 등)에서 병렬적으로 처리되는 파일분할 쓰레드에서는, 도 8을 참조하여 상술한 소정의 조건을 만족하는 청크가 생성되기 전까지는 최소 크기 건너뜀 및/또는 최대 크기 제한 없이 청크 분할이 수행된다.
그리고, 상기 소정의 조건을 만족하는 청크가 생성된 이후에는 최소 크기 건너뜀 및/또는 최대 크기 제한을 적용하며 통상적인 청크 분할이 수행된다.
그리고 단계(S930)에서 상기 방식으로 청크 분할이 완료된 각 세그먼트들 사이의 불완전한 청크들이 병합된다. 이러한 과정의 보다 상세한 내용은 도 8을 참조하여 상술한 바와 같다.
그리고, 청크들이 모두 생성되면, 단계(S940)에서 중복된 데이터 부분은 제거되고, 미리 저장된 데이터를 참조하도록 하여, 전체 데이터의 크기가 크기 감소된다. 이러한 과정을 통해 저장부(150)의 공간이 크게 절약된다.
도 10은 본 발명의 일 실시예에 따른 데이터 처리 방법에서 파일분할을 수행하는 과정을 도시한다.
단계(S1010)에서, 이전에 소정의 조건을 만족하는 청크가 존재했는지의 여부가 판단된다.
상기 판단의 결과 이전에 소정의 조건, 이를테면 제1 임계치와 제2 임계치 사이의 크기를 가진 청크가 존재했다면, 단계(S1020)에서 최소 크기 건너뜀이 수행된 후 마지막 세그먼트가 될 때까지 반복적으로 윈도우 이동 및 해시 값 계산이 수행된다(S1030 내지 S1040).
계산된 해시 값이 기준 해시 값과 일치하면(S1050) 단계(S1060)에서 청크 분할을 수행하며, 이 때에도 최대 크기 제한에 따른 처리를 수행한다(S1070 내지 S1080).
이러한 과정을 통해 멀티 쓰레드 환경에서의 파일분할 쓰레드 각각에서, 상기 소정의 조건을 만족시키는 청크가 존재하기까지는 최소 크기 건너뜀이나 및/또 는 최대 크기 제한(강제 분할) 없이 BSW 알고리즘을 이용한 청크 분할이 수행된다.
도 11은 본 발명의 일 실시예에 따른 데이터 처리 방법에서 일부 청크를 병합하는 과정을 도시한다.
단계(S1110)에서, 병합 여부를 판단하고자 하는 다음 청크 정보를 가져온다. 그리고, 단계(S1120)에서 현재 세그먼트 이전의 불완전한 마지막 청크가 존재하거나, 또는 이전의 병합 과정에서 남겨진, 즉 최대/최소 크기 조건을 만족하지 않는 청크가 존재하는 지의 여부가 판단된다.
만약 존재하는 경우라면, 단계(S1130)에서 이를 현재 청크와 병합한다.
그리고 최대/최소 크기 조건이 만족되는지, 즉 현재 청크가(또는 병합된 현재 청크가) 최대/최소 크기를 만족하여 독자적인 청크로 인정될 수 있는 지의 여부가 판단된다(S1140).
조건이 만족된다면, 단계(S1150)에서 청크 목록에 추가되며, 어 이상의 청크가 존재하지 않을 때까지 상기 과정이 반복된다(S1160).
그러나, 조건을 만족하지 않을 때는, 최대 크기 초과의 경우 최대 크기만큼의 강제 분할을 수행하고(S1170 내지 S1180), 남은 부분은 남겨진 청크로 관리한다.
병합 과정의 보다 상세한 내용은 도 5 내지 도 8을 참조하여 상술한 바와 같다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 장치(100)를 도시한다.
도 2는 본 발명의 일 실시예에 따라 데이터의 적어도 일부가 복수 개의 청크로 분할되는 모습을 도시한다.
도 3은 본 발명의 일 실시예에 따라, BSW 알고리즘이 각 세그먼트에 적용되는 과정을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따라, BSW 알고리즘에 의해 청크 분할점을 결정함으로써 분할된 복수 개의 청크를 도시한다.
도 5는 청크 크기에 관계 없이 BSW 알고리즘을 두 개의 세그먼트에 적용하는 경우, 청크 분할점으로 결정되는 부분들을 도시한다.
도 6은 파일분할 단일 쓰레드에 의해 최소 크기 건너뜀 및 최대 크기 제한을 적용하여 도 5의 두 개의 세그먼트에 청크 분할을 수행한 결과를 도시한다.
도 7은 파일분할 멀티 쓰레드에 의해 최소 크기 건너뜀 및 최대 크기 제한을 적용하는 경우의 오류를 설명하기 위한 개념도이다.
도 8은 본 발명의 일 실시예에 따라 파일 분할 멀티 쓰레드를 수행하는 경우를 설명하기 위한 개념도이다.
도 9는 본 발명의 일 실시예에 따른 데이터 처리 방법을 도시한다.
도 10은 본 발명의 일 실시예에 따른 데이터 처리 방법에서 파일분할을 수행하는 과정을 도시한다.
도 11은 본 발명의 일 실시예에 따른 데이터 처리 방법에서 일부 청크를 병 합하는 과정을 도시한다.

Claims (20)

  1. 데이터로부터 분할된 제1 세그먼트에 세그먼트 스캔을 수행하고 기준 데이터와 일치하는 부분을 청크 분할점으로 결정하여 청크 분할을 수행하여 복수 개의 청크를 생성하는 제1 쓰레드를 처리하는 제1 처리부; 및
    상기 제1 쓰레드의 처리와 병렬적으로, 상기 데이터로부터 분할된 제2 세그먼트에 세그먼트 스캔을 수행하고 상기 기준 데이터와 일치하는 부분을 청크 분할점으로 결정하여 청크 분할을 수행하여 복수 개의 청크를 생성하는 제2 쓰레드를 처리하는 제2 처리부
    를 포함하는, 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 제1 처리부 및 상기 제2 처리부 중 적어도 하나는, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터, 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터를 건너뛰고 세그먼트 스캔을 수행하는, 데이터 처리 장치.
  3. 제2항에 있어서,
    상기 제1 처리부 및 상기 제2 처리부 중 적어도 하나는, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터, 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할을 수행하며 세그먼트 스캔을 수행하는, 데이터 처리 장치.
  4. 제1항에 있어서,
    상기 세그먼트 스캔은, BSW(Basic Sliding Window) 알고리즘을 이용하여, 윈도우를 이동하며 윈도우 내의 해시(Hash) 값을 계산함으로써 수행되는, 데이터 처리 장치.
  5. 제4항에 있어서,
    상기 계산된 해시 값과 기준 해시 값이 일치하는 경우, 청크 분할점으로 결정되어 청크 분할이 수행되는, 데이터 처리 장치.
  6. 제1항에 있어서,
    상기 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하고, 상기 복수 개의 세그먼트 중 상기 제1 세그먼트를 상기 제1 처리부에 전달하고, 상기 복수 개의 세그먼트 중 상기 제2 세그먼트를 상기 제2 처리부에 전달하는 마스터 쓰레드를 수행하는 데이터 분할부
    를 더 포함하는, 데이터 처리 장치.
  7. 제2항에 있어서,
    상기 제1 쓰레드의 처리에 의해 생성되는 복수 개의 청크 중 마지막에 생성된 제1 청크와, 상기 제2 쓰레드의 처리 과정에서 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성되기 전에 생성된 청크 중 적어도 하나를 병합하여, 제2 청크를 생성하는 병합부
    를 더 포함하는, 데이터 처리 장치.
  8. 제7항에 있어서,
    상기 제1 쓰레드의 처리에 의해 생성되는 복수 개의 청크, 상기 제2 쓰레드의 처리에 의해 생성되는 복수 개의 청크, 및 상기 병합된 제2 청크에 대하여, 데이터 중복 부분을 제거하는 중복제거부
    를 더 포함하는, 데이터 처리 장치.
  9. 제2항에 있어서
    상기 제1 임계치는 청크 크기의 최소 설정 값이고, 상기 제2 임계치는 청크 크기의 최대 설정 값과 상기 청크 크기의 최소 설정 값의 차이인, 데이터 처리 장치.
  10. 파일분할 멀티 쓰레드 처리를 병렬적으로 수행하기 위한 복수 개의 처리부를 포함하고,
    상기 복수 개의 처리부의 각각은, 데이터로부터 분할된 적어도 하나의 세 그먼트에 대해, 병렬적으로 청크 분할(chunking)을 수행하여 복수 개의 청크를 생성하는, 데이터 처리 장치.
  11. 제10항에 있어서,
    상기 복수 개의 처리부의 각각은, 데이터로부터 분할된 적어도 하나의 세그먼트에 대해, BSW(Basic Sliding Window) 알고리즘을 적용하여 해시 값이 기준 해시 값과 일치하는 부분을 청크 분할점으로 하는 청크 분할을 수행하여 복수 개의 청크를 생성하고,
    상기 복수 개의 처리부의 각각은, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 각 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터는 바로 건너뛰는, 데이터 처리 장치.
  12. 제11항에 있어서,
    상기 복수 개의 처리부의 각각은, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할을 수행하는, 데이터 처리 장치.
  13. 제11항에 있어서,
    상기 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하고, 상기 복수 개의 세그먼트를 상기 복수 개의 처리부의 각각에 전달하는 마스터 쓰레드를 수행하는 데이터 분할부
    를 더 포함하는, 데이터 처리 장치.
  14. 제11항에 있어서,
    상기 파일분할 멀티 쓰레드에 의해 생성된 복수 개의 청크들 중, 각 세그먼트 내에 크기가 제1 임계치 미만인 청크와, 상기 해시 값 일치에 의한 청크 분할 점이 아닌 부분에서 분할된 청크를 병합하는 병합부
    를 더 포함하는, 데이터 처리 장치.
  15. 데이터의 적어도 일부를 복수 개의 세그먼트로 분할하는 단계; 및
    복수 개의 처리부 중 적어도 두 개의 처리부가, 상기 복수개의 세그먼트 중 적어도 하나의 세그먼트에 대해, 청크 분할(chunking)을 병렬적으로 수행하는 단계
    를 포함하는, 데이터 처리 방법.
  16. 제15항에 있어서,
    상기 청크 분할을 병렬적으로 수행하는 단계는,
    상기 적어도 두 개의 처리부가, 각각에 할당된 세그먼트에 대해, BSW(Basic Sliding Window) 알고리즘을 적용하여 해시 값이 기준 해시 값과 일치하는 부분을 청크 분할점으로 하는 청크 분할을 수행하고, 상기 적어도 두 개의 처리부는 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 각 청크 분할 점 다음의 상기 제1 임계치 크기의 데이터는 바로 건너뛰는, 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 청크 분할을 병렬적으로 수행하는 단계에서, 크기가 제1 임계치 이상이고 제2 임계치 이하인 청크가 생성된 이후부터는, 청크 분할을 수행하기 위해 상기 BSW 알고리즘을 적용하는 경우에 상기 제1 임계치와 상기 제2 임계치의 합의 크기를 초과하는 청크가 생성되지 않도록, 강제적 청크 분할을 수행하는, 데이터 처리 방법.
  18. 제17항에 있어서,
    상기 파일분할 멀티 쓰레드에 의해 생성된 복수 개의 청크들 중, 각 세그먼트 내에 크기가 제1 임계치 미만인 청크와, 상기 해시 값 일치에 의한 청크 분할 점이 아닌 부분에서 분할된 청크를 병합하는 단계
    를 더 포함하는, 데이터 처리 방법.
  19. 제16항에 있어서,
    상기 제1 임계치는 청크 크기의 최소 설정 값이고, 상기 제2 임계치는 청크 크기의 최대 설정 값과 상기 청크 크기의 최소 설정 값의 차이인, 데이터 처리 방법.
  20. 제15항 내지 제19항 중 어느 한 항의 방법을 수행하기 위한 프로그램을 수록한, 컴퓨터 판독 가능 기록 매체.
KR1020090112214A 2009-11-19 2009-11-19 데이터 처리 장치 및 데이터 처리 방법 KR101078586B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090112214A KR101078586B1 (ko) 2009-11-19 2009-11-19 데이터 처리 장치 및 데이터 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090112214A KR101078586B1 (ko) 2009-11-19 2009-11-19 데이터 처리 장치 및 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20110055263A true KR20110055263A (ko) 2011-05-25
KR101078586B1 KR101078586B1 (ko) 2011-11-01

Family

ID=44364301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090112214A KR101078586B1 (ko) 2009-11-19 2009-11-19 데이터 처리 장치 및 데이터 처리 방법

Country Status (1)

Country Link
KR (1) KR101078586B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101229851B1 (ko) * 2011-12-27 2013-02-05 한국과학기술원 데이터의 병렬적 중복제거 시스템
WO2013100437A1 (ko) * 2011-12-29 2013-07-04 한양대학교 산학협력단 저장장치에서 중복제거 성능 향상을 위한 그룹핑 방법 및 장치
KR101388337B1 (ko) * 2011-12-29 2014-04-22 한양대학교 산학협력단 저장장치에서 중복제거 성능 향상을 위한 그룹핑 방법 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138156B2 (en) 2017-11-27 2021-10-05 DataCommand Corp. Continuous data management system and operating method thereof
KR102089710B1 (ko) 2017-11-27 2020-03-16 주식회사 데이타커맨드 연속 데이터 관리 시스템 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101229851B1 (ko) * 2011-12-27 2013-02-05 한국과학기술원 데이터의 병렬적 중복제거 시스템
WO2013100437A1 (ko) * 2011-12-29 2013-07-04 한양대학교 산학협력단 저장장치에서 중복제거 성능 향상을 위한 그룹핑 방법 및 장치
KR101388337B1 (ko) * 2011-12-29 2014-04-22 한양대학교 산학협력단 저장장치에서 중복제거 성능 향상을 위한 그룹핑 방법 및 장치
US9501239B2 (en) 2011-12-29 2016-11-22 Industry-University Cooperation Foundation Hanyang University Grouping method and device for enhancing redundancy removing performance for storage unit

Also Published As

Publication number Publication date
KR101078586B1 (ko) 2011-11-01

Similar Documents

Publication Publication Date Title
US11640256B2 (en) Methods and systems for object level de-duplication for data storage system
US11693830B2 (en) Metadata management method, system and medium
KR101078586B1 (ko) 데이터 처리 장치 및 데이터 처리 방법
US8001273B2 (en) Parallel processing of input data to locate landmarks for chunks
EP2904525B1 (en) Optimizing data block size for deduplication
US10789084B2 (en) Virtual machine scaling method and device
US20140012822A1 (en) Sub-block partitioning for hash-based deduplication
US9696936B2 (en) Applying a maximum size bound on content defined segmentation of data
US9632720B2 (en) Data de-duplication
US20150066877A1 (en) Segment combining for deduplication
CN106980680B (zh) 数据存储方法及存储设备
US20150088840A1 (en) Determining segment boundaries for deduplication
US9244830B2 (en) Hierarchical content defined segmentation of data
US10296597B2 (en) Read ahead of digests in similarity based data deduplicaton
EP3832476B1 (en) Accelerated and memory efficient similarity matching
US10671569B2 (en) Reducing activation of similarity search in a data deduplication system
US9483483B2 (en) Applying a minimum size bound on content defined segmentation of data
KR101237746B1 (ko) 데이터 백업 장치 및 방법
JP2013162474A (ja) データ圧縮方法及び装置
Sengar et al. A Parallel Architecture for In-Line Data De-duplication
CN105989008B (zh) 一种将数据写入镜像文件的方法和设备
KR102023274B1 (ko) 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘
Jehlol et al. Enhancing Deduplication Efficiency Using Triple Bytes Cutters and Multi Hash Function.
KR102202500B1 (ko) 공간 키워드 커버 문제의 탐색 속도 향상을 위한 검색 범위 축소기법
KR20210101454A (ko) 공간 조인 수행 방법 및 장치

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: 20150225

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151008

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161006

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190910

Year of fee payment: 9