KR101507093B1 - 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법 - Google Patents

정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법 Download PDF

Info

Publication number
KR101507093B1
KR101507093B1 KR1020140067327A KR20140067327A KR101507093B1 KR 101507093 B1 KR101507093 B1 KR 101507093B1 KR 1020140067327 A KR1020140067327 A KR 1020140067327A KR 20140067327 A KR20140067327 A KR 20140067327A KR 101507093 B1 KR101507093 B1 KR 101507093B1
Authority
KR
South Korea
Prior art keywords
speed
low
segment
cache
metadata
Prior art date
Application number
KR1020140067327A
Other languages
English (en)
Inventor
백승훈
Original Assignee
중원대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 중원대학교 산학협력단 filed Critical 중원대학교 산학협력단
Priority to KR1020140067327A priority Critical patent/KR101507093B1/ko
Application granted granted Critical
Publication of KR101507093B1 publication Critical patent/KR101507093B1/ko
Priority to US14/723,539 priority patent/US9626260B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법에 관한 것으로서, 고속 저장 장치와 저속 저장장치가 혼합된 하이브리드 저장 시스템에 있어서 고속 저장 장치를 캐시 장치로서 이용하여 데이터 읽기 쓰기 성능을 향상시키고, 정전이 발생하더라도 일관성 있는 데이터가 지속 가능하도록 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법에 관한 것이다.
본 발명에 따른 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치는 메타데이터의 무결성 여부와 두 개의 메타데이터 영역에 저장된 메타데이터의 버전 정보를 제공하는 메타정보부; 상기 메타데이터의 일관성을 유지하기 위해, 다수의 저장장치를 구성하는 다수의 고속 및 저속세그먼트들 중 각 저속 세그먼트들의 사용 빈도 및 캐싱 유무에 대한 정보를 제공하는 사용빈도표 저장부; 상기 다수의 저장장치를 구성하는 세그먼트들 중 각 고속 세그먼트가 어느 저속 세그먼트를 캐싱하고 있는지에 대한 정보를 제공하는 주소사상표 저장부; 및 상기 주소사상표에 반영되지 못한 신규 캐싱정보를 제공하는 로그부; 를 포함하는 것을 특징으로 한다.

Description

정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법{APPARATUS AND A METHOD FOR PERSISTENT WRITE CACHE}
본 발명은 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법에 관한 것으로서, 고속 저장 장치와 저속 저장장치가 혼합된 하이브리드 저장 시스템에 있어서 고속 저장 장치를 캐시 장치로서 이용하여 데이터 읽기 쓰기 성능을 향상시키고, 정전이 발생하더라도 일관성 있는 데이터가 지속 가능하도록 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법에 관한 것이다.
일반적으로 컴퓨터를 이용하는 분야에 있어서 저장 시스템은 데이터를 유지하기 위한 중요한 요소 중 하나이다.
최근에는 하드디스크(HDD, Hard disk Drive)와는 전혀 다른 새로운 구조의 저장장치, 즉 반도체로 이루어진 고체 상태 드라이브(SSD, Solid State Drive)와 같은 반도체 저장장치가 최근 급부상하면서 발전하고 있다. 이러한 반도체 저장장치는 하드디스크에 비하여 비용이 비싸지만 그 처리속도는 하드디스크 드라이브보다 수백 배 이상 빠르다.
고체 상태 드라이브들로만 구성된 저장장치의 성능은 매우 높지만 하드디스크와 대비하여 용량이 작다. 이와는 반대로 기존의 하드디스크 기반의 저장장치는 비용 대비 용량이 크지만 성능이 매우 낮다. 따라서, 서로 상반되는 특성을 갖는 고체 상태 드라이브와 하드디스크 드라이브를 엮어 하나의 가상 저장장치로 만들려는 노력이 많이 이루어지고 있다.
보통 컴퓨터에서 사용되는 모든 데이터는 저속 저장장치(하드디스크 드라이브)에 저장하되, 자주 사용되는 데이터는 고속 저장장치(고체 상태 드라이브)에 캐싱한다. 하지만 정전 발생시 데이터의 일관성 유지 문제 때문에 고속 저장 장치를 읽기 캐시로서만 사용한다. 즉, 고속 저장장치로 캐싱된 영역에 대한 쓰기 요청이 내려지면 캐싱된 영역은 고속 저장장치에서 퇴출되어야 한다. 그러므로 읽기 위주의 작업에는 기존 기술들이 좋은 성능을 보여주지만 쓰기가 많은 작업에서는 고속 저장 장치를 사용한 효과를 얻을 수 없다.
쓰기 캐시란 크래쉬나 정전 후에도 캐싱된 데이터의 일관성 유지하면서 고속 저장장치에 더티 데이터(Dirty Data)를 보유할 수 있는 캐시이다. 하지만 성능 저하 및 데이터 일관성 유지 문제 때문에 일반 저장장치로 만든 쓰기 캐시는 아직 나오지 못했다.
쓰기 캐시는 캐싱된 데이터와 더불어 캐시 메타데이터를 비휘발성 저장장치에 일관성 있게 저장해야 한다. 캐시 정보가 변경될 때마다 캐시 메타데이터가 변경되어야 하기 때문에 성능저하가 크다. 본 발명에서는 쓰기 캐시의 오버헤드를 무시할 수 있는 고성능 쓰기 캐시를 제시한다. 쓰기 캐시는 기존 읽기 전용 캐시에 비해서 두배에 가까운 성능 향상을 제공할 수 있다.
정전 후에도 캐싱된 데이터와 캐시 메타데이터의 일관성을 유지하여 시작 후 바로 캐싱된 데이터를 사용할 수 있는 기능을 제공한다.
본 발명의 일실시 예에서 캐시의 메타데이터 저장 오버헤드가 매우 적다. 특히, 요청받은 데이터들의 사용률 학습을 장시간 수행한 후에 주기적으로 캐시 데이터를 변경하는 방식을 사용한다. 데스크톱 워크로드에서는 실시간에 캐시 데이터를 변경하는 기존 캐시 정책 못지 않게 본 발명의 일실시 예에서 설명하는 주기적 캐시 갱신 방식이 좋은 캐시 히트율을 보일 수 있다.
본 발명은 지속형 쓰기 캐시의 일관성 문제를 해결하는데 있어서 특수한 장치를 사용하지 않고 시장에서 쉽게 구할 수 있는 일반 고속 저장장치를 사용한다.
또한, 시근성(recency)과 사용빈도(frequency)를 고려한다. 최근에 사용된 데이터들이나 높은 사용빈도의 데이터들 캐싱될 수 있다. 사용빈도가 높더라도 최근에 사용되지 않았다면 캐싱되지 않는다. 종래기술은 시근성(recency)과 사용빈도(frequency)를 고려한 캐싱정책이 많으나, 휘발성 램을 위해서 설계되었기 때문에 정전에도 지속 가능한 쓰기 캐시에는 사용할 수 가 없다. 따라서, 본 발명에서는 기존 캐시 정책들과는 구조적으로 다른 접근방법을 이용한다.
특히, 본 발명은 저속 저장 장치를 이용하여 읽기 캐싱뿐만 아니라 쓰기 캐싱이 가능하고 정전에도 캐싱된 데이터가 손상되지 않고 보존될 수 있도록 관리하는 읽기 쓰기 캐시 방법을 제공한다.
한국공개특허 제2014-0053309호(공개일: 2014.05.07)
본 발명은 상기와 같은 종래기술의 문제점을 해결하기 위해 제안된 것으로 고속 저장장치 및 저속 저장장치를 통합하여 이용함으로써, 데이터의 효율적인 관리가 가능한 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 기본적으로 데이터들은 저속 저장장치에 저장하고, 자주 사용되는 데이터는 고속 저장장치에 읽기 및 쓰기 캐싱되도록 하여 자주 사용되는 데이터의 읽기 요청 및 쓰기 요청을 빠르게 제공하는데 다른 목적이 있다.
또한, 본 발명은 비정상적인 종료시에도 고속 저장장치에 쓰기 캐싱된 데이터 및 캐싱 정보를 일관성 있게 보존할 수 있도록 하는 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명에 따른 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치는, 메타데이터의 무결성 여부와 두 개의 메타데이터 영역에 저장된 메타데이터의 버전 정보를 제공하는 메타정보부; 상기 메타데이터의 일관성을 유지하기 위해, 다수의 저장장치를 구성하는 다수의 고속 및 저속세그먼트들 중 각 저속 세그먼트들의 사용 빈도 및 캐싱 유무에 대한 정보를 제공하는 사용빈도표 저장부; 상기 다수의 저장장치를 구성하는 세그먼트들 중 각 고속 세그먼트가 어느 저속 세그먼트를 캐싱하고 있는지에 대한 정보를 제공하는 주소사상표 저장부; 및 상기 주소사상표 저장부에 반영되지 못한 신규 캐싱정보를 제공하는 로그부; 를 포함한다.
본 발명에서 상기 메타정보부는, 상기 메타데이터 영역에 저장된 메타데이터가 필요 또는 불필요한 데이터인지 알 수 있게 해주는 식별 정보를 저장하는 ID;
상기 두 개의 메타데이터 영역 중 어느 메타데이터 영역에 저장된 메타데이터가 최신인지를 나타내 는 버전; 및 상기 메타데이터 저장 시 불완전 상태로 중단되었을 경우 상기 메타데이터의 무결성 여부를 검사하기 위해 사용되는 해쉬; 를 포함한다.
본 발명에서 상기 사용빈도표 저장부는, 상기 각 저속 세그먼트의 개수에 대응하는 수만큼 다수의 사용빈도항목으로 구성된다.
본 발명에서 상기 사용빈도항목은, 상기 각 저속 세그먼트 중 최근에 사용된 저속 세그먼트를 가리키는 사용빈도값; 및 상기 저속 세그먼트가 상기 고속 세그먼트들 중 어느 하나에 매핑되었는지를 가리키는 캐시비트; 를 포함한다.
본 발명에서 기 주소사상표 저장부는, 상기 각 저속 세그먼트의 개수에 대응하는 수만큼 다수의 주소사상항목으로 구성되고, 상기 주소사상항목은 캐시된 저속 세그먼트 주소를 보유한다.
본 발명에서 상기 로그부는 다수개의 섹터로 구분되고, 상기 섹터는 메타데이터의 버전 정보를 포함하는 메타버전; 상기 섹터에 저장된 데이터에 오류가 있는지 검사하기 위해 사용되는 해쉬; 상기 각 고속 세그먼트 주소가 특정 저속 세그먼트 주소로 캐싱되었으나, 기존 주소사상표 저장부에 반영 여부를 나타내는 캐시갱신항목; 및 상기 다수개의 섹터 중 어느 한 섹터 내 상기 캐시갱신항목의 개수를 가리키는 항목개수; 를 포함한다.
상기 목적을 달성하기 위한 본 발명의 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법은, 사용빈도값이 사용빈도 기준값 이상인 저속 세그먼트, 즉 핫 세그먼트의 주 메모리상 사용빈도값의 변경을 금지하는 단계; 상기 핫 세그먼트의 개수와 고속 세그먼트의 개수를 비교하는 단계; 상기 비교 결과 핫 세그먼트의 개수가 상기 고속 세그먼트의 개수 이하일 경우, 캐시시계의 시작 값을 0으로 설정하는 단계; 상기 캐시시계의 개수와 상기 저속 세그먼트의 개수를 비교하는 단계; 상기 비교 결과 상기 캐시시계의 개수가 상기 저속 세그먼트의 개수 이하일 경우, 상기 캐시시계가 가리키는 상기 저속 세그먼트가 핫 세그먼트이면서 캐싱되지 않았는지를 검사하는 단계; 상기 검사 결과 상기 저속 세그먼트가 캐싱되지 않았다면, 퇴출시킬 다음 고속 세그먼트로 퇴출시계를 이동시키는 단계; 상기 이동된 퇴출시계가 가리키는 고속 세그먼트에 저장된 데이터를 고속 저장장치에서 퇴출시키는 단계; 현재의 퇴출시계 값은 고속 세그먼트 주소로, 현재의 캐시시계값은 저속 세그먼트 주소로 하는 캐시갱신항목을 로그에 추가하는 단계; 및 상기 캐시시계가 가리키는 저속 세그먼트를 상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 단계; 를 포함한다.
본 발명에서 상기 핫 세그먼트의 개수와 고속 세그먼트의 개수를 비교하는 단계 이후에, 상기 비교 결과 상기 핫 세그먼트의 개수가 상기 고속 세그먼트의 개수를 초과할 경우, 주 메모리의 모든 사용빈도값에 감쇠상수를 곱하고 상기 곱해진 결과로 사용빈도값으로 재저장하는 단계; 를 더 포함한다.
본 발명에서 상기 캐시시계의 개수와 상기 저속 세그먼트의 개수를 비교하는 단계 이후에, 상기 비교 결과 상기 캐시시계의 개수가 상기 저속 세그먼트의 개수를 초과할 경우, 주 메모리의 모든 사용빈도값에 대해서 변경 금지를 해제하는 단계; 를 더 포함한다.
본 발명에서 상기 캐시시계가 가리키는 상기 저속 세그먼트가 핫 세그먼트이면서 캐싱되지 않았는지를 검사하는 단계 이후에, 상기 검사 결과 상기 저속 세그먼트가 캐싱되었다면, 상기 캐시시계를 가리키는 방향을 한단계 이동시키는 단계; 를 더 포함한다.
본 발명에서 상기 고속 세그먼트에 저장된 데이터를 고속 저장장치에서 퇴출시키는 단계는, 퇴출 저속 세그먼트들은 주소사상표의 퇴출시계 중 n번째 주소사상항목이 되고, 퇴출 저속 세그먼트의 캐시비는 0, 저속-고속 사상트리에서 상기 퇴출 저속 세그먼트를 제거하는 단계; 를 포함한다.
본 발명에서 상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 단계는, 주 메모리의 주소사상표의 퇴출시계 n번째 주소사상항목에 캐시시계를 대입하고 상기 캐시시계가 가리키는 저속 세그먼트의 캐시비트를 1로 설정하며, 상기 캐시시계가 가리키는 상기 저속 세그먼트의 데이터를 상기 퇴출시계가 가리키는 고속세그먼트로 복사 및 저속-고속 사상 트리에서 상기 캐시시계가 가리키는 저속 세그먼트를 상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 정보를 추가하는 단계; 를 포함한다.
또한, 상기 목적을 달성하기 위한 본 발명의 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법은, 저속 저장장치의 두 개의 메타데이터 영역에 저장된 메타데이터 중에서 최신 버전에 해당하는 메타데이터를 주 메모리의 메타데이터로 복사하는 단계; 상기 주 메모리의 주소사상표 저장부의 모든 주소사상항목 중 n번째 주소사상항목의 저속 세그먼트 주소 m을 이용하여, 저속-고속 사상 트리에 m번째 저속 세그먼트 주소에서 n번째 고속 세그먼트 주소로의 사상정보를 추가하는 단계; 로그에 저장된 각 캐시갱신항목에 대해서 상기 고속 세그먼트에서 상기 저속 세그먼트가 캐싱되었다는 메타데이터 정보를 주 메모리의 메인 메타데이터와 저속-고속 사상트리에 추가하는 단계; 및 메타정보의 버전을 1증가시키고, 상기 주 모메리의 메타데이터를 다른 메타데이터 영역의 메타데이터에 저장하는 단계; 를 포함한다.
본 발명에서 상기 저속-고속 사상트리에 추가하는 단계는, 마지막 캐시갱신항목이 가리키는 사상정보는 상기 주 메모리의 메타데이터에서 제거하는 단계; 를 포함한다.
본 발명에서 상기 메타데이터 정보를 주 메모리의 메인 메타데이터와 저속-고속 사상트리에 추가하는 단계는, 상기 로그의 각 캐시갱신항목에 대해서, 옛 저속 세그먼트를 주소사상표 저장부의 고속 세그먼트 n번째 주소사상항목이라고 하면, 옛 저속 세그먼트가 가리키는 저속세그먼트의 캐시비트에 0을 대입하고, 주소사상표의 고속세그먼트주소 n번째 항목에 저속세그먼트주소를 대입하며, 그 저속세그먼트주소 가리키는 저속세그먼트의 캐시비트에 1을 대입하여 저속-고속 사상 트리에 저속세그먼트주소에서 고속세그먼트주소로 캐싱하는 정보 삽입하는 단계; 를 포함한다.
본 발명에 따르면 정전과 같은 비상 상황 발생시 캐싱된 데이터의 손상을 방지하는 이점이 있다.
또한, 본 발명에 따르면 자주 사용되는 데이터는 고속 저장장치에 읽기 및 쓰기 캐싱되도록 하여 자주 사용되는 데이터의 읽기 요청 및 쓰기 요청을 빠르게 제공할 수 있는 이점이 있다.
또한, 본 발명에 따르면 고속 저장장치 및 저속 저장장치를 통합하여 이용함으로써, 데이터의 효율적인 관리가 가능한 이점이 있다.
도 1은 본 발명의 일실시 예에 따른 컴퓨터 저장 시스템의 개략적인 구성을 나타낸 블록도.
도 2는 본 발명의 일실시 예에서 사용자가 보는 논리 저장공간과 고속저장장치 및 저속저장장치의 주소 매핑을 나타낸 구성도.
도 3은 본 발명에 일실시 예에서 비휘발성 저장장치에 보관하는 메타데이터의 구조를 나타낸 구성도.
도 4는 본 발명에 일실시 예에서 주 메모리에 보관하는 메타데이터의 구조를 나타낸 구성도.
도 5는 본 발명에 일실시 예에서 캐싱 및 퇴출 절차를 나타내는 예시도.
도 6은 본 발명에 일실시 예에 따른 캐시에서 데이터를 퇴출하고 캐시로 데이터를 반입하는 방법을 나타낸 흐름도.
도 7은 본 발명에 일실시 예에 따른 재시작시 캐시 메타데이타를 복원하는 방법을 나타낸 흐름도.
이하에서, 본 발명의 바람직한 실시 예가 첨부된 도면들을 참조하여 설명할 것이다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
도 1은 본 발명의 일실시 예에 따른 컴퓨터 저장 시스템의 개략적인 구성을 나타낸 블록도이다.
도 1을 참조하면, 본 발명인 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법이 구현될 수 있는 시스템의 구조를 보여준다. 본 발명은 컴퓨터(100)의 시스템 소프트웨어(101)에 적용되고, 상기 컴퓨터(100)는 고속저장장치(103)과 저속저장장치(104) 및 주 메모리(102)를 포함하여 구성된다.
고속저장장치(103)는 전원이 끊어져도 데이터가 유지되는 비휘발성 장치이고, 단일 플래시 기반 SSD 또는 SSD로 구성된 RAID(Redundant Array of Independent Disks)가 고속 저장장치(103)로 사용될 수 있다.
저속저장장치(104)는 상기 고속저장장치(103)보다 성능이 느리고 가격이 저렴한 저장장치이며, 단일 하드디스크 또는 하드디스크로 구성된 RAID가 저속저장장치(104)로 사용될 수 있다.
일반적으로 모든 데이터는 상기 저속저장장치(104)에 저장되어 있지만, 자주 사용되는 저장공간은 상기 고속 저장장치(103)에 캐싱된다. 저장공간은 여러 섹터로 구성된 세그먼트로 관리된다. 상기 세그먼트 크기가 클수록 공간 지역성의 이득을 얻을 수 있다.
도 2는 본 발명의 일실시 예에서 사용자가 보는 논리 저장공간과 고속저장장치 및 저속저장장치의 주소 매핑을 나타낸 구성도이다.
도 2를 참조하면, 본 발명에서는 고속 저장장치(103)는 고속 세그먼트들(201)로 저속 저장장치(104)는 저속 세그먼트(202~207)로 구성된다. 자주 사용되지 않는 세그먼트(이하, 콜드 세그먼트, 203)는 저속저장장치에서 읽기/쓰기 요청을 서비스한다. 자주 사용되는, 즉 사용빈도값(422)이 사용빈도기준값 이상인 세그먼트(이하 핫 세그먼트, 202)는 고속 세그먼트(201)에 캐싱된다. 즉, 핫 세그먼트(202)로 온 읽기/쓰기 요청은 주소가 사상(이하 캐싱)된 고속세그먼트(201)로 전달된다.
핫 세그먼트(202)는 고속 세그먼트(201)로 캐싱된 핫 세그먼트(204)와 캐싱되지 못한 핫 세그먼트(205)로 구분될 수 있으며, 사용빈도값(422)이 사용빈도기준값 미만인 콜드 세그먼트(203)은 고속 세그먼트(201)로 캐싱된 콜드 세그먼트(206)와 캐싱되지 않은 콜드 세그먼트(207)로 구분될 수 있다.
각 저속 세그먼트들(202~207)의 사용자의 사용빈도에 따라서 상기 각 저속 세그먼트(202~207)의 사용빈도값(422)이 실시간에 변하므로 상기 핫 세그먼트(202)가 콜드 세그먼트(203) 또는 상기 콜드 세그먼트(203)가 핫 세그먼트(202)로 변경되기도 한다. 따라서, 캐싱된 핫 세그먼트(204)가 캐싱된 콜드 세그먼트(206)으로 변경 또는 캐싱되지 않은 콜드 세그먼트(207)가 캐싱되지 않은 핫 세그먼트(205)로 변경 될 수 있다. 그러나, 상기 핫 세그먼트(202)는 고속세그먼트(201)로 캐싱되는 것이 바람직하므로, 캐싱된 콜드 세그먼트(206)을 고속저장장치(103)에서 퇴출하고, 캐싱되지 않은 핫 세그먼트(205)을 고속저장장치(103)에 캐싱하는 퇴출 및 캐싱 절차가 필요하다.
상기 핫 세그먼트(202)는 고속 세그먼트들(201) 중 임의의 고속 세그먼트(201)에 캐싱되어 있다. 따라서, 특정 핫 세그먼트(202)가 어느 고속 세그먼트(201)로 캐싱되었는지를 알 수 있게 주소사상 정보를 관리해야 한다. 주소사상 정보 및 캐싱을 위해 유지되는 정보를 메타데이터(300~440)라고 한다.
본 발명에서는 각 핫 세그먼트(202)가 고속 저장장치(104)의 어느 세그먼트(고속 세그먼트)로 캐싱되었는지 알 수 있는 사상 수단 즉, 고속-저속 사상 트리(440)를 구성으로 한다. 또한, 각 고속 세그먼트(201)가 어느 저속 세그먼트(204,206)를 캐싱하고 있는지 알 수 있는 주소사상표(330,430)를 제공한다.
기존의 캐시 정책의 특징은 휘발성 메모리를 위해서 개발되었다. 즉, 지속형 캐시가 아니기 때문에 일관성 문제가 발생하지 않는다. 지속형 캐시에 일관성을 유지하면서 기존 캐싱 정책을 적용하면 성능저하가 심하다. 지속형 캐시에서는 캐시 메타데이터가 변경될 때마다 메타데이터를 비휘발성 저장장치에 저장해야 한다. 스토리지급 캐시의 용량이 큰 만큼 캐시 메타데이터가 매우 크다. 더구나. 최악의 경우에는 매 요청마다 캐시 메타데이타를 저장해야 하기 때문에 성능 저하가 심해져서 기존 캐싱 정책의 구조와는 다른 방식이 필요하다.
잦은 캐시 메타데이터 갱신 오버헤드를 줄여야 하기 때문에 본 발명에서는 일정시간동안 세그먼트들의 사용빈도를 학습한 뒤에 캐시를 갱신하는 방식을 택한다. 캐시 갱신 시간 간격은 몇 시간에서 하루가 될 수 있다. 또는 캐시 갱신은 사용자가 사용하지 않는 유휴 시간동안 발생할 수 있다.
비휘발성 저장장치에 저장되는 캐시 메타데이터의 구조는 도 3과 같다. 설계조건에 따라 비휘발성 저장장치는 고속 저장장치(103), 저속 저장장치(104) 및 제3의 저장장치가 사용될 수 있다.
도 3을 참조하면, 메인 메타데이터(301)은 메타정보부(310)와 사용빈도표 저장부(320)와 주소사상표 저장부(330) 및 로그부(340)를 포함하여 구성된다. 메인 메타데이터(301)에 있는 메타정보부(310)와 사용빈도표 저장부(320)와 주소사상표 저장부(330) 및 로그부(340)의 순서는 서로 바뀔 수 있다.
메타정보부(310,410)는 메타데이터의 무결성 여부와 두 개의 메타데이터 영역에 저장된 메타데이터의 버전 정보를 제공한다. 상기 메타정보부(310,410)는 ID(311,411)와 버전(312,412)과 해쉬(313,413)를 포함하여 구성된다.
ID(311,411)는 저장된 메타데이터가 필요한 데이터인지 불필요한 데이터인지 알 수 있게 해주는 식별정보를 저장한다.
버전(312,412)은 두 메타데이터 영역(300, 350) 중에서 어느 것이 최신의 메타데이터인지를 가리킨다. 특히, 상기 메타데이터를 저장할 때마다 버전 값은 증가하고, 상기 메타데이터는 상기 두 메타데이터 영역(300, 350) 중 메타데이터 영역1(300)과 메타데이터 영역2(350) 중 번갈아가며 저장된다.
해쉬(313,413)는 상기 메인 메타데이터(301)를 저장하는 중에 불완전 상태로 중단되었을 때에 메인 메타데이터가 무결하지 않은지를 검사하기 위하여 사용된다.
사용빈도표 저장부(320)를 구성하는 다수의 사용빈도항목(321)은 각 저속 세그먼트(202~207)에 대응된다. 그래서 사용빈도항목(321)의 개수는 모든 저속 세그먼트들(202~207)의 개수와 같다.
상기 사용빈도항목(321)은 사용빈도값(322)와 캐시비트(323)으로 구성된다. 사용빈도값(322)은 해당 저속 세그먼트(202~207)가 최근에 자주 사용되었는지를 가리킨다. 캐시비트(323)는 상기 저속 세그먼트(202~207)가 고속 세그먼트(201)들 중의 어느 하나에 매핑되었는지 즉, 캐싱되었는지를 가리킨다. 만약 이때 캐시비트(323)이 1이면 캐싱되었음을 나타낸다.
주소사상표 저장부(330)는 각 고속 세그먼트(201)가 어떤 저속 세그먼트(202~207)를 캐싱하고 있는지를 가리킨다. 상기 주소사상표 저장부(330)의 항목수는 고속 세그먼트(201) 개수와 같고, 각 항목은 캐싱된 저속 세그먼트(204, 206) 주소를 보유한다.
로그부(340)에는 상기 주소사상표 저장부(330)의 변경 사항이 기록된다. 비휘발성 저장장치에 저장된 상기 주소사상표 저장부(330)의 크기가 크기 때문에 주소사상표 저장부(330)가 변경될 때마다 상기 주소사상표 저장부(330)를 갱신하는 것은 큰 오버헤드이다. 따라서, 상기 주소사상표 저장부(330)에 변경사항이 생기면 주소사상표(330)를 바꾸지 않고 변경되는 사항만 상기 로그부(340)에 저널링 방식으로 섹터(341) 단위로 기록한다.
상기 로그부(340)를 구성하는 다수개의 섹터(341)는 메타버전(342)과 해쉬(343)와 항목 개수(344)와 캐시갱신항목(345)을 포함하여 구성된다. 메타버전(342)은 메인 메타데이터(301)의 버전(312)과 같아야 한다. 만약, 그렇지 않으면 해당 섹터(341)는 무효로 처리된다. 해쉬(343)는 섹터에 저장된 데이터에 오류가 있는지를 검사하기 위해서 사용된다. 항목개수(344)는 한 섹터내의 캐시갱신항목(345)의 개수를 가리킨다.
로그부(340)에는 한 번에 한 섹터(341)씩 주소사상표 저장부(330)의 갱신 사항을 기록하고, 저널링 방식처럼 첫 섹터(341)부터 순서대로 이어서 저장한다. 한 섹터(341)에는 한 개 이상의 캐시갱신항목(345)이 있다. 상기 캐시갱신항목(345)은 고속 세그먼트 주소(346)와 저속 세그먼트 주소(347)로 구성되어 있다.
각 캐싱갱신항목(345)는 해당 고속 세그먼트 주소(346)가 저속 세그먼트 주소(347)로 캐싱되는 변경 사항이 있으나, 기존 주소사상표(330)에는 반영이 되지 않았음을 나타낸다.
상기 주소사상표 저장부(330)에는 로그부(340)의 모든 캐시갱신항목(345)의 사상 정보가 갱신된다.
이상의 메타데이터(301)들이 저장되는 메타데이터 영역1(300)과 메타데이터 영역2(350)는 비휘발성 저장장치(103,104)에 저장된다. 상기 비휘발성 저장장치(103,104)에 접근하는 시간은 주 메모리(102) 접근 시간보다 매우 느리기 때문에 실시간에는 비휘발성 저장장치(103,104)에 저장된 메타데이터(301)를 직접 접근하지 않는다.
실시간에 사용되는 메타정보부(410)와 사용빈도표 저장부(420)와 주소사상표 저장부(430)는 주 메모리(100)에 위치한다. 상기 주 메모리(100)에 위치한 메타정보부(410)와 사용빈도표 저장부(420)와 주소사상표 저장부(430)는 비휘발성 장치(103,104)에 저장되는 메타정보(310)와 사용빈도표(320)와 주소사상표(330)의 구조와 같다. 고속-저속 사상 트리(440)는 비휘발성 저장장치(103,104)에 저장되지 않고 주 메모리에만 존재한다.
사용빈도표 저장부(320)와 주소사상표 저장부(330)는 대용량 데이터이기 때문에 이것들이 변경될 때마다 비휘발저장장치에 저장하는 것은 성능에 큰 영향을 미친다. 그래서 메타데이터를 저장하는 회수를 최소화하는 정책을 사용한다.
주 메모리(102)에 존재하는 메타데이터(400)와 저속-고속 사상 트리(440)는 도 4에 도시된다.
도 4를 참조하면, 저속-고속 사상 트리(440)는 주어진 저속 세그먼트(202~207)가 어느 고속 세그먼트(201)에 매핑이 되었는지 또는 매핑되지 않았는지를 찾는 데에 사용된다. 대부분의 저속 세그먼트(205,207)가 고속 세그먼트(201)로 캐싱되어 있지 않기 때문에 테이블 방식보다 트리가 더 적은 메모리를 소모한다. 따라서, 저속-고속 사상 트리(440)은 라딕스 트리, 인덱스 트리, 레드블랙 트리, B+트리, 해쉬테이블, 이진 트리 중 어느 하나로 구현하는 것이 바람직하다. 저속-고속 사상 트리(440)은 주소사상표 저장부(430)로부터 생성될 수 있기 때문에 비휘발성 저장장치(103,104)에 저장되지 않는다.
핫 세그먼트(202) 및 콜드 세그먼트(203)의 시근성(recency)과 사용빈도(frequency)를 고려할 수 있도록 각 저속 세그먼트(202~207)는 사용빈도값 변수를 가진다.
세그먼트에 히트가 발생할 때마다 상기 세그먼트의 사용빈도값은 기 설정된 상수값(사용빈도증가값)만큼 증가한다. 사용빈도값의 과도한 증가를 막기 위해서 연속으로 히트된 경우에는 히트가 한번인 것으로 간주한다.
사용빈도값이 기 설정한 문지방 값(사용빈도기준값; threshold)을 넘으면 해당 저속 세그먼트(202~207)를 핫 세그먼트(202)로 간주한다. 만약, 한번이라도 접근한 저속 세그먼트(202~207)의 수가 고속 세그먼트(201) 수보다 적다면 한번이라도 접근한 저속 세그먼트(202~207)를 핫 세그먼트(202)로 간주한다.
시근성(recency)를 위해서 핫 세그먼트(202)의 개수가 캐싱 가능한 세그먼트 개수(고속 세그먼트(201)의 수)를 넘을 때마다. 주 메모리(102)에 위치한 사용빈도값(422)에 대한 감쇠 절차가 수행된다. 이를통해 핫 세그먼트(202)의 개수가 감소하게 된다. 감쇠 절차에서는 모든 사용빈도값에 감쇠상수(0보다 크고 1보다 작은 수)를 곱하여 모든 사용빈도값(422)을 줄인다. 이렇게 하면 사용빈도가 많더라도 사용한지 오래되었다면 낮은 사용빈도값(422)을 가진다.
특정 저속 세그먼트(202~207)에 읽기 또는 쓰기 요청이 발생될 때마다 해당 저속 세그먼트의(202~207)의 사용빈도값은 기 설정한 사용빈도증가값만큼 증가한다.
그러므로 이 캐시 정책은 시근성과 사용빈도를 고려하게 된다.
캐싱 및 퇴출 절차는 사용자가 설정한 시점에 시행되거나 주기적으로 수행하되 가장 낮은 우선순위로 실행되게 할 수 있다. 이 주기는 몇 시간 또는 하루로 정할 수 있다. 캐싱 및 퇴출 절차가 수행되는 시점을 컴퓨터를 사용하지 않는 시간에 설정하게 되게하면 캐싱 및 퇴출 오버헤드를 사용자는 경험하지 못하게 된다.
핫 세그먼트(202)는 사용빈도값이 사용빈도기준값보다 큰 저속세그먼트들을 말한다. 사용자의 사용 빈도에 따라서 핫 세그먼트(202)가 콜드 세그먼트(203)으로도 될 수 있고, 콜드 세그먼트(203)가 핫 세그먼트(202)가 될 수 있다. 일반적으로 핫 세그먼트(202)는 고속 세그먼트(201)로 캐싱되어 있고, 콜드 세그먼트(203)은 고속 세그먼트(201)에 캐싱되어 있지 않다.
순간적으로 사용빈도값이 사용빈도기준값 이상인 저속 세그먼트, 즉 핫 세그먼트(202)가 잠시동안 고속 세그먼트로 캐싱되어 있지 않는 순간이 있다. 이것을 본 발명에서는 '핫 세그먼트인데 캐싱되지 않은 세그먼트(205)'라고 한다. 반대로 콜드 세그먼트가 고속 세그먼트로 캐싱되어 있는 순간이 있다. 이것을 본 발명에서는 '핫 세그먼트가 아닌데 캐싱된 세그먼트(206)'라고 한다.
캐싱 및 퇴출 절차가 시작하면 '핫 세그먼트인데 캐싱되지 않은 세그먼트(205)'를 고속 세그먼트(201)로 캐싱하고 '핫 세그먼트가 아닌데 캐싱된 세그먼트(206)'를 고속 저장장치(103)에서 퇴출시킨다. 캐싱 및 퇴출 절차가 시작할 때에는 가장 먼저 핫 세그먼트 개수가 고속 세그먼트(201)의 개수를 넘기지 않도록 상기 감쇠 절차를 수행한다.
도 5는 본 발명에 일실시 예에서 캐싱 및 퇴출 절차를 나타내는 예시도이다.
도 5는 고속 세그먼트(201)가 4개이고 저속 세그먼트(202,203)가 16개이고, 사용빈도기준값이 20인 경우에 감쇠와 캐싱 및 퇴출 절차가 수행되는 일 실시예를 보여준다.
사용빈도표 저장부(420)와 주소사상표 저장부(430)는 도 5에 나타난 것과 같이 시작과 끝이 연결된 원형으로 표현할 수 있다. 사용빈도표는 각 저속 세그먼트(202~207)의 사용빈도값(422)을 포함하고 사용빈도표 저장부(420)의 항목의 개수는 저속 세그먼트(202~207)의 개수이다. 주소사상표 저장부(430)는 각 고속 세그먼트(201)가 캐싱하고 있는 저속 세그먼트(204,206)의 주소를 항목으로 하고, 항목의 개수는 고속 세그먼트(201)의 개수를 나타낸다.
도 5(a)를 참조하면, 사용빈도값(422)이 사용빈도기준값보다 큰 핫 세그먼트(202)의 개수가 고속 세그먼트(201)의 개수보다 크면 감쇠 절차를 수행한다. 감쇠 절차는 사용빈도표(420)의 각 사용빈도값(422)에 감쇠상수을 곱하여 그 사용빈도값(422)으로 재설정한다. 도 5(b)에 따르면, 도 5(a)의 일실시 예에서 감쇠 절차를 실행한 후에 사용빈도표 저장부(420)와 주소사상표 저장부(430)의 상태를 보여준다.
도 5(b)와 같이 핫 세그먼트의 개수가 고속 세그먼트(201)의 개수이하이면, 캐싱 및 퇴출 절차를 수행한다. 도 5(c)는 도 5(b)에서 하나의 세그먼트를 캐싱하고 퇴출한 후의 메타데이터(400)를 보여준다.
사용빈도표 저장부(420)에서 동작하는 캐시시계(500)는 캐싱 및 퇴출 절차를 시작할 때에 0부터 시작하고, 시계방향으로 돌아 '핫 세그먼트이지만 캐싱되지 않은 저속 세그먼트'(205)에서 멈춘다. 퇴출시계(501)는 마지막 위치 다음에서 시계방향으로 돌아 '콜드 세그먼트인데 캐싱된 저속 세그먼트'(206)에서 멈춘다. 퇴출시계(501)가 가리키는 곳(고속 세그먼트)에 캐싱된 저속 세그먼트(206)는 퇴출된다. 즉, 퇴출시계(501)가 가리키는 고속세그먼트(201)에 저장된 데이터를 그 데이터의 원래 위치인 저속 세그먼트(206)로 이동시키고, 주 메모리(102)의 메인 메타데이터(400)에서 그 퇴출된 저속 세그먼트(206)에 대한 캐싱 정보를 제거한다.
그 다음, 퇴출시계(501) 값과 캐시시계(500) 값을 캐시갱신항목의 고속 세그먼트 주소(346)과 저속 세그먼트 주소(347)로 이루어진 새로운 캐시갱신항목(345)를 마지막 저장한 섹터(341) 다음에 저장(로깅)한다. 이전에 저장한 섹터(341)가 없다면 (첫 섹터 저장이면) 로그(340)의 첫번째 섹터(341)에 저장한다.
상기 로깅 작업은 캐시시계(500)가 가리키는 저속 세그먼트(205)를 퇴출시계(501)가 가리키는 고속 세그먼트(201)로 캐싱하는 것이 목적이다.
로그부(340) 영역은 메타데이터영역1(300)과 메타데이터영역2(350) 두 군데 존재한다. 하지만 유효한 로그부(340)는 두 메타데이터영역(300,350)중에 한 군데뿐이다. 즉, 마지막에 저장한 메인 메타데이터(301)가 저장된 곳과 같은 메타데이터영역(300,350)에 로그부(340)를 저장한다. 최근 메인 메타데이터(301)가 메타데이터영역1(300)에 저장되었다면 메타데이터영역1(300)의 로그부(340)를 사용하고, 그렇지 않다면 메타데이터영역2(350)의 로그부(340)을 사용한다.
상기 로깅 작업이 끝난 후에, 캐시시계(500)가 가리키는 저속 세그먼트(205)를 퇴출시계(501)가 가리키는 고속 세그먼트(201)로 캐싱한다. 즉, 캐시시계(500)가 가리키는 저속 세그먼트(205)의 데이터를 퇴출시계(501)가 가리키는 고속 세그먼트(201)로 복사하고, 주 메모리의 메인 메타데이터(400)에 상기 새로운 캐싱 정보를 추가한다.
이상의 방법은 하나의 세그먼트를 퇴출시키고, 그곳에 하나의 세그먼트를 캐싱하는 절차이다. 다시 캐시시계(500)와 퇴출시계(501)는 이와 같은 방법으로 회전하여 다음 세그먼트를 퇴출하고 캐싱하는 과정을 반복한다. 상기 캐시시계(500)가 1회전하면 캐싱 및 퇴출 절차는 완료된다.
그림 5(c)에서는 퇴출시계(501)가 가리키는 고속 세그먼트(201) 0번에 캐싱된 저속 세그먼트(202) 0번을 퇴출시키고, 퇴출시계(501) 값 0과 캐시시계(500) 값 6을 각각 고속 세그먼트 주소(346)과 저속 세그먼트주소(347)로 사용하는 새로운 캐시갱신항목을 다음 섹터(341)에 로깅하고, 고속 세그먼트(201) 0번(퇴출시계)에 캐시시계(500)가 가리키는 저속 세그먼트(203) 6번을 캐싱시킨다.
상기 캐시시계(500)는 계속 돌아 다음 '캐싱되지 않은 핫 세그먼트'(205)에서 멈춘다. 도 5(d)를 참조하면, 캐시시계(500)는 9에서 멈추고 퇴출시계(501)는 2에서 멈춘다. 퇴출시계(501)가 가리키는 고속 세그먼트(201) 2번에서 저속 세그먼트(206) 7번을 퇴출시키고, 퇴출시계(501) 값 2와 캐시시계(500) 값 9를 각각 고속 세그먼트 주소(346)와 저속 세그먼트주소(347)로 사용하는 새로운 캐시갱신항목을 다음 섹터(341)에 로깅하고, 고속 세그먼트(201) 2번에 캐시시계(500)가 가리키는 저속 세그먼트(205) 9번을 캐싱시킨다.
이상의 과정을 반복하여 캐시시계(500) 사용빈도표 저장부(420)를 한바퀴돌면, 주 메모리(102)의 메인 메타데이터(400)의 버전(412)을 증가시키고, 상기 메인 메타데이터(400)를 비휘발성 저장장치(103,104)의 다음 메타데이터 영역(300,350) 에 저장시킴으로써 캐싱 및 퇴출 절차가 종료된다. 주 메모리의 메인 메타데이터(400)를 저장한 곳이 메타데이터 영역1(300)이라면, 다음에는 메인 메타데이터(400)를 메타데이터 영역2(350)에 저장하고, 그렇지 않으면 메인 메타데이터(400)를 메타데이터 영역1(300)에 저장한다. 즉 두 메타데이역 영역(300, 350)에 번갈아가면서 주 메모리(102)의 메타데이터를(400) 저장한다.
로그부(340) 영역에는 캐싱 및 퇴출 절차 과정에서 비휘발성 저장장치(103,104)의 메인 메타데이터(301)의 변경 부분을 로깅한다. 로깅 오버헤드를 줄이기 위해서 다수개의 캐시갱신항목(345)를 모아서 하나의 섹터(341)로 저장할 수도 있다.
각 섹터(341)의 메타버전(342)은 최근에 저장한 메인 메타데이터(301)의 버전(312)과 같은 값을 갖도록한다. 메타버전(342)과 버전(312)의 일치 여부를 확인함으로써 유효한 섹터(341)인지 과거에 사용된 필요없는 섹터(341)인지 구분할 수 있다.
상기 섹터(341)들은 최신의 메인 메타데이터(301)가 저장된 같은 메타데이터 영역(300,350)에 저장된다. 캐싱 및 퇴출 절차가 완료되면, 주 메모리(102)의 메인 메타데이터(400)은 비휘발성 저장장치에 저장한 메인 메타데이터(301)보다 최신의 데이터를 가지게 된다. 따라서, 캐싱 및 퇴출 절차가 완료된 직후에 주 메모리(102)의 메인 메타데이터(400)을 비휘발성 저장장치(103,104)에 위치한 다음 메인 메타데이터(301)에 저장한다.
만약, 캐싱 및 퇴출 절차 중에 정전이나 시스템 종료가 발생하면, 비휘발성 저장장치(103,104)에 저장된 최근 메인 메타데이터(301)가 저장된 메타데이터 영역(300,350)에 있는 로그(340)의 유효한 섹터(341)의 캐시갱신항목(345)을 결합하면, 주 메모리(102)의 메인 메타데이터(400)을 구성할 수 있다.
각 캐시갱신항목(345)은 각 저속 세그먼트 주소(347)가 고속 세그먼트 주소(346)에 캐싱되었음을 가리킨다.
정상적인 종료나 비정상 종료 후에 시스템이 재시작하면 비휘발성저장장치(103,104)에 저장된 메인 메타데이터(301)와 로그(340)의 캐시갱신항목(345)들을 결합하여 주 메모리(102)의 메인 메타데이터(400)을 생성하고, 주 메모리(102)의 주소사상표 저장부(430)로부터 저속-고속 사상트리(440)을 생성한다.
마지막에 저장된 캐시갱신항목(345)은 캐시갱신이 성공하였는지 아닌지를 확인할 수 없기 때문에 마지막 캐시갱신항목(345)의 캐시 갱신 사항은 무효로 간주한다.
도 6은 본 발명에 일실시 예에 따른 캐시에서 데이터를 퇴출하고 캐시로 데이터를 반입하는 방법을 나타낸 흐름도이다.
도 6을 참조하면, 캐싱 및 퇴출은 임의의 시점에 또는 주기적으로 실행할 수 있다. 캐싱 및 퇴출이 시작되면 핫 세그먼트(사용빈도값이 사용빈도 기준값 이상인 저속세그먼트)들의 변동이 없도록 주 메모리의 사용빈도값(422)의 변경이 금지된다(S101).
캐싱 및 퇴출 절차는 캐싱된 콜드세그먼트(206)을 캐시(103)에 퇴출하고 캐싱되지 않은 핫 세그먼트(205)을 캐시(103)로 캐싱하는 일을 수행한다.
그 다음 2단계(S102)에서는 핫 세그먼트의 개수(202)가 고속 세그먼트의(201) 개수를 초과하면, 주 메모리(102)의 모든 사용빈도값(422)에 감쇠상수과 이 사용빈도값(422)을 곱하여 다시 사용빈도값(422)으로 저장하는 10단계를 실행한다(S110). 감쇠상수는 0보다 크고 1보다 작은수이므로이 감쇠 절차에 따라 모든 사용빈도값(422)은 일정한 비율로 작아진다. 그 다음 다시 2단계(S102)를 수행한다.
2단계(S102)에서 핫 세그먼트(202)의 개수가 고속 세그먼트의(201) 개수 이하이면, 3단계(S103)부터 본격적인 캐싱 및 퇴출을 수행한다. 캐싱 및 퇴출 절차를 처음 시작할 때에는 캐시시계(500)가 0에서 시작하고(S103), 다음 4단계에서 캐시시계(500)가 저속세그먼트(202,203)의 개수 이하인지 검사한다(S104). 캐시시계(500)의 최대값은 저속세그먼트(202,203)의 개수이다. 캐시시계(500)가 가리키는 저속세그먼트(202~207)가 핫 세그먼트(202)이고 캐싱되지 않았는지 검사하는 5단계를 수행하고(S105), 거짓이면 캐시시계(500)를 1증가하는 제12단계를(S112) 수행한 후에, 제 4단계를 수행한다. 제 5단계에서 참이면, 퇴출시계(501)를 퇴출할 다음 고속세그먼트로 이동하는 제 6단계(S106)를 수행한다. 제 6단계의 일실시 예로서 다음과 같은 수행을 할 수 있다. 퇴출시계(501)가 1씩 증가하여, 고속세그먼트(201)로 캐싱된 콜드 세그먼트(206)에서 멈춘다(S106).
그 다음, 퇴출시계(501)가 가리키는 고속세그먼트(201)에 저장된 데이터를 고속저장장치(103)에서 퇴출하는 7단계(S107)를 수행한다. 제 7단계(S107)의 구체적인 실시예로서 다음과 같을 수 있다. 퇴출 저속 세그먼트은 주소사상표 저장부(330)의 퇴출시계 중 n번째 주소사상항목(431)이되고, 퇴출 저속 세그먼트의 캐시비트는 0이되고, 저속-고속 사상 트리(440)에서 퇴출저속세그먼트를 제거한다.
현재의 퇴출시계(501) 값을 고속 세그먼트 주소(346)로 하고 현재의 캐시시계(501) 값을 저속 세그먼트 주소(347)로 하는 캐시갱신항목(345)을 로그(340)에 추가하는 8단계(S108)를 수행한다. 제8단계에서 사용되는 로그(340) 영역은 최근에 메인메타데이터(301)을 저장한 같은 메타데이터 영역(300,350)에 있다.
그 다음, 퇴출시계(501)가 가리키는 고속세그먼트(201)에 캐시시계(500)가 가리키는 저속세그먼트(202,203)를 고속 저장장장치로 캐싱하는 제9단계(S109)를 수행한다. 제9단계의 구체적인 일실시 예로는 다음과 같다. 주 메모리(102)의 주소사상표(430)의 퇴출시계중 n번째 주소사상항목(431)에 캐시시계(500)를 대입하고 캐시시계(500)가 가리키는 저속 세그먼트(202,203)의 캐시비트(423)를 1로 설정하며, 상기 캐시시계(500)가 가리키는 저속 세그먼트(205)의 데이터를 퇴출시계(501)가 가리키는 고속 세그먼트(201)로 복사하여, 저속-고속 사상 트리(440)에서 캐시시계(500)가 가리키는 저속세그먼트(202,203)를 퇴출시계(501)가 가리키는 고속세그먼트(201)로 캐싱하는 정보를 추가한다.
9단계 수행이 완료되면 12단계를 수행하고, 그 다음 4단계를 수행한다. 4단계가 거짓이면 모든 사용빈도값에 대해서 변경 금지를 해제하는 제 11단계(S111)를 수행하고 캐싱 및 퇴출 절차를 종료한다.
도 7은 본 발명에 일실시 예에 따른 재시작시 캐시 메타데이타를 복원하는 방법을 나타낸 흐름도이다.
시스템의 정상 종료 또는 비정상 종료 후에 시스템이 재시작하면 도 7에 도시된 바와 같이 주 메모리(102)의 메인 메타데이터(400)를 복원한다. 즉 캐시 정보를 복원한다.
시스템 재시작의 첫번째 단계(S201)에서는 저속저장장치(104)의 메타데이터 영역1(300)과 메타데이터 영역2(350)의 메인메타데이터(301) 중에서 최신 버전(312)의 메인 메타데이터(301)를 주 메모리의 메타데이터(400)로 복사한다.
그 다음, 주 메모리(102)의 주소사상표 저장부(430)의 모든 주소사상항목(431)에 대해서, n번째 주소사상항목(431)의 저속세그먼트(202,203) 주소 m으로써 저속-고속 사상 트리(440)에 m저속세그먼트(202~207) 주소에서 n고속세그먼트(201) 주소로의 사상 정보를 추가하는 제2단계(S202)를 수행한다.
그 다음, 제 1 단계에서 로딩한 메인 메타데이터(301)와 같은 메타데이터 영역(300,350)의 로그(340)에 저장된 각 캐시갱신항목(346)의 데이터, <고속 세그먼트 주소, 저속 세그먼트 주소>에 대해서 그 고속 세그먼트에서 그 저속 세그먼트가 캐싱되었다는 메타데이터 정보를 주 메모리(102)의 메인 메타데이터(400)와 저속-고속 사상트리(440)에 추가한다.
그 다음, 메타정보(410)의 버전(412)을 1증가하고 주 메모리의 메인 메타데이터(400)를 다음 메타데이터 영역(300,350)의 메인 메타데이터(301) 영역에 저장한다.
시스템 재시작 절차의 제 3단계의 구체적인 일실시예는 다음과 같다. 로그(340)의 각 캐시갱신항목(345) <고속세그먼트주소(346), 저속세그먼트주소(347)>에 대해서, 옛 저속 세그먼트를 주소사상표 저장부(430)의 고속세그먼트-번째 주소사상항목(431)이라고 하면, 옛 저속 세그먼트가 가리키는 저속세그먼트(203)의 캐시비트에 0을 대입하고, 주소사상표 저장부(430)의 고속세그먼트주소(346)-번째 항목에 저속 세그먼트주소(347)를 대입하고, 그 저속 세그먼트주소(347)가 가리키는 저속 세그먼트(204)의 캐시비트에 1을 대입하고 저속-고속 사상 트리(440)에 저속 세그먼트주소(347)에서 고속 세그먼트주소(346)로 사상하는 정보 삽입한다.
이상에서 설명한 본 발명은 바람직한 실시 예들을 통하여 상세하게 설명되었지만, 본 발명은 이러한 실시 예들의 내용에 한정되는 것이 아님을 밝혀둔다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 비록 실시 예에 제시되지 않았지만 첨부된 청구항의 기재 범위 내에서 다양한 본 발명에 대한 모조나 개량이 가능하며, 이들 모두 본 발명의 기술적 범위에 속함은 너무나 자명하다 할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 컴퓨터 101 : 시스템 소프트웨어
102 : 주 메모리 103 : 고속 저장장치
104 : 저속 저장장치 201 : 고속 세그먼트
202 : 핫 세그먼트 203 : 콜드 세그먼트
204 ~ 207 : 저속 세그먼트 300, 350 : 제1 및 제2메타데이터 영역
301 : 메인 메타데이터 310, 410 : 메타정보부
311, 411 :ID 312, 412 : 버전
313. 413 : 해쉬 320, 420 : 사용빈도표 저장부
321, 421 : 사용빈도항목 322, 422 : 사용빈도값
323, 423 : 캐시비트 330, 430 : 주소사상표 저장부
331, 431 : 주소사상항목 340 : 로그부
341 : 섹터 342 : 메타버전
343 : 해쉬 344 : 항목 개수
345 : 캐시갱신항목 346 : 고속 세그먼트 주소
347 : 저속 세그먼트 주소 440 : 저속-고속 사상 트리

Claims (15)

  1. 메타데이터의 무결성 여부와 두 개의 메타데이터 영역에 저장된 메타데이터의 버전 정보를 제공하는 메타정보부;
    상기 메타데이터의 일관성을 유지하기 위해, 다수의 저장장치를 구성하는 다수의 고속 및 저속세그먼트들 중 각 저속 세그먼트들의 사용 빈도 및 캐싱 유무에 대한 정보를 제공하는 사용빈도표 저장부;
    상기 다수의 저장장치를 구성하는 세그먼트들 중 각 고속 세그먼트가 어느 저속 세그먼트를 캐싱하고 있는지에 대한 정보를 제공하는 주소사상표 저장부; 및
    상기 주소사상표 저장부 반영되지 못한 신규 캐싱정보를 제공하는 로그부; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  2. 제 1항에 있어서, 상기 메타정보부는,
    상기 메타데이터 영역에 저장된 메타데이터가 필요 또는 불필요한 데이터인지 알 수 있게 해주는 식별 정보를 저장하는 ID;
    상기 두 개의 메타데이터 영역 중 어느 메타데이터 영역에 저장된 메타데이터가 최신인지를 나타내 는 버전; 및
    상기 메타데이터 저장 시 불완전 상태로 중단되었을 경우 상기 메타데이터의 무결성 여부를 검사하기 위해 사용되는 해쉬; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  3. 제 1항에 있어서, 상기 사용빈도표 저장부는,
    상기 각 저속 세그먼트의 개수에 대응하는 수만큼 다수의 사용빈도항목으로 구성되는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  4. 제 3항에 있어서, 상기 사용빈도항목은,
    상기 각 저속 세그먼트 중 최근에 사용된 저속 세그먼트를 가리키는 사용빈도값; 및
    상기 저속 세그먼트가 상기 고속 세그먼트들 중 어느 하나에 매핑되었는지를 가리키는 캐시비트; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  5. 제 1항에 있어서, 상기 주소사상표 저장부는,
    상기 각 저속 세그먼트의 개수에 대응하는 수만큼 다수의 주소사상항목으로 구성되고, 상기 주소사상항목은 캐시된 저속 세그먼트 주소를 보유하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  6. 제 1항에 있어서,
    상기 로그부는 다수개의 섹터로 구분되고,
    상기 섹터는 메타데이터의 버전 정보를 포함하는 메타버전;
    상기 섹터에 저장된 데이터에 오류가 있는지 검사하기 위해 사용되는 해쉬;
    상기 각 고속 세그먼트 주소가 특정 저속 세그먼트 주소로 캐싱되었으나, 기존 주소사상표 저장부에 반영 여부를 나타내는 캐시갱신항목; 및
    상기 다수개의 섹터 중 어느 한 섹터 내 상기 캐시갱신항목의 개수를 가리키는 항목개수;를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치.
  7. 사용빈도값이 사용빈도 기준값 이상인 저속 세그먼트, 즉 핫 세그먼트의 주 메모리상 사용빈도값의 변경을 금지하는 단계;
    상기 핫 세그먼트의 개수와 고속 세그먼트의 개수를 비교하는 단계;
    상기 비교 결과 핫 세그먼트의 개수가 상기 고속 세그먼트의 개수 이하일 경우, 캐시시계의 시작 값을 0으로 설정하는 단계;
    상기 캐시시계의 개수와 상기 저속 세그먼트의 개수를 비교하는 단계;
    상기 비교 결과 상기 캐시시계의 개수가 상기 저속 세그먼트의 개수 이하일 경우, 상기 캐시시계가 가리키는 상기 저속 세그먼트가 핫 세그먼트이면서 캐싱되지 않았는지를 검사하는 단계;
    상기 검사 결과 상기 저속 세그먼트가 캐싱되지 않았다면, 퇴출시킬 다음 고속 세그먼트로 퇴출시계를 이동시키는 단계;
    상기 이동된 퇴출시계가 가리키는 고속 세그먼트에 저장된 데이터를 고속 저장장치에서 퇴출시키는 단계;
    현재의 퇴출시계 값은 고속 세그먼트 주소로, 현재의 캐시시계값은 저속 세그먼트 주소로 하는 캐시갱신항목을 로그에 추가하는 단계; 및
    상기 캐시시계가 가리키는 저속 세그먼트를 상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  8. 제 7항에 있어서,
    상기 핫 세그먼트의 개수와 고속 세그먼트의 개수를 비교하는 단계 이후에,
    상기 비교 결과 상기 핫 세그먼트의 개수가 상기 고속 세그먼트의 개수를 초과할 경우, 주 메모리의 모든 사용빈도값에 감쇠상수를 곱하고 상기 곱해진 결과로 사용빈도값으로 재저장하는 단계; 를 더 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  9. 제 7항에 있어서,
    상기 캐시시계의 개수와 상기 저속 세그먼트의 개수를 비교하는 단계 이후에,
    상기 비교 결과 상기 캐시시계의 개수가 상기 저속 세그먼트의 개수를 초과할 경우, 주 메모리의 모든 사용빈도값에 대해서 변경 금지를 해제하는 단계; 를 더 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  10. 제 7항에 있어서,
    상기 캐시시계가 가리키는 상기 저속 세그먼트가 핫 세그먼트이면서 캐싱되지 않았는지를 검사하는 단계 이후에,
    상기 검사 결과 상기 저속 세그먼트가 캐싱되었다면, 상기 캐시시계를 가리키는 방향을 한단계 이동시키는 단계; 를 더 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  11. 제 7항에 있어서,
    상기 고속 세그먼트에 저장된 데이터를 고속 저장장치에서 퇴출시키는 단계는,
    퇴출 저속 세그먼트들은 주소사상표의 퇴출시계 중 n번째 주소사상항목이 되고, 퇴출 저속 세그먼트의 캐시비는 0, 저속-고속 사상트리에서 상기 퇴출 저속 세그먼트를 제거하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  12. 제 7항에 있어서,
    상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 단계는,
    주 메모리의 주소사상표의 퇴출시계중 n번째 주소사상항목에 캐시시계를 대입하고 상기 캐시시계가 가리키는 저속 세그먼트의 캐시비트를 1로 설정하며, 상기 캐시시계가 가리키는 상기 저속 세그먼트의 데이터를 상기 퇴출시계가 가리키는 고속세그먼트로 복사 및 저속-고속 사상 트리에서 상기 캐시시계가 가리키는 저속 세그먼트를 상기 퇴출시계가 가리키는 고속 세그먼트로 캐싱하는 정보를 추가하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  13. 저속 저장장치의 두 개의 메타데이터 영역에 저장된 메타데이터 중에서 최신 버전에 해당하는 메타데이터를 주 메모리의 메타데이터로 복사하는 단계;
    상기 주 메모리의 주소사상표 저장부의 모든 주소사상항목 중 n번째 주소사상항목의 저속 세그먼트 주소 m을 이용하여, 저속-고속 사상 트리에 m번째 저속 세그먼트 주소에서 n번째 고속 세그먼트 주소로의 사상정보를 추가하는 단계;
    로그에 저장된 각 캐시갱신항목에 대해서 상기 고속 세그먼트에서 상기 저속 세그먼트가 캐싱되었다는 메타데이터 정보를 주 메모리의 메인 메타데이터와 저속-고속 사상트리에 추가하는 단계; 및
    메타정보의 버전을 1증가시키고, 상기 주 모메리의 메타데이터를 다른 메타데이터 영역의 메타데이터에 저장하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  14. 제 13항에 있어서,
    상기 저속-고속 사상트리에 추가하는 단계는,
    마지막 캐시갱신항목이 가리키는 사상정보는 상기 주 메모리의 메타데이터에서 제거하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
  15. 제 13항에 있어서,
    상기 메타데이터 정보를 주 메모리의 메인 메타데이터와 저속-고속 사상트리에 추가하는 단계는,
    상기 로그의 각 캐시갱신항목에 대해서, 옛 저속 세그먼트를 주소사상표 저장부의 고속 세그먼트 n번째 주소사상항목이라고 하면, 옛 저속 세그먼트가 가리키는 저속세그먼트의 캐시비트에 0을 대입하고, 주소사상표의 고속세그먼트주소 n번째 항목에 저속세그먼트주소를 대입하며, 그 저속세그먼트주소 가리키는 저속세그먼트의 캐시비트에 1을 대입하여 저속-고속 사상 트리에 저속세그먼트주소에서 고속세그먼트주소로 캐싱하는 정보 삽입하는 단계; 를 포함하는 것을 특징으로 하는 정전에서 지속 가능한 읽기 및 쓰기 캐시 방법.
KR1020140067327A 2014-06-03 2014-06-03 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법 KR101507093B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140067327A KR101507093B1 (ko) 2014-06-03 2014-06-03 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법
US14/723,539 US9626260B2 (en) 2014-06-03 2015-05-28 Read/write cache device and method persistent in the event of a power failure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140067327A KR101507093B1 (ko) 2014-06-03 2014-06-03 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101507093B1 true KR101507093B1 (ko) 2015-03-30

Family

ID=53028904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140067327A KR101507093B1 (ko) 2014-06-03 2014-06-03 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법

Country Status (2)

Country Link
US (1) US9626260B2 (ko)
KR (1) KR101507093B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141505B1 (en) * 2012-09-27 2015-09-22 Emc Corporation Adaptive failure survivability in a storage system using save time and data transfer after power loss
US9619330B2 (en) * 2013-10-08 2017-04-11 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
KR102403202B1 (ko) * 2015-03-13 2022-05-30 삼성전자주식회사 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법
US9952974B2 (en) 2016-06-07 2018-04-24 International Business Machines Corporation Preservation of modified cache data in local non-volatile storage following a failover
US10872015B2 (en) * 2018-06-29 2020-12-22 Seagate Technology Llc Data storage system with strategic contention avoidance
CN109117304B (zh) * 2018-07-05 2022-02-18 北京珠穆朗玛移动通信有限公司 文件备份方法、系统及装置
US11656994B2 (en) * 2021-05-03 2023-05-23 Western Digital Technologies, Inc. Non-volatile memory with optimized read

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100092590A (ko) * 2009-02-13 2010-08-23 (주)인디링스 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5402693B2 (ja) * 2010-02-05 2014-01-29 富士通株式会社 ディスクアレイ装置の制御方法及びディスクアレイ装置
WO2013025540A1 (en) 2011-08-12 2013-02-21 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
US8984222B2 (en) * 2011-09-09 2015-03-17 Lsi Corporation Methods and structure for task management in storage controllers of a clustered storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100092590A (ko) * 2009-02-13 2010-08-23 (주)인디링스 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템

Also Published As

Publication number Publication date
US9626260B2 (en) 2017-04-18
US20150347247A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
KR101507093B1 (ko) 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US8161241B2 (en) Temperature-aware buffered caching for solid state storage
EP2476055B1 (en) Apparatus, system, and method for caching data on a solid-state storage device
EP3210121B1 (en) Cache optimization technique for large working data sets
US7610438B2 (en) Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
CN109643275B (zh) 存储级存储器的磨损均衡设备和方法
US9417808B2 (en) Promotion of partial data segments in flash cache
US20060129763A1 (en) Virtual cache for disk cache insertion and eviction policies and recovery from device errors
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
JP6711121B2 (ja) 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US11281594B2 (en) Maintaining ghost cache statistics for demoted data elements
US10241928B2 (en) Maintaining cache consistency in a cache for cache eviction policies supporting dependencies
US9218294B1 (en) Multi-level logical block address (LBA) mapping table for solid state
US10635654B2 (en) Data journaling for large solid state storage devices with low DRAM/SRAM
US20170286307A1 (en) Optimized Read Cache For Persistent Cache On Solid State Devices
Lee et al. A unified buffer cache architecture that subsumes journaling functionality via nonvolatile memory
CN114296630B (zh) 机器可读存储介质、数据存储系统和数据存储系统的方法
US11550732B2 (en) Calculating and adjusting ghost cache size based on data access frequency
US11182307B2 (en) Demoting data elements from cache using ghost cache statistics
US10552325B2 (en) Reducing write-backs to memory by controlling the age of cache lines in lower level cache
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101373613B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치
KR20130086693A (ko) 환형 구조의 비휘발성 메모리 캐쉬에 기록된 데이터를 교체 및 가비지 콜렉션하기 위한 데이터 처리방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180419

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190117

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200305

Year of fee payment: 6