KR101618269B1 - 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치 - Google Patents

분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치 Download PDF

Info

Publication number
KR101618269B1
KR101618269B1 KR1020150076508A KR20150076508A KR101618269B1 KR 101618269 B1 KR101618269 B1 KR 101618269B1 KR 1020150076508 A KR1020150076508 A KR 1020150076508A KR 20150076508 A KR20150076508 A KR 20150076508A KR 101618269 B1 KR101618269 B1 KR 101618269B1
Authority
KR
South Korea
Prior art keywords
lost
data blocks
node
data
nodes
Prior art date
Application number
KR1020150076508A
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 KR1020150076508A priority Critical patent/KR101618269B1/ko
Priority to US15/085,960 priority patent/US9864550B2/en
Application granted granted Critical
Publication of KR101618269B1 publication Critical patent/KR101618269B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1191Codes on graphs other than LDPC codes
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)
  • Quality & Reliability (AREA)

Abstract

본 발명은 분산 저장 시스템에서 손실된 데이터를 복구하기 위한 부호화 방법 및 그 장치와, 분산 저장 환경에서 데이터를 저장한 노드가 손실될 경우 이를 복구하는 기능을 지원하는 분산 저장 시스템에 관한 것이다.
이를 위하여 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법은, 저장 대상 데이터를 미리 정해진 일정한 개수의 데이터 블록으로 분할하는 단계; 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성하는 부호화 단계; 및 상기 생성한 각 심볼을 상기 분산 저장 시스템의 각 노드에 저장하는 저장 단계를 포함한다.
본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법에 의하면, 두 개 이상의 특정된 개수의 노드 손실에 대해 통합적으로 최적화된 로컬리티를 보장하고, 보다 작은 저장 용량을 이용하면서 동시에 보다 적은 수의 노드를 이용하여 분산 저장 시스템에서 손실된 노드의 데이터를 낮은 복잡도로 복구하는 효과가 있다.

Description

분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치{Method and Apparatus of Encoding for Data Recovery in Distributed Storage System}
본 발명은 분산 저장 시스템에서 손실된 데이터를 복구하기 위한 부호화 방법 및 그 장치와, 분산 저장 환경에서 데이터를 저장한 노드가 손실될 경우 이를 복구하는 기능을 지원하는 분산 저장 시스템에 관한 것이다.
빅 데이터의 안전한 저장과 복구를 위한 클라우드 저장 시스템이 도입되어 활발하게 이용되고 있다. 예를 들어 전세계적으로 검색 및 자료 제공 등의 서비스를 제공하는 Google, Facebook, Amazon, Microsoft 등의 회사들은 막대한 양의 자료를 저장하기 위해 클라우드 저장 시스템 즉 분산 저장 시스템을 이용하고 있다.
이와 같은 분산 저장 시스템에 저장되고 유통되는 정보의 양은 서비스 이용자의 증가와 컨텐츠의 양질화 등의 요인으로 인하여 빠른 속도로 증가하고 있다. 그런데 분산 저장 시스템에 있어서는 분산 노드 내 장비의 결함 또는 소프트웨어, 하드웨어적인 업데이트 등과 같은 요인으로 인하여 데이터의 손실이 발생하게 된다. 따라서 이러한 데이터 손실에 대응하여 손실된 데이터를 복구하기 위하여, 다양한 종류의 코딩 기법이 개발되어 사용되고 있다.
예를 들어 분산 저장 시스템에서 손실된 데이터를 복구하는 가장 기본적인 기존 부호화 방법으로 반복(Repetition) 부호화 방법이 있다. 이 방법에서는 데이터를 여러 개의 동일한 복사본을 만들어 여러 분산 노드에 저장하여, 복사된 노드들 중 어느 하나가 손실되더라도 나머지 노드를 이용하여 손실된 노드를 복구할 수 있도록 하는 방법이다.
데이터 손실 복구 부호화 기법에서 중요한 지표는 분산 저장 시스템의 노드 중 일부가 손실되었을 때 최소 몇 개의 다른 노드를 이용하여 손실된 노드들을 복구할 수 있는지를 나타내는 로컬리티(Locality) 값이다.
그런데 기존의 데이터 손실 복구 부호화 기법들은 하나의 특정된 개수의 노드가 손실된 경우 이를 복구하기 위해 필요한 노드의 개수인 로컬리티를 보장하는 방법만을 제안할 뿐 두 개 이상의 특정된 개수의 노드 손실에 대해 통합적으로 최적화된 로컬리티를 보장하지 못하였다는 한계점이 있었다.
공개특허공보 제10-2011-0051527호 (2011.05.18.)
본 발명이 해결하고자 하는 과제는, 저장 대상 데이터를 미리 정해진 일정한 개수의 데이터 블록으로 분할하는 단계; 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성하는 부호화 단계; 및 상기 생성한 각 심볼을 상기 분산 저장 시스템의 각 노드에 저장하는 저장 단계를 포함하는 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법을 이용하여, 다양한 노드 손실에 대해 통합적으로 최적화된 로컬리티를 보장하고, 두 개 이상의 특정된 개수의 노드 손실 시 낮은 복잡도 만으로 분산 저장 시스템에서 손실된 노드의 데이터를 복구하는 것이다.
상기 과제를 해결하기 위해 본 발명의 일 유형에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법은, 저장 대상 데이터를 미리 정해진 일정한 개수의 데이터 블록으로 분할하는 단계; 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성하는 부호화 단계; 및 상기 생성한 각 심볼을 상기 분산 저장 시스템의 각 노드에 저장하는 저장 단계를 포함할 수 있다.
여기서 상기 부호화 단계는 상기 분할한 각 데이터 블록을 나타내는 입력 심볼을 각 원소로 하는 입력 행렬과, 원소의 값이 1 또는 0 중 어느 하나이고 각 열벡터에 포함된 1의 개수가 2개 이하인 생성 행렬(Generator Matrix)을 곱하여 출력 행렬을 생성하고, 상기 출력 행렬에서 하나의 상기 입력 심볼에 대응하는 원소는 상기 정보 심볼로, 상기 출력 행렬에서 두 개의 상기 입력 심볼의 합에 대응하는 원소는 상기 패리티 심볼로, 각각 생성하는 것을 특징으로 할 수 있다.
여기서 상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고, 상기 생성 행렬은 해밍 무게가 1인 열벡터 모두와 해밍 무게가 2인 열벡터 모두를 포함하는 행렬인 것을 특징으로 할 수 있다.
여기서 상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고, 상기 생성 행렬은 해밍 무게가 1인 열벡터 모두와 해밍 무게가 2인 열벡터 중 일부를 포함하는 행렬이되, 해밍 무게가 2인 모든 열벡터들의 집합을 미리 정해진 일정한 개수의 그룹으로 분할하고, 상기 분할한 그룹에서 동일한 그룹에 속하는 두 행의 값이 모두 1인 열벡터가 제거된 행렬인 것을 특징으로 할 수 있다.
여기서 상기 생성 행렬은 상기 생성 행렬의 열의 순서를 바꿔 만드는 다른 행렬을 포함하는 것을 특징으로 할 수 있다.
여기서 상기 분산 저장 시스템의 노드는 손실될 경우, 상기 손실된 노드 이외의 나머지 상기 노드를 이용하여 복구될 수 있고, 상기 부호화 단계는, 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지하면서 상기 부호화 단계에서 생성하는 패리티 심볼의 개수를 줄이기 위하여, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 부호화 단계는 상기 선택한 두 개의 데이터 블록을 더하여 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법은 상기 분산 저장 시스템의 노드들 중 어느 노드가 손실된 경우, 상기 손실된 노드 이외의 나머지 상기 노드들 중에서 적어도 하나 이상의 상기 노드를 선택하고, 상기 선택한 노드를 이용하여 상기 손실된 노드를 복구하는 복구 단계를 더 포함할 수 있다.
여기서 상기 저장 단계에서 상기 정보 심볼이 저장된 상기 노드는 정보 노드, 상기 패리티 심볼이 저장된 상기 노드는 패리티 노드인 것을 특징으로 할 수 있다.
여기서 상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 일부를 선택하고 상기 선택한 데이터 블록들을 이용하여 상기 패리티 심볼을 부호화하되, 세 개 이상의 상기 데이터 블록은 선택하지 아니하고 두 개만의 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되는 경우, 상기 부호화 단계는 k개의 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우의 수인 k(k-1)/2 가지의 경우에 대하여, 상기 각 경우 선택한 두 개의 상기 데이터 블록을 이용하여 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 부호화 단계는 상기 정보 심볼은 k개, 상기 패리티 심볼은 k(k-1)/2개로 각 생성하고, 상기 저장 단계에서 저장된 상기 노드들 중 k-1개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있는 것을 특징으로 할 수 있다.
여기서 상기 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고, 동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 3개를 선택하여 상기 손실된 노드 2개를 복구할 수 있는 것을 특징으로 할 수 있다.
여기서 상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 균일하게 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화하는 것을 특징으로 할 수 있다.
여기서 상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되고 상기 그룹의 개수가 p개인 경우, 상기 부호화 단계는 상기 정보 심볼은 k개, 상기 패리티 심볼은 k(k-k/p)/2개로 각 생성하고, 상기 저장 단계에서 저장된 상기 노드들 중 k-k/p개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있는 것을 특징으로 할 수 있다.
여기서 상기 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고, 동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 4개를 선택하여 상기 손실된 노드 2개를 복구할 수 있는 것을 특징으로 할 수 있다.
상기 과제를 해결하기 위해 본 발명의 또 다른 유형에 따른 컴퓨터 프로그램은 상술한 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램이 될 수 있다.
상기 과제를 해결하기 위해 본 발명의 일 유형에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치는, 저장 대상 데이터를 미리 정해진 일정한 개수로 분할한 데이터 블록을 부호화하여 적어도 두 개 이상의 심볼을 생성하되, 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성하는 부호화기;를 포함하고, 상기 생성한 각 심볼은 상기 분산 저장 시스템의 각 노드에 저장되는 것을 특징으로 할 수 있다.
본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법에 의하면, 두 개 이상의 특정된 개수의 노드 손실에 대해 통합적으로 최적화된 로컬리티를 보장하고, 보다 작은 저장 용량을 이용하면서 동시에 보다 적은 수의 노드를 이용하여 분산 저장 시스템에서 손실된 노드의 데이터를 낮은 복잡도로 복구하는 효과가 있다.
도 1a 내지 도1c는 기존의 분산 저장 시스템을 설명하기 위한 참고도이다.
도 2는 기존의 반복 부호화 방법이 동작하는 방식을 나타내는 참고도이다.
도 3은 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법의 흐름도이다.
도 4는 복구 단계를 더 포함하는 실시예를 나타내는 흐름도이다.
도 5는 본 발명에 따른 완전 그래프 코드 기법을 이용한 부호화 방법의 동작을 설명하기 위한 참고도이다.
도 6과 도 7은 본 발명에 따른 완전 그래프 코드 기법을 이용한 부호화 방법의 로컬리티를 설명하기 위한 참고도이다.
도 8은 본 발명에 따른 완전 그래프 코드 기법을 이용한 부호화 방법에서 최소거리를 설명하기 위한 참고도이다.
도 9는 본 발명에 따른 완전 다분할 그래프 코드 기법을 이용한 부호화 방법의 동작을 설명하기 위한 참고도이다.
도 10과 도 11은 본 발명에 따른 완전 다분할 그래프 코드 기법을 이용한 부호화 방법의 로컬리티를 설명하기 위한 참고도이다.
도 12는 본 발명에 따른 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에서 최소거리를 설명하기 위한 참고도이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조 부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다. 또한, 이하에서 본 발명의 바람직한 실시예를 설명할 것이나, 본 발명의 기술적 사상은 이에 한정하거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있음은 물론이다.
빅 데이터 시대가 도래함에 따라, 대용량의 빅 데이터를 저장하기 위하여 네트워크 상의 여러 개의 노드들을 이용하는 분산 저장 시스템이 개발되어 이용되고 있다. 분산 저장 시스템은 원본 데이터를 여러 개의 블록들로 나눈 후 부호화를 통해 분산된 클라우드의 노드에 각 저장하고, 원본 데이터가 필요한 경우 각 노드들에 저장된 데이터들을 취함하여 원본 데이터를 획득하는 저장 시스템을 의미한다.
이와 같은 분산 저장 시스템에서 중요한 사항은 데이터를 복수개의 노드들에 분산하여 저장하였다가 다시 원래의 데이터 대로 정확하게 복구하는 것이다. 그런데 분산 저장 시스템에서 사용되는 저장 공간의 총량이 매우 크게 증가함에 따라 저장 하드웨어 장치의 오류, 저장 시스템 내 장비의 결함, 소프트웨어의 업데이트 또는 네트워크 상의 오류 등으로 인하여 저장 노드들 중 일부가 손실되거나 손실되는 경우가 발생하게 된다. 예를 들어 Facebook의 경우 사진 파일 저장을 위한 공간이 수십 페타 바이트(테라 바이트의 1024배)에 이르고, 주기적으로 수천개의 저장 노드들 중 수십개의 저장 노드들이 손실되고 있다는 것이다.
따라서 분산 저장 시스템에서는 단순히 원본 데이터를 분할하여 복수 개의 노드들에 분산하여 저장한 후 이를 다시 불러와 복구하는 방법 만으로는, 위와 같은 저장 노드의 손실에 대응할 수 없다. 이에 저장 노드의 손실에 대응하기 위하여 원본 데이터를 분할하여 노드에 분산 저장하기 위한 다양한 부호화 방법들이 제안되어 왔다. 기존의 분산 저장 시스템에서의 부호화 방법들은 기본적으로 원본 데이터를 분할할 때 데이터 복구를 위한 별도의 데이터를 부호화하고 이를 원본 데이터와 함께 각 노드들에 저장한 다음, 손실된 노드가 발생할 경우 다른 노드들을 이용하여 손실된 노드를 복구하거나 또는 손실된 노드의 내용을 복구하여 대체 노드에 저장하는 동작을 수행한다.
도 1a 내지 도1c는 이와 같이 기존의 분산 저장 시스템이 원본 데이터를 분할 및 부호화하여 네트워크 상에 분산된 노드들에 저장하고, 이를 다시 수집하여 원본 데이터를 획득하거나 또는 특정 노드가 손실되었을 시 손실된 노드를 복구하는 과정을 도시한 참고도이다.
도 1a는 원본 데이터가 일정한 개수의 데이터 블록으로 분할된 다음 부호화 과정을 거쳐 분산된 각 노드들에 저장되는 과정을 나타내는 참고도이다. 또한 도 1b는 도 1a와 같이 분산되어 존재하는 노드들(n개) 중 일부(k개)를 선택하고 선택한 노드들로부터 데이터를 수집하여 원본 데이터를 획득하는 과정을 나타내는 참고도이다. 도 1c는 노드 중 어느 하나(예를 들어 D1)가 손실된 경우 나머지 D2 내지 Dn의 노드들 중 일부(d개)를 선택하고 선택한 노드들로부터 데이터를 수집하고 수집한 데이터를 이용하여 손실된 노드(D1)의 데이터를 복구하여 대체 노드에 저장하는 과정을 나타내는 참고도이다. 즉 이와 같은 데이터 손실을 복구하는 부호화 방법을 이용하면, 원본 데이터를 분할하여 저장하고 있는 복수개의 노드들 중 일부가 손실되는 경우라도 나머지 노드를 이용하여 손실된 노드를 복구할 수 있고, 사용자는 이와 같이 손실된 노드가 주기적으로 복구되어 관리되는 분산 저장 시스템에서 필요로 하는 원본 데이터를 획득할 수 있다.
예를 들어 분산 저장 시스템에서 손실된 데이터를 복구하는 가장 기본적인 기존 부호화 방법으로 반복(Repetition) 부호화 방법이 있다. 이 방법에서는 원본 데이터를 분할할 때 여러 개의 동일한 복사본을 만들어 여러 분산 노드에 저장하여, 복사된 노드들 중 어느 하나가 손실되면 나머지 노드를 이용하여 손실된 노드를 복구하는 방법이다. 도 2는 이와 같은 반복 부호화 방법이 동작하는 방식을 나타내는 참고도이다.
이와 같은 분산 저장 시스템에서 손실 데이터를 복구하는 부호화 방법의 성능을 평가하는 지표로는 원본 데이터의 수집 성공률, 손실 데이터의 복구 성공률, 분산 노드의 저장 공간 용량, 복구 대역폭 또는 코딩 레이트, 복구를 위한 접속 노드의 수 등이 있다. 여기서 복구 대역폭은 손실된 노드를 복구하기 위하여 다운로드하여야 하는 데이터의 량을 나타내는 지표이다.
특별히 여기서 복구를 위한 접속 노드의 수는 임의의 손실된 노드를 복구하기 위하여 이용하여야 하는 최소 노드의 수를 의미하며, 로컬리티(Locality)로 표현한다. 분산 저장 시스템에서 이러한 로컬리티는 임의의 손실된 노드를 복구하는 과정에서 연결하여 이용하여야 하는 최소 노드의 수가 된다. 여기서 임의의 노드 l개가 손실된 경우 손실된 l개의 노드들을 복구하기 위하여 이용되어야 하는 최소 노드의 개수는 l-로컬리티(
Figure 112015052196047-pat00001
)로 정의될 수 있다.
예를 들어 n개의 노드들 중 어느 하나가 손실되어 이를 복구하는데 최소 3개의 노드가 필요하다면, 이 때 1-로컬리티는 3이 된다. 이와 같은 로컬리티는 손실된 노드를 복구함에 있어서 필요한 노드의 수를 결정하는 지표이기 때문에, 분산 저장 시스템의 성능을 결정하는 중요한 지표이다. 보다 적은 로컬리티를 보장하는 부호화 방법을 사용하는 경우, 손실된 노드를 복구하는데 보다 적은 수의 노드만이 필요하기 때문에 손실된 노드를 보다 빠르게 복구할 수 있고 네트워크 트래픽을 줄일 수 있다는 장점이 있다.
그런데 기존의 분산 저장 시스템에서의 부호화 방법은 하나의 특정된 개수의 노드가 손실된 경우 이를 복구하기 위해 필요한 노드의 개수인 로컬리티(혹은 l-로컬리티)를 보장하는 방법만을 제안하여 왔다. 그러나 실제 분산 저장 시스템 상에서는 노드가 손실되는 다양한 경우가 존재하기 때문에, 통합적으로 최적화된 로컬리티를 보장하는 부호화 방법이 고안되어야 할 필요가 있다.
이에 본 발명에 따른 데이터 손실 복구 부호화 방법은 두 개 이상의 특정된 개수의 노드 손실에 대해 이를 복구하기 위해 필요한 최소 노드의 개수를 함께 나타내는 조인트 로컬리티(Joint Locality)로 정의하고, 이와 같은 조인트 로컬리티를 특정한 수로 보장하는 데이터 손실 복구 부호화 방법을 개시한다. 예를 들면 본 발명에 따른 데이터 손실 복구 부호화 방법은 노드 1개가 손실된 경우와 노드 2개가 손실된 경우 각각 로컬리티 2와 3을 보장하는 부호화 방법을 개시한다. 이 경우 조인트 로컬리티는 (
Figure 112015052196047-pat00002
)로 표시하기로 한다. 또한 본 발명에 따른 데이터 손실 복구 부호화 방법은 노드 1개가 손실된 경우와 노드 2개가 손실된 경우 각각 로컬리티 2와 4를 보장하는 부호화 방법도 개시한다. 이 경우 조인트 로컬리티는 (
Figure 112015052196047-pat00003
)로 표시된다.
이하에서는 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법과 그 장치에 대하여 보다 상세히 설명한다.
도 3은 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법의 흐름도이다.
상기 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법은 저장 대상 데이터 분할 단계(S100), 부호화 단계(S200), 저장 단계(S300)를 포함할 수 있다. 또한 필요에 따라 복구 단계(S400)를 더 포함할 수도 있다. 도 4는 이와 같이 복구 단계(S400)를 더 포함하는 실시예를 나타내는 흐름도이다.
저장 대상 데이터 분할 단계(S100)는 저장 대상 데이터를 미리 정해진 일정한 개수의 데이터 블록으로 분할한다.
부호화 단계(S200)는 부호화기(100)가 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성한다.
여기서 위와 같이 생성된 정보 심볼과 패리티 심볼을 통칭하여 심볼이라고 지칭한다.
부호화 단계(S200)에서 부호화기(100)는 각 데이터 블록을 정보 심볼로 생성하고, 데이터 블록들에서 두 개씩 선택한 조합에 대하여 각각 패리티 심볼을 부호화하여 생성한다. 예를 들어 저장 대상 데이터가 A, B, C의 세 개의 데이터 블록으로 분할된 경우, 부호화기(100)는 A, B, C 블록에 따라 각각 정보 심볼 S_A, S_B, S_C을 생성하고, A, B, C 데이터 블록들 중에서 두 개씩 선택한 조합인 (A, B), (B, C), (A, C)의 각 조합에 대하여는 패리티 심볼로 S_(A, B), S_(B, C), S_(A, C) 을 부호화하여 생성할 수 있다. 이하에서는 X, Y를 임의의 데이터 블록이라고 할 때, S_X는 X 데이터 블록에 대하여 생성된 정보 심볼을 지칭하고, S_(X, Y)는 X 데이터 블록과 Y 데이터 블록 2개를 선택하고 이들을 이용하여 부호화한 패리티 심볼을 지칭하는 것으로 한다.
저장 단계(S300)는 상기 생성한 각 심볼을 상기 분산 저장 시스템의 각 노드에 저장한다.
즉 부호화 단계(S200)에서 생성된 정보 심볼과 패리티 심볼을 포함하는 심볼들은 분산 저장 시스템 상의 각 노드에 저장될 수 있다. 여기서 분산 저장 시스템의 각 노드는 분산 저장 시스템 내의 정보 저장 장치에서 형성된 노드들이 될 수 있고 네트워크 상에서 서로 연결될 수 있다.
여기서 상기 정보 심볼이 저장된 상기 노드는 정보 노드, 상기 패리티 심볼이 저장된 상기 노드는 패리티 노드가 된다. 위의 예를 다시 들면 부호화 단계(S200)에서 생성된 각 심볼 S_A, S_B, S_C, S_(A, B), S_(B, C), S_(A, C)는 분산 저장 시스템의 각 노드에 저장될 수 있다.
여기서 상기 분산 저장 시스템의 노드는 특정 노드가 손실될 경우, 상기 손실된 노드 이외의 나머지의 노드를 이용하여 복구될 수 있는 성질을 가진다. 이는 상기 생성된 심볼에 있어서, 특정 심볼이 손실될 경우 상기 손실된 심볼 이외의 나머지 심볼을 이용하여 복구될 수 있는 것과 동일한 의미를 가진다. 따라서 이하에서 특정 심볼이 손실되거나 특정 노드가 손실된 경우 이를 복구하는 방법을 설명함에 있어서는 심볼에 대하여 설명한 부분은 해당 심볼이 저장된 노드에 대하여 동일하게 적용될 수 있고, 노드에 대하여 설명한 부분은 해당 노드가 저장하고 있는 심볼에 대하여 동일하게 적용될 수 있다. 이때 복구된 데이터는 원래의 저장 노드에 저장될 수도 있고, 또는 다른 저장 장소에 대체 노드로써 저장될 수도 있다.
복구 단계(S400)는 상기 분산 저장 시스템의 노드들 중 어느 노드가 손실된 경우, 상기 손실된 노드 이외의 나머지 상기 노드들 중에서 적어도 하나 이상의 상기 노드를 선택하고, 상기 선택한 노드를 이용하여 상기 손실된 노드를 복구한다.
이하에서는 본 발명의 부호화 단계(S200)에 따른 부호화 방법에 대하여 보다 상세히 설명한다. 부호화 단계(S200)에서 부호화기(100)는 상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성한다. 이와 같은 부호화 방법에 따라 생성된 심볼들은 미리 정해진 조인트 로컬리티 값을 유지하면서, 동시에 부호화율을 향상시킨다. 또한 손실된 노드를 복구하기 위해 필요한 노드의 개수를 미리 정해진 정도로 유지할 수 있다. 여기서 부호화율을 향상시킨다는 것은 패리티 심볼의 개수를 줄임으로써 분산 저장 시스템에 저장되는 노드의 수를 줄이고 또한 이로써 손실된 노드를 복구할 경우 연결하여야 하는 패리티 심볼을 저장하는 노드의 총 수를 줄인다는 의미가 될 수 있다.
여기서 정보 심볼은 데이터 블록에 대응하여 생성한다. 즉 정보 심볼은 데이터 블록의 내용을 모두 포함하고, 또한 정보 심볼을 이용하여 해당 데이터 블록의 내용을 획득할 수 있도록 각 데이터 블록에 대응하여 생성한다. 또한 패리티 심볼은 위와 같이 복수개의 데이터 블록을 이용하여 부호화하여 생성한다.
여기서 부호화 단계(S200)는 두 개의 데이터 블록을 이용하여 패리티 심볼을 부호화 할 때, 두 개의 데이터 블록을 더하여 패리티 심볼을 부호화할 수 있다. 여기서 패리티 심볼을 부호화하는 방법은 이와 같이 두 개의 데이터 블록을 더하는 것에 한정되지는 아니하고, 분산 저장 시스템에서 복수개의 데이터 블록을 이용하여 패리티 심볼을 생성하는 다양한 방법을 이용할 수 있다.
보다 상세히 설명하면, 부호화 단계(S200)는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 일부를 선택하고 상기 선택한 데이터 블록들을 이용하여 상기 패리티 심볼을 생성하되, 세 개 이상의 상기 데이터 블록은 선택하지 아니하고 두 개만의 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 생성할 수 있다.
즉 예를 들면 저장 대상 데이터가 분할되어 A, B, C, D의 데이터 블록이 있는 경우, (A, B, C) 또는 (A, B, C, D)와 같은 세 개 이상의 데이터 블록의 조합은 이용하지 아니하고, (A, B) 또는 (B, C)와 같은 두 개의 데이터 블록 조합만을 이용하여 패리티 심볼을 생성하는 것이다.
이상과 같은 부호화 단계(S200)의 부호화 방법은 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지하면서, 생성하는 패리티 심볼의 개수를 줄이는 효과가 있다.
이상과 같은 부호화 단계(S200)의 동작을 생성 행렬(Generator Matrix)을 이용한 부호화 기법으로 설명하면 다음과 같다.
부호화 단계(S200)는 상기 분할한 각 데이터 블록을 나타내는 입력 심볼을 각 원소로 하는 입력 행렬과, 원소의 값이 1 또는 0 중 어느 하나이고 각 열벡터에 포함된 1의 개수가 2개 이하인 생성 행렬(Generator Matrix)을 곱하여 출력 행렬을 생성한다. 여기서 입력 심볼이란 각 데이터 블록을 나타내는 심볼을 지칭하고, 이들 입력 심볼로 이루어지는 행렬인 입력 행렬을 상기 생성 행렬과 곱하여 출력 행렬을 생성한다는 의미에서 '입력' 심볼 및 '입력' 행렬이라고 지칭한다.
예를 들어 분할한 각 데이터 블록을 나타내는 A, B, C를 각 원소로 하는 입력 행렬 [A, B, C]와, 원소의 값이 1 또는 0 중 어느 하나이고 각 열벡터에 포함된 1의 개수가 2개 이하인 생성 행렬
Figure 112015052196047-pat00004
을 곱하여 출력 행렬로 [A, B, C, A+B, A+C, B+C]를 생성할 수 있다.
다음으로 부호화 단계(S200)는 위와 같이 생성 행렬을 이용하여 생성한 출력 행렬에 따라 정보 심볼과 패리티 심볼을 생성할 수 있다. 먼저 상기 출력 행렬에서 하나의 상기 입력 심볼에 대응하는 원소는 상기 정보 심볼로 생성한다. 다음으로 상기 출력 행렬에서 두 개의 상기 입력 심볼의 합에 대응하는 원소는 상기 패리티 심볼로 생성한다.
즉 상기 예를 들면 하나의 입력 심볼에 대응하는 원소인 A, B, C는 각 정보 심볼 S_A, S_B, S_C로 생성하고, 두 개의 입력 심볼의 합에 대응하는 원소인 A+B, A+C, B+C는 각 패리티 심볼 S_(A, B), S_(A, C), S_(B, C)로 생성할 수 있다.
또한 여기서 상기 생성 행렬은 상기 생성 행렬의 열의 순서를 바꿔 만드는 다른 행렬을 포함할 수 있다. 다시 말하면 생성 행렬은 생성 행렬의 열벡터 간에 순서를 바꿔 만들어질 수 있는 모든 행렬들, 즉 모든 가능한 열-섞음(Column-Permutation)으로 만들어지는 행렬들을 포함할 수 있고, 이들 중 어느 하나를 생성 행렬로 사용할 수 있다.
본 발명은 기본적으로 위와 같은 방식으로 부호화를 수행하는데, 보다 상세하게 패리티 심볼을 생성하는 방법에 따라 본 발명은 크게 두 가지의 부호화 방법을 개시한다. 첫 번째 부호화 방법은 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화하는 방법으로, 이 방법을 완전 그래프 코드(Complete Graph code) 기법을 이용한 부호화 방법이라 지칭한다. 둘째로는 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화하는 방법으로, 이 방법을 완전 다분할 그래프 코드(Complete Multipartite Graph code) 기법을 이용한 부호화 방법이라 지칭한다.
이하에서는 먼저 완전 그래프 코드 기법을 이용한 부호화 방법에 대하여 상세히 설명한다.
이 경우 부호화 단계(S200)에서 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화할 수 있다.
즉 예를 들면 저장 대상 데이터가 분할되어 A, B, C, D의 데이터 블록이 있는 경우, 이들 데이터 블록 중 서로 다른 2개를 선택할 수 있는 모든 조합인 (A, B), (A, C), (A, D), (B, C), (B, D), (C, D)에 대하여 각 조합의 데이터 블록을 이용하여 패리티 심볼을 부호화하는 것이다. 여기서는 상술한 바와 같이 3개 이상의 데이터 블록을 포함하는 조합 즉 (A, B, C)나 (A, B, C, D)와 같은 조합에 대하여는 패리티 심볼을 부호화하지 않는다.
이를 생성 행렬을 이용하는 부호화 기법으로 설명하면, 상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고, 상기 생성 행렬은 해밍 무게(Hamming Weight)가 1인 열벡터 모두와 해밍 무게가 2인 열벡터 모두를 포함하는 행렬인 것을 특징으로 할 수 있다.
여기서 해밍 무게(Hamming Weight)는 0 또는 1을 원소로 가지는 열벡터에 포함된 1의 개수를 의미한다. 따라서 열벡터에 포함된 원소 중 1의 개수가 1개이면 해밍 무게는 1, 2개이면 해밍 무게는 2개가 된다.
또한 아래에서 설명할 바와 같이 완전 그래프 코드 기법을 이용한 부호화 방법에서는 k 개의 데이터 블록 중 두 개씩만을 선택하고 이들 선택 조합을 이용하여 패리티 심볼을 부호화하므로, 총 생성되는 패리티 심볼의 개수는
Figure 112015052196047-pat00005
= k(k-1)/2 개가 되고, 정보 심볼은 각 데이터 블록마다 생성되므로 k 개가 되고, 따라서 총 생성되는 심볼의 수 n 은 k(k-1)/2 + k = k(k+1)/2 개가 된다. 따라서 상술한 생성 행렬의 크기는 k x (k(k+1)/2) 가 되고, k x k 크기의 단위행렬(Identity Maxtrix) 성분과 해밍 무게가 2인 모든 열벡터, 즉 1 원소를 2개만 포함하는 모든 열벡터 성분인 k x (k(k-1)/2) 크기의 행렬 성분을 포함한다. 도 5의 (a) 내지 (d)의 생성 행렬(Generator Matrix)는 이와 같은 완전 그래프 코드 기법을 이용한 부호화 방법에 따른 생성 행렬의 예이다.
여기서 상술한 바와 같이 생성 행렬은 열-섞음으로 만들어질 수 있는 모든 행렬을 포함한다. 따라서 해밍 무게가 1인 열벡터 모두와 해밍 무게가 2인 열벡터 모두에 대하여 열벡터의 순서를 섞어서 만들 수 있는 모든 행렬이 상기 생성 행렬이 될 수 있다.
본 발명에 따른 부호화 단계(S200)는 위와 같이 패리티 심볼을 생성함으로써, 첫째로 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지할 수 있다. 여기서 특별히 본 발명에 따른 부호화 단계(S200)는 조인트 로컬리티를 (
Figure 112015052196047-pat00006
)로 유지할 수 있다. 다시 말하면 임의의 노드(심볼) 1개가 손실될 경우 최소 2개의 다른 노드(심볼)를 이용하여, 임의의 노드(심볼) 2개가 손실될 경우 최소 3개의 다른 노드(심볼)를 이용하여 손실된 노드(심볼)를 복구하는 것이 가능하다.
또한 둘째로 부호화 단계(S200)에서 생성하는 패리티 심볼의 개수를 줄이는 효과가 있다.
또한 셋째로 본 발명에 따른 부호화 단계(S200)는 위와 같이 패리티 심볼을 부호화함으로써 최대 k - 1개 까지 노드(심볼)가 손실되어도 다른 노드(심볼)들을 이용하여 손실된 노드(심볼)를 복구할 수 있는 효과가 있다. 이 경우 최대 복구 가능한 손실 노드(심볼)의 수를 나타내는 지표인 최소거리 d 는 k가 된다.
이때 상술한 바와 같이 k 개로 분할된 데이터 블록을 n 개의 심볼로 생성하고 상술한 최소거리가 d 가 되는 부호화 방법이
Figure 112015052196047-pat00007
로 표현한다고 할 때, 본 발명에 따른 완전 그래프 코드 기법을 이용한 부호화 방법은
Figure 112015052196047-pat00008
로 표현될 수 있다. 즉 부호화 단계(S200)에서 k 개의 데이터 블록 중 두 개씩만을 선택하고 이들 선택 조합을 이용하여 패리티 심볼을 부호화하므로, 총 생성되는 패리티 심볼의 개수는
Figure 112015052196047-pat00009
= k(k-1)/2 개가 된다. 그리고 정보 심볼은 각 데이터 블록마다 생성되므로 k 개가 되고, 따라서 총 생성되는 심볼의 수 n 은 k(k-1)/2 + k = k(k+1)/2 개가 된다. 따라서 위 부호화 방법은
Figure 112015052196047-pat00010
로 표현될 수 있다.
즉 상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되는 경우, 부호화 단계(S200)는 k개의 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우의 수인 k(k-1)/2 가지의 경우에 대하여, 상기 각 경우 선택한 두 개의 상기 데이터 블록을 이용하여 각 패리티 심볼을 부호화한다.
이와 같은 본 발명에 따른 부호화 단계(S200)에서 완전 그래프 코드 기법을 이용한 부호화 방법의 동작을 그래프로 표현하면 도 5의 표와 같이 표현될 수 있다. 도 5를 참조하면 예를 들어 분할된 데이터 블록의 수 k 가 4인 경우 그래프 노드가 정보 심볼을(여기서 그래프 노드는 분산 저장 시스템의 노드와는 별개의 개념이다), 그래프 에지가 패리티 심볼을 각 나타낸다고 할 때(에지로 연결되는 두 개의 그래프 노드를 이용하여 패리티 심볼을 생성함), 부호화 단계(S200)에서 생성하는 심볼들은 도 5의 (d)의 해당 그래프와 같이 표현될 수 있다.
본 발명에서는 상술한 도 5의 그래프와 같이 표현되는 부호화 단계(S200)의 부호화 방법을 완전 그래프 코드(Complete Graph code) 기법을 이용한 부호화 방법이라고 지칭한다.
이하에서는 부호화 단계(S200)에 따른 부호화 방법이 상술한 세 가지 효과, 즉 일정한 조인트 로컬리티 보장, 패리티 심볼 개수 감소, 최소거리 보장을 달성하는 원리에 대하여 설명하고 이를 증명한다.
첫째로 본 발명에 따른 부호화 단계(S200)는 위와 같이 패리티 심볼을 부호화함으로써, 첫째로 상기 손실된 노드(심볼)를 복구하기 위해 필요한 상기 노드(심볼)의 개수를 미리 정해진 정도로 유지할 수 있고, 보다 구체적으로는 조인트 로컬리티를 (
Figure 112015052196047-pat00011
)로 유지할 수 있다. 즉 임의의 노드(심볼) 1개가 손실될 경우 최소 2개의 다른 노드(심볼)를 이용하여, 임의의 노드(심볼) 2개가 손실될 경우 최소 3개의 다른 노드(심볼)를 이용하여 손실된 노드(심볼)를 복구하는 것이 가능하다.
먼저 임의의 심볼이 1개 손실될 경우 최소 2개의 다른 심볼을 이용하여 손실된 심볼을 복구할 수 있다는 사실을 증명한다. 임의의 정보 심볼 S_X가 손실될 경우 상술한 완전 그래프 코드 기법을 이용한 부호화 방법에 따라 생성된 심볼들 중에는 S_X와 함께 그래프 에지로 연결된 정보 심볼 S_Y과, S_X와 S_Y간을 연결하는 그래프 에지로 표현되는 패리티 심볼 S_(X, Y)이 존재한다. 따라서 S_Y 심볼과 S_(X, Y) 심볼을 이용하여 S_X 심볼을 복구할 수 있다. 만일 임의의 패리티 심볼 S_(Z, Y)가 손실될 경우에는 심볼들 중에서 손실된 패리티 심볼이 에지로 연결하는 노드에 대응하는 S_Z와 S_Y가 존재한다. 따라서 S_Z와 S_Y 심볼을 이용하여 S_(Z, Y) 심볼을 복구할 수 있다. 도 6은 상술한 증명 과정을 도시하는 참고도이다. 도 6은 상술한 완전 그래프 코드에서 심볼 1개가 손실될 수 있는 모든 경우의 수 2개를 나타내고 있고, 그 경우 상술한 바와 같이 다른 관련 심볼을 이용하여 손실된 심볼을 복구할 수 있다.
다음으로 임의의 심볼이 2개 손실될 경우 최소 3개의 다른 심볼을 이용하여 손실된 심볼을 복구할 수 있다는 사실을 증명한다. 도 7은 위 경우의 증명 과정을 도시하는 참고도이다. 임의의 심볼이 2개 손실되는 경우 즉 심볼에 대응하는 노드 2개가 손실되는 경우는, 그래프 상에서 도 7과 같이 총 5가지 경우가 존재할 수 있다. 먼저 도 7의 (a)의 경우를 살펴보면 임의의 정보 심볼 S_X, S_Y가 손실될 경우 상술한 완전 그래프 코드 기법을 이용한 부호화 방법에 따라 생성된 심볼들 중에는 S_X, S_Y와 함께 그래프 에지로 연결된 정보 심볼 S_Z가 존재하고 S_Z를 S_X 및 S_Y와 연결하는 그래프 에지에 해당하는 패리티 심볼 S_(X, Z), S_(Y, Z)이 존재한다. 따라서 S_Z 심볼과 S_(X, Z), S_(Y, Z) 심볼을 이용하여 S_X 및 S_Y 심볼을 복구할 수 있다. 나머지 도 7의 (b) 내지 (e)의 경우도 위 (a)의 경우와 동일하게 손실된 심볼(도 7의 X 표시와 같이 손실)과 관련있는 다른 심볼들 3개를 선택하고(도 7의 점선 표시 동그라미와 같이 선택) 이들을 이용하여 손실된 심볼 2개를 복구할 수 있다.
이처럼 본 발명에 따른 부호화 단계(S200)는 위와 같이 패리티 심볼을 부호화함으로써, 조인트 로컬리티를 (
Figure 112015052196047-pat00012
)로 유지할 수 있다.
둘째로 부호화 단계(S200)에 따른 부호화 방법은 데이터 블록을 세 개 이상 조합하여 생성하는 패리티 심볼은 모두 제외하고 두 개의 데이터 블록만을 조합하여 패리티 심볼을 생성하여 조인트 로컬리티를 (
Figure 112015052196047-pat00013
)로 유지하면서 분산 저장 시스템에 저장하여야 하는 심볼의 수를 줄일 수 있다.
셋째로
Figure 112015052196047-pat00014
로 표현되는 완전 그래프 코드 기법을 이용한 부호화 방법에서 최소거리 d는 k로 보장된다. 즉 최대 k - 1개의 심볼이 손실되어도 나머지 심볼을 이용하여 손실된 심볼을 복구할 수 있다. 도 8의 (a), (b)는 본 발명에 따른 완전 그래프 코드 기법을 이용한 부호화 방법에서 최소거리 d 가 k 임을 증명하기 위한 참고도이다. 도 8의 (a), (b)에서 확인할 수 있는 바와 같이 도 5와 같이 연결되는 그래프의 각 그래프 노드와 그래프 에지에 대응하는 심볼들은 각각 해당 심볼을 복구할 수 있는 (k - 1)개의 심볼 집합을 보유하고 있다. 도 8에서 이와 같은 심볼 집합들은 점선으로 선택된 심볼들을 지칭한다. 그리고 이때 심볼 집합의 원소의 수는 2개이다. 예를 들어 심볼 S_X가 손실된 경우 이는 도 8 (a)의 경우와 같이 S_(X, Y)와 S_Y를 포함하는 심볼 집합 {S_(X, Y), S_Y}를 이용하여 복구될 수 있다. 그리고 그래프 노드의 개수가 k개 이므로 이와 같은 심볼 집합은 총 (k - 1) 개가 존재한다. 예를 들면 k개의 정보 심볼을 S_I1 내지 S_Ik로 표현할 때, S_I1에 대하여는 {S_(I1, I2), S_I2}, {S_(I1, I3), S_I3}, ... {S(I1, Ik), S_Ik}의 총 (k-1) 개의 심볼 집합이 존재한다. 또한 심볼 S_(X, Y)가 손실된 경우 도 8 (b)와 같이 심볼 집합 {S_X, S_Y}의 형태나 또는 {S_(X, Z), S_(Y, Z)}을 이용하여 손실된 위 심볼이 복구될 수 있다.
따라서 만일 (k - 1) 개의 임의의 심볼이 손실된 경우, 각각의 손실된 심볼들에 대하여는 (k - 1)개의 복구를 위한 심볼 집합이 존재한다. 이때 하나의 손실된 심볼을 복구하면 손실된 심볼의 수는 (k - 2)개가 된다. 그렇다면 (k - 2)개의 손실된 심볼이 특정 심볼을 복구하기 위한 (k - 1) 개의 심볼 집합들을 모두 점유할 수는 없기 때문에, 적어도 하나의 심볼 집합은 손실되지 않은 채로 존재하게 된다. 따라서 이를 이용하여 손실된 특정 심볼을 복구할 수 있고, 동일한 방식으로 나머지 손실된 심볼에 대하여도 복구를 수행할 수 있다. 따라서 본 발명에 따른 부호화 단계(S200)의 부호화 방법에 의하면 최대 (k -1) 개까지 심볼이 손실되는 경우도 손실된 심볼을 나머지 심볼을 이용하여 복구할 수 있는 효과가 있다.
위와 같이 부호화된 심볼이 저장 단계(S300)에서 분산 저장 시스템의 각 노드에 저장되는 경우, 각 심볼이 손실될 때 나머지 심볼을 이용하여 손실된 심볼을 복구하는 것과 동일한 방식으로, 각 노드가 손실될 때 나머지 노드를 이용하여 손실된 노드를 복구할 수 있다. 즉 반복하여 설명하는 바와 같이 위에서 심볼에 대하여 설명한 부분은 저장 단계(S300)에서 저장된 분산 저장 시스템의 노드에 대하여도 동일하게 적용될 수 있다.
따라서 저장 단계(S300)에서 저장된 상기 노드들 중 (k - 1)개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있다.
또한 저장 단계(S300)에서 저장된 상기 노드들은, 상기 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고, 동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 3개를 선택하여 상기 손실된 노드 2개를 복구할 수 있는 것을 특징으로 한다. 즉 여기서 상술한 바 조인트 로컬리티 (
Figure 112015052196047-pat00015
)가 보장된다.
이하에서는 상술한 완전 그래프 코드 기법을 이용한 부호화 방법에 이어, 본 발명의 또 다른 부호화 방법인 완전 다분할 그래프 코드(Complete Multipartite Graph code) 기법을 이용한 부호화 방법에 대하여 상세히 설명한다.
이 경우 부호화 단계(S200)는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 균일하게 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성할 수 있다. 다시 말하면 데이터 블록을 일정한 수의 그룹으로 나눈 다음, 서로 다른 그룹에 속한 데이터 블록을 두 개 선택하고 이를 이용하여 패리티 심볼을 생성하는 것이다. 즉 서로 동일한 그룹에 속한 데이터 블록의 쌍은 선택하지 않고, 서로 다른 그룹에서 데이터 블록을 하나씩 선택하여 총 두 개를 선택하는 것이다.
이를 생성 행렬을 이용하는 부호화 기법으로 설명하면, 상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고, 상기 생성 행렬은 해밍 무게가 1인 열벡터 모두와 해밍 무게가 2인 열벡터 중 일부를 포함하는 행렬인 것을 특징으로 할 수 있다. 이때 해밍 무게가 2인 열벡터 중 생성 행렬에 포함되는 일부를 선별하기 위하여, 상기 해밍 무게가 2인 모든 열벡터로 이루어진 행렬 성분을 미리 정해진 일정한 개수의 행 그룹으로 분할하고, 동일한 상기 행 그룹 내에서 두 개 이상의 행이 1인 열벡터를 제거한 부분이 상기 생성 행렬에 포함되도록 할 수 있다. 다시 말하면 해밍 무게가 2인 모든 열벡터 성분을 미리 정해진 일정한 개수의 균일한 크기의 행 그룹으로 분할하고, 상기 분할한 행 그룹에서 동일한 그룹에 속하는 행의 값이 두 개 이상 1인 열벡터를 제거하여 생성된 행렬 성분을 생성 행렬에 포함시킬 수 있다.
또한 아래에서 설명할 바와 같이 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에서는 k 개의 데이터 블록 중 두 개를 선택하되 상술 바와 같이 패리티 심볼을 부호화하므로, 정보 심볼은 k개, 패리티 심볼은 k(k - k/p)/2 개로 각 생성되고, 그에 따라 총 생성되는 심볼의 수 n 은 k + k(k - k/p)/2 개가 된다. 따라서 상술한 생성 행렬의 크기는 k x (k + k(k - k/p)/2) 가 되고, k x k 크기의 단위행렬(Identity Maxtrix) 성분과 해밍 무게가 2인 열벡터 중 일부 열벡터로 k x (k(k - k/p)/2) 크기의 행렬 성분을 포함한다. 도 9의 (a) 내지 (b)의 생성 행렬(Generator Matrix)는 이와 같은 완전 그래프 코드 기법을 이용한 부호화 방법에 따른 생성 행렬의 예이다.
여기서 상술한 바와 같이 생성 행렬은 열-섞음으로 만들어질 수 있는 모든 행렬을 포함한다. 따라서 해밍 무게가 1인 열벡터 모두와 위와 같은 방식으로 생성한 해밍 무게가 2인 열벡터 중 일부에 대하여 열벡터의 순서를 섞어서 만들 수 있는 모든 행렬이 상기 생성 행렬이 될 수 있다.
예를 들면 저장 대상 데이터가 분할되어 A, B, C, D의 데이터 블록이 있고, {A, B}와 {C, D}의 두 개 그룹으로 그룹이 나뉘는 경우, 이들 데이터 블록 중 서로 다른 그룹에 속하는 데이터 블록을 2개 선택할 수 있는 조합인 (A, C), (A, D), (B, C), (B, D)에 대하여 각 조합의 데이터 블록을 이용하여 패리티 심볼을 생성하는 것이다.
이와 같은 상술한 부호화 단계(S200)의 동작을 그래프로 표현하면 도 9의 표와 같이 표현될 수 있다. 도 9를 참조하면 예를 들어 분할된 데이터 블록의 수 k 가 6이고 그룹의 수 p 가 2인 경우, 그래프의 노드가 정보 심볼을, 그래프의 에지가 패리티 심볼을 각 나타낸다고 할 때, 부호화 단계(S200)에서 생성하는 심볼은 도 9의 (a)의 해당 그래프와 같이 표현될 수 있다.
본 발명에서는 상술한 도 9의 그래프와 같이 표현되는 부호화 단계(S200)의 부호화 방법을 완전 다분할 그래프 코드(Complete Multipartite Graph code) 기법을 이용한 부호화 방법이라고 지칭한다.
본 발명에 따른 부호화 단계(S200)는 위와 같이 완전 다분할 그래프 코드 기법을 이용한 부호화 방법을 이용하여 패리티 심볼을 생성함으로써, 첫째로 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지할 수 있다. 여기서 조인트 로컬리티가 (
Figure 112015052196047-pat00016
)로 보장된다. 둘째로 부호화 단계(S200)에서 생성하는 패리티 심볼의 개수를 완전 그래프 코드 기법을 이용한 부호화 방법의 경우 보다 더욱 줄이는 효과가 있다. 또한 셋째로 위와 같이 패리티 심볼을 생성함으로써, 상기 그룹의 수가 p 개이고 데이터 블록의 수가 k 개일 때, 최대 (k - k/p)개 까지 임의의 심볼(노드)이 손실되어도 다른 심볼(노드)들을 이용하여 손실된 심볼(노드)을 복구할 수 있는 효과가 있다.
첫째로 완전 다분할 그래프 코드 기법을 이용한 부호화 방법의 경우 조인트 로컬리티가 (
Figure 112015052196047-pat00017
)로 보장된다. 즉 각 심볼이 분산 저장 시스템의 노드에 각 저장된 경우, 각 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고, 동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 4개를 선택하여 상기 손실된 노드 2개를 복구할 수 있다. 이는 완전 그래프 코드의 경우 도 6 및 도 7에서 심볼이 1개 또는 2개 손실되는 모든 종류의 수에 대하여 손실된 심볼을 복구하는데 필요한 다른 심볼의 개수를 확인하여 로컬리티 값을 증명한 것과 마찬가지로, 도 10 및 도 11에서 심볼이 1개 또는 2개 손실되는 모든 종류의 수에 대하여 손실된 심볼을 복구하는데 필요한 다른 심볼의 개수를 확인함으로써 증명될 수 있다.
심볼 1개가 손실되는 경우 도 10을 참조하면 먼저 도 10의 (a)와 같이 임의의 정보 심볼 S_X가 손실될 경우 상술한 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에 따라 생성된 심볼들 중에는 S_X와 함께 에지로 연결된 정보 심볼 S_Y과 S_X와 S_Y간의 연결 에지로 표현되는 패리티 심볼 S_(X, Y)이 존재한다. 따라서 S_Y 심볼과 S_(X, Y) 심볼을 이용하여 S_X 심볼을 복구할 수 있다. 또한 도 10의 (b)와 같이 만일 임의의 패리티 심볼 S_(X, Y)가 손실될 경우에는 심볼들 중에서 손실된 패리티 심볼이 에지로 연결하는 노드에 대응하는 S_X와 S_Y가 존재한다. 따라서 S_X와 S_Y 심볼을 이용하여 S_(X, Y) 심볼을 복구할 수 있다.
마찬가지로 임의의 심볼 2개가 손실되는 경우 도 11을 참조하면 (a) 내지 (i) 까지 모든 경우의 심볼 손실 유형에 대하여 도시하고 있다. 여기서 도 11의 (i)의 경우가 에지가 가정 적게 형성된 경우 해당 에지에 해당하는 패리티 심볼이 손실된 경우를 나타내고 있어 가장 많은 수의 다른 심볼이 복구에 필요한 경우를 도시하고 있는데, 이와 같은 경우 손실된 심볼 S_(A, B)와 심볼 S_(C, D)를 복구하기 위하여 S_A, S_B, S_C, S_D의 총 4개의 심볼이 요구되는 경우이다. (a) 내지 (h)의 경우는 모두 3개의 다른 심볼이 요구되는 경우이다. 따라서 상술한 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에 따라 생성된 심볼에 대하여는 임의의 심볼 2개가 손실되는 경우 최소 4개의 다른 심볼을 이용하여 손실된 노드들을 복구할 수 있음을 확인할 수 있다.
이와 같이 완전 다분할 그래프 코드 기법을 이용한 부호화 방법의 경우 조인트 로컬리티가 (
Figure 112015052196047-pat00018
)로 보장된다.
둘째로 부호화 단계(S200)에서 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에 따라 심볼들이 생성된 경우, 상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되고 상기 그룹의 개수가 p개인 경우라고 할 때, 상기 정보 심볼은 k개, 상기 패리티 심볼은 k(k - k/p)/2 개로 각 생성된다. 이는 각 노드마다 생성되는 패리티 심볼의 개수가 (k - k/p)개이기 때문이다. 그리고 이 때 총 생성되는 심볼의 수는 k(k - k/p + 2)/2개가 된다. 따라서 여기서 생성된 심볼들은
Figure 112015052196047-pat00019
로 표현될 수 있다. 이 경우 패리티 심볼이 k(k - 1)/2개 생성되는 완전 그래프 코드의 경우보다 더욱 패리티 심볼의 개수가 감소된다(여기서 k > p 이다).
셋째로 완전 다분할 그래프 코드 기법을 이용한 부호화 방법에서 최소거리 d는 (k - k/p + 1)로 보장된다. 즉 최대 (k - k/p)개의 심볼이 손실되어도 나머지 심볼을 이용하여 손실된 심볼을 복구할 수 있다. 도 12의 (a) 내지 (c) 는 최소거리 d = k - k/p + 1 임을 증명하기 위한 참고도이다.
도 12의 (a)에서 확인할 수 있는 바와 같이 정보 심볼이 손실된 경우 해당 정보 심볼을 복구할 수 있는 (k - k/p)개의 심볼 집합이 존재한다. 또한 도 12의 (b), (c)는 어느 패리티 심볼이 손실될 경우 해당 패리티 심볼을 복구할 수 있는 두 가지 형태의 심볼 집합 형태를 각 도시한다. 먼저 첫 번째 형태는 도 12의 (b)와 같은 경우이다. 여기서 손실된 패리티 심볼 S_(A, B)이 연결한 각 정보 심볼 집합 {S_A, S_B}을 이용하여 손실된 패리티 심볼을 복구할 수 있다. 또한 손실된 패리티 심볼 S_(A, B)이 연결한 각 정보 심볼 S_A, S_B 을 하나만 연결하는 패리티 심볼 S_(A, D), S_(B, C)이 서로 다른 정보 심볼 S_C, S_D을 각각 연결하는 경우, {S_(A, D), S_(B_C), S_(C_D)} 심볼 집합을 이용하여 손실된 패리티 심볼을 복구할 수도 있다. 이와 같은 첫 번째 형태의 경우 심볼 집합은 총 k/p개 존재한다. 다름으로 두 번째 형태는 도 12의 (c)와 같은 경우이다. 여기서 손실된 패리티 심볼 S_(A, B)이 연결한 각 정보 심볼 S_A, S_B 을 하나씩 연결하고 서로 공통으로 또 다른 정보 심볼(예를 들면 S_C1, S_C2, S_C3, S_C4)을 연결하는 패리티 심볼 2개의 집합을 이용하여 손실된 패리티 심볼을 복구할 수 있다. 이와 같은 두 번째 형태의 경우 심볼 집합은 총 (k - 2k/p)개 존재한다. 따라서 패리티 심볼이 손실된 경우 첫 번째 형태와 두 번째 형태의 경우를 모두 합하면 총 (k - k/p)개의 복구를 위한 심볼 집합이 존재한다. 따라서 정보 심볼이 손실된 경우나 패리티 심볼이 손실된 경우나 모두 (k - k/p)개의 복구를 위한 심볼 집합이 존재한다. 그렇다면 최대 (k - k/p)개의 심볼이 손실되어도 다른 심볼을 이용하여 손실된 심볼을 복구할 수 있는 것이다.
위와 같이 부호화된 심볼이 저장 단계(S300)에서 분산 저장 시스템의 각 노드에 저장되는 경우, 각 심볼이 손실될 때 나머지 심볼을 이용하여 손실된 심볼을 복구하는 것과 동일한 방식으로, 각 노드가 손실될 때 나머지 노드를 이용하여 손실된 노드를 복구할 수 있다. 즉 위에서 심볼에 대하여 설명한 부분은 저장 단계(S300)에서 저장된 분산 저장 시스템의 노드에 대하여도 동일하게 적용될 수 있다. 따라서 저장 단계(S300)에서 저장된 상기 노드들 중 (k - k/p)개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있다.
본 발명의 또 다른 실시예로 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치가 있다. 상기 본 발명에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치는 부호화기(100)를 포함할 수 있다. 여기서 부호화기(100)는 위에서 도 3 내지 도 12와 함께 상세히 설명한 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법에서와 동일한 방식으로 동작할 수 있다. 따라서 중복되는 부분은 생략하고 간략히 서술한다.
부호화기(100)는 저장 대상 데이터를 미리 정해진 일정한 개수로 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성한다.
이때 상기 생성한 각 심볼은 상기 분산 저장 시스템의 각 노드에 저장되는 것을 특징으로 한다.
여기서 상기 분산 저장 시스템에 저장한 노드는 손실될 경우, 상기 손실된 노드 이외의 나머지 상기 노드를 이용하여 상기 손실된 노드를 복구될 수 있다.
여기서 부호화기(100)는, 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지하면서 상기 부호화기(100)가 생성하는 패리티 심볼의 개수를 줄이기 위하여, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 생성할 수 있다.
여기서 완전 그래프 코드(complete graph code) 기법을 사용할 경우, 부호화기(100)는 상기 패리티 심볼을 부호화하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 부호화할 수 있다.
여기서 상술한 완전 다분할 그래프 코드(complete multipartite graph code) 기법을 사용할 경우, 부호화기(100)는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 균일하게 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성할 수 있다.
또한 본 발명의 또 다른 형태의 실시예는 위에서 상술한 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램이 될 수 있다.
이상에서 설명한 본 발명의 실시예를 구성하는 모든 구성요소들이 하나로 결합하거나 결합하여 동작하는 것으로 기재되어 있다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
또한, 그 모든 구성요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 또한, 이와 같은 컴퓨터 프로그램은 USB 메모리, CD 디스크, 플래쉬 메모리 등과 같은 컴퓨터가 읽을 수 있는 기록매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 기록매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
또한, 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 상세한 설명에서 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.
S100 : 저장 대상 데이터 분할 단계
S200 : 부호화 단계
S300 : 저장 단계
S400 : 복구 단계
100 : 부호화기

Claims (22)

  1. 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법에 있어서,
    저장 대상 데이터를 미리 정해진 일정한 개수의 데이터 블록으로 분할하는 단계;
    상기 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)를 생성하는 부호화 단계; 및
    상기 생성한 각 심볼을 상기 분산 저장 시스템의 각 노드에 저장하는 저장 단계를 포함하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  2. 제1항에 있어서, 상기 부호화 단계는
    상기 분할한 각 데이터 블록을 나타내는 입력 심볼을 각 원소로 하는 입력 행렬과, 원소의 값이 1 또는 0 중 어느 하나이고 각 열벡터에 포함된 1의 개수가 2개 이하인 생성 행렬(Generator Matrix)을 곱하여 출력 행렬을 생성하고,
    상기 출력 행렬에서 하나의 상기 입력 심볼에 대응하는 원소는 상기 정보 심볼로, 상기 출력 행렬에서 두 개의 상기 입력 심볼의 합에 대응하는 원소는 상기 패리티 심볼로, 각각 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  3. 제2항에 있어서,
    상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고,
    상기 생성 행렬은 해밍 무게(Hamming Weight)가 1인 열벡터 모두와 상기 해밍 무게가 2인 열벡터 모두를 포함하는 행렬인 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  4. 제2항에 있어서,
    상기 생성 행렬의 열벡터는 상기 입력 행렬의 원소 수에 따른 길이를 가지고,
    상기 생성 행렬은 해밍 무게가 1인 열벡터 모두와 상기 해밍 무게가 2인 열벡터 중 일부를 포함하는 행렬이되, 상기 해밍 무게가 2인 모든 열벡터의 집합으로 이루어진 행렬 성분을 미리 정해진 일정한 개수의 행 그룹으로 분할하고 동일한 상기 행 그룹 내에서 두 개 이상의 행이 1인 열벡터를 제거한 행렬 성분을 포함하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  5. 제3항에 있어서,
    상기 생성 행렬은 상기 생성 행렬의 열의 순서를 바꿔 만드는 다른 행렬을 포함하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  6. 제1항에 있어서,
    상기 분산 저장 시스템의 노드는 손실될 경우, 상기 손실된 노드 이외의 나머지 상기 노드를 이용하여 복구될 수 있고,
    상기 부호화 단계는, 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지하면서 상기 부호화 단계에서 생성하는 패리티 심볼의 개수를 줄이기 위하여, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  7. 제1항에 있어서,
    상기 부호화 단계는 상기 선택한 두 개의 데이터 블록을 더하여 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  8. 제6항에 있어서,
    상기 분산 저장 시스템의 노드들 중 어느 노드가 손실된 경우, 상기 손실된 노드 이외의 나머지 상기 노드들 중에서 적어도 하나 이상의 상기 노드를 선택하고, 상기 선택한 노드를 이용하여 상기 손실된 노드를 복구하는 복구 단계를 더 포함하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  9. 제6항에 있어서,
    상기 저장 단계에서 상기 정보 심볼이 저장된 상기 노드는 정보 노드, 상기 패리티 심볼이 저장된 상기 노드는 패리티 노드인 것을 특징으로 하는 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  10. 제6항에 있어서,
    상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 일부를 선택하고 상기 선택한 데이터 블록들을 이용하여 상기 패리티 심볼을 생성하되, 세 개 이상의 상기 데이터 블록은 선택하지 아니하고 두 개만의 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  11. 제10항에 있어서,
    상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  12. 제11항에 있어서,
    상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되는 경우,
    상기 부호화 단계는 k개의 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우의 수인 k(k-1)/2 가지의 경우에 대하여, 상기 각 경우 선택한 두 개의 상기 데이터 블록을 이용하여 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  13. 제12항에 있어서,
    상기 부호화 단계는 상기 정보 심볼은 k개, 상기 패리티 심볼은 k(k-1)/2개로 각각 생성하고,
    상기 저장 단계에서 저장된 상기 노드들 중 k-1개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  14. 제13항에 있어서,
    상기 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고,
    동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 3개를 선택하여 상기 손실된 노드 2개를 복구할 수 있는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  15. 제10항에 있어서,
    상기 부호화 단계는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 균일하게 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  16. 제15항에 있어서,
    상기 저장 대상 데이터가 k개의 상기 데이터 블록으로 분할되고 상기 그룹의 개수가 p개인 경우,
    상기 부호화 단계는 상기 정보 심볼은 k개, 상기 패리티 심볼은 k(k-k/p)/2개로 각각 생성하고,
    상기 저장 단계에서 저장된 상기 노드들 중 k-k/p개 이하의 노드가 손실된 경우, 상기 손실된 노드들은 상기 손실된 노드 이외의 나머지 상기 노드들을 이용하여 복구될 수 있는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  17. 제16항에 있어서,
    상기 노드들 중 1개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 2개를 선택하여 상기 손실된 노드 1개를 복구할 수 있고,
    동시에 상기 노드들 중 2개의 노드가 손실된 경우 손실된 노드 이외의 나머지 상기 노드들 중 3개 또는 4개를 선택하여 상기 손실된 노드 2개를 복구할 수 있는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 따른 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법을 수행하기 위해 컴퓨터로 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  19. 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치에 있어서,
    저장 대상 데이터를 미리 정해진 일정한 개수로 분할한 데이터 블록에 따른 정보 심볼(Information Symbol)을 생성하고, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 패리티 심볼(Parity Symbol)을 생성하는 부호화기;를 포함하고,
    상기 생성한 각 심볼은 상기 분산 저장 시스템의 각 노드에 저장되는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치.
  20. 제19항에 있어서,
    상기 분산 저장 시스템에 저장한 노드는 손실될 경우, 상기 손실된 노드 이외의 나머지 상기 노드를 이용하여 상기 손실된 노드를 복구될 수 있고,
    상기 부호화기는, 상기 손실된 노드를 복구하기 위해 필요한 상기 노드의 개수를 미리 정해진 정도로 유지하면서 상기 부호화기가 생성하는 패리티 심볼의 개수를 줄이기 위하여, 상기 분할한 데이터 블록들 중 두 개의 서로 다른 상기 데이터 블록을 선택하고 상기 선택한 두 개의 데이터 블록을 이용하여 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치.
  21. 제20항에 있어서,
    상기 부호화기는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들 중 서로 다른 두 개의 상기 데이터 블록을 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치.
  22. 제20항에 있어서,
    상기 부호화기는 상기 패리티 심볼을 생성하는 경우, 상기 저장 대상 데이터를 분할한 상기 데이터 블록들을 적어도 두 개 이상의 미리 정해진 수의 그룹으로 균일하게 나누고, 서로 다른 상기 그룹에 속한 상기 데이터 블록 두 개를 선택할 수 있는 모든 경우에 대하여, 각 선택한 두 개의 상기 데이터 블록을 이용하여 각 상기 패리티 심볼을 생성하는 것을 특징으로 하는, 분산 저장 시스템에서의 데이터 손실 복구 부호화 장치.
KR1020150076508A 2015-05-29 2015-05-29 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치 KR101618269B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150076508A KR101618269B1 (ko) 2015-05-29 2015-05-29 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치
US15/085,960 US9864550B2 (en) 2015-05-29 2016-03-30 Method and apparatus of recovering and encoding for data recovery in storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150076508A KR101618269B1 (ko) 2015-05-29 2015-05-29 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR101618269B1 true KR101618269B1 (ko) 2016-05-04

Family

ID=56022276

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150076508A KR101618269B1 (ko) 2015-05-29 2015-05-29 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치

Country Status (2)

Country Link
US (1) US9864550B2 (ko)
KR (1) KR101618269B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102027547B1 (ko) * 2018-06-20 2019-10-01 한국과학기술원 복수의 노드로 구성된 복수의 군집 및 서드파티와 통신하는 서버에서의 군집형 분산 스토리지 시스템 기반의 최소 대역폭을 이용한 완전 보안 부호화 방법 및 군집형 분산 스토리지 시스템을 기반으로 최소 대역폭을 이용한 완전 보안 부호화 방법을 수행하기 위해 복수의 노드로 구성된 복수의 군집 및 서드파티와 통신하는 서버
KR102027546B1 (ko) * 2018-06-20 2019-10-01 한국과학기술원 노드로 구성된 복수의 군집과 통신하는 서버에서의 군집형 분산 스토리지 시스템 기반의 최소 대역폭 복구 부호화 방법 및 군집형 분산 스토리지 시스템을 기반으로 최소 대역폭 복구 부호화를 위해 노드로 구성된 복수의 군집과 통신하는 서버
KR20200045919A (ko) * 2018-10-23 2020-05-06 네이버 주식회사 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템
CN112532252A (zh) * 2020-11-24 2021-03-19 深圳市大数据研究院 编码方法、译码方法、电子设备及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017161050A2 (en) 2016-03-15 2017-09-21 Cloud Crowding Corp. Distributed storage system data management and security
US10931402B2 (en) 2016-03-15 2021-02-23 Cloud Storage, Inc. Distributed storage system data management and security
CN108712230A (zh) * 2018-04-08 2018-10-26 罗建平 故障数据修复方法
MX2021009011A (es) 2019-01-29 2021-11-12 Cloud Storage Inc Método de reparación de nodos de codificación y almacenamiento para códigos de regeneración de almacenamiento mínimo para sistemas de almacenamiento distribuido.
US11734117B2 (en) * 2021-04-29 2023-08-22 Vast Data Ltd. Data recovery in a storage system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4211997A (en) * 1978-11-03 1980-07-08 Ampex Corporation Method and apparatus employing an improved format for recording and reproducing digital audio
KR101050155B1 (ko) 2009-11-10 2011-07-19 한국인터넷진흥원 데이터 분산 저장 관리 시스템 및 분산 저장 관리 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Griesmer 한계식을 만족하는 [2k-1+k, k, 2k-1+1] 부호 설계 및 부분접속수 분석", 한국통신학회 논문지 (2015년 3월)
"선형 재생 부호 앙상블의 평균 복구 접속 비용", 한국통신학회 논문지 (2014년 11월)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102027547B1 (ko) * 2018-06-20 2019-10-01 한국과학기술원 복수의 노드로 구성된 복수의 군집 및 서드파티와 통신하는 서버에서의 군집형 분산 스토리지 시스템 기반의 최소 대역폭을 이용한 완전 보안 부호화 방법 및 군집형 분산 스토리지 시스템을 기반으로 최소 대역폭을 이용한 완전 보안 부호화 방법을 수행하기 위해 복수의 노드로 구성된 복수의 군집 및 서드파티와 통신하는 서버
KR102027546B1 (ko) * 2018-06-20 2019-10-01 한국과학기술원 노드로 구성된 복수의 군집과 통신하는 서버에서의 군집형 분산 스토리지 시스템 기반의 최소 대역폭 복구 부호화 방법 및 군집형 분산 스토리지 시스템을 기반으로 최소 대역폭 복구 부호화를 위해 노드로 구성된 복수의 군집과 통신하는 서버
KR20200045919A (ko) * 2018-10-23 2020-05-06 네이버 주식회사 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템
KR102109015B1 (ko) 2018-10-23 2020-05-11 네이버 주식회사 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템
CN112532252A (zh) * 2020-11-24 2021-03-19 深圳市大数据研究院 编码方法、译码方法、电子设备及存储介质
CN112532252B (zh) * 2020-11-24 2024-04-02 深圳市大数据研究院 编码方法、译码方法、电子设备及存储介质

Also Published As

Publication number Publication date
US9864550B2 (en) 2018-01-09
US20160350188A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
KR101618269B1 (ko) 분산 저장 시스템에서의 데이터 손실 복구 부호화 방법 및 그 장치
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
CN105721611B (zh) 一种由极大距离可分存储码生成最小存储再生码的方法
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
CN109634932B (zh) 一种智能合约存储方法及存储系统
RU2501072C2 (ru) Распределенное хранение восстанавливаемых данных
KR101731832B1 (ko) 저장 시스템에서의 데이터 손실 복구를 위한 부호화 및 복호화 방법 및 그 장치
JP6487931B2 (ja) データブロックを再構築する方法及び装置
CN106484559A (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
US20120023362A1 (en) System and method for exact regeneration of a failed node in a distributed storage system
CN114153651B (zh) 一种数据编码方法、装置、设备及介质
CN107689983B (zh) 基于低修复带宽的云存储系统及方法
RU2017115539A (ru) Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации
Shahabinejad et al. A class of binary locally repairable codes
CN110389848B (zh) 基于分块构造的部分重复码构造方法及故障节点修复方法
Hollmann Storage codes—Coding rate and repair locality
Tebbi et al. A code design framework for multi-rack distributed storage
CN114116297B (zh) 一种数据编码方法、装置、设备及介质
CN114546707A (zh) 数据处理方法及装置
CN113687975A (zh) 数据处理方法、装置、设备及存储介质
KR20190027462A (ko) 저장 시스템에서의 데이터 복구 방법 및 장치
CN107885615B (zh) 分布式存储数据的复原方法与系统
KR101865101B1 (ko) 분산 저장 시스템에서 천공 심플렉스 부호 사용 방법 및 장치
KR101756136B1 (ko) 계층적 구조를 갖는 시스템의 정보 결함허용 방법
CN107210005B (zh) 矩阵/密钥生成装置、矩阵/密钥生成系统、矩阵结合装置、矩阵/密钥生成方法、程序

Legal Events

Date Code Title Description
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: 20190423

Year of fee payment: 4