KR101914847B1 - 블록-기반 저장장치에서의 페이지 캐시 기록 로깅 - Google Patents

블록-기반 저장장치에서의 페이지 캐시 기록 로깅 Download PDF

Info

Publication number
KR101914847B1
KR101914847B1 KR1020167027931A KR20167027931A KR101914847B1 KR 101914847 B1 KR101914847 B1 KR 101914847B1 KR 1020167027931 A KR1020167027931 A KR 1020167027931A KR 20167027931 A KR20167027931 A KR 20167027931A KR 101914847 B1 KR101914847 B1 KR 101914847B1
Authority
KR
South Korea
Prior art keywords
page cache
log
storage
block
storage node
Prior art date
Application number
KR1020167027931A
Other languages
English (en)
Other versions
KR20160142311A (ko
Inventor
대니 웨이
2세 존 루터 거스리
제임스 마이클 톰슨
벤자민 아서 호크스
노버트 피. 커스터스
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 KR20160142311A publication Critical patent/KR20160142311A/ko
Application granted granted Critical
Publication of KR101914847B1 publication Critical patent/KR101914847B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 블록-기반 저장 시스템은 페이지 캐시 기록 로깅을 구현할 수 있다. 저장 노드에 유지되는 데이터 볼륨에 대한 기록 요청이 저장 노드에 수신될 수 있다. 페이지 캐시는 요청에 따라 업데이트될 수 있다. 페이지 캐시 업데이트를 기술하는 로그 레코드는 영구 저장 디바이스에 유지되는 페이지 캐시 기록 로그에 저장될 수 있다. 기록 요청이 페이지 캐시에서 수행되고 페이지 캐시 기록 로그의 로그 레코드에 레코딩되면, 기록 요청은 확인 응답될 수 있다. 페이지 캐시에서의 데이터가 손실되는 시스템 고장에서 복구 시, 페이지 캐시 기록 로그의 로그 레코드들이 시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 복원하기 위해 리플레이될 수 있다.

Description

블록-기반 저장장치에서의 페이지 캐시 기록 로깅{PAGE CACHE WRITE LOGGING AT BLOCK-BASED STORAGE}
네트워크들에 걸쳐 하드웨어 자원들, 소프트웨어, 및 정보 저장장치의 가상화를 동적으로 공유하기 위한 기술들에 있어서 최근의 혁명은 컴퓨팅의 신뢰성, 확장성, 및 비용 효율성을 증가시켰다. 보다 구체적으로, 가상화의 도래를 통해 가상 컴퓨팅 자원들 및 저장장치를 요구에 따라 제공하는 능력은 프로세싱 자원들 및 저장장치의 소비자들이 즉각적으로 감지되는 컴퓨팅 및 저장 니즈에 응답하여 이들의 컴퓨팅 및 저장 비용을 유연하게 조직하게 했다. 가상화는 소비자들이 하드웨어 제조 및 배치의 지연 및 비용으로 결정되는 공급 사이클들로 고정된 하드웨어를 구매 또는 대여하기 보다는, 요구 시 프로세서 사이클들 및 저장장치를 구매하게 한다. 사용자들은 컴퓨팅 및 저장장치의 이용가능성을 결정하기 위해 장차 요구에 대한 예측의 정확도에 따르기 보다는, 비교적 순간적인 필요에 따라 컴퓨팅 및 저장 자원들의 사용을 구매할 수 있다.
가상화된 컴퓨팅 환경들은 흔히 블록-기반 저장장치에 의해 지원된다. 그러한 블록-기반 저장장치는 그것이 지원하는 볼륨들 및 그것이 저장장치 이용가능성을 제공하는 가상화들 상에서 실행하는 운영 체제들에 대한 구조적 및 기능적 세부사항들에 관계 없이 기능적으로 블록-기반 저장장치를 만드는 일련의 표준화된 저장 호출들을 통해 다양한 컴퓨팅 가상화와 상호작용할 수 있는 저장 시스템을 제공한다. 그러나, 가상화된 자원들에 대한 더 큰 처리 능력과 함께, 네트워크 전송 능력들이 증가함에 따라, 블록-기반 저장장치에 대한 I/O 요구가 증가할 수 있다. I/O 요구가 요청들을 서비스하기 위한 블록-기반 저장장치의 능력을 초과하는 경우, 가상화된 컴퓨팅 자원들에 대한 블록-기반 저장장치 성능의 레이턴시 및/또는 지속성에 지장이 있다.
도 1은 몇몇 실시예에 따른, 블록-기반 저장장치에서의 페이지 캐시 기록 로깅을 예시하는 일련의 블록도이다.
도 2는 몇몇 실시예에 따른, 페이지 캐시 기록 로깅을 구현하는 블록-기반 저장 서비스를 포함하는 다수의 네트워크-기반 서비스를 구현하는 제공자 네트워크를 예시하는 블록도이다.
도 3은 몇몇 실시예에 따른, 저장 노드에서 구현되는 페이지 캐시들에 대한 업데이트들을 위한 페이지 캐시 기록 로그들을 구현하는 저장 노드들을 예시하는 블록도이다.
도 4는 몇몇 실시예에 따른, 저장 노드에서의 페이지 캐시에 대한 페이지 캐시 기록 로그의 로그 엔트리들을 트리밍하도록 구성되는 저장 노드를 예시하는 블록도이다.
도 5는 몇몇 실시예에 따른, 블록-기반 저장장치에 유지되는 데이터 볼륨들에 대한 동적으로 선택적인 페이지 캐시 기록 로깅을 예시하는 블록도이다.
도 6은 몇몇 실시예에 따른, 블록-기반 저장장치에서의 페이지 캐시 기록 로깅을 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 7은 몇몇 실시예에 따른, 페이지 캐시 기록 로그로부터의 페이지 캐시 복구를 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 8은 몇몇 실시예에 따른, 페이지 캐시 기록 로그를 트리밍하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 9는 몇몇 실시예에 따른, 페이지 캐시 기록 로깅 기술들을 효율적으로 사용하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 10은 몇몇 실시예에 따른, 저장 노드에 유지되는 데이터 볼륨들에 대한 지속성 특성들을 동적으로 변경하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 11은 몇몇 실시예에 따른, 데이터 볼륨들에 대한 페이지 캐시 기록 로깅을 이네이블할지 또는 디세이블할지를 결정하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 12는 몇몇 실시예에 따른, 특정한 데이터 볼륨의 지속성 특성들에 따라 특정한 데이터 볼륨에 대한 저장 노드에서의 기록 요청들을 프로세싱하는 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 13은 몇몇 실시예에 따른, 기록 로깅 이네이블 및 디세이블에 따라 데이터 볼륨 복구를 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
도 14는 몇몇 실시예에 따른, 예시적인 컴퓨팅 시스템을 예시하는 블록도이다.
실시예들이 몇몇 실시예 및 예시적인 도면을 위한 예로서 본 출원에 설명되지만, 당해 기술분야의 통상의 기술자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않는다는 것을 인식할 것이다. 도면들 및 그것들에 대한 상세한 설명이 실시예들을 개시된 특정한 형태로 제한하는 것으로 의도되지 않으나, 이와 반대로, 첨부된 청구항들에 의해 정의된 바와 같은 사상 및 범위 내에 들어가는 모든 변형물, 등가물, 및 대안물을 망라하도록 의도된다는 것이 이해되어야 한다. 본 출원에 사용된 머릿말들은 단지 조직상의 목적들을 위함이고 본 설명 또는 청구항들의 범위를 제한하는 것으로 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된 바와 같이, 단어 "할 수 있다"는 필수적 의미(즉, 해야한다의 의미)가 아니라, 관대한 의미(즉, 가능성을 갖는 의미)로 사용된다. 유사하게, 단어들 "포함한다", "포함하는", 및 "포함하다"는 이에 제한되지 않으나, 포함하는 것을 의미한다.
본 출원에 설명된 시스템들 및 방법들은 블록-기반 저장장치에 대한 페이지 캐시 기록 로깅을 구현할 수 있다. 블록-기반 저장 시스템들은 전형적으로 페이지 캐시에 유지되는 데이터 볼륨들에 대한 업데이트들을 (블록-기반 저장 메모리에) 빠르게 저장하기 위해 페이지 캐시들을 구현한다. 궁극적으로, 페이지 캐시는 영구 저장장치를 업데이트하기 위해 블록-기반 저장 디바이스들에 플러싱될 수 있다. 그러나, 시스템 메모리가 시스템 고장 발생 시 지속되지 않기 때문에, 단지 페이지 캐시에 저장되는 기록들은 지속가능하지 않고 손실될 수 있다. 페이지 캐시 기록 로깅은 페이지 캐시에서의 데이터 손실을 야기하는 고장 발생 시 페이지 캐시의 상태를 보존하기 위해 저장 노드들에서 구현될 수 있다. 몇몇 실시예에서, 페이지 캐시 기록 로깅은 동일한 저장 시스템에 유지되는 상이한 데이터 볼륨에 대해 선택적으로 구현될 수 있다. 대응하는 데이터 볼륨에 대해 페이지 캐시 기록 로깅이 이네이블되는지 또는 디세이블되는지 여부를 기술하는 각각의 데이터 볼륨에 대한 지속성 특성들은 저장 시스템에서의 다양한 조건, 이를테면 페이지 캐시 기록 로그에 로깅될 착신 기록 요청들의 레이트에 따라 동적으로 변경될 수 있다.
도 1은 몇몇 실시예에 따른, 블록-기반 저장장치에서의 페이지 캐시 기록 로깅을 예시하는 일련의 블록도이다. 102에 표시된 바와 같이 블록 저장 서버(100)(일반적인 컴퓨팅 시스템, 이를테면 도 14에 관해 아래에서 설명될 시스템(2000)일 수 있는)는 데이터 볼륨들(120)을 블록-저장 서버에 접속되는 하나 이상의 블록-기반 저장 디바이스 상에 저장할 수 있다. 데이터 볼륨들(120)에 대한 기록 요청들(142)이 수신될 때, I/O 관리기(102)는 각각의 페이지들 또는 엔트리들에 대한 업데이트들(146)을 페이지 캐시(140) 내에 그리고 기록된 로그 레코드들(144)을 페이지 캐시 기록 로그(130)에 병렬 또는 거의 병렬로 송신할 수 있으며, 이는 (볼륨들(120)을 저장하는 블록-기반 저장 디바이스들과 별개일 수 있는) 영구 저장 디바이스 상에서 구현될 수 있다. 로그 레코드들은, 다양한 실시예에서, 페이지 캐시(140)의 특정한 페이지 또는 엔트리에 대한 업데이트를 기술할 수 있다. 로그 레코드들은 몇몇 실시예에서, 페이지 캐시 기록 로그(130)에 순차적으로 저장될 수 있다. 로그 레코드들(144)을 저장하는 것 및 페이지 캐시(146)를 업데이트하는 것에 응답하여, 기록 요청들이 확인 응답될 수 있다. 그 후 페이지 캐시에서의 페이지들은 블록-기반 저장 디바이스들의 볼륨들(120)을 업데이트하기 위해 플러싱될 수 있다(148). 몇몇 실시예에서, 페이지 캐시 기록 로그(130)에 저장된 로그 레코드들은 페이지 캐시로부터의 플러시 동작들(148)에 기초하여 제거 또는 트리밍될 수 있고, 그에 따라 볼륨(들)(120)에 지속적이게 구성되는 페이지에 대한 업데이트들을 기술하는 로그 레코드들이 추가 로그 레코드들을 저장하기 위해 반환(reclaim) 및 이용가능하게 될 수 있게 된다.
씬(104)에 예시된 바와 같이, 시스템 고장(152)을 페이지 캐시 데이터의 손실을 초래한다. 따라서, 페이지 캐시 데이터의 기록 요청들은 그것들이 영구 저장장치의 볼륨들(120)에 플러싱되지 않았을 때 손실된다. I/O 관리기(132)는, 몇몇 실시예에서, 페이지 캐시 기록 로그(130)에서 로그 레코드들(132)을 획득하고 시스템 고장 이전 페이지 캐시의 상태를 복원하기 위해 업데이트들을 페이지 캐시로 리플레이하여(134), 페이지 캐시 데이터의 복구를 야기할 수 있다.
몇몇 실시예에서, 페이지 캐시 기록 로깅은 볼륨마다를 기초로 구현될 수 있다. 예를 들어, 몇몇 실시예에서, 페이지 캐시 기록 로깅이 이네이블될지 여부를 나타내는 데이터 볼륨에 대한 지속성 특성은 저장 노드에서의 변화하는 조건들에 대해 조절하도록 동적으로 변경될 수 있다. 예를 들어, 몇몇 실시예에서, I/O 관리기(102)는 페이지 캐시 기록 로그(130)에 로깅될 착신 기록 요청들의 레이트를 모니터링하고, 각각의 하나 이상의 데이터 볼륨(120)에 대한 하나 이상의 지속성 속성을 동적으로 변경할 수 있다. 예를 들어, 페이지 캐시 기록 로깅이 특정한 데이터 볼륨(120)에 대해 디세이블되는 경우, 해당 데이터 볼륨에 지시되는 기록 요청들(142)이 페이지 캐시 기록 로그의 업데이트를 기술하는 로그 레코드를 저장하지 않고 완료(예를 들어, 페이지 캐시(140) 업데이트)될 수 있다. 유사하게, 페이지 캐시 기록 로깅이 이네이블되는 경우, 페이지 캐시 기록 로깅의 이네이블먼트에 후속하여 수신되는 기록 요청들은, 씬(102)에 예시된 바와 같이, 기록이 완료된 것으로 확인 응답하기 이전에 페이지 캐시(140) 수행 및 페이지 캐시 기록 로그(130)에의 로그 레코드들 저장에 대한 업데이트들을 가질 수 있다. 상이한 지속성 특성들을 갖는 데이터 볼륨들에 대한 복구 동작들은, 몇몇 실시예에서, 새로운 기록 요청들을 보다 빠르게 수신하기 위해 이용가능한 페이지 캐시 기록 로깅이 이네이블되는 그것들의 데이터 볼륨들 또는 페이지 캐시 기록 로깅이 디세이블되는 그것들의 데이터 볼륨들보다 적은 후속 복구 동작들에 의해 달라질 수 있다.
이전 설명들이 제한하는 것으로 의도되지 않고, 단지 블록-기반 저장장치에서의 페이지 캐시 기록 로깅의 예로서 제공된다는 것을 주의해야 한다. 다양한 다른 구성요소가 로깅, 복구, 또는 기록 요청들을 프로세싱하는 것을 실시하게 하거나 이에 참여할 수 있다. 다른 차이들, 예를 들어, 이를테면 저장 노드들, 데이터 볼륨들, 또는 지속성 기법들(예를 들어, 다수의 노드 상에 데이터 볼륨을 복제하는)의 수가 또한 도 1에 예시된 바와 상이할 수 있다.
이러한 명세는 블록-기반 저장 서비스 제공자의 일반적인 설명으로 시작되며, 이는 페이지 캐시 기록 로깅 및 데이터 볼륨들에 대해 지속성 특성들을 동적으로 변경하는 것을 구현할 수 있다. 그 다음 블록-기반 저장장치 제공자의 부분으로서 채용될 수 있는 상이한 구성요소들/모듈들, 또는 구성요소들/모듈의 배열체들을 포함하는, 블록-기반 저장 서비스 제공자의 다양한 예가 논의된다. 그 다음 페이지 캐시 기록 로깅 및 데이터 볼륨들에 대해 지속성 특성들을 동적으로 변경하는 것을 구현하기 위한 많은 상이한 방법 및 기술이 논의되며, 이들 중 일부는 첨부한 흐름도들로 예시된다. 최종적으로, 다양한 구성요소, 모듈, 시스템, 디바이스, 및/또는 노드가 구현될 수 있는 예시적인 컴퓨팅 시스템의 설명이 제공된다. 다양한 예가 본 명세서 전체에 걸쳐 제공된다.
도 2는 몇몇 실시예에 따른, 스냅샷 동작들 동안 최적화된 기록 수행을 구현하는 블록-기반 저장 서비스를 포함하는 다수의 네트워크-기반 서비스를 구현하는 제공자 네트워크를 예시하는 블록도이다. 제공자 네트워크(200)는 인터넷 및/또는 다른 네트워크들을 통해 클라이언트들(210)로 액세스가능한 하나 이상의 서비스(이를테면 다양한 유형의 클라우드-기반 컴퓨팅 또는 저장)를 제공하기 위해 기업 이를테면 회사 또는 공공 부문 조직에 의해 셋 업될 수 있다. 제공자 네트워크(200)는 제공자 네트워크(200)에 의해 제공되는 기판 및 서비스들을 구현 및 분배하기 위해 요구되는, 다양한 자원 풀을 호스팅하는 많은 데이터 센터, 이를테면 물리적 및/또는 가상화된 컴퓨터 서버들, 저장 디바이스들, 네트워킹 장비 등(예를 들어, 도 14에 관해 아래에서 설명될 컴퓨팅 시스템(2000))을 포함할 수 있다. 몇몇 실시예에서, 제공자 네트워크(200)는 컴퓨팅 자원들, 이를테면 가상 컴퓨트 서비스(230), 저장 서비스들, 이를테면 블록-기반 저장 서비스(220) 및 다른 저장 서비스(240)(다양한 저장장치 유형 이를테면 객체/키-값 기반 데이터 저장소 또는 다양한 유형의 데이터베이스 시스템들을 포함할 수 있는), 및/또는 임의의 다른 유형의 네트워크-기반 서비스들(250)을 제공할 수 있다. 클라이언트들(210)은 네트워크(260)를 통해 제공자 네트워크(200)에 의해 제공되는 이러한 다양한 서비스에 액세스할 수 있다. 마찬가지로 네트워크-기반 서비스들은 그것들 자체로 통신하고/거나 상이한 서비스들을 제공하기 위해 서로 이용할 수 있다. 예를 들어, "인스턴스들", 이를테면 가상 또는 물리적 컴퓨터 인스턴스들 또는 저장 인스턴스들이라고 칭해지는 유닛들로 클라이언트들(210)에 제공되는 컴퓨팅 자원들은, 컴퓨트 인스턴스들에 가상 블록 저장장치를 제공하는, 특정한 데이터 볼륨들(226)을 이용할 수 있다.
위에서 언급된 바와 같이, 가상 컴퓨트 서비스(230)는 클라이언트들(210)에 다양한 컴퓨트 인스턴스를 제공할 수 있다. 가상 컴퓨트 서비스는 예를 들어, 명시된 컴퓨터 용량(CPU들의 유형 및 수, 메인 메모리 크기 등을 나타냄으로써 명시될 수 있는)을 갖는 하나 이상의 서버 및 명시된 소프트웨어 스택(예를 들어, 결과적으로 하이퍼바이저 위에서 실행될 수 있는, 특정한 버전의 운영 체제)을 포함할 수 있다. 다수의 상이한 유형들의 컴퓨팅 디바이스는 범용 또는 전용 컴퓨터 서버들, 저장 디바이스들, 네트워크 디바이스들 등을 포함하여, 가상 컴퓨트 서비스(230)의 컴퓨트 인스턴스들을 구현하기 위해 단독으로 또는 조합하여 사용될 수 있다. 몇몇 실시예에서 인스턴스 클라이언트들(210) 또는 임의의 다른 사용자는 네트워크 트래픽을 컴퓨트 인스턴스로 지시하도록 구성(및/또는 허가)될 수 있다. 다양한 실시예에서, 컴퓨트 인스턴스들은 다양한 동작을 수행하기 위한 영구 블록-기반 저장장치를 획득하기 위해 블록-기반 저장 서비스(220)에 의해 제공되는 하나 이상의 데이터 볼륨(226)에 접속 또는 매핑할 수 있다.
컴퓨트 인스턴스들은 예를 들어 클라이언트(210)에게 인스턴스에 액세스할 것을 요구하지 않고, 클라이언트 어플리케이션들을 수행하기에 적합한 다양한 상이한 플랫폼, 이를테면 어플리케이션 서버 인스턴스, Java™ 가상 기계(JVM), 범용 또는 전용 운영 체제, 다양하게 해석 또는 컴파일링되는 프로그래밍 언어들 이를테면 Ruby, Perl, Python, C, C++ 등을 지원하는 플랫폼, 또는 고-성능 컴퓨팅 플랫폼을 운영 또는 구현할 수 있다. 몇몇 실시예에서, 컴퓨트 인스턴스들은 예상 가동시간 비들에 기초하여 상이한 유형들 또는 구성들을 가진다. 특정한 컴퓨트 인스턴스의 가동시간 비는 인스턴스가 예약되는 총 시간량에 대한, 인스턴스과 활성화되는 시간량의 비로서 정의될 수 있다. 가동시간 비들은 또한 몇몇 구현예에서 이용률로서 지칭될 수 있다. 클라이언트가 인스턴스가 예약되는 비교적 적은 시간 분율(예를 들어, 연중 예약의 30% 내지 35% 동안) 컴퓨트 인스턴스를 사용하기를 기대하는 경우, 클라이언트는 인스턴스를 낮은 가동시간 비 인스턴스로서 예약하기로 결정하고, 연관된 가격 정책에 따라 할인된 시간당 사용료를 지불할 수 있다. 클라이언트가 인스턴스가 대부분 시간을 깨어있기를 요청하는 정상-상태 작업량을 가지기를 기대하는 경우, 클라이언트는 높은 가동시간 비 인스턴스를 예약하고, 훨씬 더 낮은 시간당 사용료를 지불할 수 있으나, 몇몇 실시예에서는 시간당 수수료가 가격 정책에 따라, 실제 사용 시간에 관계 없이, 예약의 전체 지속 기간 동안 청구될 수도 있다. 대응하는 가격 정책을 갖는, 중간 가동시간 비 인스턴스들에 대한 옵션이 또한 몇몇 실시예에서 지원될 수 있으며, 여기서 선불 비용 및 시간당 비용은 대응하는 높은 가동시간 비 및 낮은 가동시간 비 비용들 간의 값이 된다.
컴퓨트 인스턴스 구성들은 또한 범용 또는 전용의 , 이를테면 컴퓨트 집약적 어플리케이션들(예를 들어, 높은-트래픽 웹 어플리케이션들, 광고 서빙, 뱃치 프로세싱, 비디오 인코딩, 분산 분석, 고-에너지 물리학, 게놈 분석, 및 전산 유체 역학)을 위한 컴퓨터 작업 부하, 그래픽 집약적 작업 부하(예를 들어, 게임 스트리밍, 3D 어플리케이션 스트리밍, 서버-측 그래픽 작업 부하, 렌더링, 재무 모델링, 및 기술 설계), 메모리 집약적 작업 부하(예를 들어, 고 성능 데이터베이스들, 분산 메모리 캐시들, 인-메모리 분석, 게놈 어셈블리 및 분석), 및 저장 최적화된 작업 부하(예를 들어, 데이터 웨어하우징 및 클러스터 파일 시스템들)를 갖는 컴퓨트 인스턴스들을 포함할 수 있다. 컴퓨트 인스턴스들의 크기, 이를테면 특정 개수의 가상 CPU 코어들, 메모리, 캐시, 저장장치, 뿐만 아니라 임의의 다른 성능 특성. 컴퓨트 인스턴스들들의 구성들은 또한 특정한 데이터 센터들 내, 이들의 위치, 이용가능 구역, 지리적, 위치, 등 그리고 (예약된 컴퓨트 인스턴스들의 경우) 예약 기간 길이를 포함할 수 있다.
다양한 실시예에서, 제공자 네트워크(200)는 또한 저장 동작들을 수행하기 위해 블록-기반 저장 서비스(220)를 구현할 수 있다. 블록-기반 저장 서비스(220)는 데이터 볼륨들(226a, 226b, 226c, 내지 226n)의 하나 이상의 세트를 저장하기 위한 블록-레벨 저장장치를 제공하는, 다수의 독립 저장 노드(224a, 224b, 224c 내지 224n)로 구성되는, 저장 시스템(예를 들어, 서버 블록 데이터 저장 시스템)이다. 데이터 볼륨들(226)은 특정한 클라이언트들에 매핑되어, 논리 블록들의 연접 세트들로서 가상 블록-기반 저장장치(예를 들어, 하드 디스크 저장장치 또는 다른 영구 저장장치)를 제공할 수 있다. 몇몇 실시예에서, 데이터 볼륨(226)은 다른 블록 저장 동작들, 이를테면 스냅샷 동작들 또는 복제 동작들을 수행하기 위해 다수의 데이터 청크(하나 이상의 데이터 블록을 포함하는)로 분배될 수 있다.
데이터 볼륨(226)의 볼륨 스냅샷은 데이터 볼륨(226)의 상태의 고정 시점 표현일 수 있다. 몇몇 실시예에서, 볼륨 스냅샷들(242)은 데이터 볼륨을 유지하는 저장 노드(224)로부터 원격으로, 이를테면 다른 저장 서비스(240)에 저장될 수 있다. 스냅샷 동작들은 다른 저장 위치, 이를테면 다른 저장 서비스(240) 내 원격 스냅샷 데이터 저장소에 주어진 데이터 볼륨의 스냅샷을 송신, 복사, 및/또는 다르게 보존하도록 수행될 수 있다.
블록-기반 저장 서비스(220)는 블록-기반 저장 서비스(220)의 동작을 보조하기 위해 블록-기반 저장 서비스 제어 영역(222)을 구현할 수 있다. 다양한 실시예에서, 블록-기반 저장 서비스 제어 영역(222)은 제공자 네트워크(200) 내에 위치되는 가상 컴퓨트 서비스(230) 및/또는 다른 네트워크-기반 서비스들 및/또는 임의적으로 네트워크(260)를 통해 이용가능한 제공자 네트워크(200)의 외부에 있는 하나 이상의 다른 데이터 센터, 또는 다른 컴퓨팅 시스템 내에 위치되는 컴퓨팅 시스템들(미도시)에 의해 제공되는 컴퓨트 인스턴스들 상에서 실행하는 프로그램들과 같은, 클라이언트들에 대한 블록 데이터 저장의 이용가능성을 관리하는 것을 보조한다. 데이터 볼륨들(226)에 대한 액세스는 블록 데이터 트랜잭션 명령들에 응답하여, 네트워크(260)를 통해 외부에서 또는 제공자 네트워크(200) 내부에서 내부 네트워크를 통해 제공될 수 있다.
블록-기반 저장 서비스 제어 영역(222)은 사용자 계정들의 관리(예를 들어, 생성, 삭제, 청구, 대금 징수 등)를 포함하여, 블록 레벨 저장 기능을 제공하는 것과 관련된 다양한 서비스를 제공할 수 있다. 블록-기반 저장 서비스 제어 영역(222)은 구성 요청들에 응답하여 데이터 볼륨들(226)의 생성, 사용 및 삭제에 관련된 서비스들을 더 제공할 수 있다. 블록-기반 저장 서비스 제어 영역(222)은 또한 다른 저장 서비스(240) 상의 볼륨 스냅샷들(242)의 생성, 사용 및 삭제에 관련된 서비스들을 제공할 수 있다. 블록-기반 저장 서비스 제어 영역(222)은 또한 데이터 볼륨들(226) 및 그것들의 볼륨들의 스냅샷들(242)의 사용과 관련된 데이터를 감사하는 것 및 수행의 프로세싱 및 수집과 관련된 서비스들을 제공할 수 있다.
제공자 네트워크(200)는 또한 위에서 언급된 바와 같이, 다른 저장 서비스(240)를 구현할 수 있다. 다른 저장 서비스(240)는 블록-기반 저장 서비스(220)에 의해 제공되는 바와 동일하거나 상이한 유형의 저장장치를 제공할 수 있다. 예를 들어, 몇몇 실시예에서 다른 저장 서비스(240)는 객체-기반 저장 서비스를 제공할 수 있으며, 이는 데이터를 데이터 객체들로서 저장 및 관리할 수 있다. 예를 들어, 다양한 데이터 볼륨(226)의 볼륨 스냅샷들(242)은 특정한 데이터 볼륨(226)에 대한 스냅샷 객체들로서 저장될 수 있다. 다른 저장 서비스(240)에 더하여, 제공자 네트워크(200)는 다른 네트워크-기반 서비스들(250)을 구현할 수 있으며, 이는 다양한 상이한 유형의 분석적인, 컴퓨터 상의, 저장장치, 또는 클라이언트들(210)이 다양한 태스크를 수행 또는 요청하게 할 뿐만 아니라, 제공자 네트워크(200)의 다른 서비스들(예를 들어, 블록-기반 저장 서비스(220), 가상 컴퓨트 서비스(230) 및/또는 다른 저장 디바이스(240))을 가능하게 하는 다른 네트워크-기반 시스템을 포함할 수 있다.
클라이언트들(210)은 네트워크 제공자(200)에 요청들을 제출하도록 구성가능한 임의의 유형의 클라이언트를 망라할 수 있다. 예를 들어, 주어진 클라이언트(210)는 웹 브라우저의 적합한 버전을 포함할 수 있거나, 웹 브라우저에 의해 제공되는 실행 환경으로 또는 실행 환경 내 확장으로서 실행하도록 구성되는 플러그-인 모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트(210)는 다양한 동작을 수행하기 위해 제공자 네트워크(200)의 컴퓨트 인스턴스들, 데이터 볼륨(226), 또는 네트워크-기반 서비스를 이용할 수 있는 어플리케이션 이를테면 데이터베이스 어플리케이션(이의 또는 사용자 인터페이스), 미디어 어플리케이션, 오피스 어플리케이션 또는 임의의 다른 어플리케이션을 포함할 수 있다. 몇몇 실시예에서, 그러한 애플리케이션은 모든 유형의 웹 기반 데이터를 위해 완전한 브라우저 지원을 반드시 구현하지 않고도 네트워크-기반 서비스 요청들을 생성 및 프로세싱하기에 충분한 프로토콜 지원(예를 들어, 적합한 버전의 하이퍼텍스트 전송 프로토콜(HTTP)을 위한)을 포함할 수 있다. 몇몇 실시예에서, 클라이언트들(210)은 REST(Representational State Transfer)-유형의 네트워크-기반 서비스 아키텍처, 문서- 또는 메시지-기반의 네트워크-기반 서비스 아키텍처, 또는 다른 적합한 네트워크-기반 서비스 아키텍처에 따라 네트워크-기반 서비스 요청들을 생성하도록 구성될 수 있다. 몇몇 실시예에서, 클라이언트(210)(예를 들어, 컴퓨터 클라이언트)는 컴퓨트 인스턴스에 의해 제공되는 컴퓨터 자원들 또는 데이터 볼륨(226)에 의해 제공되는 블록 저장장치를 이용하는 클라이언트(210) 상의 어플리케이션 구현에 명료한 방식으로 컴퓨트 인스턴스 또는 데이터 볼륨(226)에 액세스하도록 구성될 수 있다.
클라이언트들(210)은 네트워크-기반 서비스 요청들을 외부 네브워크(260)를 통해 제공자 네트워크(200)로 전달할 수 있다. 다양한 실시예에서, 외부 네트워크(260)는 클라이언트들(210) 및 제공자 네트워크(200) 간 네트워크-기반 통신을 확립하는데 필요한 네트워킹 하드웨어 및 프로토콜들의 임의의 적합한 조합을 포함할 수 있다. 예를 들어, 네트워크(260)는 일반적으로 인터넷을 총괄적으로 구현하는 다양한 통신 네트워크 및 서비스 제공자들을 포함할 수 있다. 네트워크(260)는 또한 공중 또는 사설 무선 네트워크들 뿐만 아니라 근거리 네트워크들(LAN들) 또는 광역 네트워크들(WAN들)과 같은 사설 네트워크들을 포함할 수 있다. 예를 들어, 주어진 클라이언트(210) 및 제공자 네트워크(200) 양자는 각각 이들 자체의 내부 네트워크들을 갖는 기업 내에 제공될 수 있다. 그러한 실시예에서, 네트워크(260)는 인터넷 및 제공자 네트워크(200) 간 뿐만 아니라 주어진 클라이언트(210) 및 인터넷 간 네트워킹 링크를 확립하는데 필요한 하드웨어(예를 들어, 모뎀들, 라우터들, 스위치들, 부하 분산장치들, 프록시 서버들 등) 및 소프트웨어(예를 들어, 프로토콜 스택들, 회계 소프트웨어, 방화/보안 소프트웨어 등)을 포함할 수 있다. 몇몇 실시예에서, 클라이언트들(210)은 공중 인터넷이 아닌 사설 네트워크를 사용하여 제공자 네트워크(200)와 통신할 수 있다.
도 3은 몇몇 실시예에 따른, 저장 노드들에서 구현되는 페이지 캐시들에 대한 업데이트들을 위한 페이지 캐시 기록 로그들 및 데이터 볼륨들에 대한 지속성 특성들을 동적으로 변경하는 것을 구현하는 저장 노드들을 예시하는 블록도이다. 다수의 저장 노드, 이를테면 저장 노드들(310a, 310b, 310c 내지 310n)은, 블록-기반 저장 서비스들을 제공하기 위해 구현될 수 있다. 저장 노드(310)는 하나 이상의 컴퓨팅 시스템 또는 디바이스, 이를테면 저장 서버 또는 다른 컴퓨팅 시스템(예를 들어, 도 14에 관하여 아래에서 설명될 컴퓨팅 시스템(2000))일 수 있다 . 각 저장 노드(310)는 데이터 볼륨들의 각각의 복제본들을 유지할 수 있다. 예를 들어, 저장 노드(310a)는 데이터 볼륨들(312a, 312b, 312c, 312d 내지 312n)을 유지하고, 저장 노드(310b)는 데이터 볼륨들(314a, 314b, 314c, 314d 내지 314n)을 유지하고, 저장 노드(310c)는 데이터 볼륨들(316a, 316b, 316c, 316d 내지 316n)을 유지하며, 저장 노드(310n)는 데이터 볼륨들(318a, 318b, 318c, 318d 내지 318n)을 유지한다. 저장 노드들(310)이 동일한 수의 데이터 볼륨을 갖는 것으로 도시되지만, 저장 노드들 상에 유지되는 데이터 볼륨들의 수들은 저장 노드(310)에서 다른 저장 노드(310)까지 다양할 수 있다. 몇몇 데이터 볼륨은 몇몇 실시예에서, 다른 데이터 볼륨들과 크기가 상이할 수 있다. 저장 노드들(310)은 또한 멀티-테넌트 저장장치를 제공할 수 있다. 예를 들어, 몇몇 실시예에서, 저장 노드(310c)에 유지되는 데이터 볼륨(316a)은 블록-기반 저장 서비스(220)의 하나의 계정을 위해 유지될 수 있는 한편, 저장 노드(310c)에 또한 유지되는 데이터 볼륨(316b)은 상이한 계정을 위해 유지될 수 있다. 저장 노드들(310)은 각각의 저장 노드를 구현하는 컴퓨팅 시스템 또는 디바이스에 직접 접속될 수 있는 하나 이상의 블록-기반 저장 디바이스(예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브 등)에 이들의 각각의 데이터 볼륨들을 지속할 수 있다.
블록-기반 저장 서비스(220)는 다양한 상이한 방식으로 데이터 볼륨들을 관리 및 유지할 수 있다. 상이한 지속성 기법들이 데이터 볼륨의 동일한 복제본을 유지하는 두 개 이상의 저장 노드 간에 몇몇 데이터 볼륨에 대해 구현될 수 있다. 예를 들어, 상이한 유형들의 미러링 및/또는 복제 기술들이 이를테면 데이터 볼륨에 대한 단일 고장점을 제거함으로써, 데이터 볼륨의 지속성을 증가시키도록 구현될 수 있다(예를 들어, RAID 1). 데이터 볼륨에 대한 액세스를 제공하기 위해, 저장 노드들은 그 다음 데이터 볼륨의 복제본을 유지하는 두 개 이상의 저장 노드 간에서, I/O 요청들, 이를테면 기록 요청들을 조절할 수 있다. 예를 들어, 주어진 데이터 볼륨(312a)에 대해, 저장 노드(310a)는 마스터 저장 노드로서의 역할을 할 수 있다. 마스터 저장 노드는 다양한 실시예에서, 데이터 볼륨의 클라이언트들로부터 요청들(예를 들어, I/O 요청들)을 수신 및 프로세싱할 수 있다 . 그에 따라, 저장 노드(310a)는 그 다음 I/O 요청들, 이를테면 기록 요청들의 복제, 또는 슬레이브 저장 노드들로서의 역할을 하는 하나 이상의 다른 저장 노드에 대한 데이터 볼륨(312a) 에 대한 임의의 다른 변경들 또는 변형들을 조절할 수 있다. 예를 들어, 저장 노드(310c)는 데이터 볼륨(312a)의 복제본인 데이터 볼륨(316d)을 유지할 수 있다. 그에 따라, 기록 요청이 저장 노드(310a)에 데이터 볼륨(312a)에 대해 수신될 때, 저장 노드(310a)는 기록 요청을 저장 노드(310c)로 포워딩하고 저장 노드(310)에서 기록 요청을 완료하기 전 저장 노드(310c)가 기록 요청을 완료인 것으로 확인 응답할 때까지 대기할 수 있다. 마스터 저장 노드들은 데이터 볼륨들에 대한 다른 동작들, 이를테면 스냅셧 동작들 또는 다른 I/O 동작들(예를 들어, 판독 요청을 제공하는)을 지시할 수 있다.
몇몇 실시예에서, 마스터 및 슬레이브 저장 노드들의 역할이 데이터 볼륨마다 부여될 수 있다는 것을 주의하자. 예를 들어, 저장 노드(310a)에 유지되는 데이터 볼륨(312a)에 대해, 저장 노드(310a)는 마스터 저장 노드로서의 역할을 할 수 있다. 한편 다른 데이터 볼륨, 이를테면 저장 노드(310a)에 유지되는, 데이터 볼륨(312b)에 대해, 저장 노드(310a)는 슬레이브 저장 노드로서의 역할을 할 수 있다.
다양한 실시예에서, 저장 노드들(310)은 각각의 페이지 캐시를 각각 구현할 수 있다. 페이지 캐시는 각각의 저장 노드에 유지되는 데이터 볼륨들(312) 중 하나로부터의 페이지들 또는 데이터의 다른 그룹들을 저장하는 시스템 메모리 또는 다른 메모리 디바이스의 부분일 수 있다. 직접 데이터 볼륨의 요청된 데이터의 부분을 유지하는 블록-기반 저장 디바이스에 기록하거나 이로부터 판독하는 대신, 페이지 캐시가 업데이트될 수 있다. 예를 들어, 판독 요청이 데이터 볼륨의 부분에 대해 수신되는 경우, 그것은 먼저 데이터가 페이지 캐시에 존재하는지 여부를 결정할 수 있다. 만약 그렇다면, 데이터는 페이지 캐시로부터 판독될 수 있다. 만약 그렇지 않다면, 데이터는 데이터 볼륨의 요청된 데이터의 부분을 유지하는 각각의 블록-기반 저장 디바이스로부터 검색되고 장차 사용을 위해 페이지 캐시에 기록될 수 있다. 유사하게, 기록 요청은 영구 블록 저장장치에 유지되는 데이터 볼륨에 지시될 수 있으나 먼저 페이지 캐시에서 완료될 수 있다. 수신된 기록 요청에 대해, 기록될 데이터에 대응하는 페이지 캐시 엔트리(예를 들어, 페이지 캐시에 이미 유지되는 데이터 볼륨의 부분)가 기록 요청에 따라 업데이트될 수 있다. 유사하게, 기록 요청에 의해 변경될 데이터가 페이지 캐시에 존재하지 않는 경우, 데이터는 먼저 데이터를 지속하는 블록-기반 저장 디바이스로부터 획득되고, 페이지 캐시의 새로운 페이지 캐시 엔트리에 기록된 다음, 기록 요청에 따라 업데이트될 수 있다. 페이지 캐시 기술들은 해당 기술분야의 통상의 기술자들에게 주지되어 있으며, 따라서, 이전 예들은 다른 페이지 캐시 기술들에 관해 제한하는 것으로 의도되지 않는다.
다양한 실시예에서, 저장 노드들(310)은 각각의 페이지 캐시 기록 로그들, 이를테면 페이지 캐시 기록 로그들(320a, 320b, 320c 내지 320n)을 구현할 수 있다. 페이지 캐시 기록 로그들은 페이지 캐시(330)에 유지되는 데이터를 변형하는 기록 요청들과 같은, 각각의 페이지 캐시에 대한 업데이트들을 기술하는 로그 레코드들을 저장할 수 있다. 그에 따라, 페이지 캐시(330)에서의 데이터 손실을 야기하는 시스템 또는 다른 고장의 발생 시, 페이지 캐시 기록 로그(320)에서의 로그 레코드들이 페이지 캐시를 고장 이전 상태로 복원하기 위해 사용될 수 있다. 로그 레코드들은 몇몇 실시예에서, 페이지 캐시(330)에 대해 이루어지는 업데이트들의 순서에 따라 순차적으로 저장될 수 있다. 예를 들어, 기록 요청(1A)이 수신, 수행되고, 대응하는 로그 레코드(1A)가 저장된다. 그 다음 기록 요청(1B)이 수신, 수행되고, 대응하는 로그 레코드(1B)가 저장되는 등이다. 로그 레코드들을 순차적으로 저장함으로써, 로그 레코드들은 그것들이 특정한 시점의 페이지 캐시의 상태를 생성하기 위해 저장되는 순서로 리플레이 또는 재-적용될 수 있다.
게다가, 로그 레코드들의 순차적 저장은 로그 레코드들을 저장하기 위한 기록 레이턴시를 감소시킬 수 있다. 페이지 캐시 기록 로그들(320)은 영구 저장 디바이스(예를 들어, 하드-디스크, 고체 상태 드라이브(SSD), 또는 다른 블록-기반 저장 디바이스)로서 구현될 수 있다. 몇몇 실시예에서, 페이지 캐시 기록 로그(320)는 영구 메모리 디바이스, 이를테면 비-휘발성 랜덤 액세스 메모리(NV RAM), 배터리 또는 용량 추적 메모리, 또는 다른 유형들의 멤리스터 기반 저항성 랜덤 액세스 메모리(ReRAM), 3-차원 NAND 기술들, 강유전성 RAM, 자기저항성 RAM(MRAM), 또는 임의의 다양한 유형의 상 변화 메모리(PCM) 상에 구현될 수 있다. 그러한 유형들의 영구 저장 디바이스들로의 순차적 기록들은 보통 랜덤 액세스 기록들보다 빠르다. 다양한 실시예에서, 페이지 캐시 기록 로그들(320)은 저장 노드에 대해 전용 블록 저장 디바이스 상에 구현될 수 있다. 페이지 캐시 기록 로그를 지속하는 영구 저장 디바이스는 몇몇 실시예에서, 저장 노드에 데이터 볼륨들을 지속하는 블록-기반 저장 디바이스들과 별개일 수 있다.
저장 노드들(310)은 각각의 I/O 관리기들, 이를테면 I/O 관리기들(340a, 340b, 340c 내지 340n)을 구현할 수 있다. I/O 관리기들(340)은 특정한 저장 노드에 유지되는 데이터 볼륨들에 지시되는 I/O 요청을 핸들링할 수 있다. 그에 따라, I/O 관리기(340b)는 예를 들어, 저장 노드(310b)의 볼륨(314b)에 대한 기록 요청을 프로세싱 및 핸들링할 수 있다. I/O 관리기(340)는 블록-기반 저장 서비스 응용 프로그램 인터페이스(API) 및/또는 다른 통신 프로토콜들, 이를테면 이를테면 인터넷 소형 컴퓨터 시스템 인터페이스(iSCSI)에 따라 I/O 요청들을 프로세싱하도록 구성될 수 있다. 몇몇 실시예에서, I/O 관리기들(340)은 각각의 로그 관리 구성요소들, 이를테면 관리부(342a, 342b, 342c 내지 342n)를 구현할 수 있다. 로그 관리 구성요소들은 다양한 로그 관리 기능, 이를테면 도 4, 도 7 및 도 8에 관하여 아래에서 더 상세하게 논의될, 로그 레코드들을 트리밍하는 것 및/또는 적어도 부분적으로, 로그 레코드들에 기초하여 페이지 캐시 복구를 수행하는 것을 수행할 수 있다.
도 4는 몇몇 실시예에 따른, 저장 노드에서의 페이지 캐시에 대한 페이지 캐시 기록 로그의 로그 엔트리들을 트리밍하도록 구성되는 저장 노드를 예시하는 블록도이다. I/O 관리기(420)에 구현되는 로그 관리 모듈(422)은 저장 노드(402)에서의 페이지 캐시 기록 로그(400)에 대한 로그 동작들을 제어할 수 있다. 로그 관리 모듈(422)은 트리밍 동작을 수행할 때(예를 들어, 도 8에 관하여 아래에서 논의될 바와 같은 트림 이벤트를 검출)를 결정할 수 있다. 로그 관리 모듈은 먼저 트리밍 동작이 시작되는 로그에서의 트림 포인트(412), 이를테면 로그(400)에서의 포인트를 표시할 수 있다. 공유되는 로그 레코드들(410)은 트림 포인트 이전에 공유된 그리고 그에 따라 트리밍될 자격이 있는(페이지 캐시가 전체적으로 플러싱되는 경우 그것들이 유지될 필요가 없기 때문에) 로그 레코드들이다. 로그 관리 모듈(414)은 페이지 캐시(430)에 캐시 플러시를 시작할 것(414)을 명령할 수 있다. 하나 이상의 플러시 동작은 볼륨들(440a, 440b, 내지 440n)을 유지하는 각각의 블록-기반 저장 디바이스들로 페이지 캐시 엔트리들을 플러싱(432)하도록 수행될 수 있다. 페이지 캐시 엔트리들이 플러싱되면, 볼륨들(440)을 유지하는 블록-기반 저장 디바이스들은 페이지 캐시(430)에 이전에 저장된 완료된 기록 동작들을 지속적으로 저장할 수 있다. 몇몇 실시예에서, 로그 관리 모듈(422)은 플러시 동작들의 크기를 결정하여, 한 번에 플러싱되는 페이지 캐시의 부분들을 증가 또는 감소시킬 수 있다. 캐시 플러시가 완료되었다(416)는 표시가 수신되면, 그 다음 로그 관리 모듈은 로그 트림 포인트 이전 로그 레코드들을 반환(418)(예를 들어, 삭제 및 이용가능한 것으로 표시)하여, 추가 로그 레코드들을 위한 공간을 자유화할 수 있다.
도 5는 몇몇 실시예에 따른, 블록-기반 저장장치에 유지되는 데이터 볼륨들에 대한 선택적인 페이지 캐시 기록 로깅을 예시하는 블록도이다. 위에서 언급된 바와 같이, 몇몇 실시예에서 페이지 캐시 기록 로깅이 데이터 볼륨마다를 기초로 이네이블 또는 디세이블될 수 있다. I/O 관리기(420)에 수신되는 기록(들)(502)은 로그 관리 모듈(422)을 통해 지시될 수 있다. 로그 관리 모듈(422)은 특정한 데이터 볼륨에 대한 지속성 특성 여부(페이지 캐시 기록 로깅이 이네이블되는지 또는 디세이블되는지를 나타내는)를 결정하도록 구성될 수 있다. 예시된, 예시적인, 볼륨 제어부들(520b 및 520c)은 기록 요청들(504)에 대한 페이지 캐시 로깅이 페이지 캐시 기록 로그(400)로 가는 것을 방지한다. 한편 페이지 캐시 기록 로깅을 가능하게 하도록 이네이블되는 지속성 특성을 갖는 데이터 볼륨들로 지시되는 다른 기록들(504)은 506을 통해 전달되고 페이지 캐시 기록 로그(400)에 로그 레코드들(508)로서 기록된다.
몇몇 실시예에서, 볼륨 로그 관리부(422)는 도 10 및 도 11에 관하여 아래에서 논의될 바와 같이, 데이터 볼륨들에 대한 지속성 특성들의 동적 변형을 수행할 수 있다. 예를 들어, I/O 관리기(420) 및/또는 로그 관리 모듈(422)은 로깅될 착신 기록 요청들의 레이트를 모니터링하고 착신 레이트에 기초하여 하나 이상의 데이터 볼륨의 지속성 특성들을 동적으로 변형할 수 있다. 로그 관리부(422)에 수신되는 다른 데이터, 이를테면 제어 영역 데이터(510), 이를테면 저장 노드에 유지되는 데이터 볼륨들의 동일한 복제본들 중 하나 이상을 유지하는 다른 저장 노드들에 대한 지속성 특성들을 나타내는 데이터가, 또한 데이터 볼륨에 대한 지속성 특성들을 동적으로 변형하기 위해 사용될 수 있다.
도 2 내지 도 5에 관하여 위에서 논의된 데이터 볼륨들을 유지하는 블록-기반 저장장치에 대한 페이지 캐시 기록 로깅의 예들이 블록-기반 저장 서비스에 관하여 주어졌다. 다양한 다른 유형들 또는 구성들의 블록-기반 저장장치가 이러한 기술들을 구현할 수 있다. 예를 들어, 블록-기반 저장장치의 클라이언트(데이터 볼륨에 대한 기록 요청들을 송신하는 어플리케이션, 운영 체제, 또는 다른 구성요소)는 스냅샷 동작을 수행하는 저장 노드와 동일한 컴퓨팅 시스템 상에 구현될 수 있다. 상이한 구성들의 저장 노드들은 또한 데이터 볼륨에 대해 다양하게 구성된 저장 노드들에 의해 수행되는 페이지 캐시 기록 로깅을 구현할 수 있는 다양한 수의 복제본들, 미러링, 또는 다른 지속성 기술들을 구현할 수 있다. 도 6은 몇몇 실시예에 따른, 블록-기반 저장장치에서의 페이지 캐시 기록 로깅을 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다. 이러한 기술들은 도 2 내지 도 5에 관하여 위에서 설명된 바와 같이 하나 이상의 저장 노드(또는 블록-기반 저장장치에데이터 볼륨을 유지하는 다른 시스템 유지)를 사용하여 구현될 수 있다 .
610에 표시된 바와 같이, 다양한 실시예에서, 저장 노드에 유지되는 블록-기반 저장 디바이스에 데이터 볼륨에 대한 기록 요청이 수신될 수 있다. 기록 요청는 데이터 볼륨을 기록, 삭제, 변경 또는 다르게 변형할 수 있다. 변형된 데이터에 대한 대응하는 엔트리는 620에 표시된 바와 같이, 기록 요청에 대한 저장 노드에서의 시스템 메모리의 페이지 캐시에서 업데이트될 수 있다. 마찬가지로, 병렬로 또는 거의 병렬로, 페이지 캐시 기록 로그의 대응하는 엔트리에 대한 업데이트를 기술하는 로그 레코드가 저장될 수 있다. 예를 들어, 로그 레코드는 변형 또는 새로운 데이터의 추출값을 포함할 수 있거나, 또는 업데이트가 파생될 수 있는 값(예를 들어, 이전 값 +1)을 포함할 수 있다. 페이지 캐시의 대응하는 엔트리를 업데이트하는 것 및 페이지 캐시 기록 로그에 대응하는 엔트리를 기술하는 로그 레코드를 저장하는 것에 응답하여, 기록 요청은 640에 표시된 바와 같이, 완료인 것으로 확인 응답될 수 있다. 페이지 캐시는 몇몇 실시예에서, 플러시 동작의 부분으로서 데이터 볼륨의 업데이트된 부분을 유지하는 영구 저장장치에 엔트리가 기록된 시간까지 업데이트된 엔트리를 유지할 수 있다.
위에서 언급된 바와 같이, 페이지 캐시 기록 로그에 로그 레코드들을 보존하는 것은 페이지 캐시에서의 데이터 손실을 야기하는 시스템 고장 이전 페이지 캐시의 상태가 페이지 캐시에 복원되는 것을 가능하게 할 수 있다. 도 7은 몇몇 실시예에 따른, 페이지 캐시 기록 로그로부터의 페이지 캐시 복구를 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다. 710에 표시된 바와 같이, 시스템 고장에서의 복구가 저장 노드에서 발생할 수 있다. 시스템 고장은 일반적으로 시스템 메모리의 페이지 캐시에서의 데이터 손실을 야기하는 임의의 고장, 이를테면 전원 또는 소프트웨어 고장일 수 있다. 복구 시, 페이지 캐시의 상태를 기술하는 페이지 캐시 기록 로그를 저장하는 영구 저장 디바이스에 저장된 로그 레코드들이 720에 표시된 바와 같이, 획득될 수 있다. 예를 들어, 로그 레코드들은 데이터 볼륨을 유지하는 저장 노드에 대한 하나 이상의 상이한 복구 동작, 루틴, 또는 프로세스의 부분으로서 페이지 캐시 로그에서 순차적으로 판독될 수 있다.
730에 표시된 바와 같이, 페이지 캐시 기록 로그에서 획득된 로그 레코드들은 시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 기록하기 위해 적용될 수 있다. 예를 들어, 로그 레코드들이 페이지 캐시 로그에 대한 업데이트들을 기술하기 때문에, 로그 레코드들은 몇몇 실시예에서, 순차적으로 리플레이되어, 페이지 캐시의 상태를 복원하기 위해 페이지 캐시에 대한 업데이트들을 재생성할 수 있다. 몇몇 실시예에서, 로그 레코드들은 페이지 캐시 기록 로그에서의 이전 로그 레코드들에 따르거나 이와 관계 없을 수 있다. 복원되면, 저장 노드는 몇몇 실시예에서, I/O 요청들을 프로세싱하기에 이용가능하게 될 수 있다.
다양한 실시예에서, 기록 요청들이 매우 빈번하게 발생할 수 있기 때문에, 시간이 흐르면서 대형 페이지 캐시 기록 로그도 꽉 차게 될 수 있다. 도 8은 몇몇 실시예에 따른, 페이지 캐시 기록 로그를 트리밍하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다. 810에 표시된 바와 같이, 트림 이벤트가 저장 노드를 위해 페이지 캐시에 대한 업데이트들을 기술하는 로그 레코드들을 유지하는 페이지 캐시 로그에 대해 검출될 수 있다. 트림 이벤트는 페이지 캐시 기록 로그에서의 이용가능한 저장 공간이 상당한 임계치를 초과한다는 표시 또는 결정일 수 있다. 다른 표시들 또는 결정들이 추가적으로, 또는 대안적으로 사용될 수 있다. 예를 들어, 시간량이 이전 트림 이벤트 이후 경과되었다는 트리머 또는 다른 표시가 트림 이벤트를 트리거할 수 있다. 몇몇 실시예에서, 트림 이벤트는, 페이지 캐시 기록 로그에서의 로그 레코드들의 연접 부분이 더 이상 지속적일 필요가 없을 수 있도록, 더티 페이지들의 페이지 캐시 플러기가 발생했을 때 검출될 수 있다.
페이지 캐시 로그에 대한 트림 이벤트를 검출하는 것에 응답하여, 페이지 캐시 로그에서의 트림 위치가 식별될 수 있다. 트림 위치는 트림 이벤트 시 로그에서의 현재 위치일 수 있다. 트림 이벤트 위치는 트리밍이 수행되는 동안 아른 곳에 저장 또는 레코딩될 수 있다. 830에 표시된 바와 같이, 플러시 동작들은 다양한 실시예에서, 시스템 메모리로부터 데이터 볼륨을 저장하는 블록-기반 저장 디바이스로 페이지 캐시 엔트리들을 기록하기 위해 수행될 수 있다. 플러시 동작들은 블록-기반 저장 디바이스들에서의 이들의 대응하는 위치들에 페이지 캐시의 부분들의 콘텐츠를 기록할 수 있다. 몇몇 실시예에서, 단지 변형된(즉 더티) 페이지 캐시의 그것들의 부분들이 플러싱될 수 있다.
적어도 몇몇 실시예에서, 페이지 캐시 플러시 동작들의 크기에 관한 결정이 이루어질 수 있다. 예를 들어, 플러시 동작들의 수행 동안 페이지 캐시의 플러싱된 부분으로의 기록 요청들이 차단된다. 플러싱된 영역의 부분의 크기는 차단되는 특정한 기록 요청들에 추가되는 레이턴시와 대조를 이루어 로그가 트리밍될 필요가 있는 속도에 따라 조절될 수 있다. 예를 들어, 기록 요청들이 플러시 동작의 플러싱된 영역 내에 있는 페이지 캐시의 부분에 기록될 수 있는 경우, 플러싱된 영역의 부분의 크기는 특정한 기록 요청이 차단될 수 있는 가능성을 증가 또는 감소시킴으로써 진행 중인 기록 요청들에 대한 레이턴시를 증가 또는 감소시킬 수 있다. 플러시 동작들의 완료 시, 페이지 캐시 로그를 유지하는 영구 저장 디바이스의 부분들이 840에 표시된 바와 같이, 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 반환될 수 있다.
몇몇 실시예에서, 제어 영역 또는 다른 시스템 구성요소는 블록-기반 저장장치에 데이터 볼륨들을 유지하는 저장 노드들에 대한 페이지 캐시 기록 로깅의 전개, 구현, 및/또는 이네이블먼트를 지시할 수 있다. 도 9는 몇몇 실시예에 따른, 페이지 캐시 기록 로깅 기술들을 효율적으로 사용하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다. 910에 표시된 바와 같이, 페이지 캐시 기록 로그를 유지하지 않는 블록-기반 저장 시스템의 저장 노드들이 식별될 수 있다. 예를 들어, 시스템 레벨 메타데이터가 페이지 캐시 기록 로깅이 구현될지 여부를 포함하여, 저장 노드들의 버전, 구성, 또는 상태를 나타내게 유지될 수 있다. 920에 표시된 바와 같이, 식별된 저장 노드들은 각 저장 노드에 대한 지속성 스코어를 결정하도록 평가될 수 있다. 예를 들어, 특정한 저장 노드가 전원이 고장나기 쉬운 데이터 센터 또는 다른 물리적 또는 지리적 위치에서 구현되는 경우, 그러한 정보는 저장 노드에 대한 지속성 스코어를 낮출 수 있다. 유사하게, 동일한 데이터 센터 또는 지리적 위치의 피어들 대부분이 페이지 캐시 기록 로깅을 구현한 경우, 지속성 스코어는 상승될 수 있다. 많은 다른 요인, 이를테면 저장 노드 상에 유지되는 데이터 볼륨들 대부분이 페이지 캐시 기록 로깅이 이네이블된 다른 저장 노드들 상에 복제본들을 갖는지 여부가, 저장 노드에 대한 지속성 스코어에 영향을 미칠 수 있다. 이러한 다양한 요인에 의존적인 상이한 가중치들, 조합들, 또는 다른 계산들이 특정한 저장 노드에 대한 지속성 스코어를 결정하기 위해 사용될 수 있다. 따라서, 이전 예들은 지속성 스코어에 영향을 미칠 수 있는 다양한 다른 요인에 관해 제한적인 것으로 의도되지 않는다.
930에 표시된 바와 같이, 저장 노드들에 대하 지속성 스코어들에 기초하여, 하나 이상의 저장 노드가 다양한 실시예에서, 페이지 캐시 기록 로깅을 구현하기 위해 선택될 수 있다. 그러한 선택들은 상이한 통신 메커니즘들에 따라 다양한 상이한 블록-기반 저장 서비스 운영 또는 관리 인터페이스에 제공될 수 있다. 몇몇 실시예에서, 도 9에 예시된 기술들은 블록-기반 저장 서비스를 구현하는 저장 노드들의 주어진 서브세트(예를 들어, 특정한 공간, 데이터 센터, 또는 다른 지리적 위치 또는 그룹) 또는 블록-기반 저장 서비스를 구현하는 저장 노드의 전체 무리에 대해 주기적으로 또는 비주기적으로 수행될 수 있다. 도 9의 방법의 각 반복은 몇몇 실시예에서, 할당된 사전-정의된 수의 전개일 수 있고, 그에 따라 저장 노드들이 이용가능한 전개들의 수가 부여될 때까지 지속성 스코어에 기초하여 선택될 수 있다.
페이지 캐시 기록 로깅은 다양한 실시예에서, 저장 노드에서 유지되는 데이터 볼륨들의 지속성을 증가시킬 수 있다. 로그 레코드들을 페이지 캐시 기록 로그에 저장함으로써, 페이지 캐시의 상태가 시스템 고장 발생 시 복원될 수 있을 수 있다. 그러나, 몇몇 실시예에서, 페이지 캐시 기록 로깅을 수행하는 것의 증가된 부담은 페이지 캐시 기록 로그를 유지하는 영구 저장 디바이스들의 능력들을 초과하거나 기록 요청들의 수행을 방해할 수 있다. 보다 미세한 페이지 캐시 기록 로깅을 가능하게 하는 것은 저장 노드가 지속성을 최대화하고 레이턴시를 최소화하기 위해 이의 성능을 효율적으로 조정하는 것을 가능하게 할 수 있다. 도 10은 몇몇 실시예에 따른, 저장 노드에 유지되는 데이터 볼륨들에 대한 지속성 특성들을 동적으로 변경하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
1010에 표시된 바와 같이, 페이지 캐시에 대한 업데이트들을 기술하는 로그 레코드들을 저장하는 페이지 캐시 기록 로그가 다양한 실시예에서, 다수의 데이터 볼륨을 유지하는 저장 노드에 수신된 기록 요청에 대해 유지될 수 있다. 페이지 캐시 기록 로그는 위에서 논의된 바와 같이, 영구 저장 디바이스에 유지될 수 있다. 영구 저장 디바이스는 블록-기반 저장 디바이스, 이를테면 하드 디스크 드라이브 또는 고체 상태 드라이브일 수 있다. 몇몇 실시예에서, 몇몇 실시예에서는 비-휘발성 랜덤 액세스 메모리 디바이스(NV-RAM)일 수 있다. 로그 레코드들은 기록 레이턴시를 감소시키기 위해, 순차적으로 영구 저장 디바이스에 기록 및/또는 저장될 수 있다. 상이한 데이터 볼륨에 대한 로그 레코드들은 기록 요청이 페이지 캐시를 업데이트하기 위해 수행된 때에 기초하여 저장될수 있고, 몇몇 실시예에서, 동일한 데이터 볼륨에 대한 로그 레코드들과 그룹화 또는 저장되지 않을 수 있다.
1020에 표시된 바와 같이, 페이지 캐시 기록 로그에 로깅될 착신 기록 요청들의 레이트가 다양한 실시예에서 모니터링될 수 있다. 도 11에 관하여 아래에서 논의될 바와 같이, 레이트는, 몇몇 실시예에서, 로깅될 시간 기간 내에 수신되는 기록 요청들의 수의 간단한 측정치일 수 있다. 레이트는 또한 기록 요청들을 수행하기 위해 수행될 작업량(예를 들어, 초당 입력/출력 동작들(IOPS; input/output operations per second))을 나타내는 측청치로 변환될 수 있다. 기록 요청들의 모니터링은 다양한 실시예에서, 지속적으로, 주기적으로, 또는 비주기적으로 수행될 수 있다.
1030에 표시된 바와 같이, 적어도 부분적으로, 로깅될 저장 노드로의 착신 기록 요청들의 레이트에 기초하여, 데이터 볼륨들 중 하나(또는 그 이상)에 대한 지속성 특정이 동적으로 변경될 수 있다. 지속성 특성은 다양한 실시예에서, 페이지 캐시 기록 로깅이 데이터 볼륨에 대해 이네이블되는지 또는 디세이블되는지를 나타낼 수 있다. 그에 따라, 지속성 특성을 변경함으로써, 특정한 데이터 볼륨로 지시되는 기록 요청들은 기록 요청이 수신될 때 데이터 볼륨에 대한 지속성 특성의 현재 상태에 따라, 로깅되거나 로깅되지 않을 수 있다. 몇몇 실시예에서, 동적 변경들은 저장 노드에 유지되는 데이터 볼륨들 전체를 포함할 수 있다. 예를 들어, 페이지 캐시 기록 로깅은 몇몇 실시예에서, 모든 데이터 볼륨에 대해 디세이블(또는 이네이블)될 수 있다.
저장 노드로의 착신 기록 요청들의 레이트를 모니터링하는 것은 저장 노드가 변화하는 조건들, 이를테면 수신된 기록 요청들의 수의 극적인 증가 또는 감소에 적응하게 할 수 있다. 도 11은 몇몇 실시예에 따른, 데이터 볼륨들에 대한 페이지 캐시 기록 로깅을 이네이블할지 또는 디세이블할지를 결정하기 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다. 착신 기록 요청들의 레이트가 개선적으로 실행하기 위해, 또는 저장 노드에 유지되는 데이터 볼륨들에 대한 성능 및 지속성을 최대화하기 위해 사용될 수 있다.
1110에 표시된 바와 같이, 페이지 캐시 기록 로그에 로깅될 저장 노드(110)로의 착신 기록 요청들의 레이트가 결정될 수 있다. 이러한 레이트는, 몇몇 실시예에서, 시간 기간 내에 수신되는 기록 요청들의 수의 간단한 측정치일 수 있다. 레이트는 또한 기록 요청들을 수행하기 위해 수행될 작업량(예를 들어, 초당 입력/출력 동작들(IOPS; input/output operations per second))을 나타내는 측청치로 변환될 수 있다. 결정되면, 1120에 표시된 바와 같이, 착신 기록 요청들의 레이트는 로깅 레이트 상한과 비교될 수 있다. 로깅 레이트 상한은, 몇몇 실시예에서, 페이지 캐시 기록 로그를 구현하는 영구 저장 디바이스의 상당한 스루풋 능력에 대응하도록 결정 또는 구성될 수 있다. 예를 들어, 하드 디스크 드라이브가 최대 8000 IOPS에서 수행할 수 있는 경우, 로깅 레이트 상한은 하드 디스크 드라이브의 최대 스루풋의 또는 그 미만의 상당한 수로 결정될 수 있다(예를 들어, 7000 IOPS). 몇몇 실시예에서, 로깅 레이트 상한은 지속성 특성들 시간의 동적 변경들이 (로그 레코드 손실 또는 블록된 기록 요청들 - 페이지 캐시 기록 로그가 따라잡을 때까지 기록 요청들이 블록될 수 있기 때문에 - 을 야기할 수 있는) 디바이스의 스루풋 능력을 초과하지 않고 현재 레이트를 낮추게 하기 위해 영구 저장 디바이스의 최대 스루풋보다 낮게 설정될 수 있다.
결정된 착신 기록 요청들의 레이트가 로깅 레이트 상한을 초과하는 경우, 1120으로부터의 긍정적 엑시트(exit)에 의해 표시된 바와 같이, 하나 이상의 데이터 볼륨의 선택이 로깅될 착신 기록 요청들의 레이트를 로깅 레이트 상한 미만으로 낮추기 위해 선택된 데이터 볼륨들에 대한 페이지 캐시 기록 로깅을 디세이블하기 위해, 이루어질 수 있다. 데이터 볼륨의 선택은 현재 페이지 캐시 기록 로깅이 이네이블된 저장 노드에서의 데이터 볼륨들로부터 이루어질 수 있다. 예를 들어, 10개의 데이터 볼륨 중 8개가 페이지 캐시 기록 로깅이 이네이블된 경우, 선택이 10개의 데이터 볼륨 중 8개에서 이루어질 수 있다.
선택은 몇몇 상이한 요인에 기초하여 이루어질 수 있다. 예를 들어, 선택은 각 데이터 볼륨의 크기에 기초할 수 있다. 예를 들어, 가장 큰 데이터 볼륨은 불균형적으로 많은 양의 기록 요청들을 수신할 수 있다. 선택은 또한 특정한 데이터 볼륨에 지시되는 기록 요청들의 수에 기초하여 이루어질 수 있다. 예를 들어, 데이터 볼륨이 작지만, 빈번한 기록 요청들을 수신하는 경우, 작은 데이터 볼륨은 로깅될 착신 기록 요청들의 레이트를 레이트 상한을 초과하게 푸시할 수 있다. 이러한 그리고 다양한 다른 요인에 기초하여, 하나 이상의 데이터 볼륨이 선택될 수 있다. 예를 들어, 데이터 볼륨들은 각 데이터 볼륨과 연관된 기록 요청들의 추청 레이트를 가질 수 있다. 데이터 볼륨들은, 선택된 데이터 볼륨들에 대한 기록 요청들의 추정 레이트가 착신 기록요청들의 레이트를 수용가능한 양으로 낮아질 때까지, 계속해서 선택될 수 있다. 몇몇 실시예에서, 데이터 볼륨들의 순서 또는 우선순위 기법이 다른 것들보다 일부 데이터 볼륨을 선택하기 위해 강제될 수 있다. 예를 들어, 몇몇 실시예에서, 다른 저장 노드들에 유지되는 데이터 볼륨들의 복제본들에 대한 지속성 특성들이 알려져 있을 수 있다. 그에 따라 특정한 데이터 볼륨이 다른 데이터 볼륨보다 높은 수의 기록 요청을 가지나, 특정한 데이터 볼륨이 단지 이러한 저장 노드(복제본들이 유지되는 다른 저장 노드들이 아닌)에 페이지 캐시 기록 로깅을 가지는 경우, 특정한 데이터 볼륨은 선택에 대해 배제되거나 순서 또는 우선순위 기법에서 낮아질 수 있다. 선택되면, 선택된 데이터 볼륨에 대한 페이지 캐시 기록 로깅은 1140에 표시된 바와 같이, 디세이블될 수 있다.
몇몇 실시예에서, 페이지 캐시 기록 로그에 로깅될 착신 기록 요청들의 레이트는 또한 1150에 표시된 바와 같이, 로깅 레이트 하한과 비교될 수 있다. 로깅 레이트 상한에 관해, 위에서 논의된 분석과 유사한, 로깅 레이트 하한은 저장 노드가 추가적인 페이지 캐시 기록 로깅을 이네이블할 수 있을 수 있는 해당 착신 기록 요청들의 레이트를 나타낼 수 있다. 예를 들어, 로깅 레이트 하한은, 로깅 레이트 하한 미만의 레이트가 공산이 크거나 이력상 평균 데이터 볼륨이 로깅 레이트 상한(1120)을 초과하지 않고 기록 로깅이 이네이블될 수 있음을 나타내도록, 볼륨당 기록 요청들의 평균 수에 기초하여 결정 또는 설정될 수 있다.
데이터 볼륨(또는 데이터 볼륨들)의 선택은 페이지 캐시 기록 로깅이 디세이블된 그것들의 데이터 볼륨에서 이루어질 수 있다. 위에서 논의된 바와 같이, 선택은 각 데이터 볼륨의 크기에 기초할 수 있다. 예를 들어, 가장 작은 데이터 볼륨은 불균형적으로 적은 양의 기록 요청들을 수신할 수 있다. 선택은 또한 특정한 데이터 볼륨에 지시되는 기록 요청들의 수에 기초하여 이루어질 수 있다. 예를 들어, 데이터 볼륨이 크지만, 이력적으로 빈번하지 않은 수의 기록 요청을 수신하는 경우, 큰 데이터 볼륨은 로깅될 착신 기록 요청들의 레이트를 레이트 상한을 초과하게 푸시하지 않을 수 있다.. 이러한 그리고 다양한 다른 요인에 기초하여, 1160에 표시된 바와 같이 하나 이상의 데이터 볼륨이 선택될 수 있다. 예를 들어, 데이터 볼륨들은 각 데이터 볼륨과 연관된 기록 요청들의 추청 레이트를 가질 수 있다. 데이터 볼륨들은, 선택된 데이터 볼륨들에 대한 기록 요청들의 추정 레이트가 착신 기록요청들의 레이트를 로깅 레이트 하한을 초과하게 상승시킬 때까지, 계속해서 선택될 수 있다. 몇몇 실시예에서, 데이터 볼륨들의 순서 또는 우선순위 기법이 다른 것들보다 일부 데이터 볼륨을 선택하기 위해 강제될 수 있다. 예를 들어, 몇몇 실시예에서, 다른 저장 노드들에 유지되는 데이터 볼륨들의 복제본들에 대한 지속성 특성들이 알려져 있을 수 있다. 그에 따라 특정한 데이터 볼륨이 다른 데이터 볼륨보다 높은 수의 기록 요청을 가지나, 특정한 데이터 볼륨이 단지 임의의 저장 노드(데이터 볼륨의 복제본들이 유지되는)에서 페이지 캐시 기록 로깅이 이네이블되지 않는 경우, 특정한 데이터 볼륨은 선택에 대해 순서 또는 우선순위 기법에서 선호될 수 있다. 선택되면, 선택된 데이터 볼륨에 대한 페이지 캐시 기록 로깅은 1170에 표시된 바와 같이, 이네이블될 수 있다.
1150으로부터 1110으로 돌아가는 부정적 엑시트는 다양한 실시예에서, 이러한 평가가 착신 기록 요청들의 레이트가 모니터링되는 동안 반복적으로 수행될 수 있음을 나타낸다. 이러한 식으로, 데이터 볼륨들의 지속성 특성들에 대한 조절들이 시간이 흐르면서 이루어질 수 있다.
저장 노드에 유지되는 데이터 볼륨들에 대한 지속성 특성들은 시간에 따라 동적으로 변경될 수 있기 때문에, 동일한 데이터 볼륨에 대한 기록 요청은 한 시점에 페이지 캐시 기록 로깅과 그리고 다른 시점에는 페이지 캐시 기록 로깅 없이 프로세싱될 수 있다. 도 12는 몇몇 실시예에 따른, 특정한 데이터 볼륨의 지속성 특성들에 따라 특정한 데이터 볼륨에 대한 저장 노드에서의 기록 요청들을 프로세싱하는 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
1210에 표시된 바와 같이, 기록 요청이 데이터 볼륨에 대해 수신될 수 있다. 메타데이터 또는 다른 정보는 데이터 볼륨들의 지속성 특성을 나타내는 저장 노드에 유지될 수 있다. 메타데이터는 1220에 표시된 바와 같이, 페이지 캐시 기록 로깅이 데이터 볼륨에 대해 이네이블되는지 여부를 결정하기 위해 평가될 수 있다. 만약 그렇다면, 페이지 캐시는 1250에 표시된 바와 같이, 기록에 대해 업데이트될 수 있고, 페이지 캐시에 대한 업데이트를 기술하는 로그 레코드는 1260에 표시된 바와 같이, 저장 노드에서의 페이지 캐시 기록 로그에 저장될 수 있다. 도 6에 관하여 위에서 언급된 바와 같이, 몇몇 실시예에서 기록에 대한 페이지 캐시에 대한 업데이트(1250) 및 페이지 캐시 기록 로그에의 로그 레코드의 저장(1260)은 병렬로 또는 거의 병렬로(예를 들어, 동일한 시간에 시작되나 하나의 동작이 다른 동작 이전에 완료됨) 수행될 수 있다. 페이지 캐시가 업데이트되고 로그 레코드가 저장되면, 기록 요청은 1270에 표시된 바와 같이, 완료인 것으로 확인 응답될 수 있다. 페이지 캐시 기록 로깅이 1220으로부터의 부정적 엑시트에 의해 표시된 바와 같이, 데이터 볼륨에 대해 이네이블되지 않는 경우, 페이지 캐시는 1230에 표시된 바와 같이, 기록 요청에 대해 업데이트될 수 있고, 기록 요청은 페이지 캐시 기록 로그에 로그 레코드를 저장하지 않고, 1240에 표시된 바와 같이, 완료인 것으로 확인 응답될 수 있다.
도 7에 관하여 위에서 논의된 바와 같이, 페이지 캐시 기록 로그의 로그 레코드들은 시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 복원하기 위해 리플레이될 수 있다. 이러한 식으로, 완료인 것으로 확인 응답된 기록 요청들은, 페이지 캐시가 데이터 볼륨들을 유지하는 블록-기반 저장 디바이스들에 페이지 캐시 엔트리들을 플러싱하지 않았을 수 있더라도, 손실되지 않을 수 있다. 따라서, 현재 버전의 데이터 볼륨이 블록-기반 저장 디바이스들에 저장될 때 그리고 페이지 캐시 기록 로그에 기술될 때 데이터 볼륨에 기초하여 유지될 수 있다. 페이지 캐시 기록 로깅이 저장 노드에서의 특정한 데이터 볼륨들에 대해 이네이블 및 디세이블될 수 있기 때문에, 저장 노드 상의 몇몇 데이터 볼륨은 통용되는 것일 수 있는 한편, 다른 것들은 그렇지 않을 수 있다. 도 13은 몇몇 실시예에 따른, 기록 로깅 이네이블 및 디세이블에 따라 데이터 볼륨 복구를 위한 다양한 방법 및 기술을 예시하는 상위-레벨 흐름도이다.
1310에 표시된 바와 같이, 저장 노드는 시스템 고장에서 복구될 수 있다. 저장 노드는 다수의 데이터 볼륨을 유지할 수 있다. 추가 복구 동작들을 수행하기 위해, 데이터 볼륨들은 페이지 캐시 기록 로깅이 이네이블된 데이터 볼륨들을 식별하기 위해 평가될 수 있다. 1320에 표시된 바와 같이, 특정한 데이터 볼륨이 선택될 수 있다. 데이터 볼륨에 대한 지속성 특성은 1330에 표시된 바와 같이, 페이지 캐시 기록 로깅이 데이터 볼륨에 대해 이네이블되었는지를 결정하기 위해 사용될 수 있다. 긍정적인 엑시트에 의해 표시된 바와 같이, 만약 그렇다면, 데이터 볼륨은 1350에 표시된 바와 같이, 통용되는 것으로 식별될 수 있고, 1360에 표시된 바와 같이, I/O 요청들에 대해 이용가능하게 될 수 있다. 예를 들어, 특정한 데이터 볼륨이 통용되는 것으로 식별되는 경우, 블록-저장 서비스 제어 영역, 또는 저장 노드 그 자체는, 지속성 기법에서 데이터 볼륨에 대한 새로운 역할을 식별, 이를테면 저장 노드를 데이터 볼륨에 대해 마스터 저장 노드로서 식별할 수 있다. 식별된 마스터 저장 노드는 그 다음 데이터 볼륨의 새로운 복제본을 유지하기 위해 하나 이상의 슬레이브 저장 노드를 획득하고, 슬레이브 저장 노드들로 데이터 볼륨을 복제할 수 있다. 대안적으로, 몇몇 실시예에서, 저장 노드는 임의의 피어 또는 슬레이브 저장 노드들을 획득하지 않고, 현재 데이터 볼륨에 대한 I/O 요청들을 프로세싱하는 것을 시작할 수 있다. 현재 데이터 볼륨에 대한 임의의 다른 복구 동작들이 또한 I/O 요청들에 대해 데이터 볼륨을 준비시키도록 수행될 수 있다. 그러나, 1330으로부터의 부정적 엑시트에 의해 표시된 바와 같이, 페이지 캐시 기록 로깅이 데이터 볼륨에 대해 이네이블되지 않는다면, 데이터 볼륨은 1340에 표시된 바와 같이, 통용되지 않는 것으로 식별될 수 있다. 통용되지 않는 데이터 볼륨들은 추가 복구 동작들, 이를테면 그것이 현재 버전의 데이터 볼륨을 유지하는지를 식별하기 위해 데이터 볼륨의 복제본을 유지하는 다른 저장 노드를 기다리는 동작이 적용될 수 있다. 몇몇 실시예에서, 통용되는 것으로 식별되지 않은 데이터 볼륨들은 저장 노드에서의 블록-기반 저장 디바이스들에서 삭제 또는 제거될 수 있다.
본 출원에 설명된 방법들은 다양한 실시예에서 하드웨어 및 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 예를 들어, 일 실시예에서, 방법들은 프로세서들에 결합되는 컴퓨터-판독가능한 저장 매체 상에 저장된 프로그램 명령들을 실행하는 하나의 프로세서를 포함하는 컴퓨터 시스템(예를 들어, 도 14에서와 같은 컴퓨터 시스템)에 의해 구현될 수 있다 . 프로그램 명령들은 본 출원에 설명된 기능(예를 들어, 다양한 서버, 저장 노드, 제어 영역, 관리기 및/또는 다른 구성요소, 이를테면 본 출원에 설명된 블록-기반 저장 서비스를 구현하는 것의 기능)을 구현하도록 구성될 수 있다. 도면들에서 예시되고 본 출원에서 설명된 바와 같은 다양한 방법은 방법들의 예시적인 실시예들을 나타낸다. 임의의 방법의 순서는 변경될 수 있고, 다양한 요소가 추가, 재순서화, 결합, 생략, 변경 등이 될 수 있다.
본 출원에 설명된 바와 같은 블록-기반 저장장치에 대한 페이지 캐시 기록 로깅의 실시예들은 다양한 다른 디바이스와 상호작용할 수 있는, 하나 이상의 컴퓨터 시스템 상에서 실행될 수 있다. 도 14는 다양한 실시예에 따른, 예시적인 컴퓨팅 시스템을 예시하는 블록도이다. 예를 들어, 컴퓨터 시스템(2000)은 컴퓨터 클러스터, 데이터 저장소들, 및/또는 클라이언트의 저장장치 및/또는 컴퓨트 노드들을 구현하도록 구성될 수 있다. 컴퓨터 시스템(2000)은 이들에 제한되지는 않으나, 개인용 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 고객 디바이스, 애플리케이션 서버, 저장 디바이스, 전화, 모바일 전화, 또는 일반적으로 임의의 유형의 컴퓨팅 디바이스를 포함하는, 다양한 유형의 디바이스들 중 임의의 디바이스일 수 있다.
컴퓨터 시스템(2000)은 입력/출력(I/O) 인터페이스(2030)를 통해 시스템 메모리(2020)에 결합되는 하나 이상의 프로세서(2010)(이 중 임의의 것은 다수의 코어를 포함할 수 있으며, 이는 단일 또는 다수-스레드일 수 있다)를 포함한다. 컴퓨터 시스템(2000)은 I/O 인터페이스(2030)에 결합된 네트워크 인터페이스(2040)를 더 포함한다. 다양한 실시예에서, 컴퓨터 시스템(2000)은 하나의 프로세서(2010)를 포함하는 단일 프로세서 시스템, 또는 몇몇(예를 들어, 2, 4, 8, 또는 또 다른 적합한 수) 프로세서(2010)를 포함하는 멀티프로세서 시스템일 수 있다. 프로세서들(2010)은 기존 명령들이 가능한 임의의 적합한 프로세서들일 수 있다. 예를 들어, 다양한 실시예에서, 프로세서들(2010)은 x86, PowerPC, SPARC, 또는 MIPS ISA들, 또는 임의의 다른 적합한 ISA와 같은, 다양한 명령 세트 아키텍처(ISA) 중 임의의 아키텍처를 구현하는 범용 또는 내장 프로세서들일 수 있다. 멀티 프로세서 시스템들에서, 각각의 프로세서들(2010)은 반드시는 아니나, 통상, 동일한 ISA를 구현할 수 있다. 컴퓨터 시스템(2000)은 또한 통신 네트워크(예를 들어 인터넷, LAN 등)를 통해 다른 시스템들 및/또는 구성요소들과 통신하기 위해 하나 이상의 네트워크 통신 디바이스(예를 들어, 네트워크 인터페이스(2040))를 포함한다.
예시된 실시예에서, 컴퓨터 시스템(2000)은 또한 하나 이상의 영구 저장 디바이스(2060) 및/또는 하나 이상의 I/O 디바이스(2080)를 포함한다. 다양한 실시예에서, 영구 저장 디바이스들(2060)은 디스크 드라이브들, 테이프 드라이버들, 고체 상태 메모리, 다른 대용량 저장 디바이스들,블록-기반 저장 디바이스들, 또는 임의의 다른 영구 저장 디바이스에 대응할 수 있다. 컴퓨터 시스템(2000)(또는 분산 어플리케이션 또는 그 상에서 작동하는 운영 체제)은 요구 시 영구 저장 디바이스들(2060)에 명령들 및/또는 데이터를 저장할 수 있고, 필요 시 저장된 명령 및/또는 데이터를 검색할 수 있다. 예를 들어, 몇몇 실시예에서, 컴퓨터 시스템(2000)은 저장 시스템 서버 노드를 호스팅할 수 있고, 영구 저장장치(2060)는 해당 서버 노드에 접속되는 SSD들을 포함할 수 있다.
컴퓨터 시스템(2000)은 프로세서(들)(2010)에 의해 액세스가능한 명령들 및 데이터를 저장하도록 구성되는 하나 이상의 시스템 메모리(2020)를 포함한다. 다양한 실시예에서, 시스템 메모리들(2020)은 임의의 적합한 메모리 기술, (예를 들어, 하나 이상의 캐시, 정적 랜덤 액세스 메모리(SRAM), DRAM, RDRAM, EDO RAM, DDR 10 RAM, 동기식 동적 RAM(SDRAM), 램버스 RAM, EEPROM, 비-휘발성/플래시-유형 메모리 또는 임의의 다른 유형의 메모리)을 사용하여 구현될 수 있다. 시스템 메모리(2020)는 본 출원에 설명된 방법들 및 기술들을 구현하기 위해 프로세서(들)(2010)에 의해 실행 가능한 프로그램 명령들(2025)을 포함할 수 있다. 다양한 실시예에서, 프로그램 명령들(2025)은 플랫폼 고유의 이진, 임의의 해석된 언어 이를테면 JavaTM 바이트-코드로, 또는 임의의 다른 언어 이를테면 C/C++, JavaTM 등으로, 또는 이들의 임의의 조합으로 인코딩될 수 있다. 예를 들어, 예시된 실시예에서, 프로그램 명령들(2025)은 저장 노드의 기능을 구현하도록 실행가능한 프로그램 명령들을 포함한다. 몇몇 실시예에서, 프로그램 명령들(2025)은 다수의 개별 클라이언트, 노드, 및/또는 다른 구성요소를 구현할 수 있다.
몇몇 실시예에서, 프로그램 명령들(2025)은 UNIX, LINUX, SolarisTM, MacOSTM, WindowsTM 등과 같은, 다양한 운영 시스템 중 임의의 운영 시스템일 수 있는, 운영 시스템(미도시)을 구현하도록 실행 가능한 명령들을 포함할 수 있다. 프로그램 명령들(2025) 중 임의의 또는 모든 프로그램 명령은 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있으며, 이는 그 상에 명령들을 저장한 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있고, 이들은 다양한 실시예에 따라 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하기 위해 사용될 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태(예를 들어, 소프트웨어, 프로세싱 애플리케이션)로 정보를 저장하기 위한 임의의 메커니즘을 포함할 수 있다. 일반적으로 말해서, 비-일시적 컴퓨터 액세스 가능 매체는 마그네틱 또는 광 미디어, 예를 들어, I/O 인터페이스(2030)를 통해 컴퓨터 시스템(2000)에 결합된 디스크 또는 DVD/CD-ROM과 같은 메모리 미디어 또는 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 또한 임의의 휘발성 또는 비-휘발성 미디어 이를테면 RAM(예를 들어 SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등을 포함할 수 있으며, 이는 시스템 메모리(2020) 또는 다른 유형의 메모리로서 컴퓨터 시스템(2000)의 몇몇 실시예에 포함될 수 있다. 다른 실시예들에서, 프로그램 명령들은 네트워크 인터페이스(2040)를 통해 구현될 수 있는 바와 같은, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전파된 신호(예를 들어, 바송파들, 적외선 신호들, 디지털 신호들 등)의 광학, 음향 또는 다른 형태를 사용하여 전달될 수 있다.
몇몇 실시예에서, 시스템 메모리(2020)는 데이터 저장소(2045)를 포함할 수 있으며, 이는 본 출원에 설명된 바와 같이 구성될 수 있다. 일반적으로, 시스템 메모리(2020)(예를 들어, 시스템 메모리(2020) 내 데이터 저장소(2045)), 영구 저장장치(2060), 및/또는 원격 저장장치(2070)는 데이터 블록들, 데이터 블록들의 복제본들, 본 출원에 설명된 방법들 및 기술들을 구현하는데 사용 가능한 데이터 블록들과 연관된 메타데이터 및/또는 그것들의 상태, 구성 정보, 및/또는 임의의 다른 정보를 저장할 수 있다.
일 실시예에서, I/O 인터페이스(2030)는 네트워크 인터페이스(2040) 또는 다른 주변 인터페이스들 통해서를 포함하여, 시스템의 프로세서(2010), 시스템 메모리(2020) 및 임의의 주변 디바이스들 간 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예에서, I/O 인터페이스(2030)는 데이터 신호들을 하나의 구성요소(예를 들어, 시스템 메모리(2020))로부터 다른 구성요소(예를 들어, 프로세서(2010))에 의해 사용하기에 적합한 포맷으로 변환하기 위해 임의의 필요한 프로토콜, 타이밍, 또는 다른 데이터 변환들을 수행할 수 있다. 몇몇 실시예에서, I/O 인터페이스(2030)는 예를 들어, 주변 구성요소 상호연결(PCI) 버스 표준 또는 범용 직렬 버스(USB) 표준의 변형과 같은, 다양한 유형의 주변 버스들을 통해 연결되는 디바이스들에 대한 지원을 포함할 수 있다. 몇몇 실시예에서, I/O 인터페이스(2030)의 기능은 예를 들어, 노스 브리지(north bridge) 및 사우스 브리지(south bridge)와 같은, 두 개 이상의 개별 구성요소로 분배될 수 있다. 또한, 몇몇 실시예에서, 시스템 메모리(2020)에 대한 인터페이스와 같은, I/O 인터페이스(2030)의 기능의 일부 또는 전부는 프로세서(2010)로 직접 통합될 수 있다.
네트워크 인터페이스(2040)는 네트워크게 접속되는 컴퓨터 시스템(2000) 및 다른 디바이스들, 이를테면 예를 들어, 다른 컴퓨터 시스템들(2090) 간에서 데이터가 교환되게 하도록 구성될 수 있다. 덧붙여, 네트워크 인터페이스(2040)는 컴퓨터 시스템(2000) 및 다양한 I/O 디바이스(2050) 및/또는 원격 저장장치(2070) 사이의 통신을 허용하도록 구성될 수 있다. 입력/출력 디바이스들(2050)은 몇몇 실시예에서, 하나 이상의 디스플레이 단자, 키보드, 키패드, 터치패드, 스캐닝 디바이스, 음성 또는 광 인식 디바이스, 또는 하나 이상의 컴퓨터 시스템(2000)에 의해 데이터를 입력 또는 검색하기에 적합한 임의의 다른 디바이스를 포함할 수 있다. 다수의 입력/출력 디바이스(2050)는 컴퓨터 시스템(2000)에 존재할 수 있거나 컴퓨터 시스템(2000)를 포함하는 분산 시스템의 다양한 노드 상에 분산될 수 있다. 몇몇 실시예에서, 유사한 입력/출력 디바이스들은 컴퓨터 시스템(2000)과 별개일 수 있고 네트워크 인터페이스(2040)를 통해서와 같이, 유선 또는 무선 연결을 통해 컴퓨터 시스템(2000)을 포함하는 분산 시스템의 하나 이상의 노드와 상호작용할 수 있다. 네트워크 인터페이스(2040)는 하나 이상의 무선 네트워킹 프로토콜(예를 들어, Wi-Fi/IEEE 802.11, 또는 다른 무선 네트워킹 표준)을 공통적으로 지원할 수 있다. 그러나, 다양한 실시예에서, 네트워크 인터페이스(2040)는 예를 들어, 다른 유형들의 이더넷 네트워크들과 같은, 임의의 적합한 유선 또는 무선의 일반적인 데이터 네트워크들을 통해 통신을 지원할 수 있다. 추가적으로, 네트워크 인터페이스(2040)는 아날로그 음성 네트워크들 또는 디지털 파이버 통신 네트워크들과 같은 전화통신/전화기 네트워크들을 통해, 파이버 채널 SAN들과 같은 저장장치 영역 네트워크를 통해, 또는 임의의 다른 적합한 유형의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다. 다양한 실시예에서, 컴퓨터 시스템(2000)은 도 142000에 예시된 것들보다 많거나, 적거나, 또는 상이한 구성요소들 (예를 들어, 디스플레이들, 비디오 카드들, 오디오 카드들, 주변 디바이스들, 다른 네트워크 인터페이스들 이를테면 ATM 인터페이스, 이더넷 인터페이스, 프레임 릴레이 인터페이스 등)을 포함할 수 있다.
본 출원에 설명된 분산 시스템 실시예들 중 임의의 실시예, 또는 그것들의 구성요소들 중 임의의 구성요소는 하나 이상의 네트워크-기반 서비스로서 구현될 수 있다는 것이 주의된다. 예를 들어, 컴퓨팅 서비스 내 컴퓨트 클러스터는 본 출원에 설명된 분산 컴퓨팅 시스템들을 채용하는 컴퓨팅 및/또는 저장 디바이스들 및/또는 다른 유형들의 서비스들을 클라이언트들에 네트워크-기반 서비스들로서 제공할 수 있다. 몇몇 실시예에서, 네트워크-기반 서비스는 네트워크를 통해 상호 정보 교환이 가능한 기계 대 기계 상호작용을 지원하도록 설게된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 네트워크-기반서비스는 웹 서비스 설명 언어(WSDL)와 같은, 기계 프로세스 가능 포맷으로 설명되는 인터페이스를 가질 수 있다. 다른 시스템들은 네트워크-기반 서비스의 인터페이스의 설명에 의해 미리 규정된 방식으로 네트워크-기반 서비스와 상호작용할 수 있다. 예를 들어, 네트워크-기반 서비스는 다른 시스템들이 적용할 수 있는 다양한 동작들을 정의할 수 있고, 다양한 동작을 요구할 때 다른 시스템들이 따르도록 기대될 수 있는 특정한 응용 프로그램 인터페이스(API)를 정의할 수 있다.
다양한 실시예에서, 네트워크-기반 서비스는 네트워크-기반 서비스 요청과 연관된 파라미터들 및/또는 데이터를 포함하는 메시지의 사용을 통해 요청 또는 적용될 수 있다. 그러한 메시지는 확장 가능 마크업 언어(XML)와 같은 특정한 마크업 언어에 따라 포맷팅될 수 있고/있거나 단순 객체 액세스 프로토콜(SOAP)과 같은 프로토콜을 사용하여 캡슐화될 수 있다. 네트워크-기반 서비스 요청을 수행하기 위해, 네트워크-기반 서비스 클라이언트는 요청을 포함하는 메시지를 어셈블링하고 그 메시지를 하이퍼텍스트 전송 프로토콜(HTTP)과 같은 인터넷 기반 애플리케이션 계층 전송 프로토콜을 사용하여, 네트워크-기반 서비스에 대응하는 주소 지정 가능한 엔드포인트(예를 들어, 고유한 자원 위치 표시자(URL))에 전달할 수 있다.
몇몇 실시예에서, 네트워크-기반 서비스들은 메시지 기반 기술들이 아닌 "RESTful"(Representational State Transfer) 기술들을 사용하여 구현될 수 있다. 예를 들어, RESTful 기술에 따라 구현된 네트워크-기반 서비스는 SOAP 메시지 내로 캡슐화되기보다, PUT, GET, 또는 DELETE와 같은 HTTP 방법 내에 포함되는 파라미터들을 통해 적용될 수 있다.
상기 실시예들이 상당히 상세하게 설명되었지만, 많은 변경 및 변형이 상기 개시 내용이 완전이 이해되면 당해 기술분야의 통상의 기술자들에게 명백해질 바와 같이 이루어질 수 있다. 이하의 청구항들이 모든 그러한 변형 및 변경을 포함하고, 그에 따라, 상기 설명이 제한적인 의미가 아닌 예시적으로 간주되도록 해석된다는 것이 의도된다.
본 발명의 실시예들은 다음 조항들을 고려하여 설명될 수 있다:
1. 저장 노드를 구현하는 시스템으로서,
하나 이상의 데이터 볼륨을 유지하는 하나 이상의 블록-기반 저장 디바이스;
페이지 캐시를 포함하는 시스템 메모리로서, 페이지 캐시는 하나 이상의 데이터 볼륨을 지속적으로 업데이트하기 위해 하나 이상의 블록-기반 저장 디바이스로 주기적으로 또는 비주기적으로 플러싱되는, 상기 시스템 메모리;
페이지 캐시 기록 로그를 유지하는 영구 저장 디바이스로서, 페이지 캐시 기록 로그는 페이지 캐시에 대한 업데이트들을 기술하는 복수의 로그 레코드를 유지하고, 복수의 로그 레코드는 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장 발생 시 페이지 캐시로 이전 상태를 복원하기 위해 적용되는, 상기 영구 저장 디바이스를 포함하고;
저장 노드는:
하나 이상의 데이터 볼륨 중 특정한 데이터 볼륨에 대한 기록 요청을 수신하고;
기록 요청에 대해 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하고;
페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 업데이트를 기술하는 로그 레코드를 저장하며; 그리고
페이지 캐시 엔트리를 업데이트하는 것 및 페이지 캐시 기록 로그에 로그 레코드를 저장하는 것에 응답하여, 기록 요청을 완료인 것으로 확인 응답하도록 구성되는, 시스템.
2. 조항 1에 있어서, 저장 노드는:
시스템 고장에서 복구 시:
페이지 캐시 기록 로그를 유지하는 영구 저장 디바이스에서, 로그 레코드 및 복수의 로그 레코드를 획득하며; 그리고
시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 기록하기 위해 페이지 캐시 기록 로그에 유지되는 로그 레코드 및 복수의 로그 레코드를 적용하도록 더 구성되는, 시스템.
3. 조항 1에 있어서, 저장 노드는:
페이지 캐시 기록 로그에 대한 트림 이벤트를 검출하고;
트림 이벤트를 검출하는 것에 응답하여:
페이지 캐시 기록 로그에서의 트림 위치를 식별하고;
시스템 메모리로부터 복수의 블록-기반 저장 디바이스로 복수의 페이지 캐시 엔트리 중 적어도 일부를 기록하기 위해 하나 이상의 플러시 동작들을 수행하며; 그리고
하나 이상의 플로시 동작의 완료 시, 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 페이지 캐시 로그를 유지하는 영구 저장 디바이스의 하나 이상의 부분을 반환하도록 더 구성되는, 시스템.
4. 조항 1에 있어서, 저장 노드는 네트워크-기반 블록-기반 저장 서비스의 부분으로서 구현되고, 블록-기반 저장 서비스로서 구현되는 적어도 하나의 다른 저장 노드가 특정한 데이터 볼륨의 복제본을 유지하며, 그리고 적어도 하나의 다른 저장 노드는 상기 수신, 상기 저장, 상기 업데이트, 및 상기 확인 응답을 수행하도록 구성되는, 시스템.
5. 방법으로서,
하나 이상의 컴퓨팅 디바이스에 의해:
저장 노드에서, 저장 노드에 유지되는 적어도 하나의 블록-기반 저장 디바이스에 지속되는 데이터 볼륨에 대한 기록 요청을 수신하는 단계;
기록 요청에 대한 저장 노드의 시스템 메모리에 유지되는 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하는 단계로서, 페이지 캐시의 복수의 엔트리는 데이터 볼륨을 지속적으로 업데이트하기 위해 적어도 하나의 블록-기반 저장 디바이스에 주기적으로 또는 비주기적으로 플러싱되는, 상기 적어도 하나의 대응하는 엔트리를 업데이트하는 단계;
영구 저장 디바이스에 유지되는 복수의 다른 로그 레코드와 함께 영구 저장 디바이스에 유지되는 페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 업데이트를 기술하는 로그 레코드를 저장하는 단계로서, 로그 레코드 및 복수의 다른 로그 레코드는 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장의 발생 시 페이지 캐시로 복원될 업데이트된 페이지 캐시 엔트리를 포함하는 페이지 캐시의 상태를 기술하는, 로그 레코드를 저장하는 단계; 및
페이지 캐시 엔트리를 업데이트하는 것 및 페이지 캐시 기록 로그에 로그 레코드를 저장하는 것에 응답하여, 기록 요청을 완료인 것으로 확인 응답하는 단계를 수행하는 단계를 포함하는, 방법.
6. 조항 5에 있어서,
시스템 고장에서 복구 시:
페이지 캐시 기록 로그를 유지하는 영구 저장 디바이스에서, 로그 레코드 및 복수의 로그 레코드를 획득하는 단계; 및
시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 기록하기 위해 페이지 캐시 기록 로그에 유지되는 로그 레코드 및 복수의 로그 레코드를 적용하는 단계를 더 포함하는, 방법.
7. 조항 5에 있어서, 저장 노드는 데이터 볼륨의 복제본들을 유지하는 두 개 이상의 저장 노드 중 하나이고, 두 개 이상의 저장 노드 중 저장 노드와 상이한 적어도 하나는 데이터 볼륨에 대한 기록 요청들을 위한 각각의 페이지 캐시 기록 로그를 유지하지 않는, 방법.
8. 조항 7에 있어서,
두 개 이상의 저장 노드의 시스템 고장에서 복구 시, 데이터 볼륨의 현재 복사본을 데이터 볼륨에 대한 후속 입력/출력 요청들을 프로세싱하기 위해 이용가능하게 만들기 위해 각각의 페이지 캐시 기록 로그를 유지하는 두 개 이상의 저장 노드 중 하나를 시스템 고장 이전 데이터 볼륨의 현재 복제본을 유지하는 것으로 식별하는 단계를 더 포함하는, 방법.
9. 조항 5에 있어서,
페이지 캐시 기록 로그에 대한 트림 이벤트를 검출하는 단계;
트림 이벤트를 검출하는 것에 응답하여:
페이지 캐시 기록 로그에서의 트림 위치를 식별하는 단계;
시스템 메모리로부터 적어도 하나의 블록-기반 저장 디바이스로 복수의 페이지 캐시 엔트리 중 적어도 일부를 기록하기 위해 하나 이상의 플러시 동작들을 수행하는 단계; 및
하나 이상의 플로시 동작의 완료 시, 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 페이지 캐시 로그를 유지하는 영구 저장 디바이스의 하나 이상의 부분을 반환하는 단계를 더 포함하는, 방법.
10. 조항 9에 있어서,
트림 이벤트를 검출하는 것에 응답하여, 하나 이상의 플러시 동작을 위한 플러시 동작 크기를 결정하는 단계를 더 포함하는, 방법.
11. 조항 5에 있어서, 적어도 하나의 블록-기반 저장 디바이스는 저장 노드에 유지되는 복수의 블록-기반 저장 디바이스 중 적어도 하나이고, 방법은:
저장 노드에 유지되는 복수의 블록-기반 저장 디바이스 중 적어도 하나의 블록-기반 저장 디바이스에 지속되는 다른 데이터 볼륨에 대한 다른 기록 요청을 수신하는 단계; 및
다른 기록 요청에 대해 상기 업데이트, 상기 저장, 및 상기 확인 응답을 수행하는 단계를 더 포함하는, 방법.
12. 조항 5에 있어서, 하나 이상의 컴퓨팅 디바이스는 블록-기반 저장 디바이스를 함께 구현하는 복수의 저장 노드의 저장 노드를 구현하고, 저장 노드는 페이지 캐시 기록 로깅을 구현하는 블록-기반 저장 디바이스의 하나 이상의 저장 노드 중 하나이고, 복수의 저장 노드 중 다른 저장 노드들은 페이지 캐시 기록 로깅을 구현하지 않으며, 방법은:
블록-기반 저장 디바이스 제어 영역을 구현하는 하나 이상의 컴퓨팅 디바이스에 의해:
페이지 캐시 기록 로깅을 구현하지 않는 각각의 다른 저장 노드에 대한 지속성 스코어를 결정하기 위해 복수의 저장 노드 중 다른 저장 노드들을 평가하는 단계; 및
지속성 스코어들에 적어도 부분적으로 기초하여, 페이지 캐시 기록 로깅을 구현하기 위한 다른 저장 노드들 중 하나 이상의 저장 노드를 선택하는 단계를 수행하는 단계를 더 포함하는, 방법.
13. 조항 5에 있어서, 저장 노드는 네트워크-기반 블록-기반 저장 디바이스를 구현하는 복수의 저장 노드 중 하나이고, 기록 요청은 네트워크-기반 블록-기반 저장 디바이스에 의해 구현되는 가상 컴퓨트 인스턴스로부터 수신되고, 네트워크-기반 블록-기반 저장 디바이스 및 네트워크-기반 가상 컴퓨트 서비스는 동일한 네트워크-기반 서비스들의 제공자 네트워크의 부분으로서 함께 구현되는, 방법.
14. 하나 이상의 컴퓨팅 디바이스에 의해 실행될 때 하나 이상의 컴퓨팅 디바이스가 다음 동작들을 구현하게 하는 프로그램 명령들을 저장하는, 비-일시적 컴퓨터-판독가능한 저장 매체로서, 동작들은:
저장 노드에서, 저장 노드에 유지되는 적어도 하나의 블록-기반 저장 디바이스에 지속되는 데이터 볼륨에 대한 기록 요청을 수신하는 동작;
기록 요청에 대한 저장 노드의 시스템 메모리에 유지되는 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하는 단계로서, 페이지 캐시의 복수의 엔트리는 데이터 볼륨을 지속적으로 업데이트하기 위해 적어도 하나의 블록-기반 저장 디바이스에 주기적으로 또는 비주기적으로 플러싱되는, 상기 적어도 하나의 대응하는 엔트리를 업데이트하는 동작;
적어도 하나의 블록-기반 저장 디바이스와 상이한 영구 저장 디바이스에 유지되는 복수의 다른 로그 레코드와 함께 영구 저장 디바이스에 유지되는 페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 업데이트를 기술하는 로그 레코드를 저장하는 동작으로서, 로그 레코드 및 복수의 다른 로그 레코드는 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장의 발생 시 페이지 캐시로 복원될 업데이트된 페이지 캐시 엔트리를 포함하는 페이지 캐시의 상태를 기술하는, 상기 로그 레코드를 저장하는 동작; 그리고
페이지 캐시 엔트리를 업데이트하는 것 및 페이지 캐시 기록 로그에 로그 레코드를 저장하는 것에 응답하여, 기록 요청을 완료인 것으로 확인 응답하는 동작을 포함하는, 비-일시적, 컴퓨터-판독가능한 저장 매체.
15. 조항 14에 있어서, 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스가 다음 동작들을 더 구현하게 하는, 비-일시적, 컴퓨터-판독가능한 저장 매체:
시스템 고장에서 복구 시:
페이지 캐시 기록 로그를 유지하는 영구 저장 디바이스에서, 로그 레코드 및 복수의 로그 레코드를 획득하는 동작; 및
시스템 고장 이전 페이지 캐시의 상태를 페이지 캐시에 기록하기 위해 페이지 캐시 기록 로그에 유지되는 로그 레코드 및 복수의 로그 레코드를 적용하는 동작.
16. 조항 15에 있어서, 하나 이상의 컴퓨팅 디바이스는 마스터 저장 노드 및 하나 이상의 슬레이브 저장 노드를 구현하고, 마스터 저장 노드 및 하나 이상의 슬레이브 저장 노드 각각은 데이터 볼륨의 각각의 복제본을 유지하며, 그리고 마스터 저장 노드 및 하나 이상의 슬레이브 저장 노드 각각은 상기 수신, 상기 저장, 상기 업데이트, 및 상기 확인 응답을 수행하는, 비-일시적, 컴퓨터-판독가능한 저장 매체.
17. 조항 14에 있어서, 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스가 다음 동작들을 더 구현하게 하는, 비-일시적, 컴퓨터-판독가능한 저장 매체:
페이지 캐시 기록 로그에 대한 트림 이벤트를 검출하는 동작;
트림 이벤트를 검출하는 것에 응답하여:
페이지 캐시 기록 로그에서의 트림 위치를 식별하는 동작;
시스템 메모리로부터 적어도 하나의 블록-기반 저장 디바이스로 복수의 페이지 캐시 엔트리 중 적어도 일부를 기록하기 위해 하나 이상의 플러시 동작들을 수행하는 동작; 및
하나 이상의 플러시 동작의 완료 시, 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 페이지 캐시 로그를 유지하는 영구 저장 디바이스의 하나 이상의 부분을 반환하는 동작.
18. 조항 17에 있어서, 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스가 다음 동작들을 더 구현하게 하는, 비-일시적, 컴퓨터-판독가능한 저장 매체:
트림 이벤트를 검출하는 것에 응답하여, 하나 이상의 플러시 동작을 위한 플러시 동작 크기를 결정하는 동작.
19. 조항 14에 있어서, 적어도 하나의 블록-기반 저장 디바이스는 저장 노드에 유지되는 복수의 블록-기반 저장 디바이스 중 적어도 하나이고, 프로그램 명령들은 하나 이상의 컴퓨팅 디바이스가 다음 동작을 더 구현하게 하는 비-일시적, 컴퓨터-판독가능한 저장 매체:
저장 노드에 유지되는 복수의 블록-기반 저장 디바이스 중 적어도 하나의 블록-기반 저장 디바이스에 지속되는 다른 데이터 볼륨에 대한 다른 기록 요청을 수신하는 동작; 및
다른 기록 요청에 대해 상기 업데이트, 상기 저장, 및 상기 확인 응답을 수행하는 동작.
20. 조항 14에 있어서, 저장 노드는 네트워크-기반 블록-기반 저장 디바이스 서비스를 구현하는 복수의 저장 노드 중 하나이고, 복수의 저장 노드의 각각은 복수의 상이한 클라이언트를 위해 복수의 상이한 데이터 볼륨을 유지하는, 비-일시적, 컴퓨터-판독가능한 저장 매체.

Claims (15)

  1. 저장 노드를 구현하는 시스템으로서,
    하나 이상의 데이터 볼륨(data volume)을 유지하는 하나 이상의 블록-기반 저장 디바이스(block-based storage device);
    페이지 캐시(page cache)를 포함하는 시스템 메모리로서, 상기 페이지 캐시는 상기 하나 이상의 데이터 볼륨을 지속적으로 업데이트하기 위해 상기 하나 이상의 블록-기반 저장 디바이스로 주기적으로 또는 비주기적으로 플러싱(flushing)되는, 상기 시스템 메모리;
    페이지 캐시 기록 로그(page cache write log)를 유지하는 영구 저장 디바이스로서, 상기 페이지 캐시 기록 로그는 상기 페이지 캐시에 대한 업데이트들을 기술하는 복수의 로그 레코드를 유지하고, 상기 복수의 로그 레코드는 상기 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장 발생 시 상기 페이지 캐시로 이전 상태를 복원하기 위해 적용되는, 상기 영구 저장 디바이스를 포함하고;
    상기 저장 노드는:
    상기 하나 이상의 데이터 볼륨 중 특정한 데이터 볼륨에 대한 기록 요청을 수신하고;
    상기 기록 요청에 대해 상기 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하고;
    상기 페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 상기 업데이트를 기술하는 로그 레코드를 저장하며; 그리고
    상기 페이지 캐시 엔트리를 업데이트하는 것 및 상기 페이지 캐시 기록 로그에 상기 로그 레코드를 저장하는 것에 응답하여, 상기 기록 요청을 완료인 것으로 확인 응답하도록 구성되고,
    상기 저장 노드는 상기 데이터 볼륨의 복제본들을 유지하는 두 개 이상의 저장 노드 중 하나이고,
    상기 두 개 이상의 저장 노드 중 다른 하나는 상기 데이터 볼륨에 대한 기록 요청들을 위한 각각의 페이지 캐시 기록 로그를 유지하지 않는, 시스템.
  2. 청구항 1에 있어서, 상기 저장 노드는:
    시스템 고장에서 복구 시:
    상기 페이지 캐시 기록 로그를 유지하는 상기 영구 저장 디바이스에서, 상기 로그 레코드 및 상기 복수의 로그 레코드를 획득하며; 그리고
    상기 시스템 고장 이전 상기 페이지 캐시의 상태를 상기 페이지 캐시에 기록하기 위해 상기 페이지 캐시 기록 로그에 유지되는 상기 로그 레코드 및 상기 복수의 로그 레코드를 적용하도록 더 구성되는, 시스템.
  3. 청구항 1에 있어서, 상기 저장 노드는:
    상기 페이지 캐시 기록 로그에 대한 트림 이벤트(trim event)를 검출하고;
    상기 트림 이벤트를 검출하는 것에 응답하여:
    상기 페이지 캐시 기록 로그에서의 트림 위치를 식별하고;
    상기 시스템 메모리로부터 상기 하나 이상의 블록-기반 저장 디바이스로 상기 복수의 페이지 캐시 엔트리 중 적어도 일부를 기록하기 위해 하나 이상의 플러시 동작들을 수행하며; 그리고
    상기 하나 이상의 플러시 동작의 완료 시, 상기 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 상기 페이지 캐시 기록 로그를 유지하는 상기 영구 저장 디바이스의 하나 이상의 부분을 반환하도록 더 구성되는, 시스템.
  4. 청구항 1에 있어서, 상기 저장 노드는 네트워크-기반 블록-기반 저장 서비스의 부분으로서 구현되고, 상기 블록-기반 저장 서비스의 부분으로서 구현되는 적어도 하나의 다른 저장 노드가 상기 특정한 데이터 볼륨의 복제본을 유지하며, 그리고 상기 적어도 하나의 다른 저장 노드는 상기 수신, 상기 저장, 상기 업데이트, 및 상기 확인 응답을 수행하도록 구성되는, 시스템.
  5. 방법으로서,
    하나 이상의 컴퓨팅 디바이스에 의해:
    저장 노드에서, 상기 저장 노드에 유지되는 적어도 하나의 블록-기반 저장 디바이스에 지속되는 데이터 볼륨에 대한 기록 요청을 수신하는 단계;
    상기 기록 요청에 대한 상기 저장 노드의 시스템 메모리에 유지되는 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하는 단계로서, 상기 페이지 캐시의 상기 복수의 엔트리는 상기 데이터 볼륨을 지속적으로 업데이트하기 위해 상기 적어도 하나의 블록-기반 저장 디바이스에 주기적으로 또는 비주기적으로 플러싱되는, 상기 적어도 하나의 대응하는 엔트리를 업데이트하는 단계;
    영구 저장 디바이스에 유지되는 복수의 다른 로그 레코드와 함께 상기 영구 저장 디바이스에 유지되는 페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 상기 업데이트를 기술하는 로그 레코드를 저장하는 단계로서, 상기 로그 레코드 및 상기 복수의 다른 로그 레코드는 상기 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장의 발생 시 상기 페이지 캐시로 복원될 업데이트된 상기 페이지 캐시 엔트리를 포함하는 상기 페이지 캐시의 상태를 기술하는, 상기 로그 레코드를 저장하는 단계; 및
    상기 페이지 캐시 엔트리를 업데이트하는 것 및 상기 페이지 캐시 기록 로그에 상기 로그 레코드를 저장하는 것에 응답하여, 상기 기록 요청을 완료인 것으로 확인 응답하는 단계를 수행하는 단계를 포함하고,
    상기 저장 노드는 상기 데이터 볼륨의 복제본들을 유지하는 두 개 이상의 저장 노드 중 하나이고,
    상기 두 개 이상의 저장 노드 중 다른 하나는 상기 데이터 볼륨에 대한 기록 요청들을 위한 각각의 페이지 캐시 기록 로그를 유지하지 않는, 방법.
  6. 청구항 5에 있어서,
    시스템 고장에서 복구 시:
    상기 페이지 캐시 기록 로그를 유지하는 상기 영구 저장 디바이스에서, 상기 로그 레코드 및 상기 복수의 다른 로그 레코드를 획득하는 단계; 및
    상기 시스템 고장 이전 상기 페이지 캐시의 상태를 상기 페이지 캐시에 기록하기 위해 상기 페이지 캐시 기록 로그에 유지되는 상기 로그 레코드 및 상기 복수의 다른 로그 레코드를 적용하는 단계를 더 포함하는, 방법.
  7. 청구항 6에 있어서,
    상기 두 개 이상의 저장 노드의 시스템 고장에서 복구 시, 상기 데이터 볼륨의 현재 복제본을 상기 데이터 볼륨에 대한 후속 입력/출력 요청들을 프로세싱하기 위해 이용가능하게 만들기 위해 상기 각각의 페이지 캐시 기록 로그를 유지하는 상기 두 개 이상의 저장 노드 중 하나를 상기 시스템 고장 이전 상기 데이터 볼륨의 상기 현재 복제본을 유지하는 것으로 식별하는 단계를 더 포함하는, 방법.
  8. 청구항 5에 있어서,
    상기 페이지 캐시 기록 로그에 대한 트림 이벤트를 검출하는 단계;
    상기 트림 이벤트를 검출하는 것에 응답하여:
    상기 페이지 캐시 기록 로그에서의 트림 위치를 식별하는 단계;
    상기 시스템 메모리로부터 상기 적어도 하나의 블록-기반 저장 디바이스로 상기 복수의 페이지 캐시 엔트리 중 적어도 일부를 기록하기 위해 하나 이상의 플러시 동작을 수행하는 단계; 및
    상기 하나 이상의 플러시 동작의 완료 시, 상기 페이지 캐시에 대한 업데이트들을 기술하는 추가 로그 레코드들을 저장하기 위해 상기 페이지 캐시 기록 로그를 유지하는 상기 영구 저장 디바이스의 하나 이상의 부분을 반환하는 단계를 더 포함하는, 방법.
  9. 청구항 8에 있어서,
    상기 트림 이벤트를 검출하는 것에 응답하여, 상기 하나 이상의 플러시 동작을 위한 플러시 동작 크기를 결정하는 단계를 더 포함하는, 방법.
  10. 청구항 5에 있어서, 상기 적어도 하나의 블록-기반 저장 디바이스는 상기 저장 노드에 유지되는 복수의 블록-기반 저장 디바이스 중 적어도 하나이고, 상기 방법은:
    상기 저장 노드에 유지되는 상기 복수의 블록-기반 저장 디바이스 중 적어도 하나의 다른 블록-기반 저장 디바이스에 지속되는 다른 데이터 볼륨에 대한 다른 기록 요청을 수신하는 단계; 및
    상기 다른 기록 요청에 대해 상기 업데이트, 상기 저장, 및 상기 확인 응답을 수행하는 단계를 더 포함하는, 방법.
  11. 청구항 5에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는 블록-기반 저장 서비스를 함께 구현하는 복수의 저장 노드의 저장 노드를 구현하고, 상기 저장 노드는 페이지 캐시 기록 로깅을 구현하는 상기 블록-기반 저장 서비스의 하나 이상의 저장 노드 중 하나이고, 상기 복수의 저장 노드 중 다른 저장 노드들은 페이지 캐시 기록 로깅을 구현하지 않으며, 상기 방법은:
    블록-기반 저장 서비스 제어 영역을 구현하는 하나 이상의 컴퓨팅 디바이스에 의해:
    페이지 캐시 기록 로깅을 구현하지 않는 각각의 다른 저장 노드에 대한 지속성 스코어를 결정하기 위해 상기 복수의 저장 노드 중 상기 다른 저장 노드들을 평가하는 단계; 및
    상기 지속성 스코어들에 적어도 부분적으로 기초하여, 페이지 캐시 기록 로깅을 구현하기 위한 상기 다른 저장 노드들 중 하나 이상의 저장 노드를 선택하는 단계를 수행하는 단계를 더 포함하는, 방법.
  12. 청구항 5에 있어서, 상기 저장 노드는 네트워크-기반 블록-기반 저장 서비스를 구현하는 복수의 저장 노드 중 하나이고, 상기 기록 요청은 네트워크-기반 가상 컴퓨트 서비스에 의해 구현되는 가상 컴퓨트 인스턴스로부터 수신되고, 상기 네트워크-기반 블록-기반 저장 서비스 및 상기 네트워크-기반 가상 컴퓨트 서비스는 동일한 네트워크-기반 서비스들의 제공자 네트워크의 부분으로서 함께 구현되는, 방법.
  13. 마스터 저장 노드를 구현하기 위한 시스템으로서,
    상기 마스터 저장 노드는:
    상기 마스터 저장 노드에 유지되는 적어도 하나의 블록-기반 저장 디바이스에 지속되는 데이터 볼륨에 대한 기록 요청을 수신하고;
    상기 기록 요청에 대한 상기 마스터 저장 노드의 시스템 메모리에 유지되는 페이지 캐시의 복수의 엔트리 중 적어도 하나의 대응하는 엔트리를 업데이트하고 - 상기 페이지 캐시의 상기 복수의 엔트리는 상기 데이터 볼륨을 지속적으로 업데이트하기 위해 상기 적어도 하나의 블록-기반 저장 디바이스에 주기적으로 또는 비주기적으로 플러싱됨 -;
    상기 적어도 하나의 블록-기반 저장 디바이스와 상이한 영구 저장 디바이스에 유지되는 복수의 다른 로그 레코드와 함께 상기 영구 저장 디바이스에 유지되는 페이지 캐시 기록 로그에 적어도 하나의 대응하는 페이지 캐시 엔트리에 대한 상기 업데이트를 기술하는 로그 레코드를 저장하며 - 상기 로그 레코드 및 상기 복수의 다른 로그 레코드는 상기 페이지 캐시에서의 데이터 손실을 초래하는 시스템 고장의 발생 시 상기 페이지 캐시로 복원될 업데이트된 상기 페이지 캐시 엔트리를 포함하는 상기 페이지 캐시의 상태를 기술함 -; 그리고
    상기 페이지 캐시 엔트리를 업데이트하는 것 및 상기 페이지 캐시 기록 로그에 상기 로그 레코드를 저장하는 것에 응답하여, 상기 기록 요청을 완료인 것으로 확인 응답하도록 구성되고,
    상기 저장 노드는 상기 데이터 볼륨의 복제본들을 유지하는 두 개 이상의 저장 노드 중 하나이고,
    상기 두 개 이상의 저장 노드 중 다른 하나는 상기 데이터 볼륨에 대한 기록 요청들을 위한 각각의 페이지 캐시 기록 로그를 유지하지 않는, 시스템.
  14. 청구항 13에 있어서,
    하나 이상의 슬레이브 저장 노드를 더 포함하되, 상기 마스터 저장 노드 및 상기 하나 이상의 슬레이브 저장 노드 각각은 상기 데이터 볼륨의 각각의 복제본을 유지하며, 그리고 상기 마스터 저장 노드 및 상기 하나 이상의 슬레이브 저장 노드 각각은 상기 수신, 상기 저장, 상기 업데이트, 및 상기 확인 응답을 수행하는, 시스템.
  15. 삭제
KR1020167027931A 2014-03-11 2015-03-10 블록-기반 저장장치에서의 페이지 캐시 기록 로깅 KR101914847B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/205,067 US10055352B2 (en) 2014-03-11 2014-03-11 Page cache write logging at block-based storage
US14/205,067 2014-03-11
PCT/US2015/019574 WO2015138375A2 (en) 2014-03-11 2015-03-10 Page cache write logging at block-based storage

Publications (2)

Publication Number Publication Date
KR20160142311A KR20160142311A (ko) 2016-12-12
KR101914847B1 true KR101914847B1 (ko) 2018-11-02

Family

ID=54069038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027931A KR101914847B1 (ko) 2014-03-11 2015-03-10 블록-기반 저장장치에서의 페이지 캐시 기록 로깅

Country Status (9)

Country Link
US (3) US10055352B2 (ko)
EP (1) EP3117325B1 (ko)
JP (1) JP6437007B2 (ko)
KR (1) KR101914847B1 (ko)
CN (2) CN110609797B (ko)
AU (1) AU2015229684B2 (ko)
CA (1) CA2940246C (ko)
SG (1) SG11201606896XA (ko)
WO (1) WO2015138375A2 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501418B2 (en) * 2014-06-26 2016-11-22 HGST Netherlands B.V. Invalidation data area for cache
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
US9639287B1 (en) * 2015-06-29 2017-05-02 Western Digital Technologies, Inc. Write command reporting
US10489248B1 (en) 2015-06-30 2019-11-26 EMC IP Holding Company LLC Disaster recovery in a distributed file system
US10649681B2 (en) * 2016-01-25 2020-05-12 Samsung Electronics Co., Ltd. Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks
JP6734536B2 (ja) * 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
US10445236B2 (en) * 2016-11-14 2019-10-15 Futurewei Technologies, Inc. Method to consistently store large amounts of data at very high speed in persistent memory systems
US10514847B2 (en) * 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10467143B1 (en) * 2017-02-27 2019-11-05 Amazon Technologies, Inc. Event-driven cache
US11068299B1 (en) * 2017-08-04 2021-07-20 EMC IP Holding Company LLC Managing file system metadata using persistent cache
US11403176B2 (en) * 2017-09-12 2022-08-02 Western Digital Technologies, Inc. Database read cache optimization
US10452296B1 (en) 2018-03-23 2019-10-22 Amazon Technologies, Inc. Accelerated volumes
US10908825B2 (en) * 2018-03-29 2021-02-02 Intel Corporation SSD with persistent DRAM region for metadata
US10459655B1 (en) 2018-04-30 2019-10-29 Amazon Technologies, Inc. Rapid volume backup generation from distributed replica
US11023157B2 (en) 2018-04-30 2021-06-01 Amazon Technologies, Inc. Intermediary duplication to facilitate copy requests in distributed storage systems
US11343314B1 (en) 2018-04-30 2022-05-24 Amazon Technologies, Inc. Stream-based logging for distributed storage systems
CN108959526B (zh) * 2018-06-28 2021-10-15 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
US10976966B2 (en) * 2018-06-29 2021-04-13 Weka.IO Ltd. Implementing coherency and page cache support in a distributed way for files
CN110896406A (zh) 2018-09-13 2020-03-20 华为技术有限公司 数据存储方法、装置及服务器
US11803468B2 (en) * 2018-09-19 2023-10-31 Seagate Technology Llc Data storage system with write back cache
US10877868B2 (en) 2018-09-21 2020-12-29 Microsoft Technology Licensing, Llc Applying a log to storage segments
CN110955653A (zh) * 2018-09-26 2020-04-03 阿里巴巴集团控股有限公司 一种数据页面的处理方法、装置、设备及计算机系统
KR102137109B1 (ko) * 2018-11-30 2020-07-23 카페24 주식회사 로그 메시지의 패턴을 분류하는 방법 및 장치
KR102649169B1 (ko) * 2018-12-12 2024-03-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10740187B1 (en) * 2019-01-31 2020-08-11 EMC IP Holding Company LLC Systems and methods of managing and creating snapshots in a cache-based storage system
CN111694703B (zh) * 2019-03-13 2023-05-02 阿里云计算有限公司 缓存区管理方法、装置和计算机设备
US11068192B1 (en) 2019-03-26 2021-07-20 Amazon Technologies, Inc. Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source
US10983719B1 (en) 2019-03-28 2021-04-20 Amazon Technologies, Inc. Replica pools to support volume replication in distributed storage systems
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11163698B2 (en) 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US10860221B1 (en) * 2019-07-05 2020-12-08 EMC IP Holding Company LLC Page write to non-volatile data storage with failure recovery
CN110727608B (zh) * 2019-09-03 2022-07-12 深圳市道通智能航空技术股份有限公司 一种日志数据的存储方法、电子设备及存储介质
US11663144B2 (en) 2020-01-20 2023-05-30 International Business Machines Corporation LRU list reorganization for favored and unfavored volumes
US11182096B1 (en) 2020-05-18 2021-11-23 Amazon Technologies, Inc. Data storage system with configurable durability
US11681443B1 (en) 2020-08-28 2023-06-20 Amazon Technologies, Inc. Durable data storage with snapshot storage space optimization
JP2022046887A (ja) 2020-09-11 2022-03-24 キオクシア株式会社 半導体記憶装置
US11262918B1 (en) 2020-09-30 2022-03-01 Amazon Technologies, Inc. Data storage system with uneven drive wear reduction
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
CN114443364B (zh) * 2021-12-27 2024-07-05 天翼云科技有限公司 一种分布式块存储数据处理方法、装置、设备及存储介质
CN117873405B (zh) * 2024-03-11 2024-07-09 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022801A1 (en) * 2007-12-06 2011-01-27 David Flynn Apparatus, system, and method for redundant write caching
JP2012524947A (ja) * 2009-04-24 2012-10-18 マイクロソフト コーポレーション 複製データの動的配置
US20130007219A1 (en) * 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
US20130042056A1 (en) * 2011-08-12 2013-02-14 Serge Shats Cache Management Including Solid State Device Virtualization
US20130166831A1 (en) * 2011-02-25 2013-06-27 Fusion-Io, Inc. Apparatus, System, and Method for Storing Metadata

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0926916A (ja) 1995-07-12 1997-01-28 Oki Electric Ind Co Ltd 非破壊ディスク装置
JP2000066843A (ja) * 1998-08-17 2000-03-03 Nec Corp ディスクアレイ装置
JP4291077B2 (ja) 2003-07-29 2009-07-08 株式会社日立製作所 分散ストレージ装置のファイル管理方法及び分散ストレージシステム
US7165129B1 (en) * 2004-01-26 2007-01-16 Cisco Technology, Inc. Method and apparatus for self-tuning transaction batching
US20050203974A1 (en) 2004-03-09 2005-09-15 Smith Gary S. Checkpoint methods and systems utilizing non-disk persistent memory
JP2006012142A (ja) 2004-06-09 2006-01-12 Hewlett-Packard Development Co Lp 非ディスク永続メモリを利用したチェックポイント方法およびシステム
JP4815825B2 (ja) 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
US7487386B2 (en) 2005-03-30 2009-02-03 International Business Machines Corporation Method for increasing file system availability via block replication
US7778972B1 (en) 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
US8307359B1 (en) 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
US8046548B1 (en) * 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US7908448B1 (en) * 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US7979652B1 (en) 2007-12-20 2011-07-12 Amazon Technologies, Inc. System and method for M-synchronous replication
US7992037B2 (en) 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8578083B2 (en) 2009-03-03 2013-11-05 Vmware, Inc. Block map based I/O optimization for storage virtual appliances
JP4743313B2 (ja) 2009-07-31 2011-08-10 ウシオ電機株式会社 超高圧水銀ランプおよび超高圧水銀ランプ点灯装置
US8341115B1 (en) 2009-12-26 2012-12-25 Emc Corporation Dynamically switching between synchronous and asynchronous replication
CN101764712A (zh) * 2010-01-21 2010-06-30 瑞斯康达科技发展股份有限公司 一种日志信息的传输系统及方法
US8677055B2 (en) * 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US20110276963A1 (en) 2010-05-04 2011-11-10 Riverbed Technology, Inc. Virtual Data Storage Devices and Applications Over Wide Area Networks
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US8725782B2 (en) 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
US8909996B2 (en) 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
WO2013024485A2 (en) 2011-08-17 2013-02-21 Scaleio Inc. Methods and systems of managing a distributed replica based storage
US9158568B2 (en) 2012-01-30 2015-10-13 Hewlett-Packard Development Company, L.P. Input/output operations at a virtual block device of a storage server
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
CN103064765B (zh) * 2012-12-28 2015-12-02 华为技术有限公司 数据恢复方法、装置及集群存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022801A1 (en) * 2007-12-06 2011-01-27 David Flynn Apparatus, system, and method for redundant write caching
JP2012524947A (ja) * 2009-04-24 2012-10-18 マイクロソフト コーポレーション 複製データの動的配置
US20130166831A1 (en) * 2011-02-25 2013-06-27 Fusion-Io, Inc. Apparatus, System, and Method for Storing Metadata
US20130007219A1 (en) * 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
US20130042056A1 (en) * 2011-08-12 2013-02-14 Serge Shats Cache Management Including Solid State Device Virtualization

Also Published As

Publication number Publication date
WO2015138375A2 (en) 2015-09-17
AU2015229684B2 (en) 2017-06-29
WO2015138375A3 (en) 2015-11-05
CN106104511B (zh) 2019-10-22
KR20160142311A (ko) 2016-12-12
AU2015229684A1 (en) 2016-09-08
CN110609797B (zh) 2024-01-23
JP2017515193A (ja) 2017-06-08
US11188469B2 (en) 2021-11-30
US20150261674A1 (en) 2015-09-17
SG11201606896XA (en) 2016-09-29
CN106104511A (zh) 2016-11-09
CA2940246A1 (en) 2015-09-17
JP6437007B2 (ja) 2018-12-12
US20180357173A1 (en) 2018-12-13
CA2940246C (en) 2022-08-16
CN110609797A (zh) 2019-12-24
US20200110707A1 (en) 2020-04-09
EP3117325A2 (en) 2017-01-18
EP3117325B1 (en) 2021-11-03
EP3117325A4 (en) 2017-11-22
US10503650B2 (en) 2019-12-10
US10055352B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
KR101914847B1 (ko) 블록-기반 저장장치에서의 페이지 캐시 기록 로깅
KR101764085B1 (ko) 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기
US10489422B2 (en) Reducing data volume durability state for block-based storage
US20170329528A1 (en) Efficient data volume replication for block-based storage
KR101920173B1 (ko) 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링
JP2018513510A (ja) データボリュームの動的な構成
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant