KR101686340B1 - 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법 - Google Patents

대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법 Download PDF

Info

Publication number
KR101686340B1
KR101686340B1 KR1020150110874A KR20150110874A KR101686340B1 KR 101686340 B1 KR101686340 B1 KR 101686340B1 KR 1020150110874 A KR1020150110874 A KR 1020150110874A KR 20150110874 A KR20150110874 A KR 20150110874A KR 101686340 B1 KR101686340 B1 KR 101686340B1
Authority
KR
South Korea
Prior art keywords
data
journal
block
journal data
volatile cache
Prior art date
Application number
KR1020150110874A
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 KR1020150110874A priority Critical patent/KR101686340B1/ko
Application granted granted Critical
Publication of KR101686340B1 publication Critical patent/KR101686340B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예들에 따라 호스트 시스템과 대용량 스토리지 사이에 비휘발성 캐시를 제공하는 비휘발성 캐시 시스템은, 호스트 시스템에서 수신되는 데이터 블록이 저널 데이터인지 식별하고, 저널 데이터로 식별된 상기 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 저널 데이터 식별 정보를 중복 탐지 테이블에 저장하는 저널 데이터 식별부, 저널 데이터가 아닌 데이터 블록에 대해, 중복 탐지 테이블을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정하는 중복 데이터 판정부 및 저널 데이터인 데이터 블록, 또는 저널 데이터가 아니면서 중복되지 않은 데이터 블록을 비휘발성 캐시에 저장하고, 저널 데이터가 아니면서 중복된 데이터 블록을 비휘발성 캐시에 저장하지 않고 대용량 스토리지로 전달하는 비휘발성 캐시 관리부를 포함할 수 있다.

Description

대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법{METHOD FOR EFFICIENT NON-VOLATILE CACHE LOAD MANAGEMENT FOR HIGH CAPACITY STORAGE APPARATUS}
본 발명은 스토리지 관리 기법에 관한 것으로, 더욱 상세하게는, 대용량 스토리지 장치를 위한 비휘발성 캐시 관리 기법에 관한 것이다.
전통적인 데이터 통신 시스템에서 캐시는 데이터의 빠른 접근을 위해 일시적으로 보관하는 용도로 사용되어 왔기 때문에, 휘발성 매체인 DRAM에 의해 구현되는 것이 보통이었다. 종래의 대용량 스토리지 장치에 장착되는 캐시들은 대체로 휘발성 메모리 소자로써 구현되어 왔다.
캐시를 비휘발성 매체로 구현하게 되면, 전통적인 임시 저장 장소인 캐시도 데이터의 반영구적인 저장소인 대용량 스토리지와 마찬가지로 반영구적으로 데이터를 보관할 수 있고, 전력 소비가 줄어드는 등 장점이 있다.
실제로, 최근 비휘발성 메모리 소자 기술이 급속도로 발전하고 가격이 저렴해짐에 따라, 대용량의 비휘발성 메모리 소자들로써 캐시를 구현한 대용량 스토리지 장치가 널리 보급되고 있다.
하지만, 비휘발성 메모리는, 한번 데이터가 생성되면 특별한 사정이 없는 한 동일한 위치에 반영구적으로 저장될 수 있는 하드디스크와는 달리, 예를 들어 여유 공간의 비율이 기준보다 낮아지면, 외부에서 쓰기 명령이 없어도 가비지 컬렉션(Garbage Collection 또는 GC)과 같은 비휘발성 스토리지 장치 특유의 부수적인 관리 작업과 같은 자체적으로 쓰기 작업을 끊임없이 수행한다.
이렇듯 쓰기 연산이 상대적으로 느리고 쓰기 횟수가 제한되는 비휘발성 대용량 스토리지 장치에서는, 이러한 관리 작업과 같은 오버헤드로 인해 성능이 저하되고 수명이 단축되기 때문에, 데이터를 유지하는 데에 실제로는 적지 않은 비용이 든다.
따라서, 비휘발성 메모리가 캐시 및 대용량 스토리지로서 사용되는 환경에서, 비휘발성 메모리에 쓰기 명령을 조금이라도 줄이는 것은 단순히 쓰기 명령에 기인한 쓰기 횟수 감소 이상의 효과가 있을 것으로 예상된다.
한편, 종래에 파일 시스템의 비정상 종료(system failure)에 대처하는 가장 일반적인 방법은, 예를 들어 리눅스(Linux)에서는 부팅을 하는 시점에 fsck와 같은 소정의 유틸리티를 가지고 파일 시스템의 일관성(integrity) 검사를 수행하는 방식으로서, 파일 시스템을 조사하여 문제점을 발견하면 알아서 교정하거나, 자동으로 교정이 불가능하면 사용자가 직접 복구할 수 있게 복구 모드로 재부팅하는 식이다.
운영체제의 버전에 따라 파일 시스템의 항상성을 확인하기 위해 fsck과 같은 유틸리티를 디스크의 마운트 시점에서 항상 수행하는 경우도 있다. 따라서 기존의 방식에서는, 파일 시스템에 언제 문제가 있을지 모르므로 파일 시스템을 항상 조사하거나 어디서 문제가 발견될 것인지 모르기 때문에 방대한 파일 시스템을 순차적으로 조사를 해야 한다.
이러한 단점을 극복하기 위해, 저널링 기법이 제안되었는데, 저널링 기법은 변경 사항들이 디스크에 기록되기 전에 일단 저널에 변경 사항들을 기록하고 변경 사항들에 관한 메타 데이터를 기록한 로그를 관리하는 기법으로서, 시스템의 비정상적 종료 시에 높은 신뢰성과 빠른 속도를 가지고 시스템을 복구할 수 있다.
여기서, 파일 시스템의 메타 데이터는 디스크 내에 구조적으로 저장되는 데이터의 관리를 위한 구조 관리 용도의 보조적 데이터로서, 파일의 생성, 삭제, 디렉토리의 생성과 삭제, 파일 크기의 증가 감소 등에 따라 생성되는 데이터이다. 다시 말해 파일 시스템에 반영되는 변경 사항들에 관한 정보들이다.
이러한 저널링 기법을 채용한 파일 시스템을 저널링 파일 시스템이라고 한다. 공통적으로 저널링 파일 시스템은 별도로 마련된 저널 영역에 변경 사항들을 기록하거나 또는 변경 사항과 그 메타 데이터를 함께 기록하다가, 소정의 시점이 되면 가장 최신의 변경 사항들을 디스크의 원본 위치에 기록하는데, 이를 체크포인트(checkpoint)라고 한다.
통상적으로 저널 영역에 기록할 때에는 일관되게 변경되어야 하는 일련의 업데이트들을 트랜잭션 단위로 관리하며 통상 수 초 단위의 주기로 복수의 트랜잭션들에 속하는 모든 데이터가 저널 영역에 성공적으로 기록됨을 보장하는 커밋(commit)이라 불리는 동작을 수행한다.
저널링 파일 시스템들은 개발사마다 세부적인 정책에서 다소 다르게 개발되고 있다. 예를 들어, 정책에 따라, 변경 사항을 디스크의 원본 위치에 저장하고 나서 메타 데이터를 저널 영역에 기록한다거나, 메타 데이터와 변경 사항을 저널에 기록하고 다시 변경 사항을 디스크의 원본 위치에 기록할 수도 있다. 또한 정책에 따라, 남은 공간이 부족해지면 저널을 체크포인트할 수도 있고, 정해진 시간이 되면 저널을 체크포인트할 수도 있다.
저널링 작업은 시스템의 취약성을 줄이기 위해서 자주 커밋 동작을 일으키므로, 상당한 스토리지 트래픽을 유발할 수 있다. 이로 인하여, 접근 비용이 비싼 하드디스크 및 클라우드 스토리지에서는 상당한 성능 저하를 일으킬 수 있다.
저널링 파일 시스템의 저널 영역은 시스템의 비정상 종료 시점 및 그 이후에 저장 상태를 유지해야 하므로 대용량 스토리지의 일부 공간을 이용하여 운영될 수 있다. 말하자면, 저널링 파일 시스템을 지원하는 대용량 스토리지는 파일 시스템 영역과 저널 영역을 가진다고 할 수 있다.
그런데, 특히 저널 영역에 변경 사항을 기록하는 방식의 경우에, 대용량 스토리지 내의 저널 영역에 기록될 저널 데이터는 대용량 스토리지의 저널 영역에 기록될 뿐 아니라, 시스템과 대용량 스토리지 사이의 모든 트래픽에 관하여 캐싱을 수행하는 캐시에도 기록된다.
이러한 방식에서는, 캐시가 비휘발성 메모리 소자로 구현될 경우에는, 휘발성 메모리 소자로 구현된 캐시와 달리, 일단 비휘발성 캐시에 데이터가 기록된 이상, 삭제나 덮어쓰기를 위해서는 상술한 가비지 콜렉션과 같은 부수적인 관리 작업을 유발한다.
따라서, 이러한 기술적 맥락에서, 비휘발성 저장 매체가 캐시 및 대용량 스토리지로서 사용되는 환경에서, 캐시의 성능과 수명을 연장시킬 수 있는 스토리지 관리 기법이 필요하다.
본 발명이 해결하고자 하는 과제는 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 효율적인 캐시 부하 관리 방법을 제공하는 데에 있다.
본 발명이 해결하고자 하는 과제는 변경 내용을 모두 저널에 저장하는 저널링 파일 시스템이 구동되는 경우에, 비휘발성 캐시에 저장되는 데이터의 양과 저장 횟수를 줄일 수 있는, 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 효율적인 캐시 부하 관리 방법을 제공하는 데에 있다.
본 발명이 해결하고자 하는 과제는 변경 내용을 모두 저널에 저장하는 저널링 파일 시스템이 구동되는 경우에, 기존의 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 변경하지 않고 또한 기존의 저널링 파일 시스템을 거의 변경하지 않고도 비휘발성 캐시에 저장되는 데이터의 양과 저장 횟수를 줄일 수 있는, 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 효율적인 캐시 부하 관리 방법을 제공하는 데에 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확히 이해될 수 있을 것이다.
본 발명의 일 측면에 따른 비휘발성 캐시 시스템은 호스트 시스템과 대용량 스토리지 사이에 비휘발성 캐시를 제공하는 비휘발성 캐시 시스템으로서, 상기 호스트 시스템에서 수신되는 데이터 블록이 저널 데이터인지 식별하고, 저널 데이터로 식별된 상기 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 상기 저널 데이터 식별 정보를 중복 탐지 테이블에 저장하는 저널 데이터 식별부; 저널 데이터가 아닌 상기 데이터 블록에 대해, 상기 중복 탐지 테이블을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정하는 중복 데이터 판정부; 및 저널 데이터인 데이터 블록, 또는 저널 데이터가 아니면서 중복되지 않은 데이터 블록을 상기 비휘발성 캐시에 저장하고, 저널 데이터가 아니면서 중복된 데이터 블록을 상기 비휘발성 캐시에 저장하지 않고 상기 대용량 스토리지로 전달하는 비휘발성 캐시 관리부를 포함할 수 있다.
일 실시예에 따라, 상기 저널 데이터 식별부는, 상기 수신된 데이터 블록이 상기 대용량 스토리지 내에 저장될 목적지 주소가 상기 대용량 스토리지 내의 저널 영역에 상응하면, 상기 수신된 데이터 블록을 저널 데이터로 식별하도록 동작할 수 있다.
일 실시예에 따라, 상기 저널 데이터 식별부는, 상기 수신된 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라, 상기 수신된 데이터 블록을 저널 데이터로 식별하도록 동작할 수 있다.
일 실시예에 따라, 상기 저널 데이터 식별 정보는 상기 식별된 저널 데이터이거나, 상기 식별된 저널 데이터로부터 생성된 해시값일 수 있다.
일 실시예에 따라, 비휘발성 캐시 관리부는, 상기 수신된 데이터 블록이 저널 데이터로 식별되면, 상기 수신된 데이터 블록을 상기 비휘발성 캐시에 저장하고, 상기 수신된 데이터 블록을 저널 기록 지연 테이블에 추가하며, 상기 저널 기록 지연 테이블에 추가된 데이터 블록들이 소정의 지연 쓰기(Write Back) 조건을 만족하면, 상기 저널 기록 지연 테이블에 포함된 데이터 블록들을 상기 대용량 스토리지의 저널 영역에 한꺼번에 전달하도록 동작할 수 있다.
본 발명의 다른 측면에 따라 비휘발성 캐시 시스템을 가진 대용량 스토리지를 위한 비휘발성 캐시 부하 관리 방법은 상기 비휘발성 캐시 시스템이, (i) 상기 호스트 시스템으로부터 데이터 블록을 수신하는 단계; (ii) 상기 수신된 데이터 블록이 저널 데이터인지 여부를 식별하는 단계; (iii) 단계 (ii)에서 상기 수신된 데이터 블록이 저널 데이터로 식별되면, 저널 데이터로 식별된 상기 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 상기 생성된 저널 데이터 식별 정보를 중복 탐지 테이블에 저장하는 단계; (iv) 저널 데이터로 식별되지 않은 데이터 블록에 대해, 상기 중복 탐지 테이블을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정하는 단계; (v) 저널 데이터로 식별된 데이터 블록, 또는 저널 데이터가 아니면서 중복되지 않은 데이터 블록을 상기 비휘발성 캐시에 저장하고, 상기 대용량 스토리지로 전달하는 단계; 및 (vi) 저널 데이터가 아니면서 중복된 데이터 블록을 상기 비휘발성 캐시에 저장하지 않고 상기 대용량 스토리지로 전달하는 단계를 포함할 수 있다.
일 실시예에 따라, 상기 단계 (ii)는 상기 비휘발성 캐시 시스템이, 상기 수신된 데이터 블록이 상기 대용량 스토리지 내에 저장될 목적지 주소가 상기 대용량 스토리지 내의 저널 영역에 상응하면 상기 수신된 데이터 블록을 저널 데이터로 식별하는 단계를 포함할 수 있다.
일 실시예에 따라, 상기 단계 (ii)는 상기 비휘발성 캐시 시스템이, 상기 수신된 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라 상기 수신된 데이터 블록을 저널 데이터로 식별하는 단계를 포함할 수 있다.
일 실시예에 따라, 상기 저널 데이터 식별 정보는 상기 식별된 저널 데이터이거나, 상기 식별된 저널 데이터로부터 생성된 해시값일 수 있다.
일 실시예에 따라, 상기 단계 (v)은 (v-1) 저널 데이터로 식별된 데이터 블록을 상기 비휘발성 캐시에 저장하는 단계; (v-2) 상기 저널 데이터로 식별된 데이터 블록을 저널 기록 지연 테이블에 추가하는 단계; 및 (v-3) 상기 저널 기록 지연 테이블에 추가된 데이터 블록들이 소정의 지연 쓰기 조건을 만족하면, 상기 저널 기록 지연 테이블에 포함된 데이터 블록들을 상기 대용량 스토리지의 저널 영역에 한꺼번에 전달하는 단계를 포함할 수 있다.
본 발명의 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 효율적인 캐시 부하 관리 방법에 따르면, 변경 내용을 모두 저널에 저장하는 저널링 파일 시스템이 구동되는 경우에, 비휘발성 캐시에 저장되는 데이터의 양과 저장 횟수를 줄일 수 있다.
본 발명의 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 효율적인 캐시 부하 관리 방법에 따르면, 변경 내용을 모두 저널에 저장하는 저널링 파일 시스템이 구동되는 경우에, 기존의 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 변경하지 않고 또한 기존의 저널링 파일 시스템을 거의 변경하지 않고도 비휘발성 캐시에 저장되는 데이터의 양과 저장 횟수를 줄일 수 있다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치와 이를 가지는 호스트 시스템을 예시한 블록도이다.
도 2 내지 도 4는 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치와 이를 가지는 호스트 시스템에서, 데이터 블록이 비휘발성 캐시를 거쳐 대용량 스토리지 장치에 기록되는 동작을 예시한 개념도들이다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 캐시 부하 관리 방법을 예시한 순서도이다.
도 6은 본 발명의 다른 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 캐시 부하 관리 방법을 예시한 순서도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치와 이를 가지는 호스트 시스템을 예시한 블록도이다.
도 1을 참조하면, 비휘발성 캐시 시스템(10)은 비휘발성 캐시(11), 저널 데이터 식별부(12), 중복 데이터 판정부(13), 중복 탐지 테이블(14) 및 비휘발성 캐시 관리부(15)를 포함할 수 있다.
호스트 시스템(20)은 프로세서(21)와 메인 메모리(22)를 가지며 파일 시스템(23)을 구동할 수 있다.
대용량 스토리지 장치(30)는 저널 영역(31)과 파일 시스템 영역(32)을 포함할 수 있다.
비휘발성 캐시 시스템(10)의 구성요소들의 일부는, 실시예들에 따라, 전적으로 하드웨어로 구현될 수도 있고, 메모리 컨트롤러 장치와 같은 하드웨어와 운영체제나 드라이버와 같은 소프트웨어의 조합으로 구현될 수도 있다.
예를 들어, 저널 데이터 식별부(12), 중복 데이터 판정부(13) 또는 중복 탐지 테이블(14)은 메인 메모리(22)에 탑재된 일련의 명령어들 또는 데이터 구조로서 구현될 수도 있고, 비휘발성 캐시(11)를 제어하는 하드웨어에 통합적으로 구현될 수도 있다.
비휘발성 캐시 시스템(10)의 동작을 설명하기 위해 도 1을 참조하여 파일 시스템(23)이 데이터 블록을 대용량 스토리지(30)로 입출력하는 절차를 설명할 수 있다.
먼저, 파일 시스템(23)이 대용량 스토리지(30)에 대해 출력하는 데이터는 저널 영역(31)에 저장되어야 할 저널 데이터이거나, 파일 시스템 영역(32)에 곧장 저장되어야 할 일반 데이터 중 하나라고 할 수 있다.
통상적으로, 비휘발성 캐시 시스템은 파일 시스템이 대용량 스토리지에 대해 입출력하는 데이터를 비휘발성 캐시에 일시적으로 기록하여 캐싱 기능을 제공할 수 있다. 만약 파일 시스템이 출력한 데이터가 파일 시스템 영역에 저장될 일반 데이터일 경우에, 종래의 비휘발성 캐시 시스템은 일반 데이터를 비휘발성 캐시에 기록하고 대용량 스토리지에 일반 데이터를 전달한다. 대용량 스토리지는 전달된 일반 데이터의 주소에 따라 파일 시스템 영역에 일반 데이터를 저장한다.
마찬가지로, 통상적으로 파일 시스템이 일반 데이터를 파일 시스템 영역에 저장하고자 출력한 이후에 커밋을 수행하여 저널 데이터를 생성하고 출력한 경우에, 종래의 비휘발성 캐시 시스템은 저널 데이터를 비휘발성 캐시에 기록하고 대용량 스토리지에 저널 데이터를 전달한다. 대용량 스토리지는 전달된 저널 데이터의 주소에 따라 저널 영역에 저널 데이터를 저장한다.
만약, 파일 시스템이 일반 데이터를 대용량 스토리지로 출력한 이후에 내용의 추가적인 변경없이 커밋이 수행되었다면, 커밋으로 생성된 저널 데이터와 일반 데이터는 실제로는 똑같은 내용일테지만 대용량 스토리지 내에 기록되는 영역들이 서로 다를 뿐 아니라 종래의 비휘발성 캐시 시스템은 캐싱되는 데이터들의 내용을 서로 비교하지 않으므로 종래의 비휘발성 캐시 시스템은 이 두 데이터들이 서로 동일하다는 점을 알 수 없다. 따라서 동일한 두 데이터들이 비휘발성 캐시에 저장된다. 대략적으로, 종래의 비휘발성 캐시 시스템에서는 저널 영역의 크기만큼의 동일한 데이터들이 비휘발성 캐시에 중복적으로 저장될 것으로 예측된다.
이를 해결하기 위해 본 발명의 비휘발성 캐시 시스템(10)은 비휘발성 캐시(11)를 경유하는 데이터가 이미 비휘발성 캐시(11)의 다른 위치에 저장되어 있는 데이터인지 판정하고, 만약 그러하다면 그러한 데이터를 비휘발성 캐시(11)에 추가로 캐싱하지 않고 곧바로 대용량 스토리지(30)에 전달한다. 본 발명의 비휘발성 캐시 시스템(10)은 비휘발성 캐시(11)를 경유하는 데이터가 비휘발성 캐시(11)의 다른 위치에 저장되지 않은 데이터라면 그러한 데이터를 비휘발성 캐시(11)에 캐싱한다. 이러한 방식을 통해, 본 발명의 실시예들에 따른 비휘발성 캐시 시스템(10)은 동일한 내용의 데이터들이 비휘발성 캐시(11)에 중복적으로 저장되는 경우를 줄일 수 있다.
다만, 본 발명의 비휘발성 캐시 시스템(10)은, 새로 쓰기 요청된 데이터를 비휘발성 캐시(11)에 현재 저장된 모든 데이터들의 중복 여부를 조사하기보다는 저널 기능으로 인해 비휘발성 캐시 내에 중복적으로 저장된 데이터가 있는지 탐색하는 식이다.
이를 위해, 비휘발성 캐시 시스템(10)은 비휘발성 캐시(11), 저널 데이터 식별부(12), 중복 데이터 판정부(13), 중복 탐지 테이블(14) 및 비휘발성 캐시 관리부(15)를 포함할 수 있다.
저널 데이터 식별부(12)는 파일 시스템(23)에서 비휘발성 캐시 시스템(10)으로 출력되는 데이터 블록이 저널 데이터 블록인지 식별한다.
실시예에 따라, 저널 데이터의 출력 시에, 파일 시스템(23)은 메인 메모리(22) 내의 특정 주소의 데이터 블록을 대용량 스토리지(30) 내의 저널 영역(31)을 목적지로 하여 비휘발성 캐시 시스템(10)을 통해 대용량 스토리지(30)로 출력할 수 있다. 이 경우에, 저널 데이터 식별부(12)는 데이터 블록이 대용량 스토리지(30) 내에 저장될 목적지 주소가 대용량 스토리지(30) 내의 저널 영역(31)에 상응하면 데이터 블록을 저널 데이터로 식별할 수 있다.
실시예에 따라, 저널 데이터의 출력 시에, 파일 시스템(23)은 메인 메모리(22) 내의 특정 주소의 데이터 블록에 저널 데이터 식별 플래그를 부착하여 비휘발성 캐시 시스템(10)을 통해 대용량 스토리지(30)로 출력할 수 있다. 이 경우에, 저널 데이터 식별부(12)는 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라 데이터 블록을 저널 데이터로 식별할 수 있다.
이러한 실시예들에 따라, 비휘발성 캐시 시스템(10)의 저널 데이터 식별부(12)는 데이터 블록이 저널 데이터 블록인지 여부를, 데이터 블록의 목적지 주소를 통해, 또는 데이터 블록에 부착된 저널 데이터 식별 플래그를 통해, 식별할 수 있다.
만약 저널 데이터 블록이면, 저널 데이터 식별부(12)는 저널 데이터인 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 생성된 저널 데이터 식별 정보를 중복 탐지 테이블(14)에 저장한다.
실시예에 따라, 저널 데이터 식별 정보는 저널 데이터 그 자체이거나, 저널 데이터로부터 생성된 해시값일 수 있다.
실시예에 따라, 중복 탐지 테이블(14)은, 비휘발성 캐시 시스템(10) 내에 구현되는 대신에, 메인 메모리(22) 내에 구현될 수 있다.
저널 데이터 식별부(12)가 저널 데이터의 식별에 따라 생성된 저널 데이터 식별 정보를 중복 탐지 테이블(14)에 저장하고 비휘발성 캐시 관리부(15)에 데이터 블록이 저널 데이터임을 통지하면, 비휘발성 캐시 관리부(15)는 데이터 블록을 비휘발성 캐시(11)에 저장하고, 또한 저널 영역(31)에 저장될 수 있도록 데이터 블록을 대용량 스토리지(30)에 전달한다.
저널 데이터인 데이터 블록은 어떤 데이터에 관하여 이전의 커밋 연산 이후에 변경된 부분이 있고 그로 인해 새로운 저널 데이터가 생성되었음을 의미하므로, 저널 데이터인 데이터 블록과 동일한 데이터 블록이 이미 비휘발성 캐시(11)에 저장되어 있을 수는 없다. 따라서, 저널 데이터인 데이터 블록에 대해서는 아래의 중복 데이터 판정을 할 필요가 없기 때문에, 중복 데이터 판정을 하기 전에 저널 데이터 여부를 식별할 필요가 있다.
이러한 맥락에 따라, 저널 데이터 식별부(12)에서 데이터 블록이 저널 데이터가 아니라고 식별된 경우에, 저널 데이터 식별부(12)는 데이터 블록이 저널 데이터가 아님을 중복 데이터 판정부(13)에 통지한다.
중복 데이터 판정부(13)는 저널 데이터가 아닌 데이터 블록에 대해, 중복 탐지 테이블(14)을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정한다.
실시예에 따라, 중복 데이터 판정부(13)는 데이터 블록을 중복 탐지 테이블(14)에 저장된 저널 데이터들에 각각 비교하여 데이터 블록의 중복 여부를 판정할 수 있다.
실시예에 따라, 중복 데이터 판정부(13)는 데이터 블록으로부터 생성된 해시값을 중복 탐지 테이블(14)에 저장된 저널 데이터 해시값들에 각각 비교하여 데이터 블록의 중복 여부를 판정할 수 있다.
만약 지금 비휘발성 캐시(11)에 저장되려는 데이터 블록이 비휘발성 캐시(11)에 이미 저장되어 있는 저널 데이터와 중복된다면, 그러한 데이터 블록은 비휘발성 캐시(11)에 또 저장될 필요가 없을 것이다.
따라서, 중복 데이터 판정부(13)는, 중복 탐지 테이블(14)을 참조하여, 만약 저널 데이터가 아닌 데이터 블록이 기존에 비휘발성 캐시(11)에 저장 중인 저널 데이터들 중 하나와 중복된다고 판정되면, 데이터 블록이 중복됨을 비휘발성 캐시 관리부(15)에 통지한다.
이 경우에, 비휘발성 캐시 관리부(15)는 데이터 블록을 비휘발성 캐시(11)에 저장하지 않고, 파일 시스템(22)이 지정한 목적지 위치에 따라 파일 시스템 영역(32)에 저장될 수 있도록 데이터 블록을 대용량 스토리지(30)에 전달한다.
반면에, 만약 지금 비휘발성 캐시(11)에 저장되려는 데이터 블록이 비휘발성 캐시(11)에 저장되어 있는 저널 데이터들과 중복되지 않는다면, 그러한 데이터 블록은 비휘발성 캐시(11)에 캐싱을 위해 저장될 필요가 있을 것이다.
따라서, 중복 데이터 판정부(13)는, 중복 탐지 테이블(14)을 참조하여, 만약 저널 데이터가 아닌 데이터 블록이 기존에 비휘발성 캐시(11)에 저장 중인 저널 데이터들에 중복되지 않는다고 판정되면, 데이터 블록이 중복되지 않음을 비휘발성 캐시 관리부(15)에 통지한다.
중복 탐지 테이블(14)은 실시예에 따라 저널 데이터들 그 자체이거나 또는 저널 데이터들로부터 각각 생성된 해시값들을 저장할 수 있다.
비휘발성 캐시 관리부(15)는, 상황에 따라, 데이터 블록을 비휘발성 캐시(11)에 저장하거나 또는 대용량 스토리지(30)에 전달할 수 있다.
예를 들어, 비휘발성 캐시 관리부(15)는 데이터 블록이 저널 데이터이면 데이터 블록을 비휘발성 캐시(11)에 저장하고 대용량 스토리지(30)의 저널 영역(31)에 전달하며, 데이터 블록이 저널 데이터가 아니면서 중복 데이터가 비휘발성 캐시(11)에 이미 존재하면 비휘발성 캐시(11)에 저장하지 않고 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달하며, 데이터 블록이 저널 데이터가 아니고 중복 데이터가 비휘발성 캐시(11)에 부존재하면 데이터 블록을 비휘발성 캐시(11)에 저장하고 캐시 관리 정책에 따라 데이터 블록을 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달한다. 실시예에 따라, 비휘발성 캐시 관리부(15)는 통상적인 캐시 관리 정책에 따라, 예를 들어 이러한 데이터 블록을 비휘발성 캐시(11)에서 퇴출시킬 때에, 이러한 데이터 블록이 파일 시스템 영역(32)에 저장될 수 있도록, 데이터 블록을 대용량 스토리지(30)에 전달할 수 있다.
실시예에 따라, 비휘발성 캐시 관리부(15)는 데이터 블록이 저널 데이터이면 데이터 블록을 비휘발성 캐시(11)에 저장하지만, 곧바로 데이터 블록을 대용량 스토리지(30)의 저널 영역(31)에 전달하는 대신에, 데이터 블록을 저널 기록 지연 테이블(16)에 추가할 수 있다.
이 경우에, 비휘발성 캐시 관리부(15)는 저널 기록 지연 테이블(16)을 관리하다가, 저널 기록 지연 테이블(16)에 추가된 데이터 블록들이 소정의 지연 쓰기(Write Back) 조건을 만족하면, 저널 기록 지연 테이블(16)에 포함된 데이터 블록들을 대용량 스토리지(30)의 저널 영역(31)에 한꺼번에 전달할 수 있다.
도 2 내지 도 4는 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치와 이를 가지는 호스트 시스템에서, 데이터 블록이 비휘발성 캐시를 거쳐 대용량 스토리지 장치에 기록되는 동작을 예시한 개념도들이다.
도 2는 데이터 블록이 저널 데이터인 경우, 도 3은 데이터 블록이 저널 데이터가 아니지만 중복 데이터가 이미 있는 경우, 도 4는 데이터 블록이 저널 데이터도 아니고 중복 데이터도 없는 경우의 동작을 각각 예시한다.
도 2를 참조하면, 파일 시스템(23)이 메인 메모리(22) 내의 특정 데이터 블록(D1)을 저널 데이터로서 대용량 스토리지(30)의 저널 영역(31)에 저장하고자 비휘발성 캐시 시스템(10)에 전달한다.
데이터 블록(D1)은 이전의 커밋 연산 이후에 변경된 내용들을 완결한 저널 데이터이기 때문에, 비휘발성 캐시 시스템(10)은 데이터 블록(D1)과 내용이 동일한 다른 데이터 블록을 보유하지 않는다. 따라서, 데이터 블록(D1)은 중복 여부의 판정을 받지 않고 곧바로 비휘발성 캐시(11) 내에 저장된다.
또한 비휘발성 캐시 시스템(10)은 이후에 다른 데이터 블록이 이 데이터 블록(D1)과 중복되는지 여부를 판정할 수 있도록 데이터 블록(D1)의 식별 정보(d1)를 생성하여 중복 탐지 테이블(14)에 저장한다.
중복 탐지 테이블(14)은 저널 데이터 그 자체 또는 저널 데이터로부터 생성된 해시값을 저장할 수 있는데, 비휘발성 캐시 시스템(10) 내의 내부 메모리 공간에 구현될 수도 있고, 호스트 시스템(20)의 메인 메모리(22)에 저장될 수도 있다.
캐싱된 데이터 블록(D1)은, 즉시 또는 소정의 지연 쓰기 조건에 따라 지연된 후에, 대용량 스토리지(30)의 저널 영역(31)에 저장된다.
도 3을 참조하면, 파일 시스템(23)이 메인 메모리(22) 내의 특정 데이터 블록(D2)을 대용량 스토리지(30)의 파일 시스템 영역(32)에 저장하고자 비휘발성 캐시 시스템(10)에 전달한다.
그런데, 데이터 블록(D2)과 동일한 내용을 가진 저널 데이터인 데이터 블록이 이미 비휘발성 캐시(11)에 저장되어 있고, 그에 따른 식별 정보(d2)도 중복 탐지 테이블(14)에 저장되어 있다.
따라서 데이터 블록(D2)은 중복 판정을 받고 나서 비휘발성 캐시(11) 내에 저장되지 않고 대용량 스토리지(30)의 파일 시스템 영역(32)으로 전송된다.
구체적으로, 비휘발성 캐시 시스템(10)은 데이터 블록(D2)이 이미 저장되어 있는 다른 데이터 블록들(D1, D2) 중 어느 하나라도 중복되는지 여부를 판정할 수 있도록 중복 탐지 테이블(14)에 저장된 데이터 블록 식별 정보들(d1, d2)을 참조할 수 있다.
비휘발성 캐시 시스템(10)이 데이터 블록(D2)으로부터 생성한 데이터 블록 식별 정보(d2)가 중복 탐지 테이블(14)에 저장된 데이터 블록 식별 정보(d2)와 같다. 파일 시스템(20)에서 출력된 데이터 블록(D2)은, 이미 비활성 캐시(11)에 중복 데이터가 저장되어 있으므로, 비활성 캐시(11) 내의 다른 위치에 중복적으로 저장되는 대신에, 곧바로 또는 소정의 캐시 관리 정책에 따라, 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달될 수 있다.
도 4를 참조하면, 파일 시스템(23)이 메인 메모리(22) 내의 특정 데이터 블록(D3)을 대용량 스토리지(30)의 파일 시스템 영역(32)에 저장하고자 비휘발성 캐시 시스템(10)에 전달한다.
데이터 블록(D3)은 저널 데이터가 아니기 때문에, 비휘발성 캐시 시스템(10)이 데이터 블록(D3)과 내용이 동일한 다른 데이터 블록을 보유하는지 탐색해보아야 한다. 따라서 데이터 블록(D3)은 중복 여부의 판정을 받고 나서 비휘발성 캐시(11) 내에 저장되거나 또는 대용량 스토리지(30)로 전송된다.
구체적으로, 비휘발성 캐시 시스템(10)은 데이터 블록(D3)이 이미 저장되어 있는 다른 데이터 블록들(D1, D2) 중 어느 하나라도 중복되는지 여부를 판정할 수 있도록 중복 탐지 테이블(14)에 저장된 데이터 블록 식별 정보들(d1, d2)을 참조할 수 있다.
비휘발성 캐시 시스템(10)이 데이터 블록(D3)으로부터 생성한 데이터 블록 식별 정보(d3)는 중복 탐지 테이블(14)에 저장된 데이터 블록 식별 정보(d1, d2)와 같지 않다. 이에 따라 파일 시스템(20)에서 출력된 데이터 블록(D3)은, 중복 데이터가 없으므로, 비휘발성 캐시(11)에 캐싱될 필요가 있고, 따라서 비휘발성 캐시(11)에 캐싱된다.
데이터 블록(D3)은 저널 데이터가 아니어서 시스템의 원자성을 보장하지 않으므로 반드시 곧바로 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달될 필요는 없다. 따라서, 데이터 블록(D3)은, 소정의 캐시 관리 정책에 따라, 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달될 수 있다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 캐시 부하 관리 방법을 예시한 순서도이다.
도 5를 참조하면, 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 캐시 부하 관리 방법은 비휘발성 캐시 시스템(10)이 호스트 시스템(20)으로부터 데이터 블록을 수신하는 단계(S51)로부터 시작할 수 있다.
단계(S52)에서, 비휘발성 캐시 시스템(10)은 수신된 데이터 블록이 저널 데이터인지 여부를 식별할 수 있다.
실시예에 따라, 비휘발성 캐시 시스템(10)은 데이터 블록이 대용량 스토리지(30) 내에 저장될 목적지 주소가 대용량 스토리지(30) 내의 저널 영역(31)에 상응하면 데이터 블록을 저널 데이터로 식별할 수 있다.
실시예에 따라, 비휘발성 캐시 시스템(10)은 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라 데이터 블록을 저널 데이터로 식별할 수 있다.
만약 단계(S52)에서 데이터 블록이 저널 데이터로 식별되면, 절차는 단계(S53)로 진행하고, 그렇지 않으면 단계(S54)로 진행할 수 있다.
이어서, 단계(S53)에서, 데이터 블록이 저널 데이터로 식별되었으므로, 비휘발성 캐시 시스템(10)은 저널 데이터로부터 저널 데이터 식별 정보를 생성하고, 생성된 저널 데이터 식별 정보를 중복 탐지 테이블(14)에 저장한다.
실시예에 따라, 저널 데이터 식별 정보는 저널 데이터 그 자체이거나, 저널 데이터로부터 생성된 해시값일 수 있다.
실시예에 따라, 중복 탐지 테이블(14)은, 비휘발성 캐시 시스템(10) 내에 구현되는 대신에, 호스트 시스템(20)의 메인 메모리(22) 내에 구현될 수 있다.
단계(S53)가 완료되면, 비휘발성 캐시 시스템(10)은 단계(S56)로 진행할 수 있다.
단계(S54)에서, 비휘발성 캐시 시스템(10)은, 저널 데이터가 아닌 데이터 블록에 대해, 중복 탐지 테이블(14)을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정한다.
실시예에 따라, 단계(S54)에서, 비휘발성 캐시 시스템(10)은 데이터 블록을 중복 탐지 테이블(14)에 저장된 저널 데이터들에 각각 비교하여 데이터 블록의 중복 여부를 판정할 수 있다.
실시예에 따라, 단계(S54)에서, 비휘발성 캐시 시스템(10)은 데이터 블록으로부터 생성된 해시값을 중복 탐지 테이블(14)에 저장된 저널 데이터 해시값들에 각각 비교하여 데이터 블록의 중복 여부를 판정할 수 있다.
만약 단계(S54)에서 데이터 블록이 중복 데이터로 식별되면, 절차는 단계(S55)로 진행하고, 그렇지 않으면 단계(S56)로 진행할 수 있다.
단계(S55)에서 비휘발성 캐시 시스템(10)은, 데이터 블록을 비휘발성 캐시(11)에 저장하지 않고, 파일 시스템(22)이 지정한 목적지 위치에 따라 파일 시스템 영역(32)에 저장될 수 있도록 데이터 블록을 대용량 스토리지(30)에 전달한다.
단계(S56)에서, 비휘발성 캐시 시스템(10)은, 저널 데이터인 데이터 블록, 또는 저널 데이터도 아니고 중복되지도 않는 데이터 블록을 비휘발성 캐시(11)에 저장하며, 곧바로 또는 소정의 캐시 관리 정책에 따라, 데이터 블록을 대용량 스토리지(30)의 파일 시스템 영역(32)에 전달할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 비휘발성 캐시 시스템을 가진 대용량 스토리지 장치를 위한 캐시 부하 관리 방법을 예시한 순서도이다.
도 6을 참조하면, 대부분의 단계들(S61, S62, S64 내지 S66)은 도 5의 각 단계들(S51, S52, S54 내지 S56)과 실질적으로 동일하므로 설명을 생략할 수 있다.
단계(S63)는, 단계(S62)에서 비휘발성 캐시 시스템(10)이 수신된 데이터 블록이 저널 데이터로 식별한 경우에, 비휘발성 캐시 시스템(10)이 저널 데이터로부터 저널 데이터 식별 정보를 생성하고, 생성된 저널 데이터 식별 정보를 중복 탐지 테이블(14)에 저장하며, 데이터 블록을 저널 기록 지연 테이블(16)에 추가하고, 데이터 블록을 비휘발성 캐시(11)에 저장할 수 있다.
단계(S63)가 완료되면 절차는 단계(S631)로 진행할 수 있다.
단계(S631)에서, 비휘발성 캐시 시스템(10)은, 저널 기록 지연 테이블(16)을 관리하다가, 저널 기록 지연 테이블(16)에 추가된 데이터 블록들이 소정의 지연 쓰기 조건을 만족하면 저널 기록 지연 테이블(16)에 포함된 데이터 블록들을 대용량 스토리지(30)의 저널 영역(31)에 한꺼번에 전달할 수 있다.
본 실시예 및 본 명세서에 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형예와 구체적인 실시예는 모두 본 발명의 권리범위에 포함되는 것이 자명하다고 할 것이다.
또한, 본 발명에 따른 장치는 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽힐 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, 광학 디스크, 자기 테이프, 플로피 디스크, 하드 디스크, 비휘발성 메모리 등을 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
10 비휘발성 캐시 시스템
11 비휘발성 캐시
12 저널 데이터 식별부
13 중복 데이터 판정부
14 중복 탐지 테이블
15 비휘발성 캐시 관리부
16 저널 기록 지연 테이블
20 호스트 시스템
21 프로세서
22, 62 메인 메모리
23, 63 파일 시스템
30, 70 대용량 스토리지 장치
31, 71 저널 영역
32, 72 파일 시스템 영역

Claims (10)

  1. 호스트 시스템과 대용량 스토리지 사이에 비휘발성 캐시를 제공하는 비휘발성 캐시 시스템으로서,
    상기 호스트 시스템에서 수신되는 데이터 블록이 저널 데이터인지 식별하고, 저널 데이터로 식별된 상기 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 상기 저널 데이터 식별 정보를 중복 탐지 테이블에 저장하는 저널 데이터 식별부;
    저널 데이터가 아닌 상기 데이터 블록에 대해, 상기 중복 탐지 테이블을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정하는 중복 데이터 판정부; 및
    저널 데이터인 데이터 블록, 또는 저널 데이터가 아니면서 중복되지 않은 데이터 블록을 상기 비휘발성 캐시에 저장하고, 저널 데이터가 아니면서 중복된 데이터 블록을 상기 비휘발성 캐시에 저장하지 않고 상기 대용량 스토리지로 전달하는 비휘발성 캐시 관리부를 포함하되,
    상기 저널 데이터 식별부는 데이터 블록이 저널 데이터가 아니라고 식별된 경우, 저널 데이터가 아님을 상기 중복 데이터 판정부에 통지하고,
    상기 중복 데이터 판정부는 데이터 블록으로부터 생성된 해시값을 중복 탐지 테이블에 저장된 저널 데이터 해시값들에 각각 비교하여 데이터 블록의 중복여부를 판정하며,
    비휘발성 캐시 관리부는, 상기 수신된 데이터 블록이 저널 데이터로 식별되면, 상기 수신된 데이터 블록을 상기 비휘발성 캐시에 저장하고, 상기 수신된 데이터 블록을 저널 기록 지연 테이블에 추가하며, 상기 저널 기록 지연 테이블에 추가된 데이터 블록들이 소정의 지연 쓰기(Write Back) 조건을 만족하면, 상기 저널 기록 지연 테이블에 포함된 데이터 블록들을 상기 대용량 스토리지의 저널 영역에 한꺼번에 전달하도록 동작하는 것을 특징으로 하는 비휘발성 캐시 시스템.
  2. 청구항 1에 있어서, 상기 저널 데이터 식별부는, 상기 수신된 데이터 블록이 상기 대용량 스토리지 내에 저장될 목적지 주소가 상기 대용량 스토리지 내의 저널 영역에 상응하면, 상기 수신된 데이터 블록을 저널 데이터로 식별하도록 동작하는 것을 특징으로 하는 비휘발성 캐시 시스템.
  3. 청구항 1에 있어서, 상기 저널 데이터 식별부는, 상기 수신된 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라, 상기 수신된 데이터 블록을 저널 데이터로 식별하도록 동작하는 것을 특징으로 하는 비휘발성 캐시 시스템.
  4. 청구항 1에 있어서, 상기 저널 데이터 식별 정보는 상기 식별된 저널 데이터이거나, 상기 식별된 저널 데이터로부터 생성된 해시값인 것을 특징으로 하는 비휘발성 캐시 시스템.
  5. 삭제
  6. 비휘발성 캐시 시스템을 가진 대용량 스토리지를 위한 비휘발성 캐시 부하 관리 방법으로서,
    상기 비휘발성 캐시 시스템이,
    (i) 호스트 시스템으로부터 데이터 블록을 수신하는 단계;
    (ii) 상기 수신된 데이터 블록이 저널 데이터인지 여부를 식별하는 단계;
    (iii) 단계 (ii)에서 상기 수신된 데이터 블록이 저널 데이터로 식별되면, 저널 데이터로 식별된 상기 데이터 블록으로부터 저널 데이터 식별 정보를 생성하고, 상기 생성된 저널 데이터 식별 정보를 중복 탐지 테이블에 저장하는 단계;
    (iv) 저널 데이터로 식별되지 않은 데이터 블록에 대해, 상기 중복 탐지 테이블을 참조하여, 기존에 저장 중인 저널 데이터들과 중복되는지 여부를 판정하는 단계;
    (v) 저널 데이터로 식별된 데이터 블록, 또는 저널 데이터가 아니면서 중복되지 않은 데이터 블록을 상기 비휘발성 캐시에 저장하고, 상기 대용량 스토리지로 전달하는 단계; 및
    (vi) 저널 데이터가 아니면서 중복된 데이터 블록을 상기 비휘발성 캐시에 저장하지 않고 상기 대용량 스토리지로 전달하는 단계를 포함하되,
    상기 (ii) 단계는, 데이터 블록이 저널 데이터가 아니라고 식별된 경우, 저널 데이터가 아님을 중복 데이터 판정부에 통지하고,
    상기 (iv) 단계는, 데이터 블록으로부터 생성된 해시값을 중복 탐지 테이블에 저장된 저널 데이터 해시값들에 각각 비교하여 데이터 블록의 중복여부를 판정하며,
    상기 단계 (v)은 (v-1) 저널 데이터로 식별된 데이터 블록을 상기 비휘발성 캐시에 저장하는 단계;
    (v-2) 상기 저널 데이터로 식별된 데이터 블록을 저널 기록 지연 테이블에 추가하는 단계; 및
    (v-3) 상기 저널 기록 지연 테이블에 추가된 데이터 블록들이 소정의 지연 쓰기 조건을 만족하면, 상기 저널 기록 지연 테이블에 포함된 데이터 블록들을 상기 대용량 스토리지의 저널 영역에 한꺼번에 전달하는 단계를 포함하는 것을 특징으로 하는 비휘발성 캐시 부하 관리 방법.
  7. 청구항 6에 있어서, 상기 단계 (ii)는
    상기 비휘발성 캐시 시스템이, 상기 수신된 데이터 블록이 상기 대용량 스토리지 내에 저장될 목적지 주소가 상기 대용량 스토리지 내의 저널 영역에 상응하면 상기 수신된 데이터 블록을 저널 데이터로 식별하는 단계를 포함하는 것을 특징으로 하는 비휘발성 캐시 부하 관리 방법.
  8. 청구항 6에 있어서, 상기 단계 (ii)는
    상기 비휘발성 캐시 시스템이, 상기 수신된 데이터 블록에 부착된 저널 데이터 식별 플래그에 따라 상기 수신된 데이터 블록을 저널 데이터로 식별하는 단계를 포함하는 것을 특징으로 하는 비휘발성 캐시 부하 관리 방법.
  9. 청구항 6에 있어서, 상기 저널 데이터 식별 정보는 상기 식별된 저널 데이터이거나, 상기 식별된 저널 데이터로부터 생성된 해시값인 것을 특징으로 하는 비휘발성 캐시 부하 관리 방법.
  10. 삭제
KR1020150110874A 2015-08-06 2015-08-06 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법 KR101686340B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150110874A KR101686340B1 (ko) 2015-08-06 2015-08-06 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150110874A KR101686340B1 (ko) 2015-08-06 2015-08-06 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법

Publications (1)

Publication Number Publication Date
KR101686340B1 true KR101686340B1 (ko) 2016-12-29

Family

ID=57736387

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150110874A KR101686340B1 (ko) 2015-08-06 2015-08-06 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법

Country Status (1)

Country Link
KR (1) KR101686340B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102497130B1 (ko) * 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11626159B2 (en) 2020-06-12 2023-04-11 Korea University Research And Business Foundation Computing in-memory device supporting arithmetic operations and method of controlling the same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062869A (ja) * 2002-06-06 2004-02-26 Internatl Business Mach Corp <Ibm> コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置
JP2009146381A (ja) * 2007-10-24 2009-07-02 Hitachi Ltd ストレージシステム群

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062869A (ja) * 2002-06-06 2004-02-26 Internatl Business Mach Corp <Ibm> コンピュータ・システムでのトランザクションの選択的キャッシングの方法および装置
JP2009146381A (ja) * 2007-10-24 2009-07-02 Hitachi Ltd ストレージシステム群

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11626159B2 (en) 2020-06-12 2023-04-11 Korea University Research And Business Foundation Computing in-memory device supporting arithmetic operations and method of controlling the same
KR102497130B1 (ko) * 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Similar Documents

Publication Publication Date Title
US11550675B2 (en) Remote data replication method and system
US7076622B2 (en) System and method for detecting and sharing common blocks in an object storage system
US8074035B1 (en) System and method for using multivolume snapshots for online data backup
US7412578B2 (en) Snapshot creating method and apparatus
US9344498B2 (en) Policy-based management of storage functions in data replication environments
US7694087B2 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
US8706984B2 (en) Delete notifications for an entire storage device
EP3206128B1 (en) Data storage method, data storage apparatus, and storage device
US20110022811A1 (en) Information backup/restoration processing apparatus and information backup/restoration processing system
US20060224639A1 (en) Backup system, program and backup method
WO2019061352A1 (zh) 数据加载方法及装置
US8935304B2 (en) Efficient garbage collection in a compressed journal file
US20160036912A1 (en) File server, file server control method, and storage system
KR101686340B1 (ko) 대용량 스토리지 장치를 위한 효율적인 비휘발성 캐시 부하 관리 방법
US10025521B2 (en) Obtaining additional data storage from another data storage system
KR102277731B1 (ko) 스토리지 시스템의 구동 방법 및 스토리지 컨트롤러
US8676748B2 (en) Clearing metadata tracks in a storage system
CN112748865A (zh) 用于存储管理的方法、电子设备和计算机程序产品
US10712941B2 (en) Leveraging temporal locality to link files together and bypass accessing a central inode list
KR101966399B1 (ko) 원자적 연산을 이용한 파일 시스템 저널링 장치 및 방법
KR101975058B1 (ko) 데이터 가용성 지원 시스템 및 방법
US9256598B1 (en) Systems, methods, and computer readable media for copy-on-demand optimization for large writes
JP6343952B2 (ja) ストレージシステム

Legal Events

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

Payment date: 20190905

Year of fee payment: 4