KR20130045159A - 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법 - Google Patents

분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법 Download PDF

Info

Publication number
KR20130045159A
KR20130045159A KR1020120067505A KR20120067505A KR20130045159A KR 20130045159 A KR20130045159 A KR 20130045159A KR 1020120067505 A KR1020120067505 A KR 1020120067505A KR 20120067505 A KR20120067505 A KR 20120067505A KR 20130045159 A KR20130045159 A KR 20130045159A
Authority
KR
South Korea
Prior art keywords
chunk
file
metadata
data
information
Prior art date
Application number
KR1020120067505A
Other languages
English (en)
Other versions
KR101601877B1 (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 US13/602,783 priority Critical patent/US9378218B2/en
Publication of KR20130045159A publication Critical patent/KR20130045159A/ko
Application granted granted Critical
Publication of KR101601877B1 publication Critical patent/KR101601877B1/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

Abstract

분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법이 개시된다. 본 발명에 따른 분산 파일시스템의 클라이언트 장치는 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 제1 메타데이터 정보가 내부에 기저장되어있는지 여부를 판단하는 저장 여부 판단부; 및 상기 제1 메타데이터 정보가 기저장되어있는 경우, 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 파일 리드부를 포함한다.

Description

분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법 {APPARATUS AND METHOD FOR CLIENT'S PARTICIPATING IN DATA STORAGE OF DISTRIBUTED FILE SYSTEM}
본 발명은 분산 파일시스템에 관한 것으로, 특히 파일시스템의 클라이언트가 특정 데이터 집합을 집중적으로 액세스하는 환경에서 고성능 액세스가 가능하도록 하기 위해 분산 파일 시스템의 데이터 저장소 역할에 클라이언트가 참여하는 기술에 관한 것이다.
최근 가상화 기술을 활용하여 하나의 물리 서버에 여러 개의 가상 머신들(VMs: Virtual Machines)이 탑재되는 경우가 많다. 시스템 장애 대비나 워크로드 최적화 등에 유연성이 높은 가상 머신을 활용함으로써 시스템의 활용율을 높일 수 있고, 라이브 마이그레이션과 같은 기능을 활용할 수 있다.
가상머신의 라이브 마이그레이션을 위해서는 가상머신 이미지를 서로 다른 서버 호스트에서 공유하면서 액세스할 수 있는 공유 스토리지가 필수적이다.
공유 스토리지를 제공하는 방법에는 SAN(Storage Area Network), NAS(Network Attached Storage), iSCSI(internet Small Computer System Interface) 스토리지 및 분산 파일시스템 등이 있다.
그러나, SAN, NAS, iSCSI 등 종래의 공유 스토리지 제공 방법은 스토리지 확장성 및 관리의 용이성 측면에서 많은 문제점을 가지고 있다. 또한, 클라이언트의 수가 증가함에 따라 스토리지 액세스가 집중되어 클라이언트의 스토리지 액세스 성능이 저하되는 문제점을 가진다.
한편, 최근 들어 다양한 인터넷 환경에서, 스토리지를 구비한 다수의 컴퓨터들을 네트워크로 연결함으로써 사용자에게 통합된 파일시스템을 제공하고 여러 사용자 사이에서 공유가 가능한 분산 파일시스템이 사용되고 있다.
분산 파일시스템은 상황에 따라 분산 파일시스템에 참여하는 서버의 수를 늘림으로써 파일시스템의 크기를 쉽게 확장할 수 있는 고확장성을 제공한다는 장점이 있다. 또한, 분산 파일시스템은 파일 데이터의 복제본을 서로 다른 서버에 중복 저장하는 방법으로 특정 데이터 저장 서버의 고장시에도 다른 데이터 저장 서버의 복제본을 활용할 수 있어 고가용성을 제공할 수 있다. 나아가, 복제본들을 여러 개 구비함으로써 여러 클라이언트의 읽기 요청을 여러 저장서버에 분산하여 성능을 향상시킬 수 있다.
나아가, 미국공개특허 제2009/0037680호의 가상머신이 수행중인 상태에서 가상 머신 디스크(VM disk)를 하나의 물리 스토리지에서 다른 물리 스토리지로 이동하기 위한 방법 등 분산 파일시스템을 이용한 다양한 개량기술이 소개되어 있다.
그러나, 이와 같은 분산 파일시스템 역시 클라이언트의 수가 증가함에 따라 클라이언트의 스토리지 액세스 성능이 저하된다는 문제점을 가진다. 가상환경에서의 이와 같은 문제점들은, 데이터베이스 시스템 같이 기업에 중요한 응용들이 복수 개의 파일시스템들을 구비하여 각각의 파일시스템이 제한된 수의 클라이언트들만을 지원하도록 하거나, 아예 가상환경에서의 실행을 포기하여야 하는 치명적인 한계를 가진다.
본 발명의 목적은 분산 파일시스템에서 클라이언트를 데이터 저장소 역할에 참여시킴으로써, 클라이언트의 파일시스템 액세스에 대하여 로컬 디스크 액세스 효과를 가질 수 있도록 하는 것이다.
또한, 본 발명의 목적은 분산 파일시스템에서 클라이언트를 데이터 저장소 역할에 참여시킴으로써, 분산 공유 파일시스템의 클라이언트 수가 증가함에 따라 발생하는 스토리지 액세스 성능 저하를 방지하는 것이다.
또한, 본 발명의 목적은 분산 파일시스템에서 클라이언트가 데이터 저장소 역할에 참여함에 있어서, 청크의 생성 번호를 이용하여 해당 청크의 변경 이력을 추적하고, 해당 청크를 액세스하고자 하는 클라이언트가 올바른 청크에 액세스할 수 있도록 하는 것이다.
상기한 목적을 달성하기 위한 본 발명에 따른 분산 파일시스템의 클라이언트 장치는, 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 제1 메타데이터 정보가 내부에 기저장되어있는지 여부를 판단하는 저장 여부 판단부; 및 상기 제1 메타데이터 정보가 기저장되어있는 경우, 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 파일 리드부를 포함한다.
이 때, 분산 파일시스템의 클라이언트 장치는 상기 청크의 전역 생성 번호를 포함하는 제2 메타데이터 정보를 메타데이터 서버로부터 수신하고 상기 제2 메타데이터 정보를 로컬에 저장하는 메타데이터 수신부를 더 포함할 수 있다.
이 때, 파일 리드부는 상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행할 수 있다.
이 때, 상기 제1 메타데이터 정보 및 제2 메타데이터 정보는 각각 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 파일 속성 정보; 및 상기 파일에 속한 상기 청크에 대한 청크 정보를 포함할 수 있다.
이 때, 상기 청크 정보는 청크 아이디, 상기 전역 생성 번호, 및 청크 저장 서버 리스트를 포함할 수 있다. 이 때, 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함할 수 있다. 이 때, 생성 번호는 상기 생성 번호에 상응하는 청크에 변경이 발생할 때마다 1씩 증가할 수 있다.
이 때, 상기 전역 생성 번호는 상기 데이터 서버들에 상응하는 생성 번호들 중 가장 큰 값에 상응할 수 있다.
이 때, 분산 파일시스템의 클라이언트 장치는 상기 제1 메타데이터 정보 및 상기 제2 메타데이터 정보에 각각 포함된 상기 전역 생성 번호들을 비교하여 상기 청크에 대한 변경 여부를 판단하는 변경 여부 판단부를 더 포함할 수 있다.
이 때, 상기 파일 리드부는 상기 전역 생성 번호들이 동일한 경우에 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하고, 상기 전역 생성 번호들이 상이한 경우에 상기 청크가 변경된 것으로 판단하고 상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행할 수 있다.
이 때, 상기 제2 메타데이터 정보에 상응하는 데이터 서버는 상기 제2 메타데이터 정보에 포함된 상기 전역 생성 번호와 동일한 생성 번호에 상응하는 것일 수 있다.
이 때, 분산 파일시스템의 클라이언트 장치는 로컬 청크에 데이터를 쓰는 데이터 라이팅부; 상기 데이터에 상응하는 청크의 전역 생성 번호를 1 증가시켜서 저장하는 로컬 전역 번호 증가부; 메타데이터 서버로 상기 데이터에 상응하는 메타데이터 정보의 전역 생성번호 1 증가를 요청하는 전역 번호 증가 요청부; 및 상기 쓰기에 상응하는 데이터 복제를 수행하는 데이터 복제부를 더 포함할 수 있다. 이 때, 상기 분산 파일시스템의 클라이언트 장치는 상기 데이터를 쓰기 전에 새로운 청크가 필요한지 여부를 판단하는 청크 필요 판단부; 상기 새로운 청크가 필요한 경우 상기 메타데이터 서버로 청크 할당을 요청하는 청크 할당 요청부; 및 상기 메타데이터 서버로부터 청크 할당 결과 및 할당된 청크에 상응하는 메타데이터 정보를 수신하고 로컬에 새로운 청크를 할당하고 수신된 메타데이터를 저장하는 청크 할당부를 더 포함할 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버 장치는, 읽기 요청된 파일에 상응하는 청크의 메타데이터 정보가 존재하는지 여부를 판단하는 존재 여부 판단부; 및 상기 메타데이터 정보가 존재하는 경우, 상기 메타데이터 정보에 포함된 파일 속성 정보 및 청크 정보를 전송하는 메타데이터 전송부를 포함한다.
이 때, 상기 파일 속성 정보는 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함한다.
이 때, 상기 분산 파일시스템의 메타데이터 서버 장치는 상기 메타데이터 정보가 존재하지 않는 경우, 에러를 전송하는 에러 전송부; 및 상기 파일 속성 정보 및 상기 청크에 대한 잠금을 설정하는 잠금 설정부를 더 포함할 수 있다. 이 때, 메타데이터 전송부는 상기 잠금이 설정된 경우에만 상기 파일 속성 정보 및 상기 청크 정보를 액세스할 수 있다.
이 때, 상기 메타데이터 서버 장치는 복수의 메타데이터 서버들로 구성된 메타데이터 서버 클러스터에 상응하며, 상기 복수의 메타데이터 서버들 각각은 할당된 상기 메타데이터 정보만을 관리할 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일시스템의 클라이언트의 파일 읽기 방법은, 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 제1 메타데이터 정보가 기저장되어있는지 여부를 판단하는 단계; 및 상기 제1 메타데이터 정보가 기저장되어있는 경우, 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 단계를 포함한다.
이 때, 파일 읽기 방법은 상기 청크의 전역 생성 번호를 포함하는 제2 메타데이터 정보를 수신하여 로컬에 저장하는 단계를 더 포함하고, 상기 파일에 대한 읽기를 수행하는 단계는 상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행할 수 있다.
이 때, 상기 제1 메타데이터 정보 및 제2 메타데이터 정보는 각각 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 파일 속성 정보; 및 상기 파일에 속한 상기 청크에 대한 청크 정보를 포함할 수 있다.
또한, 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버 장치의 읽기 요청 처리 방법은, 읽기 요청된 파일에 상응하는 청크의 메타데이터 정보가 존재하는지 여부를 판단하는 단계; 및 상기 메타데이터 정보가 존재하는 경우, 상기 메타데이터 정보에 포함된 파일 속성 정보 및 청크 정보를 전송하는 단계를 포함한다.
이 때, 상기 파일 속성 정보는 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함한다.
본 발명에 따르면, 분산 파일시스템에서 클라이언트를 데이터 저장소 역할에 참여시킴으로써, 클라이언트의 분산 공유 파일시스템 액세스에 대하여 로컬 디스크 액세스 효과를 가질 수 있다.
또한, 본 발명은 분산 파일시스템에서 클라이언트를 데이터 저장소 역할에 참여시킴으로써, 분산 파일시스템의 클라이언트 수가 증가함에 따라 발생하는 스토리지 액세스 성능 저하를 방지할 수 있다.
또한, 본 발명은 분산 파일시스템에서 클라이언트가 데이터 저장소 역할에 참여함에 있어서, 청크의 생성 번호를 이용하여 해당 청크의 변경 이력을 추적하고, 해당 청크를 액세스하고자 하는 클라이언트가 올바른 청크에 액세스할 수 있다.
도 1은 본 발명의 일실시예에 따른 클라이언트 참여형 분산 파일 시스템의 구성도이다.
도 2는 본 발명의 일실시예에 따른 메타데이터 정보를 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 4는 본 발명의 일실시예에 따른 분산 파일시스템의 비참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 5는 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버가 클라이언트의 파일 읽기 요청을 처리하는 방법을 나타낸 동작 흐름도이다.
도 6은 가상환경처럼 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 7은 가상환경처럼 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 메타데이터 서버가 클라이언트의 파일 읽기 요청을 처리하는 방법을 나타낸 동작 흐름도이다.
도 8은 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트의 파일 쓰기 방법을 나타낸 동작 흐름도이다.
도 9는 본 발명의 일실시예에 따른 분산 파일시스템의 클라이언트 장치를 나타낸 블록도이다.
도 10은 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버 장치를 나타낸 블록도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 클라이언트 참여형 분산 파일 시스템의 구성도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 클라이언트 참여형 분산 파일 시스템은 참여형 클라이언트들(100-1, ..., 100-m), 비참여형 클라이언트들(200-1, ..., 200-n), 데이터 서버들(400-1, ..., 400-x) 및 메타데이터 서버들(500-1, ..., 500-y)을 포함한다.
참여형 클라이언트들(100-1, ..., 100-m), 비참여형 클라이언트들(200-1, ..., 200-n), 데이터 서버들(400-1, ..., 400-x) 및 메타데이터 서버들(500-1, ..., 500-y)은 네트워크 스위치(300)에 의하여 서로 연결된다.
참여형 클라이언트들(100-1, ..., 100-m)은 스토리지(110-1, ..., 110-m)를 구비하고 분산 파일 시스템의 데이터 저장에 부분적으로 참여하면서, 메타데이터 서버들(500-1, ..., 500-y)로부터 제공되는 파일 메타데이터를 액세스하고 데이터 서버들(400-1, ..., 400-x)로부터 직접 파일 데이터를 액세스한다.
또한, 참여형 클라이언트들(100-1, ..., 100-m)은 액세스된 메타데이터 정보와 파일 데이터들을 자신의 로컬 스토리지(110-1, ..., 110-m)에 저장하고 향후 저장된 데이터와 동일한 데이터에 대한 액세스는 모두 로컬 스토리지에서 수행함으로써 부분적으로 데이터 서버의 역할을 수행하게 된다.
비참여형 클라이언트들(200-1, ..., 200-n)은 분산 파일시스템의 데이터 저장에 참여하지 않는 일반적인 클라이언트들로써, 참여형 클라이언트들(100-1, ..., 100-m)과 유사하게 메타데이터 서버들(500-1, ..., 500-y)로부터 파일 메타데이터를 액세스하고 데이터 서버들(400-1, ..., 400-x)로부터 직접 파일 데이터를 액세스한다.
메타데이터 서버들(500-1, ..., 500-y)은 스토리지(510-1, ..., 510-y)를 구비하고, 파일 시스템의 모든 파일에 대한 메타데이터(메타데이터 정보)를 유지한다. 메타데이터는 파일들 각각에 대한 속성 및 파일들 각각을 구성하는 청크들 각각이 데이터 서버들(400-1, ..., 400-x) 중 어느 데이터 서버에 저장되어 있는지에 관한 위치정보를 포함한다.
이 때, 파일들 각각에 대한 속성은 파일의 크기, 청크(또는 블록)의 크기, 복제 수, 파일의 접근권한, 파일의 소유자 등을 포함할 수 있다.
또한, 메타데이터에는 파일들 각각에 상응하는 청크들 각각의 변경 이력을 추적하고 해당 청크를 액세스하고자 하는 클라이언트가 올바른 청크에 액세스할 수 있도록 제어하기 위한 청크의 생성 번호(generation number)가 추가된다.
생성 번호는 해당 청크에 변경이 발생한 경우 수정된다. 예를 들어, 생성 번호는 청크에 변경이 발생할 때마다 '1'씩 증가된다.
참여형 클라이언트들(100-1, ..., 100-m)은 로컬 스토리지에 저장된 특정 청크의 생성 번호와 메타데이터 서버들(500-1, ..., 500-y)에 저장된 해당 청크의 생성 번호를 활용하여 청크에의 변경 사실을 인지하게 된다.
또한, 메타데이터 서버들(500-1, ..., 500-y)은 새로운 청크가 생성될 필요가 있을 때 생성된 청크가 저장될 주 데이터 서버와 주 데이터 서버에 의해 복제가 이루어질 복제 데이터 서버(들)을 선정한다.
데이터 서버들(400-1, ..., 400-x)은 각각 스토리지(410-1, ..., 410-x)를 구비하고, 담당하는 파일의 청크들을 저장하고 관리하며, 클라이언트들(100-1, ..., 100-m, 200-1, ..., 200-n)로부터의 데이터 액세스 요청을 처리한다.
도 2는 본 발명의 일실시예에 따른 메타데이터 정보를 나타낸 도면이다.
도 2를 참조하면, 파일 시스템에 유지되는 파일을 위해 메타데이터 서버에 유지 및 관리되는 메타데이터 정보(520)는 파일 속성 정보(521) 및 하나 이상의 청크 정보(522-1, ..., 522-z)로 구성된다.
파일 속성 정보(521)는 파일 크기, 청크 크기, 복제 수, 소유자, 접근 권한 등을 포함할 수 있다.
청크 정보(522-1, ..., 522-z)는 파일에 속한 각 청크에 대한 정보이며, 파일에 속한 청크의 수(z)에 따라 복수개 구비될 수 있다.
청크 정보(522-1, ..., 522-z)는 청크 아이디, 청크의 전역생성번호(522-1-1, ..., 522-z-1), 청크를 저장할 데이터 서버들의 리스트로 구성된다.
청크를 저장할 데이터 서버들의 리스트(청크 저장 서버 리스트)는 데이터 서버 아이디, 해당 데이터 서버내에서의 청크 위치 아이디, 해당 데이터 서버에 저장된 청크의 생성번호(522-1-i, ..., 522-z-i)로 구성된다.
이 때, 해당 데이터 서버에 저장된 청크의 생성번호(522-1-i, ..., 522-z-i)는 해당 데이터 서버에서 해당 청크를 수정한 경우 1 증가되는 생성번호이다. 예를 들어, 특정 청크에 대한 쓰기 요청에 따라 주 데이터 서버는 수정을 하였으나 복제 데이터 서버는 수정을 하지 않은 상태라면, 주 데이터 서버의 생성 번호는 복제 데이터 서버의 생성 번호보다 1이 크게 된다.
청크의 전역 생성 번호(522-1-1, ..., 522-z-1)는 청크 저장 서버 리스트에 포함된 데이터 서버들(참여형 클라이언트를 포함) 중 가장 큰 생성번호가 할당된다. 전역 생성 번호는 참여형 클라이언트에서 쓰기를 로컬에 수행한 후 아직 데이터 서버들에는 쓰기가 반영되지 않은 상황을 추적하기 위해서 사용될 수 있다.
모든 생성 번호는 파일이 처음 생성될 때 0으로 초기화된다.
이하에서는 설명의 편의를 위하여 메타데이터 서버가 한 대만 있는 경우를 중심으로 설명한다. 확장성 및 성능 향상을 위해 메타데이터 서버는 다수의 메타데이터 서버들로 구성된 메타데이터 서버 클러스터로 확장될 수 있다. 메타데이터 서버가 클러스터 형태로 구성된 경우, 특정 메타데이터를 담당하는 메타데이터 서버가 어느 것인지를 결정하기 위해 모든 메타데이터 서버들이 공유하는 정보가 필요하다. 이와 같은 공유 정보는 해쉬함수를 통한 계산으로 얻어지거나, 공유 정보를 모든 메타데이터 서버들이 공유하는 방식으로 얻어질 수 있다. 메타데이터 서버 클러스터 내의 각 메타데이터 서버는 자신이 관리하도록 할당된 메타데이터만 관리하게 된다.
이하에서, 파일의 읽기(read) 및 쓰기(write)에 관하여 상세히 설명한다.
도 3은 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트는 파일을 읽기 위해 메타데이터 서버에게 읽고자 하는 파일의 청크 번호를 제공하면서 파일의 메타데이터 정보를 요청한다(S301).
단계(S301)의 요청에 대한 회신으로, 참여형 클라이언트는 메타데이터 서버로부터 파일의 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 수신한다(S302).
수신이 완료되면, 참여형 클라이언트는 자신의 로컬에 해당 메타데이터 정보가 기저장되어 있는지 여부를 판단한다(S303).
단계(S303)의 판단 결과, 해당 메타데이터 정보가 로컬에 존재하지 않으면 읽기 요청된 파일의 청크를 처음 읽는 것이므로 수신한 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 로컬에 저장한다(S304).
메타데이터 정보를 로컬에 저장한 후, 참여형 클라이언트는 수신한 메타데이터 정보를 이용하여 데이터를 읽어올 데이터 서버를 선택(S305)하고 선택된 데이터 서버에 데이터를 요청(S306)한 후, 데이터 서버로부터 청크 데이터를 수신한다(S307). 수신이 완료되면 수신된 청크 데이터를 로컬에 저장하고 수신된 청크 데이터를 이용하여 파일 읽기 동작을 수행한다(S308).
특히, 단계(S305)에서 참여형 클라이언트는 해당 청크의 전역 생성 번호와 동일한 생성 번호를 가지는 데이터 서버만을 선택 대상으로 한다.
이 때, 참여형 클라이언트는 단계(S307)가 완료되는 시점에 데이터 서버로부터 전달된 상태 정보로부터 읽기의 성공 여부를 확인하고, 읽기 실패시 단계(S305)로 되돌아가 다른 데이터 서버를 선택하고 데이터 요청 및 수신 동작을 계속할 수 있다.
설명의 편의를 위하여, 이하에서는 데이터 수신이 성공한 경우만이 설명된다.
단계(S303)의 판단 결과, 해당 메타데이터 정보가 로컬에 기저장되어 있으면, 참여형 클라이언트는 로컬의 메타데이터 정보와 수신한 메타데이터 정보가 동일한지 여부를 체크한다(S309).
이 때, 로컬의 메타데이터 정보와 수신한 메타데이터 정보가 동일한지 여부는 메타데이터 정보 전체를 비교하지 아니하고 읽고자 하는 청크의 전역 생성 번호만을 비교할 수 있다.
로컬의 메타데이터 정보와 수신한 메타데이터 정보 각각에 상응하는 전역 생성 번호들이 다르다면 해당 청크가 다른 클라이언트에 의해 변경되었다는 것을 의미하므로, 참여형 클라이언트는 수신한 메타데이터 정보를 로컬에 저장한다(S304).
이후는 위에서 로컬에 메타데이터가 존재하지 않은 경우 수행된 과정과 동일하게 수행한다.
로컬의 메타데이터 정보와 수신한 메타데이터 정보 각각에 상응하는 전역 생성 번호들이 동일하다면 해당 파일이 이미 클라이언트에 기저장되어 있음을 의미하므로, 로컬 데이터를 활용하여 파일에 대한 읽기를 수행한다(S310).
도 4는 본 발명의 일실시예에 따른 분산 파일시스템의 비참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 4를 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 비참여형 클라이언트는 파일을 읽기 위해 메타데이터 서버에게 읽고자 하는 파일의 청크 번호를 제공하면서 파일의 메타데이터 정보를 요청한다(S401).
단계(S401)의 요청에 대한 회신으로, 비참여형 클라이언트는 메타데이터 서버로부터 파일의 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 수신한다(S402).
수신이 완료되면, 비참여형 클라이언트는 수신한 메타데이터 정보를 이용하여 데이터를 읽어올 데이터 서버를 선택(S403)하고 선택된 데이터 서버에 데이터를 요청(S404)한 후, 데이터 서버로부터 청크 데이터를 수신하고 수신된 청크 데이터를 이용하여 파일 읽기 동작을 수행한다(S405).
도 3 및 도 4를 통하여 설명한 파일 읽기 방법에서 클라이언트는 메모리상의 일시적인 캐싱을 사용할 수 있다. 이와 같은 경우에는 도 4를 통하여 설명한 파일 읽기 방법도 도 3에 도시된 방법과 유사하게 수행될 수 있다.
도 5는 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버가 클라이언트의 파일 읽기 요청을 처리하는 방법을 나타낸 동작 흐름도이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버는 클라이언트로부터 읽고자 하는 파일의 청크 번호와 함께 읽기 요청을 수신하면, 요청된 파일의 메타데이터 정보가 존재하는지 여부를 판단한다(S501).
단계(S501)의 판단 결과, 메타데이터 정보가 존재하지 아니하는 경우 존재하지 않는 파일이나 청크에 대한 읽기 요청이므로 에러를 클라이언트에게 전송(S507)하고 읽기 요청 처리를 끝낸다.
단계(S501)의 판단 결과, 메타데이터 정보가 존재하는 경우 해당 파일에 대한 메타데이터 정보에서 파일 속성 정보 및 요청된 청크에 대한 공유 잠금을 설정한다(S502).
이후, 메타데이터 서버는 공유 잠금이 획득되었는지 여부를 판단(S503)하여 공유 잠금이 획득되지 아니하였으면, 다른 클라이언트에 의해 해당 파일이 변경중이므로 잠시 대기 후 다시 공유 잠금 설정을 시도한다(S502).
단계(S503)의 판단 결과 공유 잠금이 획득되었으면, 메타데이터 서버는 해당 메타데이터에서 파일 속성 정보와 읽기 요청된 청크 정보를 읽고(S504), 공유 잠금을 해제(S505)한 후 파일 속성 정보 및 청크 정보를 클라이언트에 전송(S506)한다.
한편, 가상환경과 같은 사용환경에서는 특정 파일시스템 클라이언트가 특정 시점에 특정 파일을 독점하여 사용하게 된다. 가상머신을 실행하는 서버 호스트는 가상머신 이미지를 집중적으로 액세스하는 파일시스템의 한 클라이언트이다.
가상 머신(VM)은 자신과 매핑된 가상머신 이미지를 독립적으로 사용하기 때문에 가상머신을 실행하고 있는 서버 호스트(파일시스템의 클라이언트)는 특정 시점에는 해당 가상머신 이미지를 독립적으로 사용한다. 가상머신의 라이브 마이그레이션이 발생하게 되면 새로운 서버 호스트가 독립적으로 해당 가상머신 이미지를 사용하게 되고, 라이브 마이그레이션 이전의 서버 호스트는 가상머신 이미지의 사용을 중지하게 된다. 따라서, 이러한 환경에서는 다른 클라이언트에서의 파일에 대한 수정이 발생하지 않으므로 도 3 및 도 5에서 설명한 방법들이 파일시스템의 성능을 향상시키기 위해 간략화될 수 있다.
이에 대하여 도6 및 도7을 통해 설명한다. 도 4에서 설명한 과정은 가상환경에서 성능향상을 위해 사용될 가능성이 적으므로 설명을 생략한다. 다만, 당해 기술분야에서 통상의 지식을 가진 자라면 도 4에서 설명한 과정이 가상환경에서 성능향상을 위해 사용되는 경우(case)를 도 3, 도 6및 도 4의 관계로부터 쉽게 도출할 수 있음은 자명하다.
도 6은 가상환경처럼 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 참여형 클라이언트의 파일 읽기 방법을 나타낸 동작 흐름도이다.
도 6을 참조하면, 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 참여형 클라이언트는 읽을 파일의 청크에 대한 메타데이터 정보가 로컬에 기저장되어 있는지 여부를 판단한다(S601).
단계(S601)의 판단 결과, 메타데이터 정보가 로컬에 기저장되어 있으면 해당 데이터가 로컬에 있으므로 로컬 데이터를 활용하여 읽기 요청된 파일에 대한 읽기를 수행한다(S609).
단계(S601)의 판단 결과, 로컬에 메타데이터 정보가 기저장되어 있지 아니하면, 해당 청크를 처음 읽는 경우이므로 파일을 읽기 위해 메타데이터 서버에게 읽고자 하는 파일의 청크 번호를 제공하면서 읽고자 하는 파일의 메타데이터를 요청한다(S602).
단계(S602)의 요청에 대한 회신으로, 참여형 클라이언트는 메타데이터 서버로부터 파일의 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 수신한다(S603).
단계(S603)의 수신이 완료되면 참여형 클라이언트는 자신의 로컬에 수신한 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 저장한다(S604).
또한, 참여형 클라이언트는 수신된 메타데이터 정보로부터 데이터를 읽을 서버를 선택(S605)하고, 선택된 데이터 서버에 데이터를 요청(S606)한 후, 데이터 서버로부터 데이터를 수신한다(S607). 단계(S607)의 수신이 완료되면 수신된 청크 데이터를 로컬에 저장하고 수신된 청크 데이터를 이용하여 읽기 요청된 파일에 대한 읽기를 수행한다(S608).
도 7은 가상환경처럼 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 메타데이터 서버가 클라이언트의 파일 읽기 요청을 처리하는 방법을 나타낸 동작 흐름도이다.
도 7을 참조하면, 메타데이터 서버는 클라이언트로부터 읽고자 하는 파일의 청크번호와 함께 읽기 요청을 수신하면, 요청된 파일에 해당하는 메타데이터 정보가 존재하는지 여부를 판단한다(S701).
단계(S701)의 판단 결과 메타데이터 정보가 존재하지 아니하면, 존재하지 않는 파일이나 청크에 대한 요청이므로 에러를 클라이언트에게 전송한다(S704).
단계(S701)의 판단 결과 메타데이터 정보가 존재하면 해당 메타데이터 정보에서 파일 속성 정보와 요청된 청크 정보를 읽고(S702), 파일 속성 정보 및 청크 정보를 클라이언트에 전송(S703)한다.
도 6 및 도 7에 도시된 읽기 방법 및 읽기 요청 처리 방법은, 가상 환경과 같이 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서 클라이언트 및 메타데이터 서버가 불필요한 동작을 수행하지 아니하도록 함으로써 성능을 극대화할 수 있다.
도 6 및 도 7에 도시된 예에서 가상머신을 실행하는 서버 호스트가 가상머신 이미지를 집중적으로 액세스하는 파일시스템의 클라이언트로 동작하는 가상환경을 중심으로 설명하였으나, 가상환경 이외에도 다양한 유사환경이 존재할 수 있고 본 발명의 권리범위는 가상환경에 한정되어서는 안 된다.
도 8은 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트의 파일 쓰기 방법을 나타낸 동작 흐름도이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 참여형 클라이언트는 파일을 쓰기 위해 새로운 청크가 필요한지 여부를 판단한다(S801).
단계(S810)의 판단 결과 새로운 청크가 필요하지 않다고 판단되면, 로컬 청크에 데이터를 쓴다(S805).
단계(S805)의 판단 결과 새로운 청크가 필요하다고 판단되면, 참여형 클라이언트는 메타데이터 서버에게 쓰고자 하는 청크 정보(information on the chuck for writing) (예를 들어, 청크 아이디)를 제공하면서 청크 할당을 요청한다(S802).
단계(S802)의 요청에 대한 응답으로, 참여형 클라이언트는 메타데이터 서버로부터 청크 할당 결과 및 파일의 메타데이터 정보(파일 속성 정보 및 해당 청크의 청크 정보)를 수신한다(S803).
단계(S803)의 수신이 완료되면, 참여형 클라이언트는 자신의 로컬에 새로운 청크를 할당하고 수신된 메타데이터 정보를 로컬에 저장한다(S804).
이후, 참여형 클라이언트는 할당된 로컬 청크에 쓰기 요청된 데이터를 쓴다(S805).
쓰기가 완료되면 쓰기에 상응하는 청크를 참여형 클라이언트가 수정했음을 알리기 위해, 수정된 청크의 청크 정보의 전역 생성 번호를 1 증가시켜 저장하고(S806), 메타데이터 서버에 전역 생성 번호 1 증가를 요청한다(S807).
이후, 참여형 클라이언트는 해당 청크를 저장하고 있는 데이터 서버들에 청크 수정을 전파하기 위해 데이터 복제를 수행한다(S808).
단계(S808)의 데이터 복제는 동기식 방법 또는 비동기식 방법 중 하나에 의해 수행될 수 있고, 데이터 복제 방법은 파일 시스템 설정을 통해 언제든지 변경이 가능하다.
동기식 방법의 경우 참여형 클라이언트가 직접 해당 데이터 서버들 중 주 데이터 서버에 데이터 쓰기를 요청하게 된다. 이 경우, 주 데이터 서버는 데이터 쓰기 요청을 수신하면 데이터 쓰기를 수행하고, 나머지 데이터 서버들에의 복제를 연속적으로 수행한다. 반면, 비동기식 방법의 경우 참여형 클라이언트는 별도의 복제 쓰레드나 복제 프로세스를 구동하고 파일 쓰기 작업을 완료한다. 주 데이터 서버를 포함한 데이터 서버들은 데이터 쓰기 요청을 수신하면, 데이터 쓰기를 수행하고 메타데이터 서버에 해당 청크의 생성번호 증가를 요청한다. 메타데이터 서버는 청크 생성번호 증가 요청을 수신하면 이를 반영한다. 참여형 클라이언트가 로컬에 저장하고 있는 메타데이터에 해당 청크 생성번호 변경에 대한 반영은 불필요하다. 데이터 서버들에 데이터 쓰기를 요청하고 그 결과가 수신되면 해당 파일의 메타데이터 중 해당 청크의 해당 데이터 서버에 대응되는 생성 번호(도 2의 522-z-i) 증가를 메타데이터 서버에 요청한다.
비참여형 클라이언트의 파일 쓰기 방법은 도 3, 도 4 및 도 8로부터 쉽게 도출되므로 자세한 설명은 생략한다.
또한, 클라이언트의 파일 쓰기를 통해 메타데이터 서버가 수행하는 작업은 청크 할당 요청 처리 및 청크에 대한 생성 번호 수정 요청 처리가 있으며, 이는 도 5를 통해 설명한 처리 방법과 유사하며 공유 잠금(sharing lock) 대신 배타 잠금(exclusive lock)이 사용되는 것만 차이가 있으므로 자세한 설명은 생략한다.
가상환경처럼 특정 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서의 쓰기 과정 및 메타데이터 서버에서의 처리 과정은 도 3과 도 6, 도 5와 도 7의 관계로부터 쉽게 이해될 수 있다. 이를 간략히 설명하면, 특정 클라이언트가 특정 파일을 독점적으로 사용하는 환경에서는 메타데이터 서버에서 메타데이터 액세스시마다 잠금 사용이 불필요하고, 클라이언트에서 로컬에 저장된 데이터의 유효성 검사를 위해 메타데이터 서버로부터의 메타데이터를 획득하는 과정도 불필요하며, 수신 메타데이터의 전역 생성 번호와 로컬의 전역 생성 번호를 비교하는 과정도 불필요하다.
한편, 파일 생성 연산은 메타데이터 서버에서 파일에 대한 파일 속성 정보만을 생성하고 이를 클라이언트에 전송함으로써 완료된다. 반면 파일 열기 연산은 메타데이터 서버에서 파일 속성 정보만을 읽어서 클라이언트에 전송함으로써 완료된다. 마지막으로 파일 닫기 연산은 클라이언트에서 해당 파일에 대한 메타데이터 정보 및 데이터 정보를 삭제하는 것으로 완료된다. 파일 생성, 읽기 및 닫기 연산에서 특정 속성 정보(예를 들어, 파일의 열기 수 등)의 수정이 수반되는 경우에는 메타데이터 서버에서 해당 메타데이터 정보의 파일 속성 정보에 대한 수정을 할 수 있다.
파일 삭제 연산은 파일 쓰기 연산과 유사하므로 자세한 설명은 생략한다.
도 9는 본 발명의 일실시예에 따른 분산 파일시스템의 클라이언트 장치를 나타낸 블록도이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 클라이언트 장치는 저장 여부 판단부(910), 파일 리드부(920), 메타데이터 수신부(930) 및 변경 여부 판단부(940)를 포함한다.
저장 여부 판단부(910)는 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 메타데이터 정보(제1 메타데이터 정보)가 로컬에 기저장되어있는지 여부를 판단한다.
파일 리드부(920)는 상기 메타데이터 정보(제1 메타데이터 정보)가 로컬에 기저장되어 있는 경우, 상기 메타데이터 정보(제1 메타데이터 정보)에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행한다. 실시예에 따라, 로컬에 메타데이터가 있어도 메타데이터 서버에서 메타데이터를 읽어서 비교를 수행하고 비교 결과에 따라 상기 파일에 대한 읽기를 수행할 수 있다.
메타데이터 수신부(930)는 메타데이터 서버로부터 상기 청크의 전역 생성 번호를 포함하는 메타데이터 정보(제2 메타데이터 정보)를 수신하고, 수신된 메타데이터 정보(제2 메타데이터 정보)를 로컬에 저장한다.
실시예에 따라, 메타데이터 수신부(930)는 저장 여부 판단부의 판단 결과 메타데이터 정보가 기저장되어 있지 않은 경우 메타데이터 서버로부터 메타데이터 정보를 수신할 수도 있고, 메타데이터 정보가 기저장되어 있는 경우에도 메타데이터 정보에 대한 변경 여부를 판단하기 위해 메타데이터 서버로부터 메타데이터 정보를 수신할 수 있다.
메타데이터 수신부(930)에 의해 메타데이터 서버로부터 새로운 메타데이터 정보가 수신되는 경우, 클라이언트는 수신된 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행할 수 있다. 이 때, 메타데이터 서버로부터 메타데이터를 수신하는 경우라도, 기저장된 메타데이터와 전역 생성번호가 동일하다면, 청크 데이터 수신이 없을 수도 있다.
이 때, 메타데이터 정보(제 1 메타데이터 정보 및 제2 메타데이터 정보)는 파일 속성 정보 및 상기 파일에 속한 청크에 대한 청크 정보를 포함할 수 있다. 이 때, 파일 속성 정보는 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함할 수 있다. 이 때, 청크 정보는 청크 아이디, 상기 전역 생성 번호, 및 청크 저장 서버 리스트를 포함할 수 있다. 이 때, 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함할 수 있다. 이 때, 생성 번호는 상응하는 청크에 변경이 발생할 때마다 1씩 증가할 수 있다.
이 때, 전역 생성 번호는 상기 데이터 서버들에 상응하는 생성 번호들 중 가장 큰 값에 상응하는 것일 수 있다.
변경 여부 판단부(940)는 로컬에 기저장된 메타데이터 정보(제1 메타데이터 정보)와 메타데이터 서버로부터 수신된 메타데이터 정보(제2 메타데이터 정보)에 각각 포함된 전역 생성 번호들을 비교하여 상기 청크에 대한 변경 여부를 판단한다.
파일 리드부(920)는 로컬에 저장된 메타데이터 정보(제1 메타데이터 정보)와 메타데이터 서버로부터 수신된 메타데이터 정보(제2 메타데이터 정보)에 각각 포함된 전역 생성 번호들이 동일한 경우에는 로컬 데이터를 이용하여 파일에 대한 읽기를 수행하고, 저장여부 판단부(910)의 판단 결과 메타데이터 정보(제1 메타데이터 정보)가 기저장되어있지 않은 경우나 전역 생성 번호들이 상이하여 청크가 변경된 것으로 판단되는 경우 수신된 메타데이터 정보(제2 메타데이터 정보)를 이용하여 데이터를 다운로드할 데이터 서버를 선택하고 선택된 데이터 서버로부터 청크 데이터를 수신하고 수신된 청크 데이터를 이용하여 파일에 대한 읽기를 수행할 수 있다.
이 때, 데이터를 다운로드할 데이터 서버의 선택은 메타데이터 서버로부터 수신된 메타데이터 정보(제2 메타데이터 정보)에 포함된 전역 생성 번호와 동일한 생성 번호를 가지는 데이터 서버들만을 대상으로 할 수 있다.
도 9에는 도시되지 아니하였으나, 분산 파일시스템의 클라이언트 장치는 데이터 쓰기를 위해 청크 필요 여부 판단부, 청크 할당 요청부, 청크 할당부, 데이터 라이팅부, 로컬 전역 번호 증가부, 전역 번호 증가 요청부 및 데이터 복제부를 더 포함할 수 있다.
청크 필요 여부 판단부는 데이터를 쓰기 전에 새로운 청크가 필요한지 여부를 판단한다.
청크 할당 요청부는 새로운 청크 할당이 필요한 경우 메타데이터 서버로 새로운 청크 할당을 요청한다.
청크 할당부는 메타데이터 서버로부터 청크 할당 결과 및 할당된 청크에 상응하는 메타데이터 정보를 수신하여 로컬에 새로운 청크를 할당하고 수신된 메타데이터를 저장한다.
데이터 라이팅부는 로컬 청크에 데이터를 쓴다.
로컬 전역 번호 증가부는 쓰기된 데이터에 상응하는 청크의 전역 생성 번호를 1 증가시켜서 저장한다.
전역 번호 증가 요청부는 메타데이터 서버로 상기 데이터에 상응하는 메타데이터 정보의 전역 생성 번호 1 증가를 요청한다.
데이터 복제부는 상기 쓰기에 상응하는 데이터 복제를 수행한다.
데이터 복제가 동기식 방법 및 비동기식 방법에 의하여 수행될 수 있음은 앞서 설명한 바와 같다.
도 10은 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버 장치를 나타낸 블록도이다.
도 10을 참조하면, 본 발명의 일실시예에 따른 분산 파일시스템의 메타데이터 서버 장치는 존재 여부 판단부(1010), 메타데이터 전송부(1020), 에러 전송부(1030) 및 잠금 설정부(1040)를 포함한다.
존재 여부 판단부(1010)는 읽기 또는 쓰기 요청된 파일에 상응하는 청크의 메타데이터 정보가 존재하는지 여부를 판단한다.
메타데이터 전송부(1020)는 존재 여부 판단부(1010)의 판단 결과 메타데이터 정보가 존재한다고 판단되는 경우 상기 메타데이터 정보에 포함된 파일 속성 정보 및 청크 정보를 클라이언트로 전송한다.
이 때, 파일 속성 정보는 파일의 크기, 청크의 크기, 파일의 복제 수, 파일의 소유자, 파일의 접근 권한 중 하나 이상을 포함할 수 있다.
이 때, 청크 정보는 청크 아이디, 전역 생성 번호 및 청크 저장 서버 리스트를 포함할 수 있다. 이 때, 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함할 수 있다. 이 때, 생성 번호는 상기 생성 번호에 상응하는 청크에 변경이 발생할 때마다 1씩 증가할 수 있다.
이 때, 전역 생성 번호는 데이터 서버들에 상응하는 생성 번호들 중 가장 큰 값에 상응하는 것일 수 있다.
에러 전송부(1030)는 존재 여부 판단부(1010)의 판단 결과 메타데이터 정보가 존재하지 않는 경우, 잘못된 요청이므로 에러를 전송한다.
잠금 설정부(1040)는 파일 속성 정보 및 청크에 대한 잠금을 설정한다. 이 때, 파일 읽기의 경우 공유 잠금(sharing lock)을, 파일 쓰기의 경우 배타 잠금(exclusive lock)을 설정할 수 있다.
메타데이터 전송부(1020)는 특정 클라이언트가 특정 파일을 독점적으로 사용하는 조건이 아닌 경우 잠금 설정부(1040)에 의하여 잠금이 설정된 경우에만 파일 속성 정보 및 청크 정보를 액세스할 수 있다.
도 10에 도시된 메타데이터 서버 장치는 복수의 메타데이터 서버들로 구성된 메타데이터 서버 클러스터에 상응하는 것일 수 있다. 이 때, 복수의 메타데이터 서버들 각각은 할당된 메타데이터 정보만을 관리할 수 있다.
이상에서와 같이 본 발명에 따른 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
100-1, ..., 100-m: 참여형 클라이언트
110-1, ..., 110-m: 참여형 클라이언트의 로컬 스토리지
200-1, ..., 200-n: 비참여형 클라이언트
300: 네트워크 스위치
400-1, ..., 400-x: 데이터 서버
410-1, ..., 410-x: 데이터 서버의 로컬 스토리지
500-1, ..., 500-y: 메타데이터 서버
510-1, ..., 510-y: 메타데이터 서버의 로컬 스토리지

Claims (20)

  1. 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 제1 메타데이터 정보가 내부에 기저장되어있는지 여부를 판단하는 저장 여부 판단부; 및
    상기 제1 메타데이터 정보가 기저장되어있는 경우, 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 파일 리드부
    를 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  2. 청구항 1에 있어서,
    상기 분산 파일시스템의 클라이언트 장치는
    상기 청크의 전역 생성 번호를 포함하는 제2 메타데이터 정보를 수신하고 상기 제2 메타데이터 정보를 로컬에 저장하는 메타데이터 수신부를 더 포함하고,
    상기 파일 리드부는
    상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  3. 청구항 2에 있어서,
    상기 제1 메타데이터 정보 및 제2 메타데이터 정보는 각각
    상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 파일 속성 정보; 및
    상기 파일에 속한 상기 청크에 대한 청크 정보
    를 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  4. 청구항 3에 있어서,
    상기 청크 정보는 청크 아이디, 상기 전역 생성 번호, 및 청크 저장 서버 리스트를 포함하고,
    상기 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함하고,
    상기 생성 번호는 상기 생성 번호에 상응하는 청크에 변경이 발생할 때마다 1씩 증가하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  5. 청구항 4에 있어서,
    상기 전역 생성 번호는 상기 데이터 서버들에 상응하는 생성 번호들 중 가장 큰 값에 상응하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  6. 청구항 5에 있어서,
    상기 분산 파일시스템의 클라이언트 장치는
    상기 제1 메타데이터 정보 및 상기 제2 메타데이터 정보에 각각 포함된 상기 전역 생성 번호들을 비교하여 상기 청크에 대한 변경 여부를 판단하는 변경 여부 판단부를 더 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  7. 청구항 6에 있어서,
    상기 파일 리드부는
    상기 전역 생성 번호들이 동일한 경우에 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하고,
    상기 전역 생성 번호들이 상이한 경우에 상기 청크가 변경된 것으로 판단하고 상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  8. 청구항 7에 있어서,
    상기 제2 메타데이터 정보에 상응하는 데이터 서버는
    상기 제2 메타데이터 정보에 포함된 상기 전역 생성 번호와 동일한 생성 번호에 상응하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  9. 청구항 1에 있어서,
    상기 분산 파일시스템의 클라이언트 장치는
    로컬 청크에 데이터를 쓰는 데이터 라이팅부;
    상기 데이터에 상응하는 청크의 전역 생성 번호를 1 증가시켜서 저장하는 로컬 전역 번호 증가부;
    메타데이터 서버로 상기 데이터에 상응하는 메타데이터 정보의 전역 생성번호 1 증가를 요청하는 전역 번호 증가 요청부; 및
    상기 쓰기에 상응하는 데이터 복제를 수행하는 데이터 복제부를 더 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  10. 청구항 9에 있어서,
    상기 분산 파일시스템의 클라이언트 장치는
    상기 데이터를 쓰기 전에 새로운 청크가 필요한지 여부를 판단하는 청크 필요 판단부;
    상기 새로운 청크가 필요한 경우 상기 메타데이터 서버로 청크 할당을 요청하는 청크 할당 요청부; 및
    상기 메타데이터 서버로부터 청크 할당 결과 및 할당된 청크에 상응하는 메타데이터 정보를 수신하고 로컬에 새로운 청크를 할당하고 수신된 메타데이터를 저장하는 청크 할당부를 더 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트 장치.
  11. 읽기 요청된 파일에 상응하는 청크의 메타데이터 정보가 존재하는지 여부를 판단하는 존재 여부 판단부; 및
    상기 메타데이터 정보가 존재하는 경우, 상기 메타데이터 정보에 포함된 파일 속성 정보 및 청크 정보를 전송하는 메타데이터 전송부를 포함하고,
    상기 파일 속성 정보는 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치.
  12. 청구항 11에 있어서,
    상기 청크 정보는
    청크 아이디, 상기 전역 생성 번호, 및 청크 저장 서버 리스트를 포함하고,
    상기 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함하고,
    상기 생성 번호는 상기 생성 번호에 상응하는 청크에 변경이 발생할 때마다 1씩 증가하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치.
  13. 청구항 12에 있어서,
    상기 분산 파일시스템의 메타데이터 서버 장치는
    상기 메타데이터 정보가 존재하지 않는 경우, 에러를 전송하는 에러 전송부; 및
    상기 파일 속성 정보 및 상기 청크에 대한 잠금을 설정하는 잠금 설정부를 더 포함하고,
    상기 메타데이터 전송부는
    상기 잠금이 설정된 경우에만 상기 파일 속성 정보 및 상기 청크 정보를 액세스하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치.
  14. 청구항 13에 있어서,
    상기 전역 생성 번호는 상기 데이터 서버들에 상응하는 생성 번호들 중 가장 큰 값에 상응하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치.
  15. 청구항 14에 있어서,
    상기 메타데이터 서버 장치는
    복수의 메타데이터 서버들로 구성된 메타데이터 서버 클러스터에 상응하며, 상기 복수의 메타데이터 서버들 각각은 할당된 상기 메타데이터 정보만을 관리하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치.
  16. 읽고자 하는 파일에 상응하는 청크의 전역 생성 번호를 포함하는 제1 메타데이터 정보가 내부에 기저장되어있는지 여부를 판단하는 단계; 및
    상기 제1 메타데이터 정보가 기저장되어있는 경우, 상기 제1 메타데이터 정보에 상응하는 로컬 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 단계
    를 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트의 파일 읽기 방법.
  17. 청구항 16에 있어서,
    상기 파일 읽기 방법은
    상기 청크의 전역 생성 번호를 포함하는 제2 메타데이터 정보를 수신하여 로컬에 저장하는 단계를 더 포함하고,
    상기 파일에 대한 읽기를 수행하는 단계는
    상기 제2 메타데이터 정보에 상응하는 데이터 서버로부터 청크 데이터를 수신하고, 수신된 상기 청크 데이터를 이용하여 상기 파일에 대한 읽기를 수행하는 것을 특징으로 하는 분산 파일시스템의 클라이언트의 파일 읽기 방법.
  18. 청구항 17에 있어서,
    상기 제1 메타데이터 정보 및 제2 메타데이터 정보는 각각
    상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 파일 속성 정보; 및
    상기 파일에 속한 상기 청크에 대한 청크 정보
    를 포함하는 것을 특징으로 하는 분산 파일시스템의 클라이언트의 파일 읽기 방법.
  19. 읽기 요청된 파일에 상응하는 청크의 메타데이터 정보가 존재하는지 여부를 판단하는 단계; 및
    상기 메타데이터 정보가 존재하는 경우, 상기 메타데이터 정보에 포함된 파일 속성 정보 및 청크 정보를 전송하는 단계를 포함하고,
    상기 파일 속성 정보는 상기 파일의 크기, 상기 청크의 크기, 상기 파일의 복제 수, 상기 파일의 소유자, 상기 파일의 접근 권한 중 하나 이상을 포함하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치의 읽기 요청 처리 방법.
  20. 청구항 19에 있어서,
    상기 청크 정보는
    청크 아이디, 상기 전역 생성 번호, 및 청크 저장 서버 리스트를 포함하고,
    상기 청크 저장 서버 리스트는 상기 청크를 저장하고 있는 데이터 서버들 각각의 데이터 서버 아이디, 청크 위치 아이디 및 생성 번호를 포함하고,
    상기 생성 번호는 상기 생성 번호에 상응하는 청크에 변경이 발생할 때마다 1씩 증가하는 것을 특징으로 하는 분산 파일시스템의 메타데이터 서버 장치의 읽기 요청 처리 방법.
KR1020120067505A 2011-10-24 2012-06-22 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법 KR101601877B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/602,783 US9378218B2 (en) 2011-10-24 2012-09-04 Apparatus and method for enabling clients to participate in data storage in distributed file system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20110109001 2011-10-24
KR1020110109001 2011-10-24

Publications (2)

Publication Number Publication Date
KR20130045159A true KR20130045159A (ko) 2013-05-03
KR101601877B1 KR101601877B1 (ko) 2016-03-09

Family

ID=48657395

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120067505A KR101601877B1 (ko) 2011-10-24 2012-06-22 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101601877B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150087622A (ko) * 2014-01-22 2015-07-30 한국전자통신연구원 파일 수준의 스냅샷을 제공하는 분산 파일 시스템 및 그 동작 방법
KR20160067289A (ko) * 2014-12-03 2016-06-14 충북대학교 산학협력단 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템
KR20170031456A (ko) * 2015-09-11 2017-03-21 삼성에스디에스 주식회사 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법
KR20170081977A (ko) * 2016-01-05 2017-07-13 한국전자통신연구원 효율적으로 파일을 생성하기 위한 분산 파일 시스템 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102252187B1 (ko) * 2017-11-22 2021-05-14 한국전자통신연구원 분산 파일 시스템에서 소거코딩 기반의 파일 입출력을 지원하는 장치 및 그 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090292705A1 (en) * 2008-05-20 2009-11-26 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
KR20100048130A (ko) * 2008-10-30 2010-05-11 주식회사 케이티 메타데이터 클러스터 기반의 분산형 스토리지 시스템 및 그동작 방법
US20100161897A1 (en) * 2008-12-22 2010-06-24 Electronics And Telecommunications Research Institute Metadata server and disk volume selecting method thereof
KR20100137323A (ko) * 2009-06-22 2010-12-30 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090292705A1 (en) * 2008-05-20 2009-11-26 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
KR20100048130A (ko) * 2008-10-30 2010-05-11 주식회사 케이티 메타데이터 클러스터 기반의 분산형 스토리지 시스템 및 그동작 방법
US20100161897A1 (en) * 2008-12-22 2010-06-24 Electronics And Telecommunications Research Institute Metadata server and disk volume selecting method thereof
KR20100137323A (ko) * 2009-06-22 2010-12-30 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150087622A (ko) * 2014-01-22 2015-07-30 한국전자통신연구원 파일 수준의 스냅샷을 제공하는 분산 파일 시스템 및 그 동작 방법
KR20160067289A (ko) * 2014-12-03 2016-06-14 충북대학교 산학협력단 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템
KR20170031456A (ko) * 2015-09-11 2017-03-21 삼성에스디에스 주식회사 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법
KR20170081977A (ko) * 2016-01-05 2017-07-13 한국전자통신연구원 효율적으로 파일을 생성하기 위한 분산 파일 시스템 및 방법
US10474643B2 (en) 2016-01-05 2019-11-12 Electronics And Telecommunications Research Institute Distributed file system and method of creating files effectively

Also Published As

Publication number Publication date
KR101601877B1 (ko) 2016-03-09

Similar Documents

Publication Publication Date Title
US10951710B2 (en) Cache migration management in a virtualized distributed computing system
US10523786B2 (en) I/O bandwidth reduction using storage-level common page information
CN108351860B (zh) 低延迟的基于rdma的分布式存储装置
US9342465B1 (en) Encrypting data in a flash-based contents-addressable block device
US9619543B1 (en) Replicating in virtual desktop infrastructure
US9378218B2 (en) Apparatus and method for enabling clients to participate in data storage in distributed file system
US9268651B1 (en) Efficient recovery of storage gateway cached volumes
US9274956B1 (en) Intelligent cache eviction at storage gateways
US20200042394A1 (en) Managing journaling resources with copies stored in multiple locations
US10223371B2 (en) Host-based deduplication using array generated data tags
JP6588080B2 (ja) 分散型共有メモリアプリケーションのメモリ破損の検出サポート
US8631209B2 (en) Reusable content addressable stores as building blocks for creating large scale storage infrastructures
CN106959996B (zh) 一种基于互联网电视的后台数据同步方法
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
JPWO2014170952A1 (ja) 計算機システム、計算機システム管理方法及びプログラム
JP7012010B2 (ja) 情報処理システム、及び、情報処理システムの制御方法
US8074003B1 (en) Host-based storage controller providing block devices in geographically distributed storage
US10757175B2 (en) Synchronization optimization based upon allocation data
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
US10931750B1 (en) Selection from dedicated source volume pool for accelerated creation of block data volumes
US20180143776A1 (en) Security within storage area network having fabric-attached storage drives, san agent-executing client devices, and san manager
KR20170090594A (ko) 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치
US11216204B2 (en) Degraded redundant metadata, DRuM, technique
US11042479B2 (en) Fully active and non replicated block storage solution
US10956442B1 (en) Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots

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: 20190304

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200224

Year of fee payment: 5