KR100922584B1 - 객체 기반 분산 공유 시스템 및 그의 방법 - Google Patents

객체 기반 분산 공유 시스템 및 그의 방법 Download PDF

Info

Publication number
KR100922584B1
KR100922584B1 KR1020070082155A KR20070082155A KR100922584B1 KR 100922584 B1 KR100922584 B1 KR 100922584B1 KR 1020070082155 A KR1020070082155 A KR 1020070082155A KR 20070082155 A KR20070082155 A KR 20070082155A KR 100922584 B1 KR100922584 B1 KR 100922584B1
Authority
KR
South Korea
Prior art keywords
recovery
identifier
storage device
recovered
logical offset
Prior art date
Application number
KR1020070082155A
Other languages
English (en)
Other versions
KR20080050276A (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 US11/948,918 priority Critical patent/US7849355B2/en
Publication of KR20080050276A publication Critical patent/KR20080050276A/ko
Application granted granted Critical
Publication of KR100922584B1 publication Critical patent/KR100922584B1/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller

Abstract

본 발명은 객체 기반 분산 공유 시스템 및 그의 방법에 관한 것으로, 오류 저장장치의 오류 복구 중에, 특정 객체에 대한 쓰기 명령이 발생하면 메타데이터 서버가 제공하는 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인하는 제1 과정; 상기 객체가 복구 완료되었으면, 상기 객체의 쓰기 명령을 정상 저장장치와 복구용 저장장치 모두에 수행하는 제2 과정; 상기 객체가 복구 중이면, 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받아 상기 객체의 복구 상태를 재확인하고 상기 제2 과정으로의 재진입 여부를 결정하는 제3 과정; 상기 제2 과정으로 재진입하지 못하면, 상기 객체의 쓰기 명령을 상기 정상 저장장치에 대해서만 수행한 후 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받는 제4과정; 및 상기 재전송된 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인한 후, 상기 객체가 복구 완료되었으면 상기 객체의 쓰기 명령을 상기 복구용 장치에 대해 추가 수행하는 제5 과정을 포함하여 구성되며, 이에 의하여 데이터 손실을 방지하면서도 오류 복구 중에도 I/O 명령을 처리할 수 있도록 한다.
분산 공유, 객체 기반, RAID

Description

객체 기반 분산 공유 시스템 및 그의 방법{Distributed object-sharing system and method thereof}
본 발명은 객체 기반 분산 공유 시스템에서의 RAID(redundant array of inexpensive disk) 장치에 관한 것으로, 시스템 오류 시 데이터 손실의 발생 가능성을 차단할 수 있는 객체 기반 분산 공유 시스템 및 그의 방법에 관한 것이다.
본 발명은 정보통신부의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-405-02, 과제명: 차세대 인터넷 서버 기술 개발].
일반적으로 다수의 원본 저장장치들로 구성되는 객체 기반 분산 공유 시스템은 시스템 가용성 및 성능을 고려하여 오류 복구 기능을 갖는 RAID 장치를 구비하며, RAID 장치는 미러링(mirroring) 방식과 스트라이핑(striping) 방식으로 구현된다.
미러링 방식은 데이터에 대해 하나 이상의 복사본을 만들고, 각 데이터를 서로 다른 장치에 저장시키는 것으로 RAID 레벨 1이라 한다. 이는 저장 공간 낭비와 데이터 저장을 위한 쓰기 연산 시간이 길어지는 것이 단점이지만, 하나의 데이터에 대해 동시에 다수의 읽기 요구가 발생하는 경우에 여러 장치로 분산 처리가 가능하며 복사본 수만큼 오류가 발생하더라도 지속적인 시스템 운용이 가능한 장점을 가진다.
스트라이핑 방식은 데이터를 일정 크기로 나누어 다수의 저장장치로 분산 저장하는 것으로 RAID 레벨 5라 한다. 이는 I/O 크기가 작을 때는 서로 다른 장치로부터 병렬 처리가 가능하고, I/O 크기가 클 때는 여러 장치로부터 동시에 읽을 수 있다. 또한, 잉여(redundant) 정보인 패리티(parity)를 이용함으로써 하나의 오류에 대해 지속적인 시스템 운용이 가능하다. 그러나 이때의 패리티는 해당 데이터가 갱신될 때마다 갱신되어야 하기 때문에 쓰기 성능상 오버헤드로 작용할 수 있다.
객체 기반 분산 공유 시스템은 메타데이터를 메타데이터 서버에서 관리하고, 다수의 파일 서버들이 메타데이터 서버로부터 메타데이터 정보를 얻어 운용되는 중앙 집중식 구조를 가진다.
이러한 구조에서 상기의 레벨 1 또는 레벨 5방식의 RAID 장치를 이용하는 메타데이터 서버에서만 RAID 장치의 오류를 전담으로 복구하는데, 이러한 경우 데이터 손실의 가능성이 존재하게 된다.
도1은 종래의 기술에 따라 레벨 1 방식의 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면이다.
도1을 참조하면, 객체 기반 분산 공유 시스템은 RAID 장치(130)의 오류를 복구하는 RAID 오류 복구부(111)를 구비하는 메타데이터 서버(110), RAID 장치(130)를 이용하여 객체의 읽기 및 쓰기 명령을 처리하는 RAID 구동부(121)를 구비하는 적어도 하나의 파일 서버(120), 및 원본 데이터를 저장하는 저장장치(131), 복사본 데이터를 저장하는 저장 장치(132), 및 RAID 오류 복구부(111)에 의해 복구되는 데이터를 저장하는 복구용 저장장치(133)를 구비하는 RAID 장치(130)로 구성된다.
이에 파일 서버(120)가 객체 생성 명령을 발생하면, RAID 장치(130)의 원본 저장장치(131)는 해당 객체를 생성한 후 생성된 구별자를 객체 생성 명령에 저장하여 복사본 저장장치(132)로 전달한다. 복사본 저장장치(132)는 이에 응답하여 동일한 객체를 생성한다.
그 결과 원본 저장장치(131)와 복사본 저장장치(132)에는 동일한 구별자를 갖는 객체가 생성된다. 즉, 원본 저장장치(131)와 복사본 저장장치(132)에 동일한 객체A, 객체B, 객체 C가 존재하게 된다.
레벨 1 방식으로 구현된 RAID 장치(130)의 경우, 쓰기 명령은 모든 저장장치(131,132)에서 처리되지만, 읽기 명령은 저장장치들 중 하나(131)에서만 처리되도록 한다.
예를 들어, 파일 서버가 다수개인 경우, 파일 서버1에서 객체A의 내용을 갱신하려면 원본 저장장치(131)와 복사본 저장장치(132)의 객체A로 동일한 쓰기 명령을 전달한다.
그러나 파일 서버2는 객체B의 내용을 읽고 파일 서버 3은 객체 C의 내용을 읽고자 한다면, 파일 서버2는 원본 저장장치(131)로부터 객체B의 내용을 읽고, 파일 서버3은 복사본 저장장치(132)로부터 객체 C의 내용을 읽는다.
즉, 읽기 명령에 대해서는 로드 분산 처리가 가능하다. 이때, 어떤 저장장치 로부터 객체 내용을 읽어올 것인가는 I/O 분산 알고리즘에 의해 결정된다.
도2는 도1의 객체 기반 분산 공유 시스템의 오류 복구 방법을 설명하기 위한 도면이다.
메타데이터 서버(110)의 RAID 오류 복구부(111)는 복사본 저장장치(132)에 오류가 발생하면, 복사본 저장장치(132)에 강제로 오류 발생한다. 그리고 복사본 저장장치(132)에 저장된 모든 객체들을 순차적으로 읽어와(S11), 복구용 저장장치(133)로 순차적으로 저장하여 오류를 복구한다(S12).
그런데 이러한 동작 중에 파일 서버(120)가 복구 중인 객체에 대한 갱신 명령을 발생하게 되면(S13), 데이터 손실이 발생하게 된다.
즉, 객체B의 복구 명령과 함께 객체B의 갱신 명령이 발생되면, 메타데이터 서버(110)는 객체B에 대한 읽기 동작을 수행한 후, 객체B에 대한 쓰기 동작을 수행한다. 반면 파일 서버(120)는 객체B에 대한 쓰기 동작만을 수행한다.
이에 복사장치(131)는 메타데이터 서버(110)의 읽기 명령을 먼저 처리하고 파일 서버(120)의 갱신 명령을 처리하나, 복구용 저장장치(133)는 파일 서버(120)의 갱신 명령을 처리한 후 메타데이터 서버(110)의 읽기 명령이 처리하게 된다.
이에 복구용 저장장치(133)에는 갱신된 객체가 아닌 메타데이터 서버(110)가 갱신전 객체가 저장되어, 원본 저장장치(131)와 복구용 저장장치(133)는 서로 상이한 객체B를 저장하게 된다. 그 결과, 복구용 저장장치(133)에서는 데이터 손실이 발생하게 된다.
도3은 종래의 기술에 따라 레벨 5 방식의 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면이다.
도면을 참조하면, 도3의 객체 기반 분산 공유 시스템은 도1에서와 같이 메타데이터 서버(210), 적어도 하나의 파일 서버(220), 및 RAID 장치(230)로 구성되며, 이때의 RAID 장치(230)는 각 객체의 데이터를 분산 저장하는 다수의 저장장치(231~234)와 상기 파일 서버(220)의 RAID 오류 복구부(211)에 의해 복구되는 객체 데이터를 저장하는 복구용 저장장치(235)를 구비한다.
RAID 장치(230)는 사용하는 패리티 정보의 수에 따라 감내할 수 있는 오류의 수가 결정된다. 하지만 패리티 정보는 데이터 갱신과 동기화되어야 하기 때문에 쓰기 성능 면에서는 오버헤드가 발생한다.
예를 들어, 파일 서버(220)가 객체A의 데이터5를 갱신하고자한다면 우선 데이터5가 저장되어 있는 저장장치1(231)의 객체A로부터 갱신하고자 하는 크기만큼의 데이터를 읽는다.
그리고 데이터5가 속하는 스트라입1의 패리티 정보가 저장된 저장장치3(233)객체A의 패리티1로부터 동일한 오프셋, 동일한 크기만큼의 패리티 정보를 읽는다.
그리고 읽은 데이터, 패리티, 및 새로운 데이터를 비트 별로 배타적 논리합 연산(exclusive-OR)을 수행하여 새로운 패리티 정보를 산출한다. 산출된 패리티 정보와 함께 새로운 데이터5에 대한 쓰기 명령을 각각의 저장장치(231~234)에 전달하여 처리한다.
즉, 쓰기 명령을 처리하기 위하여 두 번의 읽기 명령과 두 번의 쓰기 명령 등 총 네 번의 입출력이 수행된다.
도4는 도3의 객체 기반 분산 공유 시스템의 오류 복구 방법을 설명하기 위한 도면이다.
메타데이터 서버(210)는 저장장치2(232)의 오류 발생을 감지하면, RAID 오류 복구부(211)를 통해 저장장치2(232)의 객체들을 객체 구별자순으로 스트라입 단위로 복구용 저장장치(235)로 복구한다.
즉, RAID 오류 복구부(211)는 원본 저장장치2(232)의 객체A의 스트라입0,1,2, 그리고 객체B의 스트라입0,1,2 순으로 저장장치2(232)의 객체들을 복구용 저장장치(235)로 저장한다.
그러나 이러한 상태에서 파일 서버(220)가 복구 중인 객체에 대하여 갱신 명령을 발생하면, 데이터 손실이 발생하게 된다.
계속하여 도면을 참조하여, 파일 서버(220)에서 객체A의 데이터5 갱신을 처리하는 동안 메타데이터 서버(210)에서 객체A의 스트라입 1에 대한 복구를 처리하는 경우를 설명하면 다음과 같다.
파일 서버(220)는 패리티 갱신을 위해 데이터5, 데이터3, 데이터4를 읽어와(S21,S22,S23), 패리티1을 복구한 후(S24) 새로운 패리티1을 산출한다(S25).
메타데이터 서버(220)도 이와 동시에 객체A의 패리티1을 복구하기 위하여 데이터5, 데이터3, 데이터4를 읽어와, 패리티1을 복구한다(S26,S27,S28).
패리티 갱신이 끝난 파일 서버(220)는 새로운 데이터5는 저장장치1(231)에 저장하고(S29), 새로운 패리티1은 복구용 저장장치(235)에 저장한다(S30). 그리고 복구를 완료한 메타데이터 서버(210)는 복구된 패리티1을 복구용 저장장치(235)에 저장한다(S31).
이와 같이 파일 서버(230)에 의한 패리티1의 쓰기 동작이 수행된 후 메타데이터 서버(210)에 의한 패리티1의 복구 동작이 수행되면, 복구용 저장장치(235)에는 갱신된 패리티1가 아닌 갱신전의 패리티1가 저장된다.
따라서 종래의 객체 기반 분산 공유 시스템에서는 복구가 완료된 후, 또 저장장치가 고장 나서 복구를 수행해야 되는 경우 잘못된 데이터가 복구될 수 있고, 데이터 손실 문제가 발생할 수 있다. 즉, RAID 장치의 오류를 복구할 때에 데이터 손실이 발생할 수 있는 문제가 있었다.
본 발명의 제1 측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로써, 오류 저장장치의 오류 복구 중에, 특정 객체에 대한 쓰기 명령이 발생하면 메타데이터 서버가 제공하는 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인하는 제1 과정; 상기 객체가 복구 완료되었으면, 상기 객체의 쓰기 명령을 정상 저장장치와 복구용 저장장치 모두에 수행하는 제2 과정; 상기 객체가 복구 중이면, 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받아 상기 객체의 복구 상태를 재확인하고 상기 제2 과정으로의 재진입 여부를 결정하는 제3 과정; 상기 제2 과정으로 재진입하지 못하면, 상기 객체의 쓰기 명령을 상기 정상 저장장치에 대해서만 수행한 후 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받는 제4과정; 및 상기 재전송된 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인한 후, 상기 객체가 복구 완료되었으면 상기 객체의 쓰기 명령을 상기 복구용 장치에 대해 추가 수행하는 제5 과정을 포함하는 파일서버의 쓰기 방법을 제안한다.
이때, 상기 복구 상태 정보는 명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그, 복구 중인 객체의 제1 구별자, 및 복구 완료된 객체의 제1 논리 오프셋을 포함한다.
그리고 상기 제1 과정은 상기 제1 구별자가 복구 완료 값인 경우와 상기 객체의 구별자가 복구 시작 후 첫 번째로 생성된 제1 구별자보다 작거나 같은 경우에는, 상기 오류 저장장치가 복구 완료되었다고 판단하는 단계; 상기 객체의 구별자가 상기 제1 구별자보다 작은 경우에는 상기 객체가 복구 완료되었다고 판단하는 단계; 상기 객체의 구별자와 상기 제1 구별자가 동일한 경우에는, 상기 객체가 복구중이라고 판단하는 단계; 상기 객체의 구별자와 상기 제1 구별자가 동일하며 상기 객체 데이터의 논리 오프셋이 상기 제1 논리 오프셋보다 작은 경우에는, 상기 객체 데이터의 논리 오프셋에 대응되는 상기 객체의 데이터까지 복구 완료되었다고 판단하는 단계; 및 상기 제1 구별자가 초기값인 경우에는, 상기 객체는 복구 이전 상태라고 판단하는 단계를 포함한다.
그리고 상기 제3 과정은 상기 객체가 복구 중이면, 상기 메타데이터 서버로부터 상기 복구 상태정보를 전송받는 단계; 및 상기 전송된 복구 상태 정보의 연산 모드 플래그가 제2 값이면 상기 제2 과정으로 진입하고, 제1 값이면 재검증 플래그를 활성화시키는 단계를 포함한다.
그리고 상기 제4 과정은 상기 재검증 플래그가 활성화되었으면, 상기 쓰기 명령을 상기 정상 저장장치에 대해서만 처리하도록 단계; 및 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받는 단계를 포함한다.
그리고 상기 제5 과정은 상기 재전송된 복구 상태 정보의 연산 모드 플래그가 상기 제2값이면 상기 복구용 저장장치에 대해 상기 객체의 쓰기 명령을 추가 수행하는 단계; 및 상기 재전송된 복구 상태 정보의 연산 모드 플래그가 상기 제1 값이면 상기 객체가 여전히 복구 상태임을 확인하는 단계를 포함한다.
본 발명의 제2 측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로써, 오류 저장장치의 오류 복구 중에, 특정 객체에 대한 읽기 명령이 발생하면 메타데이터 서버가 제공하는 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인하는 제1 과정; 상기 객체가 복구 완료되었으면, 상기 객체의 읽기 명령을 정상 저장장치와 복구용 저장장치 모두에 수행하는 제2 과정; 및 상기 객체가 복구 중이거나 복구 이전이면, 상기 객체의 읽기 명령을 상기 정상 저장장치에 대해서만 수행하는 제3 과정을 포함하는 파일서버의 읽기 방법을 제안한다.
이때, 상기 복구 상태 정보는 명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그, 복구 중인 객체의 제1 구별자, 및 복구 완료된 객체의 제1 논리 오프셋을 포함한다.
그리고 상기 제1 과정은 상기 제1 구별자가 복구 완료 값인 경우와 상기 객체의 구별자가 복구 시작 후 첫 번째로 생성된 상기 제1 구별자보다 작거나 같은 경우에는, 상기 오류 저장장치가 복구 완료되었다고 판단하는 단계; 상기 객체의 구별자가 상기 제1 구별자보다 작은 경우에는 상기 객체가 복구 완료되었다고 판단하는 단계; 상기 객체의 구별자와 상기 제1 구별자가 동일한 경우에는, 상기 객체가 복구중이라고 판단하는 단계; 상기 객체의 구별자와 상기 제1 구별자가 동일하 며 상기 객체의 논리 오프셋과 상기 제1 논리 오프셋보다 작은 경우에는, 상기 객체의 논리 오프셋에 대응되는 상기 객체의 데이터까지 복구 완료되었다고 판단하는 단계; 및 상기 제1 구별자가 초기값인 경우에는, 상기 객체는 복구되지 않다고 판단하는 단계를 포함한다.
본 발명의 제3 측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로써, 오류 저장장치를 감지하면, 복구 객체를 결정하고 정상 저장장치에서 읽어와 복구용 저장장치로 저장하면서 복구 정보를 획득하는 제1 과정; 및 파일 서버로부터 복구 상태 정보의 요청이 입력되면, 상기 파일 서버의 동작 상태에 따라 연산 모드를 결정한 후, 상기 연산 모드와 상기 복구 정보를 함께 상기 파일 서버로 제공하는 제2 과정을 포함하는 메타데이터 서버의 오류 복구 방법을 제안한다.
그리고 상기 제1과정은 상기 오류 저장장치를 감지하면, 정상 장치로부터 객체 리스트 정보와 객체 정보를 읽어와 저장하는 단계; 상기 객체 정보를 참조하여 복구 객체를 결정하고, 상기 복구 객체에 상응하는 복구중인 객체 구별자와 복구할 마지막 논리 오프셋을 획득하는 단계; 상기 정상 저장장치에서 상기 복구 객체를 논리 오프셋 단위로 읽어와 상기 복구용 저장장치로 저장한 후, 상기 복구용 저장장치에 저장된 복구 객체의 논리 오프셋을 복구 완료된 논리 오프셋으로 획득하는 단계; 및 상기 복구중인 객체 구별자, 상기 복구할 마지막 논리 오프셋 및 상기 복구 완료된 논리 오프셋을 포함하는 상기 복구 정보를 생성하는 단계를 포함한다.
그리고 상기 제2과정은 상기 파일 서버로부터 상기 파일 서버의 식별자, 상 기 객체의 구별자, 상기 객체 데이터의 논리 오프셋, 명령 형태를 포함하는 요청 메시지를 수신하는 단계; 상기 복구중인 객체 구별자가 초기값인 경우, 상기 연산 모드를 제1 상태로 설정하는 단계; 상기 복구중인 객체 구별자가 미생성 상태이거나 상기 객체의 구별자보다 크면 상기 연산 모드를 제2 상태로 설정하는 단계; 상기 복구중인 객체 구별자가 상기 객체의 구별자보다 작거나 같으며, 상기 객체 데이터의 논리 오프셋이 상기 복구 완료된 논리 오프셋 보다 크면 상기 연산 모드를 제2 상태로 설정하는 단계; 상기 복구중인 객체 구별자가 상기 객체의 구별자보다 크며 상기 명령 형태가 쓰기 명령이 아니면, 상기 연산 모드를 제1 상태로 설정하는 단계; 상기 명령 형태가 쓰기 명령이고 상기 객체 데이터의 논리 오프셋이 상기 복구할 마지막 논리 오프셋 보다 크면, 상기 연산 모드를 제1 상태로 설정하는 단계; 및 상기 연산 모드, 복구중인 객체 구별자, 복구 완료된 논리 오프셋, 및 복구할 마지막 논리 오프셋을 포함하는 응답 메시지를 생성하여 상기 파일 서버로 전송하는 단계를 포함한다.
본 발명의 제4 측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로써, 메타데이터 서버가 제공하는 복구 상태 정보가 저장되는 복구상태 저장부; 오류 저장장치의 발생시에 쓰기 또는 읽기 명령이 요청되면, 상기 복구 상태 정보를 통해 상기 RAID 장치의 복구 상태를 확인하면서 상기 쓰기 또는 읽기 명령을 수행하는 RAID 구동부; 및 상기 메타데이터 서버에 상기 복구 상태 정보를 요청하여 제공받는 복구 상태 확인부를 포함하는 파일 서버를 제안한다.
그리고 상기 RAID 구동부는 상기 복구 상태 정보의 분석결과, 상기 객체가 복구 완료되었으면 정상 저장장치와 복구용 저장장치에 대해 상기 명령을 처리하고, 상기 객체가 복구이전이면 상기 정상 저장장치에 대해 상기 명령을 처리하며, 쓰기 명령 발생시에 상기 객체가 복구중이면 상기 정상 저장장치에 대해 상기 쓰기 명령을 우선 처리하고, 상기 메타데이터 서버로부터 상기 복구 상태 정보를 재전송받아 상기 객체의 복구 여부를 재확인하여 상기 복구용 저장장치에 대한 상기 쓰기 명령의 처리 여부를 결정하는 것을 특징으로 한다.
본 발명의 제5 측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로써, 오류 저장장치가 발생하면, 상기 RAID 장치에 저장된 객체를 복구용 저장장치로 복구하면서 복구 정보를 획득하는 RAID 오류 복구부; 상기 복구 정보를 저장하는 복구 정보 저장부; 및 파일 서버로부터 복구 상태 정보의 요청이 입력되면, 상기 파일 서버의 동작 상태에 따라 연산 모드를 결정한 후, 상기 연산 모드와 상기 복구 정보를 포함하는 상기 복구 상태 정보를 생성하여 상기 파일 서버로 제공하는 복구 상태 보고부를 포함하는 메타데이터 서버를 제안한다.
그리고 상기 복구 상태 보고부는 상기 파일 서버로부터 전송되는 상기 파일 서버의 식별자, 상기 객체의 구별자, 상기 객체 데이터의 논리 오프셋, 명령 형태를 포함하는 요청 메시지를 분석하여, 명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그를 설정한 후 상기 복구 정보와 함께 상기 파일 서버에 제공한다.
이와 같이 본 발명의 객체 기반 분산 공유 시스템 및 그의 방법은 파일 서버 가 메타데이터 서버의 복구 상태를 파악하면서, I/O 명령을 처리한다.
이에 항상 RAID 장치의 객체 또는 객체의 데이터가 복구 완료된 후에만, 갱신할 객체 또는 갱신할 객체의 데이터를 저장함으로써, RAID 장치의 오류를 복구할 때에 발생할 수 있는 데이터 손실을 방지한다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.
도5는 본 발명의 일실시예에 따른 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면이다.
도5를 참조하면, 본 발명의 객체 기반 분산 공유 시스템은 메타데이터 서버(310), 적어도 하나의 파일 서버(320), 및 RAID 장치(330)를 구비한다.
메타데이터 서버(310)는 RAID 오류 복구부(311), 객체 정보 저장부(312), 복구 정보 저장부(313), 및 복구 상태 보고부(314)를 구비한다.
RAID 오류 복구부(311)는 RAID 장치(310)내에서 오류 저장장치(예를 들어, 331)가 발생하면, RAID 장치(310)에 저장된 객체를 복구용 저장장치(333)로 복구하 면서 복구 정보를 획득한다.
객체 정보 저장부(312)는 RAID 오류 복구부(311)가 복구할 객체와 이의 논리 오프셋을 결정하기 위한 RAID 장치(310)의 객체 리스트 정보와 다수의 객체 정보를 저장한다. 객체 리스트 정보는 RAID 장치(310)에 저장되어 있는 전체 객체 수와 마지막 객체 구별자를 포함하며, 객체 정보는 객체 구별자와 객체 크기를 포함하며 객체 구별자 순으로 정렬된다.
복구 정보 저장부(313)는 RAID 오류 복구부(311)의 복구 상태를 반영하는 복구 정보를 저장한다. 복구 정보는 복구 중인 객체의 제1 구별자와 복구 완료된 객체의 제1 논리 오프셋을 포함한다.
복구 상태 보고부(314)는 파일 서버(320)가 복구 상태 정보를 요청하면, 파일 서버의 동작 상태에 따라 연산 모드를 결정한 후, 연산 모드와 복구 정보를 포함하는 복구 상태 정보를 생성하여 파일 서버로 제공한다.
파일 서버(320)는 RAID 구동부(321), 복구 상태 확인부(322), 및 복구 상태 저장부(323)를 구비한다.
RAID 구동부(321)는 오류 저장장치의 발생시에 쓰기 또는 읽기 명령이 요청되면, 복구 상태 정보를 통해 RAID 장치의 복구 상태를 확인하면서 쓰기 또는 읽기 명령을 수행한다.
복구 상태 저장부(323)는 메타데이터 서버(310)로부터 제공되는 복구 상태 정보를 저장한다.
도6의 본 발명의 일실시예에 따른 메타데이터 서버의 오류 복구 방법을 설명 하기 위한 도면이다.
먼저, 고장 나지 않은 정상 저장장치들 중 첫 번째 저장장치(332)로부터 객체 리스트 정보와 모든 객체 정보들을 읽어와 저장하고(S101,S102), 객체 리스트 정보와 모든 객체 정보를 참조하여 복구 객체를 결정하고, 마지막 객체인지를 확인한다(S103).
복구 객체가 마지막 객체이면 RAID 장치(330)의 오류가 모두 복구되었음을 확인하고 동작 종료하고, 그렇지 않으면 복구 객체의 구별자를 복구 정보의 복구 중인 객체 구별자(A1)로 획득하여 저장하고(S104), 복구 객체의 크기를 이용하여 복구 정보의 복구할 마지막 논리 오프셋(C2)으로 획득하여 저장한다(S105).
단계 S104에서 RAID 장치가 레벨 1 방식인 경우에는 복구 객체의 크기 그대로를 복구할 마지막 논리 오프셋(C2)으로 획득한다. 반면 레벨 1 방식인 경우에는 복구 객체 크기에 저장장치 수를 곱하여 산출된 값을 복구 정보의 복구할 마지막 논리 오프셋(C2)으로 획득한다. 이는 복구 객체의 크기가 해당 장치에서의 물리적 객체 크기이기 때문이다.
단계 S105를 통해 획득된 복구할 마지막 논리 오프셋(C2)이 첫 번째 저장장치의 마지막 오프셋이면(S106), 복구 객체의 복구가 완료되었음을 확인하고 다시 단계 S103으로 재진입하여 새로운 복구 객체를 선택한다. 반면 그렇지 않으면 정상 저장장치의 복구 객체로부터 일정 크기의 데이터를 읽어온 후(S107), 읽은 데이터를 복구용 저장장치에 저장한다(S108).
복구 완료된 데이터의 논리 오프셋을 복구 완료된 논리 오프셋(B2)에 저장하 고(S109), 다음으로 복구할 논리 오프셋을 계산한 후 단계 S106으로 재진입하여 복구 동작을 논리 오프셋 단위로 반복 수행하면서 모든 객체를 순차적으로 복구한다(S110).
도7은 본 발명의 일실시예에 따른 메타데이터 서버의 복구 상태 정보 제공 방법을 설명하기 위한 도면으로, 이는 파일 서버(320)의 요청에 따라 수행되기 시작한다.
파일 서버(320)가 복구 상태 정보를 요청하기 위해 파일서버 이름, 객체 구별자(A1), 논리 오프셋(B1), 및 명령 형태의 정보를 포함하는 요청 메시지를 전송하면(S201), 요청 메시지에 포함된 객체 구별자(A1)와 복구 정보의 복구 중인 객체 구별자(A2)를 비교한다(S202).
복구 중인 객체 구별자(A2)가 초기값(-1)을 가지면(S203), 해당 객체는 아직 복구이전 상태임을 확인하고 정상 저장장치들을 이용하여 해당 명령을 처리할 수 있도록 연산 모드 플래그의 값을 "1"로 설정한다(S204). 그리고 이와 복구 정보(복구 정보의 복구 중인 객체 구별자(A2), 및 복구 완료된 논리 오프셋(B2))를 포함하는 응답 메시지를 생성하여 파일 서버(320)로 전송한다(S205).
이때, 연산 모드 플래그는 해당 명령을 처리할 장치들을 결정하는 플래그로, 본 발명에서는 플래그 값이"1"인 경우에는 정상 저장장치들을 이용하여 해당 명령을 처리하고, 플래그 값이"2"인 경우에는 복구용 저장장치와 정상 저장장치들을 이용하여 해당 명령을 처리하도록 한다.
복구 중인 객체 구별자(A2)가 "0"이면 RAID 장치에 대한 복구가 완료되었음 을, 요청된 객체 식별자(A1)보다 큰 값을 가지면, 해당 객체에 대한 복구가 완료되었음을 각각 확인한다(S206).
그리고 해당 명령을 복구용 저장장치와 정상 저장장치에 대해 처리하도록 연산 모드 플래그의 값을 "2"로 설정한다(S207). 그리고 단계 S205로 진입하여, 이에 따른 응답 메시지를 생성 및 전송한다.
요청된 객체 식별자(A1)가 복구 중인 객체 구별자(A2)와 동일하면(S208), 요청된 객체가 현재 복구 중임을 확인하고, 복구 완료된 논리 오프셋(B2)과 요청 메시지를 통해 전달된 논리 오프셋(B1)을 서로 비교한다(S209).
비교 결과, 요청된 논리 오프셋(B1)이 복구 완료된 논리 오프셋(B2)보다 작거나 같은 값을 가지면(S210), 요청 객체가 복구 완료되었음을 확인하고 연산 모드 플래그의 값을 "2"로 설정하여(S207), 응답 메시지를 생성 및 전송한다(S212).
반면 요청된 객체 식별자(A1)가 복구 중인 객체 구별자(A2) 보다 크면(S208), 요청된 객체가 복구 이전 상태임을 확인하고 요청 정보의 명령 형태가 쓰기 명령인지 확인한다(S211).
명령 형태가 쓰기 명령이 아니면, 정상 저장장치만을 이용하여 해당 명령을 처리할 수 있도록 연산 모드 플래그의 값을 "1"로 설정하여, 응답 메시지를 생성 및 전송한다(S212).
반면, 명령 형태가 쓰기 명령이면 논리 오프셋(B1)과 복구할 마지막 논리 오프셋(C2)과 비교한다(S213).
요청된 논리 오프셋(B1)이 복구할 마지막 논리 오프셋(C2) 보다 크면(S214), 메타데이터 서버(310)가 파악한 객체 크기보다 큰 오프셋에 대한 쓰기 명령임을 확인하고 복구할 마지막 논리 오프셋(C2)의 값을 요청된 논리 오프셋(B1)로 변경한 후(S215), "1"의 값을 가지는 연산 모드 플래그를 생성 및 전송한다(S212,S205).
이는 쓰기 명령 및 추가 명령등과 같이 객체 크기를 변화시키는 명령에 의해, 발생할 수 있는 데이터 손실의 발생 가능성을 차단하기 위함이다.
즉, 파일 서버(320)에서 쓰기 명령 및 추가 명령등과 같이 객체 크기를 변화시키는 명령을 처리하게 되더라도 메타데이터 서버(310)에서는 변화된 객체 크기를 알 수가 없기 때문에 데이터 손실이 발생할 수 있다.
이에 객체 크기 이상의 오프셋에 대한 쓰기 명령에 대해 복구할 객체의 크기를 그에 맞게 변경시키도록 한다. 그리고 일단 객체에 대한 복구가 완료되고 나면, 복구용 저장장치로의 쓰기 명령 처리가 가능하기 때문에 상기와 같은 명령에 의한 데이터 손실은 발생하지 않는다.
도8은 본 발명의 일실시예에 따른 파일 서버의 쓰기 방법을 설명하기 위한 도면이다.
쓰기 명령이 발생시에 에러모드이면(S301), 자신이 구비하고 있는 복구 정보 중 복구 시작 후 첫 번째로 생성된 객체 구별자(C)를 확인하고, 0 보다 큰 값을 가지면 쓰기 객체의 구별자(A1)와 객체 구별자(C)를 비교한다(S302).
이때, 객체 구별자(C)는 메타데이터 서버(310)에서 복구 기능이 시작되고 나서 처음으로 생성된 객체의 구별자로서 복구용 저장장치로 직접 생성된 첫 번째 객체임을 의미한다. 이에 객체 구별자(C) 이후로 생성된 객체들은 복구용 저장장치에 도 존재하기 때문에, 쓰기 명령은 정상 모드에서와 동일하게 처리할 수 있게 된다.
쓰기 객체의 구별자(A1)가 객체 구별자(C) 보다 크거나 같으면(S303), 쓰기 객체는 복구용 저장장치와 정상 저장장치에 존재하고 있음을 확인하고, 복구용 저장장치와 정상 저장장체에 대해 쓰기 동작을 수행한다(S304).
쓰기 객체의 구별자(A1)가 객체 구별자(C) 보다 작으면(S303), 쓰기 객체의 구별자(A1)와 복구 정보의 복구 중인 객체 식별자(A2)를 비교한다(S305).
복구 중인 객체 식별자(A2)가 초기값(-1)이면(S306), 아직 메타 데이터서버로(310)부터 전송된 복구 정보가 없거나 복구 동작이 아직 수행되지 않았음을 확인하고 정상 저장장치에 대해서만 쓰기 명령을 수행한다(S307).
복구 중인 객체 식별자(A2)가 복구 완료값(0)이면, 메타데이터 서버(310)의 오류 저장장치에 대한 복구 동작이 모두 완료되었음을 확인하고, 쓰기 객체의 구별자(A1)가 복구 완료된 객체 구별자(A2)보다 작다면 쓰기 객체에 복구가 완료되었음을 확인한 후(S308), 복구용 저장장치와 정상 저장장치에 대해 쓰기 동작을 수행한다(S304).
쓰기 객체의 구별자(A1)가 복구 중인 객체 식별자(A2)와 동일하면, 쓰기 객체의 객체가 현재 복구 중임을 확인하고(S309), 다음으로 쓰기 객체의 논리 오프셋(B1)을 복구 완료된 논리 오프셋(B2)과 비교한다(S310).
쓰기 객체의 논리 오프셋(B1)이 복구 완료된 논리 오프셋(B2) 보다 작거나 같으면(S311), 쓰기 객체의 논리 오프셋(B1)에 대응되는 데이터에 대한 복구가 완료되어 복구용 저장장치(333)에 저장되어 있음을 확인하고, 복구용 저장장치(333) 를 포함한 모든 저장장치들(331~333)에 대해 쓰기 동작을 수행한다(S304).
쓰기 객체의 논리 오프셋(B1)이 복구 완료된 논리 오프셋(B2) 보다 크거나 같으면(S311), 쓰기 객체의 논리 오프셋(B1)에 대응되는 데이터가 아직 복구중임을 확인하고, 현재의 복구 상태를 보다 정확하게 파악하기 위해 메타데이터 서버(310)로 요청 메시지를 생성하여 전송한다(S312).
이때, 요청 메시지에는 파일 서버의 이름, 요청 객체의 구별자(A1)와 논리 오프셋(B1), 그리고 명령 형식(쓰기 명령)이 포함된다. 논리 오프셋(B1)은 쓰기 명령에 저장되어 있는 시작 오프셋에 데이터 크기를 합하여 산출된 값이다.
메타데이터 서버(310)가 이에 응답하여 연산 모드 플래그, 복구 정보의 복구 중인 객체 구별자(A2), 및 복구 완료된 논리 오프셋(B2)을 포함하는 복구 상태 정보가 전송하면(S313), 연산 모드 플래그의 값을 확인한다(S314).
연산 모드 플래그가 "1"보다 큰 값을 가지면(S315), 쓰기 객체의 논리 오프셋(B1)에 대응되는 데이터에 대한 복구가 완료되었음을 확인하고 복구용 저장장치(333)를 포함한 모든 저장장치들(331~333)에 대해 쓰기 동작을 수행한다(S304).
연산 모드 플래그가 "1"보다 작은 값을 가지면(S315), 쓰기 객체의 논리 오프셋(B1)에 대응되는 데이터가 아직 복구되지 않았음을 확인하고 정상 저장장치들에 대해서만 쓰기 명령을 수행한다(S307).
그리고 쓰기 명령의 재검증 플래그를 1로 셋팅하고(S316), 정상 저장장치들에 대해서만 쓰기 명령을 처리한 후(S307), 재검증 플래그의 값을 확인한다(S317).
재검증 플래그의 값이 "1"이면, 메타데이터 서버(310)로 한 번 더 요청 메시 지를 전송하고(S318), 이에 대응되는 응답 메시지를 수신한다(S319).
그리고 응답 메시지에 포함된 복구 완료된 객체 구별자(B2) 및 논리 오프셋(C2)과 연산 모드 플래그를 확인한다.
만일 파일 서버에서 쓰기 명령을 수행하는 동안 메타데이터 서버(310)에서 해당 객체와 오프셋에 대한 복구를 완료하여 연산 모드 플래그의"1"보다 큰 값을 가지면(S321), 동일한 쓰기 명령을 복구용 저장장치(333)에 대해 수행한다(S322).
이는 파일 서버(320)에 갱신한 데이터와 복구용 저장장치(333)에 저장되어 있는 데이터가 일치하지 않을 수 있기 때문에, 복구용 저장장치(333)에 대해 동일한 데이터를 저장함으로써 데이터 손실을 방지하기 위함이다.
도9는 본 발명의 일실시예에 따른 파일 서버의 읽기 방법을 설명하기 위한 도면이다.
읽기 명령이 발생시에 에러모드이면(S401), 자신이 구비하고 있는 복구 정보 중 복구 시작 후 첫 번째로 생성된 객체 구별자(C)를 확인하고, 이 값이 0보다 큰 값이면, 읽기 객체의 구별자(A1)와 객체 구별자(C)를 비교한다(S402).
읽기 객체의 구별자(A1)가 객체 구별자(C) 보다 작거나 같으면(S403), 읽기 객체는 복구용 저장장치(333)를 포함한 모든 저장장치들(331~333)에 존재함을 확인하고, 읽기 명령은 복구용 저장장치(333)를 포함한 모든 저장장치들(331~333)에 대해 수행한다(S404).
읽기 객체의 구별자(A1)가 객체 구별자(C) 보다 작으면, 오류 발생 이전에 생성된 객체들임을 확인하고, 요청 객체 구별자(A1)와 복구 정보의 복구 완료된 객 체 구별자(A2)를 비교한다(S405).
복구 중인 객체 식별자(A2)가 초기값(-1)이면(S406), 아직 메타 데이터서버로(310)부터 전달된 복구 정보가 없거나 복구 동작이 아직 수행되지 않았음을 확인하고 정상 저장장치들에 대해서만 읽기 명령을 수행한다(S407).
복구 중인 객체 식별자(A2)가 복구 완료값(0)이면, 메타데이터 서버(310)의 모든 복구 동작이 완료되었음을 확인하고, 읽기 객체의 구별자(A1)가 복구 완료된 객체 구별자(A2)보다 작다면(S408), 읽기 객체에 대한 복구가 완료되었음을 확인하고 복구용 저장장치(333)를 포함한 모든 저장장치들(331~333)에 대해 쓰기 동작을 수행한다(S404).
반면 요청 객체 구별자(A1)와 복구 완료된 객체 구별자(A2)가 동일하면(S409), 읽기 객체가 현재 복구 중임을 확인하고 오프셋 단위로 복구 여부를 확인한다. 즉, 읽기 객체의 논리 오프셋(B1)을 복구 완료된 논리 오프셋(B2)과 비교한다(S410).
읽기 객체의 논리 오프셋(B1)이 복구 완료된 논리 오프셋(B2)보다 크면(S411), 읽기 객체의 논리 오프셋(B1)에 대응되는 데이터가 복구 완료되어 복구용 저장장치(333)에 저장되어 있음을 확인하고 복구용 저장장치와 정상 저장장치에 대해 읽기 동작을 수행한다(S404).
읽기 객체의 논리 오프셋(B1)과 복구 완료된 논리 오프셋(B2) 보다 작거나 같다면(S411), 해당 데이터가 복구되지 않았음을 확인하고 정상 저장장치에 대해서만 읽기 동작을 수행한다(S407).
본 발명은 읽기 명령 처리 시에는 별도의 복구 상태 정보 요청 동작을 수행하지 않는다. 이는 읽기 동작 시에는 데이터 손실 문제가 발생하지 않으므로, 복구 상태 정보 송수신으로 인한 오버헤드를 줄이기 위함이다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
도1은 종래의 기술에 따라 레벨 1 방식의 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면,
도2는 도1의 객체 기반 분산 공유 시스템의 오류 복구 방법을 설명하기 위한 도면,
도3은 종래의 기술에 따라 레벨 5 방식의 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면,
도4는 도3의 객체 기반 분산 공유 시스템의 오류 복구 방법을 설명하기 위한 도면,
도5는 본 발명의 일실시예에 따른 RAID 장치를 사용하는 객체 기반 분산 공유 시스템의 구성을 도시한 도면,
도6의 본 발명의 일실시예에 따른 메타데이터 서버의 오류 복구 방법을 설명하기 위한 도면,
도7은 본 발명의 일실시예에 따른 메타데이터 서버의 복구 상태 정보 제공 방법을 설명하기 위한 도면으로,
도8은 본 발명의 일실시예에 따른 파일 서버의 쓰기 방법을 설명하기 위한 도면, 그리고
도9는 본 발명의 일실시예에 따른 파일 서버의 읽기 방법을 설명하기 위한 도면이다.

Claims (23)

  1. 다수의 저장장치로 이루어진 RAID 장치에 객체를 저장하는 파일서버의 쓰기 방법에 있어서,
    오류 저장장치의 오류 복구 중에, 상기 오류 저장장치의 객체에 대한 쓰기 명령이 발생하면 메타데이터 서버가 제공하는 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인하는 제1 과정;
    상기 객체가 복구 완료되었으면, 상기 객체의 쓰기 명령을 정상 저장장치와 복구용 저장장치 모두에 수행하는 제2 과정;
    상기 객체가 복구 중이면, 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받아 상기 객체의 복구 상태를 재확인하고 상기 제2 과정으로의 재진입 여부를 결정하는 제3 과정;
    상기 제2 과정으로 재진입하지 못하면, 상기 객체의 쓰기 명령을 상기 정상 저장장치에 대해서만 수행한 후 상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받는 제4과정; 및
    상기 재전송된 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인한 후, 상기 객체가 복구 완료되었으면 상기 객체의 쓰기 명령을 상기 복구용 장치에 대해 추가 수행하는 제5 과정을 포함하는 파일서버의 쓰기 방법.
  2. 제1항에 있어서, 상기 복구 상태 정보는
    명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그, 복구 중인 객체의 제1 구별자, 및 복구 완료된 객체의 제1 논리 오프셋을 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  3. 제2항에 있어서, 상기 제1 과정은
    상기 제1 구별자가 복구 완료 값인 경우와 상기 객체의 구별자가 복구 시작 후 첫 번째로 생성된 제1 구별자보다 작거나 같은 경우에는, 상기 오류 저장장치가 복구 완료되었다고 판단하는 단계;
    상기 객체의 구별자가 상기 제1 구별자보다 작은 경우에는 상기 객체가 복구 완료되었다고 판단하는 단계;
    상기 객체의 구별자와 상기 제1 구별자가 동일한 경우에는, 상기 객체가 복구중이라고 판단하는 단계;
    상기 객체의 구별자와 상기 제1 구별자가 동일하며 상기 객체 데이터의 논리 오프셋이 상기 제1 논리 오프셋보다 작은 경우에는, 상기 객체 데이터의 논리 오프셋에 대응되는 상기 객체의 데이터까지 복구 완료되었다고 판단하는 단계; 및
    상기 제1 구별자가 초기값인 경우에는, 상기 객체는 복구 이전 상태라고 판단하는 단계를 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  4. 제2항에 있어서, 상기 연산 모드 플래그는
    상기 쓰기 명령을 상기 정상 저장장치에 대해서만 처리하도록 하는 제1 값; 및
    상기 쓰기 명령을 상기 정상 저장장치와 상기 복구용 저장장치 모두에 대해 처리하도록 하는 제2 값을 가지는 것을 특징으로 하는 파일서버의 쓰기 방법.
  5. 제4항에 있어서, 상기 제3 과정은
    상기 객체가 복구 중이면, 상기 메타데이터 서버로부터 상기 복구 상태정보를 전송받는 단계; 및
    상기 전송된 복구 상태 정보의 연산 모드 플래그가 상기 제2 값이면 상기 제2 과정으로 진입하고, 상기 제1 값이면 재검증 플래그를 활성화시키는 단계를 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  6. 제5항에 있어서, 상기 복구 상태정보를 전송받는 단계는
    파일 서버의 식별자, 상기 객체의 구별자, 상기 객체 데이터의 논리 오프셋, 명령 형태를 포함하는 요청 메시지를 상기 메타데이터 서버에 전송하는 단계; 및
    상기 메타데이터 서버로부터 상기 복구 상태 정보를 포함하는 응답 메시지를 수신하는 단계를 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  7. 제5항에 있어서, 상기 제4 과정은
    상기 재검증 플래그가 활성화되었으면, 상기 쓰기 명령을 상기 정상 저장장치에 대해서만 처리하도록 단계; 및
    상기 메타데이터 서버로부터 상기 복구 상태정보를 재전송받는 단계를 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  8. 제7항에 있어서, 상기 제5 과정은
    상기 재전송된 복구 상태 정보의 연산 모드 플래그가 상기 제2값이면 상기 복구용 저장장치에 대해 상기 객체의 쓰기 명령을 추가 수행하는 단계; 및
    상기 재전송된 복구 상태 정보의 연산 모드 플래그가 상기 제1 값이면 상기 객체가 여전히 복구 상태임을 확인하는 단계를 포함하는 것을 특징으로 하는 파일서버의 쓰기 방법.
  9. 다수의 저장장치로 이루어진 RAID 장치에 객체를 저장하는 파일서버의 읽기 방법에 있어서,
    오류 저장장치의 오류 복구 중에, 상기 오류 저장장치의 객체에 대한 읽기 명령이 발생하면 메타데이터 서버가 제공하는 복구 상태 정보를 참조하여 상기 객체의 복구 상태를 확인하는 제1 과정;
    상기 객체가 복구 완료되었으면, 상기 객체의 읽기 명령을 정상 저장장치와 복구용 저장장치 모두에 수행하는 제2 과정; 및
    상기 객체가 복구 중이거나 복구 이전이면, 상기 객체의 읽기 명령을 상기 정상 저장장치에 대해서만 수행하는 제3 과정을 포함하는 파일서버의 읽기 방법.
  10. 제9항에 있어서, 상기 복구 상태 정보는
    명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그, 복구 중인 객체의 제1 구별자, 및 복구 완료된 객체의 제1 논리 오프셋을 포함하는 것을 특징으로 하는 파일서버의 읽기 방법.
  11. 제10항에 있어서, 상기 제1 과정은
    상기 제1 구별자가 복구 완료 값인 경우와 상기 객체의 구별자가 복구 시작 후 첫 번째로 생성된 상기 제1 구별자보다 작거나 같은 경우에는, 상기 오류 저장장치가 복구 완료되었다고 판단하는 단계;
    상기 객체의 구별자가 상기 제1 구별자보다 작은 경우에는 상기 객체가 복구 완료되었다고 판단하는 단계;
    상기 객체의 구별자와 상기 제1 구별자가 동일한 경우에는, 상기 객체가 복구중이라고 판단하는 단계;
    상기 객체의 구별자와 상기 제1 구별자가 동일하며 상기 객체의 논리 오프셋과 상기 제1 논리 오프셋보다 작은 경우에는, 상기 객체의 논리 오프셋에 대응되는 상기 객체의 데이터까지 복구 완료되었다고 판단하는 단계; 및
    상기 제1 구별자가 초기값인 경우에는, 상기 객체는 복구되지 않다고 판단하는 단계를 포함하는 것을 특징으로 하는 파일서버의 읽기 방법.
  12. 다수의 저장장치로 이루어진 RAID 장치의 오류를 복구하는 메타데이터 서버 의 오류 복구 방법에 있어서,
    오류 저장장치를 감지하면, 복구 객체를 결정하고 정상 저장장치에서 읽어와 복구용 저장장치로 저장하면서 복구 정보를 획득하는 제1 과정; 및
    파일 서버로부터 복구 상태 정보의 요청이 입력되면, 상기 파일 서버의 동작 상태에 따라 연산 모드를 결정한 후, 상기 연산 모드와 상기 복구 정보를 함께 상기 파일 서버로 제공하는 제2 과정을 포함하는 메타데이터 서버의 오류 복구 방법.
  13. 제12항에 있어서, 상기 제1과정은
    상기 오류 저장장치를 감지하면, 정상 장치로부터 객체 리스트 정보와 객체 정보를 읽어와 저장하는 단계;
    상기 객체 정보를 참조하여 복구 객체를 결정하고, 상기 복구 객체에 상응하는 복구중인 객체 구별자와 복구할 마지막 논리 오프셋을 획득하는 단계;
    상기 정상 저장장치에서 상기 복구 객체를 논리 오프셋 단위로 읽어와 상기 복구용 저장장치로 저장한 후, 상기 복구용 저장장치에 저장된 복구 객체의 논리 오프셋을 복구 완료된 논리 오프셋으로 획득하는 단계; 및
    상기 복구중인 객체 구별자, 상기 복구할 마지막 논리 오프셋 및 상기 복구 완료된 논리 오프셋을 포함하는 상기 복구 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 메타데이터 서버의 오류 복구 방법.
  14. 제13항에 있어서, 상기 복구중인 객체 구별자와 복구할 마지막 논리 오프셋 을 획득하는 단계는
    상기 RAID 장치가 레벨 1 방식인 경우에는 상기 복구 객체의 크기를 상기 복구할 마지막 논리 오프셋으로 획득하는 단계; 및
    상기 RAID 장치가 레벨 5 방식인 경우에는 상기 복구 객체의 크기에 상기 RAID 장치나 구비되는 저장장치의 수를 곱하여 상기 복구할 마지막 논리 오프셋을 획득하는 단계를 포함하는 것을 특징으로 하는 메타데이터 서버의 오류 복구 방법.
  15. 제12항에 있어서, 상기 제2과정은
    상기 파일 서버로부터 상기 파일 서버의 식별자, 상기 객체의 구별자, 상기 객체 데이터의 논리 오프셋, 명령 형태를 포함하는 요청 메시지를 수신하는 단계;
    상기 복구중인 객체 구별자가 초기값인 경우, 상기 연산 모드를 제1 상태로 설정하는 단계;
    상기 복구중인 객체 구별자가 미생성 상태이거나 상기 객체의 구별자보다 크면 상기 연산 모드를 제2 상태로 설정하는 단계;
    상기 복구중인 객체 구별자가 상기 객체의 구별자보다 작거나 같으며, 상기 객체 데이터의 논리 오프셋이 상기 복구 완료된 논리 오프셋 보다 크면 상기 연산 모드를 제2 상태로 설정하는 단계;
    상기 복구중인 객체 구별자가 상기 객체의 구별자보다 크며 상기 명령 형태가 쓰기 명령이 아니면, 상기 연산 모드를 제1 상태로 설정하는 단계;
    상기 명령 형태가 쓰기 명령이고 상기 객체 데이터의 논리 오프셋이 상기 복 구할 마지막 논리 오프셋 보다 크면, 상기 연산 모드를 제1 상태로 설정하는 단계; 및
    상기 연산 모드, 복구중인 객체 구별자, 복구 완료된 논리 오프셋, 및 복구할 마지막 논리 오프셋을 포함하는 응답 메시지를 생성하여 상기 파일 서버로 전송하는 단계를 포함하는 것을 특징으로 하는 메타데이터 서버의 오류 복구 방법.
  16. 제12항에 있어서, 상기 제2과정은
    상기 명령 형태가 쓰기 명령이고 상기 객체 데이터의 논리 오프셋이 상기 복구할 마지막 논리 오프셋 보다 작거나 같으면, 상기 복구할 마지막 논리 오프셋을 상기 객체 데이터의 논리 오프셋으로 변경하는 단계; 및
    상기 연산 모드, 복구중인 객체 구별자, 복구 완료된 논리 오프셋, 및 복구할 마지막 논리 오프셋을 포함하는 응답 메시지를 생성하여 상기 파일 서버로 전송하는 단계를 더 포함하는 것을 특징으로 하는 메타데이터 서버의 오류 복구 방법.
  17. 다수의 저장장치로 이루어진 RAID 장치에 객체를 저장하는 파일서버에 있어서,
    메타데이터 서버가 제공하는 복구 상태 정보가 저장되는 복구상태 저장부;
    오류 저장장치의 오류 복구 중에 상기 오류 저장장치의 객체에 대한 쓰기 또는 읽기 명령이 요청되면, 상기 복구 상태 정보를 통해 상기 객체의 복구 상태를 확인하면서 상기 쓰기 또는 읽기 명령을 수행하는 RAID 구동부; 및
    상기 메타데이터 서버에 상기 복구 상태 정보를 요청하여 제공받는 복구 상태 확인부를 포함하며,
    상기 RAID 구동부는
    상기 복구 상태 정보를 분석하여 상기 객체의 복구 상태를 확인한 후, 복구 완료되었으면 정상 저장장치와 복구용 저장장치 모두에 대해 상기 쓰기 또는 읽기 명령을 처리하고, 복구 중이거나 복구 이전이면 상기 정상 저장장치에 대해서만 상기 쓰기 또는 읽기 명령을 처리하는 것을 특징으로 하는 파일 서버.
  18. 삭제
  19. 제17항에 있어서, 상기 RAID 구동부는
    상기 객체의 복구 중이거나 복구 이전에 상기 쓰기 명령이 발생하면, 상기 정상 저장장치에 대해 상기 쓰기 명령을 우선 처리하고, 상기 메타데이터 서버로부터 상기 복구 상태 정보를 재전송받아 상기 객체의 복구 여부를 재확인하여 상기 복구용 저장장치에 대한 상기 쓰기 명령의 처리 여부를 결정하는 것을 특징으로 하는 파일 서버.
  20. 제17항에 있어서, 상기 복구 상태 정보는
    명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그, 복구 중인 객체의 제1 구별자, 및 복구 완료된 객체의 제1 논리 오프셋을 포함하는 것을 특징으로 하는 파일 서버.
  21. 다수의 저장장치로 이루어진 RAID 장치의 오류를 복구하는 메타데이터 서버에 있어서,
    오류 저장장치가 발생하면, 상기 RAID 장치에 저장된 객체를 복구용 저장장치로 복구하면서 복구 정보를 획득하는 RAID 오류 복구부;
    상기 복구 정보를 저장하는 복구 정보 저장부; 및
    파일 서버로부터 복구 상태 정보의 요청이 입력되면, 상기 파일 서버의 동작 상태에 따라 연산 모드를 결정한 후, 상기 연산 모드와 상기 복구 정보를 포함하는 상기 복구 상태 정보를 생성하여 상기 파일 서버로 제공하는 복구 상태 보고부를 포함하는 메타데이터 서버.
  22. 제21항에 있어서, 상기 복구 상태 보고부는
    상기 파일 서버로부터 전송되는 상기 파일 서버의 식별자, 상기 객체의 구별자, 상기 객체 데이터의 논리 오프셋, 명령 형태를 포함하는 요청 메시지를 분석하여, 명령을 처리할 저장장치들을 결정하도록 하는 연산 모드 플래그를 설정한 후 상기 복구 정보와 함께 상기 파일 서버에 제공하는 것을 특징으로 하는 메타데이터 서버.
  23. 제21항에 있어서, 상기 복구 정보는
    복구 중인 객체의 제1 구별자와 복구 완료된 객체의 제1 논리 오프셋을 포함하는 것을 특징으로 하는 메타데이터 서버.
KR1020070082155A 2006-12-01 2007-08-16 객체 기반 분산 공유 시스템 및 그의 방법 KR100922584B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/948,918 US7849355B2 (en) 2006-12-01 2007-11-30 Distributed object sharing system and method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20060120345 2006-12-01
KR1020060120345 2006-12-01

Publications (2)

Publication Number Publication Date
KR20080050276A KR20080050276A (ko) 2008-06-05
KR100922584B1 true KR100922584B1 (ko) 2009-10-21

Family

ID=39805769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070082155A KR100922584B1 (ko) 2006-12-01 2007-08-16 객체 기반 분산 공유 시스템 및 그의 방법

Country Status (2)

Country Link
US (1) US7849355B2 (ko)
KR (1) KR100922584B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882386B1 (en) * 2008-03-21 2011-02-01 Emc Corporaton System and method for recovering a logical volume during failover or reboot of a file server in a data storage environment
US8543864B2 (en) 2009-12-18 2013-09-24 Electronics And Telecommunications Research Institute Apparatus and method of performing error recovering process in asymmetric clustering file system
US9124423B2 (en) 2010-05-14 2015-09-01 International Business Machines Corporation Iterative data secret-sharing transformation
KR101694984B1 (ko) 2010-12-08 2017-01-11 한국전자통신연구원 비대칭 클러스터링 파일시스템에서의 패리티 산출 방법
KR20150061258A (ko) 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US9473494B2 (en) * 2014-01-09 2016-10-18 Fujitsu Limited Access credentials using biometrically generated public/private key pairs
CN106844108B (zh) * 2016-12-29 2019-05-24 成都华为技术有限公司 一种数据存储方法、服务器以及存储系统
US10802914B2 (en) * 2018-07-23 2020-10-13 Cisco Technology, Inc. Method of using common storage of parity data for unique copy recording

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062376A (ja) 2002-07-26 2004-02-26 Nec Corp Raidディスクリードエラー処理方式、方法及びプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1402381A4 (en) 2001-02-24 2007-07-04 Ibm TWIN-TAIL-FAILOVER FOR FILE SERVERS FOR MAINTAINING FULL EFFICIENCY IN THE ABSENCE OF A FAILURE
US6934904B2 (en) * 2001-04-30 2005-08-23 Sun Microsystems, Inc. Data integrity error handling in a redundant storage array
US7461302B2 (en) 2004-08-13 2008-12-02 Panasas, Inc. System and method for I/O error recovery
US7383406B2 (en) * 2004-11-19 2008-06-03 International Business Machines Corporation Application transparent autonomic availability on a storage area network aware file system
KR100749922B1 (ko) 2004-12-14 2007-08-21 한국전자통신연구원 객체 기반 스토리지를 사용하는 분산 파일 서버에서 장애복구 시스템 및 방법
US7386758B2 (en) 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
US7536586B2 (en) * 2006-01-12 2009-05-19 Dell Products L.P. System and method for the management of failure recovery in multiple-node shared-storage environments

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062376A (ja) 2002-07-26 2004-02-26 Nec Corp Raidディスクリードエラー処理方式、方法及びプログラム

Also Published As

Publication number Publication date
KR20080050276A (ko) 2008-06-05
US7849355B2 (en) 2010-12-07
US20080133967A1 (en) 2008-06-05

Similar Documents

Publication Publication Date Title
KR100922584B1 (ko) 객체 기반 분산 공유 시스템 및 그의 방법
US9411685B2 (en) Parity chunk operating method and data server apparatus for supporting the same in distributed raid system
US8161321B2 (en) Virtual machine-based on-demand parallel disaster recovery system and the method thereof
CN101706802B (zh) 一种数据写入、修改及恢复的方法、装置及服务器
EP3179359B1 (en) Data sending method, data receiving method, and storage device
CN101770408B (zh) 使用基于对象的存储设备在文件系统上使用覆盖对象进行故障处理
US20180088857A1 (en) Method and system for managing storage system
CN105359099B (zh) 索引更新管线
CN106776130B (zh) 一种日志恢复方法、存储装置和存储节点
US20150213100A1 (en) Data synchronization method and system
US7975171B2 (en) Automated file recovery based on subsystem error detection results
EP3474143B1 (en) Method and apparatus for incremental recovery of data
CN103514216B (zh) 基于数据库系统的流水号生成方法
US20100217857A1 (en) Consolidating session information for a cluster of sessions in a coupled session environment
US20180300508A1 (en) Method and device for managing storage system
CN107133132B (zh) 数据发送方法、数据接收方法和存储设备
CN110121694B (zh) 一种日志管理方法、服务器和数据库系统
US10860224B2 (en) Method and system for delivering message in storage system
EP3697024B1 (en) Data processing method, device and distributed storage system
CN116737466B (zh) 备份处理方法、装置、系统、电子设备及可读存储介质
CN113326006A (zh) 一种基于纠删码的分布式块存储系统
US20080250421A1 (en) Data Processing System And Method
CN110121712B (zh) 一种日志管理方法、服务器和数据库系统
JP2008276281A (ja) データ同期システム、方法、及び、プログラム
WO2017026070A1 (ja) ストレージシステム及びストレージ管理方法

Legal Events

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

Payment date: 20120919

Year of fee payment: 18