KR20200101594A - 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 - Google Patents
분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 Download PDFInfo
- Publication number
- KR20200101594A KR20200101594A KR1020190019616A KR20190019616A KR20200101594A KR 20200101594 A KR20200101594 A KR 20200101594A KR 1020190019616 A KR1020190019616 A KR 1020190019616A KR 20190019616 A KR20190019616 A KR 20190019616A KR 20200101594 A KR20200101594 A KR 20200101594A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- block
- file system
- read
- client
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치가 개시된다. 본 발명은 분산 파일 시스템을 구성하는 클라이언트 기반의 파일 시스템이, 복수개의 데이터 서버들로부터 동일 소거 코딩 그룹에 대한 데이터 블록 미리 읽기를 수행하고, 데이터 블록 미리 읽기 중 오류가 발생하는 경우, 오류가 발생하기 이전에 읽기 처리된 데이터 블록을 삭제하지 않고 블록 유니트에 보관하고, 복수개의 데이터 서버들 중 오류가 발생한 데이터 서버로 패리티 블록을 요청하고, 패리티 블록을 기반으로 한 복구 연산을 수행함과 동시에 블록 유니트에 보관된 데이터 블록 및 정상적으로 읽기 처리된 데이터 블록을 기반으로 디코딩을 수행하여 읽기 요청을 처리한다.
Description
본 발명은 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 기술에 관한 것으로, 특히 소거 코딩기반으로 데이터를 저장하는 분산 파일시스템에서 데이터를 읽는 도중 장애가 발생하면 선제적 선반입(AGGRESSIVE PREFETCH)과 주동적인 디코딩(PROACTIVE DECODING)을 통해 실시간으로 데이터를 복구함으로써 지속적인 입출력 성능을 제공할 수 있는 기술에 관한 것이다.
분산 파일시스템에서 데이터를 읽는 도중에 장애가 발생하는 경우, 장애를 인지한 시점에서 접근이 가능한 패리티를 읽어 디코딩하는 것이 순차적으로 진행된다. 따라서, 읽기 수신, 장애 인지, 패리티 읽기, 디코딩, 장애 데이터 복구까지의 시간차로 인한 성능 저하가 불가피하다. 일반적으로 리눅스 파일시스템도 미리읽기를 수행하지만 최대 미리읽기 크기가 128KB이므로 응용 수준에서 입출력 크기가 128KB인 경우 미리읽기로 인한 성능 개선 효과를 기대하긴 어렵다.
따라서, 장애 인지시점부터 복구까지의 수행시간을 입출력 처리 시간 안에 포함하여 전체적인 입출력 성능을 개선하기 위한 새로운 기술이 요구된다.
본 발명의 목적은 분산 파일시스템에서 소거 코딩 데이터를 읽는 동안 장애 발생 시, 디코딩을 통한 실시간 장애 복구를 수행하는 것이다.
또한, 본 발명의 목적은 클라이언트 수준에서 응용이 요구하는 읽기 연산 처리와 미리읽기를 통한 선제적인 선반입 처리를 병렬로 수행함으로써 전체적인 입출력 성능을 개선하는 것이다.
또한, 본 발명의 목적은 분산 파일시스템에서 데이터 서버나 네트워크에 의한 순간적인 장애로 인해 입출력 성능이 저하되는 것을 방지하는 것이다.
상기한 목적을 달성하기 위한 본 발명에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법은 분산 파일 시스템을 구성하는 클라이언트 기반의 파일 시스템이, 기설정된 미리 읽기 범위를 고려하여 복수개의 데이터 서버들로부터 동일 소거 코딩 그룹에 대한 데이터 블록 미리 읽기를 수행하는 단계; 상기 데이터 블록 미리 읽기 중 오류가 발생하는 경우, 상기 클라이언트 기반의 파일 시스템이 상기 오류가 발생하기 이전에 읽기 처리된 데이터 블록을 삭제하지 않고 블록 유니트에 보관하는 단계; 상기 클라이언트 기반의 파일 시스템이, 상기 복수개의 데이터 서버들 중 상기 오류가 발생한 데이터 서버로 패리티 블록을 요청하는 단계; 및 상기 클라이언트 기반의 파일 시스템이, 상기 패리티 블록을 기반으로 한 복구 연산을 수행함과 동시에 상기 블록 유니트에 보관된 데이터 블록 및 정상적으로 읽기 처리된 데이터 블록을 기반으로 디코딩을 수행하여 읽기 요청을 처리하는 단계를 포함한다.
본 발명에 따르면, 분산 파일시스템에서 소거 코딩 데이터를 읽는 동안 장애 발생 시, 디코딩을 통한 실시간 장애 복구를 수행할 수 있다.
또한, 본 발명은 클라이언트 수준에서 응용이 요구하는 읽기 연산 처리와 미리읽기를 통한 선제적인 선반입 처리를 병렬로 수행함으로써 전체적인 입출력 성능을 개선할 수 있다.
또한, 본 발명은 분산 파일시스템에서 데이터 서버나 네트워크에 의한 순간적인 장애로 인해 입출력 성능이 저하되는 것을 방지할 수 있다.
도 1은 본 발명의 일실시예에 따른 비대칭적 분산 파일시스템을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법을 나타낸 동작흐름도이다.
도 3은 본 발명에 따른 클라이언트 파일시스템의 일 예를 나타낸 블록도이다.
도 4는 본 발명에 따른 파일 메타데이터 및 데이터 저장 구조의 일 예를 나타낸 도면이다.
5는 본 발명에 따른 클라이언트에서 관리하는 파일 메타데이터 구조의 일 예를 나타낸 도면이다.
도 6 내지 도 8은 본 발명에 따른 클라이언트에서의 선반입 데이터 관리 구조의 일 예를 나타낸 도면이다.
도 9 내지 도 13은 본 발명의 일실시예에 따른 선제적 선반입과 주동적인 디코딩을 통한 읽기 처리 과정을 상세하게 나타낸 동작흐름도이다.
도 14는 기존 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 시간의 일 예를 나타낸 도면이다.
도 15는 본 발명에 따른 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 사간의 일 예를 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법을 나타낸 동작흐름도이다.
도 3은 본 발명에 따른 클라이언트 파일시스템의 일 예를 나타낸 블록도이다.
도 4는 본 발명에 따른 파일 메타데이터 및 데이터 저장 구조의 일 예를 나타낸 도면이다.
5는 본 발명에 따른 클라이언트에서 관리하는 파일 메타데이터 구조의 일 예를 나타낸 도면이다.
도 6 내지 도 8은 본 발명에 따른 클라이언트에서의 선반입 데이터 관리 구조의 일 예를 나타낸 도면이다.
도 9 내지 도 13은 본 발명의 일실시예에 따른 선제적 선반입과 주동적인 디코딩을 통한 읽기 처리 과정을 상세하게 나타낸 동작흐름도이다.
도 14는 기존 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 시간의 일 예를 나타낸 도면이다.
도 15는 본 발명에 따른 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 사간의 일 예를 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 비대칭적 분산 파일시스템을 나타낸 도면이다.
도 1을 참조하면, 복수개의 클라이언트들(110-1~110-N), 하나의 메타데이터 서버(120), 복수개의 디스크들(140-1~140-L)이 장착된 복수개의 데이터 서버들(130-1~130-M)을 포함한다. 이 때, 네트워크는 이더넷, 인피니밴드 등 메시지 송수신이 가능한 통신 프로토콜을 지원할 수 있다.
이 때, 본 발명의 일실시예에 따른 복수개의 클라이언트들(110-1~110-N)은 FUSE(FILESYSTEM IN USERSPACE) 기반으로 분산 파일 시스템의 가상 논리 볼륨을 특정 디렉터리로 마운트하여 로컬 파일 시스템처럼 제공할 수 있다.
이 때, 응용으로부터 저장되는 파일 데이터는 해당 데이터가 저장되는 가상 논리 볼륨에 설정된 소거 코딩 구조에 기반하여 인코딩을 수행하고, 산출된 패리티는 데이터와 함께 네트워크릍 통해 복수개의 데이터 서버들(130-1~130-M)로 분산 저장될 수 있다.
만약, 복수개의 데이터 서버들(130-1~130-M)이나 복수개의 디스크들(140-1~140-L)의 영구 장애, 관리를 위한 서버의 일시적인 중단 및 네트워크의 일시적 장애 등으로 인해 데이터 접근이 어려운 경우, 소거 코딩의 디코딩을 통해 데이터 손실 없이 서비스를 지원할 수 있다.
이 때, 메타데이터 서버(120)는 복수개의 클라이언트들(110-1~110-N)로부터 요청되는 파일 시스템의 네임스페이스 연산을 처리할 수 있고, 파일 및 디렉터리의 메타데이터를 저장 및 관리할 수 있다.
예를 들어, 도 4를 참조하면, 파일 메타데이터(400)는 도 1에 도시된 메타데이터 서버(120)에서 관리하는 파일의 기본 정보로서, 내부적으로 파일 데이터를 소거 코딩 기반으로 데이터 블록과 패리티 블록을 저장할 때 각 블록이 저장되는 서버, 디스크, 청크 등의 레이아웃 정보를 저장할 수 있다.
도 4에 도시된 것처럼 4개의 데이터 블록으로 2개의 패리티 블록을 산출하여, 총 6개의 블록들로 블록 그룹을 구성하는 4+2 소거 코딩 구조로 파일 데이터를 저장한다고 가정할 수 있다. 이 때, 파일 메타데이터(400)의 소거 코딩 블록 그룹 레이아웃(410)은 데이터 블록 1 정보(421)부터 패리티 블록 2 정보(426)까지 모두 6개 블록 정보를 순차적으로 저장할 수 있다. 이와 같은 각 블록 정보(421~426)는 해당 블록의 데이터(433)가 저장되는 데이터 서버 주소(430), 디스크 식별자(431) 및 청크 식별자(432)로 구성될 수 있다.
이 때, 복수개의 데이터 서버들(130-1~130-M)은 복수개의 클라이언트들(110-1~110-N)로부터 전달되는 파일의 데이터 또는 패리티를 해당 청크 파일에서 저장 및 관리할 수 있다.
도 2는 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법을 나타낸 동작흐름도이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법은 분산 파일 시스템을 구성하는 클라이언트 기반의 파일 시스템이 기설정된 미리 읽기 범위를 고려하여 복수개의 데이터 서버들로부터 동일 소거 코딩 그룹에 대한 데이터 블록 미리 읽기를 수행한다(S210).
이 때, 응용으로부터 클라이언트 기반의 파일 시스템으로 전달된 읽기 요청의 오프셋과 데이터 크기가 파일 시스템에 기설정된 미리 읽기 범위에 포함되는지 여부를 판단하여 선제적 선반입 요청을 검토할 수 있다.
예를 들어, 읽기 요청된 오프셋과 데이터 크기가 기설정된 미리 읽기 범위에 포함되지 않으면, 클라이언트 기반의 파일 시스템이 선반입 처리할 블록 그룹이 내부 블록 그룹 리스트에 존재하는지 여부를 검색할 수 있다. 만약, 해당 블록 그룹이 존재하지 않으면 블록 그룹 구조체를 생성하여 블록 그룹 리스트에 저장할 수 있다. 이 후, 첫 번째 블록 유니트 구조체를 생성하고, 블록 유니트 리스트와 함께 해당 블록 그룹 구조체의 그룹 내 블록 유니트 리스트에 저장할 수 있다.
이 때, 기설정된 미리 읽기 범위는 일반적인 리눅스 파일시스템에서 처리하는 최대 입출력 크기인 128KB를 고려하여 설정될 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법은 데이터 블록 미리 읽기 중 오류가 발생하는 경우, 클라이언트 기반의 파일 시스템이 오류가 발생하기 이전에 읽기 처리된 데이터 블록을 삭제하지 않고 블록 유니트에 보관한다(S220).
이 때, 오류의 발생 여부는 블록 그룹 구조체와 블록 유니트 구조체를 포함하는 클라이언트 기반 파일 시스템의 파일 메타데이터를 통해 해당 블록이 저장된 데이터 서버와 디스크 상태가 정상인지 여부를 확인하여 판단할 수 있다. 예를 들어, 데이터 블록이 저장된 데이터 서버나 디스크 중 적어도 하나가 정상 상태가 아니면 오류 또는 장애가 발생한 것으로 판단할 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법은 클라이언트 기반의 파일 시스템이 복수개의 데이터 서버들 중 오류가 발생한 데이터 서버로 패리티 블록을 요청한다(S230).
이 때, 오류 또는 장애가 발생한 데이터 서버 또는 디스크에 해당하는 블록 유니트의 블록 인덱스를 블록 그룹 내 패리티 블록 중 정상인 패리티 블록의 인덱스로 변경하고, 요청 처리 상태값을 SEND로 설정함으로써 해당 패리티가 저장된 데이터 서버로 읽기 요청을 전달할 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법은 클라이언트 기반의 파일 시스템이 패리티 블록을 기반으로 한 복구 연산을 수행함과 동시에 블록 유니트에 보관된 데이터 블록 및 정상적으로 읽기 처리된 데이터 블록을 기반으로 디코딩을 수행하여 읽기 요청을 처리한다(S240).
예를 들어, 본 발명에 따른 디코딩 처리 과정에 따르면, 4+2 소거 코딩으로 저장된 데이터를 순차적으로 읽는다고 가정하였을 때, 도 15에 도시된 것과 같이 첫 번째 데이터 D1 읽기 요청과 동시에 나머지 D2, D3, D4에 대한 미리읽기 요청을 해당 데이터 서버들에게 병렬적으로 전달할 수 있다.
만약, 미리 읽기 과정에서 D2 데이터에 대한 오류가 발생하는 경우, D1 데이터를 읽는 과정에서 이를 감지할 수 있다. 즉, D1 데이터를 읽는 과정에서 미리 D2 데이터를 복구하기 위한 패리티 블록에 대한 읽기 요청을 수행할 수 있다. 이 때, 이미 미리읽기 요청을 통해 D3 데이터와 D4 데이터에 대한 읽기 요청은 진행 중이기 때문에 패리티 블록 P1에 대한 읽기 요청만 해당 데이터 서버로 전달할 수 있다.
이 후, D1 데이터에 대한 읽기 연산이 처리되더라도 해당 데이터 블록은 삭제되지 않고 블록 유니트에 저장되기 때문에 나중에 나머지 D3, D4, P1이 수신되는 경우, D1과 함께 복구 연산 및 디코딩을 수행할 수 있다. 이를 통해 장애 데이터 D2를 복구하고 이를 반환하여 읽기 요청에 대한 연산을 완료할 수 있다.
이와 같은 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법을 통해 분산 파일시스템의 전체적인 입출력 성능을 개선할 수 있다.
또한, 분산 파일시스템에서 데이터서버나 네트워크에 의한 순간적인 장애로 인해 입출력 성능이 저하되는 것을 방지할 수 있다.
도 3은 본 발명에 따른 클라이언트 파일시스템의 일 예를 나타낸 블록도이다.
도 3을 참조하면, 본 발명에 따른 클라이언트 파일시스템은 파일 입출력 관리기(310), 선반입 관리기(320), 파일 정보 관리기(330), 블록 그룹 관리기(340), 블록 유니트 관리기(350), 디코더(360) 및 데이터 통신 처리기(370)를 포함한다.
먼저, 파일 입출력 관리기(310)는 응용으로부터 FUSE(FILESYSTEM IN USERSPACE)를 통해 전달되는 파일 시스템에 대한 네임스페이스 또는 데이터 처리 연산들을 수신할 수 있고, 분산 파일 시스템의 메타데이터 서버와 통신하며 이를 처리할 수 있다.
예를 들어, 데이터 읽기 연산이 입력되는 경우, 메타데이터 서버로부터 해당 파일의 메타데이터를 요청하여 저장한 후 처리를 시작할 수 있다. 이 때, 클라이언트에서 관리되는 메타 데이터에는 소거 코딩 기반으로 데이터 및 패리티가 저장된 청크 정보들이 포함될 수 있으며, 그 구조는 도 5에 도시된 것과 같이 나타낼 수 있다.
도 5를 참조하여 설명하면, 본 발명의 일실시예에 따른 클라이언트에서는 특정 파일의 데이터에 대한 첫 번째 읽기 연산이 오면, 먼저 메타데이터 서버로 해당 파일의 메타데이터 정보를 요청하여 파일 메타데이터(500)로 저장할 수 있다. 이 과정에서 장애, 파일 갱신 등의 특정 상황이 발생하지 않는 이상, 저장된 파일 메타데이터(500)를 활용하여 파일 데이터에 대한 읽기 연산을 처리할 수 있다. 이와 같이, 클라이언트 단에서 관리하는 파일 메타데이터(500)는 메타데이터 서버에서 관리하는 블록 정보(521)에 서버 상태와 디스크 상태를 추가적으로 관리할 수 있다. 이러한 정보는 디코딩 처리를 판단하여 진행하는데 중요한 요소이다.
선반입 관리기(320)는 파일 데이터에 대한 읽기 연산의 미리읽기 처리 여부를 판단할 수 있고, 선제적인 선반입이 필요한 경우에는 시스템에서 미리 설정된 크기(예를 들어 10MB)의 데이터에 대한 미리읽기 요청을 처리할 수 있다.
파일 정보 관리기(330)는 파일 단위로 소거 코딩 데이터에 대한 미리읽기 처리를 지원하는 구조체로서, 필요한 블록 그룹 및 블록들을 관리할 수 있다.
블록 그룹 관리기(340)는 볼륨에서 설정하는 소거 코딩 구조에 따라 구성되는 데이터 블록들 및 패리티 블록들 그룹마다 이를 관리하는 구조체를 정의할 수 있고, 미리읽기가 진행되는 동안에는 이들을 관리할 수 있다. 이 때, 블록 그룹의 구조는 도 6에 도시된 것과 같이 나타낼 수 있다.
도 6을 참조하면, 클라이언트의 파일 정보 관리기(600)는 미리읽기가 진행되는 동안 해당 파일에서 처리 중인 블록 그룹 및 블록들을 관리할 수 있다. 이를 위해 블록 그룹 리스트(601)와 블록 유니트 리스트(602)를 정의할 수 있다. 이 때, 블록 그룹 리스트(601)는 블록 그룹마다 생성되는 블록 그룹 구조체(610)를 관리할 수 있다. 또한, 블록 유니트 리스트(602)는 파일 데이터에 대해 읽기 연산을 처리 중인 모든 블록 유니트마다 생성되는 블록 유니트 구조체(620)를 관리하되, 각 블록 유니트가 정의하는 파일 오프셋의 올림 차순으로 리스트에서 연결하여 관리할 수 있다. 이 때, 각 블록 유니트 구조체(620)는 도 6에 도시된 것처럼 읽은 데이터를 저장하는 데이터 버퍼(630)를 관리할 수 있다. 이러한 데이터 버퍼(630)의 크기는 사용자 정의 변수에 해당하지만, 본 발명의 일실시예에 따른 파일시스템에서는 일반적인 리눅스 파일시스템에서 처리하는 최대 입출력 크기인 128KB인 것으로 정의하도록 한다.
또한, 도 7을 참조하면, 블록 그룹 구조체(710)는 소거 코딩 기반으로 저장되는 데이터 블록 및 패리티 블록의 그룹에 상응하는 것으로, 본 발명의 일실시예에 따른 파일시스템에서 블록은 청크로 정의되며, 블록 그룹 구조체(710)에서는 읽기 연 산 처리와 선반입 기반 디코딩 처리에 필요한 정보를 관리할 수 있다. 이 때, 장애 블록 수(711)는 해당 블록 그룹을 구성하는 데이터 블록 및 패리티 블록들 중 장애로 인해 접근이 불가능한 블록 수를 나타낼 수 있다. 완료 블록 맵(712)은 해당 블록 그룹을 구성하는 데이터 블록 및 패리티 블록들 중 읽기가 완료된 블록들을 나타낼 수 있다. 또한, 비트맵(714)에서 각 비트는 블록 그룹 내 블록의 인덱스를 의미할 수 있다. 예를 들어, 도 5에서 데이터 블록 1의 블록 인덱스는 0이고, 데이터 블록 4의 블록 인덱스는 3, 패리티 블록 2의 블록 인덱스는 5로 정의할 수 있다. 이 때, 비트맵(714)의 비트가 1이면 해당 블록 유니트가 읽기 완료되어 데이터 버퍼에 저장되었음을 의미할 수 있다.
블록 유니트 관리기(350)는 볼륨에서 설정하는 소거 코딩 구조에 따라 구성되는 데이터 블록 및 패리티 블록들 중 미리읽기가 진행되는 블록 유니트들을 관리할 수 있다. 이 때, 블록 유니트는 파일시스템에서 지정한 최대 입출력 크기인 128KB 크기로 정의될 수 있으며, 도 8에 도시된 것과 같은 구조에 상응할 수 있다.
도 8을 참조하면, 블록 유니트 구조체(810)는 청크로부터 파일시스템에서 지정한 최대 입출력 크기인 128KB 단위로 정의될 수 있으며, 블록 유니트 구조체(810)에서는 해당 유니트를 식별하는데 필요한 정보를 관리할 수 있다. 이 때, 블록 그룹 주소(811)는 블록 유니트가 속하는 블록 그룹 구조체(810)의 주소를 관리할 수 있다. 블록 인덱스(812)는 블록 그룹에서 해당 블록 유니트가 속하는 블록의 위치를 정의할 수 있으며, 도 7의 완료 블록 맵 (712)에서 설명한 내용과 동일하다. 또한, 요청 처리 상태값(813)은 데이터 통신 처리기를 통해 데이터 서버로 전달된 읽기 요청의 처리 상태를 나타내는 값으로, 처리 중일 경우에는 SEND, 처리 완료되면 DONE 으로 설정될 수 있다. 데이터 버퍼(815)는 128KB 크기의 데이터 유니트를 저장할 수 있으며, 데이터 버퍼 맵(814, 816)은 비트가 4KB에 상응하며, 데이터 버퍼 내 데이터가 저장된 위치를 나타낼 수 있다. 예를 들어, 데이터 버퍼 맵(816)의 모든 비트가 1이면, 데이터 버퍼에 해당 유니트의 데이터가 모두 저장되었음을 의미할 수 있다.
디코더(360)는 읽기 연산이 처리되는 동안에 장애 상황이 인지되었을 경우, 미리읽기를 통해 선제적으로 선반입되는 데이터 블록 및 패리티 블록을 이용하여 디코딩을 수행함으로써 장애 데이터를 복구하여 처리할 수 있다.
데이터 통신 처리기(370)는 클라이언트와 데이터 서버들을 연결하는 스토리지 네트워크 프로토콜에 기반하여 데이터 입출력을 처리할 수 있다.
도 9 내지 도 13은 본 발명의 일실시예에 따른 선제적 선반입과 주동적인 디코딩을 통한 읽기 처리 과정을 상세하게 나타낸 동작흐름도이다.
도 9 내지 도 13을 참조하면, 본 발명의 일실시예에 따른 선제적 선반입과 주동적인 디코딩을 통한 읽기 처리 과정은 먼저 도 9에 도시된 것처럼 응용으로부터 클라이언트의 파일 입출력 관리기로 읽기 요청이 전달되면, 클라이언트의 선반입 관리기에서 읽기 요청의 오프셋과 데이터 크기가 현재 진행 중인 미리읽기 범위에 포함되는지 여부를 통해 선반입 요청을 검토한다(S910).
이 후, 선반입 요청이 필요한지 여부를 판단하고(S915), 읽기 요청된 데이터가 이미 미리읽기 범위에 포함되어 있으면, 도 10에 도시된 것처럼 파일 정보 관리기를 통해 해당 데이터를 검색한다(S1010).
단계(S915)의 판단결과 읽기 요청된 데이터가 아직 미리읽기 범위에 포함되지 않았으면, 블록 그룹 구조체 및 블록 유니트 구조체를 생성하고, 각각을 리스트에 추가하여 저장할 수 있다(S920).
이 때, 선반입 처리할 블록 그룹이 파일 정보 관리기의 블록 그룹 리스트에 존재하는지 여부를 검색하고, 아직 존재하지 않으면 블록 그룹 구조체를 생성하여 리스트에 저장할 수 있다. 이 후, 첫 번째 블록 유니트 구조체를 생성하여 파일 정보 관리기의 블록 유니트 리스트와 해당 블록 그룹 구조체의 그룹 내 블록 유니트 리스트에 저장할 수 있다.
이 후, 단계(S925)에서 해당 블록 유니트가 마지막 블록 유니트인지 여부를 판단하는 과정을 통해 선반입이 필요한 모든 블록 유니트들에 대해 반복수행하는 과정을 거칠 수 있다.
단계(S925)의 판단결과 해당 블록 유니트가 마지막 블록 유니트가 아니면, 해당 블록 유니트에 대한 읽기 요청을 위해 파일 메타데이터로부터 해당 블록이 저장된 서버와 디스크 상태가 정상 상태인지 여부를 확인한다(S935).
단계(S935)의 판단결과 서버와 디스크 상태가 모두 정상이면, 해당 블록 유니트의 요청 처리 상태값을 SEND로 설정한 후 데이터 통신 처리기를 통해 데이터 서버로 읽기 요청을 전달한다(S940).
또한, 단계(S935)의 판단결과 서버나 디스크 상태 중 적어도 하나가 정상 상태가 아니면, 해당 블록 유니트의 블록 인덱스를 블록 그룹 내 패리티 블록 중 정상 상태인 패리티 블록의 인덱스로 변경하고, 요청 처리 상태값을 SEND로 설정한 후 해당 패리티가 저장된 서버로 읽기 요청을 전달한다(S950).
단계(S940) 또는 단계(S950) 이후에는 단계(S925)부터의 반복을 통해 선반입이 필요한 모든 블록 유니트들에 대한 읽기 요청을 처리할 수 있다.
이후에서는 도 10을 참조하여 읽기 연산을 처리하는 과정을 설명하도록 한다.
도 10에 도시된 읽기 연산 처리를 위한 단계에서는(1), 우선 응용으로부터 전달된 읽기 연산의 정보를 이용하여 파일 정보 관리기의 블록 유니트 리스트로부터 읽으려는 데이터의 블록 유니트를 검색한다(S1010).
이 후, 각 블록 유니트는 해당 유니트가 저장하는 데이터의 파일 오프셋 정보를 관리할 수 있고, 해당 블록 유니트를 찾으면 요청 처리 상태값을 확인한다(S1020).
이 후, 요청 처리 상태값을 확인하여(S1025), 요청 처리 상태값이 아직 SEND이면, 아직 데이터 서버로부터 처리 중이라는 의미이므로 요청 처리가 완료되면 재시작하는 조건을 설정하고 대기한다(S1030).
단계(S1025)의 판단결과 요청 처리 상태값이 DONE이면, 데이터 서버로부터 읽기 완료되었다는 의미이므로 해당 데이터 블록 유니트의 블록 인덱스를 확인한다(S1040).
이 후, 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 작은지 판단하고(S1045), 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 작으면, 데이터 블록으로부터 정상적으로 읽은 데이터로서 읽기 연산의 오프셋부터 데이터 크기만큼을 버퍼로부터 반환하고 읽기 요청을 완료하고(S1050), 도 13에 도시된 것처럼 각 읽기 연산이 완료될 때마다 블록 그룹을 해제하는 단계를 진행한다(4).
또한, 단계(S1045)의 판단결과 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 크거나 같으면, 이는 데이터 대신 패리티 블록을 읽은 것으로 디코딩을 위한 단계를 진행한다(2).
도 11을 참조하면, 디코딩을 위한 단계에서는(2), 먼저 파일 정보 관리기의 블록 그룹 리스트로부터 해당 블록 그룹 구조체를 찾고, 완료 블록 맵을 검사한다(S1110).
이 후, 비트맵의 모든 비트가 1인지 검사하고(S1115), 아직 0인 비트가 있으면, 해당 읽기 요청이 완료되었을 때 디코딩을 처리하는 단계를 진행한다(3).
또한, 단계(S1115)의 검사결과 비트맵의 모든 비트가 1이면, 블록 그룹의 그룹 내 블록 유니트 리스트로부터 모든 블록의 버퍼에 저장되어 있는 데이터 및 패리티로 디코딩을 수행하여 장애가 발생한 데이터를 복구하고, 읽기 연산의 오프셋부터 데이터 크기만큼 버퍼로부터 반환하여 읽기 요청을 완료한다(S1120).
이 후, 각 읽기 연산이 완료될 때마다 블록 그룹을 해제하는 단계를 진행 한다(4).
도 12 참조하면, 읽기 요청이 완료되었을 때 디코딩을 처리하는 단계에서는(3) 데이터 통신 처리기를 통해 데이터 수신이 완료되면, 해당 블록 유니트의 버퍼 맵에서 블록 인덱스에 해당하는 비트를 1로 설정하고, 요청 처리 상태값을 DONE으로 설정한 후 해당 블록 유니트의 블록 인덱스를 확인한다(S1210).
이 후, 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 작은지 여부를 판단하고(S1215), 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 작으면, 대기 중인 요청이 있는지 확인하고 선제적 선반입과 주동적인 디코딩을 통한 읽기 처리 과정을 재시작한다(S1220).
또한, 단계(S1215)의 판단결과 블록 인덱스가 블록 그룹 내 데이터 블록 수보다 크거나 같으면, 이는 데이터 블록 대신 패리티 블록을 읽은 것으로 판단하고 디코딩을 위한 단계를 진행한다(2).
마지막으로 도 13을 참조하면, 블록 그룹을 해제하는 단계에서는(4) 우선 블록 그룹의 마지막 블록 유니트에 대한 읽기를 완료하였는지 여부를 판단하고(S1305), 아직 처리되지 않은 블록 유니트가 존재하면, 다시 읽기 연산 처리를 위한 단계를 진행한다(1).
단계(S1305)의 판단결과 블록 그룹의 마지막 유니트에 대한 읽기를 완료하였으면, 파일 정보 관리기의 블록 그룹 리스트로부터 해당 블록의 구조체를 삭제한다(S1310).
이 후, 파일 정보 관리기의 블록 유니트 리스트로부터 삭제시킨 블록 그룹에 속하는 모든 블록 유니트들의 구조체를 삭제하고(S1320). 다시 읽기 연산 처리를 위한 단계로 진행한다(1).
도 14는 기존 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 시간의 일 예를 나타낸 도면이다.
도 15는 본 발명에 따른 분산 파일 시스템에서 읽기 중에 장애발생 시 복구에 의한 읽기 처리 사간의 일 예를 나타낸 도면이다.
도 14 내지 도 15를 참조하면, 본 발명의 실시간 데이터 복구에 의한 읽기 처리 시간과 기존의 데이터 복구에 의한 읽기 처리 시간을 비교할 수 있다.
먼저, 도 14에 도시된 것처럼 기존의 데이터 복구 기술을 기반으로 4+2 소거 코딩으로 저장된 데이터를 순차적으로 읽는 과정을 설명하면 다음과 같다.
도 14에 도시된 첫 번째 데이터인 D1에 대한 읽기 요청이 클라이언트로부터 해당 데이터 서버로 요청되었다고 가정할 수 있다. 이 때, D1 전송시간(1410)은 데이터 서버 수준에서 D1 데이터를 저장장치로부터 읽어와서 네트워크를 통해 반환하는 시간까지 포함할 수 있으며, D1 전송시간(1410) 이후에 클라이언트로 반환 되고 수신된 D1 데이터는 응용으로 반환될 수 있다.
이 후, 두 번째 데이터 D2에 대한 읽기 요청이 오고, 데이터 서버로 전송되는 중 또는 처리되는 중에 장애가 인지되어 클라이언트로 오류가 반환되었다고 가정할 수 있다. 이 때, 오류를 인지하면 클라이언트에서는 동일 소거 코딩 그룹에 속하는 나머지 D1, D3, D4 에 대한 읽기를 해당 데이터 서버들로 병렬 요청하고, D2 데이터의 복구를 위해 접근 가능한 패리티 블록 P1에 대한 읽기를 해당 데이터 서버로 요청할 수 있다. 이 후, 각 데이터 서버로부터 데이터와 패리티가 수신되면, 이를 복구 연산 시간(1450)동안 디코딩하여 장애 데이터인 D2 데이터를 복구하고, 이를 반환하여 읽기 연산을 완료할 수 있다. 따라서, 실제로 D2 데이터에 대한 읽기 연산 처리 시간은 (장애 인지 시간 + D1 재전송 시간(1411) + D3 전송시간(1420) + D4 전송시간(1430) + P1 전송시간(1440) + 복구 연산 시간)을 모두 포함한 것에 해당할 수 있다.
이에 반해 도 15를 참조하면, 본 발명에서 제안하는 기술에서는 데이터 접근에 순차성이 인지되면 선제적 선반입을 적용하므로, D1 읽기 요청과 선반입 크기의 데이터에 대한 미리읽기 요청을 동시에 해당 데이터 서버들에게 병렬적으로 요청할 수 있다. 이 때, 미리 읽기 과정에서 D2 데이터에 대해 오류가 반환되면서 장애를 미리 인지할 수 있다. 따라서, 디코딩을 위한 동일 소거 코딩 그룹에 대한 데이터 블록과 함께 패리티 블록에 대한 읽기 요청을 처리할 수 있다. 이 때, 이미 미리읽기 요청을 통해 D3 데이터와 D4 데이터에 대한 읽기 요청은 진행 중이므로 패리티 블록 P1 에 대한 읽기 요청만을 해당 데이터 서버로 전달할 수 있다. 또한, D1 데이터가 완료되어 읽기 연산이 처리되더라도 해당 데이터 블록은 삭제되지 않고 블록 유니트로 유지될 수 있으며(D1), 나머지 D3, D4, P1이 수신되면, D1과 함께 복구 연산 시간(1550)동안 디코딩하여 장애 데이터 D2를 복구하고 이를 반환한 후 읽기 연산을 완료할 수 있다. 따라서, 본 발명의 일실시예에 따른 D2 읽기 연산 처리 시간은 (D3 전송시간(1520) + D4 전송시간(1530) + P1 전송시간(1540) + 복구 연산 시간(1550)만을 포함하므로 기존 기술에 비해 장애 시 읽기 성능을 개선할 수 있다.
이상에서와 같이 본 발명에 따른 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
110-1~110-N: 클라이언트
120: 메타데이터 서버
130-1~130-M: 데이터서버 140-1~140-L: 디스크
310: 파일 입출력 관리기 320: 선반입 관리기
330, 600: 파일 정보 관리기 340: 블록 그룹 관리기
350: 블록 유니트 관리기 360: 디코더
370: 데이터 통신 처리기 400, 500: 파일 메타데이터
410, 510: 소거 코딩 블록 그룹 레이아웃
421~426, 521, 522: 블록 정보 430: 데이터 서버 주소
431: 디스크 식별자 432: 청크 식별자
433: 블록 데이터 601: 블록 그룹 리스트
602: 블록 유니트 리스트 610, 710: 블록 그룹 구조체
620, 810: 블록 유니트 구조체 630: 데이터 버퍼
711: 장애 블록 수 712: 완료 블록 맵
713: 그룹 내 블록 유니트 리스트 714: 비트맵
811: 블록 그룹 주소 812: 블록 인덱스
813: 요청 처리 상태값 814, 816: 데이터 버퍼 맵
815: 데이터 버퍼 1410, 1510: D1 전송시간
1411: D1 재전송시간 1420, 1520: D3 전송시간
1430, 1530: D4 전송시간 1440, 1540: P1 전송시간
1450, 1550: 복구 연산시간
130-1~130-M: 데이터서버 140-1~140-L: 디스크
310: 파일 입출력 관리기 320: 선반입 관리기
330, 600: 파일 정보 관리기 340: 블록 그룹 관리기
350: 블록 유니트 관리기 360: 디코더
370: 데이터 통신 처리기 400, 500: 파일 메타데이터
410, 510: 소거 코딩 블록 그룹 레이아웃
421~426, 521, 522: 블록 정보 430: 데이터 서버 주소
431: 디스크 식별자 432: 청크 식별자
433: 블록 데이터 601: 블록 그룹 리스트
602: 블록 유니트 리스트 610, 710: 블록 그룹 구조체
620, 810: 블록 유니트 구조체 630: 데이터 버퍼
711: 장애 블록 수 712: 완료 블록 맵
713: 그룹 내 블록 유니트 리스트 714: 비트맵
811: 블록 그룹 주소 812: 블록 인덱스
813: 요청 처리 상태값 814, 816: 데이터 버퍼 맵
815: 데이터 버퍼 1410, 1510: D1 전송시간
1411: D1 재전송시간 1420, 1520: D3 전송시간
1430, 1530: D4 전송시간 1440, 1540: P1 전송시간
1450, 1550: 복구 연산시간
Claims (1)
- 분산 파일 시스템을 구성하는 클라이언트 기반의 파일 시스템이, 기설정된 미리 읽기 범위를 고려하여 복수개의 데이터 서버들로부터 동일 소거 코딩 그룹에 대한 데이터 블록 미리 읽기를 수행하는 단계;
상기 데이터 블록 미리 읽기 중 오류가 발생하는 경우, 상기 클라이언트 기반의 파일 시스템이 상기 오류가 발생하기 이전에 읽기 처리된 데이터 블록을 삭제하지 않고 블록 유니트에 보관하는 단계;
상기 클라이언트 기반의 파일 시스템이, 상기 복수개의 데이터 서버들 중 상기 오류가 발생한 데이터 서버로 패리티 블록을 요청하는 단계; 및
상기 클라이언트 기반의 파일 시스템이, 상기 패리티 블록을 기반으로 한 복구 연산을 수행함과 동시에 상기 블록 유니트에 보관된 데이터 블록 및 정상적으로 읽기 처리된 데이터 블록을 기반으로 디코딩을 수행하여 읽기 요청을 처리하는 단계
를 포함하는 것을 특징으로 하는 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190019616A KR20200101594A (ko) | 2019-02-20 | 2019-02-20 | 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190019616A KR20200101594A (ko) | 2019-02-20 | 2019-02-20 | 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200101594A true KR20200101594A (ko) | 2020-08-28 |
Family
ID=72292074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190019616A KR20200101594A (ko) | 2019-02-20 | 2019-02-20 | 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200101594A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286717A (zh) * | 2020-10-28 | 2021-01-29 | 四川效率源信息安全技术股份有限公司 | 一种固态硬盘启用trim命令后的数据恢复方法 |
CN115016979A (zh) * | 2022-06-30 | 2022-09-06 | 中国工商银行股份有限公司 | 纠删码数据处理方法、装置及系统、存储介质、处理器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120090320A (ko) | 2011-02-07 | 2012-08-17 | 케이티하이텔 주식회사 | 분산 파일 시스템에서 효율적인 자료 복구 방법 |
-
2019
- 2019-02-20 KR KR1020190019616A patent/KR20200101594A/ko unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120090320A (ko) | 2011-02-07 | 2012-08-17 | 케이티하이텔 주식회사 | 분산 파일 시스템에서 효율적인 자료 복구 방법 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286717A (zh) * | 2020-10-28 | 2021-01-29 | 四川效率源信息安全技术股份有限公司 | 一种固态硬盘启用trim命令后的数据恢复方法 |
CN112286717B (zh) * | 2020-10-28 | 2023-08-01 | 四川效率源信息安全技术股份有限公司 | 一种固态硬盘启用trim命令后的数据恢复方法 |
CN115016979A (zh) * | 2022-06-30 | 2022-09-06 | 中国工商银行股份有限公司 | 纠删码数据处理方法、装置及系统、存储介质、处理器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11153094B2 (en) | Secure data deduplication with smaller hash values | |
US8165221B2 (en) | System and method for sampling based elimination of duplicate data | |
CN106407040B (zh) | 一种远程数据复制方法及系统 | |
US9798728B2 (en) | System performing data deduplication using a dense tree data structure | |
US9779023B1 (en) | Storing inline-compressed data in segments of contiguous physical blocks | |
US9747317B2 (en) | Preserving past states of file system nodes | |
US9569458B2 (en) | Preserving a state using snapshots with selective tuple versioning | |
US10002048B2 (en) | Point-in-time snap copy management in a deduplication environment | |
US8819208B2 (en) | Data deletion in a distributed data storage system | |
US9846540B1 (en) | Data durability using un-encoded copies and encoded combinations | |
WO2019184012A1 (zh) | 数据写入方法、客户端服务器和系统 | |
US8135918B1 (en) | Data de-duplication for iSCSI | |
CN108733311B (zh) | 用于管理存储系统的方法和设备 | |
CN107590019B (zh) | 一种数据存储的方法和装置 | |
CN107153512B (zh) | 一种数据迁移方法和装置 | |
US10255288B2 (en) | Distributed data deduplication in a grid of processors | |
CN113535068A (zh) | 数据读取方法和系统 | |
US9805046B2 (en) | Data compression using compression blocks and partitions | |
CN116233111A (zh) | 一种基于Minio的大文件上传方法 | |
KR20200101594A (ko) | 분산 파일 시스템에서 클라이언트 기반의 실시간 데이터 복구에 기반한 디코딩 처리 방법 및 이를 위한 장치 | |
US9575679B2 (en) | Storage system in which connected data is divided | |
WO2023197937A1 (zh) | 数据处理方法及其装置、存储介质、计算机程序产品 | |
CN105159790A (zh) | 一种数据抢救方法及文件服务器 | |
CN113625952B (zh) | 一种对象存储方法、装置、设备及存储介质 | |
KR101009149B1 (ko) | 오너 단위의 파일 그룹화를 이용한 분산 파일 시스템 및파일 연산 방법 |