KR101778907B1 - 분산 저장 시스템에서의 캐시 및 비-캐시 사용 - Google Patents

분산 저장 시스템에서의 캐시 및 비-캐시 사용 Download PDF

Info

Publication number
KR101778907B1
KR101778907B1 KR1020167012132A KR20167012132A KR101778907B1 KR 101778907 B1 KR101778907 B1 KR 101778907B1 KR 1020167012132 A KR1020167012132 A KR 1020167012132A KR 20167012132 A KR20167012132 A KR 20167012132A KR 101778907 B1 KR101778907 B1 KR 101778907B1
Authority
KR
South Korea
Prior art keywords
data
node
metadata
volatile
storage
Prior art date
Application number
KR1020167012132A
Other languages
English (en)
Other versions
KR20160068881A (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 인텔 코포레이션
Publication of KR20160068881A publication Critical patent/KR20160068881A/ko
Application granted granted Critical
Publication of KR101778907B1 publication Critical patent/KR101778907B1/ko

Links

Images

Classifications

    • G06F17/3048
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F17/30194
    • G06F17/30212
    • G06F17/30575
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

일 구성에 따르면, 데이터가 수신되면, 분산 저장 시스템의 각각의 노드는 수신된 데이터에 기초하여 메타데이터를 생성한다. 생성된 메타데이터는 수신된 데이터를 캐시 저장 리소스에 저장하는 것을 바이패스하고 수신된 데이터를 리포지토리의 비-캐시 저장 리소스에 저장할지 여부를 나타낸다. 데이터 저장 제어 로직은 메타데이터를 이용하여 수신된 데이터가 어떻게 저장되는지를 제어한다. 메타데이터의 상태는 수신된 데이터를 각각의 저장 노드와 연관된 대응하는 캐시 리소스에 저장하는 것을 막을 것을 나타낼 수 있다. 이와 같이, 생성된 메타데이터는 수신된 데이터를 캐시 저장 리소스에 저장할지 비-캐시 저장 리소스에 저장할지에 대한 안내를 대응하는 데이터 저장 제어 로직에 제공할 수 있다.

Description

분산 저장 시스템에서의 캐시 및 비-캐시 사용{CACHE AND NON-CACHE USAGE IN A DISTRIBUTED STORAGE SYSTEM}
일반적으로, 분산 저장 시스템은 대응하는 데이터를 저장하기 위한 다수의 전혀 다르게 위치하는 노드들을 포함할 수 있다. 전형적으로, 저장 노드들은 네트워크를 통해 서로 상호 연결된다. 저장 노드들 사이의 통신은 저장 노드들이 저장된 데이터를 집합적으로 관리할 수 있게 한다. 컴퓨터들은 하나 이상의 노드에 저장된 데이터를 검색하기 위해 분산 저장 시스템과 통신할 수 있다.
원한다면, 데이터의 백업 사본들이 분산 저장 시스템에 저장될 수 있다. 예를 들어, 분산 저장 시스템의 제1 저장 노드는 데이터의 주 사본을 저장하도록 구성될 수 있다. 분산 저장 시스템의 제2 저장 노드는 주 데이터의 백업 사본을 저장하도록 구성될 수 있다. 그 노드들 중 하나가 이용가능하지 않게 되면, 대응하는 데이터를 검색하기 위해 나머지 저장 노드에 액세스할 수 있다.
분산 저장 시스템들은 클라우드 인프라에서 저비용의 신뢰할 수 있는 데이터 저장을 제공하는 수단으로서 인기를 얻고 있다. 분산 저장 시스템들은 종종 소프트웨어로 구현되어 표준의 고성능 서버들에서 실행되고 데이터를 저장하기 위해 하드 디스크 드라이브와 같은 저렴한 회전 매체를 이용한다. 어떤 경우에는, 데이터를 저장하기 위해 회전 디스크를 포함하는 것 외에, 종래의 분산 저장 시스템의 저장 노드들은 또한 데이터를 저장하기 위해 (하나 이상의 솔리드-스테이트 메모리 디바이스와 같은) 캐시 리소스도 포함할 수 있다.
도 1은 본 명세서의 실시예들에 따른 분산 저장 시스템에서 수신된 데이터를 제1 노드에 저장하고 대응하는 복제본 데이터를 제2 노드에 저장하는 것을 예시하는 예시도이다.
도 2는 본 명세서의 실시예들에 따른 분산 저장 시스템에서 수신된 데이터를 제2 노드에 저장하고 대응하는 복제본 데이터를 제1 노드에 저장하는 것을 예시하는 예시도이다.
도 3은 본 명세서의 실시예들에 따른 분산 저장 시스템에서 상이한 노드들에 저장된 주 데이터와 백업 데이터를 추적하기 위해 맵 정보를 이용하는 것을 예시하는 예시도이다.
도 4는 본 명세서의 실시예들에 따른 맵 정보를 예시하는 예시도이다.
도 5는 본 명세서의 실시예들에 따른 분산 저장 시스템에서 노드 고장으로부터 복구하고 데이터를 복제하는 것을 예시하는 예시도이다.
도 6은 본 명세서의 실시예들에 따른 분산 저장 시스템에서 노드 고장으로부터 복구하고 데이터를 복제하는 것을 예시하는 예시도이다.
도 7은 본 명세서의 실시예들에 따른 분산 저장 시스템에 상이한 콘텐츠를 저장하는 것을 나타내는 업데이트된 맵 정보를 예시하는 예시도이다.
도 8은 본 명세서의 실시예들에 따른 하나 이상의 방법을 실행하기 위한 처리 아키텍처를 예시하는 예시도이다.
도 9는 본 명세서의 실시예들에 따른 방법을 예시하는 예시 순서도이다.
회전 디스크 드라이브 대신에 솔리드-스테이트 메모리 디바이스와 같은 캐시를 광범위하게 사용하는 한 가지 이유는 성능이다. 솔리드-스테이트 메모리(예를 들어, 하나 이상의 고정된 물리 회로 디바이스) 내의 데이터에 액세스하는 것은 디스크(예를 들어, 물리적으로 회전하는 저장 매체)에 저장된 데이터에 액세스하는 것보다 일반적으로 훨씬 더 빠르다. 데이터를 저장하기 위해 회전 디스크 드라이브 대신에 솔리드-스테이트 메모리를 사용하는 것의 불리한 면은 용량 비용이다. 즉, 솔리드 스테이트-드라이브가 더 빠른 액세스를 제공하기는 하지만, 대응하는 메모리 디바이스에 데이터를 저장하기 위한 비트당 비용은 디스크 드라이브에 데이터를 저장하기 위한 비트당 비용보다 상당히 더 높을 수 있다.
위에 논의된 바와 같이, 종래의 분산 저장 시스템의 각 노드는 데이터를 저장하기 위해 비휘발성 캐시 리소스 및 대응하는 디스크 드라이브 리소스 둘 다를 포함할 수 있다. 데이터를 저장할 때, 데이터를 수신하는 주 노드는 처음에 수신된 데이터의 사본을 주 노드의 대응하는 캐시 리소스에 저장할 수 있다. 데이터를 캐시에 저장하는 한 가지 이유는 그 데이터가 빈번하게 검색될 가능성이 많기 때문이다. 데이터를 캐시에 저장하는 또 다른 이유는 그 데이터가 가까운 미래에 검색될 가능성이 많기 때문이다.
주 노드는 데이터가 캐시로부터 제거되는 때를 결정하도록 구성될 수 있다. 데이터를 캐시로부터 제거하는 한 가지 이유는 데이터가 좀처럼 검색되지 않고, 더 빈번하게 검색될 데이터로 대체될 수 있기 때문이다. 데이터를 캐시로부터 제거하는 또 다른 이유는 데이터가 가까운 미래에 검색될 것으로 예상되지 않고, 가까운 미래에 검색될 가능성이 더 많은 데이터로 대체될 수 있기 때문이다. 주 노드가 캐시 리소스 내의 수신된 데이터의 사본이 캐시로부터 제거되어야 한다고 결정할 때, 주 노드는 캐시로부터 디스크 드라이브 리소스로 데이터의 전송을 개시할 수 있다. 전송 후에, 주 노드는 캐시 리소스 내의 수신된 데이터의 사본을 삭제하여 다른 데이터의 저장을 위해 캐시 리소스 내의 저장 셀들을 사용 가능하게 한다.
위에 논의된 바와 같이, 어떤 경우에는, 분산 저장 시스템의 제1 노드에 저장된 데이터의 복제본이 분산 저장 시스템의 제2 저장 노드에도 저장되는 것이 바람직하다. 이것은 중복성(redundancy)을 제공한다. 복제본 데이터의 저장은 다수의 저장 노드들 중 하나가 고장나는 상황들에서 종종 유용하다. 예를 들어, 제1 저장 노드가 대응하는 데이터에의 액세스를 방해하는 고장을 경험할 수 있다. 데이터의 복제본이 분산 저장 시스템의 제2 저장 노드에 저장되어 있기 때문에, 클라이언트 디바이스는 제2 저장 노드로부터 데이터의 복제본을 검색할 수 있다.
이 개시 내용은 종래의 분산 저장 시스템들이 캐시와 비-캐시 리소스들에 데이터를 효율적으로 저장하지 않는다는 관찰을 포함한다. 예를 들어, 분산 저장 시스템의 종래의 저장 로직은 수신된 데이터가 액세스될 가능성이 적음에도 불구하고 그 데이터를 캐시에 저장할 수 있다.
본 명세서에 논의된 바와 같이, 어떤 경우에는, 분산 저장 시스템의 제1 노드에 저장된 데이터의 복제본이 분산 저장 시스템의 제2 저장 노드에도 저장되는 것이 바람직하다. 이것은 중복성을 제공한다. 복제본 데이터의 저장은 다수의 저장 노드들 중 하나가 고장나는 상황들에서 종종 유용하다. 예를 들어, 제1 저장 노드가 대응하는 데이터에의 액세스를 방해하는 고장을 경험할 수 있다. 데이터의 복제본이 분산 저장 시스템의 제2 저장 노드에 저장되어 있기 때문에, 클라이언트 디바이스는 제2 저장 노드로부터 데이터의 복제본을 검색할 수 있다.
이 개시 내용은 종래의 분산 저장 시스템들이 캐시와 비-캐시 리소스들에 데이터를 효율적으로 저장하지 않는다는 관찰을 포함한다. 예를 들어, 분산 저장 시스템의 종래의 저장 로직은 수신된 데이터가 액세스될 가능성이 적음에도 불구하고 그 데이터를 캐시에 저장할 수 있다.
본 명세서의 실시예들은 분산 저장 시스템에서의 캐시 및 비-캐시 리소스들의 개선된 사용을 제공하는 것을 포함한다.
예를 들어, 본 명세서의 실시예들은 대응하는 데이터 저장을 집합적으로 관리하는 다수의 노드들을 포함하는 분산 저장 시스템을 포함한다. 분산 저장 시스템의 하나 이상의 노드들 각각은 데이터를 저장하기 위해 (비휘발성 메모리 저장 리소스와 같은) 캐시 리소스 및 (디스크 드라이브, 솔리드 스테이드-드라이브 등과 같은) 비휘발성 비-캐시 리소스 둘 다를 포함하도록 구성될 수 있다.
본 명세서에 논의된 바와 같이, 하나의 예시 실시예에서, 캐시 리소스에 저장된 데이터에 액세스하기 위한 액세스 시간은 비-캐시 리소스에 저장된 데이터에 액세스하기 위한 액세스 시간보다 실질적으로 더 빠르다.
종래의 기법들과 대조적으로, 저장을 위한 데이터를 수신하면, 분산 저장 시스템의 각각의 노드는 수신된 데이터에 기초하여 메타데이터를 생성한다. 메타데이터는 수신된 데이터를 캐시 저장 리소스에 저장하는 것을 바이패스(bypass)하고 수신된 데이터를 리포지토리의 비-캐시 저장 리소스에 저장할지 여부를 나타낼 수 있다. 본 명세서의 실시예들이 유용한 것은 대응하는 수신된 데이터를 캐시에 저장하는 것이 불필요하다고 생각될 경우 메타데이터가 해당 데이터를 캐시에 저장하는 것을 막을 것을 나타낼 수 있기 때문이다.
더 구체적인 실시예에서, 각각의 저장 노드의 데이터 저장 제어 로직은 (대응하는 수신된 데이터에 대해 생성된) 메타데이터를 이용하여 수신된 데이터가 어떻게 저장되는지를 제어한다. 예를 들어, 언급된 바와 같이, 메타데이터의 상태는 수신된 데이터를 각각의 저장 노드와 연관된 대응하는 캐시 리소스에 저장하는 것을 막을 것을 나타낼 수 있다. 그러한 경우에, 수신된 메타데이터에 따라, 데이터 저장 제어 로직은 수신된 데이터를 대응하는 저장 노드의 캐시 리소스에 저장하는 것과는 대조적으로 해당 데이터를 대응하는 비-캐시 리소스에 저장하는 것을 개시한다.
또 다른 실시예들에 따르면, 메타데이터는 각각의 저장 노드에 수신된 데이터의 사본이 분산 저장 시스템의 다른 위치에 이미 저장된 복제본 데이터인지를 나타낼 수 있다. 저장을 위한 데이터를 수신하는 각각의 노드는 수신된 데이터가 분산 저장 시스템의 다른 노드로부터 이용가능한 데이터의 복제본인지를 결정하도록 구성될 수 있다. 만약 그 데이터가 (예를 들어 그 데이터가 처음에 분산 저장 시스템에 저장될 때의 초기 복제로부터) 복제된 데이터 또는 (예를 들어 고장난 노드로부터 손실된 데이터가 다른 노드에 저장을 위해 복제될 때의) 재작성(rebuild)으로부터 복제된 데이터이면, 각각의 노드는 수신된 데이터가 비-캐시 리소스에 저장되어야 한다는 것을 나타내도록 대응하는 메타데이터를 생성한다.
이와 같이, 복제본 데이터의 다른 사본이 분산 저장 시스템의 상이한 노드로부터 이미 이용가능하기 때문에, 본 명세서의 어떤 실시예들은 비-캐시 리소스에 저장된 복제본 데이터가, 결코 액세스되지 않는 것은 아닐지라도, 자주 액세스되지 않을 가능성이 많으므로 복제본 데이터가 캐시에 저장되는 것을 막는 것을 포함할 수 있다. 언급된 바와 같이, 그러면 대응하는 캐시 리소스들 내의 더 많은 저장 셀들이 액세스될 가능성이 더 많은 다른 데이터를 저장하기 위해 사용될 수 있다.
이제, 더 구체적으로 도면들을 참조하면, 도 1은 본 명세서의 실시예들에 따른 분산 저장 시스템의 구현을 예시하는 예시도이다.
도시된 바와 같이, 네트워크 환경(100)은 컴퓨터 시스템(110-1), 컴퓨터 시스템(110-2), 등등을 포함한다. 컴퓨터 시스템들(110) 각각은 네트워크(190)를 통하여 분산 저장 시스템(115)에 액세스할 수 있다. 분산 저장 시스템(115) 내의 노드들은 컴퓨터 시스템들(110)을 대신하여 데이터를 저장한다. 네트워크(190)는 통신을 지원하는 임의의 적합한 하나 이상의 유형의 네트워크를 더 포함할 수 있다. 예를 들어, 네트워크(190)는 인터넷, 하나 이상의 근거리 네트워크, 하나 이상의 광역 네트워크, 셀룰러 폰 네트워크, WiFi™ 네트워크, 등등을 포함할 수 있다. 네트워크(190)를 통한 통신을 통해, 컴퓨터 시스템들(110)은 분산 저장 시스템(115)의 저장 노드들로부터 데이터를 검색하고 그 저장 노드들에 데이터를 저장하는 능력을 갖는다. 네트워크(190)를 통한 통신은 임의의 적합한 유형의 네트워크 통신 프로토콜에 기초할 수 있다. 예를 들어, 일 실시예에서, 통신은 HTTP(Hypertext Transfer Protocol), FTP(File Transfer Protocol), TCP(Transmission Control Protocol), UDP(User Datagram Protocol), 등등과 같은 하나 이상의 인터넷 프로토콜에 기초한다.
분산 저장 시스템(115)은 데이터의 저장을 관리하기 위해 임의의 적합한 수의 노드들을 포함한다. 이 예시 실시예에서는, 도시된 바와 같이, 분산 저장 시스템(115)은 저장 노드(121), 저장 노드(122), 저장 노드(123), 등등을 포함한다. 일 실시예에서, 분산 저장 시스템(115)의 저장 노드들 각각은 네트워크(190)와 같은 적합한 링크를 통하여 서로 통신할 수 있다.
비제한적인 예로서, 분산 저장 시스템(115)의 노드들 각각은 대응하는 데이터의 리포지토리로의 액세스를 제공하도록 구성될 수 있다. 이 예시 실시예에서는, 도시된 바와 같이, 노드(121)는 데이터 저장 제어 로직(131)과의 통신을 통해 리포지토리(191)로의 읽기/쓰기 액세스를 가지며; 노드(122)는 데이터 저장 제어 로직(132)과의 통신을 통해 리포지토리(192)로의 읽기/쓰기 액세스를 가지며; 노드(123)는 데이터 저장 제어 로직(133)과의 통신을 통해 리포지토리(193)로의 읽기/쓰기 액세스를 가지며; 기타 등등이다.
일 실시예에서, 분산 저장 시스템(115)의 노드들 각각은 본 명세서에 논의된 바와 같은 동작들을 수행하는 대응하는 컴퓨터 프로세서 하드웨어 또는 소프트웨어를 나타낸다. 각 노드와 연관된 대응하는 데이터 저장 제어 로직(하드웨어 또는 소프트웨어)은 같은 위치에 위치하고 해당 노드에 의해 실행될 수 있다. 다르게는, 대응하는 데이터 저장 제어 로직은 해당 노드에 대하여 원격 위치에 배치된 컴퓨터 처리 하드웨어에서 실행되거나 그러한 컴퓨터 처리 하드웨어에 상주할 수 있다. 이와 같이, 노드(121) 및 대응하는 데이터 저장 제어 로직(131)은 같은 곳에 위치하거나 전혀 다르게 위치할 수 있고; 노드(122) 및 대응하는 데이터 저장 제어 로직(132)은 같은 곳에 위치하거나 전혀 다르게 위치할 수 있고; 기타 등등이다.
또한 도시된 바와 같이, 각 노드와 연관된 저장 리소스들은 캐시 저장 리소스들 및 비-캐시 저장 리소스들을 포함할 수 있다. 예를 들어, 리포지토리(191)는 캐시 저장 리소스(181-1) 및 비-캐시 저장 리소스(181-2)를 포함하고; 리포지토리(192)는 캐시 저장 리소스(182-1) 및 비-캐시 저장 리소스(182-2)를 포함하고; 리포지토리(193)는 캐시 저장 리소스(183-1) 및 비-캐시 저장 리소스(183-2)를 포함하고; 기타 등등이다. 본 명세서에 논의된 바와 같이, 일 실시예에서, 캐시 저장 리소스들 및 비-캐시 저장 리소스들 각각은 비휘발성 저장 리소스들이다.
다른 실시예들에 따르면, 각각의 비휘발성 캐시 리소스의 데이터 액세스 기간은 각각의 비휘발성 비-캐시 리소스의 데이터 액세스 시간보다 실질적으로 더 짧을 수 있다. 예를 들어, 캐시 저장 리소스(181-1)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간은 비-캐시 저장 리소스(181-2)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간보다 실질적으로 더 짧을 수 있고; 캐시 저장 리소스(182-1)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간은 비-캐시 저장 리소스(182-2)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간보다 실질적으로 더 짧을 수 있고; 캐시 저장 리소스(183-1)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간은 비-캐시 저장 리소스(183-2)로부터 데이터를 읽거나 그것에 데이터를 쓰기 위한 액세스 시간보다 실질적으로 더 짧을 수 있고; 기타 등등이다.
또한 비제한적인 예로서, 분산 저장 시스템(115)의 캐시 저장 리소스들 각각은 데이터를 저장하기 위해 하나 이상의 비휘발성 유형 메모리 디바이스를 포함하는 솔리드-스테이트 드라이브를 나타낼 수 있다. 더 구체적인 예로서, (캐시 저장 리소스(181-1), 캐시 저장 리소스(182-1), 캐시 저장 리소스(183-1), 등등과 같은) 캐시 저장 리소스들 각각은 상변화 메모리(PCM), 3차원 크로스 포인트 메모리, 저항성 메모리, 나노와이어 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), NAND 플래시 또는 NOR 플래시와 같은 플래시 메모리, 자기저항 랜덤 액세스 메모리(MRAM), 멤리스터(memristor) 기술을 통합하는 메모리, 스핀 전달 토크(STT)-MRAM, 또는 데이터의 저장을 가능하게 하는 임의의 적합한 유형의 비휘발성 메모리와 같은 하나 이상의 비휘발성 유형 메모리 디바이스이거나 이를 포함할 수 있다.
분산 저장 시스템(115)의 상이한 노드들에 있는 (비-캐시 저장 리소스(181-2), 비-캐시 저장 리소스(182-2), 비-캐시 저장 리소스(183-2), 등등과 같은) 비-캐시 저장 리소스들 각각은 대응하는 데이터를 저장하기 위해 저장 셀들의 하나 이상의 회전 디스크를 포함하는 디스크 드라이브 저장 리소스일 수 있다.
이 예시 실시예에서 컴퓨터 시스템(110-1)이 도시된 바와 같은 분산 저장 시스템(115)에 (이미지 데이터, 애플리케이션 데이터, 문서, 등등과 같은) 데이터 A의 저장을 개시하기 위해 노드(121)와 통신한다고 가정한다. 이 목적을 달성하기 위해, 컴퓨터 시스템(110-1)은 데이터 A를 저장을 위해 네트워크(190)를 통하여 노드(121)에 송신한다. 도시된 바와 같이, 저장 노드(121)는 데이터 A를 수신한다.
리포지토리(191)에 저장을 위한 데이터 A를 수신하는 것에 응답하여, 노드(121)는 데이터 A와 연관된 메타데이터 M1을 생성한다. 메타데이터 M1은 데이터 A의 저장에 관한 안내를 제공하기 위한 임의의 적합한 수의 비트의 정보이거나 이를 포함할 수 있다.
이 예시 실시예에서, 노드(121)는, 데이터가 분산 저장 시스템(115)에 저장을 위해 컴퓨터 시스템(110-1)로부터 새로 수신된 데이터이기 때문에, 데이터 A가 복제본 데이터(즉, 분산 저장 시스템(115)에 이미 저장된 데이터)가 아니라는 것을 안다고 가정한다. 필요하다면, 노드(121)는 다른 노드들과 통신하여 데이터의 사본이 각각의 노드에 이미 저장되어 있는지를 결정할 수 있다. 노드(121)는 데이터 A가 분산 저장 시스템(115)의 다른 곳에 저장된 복제본 데이터가 아니라는 것을 반영하도록 메타데이터 M1을 생성한다.
도시된 바와 같이, 대응하는 데이터 A를 리포지토리(191)에 저장하는 것을 촉진하기 위해, 노드(121)는 네트워크(190)와 같은 적합한 통신 링크를 통하여 통신하여 데이터 A의 사본과 메타데이터 M1을 데이터 저장 제어 로직(131)에 전달한다. 이런 식으로, 노드(121)는 수신된 데이터 A 및 대응하여 생성된 메타데이터 M1에 대한 통지를 데이터 저장 제어 로직(131)에 제공한다.
일 실시예에서, 메타데이터 M1은, 수신된 데이터 A를 리포지토리(191)에 저장하기 위한 안내를 제공하는, 제어 정보, 라벨 정보, 등등이다. 비제한적인 예로서, 메타데이터 M1은 데이터 A가 캐시 저장 리소스(181-1)에 저장될 자격이 있다는 것을 나타내는 논리 0으로 설정된 단일 비트일 수 있다.
또한 이 예시 실시예에서, 데이터 저장 제어 로직(131)은 데이터 A의 사본과 대응하는 메타데이터 M1을 수신한다. 이 예에서, 메타데이터 M1은 데이터 A를 캐시 저장 리소스(181-1)에 저장하는 것을 막을 것을 나타내지 않기 때문에, 데이터 저장 제어 로직(131)은 데이터 A를 캐시 저장 리소스(181-1)에 저장하는 것을 개시한다고 가정한다.
데이터 A를 리포지토리(191)에 저장하는 것을 개시하는 것 외에, 노드(121)는 복제본 A'를 생성하고 이를 노드(122)에 전달한다. 이 예에서, 복제본 A'는 캐시 저장 리소스(181-1)에 저장된 데이터 A의 백업 사본을 나타낸다. 복제본 A'를 (노드(122)와 같은) 다른 노드에 저장하는 것은 노드(121)와 연관된 고장이 있고 대응하는 데이터 A가 대응하는 리포지토리(191)로부터 검색될 수 없는 경우에 유용하다.
노드(122)는 복제본 A'를 수신하고 대응하여 이 수신된 데이터를 리포지토리(192)에 저장하는 것을 개시한다. 수신된 데이터(복제본 A')는 노드(122)가 데이터의 백업 사본이라는 것을 알기 때문에(그것은 노드(121)로부터 복제본 데이터로서 수신되었거나 노드(121)가 그것을 나타내는 메시지를 전송하기 때문에), 노드(122)는 복제본 A'를 캐시 저장 리소스(182-1)에 저장하는 것을 막기 위해 메타데이터 M2를 생성한다. 더 구체적으로, 복제본 데이터 A'의 사본(A)이 분산 저장 시스템(115)의 (노드(121)와 같은) 노드로부터 이용가능함을 검출하는 것에 응답하여, 노드(122)는 데이터 저장 제어 로직(132)에게 수신된 데이터 A'를 캐시 저장 리소스(182-1)에 저장하는 것을 바이패스하고 대신에 수신된 복제본 데이터 A'를 비-캐시 저장 리소스에 저장할 것을 나타내도록 메타데이터 M2를 생성한다.
비제한적인 다른 예로서, 메타데이터 M2는 저장 노드(122)에 수신된 복제본 데이터 A'가 캐시 저장 리소스(181-1)에 저장되어서는 안 된다는 것을 나타내는 논리 1로 설정된 단일 비트일 수 있다. 이와 같이, 위에 언급된 바와 같이, 노드(122)에 의해 생성된 메타데이터는, 대응하는 데이터를 어떻게 저장할지에 대한 안내를 제공하는, 상태 정보, 라벨, 태그, 제어 정보, 등등의 역할을 할 수 있다.
저장을 완료하기 위해, 노드(122)는 A' 및 대응하는 메타데이터 M2를 데이터 저장 제어 로직(132)에 전달한다. 데이터 저장 제어 로직(132)은 복제본 A'와 연관된 메타데이터 M2를 분석한다. 메타데이터 M2는 복제본 A'를 캐시 저장 리소스에 저장하는 것을 막을 것을 나타내기 때문에, 데이터 저장 제어 로직(132)은 복제본 A'를 비-캐시 저장 리소스(182-2)에 저장하는 것을 개시한다.
이와 같이, 데이터의 저장을 제어하기 위해 대응하는 메타데이터를 생성하는 것을 통해, 캐시 저장 리소스(182-1)의 저장 셀들은, (주 사본과 같은) 데이터 A가노드(121)와의 통신 및 캐시 저장 리소스(181-1)로부터의 데이터의 검색을 통해 컴퓨터 시스템(110-1)에 이용가능하므로, 결코 액세스되지 않는 것은 아닐지라도, 매우 자주 액세스될 가능성이 많지 않은, 복제본 데이터 A'를 저장하기 위해 불필요하게 낭비되지 않는다.
도 2는 본 명세서의 실시예들에 따른 분산 저장 시스템에서 수신된 데이터를 제2 노드에 저장하고 대응하는 복제본 데이터를 제1 노드에 저장하는 것을 예시하는 예시도이다.
이 예시 실시예에서 컴퓨터 시스템(110-2)이 도시된 바와 같이 분산 저장 시스템(115)에 (이미지 데이터, 애플리케이션 데이터, 문서 데이터, 등등과 같은) 데이터 B의 저장을 개시하기 위해 노드(122)와 통신한다고 가정한다. 이 목적을 달성하기 위해, 컴퓨터 시스템(110-2)은 저장을 위해 데이터 B를 네트워크(190)를 통하여 노드(122)에 송신한다.
저장 노드(122)는 데이터 B를 수신한다. 저장을 위한 데이터 B를 수신하는 것에 응답하여, 노드(121)는 데이터 B와 연관된 메타데이터 M3을 생성한다. 메타데이터 M3은 임의의 적합한 수의 비트의 정보이거나 이를 포함할 수 있다. 생성된 메타데이터 M3은 데이터 B의 저장에 관한 안내를 제공한다.
이 예시 실시예에서, 노드(122)는, 데이터 B가 분산 저장 시스템(115)에 데이터를 저장하기 위한 새로운 요청으로서 수신되기 때문에, 데이터 B가 복제본 데이터가 아니라는 것(즉, 그것이 분산 저장 시스템(115)에 이미 저장된 데이터가 아니라는 것)을 안다고 가정한다. 메타데이터를 생성할 때, 노드(122)는 데이터 B가 분산 저장 시스템(115)의 다른 곳에 저장된 복제본 데이터가 아니라는 것을 반영하도록 메타데이터 M3을 생성한다. 데이터 B는 복제본 데이터가 아니기 때문에, 데이터 B는 캐시 저장 리소스(182-1)에 저장될 자격이 있다.
도시된 바와 같이, 대응하는 데이터 B를 노드(122)에 저장하는 것을 촉진하기 위해, 노드(122)는 데이터 B의 사본과 대응하여 생성된 메타데이터 M3를 데이터 저장 제어 로직(132)에 전달한다. 이런 식으로, 노드(122)는 수신된 데이터 B와 메타데이터 M3의 통지를 데이터 저장 제어 로직(132)에 제공한다.
일 실시예에서, 메타데이터 M3은, 수신된 데이터 B를 리포지토리(192)에 저장하기 위한 안내를 제공하는 제어 정보이다. 비제한적인 예로서, 메타데이터 M3은 데이터 B가 캐시 저장 리소스(182-1)에 저장될 자격이 있다는 것을 나타내는 논리 0으로 설정된 단일 비트일 수 있다.
또한 이 예시 실시예에서, 데이터 저장 제어 로직(132)은 데이터 B의 사본과 대응하는 메타데이터 M3을 수신한다. 메타데이터 M3은 데이터 B를 캐시 저장 리소스(182-1)에 저장하는 것을 막을 것을 나타내지 않기 때문에, 데이터 저장 제어 로직(132)은 데이터 B를 캐시 저장 리소스(182-1)에 저장하는 것을 개시한다고 가정한다.
데이터 B를 리포지토리(192)에 저장하는 것을 개시하는 것 외에, 노드(122)는 복제본 B'(데이터 B의 사본)를 생성하고 이를 노드(121)에 전달한다. 이 예에서, 복제본 B'는 캐시 저장 리소스(182-1)에 저장된 데이터 B의 백업 사본을 나타낸다. 복제본 B'(즉, 데이터 B의 사본)를 (노드(121)와 같은) 다른 노드에 저장하는 것은 노드(122)와 연관된 고장이 있고 대응하는 데이터 B가 노드(122)의 리포지토리(192)로부터 검색될 수 없는 경우에 유용하다.
노드(121)는 복제본 B'를 수신하고 대응하여 이 수신된 데이터를 리포지토리(192)에 저장하는 것을 개시한다. 수신된 데이터(복제본 B')는 노드(121)가 데이터의 백업 사본이라는 것을 알기 때문에(그것은 노드(122)로부터 복제본 데이터로서 수신되었기 때문에), 노드(121)는 복제본 B'를 리포지토리(191)의 캐시 저장 리소스(181-1)에 저장하는 것을 막기 위해 메타데이터 M4를 생성한다.
일 실시예에서, 복제본 데이터 B'의 사본이 분산 저장 시스템(115)의 (노드(122)와 같은) 노드로부터 이용가능함을 검출하는 것에 응답하여, 노드(121)는 데이터 저장 제어 로직(131)에게 수신된 데이터 B'를 캐시 저장 리소스(181-1)에 저장하는 것을 바이패스하고 대신에 수신된 복제본 데이터 B'를 리포지토리(191)의 비-캐시 저장 리소스(181-2)에 저장할 것을 나타내도록 메타데이터 M4를 생성한다.
앞서 논의된 바와 같이, 생성된 메타데이터 M4는 복제본 데이터 B'가 캐시 저장 리소스(181-1)에 저장되어서는 안 된다는 것을 나타내는 논리 1로 설정된 단일 비트일 수 있다. 이와 같이, 노드(121)에 의해 생성된 메타데이터는, 대응하는 데이터 B'를 어떻게 저장할지에 대한 안내를 제공하는, 상태 정보, 라벨, 태그, 제어 정보, 등등의 역할을 할 수 있다.
또한 이 예시 실시예에서, 저장을 완료하기 위해, 노드(121)는 데이터 B' 및 대응하는 메타데이터 M4를 데이터 저장 제어 로직(131)에 전달한다. 데이터 저장 제어 로직(131)은 복제본 데이터 B'와 연관된 메타데이터 M4를 분석한다. 이 예에서 메타데이터 M4는 복제본 B'를 캐시 저장 리소스에 저장하는 것을 막을 것을 나타내기 때문에(그것이 복제본 데이터인 것으로 검출되었기 때문에), 데이터 저장 제어 로직(131)은 복제본 B'를 비-캐시 저장 리소스(181-2)에 저장하는 것을 개시한다.
이와 같이, 데이터의 저장을 제어하기 위해 대응하는 메타데이터 M4를 생성하는 것을 통해, 캐시 저장 리소스(181-1)의 저장 셀들은, (주 사본과 같은) 데이터 B가 노드(122)와의 통신 및 캐시 저장 리소스(182-1)로부터의 데이터 B의 검색을 통해 컴퓨터 시스템(110-2)(또는 잠재적으로 다른 컴퓨터들)이에 이용가능하므로, 결코 액세스되지 않는 것은 아닐지라도, 매우 자주 액세스될 가능성이 많지 않은, 복제본 데이터 B'를 저장하기 위해 불필요하게 낭비되지 않는다.
도 3은 본 명세서의 실시예들에 따른 분산 저장 시스템에서 상이한 노드들에 저장된 주 콘텐츠와 백업 콘텐츠를 추적하기 위해 맵 정보를 이용하는 것을 예시하는 예시도이다.
도시된 바와 같이, 컴퓨터 시스템(110-1)(또는 다른 적합한 리소스)은 대응하는 데이터가 이용가능한 분산 저장 시스템(115)의 대응하는 노드들을 나타내는 맵 정보(112-1)를 생성하도록 구성될 수 있다.
예를 들어, 앞서 논의된 바와 같이, 컴퓨터 시스템(110-1)은 데이터 A를 분산 저장 시스템(115)에 저장하는 것을 개시하였다. 분산 저장 시스템(115)의 적절한 노드(121)는, 데이터 저장 요청을 수신하는 것에 응답하여, 대응하는 데이터 A를 저장하였다. 그러한 프로세스 중에, 분산 저장 시스템(115)의 노드(121)와 같은 적절한 리소스(또는 중앙 관리자와 같은 다른 적합한 리소스)는, 컴퓨터 시스템(110-1)에게, 데이터의 주 사본(즉, 데이터 A)이 이용가능한 위치를 나타내는 (네트워크 주소 정보와 같은) 노드 정보를 전달하도록 구성될 수 있다. 이 예에서, 데이터 A가 노드(121)에 저장되어 있다는 통지를 수신하는 것에 기초하여, 맵 정보(112-1)는 데이터 A가 노드(121)로부터의 검색에 대해 이용가능하다는 것을 나타낸다.
일 구성에 따르면, 컴퓨터 시스템(110-1)은 또한 대응하는 데이터의 백업 사본이 분산 저장 시스템(115)의 어디에 저장되어 있는지를 나타내는 노드 정보를 수신할 수 있다. 예를 들어, 노드(122)가 리포지토리(192)에 복제본 A'(즉, 데이터 A의 사본)을 저장한다는 것을 상기한다. 그러한 경우에, 컴퓨터 시스템(110-1)은 분산 저장 시스템(115)의 노드(122)(또는 중앙 관리자와 같은 다른 적합한 리소스)와의 통신을 통해 데이터 A'가 이용가능하다는 통지를 받을 수 있다.
일 실시예에서, 컴퓨터 시스템(110-1)은 데이터 A'가 검색에 대해 이용가능한 노드(122)에 대한 대응하는 네트워크 주소 또는 포인터를 포함하도록 맵 정보(112-1)를 생성한다.
컴퓨터 시스템(110-2)(또는 다른 적합한 리소스)은 대응하는 데이터가 이용가능한 분산 저장 시스템(115)의 대응하는 노드들을 나타내는 맵 정보(112-2)를 생성하도록 구성될 수 있다. 예를 들어, 앞서 논의된 바와 같이, 컴퓨터 시스템(110-2)은 데이터 B를 분산 저장 시스템(115)에 저장하는 것을 개시하였다. 분산 저장 시스템(115)의 적절한 노드(122)는, 데이터 저장 요청을 수신하는 것에 응답하여, 대응하는 데이터 B를 저장하였다. 그러한 프로세스 중에, 분산 저장 시스템(115)의 노드(122)와 같은 적절한 리소스(또는 중앙 관리자와 같은 다른 적합한 리소스)는, 컴퓨터 시스템(110-2)에게, 데이터의 주 사본(즉, 데이터 B)이 이용가능한 위치를 나타내는 노드 정보를 전달한다. 이 예에서, 데이터 B가 노드(122)에 저장되어 있다는 통지를 수신하는 것에 기초하여, 컴퓨터 시스템(110-2)은 데이터 B가 노드(122)로부터의 검색에 대해 이용가능하다는 것을 나타내도록 맵 정보(112-2)를 생성한다.
일 구성에 따르면, 컴퓨터 시스템(110-2)은 또한 대응하는 데이터의 백업 사본 B'이 분산 저장 시스템(115)의 어디에 저장되어 있는지를 나타내는 노드 정보를 수신한다. 예를 들어, 노드(121)가 리포지토리(192)에 복제본 B'(즉, 데이터 B의 사본)을 저장한다는 것을 상기한다. 그러한 경우에, 컴퓨터 시스템(110-2)은 분산 저장 시스템(115)의 노드(121)와의 통신을 통해 데이터 B'가 이용가능하다는 통지를 받을 수 있다. 일 실시예에서, 컴퓨터 시스템(110-2)은 데이터 B'가 검색에 대해 이용가능한 노드(121)를 지정하는, 네트워크 주소, 포인터, 등등과 같은 리소스를 포함하도록 맵 정보(112-2)를 생성한다.
또 다른 비제한적인 예시 실시예들에 따르면, 분산 저장 시스템(115)의 하나 이상의 노드 또는 중앙 관리자와 같은 리소스는 서로 통신하고 상이한 콘텐츠 및 대응하는 콘텐츠가 저장되어 있는 곳을 나타내는 맵 정보(117)를 생성하도록 구성될 수 있다. 대응하는 맵 정보(117)의 일례가 도 4에 도시되어 있다.
도 4에 도시된 바와 같이, 이 예시 실시예에서, 맵 정보(117)는 데이터 A는 노드(121)와의 통신을 통해 이용가능하다는 것을 나타내고; 맵 정보(117)는 복제본 데이터 A'는 노드(122)와의 통신을 통해 이용가능하다는 것을 나타내고; 맵 정보(117)는 데이터 B는 노드(122)와의 통신을 통해 이용가능하다는 것을 나타내고; 맵 정보(117)는 복제본 데이터 B'는 노드(122)와의 통신을 통해 이용가능하다는 것을 나타내고; 기타 등등이다.
맵 정보(112-1), 맵 정보(112-2), 등등과 같은 맵 정보는 주 콘텐츠 및 백업 콘텐츠의 위치를 결정하는 데 유용하다. 예를 들어, 각각의 컴퓨터 시스템이 타임아웃 기간 내에 제1 노드로부터 콘텐츠를 검색하지 못한다면, 대응하는 컴퓨터 시스템은 대신에 백업 사본을 검색하기 위해 제2 노드와 통신하도록 구성될 수 있다.
더 구체적으로, 컴퓨터 시스템(110-1)은 노드(121)로부터 데이터 A를 검색하려고 한다고 가정한다. 2초(다른 적합한 액세스 관리자 시간)과 같은 타임아웃 내에 노드(121)로부터 응답이 없다면, 컴퓨터 시스템(110-1)은 백업 사본 A'를 검색하기 위해 (맵 정보(112-1)에 의해 지정된 바와 같이) 노드(122)와의 통신을 개시한다. 이런 식으로, 컴퓨터 시스템은 대응하는 데이터의 위치를 식별하기 위해 맵 정보(112)를 이용할 수 있다.
아래 논의된 바와 같이, 저장된 콘텐츠에 대한 맵 정보(117)는 손실된 데이터의 복구를 필요로 하는 분산 저장 시스템(115)의 노드 고장의 경우에 유용할 수 있다는 점에 유의한다.
도 5는 본 명세서의 실시예들에 따른 분산 저장 시스템에서 노드 고장으로부터 복구하고 데이터를 복제하는 것을 예시하는 예시도이다.
이 예시 실시예에서, 노드(122) 또는 데이터 저장 제어 로직(132), 리포지토리(192)의 저장 셀들, 등등과 같은 관련 구성요소들이 고장난다고 가정한다.
노드(122)와 연관된 고장은 노드(122)가 네트워크(190)를 통하여 컴퓨터 시스템(110)에 의해 액세스될 수 없는 것, 데이터 저장 제어 로직(132)이 리포지토리(192)에 저장된 대응하는 데이터를 검색할 수 없는 것, 데이터를 저장하는 리포지토리(192)의 저장된 셀들의 고장, 등등을 야기할 수 있다.
노드(122)와 연관된 고장은 임의의 수의 방법으로 검출될 수 있다. 예를 들어, 분산 저장 시스템(115)의 하나 이상의 노드는 그들의 상태를 결정하기 위해 다른 노드들과 (예를 들어 심박동(heartbeat) 신호들을 통해) 통신하도록 구성될 수 있다. 노드(122)와 같은 노드가 통신에 응답하지 않는다면, 노드 고장이 있었고 리포지토리(192)에 저장된 대응하는 데이터가 검색에 대해 이용가능하지 않다고 추정될 수 있다.
고장이 검출되면, 분산 저장 시스템(115)의 노드들은 리포지토리(192)에서 이용가능하지 않은 데이터를 다른 노드들에 복제하기 위해 서로 통신한다.
더 구체적으로, 이 예시 실시예에서, 노드(122)와 연관된 고장은 캐시 저장 리소스(182-2)에 저장된 데이터 A'로의 액세스를 막는다. 앞서 논의된 바와 같은 맵 정보(117)에 기초하여, 노드(121)와 연관된 캐시 저장 리소스(181-1)가 데이터 A의 사본을 저장하고 있다는 것이 알려진다.
데이터 A의 백업 사본이 분산 저장 시스템(115)에 저장되는 것을 보장하기 위해, 노드(121)는, 노드(122)와 연관된 고장을 검출하는 것에 응답하여, 데이터 저장 제어 로직(131)과의 통신을 통해 캐시 저장 리소스(181-1)로부터 데이터 A의 사본을 검색하는 것을 개시한다.
데이터 A의 사본을 검색한 후에, 데이터 저장 제어 로직(131)은 복제본 데이터 A"를 생성한다. 노드(121)는 복제본 A"(즉, 데이터 A의 사본)을 노드(123)에 도시된 바와 같이 노드(123)에 전달한다. 이와 같이, 노드(123)에 의해 수신된 데이터 A"는 분산 저장 시스템(115)의 고장난 노드(122)에 저장된 이용가능하지 않은 데이터 A'의 복제본을 나타낸다.
노드(121)(또는 분산 저장 시스템(115)과 연관된 다른 적합한 리소스)는 노드(123)에게 데이터 A"가 저장된 데이터의 사본임을 알린다. 노드(123)는, 노드(121)로부터 수신된 데이터 A"가 재작성 데이터(즉, 고장난 노드(122)와 연관된 리포지토리(192)에 저장된 데이터 A'의 사본)임을 검출하는 것에 응답하여, 데이터 저장 제어 로직(133)에게 수신된 데이터 A"를 캐시 저장 리소스(183-1)에 저장하는 것을 바이패스하고 수신된 데이터 A"를 리포지토리(193)의 비-캐시 저장 리소스(183-2)에 저장할 것을 나타내도록 메타데이터 M5를 생성한다.
따라서, 본 명세서의 실시예들은 고장나지 않은 노드(121)의 캐시 저장 리소스(181-1)에 저장된 데이터 A에 기초하여 고장난 노드에 저장된 데이터 A'의 사본(즉, 데이터 A")을 생성하고 데이터 A"를 리포지토리(193)의 비-캐시 저장 리소스(183-2)에 저장하는 것을 개시하는 것을 포함할 수 있다.
도 6은 본 명세서의 실시예들에 따른 분산 저장 시스템에서 노드 고장으로부터 복구하고 데이터를 복제하는 것을 예시하는 예시도이다.
이 예시 실시예에서, 노드(122)와 연관된 고장은 또한 캐시 저장 리소스(182-1)에 저장된 데이터 B로의 액세스를 막는다. 앞서 논의된 바와 같은 맵 정보(117)에 기초하여, 노드(121)와 연관된 비-캐시 저장 리소스(181-2)가 데이터 B'를 저장하고 있다는 것이 알려진다. 데이터 B의 백업 사본이 분산 저장 시스템(115)에 저장되는 것을 보장하기 위해, 본 명세서의 실시예들은, 노드(121)가, 노드(122)와 연관된 고장을 검출하는 것에 응답하여, 데이터 저장 제어 로직(131)과의 통신을 통해 캐시 저장 리소스(181-1)로부터 복제본 데이터 B'의 사본을 검색하는 것을 개시하는 것을 포함한다.
이 예에서, 분산 저장 시스템(115)의 노드들 중 노드(124)가 데이터 B와 연관된 백업 사본을 생성하고 저장하도록 (중앙 관리자 또는 다른 노드와 같은 리소스에 의해) 선택되었다고 가정한다. 그러한 경우에, 노드(121)는 복제본 B"(즉, 원본 데이터 B의 사본)을 도시된 바와 같이 노드(124)에 전달한다. 노드(124)에 의해 수신된 데이터 B"는 고장난 노드(122)에 저장된 데이터 B의 복제본을 나타낸다.
노드(124)는, 수신된 데이터 B"가 고장난 노드(122)와 연관된 리포지토리(192)에 저장된 데이터 B의 사본임을 검출하는 것에 응답하여, 데이터 저장 제어 로직(134)에게 수신된 데이터 B"를 캐시 저장 리소스(184-1)에 저장하는 것을 바이패스하고 수신된 데이터 B"를 리포지토리(194)의 비-캐시 저장 리소스(184-2)와 같은 비-캐시 저장 리소스에 저장할 것을 나타내도록 메타데이터 M6를 생성한다.
따라서, 본 명세서의 실시예들은 고장나지 않은 노드(121)의 비-캐시 저장 리소스(181-2)에 저장된 데이터 B'에 기초하여 고장난 노드에 저장된 데이터 B의 사본(즉, 데이터 B")을 생성하는 것을 포함할 수 있다.
위에 논의된 바와 같은 복구 후에, 본 명세서의 실시예들은 분산 저장 시스템(115)에 저장된 콘텐츠의 현재 상태를 반영하도록 각각의 맵 정보를 업데이트하는 것을 포함할 수 있다. 예를 들어, 분산 저장 시스템(115)과 연관된 (노드 또는 중앙 관리자와 같은) 각각의 리소스는, 데이터 A가 노드(121)로부터 이용가능하고, 백업 데이터 A"가 이제 노드(123)로부터 이용가능하고, 기타 등등을 나타내도록 맵 정보(112-1)를 업데이트하기 위해 컴퓨터 시스템(110-1)과 통신하도록 구성될 수 있다.
유사한 방식으로, 분산 저장 시스템(115)과 연관된 (노드 또는 중앙 관리자와 같은) 각각의 리소스는 데이터 B'를 노드(121)로부터 이용가능하고, 백업 데이터 B"를 이제 노드(124)로부터 이용가능하고, 기타 등등을 나타내도록 맵 정보(112-2)를 업데이트하기 위해 컴퓨터 시스템(110-2)과 통신하도록 구성될 수 있다.
도 7은 본 명세서의 실시예들에 따른 분산 저장 시스템에 상이한 콘텐츠를 저장하는 것을 나타내는 업데이트된 맵 정보를 예시하는 예시도이다.
또 다른 비제한적인 예시 실시예들에 따르면, 분산 저장 시스템(115)의 하나 이상의 노드 또는 중앙 관리자는 고장으로 인한 재작성 후에 저장된 데이터의 상태를 나타내도록 맵 정보(117)를 업데이트하도록 구성될 수 있다.
도 7에 도시된 바와 같이, 업데이트된 맵 정보(117)는 데이터 A가 노드(121)를 통해 액세스 가능하다는 것을 나타내고; 업데이트된 맵 정보(117)는 (복구 또는 재작성으로부터의) 복제 데이터 A"가 노드(122)를 통해 액세스 가능하다는 것을 나타내고; 업데이트된 맵 정보(117)는 데이터 B'가 노드(121)를 통해 액세스 가능하다는 것을 나타내고; 업데이트된 맵 정보(117)는 (복구 또는 재작성으로부터의) 복제 데이터 B"가 노드(124)를 통해 액세스 가능하다는 것을 나타내고; 기타 등등이다.
도 8은 본 명세서의 실시예들에 따라 본 명세서에 논의된 바와 같은 동작들 중 임의의 동작을 구현하기 위한 컴퓨터 시스템의 예시 블록도이다.
분산 저장 시스템(115)의 노드(121)와 같은 컴퓨터 시스템(850)은 본 명세서에 논의된 바와 같은 동작들 중 임의의 동작을 실행하도록 구성될 수 있다. 일 실시예에서, 분산 저장 시스템(115)의 각각의 노드는 데이터 관리 애플리케이션(140-1)을 실행한다. 분산 저장 시스템(115)의 각각의 노드들, 데이터 저장 제어 로직, 등등은 본 명세서에 논의된 바와 같은 기능을 수행하는 유사한 하드웨어를 포함할 수 있다.
또한 도시된 바와 같이, 본 예의 컴퓨터 시스템(850)은 컴퓨터 판독 가능 저장 매체(812)를 프로세서 하드웨어(813)에 연결하는 인터커넥트(811)를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체(812)는, 디지털 정보가 저장되고 프로세서 하드웨어(813)(즉, 하나 이상의 프로세서 장치), I/O 인터페이스(814), 통신 인터페이스(817), 등등과 같은 리소스들에 의해 검색되는 비일시적 유형의 매체(즉, 임의의 유형의 하드웨어 저장 매체)일 수 있다.
통신 인터페이스(817)는 네트워크(190)와의 연결을 제공하고 분산 저장 시스템(115) 및 컴퓨터 시스템들(110)의 다른 노드들과의 통신을 지원한다.
컴퓨터 시스템(850)은 네트워크 환경(100)의 노드(121)를 나타낸다고 가정한다. 그러한 경우에, I/O 인터페이스(814)는 컴퓨터 시스템(850)에게 데이터 저장 제어 로직(131) 및 리포지토리(191)와 같은 리소스들과의 연결을 제공한다. 원한다면, 데이터 저장 제어 로직(131)에 의해 제공되는 기능은 또한 컴퓨터 시스템(850)에서 프로세스로서 실행될 수 있다.
컴퓨터 판독 가능 저장 매체(812)는 메모리, 광 저장소, 하드 드라이브, 플로피 디스크, 등등과 같은 임의의 하드웨어 저장 장치일 수 있다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(812)(예를 들어, 컴퓨터 판독 가능 하드웨어 저장소)는 명령어들 및/또는 데이터를 저장한다.
일 실시예에서, 통신 인터페이스(817)는 컴퓨터 시스템(850) 및 대응하는 프로세서 하드웨어(813)가 네트워크(190)와 같은 리소스를 통해 통신하여 원격 소스들로부터 정보를 검색하고 (노드들과 같은) 다른 컴퓨터들과 통신할 수 있게 한다. I/O 인터페이스(814)는 프로세서 하드웨어(813)가 데이터 저장소 제어 로직(131)과 통신하고 리포지토리(191)에서 데이터를 검색하고 저장할 수 있게 한다.
도시된 바와 같이, 컴퓨터 판독 가능 저장 매체(812)는 프로세서(813)에 의해 실행되는 데이터 관리 애플리케이션(140-1)(예를 들어, 소프트웨어, 펌웨어 등)으로 인코딩된다. 데이터 관리 애플리케이션(140-1)은 본 명세서에 논의된 것과 같은 동작들 중 임의의 것을 구현하기 위한 명령어들을 포함하도록 구성될 수 있다.
일 실시예의 동작 동안, 프로세서 하드웨어(813)는 컴퓨터 판독 가능 저장 매체(812) 상에 저장된 데이터 관리 애플리케이션(140-1) 내의 명령어들을 기동(launch)시키거나, 가동(run)하거나, 실행하거나, 해석하거나 또는 다른 방식으로 수행하기 위해 인터커넥트(811)를 사용하여 컴퓨터 판독 가능 저장 매체(812)에 액세스한다.
데이터 관리 애플리케이션(140-1)의 실행은 프로세서(813)에서 데이터 관리 프로세스(140-2)와 같은 처리 기능을 생성한다. 환언하면, 프로세서(813)와 연관된 데이터 관리 프로세스(140-2)는 컴퓨터 시스템(850)에서의 프로세서 하드웨어(813) 내에서 또는 그 상에서 데이터 관리 애플리케이션(140-1)을 실행하는 하나 이상의 양태들을 나타낸다.
통상의 기술자라면 컴퓨터 시스템(850)이 데이터 관리 애플리케이션(140-1)을 실행하기 위해 하드웨어 리소스들, 소프트웨어 리소스들 등의 할당 및 사용을 제어하는 운영 체제와 같은, 다른 프로세스들 및/또는 소프트웨어 및 하드웨어 구성요소들을 포함할 수 있다는 것을 이해할 것이다.
상이한 실시예들에 따르면, 컴퓨터 시스템(850)은 모바일 컴퓨터, 휴대폰, 퍼스널 컴퓨터 시스템, 무선 디바이스, 기지국, 전화 디바이스, 데스크톱 컴퓨터, 랩톱, 노트북, 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 애플리케이션 서버, 저장 디바이스, 카메라와 같은 소비자 가전, 캠코더, 셋톱 박스, 모바일 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 스위치와 같은 주변 디바이스, 모뎀, 라우터, 또는 일반적으로 임의 유형의 컴퓨팅 또는 전자 디바이스를 포함하지만, 이것들에만 국한되지는 않는 임의의 다양한 유형들의 디바이스들일 수 있다는 것에 유의해야 한다.
상이한 리소스들에 의해 지원되는 기능이 이제 도 9의 흐름도를 통해 논의될 것이다. 하기 흐름도들에서의 처리는 임의의 적합한 순서로 실행될 수 있다는 것에 유의해야 한다.
도 9는 실시예들에 따른 예시적 방법을 나타내는 흐름도(900)이다. 앞서 논의한 바와 같은 개념들에 관련하여 일부 중복이 있을 것이라는 점을 유의해야 한다.
처리 동작 910에서, 분산 저장 시스템(115)의 노드가 데이터를 수신한다.
처리 동작 920에서, 노드는 수신된 데이터에 기초하여 메타데이터를 생성한다. 일 실시예에서, 메타데이터는 수신된 데이터가 분산 저장 시스템에 저장된 데이터의 복제본인지를 나타낸다. 본 명세서에 논의된 바와 같이, 수신된 데이터는 처음에 대응하는 데이터의 백업 사본을 분산 저장 시스템(115)에 저장할 때 생성된 복제본 데이터일 수 있다. 또 다른 실시예에 따르면, 언급된 바와 같이, 수신된 데이터는 노드 고장에 응답하여 발생하는 데이터 재작성 프로세스 동안에 생성된 복제본 데이터일 수 있다.
처리 동작 930에서, 노드는 메타데이터에 따라서 분산 저장 시스템(115)에 수신된 데이터의 저장을 시작한다.
본 명세서에서 논의된 바와 같은 임의의 리소스들은 본 명세서에 개시된 임의의 또는 모든 방법 동작들을 수행하고/하거나 지원하기 위한 하나 이상의 컴퓨터화된 디바이스들, 서버들, 기지국들, 무선 통신 장비, 통신 관리 시스템들, 워크스테이션들, 핸드헬드 또는 랩톱 컴퓨터들, 또는 기타 등등을 포함할 수 있다. 환언하면, 하나 이상의 컴퓨터화된 디바이스들 또는 프로세서들은 상이한 실시예들을 수행하기 위해 본 명세서에 설명된 바와 같이 동작하도록 프로그램되고/되거나 구성될 수 있다.
본 명세서의 또 다른 실시예들은 본 명세서에 개시된 바와 같은 동작들을 수행하기 위한 소프트웨어 프로그램들, 펌웨어, 로직, 기타 등등을 포함한다. 하나의 그러한 실시예는 후속 실행을 위한 소프트웨어 명령어들이 인코딩되어 있는 비일시적 컴퓨터 판독 가능 저장 매체(즉, 임의의 컴퓨터 판독 가능 하드웨어 저장 매체)를 포함하는 컴퓨터 프로그램 제품을 포함한다. 명령어들은, 하나 이상의 프로세서를 가진 컴퓨터화된 디바이스에서 실행될 때, 본 명세서에 개시된 동작들을 수행하도록 프로세서를 프로그램하고/하거나 프로세서가 그 동작들을 수행하게 한다. 그러한 배열들은 광학 매체(예를 들어, CD-ROM), 플로피 디스크, 하드 디스크, 메모리, 기타 등등과 같은 비일시적 컴퓨터 판독가능 저장 매체, 또는 하나 이상의 ROM, RAM, PROM, 기타 등등에서의 펌웨어와 같은 다른 매체에 배열되거나 인코딩된, 소프트웨어, 펌웨어, 코드, 명령어들, 데이터(예를 들어, 데이터 구조들), 기타 등등으로서 제공되거나, 또는 ASIC(Application Specific Integrated Circuit) 등에서의 로직으로서 제공될 수 있다. 소프트웨어 또는 펌웨어 또는 다른 그러한 구성들은 컴퓨터화된 디바이스에 설치되어 컴퓨터화된 디바이스가 본 명세서에 설명된 기법들을 수행하게 할 수 있다.
따라서, 본 명세서에서의 실시예들은 본 명세서에서 논의된 바와 같은 동작들을 지원하는 장치, 방법, 시스템, 컴퓨터 프로그램 제품, 기타 등등에 관한 것이다.
일 실시예는 하나 이상의 비휘발성 메모리 디바이스들을 포함하는 메모리 시스템의 구성을 관리하는 명령어들, 로직 등을 저장하고 있는 컴퓨터 판독 가능 저장 매체 및/또는 시스템을 포함한다. 그 명령어들, 및/또는 로직은, 각각의 컴퓨터의 적어도 하나의 프로세서 디바이스에 의해 실행될 때, 그 적어도 하나의 프로세서 디바이스가: 분산 저장 시스템의 특정 노드에서 데이터를 수신하고 - 상기 특정 노드는 캐시 저장 리소스 및 비-캐시 저장 리소스를 포함하는 리포지토리에 대한 액세스를 갖는 데이터 저장 제어 로직과 통신함 -; 수신된 데이터에 기초하여 메타데이터를 생성하고; 수신된 데이터와 메타데이터의 통지를 데이터 저장 제어 로직에 제공하게 하고, 메타데이터는 수신된 데이터를 상기 특정 노드의 리포지토리에 저장하는 것을 제어한다.
본 명세서에서 논의된 바와 같은 임의의 처리는 임의의 적합한 순서로 수행될 수 있다는 것에 유의해야 한다.
본 명세서에서 논의된 바와 같은 장치, 시스템, 방법, 장치, 컴퓨터 판독 가능 저장 매체 상의 명령어들, 기타 등등은 또한 소프트웨어 프로그램, 펌웨어로서, 소프트웨어, 하드웨어 및/또는 펌웨어의 하이브리드로서, 또는 예를 들어 프로세서 디바이스 내에, 운영 체제 내에 또는 소프트웨어 애플리케이션 내에 하드웨어 단독으로서 엄밀하게 구현될 수 있다는 것을 이해해야 한다.
부가적으로, 본 명세서에서 각각의 상이한 특징들, 기법들, 구성들, 기타 등등이 이 개시의 상이한 곳에서 논의될 수 있지만, 적절한 경우, 각각의 개념은 서로 독립적으로 또는 서로 조합하여 선택적으로 실행될 수 있다는 것에 유의해야 한다. 개시된 특징들의 임의의 치환이 가능하다. 따라서, 본 명세서에 기술된 바와 같은 하나 이상의 실시예는 많은 상이한 방식들로 구현되고 보여질 수 있다.
또한 본 명세서의 기법들은 하나 이상의 비휘발성 메모리 디바이스에서의 검출된 고장으로부터 복구하는 것에 매우 적합하다는 것에 유의해야 한다. 그러나, 본 명세서에서의 실시예들은 그러한 응용들에 사용하는 것에 제한되지 않고 본 명세서에서 논의된 기술들은 또한 다른 응용들에도 매우 적합하다는 것에 유의해야 한다.
특정한 실시예들이 자세히 도시되고 설명되었지만, 통상의 기술자들은 첨부된 특허청구범위에 의해 한정된 바와 같은 본 출원의 사상 및 범주로부터 벗어남이 없이 형태 및 세부 사항들의 다양한 변경들이 이루어질 수 있다는 것을 이해할 것이다. 그러한 변경들은 본 발명의 범위에 의해 포괄되도록 의도된다. 이와 같이, 본 출원의 실시예들의 상술한 설명은 제한적으로 의도되지 않는다. 오히려, 본 명세서에서의 실시예들에 대한 임의의 제한이 다음의 특허청구범위에서 제시된다.

Claims (25)

  1. 데이터 저장을 집합적으로(collectively) 관리하는 다수의 노드를 포함하는 분산 저장 시스템에 데이터를 저장하는 방법으로서,
    상기 분산 저장 시스템의 특정 노드에서 데이터를 수신하는 단계 - 상기 특정 노드는 비휘발성 캐시 저장 리소스 및 비휘발성 비-캐시 저장 리소스를 포함하는 리포지토리(repository)에 대한 액세스를 갖는 데이터 저장 제어 로직과 통신함 -;
    상기 수신된 데이터에 기초하여 메타데이터를 생성하는 단계; 및
    상기 수신된 데이터와 상기 메타데이터의 통지를 상기 데이터 저장 제어 로직에 제공하는 단계를 포함하고, 상기 메타데이터는 상기 특정 노드에서 상기 수신된 데이터를 상기 리포지토리에 저장하는 것을 제어하고,
    상기 메타데이터를 생성하는 단계는, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스(bypass)할 것을 나타내도록 상기 메타 데이터를 생성하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 비휘발성 캐시 저장 리소스의 액세스 시간은 상기 비휘발성 비-캐시 저장 리소스의 액세스 시간보다 실질적으로 더 짧고;
    상기 메타데이터를 생성하는 단계는, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 비휘발성 캐시 저장 리소스는 비휘발성 메모리이고;
    상기 비휘발성 비-캐시 저장 리소스는 디스크 드라이브 저장 리소스이고;
    상기 메타데이터를 생성하는 단계는, 상기 분산 저장 시스템의 상기 특정 노드 이외의 노드로부터 상기 수신된 데이터의 사본이 이용가능함을 검출하는 것에 응답하여 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하도록 상기 메타데이터를 생성하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 통지를 생성하는 단계는:
    상기 특정 노드의 상기 데이터 저장 제어 로직에게 데이터가 상기 리포지토리의 상기 비휘발성 캐시 저장 리소스에 저장될 자격이 있음을 나타내도록 상기 메타데이터를 생성하는 단계를 포함하는 방법.
  5. 제4항에 있어서,
    상기 수신된 데이터는 제1 데이터이고;
    상기 특정 노드는 제1 노드이고;
    상기 메타데이터는 제1 메타데이터이고, 상기 방법은:
    상기 제1 노드에서 제2 데이터를 수신하는 단계 - 상기 제2 데이터는 상기 분산 저장 시스템의 제2 노드에 저장된 데이터의 복제본(replica)임 -;
    제2 메타데이터를 생성하는 단계 - 상기 제2 메타데이터는 상기 제1 노드의 상기 데이터 저장 제어 로직에게 상기 수신된 제2 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 제2 데이터를 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타냄 -; 및
    상기 제2 데이터와 상기 제2 메타데이터를 상기 제1 노드의 상기 데이터 저장 제어 로직에 전달하는(forwarding) 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 수신된 데이터는 상기 분산 저장 시스템의 고장난 노드에 저장된 데이터의 복제본을 나타내고, 상기 고장난 노드에서의 고장은 상기 고장난 노드에 의해 관리되는 데이터로의 액세스를 막고, 상기 방법은:
    상기 수신된 데이터가 상기 고장난 노드에 저장된 데이터의 사본임을 검출하는 것에 응답하여, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 분산 저장 시스템의 고장나지 않은 노드에 저장된 데이터에 기초하여 상기 고장난 노드에 저장된 데이터의 복제본을 생성하는 단계를 더 포함하고, 상기 특정 노드는 상기 분산 저장 시스템의 제1 저장 노드이고, 상기 고장난 노드는 상기 분산 저장 시스템의 제2 저장 노드이고, 상기 고장나지 않은 노드는 상기 분산 저장 시스템의 제3 저장 노드인, 방법.
  8. 제1항에 있어서,
    상기 수신된 데이터는 제1 데이터이고;
    상기 특정 노드는 제1 노드이고;
    상기 메타데이터는 상기 제1 데이터를 상기 비휘발성 캐시 저장 리소스에 저장할 것을 나타내는 제1 메타데이터이고, 상기 방법은:
    상기 제1 노드에서 제2 데이터를 수신하는 단계 - 상기 제2 데이터는 상기 분산 저장 시스템의 제2 노드에 저장된 데이터의 복제본임 -;
    상기 제1 노드에서 제2 메타데이터를 생성하는 단계 - 상기 제2 메타데이터는 상기 데이터 저장 제어 로직에게 상기 수신된 제2 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타냄 -; 및
    상기 제2 데이터와 상기 제2 메타데이터를 상기 제1 노드의 상기 데이터 저장 제어 로직에 전달하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는 단계;
    상기 수신된 데이터의 복제본인 복제본 데이터를 생성하는 단계; 및
    상기 복제본 데이터를 상기 분산 저장 시스템의 제2 노드에 전달하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 분산 저장 시스템의 상기 제2 노드에서 상기 복제본 데이터를 수신하는 단계 - 상기 제2 노드는 상기 복제본 데이터를 상기 제2 노드와 연관된 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내는 메타데이터를 생성함 -; 및
    상기 제2 노드에서, 상기 복제본 데이터를 상기 제2 노드와 연관된 비휘발성 비-캐시 저장 리소스에 저장하기 위해 상기 복제본 데이터와 상기 메타데이터를 전달하는 단계를 더 포함하는 방법.
  11. 분산 저장 시스템으로서,
    데이터 저장을 집합적으로 관리하는 다수의 상호 연결된 노드를 포함하고, 상기 다수의 상호 연결된 노드는 특정 노드를 포함하고 상기 특정 노드는:
    상기 분산 저장 시스템과 통신하는 리소스로부터 데이터를 수신하고 - 상기 특정 노드는 비휘발성 캐시 저장 리소스 및 비휘발성 비-캐시 저장 리소스를 포함하는 리포지토리에 대한 액세스를 갖는 데이터 저장 제어 로직과 통신함 -;
    상기 수신된 데이터에 기초하여 메타데이터를 생성하고;
    상기 수신된 데이터와 상기 메타데이터의 통지를 상기 데이터 저장 제어 로직에 제공하도록 동작 가능하고, 상기 메타데이터는 상기 수신된 데이터를 상기 리포지토리에 저장하는 것을 제어하고,
    상기 특정 노드는, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스할 것을 나타내도록 상기 메타 데이터를 생성하는, 분산 저장 시스템.
  12. 제11항에 있어서,
    상기 특정 노드는 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는, 분산 저장 시스템.
  13. 제12항에 있어서,
    상기 캐시 저장 리소스는 비휘발성 메모리이고;
    상기 비휘발성 비-캐시 저장 리소스는 디스크 드라이브 저장 리소스이고;
    상기 특정 노드는 상기 분산 저장 시스템의 상기 특정 노드 이외의 노드로부터 상기 수신된 데이터의 사본이 이용가능함을 검출하는 것에 응답하여 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하도록 상기 메타데이터를 생성하는, 분산 저장 시스템.
  14. 제11항에 있어서,
    상기 특정 노드는 상기 데이터 저장 제어 로직에게 상기 수신된 데이터가 상기 리포지토리의 상기 비휘발성 캐시 저장 리소스에 저장될 자격이 있음을 나타내도록 상기 메타데이터를 생성하는, 분산 저장 시스템.
  15. 제14항에 있어서,
    상기 수신된 데이터는 제1 데이터이고;
    상기 특정 노드는 제1 노드이고;
    상기 메타데이터는 제1 메타데이터이고;
    상기 특정 노드는 또한:
    상기 제1 노드에서 제2 데이터를 수신하고 - 상기 제2 데이터는 상기 분산 저장 시스템의 제2 노드에 저장된 데이터의 복제본임 -;
    제2 메타데이터를 생성하고 - 상기 제2 메타데이터는 상기 데이터 저장 제어 로직에게 상기 수신된 제2 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 제2 데이터를 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타냄 -;
    상기 제2 데이터와 상기 제2 메타데이터를 상기 제1 노드의 상기 데이터 저장 제어 로직에 전달하도록 동작 가능한, 분산 저장 시스템.
  16. 제11항에 있어서,
    상기 수신된 데이터는 상기 분산 저장 시스템의 고장난 노드에 저장된 데이터의 복제본을 나타내고, 상기 고장난 노드에서의 대응하는 고장은 상기 고장난 노드에 의해 관리되는 데이터로의 액세스를 막고, 상기 특정 노드는 또한:
    상기 수신된 데이터가 상기 고장난 노드에 저장된 데이터의 사본임을 검출하는 것에 응답하여, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하도록 동작 가능한, 분산 저장 시스템.
  17. 제16항에 있어서,
    상기 특정 노드는 상기 분산 저장 시스템의 제1 노드이고;
    상기 고장난 노드는 상기 분산 저장 시스템의 제2 노드이고;
    상기 분산 저장 시스템은:
    제3 노드를 더 포함하고, 상기 제3 노드는 상기 제3 노드에 저장된 데이터에 기초하여 상기 고장난 노드에 저장된 데이터의 복제본을 생성하는, 분산 저장 시스템.
  18. 제11항에 있어서,
    상기 수신된 데이터는 제1 데이터이고;
    상기 특정 노드는 제1 노드이고;
    상기 메타데이터는 상기 제1 데이터를 상기 비휘발성 캐시 저장 리소스에 저장할 것을 나타내는 제1 메타데이터이고, 상기 특정 노드는 또한:
    제2 데이터를 수신하고 - 상기 제2 데이터는 상기 분산 저장 시스템의 제2 노드에 저장된 데이터의 복제본임 -;
    제2 메타데이터를 생성하고 - 상기 제2 메타데이터는 상기 데이터 저장 제어 로직에게 상기 수신된 제2 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 제2 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타냄 -; 및
    상기 제2 데이터와 상기 제2 메타데이터를 상기 데이터 저장 제어 로직에 전달하도록 동작 가능한, 분산 저장 시스템.
  19. 제11항에 있어서,
    상기 특정 노드는 또한:
    상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하고;
    상기 수신된 데이터의 복제본인 복제본 데이터를 생성하고;
    상기 복제본 데이터를 상기 분산 저장 시스템의 제2 노드에 전달하도록 동작 가능한, 분산 저장 시스템.
  20. 제19항에 있어서,
    상기 제2 노드는:
    상기 복제본 데이터를 수신하고;
    상기 복제본 데이터를 상기 제2 노드와 연관된 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내는 메타데이터를 생성하고;
    상기 복제본 데이터를 상기 제2 노드와 연관된 비휘발성 비-캐시 저장 리소스에 저장하기 위해 상기 복제본 데이터와 상기 생성된 메타데이터를 전달하도록 동작 가능한, 분산 저장 시스템.
  21. 제11항에 따른 분산 저장 시스템에 대한 액세스를 갖는 컴퓨터 시스템으로서, 상기 컴퓨터 시스템은 상기 분산 저장 시스템의 상기 특정 노드에 의해 수신된 상기 데이터에 적어도 부분적으로 기초하여 이미지를 렌더링할 디스플레이 스크린을 포함하는, 컴퓨터 시스템.
  22. 명령어들을 저장하고 있는 컴퓨터 판독 가능 저장 하드웨어로서, 상기 명령어들은, 컴퓨터 프로세서 하드웨어에 의해 수행될 때, 상기 컴퓨터 프로세서 하드웨어로 하여금:
    분산 저장 시스템의 특정 노드에서 데이터를 수신하는 동작 - 상기 특정 노드는 상기 분산 저장 시스템의 다수의 노드 중 하나이고, 상기 특정 노드는 비휘발성 캐시 저장 리소스 및 비휘발성 비-캐시 저장 리소스를 포함하는 리포지토리에 대한 액세스를 갖는 데이터 저장 제어 로직과 통신함 -;
    상기 수신된 데이터에 기초하여 메타데이터를 생성하는 동작; 및
    상기 수신된 데이터와 상기 메타데이터의 통지를 상기 데이터 저장 제어 로직에 제공하는 동작을 수행하게 하고, 상기 메타데이터는 상기 특정 노드에서 상기 수신된 데이터를 상기 리포지토리에 저장하는 것을 제어하고,
    상기 메타데이터를 생성하는 동작은, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스할 것을 나타내도록 상기 메타 데이터를 생성하는 동작을 포함하는, 컴퓨터 판독 가능 저장 하드웨어.
  23. 제22항에 있어서,
    상기 명령어들은 또한 상기 컴퓨터 프로세서 하드웨어로 하여금:
    상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는 동작을 수행하게 하는, 컴퓨터 판독 가능 저장 하드웨어.
  24. 제23항에 있어서,
    상기 명령어들은 또한 상기 컴퓨터 프로세서 하드웨어로 하여금:
    상기 분산 저장 시스템의 상기 특정 노드 이외의 노드로부터 상기 수신된 데이터의 사본이 이용가능함을 검출하는 것에 응답하여 상기 메타데이터를 생성하는 동작을 수행하게 하는, 컴퓨터 판독 가능 저장 하드웨어.
  25. 제22항에 있어서,
    상기 수신된 데이터는 상기 분산 저장 시스템의 고장난 노드에 저장된 데이터의 복제본을 나타내고, 상기 고장난 노드에서의 고장은 상기 고장난 노드에 의해 관리되는 데이터로의 액세스를 막고;
    상기 명령어들은 또한 상기 컴퓨터 프로세서 하드웨어로 하여금:
    상기 수신된 데이터가 상기 고장난 노드에 저장된 데이터의 사본임을 검출하는 것에 응답하여, 상기 데이터 저장 제어 로직에게 상기 수신된 데이터를 상기 비휘발성 캐시 저장 리소스에 저장하는 것을 바이패스하고 상기 수신된 데이터를 상기 리포지토리의 상기 비휘발성 비-캐시 저장 리소스에 저장할 것을 나타내도록 상기 메타데이터를 생성하는 동작을 수행하게 하는, 컴퓨터 판독 가능 저장 하드웨어.
KR1020167012132A 2013-12-11 2013-12-11 분산 저장 시스템에서의 캐시 및 비-캐시 사용 KR101778907B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/074290 WO2015088505A1 (en) 2013-12-11 2013-12-11 Cache and non-cache usage in a distributed storage system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177025236A Division KR102030517B1 (ko) 2013-12-11 2013-12-11 분산 저장 시스템에서의 캐시 및 비-캐시 사용

Publications (2)

Publication Number Publication Date
KR20160068881A KR20160068881A (ko) 2016-06-15
KR101778907B1 true KR101778907B1 (ko) 2017-09-26

Family

ID=53371610

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167012132A KR101778907B1 (ko) 2013-12-11 2013-12-11 분산 저장 시스템에서의 캐시 및 비-캐시 사용
KR1020177025236A KR102030517B1 (ko) 2013-12-11 2013-12-11 분산 저장 시스템에서의 캐시 및 비-캐시 사용

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177025236A KR102030517B1 (ko) 2013-12-11 2013-12-11 분산 저장 시스템에서의 캐시 및 비-캐시 사용

Country Status (6)

Country Link
US (1) US20160274806A1 (ko)
EP (1) EP3080717B1 (ko)
JP (1) JP6256931B2 (ko)
KR (2) KR101778907B1 (ko)
RU (1) RU2643642C2 (ko)
WO (1) WO2015088505A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230809B2 (en) * 2016-02-29 2019-03-12 Intel Corporation Managing replica caching in a distributed storage system
US10169152B2 (en) 2016-09-12 2019-01-01 International Business Machines Corporation Resilient data storage and retrieval
US11249671B2 (en) * 2017-04-28 2022-02-15 Netapp, Inc. Methods for improved data replication across hybrid cloud volumes using data tagging and devices thereof
US10768820B2 (en) 2017-11-16 2020-09-08 Samsung Electronics Co., Ltd. On-demand storage provisioning using distributed and virtual namespace management
CN110633046A (zh) * 2018-06-22 2019-12-31 北京东土科技股份有限公司 一种分布式系统的存储方法、装置、存储设备及存储介质
KR102497130B1 (ko) * 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044056A (ja) * 2009-08-24 2011-03-03 Fujitsu Ltd ストレージシステム、キャッシュ制御装置、キャッシュ制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6678700B1 (en) * 2000-04-27 2004-01-13 General Atomics System of and method for transparent management of data objects in containers across distributed heterogenous resources
US7774325B2 (en) * 2002-10-17 2010-08-10 Intel Corporation Distributed network attached storage system
JP4267421B2 (ja) * 2003-10-24 2009-05-27 株式会社日立製作所 リモートサイト及び/又はローカルサイトのストレージシステム及びリモートサイトストレージシステムのファイル参照方法
US8055845B2 (en) * 2005-02-03 2011-11-08 Hewlett-Packard Development Company, L.P. Method of cooperative caching for distributed storage system
US7613750B2 (en) * 2006-05-29 2009-11-03 Microsoft Corporation Creating frequent application-consistent backups efficiently
US8909871B2 (en) * 2006-08-03 2014-12-09 International Business Machines Corporation Data processing system and method for reducing cache pollution by write stream memory access patterns
US7613947B1 (en) * 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8782323B2 (en) * 2009-10-30 2014-07-15 International Business Machines Corporation Data storage management using a distributed cache scheme
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US9514055B2 (en) * 2009-12-31 2016-12-06 Seagate Technology Llc Distributed media cache for data storage systems
US8868508B2 (en) * 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8464003B2 (en) * 2010-02-17 2013-06-11 Hitachi, Ltd. Method and apparatus to manage object based tier
US9092337B2 (en) * 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
JP5626034B2 (ja) * 2011-03-07 2014-11-19 日本電気株式会社 ファイルシステム
JP2012221419A (ja) * 2011-04-13 2012-11-12 Hitachi Ltd 情報記憶システム及びそのデータ複製方法
US8782344B2 (en) * 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044056A (ja) * 2009-08-24 2011-03-03 Fujitsu Ltd ストレージシステム、キャッシュ制御装置、キャッシュ制御方法

Also Published As

Publication number Publication date
JP6256931B2 (ja) 2018-01-10
EP3080717B1 (en) 2020-03-04
WO2015088505A1 (en) 2015-06-18
RU2016118362A (ru) 2017-11-16
US20160274806A1 (en) 2016-09-22
EP3080717A4 (en) 2017-09-06
EP3080717A1 (en) 2016-10-19
JP2017501476A (ja) 2017-01-12
KR102030517B1 (ko) 2019-10-10
RU2643642C2 (ru) 2018-02-02
KR20160068881A (ko) 2016-06-15
KR20170105133A (ko) 2017-09-18

Similar Documents

Publication Publication Date Title
JP6734807B2 (ja) テナントアウェアストレージシェアリングプラットフォームのための処理装置及びその方法
US10489422B2 (en) Reducing data volume durability state for block-based storage
KR101778907B1 (ko) 분산 저장 시스템에서의 캐시 및 비-캐시 사용
JP5986577B2 (ja) Aluaの選好および状態遷移のホストによる検出および処理
US9720620B1 (en) Efficient data volume replication for block-based storage
RU2595482C2 (ru) Обеспечение прозрачной отработки отказа в файловой системе
US8930364B1 (en) Intelligent data integration
US20160149766A1 (en) Cloud based management of storage systems
CN105027070A (zh) 卷操作的安全性
JP2018181325A (ja) 分散ストレージネットワークにおけるデータ経路モニタリング
JP2017531857A (ja) 分散型能動ハイブリッドストレージシステム
CN104020961A (zh) 分布式数据存储方法、装置及系统
JP2016513306A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US20160026672A1 (en) Data and metadata consistency in object storage systems
US10452619B1 (en) Decreasing a site cache capacity in a distributed file system
US9451024B2 (en) Self-organizing disk (SoD)
KR20100048130A (ko) 메타데이터 클러스터 기반의 분산형 스토리지 시스템 및 그동작 방법
CN106873902B (zh) 一种文件存储系统、数据调度方法及数据节点
CN111399760B (zh) Nas集群元数据处理方法、装置、nas网关及介质
US11341009B1 (en) Directing placement of data in cloud storage nodes
US11288237B2 (en) Distributed file system with thin arbiter node
TW201638799A (zh) 計算系統中之軟體影像的分佈式存儲
CN107547605B (zh) 一种基于节点队列的消息读写方法及节点设备
JP6376626B2 (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US9971532B2 (en) GUID partition table based hidden data store system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
GRNT Written decision to grant