KR20170090594A - 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 - Google Patents

분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 Download PDF

Info

Publication number
KR20170090594A
KR20170090594A KR1020160011120A KR20160011120A KR20170090594A KR 20170090594 A KR20170090594 A KR 20170090594A KR 1020160011120 A KR1020160011120 A KR 1020160011120A KR 20160011120 A KR20160011120 A KR 20160011120A KR 20170090594 A KR20170090594 A KR 20170090594A
Authority
KR
South Korea
Prior art keywords
lock
file
client
distributed
information
Prior art date
Application number
KR1020160011120A
Other languages
English (en)
Other versions
KR102016417B1 (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 KR1020160011120A priority Critical patent/KR102016417B1/ko
Publication of KR20170090594A publication Critical patent/KR20170090594A/ko
Application granted granted Critical
Publication of KR102016417B1 publication Critical patent/KR102016417B1/ko

Links

Images

Classifications

    • G06F17/30171
    • G06F17/3007
    • G06F17/302

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 파일을 분산하여 저장하는 복수의 데이터 서버 장치, 및 파일의 분산에 관한 정보를 저장하는 메타데이터 서버 장치를 포함한다. 복수의 데이터 서버 장치 중 적어도 하나는 클라이언트 장치로부터 제공되는 액세스 요청을 처리하기 위해 파일 잠금 정보를 관리하는 분산 잠금 관리기를 포함한다. 분산 잠금 관리기를 포함하는 데이터 서버 장치는 클라이언트 장치에서 분산 잠금 캐시가 생성되도록 액세스 요청에 대응하는 파일 잠금 정보를 클라이언트 장치로 전송하고, 클라이언트 장치에 의해 요청된 잠금 범위와 분산 잠금 캐시에 캐시된 잠금 범위 사이의 관계에 기초하여 클라이언트 장치로부터 잠금 설정 요청을 수신하고, 잠금 설정 요청에 응답하여, 요청된 잠금 범위와 허용되는 잠금 범위 사이의 관계에 기초하여 잠금 성공 응답 또는 잠금 대기 응답을 클라이언트 장치로 전송한다. 본 발명에 따르면, 분산 잠금에 관한 정보가 여러 장치에서 분산하여 관리되기 때문에, 특정 장치 상의 오버헤드가 감소한다.

Description

분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 {DATA SERVER DEVICE CONFIGURED TO MANAGE DISTRIBUTED LOCK OF FILE TOGETHER WITH CLIENT DEVICE IN STORAGE SYSTEM EMPLOYING DISTRIBUTED FILE SYSTEM}
본 발명은 데이터 스토리지에 관한 것으로, 좀 더 구체적으로는 분산 파일 시스템을 채용한 스토리지 시스템에서 파일의 분산 잠금을 관리하기 위한 스킴(Scheme)에 관한 것이다.
근래 정보 통신 기술이 발전함에 따라, 다양한 형태의 전자 시스템들이 이용되고 있다. 대부분의 전자 시스템들 또는 장치들은 데이터를 이용하여 동작한다. 전자 시스템 또는 장치는 그것에 포함되는 스토리지에 저장된 데이터를 이용하거나, 독립된 또는 원격의 스토리지에 저장된 데이터를 이용할 수 있다.
사용자들에 의해 요청되는 데이터의 양이 증가하고 큰 크기(Size)를 갖는 데이터(예컨대, 오디오 데이터, 동영상 데이터 등)의 저장이 요청됨에 따라, 큰 용량(Capacity)을 갖는 스토리지에 대한 요구가 증가해 왔다. 단일 스토리지 장치의 용량에는 한계가 있기 때문에, 네트워크를 통해 복수의 스토리지 서버를 연결하고 연결된 스토리지 서버들을 하나의 스토리지로 인식하는 분산 스토리지(Distributed Storage) 기술이 활용될 수 있다.
분산 스토리지 시스템에서, 하나의 데이터 파일은 복수의 청크(Chunk)로 분할될 수 있다. 분할된 청크들은 복수의 스토리지 서버에 분산하여 저장될 수 있다. 따라서, 단일 스토리지 서버의 용량에 한계가 있더라도, 큰 크기를 갖는 데이터가 복수의 스토리지에 분산하여 저장될 수 있다.
분산 스토리지 시스템은 분산 파일 시스템을 채용할 수 있다. 분산 파일 시스템은 복수의 스토리지 서버에 분산하여 저장된 청크들을 관리하기 위해 채용될 수 있다. 분산 파일 시스템이 채용되는 경우, 데이터 파일의 분할에 관한 정보 및 분산하여 저장된 청크들에 관한 정보가 관리될 수 있다. 분산 스토리지 시스템에 저장된 데이터 파일은 위 정보에 기초하여 액세스될 수 있다.
그러나, 분산 스토리지 시스템에서, 데이터 파일의 동시성 및 일관성에 관한 이슈가 발생할 수 있다. 데이터 파일이 분할되고 분산하여 저장되기 때문에, 분할된 청크들 각각을 일관되게 관리하기 위한 스킴이 요구된다. 데이터 파일을 일관되게 관리하기 위해, 분산 파일 시스템은 "분산 잠금" 스킴을 채용한다. 분산 잠금 스킴이 채용되는 경우, 데이터 파일로 액세스하기 위한 권한을 획득한 클라이언트만이 그 데이터 파일로 액세스할 수 있고, 권한을 갖지 않는 클라이언트는 그 데이터 파일로 액세스할 수 없다. 따라서, 데이터 파일의 일관성이 보장될 수 있다.
본 발명은 분산 파일 시스템을 채용한 스토리지 시스템에서 파일의 분산 잠금을 관리하기 위한 스킴을 제공할 수 있다. 본 발명의 실시 예들에서, 스토리지 시스템의 데이터 서버는 클라이언트와 함께 파일의 분산 잠금을 관리할 수 있다. 따라서, 분산 잠금에 관한 정보는 데이터 서버 및 클라이언트에서 함께 관리될 수 있다.
본 발명의 일 실시 예에 따른 스토리지 시스템은 분산 파일 시스템을 채용할 수 있다. 스토리지 시스템은 파일을 분산하여 저장하도록 구성되는 복수의 데이터 서버 장치, 및 파일의 분산에 관한 정보를 저장하도록 구성되는 메타데이터 서버 장치를 포함할 수 있다. 복수의 데이터 서버 장치 중 적어도 하나는 클라이언트 장치로부터 제공되는 파일로의 액세스 요청을 처리하기 위해 파일 잠금 정보를 관리하도록 구성되는 분산 잠금 관리기를 포함할 수 있다. 분산 잠금 관리기를 포함하는 데이터 서버 장치는: 클라이언트 장치로부터 액세스 요청을 수신할 수 있고; 클라이언트 장치에서 분산 잠금 캐시가 생성되도록, 액세스 요청에 대응하는 파일 잠금 정보의 일부 또는 전부를 클라이언트 장치로 전송할 수 있고; 메타데이터 서버 장치에 저장된 정보를 참조하여 클라이언트 장치에 의해 요청된 잠금 범위와, 분산 잠금 캐시에 캐시된 잠금 범위 사이의 관계에 기초하여, 클라이언트 장치로부터 잠금 설정 요청을 수신할 수 있고; 잠금 설정 요청에 응답하여, 클라이언트 장치에 의해 요청된 잠금 범위와 파일 잠금 정보에 의해 허용되는 잠금 범위 사이의 관계에 기초하여, 잠금 성공 응답 또는 잠금 대기 응답을 클라이언트 장치로 전송할 수 있다.
본 발명의 실시 예들에 따르면, 분산 잠금에 관한 정보를 특정 장치에 의해 집중적으로 관리하는 대신, 여러 장치가 분산 잠금에 관한 정보를 분산하여 관리할 수 있다. 따라서, 특정 장치 상의 오버헤드(Overhead)가 증가하는 것이 방지될 수 있다. 나아가, 특정 장치의 동작에 장애가 발생하더라도, 파일로의 액세스가 보장될 수 있다. 결과적으로, 스토리지 시스템 전체의 신뢰성 및 효율성이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템 및 클라이언트를 포함하는 네트워크 시스템을 보여주는 블록도이다.
도 2는 도 1의 데이터 서버들에 파일을 분산하여 저장한 것을 보여주는 개념도이다.
도 3은 도 1의 데이터 서버들에 파일 및 그 파일의 복제된 사본(Duplicated Copy)을 저장한 것을 보여주는 개념도이다.
도 4는 도 1의 메타데이터 서버에서 관리되는 데이터 서버 정보 및 파일 레이아웃 정보의 예시적인 구조(Structure)를 보여주는 개념도이다.
도 5는 도 1의 클라이언트로부터 도 1의 데이터 서버들에 저장된 파일로의 액세스 요청을 보여주는 개념도이다.
도 6은 도 1의 클라이언트에서 관리되는 분산 잠금 캐시의 예시적인 구조를 보여주는 개념도이다.
도 7은 도 1의 데이터 서버에 포함되는 분산 잠금 관리기의 예시적인 구성(Configuration)을 보여주는 개념도이다.
도 8은 도 7의 분산 잠금 관리기에서 관리되는 파일 잠금 정보의 예시적인 구조를 보여주는 개념도이다.
도 9는 도 1의 클라이언트에서 분산 잠금 캐시를 생성하고 파일 잠금을 요청/획득하는 과정을 설명하는 흐름도이다.
도 10a 및 도 10b는 도 1의 데이터 서버에서 파일 잠금 정보를 관리하고 파일 잠금을 설정하는 과정을 설명하는 흐름도들이다.
도 11은 도 1의 클라이언트에서 파일 잠금 해제를 요청하고 분산 잠금 캐시를 해제하는 과정을 설명하는 흐름도이다.
도 12는 도 1의 데이터 서버에서 파일 잠금을 해제하는 과정을 설명하는 흐름도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템 및 클라이언트를 포함하는 네트워크 시스템을 보여주는 블록도이다. 네트워크 시스템(100)은 네트워크(105)를 통해 연결되는 스토리지 시스템(101) 및 하나 이상의 클라이언트들(예컨대, 클라이언트(150a) 및 클라이언트(150p))을 포함할 수 있다.
스토리지 시스템(101)은 데이터를 저장하도록 구성될 수 있다. 이를 위해, 스토리지 시스템(101)은 복수의 데이터 서버(예컨대, 데이터 서버(130a) 및 데이터 서버(130n))를 포함할 수 있다. 예로서, 데이터 서버(130a) 및 데이터 서버(130n) 각각은 하나 이상의 스토리지 장치들을 포함할 수 있다. 예로서, 이 스토리지 장치들은 HDD(Hard Disk Drive), SSD(Solid State Drive) 등과 같은 다양한 불휘발성 스토리지들 중 하나 이상을 포함할 수 있다. 예로서, 데이터 서버(130a)는 데이터(CDa)를 저장할 수 있고, 데이터 서버(130n)는 데이터(CDn)를 저장할 수 있다.
도 1은 두 개의 데이터 서버들(130a, 130n)을 보여준다. 그러나, 데이터 서버들의 개수는 다양하게 변경 또는 수정될 수 있다. 두 개의 데이터 서버들(130a, 130n)은 더 나은 이해를 돕기 위해 제공된 예시일 뿐이다.
데이터 서버(130a) 및 데이터 서버(130n) 각각은 전자 장치로 구현될 수 있다. 예로서, 데이터 서버(130a) 및 데이터 서버(130n) 각각은 개인용 컴퓨터, 워크스테이션, 블레이드 서버(Blade Server) 등과 같은 다양한 장치들 중 하나로 구현될 수 있다.
데이터 서버(130a) 및 데이터 서버(130n) 각각은 하나 이상의 프로세서들을 포함할 수 있다. 이 프로세서들은 프로그램 코드의 명령어 집합(Instruction Set)을 컴파일(Compile) 또는 번역(Interpret)함으로써 프로그램 코드를 실행할 수 있다. 프로그램 코드의 실행에 따라, 뒤에서 설명될 데이터 서버(130a) 또는 데이터 서버(130n)의 동작들이 수행될 수 있다.
본 발명의 실시 예들에서, 스토리지 시스템(101)은 분산 파일 시스템(Distributed File System)을 채용할 수 있다. 분산 파일 시스템의 구동에 따라, 스토리지 시스템(101)에 저장될 데이터/파일은 복수의 청크(Chunk)로 분할될 수 있다. 분할된 청크들은 데이터 서버들(예컨대, 데이터 서버(130a) 및 데이터 서버(130n))에 분산하여 저장될 수 있다. 데이터 서버(130a) 및 데이터 서버(130n) 각각의 스토리지 용량에 한계가 있더라도, 큰 크기를 갖는 데이터/파일이 데이터 서버(130a) 및 데이터 서버(130n)에 분산하여 저장될 수 있다. 데이터/파일을 분산하여 저장하는 것은 도 2 및 도 3을 참조하여 설명될 것이다.
데이터/파일이 분산하여 저장됨에 따라, 스토리지 시스템(101)은 데이터/파일의 분할에 관한 정보 및 분산하여 저장된 청크들에 관한 정보를 관리할 수 있다. 즉, 스토리지 시스템(101)은 저장된 데이터/파일이 어떻게 분할되었는지, 및 어느 데이터 서버가 각 분할된 청크를 저장하는지를 관리할 수 있다. 스토리지 시스템(101)에 저장된 데이터/파일은 위 정보에 기초하여 액세스될 수 있다. 이를 위해, 스토리지 시스템(101)은 메타데이터 서버(110)를 포함할 수 있다.
메타데이터 서버(110)는 데이터/파일의 분산에 관한 정보를 저장할 수 있다. 따라서, 메타데이터 서버(110)에 저장된 정보를 참조하면, 저장된 데이터/파일이 어떻게 분할되었는지, 및 어느 데이터 서버가 각 분할된 청크를 저장하는지 여부가 이해될 수 있다.
메타데이터 서버(110)는 전자 장치로 구현될 수 있다. 예로서, 메타데이터 서버(110)는 개인용 컴퓨터, 워크스테이션, 블레이드 서버 등과 같은 다양한 장치들 중 하나로 구현될 수 있다. 나아가, 메타데이터 서버(110)는 뒤에서 설명될 정보를 저장하기 위해 하나 이상의 스토리지 장치들을 포함할 수 있다.
메타데이터 서버(110)는 하나 이상의 프로세서들을 포함할 수 있다. 이 프로세서들은 프로그램 코드의 명령어 집합을 컴파일 또는 번역함으로써 프로그램 코드를 실행할 수 있다. 프로그램 코드의 실행에 따라, 뒤에서 설명될 메타데이터 서버(110)의 동작들이 수행될 수 있다.
메타데이터 서버(110)는 메타데이터(MD)를 저장할 수 있다. 메타데이터(MD)는 데이터 서버들(예컨대, 데이터 서버(130a) 및 데이터 서버(130n))에 저장된 데이터/파일에 관한 정보를 포함할 수 있다. 예로서, 메타데이터(MD)는 데이터 서버(130a)에 저장된 데이터(CDa) 및 데이터 서버(130n)에 저장된 데이터(CDn)에 관한 정보를 저장할 수 있다.
메타데이터 서버(110)는 데이터 서버 관리기(112)를 포함할 수 있다. 데이터 서버 관리기(112)는 데이터 서버들(예컨대, 데이터 서버(130a) 및 데이터 서버(130n))의 상태에 관한 정보를 수집하고 관리할 수 있다. 메타데이터 서버(110)에서 저장되고 관리되는 정보는 도 4를 참조하여 설명될 것이다.
도 1은 한 개의 메타데이터 서버(110)를 보여준다. 그러나, 메타데이터 서버들의 개수는 다양하게 변경 또는 수정될 수 있다. 한 개의 메타데이터 서버(110)는 더 나은 이해를 돕기 위해 제공된 예시일 뿐이다. 예로서, 복수의 메타데이터 서버가 메타데이터(MD)를 분산하여 관리하거나, 데이터 서버 관리기(112)가 복수의 메타데이터 서버에 분산하여 배치될 수 있다.
클라이언트(예컨대, 클라이언트(150a) 또는 클라이언트(150p))는 스토리지 시스템(101)에 저장된 데이터/파일을 수신할 수 있다. 또는, 클라이언트는 스토리지 시스템(101)에 데이터/파일을 저장할 수 있다. 스토리지 시스템(101)은 클라이언트에게 스토리지 서비스를 제공할 수 있다. 클라이언트는 스토리지 시스템(101)에 저장된 데이터/파일을 읽거나 스토리지 시스템(101)에 데이터/파일을 저장하기 위해 메타데이터 서버(110)에 저장된 정보를 참조할 수 있다.
클라이언트(예컨대, 클라이언트(150a) 또는 클라이언트(150p))는 전자 장치로 구현될 수 있다. 예로서, 클라이언트(150a) 및 클라이언트(150p) 각각은 개인용 컴퓨터, 워크스테이션, 노트북 컴퓨터, 태블릿 컴퓨터, 스마트폰 등과 같은 다양한 장치들 중 하나로 구현될 수 있다. 나아가, 클라이언트(150a) 및 클라이언트(150p) 각각은 다양한 정보, 데이터, 및 파일을 저장하기 위해 하나 이상의 스토리지 장치들 및/또는 하나 이상의 메모리 장치들을 포함할 수 있다.
클라이언트(예컨대, 클라이언트(150a) 또는 클라이언트(150p))는 하나 이상의 프로세서들을 포함할 수 있다. 이 프로세서들은 프로그램 코드의 명령어 집합을 컴파일 또는 번역함으로써 프로그램 코드를 실행할 수 있다. 프로그램 코드의 실행에 따라, 뒤에서 설명될 클라이언트의 동작들이 수행될 수 있다.
도 1은 두 개의 클라이언트들(150a, 150p)을 보여준다. 그러나, 클라이언트들의 개수는 다양하게 변경 또는 수정될 수 있다. 두 개의 클라이언트들(150a, 150p)은 더 나은 이해를 돕기 위해 제공된 예시일 뿐이다.
예로서, 메타데이터 서버(110), 데이터 서버들(130a, 130n), 및 클라이언트들(150a, 150p)은 네트워크(105)를 통해 서로 연결될 수 있다. 메타데이터 서버(110), 데이터 서버들(130a, 130n), 및 클라이언트들(150a, 150p)은 네트워크(105)를 통해 다양한 정보, 데이터, 및 파일을 교환할 수 있다.
예로서, 네트워크(105)는 인터넷, 인트라넷, LAN(Local Area Network), WAN(Wide Area Network) 등과 같은 다양한 유선 네트워크 중 적어도 하나, 및/또는 WiFi(Wireless Fidelity), LTE(Long Term Evolution), CDMA(Code Division Multiple Access) 등과 같은 다양한 무선 네트워크 중 적어도 하나를 포함할 수 있다.
한편, 스토리지 시스템(101)에서, 데이터 서버들(130a, 130n)에 저장된 데이터/파일의 일관성(Consistency)에 관한 이슈가 발생할 수 있다. 데이터/파일이 분할되고 분산하여 저장되기 때문에, 스토리지 시스템(101)은 분할된 청크들 각각을 일관되게 관리하기 위해 "분산 잠금 스킴(Distributed Lock Scheme)"을 채용할 수 있다. 분산 잠금 스킴이 채용되는 경우, 데이터/파일로 액세스하기 위한 권한을 획득한 클라이언트만이 그 데이터/파일로 액세스할 수 있고, 권한을 갖지 않는 클라이언트는 그 데이터/파일로 액세스하지 못할 수 있다. 따라서, 데이터/파일의 일관성이 보장될 수 있다.
분산 잠금 스킴이 채용되는 경우, 스토리지 시스템(101)은 파일 잠금에 관한 정보를 관리할 수 있다. 즉, 스토리지 시스템(101)은 어떤 클라이언트가 특정 데이터/파일로 액세스하기 위한 권한을 획득하였는지(즉, "잠금"을 획득하였는지) 여부를 관리할 수 있다.
여기에서, "잠금"은 클라이언트가 데이터/파일로 액세스하기 위한 권한을 획득하였는지 여부와 관련될 수 있다. 클라이언트가 특정 데이터/파일에 관한 잠금을 획득한 경우, 그 클라이언트는 그 특정 데이터/파일로 액세스하기 위한 권한을 가질 수 있다. 클라이언트가 특정 데이터/파일에 관한 잠금을 획득한 경우, 그 특정 데이터/파일을 관리하는 서버 또는 장치는 그 클라이언트를 위해 잠금을 설정할 수 있다.
특정 클라이언트가 데이터/파일에 관한 잠금을 이미 획득한 경우, 다른 클라이언트는 그 데이터/파일에 관한 잠금을 획득할 때까지 대기할 수 있다. 클라이언트가 특정 데이터/파일에 대한 액세스를 종료한 경우, 그 특정 데이터/파일을 관리하는 서버 또는 장치는 그 특정 데이터/파일에 관한 잠금을 해제할 수 있다. 파일 잠금에 관한 정보는 잠금의 획득, 설정, 대기, 및 해제에 관한 정보를 포함할 수 있다.
몇몇 경우, 특정 서버 또는 장치가 파일 잠금에 관한 정보를 집중적으로 관리할 수 있다. 예로서, 메타데이터 서버(110)가 파일 잠금에 관한 정보를 관리하도록 설계될 수 있다. 그러나, 이러한 경우, 메타데이터 서버(110)의 동작에 오버헤드(Overhead)가 증가할 수 있고, 메타데이터 서버(110)의 성능이 저하될 수 있다. 게다가, 메타데이터 서버(110)의 동작에 장애가 발생하는 경우, 스토리지 시스템(101)이 정상적으로 동작하지 못할 수 있다.
따라서, 본 발명의 실시 예들에서, 여러 서버 또는 장치가 파일 잠금에 관한 정보를 분산하여 관리할 수 있다. 예로서, 데이터 서버(130a)는 분산 잠금 관리기(132a)를 포함할 수 있고, 데이터 서버(130n)는 분산 잠금 관리기(132n)를 포함할 수 있다. 분산 잠금 관리기(132a) 및 분산 잠금 관리기(132n) 각각은 특정 데이터/파일에 관한 잠금 정보를 관리할 수 있다. 분산 잠금 관리기(132a 또는 132n) 및 파일 잠금 정보는 도 2, 도 7, 및 도 8을 참조하여 설명될 것이다.
나아가, 예로서, 클라이언트(150a)는 분산 잠금 캐시(152a)를 관리할 수 있고, 클라이언트(150p)는 분산 잠금 캐시(152p)를 관리할 수 있다. 분산 잠금 캐시(152a) 및 분산 잠금 캐시(152p)는 각각 클라이언트(150a) 및 클라이언트(150p)에 의해 액세스되거나(즉, 잠금) 액세스되기 위해 대기되는(즉, 잠금 대기) 데이터/파일들에 관한 잠금 정보를 포함할 수 있다. 분산 잠금 캐시(152a 또는 152p)는 도 6을 참조하여 설명될 것이다.
본 발명의 실시 예들에서, 파일 잠금에 관한 정보는 데이터 서버들(130a, 130n) 및 클라이언트들(150a, 150p)에서 분산하여 관리될 수 있다. 따라서, 특정 서버 또는 장치 상의 오버헤드가 증가하는 것이 방지될 수 있다. 나아가, 특정 서버 또는 장치의 동작에 장애가 발생하더라도, 데이터/파일로의 액세스가 보장될 수 있다. 결과적으로, 스토리지 시스템(101) 전체의 신뢰성 및 효율성이 향상될 수 있다.
예로서, 클라이언트(150a)는 데이터 서버(130a)에 저장된 파일로 액세스하고자 할 수 있다. 이 경우, 클라이언트(150a)는 메타데이터 서버(110)에 저장된 정보를 참조하여 분산 잠금 캐시(152a)를 생성할 수 있고, 데이터 서버(130a)로 액세스 요청을 전송할 수 있다. 데이터 서버(130a)는 분산 잠금 관리기(132a)를 이용하여, 클라이언트(150a)에 의해 요청된 파일로의 액세스가 허용될 수 있는지 여부를 판단할 수 있고, 클라이언트(150a)를 위한 잠금을 설정하거나 클라이언트(150a)가 잠금 설정을 대기하게 할 수 있다. 클라이언트들(150a, 150p) 및 데이터 서버들(130a, 130n)의 동작들은 도 9 내지 도 12를 참조하여 설명될 것이다.
도 2는 도 1의 데이터 서버들에 파일을 분산하여 저장한 것을 보여주는 개념도이다. 더 나은 이해를 돕기 위해, 도 2는 다섯 개의 데이터 서버들(130a, 130b, 130c, 130d, 130e)을 보여준다.
위에서 설명된 것과 같이, 하나의 파일은 청크 단위로 분할될 수 있고, 분할된 청크들은 데이터 서버들에 분산하여 저장될 수 있다. 예로서, 제 1 파일(F1)은 네 개의 청크들로 분할될 수 있고, 네 개의 분할된 청크들은 데이터 서버들(130a, 130b, 130c, 130d)에 분산하여 저장될 수 있다. 제 2 파일(F2)과 같이, 몇몇 파일은 청크 단위의 크기(Size)보다 작은 크기를 가질 수 있다. 청크 단위의 크기는 스토리지 정책에 따라 다양하게 변경 또는 수정될 수 있다. 예로서, 제 2 파일(F2)은 하나의 청크로서 데이터 서버(130e)에 저장될 수 있다.
예로서, 제 3 파일(F3)은 다섯 개의 청크들로 분할될 수 있고, 다섯 개의 분할된 청크들은 데이터 서버들(130a, 130b, 130c, 130d, 130e)에 저장될 수 있다. 따라서, 데이터 서버들(130a, 130b, 130c, 130d, 130e) 각각의 용량에 한계가 있는 반면 제 3 파일(F3)이 상당히 큰 크기를 갖더라도, 제 3 파일(F3)이 데이터 서버들(130a, 130b, 130c, 130d, 130e)에 분산하여 저장될 수 있다.
예로서, 제 4 파일(F4)은 두 개의 청크들로 분할될 수 있고, 두 개의 분할된 청크들은 데이터 서버들(130a, 130b)에 저장될 수 있다. 예로서, 제 5 파일(F5)은 세 개의 청크들로 분할될 수 있고, 세 개의 분할된 청크들은 데이터 서버들(130c, 130d, 130e)에 저장될 수 있다.
위 예들에 따르면, 데이터 서버(130a)의 데이터(CDa)는 제 1 파일(F1)의 일부, 제 3 파일(F3)의 일부, 및 제 4 파일(F4)의 일부를 포함할 수 있다. 유사하게, 데이터 서버(130e)의 데이터(CDe)는 제 2 파일(F2)의 일부, 제 3 파일(F3)의 일부, 및 제 5 파일(F5)의 일부를 포함할 수 있다. 데이터 서버(130b)의 데이터(CDb), 데이터 서버(130c)의 데이터(CDc), 및 데이터 서버(130d)의 데이터(CDd)에 관한 상세한 설명들은 생략될 것이다.
예로서, 분산 잠금 관리기(132a)는 제 4 파일(F4)에 관한 파일 잠금 정보를 관리할 수 있다. 이 파일 잠금 정보는 제 4 파일(F4)에 관한 잠금의 설정, 대기, 및 해제에 관한 정보를 포함할 수 있다. 제 4 파일(F4)에 관한 파일 잠금 정보는 클라이언트로부터 제공되는 제 4 파일(F4)로의 액세스 요청을 처리하기 위해 참조될 수 있다. 파일 잠금 정보는 도 7 및 도 8을 참조하여 설명될 것이다.
유사하게, 분산 잠금 관리기(132b)는 제 1 파일(F1)에 관한 파일 잠금 정보를 관리할 수 있고, 분산 잠금 관리기(132c)는 제 3 파일(F3)에 관한 파일 잠금 정보를 관리할 수 있다. 나아가, 분산 잠금 관리기(132d)는 제 5 파일(F5)에 관한 파일 잠금 정보를 관리할 수 있고, 분산 잠금 관리기(132e)는 제 2 파일(F2)에 관한 파일 잠금 정보를 관리할 수 있다. 이러한 방식으로, 제 1 내지 제 5 파일들(F1 내지 F5)에 관한 파일 잠금 정보는 데이터 서버들(130a, 130b, 130c, 130d, 130e)에서 분산하여 관리될 수 있다.
도 2에서, 모든 분산 잠금 관리기들(132a, 132b, 132c, 132d, 132e)이 파일 잠금 정보를 관리하는 것으로 도시되었다. 그러나, 몇몇 경우, 몇몇 분산 잠금 관리기들은 파일 잠금 정보를 관리하지 않을 수 있고, 유휴 상태(Idle State)에 있을 수 있다. 몇몇 데이터 서버는 분산 잠금 관리기를 포함하지 않을 수 있다. 나아가, 도 2에 나타낸 분산 잠금 관리기와 파일 사이의 대응은 이해를 돕기 위한 예시일 뿐이다. 분산 잠금 관리기와 파일 사이의 대응은 다양하게 변경 또는 수정될 수 있다.
몇몇 실시 예에서, 도 1의 메타데이터 서버(110)의 제어에 따라, 분산 잠금 관리기와 파일 사이의 대응이 데이터 서버의 상태에 의존하여 변경될 수 있다. 예로서, 데이터 서버(130b)의 작업 부하(Workload)가 다른 데이터 서버들(130a, 130c, 130d, 130e)에 비해 과도하게 높은 경우, 분산 잠금 관리기(132c)가 제 1 파일(F1) 및 제 3 파일(F3) 모두의 파일 잠금 정보를 관리할 수 있다. 이를 위해, 도 1의 데이터 서버 관리기(112)에 의해 수집되는 정보가 참조될 수 있다. 몇몇 실시 예에서, 도 1의 메타데이터 서버(110)의 제어에 따라, 분산 잠금 관리기와 파일 사이의 대응이 동적으로 또는 실시간으로 변경될 수 있다.
도 3은 도 1의 데이터 서버들에 파일 및 그 파일의 복제된 사본(Duplicated Copy)을 저장한 것을 보여주는 개념도이다. 더 나은 이해를 돕기 위해, 도 3은 여덟 개의 데이터 서버들(130a, 130b, 130c, 130d, 130h, 130i, 130j, 130k)을 보여준다.
위에서 설명된 것과 같이, 예로서, 제 1 파일(F1)은 네 개의 청크들로 분할될 수 있고, 네 개의 분할된 청크들은 데이터 서버들(130a, 130b, 130c, 130d)에 분산하여 저장될 수 있다.
예로서, 원본인(Original) 제 1 파일(F1)만이 저장된 동안 데이터 서버들(130a, 130b, 130c, 130d)의 동작들에 장애가 발생하는 경우, 제 1 파일(F1)로의 액세스는 정상적으로 처리되지 못할 수 있다. 게다가, 도 2의 분산 잠금 관리기(132b)를 포함하는 데이터 서버(130b)의 동작에 장애가 발생하는 경우, 제 1 파일(F1)에 관한 파일 잠금 정보가 정상적으로 이용되지 못할 수 있다. 이러한 경우, 도 1의 스토리지 시스템(101)의 신뢰성이 저하될 수 있다.
따라서, 몇몇 실시 예에서, 제 1 파일(F1)의 복제된 사본(F1')이 더 저장될 수 있다. 예로서, 복제된 사본(F1')은 데이터 서버들(130h, 130i, 130j, 130k)에 분산하여 저장될 수 있다. 이러한 경우, 데이터 서버들(130a, 130b, 130c, 130d)의 동작들에 장애가 발생하더라도, 제 1 파일(F1)로의 액세스는 복제된 사본(F1')을 이용하여 처리될 수 있다. 나아가, 데이터 서버(130i)의 분산 잠금 관리기가 파일 잠금 정보를 관리할 수 있다.
위에서 설명된 것과 같이, 도 1의 데이터 서버 관리기(112)는 데이터 서버들의 상태에 관한 정보를 수집할 수 있다. 데이터 서버들(130a, 130b, 130c, 130d)의 동작들에 장애가 발생한 것이 검출된 경우, 도 1의 메타데이터 서버(110)의 제어에 따라, 분산 잠금 관리기와 파일 사이의 대응이 변경될 수 있다. 따라서, 스토리지 시스템(101)의 신뢰성이 향상될 수 있다.
도 3에서, 한 개의 복제된 사본(F1')이 제공되는 것으로 도시되었다. 그러나, 복제된 사본들의 개수는 스토리지 정책에 따라 다양하게 변경 또는 수정될 수 있다.
도 4는 도 1의 메타데이터 서버에서 관리되는 데이터 서버 정보 및 파일 레이아웃 정보의 예시적인 구조(Structure)를 보여주는 개념도이다.
도 1의 메타데이터 서버(110)는 데이터 서버 관리기(112)에 의해, 데이터 서버들의 상태에 관한 정보를 수집하고 관리할 수 있다. 데이터 서버 정보(DSI)는 도 1의 스토리지 시스템(101)에 포함되는 데이터 서버들 각각의 상태에 관한 정보를 포함할 수 있다.
예로서, 데이터 서버 정보(DSI)는 스토리지 상태 정보를 포함할 수 있다. 예로서, 스토리지 상태 정보는 데이터 서버에 포함되는 스토리지들의 개수, 스토리지들 각각의 사용량, 및 스토리지들 각각의 수명에 관한 정보를 포함할 수 있다.
예로서, 데이터 서버 정보(DSI)는 시스템 상태 정보를 포함할 수 있다. 예로서, 시스템 상태 정보는 데이터 서버에 포함되는 프로세서의 부하, 데이터 서버에 포함되는 메모리들의 사용량, 데이터 서버에 의해 수행되는 통신의 부하, 및 데이터 서버에 포함되는 스토리지들의 부하에 관한 정보를 포함할 수 있다.
데이터 서버 정보(DSI)는 데이터 서버들(예컨대, 도 1의 데이터 서버들(130a, 130n))로부터 메타데이터 서버(110)로 전송될 수 있다. 예로서, 데이터 서버 정보(DSI)는 주기적으로 또는 메타데이터 서버(110)의 요청에 응답하여 전송될 수 있다. 데이터 서버 정보(DSI)는 특정 파일에 관한 파일 잠금 정보를 관리할 분산 잠금 관리기를 선택하기 위해 참조될 수 있다.
메타데이터 서버(110)는 데이터 서버들(예컨대, 데이터 서버들(130a, 130n))에 저장된 파일들에 관한 정보를 관리하고 저장할 수 있다. 파일 레이아웃 정보(FLI)는 데이터 서버들에 저장된 파일들 각각에 관한 정보를 포함할 수 있다.
예로서, 파일 레이아웃 정보(FLI)는 메타데이터를 포함할 수 있다. 메타데이터는 파일의 크기, 생성 날짜, 생성 시간 등과 같은 파일 자체에 관한 정보를 포함할 수 있다. 나아가, 파일 레이아웃 정보(FLI)는 파일을 분할함으로써 생성된 청크들에 관한 정보를 포함할 수 있다. 예로서, 파일 레이아웃 정보(FLI)는 분할된 청크들의 개수 및 각 분할된 청크의 크기에 관한 정보를 포함할 수 있다.
파일 레이아웃 정보(FLI)는 청크 레이아웃 정보(CLI)를 포함할 수 있다. 청크 레이아웃 정보(CLI)는 분할된 청크들 각각에 관한 정보를 포함할 수 있다. 예로서, 청크 레이아웃 정보(CLI)는 청크를 저장하는 데이터 서버, 그 데이터 서버에서 그 청크를 저장하는 스토리지의 식별자, 그 청크의 버전(즉, 그 청크가 원본인지 또는 복제된 사본인지 여부, 및 복수의 복제된 사본이 있는 경우 그 복제된 사본의 식별자), 및 그 청크를 관리하는 분산 잠금 관리기에 관한 정보를 포함할 수 있다.
예로서, 클라이언트가 특정 파일로 액세스하고자 하는 경우, 그 클라이언트는 청크 레이아웃 정보(CLI)로부터 분산 잠금 관리기의 정보를 인지할 수 있다. 나아가, 그 클라이언트는 인지된 분산 잠금 관리기를 포함하는 데이터 서버로 액세스 요청을 전송할 수 있다.
도 5는 도 1의 클라이언트로부터 도 1의 데이터 서버들에 저장된 파일로의 액세스 요청을 보여주는 개념도이다. 더 나은 이해를 돕기 위해, 도 5는 클라이언트(150a)가 제 1 파일(F1)로 액세스하고자 하는 경우를 보여준다.
클라이언트(150a)는 제 1 파일(F1)을 볼륨 단위로 액세스할 수 있다. 클라이언트(150a)는 하나의 볼륨에 포함되는 파일의 메타데이터 및 데이터로 액세스할 수 있다. 볼륨 단위의 크기는 스토리지 정책에 따라 다양하게 변경 또는 수정될 수 있다.
예로서, 제 1 파일(F1)은 t개의 볼륨들(V1 내지 Vt)을 포함할 수 있다. 더 나은 이해를 돕기 위해, 볼륨들(V1 내지 V3)에 관한 잠금은 설정되지 않은(즉, 볼륨들(V1 내지 V3)로의 액세스 권한은 어떤 클라이언트에 의해서도 획득되지 않은) 것으로 가정될 것이다. 나아가, 볼륨들(V4 내지 Vt)은 다른 클라이언트(예컨대, 도 1의 클라이언트(150p))에 의해 잠긴 것으로 가정될 것이다.
클라이언트(150a)의 액세스 요청은 세 가지의 유형들 중 하나에 대응할 수 있다. 먼저, (a)의 유형을 참조하면, 클라이언트(150a)는 볼륨들(V4 내지 Vt)로의 액세스를 요청할 수 있다. 즉, (a)의 유형에서, 클라이언트(150a)는 다른 클라이언트에 의해 잠긴 볼륨들로의 액세스를 요청할 수 있다.
반면, (b)의 유형을 참조하면, 클라이언트(150a)는 볼륨들(V1 내지 V3)로의 액세스를 요청할 수 있다. 즉, (b)의 유형에서, 클라이언트(150a)는 다른 클라이언트에 의해 잠기지 않은 볼륨들로의 액세스를 요청할 수 있다. 한편, (c)의 유형을 참조하면, 클라이언트(150a)는 볼륨들(V2 내지 V4)로의 액세스를 요청할 수 있다. 몇몇 경우, 클라이언트(150a)는 다른 클라이언트에 의해 잠긴 볼륨과 함께, 다른 클라이언트에 의해 잠기지 않은 볼륨으로 액세스하고자 할 수 있다.
본 발명의 실시 예들에서, (a), (b), 및 (c)의 유형들 각각에 대해서, 잠금의 획득, 설정, 대기, 및 해제는 상이하게 처리될 수 있다. 잠금의 획득, 설정, 대기, 및 해제는 도 9 내지 도 12를 참조하여 설명될 것이다.
도 6은 도 1의 클라이언트에서 관리되는 분산 잠금 캐시의 예시적인 구조를 보여주는 개념도이다.
위에서 설명된 것과 같이, 예로서, 도 1의 클라이언트(150a)는 분산 잠금 캐시(152a)를 관리할 수 있다. 예로서, 분산 잠금 캐시(152a)는 클라이언트(150a)에 의해 액세스되거나(즉, 잠금) 액세스되기 위해 대기되는(즉, 잠금 대기) 파일에 관한 잠금 정보를 포함할 수 있다. 클라이언트(150a)가 잠금을 획득한 동안 또는 클라이언트(150a)가 잠금의 획득을 대기하는 동안, 분산 잠금 캐시(152a)가 클라이언트(150a)에 포함되는 메모리 장치에 저장(예컨대, 캐시)될 수 있다.
분산 잠금 캐시(152a)는 클라이언트(150a)에 의해 액세스되거나 액세스되기 위해 대기되는 파일들 각각을 위해 제공될 수 있다. 예로서, 분산 잠금 캐시(152a)는 제 1 파일(F1)을 위한 파일 잠금 정보(152a1), 및 제 q 파일(Fq)을 위한 파일 잠금 정보(152a2)를 포함할 수 있다.
예로서, 파일 잠금 정보(152a1)는 제 1 파일(F1)의 파일 정보 및 청크 레이아웃 정보를 포함할 수 있다. 예로서, 파일 잠금 정보(152a1)는 제 1 파일(F1)에 관한 잠금 설정 리스트 및 잠금 대기 리스트를 포함할 수 있다. 잠금 설정 리스트는 제 1 파일(F1)에 대해 이미 잠금을 획득한 클라이언트(들)에 관한 정보를 포함할 수 있고, 잠금 대기 리스트는 제 1 파일(F1)에 대해 잠금을 대기하고 있는 클라이언트(들)에 관한 정보를 포함할 수 있다.
예로서, 잠금 설정 리스트(152a11)는 제 1 파일(F1)에 대해 잠금을 획득한 클라이언트의 프로세스, 잠금 버전, 및 분산 잠금 관리기에 관한 정보를 포함할 수 있다. 여기서, 잠금 버전은 클라이언트와 데이터 서버 사이에서 파일 잠금 정보의 일관성을 관리하기 위해 참조되는 값일 수 있다. 예로서, 잠금 버전은 잠금이 획득/설정되는 때의 타임 스탬스(Time Stamp)를 포함하거나, 잠금이 획득/설정될 때마다 1씩 증가하는 값을 가질 수 있다.
예로서, 잠금 설정 리스트(152a11)는 잠금 설정 모드 및 잠금 설정 범위에 관한 정보를 포함할 수 있다. 예로서, 잠금 설정 모드는 공유 모드 및 배타 모드를 포함할 수 있다. 제 1 파일(F1)에 대한 잠금이 공유 모드로 설정된 경우, 클라이언트(150a) 외의 다른 클라이언트 역시 제 1 파일(F1)로 액세스할 수 있다. 반면, 제 1 파일(F1)에 대한 잠금이 배타 모드로 설정된 경우, 클라이언트(150a) 외의 다른 클라이언트는 제 1 파일(F1)로 액세스하지 못할 수 있다. 잠금 설정 범위는 도 5를 참조하여 설명되었다.
예로서, 잠금 설정 리스트(152a11)의 잠금 설정 모드가 배타 모드를 나타내는 경우, 파일 잠금 정보(152a1)의 잠금 설정 리스트는 잠금 설정 리스트(152a11)만을 포함할 수 있다. 반면, 잠금 설정 리스트(152a11)의 잠금 설정 모드가 공유 모드를 나타내는 경우, 파일 잠금 정보(152a1)의 잠금 설정 리스트는 잠금 설정 리스트(152a12)를 더 포함할 수 있다. 잠금 설정 리스트(152a11)에 대응하는 클라이언트는 잠금 설정 리스트(152a12)에 대응하는 클라이언트와 상이할 수 있다. 또는, 하나의 클라이언트가 잠금 설정 리스트(152a11) 및 잠금 설정 리스트(152a12) 모두에 대응하면서, 잠금 설정 리스트(152a11)에 대응하는 프로세스가 잠금 설정 리스트(152a12)에 대응하는 프로세스와 상이할 수 있다.
예로서, 잠금 대기 리스트(152a12)는 제 1 파일(F1)에 대해 잠금을 대기하고 있는 클라이언트의 프로세스, 및 분산 잠금 관리기에 관한 정보를 포함할 수 있다. 예로서, 잠금 대기 리스트(152a12)는 잠금 대기 모드 및 잠금 대기 범위에 관한 정보를 포함할 수 있다. 잠금 대기 모드는 잠금 설정 모드와 유사하게 이해될 수 있고, 잠금 대기 범위는 잠금 설정 범위와 유사하게 이해될 수 있다.
도 7은 도 1의 데이터 서버에 포함되는 분산 잠금 관리기의 예시적인 구성(Configuration)을 보여주는 개념도이다.
위에서 설명된 것과 같이, 예로서, 데이터 서버(130a)는 분산 잠금 관리기(132a)를 포함할 수 있다. 분산 잠금 관리기(132a)는 파일 잠금 정보를 관리하기 위해 제공될 수 있다. 분산 잠금 관리기(132a)는 뒤에서 설명될 동작들을 수행하기 위한 소프트웨어 구성(예컨대, 프로그램 코드), 및 파일 잠금 정보를 저장하기 위한 하드웨어 구성(예컨대, 메모리/스토리지 장치)을 포함할 수 있다.
분산 잠금 관리기(132a)는 클라이언트로부터 액세스 요청을 수신할 수 있다. 분산 잠금 관리기(132a)의 인덱스 산출기(133a)는 액세스 요청에 포함되는 파일 정보를 추출할 수 있다. 이 추출된 파일 정보는 클라이언트에 의해 액세스될 파일을 고유하게 식별하기 위해 이용되는 정보를 포함할 수 있다. 예로서, 추출된 파일 정보는 파일의 생성 날짜 및 생성 시각을 포함할 수 있다.
인덱스 산출기(133a)는 추출된 파일 정보에 기초하여 파일 인덱스를 산출할 수 있다. 파일 인덱스는 분산 잠금 관리기(132a)에 의해 관리되는 여러 파일 중에서 클라이언트에 의해 요청된 파일을 탐색하고 선택하기 위해 참조될 수 있다. 예로서, 인덱스 산출기(133a)는 추출된 파일 정보에 대해 해시 함수를 적용함으로써 산출된 해시 값을 파일 인덱스로서 이용할 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다.
파일 잠금 정보 리스트(134a)는 하나 이상의 파일 잠금 정보를 포함할 수 있다. 예로서, 파일 잠금 정보 리스트(134a)는 제 1 파일에 대응하는 파일 잠금 정보(134a1), 제 2 파일에 대응하는 파일 잠금 정보(134a2), 및 제 q 파일에 대응하는 파일 잠금 정보(134aq)를 포함할 수 있다. 분산 잠금 관리기(132a)는 인덱스 산출기(133a)에 의해 산출된 파일 인덱스를 이용하여, 제 1 파일, 제 2 파일, 및 제 q 파일 중에서 클라이언트에 의해 요청된 파일을 선택할 수 있다.
파일 잠금 정보(134a1, 134a2, 또는 134aq)는 특정 클라이언트에 의해 각 파일이 잠긴 경우 또는 특정 클라이언트가 각 파일의 잠금을 대기하는 경우에 생성될 수 있다. 특정 파일에 대응하는 파일 잠금 정보가 없는 경우, 그 특정 파일은 잠기지 않았을 수 있다. 파일 잠금 정보(134a1, 134a2, 또는 134aq)의 구조는 도 8을 참조하여 설명될 것이다.
도 8은 도 7의 분산 잠금 관리기에서 관리되는 파일 잠금 정보의 예시적인 구조를 보여주는 개념도이다. 예로서, 파일 잠금 정보(134a1)의 구조가 설명될 것이다.
예로서, 파일 잠금 정보(134a1)는 파일 정보, 잠금 설정 리스트, 및 잠금 대기 리스트를 포함할 수 있다. 파일 정보는 잠긴 파일의 정보를 포함할 수 있다. 잠금 설정 리스트는 해당 파일에 관한 잠금을 획득한 클라이언트들/프로세스들의 리스트를 포함할 수 있고, 잠금 대기 리스트는 해당 파일에 관한 잠금의 획득을 대기하고 있는 클라이언트들/프로세서들의 리스트를 포함할 수 있다.
예로서, 잠금 설정 리스트(134a11)는 클라이언트 정보 및 잠금 버전의 정보를 포함할 수 있다. 클라이언트 정보는 해당 파일에 관한 잠금을 획득한 클라이언트/프로세스의 정보를 포함할 수 있다. 잠금 버전은, 위에서 설명된 것과 같이, 클라이언트와 데이터 서버 사이에서 파일 잠금 정보의 일관성을 관리하기 위해 참조되는 값일 수 있다.
예로서, 잠금 설정 리스트(134a11)는 잠금 설정 모드 및 잠금 설정 범위를 포함할 수 있다. 잠금 설정 모드 및 잠금 설정 범위는 위에서 설명된 것과 유사하게 이해될 수 있다.
예로서, 잠금 설정 리스트(134a11)는 추가의 잠금 설정 리스트(134a12)를 포함할 수 있다. 예로서, 잠금 설정 리스트(134a11)에 의해 지시되는 잠금 설정 범위는 잠금 설정 리스트(134a12)에 의해 지시되는 잠금 설정 범위와 상이할 수 있다. 몇몇 경우, 하나의 파일에 관하여 상이한 잠금 설정 범위들을 갖는 파일 잠금들이 호환될 수 있다(즉, 공유 모드로 설정될 수 있다). 이러한 경우, 둘 이상의 잠금 설정 리스트들(134a11, 134a12)이 생성될 수 있다.
예로서, 잠금 설정 리스트(134a11) 및 잠금 설정 리스트(134a12)는 각각 잠금 대기 리스트(134a14) 및 잠금 대기 리스트(134a13)를 포함할 수 있다. 특정 클라이언트가 잠금 설정 리스트(134a11)에 의해 지시되는 잠금 설정 범위와 호환되지 않는 액세스를 요청한 경우, 잠금 대기 리스트(134a14)가 생성될 수 있다. 특정 클라이언트가 잠금 설정 리스트(134a12)에 의해 지시되는 잠금 설정 범위와 호환되지 않는 액세스를 요청한 경우, 잠금 대기 리스트(134a13)가 생성될 수 있다. 예로서, 특정 클라이언트가 잠금 설정 리스트(134a12)에서 배타 모드로 설정된 잠금 설정 범위로의 액세스를 요청한 경우, 잠금 대기 리스트(134a13)가 생성될 수 있다.
예로서, 잠금 대기 리스트(134a14)는 클라이언트 정보 및 잠금 버전의 정보를 포함할 수 있다. 클라이언트 정보는 잠금의 획득을 대기하고 있는 클라이언트의 정보를 포함할 수 있다.
예로서, 잠금 대기 리스트(134a14)는 잠금 대기 모드 및 잠금 대기 범위에 관한 정보를 포함할 수 있다. 잠금 대기 모드는 잠금 설정 모드와 유사하게 이해될 수 있고, 잠금 대기 범위는 잠금 설정 범위와 유사하게 이해될 수 있다. 잠금 대기 범위는 잠금 설정 리스트(134a11)의 잠금 설정 범위와 호환되지 않는 범위를 포함할 수 있다.
파일 잠금 정보(134a1)의 잠금 대기 리스트는 잠금 대기 리스트(134a15)를 포함할 수 있다. 특정 클라이언트가 잠금 설정 리스트들(134a11, 134a12)에 의해 지시되는 잠금 설정 범위들과 호환되지 않는 액세스를 요청한 경우, 잠금 대기 리스트(134a15)가 생성될 수 있다. 잠금 대기 리스트(134a15)의 잠금 대기 범위는 잠금 설정 리스트들(134a11, 134a12)의 잠금 설정 범위들과 호환되지 않는 범위를 포함할 수 있다.
도 9는 도 1의 클라이언트에서 분산 잠금 캐시를 생성하고 파일 잠금을 요청/획득하는 과정을 설명하는 흐름도이다. 더 나은 이해를 돕기 위해, 도 1 및 도 2가 도 9와 함께 참조될 것이다. 예로서, 클라이언트(150a)가 데이터 서버(130b)의 분산 잠금 관리기(132b)에 의해 관리되는 제 1 파일(F1)로 액세스하고자 하는 경우가 설명될 것이다.
S110 동작에서, 클라이언트(150a)는 메타데이터 서버(110)로부터 제 1 파일(F1)에 관한 파일 정보 및 청크 레이아웃 정보를 수신할 수 있다. 메타데이터 서버(110)로부터 수신되는 정보는 도 4를 참조하여 설명되었다. 클라이언트(150a)는 메타데이터 서버(110)로부터 수신되는 정보를 참조하여, 제 1 파일(F1)의 파일 잠금 정보가 데이터 서버(130b)에 의해 관리됨을 인지할 수 있다.
S112 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금 요청 모드 및 잠금 요청 범위를 선택할 수 있다. 예로서, 잠금 요청 모드는 제 1 파일(F1)에 대해 공유 모드의 잠금을 요청할 것인지 또는 배타 모드의 잠금을 요청할 것인지 여부를 나타낼 수 있다. 예로서, 잠금 요청 범위는, 도 5를 참조하여 설명된 것과 같이, 클라이언트(150a)가 제 1 파일(F1)에서 액세스하고자 하는 볼륨 범위를 나타낼 수 있다.
예로서, 클라이언트(150a)는 제 1 파일(F1)에 관하여 잠금 요청 모드 및 잠금 요청 범위를 선택하기 위해 제공되는 잠금 인터페이스를 포함할 수 있다. 클라이언트(150a)의 사용자는 잠금 인터페이스를 이용하여 잠금 요청 모드 및 잠금 요청 범위를 선택할 수 있다.
S114 동작에서, 클라이언트(150a)는 데이터 서버(130b)로 액세스 요청을 전송할 수 있다. 액세스 요청은 분산 잠금 관리기(132b)에 의해 수신될 수 있다. 액세스 요청은 분산 잠금 관리기(132b)에 의해 관리되는 파일들 중에서 제 1 파일(F1)을 고유하게 식별하기 위해 필요한 파일 정보를 포함할 수 있다. 예로서, 파일 정보는 제 1 파일(F1)의 생성 날짜 및 생성 시각의 정보를 포함할 수 있다.
S116 동작에서, 클라이언트(150a)는 분산 잠금 관리기(132b)로부터 제 1 파일(F1)에 대응하는 파일 잠금 정보를 수신할 수 있다. 분산 잠금 관리기(132b)는 S114 동작에서 전송된 액세스 요청에 기초하여 제 1 파일(F1)에 대응하는 파일 잠금 정보를 선택할 수 있고, 선택된 파일 잠금 정보를 클라이언트(150a)로 제공할 수 있다.
나아가, S116 동작에서, 클라이언트(150a)는 수신된 파일 잠금 정보에 기초하여 분산 잠금 캐시(152a)를 생성할 수 있다. 분산 잠금 캐시(152a)는 클라이언트(150a)에 의해 액세스될 제 1 파일(F1)에 관한 잠금 정보를 포함할 수 있다. 분산 잠금 캐시(152a)의 구조는 도 6을 참조하여 설명되었다.
클라이언트(150a)는 S116 동작에서 생성된 분산 잠금 캐시(152a)에 기초하여 잠금 캐시 범위를 인지할 수 있다. 잠금 캐시 범위는 분산 잠금 관리기(132b)로부터 제공된 제 1 파일(F1)의 파일 잠금 정보에 의해 지시되는 제 1 파일(F1)의 잠금 설정 범위에 대응할 수 있다. 즉, 클라이언트(150a)는 분산 잠금 캐시(152a)에 기초하여, 제 1 파일(F1)에 관한 잠금이 설정되어 있는지 여부 및 제 1 파일(F1)의 어느 범위가 잠기었는지 여부를 인지할 수 있다.
도 9에는 나타내지 않았으나, 몇몇 경우, 분산 잠금 캐시(152a)는 제 1 파일(F1)에 관한 잠금이 설정되지 않았음을 나타낼 수 있다. 이러한 경우, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금을 획득할 수 있다. 이러한 경우는 도 10a의 S222 동작에서 설명될 것이다. 이하, S120 내지 S190 동작들은 제 1 파일(F1)에 관한 잠금이 설정된 경우에 수행될 수 있다.
S120 동작에서, 클라이언트(150a)는 잠금 요청 범위가 잠금 캐시 범위와 동일한지 여부를 판단할 수 있다. 잠금 요청 범위가 잠금 캐시 범위와 동일한 경우, 잠금 요청 범위에 대응하는 잠금이 이미 설정되었을 수 있다(도 5에서의 (a)의 경우 참고). 이 경우, S130 동작에서, 클라이언트(150a)는 클라이언트(150a)가 이미 설정된 잠금을 획득하였는지 여부를 판별할 수 있다. 예로서, 클라이언트(150a)의 다른 프로세스가 이미 잠금을 획득하였을 수 있다.
클라이언트(150a)가 이미 잠금을 획득한 경우, S140 동작에서, 클라이언트(150a)는 이미 획득된 잠금의 잠금 설정 모드가 잠금 요청 모드와 호환되는지 여부를 판단할 수 있다. 예로서, 두 모드들 모두가 공유 모드인 경우, 두 모드들이 호환될 수 있다.
두 모드들이 호환되는 경우, S142 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금의 획득이 성공될 수 있음을 인지할 수 있다. 따라서, S190 동작에서, 클라이언트(150a)는 제 1 파일(F1)로 액세스할 수 있다.
반면, S140 동작에서, 이미 획득된 잠금의 잠금 설정 모드가 잠금 요청 모드와 호환되지 않는 것으로 판단된 경우, S144 동작에서, 클라이언트(150a)는 잠금 설정 모드를 변경할 것을 분산 잠금 관리기(132b)로 요청할 수 있다. 예로서, 이미 획득된 잠금의 잠금 설정 모드가 배타 모드이고 잠금 요청 모드가 공유 모드인 경우, 클라이언트(150a)는 이미 획득된 잠금의 잠금 설정 모드를 공유 모드로 변경할 것을 분산 잠금 관리기(132b)로 요청할 수 있다.
한편, S130 동작에서, 클라이언트(150a)가 이미 설정된 잠금을 획득하지 않은 것으로 판별될 수 있다. 예로서, 클라이언트(150a) 외의 다른 클라이언트가 이미 설정된 잠금을 획득하였을 수 있다. 이 경우, S150 동작에서, 클라이언트(150a)는 이미 설정된 잠금의 잠금 설정 모드가 잠금 요청 모드와 호환되는지 여부를 판단할 수 있다. 두 모드들이 호환되는 경우, S152 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금의 획득이 성공될 수 있음을 인지할 수 있다. 따라서, S190 동작에서, 클라이언트(150a)는 제 1 파일(F1)로 액세스할 수 있다.
반면, S150 동작에서, 이미 설정된 잠금의 잠금 설정 모드가 잠금 요청 모드와 호환되지 않는 것으로 판단된 경우, S154 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금을 설정할 것을 분산 잠금 관리기(132b)로 요청할 수 있다.
몇몇 경우, S120 동작에서, 잠금 요청 범위가 잠금 캐시 범위와 상이한 것으로 판단될 수 있다(도 5에서의 (b) 또는 (c)의 경우 참고). 이 경우, S160 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금을 설정할 것을 분산 잠금 관리기(132b)로 요청할 수 있다.
S144, S154, 및 S160 동작들에서 클라이언트(150a)가 분산 잠금 관리기(132b)로 특정 요청을 전송한 후, 클라이언트(150a)는 특정 시간 동안 분산 잠금 관리기(132b)로부터 응답을 기다릴 수 있다. S170 동작에서, 클라이언트(150a)는 잠금 성공을 나타내는 응답이 수신되었는지 여부를 판단할 수 있다. 잠금 성공 응답이 수신된 경우, S172 동작에서, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금의 획득이 성공하였음을 인지할 수 있다. 따라서, S190 동작에서, 클라이언트(150a)는 제 1 파일(F1)로 액세스할 수 있다.
반면, 잠금 성공 응답이 수신되지 않은 경우, S174 동작에서, 클라이언트(150a)는 잠금의 획득을 대기할 수 있다. S180 동작에서, 클라이언트(150a)는 잠금 해제를 나타내는 응답이 분산 잠금 관리기(132b)로부터 수신되었는지 여부를 판단할 수 있다. 잠금 해제 응답은 클라이언트(150a) 또는 다른 클라이언트에 의해 이미 설정되었던 잠금이 해제되었음을 나타낼 수 있다. 잠금의 해제는 특정 파일로의 액세스 권한을 갖는 클라이언트가 없음을 의미할 수 있다.
잠금 해제 응답이 수신되지 않은 경우, 클라이언트(150a)는 S174 동작에서 잠금의 획득을 계속 대기할 수 있다. 반면, 잠금 해제 응답이 수신된 경우, 클라이언트(150a)는 S160 동작에서 제 1 파일(F1)에 관한 잠금을 설정할 것(또는, 잠금 설정 모드를 변경할 것)을 분산 잠금 관기리(132b)로 다시 요청할 수 있다.
도 10a 및 도 10b는 도 1의 데이터 서버에서 파일 잠금 정보를 관리하고 파일 잠금을 설정하는 과정을 설명하는 흐름도들이다. 도 10a 및 도 10b는 A, B, C, 및 D 마디들을 통해 서로 연결되는 하나의 과정을 설명한다. 더 나은 이해를 돕기 위해, 도 1 및 도 2가 도 10a 및 도 10b와 함께 참조될 것이다. 예로서, 클라이언트(150a)가 데이터 서버(130b)의 분산 잠금 관리기(132b)에 의해 관리되는 제 1 파일(F1)로 액세스하고자 하는 경우가 설명될 것이다.
S210 동작에서, 데이터 서버(130b)는 클라이언트(150a)로부터 액세스 요청을 수신할 수 있다(도 9의 S114 동작 참고). 액세스 요청은 분산 잠금 관리기(132b)에 의해 수신될 수 있다. 액세스 요청은 분산 잠금 관리기(132b)에 의해 관리되는 파일들 중에서 제 1 파일(F1)을 고유하게 식별하기 위해 필요한 파일 정보를 포함할 수 있다.
S212 동작에서, 분산 잠금 관리기(132b)의 인덱스 산출기는 S210 동작에서 수신된 액세스 요청에 기초하여 파일 인덱스를 산출할 수 있다. 파일 인덱스는 클라이언트(150a)에 의해 요청된 제 1 파일(F1)에 관한 잠금 정보를 탐색하고 선택하기 위해 참조될 수 있다.
S220 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 의해 요청된 제 1 파일(F1)에 대응하는 파일 잠금 정보가 있는지 여부를 판단할 수 있다. 분산 잠금 관리기(132b)는 S212 동작에서 산출된 파일 인덱스에 기초하여, 제 1 파일(F1)에 대응하는 파일 잠금 정보를 탐색할 수 있다.
몇몇 경우, 제 1 파일(F1)에 대응하는 파일 잠금 정보가 없을 수 있다. 이는 제 1 파일(F1)에 관한 잠금이 설정되지 않았음을 의미할 수 있다. 이러한 경우, 클라이언트(150a)는 제 1 파일(F1)에 관한 잠금을 획득할 수 있다. 따라서, S222 동작에서, 분산 잠금 관리기(132b)는 제 1 파일(F1)에 대응하는 파일 잠금 정보를 생성할 수 있고, 클라이언트(150a)에 관한 정보를 잠금 설정 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 성공 응답을 전송할 수 있다.
반면, 몇몇 경우, 분산 잠금 관리기(132b)의 파일 잠금 정보 리스트가 제 1 파일(F1)에 대응하는 파일 잠금 정보를 저장할 수 있다. 이는 제 1 파일(F1)에 관한 잠금이 이미 설정되었음을 의미할 수 있다. 이 경우, S230 동작에서, 분산 잠금 관리기(132b)는 제 1 파일(F1)에 대응하는 파일 잠금 정보의 일부 또는 전부를 클라이언트(150a)로 전송할 수 있다. 클라이언트(150a)는 수신된 파일 잠금 정보에 기초하여 분산 잠금 캐시(152a)를 생성할 수 있고, 잠금이 획득될 수 있는지 여부를 판단할 수 있다(도 9의 S116 내지 S160 동작들 참고).
이후, S232 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)로부터 잠금 설정 요청 또는 잠금 모드 변경 요청을 수신할 수 있다. 이 잠금 설정 요청 또는 잠금 모드 변경 요청은 클라이언트(150a)가 제 1 파일(F1)에서 액세스하고자 하는 잠금 요청 범위의 정보를 포함할 수 있다. 나아가, 이 잠금 설정 요청 또는 잠금 모드 변경 요청은 잠금 요청 모드의 정보를 포함할 수 있다.
위에서 설명된 것과 같이, 분산 잠금 관리기(132b)는 파일 잠금 정보를 관리할 수 있다. 따라서, 분산 잠금 관리기(132b)는 특정 파일이 잠기었는지 여부 및 그 특정 파일에서 어느 범위가 잠기었는지 여부를 인지할 수 있다. 특정 파일에서 잠기지 않은 범위는 클라이언트에 의해 잠기는 것이 허용될 수 있다. 분산 잠금 관리기(132b)는 잠기지 않은 범위를 잠금 허용 범위로서 이해할 수 있다.
S240 동작에서, 분산 잠금 관리기(132b)는 S232 동작에서 수신된 요청에 응답하여, 잠금 요청 범위와 잠금 허용 범위를 비교할 수 있다. 비교 결과에 응답하여, 분산 잠금 관리기(132b)는 잠금 요청 범위가 잠금 허용 범위와 동일(도 5에서의 (b)의 경우 참고)하거나, 일부 중첩(도 5에서의 (c)의 경우 참고)되거나, 상이(도 5에서의 (a)의 경우 참고)한 것으로 판단할 수 있다.
잠금 요청 범위가 잠금 허용 범위와 동일한 경우, S250 동작에서, 분산 잠금 관리기(132b)는 이미 설정된 잠금의 잠금 설정 모드가 클라이언트(150a)의 잠금 요청 모드와 호환되는지 여부를 판단할 수 있다. 두 모드들이 호환되는 경우, S252 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 설정 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 성공 응답을 전송할 수 있다. 반면, 두 모드들이 호환되지 않는 경우, S254 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 대기 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 대기 응답을 전송할 수 있다.
잠금 요청 범위가 잠금 허용 범위와 일부 중첩되는 경우, S260 동작에서, 분산 잠금 관리기(132b)는 이미 설정된 잠금의 잠금 설정 모드가 위 중첩되는 범위 외의 범위에서 클라이언트(150a)의 잠금 요청 모드와 호환되는지 여부를 판단할 수 있다. 두 모드들이 호환되는 경우, S262 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 설정 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 성공 응답을 전송할 수 있다. 반면, 두 모드들이 호환되지 않는 경우, S264 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 대기 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 대기 응답을 전송할 수 있다.
잠금 요청 범위가 잠금 허용 범위와 상이한 경우, S270 동작에서, 분산 잠금 관리기(132b)는 잠금 요청 범위와 중첩되는 잠금 대기 범위를 갖는 잠금 대기 리스트가 있는지 여부를 판단할 수 있다. 잠금 대기 리스트가 있는 경우, S274 동작에서, 분산 잠금 관리기(132b)는 잠금 대기 리스트에 대응하는 잠금 대기 모드가 위 중첩되는 범위에서 클라이언트(150a)의 잠금 요청 모드와 호환되는지 여부를 판단할 수 있다.
잠금 대기 리스트가 없거나 두 모드들이 호환되는 경우, S272 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 대기 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 대기 응답을 전송할 수 있다. 반면, 두 모드들이 호환되지 않는 경우, S276 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 관한 정보를 잠금 대기 리스트의 하위의 2차 잠금 대기 리스트에 추가할 수 있고, 클라이언트(150a)에게 잠금 대기 응답을 전송할 수 있다.
도 11은 도 1의 클라이언트에서 파일 잠금 해제를 요청하고 분산 잠금 캐시를 해제하는 과정을 설명하는 흐름도이다. 더 나은 이해를 돕기 위해, 도 1 및 도 2가 도 11과 함께 참조될 것이다. 예로서, 클라이언트(150a)가 데이터 서버(130b)의 분산 잠금 관리기(132b)에 의해 관리되는 제 1 파일(F1)에 관한 잠금을 해제하고자 하는 경우가 설명될 것이다.
S310 동작에서, 클라이언트(150a)는 분산 잠금 관리기(132b)로 잠금 해제 요청을 전송할 수 있다. 제 1 파일(F1)로의 액세스가 완료된 경우, 클라이언트(150a)는 다른 클라이언트의 제 1 파일(F1)에 관한 잠금을 가능하게 하기 위해 클라이언트(150a)의 제 1 파일(F1)에 관한 잠금을 해제하고자 할 수 있다. 이를 위해, 클라이언트(150a)는 분산 잠금 관리기(132b)로 잠금 해제를 요청할 수 있다.
S320 동작에서, 클라이언트(150a)는 분산 잠금 관리기(132b)로부터 잠금 해제를 나타내는 잠금 해제 성공 응답을 수신할 수 있다. 클라이언트(150a)는 잠금 해제 성공 응답에 응답하여 제 1 파일(F1)에 관한 잠금이 해제되었음을 인지할 수 있다. 따라서, S330 동작에서, 클라이언트(150a)는 제 1 파일(F1)을 위한 분산 잠금 캐시(152a)를 해제할 수 있다.
도 12는 도 1의 데이터 서버에서 파일 잠금을 해제하는 과정을 설명하는 흐름도이다. 더 나은 이해를 돕기 위해, 도 1 및 도 2가 도 12와 함께 참조될 것이다. 예로서, 클라이언트(150a)가 데이터 서버(130b)의 분산 잠금 관리기(132b)에 의해 관리되는 제 1 파일(F1)에 관한 잠금을 해제하고자 하는 경우가 설명될 것이다.
S410 동작에서, 데이터 서버(130b)는 클라이언트(150a)로부터 잠금 해제 요청을 수신할 수 있다(도 11의 S310 동작 참고). 잠금 해제 요청은 분산 잠금 관리기(132b)에 의해 수신될 수 있다. 잠금 해제 요청은 분산 잠금 관리기(132b)에 의해 관리되는 파일들 중에서 제 1 파일(F1)을 고유하게 식별하기 위해 필요한 파일 정보를 포함할 수 있다.
S420 동작에서, 분산 잠금 관리기(132b)의 인덱스 산출기는 S410 동작에서 수신된 잠금 해제 요청에 기초하여 파일 인덱스를 산출할 수 있다. 파일 인덱스는 클라이언트(150a)에 의해 잠긴 제 1 파일(F1)에 관한 잠금 정보를 탐색하고 선택하기 위해 참조될 수 있다. 분산 잠금 관리기(132b)는 파일 인덱스를 이용하여 제 1 파일(F1)에 대응하는 파일 잠금 정보를 선택할 수 있다.
S430 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)에 의해 획득된 제 1 파일(F1)의 잠금을 해제할 수 있다. 예로서, 분산 잠금 관리기(132b)는 잠금 설정 리스트로부터 클라이언트(150a)에 관한 정보 및 제 1 파일(F1)의 잠금에 관한 정보를 삭제할 수 있다. 나아가, S440 동작에서, 분산 잠금 관리기(132b)는 클라이언트(150a)로 잠금 해제 성공 응답을 전송할 수 있다(도 11의 S320 동작 참고).
몇몇 경우, 특정 클라이언트가 제 1 파일(F1)에 관한 잠금을 대기하고 있을 수 있다. 대기하고 있는 클라이언트가 있을 경우, 분산 잠금 관리기(132b)의 파일 잠금 정보 리스트는 대기하고 있는 클라이언트에 대응하는 잠금 대기 리스트를 저장할 수 있다. 잠금 대기 리스트가 있는 경우, 분산 잠금 관리기(132b)는 대기하고 있는 클라이언트로 잠금 해제 응답을 전송할 수 있다(도 9의 S180 동작 참고).
대기하고 있는 클라이언트는 잠금 해제 응답에 응답하여 제 1 파일(F1)에 관한 잠금을 분산 잠금 관리기(132b)로 요청할 수 있다. 예로서, 잠금 대기 리스트가 여러 레벨의 계층을 포함하는 경우, 잠금 해제 응답은 최상위의 잠금 대기 리스트에 대응하는 클라이언트로 전송될 수 있다.
위에서 설명된 것과 같이, 분산 잠금 관리기와 파일 사이의 대응은 메타데이터 서버(110)의 데이터 서버 관리기(112)의 제어에 따라 데이터 서버들의 상태들에 기초하여 변경될 수 있다. 제 1 파일(F1)을 관리하는 분산 잠금 관리기가 변경된 경우, 분산 잠금 관리기(132b)는 변경된 분산 잠금 관리기로 잠금 해제 응답을 전송할 수 있다. 따라서, 변경된 분산 잠금 관리기는 클라이언트(150a)의 제 1 파일(F1)에 관한 잠금이 해제되었음을 인지할 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100 : 네트워크 시스템
101 : 스토리지 시스템 105 : 네트워크
110 : 메타데이터 서버 112 : 데이터 서버 관리기
130a, 130b, 130c, 130d, 130e : 데이터 서버
130h, 130i, 130j, 130k, 130n : 데이터 서버
132a, 132b, 132c, 132d, 132e, 132n : 분산 잠금 관리기
133a : 인덱스 산출기 134a : 파일 잠금 정보 리스트
134a1, 134a2, 134aq : 파일 잠금 정보
134a11, 134a12 : 잠금 설정 리스트
134a13, 134a14, 134a15 : 잠금 대기 리스트
150a, 150p : 클라이언트 152a, 152p : 분산 잠금 캐시
152a1, 152a2 : 파일 잠금 정보
152a11, 152a12 : 잠금 설정 리스트
152a13 : 잠금 대기 리스트

Claims (1)

  1. 파일을 분산하여 저장하도록 구성되는 복수의 데이터 서버 장치; 및
    상기 파일의 분산에 관한 정보를 저장하도록 구성되는 메타데이터 서버 장치를 포함하되,
    상기 복수의 데이터 서버 장치 중 적어도 하나는 클라이언트 장치로부터 제공되는 상기 파일로의 액세스 요청을 처리하기 위해 파일 잠금 정보를 관리하도록 구성되는 분산 잠금 관리기를 포함하고,
    상기 분산 잠금 관리기를 포함하는 데이터 서버 장치는:
    상기 클라이언트 장치로부터 상기 액세스 요청을 수신하고,
    상기 클라이언트 장치에서 분산 잠금 캐시가 생성되도록, 상기 액세스 요청에 대응하는 상기 파일 잠금 정보의 일부 또는 전부를 상기 클라이언트 장치로 전송하고,
    상기 메타데이터 서버 장치에 저장된 상기 정보를 참조하여 상기 클라이언트 장치에 의해 요청된 잠금 범위와, 상기 분산 잠금 캐시에 캐시된 잠금 범위 사이의 관계에 기초하여, 상기 클라이언트 장치로부터 잠금 설정 요청을 수신하고,
    상기 잠금 설정 요청에 응답하여, 상기 요청된 잠금 범위와 상기 파일 잠금 정보에 의해 허용되는 잠금 범위 사이의 관계에 기초하여, 잠금 성공 응답 또는 잠금 대기 응답을 상기 클라이언트 장치로 전송하도록 더 구성되는 스토리지 시스템.
KR1020160011120A 2016-01-29 2016-01-29 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 KR102016417B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160011120A KR102016417B1 (ko) 2016-01-29 2016-01-29 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160011120A KR102016417B1 (ko) 2016-01-29 2016-01-29 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치

Publications (2)

Publication Number Publication Date
KR20170090594A true KR20170090594A (ko) 2017-08-08
KR102016417B1 KR102016417B1 (ko) 2019-09-02

Family

ID=59652888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160011120A KR102016417B1 (ko) 2016-01-29 2016-01-29 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치

Country Status (1)

Country Link
KR (1) KR102016417B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442558A (zh) * 2019-07-30 2019-11-12 深信服科技股份有限公司 数据处理方法、分片服务器、存储介质及装置
CN110968563A (zh) * 2018-09-29 2020-04-07 华为技术有限公司 一种数据存储方法、元数据服务器及客户端
CN111241134A (zh) * 2019-12-31 2020-06-05 五八有限公司 一种数据处理方法及装置
CN113485639A (zh) * 2021-06-18 2021-10-08 济南浪潮数据技术有限公司 分布式存储的io速度优化方法、系统、终端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020017077A (ko) * 2000-08-28 2002-03-07 전창오 클러스터 파일 시스템 및 시스템내의 매핑 방법
KR20030047996A (ko) * 2000-07-28 2003-06-18 자임포닉 시스템즈 아에스 내포 데이터베이스를 구현하는 방법, 시스템 및 데이터 구조
KR20040056643A (ko) * 2002-12-24 2004-07-01 한국전자통신연구원 공유 디스크 기반 다중 데이터베이스 관리시스템에서 검출및 회피 기반 일관성 유지 정책을 동시에 지원하는 버퍼장착방법
KR20090065131A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 메타데이터의 일관성을 보장하기 위한 분산 파일 시스템 및방법
KR20120058553A (ko) * 2009-09-18 2012-06-07 지멘스 악티엔게젤샤프트 운영 수단에 대한 병렬 액세스들을 위해 일시적 배타적 잠금들을 사용하기 위한 방법 및 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030047996A (ko) * 2000-07-28 2003-06-18 자임포닉 시스템즈 아에스 내포 데이터베이스를 구현하는 방법, 시스템 및 데이터 구조
KR20020017077A (ko) * 2000-08-28 2002-03-07 전창오 클러스터 파일 시스템 및 시스템내의 매핑 방법
KR20040056643A (ko) * 2002-12-24 2004-07-01 한국전자통신연구원 공유 디스크 기반 다중 데이터베이스 관리시스템에서 검출및 회피 기반 일관성 유지 정책을 동시에 지원하는 버퍼장착방법
KR20090065131A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 메타데이터의 일관성을 보장하기 위한 분산 파일 시스템 및방법
KR20120058553A (ko) * 2009-09-18 2012-06-07 지멘스 악티엔게젤샤프트 운영 수단에 대한 병렬 액세스들을 위해 일시적 배타적 잠금들을 사용하기 위한 방법 및 시스템

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968563A (zh) * 2018-09-29 2020-04-07 华为技术有限公司 一种数据存储方法、元数据服务器及客户端
EP3848814A4 (en) * 2018-09-29 2021-10-20 Huawei Technologies Co., Ltd. DATA STORAGE PROCESS, METADATA SERVER AND CLIENT
CN110968563B (zh) * 2018-09-29 2023-11-17 华为技术有限公司 一种数据存储方法、元数据服务器及客户端
CN110442558A (zh) * 2019-07-30 2019-11-12 深信服科技股份有限公司 数据处理方法、分片服务器、存储介质及装置
CN110442558B (zh) * 2019-07-30 2023-12-29 深信服科技股份有限公司 数据处理方法、分片服务器、存储介质及装置
CN111241134A (zh) * 2019-12-31 2020-06-05 五八有限公司 一种数据处理方法及装置
CN111241134B (zh) * 2019-12-31 2023-08-08 五八有限公司 一种数据处理方法及装置
CN113485639A (zh) * 2021-06-18 2021-10-08 济南浪潮数据技术有限公司 分布式存储的io速度优化方法、系统、终端及存储介质
CN113485639B (zh) * 2021-06-18 2024-02-20 济南浪潮数据技术有限公司 分布式存储的io速度优化方法、系统、终端及存储介质

Also Published As

Publication number Publication date
KR102016417B1 (ko) 2019-09-02

Similar Documents

Publication Publication Date Title
US9858013B1 (en) Scalable distributed storage system infrastructure
US10154086B1 (en) Distributed consumer cloud storage system
US9052962B2 (en) Distributed storage of data in a cloud storage system
Jiang et al. A secure and scalable storage system for aggregate data in IoT
US8171337B2 (en) Computer architectures using shared storage
US20150215405A1 (en) Methods of managing and storing distributed files based on information-centric network
Mendes et al. Charon: A secure cloud-of-clouds system for storing and sharing big data
US20170149883A1 (en) Data replication in a data storage system having a disjointed network
KR102016417B1 (ko) 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
WO2008049353A1 (fr) Système de mise en mémoire de données de réseau et procédé pour y accéder
George et al. Hadoop MapReduce for mobile clouds
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
George et al. Hadoop mapreduce for tactical clouds
CN111198784A (zh) 一种数据存储的方法及装置
CN109739615A (zh) 一种虚拟硬盘的映射方法、设备和云计算平台
KR102172328B1 (ko) 블록체인 기반 콘텐츠 관리 장치 및 방법
Chakravarthy et al. Secure resilient high performance file system for distributed systems
Kawato et al. Attempt to Utilize Surplus Storage Capacity as Distributed Storage
Quezada-Naquid et al. Babel: The construction of a massive storage system
Akintoye et al. A Survey on Storage Techniques in Cloud Computing
Hussin et al. Towards healthcare system integrity using fault-tolerant-based scheduling in edge data center
Kumar et al. An Intelligent Data Retrieving Technique and Safety Measures for Sustainable Cloud Computing
KR101620219B1 (ko) P2p 기반 중복제거를 이용한 가상머신 이미지 배포, 다운로드하는 방법 및 그 장치
Puripanyanan et al. A CONTROL SYSTEM FOR HYBRID MULTI-USER DATA REPLICATION AND ACCESS IN INFORMATION TECHNOLOGY FOR CLOUD DATA SECURITY

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