KR102162466B1 - 분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법 - Google Patents

분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법 Download PDF

Info

Publication number
KR102162466B1
KR102162466B1 KR1020170001564A KR20170001564A KR102162466B1 KR 102162466 B1 KR102162466 B1 KR 102162466B1 KR 1020170001564 A KR1020170001564 A KR 1020170001564A KR 20170001564 A KR20170001564 A KR 20170001564A KR 102162466 B1 KR102162466 B1 KR 102162466B1
Authority
KR
South Korea
Prior art keywords
directory
rename
metadata
request
server device
Prior art date
Application number
KR1020170001564A
Other languages
English (en)
Other versions
KR20180039542A (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 US15/586,083 priority Critical patent/US10810165B2/en
Publication of KR20180039542A publication Critical patent/KR20180039542A/ko
Application granted granted Critical
Publication of KR102162466B1 publication Critical patent/KR102162466B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (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

분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법 {DISTRIBUTED STORAGE SERVER, SERVER DEVICE INCLUDED THEREIN, AND METHOD OF OPERATING SERVER DEVICE}
본 발명은 분산 컴퓨팅 시스템에 관한 것으로, 좀 더 구체적으로는 분산 스토리지 서버에서 연산을 수행하는 스킴(Scheme)에 관한 것이다.
근래 정보/데이터의 양이 급격하게 증가함에 따라, 단일의 스토리지 서버는 많은 양의 데이터를 저장하기에 충분하지 않게 되었다. 많은 양의 데이터를 저장하고 저장된 데이터를 효율적으로 관리하기 위해, 복수의 스토리지 서버를 이용하는 분산 스토리지 서버가 제안되었다. 분산 스토리지 서버는 분산 파일 시스템을 구동하여, 복수의 스토리지 서버에 분산하여 저장되는 데이터를 관리한다. 분산하여 저장되는 데이터를 관리하기 위해, 복수의 스토리지 서버는 네트워크를 통해 서로 연결된다.
복수의 스토리지 서버에서, 몇몇 서버는 데이터를 분산하여 저장한다. 몇몇 서버는 분산하여 저장되는 데이터와 관련되는 메타데이터를 저장한다. 메타데이터는 어떤 데이터가 저장되어 있는지 및 어떤 서버가 특정 데이터를 저장하고 있는지를 나타낸다. 몇몇 서버는 분산하여 저장되는 데이터를 위한 네임스페이스(Namespace)의 정보를 저장한다. 분산 파일 시스템은 데이터, 메타데이터, 및 네임스페이스 정보를 디렉토리(Directory) 단위로 체계화하여, 분산 스토리지 서버에 저장되는 데이터를 관리한다.
분산 스토리지 서버는 클라이언트로부터의 요청에 응답하여, 데이터를 저장/인출/수정/삭제한다. 분산 스토리지 서버는 클라이언트로부터의 요청을 처리하기 위해, 분산 파일 시스템을 구동하여, 분산하여 저장되는 데이터에 대해 다양한 연산을 수행한다. 예로서, 분산 스토리지 서버는 디렉토리 및/또는 파일의 이름, 위치, 구조 등과 같은 속성을 수정하기 위해 리네임 연산(Rename Operation)을 수행한다.
리네임 연산처럼 복수의 파라미터를 수반하는 복잡한 연산은 동시에 여러 디렉토리 및/또는 파일로의 액세스를 요구한다. 그러나, 연산이 수행될 파일 및/또는 디렉토리가 상이한 서버들에 분산되어 있을 수 있다. 따라서, 리네임 연산과 같은 복잡한 연산을 처리하기 위해, 여러 서버와 통신을 수행하는 것이 필요할 수 있다.
본 발명의 실시 예들은 분산 스토리지 서버에서 연산을 수행하는 스킴을 제공할 수 있다. 본 발명의 실시 예들은 여러 서버와 통신을 수행하면서 리네임 연산을 처리할 때 발생할 수 있는 서버들 사이의 충돌(예컨대, 교착상태(Deadlock), 네임스페이스 불일치(Inconsistency) 등)을 방지하기 위한 스킴을 제공할 수 있다.
몇몇 실시 예는 복수의 데이터 서버 장치 및 복수의 메타데이터 서버 장치를 포함하는 분산 스토리지 서버를 제공할 수 있다. 복수의 데이터 서버 장치는 데이터를 분산하여 저장할 수 있다. 복수의 메타데이터 서버 장치는 분산하여 저장되는 데이터와 관련되는 메타데이터를 분산하여 저장할 수 있다. 복수의 메타데이터 서버 장치 중에서 선택된 메타데이터 서버 장치는, 클라이언트 장치로부터 수신되는 리네임 연산의 요청에 포함되는 소스(Source)의 부모 디렉토리(Parent Directory)의 완전 경로(Full Path) 및 타겟(Target)의 부모 디렉토리의 완전 경로에 관한 정보에 기초하여, 리네임 연산의 수행에 의해 현수 디렉토리(Dangling Directory)가 발생하는지 여부를 검사할 수 있다. 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 선택된 메타데이터 서버 장치는 리네임 연산이 수행되도록, 분산하여 저장되는 메타데이터로 지시되는(Directed) 트랜잭션(Transaction)들을 처리할 수 있다. 현수 디렉토리가 발생하는지 여부의 검사는 트랜잭션들을 처리하기 위한 트랜잭션 구간 이전에 수행될 수 있다.
몇몇 실시 예에서, 선택된 메타데이터 서버 장치는 리네임 연산의 요청을 배타적으로 처리할 수 있고, 선택된 메타데이터 서버 장치 외의 나머지 메타데이터 서버 장치들은 리네임 연산의 요청을 처리하지 않도록 구성될 수 있다.
몇몇 실시 예에서, 선택된 메타데이터 서버 장치는 분산하여 저장되는 데이터를 위한 네임스페이스의 루트 디렉토리(Root Directory)와 관련되는 메타데이터를 저장하는 메타데이터 서버 장치일 수 있다.
몇몇 실시 예에서, 복수의 메타데이터 서버 장치는 소스와 관련되는 제 1 메타데이터 서버 장치 및 타겟과 관련되는 제 2 메타데이터 서버 장치를 포함할 수 있다. 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 선택된 메타데이터 서버 장치는 클라이언트 장치를 위해, 트랜잭션들의 처리의 결과로서 제 1 및 제 2 메타데이터 서버 장치들로 지시되는 응답을 출력할 수 있다. 제 1 및 제 2 메타데이터 서버 장치들은, 리네임 연산이 수행되도록, 선택된 메타데이터 서버 장치의 응답에 기초하여 클라이언트 장치에 의해 액세스될 수 있다.
몇몇 실시 예에서, 현수 디렉토리가 발생하는 것으로 판별되는 경우, 선택된 메타데이터 서버 장치는 클라이언트 장치를 위해 리네임 연산의 거부(Rejection)를 나타내는 응답을 출력할 수 있다.
몇몇 실시 예는 스토리지, 연산 관리기, 및 트랜잭션 처리기를 포함하는 서버 장치를 제공할 수 있다. 스토리지는 분산 스토리지 서버에 분산하여 저장되는 데이터와 관련되는 메타데이터를 저장할 수 있다. 연산 관리기는 리네임 연산의 요청에 응답하여, 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사할 수 있다. 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 트랜잭션 처리기는 리네임 연산이 수행되도록, 적어도 메타데이터로 지시되는 트랜잭션들을 처리할 수 있다. 현수 디렉토리가 발생하는지 여부의 검사는 트랜잭션들을 처리하기 위한 트랜잭션 구간 이전에 수행될 수 있다.
몇몇 실시 예에서, 리네임 연산의 요청은 리네임 연산의 소스의 부모 디렉토리의 제 1 완전 경로 및 타겟의 부모 디렉토리의 제 2 완전 경로에 관한 정보를 포함할 수 있다.
몇몇 실시 예에서, 제 1 완전 경로는 루트 디렉토리부터 소스의 부모 디렉토리까지의 완전 경로를 포함할 수 있고, 제 2 완전 경로는 루트 디렉토리부터 타겟의 부모 디렉토리까지의 완전 경로를 포함할 수 있다. 연산 관리기는, 현수 디렉토리가 발생하는지 여부를 검사하기 위해, 제 2 완전 경로가 제 1 완전 경로를 포함하는지 여부를 검사할 수 있다.
몇몇 실시 예에서, 연산 관리기는, 제 2 완전 경로가 제 1 완전 경로를 포함하는지 여부를 검사하기 위해, 제 2 완전 경로에 포함되는 부분 경로(Partial Path)가 제 1 완전 경로와 동일한지 여부를 검사할 수 있다. 여기서, 부분 경로는 루트 디렉토리부터 기준 디렉토리까지의 디렉토리 경로에 대응할 수 있고, 기준 디렉토리는 루트 디렉토리부터 타겟의 부모 디렉토리까지 한 레벨의 디렉토리씩 하향(Downward)하여 변경될 수 있다.
몇몇 실시 예에서, 제 2 완전 경로는 제 1 디렉토리, 및 제 1 디렉토리의 자식인 제 2 디렉토리를 포함할 수 있다. 연산 관리기는, 현수 디렉토리가 발생하는지 여부를 검사하는 동안, 제 1 디렉토리의 하위 레벨에 제 2 디렉토리가 실제로 존재하는지 여부를 검사할 수 있다.
몇몇 실시 예에서, 연산 관리기는, 제 1 디렉토리의 하위 레벨에 제 2 디렉토리가 실제로 존재하는지 여부를 검사하기 위해, 제 1 및 제 2 디렉토리들과 관련되는 메타데이터를 저장하는 다른 서버 장치와 통신할 수 있다.
몇몇 실시 예에서, 연산 관리기는 리네임 연산의 요청에 응답하여, 리네임 배타적 잠금(Rename-exclusive Lock)을 설정할 수 있다. 나아가, 연산 관리기는 트랜잭션들의 처리의 완료에 응답하여, 리네임 배타적 잠금을 해제할 수 있다.
몇몇 실시 예에서, 연산 관리기는 리네임 배타적 잠금의 설정에 응답하여, 리네임 연산 외의 다른 리네임 연산들의 처리를 보류할 수 있다.
몇몇 실시 예는 서버 장치를 동작시키는 방법을 제공할 수 있다. 이 방법은 서버 장치의 통신 장치를 통해 리네임 연산의 제 1 요청을 수신하는 단계, 서버 장치의 프로세서에 의해 제 1 요청에 응답하여 리네임 배타적 잠금을 설정하는 단계, 리네임 배타적 잠금을 설정한 후 프로세서에 의해 제 1 요청에 포함되는 정보에 기초하여 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사하는 단계, 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우 프로세서에 의해 리네임 연산의 소스 및 타겟과 관련되는 제 1 잠금들을 획득하는 단계, 및 제 1 잠금들을 획득한 후 프로세서에 의해 소스 및 타겟에 대해 리네임 연산이 수행되도록 서버 장치에 저장된 메타데이터로 지시되는 트랜잭션들을 처리하는 단계를 포함할 수 있다.
몇몇 실시 예에서, 서버 장치를 동작시키는 방법은, 통신 장치를 통해 리네임 연산과 상이한 유형의 연산의 제 2 요청을 수신하는 단계, 및 프로세서에 의해 상이한 유형의 연산과 관련되는 제 2 잠금들을 획득하는 단계를 더 포함할 수 있다.
몇몇 실시 예에서, 제 1 및 제 2 잠금들을 획득하는 단계에서, 부모 레벨의 디렉토리에 대한 잠금이 자식 레벨의 디렉토리에 대한 잠금을 획득하기 전에 획득될 수 있다.
몇몇 실시 예에서, 제 1 및 제 2 잠금들을 획득하는 단계에서, 제 1 디렉토리에 대한 잠금이 제 1 디렉토리보다 늦게 생성된 제 2 디렉토리에 대한 잠금을 획득하기 전에 획득될 수 있다.
몇몇 실시 예에서, 서버 장치를 동작시키는 방법은, 통신 장치를 통해 리네임 연산의 제 3 요청을 수신하는 단계, 프로세서에 의해 트랜잭션들의 처리의 완료에 응답하여 리네임 배타적 잠금을 해제하는 단계, 및 리네임 배타적 잠금을 해제한 후 프로세서에 의해 제 3 요청과 관련되는 동작을 수행하는 단계를 더 포함할 수 있다.
몇몇 실시 예에서, 서버 장치를 동작시키는 방법은, 프로세서에 의해 트랜잭션들의 처리의 완료에 응답하여 리네임 배타적 잠금을 해제하는 단계, 및 통신 장치를 통해 트랜잭션들의 처리의 결과를 출력하는 단계를 더 포함할 수 있다.
본 발명의 실시 예들은 여러 서버와 통신을 수행하면서 리네임 연산을 처리할 때 발생할 수 있는 서버들 사이의 충돌을 방지할 수 있다. 따라서, 트랜잭션의 처리가 차단되거나(Blocked) 미처리되는(Pending) 경우를 방지하는 것이 가능할 수 있고, 네임스페이스 일관성(Consistency)을 유지하는 것도 가능할 수 있다. 결과적으로, 분산 컴퓨팅 시스템, 분산 스토리지 서버, 및 서버 장치의 안정성 및 신뢰성이 향상될 수 있다.
도 1은 몇몇 실시 예에 따른 분산 스토리지 서버를 포함하는 분산 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 분산 스토리지 서버에서 관리되는 예시적인 네임스페이스를 보여주는 개념도이다.
도 3은 도 1의 분산 스토리지 서버에 분산하여 저장되는 예시적인 메타데이터를 보여주는 개념도이다.
도 4 및 도 5는 분산 스토리지 서버에서 발생할 수 있는 교착상태를 설명하기 위한 개념도들이다.
도 6 및 도 7은 분산 스토리지 서버에서 발생할 수 있는 현수 디렉토리를 설명하기 위한 개념도들이다.
도 8은 도 1의 분산 스토리지 서버에서 리네임 연산을 수행하는 예시적인 스킴을 설명하기 위한 개념도이다.
도 9는 도 8의 선택된 메타데이터 서버 장치의 예시적인 구성을 보여주는 블록도이다.
도 10은 도 8의 선택된 메타데이터 서버 장치를 동작시키는 예시적인 방법을 설명하는 흐름도이다.
도 11 내지 도 14는 도 8의 선택된 메타데이터 서버 장치에서 현수 디렉토리가 발생하는 것을 방지하는 예시적인 방법을 설명하기 위한 개념도들이다.
도 15는 도 8의 선택된 메타데이터 서버 장치에서 연산 파라미터에 대한 잠금을 획득하는 예시적인 방법을 설명하기 위한 개념도이다.
위에서 언급된 특성들 및 아래의 상세한 설명들은 본 발명의 설명 및 더 나은 이해를 가능하게 하기 위한 예시적인 실시 예들을 보여준다. 본 발명은 이러한 실시 예들에 한정되지 않고, 다른 관점으로 구현될 수 있다. 아래의 실시 예들은 단지 본 발명을 완전히 개시하기 위한 예시들일 뿐이고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들에게 본 발명을 전달하기 위한 설명일 뿐이다. 따라서, 본 발명을 구현하기 위한 여러 방법이 있는 경우, 이 방법들 중 특정한 것 또는 이와 동등한 것 중 어떠한 것으로든 본 발명을 구현하는 것이 가능할 것이다.
아래의 설명들에서 어떤 구성 요소가 특정 요소(들)를 포함한다고 언급되는 경우 또는 어떤 과정이 특정 동작(들)을 포함한다고 언급되는 경우, 다른 요소(들) 또는 다른 동작(들)이 그것에 더 포함될 수 있다. 아래의 설명들에서 사용되는 용어들은 특정 실시 예를 보여주기 위해 제공될 뿐이고, 본 발명을 한정하도록 의도되지는 않는다. 더 나은 이해를 가능하게 하기 위해 설명되는 예시들은 그것의 상보적인 실시 예도 포함할 수 있다.
아래의 설명들에서 이용되는 용어들은 통상의 기술자들에 의해 통상적으로 이해되는 의미를 가질 수 있다. 통상적으로 이용되는 용어들은 설명들의 맥락에 따라 일관적으로 해석되어야 한다. 나아가, 아래의 설명들에서 이용되는 용어들은, 그것의 의미가 명확히 정의되지 않은 한, 지나치게 이상적이거나 형식적인 의미를 갖는 것으로 해석되지 않아야 한다. 이하, 첨부된 도면들을 참조하여 몇몇 실시 예가 설명될 것이다.
도 1은 몇몇 실시 예에 따른 분산 스토리지 서버(Distributed Storage Server)를 포함하는 분산 컴퓨팅 시스템(Distributed Computing System)을 보여주는 블록도이다. 몇몇 실시 예에서, 분산 컴퓨팅 시스템(1000)은 분산 스토리지 서버(1100), 클라이언트 장치들(1300, 1305), 및 네트워크(1500)를 포함할 수 있다. 몇몇 실시 예에서, 분산 스토리지 서버(1100)는 복수의 데이터 서버 장치(1110, 1115), 복수의 메타데이터 서버 장치(1130, 1131, 1135), 및 네트워크(1150)를 포함할 수 있다.
분산 스토리지 서버(1100)는 많은 양의 데이터를 저장하고 저장된 데이터를 효율적으로 관리하기 위해 데이터 서버 장치들(1110, 1115)을 채용할 수 있다. 데이터 서버 장치들(1110, 1115)은 클라이언트 장치들(1300, 1305)을 위해 데이터를 분산하여 저장할 수 있다. 따라서, 분산 스토리지 서버(1100)는 클라이언트 장치들(1300, 1305)을 위해 스토리지 서비스를 제공할 수 있다.
데이터를 분산하여 저장하는 것은 다양하게 구현될 수 있다. 예로서, 데이터는 복수의 부분으로 분할될 수 있고, 분할된 부분들이 데이터 서버 장치들(1110, 1115)의 전부 또는 일부에 분산하여 저장될 수 있다. 다른 예로서, 복수의 사본(Copy)이 데이터와 동일하게 생성될 수 있고, 생성된 사본들이 데이터 서버 장치들(1110, 1115)의 전부 또는 일부에 분산하여 저장될 수 있다. 다만, 이 예시들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다.
메타데이터 서버 장치들(1130, 1131, 1135)은 메타데이터를 분산하여 저장할 수 있다. 메타데이터는 분산하여 저장되는 데이터와 관련되는 정보를 포함할 수 있다. 예로서, 메타데이터는 어떤 데이터가 특정 데이터 서버 장치에 저장되어 있는지, 어떤 데이터가 다른 데이터와 관련되는지 등을 나타낼 수 있다.
분산 스토리지 서버(1100)는 분산 파일 시스템(Distributed File System)을 구동하여, 분산하여 저장되는 데이터를 관리할 수 있다. 분산 파일 시스템은 데이터, 메타데이터, 및 네임스페이스(Namespace)의 정보를 디렉토리(Directory) 단위로 체계화하여, 분산하여 저장되는 데이터를 관리할 수 있다. 분산하여 저장되는 데이터를 관리하기 위해, 데이터 서버 장치들(1110, 1115) 및 메타데이터 서버 장치들(1130, 1131, 1135)은 네트워크(1150)를 통해 서로 통신할 수 있다.
분산 스토리지 서버(1100)는 클라이언트 장치들(1300, 1305) 각각으로부터 요청을 수신할 수 있다. 분산 스토리지 서버(1100)는 요청에 응답하여 데이터를 저장/인출/수정/삭제할 수 있다. 분산 스토리지 서버(1100)는 요청에 응답하여 데이터를 처리하기 위해, 분산 파일 시스템을 구동하여, 분산하여 저장되는 데이터에 대해 다양한 연산을 수행할 수 있다. 클라이언트 장치들(1300, 1305) 각각은 네트워크(1150)를 통해 분산 스토리지 서버(1100)와 통신할 수 있다.
예로서, 클라이언트 장치(1300)는 분산 스토리지 서버(1100)에 저장된 데이터를 읽고자 할 수 있다. 클라이언트 장치(1300)는 네트워크(1500)를 통해 데이터를 읽기 위한 요청을 분산 스토리지 서버(1100)로 제공할 수 있다. 분산 스토리지 서버(1100)는 메타데이터 서버 장치들(1130, 1131, 1135)에 저장된 메타데이터를 참조하여, 어떤 데이터 서버 장치가 읽기 요청된 데이터를 저장하고 있는지 판별할 수 있다. 분산 스토리지 서버(1100)는 판별된 데이터 서버 장치로부터 데이터를 읽을 수 있다. 분산 스토리지 서버(1100)는 네트워크(1500)를 통해 클라이언트 장치(1300)로 읽힌 데이터를 제공할 수 있다.
도 1에 나타낸 것과 같이, 네트워크(1150)는 네트워크(1500)와 별개로 제공될 수 있다. 그러나, 몇몇 실시 예에서, 네트워크(1150)는 네트워크(1500)와 통신 채널을 공유할 수 있다. 예로서, 네트워크(1150) 및 네트워크(1500) 각각은 TCP/IP(Transmission Control Protocol/Internet Protocol)을 채용하는 유선 네트워크, 및/또는 LTE(Long Term Evolution), CDMA(Code Division Multiple Access), Wi-Fi(Wireless Fidelity) 등을 채용하는 무선 네트워크를 포함할 수 있으나, 본 발명은 여기에 한정되지 않는다.
분산 스토리지 서버(1100)에 포함되는 데이터 서버 장치들의 개수 및 메타데이터 서버 장치들의 개수는 다양하게 변경 또는 수정될 수 있다. 나아가, 분산 컴퓨팅 시스템(1000)의 토폴로지(Topology)는 도 1에 나타낸 것과 상이하게 변경 또는 수정될 수 있다. 예로서, 분산 컴퓨팅 시스템(1000) 및 분산 스토리지 서버(1100)의 구성들은 분산 스토리지 서버(1100)의 크기, 성능, 용도 등과 같은 다양한 요인에 의존하여 변경 또는 수정될 수 있다.
몇몇 실시 예에서, 분산 스토리지 서버(1100)는 마스터 장치(1170)를 더 포함할 수 있다. 마스터 장치(1170)는 분산 스토리지 서버(1100)의 전반적인 동작들을 관리할 수 있다. 예로서, 마스터 장치(1170)는 데이터 서버 장치들(1110, 1115) 및 메타데이터 서버 장치들(1130, 1131, 1135) 사이의 통신 경로를 제어할 수 있다. 예로서, 마스터 장치(1170)는 데이터 서버 장치들(1110, 1115) 및 메타데이터 서버 장치들(1130, 1131, 1135)의 동작들을 스케줄링할 수 있다. 그러나, 몇몇 실시 예에서, 마스터 장치(1170) 없이, 메타데이터 서버 장치들(1130, 1131, 1135)이 마스터 장치(1170)의 기능들을 수행할 수 있다.
데이터 서버 장치들(1110, 1115), 메타데이터 서버 장치들(1130, 1131, 1135), 마스터 장치(1170), 및 클라이언트 장치들(1300, 1305)은 다양한 유형의 전자 장치들을 포함할 수 있다. 예로서, 데이터 서버 장치들(1110, 1115), 메타데이터 서버 장치들(1130, 1131, 1135), 마스터 장치(1170), 및 클라이언트 장치들(1300, 1305) 각각은 하나 이상의 프로세서 코어들 및 하나 이상의 메모리들을 이용하여 데이터를 처리할 수 있는 전자 장치로 구현될 수 있다.
예로서, 데이터 서버 장치들(1110, 1115), 메타데이터 서버 장치들(1130, 1131, 1135), 마스터 장치(1170), 및 클라이언트 장치들(1300, 1305) 각각은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(Wearable) 장치, 워크스테이션, 블레이드(Blade) 서버, 마이크로서버 등과 같은 전자 장치들 중 하나를 포함할 수 있다. 그러나, 위 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되는 것은 아니다.
도 2는 도 1의 분산 스토리지 서버에서 관리되는 예시적인 네임스페이스를 보여주는 개념도이다. 더 나은 이해를 가능하게 하기 위해, 도 1이 도 2와 함께 참조될 것이다.
예로서, 분산 스토리지 서버(1100)는 데이터를 디렉토리 단위로 체계화하여 데이터를 관리할 수 있다. 도 2의 예시적인 네임스페이스(NS)는 분산 스토리지 서버(1100)에 분산하여 저장되는 데이터의 체계화된 구조를 설명할 수 있다. 예로서, 분산 스토리지 서버(1100)는 디렉토리 및 파일의 구조들로 데이터를 관리할 수 있고, 네임스페이스(NS)는 디렉토리 및 파일의 구조들을 설명할 수 있다.
예로서, 네임스페이스(NS)의 최상위 레벨에 루트 디렉토리(Root Directory, R)가 있을 수 있고, 루트 디렉토리(R)의 하위 레벨에 디렉토리들(D1, D4)이 있을 수 있다. 디렉토리(D1)의 하위 레벨에 디렉토리들(D2, D3)이 있을 수 있고, 디렉토리(D4)의 하위 레벨에 디렉토리들(D5, D6)이 있을 수 있다.
위아래로 인접하는 디렉토리들 사이에서, 상위 레벨의 디렉토리는 부모 디렉토리(Parent Directory)로 불릴 수 있고, 하위 레벨의 디렉토리는 자식(Child Directory)로 불릴 수 있다. 예로서, 디렉토리(D4)는 디렉토리(D5)와 인접하기 때문에, 디렉토리(D4)는 디렉토리(D6)의 부모 디렉토리일 수 있다. 유사하게, 디렉토리(D2)는 디렉토리(D1)와 인접하기 때문에, 디렉토리(D2)는 디렉토리(D1)의 자식 디렉토리일 수 있다.
예로서, 파일들(f1, f3)이 디렉토리(D4)에 저장될 수 있다. 예로서, 파일(f2)이 디렉토리(D1)에 저장될 수 있고, 파일(f4)이 디렉토리(D2)에 저장될 수 있다.
도 2의 네임스페이스(NS)는 예시일 뿐이고, 본 발명을 한정하도록 의도되지 않는다. 분산 스토리지 서버(1100)에 분산하여 저장되는 데이터는 도 2에 나타낸 것과 상이한 구조의 네임스페이스로 관리될 수 있다. 다만, 이하에서, 더 나은 이해를 가능하게 하기 위해, 도 2의 네임스페이스(NS)의 구조에 기반하는 예시들이 설명될 것이다.
도 3은 도 1의 분산 스토리지 서버에 분산하여 저장되는 예시적인 메타데이터를 보여주는 개념도이다. 더 나은 이해를 가능하게 하기 위해, 도 1이 도 3과 함께 참조될 것이다.
예로서, 분산 스토리지 서버(1100)는 메타데이터 서버 장치들(130, 131, 132, 133, 134)을 포함할 수 있다. 메타데이터 서버 장치들(130, 131, 132, 133, 134)은 메타데이터 서버 장치들(1130, 1131, 1135)에 대응할 수 있다. 도 1을 참조하여 설명된 것과 같이, 메타데이터 서버 장치들(130, 131, 132, 133, 134)은 메타데이터를 분산하여 저장할 수 있다.
예로서, 메타데이터 서버 장치(130)는 디렉토리들(D1, D3) 및 파일(f2)과 관련되는 메타데이터를 저장할 수 있고, 메타데이터 서버 장치(131)는 디렉토리(D2) 및 파일(f2)과 관련되는 메타데이터를 저장할 수 있다. 메타데이터 서버 장치(132)는 루트 디렉토리(R) 및 디렉토리(D6)와 관련되는 메타데이터를 저장할 수 있다. 메타데이터 서버 장치(133)는 디렉토리(D4) 및 파일들(f1, f3)과 관련되는 메타데이터를 저장할 수 있고, 메타데이터 서버 장치(134)는 디렉토리(D5)와 관련되는 메타데이터를 저장할 수 있다.
도 3의 메타데이터 분산은 예시일 뿐이고, 본 발명을 한정하도록 의도되지 않는다. 메타데이터는 도 3에 나타낸 것과 상이하게 분산될 수 있다. 다만, 이하에서, 더 나은 이해를 가능하게 하기 위해, 도 3의 메타데이터 분산에 기반하는 예시들이 설명될 것이다.
분산 스토리지 서버(1100)는 클라이언트들(1300, 1305)로부터의 요청에 응답하여 데이터를 처리하기 위해 다양한 연산을 수행할 수 있다. 예로서, 분산 스토리지 서버(1100)는 디렉토리 및/또는 파일의 이름, 위치, 구조 등과 같은 속성을 수정하기 위해 리네임 연산(Rename Operation)을 수행할 수 있다. 예로서, 클라이언트(1300)는 분산 스토리지 서버(1100)에 저장되는 데이터의 디렉토리의 속성을 변경하기 위해, 분산 스토리지 서버(1100)로 리네임 연산의 요청을 제공할 수 있다.
예로서, 이 명세서에서 더 나은 이해를 가능하게 하기 위해, 리네임 연산의 요청은 "rename(P1, P2, P3, P4)"로 표기(Notation)될 수 있다. 이 표기에서, "P2"는 리네임 연산의 소스(Source)를 나타낼 수 있고, "P4"는 리네임 연산의 타겟(Target)을 나타낼 수 있다. 소스는 리네임 연산에 의해 변경될 기존 디렉토리 또는 파일을 의미할 수 있고, 타겟은 리네임 연산의 의해 변경된 후의 디렉토리 또는 파일을 의미할 수 있다. 위 표기에서, "P1"은 리네임 연산의 소스의 부모 디렉토리를 나타낼 수 있고, "P3"는 리네임 연산의 타겟의 부모 디렉토리를 나타낼 수 있다.
리네임 연산은 복수의 파라미터(P1, P2, P3, P4)를 수반하기 때문에, 동시에 여러 디렉토리 및/또는 파일로의 액세스를 요구할 수 있다. 그러나, 리네임 연산을 수행하기 위해 참조될 메타데이터가 상이한 메타데이터 서버 장치들에 분산되어 있을 수 있다. 따라서, 리네임 연산을 수행하기 위해, 여러 메타데이터 서버 장치와 통신을 수행하는 것이 요구될 수 있다.
예로서, 클라이언트(1300)는 디렉토리(D2)의 하위 레벨의 디렉토리(D3)를 디렉토리(D5)의 하위 레벨의 디렉토리(D3)로 변경할 것을 요청할 수 있다. 이 예에서, 클라이언트(1300)는 리네임 연산의 요청 "rename(D2, D3, D5, D3)"을 분산 스토리지 서버(1100)로 제공할 수 있다.
리네임 연산의 요청 "rename(D2, D3, D5, D3)"은 디렉토리(D5)를 저장하는 데이터 서버 장치에서 디렉토리(D3)를 위한 엔트리(Entry)를 생성하는 처리, 디렉토리(D3)를 위한 엔트리를 디렉토리(D5)와 연관시키는 처리, 및 디렉토리(D2)를 저장하는 데이터 서버 장치로부터 디렉토리(D3)를 위한 엔트리를 삭제하는 처리를 요구할 수 있다. 한편, 디렉토리들(D2, D3, D5)로 액세스하기 위해 참조되는 메타데이터가 메타데이터 서버 장치들(130, 131, 134)에 분산하여 저장될 수 있다. 따라서, 이러한 리네임 연산의 트랜잭션(Transaction)들을 처리하기 위해, 메타데이터 서버 장치들(130, 131, 134)과 통신을 수행하는 것이 요구될 수 있다.
디렉토리들 및/또는 파일들의 메타데이터가 여러 메타데이터 서버 장치에 분산되는 경우, 리네임 연산은 많은 메타데이터 서버 장치와의 통신을 요구할 수 있다. 리네임 연산을 로컬 트랜잭션에 의해 처리하는 것은 거의 불가능할 수 있고, 대부분의 리네임 연산은 분산 트랜잭션에 의해 처리될 수 있다.
그러나, 여러 메타데이터 서버 장치와 통신하는 것은 충돌을 야기할 수 있다. 예로서, 몇몇 트랜잭션에서 교착상태(Deadlock)가 발생할 수 있고, 트랜잭션의 처리가 차단되거나(Blocked) 미처리될(Pending) 수 있다. 예로서, 몇몇 트랜잭션은 네임스페이스 불일치(Inconsistency)를 야기할 수 있다. 이러한 충돌들은 분산 스토리지 서버(1100)의 안정성 및 신뢰성을 악화시킬 수 있다. 분산 스토리지 서버(1100)에서 발생할 수 있는 충돌이 도 4 내지 도 7을 참조하여 설명될 것이다.
도 4는 분산 스토리지 서버에서 발생할 수 있는 교착상태를 설명하기 위한 개념도이다. 클라이언트 장치들(300, 305)은 도 1의 클라이언트 장치들(1300, 1305)에 대응할 수 있다.
예로서, 클라이언트 장치(300)는 디렉토리(D1)에 저장된 파일(f2)을 디렉토리(D4)에 저장된 파일(f3)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(300)는 리네임 연산의 요청(Q1)을 도 1의 분산 스토리지 서버(1100)로 제공할 수 있다. 동시에, 클라이언트 장치(305)는 디렉토리(D4)에 저장된 파일(f1)을 디렉토리(D1)에 저장된 파일(f2)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(305)는 리네임 연산의 요청(Q2)을 분산 스토리지 서버(1100)로 제공할 수 있다.
예로서, 메타데이터 서버 장치(130)는 요청(Q1)을 처리하기 위해, 요청(Q1)의 소스 파일(f2)의 부모 디렉토리(D1)에 대한 잠금(Lock)을 획득할 수 있다. 잠금은 액세스 권한과 관련될 수 있다. 잠긴 디렉토리 또는 잠긴 파일은 액세스 권한을 갖는 개체에 의해서만 액세스될 수 있고, 권한을 갖지 않는 개체는 잠긴 디렉토리 또는 잠긴 파일로 액세스하지 못할 수 있다. 예로서, 메타데이터 서버 장치(133)는 요청(Q2)을 처리하기 위해, 요청(Q2)의 소스 파일(f1)의 부모 디렉토리(D4)에 대한 잠금을 획득할 수 있다.
한편, 메타데이터 서버 장치(130)는 요청(Q1)을 처리하기 위해, 요청(Q1)의 타겟 파일(f3)의 부모 디렉토리(D4)에 대한 잠금을 획득할 것을 시도할 수 있다. 그러나, 디렉토리(D4)에 대한 잠금은 메타데이터 서버 장치(133)에 의해 이미 획득되었기 때문에, 메타데이터 서버 장치(130)는 디렉토리(D4)에 대한 잠금이 해제될 때까지 대기할 수 있다.
게다가, 메타데이터 서버 장치(133)는 요청(Q2)을 처리하기 위해, 요청(Q2)의 타겟 파일(f2)의 부모 디렉토리(D1)에 대한 잠금을 획득할 것을 시도할 수 있다. 그러나, 디렉토리(D1)에 대한 잠금은 메타데이터 서버 장치(130)에 의해 이미 획득되었기 때문에, 메타데이터 서버 장치(133)는 디렉토리(D1)에 대한 잠금이 해제될 때까지 대기할 수 있다.
도 4의 예에서, 메타데이터 서버 장치들(130, 133) 각각이 상대방의 잠금 해제를 기다리기 때문에, 교착상태가 발생할 수 있다. 따라서, 리네임 연산의 요청들(Q1, Q2)의 처리가 블록될 수 있다. 도 4를 참조하여 설명된 것과 같이, 동시에 요청되는 리네임 연산의 여러 요청은 교착상태를 야기할 수 있다.
도 5는 분산 스토리지 서버에서 발생할 수 있는 교착상태를 설명하기 위한 개념도이다.
예로서, 클라이언트 장치(300)는 디렉토리(D1)에 저장된 파일(f2)을 디렉토리(D2)에 저장된 파일(f4)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(300)는 리네임 연산의 요청(Q3)을 도 1의 분산 스토리지 서버(1100)로 제공할 수 있다. 동시에, 클라이언트 장치(305)는 디렉토리(D2)에 저장된 파일(f4)이 디렉토리(D1)의 파일(f5)로 연결(Link)될 것을 의도할 수 있다. 이를 위해, 클라이언트 장치(305)는 하드링크 연산(Hardlink Operation)의 요청(Q4)을 분산 스토리지 서버(1100)로 제공할 수 있다.
예로서, 메타데이터 서버 장치(130)는 요청(Q3)을 처리하기 위해, 요청(Q3)의 소스 파일(f2)의 부모 디렉토리(D1)에 대한 잠금을 획득할 수 있다. 예로서, 메타데이터 서버 장치(131)는 요청(Q4)을 처리하기 위해, 요청(Q4)의 소스 파일(f4)에 대한 잠금을 획득할 수 있다.
한편, 메타데이터 서버 장치(130)는 요청(Q3)을 처리하기 위해, 요청(Q3)의 타겟 파일(f4)에 대한 잠금을 획득할 것을 시도할 수 있다. 그러나, 파일(f4)에 대한 잠금은 메타데이터 서버 장치(131)에 의해 이미 획득되었기 때문에, 메타데이터 서버 장치(130)는 파일(f4)에 대한 잠금이 해제될 때까지 대기할 수 있다.
게다가, 메타데이터 서버 장치(131)는 요청(Q4)을 처리하기 위해, 요청(Q4)의 타겟 파일(f5)의 부모 디렉토리(D1)에 대한 잠금을 획득할 것을 시도할 수 있다. 그러나, 디렉토리(D1)에 대한 잠금은 메타데이터 서버 장치(130)에 의해 이미 획득되었기 때문에, 메타데이터 서버 장치(131)는 디렉토리(D1)에 대한 잠금이 해제될 때까지 대기할 수 있다.
도 5의 예에서, 메타데이터 서버 장치들(130, 131) 각각이 상대방의 잠금 해제를 기다리기 때문에, 교착상태가 발생할 수 있다. 따라서, 리네임 연산의 요청(Q3) 및 하드링크 연산의 요청(Q4)의 처리가 블록될 수 있다. 도 5를 참조하여 설명된 것과 같이, 상이한 유형들의 연산들의 여러 요청 역시 교착상태를 야기할 수 있다.
도 4 및 도 5는 교착상태가 발생할 수 있는 몇몇 예시적인 경우를 보여준다. 몇몇 실시 예에서, 이러한 교착상태를 피하기 위해, 연산의 파라미터들의 디렉토리들 및/또는 파일들에 대한 잠금들이 모든 메타데이터 서버 장치에 걸쳐 동일하게 특정 순서(Sequence)에 따라 획득될 수 있다. 이러한 실시 예들은 도 15를 참조하여 설명될 것이다.
도 6은 분산 스토리지 서버에서 발생할 수 있는 현수 디렉토리(Dangling Directory)를 설명하기 위한 개념도이다.
예로서, 클라이언트 장치(300)는 디렉토리(D4)의 하위 레벨의 디렉토리(D5)를 디렉토리(D6)의 하위 레벨의 디렉토리(D5)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(300)는 리네임 연산의 요청(Q5)을 도 1의 분산 스토리지 서버(1100)로 제공할 수 있다.
그러나, 요청(Q5)은 디렉토리들(D4, D6) 사이의 연결성을 손상시킬 수 있다. 도 6을 참조하면, 소스 디렉토리(D5)가 타겟의 부모 디렉토리(D6)의 하위 레벨로 이동함에 따라, 디렉토리 경로의 연결이 끊어질 수 있다. 따라서, 디렉토리 경로의 연결이 끊기는 현수 디렉토리가 발생할 수 있고, 네임스페이스 일관성(Namespace Consistency)이 손상될 수 있다.
도 7은 분산 스토리지 서버에서 발생할 수 있는 현수 디렉토리를 설명하기 위한 개념도이다.
예로서, 클라이언트 장치(300)는 디렉토리(D4)의 하위 레벨의 디렉토리(D5)를 디렉토리(D3)의 하위 레벨의 디렉토리(D5)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(300)는 리네임 연산의 요청(Q6)을 도 1의 분산 스토리지 서버(1100)로 제공할 수 있다.
예로서, 클라이언트 장치(305)는 디렉토리(D2)의 하위 레벨의 디렉토리(D3)를 디렉토리(D6)의 하위 레벨의 디렉토리(D3)로 변경하고자 할 수 있다. 이를 위해, 클라이언트 장치(305)는 리네임 연산의 요청(Q7)을 분산 스토리지 서버(1100)로 제공할 수 있다.
도 7을 참조하면, 요청들(Q6, Q7) 각각은 현수 디렉토리의 발생을 야기하지 않을 수 있다. 그러나, 요청들(Q6, Q7)이 동시에 또는 연속하여 처리되는 경우, 현수 디렉토리가 발생할 수 있다. 예로서, 요청(Q6)에 의해 소스 디렉토리(Q5)가 타겟의 부모 디렉토리(D3)의 하위 레벨로 이동하고 그 뒤 요청(Q7)에 의해 소스 디렉토리(D3)가 타겟의 부모 디렉토리(D6)의 하위 레벨로 이동하는 경우, 디렉토리 경로의 연결이 끊어질 수 있다.
도 6 및 도 7은 현수 디렉토리가 발생할 수 있는 몇몇 예시적인 경우를 보여준다. 현수 디렉토리가 발생하는지 여부를 검사하는 것은 현수 디렉토리가 발생하는 것을 방지할 수 있다. 그러나, 리네임 연산의 파라미터들의 디렉토리들 및/또는 파일들에 관한 메타데이터가 여러 메타데이터 서버 장치에 분산되어 저장될 수 있다. 따라서, 현수 디렉토리를 검사하기 위해 여러 메타데이터 서버 장치로 액세스하는 것 역시 충돌을 야기할 수 있다.
게다가, 개별 리네임 연산이 현수 디렉토리의 발생을 야기하지 않더라도, 몇몇 동작 환경에서 여러 리네임 연산에 의해 현수 디렉토리가 발생할 수 있다. 따라서, 현수 디렉토리를 검사하는 것이 모든 현수 디렉토리를 방지하지 못할 수 있다.
몇몇 실시 예에서, 현수 디렉토리가 발생하는 것을 방지하기 위해, 현수 디렉토리가 발생하는지 여부를 검사하는 동작이 수행될 수 있다. 몇몇 실시 예에서, 현수 디렉토리가 발생하는지 여부를 검사하는 것은 소스/타겟의 부모 디렉토리의 완전 경로(Full Path)에 기반할 수 있고, 트랜잭션들을 처리하기 위한 트랜잭션 구간 이전에 미리 수행될 수 있다. 이러한 실시 예들은 도 11 내지 도 14를 참조하여 설명될 것이다.
도 8은 도 1의 분산 스토리지 서버에서 리네임 연산을 수행하는 예시적인 스킴을 설명하기 위한 개념도이다.
예로서, 클라이언트 장치(1300)는 도 1의 분산 스토리지 서버(1100)로 리네임 연산의 요청을 제공할 수 있다. 위에서 설명된 것과 같이, 리네임 연산의 요청은 소스의 부모 디렉토리 및 타겟의 부모 디렉토리에 관한 정보를 포함할 수 있다. 몇몇 실시 예에서, 리네임 연산의 요청은 소스의 부모 디렉토리의 완전 경로(Full Path) 및 타겟의 부모 디렉토리의 완전 경로에 관한 정보를 포함할 수 있다.
도 2를 함께 참조하면, 완전 경로는 루트 디렉토리(R)부터 특정 디렉토리까지의 디렉토리 경로를 의미할 수 있다. 완전 경로는 루트 디렉토리(R)부터 특정 디렉토리까지의 경로 상에 위치하는 모든 디렉토리를 지시할 수 있다. 예로서, 디렉토리(D3)를 위한 완전 경로는 "Root/D1/D2/D3"로 표기될 수 있다.
리네임 연산의 소스의 부모 디렉토리의 완전 경로는 루트 디렉토리부터 소스의 부모 디렉토리까지의 디렉토리 경로를 포함할 수 있다. 리네임 연산의 타겟의 부모 디렉토리의 완전 경로는 루트 디렉토리부터 타겟의 부모 디렉토리까지의 디렉토리 경로를 포함할 수 있다. 간결성을 위해, 소스의 부모 디렉토리의 완전 경로는 제 1 완전 경로로 불릴 수 있고, 타겟의 부모 디렉토리의 완전 경로는 제 2 완전 경로로 불릴 수 있다.
몇몇 실시 예에서, 메타데이터 서버 장치들(1130, 1131, 1135) 중에서, 특정 메타데이터 서버 장치가 리네임 연산의 요청을 처리하도록 선택될 수 있다. 예로서, 하나의 메타데이터 서버 장치(1131)가 리네임 연산의 요청을 처리하도록 선택될 수 있다. 몇몇 실시 예에서, 루트 디렉토리(R)와 관련되는 메타데이터를 저장하는 메타데이터 서버 장치(1131)가 리네임 연산의 요청을 처리하도록 선택될 수 있다. 또는, 선택된 메타데이터 서버 장치(1131)가 루트 디렉토리(R)와 관련되는 메타데이터를 저장하도록 동작할 수 있다.
몇몇 실시 예에서, 선택된 메타데이터 서버 장치(1131)가 리네임 연산의 요청을 배타적으로 처리할 수 있다. 반면, 메타데이터 서버 장치(1131) 외의 나머지 메타데이터 서버 장치들(예컨대, 1130, 1135)은 리네임 연산의 요청을 처리하지 않을 수 있다. 몇몇 실시 예에서, 분산 스토리지 서버(1100)는 리네임 연산의 요청이 메타데이터 서버 장치(1131)로만 제공되도록 동작할 수 있다. 몇몇 실시 예에서, 나머지 메타데이터 서버 장치들(예컨대, 1130, 1135)은 리네임 연산의 요청을 무시하거나, 리네임 연산의 요청에 대해 거부(Rejection) 응답을 반환(Return)할 수 있다.
메타데이터 서버 장치(1131)는 리네임 연산의 요청만을 처리하도록 구성될 수 있다. 또는, 메타데이터 서버 장치(1131)는 리네임 연산과 상이한 유형의 다른 연산(예컨대, 읽기, 삭제, 하드링크 등)의 요청을 더 처리하도록 구성될 수 있다. 나머지 메타데이터 서버 장치들(예컨대, 1130, 1135)은 리네임 연산을 제외한 어떠한 유형의 연산이든 수행할 수 있다.
위에서 설명된 것과 같이, 리네임 연산은 분산 트랜잭션을 수반할 수 있다. 여러 리네임 연산의 요청들이 여러 메타데이터 서버 장치에 의해 병렬로 또는 동시에 처리되는 경우, 트랜잭션들 사이에 충돌이 발생할 수 있다(도 4 내지 도 7 참조). 따라서, 메타데이터 서버 장치(1131)가 리네임 연산의 요청을 배타적으로 처리하도록 선택되는 경우, 트랜잭션들 사이의 충돌이 발생할 가능성을 감소시키는 것이 가능할 수 있다.
나아가, 리네임 연산의 요청이 제 1 완전 경로 및 제 2 완전 경로를 포함하는 경우, 현수 디렉토리가 발생하는 경우를 정확하게 판별하는 것이 가능할 수 있다. 완전 경로에 기초하여 현수 디렉토리를 검사하는 것은 도 11 내지 도 14를 참조하여 설명될 것이다.
도 9는 도 8의 선택된 메타데이터 서버 장치의 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 메타데이터 서버 장치(1131)는 스토리지(1131a), 프로세서(1131b), 메모리(1131c), 통신 장치(1131d), 및 버스(1131e)를 포함할 수 있다.
스토리지(1131a)는 도 1의 분산 스토리지 서버(1100)에 분산하여 저장되는 메타데이터의 일부 또는 전부를 저장할 수 있다. 예로서, 스토리지(1131a)는 HDD(Hard Disk Drive), SSD(Solid State Drive), ROM(Read-only Memory) 등과 같은 불휘발성 매체를 포함할 수 있다.
프로세서(1131b)는 메타데이터 서버 장치(1131)의 전반적인 동작들을 관리할 수 있다. 프로세서(1131b)는 메타데이터 서버 장치(1131)를 동작시키는 데에 요구되는 다양한 산술/논리 연산을 수행할 수 있다. 프로세서(1131b)는 메타데이터 서버 장치(1131)의 구성 요소들의 동작들을 제어하기 위해, 스케줄링, 타이밍, 시퀀스 등과 같은 다양한 환경 요인을 제어할 수 있다.
프로세서(1131b)는 산술/논리 연산들을 수행하도록 구성되는 하나 이상의 전용 회로(Special-purpose Circuit; 예컨대, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)들을 포함할 수 있다. 프로세서(1131b)는 하나 이상의 프로세서 코어들을 포함할 수 있다. 예로서, 프로세서(1131b)는 범용 프로세서(General-purpose Processor), 전용 프로세서, 어플리케이션 프로세서(Application Processor) 등으로 구현될 수 있다.
프로세서(1131b)는 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 이해하고 처리할 수 있다. 예로서, 프로세서(1131b)는 스토리지(1131a)에 저장되는 운영체제의 프로그램 코드를 실행하여 운영체제를 구동할 수 있다. 예로서, 프로세서(1131b)는 스토리지(1131a)에 저장되는 응용프로그램의 프로그램 코드를 실행하여 다양한 서비스를 제공할 수 있다.
프로세서(1131b)는 스토리지(1131a)에 저장되는 메타데이터에 대해 수행되는 연산들을 처리할 수 있다. 예로서, 프로세서(1131b)는 클라이언트 장치(1300)로부터 수신되는 리네임 연산의 요청에 응답하여, 리네임 연산과 관련되는 트랜잭션들을 처리할 수 있다. 몇몇 실시 예에서, 프로세서(1131b)는 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2)를 포함할 수 있다.
연산 관리기(1131b1)는 클라이언트 장치(1300)에 의해 요청되는 다양한 연산을 관리할 수 있다. 예로서, 연산 관리기(1131b1)는 리네임 연산을 수행하기 위해 요구되는 메타데이터 연산을 제어할 수 있다. 연산 관리기(1131b1)는 메타데이터 연산을 수행하기 위해 요구되는 트랜잭션을 처리할 것을 트랜잭션 처리기(1131b2)에게 요청할 수 있다.
몇몇 실시 예에서, 연산 관리기(1131b1)는 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사할 수 있다. 연산 관리기(1131b1)는 리네임 연산의 요청에 기초하여, 좀 더 구체적으로는 리네임 연산의 요청에 포함되는 제 1 완전 경로 및 제 2 완전 경로에 관한 정보에 기초하여, 현수 디렉토리를 검사할 수 있다. 완전 경로에 기초하여 현수 디렉토리를 검사하는 것은 도 11 내지 도 14를 참조하여 설명될 것이다. 리네임 연산이 수행되더라도 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 연산 관리기(1131b)는 트랜잭션을 처리할 것을 트랜잭션 처리기(1131b2)에게 요청할 수 있다.
트랜잭션 처리기(1131b2)는 연산 관리기(1131b1)에 의해 요청되는 트랜잭션을 처리할 수 있다. 예로서, 트랜잭션 처리기(1131b2)는 메타데이터 연산을 수행하기 위해 트랜잭션의 문맥을 적절하게 생성/조합할 수 있다. 트랜잭션 처리기(1131b2)는 트랜잭션의 문맥을 이용하여, 스토리지(1131a)에 저장되는 메타데이터를 저장/인출/수정/삭제할 수 있다.
몇몇 실시 예에서, 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 트랜잭션 처리기(1131b2)가 리네임 연산을 위한 트랜잭션들을 처리할 수 있다. 트랜잭션 처리기(1131b2)에 의해 처리되는 트랜잭션들은 분산 스토리지 서버(1100)에 분산하여 저장되는 메타데이터로 지시될(Directed) 수 있다. 예로서, 트랜잭션 처리기(1131b2)는, 적어도, 스토리지(1131a)에 저장되는 메타데이터로 지시되는 트랜잭션들을 처리할 수 있다. 따라서, 리네임 연산이 수행될 수 있다.
몇몇 실시 예에서, 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2) 각각은 소프트웨어로 구현될 수 있다. 프로세서(1131b)는 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2)의 프로그램 코드를 실행하여, 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2)의 동작들을 제공할 수 있다. 몇몇 실시 예에서, 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2) 각각은 하드웨어로 구현될 수 있다. 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2) 각각은 그것들의 동작들을 제공하도록 구성되는 아날로그/디지털 회로들을 포함할 수 있다. 몇몇 실시 예에서, 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2) 각각은 소프트웨어 및 하드웨어의 하이브리드(Hybrid) 형태로 구현될 수 있다.
도 9는 프로세서(1131b)가 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2)를 포함하는 것을 보여준다. 그러나, 연산 관리기(1131b1) 및/또는 트랜잭션 처리기(1131b2)의 일부 또는 전부는 프로세서(1131b)와 별개로 제공될 수 있다. 도 9는 가능한 실시 예들 중 하나를 보여줄 뿐이고, 본 발명을 한정하도록 의도되지는 않는다.
메모리(1131c)는 프로세서(1131b)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 메모리(1131c)는 프로세서(1131b)를 위한 버퍼 또는 캐시로서 제공될 수 있다. 예로서, 메모리(1131c)는 프로세서(1131b)에 의해 연산이 처리되는 동안 생성되는 데이터를 저장할 수 있다. 예로서, 메모리(1131c)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 메모리 시스템을 포함할 수 있다.
통신 장치(1131d)는 클라이언트 장치(1300)와의 통신을 처리할 수 있다. 통신 장치(1131d)는 클라이언트 장치(1300)로부터 다양한 연산의 요청들을 수신할 수 있다. 통신 장치(1131d)는 클라이언트 장치(1300)를 위해, 트랜잭션의 처리의 결과를 출력할 수 있다. 예로서, 통신 장치(1131d)는 클라이언트 장치(1300)로부터 리네임 연산의 요청을 수신할 수 있고, 리네임 연산과 관련되는 트랜잭션들의 처리의 결과를 클라이언트 장치(1300)로 출력할 수 있다.
버스(1131e)는 메타데이터 서버 장치(1131)의 구성 요소들(예컨대, 1131a, 1131b, 1131c, 및 1131d) 사이에서 통신 경로를 제공할 수 있다. 버스(1131e)는 메타데이터 서버 장치(1131)에 의해 채용되는 버스 포맷에 따라, 메타데이터 서버 장치(1131)의 구성 요소들 사이의 데이터 교환을 허용할 수 있다. 예로서, 버스 포맷은 PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment), USB(Universal Serial Bus) 등과 같은 다양한 규약 중 하나 이상을 포함할 수 있다.
예로서, 클라이언트 장치(1300)는 소스를 타겟으로 변경하기 위한 리네임 연산을 수행할 것을 분산 스토리지 서버(1100)에게 요청할 수 있다. 예로서, 분산 스토리지 서버(1100)는 소스과 관련되는 데이터 서버 장치(1110) 및 타겟과 관련되는 데이터 서버 장치(1115)를 포함할 수 있다. 프로세서(1131b) 또는 연산 관리기(1131b1)가 리네임 연산의 수행에 의해 현수 디렉토리가 발생하지 않는 것으로 판별하는 경우, 프로세서(1131b) 또는 트랜잭션 처리기(1131b2)는 클라이언트 장치(1300)를 위해 트랜잭션들을 처리할 수 있다.
프로세서(1131b) 또는 트랜잭션 처리기(1131b2)는 스토리지(1131a)에 저장되는 메타데이터에 기초하여, 트랜잭션들의 처리의 결과를 출력할 수 있다. 트랜잭션들의 처리의 결과는 소스 및 타겟과 관련되는 정보를 포함할 수 있다. 예로서, 트랜잭션들의 처리의 결과는 소스와 관련되는 제 1 메타데이터 서버 장치, 및 타겟과 관련되는 제 2 메타데이터 서버 장치의 정보를 포함할 수 있다. 따라서, 메타데이터 서버 장치(1131)는, 클라이언트 장치(1300)를 위해, 트랜잭션들의 처리의 결과로서, 제 1 및 제 2 메타데이터 서버 장치들로 지시되는 응답을 출력할 수 있다.
클라이언트 장치(1300)는 메타데이터 서버 장치(1131)로부터 출력되는 응답에 기초하여 제 1 및 제 2 메타데이터 서버 장치들로 액세스할 수 있다. 따라서, 클라이언트 장치(1300)는 메타데이터 서버 장치(1131)로부터 출력되는 응답에 기초하여 데이터 서버 장치들(1110, 1115)로 액세스할 수 있다. 데이터 서버 장치들(1110, 1115)은 메타데이터 서버 장치(1131)의 트랜잭션들의 처리의 결과에 기초하여 클라이언트 장치(1300)에 의해 액세스될 수 있다.
반면, 몇몇 경우, 프로세서(1131b) 또는 연산 관리기(1131b1)는 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는 것으로 판별할 수 있다. 이러한 충돌은 네임스페이스 일관성의 손상을 야기할 수 있기 때문에, 메타데이터 서버 장치(1131)는 리네임 연산이 수행되는 것을 허용하지 않을 수 있다. 따라서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 클라이언트 장치(1300)를 위해 리네임 연산의 거부를 나타내는 응답을 출력할 수 있다.
도 9는 메타데이터 서버 장치(1131)의 구성을 보여준다. 한편, 분산 스토리지 서버(1100)에 포함되는 다른 메타데이터 서버 장치들 역시 메타데이터 서버 장치(1131)와 실질적으로 동일 또는 유사하게 구성될 수 있다. 다만, 다른 메타데이터 서버 장치들은 리네임 연산의 요청을 처리하지 않을 수 있고, 연산 관리기(1131b1) 및 트랜잭션 처리기(1131b2)를 포함하지 않을 수 있다. 데이터 서버 장치들(1110, 1115), 클라이언트 장치들(1300, 1305), 및 마스터 장치(1170) 역시, 메타데이터 서버 장치(1131)와 유사하게, 스토리지, 프로세서, 메모리, 통신 장치, 버스 등의 구성 요소들을 포함하도록 구성될 수 있다.
도 10은 도 8의 선택된 메타데이터 서버 장치를 동작시키는 예시적인 방법을 설명하는 흐름도이다. 더 나은 이해를 가능하게 하기 위해, 도 9가 도 10과 함께 참조될 것이다.
S110 동작에서, 메타데이터 서버 장치(1131)는 통신 장치(1131d)를 통해 리네임 연산의 요청을 수신할 수 있다. S120 동작에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 S110 동작의 요청에 응답하여 리네임 배타적 잠금(Rename-exclusive Lock)을 설정할 수 있다.
리네임 배타적 잠금은 특정 리네임 연산의 요청이 현재 다루어지고 있음을 나타낼 수 있다. 리네임 배타적 잠금은 둘 이상의 리네임 연산들이 동시에 수행되는 것을 허용하지 않을 수 있다. 예로서, 리네임 배타적 잠금이 이미 설정되어 있는 경우, 프로세서(1131b) 또는 연산 관리기(1131b1)는 S110 동작의 리네임 연산 외의 다른 리네임 연산들의 처리를 보류할 수 있다.
도 4 및 도 7을 참고하여 설명된 것과 같이, 여러 리네임 연산이 함께(예컨대, 병렬로 또는 동시에) 수행되는 경우, 교착상태, 현수 디렉토리 등과 같은 충돌이 발생할 수 있다. 따라서, 몇몇 실시 예에서, 메타데이터 서버 장치(1131)는 한 번에 하나의 리네임 연산만이 수행되도록 리네임 배타적 잠금을 관리할 수 있다. 예로서, 메타데이터 서버 장치(1131)는 리네임 배타적 잠금을 참조하여, 여러 리네임 연산을 순차적으로 수행할 수 있다. 따라서, 메타데이터 서버 장치(1131)는 교착상태, 현수 디렉토리 등을 포함하는 다양한 충돌을 방지할 수 있다.
그 뒤, S130 동작에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사할 수 있다. 프로세서(1131b) 또는 연산 관리기(1131b1)는 S110 동작의 요청에 포함되는 정보(예컨대, 제 1 완전 경로 및 제 2 완전 경로의 정보)에 기초하여 현수 디렉토리를 검사할 수 있다. 현수 디렉토리를 검사하는 예시적인 방법은 도 11 내지 도 14를 참조하여 설명될 것이다.
현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, S140 동작이 수행될 수 있다. 반면, 현수 디렉토리가 발생하는 것으로 판별되는 경우, S145 동작이 수행될 수 있다. S145 동작에서, 현수 디렉토리가 발생하는 것을 방지하기 위해, 메타데이터 서버 장치(1131)는 리네임 연산의 거부를 나타내는 응답을 출력할 수 있다.
현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 연산 관리기(1131b1)는 메타데이터 연산을 수행하기 위해 요구되는 트랜잭션들을 처리할 것을 트랜잭션 처리기(1131b2)에게 요청할 수 있다. 따라서, S140 동작에서, 프로세서(1131b) 또는 트랜잭션 처리기(1131b2)는 먼저 리네임 연산의 소스 및 타겟과 관련되는 잠금들을 획득할 수 있다. 그 뒤, S150 동작에서, 프로세서(1131b) 또는 트랜잭션 처리기(1131b2)는 분산하여 저장되는 메타데이터로 지시되는 트랜잭션들을 처리할 수 있다. 이는 리네임 연산이 소스 및 타겟에 대해 수행되도록 허용할 수 있다.
위에서 설명된 것과 같이, 잠금은 액세스 권한과 관련될 수 있다. 다른 연산과의 충돌을 방지하기 위해, 프로세서(1131b) 또는 트랜잭션 처리기(1131b2)는 리네임 연산의 소스 및 타겟과 관련되는 잠금들을 획득할 수 있다. 잠금들을 획득하는 예시적인 방법이 도 15를 참조하여 설명될 것이다.
도 10을 참조하여 이해될 수 있듯이, 현수 디렉토리가 발생하는지 여부를 검사하는 것(즉, S130 동작)은 트랜잭션들을 처리하기 위한 트랜잭션 구간(즉, S150 동작) 이전에 미리 수행될 수 있다. 이는 현수 디렉토리를 야기하지 않는 트랜잭션만이 처리되도록 허용할 수 있고, 따라서 메타데이터 서버 장치(1131)의 안정성 및 신뢰성이 향상될 수 있다. 게다가, 트랜잭션을 처리하는 것으로부터 현수 디렉토리를 검사하는 처리를 분리시킴으로써, 트랜잭션을 처리하는 성능 및 효율성이 향상될 수 있다.
S160 동작에서, 트랜잭션들의 처리의 완료에 응답하여, 프로세서(1131b) 또는 연산 관리기(1131b1)는 리네임 배타적 잠금을 해제할 수 있다. S170 동작에서, 메타데이터 서버 장치(1131)는 통신 장치(1131d)를 통해 트랜잭션들의 처리의 결과를 출력할 수 있다. 출력되는 결과는 소스 및 타겟과 관련되는 정보를 포함할 수 있다.
몇몇 실시 예에서, S120 동작의 리네임 배타적 잠금이 설정되어 있는 동안, 메타데이터 서버 장치(1131)는 S110 동작의 리네임 연산 외의 추가 리네임 연산의 요청을 수신할 수 있다. 이 경우, 메타데이터 서버 장치(1131)는 리네임 배타적 잠금에 응답하여, 추가 리네임 연산과 관련되는 처리를 보류할 수 있다. 이후, S160 동작에서 리네임 배타적 잠금이 해제된 후, 메타데이터 서버 장치(1131)는 추가 리네임 연산의 요청과 관련되는 동작(예컨대, 도 10의 S120 내지 S170 동작들)을 수행할 수 있다.
도 11 및 도 12는 도 8의 선택된 메타데이터 서버 장치에서 현수 디렉토리가 발생하는 것을 방지하는 예시적인 방법을 설명하기 위한 개념도들이다. 더 나은 이해를 가능하게 하기 위해, 도 9가 도 11 및 도 12와 함께 참조될 것이다.
메타데이터 서버 장치(1131)는 리네임 연산의 요청을 처리할 수 있다. 도 8을 참조하여 설명된 것과 같이, 리네임 연산의 요청은 제 1 완전 경로 및 제 2 완전 경로에 관한 정보를 포함할 수 있다. 예로서, 메타데이터 서버 장치(1131)는 도 6을 참조하여 설명된 요청(Q5) 대신, 제 1 완전 경로 및 제 2 완전 경로에 기초하여 도 11의 요청(Q5')을 수신할 수 있다.
도 11을 참조하면, 요청(Q5')은 소스 디렉토리(D5)의 부모 디렉토리(D4)의 제 1 완전 경로 "Root/D4"를 포함할 수 있고, 타겟 디렉토리(D5)의 부모 디렉토리(D6)의 제 2 완전 경로 "Root/D4/D5/D6"를 포함할 수 있다. 프로세서(1131b) 또는 연산 관리기(1131b1)는 제 1 완전 경로 및 제 2 완전 경로의 정보에 기초하여, 요청(Q5')의 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사할 수 있다.
한편, 도 6 및 도 7을 함께 참조하면, 타겟을 위한 제 2 완전 경로가 소스를 위한 제 1 완전 경로를 포함하는 경우에 현수 디렉토리가 발생할 수 있음이 이해될 수 있다. 따라서, 몇몇 실시 예에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리를 검사하기 위해, 제 2 완전 경로가 제 1 완전 경로를 포함하는지 여부를 검사할 수 있다. 예로서, 요청(Q5')의 제 2 완전 경로 상에서 요청(Q5')의 제 1 완전 경로가 읽히기 때문에, 제 2 완전 경로가 제 1 완전 경로를 포함하는 것으로 이해될 수 있다.
예로서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 도 12를 참조하여 설명될 과정에 따라, 제 2 완전 경로가 제 1 완전 경로를 포함하는지 여부를 검사할 수 있다. 도 12를 참조하면, 제 2 완전 경로가 제 1 완전 경로를 포함하는지 여부를 검사하는 것은 여러 단계에 걸쳐 수행될 수 있다.
각 단계에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 기준 디렉토리를 선택할 수 있다. 기준 디렉토리는 제 2 완전 경로 상에서 루트 디렉토리부터 타겟의 부모 디렉토리까지 한 레벨의 디렉토리씩 하향(Downward)하여 변경될 수 있다. 예로서, 요청(Q5')과 관련하여, 기준 디렉토리는 루트 디렉토리부터 타겟(D5)의 부모 디렉토리(D6)까지 한 레벨의 디렉토리씩 하향하여 변경될 수 있다.
각 단계에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 부분 경로(Partial Path)를 선택할 수 있다. 부분 경로는 루트 디렉토리부터 기준 디렉토리까지의 디렉토리 경로에 대응할 수 있다. 예로서, 요청(Q5')과 관련되는 세 번째 단계에서, 기준 디렉토리는 "D5"로 선택될 수 있고, 부분 경로는 "Root/D4/D5"로 선택될 수 있다. 부분 경로는 제 2 완전 경로에 부분적으로 포함되는 디렉토리 경로로서 이해될 수 있다.
각 단계에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 부분 경로가 제 1 완전 경로와 동일한지 여부를 검사할 수 있다. 예로서, 요청(Q5')과 관련되는 첫 번째 단계에서, 부분 경로가 제 1 완전 경로와 상이하기 때문에, 프로세서(1131b) 또는 연산 관리기(1131b1)는 다음 단계로 진행할 수 있다. 요청(Q5')과 관련되는 두 번째 단계에서, 부분 경로가 제 1 완전 경로와 동일하기 때문에, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리가 발생하는 것으로 판별할 수 있다. 이 경우, 세 번째 및 네 번째 단계들은 진행되지 않을 수 있다.
몇몇 경우, 모든 단계가 진행될 때까지, 제 1 완전 경로와 동일한 부분 경로가 발견되지 않을 수 있다. 이는 제 2 완전 경로가 제 1 완전 경로를 포함하지 않음을 의미할 수 있다. 따라서, 이러한 경우, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리가 발생하지 않는 것으로 판별할 수 있다.
도 11 및 도 12를 참조하여 설명된 예시적인 방법에 따르면, 메타데이터 서버 장치(1131)는 현수 디렉토리를 야기하는 리네임 연산을 방지할 수 있다. 따라서, 예로서, 도 6 및 도 7을 참조하여 설명된 것들과 같은 충돌이 발생하지 않을 수 있고, 안정성 및 신뢰성이 향상될 수 있다.
도 13 및 도 14는 도 8의 선택된 메타데이터 서버 장치에서 현수 디렉토리가 발생하는 것을 방지하는 예시적인 방법을 설명하기 위한 개념도들이다. 더 나은 이해를 가능하게 하기 위해, 도 9가 도 13 및 도 14와 함께 참조될 것이다.
예로서, 메타데이터 서버 장치(1131)는 도 7을 참조하여 설명된 요청(Q7) 대신, 제 1 완전 경로 및 제 2 완전 경로에 기초하여 도 13의 요청(Q7')을 수신할 수 있다. 다만, 요청(Q7')은 리네임 연산의 선행 요청의 트랜잭션들의 처리가 완료되고 선행 요청의 리네임 배타적 잠금이 해제된 후에 처리될 수 있다.
도 13을 참조하면, 요청(Q7')은 소스 디렉토리(D3)의 부모 디렉토리(D2)의 제 1 완전 경로 "Root/D1/D2"를 포함할 수 있고, 타겟 디렉토리(D3)의 부모 디렉토리(D6)의 제 2 완전 경로 "Root/D4/D5/D6"를 포함할 수 있다. 프로세서(1131b) 또는 연산 관리기(1131b1)는 제 1 완전 경로 및 제 2 완전 경로의 정보에 기초하여, 요청(Q7')의 리네임 연산의 수행에 의해 현수 디렉토리가 발생하는지 여부를 검사할 수 있다.
한편, 도 7을 함께 참조하면, 선행 요청(Q6)이 네임스페이스를 변경시킨 뒤 후행 요청(Q7)이 곧바로 처리되는 경우에 현수 디렉토리가 발생할 수 있음이 이해될 수 있다. 즉, 변경되지 않은 네임스페이스에 대한 요청(Q7)은 변경된 네임스페이스 상에서 현수 디렉토리를 야기할 수 있다. 따라서, 몇몇 실시 예에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리를 검사하기 위해, 특정 디렉토리의 하위 레벨에 그 특정 디렉토리의 자식 디렉토리가 실제로 존재하는지 여부를 검사할 수 있다.
예로서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 도 14를 참조하여 설명될 과정에 따라, 특정 디렉토리의 하위 레벨에 그 특정 디렉토리의 자식 디렉토리가 실제로 존재하는지 여부를 검사할 수 있다. 도 14를 참조하면, 특정 디렉토리의 하위 레벨에 그 특정 디렉토리의 자식 디렉토리가 실제로 존재하는지 여부를 검사하는 것은 여러 단계에 걸쳐 수행될 수 있다.
각 단계에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 대상(Object) 디렉토리들을 선택할 수 있다. 대상 디렉토리들은 제 2 완전 경로에 포함되는 특정 디렉토리, 및 그 특정 디렉토리의 자식 디렉토리를 포함할 수 있다. 대상 디렉토리들은 제 2 완전 경로에 포함되는 인접 디렉토리들의 쌍에 대응할 수 있다. 예로서, 요청(Q7')과 관련되는 두 번째 단계에서, 제 2 완전 경로 상의 디렉토리(D4) 및 디렉토리(D4)의 자식 디렉토리(D5)가 선택될 수 있다.
각 단계에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 대상 디렉토리들을 참조하여, 특정 디렉토리의 하위 레벨에 특정 자식 디렉토리가 실제로 존재하는지 여부를 검사할 수 있다. 예로서, 요청(Q7')과 관련되는 첫 번째 단계에서, 루트 디렉토리의 하위 레벨에 자식 디렉토리(D4)가 실제로 존재하기 때문에, 프로세서(1131b) 또는 연산 관리기(1131b1)는 다음 단계로 진행할 수 있다.
그러나, 도 7을 참조하여 설명된 선행 요청은 디렉토리(D5)를 디렉토리(D3)의 하위 레벨로 이미 이동시켰을 수 있다. 따라서, 요청(Q7')과 관련되는 두 번째 단계에서, 디렉토리(D4)의 하위 레벨에 디렉토리(D5)가 존재하지 않을 수 있다. 이 예에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리가 발생하는 것으로 판별할 수 있다. 세 번째 단계는 진행되지 않을 수 있다.
몇몇 경우, 모든 단계가 진행될 때까지, 자식 디렉토리들이 각각의 부모 디렉토리들의 하위 레벨들에 실제로 존재하는 것으로 판별될 수 있다. 이는 네임스페이스 일관성이 손상되지 않았음을 의미할 수 있다. 따라서, 이러한 경우, 프로세서(1131b) 또는 연산 관리기(1131b1)는 현수 디렉토리가 발생하지 않는 것으로 판별할 수 있다.
몇몇 실시 예에서, 프로세서(1131b) 또는 연산 관리기(1131b1)는 특정 디렉토리의 하위 레벨에 자식 디렉토리가 실제로 존재하는지 여부를 검사하기 위해, 그 특정 디렉토리 및 자식 디렉토리와 관련되는 메타데이터를 저장하는 다른 메타데이터 서버 장치와 통신할 수 있다. 프로세서(1131b) 또는 연산 관리기(1131b1)로부터 요청을 수신한 다른 메타데이터 서버 장치는 메타데이터 서버 장치(1131)를 위해 특정 자식 디렉토리가 실제로 존재하는지 여부를 나타내는 응답을 출력할 수 있다.
도 13 및 도 14를 참조하여 설명된 예시적인 방법에 따르면, 메타데이터 서버 장치(1131)는 현수 디렉토리를 야기하는 리네임 연산을 방지할 수 있다. 나아가, 도 10을 참조하여 설명된 리네임 배타적 잠금을 채용하여 여러 리네임 연산이 함께 수행되는 것을 방지하는 경우, 메타데이터 서버 장치(1131)는 네임스페이스 일관성이 손상되는 것을 방지할 수 있다. 따라서, 예로서, 도 7을 참조하여 설명된 것과 같은 충돌이 발생하지 않을 수 있고, 안정성 및 신뢰성이 향상될 수 있다.
도 15는 도 8의 선택된 메타데이터 서버 장치에서 연산 파라미터에 대한 잠금을 획득하는 예시적인 방법을 설명하기 위한 개념도이다. 더 나은 이해를 가능하게 하기 위해, 도 9가 도 15와 함께 참조될 것이다.
예로서, 메타데이터 서버 장치(1131)는 도 5를 참조하여 설명된 요청(Q3) 대신, 제 1 완전 경로 및 제 2 완전 경로에 기초하여 도 15의 요청(Q3')을 수신할 수 있다. 나아가, 메타데이터 서버 장치(1131)는 리네임 연산과 상이한 유형의 연산의 요청(예컨대, 하드링크 연산의 요청(Q4))을 더 수신할 수 있다. 이 예에서, 메타데이터 서버 장치(1131)는 요청(Q3')의 리네임 연산과 관련되는 잠금들은 물론, 요청(Q4)의 하드링크 연산과 관련되는 잠금들을 획득할 수 있다.
몇몇 실시 예에서, 연산의 파라미터들의 디렉토리들 및/또는 파일들에 대한 잠금들이 모든 메타데이터 서버 장치에 걸쳐 동일하게 특정 순서에 따라 획득될 수 있다. 메타데이터 서버 장치(1131)는 특정 순서에 따라 요청(Q3')을 위한 잠금들을 획득할 수 있고, 요청(Q4)을 처리하는 메타데이터 서버 장치 역시 동일한 특정 순서에 따라 요청(Q4)을 위한 잠금들을 획득할 수 있다.
몇몇 실시 예에서, 잠금들을 획득하기 위한 특정 순서는 "부모→자식"의 순서를 포함할 수 있다. 이러한 실시 예들에서, 부모 레벨의 디렉토리에 대한 잠금은 자식 레벨의 디렉토리에 대한 잠금을 획득하기 전에 획득될 수 있다.
예로서, 도 15를 참조하면, 요청(Q3')의 리네임 연산은 부모 디렉토리(D1) 및 자식 디렉토리(D2)에 대한 잠금들을 수반할 수 있다. 나아가, 요청(Q4)의 하드링크 연산 역시 부모 디렉토리(D1) 및 자식 디렉토리(D2)에 대한 잠금들을 수반할 수 있다. 이 예에서, 모든 메타데이터 서버 장치는 부모 디렉토리(D1)에 대한 잠금을 먼저 획득할 수 있고, 그 뒤 자식 디렉토리(D2)에 대한 잠금을 획득할 수 있다.
한편, 몇몇 경우, 연산의 파라미터들의 디렉토리들이 부모-자식의 관계를 갖지 않을 수 있다. 몇몇 실시 예에서, 잠금들을 획득하기 위한 특정 순서는 개체들의 생성 순서를 포함할 수 있다. 이러한 실시 예들에서, 상대적으로 먼저 생성된 디렉토리에 대한 잠금이 상대적으로 늦게 생성된 디렉토리에 대한 잠금을 획득하기 전에 획득될 수 있다. 또는, 상대적으로 늦게 생성된 디렉토리에 대한 잠금이 상대적으로 먼저 생성된 디렉토리에 대한 잠금을 획득하기 전에 획득될 수 있다. 예로서, 생성 순서는 특정 디렉토리의 아이노드(inode)의 ctime 정보 등에 기초하여 파악될 수 있다.
도 4 및 도 5를 참조하여 설명된 예시들에 따르면, 메타데이터 서버 장치들이 상이한 순서들에 따라 잠금들을 획득하는 경우, 잠금 순서들 사이의 차이에 기인하여 교착상태가 발생할 수 있다. 그러나, 도 15를 참조하여 설명된 예시적인 방법에 따라, 모든 메타데이터 서버 장치가 동일한 특정 순서에 따라 잠금들을 획득하는 경우, 교착상태가 발생하지 않을 수 있다. 따라서, 예로서, 도 4 및 도 5를 참조하여 설명된 것들과 같은 충돌이 발생하지 않을 수 있고, 안정성 및 신뢰성이 향상될 수 있다.
다만, 위 예시들은 가능한 다양한 실시 예 중 일부를 설명한다. 잠금 순서는 다양한 다른 방식을 더 포함할 수 있다. 위 예시들은 더 나은 이해를 가능하기 위해 제공되는 것이고, 본 발명을 한정하도록 의도되지는 않는다.
각 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 몇몇 실시 예의 더 나은 이해를 가능하게 하기 위해, 개념도에 나타낸 요소들 각각의 형태, 구조, 크기 등이 과장 또는 축소되어 표현될 수 있다. 실제로 구현되는 구성은 각 개념도에 나타낸 것과 상이한 물리적 형상을 가질 수 있다. 각 개념도는 구성 및 그것의 요소들의 물리적 형상을 한정하도록 의도되지는 않는다.
각 블록도에 나타낸 구성은 더 나은 이해를 가능하게 하기 위해 제공된다. 각 블록은 그것의 기능에 따라 더 작은 단위의 블록들로 구현될 수 있다. 또는, 복수의 블록은 그것들의 기능들에 따라 더 큰 단위의 클록으로 구현될 수 있다. 본 발명은 각 블록도에 나타낸 구성에 의해 한정되지 않는다.
이상에서, 본 발명이 몇몇 실시 예에 기초하여 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성에 기인하여, 본 발명에 의해 의도되는 목적 및 효과는 본 발명의 요지를 포함하면서도 위 실시 예들과 상이한 구현에 의해 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 위 실시 예들과 동일한 목적 및 효과를 달성할 수 있는 구현은 본 발명에 의해 청구되는 보호 범위에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 변경 또는 수정되는 구현은 본 발명에 의해 청구되는 보호 범위에 포함될 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되지 않고, 아래의 청구범위로부터 읽히는 기술 사상을 커버하는 것으로 이해되어야 한다.
1000 : 분산 컴퓨팅 시스템

Claims (19)

  1. 데이터를 분산하여 저장하도록 구성되는 복수의 데이터 서버 장치; 및
    상기 분산하여 저장되는 데이터와 관련되는 메타데이터를 분산하여 저장하도록 구성되는 복수의 메타데이터 서버 장치를 포함하되,
    상기 복수의 메타데이터 서버 장치 중에서 선택된 메타데이터 서버 장치는:
    클라이언트 장치로부터 수신되는 리네임 연산(Rename Operation)의 요청에 포함되는 소스(Source)의 부모 디렉토리(Parent Directory)의 완전 경로(Full Path) 및 타겟(Target)의 부모 디렉토리의 완전 경로에 관한 정보에 기초하여, 상기 리네임 연산의 수행에 의해 현수 디렉토리(Dangling Directory)가 발생하는지 여부를 검사하고;
    상기 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 상기 리네임 연산이 수행되도록, 상기 분산하여 저장되는 메타데이터로 지시되는(Directed) 트랜잭션(Transaction)들을 처리하도록 구성되고,
    상기 현수 디렉토리가 발생하는지 여부의 검사는 상기 트랜잭션들을 처리하기 위한 트랜잭션 구간 이전에 수행되는 분산 스토리지 서버.
  2. 제 1 항에 있어서,
    상기 선택된 메타데이터 서버 장치는 상기 리네임 연산의 상기 요청을 배타적으로 처리하도록 더 구성되고, 상기 선택된 메타데이터 서버 장치 외의 나머지 메타데이터 서버 장치들은 상기 리네임 연산의 상기 요청을 처리하지 않도록 구성되는 분산 스토리지 서버.
  3. 제 1 항에 있어서,
    상기 선택된 메타데이터 서버 장치는 상기 분산하여 저장되는 데이터를 위한 네임스페이스(Namespace)의 루트 디렉토리(Root Directory)와 관련되는 메타데이터를 저장하도록 더 구성되는 분산 스토리지 서버.
  4. 제 1 항에 있어서,
    상기 복수의 메타데이터 서버 장치는 상기 소스와 관련되는 제 1 메타데이터 서버 장치 및 상기 타겟과 관련되는 제 2 메타데이터 서버 장치를 포함하고,
    상기 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 상기 선택된 메타데이터 서버 장치는 상기 클라이언트 장치를 위해, 상기 트랜잭션들의 처리의 결과로서 상기 제 1 및 제 2 메타데이터 서버 장치들로 지시되는 응답을 출력하도록 더 구성되고,
    상기 제 1 및 제 2 메타데이터 서버 장치들은, 상기 리네임 연산이 수행되도록, 상기 출력된 응답에 기초하여 상기 클라이언트 장치에 의해 액세스되는 분산 스토리지 서버.
  5. 제 1 항에 있어서,
    상기 현수 디렉토리가 발생하는 것으로 판별되는 경우, 상기 선택된 메타데이터 서버 장치는 상기 클라이언트 장치를 위해 상기 리네임 연산의 거부(Rejection)를 나타내는 응답을 출력하도록 더 구성되는 분산 스토리지 서버.
  6. 분산 스토리지 서버에 분산하여 저장되는 데이터와 관련되는 메타데이터를 저장하도록 구성되는 스토리지;
    리네임 연산(Rename Operation)의 요청에 응답하여, 상기 리네임 연산의 수행에 의해 현수 디렉토리(Dangling Directory)가 발생하는지 여부를 검사하도록 구성되는 연산 관리기; 및
    상기 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 상기 리네임 연산이 수행되도록, 적어도 상기 메타데이터로 지시되는(Directed) 트랜잭션(Transaction)들을 처리하도록 구성되는 트랜잭션 처리기를 포함하되,
    상기 현수 디렉토리가 발생하는지 여부의 검사는 상기 트랜잭션들을 처리하기 위한 트랜잭션 구간 이전에 수행되고,
    상기 리네임 연산의 상기 요청은 상기 리네임 연산의 소스(Source)의 부모 디렉토리(Parent Directory)의 제 1 완전 경로(Full Path), 및 상기 리네임 연산의 타겟(Target)의 부모 디렉토리의 제 2 완전 경로에 관한 정보를 포함하고,
    상기 제 1 완전 경로는 루트 디렉토리(Root Directory)부터 상기 소스의 상기 부모 디렉토리까지의 완전 경로를 포함하고,
    상기 제 2 완전 경로는 상기 루트 디렉토리부터 상기 타겟의 상기 부모 디렉토리까지의 완전 경로를 포함하고, 그리고
    상기 연산 관리기는, 상기 현수 디렉토리가 발생하는지 여부를 검사하기 위해, 상기 제 2 완전 경로가 상기 제 1 완전 경로를 포함하는지 여부를 검사하도록 구성되는 서버 장치.
  7. 삭제
  8. 삭제
  9. 제 6 항에 있어서,
    상기 연산 관리기는, 상기 제 2 완전 경로가 상기 제 1 완전 경로를 포함하는지 여부를 검사하기 위해, 상기 제 2 완전 경로에 포함되는 부분 경로(Partial Path)가 상기 제 1 완전 경로와 동일한지 여부를 검사하도록 더 구성되고,
    상기 부분 경로는 상기 루트 디렉토리부터 기준 디렉토리까지의 디렉토리 경로에 대응하고,
    상기 기준 디렉토리는 상기 제 2 완전 경로 상에서 상기 루트 디렉토리부터 상기 타겟의 상기 부모 디렉토리까지 한 레벨의 디렉토리씩 하향(Downward)하여 변경되는 서버 장치.
  10. 제 6 항에 있어서,
    상기 제 2 완전 경로는 제 1 디렉토리, 및 상기 제 1 디렉토리의 자식인 제 2 디렉토리를 포함하고,
    상기 연산 관리기는, 상기 현수 디렉토리가 발생하는지 여부를 검사하는 동안, 상기 제 1 디렉토리의 하위 레벨에 상기 제 2 디렉토리가 실제로 존재하는지 여부를 검사하도록 더 구성되는 서버 장치.
  11. 제 10 항에 있어서,
    상기 연산 관리기는, 상기 제 1 디렉토리의 하위 레벨에 상기 제 2 디렉토리가 실제로 존재하는지 여부를 검사하기 위해, 상기 제 1 및 제 2 디렉토리들과 관련되는 메타데이터를 저장하는 다른 서버 장치와 통신하도록 더 구성되는 서버 장치.
  12. 제 6 항에 있어서,
    상기 연산 관리기는:
    상기 리네임 연산의 상기 요청에 응답하여, 리네임 배타적 잠금(Rename-exclusive Lock)을 설정하고;
    상기 트랜잭션들의 처리의 완료에 응답하여, 상기 리네임 배타적 잠금을 해제하도록 더 구성되는 서버 장치.
  13. 제 12 항에 있어서,
    상기 연산 관리기는 상기 리네임 배타적 잠금의 설정에 응답하여, 상기 리네임 연산 외의 다른 리네임 연산들의 처리를 보류하도록 더 구성되는 서버 장치.
  14. 서버 장치를 동작시키는 방법에 있어서,
    상기 서버 장치의 통신 장치를 통해, 리네임 연산(Rename Operation)의 제 1 요청을 수신하는 단계;
    상기 서버 장치의 프로세서에 의해, 상기 제 1 요청에 응답하여 리네임 배타적 잠금(Rename-exclusive Lock)을 설정하는 단계;
    상기 리네임 배타적 잠금을 설정한 후, 상기 프로세서에 의해, 상기 제 1 요청에 포함되는 정보에 기초하여, 상기 리네임 연산의 수행에 의해 현수 디렉토리(Dangling Directory)가 발생하는지 여부를 검사하는 단계;
    상기 현수 디렉토리가 발생하지 않는 것으로 판별되는 경우, 상기 프로세서에 의해, 상기 리네임 연산의 소스(Source) 및 타겟(Target)과 관련되는 제 1 잠금들을 획득하는 단계;
    상기 제 1 잠금들을 획득한 후, 상기 프로세서에 의해, 상기 소스 및 상기 타겟에 대해 상기 리네임 연산이 수행되도록, 상기 서버 장치에 저장된 메타데이터로 지시되는(Directed) 트랜잭션(Transaction)들을 처리하는 단계;
    상기 통신 장치를 통해, 리네임 연산과 상이한 유형의 연산의 제 2 요청을 수신하는 단계; 및
    상기 프로세서에 의해, 상기 상이한 유형의 연산과 관련되는 제 2 잠금들을 획득하는 단계를 포함하는 방법.
  15. 삭제
  16. 제 14 항에 있어서,
    상기 제 1 및 제 2 잠금들을 획득하는 단계에서, 부모 레벨의 디렉토리에 대한 잠금이 자식 레벨의 디렉토리에 대한 잠금을 획득하기 전에 획득되는 방법.
  17. 제 14 항에 있어서,
    상기 제 1 및 제 2 잠금들을 획득하는 단계에서, 제 1 디렉토리에 대한 잠금이 상기 제 1 디렉토리보다 늦게 생성된 제 2 디렉토리에 대한 잠금을 획득하기 전에 획득되는 방법.
  18. 제 14 항에 있어서,
    상기 통신 장치를 통해, 리네임 연산의 제 3 요청을 수신하는 단계;
    상기 프로세서에 의해, 상기 트랜잭션들의 처리의 완료에 응답하여 상기 리네임 배타적 잠금을 해제하는 단계; 및
    상기 리네임 배타적 잠금을 해제한 후, 상기 프로세서에 의해, 상기 제 3 요청과 관련되는 동작을 수행하는 단계를 더 포함하는 방법.
  19. 제 14 항에 있어서,
    상기 프로세서에 의해, 상기 트랜잭션들의 처리의 완료에 응답하여 상기 리네임 배타적 잠금을 해제하는 단계; 및
    상기 통신 장치를 통해, 상기 트랜잭션들의 처리의 결과를 출력하는 단계를 더 포함하는 방법.
KR1020170001564A 2016-10-07 2017-01-04 분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법 KR102162466B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/586,083 US10810165B2 (en) 2016-10-07 2017-05-03 Distributed storage server, server device included therein, and method of operating server device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160130107 2016-10-07
KR20160130107 2016-10-07

Publications (2)

Publication Number Publication Date
KR20180039542A KR20180039542A (ko) 2018-04-18
KR102162466B1 true KR102162466B1 (ko) 2020-10-08

Family

ID=62082916

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170001564A KR102162466B1 (ko) 2016-10-07 2017-01-04 분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법

Country Status (1)

Country Link
KR (1) KR102162466B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102622183B1 (ko) * 2018-06-08 2024-01-08 삼성에스디에스 주식회사 스토리지 관리 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120036161A1 (en) * 2002-11-01 2012-02-09 Bluearc Uk Limited Distributed File System and Method
US20150286657A1 (en) * 2008-04-28 2015-10-08 Vmware, Inc. Computer file system with path lookup tables
WO2016130167A1 (en) 2015-02-13 2016-08-18 Hewlett Packard Enterprise Development Lp Consistency check on namespace of an online file system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7433931B2 (en) * 2004-11-17 2008-10-07 Raytheon Company Scheduling in a high-performance computing (HPC) system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120036161A1 (en) * 2002-11-01 2012-02-09 Bluearc Uk Limited Distributed File System and Method
US20150286657A1 (en) * 2008-04-28 2015-10-08 Vmware, Inc. Computer file system with path lookup tables
WO2016130167A1 (en) 2015-02-13 2016-08-18 Hewlett Packard Enterprise Development Lp Consistency check on namespace of an online file system

Also Published As

Publication number Publication date
KR20180039542A (ko) 2018-04-18

Similar Documents

Publication Publication Date Title
CN107391628B (zh) 数据同步方法及装置
US20130218934A1 (en) Method for directory entries split and merge in distributed file system
KR20160124085A (ko) 저장 네트워크 내의 저장 관리
CN108509462B (zh) 一种同步活动事务表的方法及装置
US9176867B2 (en) Hybrid DRAM-SSD memory system for a distributed database node
US9501488B1 (en) Data migration using parallel log-structured file system middleware to overcome archive file system limitations
US9400767B2 (en) Subgraph-based distributed graph processing
US10516732B2 (en) Disconnected ingest in a distributed storage system
US10891119B2 (en) Integrating and sharing software build component targets
US10929100B2 (en) Mitigating causality discrepancies caused by stale versioning
WO2016117022A1 (ja) ログの管理方法及び計算機システム
Chen et al. Federation in cloud data management: Challenges and opportunities
CN111386521B (zh) 在数据库集群中重分布表数据
CN109145053B (zh) 数据处理方法和装置、客户端、服务器
CN111414228B (zh) 基于Kubernetes的管理存储空间的方法和相关装置
US10810165B2 (en) Distributed storage server, server device included therein, and method of operating server device
US10108624B1 (en) Concurrent directory move operations using ranking rules
KR102162466B1 (ko) 분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법
US9864643B1 (en) Using locks of different scopes in a data storage system to optimize performance and complexity
CN106557383B (zh) 一种数据恢复的方法及装置
US20130080481A1 (en) Extreme large space allocation
US10817510B1 (en) Systems and methods for navigating through a hierarchy of nodes stored in a database
US20110191549A1 (en) Data Array Manipulation
CN107102898B (zh) 一种基于numa架构的内存管理、构建数据结构的方法及装置
JP6333371B2 (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