KR101545010B1 - 분산 파일 시스템 및 분산 파일 시스템의 수행 방법 - Google Patents

분산 파일 시스템 및 분산 파일 시스템의 수행 방법 Download PDF

Info

Publication number
KR101545010B1
KR101545010B1 KR1020080119017A KR20080119017A KR101545010B1 KR 101545010 B1 KR101545010 B1 KR 101545010B1 KR 1020080119017 A KR1020080119017 A KR 1020080119017A KR 20080119017 A KR20080119017 A KR 20080119017A KR 101545010 B1 KR101545010 B1 KR 101545010B1
Authority
KR
South Korea
Prior art keywords
data
event
server
file system
distributed file
Prior art date
Application number
KR1020080119017A
Other languages
English (en)
Other versions
KR20100060429A (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 KR1020080119017A priority Critical patent/KR101545010B1/ko
Publication of KR20100060429A publication Critical patent/KR20100060429A/ko
Application granted granted Critical
Publication of KR101545010B1 publication Critical patent/KR101545010B1/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
    • 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
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

분산 파일 시스템 및 분산 파일 시스템의 수행 방법이 개시된다. 분산 파일 시스템은 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지하는 이벤트 통지부, 상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 데이터 전송부 및 상기 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 상기 로컬 스토리지에 저장하는 데이터 수신부를 포함할 수 있다.
분산 파일 시스템, 웹 서버, 이벤트, 커널, 어플리케이션

Description

분산 파일 시스템 및 분산 파일 시스템의 수행 방법{DISTRIBUTED FILE SYSTEM AND METHOD FOR PERFORMING FOR DISTRIBUTED FILE SYSTEM}
본 발명은 분산 파일 시스템 및 분산 파일 시스템의 수행 방법에 관한 것으로, 보다 자세하게는, 로컬 스토리지에 저장된 데이터에 대해 발생하는 이벤트를 감지하고, 데이터를 다른 서버에 전송하여 분산 파일 시스템을 구성하는 모든 서버에 대한 데이터의 상태를 동일하게 반영하는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법에 관한 것이다.
서버 어플리케이션에 있어서 파일 시스템의 안정성은 무엇보다 중요하다. 최근, 많은 이용자들을 빠른 서비스 응답으로 만족시키기 위하여, 다수의 서버로 하나의 서비스를 운영하는 분산 파일 시스템이 대두되고 있다.
분산 파일 시스템은 서버들의 저장 공간을 하나의 가상적인 공간으로 가정하여 파일을 저장할 수 있다. 파일들을 분산 파일 시스템을 구성하는 서버에 저장하면, 데이터 처리 속도를 향상시킬 수 있다.
복수의 서버의 어플리케이션은 저장된 데이터의 변경 여부를 판단할 필요가 있다. 다만, 이 경우 데이터 변경을 감지하기 위한 오버헤드가 사용자에게 서비스 를 제공하는 어플리케이션의 데이터 처리에 영향을 끼쳐 서비스의 질이 저하되는 문제가 발생하였다. 또한, 데이터를 분산시키기 위해 어플리케이션에 따른 프로그래밍 언어별로 구현한 전용 API를 사용하는 경우, 이미 구현된 파일 입출력 API를 변경해야 할 문제가 존재하였다.
이러한 문제점으로 인해, 분산 파일 시스템의 데이터 처리 속도는 감소되는 결과를 초래할 수 있다.
본 발명은 서버의 로컬 스토리지에 저장된 데이터에 대한 이벤트를 감지하여 다른 서버에 전송함으로써, 분산 파일 시스템을 구성하는 서버 간에 동일한 데이터 상태를 유지할 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법을 제공한다.
본 발명은 커널 레벨의 데이터 입출력을 통해 로컬 스토리지에 저장된 데이터에 발생한 이벤트를 감지함으로써, 어플리케이션이 이벤트를 감지하는 데 요구되는 오버헤드를 감소시킬 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법을 제공한다.
본 발명은 서버가 다른 서버로부터 이벤트가 발생한 데이터를 수신한 경우, 이를 이벤트로 감지하지 않고 재전송 방지 정보를 통해 다른 서버로 다시 전송하지 않음으로써, 무한적으로 서버 간에 데이터가 반복 전송되는 것을 방지하는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법을 제공한다.
본 발명은 서버가 전송 지연된 다른 서버에 데이터를 전송하는 경우, 전송 완료된 서버의 정보를 함께 전송함으로써, 다른 서버가 수신한 데이터의 요청을 처리할 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법을 제공한다.
본 발명의 일실시예에 따른 분산 파일 시스템은 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지하는 이벤트 통지부, 상기 이벤트가 발 생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 데이터 전송부 및 상기 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 상기 로컬 스토리지에 저장하는 데이터 수신부를 포함할 수 있다.
본 발명의 일측면에 따르면, 이벤트 통지부는 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록하는 데이터 등록부 및 상기 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 상기 제1 데이터에 대한 이벤트 내용을 확인하는 이벤트 확인부를 포함할 수 있다.
본 발명의 일실시예에 따른 분산 파일 시스템의 수행 방법은 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지하는 단계, 상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 단계 및 상기 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 상기 로컬 스토리지에 저장하는 단계를 포함할 수 있다.
본 발명의 일측면에 따르면, 이벤트를 감지하여 통지하는 단계는 상기 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록하는 단계 및 상기 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 상기 제1 데이터에 대한 이벤트 내용을 확인하는 단계를 포함할 수 있다.
본 발명에 따르면, 서버의 로컬 스토리지에 저장된 데이터에 대한 이벤트를 감지하여 다른 서버에 전송함으로써, 분산 파일 시스템을 구성하는 서버 간에 동일한 데이터 상태를 유지할 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법이 제공된다.
본 발명에 따르면, 커널 레벨의 데이터 입출력을 통해 로컬 스토리지에 저장된 데이터에 발생한 이벤트를 감지함으로써, 어플리케이션이 이벤트를 감지하는 데 요구되는 오버헤드를 감소시킬 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법이 제공된다.
본 발명에 따르면, 서버가 다른 서버로부터 이벤트가 발생한 데이터를 수신한 경우, 이를 이벤트로 감지하지 않고 재전송 방지 정보를 통해 다른 서버로 다시 전송하지 않음으로써, 무한적으로 서버 간에 데이터가 반복 전송되는 것을 방지하는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법이 제공된다.
본 발명에 따르면, 서버가 전송 지연된 다른 서버에 데이터를 전송하는 경우, 전송 완료된 서버의 정보를 함께 전송함으로써, 다른 서버가 수신한 데이터의 요청을 처리할 수 있는 분산 파일 시스템 및 분산 파일 시스템의 수행 방법이 제공된다.
이하, 첨부된 도면들에 기재된 내용들을 참조하여 본 발명에 따른 실시예를 상세하게 설명한다. 다만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 본 발명의 일실시예에 따른 분산 파일 시스템의 수행 방법은 분산 파일 시스템에 의해 수행될 수 있다.
도 1은 본 발명의 일실시예에 따른 분산 파일 시스템의 전체 구성을 도시한 도면이다.
도 1을 참고하면, 분산 파일 시스템(100)은 복수의 서버(101-1~101-N) 로 구성될 수 있다. 본 발명의 일실시예에 따른 분산 파일 시스템(100)은 어플리케이션 레벨에서 구현될 수 있다. 분산 파일 시스템(100)을 구성하는 복수의 서버(101-1~101-N)는 동일한 데이터를 로컬 스토리지(102-1~102-N)에 저장할 수 있다.
일례로, 분산 파일 시스템(100)을 구성하는 서버(101-1~101-N) 각각은 자신의 로컬 스토리지(102-1~102-N)에 저장된 데이터에 대해 발생한 이벤트를 감지할 수 있다. 이 때, 데이터는 파일 또는 디렉토리를 의미할 수 있다. 또한, 이벤트는 파일 또는 디렉토리에 대한 변경, 삭제 또는 생성을 의미할 수 있다.
만약, 로컬 스토리지(102-2)에 저장된 데이터에 대해 이벤트가 발생하면, 서버(101-2)는 자신을 제외한 분산 파일 시스템(100)의 다른 서버(101-1 또는 101-N)에 이벤트를 통해 변경된 데이터를 전송함으로써 전체적으로 서버 간에 동일한 데이터 상태가 유지될 수 있다. 이 때, 분산 파일 시스템(100)은 이벤트를 감지하기 위한 데이터 입출력을 커널 레벨에서 수행할 수 있다. 그러면, 분산 파일 시스템(100)은 커널 레벨에서의 데이터 입출력을 통해 하드웨어인 로컬 스토리지(102-1~102-N)에서 이벤트를 감지하면, 이벤트에 의해 변경된 데이터의 내용을 어플리케이션에 통보할 수 있다. 이 때, 어플리케이션은 분산 파일 시스템(100)을 구성하는 복수의 서버(101-1~101-N)에서 동작하는 프로그램을 의미할 수 있다.
즉, 분산 파일 시스템(100)은 서버(101-1~101-N) 각각이 제공하는 서비스 별 프로그래밍 언어로 구현된 전용 어플리케이션을 사용하지 않고도, 커널 레벨의 데 이터 입출력을 통해 이벤트를 감지할 수 있다. 그러면, 분산 파일 시스템(100)은 운영체제에 따라 결정되는 로컬 스토리지(102-1~102-N)의 데이터 형태에 기초하여 이미 구현된 데이터 입출력을 사용할 수 있다. 따라서, 서비스를 제공하는 서버(101-1~101-N)가 수행하는 웹 서비스에 대해 이벤트를 감지하기 위한 오버헤드가 미치는 영향이 감소할 수 있다.
그러면, 분산 파일 시스템(100)의 다른 서버에 이벤트에 따른 데이터 변경을 반영하기 위해, 어플리케이션은 변경된 데이터를 다른 서버에 전송할 수 있다. 반대로, 어플리케이션은 변경된 데이터에 대해 다른 서버로부터 수신할 수 있다. 이 때, 어플리케이션은 다른 서버로부터 수신한 변경된 데이터를 로컬 스토리지에 반영할 수 있다. 데이터를 전송하고, 데이터를 수신하는 과정은 분산 파일 시스템(100)을 구성하는 복수의 서버(101-1~101-N) 각각이 공통적으로 수행할 수 있다.
도 2는 본 발명의 일실시예에 따른 분산 파일 시스템을 구성하는 하나의 서버에 대한 구체적인 구성을 도시한 블록 다이어그램이다.
도 2를 참고하면, 서버(101)는 이벤트 통지부(201), 데이터 전송부(202) 및 데이터 수신부(203)를 포함할 수 있다. 도 2의 구성은 분산 파일 시스템에 포함된 서버에 공통적으로 적용될 수 있다.
이벤트 통지부(201)는 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지할 수 있다. 이 때, 이벤트 통지부(201)는 데이터 등록부(204) 및 이벤트 확인부(205)를 포함할 수 있다. 여기서, 이벤트 통지부(201)는 서버(101)의 커널 레벨에서 동작할 수 있다.
데이터 등록부(204)는 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록할 수 있다. 이 때, 데이터 등록부(204)는 초기화를 통해 핸들을 생성하여 상기 생성된 핸들에 이벤트를 감지하기 위한 제1 데이터를 등록할 수 있다. 여기서, 제1 데이터는 로컬 스토리지에 저장된 파일 또는 디렉토리를 포함할 수 있다.
이 때, 데이터 등록부(204)는 커널이 수행하는 함수의 초기화를 통해 핸들을 생성할 수 있다. 예를 들어, 서버(101)의 운영체제가 리눅스인 경우, 서버(101)의 로컬 스토리지에 저장된 파일 또는 디렉토리는 각각의 inode를 가질 수 있다. inode는 파일 또는 디렉토리와 관련된 정보를 포함할 수 있다. 즉, 파일 또는 디렉토리가 변경되면, inode도 변경될 수 있다. 이 때, 리눅스의 커널은 inode의 변화를 어플리케이션에게 실시간으로 통보할 수 있는 inotify 기능을 수행할 수 있다. 따라서, 데이터 등록부(204)는 inotify의 초기화를 통해 파일 또는 디렉토리를 등록하기 위한 핸들을 생성할 수 있다. 상기 예는 서버의 운영체제가 리눅스인 경우이지만, 본 발명은 리눅스 외에 다른 운영체제에도 적용될 수 있다.
이벤트 확인부(205)는 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 상기 제1 데이터에 대한 이벤트 내용을 확인할 수 있다. 일례로, 이벤트 확인부(205)는 등록된 제1 데이터에 대한 정보가 기록된 객체의 변화를 실시간으로 감지하여 상기 제1 데이터에 대한 이벤트 발생 여부를 판단할 수 있다.
이 때, 서버(101)의 운영체제가 리눅스인 경우, 객체는 상기 언급한 inode일 수 있다. 예를 들어, 이벤트 확인부(205)는 inotify를 통해 inode의 변화를 확인 함으로써, 로컬 스토리지에 저장된 데이터에 대한 이벤트를 감지할 수 있다. 이벤트 확인부(205)는 inotify가 이벤트를 감지한 경우 inotify가 리턴한 정보(예를 들면, 절대 경로 등)를 통해 어느 디렉토리 또는 어느 파일에서 이벤트가 발생했는 지 여부를 확인할 수 있다.
데이터 전송부(202)는 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송할 수 있다. 데이터 전송부(202)는 어플리케이션 레벨에서 동작할 수 있다. 즉, 커널 레벨에서 동작하는 이벤트 통지부(201)가 이벤트 발생을 데이터 전송부(202)에 통지하면, 데이터 전송부(202)는 이벤트가 발생한 제1 데이터를 다른 서버들에게 전송할 수 있다. 결국, 제1 데이터는 분산 파일 시스템을 구성하는 서버들에게 분산되어 배포될 수 있다. 이 때, 다른 서버들은 제1 데이터를 수신하여 자신의 로컬 스토리지에 저장할 수 있다.
데이터 수신부(203)는 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 로컬 스토리지에 저장할 수 있다. 데이터 수신부(203)는 어플리케이션 레벨에서 동작할 수 있다. 이 때, 제1 데이터와 제2 데이터는 서로 다른 데이터를 의미한다. 즉, 서버(101)는 다른 서버로부터 이벤트가 발생한 데이터를 수신함으로써, 서버 간에 이벤트가 발생한 데이터의 교환이 이루어질 수 있다.
이 때, 이벤트 통지부(201)는 데이터 수신부(203)에 의해 제2 데이터가 저장되는 것을 이벤트로 감지하여 다른 서버에 재전송하는 것을 방지하도록 제2 데이터에 대한 재전송 방지 정보를 인지할 수 있다.
도 3은 본 발명의 일실시예에 따라 분산 파일 시스템을 구성하는 서버 간에 데이터를 분산시키는 과정을 설명하기 위한 도면이다.
도 3은 분산 파일 시스템을 구성하는 서버 간에 데이터를 교환함으로써, 데이터 상태를 동일하게 유지하는 과정을 설명한다. 도 3은 서버 1(101-1)과 서버 2(101-2)에 대해 설명하고 있지만, 도 3의 설명은 2개 이상의 서버가 존재할 때도 동일하게 적용될 수 있다.
서버 1(101-1)의 이벤트 통지부(201-1)는 로컬 스토리지1(102-1)에 저장된 제1 데이터에 발생한 이벤트를 감지하여 통지할 수 있다. 이 때, 이벤트 통지부(201-1)는 서버 1(101-1)의 운영체제의 커널 레벨에서 동작할 수 있다. 즉, 이벤트 통지부(201-1)는 서버마다 다른 프로그래밍 언어로 구현된 어플리케이션의 데이터 입출력이 아닌 이미 구현된 커널의 데이터 입출력을 통해 이벤트를 감지할 수 있다. 만약, 디렉토리인 제1 데이터에 새로운 파일이 생성되면 이벤트 통지부(201-1)는 디렉토리에 파일이 생성되었다는 이벤트를 감지하여 데이터 전송부(202-1)에 통지할 수 있다.
데이터 전송부(202-1)는 이벤트가 발생한 제1 데이터를 서버 2(101-2)의 데이터 수신부(203-2)에 전송할 수 있다. 그러면, 데이터 수신부(203-2)는 생성된 제1 데이터를 로컬 스토리지 2(102-2)에 저장할 수 있다.
마찬가지로, 데이터 수신부(203-1)는 서버 2(101-2)의 데이터 전송부(202-2)로부터 이벤트가 발생한 제2 데이터를 수신할 수 있다. 만약, 파일인 제2 데이터가 수정된 경우, 데이터 수신부(203-1)는 데이터 전송부(202-2)가 전송한 수정된 제2 데이터를 수신할 수 있다. 그러면, 데이터 수신부(203-1)는 제2 데이터를 로컬 스토리지 1(102-1)에 저장할 수 있다. 결국, 서버 1(101-1)과 서버 2(101-2)는 생성된 제1 데이터와 수정된 제2 데이터를 동일하게 분산하여 저장할 수 있다.
도 4는 본 발명의 일실시예에 따라 서버 간에 데이터 분산이 무한 반복되는 과정을 방지하는 방법을 설명하기 위한 도면이다.
도 4를 참고하면, 서버 1(101-1)과 서버 2(101-2)에 각각 파일 1과 파일 2가 생성된 것을 알 수 있다. 그러면, 서버 1(101-1)은 파일 1이 생성되었다는 이벤트를 감지하여 파일 1을 서버 2(101-2)와 서버 3(101-3)에 전송할 수 있다. 그러면, 서버 2(101-2)와 서버 3(101-3)은 서버 1(101-1)로부터 수신한 파일 1을 각각의 로컬 스토리지(102-2, 102-3)에 저장할 수 있다.
마찬가지로, 서버 2(101-2)는 파일 2가 생성되었다는 이벤트를 감지하여 파일 2를 서버 1(101-1)과 서버 3(101-3)에 전송할 수 있다. 그러면, 서버 1(101-1) 및 서버 3(101-3)은 서버 2(101-2)로부터 수신한 파일 2를 각각의 로컬 스토리지(102-1, 102-3)에 저장할 수 있다.
만약, 서버 3(101-3)은 로컬 스토리지(102-3)에 저장한 파일 1 및 파일 2이 생성되었다고 이벤트를 감지하는 경우, 서버 1(101-1) 및 서버 2(101-2)에 재전송할 수 있다. 재전송 문제는 서버 1(101-1) 및 서버 2(101-2)에도 동일하게 발생할 수 있다.
본 발명의 일실시예에 따르면, 다른 서버로부터 수신한 데이터에 대해서는 재전송 방지 정보를 인지함으로써 데이터가 무한적으로 반복 전송되는 것을 방지할 수 있다. 즉, 서버 3(101-3)은 로컬 스토리지(102-3)에 저장한 파일 1 및 파일 2에 대한 재전송 방지 정보를 인지하여 서버 1(101-1) 및 서버 2(101-2)에 재전송하지 않을 수 있다. 결국, 서버 1(101-1)과 서버 2(101-2)에서 생성된 파일 1 및 파일 2는 분산 파일 시스템을 구성하는 모든 서버에 동일하게 분산 저장될 수 있다.
일례로, 서버 1(101-1)은 멀티 쓰레드(multi-thread) 방식에 따라 동시에 파일 1을 서버 2(101-2) 및 서버 3(101-3)에 전송할 수 있다. 이 때, 멀티 쓰레드 방식에 의하더라도, 짧은 시간의 지연으로 인해 서버 2(101-2) 및 서버 3(101-3)에 동시에 전송되지 않을 수 있다. 만약, 서버 1(101-1)이 파일 1을 전송하는 즉시, 서버 2(101-2)에 파일 1이 전송될 수 있으나, 서버 3(101-3)에 파일 1이 전송되지 못하고 지연될 수 있다. 만약, 서버 3(101-3)이 파일 1에 대한 요청을 받는 경우, 파일 1이 전송될 때까지 요청을 처리하지 못할 수 있다.
따라서, 서버 1(101-1)은 서버 3(101-3)에 파일 1을 전송할 때, 이미 파일 1이 전송 완료된 서버 2(101-2)에 대한 정보를 함께 전송함으로써 파일 1을 저장하고 있는 서버의 정보를 공유할 수 있다. 결국, 파일 1이 전송되지 않은 서버 3(101-3)에 파일 1에 대한 요청이 있더라도, 서버 3(101-3)은 요청에 응답하여 서버 1(101-1) 및 서버 2(101-2)에 대한 정보를 제공할 수 있다.
도 5는 본 발명의 일실시예에 따른 분산 파일 시스템의 수행 방법을 도시한 플로우차트이다.
도 5에서 설명되는 방법은 분산 파일 시스템을 구성하는 복수의 서버 각각에 의해 수행될 수 있다.
단계(S501)에서, 서버는 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지할 수 있다. 이 때, 서버는 커널 레벨에서 이벤트를 감지할 수 있다.
일례로, 단계(S501)는 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록하는 단계를 포함할 수 있다. 그리고, 단계(S501)는 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 제1 데이터에 대한 이벤트 내용을 확인하는 단계를 포함할 수 있다.
이 때, 제1 데이터를 등록하는 단계는 커널이 수행하는 함수의 초기화를 통해 초기화를 통해 핸들을 생성하여 상기 생성된 핸들에 이벤트를 감지하기 위한 제1 데이터를 등록할 수 있다. 이 때, 제1 데이터는 로컬 스토리지에 저장된 파일 또는 디렉토리를 포함할 수 있다.
예를 들어, 서버의 운영체제가 리눅스인 경우, 서버의 로컬 스토리지에 저장된 파일 또는 디렉토리는 각각의 inode를 가질 수 있다. inode는 파일 또는 디렉토리와 관련된 정보를 포함할 수 있다. 즉, 파일 또는 디렉토리가 변경되면, inode도 변경될 수 있다. 이 때, 리눅스의 커널은 inode의 변화를 어플리케이션에게 실시간으로 통보할 수 있는 inotify 기능을 수행할 수 있다. 결국, inotify의 초기화를 통해 파일 또는 디렉토리를 등록하기 위한 핸들이 생성될 수 있다.
이 때, 이벤트 내용을 확인하는 단계는 등록된 제1 데이터에 대한 정보가 기록된 객체의 변화를 실시간으로 감지하여 상기 제1 데이터에 대한 이벤트 발생 여부를 판단할 수 있다. 여기서, 이벤트는 파일 또는 디렉토리 중 어느 하나인 제1 데이터 또는 제2 데이터의 변경, 생성 또는 삭제를 의미할 수 있다.
상기 예를 참고하면, 서버의 운영체제가 리눅스인 경우, 객체는 상기 언급한 inode일 수 있다. 예를 들어, 서버는 inotify를 통해 inode의 변화를 확인함으로써, 로컬 스토리지에 저장된 데이터에 대한 이벤트를 감지할 수 있다. inotify가 이벤트를 감지한 경우, 서버는 inotify가 리턴한 정보(예를 들면, 절대 경로 등)를 통해 어느 디렉토리 또는 어느 파일에서 이벤트가 발생했는 지 여부를 확인할 수 있다.
단계(S502)에서, 서버는 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송할 수 있다. 여기서, 다른 서버는 분산 파일 시스템을 구성하는 서버를 의미하며, 제1 데이터를 전송하는 서버와는 구별되는 서버를 의미한다. 이 때, 서버는 제1 데이터를 멀티 쓰레드 방식을 통해 적어도 하나의 다른 서버에 동시에 전송할 수 있다.
이 때, 서버는 멀티 쓰레드 방식에 의한 제1 데이터에 대한 전송 지연을 방지하도록 적어도 하나의 다른 서버 중 제1 데이터의 전송이 완료된 다른 서버의 정보를 제1 데이터를 전송하려는 다른 서버에 전송할 수 있다.
단계(S503)에서, 서버는 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 로컬 스토리지에 저장할 수 있다. 이 때, 서버는 수신된 제2 데이터를 저장하는 것을 새로운 이벤트로 식별하지 않도록 제2 데이터에 대한 재전송 방지 정보를 인지할 수 있다. 즉, 서버는 다른 서버로부터 수신한 데이터에 대해서는 재전송 방지 정보를 인지함으로써 데이터가 무한적 으로 반복 전송되는 것을 방지할 수 있다.
도 6은 본 발명의 일실시예에 따른 분산 파일 시스템을 구성하는 서버 간에 데이터를 분산하는 방법을 설명하기 위한 도면이다.
도 6을 참고하면, 서버 1(101-1)은 제1 데이터를 등록할 수 있다(S601). 마찬가지로, 서버 2(101-2)는 제2 데이터를 등록할 수 있다(S602). 이 때, 제1 데이터는 서버 1(101-1)이 이벤트를 감지하기 위한 대상을 의미하고, 제2 데이터는 서버 2(101-2)가 이벤트를 감지하기 위한 대상을 의미할 수 있다.
구체적으로, 제1 데이터는 서버 1(101-1)의 로컬 스토리지에 저장된 파일 또는 디렉토리를 의미하고, 제2 데이터는 서버 2(101-2)의 로컬 스토리지에 저장된 파일 또는 디렉토리를 의미할 수 있다. 도 6에서, 서버 1(101-1)은 디렉토리 1인 제1 데이터를 등록하였다고 가정한다. 그리고, 서버 2(101-2)는 파일 2인 제2 데이터를 등록하였다고 가정한다.
그러면, 로컬 스토리지에 저장된 디렉토리 1에 파일 1이 생성되는 이벤트가 발생하면(S603), 서버 1(101-1)은 발생한 이벤트를 감지하여 내부에 통보할 수 있다. 그런 후, 서버 1(101-1)은 생성된 파일 1을 분산 파일 시스템을 구성하는 다른 서버인 서버 2(101-2)에 전송할 수 있다(S604). 서버 2(101-2)는 전송된 파일 1을 자신의 로컬 스토리지에 기록하여 저장할 수 있다(S605). 앞에서 이미 언급했듯이, 서버 2(101-2)는 새롭게 기록된 파일 1에 대해서는 재전송 방지 정보를 인지하여 파일 1을 다시 서버 1(101-1)에 전송하지 않는다.
만약, 서버 2(101-2)의 로컬 스토리지에 저장된 파일 2가 변경되는 이벤트가 발생하면(S606), 서버 2(101-2)는 발생한 이벤트를 감지하여 내부에 통보할 수 있다. 그런 후, 서버 2(101-2)는 변경된 파일 2를 분산 파일 시스템을 구성하는 다른 서버인 서버 1(101-1)에 전송할 수 있다(S607). 서버 1(101-1)은 전송된 파일 2를 자신의 로컬 스토리지에 기록하여 저장할 수 있다(S608). 결국, 새롭게 생성된 파일 1과 변경된 파일 2가 서버 1(101-1) 및 서버 2(101-2)의 로컬 스토리지에 기록되어 저장될 수 있다.
도 6에서 설명되지 않은 부분은 도 1 내지 도 5의 설명을 참고할 수 있다.
또한 본 발명의 일실시예에 따른 분산 파일 시스템의 수행 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
도 1은 본 발명의 일실시예에 따른 분산 파일 시스템의 전체 구성을 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 분산 파일 시스템을 구성하는 하나의 서버에 대한 구체적인 구성을 도시한 블록 다이어그램이다.
도 3은 본 발명의 일실시예에 따라 분산 파일 시스템을 구성하는 서버 간에 데이터를 분산시키는 과정을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따라 서버 간에 데이터 분산이 무한 반복되는 과정을 방지하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 분산 파일 시스템의 수행 방법을 도시한 플로우차트이다.
도 6은 본 발명의 일실시예에 따른 분산 파일 시스템을 구성하는 서버 간에 데이터를 분산하는 방법을 설명하기 위한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
100: 분산 파일 시스템
101-1~101-N: 서버
102-1~102-N: 로컬 스토리지

Claims (17)

  1. 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지하는 이벤트 통지부;
    상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 데이터 전송부; 및
    상기 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 상기 로컬 스토리지에 저장하는 데이터 수신부
    를 포함하고,
    상기 이벤트 통지부는,
    커널이 수행하는 함수의 초기화를 통해 핸들을 생성하여 상기 생성된 핸들에 이벤트를 감지하기 위한 제1 데이터를 등록하고, 상기 함수가 리턴한 정보를 통해 상기 제1 데이터에 대한 이벤트 발생 여부를 결정하는 것을 특징으로 하는 분산 파일 시스템.
  2. 제1항에 있어서,
    상기 이벤트 통지부는,
    상기 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록하는 데이터 등록부; 및
    상기 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 상기 제1 데이터에 대한 이벤트 내용을 확인하는 이벤트 확인부
    를 포함하는 분산 파일 시스템.
  3. 제1항에 있어서,
    상기 제1 데이터는,
    상기 로컬 스토리지에 저장된 파일 또는 디렉토리를 포함하는 것을 특징으로 하는 분산 파일 시스템.
  4. 제2항에 있어서,
    상기 이벤트 확인부는,
    상기 등록된 제1 데이터에 대한 정보가 기록된 객체의 변화를 실시간으로 감지하여 상기 제1 데이터에 대한 이벤트 발생 여부를 판단하는 것을 특징으로 하는 분산 파일 시스템.
  5. 제1항에 있어서,
    상기 이벤트는,
    파일 또는 디렉토리 중 어느 하나인 상기 제1 데이터 또는 상기 제2 데이터의 변경, 생성 또는 삭제인 것을 특징으로 하는 분산 파일 시스템.
  6. 제1항에 있어서,
    상기 이벤트 통지부는,
    상기 수신된 제2 데이터를 저장하는 것을 이벤트로 식별하지 않도록 상기 제 2 데이터에 대한 재전송 방지 정보를 인지하는 것을 특징으로 하는 분산 파일 시스템.
  7. 제1항에 있어서,
    상기 데이터 전송부는,
    상기 제1 데이터를 멀티 쓰레드 방식을 통해 상기 적어도 하나의 다른 서버에 동시에 전송하는 것을 특징으로 하는 분산 파일 시스템.
  8. 제7항에 있어서,
    상기 데이터 전송부는,
    상기 멀티 쓰레드 방식에 의한 제1 데이터에 대한 전송 지연을 방지하도록 상기 적어도 하나의 다른 서버 중 제1 데이터의 전송이 완료된 다른 서버의 정보를 제1 데이터를 전송하려는 다른 서버에 전송하는 것을 특징으로 하는 분산 파일 시스템.
  9. 로컬 스토리지에서 발생한 제1 데이터에 대한 이벤트를 감지하여 통지하는 단계;
    상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 단계; 및
    상기 적어도 하나의 다른 서버 중 어느 하나의 서버로부터 이벤트가 발생한 제2 데이터를 수신하여 상기 로컬 스토리지에 저장하는 단계
    를 포함하고,
    상기 이벤트를 감지하여 통지하는 단계는,
    커널이 수행하는 함수의 초기화를 통해 핸들을 생성하여 상기 생성된 핸들에 이벤트를 감지하기 위한 제1 데이터를 등록하고, 상기 함수가 리턴한 정보를 통해 상기 제1 데이터에 대한 이벤트 발생 여부를 결정하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  10. 제9항에 있어서,
    상기 이벤트를 감지하여 통지하는 단계는,
    상기 로컬 스토리지에 저장된 복수의 데이터 중 이벤트를 감지하기 위한 제1 데이터를 등록하는 단계; 및
    상기 등록된 제1 데이터에 대해 이벤트가 발생한 경우, 상기 제1 데이터에 대한 이벤트 내용을 확인하는 단계
    를 포함하는 분산 파일 시스템의 수행 방법.
  11. 제9항에 있어서,
    상기 제1 데이터는,
    상기 로컬 스토리지에 저장된 파일 또는 디렉토리를 포함하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  12. 제10항에 있어서,
    상기 제1 데이터에 대한 이벤트 내용을 확인하는 단계는,
    상기 등록된 제1 데이터에 대한 정보가 기록된 객체의 변화를 실시간으로 감지하여 상기 제1 데이터에 대한 이벤트 발생 여부를 판단하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  13. 제9항에 있어서,
    상기 이벤트는,
    파일 또는 디렉토리 중 어느 하나인 상기 제1 데이터 또는 상기 제2 데이터의 변경, 생성 또는 삭제인 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  14. 제9항에 있어서,
    상기 이벤트를 감지하여 통지하는 단계는,
    상기 수신된 제2 데이터를 저장하는 것을 이벤트로 식별하지 않도록 상기 제2 데이터에 대한 재전송 방지 정보를 인지하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  15. 제9항에 있어서,
    상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 단계는,
    상기 제1 데이터를 멀티 쓰레드 방식을 통해 상기 적어도 하나의 다른 서버 에 동시에 전송하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  16. 제15항에 있어서,
    상기 이벤트가 발생한 제1 데이터를 적어도 하나의 다른 서버들에게 전송하는 단계는,
    상기 멀티 쓰레드 방식에 의한 제1 데이터에 대한 전송 지연을 방지하도록 상기 적어도 하나의 다른 서버 중 제1 데이터의 전송이 완료된 다른 서버의 정보를 제1 데이터를 전송하려는 다른 서버에 전송하는 것을 특징으로 하는 분산 파일 시스템의 수행 방법.
  17. 제9항 내지 제16항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
KR1020080119017A 2008-11-27 2008-11-27 분산 파일 시스템 및 분산 파일 시스템의 수행 방법 KR101545010B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080119017A KR101545010B1 (ko) 2008-11-27 2008-11-27 분산 파일 시스템 및 분산 파일 시스템의 수행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080119017A KR101545010B1 (ko) 2008-11-27 2008-11-27 분산 파일 시스템 및 분산 파일 시스템의 수행 방법

Publications (2)

Publication Number Publication Date
KR20100060429A KR20100060429A (ko) 2010-06-07
KR101545010B1 true KR101545010B1 (ko) 2015-08-18

Family

ID=42361343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080119017A KR101545010B1 (ko) 2008-11-27 2008-11-27 분산 파일 시스템 및 분산 파일 시스템의 수행 방법

Country Status (1)

Country Link
KR (1) KR101545010B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101128998B1 (ko) * 2010-09-15 2012-03-23 케이티하이텔 주식회사 패리티 데이터를 이용한 분산 파일 운용 방법
KR101511098B1 (ko) * 2011-10-10 2015-04-10 네이버 주식회사 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006106941A (ja) * 2004-10-01 2006-04-20 Seiko Epson Corp ファイル同期システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006106941A (ja) * 2004-10-01 2006-04-20 Seiko Epson Corp ファイル同期システム

Also Published As

Publication number Publication date
KR20100060429A (ko) 2010-06-07

Similar Documents

Publication Publication Date Title
US8521974B2 (en) Migration of data in a distributed environment
EP2695083B1 (en) Cluster unique identifier
US20130246597A1 (en) Processor, computer readable recording medium recording program therein, and processing system
US20120272025A1 (en) Selecting data nodes using mlutilpe storage policies in cloud storage system
US9477429B2 (en) Block storage gateway module, method for providing access to block storage, mediator system and mediating method for storage, cloud storage system, and content delivery apparatus
US10609123B2 (en) Hybrid quorum policies for durable consensus in distributed systems
US11394777B2 (en) Reliable data storage for decentralized computer systems
US20200097177A1 (en) System and method for environment aware backup and restoration
JP2014522052A (ja) ハードウェア故障の軽減
CN109726037B (zh) 用于备份数据的方法、设备和计算机程序产品
US20210271583A1 (en) Hyper-converged infrastructure (hci) log system
BR112017001171B1 (pt) Método executado em um dispositivo de computação, dispositivo de computação e dispositivo de memória legível por computador para recuperar a operacionalidade de um serviço baseado em nuvem
CN107612950A (zh) 一种提供服务的方法、装置、系统、电子设备
KR101545010B1 (ko) 분산 파일 시스템 및 분산 파일 시스템의 수행 방법
US20230362015A1 (en) Notification control method, verification method, and information processing apparatus
US8959383B2 (en) Failover estimation using contradiction
US9218313B2 (en) Shared-bandwidth multiple target remote copy
US9400605B2 (en) Efficient management of a virtual tape library cluster
JP2020038506A (ja) 情報処理システム、情報処理方法、及び、プログラム
US8533539B2 (en) Fault handling systems and methods
JP6309432B2 (ja) 秘密計算システム及び方法並びに管理サーバ及びプログラム
US20050160242A1 (en) Asynchronous hybrid mirroring system
US9384052B2 (en) Resilient message passing in applications executing separate threads in a plurality of virtual compute nodes
US20230133608A1 (en) Techniques for stateful persisted service resource reduction
JP6213496B2 (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: 20190701

Year of fee payment: 5