KR101341386B1 - 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법 - Google Patents

분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법 Download PDF

Info

Publication number
KR101341386B1
KR101341386B1 KR1020120103555A KR20120103555A KR101341386B1 KR 101341386 B1 KR101341386 B1 KR 101341386B1 KR 1020120103555 A KR1020120103555 A KR 1020120103555A KR 20120103555 A KR20120103555 A KR 20120103555A KR 101341386 B1 KR101341386 B1 KR 101341386B1
Authority
KR
South Korea
Prior art keywords
data
blocks
block
stripe
stored
Prior art date
Application number
KR1020120103555A
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 KR1020120103555A priority Critical patent/KR101341386B1/ko
Application granted granted Critical
Publication of KR101341386B1 publication Critical patent/KR101341386B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터 복제에 기반을 두어 내고장성을 지원하는 블록 단위 분산 파일 시스템에서 복제본의 저장에 따라 추가적으로 요구되는 저장 공간을 감소시키면서 동일 수준의 내고장성을 지원하는 공간 효율성을 개선하는 방법에 관한 것이다. 분산 파일 시스템의 데이터 노드들은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 저장한다. 저장 공간을 감소하기 위해 네임 노드는 상기 데이터 노드들의 블록 정보를 스캔하여 상기 데이터 노드들 각각에 저장된 데이터 블록들로 구성되는 적어도 하나의 스트라이프를 구성하고, 상기 데이터 노드들 각각은 상기 네임 노드에서 전달된 인코딩 명령을 실행하기 위하여 상기 데이터 블록들의 로컬 스토리지에서의 경로를 추출하고, 소거 코딩으로 인코딩하여 패리티 블록들을 생성하고, 상기 생성된 패리티 블록들 중 하나만을 자신의 데이터 노드에 저장하고 나머지 패리티 블록들은 다른 데이터 노드들에 시스템의 가용성을 보장하는 규칙에 따라 이동시켜 저장하고, 저장된 데이터 블록에 결함이 발생하는 경우, 상기 네임 노드로부터 상기 결함이 발생한 블록이 포함되는 스트라이프의 구성 정보를 수신하고 디코딩하여 상기 결함이 발생한 데이터 블록을 복구한다.

Description

분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법 {An efficient block encoding and block placement method for reducing space overhead in distributed file systems}
본 발명은 분산 파일 시스템에 관한 것으로 보다 상세하게는 복제 기법에 기반을 두고 내고장성을 지원하는 블록 단위 분산 파일 시스템에서 복제본 유지에 요구되는 저장 공간을 절약하면서 기존과 동일 수준의 내고장성을 지원하기 위한 데이터 인코딩, 디코딩과 블록 배치 기법에 관한 것이다.
본 발명은 전자통신연구원 연구사업의 일환으로 수행한 연구로부터 도출된 것이다.[계정번호: N03110029, 과제명: 분산 RAID를 이용한 분산 파일 시스템에서의 데이터 손실 보호와 공간 절약에 관한 연구].
분산 파일 시스템은 다수의 서버 컴퓨터들을 네트워크로 연결하여 네트워크를 통해서 공통된 파일 시스템을 제공해 주는 시스템이다. 블록 단위 분산 파일 시스템은 파일을 동일한 크기의 여러 블록들로 분할하여 클러스터를 구성하는 여러 노드에 블록들을 분산하여 저장한다.
GFS(Google Fil System)나 HDFS(Hadoop distributed file system)와 같은 현대의 블록 단위 분산 파일 시스템들은 하나의 네임 노드와 다수의 데이터 노드로 구성된다. 네임 노드는 파일의 네임스페이스와 접근 제한 정보, 블록이 저장된 데이터 노드 등의 정보와 같은 메타데이터 정보를 관리한다. 데이터 노드는 실제 데이터 블록들을 저장하며, 파일 시스템의 클라이언트로부터의 읽기와 쓰기 요청을 제공하며, 네임 노드의 지시에 따라 블록의 생성, 삭제 및 복제를 수행한다.
이러한 현대의 블록 단위 분산 파일 시스템에서는 파일 서비스 시 발생할 수 있는 오류나 장애에 대한 내고장성을 지원하기 위해 각 블록들에 대한 복제(replication)를 수행하고, 복제 블록들을 원본 데이터 블록들과 동일 노드에 위치하지 않게 실행 시간에 여러 노드에 분산 배치한다. 그러나 데이터 복제 기법에 의존한 내고장성 지원 방법은 복제본의 저장에 따른 추가적인 저장 공간을 요구한다. 예를 들어, 각 블록에 대해서 2개의 추가적인 복제본을 생성한다면, 200%의 저장 공간을 추가로 필요로 한다. 이러한 문제는 특히 생성된 지 오래되어 더 이상 접근되지 않거나, 접근이 빈번하지 않은 파일인 경우에도 추가로 저장 공간을 지속적으로 낭비하게 되는 문제를 야기한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 데이터 복제 기법에 기반을 두고 내고장성을 지원하는 블록 단위의 분산 파일 시스템에서 데이터 복제 기법에서와 동일 수준의 내고장성을 지원하면서 저장 공간을 절약할 수 있는 기법을 분산 파일 시스템에 제공하는 것이다.
본 발명의 일 목적은 소거 코딩(erasure coding)을 이용, 복제본 블록을 패리티 블록으로 대체하는데 있어 I/O 비용을 최소로 인코딩하는 것과 생성된 패리티 블록을 이전 수준과 동일한 내고장성을 제공하기 위해 시스템 수행 중 여러 노드에 적절히 분산 배치하는 방법을 제공하는 것이다.
본 발명의 일 목적은 상기 분산 파일 시스템의 데이터 디코딩 방법을 제공하는 것이다.
상기한 본 발명의 일 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장되는 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템에 있어서, 상기 데이터 노드들은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 저장하고, 상기 네임 노드는 상기 데이터 노드들의 블록 정보를 스캔하여 상기 데이터 노드들 각각에 저장된 데이터 블록들로 구성되는 적어도 하나의 스트라이프를 구성하고, 상기 데이터 노드들 각각은 상기 네임 노드에서 전달된 인코딩 명령을 실행하기 위하여 상기 데이터 블록들의 로컬 스토리지에서의 경로를 추출하고, 소거 코딩(erasure coding)으로 인코딩하여 패리티 블록들을 생성하고, 상기 생성된 패리티 블록들 중 하나만을 자신의 데이터 노드에 저장하고 나머지 패리티 블록들은 다른 데이터 노드들에 이동시켜 저장하고, 저장된 데이터 블록에 결함이 발생하는 경우, 상기 네임 노드로부터 상기 결함이 발생한 블록이 포함되는 스트라이프의 구성 정보와 스트라이프를 구성하는 타 블록들을 수신하고 디코딩하여 상기 결함이 발생한 데이터 블록을 복구한다.
본 발명의 다른 측면에 따른 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장되는 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템에 있어서, 상기 데이터 노드들은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 저장하고, 상기 네임 노드는 상기 데이터 노드들 각각에 저장된 데이터 블록들로 구성되는 적어도 하나의 스트라이프를 구성하고, 상기 스트라이프에 포함된 복제 블록들에 해당하는 원본 데이터 블록들은 서로 다른 데이터 노드들에 저장되도록 하고, 상기 데이터 노드들 각각은 상기 네임 노드로부터의 인코딩 명령에 응답하여 해당 스트라이프에 포함된 복제 블록들을 소거 코딩하여 패리티 블록들을 생성한다.
실시예에 있어서, 상기 데이터 노드들 각각은 상기 생성된 패리티 블록들 중 하나만을 자신의 데이터 노드에 저장하고 나머지 패리티 블록들은 다른 데이터 노드들에 이동시켜 저장한다.
상기 나머지 패리티 블록들은 상기 해당 스트라이프에 포함된 복제 블록들에 해당하는 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 저장된다.
실시예에 있어서, 상기 네임 노드는 상기 메타 데이터에서 상기 데이터 노드들 각각에 저장된 데이터 블록들의 블록 정보를 스캔하는 블록 정보 수집부; 상기 블록 정보 수집부로터 제공받는 상기 블록 정보 중에서 상기 복제 블록들의 블록 정보인 복제 블록 정보를 선택하는 복제 블록 선택부; 상기 복제 블록 정보를 기초로 상기 복제 블록들의 원본 데이터 블록들이 동일한 데이터 노드에 저장되어 있는지를 판단하는 노드 중복 검사부; 상기 노드 중복 검사부의 판단 결과에 따라 상기 데이터 노드를 각각에 대한 상기 스트라이프를 구성하며, 상기 스트라이프의 정보를 매개 변수로 하여 상기 데이터 노드들에 상기 인코딩 명령을 출력하는 인코딩 명령부를 포함한다.
상기 데이터 노드들 각각은 상기 인코딩 명령을 수신하는 명령 수신부; 상기 명령 수신부에 수신된 인코딩 명령에 포함된 상기 스트라이프 수신하여 상기 스트라이프에 포함된 데이터 블록들의 로컬 스토리지 내에서의 경로 정보를 추출하는 로컬 파일 경로 추출부; 상기 경로 정보에 기초하여 상기 데이터 블록들을 소거 코딩하여 상기 패리티 블록들을 생성하는 데이터 블록 인코딩부; 및 상기 패리티 블록들 중 하나를 상기 로컬 스토리지에 저장하고 나머지 패리티 블록들은 상기 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 이동시키는 패리티 블록 이동부를 포함한다.
상기 네임 노드는 상기 데이터 노드들에 저장된 데이터 블록들 중 결함이 발생한 데이터 블록을 감지하는 결함 블록 감지기; 상기 결함이 발생한 데이터 블록이 속한 스트라이프의 블록 정보를 추출하는 스트라이프 추출기; 상기 추출된 스트라이프를 구성하는 데이터 블록들과 패리티 블록들의 정보를 수집하는 스트라이프 블록 정보 수집부; 상기 스트라이프 블록 정보 수집부에서 수집된 정보를 매개 변수로 하여 상기 결함이 발생한 데이터 블록이 저장된 데이터 노드에 디코딩 명령을 출력하는 디코딩 명령부를 더 포함한다.
상기 명령 수신부는 상기 디코딩 명령을 수신하고, 상기 데이터 노드를 각각은 스트라이프 블록 수집기; 데이터 블록 디코딩부; 및 스트라이프 블록 삭제부를 더 포함하고, 상기 스트라이프 블록 수집기는 상기 명령 수신기가 수신한 상기 디코딩 명령에 포함된 상기 수집된 정보에 따라 상기 스트라이프를 구성하는 데이터 블록들과 패리티 블록들을 다른 데이터 노드들로부터 수집하고, 상기 로컬 파일 경로 추출부는 상기 수집된 데이터 블록들의 상기 로컬 스토리지 내에서의 로컬 파일 경로를 추출하고, 상기 데이터 블록 디코딩부는 상기 추출된 로컬 파일 경로를 매개 변수로 하여 상기 결함이 발생한 데이터 블록을 복구하고, 상기 스트라이프 블록 삭제부는 상기 결함이 발생한 데이터 블록이 복구된 후, 상기 결함이 발생한 데이터 블록의 복구에 사용된 데이터 블록들 및 패리티 블록들을 삭제할 수 있다.
본 발명의 실시예에 따른 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장된 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템의 데이터 인코딩 방법은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들이 저장되는 상기 데이터 블록들 각각의 블록 정보를 스캔하는 단계; 상기 데이터 노드들 각각에 저장된 데이터 블록이 복제 블록인지 여부를 판단하는 단계; 상기 저장된 데이터 블록이 복제 블록인 경우, 상기 복제 블록을 기초로 스트라이프를 생성하는 단계; 및 상기 스트라이프를 매개 변수로 하여 상기 각각의 데이터 노드에 인코딩 명령을 전송하는 단계를 포함한다.
상기 각각의 데이터 노드는 상기 인코딩 명령에 응답하여 상기 스트라이프에 포함된 복제 블록들을 소거 코딩하여 패리티 블록들을 생성한다.
상기 각각의 데이터 노드는 상기 생성된 패리티 블록들을 상기 스트라이프에 포함된 복제 블록들의 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 저장한다.
상기 하나의 데이터 노드는 상기 패리티 블록들을 생성한 후 상기 복제 블록들을 삭제한다.
본 발명의 일 실시예에 따른 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장된 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템의 데이터 디코딩 방법은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 포함하는 데이터 블록들 중 적어도 하나의 블록에서 결함을 인지하는 단계; 상기 결함이 발생한 데이터 블록이 포함된 스트라이프의 구성 정보를 추출하는 단계; 상기 결함이 발생한 데이터 블록이 포함된 스트라이프의 구성 정보를 매개 변수로 하여 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 디코딩 명령을 전송하는 단계; 상기 결함이 발생한 데이터 블록이 포함된 스트라이프를 구성하는 데이터 블록들과 패리티 블록들을 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 수집하는 단계; 상기 수집된 데이터 블록들과 패리티 블록들을 이용하여 상기 결함이 발생한 데이터 블록을 복구하는 단계; 및 상기 결함이 발생한 데이터 블록을 복구한 후 상기 수집된 데이터 블록들과 패리티 블록들을 삭제하는 단계를 포함한다.
실시예에 있어서, 상기 스트라이프는 동일한 데이터 노드 내에 저장된 서로 다른 파일들로부터 나뉘어진 데이터 블록들로 구성된다.
따라서 본 발명의 실시예들에 따르면 복제 데이터 블록들을 소거 코딩으로 생성된 패리티 블록으로 대체하는 방식으로 저장 공간을 절약하고, 데이터 블록에 오류가 발생하면 소거 코딩으로 작성된 패리티 블록과 해당 데이터 블록과 같은 스트라이프에 포함되었던 다른 데이터 블록들을 가지고 오류가 발생된 데이터 블록을 복구하여 저장 공간 절약과 내고장성을 지원할 수 있다.
도 1은 종래기술에 따른 다중 복제 기반 분산 파일 시스템을 도시한 블록도이다.
도 2는 본 발명의 적용되는 환경인 데이터 복제에 기반한 내고장성을 지원하는 블록 단위 분산 파일 시스템을 나타낸다.
도 3은 도 2의 분산 파일 시스템에서 저장 공간을 절약하기 위한 데이터 인코딩 방법을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 도 2의 네임 노드의 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 도 2의 데이터 노드들 중 하나를 나타내는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 분산 파일 시스템의 데이터 인코딩 방법을 나타내는 흐름도이다.
도 7은 도 6의 단계(S440)를 보다 상세히 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 분산 파일 시스템의 데이터 디코딩 방법을 나타내는 흐름도이다.
도 9 내지 도 11은 위의 블록 배치 규칙이 위배되는 실시예들이고, 도 12는 위의 배치 규칙에 따르는 실시예이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
종래의 스토리지(Storage) 환경에서 저장되는 데이터의 대부분은 기업이나 기관에서 생성한 업무 관련 데이터였으나, 최근 인터넷 기술의 비약적인 발전으로 블로그, 사진, 동영상과 같은 멀티미디어 데이터들의 저장 비율도 급속도로 증가하고 있다. 특히, 국내외에서 인터넷 서비스를 실시중인 대형 포탈 업체의 경우에는 매월 수 테라 바이트(TB, Tera Byte)~수십 테라바이트(TB, Tera Byte)의 데이터가 새롭게 생성되어 저장 및 관리되고 있다.
그러나 기존의 저장 구조 환경은 스토리지 확장성 및 관리의 용이성에서 많은 문제점이 있기 때문에 변화무쌍한 서비스 환경에 대체하기에는 부족하다.
최근 스토리지 시스템 혹은 파일 시스템의 근원적인 기술 발전은 스토리지 시스템의 확장성(Scalability) 및 성능의 향상에 기인한 것이다. 상세하게는, 파일 시스템 구조 측면에서 몇몇 시스템들이 파일의 데이터 입출력 경로와 파일의 메타데이터 관리 경로를 분리시켜서 분산 스토리지 시스템의 확장성과 성능을 높인 것이다. 이러한 구조를 적용하여 클라이언트 시스템이 저장 장치들에 직접 접근할 수 있게 하고, 메타데이터를 분산시켜서 빈번한 파일의 메타데이터 접근으로 인한 병목현상을 해소하여 스토리지의 확장성을 높인다.
이러한 구조를 기반으로 개발된 엔터프라이즈급 스토리지 솔루션으로 IBM의 StorageTank, Panasas의 ActiveScale Storage Cluster, 그리고 Cluster Filesystems의 Lustre, Google의 Google Filesystem 등이 있다. 특히, Google의 Google Filesystem은 한 파일에 대한 블록 데이터를 다수의 데이터 서버에 복제하여 가용성을 더욱 높였다.
이 같은 네트워크 기반 분산 파일 시스템 환경에서는 클라이언트 파일 시스템, 메타데이터 서버 및 데이터 서버들이 네트워크를 통해 교신하면서 데이터의 입출력을 제공한다. 클라이언트는 특정 파일에 접근하기 위해서 메타데이터 서버로부터 파일의 실제 데이터가 저장된 블록의 위치 정보를 획득한 후, 블록이 위치한 데이터 서버에 접근하여 블록의 데이터를 읽어 이를 사용한다.
도 1은 종래기술에 따른 다중 복제 기반 분산 파일 시스템을 도시한 블록도이다.
도 1에 도시된 바와 같이, 다중 복제 기반 분산 파일 시스템은 개별 시스템으로 운용되는 사용자 단말인 클라이언트(10), 파일의 속성 및 블록의 위치와 같은 메타데이터를 저장하는 메타데이터 서버(20), 파일의 실제 데이터를 저장하는 하나 이상의 데이터 서버(31, 32, 33)로 구성되며, 이들은 네트워크로 연결되어 정보를 공유한다.
클라이언트(10)는 개별 시스템으로 운용되는 사용자 단말로 PC(Personal Computor), PDA(Personal Digital Assistants) 및 모바일 폰(Mobile Phone) 일 수 있다.
메타데이터 서버(20)는 파일의 크기, 생성시간, 소유자 등의 파일의 속성 및 파일의 블록 위치를 포함하는 데이터 서버(31, 32, 33)에 저장된 데이터의 메타데이터를 저장하여 클라이언트(10)에 이를 제공한다.
데이터 서버(31, 32, 33)는 메타데이터 서버(20)의 파일의 속성에 관련한 실제 데이터 블록들을 저장하며, 클라이언트(10)의 요청에 따라 이를 제공한다. 동일 블록을 물리적으로 떨어진 하나 이상의 데이터 서버(31, 32, 33)에 복제하여 저장함으로써 파일 시스템의 가용성을 높일 수 있다. 여기서, 데이터 서버(31, 32, 33)는 하나의 파일을 여러 개의 블록들로 분할하여 저장 또는, 하나의 연속된 파일로 저장한다.
한편, 메타데이터 서버(20)는 데이터 서버(31, 32, 33)와 별개의 기기로서 배치될 수 있으며, 데이터 서버(31, 32, 33) 또는 클라이언트(10)와 동일한 기기로 구성될 수 있다.
메타데이터 서버(20) 및 데이터 서버(31, 32, 33)의 동작을 살펴보면, 클라이언트(10)가 "example.txt"란 파일을 읽고자 하는 경우에 클라이언트(10)는 우선 메타데이터 서버(20)에게 "example.txt"파일의 속성 및 블록의 위치 등의 메타데이터 정보를 요청하고, 이를 제공받는다(40). 그 다음에는, 블록의 위치를 참조하여 데이터 서버(31, 32, 33)에게 블록의 데이터를 요청하고, 데이터 서버(31, 32, 33)는 자신의 메타데이터 저장소(201)에 저장된 해당 블록의 데이터를 클라이언트(10)에게 제공한다(50).
이때, 클라이언트(10)가 요청한 블록(블록 1)은 다수의 데이터 서버(31, 33)에 저장되어 있으므로, 클라이언트(10)는 네트워크상으로 자신과 가장 가까운 데이터 서버(예컨대, 31)에 블록을 요청함으로써 지역성(Locality)에 기반한 I/O 성능을 높일 수 있다.
이 같은, 다중 복제 환경은 찾고자하는 블록이 저장된 하나의 데이터 서버(예컨대, 31)에 고장(장애)이 발생하여 접근이 불가능한 경우에 정상동작하는 다른 데이터 서버(예컨대, 33)로부터 동일 블록을 획득할 수 있으므로 파일 시스템의 가용성이 높다.
또한, 블록 단위 다중 복제 환경에서는 서버 단위의 복제를 지원하는 RAID1과 달리 파일 단위로 블록의 복제가 이루어지기 때문에 시스템 운영 환경 또는 응용 프로그램 접근 패턴 등에 다라 복제되는 블록의 수를 유연하게 지정할 수 있다는 장점이 있다.
이때, 블록은 데이터를 담고 있는 논리적인 단위로서 하나의 파일이 하나의 블록에 존재하거나, 하나의 파일이 하나 이상의 블록에 존재할 수도 있다.
그러나, 이러한 블록의 다중 복제를 지원하는 분산 파일 시스템에서도 데이터 서버 고장과 같은 예외 상황에 따라 복제된 블록의 유실이 발생할 수 있다.
예를 들면, 파일에 대한 3개 복제 블록 중 2개의 복제 블록에 고장이 발생하더라도 1개의 복제 블록이 남아 있다면 서비스 제공이 가능하다. 하지만, 고장이 발생한 2개의 복제 블록을 지속적으로 복구하지 않으면, 또 다른 고장에 의해 마지막 남은 1개의 블록도 유실이 발생할 수 있고, 그러면 파일의 메타데이터만 존재하고 실제 데이터가 저장된 블록이 존재하지 않아 해당 파일의 복구 자체가 불가능하게 된다.
도 2는 본 발명의 적용되는 환경인 데이터 복제에 기반한 내고장성을 지원하는 블록 단위 분산 파일 시스템을 나타낸다.
도 2를 참조하면, 분산 파일 시스템(100)은 클라이언트(110), 네임 노드(200) 및 복수의 데이터 노드들(310~3n0)을 포함하여 구성될 수 있다.
도 2에서 네임 노드(200)는 메타 데이터 서버에 해당할 수 있고, 데이터 노드들(310~3n0) 각각은 데이터 서버에 해당할 수 있다.
분산 파일 시스템(100)의 최초 구동시에 데이터 노드(310~3n0)들은 각각이 포함하고 있는 데이터 블록들에 대하여 저장 위치 등을 포함하는 블록 정보를 네임 노드(200)에 등록한다(270). 네임 노드(200)는 이를 메타 데이터(210)로서 관리한다. 클라이언트(110)가 데이터 노드(310~3n0)들에 분산되어 저장된 파일을 독출하기 위하여 먼저 네임 노드(200)에 파일을 요청하고, 네임 노드(200)는 메타 데이터(210) 정보에 기초하여 클라이언트(100)가 요구한 파일을 구성하는 데이터 블록들을 보유한 데이터 노드들의 위치 정보를 클라이언트(110)에 전달한다. 데이터 블록들의 위치 정보를 전달받은 클라이언트(110)는 데이터 노드(310~3n0)들을 직접 액세스하여 해당 파일에 대한 데이터 블록들을 직접 획득한다(280).
도 2의 분산 파일 시스템(100)에서 하나의 파일은 여러 개의 동일 크기의 원본 데이터 블록(340)들로 나뉘어 데이터 노드들에 분산 배치된다. 또한 각 데이터 블록에 대하여 데이터 복제본 즉 복제 블록(350)을 같이 생성하며, 이는 원본 데이터 블록과는 다른 데이터 노드에 배치된다. 이는 임의의 데이터 노드가 장애 발생 시 한 데이터 블록과 이에 대한 복제 블록이 같이 해당 노드에 위치한다면, 노드 복구 시까지 해당 블록을 서비스하지 못하는 경우를 피하기 위함이다.
이러한 복제 기반 블록 단위 분산 파일 시스템에서는 원본 데이터 블록과 복제 블록들의 배치가 실행 시간에 동적으로 이루어진다. 이에 따라 앞서 언급한 바와 같이 분산 파일 시스템의 최초 구동 시 각 데이터 노드는 자신이 보유한 데이터 블록들의 정보를 네임 노드(200)에 전달하여 등록(270)하는 과정이 필요하다.
도 3은 도 2의 분산 파일 시스템에서 저장 공간을 절약하기 위한 데이터 인코딩 방법을 나타낸다.
도 3을 참조하면, 네임 노드(200)에서는 네임 노드(200)가 보관 중인 메타데이터에서 모든 블록 정보를 스캔하여 각 데이터 노드가 가지고 있는 데이터 블록들의 블록 정보 목록을 만들고 이 중에서 복제 블록들의 블록 정보만을 추출한다. 다음으로 소거 코딩(erasure coding)을 위한 스트라이프 구성을 위해 복제 블록의 원본 데이터 블록이 저장된 데이터 노드의 위치를 검사하여 원본 데이터 블록이 저장된 데이터 노드들이 서로 중복되지 않도록 각 데이터 노드별로 스트라이프를 구성한다. 이렇게 구성한 스트라이프 정보를 매개변수로 하여 데이터 노드들(310~3n0)에 인코딩 명령을 내린다. 인코딩 명령을 받은 데이터 노드들은 네임 노드로부터 받은 스트라이프 정보를 이용하여 각 스트라이프에 대하여 Q 개의 패리티 블록을 소거 코딩으로 생성한다. 다음으로, 이렇게 하여 스트라이프 별로 Q개만큼 생성된 패리티 블록 중 하나 만을 해당 데이터 노드에 저장하고, Q-1 개의 패리티 블록들은 패리티 배치 규칙에 따라 다른 데이터 노드에 옮겨 저장한다. 데이터 노드는 패리티 블록들이 생성되고 다른 데이터 노드들에 이동된 이후에는, 해당 스트라이프를 구성했던 복제 블록들을 모두 삭제한다. 그리고 인코딩 완료를 네임 노드에게 보고한다.
도 4는 본 발명의 일 실시예에 따른 도 2의 네임 노드의 구성을 나타내는 블록도이다.
도 4를 참조하면, 네임 노드(200)는 블록 정보 수집부(221), 복제 블록 선택부(222), 노드 중복 검사부(223) 및 인코딩 명령부(224)를 포함할 수 있다. 또한 네임 노드(200)는 결함 블록 감지기(231), 스트라이프 추출기(232), 스트라이프 블록 정보 수집부(233) 및 디코딩 명령부(234)를 더 포함할 수 있다. 여기서 블록 정보 수집부(221), 복제 블록 선택부(222), 노드 중복 검사부(223) 및 인코딩 명령부(224)는 소거 코더를 이용하여 인코딩 동작을 수행하고, 결함 블록 감지기(231), 스트라이프 추출기(232), 스트라이프 블록 정보 수집부(233) 및 디코딩 명령부(234)는 디코딩 동작을 수행할 수 있다.
도 5는 본 발명의 일 실시예에 따른 도 2의 데이터 노드들 중 하나를 나타내는 블록도이다.
도 5를 참조하면, 데이터 노드(310)는 명령 수신부(321), 로컬 파일 경로 추출부(322), 데이터 블록 인코딩부(323) 및 패리티 블록 이동부(324)를 포함할 수 있다. 또한 데이터 노드(310)는 스트라이프 블록 수집기(331), 데이터 블록 디코딩부(332), 스트라이프 블록 삭제부(333) 및 로컬 스토리지(334)를 포함할 수 있다. 여기서, 명령 수신부(321), 로컬 파일 경로 추출부(334), 로컬 스토리지(334), 데이터 블록 인코딩부(323) 및 패리티 블록 이동부(324)는 소거 코드를 이용하여 인코딩 동작을 수행할 수 있고, 명령 수신부(321), 스트라이프 블록 수집기(331), 로컬 파일 경로 추출부(334), 로컬 스토리지(334), 데이터 블록 디코딩부(332) 및 스트라이프 블록 삭제부(333)는 디코딩 동작을 수행할 수 있다.
이하 도 2 내지 도 5를 참조하여 본 발명의 일 실시예에 따른 분산 파일 시스템의 인코딩 동작 및 디코딩 동작을 설명한다.
먼저, 블록 정보 수집부(221)는 클라이언트(110)로부터의 인코딩 신호(ENS)에 응답하여 메타 데이터(210)에서 데이터 노드들(310~3n0) 각각에 저장된 데이터 블록들의 블록 정보를 스캔한다. 복제 블록 선택부(222)는 상기 블록 정보로부터 상기 데이터 블록들 중 원본 데이터 블록이 복제된 복제 블록들의 정보인 복제 블록 정보를 선택한다. 노드 중복 검사부(223)는 상기 복제 블록 정보를 기초로 상기 복제 블록들의 원본 데이터 블록들이 동일한 데이터 노드에 저장되어 있는지 여부를 판단한다. 인코딩 명령부(224)는 상기 노드 정복 검사부(223)의 판단 결과에 따라 데이터 노드들(310~3n0) 각각에 대한 스트라이프를 구성하며, 상기 스트라이프의 정보를 매개 변수로 하여 데이터 노드들(310~3n0)에 인코딩 명령(ENC)을 출력한다. 여기서, 스트라이프는 하나의 데이터 노드에 저장된 서로 다른 파일들의 데이터 블록들의 집합을 의미한다. 또한 하나의 데이터 노드에 대하여 복수개의 스트라이프들이 구성될 수 있다. 즉 인코딩 명령부(224)는 데이터 노드들(310~3n0)에 스트라이프 리스트를 매개변수로 하여 인코딩 명령(ENC)을 출력한다.
인코딩 명령(ENC)을 수신한 데이터 노드들(310~3n0) 각각은 자신의 로컬 스토리지에 저장되어 있는 데이터 블록들을 소거 코딩으로 인코딩하여 패리티 블록들을 생성하고 복제 블록들을 삭제한다. 보다 상세하게는, 명령 수신부(321)는 인코딩 명령(ENC)을 수신하고, 로컬 파일 경로 추출부(322)는 상기 스트라이프 수신하여 상기 스트라이프에 포함된 데이터 블록들의 로컬 스토리지(334) 내에서의 경로 정보를 추출한다. 데이터 블록 인코딩부(323)는 상기 경로 정보에 기초하여 상기 데이터 블록들을 소거 코딩하여 상기 패리티 블록들을 생성한다. 패리티 블록 이동부(324)는 상기 패리티 블록들 중 하나를 상기 로컬 스토리지에 저장하고 나머지 패리티 블록들은 상기 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 이동시킨다. 즉 본 발명의 실시예에 따른 분산 파일 시스템(100)에서는 네임 노드(200)가 서로 다른 파일들의 복제 블록들로 구성된 스트라이프를 구성하여 스트라이프 정보를 데이터 노드들(310~3n0) 각각에 전달하고, 데이터 노드들(310~3n0) 각각은 상기 스트라이프를 구성하는 복제 블록들을 소거 코드를 이용하여 인코딩하여 패리티 블록들을 생성하고, 생성된 패리티 블록들을 복제 블록들의 원본 데이터 블록들이 저장된 데이터 노드와는 다른 데이터 노드들에 배치한다.
이 때, 데이터 노드들(310~3n0) 각각은 패리티 블록들이 다른 데이터 노드들에 이동된 이후에는 해당 스트라이프를 구성했던 복제 블록들을 모두 삭제하고 인코딩이 완료되었음을 네임 노드(200)에 보고할 수 있다. 인코딩 완료를 보고 받은 네임 노드(200)는 각 데이터 노드의 스트라이프들의 구성 정보를 메타 데이터로서 관리한다.
이하에서는 분산 파일 시스템(100)의 디코딩 동작을 설명한다.
분산 파일 시스템(100)의 디코딩 동작은 분산 파일 시스템(100)의 전술한 인코딩 동작을 완료하고 소거 코딩을 통해 생성된 패리티 블록들이 각 데이터 노드에 배치되고 원본 데이터 블록에 장애 또는 결함이 생긴 경우에 이를 복원하는 동작이다.
결함 블록 감지기(231)는 클라이언트(100)로부터의 디코딩 신호(DCS)에 응답하여 원본 데이터 블록들 중 결함이 발생한 데이터 블록(이하 결함 블록)을 감지한다. 스트라이프 추출기(232)는 상기 결함 블록이 속한 스트라이프를 선택한다. 스트라이프 블록 정보 수집부(233)는 상기 선택된 결함 블록이 속한 스트라이프를 구성하는 데이터 블록들과 패리티 블록들의 정보를 수집한다. 디코딩 명령부(234)는 스트라이프 블록 정보 수집부(233)에 수집된 블록들의 정보를 매개 변수로 하여 결함이 발생한 데이터 노드에 디코딩 명령(DCC)을 출력한다.
명령 수신부(321)는 디코딩 명령(DCC)을 수신하고, 스트라이프 블록 수집기(331)는 디코딩 명령(DCC)에 포함된 수집된 블록들의 정보에 따라 상기 스트라이프를 구성하는 데이터 블록들과 패리티 블록들을 다른 데이터 노드들로부터 수집한다. 로컬 파일 경로 추출부(322)는 상기 수집된 데이터 블록들의 로컬 스토리지(334) 내에서의 로컬 파일 경로를 추출한다. 데이터 블록 디코딩부(332)는 상기 추출된 로컬 파일 경로를 매개 변수로 하여 상기 결함이 발생한 데이터 블록을 복구한다. 스트라이프 블록 삭제부(333)는 상기 결함이 발생한 데이터 블록이 복구된 후, 상기 결함이 발생한 데이터 블록의 복구에 사용되기 위해 결함 데이터 블록이 위치한 데이터 노드에 복제된 데이터 블록들 및 패리티 블록들을 삭제한다.
즉 본 발명의 실시예에 따른 분산 파일 시스템(100)의 인코딩 동작에서는 데이터 노드들(310~3n0) 각각이 복제 블록들을 기초로 패리티 블록들을 생성하고 복제 블록들을 삭제하여 저장 공간을 절약할 수 있다.
도 6은 본 발명의 일 실시예에 따른 분산 파일 시스템의 데이터 인코딩 방법을 나타내는 흐름도이다.
이하 도 2, 도 4 내지 도 6을 참조하여 분산 파일 시스템의 데이터 인코딩 방법을 상술한다.
먼저 블록 정보 수집부(221)에서는 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들이 저장되는 데이터 블록들 각각의 블록 정보를 스캔한다(S410). 복제 블록 선택부(222)에서 스트라이프를 구성하기 위하여 데이터 노드들(310~3n0) 각각의 데이터 노드에 저장된 데이터 블록이 복제 블록인지 여부를 판단한다(S420). 단계(S420)에서 저장된 데이터 블록이 복제 블록이 아니고 원본 데이터 블록이면(No) 해당 데이터 블록을 스트라이프 구성에서 배제한다(S430). 단계(S420)에서 저장된 데이터 블록이 복제 블록이면(Yes), 복제 블록을 기초로 스트라이프를 구성한다(S440). 데이터 노드들(310~3n0) 각각에 대한 스트라이프 구성이 완료되면, 네임 노드(200)는 데이터 노드들(310~3n0) 각각에 인코딩 명령(ENC)을 출력한다. 인코딩 명령(ENC)을 수신한 데이터 노드들(310~3n0) 각각은 상술한 바와 같이 복제 블록들을 소거 코딩하여 패리티 블록들을 생성하고, 패리티 블록들을 서로 다른 데이터 노드들에 배치한다.
도 7은 도 6의 단계(S440)를 보다 상세히 나타내는 흐름도이다.
도 7을 참조하면, 복제 블록을 기초로 스트라이프를 구성하기 위하여, 복제 블록 선택부(222)에서 하나의 복제 블록을 스트라이프를 구성할 후보 블록 맵에 일단 포함시킨다(S441). 노드 중복 검사부(120)에서 포함된 하나의 복제 블록의 원본 데이터 블록이 스트라이프 후보 블록 맵에 이미 포함된 다른 복제 블록들과 다른 데이터 노드에 저장되어 있는지 여부를 판단한다(S443). 단계(S443)에서 No이면, 즉 서로 다른 데이터 노드에 저장되어 있지 않으면, 단계(S441)로 복귀하여 다른 복제 블록을 후보 블록 맵에 일단 포함시킨다. 단계(S443)에서 Yes이면, 즉 서로 다른 데이터 노드에 저장되어 있으면, 상기 하나의 복제 블록이 포함된 스트라이프 후보 블록 맵에 포함된 복제 블록들의 개수가 기설정된 스트라이프의 크기만큼 모였는지를 판단한다(S445). 단계(S445)에서 No이면, 단계(S410)로 이동한다. 단계(S445)에서 Yes이면, 복제 블록들을 기초로 스트라이프를 구성한다(S440).
도 8은 본 발명의 일 실시예에 따른 분산 파일 시스템의 데이터 디코딩 방법을 나타내는 흐름도이다.
이하 도 2, 도 4 내지 도 5 및 도 8을 참조하여 분산 파일 시스템의 데이터 인코딩 방법을 상술한다.
먼저, 결함 블록 감지기(231)는 데이터 노드들에 저장된 데이터 블록들 중 결함이 발생한 데이터 블록을 인지한다(S510). 스트라이프 추출기(232)와 스트라이프 블록 정보 수집부(233)는 상기 결함이 발생한 데이터 블록이 속한 스트라이프의 블록 정보를 추출한다(S520). 디코딩 명령부(234)는 상기 결함이 발생한 데이터 블록이 포함된 스트라이프의 구성 정보를 매개 변수로 하여 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 디코딩 명령을 전송(S530)한다. 스트라이프 블록 수집기(331)는 상기 결함이 발생한 데이터 블록이 포함된 스트라이프를 구성하는 패리티 블록들을 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 수집한다(S540). 데이터 블록 디코딩부(332)는 상기 패리티 블록들을 이용하여 상기 결함이 발생한 데이터 블록을 복구한다(S550). 스트라이프 블록 삭제부(333)는 상기 결함이 발생한 데이터 블록을 복구한 후 상기 패리티 블록들을 삭제한다(S560).
상술한 바와 같이 본 발명의 일 실시예에 따른 분산 파일 시스템(100)에서는 데이터 블록들과 복제 블록들 및 패리티 블록들을 데이터 노드들에 배치할 때 다음과 같은 배치 규칙에 따른다.
첫 번째로는, 동일한 스트라이프에 속하는 데이터 블록들의 원본 데이터 블록들은 서로 다른 데이터 노드들에 배치한다.
두 번째로는, 생성된 패리티 블록은 패리티 블록을 생성하기 위해 작성된 스트라이프에 포함된 데이터 블록의 원본 데이터 블록과 다른 데이터 노드에 배치한다.
세 번째로는, 하나의 스트라이프로부터 생성된 패리티 블록들은 서로 다른 데이터 노드들에 배치한다.
도 9 내지 도 11은 위의 배치 규칙이 위배되는 실시예들이고, 도 12는 위의 배치 규칙에 따르는 실시예이다.
도 9 내지 도 12에서 제1 파일(610)은 데이터 블록들(D0, D1)로 구성되고, 제2 파일(620)은 데이터 블록들(D2, D3)로 구성된다. 또한 참조번호(630)에 나타난 바와 같이 스트라이프의 크기는 2이고, 제1 스트라이프(스트라이프 1)는 {D0, D2, P1, P2}로 구성되고, 제2 스트라이프(스트라이프 2)는 {D1, D3, P3, P4} 로 구성되는 경우를 예제로 설명한다. 여기서, {P1, P2, P3, P4}는 데이터 블록들(D0~D3)에 대한 패리티 블록들을 나타낸다.
도 9에 도시된 바와 같이, 제1 및 제2 파일들(610, 620)을 구성하는 데이터 블록들은 8개의 데이터 노드들(DN1~DN8)에 임의로 분산되어 배치되어 있다. 도 9의 데이터 노드(DN4)에서 패리티 블록들(P1, P2)을 생성하여 P1은 데이터 노드(DN5)에 저장해 두고, P2를 DN6로 이동시키고, DN7에서 생성한 P3과 P4 중 P4는 DN8로 이동시킨다. 그런데 이 경우 제1 스트라이프을 구성하는 데이터 블록들(D0, D2)이 DN1 데이터 노드에 함께 저장되어있다. 이러한 경우, DN1 데이터 노드에 결함이 발생하는 경우 패리티 블록의 개수 이상으로 데이터 블록에 결함이 발생하므로(D0, D2로 2개), 패리티 블록들을 가지고도 D0, D2 데이터 블록을 복원해내지 못하게 된다. 따라서 도 9의 실시예는 동일한 스트라이프에 속하는 데이터 블록들의 원본 데이터 블록들은 서로 다른 데이터 노드들에 배치한다는 첫 번째 규칙을 위배하는 경우이다.
도 10에 도시된 바와 같이, 제1 및 제2 파일들(610, 620)을 구성하는 데이터 블록들은 8개의 데이터 노드들(DN1~DN8)에 임의로 분산되어 배치되어 있다. 도 10의 데이터 노드(DN5)에서 패리티 블록들(P1, P2)를 생성하여 P1은 데이터 노드(DN5)에 저장해 두고, P2를 DN1로 이동시키고, DN7에서 생성한 P3과 P4 중 P4는 DN8로 이동시킨다. 그런데 이 경우 제1 스트라이프를 구성하는 데이터 블록과(D0)과 패리티 블록(P2)이 DN1 데이터 노드에 함께 저장되어있다. 이런 경우도 도 9와 같이 DN1 노드에 결함이 발생하는 경우 보유한 패리티 블록의 개수 이상으로 데이터 블록에 결함이 발생하므로 해당 블록을 복원할 수 있는 방법이 없어진다. 따라서 도 10의 실시예는 생성된 패리티 블록은 패리티 블록을 생성하기 위해 작성된 스트라이프에 포함된 데이터 블록의 원본 데이터 블록과 다른 데이터 노드에 배치한다는 두 번째 규칙을 위배하는 경우이다.
도 11에 도시된 바와 같이, 제1 및 제2 파일들(610, 620)을 구성하는 데이터 블록들은 8개의 데이터 노드들(DN1~DN8)에 임의로 분산되어 배치되어 있다. 도 11의 데이터 노드(DN5)에서 패리티 블록들(P1, P2)을 생성하여 P1과 P2를 모두 데이터 노드(DN5)에 저장해 두고, DN7에서 생성한 P3과 P4 중 P4는 DN8로 이동시킨다. 그런데 이 경우 DN5 노드에 결함이 발생하는 경우 해당 스트라이프에 대한 모든 패리티 블록이 유실되므로 D0, 또는 D2의 결함 발생 시 가용한 패리티 블록이 없어 블록 복구를 수행할 수 없게 된다. 따라서 도 11의 실시예는 하나의 스트라이프로부터 생성된 패리티 블록들은 서로 다른 데이터 노드들에 배치한다는 세 번째 규칙을 위배하는 케이스이다.
도 12에 도시된 바와 같이, 제1 및 제2 파일들(610, 620)을 구성하는 데이터 블록들은 8개의 데이터 노드들(DN1~DN8)에 임의로 분산되어 배치되어 있다. 도 9의 데이터 노드(DN4)에서 패리티 블록들(P1, P2)을 생성하여 P1은 데이터 노드(DN5)에 저장해 두고, P2를 DN2로 이동시키고, DN7에서 생성한 P3과 P4 중 P4는 DN8로 이동시킨다. 따라서 도 12의 실시예는 본 발명의 실시예에 따르는 분산 파일 시스템의 데이터 블록 배치 방법의 규칙을 따른 경우이다.
이와 같이 본 발명의 실시예들에 따른 분산 파일 시스템에서는 복제 블록들을 erasure coding으로 생성된 패리티 블록으로 대체하는 방식으로 저장 공간을 절약하며, 원본 데이터 블록의 오류, 훼손 시 erasure code로 작성된 패리티 블록과 해당 데이터 블록과 같은 스트라이프에 포함되었던 다른 데이터 블록들을 가지고 오류 보정 기법을 이용해 훼손된 데이터 블록을 복구하는 방법으로 내고장성을 지원한다. 특히, 복제 블록들을 패리티 블록으로 대체한 이후에는 본 발명에서 같이 고안한 새로운 블록 배치 규칙을 통하여 패리티 블록을 적절히 실행 시간에 배치함으로써 기 배치된 데이터 블록이나 다른 패리티 블록과 서로 동일 노드에 위치함에 따라 발생할 수 있는 내고장성 성능의 저하를 막고, 기존 데이터 복제 방식과 동일한 내고장성을 보장한다. 또한, 각 데이터 노드는 자신이 가지고 있는 데이터 블록들만을 가지고 인코딩을 수행함으로써 타 방식과 달리 인코딩을 위한 블록의 노드간 이동이 필요 없고, 미리 블록 배치가 지정되어 있을 필요도 없으며, 각 노드가 병렬적으로 인코딩을 수행함으로써 효과적인 인코딩이 가능하다.
본 발명의 실시예들은 GFS, HDFS와 같은 다양한 형태의 블록 단위의 복제에 기반한 내고장성을 제공하는 분산 파일 시스템들에 적용 가능하다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (14)

  1. 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장되는 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템에 있어서,
    상기 데이터 노드들은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 저장하고,
    상기 네임 노드는 상기 데이터 노드들의 블록 정보를 스캔하여 상기 데이터 노드들 각각에 저장된 데이터 블록들로 구성되는 적어도 하나의 스트라이프를 구성하고,
    상기 데이터 노드들 각각은 상기 네임 노드에서 전달된 인코딩 명령을 실행하기 위하여 상기 데이터 블록들의 로컬 스토리지에서의 경로를 추출하고, 소거 코딩으로 인코딩하여 패리티 블록들을 생성하고, 상기 생성된 패리티 블록들 중 하나만을 자신의 데이터 노드에 저장하고 나머지 패리티 블록들은 다른 데이터 노드들에 이동시켜 저장하고,
    저장된 데이터 블록에 결함이 발생하는 경우, 상기 네임 노드로부터 상기 결함이 발생한 블록이 포함되는 스트라이프의 구성 정보를 수신하고 디코딩하여 상기 결함이 발생한 데이터 블록을 복구하는 분산 파일 시스템.
  2. 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장된 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템에 있어서,
    상기 데이터 노드들은 상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 저장하고,
    상기 네임 노드는 상기 데이터 노드들 각각에 저장된 데이터 블록들로 구성되는 적어도 하나의 스트라이프를 구성하고, 상기 스트라이프에 포함된 복제 블록들에 해당하는 원본 데이터 블록들은 서로 다른 데이터 노드들에 저장되도록 하고,
    상기 데이터 노드들 각각은 상기 네임 노드로부터의 인코딩 명령에 응답하여 해당 스트라이프에 포함된 복제 블록들을 소거 코딩(erasure coding)하여 패리트 블록들을 생성하는 분산 파일 시스템.
  3. 제2항에 있어서, 상기 데이터 노드들 각각은 상기 생성된 패리티 블록들 중 하나만을 자신의 데이터 노드에 저장하고 나머지 패리티 블록들은 다른 데이터 노드들에 이동시켜 저장하는 것을 특징으로 하는 분산 파일 시스템.
  4. 제3항에 있어서, 상기 나머지 패리티 블록들은 상기 해당 스트라이프에 포함된 복제 블록들에 해당하는 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 저장되는 것을 특징으로 하는 분산 파일 시스템.
  5. 제1항에 있어서, 상기 네임 노드는,
    상기 메타 데이터에서 상기 데이터 노드들 각각에 저장된 데이터 블록들의 블록 정보를 스캔하는 블록 정보 수집부;
    상기 블록 정보 수집부로터 제공받는 상기 블록 정보 중에서 상기 복제 블록들의 블록 정보인 복제 블록 정보를 선택하는 복제 블록 선택부;
    상기 복제 블록 정보를 기초로 상기 복제 블록들의 원본 데이터 블록들이 동일한 데이터 노드에 저장되어 있는지를 판단하는 노드 중복 검사부;
    상기 노드 중복 검사부의 판단 결과에 따라 상기 데이터 노드를 각각에 대한 상기 스트라이프를 구성하며, 상기 스트라이프의 정보를 매개 변수로 하여 상기 데이터 노드들에 상기 인코딩 명령을 출력하는 인코딩 명령부를 포함하는 것을 특징으로 하는 분산 파일 시스템.
  6. 제5항에 있어서, 상기 데이터 노드들 각각은
    상기 인코딩 명령을 수신하는 명령 수신부;
    상기 명령 수신부에 수신된 인코딩 명령에 포함된 상기 스트라이프 수신하여 상기 스트라이프에 포함된 데이터 블록들의 로컬 스토리지 내에서의 경로 정보를 추출하는 로컬 파일 경로 추출부;
    상기 경로 정보에 기초하여 상기 데이터 블록들을 소거 코딩하여 상기 패리티 블록들을 생성하는 데이터 블록 인코딩부; 및
    상기 패리티 블록들 중 하나를 상기 로컬 스토리지에 저장하고 나머지 패리티 블록들은 상기 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 이동시키는 패리티 블록 이동부를 포함하는 것을 특징으로 하는 분산 파일 시스템.
  7. 제6항에 있어서, 상기 네임 노드는
    상기 데이터 노드들에 저장된 데이터 블록들 중 결함이 발생한 데이터 블록을 감지하는 결함 블록 감지기;
    상기 결함이 발생한 데이터 블록이 속한 스트라이프의 블록 정보를 추출하는스트라이프 추출기;
    상기 추출된 스트라이프를 구성하는 데이터 블록들과 패리티 블록들의 정보를 수집하는 스트라이프 블록 정보 수집부;
    상기 스트라이프 블록 정보 수집부에서 수집된 정보를 매개 변수로 하여 상기 결함이 발생한 데이터 블록이 저장된 데이터 노드에 디코딩 명령을 출력하는 디코딩 명령부를 더 포함하는 것을 특징으로 하는 분산 파일 시스템.
  8. 제7항에 있어서, 상기 명령 수신부는 상기 디코딩 명령을 수신하고,
    상기 데이터 노드를 각각은
    스트라이프 블록 수집기;
    데이터 블록 디코딩부; 및
    스트라이프 블록 삭제부를 더 포함하고,
    상기 스트라이프 블록 수집기는 상기 명령 수신기가 수신한 상기 디코딩 명령에 포함된 상기 수집된 정보에 따라 상기 스트라이프를 구성하는 데이터 블록들과 패리티 블록들을 다른 데이터 노드들로부터 수집하고,
    상기 로컬 파일 경로 추출부는 상기 수집된 데이터 블록들의 상기 로컬 스토리지 내에서의 로컬 파일 경로를 추출하고,
    상기 데이터 블록 디코딩부는 상기 추출된 로컬 파일 경로를 매개 변수로 하여 상기 결함이 발생한 데이터 블록을 복구하고,
    상기 스트라이프 블록 삭제부는 상기 결함이 발생한 데이터 블록이 복구된 후, 상기 결함이 발생한 데이터 블록의 복구에 사용된 데이터 블록들 및 패리티 블록들을 삭제하는 것을 특징으로 하는 분산 파일 시스템.
  9. 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장된 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템의 데이터 인코딩 방법에 있어서,
    상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들이 저장되는 상기 데이터 블록들 각각의 블록 정보를 스캔하는 단계;
    상기 데이터 노드들 각각에 저장된 데이터 블록이 복제 블록인지 여부를 판단하는 단계;
    상기 저장된 데이터 블록이 복제 블록인 경우, 상기 복제 블록을 기초로 스트라이프를 생성하는 단계; 및
    상기 스트라이프를 매개 변수로 하여 상기 각각의 데이터 노드에 인코딩 명령을 전송하는 단계를 포함하는 분산 파일 시스템의 데이터 인코딩 방법.
  10. 제9항에 있어서, 상기 각각의 데이터 노드는 상기 인코딩 명령에 응답하여 상기 스트라이프에 포함된 복제 블록들을 소거 코딩하여 패리티 블록들을 생성하는 것을 특징으로 하는 분산 파일 시스템의 데이터 인코딩 방법.
  11. 제10항에 있어서, 상기 각각의 데이터 노드는 상기 생성된 패리티 블록들을 상기 스트라이프에 포함된 복제 블록들의 원본 데이터 블록들이 저장되는 데이터 노드들과는 다른 데이터 노드들에 저장하는 것을 특징으로 하는 분산 파일 시스템의 데이터 인코딩 방법.
  12. 제10항에 있어서, 상기 하나의 데이터 노드는 상기 패리티 블록들을 생성한 후 상기 복제 블록들을 삭제하는 것을 특징으로 하는 분산 파일 시스템의 데이터 인코딩 방법.
  13. 복수의 데이터 노드들과 상기 복수의 데이터 노드들에 블록 단위로 저장된 적어도 하나의 파일의 메타 데이터를 관리하는 네임 노드로 구성되는 분산 파일 시스템의 데이터 디코딩 방법에 있어서,
    상기 적어도 하나의 파일을 구성하는 원본 데이터 블록들과 상기 원본 데이터 블록들이 복제된 복제 블록들을 포함하는 데이터 블록들 중 적어도 하나의 블록에서 결함을 인지하는 단계;
    상기 결함이 발생한 데이터 블록이 포함된 스트라이프의 구성 정보를 추출하는 단계;
    상기 결함이 발생한 데이터 블록이 포함된 스트라이프의 구성 정보를 매개 변수로 하여 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 디코딩 명령을 전송하는 단계;
    상기 결함이 발생한 데이터 블록이 포함된 스트라이프를 구성하는 데이터 블록들과 패리티 블록들을 상기 결함이 발생한 데이터 블록이 저장되는 데이터 노드에 수집하는 단계;
    상기 수집된 데이터 블록들과 패리티 블록들을 이용하여 상기 결함이 발생한 데이터 블록을 복구하는 단계; 및
    상기 결함이 발생한 데이터 블록을 복구한 후 상기 수집된 데이터 블록들과 패리티 블록들을 삭제하는 단계를 포함하는 분산 파일 시스템의 데이터 디코딩 방법.
  14. 제13항에 있어서, 상기 스트라이프는 서로 다른 파일의 복제 블록들로 구성되는 것을 특징으로 하는 분산 파일 시스템의 데이터 디코딩 방법.

KR1020120103555A 2012-09-18 2012-09-18 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법 KR101341386B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120103555A KR101341386B1 (ko) 2012-09-18 2012-09-18 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120103555A KR101341386B1 (ko) 2012-09-18 2012-09-18 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법

Publications (1)

Publication Number Publication Date
KR101341386B1 true KR101341386B1 (ko) 2013-12-13

Family

ID=49988272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120103555A KR101341386B1 (ko) 2012-09-18 2012-09-18 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법

Country Status (1)

Country Link
KR (1) KR101341386B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102007126B1 (ko) * 2018-12-27 2019-08-02 부산대학교 산학협력단 결손된 운영 데이터의 복원 방법 및 복원 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990010106A (ko) * 1997-07-15 1999-02-05 윤종용 외부저장 서브시스템에서 패리티 저장및 디스크 페일시 데이터 복구방법과 그 장치
JP2002288014A (ja) * 2001-03-27 2002-10-04 Fujitsu Ltd ファイル管理システム及びファイルデータ書込方法
KR101128998B1 (ko) * 2010-09-15 2012-03-23 케이티하이텔 주식회사 패리티 데이터를 이용한 분산 파일 운용 방법
KR20120090320A (ko) * 2011-02-07 2012-08-17 케이티하이텔 주식회사 분산 파일 시스템에서 효율적인 자료 복구 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990010106A (ko) * 1997-07-15 1999-02-05 윤종용 외부저장 서브시스템에서 패리티 저장및 디스크 페일시 데이터 복구방법과 그 장치
JP2002288014A (ja) * 2001-03-27 2002-10-04 Fujitsu Ltd ファイル管理システム及びファイルデータ書込方法
KR101128998B1 (ko) * 2010-09-15 2012-03-23 케이티하이텔 주식회사 패리티 데이터를 이용한 분산 파일 운용 방법
KR20120090320A (ko) * 2011-02-07 2012-08-17 케이티하이텔 주식회사 분산 파일 시스템에서 효율적인 자료 복구 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102007126B1 (ko) * 2018-12-27 2019-08-02 부산대학교 산학협력단 결손된 운영 데이터의 복원 방법 및 복원 장치
US11113268B2 (en) 2018-12-27 2021-09-07 Pusan National University Industry-University Cooperation Foundation Method and device for restoring missing operational data

Similar Documents

Publication Publication Date Title
US11960777B2 (en) Utilizing multiple redundancy schemes within a unified storage element
US10956601B2 (en) Fully managed account level blob data encryption in a distributed storage environment
US10789020B2 (en) Recovering data within a unified storage element
US10764045B2 (en) Encrypting object index in a distributed storage environment
US10437672B2 (en) Erasure coding and replication in storage clusters
US10437671B2 (en) Synchronizing replicated stored data
US9658928B2 (en) File-based cluster-to-cluster replication recovery
US10659225B2 (en) Encrypting existing live unencrypted data using age-based garbage collection
CN103944981B (zh) 一种基于纠删码技术改进的云存储系统及实现方法
CN101888405B (zh) 一种云计算的文件系统和数据处理方法
US11093387B1 (en) Garbage collection based on transmission object models
US7975171B2 (en) Automated file recovery based on subsystem error detection results
CN102546755A (zh) 云存储系统的数据存储方法
US11003554B2 (en) RAID schema for providing metadata protection in a data storage system
CN104965835A (zh) 一种分布式文件系统的文件读写方法及装置
US20230229363A1 (en) Tiering Valid Data after a Disaster Recovery Operation
KR101341386B1 (ko) 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법
US11645333B1 (en) Garbage collection integrated with physical file verification
CN107357677A (zh) 一种GlusterFS基于纠删码的数据冗余存储方法
KR20190062197A (ko) 연속 데이터 관리 시스템 및 방법
Akoush et al. Recomputation-based data reliability for MapReduce using lineage

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee