KR102127116B1 - 분산 데이터 저장 장치 및 분산 데이터 저장 방법 - Google Patents

분산 데이터 저장 장치 및 분산 데이터 저장 방법 Download PDF

Info

Publication number
KR102127116B1
KR102127116B1 KR1020140029005A KR20140029005A KR102127116B1 KR 102127116 B1 KR102127116 B1 KR 102127116B1 KR 1020140029005 A KR1020140029005 A KR 1020140029005A KR 20140029005 A KR20140029005 A KR 20140029005A KR 102127116 B1 KR102127116 B1 KR 102127116B1
Authority
KR
South Korea
Prior art keywords
data
storage
chunk
address
data chunk
Prior art date
Application number
KR1020140029005A
Other languages
English (en)
Other versions
KR20150106657A (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 KR1020140029005A priority Critical patent/KR102127116B1/ko
Priority to US14/645,005 priority patent/US9933979B2/en
Publication of KR20150106657A publication Critical patent/KR20150106657A/ko
Application granted granted Critical
Publication of KR102127116B1 publication Critical patent/KR102127116B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

분산 데이터 저장 장치가 제공된다. 분산 데이터 저장 장치는 클라이언트로부터 쓰기 요청된 데이터를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하는 데이터 분할부; 상기 데이터 청크별로 생성된 제1 어드레스를, 전역 어드레스인 제2 어드레스로 변환하는 어드레스 변환부; 상기 제2 어드레스와 복수의 스토리지 노드를 매핑하는 스토리지 노드 매핑부; 및 상기 복수의 스토리지 노드 중에서 타겟 스토리지 노드를 선정하고, 상기 타겟 스토리지 노드에 상기 데이터 청크를 저장하는 데이터 저장부를 포함하고, 상기 데이터 청크와 동일한 데이터 청크가 상기 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 저장부는 상기 데이터 청크를 상기 복수의 스토리지 노드에 저장하지 않고, 상기 복수의 스토리지 노드에 기저장된 데이터 청크와 상기 제2 어드레스 사이에 링크를 설정한다.

Description

분산 데이터 저장 장치 및 분산 데이터 저장 방법{DEVICE AND METHOD FOR STORING DATA IN DISTRIBUTED STORAGE SYSTEM}
본 발명은 분산 데이터 저장 장치 및 분산 데이터 저장 방법에 관한 것이다.
분산 스토리지 시스템을 비롯한 컴퓨터 시스템의 성능이 발전함에 따라 컴퓨터 시스템에서 처리되는 데이터의 규모 또한 증가하게 되어, 데이터의 저장 공간의 확보 문제가 발생한다. 특히 대규모 데이터를 저장하는 분산 스토리지 시스템에 있어서 저장 공간을 확보하기 위해 장비를 확충하는 것은 많은 비용을 발생시키므로, 주어진 저장 공간을 효율적으로 운용하여 낭비되는 저장 공간을 감소시키는 것이 필요하다. 이를 위해, 데이터 관리에 있어서 동일한 내용의 중복 데이터를 처리하기 위한 다양한 방안이 요구된다.
공개특허 제2012-0016767호는 분산파일 시스템에서의 중복 제거 장치 및 방법을 개시하고 있다.
본 발명이 해결하려는 과제는 분산 스토리지 시스템에서 중복 데이터를 제거하기 위한 분산 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 중복 데이터를 효율적으로 제거하기 위한 분산 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는 분산 스토리지 시스템에서 중복 데이터를 제거하기 위한 분산 데이터 저장 방법을 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는 중복 데이터를 효율적으로 제거하기 위한 분산 데이터 저장 방법을 제공하는 것이다.
본 발명이 해결하려는 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 분산 데이터 저장 장치의 일 실시예는, 클라이언트로부터 쓰기 요청된 데이터를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하는 데이터 분할부; 상기 데이터 청크별로 생성된 제1 어드레스를, 전역 어드레스인 제2 어드레스로 변환하는 어드레스 변환부; 상기 제2 어드레스와 복수의 스토리지 노드를 매핑하는 스토리지 노드 매핑부; 및 상기 복수의 스토리지 노드 중에서 타겟 스토리지 노드를 선정하고, 상기 타겟 스토리지 노드에 상기 데이터 청크를 저장하는 데이터 저장부를 포함하고, 상기 데이터 청크와 동일한 데이터 청크가 상기 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 저장부는 상기 데이터 청크를 상기 복수의 스토리지 노드에 저장하지 않고, 상기 복수의 스토리지 노드에 기저장된 데이터 청크와 상기 제2 어드레스 사이에 링크를 설정한다.
상기 데이터 청크는 상기 쓰기 요청된 데이터에서 순차적이고 연속적으로 배치된 복수의 데이터 입출력 단위 블록들을 결합하여 형성될 수 있다.
상기 전역 어드레스가 어드레싱하는 영역의 사이즈는 상기 데이터 청크의 사이즈와 동일할 수 있다.
상기 데이터 청크는 제1 데이터 청크 및 제2 데이터 청크를 포함하고, 상기 제2 어드레스는 상기 제1 데이터 청크를 어드레싱하는 제1 전역 어드레스 및 상기 제2 데이터 청크를 어드레싱하는 제2 전역 어드레스를 포함하고, 상기 제1 데이터 청크 및 상기 제2 데이터 청크가 동일한 경우, 상기 제1 전역 어드레스 및 상기 제2 전역 어드레스는 동일한 스토리지 노드를 어드레싱할 수 있다.
상기 데이터 저장부는, 상기 복수의 스토리지 노드 각각에 대해, 상기 스토리지 노드에 저장된 데이터 청크와 상기 쓰기 요청된 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정할 수 있다.
상기 데이터 저장부는, 상기 복수의 스토리지 노드 각각에 대해, 상기 스토리지 노드에 저장된 데이터 청크들의 분포 특성을 기초로 하나의 대표 분포 특성 데이터를 생성하고, 상기 대표 분포 특성 데이터와 상기 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정할 수 있다.
상기 복수의 스토리지 노드는 제1 스토리지 노드 및 제2 스토리지 노드를 포함하고, 상기 데이터 저장부는, 상기 제1 스토리지 노드에 저장된 제1 데이터 청크가 변경된 경우, 상기 복수의 스토리지 노드 각각의 대표 분포 특성 데이터와 상기 제1 데이터 청크 사이의 데이터 유사도를 재분석하여, 상기 데이터 유사도가 가장 높다고 판단된 상기 제2 스토리지 노드로 상기 제1 데이터 청크를 이전(migrate)할 수 있다.
상기 제1 데이터 청크의 일부만이 변경된 경우, 상기 데이터 유사도를 재분석하여 상기 제2 스토리지 노드로 이전하지 않고, 일부가 변경된 상기 제1 데이터 청크를 상기 제1 스토리지 노드의 원래의 저장 위치에 유지할 수 있다.
상기 데이터 저장부는 주기적으로 상기 복수의 스토리지 노드에 저장된 데이터 청크들에 대한 클러스터링을 수행하여 다시 계산된 데이터 유사도에 따라 상기 복수의 스토리지 노드에 저장된 데이터 청크들을 재배치할 수 있다.
상기 제1 어드레스는 상기 데이터 청크의 ID, 오프셋 및 길이 정보를 포함하고, 상기 제2 어드레스는 상기 전역 어드레스 공간에 매핑된 상기 데이터 청크의 전역 ID, 오프셋 및 길이 정보를 포함할 수 있다.
상기 제1 어드레스와 상기 제2 어드레스 사이의 변환 및 상기 스토리지 노드와 상기 제2 어드레스 사이의 매핑을 위한 메타 데이터는 데이터베이스 테이블을 이용하여 참조될 수 있다.
상기 데이터 입출력 단위 블록의 사이즈는 4KB 내지 8KB이고, 상기 데이터 청크의 사이즈는 1MB 이상일 수 있다.
상기 과제를 해결하기 위한 본 발명의 분산 데이터 저장 장치의 다른 실시예는, 클라이언트로부터 입출력 요청된 데이터를 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하여, 전역 어드레스 공간에 매핑하는 데이터 분할부; 복수의 스토리지 노드와, 상기 전역 어드레스 공간에 매핑된 상기 데이터 청크에 대한 전역 어드레스를 매핑하는 스토리지 노드 매핑부를 포함하고, 상기 데이터 청크와 동일한 데이터 청크가 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 청크에 대한 입출력 작업은 상기 데이터 청크와 동일하고 상기 복수의 스토리지 노드에 기저장된 데이터 청크에 대해 수행된다.
상기 분산 데이터 저장 장치는, 상기 데이터 청크를 버퍼링하는 버퍼를 더 포함하고, 상기 클라이언트로부터 상기 버퍼에 존재하는 데이터 청크와 동일한 데이터 청크에 대한 입출력 요청을 수신한 경우, 상기 버퍼를 이용하여 상기 데이터 청크에 대한 입출력 작업을 수행할 수 있다.
상기 데이터 청크는 상기 입출력 요청된 데이터에서 순차적이고 연속적으로 배치된 복수의 이상의 데이터 입출력 단위 블록들을 결합하여 형성되고, 상기 데이터 청크에 대한 입출력 작업은 상기 데이터 청크의 사이즈를 기본 단위로 수행될 수 있다.
상기 과제를 해결하기 위한 본 발명의 분산 데이터 저장 방법의 일 실시예는, 클라이언트로부터 쓰기 요청된 데이터를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하고, 상기 데이터 청크 별로 생성된 제1 어드레스를, 전역 어드레스인 제2 어드레스로 변환하고, 상기 제2 어드레스와 복수의 스토리지 노드를 매핑하고, 상기 복수의 스토리지 노드 중에서 타겟 스토리지 노드를 선정하고, 상기 타겟 스토리지 노드에 상기 데이터 청크를 저장하는 것을 포함하고, 상기 데이터 청크와 동일한 데이터 청크가 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 청크를 상기 복수의 스토리지 노드에 저장하지 않고, 상기 복수의 스토리지 노드에 기저장된 데이터 청크와 상기 제2 어드레스 사이에 링크를 설정한다.
상기 데이터 청크는 상기 쓰기 요청된 데이터에서 순차적이고 연속적으로 배치된 복수의 데이터 입출력 단위 블록들을 결합하여 형성될 수 있다.
상기 전역 어드레스가 어드레싱하는 영역의 사이즈는 상기 데이터 청크의 사이즈와 동일할 수 있다.
상기 데이터 청크는 제1 데이터 청크 및 제2 데이터 청크를 포함하고, 상기 제2 어드레스는 상기 제1 데이터 청크를 어드레싱하는 제1 전역 어드레스 및 상기 제2 데이터 청크를 어드레싱하는 제2 전역 어드레스를 포함하고, 상기 제1 데이터 청크 및 상기 제2 데이터 청크가 동일한 경우, 상기 제1 전역 어드레스 및 상기 제2 전역 어드레스는 동일한 스토리지 노드를 어드레싱할 수 있다.
상기 타겟 스토리지 노드를 선정하는 것은, 상기 복수의 스토리지 노드 각각에 대해, 상기 스토리지 노드에 저장된 데이터 청크와 상기 쓰기 요청된 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정하는 것을 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치를 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치 및 클라이언트의 어드레스 공간을 나타낸 개략도이다.
도 3은 본 발명의 일 실시예에 따른 분산 데이터 저장 장치에서 수행되는 어드레스 변환 과정을 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치에서 수행되는 어드레스 변환 과정을 나타낸 도면이다.
도 5a는 어드레스 변환 과정에서 사용되는 어드레스 변환 테이블을 나타낸 도면이고, 도 5b는 어드레스 변환 과정에서 사용되는 스토리지 노드 매핑 테이블을 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이다.
도 7은 본 발명의 다른 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이고, 도 8은 데이터 청크를 저장할 스토리지 노드를 선정하는 것을 설명하기 위한 도면이다.
도 9는 본 발명의 또 다른 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이다.
도 10은 분산 데이터를 클러스터링하여 스토리지 노드에 할당하는 것을 설명하기 위한 도면이다.
도 11은 변경된 데이터 청크를 스토리지 노드에 재배치하는 것을 설명하기 위한 도면이다.
도 12 및 도 13은 데이터 청크의 특성을 추출하는 것을 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시예에 따른 분산 데이터 저장 방법을 설명하기 위한 흐름도이다.
도 15는 변경된 데이터 청크를 스토리지 노드에 재배치 하는 것을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다. 제1 소자가 제2 소자에 "직접 연결" 또는 "직접 접속"된다는 것은, 제1 소자와 제2 소자 사이에 다른 소자가 개재되지 않음을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치를 설명하기 위한 개략도이다.
도 1a을 참조하면, 본 발명의 일 실시예에 따른 분산 데이터 저장 장치(100)는 하나 이상의 클라이언트(250, 252)로부터 데이터 입출력 요청을 수신하여 데이터 입출력 작업을 수행한다. 예를 들어, 분산 데이터 저장 장치(100)는 하나 이상의 클라이언트(250, 252)로부터 쓰기 요청된 데이터를 하나 이상의 스토리지 노드(200, 202, 204, 206)에 분산하여 저장할 수 있고, 하나 이상의 클라이언트(250, 252)로부터 읽기 요청된 데이터를 하나 이상의 스토리지 노드(200, 202, 204, 206)로부터 읽어들여 클라이언트(250, 252)에 전송할 수 있다.
본 발명의 몇몇의 실시예에서, 분산 데이터 저장 장치(100)는 단일 서버 또는 다중 서버일 수 있으며, 분산 데이터 저장 장치(100)는 스토리지 노드(200, 202, 204, 206)에 저장되는 데이터에 대한 메타데이터를 관리하는 메타데이터 관리 서버를 더 포함할 수 있다. 클라이언트(250, 252)는 분산 데이터 저장 장치(100)에 네트워크를 통해 접속 가능한 단말로서, 예를 들어, 데스크탑, 서버와 같은 컴퓨터, 셀룰러폰, 스마트폰, 태블릿, 노트북, PDA(Personal Digital Assistants)와 같은 모바일 기기를 포함하지만, 이에 한정되지 않는다. 스토리지 노드(200, 202, 204, 206)는 HDD(Hard Disk Drive), SSD(Solid State Drive), NAS(Network Attached Storage)를 비롯한 스토리지 장치 일 수 있으나 이에 한정되는 것은 아니고, 상기 스토리지 장치는 하나 이상의 프로세싱 유닛을 포함할 수 있다. 클라이언트(250, 252), 분산 데이터 저장 장치(100) 및 스토리지 노드(200, 202, 204, 206)는 LAN(Local Area Network), WAN(Wide Area Network) 등을 비롯한 유선 네트워크 또는 WiFi, 블루투스, 셀룰러 네트워크 등을 비롯한 무선 네트워크를 통해 상호간에 접속될 수 있다.
도 1b를 참조하면, 분산 데이터 저장 장치(100)는 데이터 분할부(SEPARATOR)(110), 어드레스 변환부(ADDRESS TRANSLATOR)(120), 스토리지 노드 매핑부(STORAGE NODE MAPPER)(130) 및 데이터 저장부(DATA STORE UNIT)(140)를 포함한다.
데이터 분할부(110)는 클라이언트(250, 252)로부터 쓰기 요청된 데이터(108)를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크(112)로 분할한다. 클라이언트(250, 252)로부터 요청된 데이터 입출력 작업은 분할된 데이터 청크(112) 단위로 이루어질 수 있고, 즉, 데이터 청크(112)는 클라이언트(250, 252)가 분산 데이터 저장 장치(100)에 대해 입출력 처리를 하는 기본 데이터 단위가 될 수 있다. 이에 따라 동일한 데이터 청크(112)에 포함되도록 그룹지어진 데이터 블록들, 즉 후술할 데이터 입출력 단위 블록들은 1회의 입출력 작업에서 그 전부가 동시에 처리될 수 있다.
데이터 청크(112)를 이루는 데이터 입출력 단위 블록은, 분산 데이터 저장 장치(100)가 1회의 입출력 단위 작업을 수행하기 위해 처리되는 데이터의 단위 블록을 말하며, 그 사이즈는 분산 데이터 저장 장치(100)를 구성하는 하드웨어 및 소프트웨어의 사양에 따라 정해질 수 있다. 예를 들어, 만일 분산 데이터 저장 장치(100)가 플래시 메모리를 포함하는 스토리지 장치, 예컨대, SSD를 사용하는 경우, 데이터 입출력 단위 블록은 4KB 내지 8KB의 사이즈일 수 있다. 데이터 청크(112)는 이러한 데이터 입출력 단위 블록들을 복수 개 포함하도록 형성되며, 본 발명의 몇몇의 실시예에서, 데이터 청크(112)는 1MB 이상의 사이즈를 가질 수 있다. 본 발명의 몇몇의 실시예에서, 데이터 청크(112)의 사이즈(예컨대, 1MB 또는 10MB)는 데이터 입출력 단위 블록의 사이즈(예컨대, 4KB 또는 8KB)에 비해 매우 크도록 구성될 수 있으며, "수퍼 청크(Super Chunk)"로 호칭될 수 있다.
한편, 데이터 분할부(110)는, 클라이언트 상의 데이터(108)를 어드레싱하는 클라이언트 어드레스(109)를 데이터 청크(112)별로 정해지는 제1 어드레스(113)로 변환한다. 데이터(108)로부터 분할된 하나 이상의 데이터 청크(112)를 어드레싱할 수 있는 제1 어드레스(113)는 각각의 데이터 청크(112)를 식별하는 청크 ID(Chunk ID, CID)를 포함할 수 있다.
어드레스 변환부(120)는 분할된 데이터 청크(112) 별로 생성된 제1 어드레스(113)를 분산 데이터 저장 장치(100)에서 사용되는 전역 어드레스인 제2 어드레스(123)로 변환한다. 제2 어드레스(123)는 분산 데이터 저장 장치(100)에 저장된 데이터들을 어드레싱할 수 있는 주소로서, 전역 주소 공간을 식별하는 전역 ID(Global ID, GID)를 포함할 수 있다. 예컨대, 제2 어드레스(123)는 분산 데이터 저장 장치(100)의 스토리지 노드(200, 202, 204, 206)에 저장된 데이터들을 어드레싱할 수 있다. 한편, 상기 전역 어드레스가 어드레싱하는 영역의 사이즈는 데이터 청크(112)의 사이즈와 동일할 수 있다. 예컨대, 데이터 청크(112)의 사이즈가 1MB인 경우, 하나의 전역 어드레스는 1MB의 데이터 청크를 어드레싱할 수 있다. 본 발명의 몇몇의 실시예에서, 어드레스 변환부(120)는 제1 어드레스(113)를 제2 어드레스(123)로 변환하기 위해 어드레스 변환 테이블(122)를 이용할 수 있으며, 어드레스 변환 테이블(122)은 CID와 GID간의 관계(relationship)를 저장하는 데이터베이스 테이블일 수 있다.
스토리지 노드 매핑부(130)는 제2 어드레스(123)와 복수의 스토리지 노드(200, 202, 204, 206)를 매핑한다. 다시 말해서, 스토리지 노드 매핑부(130)는 제2 어드레스(123)로 어드레싱 되는 데이터가 복수의 스토리지 노드(200, 202, 204, 206) 중 어느 스토리지 노드에 존재하는지를 매핑하며, 여기서 스토리지 노드(200, 202, 204, 206)는 스토리지 노드 ID(Storate node ID, SID)로 식별될 수 있다. 본 발명의 몇몇의 실시예에서, 스토리지 노드 매핑부(130)는 제2 어드레스(123)와 스토리지 노드를 매핑하기 위해 스토리지 노드 매핑 테이블(132)을 이용할 수 있으며, 스토리지 노드 매핑 테이블(132)은 GID와 SID간의 관계(relationship)를 저장하는 데이터베이스 테이블일 수 있다.
데이터 저장부(140)는 복수의 스토리지 노드(200, 202, 204, 206) 중에서 데이터 청크(112)를 저장할 타겟 스토리지 노드를 선정하여, 타겟 스토리지 노드를 어드레싱하는 타겟 어드레스(133)를 이용하여, 선정된 타겟 스토리지 노드에 데이터 청크(112)를 저장할 수 있다. 타겟 스토리지 노드는 데이터 청크(112)를 저장할 수 있는 저장 공간을 포함하며, 본 발명의 몇몇의 실시예에서, 타겟 스토리지 노드의 저장 공간은 데이터 청크(112)의 최대 사이즈에 부합하는(fitted) 데이터 저장 단위로 구획되어 있을 수 있다.
데이터 저장부(140)는 데이터 청크(112)와 동일한 데이터 청크가 복수의 스토리지 노드(200, 202, 204, 206)에 기저장되어(pre-stored) 있는 경우, 데이터 청크(112)를 복수의 스토리지 노드(200, 202, 204, 206)에 저장하지 않는다. 다시 말해서, 데이터 저장부(140)는 쓰기 요청된 데이터 청크(112)와 동일한 데이터 청크가 이미 저장되어 있는 경우 데이터 청크(112)를 중복하여 저장하지 않고, 복수의 스토리지 노드(200, 202, 204, 206)에 기저장된 데이터 청크와 제2 어드레스(133) 사이에 링크를 설정한다.
도 2는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치 및 클라이언트의 어드레스 공간을 나타낸 개략도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 분산 데이터 저장 장치(100)는 전역 어드레스 공간(105)을 포함하고, 전역 어드레스 공간(105)은 데이터를 하나 이상의 스토리지 노드(200, 202, 204, 206)로 어드레싱한다. 예를 들어, 전역 어드레스 공간(105)은 전역 어드레스(G1~G10)를 포함하고, 전역 어드레스(G1, G4)는 스토리지 노드(200)를, 전역 어드레스(G3)는 스토리지 노드(202)를, 전역 어드레스(G5)는 스토리지 노드(204)를, 그리고 전역 어드레스(G7, G8)는 스토리지 노드(206)를 어드레싱할 수 있다. 한편, 클라이언트(250, 251)는 클라이언트 상의 로컬 데이터를 접근할 수 있는 클라이언트 어드레스 공간(251, 253)을 각각 포함하고, 클라이언트 어드레스 공간(251, 253)은 클라이언트 어드레스(D1~D4, D5~D8)를 각각 포함할 수 있다.
각각의 스토리지 노드(200, 202, 204, 206)는 하나 이상의 데이터 저장 공간을 포함할 수 있으며, 예컨대, 스토리지 노드(200)는 데이터 저장 공간(S1, S2)을, 스토리지 노드(202)는 데이터 저장 공간(S3, S4)을, 스토리지 노드(204)는 데이터 저장 공간(S5, S6)을, 그리고 스토리지 노드(206)는 데이터 저장 공간(S7, S8)을 포함할 수 있다. 여기서, 클라이언트 어드레스(D1)는 전역 어드레스(G1)로 변환되고, 클라이언트 어드레스(D5)는 전역 어드레스(G4)로 변환되고, 전역 어드레스(G1, G5)는 모두 동일한 스토리지 노드(200)에 매핑될 수 있다. 클라이언트 어드레스(D1)으로 어드레싱되는 데이터 청크와 클라이언트 어드레스(D5)로 어드레싱되는 데이터 청크가 동일한 데이터 청크인 경우, 분산 데이터 저장 장치(100)는 데이터 저장 공간을 효율적으로 사용하기 위해 스토리지 노드(200)의 하나의 저장 공간(S1)에 데이터 청크를 한 번만 저장할 수 있다.
한편, 몇몇의 실시예에서 분산 데이터 저장 장치(100)는 데이터 청크를 버퍼링하는 버퍼를 더 포함하고, 클라이언트(250, 252)로부터 버퍼에 존재하는 데이터 청크와 동일한 데이터 청크에 대한 입출력 요청을 수신한 경우, 상기 버퍼를 이용하여 데이터 청크에 대한 입출력 작업을 수행할 수 있다.
이하, 도 3 내지 도 5b를 참조하여, 본 발명의 일 실시예에 따른 분산 데이터 저장 장치(100) 상에서 이루어지는 어드레스 변환에 대해 설명한다.
도 3은 본 발명의 일 실시예에 따른 분산 데이터 저장 장치에서 수행되는 어드레스 변환 과정을 설명하기 위한 개략도이고, 도 4는 본 발명의 일 실시예에 따른 분산 데이터 저장 장치에서 수행되는 어드레스 변환 과정을 나타낸 도면이고, 도 5a는 어드레스 변환 과정에서 사용되는 어드레스 변환 테이블을 나타낸 도면이고, 도 5b는 어드레스 변환 과정에서 사용되는 스토리지 노드 매핑 테이블을 나타낸 도면이다.
도 3 및 도 4를 참조하면, 클라이언트 상의 데이터(108)를 어드레싱하는 클라이언트 어드레스(109)는 데이터 분할부(110)를 통해 제1 어드레스(113)로 변환되며, 제1 어드레스(113)는 각각의 데이터 청크(112)를 식별하는 CID를 포함할 수 있다. 본 발명의 몇몇의 실시예에서, 클라이언트 어드레스(109)는 데이터(108)의 오프셋 및 길이 정보를 포함할 수 있다. 예를 들어, 클라이언트 어드레스가 "(30, 200)"인 경우, 클라이언트 어드레스 공간(251, 253)에서의 오프셋이 '30'이고 데이터(108)의 길이가 '200'임을 나타낸다. 이로부터 변환된 제1 어드레스(113)는 데이터 청크(112) 별로 CID, 오프셋 및 길이 정보를 포함할 수 있다. 예를 들어, 데이터(108)의 클라이언트 어드레스가 "(30, 200)"이고, 데이터 청크(112)의 사이즈를 '100'으로 설정한 경우, 데이터(108)는 사이즈가 '100'인 3 개의 데이터 청크로 분할될 수 있다. 데이터(108)의 오프셋이 '30'임을 고려하면, 이로부터 분할된 3 개의 데이터 청크는 "(0, 30, 70)", "(1, 0, 100)", "(2, 0, 30)"의 3 개의 제1 어드레스로 변환될 수 있다. 즉, CID가 '0'인 데이터 청크는 오프셋이 '30', 길이가 '70'이고, CID가 '1'인 데이터 청크는 오프셋이 '0', 길이가 '100'이고, CID가 '2'인 데이터 청크는 오프셋이 '0', 길이가 '30'임을 나타낸다.
제1 어드레스(113)는 어드레스 변환부(120)에 의해 분산 데이터 저장 장치(100)에서 사용되는 전역 어드레스인 제2 어드레스(123)로 변환된다. 이로부터 변환된 제2 어드레스(113)는 데이터 청크(112) 별로 GID, 오프셋 및 길이 정보를 포함할 수 있다. 예컨대, "(0, 30, 70)", "(1, 0, 100)", "(2, 0, 30)"의 3 개의 제1 어드레스를 갖는 데이터 청크들의 제2 어드레스 주소는 "(23, 30, 70)", "(17, 0, 100)", "(29, 0, 30)"가 될 수 있다. 즉, CID가 '0'인 데이터 청크는 GID가 '23'인 전역 어드레스 공간에 매핑되고, CID가 '1'인 데이터 청크는 GID가 '17'인 전역 어드레스 공간에 매핑되고, CID가 '2'인 데이터 청크는 GID가 '29'인 전역 어드레스 공간에 매핑됨을 나타낸다. 이러한 제1 어드레스(113)로부터 제2 어드레스(123)로의 변환은 도 5a에 도시된 어드레스 변환 테이블(122)을 이용하여 수행될 수 있다.
제2 어드레스(123)는 스토리지 노드 매핑부(130)에 의해 타겟 어드레스(133)로 변환된다. 이로부터 변환된 타겟 어드레스(133)는 데이터 청크(112) 별로 SID, GID, 오프셋 및 길이 정보를 포함할 수 있다. 예컨대, "(23, 30, 70)", "(17, 0, 100)", "(29, 0, 30)"의 제2 어드레스를 갖는 데이터 청크들의 타겟 어드레스 주소는 "(1, 23, 30, 70)", "(0, 17, 0, 100)", "(2, 29, 0, 30)"가 될 수 있다. 즉, GID가 '23'인 데이터 청크는 SID가 '1'인 스토리지 노드에 매핑되고, GID가 '17'인 데이터 청크는 SID가 '0'인 스토리지 노드에 매핑되고, GID가 '29'인 데이터 청크는 SID가 '2'인 스토리지 노드에 매핑됨을 나타낸다. 이러한 제2 어드레스(123)로부터 타겟 어드레스(133)으로의 변환은 도 5b에 도시된 스토리지 노드 매핑 테이블(132)을 이용하여 수행될 수 있다.
도 6은 본 발명의 일 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 쓰기 요청된 입력 데이터(300)는 15 개의 데이터 입출력 단위 블록(B0~B14)을 포함할 수 있고, 입력 데이터(300)의 클라이언트 어드레스는 "(1, 15)"일 수 있다. 이에 따르면, 입력 데이터(300)의 오프셋은 '1'이고, 길이는 '15'이다. 이러한 입력 데이터(300)는 데이터 분할부(110)에 의해 4 개의 데이터 청크(310, 312, 314, 316)로 분할될 수 있다. 본 발명의 몇몇의 실시예에서, 데이터 청크(310, 312, 314, 316)는 쓰기 요청된 입력 데이터(300)에서 순차적이고 연속적으로 배치된 복수의 데이터 입출력 단위 블록들(B0~B14)을 결합하여 형성할 수 있다. 예를 들어, 데이터 청크(310)는 순차적이고 연속적으로 배치된 데이터 입출력 단위 블록(B0, B1, B2)을 결합하여 형성되고, 데이터 청크(312)는 순차적이고 연속적으로 배치된 데이터 입출력 단위 블록(B3, B4, B5, B6)을 결합하여 형성될 수 있다. 이 때, 데이터 청크(310) 각각의 제1 어드레스는 "(0, 1, 3)", "(1, 0, 4)", "(2, 0, 4)", "(3, 0, 4)"가 될 것이다.
상기 각각의 제1 어드레스는 어드레스 변환부(120)에 의해 제2 어드레스 "(G1, 1, 3)", "(G3, 0, 4)", "(G5, 0, 4)", "(G6, 0, 4)"로 변환될 수 있다. 상술한 바와 같이, 이러한 변환은 제1 어드레스와 제2 어드레스 사이의 관계, 즉, CID와 GID의 관계를 저장하는 어드레스 변환 테이블(122)을 이용하여 수행될 수 있다. 다음으로, 상기 각각의 제2 어드레스는 "(S11, G1, 1, 3)", "(S22, G3, 0, 4)", "(S12, G5, 0, 4)", "(S22, G6, 0, 4)"로 변환될 수 있다. 상술한 바와 같이, 이러한 변환은 제2 어드레스와 타겟 어드레스 사이의 관계, 즉, GID와 SID의 관계를 저장하는 스토리지 노드 매핑 테이블(132)을 이용하여 수행될 수 있다.
이에 따라, 데이터 청크(310)는 스토리지 노드(200) 중 'S11'로 어드레싱되는 영역에 저장되고, 데이터 청크(312)는 스토리지 노드(202) 중 'S22'로 어드레싱되는 영역에 저장되고, 데이터 청크(314)는 스토리지 노드(200) 중 'S12'로 어드레싱되는 영역에 저장된다. 본 실시예에서 데이터 청크(316)는 데이터 청크(312)와 동일하다고 가정한다. 이 경우 데이터 청크(316)는 스토리지 노드에 추가적으로 저장되지 않고, 데이터 청크(316)가 매핑된 제2 어드레스 "(G6, 0, 4)"에 'S22'를 링크함으로써 쓰기 작업을 수행한다. 따라서, 데이터 청크(312) 및 데이터 청크(316)가 동일한 경우, 전역 어드레스 'G3' 및 'G6'은 동일한 스토리지 노드의 데이터 저장 영역 'S22'를 어드레싱한다.
도 7은 본 발명의 다른 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이고, 도 8은 데이터 청크를 저장할 스토리지 노드를 선정하는 것을 설명하기 위한 도면이다.
도 7을 참조하면, 도 7은 도 6에 도시된 분산 데이터 저장 장치(100)에 추가적으로 입력 데이터(306)가 쓰기 요청된 경우를 나타낸다. 추가적으로 쓰기 요청된 입력 데이터(306)는 4개의 입출력 단위 블록(B20~B23)을 포함할 수 있다. 데이터 분할부(110)는 이들 4개의 입출력 단위 블록(B20~B23)을 포함하는 데이터 청크(318)를 형성한다. 이 때, 데이터 청크(318)의 제1 어드레스는 "(4, 0, 4)"이다. 상기 제1 어드레스는 어드레스 변환부(120)에 의해 제2 어드레스 "(G2, 0, 4)"로 변환될 수 있다. 이 때, 어드레스 변환 테이블(122)에는 CID가 '4'인 엔트리가 존재하지 않으므로, 어드레스 변환 테이블(122)에 새로운 레코드(124)가 삽입될 수 있다. 다음으로, 'G2'는 'S13'을 가리키고 있으므로 데이터 청크(318)는 스토리지 노드(200)의 'S13'으로 참조되는 저장 영역에 저장될 수 있다.
도 8을 참조하면, 데이터 저장부(140)는, 복수의 스토리지 노드(200, 202, 204, 206) 각각에 대해, 상기 스토리지 노드(200, 202, 204, 206)에 저장된 데이터 청크와 쓰기 요청된 데이터 청크(318) 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드(204)를 타겟 스토리지 노드로 선정할 수 있다. 본 발명의 몇몇의 실시예에서, 데이터 저장부(140)는 상기 복수의 스토리지 노드(200, 202, 204, 206) 각각에 대해, 상기 스토리지 노드(200, 202, 204, 206)에 저장된 데이터 청크들의 분포 특성을 기초로 하나의 대표 분포 특성 데이터를 생성하고, 상기 대표 분포 특성 데이터와 상기 데이터 청크(318) 사이의 데이터 유사도를 분석하여, 데이터 유사도가 가장 높은 스토리지 노드를 타겟 스토리지 노드로 선정할 수 있다.
예컨대, 데이터 청크(318)가 "100100..."이고, 스토리지 노드(200, 202, 204) 각각의 대표 분포 특성 데이터가 "000100..", "010111..", "101001..."인 경우, 데이터 청크(318)를 저장할 스토리지 노드로 "101001..."로 나타난 스토리지 노드(204)를 선정할 수 있다. 여기서 대표 분포 특성 데이터는 하나의 스토리지 노드에 저장된 데이터 중에서 빈도수가 높은 패턴 또는 분포를 반영한 데이터이다. 예를 들어, 스토리지 노드(200)의 대표 분포 특성 데이터가 "000100..."이라는 것의 의미는, 스토리지 노드(200)에 저장된 데이터들의 대부분은 1번째 비트가 0이라는 것을 의미할 수 있다. 또한, 스토리지 노드(200)에 저장된 데이터들의 대부분은 2번째 비트가 0이라는 것을 의미할 수 있다. 즉, 대표 분포 특성 데이터는 해당 스토리지 노드에 저장된 데이터들의 패턴을 대표 형태를 가늠하는 척도가 될 수 있다.
도 9는 본 발명의 또 다른 실시예에 따른 데이터 저장 과정을 설명하기 위한 도면이다.
도 9 를 참조하면, 도 9는 도 7에 도시된 분산 데이터 저장 장치(100)에 저장되어 있는 데이터 청크(318)를 데이터 청크(319)로 업데이트하는 경우를 나타낸다. 데이터 청크(319)는 4개의 입출력 단위 블록(B20~B23)으로부터 업데이트된 4개의 입출력 단위 블록(B30~B33)을 포함할 수 있다. 이 때, 데이터 청크(319)의 제1 어드레스는 데이터 청크(318)와 마찬가지로 "(4, 0, 4)"이다. 상기 제1 어드레스는 어드레스 변환부(120)에 의해 제2 어드레스 "(G2, 0, 4)"로 변환될 수 있다. 이 때, 어드레스 변환 테이블(122)에는 CID가 '4'인 엔트리가 이미 존재하므로, 어드레스 변환 테이블(122)에 새로운 레코드가 삽입될 필요가 없다. 다음으로, 'G2'는 'S13'을 가리키고 있으므로 데이터 청크(319)는 스토리지 노드(200)의 'S13'으로 참조되는 저장 영역에 저장될 수 있다.
여기서, 데이터 저장부(110)는 스토리지 노드(200)에 저장된 데이터 청크가 변경된 경우, 복수의 스토리지 노드(200, 202, 204, 206) 각각의 대표 분포 특성 데이터와 데이터 청크(319) 사이의 데이터 유사도를 재분석하여, 상기 데이터 유사도가 가장 높다고 판단된 상기 스토리지 노드(202)의 'S21'로 데이터 청크(319)를 이전(migrate)할 수 있다. 이 때, 스토리지 노드 매핑 테이블(132)의 ('G2', 'S13')은 ('G2', 'S21')로 변경될 수 있다. 그러나, 본 발명의 몇몇의 실시예에서 데이터 청크(318)의 일부만이 변경된 경우, 상기 데이터 유사도를 재분석하여 스토리지 노드(202)로 이전하지 않고, 일부가 변경된 상기 데이터 청크(318)를 스토리지 노드의 원래의 저장 위치에 유지할 수 있다.
도 10은 분산 데이터를 클러스터링하여 스토리지 노드에 할당하는 것을 설명하기 위한 도면이다.
도 10을 참조하면, 분산 데이터 저장 장치(100)는 주기적으로 데이터 청크(401~412)에 대해 유사도를 판단하여 클러스터링을 수행할 수 있다. 이로부터 생성된 데이터 청크(401, 402, 410)를 포함하는 제1 클러스터(420), 데이터 청크(403, 407, 412)를 포함하는 제2 클러스터(422), 데이터 청크(404, 405, 408)를 포함하는 제3 클러스터(424), 데이터 청크(406, 409, 411)를 포함하는 제4 클러스터(426)는 스토리지 노드(200, 202)에 저장될 수 있다. 이와 같이 서로 유사도가 높은 데이터 청크들을 클러스터화하여 인접한 위치에 할당할 수 있다.
도 11은 변경된 데이터 청크를 스토리지 노드에 재할당하는 것을 설명하기 위한 도면이다.
도 11을 참조하면, 분산 데이터 저장 장치(100)는 데이터 청크(320, 322)가 변경된 경우, 스토리지 노드(200)에 저장되어 있던 데이터 청크(320)를 스토리지 노드(202)로 이전하고, 스토리지 노드(202)에 저장되어 있던 데이터 청크(322)를 스토리지 노드(200)로 이전하여 데이터 청크들을 재배치할 수 있다.
도 12 및 도 13은 데이터 청크의 특성을 추출하는 것을 설명하기 위한 도면이다.
도 12 및 13을 참조하면, 데이터 청크(500)의 내용을 심볼 단위로 분할하고, 각 심볼이 발생한 빈도수를 기록한 심볼 발생 빈도 벡터(510)가 나타나 있다. 즉, 심볼마다 고유한 인덱스 값을 부여하고, 해당 인덱스의 위치에 심볼 발생의 기록수를 기록한 것이다. 본 발명의 몇몇의 실시예에서, 대표 분포 특성 데이터는 해당 스토리지 노드에 저장된 데이터의 심볼 발생 빈도 벡터(510)의 평균을 취하여 획득될 수 있다. 그 이후 데이터 청크의 배치는 각각의 스토리지 노드의 대표 분포 특성 데이터와 심볼 발생 빈도 벡터와의 거리를 이용하여 결정할 수 있다. 예를 들어, 스토리지 노드(200)에 저장된 데이터로부터 얻어진 대표 분포 특성 데이터가 [91.0, 73.2, 82.9, 103.3]이고 스토리지 노드(202)의 대표 분포 특성 데이터가 [25.3, 33.8, 30.1, 27.2]인 경우, [112.7, 82.3, 92.8, 97.3]의 심볼 발생 빈도 벡터(510)를 갖는 데이터 청크는 스토리지 노드(200)의 대표 분포 특성 데이터와 거리가 더 가까우므로 스토리지 노드(200)로 할당된다. 한편, [21.2, 29.9, 32.1, 29.3]의 심볼 발생 빈도 벡터(510)를 갖는 데이터 청크는 스토리지 노드(202)의 대표 분포 특성 데이터와 거리가 더 가까우므로 스토리지 노드(202)로 할당된다.
도 14는 본 발명의 일 실시예에 따른 분산 데이터 저장 방법을 설명하기 위한 흐름도이고, 도 15는 변경된 데이터 청크를 스토리지 노드에 재배치 하는 것을 설명하기 위한 흐름도이다.
도 14를 참조하면, 본 발명의 일 실시예에 따른 분산 데이터 저장 방법은 클라이언트로부터 쓰기 요청을 수신하고(S600), 쓰기 요청된 데이터를 데이터 청크로 분할한다(S602). 데이터 청크가 전역 어드레스 공간에 이미 할당되어 있지 않은 경우(S604, N), 데이터 청크의 특성을 분석하고(S606), 데이터 청크를 저장할 스토리지 노드를 선정하고(S608), 메타 데이터를 갱신하고 데이터 청크를 저장한다(S610). 데이터 청크가 전역 어드레스 공간에 이미 할당되어 있는 경우(S604), 데이터 청크 전부를 업데이트하는 경우가 아니라면(S612, N), 메타 데이터만을 갱신하지만(S620), 데이터 청크 전부를 업데이트하는 경우라면(S612, Y), 업데이트된 데이터 청크의 특성을 분석하고(S614), 데이터 청크를 저장할 스토리지 노드를 선정하고(S616), 메타 데이터를 갱신하고 데이터 청크를 저장한다(S618).
도 15를 참조하면, 변경된 데이터 청크를 스토리지 노드에 재배치 하는 것은 변경된 데이터 청크의 특성을 분석하고(S700), 스토리지 노드 별 대표 특성을 분석하고(S702), 데이터 청크를 재분배(S704)하는 것을 포함한다.
본 발명의 다양한 실시예에 따르면, 클라이언트로부터 입출력 요청된 데이터는 작은 사이즈의 데이터 입출력 단위 블록을 다수 포함하는 데이터 청크(수퍼 청크)를 기본 단위로 하여 처리된다. 즉, 1회의 입출력 작업도 데이터 청크의 사이즈를 기반으로 처리되고, 어드레스 영역 역시 데이터 청크의 사이즈를 기반으로 설정된다. 따라서, 어드레스 매핑 테이블 엔트리의 개수를 적게 유지하면서도 분산 데이터 저장을 처리할 수 있어 메타 데이터 등의 저장에 필요한 공간을 절약할 수 있다. 또한, 데이터 청크 내에서의 데이터 인접성을 보장하여 연속적인 주소 공간에서 발생한 데이터 입출력 요청에 대해 효율적인 처리를 기대할 수 있다.
한편, 데이터 청크들은 분산 스토리지 노드에 무작위로 배분되지 않고, 스토리지 노드에 이미 저장되어 있는 데이터들의 특성 또는 패턴을 기초로, 유사한 패턴을 갖는 데이터들이 인접하도록 배치되기 때문에, 유사한 데이터에 대해서도 중복 제거를 가능케 할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 분산 데이터 저장 장치 105: 전역 어드레스 공간
108: 데이터 109: 클라이언트 어드레스
110: 데이터 분할부 112: 데이터 청크
113: 제1 어드레스 120: 어드레스 변환부
122: 어드레스 변환 테이블 123: 제2 어드레스
130: 스토리지 노드 매핑부 132: 스토리지 노드 매핑 테이블
133: 타겟 어드레스 140: 데이터 저장부
200, 202, 204, 206: 스토리지 노드 250: 제1 클라이언트
251: 제1 클라이언트 어드레스 공간 252: 제2 클라이언트
253: 제2 클라이언트 어드레스 공간 300, 306: 입력 데이터
310, 312, 314, 316, 318, 319, 320, 322: 데이터 청크
401~412: 데이터 블록 420, 422, 424, 426: 클러스터
500: 데이터 청크 510: 심볼 발생 빈도 벡터
D1~D8: 클라이언트 어드레스 G1~G10: 전역 어드레스
SN1~SN4: 스토리지 노드

Claims (10)

  1. 클라이언트로부터 쓰기 요청된 데이터를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하는 데이터 분할부;
    상기 데이터 청크별로 생성된 제1 어드레스를, 전역 어드레스인 제2 어드레스로 변환하는 어드레스 변환부;
    상기 제2 어드레스와 복수의 스토리지 노드를 매핑하는 스토리지 노드 매핑부; 및
    상기 복수의 스토리지 노드 중에서 타겟 스토리지 노드를 선정하고, 상기 타겟 스토리지 노드에 상기 데이터 청크를 저장하는 데이터 저장부를 포함하고,
    상기 데이터 청크와 동일한 데이터 청크가 상기 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 저장부는 상기 데이터 청크를 상기 복수의 스토리지 노드에 저장하지 않고, 상기 복수의 스토리지 노드에 기저장된 데이터 청크와 상기 제2 어드레스 사이에 링크를 설정하고, 상기 제1 어드레스는 상기 데이터 청크 별로 상기 데이터 청크를 식별하는 ID, 상기 쓰기 요청된 데이터의 오프셋 및 길이 정보를 포함하고,
    상기 제2 어드레스는 전역 어드레스 ID, 상기 오프셋 및 상기 길이 정보를 포함하는 분산 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 데이터 청크는 제1 데이터 청크 및 제2 데이터 청크를 포함하고,
    상기 제2 어드레스는 상기 제1 데이터 청크를 어드레싱하는 제1 전역 어드레스 및 상기 제2 데이터 청크를 어드레싱하는 제2 전역 어드레스를 포함하고,
    상기 제1 데이터 청크 및 상기 제2 데이터 청크가 동일한 경우, 상기 제1 전역 어드레스 및 상기 제2 전역 어드레스는 동일한 스토리지 노드를 어드레싱하는 분산 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 데이터 저장부는, 상기 복수의 스토리지 노드 각각에 대해, 상기 스토리지 노드에 저장된 데이터 청크와 상기 쓰기 요청된 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정하는 분산 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 데이터 저장부는, 상기 복수의 스토리지 노드 각각에 대해, 상기 스토리지 노드에 저장된 데이터 청크들의 분포 특성을 기초로 하나의 대표 분포 특성 데이터를 생성하고, 상기 대표 분포 특성 데이터와 상기 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정하는 분산 데이터 저장 장치.
  5. 제3항에 있어서,
    상기 복수의 스토리지 노드는 제1 스토리지 노드 및 제2 스토리지 노드를 포함하고,
    상기 데이터 저장부는, 상기 제1 스토리지 노드에 저장된 제1 데이터 청크가 변경된 경우, 상기 복수의 스토리지 노드 각각의 대표 분포 특성 데이터와 상기 제1 데이터 청크 사이의 데이터 유사도를 재분석하여, 상기 데이터 유사도가 가장 높다고 판단된 상기 제2 스토리지 노드로 상기 제1 데이터 청크를 이전(migrate)하는 분산 데이터 저장 장치.
  6. 제3항에 있어서,
    상기 데이터 저장부는 주기적으로 상기 복수의 스토리지 노드에 저장된 데이터 청크들에 대한 클러스터링을 수행하여 다시 계산된 데이터 유사도에 따라 상기 복수의 스토리지 노드에 저장된 데이터 청크들을 재배치하는 분산 데이터 저장 장치.
  7. 클라이언트로부터 입출력 요청된 데이터를 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하여, 전역 어드레스 공간에 매핑하는 데이터 분할부;
    복수의 스토리지 노드와, 상기 전역 어드레스 공간에 매핑된 상기 데이터 청크에 대한 전역 어드레스를 매핑하는 스토리지 노드 매핑부를 포함하고,
    상기 데이터 청크와 동일한 데이터 청크가 상기 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 청크에 대한 입출력 작업은 상기 데이터 청크와 동일하고 상기 복수의 스토리지 노드에 기저장된 데이터 청크에 대해 수행되고,
    상기 스토리지 노드에 저장된 데이터 청크들의 분포 특성을 기초로 하나의 대표 분포 특성 데이터를 생성하고, 상기 입출력 요청된 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 대표 분포 특성 데이터와 상기 데이터 청크 사이의 데이터 유사도가 가장 높은 스토리지 노드로부터 상기 입출력 요청된 데이터 청크를 입출력하는 분산 데이터 저장 장치.
  8. 제7항에 있어서,
    상기 데이터 청크를 버퍼링하는 버퍼를 더 포함하고,
    상기 클라이언트로부터 상기 버퍼에 존재하는 데이터 청크와 동일한 데이터 청크에 대한 입출력 요청을 수신한 경우, 상기 버퍼를 이용하여 상기 데이터 청크에 대한 입출력 작업을 수행하는 분산 데이터 저장 장치.
  9. 제7항에 있어서,
    상기 데이터 청크는 상기 입출력 요청된 데이터에서 순차적이고 연속적으로 배치된 복수의 이상의 데이터 입출력 단위 블록들을 결합하여 형성되고, 상기 데이터 청크에 대한 입출력 작업은 상기 데이터 청크의 사이즈를 기본 단위로 수행되는 분산 데이터 저장 장치.
  10. 클라이언트와 통신하는 분산 데이터 저장 장치의 분산 데이터 저장 방법에 있어서,
    상기 클라이언트로부터 쓰기 요청된 데이터를, 복수의 데이터 입출력 단위 블록을 포함하는 데이터 청크로 분할하고,
    상기 데이터 청크 별로 생성된 제1 어드레스를, 전역 어드레스인 제2 어드레스로 변환하고,
    상기 제2 어드레스와 복수의 스토리지 노드를 매핑하고,
    상기 복수의 스토리지 노드 중에서 타겟 스토리지 노드를 선정하고, 상기 타겟 스토리지 노드에 상기 데이터 청크를 저장하는 것을 포함하고,
    상기 데이터 청크와 동일한 데이터 청크가 상기 복수의 스토리지 노드에 기저장되어(pre-stored) 있는 경우, 상기 데이터 청크를 상기 복수의 스토리지 노드에 저장하지 않고, 상기 복수의 스토리지 노드에 기저장된 데이터 청크와 상기 제2 어드레스 사이에 링크를 설정하고,
    상기 스토리지 노드에 저장된 데이터 청크들의 분포 특성을 기초로 하나의 대표분포 특성 데이터를 생성하고, 상기 쓰기 요청된 데이터 청크 사이의 데이터 유사도를 분석하여, 상기 대표 분포 특성 데이터와 상기 데이터 청크 사이의 데이터 유사도가 가장 높은 스토리지 노드를 상기 타겟 스토리지 노드로 선정하는 분산 데이터 저장 방법.
KR1020140029005A 2014-03-12 2014-03-12 분산 데이터 저장 장치 및 분산 데이터 저장 방법 KR102127116B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140029005A KR102127116B1 (ko) 2014-03-12 2014-03-12 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US14/645,005 US9933979B2 (en) 2014-03-12 2015-03-11 Device and method for storing data in distributed storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140029005A KR102127116B1 (ko) 2014-03-12 2014-03-12 분산 데이터 저장 장치 및 분산 데이터 저장 방법

Publications (2)

Publication Number Publication Date
KR20150106657A KR20150106657A (ko) 2015-09-22
KR102127116B1 true KR102127116B1 (ko) 2020-06-26

Family

ID=54068928

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029005A KR102127116B1 (ko) 2014-03-12 2014-03-12 분산 데이터 저장 장치 및 분산 데이터 저장 방법

Country Status (2)

Country Link
US (1) US9933979B2 (ko)
KR (1) KR102127116B1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105242881B (zh) * 2015-10-12 2018-02-16 创新科软件技术(深圳)有限公司 分布式存储***及其数据读写方法
KR101628676B1 (ko) * 2015-12-22 2016-06-21 한국과학기술정보연구원 대용량 과학 데이터 파일의 분산 저장 시스템 및 방법
US11715025B2 (en) 2015-12-30 2023-08-01 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
US10168953B1 (en) 2016-05-20 2019-01-01 Nutanix, Inc. Dynamic scheduling of distributed storage management tasks using predicted system characteristics
US11016940B2 (en) 2016-06-02 2021-05-25 International Business Machines Corporation Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
US9690801B1 (en) 2016-06-02 2017-06-27 International Business Machines Corporation Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
US10902324B2 (en) 2016-06-13 2021-01-26 Nutanix, Inc. Dynamic data snapshot management using predictive modeling
US10361925B1 (en) 2016-06-23 2019-07-23 Nutanix, Inc. Storage infrastructure scenario planning
US10484301B1 (en) * 2016-09-30 2019-11-19 Nutanix, Inc. Dynamic resource distribution using periodicity-aware predictive modeling
US10691491B2 (en) 2016-10-19 2020-06-23 Nutanix, Inc. Adapting a pre-trained distributed resource predictive model to a target distributed computing environment
US10915493B2 (en) 2018-09-25 2021-02-09 International Business Machines Corporation Component building blocks and optimized compositions thereof in disaggregated datacenters
US10637733B2 (en) 2018-09-25 2020-04-28 International Business Machines Corporation Dynamic grouping and repurposing of general purpose links in disaggregated datacenters
US10671557B2 (en) 2018-09-25 2020-06-02 International Business Machines Corporation Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters
US11650849B2 (en) 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US10802988B2 (en) * 2018-09-25 2020-10-13 International Business Machines Corporation Dynamic memory-based communication in disaggregated datacenters
US11182322B2 (en) 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US10831698B2 (en) 2018-09-25 2020-11-10 International Business Machines Corporation Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
JP7302178B2 (ja) * 2019-01-22 2023-07-04 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステム
CN109933570B (zh) * 2019-03-15 2020-02-07 中山大学 一种元数据管理方法、***及介质
CN110162270B (zh) * 2019-04-29 2020-08-25 平安国际智慧城市科技股份有限公司 基于分布式存储***的数据存储方法、存储节点及介质
KR102583957B1 (ko) * 2020-04-02 2023-09-27 한국전자통신연구원 데이터베이스 서버 할당 방법 및 장치
CN114610232A (zh) * 2020-04-28 2022-06-10 华为技术有限公司 一种存储***、内存管理方法和管理节点
CN111917919B (zh) * 2020-07-31 2021-10-19 未来穿戴技术有限公司 模式管理方法、装置、移动终端及计算机存储介质
CN112035498B (zh) * 2020-08-31 2023-09-05 北京奇艺世纪科技有限公司 数据块调度方法、装置、调度层节点及存储层节点
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100042790A1 (en) * 2008-08-12 2010-02-18 Netapp, Inc. Scalable deduplication of stored data
US20100082547A1 (en) * 2008-09-22 2010-04-01 Riverbed Technology, Inc. Log Structured Content Addressable Deduplicating Storage
US20120158816A1 (en) 2010-12-15 2012-06-21 Electronics And Telecommunications Research Institute Service providing method and device using the same
US8495304B1 (en) 2010-12-23 2013-07-23 Emc Corporation Multi source wire deduplication

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062517B2 (en) * 2002-08-14 2006-06-13 Hitachi, Ltd. Method and apparatus for centralized computer management
US7487138B2 (en) * 2004-08-25 2009-02-03 Symantec Operating Corporation System and method for chunk-based indexing of file system content
US8266237B2 (en) * 2005-04-20 2012-09-11 Microsoft Corporation Systems and methods for providing distributed, decentralized data storage and retrieval
US8782368B2 (en) 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
US8140491B2 (en) 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
GB2467239B (en) 2010-03-09 2011-02-16 Quantum Corp Controlling configurable variable data reduction
KR101652436B1 (ko) 2010-08-17 2016-08-30 에스케이텔레콤 주식회사 분산파일 시스템에서의 중복 제거 장치 및 방법
US9104326B2 (en) 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100042790A1 (en) * 2008-08-12 2010-02-18 Netapp, Inc. Scalable deduplication of stored data
US20100082547A1 (en) * 2008-09-22 2010-04-01 Riverbed Technology, Inc. Log Structured Content Addressable Deduplicating Storage
US20120158816A1 (en) 2010-12-15 2012-06-21 Electronics And Telecommunications Research Institute Service providing method and device using the same
US8495304B1 (en) 2010-12-23 2013-07-23 Emc Corporation Multi source wire deduplication

Also Published As

Publication number Publication date
KR20150106657A (ko) 2015-09-22
US9933979B2 (en) 2018-04-03
US20150261466A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
KR102127116B1 (ko) 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US11082206B2 (en) Layout-independent cryptographic stamp of a distributed dataset
US10268716B2 (en) Enhanced hadoop framework for big-data applications
US10761758B2 (en) Data aware deduplication object storage (DADOS)
US10013317B1 (en) Restoring a volume in a storage system
JP6542909B2 (ja) ファイル操作方法及び装置
US11874815B2 (en) Key-value storage device and method of operating the same
US8112463B2 (en) File management method and storage system
US10831747B2 (en) Multi stage aggregation using digest order after a first stage of aggregation
US10169124B2 (en) Unified object interface for memory and storage system
US10372370B2 (en) Metadata load distribution management
TWI761419B (zh) 最大化可去重複記憶體的方法、記憶體系統和產品
KR20150071500A (ko) 데이터 관리 방법 및 장치
US10515055B2 (en) Mapping logical identifiers using multiple identifier spaces
KR20150121505A (ko) 데이터 중복 제거 방법 및 장치
WO2016106757A1 (zh) 一种存储数据的管理方法、存储管理器及存储***
US11132137B2 (en) Methods and systems for providing read-optimized scalable offline de-duplication for blocks of data
US10311026B2 (en) Compressed data layout for optimizing data transactions
US10817510B1 (en) Systems and methods for navigating through a hierarchy of nodes stored in a database
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
US10083121B2 (en) Storage system and storage method
JP2010170475A (ja) ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム
US9507794B2 (en) Method and apparatus for distributed processing of file
CN104537023A (zh) 一种反向索引记录的存储方法及装置
JP6110354B2 (ja) 異種記憶サーバおよびそのファイル記憶方法

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