KR101841997B1 - 순응적 존속을 위한 시스템, 방법 및 인터페이스 - Google Patents

순응적 존속을 위한 시스템, 방법 및 인터페이스 Download PDF

Info

Publication number
KR101841997B1
KR101841997B1 KR1020157007756A KR20157007756A KR101841997B1 KR 101841997 B1 KR101841997 B1 KR 101841997B1 KR 1020157007756 A KR1020157007756 A KR 1020157007756A KR 20157007756 A KR20157007756 A KR 20157007756A KR 101841997 B1 KR101841997 B1 KR 101841997B1
Authority
KR
South Korea
Prior art keywords
cache
storage
data
request
virtual machine
Prior art date
Application number
KR1020157007756A
Other languages
English (en)
Other versions
KR20150081424A (ko
Inventor
비크람 조쉬
양 루안
마이클 에프 브라운
데이비드 플린
브렌트 림 체 하오
제린 제 양
프라샨트 라다크리쉬난
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20150081424A publication Critical patent/KR20150081424A/ko
Application granted granted Critical
Publication of KR101841997B1 publication Critical patent/KR101841997B1/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

저장 모듈은 상이한 존속 레벨들에 따라 I/O 요청들을 서비스하도록 구성될 수 있다. I/O 요청의 존속 레벨은 I/O 요청을 서비스하는데 사용되는 저장 리소스(들), 저장 리소스(들)의 구성, 리소스들의 저장 모드 등과 관련될 수 있다. 일부 실시예들에서, 존속 레벨은 I/O 요청의 캐시 모드와 관련될 수 있다. 임시의 또는 1회성 데이터에 관한 I/O 요청들은 일시적 캐시 모드를 사용하여 서비스될 수 있다. 일시적 캐시 모드는 데이터를 주 스토리지에 라이트-스루(또는 라이트-백)하지 않고 I/O 요청 데이터를 캐시 스토리지에 저장하는 것을 포함할 수 있다. 일시적 캐시 데이터는 가상 기계 이주에 응하여 호스트들 사이에서 전송될 수 있다.

Description

순응적 존속을 위한 시스템, 방법 및 인터페이스{SYSTEMS, METHODS, AND INTERFACES FOR ADAPTIVE PERSISTENCE}
본 발명은 순응적 존속을 위한 시스템 및 방법에 관한 것으로, 몇몇 실시예들에서, 일시적 캐시 모드로 캐싱되는 데이터를 관리하는 시스템 및 방법에 관한 것이다.
입력/출력(I/O) 요청들은 상이한 데이터 존속 요구들을 가질 수 있다. 예를 들어, 일부 기록 요청들은 데이터 손실 또는 손상에 대하여 보안될 필요가 있는 데이터와 관련될 수 있다. 다른 기록 요청들은 장기간 동안 보존될 필요가 없고/없거나 재시작 및/또는 재부팅 시에 손실되는 것으로 예상되는 데이터와 관련될 수 있다. 저장 시스템은 모든 요청들을 동등하게 취급할 수 있으며, 이로 인해 I/O 성능을 감소시킬 수 있다.
순응적 존속을 위한 방법의 실시예들이 본원에 개시된다. 개시된 방법들은 하나 이상의 기계 실행 가능 작동들 및/또는 단계들을 포함할 수 있다. 개시된 작동들 및/또는 단계들은 컴퓨터 판독 가능 저장 매체 상에 저장되는 프로그램 코드로 구현될 수 있다. 따라서, 본원에 개시되는 방법들의 실시예들은 하나 이상의 방법 작동들 및/또는 단계들을 수행하도록 실행 가능한 컴퓨터 사용 가능 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체를 포함하는 컴퓨터 프로그램 제품으로 구현될 수 있다.
일부 실시예들에서, 개시된 방법은 복수의 I/O 요청들을 식별하는 단계, I/O 요청들의 하나 이상의 속성들에 기반하여 I/O 요청들에 대한 존속의 각각의 레벨들을 선택하는 단계, 및 I/O 요청들에 대해 선택되는 존속의 레벨에 따라 하나 이상의 저장 리소스들을 사용하여 I/O 요청들을 서비스하는 단계를 포함한다. I/O 요청을 식별하는 단계는 저장 스택에서 I/O 요청들을 모니터링하는 단계를 포함할 수 있다.
존속의 레벨은 존속의 각각의 레벨을 갖는 I/O 요청들을 서비스하는데 사용되는 하나 이상의 저장 리소스들, I/O 요청들을 서비스하는데 사용되는 하나 이상의 저장 리소스들의 구성 등에 상응할 수 있다. 존속의 레벨들 중 하나 이상은 저장 모드를 지정하도록 구성될 수 있다. 존속 레벨은 2개 이상의 저장 리소스들 상에서 리던던트 스토리지를 지정할 수 있고, 방법은 2개 이상의 저장 리소스들을 사용하여 하나의 존속 레벨을 갖는 I/O 요청들을 서비스하는 단계를 더 포함할 수 있다.
일부 실시예들에서, 방법은 제1 I/O 요청과 연관되는 파일 식별자 및 제1 I/O 요청과 연관되는 애플리케이션 중 하나 이상에 기반하여 제1 I/O 요청에 대한 제1 존속 레벨을 선택하는 단계를 포함한다. 존속 레벨들 중 하나는 일시적 캐싱 모드에 상응할 수 있고, 방법은 주 저장 리소스 상에 데이터를 저장하지 않고 캐시에 하나의 존속 레벨을 갖는 I/O 요청들의 데이터를 저장하는 단계를 더 포함할 수 있다.
저장 클라이언트에서 비롯되는 입력/출력(I/O) 요청을 수신하는 단계, I/O 요청의 하나 이상의 특성들에 기반하여 I/O 요청에 대한 복수의 존속 레벨들 중 하나를 결정하는 단계로서, 존속 레벨들 각각은 I/O 요청, 저장 리소스의 구성 및 저장 모드를 서비스하는데 사용할 저장 리소스들 중 하나 이상을 지정하는 결정하는 단계, 및/또는 선택된 존속 레벨에 따라 I/O 요청을 서비스하는 단계를 포함하는 방법의 실시예들이 본원에 개시된다. 존속 레벨들 중 제1 레벨은 일시적 캐싱 모드를 지정할 수 있고, 존속 레벨들 중 제2 레벨은 라이트-스루(write-through) 캐싱 모드를 지정한다. 존속 레벨들 중 2개 이상은 I/O 요청, 저장 구성 및/또는 캐싱 모드를 서비스하는데 사용되는 저장 리소스들에 있어서 상이하다.
존속 레벨들 중 제1 레벨은 일시적 캐시 모드를 지정할 수 있고, 방법은 기록 I/O 요청들의 데이터를 캐시 리소스에 기록하는 것에 응하여 그리고 기록 I/O 요청들의 데이터를 주 스토리지에 기록하지 않고 제1 존속 레벨의 기록 I/O 요청들의 완료를 확인하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 존속 레벨들 중 제1 레벨은 제1 오류 정정 코드 인코딩을 지정하고, 존속 레벨들 중 제2 레벨은 제2의 상이한 오류 정정 코드 인코딩을 지정한다.
방법은 I/O 요청의 소스 식별자, I/O 요청의 파일 식별자, I/O 요청과 연관되는 애플리케이션 및 I/O 요청의 파라미터 중 하나 이상에 기반하여 I/O 요청에 대한 존속 레벨을 결정하는 단계를 더 포함할 수 있다.
저장 요청들의 특성들에 기반하여 복수의 저장 요청들 각각에 대해 복수의 순응적 존속 레벨들 중 하나를 선택하도록 구성되는 존속 레벨 모듈로서, 저장 요청에 대해 선택되는 순응적 존속 레벨은 저장 리소스, 저장 리소스의 구성 및 저장 요청을 서비스하는 저장 모드 중 하나 이상을 결정하는 존속 레벨 모듈, 하나 이상의 저장 리소스들과 인터페이싱하도록 구성되는 인터페이스 모듈, 및 인터페이스 모듈의 사용에 의해 저장 요청들에 할당되는 순응적 존속 레벨들에 따라 저장 요청들을 서비스하도록 구성되는 저장 요청 실행 모듈을 포함하는 장치의 실시예들이 본원에 개시된다. 존속 레벨 모듈은 저장 요청의 파일 식별자, 저장 요청과 연관되는 애플리케이션, 저장 요청의 파라미터 및 입력/출력(I/O) 제어 파라미터 중 하나 이상에 기반하여 저장 요청에 대한 순응적 존속 레벨을 선택하도록 구성될 수 있다. 저장 요청 실행 모듈은 라이트-네버(write-never) 캐시 모드로의 일시적 순응적 존속 레벨을 갖는 저장 요청의 데이터를 캐싱하도록 구성될 수 있다. 순응적 존속 레벨들 중 제1 레벨은 제1 RAID 구성에 데이터를 저장하는 것을 포함할 수 있고, 순응적 존속 레벨들 중 제2 레벨은 제2의 상이한 RAID 구성에 데이터를 저장하는 것을 포함한다.
순응적 캐시 존속을 위한 방법의 실시예들이 본원에 개시된다. 개시된 방법들은 하나 이상의 기계 실행 가능 작동들 및/또는 단계들을 포함할 수 있다. 개시된 작동들 및/또는 단계들은 컴퓨터 판독 가능 저장 매체 상에 저장되는 프로그램 코드로 구현될 수 있다. 따라서, 본원에 개시되는 방법들의 실시예들은 하나 이상의 방법 작동들 및/또는 단계들을 수행하도록 실행 가능한 컴퓨터 사용 가능 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체를 포함하는 컴퓨터 프로그램 제품으로 구현될 수 있다.
일부 실시예들에서, 개시된 방법은 보조 기억 장치로 지향되는 I/O 요청을 식별하는 단계; 복수의 캐시 모드들로부터 식별된 I/O 요청에 대한 일시적 캐시 모드를 선택하는 단계로서, 일시적 캐시 모드는 보조 기억 장치에 데이터를 저장하지 않고 캐시에 데이터를 저장하는 것을 포함하는 단계; 및/또는 일시적 캐시 모드로 식별된 I/O 요청의 데이터를 캐싱하는 단계를 포함한다. 방법은 캐시에 식별된 I/O 요청의 데이터를 저장하는 것에 응하여 그리고 보조 기억 장치로 데이터를 저장하지 않고 식별된 I/O 요청의 완료를 확인하는 단계를 더 포함할 수 있다.
일시적 캐시 모드는 식별된 I/O 요청의 데이터가 재시작 작동들 사이에서 보존될 필요가 없다고 판단하는 것에 응하여 선택될 수 있다. 방법은 식별된 I/O 요청의 소스 식별자, 식별된 I/O 요청의 파일 식별자, 및 식별된 I/O 요청과 연관되는 애플리케이션 중 하나 이상에 기반하여 복수의 캐시 모드들로부터 일시적 캐시 모드를 선택하는 단계를 더 포함할 수 있다.
일부 실시예들에서, 방법은 새로운 가상 기계 호스트로 이주시키는 것에 응하여 일시적 캐시 데이터를 플러싱(flushing)하는 단계를 포함하며, 일시적 캐시 데이터를 플러싱하는 단계는 보조 기억 장치 상에 일시적 캐시 모드로 캐싱되는 데이터를 저장하는 것을 포함한다. 방법은 가상 기계가 제1 가상 기계 호스트로부터 제2 가상 기계 호스트로 이주하는 것에 응하여 가상 기계 내에서 일시적 캐시 모드로 캐싱되는 데이터에 관한 캐시 메타데이터를 보유하는 단계, 및/또는 제2 가상 기계 호스트에서의 가상 기계 캐시에 제1 가상 기계 호스트에 보유된 일시적 캐시 모드로 캐싱되는 데이터를 상주시키는 단계를 더 포함할 수 있다.
일부 실시예들에서, 개시된 방법은 주 스토리지로 지향되는 입력/출력(I/O) 요청의 데이터가 불필요하다고 판단하는 단계, I/O 요청의 데이터를 캐시 스토리지 내에 배타적으로 캐싱하는 단계, 및/또는 I/O 요청의 데이터를 캐시 스토리지 내에 캐싱하는 단계에 응하여 I/O 요청의 완료를 확인하는 단계를 포함할 수 있다. I/O 요청의 데이터를 캐싱하는 단계는 주 스토리지를 포함하지 않는 하나 이상의 고속 경로 I/O 작동들을 수행하는 단계를 포함할 수 있다.
일부 실시예들에서, 방법은 저장 스택 내에서 I/O 요청들을 모니터링하는 단계를 더 포함할 수 있고, I/O 요청의 데이터를 캐싱하는 단계는 저장 스택의 외측에서 하나 이상의 고속 경로 I/O 작동들을 수행하는 것을 포함할 수 있다.
I/O 요청이 불필요한 데이터와 관련된다고 판단하는 단계는 I/O 요청의 소스 식별자에 존속 레벨 기준들을 적용하는 것을 포함할 수 있다. 존속 레벨 기준들은 파일 레벨 지식 및 애플리케이션 레벨 지식 중 하나에 기반할 수 있다.
I/O 요청은 가상 기계에 의해 생성될 수 있고, 방법은 가상 기계가 원격 가상 기계 호스트로 전송되는 것에 응하여 캐시 스토리지 내에 배타적으로 저장되는 가상 기계의 데이터를 원격 가상 기계 호스트로 푸시(push)하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 방법은 원격 가상 기계 호스트로부터의 요청에 응하여 캐시 스토리지 내에 배타적으로 저장되는 데이터를 원격 가상 기계 호스트로 전송하는 단계, 및/또는 가상 기계를 상이한 가상 기계 호스트로 이주시키는 것에 응하여 캐시 스토리지 내에 배타적으로 저장되는 데이터와 연관되는 캐시 태그를 보유하는 단계를 더 포함한다.
캐시 스토리지에 배타적으로 저장되는 데이터를 원격 가상 기계 호스트의 가상 기계 캐시로 전송하는 단계는 가상 기계의 캐시 관리 시스템의 가상 기계 식별자에 기반하여 캐시 스토리지에 배타적으로 저장되는 가상 기계의 데이터를 식별하는 단계를 포함할 수 있다.
보조 기억 장치로 지향되는 I/O 요청을 인터셉트하도록 구성되는 에이전트, 인터셉트된 I/O 요청의 하나 이상의 특성들에 기반하여 인터셉트된 I/O 요청에 대한 복수의 캐시 모드들 중 하나를 식별하도록 구성되는 존속 레벨 모듈, 및/또는 식별된 캐시 모드에 따라 캐시에서 인터셉트된 I/O 요청의 데이터를 캐싱하도록 구성되는 캐시 관리 시스템을 포함하며, 복수의 캐시 모드들은 일시적 캐시 모드를 포함하고, 일시적 캐시 모드로 데이터를 캐싱하는 것은 데이터를 보조 기억 장치에 기록하지 않고 데이터를 캐시에만 기록하는 것을 포함하는 장치의 실시예들이 본원에 개시된다. 존속 레벨 모듈은 인터셉트된 I/O 요청의 소스 식별자, 인터셉트된 I/O 요청의 파일 식별자, 및 인터셉트된 I/O 요청과 연관되는 애플리케이션 중 하나 이상에 기반하여 인터셉트된 I/O 요청에 대한 캐시 모드를 식별하도록 구성될 수 있다.
일부 실시예들에서, 캐시 관리 시스템은 상응하는 I/O 요청들의 데이터를 캐시에 기록하는 것에 응하여 일시적 캐시 모드로 캐싱되는 I/O 요청들의 완료를 확인하고, 상응하는 I/O 요청들의 데이터를 보조 기억 장치에 기록하는 것에 응하여 라이트-스루 캐시 모드가 할당된 I/O 요청들의 완료를 확인하도록 구성된다.
장치의 실시예들은 가상 기계가 원격 가상 기계 호스트로 전송될 것이라고 판단하는 것에 응하여 제1 가상 기계 호스트에서 일시적 캐시 모드에서의 캐시로 승인되는 가상 기계의 데이터를 보유하도록 구성되는 캐시 보유 모듈, 및/또는 일시적 캐시 모드에서의 캐시로 승인되는 가상 기계의 보유된 데이터를 원격 가상 기계 호스트로 전송하도록 구성되는 캐시 전송 모듈을 더 포함할 수 있다. 캐시 저장 모듈은 원격 가상 기계 호스트에서의 가상 기계 캐시에 제1 가상 기계 호스트로부터 전송되는 데이터를 상주시키도록 구성될 수 있다. 일부 실시예들에서, 캐시 관리 시스템은 가상 기계를 원격 가상 기계 호스트로 전송하는 것에 응하여 일시적 캐시 모드로 캐싱되는 가상 기계의 데이터를 하나 이상의 주 저장 리소스들로 플러싱하도록 구성될 수 있다.
본 발명은 첨부 도면들을 포함하고 참조하며, 이 첨부 도면들은 본원에 개시되는 실시예들의 보다 상세한 설명을 제공한다. 그러나, 본 발명은 도면들에 도시되는 특정 실시예들에 제한되지 않는다. 본 발명의 교시들은 다른 실시예들에 활용되고/되거나 적응될 수 있고/있거나, 본 발명의 범위를 벗어나지 않는 범위 내에서 개시된 실시예들이 변경될 수 있다.
도 1a는 순응적 존속을 위한 시스템의 일 실시예의 블록도이다.
도 1b는 순응적 존속을 위한 시스템의 다른 실시예의 블록도이다.
도 1c는 I/O 요청들을 서비스하는 방법의 일 실시예의 흐름도이다.
도 2a는 가상 컴퓨팅 환경의 일 실시예의 블록도이다.
도 2b는 가상 컴퓨팅 환경의 다른 실시예의 블록도이다.
도 3은 캐시의 일 실시예의 블록도이다.
도 4는 캐시 태그 데이터 구조체의 일 실시예를 도시한다.
도 5는 캐시 매핑들의 일 실시예를 도시한다.
도 6은 캐시 관리 시스템의 일 실시예를 도시한다.
도 7a는 캐시 관리 시스템의 다른 실시예의 블록도이다.
도 7b는 존속 레벨 정책의 일 실시예를 도시한다.
도 7c는 캐시 관리 시스템의 다른 실시예를 도시한다.
도 8a는 존속의 순응적 레벨들에 따라 데이터를 캐싱하는 것에 대한 일 실시예의 흐름도이다.
도 8b는 존속의 순응적 레벨들에 따라 데이터를 캐싱하는 것에 대한 다른 실시예의 흐름도이다.
도 9는 가상 컴퓨팅 환경의 다른 실시예의 블록도이다.
도 10은 캐시 데이터를 전송하는 방법의 일 실시예의 흐름도이다.
도 11은 캐시 데이터를 전송하는 방법의 다른 실시예의 흐름도이다.
도 12는 캐시 데이터를 전송하는 방법의 다른 실시예의 흐름도이다.
본원에 설명되는 실시예들은 가상화된 컴퓨팅 환경들, 베어 메탈(bare metal) 컴퓨팅 환경들 등을 포함하지만, 이에 제한되지 않는 다양한 컴퓨팅 환경들에서의 데이터 입력/출력(I/O) 요청들 및 작동들의 관리에 관한 것이다. 그러므로, 본원에 개시되는 특정 예들 및/또는 실시예들이 가상화된 컴퓨팅 환경들과 관한 것이더라도, 본 발명은 이 점에서 제한되지 않는다.
저장 모듈은 하나 이상의 저장 클라이언트들에 대한 I/O 작동들을 관리하도록 구성될 수 있으며, 이 하나 이상의 저장 클라이언트들은 작동 시스템들, 가상 작동 시스템들, 하이퍼바이저(hypervisor)들, 파일 시스템들, 볼륨 관리자들, 데이터베이스 애플리케이션들, 사용자 애플리케이션들 등을 포함할 수 있지만, 이에 제한되지 않는다. 저장 모듈은 저장 클라이언트들에 대한 I/O 요청들을 서비스하도록 구성될 수 있다. 저장 모듈은 선택된 "존속의 레벨"에 따라 I/O 요청들을 서비스하도록 구성될 수 있다. 본원에 사용되는 바에 따른, "존속의 레벨" 또는 "존속 레벨"은 I/O 요청의 하나 이상의 특성들 및/또는 속성들을 지칭한다. 작동의 존속의 레벨은, I/O 요청을 서비스하기 위해 사용할 저장 디바이스(들) 및/또는 저장 매체(예를 들어, 휘발성 메모리 또는 비휘발성 저장 매체), 선택된 저장 디바이스(들) 및/또는 매체의 구성(예를 들어, 저가 디스크의 리던던트 배열(RAID) 레벨, 단지 다수의 디스크(JBOD) 구성, 미러링(mirroring) 등), I/O 요청에 대한 저장 모드 및/또는 형식(예를 들어, 라이트-스루 캐시 모드, 일시적 캐시 모드, ECC 인코딩 등) 등과 관련될 수 있다. 그러므로, 존속의 상이한 레벨들은 휘발성 메모리, 비휘발성 저장 매체(예를 들어, 자기, 광, 테이프, 고체 상태 등) 등과 같은 상이한 타입들의 저장 디바이스(들) 및/또는 저장 매체 상에 데이터를 저장하는 것; 상이한 RAID 레벨들, 미러링 구성들, 패리티 구성들 등과 같은 상이한 저장 구성들에 데이터를 저장하는 것; 및/또는 상이한 ECC 인코딩들, 암호화 레벨들, 캐싱 모드들, 원자성, 검증 등과 같은 하나 이상의 상이한 모드들로 데이터를 저장하는 것을 포함할 수 있다.
저장 모듈은 I/O 요청들의 속성들에 따라 I/O 요청들에 대한 존속의 레벨을 선택하도록 구성될 수 있으며, 이 I/O 요청은 I/O 요청과 함께 포함되고/되거나 이것과 연관되는 존속의 특정 레벨에 대한 명확한 요청, I/O 요청의 특정 저장 특성들, I/O 요청의 특성들 및/또는 속성들에 대한 요청, 정책, 프로파일링, 테스트 및 경험 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, 장기간 동안 이용 가능해야 하는 데이터에 관한 I/O 요청에 응하여, 저장 모듈은 RAID 및/또는 미러링된 구성으로 비휘발성 저장 매체 상에 데이터를 저장하는 것을 포함하는 존속의 레벨을 선택할 수 있다. 선택된 존속의 레벨은 라이트-스루 캐시 구성으로 I/O 요청의 데이터를 캐싱하여, 데이터에 대한 업데이트가 주 스토리지로 라이트-스루되도록 하는 것을 더 포함할 수 있다. 다른 예에서, 제한된 시간 동안만 보유해야 하는 데이터에 관한 I/O 요청에 응하여, 저장 모듈은 "일시적" 또는 "라이트-네버" 캐시 모드로 I/O 요청의 데이터를 캐싱하는 것을 포함하는 존속의 레벨을 선택할 수 있다. 본원에 사용되는 바에 따른, 일시적 캐시 모드는 캐싱된 데이터가 라이트-스루되지 않고/않거나 주 스토리지로 라이트-백(write back)되지 않는 캐시 구성을 나타내며, 일시적 데이터가 캐시에서만 저장될 수 있다. 이와 같이, 일시적 캐시 구성으로 데이터를 캐싱하는 것은 주 스토리지에 액세스하지 않고 (그리고/또는 주 스토리지에 데이터를 기록하지 않고/않거나 카피하지 않고) 캐시에 데이터를 저장하는 것을 포함한다. 일시적 캐시 구성으로 캐싱되는 데이터는 데이터가 존속의 다른 레벨로 전이되지 않는다면, 데이터가 캐시로부터 퇴거되면 또는 퇴거될 때(예를 들어, 캐시 클라이언트 전력 사이클들, 재부팅들 등) 손실될 수 있으며, 이 존속의 다른 레벨은 라이트-스루 및/또는 라이트-백 캐시 모드와 같은 상이한 캐시 모드로 데이터를 캐싱하는 것을 포함할 수 있다.
도 1a는 순응적 존속을 위한 시스템의 일 실시예의 블록도이다. 모듈(130)은 컴퓨팅 환경(110) 내에 구현될 수 있으며, 이 컴퓨팅 환경(110)은 베이스 메탈 컴퓨팅 환경 또는 컴퓨팅 디바이스를 포함할 수 있으며, 이 컴퓨팅 디바이스는 하나 이상의 컴퓨팅 디바이스, 복수의 컴퓨팅 디바이스(예를 들어, 클러스터, 그리드(grid) 또는 다른 구성의 컴퓨팅 디바이스들 그룹), 개인용 컴퓨터, 서버 컴퓨터, 블레이드(blade), 랩탑, 노트북, 스마트폰 등을 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨팅 환경(110)은 하나 이상의 가상 기계, (예를 들어, 가상 데스크탑 인프라스트럭처(infrastructure)(VDI) 환경에서의) 가상 데스크탑, 가상 컴퓨터 등을 포함하는 가상화된 컴퓨팅 환경일 수 있다.
컴퓨팅 환경(110)은 프로세싱 리소스들(112), 휘발성 메모리 리소스들(113), 존속 저장 리소스들(114), 및/또는 통신 인터페이스(115)를 포함할 수 있다. 프로세싱 리소스들(112)은 하나 이상의 일반 및/또는 특수 목적 프로세싱 요소들 및/또는 코어들을 포함할 수 있다. 프로세싱 리소스들(112)은 존속 저장 리소스들(114)로부터 로딩되는 명령어들을 실행하도록 구성될 수 있다. 본원에 개시되는 모듈들 및/또는 방법들의 부분들은 존속 저장 리소스들(114) 상에 저장되는 기계 판독 가능 명령어들로서 구현될 수 있다. 리소스들(112, 113, 114 및/또는 115)은 물리적 컴퓨팅 구성 요소들 및/또는 가상화 환경(예를 들어, 하이퍼바이저)에 의해 그리고/또는 이것을 통해 제공되는 가상화된 컴퓨팅 리소스들을 포함할 수 있다.
저장 모듈(130)은 I/O 요청 수신기 모듈(132), 존속 레벨 모듈(134) 및 I/O 요청 실행 모듈(136)을 포함할 수 있다. 저장 모듈(130)의 부분들은 컴퓨팅 환경(110) 상에서 또는 이것과 함께 작동할 수 있다. 대안적으로, 또는 부가적으로, 저장 모듈(130)의 부분들은 컴퓨팅 환경(110)과 별도로 구현될 수 있다; 예를 들어, 저장 모듈(130)의 부분들은 주변 구성 요소 상호 접속 익스프레스(express)(PCI-e) 버스, 직렬 고급 기술 결합(serial ATA) 버스, 범용 직렬 버스(USB) 연결, 전기 전자 기술자 협회(IEEE) 1394 버스(파이어와이어(FireWire)), 외부 PCI 버스, 인피니밴드(Infiniband), 통신 네트워크(105) 등과 같은 시스템 버스를 사용하여 연결될 수 있다.
저장 모듈(130)은 하나 이상의 저장 리소스들(140A 내지 140N)에 통신 결합될 수 있다. 저장 리소스들(140A 내지 140N)은 각각의 인터페이스 메커니즘들(141)을 통하여 액세스 가능한 로컬 저장 리소스들을 포함할 수 있으며, 이 각각의 인터페이스 메커니즘들(141)은 버스 인터페이스들 및/또는 프로토콜들(예를 들어, 시스템 버스, 로컬 버스, I/O 버스 등)을 포함할 수 있지만, 이에 제한되지 않는다. 저장 리소스들(140A 내지 140N)은 하나 이상의 원격 네트워크 액세스 가능 저장 리소스들(140C)을 더 포함할 수 있으며, 이 하나 이상의 원격 네트워크 액세스 가능 저장 리소스들(140C)은 스토리지 영역 네트워크(SAN) 리소스, 네트워크 부착 스토리지(NAS) 등을 포함할 수 있지만, 이에 제한되지 않으며, 원격 I/O 인터페이스 및/또는 프로토콜(141)을 통하여 액세스 가능할 수 있다.
저장 리소스들(140A 내지 140N)은 상이한 타입들의 저장 디바이스(들) 및/또는 저장 매체를 다양한 구성으로 포함할 수 있다. 저장 리소스들(140A 내지 140N)은 휘발성 메모리(DRAM), 프로세서 캐시 등과 같은 휘발성 저장 리소스들; 자기 하드 드라이브들, 광 저장 매체, 고체 상태 저장 매체 등과 같은 비휘발성 저장 리소스들; 캐시 리소스들 등을 포함할 수 있지만, 이에 제한되지 않는다. 따라서, 저장 리소스들(140A 내지 140N)은 플래시 메모리, 나노 랜덤 액세스 메모리(nano RAM 또는 NRAM), 나노결정 유선 기반 메모리, 실리콘-산화물 기반 10나노미터 이하 프로세스 메모리, 그래핀 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS), 저항성 랜덤 액세스 메모리(RRAM), 프로그램 가능 금속화 셀(PMC), 전도성 브리징(bridging) RAM(CBRAM), 자기 저항성 RAM(MRAM), 동적 RAM(DRAM), 상 변화 RAM(PRAM), 자기 저장 매체(예를 들어, 하나 이상의 하드 디스크들), 광 저장 매체 등을 포함할 수 있지만, 이에 제한되지 않는다.
저장 리소스들(140A 내지 140N)은 하나 이상의 상이한 RAID 레벨들; 미러링 구성들; 캐싱 구성들 및/또는 모드들; ECC 인코딩들; 패리티 구성들 등과 같은 다양한 저장 구성들 및/또는 모드들로 구성될 수 있다. 예를 들어, 저장 리소스들(140A 내지 140N) 중 하나 이상은 RAID 및/또는 미러링 구성의 비휘발성 저장 요소들(예를 들어, 하드 디스크들)의 세트를 포함할 수 있는데 반해, 다른 저장 리소스들(140A 내지 140N)은 비중복일 수 있다. 저장 리소스들(140A 내지 140N)은 상이한 보유 정책들(예를 들어, 캐싱 모드들)에 따라 데이터를 저장하도록 구성될 수 있다. 예를 들어, 저장 리소스(140A)는 다른 주 저장 리소스(140B)에 대한 데이터를 캐싱하도록 구성될 수 있다. 저장 모듈(130)은 캐시 리소스들이 특정 캐싱 모드들 및/또는 구성들로 작동하도록 구성할 수 있다. 예를 들어, 저장 모듈(130)은 라이트-스루 구성으로 제1 I/O 요청의 데이터를 캐싱할 수 있고(예를 들어, 캐시 저장 리소스(140A) 및 주 저장 리소스(140B)에 데이터를 기록할 수 있고), 일시적 캐시 모드로 제2 I/O 요청의 데이터를 캐싱할 수 있으며, 이 일시적 캐시 모드에서 데이터가 캐시 저장 리소스(140A)에만 저장되고 퇴거(예를 들어, 재부팅) 시에 손실된다.
저장 모듈(130)은 하나 이상의 저장 클라이언트들로부터 I/O 요청들(116)을 서비스하도록 구성될 수 있다. I/O 요청(들)(116)은 저장 모듈(130)의 하나 이상의 인터페이스(들)(131)을 통하여 I/O 요청 수신기 모듈(132)에서 수신될 수 있으며, 이 저장 모듈(130)의 하나 이상의 인터페이스(들)(131)은 하나 이상의 드라이버들, 라이브러리들, 모듈들, 블록 디바이스 인터페이스들, 인터페이스 확장부들(예를 들어, 입력/출력 제어(IOCTL) 인터페이스들), 애플리케이션 프로그래밍 인터페이스들(API), 애플리케이션 2진 인터페이스들(ABI), 객체 클래스들, 원격 인터페이스들(예를 들어, 원격 절차 호출, 단순 객체 액세스 프로토콜 등) 등을 포함할 수 있지만, 이에 제한되지 않는다.
저장 모듈(130)은 I/O 요청(116)에 대한 존속 레벨을 선택하도록 구성되는 존속 레벨 모듈(134)을 더 포함할 수 있다. 앞서 개시된 바와 같이, 존속 레벨을 결정하는 것은 I/O 요청(116)을 서비스할 하나 이상의 저장 리소스(들)(140A 내지 140N)을 선택하는 것, 하나 이상의 선택된 저장 리소스(들)(140A 내지 140N)의 저장 구성(예를 들어, RAID 레벨, 미러링 등)을 선택하는 것, 및/또는 I/O 요청(116)에 대한 저장 모드(예를 들어, 캐싱 모드, ECC 인코딩 등)를 선택하는 것을 포함할 수 있지만, 이에 제한되지 않는다.
존속 레벨 모듈(134)은 존속 레벨 정책(135)에 기반하여 I/O 요청들(116)에 대한 존속 레벨을 결정할 수 있다. 존속 레벨 정책(135)은 I/O 요청들(116)의 특성들 및/또는 속성들에 기반하여 각각의 I/O 요청들(116)에 존속 레벨들을 할당하도록 구성되는 존속 레벨 기준들을 포함할 수 있으며, 이 I/O 요청들(116)의 특성들 및/또는 속성들은 파일 이름, 경로, 볼륨 및/또는 I/O 요청(116)에 상응하는 다른 파일 식별자와 같은 파일 속성들 및/또는 특성들(예를 들어, 파일 레벨 지식); I/O 요청(116)의 애플리케이션 및/또는 저장 클라이언트의 속성들 및/또는 특성들(예를 들어, 애플리케이션 레벨 지식); I/O 요청들(116)로부터 유도되는 추론들; I/O 요청(116)의 하나 이상의 파라미터들; I/O 요청(116)과 연관된 파라미터들(예를 들어, IOCTL 정보); I/O 요청들(116)에 관한 프로파일링 메타데이터; 선호도들 및/또는 구성; 테스트 및 경험; 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, 일부 실시예들에서, 인터페이스들(131A 및/또는 131B) 중 하나 이상은 I/O 요청들(116)에 대해 존속 레벨 특성들을 지정하는 메커니즘들을 포함할 수 있다. 예를 들어, I/O 요청(116)은 리던던트 저장 구성(예를 들어, 특정 RAID 레벨 및/또는 미러링 구성)의 스토리지를 요청할 수 있다. I/O 요청(116)은 I/O 요청(116)에 대해 캐싱 모드를 더 지정할 수 있다(예를 들어, 라이트-스루 캐시 모드를 지정할 수 있다). 임시 데이터에 관한 I/O 요청들(116)은 상이한 존속 레벨(또는 상이한 존속 레벨 특성들)을 지정할 수 있다. 예를 들어, 임시 데이터에 관한 I/O 요청(116)은 리던던시 및/또는 미러링이 필요하지 않음을 나타낼 수 있고 (본원에 더 상세히 개시되는) 일시적 캐시 구성으로 캐싱하는 것을 허용할 수 있다. 대안적으로, 또는 부가적으로, 존속 레벨 모듈(134)은 I/O 요청(116)에 관한 다른 불명확한 정보에 관한 존속 레벨 기준들에 기반하여 존속 레벨을 결정할 수 있다. 예를 들어, 존속 레벨 기준들은 (예를 들어, 본원에 설명되는 바와 같이 파일 선택 기준들의 사용에 의해) 재부팅 사이에서 보유될 필요가 없는 임시 파일들을 식별할 수 있다. 존속 레벨 모듈(134)은 그러한 임시 파일들에 관한 I/O 요청들(116)을 적절한 존속 레벨에 할당한다(예를 들어, 일시적 캐시에 I/O 요청들(116)의 데이터를 캐싱함).
저장 모듈(130)은 I/O 요청들(116)을 서비스하도록 구성되는 I/O 요청 실행 모듈(136)을 더 포함할 수 있다. I/O 요청 실행 모듈(136)은 존속 레벨 모듈(134)에 의해 결정되는 I/O 요청들(116)의 각각의 존속 레벨들에 따라 하나 이상의 저장 구성들 및/또는 모드들로 하나 이상의 저장 리소스들(140A 내지 140N) 상에 I/O 요청들(116)의 데이터를 저장하도록 구성될 수 있다. 따라서, I/O 요청 실행 모듈(136)은 하나 이상의 상이한 저장 구성들에 따라 그리고/또는 하나 이상의 상이한 저장 모드들(예를 들어, 라이트-스루 캐시, 라이트-백 캐시, 일시적 캐시 등)로 하나 이상의 상이한 저장 리소스들(140A 내지 140N) 상에 데이터를 저장하도록 구성될 수 있다.
도 1b는 순응적 존속을 위한 시스템의 다른 실시예를 도시한다. 도 1b 의 실시예는 컴퓨팅 환경(110) 내에서 작동하는 저장 모듈(130)을 도시한다. 앞서 개시된 바와 같이, 저장 모듈(130)은 I/O 요청 수신기 모듈(132)을 통하여 I/O 요청들(116)을 수신하도록 구성될 수 있다. I/O 요청들(116)은 저장 클라이언트들(106A 내지 106N)에 의해 발행될 수 있으며, 이 저장 클라이언트들(106A 내지 106N)은 작동 시스템들(106A), 파일 시스템들(106B), 데이터베이스들(106C), 사용자 애플리케이션들(106D) 등을 포함하지만, 이에 제한되지는 않는다. 저장 클라이언트들(106A 내지 106N)은 컴퓨팅 환경(110) 내에서 작동할 수 있고/있거나 다른, 원격 컴퓨팅 환경들(111)(예를 들어, 원격 저장 클라이언트(들)(106E))을 포함하고/하거나 이들 내에서 작동할 수 있다.
일부 실시예들에서, 저장 클라이언트들(106A 내지 106N) 중 하나 이상은 I/O 요청들(116)을 하나 이상의 인터페이스들(131A)을 통하여 저장 모듈(130)에 직접 발행하도록 구성된다. 대안적으로, 또는 부가적으로, 저장 모듈(130)은 컴퓨팅 환경(110)의 I/O 스택(117) 내에서 I/O 요청들(116)을 수신하고/하거나 모니터링하도록 구성될 수 있다. I/O 스택(117)은 작동 시스템(106A)(또는 가상 작동 시스템(106A))의 저장 스택 또는 다른 I/O 서브시스템을 포함할 수 있다. 따라서, 일부 실시예들에서, I/O 요청 수신기 모듈(132)은 I/O 스택(117)에서 I/O 요청들(116)을 모니터링하도록 구성되는 하나 이상의 에이전트(들)(133)을 포함할 수 있다. 에이전트(들)(133)은 I/O 드라이버들, I/O 필터 드라이버들, 파일 필터 드라이버들, 볼륨 필터 드라이버들, 디스크 필터 드라이버들, SCSI 드라이버들 및/또는 필터들, 가상 논리적 번호(VLUN) 드라이버들 등을 포함하지만, 이에 제한되지는 않는다.
저장 모듈(130)은 하나 이상의 각각의 저장 리소스들(140A 내지 140N)과 인터페이싱하고/하거나 그것에 대해 저장 작동들을 수행하도록 구성되는 하나 이상의 I/O 인터페이스들(118A 내지 118N)을 더 포함할 수 있다. I/O 인터페이스들(118A 내지 118N) 각각은 특정 인터페이스 메커니즘(141A 내지 141N)의 사용에 의해 하나 이상의 저장 리소스들(140A 내지 140N)과 인터페이싱하도록 구성될 수 있으며, 이 특정 인터페이스 메커니즘(141A 내지 141N)은 저장 리소스 인터페이스들(예를 들어, 블록 디바이스 인터페이스들, 저장층들, API들, 프로토콜들 등), 버스 프로토콜들, 통신 인터페이스 프로토콜들, 네트워크 프로토콜들 및/또는 인터페이스들, 가상화 프로토콜들 및/또는 인터페이스들 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, I/O 인터페이스(118B)는 가상 I/O 인터페이스(141B)를 통하여 가상화된 저장 리소스(140B)와 인터페이싱하도록 구성될 수 있고, I/O 인터페이스(118C)는 네트워크(105)(및/또는 통신 인터페이스(115))를 통하여 원격 저장 리소스(140C)에 액세스하도록 구성될 수 있다.
저장 리소스들(140A 내지 140N) 중 하나 이상은 고체 상태 저장 매체와 같은 비휘발성 저장 매체를 포함할 수 있다. 예를 들어, I/O 인터페이스(118A)는 고체 상태 저장 리소스(140A)에 통신 결합될 수 있다. 그러므로, 일부 실시예들에서, I/O 인터페이스(118A)는 "데이터 파이프라인을 사용하여 데이터를 관리하는 장치, 시스템 및 방법"이라는 명칭으로 2007년 12월 6일자로 출원되고 2008년 6월 12일에 미국 특허 출원 공개 제 2008/0141043호로서 공개된 미국 특허 출원 일련번호 제 11/952,091호(참조로 본원에 포함됨)에서 설명된 바와 같이 하나 이상의 고체 상태 저장 제어기들을 포함하고/하거나 이들에 통신 결합될 수 있다.
저장 모듈(130)은 논리적 식별자들과 저장 리소스들 사이에 매핑들 및/또는 연관들을 유지하도록 구성되는 변환 모듈(137)을 포함할 수 있다. 본원에 사용되는 바에 따른, 논리적 식별자는 논리적 블록 어드레스(LBA), 실린더/헤드/섹터(CHS) 어드레스, 파일 이름, 객체 식별자, 아이노드(inode), 보편적 고유 식별자(UUID), 전역 고유 식별자(GUID), 해시 코드, 시그니처, 색인 등록, 범위, 규모 등을 포함하지만, 이에 제한되지 않는 I/O 리소스를 참조하는 임의의 식별자(예를 들어, 비휘발성 저장 리소스들(140) 상에 저장되는 데이터)를 지칭한다. 매핑들은 "애니 투 애니(any-to-any)"일 수 있어 임의의 논리적 식별자가 임의의 물리적 저장 위치와 연관될 (그리고 그 반대일) 수 있다.
변환 모듈(137)은 I/O 요청들(116) 및/또는 저장 리소스들(140A 내지 140N)의 데이터에 관한 I/O 메타데이터(138)를 유지하도록 구성될 수 있다. I/O 메타데이터(138)는 전방향 색인(예를 들어, 논리적 식별자들과 저장 리소스들(140A 내지 140N) 사이의 매핑들 및/또는 연관들의 색인), 캐시 태그들, 유효성 메타데이터, 원자성 및/또는 트랜잭션형 메타데이터, 존속 레벨 메타데이터 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, 존속 레벨 메타데이터는 특정 논리적 식별자의 존속 레벨을 표시할 수 있으며, 이 특정 논리적 식별자의 존속 레벨은 논리적 식별자에 관한 I/O 요청들(116)을 서비스하는데 사용될 수 있다. I/O 요청(116)의 존속 레벨 메타데이터는 I/O 요청(116)에 관한 데이터, 저장 리소스들(140A 내지 140N)의 저장 구성, 데이터의 저장 모드에 관한 정보 등을 포함하는 저장 리소스(들)(140A 내지 140N)을 식별할 수 있다. I/O 메타데이터(138)는 하나 이상의 데이터 구조체들을 포함할 수 있으며, 이 하나 이상의 데이터 구조체들은 트리(tree), B-트리, 영역 인코딩된 B-트리, 라딕스(radix) 트리, 맵, 리스트, 내용 지정 맵(CAM), 테이블, 해시 테이블, 메모리 레이아웃(예를 들어, 인접 메모리 레이아웃 또는 다른 적절한 레이아웃), 데이터 구조체들의 조합 등을 포함할 수 있지만, 이에 제한되지 않는다. I/O 메타데이터(138)는 휘발성 메모리 리소스(113) 내에서 유지될 수 있다. I/O 메타데이터(138)의 부분들은 존속 저장 리소스(114) 및/또는 저장 리소스들(140A 내지 140N) 중 하나 이상과 같은 하나 이상의 비휘발성 및/또는 비일시적 저장 리소스들에 존속될 수 있다.
일부 실시예들에서, 저장 모듈(130)은 로그 형식으로 데이터를 저장하기 위해 변환 모듈(137)의 임의의 애니 투 애니 매핑들을 레버리징(leveraging)할 수 있어, 데이터가 저장 리소스들(140A 내지 140N) 중 하나 이상에서 "제 위치에 있지 않게" 업데이트되고/되거나 변경된다. 본원에 사용되는 바에 따른, 데이터를 "제 위치에 있지 않게" 기록하는 것은 데이터를 "제 위치에" 오버라이트하는 것(예를 들어, 데이터의 본래의 물리적 위치를 오버라이트하는 것)보다 오히려 데이터를 상이한 매체 저장 위치(들)로 변경하고/하거나 오버라이트하는 것을 지칭한다. 로그 형식으로 데이터를 저장하는 것은 쓸모 없는 그리고/또는 무효인 데이터가 비휘발성 저장 리소스들(140) 상에 남는 것을 야기할 수 있다. 예를 들어, 논리적 식별자 "A"의 데이터를 제 위치에 있지 않게 오버라이트하는 것은 데이터를 새로운 물리적 저장 위치(들)에 기록하는 것 그리고 (예를 들어, 전방향 색인에서) A를 새로운 물리적 저장 위치(들)과 연관시키도록 I/O 메타데이터(138)를 업데이트하는 것을 야기할 수 있다. A와 연관되는 본래의 물리적 저장 위치(들)은 오버라이트되지 않고, 무효인 구형의 데이터를 포함한다. 마찬가지로, 논리적 식별자 "X"의 데이터가 삭제되거나 트리밍(trimming)될 때, X에 할당되는 물리적 저장 위치(들)은 즉시 소거되지 않을 수 있고, 무효인 데이터로서 비휘발성 저장 리소스들(140) 상에 남을 수 있다.
저장 모듈(130)은 로그 형식(예를 들어, "이벤트 로그")로 저장 리소스들(140A 내지 140N) 중 하나 이상에 데이터를 저장하도록 구성되는 로그 저장 모듈(139)을 더 포함할 수 있다. 본원에 사용되는 바에 따른, 로그 형식은 저장 리소스들(140A 내지 140N) 상에서 수행되는 저장 작동들의 순서화된 시퀀스를 정의하고/하거나 보존하는 데이터 저장 형식을 지칭한다. 따라서, 로그 형식은 저장 리소스들(140A 내지 140N) 상에서 수행되는 저장 작동들의 "이벤트 로그"를 정의할 수 있다. 일부 실시예들에서, 로그 저장 모듈(139)은 어펜드 포인트(append point)로부터 순차적으로 데이터를 저장하도록 구성된다. 로그 저장 모듈(139)은 데이터(및/또는 비휘발성 저장 리소스들(140) 상의 물리적 저장 위치들)을 각각의 시퀀스 표시기들과 연관시키도록 추가로 구성될 수 있다. 시퀀스 표시기들은 저장 리소스들(140A 내지 140N) 상의 개별 데이터 세그먼트들, 패킷들 및/또는 물리적 저장 위치들에 적용될 수 있고/있거나 데이터 및/또는 물리적 저장 위치들(예를 들어, 소거 블록들)의 그룹들에 적용될 수 있다. 일부 실시예들에서, 시퀀스 표시기들은 저장 위치들이 그루밍(grooming) 작동시 재생될 때(예를 들어, 소거될 때) 그리고/또는 저장 위치들이 데이터를 저장하는데 우선 사용될 때, 물리적 저장 위치들에 적용될 수 있다.
일부 실시예들에서, 로그 저장 모듈(139)은 "어펜드 온리(append only)" 패러다임에 따라 데이터를 저장하도록 구성될 수 있다. 저장 모듈(130)은 저장 리소스들(140A 내지 140N) 중 하나 이상의 물리적 어드레스 공간 내에 현재 어펜드 포인트를 유지할 수 있다. 본원에 사용되는 바에 따른, "어펜드 포인트"는 특정 물리적 저장 위치에 대한 포인터 또는 참조(예를 들어, 섹터, 페이지, 저장 분할, 오프셋 등)를 지칭한다. 로그 저장 모듈(139)은 어펜드 포인트로부터 순차적으로 데이터를 첨부하도록 구성될 수 있다. 데이터가 어펜드 포인트에서 저장됨에 따라, 어펜드 포인트는 저장 리소스(140A 내지 140N)의 다음의 이용 가능한 물리적 저장 위치로 이동한다. 그러므로, 저장 리소스(140A 내지 140N) 상에 저장되는 데이터의 로그 순서는 데이터와 연관되는 시퀀스 표시기 및/또는 저장 리소스(140A 내지 140N) 상의 데이터의 순차적 순서에 기반하여 결정될 수 있다. 로그 저장 모듈(139)은 다음의 이용 가능한 물리적 저장 위치를 식별하기 위해 (예를 들어, 후술되는 바와 같이 역방향 색인으로) 저장 리소스(140A 내지 140N)의 물리적 어드레스 공간을 트래버싱(traversing)함으로써 "다음의" 이용 가능한 저장 위치를 식별하도록 구성될 수 있다.
저장 모듈(130)은 비휘발성 저장 리소스(비휘발성 저장 매체)를 "그루밍"하도록 구성되는 그루머를 포함할 수 있으며, 이는 상술한 바와 같이 무효인, 쓸모 없는 또는 "트리밍된" 데이터를 포함하는 물리적 저장 위치(들)을 재생하는 것을 포함할 수 있다. 본원에 사용되는 바에 따른, 비휘발성 저장 리소스(예를 들어, 고체 상태 저장 매체)를 "그루밍하는 것"은 웨어 레벨링(wear leveling)하는 것, 무효인 및/또는 쓸모 없는 데이터를 제거하는 것, 삭제된(예를 들어, 트리밍된) 데이터를 제거하는 것, 유효한 데이터를 재생하고/하거나 재배치하는 것, 물리적 저장 리소스들(예를 들어, 소거 블록들)을 재생하는 것, 재생을 위해 물리적 저장 리소스들을 식별하는 것 등을 포함할 수 있지만, 이에 제한되지 않는 작동들을 지칭한다. 그루머는 다른 I/O 요청들(116)을 서비스하는 것으로부터 독자적으로, 그리고 이면에서 작동할 수 있다. 따라서, 그루밍 작동들은 다른 I/O 요청들(116)이 프로세싱되는 동안 지연될 수 있다. 대안적으로, 그루밍하는 것은 다른 I/O 요청들(116)과 전면에서 작동할 수 있다. 물리적 저장 위치를 재생하는 것은 물리적 저장 위치가 유효한 데이터를 저장하는데 재사용될 수 있도록 물리적 저장 위치로부터 무효인 데이터를 소거하는 것을 포함할 수 있다. 예를 들어, 저장 분할(예를 들어, 소거 블록 또는 논리적 소거 블록)을 재생하는 것은 저장 분할로부터 유효한 데이터를 재배치하는 것, 저장 분할을 소거하는 것, 그리고 저장 작동들을 위해 저장 분할을 초기화하는 것(예를 들어, 시퀀스 표시기로 저장 분할을 표시하는 것)을 포함할 수 있다. 그루머는 비휘발성 저장 매체를 웨어 레벨링할 수 있어, 데이터가 상이한 물리적 저장 위치들 전체에 체계적으로 확산되며, 이로 인해 성능 및 데이터 신뢰성을 개선하고, 특정 물리적 저장 위치들의 과잉 사용 및/또는 사용 부족을 회피할 수 있다. 비휘발성 저장 매체를 그루밍하는 시스템들 및 방법들의 실시예들은 "판독 카운트 한계에 도달한 후의 저장 공간 복구를 위한 장치, 시스템 및 방법"이라는 명칭으로 2011년 12월 6일자로 등록된 미국 특허 제 8,074,011호에 개시되며, 참조로 본원에 포함된다.
일부 실시예들에서, 저장 모듈(130)은 고체 상태 저장 매체와 같은 비대칭적인 "한번 기록" 비휘발성 저장 리소스들(140)을 관리하도록 구성될 수 있다. 본원에 사용되는 바에 따른, "한번 기록"은 새로운 데이터가 기록되거나 프로그래밍될 때마다 재초기화되는(예를 들어, 소거되는) 저장 매체를 지칭한다. 본원에 사용되는 바에 따른, "비대칭적"은 상이한 타입의 저장 작동들에 대해 상이한 레이턴시들 및/또는 실행 시간들을 갖는 저장 매체를 지칭한다. 예를 들어, 비대칭적 고체 상태 비휘발성 저장 리소스들(140) 상의 판독 작동들은 기록/프로그램 작동들보다 훨씬 더 빠를 수 있고, 기록/프로그램 작동들은 소거 작동들보다 훨씬 더 빠를 수 있다. 고체 상태 비휘발성 저장 리소스들(140)은 무엇보다도, 이러한 비대칭적 속성들을 처리하기 위해 그룹(예를 들어, 소거 블록들)으로서 소거될 수 있는 저장 분할들로 분할될 수 있다. 이와 같이, 단일 데이터 세그먼트를 "제 위치에" 변경하는 것은 전체 소거 블록을 소거하는 것 그리고 (필요하다면) 본래의 변경되지 않은 데이터와 함께 소거 블록 상에 변경된 데이터를 재기록하는 것이 필요할 수 있다. 이것은 비효율적 "기록 확장"을 야기할 수 있으며, 이는 과도한 웨어를 야기할 수 있다. 상술한 바와 같이 제 위치에 있지 않게 데이터를 기록하는 것은 저장 모듈(130)이 쓸모 없는 데이터의 소거를 지연시킬 수 있으므로(예를 들어, 쓸모 없는 데이터를 포함하는 물리적 저장 위치(들)이 이면 그루밍 작동들에서 재생될 수 있으므로), 이러한 문제들을 피할 수 있다.
논리적 식별자들과 저장 리소스들 및/또는 로그 스토리지 사이의 매핑들 및/또는 연관들을 포함하는 I/O 메타데이터(138)를 관리하는 시스템들, 방법들 및 인터페이스들의 추가의 실시예들이 "가상 저장층에 대한 장치, 시스템, 및 방법"이라는 명칭으로 2011년 1월 6일자로 출원되고, 2012년 1월 12일에 미국 특허 출원 공개 제 20120011340호로서 공개된 미국 특허 출원 일련번호 제 12/986,117호, 및 "정황상의 저장을 위한 논리적 인터페이스"라는 명칭으로 2012년 3월 19일자로 출원된 미국 특허 출원 일련번호 제 13/424,333호에 개시되며, 각각이 참조로 본원에 포함된다.
도 1c는 존속의 상이한 레벨들에 따라 I/O 요청들을 서비스하는 방법(101)의 일 실시예의 흐름도이다. 방법(101), 및 본원에 개시되는 다른 방법들 및/또는 프로세스들은 존속 저장 리소스(114)와 같은 비일시적 스토리지 상에 저장되는 하나 이상의 기계 판독 가능 명령어들로서 적어도 부분적으로 구현될 수 있다. 명령어들은 컴퓨팅 환경(110) 내의 하나 이상의 모듈들이 방법 및/또는 프로세스의 하나 이상의 단계들을 수행하게 하도록 구성될 수 있다. 명령어들 중 하나 이상은 하나 이상의 프로세싱 리소스들(112)에 의해 실행되도록 구성될 수 있다. 게다가, 본원에 개시되는 방법들 및/또는 프로세스들의 특정 단계들은 통신 인터페이스들(115), 저장 리소스들(140A 내지 140N), 프로세싱 리소스들(112) 등과 같은 특정 기계 구성 요소들에 결부될 수 있다.
단계(102)는 I/O 요청(116)을 식별하고/하거나 이것에 액세스하는 것을 포함할 수 있다. 단계(102)는 저장 클라이언트(106A 내지 106N)로부터 (예를 들어, 인터페이스(131A)를 통하여) I/O 요청(116)을 수신하는 것, (예를 들어, I/O 스택(117) 내에서) I/O 요청(116)을 모니터링하고/하거나 인터셉트하는 것 등을 포함할 수 있다.
단계(103)는 I/O 요청(116)에 대한 존속 레벨을 결정하는 것을 포함할 수 있다. 단계(103)는 존속 레벨 모듈(134)이 존속 레벨 정책(135)에 기반하여 I/O 요청(116)에 대한 존속 레벨을 결정하는 것을 포함할 수 있으며, 이 존속 레벨 정책(135)은 존속 레벨 기준들, I/O 요청(116)의 속성들, I/O 요청(116)으로부터 유도되는 추론들, 프로파일링 메타데이터 등을 포함할 수 있지만, 이에 제한되지 않는다.
단계(104)는 단계(103)에서 선택되고/되거나 I/O 요청(116)에 할당되는 존속 레벨에 따라 I/O 요청(116)을 서비스하는 것을 포함할 수 있다. I/O 요청(116)을 서비스하는 것은 I/O 요청 실행 모듈(136)이 (I/O 인터페이스(들)(118A 내지 118N)의 사용에 의해) 저장 리소스들(140A 내지 140N) 상에서 하나 이상의 저장 작동들을 수행하는 것을 포함할 수 있다. I/O 요청(116)의 존속 레벨은 I/O 요청(116)을 서비스하는데 사용될 저장 리소스(들)(140A 내지 140N), 하나 이상의 저장 리소스들(140A 내지 140N)의 구성(예를 들어, RAID 레벨, 미러링 등) 및/또는 저장 작동(들)의 모드(예를 들어, 라이트-스루 캐시, 일시적 캐시, ECC 인코딩 등)를 결정할 수 있다.
본원에 개시되는 저장 모듈(130)은 캐싱 서비스들을 제공하도록 레버리징되고/되거나 적응될 수 있다. 따라서, 일부 실시예들에서, 저장 모듈(130)은 캐시 관리 시스템(CMS)을 포함할 수 있다. CMS는 본원에 개시되는 저장 모듈(130)의 모듈들 중 하나 이상을 포함할 수 있다. 그러나, 명확성을 위해, 이러한 모듈들은 CMS과 함께 설명될 때, 캐시 특정 용어들을 사용하여 참조될 수 있다.
도 2a는 가상화된 컴퓨팅 환경에서의 CMS(220)의 일 실시예의 블록도이다. CMS(220)는 가상 기계(208A 내지 208N) 내에서 작동하도록 구성될 수 있으며, 이 가상 기계(208A 내지 208N)는 가상화 커널(kernel)(210) 내에서 그리고/또는 가상화 커널(210)과 함께 작동할 수 있다. 가상화 커널(210)은 호스트(202) 상에서 작동하는 가상 기계들(208A 내지 208N)뿐만 아니라 호스트(202)에 의해 제공되는 다른 구성 요소들 및 서비스들의 작동을 관리하도록 구성될 수 있다. 예를 들어, 가상화 커널(210)은 주 저장 리소스(240B) 및/또는 다른 저장 리소스들(240C 내지 240N)과 연관되는 다양한 I/O 작동들을 처리하도록 구성될 수 있다. 주 저장 리소스(240B)는 다수의 호스트들에 걸쳐 다수의 가상 기계들(208A 내지 208N) 중에서 공유될 수 있다. 주 저장 리소스(240B)는 하나 이상의 저장 어레이들(예를 들어, RAID, JBOD 등)과 같은 다수의 디스크 드라이브들 또는 다른 저장 디바이스들을 포함할 수 있다.
CMS(220)는 하나 이상의 저장 클라이언트들(106)의 I/O 요청들(116)을 서비스할 수 있다. 저장 클라이언트들(106)은 가상 기계(208A)에 국부적일 수 있고/있거나, 호스트(202) 상에 배치되는 다른 가상 기계들(208B 내지 208N) 내에서 호스팅될 수 있고/있거나, 다른 컴퓨팅 디바이스들 상에서(예를 들어, 다른 호스트들 및/또는 도 1b의 원격 저장 클라이언트(106E)와 같은 원격 컴퓨팅 환경들 상에서) 작동할 수 있다. CMS(220)는 I/O 요청들(116)을 수신하고/하거나, 모니터링하고/하거나, 인터셉트하도록 구성되는 I/O 요청 수신기 모듈(132)을 포함할 수 있다. CMS(220)는 존속의 특정 레벨에 따라 I/O 요청들(116)을 서비스하도록 구성될 수 있다. 따라서, CMS(220)는 본원에 설명되는 바와 같이 I/O 요청들(116)에 대한 존속 레벨을 결정하도록 구성되는 존속 레벨 모듈(134)을 포함할 수 있으며, 이 I/O 요청들(116)에 대한 존속 레벨은 I/O 요청들(116)에 대한 캐싱 모드(예를 들어, 라이트-스루의, 일시적인, 또는 다른 캐싱 구성 또는 모드)를 선택하는 것을 포함할 수 있다.
I/O 인터페이스(들)(218)은 하나 이상의 가상화된 저장 리소스들에 액세스하도록 구성될 수 있으며, 이 하나 이상의 가상화된 저장 리소스들은 호스트(202) 상의 다른 가상 기계들(208A 내지 208N) 사이에서 공유될 수 있거나 공유되지 않을 수 있다. 본원에 사용되는 바에 따른, "가상화된 저장 리소스"는 하이퍼바이저, 저장층, 가상화 층 등과 같은 가상화 커널(210)을 통해 액세스 가능한 저장 리소스를 지칭한다. 가상화된 저장 리소스들은 VLUN 저장 리소스들, 가상 디스크들(예를 들어, 가상 기계 디스크 형식(VMDK) 디스크들), 저장 모듈(들)(130), 가상화된 캐시 리소스들 등을 포함할 수 있지만, 이에 제한되지 않는다.
CMS(220)는 가상 기계 캐시(213)를 포함하는 하나 이상의 가상화된 저장 리소스들(240A 내지 240N)의 사용에 의해 I/O 요청들(116)을 서비스하도록 구성될 수 있다. 가상 기계 캐시(213)는 캐시 제공자 모듈(214) 및 캐시 스토리지(캐시(216))를 포함할 수 있다. 캐시(216)는 비휘발성 저장 디바이스들 및/또는 매체와 같은 하나 이상의 메모리 디바이스들, 고체 상태 스토리지, 랜덤 액세스 메모리(RAM) 등을 포함할 수 있지만, 이에 제한되지 않는다. 본원에 사용되는 바에 따른, "고체 상태 메모리 디바이스"는 반복적으로 소거되고 재프로그래밍될 수 있는 비휘발성의, 존속 메모리를 지칭한다. 따라서, 고체 상태 메모리 디바이스는 고체 상태 저장 디바이스 및/또는 고체 상태 저장 드라이브(SSD)(예를 들어, 플래시 저장 디바이스)를 포함할 수 있다. 캐시 제공자 모듈(214)은 캐시(216)의 리소스들을 가상 기계들(208A 내지 208N)의 CMS(220)에 제공하도록 구성될 수 있으며, 이는 캐시 스토리지 및/또는 I/O 작동들(IOPS)을 동적으로 제공하고/하거나 공유하는 것을 포함할 수 있다. 캐시 제공자 모듈(214)은 추가로, 하나보다 더 많은 가상 기계(208A 내지 208N)가 동일 캐시 데이터에 액세스하는 것을 방지하기 위해(예를 들어, 기록 이전 판독 위험 요소들을 방지하기 위해) 캐시(216) 내에 저장되는 데이터를 보호하고/하거나 보안하도록 구성될 수 있다. 예를 들어, 일부 실시예들에서, 캐시 제공자 모듈(214)은 캐싱된 데이터를 가상 기계 식별자와 연관시키도록 구성될 수 있으며, 이 가상 기계 식별자는 캐시에서 데이터에의 액세스를 제어하는데 사용될 수 있다.
도 3은 가상 기계 캐시(213)의 캐시 스토리지(216)의 일 실시예를 도시한다. 캐시 스토리지(216)는 가상 기계 캐시(213)의 캐시 저장 리소스들(216)을 나타낼 수 있다. 캐시 스토리지(216)는 복수의 캐시 페이지들(304)을 포함하는 고체 상태 저장 매체를 포함할 수 있다. 캐시(216)는 다수의 청크들(302)로 분할될 수 있다. 본원에 사용되는 바에 따른 "청크"는 캐시 저장 용량의 임의로 크기 조정된 부분을 지칭한다. 캐시(216)는 임의의 크기를 갖는 임의의 수의 청크들(302)로 분할될 수 있다. 특정 실시예에서, 각각의 청크(302)는 256MB(메가바이트)의 저장 용량을 포함할 수 있다. 이러한 실시예에서, 청크(302)의 수는 캐시(216)의 이용 가능한 저장 용량에 의해 결정될 수 있다. 예를 들어, 256MB 청크들(302)로 분할되는 1TB(테라바이트) 캐시(216)는 4,192개의 청크를 포함한다. 도 3에 도시된 바와 같이, 각각의 청크(302)는 다수의 캐시 페이지들(304)로 분할된다.
캐시(216)는 호스트 상의 복수의 가상 기계들 사이에서 공유될 수 있다. 캐시 청크(302)는 무엇보다도, 가상 기계들 중 특정 하나의 캐시 요구들 및/또는 다른 가상 기계들의 캐시 요구들에 기반하여 가상 기계들 중 특정 하나에 할당되거나 배분될 수 있다. 특정 가상 기계에 할당되는 청크(302)의 수는 가상 기계의 캐시 요구들이 달라지므로, 시간이 지남에 따라 달라질 수 있다. 특정 가상 기계에 할당되는 청크(302)의 수는 그 가상 기계의 캐시 용량을 결정할 수 있다. 예를 들어, 2개의 256MB청크가 특정 가상 기계에 할당되면, 그 가상 기계의 캐시 용량은 512MB이 된다. 특정 가상 기계들에의 청크들(302)의 할당은 상술된 캐시 제공자 모듈(214)과 같은 캐시 제공자에 의해 처리된다.
CMS(220)는 가상 기계(208A 내지 208N)의 식별자들(I/O 어드레스들)을 캐시(216)에서의 리소스들(예를 들어, 특정 캐시 페이지들(304))에 매핑하고/하거나 연관시키기 위해 하나 이상의 캐시 태그들(221)을 포함할 수 있다. 그러므로, 캐시 태그들(221)은 캐시 태그들(221)에서의 식별자들(예를 들어, 주 저장 리소스(240B) 상의 블록들의 어드레스)과 캐시 어드레스 사이에 변환들을 수행하는데 사용될 수 있다. 일부 실시예들에서, 캐시 태그들(221)은 RAM 또는 다른 메모리에서 선형으로 체계화될 수 있다. 이는 각각의 캐시 태그(221)가 물리적 캐시 페이지(304)와 선형 1:1 대응을 갖는다는 알고리즘적 가정 때문에 캐시 태그(221)의 어드레스가 물리적 캐시 페이지(304)를 위치시키는데 사용되는 것을 가능하게 한다. 대안적으로, 또는 부가적으로, 캐시 태그들(221)은 해시 테이블, 트리 등과 같은 다른 데이터 구조체로 체계화될 수 있다.
다시 도 2a를 참조하면, 특정 가상 기계(208A 내지 208N)와 연관되는 캐시 태그들(221)은 그 가상 기계(208A 내지 208N) 내에 저장될 수 있다. 캐시 태그들(221)은 스토리지 I/O 어드레스들을 캐시에서의 특정 캐시 페이지들(304)에 연관시키는 메타데이터를 포함한다. 특정 실시예에서, 각각의 캐시 태그(221)는 캐시에서의 특정 페이지(304)와 연관된다. 가상 기계 캐시(213)는 주 저장 리소스(240B)(및/또는 다른 저장 리소스들(240C 내지 240N))과 같은 하나 이상의 저장 리소스들(240B 내지 240N)에 대한 데이터를 캐싱할 수 있다. 따라서, 저장 리소스들(240B 내지 240N) 중 하나 이상은 가상 기계 캐시(213)에 캐싱되는 데이터의 주 스토리지 및/또는 보조 기억 장치일 수 있다. 일부 실시예들에서, 캐시 태그들(221)의 I/O 어드레스는 저장 리소스들(240B 내지 240N) 중 하나 이상에의 스토리지 어드레스들 및/또는 참조들일 수 있다.
도 4는 캐시 태그(221) 데이터 구조체(421)의 일 실시예를 도시한다. 캐시 태그(221)에서 수개의 필드들의 크기는 동적일 수 있고, 이와 같이, 캐시 태그 데이터 구조체(421)의 크기는 동적일 수 있다. 각각의 캐시 태그(221)는 식별자(예를 들어, 스토리지 I/O 어드레스)와 캐시 리소스(예를 들어, 캐시 페이지(304)) 사이에 변환을 제공한다. 캐시 태그 데이터 구조체(421)는 크기가 고정되고 해시 테이블 데이터 구조체에서 캐시 태그들(221)을 링크하는데 사용되는 다음 캐시 태그 색인을 포함한다. 작동 시에, 다음 캐시 태그 색인은 현재 캐시 태그에 링크되는 다음 캐시 태그를 탐색하기 위해 메모리 어드레스로 변환된다. 상태 필드는 크기가 고정되고 캐시 태그(221)의 현재 상태를 식별한다. 액세스 메타데이터 필드는 캐시 태그(221)의 액세스 및/또는 사용 특성들을 나타내는 동적 필드를 포함할 수 있다. 액세스 메타데이터 필드는 캐시 태그(221)와 연관되는 클럭 핸드의 수(예를 들어, 시간 간격의 수)를 나타내는 클럭 핸드 메타데이터를 포함할 수 있다. 검사 합 필드는 사용자가 원하는 캐시 페이지(304)의 크기 및 무결성의 레벨에 기반하여 크기가 달라지는 동적 필드를 포함할 수 있다. 예를 들어, 사용자는 더 많은 비트의 메모리를 검사 합에 할당함으로써 검사 합에 대해 더 높은 레벨의 무결성을 획득할 수 있다.
캐시 태그 데이터 구조체(421)는 유효한 유닛 맵 필드를 더 포함할 수 있으며, 이 유효한 유닛 맵 필드는 페이지에서의 어떤 유닛들이 캐싱되는지를 식별하는 동적 필드이다. 캐시 페이지(304) 내의 유닛의 일 예는 섹터이다. 예를 들어, 특정 캐시 페이지(304)는 소실되거나 더 이상 유효하지 않은 하나 이상의 섹터들을 가질 수 있다. 유효한 유닛 맵은 유효하지 않은 유닛들에서의 데이터에 액세스하는 것을 방지하기 위해 특정 캐시 페이지(304)와 연관되는 모든 유닛들의 상태를 식별한다.
캐시 태그 데이터 구조체(421)는 존속 메타데이터 필드를 더 포함할 수 있다. 존속 메타데이터 필드는 캐시 태그(221)의 존속 레벨에 관한 메타데이터를 포함할 수 있으며, 이 캐시 태그(221)의 존속 레벨은 캐시 태그(221)에 대한 캐시 모드(예를 들어, 라이트-스루, 라이트-백, 일시적인, 또는 다른 캐시 구성 또는 모드), 캐시 태그(221)와 연관되는 주 저장 리소스(들)(240B 내지 240N) 등을 포함할 수 있지만, 이에 제한되지 않는다. 존속 메타데이터는 캐시 태그(221)가 캐시로 승인될 시에 존속 레벨 모듈(134)에 의해(존속 레벨 정책(135)의 사용에 의해) 결정될 수 있다. CMS(220)(및/또는 존속 레벨 모듈(134))은 캐시 태그(221)의 존속 레벨로의 변경에 응하여 존속 메타데이터를 변경할 수 있다. 예를 들어, 일부 실시예들에서, 일시적 캐시 데이터와 연관되는 캐시 태그는 주 저장 리소스(240B 내지 240N)로 플러싱될 수 있으며, 이는 캐시 태그(221)의 캐시 모드를 일시적 캐시 모드에서 다른 캐시 모드로 변경하는 것을 포함할 수 있다. 캐시 태그(221)는 (존속 메타데이터에 상응하는 업데이트로) 일시적 캐시 모드로 복귀할 수 있다. 캐시 태그 데이터 구조체들, 클럭 핸드 메타데이터 및/또는 캐시 태그 상태 전이들의 추가의 실시예들이 "I/O 작동들을 관리하는 시스템들 및 방법들"이라는 명칭으로 2011년 2월 15일자로 출원되고, 2012년 8월 16일에 미국 특허 출원 공개 제 2012/0210043호로서 공개된 미국 특허 출원 일련번호 제 13/028,149호에 개시되며, 참조로 본원에 포함된다.
상술한 바와 같이, CMS(220)는 하나 이상의 저장 클라이언트들(106)로부터 I/O 요청들(116)을 수신하도록 구성될 수 있으며, 이는 하나 이상의 인터페이스들(131A)을 통하여 I/O 요청들(116)을 수신하는 것, (예를 들어, I/O 필터, 드라이버 등과 같은 에이전트(133)의 사용에 의해) 저장 스택(117) 내에서 I/O 요청들(116)을 모니터링하는 것 및/또는 인터셉트하는 것을 포함할 수 있다. I/O 요청들(116)은 CMS(220)로 라우팅될 수 있으며, 이는 가상 기계 캐시(213)를 사용하여 I/O 요청들을 서비스할 수 있다.
데이터를 판독하라는 요청(예를 들어, 판독 I/O 요청(116))에 응하여, CMS(220)는 가상 기계 캐시(213)에서 I/O 요청(116)에 관한 데이터가 이용 가능한지 여부를 판단할 수 있으며, 이는 CMS(220)가 I/O 요청(116)에 상응하는 캐시 태그(221)를 포함하는지 여부(예를 들어, CMS(220)가 판독 요청의 식별자에 상응하는 식별자를 갖는 캐시 태그(221)를 포함하는지 여부)를 판단하는 것을 포함할 수 있다. I/O 요청(116)에 대한 캐시 태그(221)가 발견되면, CMS(220)는 캐시 태그(221)와 연관되는 캐시 어드레스를 사용하여 가상 기계 캐시(213)로부터 데이터를 요청할 수 있다. 캐시 태그(221)가 발견되지 않으면, CMS(220)는 (캐시 태그들(221)의 이용 가능성과 같은 다양한 캐시 승인 정책들 및/또는 다른 요인들에 기반하여) 데이터를 가상 기계 캐시(213)로 승인할지를 여부를 판단할 수 있다. CMS(220)는 요청에 상응하는 캐시 태그(221)를 할당하고, 주 저장 리소스(240B)에서의 데이터에 액세스하고, 캐시(216)에 데이터를 저장할 것을 가상 기계 캐시(213)에 명령함으로써 가상 기계 캐시(213)로 데이터를 승인할 수 있다. 데이터를 승인하는 것은 존속 레벨 모듈(134) 및/또는 존속 레벨 정책(135)을 사용하여 I/O 요청(116)의 존속 레벨을 결정하는 것을 더 포함할 수 있다. 존속 레벨은 I/O 요청(116)의 데이터에 대한 캐시 모드를 지정할 수 있다. 예를 들어, I/O 요청(116)의 존속 레벨은 데이터가 일시적 캐시 모드로 저장되게 될 것을 지정할 수 있어, 데이터가 가상 기계 캐시(213)에 기록되고 주 저장 리소스(240B)에 라이트-스루되지 않는다.
데이터를 기록하라는 요청(예를 들어, 기록 I/O 요청(116))에 응하여, CMS(220)는 상술한 바와 같이(예를 들어, I/O 요청(116)에 상응하는 캐시 태그(221)가 있는지 여부를 판단함으로써) 요청에 관한 데이터가 가상 기계 캐시(213)로 승인되었는지 여부를 판단할 수 있다. 어떤 캐시 태그(221)도 I/O 요청(116)에 대해 존재하지 않으면, CMS(220)는 상술한 바와 같이 데이터를 가상 기계 캐시(213)로 승인할지 여부를 판단하고, I/O 요청(116)의 존속 레벨을 결정하는 등일 수 있다. 캐시 태그(221)가 존재하면, CMS(220)는 존속 레벨 모듈(134)에 의해 표시되는 존속의 특정 레벨에 따라 I/O 요청(116)을 서비스하도록 구성될 수 있으며, 이 존속의 특정 레벨은 무엇보다도, 데이터에 대한 캐시 모드(예를 들어, 라이트-스루 캐싱, 일시적 캐싱 등)를 결정할 수 있다. 일시적 존속 레벨에 따라 기록 I/O 요청(116)을 서비스하는 것은 데이터를 주 저장 리소스(240B)에 저장하지 않고 가상 기계 캐시(213)에 I/O 요청(116)의 데이터를 저장하는 것을 포함할 수 있다. 라이트-스루 존속 레벨에 따라 기록 I/O 요청을 서비스하는 것은 가상 기계 캐시(213) 및 하나 이상의 주 저장 리소스들(240B) 둘 다에 I/O 요청의 데이터를 저장하는 것을 포함할 수 있다. I/O 요청(116)은 요청의 데이터가 하나 이상의 주 저장 리소스들(240B)에 저장될 때까지, 완료되지 않을 수 있다.
일부 실시예들에서, 가상 기계들(208A 내지 208N)은 호스트(202)로부터 다른 호스트 컴퓨팅 디바이스들로 전송되고/되거나 재위치되도록 구성될 수 있다. 가상화 커널(210)(또는 다른 가상화 층)은 로컬 디스크 스토리지 등과 같은 호스트(202)의 로컬 리소스들을 참조하는 가상 기계들이 전송되는 것을 방지하도록 구성될 수 있다. 따라서, 가상 기계들(208A 내지 208N)은 가상 기계 이주를 방지하지 않는 액세스 메커니즘을 사용하여 가상 기계 캐시(213)에 액세스하도록 구성될 수 있다. 일부 실시예들에서, CMS(220)는 에뮬레이트(emulate)된 공유 스토리지 및/또는 "가상 디스크" 또는 VLUN을 통해 가상 기계 캐시(213)에 액세스하도록 구성되며, 이 에뮬레이트된 공유 스토리지 및/또는 "가상 디스크" 또는 VLUN은 가상화 커널(210)이 공유 디바이스(및/또는 가상 기계 이주를 방지하지 않는 디바이스)로 취급한다. 가상 디스크는 호스트(202) 및/또는 가상화 커널(210)에 의해 지원되는 VMDK로서 제공될 수 있다. 일부 실시예들에서, I/O 인터페이스(218)는 가상 기계들(208A 내지 208N)의 I/O 작동들을 모니터링하고, 가상 디스크로 지향되는 I/O 요청들(116) 및/또는 작동들을 인터셉트하고, I/O 요청들(116)(및 다른 관련된 데이터)를 인터페이스(241)를 통하여 가상 기계 캐시(213)로 보내도록 구성되는 I/O 필터(219)를 포함할 수 있다. I/O 필터(219)는 가상 기계(208A 내지 208N) I/O 스택(117)의 SCSI 및/또는 vSCSI "위에서" 작동할 수 있다. I/O 필터(219)는 가상 기계들(208A 내지 208N)의 CMS(220)와 가상 기계 캐시(213) 사이에 I/O 요청들(116)(및 응답들)을 통과시키는 것을 제공할 수 있다. I/O 필터(219)는 구성, 커맨드 및/또는 제어 데이터와 같은 다른 데이터와 통신하는 것을 더 제공할 수 있다. CMS(220)와 가상 기계 캐시(213) 사이에서 통신하는데 사용되는 가상 디스크는, 가상 디스크가 실제 스토리지에 사용되지 않고, CMS(220)와 가상 기계 캐시(213) 사이의 통신 인터페이스로서 사용되므로, 매우 작을(예를 들어, 수 메가바이트일) 수 있다.
가상 기계들(208A 내지 208N)은 공유 스토리지를 다른 방식들로 에뮬레이트하도록 구성될 수 있다. 예를 들어, 일부 실시예들에서, 가상 기계들(208A 내지 208N)은 복수의 호스트들(202)에 걸쳐 하나 이상의 "공유" VLUN 디스크들을 복제하도록 구성될 수 있어, 호스트들에, VLUN 디스크들은 공유 디바이스들인 것으로 나타난다. 예를 들어, VLUN 디스크들은 동일 일련 번호 또는 다른 식별자를 공유할 수 있다. 그러므로, 호스트(202) 및/또는 가상화 커널(210)은 VLUN 디스크들을 공유 디바이스들로서 취급하고, 가상 기계들(208A 내지 208N)이 호스트(202)로 그리고 호스트(202)로부터 전송되는 것을 가능하게 할 수 있다. 그러나, 상술된 VDMK 접근법은, 더 적은 수의 "공유" 디스크들이 생성될 필요가 있으며, 이는 제한된 저장 참조들의 소모를 방지할 수 있으므로(예를 들어, 가상 기계가 256개의 저장 디바이스를 참조하는 것에 제한될 수 있으므로), 이러한 접근법을 능가하는 이점들을 제공할 수 있다.
캐시 제공자 모듈(214)은 가상 기계들(208A 내지 208N) 사이에 캐시 리소스들을 제공하도록 구성될 수 있다. 특정 가상 기계(예를 들어, 가상 기계(208A))와 연관되는 할당량 정보는 상응하는 CMS(220)와 통신될 수 있으며, 이 상응하는 CMS(220)는 CMS(220)에 할당되는 캐시 리소스들에 따라 캐시 태그(221) 메타데이터를 유지할 수 있다. CMS(220)는 캐시 제공자 모듈(214)로부터 캐시 리소스들을 요청하도록 구성될 수 있다. 요청은 CMS(220) 초기화 작동(예를 들어, 캐시 "워밍 업(warming up)")에 응하여 송신될 수 있다. 본원에 사용되는 바에 따른, 캐시 초기화는 작동을 위해 CMS(220)를 준비시키는 하나 이상의 작동들을 지칭한다. CMS(220)는 가상 기계(208A 내지 208N)의 파워 온(power on), 재시작, (예를 들어, VMotionTM 작동에서) 새로운 호스트로의 전송 등에 응하여 하나 이상의 초기화 작동들을 수행하도록 구성될 수 있다.
CMS(220)는 캐시 제공자 모듈(214)에 의해 가상 기계(208A 내지 208N)에 할당되었던 캐시 스토리지에 따라 캐시 태그들(221)을 포함하는 캐시 메타데이터를 유지하도록 구성될 수 있다. 본원에 사용되는 바에 따른, "캐시 태그"는 식별자와 캐시 리소스(예를 들어, 캐시(216)에서의 페이지 또는 다른 캐시 저장 위치) 사이의 연관을 지칭한다. 따라서, 캐시 태그들(221)은 캐시 제공자 모듈(214)에 의해 특정 가상 기계(208A 내지 208N)에 할당되었던 캐시 리소스들을 나타낼 수 있다. 본원에 사용되는 바에 따른, 캐시 태그(221)의 "식별자"는 캐시(216)에 저장되었던 (또는 저장될) 데이터를 참조하기 위해 가상 기계(208A 내지 208N)에 의해 사용되는 식별자를 지칭한다. 캐시 태그 식별자는 논리적 식별자, 어드레스(예를 들어, 메모리 어드레스, 물리적 스토리지 어드레스 또는 주 저장 시스템(212) 상의 어드레스와 같은 논리적 블록 어드레스), 이름(예를 들어, 파일 이름, 디렉토리 이름, 볼륨 이름 등), 참조 등을 포함할 수 있지만, 이에 제한되지 않는다.
캐시 태그들(221)은 각각의 가상 기계들(208A 내지 208N) 내에(예를 들어, 호스트(202)에 의해 가상 기계(208A 내지 208N)에 할당되는 휘발성 메모리에) 저장될 수 있다. 일부 실시예들에서, 캐시 태그들(221)은 가상 기계(208A 내지 208N)의 캐시 데이터의 "작업 세트"를 나타낼 수 있다. 본원에 사용되는 바에 따른, 캐시 태그들(221)의 "작업 세트"는 무엇보다도, 캐시 승인 정책들, 캐시 보유 및/또는 퇴거 정책들과 같은 하나 이상의 캐시 정책들의 애플리케이션(예를 들어, 캐시 에이징(aging) 메타데이터, 캐시 스틸(steal) 메타데이터, 최소 최근 사용(LRU), "활성" 및/또는 "불활성" 등), 캐시 프로파일링 정보, 파일 및/또는 애플리케이션 레벨 지식 등을 통해 CMS(220)에 의해 캐시(216)에서 승인되었고/되었거나 보유되었던 캐시 태그들의 세트를 지칭한다. 따라서, 캐시 태그들(221)의 작업 세트는 특정 세트의 작동 조건들 하에서 가상 기계(208A 내지 208N)에 최적의 I/O 성능을 제공하는 캐시 데이터의 세트를 나타낼 수 있다.
일부 실시예들에서, CMS(220)는 캐시 태그들(221)을 보존하고/하거나 유지하도록 구성될 수 있으며, 이는 주 저장 시스템(212), 존속 캐시 저장 디바이스(예를 들어, 캐시(216)) 등과 같은 비휘발성 저장 매체에 캐시 태그들(221)을 존속시키는 것을 포함할 수 있다. 본원에 사용되는 바에 따른, "스냅샷(snapshot)"은 특정 시점의 캐시의 작업 세트를 지칭한다. 스냅샷은 캐시 태그들(221)의 모두 또는 서브세트(및/또는 관련된 캐시 메타데이터)를 포함할 수 있다. 일부 실시예들에서, 스냅샷은 캐시 디바이스(216)에서 데이터를 "피닝(pinning)"하는 것을 더 포함하여, 하나 이상의 캐시 태그들(221)에 의해 참조되는 데이터가 캐시(216)에서 보유되게 할 수 있다. 대안적으로, 스냅샷은 데이터 식별자들만을 참조할 수 있고, 근원적인 데이터가 캐시(216)로부터 제거되는(예를 들어, 퇴거되는) 것을 가능하게 할 수 있다. CMS(220)는 존속 스토리지로부터 스냅샷을 로딩하고, 캐시 태그들(221)을 상주시키는데 스냅샷을 사용하도록 구성될 수 있다. 스냅샷은 초기화 작동(예를 들어, 캐시 워밍업)의 일부로서 그리고/또는 구성 및/또는 사용자 선호도에 응하여 로딩될 수 있다. 예를 들어, CMS(220)는 특정 애플리케이션(들) 및/또는 서비스(들)에 대해 최적화되는 상이한 스냅샷들을 로딩하도록 구성될 수 있다. 스냅샷을 로딩하는 것은 상술한 바와 같이 캐시 제공자 모듈(214)로부터 캐시 스토리지를 요청하는 것을 더 포함할 수 있다. 일부 실시예들에서, CMS(220)는 가상 기계(208A 내지 208N)가 전체 스냅샷에 충분한 캐시 공간을 할당할 수 없다면, 스냅샷의 서브세트를 로딩할 수 있다.
일부 실시예들에서, 캐시 제공자 모듈(214)은 (예를 들어, 도 5에 도시되는 바와 같이) 가상 기계들(208A 내지 208N)과 가상 기계들(208A 내지 208N)에 할당되는 각각의 캐시 저장 위치들 사이의 매핑들을 유지하도록 구성된다. 매핑들은 본원에 설명되는 바와 같이 (예를 들어, 캐싱된 데이터에 매핑되는 가상 기계(208A 내지 208N)에의 액세스를 제한함으로써) 가상 기계들(208A 내지 208N)의 캐시 데이터를 보안하고/하거나 호스트(202)로부터 다른 원격 호스트들로 전송되는 하나 이상의 가상 기계들(208A 내지 208N)의 캐시 데이터를 보유하는 것 및/또는 전송하는 것을 제공하는데 사용될 수 있다.
일부 실시예들에서, 가상 기계 캐시(213)는 "씬 프로비저닝(thin provisioning)" 접근법을 캐시 리소스 할당에 구현하도록 구성된다. 각각의 가상 기계(208A 내지 208N)는 캐시(216)의 특정 수의 청크들(302)에 할당될 수 있다. 그러나, 캐시(216)의 전체 캐시 용량은 (VLUN 등과 같은 가상 디스크를 통해) 가상 기계들(208A 내지 208N) 각각에 "공개될" 수 있다. 예를 들어, 전체 캐시 크기가 1TB이면, 각각의 가상 기계(208A 내지 208N)는 그것이 전체 1TB의 캐시 용량에 액세스할 수 있음을 보고할 수 있다. 그러나, 캐시 청크들(302)의 실제 할당량은 가상 기계(208A 내지 208N)의 현재 요구들에 기반하여 상당히 더 작을(예를 들어, 256MB 또는 512MB일) 수 있다. 할당된 캐시 청크들(302)은 캐시(216) 내에서 이용 가능한 캐시 어드레스들의 특정 범위를 나타낸다. 캐시 제공자 모듈(214)은 가상 기계들(208A 내지 208N)의 작업 세트 요건들이 달라짐에 따라 (그리고/또는 가상 기계들(208A 내지 208N)이 호스트(202)로/로부터 전송됨에 따라), 이러한 캐시 청크 할당량들을 동적으로 변화시킨다. 특정 가상 기계(208A 내지 208N)에 실제로 할당되는 캐시 청크(302)의 수에 관계 없이, 그러한 가상 기계(208A 내지 208N)는 그것이 전체 1TB 캐시에 액세스할 수 있다는 것을 보고한다. 따라서, 가상 기계(208A 내지 208N)의 게스트(guest) 작동 시스템은 크기 1TB의 가상 디스크로 작동할 수 있다. 따라서, 가상 기계(208A 내지 208N)에 할당되는 실제 저장 공간은 게스트 작동 시스템이 오류 상태를 표시하지 않고 동적으로 달라질 수 있다. 그러므로, 캐시 태그(221)에 의해 참조되는 캐시 페이지(304)는 캐시(216) 내의 "간접적" 어드레스에 상응할 수 있다.
도 5는 가상 기계(208A)에 노출되는 가상 캐시 저장 리소스들(VM-1)과 가상 기계(208A)에 실제로 할당되는 근원적인 물리적 캐시 어드레스들 사이의 매핑들(500)의 일 실시예를 도시한다. 가상 기계(208A)에 할당되는 가상 캐시 스토리지는 캐시 청크들의 인접 영역(VM-10, VM-11, VM-12... VM-1N)(529)으로 도시된다. 인접 캐시 청크들(529)은 상술한 바와 같이 고정 크기 가상 디스크(229)를 통해 노출될 수 있다. 가상 기계(208A)에 실제로 할당되는 물리적 캐시 스토리지는 캐시(216)의 물리적 어드레스 공간(306) 내에서 인접하지 않는 청크들 세트(VM-10, VM-11, VM-12, VM-1N)로 도시된다. 도 5에 도시되는 바와 같이, 캐시(216)의 물리적 어드레스 공간(306)에서의 청크들(302)은 다른 가상 기계들(202B 내지 202N)에 할당되는 청크들(302)과 인접하지 않고/않거나 인터리빙(interleaving)될 수 있다. 도 5의 예시가 물리적 순서로 상이한 위치들 중 일부를 도시하지만, 가상 기계(208A)에 할당되는 캐시 청크들(302)은 물리적 캐시 리소스들의 이용 가능성(예를 들어, 이용 가능한 청크들(302))에 따라 무작위 순서로 위치될 수 있다.
맵 모듈(514)은 가상 캐시 스토리지 할당량들(예를 들어, 가상 기계(208A) 내에서 캐시 태그들(221)의 간접적 캐시 어드레스들)을 물리적 캐시 리소스들(예를 들어, 캐시 청크들(302) 및/또는 캐시 페이지들(304))에 매핑하도록 구성될 수 있다. 일부 실시예들에서, 매핑은 가상 기계들(208A 내지 208N)의 간접적 캐시 어드레스들과 캐시(216)의 물리적 어드레스 공간(306) 사이에 연관들의 "애니 투 애니" 색인을 포함할 수 있다.
일부 실시예들에서, 가상 기계 캐시(213)는 캐시(216)에 저장되는 데이터를 보안하기 위해 맵 모듈(514)을 레버리징할 수 있다. 예를 들어, 맵 모듈(514)의 매핑들은 액세스 제어의 형태로서 사용될 수 있으며, 물리적 캐시 청크들(302)에의 액세스는 물리적 캐시 청크(302)가 매핑되고/되거나 할당되는 가상 기계로 제한된다. 예를 들어, VM-10이 라벨링된 캐시 청크는 청크(302)가 매핑되는 가상 기계(예를 들어, 가상 기계(208A))에만 액세스할 수 있다. 게다가, 매핑층의 간접적 액세스에 의해, 가상 기계들(208A 내지 208N)은 다른 가상 기계들(208A 내지 208N)의 물리적 캐시 청크들(302)을 직접 참조하고/하거나 어드레싱하는 것이 불가능할 수 있다.
맵 모듈(514)은 상응하는 가상 기계의 VMID를 사용하여 가상 캐시 스토리지를 매핑하도록 구성될 수 있다. 따라서, 가상 기계가 호스트들(202) 사이에서 전송되고/되거나 이주될 때, 가상 기계의 VMID와 캐시 데이터 사이의 매핑들은 유효하게 남을 수 있다(예를 들어, VMID를 가정하면, 상응하는 가상 기계(208A 내지 208N)의 보유된 캐시 데이터는 식별되고 액세스될 수 있다). 가상화된 환경에서 캐시 스토리지를 동적으로 할당하는 시스템들 및 방법들의 추가의 실시예들이 "데이터 입력/출력 작동들을 관리하는 것"이라는 명칭으로 2011년 7월 27일자로 출원된 미국 특허 출원 일련번호 제 13/192,365호에 개시되며, 참조로 본원에 포함된다.
도 2b를 참조하면, 캐시 제공자 모듈(214)은 가상 기계들(208A 내지 208N)에 캐시 리소스들을 동적으로 할당하도록 구성될 수 있다. 제공되면, 각각의 가상 기계(208A 내지 208N)는 캐시 저장 리소스들의 미리 결정된 및/또는 인접한 영역(예를 들어, 캐시 청크들(302) 및/또는 캐시 페이지들(304))에 액세스할 수 있다. 캐시 제공자 모듈(214)은 캐시(216)를 각각의 가상 기계들(208A 내지 208N)에 동적으로 제공될 수 있는 캐시 청크들(302)로 분할하도록 구성될 수 있다.
일부 실시예들에서, 가상 기계들(208A 내지 208N)은 고정 크기를 갖는 디스크들로 사용되도록 구성될 수 있고, 디스크(예를 들어, 가상 디스크(229))의 크기에 급작스러운 이상 변화가 있으면, 부적절하게 작동할 수 있다. 따라서, 캐시 제공자 모듈(214)은 근원적인 캐시 리소스들의 동적 재할당을 제공하는 동안, 고정 크기를 갖는 것으로 보이는 캐시 저장 리소스들을 노출시키도록 구성될 수 있다. 일부 실시예들에 따르면, 그리고 도 2b에 도시되는 바와 같이, 캐시 제공자 모듈(214)은 가상 디스크 드라이버(215)를 사용하여 고정 크기 캐시 리소스들을 에뮬레이트할 수 있으며, 이 가상 디스크 드라이버(215)는 가상 기계들(208A 내지 208N) 내의 각각의 가상 디스크들(VLUN 디스크들)(229)을 노출시키도록 구성될 수 있다. 그러므로, 캐시 태그들(221)은 가상 디스크(229)에서의 캐시 리소스들을 참조할 수 있으며, 이는 캐시(216) 내에서 물리적 캐시 리소스들을 간접적으로 참조할 수 있다(예를 들어, 캐시 태그들(221)은 본원에 설명되는 바와 같이 맵 모듈(514)의 가상 디스크 매핑에 대하여 캐시 리소스들에 대한 간접적 참조를 포함할 수 있다). 가상 디스크들(229)은 캐시(216)의 전체 용량(예를 들어, 2TB)을 포함하는 고정 크기를 갖는 것으로 나타날 수 있는데 반해, 캐시(216)의 일부만이 캐시 제공자 모듈(214)에 대하여 가상 기계(208A 내지 208N)에 실제로 할당된다(예를 들어, 4GB). 따라서, 캐시 제공자 모듈(214)은 가상 기계들(208A 내지 208N)의 작동에 악영향을 주지 않고 캐시 스토리지를 가상 기계들(208A 내지 208N)에 동적으로 할당하도록 구성될 수 있다. 가상 디스크 드라이버(215) 및/또는 맵 모듈(514)은 가상 기계들(208A 내지 208N)의 간접적 참조들과 물리적 캐시 리소스들 사이의 매핑들을 관리할 수 있다.
캐시 제공자 모듈(214)은 가상 기계들(208A 내지 208N)의 상이한 캐시 요건들에 따라 상이한 양들의 캐시 스토리지를 가상 기계들(208A 내지 208N)에 동적으로 할당하도록 구성될 수 있다. 캐시 제공자 모듈(214)은 (가상 디스크(229)를 통하여) 가상 기계들(208A 내지 208N)에 노출되는 가상 저장 리소스들을 캐시(216)에서의 물리적 어드레스들에 매핑하도록 구성되는 맵 모듈(514)을 포함할 수 있다.
상술한 바와 같이, 가상 디스크 드라이버(215)는 (각각의 가상 디스크들(229)을 통해) 가상 기계들(208A 내지 208N)에 고정 크기의 인접한 캐시 스토리지 할당량들을 나타내도록 구성될 수 있다. 맵 모듈(514)은 가상 디스크(229)에 대한 참조들을 물리적 캐시 어드레스들(예를 들어, 캐시 청크들(302) 및/또는 캐시 페이지들(304))에 매핑하도록 구성될 수 있다. 예를 들어, 가상 기계(208A)에 제공되는 캐시 스토리지는 캐시(216)에서의 공간(524)으로서 도표화하여 도시된다. 캐시 공간(524)은 4GB를 포함할 수 있다. 그러나, 가상 디스크 드라이버(215)는 이러한 제한된 캐시 용량을 고정된 2TB 가상 디스크(229)로서 나타낼 수 있다. 게다가, 가상 기계들(208A 내지 208N)에 할당되는 캐시 용량(캐시 청크들(302))은 임의의 방식으로 캐시(216)의 물리적 어드레스 공간 내에서 분배될 수 있는데 반해(청크들(302)이 인접하지 않을 수 있는데 반해), 가상 디스크(229)를 통해 나타내어지는 캐시 용량은 인접할 수 있다. 캐시 제공자 모듈(214)은 캐시 요건들을 변화시키는 것에 응하여 그리고/또는 가상 기계들(208A 내지 208N)이 호스트(202)로 그리고 호스트(202)로부터 전송됨에 따라 가상 기계들(208A 내지 208N) 사이의 캐시 스토리지 할당들을 동적으로 이동시키도록 구성될 수 있다.
CMS(220)는 하나 이상의 I/O 인터페이스들(218)을 통해 가상 기계 캐시(213)와 인터페이싱하도록 구성될 수 있다. CMS(220)는 I/O 인터페이스(218)의 SCSI 필터(319)를 포함할 수 있으며, 이 SCSI 필터(319)는 (가상 디스크(229)를 통하여) 가상 기계(208A)(및 거기에서 작동하는 CMS(220))와 가상 기계 캐시(213) 사이에서 데이터를 통신하고/하거나 정보를 제어하도록 구성될 수 있다. 일부 실시예들에서, SCSI 필터(319)는 가상 기계(208A)의 I/O 스택(또는 다른 I/O 인프라스트럭처 및/또는 메시징 시스템)으로 통합될 수 있다. SCSI 필터(319)는 가상 디스크(229)를 식별하고, 가상 디스크(229) 내의 할당량 변화들(예를 들어, 캐시 제공자 모듈(214)에 의한 동적 할당량)에 응답하는 등으로 구성될 수 있다. 상술한 바와 같이, 가상 디스크(229)는 가상 기계(208A)에 할당되는 실제 물리적 캐시 용량보다 더 큰 고정 저장 용량을 보고하도록 구성될 수 있어, 캐시 제공자 모듈(214)이 가상 기계(208A)에 악영향을 주지 않고 캐시 스토리지를 동적으로 제공할 수 있다. 일부 실시예들에서, SCSI 필터(319)는 가상 디스크(229)의 실제 물리적 용량을 관리하도록 구성될 수 있으며, 이 가상 디스크(229)의 실제 물리적 용량은 가상 기계 호스트(202)의 다른 애플리케이션들 및/또는 작동 시스템들로부터 숨겨질 수 있다. 예를 들어, VLUN 디스크(229)는 읽기 전용 저장 디바이스로서 나타내어질 수 있으며, 이 읽기 전용 저장 디바이스는 가상 기계(208A) 및/또는 호스트(202) 내의 다른 애플리케이션들이 데이터를 가상 디스크(229)에 기록하는 것을 방지할 수 있다.
캐시 제공자 모듈(214)은 SCSI 필터(319)를 포함하는 통신 링크(243)를 경유하여 가상 기계(208A)에 할당되는 실제 물리적 캐시 스토리지를 보고할 수 있다. 통신 링크(243)는 가상 디스크 드라이버(215)와 SCSI 필터(319) 사이의 I/O 트래픽과 별도로 작동할 수 있다. 따라서, 비동기 대역 외 메세지들은 가상 디스크 드라이버(215)와 SCSI 필터(319) 사이에서 송신될 수 있다. SCSI 필터(319)는 할당량 정보(및 다른 커맨드 및/또는 제어 정보)를 CMS(220)에 보고할 수 있으며, 이 CMS(220)는 가상 기계(208A)에 이용 가능한 캐시 태그들(221)의 수를 결정하는데 할당량 정보를 이용할 수 있다. 따라서, 캐시는 가상 기계들(208A 내지 208N)에 대하여 씬 프로비저닝될 수 있고, 캐시 할당량들은 가상 기계들(208A 내지 208N)의 캐시 요건들에 따라 동적으로 달라질 수 있다.
도 6은 CMS(220)의 일 실시예를 도시하는 블록도이다. CMS(220)는 캐시 정책 모듈(601), 어드레스 공간 변환 모듈(602), 캐시 태그 관리자(604), 클럭 스윕(sweep) 모듈(606), 스틸 캔디데이트(candidate) 모듈(608), 캐시 페이지 관리 모듈(610), 유효한 유닛 맵 모듈(612), 페이지 크기 관리 모듈(614), 인터페이스 모듈(616), 캐시 태그 보유 모듈(618) 및 캐시 태그 스냅샷 모듈(619)을 포함하는 하나 이상의 모듈들을 포함할 수 있다.
캐시 정책 모듈(601)은 다양한 캐시 승인 기준들 및/또는 정책에 기반하여 캐시로 승인될 데이터를 선택하도록 구성될 수 있다. 캐시 정책 모듈(601)은 추가로, 캐시로 승인되는 데이터에 대한 존속 레벨을 결정하도록 구성될 수 있다. 존속 레벨은 무엇보다도, 라이트-스루, 라이트-백, 일시적 등과 같은 데이터에 대한 캐싱 모드 및/또는 구성을 결정할 수 있다. 일부 실시예들에서, 캐시 정책 모듈(601)은 존속 레벨들을 캐시 데이터에 할당하기 위한 존속 레벨 모듈(134) 및 존속 레벨 정책(135)을 포함한다. 대안적으로, 또는 부가적으로, 캐시로 승인될 데이터의 존속 레벨은 본원에 설명되는 바와 같이 저장 모듈(130)과 같은 다른 엔티티 또는 프로세스에 의해 결정될 수 있다. CMS(220)는 캐시 실행 모듈(636)을 더 포함할 수 있으며, 이 캐시 실행 모듈(636)은 선택된 존속 레벨에 따라 데이터를 캐싱하도록 구성될 수 있다. 그러므로, 캐시 실행 모듈(636)은 하나 이상의 상이한 캐시 모드들 및/또는 구성들로 데이터를 캐싱하도록 구성될 수 있다. 예를 들어, 캐시 실행 모듈(636)은 라이트-스루 캐시 모드로 데이터를 캐싱하도록 구성될 수 있으며, 이 라이트-스루 캐시 모드는 하나 이상의 주 저장 리소스들(240B 내지 240N) 및 가상 기계 캐시(213)에 데이터를 기록함으로써 기록 I/O 요청들(116)을 서비스하는 것을 포함할 수 있다. CMS(220)는 데이터가 하나 이상의 주 저장 리소스들(240B 내지 240N)에 기록될 때까지, 기록 I/O 요청(116)의 완료를 확인 응답하지 않을 수 있다. 캐시 실행 모듈(636)은 일시적 캐시 모드로 데이터를 캐싱하도록 구성될 수 있으며, 이 일시적 캐시 모드는 주 저장 리소스(240B 내지 240N) 또는 다른 보조 기억 장치에 데이터를 저장하지 않고 데이터를 가상 기계 캐시(213)에 기록함으로써 기록 I/O 요청들(116)을 서비스하는 것을 포함할 수 있다. 따라서, CMS(220)는 데이터를 가상 기계 캐시(213)에 기록하는 것에 응하여 일시적 캐시 모드가 할당된 기록 I/O 요청(116)의 완료를 확인 응답할 수 있다.
변환 모듈(602)은 캐시 태그들(221)의 논리적 식별자들(예를 들어, 주 저장 시스템에서의 어드레스들)을 가상 기계 캐시(213) 내의 캐시 저장 위치들(예를 들어, 캐시 어드레스들, 캐시 청크들(302), 캐시 페이지들(304) 등)과 연관시키도록 구성될 수 있다. 상술한 바와 같이, 캐시 태그들(221)은 가상 디스크(229) 내의 "간접적인" 그리고/또는 "가상의" 캐시 저장 리소스들에 상응할 수 있으며, 이 "간접적인" 그리고/또는 "가상의" 캐시 저장 리소스는 캐시 제공자 모듈(214) 및/또는 맵 모듈(514)에 의해 물리적 캐시 저장 리소스들(예를 들어, 캐시 청크들(302))에 매핑될 수 있다.
캐시 태그 관리자(604)는 본원에 설명되는 바와 같이 CMS(220)에 할당되는 캐시 태그들을 관리하도록 구성될 수 있으며, 이는 가상 기계 식별자들(예를 들어, 논리적 식별자들, 어드레스들, 주 스토리지 어드레스들)과 캐시(216)에서의 데이터 사이의 연관들을 유지하는 것, 그리고 액세스 특성들, 존속 레벨, 캐시 모드 등과 같은 캐시 메타데이터를 유지하는 것을 포함할 수 있다.
클럭 스윕 모듈(606)은 무엇보다도, 하나 이상의 클럭 핸드 스윕 타이머들을 사용하여 캐시 에이징 메타데이터를 결정하고/하거나 유지하도록 구성될 수 있다. 스틸 캔디데이트 모듈(608)은 무엇보다도, 클럭 스윕 메타데이터 또는 다른 캐시 정책에 기반하여 퇴거에 대한 캔디데이트들인 캐시 데이터 및/또는 캐시 태그들을 식별하도록 구성될 수 있다. 일부 실시예들에서, 스틸 캔디데이트 모듈(608)은 캐시 태그들(221)의 존속 레벨 메타데이터 상의 캐시 태그 퇴거 기준을 예측하도록 구성될 수 있다. 예를 들어, 스틸 캔디데이트 모듈(608)은 퇴거에 대한 일시적 캐시 모드로 캐싱되는 캐시 태그들(221)을 선택하지 않을 수 있다. 대안적으로, 스틸 캔디데이트 모듈(608)은 퇴거 전에 일시적 캐시 태그들(221)을 주 저장 리소스(240B 내지 240N)에 우선 플러싱할 수 있다.
캐시 페이지 관리 모듈(610)은 캐시 리소스들(예를 들어, 캐시 페이지 데이터) 및 관련된 작동들을 관리하도록 구성될 수 있다. 유효한 유닛 맵 모듈(612)은 가상 기계 캐시(213) 및/또는 주 저장 리소스(240B)에 저장되는 유효한 데이터를 식별하도록 구성될 수 있다. 페이지 크기 관리 모듈(614)은 본원에 설명되는 바와 같이 캐시 성능을 향상시키기 위해 다양한 페이지 크기 분석 및 조정 작동들을 수행하도록 구성될 수 있다. 인터페이스 모듈(616)은 다른 구성 요소들, 디바이스들 및/또는 시스템들이 CMS(220)와 상호 작용하도록 하나 이상의 인터페이스들을 제공하도록 구성될 수 있다.
캐시 태그 보유 모듈(618)은 CMS(220)를 상이한 호스트로 전송하는 것에 응하여 캐시 태그들(221)을 보유하도록 구성될 수 있다. 상술한 바와 같이, 캐시 태그들(221)은 캐시의 작업 세트를 나타낼 수 있으며, 이 캐시의 작업 세트는 하나 이상의 캐시 승인 및/또는 퇴거 정책들(예를 들어, 클럭 스윕 모듈(606) 및/또는 스틸 캔디데이트 모듈(608))의 사용을 통해, 그리고 가상 기계(208)의 I/O 특성들(및/또는 가상 기계(208A 내지 208N) 상에서 실행되는 애플리케이션들)에 응하여 발전될 수 있다. 캐시 태그 보유 모듈(618)은 캐시 태그들이 지칭하는 근원적인 캐시 데이터가 새로운 호스트의 캐시 저장 디바이스 상에서 이용 가능하지 않을 수 있다는 사실에도 불구하고 가상 기계(208)가 새로운 호스트(202)로 전송된(예를 들어, 무엇보다도, VMotionTM 작동으로 호스트(202A)에서 호스트(202B)로 전송된) 후에 캐시 태그들(221)을 보유하도록 구성될 수 있다. 그러나, 본원에 설명되는 가상 기계 캐시(213)는 새로운 호스트에 캐시(216)를 상주시키도록 구성될 수 있어, CMS(220)가 캐시 태그들(221)의 작업 세트를 계속해서 사용할 수 있다.
상술한 바와 같이, 보유된 캐시 태그들(221)의 데이터는 이전 호스트로부터 (그리고/또는 주 저장 리소스들(240B 내지 240N), 또는 다른 소스로부터) 새로운 호스트로 전송될 수 있다. 캐시 데이터는 요구 페이징 모델을 통하여 전송될 수 있으며, 이는 다양한 보유된 캐시 태그들(221)의 캐시 데이터가 가상 기계(208)에 의해 요청됨에 따라, "요구시에" 캐시를 상주시키는 것을 포함할 수 있다. 대안적으로, 또는 부가적으로, 캐시 데이터는 프리페치(prefetch)되고/되거나 "벌크(bulk) 전송" 작동으로 전송될 수 있으며, 이는 캐시 태그 데이터에 대한 요청들과 관계 없이 캐시 데이터를 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 데이터는 캐시 전송 정책에 기반하여 선택적으로 프리페치될 수 있으며, 이는 클럭 스윕 모듈(606) 및/또는 스틸 캔디데이트 모듈(608)의 캐시 에이징 메타데이터 및/또는 다른 캐시 정책 메타데이터(예를 들어, 활성, 불활성, 최소 최근 사용 등)에 적어도 부분적으로 기반할 수 있다.
캐시 태그 스냅샷 모듈(619)은 캐시의 작업 세트(예를 들어, 캐시 태그들(221))의 하나 이상의 "스냅샷들"을 유지하도록 구성될 수 있다. 상술한 바와 같이, 스냅샷은 특정 시점의 캐시 태그들(221)의 세트를 지칭한다. 스냅샷 모듈(619)은 상술한 바와 같이 존속 저장 매체 상에 캐시 태그들(221)의 스냅샷을 저장하고/하거나 저장된 스냅샷을 로딩하도록 구성될 수 있다.
상술한 바와 같이, CMS(220)는 존속의 하나 이상의 상이한 레벨들에 따라 데이터를 캐싱하도록 구성될 수 있으며, 이는 하나 이상의 상이한 캐시 모드들로 그리고/또는 하나 이상의 상이한 주 저장 디바이스(들)(240B) 상에서 데이터를 캐싱하는 것에 상응할 수 있다. CMS(220)는 I/O 성능을 개선하고/하거나 호스트(202)의 통합비를 증가시키는데 순응적 존속 레벨들을 활용할 수 있다. 본원에 사용되는 바에 따른, 호스트(202)의 "통합비"는 호스트(202) 상에서 작동할 수 있는 가상 기계들(208A 내지 208N)의 수를 지칭한다. 호스트(202) 상에서 작동할 수 있는 가상 기계들(208A 내지 208N)의 수는 호스트(202)의 컴퓨팅 리소스들 및/또는 호스트들(202)의 I/O 오버헤드에 의해 제한될 수 있다.
고도로 통합된 VDI 환경들에서, 가상 기계들(208A 내지 208N)은 공통 I/O 특성들을 공유할 수 있으며, 이는 호스트(202)의 I/O 인프라스트럭처를 무리하게 사용할 수 있다. 가상 기계들(208A 내지 208N)은 유사 데이터 세트들(예를 들어, 작동 시스템들, 애플리케이션들, 사용자 프로파일 정보 등)을 공유할 수 있고, 가상 기계들(208A 내지 208N)은 유사 시점들에서(예를 들어, 부팅 업, 파워 온 동안, 로그인 시간에서 등) 이러한 공통 데이터에 액세스하도록 구성될 수 있다. 결과적인 "부트 스톰(boot storm)들"은 주 저장 리소스들(240B 내지 240N) 및/또는 호스트(202)의 I/O 인프라스트럭처를 압도할 수 있으며, 이는 전체 시스템 성능을 상당히 저하시킬 수 있다. 유사 파일 액세스 "스톰들"은 가상 기계들(208A 내지 208N)이 특정 애플리케이션들을 로딩하는 것, 공유 데이터에 액세스하는 것, 사용자 프로파일 정보에 액세스하는 것, 로그인 프로세스를 실행하는 것 등에 응하여 발생될 수 있다. 게다가, 가상 기계들(208A 내지 208N) 각각은 각각의 CMS(220)를 포함할 수 있으며, 이 CMS(220) 각각은 유사 데이터 세트들을 공유 가상 기계 캐시(213)로 승인할 수 있으며, 이로 인해 가상 기계 캐시(213)를 중복 데이터로 채울 수 있다. 판독 중심 I/O 작동들의 성능을 개선하는 시스템들 및 방법들의 실시예들이 "데이터 중복 제거 캐시를 위한 시스템들 및 방법들"이라는 명칭으로 2013년 1월 25일자로 출원된 미국 특허 출원 일련번호 제 13/750,904호에 개시되어 있으며, 참조로 본원에 포함된다.
기록 중심 I/O 작동들의 성능은 본원에 개시되는 순응적 존속 레벨들의 사용에 의해 개선될 수 있다. 예를 들어, 가상 기계(208A 내지 208N)는 장기간 동안 보존될 필요가 없는(예를 들어, 재부팅 사이클들 동안 보유될 필요가 없는) 데이터를 기록하라는 다수의 I/O 요청들(116)을 발행할 수 있다. 그러한 데이터는 일시적인 것(예를 들어, "임시의," "1회성의" 그리고/또는 "불필요한" 데이터)으로 고려될 수 있다. 본원에 사용되는 바에 따른, "재부팅 사이클" 또는 "재시작 작동"은 컴퓨팅 환경(110) 및/또는 저장 모듈(130)의 의도적인 또는 의도되지 않은 재시작 및/또는 재부팅을 포함하며, 이는 무엇보다도, 전력의 손실, 하드웨어 결함, 소프트웨어 결함, 의도적인 셧다운 또는 재시작 등에 의해 야기될 수 있다. 따라서, 재시작 작동은 시스템 재부팅, 리셋 또는 셧다운 이벤트; 전력 결함, 전력 손실 또는 전력 고장 이벤트; 또는 다른 전력의 차단을 포함할 수 있다. 일시적 데이터는 컴퓨팅 디바이스(예를 들어, 가상 기계(208A 내지 208N))가 작동하는 있는 동안 매우 중요할 수 있지만, 재부팅 사이클 및/또는 재시작 이벤트 후에 필요하지 않을 수 있다. 그러한 데이터의 예들은 가상 메모리 파일들과 같은 교체 파일들(예를 들어, pagefile.sys 등); 콘텐츠 임시 디렉토리들과 같은 임시 파일들(예를 들어, /tmp 등); 임시 애플리케이션 파일들(예를 들어, Microsoft Word® 로컬 캐시 등); 등을 포함하지만, 이에 제한되지는 않는다. 그에 반해서, "영구적" 데이터는 부팅 사이클들 및/또는 재시작 이벤트들 사이에 보유되어야 할 데이터를 지칭한다.
일부 실시예들에서, CMS(220)는 불필요한 데이터에 관한 I/O 요청들을 식별하도록 구성되고 일시적 캐시 구성으로 I/O 요청들의 데이터를 캐싱할 수 있다. 앞서 개시된 바와 같이, 일시적 캐시 구성은 데이터가 캐시 스토리지로 기록되지만(그리고/또는 캐시 스토리지로부터 판독되지만), 주 저장 리소스(240B 내지 240N)로 라이트-스루되지 않고/않거나, 라이트-백되지 않고/않거나, 카피되지 않는 캐시 모드를 지칭한다. 따라서, 일시적 캐시에 저장되는 데이터는 데이터가 캐시로부터 퇴거될 때 그리고/또는 캐시가 재부팅, 고장 또는 그와 유사한 경우에 손실되면, 손실될 수 있다.
일시적 캐시 모드 및/또는 구성으로 데이터를 저장하는 것은 상당한 성능 이익들을 제공할 수 있다: 일시적 캐시 데이터에 관한 I/O 요청들(116)이 주 저장 리소스들(240B 내지 240N)에의 액세스들을 요하지 않고, 주 저장 리소스들(240B 내지 240N)과 연관되는 레이턴시가 I/O 요청들(116)을 서비스하기 위해 "임계 경로"로부터 제거될 수 있다. 본원에 사용되는 바에 따른, "임계 경로"는 I/O 작동의 타이밍 및/또는 레이턴시 경로를 지칭한다. 상술한 바와 같이, 라이트-스루 캐시 구성들에서, 기록 I/O 요청들(116)은 데이터가 주 저장 리소스들(240B 내지 240N)에 라이트-스루될 때까지, (예를 들어, 저장 클라이언트(106A 내지 106N)로의 복귀 제어를) 완료하지 않을 수 있다. 그러므로, I/O 작동의 임계 경로는 하나 이상의 고레이턴시 주 스토리지 액세스들을 포함한다. 그에 반해서, 일시적 데이터에 관한 캐시 작동들은 주 저장 리소스들(240B 내지 240N)에 액세스하지 않고 캐시 내에서 배타적으로 완료될 수 있다. 따라서, 일시적 I/O 작동의 임계 경로는 주 저장 리소스들(240B 내지 240N)에 대한 고레이턴시 액세스들을 포함하지 않는다. 그러므로, 저장 클라이언트들(106A 내지 106N)에 대한 레이턴시를 감소시키는 것에 더하여, 일시적 캐싱은 주 저장 리소스들(240B 내지 240N) 상의 I/O 대역폭 및/또는 부하를 감소시키는 부가 이익을 제공할 수 있다.
일부 실시예들에서, CMS(220)는 캐시 정책 모듈(601) 및/또는 존속 레벨 모듈(134)에 의해 결정되는 I/O 요청(116)의 존속 레벨에 기반하여 일시적 캐싱에 대한 데이터를 식별할 수 있으며, 이 캐시 정책 모듈(601) 및/또는 존속 레벨 모듈(134)은 존속 레벨 정책(135)(예를 들어, 존속 레벨 기준들)에 따라 I/O 요청에 대한 존속 레벨을 결정할 수 있으며, 이 존속 레벨 정책(135)은 I/O 요청들(116)의 속성들, I/O 요청들(116)로부터 유도되는 추론들, I/O 요청들(116)에 관한 프로파일링 메타데이터, 파일 레벨 지식, 애플리케이션 레벨 지식, 선호도 및/또는 구성, 테스트 및 경험 등 중 하나 이상에 기반할 수 있다.
도 7a는 CMS(220)의 다른 실시예의 블록도이다. CMS(220)는 I/O 인터페이스(218)를 통하여 캐시 저장 리소스(240A)를 포함하고/하거나 이것에 통신 결합될 수 있다. CMS(220)는 작동 환경(711) 내에 배치될 수 있으며, 이 작동 환경(711)은 베어 메탈 컴퓨팅 환경 상에서 작동하는 작동 시스템을 포함할 수 있다. 따라서, CMS(220)는 I/O 인터페이스(218)를 통하여 직접 캐시 저장 리소스(240A)에 액세스하도록 구성될 수 있으며; I/O 인터페이스(218)는 API, 버스, 프로토콜 등을 포함할 수 있다. 일부 실시예들에서, 작동 환경(711)은 가상 작동 시스템, 게스트 작동 시스템 등과 같은 가상 작동 환경일 수 있다. CMS(220)는 가상화된 캐시 저장 리소스(240A)에 액세스하도록 구성될 수 있으며, 이 가상화된 캐시 저장 리소스(240A)는 상술한 바와 같이 가상 디스크(229)로서 나타내어질 수 있다. CMS(220)는 또한, 상술한 바와 같이 SCSI 필터(319)를 통하여 캐시 저장 리소스(240A)로 그리고 이것으로부터 데이터, 제어 및/또는 구성 데이터를 전송하도록 구성될 수 있다.
CMS(220)의 I/O 요청 수신기 모듈(132)은 작동 환경(711)의 I/O 스택(117)에서 I/O 요청들을 모니터링하도록 구성되는 에이전트(133)를 포함할 수 있다. I/O 스택(117)은 파일 시스템층(717A)을 포함한 복수의 층들(717A 내지 717N)을 포함할 수 있다. 에이전트(133)는 층들(717A 내지 717N) 중 임의의 것 내에서 I/O 요청들(116)을 모니터링하도록 구성될 수 있다. I/O 요청들은 파일 열기, 닫기, 판독, 기록, 변경 등과 같은 파일 작동들과 관련될 수 있다. 에이전트(133)는 볼륨 마운트 및/또는 언마운트, 디스크 마운트 및/또는 언마운트, 페이징 I/O 등과 같은 다른 타입들의 I/O 요청들을 모니터링할 수 있다. 에이전트(133)는 컴퓨팅 환경(111), I/O 스택(117) 등에 의해 제공되는 인터페이스를 사용하여 I/O 요청들(116)을 모니터링할 수 있다. 따라서, 에이전트(133)는 하나 이상의 I/O 모니터들, 파일 필터 드라이버들, 볼륨 필터 드라이버들, SCSI 필터 드라이버들, 및/또는 다른 적절한 모니터링 및/또는 필터링 모듈들을 포함할 수 있다.
CMS(220)는 캐시 정책 모듈(601)을 포함할 수 있으며, 이 캐시 정책 모듈(601)은 무엇보다도, 캐시 승인 기준들, 캐시 퇴거 기준들 등을 정의할 수 있다. 따라서, 캐시 정책 모듈(601)은 본원에 설명되는 바와 같이 클럭 스윕 모듈, 스틸 캔디데이트 모듈, 캐시 태그 보유 모듈 및/또는 캐시 태그 스냅샷 모듈을 포함할 수 있다. CMS(220)는 캐시 액세스 메타데이터, 승인 기준들(예를 들어, 파일 선택 기준들) 등에 기반하여 캐시 승인 및/또는 퇴거 결정들을 행하는데 캐시 정책 모듈(601)을 사용할 수 있다.
일부 실시예들에서, 캐시 정책 모듈(601)은 I/O 요청들(116)에 대한 존속 레벨을 결정하고/하거나 할당하도록 더 구성될 수 있다. I/O 요청의 존속 레벨은 무엇보다도, 저장 리소스(240A)로 승인되는 데이터에 대해 캐시 모드 및/또는 구성을 결정할 수 있다. 따라서, 캐시 정책 모듈(601)은 본원에 설명되는 바와 같이 I/O 요청 데이터의 존속 레벨을 결정하도록 구성되는 존속 레벨 모듈(734)을 포함할 수 있다. 일부 실시예들에서, I/O 요청(116)에 대한 존속 레벨을 결정하고/하거나 할당하는 것은 존속 레벨 기준들을 I/O 요청(116)의 하나 이상의 특성들에 적용하는 것을 포함할 수 있으며, 이 I/O 요청(116)의 하나 이상의 특성들은 파일 이름, 경로, 디렉토리, 볼륨 등과 같은 파일 레벨 기준들을 포함할 수 있다. 도 7b는 존속 레벨 정책(735)의 일 실시예를 도시한다. 도 7b에 도시되는 바와 같이, 존속 레벨 기준들(737)은 I/O 요청들(116)의 파일 관련 특성들과 관련된다. 존속 레벨 정책(735)은 특정 파일 이름들(예를 들어, "pagefile.sys"), 파일 경로들 및/또는 볼륨들을 각각의 존속 레벨들(739)에 매핑할 수 있다. "pagefile.sys" 및/또는 "로컬 캐시" 데이터와 같은 임시의, 1회성 데이터에 관한 파일들은 일시적 (라이트-네버) 캐시 모드를 지정하는 존속 레벨(739)이 할당될 수 있다. 존속 레벨(739)의 다른 가능한 특성들은 이러한 실시예들의 상세들을 모호하게 하는 것을 회피하기 위해 생략된다.
존속 레벨 정책(735)은 다른 타입들의 존속 레벨들을 지정할 수 있다. 예를 들어, 중요한 파일들의 데이터는 라이트-스루 캐싱 모드를 나타내는 존속 레벨(739)에 저장될 수 있다. 존속 레벨(739)은 데이터가 (예를 들어, 특정 RAID 레벨, 미러링 구성 등으로) 하나 이상의 리던던트 저장 리소스들(240B 내지 240N)에 저장되게 될 것을 추가로 표시할 수 있다. 이에 응하여, CMS(220)는 "\\애플리케이션\임계 데이터" 파일-선택 기준들을 만족시키는 파일들에 관한 I/O 요청들(116)의 데이터를 리던던트 주 저장 리소스(240A 내지 240N)에 그리고/또는 상응하는 저장 모드로 라이트-스루하도록 구성될 수 있다. (도 7a에 도시되지 않은) 저장 모듈(130)과 같은 다른 저장 서비스들은 특정 I/O 요청(116)이 CMS(220)에 의해 서비스되는지 여부에 관계 없이 거기에 지정되는 존속 레벨(들)에 따라 데이터를 저장하도록 존속 레벨 정책(735)을 레버리징할 수 있다.
존속 레벨 정책(735)은 파일 관련 특성들에 더하여 그리고/또는 이것들을 대신하여 다른 I/O 요청 특성들을 포함할 수 있다. 예를 들어, 존속 레벨 정책(735)은 임시의, 불필요한 기록 작동들을 이용하는 것으로 알려진 애플리케이션들을 식별하고/하거나 지정할 수 있어, 그러한 애플리케이션들의 I/O 요청들(116)이 일시적 캐시 구성을 포함하는 존속 레벨(739)에 따라 캐싱된다. 예를 들어, 존속 레벨 기준들(737)은 Word® 애플리케이션에서 비롯되고 로컬 캐시에서의 파일들로 지향되는 I/O 요청들(116)이 일시적 존속 레벨(739)로 서비스되어야 함을 지시할 수 있다. 존속 레벨 정책(735)은 디폴트인 라이트-스루 캐시 모드 존속 레벨(739)과 같은 디폴트 및/또는 와일드카드 기준들을 더 포함할 수 있다.
CMS(220)는 작동 환경(711)의 기존 캐시 관리자(709)를 투명하게 확장시키도록 구성될 수 있다. 따라서, CMS(220) 및/또는 에이전트(133)는 비페이징 I/O 요청들, 페이징 I/O 요청들, 직접적 I/O 요청들 등을 포함하지만, 이에 제한되지 않는 상이한 I/O 요청 타입들을 구별하도록 구성될 수 있다. CMS(220) 및/또는 에이전트(133)는 주 저장 리소스들(240B 내지 240N)에 직접 액세스하는 것으로 예상되는 직접적 I/O 요청들 및/또는 기존 캐시 관리자(709)에 관한 비페이징 I/O 요청들과 같은 일정 타입들의 I/O 요청들(116)을 무시하도록 구성될 수 있다.
본원에 개시되는 바와 같이, 존속 레벨 모듈(134)은 I/O 요청(116)의 타겟 및/또는 소스(예를 들어, 파일 이름)에 적어도 부분적으로 기반하여 존속 레벨을 I/O 요청(116)에 할당한다. 일부 실시예들에서, CMS(220)는 I/O 요청 메타데이터(733)를 유지할 수 있으며, 이 I/O 요청 메타데이터(733)는 I/O 요청들(116)의 소스 식별자(예를 들어, 파일 이름, 경로 등), I/O 요청들(116)의 존속 레벨 등을 포함할 수 있지만, 이에 제한되지 않는다. 에이전트(133)는 파일 열기, 판독, 카피, 삭제, 생성, 절단, 변경, 기록 등과 같은 파일 작동에 관한 초기 I/O 요청(116)을 검출하는 것에 응하여 콘텍스트 메타데이터(733)를 생성할 수 있다. 에이전트(133)는 I/O 요청(116)(및 후속의 관련된 I/O 요청들(116))을 파일 식별자, 파일 이름, 볼륨 식별자, 디스크 식별자 등과 같은 상응하는 소스 식별자와 연관시키는데 I/O 요청 메타데이터(예를 들어, 콘텍스트)(733)를 사용할 수 있다. 일부 실시예들에서, 에이전트(133)는 특정 파일(및/또는 상응하는 I/O 요청)이 캐시 가능한지 여부(캐시로 승인되어야 할 데이터와 관련되는지 여부)의 표시 그리고/또는 I/O 요청(116)의 존속 레벨을 포함할 수 있다. CMS(220)는 캐시 승인 기준들 및/또는 존속 레벨 정책(735)을 재적용하지 않고 후속 I/O 요청들(116)이 캐싱되어야 할지 여부를 판단하고/하거나 I/O 요청들(116)의 존속 레벨을 결정하기 위해 I/O 요청 메타데이터(733)에 액세스할 수 있다. I/O 요청 메타데이터(733)는 I/O 요청(116)의 콘텍스트 데이터를 포함할 수 있고/있거나 별도의 데이터구조체에서 유지될 수 있다. I/O 요청 메타데이터(733)는 임의의 적절한 데이터구조체(예를 들어, 테이블, 해시 테이블, 맵 또는 트리)에 저장될 수 있고, 소스 식별자, 파일 이름 등에 의해 인덱싱될 수 있다.
일 예에서, 저장 클라이언트(106A 내지 106N)는 복수의 파일들을 개방할 수 있어, 상응하는 파일 개방 I/O 요청들(116)을 야기한다. 에이전트(133)는 I/O 요청들(116)을 상응하는 I/O 요청 메타데이터(733)와 연관시킬 수 있으며, 이 상응하는 I/O 요청 메타데이터(733)는 파일의 소스 식별자, 파일이 캐시로 승인되어야 할지 여부의 표시, I/O 요청들(116)의 존속 레벨 등을 포함할 수 있다. 저장 클라이언트(106A 내지 106N)는 파일들 상에서 I/O 작동들을 수행할 수 있으며, 이는 기존 캐시 관리자(709)를 사용하여 서비스될 수 있고, 이는 에이전트(133)에 의해 무시될 수 있다. 컴퓨팅 환경(111)의 캐시 정책에 따라, 기존 캐시 관리자(709)는 플러싱될 수 있어, 하나 이상의 페이징 I/O 요청들(116)을 야기하며, 이 하나 이상의 페이징 I/O 요청들(116)은 에이전트(133)에 의해 검출될 수 있다. 이에 응하여, 에이전트(133)는 요청들의 소스 식별자(들)을 결정하고, I/O 요청들(116)이 캐시로 승인될 데이터와 관련되는지 여부를 판단하고, I/O 요청들(116)의 존속 레벨을 결정하는 등을 하도록 페이징 I/O 요청들(116)의 I/O 요청 메타데이터(예를 들어, 콘텍스트)(733)에 액세스할 수 있다. 캐시로 승인될 데이터와 관련되는 I/O 요청들(116)은 본원에 설명되는 바와 같이 할당된 존속 레벨에 따라 CMS(220)를 사용하여 서비스될 수 있다.
앞서 개시된 바와 같이, I/O 요청들(116)의 존속 레벨은 존속 레벨 기준들(737)과 같은 존속 레벨 정책(735) 상에서 예측될 수 있다. 존속 레벨 정책(735)은 사용자(또는 프로파일링 프로세스 등과 같은 다른 엔티티)에 의해 구성 가능할 수 있다. CMS(220)는 구성 인터페이스(740)를 포함할 수 있으며, 이 구성 인터페이스(740)를 통해 존속 레벨 정책(735) 및/또는 존속 레벨 기준들(737)이 지정될 수 있다.
일부 실시예들에서, CMS(220)는 작동 동안 캐시 태그(221)의 존속 레벨을 변경하도록 구성될 수 있다. 예를 들어, CMS(220)는 일시적 캐시 구성으로 저장되는 데이터를 주 저장 리소스(240B 내지 240N)로 "플러싱"하도록 구성될 수 있다. 본원에 사용되는 바에 따른, 일시적 캐시 데이터를 플러싱하는 것은 일시적 캐시 데이터를 주 저장 리소스(240B 내지 240N)에 저장하는 것 그리고/또는 캐시로부터 데이터를 퇴거시키는 것을 포함한다. 일시적 캐시 데이터는 일정 타입들의 I/O 요청들(116)(예를 들어, 트렁케이트(truncate), 트랜잭션형 등과 같은 처리되지 않은 I/O 요청들(116))에 관한 I/O 요청(116)에 응하여 퇴거될 수 있다. 그러한 I/O 요청(116)에 응하여, CMS(220)는 일시적 캐시 데이터를 주 저장 리소스(들)(240B 내지 240N)로 플러싱하고, 작동 환경(711)이 I/O 요청(116)을 서비스하는 것을 가능하게 하고, (일시적 캐시 모드 및/또는 구성으로) 데이터를 캐시로 재승인하도록 구성될 수 있다.
CMS(220)는 또한 일시적 캐시 데이터에 관한 I/O 충돌들을 관리하도록 구성될 수 있다. 일부 실시예들에서, CMS(220)는 캐시 태그(221)를 무효화함으로써 I/O 충돌들(예를 들어, 캐시 태그(221)에의 액세스에 대한 동시 발생 요청들)을 처리하며, 이는 캐시로부터 데이터를 퇴거시키는 것을 포함할 수 있다. CMS(220)는 일시적 캐시 데이터를 상이하게 처리할 수 있다. 일시적 캐시 데이터가 캐시 내에서만 저장되므로 (그리고 일시적 캐시 데이터를 플러싱하는 것이 주 저장 리소스들(240B 내지 240N)에의 고레이턴시 액세스를 요구하므로), CMS(220)는 일시적 캐시 태그(221)를 무효화하는 것보다 오히려 충돌하는 요청들을 스케줄링하고/하거나 지연시키도록 구성될 수 있다.
I/O 스택(117)에서의 I/O 요청들에 따라 데이터를 캐싱하는 시스템들 및 방법들의 추가의 실시예들이 "파일 레벨 캐시를 위한 시스템들 및 방법들"이라는 명칭으로 2012년 8월 25일자로 출원된 미국 특허 출원 일련번호 제 13/287,998호, 및 "멀티레벨 캐시를 위한 시스템들 및 방법들"이라는 명칭으로 2012년 8월 25일자로 출원된 미국 특허 출원 일련번호 제 13/288,005호에 개시되며, 이 둘 모두는 참조로 본원에 포함된다.
도 7c는 CMS(220)의 다른 실시예를 도시한다. 상술한 바와 같이, 일시적 캐시 모드에서 기록 I/O 요청(116)을 서비스하는 것은 데이터를 주 저장 리소스(240B 내지 240N)(예를 들어, 보조 기억 장치)에 기록하지 않고 데이터를 캐시 저장 리소스(240A)에 기록하는 것을 포함할 수 있다. 따라서, 일시적 캐시 작동들은 작동 환경(711)의 I/O 스택(117)의 외측에 있는 "고속 경로"(782)에서 그리고 보다 저속의 주 저장 리소스들(240B 내지 240N) 상에서의 작동들을 포함하지 않고 배타적으로 구현될 수 있다. 본원에 사용되는 바에 따른, "고속 경로" 작동은 작동 환경(711)의 I/O 스택(117)의 외측에서 그리고/또는 저속 주 저장 리소스들(240B 내지 240N)을 포함하지 않고 발생되는 I/O 작동을 지칭한다. "저속 경로" 작동은 I/O 스택(117)의 하나 이상의 층들을 포함하고/하거나 하나 이상의 주 저장 리소스들(240B 내지 240N)에 대하여 수행되는 I/O 작동을 지칭한다.
비일시적 캐시 모드(예를 들어, 캐시 정책 모듈(601) 및/또는 존속 레벨 모듈(734)에 의해 결정되는 라이트-스루 및/또는 라이트-백 캐시 모드)에 저장되는 데이터는 캐시 저장 리소스(240A) 및/또는 하나 이상의 주 저장 리소스들(240B 내지 240N) 둘 다에서 데이터를 저장하는 것을 포함할 수 있다. 비일시적 캐시 모드 I/O 요청(116)에 응하여, 캐시 실행 모듈(636)은 캐시 저장 리소스(240A)에 데이터를 저장하는 고속 경로 작동(782) 및 하나 이상의 주 저장 리소스들(240B 내지 240N)에 데이터를 저장하는 저속 경로 작동(784)으로 요청을 "분기"(780)시키도록 구성될 수 있다. 본원에 사용되는 바에 따른, "분기"는 2개 이상의 별도의 프로세싱 작동들(예를 들어, 2개 이상의 프로세싱 스레드들)을 호출하는 것을 지칭한다. CMS(220)는 저속 경로 작동(784)이 완료될 때까지, I/O 요청(116)의 완료를 확인하지 않을 수 있다. 따라서, 저속 경로(784)는 비일시적 I/O 요청들(116)을 서비스하는 "임계 경로"를 결정할 수 있다. 본원에 사용되는 바에 따른, "임계 경로"는 프로세싱 작동들(예를 들어, 프로세싱 단계들 및/또는 경로)에 대한 타이밍 및/또는 레이턴시를 결정하는 프로세싱 경로를 지칭한다. 비일시적 I/O 요청들(116)을 서비스하는 임계 경로는, 상응하는 데이터가 하나 이상의 주 저장 리소스들(240B 내지 240N) 상에 저장될 때까지, 그러한 I/O 요청들(116)의 완료가 확인되지 않으므로, 저속 경로(784)를 포함할 수 있다.
그에 반해서, 캐시 실행 모듈(636)은 I/O 스택(117) 및/또는 주 저장 리소스들(240B 내지 240N) 내에서의 저속 경로(784) 작동들을 포함하지 않고 고속 경로(782)에서 배타적으로 (캐시 정책 모듈(601) 및/또는 존속 레벨 모듈(734)에 의해 결정되는) 일시적 데이터에 관한 기록 I/O 요청들(116)을 서비스하도록 구성될 수 있다. 게다가, 일시적 캐시 데이터를 기록하라는 I/O 요청(116)을 서비스하는 것은, 어떤 별도의 저속 경로(784) 프로세싱도 요구되지 않으므로, 분기(780)가 필요하지 않을 수 있다. CMS(220)는 고속 경로 작동(782)의 완료에 응하여, 그리고 저속 경로(784) 작동들이 완료되는 것을 대기하지 않고 일시적 I/O 요청들(116)의 완료를 확인할 수 있다. 그러므로, 일시적 I/O 요청들(116)은 I/O 요청들(116)을 서비스하는 임계 경로를 감소시키고 I/O 스택(117) 및/또는 주 저장 리소스들(240B 내지 240N) 상의 부하를 감소시킬 수 있다.
도 8a는 존속의 순응적 레벨들에 따라 데이터를 캐싱하는 것에 대한 일 실시예의 흐름도이다. 방법(800)은 본원에 개시되는 바와 같이 시작하고 초기화될 수 있다. 단계(810)는 저장 모듈(130) 및/또는 CMS(220)에서 I/O 요청(116)을 수신하는 것을 포함할 수 있다. 단계(810)는 본원에 개시되는 바와 같이 저장 클라이언트(106A 내지 106N)로부터 (예를 들어, I/O 인터페이스(131)를 통하여) 직접 I/O 요청(116)을 수신하는 것 및/또는 I/O 스택(117) (또는 다른 I/O 인프라스트럭처) 내에서 I/O 요청들을 검출하고/하거나 모니터링하는 것을 포함할 수 있다. 단계(810)는 본원에 설명되는 바와 같이 I/O 요청(116)과 연관되는 콘텍스트 및/또는 식별자(예를 들어, 파일 식별자)에 액세스하는 단계를 더 포함할 수 있다.
단계(820)는 가상 기계 캐시(213)와 같은 캐시로 I/O 요청(116)의 데이터를 승인할지 여부를 판단하는 것을 포함할 수 있다. 그러나, 본 발명은 가상 컴퓨팅 환경들에 제한되지 않고, 베어 메탈 환경들 및/또는 비가상화된 캐시 리소스들에 적용될 수 있다. 단계(820)는 I/O 요청(116)의 데이터가 이미 승인되었는지 여부를 판단하는 것을 포함할 수 있다; 그렇다면, I/O 요청(116)은 I/O 요청(116)과 연관되는 존속 메타데이터(예를 들어, I/O 요청(116)의 캐시 태그(221)에서 표시된 I/O 요청(116)의 앞서 결정된 존속 레벨 및/또는 캐시 모드)에 따라 서비스될 수 있다. I/O 요청(116)의 데이터가 (캐시 정책 및/또는 이용 가능성에 대하여) 승인되면, 흐름은 단계(830)로 계속된다.
단계(830)는 순응적 존속 레벨을 I/O 요청(116)에 할당하는 것을 포함할 수 있으며, 이는 I/O 요청(116)에 대한 캐시 모드(예를 들어, 일시적, 라이트-스루, 라이트-백 등)를 선택하는 것을 포함할 수 있다. 존속 레벨을 할당하는 것은 상술한 바와 같이 I/O 요청(116)이 임시의 그리고/또는 불필요한 데이터와 관련되는지 여부를 판단하는 것을 포함할 수 있다. 따라서, 단계(830)는 I/O 요청(116)에 관한 파일 레벨 지식을 존속 레벨 기준들과 비교하는 것을 포함할 수 있다. 예를 들어, I/O 요청(116)이 교체 파일, 임시 파일, 로컬 캐시 파일 등과 관련된다면, I/O 요청(116)은 일시적 캐시 모드가 할당될 수 있다. 대안적으로, I/O 요청(116)이 영구적 데이터와 관련된다면, I/O 요청(116)은 라이트-스루 캐시 모드 (또는 라이트-백과 같은 다른 캐시 모드)가 할당될 수 있다. 단계(830)는 단계(830)에서 결정되는 존속 레벨 및/또는 캐시 모드를 표시하기 위해 I/O 요청(116)과 연관되는 캐시 태그(221)를 업데이트하는 것(예를 들어, 캐시 태그(221)의 존속 메타데이터를 업데이트하는 것)을 더 포함할 수 있다. 단계(830)에서 결정되는 존속 레벨이 일시적 캐시 모드를 표시한다면, 흐름은 단계(840)로 계속되며; 그렇지 않으면, 흐름은 단계(850)로 계속된다.
단계(840)는 일시적 캐시 모드에서 I/O 요청(116)의 데이터를 캐시로 승인하는 것을 포함할 수 있다. 단계(840)는 I/O 요청(116)의 데이터를 캐시(예를 들어, 가상 기계 캐시(213))에 저장하지만, 데이터를 주 저장 리소스(240B 내지 240N)에 저장하지 않는 것을 포함할 수 있다. 따라서, 단계(840)는 데이터를 캐시(216)에 배타적으로 저장하는 것을 포함할 수 있다. 가상화된 환경들에서, 단계(840)는 데이터가 일시적 캐시 모드로 캐싱되고 있는 가상 기계 캐시(213)에 표시를 제공하는 것을 더 포함할 수 있다. 후술되는 바와 같이, 가상 기계 캐시(213)는 가상 기계(208A 내지 208N)가 다른 호스트로 이동한 후에 캐시 데이터를 보유할지 여부(그리고/또는 캐시 데이터를 얼마나 오래 보유할지)를 판단하는데 캐시 모드 메타데이터를 사용할 수 있다. 가상 기계 캐시(213)가 일시적 캐시 데이터에 대한 유일한 소스일 수 있으므로, 데이터가 가상 기계(208A 내지 208N)의 새로운 호스트로 전송될 때까지, 가상 기계 캐시(213)는 일시적 캐시 데이터를 보유하도록 구성될 수 있다.
단계(850)는 단계(830)에서 결정되는 존속 레벨에 따라 I/O 요청(116)의 데이터를 승인하는 것을 포함할 수 있으며, 이는 데이터를 공유 가상 기계 캐시(213)(또는 다른 캐시)에 저장하는 단계, 데이터를 하나 이상의 주 저장 리소스들(240B 내지 240N)에 라이트-스루하고/하거나 라이트-백하는 것 등을 포함할 수 있다.
도 8b는 존속의 순응적 레벨들에 따라 데이터를 캐싱하는 것에 대한 다른 실시예의 흐름도이다. 방법(801)은 본원에 개시되는 바와 같이 시작하고 초기화될 수 있다. 단계(811)는 저장 모듈(130) 및/또는 CMS(220)에서 데이터를 기록하라는 I/O 요청(116)을 수신하는 것을 포함할 수 있다. 단계(811)는 본원에 개시되는 바와 같이 저장 클라이언트(106A 내지 106N)로부터 (예를 들어, I/O 인터페이스(131)를 통하여) 직접 I/O 요청(116)을 수신하는 것 및/또는 I/O 스택(117) (또는 다른 I/O 인프라스트럭처) 내에서 I/O 요청들(116)을 검출하고/하거나 모니터링하는 것을 포함할 수 있다. 단계(811)는 I/O 요청(116)이 캐시(예를 들어, 캐시 저장 리소스(240A) 및/또는 가상 기계 캐시(213))로 승인되었던 데이터와 관련된다고 판단하는 것을 더 포함할 수 있다.
단계(831)는 I/O 요청(116)과 연관되는 존속 레벨을 결정하는 것을 포함할 수 있으며, 이는 본원에 설명되는 바와 같이 I/O 요청(116)의 캐시 모드를 결정할 수 있다. 캐시 모드가 일시적 캐시 모드를 포함한다면, 흐름은 단계(841)로 계속되며; 그렇지 않으면, 흐름은 단계(851)로 계속된다.
단계(841)는 일시적 캐시 모드로 I/O 요청(116)을 서비스하는 것을 포함할 수 있다. 따라서, 단계(841)는 주 저장 리소스들(240B 내지 240N) 및/또는 I/O 스택(117)의 다른 층들에의 액세스를 포함하지 않는 하나 이상의 고속 경로 작동들(782)에서 I/O 요청(116)을 서비스하는 것을 포함할 수 있다. 단계(843)는 하나 이상의 고속 경로 작동(들)(782)의 완료에 응하여 I/O 요청(116)의 완료를 확인하는 것을 포함할 수 있다. 따라서, I/O 요청(116)을 서비스하는 임계 경로는 고속 경로 작동(들)(782)만을 포함하고 저속 경로 작동(들)(784)에 대한 분기(780)를 배제한다.
단계(851)는 라이트-스루 캐시 모드와 같은 다른 비일시적 캐시 모드에 따라 I/O 요청(116)을 서비스하는 것을 포함할 수 있다. 단계(851)는 하나 이상의 저속 경로 작동들(784) 및 하나 이상의 고속 경로 작동들(782)에서 I/O 요청(116)을 서비스하는 것(예를 들어, I/O 작동들을 분기(780)시키는 것)을 포함할 수 있다. 하나 이상의 저속 경로(784) 작동들은 하나 이상의 주 저장 리소스들(240B 내지 240N) 상의 작동들을 포함할 수 있고/있거나 I/O 스택(117)의 하나 이상의 층들을 포함할 수 있다. 단계(853)는 하나 이상의 저속 경로 작동들(784)의 완료에 응하여 I/O 요청(116)의 완료를 확인하는 것을 포함할 수 있다.
앞서 개시된 바와 같이, CMS(220)는 캐시 태그들(221)을 유지하도록 구성될 수 있으며, 이 캐시 태그들(221)은 캐시 승인 정책들, 캐시 보유 및/또는 퇴거 정책들(예를 들어, 캐시 에이징 메타데이터, 캐시 스틸 메타데이터, LRU, "활성" 및/또는 "불활성" 등), 캐시 프로파일링 정보, 파일 및/또는 애플리케이션 레벨 지식 등과 같은 하나 이상의 캐시 정책들의 애플리케이션에 대하여 캐시의 최적의 작업 세트를 나타낼 수 있다. 따라서, 작업 세트는 일정 작동 조건들 하에서 가상 기계(208A 내지 208N)에 최적의 I/O 성능을 제공하는 캐시 데이터의 세트를 나타낼 수 있다. 작업 세트는 개발하고/하거나 개선하는데 상당한 시간이 걸릴 수 있다.
CMS(220)는 (예를 들어, VMotionTM 작동으로) 가상 기계(208A 내지 208N)를 다른 호스트(202)로 재위치시키는 것, 전송하는 것 및/또는 이주시키는 것에 응하여 캐시 태그들(221)을 보유하도록 구성될 수 있다. 캐시 태그들(221)을 보유하는 것은 가상 기계(208A 내지 208N)의 메모리에서 캐시 태그들(221)을 유지하는 것 및/또는 재할당 동안 캐시 태그들(221)을 무효화하지 않는 것을 포함할 수 있다. 캐시 태그들(221)을 보유하는 것은 새로운 호스트(202)의 캐시 제공자 모듈(214)로부터 캐시 스토리지를 요청하는 것 및/또는 새로운 호스트(202) 상에 상이한 양의 캐시 스토리지가 할당된 것에 응하여 캐시 태그들(221)을 선택적으로 부가하는 것 및/또는 제거하는 것을 더 포함할 수 있다. 일부 실시예들에서, CMS(220)는 캐시 태그들(221)에 의해 참조되는 캐시 데이터가 새로운 호스트(202)의 캐시(216)에 존재하지 않는다는 사실에도 불구하고 캐시 태그들(221)을 보유할 수 있다. 후술되는 바와 같이, 가상 기계 캐시(213)는 (예를 들어, 네트워크 전송을 통하여) 가상 기계(208A 내지 208N)의 이전 호스트(202)로부터의 그리고/또는 주 스토리지로부터의 캐시 데이터를 캐시(216)에 상주시키도록 구성될 수 있다. 일시적 캐시 데이터와 같은 일정 캐시 데이터는 이전 호스트(202)로부터만 이용 가능할 수 있다.
가상 기계(208A 내지 208N)를 이주시키는 것은 새로운 호스트 상에 캐시 리소스들을 재할당하는 것, 캐시를 재상주시키는 것 등을 포함할 수 있다. 캐시 데이터는 가상 기계(208A 내지 208N)의 이전 호스트(202) 및/또는 주 스토리지로부터 전송될 수 있다. 그러나, 일시적 캐시 데이터와 같은 일정 타입들의 캐시 데이터는 이전 호스트(202A)의 가상 기계 캐시(213) 상에서만 이용 가능할 수 있으며; 캐시 데이터가 주 스토리지에 라이트-스루 및/또는 라이트-백되지 않으므로, 데이터는 캐시(213)에서만 존재한다. 본원에 설명되는 바와 같이, 가상 기계 캐시(213)는 호스트들(202) 사이에서 캐시 데이터를 전송하도록 구성될 수 있어, 일시적 캐시 데이터가 손실되지 않는다. 대안적으로, 또는 부가적으로, 가상 기계(208A 내지 208N)의 CMS(220)는 새로운 호스트(202)로 전송되고/되거나 이주되기 전에 일시적 캐시 데이터를 플러싱하도록 구성될 수 있으며, 이는 캐시 데이터가 이전 호스트(202)로부터 제거되는 (그리고/또는 이전 호스트가 고장 상태를 겪는) 경우에 데이터 손실을 피할 수 있다.
도 9는 가상 컴퓨팅 환경(900)의 다른 실시예의 블록도이다. 가상 컴퓨팅 환경(900)은 다수의 호스트들(202A 내지 202N)을 포함하며, 이 다수의 호스트들(202A 내지 202N) 각각은 가상화 커널(210) 및 하나 이상의 가상 기계들을 포함할 수 있다. 도 2에 도시되지 않지만, 각각의 가상 기계는 본원에 설명되는 바와 같이 각각의 CMS(220)를 포함할 수 있다. 각각의 호스트(202A 내지 202N)는 캐시 제공자 모듈(214) 및 캐시(216)를 포함하는 각각의 가상 기계 캐시(213A 내지 213N)를 더 포함할 수 있다. 도 9가 3개의 호스트 시스템(202A 내지 202N)을 도시하지만, 본 발명은 이 점에서 제한되지 않고 임의의 수의 호스트들(202A 내지 202N)을 포함할 수 있다.
가상화된 환경(900)은 주 저장 시스템(242)을 포함할 수 있으며, 이 주 저장 시스템(242)은 호스트들(202A 내지 202N) 및/또는 가상 기계들(208) 중에서 공유될 수 있다. 주 저장 시스템(242)은 하나 이상의 자기 디스크들(예를 들어, 하드 드라이브들), 저가 디스크의 리던던트 배열(RAID), 스토리지 영역 네트워크(SAN) 등을 포함하지만, 이에 제한되지 않는 임의의 적절한 존속 저장 디바이스 및/또는 저장 시스템을 포함할 수 있다. 호스트들(202A 내지 202N)은 네트워크(105)를 통하여 주 저장 시스템에 액세스하도록 구성될 수 있다.
일부 실시예들에서, 각각의 가상 기계(208)는 각각의 VMID가 할당될 수 있다. VMID는 가상 기계(208)가 (예를 들어, 상술된 핸드쉐이크 프로토콜(handshake protocol) 동안) 호스트(202A 내지 202N) 상에서 예시될 때(예를 들어, 로딩될 때), 할당될 수 있다. VMID는 프로세스 식별자, 스레드 식별자 또는 임의의 다른 적절한 식별자를 포함할 수 있다. 일부 실시예들에서, VMID는 특정 호스트(202A 내지 202N) 상에서 그리고/또는 호스트들(202A 내지 202N)의 그룹 내에서 가상 기계(208)를 고유하게 식별할 수 있다. 예를 들어, 호스트들(202A 내지 202N)은 클러스터와 같은 동일 이름공간 내에서 작동할 수 있고, 각각의 가상 기계(208)의 VMID는 클러스터의 이름공간 내에서 고유할(클러스터에서의 호스트들(202A 내지 202N) 상에 배치되는 가상 기계들(208A 내지 208N)에 걸쳐 고유할) 수 있다. 일부 실시예들에서, VMID는 매체 액세스 제어(MAC) 어드레스, 네트워크 어드레스, 구별된 이름 등과 같은 호스트 식별자를 포함할 수 있다. 따라서, 일부 실시예들에서, VMID는 특정 이름공간에서 가상 기계(208)를 고유하게 식별할 수 있고, 가상 기계(208)가 현재 배치되는 (또는 앞서 배치되었던) 호스트(202A 내지 202N)를 식별할 수 있다. 대안적으로, 또는 부가적으로, 각각의 가상 기계(208)는 현재 호스트 식별자 및 이전 호스트 식별자를 유지하도록 구성될 수 있다.
일부 실시예들에서, 가상 기계들(208A 내지 208N) 중 하나 이상은 호스트들(202A 내지 202N) 사이에서 재위치되고/되거나 전송되는 것이 가능할 수 있다. 예를 들어, 가상 기계(208X)는 (예를 들어, VMotionTM 또는 유사 작동에서) 호스트(202A)로부터 호스트(202B)로 이주될 수 있다. 일부 실시예들에서, 가상 기계(208X)의 CMS(220)는 전송 및/또는 이주 작동을 검출하도록 구성될 수 있고, 이에 응하여, 일시적 캐시 데이터를 주 저장 시스템(242)에 플러싱하는 것을 시도할 수 있다. 상술한 바와 같이, 일시적 캐시 데이터를 플러싱하는 것은 일시적 캐시 데이터가 이전 호스트(202A)로부터 이용 가능하지 않은 경우에 데이터 손실을 방지할 수 있다. 대안적으로, CMS(220)는 "이주 스톰들"을 피하기 위해(예를 들어, 주 스토리지(242) 시스템 및/또는 네트워크(105)의 I/O 인프라스트럭처를 오버로딩하는 것을 피하기 위해) 일시적 캐시 데이터의 존속 레벨을 유지하도록 구성될 수 있다.
가상 기계 캐시(213B)는 전송된 가상 기계(208X)의 CMS(220)로부터 요청을 수신하는 것에 응하여 전송을 식별하도록 구성될 수 있다. 요청은 전송된 가상 기계(208X)의 VMID를 포함할 수 있으며, 이 전송된 가상 기계(208X)의 VMID로부터 가상 기계 캐시(213B)는 가상 기계(208X)가 호스트(208B)에는 "새로운 것"이라고(예를 들어, VMID를 포함하는 요청들이 이전에 수신되지 않았었다고) 판단할 수 있다. 이에 응하여, 가상 기계 캐시(213B)는 가상 기계(208X)로 핸드쉐이크 프로토콜을 개시할 수 있다. 가상 기계 캐시(213B)는 가상 기계(208X)에 의해 유지되는 VMID의 호스트 식별자 및/또는 호스트 식별자(들)에 적어도 부분적으로 기반하여 가상 기계(208X)가 호스트(208B)로 전송되었다고 판단할 수 있다. 가상 기계(208X)의 호스트 식별자는 호스트(202A)를 참조할 수 있는데 반해, 새롭게 파워 온된 가상 기계(208)의 호스트 식별자는 호스트(202B)를 참조할 수 있다(또는 비어 있을 수 있다). 대안적으로, 또는 부가적으로, 가상 기계(208X)는 별도의 호스트 식별자를 포함할 수 있으며, 이 별도의 호스트 식별자는 호스트(202A)를 참조할 수 있고, 가상 기계 캐시(213B)로 핸드쉐이크 프로토콜에서 액세스될 수 있다.
캐시 제공자 모듈(214)은 캐시(216B)에서 가상 기계(208X)에 대한 스토리지를 할당하도록 구성될 수 있다. 캐시 제공자 모듈(214)은 이전 호스트(호스트(202A)) 상에서 가상 기계(208X)에 할당되는 캐시 스토리지의 크기에 적어도 부분적으로 기반하여 얼마나 많은 캐시 스토리지를 제공할지를 판단하도록 구성될 수 있다. 앞서 개시된 바와 같이, 가상 기계(208X)의 CMS(220)는 호스트(202B)로의 전송 후에 캐시의 작업 세트를 보유하도록(예를 들어, 캐시 태그들(221)을 보유하도록) 구성될 수 있다. 캐시 제공자 모듈(214B)은 보유된 캐시 태그들(221)을 지원하기 위해 캐시(216B)에 충분한 캐시 스토리지를 할당하는 것을 시도할 수 있다. 충분한 캐시 스토리지가 할당될 수 없다면, CMS(220)는 호스트(202B) 상의 새로운 캐시 스토리지 할당량에 따라 보유된 캐시 태그들을 선택적으로 제거하도록 구성될 수 있다. 대안적으로, 초과 캐시 스토리지가 이용 가능하다면, CMS(220)는 새로운 태그들을 보유된 캐시 태그들(221)에 부가하도록 구성될 수 있다. 할당량은 본원에 설명되는 바와 같이 가상 디스크(229)를 통해 반영될 수 있다.
가상 기계 캐시(213A)는 보유 모듈(928A)을 포함할 수 있으며, 이 보유 모듈(928A)은 가상 기계(208X)가 호스트(202A)로부터 전송된 후에, 가상 기계(208X)의 캐시 데이터를 보유하도록 구성될 수 있다. 캐시 데이터는 보유 기간 동안 그리고/또는 보유된 캐시 데이터가 더 이상 필요하지 않다고 가상 기계 캐시(213A)가 판단할 때까지 보유될 수 있다. 보유 모듈(928A)은 캐시(216A)의 이용 가능성, 캐시(216B)의 이용 가능성, (다른 가상 기계들(208)의 캐시 요건들과 비교하여) 보유된 캐시 데이터의 상대적 중요성, 캐시 데이터가 주 저장 시스템(242)에서 백업되는지 여부, 캐시 데이터의 캐시 모드 및/또는 존속 레벨 등을 포함하지만, 이에 제한되지 않는 다양한 보유 정책 고려 사항들에 기반하여 캐시 데이터를 보유할지 여부를 판단할 (그리고/또는 캐시 데이터 보유 기간을 결정할) 수 있다. 예를 들어, 일시적 캐시 모드로 저장되는 캐시 데이터는 본래의 가상 기계 캐시(213A) 상에서만 이용 가능할 수 있다. 그러므로, 캐시 보유 모듈(928A)은 일시적 캐시 데이터가 새로운 호스트(202B)로 전송될 때까지, 일시적 캐시 데이터의 보유를 우선 순위화하도록 구성될 수 있다. 그에 반해서, 상이한 캐시 모드들(예를 들어, 라이트-스루 및/또는 라이트-백 캐시 모드)로 저장되는 캐시 데이터는 이러한 데이터가 주 저장 시스템(242)으로부터 이용 가능할 수 있으므로, 더 낮은 보유 우선 순위를 가질 수 있다.
가상 기계(208X)의 CMS(220)는 캐시(216B)가 캐시 태그들(221)이 참조하는 캐시 데이터를 포함하지 않는다는 사실에도 불구하고 캐시의 작업 상태(캐시 태그들(221))를 보유하도록 구성될 수 있다. 이하에 개시되는 바와 같이, 가상 기계 캐시(213B)는 전송된 가상 기계(208X)의 작업 세트를 재구성하기 위해 호스트(202A)의 캐시(216A) 및/또는 주 저장 시스템(242)으로부터 전송되는 캐시 데이터를 캐시(216B)에 상주시키도록 구성될 수 있다.
가상 기계 캐시(213B)는 캐시 전송 모듈(929B)을 포함할 수 있으며, 이 캐시 전송 모듈(929B)은 이전 호스트(202A)에서 저장된 가상 기계(208X)의 캐시 데이터에 액세스하도록 구성될 수 있다. 캐시 전송 모듈(929B)은 VMID의 사용에 의해 그리고/또는 가상 기계(208X)를 인테로게이팅(interrogating)함으로써(예를 들어, 가상 기계(208X)에 의해 유지되는 이전 호스트 식별자에 액세스함으로써) 이전 호스트(202A)를 식별하도록 구성될 수 있다. 캐시 전송 모듈(929B)은 캐시 데이터에 대한 하나 이상의 요청들을 네트워크(105)를 통하여 호스트(202A)의 가상 기계 캐시(213)에 발행하는데 호스트 식별자를 사용할 수 있다. 일부 실시예들에서, 캐시 전송 모듈(929B)은 호스트 식별자로부터 호스트(202A)의 네트워크 어드레스 또는 네트워크 식별자를 결정하고/하거나 이끌어내도록 구성된다.
가상 기계 캐시(213A)는 전송된 가상 기계(208X)의 보유된 캐시 데이터에 액세스를 선택적으로 제공하도록 구성되는 캐시 전송 모듈(929A)을 포함할 수 있다. 일부 실시예들에서, 캐시 전송 모듈(929A)은 보유된 캐시 데이터를 보안하도록 구성된다. 예를 들어, 캐시 전송 모듈(929A)은 요청 엔티티(예를 들어, 가상 기계 캐시(213B))가 전송된 가상 기계(208X)의 캐시 데이터에 액세스하도록 인가되는 것을 검증하도록 구성될 수 있으며, 이는 가상 기계(208X)가 호스트(202B) 상에 배치되는 것을 검증하는 것을 포함할 수 있다. 예를 들어, 캐시 전송 모듈(929A)은 VMID 등과 같은 전송된 가상 기계(208X)와 연관되는 크리덴셜(credential)을 요청할 수 있다. 대안적으로, 또는 부가적으로, 캐시 전송 모듈(929A)은 암호화 검증을 구현할 수 있으며, 이 암호화 검증은 전송된 가상 기계(208X) 등에 의해 생성되는 시그니처를 검증하는 것을 포함할 수 있다.
캐시 전송 모듈(929B)은 하나 이상의 요구 페이징 전송들, 프리페치 전송들 및/또는 벌크 전송들에 의해 캐시 데이터를 전송하도록 구성될 수 있다. 요구 페이징 전송은 (예를 들어, 요구시에) 가상 기계(208X)로부터의 캐시 데이터에 대한 I/O 요청들(116)에 응하여 캐시 데이터를 전송하는 것을 포함할 수 있다. 전송된 데이터는 I/O 요청들(116)을 서비스하는데 사용될 수 있다. 게다가, 전송된 데이터는 새로운 호스트(202B)의 캐시(216B)로 승인될 수 있다. 대안적으로, 전송된 데이터는 캐시 정책에 따라 (전혀 승인되지 않는 것은 아닌) 이후 시간에 승인될 수 있다.
프리페치 전송은 (예를 들어, 근접 등에 의한) 프리페치 캐시 정책 및/또는 캐시 데이터의 존속 레벨에 따라 데이터를 전송하는 것을 포함할 수 있다. 프리페치할 캐시 데이터의 양 및/또는 규모는 무엇보다도, CMS(220)의 캐시 메타데이터(예를 들어, 캐시 에이징 메타데이터, "활성" 등)에 의해 결정될 수 있다. 따라서, 일부 실시예들에서, 캐시 전송 모듈(929B)은 (필요하다면) 프리페치할 캐시 데이터를 식별하기 위해 CMS(220)에 질의하도록 구성될 수 있다.
벌크 전송은 가상 기계(208X)로부터의 저장 요청들과 관계 없이 벌크로 캐시 데이터를 전송하는 것을 포함할 수 있다. 벌크 전송은 가상 기계(208X)에 할당되는 전체 캐시 스토리지를 상주시키는 것을 포함할 수 있다. 대안적으로, 벌크 전송은 캐시의 서브세트를 상주시키는 것을 포함할 수 있으며, 이 캐시의 서브세트는 앞서 개시된 바와 같이 가상 기계 CMS(220)의 캐시 메타데이터에 기반하여 선택될 수 있다.
캐시 전송 모듈(929B)은 캐시 데이터의 존속 레벨에 따라 캐시 전송들(예를 들어, 프리페치 및/또는 벌크 전송들)을 우선 순위화하도록 더 구성될 수 있다. 예를 들어, 일시적 캐시 모드로 캐싱되는 데이터는 이전 호스트(202A)로부터만 이용 가능할 수 있고, 이와 같이, 대안적인 소스들(예를 들어, 주 저장 시스템(242))로부터 이용 가능할 수 있는 다른 캐시 데이터 보다 우선 순위화될 수 있다. 그러므로, 캐시 전송 모듈(929B)은 요구시 페이징을 대기하는 것 및/또는 다른 데이터를 전송하는 것보다 오히려 일시적 캐시 데이터를 프리페치 전송하고/하거나 벌크 전송하도록 구성될 수 있다.
캐시 저장 모듈(931B)은 호스트(202A)의 캐시(216A)로부터 전송되는 (또는 주 저장 시스템(242)과 같은 다른 소스들로부터 획득되는) 캐시 데이터를 캐시(216B)에 저장하도록 구성될 수 있다. 캐시 저장 모듈(931B)은 캐시 제공자 모듈(214B)에 의해 전송된 가상 기계(208X)에 할당되었던 캐시 저장 위치의 캐시 데이터를 저장하도록 구성될 수 있다. 캐시 데이터는 본래의 캐시(216A)에서와 동일한 캐시 저장 위치(예를 들어, 캐시 스토리지와의 동일 오프셋)에서 저장될 수 있어, 보유된 캐시 태그들(221)에서의 참조들은 캐시 제공자 모듈(214)의 맵 모듈(514)에 의해 구현되는 매핑들에 대하여 유효하게 남는다.
캐시 데이터에 대한 요청들에 응하여, 캐시 전송 모듈(929A)은 (맵 모듈(514)의 사용에 의해) 무엇보다도, 전송된 가상 기계(208X)의 VMID를 사용하여 요청된 캐시 데이터를 식별하도록 구성될 수 있다. 캐시 전송 모듈(929A)은 그 다음 (이용 가능하다면) 요청된 캐시 데이터를 네트워크(105)를 통하여 캐시 전송 모듈(929B)에 전송할 수 있다.
캐시 전송 모듈(929B)은 이전 호스트(202A)로부터의 캐시 데이터에 액세스하도록 구성될 수 있다. 일시적 캐시 모드로 캐싱되는 데이터는 이전 호스트(202A)로부터만 액세스 가능할 수 있다. 다른 캐시 모드들로 캐싱되는 데이터는 주 저장 시스템(242)과 같은 다른 소스들 및/또는 데이터의 다른 소스들(예를 들어, 다른 존속 저장 시스템들, 호스트들(202N) 등)로부터 이용 가능할 수 있다. 캐시 전송 모듈(929B)은 다양한 정책 고려 사항들(예를 들어, 캐시 전송 정책)에 기반하여 캐시 데이터의 소스를 선택할 수 있으며, 이 다양한 정책 고려 사항들은 네트워크 정책, 대역폭 정책, 호스트 리소스 정책, 주 저장 리소스 정책 등을 포함할 수 있다. 예를 들어, 네트워크(105)가 매우 혼잡하다고 판단하는 것에 응하여, 캐시 전송 모듈(929B)은 전송할 데이터의 양을 감소시키고/시키거나(벌크 전송을 연기하고/하거나) 네트워크(105)와 별도인 다른 소스로부터의 캐시 데이터를 전송하도록 구성될 수 있다. 마찬가지로, 캐시 전송 모듈(929B)은 주 저장 시스템(242)이 과부하되고/되거나 제한된 이용 가능한 대역폭을 갖는다고 판단하는 것에 응하여 (주 저장 시스템(242)이 아니라) 호스트(202)로 요청들을 보낼 수 있다.
호스트(202A) 상에서 보유되는 캐시 데이터는 호스트(202A) 상에서 작동하는 다른 가상 기계들(208A 내지 208N)에 의해 사용될 수 없는 캐시 리소스들을 나타낼 수 있다. 이와 같이, 캐시 보유 모듈(928A)은 데이터가 더 이상 필요하지 않을 때 그리고/또는 보유 정책에 따라 보유된 캐시 데이터를 선택적으로 제거하도록 구성될 수 있다. 보유 정책은 상술된 보유 정책 요인들에 기반하여 결정될 수 있다. 일부 실시예들에서, 캐시 전송 모듈(929B)은 캐시 보유 모듈(928A)이 캐시(216A)로부터 상응하는 데이터를 제거할 수 있도록 다른 소스들로부터 호스트(202B)로 전송되었던 캐시 데이터를 이전 호스트(202A)에 통지하도록 구성된다. 캐시 전송 모듈(929B)은 또한, 캐시 데이터가 오버라이트되거나, 삭제되거나(예를 들어, 트리밍되거나), 캐시(216B)로부터 퇴거되는 등일 때와 같이 캐시 데이터가 더 이상 보유될 필요가 없는 다른 상태들을 호스트(202A)에 통지하도록 구성될 수 있다. 앞서 개시된 바와 같이, 캐시 보유 모듈(928A)은 캐시 데이터의 존속 레벨에 기반하여 캐시 보유를 우선 순위화하도록 구성될 수 있어, 일시적 캐시 데이터의 보유가 다른 소스들로부터 이용 가능한 캐시 데이터보다 우선 순위화된다.
일부 실시예들에서, 캐시 전송 모듈(929A)은 가상 기계(208X)의 캐시 데이터를 새로운 호스트(202B)로 "푸시"하도록 구성될 수 있다. 캐시 데이터를 푸시하는 것은 캐시 데이터에 대한 요청을 수신하지 않고(캐시 데이터에 대한 요청들과 관계 없이) 가상 기계(208X)의 보유 캐시 데이터를 캐시 전송 모듈(929B)로 전송하는 것을 포함할 수 있다. 캐시 전송 모듈(929A)은 사용자 구성; 상술된 검증 프로세스; 캐시 전송 모듈(929A)에 의한 활성 폴링(polling); 전송된 가상 기계(208X)에 의해 구현되는 콜백(call-back); 등을 통해 새로운 호스트(202B)의 호스트 식별자를 결정할 수 있다. 일부 실시예들에서, 새로운 호스트(202B)의 가상 기계 캐시(213)는 상술한 바와 같이 호스트(202A)로부터 푸시되는 캐시 데이터를 수신하는 것에 응하여 가상 기계(208X)가 호스트(202A)로부터 전송되었던 것을 식별할 수 있다. 캐시 전송 모듈(929A)은 데이터 손실을 방지하기 위해 일시적 캐시 데이터와 같은 높은 우선 순위 캐시 데이터를 선택적으로 푸시하도록 구성될 수 있다.
도 10은 호스트들(202) 사이에서 가상 기계(208)의 캐시 데이터를 전송하고/하거나 이주시키는 방법(1000)의 일 실시예의 흐름도이다. 방법(1000)은 상술한 바와 같이 시작하고 초기화될 수 있다.
단계(1010)는 가상 기계(208X)가 이전 호스트(202A)로부터 새로운 호스트(202B)로 이주하는 것에 응하여 캐시 제공자 모듈(214B)이 캐시 스토리지를 호스트(208B) 상의 가상 기계(208X)에 할당하는 것을 포함할 수 있다. 새로운 호스트(202B) 및 이전 호스트(202A)는 (예를 들어, 네트워크(105)를 통하여) 통신 결합될 수 있다. 상술한 바와 같이, 캐시 제공자 모듈(214B)은 가상 기계(208X)의 CMS(220)로부터 I/O 요청(116)(또는 다른 질의)를 수신하는 것, 이전 호스트(202A)의 캐시 전송 모듈(929A)로부터 가상 기계(208X)의 캐시 데이터를 수신하는 것 등에 응하여 전송된 가상 기계(208X)를 식별할 수 있다. 단계(1010)는 (예를 들어, 가상 기계(208X)의 VMID, 호스트 식별자 등에 기반하여) 전송된 가상 기계(208X)를 초기 파워 온 및/또는 재시작 상태와 구별하는 것을 더 포함할 수 있다. 캐시는 상술한 바와 같이 가상 디스크 드라이버(215)를 통하여 가상 디스크(229)의 가상 기계(208X)에 동적으로 할당될 수 있다.
단계(1020)는 새로운 호스트(202B)의 캐시 전송 모듈(929B)이 전송된 가상 기계(208X)의 이전 호스트(202A)를 결정하는 단계를 포함할 수 있다. 단계(1020)는 상술한 바와 같이 가상 기계(208X)의 VMID에서의 호스트 식별자에 액세스하는 것, 전송된 가상 기계(208X)를 질의하는 것, 이전 호스트(202B)로부터 푸시된 캐시 데이터를 수신하는 것 등을 포함할 수 있다.
단계(1030)는 상술한 바와 같이 가상 기계(208X)에 할당되는 캐시 스토리지의 적어도 일부에 원격 호스트(202A)에 보유된 캐시 데이터를 상주시키는 것을 포함할 수 있다. 캐시 데이터는 이전 호스트(202)에서만 이용 가능한 일시적 캐시 구성으로 저장되는 캐시 데이터에 상응할 수 있다. 단계(1030)는 캐시 데이터를 요청하는 것, 새로운 호스트(202B)가 캐시 데이터에 액세스하도록 인가된 것을 검증하는 것, 푸시 작동에서 캐시 데이터를 수신하는 것 등을 포함할 수 있다. 캐시 데이터는 상술한 바와 같이 캐시 전송 모듈들(929A 및/또는 929B)의 캐시 전송 정책에 따라 요청되고/되거나, 전송되고/되거나, 푸시될 수 있다. 일부 실시예들에서, 단계(1030)는 할당된 캐시 스토리지에 주 스토리지(212)(또는 다른 소스)로부터 액세스되는 데이터를 상주시키는 것을 더 포함한다. 단계(1030)는 상술한 바와 같이 새로운 호스트(202B) 상에 캐시를 상주시키는 것에 응하여 가상 기계(208X)의 보유 캐시 데이터가 더 이상 보유될 필요가 없다는 것을 원격 호스트(202A)에 통지하는 것을 더 포함할 수 있다.
도 11은 가상 기계(208A 내지 208N)의 캐시 데이터를 전송하는 방법(1100)의 일 실시예의 흐름도이다. 방법(1100)은 상술한 바와 같이 시작하고 초기화될 수 있다.
단계(1110)는 호스트(202A)의 가상 기계(208X)를 전송하고/하거나 이주시키는 것에 응하여 가상 기계(208X)의 캐시 데이터를 캐시(216)(캐시 저장 디바이스)에 보유하는 것을 포함할 수 있다. 캐시 데이터는 상술한 바와 같이 보유 정책에 따라 캐시 보유 모듈(928A)에 의해 보유될 수 있다. 일부 실시예들에서, 단계(1110)는 일시적 캐시 데이터의 보유를 우선 순위화하는 것을 포함할 수 있으며, 이 일시적 캐시 데이터는 주 저장 시스템(242) 상에서 이용 가능하지 않을 수 있다(예를 들어, 이전 호스트(202A)의 가상 기계 캐시(213A) 내에서만 이용 가능할 수 있다).
단계(1120)는 캐시 데이터에 대한 요청에 응하여 보유된 캐시 데이터의 캐시 어드레스를 결정하는 것을 포함할 수 있다. 캐시 어드레스는 전송된 가상 기계의 VMID에 적어도 부분적으로 기반할 수 있다. 데이터의 캐시 어드레스는 캐시 리소스들(예를 들어, 캐시 청크들(302))을 리소스들이 할당되는 가상 기계들(208A 내지 208N)과 연관시키도록 구성되는 맵 모듈(514)에 의해 결정될 수 있다.
단계(1130)는 상술한 바와 같이 보유된 캐시 데이터를 제공하는 것을 포함할 수 있다. 단계(1130)는 가상 기계(208X)의 새로운 호스트(202B)의 캐시 전송 모듈(929B)로부터의 캐시 데이터에 대한 요청들에 응답하는 것, 캐시 데이터를 캐시 전송 모듈(929B)로 푸시하는 것 등을 포함할 수 있다.
도 12는 가상 기계의 캐시 데이터를 전송하는 것에 대한 다른 실시예의 흐름도이다. 단계(1210)는 가상 기계(208X)를 새로운 호스트(202B)로 전송하는 것에 응하여 캐시 태그들(221)을 보유하는 것을 포함할 수 있다. 일부 실시예들에서, 단계(1210)는 캐시 데이터의 부분들의 존속 레벨을 변경하는 것을 포함할 수 있다. 예를 들어, 가상 기계(208X)의 CMS(220)는 일시적 캐시 데이터를 주 저장 시스템(242)으로 플러싱하도록 구성될 수 있어, 캐시 데이터가 가상 기계(208X)의 현재 호스트(202A)의 가상 기계 캐시(213A)로부터 제거되더라도 캐시 데이터가 새로운 호스트(208B)에서 액세스 가능할 것이다.
단계(1220)는 보유된 캐시 태그들(221)에 따라 I/O 작동들을 필터링하는 것 및 선택된 I/O 요청들(116)을 CMS(220)로 보내는 것을 포함할 수 있다. 단계(1220)는 가상 기계(208X)의 새로운 호스트(202B)로 아직 전송되지 않았고/않았거나 가상 기계(208X)에 할당되지 않았던 하나 이상의 캐시 태그들(221)의 데이터를 요청하는 것을 포함할 수 있다. 상술한 바와 같이, 그러한 요청에 응하여, 새로운 호스트(202B)의 가상 기계 캐시(213B)는 (예를 들어, 초기 부팅 업 또는 파워 온과는 대조적으로) 가상 기계(208X)를 전송된 가상 기계로서 식별하고/하거나, 가상 기계(208X)에 대한 캐시 스토리지를 할당하고/하거나, 가상 기계(208X)의 이전 호스트(202A)를 결정하고/하거나, (캐시 전송 모듈(929B)을 통하여) 이전 호스트(202A)로부터의 캐시 데이터를 전송할 수 있다.
단계(1230)는 상술한 바와 같이 보유된 캐시 태그의 데이터를 요청하는 것을 포함할 수 있다. 액세스를 요청하는 것은 이전 호스트(202A)로부터 새로운 호스트(202B)의 가상 기계 캐시(213B)로 캐시 데이터의 요구시 전송을 수행하는 것을 포함할 수 있다.
본 명세서 전체에 걸쳐 특징들, 이점들 또는 유사한 표현에 대한 참조는 실현될 수 있는 특징들 및 이점들 모두가 임의의 단일 실시예에 포함된다는 것을 의미하지는 않는다. 오히려, 특징들 및 이점들을 참조하는 표현은 일 실시예와 관련되어 설명되는 구체적 특징, 이점 또는 특성이 적어도 일 실시예에 포함된다는 것을 의미하는 것으로 이해된다. 따라서, 본 명세서 전체에 걸친 특징들 및 이점들 및 유사한 표현의 논의는 필연적으로는 아니지만, 동일한 실시예를 언급할 수 있다.
더욱이, 본원에 설명되는 특징들, 이점들 및 특성들은 하나 이상의 실시예들에서 임의의 적절한 방식으로 결합될 수 있다. 당업자는 개시된 실시예들이 특정 실시예의 구체적 특징들 또는 이점들 중 하나 이상 없이 실행될 수 있다는 점을 인지할 것이다. 다른 경우들에서, 모든 실시예들에서 존재하지 않을 수 있는 부가 특징들 및 이점들이 특정 실시예들에서 인지될 수 있다. 개시된 실시예들의 이러한 특징들 및 이점들은 이하의 설명 및 첨부된 청구항들로부터 보다 충분히 명백하게 될 것이거나, 이하에 제시되는 바와 같은 실시예들의 실행에 의해 학습될 수 있다.
본 명세서에서 설명되는 기능적 단위들 중 많은 것들은 그것들의 구현 독립성을 보다 상세하게 강조하기 위해 모듈들로 표시되었다. 예를 들어, 모듈은 커스텀 VLSI 회로들 또는 게이트 어레이들, 로직 칩들과 같은 기성품의 반도체들, 트랜지스터들 또는 다른 개별 구성 요소들을 포함하는 하드웨어 회로로 구현될 수 있다. 모듈은 필드 프로그램 가능 게이트 어레이들, 프로그램 가능 어레이 로직 디바이스들, 프로그램 가능 로직 디바이스들 등과 같은 프로그램 가능 하드웨어 디바이스들로 구현될 수도 있다.
모듈들은 다양한 타입들의 프로세서들에 의해 실행되도록 소프트웨어로 구현될 수도 있다. 실행 가능 코드의 식별된 모듈은 예를 들어, 객체, 절차 또는 함수로서 조직화될 수 있는 컴퓨터 명령어들의 하나 이상의 물리적 또는 논리적 블록들을 예를 들어, 포함할 수 있다. 그럼에도 불구하고, 식별된 모듈의 실행 가능한 것들은 물리적으로 함께 위치될 필요가 없고, 논리적으로 함께 연결될 때, 모듈을 포함하고 모듈에 대해 진술된 목적을 달성하는 상이한 위치들에 저장되는 이질적인 명령어들을 포함할 수 있다.
실제로, 실행 가능 코드의 모듈은 단일 명령어 또는 많은 명령어들일 수 있고, 심지어 수개의 상이한 코드 세그먼트들에 걸쳐, 상이한 프로그램들 중에서 그리고 수개의 메모리 디바이스들에 걸쳐서 분포될 수 있다. 마찬가지로, 작동 데이터는 모듈들 내에서 식별되고 본원에 예시될 수 있고, 임의의 적절한 타입의 데이터 구조체 내에서 임의의 적절한 형태로 구현되고 조직화될 수 있다. 작동 데이터는 단일 데이터 세트로서 수집될 수 있거나, 상이한 저장 디바이스들 전역을 포함하는 상이한 위치들에 걸쳐 분포될 수 있고, 적어도 부분적으로, 단지 시스템 또는 네트워크 상의 전자 신호들로서 존재할 수 있다. 모듈 또는 모듈의 부분들이 소프트웨어로 구현되는 경우, 소프트웨어 부분들은 하나 이상의 컴퓨터 판독 가능 매체 상에 저장된다.
"하나의 실시예", "일 실시예" 또는 유사한 표현에 대한 본 명세서 전체에 걸친 참조는 실시예와 관련되어 설명되는 특정 특징, 구조체 또는 특성이 적어도 일 실시예에 포함되는 것을 의미한다. 따라서, 본 명세서 전체에 걸친 어구들 "하나의 실시예에서", "일 실시예에서" 그리고 유사한 표현의 출현들은 필연적으로는 아니지만, 모두 동일한 실시예를 언급할 수 있다.
컴퓨터 판독 가능 매체에 대한 참조는 디지털 프로세싱 장치 상에 기계 판독 가능 명령어들을 저장할 수 있는 임의의 형태를 취할 수 있다. 컴퓨터 판독 가능 매체는 컴팩트 디스크, 디지털 비디오 디스크, 자기 테이프, 베르누이(Bernoulli) 드라이브, 자기 디스크, 펀치 카드, 플래시 메모리, 집적 회로들 또는 다른 디지털 프로세싱 장치 메모리 디바이스에 의해 구현될 수 있다.
더욱이, 본원에 개시되는 특징들, 구조체들 또는 특성들은 하나 이상의 실시예들에서 임의의 적절한 방식으로 결합될 수 있다. 이하의 설명에서, 개시된 실시예들의 철저한 이해를 제공하기 위해 프로그래밍, 소프트웨어 모듈들, 사용자 선택들, 네트워크 트랜잭션들, 데이터베이스 질의들, 데이터베이스 구조체들, 하드웨어 모듈들, 하드웨어 회로들 및 하드웨어 칩들의 예들과 같은 많은 구체적 상세들이 제공된다. 그러나, 당업자는 본 발명의 교시들이 구체적 상세들 중 하나 이상 없이, 또는 다른 방법들, 구성 요소들, 재료들 등으로 실행될 수 있다는 점을 인지할 것이다. 다른 경우들에서, 널리 알려진 구조체들, 재료들 또는 작동들이 개시된 실시예들의 양태들을 모호하게 하는 것을 피하기 위해 상세히 도시되거나 설명되지 않는다.
본원에 포함되는 개략 흐름 도면들은 일반적으로 논리적 흐름도로서 제시된다. 이와 같이, 도시된 순서 및 라벨링된 단계들은 제공된 방법의 일 실시예를 나타낸다. 예시된 방법의 하나 이상의 단계들 또는 그것의 부분들에 대한 기능, 논리 또는 효과가 동등한 다른 단계들 및 방법들이 착안될 수 있다. 게다가, 채용된 형식 및 심볼들은 방법의 논리적 단계들을 설명하기 위해 제공되고 방법의 범위를 제한하지 않는 것으로 이해된다. 다양한 화살표 타입들 및 선 타입들이 흐름도에서 채용될 수 있지만, 그것들은 상응하는 방법의 범위를 제한하지 않는 것으로 이해된다. 실제로, 일부 화살표들 또는 다른 연결부들은 방법의 논리적 흐름만을 표시하기 위해 사용될 수 있다. 예를 들어, 화살표는 도시된 방법의 열거된 단계들 사이에서 지정되지 않은 지속 기간의 대기 또는 모니터링 기간을 표시할 수 있다. 게다가, 특정 방법이 일어나는 순서는 나타내어진 상응하는 단계들의 순서를 고수할 수 있거나 엄밀히 고수하지 않을 수 있다.

Claims (41)

  1. 복수의 입력/출력(I/O) 요청들을 식별하는 단계 - 상기 복수의 I/O 요청들은, 복수의 존속 저장 디바이스들(persistent storage devices)을 포함하는 저장 시스템에 관한 것임 -;
    상기 식별된 I/O 요청들의 하나 이상의 속성들에 기반하여 상기 식별된 I/O 요청들에 대한 각각의 존속 레벨들을 선택하는 단계 - 복수의 존속 레벨들은, 스토리지로부터 자동으로 제거될 수 있는 데이터에 대응되는 것으로 결정되는 상기 식별된 I/O 요청들에 대해 선택되는 제1 존속 레벨을 포함함 -; 및
    상기 식별된 I/O 요청들에 대해 선택되는 상기 각각의 존속 레벨들에 따라 상기 식별된 I/O 요청들을 서비스하는 단계를 포함하고,
    상기 제1 존속 레벨에 따라 상기 저장 시스템에 요청 데이터를 기록하라는 특정 I/O 요청을 서비스하는 단계는,
    상기 복수의 존속 저장 디바이스들과 별개인 지정된 저장 디바이스에, 상기 요청 데이터를 기록하는 단계; 및
    상기 지정된 저장 디바이스에 저장된 상기 요청 데이터가, 상기 저장 시스템의 존속 저장 디바이스에 기록되지 않고, 상기 지정된 저장 디바이스로부터 자동으로 제거되는 것을 레코딩(recording)하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 존속 레벨들 중 제2 존속 레벨은 상기 존속 저장 디바이스들 중 하나 이상에 대응되고,
    상기 제2 존속 레벨에 따라 데이터를 기록하라는 I/O 요청들을 서비스하는 단계는, 상기 하나 이상의 존속 저장 디바이스들에 상기 I/O 요청들의 데이터를 기록하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 제2 존속 레벨은 상기 하나 이상의 존속 저장 디바이스들에 대한 구성을 지정하고,
    상기 제2 존속 레벨에 따라 I/O 요청들을 서비스하는 단계는, 상기 지정된 구성으로 상기 I/O 요청들의 데이터를 저장하는 상기 하나 이상의 존속 저장 디바이스들을 구성하는 단계를 포함하는, 방법.
  4. 제2항에 있어서,
    상기 제2 존속 레벨은 상기 하나 이상의 존속 저장 디바이스들에 대한 스토리지 모드를 지정하고,
    상기 제2 존속 레벨에 따라 I/O 요청들을 서비스하는 단계는, 상기 지정된 스토리지 모드로 상기 I/O 요청들의 데이터를 저장하는 상기 하나 이상의 존속 저장 디바이스들을 구성하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 특정 I/O 요청과 연관된 클라이언트의 재부팅, 재시작 및 셧다운 중 하나 이상에 응답하여, 상기 특정 I/O 요청의 요청 데이터가 상기 지정된 저장 디바이스로부터 자동으로 제거되는, 방법.
  6. 제2항에 있어서,
    상기 제2 존속 레벨은 2개 이상의 존속 저장 디바이스들 상의 I/O 요청 데이터의 리던던트 스토리지(redundant storage)를 지정하는, 방법.
  7. 제1항에 있어서,
    상기 요청 데이터를 기록하는 단계는, 상기 지정된 저장 디바이스 상의 캐시로의 상기 요청 데이터의 기록을 승인하는(admitting) 단계를 포함하고,
    상기 요청 데이터는, 상기 저장 시스템의 임의의 존속 저장 디바이스들 상에 저장되지 않고 상기 캐시로부터 퇴거되는(evicted), 방법.
  8. 제1항에 있어서,
    상기 I/O 요청을 식별하는 단계는 저장 스택에서 I/O 요청들을 모니터링하는 단계를 포함하는, 방법.
  9. 작동들을 수행하도록 실행 가능한 프로그램 코드를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 작동들은:
    저장 클라이언트에서 비롯되는 기록 요청들을 수신하는 작동 - 상기 기록 요청들은 복수의 저장 리소스들을 포함하는 저장 시스템에 데이터를 기록하라는 요청들을 포함하고, 상기 복수의 저장 리소스들은 복수의 존속 저장 리소스들, 및 상기 복수의 존속 저장 리소스들과 별개인 임시 저장 리소스를 포함함 -;
    상기 기록 요청들의 하나 이상의 특성들에 기반하여 상기 기록 요청들에 각각의 존속 레벨들을 할당하는 작동 - 각각의 존속 레벨은 상기 저장 시스템의 상기 저장 리소스들 중 하나 이상에 대응하고, 상기 존속 레벨들은 상기 저장 시스템으로부터 자동으로 제거될 수 있는 데이터에 관한 것으로 결정되는 기록 요청들에 할당되는 제1 존속 레벨을 포함함 -; 및
    상기 저장 시스템의 선택된 저장 리소스들 상에 상기 기록 요청들의 데이터를 저장하는 작동 - 상기 저장 리소스들은 상기 기록 요청들에 할당된 존속 레벨들에 기초하여 선택됨 -
    을 포함하고,
    제1 존속 레벨이 할당된 기록 요청의 데이터를 저장하는 것은,
    상기 복수의 존속 저장 리소스들과 별개인 상기 임시 저장 리소스에, 상기 데이터를 기록하는 것과,
    상기 데이터가 상기 저장 시스템의 존속 저장 리소스에 기록되지 않고 상기 저장 시스템으로부터 제거되도록, 상기 저장 클라이언트의 재부팅, 재시작 및 셧다운 중 하나 이상에 응답하여, 상기 데이터를 상기 임시 저장 리소스로부터 자동으로 제거하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서,
    상기 존속 레벨들 중 제2 존속 레벨은 라이트-스루(write-through) 캐싱 모드를 지정하고,
    상기 제2 존속 레벨이 할당된 기록 요청의 데이터 유닛을 저장하는 것은 상기 데이터 유닛을 임시 저장 리소스들 및 상기 존속 저장 리소스들의 하나 이상에 기록하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
  11. 제9항에 있어서,
    상기 제1 존속 레벨이 할당된 기록 요청의 데이터를 저장하는 것은, 상기 저장 시스템의 상기 존속 저장 리소스를 액세스하지 않고 상기 임시 저장 리소스에 상기 데이터를 기록하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
  12. 제9항에 있어서,
    상기 제1 존속 레벨이 할당된 기록 요청의 데이터를 기록하는 것은, 상기 임시 저장 리소스들 상의 캐시로의 상기 데이터의 기록을 승인하는 것을 포함하고,
    상기 데이터를 자동으로 제거하는 것은, 상기 데이터를 상기 저장 시스템의 존속 저장 리소스에 저장하지 않고 상기 캐시로부터 퇴거하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
  13. 제9항에 있어서,
    상기 존속 레벨들 중 제2 존속 레벨은, 라이트-백(write-back) 캐시 모드 및 라이트-스루(write-through) 캐시 모드 중 하나 이상으로 상기 임시 저장 리소스에 데이터를 캐싱하여, 상기 임시 저장 리소스 상에 캐싱된 상기 제2 존속 레벨이 할당된 기록 요청의 데이터 유닛이, 상기 데이터 유닛의 캐시 퇴거 전에 상기 존속 저장 리소스들 중 하나 이상에 기록되도록 하는 것을 포함하는, 컴퓨터 판독가능 저장 매체.
  14. 제9항에 있어서,
    상기 작동들은, 상기 임시 저장 리소스 상에 상기 기록 요청의 데이터를 저장하는 것에 응하여 그리고 상기 데이터를 상기 저장 시스템의 임의의 존속 저장 리소스들 상에 저장하지 않고 상기 제1 존속 레벨이 할당된 상기 기록 요청의 완료를 확인하는 작동을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 제9항에 있어서,
    상기 제1 존속 레벨은 제1 오류 정정 코드 인코딩을 지정하고,
    상기 존속 레벨들 중 제2 존속 레벨은 제2의 상이한 오류 정정 코드 인코딩을 지정하는, 컴퓨터 판독가능 저장 매체.
  16. 제9항에 있어서,
    상기 작동들은, 상기 기록 요청들의 특성들을 파일 선택 기준에 매칭시켜 상기 기록 요청들에 존속 레벨을 할당하는 작동을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  17. 저장 시스템의 복수의 저장 리소스들과 인터페이싱하도록 구성되는 저장 제어기 - 상기 저장 리소스들은 복수의 존속 저장 디바이스들을 포함함 -;
    상기 저장 시스템에 기록되는 요청 데이터를 지정하는 저장 요청들을 수신하도록 구성되는 요청 수신기;
    상기 저장 요청들의 특성들에 기반하여 상기 저장 요청들에 존속 레벨들을 할당하도록 구성되는 존속 레벨 모듈 - 상기 존속 레벨들은, 상기 저장 시스템의 상기 존속 저장 디바이스들과 별개인 임시 스토리지에 저장하는 요청 데이터에 관한 저장 요청들에 할당된 제1 존속 레벨을 포함함 -; 및
    상기 저장 제어기의 사용에 의해 상기 저장 요청들에 할당되는 상기 존속 레벨들에 따라 상기 저장 요청들의 요청 데이터를 기록하도록 구성되는 저장 요청 실행 모듈을 포함하고,
    상기 제1 존속 레벨이 할당된 특정 저장 요청의 요청 데이터를 기록하는 것은, 상기 저장 시스템의 존속 저장 디바이스들과 별개인 임시 스토리지에 상기 특정 저장 요청의 요청 데이터를 기록하는 것과, 상기 특정 저장 요청의 요청 데이터가, 상기 저장 시스템의 특정 저장 디바이스에 기록되지 않고 상기 임시 스토리지로부터 퇴거되는 것을 레코딩하는 것을 포함하는, 장치.
  18. 제17항에 있어서,
    상기 저장 요청들의 특성들은 파일 식별자, 파일 경로, 상기 저장 요청과 연관되는 애플리케이션, 상기 저장 요청의 파라미터 및 입력/출력(I/O) 제어 파라미터 중 하나 이상을 포함하는, 장치.
  19. 제17항에 있어서,
    상기 저장 요청 실행 모듈은, 상기 임시 스토리지 상에 라이트-네버(write-never) 캐시 모드로 상기 특정 저장 요청의 요청 데이터를 캐싱하도록 구성되는, 장치.
  20. 제17항에 있어서,
    상기 존속 레벨들 중 제2 존속 레벨은 제1 RAID 구성에 데이터를 저장하는 것을 포함하고,
    상기 존속 레벨들 중 제3 존속 레벨은 제2의 상이한 RAID 구성에 데이터를 저장하는 것을 포함하는, 장치.
  21. 보조 저장소(backing store)에 저장되는 요청 데이터를 지정하는 입력/출력(I/O) 요청을 식별하는 단계;
    복수의 캐시 모드들로부터 상기 식별된 I/O 요청에 대한 일시적 캐시 모드(ephemeral cache mode)를 선택하는 단계 - 상기 일시적 캐시 모드는 상기 보조 저장소에 액세스하지 않고, 상기 보조 저장소로부터 별개인 캐시 스토리지에 데이터를 캐싱하는 것을 포함함 -; 및
    상기 보조 저장소에 저장되지 않고 상기 요청 데이터가 상기 캐시 스토리지로부터 퇴거되도록, 상기 보조 저장소에 저장되는 상기 식별된 I/O 요청에 의해 지정된, 상기 요청 데이터를 상기 보조 저장소를 액세스하지 않고 상기 캐시 스토리지에 캐싱하여, 상기 식별된 I/O 요청을 서비스하는 단계를 포함하는, 방법.
  22. 제21항에 있어서,
    상기 캐시 스토리지에 상기 요청 데이터를 캐싱하는 것에 응하여 그리고 상기 보조 저장소에 상기 요청 데이터를 저장하지 않고 상기 식별된 I/O 요청의 완료를 확인하는 단계를 더 포함하는, 방법.
  23. 제21항에 있어서,
    상기 식별된 I/O 요청의 하나 이상의 특성들을 결정하는 단계를 더 포함하고, 상기 결정된 특성들에 기초하여 상기 식별된 I/O 요청에 대해 상기 일시적 캐시 모드가 선택되는, 방법.
  24. 제23항에 있어서,
    상기 하나 이상의 특성들은 파일 식별자를 포함하고,
    상기 파일 식별자를 상기 일시적 캐시 모드의 파일 선택 기준에 매칭하는 것에 응하여, 상기 일시적 캐시 모드가 선택되는, 방법.
  25. 제21항에 있어서,
    가상 기계의 재부팅, 재시작 및 셧다운 중 하나에 응하여 상기 가상 기계의 일시적 데이터가 상기 캐시 스토리지로부터 제거되도록, 제1 가상 기계 호스트 상에서 동작하는 복수의 가상 기계들의 일시적 데이터를 상기 캐시 스토리지에 캐싱하는 단계; 및
    특정 가상 기계가 제2 가상 기계 호스트로 이주(migrate)하는 것을 결정하는 것에 응하여 상기 보조 저장소로 상기 가상 기계들 중 특정 가상 기계의 일시적 캐시 데이터를 플러싱(flushing)하는 단계를 더 포함하는, 방법.
  26. 제21항에 있어서,
    제1 가상 기계 호스트 상에서 동작하는 복수의 가상 기계들의 일시적 데이터를 상기 캐시 스토리지에 캐싱하는 단계; 및
    가상 기계가 제1 가상 기계 호스트로부터 제2 가상 기계 호스트로 이주하는 것에 응하여 상기 가상 기계들 중 하나의 일시적 캐시 데이터를 상기 제1 가상 기계 호스트의 캐시 스토리지에 보유하는 단계를 더 포함하는, 방법.
  27. 제26항에 있어서,
    상기 제2 가상 기계 호스트에서의 캐시 스토리지에, 상기 제1 가상 기계 호스트의 캐시 스토리지에 보유되는 가상 기계의 일시적 캐시 데이터를 상주시키는 단계를 더 포함하는, 방법.
  28. 작동들을 수행하도록 실행 가능한 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체로서,
    상기 작동들은:
    특정 입력/출력(I/O) 요청에 의해 주 스토리지(primary storage)에 기록되도록 요청된 지정 데이터가 상기 주 스토리지에 보유될 필요가 없다고 판단하는 작동;
    상기 특정 I/O 요청에 의해 상기 주 스토리지에 기록되도록 요청된 지정 데이터를, 상기 주 스토리지와 별개인 캐시 스토리지 내에 배타적으로 캐싱하는 작동;
    상기 지정 데이터를 상기 캐시 스토리지 내에 캐싱하는 것에 응하여 상기 특정 I/O 요청의 완료를 확인하는 작동; 및
    상기 지정 데이터를 상기 주 스토리지에 기록하지 않고, 상기 캐시 스토리지로부터 상기 지정 데이터를 퇴거하는 작동을 포함하는, 컴퓨터 판독 가능 저장 매체.
  29. 제28항에 있어서,
    상기 특정 I/O 요청의 데이터를 캐싱하는 것은, 상기 주 스토리지와 독립된 하나 이상의 고속 경로 I/O 작동들을 수행하는 것을 포함하는, 컴퓨터 판독 가능 저장 매체.
  30. 제28항에 있어서,
    상기 작동들은 저장 스택 내에서 I/O 요청들을 모니터링하는 것을 더 포함하며,
    상기 캐시 스토리지 내에서 상기 지정 데이터를 캐싱하는 것은 상기 저장 스택의 외측에서 하나 이상의 I/O 작동들을 수행하는 것을 포함하는, 컴퓨터 판독 가능 저장 매체.
  31. 제28항에 있어서,
    상기 작동들은, 상기 특정 I/O 요청과 연관된 파일 경로 및 파일 식별자 중 하나 이상을 결정하는 것을 더 포함하고,
    상기 지정 데이터가 상기 주 스토리지에 보유될 필요가 없다고 판단하는 것은, 상기 파일 경로 및 파일 식별자 중 하나 이상을 존속 레벨 기준과 비교하는 것을 포함하는, 컴퓨터 판독 가능 저장 매체.
  32. 제28항에 있어서,
    클라이언트는 가상 기계를 포함하고,
    상기 작동들은 상기 가상 기계가 원격 가상 기계 호스트로 전송되는 것에 응하여 상기 캐시 스토리지 내에 저장되는 상기 가상 기계의 데이터를 상기 원격 가상 기계 호스트로 푸시하는 것을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  33. 제28항에 있어서,
    클라이언트는 가상 기계를 포함하고,
    상기 작동들은 원격 가상 기계 호스트로부터의 요청에 응하여 상기 캐시 스토리지 내에 저장되는 상기 가상 기계의 데이터를 상기 원격 가상 기계 호스트로 전송하는 것을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  34. 제28항에 있어서,
    클라이언트는 제1 가상 기계 호스트에서 동작하는 가상 기계를 포함하고,
    상기 작동들은 상기 가상 기계를 제2 가상 기계 호스트로 이주시키는 것에 응하여 상기 캐시 스토리지 내에 배타적으로 저장되는 상기 특정 I/O 요청의 지정 데이터와 연관되는 캐시 태그를 보유하는 것을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  35. 제34항에 있어서,
    상기 작동들은, 제2 가상 기계 호스트의 가상 기계 캐시로, 상기 캐시 스토리지에 배타적으로 저장되는 상기 특정 I/O 요청의 지정 데이터를 전송하는 것을 더 포함하며,
    상기 지정 데이터를 전송하는 것은, 상기 제1 가상 기계 호스트가 상기 데이터를 상기 제2 가상 기계 호스트로 푸시하는 것, 및 상기 제2 가상 기계 호스트로부터의 상기 데이터에 대한 요청에 응답하는 것 중 하나를 포함하는, 컴퓨터 판독 가능 저장 매체.
  36. 보조 저장소(backing store)로 어드레싱되는(addressed) I/O 요청들을 인터셉트하도록(intercept) 구성되는 에이전트;
    복수의 캐시 모드들로부터 상기 인터셉트된 I/O 요청들에 캐시 모드들을 할당하도록 구성되는 존속 레벨 모듈 - 상기 복수의 캐시 모드들은 일시적 캐시 모드(ephemeral cache mode)를 포함하고, 상기 인터셉트된 I/O 요청과 연관된 클라이언트의 재부팅, 재시작 및 셧다운 중 하나 이상에 후속하여 지정 데이터가 보존될 필요가 없다고 결정하는 것에 응하여, 상기 존속 레벨 모듈은 지정 데이터를 상기 보조 저장소에 기록하라는 인터셉트된 I/O 요청에 상기 일시적 캐시 모드를 할당함 -; 및
    상기 할당된 캐시 모드들에 따라 상기 인터셉트된 I/O 요청들을 서비스하도록 구성되는 캐시 관리자를 포함하고,
    상기 일시적 캐시 모드가 할당된 상기 인터셉트된 I/O 요청을 서비스하는 것은, 상기 지정 데이터가 상기 보조 저장소에 기록되지 않고 상기 클라이언트의 재부팅, 재시작 및 셧다운 중 하나 이상에 후속하여 캐시 스토리지로부터 제거되도록, 상기 보조 저장소를 액세스하지 않고, 상기 데이터를 상기 캐시 스토리지에 기록하는 것을 포함하는, 장치.
  37. 제36항에 있어서,
    상기 존속 레벨 모듈은,
    상기 인터셉트된 I/O 요청들의 소스 식별자들, 상기 인터셉트된 I/O 요청들의 파일 식별자들 및 상기 인터셉트된 I/O 요청들과 연관되는 애플리케이션들 중 하나 이상에 기반하여 상기 인터셉트된 I/O 요청들에 대한 상기 캐시 모드들을 할당하도록 구성되는, 장치.
  38. 제36항에 있어서,
    상기 캐시 관리자는,
    상기 지정 데이터를 상기 캐시 스토리지에 기록하는 것에 응하여, 상기 일시적 캐시 모드가 할당된 상기 인터셉트된 I/O 요청의 완료를 확인하고,
    데이터 세그먼트를 상기 캐시 스토리지 및 상기 보조 저장소에 기록하는 것에 응하여 라이트-스루 캐시 모드가 할당된 상기 보조 저장소에 상기 데이터 세그먼트를 저장하라는 인터셉트된 I/O 요청의 완료를 확인하도록 구성되는, 장치.
  39. 제36항에 있어서,
    상기 캐시 관리자는, 가상 기계가 원격 가상 기계 호스트로 전송될 것이라고 판단하는 것에 응하여 제1 가상 기계 호스트에서 상기 일시적 캐시 모드가 할당된 인터셉트된 I/O 요청들에 대응하여 상기 캐시 스토리지에 기록된 가상 기계의 데이터를 보유하도록 구성되고,
    상기 캐시 관리자는, 상기 가상 기계의 상기 보유된 데이터를 상기 원격 가상 기계 호스트로 전송하도록 더 구성되는, 장치.
  40. 제39항에 있어서,
    상기 원격 가상 기계 호스트는,
    상기 원격 가상 기계 호스트에서의 가상 기계 캐시에 상기 제1 가상 기계 호스트로부터 전송되는 데이터를 상주시키도록 구성되는, 장치.
  41. 제36항에 있어서,
    상기 캐시 관리자는, 가상 기계를 원격 가상 기계 호스트로 전송하는 것에 응하여 상기 일시적 캐시 모드로 캐싱되는 상기 가상 기계의 데이터를 상기 보조 저장소로 플러싱하도록 구성되는, 장치.
KR1020157007756A 2012-08-31 2013-08-29 순응적 존속을 위한 시스템, 방법 및 인터페이스 KR101841997B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261696126P 2012-08-31 2012-08-31
US61/696,126 2012-08-31
US13/829,835 2013-03-14
US13/829,835 US10359972B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive persistence
US13/829,358 2013-03-14
US13/829,358 US10346095B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive cache persistence
PCT/US2013/057366 WO2014036307A1 (en) 2012-08-31 2013-08-29 Systems, methods, and interfaces for adaptive persistence

Publications (2)

Publication Number Publication Date
KR20150081424A KR20150081424A (ko) 2015-07-14
KR101841997B1 true KR101841997B1 (ko) 2018-03-27

Family

ID=50189117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157007756A KR101841997B1 (ko) 2012-08-31 2013-08-29 순응적 존속을 위한 시스템, 방법 및 인터페이스

Country Status (6)

Country Link
US (3) US10346095B2 (ko)
JP (2) JP2015535355A (ko)
KR (1) KR101841997B1 (ko)
CN (1) CN104903872B (ko)
DE (1) DE112013004250B4 (ko)
WO (1) WO2014036307A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190128369A (ko) * 2018-05-08 2019-11-18 주식회사 애포샤 캐싱 장치 및 방법

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9106690B1 (en) * 2012-06-14 2015-08-11 Bromium, Inc. Securing an endpoint by proxying document object models and windows
US10346095B2 (en) * 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
TWI578836B (zh) 2013-05-10 2017-04-11 瑞雷2股份有限公司 多租戶虛擬存取點-網路資源虛擬化之技術
US9507607B2 (en) * 2013-05-10 2016-11-29 Vmware, Inc. Virtual persistence
US9842128B2 (en) * 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
US9570175B2 (en) 2013-08-05 2017-02-14 Jonker Llc Incrementally programmable non-volatile memory
US9471441B1 (en) * 2013-08-23 2016-10-18 Acronis International Gmbh Systems and methods for backup of virtual machines
US11018988B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Translating high level requirements policies to distributed configurations
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9519581B2 (en) * 2013-09-16 2016-12-13 Vmware, Inc. Storage integration for host-based write-back caching
US9460008B1 (en) * 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
WO2015065449A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Cache controller for non-volatile memory
US9229855B2 (en) * 2013-11-12 2016-01-05 Skyera, Llc Apparatus and method for routing information in a non-volatile memory-based storage device
US9336134B2 (en) * 2013-11-12 2016-05-10 Skyera, Llc Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US10241709B2 (en) * 2013-12-09 2019-03-26 Vmware, Inc. Elastic temporary filesystem
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
US9286238B1 (en) * 2013-12-31 2016-03-15 Emc Corporation System, apparatus, and method of cache management
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
US9509769B2 (en) * 2014-02-28 2016-11-29 Sap Se Reflecting data modification requests in an offline environment
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10133488B2 (en) * 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US10146437B2 (en) 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
US10083051B1 (en) * 2014-04-11 2018-09-25 VCE IP Holding Company LLC System, method, and code for classifying resources of a virtual computing environment
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9483300B2 (en) * 2014-07-15 2016-11-01 Red Hat Israel, Ltd. Importing a running VM
US9547592B2 (en) * 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
JP6365085B2 (ja) * 2014-08-04 2018-08-01 富士通株式会社 データ移行方法及びデータ移行装置
US20160050112A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
WO2016032955A2 (en) * 2014-08-25 2016-03-03 Cacheio Llc Nvram enabled storage systems
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US20160092353A1 (en) * 2014-09-25 2016-03-31 Robert C. Swanson Establishing cold storage pools from aging memory
US10839086B2 (en) 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10169124B2 (en) * 2014-12-16 2019-01-01 Samsung Electronics Co., Ltd. Unified object interface for memory and storage system
US9886387B2 (en) * 2015-01-30 2018-02-06 American Megatrends, Inc. Method and system for performing on-demand data write through based on virtual machine types
US9851990B2 (en) 2015-01-30 2017-12-26 American Megatrends, Inc. Method and system for performing on-demand data write through based on UPS power status
JP2016184188A (ja) * 2015-03-25 2016-10-20 日本電気株式会社 管理装置、管理方法とそのプログラム、および、情報処理システム
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US9813500B2 (en) * 2015-06-12 2017-11-07 Cisco Technology, Inc. Allocating cloud storage based on storage attributes
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US20170038933A1 (en) * 2015-08-06 2017-02-09 Facebook, Inc. Systems and methods for providing reminders for content in social networks
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
CN106547476B (zh) * 2015-09-22 2021-11-09 伊姆西Ip控股有限责任公司 用于数据存储系统的方法和装置
US10496545B2 (en) * 2015-11-24 2019-12-03 Hewlett Packard Enterprise Development Lp Data caching in a large-scale processing environment
CN108292264B (zh) * 2015-12-02 2023-01-03 瑞典爱立信有限公司 用于管理存储器页的可用性的方法和存储器可用性管理模块
US10049004B2 (en) * 2015-12-09 2018-08-14 Samsung Electronics Co., Ltd. Electronic system with memory data protection mechanism and method of operation thereof
WO2017113329A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种主机集群中缓存管理方法及主机
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
CN107515724B (zh) * 2016-06-16 2021-04-02 伊姆西Ip控股有限责任公司 用于再现存储系统的输入输出的方法和设备
CN107526529B (zh) * 2016-06-21 2020-08-07 伊姆西Ip控股有限责任公司 用于虚拟机的方法和装置
US10678578B2 (en) 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10034407B2 (en) 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10783102B2 (en) * 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10437691B1 (en) * 2017-03-29 2019-10-08 Veritas Technologies Llc Systems and methods for caching in an erasure-coded system
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN106959672B (zh) * 2017-04-28 2020-07-28 深圳市汇川控制技术有限公司 一种基于api的工业运动控制系统及方法
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
US10810116B2 (en) * 2017-06-29 2020-10-20 Sap Se In-memory database with page size adaptation during loading
US20190004947A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Selective temporary data storage
KR102474582B1 (ko) 2017-08-28 2022-12-05 삼성전자주식회사 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템
US10592293B2 (en) 2017-08-31 2020-03-17 Cisco Technology, Inc. Tenant-specific policy generation and enforcement within containers
US20190095107A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Data classification for placement within storage devices
US11106588B2 (en) * 2017-11-28 2021-08-31 International Business Machines Corporation Deferred method of allocating disk space for lightning segments
US10802932B2 (en) * 2017-12-04 2020-10-13 Nxp Usa, Inc. Data processing system having lockstep operation
CN108268217B (zh) * 2018-01-10 2021-04-30 北京航天云路有限公司 一种基于时序数据冷热分类的分层存储方法
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
CN108519863B (zh) * 2018-04-12 2021-06-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
CN109032838B (zh) * 2018-06-28 2022-07-15 上海爱数信息技术股份有限公司 虚拟机备份恢复数据一致性的自动校验方法
US10656869B1 (en) * 2018-06-28 2020-05-19 Amazon Technologies, Inc. Performance-based volume replica migration
US11573962B2 (en) * 2018-10-19 2023-02-07 Oracle International Corporation Dynamic performance tuning based on implied data characteristics
US11568179B2 (en) 2018-10-19 2023-01-31 Oracle International Corporation Selecting an algorithm for analyzing a data set based on the distribution of the data set
US10860078B2 (en) * 2018-10-25 2020-12-08 Dell Products, L.P. Managing power request during cluster operations
US11048523B2 (en) 2018-10-25 2021-06-29 Dell Products, L.P. Enabling software sensor power operation requests via baseboard management controller (BMC)
US11126486B2 (en) 2018-10-25 2021-09-21 Dell Products, L.P. Prediction of power shutdown and outage incidents
US10866890B2 (en) * 2018-11-07 2020-12-15 Arm Limited Method and apparatus for implementing lock-free data structures
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US10895997B2 (en) * 2019-02-20 2021-01-19 Nutanix, Inc. Durable client-side caching for distributed storage
TWI774388B (zh) * 2019-02-23 2022-08-11 國立清華大學 資料同步方法
US12013808B2 (en) 2019-03-15 2024-06-18 Intel Corporation Multi-tile architecture for graphics operations
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP4024223A1 (en) * 2019-03-15 2022-07-06 Intel Corporation Systems and methods for cache optimization
CN110174997B (zh) * 2019-04-17 2022-12-13 贵州力创科技发展有限公司 一种基于持久层的数据存储方法及区块链服务器
US11921637B2 (en) * 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
DE112019007666T5 (de) * 2019-08-27 2022-06-15 Micron Technology, Inc. Schreibpuffersteuerung in einem verwalteten Speichersystem
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统
US11481325B2 (en) 2020-03-30 2022-10-25 Citrix Systems, Inc. Secure fast reboot of a virtual machine
US11972142B2 (en) * 2020-12-29 2024-04-30 Arm Limited Data processing circuitry and apparatus for packet-based data communications
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
US12019893B2 (en) 2022-06-28 2024-06-25 Western Digital Technologies, Inc. Storage device pool management based on fragmentation levels
TWI820883B (zh) * 2022-08-30 2023-11-01 新唐科技股份有限公司 積體電路及其快取記憶體有效位元清除方法
US20240069807A1 (en) * 2022-08-31 2024-02-29 Micron Technology, Inc. Managing command completion notification pacing in a memory sub-system
US20240095186A1 (en) * 2022-09-15 2024-03-21 International Business Machines Corporation Virtual machine failover with disaggregated shared memory
US20240126458A1 (en) * 2022-10-14 2024-04-18 Arm Limited Controlling data allocation to storage circuitry
US20240143512A1 (en) * 2022-11-01 2024-05-02 Western Digital Technologies, Inc. Write buffer linking for easy cache reads

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002001365A3 (en) 2000-06-23 2002-04-11 Intel Corp Non-volatile cache
US20090132621A1 (en) 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache
US20120311263A1 (en) 2011-06-04 2012-12-06 Microsoft Corporation Sector-based write filtering with selective file and registry exclusions

Family Cites Families (409)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
JPS55157053A (en) * 1979-05-25 1980-12-06 Nec Corp Disc cash write-in control system
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5043871A (en) 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
KR930003088B1 (ko) 1990-10-23 1993-04-17 삼성전자 주식회사 초고주파와 히터열을 이용한 정화 소각장치
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
JPH06187249A (ja) * 1992-12-16 1994-07-08 Nec Eng Ltd ディスクアレイ装置
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5392244A (en) 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP3172007B2 (ja) * 1993-09-17 2001-06-04 富士通株式会社 ディスク複写処理方式
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5434994A (en) 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto SDRAM-Datenzuweisungsanordnung und -verfahren
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
JP3394651B2 (ja) * 1996-07-09 2003-04-07 株式会社クボタ 球状野菜の包装設備
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6092159A (en) * 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6266785B1 (en) 1998-09-01 2001-07-24 Ncr Corporation File system filter driver apparatus and method
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
EP1100001B1 (en) 1999-10-25 2003-08-13 Sun Microsystems, Inc. Storage system supporting file-level and block-level accesses
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6898670B2 (en) 2000-04-18 2005-05-24 Storeage Networking Technologies Storage virtualization in a storage area network
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020154633A1 (en) 2000-11-22 2002-10-24 Yeshik Shin Communications architecture for storage-based devices
US6745310B2 (en) 2000-12-01 2004-06-01 Yan Chiew Chow Real time local and remote management of data files and directories and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
WO2002091586A2 (en) 2001-05-08 2002-11-14 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US6986015B2 (en) * 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7076606B2 (en) * 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7152942B2 (en) 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US20040169885A1 (en) 2003-02-28 2004-09-02 Mellor Douglas J. Memory management
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7987249B2 (en) 2003-04-09 2011-07-26 Intel Corporation Soft system failure recovery for management consoles supporting ASF RMCP
US7415591B1 (en) 2003-04-23 2008-08-19 Emc Corporation Method and apparatus for migrating data and automatically provisioning a target for the migration
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
CA2544063C (en) 2003-11-13 2013-09-10 Commvault Systems, Inc. System and method for combining data streams in pilelined storage operations in a storage network
EP1686482B1 (en) 2003-11-18 2013-03-06 Panasonic Corporation File recording device
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
JP2005284816A (ja) * 2004-03-30 2005-10-13 Hitachi Ltd ディスクアレイシステム
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7711140B2 (en) 2004-04-21 2010-05-04 Canon Kabushiki Kaisha Secure recorded documents
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
CA2564844C (en) 2004-04-26 2014-12-09 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7213125B2 (en) 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
WO2006025322A1 (ja) 2004-08-30 2006-03-09 Matsushita Electric Industrial Co., Ltd. 記録装置
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
JP2008523468A (ja) 2004-12-06 2008-07-03 テイアック エアロスペース テクノロジーズ インコーポレイテッド 不揮発記録媒体消去システム及び方法
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US20060136685A1 (en) 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
GB2426082B (en) 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7383392B2 (en) 2005-05-31 2008-06-03 Hewlett-Packard Development Company, L.P. Performing read-ahead operation for a direct input/output request
US7472225B2 (en) 2005-06-20 2008-12-30 Arm Limited Caching data
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
WO2008002419A2 (en) 2006-06-19 2008-01-03 Xensource, Inc. Open virtual appliance
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP2008090378A (ja) * 2006-09-29 2008-04-17 Seiko Epson Corp ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US7606681B2 (en) 2006-11-03 2009-10-20 Air Products And Chemicals, Inc. System and method for process monitoring
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7689804B2 (en) * 2006-12-20 2010-03-30 Intel Corporation Selectively protecting a register file
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US7769945B2 (en) 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
JP5020673B2 (ja) 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US8046767B2 (en) 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US7793061B1 (en) * 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
KR20090034629A (ko) * 2007-10-04 2009-04-08 삼성전자주식회사 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법
CN101971544B (zh) 2007-11-05 2014-06-18 蜂窝通信设备有限责任公司 缓冲器状态报告系统和方法
US7840839B2 (en) 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP2009223787A (ja) * 2008-03-18 2009-10-01 Hitachi Software Eng Co Ltd 情報処理装置及び方法、並びにプログラム
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US7975169B2 (en) 2008-06-03 2011-07-05 International Business Machines Corporation Memory preserved cache to prevent data loss
US8090909B2 (en) 2008-06-06 2012-01-03 Pivot3 Method and system for distributed raid implementation
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US20100082922A1 (en) 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
JP5124430B2 (ja) * 2008-12-04 2013-01-23 株式会社エヌ・ティ・ティ・データ 仮想マシンの移行方法、サーバ、及び、プログラム
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8171219B2 (en) 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8566507B2 (en) 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US8103822B2 (en) * 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US8527466B2 (en) 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
WO2011072340A1 (en) 2009-12-17 2011-06-23 National Ict Australia Limited Reliable writing of database log data
US9021046B2 (en) 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
WO2011112523A2 (en) 2010-03-08 2011-09-15 Hewlett-Packard Development Company, L.P. Data storage apparatus and methods
US9110806B2 (en) 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US20110238737A1 (en) * 2010-03-26 2011-09-29 Nec Laboratories America, Inc. Decentralized cloud storage
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US8539124B1 (en) * 2010-03-31 2013-09-17 Emc Corporation Storage integration plugin for virtual servers
US8312471B2 (en) * 2010-04-26 2012-11-13 Vmware, Inc. File system independent content aware cache
US20110270945A1 (en) * 2010-04-30 2011-11-03 Hitachi, Ltd. Computer system and control method for the same
EP2577470A4 (en) * 2010-06-04 2013-12-25 Sandisk Entpr Ip Llc CACHE ADMINISTRATION AND ACCELERATION IN STORAGE MEDIA
US8244935B2 (en) 2010-06-25 2012-08-14 Oracle International Corporation Write aggregation using optional I/O requests
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
JP5520747B2 (ja) 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive
CN102467408B (zh) 2010-11-12 2014-03-19 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8479294B1 (en) 2011-02-15 2013-07-02 Trend Micro Incorporated Anti-malware scan management in high-availability virtualization environments
KR20120097136A (ko) 2011-02-24 2012-09-03 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) * 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
EP2692110B1 (en) 2011-03-29 2016-05-11 Brainlab AG Processing of digital data, in particular medical data by a virtual machine
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
CA2761553C (en) * 2011-12-09 2019-03-05 Ibm Canada Limited - Ibm Canada Limitee Logical buffer pool extension
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US10346095B2 (en) * 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US9336035B2 (en) * 2012-10-23 2016-05-10 Vmware, Inc. Method and system for VM-granular I/O caching
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002001365A3 (en) 2000-06-23 2002-04-11 Intel Corp Non-volatile cache
US20090132621A1 (en) 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache
US20120311263A1 (en) 2011-06-04 2012-12-06 Microsoft Corporation Sector-based write filtering with selective file and registry exclusions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190128369A (ko) * 2018-05-08 2019-11-18 주식회사 애포샤 캐싱 장치 및 방법
KR102052312B1 (ko) 2018-05-08 2019-12-05 주식회사 애포샤 캐싱 장치 및 방법

Also Published As

Publication number Publication date
DE112013004250B4 (de) 2022-08-25
WO2014036307A1 (en) 2014-03-06
US10346095B2 (en) 2019-07-09
JP2015535355A (ja) 2015-12-10
CN104903872B (zh) 2019-03-29
US9058123B2 (en) 2015-06-16
US20140068197A1 (en) 2014-03-06
JP2018125025A (ja) 2018-08-09
US20140237147A1 (en) 2014-08-21
KR20150081424A (ko) 2015-07-14
US10359972B2 (en) 2019-07-23
CN104903872A (zh) 2015-09-09
JP6709245B2 (ja) 2020-06-10
US20140068183A1 (en) 2014-03-06
DE112013004250T5 (de) 2015-07-09

Similar Documents

Publication Publication Date Title
KR101841997B1 (ko) 순응적 존속을 위한 시스템, 방법 및 인터페이스
US10891055B2 (en) Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
US9824018B2 (en) Systems and methods for a de-duplication cache
US10339056B2 (en) Systems, methods and apparatus for cache transfers
US10073656B2 (en) Systems and methods for storage virtualization
US9697130B2 (en) Systems and methods for storage service automation
US9842053B2 (en) Systems and methods for persistent cache logging
US9612966B2 (en) Systems, methods and apparatus for a virtual machine cache
US8996807B2 (en) Systems and methods for a multi-level cache
US9122579B2 (en) Apparatus, system, and method for a storage layer
US20120210066A1 (en) Systems and methods for a file-level cache
US8874823B2 (en) Systems and methods for managing data input/output operations
US8769196B1 (en) Configuring I/O cache
EP4120090A1 (en) Storage design for host controlled logically addressed flexible data layout
US10848555B2 (en) Method and apparatus for logical mirroring to a multi-tier target node
TWI564803B (zh) 用於儲存虛擬化的系統和方法

Legal Events

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