KR100510808B1 - 데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시 - Google Patents

데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시

Info

Publication number
KR100510808B1
KR100510808B1 KR10-2003-0087882A KR20030087882A KR100510808B1 KR 100510808 B1 KR100510808 B1 KR 100510808B1 KR 20030087882 A KR20030087882 A KR 20030087882A KR 100510808 B1 KR100510808 B1 KR 100510808B1
Authority
KR
South Korea
Prior art keywords
cache
data
line
write
cache line
Prior art date
Application number
KR10-2003-0087882A
Other languages
English (en)
Other versions
KR20040060732A (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 KR20040060732A publication Critical patent/KR20040060732A/ko
Application granted granted Critical
Publication of KR100510808B1 publication Critical patent/KR100510808B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Abstract

저장 시스템의 성능을 개선하기 위한 데이터 저장 시스템을 위한 로그 구조 기록 캐시가 개시된다. 이 시스템은 RAID 저장 어레이, 디스크 드라이브, 광 디스크, 또는 테이프 저장 시스템일 수도 있다. 기록 캐시는 시스템의 주 저장 매체에서 구현되는 것이 바람직하지만, 그 밖의 다른 시스템의 저장 구성요소에도 또한 제공될 수 있다. 기록 캐시는 캐시 라인을 포함하는데, 여기서 기록 데이터가 불휘발성 상태로 일시적으로 저장되어서 이후에 타겟 저장 위치에 순차적으로 기록될 수 있게 하며, 이에 따라 시스템의 전반적인 성능을 향상시키게 된다. 각 캐시 라인에 대한 메타 데이터도 또한 기록 캐시에 유지된다. 메타 데이터는 라인 내의 각 섹터에 대한 타겟 섹터 어드레스와, 데이터가 캐시 라인에 포스트되는 순서를 나타내는 시퀀스 번호를 포함한다. 각 캐시 라인에 대해 버퍼 테이블 엔트리가 제공된다. 데이터 판독 및 기록 동작 각각에서 필요한 섹터 어드레스에 대해 버퍼 테이블을 탐색하는 데에 해시 테이블이 이용된다.

Description

데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시{A LOG-STRUCTURED WRITE CACHE FOR DATA STORAGE DEVICES AND SYSTEMS}
본 발명은 일반적으로 데이터 저장 장치 및 시스템에 관한 것으로, 보다 구체적으로는 랜덤한 데이터의 기록을 순차적인 데이터 기록으로 변환함으로써 이들 장치 및 시스템의 성능을 향상시키기 위한 로그 구조 기록 캐시(log-structured write cache)에 관한 것이다.
로그 구조 저장 시스템은 랜덤한 기록을 순차적인 기록으로 변환함으로써 데이터 기록의 수행을 개선시키도록 제안되어 왔다. 하드 디스크 드라이브와 같은 저장 장치는 랜덤한 I/O 처리량보다 빠른 크기의 차수인 순차적인 액세스 처리량을 갖는다. 그러나, 로그 구조 저장 장치 및 시스템은 구현하는 데에 비용이 많이 들며 중요한 결함을 갖고 있다. 랜덤 기록이 순차 기록으로 변환될 때, 순차 판독은 랜덤 판독으로 변환되기 쉬우며, 이에 따라 임의의 수행 이득을 무효화시키게 된다. 전형적으로, 로그 기반 파일 시스템은 구현 및 관리하기가 보다 복잡하다. 이에 따라, 로그 구조 저장 장치 및 시스템은 광범위하게 전개되지 못한다.
켄차마나-호스코트(Kenchammana-Hoskote) 및 사카(Sarkar)(미국 특허 출원 공개 US 2002/0108017 A1)는, 데이터 기록이 개별적인 저장 장치에 순차적으로 로그되고 로그와 관련된 메타 데이터(meta-data)가 로그로부터 분리되어 기록되는 선행 해법을 개시하였다. 이 해법은, 단일 주 저장 매체의 경우 수행의 일관성을 유지하기 위해 이 단일 주 매체로부터 로그의 독립성을 요구할 때 실용적이지 않다.
맷슨(Mattson) 및 메논(Menon)(미국 특허 제5,416,915호)은, 디스크의 어레이에 대해 기록 동작을 병렬화함으로써 기록 수행이 개선되는 다른 선행 해법을 개시하였다. 이 해법은 순차적인 기록의 수행을 이용하지 않는다.
로젠블럼(Rosenblum) 등("The Design and Implementation of a Log Structured File System", 1999년 2월에 출간된 ACM Transactions on Computer Systems, V10-1의 페이지 26-52 참조)은, 성능을 위해 순차적인 기록을 행하도록 파일 시스템이 설계된 또다른 선행 해법을 개시하였다. 그러나, 이 해법은, 로그 구조 파일 시스템이 구현될 수 있는 시스템에만 적용될 수 있으며, 이에 따라 호스트 종속적이다. 또한, 이러한 시스템의 완전한 수행은, 파일 시스템이 저장 시스템의 기본적인 속성을 알고 있지 않는 한 구현되지 않을 것이며 이는 전형적인 경우가 아니다.
따라서, 전술한 문제점없이 효율적으로 랜덤 데이터를 기록할 수 있는 저장 장치 및 시스템에 사용되는 로그 구조 기록 캐시에 대한 필요성이 존재한다.
본 발명의 목적은 디스크 드라이브, 디스크 어레이, 광 디스크 및 저장 서버와 같은 데이터 저장 시스템을 위한 로그 구조 기록 캐시를 제공하여, 순차적 데이터와 마찬가지로 효율적으로 랜덤 데이터가 이들 시스템에 기록될 수 있게 하는 것이다. 본 발명의 다른 목적은, 로그 구조 저장 시스템의 완전한 판독 수행 페널티(penalty)를 초래하지 않고서 로그 구조 기록 캐시의 이점을 달성하는 것이다. 본 발명의 또다른 목적은, 데이터를 기록 캐시에 포스팅한 후 데이터를 기록 캐시로부터 저장 시스템 내의 타겟 섹터 어드레스에 기록하는 효율적인 동작을 제공하는 것이다. 섹터는 저장 시스템 내의 가장 작은 어드레스가능한 데이터 유닛으로서 전형적으로 512 8비트 바이트이다. 로그 구조 기록 캐시는 데이터를 타겟 섹터 어드레스로 이동시키기 전에 기록 데이터를 스테이징(staging)하도록 제공된다. 판독 동작은 캐싱에 의해 마찬가지로 개선될 수 있다.
기록 캐시는 시스템의 주 저장 매체 내에서 구현되는 것이 바람직하지만, 시스템의 다른 저장 구성요소에 제공될 수도 있다. 기록 캐시는, 기록 데이터가 불휘발성 상태로 일시적으로 저장되어 후에 순차적으로 타겟 저장 위치에 기록될 수 있어서 시스템의 전반적인 성능을 개선시키게 되는 캐시 라인을 포함한다. 각 캐시 라인에 대한 메타 데이터는 또한 기록 캐시에도 유지된다. 메타 데이터는 라인 내의 각 섹터에 대한 타겟 섹터 어드레스와, 데이터가 캐시 라인에 포스팅되는 순서를 나타내는 시퀀스 번호를 포함한다. 버퍼 테이블 엔트리는 각 캐시 라인에 제공된다. 각 데이터 판독 및 기록 동작에 필요한 섹터 어드레스에 대한 버퍼 테이블을 검색하는데에 해시 테이블이 이용된다.
임의의 캐싱 시스템이 평가되어야 하는 다수의 메트릭스(metrics)가 존재한다. 데이터 기록은 충분히 적격화되어야 하는데, 기록된 것으로 호스트에 인식된 임의의 데이터는 전원 오프 또는 시스템 리셋 시에 복구될 수도 있다. 기본적인 메트릭스는 판독 및 기록 I/O 속도이다. 캐시 관리 동작의 오버헤드도 또한 중요하다. 이는, 캐시로부터 엔트리를 추가하고 제거하는 데에 필요한 시간 및 자원 뿐만 아니라 엔트리가 캐시 내에 있는지를 판정할 시간을 포함한다. 캐시 메타 데이터를 저장하는 데에 필요한 메모리량은 중요하다. 예상하지 못한 셧다운(shutdown)에 이어지는 시스템의 상태를 복수하는 데에 필요한 시간은 최소이어야 한다. 기록 캐시를 플러시(flush)하거나 혹은 부분적으로 플러시하는 데에 필요한 시간은, 이것이 통상적으로 백그라운드(낮은 우선순위) 동작이지만, 최소화되어야 한다.
본 발명의 추가적인 목적 및 이점들은 이하의 상세한 설명에 제시될 것이며 일부는 상세한 설명 및 첨부된 도면으로부터 명백할 것이며 혹은 본 발명의 실시예로부터 학습될 수도 있다.
본 발명은 데이터 저장 장치 또는 시스템에 사용하기 위한 로그 구조 기록 캐시로서 주로 기술될 것이다. 그러나, 본 기술 분야의 당업자라면, CPU, 메모리, I/O, 프로그램 저장 장치, 접속 버스 및 그 밖의 다른 적절한 구성요소를 포함하는 데이터 처리 시스템과 같은 장치가 프로그래밍되거나 혹은 이와 달리 본 발명의 방법의 실시를 용이하게 하도록 설계될 수 있음을 알 것이다. 이러한 시스템은 본 발명의 동작을 실행하기 위한 적절한 프로그램 수단을 포함할 것이다.
또한, 데이터 처리 시스템에 사용되는, 사전 기록된 디스크 또는 그 밖의 다른 유사한 컴퓨터 프로그램 제품과 같은 제조 아티클은 저장 매체, 및 본 발명의 방법의 실시를 용이하게 하도록 데이터 처리 시스템에 지시하는, 저장 매체 상에 기록되는 프로그램 수단을 포함할 것이다. 이러한 장치 및 제조 아티클은 또한 본 발명의 정신 및 범주 내에 해당된다.
도 1은 저장 애플리케이션(100) 내의 본 발명의 일반적인 구성을 나타낸 도면이다. 호스트(102)는 종래의 저장 시스템과 동일하게 저장 시스템(104)에 액세스하여 레벨 1(L1) 기록 캐시 제어(106)와 상호작용한다. 기록 캐시 제어(106)는 불휘발성 랜덤 액세스 메모리(RAM)(122)에 저장되는 L1 기록 캐시(108) 내에 데이터를 일시적으로 저장한다. 레벨 2(L2) 캐시 제어(110)는 RAM(122) 내에 자신의 해시 테이블(112) 및 버퍼 테이블(114)을 구축하기 위해 이 데이터 및 관련 메타 데이터를 통과시킨다. 통상의 경우, 그 후 데이터 및 메타 데이터는 캐시 라인(124)의 형태인 불휘발성 저장 장치(120) 내의 영역(120)에 전달된다. 데이터가 더이상 휘발성이 아니면, 호스트(102)로 다시 저장되도록 인식된다. 주기적으로, 캐시 저장 장치의 스냅샷 영역(snapshot area)(134)은 캐시 제어(110)에 의해 갱신되어 버퍼 테이블(114)의 현재 상태를 반영할 것이다. 또한, 도움이 될 경우 데이터가 캐시 라인(124)으로부터 판독되고 주 저장 장치(126-132)에 기록된다. 주 저장 장치는 도시한 바와 같이 다수의 저장 장치를 포함하거나 혹은 단일 장치를 포함하여 120, 126-132가 단일 저장 영역에 상주할 수도 있다.
도 2a는 캐시 라인 레이아웃(200)의 예를 나타낸 도면이다. 주 저장 장치(118)의 일부일 수도 있는 불휘발성 저장 장치(202)의 어드레스가능한 영역 내에, 캐시 라인(204-208(b), 214-218)이 클러스터로 그룹화된다. 예시된 202에서, 데이터 영역 내에 세 개의 캐시 라인의 두 개의 클러스터가 존재한다. 이들 클러스터는 기록에 적합하도록 정렬되며 클러스터 내에 캐시 라인이 순차적으로 기록된다. 예를 들면, 하드 디스크 드라이브에서, 캐시 라인 그룹은, 순차적으로 기록될 디스크 상의 하나 이상의 인접 트랙에 대응할 것이다. 저장 어레이에서, 이들은 많은 디스크 또는 전용 불휘발성 저장 장치 상에 상주하여 다시 순차적 기록 속도에 적합하게 된다. 도 2a의 클러스터는 탐색 거리를 감소시키기 위해 저장 장치의 어드레스가능한 영역에 걸쳐 분산되는 것으로 도시된다. 복구 시간을 감소시키거나, 복구 시간 대신에 부족한 집중적 저장 트래픽의 수행을 개선하도록 개별적인 캐시 라인을 분배하기 위해 하나의 클러스터 내에 모든 캐시를 위치시키는 그 밖의 다른 옵션도 있다. 스냅샷 메타 데이터를 기록하기 위한 영역은 또한 212에 할당된다. 나머지 저장 영역은 캐시에 사용되지 않으며, 주 기억 영역의 일부로서 이용될 수도 있다.
스냅샷 메타 데이터(212, 134)는 전체 캐시에 대한 메타 데이터의 스냅샷 카피를 포함하는 불휘발성 저장 장치(118) 내에 위치한다. 스냅샷은 셧다운에 이어지는 시스템 상태의 복구를 돕는다. 수행을 위해 스냅샷은 항상 최신으로 될 필요는 없다. 스냅샷 정보는 예를 들어 패리티 섹터를 가짐으로써 또한 보호될 수 있다.
도 2b는 단일 캐시 라인(204)의 콘텐츠를 나타낸 도면이다. 라인은 다수의 데이터 블럭(252-256), 이들 블럭과 관련된 메타 데이터(258), 선택사양인 패리티 블럭(260), 선택사양인 리딩(leading) 시퀀스 번호(250)를 포함한다. 각 캐시 라인은 라인의 기록 순서를 식별하는 시퀀스 번호를 갖는다. 이는 메타 데이터(258)의 일부로 간주되지만, 도시된 바와 같이 캐시 라인에 우선할 수도 있다. 도 2b에서, 도시된 캐시 라인 내의 제2 데이터 블럭(254)은 Block 1로서 식별되며 데이터 섹터(264-278)를 포함할 때 8 섹터의 블럭 사이즈의 경우에 대해 상세하게 된다.
기록 캐시에 대해, "포스트(post)"라는 용어는 데이터를 캐시 라인에 기록하는 동작을 설명하는 데에 이용되며, "플러시(flush)"라는 용어는 데이터를 캐시 라인으로부터 타겟 위치로 이동시키는 동작을 설명하는 데에 이용된다.
캐시 라인은 기록된 데이터의 보전을 위해 하나의 유닛으로서 포스트되며 비어 있는 라인으로만 포스트된다(라인은 성공적으로 플러시된 직후에 비어 있음). "기록 완료"는, 전체 라인이 포스트될 때 호스트(102)에 표시된다. 라인 메타 데이터(250, 258)는 라인(204)에 대한 국부적인 정보를 포함하고 있으며, 이에 따라 포스트 동작에서는 메타 데이터를 임의의 다른 위치에 기록하는 단계를 포함하지 않는다. 이는 순차적 액세스 수행을 유지하는 중요한 요소이다. 패리티 블럭(260)은, 전체 데이터 블럭 또는 메타 데이터를 파괴시키기에 충분히 심각한 에러에 대하여 보호하기 위해 또다른 데이터 보전을 제공하는 옵션이다.
본 발명의 중요한 특징은, 캐시 라인이 홀(holes)(데이터가 존재하지 않는 데이터 보존 영역)과 데이터의 복제(주 저장 장치 내의 데이터가 캐시 라인 세트 내에 복수개 복제되어 있음) 양쪽을 포함할 수도 있다는 점이다. 데이터 섹터에 관한 이 정보는 L2 캐시 제어에 의해 트래킹된다.
이하의 섹션에서는 기록 캐시의 구조 및 동작에 대해 보다 상세히 기술한다.
라인 메타 데이터
라인 메타 데이터는 라인 내의 각 섹터의 타겟 어드레스에 대한 정보를 포함하여 섹터의 위치 및 아이덴티티가 알려진다. 하나의 라인은 하나의 유닛으로서 포스트되어 순차적 기록을 제공하며, 기록은 시퀀스 번호(250)에 의해 식별되어서 기록 순서가 후에 결정될 수 있다. 제1 기록 동작의 결과로서 제1 라인에 포스트되는 섹터가, 제2 기록 동작의 결과로서 제2 라인에 후속하여 포스트되는 것이 가능하다. 판독 동작은 섹터의 가장 최근에 기록된 섹터의 버전을 위치시키고 식별할 수 있어야 한다.
여기에 개시된 본 발명의 바람직한 실시예는 휘발성 RAM(122)에 저장되어야 하는 메타 데이터의 양을 최소화한다. 캐시 라인에 대한 라인 메타 데이터(250, 258)는 두 개의 데이터 오브젝트, 즉 라인 시퀀스 번호 및 버퍼 테이블을 최소한 포함한다. ANSI C 프로그래밍 언어에서의 이들 오브젝트의 예시적인 정의는 이하와 같을 수도 있다.
typedef struct{
unsigned int SeqNum:32;
LineBufEntry LBE[LineSize];
} LineBufTable;
SeqNum은 캐시 라인에 대한 시퀀스 번호이다. 이는 32 비트 정수로서 나타나지만, 캐시 라인 세트 내의 유일한 시퀀스 번호를 처리하기에 충분히 크면 된다. 바람직하게는, 시퀀스 번호(250)(SeqNum) 및 라인 메타 데이터(258)는 캐시 라인(204)의 초기 및 종료에 각각 삽입되어 라인이 정확하게 기록되었음을 보장한다. 캐시 라인 내에 LineSize 블럭 위치가 존재하면 LBE는 블럭 버퍼 테이블이다. LineBufEntry 구조는 이하에 기술한다. 라인 버퍼 테이블은 각 데이터 블럭 위치에 대한 엔트리를 갖는다. 이 엔트리는 타겟 블럭 번호(타겟 섹터 어드레스와 관련됨)와, 블럭 내의 어떤 섹터 위치가 점유되어 있는지를 나타내는 비트맵으로 구성된다. 일반적으로, 하나의 블럭 내에 모든 섹터 위치가 점유될 것으로 예상되지는 않는다. 0인 비트맵은 블럭이 비어 있음을 나타낸다. C 언어에서의 이 구조는 이하와 같다.
typedef struct{
unsigned int Block:32;
unsigned int Bitmap:8;
} LineBufEntry;
시프트 동작을 이용하여 타겟 섹터 어드레스로부터 블럭 번호가 연산되도록 하기 위해, 하나의 블럭은, 바람직하게는 2의 거듭제곱인 BlockSize로 표시되는 고정된 다수의 섹터에 대한 저장 장치를 갖는다. 메모리 효율성은 섹터 어드레스를 블럭으로 그룹화함으로써 개선되며, 대부분의 저장 시스템 동작이 한번에 1 섹터 이상을 조작하는 관찰을 반영한다. 예를 들면, BlockSize가 8인 경우, 단일 섹터 어드레스(LBA로 표시됨)에 대한 비트맵 엔트리 및 블럭 번호는 이하와 같이 연산될 수도 있다.
Block = LBA 〉〉 3;
Block = 1U 〈〈 (LBA & 7);
따라서, Block 및 Bitmap 값이 라인 내의 각 섹터 어드레스를 식별하기에 충분함을 알 수 있다. 전술한 Bitmap 등식은 특정 섹터 어드레스에 대한 비트값을 연산한다. 이들 값은 비트와이즈(bitwise) OR 되어서 블럭에 대한 풀(full) 비트맵을 형성하게 된다. BlockSize는 Bitmap 엘리먼트의 비트 길이를 결정할 것이다.
캐시 라인 시퀀스 번호는 라인의 포스팅의 순서를 결정하는 데에 사용될 것이다. 소정의 시퀀스 번호 값은 예를 들어 라인이 비어 있음을 나타내도록 보존될 수도 있다.
버퍼 테이블
동작 동안, 모든 캐시 라인에 대한 라인 버퍼 테이블은 랜덤 액세스 메모리 내의 단일 테이블, 즉 버퍼 테이블로 통합된다. 이 테이블은 다른 버퍼 테이블 엔트리를 어드레싱하기 위한 인덱스 값을 저장하기 위해 각 엔트리에 대한 부가적인 엘리먼트를 갖는다. 버퍼 테이블 엔트리는 이하와 같이 정의될 수 있다.
typedef struct{
unsigned int Block:32;
unsigned int Bitmap:8;
unsigned int NextEntry:16;
} BufEntry;
각 라인 버퍼 테이블은 버퍼 테이블에 순차적으로 저장되며, 이에 따라 로그 버퍼 내의 각 블럭 엔트리는, 데이터 레퍼런스를 저장하지 않을 때에도 특정 고정된 저장 어드레스를 갖는다. 버퍼 테이블은 이하와 같이 진술될 수 있다.
BufEntry BufTable[Lines*LineSize];
여기서, Line은 다수의 캐시 라인이다. 각 블럭 엔트리는 이와 관련된 고정된 메모리 어드레스를 갖는다. 이는 캐시 라인을 포스팅하고 플러싱하는 중요한 수행 이점을 제공한다.
해시 테이블
섹터 어드레스에 대해 버퍼 테이블을 신속하게 탐색하는 능력이 각 데이터 판독 및 기록 동작시에 요구된다. 섹터 어드레스에 대한 캐시를 탐색하는데 적합한 수많은 기법이 존재하지만, 링크된 리스트 엔트리의 해시 테이블이 버퍼 테이블을 탐색하는 데에 적합하다. 해시 테이블은 작은 메모리 풋프린트(footprint) 및 신속한 탐색 둘 모두를 제공한다. 해시 기능은, 섹터 어드레스 번호 또는 블럭 번호로부터 비교적 균일하게 분포된 해시를 획득하는 데에 이용된다. 예시적인 해시는 블럭 번호의 최하위 비트를 이용하도록 될 수도 있다. 링크된 리스트는 해시 값에 대응하는 버퍼 테이블 내의 모든 블럭에 액세스하는 데에 이용된다.
도 3은 해시 테이블(302)과, 버퍼 테이블을 참조하는 데에 해시 테이블(302)이 어떻게 이용되는지를 나타낸 도면이다. 해시 테이블(302)은 각 고유한 해시 값에 대한 엔트리를 갖는데, 여기서 각 엔트리는 해시에 대응하는 블럭에 대한 버퍼 테이블 내의 엔트리에 대한 인덱스이다. 버퍼 테이블(320)은 캐시 블럭에 대한 버퍼 엔트리를 유지한다. 캐시 블럭은 단일 대응 해시 엔트리만을 가지며, 많은 블럭들이 동일한 해시 엔트리를 공유할 수 있다. NextEntry 엘리먼트는 해시 값에 대응하는 버퍼 테이블 내의 다음 블럭의 인덱스를 유지한다. 특별한 값, End는 링크된 리스트의 종료를 나타내도록 보존된다. 일반적으로, NextEntry 엘리먼트의 사이즈는 캐시 내의 다수의 블럭이 유지될 수 있음으로써 결정된다. 예를 들면, 64,000 엔트리에 대해 16비트 NextEntry가 충분하다.
도 3은 해시 테이블(302) 및 링크된 리스트(311-318)의 예시적인 구성을 도시한 도면이다. 이 예에서, 해시 엔트리(310)는 [Lines-1, 0]의 [라인, 블럭] 인덱스를 포함한다. 이는 커넥션(316)에 의해 표시된 바와 같이, 마지막 캐시 라인(370)의 제1 블럭(375)에 대한 인덱스이다. 이 블럭에 대한 NextEntry(378)는 커넥션(317)에 의해 표시된 바와 같이, [0,1]의 인덱스를 포함한다. 이는 캐시 라인0(330)의 블럭1(340)에 대한 인덱스이다. 블럭1(340)은 링크된 리스트 내의 마지막 엔트리이며, 이에 따라 NextEntry(343)는 커넥션(313)에 의해 표시되는 바와 같이 End(390)에 대응하는 인덱스 값을 포함한다. 다른 예시적인 커넥션도 또한 도 3에 도시된다.
링크된 리스트의 길이는 더 짧아지기 쉽기 때문에, 링크된 리스트 내에 섹터 어드레스를 탐색하면, 해시 테이블의 길이를 증가시킴으로써 성능을 향상시킬 것이다. 그러나, 이는 메모리 요구사항을 증가시킬 것이다. 값은 인덱스 값으로부터 연산될 수 있기 때문에 캐시 라인 번호를 버퍼 테이블에 명시적으로 저장할 필요는 없다. 이는 라인 마다의 공지된 블럭 수를 갖는 것에 따른 결과이다. 캐시 라인 내의 데이터 저장의 위치는 전술한 정보와, 캐시 라인에 대한 시작 위치를 플러스하여 연산될 수 있다.
본 발명의 바람직한 실시예에서, 라인이 포스트될 때, 엔트리는 해시 테이블에서 시작하는 링크된 리스트(리스트의 헤드)에 로드된다. 이는 탐색 동작 동안, 제1 매칭 엔트리가 가장 최근의 것임을 의미한다. 라인이 플러시될 때, 이에 따라 엔트리는 링크된 리스트의 끝으로부터 제거되며, 이에 따라 시퀀스 순서가 보존되는 것이 확실하게 된다.
포스트 동작
도 4는 포스트 동작(400)에 대해 상세하게 나타낸 도면이다. 단계 402에서, 포스트 동작은 섹터 세트 및 관련 어드레스로 전달된다. 캐시는 풀 상태인지 알아보도록 단계 404에서 체크된다. 프리 라인(free lines)이 없는 경우, 캐시는 단계 406에서 각 섹터 어드레스에 대해 탐색된다. 이는 전술한 바와 같이 섹터에 대한 블럭 번호 및 비트맵을 연산하고, 해시 값을 연산하고 매치를 찾기 위한 해시 테이블 내의 리스트를 트래버싱(traversing)하는 단계를 포함한다. 단계 408에서, 캐시 내에 섹터 어드레스가 존재하지 않을 경우, 섹터는 단계 434에서 타겟 위치로 바로 기록되며 포스트 동작은 단계 436에서 완료된 바와 같이 나타난다. 단계 408에서, 임의의 섹터 어드레스가 캐시 내에 발견될 경우, 버퍼 테이블 내의 대응하는 엔트리는 무효화되어야 한다. 캐시 내에 있지 않은 섹터 세트는 단계 410에서 단계 410에서 타겟 섹터에 기록된다. 단계 412에서, 플러시 동작은 기록 캐시 내에 공간을 만들도록 유발된다. 그 후 캐시 내에 있는 섹터 세트는 포스팅될 단계 414로 전달된다. 이는 캐시 상태를 일관성있게 유지하기 위한 많은 가능한 방법중 하나일 뿐이다. 단계 404에서, 캐시 내에 공간이 없는 경우, 섹터는 단계 414로 전달된다.
단계 414에서, 캐시된 데이터를 수신할 캐시 라인의 클러스터가 결정된다. 단계 416에서, 시퀀스 번호는 증가된다. 이 클러스터에 대한 캐시 라인 포인터, postlinecluster#는 그 후 단계 418에서 랩핑(wrapping) 또는 FIFO(first-in-first-out) 스타일(즉, 다수의 캐시 라인이 클러스터 내에 있는 모듈로)로 증가된다. 단계 420에서, 블럭 번호 세트 및 비트맵이 캐시 라인 메타 데이터 이외에도 섹터 어드레스로부터 생성된다. 단계 422에서, 이들은 포스트라인에 의해 표시되는 캐시 라인에 대한 유닛으로서 기록된다. 단계 424, 426 및 428은 하나의 루프를 구성하는데, 여기서 해시 테이블이 캐시 라인 내의 각 블럭에 대한 엔트리를 추가함으로써 갱신된다. 이는, 각 블럭에 대한 해시를 연산하고 그 후 인덱스를 링크된 리스트의 앞에 있는 블럭에 대한 BufTable 엔트리에 삽입하고, 이전의 제1 리스트 엔트리에서의 포인트에 대한 BufTable의 다음 인덱스 값을 갱신하는 단계를 포함한다. 이로 인해 링크된 리스트가 시퀀스 번호의 순서로 정렬되는 것이 보장된다. 단계 430에서, 포스트는 호스트(102)에 대한 완료로서 표시된다. 최종적으로, 단계 432에서, 스냅샷 포스트 동작이 신호되며 이로 인해 저장 장치에 기록되고 있는 메타 데이터의 스냅샷이 생성된다. 도시하지 않았지만, 섹터의 리스트로 인해, 포스팅되는 다중 라인이 생성될 수도 있다.
전술한 설명은 캐시 상태를 일관성있게 유지하기 위한 포스트 동작의 중요한 특징을 예시하도록 의도된 것이다. 그 밖의 다른 방법들도 또한 이용될 수 있다. 예를 들면, 동작 세트가 수행되도록 우선 결정하기를 원하는 경우, 매체 기록 동작을 합체(coalesce)시키고 명령하기 위한 최적의 알고리즘을 사용한다. 또한, 단계 412 및 414에서, 캐시 상태를 일관성있게 유지하기 위한 플러싱 및 포스팅 방법을 이용할 수도 있다. 예를 들어, 엔트리를 무효화하기 위해 시스템 메타 데이터를 변경하는 등의 다른 방법을 적용할 수도 있다. 또한, 리스트의 헤드에 새로운 값을 삽입하는 대신에, 하나의 블럭에 대해 기존의 해시 엔트리를 대체하는 것이 바람직할 수도 있다. 이는 포스트 동작에 대한 링크된 리스트를 탐색하기 위한 부가적인 처리 대신에 링크된 리스트를 짧게 유지할 것이다.
본 발명의 바람직한 실시예에서, 캐시 라인은 각 클러스터 내의 FIFO 순서로 채워진다. FIFO에서, 라인은 라인 번호의 순서를 증가시키는데 있어서 포스트되고 라인의 번호는 모듈로(modulo)된다. 이 구성에서, 각 클러스터는 판독 포인터(플러시를 위한 다음 라인의 시퀀스 번호) 및 기록 포인터, postlinecluster#(포스트를 위한 다음 라인의 시퀀스 번호)를 갖는다. 이 구성은 후술하는 바와 같이, 초기화시에 캐시 상태의 복구를 간단하게 해준다.
포스트 동작은 여러 조건에 의해 트리거될 수도 있다. 비중이 큰 기록 동작 동안, L1 기록 캐시가 거의 풀 상태로 될 때 포스트가 개시될 수도 있다. 이는, 데이터의 라인의 가치가 L1 기록 캐시 내에 있거나, 혹은 기록 동작의 감소가 있을 때, 혹은 소정의 시간 동안 데이터가 L1 기록 캐시 내에 있은 후에 또한 트리거될 수도 있다. 기록 동작에 근거한 방법은, L1 기록 캐싱이 전혀 사용되지 않는 상황에 매우 적합하다. 이 경우, 목표는, 타겟 섹터 내에 데이터를 기록하는 것과 비교할 때 기록 속도가 향상되는 속도로 라인을 포스팅하는 것이다.
플러시 동작
플러시 동작은 캐시 라인으로부터 데이터를 소거하고 섹터에 타겟 어드레스를 기록하는 데에 이용된다. 호스트(102)에 의해 할당되는 섹터 어드레스는, 이들이 잘못 기입되어도 종종 국부적으로 문맥상 유사하기 때문에, 캐시된 데이터가 타겟 위치로 이동될 때 풀 상태의 로그 구조 시스템에 비해 판독 성능이 전형적으로 향상된다. 그러나, 플러시 동작에는 시간이 많이 걸리며, 휴지 기간 동안에 이상적으로 수행된다. 예를 들어, 데스크탑 및 이동 저장 시스템에 대해 발생되는 많은 저장 워크로드는 비활성 상태의 긴 주기를 갖고 짧고 집중적인 동작(높은 피크 I/O 속도)이 특징이다(예를 들어 미국 특허 5,682,273 참조). 이들 워크로드는 캐시 라인을 플러싱하기 위한 많은 기회를 제공한다. 사실상, 미국 특허 5,682,273의 휴지 상태 검출 알고리즘이 이러한 시나리오를 식별하는 데에 사용될 수 있다.
도 5는 플러시 동작(500)을 상세하게 나타낸 도면이다. 단계 502에서, 플러시 동작은 시퀀스 번호에 기초하여 클러스터 내의 가장 오래된 라인의 라인 번호에 전달된다. 이로 인해 기록 데이터 순서가 항상 보존되는 것이 보장된다. 단계 504에서, 전체 캐시 라인은 하나의 동작으로서 메모리에 판독된다. 단계 506 내지 514는 캐시 라인 내의 블럭의 모든 섹터를 처리하기 위한 루프를 구성한다. 단계 508에서, 각 블럭에 대한 블럭 어드레스 엔트리가 해시 테이블에서 탐색된다. 단계 510에서, 섹터에 대한 가장 최근의 엔트리가 처리중인 엔트리와 비교된다. 값이 일치하지 않을 경우, 현재 라인 내의 섹터가 최신 버전이 아니며 이는 스킵된다. 이와 달리, 단계 512에서 섹터가 디스크에 기록된다.
모든 섹터가 처리되었으면, 단계 516에서 라인이 메모리 내에 비어 있는 것으로 표시된다(그리고 불휘발성 메모리에 반영된다). 단계 518 내지 단계 522에서는 라인에 있었던 모든 블럭에 대해 평가한다. 단계 520에서, 블럭에 대응하는 해시 테이블 엔트리가 리스트로부터 제거된다. 이는 현재 라인 상의 블럭에 대응하는 엔트리에 대한 링크된 리스트를 탐색함으로써 달성된다. 엔트리는 블럭 엔트리에 이어지는 엔트리에 대한 포인트에 대한 리스트 내의 이전의 엔트리의 다음 값을 재조정함으로써 리스트로부터 제거된다. 단계 524에서, 스냅샷 플러시 동작이 신호되는데, 이로 인해 저장 장치에 기록되고 있는 메타 데이터의 스냅샷이 발생될 수도 있다. 캐시 라인의 비어 있는 상태는, 메타 데이터가 갱신될 때 불휘발성 저장 장치에 기록된다. 메타 데이터에 즉시 반영되는 비어 있는 상태를 갖는 것은 중요하지 않다. 예를 들어 예상하지 못한 전원 손실로 인해 시스템 상태가 상실될 경우, 라인이 불합리하게 다시 플러시될 수도 있다.
캐시 라인을 플러시하기 위한 중요한 동작에 대해서만 기술하였지만, 이 프로세스에 대한 여러 수정이 가능하다. 예를 들면, 섹터는 단계 512에 도시된 바와 같은 순서로 기록될 필요는 없다. 또한, 최적의 수행을 위해 기록을 합체시키거나 소팅(sorting)하기 위해 리오더링(reordering) 알고리즘을 이용하는 것이 바람직하다.
데이터 기록 동작
도 6a는 데이터 기록 동작(600)에 대해 상세하게 나타낸 도면이다. 단계 602에서, 기록 동작은 섹터 세트 및 관련 어드레스에 전달된다. 단계 604에서, 데이터가 캐시되어야 하는지에 대해 결정된다. 예를 들면, 대량의 순차적 기록이 기록 캐시를 바이패스하는 것이 바람직할 수도 있다. 섹터가 캐시될 경우, 단계 606에서 포스트 동작이 섹터의 리스트로 전달된다. 포스트가 완료되면, 기록 완료가 단계 614에서 표시된다. 캐시가 바이패스될 경우, 단계 608에서 데이터가 타겟 섹터 어드레스에 직접 기록된다.
포스트 동작에서와 같이, 현재 기록 캐시 내에 있는 임의의 섹터는 무효화되어야 한다. 단계 610에서, 임의의 섹터가 현재 캐시 내에 존재하는지 여부를 알기 위해 캐시가 탐색된다. 존재하지 않는 경우에는 단계 614에서 기록 완료가 표시된다. 단계 610에서, 임의의 섹터가 캐시 내에 있는 경우 대응하는 캐시 엔트리가 무효화될 것이다. 본 발명의 바람직한 실시예에서, 이들 나머지 섹터는 단계 612에서 포스트 동작에 전달되는 감소된 리스트에 위치된다. 포스트가 완료되면, 단계 614에서 기록 완료가 표시된다. 본 개시는 데이터 기록에 대한 중요한 특징에 대해서만 예시하도록 의도된 것이다. 예를 들면, 우선 모든 동작을 식별하고 그 후 기록 순서를 합체하고 최적화하기 위한 리오더링 알고리즘을 이용함으로써 성능이 향상된다.
데이터 판독 동작
도 6b는 데이터 판독 동작(600)을 상세하게 나타낸 도면이다. 단계 620에서, 판독 동작이 섹터 어드레스 세트에 전달된다. 단계 622 내지 단계 632가 모든 섹터 어드레스에 대해 실행된다. 단계 624에서, 섹터 어드레스에 대응하는 블럭 및 비트맵은 해시 테이블에서 탐색된다. 단계 626에서, 섹터가 캐시 내에서 발견된 경우, 단계 628에서 섹터는 해시 테이블 엔트로부터 결정된 캐시 라인으로부터 판독된다. 섹터가 캐시 내에서 발견되지 않은 경우, 단계 630에서 주어진 섹터 어드레스로부터 판독된다. 이 프로세스에 대한 또다른 개선이 가능하다. 예를 들면, 루프 내의 데이터 위치의 리스트를 구축한 후 판독 순서를 합체하고 최적화하기 위한 리오더링 알고리즘을 이용함으로써 성능이 개선될 수도 있다.
스냅샷 동작
스냅샷 동작은 캐시 메타 데이터의 거의 최신 카피를 제공하는 데에 이용된다. 스냅샷이 다소 구식으로 되도록 함으로써 시스템 동작 성능이 향상된다. 스냅샷 동작의 2가지 변동, 즉 포스트 동작에 대한 변동과 플러시 동작에 대한 변동이 존재한다. 스냅샷 사이에 다수의 캐시 동작에 대한 상부 바운드를 위치시키는 것이 바람직하다. 스냅샷은 모든 N 포스트 및 모든 M 플러시마다 취해질 수 있다. 플러시 동작은 일반적으로 백그라운드에서 발생되기 때문에, M=1이 좋은 선택이 될 가능성이 있다. 10과 20 사이의 N의 값은 성능 임팩트 및 복구 기간 간의 합당한 트레이드 오프(trade-off)를 제공할 가능성이 많다.
도 7a는 포스 동작(700)에 응답하는 스냅샷 동작을 상세하게 나타낸 도면이다. 단계 704에서, 포스트 카운터가 증가된다. 단계 706에서, 카운터는 스탭샷이 요구되는지를 알기 위해 테스트된다. 요구되지 않을 경우, 동작이 종료된다. 스냅샷이 요구될 경우, 제어가 단계 708에 전달되는데 여기서 N개의 이전에 포스트된 라인에 대한 스냅샷 메타 데이터가 스냅샷 영역(122)으로 전달된다. 포스트된 라인은 최신의 시퀀스 번호를 갖는 것이다. 단계 710에서, 카운터 값이 리셋되어 스냅샷의 완료를 나타낸다.
통상적으로, 캐시 라인에 대한 메타 데이터는 하나 미만의 섹터를 점유할 것이다. N개의 섹터를 한번에 포스팅함으로써, 또한 스냅샷 갱신이 개선된 성능에 대한 스트리밍 동작이 된다.
도 7b는 플러시 동작(700)에 응답하는 스탭샷 동작을 상세하게 나타낸 도면이다. 이 동작은 스냅샷 포스트 동작에 대해 아날로그적이다. 그 차이는 단계 726에서, 가장 최근에 플러싱된 라인에 대응하는 라인 메타 데이터가, 라인이 비어 있는 것을 나타내는 메타 데이터와 중복하여 기록된다는 것이다. 예를 들면, 비어 있는 라인에 대해 보존된 시퀀스 번호를 사용하는 것이다.
복구 동작
시스템이 초기화되면, 불휘발성 기록 캐시의 상태를 적절하게 복구할 필요가 있다. 시스템이 완전한 셧다운을 나타내기 위한 방법을 가지고 있는 경우, 셧다운 전에 완전한 스냅샷이 취해질 수 있으며 이에 따라 복구는 스냅샷을 판독하는 것으로 제한된다. 예를 들면, 많은 저장 시스템이, 제1 기록 시에 설정되고 완전한 셧다운시에 소거되는 더티 플래그(dirty flag)를 사용할 수 있다. 더티 플래그가 설정되지 않은 경우, 스냅샷은 양호한 것으로 알려진다. 반면에, 스냅샷의 상태는 유효한 것으로 보장될 수 없으며, 캐시 메타 데이터는 캐시 및 스냅샷으로부터 재구축되어야 한다.
도 8은 복구 동작(800)을 상세하게 나타낸 도면이다. 단계 803에서는 가장 새로운 시퀀스 번호(newsn)의 값 및 가장 오래된 유효 시퀀스 번호(oldsn)의 값을 초기화한다. 단계 804 내지 816은 캐시 내의 모든 라인 값에 대한 루프이다. 단계 806에서, 라인에 대한 스냅샷 메타 데이터(SMD)가 판독된다. 스냅샷 내의 가장 새로운 시퀀스 번호가 단계 808에서 갱신된다. 단계 810에서, 이 캐시 라인의 클러스터에 대한 캐시 기록 포인터(포스트 동작에 사용하기 위한 다음 라인 번호, postlinecluster#)는 클러스터 내의 가장 새로운 시퀀스 번호에 대응하는 라인의 인덱스로서 연산된다. 단계 812에서, 판독 포인터(플러시 동작에 사용하기 위한 다음 라인 번호)는, 비어 있는 라인을 나타내는 캐시 메타 데이터 후에 가장 높은 라인 번호(FIFO 랩 상태에 따름)로서 결정된다. 단계 814에서, 가장 오래된 시퀀스 번호가 연산된다. 루프가 완료되면, 모든 스냅샷 메타 데이터가 메모리 내에 있다. 또한, 가장 새로운 시퀀스 번호, 모든 클러스터에 대한 판독 포인터, 모든 클러스터에 대한 기록 포인터 및 가장 오래된 시퀀스 번호가 이제 알려진다.
단계 820 내지 828은, 기록 포인터(포스트라인)로부터, 스냅샷 이전에 포스트되었을 수도 있는 최대 라인 번호(N-1)까지의 모든 클러스터 내의 라인 값에 대한 루프이다. 단계 822에서, 라인에 대한 메타 데이터가 판독된다. 단계 824에서, 이 라인에 대한 시퀀스 번호가 가장 새로운 시퀀스 번호와 비교된다. 시퀀스 번호가 가장 새로운 시퀀스 번호 미만이거나, 혹은 시퀀스 번호가 라인이 비어 있음을 나타낼 경우, 더 이상 검사할 라인이 존재하지 않으며 복구 동작이 단계 830에서 완료된다. 반면에, 현재 라인은 이에 따라 스냅샷의 일부가 아니다. 단계 826에서, 기록 포인터 포스트라인은 증가되고(FIFO 스타일) 최신의 섹터 번호가 갱신된다. 루프의 결론 부분에서, 포스트라인 및 시퀀스 번호의 최신 값이 알려질 것이다.
해시 테이블은 메타 데이터에 저장되지 않는다. 이는, 시퀀스 번호를 증가시키는 순서로(데이터가 포스팅되는 것처럼) 모든 블럭 엔트리를 로딩함으로써 라인 메타 데이터로부터 재구축된다. 이는, 서로 다른 블럭에 대한 리스트 엔트리의 순서가 변경되어도, 각 블럭에 대한 리스트 순서가 보존될 수 있게 해준다. 그러나, 이는 이치에 맞지 않는다. 또한, 해시 테이블을 구축하는 보다 복잡한 방법을 사용하는 것이 바람직할 수도 있다. 예를 들면, 링크된 리스트 길이는 가장 높은 시퀀스 번호를 갖는 각 섹터에 대한 엔트리를 단지 로딩함으로써 최소화된다.
전술한 예는, M=1인 경우(모든 플러시에 대한 스냅샷)에 대해 기술하였다. M > 1 인 경우는, 판독 포인터를 위치시키기 위한 단계 820 내지 828과 유사한 추가적인 루프를 가질 것이다. 스냅샷의 사용으로 인해, 일단 플러시되면 캐시 라인 내의 메타 데이터를 갱신할 필요성이 없게 된다. 또한, 스냅샷 영역(212)이 하나의 인접하는 어드레스 블럭 내에 상주할 필요가 없다는 점에 유의할 수도 있다.
데이터 보존
로그 버퍼 시스템의 상태가 항상 잘 정의되는 것이 중요하다. 시스템은 항상 각 판독 요구에 대해 가장 최근에 기록된 데이터를 그 어드레스로 복구시킬 필요가 있다. 따라서, 시스템은 항상 잘 정의된 상태를 가져야 하며, 이 상태는 기록 매체 상에 저장된 지속적인 데이터 내에 반영되어야 한다. 예를 들면, 부분적인 기록이 검출될 수 있도록 보장하기 위해 포스트 동작을 기록 캐시 라인에 적용하는 것이다. 캐시 라인의 각 섹터 내의 시퀀스 번호를 인코딩함으로써 또한 보존이 개선된다. 이는, 각 섹터 내의 보존된 위치를 이용하거나, 혹은 시퀀스 번호를 섹터 체크 영역으로 프리 코딩(pre-coding)함으로써 달성될 수 있다. 이 동작은 완료된 것으로 호스트(102)에 인식되지 않았기 때문에 부분적으로 기록된 캐시 라인은 비어 있는 것으로 취급될 수 있다. 스냅샷의 부분적인 기록은 캐시 라인 순서로부터 시퀀스 번호 순서의 파괴에 의해 또한 검출될 수 있다. 이전에 설명한 복구 절차는, 스냅샷에서 갱신되었던 임의의 포스팅된 라인을 복구할 수 있다. 스냅샷 내에 반영되지 않은 임의의 플러시 라인은 다시 플러시될 수 있다.
순차적 섹터 패리티와 같은 다중 섹터 에러 정정 코드(ECC)와 함께 사용되면, 버퍼 라인이 ECC 어드레스가능한 유닛의 완전한 번호로 되고 패리티가 전체 ECC 어드레스가능한 유닛으로 되는 것이 바람직하다.
구현예
본 실시예의 랜덤 액세스 메모리 풋프린트는 캐시의 용량에 비해 매우 작다. 8 BlockSize의 경우, 각 버퍼 테이블 엔트리는 7바이트이다. 이에 따라, 이는 버퍼 테이블에 대한 캐시 섹터당 1 바이트 미만을 취한다. 해시 테이블의 사이즈는 원하는 탐색 수행 및 요구되는 메모리 사이의 균형이다. 일반적으로, 연산 수행은 해시 테이블 및 링크된 리스트의 길이에 따라 달라질 것이다. 메모리 풋프린트는 이하와 같이 연산될 수 있다. 해시 테이블의 사이즈는 바이트로 엔트리(64K 까지의 엔트리) 수의 두 배이다. 버퍼 테이블 사이즈는 (7바이트×LineSize×라인 수)와 동일하다.
저장 시스템을 제한하지 않는 예로서 5400 rpm 이동 하드 디스크 드라이브를 고려하기로 한다. 데이터 영역의 센터(MD) 근처에 위치한 캐시 라인의 유일한 클러스터는 HDD 탐색 거리를 최소화하도록 선택된다. 이 디스크 드라이브에 대해, MD에서 트랙당 416 섹터가 존재한다. 모든 메타 데이터에 대한 1 블럭과 1 패리티 블럭을 각각 가지는 208 섹터를 갖는, 트랙당 2 캐시 라인이 존재할 것이다. 따라서, LineSize는 8 BlockSize를 갖는 24 블럭이다. 캐시 내에 12,288 블럭이 있을 경우 256 트랙을 점유하는 512 라인이 존재할 것이다. 이에 따라 16K 엔트리의 해시 사이즈가 적당하다. 표 1은 요구되는 여러 메모리 구조의 크기를 나타낸다(여기서 K는 1024의 팩터임).
이 캐시는 거의 48MB의 용량을 갖지만, 메타 데이터 풋프린트는 128KB 미만이다. 일반적으로, 블럭 구조로 인해 풀(full) 용량은 이용가능하지 않을 것이다. 전형적인 I/O가 4KB인 것으로 가정하면, 정렬되지 않은 8 섹터 I/O가 2 블럭을 차지할 것이기 때문에 캐시 용량은 24MB 혹은 거의 그 반으로 낮아질 수 있다.
아이템 사이즈
버퍼 테이블 84KB
해시 테이블 32KB
메모리 풋프린트 116KB
이 설계에 대한 복구 시간은 회전 주기 및 하나의 트랙 탐색 시간으로부터 측정될 수 있다. 스냅샷 메타 데이터는 버퍼 테이블의 크기이다. 풀 섹터를 점유하기 위한 각 라인에 대한 각 메타 데이터가 512 섹터 또는 두 트랙 미만을 요구하는 것을 허용하는 것으로 한다. 최대 스냅샷 간격이 포스트에 대해서는 N=20으로 하고 플러시에 대해서는 M=1로 하도록 선택하는 것은, 가장 최악의 경우는 12 트랙(20/2+1) 캐시 트랙에 스냅샷을 플러스하는 것으로부터 판독되는 것을 의미한다. 이 예에서, 주기는 11.1ms 이며 하나의 트랙 판독 탐색은 2.5ms이며 이에 따라 200ms 복구 시간이 발생한다. 이는, 종래의 개시 시간이 로그 기록 캐시 없이 약 1.7초이기 때문에 시스템 잠재력에 현저하게 영향을 미쳐서는 않된다.
부연
기록 캐시를 갖는 저장 시스템의 성능은, 링크된 리스트로부터 오래된 엔트리(오래된 시퀀스 번호를 갖는 복제 섹터)를 제거함으로써 개선될 수 있다. 플러시 동작은, 종료 토큰을 찾기 위해 해시 리스트를 트래버스하기 때문에 고유의 기회를 제공한다. 임의의 오래된 엔트리는 이들을 만날때 제거될 수 있다. 또한, 플러시되고 있는 라인에 대한 임의의 오래된 섹터를 플러시할 필요는 없다. 캐시 라인은 동일한 용량을 가질 필요가 없으며 그룹 당 캐시 라인의 수는 마찬가지로 변할 수 있다. 이들 상황은, 예를 들어 라인 사이즈의 테이블의 추가와 함께 캐시 테이블 내에 용이하게 핸들링된다. 이 방안은, 영역화된 기록 시스템 내의 분산된 캐시 트랙을 이용할 때 효과적이며, 여기서 지속적으로 인터럽트되지 않은 섹터의 수는 변한다. 하나의 구현예는, 트랙당 일정한 수의 캐시 라인을 유지하면서 라인 사이즈를 변화시키는 것일 수 있다. 또한, 분산된 캐시를 단일 FIFO로서가 아니라 FIFO 세트로서 처리하는 것이 바람직할 수도 있다. 이로 인해 동작이 어드레스가능한 저장 영역의 다른 영역에 집중될 때 캐시에 대한 데이터의 국부화가 허용될 수도 있다.
몇 개의 비어 있는 섹터를 캐시 라인 또는 그룹 또는 결함 관리를 위한 그룹 상에 남겨두는 것이 바람직할 수도 있다. 캐시 라인이 신속하게 액세스가능하도록 유지하는 것이 성능에 대한 주요 부분이다. 따라서, 캐시 라인 그룹 내에 결함을 갖는 것이 해로울 수도 있다. 이러한 결함으로 인해 캐시 라인이 재정렬될 필요가 발생할 것이다. 이는 캐시 라인으로 정렬될 결함 없는 영역을 선택함으로써 달성될 수 있다. 이와 달리, 결함 관리는 캐시 라인 그룹 자체 내에서 처리될 수 있다. 패리티가 직접 사용될 수도 있으며, 섹터를 다시 맵핑하기 위한 라인 그룹 내의 느슨한 스페이스를 이용하는 것이 가능하다.
캐시가 풀 상태일 때의 시스템 성능은 무효화 정보를 포함하기 위한 스냅샷 메타 데이터를 확장함으로써 개선될 수 있다. 이로 인해 풀 캐시 내의 섹터를 무효화할 때 캐시를 플러싱하거나 혹은 기존의 메타 데이터를 변경할 필요성이 감소된다. 이는 또한 데이터 기록 동작 동안 캐시 엔트리를 무효화하기 위한 기록 동작의 수를 감소시킬 수 있다.
캐시 라인에 대한 고정된 위치를 가짐으로써 어드레스 스페이스의 국부적 영역에 대한 불균형한 I/O 액세스를 발생시킬 수 있으며 이는 몇몇 저장 시스템에서 신뢰성 및 장기간의 성능에 대해 바람직하지 못할 수도 있다. 액세스 위치를 주기적으로 이동시키기 위해 알고리즘이 사용될 수 있으며 플러시 동작이 또한 액세스 위치를 변경시킬 것이다. 그 밖의 다른 대안은 캐시 라인을 다른 위치로 주기적으로 이동시키는 것이다. 이는 풀 플러시에 따라서 달성될 수 있으며 이는 요구되는 것은 아니다. 새로운 위치로부터의 데이터는 비어 있는 캐시 라인과 교환될 것이다. 저장 특징이 새로운 영역 내에서 다를 경우 캐시 라인은 또한 리사이징(resizing)될 수 있다.
바람직한 실시예를 참조하여 본 발명을 특별히 도시하고 기술하였지만, 당업자라면 본 발명의 정신 및 범주를 벗어나지 않고 형태 및 상세 사항에 관한 여러가지 변경이 행해질 수도 있음을 알 것이다. 따라서, 본 개시된 발명은 단지 예시적인 것이며 첨부된 특허청구범위에서 정의된 바에 의한 범위에만 국한되는 것으로 간주된다.
본 발명에 따르면, 효율적으로 랜덤 데이터를 기록할 수 있는 저장 장치 및 시스템에 사용되는 로그 구조 기록 캐시가 제공된다.
도 1은 본 발명의, 저장 시스템 내의 기록 캐시를 개략적으로 나타낸 도면.
도 2a는 본 발명에 따라 로그 구조 기록 캐시 및 메타 데이터를 제공하기 위한 캐시 라인의 레이아웃을 나타낸 도면.
도 2b는 데이터 블럭 및 섹터 정보를 포함하는 캐시 라인을 보다 상세하게 나타낸 도면.
도 3은 본 발명에 따른 버퍼 테이블 및 버퍼 테이블을 검색하는 데에 사용되는 해시 테이블의 일례를 나타낸 도면.
도 4는 로그 구조 기록 캐시의 캐시 라인에 데이터를 입력하기 위한 포스트 동작의 바람직한 실시예를 나타낸 흐름도.
도 5는 캐시 라인으로부터 데이터를 소거하고 캐시 라인 내의 섹터 어드레스를 타겟 섹터 어드레스에 기입하는 플러시 동작의 바람직한 실시예를 나타낸 흐름도.
도 6a는 기록 캐시가 존재할 때 데이터를 저장 장치에 기록하기 위한 바람직한 프로세스를 나타낸 흐름도.
도 6b는 기록 캐시가 존재할 때 저장 장치로부터 데이터를 판독하는 바람직한 프로세스를 나타낸 흐름도.
도 7a는 포스트 동작에 응답하는 스냅샷 동작의 바람직한 실시예를 나타낸 흐름도.
도 7b는 플러시 동작에 응답하는 스냅샷 동작의 바람직한 실시예를 나타낸 흐름도.
도 8은 저장 장치에 전원이 켜질 때 기록 캐시의 상태를 복구하는 바람직한 프로세스를 나타낸 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 저장 애플리케이션
102 : 호스트
104 : 저장 시스템
106 : 기록 캐시 제어
112 : 해시 테이블
114 : 버퍼 테이블
120 : 불휘발성 저장 장치

Claims (23)

  1. 데이터 저장 시스템에 있어서,
    각각이 섹터 어드레스와 연관된 데이터 블럭으로서 데이터를 저장하는 매체와,
    복수의 캐시 라인을 갖는 기록 캐시
    를 포함하며,
    상기 캐시 라인 각각은, 복수의 데이터 블럭과, 상기 캐시 라인 내의 데이터 블럭이 기록될 섹터 어드레스에 대한 정보를 갖는 라인 메타 데이터와, 상기 캐시 라인 내의 데이터 블럭의 순서를 다른 캐시 라인 내의 데이터 블럭과 관련하여 나타내는 순차 번호를 가지며,
    상기 기록 캐시는 상기 시스템의 성능을 향상시키기 위해 데이터에 대한 순차적으로 기록된 스테이징(staging) 영역으로서 기능하는 데이터 저장 시스템.
  2. 제1항에 있어서,
    상기 각 캐시 라인은, 상기 캐시 라인의 부분적 손실이 발생될 때 상기 캐시 라인 내의 데이터의 복구를 가능하게 하기 위한 패리티 블럭을 더 포함하는 데이터 저장 시스템.
  3. 제1항에 있어서,
    기록 데이터는 섹터 어드레스에서 상기 시스템에 기록되기 전에 상기 기록 캐시에 포스팅(posting)되는 데이터 저장 시스템.
  4. 제1항에 있어서,
    상기 기록 캐시는 상기 시스템의 불휘발성 메모리 내에 유지되는 데이터 저장 시스템.
  5. 제1항에 있어서,
    호스트 시스템 및 상기 기록 캐시와 상호작용하기 위한 기록 캐시 제어를 더 포함하는 데이터 저장 시스템.
  6. 제1항에 있어서,
    상기 라인 메타 데이터는 상기 캐시 라인을 식별하기 위한 시퀀스 번호를 포함하는 데이터 저장 시스템.
  7. 제1항에 있어서,
    상기 라인 메타 데이터는 복수의 엔트리를 갖는 라인 버퍼 테이블을 포함하며, 상기 엔트리 각각은 타겟 섹터 어드레스와, 점유되는 블럭 내의 섹터 위치를 나타내는 비트맵을 갖는 데이터 저장 시스템.
  8. 제7항에 있어서,
    상기 모든 캐시 라인에 대한 상기 라인 버퍼 테이블은 버퍼 테이블에 통합되어서 섹터 어드레스가 탐색되도록 하는 데이터 저장 시스템.
  9. 제8항에 있어서,
    상기 버퍼 테이블은 해시 테이블을 이용하여 탐색되는 데이터 저장 시스템.
  10. 제9항에 있어서,
    상기 버퍼 테이블 및 상기 해시 테이블을 관리하기 위한 캐시 제어를 더 포함하는 데이터 저장 시스템.
  11. 제1항에 있어서,
    상기 매체는 전체 기록 캐시에 대한 상기 라인 메타 데이터의 스냅샷(snapshot)을 포함하며, 상기 스냅샷은 시스템 셧다운의 경우 데이터 복구에 사용되는 데이터 저장 시스템.
  12. 제1항에 있어서,
    상기 캐시 라인은 상기 매체 상에 클러스터로서 함께 그룹화되는 데이터 저장 시스템.
  13. 제1항에 있어서,
    상기 시스템은 디스크 드라이브인 데이터 저장 시스템.
  14. 제1항에 있어서,
    상기 시스템은 광 디스크 드라이브인 데이터 저장 시스템.
  15. 제1항에 있어서,
    상기 시스템은 디스크 어레이인 데이터 저장 시스템.
  16. 제1항에 있어서,
    상기 시스템은 저장 서버인 데이터 저장 시스템.
  17. 각각이 섹터 어드레스와 연관된 데이터 블럭으로서 데이터를 저장하는 매체를 갖는 데이터 저장 시스템의 성능을 향상시키기 위한 방법에 있어서,
    상기 매체 상에 기록 캐시를 제공하는 단계 - 상기 기록 캐시는 복수의 캐시 라인을 가지며, 상기 캐시 라인 각각은 복수의 데이터 블럭과, 상기 캐시 라인 내의 데이터 블럭이 기록될 섹터 어드레스에 대한 정보를 갖는 라인 메타 데이터와, 상기 캐시 라인 내의 데이터 블럭의 순서를 다른 캐시 라인 내의 데이터 블럭과 관련하여 나타내는 순차적 번호를 가짐 - 와,
    상기 시스템의 성능을 향상시키기 위해 순차적으로 기록된 데이터로서 상기 기록 캐시 내의 기록 데이터를 스테이징(staging)하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 스테이징 단계는,
    상기 시스템에 기록될 복수의 데이터 블럭을 수신하는 단계와,
    상기 캐시 라인중 하나에 상기 데이터 블럭을 저장하는 단계와,
    상기 캐시 라인에 대한 시퀀스 번호와 상기 데이터 블럭에 대한 어드레스를 포함하는 메타 데이터를 상기 캐시 라인에 대해 발생하는 단계와,
    상기 메타 데이터를 상기 캐시 라인 내에 저장하는 단계를 포함하는 방법.
  19. 제18항에 있어서,
    상기 캐시 라인 내의 데이터에 대한 복수의 패리티 블럭을 연산하는 단계와,
    상기 패리티 블럭을 상기 캐시 라인에 기록하는 단계를 더 포함하는 방법.
  20. 제17항에 있어서,
    상기 매체 상에 스냅샷 영역을 제공하는 단계와,
    데이터가 상기 기록 캐시에 기록된 후 상기 스냅샷 영역 내에 상기 캐시 라인에 대한 상기 메타 데이터의 카피(copy)를 기록하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서,
    상기 스냅샷 메타 데이터에 근거하여 초기화에 이어서 상기 기록 캐시의 상태를 판정하는 단계를 더 포함하는 방법.
  22. 제21항에 있어서,
    상기 판정 단계는,
    상기 스냅샷 메타 데이터를 판독하는 단계와,
    현재 캐시된 데이터를 포함하는 캐시 라인을 판정하는 단계와,
    상기 판정된 캐시 라인과 관련된 상기 메타 데이터에 근거하여 상기 기록 캐시의 상태를 판정하는 단계를 포함하는 방법.
  23. 각각이 섹터 어드레스와 관련된 데이터 블록으로서 데이터를 저장하는 매체를 구비한 저장 시스템에 사용되어 상기 시스템의 성능을 향상시키기 위한 컴퓨터 판독가능 기록 매체로서, 제17항 내지 제22항중 어느 한 항에 기재된 방법의 각 단계들을 구현하는 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 기록 매체.
KR10-2003-0087882A 2002-12-27 2003-12-05 데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시 KR100510808B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/330,586 2002-12-27
US10/330,586 US7010645B2 (en) 2002-12-27 2002-12-27 System and method for sequentially staging received data to a write cache in advance of storing the received data

Publications (2)

Publication Number Publication Date
KR20040060732A KR20040060732A (ko) 2004-07-06
KR100510808B1 true KR100510808B1 (ko) 2005-08-30

Family

ID=32654532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0087882A KR100510808B1 (ko) 2002-12-27 2003-12-05 데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시

Country Status (5)

Country Link
US (1) US7010645B2 (ko)
JP (1) JP2004213647A (ko)
KR (1) KR100510808B1 (ko)
CN (1) CN1512353A (ko)
TW (1) TWI233552B (ko)

Families Citing this family (234)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197614B2 (en) * 2002-05-08 2007-03-27 Xiotech Corporation Method and apparatus for mirroring data stored in a mass storage system
US7181581B2 (en) * 2002-05-09 2007-02-20 Xiotech Corporation Method and apparatus for mirroring data stored in a mass storage system
JPWO2004051492A1 (ja) * 2002-11-29 2006-04-06 富士通株式会社 同一の入力値を圧縮する記憶装置
JP3974538B2 (ja) 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
JP2004265110A (ja) * 2003-02-28 2004-09-24 Hitachi Ltd メタデータ配置方法、プログラムおよびディスク装置
JP4165747B2 (ja) * 2003-03-20 2008-10-15 株式会社日立製作所 記憶システム、制御装置及び制御装置のプログラム
US7114033B2 (en) * 2003-03-25 2006-09-26 Emc Corporation Handling data writes copied from a remote data storage device
US7111136B2 (en) * 2003-06-26 2006-09-19 Hitachi, Ltd. Method and apparatus for backup and recovery system using storage based journaling
US7398422B2 (en) * 2003-06-26 2008-07-08 Hitachi, Ltd. Method and apparatus for data recovery system using storage based journaling
US20050022213A1 (en) * 2003-07-25 2005-01-27 Hitachi, Ltd. Method and apparatus for synchronizing applications for data recovery using storage based journaling
US20050015416A1 (en) 2003-07-16 2005-01-20 Hitachi, Ltd. Method and apparatus for data recovery using storage based journaling
JP4124348B2 (ja) * 2003-06-27 2008-07-23 株式会社日立製作所 記憶システム
US20050210318A1 (en) * 2004-03-22 2005-09-22 Dell Products L.P. System and method for drive recovery following a drive failure
US7383389B1 (en) * 2004-04-28 2008-06-03 Sybase, Inc. Cache management system providing improved page latching methodology
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8261122B1 (en) * 2004-06-30 2012-09-04 Symantec Operating Corporation Estimation of recovery time, validation of recoverability, and decision support using recovery metrics, targets, and objectives
CN100465871C (zh) * 2004-08-17 2009-03-04 株式会社日立制作所 存储装置系统
CN1306381C (zh) * 2004-08-18 2007-03-21 华为技术有限公司 一种磁盘阵列数据的读写方法及并行读写方法
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7310711B2 (en) * 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
US7330417B2 (en) * 2004-11-12 2008-02-12 International Business Machines Corporation Storage device having superset format, method and system for use therewith
US20060206538A1 (en) * 2005-03-09 2006-09-14 Veazey Judson E System for performing log writes in a database management system
US20100161901A9 (en) * 2005-04-14 2010-06-24 Arm Limited Correction of incorrect cache accesses
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US7373366B1 (en) 2005-06-10 2008-05-13 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume
US20060282471A1 (en) * 2005-06-13 2006-12-14 Mark Timothy W Error checking file system metadata while the file system remains available
US20070028051A1 (en) * 2005-08-01 2007-02-01 Arm Limited Time and power reduction in cache accesses
US7533215B2 (en) * 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
KR100977580B1 (ko) 2005-10-13 2010-08-23 엘지전자 주식회사 부호화/복호화 방법 및 장치.
JP4766240B2 (ja) * 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7752488B2 (en) * 2006-01-06 2010-07-06 International Business Machines Corporation Method to adjust error thresholds in a data storage and retrieval system
US7574565B2 (en) * 2006-01-13 2009-08-11 Hitachi Global Storage Technologies Netherlands B.V. Transforming flush queue command to memory barrier command in disk drive
JP4935182B2 (ja) * 2006-05-11 2012-05-23 富士ゼロックス株式会社 コマンドキューイング制御装置、コマンドキューイングプログラム及びストレージシステム
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
KR100800484B1 (ko) * 2006-11-03 2008-02-04 삼성전자주식회사 불휘발성 메모리를 위한 버퍼와 디스크를 위한 버퍼를구비하는 데이터 저장 시스템 및 상기 데이터 저장시스템의 데이터 억세스 방법
US7711678B2 (en) * 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US8046547B1 (en) 2007-01-30 2011-10-25 American Megatrends, Inc. Storage system snapshots for continuous file protection
US8082407B1 (en) 2007-04-17 2011-12-20 American Megatrends, Inc. Writable snapshots for boot consolidation
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US20080276124A1 (en) * 2007-05-04 2008-11-06 Hetzler Steven R Incomplete write protection for disk array
KR101300821B1 (ko) * 2007-07-04 2013-08-26 삼성전자주식회사 비휘발성 메모리의 데이터 손실을 방지하기 위한 장치 및방법
US8554734B1 (en) 2007-07-19 2013-10-08 American Megatrends, Inc. Continuous data protection journaling in data storage systems
US8127096B1 (en) 2007-07-19 2012-02-28 American Megatrends, Inc. High capacity thin provisioned storage server with advanced snapshot mechanism
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8527454B2 (en) * 2007-08-29 2013-09-03 Emc Corporation Data replication using a shared resource
US8799595B1 (en) 2007-08-30 2014-08-05 American Megatrends, Inc. Eliminating duplicate data in storage systems with boot consolidation
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
KR101008032B1 (ko) * 2007-12-18 2011-01-13 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
US8326897B2 (en) 2007-12-19 2012-12-04 International Business Machines Corporation Apparatus and method for managing data storage
US8347029B2 (en) * 2007-12-28 2013-01-01 Intel Corporation Systems and methods for fast state modification of at least a portion of non-volatile memory
KR20090102192A (ko) * 2008-03-25 2009-09-30 삼성전자주식회사 메모리 시스템 및 그것의 데이터 저장 방법
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8799429B1 (en) 2008-05-06 2014-08-05 American Megatrends, Inc. Boot acceleration by consolidating client-specific boot data in a data storage system
US8275970B2 (en) * 2008-05-15 2012-09-25 Microsoft Corp. Optimizing write traffic to a disk
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
JP5029513B2 (ja) * 2008-06-30 2012-09-19 ソニー株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8037033B2 (en) * 2008-09-22 2011-10-11 Microsoft Corporation Log manager for aggregating data
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
JP2010165251A (ja) * 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
US20100205367A1 (en) * 2009-02-09 2010-08-12 Ehrlich Richard M Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands
US8103822B2 (en) * 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US8407403B2 (en) * 2009-12-07 2013-03-26 Microsoft Corporation Extending SSD lifetime using hybrid storage
US9003110B2 (en) 2010-01-13 2015-04-07 International Business Machines Corporation Dividing incoming data into multiple data streams and transforming the data for storage in a logical data object
JP4886877B2 (ja) * 2010-05-31 2012-02-29 株式会社東芝 記録媒体制御装置、及びその方法
JP5170169B2 (ja) * 2010-06-18 2013-03-27 Necシステムテクノロジー株式会社 ディスクアレイ装置間のリモートコピー処理システム、処理方法、及び処理用プログラム
WO2012016089A2 (en) * 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8630418B2 (en) 2011-01-05 2014-01-14 International Business Machines Corporation Secure management of keys in a key repository
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
JP5297479B2 (ja) * 2011-02-14 2013-09-25 エヌイーシーコンピュータテクノ株式会社 ミラーリング復旧装置、および、ミラーリング復旧方法
US9223511B2 (en) 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
US9396067B1 (en) 2011-04-18 2016-07-19 American Megatrends, Inc. I/O accelerator for striped disk arrays using parity
US8913335B2 (en) * 2011-05-23 2014-12-16 HGST Netherlands B.V. Storage device with shingled data and unshingled cache regions
KR101703931B1 (ko) * 2011-05-24 2017-02-07 한화테크윈 주식회사 감시 시스템
CN102214153B (zh) * 2011-06-25 2013-03-20 北京机械设备研究所 一种光电瞄测系统射表数据存储维护方法
US8930330B1 (en) 2011-06-27 2015-01-06 Amazon Technologies, Inc. Validation of log formats
US8806588B2 (en) 2011-06-30 2014-08-12 Amazon Technologies, Inc. Storage gateway activation process
US8832039B1 (en) 2011-06-30 2014-09-09 Amazon Technologies, Inc. Methods and apparatus for data restore and recovery from a remote data store
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US10754813B1 (en) * 2011-06-30 2020-08-25 Amazon Technologies, Inc. Methods and apparatus for block storage I/O operations in a storage gateway
US8706834B2 (en) 2011-06-30 2014-04-22 Amazon Technologies, Inc. Methods and apparatus for remotely updating executing processes
US8732401B2 (en) 2011-07-07 2014-05-20 Atlantis Computing, Inc. Method and apparatus for cache replacement using a catalog
US8793343B1 (en) 2011-08-18 2014-07-29 Amazon Technologies, Inc. Redundant storage gateways
US8789208B1 (en) 2011-10-04 2014-07-22 Amazon Technologies, Inc. Methods and apparatus for controlling snapshot exports
US9635132B1 (en) 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10133662B2 (en) 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
WO2013097228A1 (zh) * 2011-12-31 2013-07-04 中国科学院自动化研究所 多粒度并行存储系统
US9570124B2 (en) 2012-01-11 2017-02-14 Viavi Solutions Inc. High speed logging system
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
CN104303162B (zh) * 2012-01-12 2018-03-27 桑迪士克科技有限责任公司 用于管理缓存接纳的系统和方法
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
JP2013222434A (ja) 2012-04-19 2013-10-28 Nec Corp キャッシュ制御装置、キャッシュ制御方法、及びそのプログラム
CN102638584B (zh) * 2012-04-20 2014-11-19 青岛海信传媒网络技术有限公司 数据分布缓存方法及系统
US20130290601A1 (en) * 2012-04-26 2013-10-31 Lsi Corporation Linux i/o scheduler for solid-state drives
US9195578B2 (en) * 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
US9069472B2 (en) 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US9141554B1 (en) 2013-01-18 2015-09-22 Cisco Technology, Inc. Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques
US9372865B2 (en) 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9501501B2 (en) 2013-03-15 2016-11-22 Amazon Technologies, Inc. Log record management
US9672237B2 (en) 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
US9448877B2 (en) 2013-03-15 2016-09-20 Cisco Technology, Inc. Methods and apparatus for error detection and correction in data storage systems using hash value comparisons
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US9860332B2 (en) * 2013-05-08 2018-01-02 Samsung Electronics Co., Ltd. Caching architecture for packet-form in-memory object caching
US9317213B1 (en) * 2013-05-10 2016-04-19 Amazon Technologies, Inc. Efficient storage of variably-sized data objects in a data store
US9760596B2 (en) 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
US9208032B1 (en) 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US10303564B1 (en) * 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US9305056B1 (en) 2013-05-24 2016-04-05 Amazon Technologies, Inc. Results cache invalidation
US9047189B1 (en) 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
GB2516091A (en) * 2013-07-11 2015-01-14 Ibm Method and system for implementing a dynamic array data structure in a cache line
US9507843B1 (en) 2013-09-20 2016-11-29 Amazon Technologies, Inc. Efficient replication of distributed storage changes for read-only nodes of a distributed database
US10216949B1 (en) 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US9280591B1 (en) 2013-09-20 2016-03-08 Amazon Technologies, Inc. Efficient replication of system transactions for read-only nodes of a distributed database
US9460008B1 (en) 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US9519664B1 (en) 2013-09-20 2016-12-13 Amazon Technologies, Inc. Index structure navigation using page versions for read-only nodes
US9292564B2 (en) * 2013-09-21 2016-03-22 Oracle International Corporation Mirroring, in memory, data from disk to improve query performance
US10223184B1 (en) 2013-09-25 2019-03-05 Amazon Technologies, Inc. Individual write quorums for a log-structured distributed storage system
US9699017B1 (en) 2013-09-25 2017-07-04 Amazon Technologies, Inc. Dynamic utilization of bandwidth for a quorum-based distributed storage system
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US9684607B2 (en) * 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
US9760480B1 (en) 2013-11-01 2017-09-12 Amazon Technologies, Inc. Enhanced logging using non-volatile system memory
US10387399B1 (en) 2013-11-01 2019-08-20 Amazon Technologies, Inc. Efficient database journaling using non-volatile system memory
US9880933B1 (en) 2013-11-20 2018-01-30 Amazon Technologies, Inc. Distributed in-memory buffer cache system using buffer cache nodes
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
CN104750598B (zh) * 2013-12-26 2017-11-24 南京南瑞继保电气有限公司 一种iec61850日志服务的存储方法
US10303663B1 (en) 2014-06-12 2019-05-28 Amazon Technologies, Inc. Remote durable logging for journaling file systems
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
CN104778015B (zh) * 2015-02-04 2018-02-16 深圳神州数码云科数据技术有限公司 一种磁盘阵列性能优化方法及系统
US9817730B1 (en) * 2015-03-26 2017-11-14 Amazon Technologies, Inc. Storing request properties to block future requests
US9900250B2 (en) 2015-03-26 2018-02-20 Cisco Technology, Inc. Scalable handling of BGP route information in VXLAN with EVPN control plane
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US9804786B2 (en) 2015-06-04 2017-10-31 Seagate Technology Llc Sector translation layer for hard disk drives
US11588783B2 (en) 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US9998150B1 (en) * 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10977128B1 (en) * 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US9838042B1 (en) 2015-06-17 2017-12-05 Amazon Technologies, Inc. Data retrieval optimization for redundancy coded data storage systems with static redundancy ratios
US10311020B1 (en) 2015-06-17 2019-06-04 Amazon Technologies, Inc. Locality-sensitive data retrieval for redundancy coded data storage systems
US9866242B1 (en) 2015-06-17 2018-01-09 Amazon Technologies, Inc. Throughput optimization for redundancy coded data storage systems
US9838041B1 (en) * 2015-06-17 2017-12-05 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US9853662B1 (en) 2015-06-17 2017-12-26 Amazon Technologies, Inc. Random access optimization for redundancy coded data storage systems
US10009044B1 (en) * 2015-06-17 2018-06-26 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US9825652B1 (en) 2015-06-17 2017-11-21 Amazon Technologies, Inc. Inter-facility network traffic optimization for redundancy coded data storage systems
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US9904589B1 (en) 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10778765B2 (en) 2015-07-15 2020-09-15 Cisco Technology, Inc. Bid/ask protocol in scale-out NVMe storage
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US9940250B2 (en) 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for writes to storage write cache
CN105260261B (zh) * 2015-11-19 2018-06-15 四川神琥科技有限公司 一种邮件恢复方法
US10394789B1 (en) * 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US9892075B2 (en) 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
TWI588824B (zh) * 2015-12-11 2017-06-21 捷鼎國際股份有限公司 加快在不連續頁面寫入資料之電腦系統及其方法
US9785495B1 (en) 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10140172B2 (en) 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
US20170351639A1 (en) 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US10664169B2 (en) 2016-06-24 2020-05-26 Cisco Technology, Inc. Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device
JP6734536B2 (ja) * 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
US11563695B2 (en) 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
CN107870732B (zh) * 2016-09-23 2020-12-25 伊姆西Ip控股有限责任公司 从固态存储设备冲刷页面的方法和设备
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10909077B2 (en) * 2016-09-29 2021-02-02 Paypal, Inc. File slack leveraging
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10545914B2 (en) 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10713203B2 (en) 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US10126964B2 (en) * 2017-03-24 2018-11-13 Seagate Technology Llc Hardware based map acceleration using forward and reverse cache tables
US10621055B2 (en) 2017-03-28 2020-04-14 Amazon Technologies, Inc. Adaptive data recovery for clustered data devices
US10530752B2 (en) 2017-03-28 2020-01-07 Amazon Technologies, Inc. Efficient device provision
US11356445B2 (en) 2017-03-28 2022-06-07 Amazon Technologies, Inc. Data access interface for clustered devices
CN108733507B (zh) * 2017-04-17 2021-10-08 伊姆西Ip控股有限责任公司 文件备份和恢复的方法和设备
US10176046B1 (en) * 2017-06-29 2019-01-08 EMC IP Holding Company LLC Checkpointing of metadata into user data area of a content addressable storage system
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10942666B2 (en) 2017-10-13 2021-03-09 Cisco Technology, Inc. Using network device replication in distributed storage clusters
US11914571B1 (en) 2017-11-22 2024-02-27 Amazon Technologies, Inc. Optimistic concurrency for a multi-writer database
JP2020144534A (ja) 2019-03-05 2020-09-10 キオクシア株式会社 メモリ装置およびキャッシュ制御方法
US11847333B2 (en) * 2019-07-31 2023-12-19 EMC IP Holding Company, LLC System and method for sub-block deduplication with search for identical sectors inside a candidate block
CN110659315B (zh) * 2019-08-06 2020-11-20 上海孚典智能科技有限公司 基于非易失性存储系统的高性能非结构化数据库服务
US11341163B1 (en) 2020-03-30 2022-05-24 Amazon Technologies, Inc. Multi-level replication filtering for a distributed database
US11379318B2 (en) 2020-05-08 2022-07-05 Vmware, Inc. System and method of resyncing n-way mirrored metadata on distributed storage systems without requiring checksum in the underlying storage
US11403189B2 (en) * 2020-05-08 2022-08-02 Vmware, Inc. System and method of resyncing data in erasure-coded objects on distributed storage systems without requiring checksum in the underlying storage
US11429498B2 (en) 2020-05-08 2022-08-30 Vmware, Inc. System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout
US11494090B2 (en) 2020-09-25 2022-11-08 Vmware, Inc. Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage
CN112306811A (zh) * 2020-11-09 2021-02-02 重庆易宠科技有限公司 一种php微服务控制方法、系统、终端及介质
CN114116431B (zh) * 2022-01-25 2022-05-27 深圳市明源云科技有限公司 系统运行健康检测方法、装置、电子设备及可读存储介质
US20230273926A1 (en) * 2022-02-25 2023-08-31 Visa International Service Association System, Method, and Computer Program Product for Efficiently Storing Multi-Threaded Log Data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
DE19506278A1 (de) * 1995-02-23 1996-08-29 Hoechst Ag Verfahren zur Herstellung aromatischer Amine
US5996054A (en) * 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US6021408A (en) * 1996-09-12 2000-02-01 Veritas Software Corp. Methods for operating a log device
US6148368A (en) * 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
US6016553A (en) * 1997-09-05 2000-01-18 Wild File, Inc. Method, software and apparatus for saving, using and recovering data
US6112277A (en) * 1997-09-25 2000-08-29 International Business Machines Corporation Method and means for reducing device contention by random accessing and partial track staging of records according to a first DASD format but device mapped according to a second DASD format
US6578041B1 (en) * 2000-06-30 2003-06-10 Microsoft Corporation High speed on-line backup when using logical log operations
US6539460B2 (en) * 2001-01-19 2003-03-25 International Business Machines Corporation System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression
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

Also Published As

Publication number Publication date
US7010645B2 (en) 2006-03-07
CN1512353A (zh) 2004-07-14
TWI233552B (en) 2005-06-01
JP2004213647A (ja) 2004-07-29
KR20040060732A (ko) 2004-07-06
US20040128470A1 (en) 2004-07-01
TW200502767A (en) 2005-01-16

Similar Documents

Publication Publication Date Title
KR100510808B1 (ko) 데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시
KR100211790B1 (ko) 직접 액세스 저장 장치에서 데이터 압축을 위한 디렉토리 재 구축 방법 및 장치
JP3808007B2 (ja) 記憶装置のキャッシング方法およびシステム
US8086792B2 (en) Demoting tracks from cache
US7853750B2 (en) Method and an apparatus to store data patterns
JP3422370B2 (ja) ディスクキャッシュ制御装置
US5764880A (en) Method and system for rebuilding log-structured arrays
US7464322B2 (en) System and method for detecting write errors in a storage device
US5634109A (en) Method and system for enhanced data management efficiency in memory subsystems utilizing redundant arrays of disk memory devices and a nonvolatile cache
US10621051B2 (en) Logical to physical table restoration from stored journal entries
US8332581B2 (en) Stale track initialization in a storage controller
US20030236944A1 (en) System and method for reorganizing data in a raid storage system
US9798623B2 (en) Using cache to manage errors in primary storage
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
JPH096540A (ja) 直接アクセス記憶装置のデータ圧縮用組込みディレクトリ方法及びディレクトリ・レコード
JP3919770B2 (ja) 自己修復記憶システム
JP3435400B2 (ja) ディスクアレイ装置におけるデータ修復方法及びディスクアレイコントローラ
JP2691087B2 (ja) データ・ファイルについてのディレクトリ・システム、装置および方法
US9514052B2 (en) Write-through-and-back-cache
US6636954B2 (en) Method and apparatus for inter-disk copy processing, and a computer product
US8938641B2 (en) Method and apparatus for synchronizing storage volumes
US6678787B2 (en) DASD-free non-volatile updates
US6854038B2 (en) Global status journaling in NVS
CN117519612B (zh) 基于索引在线拼接的海量小文件存储系统与方法
US20090049226A1 (en) Stale track initialization in a storage controller

Legal Events

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

Payment date: 20080523

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee