KR101694288B1 - 비대칭형 클러스터 파일 시스템의 데이터 관리 방법 - Google Patents

비대칭형 클러스터 파일 시스템의 데이터 관리 방법 Download PDF

Info

Publication number
KR101694288B1
KR101694288B1 KR1020120061572A KR20120061572A KR101694288B1 KR 101694288 B1 KR101694288 B1 KR 101694288B1 KR 1020120061572 A KR1020120061572 A KR 1020120061572A KR 20120061572 A KR20120061572 A KR 20120061572A KR 101694288 B1 KR101694288 B1 KR 101694288B1
Authority
KR
South Korea
Prior art keywords
data server
file
server
data
metadata
Prior art date
Application number
KR1020120061572A
Other languages
English (en)
Other versions
KR20130137897A (ko
Inventor
김수영
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020120061572A priority Critical patent/KR101694288B1/ko
Priority to US13/684,903 priority patent/US9031906B2/en
Publication of KR20130137897A publication Critical patent/KR20130137897A/ko
Application granted granted Critical
Publication of KR101694288B1 publication Critical patent/KR101694288B1/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/13File access structures, e.g. distributed indices
    • 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/14Error detection or correction of the data by redundancy in operation
    • 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/1858Parallel file systems, i.e. file systems supporting multiple processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

비대칭형 클러스터 파일 시스템에서 메타데이터 서버가 데이터 서버를 효과적으로 제어하고, 이를 통해 데이터 서버의 고장 대비, 데이터 복제 후, 데이터 서버의 추가 등의 상황에서 디바이스와 파일 레이아웃을 구성 또는 재구성하도록 한 비대칭형 클러스터 파일 시스템의 데이터 관리 방법이 제시된다. 제시된 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은 데이터 서버들에 존재하지 않은 파일에 대한 파일 오픈 요청을 수신하면, 파일 핸들값 및 파일 이름을 할당하여 데이터 서버에 파일을 생성하고, 기설정된 복제 수준을 근거로 데이터 서버에 저장된 파일 또는 생성되는 파일을 다른 데이터 서버에 복제하고, 데이터 서버들에 저장된 파일들에 대한 파일 작업을 수행한다.

Description

비대칭형 클러스터 파일 시스템의 데이터 관리 방법{METHOD FOR MANAGING DATA IN ASYMMETRIC CLUSTER FILE SYSTEM}
본 발명은 비대칭형 클러스터 파일 시스템의 데이터 관리 방법에 관한 것으로, 더욱 상세하게는 데이터 분산 패턴이 고정된 비대칭형 클러스터 파일 시스템에서 데이터 서버의 고장 대비, 데이터 복제 후, 데이터 서버의 추가 등의 상황에서 디바이스와 파일 레이아웃을 구성 및 재구성하여 데이터 서버의 고장에 대한 해결책을 제시하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법에 대한 것이다.
비대칭 클러스터 파일 시스템은 파일의 실제 데이터와 파일의 속성 정보인 메타데이터를 분리하여 관리하는 시스템이다. 이때, 파일의 실제 데이터는 복수의 데이터 서버에 나뉘어 저장되고 파일의 메타데이터는 메타데이터 서버에서 관리된다. 이를 위해, 도 1에 도시되 바와 같이, 비대칭 클러스터 파일 시스템은 메타데이터 서버(10)와 복수의 데이터 서버(20)는 네트워크(30)를 통해 연결되어 분산된 구조로 구성된다.
클라이언트는 실제 데이터에 접근하기 위해서 먼저 메타데이터 서버(10)에 있는 실제 데이터 파일의 메타데이터에 접근한다. 클라이언트(40)는 메타데이터를 통해 실제 데이터가 저장된 복수의 데이터 서버(20)에 대한 정보를 수집한다. 클라이언트(40)는 수집한 정보를 이용하여 실제 데이터가 저장된 복수의 데이터 서버(20)에 접근하여 실제 데이터에 대한 입출력 작업을 수행한다.
한편, 비대칭 클러스터 파일 시스템의 데이터 서버(20)나 네트워크(30) 등의 장애가 발생한 경우 클라이언트(40)는 원하는 실제 데이터에 대한 입출력을 수행할 수가 없다. 이를 해결하기 위해, 데이터 서버(20)에 저장된 실제 데이터에 대한 복제본을 다른 데이터 서버(20)들에 저장한다. 이때, 데이터 저장 비용 등을 고려하여 두 개나 세 개 정도의 복제본을 서로 다른 데이터 서버(20)들에 분산하여 저장 관리하는 것이 일반적이다. 이를 통해, 비대칭 클러스터 파일 시스템은 복제본을 여러 데이터 서버(20)에 유지함으로써 클라이언트(40)로부터의 접근 부하를 분산시킬 수 있는 장점도 있다. 일례로, 한국공개특허 10-2011-0070659(명칭: 비대칭 클러스터 분산 파일 시스템에서 데이터 복제 및 복구 방법)에서는 데이터 서버에 주 파티션과 부 파티션을 분리하여 주 청크와 부 청크를 나누어 관리하여 청크 복제 및 복구 등을 효율적으로 처리하는 비대칭 클러스터 분산 파일 시스템에서의 데이터 복제 및 복구 방법을 개시하고 있습니다.
하지만, 비대칭 클러스터 파일 시스템은 데이터 서버(20)에 고장이 발생하였음을 감지하였을 때 고장난 데이터 서버(20)에 저장된 데이터 청크에 대한 복제본을 정해진 수만큼 유지할 수 있어야 한다. 그렇지 않으면 연속적인 데이터 서버(20) 고장이 발생하였을 때 해당 데이터에 접근하지 못할 수도 있기 때문에 고장난 데이터 서버(20)에 저장되었던 데이터를 추적해 가면서 또 다른 데이터 서버(20)에 복제해 두어야 한다.
여기서, 비대칭 클러스터 파일 시스템에서는 파일을 논리적으로 일정한 크기로 구분하며, 각 단위를 논리적 청크(chunk)라고 한다. 즉, 파일은 순서를 가진 논리적 청크(logical chunk)의 집합이다. 그리고 파일의 실제 데이터는 청크 단위로 구분되어 복수의 데이터 서버(20)에 분산하여 저장되는데, 이를 데이터 청크(data chunk)라고 한다.
비대칭 클러스터 파일 시스템에서의 메타데이터 서버(10)는 파일에 대해 임의의 데이터 분산 패턴을 지원한다. 즉, 파일의 각 논리적 청크 별로 데이터 청크가 저장된 데이터 서버(20)의 주소를 각각 저장하여 관리한다. 따라서, 클라이언트(40)는 각 논리적 청크가 저장된 데이터 서버(20)에 접근하여 입출력 작업을 수행한다.
그러나 일부 비대칭 클러스터 파일 시스템의 메타데이터 서버(10)는 파일에 대해 데이터 분산 패턴을 일정하게 고정한 방식만을 지원한다. 즉, 파일의 각 논리적 청크 별 데이터 청크가 저장된 데이터 서버(20)의 주소를 각각 관리하지 않고, 단지 데이터 청크가 저장된 데이터 서버(20)의 주소 목록과 순서, 첫번째 데이터 청크가 저장된 데이터 서버(20) 인덱스만을 저장하여 관리한다. 따라서, 클라이언트(40)는 첫번째 데이터 청크가 저장된 데이터 서버(20)부터 시작하여 데이터 청크가 저장된 데이터 서버(20) 목록의 순서에 따라 순차적으로 접근하여 입출력 작업을 수행한다.
파일을 논리적인 일정 크기로 구분한 논리적 청크를 지원하는 대칭 클러스터 파일 시스템의 경우 데이터 서버(20)를 보다 효율적으로 관리할 수 있지만, 파일의 크기가 크거나 청크의 크기가 작은 경우 파일의 메타데이터 크기가 커지므로 메타데이터 서버(10)가 관리할 내용이 커지고 클라이언트(40)와 교환할 내용이 커져 전체 시스템에 부하를 줄 수 있는 문제점이 있다.
반면, 데이터 분산 패턴을 지원하는 비대칭 클러스터 파일 시스템의 경우 파일의 크기가 크거나 청크의 크기가 작은 경우에도 전체 시스템의 부하를 최소화할 수 있지만, 데이터 서버(20)를 효율적으로 관리하기 어려운 문제점이 있다.
파일에 대한 데이터 분산 패턴을 일정하게 고정한 방식만을 지원하는 비대칭 클러스터 파일 시스템의 가장 대표적인 예는 대중적으로 가장 널리 사용되고 있는 네트워크 파일 시스템(NFS, Network File System)의 버전 4.1 프로토콜 표준에 기반한 파일 시스템이다. 네트워크 파일 시스템의 버전 4.1 프로토콜 표준은 세계적으로 인터넷과 관련된 수많은 표준을 제정하고 관리하는 IETF(Internet Engineering Task Force)에 의해 2010년 1월 RFC(Request for Comments) 5661로 공식 제정되었다.
네트워크 파일 시스템의 버전 4.1 프로토콜 표준에는 프로토콜에 기반한 비대칭 클러스터 파일 시스템을 구성하는 경우 클라이언트(40)와 메타데이터 서버(10)간 주고 받는 pNFS(Parallel NFS) 프로토콜과, 클라이언트(40)와 데이터 서버(20)간 주고 받는 대표적인 파일 레이아웃 방식(File Layout Type)의 저장소 프로토콜을 포함하고 있다.
파일 레이아웃 방식은 데이터 서버(20)를 NFS 기반 서버를 활용하기 때문에 일반적인 사용자들에게 가장 친숙한 파일 기반의 환경을 제공할 수 있으므로 데이터 서버(20)의 구축 및 제어, 그리고 관리가 용이한 장점이 있다.
하지만, 네트워크 파일 시스템의 버전 4.1 프로토콜 표준에는 메타데이터 서버(10)와 데이터 서버(20)간, 데이터 서버(20)와 데이터 서버(20)간 주고 받는 제어 프로토콜은 표준의 범위 밖이라고 규정하여 따로 제시하고 있지 않다. 네트워크 파일 시스템의 버전 4.1 프로토콜에 기반한 비대칭 클러스터 파일 시스템을 구성하는 경우 이를 위한 제어 프로토콜이 필요하다.
도 2 및 도 3을 참조하여 레이아웃 방식을 적용한 파일 시스템 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서 클라이언트의 파일에 대한 연산 작업 방법을 설명하며 아래와 같다.
클라이언트(40)가 논리적으로 D_1(51)부터 D_n+2(56)로 구성된 파일 A(50)에 대해 쓰기 연산이나 읽기 연산을 수행하는 것으로 가정한다.
클라이언트(40)는 파일 A(50)을 읽거나 쓰기 위해 메타데이터 서버(10)에게 OPEN 요청(즉, OPEN(A))을 보낸다(S10). 메타데이터 서버(10)는 해당 파일에 대한 메타데이터를 준비하고 해당 파일의 파일 핸들값(filehandle=a_0) 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S11).
클라이언트(40)는 파일의 논리적 청크에 대한 데이터 청크의 위치를 파악하기 위해 메타데이터 서버(10)에게 전달받은 파일 핸들값(a_0)을 포함하는 LAYOUT_GET 요청(즉, LAYOUT_GET(a_0))을 메타데이터 서버(10)에게 보낸다(S12). 메타데이터 서버(10)는 해당 파일 핸들값(a_0)을 가진 파일이 저장된 디바이스 식별자값(dev_id=1)과 각 데이터 청크를 저장하고 있는 각 데이터 서버(20a, 20b, 20c, 20d)에서 관리하는 파일 핸들값 목록(filehandle list={a_1, a_2, …, a_n})인 파일 레이아웃 정보 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S13). 한편, 클라이언트(40)가 이미 파일 레이아웃 정보를 파악하고 있는 경우 이 단계를 수행하지 않는다.
클라이언트(40)는 메타데이터 서버(10)로부터 전달받은 디바이스 식별자값에 대한 상세 정보를 파악하기 위해 메타데이터 서버(10)에게 전달받은 디바이스 식별자값(즉, "1") 등을 포함하는 DEVICE_INFO 요청(즉, DEVICE_INFO(1))을 메타데이터 서버(10)에게 보낸다(S14). 메타데이터 서버(10)는 해당 디바이스 식별자값(즉, "1")을 가진 디바이스 정보 등을 포함하는 응답을 클라이언트에게 보낸다(S15). 한편, 클라이언트(40)가 이미 디바이스 식별자값에 대한 상세 정보를 파악하고 있는 경우 이 단계는 수행하지 않는다. 이때, 디바이스 정보는 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버의 주소 목록(multipath list=[{DS_1}, {DS_2},…, {DS_n}])과 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서(stripeindices={0, 1, …, n-1}), 그리고 첫번째 논리적 청크가 저장된 데이터 서버 인덱스값(first_stripe_index=0) 등을 포함한다.
클라이언트(40)는 메타데이터 서버(10)로부터 전달받은 파일 레이아웃 정보 등을 포함하는 응답(즉, S13단계에서의 응답)과 디바이스 정보 등을 포함하는 응답(즉, S15단계에서의 응답)을 종합하여 각 데이터 서버의 주소와 각 데이터 서버에서의 파일 핸들값을 도출한다. 이를 통해 클라이언트(40)는 실제 데이터를 쓰거나 읽기 위해 해당 파일 핸들값과 해당 논리적 청크의 오프셋과 크기, 실제 데이터 내용 등을 포함하는 WRITE 요청이나 READ 요청을 각 데이터 서버에게 보낸다(S16,S18,S20,S22,S24,S26).
이때, 데이터 서버들(20a, 20b, 20c, 20d)에 보내는 파일 핸들값은 파일 레이아웃 정보에 있는 파일 핸들값 목록(filehandle list={a_1, a_2, …, a_n})에서 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서(stripeindices={0, 1, …, n-1})의 인덱스에 해당하는 값을 사용하며, 첫번째 논리적 청크가 저장된 데이터 서버 인덱스값(first_stripe_index=0)부터 참조하기 시작한다. 그리고, 각 데이터 서버는 해당 연산을 수행하고 그 결과 등을 포함하는 응답을 클라이언트(10)에게 보낸다(S17, S19, S21, S23, S25, S27).
도 2에 따르면, 클라이언트(40)는 첫번째 논리적 청크가 저장된 데이터 서버 인덱스(first_stripe_index)값이 '0'이므로 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버의 주소 목록(multipath list=[{DS_1}, {DS_2}, …, {DS_n}])의 첫번째 값인 {DS_1}을 확인한다. 그리고, 데이터 서버1(20a)에 접근하여 쓰기 연산이나 읽기 연산 작업을 수행한다. 그리고, 클라이언트(40)는 상기와 같이 순차적으로 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서(stripeindices={0, 1, …, n-1})에 따라 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버의 주소 목록(multipath list=[{DS_1}, {DS_2}, …, {DS_n}])의 해당 인덱스에 저장된 데이터 서버에 접근하여 쓰기 연산이나 읽기 연산 요청을 해당 데이터 서버에게 보낸다(S16, S18, S20, S22, S24).
데이터 서버(20)에 보내는 파일 핸들값은 파일 레이아웃 정보에 있는 파일 핸들값 목록(filehandle list={a_1, a_2, …, a_n})의 해당 인덱스에 있는 값을 사용한다. 그리고, 클라이언트(40)의 파일에 대한 쓰기 연산이나 읽기 연산은 파일의 크기에 따라 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서(stripeindices={0, 1, …, n-1})를 순환하면서 모든 연산이 완료될 때까지 반복된다. 즉, 클라이언트(40)가 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서의 마지막에 있는 데이터 서버에 쓰기 연산이나 읽기 연산 요청을 보내고(S22), 그에 따른 응답을 받은 후(S23), 아직 수행할 쓰기 연산이나 읽기 연산이 남았다면 다시 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서의 첫번째 데이터 서버부터 순차적으로 접근하여 쓰기 연산이나 읽기 연산 요청을 보내고(S24, S26), 그 결과 등을 포함하는 응답을 받는다(S25, S27).
클라이언트(40)가 쓰기 연산을 모두 완료하면 이에 대한 완료 정보와 해당 파일의 파일 핸들값(a_0)을 포함하는 LAYOUT_COMMIT 요청(즉, LAYOUT_COMMIT(a_0))을 메타데이터 서버(10)에게 보낸다(S28). 메타데이터 서버(10)는 클라이언트(40)로부터 전달받은 완료 정보를 참조하여 해당 파일의 메타데이터 정보를 갱신하고 그 결과 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S29).
클라이언트(40)는 더 이상 파일 A(50)에 대한 접근이 필요하지 않으면 메타데이터 서버(10)에게 해당 파일의 파일 핸들값(a_0) 등을 포함하는 CLOSE 요청(즉, CLOSE(a_0))을 보낸다(S30). 메타데이터 서버(10)는 해당 파일의 메타데이터 정보의 갱신 완료 작업과 시스템 자원을 반환하는 등의 작업을 수행하고 그 결과 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S31).
이처럼, 레이아웃 방식을 적용한 상기 파일 시스템 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서는 데이터 서버(20)의 고장 등에 활용 가능하도록 클라이언트(40)와 메타데이터 서버(10)간 주고 받는 저장소 프로토콜에 데이터 서버(20) 다중 경로(Data Server Multipathing)에 관한 사항을 일부 제시하고 있으나 데이터 서버(20)의 고장에 대비하여 구체적인 해결 방안을 제시하고 있지는 않다.
데이터 서버(20) 다중 경로에 관하여 자세히 살펴보면 다음과 같다. 메타데이터 서버(10)가 클라이언트(40)의 DEVICE_INFO 요청에 대한 응답을 할 때 해당 디바이스 정보 중 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버(20)의 주소 목록(multipath list=[{DS_1}, {DS_2}, …, {DS_n}])을 다중화하여 전달할 수 있도록 하고 있다. 예를 들어, 상술한 예시의 경우 클라이언트(40)는 첫번째 데이터 서버(20)의 주소로 {DS_1}로만 기재되어 있어 데이터 서버1(20a)에만 접근할 수 있지만, 이를 다중화하여 첫번째 데이터 서버(20)의 주소를 {DS_1, DS_2, DS_n}으로 기재하면 첫번째 논리적 청크의 데이터 청크가 있는 데이터 서버1(20a), 데이터 서버2(20b), 데이터 서버n(20d)에 접근하여 파일 핸들값 목록의 첫번째 파일 핸들값(a_1)을 사용하여 쓰기 연산이나 읽기 연산을 수행할 수 있다.
그러나, 다중화한 데이터 서버(20)에 접근할 때 동일한 파일 핸들값을 사용하도록 제한하고 있어 파일 핸들값을 동기화해야 하는 부하 등이 발생할 수 있으며, 데이터 서버(20)의 고장에 대비하여 데이터 복제 작업 등을 수행할 때 추가적인 많은 부하를 일으킬 수 있다.
레이아웃 방식을 적용한 파일 시스템 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서 메타데이터 서버(10)와 데이터 서버(20)간, 데이터 서버(20)와 데이터 서버(20)간 주고 받는 제어 프로토콜을 제시하고 있지 않기 때문에, 메타데이터 서버(10)가 데이터 서버(20)를 제어하기 위해서는 메타데이터 서버(10)와 데이터 서버(20)간, 데이터 서버(20)와 데이터 서버(20)간 주고 받는 효과적인 제어 프로토콜이 요구된다.
또한, 레이아웃 방식을 적용한 파일 시스템 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서는 데이터 서버(20)의 고장에 대비한 구체적인 해결 방안을 제시하고 있지 않다. 그러므로, 파일 시스템 프로토콜을 준수하면서 이를 해결하기 위한 효과적인 방법이 요구되며, 앞서 언급한 데이터 분산 패턴 방식의 차이로 인해 일반적인 비대칭 클러스터 파일 시스템에서 활용하는 데이터 복제 방법과는 다른 방법이 필수적이다.
본 발명은 상기한 사정을 감안하여 제안된 것으로, 비대칭형 클러스터 파일 시스템에서 메타데이터 서버가 데이터 서버를 효과적으로 제어하고, 이를 통해 데이터 서버의 고장 대비, 데이터 복제 후, 데이터 서버의 추가 등의 상황에서 디바이스와 파일 레이아웃을 구성 또는 재구성하도록 한 비대칭형 클러스터 파일 시스템의 데이터 관리 방법을 제공하는 것을 목적으로 한다. 즉, 본 발명은 비대칭형 클러스터 파일 시스템에서 메타데이터 서버가 데이터 서버를 효과적으로 제어하여 데이터 서버의 고장에 대비하여 사전에 파일 접근 정보(디바이스와 파일 레이아웃)를 구성하고, 데이터를 복제한 후 파일 레이아웃을 재구성하고, 데이터 서버의 고장이 감지되었을 때 파일 접근 정보를 재구성하고, 복제 수준을 만족시키기 위해 데이터를 복구한 후 파일 레이아웃을 재구성하고, 데이터 서버가 추가되었을 때 데이터 병렬성을 회복하기 위해 파일 접근 정보를 재구성하도록 한 비대칭형 클러스터 파일 시스템의 데이터 관리 방법을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은, 메타데이터 서버에 의해, 존재하지 않은 파일에 대한 파일 오픈 요청을 수신하면, 파일 핸들값 및 파일 이름을 할당하여 데이터 서버에 파일을 생성하는 단계; 메타데이터 서버에 의해, 기설정된 복제 수준을 근거로 데이터 서버에 저장된 파일 또는 생성되는 파일을 다른 데이터 서버에 복제하는 단계; 및 클라이언트에 의해, 데이터 서버들에 저장된 파일들에 대한 파일 작업을 수행하는 단계를 포함한다.
클라이언트로부터 OPEN 요청을 수신한 메타데이터 서버에 의해, OPEN 요청에 해당하는 파일이 메타데이터 서버 및 데이터 서버에 존재하지 않으면 파일의 파일 핸들값 및 파일 이름을 할당하는 단계; 메타데이터 서버에 의해, 할당한 파일 이름을 포함하는 MDS2DS_OPEN 요청을 복수의 데이터 서버들에게 전송하는 단계; 및 MDS2DS_OPEN 요청을 수신한 데이터 서버에 의해, MDS2DS_OPEN 요청에 포함된 파일 이름으로 파일을 생성하는 단계를 더 포함한다.
파일을 생성하는 단계는, 파일을 생성한 데이터 서버들에 의해, 생성한 파일의 파일 핸들값을 포함하는 응답을 메타데이터 서버에게로 전송하는 단계; 및 메타데이터 서버에 의해, 복수의 데이터 서버들로부터 수신한 응답에 포함된 파일 핸들값들을 할당한 파일 핸들값과 연계하여 관리하는 단계를 포함한다.
다른 데이터 서버에 복제하는 단계는, 메타데이터 서버에 의해, 복제 대상 파일이 저장된 디바이스 정보들 중에서 쓰기 연산이 수행된 n번째 데이터 서버 인덱스값에 해당하는 다중화된 데이터 서버 주소를 검출하는 단계; 메타데이터 서버에 의해, 검출한 다중화된 데이터 서버 주소를 근거로 설정한 소스 데이터 서버 및 타깃 데이터 서버에게로 소스 데이터 서버, 타깃 데이터 서버, 복제할 파일 이름, 복제할 데이터 청크의 인덱스 목록을 포함하는 MDS2DS_COPY 요청을 전송하는 단계; MDS2DS_COPY 요청을 수신한 소스 데이터 서버 및 타깃 데이터 서버에 의해, MDS2DS_COPY 요청에 포함된 이름에 해당하는 핸들값을 포함하는 응답을 메타데이터 서버에게로 전송하는 단계; 소스 데이터 서버 및 타깃 데이터 서버에 의해, 소스 데이터 서버에 저장된 파일을 타깃 데이터 서버에 복제하는 단계; 소스 데이터 서버 및 타깃 데이터 서버에 의해, 파일의 복제 성공 여부를 포함하는 DS2MDS_COPY_DONE 요청을 메타데이터 서버에게로 전송하는 단계; 및 메타데이터 서버에 의해, 복제된 파일에 대한 파일 핸들값 목록을 갱신하는 단계를 더 포함한다.
다중화된 데이터 서버 주소를 검출하는 단계는, 메타데이터 서버에 의해, 복제 수준을 만족하지 않는 파일을 검출하는 단계; 메타데이터 서버에 의해, 기검출한 파일이 저장된 디바이스를 검출하는 단계; 메타데이터 서버에 의해, 검출한 파일의 파일 핸들값 목록을 검출하는 단계; 메타데이터 서버에 의해, 검출한 디바이스에 포함된 다중화된 데이터 서버 주소를 검출하는 단계; 및 메타데이터 서버에 의해, 검출한 다중화된 데이터 서버 주소에 해당하는 다중화된 파일 핸들값을 검출하는 단계를 포함한다.
MDS2DS_COPY 요청을 전송하는 단계는, 메타데이터 서버에 의해, 검출한 다중화된 파일 핸들값들 중에서 유효한 파일 핸들값에 해당하는 데이터 서버를 소스 데이터 서버로 설정하는 단계; 및 메타데이터 서버에 의해, 검출한 다중화된 파일 핸들값들 중에서 무효한 파일 핸들값에 해당하는 데이터 서버를 타깃 데이터 서버로 설정하는 단계를 포함한다.
파일 작업을 수행하는 단계는, 클라이언트에 의해, 메타데이터 서버로부터 다중화된 파일 핸들값 목록 및 다중화된 데이터 서버 주소를 수신하는 단계; 클라이언트에 의해, 연산 대상으로 선정된 논리적 청크에 해당하는 다중화된 데이터 서버 주소 및 다중화된 파일 핸들값 목록을 검출하는 단계; 클라이언트에 의해, 검출한 다중화된 데이터 서버 주소 및 다중화된 파일 핸들값 목록을 근거로 파일에 대한 연산을 수행하는 단계를 포함하되, 연산을 수행하는 단계에서는, 클라이언트에 의해, 쓰기 연산이면 검출한 다중화된 데이터 서버 주소 목록 중에서 쓰기 연산을 수행할 n번째 데이터 서버 주소와, 검출한 다중화된 파일 핸들값 목록 중에서 n번째 파일 핸들값을 검출하고, 클라이언트에 의해, 읽기 연산이면 검출한 다중화된 파일 핸들값 목록 중에서 유효한 파일 핸들값을 검출하고, 검출한 유효한 파일 핸들값에 해당하는 데이터 서버 주소를 검출한다.
메타데이터 서버에 의해, 클라이언트로부터의 파일 삭제 요청에 따라 데이터 서버에 저장된 파일을 삭제하는 단계를 더 포함하되, 파일을 삭제하는 단계는, 메타데이터 서버에 의해, 클라이언트로부터 수신한 REMOVE 요청으로부터 파일 이름을 검출하는 단계; 메타데이터 서버에 의해, 검출한 파일 이름에 해당하는 각 데이터 서버에서의 파일 이름을 검출하는 단계; 메타데이터 서버에 의해, 검출한 각 데이터 서버에서의 파일 이름을 포함하는 MDS2DS_REMOVE 요청을 각 데이터 서버에게로 전송하는 단계; 및 메타데이터 서버에 의해, 각 데이터 서버로부터 수신한 파일 삭제 결과들을 종합하여 최종 결과를 포함하는 응답을 클라이언트에게로 전송하는 단계를 포함한다.
소스 데이터 서버에 저장된 복제 대상 파일을 타깃 데이터 서버에 복사하는 단계를 더 포함하되, 복제 대상 파일을 타깃 데이터 서버에 복사하는 단계는, 메타데이터 서버에 의해, 소스 데이터 서버 및 타킷 데이터 서버에게로 소스 데이터 서버 정보, 타깃 데이터 서버 정보, 복제 파일 이름, 복제할 데이터 청크의 인덱스 목록을 포함하는 MDS2COPY 요청을 전송하는 단계; MDS2COPY 요청을 수신한 소스 데이터 서버 및 타깃 데이터 서버에 의해, 메타데이터 서버에게로 복제 대상 파일의 데이터 서버에서의 파일 핸들값을 포함하는 응답을 전송하는 단계; 소스 데이터 서버에 의해, 타깃 데이터 서버에게로 복제 대상 파일의 이름을 포함하는 DS2DS_OPEN 요청을 전송하는 단계; DS2DS_OPEN 요청을 수신한 타깃 데이터 서버에 의해, DS2DS_OPEN 요청에 포함된 복제 대상 파일 이름에 해당하는 파일을 열고 해당 파일의 파일 핸들값을 포함하는 응답을 소스 데이터 서버에게로 전송하는 단계; 응답을 수신한 소스 데이터 서버에 의해, 타깃 데이터 서버로부터 수신한 파일 핸들값과 복제 대상 데이터 청크의 인덱스 목록에 해당하는 각 데이터 청크의 내용을 포함하는 DS2DS_WRITE 요청을 타깃 데이터 서버에게로 전송하는 단계; DS2DS_WRITE 요청을 수신한 타깃 데이터 서버에 의해, DS2DS_WRITE 요청에 포함된 파일 핸들값에 해당하는 파일에 DS2DS_WRITE 요청에 포함된 각 데이터 청크의 내용을 저장하는 단계; 타깃 데이터 서버에 의해, 각 데이터 청크의 내용 저장 결과를 소스 데이터 서버에게로 전송하는 단계; 소스 데이터 서버에 의해, 소스 데이터 서버 및 타깃 데이터 서버에서의 파일 핸들값들을 포함하는 데이터 청크의 복제 완료 신호를 메타데이터 서버에게로 전송하는 단계; 및 복제 완료 신호를 수신한 메타데이터 서버에 의해, 소스데이터 서버 및 타깃 데이터 서버에게로 응답을 전송하는 단계를 포함한다.
메타데이터 서버에 의해, 비대칭형 클러스터 파일 시스템에 데이터 서버를 추가하는 단계를 더 포함하되, 데이터 서버를 추가하는 단계는, 추가되는 데이터 서버에 의해, 데이터 서버 식별자값, 가용 용량을 포함하는 등록 요청 신호를 전송하는 단계; 등록 요청 신호를 수신한 메타데이터 서버에 의해, 등록 요청 신호에 포함된 데이터 서버 식별자값, 가용 용량을 저장하고 저장결과를 전송하는 단계; 저장결과를 수신한 추가되는 데이터 서버에 의해, 현재 데이터 서버의 상태값을 포함하는 DS2MDS_REPORT 신호를 전송하는 단계; DS2MDS_REPORT 신호를 수신한 메타데이터 서버에 의해, DS2MDS_REPORT 신호에 포함된 상태값을 저장하는 단계; 및 DS2MDS_REPORT 신호를 수신한 메타데이터 서버에 의해 추가되는 데이터 서버에게로 응답을 전송하는 단계를 포함한다.
메타데이터 서버에 의해, 데이터 서버에 신규 파일을 생성하는 단계를 더 포함하되, 파일을 생성하는 단계는, 클라이언트로부터 OPEN 요청을 수신한 메타데이터 서버에 의해, 신규 파일의 파일 핸들값 및 데이터 서버에서 사용될 파일 이름을 할당하는 단계; 메타데이터 서버에 의해, 디바이스에 포함된 데이터 서버 목록들 중 다중화된 데이터 서버 목록의 n번째 데이터 서버들에게 할당된 파일 이름을 포함하는 MDS2DS_OPEN 요청을 전송하는 단계; MDS2DS_OPEN 요청을 수신한 각 데이터 서버들에 의해, MDS2DS_OPEN 요청에 포함된 파일 이름으로 파일을 생성하는 단계; 각 데이터 서버들에 의해, 생성한 파일의 파일 핸들값을 메타데이터 서버에게로 전송하는 단계; 및 메타데이터 서버에 의해, 수신한 파일 핸들값들과 생성한 파일 핸들값들을 연계하여 관리하는 단계를 포함한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법은, 메타데이터 서버에 의해, 복수의 데이터 서버들 중에서 장애가 발생한 데이터 서버를 감지하는 단계; 메타데이터 서버에 의해, 장애가 발생한 데이터 서버를 포함하는 다중화된 데이터 서버 주소를 갱신하는 단계; 메타데이터 서버에 의해, 장애가 발생한 데이터 서버를 포함하는 다중화된 파일 핸들값 목록을 갱신하는 단계; 및 메타데이터 서버에 의해, 갱신된 다중화된 데이터 서버 주소 및 다중화된 파일 핸들값 목록을 근거로 디바이스 정보를 갱신하는 단계를 포함한다.
다중화된 데이터 서버 주소를 갱신하는 단계는, 메타데이터 서버에 의해, 장애 발생으로 감지된 데이터 서버가 포함된 디바이스를 검출하는 단계; 메타데이터 서버에 의해, 검출한 디바이스의 디바이스 정보 중에서 검출한 데이터 서버의 주소가 포함된 다중화된 데이터 서버 주소를 검출하는 단계; 및 메타데이터 서버에 의해, 검출된 다중화된 데이터 서버 주소 중에서 검출한 데이터 서버의 주소를 무효한 값으로 갱신하는 단계를 포함한다.
다중화된 파일 핸들값 목록을 갱신하는 단계는, 메타데이터 서버에 의해, 장애 발생으로 감지된 데이터 서버가 포함된 디바이스를 검출하는 단계; 메타데이터 서버에 의해, 검출한 디바이스의 디바이스 정보 중에서 검출한 데이터 서버의 파일 핸들값이 포함된 다중화된 파일 핸들값 목록을 검출하는 단계; 및 메타데이터 서버에 의해, 검출된 다중화된 파일 핸들값 목록 중에서 검출한 데이터 서버에 해당하는 파일 핸들값을 무효한 값으로 갱신하는 단계를 포함한다.
디바이스 정보를 갱신하는 단계는, 메타데이터 서버에 의해, 다중화된 데이터 서버 주소 중에서 쓰기 연산이 수행될 n번째 값이 무효한 값으로 갱신된 다중화된 데이터 서버 주소 중 유효한 값을 n번째 값과 교환하여 디바이스 정보를 재구성하는 단계; 메타데이터 서버에 의해, 다중화된 파일 핸들값 목록 중에서 쓰기 연산이 수행될 n번째 값이 무효한 값으로 갱신된 다중화된 파일 핸들값 중 유효한 값을 n번째 값과 교환하여 디바이스 정보를 재구성하는 단계; 메타데이터 서버에 의해, 재구성된 디바이스 정보의 디바이스 식별자값을 할당하는 단계; 및 메타데이터 서버에 의해, 할당된 디바이스 식별자값에 해당하는 디바이스를 포함하는 각 파일의 디바이스 식별자값을 할당된 디바이스 식별자값으로 갱신하는 단계를 포함한다.
메타데이터 서버에 의해, 추가되는 데이터 서버를 근거로 디바이스 정보를 갱신하는 단계를 더 포함하되, 추가되는 데이터 서버를 근거로 디바이스 정보를 갱신하는 단계는 메타데이터 서버에 의해, 데이터 서버의 추가 여부를 감지하는 단계; 메타데이터 서버에 의해, 데이터 서버의 장애 발생으로 데이터 서버가 감소한 디바이스를 검출하는 단계; 메타데이터 서버에 의해, 검출한 디바이스의 디바이스 정보에 포함된 다중화된 데이터 서버 목록 중 쓰기 연산이 수행될 n번째 데이터 서버 주소값들을 검출하는 단계; 메타데이터 서버에 의해, 검출한 n번째 데이터 서버 주소값들 중에서 중복된 데이터 서버 주소값을 검출하는 단계; 메타데이터 서버에 의해, 중복된 데이터 서버 주소값 중 n번째 데이터 서버 주소값을 추가된 데이터 서버의 데이터 서버 주소값으로 대체하는 단계; 메타데이터 서버에 의해, 대체된 n번째 데이터 서버 주소값들을 근거로 다중화된 데이터 서버 목록의 n+1번째 데이터 서버 주소값을 재구성하는 단계; 및 메타데이터 서버에 의해, 재구성된 디바이스 정보의 디바이스 식별자를 할당하는 단계를 포함한다.
n+1번째 데이터 서버 주소값을 재구성하는 단계에서는, 메타데이터 서버에 의해, 대체된 n번째 데이터 서버 주소값들을 기준으로 한단계 오른쪽의 데이터 서버 주소값을 n+1번째 데이터 서버 주소값으로 재구성한다.
메타데이터 서버에 의해, 갱신된 디바이스 정보를 근거로 추가된 데이터 서버에 파일을 복제하는 단계를 더 포함하되, 메타데이터 서버에 의해, 추가된 데이터 서버의 데이터 서버 주소가 포함된 다중화된 데이터 서버를 검출하는 단계; 메타데이터 서버에 의해, 검출한 다중화된 데이터 서버 중에서 하나의 데이터 서버를 소스 데이터 서버로 설정하는 단계; 메타데이터 서버에 의해, 추가된 데이터 서버를 타깃 데이터 서버로 설정하는 단계; 및 메타데이터 서버에 의해, 소스 데이터 서버에 저장된 파일을 타깃 데이터 서버로 복제하는 단계를 포함한다.
데이터 청크를 타깃 데이터 서버로 복제하는 단계는, 메타데이터 서버에 의해, 설정된 소스 데이터 서버에서 관리하는 파일의 논리적 청크를 검출하는 단계; 메타데이터 서버에 의해, 소스 데이터 서버 및 타깃 데이터 서버에게로 검출한 논리적 청크에 해당하는 데이터 청크의 복제 요청을 전송하는 단계; 메타데이터 서버에 의해, 타깃 데이터 서버로부터 수신한 복제 요청에 대한 응답으로부터 추가된 데이터 서버에 해당하는 파일 핸들값을 검출하는 단계; 및 메타데이터 서버에 의해, 파일의 파일 레이아웃 정보 중에서 추가된 데이터 서버에 해당하는 파일 핸들값을 검출한 파일 핸들값으로 갱신하는 단계를 포함한다.
데이터 청크를 타깃 데이터 서버로 복제하는 단계는, 메타데이터 서버에 의해, 복제된 파일의 디바이스 식별자값을 디바이스 식별자값으로 갱신하는 단계를 더 포함한다.
본 발명에 따르면, 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은 데이터 분산 패턴이 고정된 비대칭 클러스터 파일 시스템에 포함된 임의의 데이터 서버에서 고장이 발생하더라도 데이터가 다른 데이터 서버에 존재하기 때문에 데이터의 고가용성이 증대되며, 새로운 데이터 서버를 추가하면 기존 데이터 서버의 장애로 인해 감소한 데이터 병렬성을 다시 원상 회복할 수 있는 효과가 있다.
또한, 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은 일반적인 사용자들에게 가장 친숙한 파일 기반의 환경을 제공하는 파일 레이아웃 방식을 적용한 네트워크 파일 시스템(NFS)의 버전 4.1 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서 프로토콜을 준수하면서 데이터 서버의 장애에 대비할 수 있으면서도, 새로운 데이터 서버를 추가하면 기존 데이터 서버의 장애로 감소한 데이터 병렬성도 회복할 수 있는 효과가 있다.
도 1 내지 도 3은 종래의 비대칭형 클러스터 파일 시스템을 설명하기 위한 도면.
도 4는 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 작업 방법을 설명하기 위한 도면.
도 5는 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 삭제 방법을 설명하기 위한 도면.
도 6은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 복사 방법을 설명하기 위한 도면.
도 7은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 데이터 서버 추가 방법을 설명하기 위한 도면.
도 8 및 도 9는 비대칭형 클러스터 파일 시스템의 데이터 서버의 고장에 대비하여 추가한 다중화된 파일 핸들값 목록과 다중화된 데이터 서버 주소 목록을 메타데이터 서버와 클라이언트에서 사용하는 방법을 설명하기 위한 도면.
도 10 내지 도 12는 비대칭형 클러스터 파일 시스템에서 파일을 생성하는 방법을 설명하기 위한 도면.
도 13은 비대칭형 클러스터 파일 시스템에서 생성된 파일을 복제하는 방법을 설명하기 위한 도면.
도 14 및 도 15는 특정 디바이스 포함된 데이터 서버의 장애가 발생하여 메타데이터 서버가 이를 감지하는 경우 메타데이터 서버의 동작 절차를 설명하기 위한 도면.
도 16은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템에서 데이터 서버의 장애가 발생했을 때 디바이스 정보와 파일 레이아웃 정보를 갱신하는 방법을 설명하기 위한 도면.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하, 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 데이터 관리 방법을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다.
도 4는 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 작업 방법을 설명하기 위한 도면이다. 즉, 도 4는 클라이언트가 파일 시스템에 파일을 생성하고 사용한 후 닫았을 때, 클라이언트와 메타데이터 서버간, 메타데이터 서버와 데이터 서버간 발생하는 요청과 응답들에 관한 흐름도이다.
먼저, 클라이언트(40)는 파일 A(50)의 작업을 위한 요청(즉, OPEA(A))을 메타데이터 서버(10)에게로 전송한다(S101).
클라이언트(40)로부터 파일 A(50)의 생성을 위한 OPEN 요청을 받은 메타데이터 서버(10)는 클라이언트(40)로부터 전달받은 파일 이름(A)에 해당하는 임의의 파일 핸들값(a_0)을 생성한다. 메타데이터 서버(10)는 기생성한 파일 핸들값(a_0)을 파일 이름으로 설정한다. 메타데이터 서버(10)는 파일 이름(a_0)을 포함하는 MDS2DS_OPEN 요청들을 각 데이터 서버(20a, 20b, 20c, 20d)에게 보낸다(S102, S104, S106, S108).
MDS2DS_OPEN 요청을 수신한 각 데이터 서버(20a, 20b, 20c, 20d)는 전달된 파일 이름으로 파일을 생성한다. 각 데이터 서버(20a, 20b, 20c, 20d)는 해당 파일의 파일 핸들값(a_1,a_2,…,a_n) 등을 포함하는 응답을 메타데이터 서버(10)에게 보낸다(S103, S105, S107, S109). 이때, 메타데이터 서버(10)는 각 데이터 서버(20a, 20b, 20c, 20d)로부터 전달받은 각 데이터 서버(20a, 20b, 20c, 20d)의 파일 핸들값(a_1,a_2,…,a_n)을 메타데이터 서버(10)에서의 파일 핸들값(a_0)과 연계하여 파일 핸들값 목록으로 관리한다.
메타데이터 서버(10)는 각 데이터 서버(20a, 20b, 20c, 20d)로부터 응답 수신이 완료되면 파일 핸들 응답(즉, filehandle=a_0)을 클라이언트(40)에게로 전송한다(S110).
클라이언트(40)는 파일 핸들 응답을 수신하면 메타데이터 서버(10)에게로 LAYOUT_GET 요청(즉, LAYOUT_GET(a_0))을 전송한다(S111). 메타데이터 서버(10)는 클라이언트(40)로부터 요청된 LAYOUT_GET 요청에 따라 데이터 서버들(20a, 20b, 20c, 20d)로부터 수신한 파일 핸들값 목록을 클라이언트(40)에게로 전송한다(S112). 즉, 메타데이터 서버(10)는 클라이언트(40)로부터 요청된 LAYOUT_GET 요청에 포함된 파일 핸들값(a_0)에 연계된 파일 핸들값 목록(즉, dev_id=1, filehandle list={a_1, a_2, …, a_n})를 클라이언트(40)에게로 전송한다.
클라이언트(40)는 디바이스 정보 요청(즉, DEVICE_INFO=1)을 메타데이터 서버(10)에게로 전송한다(S113). 그에 따라, 메타데이터 서버(10)는 디바이스 정보를 포함하는 응답(즉, dev_id=1, multipath list=[{DS_1}, {DS_1}, …, {DS_n}], stripendices={0, 1, …, n-1}, first_strip_index=0)을 클라이언트(40)에게로 전송한다(S114).
클라이언트(40)는 메타데이터 서버(10)로부터 전달받은 파일 레이아웃 정보 등을 포함하는 응답(즉, S112단계에서의 응답)과 디바이스 정보 등을 포함하는 응답(즉, S114단계에서의 응답)을 종합하여 각 데이터 서버(20a, 20b, 20c, 20d)의 주소와 각 데이터 서버(20a, 20b, 20c, 20d)에서의 파일 핸들값을 도출한다.
클라이언트(40)는 도출한 파일 핸들값을 이용하여 실제 데이터를 쓰거나 읽기 위해 해당 파일 핸들값과 해당 논리적 청크의 오프셋과 크기, 실제 데이터 내용 등을 포함하는 WRITE 요청이나 READ 요청을 각 데이터 서버(20a, 20b, 20c, 20d)에게 보낸다(S115, S117, S119, S121, S123, S125). 이때, 데이터 서버들(20a, 20b, 20c, 20d)에 보내는 파일 핸들값은 파일 레이아웃 정보에 있는 파일 핸들값 목록(filehandle list={a_1, a_2, …, a_n})에서 논리적 청크가 저장된 각 데이터 서버 목록의 스트라입 순서(stripeindices={0, 1, …, n-1})의 인덱스에 해당하는 값을 사용하며, 첫번째 논리적 청크가 저장된 데이터 서버 인덱스값(first_stripe_index=0)부터 참조하기 시작한다. 그리고, 각 데이터 서버(20a, 20b, 20c, 20d)는 해당 연산을 수행하고 그 결과 등을 포함하는 응답을 클라이언트(10)에게 보낸다(S116, S118, S120, S122, S124, S126).
클라이언트(40)가 쓰기 연산을 모두 완료하면 이에 대한 완료 정보와 해당 파일의 파일 핸들값(a_0)을 포함하는 LAYOUT_COMMIT 요청(즉, LAYOUT_COMMIT(a_0))을 메타데이터 서버(10)에게 보낸다(S127). 메타데이터 서버(10)는 클라이언트(40)로부터 전달받은 완료 정보를 참조하여 해당 파일의 메타데이터 정보를 갱신하고 그 결과 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S128).
클라이언트(40)는 메타데이터 서버(10)로부터 파일의 메타데이터 정보 갱신 결과를 포함하는 응답신호를 수신하면 메타데이터 서버(10)에게로 파일 핸들값(a_0)에 대한 CLOSE 요청(즉, CLOSE(a_0))을 전송한다(S129). 그에 따라, 메타데이터 서버(10)는 해당 파일 핸들값(a_0)에 연계된 각 데이터 서버들(20a, 20b, 20c, 20d)에게 해당 데이터 서버(20)에서 관리하는 파일 핸들값(a_1,a_2,…,a_n) 등을 포함하는 MDS2DS_CLOSE 요청을 보낸다(S130, S132, S134, S136). 이때, 메타데이터 서버(10)는 MDS2DS_CLOSE(a_1), MDS2DS_CLOSE(a_2), …, MDS2DS_CLOSE(a_n)을 각 데이터 서버들(20a, 20b, 20c, 20d)에게로 전송한다.
메타데이터 서버(10)로부터 MDS2DS_CLOSE 요청을 수신한 각 데이터 서버들(20a, 20b, 20c, 20d)은 전달된 파일 핸들값(a_1,a_2,…,a_n)을 가진 파일을 위해 할당된 시스템 자원을 반환하는 등의 작업을 수행하고 그 결과 등을 포함하는 응답을 메타데이터 서버(10)에게 보낸다(S131, S133, S135, S137).
각 데이터 서버들(20a, 20b, 20c, 20d)로부터 응답을 수신한 메타데이터 서버(10)는 클라이언트(40)에게로 CLOSE 요청에 대한 응답을 전송한다(S138).
도 5는 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 삭제 방법을 설명하기 위한 도면이다.
클라이언트(40)는 파일 A(50)의 삭제를 위해서 파일 이름(A) 등을 포함하는 REMOVE 요청을 메타데이터 서버(10)에게로 전송한다(S205). 즉, 클라이언트(40)는 파일 A(50)의 삭제 요청을 위해 REMOVE(A) 요청신호를 메타데이터 서버(10)에게로 전송한다.
메타데이터 서버(10)는 클라이언트(40)로부터의 REMOVE 요청에 해당하는 파일 이름(즉, A)을 검출한다. 메타데이터 서버(10)는 검출한 파일 이름(A)에 해당하는 각 데이터 서버(20a, 20b, 20c, 20d)에서의 파일 이름(a_0)을 검출한다. 메타데이터 서버(10)는 검출한 파일 이름(a_0)을 포함하는 MDS2DS_REMOVE 요청(즉, MDS2DS_REMOVE(a_0))을 각 데이터 서버(20a, 20b, 20c, 20d)에게 전송한다(S210, S220, S230, S240).
MDS2DS_REMOVE 요청을 수신한 각 데이터 서버(20a, 20b, 20c, 20d)는 전달된 파일 이름을 가진 파일을 삭제한다. 각 데이터 서버(20a, 20b, 20c, 20d)는 파일 삭제 결과를 포함하는 응답을 메타데이터 서버(10)에게로 전송한다(S215, S225, S235, S245).
메타데이터 서버(10)는 각 데이터 서버(20a, 20b, 20c, 20d)로부터 수신한 응답을 종합하여 그 결과 등을 포함하는 응답을 클라이언트(40)에게로 전송한다(S250).
도 6은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 파일 복사 방법을 설명하기 위한 도면이다. 즉, 도 6에서는 메타데이터 서버가 파일의 데이터 청크를 복사하고자 하는 경우 데이터 서버에 저장되어 있는 데이터 청크를 다른 데이터 서버로 복제하라는 요청들과 응답들에 관한 흐름도이다. 이하에서는 메타데이터 서버가 데이터 서버1에서 데이터 서버2로 파일의 데이터 청크를 복사하는 방법을 예를 들어 설명한다.
먼저, 메타데이터 서버(10)는 복제할 원본 데이터 청크가 저장된 소스 데이터 서버와 복제 데이터 청크가 저장될 타깃 데이터 서버를 검출한다. 이하에서는, 메타데이터 서버(10)가 데이터 서버1(20a)를 소스 데이터 서버로 검출하고, 데이터 서버2(20b)를 타깃 데이터 서버로 검출한 것으로 가정하여, 소스 데이터 서버를 소스 데이터 서버(20a)로 기재하고, 타깃 데이터 서버를 타깃 데이터 서버(20b)로 기재하여 설명하기로 한다.
메타데이터 서버(10)는 소스 데이터 서버(20a)의 정보와 타깃 데이터 서버(20b)의 정보, 복제할 파일 이름, 복제할 데이터 청크의 인덱스 목록 등을 포함하는 MDS2DS_COPY 요청을 소스 데이터 서버(20a)에게로 전송한다(S305). 즉, 메타데이터 서버(10)는 MDS2DS_COPY(DS_1, DS)2, a_0, chunk index list={0, n}) 형식의 요청을 소스 데이터 서버(20a)에게로 전송한다.
소스 데이터 서버(20a)는 복제를 위한 준비 작업을 수행하고 해당 파일의 데이터 서버에서의 파일 핸들값(a_1) 등을 포함하는 응답(즉, filehandle=a_1)을 메타데이터 서버(10)에게로 전송한다(S310).
이와 함께, 메타데이터 서버(10)는 소스 데이터 서버(20a)의 정보와 타깃 데이터 서버(20b)의 정보, 복제할 파일 이름, 복제할 데이터 청크의 인덱스 목록 등을 포함하는 MDS2DS_COPY 요청을 타깃 데이터 서버(20b)에게로 전송한다(S315). 이때, 메타데이터 서버(10)는 상술한 S305 단계에서 소스 데이터 서버(20a)로 전송한 요청과 동일한 요청을 타깃 데이터 서버(20b)에게로 전송한다.
타깃 데이터 서버(20b)는 복제를 위한 준비 작업을 수행하고 해당 파일의 데이터 서버에서의 파일 핸들값(a_2) 등을 포함하는 응답(즉, filehandle=a_2)을 메타데이터 서버(10)에게로 전송한다(S320).
소스 데이터 서버(20a)는 타깃 데이터 서버(20b)에게 복제의 시작을 알리기 위해 복제할 파일 이름(a_0) 등을 포함하는 DS2DS_OPEN 요청(즉, DS2DS_OPEN(a_0)을 전송한다(S325).
타깃 데이터 서버(20b)는 전달받은 파일 이름을 가진 파일을 열어 해당 파일 핸들값(copy_a_2) 등을 포함하는 응답(즉, filehandle=copy_a_2)을 소스 데이터 서버(20a)에게로 전송한다(S330).
소스 데이터 서버(20a)는 타깃 데이터 서버(20b)로부터 전달받은 파일 핸들값(copy_a_2)과 복제할 데이터 청크의 인덱스 목록에 부합하는 각 데이터 청크의 내용(D_1,D_n) 등을 포함하는 DS2DS_WRITE 요청을 타깃 데이터 서버(20b)에게로 전송한다(S335, S345). 이때, 소스 데이터 서버(20a)는 DS2DS_WRITE 요청과 유사한 방식으로 타깃 데이터 서버(20b)에 저장된 데이터 청크를 읽어서 소스 데이터 서버(20a)에 저장하기 위한 DS2DS_READ 요청을 타깃 데이터 서버(20b)에게로 전송할 수도 있다. 즉, 소스 데이터 서버(20a)는 DS2DS_WRITE(copy_a_2, D_1) 형식의 DS2DS_WRITE 요청, 또는 DS2DS_READ(copy_a_2, D_1) 형식의 DS2DS_READ 요청을 타깃 데이터 서버(20b)에게로 전송한다.
타깃 데이터 서버(20b)는 전달받은 파일 핸들값(copy_a_2)을 가진 파일(a_0)에 전달받은 데이터 청크의 내용(D_1,D_n)을 저장하고 그 결과 등을 포함하는 응답을 소스 데이터 서버(20a)에게 보낸다(S340, S350).
소스 데이터 서버(20a)가 복제할 데이터 청크의 내용을 모두 보냈으면 타깃 데이터 서버(20b)로부터 전달받은 파일 핸들값(copy_a_2) 등을 포함하는 DS2DS_CLOSE 요청(즉, DS2DS_CLOSE(copy_a_2))을 타깃 데이터 서버(20b)에게로 전송한다(S355).
타깃 데이터 서버(20b)는 전달받은 파일 핸들값(copy_a_2)에 해당하는 파일을 위해 할당한 시스템 자원을 반환하는 등의 작업을 수행하고 그 결과 등을 포함하는 응답을 소스 데이터 서버(20a)에게로 전송한다(S360).
소스 데이터 서버(20a)는 데이터 청크의 복제 작업이 완료되면 MDS2DS_COPY 요청의 응답에 포함하여 전달했던 파일 핸들값(a_1) 등을 포함하는 DS2MDS_COPY_DONE 신호(즉, DS2MDS_COPY_DONE(a_1))를 메타데이터 서버(10)에게로 전송한다(S365).
메타데이터 서버(10)는 복제를 위해 할당한 시스템 자원을 반환하는 등의 작업을 수행하고 그 결과 등을 포함하는 응답을 소스 데이터 서버(20a)에게로 전송한다(S370).
타깃 데이터 서버(20b)는 MDS2DS_COPY 요청의 응답에 포함하여 전달했던 파일 핸들값(a_2) 등을 포함하는 DS2MDS_COPY_DONE(즉, DS2MDS_COPY_DONE(a_2))를 메타데이터 서버(10)에게로 전송한다(S375).
메타데이터 서버(10)는 복제를 위해 할당한 시스템 자원을 반환하는 등의 작업을 수행하고 그 결과 등을 포함하는 응답을 타깃 데이터 서버(20b)에게로 전송한다(S380).
도 7은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 데이터 서버 추가 방법을 설명하기 위한 도면이다. 즉, 도 7은 추가되는 데이터 서버를 메타데이터 서버에 등록하고, 데이터 서버의 상태를 메타데이터 서버로 보고하는 요청과 응답들에 관한 흐름도이다. 이하에서는, 데이터 서버1 및 데이터 서버2가 비대칭형 클러스터 파일 시스템에 추가되어 운영되는 것으로 가정하여 설명한다.
먼저, 추가되는 데이터 서버1(20a)은 비대칭형 클러스터 파일 시스템으로의 추가 요청을 위한 DS2MDS_REGISTER 요청을 메타데이터 서버(10)에게로 전송한다(S410). 이때, 데이터 서버1(20a)은 데이터 서버 식별자값, 가용 용량 등을 포함하는 DS2MDS_REGISTER 요청(즉, DS2MDS_REGISTER(DS_1))을 전송한다.
메타데이터 서버(10)는 데이터 서버1(20a)로부터 수신한 데이터 서버 식별자값, 가용 용량 등을 포함하는 정보를 저장하여 데이터 서버1(20a)를 비대칭형 클러스터 파일 시스템의 구성으로 추가한다. 메타데이터 서버(10)는 추가 결과를 포함하는 응답을 데이터 서버1(20a)에게로 전송한다(S420).
추가되는 데이터 서버2(20b)는 비대칭형 클러스터 파일 시스템으로의 추가 요청을 위한 DS2MDS_REGISTER 요청을 메타데이터 서버(10)에게로 전송한다(S430). 이때, 데이터 서버2(20b)는 데이터 서버 식별자값, 가용 용량 등을 포함하는 DS2MDS_REGISTER 요청(즉, DS2MDS_REGISTER(DS_2))을 전송한다.
메타데이터 서버(10)는 데이터 서버2(20b)로부터 수신한 데이터 서버 식별자값, 가용 용량 등을 포함하는 정보를 저장하여 데이터 서버2(20b)를 비대칭형 클러스터 파일 시스템의 구성으로 추가한다. 메타데이터 서버(10)는 추가 결과를 포함하는 응답을 데이터 서버2(20b)에게로 전송한다(S440).
비대칭형 클러스터 파일 시스템에 추가된 데이터 서버1(20a)은 현재 데이터 서버의 상태값 등을 포함하는 DS2MDS_REPORT 요청(즉, DS2MDS_REPORT(DS_1_status)를 메타데이터 서버(10)에게로 전송한다(S450).
이때, 데이터 서버1(20a)은 소정 주기 간격으로 상태값을 전송하거나, 비주기적(즉, 특정 이벤트 발생시)으로 상태값을 전송한다.
메타데이터 서버(10)는 수신한 데이터 서버1(20a)의 상태값 등을 기록하고 그 결과 등을 포함하는 응답을 데이터 서버1(20a)에게로 전송한다(S460).
비대칭형 클러스터 파일 시스템에 추가된 데이터 서버2(20b)는 현재 데이터 서버(20)의 상태값 등을 포함하는 DS2MDS_REPORT 요청(즉, DS2MDS_REPORT(DS_2_status)를 메타데이터 서버(10)에게로 전송한다(S470). 이때, 데이터 서버1(20a)은 소정 주기 간격으로 상태값을 전송하거나, 비주기적(즉, 특정 이벤트 발생시)으로 상태값을 전송한다.
메타데이터 서버(10)는 데이터 서버1(20a)으로부터 수신한 상태값 등을 기록하고 그 결과 등을 포함하는 응답을 데이터 서버1(20a)에게로 전송한다(S480). 메타데이터 서버(10)는 데이터 서버(20)의 상태값 등을 참고하여 디바이스 할당이나 데이터 서버 교체 등에 활용하거나 관리자에게 보고할 수 있다.
이하, 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 이하에서는, 데이터 서버의 고장에 대비하여 사전에 파일 접근 정보(디바이스와 파일 레이아웃)를 구성하는 방법, 데이터를 복제한 후 파일 레이아웃을 재구성하는 방법, 그리고 데이터 서버의 고장이 감지되었을 때 파일 접근 정보를 재구성하는 방법, 복제 수준을 만족시키기 위해 데이터를 복구한 후 파일 레이아웃을 재구성하는 방법, 그리고 데이터 서버가 추가되었을 때 데이터 병렬성을 회복하기 위해 파일 접근 정보를 재구성하는 방법에 대한 상세한 설명은 다음과 같다.
먼저, 메타데이터 서버(10)는 클라이언트(40)에게 전달하는 LAYOUT_GET 요청에 대한 응답에 포함된 파일 핸들값 목록을 데이터 서버 다중 경로 방식과 같이 다중화한다. 즉, 메타데이터 서버(10)는 파일 핸들값 목록(filehandle={a_1,a_2,…,a_n})을 다중화한다. 더욱 상세하게는, 메타데이터 서버(10)는 DEVICE_INFO 요청에 대한 응답에 포함하는 디바이스 정보 중 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버(20a, 20b, 20c, 20d)의 주소 목록이 [{DS_1,DS_2},{DS_2, DS_3}, …,{DS_n-1,DS_n}]으로 다중화되어 있는 경우 파일 핸들값 목록도 [{a_1,a_2},{a_2,a_3}, …,{a_n-1,a_n}]으로 다중화한다.
이에 따라, 클라이언트(40)는 해당 데이터 청크가 저장된 각 데이터 서버(20a, 20b, 20c, 20d)에 접근할 때 각 데이터 서버(20a, 20b, 20c, 20d)가 관리하는 파일 핸들값을 사용한다. 즉, 클라이언트(40)가 첫번째 논리적 청크에 접근하고자 하면 논리적 청크 별 데이터 청크가 저장된 각 데이터 서버(20a, 20b, 20c, 20d)의 주소 목록에서 첫번째 논리적 청크가 저장된 다중화된 데이터 서버들({DS_1, DS_2}), 및 파일 핸들값 목록에서는 다중화된 파일 핸들값들({a_1,a_2})을 검출한다. 클라이언트(40)는 검출한 정보들 중에서 임의의 데이터 서버와 해당 데이터 서버에서의 파일 핸들값을 이용하여 데이터 서버에 접근한다. 이때, 클라이언트(40)는 파일 핸들값이 무효한 값(INVALID)인 경우 다른 데이터 서버의 해당 파일 핸들값을 이용하여 데이터 서버에 접근한다.
클라이언트(40)가 파일 A에 대해 쓰기 연산을 수행하고자 하는 경우 다중화된 데이터 서버 목록 중 첫번째 데이터 서버에만 접근하여 쓰기 연산을 수행한다. 이때, 다중화된 데이터 서버 목록 중 쓰기 연산을 수행할 데이터 서버 주소의 인덱스는 클라이언트와 데이터 서버와의 암묵적 규약이므로 임의의 인덱스값으로 정할 수 있으나, 본 실시예에서는 쓰기 연산을 수행할 데이터 서버 주소를 첫번째 인덱스로 정하여 설명한다. 클라이언트(40)는 읽기 연산을 수행하고자 하는 경우 다중화된 데이터 서버들 중 유효한 파일 핸들값을 제공하는 임의의 데이터 서버에 접근하여 읽기 연산을 수행한다. 이를 보장하기 위해, 메타데이터 서버(10)는 특정 데이터 서버의 장애가 감지된 경우 다중화된 데이터 서버 목록들 중 해당 데이터 서버가 첫번째 데이터 서버로 등록된 경우를 검색하여 복제본이 저장된 데이터 서버가 첫번째 데이터 서버가 되도록 변경한다.
도 8 및 도 9는 비대칭형 클러스터 파일 시스템의 데이터 서버의 고장에 대비하여 추가한 다중화된 파일 핸들값 목록과 다중화된 데이터 서버 주소 목록을 메타데이터 서버와 클라이언트에서 사용하는 방법을 설명하기 위한 도면이다.
클라이언트(40)로부터 특정 파일 레이아웃 확인을 위한 LAYOUT_GET 요청을 수신하면(S510; 예), 메타데이터 서버(10)는 해당 파일에 관련된 다중화된 파일 핸들값 목록을 생성한다(S520).
메타데이터 서버(10)는 기생성한 다중화된 파일 핸들값 목록을 클라이언트(40)에게로 전송한다(S530).
클라이언트(40)로부터 특정 디바이스 정보 확인을 위한 DEVICE_INFO 요청을 수신하면(S540; 예), 메타데이터 서버(10)는 해당 디바이스에 관련된 다중화된 데이터 서버 주소 목록을 생성한다(S550).
메타데이터 서버(10)는 기생성한 다중화된 데이터 서버 주소 목록을 클라이언트(40)에게로 전송한다(S560).
클라이언트(40)는 수신한 파일 핸들값 목록 및 데이터 서버 주소 목록을 근거로 타킷 파일에 접근하여 파일 연산을 수행한다(S600). 여기서, 첨부된 도 9를 참조하여 클라이언트(40)의 파일 연산 단계를 더욱 상세하게 설명하면 아래와 같다.
먼저, 클라이언트(40)는 연산 대상이 되는 논리적 청크를 선정한다(S605).
클라이언트(40)는 기선정한 논리적 청크에 해당하는 다중화된 데이터 서버 주소를 획득한다(S610). 이때, 클라이언트(40)는 첫번째 논리적 청크가 저장된 데이터 서버 인덱스(first_stripe_index)값과 스트라입 순서, 및 다중화된 데이터 서버 주소 목록으로부터 다중화된 데이터 서버 주소를 획득한다.
클라이언트(40)는 기선정한 논리적 청크에 해당하는 다중화된 파일 핸들값을 획득한다(S615).
쓰기 연산을 수행하는 경우(S620; 예), 클라이언트(40)는 기획득한 다중화된 데이터 서버 주소 중 첫번째 데이터 서버 주소를 획득한다(S625).
클라이언트(40)는 기획득한 다중화된 파일 핸들값 중 첫번째 파일 핸들값을 획득한다(S630).
클라이언트(40)는 기획득한 데이터 서버 주소 및 파일 핸들값을 이용하여 파일에 대한 쓰기 연산을 수행한다(S635).
읽기 연산을 수행하는 경우(S640; 예), 클라이언트(40)는 다중화된 파일 핸들값 중 유효한 임의의 파일 핸들값을 획득한다(S645).
클라이언트(40)는 다중화된 데이터 서버 주소 중 획득한 파일 핸들값에 해당하는 데이터 서버 주소를 획득한다(S650).
클라이언트(40)는 기획득한 데이터 서버 주소 및 파일 핸들값을 이용하여 파일에 대한 읽기 연산을 수행한다(S655).
이때, 클라이언트(40)가 쓰기 연산(S80)이 아니고 읽기 연산(S84)이 아닌 경우 에러를 보고한다(S660).
이하에서는, 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템에서 파일을 생성하는 방법 및 생성된 파일을 복제하는 방법을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다.
먼저, 비대칭형 클러스터 파일 시스템에서 파일을 생성하는 방법 및 생성된 파일을 복제하는 방법을 간략하게 설명하면 아래와 같다.
클라이언트(40)에 의해 파일 A(50)의 생성이 완료되면, 메타데이터 서버(10)는 기생성된 파일 A(50)의 복제 작업을 수행한다. 이때, 메타데이터 서버(10)는 파일 A(50)에 대해 복제 작업을 복제 수준이 만족할 때까지 반복한다.
그리고, 파일 A(50)의 원본이 저장된 디바이스 식별자값에 포함된 데이터 서버(20a, 20b, 20c, 20d)들은 원본 데이터 청크의 복제를 수행한다.
또한, 메타데이터 서버(10)는 데이터 서버(20)의 장애에 대비하고 클라이언트(40)로부터의 접근 부하를 분산시키기 위해서 원본 데이터 청크와 복제 데이터 청크를 서로 다른 데이터 서버에 저장한다. 즉, 메타데이터 서버(10)는 파일 A(50)의 복제본에 대한 첫번째 논리적 청크가 저장될 데이터 서버 인덱스를 파일 A(50)의 원본에 대한 첫번째 논리적 청크가 저장된 데이터 서버 인덱스(first_stripe_index)와는 다른 임의의 데이터 서버 인덱스를 선정한다. 이를 통해, 메타데이터 서버(10)는 원본 데이터 청크와 복제 데이터 청크가 서로 다른 데이터 서버에 저장되도록 한다.
메타데이터 서버(10)는 복제 수준 1단계부터 복제 수준 N단계까지 지원 가능하도록 현재 메타데이터 서버(10)에 등록된 데이터 서버들(DS_1~DS_n)의 전부 또는 일부를 대상으로 디바이스를 생성하고 식별자를 할당한다. 이때, 복제 수준 1단계는 복제본을 만들지 않는 수준이고, 복제 수준 N단계는 원본 데이터 청크를 포함한 복제본 데이터 청크의 개수가 N개인 수준을 의미한다.
아래 예시는 등록된 모든 데이터 서버들의 전부를 대상으로 복제 수준 1단계부터 복제 수준 N단계까지 지원하는 디바이스를 생성하고 식별자를 할당한 경우이다.
복제 수준 1단계 지원 디바이스 = [{DS_1}, {DS_2}, …, {DS_n}]
복제 수준 2단계 지원 디바이스 = [{DS_1,DS_2}, {DS_2,DS_3}, …, {DS_n,DS_1}]
복제 수준 3단계 지원 디바이스 = [{DS_1,DS_2,DS_3},{DS_2,DS_3,DS_4},…,{DS_n,DS_1,DS_2}]
복제 수준 N단계 지원 디바이스 = [{DS_1,DS_2,…,DS_n},{DS_2,DS_3,…,DS_n,DS_1},…,{DS_n,DS_1,…,DS_n-1}]
메타데이터 서버(10)는 파일별로 요구되는 복제 수준에 따라 서로 다른 디바이스를 해당 파일을 할당하여 관리할 수도 있다.
본 발명에서는 모든 파일에 대해 복제 수준 2단계를 만족하는 경우에 국한하여 설명하며, 이외의 복제 수준도 제시하는 방법과 동일한 방식으로 적용 가능하다.
메타데이터 서버(10)는 복제 수준 2단계를 만족하도록 하기 위해서 등록된 데이터 서버들(DS_1~DS_3)의 전부를 대상으로 아래와 같이 디바이스를 생성하고 식별자값을 할당한다. 이때 다중화된 두번째 데이터 서버의 선정은 다중화된 첫번째 데이터 서버(DS_1,DS_2,DS_3)에서 한 단계씩 오른쪽에 있는 데이터 서버로 하였다.
디바이스 1 = [{DS_1, DS_2}, {DS_2, DS_3}, {DS_3, DS_1}]
논리적 청크의 스트라입 순서(stripeindicies) = {0,1,2}
첫번째 논리적 데이터 청크가 저장된 데이터 서버 인덱스(first_stripe_index) = 2
파일 A = [첫번째 논리적 청크][두번째 논리적 청크][세번째 논리적 청크][네번째 논리적 청크]
도 10 내지 도 12는 비대칭형 클러스터 파일 시스템에서 파일을 생성하는 방법을 설명하기 위한 도면이다. 이하에서는, 4개의 논리적 청크로 구성된 파일 A(50)를 생성하고 기록하는 것을 예로 들어 설명하기로 한다. 먼저, 비대칭형 클러스터 파일 시스템은 3대의 데이터 서버(DS_1, DS_2, DS_3), 메타데이터 서버(10)로 구성되는 것으로 가정한다.
클라이언트(40)는 파일 A(50)을 생성을 위해 OPEN 요청을 메타데이터 서버(10)에게로 전송한다. OPEN 요청을 클라이언트(40)로부터 수신하면(S701; 예), 메타데이터 서버(10)는 파일 A(50)가 존재하지 않으므로 해당 파일을 위한 파일 핸들값과 데이터 서버(20)에서 사용할 파일 이름을 할당한다(S703).
메타데이터 서버(10)는 디바이스 1에 포함된 데이터 서버 목록들 중 다중화된 데이터 서버 목록의 첫번째 데이터 서버들(DS_1, DS_2, DS_3)에게 해당 파일 이름 등을 포함한 MDS2DS_OPEN 요청을 전송한다. MDS2DS_OPEN 요청을 메타데이터 서버(10)로부터 수신하면(S705; 예), 각 데이터 서버(DS_1, DS_2, DS_3)는 메타데이터 서버(10)로부터 전달받은 파일 이름으로 파일을 생성한다(S707).
각 데이터 서버(DS_1, DS_2, DS_3)는 파일을 생성한 후에 해당 파일 핸들값 등을 포함한 응답을 메타데이터 서버(10)에게로 전송한다(S709).
메타데이터 서버(10)는 데이터 서버(DS_1, DS_2, DS_3)들로부터 전달받은 파일 핸들값들을 파일 A(50)를 위해 생성한 파일 핸들값과 연계하여 관리한다(S711). 즉, 메타데이터 서버(10)는 파일 A(50)의 데이터 서버(DS_1, DS_2, DS_3)들에서 유효한 파일 핸들값 목록을 [{a_1, INVALID}, {a_2, INVALID}, {a_3, INVALID}]와 같이 관리한다. 그리고, 메타데이터 서버(10)는 첫번째 논리적 청크가 저장될 데이터 서버 인덱스(first_stripe_index)값을 2로 할당한다. 여기서, 첫번째 데이터 서버 인덱스는 클라이언트(40)의 접근 부하를 잘 분산할 수 있도록 다양한 방법으로 선정할 수 있으며, 가용한 인덱스값 중에서 임의로 선정하는 것이 일반적이다.
메타데이터 서버(10)는 관리하는 파일 A(50)를 위한 파일 핸들값 등을 포함하는 응답을 클라이언트(40)에게로 전송한다(S713).
클라이언트(40)는 파일 A(50)에 대한 쓰기나 읽기 연산을 수행하기 위해서 파일 레이아웃 정보가 필요하다. 따라서, 클라이언트(40)는 파일 A(50)에 레이아웃 정보를 얻기 위해 파일 핸들값 등을 포함하는 LAYOUT_GET 요청을 메타데이터 서버(10)에게로 전송한다. LAYOUT_GET 요청을 클라이언트(40)로부터 수신하면(S715; 예), 메타데이터 서버(10)는 LAYOUT_GET 요청에 포함된 파일 핸들값에 해당하는 디바이스 식별자값(1)과 이에 연계된 데이터 서버(DS_1, DS_2, DS_3)들에서 유효한 파일 핸들값 목록([{a_1, INVALID}, {a_2, INVALID}, {a_3, INVALID}]) 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S717).
클라이언트(40)는 디바이스 식별자값(1)에 대한 상세 정보를 얻기 위해서 해당 식별자값(1) 등을 포함하는 DEVICE_INFO 요청을 메타데이터 서버(10)에게로 전송한다. DEVICE_INFO 요청을 클라이언트(40)로부터 수신하면(S719; 예), 메타데이터 서버(10)는 디바이스 DEVICE_INFO 요청에 포함된 식별자값(1)에 해당하는 디바이스 정보([{DS_1, DS_2}, {DS_2, DS_3}, {DS_3, DS_1}]) 등을 포함하는 응답을 클라이언트(40)에게로 전송한다(S721).
클라이언트(40)는 파일 A(50)의 첫번째 논리적 청크에 해당하는 데이터를 쓰기 위해 디바이스 정보에서 첫번째 데이터 서버 인덱스값(2)에 해당하는 데이터 서버 주소 목록({DS_3,DS_1})을 검출한다(S723).
클라이언트(40)는 쓰기 연산을 수행하므로 검출한 데이터 서버 주소 목록 중에서 첫번째 데이터 서버의 주소(즉, DS_3)를 검출한다(S725).
클라이언트(40)는 해당하는 파일 핸들값 목록({a_3, INVALID})에서 해당 파일 핸들값(a_3)을 검출한다(S727).
클라이언트(40)는 기검출한 데이터 서버의 주소를 통해 데이터 서버(DS_3)에 접근한다. 클라이언트(40)는 접근한 데이터 서버(DS_3)에 저장된 파일들 중에서 기검출한 해당 파일 핸들값을 가진 파일에 쓰기 연산을 수행한다(S729). 이를 위해, 클라이언트(40)는 해당 파일 핸들값과 쓸 데이터 내용 등을 포함하는 WRITE 요청을 해당 데이터 서버에게로 전송한다.
데이터 서버(DS_3)는 클라이언트(40)로부터 전달받은 파일 핸들값(a_3)에 해당하는 파일에 전달받은 데이터 내용을 쓰고 그 결과 등을 포함하는 응답을 클라이언트(40)에게로 전송한다(S731).
이후, 클라이언트(40)는 파일 A(50)의 두번째 논리적 청크에 해당하는 데이터를 쓰기 위해 두번째 데이터 서버 인덱스값(0)에 해당하는 데이터 서버 주소(DS_1) 및 파일 핸들값(a_1)을 검출한다(S733).
클라이언트(40)는 기검출한 데이터 서버의 주소를 통해 데이터 서버(DS_1)에 접근한다. 클라이언트(40)는 접근한 데이터 서버(DS_1)에 저장된 파일들 중에서 기검출한 해당 파일 핸들값을 가진 파일에 쓰기 연산을 수행한다(S735). 이를 위해, 클라이언트(40)는 해당 파일 핸들값과 쓸 데이터 내용 등을 포함하는 WRITE 요청을 해당 데이터 서버에게로 전송한다.
데이터 서버(DS_1)는 클라이언트(40)로부터 전달받은 파일 핸들값(a_1)에 해당하는 파일에 전달받은 데이터 내용을 해당 논리적 청크의 오프셋에 쓰고 그 결과 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S737).
클라이언트(40)는 파일 A(50)의 세번째 논리적 청크에 해당하는 데이터를 쓰기 위해 두번째 데이터 서버 인덱스값(1)에 해당하는 데이터 서버값(DS_2)과 파일 핸들값(a_2)을 검출한다(S739).
클라이언트(40)는 기검출한 데이터 서버의 주소를 통해 데이터 서버(DS_2)에 접근한다. 클라이언트(40)는 접근한 데이터 서버(DS_2)에 저장된 파일들 중에서 기검출한 해당 파일 핸들값을 가진 파일에 쓰기 연산을 수행한다(S741). 이를 위해, 클라이언트(40)는 해당 파일 핸들값과 쓸 데이터 내용 등을 포함하는 WRITE 요청을 해당 데이터 서버에게로 전송한다.
데이터 서버(DS_2)는 클라이언트(40)로부터 전달받은 파일 핸들값(a_2)에 해당하는 파일에 전달받은 데이터 내용을 해당 논리적 청크의 오프셋에 쓰고 그 결과 등을 포함하는 응답을 클라이언트(40)에게 보낸다(S743).
클라이언트(40)는 파일 A(50)에 대한 쓰기 연산이 완료되면 LAYOUT_COMMIT 요청과 CLOSE 요청을 메타데이터 서버(10)에게로 전송한다(S745).
메타데이터 서버(10)는 해당 요청을 처리하고 그에 대한 응답을 클라이언트(40)에게로 전송한다(S747).
도 13은 비대칭형 클러스터 파일 시스템에서 생성된 파일을 복제하는 방법을 설명하기 위한 도면이다. 이하에서는 기생성된 파일 A를 복제수준 2단계로 만족시키기 위해 파일 A를 복제하는 방법을 예로 들어 설명하기로 한다.
기생성된 파일 A(50)의 복제 수준이 1단계이면(S805), 메타데이터 서버(10)는 파일 A(50)에 대한 복제 수준 2단계를 만족시키기 위해서 파일 A(50)에 대한 복제 작업을 시작한다. 이를 위해, 메타데이터 서버(10)는 파일 A(50)가 저장된 디바이스 정보([{DS_1, DS_2}, {DS_2, DS_3}, {DS_3, DS_1}])에서 첫번째 데이터 서버 인덱스값(2)에 해당하는 다중화된 데이터 서버 주소({DS_3, DS_1})를 검출한다(S810).
해당 데이터 서버 주소 목록({DS_3, DS_1})의 첫번째 데이터 서버(DS_3)에 데이터 청크들이 저장되어 있으므로, 메타데이터 서버(10)는 소스 데이터 서버, 타깃 데이터 서버, 복제한 파일 이름, 복제한 데이터 청크의 인덱스 목록을 포함하는 MDS2DS_COPY 요청을 데이터 서버에게로 전송한다(S815). 이때, 메타데이터 서버(10)는 DS_3 데이터 서버를 소스 데이터 서버로, DS_1 데이터 서버를 타깃 데이터 서버로 결정하고, 소스 데이터 서버의 정보(DS_3)와 타깃 데이터 서버의 정보(DS_1), 복제할 파일 이름(a_0), 복제할 데이터 청크의 인덱스 목록(0,3) 등을 포함하는 MDS2DS_COPY 요청을 데이터 서버에게로 전송한다. 여기서, 소스 데이터 서버에 저장된 데이터 청크의 인덱스 목록(0,3)은 파일 A(50)의 크기(4개의 청크)와 논리적 청크의 스트라입 순서({0,1,2})의 크기(3), 그리고 첫번째 데이터 서버 인덱스(2)를 통해 쉽게 알아낼 수 있다.
소스 데이터 서버(DS_3)와 타깃 데이터 서버(DS_1)는 메타데이터 서버(10)로부터 전달받은 파일 이름(a_0)에 해당하는 파일 핸들값 등을 포함하는 응답을 메타데이터 서버(10)에게로 전송한다(S820).
이후, 소스 데이터 서버(DS_3)와 타깃 데이터 서버(DS_1)는 앞서 설명한 바와 같이 DS2DS_OPEN 요청과 응답, DS2DS_WRITE 요청과 응답, DS2DS_CLOSE 요청과 응답을 주고 받는다(S825).
그러면 소스 데이터 서버(DS_3)에 저장된 파일 A(50)에 대한 데이터가 저장된 파일(a_0)의 첫번째 논리적 청크의 데이터 청크와 네번째 청크의 데이터 청크가 타깃 데이터 서버(DS_1)에 복제가 완료된다(S830).
소스 데이터 서버(DS_3)와 타깃 데이터 서버(DS_1)는 복제 성공 여부 등을 메타데이터 서버(10)에게 알리기 위해서 DS2MDS_COPY_DONE 요청을 메타데이터 서버(10)에게로 전송한다(S835).
소스 데이터 서버(DS_3)와 타깃 데이터 서버(DS_1)에게서 DS2MDS_COPY_DONE 요청을 모두 수신하면(S840; 예), 메타데이터 서버(10)는 파일 A(50)에 대한 파일 핸들값 목록을 갱신한다(S845). 즉, 파일 A(50)에 대한 파일 핸들값 목록은 [{a_1, INVALID}, {a_2, INVALID}, {a_3, a_1}]이 된다.
이후, 디바이스 정보의 나머지 데이터 서버 목록인 {DS_1,DS_2}와 {DS_2, DS_3}에 대해서도 마찬가지 방식으로 복제 작업을 진행한다. 즉, 파일 A(50)에 대한 파일 핸들값 목록은 [{a_1, a_2}, {a_2, a_3}, {a_3, a_1}]이 된다.
또한, 상기 설명한 디바이스 정보에 포함된 각 다중화된 데이터 서버 별로 첫번째 데이터 서버에 저장된 모든 데이터 청크를 복제하는 방식뿐 아니라 첫번째 논리적 청크부터 마지막 논리적 청크까지 각 데이터 청크 단위별로 순차적으로 복제하는 방식도 가능하다.
그리고, 메타데이터 서버(10)가 파일 A(50)에 대한 복제 작업을 진행하는 도중 클라이언트(40)가 파일 A(50)를 읽기 위해 파일 레이아웃 정보 등을 요청하는 경우 당시까지 갱신된 파일 핸들값 목록을 전달할 수 있다.
이하에서는 특정 디바이스에 포함된 데이터 서버의 장애가 발생하여 메타데이터 서버가 이를 감지하는 경우 메타데이터 서버의 동작 절차에 대해서 설명하면 다음과 같다. 도 14 및 도 15는 특정 디바이스 포함된 데이터 서버의 장애가 발생하여 메타데이터 서버가 이를 감지하는 경우 메타데이터 서버의 동작 절차를 설명하기 위한 도면이다. 참고로 임의의 데이터 서버에 대한 장애는 HEARTBEAT 방식 등을 통해 메타데이터 서버가 감지할 수 있다.
메타데이터 서버(10)는 고장이 발생한 데이터 서버를 포함하는 디바이스들에 대한 파일 레이아웃 정보를 갱신한다. 즉, 메타데이터 서버(10)는 고장이 발생한 데이터 서버가 포함된 디바이스들에 포함된 파일들에 대해 파일 레이아웃 정보를 갱신한다. 이때, 메타데이터 서버(10)는 고장이 발생한 데이터 서버를 제거한 새로운 디바이스를 할당한다.
메타데이터 서버(10)는 기할당한 새로운 디바이스 정보를 기준으로, 해당 디바이스 내의 또 다른 데이터 서버의 장애를 대비하기 위해 복제 수준을 만족시키기 위한 복제 과정을 진행한다.
이를 첨부된 도 14 및 도 15를 참조하여 더욱 상세하게 설명하면 아래와 같다.
먼저, 데이터 서버1(DS_1) 내지 데이터 서버3(DS_3)을 포함하여 구성되며, 메타데이터 서버(10)는 디바이스1에 대해 [{DS_1,DS_2},{DS_2,DS_3},{DS_3,DS_1}]으로 설정된 디바이스 정보를 저장한다. 메타데이터 서버(10)는 파일 A(50)에 대해 [{a_1,a_2},{a_2,a_3},{a_3,a_1}]으로 설정된 파일 핸들값 목록을 저장하고 있는 것으로 가정한다.
메타데이터 서버(10)는 데이터 서버(DS_1, DS_2, DS_3)들의 장애발생 여부를 감지한다. 이때, 데이터 서버2(DS_2)에서 장애가 발생하면(S905; 예), 메타데이터 서버(10)는 데이터 서버2(DS_2)가 포함된 디바이스 1에서 데이터 서버2(DS_2)를 제거한다(S910). 그에 따라, 메타데이터 서버(10)는 디바이스1에 저장된 디바이스 정보를 [{DS_1,INVALID}, {INVALID,DS_3}, {DS_3,DS_1}]로 갱신한다.
메타데이터 서버(10)는 클라이언트(40)의 파일 A(50)에 대한 쓰기 연산에 대비하기 위해서 디바이스 정보 중 다중화된 데이터 서버 목록에서 첫번째 데이터 서버값이 무효한 값(INVALID)인 경우 유효한 값인 두번째 데이터 서버값을 첫번째 데이터 서버값으로 승진시킨다(S915). 그에 따라, 디바이스1에 저장된 디바이스 정보는 [{DS_1, INVALID}, {DS_3,INVALID}, {DS_3,DS_1}]가 된다.
메타데이터 서버(10)는 파일 핸들값 목록 중 다중화된 파일 핸들값에서 첫번째 파일 핸들값이 무효한 값(INVALID)인 경우 유효한 값인 두번째 파일 핸들값을 첫번째 파일 핸들값으로 승진시킨다(S920). 그에 따라, 파일 A(50)의 파일 핸들값 목록은 [{a_1,INVALID}, {a_3,INVALID}, {a_3,a_1}]가 된다.
복제 수준 단계를 2단계로 만족시키기 위해서 디바이스 정보를 갱신하고 새로운 디바이스 식별자값을 할당한다. 즉, 메타데이터 서버(10)는 다중화된 데이터 서버 주소의 첫번째 데이터 서버 주소값들 중에서 중복된 데이터 서버 주소값을 제거한다(S925). 즉, 다중화된 데이터 서버 주소의 첫번째 데이터 서버 주소값들이 {DS_1, DS_3, DS_3}이다. 여기서, 중복된 데이터 서버 주소값을 제거하면 {DS_1,DS_3}가 된다.
메타데이터 서버(10)는 중복값이 제거된 데이터 서버 주소들을 근거로 두번째 데이터 서버값을 갱신한다(S930). 즉, 메타데이터 서버(10)는 중복값이 제거된 데이터 서버 주소값인 {DS_1,DS_3}을 기준으로 초기 디바이스 생성과 같은 방식으로 한 단계씩 오른쪽에 있는 데이터 서버값들로 다중화된 두번째 데이터 서버값이 무효한 값인 경우만 대체한다. 그에 따라, 디바이스 정보는 [{DS_1,DS_3}, {DS_3,DS_1}, {DS_3,DS_1}]이 된다.
메타데이터 서버(10)는 새로운 디바이스 식별자값을 할당한다(S935). 즉, 복제 수준 2단계를 만족시킬 수 있는 디바이스 정보가 완성되었으므로, 메타데이터 서버(10)는 새로운 디바이스 식별자값(2)을 할당한다. 메타데이터 서버(10)는 해당 파일(즉, 파일 A(50))이 디바이스 2에 포함되어 있음을 기록한다.
이후, 클라이언트(40)는 파일 A(50)에 대한 쓰기나 읽기 연산을 수행하고자 하는 경우 LAYOUT_GET 요청을 메타데이터 서버(10)에게로 전송한다. LAYOUT_GET 요청을 클라이언트(40)로부터 수신하면(S940; 예), 메타데이터 서버(10)는 해당 디바이스의 식별자값(2)과 파일 핸들값 목록([{a_1,INVALID},{a_3,INVALID},{a_3,a_1}]) 을 포함하는 응답을 클라이언트(40)에게로 전송한다(S945). 이때, 메타데이터 서버(10)는 식별자값 '2'와 파일 핸들값 목록 [{a_1,INVALID}, {a_3,INVALID}, {a_3,a_1}]을 포함하는 응답을 클라이언트(40)에게로 전송한다.
클라이언트(40)는 디바이스 2에 대한 디바이스 정보가 없기 때문에 디바이스 식별자값(2)을 포함하는 DEVICE_INFO 요청을 메타데이터 서버(10)에게로 전송한다(S950).
메타데이터 서버(10)는 DEVICE_INFO 요청에 따라 디바이스 2의 정보를 포함하는 응답을 클라이언트(40)에게로 전송한다(S955). 이때, 메타데이터 서버(10)는 디바이스 2의 정보인 [{DS_1,DS_3},{DS_3,DS_1},{DS_3,DS_1}] 등을 포함하는 응답을 클라이언트(40)에게로 전송한다.
클라이언트(40)는 파일 A(50)에 대해 전달받은 새로운 정보를 바탕으로 해당 데이터 서버에 접근하여 쓰기나 읽기 연산을 수행한다(S960).
이후, 메타데이터 서버(10)는 새로운 디바이스 정보를 기준으로, 해당 디바이스 내의 또 다른 데이터 서버의 장애를 대비하기 위해서 복제가 필요한 다중화된 데이터 서버들에 대해서만 앞서 설명한 복제 과정을 진행한다(S965).
도 16은 본 발명의 실시예에 따른 비대칭형 클러스터 파일 시스템에서 데이터 서버의 장애가 발생한 후 새로운 데이터 서버가 추가되었을 때 디바이스 정보와 파일 레이아웃 정보를 갱신하는 방법을 설명하기 위한 도면이다. 즉, 도 16에서는 새로운 데이터 서버가 등록되었을 때 장애가 발생한 데이터 서버로 인해 데이터 서버가 줄어든 특정 디바이스의 복구 과정을 살펴보면 다음과 같다. 이때, 상기한 디바이스가 더 이상 존재하지 않는다면 기존 데이터 서버들과 새로 등록한 데이터 서버를 묶어서 새로운 디바이스로 정의하고 이후 생성되는 파일에 대해서 새로운 디바이스를 할당할 수 있다. 새로운 데이터 서버의 등록에 따른 상기 복구 과정의 적용 여부는 사용자 정책에 따라 달라질 수 있다.
먼저, 비대칭형 클러스터 파일 시스템은 데이터 서버1(DS_1) 내지 데이터 서버3(DS_3)을 포함하며, 데이터 서버2(DS_2)에서 장애가 발생한 것으로 가정한다. 또한, 디바이스2는 데이터 서버2(DS_2)의 장애로 인해 데이터 서버 수가 줄어든 것으로 가정한다.
새로운 데이터 서버4(DS_4)가 등록되면(S1005; 예), 메타데이터 서버(10)는 검색을 통해 데이터 서버2의 장애로 인해 데이터 서버 수가 줄어든 디바이스2를 검출한다(S1010). 이때, 디바이스2의 정보는 [{DS_1,DS_3},{DS_3,DS_1},{DS_3,DS_1}]인 것으로 가정한다.
메타데이터 서버(10)는 기검출한 디바이스2의 다중화된 데이터 서버 주소 목록의 첫번째 데이터 서버 주소값들({DS1,DS_3,DS_3})을 검출한다(S1015).
메타데이터 서버(10)는 검출한 첫번째 데이터 서버 주소값들({DS1,DS_3,DS_3})에서 중복되는 데이터 서버 주소값을 검출한다(S1020). 즉, 메타데이터 서버(10)는 데이터 서버 주소값이 중복된 두번째 및 세번째 데이터 서버 주소값들을 검출한다.
메타데이터 서버(10)는 검출한 중복 주소값들 중에서 첫번째 데이터 서버 주소값을 추가된 데이터 서버4(즉, DS_4)로 대체한다(S1025). 즉, 새로운 첫번째 데이터 서버 주소값들은 {DS_1,DS_4,DS_3}이 된다. 물론, 메타데이터 서버(10)는 두번째 데이터 서버 주소값을 데이터 서버4(즉, DS_4)로 대체하여, 첫번째 데이터 서버 주소값들을 {DS_1,DS_3,DS_4}으로 대체할 수도 있다.
메타데이터 서버(10)는 대체한 첫번째 주소값들을 기준으로 한 단계씩 오른쪽에 있는 데이터 서버 주소값들로 다중화된 두번째 데이터 서버 주소값을 설정한다(S1030). 즉, 메타데이터 서버(10)는 초기 디바이스 생성과 같은 방식으로 한 단계씩 오른쪽에 있는 데이터 서버 주소값들로 다중화된 두번째 데이터 서버 주소값을 정한다. 그에 따라, 디바이스 정보는 [{DS_1,DS_4},{DS_4,DS_3},{DS_3,DS_1}]이 된다.
메타데이터 서버(10)는 복제 수준 2단계를 만족시킬 수 있는 디바이스 정보가 완성되었으므로 새로운 디바이스 식별자값(3)을 할당한다(S1035).
메타데이터 서버(10)는 새로운 데이터 서버 주소가 포함된 다중화된 데이터 서버에 대해서 복제 작업을 진행한다(S1040). 즉, 메타데이터 서버(10)는 데이터 서버1(DS_1)의 첫번째와 네번째 논리적 청크에 대한 데이터 청크들을 데이터 서버4(DS_4)로 복제한다. 메타데이터 서버(10)는 데이터 서버3(DS_3)의 두번째 논리적 청크에 대한 데이터 청크를 데이터 서버3(DS_4)로 복제한다. 이때, 복제본 파일(a_0)에 대한 데이터 서버4(DS_4)에서의 파일 핸들값(a_4)은 MDS2DS_COPY 요청에 대한 응답을 통해서 얻을 수 있다.
데이터 서버4(DS_4)로의 복제가 완료되면(S1045; 예), 메타데이터 서버(10)는 해당 파일 A(50)의 파일 레이아웃 정보를 갱신한다(S1050). 이때, 메타데이터 서버(10)는 해당 파일(A)이 디바이스 3에 포함되어 있음을 기록한다. 그에 따라, 파일 레이아웃 정보는 [{a_1,a_4},{a_4,a_3},{a_3,a_1}]이 된다.
클라이언트(40)는 상기와 같이 새롭게 갱신된 정보를 쓰기나 읽기 연산을 수행한다(S1055).
상술한 바와 같이, 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은 데이터 분산 패턴이 고정된 비대칭 클러스터 파일 시스템에 포함된 임의의 데이터 서버에서 고장이 발생하더라도 데이터가 다른 데이터 서버에 존재하기 때문에 데이터의 고가용성이 증대되며, 새로운 데이터 서버를 추가하면 기존 데이터 서버의 장애로 인해 감소한 데이터 병렬성을 다시 원상 회복할 수 있는 효과가 있다.
또한, 비대칭형 클러스터 파일 시스템의 데이터 관리 방법은 일반적인 사용자들에게 가장 친숙한 파일 기반의 환경을 제공하는 파일 레이아웃 방식을 적용한 네트워크 파일 시스템(NFS)의 버전 4.1 프로토콜을 지원하는 비대칭 클러스터 파일 시스템에서 프로토콜을 준수하면서 데이터 서버의 장애에 대비할 수 있으면서도, 새로운 데이터 서버를 추가하면 기존 데이터 서버의 장애로 감소한 데이터 병렬성도 회복할 수 있는 효과가 있다.
이상에서 본 발명에 따른 바람직한 실시예에 대해 설명하였으나, 다양한 형태로 변형이 가능하며, 본 기술분야에서 통상의 지식을 가진자라면 본 발명의 특허청구범위를 벗어남이 없이 다양한 변형예 및 수정예를 실시할 수 있을 것으로 이해된다.
10: 메타데이터 서버 20: 데이터 서버
30: 네트워크 40: 클라이언트
50: 파일 A

Claims (20)

  1. 메타데이터 서버에 의해, 존재하지 않은 파일에 대한 파일 오픈 요청을 수신하면, 파일 핸들값 및 파일 이름을 할당하여 데이터 서버에 파일을 생성하는 단계;
    상기 메타데이터 서버에 의해, 기설정된 복제 수준을 근거로 데이터 서버에 저장된 파일 또는 상기 생성되는 파일을 다른 데이터 서버에 복제하는 단계; 및
    클라이언트에 의해, 상기 데이터 서버들에 저장된 파일들에 대한 파일 작업을 수행하는 단계를 포함하고,
    상기 파일을 생성하는 단계는,
    파일을 생성한 데이터 서버들에 의해, 상기 생성한 파일의 파일 핸들값을 포함하는 응답을 상기 메타데이터 서버에게로 전송하는 단계; 및
    상기 메타데이터 서버에 의해, 복수의 데이터 서버들로부터 수신한 응답에 포함된 파일 핸들값들을 상기 할당한 파일 핸들값과 연계하여 관리하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  2. 청구항 1에 있어서,
    상기 클라이언트로부터 OPEN 요청을 수신한 메타데이터 서버에 의해, 상기 OPEN 요청에 해당하는 파일이 메타데이터 서버 및 데이터 서버에 존재하지 않으면 파일의 파일 핸들값 및 파일 이름을 할당하는 단계;
    상기 메타데이터 서버에 의해, 상기 할당한 파일 이름을 포함하는 MDS2DS_OPEN 요청을 복수의 데이터 서버들에게 전송하는 단계; 및
    상기 MDS2DS_OPEN 요청을 수신한 데이터 서버에 의해, 상기 MDS2DS_OPEN 요청에 포함된 파일 이름으로 파일을 생성하는 단계를 더 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  3. 삭제
  4. 청구항 2에 있어서,
    상기 다른 데이터 서버에 복제하는 단계는,
    상기 메타데이터 서버에 의해, 복제 대상 파일이 저장된 디바이스 정보들 중에서 쓰기 연산이 수행된 n번째 데이터 서버 인덱스값에 해당하는 다중화된 데이터 서버 주소를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 다중화된 데이터 서버 주소를 근거로 설정한 소스 데이터 서버 및 타깃 데이터 서버에게로 소스 데이터 서버, 타깃 데이터 서버, 복제할 파일 이름, 복제할 데이터 청크의 인덱스 목록을 포함하는 MDS2DS_COPY 요청을 전송하는 단계;
    상기 MDS2DS_COPY 요청을 수신한 소스 데이터 서버 및 타깃 데이터 서버에 의해, 상기 MDS2DS_COPY 요청에 포함된 이름에 해당하는 핸들값을 포함하는 응답을 상기 메타데이터 서버에게로 전송하는 단계;
    상기 소스 데이터 서버 및 타깃 데이터 서버에 의해, 상기 소스 데이터 서버에 저장된 파일을 상기 타깃 데이터 서버에 복제하는 단계;
    상기 소스 데이터 서버 및 타깃 데이터 서버에 의해, 파일의 복제 성공 여부를 포함하는 DS2MDS_COPY_DONE 요청을 상기 메타데이터 서버에게로 전송하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 복제된 파일에 대한 파일 핸들값 목록을 갱신하는 단계를 더 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  5. 청구항 4에 있어서,
    상기 다중화된 데이터 서버 주소를 검출하는 단계는,
    상기 메타데이터 서버에 의해, 복제 수준을 만족하지 않는 파일을 검출하는 단계;
    상기 메타데이터 서버에 의해, 기검출한 파일이 저장된 디바이스를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 파일의 파일 핸들값 목록을 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 디바이스에 포함된 다중화된 데이터 서버 주소를 검출하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 검출한 다중화된 데이터 서버 주소에 해당하는 다중화된 파일 핸들값을 검출하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  6. 청구항 4에 있어서,
    상기 MDS2DS_COPY 요청을 전송하는 단계는,
    상기 메타데이터 서버에 의해, 상기 검출한 다중화된 파일 핸들값들 중에서 유효한 파일 핸들값에 해당하는 데이터 서버를 소스 데이터 서버로 설정하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 검출한 다중화된 파일 핸들값들 중에서 무효한 파일 핸들값에 해당하는 데이터 서버를 타깃 데이터 서버로 설정하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  7. 청구항 1에 있어서,
    상기 파일 작업을 수행하는 단계는,
    상기 클라이언트에 의해, 상기 메타데이터 서버로부터 다중화된 파일 핸들값 목록 및 다중화된 데이터 서버 주소를 수신하는 단계;
    상기 클라이언트에 의해, 연산 대상으로 선정된 논리적 청크에 해당하는 다중화된 데이터 서버 주소 및 다중화된 파일 핸들값 목록을 검출하는 단계;
    상기 클라이언트에 의해, 상기 검출한 다중화된 데이터 서버 주소 및 다중화된 파일 핸들값 목록을 근거로 파일에 대한 연산을 수행하는 단계를 포함하되,
    상기 연산을 수행하는 단계에서는,
    상기 클라이언트에 의해, 쓰기 연산이면 상기 검출한 다중화된 데이터 서버 주소 목록 중에서 쓰기 연산을 수행할 n번째 데이터 서버 주소와, 상기 검출한 다중화된 파일 핸들값 목록 중에서 n번째 파일 핸들값을 검출하고,
    상기 클라이언트에 의해, 읽기 연산이면 상기 검출한 다중화된 파일 핸들값 목록 중에서 유효한 파일 핸들값을 검출하고, 상기 검출한 유효한 파일 핸들값에 해당하는 데이터 서버 주소를 검출하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  8. 청구항 1에 있어서,
    상기 메타데이터 서버에 의해, 클라이언트로부터의 파일 삭제 요청에 따라 데이터 서버에 저장된 파일을 삭제하는 단계를 더 포함하되,
    상기 파일을 삭제하는 단계는,
    상기 메타데이터 서버에 의해, 클라이언트로부터 수신한 REMOVE 요청으로부터 파일 이름을 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 파일 이름에 해당하는 각 데이터 서버에서의 파일 이름을 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 각 데이터 서버에서의 파일 이름을 포함하는 MDS2DS_REMOVE 요청을 각 데이터 서버에게로 전송하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 각 데이터 서버로부터 수신한 파일 삭제 결과들을 종합하여 최종 결과를 포함하는 응답을 상기 클라이언트에게로 전송하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  9. 청구항 1에 있어서,
    소스 데이터 서버에 저장된 복제 대상 파일을 타깃 데이터 서버에 복사하는 단계를 더 포함하되,
    상기 복제 대상 파일을 타깃 데이터 서버에 복사하는 단계는,
    상기 메타데이터 서버에 의해, 소스 데이터 서버 및 타킷 데이터 서버에게로 소스 데이터 서버 정보, 타깃 데이터 서버 정보, 복제 파일 이름, 복제할 데이터 청크의 인덱스 목록을 포함하는 MDS2COPY 요청을 전송하는 단계;
    MDS2COPY 요청을 수신한 소스 데이터 서버 및 타깃 데이터 서버에 의해, 상기 메타데이터 서버에게로 복제 대상 파일의 데이터 서버에서의 파일 핸들값을 포함하는 응답을 전송하는 단계;
    상기 소스 데이터 서버에 의해, 상기 타깃 데이터 서버에게로 복제 대상 파일의 이름을 포함하는 DS2DS_OPEN 요청을 전송하는 단계;
    상기 DS2DS_OPEN 요청을 수신한 타깃 데이터 서버에 의해, DS2DS_OPEN 요청에 포함된 복제 대상 파일 이름에 해당하는 파일을 열고 해당 파일의 파일 핸들값을 포함하는 응답을 상기 소스 데이터 서버에게로 전송하는 단계;
    응답을 수신한 상기 소스 데이터 서버에 의해, 상기 타깃 데이터 서버로부터 수신한 파일 핸들값과 복제 대상 데이터 청크의 인덱스 목록에 해당하는 각 데이터 청크의 내용을 포함하는 DS2DS_WRITE 요청을 타깃 데이터 서버에게로 전송하는 단계;
    DS2DS_WRITE 요청을 수신한 상기 타깃 데이터 서버에 의해, DS2DS_WRITE 요청에 포함된 파일 핸들값에 해당하는 파일에 DS2DS_WRITE 요청에 포함된 각 데이터 청크의 내용을 저장하는 단계;
    상기 타깃 데이터 서버에 의해, 상기 각 데이터 청크의 내용 저장 결과를 상기 소스 데이터 서버에게로 전송하는 단계;
    상기 소스 데이터 서버에 의해, 상기 소스 데이터 서버 및 상기 타깃 데이터 서버에서의 파일 핸들값들을 포함하는 데이터 청크의 복제 완료 신호를 메타데이터 서버에게로 전송하는 단계; 및
    복제 완료 신호를 수신한 상기 메타데이터 서버에 의해, 상기 소스 데이터 서버 및 타깃 데이터 서버에게로 응답을 전송하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  10. 청구항 1에 있어서,
    상기 메타데이터 서버에 의해, 비대칭형 클러스터 파일 시스템에 데이터 서버를 추가하는 단계를 더 포함하되,
    상기 데이터 서버를 추가하는 단계는,
    추가되는 데이터 서버에 의해, 데이터 서버 식별자값, 가용 용량을 포함하는 등록 요청 신호를 전송하는 단계;
    상기 등록 요청 신호를 수신한 메타데이터 서버에 의해, 상기 등록 요청 신호에 포함된 데이터 서버 식별자값, 가용 용량을 저장하고 저장결과를 전송하는 단계;
    상기 저장결과를 수신한 추가되는 데이터 서버에 의해, 현재 데이터 서버의 상태값을 포함하는 DS2MDS_REPORT 신호를 전송하는 단계;
    상기 DS2MDS_REPORT 신호를 수신한 메타데이터 서버에 의해, 상기 DS2MDS_REPORT 신호에 포함된 상태값을 저장하는 단계; 및
    DS2MDS_REPORT 신호를 수신한 메타데이터 서버에 의해 추가되는 데이터 서버에게로 응답을 전송하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  11. 청구항 1에 있어서,
    상기 메타데이터 서버에 의해, 데이터 서버에 신규 파일을 생성하는 단계를 더 포함하되,
    상기 파일을 생성하는 단계는,
    클라이언트로부터 OPEN 요청을 수신한 상기 메타데이터 서버에 의해, 상기 신규 파일의 파일 핸들값 및 데이터 서버에서 사용될 파일 이름을 할당하는 단계;
    상기 메타데이터 서버에 의해, 디바이스에 포함된 데이터 서버 목록들 중 다중화된 데이터 서버 목록의 n번째 데이터 서버들에게 상기 할당된 파일 이름을 포함하는 MDS2DS_OPEN 요청을 전송하는 단계;
    상기 MDS2DS_OPEN 요청을 수신한 각 데이터 서버들에 의해, 상기 MDS2DS_OPEN 요청에 포함된 파일 이름으로 파일을 생성하는 단계;
    상기 각 데이터 서버들에 의해, 상기 생성한 파일의 파일 핸들값을 메타데이터 서버에게로 전송하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 수신한 파일 핸들값들과 상기 생성한 파일 핸들값들을 연계하여 관리하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 데이터 관리 방법.
  12. 메타데이터 서버에 의해, 복수의 데이터 서버들 중에서 장애가 발생한 데이터 서버를 감지하는 단계;
    상기 메타데이터 서버에 의해, 장애가 발생한 데이터 서버를 포함하는 다중화된 데이터 서버 주소를 갱신하는 단계;
    상기 메타데이터 서버에 의해, 장애가 발생한 데이터 서버를 포함하는 다중화된 파일 핸들값 목록을 갱신하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 갱신된 다중화된 데이터 서버 주소 및 상기 다중화된 파일 핸들값 목록을 근거로 디바이스 정보를 갱신하는 단계를 포함하고,
    상기 다중화된 데이터 서버 주소를 갱신하는 단계는,
    상기 메타데이터 서버에 의해, 장애 발생으로 감지된 데이터 서버가 포함된 디바이스를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 디바이스의 디바이스 정보 중에서 상기 검출한 데이터 서버의 주소가 포함된 다중화된 데이터 서버 주소를 검출하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 검출된 다중화된 데이터 서버 주소 중에서 상기 검출한 데이터 서버의 주소를 무효한 값으로 갱신하는 는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  13. 삭제
  14. 청구항 12에 있어서,
    상기 다중화된 파일 핸들값 목록을 갱신하는 단계는,
    상기 메타데이터 서버에 의해, 장애 발생으로 감지된 데이터 서버가 포함된 디바이스를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 디바이스의 디바이스 정보 중에서 상기 검출한 데이터 서버의 파일 핸들값이 포함된 다중화된 파일 핸들값 목록을 검출하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 검출된 다중화된 파일 핸들값 목록 중에서 상기 검출한 데이터 서버에 해당하는 파일 핸들값을 무효한 값으로 갱신하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  15. 청구항 12에 있어서,
    상기 디바이스 정보를 갱신하는 단계는,
    상기 메타데이터 서버에 의해, 상기 다중화된 데이터 서버 주소 중에서 쓰기 연산이 수행될 n번째 값이 무효한 값으로 갱신된 다중화된 데이터 서버 주소 중 유효한 값을 n번째 값과 교환하여 디바이스 정보를 재구성하는 단계;
    상기 메타데이터 서버에 의해, 상기 다중화된 파일 핸들값 목록 중에서 n번째 값이 무효한 값으로 갱신된 다중화된 파일 핸들값 중 유효한 값을 n번째 값과 교환하여 디바이스 정보를 재구성하는 단계;
    상기 메타데이터 서버에 의해, 상기 재구성된 디바이스 정보의 디바이스 식별자값을 할당하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 할당된 디바이스 식별자값에 해당하는 디바이스를 포함하는 각 파일의 디바이스 식별자값을 상기 할당된 디바이스 식별자값으로 갱신하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  16. 청구항 12에 있어서,
    상기 메타데이터 서버에 의해, 추가되는 데이터 서버를 근거로 디바이스 정보를 갱신하는 단계를 더 포함하되,
    상기 추가되는 데이터 서버를 근거로 디바이스 정보를 갱신하는 단계는
    상기 메타데이터 서버에 의해, 데이터 서버의 추가 여부를 감지하는 단계;
    상기 메타데이터 서버에 의해, 데이터 서버의 장애 발생으로 데이터 서버가 감소한 디바이스를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 디바이스의 디바이스 정보에 포함된 다중화된 데이터 서버 목록 중 쓰기 연산이 수행될 n번째 데이터 서버 주소값들을 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 n번째 데이터 서버 주소값들 중에서 중복된 데이터 서버 주소값을 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 중복된 데이터 서버 주소값 중 n번째 데이터 서버 주소값을 상기 추가된 데이터 서버의 데이터 서버 주소값으로 대체하는 단계;
    상기 메타데이터 서버에 의해, 상기 대체된 n번째 데이터 서버 주소값들을 근거로 다중화된 데이터 서버 목록의 n+1번째 데이터 서버 주소값을 재구성하는 단계; 및
    상기 메타데이터 서버에 의해, 재구성된 디바이스 정보의 디바이스 식별자를 할당하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  17. 청구항 16에 있어서,
    상기 n+1번째 데이터 서버 주소값을 재구성하는 단계에서는,
    상기 메타데이터 서버에 의해, 대체된 n번째 데이터 서버 주소값들을 기준으로 한단계 오른쪽의 데이터 서버 주소값을 n+1번째 데이터 서버 주소값으로 재구성하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  18. 청구항 16에 있어서,
    상기 메타데이터 서버에 의해, 상기 갱신된 디바이스 정보를 근거로 추가된 데이터 서버에 파일을 복제하는 단계를 더 포함하되,
    상기 메타데이터 서버에 의해, 상기 추가된 데이터 서버의 데이터 서버 주소가 포함된 다중화된 데이터 서버를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 검출한 다중화된 데이터 서버 중에서 하나의 데이터 서버를 소스 데이터 서버로 설정하는 단계;
    상기 메타데이터 서버에 의해, 상기 추가된 데이터 서버를 타깃 데이터 서버로 설정하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 소스 데이터 서버에 저장된 파일을 상기 타깃 데이터 서버로 복제하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  19. 청구항 18에 있어서,
    상기 저장된 파일을 상기 타깃 데이터 서버로 복제하는 단계는,
    상기 메타데이터 서버에 의해, 상기 설정된 소스 데이터 서버에서 관리하는 파일의 논리적 청크를 검출하는 단계;
    상기 메타데이터 서버에 의해, 상기 소스 데이터 서버 및 타깃 데이터 서버에게로 상기 검출한 논리적 청크에 해당하는 데이터 청크의 복제 요청을 전송하는 단계;
    상기 메타데이터 서버에 의해, 상기 타깃 데이터 서버로부터 수신한 상기 복제 요청에 대한 응답으로부터 추가된 데이터 서버에 해당하는 파일 핸들값을 검출하는 단계; 및
    상기 메타데이터 서버에 의해, 상기 파일의 파일 레이아웃 정보 중에서 상기 추가된 데이터 서버에 해당하는 파일 핸들값을 상기 검출한 파일 핸들값으로 갱신하는 단계를 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
  20. 청구항 19에 있어서,
    상기 저장된 파일을 상기 타깃 데이터 서버로 복제하는 단계는,
    상기 메타데이터 서버에 의해, 상기 복제된 파일의 디바이스 식별자값을 상기 디바이스 식별자값으로 갱신하는 단계를 더 포함하는 것을 특징으로 하는 비대칭형 클러스터 파일 시스템의 고장 발생시 데이터 관리 방법.
KR1020120061572A 2012-06-08 2012-06-08 비대칭형 클러스터 파일 시스템의 데이터 관리 방법 KR101694288B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120061572A KR101694288B1 (ko) 2012-06-08 2012-06-08 비대칭형 클러스터 파일 시스템의 데이터 관리 방법
US13/684,903 US9031906B2 (en) 2012-06-08 2012-11-26 Method of managing data in asymmetric cluster file system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120061572A KR101694288B1 (ko) 2012-06-08 2012-06-08 비대칭형 클러스터 파일 시스템의 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20130137897A KR20130137897A (ko) 2013-12-18
KR101694288B1 true KR101694288B1 (ko) 2017-01-09

Family

ID=49716105

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120061572A KR101694288B1 (ko) 2012-06-08 2012-06-08 비대칭형 클러스터 파일 시스템의 데이터 관리 방법

Country Status (2)

Country Link
US (1) US9031906B2 (ko)
KR (1) KR101694288B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239125B (zh) * 2014-09-28 2018-04-10 北京奇艺世纪科技有限公司 对象处理方法、分布式文件系统及客户端设备
CN105589887B (zh) * 2014-10-24 2020-04-03 中兴通讯股份有限公司 分布式文件系统的数据处理方法及分布式文件系统
US20170013046A1 (en) * 2014-11-18 2017-01-12 Primarydata, Inc. Data-centric data storage
CN104516974B (zh) * 2014-12-26 2018-03-13 华为技术有限公司 一种文件系统目录项的管理方法及装置
CN104657115B (zh) * 2015-03-12 2017-04-19 浪潮集团有限公司 一种集群文件系统客户端多核并发负载实现方法
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9479567B1 (en) * 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
CN106649565B (zh) * 2016-11-14 2019-11-26 晶赞广告(上海)有限公司 一种联机分析处理方法
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271412A1 (en) 2008-04-29 2009-10-29 Maxiscale, Inc. Peer-to-Peer Redundant File Server System and Methods
US20110258488A1 (en) 2010-04-19 2011-10-20 Microsoft Corporation Server Failure Recovery

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836017B1 (en) 2000-09-12 2010-11-16 Hewlett-Packard Development Company, L.P. File replication in a distributed segmented file system
US6854072B1 (en) * 2000-10-17 2005-02-08 Continuous Computing Corporation High availability file server for providing transparent access to all data before and after component failover
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US7739240B2 (en) 2002-12-09 2010-06-15 Hewlett-Packard Development Company, L.P. Replication and replica management in a wide area file system
US7546321B2 (en) * 2005-12-19 2009-06-09 Yahoo! Inc. System and method for recovery from failure of a storage server in a distributed column chunk data store
JP4755548B2 (ja) * 2006-08-01 2011-08-24 株式会社日立製作所 運用管理方法、運用管理プログラム、運用管理システムおよび運用管理装置
US7953830B2 (en) * 2006-11-07 2011-05-31 International Business Machines Corporation Automatic network reconfiguration upon changes in DHCP IP addresses
KR100936919B1 (ko) * 2007-12-17 2010-01-18 한국전자통신연구원 메타데이터의 일관성을 보장하기 위한 분산 파일 시스템 및방법
US20110016085A1 (en) * 2009-07-16 2011-01-20 Netapp, Inc. Method and system for maintaining multiple inode containers in a storage server
US20110153570A1 (en) 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Data replication and recovery method in asymmetric clustered distributed file system
KR101335934B1 (ko) 2009-12-18 2013-12-03 한국전자통신연구원 비대칭 클러스터 분산 파일 시스템에서 데이터 복제 및 복구 방법
US8495625B1 (en) * 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271412A1 (en) 2008-04-29 2009-10-29 Maxiscale, Inc. Peer-to-Peer Redundant File Server System and Methods
US20110258488A1 (en) 2010-04-19 2011-10-20 Microsoft Corporation Server Failure Recovery

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
대용량 분산 파일 시스템을 위한 비공유 메타데이터 서버 클러스터의 설계 및 구현(윤종현 외 6명. 2008 한국컴퓨터종합학술대회 논문집 Vol. 35, No. 1(A) pages 321-322. 2008.07.02.)

Also Published As

Publication number Publication date
US9031906B2 (en) 2015-05-12
KR20130137897A (ko) 2013-12-18
US20130332418A1 (en) 2013-12-12

Similar Documents

Publication Publication Date Title
KR101694288B1 (ko) 비대칭형 클러스터 파일 시스템의 데이터 관리 방법
US11537482B2 (en) Method and apparatus for reading and writing committed data
KR101453425B1 (ko) 메타데이터 서버 및 메타데이터 관리 방법
US8499191B2 (en) Failure recovery method for information processing service and virtual machine image generation apparatus
CN107885758B (zh) 一种虚拟节点的数据迁移方法和虚拟节点
CN103098015B (zh) 存储系统
CN111182067B (zh) 一种基于星际文件系统ipfs的数据写入方法及设备
JP5396836B2 (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
JP4615344B2 (ja) データ処理システム及びデータベースの管理方法
US20130151653A1 (en) Data management systems and methods
JP2013544386A5 (ko)
JP2013544386A (ja) 分散型データベースにおいてインテグリティを管理するためのシステム及び方法
KR101709118B1 (ko) 하이브리드 스토리지 시스템의 파일 관리 방법 및 장치
WO2012039989A2 (en) System and method for enhancing availability of a distributed object storage system during a partial database outage
CN111694791B (zh) 一种分布式基础框架中的数据存取方法及装置
KR100936238B1 (ko) 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법
KR102376157B1 (ko) 메타데이터 서버 및 그것을 이용한 디렉토리 단위의 메타데이터 분산 방법
JP5445138B2 (ja) データ分散格納方法およびデータ分散格納システム
JP2023541069A (ja) アクティブ-アクティブストレージシステムおよびそのデータ処理方法
KR101035857B1 (ko) 데이터 관리 방법 및 그 시스템
KR101750601B1 (ko) 장애 내구성을 지닌 클러스터의 상태 감시 및 클러스터의 형상 변경을 위한 클러스터 관리 방법 및 데이터 저장 시스템
JP2017208113A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
JP2019509579A (ja) 情報処理システム
WO2016046951A1 (ja) 計算機システム及びそのファイル管理方法
KR100994342B1 (ko) 분산 파일 시스템 및 복제본 기반 장애 처리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant