KR101764085B1 - 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기 - Google Patents

개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기 Download PDF

Info

Publication number
KR101764085B1
KR101764085B1 KR1020167027960A KR20167027960A KR101764085B1 KR 101764085 B1 KR101764085 B1 KR 101764085B1 KR 1020167027960 A KR1020167027960 A KR 1020167027960A KR 20167027960 A KR20167027960 A KR 20167027960A KR 101764085 B1 KR101764085 B1 KR 101764085B1
Authority
KR
South Korea
Prior art keywords
page cache
storage
log
data volume
data
Prior art date
Application number
KR1020167027960A
Other languages
English (en)
Other versions
KR20160130493A (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 KR20160130493A publication Critical patent/KR20160130493A/ko
Application granted granted Critical
Publication of KR101764085B1 publication Critical patent/KR101764085B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

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)
  • Retry When Errors Occur (AREA)

Abstract

블럭기반의 스토리지 시스템은 페이지 캐시 기록 로깅에 대한 동적 내구성 조정을 구현할 수 있다. 스토리지 노드에서 유지되는 데이터 볼륨들에 대한 착신 기록 요청들의 레이트가 모니터링될 수 있다. 적어도 부분적으로, 착신 기록 요청들의 레이트에 기초하여, 데이터 볼륨에 대한 내구성 특성에 대한 동적 수정은 예컨대 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키거나 또는 데이터 볼륨에 대하여 기록 로깅을 디스에이블시킬 수 있다. 착신 기록 요청들이 수신된 때, 특정 데이터 볼륨에 대하여 페이지 캐시 기록 로깅이 인에이블한지 여부에 관하여 결정이 이루어질 수 있다. 디스에이블된 페이지 캐시 기록 로깅을 갖는 기록 요청들에 대하여, 페이지 캐시는 업데이트될 수 있고 기록 요청은 페이지 캐시 기록 로그내 업데이트를 설명하는 로그 레코드 저장 없이 확인 응답될 수 있다.

Description

개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기 {DYNAMICALLY MODIFYING DURABILITY PROPERTIES FOR INDIVIDUAL DATA VOLUMES}
네트워크들을 가로질러 하드웨어 자원들, 소프트웨어, 및 정보 스토리지의 가상화(virtualization)들을 동적으로 공유하기 위한 가상화들을 위한 최근 기술들에서의 혁신이 컴퓨팅의 신뢰성, 확장성, 및 비용 효율성을 증가시켰다. 보다 구체적으로, 가상화의 출현을 통하여 온 디멘드(on demand) 가상 컴퓨팅 자원들 및 스토리지를 제공하는 능력은 프로세싱 자원들 및 스토리지의 소비자들로 하여금 즉각적으로 인지된 컴퓨팅 및 스토리지 요구들에 응답하여 그것들의 컴퓨팅 및 스토리지 비용들을 유연하게 구조화하는 것을 가능하게 하였다. 가상화는 고객들이 지연들 및 제조 비용들 및 하드웨어의 배치에 의해 영향을 받았던 프로비전 사이클들내 고정된 하드웨어를 사거나 또는 차용하기 보다는 필요한 시간에 프로세서 사이클들 및 스토리지를 구매하는 것을 허용한다. 컴퓨팅 및 스토리지의 이용 가능성을 결정하기 위해서 미래 수요의 예측들에 대한 정확성에 의존하기 보다는, 유저들은 상대적으로 순간적인 필요한 베이시스(basis)에 기초하여 컴퓨팅 및 스토리지 자원들의 사용을 구매할 수 있다.
가상화된 컴퓨팅 환경들은 흔히 블럭기반 스토리지(block-based storage)에 의해 지원된다. 이런 블럭기반의 스토리지는 블럭기반 스토리지가 지원하는 볼륨들의 구조상 및 기능상 세부사항들에 그리고 스토리지 이용 가능성을 제공하는 가상화들을 실행시키는 동작 시스템들에 기능적으로 애그노스틱(agnostic)하는 블럭기반의 스토리지를 제공하는 일련의 표준화된 스토리지 호출(call)들을 통하여 다양한 컴퓨팅 가상화들과 상호 작용할 수 있는 스토리지 시스템을 제공한다. 그러나, 가상화된 자원들을 위한 더 큰 처리 용량과 함께 네트워크 송신 성능들이 증가하면서, 블럭기반의 스토리지상에서 I/O 요구들이 증대될 수 있다. 만약 I/O 요구들이 서비스 요청들에 대하여 블럭기반의 스토리지의 용량을 초과한다면, 그러면 가상화된 컴퓨팅 자원들을 위한 블럭기반의 스토리지 성능의 레이턴시(latency) 및/또는 내구성(durability)을 겪는다.
도 1 은 일부 실시예들에 따른 블럭기반의 스토리에서 페이지 캐시 기록 로깅(page chche write logging)을 예시하는 일련의 블럭 다이어그램들이다.
도 2 는 일부 실시예들에 따른 스토리지 노드들에서 페이지 캐시 기록 로깅을 구현하는 블럭기반의 스토리지 서비스를 포함하는 다수의 네트워크기반 서비스들을 구현하는 제공자 네트워크(provider network)를 예시하는 블럭 다이어그램이다.
도 3 은 일부 실시예들에 따른 스토리지 노드들에서 구현된 페이지 캐시들에 대한 업데이트들을 위한 페이지 캐시 기록 로그들을 구현하는 스토리지 노드들을 예시하는 블럭 다이어그램이다.
도 4 는 일부 실시예들에 따른 스토리지 노드에서 페이지 캐시를 위한 페이지 캐시 기록 로그내 로그 엔트리들을 트림(trim)하도록 구성된 스토리지 노드를 예시하는 블럭 다이어그램이다.
도 5 는 일부 실시예들에 따른 블럭기반의 스토리지내 유지되는 데이터 볼륨들을 위한 동적 선택적 페이지 캐시 기록 로깅을 예시하는 블럭 다이어그램이다.
도 6 은 일부 실시예들에 따른 블럭기반의 스토리지에서 페이지 캐시 기록 로깅을 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 7 은 일부 실시예들에 따른 페이지 캐시 기록 로그로부터 페이지 캐시 복원(recovery)을 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 8 은 일부 실시예들에 따른 페이지 캐시 기록 로그를 트림(trim)하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 9는 일부 실시예들에 따른 페이지 캐시 기록 로깅 기술들을 효율적으로 사용하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 10 은 일부 실시예들에 따른 스토리지 노드에서 유지되는 데이터 볼륨들을 위한 내구성 특성들을 동적으로 수정하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 11은 일부 실시예들에 따른 데이터 볼륨들에 대한 페이지 캐시 기록 로깅이 인에이블인지(enable) 또는 디스에이블인지(disable)를 결정하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 12는 일부 실시예들에 따른 특정 데이터 볼륨의 내구성 특성들에 따른 특정 데이터 볼륨에 대한 스토리지 노드에서 기록 요청들을 프로세싱하는 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 13은 일부 실시예들에 따른 인에이블인 그리고 디스에이블인 기록 로깅으로 데이터 볼륨 복원을 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
도 14는 일부 실시예들에 따른 예제 컴퓨팅 시스템을 예시하는 블럭 다이어그램이다.
본 출원에서 실시예들은 예로서 여러 개의 실시예들 및 예시적인 도면들에 대해 설명되지만, 이 기술분야의 숙련자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않는다는 것을 인식할 것이다. 도면들 및 그것에 대한 상세한 설명은 개시된 특정한 형태로 실시예들을 제한하도록 의도되지 않지만, 그와는 반대로, 의도는 첨부된 청구항들에 의해 정의된 바와 같이 사상 및 범위 내에 속하는 모든 수정들, 등가물들 및 대안들을 커버하는 것임이 이해되어야 한다. 본 출원에 사용된 제목들은 단지 조직적 용도를 위한 것이며 설명 또는 청구항들의 범위를 제한하기 위해 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된 바와 같이, 단어(“일 수 있다(may)”)는 의무적 의미(즉, 해야 한다는 의미하는)보다는 허용적 의미(즉, ~하기 위한 가능성을 가짐을 의미하는)에서 사용된다. 유사하게, 단어들(“포함하다(include)”, “포함하는(including)”, 및 “포함하다(includes)”)은 포함하는 것을 의미하지만, 이에 제한되지 않는다.
본 출원에서 설명된 시스템들 및 방법들은 블럭기반의 스토리지를 위한 페이지 캐시 기록 로깅(page cache write logging)을 구현할 수 있다. 블럭기반의 스토리지 시스템들은 전형적으로 페이지 캐시내 유지되는 데이터 볼륨들에 대한 업데이트들을 빠르게 (시스템 메모리내) 저장하는 페이지 캐시들을 구현한다. 결국에는 페이지 캐시는 지속성 스토리지를 업데이트하기 위해 블럭기반 스토리지 디바이스들로 플러시(flush)될 수 있다. 그러나, 시스템 고장의 이벤트에서 시스템 메모리가 지속되지 않을 때, 페이지 캐시내에만 저장된 기록들은 지속될 수 없고 손실될 수 있다. 페이지 캐시 기록 로깅은 페이지 캐시내 데이터의 손실을 야기하는 고장 이벤트에서 페이지 캐시의 상태를 보존하도록 스토리지 노드들에서 구현될 수 있다. 일부 실시예들에서, 페이지 캐시 기록 로깅은 동일한 스토리지 시스템에서 유지되는 상이한 데이터 볼륨들에 대하여 선택적으로 구현될 수 있다. 대응하는 데이터 볼륨에 대하여 페이지 캐시 기록 로깅이 인에이블인지 또는 디스에이블된지를 설명하는 개별 데이터 볼륨들에 대한 내구성 특성(durability property)들은 스토리지 시스템에서의 여러 상태들에 따라, 예컨대 페이지 캐시 기록 로그에 로깅될 착신 기록 요청들의 레이트(rate)에 따라 동적으로 수정될 수 있다.
도 1 은 일부 실시예들에 따른 블럭기반의 스토리에서 페이지 캐시 기록 로깅을 예시하는 일련의 블럭 다이어그램들이다. (102)에 표시된 블럭 스토리지 서버 (100)는 (범용 컴퓨팅 시스템, 예컨대 도 14에 관해서 아래에서 설명되는 시스템 (2000)일 수 있다) 블럭-스토리지 서버에 부착된 하나 이상의 블럭기반 스토리지 디바이스들상에 데이터 볼륨들 (120)을 저장할 수 있다. 데이터 볼륨들 (120)에 대한 기록 요청들 (142)이 수신된 때, I/O 관리기 (102)는 병렬 업데이트들 또는 거의 병렬 업데이트들을 페이지 캐시 (140)내 개별 페이지들 또는 엔트리들 (146)로 및 페이지 캐시 기록 로그 (130)에 기록된 로그 레코드들(144)로 발송할 수 있고, 이는 지속성 스토리지 디바이스상, (볼륨들 (120)을 저장하는 블럭기반 스토리지 디바이스들과 별개일 수 있는)에 구현될 수 있다. 로그 레코드(로그 레코드)들은 다양한 실시예들에서, 페이지 캐시 (140)의 특정 페이지 또는 엔트리에 대한 업데이트를 설명할 수 있다. 로그 레코드들은 일부 실시예들에서 페이지 캐시 기록 로그 (130)내에 순차적으로 저장될 수 있다. 로그 레코드들 (144) 저장 및 페이지 캐시 (146) 업데이트에 응답하여, 기록 요청들이 확인 응답(acknowledge)될 수 있다. 나중에 페이지 캐시내 페이지들은 블럭기반 스토리지 디바이스들내 볼륨들 (120)에 업데이트 하기 위해 플러시(flush)(148)될 수 있다. 일부 실시예들에서, 볼륨(들) (120)내 지속적으로 이루어지는 페이지로의 업데이트들을 설명하는 로그 레코드들이 다시 이용(reclaim)되고 추가의 로그 레코드들을 저장이 가능하도록 페이지 캐시 기록 로그 (130)내 저장된 로그 레코드들은 페이지 캐시에서의 플러시 동작들(148)에 기초하여 이동되거나 또는 트림될 수 있다.
신 (104)에 예시된 바와 같이, 시스템 고장 (152)은 페이지 캐시 데이터의 손실로 귀결된다. 따라서, 기록 요청들이 지속성 스토리지내 볼륨(들) (120)로 플러시되지 않았을 때 페이지 캐시 데이터내 기록 요청들은 손실될 수 있다. I/O 관리기 (132)는 일부 실시예들에서, 페이지 캐시 기록 로그 (130)로부터 로그 레코드들 (132)을 획득할 수 있고 시스템 고장 전 페이지 캐시의 상태를 복원하기 위해 페이지 캐시로 업데이트들 (134)을 리플레이(replay)할 수 있어서, 페이지 캐시 데이터의 복원으로 귀결된다.
일부 실시예들에서, 페이지 캐시 기록 로깅은 각 볼륨 베이시스(volume basis)상에서 구현될 수 있다. 예를 들어, 일부 실시예들에서, 페이지 캐시 기록 로깅이 인에이블한지 아닌지를 표시하는 데이터 볼륨에 대한 내구성 특성은 스토리지 노드에서 변화하는 상태들에 적응하기 위해서 동적으로 수정될 수 있다. 예를 들어, I/O 관리기 (102)는 페이지 캐시 기록 로그 (130)내 로깅될 착신 기록 요청들의 레이트를 모니터링할 수 있고, 일부 실시예들에서 개별 하나 이상의 데이터 볼륨들 (120)에 대한 하나 이상의 내구성 특성들을 동적으로 수정할 수 있다. 만약, 예를 들어, 페이지 캐시 기록 로깅이 특정 데이터 볼륨 (120)에 대하여 디스에이블 되면, 그러면 데이터 볼륨으로 향하는 기록 요청들(142)는 페이지 캐시 기록 로그내 업데이트를 설명하는 로그 레코드를 저장하지 않고서 완료될 수 있다 (예를 들어, 업데이트된 페이지 캐시 (140)). 유사하게, 만약 페이지 캐시 기록 로깅이 인에이블하다면, 그러면 신(scene) (102)에 예시된 바와 같이, 페이지 캐시 기록 로깅의 인에이블에 후속하여 수신되는 기록 요청들이 완료된 때 기록에 대하여 확인 응답하기 전에 페이지 캐시 (140)로의 업데이트들이 수행되고 로그 레코드들이 페이지 캐시 기록 로그 (130)내 저장될 수 있다. 상이한 내구성 특성들을 갖는 데이터 볼륨들에 대한 복원 동작들은 변화할 수 있고, 일부 실시예들에서, 인에이블한 페이지 캐시 기록 로깅을 갖는 데이터 볼륨들은 새로운 기록 요청들을 보다 빠르게 수신 가능하게 되고 또는 페이지 캐시 기록 로깅이 디스에이블된 데이터 볼륨들을 갖는 것들 보다 후속 복원 동작들이 거의 없다.
이전 설명들은 한정하도록 의도되지 않고, 단지 블럭기반의 스토리지에서 페이지 캐시 기록 로깅의 일 예로서 제공된다는 것에 유의한다. 다양한 다른 컴포넌트들이 기록 요청들 로깅, 복원 또는 프로세싱에 착수되거나 참여될 수 있다. 다른 차이점들, 예를 들어, 예컨대 스토리지 노드들의 수, 데이터 볼륨들, 또는 내구성 기법들 (예를 들어, 다수의 노드들상의 데이터 볼륨 복제)은 도 1에 예시된 것과 다를 수 있다.
본 명세서는 페이지 캐시 기록 로깅을 구현할 수 있고 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정할 수 있는 블럭기반의 스토리지 서비스 제공자의 전반적 설명으로 시작한다. 그런다음 블럭기반의 스토리지 제공자의 일부로서 사용될 수 있는 컴포넌트들/모듈의 배열들 또는 상이한 컴포넌트들/모듈들을 포함하는 블럭기반의 스토리지 서비스 제공자의 다양한 예들이 논의된다. 그런 다음 페이지 캐시 기록 로깅을 구현하고 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기 위한 많은 상이한 방법들 및 기술들이 논의되고, 이들의 일부가 첨부 플로우 차트들에 예시된다. 마지막으로, 다양한 컴포넌트들, 모듈들, 시스템들, 디바이스들, 및/또는 노드들이 구현될 수 있는 예제 컴퓨팅 시스템의 설명이 제공된다. 다양한 예들이 명세서 전체에 걸쳐 제공된다.
도 2 는 일부 실시예들에 따른 스냅샷 동작들 동안에 최적화된 기록 성능을 구현하는 블럭기반의 스토리지 서비스를 포함하는 다수의 네트워크기반 서비스들을 구현하는 제공자 네트워크를 예시하는 블럭 다이어그램이다. 제공자 네트워크 (200)는 인터넷 및/또는 다른 네트워크들을 통하여 클라이언트들 (210)에 액세스 가능한 하나 이상의 서비스들 (예컨대 다양한 유형들의 클라우드기반의 컴퓨팅 또는 스토리지)을 제공하는 엔티티 예컨대 회사 또는 공공 섹터 조직에 의해 셋 업될 수 있다. 제공자 네트워크 (200)는 제공자 네트워크 (200)에 제공되는 인프라스트럭처 및 서비스들을 구현하고 분배하기 위해 요구되는 다양한 자원 풀들(pools), 예컨대 물리적 및/또는 가상화된 컴퓨터 서버들, 스토리지 디바이스들, 네트워킹 장비 및 유사한 것 의 무리들(예를 들어, 도 14에 관하여 이하에서 설명되는 컴퓨팅 시스템 (2000))을 호스팅하는 많은 데이터센터들을 포함할 수 있다. 일부 실시예들에서, 제공자 네트워크 (200)는 컴퓨팅 자원들, 예컨대 가상의 컴퓨팅 서비스 (230), 스토리지 서비스들, 예컨대 블럭기반의 스토리지 서비스 (220) 및 다른 스토리지 서비스 (240) (다양한 스토리지 유형들 예컨대 오브젝트/키-값 기반 데이터 저장소들 또는 다양한 유형들의 데이터베이스 시스템들을 포함할 수 있다), 및/또는 임의의 다른 유형의 네트워크기반 서비스들 (250)을 제공할 수 있다. 클라이언트들 (210)는 네트워크 (260)를 통하여 제공자 네트워크 (200)에 의해 제공되는 이들 다양한 서비스들을 액세스할 수 있다. 마찬가지로 네트워크기반 서비스들은 그것들끼리 통신할 수 있고 및/또는 상이한 서비스들을 제공하기 위해 서로의 사용을 가능하게 한다. 예를 들어, 유닛들 소위 “인스턴스들(instances),” 예컨대 가상의 또는 물리적 컴퓨팅 인스턴스들 또는 스토리지 인스턴스들내 클라이언트들 (210)에 제공된 컴퓨팅 자원들은, 특정 데이터 볼륨들 (226)의 사용을 가능하게 할 수 있고, 컴퓨팅 인스턴스들을 위한 가상의 블럭 스토리지를 제공한다.
상기에서 언급한 바와 같이, 가상 컴퓨팅 서비스 (230)는 다양한 컴퓨팅 인스턴스들을 클라이언트들 (210)에 제공할 수 있다. 가상 컴퓨팅 인스턴스는 예를 들어, 지정된 컴퓨터의 용량 (CPU들의 유형 및 수, 주 메모리 사이즈, 등등을 나타냄으로써 특정될 수 있다) 및 지정된 소프트웨어 스택 (예를 들어, 하이퍼바이저(hypervisor)의 상부에서 동작할 수 있는 동작 시스템의 특정 버전)을 갖는 하나 이상의 서버들을 포함할 수 있다. 많은 상이한 유형들의 컴퓨팅 디바이스들은 범용 또는 특별한 용도 컴퓨터 서버들, 스토리지 디바이스들, 네트워크 디바이스들 및 유사한 것을 포함하는 상이한 실시예들에서, 가상 컴퓨팅 서비스 (230)의 컴퓨팅 인스턴스들을 구현하기 위해서 단독으로 또는 조합하여 사용될 수 있다. 일부 실시예들에서 인스턴스 클라이언트들 (210) 또는 다른 임의의 다른 유저는 네트워크 트래픽을 컴퓨팅 인스턴스로 보내도록 구성될 수 있다(및/또는 허가된다). 다양한 실시예들에서, 컴퓨팅 인스턴스들은 다양한 동작들을 수행하기 위한 지속성 블럭기반의 스토리지를 획득하기 위해서 블럭기반의 스토리지 서비스 (220)에 의해 제공된 하나 이상의 데이터 볼륨들 (226)에 매핑되거나 또는 부착될 수 있다.
컴퓨팅 인스턴스들은 예를 들어, 인스턴스를 액세스 하기 위해 클라이언트 (210)를 요구하지 않고서 클라이언트 애플리케이션들을 수행하기에 적절한 다양한 해석 또는 컴파일 프로그래밍 언어들 예컨대 루비(Ruby), 펄(Perl), 파이손(Python), C, C++ 및 유사한 것, 또는 고성능 컴퓨팅 플랫폼들)을 지원하는 여러 가지 상이한 플랫폼들, 예컨대 애플리케이션 서버 인스턴스들, Java™ 가상 기계들 (JVMs), 범용 또는 특정 목적 동작 시스템들, 플랫폼들을 동작하거나 또는 구현할 수 있다. 일부 실시예들에서, 컴퓨팅 인스턴스들은 예상되는 가동시간 비율(uptime ratio)들에 기초하여 상이한 유형들 또는 구성들을 가진다. 특정 컴퓨팅 인스턴스의 가동시간 비율은 인스턴스가 활성화된 시간의 양, 대 인스턴스가 리저브드(reserve)되는 시간의 총 양의 비율로서 정의될 수 있다. 일부 구현예들에서 가동시간 비율은 또한 이용률(utilization)로서 지칭될 수 있다. 만약 클라이언트가 인스턴스가 리저브드되는 시간의 비교적 작은 부분동안 컴퓨팅 인스턴스를 사용할 것으로 예상한다면 (예를 들어, 연간 예약(year-long reservation)의 30% - 35%), 클라이언트는 인스턴스를 저 가동시간 비율 인스턴스(Low Uptime Ratio instance)로 예약하도록 결정할 수 있고, 관련 가격 정책에 따라 할인된 시간당 사용 금액을 지불할 수 있다. 만약 클라이언트가 최대 시간의 인스턴스를 필요로 하는 스테디-상태(steady-state) 워크로드를 가질 것으로 예상되면, 비록 일부 실시예들에서 시간당 금액은 실제 사용 시간들에 관계없이 가격 정책에 따라 예약의 전체 지속기간동안 부과될 수 있지만 클라이언트는 고 가동시간 비율(High Uptime Ratio) 인스턴스를 예약할 수 있고 훨씬 더 낮은 시간당 사용 금액을 지불할 수 있다. 상응하는 가격 정책을 갖는 중간 가동시간 비율 인스턴스들에 대한 옵션이 일부 실시예들에서 또한 지원될 수 있고, 선불 비용 및 시간당 비용들은 대응하는 고 가동시간 비율 과 저 가동시간 비율 비용들 사이에 해당한다.
컴퓨팅 인스턴스 구성들은 범용 또는 특정 용도, 예컨대 컴퓨팅 집중 애플리케이션들 (예를 들어, 고-트래픽 웹 애플리케이션들, ad 서빙, 배치(batch) 프로세싱, 비디오 인코딩, 분배 분석론, 고-에너지 물리현상, 게놈 분석, 및 컴퓨터의 유동체 동력학)을 위한 컴퓨터 워크로드들, 그래픽스 집중 워크로드들 (예를 들어, 게임 스트리밍, 3D 애플리케이션 스트리밍, 서버-측 그래픽스 워크로드들, 렌더링, 금융 모델링, 및 엔지니어링 디자인), 메모리 집중 워크로드들 (예를 들어, 고성능 데이터베이스들, 분배 메모리 캐시들, 인-메모리 분석론, 게놈 어셈블리 및 분석), 및 스토리지 최적화된 워크로드들 (예를 들어, 데이터 웨어하우징 (warehousing) 및 클러스터 파일 시스템들)를 갖는 컴퓨팅 인스턴스들을 또한 포함할 수 있다. 컴퓨팅 인스턴스들의 사이즈, 예컨대 가상 CPU 코어들의 특정 수, 메모리, 캐시, 스토리지, 뿐만 아니라 임의의 다른 성능 특성. 컴퓨팅 인스턴스들의 구성들은 그것들의 위치, 특정 데이터센터내, 이용 가능한 존, 지리적, 위치, 등… 및 (리저브드 컴퓨팅 인스턴스들의 경우에) 예약 기간 길이(reservation term length)를 또한 포함할 수 있다.
다양한 실시예들에서, 제공자 네트워크 (200)는 스토리지 동작들을 수행하기 위해 블럭기반의 스토리지 서비스 (220)를 또한 구현할 수 있다. 블럭기반의 스토리지 서비스 (220)는 하나 이상의 세트들의 데이터 볼륨들 데이터 볼륨(들) (226a,226b,226c, 내지 226n)을 저장하기 위한 블럭 레벨 스토리지를 제공하는 다수의 독립적인 스토리지 노드들 (224a,224b,224c 내지 224n)(예를 들어, 서버 블럭 데이터 스토리지 시스템들)의 풀(pool)로 구성되는 스토리지 시스템이다. 데이터 볼륨들 (226)은 특정 클라이언트들에 매핑될 수 있고, 연접하는(contiguous) 로직 블럭들의 세트로서 가상 블럭기반의 스토리지 (예를 들어, 하드 디스크 스토리지 또는 다른 지속성 스토리지)을 제공한다. 일부 실시예들에서, 데이터 볼륨 (226)은 다른 블럭 스토리지 동작들, 예컨대 스냅샷 동작들 또는 복제 동작들을 수행하기 위해 다수의 데이터 청크(chunk)들 (하나 이상의 데이터 블럭들을 포함하는)로 나누어질 수 있다.
데이터 볼륨 (226)의 볼륨 스냅샷(volume snapshot)은 데이터 볼륨 (226)의 상태에 대한 고정된 시간내 지점(point-in-time) 표현일 수 있다. 일부 실시예들에서, 볼륨 스냅샷들(242)은 데이터 볼륨을 유지하는 스토리지 노드 (224)에서 원격인, 예컨대 다른 스토리지 서비스 (240)에 저장될 수 있다. 스냅샷 동작들은 다른 스토리지 서비스 (240)내 원격 스냅샷 데이터 저장소와 같은 다른 스토리지 위치내 소정의 데이터 볼륨의 스냅샷을 발송, 복제 및/또는 다른식으로 보존하도록 수행될 수 있다.
블럭기반의 스토리지 서비스 (220)는 블럭기반의 스토리지 서비스 (220)의 동작을 보조하기 위해서 블럭기반의 스토리지 서비스 제어 평면 (222)을 구현할 수 있다. 다양한 실시예들에서, 블럭기반의 스토리지 서비스 제어 평면 (222)은 가상 컴퓨팅 서비스 (230)에 의해 제공되는 컴퓨팅 인스턴스들상에서 실행하는 프로그램들 및/또는 제공자 네트워크 (200) 및/또는 선택적으로 하나 이상의 다른 데이터센터들내에 위치된 컴퓨팅 시스템들 (미도시), 또는 네트워크 (260)상에서 이용 가능한 제공자 네트워크 (200)에 외부에 있는 다른 컴퓨팅 시스템들내에 위치된 다른 네트워크기반 서비스들과 같은 클라이언트들에 대한 블럭 데이터 스토리지의 이용 가능성 관리를 보조한다. 데이터 볼륨들 (226)에 대한 액세스는 블럭 데이터 트랜잭션(transaction) 명령들에 응답하여 제공자 네트워크 (200)내의 내부 네트워크상에서 또는 네트워크 (260)를 통하여 외부에서 제공될 수 있다.
블럭기반의 스토리지 서비스 제어 평면 (222)은 유저 계정들의 관리 (예를 들어, 생성, 삭제, 과금, 지불 징수, 등.)를 포함하여 블럭 레벨 스토리지 기능 제공에 관련된 여러 가지 서비스들을 제공할 수 있다. 블럭기반의 스토리지 서비스 제어 평면 (222)은 구성 요청들에 응답하여 데이터 볼륨들 (226)의 생성, 사용 및 삭제에 관련된 서비스들을 추가로 제공할 수 있다. 블럭기반의 스토리지 서비스 제어 평면 (222)은 또한 다른 스토리지 서비스 (240)상에 볼륨 스냅샷들 (242)의 생성, 사용 및 삭제에 관련된 서비스들을 제공할 수 있다. 블럭기반의 스토리지 서비스 제어 평면 (222)은 데이터 볼륨들 (226) 및 다른 볼륨들의 스냅샷들 (242)의 사용에 관련된 데이터 검사 및 성능의 프로세싱 및 수집에 관련된 서비스들을 또한 제공할 수 있다.
제공자 네트워크 (200)는 상기에서 언급한 바와 같이 다른 스토리지 서비스 (240)를 또한 구현할 수 있다. 다른 스토리지 서비스 (240)는 블럭기반의 스토리지 서비스 (220)에 의해 제공되는 것과 동일하거나 상이한 유형의 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서 다른 스토리지 서비스 (240)는 데이터를 데이터 오브젝트(object)들로서 저장 및 관리할 수 있는 오브젝트기반의 스토리지 서비스를 제공할 수 있다. 예를 들어, 다양한 데이터 볼륨들 (226)의 볼륨 스냅샷들 (242)은 특정 데이터 볼륨 (226)에 대한 스냅샷 오브젝트들로서 저장될 수 있다. 다른 스토리지 서비스 (240)에 추가하여, 제공자 네트워크 (200)는 다양한 태스크들 수행 또는 요청하기 위해서 제공자 네트워크 (200)의 다른 서비스들 (예를 들어, 블럭기반의 스토리지 서비스 (220), 가상 컴퓨팅 서비스 (230) 및/또는 다른 스토리지 서비스 (240)) 뿐만 아니라 클라이언트들 (210)을 허용하는 다양한 상이한 유형들의 분석적, 컴퓨터, 스토리지, 또는 다른 네트워크기반의 시스템을 포함할 수 있는 다른 네트워크기반 서비스들 (250)을 구현할 수 있다.
클라이언트들 (210)은 네트워크 제공자 (200)에 대한 요청들을 제출하도록 구성 가능한 임의 유형의 클라이언트를 아우를 수 있다. 예를 들어, 소정의 클라이언트 (210)는 적절한 버전의 웹 브라우저를 포함할 수 있거나, 또는 웹 브라우저에 의해 제공되는 실행 환경내에서 또는 그것에 대한 익스텐션(extension)으로서 실행하도록 구성된 플러그-인 모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트 (210)는 데이터베이스 애플리케이션 (또는 그것의 유저 인터페이스), 미디어 애플리케이션, 오피스 애플리케이션 또는 컴퓨팅 인스턴스들, 데이터 볼륨 (226), 또는 다양한 동작들을 수행하기 위한 제공자 네트워크 (200)내 다른 네트워크기반 서비스의 사용을 제공할 수 있는 임의의 다른 애플리케이션과 같은 애플리케이션을 아우를 수 있다. 일부 실시예들에서, 이런 애플리케이션은 반드시 모든 유형들의 네트워크기반의 데이터에 대한 전체 브라우저 지원을 구현하지 않고서 네트워크기반 서비스들 요청들을 생성 및 프로세싱하기 위한 충분한 프로토콜 지원 (예를 들어, 적절한 버전의 하이퍼텍스트 전송 프로토콜 (HTTP))을 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (210)은 REST(Representational State Transfer)-스타일 네트워크기반 서비스들 아키텍처, 문서- 또는 메시지기반의 네트워크기반 서비스들 아키텍처, 또는 다른 적절한 네트워크기반 서비스들 아키텍처에 따른 네트워크기반 서비스들 요청들을 생성하도록 구성될 수 있다. 일부 실시예들에서, 클라이언트 (210) (예를 들어, 컴퓨터의 클라이언트)는 컴퓨팅 인스턴스에 의해 제공된 컴퓨터 자원들 또는 데이터 볼륨 (226)에 의해 제공된 블럭 스토리지를 사용하는 클라이언트 (210)상에서 애플리케이션들 구현에 투과성인(transparent) 방식으로 컴퓨팅 인스턴스 또는 데이터 볼륨 (226) 에 대한 액세스를 제공하도록 구성될 수 있다.
클라이언트들 (210)은 외부 네트워크 (260)를 통하여 제공자 네트워크 (200)로 네트워크기반 서비스들 요청들을 전달할 수 있다. 다양한 실시예들에서, 외부 네트워크 (260)는 클라이언트들 (210)와 제공자 네트워크 (200) 간에 네트워크기반의 통신을 수립하기 위해 필요한 네트워킹 하드웨어 및 프로토콜들의 임의 적절한 조합을 아우를 수 있다. 예를 들어, 네트워크 (260)는 일반적으로 다양한 텔레통신 네트워크들 및 총괄하여 인터넷을 구현하는 서비스 제공자들을 아우를 수 있다. 네트워크 (260)는 개인 네트워크들 예컨대 로컬 영역 네트워크들 (LAN들) 또는 광 영역 네트워크들 (WAN들) 뿐만 아니라 공공 또는 개인 무선 네트워크들을 또한 포함할 수 있다. 예를 들어, 소정의 클라이언트 (210)및 제공자 네트워크 (200) 양쪽은 그것들 자체 내부의 네트워크들을 갖는 엔터프라이즈(enterprise)들내에서 개별적으로 프로비저닝될 수 있다. 이런 실시예에서, 네트워크 (260)는 주어진 클라이언트 (210)와 인터넷 사이 뿐만 아니라 인터넷과 제공자 네트워크 (200) 사이에서 네트워킹 링크를 수립하기 위해 필요한 하드웨어 (예를 들어, 모뎀들, 라우터들, 스위치들, 부하 분산기(load balancer)들, 프락시 서버들, 등.) 및 소프트웨어 (예를 들어, 프로토콜 스택들, 계정 소프트웨어, 방화벽/보안 소프트웨어, 등.)를 포함할 수 있다. 일부 실시예들에서, 클라이언트들 (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)은 또한 멀티-테넌트(multi-tenant) 스토리지를 제공할 수 있다. 예를 들어, 일부 실시예들에서, 스토리지 노드(310c)에서 유지되는 데이터 볼륨 (316a)은 블럭기반의 스토리지 서비스 (220)의 하나의 계정에 대하여 유지될 수 있지만, 그러나 또한 스토리지 노드 (310c)에서 유지되는 데이터 볼륨 (316b)은 상이한 계정에 대하여 유지될 수 있다. 스토리지 노드들 (310)은 개별 스토리지 노드를 구현하는 컴퓨팅 시스템 또는 디바이스에 직접 부착될 수 있는 하나 이상의 블럭기반 스토리지 디바이스들 (예를 들어, 하드 디스크 드라이브들, 고체 상태 드라이브들, 등.)내 그것들의 개별 데이터 볼륨들로 지속될 수 있다.
블럭기반의 스토리지 서비스 (220)는 여러 가지 상이한 방식들로 데이터 불륨들을 관리하고 유지할 수 있다. 데이터 볼륨의 동일한 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 일부 데이터 볼륨들에 대하여 상이한 내구성 기법들이 구현될 수 있다. 예를 들어, 예컨대 데이터 볼륨에 대한 단일 지점의 고장을 배제시킴으로써 상이한 유형들의 미러링(mirroring) 및/또는 복제 기술들이 데이터 볼륨의 내구성을 증가시키기 위해 구현될 수 있다(예를 들어, RAID 1). 데이터 볼륨에 대한 액세스를 제공하기 위해서, 그런다음 스토리지 노드들은 데이터 볼륨의 복제본을 유지하는 두개 이상의 스토리지 노드들 가운데 I/O 요청들, 예컨대 기록 요청들을 조정할 수 있다. 예를 들어, 소정의 데이터 볼륨 (312a)에 대하여, 스토리지 노드 (310a)는 마스터 스토리지 노드(master storage node)의 역할을 할 수 있다. 마스터 스토리지 노드는 다양한 실시예들에서, 데이터 볼륨의 클라이언트들로부터 요청들 (예를 들어, I/O 요청들)을 수신 및 프로세스할 수 있다. 따라서, 스토리지 노드 (310a)는 그런다음 슬레이브 스토리지 노드들로서 역할을 하는 하나 이상의 다른 스토리지 노드들로 데이터 볼륨 (312a)에 대한 I/O 요청들의 복제, 예컨대 기록 요청들, 또는 임의의 다른 변화들 또는 수정들을 조정할 수 있다. 예를 들어, 스토리지 노드 (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가 저장된다. 로그 레코드들을 순차적으로 저장함으로써, 로그 레코드들은 특정 시점에서의 페이지 캐시의 상태를 생성하기 위해 그것들이 저장된 순서로 리플레이(replay)되거나 또는 다시 사용할 수 있다.
게다가, 로그 레코드들의 순차적인 저장은 로그 레코드들을 저장하기 위한 기록 레이턴시를 줄일 수 있다. 페이지 캐시 기록 로그들 (320)은 지속성 스토리지 디바이스 (예를 들어, 하드-디스크 드라이브, 고체 상태 드라이브 (SSD), 또는 다른 블럭기반 스토리지 디바이스)으로 구현될 수 있다. 일부 실시예들에서, 페이지 캐시 기록 로그 (320)는 지속성 메모리 디바이스, 예컨대 비-휘발성 랜덤 액세스 메모리 (NV RAM), 배터리 또는 용량 지원 메모리, 또는 다른 유형들의 멤리스터(memristor) 기반 저항성 랜덤 액세스 메모리 (ReRAM), 3 차원의 NAND 기술들, 강유전체 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(internet small computer system interface)과 같은 다른 통신 프로토콜들에 따라 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)은 캐시 플러시 (414)를 시작하기 위해 페이지 캐시 (430)에 명령할 수 있다. 하나 이상의 플러시 동작들은 플러시 볼륨들 (440a, 440b, 내지 440n)을 유지하는 개별 블럭기반 스토리지 디바이스들로 페이지 캐시 엔트리들 (432)을 플러시하도록 수행될 수 있다. 페이지 캐시 엔트리들이 플러시되면, 데이터 볼륨들 (440)을 유지하는 블럭기반 스토리지 디바이스들은 앞서 페이지 캐시 (430)내에 저장된 완성된 기록 동작들을 지속적으로 저장할 수 있다. 일부 실시예들에서, 로그 관리 모듈 (422)은 한번에 플러시되는 페이지 캐시의 부분들을 늘리거나 줄여서 플러시 동작들의 사이즈를 결정할 수 있다. 캐시 플러시가 완료된(416) 표시가 수신되면, 로그 관리 모듈은 그러면 추가의 로그 레코드들을 위한 공간을 비워서 로그 트림 지점 (418)에 앞선 로그 레코드들을 다시 이용할 수 있다(예를 들어, 삭제 및 이용 가능한 마크).
도 5 는 일부 실시예들에 따른 블럭기반의 스토리지내 유지되는 데이터 볼륨들을 위한 선택적 페이지 캐시 기록 로깅을 예시하는 블럭 다이어그램이다. 상기에서 언급한 바와 같이, 일부 실시예들에서 페이지 캐시 기록 로깅은 각 볼륨 베이시스상에서 인에이블하거나 또는 디스에이블될 수 있다. I/O 관리기 (420)에서 수신된 기록(들) (502)은 로그 관리 모듈 (422)을 통하여 보내질 수 있다. 로그 관리 모듈 (422)은 특정 데이터 볼륨에 대한 내구성 특성 여부를 (페이지 캐시 기록 로깅이 인에이블한지 또는 디스에이블인지를 표시하는) 결정하도록 구성될 수 있다. 예시된, 예제에서, 볼륨 제어들 (520b) 및 (520c)은 페이지 캐시 기록 로그 (400)로 가는 기록 요청들 (504)에 대한 페이지 캐시 로깅을 방지한다. 그러나, 페이지 캐시 기록 로깅을 허용하는 것이 가능한 내구성 특성을 갖는 데이터 볼륨들 쪽으로 보내진 다른 기록들 (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 은 일부 실시예들에 따른 페이지 캐시 기록 로그를 트림(trim)하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. (810)에 표시된 대로, 트림 이벤트(trim event)는 스토리지 노드에 대한 페이지 캐시에 업데이트들을 설명하는 로그 레코드들을 유지하는 페이지 캐시 로그에 대하여 감지될 수 있다. 트림 이벤트는 페이지 캐시 기록 로그내 이용 가능한 스토리지 공간이 어떤 임계값을 초과한 것을 표시 또는 결정할 수 있다. 다른 표시들 또는 결정들이 추가적으로, 또는 대안적으로, 사용될 수 있다. 예를 들어, 이전 트림 이벤트이후 경과된 시간의 양인 다른 표시 또는 타임머가 트림 이벤트를 트리거할 수 있다. 일부 실시예들에서, 더티 페이지(dirty page)들의 페이지 캐시 플러시가 발생하여 페이지 캐시 기록 로그내 로그 레코드들의 연접 부분이 더 이상 지속할 필요가 없을 때 트림 이벤트가 감지될 수 있다.
페이지 캐시 로그에 대한 트림 이벤트 감지에 응답하여, 페이지 캐시 로그내 트림 위치가 식별될 수 있다. 트림 위치는 트림 이벤트의 시간에 로그내 현재 위치일 수 있다. 트림 이벤트 위치는 트림이 수행되는 동안 어디 다른곳에 저장되거나 또는 기록될 수 있다. (830)에 표시된 대로, 다양한 실시예들에서 플러시 동작들이 시스템 메모리로부터 데이터 볼륨을 저장하는 블럭기반 스토리지 디바이스들로 페이지 캐시 엔트리들을 기록하기 위해서 수행될 수 있다. 플러시 동작들을 블럭기반 스토리지 디바이스들내 그것들의 대응하는 위치들로 페이지 캐시의 부분들의 컨텐츠들을 기록할 수 있다. 일부 실시예들에서, 변형된 (즉, 더티(dirty)) 페이지 캐시의 해당 부분들만 플러시될 수 있다.
적어도 일부 실시예들에서, 페이지 캐시 플러시 동작들의 사이즈에 관한 결정이 이루어질 수있다. 예를 들어, 플러시 동작들의 수행동안에 페이지 캐시의 플러시된 부분에 대한 기록 요청들을 차단된다. 플러시된 영역 부분의 사이즈는 차단되는 어떤 기록 요청들에 추가되는 레이턴시(latency)에 대비하여 트림될 필요가 있는 로그가 갖는 속도에 의존하여 조절될 수 있다. 예를 들어, 만약 기록 요청들이 플러시 동작의 플러시된 영역내 페이지 캐시의 부분에 기록될 것이라면, 플러시된 영역 부분의 사이즈는 특정 기록 요청이 차단될 가능성을 늘리거나 또는 줄임으로써 계류중인 기록 요청들에 대한 레이턴시를 증가시키거나 또는 축소시킬 수 있다. 플러시 동작들이 완료시, 페이지 캐시 로그를 유지하는 지속성 스토리지 디바이스의 부분들은 (840)에 표시된 대로 페이지 캐시에 대한 업데이트들을 설명하는 추가 로그 레코드들을 스팅하기 위해 다시 사용될 수 있다.
일부 실시예들에서, 제어 평면 또는 다른 시스템 컴포넌트는 블럭기반의 스토리지내 데이터 볼륨들을 유지하는 스토리지 노드들에 대한 페이지 캐시 기록 로깅의 배치, 구현, 및/또는 허용을 명령할 수 있다. 도 9는 일부 실시예들에 따른 페이지 캐시 기록 로깅 기술들을 효율적으로 사용하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. (910)에 표시된 대로, 페이지 캐시 기록 로그를 유지하지 않는 블럭기반의 스토리지 시스템내 스토리지 노드들은 식별될 수 있다. 예를 들어, 페이지 캐시 기록 로깅이 구현되는지 여부를 포함하는 스토리지 노드들의 버전, 구성, 또는 상태를 나타내는 시스템 레벨 메타데이터가 유지될 수 있다. (920)에 표시된 대로, 식별된 스토리지 노드들은 각각의 스토리지 노드에 대하여 내구성 스코어를 결정하기 위해 평가될 수 있다. 예를 들어, 만약 특정 스토리지 노드가 전력 장애의 경향이 있는 데이터센터 또는 다른 물리적 또는 지리적 위치에 구현되면, 이런 정보는 스토리지 노드에 대하여 내구성 스코어를 낮출 수 있다. 유사하게, 만약 동일한 데이터센터 또는 지리적 위치내 다수의 피어(peer)들이 페이지 캐시 기록 로깅을 구현하였다면, 내구성 스코어(durability score)는 상승될 것이다. 스토리지 노드상에 유지되는 다수의 데이터 볼륨들이 인에이블한 페이지 캐시 기록 로깅과 함께 다른 스토리지 노드들상에 복제본을 갖는지 여부와 같은 많은 다른 요인들이 스토리지 노드에 대한 내구성 스코어에 영향을 미칠 수 있다. 이들 다양한 요인들에 의존하는 상이한 가중치들, 조합들, 또는 다른 계산들이 특정 스토리지 노드에 대한 내구성 스코어를 결정하기 위해 사용될 수 있다. 따라서, 내구성 스코어에 영향을 미칠 수 있는 다양한 다른 요인들에 관하여 이전 예들이 제한되도록 의도되지 않는다.
(930)에 표시된 대로, 스토리지 노드들에 대한 내구성 스코어들에 기초하여 다양한 실시예들에서 페이지 캐시 기록 로깅을 구현하기 위한 하나 이상의 스토리지 노드가 선택될 수 있다. 이런 선택들은 상이한 통신 메커니즘들에 따라 다양한 상이한 블럭기반의 스토리지 서비스 운영 또는 관리 인터페이스들에 제공될 수 있다. 일부 실시예들에서, 도 9에 예시된 기술들은 블럭기반의 스토리지 서비스를 구현하는 스토리지 노드들의 전체 플리트(fleet) 또는 블럭기반의 스토리지 서비스를 구현하는 스토리지 노드들의 소정 서브셋 (예를 들어, 특정한 룸, 데이터센터, 또는 다른 지리적 위치 또는 그룹화)에 대하여 주기적으로 또는 비주기적으로 수행될 수 있다. 일부 실시예들에서 도 9에 방법의 각각의 반복은 미리 정의된 수의 디플로이먼트(deployment)가 할당될 수 있고, 따라서 이용 가능한 디플로이먼트들의 수가 지정될 때까지 내구성 스코어에 기초하여 스토리지 노드들이 선택될 수 있다.
다양한 실시예들에서 페이지 캐시 기록 로깅(page cache write logging)은 스토리지 노드에서 유지되는 데이터 볼륨들의 내구성을 증가시킬 수 있다. 페이지 캐시 기록 로그내 로그 레코드들을 저장함으로써, 시스템 고장의 이벤트에서 페이지 캐시의 상태는 복원될 수 있다. 그러나, 일부 실시예들에서, 페이지 캐시 기록 로깅을 수행하는 증가된 부담은 기록 요청들의 수행을 제한 또는 페이지 캐시 기록 로그를 유지하는 지속성 스토리지 디바이스들의 성능들을 초과할 수 있다. 더 아주 세밀한 페이지 캐시 기록 로깅을 허용하는 것은 스토리지 노드가 내구성을 최대화하고 레이턴시를 최소화하기 위해 그것의 성능을 효율적으로 조율하는 것을 허용할 수 있다. 도 10 은 일부 실시예들에 따라 스토리지 노드에서 유지되는 데이터 볼륨들을 대한 내구성 특성들을 동적으로 수정하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
(1010)에 표시된 대로, 다양한 실시예들에서 페이지 캐시에 대한 업데이트들을 설명하는 로그 레코드들을 저장하는 페이지 캐시 기록 로그가 다수의 데이터 볼륨들을 유지하는 스토리지 노드에 수신된 기록 요청들에 대하여 유지될 수 있다. 페이지 캐시 기록 로그는 상기에서 논의된 바와 같이 지속성 스토리지 디바이스내 유지될 수 있다. 지속성 스토리지 디바이스는 블럭기반 스토리지 디바이스, 예컨대 하드 디스크 드라이브 또는 고체 상태 드라이브일 수 있다. 일부 실시예들에서, 지속성 스토리지 디바이스는 비-휘발성 랜덤 액세스 메모리 디바이스 (NV-RAM)일 수 있다. 로그 레코드들은 기록 레이턴시를 줄이기 위해서 순차적으로 지속성 스토리지 디바이스내 기록 및/또는 저장될 수 있다. 상이한 데이터 볼륨들에 대한 로그 레코드들은 기록 요청이 페이지 캐시에 업데이트가 수행되었을 때에 기초하여 저장될 수 있고, 일부 실시예들에서는, 동일한 데이터 볼륨에 대하여 로그 레코드들과 함께 그룹화되거나 또는 저장되지 않을 수 있다.
(1020)에 표시된 대로, 다양한 실시예들에서 페이지 캐시 기록 로그에 로깅될 스토리지 노드에 대한 기록 요청들의 착신 레이트가 모니터링될 수 있다. 도 11에 관하여 이하에서 설명될, 일부 실시예들에서, 레이트는 로깅될 시간 기간내에 수신된 기록 요청들의 수의 간단한 측정치일 수 있다. 레이트는 또한 기록 요청들을 수행하기 위해 수행될 작업의 양을 나타내는 측정치 (예를 들어, 초당 입력/출력 동작들(IOPS : input/output operations per second))로 변환될 수 있다. 다양한 실시예들에서, 기록 요청들의 모니터링은 지속적으로, 주기적으로, 또는 비주기적으로 수행될 수 있다.
(1030)에 표시된 대로, 적어도 부분적으로, 로깅될 스토리지 노드에 대한 착신 기록 요청들의 레이트에 기초하여, 데이터 볼륨들 중 하나 (또는 그 이상의) 에 대한 내구성 특성은 동적으로 수정될 수 있다. 내구성 특성은 다양한 실시예들에서, 페이지 캐시 기록 로깅이 데이터 볼륨에 대하여 인에이블한지 또는 디스에이블인지 여부를 나타낼 수 있다. 따라서, 내구성 특성을 수정함으로써, 특정 데이터 볼륨을 향하여 보내진 기록 요청들은 기록 요청이 수신된 시간에 데이터 볼륨에 대한 내구성 특성의 현재 상태에 의존하여 로깅될 수 있거나 또는 로깅되지 않을 수 있다. 일부 실시예들에서, 동적 수정들은 스토리지 노드에서 유지되는 데이터 볼륨들의 전부를 포함할 수 있다. 예를 들어, 일부 실시예들에서 페이지 캐시 기록 로깅은 모든 데이터 볼륨들에 대하여 디스에이블될 수 있다 (또는 인에이블하게될 수 있다).
스토리지 노드에 대한 착신 기록 요청들의 모니터링 레이트는 스토리지 노드가 수신된 기록 요청들의 수에서의 극적인 증가 또는 감소와 같이 상태들을 변화시키기 위해 조정하는 것을 허용할 수 있다. 도 11은 일부 실시예들에 따른 데이터 볼륨들에 대한 페이지 캐시 기록 로깅이 인에이블인지(enable) 또는 디스에이블인지(disable)를 결정하기 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다. 착신 기록 요청들의 레이트는 개선 동작들을 취하기 위해, 또는 스토리지 노드에서 유지되는 데이터 볼륨들에 대한 성능 및/또는 내구성을 최대화하기 위해 사용될 수 있다.
(1110)에 표시된 대로, 페이지 캐시 기록 로그에 로깅될 스토리지 노드(110)에 대한 착신 기록 요청들의 레이트가 결정될 수 있다. 일부 실시예들에서, 이 레이트는 시간 기간내에 수신된 기록 요청들의 수의 간단한 측정치일 수 있다. 레이트는 또한 기록 요청들을 수행하기 위해 수행될 작업의 양을 나타내는 측정치 (예를 들어, 초당 입력/출력 동작들(IOPS : input/output operations per second))로 변환될 수 있다. 결정된 후에, (1120)에 표시된 대로 착신 기록 요청들의 레이트는 로깅 레이트 상한(ceiling)과 비교될 수 있다. 일부 실시예들에서 로깅 레이트 상한은, 페이지 캐시 기록 로그를 구현하는 지속성 스토리지 디바이스의 어떤 스루풋 성능에 해당하도록 결정되거나 또는 구성될 수 있다. 예를 들어, 만약 하드 디스크 드라이브가 최대값 8000 IOPS에서 수행할 수 있다면, 그러면 로깅 레이트 상한은 하드 디스크 드라이브의 최대 스루풋에서의 수 또는 그 아래에서의 어떤 수(예를 들어, 7000 IOPS)이도록 결정될 수 있다. 일부 실시예들에서, 내구성 특성들 시간의 동적 수정들이 디바이스의 스루풋 용량을 초과하지 않고 현재 레이트를 낮추는 것을 허용하기 위해서 로깅 레이트 상한은 지속성 스토리지 디바이스의 최대 스루풋보다 낮추어 설정될 수 있다 (로그 레코드 손실 또는 차단된 기록 요청들을 야기할 수 있음 - 페이지 캐시 기록 로그가 캐치 업(catch up)할 수 있을 때까지 기록 요청들이 차단될 수 있기 때문에).
만약 결정된 착신 기록 요청들의 레이트가 로깅 레이트 상한을 초과한다면, (1120)에서 긍정 출력에 의해 표시된 대로, 하나 이상의 데이터 볼륨들의 선택은 로깅 레이트 상한아래로 로깅될 착신 기록 요청들의 레이트를 낮추기 위해서 선택된 데이터 볼륨들에 대한 페이지 캐시 기록 로깅을 디스에이블하도록 할 수 있다. 데이터 볼륨의 선택은 현재 페이지 캐시 기록 로깅이 인에이블된 스토리지 노드에 데이터 볼륨들로부터 이루어질 수있다. 예를 들어, 만약 10 데이터 볼륨들 중 8개가 페이지 캐시 기록 로깅이 인에이블하다면, 선택은 10 데이터 볼륨들 중 8개에서 이루어질 수 있다.
선택은 몇몇의 상이한 요인들에 기초하여 제공될 수 있다. 예를 들면, 선택은 각각의 데이터 볼륨의 사이즈에 기반될 수 있다. 예를 들어, 가장 큰 데이터 볼륨은 불균형적으로 큰 기록 요청들의 양을 수신할 수 있다. 선택은 또한 특정 데이터 볼륨을 향하여 보내진 기록 요청들의 수에 기초하여 이루어질 수 있다. 예를 들어, 만약 데이터 볼륨이, 작지만, 빈번한 기록 요청들을 수신한다면, 작은 데이터 볼륨은 레이트 상한 초과하는 로깅될 착신 기록 요청들의 레이트를 밀어낼 수 있다. 이들 및 다양한 다른 요인들에 기초하여, 하나 이상의 데이터 볼륨들이 선택될 수 있다. 예를 들어, 데이터 볼륨들은 각각의 데이터 볼륨과 관련된 기록 요청들의 추정 레이트를 가질 수 있다. 선택된 데이터 볼륨들에 대한 기록 요청들의 추정 레이트가 착신 기록 요청의 레이트를 수락할만한 양으로 낮출때 까지 데이터 볼륨들은 계속 선택될 수 있다. 일부 실시예들에서, 다른 데이터 볼륨들에 비하여 일부 데이터 볼륨들을 선택하기 위하여 데이터 볼륨들의 순서화 또는 우선순위 기법이 강요될 수 있다. 예를 들어, 일부 실시예들에서, 다른 스토리지 노드들에서 유지되는 데이터 볼륨들의 복제본들의 내구성 특성들은 알려질 수 있다. 따라서 만약, 특정 데이터 볼륨이 다른 데이터 볼륨보다 더 큰 수의 기록 요청들을 가지지만, 그러나 특정 데이터 볼륨은 또한 단지 이 스토리지 노드에서 (그리고 복제본들이 유지되는 다른 스토리지 노드들에서가 아니라) 페이지 캐시 기록 로깅을 가진다면, 그러면 특정 데이터 볼륨은 선택을 위한 순서화 또는 우선순위 기법에서 배제되거나 또는 낮아질 수 있다. 선택된 후에, 선택된 데이터 볼륨에 대한 페이지 캐시 기록 로깅은 (1140)에 표시된 대로 디스에이블될 수 있다.
일부 실시예들에서, 페이지 캐시 기록 로그에 로깅될 착신 기록 요청들의 레이트는 또한 (1150)에 표시된 대로 로깅 레이트 하한(하한e)에 비교될 수 있다. 로깅 레이트 상한에 관해서 상기에서 논의된 분석에 유사하게, 로깅 레이트 하한은 스토리지 노드가 추가 페이지 캐시 기록 로깅을 인에이블하게 할 수 있는 착신 기록 요청들의 해당 레이트를 나타낼 수 있다. 예를 들어, 로깅 레이트 하한은 볼륨 당 기록 요청들의 평균 수에 기초하여 결정되거나 또는 설정될 수 있어서 로깅 레이트 하한 아래의 레이트는 적당한 또는 이력상 평균 데이터 볼륨이 로깅 레이트 상한 (1120)을 초과하지 않고서 인에이블하게 되는 기록 로깅을 가질 수 있다는 것을 나타낸다.
데이터 볼륨 (또는 데이터 볼륨들)의 선택은 디스에이블된 페이지 캐시 기록 로깅을 갖는 데이터 볼륨들로부터 이루어질 수 있다. 상기에서 논의된 바와 같이, 선택은 각각의 데이터 볼륨의 사이즈에 기반될 수 있다. 예를 들어, 가장 작은 데이터 볼륨은 불균형적으로 작은 기록 요청들의 양을 수신할 수 있다. 선택은 또한 특정 데이터 볼륨을 향하여 보내진 기록 요청들의 수에 기초하여 이루어질 수 있다. 예를 들어, 만약 데이터 볼륨이, 크지만, 이력상 빈번하지 않은 수의 기록 요청들을 수신한다면, 큰 데이터 볼륨은 로깅 레이트 상한을 초과하여 로깅될 착신 기록 요청들의 레이트를 밀어내지 않을 수 있다. 이들 및 다양한 다른 요인들에 기초하여, (1160)에 표시된 대로 하나 이상의 데이터 볼륨들이 선택될 수 있다. 예를 들어, 데이터 볼륨들은 각각의 데이터 볼륨과 관련된 기록 요청들의 추정 레이트를 가질 수 있다. 선택된 데이터 볼륨들에 대한 기록 요청들의 추정 레이트가 착신 기록 요청의 레이트를 로깅 레이트 하한보다 위로 올릴 때까지 데이터 볼륨들은 계속 선택될 수 있다. 일부 실시예들에서, 다른 데이터 볼륨들에 비하여 일부 데이터 볼륨들을 선택하기 위하여 데이터 볼륨들의 순서화 또는 우선순위 기법이 강요될 수 있다. 예를 들어, 일부 실시예들에서, 다른 스토리지 노드들에서 유지되는 데이터 볼륨들의 복제본들의 내구성 특성들은 알려질 수 있다. 따라서 만약, 특정 데이터 볼륨이 다른 데이터 볼륨보다 더 큰 수의 기록 요청들을 가지지만, 그러나 특정 데이터 볼륨이 또한 임의의 스토리지 노드에서 (데이터 볼륨의 복제본들이 유지되는) 인에이블된 페이지 캐시 기록 로깅을 가지지 않는다면, 그러면 특정 데이터 볼륨은 선택을 위한 순서화 또는 우선순위 기법에 우호적일 수 있다. 선택된 후에, 선택된 데이터 볼륨에 대한 페이지 캐시 기록 로깅은 (1170)에 표시된 대로 인에이블하게 될 수 있다.
다양한 실시예들에서 (1110)으로 돌아가는 (1150)의 부정측은 이 평가가 착신 기록 요청들의 레이트가 모니터링되는 동안 반복적으로 수행될 수 있다는 것을 나타낸다. 이런 식으로, 데이터 볼륨들의 내구성 특성들에 대한 조절들이 시간에 따라 이루어질 수 있다.
스토리지 노드에서 유지되는 데이터 볼륨들에 대한 내구성 특성들이 시간에 따라 동적으로 변할 수 있고, 동일한 데이터 볼륨에 대한 기록 요청은 어떤 때는 페이지 캐시 기록 로깅을 가지고 다른 때는 페이지 캐시 기록 로깅을 가지지 않고 프로세스될 수 있다. 도 12는 일부 실시예들에 따른 특정 데이터 볼륨의 내구성 특성들에 따른 특정 데이터 볼륨에 대한 스토리지 노드에서 기록 요청들을 프로세싱하는 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
(1210)에 표시된 대로, 기록 요청이 데이터 볼륨에 대하여 수신될 수 있다. 데이터 볼륨들의 내구성 특성들을 나타내는 메타데이터 또는 다른 정보가 스토리지 노드에서 유지될 수 있다. (1220)에 표시된 대로 페이지 캐시 기록 로깅이 데이터 볼륨에 대하여 인에이블한지 여부를 결정하기 위해서 메타데이터가 평가될 수 있다. 만약 그렇다면, 그러면 (1250)에 표시된 대로 페이지 캐시는 기록을 위해 업데이트될 수 있고 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드는 (1260)에 표시된 대로 스토리지 노드에 페이지 캐시 기록 로그내 저장될 수 있다. 도 6에 관하여 상기에서 언급한 바와 같이, 일부 실시예들에서 기록을 위한 페이지 캐시에 대한 업데이트 (1250) 및 페이지 캐시 기록 로그내 로그 레코드의 스토리지 (1260)는 병렬로 또는 거의 병렬로 수행될 수 있다(예를 들어, 동시에 시작되었지만, 그러나 하나의 동작이 다른 것 앞에 마무리되는). 페이지 캐시가 업데이트되고 로그 레코드가 저장된 후에, 기록 요청은 (1270)에 표시된 대로 완료된 것으로 확인 응답될 수 있다. 만약 페이지 캐시 기록 로깅이 (1220)로부터 부정측으로 표시된 대로 데이터 볼륨에 대하여 인에이블하지 않다면, 그러면 (1230)에 표시된 대로 페이지 캐시는 기록 요청에 대하여 업데이트 될 수 있고, (1240)에 표시된 대로 기록 요청은 페이지 캐시 기록 로그내 로그 레코드를 저장하지 않고서 완료한 것으로 확인 응답될 수 있다.
도 7에 관하여 상기에서 논의된 바와 같이, 페이지 캐시 기록 로그내 로그 레코드들은 시스템 고장 이전에 페이지 캐시의 페이지 캐시 상태를 복원하기 위해 리플레이될 수 있다. 이런 식으로, 설사 페이지 캐시가 아직 페이지 캐시 엔트리들을 데이터 볼륨들을 유지하는 블럭기반 스토리지 디바이스들로 플러시 하지 않았다 할지라도 완료된 것으로 확인 응답된 기록 요청들은 손실되지 않을 수 있다. 따라서, 데이터 볼륨의 현재 버전은 블럭기반 스토리지 디바이스들에 저장된대로 그리고 페이지 캐시 기록 로그에 설명된대로 데이터 볼륨에 기초하여 유지될 수 있다. 페이지 캐시 기록 로깅이 스토리지 노드에서 특정 데이터 볼륨들에 대하여 인에이블하게되고 그리고 디스에이블될 수 있기 때문에, 스토리지 노드상의 일부 데이터 볼륨들은 현재 사용될 수 있지만, 다른 것들은 현재 사용되지 않을 수 있다. 도 13은 일부 실시예들에 따른 인에이블인 그리고 디스에이블인 기록 로깅으로 데이터 볼륨 복원을 위한 다양한 방법들 및 기술들을 예시하는 하이 레벨 플로우 차트이다.
(1310)에 표시된 대로, 스토리지 노드는 시스템 고장으로부터 복원될 수 있다. 스토리지 노드는 다수의 데이터 볼륨들을 유지할 수 있다. 추가의 복원 동작들을 수행하기 위해, 데이터 볼륨들은 인에이블한 페이지 캐시 기록 로깅을 갖는 데이터 볼륨들을 식별하기 위해 평가될 수 있다. (1320)에 표시된 대로, 특정 데이터 볼륨이 선택될 수 있다. (1330)에 표시된 대로 페이지 캐시 기록 로깅이 데이터 볼륨에 대하여 인에이블한지 여부를 결정하기 위해서 데이터 볼륨에 대한 내구성 특성이 평가될 수 있다. 만약 그렇다면, 긍정 출력에 의해 표시된 대로, 데이터 볼륨은 (1350)에 표시된 대로 현재 사용하는 것으로 식별될 수 있고, (1360)에 표시된 대로 I/O 요청들에 대하여 이용 가능하게 될 수 있다. 예를 들어, 만약 특정 데이터 볼륨이 현재 사용하는 것으로 식별되면, 그러면 블럭-스토리지 서비스 제어 평면, 또는 스토리지 노드 그 자체는, 스토리지 노드를 데이터 볼륨에 대한 마스터 스토리지 노드로서 식별하는 것과 같이 내구성 기법으로 데이터 볼륨에 대한 새로운 역할을 식별할 수 있다. 식별된 마스터 스토리지 노드는 그런다음 데이터 볼륨의 새로운 복제본을 유지하기 위해 하나 이상의 슬레이브 스토리지 노드들을 획득할 수 있고, 슬레이브 스토리지 노드들에 대한 데이터 볼륨을 복제할 수 있다. 대안적으로, 일부 실시예들에서, 스토리지 노드는 임의의 피어(peer) 또는 슬레이브 스토리지 노드들을 획득하지 않고서 현재 사용하는 데이터 볼륨에 대한 I/O 요청들 프로세싱을 시작할 수 있다. I/O 요청들에 대한 데이터 볼륨을 준비하기 위해 현재 사용하는 데이터 볼륨에 대한 임의의 다른 복원 동작들이 또한 수행될 수 있다. 만약, 그러나, (1330)으로부터 부정 측에 의해 표시된 대로 페이지 캐시 기록 로깅이 데이터 볼륨에 대하여 인에이블하지 않다면, 데이터 볼륨은 (1340)에 표시된 대로 현재 사용되지 않는 것으로 식별될 수 있다. 현재 사용되지 않는 데이터 볼륨들은 그것이 데이터 볼륨의 현재 버전을 유지하는지 여부를 식별하기 위해 데이터 볼륨의 복제본을 유지하는 다른 스토리지 노드 대기와 같은 잉여 복원 동작들에 대상이 될 수 있다. 일부 실시예들에서, 현재 사용하는 것으로 식별되지 않은 데이터 볼륨들은 스토리지 노드에 블럭기반 스토리지 디바이스들로부터 삭제되거나 또는 제거될 수 있다.
다양한 실시예들에서 본 출원에서 설명된 방법들은 하드웨어 및 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 예를 들어, 일 실시예에서, 방법들은 프로세서들에 결합된 컴퓨터-판독가능한 스토리지 매체상에 저장된 프로그램 명령들을 실행시키는 하나 이상의 프로세서들을 포함하는 컴퓨터 시스템 (예를 들어, 도 14에서의 컴퓨터 시스템)에 의해 구현될 수 있다. 프로그램 명령들은 본 출원에서 설명된 기능을 구현하도록 구성될 수 있다 (예를 들어, 다양한 서버들, 스토리지 노드들, 제어 평면들, 관리기들 및/또는 다른 컴포넌트들의 기능, 예컨대 본 출원에서 설명된 블럭기반의 스토리지 서비스를 구현하는 것들). 도면들에 예시되며 본 출원에서 설명된 다양한 방법들은 방법들의 예시적인 실시예들을 나타낸다. 임의의 방법의 순서는 변경될 수 있으며, 다양한 요소들이 부가되고, 재순서화되고, 조합되고, 생략되고, 수정될 수 있다.
본 출원에서 설명된 블럭기반의 스토리지에 대한 페이지 캐시 기록 로깅의 실시예들은 다양한 다른 디바이스들과 상호 작용할 수 있는 하나 이상의 컴퓨터 시스템들상에서 실행될 수 있다. 도 14는 다양한 실시예들에 따른 예제 컴퓨터 시스템을 예시하는 블럭 다이어그램이다. 예를 들어, 상이한 실시예들에서 컴퓨터 시스템 (2000)은 컴퓨팅 클러스터, 데이터 저장소들, 및/또는 클라이언트의 스토리지 및/또는 컴퓨팅 노드들을 구현하도록 구성될 수 있다. 컴퓨터 시스템 (2000)은 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스, 애플리케이션 서버, 스토리지 디바이스, 전화기, 모바일 전화기, 또는 일반적 컴퓨팅 디바이스의 유형을 포함하는 임의의 다양한 유형들의 디바이스들일 수 있지만 이에 한정되는 것을 아니다.
컴퓨터 시스템 (2000)은 입력/출력 (I/O) 인터페이스 (2030)을 통하여 시스템 메모리 (2020)에 결합된 하나 이상의 프로세서들 (2010) (단일 또는 멀티-스레드일 수 있는 다수의 코어들을 포함할 수 있는 임의의 것)을 포함한다. 컴퓨터 시스템 (2000)은 I/O 인터페이스 (2030)에 결합된 네트워크 인터페이스 (2040)를 더 포함한다. 다양한 실시예들에서, 컴퓨터 시스템 (2000)은 하나의 프로세서 (2010)을 포함하는 유니프로세서 시스템, 또는 몇몇의 프로세서들 (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), 램버스(Rambus) RAM, EEPROM, 비-휘발성/플래시-유형 메모리, 또는 임의의 다른 유형의 메모리)을 이용하여 구현될 수 있다. 시스템 메모리 (2020)는 본 출원에서 설명된 방법들 및 기술들을 구현하기 위해 프로세서(들) (2010)에 의해 실행 가능한 프로그램 명령들 (2025)을 수용할 수 있다. 다양한 실시예들에서, 프로그램 명령들 (2025)은 플랫폼 고유의 바이너리, 임의의 기계 번역 언어로 예컨대 JavaTM 바이트-코드로, 또는 임의의 다른 언어로 예컨대 C/C++, JavaTM, 등., 또는 그것의 임의 조합으로 인코딩될 수 있다. 예를 들어, 예시된 실시예에서, 프로그램 명령들 (2025)은 상이한 실시예들에서 스토리지 노드의 기능을 구현하기위해 실행가능한 프로그램 명령들을 포함한다. 일부 실시예들에서, 프로그램 명령들 (2025)은 다수의 개별 클라이언트들, 노드들, 및/또는 다른 컴포넌트들을 구현할 수 있다.
일부 실시예들에서, 프로그램 명령들 (2025)은 임의의 다양한 동작 시스템들, 예컨대 UNIX, 리눅스, 솔라리스(Solaris) TM, MacOSTM, 윈도우들TM, 등일 수 있는 동작 시스템 (미도시)을 구현하기 위해 실행 가능한 명령들을 포함할 수 있다. 임의 또는 전부의 프로그램 명령들 (2025)은 다양한 실시예들에 따라 프로세스를 수행하는 컴퓨터 시스템 (또는 다른 전자 디바이스들)을 프로그램하기 위해 사용될 수 있는 명령들을 그 위에 저장한 비-일시적 컴퓨터-판독가능한 스토리지 매체를 포함할 수 있는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있다. 비-일시적 컴퓨터-판독가능한 스토리지 매체는 기계 (예를 들어, 컴퓨터)에 의해 판독가능한 형태(예를 들어, 소프트웨어, 프로세싱 애플리케이션)로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 개괄적으로 말해서, 비-일시적 컴퓨터-액세스 가능한 매체는 I/O 인터페이스 (2030)를 통하여 컴퓨터 시스템 (2000)에 결합된 컴퓨터-판독가능한 스토리지 매체 또는 메모리 매체들 예컨대 자기 또는 광 매체, 예를 들어, 디스크 또는 DVD/CD-ROM를 포함할 수 있다. 비-일시적 컴퓨터-판독가능한 스토리지 매체는 시스템 메모리 (2020) 또는 다른 유형의 메모리로서 컴퓨터 시스템 (2000)의 일부 실시예들에 포함될 수 있는 임의의 휘발성 또는 비-휘발성 매체들 예컨대 RAM (예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM, 등.), ROM, 등을 또한 포함할 수 있다. 다른 실시예들에서, 프로그램 명령들은 네트워크 인터페이스 (2040)를 통하여 구현될 수 있는 것과 같은 통신 매체 예컨대 네트워크 및/또는 무선 링크를 통하여 전송되는 광, 음향 또는 다른 형태의 전파 신호 (예를 들어, 반송파들, 적외선 신호들, 디지털 신호들, 등.)를 이용하여 통신될 수 있다.
일부 실시예들에서, 시스템 메모리 (2020)는 본 출원에서 설명된 것처럼 구성될 수 있는 데이터 저장소 (2045)를 포함할 수 있다. 일반적으로, 시스템 메모리 (2020) (예를 들어, 시스템 메모리 (2020)내 데이터 저장소 (2045)), 지속성 스토리지 (2060), 및/또는 원격 스토리지 (2070)는 데이터 블럭들, 데이터 블럭들의 복제본들, 데이터 블럭들 및/또는 그것들의 상태와 관련된 메타데이터, 구성 정보, 및/또는 본 출원에서 설명된 방법들 및 기술들을 구현하는데 인에이블한 임의의 다른 정보를 저장할 수 있다.
일 실시예에서, I/O 인터페이스 (2030)는 프로세서 (2010), 시스템 메모리 (2020) 및 스루네트워크 인터페이스 (2040) 또는 다른 주변기기 인터페이스들을 포함하는 시스템내 임의의 주변 디바이스들 사이에 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예들에서, I/O 인터페이스(2030)는 하나의 구성요소(예로서, 시스템 메모리(2020))에서 다른 구성요소(예로서, 프로세서(2010))에 의한 사용에 적합한 포맷으로 데이터 신호들을 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환들을 수행할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(2030)는 예를 들면, 주변 구성요소 상호 연결(PCI) 버스 표준 또는 범용 직렬 버스(USB) 표준의 변형과 같은, 다양한 유형들의 주변 버스들을 통해 접속된 디바이스들에 대한 지원을 포함할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(2030)의 기능은 예를 들면, 노스 브리지 및 사우스 브리지와 같은, 둘 이상의 별개의 구성요소들로 분리될 수 있다. 또한, 몇몇 실시예들에서, 시스템 메모리(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(Web Services Description Language)와 같은 기계-프로세스가능한 포맷으로 설명되는 인터페이스를 가질 수 있다. 다른 시스템들은 네트워크기반 서비스의 인터페이스의 설명에 의해 미리 규정된 방식에 네트워크기반 서비스와 상호 작용할 수 있다. 예를 들어, 네트워크기반 서비스는 다른 시스템들이 호출할 수 있는 다양한 동작들을 정의할 수 있고 다양한 동작들을 요청할 때 다른 시스템들이 따를 것으로 예상될 수 있는 특정 애플리케이션 프로그래밍 인터페이스 (API)을 정의할 수 있다.
다양한 실시예들에서, 네트워크기반 서비스는 네트워크기반 서비스들 요청과 관련된 파라미터들 및/또는 데이터를 포함하는 메시지의 사용을 통하여 요청되거나 또는 호출될 수 있다. 이런 메시지는 특정 마크업 언어 예컨대 확장 마크업 언어 (XML)에 따라 포맷될 수 있고/있거나 프로토콜 예컨대 SOAP(Simple Object Access Protocol)을 이용하여 엔캡슐레이트(encapsulate)될 수 있다. 네트워크기반 서비스들 요청을 수행하기 위해서, 네트워크기반 서비스들 클라이언트는 요청을 포함하는 메시지를 조합할 수 있고 인터넷기반 애플리케이션 계층 전송 프로토콜 예컨대 하이퍼텍스트 전송 프로토콜 (HTTP)을 이용하여 네트워크기반 서비스에 해당하는 자체 어드레스를 가진 엔드 포인트 (예를 들어, URL(Uniform Resource Locator)로 메시지를 전송할 수 있다.
일부 실시예들에서, 네트워크기반 서비스들은 메시지기반의 기술들보다는 RESTful(Representational State Transfer) 기술들을 이용하여 구현될 수 있다. 예를 들어, RESTful 기술에 따라 구현된 네트워크기반 서비스는 SOAP 메시지내에 엔캡슐레이트된 파라미터들보다 HTTP 방법 예컨대 PUT, GET, 또는 DELETE내에 포함된 파라미터들을 통하여 호출될 수 있다.
비록 실시예들은 상기에서 상당히 상세하게 설명되었지만, 상기의 개시가 완전히 이해된 후에 당해 기술분야의 통상의 기술자들에 명확해질 수 있는 많은 변형예들 및 수정예들이 이루어질 수 있다. 이하의 청구항들은 모든 이러한 수정예들 및 변형예들을 포괄하는 것으로 해석되고, 그에 따라 상기 설명은 제한적 의미보다는 예시적으로 간주되는 것으로 의도된다.
본 개시의 실시예들은 이하의 항목들을 고려하여 설명될 수 있다:
1. 스토리지 노드(storage node)를 구현하는 시스템에 있어서,
복수개의 데이터 볼륨(data volume)들을 유지하는 복수개의 블럭기반 스토리지 디바이스들;
페이지 캐시(page cache)를 포함하는 시스템 메모리로서, 상기 페이지 캐시는 상기 복수개의 데이터 볼륨들을 지속적으로 업데이트하기 위해서 상기 복수개의 블럭기반 스토리지 디바이스들로 주기적으로 또는 비주기적으로 플러시되는, 상기 시스템 메모리;
상기 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들을 유지하는 페이지 캐시 기록 로그를 유지하는 지속성 스토리지 디바이스로서, 상기 복수개의 로그 레코드들은 상기 페이지 캐시내 데이터의 손실로 귀결되는 시스템 고장의 이벤트시에 상기 페이지 캐시에 복원될 상기 페이지 캐시의 상태를 설명하는, 상기 지속성 스토리지 디바이스;
로그 관리 모듈로서, 상기 로그 관리 모듈은:
상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하고;
적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하되,
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키거나; 또는
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블 시키는 것을 포함하도록 구성된다.
2. 항목1의 시스템에 있어서, 상기 적어도 하나의 데이터 볼륨에 대한 상기 내구성 특성을 동적으로 수정하기 위해서, 상기 로그 관리 모듈은 :
적어도 부분적으로,
상기 복수개의 데이터 볼륨들의 각각에 대한 개별 사이즈; 또는
상기 복수개의 데이터 볼륨들의 각각을 향하여 보내지는 기록 요청들의 개별 양에 기초하여 수정할 상기 적어도 하나의 데이터 볼륨을 선택하도록 더 구성된다.
3. 항목1의 시스템에 있어서, 상기 로그 관리 모듈은:
특정 데이터 볼륨에 대한 기록 요청을 수신하고;
페이지 캐시 기록 로깅이 상기 특정 데이터 볼륨에 대하여 디스에이블된지 여부를 결정하고; 및
상기 기록 요청에 따른 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 기록 요청에 대한 로그 레코드를 저장하지 않고 상기 기록 요청을 완료한 것으로 확인 응답(acknowledge)하도록 더 구성된다.
4. 항목1의 시스템에 있어서, 상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 스토리지 노드들 중 하나로서 구현되고, 상기 네트워크기반의 블럭기반의 스토리지 서비스는 복수개의 상이한 클라이언트들에 대한 데이터 볼륨들을 유지한다.
5. 방법에 있어서,
하나 이상의 컴퓨팅 디바이스들에 의해,
스토리지 노드에서, 상기 스토리지 노드에서 유지되는 복수개의 데이터 볼륨들에 대한 기록 요청들에 따라 상기 스토리지 노드에서 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들 각각을 저장하는 지속성 스토리지 디바이스내 페이지 캐시 기록 로그를 유지하는 단계;
상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하는 단계;
적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하는 단계로서,
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키는 단계; 또는
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블 시키는 단계를 포함하는, 상기 수정하는 단계를 수행하는 것을 포함한다.
6. 항목5의 방법에 있어서, 적어도 하나의 데이터 볼륨에 대한 상기 내구성 특성을 동적으로 수정하는 단계는:
적어도 부분적으로,
상기 복수개의 데이터 볼륨들의 각각에 대한 개별 사이즈; 또는
상기 복수개의 데이터 볼륨들의 각각을 향하여 보내지는 기록 요청들의 개별 양에 기초하여 수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 단계를 더 포함한다.
7. 항목6의 방법에 있어서, 상기 스토리지 노드는 블럭기반의 스토리지 시스템을 구현하는 복수개의 스토리지 노드들 중 하나이며, 상기 복수개의 스토리지 노드들 중 다른 것들은 상기 스토리지 노드에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본을 유지하고, 수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 단계는 적어도 부분적으로, 상기 상이한 스토리지 노드들에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본들에 대한 개개의 내구성에 더 기초된다.
8. 항목 5의 방법에 있어서, 상기 스토리지 노드에서의 상기 복수개의 데이터 볼륨들의 전부에 대한 내구성 특성이 동일하게 수정된다.
9. 항목 5의 방법에 있어서,
상기 복수개의 데이터 볼륨들 중 특정 데이터 볼륨에 대한 기록 요청을 수신하는 단계;
페이지 캐시 기록 로깅이 상기 특정 데이터 볼륨에 대하여 디스에이블된지 여부를 결정하는 단계; 및
상기 기록 요청에 따른 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 기록 요청에 대한 로그 레코드를 저장하지 않고 상기 기록 요청을 완료한 것으로 확인 응답(acknowledge)하는 단계를 더 포함한다.
10. 항목 9의 방법에 있어서,
상기 복수개의 데이터 볼륨들 중 다른 데이터 볼륨에 대한 다른 기록 요청을 수신하는 단계;
페이지 캐시 기록 로깅이 상기 다른 특정 데이터 볼륨에 대하여 인에이블한지 여부를 결정하는 단계;
페이지 캐시 기록 로깅이 상기 다른 특정 데이터 볼륨에 대하여 인에이블한지 여부의 결정에 응답하여:
상기 다른 기록 요청에 따라 상기 페이지 캐시를 업데이트하는 단계;
상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하는 단계; 및
상기 다른 기록 요청에 따라 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하고, 상기 다른 기록 요청을 완료한 것으로 확인 응답하는 단계 를 더 포함한다.
11. 항목 5의 방법에 있어서,
상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 인에이블시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 하한(logging rate floor) 아래인지 여부 결정에 응답하여 수행되고; 및
상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 디스에이블 시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 상한(logging rate ceiling)을 초과하는지 여부 결정에 응답하여 수행된다.
12. 항목 5의 방법에 있어서,
시스템 고장으로부터 복원시에:
인에이블된 페이지 캐시 기록 로깅을 갖는 상기 복수개의 데이터 볼륨들의 데이터 볼륨들을 현재 사용하는 것으로 식별하는 단계; 및
상기 식별된 데이터 볼륨들을 입력/출력 (I/O) 요청들 프로세싱에 이용 가능하게 하는 단계를 더 포함한다.
13. 항목 5의 방법에 있어서, 상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 스토리지 노드들 중 하나이고, 기록 요청들은 네트워크기반 가상의 컴퓨팅 서비스에 의해 구현되는 가상의 컴퓨팅 인스턴스들로부터 수신되고, 상기 네트워크기반 블럭들 스토리지 서비스 및 상기 네트워크기반 가상의 컴퓨팅 서비스는 상기 동일한 네트워크기반 서비스들 제공자 네트워크의 일부로서 함께 구현된다.
14. 프로그램 명령들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로그램 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하나이상의 컴퓨팅 디바이스들로 하여금:
스토리지 노드에서, 상기 스토리지 노드에서 유지되는 복수개의 데이터 볼륨들에 대한 기록 요청들에 따라 상기 스토리지 노드에서 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들 각각을 저장하는 지속성 스토리지 디바이스내 페이지 캐시 기록 로그를 유지시키고;
상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하고;
적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하되,
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키거나; 또는
상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블 시키는 것을 포함하는, 상기 동적 수정을 구현시킨다.
15. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 적어도 하나의 데이터 볼륨에 대한 내구성 특성을 동적으로 수정하는 것에서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금:
수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 것을 구현하되, 적어도 부분적으로,
상기 복수개의 데이터 볼륨들의 각각에 대한 개별 사이즈; 또는
상기 복수개의 데이터 볼륨들의 각각을 향하여 보내지는 기록 요청들의 개별 양에 기초한다.
16. 항목 15의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 스토리지 노드는 블럭기반의 스토리지 시스템을 구현하는 복수개의 스토리지 노드들 중 하나이며, 상기 복수개의 스토리지 노드들 중 다른 것들은 상기 스토리지 노드에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본을 유지하고, 수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 단계는 적어도 부분적으로, 상기 상이한 스토리지 노드들에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본들에 대한 개개의 내구성에 더 기초된다.
17. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서,
상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 인에이블시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 하한(logging rate floor) 아래인지 여부 결정에 응답하여 수행되고;
상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 디스에이블 시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 상한(logging rate ceiling)을 초과하는지 여부 결정에 응답하여 수행된다.
18. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 복수개의 데이터 볼륨들 중 특정 데이터 볼륨에 대한 기록 요청을 수신하고;
페이지 캐시 기록 로깅이 상기 특정 데이터 볼륨에 대하여 디스에이블된지 여부를 결정하고; 및
상기 기록 요청에 따른 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 기록 요청에 대한 로그 레코드를 저장하지 않고 상기 기록 요청을 완료한 것으로 확인 응답(acknowledge)하는 것을 구현하게 한다.
19. 항목 18의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은 상기 하나 이상의 컴퓨팅 디바이스들로 하여금 추가로:
상기 복수개의 데이터 볼륨들 중 다른 데이터 볼륨에 대한 다른 기록 요청을 수신하고;
페이지 캐시 기록 로깅이 상기 다른 특정 데이터 볼륨에 대하여 인에이블한지 여부를 결정하고;
페이지 캐시 기록 로깅이 상기 다른 특정 데이터 볼륨에 대하여 인에이블한지 여부의 결정에 응답하여:
상기 다른 기록 요청에 따라 상기 페이지 캐시를 업데이트하고;
상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하고; 및
상기 다른 기록 요청에 따라 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하고, 상기 다른 기록 요청을 완료한 것으로 확인 응답하는 것을 구현하게 한다.
20. 항목 14의 비-일시적, 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 스토리지 노드들 중 하나로서 구현되고, 상기 네트워크기반의 블럭기반의 스토리지 서비스는 복수개의 상이한 클라이언트들에 대한 데이터 볼륨들을 유지한다.

Claims (15)

  1. 스토리지 노드를 구현하는 시스템에 있어서,
    복수개의 데이터 볼륨(data volume)들을 유지하는 복수개의 블럭기반 스토리지 디바이스들;
    페이지 캐시(page cache)를 포함하는 시스템 메모리로서, 상기 페이지 캐시는 상기 복수개의 데이터 볼륨들을 지속적으로 업데이트하기 위해서 상기 복수개의 블럭기반 스토리지 디바이스들로 주기적으로 또는 비주기적으로 플러시(flush)되는, 상기 시스템 메모리;
    상기 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들을 유지하는 페이지 캐시 기록 로그를 유지하는 지속성 스토리지 디바이스(persistent storage device)로서, 상기 복수개의 로그 레코드들은 상기 페이지 캐시내 데이터의 손실로 귀결되는 시스템 고장의 이벤트시에 상기 페이지 캐시에 복원될 상기 페이지 캐시의 상태를 설명하는, 상기 지속성 스토리지 디바이스;
    로그 관리 모듈로서,
    상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하고;
    적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하되,
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블(enable)시키거나; 또는
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블(disable)시키는 것을 포함하도록 구성된, 상기 로그 관리 모듈을 포함하는, 시스템.
  2. 청구항 1에 있어서, 상기 적어도 하나의 데이터 볼륨에 대한 상기 내구성 특성을 동적으로 수정하기 위해서, 상기 로그 관리 모듈은
    상기 복수개의 데이터 볼륨들의 각각에 대한 개별 사이즈; 또는
    상기 복수개의 데이터 볼륨들의 각각을 향하여 보내지는 기록 요청들의 개별 양에 적어도 부분적으로 기초하여 수정할 상기 적어도 하나의 데이터 볼륨을 선택하도록 더 구성되는, 시스템.
  3. 청구항 1에 있어서, 상기 로그 관리 모듈은
    특정 데이터 볼륨에 대한 기록 요청을 수신하고;
    페이지 캐시 기록 로깅이 상기 특정 데이터 볼륨에 대하여 디스에이블된지 여부를 결정하고; 및
    상기 기록 요청에 따른 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 기록 요청에 대한 로그 레코드를 저장하지 않고 상기 기록 요청을 완료한 것으로 확인 응답(acknowledge)하도록 더 구성되는, 시스템.
  4. 청구항 1에 있어서, 상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 스토리지 노드들 중 하나로서 구현되고, 상기 네트워크기반의 블럭기반의 스토리지 서비스는 복수개의 상이한 클라이언트들에 대한 데이터 볼륨들을 유지하는, 시스템.
  5. 방법에 있어서,
    하나 이상의 컴퓨팅 디바이스들에 의해,
    스토리지 노드에서, 상기 스토리지 노드에서 유지되는 복수개의 데이터 볼륨들에 대한 기록 요청들에 따라 상기 스토리지 노드에서 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들 각각을 저장하는 지속성 스토리지 디바이스내 페이지 캐시 기록 로그를 유지시키고;
    상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하고;
    적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하되,
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키거나; 또는
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블 시키는 것을 포함하는, 상기 동적 수정을 수행시키는 단계를 포함하는, 방법.
  6. 청구항 5에 있어서, 적어도 하나의 데이터 볼륨에 대한 상기 내구성 특성을 동적으로 수정하는 단계는 :
    적어도 부분적으로,
    상기 복수개의 데이터 볼륨들의 각각에 대한 개별 사이즈; 또는
    상기 복수개의 데이터 볼륨들의 각각을 향하여 보내지는 기록 요청들의 개별 양에 기초하여 수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 단계를 더 포함하는, 방법.
  7. 청구항 6에 있어서, 상기 스토리지 노드는 블럭기반의 스토리지 시스템을 구현하는 복수개의 스토리지 노드들 중 하나이며, 상기 복수개의 스토리지 노드들 중 다른 것들은 상기 스토리지 노드에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본을 유지하고, 수정할 상기 적어도 하나의 데이터 볼륨을 선택하는 단계는 적어도 부분적으로, 상기 상이한 스토리지 노드들에서 유지되는 상기 복수개의 데이터 볼륨들의 개별 복제본들에 대한 개개의 내구성에 더 기초되는, 방법.
  8. 청구항 5에 있어서, 상기 스토리지 노드에서의 상기 복수개의 데이터 볼륨들의 전부에 대한 내구성 특성이 동일하게 수정되는, 방법.
  9. 청구항 5에 있어서,
    상기 복수개의 데이터 볼륨들 중 특정 데이터 볼륨에 대한 기록 요청을 수신하는 단계;
    페이지 캐시 기록 로깅이 상기 특정 데이터 볼륨에 대하여 디스에이블된지 여부를 결정하는 단계; 및
    상기 기록 요청에 따른 상기 페이지 캐시 업데이트에 응답하여, 상기 페이지 캐시 기록 로그내 상기 기록 요청에 대한 로그 레코드를 저장하지 않고 상기 기록 요청을 완료한 것으로 확인 응답(acknowledge)하는 단계를 더 포함하는, 방법.
  10. 청구항 9에 있어서,
    상기 복수개의 데이터 볼륨들 중 다른 데이터 볼륨에 대하여 다른 기록 요청을 수신하는 단계;
    페이지 캐시 기록 로깅이 상기 다른 데이터 볼륨에 대하여 인에이블한지 여부를 결정하는 단계;
    페이지 캐시 기록 로깅이 상기 다른 데이터 볼륨에 대하여 인에이블한지 여부의 결정에 응답하여:
    상기 다른 기록 요청에 따라 상기 페이지 캐시를 업데이트하는 단계;
    상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하는 단계; 및
    상기 다른 기록 요청에 따라 상기 페이지 캐시를 업데이트하고 상기 페이지 캐시 기록 로그내 상기 다른 기록 요청에 대하여 상기 페이지 캐시에 대한 업데이트를 설명하는 로그 레코드를 저장하는 것에 응답하여, 상기 다른 기록 요청을 완료한 것으로 확인 응답하는 단계를 더 포함하는, 방법.
  11. 청구항 5에 있어서,
    상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 인에이블시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 하한(logging rate floor) 아래인지 여부 결정에 응답하여 수행되고; 및
    상기 적어도 하나의 데이터 볼륨에 대한 페이지 캐시 기록 로깅을 디스에이블 시키는 것은 상기 착신 기록 요청들의 레이트가 로깅 레이트 상한(logging rate ceiling)을 초과하는지 여부 결정에 응답하여 수행하는, 방법.
  12. 청구항 5에 있어서,
    시스템 고장으로부터 복원시에:
    인에이블된 페이지 캐시 기록 로깅을 갖는 상기 복수개의 데이터 볼륨들의 데이터 볼륨들을 현재 사용하는 것으로 식별하는 단계; 및
    상기 식별된 데이터 볼륨들을 입력/출력 (I/O) 요청들 프로세싱에 이용 가능하게 하는 단계를 더 포함하는, 방법.
  13. 청구항 5에 있어서,
    상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 스토리지 노드들 중 하나이고, 기록 요청들은 네트워크기반 가상의 컴퓨팅 서비스에 의해 구현되는 가상의 컴퓨팅 인스턴스(instance)들로부터 수신되고, 상기 네트워크기반의 블럭기반의 스토리지 서비스 및 상기 네트워크기반 가상의 컴퓨팅 서비스는 동일한 네트워크기반 서비스들 제공자 네트워크의 일부로서 함께 구현되는, 방법.
  14. 스토리지 노드를 구현하는 시스템에 있어서,
    상기 스토리지 노드로서,
    상기 스토리지 노드에서 유지되는 복수개의 데이터 볼륨들에 대한 기록 요청들에 따라 상기 스토리지 노드에서 페이지 캐시에 대한 업데이트들을 설명하는 복수개의 로그 레코드들 각각을 저장하는 지속성 스토리지 디바이스내 페이지 캐시 기록 로그를 유지시키도록 구성된, 상기 스토리지 노드;
    로그 관리 모듈로서,
    상기 페이지 캐시 기록 로그에 로깅될 상기 스토리지 노드에 대한 착신(incoming) 기록 요청들의 레이트를 모니터링하고;
    적어도 부분적으로, 상기 착신 기록 요청들의 레이트에 기초하여, 상기 복수개의 데이터 볼륨들 중 적어도 하나의 데이터 볼륨에 대한 내구성 특성(durability property)를 동적으로 수정하되,
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 인에이블시키거나; 또는
    상기 적어도 하나의 데이터 볼륨에 대하여 페이지 캐시 기록 로깅을 디스에이블 시키는 것을 포함하는, 상기 동적 수정을 수행하도록 구성된, 상기 로그 관리 모듈을 포함하는, 시스템.
  15. 청구항 14에 있어서, 상기 스토리지 노드는 네트워크기반의 블럭기반의 스토리지 서비스를 구현하는 복수개의 다른 스토리지 노드들 중 하나이고, 상기 네트워크기반의 블럭기반의 스토리지 서비스는 복수개의 상이한 클라이언트들에 대한 데이터 볼륨들을 유지하는, 시스템.
KR1020167027960A 2014-03-11 2015-03-10 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기 KR101764085B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/204,916 US9342457B2 (en) 2014-03-11 2014-03-11 Dynamically modifying durability properties for individual data volumes
US14/204,916 2014-03-11
PCT/US2015/019576 WO2015138376A1 (en) 2014-03-11 2015-03-10 Dynamically modifying durability properties for individual data volumes

Publications (2)

Publication Number Publication Date
KR20160130493A KR20160130493A (ko) 2016-11-11
KR101764085B1 true KR101764085B1 (ko) 2017-08-14

Family

ID=54069037

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027960A KR101764085B1 (ko) 2014-03-11 2015-03-10 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기

Country Status (9)

Country Link
US (1) US9342457B2 (ko)
EP (1) EP3117331B1 (ko)
JP (1) JP6389268B2 (ko)
KR (1) KR101764085B1 (ko)
CN (1) CN106068507B (ko)
AU (1) AU2015229685B2 (ko)
CA (1) CA2940456C (ko)
SG (1) SG11201607073SA (ko)
WO (1) WO2015138376A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416812A (zh) * 2015-12-30 2021-02-26 华为技术有限公司 访问请求处理方法、装置及计算机系统
CN108431783B (zh) 2015-12-30 2020-09-18 华为技术有限公司 访问请求处理方法、装置及计算机系统
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10387398B2 (en) * 2017-03-07 2019-08-20 Sap Se Continuous database page flusher
US10474541B2 (en) * 2017-03-07 2019-11-12 Sap Se Optimized savepoint during database recovery
US10310946B2 (en) * 2017-04-07 2019-06-04 Sap Se Parallel database page flusher
US10402389B2 (en) * 2017-04-25 2019-09-03 Sap Se Automatic adaptation of parameters controlling database savepoints
US10409695B2 (en) * 2017-04-25 2019-09-10 Sap Se Self-adaptive continuous flushing of pages to disk
US10360111B2 (en) * 2017-05-03 2019-07-23 Sap Se Self-adaptive parallel database page flusher
US10558530B2 (en) * 2017-07-11 2020-02-11 Sap Se Database savepoint with shortened critical phase time
CN108829720B (zh) * 2018-05-07 2022-01-14 麒麟合盛网络技术股份有限公司 数据处理方法及装置
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
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
US11262918B1 (en) 2020-09-30 2022-03-01 Amazon Technologies, Inc. Data storage system with uneven drive wear reduction
US20220261356A1 (en) * 2021-02-16 2022-08-18 Nyriad, Inc. Cache operation for a persistent storage device
CN114564662A (zh) * 2022-03-04 2022-05-31 北京达佳互联信息技术有限公司 页面引导方法、装置、电子设备、介质及产品
CN116166194B (zh) * 2023-01-16 2023-11-03 广州辰创科技发展有限公司 一种装备保障维修维护管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193244A1 (en) 2004-02-04 2005-09-01 Alacritus, Inc. Method and system for restoring a volume in a continuous data protection system
US20130007219A1 (en) 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
US20130042156A1 (en) 2011-08-12 2013-02-14 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589574B1 (en) * 2005-12-29 2013-11-19 Amazon Technologies, Inc. Dynamic application instance discovery and state management within a distributed system
US8307359B1 (en) 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
US7979652B1 (en) * 2007-12-20 2011-07-12 Amazon Technologies, Inc. System and method for M-synchronous replication
US8159210B2 (en) * 2008-07-11 2012-04-17 Kinects Solutions, Inc. System for automatically detecting power system configuration
US8578083B2 (en) 2009-03-03 2013-11-05 Vmware, Inc. Block map based I/O optimization for storage virtual appliances
US8407403B2 (en) * 2009-12-07 2013-03-26 Microsoft Corporation Extending SSD lifetime using hybrid storage
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
US8380962B2 (en) * 2010-08-16 2013-02-19 Symantec Corporation Systems and methods for efficient sequential logging on caching-enabled storage devices
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8725782B2 (en) 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
JP5828701B2 (ja) * 2011-07-19 2015-12-09 キヤノン株式会社 情報処理装置および情報処理方法、プログラム並びに記憶媒体
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193244A1 (en) 2004-02-04 2005-09-01 Alacritus, Inc. Method and system for restoring a volume in a continuous data protection system
US20130007219A1 (en) 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
US20130042156A1 (en) 2011-08-12 2013-02-14 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging

Also Published As

Publication number Publication date
EP3117331B1 (en) 2021-05-05
EP3117331A4 (en) 2017-11-22
CA2940456A1 (en) 2015-09-17
US20150261673A1 (en) 2015-09-17
SG11201607073SA (en) 2016-09-29
CN106068507A (zh) 2016-11-02
CA2940456C (en) 2019-04-16
JP2017520030A (ja) 2017-07-20
AU2015229685B2 (en) 2018-01-04
AU2015229685A1 (en) 2016-09-08
CN106068507B (zh) 2019-10-18
US9342457B2 (en) 2016-05-17
KR20160130493A (ko) 2016-11-11
JP6389268B2 (ja) 2018-09-12
EP3117331A1 (en) 2017-01-18
WO2015138376A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
KR101764085B1 (ko) 개별 데이터 볼륨들에 대한 내구성 특성들을 동적으로 수정하기
US11188469B2 (en) Page cache write logging at block-based storage
US9983825B2 (en) Efficient data volume replication for block-based storage
KR101920173B1 (ko) 스토리지 클라이언트 파일 시스템들을 위한 스토리지 볼륨들의 동적 스케일링
US10489422B2 (en) Reducing data volume durability state for block-based storage
US9405483B1 (en) Optimized write performance at block-based storage during volume snapshot operations
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources

Legal Events

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