KR20140124674A - 파일 수준의 데이터 분산 저장 방법 - Google Patents

파일 수준의 데이터 분산 저장 방법 Download PDF

Info

Publication number
KR20140124674A
KR20140124674A KR1020130042501A KR20130042501A KR20140124674A KR 20140124674 A KR20140124674 A KR 20140124674A KR 1020130042501 A KR1020130042501 A KR 1020130042501A KR 20130042501 A KR20130042501 A KR 20130042501A KR 20140124674 A KR20140124674 A KR 20140124674A
Authority
KR
South Korea
Prior art keywords
chunk
data
parity
file
chunks
Prior art date
Application number
KR1020130042501A
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 KR1020130042501A priority Critical patent/KR20140124674A/ko
Priority to US13/950,800 priority patent/US20140317056A1/en
Publication of KR20140124674A publication Critical patent/KR20140124674A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS

Abstract

분산 파일 시스템의 메타데이터 서버는 파일의 접근 빈도를 계산하고, 파일의 데이터를 청크 단위로 나누어 스트라입으로 저장하고 있는 데이터 서버가 상기 파일의 청크들을 유지하는 방식을 파일의 접근 빈도에 따라서 변경한다.

Description

파일 수준의 데이터 분산 저장 방법{METHOD FOR DISTRIBUTING AND STORING FILE-BASED DATA}
본 발명은 파일 수준의 데이터 분산 저장 방법에 관한 것으로, 보다 자세하게는 분산 파일 시스템에서 네트워크로 연결된 데이터 서버들에 파일 수준의 데이터를 분산 저장함에 있어 스토리지 효율성 및 가용성을 제공하는 방법에 관한 것이다.
분산 파일 시스템은 파일의 메타데이터와 실제 데이터를 분리하여 저장하고 관리하는 시스템이다.
통상적으로, 메타데이터는 다른 데이터를 설명해 주는 데이터로서, 속성정보라고도 한다.
메타데이터는 메타데이터 서버에서 관리된다. 실제 데이터는 복수의 데이터 서버에 분산되어 저장된다.
메타데이터는 실제 데이터가 저장되어 있는 데이터 서버에 대한 정보를 포함한다. 메타데이터 서버와 복수의 데이터 서버는 네트워크로 연결되어 분산된 구조를 갖는다.
따라서, 클라이언트에서 파일의 메타데이터와 실제 데이터를 접근하는 경로가 분리된다. 즉, 파일에 접근하기 위해서, 클라이언트는 먼저 메타데이터 서버에 있는 파일의 메타데이터를 접근하여 실제 데이터가 저장되어 있는 복수의 데이터 서버에 대한 정보를 얻는다. 그리고 나서 실제 데이터에 대한 입출력은 복수의 데이터 서버를 통하여 이루어진다.
파일의 실제 데이터는 네트워크로 연결된 데이터 서버들에 정해진 크기로 나누어 저장된다. 이렇게 저장되는 단위를 청크(chunk)라고 하며, 데이터 서버에 저장된 청크들은 데이터 서버 고장 등의 장애를 대비하여 다른 데이터 서버에 복제되어 저장된다. 데이터 서버에 고장이 발생하였음을 감지되었을 때 고장난 데이터 서버에 저장된 주 청크에 대한 복제본을 정해진 개수만큼 유지할 수 있어야 한다. 그렇지 않으면 연속적인 데이터 서버 고장이 발생하였을 때 주 청크에 접근하지 못할 수도 있기 때문이다. 복제본의 개수는 데이터를 중요도 또는 접근되는 빈도에 따라 결정될 수도 있으며, 실제 데이터를 저장하기 위해서는 복제본의 개수에 따라 스토리지 공간이 배수로 소요될 수 있다.
그러나 이와 같은 장애 상황을 대비하여 데이터를 복제하여 유지하는 방법은 접근빈도가 저조한 데이터 또한 복제본을 유지함으로써 스토리지를 낭비하는 결과를 초래할 수 있다. 반면에 복제본을 여러 데이터 서버들에 골고루 분산하여 저장함으로써 클라이언트로부터의 접근 부하를 분산시킬 수 있는 장점도 가지고 있다.
따라서 접근빈도에 따라서 데이터를 분산 저장하고 유지하면서 스토리지를 효율적으로 사용할 수 있으면서 장애 상황에서도 서비스를 제공할 수 있는 방법이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 접근빈도에 따라서 데이터를 분산 저장하고 유지하면서 스토리지를 효율적으로 사용할 수 있으면서 장애 상황에서도 서비스를 제공할 수 있는 파일 수준의 데이터 분산 저장 방법을 제공하는 것이다.
본 발명의 한 실시 예에 따르면, 분산 파일 시스템의 메타데이터 서버에서 파일의 데이터를 분산 저장하는 방법이 제공된다. 데이터 분산 저장 방법은 상기 파일의 접근 빈도를 계산하는 단계, 그리고 상기 파일의 데이터를 청크 단위로 나누어 스트라입으로 저장하고 있는 데이터 서버에서의 청크들의 유지 방식을 상기 파일의 접근 빈도에 따라서 변경하는 단계를 포함한다.
상기 변경하는 단계는 상기 파일의 접근 빈도가 설정 값 이상인 경우에 상기 유지 방식을 복제 방식으로 결정하는 단계, 그리고 상기 파일의 접근 빈도가 상기 설정 값 미만인 경우에 상기 유지 방식을 패리티(parity) 방식으로 결정하는 단계를 포함한다.
상기 복제 방식으로 결정하는 단계는 상기 파일의 주 청크에 대한 데이터 복제 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하는 단계, 그리고 상기 데이터 복제 청크의 복제를 상기 제1 데이터 서버로 요청하는 단계를 포함할 수 있다.
상기 복제 방식으로 결정하는 단계는 상기 복제가 완료되면 상기 파일의 레이아웃을 변경하는 단계를 더 포함할 수 있다.
상기 복제 방식으로 결정하는 단계는 상기 제1 데이터 서버가 패리티 방식의 주 청크와 패리티 청크를 갖는 스트라입에서 복제 방식의 주 청크와 데이터 복제 청크를 갖는 스트라입으로 변환하는 단계를 더 포함할 수 있다.
상기 할당하는 단계는 상기 복수의 데이터 서버 중 상기 주 청크에 대한 다른 데이터 복제 청크가 저장된 데이터 서버와 다른 데이터 서버를 상기 제1 데이터 서버로 선택하는 단계를 포함할 수 있다.
상기 패리티 방식으로 결정하는 단계는 스트라입에 대한 패리티 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하는 단계, 그리고 상기 제1 데이터 서버로 상기 스트라입에 대한 패리티 인코딩을 요청하는 단계를 포함할 수 있다.
상기 패리티 방식으로 결정하는 단계는 상기 패리티 인코딩이 성공적으로 완료되면 상기 파일의 레이아웃을 변경하는 단계를 더 포함할 수 있다.
상기 패리티 방식으로 결정하는 단계는 상기 제1 데이터 서버에 의해 주 청크와 데이터 복제 청크를 갖는 스트라입을 주 청크와 패리티 청크를 갖는 스트라입으로 변환하는 단계를 더 포함할 수 있다.
상기 할당하는 단계는 상기 복수의 데이터 서버 중 동일 스트라입에 속하는 주 청크와 패리티 청크가 저장된 데이터 서버와 다른 데이터 서버를 상기 제1 데이터 서버로 선택하는 단계를 포함할 수 있다.
상기 데이터 분산 저장 방법은 상기 청크의 유형에 따라서 상기 데이터 서버에 상기 청크를 할당하는 단계를 포함할 수 있다.
상기 할당하는 단계는 상기 청크의 유형이 복제 방식으로 저장되는 주 청크인 경우에 복수의 데이터 서버 중 상기 파일을 구성하는 다른 주 청크들이 할당된 데이터 서버와 다른 데이터 서버에 상기 청크를 할당하는 단계, 그리고 상기 청크의 유형이 상기 패리티 방식으로 저장되는 주 청크인 경우에 상기 복수의 데이터 서버 중 동일한 스트라입에 속하는 다른 주 청크와 패리티 청크가 저장된 데이터 서버와 다른 데이터 서버에 상기 청크를 할당하는 단계를 포함할 수 있다.
상기 데이터 분산 저장 방법은 상기 청크의 유형에 따라서 상기 데이터 서버에 저장된 청크를 삭제하는 단계를 포함할 수 있다.
상기 삭제하는 단계는 삭제할 청크가 복제 방식으로 저장된 주 청크, 데이터 복제 청크 및 패리티 청크인 경우, 해당 청크를 삭제하는 단계, 그리고 삭제할 청크가 패리티 방식으로 저장된 주 청크의 경우 패리티 청크를 생성하여 동일 스트라입에 할당하고 해당 청크를 삭제하는 단계를 포함할 수 있다.
상기 변경하는 단계는 상기 패리티 방식으로 저장되어 있는 파일의 데이터가 갱신되는 경우에, 상기 방식을 복제 방식으로 결정하는 단계를 더 포함할 수 있다.
상기 데이터 분산 저장 방법은 장애가 발생한 데이터 서버의 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하고 복구를 요청하는 단계를 더 포함할 수 있다.
본 발명의 다른 한 실시 예에 따르면, 분산 파일 시스템의 데이터 서버에서 파일의 데이터를 분산 저장하는 방법이 제공된다. 데이터 분산 저장 방법은 상기 파일의 데이터를 청크 단위로 나누어 스트라입으로 저장하는 단계, 상기 파일의 청크들을 유지하는 방식을 변경할 것을 메타데이터 서버로부터 수신하는 단계, 그리고 상기 파일의 청크들을 유지하는 방식을 변경하는 단계를 포함하며, 상기 메타데이터 서버에 의해 상기 파일의 접근 빈도에 따라서 상기 파일의 청크들을 유지하는 방식의 변경 여부가 결정된다.
상기 변경하는 단계는 상기 파일의 접근 빈도가 설정 값 이상인 경우에, 상기 방식을 복제 방식으로 변경하는 단계, 그리고 상기 파일의 접근 빈도가 상기 설정 값 미만인 경우에, 상기 방식을 패리티(Parity) 방식으로 변경하는 단계를 포함할 수 있다.
상기 변경하는 단계는 상기 패리티 방식으로 저장되어 있는 파일의 데이터가 갱신되는 경우에, 상기 방식을 복제 방식으로 변경하는 단계를 더 포함할 수 있다.
상기 데이터 분산 저장 방법은 복제 방식의 주 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 데이터 복제 청크에 장애가 발생한 주 청크에 대한 다른 데이터 복제 청크의 복제본을 복제하는 단계, 패리티 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 패리티 청크를 해당 스트라입의 주 청크들을 읽어서 복구하는 단계, 그리고 패리티 방식의 주 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 주 청크를 해당 스트라입의 다른 주 청크들과 패리티 청크를 읽어서 복구하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 의하면, 분산 파일 시스템에서 파일 수준의 데이터를 정해진 크기의 청크들로 나누어 데이터 서버들에 분산하여 저장하고 이러한 청크들을 복제 방식으로 유지하거나 패리티 방식으로 유지하면서 파일의 접근 빈도에 따라 복제 방식에서 패리티 방식으로 그리고 반대로 패리티 방식에서 복제 방식으로 변경한다. 특히, 데이터에 대한 접근 빈도가 많은 경우에는 청크들을 복제 방식으로 유지함으로써 효율적인 데이터 접근이 가능하도록 하고, 데이터에 대한 접근 빈도가 줄어들면 다시 데이터를 패리티 방식으로 변경함으로써 복제 방식에서 낭비되었던 스토리지 공간을 효율적으로 절약할 수 있으면서 복제 방식과 동일한 가용성을 제공할 수 있다.
또한 파일의 접근 형태에 따라 파일의 데이터를 복제 방식과 패리티 방식을 혼합하여 유지할 수 있도록 함으로써 데이터의 효율적인 접근과 스토리지 공간의 효율적인 유지를 가능하도록 하며, 데이터 서버 등의 장애에 동일한 수준의 복구 능력을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 분산 파일 시스템을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일의 레이아웃의 일 예를 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일 레이아웃의 다른 일 예를 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일 레이아웃의 또 다른 일 예를 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 메타데이터 서버에서 파일의 청크들을 할당하는 방법에 대해 개략적으로 도시한 도면이다.
도 6은 본 발명의 실시 예에 따른 메타데이터 서버에서 파일의 청크들을 삭제하는 방법에 대해 개략적으로 도시한 도면이다.
도 7은 본 발명의 실시 예에 따른 메타데이터 서버에서 데이터 서버에 할당된 청크들을 관리하는 방법을 나타낸 도면이다.
도 8은 본 발명의 실시 예에 따른 메타데이터 서버에서 복제 방식으로 저장된 파일을 패리티 방식으로 변환하는 방법의 일 예를 설명하는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 메타데이터 서버에서 패리티 방식으로 저장된 파일을 복제 방식으로 변환하는 방법의 일 예를 설명하는 흐름도이다.
도 10은 본 발명의 실시 예에 따른 메타데이터 서버에서 패리티 방식으로 저장된 파일을 복제 방식으로 변환하는 방법의 다른 일 예를 설명하는 흐름도이다.
도 11은 본 발명의 실시 예에 따른 클라이언트 단말에서 데이터 서버에 장애가 발생한 경우의 처리 과정을 도시한 흐름도이다.
도 12는 본 발명의 실시 예에 따른 데이터 서버에서 데이터를 복구하는 방법을 도시한 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
이제 본 발명의 실시 예에 따른 파일 수준의 데이터 분산 저장 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 분산 파일 시스템을 나타낸 도면이다.
도 1을 참고하면, 분산 파일 시스템은 클라이언트 단말(100), 메타데이터 서버(200) 및 복수의 데이터 서버(300)를 포함한다.
클라이언트 단말(100)은 클라이언트 응용을 수행한다. 클라이언트 단말(100)은 메타데이터 서버(200)에 저장된 파일의 메타데이터를 접근한다. 클라이언트 단말(100)은 데이터 서버(300)에 저장된 파일의 데이터를 입력 및 출력한다.
메타데이터 서버(200)는 분산 파일 시스템의 모든 파일에 대한 메타데이터를 저장하고 관리한다. 메타데이터 서버(200)는 모든 데이터 서버(300)에 대한 상태 정보를 관리한다. 즉, 메타데이터는 다른 데이터를 설명해 주는 데이터로서, 파일의 데이터가 저장되어 있는 데이터 서버에 대한 정보를 포함한다.
각 데이터 서버(300)는 파일의 주 청크를 저장하고 관리한다. 데이터 서버(300)는 주기적으로 메타데이터 서버(200)에게 자신의 상태 정보를 보고한다.
클라이언트 단말(100), 메타데이터 서버(200) 및 복수의 데이터 서버(300)는 네트워크로 상호 연결되며, 메타데이터 서버(200) 및 복수의 데이터 서버(300)는 분산된 구조를 갖는다.
파일의 데이터는 네트워크로 연결된 복수의 데이터 서버(300)에 정해진 크기로 나누어 저장된다. 이렇게 저장되는 단위를 청크(chunk)라고 한다. 이때 한 파일의 데이터는 복수의 데이터 서버(300)에 스트라입(stripe)된다.
데이터 서버(300)에 저장된 청크들은 데이터 서버(300)의 고장 등 장애를 대비하여 다른 데이터 서버(300)에 복제되어 저장된다. 또한 연속적인 데이터 서버 고장 등을 고려하여 청크에 대한 복제본은 정해진 개수만큼 복제되어 유지된다.
도 2는 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일의 레이아웃의 일 예로서, 데이터 서버(300)가 파일의 청크들을 복제 방식으로 유지할 때의 레이아웃을 개략적으로 도시한 도면이다.
데이터 서버(300)가 파일의 청크들을 복제본으로 유지하는 경우, 각 스트라입은 하나의 주 청크(주 청크-0/ 주 청크-1/ 주 청크-2/ 주 청크-3/ 주 청크-4/ 주 청크-5)와 하나 이상의 데이터 복제 청크(데이터 복제 청크-0/ 데이터 복제 청크-1/ 데이터 복제 청크-2/ 데이터 복제 청크-3/ 데이터 복제 청크-4/ 데이터 복제 청크-5)를 포함한다.
복제 방식의 경우 청크는 주 청크와 데이터 복제 청크를 포함한다. 주 청크는 원본 데이터가 저장되는 청크이고, 복제 청크는 주 청크를 복재하여 만들어진 청크이다. 파일에 대한 추가 및 변경은 주 청크에만 이루어지며, 주 청크에 반영된 데이터는 추후에 데이터 복제 청크로 복제된다.
데이터 서버(300)가 파일의 청크들을 복제본으로 유지하는 경우, 메타데이터 서버(200)에서 유지 관리하는 파일의 레이아웃은 도 2와 같이 기본적으로 청크 크기(201), 전체 청크 개수(202), 스트라입 개수(203), 스트라입 폭(204), 패리티 폭(205)에 해당하는 정보, 그리고 복수의 스트라입(206, 207, 208, 209, 210, 211)의 정보를 포함한다.
청크 크기(201)는 파일 별로 다를 수 있으며 한 파일에서 모든 청크는 동일한 크기를 갖는다.
전체 청크 개수(202)는 한 파일에 속하는 주 청크와 데이터 복제 청크를 포함한 개수를 의미한다.
스트라입 개수(203)는 한 파일에 속하는 전체 청크 개수(202)와 스트라입 폭(204), 그리고 패리티 폭(205)에 따라 결정될 수 있다.
스트라입 폭(204)은 복제 방식의 경우 하나의 스트라입에서 주 청크의 개수를 의미한다. 따라서 복제 방식의 경우에 일반적으로 스트라입 폭은 1이다.
패리티 폭(205)은 복제 방식의 경우 하나의 스트라입에서 데이터 복제 청크의 개수를 의미한다. 예를 들어, 패리티 폭이 1인 경우에는 복제본이 하나인 경우이며, 이 경우에는 스트라입에 속하는 하나의 청크를 저장하고 있는 데이터 서버(300)에 장애가 발생하더라도 대처할 수 있지만 스트라입에 속하는 2개의 청크를 저장하고 있는 두 데이터 서버(300)에 장애가 발생하였을 때는 대처하기 어렵다. 따라서 복제본을 2개를 두면 즉, 패리티 폭을 2로 하면 스트라입에 속하는 두 청크를 저장하고 있는 두 데이터 서버(300)가 동시에 장애가 발생하더라도 대처할 수 있다.
각 스트라입의 정보(206, 207, 208, 209, 210, 211)는 각 스트라입에 속하는 청크의 개수와 각 청크(주 청크-0, 주 청크-1, 주 청크-2, 주 청크-3, 주 청크-4, 주 청크-5, 데이터 복제 청크-0, 데이터 복제 청크-1, 데이터 복제 청크-2, 데이터 복제 청크-3, 데이터 복제 청크-4, 데이터 복제 청크-5)의 정보를 유지한다. 청크의 정보에는 청크가 저장된 데이터 서버와 디스크 정보 그리고 청크 식별자, 청크 버전, 상태 정보를 포함한다.
도 3은 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일 레이아웃의 다른 일 예로서, 데이터 서버(300)가 파일의 청크들을 패리티 방식으로 유지할 때의 레이아웃을 개략적으로 도시한 도면이다.
데이터 서버(300)가 파일의 청크들을 패리티 방식으로 유지하는 경우, 각 스트라입에는 복수의 주 청크(주 청크-0, 주 청크-1, 주 청크-2, 주 청크-3/ 주 청크-4, 주 청크 5)와 하나 이상의 패리티 청크(패리티 청크-0, 패리티 청크-1/ 패리티 청크-2, 패리티 청크-3)가 포함된다.
메타데이터 서버(200)에서 유지 관리하는 파일의 레이아웃은 도 3에 도시한 바와 같이 복제 방식과 동일하게 기본적으로 청크 크기(301), 전체 청크 개수(302), 스트라입 개수(303), 스트라입 폭(304), 패리티 폭(305)에 해당하는 정보, 그리고 복수의 스트라입의 정보(306, 307)를 포함한다.
패리티 방식의 경우에 청크는 주 청크와 패리티 청크를 포함한다. 주 청크에는 실제 파일 데이터가 저장되고, 패리티 청크는 스트라입에 속하는 주 청크의 데이터를 패리티 인코딩 방법에 의해 인코딩한 패리티 데이터가 저장된다. 즉, 스트라입에 속하는 주 청크의 데이터들을 가지고 패리티 데이터를 만듦으로써 데이터의 가용성을 제공할 수 있다. 패리티 데이터는 주 청크의 데이터들을 배타적 논리합(exclusive or, XOR)하거나 여러 가지 인코딩 방법으로 생성될 수 있다. 이 경우, 데이터 서버 고장 등의 장애 상황이 발생하였을 때 패리티 청크와 다른 주 청크들을 XOR 하거나 여러 가지 디코딩 방법으로 고장난 청크를 복구할 수 있다. 따라서 파일 수준에서 데이터를 분산 저장하는 분산 파일 시스템에서 복제본으로 인한 스토리지 공간의 낭비를 줄일 수 있으며, 또한 복제본을 두었을 때와 같은 가용성을 제공할 수 있다.
청크 크기(301)는 한 파일에 속하는 주 청크와 패리티 청크의 크기를 의미한다.
전체 청크 개수(302)는 한 파일에 속하는 주 청크와 패리티 청크를 모두 포함하는 개수이다.
스트라입 개수(303)는 한 파일에 속하는 스트라입 개수를 의미하며, 전체 청크 개수(302)와 스트라입 폭(304), 그리고 패리티 폭(305)에 의해 결정될 수 있다.
스트라입 폭(304)은 하나의 스트라입에 속하는 주 청크의 개수를 의미한다. 패리티 방식의 경우 스트라입 폭(304)은 일반적으로 2 이상이다.
패리티 폭(305)은 하나의 스트라입에 속하는 패리티 청크의 개수를 의미한다. 패리티 폭(305)에 따라 장애에 대처할 수 있는 정도가 다를 수 있다. 패리티 폭(305)이 1인 경우에는 복제 방식에서 패리티 폭을 1로 하였을 때, 즉 복제본을 하나 두었을 때와 동일하다. 따라서 스트라입에 속하는 하나의 주 청크를 저장하고 있는 데이터 서버(300)에 장애가 발생하였을 때 대처할 수 있지만 스트라입에 속하는 두 개의 주 청크를 저장하고 있는 두 데이터 서버(300)에 동시에 장애가 발생하였을 때는 대처하기 어렵다. 만약 패리티 폭(305)이 2인 경우에는 복제 방식에서 패리티 폭을 2로 하였을 때, 즉 복제본을 두 개 두었을 때와 동일하다. 따라서 스트라입에 속하는 2개의 주 청크를 저장하고 있는 두 데이터 서버(300)에 동시에 장애가 발생하였을 때도 대처가 가능하다.
각 스트라입의 정보(306, 307)는 스트라입에 속하는 청크의 개수와 주 청크(주 청크-0, 주 청크-1, 주 청크-2, 주 청크-3, 주 청크-4, 주 청크-5) 그리고 패리티 청크(패리티 청크-0, 패리티 청크-1, 패리티 청크-2, 패리티 청크-3)의 정보를 포함한다. 청크의 정보에는 청크를 저장하고 있는 데이터 서버와 디스크 정보 그리고 청크 식별자, 청크 버전, 상태 정보를 포함한다.
도 4는 본 발명의 실시 예에 따른 메타데이터 서버에서 관리하는 파일 레이아웃의 또 다른 일 예로서, 데이터 서버(300)가 파일의 청크들을 혼합 방식으로 유지할 때의 레이아웃을 개략적으로 도시한 도면이다. 여기서 혼합 방식은 복제 방식과 패리티 방식이 혼합된 방식을 의미한다.
데이터 서버(300)가 파일의 청크들을 혼합 방식으로 유지하는 경우, 복수의 스트라입 중 일부는 하나의 주 청크(주 청크-0/ 주 청크-1)와 하나 이상의 데이터 복제 청크(데이터 복제 청크-0/ 데이터복제 청그-1)를 포함하고, 나머지 일부는 복수의 주 청크(주 청크-2, 주 청크-3, 주 청크-4, 주 청크-5)와 하나 이상의 패리티 청크(패리티 청크-0, 패리티 청크-1)를 포함한다.
데이터 서버(300)가 파일의 청크들을 혼합 방식으로 유지하는 경우, 도 4에 도시한 바와 같이 메타데이터 서버(200)에서 유지 관리하는 파일의 레이아웃은 청크 크기(401), 전체 청크 개수(402), 스트라입 개수(403), 스트라입 폭(404), 패리티 폭(405)에 해당하는 정보, 그리고 복수의 스트라입에 해당하는 정보(406, 407, 408)를 포함한다.
혼합 방식에서 청크 크기(401), 전체 청크 개수(402), 스트라입 개수(403), 스트라입 폭(404), 패리티 폭(405)은 복제 방식이나 패리티 방식과 동일하다. 다만, 혼합 방식에서 스트라입 폭(404)과 패리티 폭(405)은 패리티 방식을 우선적으로 고려하여 유지된다.
각각의 스트라입의 정보(406, 407, 408)는 복제 방식이나 패리티 방식과 동일하게 스트라입에 속하는 청크의 개수와 청크의 정보를 포함한다. 단, 청크가 주 청크, 데이터 복제 청크 및 패리티 청크 중 적어도 하나일 수 있다. 이것은 청크의 정보에 의해 판단될 수 있다.
도 5는 본 발명의 실시 예에 따른 메타데이터 서버에서 파일의 청크들을 할당하는 방법에 대해 개략적으로 도시한 도면이다.
도 5를 참고하면, 파일의 청크는 주 청크와 그에 대한 데이터 복제 청크, 그리고 스트라입을 구성하는 주 청크들을 가지고 인코딩해서 생성한 패리티 청크의 세 가지 유형(type)이 있다. 청크는 청크 유형에 따라서 다르게 할당된다.
메타데이터 서버(200)는 먼저 할당할 청크의 유형을 검사한다(S510).
메타데이터 서버(200)는 할당할 청크의 유형이 주 청크이면, 할당할 청크가 복제 방식으로 저장되는지 아니면 패리티 방식으로 저장되는지를 확인한다(S520). 메타데이터 서버(200)는 할당할 청크가 복제 방식으로 저장되는 주 청크의 경우 파일을 구성하는 다른 주 청크들이 할당된 데이터 서버와 최대한 중첩되지 않는 데이터 서버에 해당 청크를 할당한다(S530).
반면, 메타데이터 서버(200)는 할당할 청크가 패리티 방식으로 저장되는 주 청크의 경우에는 동일 스트라입에 속하는 다른 주 청크들과 패리티 청크들이 저장된 데이터 서버들과 중첩되지 않는 데이터 서버에 해당 청크를 할당한다(S540).
메타데이터 서버(200)는 할당할 청크의 유형이 주 청크에 대한 데이터 복제 청크인 경우, 주 청크와 또 다른 복제 청크가 저장된 데이터 서버와 중첩되지 않는 데이터 서버에 해당 복제 청크를 할당한다(S550).
메타데이터 서버(200)는 할당할 청크의 유형이 패리티 청크인 경우, 동일 스트라입에 속하는 주 청크들과 패리티 청크들이 저장된 데이터 서버와 중첩되지 않는 데이터 서버에 할당한다(S560).
도 6은 본 발명의 실시 예에 따른 메타데이터 서버에서 파일의 청크들을 삭제하는 방법에 대해 개략적으로 도시한 도면이다.
도 6을 참고하면, 파일의 청크의 삭제 또한 삭제할 청크의 유형에 따라 다르다.
메타데이터 서버(200)는 먼저 삭제할 청크의 유형을 검사한다(S610).
메타데이터 서버(200)는 복제 방식으로 저장된 주 청크, 복제 청크 또는 패리티 청크의 경우 단순히 해당 청크를 삭제한다.
구체적으로, 메타데이터 서버(200)는 삭제할 청크의 유형이 주 청크에 대한 데이터 복제 청크인 경우에, 해당 데이터 복제 청크를 삭제하고(S650), 삭제할 청크의 유형이 패리티 청크인 경우, 해당 패리티 청크를 삭제한다(S660).
또한 메타데이터 서버(200)는 삭제할 청크의 유형이 주 청크이면, 삭제할 청크가 복제 방식으로 저장되어 있는지 아니면 패리티 방식으로 저장되어 있는지를 확인한다(S620).
메타데이터 서버(200)는 삭제할 청크가 복제 방식으로 저장되어 있는 주 청크의 경우, 해당 주 청크를 삭제한다(S630).
반면, 메타데이터 서버(200)는 삭제할 청크가 패리티 방식으로 저장되어 있는 주 청크인 경우, 동일 스트라입에 속하는 패리티 청크를 재생성하여 데이터 서버(300)로 할당하고, 주 청크를 삭제한다(S640). 그러면, 데이터 서버(300)는 동일 스트라입에 속하는 다른 데이터 청크의 데이터를 이용하여 패리티 데이터를 생성하여 재생성된 패리티 청크에 저장한다. 즉, 스트라입 방식으로 저장되어 있는 주 청크의 경우, 스트라입에 속하는 주 청크가 삭제됨으로써 패리티 청크가 재생성된다.
도 7은 본 발명의 실시 예에 따른 메타데이터 서버에서 데이터 서버에 할당된 청크들을 관리하는 방법을 나타낸 도면이다.
도 7을 참고하면, 데이터 서버(300)에 할당된 청크들은 복제 방식으로 유지되거나 패리티 방식으로 유지된다(S710).
메타데이터 서버(200)는 파일의 데이터에 대한 접근 빈도를 계산한다(S720).
메타데이터 서버(200)는 파일의 데이터에 대한 접근 빈도에 따라 복제 방식에서 패리티 방식으로 그리고 반대로 패리티 방식에서 복제 방식으로 변경한다. 구체적으로, 메타데이터 서버(200)는 파일의 데이터에 대한 접근 빈도가 설정 값 이상인 경우에(S730), 데이터 서버(300)가 청크들을 유지하는 방식을 복제 방식으로 결정하고(S740), 데이터에 대한 접근 빈도가 설정 값 미만으로 줄어들면 데이터 서버(300)가 청크들을 유지하는 방식을 패리티 방식으로 결정한다(S740).
그리고 메타데이터 서버(200)는 데이터 서버(300)가 결정된 방식과 다른 방식으로 청크들을 유지하고 있다면 결정된 방식으로 변경할 것을 데이터 서버(300)로 요청한다.
도 8은 본 발명의 실시 예에 따른 메타데이터 서버에서 복제 방식으로 저장된 파일을 패리티 방식으로 변환하는 방법의 일 예를 설명하는 흐름도이다. 다시 말해서, 도 8은 분산 파일 시스템에서 복제 방식의 스트라입을 패리티 방식의 스트라입으로 변환하는 처리 과정을 도시한 흐름도이다.
도 8을 참고하면, 메타데이터 서버(200)는 스트라입에 대한 패리티 청크를 생성하고, 패리티 청크를 데이터 서버에 할당 요청한다(S810). 할당할 패리티 청크의 개수는 패리티 폭에 의해 결정된다. 이때 할당된 패리티 청크는 일단 임시 청크 상태로 설정된다. 그리고 메타데이터 서버(200)는 스트라입 폭에 의해 스트라입에 포함될 주 청크에 패리티 인코딩 상태임을 나타내는 인코딩 비트를 설정한다(S820).
만약 메타데이터 서버(200)는 주 청크가 갱신 중이면(S830), 패리티 청크를 삭제하고 인코딩을 취소한다(S880). 여기서 주 청크에 인코딩 상태를 설정하는 것은 스트라입에 대한 패리티 인코딩을 진행하는 동안 주 청크에 대한 갱신이 발생하였을 때 패리티 인코딩을 취소하고 패리티 청크를 삭제한 후에 스트라입 변환을 다음 스트라입에 대해 수행하기 위함이다.
인코딩 상태 설정이 완료되면, 메타데이터 서버(200)는 패리티 청크가 할당된 데이터 서버(300)에 패리티 인코딩을 요청한다(S840). 그러면 데이터 서버(300)는 스트라입에 속하는 주 청크들을 읽어서 패리티 데이터를 생성한 후 패리티 데이터를 패리티 청크에 저장한다. 그리고 나서, 데이터 서버(300)는 패리티 인코딩 결과를 메타데이터 서버(200)로 전달한다.
만약 메타데이터 서버(200)는 패리티 인코딩이 실패하면(S850), 패리티 청크를 삭제하고 인코딩을 취소한다(S880).
한편, 메타데이터 서버(200)는 패리티 인코딩이 성공하면, 복제 방식의 주 청크를 패리티 방식의 주 청크로, 임시 청크 상태인 패리티 청크를 실제 패리티 청크로 파일의 레이아웃을 변경한다(S860).
메타데이터 서버(200)는 파일의 레이아웃이 변경되면 주 청크의 데이터 복제 청크들을 데이터 서버(300)로 삭제 요청한다(S870).
데이터 서버(300)에서 데이터 복제 청크에 대한 삭제는 지연되어 이루어진다. 즉, 데이터 서버(300)에서는 즉시 데이터 복제 청크를 삭제하는 것이 아니라 삭제할 데이터 복제 청크를 표시해 두었다가 주기적 또는 시스템의 부하가 적을 때를 이용하여 복제본 청크를 삭제함으로써 시스템의 부하에 영향을 주지 않도록 한다. 이러한 변환 처리 과정은 각각의 스트라입에 대해 반복적으로 이루어진다. 이때 적어도 하나의 스트라입이 변환되었으면 파일의 레이아웃의 기본 정보인 스트라입 폭과 패리티 폭을 변경한다. 따라서 메타데이터 서버(200)는 파일을 완전하게 변환하거나 또는 일부만 변환할 수도 있다. 만약 일부만 변환된 경우에는 일부에 대해서만 재변환 과정이 수행될 수 있다. 이러한 변환 처리는 파일의 접근 빈도에 따라 관리자에 의해 정책적으로 결정될 수 있다.
도 9는 본 발명의 실시 예에 따른 메타데이터 서버에서 패리티 방식으로 저장된 파일을 복제 방식으로 변환하는 방법의 일 예를 설명하는 흐름도이다. 다시 말해서, 도 9는 분산 파일 시스템에서 패리티 방식의 스트라입을 복제 방식의 스트라입으로 변환하는 처리 과정을 도시한 흐름도이다.
도 9를 참고하면, 메타데이터 서버(200)는 패리티 방식으로 유지하고 있는 파일의 청크들을 복제 방식으로 변환하기 위해서 먼저 스트라입의 주 청크들에 대한 데이터 복제 청크를 데이터 서버(300)에 할당 요청한다(S910). 이때 데이터 복제 청크는 임시 청크 상태로 설정된다.
다음, 메타데이터 서버(200)는 각각의 주 청크를 저장하고 있는 데이터 서버(300)에 데이터 복제 청크를 할당 요청한다(S920). 그러면 데이터 서버(300)는 스트라입에 속하는 주 청크들을 읽어서 데이터 복제 청크로 복제한다. 데이터 서버(300)는 복제 결과를 메타데이터 서버(200)로 전달한다.
주 청크를 복제하는 동안 주 청크를 저장하고 있는 데이터 서버(300)에 고장이 발생하면, 메타데이터 서버(200)는 스트라입의 패리티 청크와 다른 주 청크를 이용하여 복구하는 절차를 수행한다.
만약 주 청크를 복제하는 동안 주 청크에 대한 갱신이 발생하면, 메타데이터 서버(200)는 도 10에서 설명하는 절차를 수행할 수 있다.
메타데이터 서버(200)는 주 청크의 복제가 실패되면(S930), 데이터 복제 청크를 삭제하고 복제를 취소한다(S960).
반면, 메타데이터 서버(200)는 주 청크의 복제가 성공되면(S930), 데이터 복제 청크를 스트라입으로 구성하고, 패리티 방식의 주 청크를 복제 방식의 주 청크로 그리고 임시 청크 상태인 데이터 복제 청크를 실제 데이터 복제 청크로 파일 레이아웃을 변경한다(S940).
메타데이터 서버(200)는 스트라입의 패리티 청크들을 데이터 서버(300)로 삭제 요청한다(S950). 데이터 서버(300)에서 패리티 청크에 대한 삭제는 지연되어 이루어질 수 있다.
모든 스트라입에 대한 복제가 완료되면 파일의 레이아웃의 기본 정보인 스트라입 폭과 패리티 폭을 변경한다. 이러한 스트라입 변환 처리 과정은 모든 스트라입에 대해 반복적으로 수행된다. 모든 스트라입이 변환되지 않은 경우에는 스트라입 폭과 패리티 폭을 변경하지는 않는다. 스트라입 변환 중에 메타데이터 서버(200)에 고장이 발생한 경우에는 청크가 할당되었지만 복제가 완료되지 못한 임시 청크들이 존재할 수 있다. 이러한 청크들은 쓰레기 청크로 분류되어 시스템 복구 시에 삭제된다.
이러한 스트라입 변환은 파일의 접근 빈도에 따라 특정 청크에 대해서만 수행되록 지정될 수 있다.
한편, 메타데이터 서버(200)는 패리티 방식으로 저장된 파일이 갱신되는 경우에, 주 청크와 패리티 청크를 동시에 갱신해 주어야 한다. 그렇지 않고 주 청크와 패리티 청크 중 어느 한 청크에만 갱신된 데이터가 반영되었을 때는 해당 스트라입을 구성하는 다른 주 청크 또는 다른 패리티 청크가 유실되었을 때 장애가 발생한 청크를 복구하지 못할 수 있다. 한편 파일이 갱신된다는 것은 다시 접근 빈도가 증가한다는 가능성을 포함한다. 따라서 데이터의 접근 효율성을 증가시키면서 갱신에 대한 비용을 줄이고 장애에 대한 가용성을 유지하기 위하여 메타데이터 서버(200)는 데이터 서버(300)의 파일 유지 방식을 다시 복제 방식으로 변경한다.
도 10은 본 발명의 실시 예에 따른 메타데이터 서버에서 패리티 방식으로 저장된 파일을 복제 방식으로 변환하는 방법의 다른 일 예를 설명하는 흐름도이다. 다시 말해서, 도 10은 분산 파일 시스템에서 패리티 방식으로 저장된 파일이 갱신되었을 때 복제 방식으로 변환하는 처리 과정을 도시한 흐름도이다.
도 10을 참고하면, 패리티 방식으로 유지되는 파일의 데이터를 갱신하게 되면, 클라이언트 단말(100)로부터 스트라입에 속하는 주 청크에 대한 쓰기 요청이 이루어진다.
클라이언트 단말(100)로부터 스트라입에 속하는 주 청크에 대한 쓰기 요청이 이루어지면(S1010), 메타데이터 서버(200)는 쓰기 요청이 새로운 데이터를 추가하는 것인지, 아니면 데이터를 추가하는 것이 아니라 기존 데이터를 갱신하는 것인지를 판단하다(S1020).
새로운 데이터를 추가하는 경우, 메타데이터 서버(200)는 데이터 서버(300)로 새로운 주 청크를 할당 요청한다(S1080). 그러면, 데이터 서버(300)는 주 청크에 새로운 데이터를 추가한다.
다음, 메타데이터 서버(200)는 데이터 서버(300)에 패리티 인코딩을 요청한다(S1090). 데이터 서버(300)는 추가된 주 청크를 이용하여 패리티 데이터를 수행하여 패리티 청크를 갱신한다.
만약 기존 데이터를 갱신하고자 하는 경우, 메타데이터 서버(200)는 갱신되는 주 청크를 저장하고 있는 데이터 서버(300)에 데이터 복제 청크의 할당을 요청하고, 파일의 레이아웃에 반영한다(S1030).
메타데이터 서버(200)는 데이터 복제 청크가 할당되면, 데이터 서버(300)에 복제를 요청한다(S1040). 데이터 서버(300)는 주 청크의 갱신된 데이터를 데이터 복제 청크에 복제한다.
또한 메타데이터 서버(200)는 데이터 서버(300)에 패리티 인코딩을 요청한다(S1050).
데이터 서버(300)는 주 청크의 갱신된 데이터만을 이용하여 패리티 인코딩을 수행하여 패리티 청크를 갱신하고, 주 청크의 갱신된 데이터를 제외한 부분의 데이터를 복제한다(S1060). 이렇게 하면 패리티 방식으로 변환하는 과정에서 장애가 발생하였을 때 기존의 패리티 방식을 계속 유지할 수 있다. 이러한 처리 과정은 스트라입에 속하는 주 청크들에 대해 반복적으로 수행한다.
데이터 서버(300)는 갱신되는 주 청크의 데이터를 데이터 복제 청크에 복제한다(S1070). 스트라입에 속하는 모든 주 청크에 대해 복제가 완료되면, 파일 레이아웃을 변경한다.
도 11은 본 발명의 실시 예에 따른 클라이언트 단말에서 데이터 서버에 장애가 발생한 경우의 처리 과정을 도시한 흐름도이다. 도 11에서는 패리티 방식으로 유지되는 파일의 주 청크를 읽고자 할 때 주 청크를 저장하고 있는 데이터 서버에 장애가 발생한 것으로 가정하였다.
도 11을 참고하면, 클라이언트 단말(100)은 데이터 서버(300)가 파일의 청크들을 패리티 방식으로 유지하고 있을 때 클라이언트 단말(100)이 데이터를 읽기 위해서, 먼저 메타데이터 서버(200)로부터 읽을 위치의 스트라입 정보를 수신한다(S1110).
클라이언트 단말(100)은 읽을 청크를 결정하고 청크가 저장된 데이터 서버(300)에 데이터 읽기를 요청한다(S1120). 이때 클라이언트 단말(100)이 데이터 서버(300)에 접근할 수 있으면(S1130), 데이터 서버(300)로부터 해당 데이터를 수신한다(S1160).
한편, 데이터 서버(300)에 장애가 발생하여 클라이언트 단말(100)이 데이터 서버(300)에 접근할 수 없으면(S1130), 클라이언트 단말(100)은 스트라입의 패리티 청크를 저장하고 있는 데이터 서버(300)에 데이터 읽기 요청을 한다(S1140). 그러면 패리티 청크를 저장하고 있는 데이터 서버(300)는 장애가 발생한 주 청크를 제외한 다른 주 청크를 읽어서 데이터를 복구한다.
클라이언트 단말(100)은 데이터 서버(300)로부터 복구된 데이터를 수신한다(S1160).
도 12는 본 발명의 실시 예에 따른 데이터 서버에서 데이터를 복구하는 방법을 도시한 흐름도이다.
도 12를 참고하면, 데이터 서버(300)에 장애가 발생하였을 때 장애가 발생한 데이터 서버(300)에 청크가 저장된 파일에 대해 복구 처리가 수행된다.
복구 과정에 대해 설명하면, 먼저 메타데이터 서버(200)는 장애가 발생한 데이터 서버(300)에 청크가 저장된 파일의 스트라입 정보를 읽어온다(S1200). 이때 메타데이터 서버(200)는 스트라입 폭이 1보다 큰지를 판단한다(S1210). 즉, 메타데이터 서버(200)는 해당 스트라입의 청크들이 복제 방식으로 저장되어 있는지 패리티 방식으로 저장되어 있는지 판단한다.
메타데이터 서버(200)는 스트라입 폭이 1보다 크지 않으면, 복제 방식을 나타내므로, 데이터 복제 청크를 데이터 서버(300)에 할당하고(S1270), 복제를 요청한다(S1280). 그러면 데이터 서버(300)는 장애가 발생한 주 청크에 대한 다른 데이터 복제 청크의 복제본을 이용하여 할당된 데이터 복제 청크에 복제를 수행한다.
메타데이터 서버(200)는 복제가 완료되면 파일 레이아웃을 변경한다(S1290).
메타데이터 서버(200)는 스트라입 폭이 1보다 크면, 패리티 방식을 나타내므로, 장애가 발생한 청크가 패리티 청크인지를 판단한다(S1220).
메타데이터 서버(200)는 패리티 청크에 장애가 발생한 경우, 패리티 청크를 데이터 서버(300)에 할당하고(S1230), 패리티 인코딩을 요청한다(S1240). 그러면 데이터 서버(300)는 스트라입의 주 청크들을 읽어서 패리티 인코딩하여 패리티 데이터를 생성하고, 패리티 데이터를 할당된 패리티 청크에 저장한다.
한편, 메타데이터 서버(200)는 패리티 청크가 아닌 주 청크에 장애가 발생한 경우, 데이터 서버(300)에 주 청크를 할당하고(S1250), 주 청크의 복구를 요청한다(S1260). 그러면 데이터 서버(300)는 스트라입의 다른 주 청크들과 패리티 청크를 읽어서 할당된 주 청크를 복구한다.
메타데이터 서버(200)는 장애가 발생한 청크에 대한 복구가 완료되면 파일 레이아웃을 변경한다(S1290).
이러한 복구는 자동 또는 수동으로 이루어질 수 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시 예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시 예의 기재로부터 본 발명이 속하는 기술 분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다.

Claims (20)

  1. 분산 파일 시스템의 메타데이터 서버에서 파일의 데이터를 분산 저장하는 방법으로서,
    상기 파일의 접근 빈도를 계산하는 단계, 그리고
    상기 파일의 데이터를 청크 단위로 나누어 스트라입으로 저장하고 있는 데이터 서버에서의 청크들의 유지 방식을 상기 파일의 접근 빈도에 따라서 변경하는 단계
    를 포함하는 데이터 분산 저장 방법.
  2. 제1항에서,
    상기 변경하는 단계는
    상기 파일의 접근 빈도가 설정 값 이상인 경우에, 상기 유지 방식을 복제 방식으로 결정하는 단계, 그리고
    상기 파일의 접근 빈도가 상기 설정 값 미만인 경우에, 상기 유지 방식을 패리티(parity) 방식으로 결정하는 단계를 포함하는 데이터 분산 저장 방법.
  3. 제2항에서,
    상기 복제 방식으로 결정하는 단계는
    상기 파일의 주 청크에 대한 데이터 복제 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하는 단계, 그리고
    상기 데이터 복제 청크의 복제를 상기 제1 데이터 서버로 요청하는 단계를 포함하는 데이터 분산 저장 방법.
  4. 제3항에서,
    상기 복제 방식으로 결정하는 단계는 상기 복제가 완료되면 상기 파일의 레이아웃을 변경하는 단계를 더 포함하는 데이터 분산 저장 방법.
  5. 제3항에서,
    상기 복제 방식으로 결정하는 단계는 상기 제1 데이터 서버가 패리티 방식의 주 청크와 패리티 청크를 갖는 스트라입에서 복제 방식의 주 청크와 데이터 복제 청크를 갖는 스트라입으로 변환하는 단계를 더 포함하는 데이터 분산 저장 방법.
  6. 제3항에서,
    상기 할당하는 단계는 상기 복수의 데이터 서버 중 주 청크에 대한 다른 데이터 복제 청크가 저장된 데이터 서버와 다른 데이터 서버를 상기 제1 데이터 서버로 선택하는 단계를 포함하는 데이터 분산 저장 방법.
  7. 제2항에서,
    상기 패리티 방식으로 결정하는 단계는
    스트라입에 대한 패리티 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하는 단계, 그리고
    상기 제1 데이터 서버로 상기 스트라입에 대한 패리티 인코딩을 요청하는 단계
    를 포함하는 데이터 분산 저장 방법.
  8. 제7항에서,
    상기 패리티 방식으로 결정하는 단계는 상기 패리티 인코딩이 성공적으로 완료되면 상기 파일의 레이아웃을 변경하는 단계를 더 포함하는 데이터 분산 저장 방법.
  9. 제7항에서,
    상기 패리티 방식으로 결정하는 단계는 상기 제1 데이터 서버에 의해 주 청크와 데이터 복제 청크를 갖는 스트라입을 주 청크와 패리티 청크를 갖는 스트라입으로 변환하는 단계를 더 포함하는 데이터 분산 저장 방법.
  10. 제7항에서,
    상기 할당하는 단계는 상기 복수의 데이터 서버 중 동일 스트라입에 속하는 주 청크와 패리티 청크가 저장된 데이터 서버와 다른 데이터 서버를 상기 제1 데이터 서버로 선택하는 단계를 포함하는 데이터 분산 저장 방법.
  11. 제2항에서,
    상기 청크의 유형에 따라서 상기 데이터 서버에 상기 청크를 할당하는 단계를 더 포함하는 데이터 분산 저장 방법.
  12. 제11항에서,
    상기 할당하는 단계는
    상기 청크의 유형이 복제 방식으로 저장되는 주 청크인 경우에 복수의 데이터 서버 중 상기 파일을 구성하는 다른 주 청크들이 할당된 데이터 서버와 다른 데이터 서버에 상기 청크를 할당하는 단계, 그리고
    상기 청크의 유형이 상기 패리티 방식으로 저장되는 주 청크인 경우에 상기 복수의 데이터 서버 중 동일한 스트라입에 속하는 다른 주 청크와 패리티 청크가 저장된 데이터 서버와 다른 데이터 서버에 상기 청크를 할당하는 단계를 포함하는 데이터 분산 저장 방법.
  13. 제2항에서,
    상기 청크의 유형에 따라서 상기 데이터 서버에 저장된 청크를 삭제하는 단계를 더 포함하는 데이터 분산 저장 방법.
  14. 제13항에서,
    상기 삭제하는 단계는
    삭제할 청크가 복제 방식으로 저장된 주 청크, 데이터 복제 청크 및 패리티 청크인 경우, 해당 청크를 삭제하는 단계, 그리고
    삭제할 청크가 패리티 방식으로 저장된 주 청크의 경우 패리티 청크를 생성하여 동일 스트라입에 할당하고 해당 청크를 삭제하는 단계
    를 포함하는 데이터 분산 저장 방법.
  15. 제2항에서,
    상기 변경하는 단계는 상기 패리티 방식으로 저장되어 있는 파일의 데이터가 갱신되는 경우에, 상기 유지 방식을 복제 방식으로 결정하는 단계를 더 포함하는 데이터 분산 저장 방법.
  16. 제2항에서,
    장애가 발생한 데이터 서버의 청크를 복수의 데이터 서버 중 제1 데이터 서버에 할당하고 복구를 요청하는 단계
    를 더 포함하는 데이터 분산 저장 방법.
  17. 분산 파일 시스템의 데이터 서버에서 파일의 데이터를 분산 저장하는 방법으로서,
    상기 파일의 데이터를 청크 단위로 나누어 스트라입으로 저장하는 단계,
    상기 파일의 청크들을 유지하는 방식을 변경할 것을 메타데이터 서버로부터 수신하는 단계, 그리고
    상기 파일의 청크들을 유지하는 방식을 변경하는 단계
    를 포함하며,
    상기 메타데이터 서버에 의해 상기 파일의 접근 빈도에 따라서 상기 파일의 청크들을 유지하는 방식의 변경 여부가 결정되는 데이터 분산 저장 방법.
  18. 제17항에서,
    상기 변경하는 단계는
    상기 파일의 접근 빈도가 설정 값 이상인 경우에, 상기 방식을 복제 방식으로 변경하는 단계, 그리고
    상기 파일의 접근 빈도가 상기 설정 값 미만인 경우에, 상기 방식을 패리티(parity) 방식으로 변경하는 단계를 포함하는 데이터 분산 저장 방법.
  19. 제18항에서,
    상기 변경하는 단계는 상기 패리티 방식으로 저장되어 있는 파일의 데이터가 갱신되는 경우에, 상기 방식을 복제 방식으로 변경하는 단계를 더 포함하는 데이터 분산 저장 방법.
  20. 제17항에서,
    복제 방식의 주 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 데이터 복제 청크에 장애가 발생한 주 청크에 대한 다른 데이터 복제 청크의 복제본을 복제하는 단계,
    패리티 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 패리티 청크를 해당 스트라입의 주 청크들을 읽어서 복구하는 단계, 그리고
    패리티 방식의 주 청크에 장애가 발생한 경우, 상기 메타데이터 서버로부터 할당 받은 주 청크를 해당 스트라입의 다른 주 청크들과 패리티 청크를 읽어서 복구하는 단계
    를 더 포함하는 데이터 분산 저장 방법.
KR1020130042501A 2013-04-17 2013-04-17 파일 수준의 데이터 분산 저장 방법 KR20140124674A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130042501A KR20140124674A (ko) 2013-04-17 2013-04-17 파일 수준의 데이터 분산 저장 방법
US13/950,800 US20140317056A1 (en) 2013-04-17 2013-07-25 Method of distributing and storing file-based data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130042501A KR20140124674A (ko) 2013-04-17 2013-04-17 파일 수준의 데이터 분산 저장 방법

Publications (1)

Publication Number Publication Date
KR20140124674A true KR20140124674A (ko) 2014-10-27

Family

ID=51729802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130042501A KR20140124674A (ko) 2013-04-17 2013-04-17 파일 수준의 데이터 분산 저장 방법

Country Status (2)

Country Link
US (1) US20140317056A1 (ko)
KR (1) KR20140124674A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170127881A (ko) * 2016-05-13 2017-11-22 한국전자통신연구원 고속 분산 저장 장치 및 방법
CN111124301A (zh) * 2019-12-18 2020-05-08 深圳供电局有限公司 一种对象存储设备的数据一致性存储方法及系统

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201508484A (zh) * 2013-08-22 2015-03-01 Acer Inc 資料寫入方法、硬碟模組以及資料寫入系統
US9672264B2 (en) * 2015-01-26 2017-06-06 Netapp, Inc. Method and system for backup verification
US20180004430A1 (en) * 2015-01-30 2018-01-04 Hewlett Packard Enterprise Development Lp Chunk Monitoring
CN106161523B (zh) * 2015-04-02 2019-11-22 腾讯科技(深圳)有限公司 一种数据处理方法和设备
US10084860B2 (en) 2015-04-09 2018-09-25 Electronics And Telecommunications Research Institute Distributed file system using torus network and method for configuring and operating distributed file system using torus network
KR20160145250A (ko) 2015-06-09 2016-12-20 한국전자통신연구원 가상 머지를 지원하는 셔플 내장형 분산 스토리지 시스템 및 그 방법
US11175995B2 (en) * 2015-06-29 2021-11-16 Vmware, Inc. Data protection for a document database system
KR102178740B1 (ko) * 2017-11-22 2020-11-13 한국전자통신연구원 토러스 네트워크 기반의 분산 파일 시스템을 위한 서버 및 이를 이용한 방법
CN111767010B (zh) * 2020-06-30 2023-03-14 杭州海康威视系统技术有限公司 数据处理方法、装置、设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69533764T2 (de) * 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US7308599B2 (en) * 2003-06-09 2007-12-11 Hewlett-Packard Development Company, L.P. Method and apparatus for data reconstruction after failure of a storage device in a storage array
US7234074B2 (en) * 2003-12-17 2007-06-19 International Business Machines Corporation Multiple disk data storage system for reducing power consumption
JP5180865B2 (ja) * 2009-02-10 2013-04-10 株式会社日立製作所 ファイルサーバ、ファイル管理システムおよびファイル管理方法
KR101374655B1 (ko) * 2010-09-29 2014-03-24 네이버비즈니스플랫폼 주식회사 파일 볼륨을 청크 단위로 분산 처리하는 시스템 및 방법
US9311501B2 (en) * 2012-03-26 2016-04-12 International Business Machines Corporation Using different secure erase algorithms to erase chunks from a file associated with different security levels
WO2013171789A1 (en) * 2012-05-16 2013-11-21 Hitachi, Ltd. Storage system and method of controlling data transfer in storage system
US8959390B2 (en) * 2012-11-12 2015-02-17 Facebook, Inc. Directory-level RAID

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170127881A (ko) * 2016-05-13 2017-11-22 한국전자통신연구원 고속 분산 저장 장치 및 방법
CN111124301A (zh) * 2019-12-18 2020-05-08 深圳供电局有限公司 一种对象存储设备的数据一致性存储方法及系统
CN111124301B (zh) * 2019-12-18 2024-02-23 深圳供电局有限公司 一种对象存储设备的数据一致性存储方法及系统

Also Published As

Publication number Publication date
US20140317056A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
KR20140124674A (ko) 파일 수준의 데이터 분산 저장 방법
US11003533B2 (en) Data processing method, system, and apparatus
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
WO2017119091A1 (ja) 分散型ストレージシステム、データ格納方法、およびソフトウェアプログラム
US20140025638A1 (en) Method, system and serving node for data backup and restoration
WO2012140957A1 (ja) 情報記憶システム及びそのデータ複製方法
WO2020081491A1 (en) Erasure coding content driven distribution of data blocks
CN103944981A (zh) 一种基于纠删码技术改进的云存储系统及实现方法
CN109582213B (zh) 数据重构方法及装置、数据存储系统
US11775193B2 (en) System and method for indirect data classification in a storage system operations
KR101441059B1 (ko) 분산 파일 시스템에서 효율적인 자료 저장 방법
JP6671708B2 (ja) バックアップリストアシステム及びバックアップリストア方法
EP3803601B1 (en) Meta-copysets for fault-tolerant data storage
US20230205630A1 (en) Rebuilding Missing Data in a Storage Network via Locally Decodable Redundancy Data
CN111752892A (zh) 分布式文件系统及其实现方法、管理系统、设备及介质
JP6337982B1 (ja) ストレージシステム
CN114518973A (zh) 分布式集群节点宕机重启恢复方法
KR20130026738A (ko) 파일 데이터 분산 저장 장치 및 방법
KR20190085743A (ko) 계층적 소거 코딩을 이용한 분산 파일시스템의 장애 복구 방법 및 이를 위한 장치
CN114415980B (zh) 多云集群数据管理系统、方法及装置
US11977519B1 (en) Multistream metadata verification for a deduplication system
KR102599116B1 (ko) 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치
US20220027080A1 (en) Method and system for a sequence aware data ingest and a sequence aware replication between data clusters
US11442921B1 (en) Data access in a dispersed storage network with consistency
US20210034472A1 (en) Method and system for any-point-in-time recovery within a continuous data protection software-defined storage

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid