이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다.
기본적으로는 본 발명을 적용하는 다양한 실시예가 가능하나 여기서는 대표적인 실시예에 기초하여 본 발명에 대해 기술한다. 보다 명료한 기술을 위해 비록 일반적인 파일 시스템 및 분산 파일 시스템에서 상존하는 부분이라 할지라도 본 발명과 직접적인 관계가 없거나 불필요한 부분은 생략한다. 또한, 본 발명이 대상으로 하는 분산 파일 시스템의 모든 모듈 및 기능이 임의의 하드웨어, 운영체제, 컴퓨터 언어 및 네트워크 장치 상에서 구현되더라도 기본적으로는 동일한 의미를 가 지며, 특정 환경에서 운영하는 것이 비록 본 발명이 대상으로 하는 구조의 분산 파일 시스템의 성능상 유의한 개선 효과가 있다 하더라도 각 모듈 및 기능에는 근본적인 변화가 없으므로 이들은 모두 동일한 발명에 대한 다양한 실시예의 한 종류일 뿐임을 밝힌다.
도 1은 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 하드웨어 구성도이다.
도 1을 참조하면, 본 발명의 비대칭 분산 파일 시스템(ADFS: Asymetric Distributed File System)(10)은, 네트워크상(14)에 연결된 다수의 클라이언트(Client)들(11-1 내지 11-4)과, 메타데이터 서버(MDS: Meta Data Server)(12)와, 다수의 데이터 서버(DS: Data Server)들(13-1 내지 13-4)을 구비한다.
메타데이터 서버(12)는 비대칭 분산 파일 시스템(10)에서 사용하는 각종 메타데이터를 저장 관리한다. 메타데이터 서버(12)는 메타데이터를 저장 관리하기 위하여 메타데이터 처리 모듈과 함께 자체적인 메타데이터 저장소를 구비한다. 여기서, 상기 저장소는 파일 시스템들(ext2, ext3, xfs)이거나, 데이터베이스(DBMS)일 수 있다.
데이터 서버들(13-1 내지 13-4)은 네트워크(14)에 연결된 다수의 물리적인 저장장치로서, 이 저장장치는 파일의 실제 데이터를 저장 관리하고 아울러 파일의 실제 데이터의 입출력 기능을 수행한다.
네트워크(14)는 랜(LAN: Local Area Network), 광역네트워크(WAN: Wide Area Network), 저장네트워크(SAN: Storage Area Network), 무선 네트워크(wireless network) 뿐 아니라 하드웨어들 간에 교신을 가능하게 하는 임의의 네트워크 중 하나로서, 여기서는 클라이언트들(11-1 내지 11-4), 메타데이터 서버(12) 및 데이터 서버들(13-1 내지 13-4) 간의 교신을 위해 사용된다.
도 2는 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 소프트웨어 구성도이다.
도 2를 참조하면, 파일 시스템 클라이언트 모듈(11-1b)은 클라이언트(11-1)에서 수행되는 비대칭 분산 파일 시스템(10)에 접근하는 응용 프로그램(11-1a)이 비대칭 분산 파일 시스템에 저장된 파일에 접근할 수 있도록 POSIX와 같은 파일 시스템 접근 인터페이스를 제공하는 기능을 한다.
파일 시스템 클라이언트 모듈(11-2b)은 클라이언트(11-2)에서 수행되는 비대칭 분산 파일 시스템(10)에 접근하는 응용 프로그램(11-2a)이 비대칭 분산 파일 시스템에 저장된 파일에 접근할 수 있도록 POSIX와 같은 파일 시스템 접근 인터페이스를 제공하는 기능을 한다.
파일 시스템 클라이언트 모듈(11-3b)은 클라이언트(11-3)에서 수행되는 비대칭 분산 파일 시스템(10)에 접근하는 응용 프로그램(11-3a)이 비대칭 분산 파일 시스템에 저장된 파일에 접근할 수 있도록 POSIX와 같은 파일 시스템 접근 인터페이스를 제공하는 기능을 한다.
파일 시스템 클라이언트 모듈(11-4b)은 클라이언트(11-4)에서 수행되는 비대칭 분산 파일 시스템(10)에 접근하는 응용 프로그램(11-4a)이 비대칭 분산 파일 시스템에 저장된 파일에 접근할 수 있도록 POSIX와 같은 파일 시스템 접근 인터페이 스를 제공하는 기능을 한다.
메타데이터 서버(12)는 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일의 메타데이터만을 저장 관리하며, 그리고 메타데이터 관리 모듈(12a) 및 고장 회복 모듈(12b)을 구비한다. 메타데이터 저장 관리 모듈(12a)은 분산 파일 시스템에서 사용되는 모든 메타데이터를 저장 관리한다. 메타데이터 저장 관리 모듈(12a)은 ext3 파일 시스템 또는 데이터베이스(DBMS)를 저장소(12c)로 활용하여 메타데이터를 디스크에 저장한다. 고장 회복 모듈(12b)은 파일 시스템 일관성 오류를 복구한다. 이 복구 기능은 관리자에 의해 수동으로 기동되거나 시스템 감시 소프트웨어가 고장을 감지하거나 혹은 미리 정해진 주기에 따라 자동적으로 기동될 수 있다.
데이터 서버(13-1)는 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일의 데이터를 저장 관리하며, 그리고 청크 저장 관리 모듈(13-1a) 및 저장소(13-1b)를 구비한다. 청크 저장 관리 모듈(13-1a)은 저장소(13-1b)를 통해 클라이언트들(11-1 내지 11-4)들 중 적어도 하나의 클라이언트로부터 전달된 데이터를 저장 관리한다.
데이터 서버(13-2)는 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일의 데이터를 저장 관리하며, 그리고 청크 저장 관리 모듈(13-2a) 및 저장소(13-2b)를 구비한다. 청크 저장 관리 모듈(13-2a)은 저장소(13-2b)를 통해 클라이언트들(11-1 내지 11-4)들 중 적어도 하나의 클라이언트로부터 전달된 데이터를 저장 관리한다.
데이터 서버(13-3)는 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일의 데이터를 저장 관리하며, 그리고 청크 저장 관리 모듈(13-3a) 및 저장소(13-3b)를 구비한다. 청크 저장 관리 모듈(13-3a)은 저장소(13-3b)를 통해 클라이언트들(11-1 내지 11-4)들 중 적어도 하나의 클라이언트로부터 전달된 데이터를 저장 관리한다.
데이터 서버(13-4)는 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일의 데이터를 저장 관리하며, 그리고 청크 저장 관리 모듈(13-4a) 및 저장소(13-4b)를 구비한다. 청크 저장 관리 모듈(13-4a)은 저장소(13-4b)를 통해 클라이언트들(11-1 내지 11-4)들 중 적어도 하나의 클라이언트로부터 전달된 데이터를 저장 관리한다.
도 3은 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 파일 저장 구조를 나타낸 도면이다.
도 3을 참조하면, 비대칭 분산 파일 시스템(10)에 저장되는 모든 파일들의 데이터, 즉 메타데이터(31)는 메타데이터 서버(12)에 저장된다. 여기서, 메타데이터(31)는 크기(size), 소유자(owner), 그룹 소유자(group), 접근 권한(mode), 및 시간들(atime, ctime, mtime) 등과 함께 이 파일의 데이터를 실제로 저장하고 있는 데이터 서버(DS) 식별자(DS#), 청크 식별자(CID#) 및 그 데이터의 무결성을 검증하기 위한 청크 크기(chunk size), 청크 버전(chunk version)으로 구성된다.
또한, 저장하는 파일의 데이터는 여러 개의 청크들(32)로 분할되어 데이터 서버들(13-1 내지 13-4)에 분할 저장된다. 이때 청크(32)는 파일 데이터와 함께 청크의 크기 및 청크의 버전 정보를 포함한다. 파일 접근시 메타데이터 서버(12)가 메타데이터를 얻어 청크의 위치를 파악한 후, 데이터 서버들(13-1 내지 13-4)들 중 청크가 저장된 데이터 서버가 청크 데이터를 읽는다. 이 상태에서, 메타데이터에 기록된 청크들의 위치, 크기 및 버전 등의 정보가 읽혀지는 청크의 실제 위치, 크기 및 버전 정보와 상이하면, 일관성 오류가 발생한 경우이다.
도 4는 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템에서 메타데이터와 청크 간의 일관성 오류의 유형들을 나타낸 도면이다.
비대칭 분산 파일 시스템(10) 환경에서 발생 가능한 일관성 오류는 고아(orphan) 객체 잔류 오류, 부재 객체 참조 오류 및 이상 객체 참조 오류 등 세가지 종류가 있다.
도 4를 참조하면, 고아 청크(orphan chunk) 오류(41)는 청크가 존재하나 어떠한 메타데이터도 이를 참조하지 않는 경우이다. 이러한 고아 청크 오류(41)는 파일 생성 과정에서 생성된 청크가 데이터 서버들(13-1 내지 13-4) 중 해당 데이터 서버의 저장소에 반영되었으나, 메타데이터 삭제 결과는 상기 저장소에 반영되기 전에 메타데이터 서버(12)에 장애가 생긴 경우 발생한다. 또한, 이러한 문제는 파일 삭제 과정에서 메타데이터 삭제 결과는 상기 저장소에 반영되었으나, 삭제된 청크 정보가 상기 저장소에 반영되기 전에 상기 데이터 서버에 장애가 생긴 경우 발생한다. 이러한 2가지 경우 모두 고아 청크는 상기 저장소의 해당 영역을 영원히 활용할 수 없도록 하므로 이들이 발생하지 않도록 하거나 효과적으로 제거해 주어야 한다.
부재 청크 참조(non-existent chunk reference) 오류(42)는 존재하지 않는 청크를 메타데이터에서 참조하는 경우이다. 이러한 부재 청크 참조 오류(42)는 파일 생성 과정에서 생성된 파일의 메타데이터가 상기 저장소에 반영되었으나, 생성된 청크는 상기 저장소에 반영되기 전에 데이터 서버들(13-1 내지 13-4) 중 해당 데이터 서버에 장애가 생긴 경우 발생한다. 또한, 이러한 오류는 파일 삭제 과정에서 삭제된 청크 정보가 상기 저장소에 반영되었으나, 해당 메타데이터가 상기 저장소에 반영되기 전에 메타데이터 서버(12)에 장애가 생긴 경우 발생한다.
이상 청크 참조(incorrect chunk reference) 오류(43)는 특정 파일의 메타데이터가 참조하고 있는 청크의 데이터, 크기 및 버전이 다른 경우이다. 이러하 경우는 청크의 데이터를 신뢰할 수 없으므로 더 이상 해당 파일에 대한 접근을 금지해야 하는 경우이다.
상기 오류들을 검출하고 복구하기 위한 궁극의 수단으로서 전수검사의 경우 모든 메타데이터 및 청크 정보를 상호 대조하는 방법을 사용하기 때문에 전체 수행 시간이 매우 길어지며, 이 검사가 완료되기 이전에는 정상적인 서비스가 불가능해진다.
상기 오류들을 검출하고 복구하기 위한 차선책으로 로그 기반 검출 및 복구 방법의 경우 대부분의 상황에서 최근에 변경된 파일들만을 검사의 대상으로 하기 때문에 전수 검사에 비해 매우 신속하게 수행되는 장점이 있지만, 경우에 따라 로그 유실과 같은 최악의 상황이 발생한 경우 전수 검사에 의존할 수밖에 없는 상황이 발생할 수 있다.
본 발명의 일실시예에 따른 일관성 오류 복구 방법은 상기 2가지 오류 유형들 중 부재 청크 참조 오류(42)와 이상 청크 참조 오류(43)를 전수 검사 및 로그에 의존하지 않고 감지하기 위한 방법으로서, 클라이언트 노드에서 파일 입출력 요청을 처리하는 작업과 함께 메타데이터에 기록되어 있는 청크의 위치, 버전 및 크기 등을 데이터 서버들(13-1 내지 13-4) 중 해당 데이터 서버가 읽은 청크의 정보와 대조하여 상호 간에 일관성 오류를 실시간에 검출하고, 오류 감지시 메타데이터 서버(12)의 장애 복구 절차에 이 사실을 자동으로 통지한다. 이를 통해 로그 정보가 유실된 경우 전수 검사를 바로 수행하지 않더라도 현재 접근되는 파일들에 대해 실시간으로 일관성 검사를 수행하여 사용자에게 잘못된 데이터가 전달되는 것을 방지하고, 이들 파일에 대해 우선적으로 장애 복구 절차를 기동할 수 있다.
도 5는 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템에서 점진적 일관성 검사 및 복구 방법을 가능하게 하는 파일 기록 절차를 나타낸 도면이다.
도 5를 참조하면, 클라이언트(51)로부터 청크 기록 요청을 요청받으면(S510), 데이터 서버(52)는 해당 청크의 데이터와 함께, 일관성 검사를 위한 부가 정보인 청크 크기(chunk size) 및 청크 버전(chunk version)을 갱신한다(S520). 상기 청크 크기는 갱신 이후의 청크의 변경된 크기로서 데이터가 추가된 경우, 이 청크 크기는 추가된 데이터의 크기만큼 증가되며, 데이터가 기존 데이터에 덮어 씌여진 경우 상기 청크 크기는 변경되지 않는다. 상기 청크 버전은 매 변경시마다 1씩 증가된다. 변경된 청크 크기 및 청크 버전 등의 정보는 메타데이터 서버(53)에 보고되며(S530), 메타데이터 서버(53)는 해당 청크에 해당하는 파일의 메타데이터 를 보고된 값으로 변경한다(S540). 이와 같은 파일 기록 절차에 의해 메타데이터의 청크 크기 및 청크 버전은 데이터 서버(52)의 청크 크기 및 청크 버전과 동기화된다.
여기서, 클라이언트(51)는 도 1의 클라이언트들(11-1 내지 11-4) 중 어느 하나이고, 데이터 서버(52)는 도 1의 데이터 서버들(13-1 내지 13-4) 중 어느 하나이며, 그리고 메타데이터 서버(53)는 도 1의 메타데이터 서버(12)이다.
도 6은 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 점진적 일관성 검사 및 복구 방법에서 일관성 오류가 없는 경우의 파일 접근 절차를 나타낸 도면이다. 즉, 도 6은 본 발명의 일실시예에 따른 메타데이터 서버와 데이터 서버 간의 청크 크기 및 청크 버전이 일치하는 정상적인 상태에서의 읽기 요청 처리 절차를 나타낸 것이다.
도 6을 참조하면, 클라이언트(61)는 먼저 메타데이터 서버(63)에 접속하여 파일 메타 데이터를 요청하고(S610), 메타데이터 서버(63)로부터 접근하려는 파일에 해당하는 메타데이터(65)를 얻은 다음(S620), 메타데이터에 기록된 정보에 따라 데이터 서버(62)에 해당 청크의 읽기 요청을 전달한다(S630). 이때, 클라이언트(61)는 메타데이터에 기록되어 있는 청크 크기(chunk size) 및 청크 버전(chunk version)을 상기 읽기 요청과 같이 전달하여, 데이터 서버(62)가 요청된 청크 정보와 저장된 청크 정보(64)를 비교할 수 있도록 한다. 데이터 서버(62)는 요청된 청크 정보와 저장된 청크 정보를 비교하여, 비교결과 일치하면(S640), 읽기 요청을 최종적으로 허용한다(S650).
여기서, 클라이언트(61)는 도 1의 클라이언트들(11-1 내지 11-4) 중 어느 하나이고, 데이터 서버(62)는 도 1의 데이터 서버들(13-1 내지 13-4) 중 어느 하나이며, 그리고 메타데이터 서버(63)는 도 1의 메타데이터 서버(12)이다.
도 7은 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 점진적 일관성 검사 및 복구 방법에서 이상 청크 오류가 존재하는 경우 읽기 요청 처리 절차를 나타낸 도면이다.
도 7을 참조하면, 클라이언트(71)는 먼저 메타데이터 서버(73)에 접속하여 파일 메타 데이터를 요청하고(S710), 메타데이터 서버(73)로부터 접근하려는 파일에 해당하는 메타데이터(75)를 얻은 다음(S720), 메타데이터에 기록된 정보에 따라 데이터 서버(72)에 해당 청크의 읽기 요청을 전달한다(S730). 이때, 클라이언트(71)는 메타데이터에 기록되어 있는 청크 크기(chunk size) 및 청크 버전(chunk version)을 상기 읽기 요청과 같이 전달하여, 데이터 서버(72)가 요청된 청크 정보와 저장된 청크 정보(74)를 비교할 수 있도록 한다.
데이터 서버(72)는 요청된 청크 정보와 저장된 청크 정보를 비교하여, 비교결과 불일치하면(S740), 저장된 청크 정보를 메타데이터 서버(73)에 보고하고 아울러 청크 일관성 오류를 보고하며(S750), 최종적으로 청크 읽기 실패를 클라이언트(71)에게 보고한다(S750). 이때, 청크 오류를 보고받은 메타데이터 서버(73)는 보고된 청크에 해당하는 메타데이터를 보고된 새로운 값으로 변경하며(S770), 필요한 경우 추가적인 복구 절차를 기동시킨다.
여기서, 클라이언트(71)는 도 1의 클라이언트들(11-1 내지 11-4) 중 어느 하 나이고, 데이터 서버(72)는 도 1의 데이터 서버들(13-1 내지 13-4) 중 어느 하나이며, 그리고 메타데이터 서버(73)는 도 1의 메타데이터 서버(12)이다.
도 8은 본 발명의 일실시예에 따른 비대칭 분산 파일 시스템의 점진적 일관성 검사 및 복구 방법에서 부재 청크 오류가 존재하는 경우 읽기 요청 처리 절차를 나타낸 도면이다.
도 8을 참조하면, 클라이언트(81)는 먼저 메타데이터 서버(83)에 접속하여 파일 메타 데이터를 요청하고(S810), 메타데이터 서버(83)로부터 접근하려는 파일에 해당하는 메타데이터(85)를 얻은 다음(S820), 메타데이터에 기록된 정보에 따라 데이터 서버(82)에 해당 청크의 읽기 요청을 전달한다(S830). 이때, 클라이언트(81)는 메타데이터에 기록되어 있는 청크 크기(chunk size) 및 청크 버전(chunk version)을 상기 읽기 요청과 같이 전달하여, 데이터 서버(82)가 요청된 청크 정보와 저장된 청크 정보(64)를 비교할 수 있도록 한다.
이 경우, 저장된 청크 정보가 존재하지 않기 때문에(S840), 데이터 서버(82)는 요청된 청크 정보와 저장된 청크 정보의 비교를 수행할 수 없음을 메타데이터 서버(83)에게 보고하고(S850), 최종적으로 청크 읽기 실패를 클라이언트(81)에게 보고한다(S860). 청크 오류를 보고받은 메타데이터 서버(83)는 필요한 경우 추가적인 복구 절차를 기동시킨다.
이때, 청크 오류를 보고받은 메타데이터 서버(83)는 보고된 청크에 해당하는 메타데이터를 보고된 새로운 값으로 변경하고(S870), 아울러 보고된 청크에 해당하는 메타데이터에 해당 청크가 존재하지 않음을 표시하고, 필요한 경우 추가적인 복 구 절차를 기동시킨다.
여기서, 클라이언트(81)는 도 1의 클라이언트들(11-1 내지 11-4) 중 어느 하나이고, 데이터 서버(82)는 도 1의 데이터 서버들(13-1 내지 13-4) 중 어느 하나이며, 그리고 메타데이터 서버(83)는 도 1의 메타데이터 서버(12)이다.
전술한 바와 같이, 본 발명의 실시예들은 로그 유실과 같은 최악의 상황에서 전수 검사 없이 신속하게 시스템을 재기동하도록 하고 파일 접근시 일관성 검사를 점진적으로 수행하여 일관성 문제없이 서비스를 재개할 수 있도록 함으로써, 전수 검사를 시스템의 부하가 낮은 시기로 연기할 수 있도록 한다. 그리고, 본 발명의 실시예들은 로그 유실시라도 장애 후 전수 검사 절차 없이 시스템을 재기동하더라도 일관성이 저해된 파일을 사용자가 접근하지 않도록 방지하고 파일 접근이 지속 됨과 함께 이들의 일관성 오류가 시간이 지남에 따라 점진적으로 자연 치유될 수 있도록 한다.
기존 로그 기반 절차가 메타데이터 서버 및 데이터 서버 양측에 별도의 로그를 두고 양측의 영속 저장 장치 반영 여부 등을 추적하기 위해 별도의 프로토콜로 상호 동기화하는 등의 추가 부담을 요구하는 반면에, 본 발명의 실시예들은 장애에 대비하기 위하여 정상적인 운영 과정에서 추가 부담을 요구하지 않아 비대칭 분산 파일 시스템의 보다 좋은 성능을 기대할 수 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며, 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 통상의 전문가라면 본 발명의 기술사상의 범위에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.