KR20160033519A - 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법 - Google Patents

라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법 Download PDF

Info

Publication number
KR20160033519A
KR20160033519A KR1020140124532A KR20140124532A KR20160033519A KR 20160033519 A KR20160033519 A KR 20160033519A KR 1020140124532 A KR1020140124532 A KR 1020140124532A KR 20140124532 A KR20140124532 A KR 20140124532A KR 20160033519 A KR20160033519 A KR 20160033519A
Authority
KR
South Korea
Prior art keywords
data storage
log
storage device
controller
data
Prior art date
Application number
KR1020140124532A
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 KR1020140124532A priority Critical patent/KR20160033519A/ko
Priority to US14/800,728 priority patent/US20160085445A1/en
Publication of KR20160033519A publication Critical patent/KR20160033519A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

데이터 저장 장치의 작동 방법은 컨트롤러로부터 전송된 로그 시작 명령을 수신하는 단계와, 상기 로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 라이트 명령들에 대한 로그를 생성하는 단계와, 생성된 로그를 메모리에 저장하는 단계와, 상기 컨트롤러로부터 전송된 로그 리드 명령을 수신하는 단계와, 상기 로그 리드 명령에 응답하여, 상기 메모리에 저장된 상기 로그를 상기 컨트롤러로 전송하는 단계를 포함한다.

Description

라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 RAID 시스템의 작동 방법{METHOD OF DATA STORAGE DEVICE FOR GENERATING LOG FOR WRITE COMMANDS AND METHOD OF RAID SYSTEM INCLUDING SAME}
본 발명의 개념에 따른 실시 예는 데이터 복구(data recovery) 기술에 관한 것으로, 특히 로그 시작 명령에 기초하여 라이트 명령들에 대한 로그(log)를 생성하고, 생성된 로그를 컨트롤러로 전송할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 RAID 시스템의 작동 방법에 관한 것이다.
RAID(redundant array of independent disks)는, 복수의 데이터 저장 장치들 중에서 일부 데이터 저장 장치가 고장일 때, 데이터 손실을 방지하기 위해 사용된다. 상기 RAID는 미러링(mirror) RAID와 패리티(parity) RAID로 분류된다.
예컨대, 동일한 데이터는 제1데이터 저장 장치의 제1논리 블록 어드레스 (logical block address(LBA))에 해당하는 메모리 영역과 제2저장 장치의 제1LBA에 해당하는 메모리 영역에 저장된다.
제2데이터가 상기 제1데이터 저장 장치의 상기 제1LBA에 해당하는 상기 메모리 영역에 성공적으로 저장된 후, 갑작스런 파워 오프(sudden power off(SPO)) 때문에, 상기 제2데이터가 상기 제2저장 장치의 상기 제1LBA에 해당하는 상기 메모리 영역에 성공적으로 저장되지 못한다고 가정한다. 상기 제1데이터 저장 장치와 상기 제2데이터 저장 장치를 포함하는 시스템이 재부팅되면, 상기 제1데이터 저장 장치에 저장된 데이터와 상기 제2데이터 저장 장치에 저장된 데이터는 일관성이 없다 (inconsistent).
따라서, RAID 컨트롤러는 상기 제1데이터 저장 장치에 저장된 데이터와 상기 제2데이터 저장 장치에 저장된 데이터의 일관성을 유지하기 위한 작업을 해야 한다. 그러나, 상기 RAID 컨트롤러는 어떤 LBA에 저장된 데이터가 서로 일관성이 없는지를 판단할 수 없으므로, 상기 RAID 컨트롤러는 2개의 데이터 저장 장치들에 저장된 모든 데이터에 대해 비교 작동을 수행해야 한다.
비교 작동의 결과, 비교 대상이 되는 2개의 데이터가 서로 같지 않으면, 데이터 일관성을 유지하기 위해, 상기 RAID 컨트롤러는 상기 2개의 데이터 저장 장치들 중에서 어느 하나에 저장된 데이터를 다른 데이터 저장 장치로 카피(copy)하는 작동을 수행해야 한다.
2개의 데이터 저장 장치들에 저장된 모든 데이터를 서로 비교하기 위한 시간이 상당히 오래 걸리고, 데이터 일관성을 유지하기 위해 데이터를 카피하는 시간도 오래 걸린다. 또한, 2개의 데이터 저장 장치들 중에서 어느 데이터 저장 장치에 저장된 데이터가 최신 데이터인지를 판단하는 것도 어렵다.
예컨대, RAID 컨트롤러는 2개의 데이터 저장 장치들 중에서 제1데이터 저장 장치에 저장된 데이터를 제2데이터 저장 장치로 카피해야 할지 또는 상기 제2데이터 저장 장치에 저장된 데이터를 상기 제1데이터 자장 장치로 카피해야 할지를 결정하기 어렵다.
본 발명이 이루고자 하는 기술적인 과제는, 상술한 문제점들을 해결하기 발명된 것으로서, SPO에 의한 재부팅 후에 데이터를 빠르게 복구하기 위해, 컨트롤러로부터 출력된 로그 시작 명령에 응답하여, 상기 컨트롤러로부터 출력된 라이트 명령들에 대한 로그를 생성하고, 생성된 로그를 상기 컨트롤러로 전송할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 RAID 시스템의 작동 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은 컨트롤러로부터 전송된 로그 시작 명령을 수신하는 단계와, 상기 로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 라이트 명령들에 대한 로그를 생성하는 단계와, 생성된 로그를 메모리에 저장하는 단계와, 상기 컨트롤러로부터 전송된 로그 리드 명령을 수신하는 단계와, 상기 로그 리드 명령에 응답하여, 상기 메모리에 저장된 상기 로그를 상기 컨트롤러로 전송하는 단계를 포함한다.
상기 데이터 저장 장치는 하드디스크 드라이브(hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나일 수 있다.
상기 로그를 생성하는 단계는 상기 라이트 명령들 각각을 파싱(parsing)하는 단계와, 파싱된 라이트 명령들 각각에 포함된 논리 블록 어드레스(logical block address(LBA))와 섹터 카운트를 포함하는 상기 로그를 생성하는 단계를 포함한다.
상기 메모리는 휘발성 메모리와 불휘발성 메모리 중에서 어느 하나일 수 있다.
상기 저장하는 단계는, 상기 데이터 저장 장치에 SPO(sudden power off)가 발생할 때, 상기 데이터 저장 장치에 포함된 커패시터를 이용하여, 휘발성 메모리에 저장된 상기 로그를 상기 메모리에 저장하고, 상기 메모리는 불휘발성 메모리이다.
상기 로그 리드 명령은 상기 데이터 저장 장치가 SPO에 따라 재부팅된 후 입력된다.
본 발명의 실시 예에 따른, 컨트롤러와 제1데이터 저장 장치를 포함하는 RAID(redundant array of independent disks) 시스템의 작동 방법은 상기 제1데이터 저장 장치가 상기 컨트롤러로부터 전송된 제1로그 시작 명령을 수신하는 단계와, 상기 제1데이터 저장 장치가, 상기 제1로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 제1라이트 명령들에 대한 제1로그를 생성하는 단계와, 상기 제1데이터 저장 장치가 생성된 제1로그를 제1메모리에 저장하는 단계와, 상기 제1데이터 저장 장치가, 상기 제1데이터 저장 장치의 SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제1로그 리드 명령을 수신하는 단계와, 상기 제1데이터 저장 장치가, 상기 제1로그 리드 명령에 응답하여, 상기 제1메모리에 저장된 상기 제1로그를 상기 컨트롤러로 전송하는 단계를 포함한다.
실시 예에 따라, 상기 컨트롤러는 CPU에서 실행되는 소프트웨어 RAID 컨트롤러일 수 있다.
다른 실시 예에 따라, 상기 컨트롤러는 RAID 컨트롤러 카드에 구현된 하드웨어 RAID 컨트롤러일 수 있다.
상기 RAID 시스템은 제2데이터 저장 장치를 더 포함하고, 상기 컨트롤러는 상기 제1데이터 저장 장치로만 상기 제1로그 시작 명령을 전송한다.
상기 RAID 시스템의 작동 방법은 상기 컨트롤러가 수신된 제1로그에 기초하여 상기 제1데이터 저장 장치에 저장되고 상기 제1라이트 명령들에 관련된 데이터를 상기 제2데이터 저장 장치로 카피하는 단계를 더 포함한다.
상기 RAID 시스템은 제2데이터 저장 장치를 더 포함하고, 상기 RAID 시스템의 작동 방법은 상기 제2데이터 저장 장치가 상기 컨트롤러로부터 전송된 제2로그 시작 명령을 수신하는 단계와, 상기 제2데이터 저장 장치가, 상기 제2로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 제2라이트 명령들에 대한 제2로그를 생성하는 단계와, 상기 제2데이터 저장 장치가 생성된 제2로그를 제2메모리에 저장하는 단계와, 상기 제2데이터 저장 장치가, 상기 제2데이터 저장 장치의 SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제2로그 리드 명령을 수신하는 단계와, 상기 제2데이터 저장 장치가, 상기 제2로그 리드 명령에 응답하여, 상기 제2메모리에 저장된 상기 제2로그를 상기 컨트롤러로 전송하는 단계를 더 포함한다.
상기 RAID 시스템의 작동 방법은 상기 컨트롤러가 수신된 제1로그에 기초하여 상기 제1데이터 저장 장치에 저장되고 상기 제1라이트 명령들에 관련된 데이터를 상기 제2데이터 저장 장치로 카피하는 단계와, 상기 컨트롤러가 수신된 제2로그에 기초하여 상기 제2데이터 저장 장치에 저장되고 상기 제2라이트 명령들에 관련된 데이터를 상기 제1데이터 저장 장치로 카피하는 단계를 더 포함한다.
실시 예에 따라, 상기 제1데이터 저장 장치와 상기 제2데이터 저장 장치 각각은 하드디스크 드라이브(hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나일 수 있다.
다른 실시 예에 따라, 상기 제1데이터 저장 장치는 하드디스크 드라이브 (hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나이고, 상기 제2데이터 저장 장치는 상기 HDD와 상기 SSD 중에서 다른 하나일 수 있다.
상기 RAID 시스템의 작동 방법은 상기 컨트롤러는 상기 제1로그 시작 명령과 상기 제2로그 시작 명령을 서로 다른 시점에 생성하는 단계를 더 포함한다.
상기 RAID 시스템의 작동 방법은 상기 컨트롤러는 상기 제1라이트 명령들 각각과 상기 제2라이트 명령들 각각을 서로 다른 시점에 생성하는 단계를 더 포함한다.
상기 RAID 시스템은 미러링 RAID 시스템과 패리티 RAID 시스템 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른, 컨트롤러, 제1데이터 저장 장치, 및 제2데이터 저장 장치를 포함하는 RAID 시스템의 작동 방법은 상기 제1데이터 저장 장치가, 상기 컨트롤러로부터 전송된 제1로그 시작 명령에 기초하여, 상기 컨트롤러로부터 전송된 제1라이트 명령들에 대한 제1로그를 생성하고 생성된 제1로그를 제1메모리에 저장하는 단계와, 상기 제2데이터 저장 장치가, 상기 컨트롤러로부터 전송된 제2로그 시작 명령에 기초하여, 상기 컨트롤러로부터 전송된 제2라이트 명령들에 대한 제2로그를 생성하고 생성된 제2로그를 제2메모리에 저장하는 단계와, 상기 제1데이터 저장 장치가, 상기 제1데이터 저장 장치의 제1SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제1로그 리드 명령에 기초하여 상기 제1메모리에 저장된 상기 제1로그를 상기 컨트롤러로 전송하는 단계와, 상기 제2데이터 저장 장치가, 상기 제2데이터 저장 장치의 제2SPO에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제2로그 리드 명령에 기초하여 상기 제2메모리에 저장된 상기 제2로그를 상기 컨트롤러로 전송하는 단계를 포함한다.
상기 RAID 시스템의 작동 방법은 상기 컨트롤러가 수신된 제1로그에 기초하여 상기 제1데이터 저장 장치에 저장되고 상기 제1라이트 명령들에 관련된 데이터를 상기 제2데이터 저장 장치로 카피하는 단계와, 상기 컨트롤러가 수신된 제2로그에 기초하여 상기 제2데이터 저장 장치에 저장되고 상기 제2라이트 명령들에 관련된 데이터를 상기 제1데이터 저장 장치로 카피하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은, 상기 데이터 저장 장치에 대한 SPO(sudden power off)시에, 데이터를 빠르게 복구하기 위해, 라이트 명령들에 대한 로그를 이용하는 효과가 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은, 컨트롤러로부터 출력된 로그 시작 명령에 응답하여, 상기 컨트롤러로부터 출력된 라이트 명령들에 대한 로그를 생성하고, 상기 SPO에 따라 재부팅된 후 상기 컨트롤러로부터 출력된 로그 리드 명령에 응답하여, 생성된 로그를 상기 컨트롤러로 전송할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 RAID 시스템의 작동 방법은, 데이터 저장 장치들로부터 출력된 라이트 명령 로그들을 이용하여, 모든 데이터가 아닌 특성 데이터에 대해 재동기화 작동을 수행할 수 있다.
따라서, 상기 RAID 시스템의 작동 방법은, 어떤 데이터가 최신 데이터인지를 신속하게 판단할 수 있으므로, 데이터를 신속하게 복구할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 RAID(redundant array of independent disks) 시스템의 개략적인 블록도이다.
도 2는 도 1에 도시된 RAID 시스템의 구체적인 블록도이다.
도 3은 도 2에 도시된 RAID 시스템의 작동의 일 실시 예를 나타낸다.
도 4는 도 2에 도시된 RAID 시스템의 작동의 다른 실시 예를 나타낸다.
도 5는 본 발명의 실시 예에 따른 라이트 명령들에 대한 라이트 명령 로그를 나타낸다.
도 6은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 7은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 8은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 9는 본 발명의 다른 실시 예에 따른 RAID 시스템의 개략적인 블록도이다.
도 10은 도 9에 도시된 RAID 시스템의 작동의 일 실시 예를 나타낸다.
도 11은 도 9에 도시된 RAID 시스템의 작동의 다른 실시 예를 나타낸다.
도 12는 본 발명의 실시 예에 따른 데이터 저장 장치의 작동을 나타내는 플로우차트이다.
도 13은 로그 시작 명령과 로그 종료 명령을 생성하는 방법을 설명하는 플로우차트이다.
도 14는 도 1에 도시된 RAID 시스템의 작동의 일 실시 예를 설명하는 플로우차트이다.
도 15는 도 1에 도시된 RAID 시스템의 작동의 다른 실시 예를 설명하는 플로우차트이다.
도 16은 도 1 또는 도 9에 도시된 RAID 시스템은 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 RAID(redundant array of independent disks) 시스템의 개략적인 블록도이다. 도 1을 참조하면, RAID 시스템(100A)은 제어 장치(110)와 복수의 데이터 저장 장치들(200과 300)을 포함한다.
실시 예들에 따라, 제어 장치(110)는 RAID 컨트롤러 카드(controller card)로 구현될 수 있다. 이 경우, 제어 장치(110)에 포함된 RAID 컨트롤러(112)는 하드웨어 RAID 컨트롤러를 의미할 수 있다. 이때, 제어 장치(110)는 제어 장치(110)의 작동을 제어하는 호스트(host)와 통신할 수 있다.
다른 실시 예들에 따라, 제어 장치(110)는 CPU(central processing unit) 또는 프로세서(processor)로 구현될 수 있다. 이 경우, 제어 장치(110)에 포함된 RAID 컨트롤러(112)는 상기 CPU 또는 상기 프로세서에 의해 실행되는 소프트웨어 RAID 컨트롤러를 의미할 수 있다. 이때, 제어 장치(110)는 호스트를 의미할 수 있다.
하드웨어 RAID 컨트롤러 또는 소프트웨어 RAID 컨트롤러는 복수의 데이터 저장 장치들(200과 300)의 작동을 제어할 수 있다. RAID 컨트롤러(112)는 하드웨어 RAID 컨트롤러 또는 소프트웨어 RAID 컨트롤러를 통칭할 수 있다.
RAID 컨트롤러(112)와 복수의 데이터 저장 장치들(200과 300)은, SATA (Serial ATA(SATA)) 또는 PCIe(Peripheral Component Interconnect Express)를 통해, 명령 및/또는 데이터를 주거나 받을 수 있다.
도 1에서는 설명의 편의를 위해, 2개의 데이터 저장 장치들(200과 300)을 도시하나, 본 발명의 기술적 사상은 데이터 저장 장치들의 갯수에 한정되는 것은 아니다.
실시 예들에 따라, 데이터 저장 장치들(200과 300) 각각은 하드디스크 드라이브(hard disc drive(HDD))로 구현될 수 있다.
다른 실시 예들에 따라, 데이터 저장 장치들(200과 300) 각각은 솔리드 스테이트 드라이브(solid state drive(SSD))로 구현될 수 있다.
또 다른 실시 예들에 따라, 데이터 저장 장치들(200과 300) 중에서 어느 하나는 HDD로 구현될 수 있고, 데이터 저장 장치들(200과 300) 중에서 다른 하나는 SSD로 구현될 수 있다. 이 경우, RAID 시스템(100A)은 하이브리드 RAID 시스템일 수 있다.
도 1을 참조하면, RAID 시스템(100A)은 미러링(mirroring) RAID 시스템으로 구현될 수 있다. 예컨대, RAID 시스템(100A)은 RAID 0 또는 RAID 10으로 구현될 수 있다, 제1데이터(DATA1)는 각 데이터 저장 장치(200과 300)의 논리 블록 주소 (logical block address(LBA)) 100에 해당하는 메모리 영역에 저장되고, 제3데이터 (DATA3)는 각 데이터 저장 장치(200과 300)의 LBA210에 해당하는 메모리 영역에 저장되고, 제2데이터(DATA2)는 각 데이터 저장 장치(200과 300)의 LBA180에 해당하는 메모리 영역에 저장된다. 즉, RAID 컨트롤러(112)는 LBA100, LBA210, 및 LBA180 순서로 LBA를 출력한다고 가정한다.
도 2는 도 1에 도시된 RAID 시스템의 구체적인 블록도이다.
도 2를 참조하면, RAID 컨트롤러(112)는 데이터 복구 매니저(112-1)와 라이트 명령 로그 컨트롤러(112-2)를 포함한다. 상술한 바와 같이, 각 구성(112-1과 112-2)은 하드웨어 또는 소프트웨어로 구성될 수 있다.
데이터 복구 매니저(112-1)는 데이터 복구 컨트롤러(또는 데이터 복구 모듈)의 기능을 수행할 수 있다. 재부팅시에, 데이터 복구 매니저(112-1)는, 각 데이터 저장 장치(200과 300)로부터 제공된 라이트 명령 로그(WL1과 WL2)에 기초하여, 각 데이터 저장 장치(200과 300)에 저장된 데이터를 이용하여 데이터 복구를 수행할 수 있다.
예컨대, 데이터 복구 매니저(112-1)는 각 데이터 저장 장치(200과 300)로 각 로그 리드 명령(RWCL1과 RWCL2)을 출력하고, 각 데이터 저장 장치(200과 300)로부터 제공된 라이트 명령 로그(WL1과 WL2)를 수신하고, 수신된 라이트 명령 로그들 (WL1과 WL2)을 이용하여 제1데이터 저장 장치(200)에 저장된 데이터를 제2데이터 저장 장치(300)로 카피하거나 제2데이터 저장 장치(300)에 저장된 데이터를 제1데이터 저장 장치(200)로 카피할 수 있다.
이에 따라, 제1데이터 저장 장치(200)에 저장된 데이터와 제2데이터 저장 장치(300)에 저장된 데이터는 데이터 일관성(data consistency)을 유지한다. 도 2에 도시된 각 데이터(DATAa와 DATAb)는, 데이터 일관성을 유지하기 위해, 데이터 복구 매니저(112-1)의 제어에 따라 제1데이터 저장 장치(200)와 제2데이터 저장 장치 (300) 사이에서 전송되는 데이터를 의미한다.
실시 예에 따라, 데이터 복구 매니저(112-1)는 각 데이터 저장 장치(200과 300)로 라이트 명령들과 리드 명령들을 출력할 수 있다. 데이터 복구 매니저(112-1)는 상기 라이트 명령들 각각의 출력 타이밍과 상기 리드 명령들 각각의 출력 타이밍을 제어할 수 있다.
다른 실시 예에 따라, 라이트 명령 로그 컨트롤러(112-2)는 각 데이터 저장 장치(200과 300)로 라이트 명령들과 리드 명령들을 출력할 수 있다. 데이터 복구 매니저(112-1)는 상기 라이트 명령들 각각의 출력 타이밍과 상기 리드 명령들 각각의 출력 타이밍을 제어할 수 있다.
데이터 복구 매니저(112-1)는 각 로그 리드 명령 (RWCL1과 RWCL2)의 출력 타이밍을 제어할 수 있다.
실시 예들에 따라, 본 명세서에서 설명되는 데이터 복구 매니저(112-1)의 일부 기능들은 라이트 명령 로그 컨트롤러(112-2)에 의해 수행되도록 설계 변경될 수도 있고, 라이트 명령 로그 컨트롤러(112-2)의 일부 기능들은 데이터 복구 매니저 (112-1)에서 수행되도록 설계 변경될 수도 있다.
라이트 명령 로그 컨트롤러(112-2)는 각 데이터 저장 장치(200과 300)로 각 로그 시작 명령(SWCL1과 SWCL2)을 전송하거나, 각 로그 종료 명령(FWCL1과 FWCL2)을 전송한다. 라이트 명령 로그 컨트롤러(112-2)는 각 로그 시작 명령(SWCL1과 SWCL2)의 출력 타이밍 및/또는 각 로그 종료 명령(FWCL1과 FWCL2)의 출력 타이밍을 제어할 수 있다.
제1데이터 저장 장치(200)는 제1메모리 컨트롤러(202-1), 제1휘발성 메모리 (204-1), 제1불휘발성 메모리(206-1), 및 제1커패시터(C1)를 포함한다.
제1메모리 컨트롤러(202-1)는 RAID 컨트롤러(112)와 제1데이터 저장 장치 (200) 사이에서 주거나 받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
실시 예들에 따라, 제1메모리 컨트롤러(202-1)는, RAID 컨트롤러(112)로부터 출력된 제1로그 시작 명령(SWCL1)에 응답하여, RAID 컨트롤러(112)로부터 출력된 제1라이트 명령들에 대한 제1라이트 명령 로그(WL1)를 생성하고, 생성된 제1라이트 명령 로그(WL1)를 제1휘발성 메모리(204-1)에 저장할 수 있다. 예컨대, 제1휘발성 메모리(204-1)는 DRAM(dynamic random access memory) 또는 SRAM(static random access memory)으로 구현될 수 있다.
예컨대, 제1메모리 컨트롤러(202-1)는 제1라이트 명령들 각각을 파싱 (parsing)하고, 파싱된 제1라이트 명령들 각각에 포함된 논리 블록 어드레스와 섹터 카운트를 포함하는 제1라이트 명령 로그(WL1)를 생성할 수 있다.
제1데이터 저장 장치(200)에서 갑작스런 파워 오프(sudden power off(SPO))가 발생했을 때, 제1커패시터(C1)에 의해 파워(또는 작동 전압)가 유지되는 동안, 제1메모리 컨트롤러(202-1)는 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 제1불휘발성 메모리(206-1)에 저장할 수 있다. 예컨대, 제1불휘발성 메모리(206-1)는 플래시-기반 메모리로 구현될 수 있다. 예컨대, 제1불휘발성 메모리(206-1)는 NAND 플래시 메모리 또는 NOR 플래시 메모리로 구현될 수 있다.
제1메모리 컨트롤러(202-1)는, RAID 컨트롤러(112)로부터 출력된 제1로그 종료 명령(FWCL1)에 응답하여, 제1라이트 명령 로그(WL1)를 생성하는 작동을 중단하고, 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 삭제할 수 있다.
제1메모리 컨트롤러(202-1)는, SPO에 따라 RAID 시스템(100A) 또는 제1데이터 저장 장치(200)가 재부팅된 후, RAID 컨트롤러(112)로부터 출력된 제1로그 리드 명령(RWCL1)에 응답하여, 제1불휘발성 메모리(206-1)에 저장된 제1라이트 명령 로그(WL1)를 리드하고, 리드된 제1라이트 명령 로그(WL1)를 RAID 컨트롤러(112)로 전송할 수 있다.
제1메모리 컨트롤러(202-1)는, RAID 컨트롤러(112)로부터 출력된 제1라이트 명령들 각각에 해당하는 라이트 데이터를 제1불휘발성 메모리(206-1)에 라이트할 수 있다.
제1메모리 컨트롤러(202-1)는, RAID 컨트롤러(112)로부터 출력된 제1리드 명령들 각각에 따라 제1불휘발성 메모리(206-1)에 저장된 데이터를 리드하고, 리드된 데이터를 RAID 컨트롤러(112)로 출력할 수 있다.
제2데이터 저장 장치(300)는 제2메모리 컨트롤러(202-2), 제2휘발성 메모리 (204-2), 제2불휘발성 메모리(206-2), 및 제2커패시터(C2)를 포함한다.
제2메모리 컨트롤러(202-2)는 RAID 컨트롤러(112)와 제2데이터 저장 장치 (300) 사이에서 주거나 받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
실시 예들에 따라, 제2메모리 컨트롤러(202-2)는, RAID 컨트롤러(112)로부터 출력된 제2로그 시작 명령(SWCL2)에 응답하여, RAID 컨트롤러(112)로부터 출력된 제2라이트 명령들에 대한 제2라이트 명령 로그(WL1)를 생성하고, 생성된 제2라이트 명령 로그(WL2)를 제2휘발성 메모리(204-2)에 저장할 수 있다. 제2휘발성 메모리 (204-2)는 DRAM 또는 SRAM으로 구현될 수 있다.
여기서, 설명의 편의를 위해, 제1데이터 저장 장치(200)로 출력되는 라이트 명령(들)을 제1라이트 명령(들)이라 하고, 제2데이터 저장 장치(300)로 출력되는 라이트 명령(들)을 제2라이트 명령(들)이라 한다.
예컨대, 제2메모리 컨트롤러(202-2)는 제2라이트 명령들 각각을 파싱 (parsing)하고, 파싱된 제2라이트 명령들 각각에 포함된 논리 블록 어드레스와 섹터 카운트를 포함하는 제2라이트 명령 로그(WL2)를 생성할 수 있다.
제2데이터 저장 장치(300)에서 SPO가 발생했을 때, 제2커패시터(C2)에 의해 파워가 유지되는 동안, 제2메모리 컨트롤러(202-2)는 제2휘발성 메모리(204-2)에 저장된 제2라이트 명령 로그(WL2)를 제2불휘발성 메모리(206-2)에 저장할 수 있다. 제2불휘발성 메모리(206-2)는 플래시-기반 메모리로 구현될 수 있다. 예컨대, 제2불휘발성 메모리(206-2)는 NAND 플래시 메모리 또는 NOR 플래시 메모리로 구현될 수 있다.
제2메모리 컨트롤러(202-2)는, RAID 컨트롤러(112)로부터 출력된 제2로그 종료 명령(FWCL2)에 응답하여, 제2라이트 명령 로그(WL2)를 생성하는 작동을 중단하고, 제2휘발성 메모리(204-2)에 저장된 제2라이트 명령 로그(WL2)를 삭제할 수 있다.
제2메모리 컨트롤러(202-2)는, SPO에 따라 RAID 시스템(100A) 또는 제2데이터 저장 장치(300)가 재부팅된 후, RAID 컨트롤러(112)로부터 출력된 제2로그 리드 명령(RWCL2)에 응답하여, 제2불휘발성 메모리(206-2)에 저장된 제2라이트 명령 로그(WL2)를 리드하고, 리드된 제2라이트 명령 로그(WL2)를 RAID 컨트롤러(112)로 전송할 수 있다.
제2메모리 컨트롤러(202-2)는, RAID 컨트롤러(112)로부터 출력된 제2라이트 명령들 각각에 해당하는 라이트 데이터를 제2불휘발성 메모리(206-2)에 라이트할 수 있다.
제2메모리 컨트롤러(202-2)는, RAID 컨트롤러(112)로부터 출력된 제2리드 명령들 각각에 따라 제2불휘발성 메모리(206-2)에 저장된 데이터를 리드하고, 리드된 데이터를 RAID 컨트롤러(112)로 출력할 수 있다.
도 3은 도 2에 도시된 RAID 시스템의 작동의 일 실시 예를 나타낸다.
도 1부터 도 3을 참조하면, 각 데이터 저장 장치(200과 300)는 RAID 컨트롤러(112)로부터 전송된 각 로그 시작 명령(SWCL1과 SWCL2)을 수신하고, 각 로그 시작 명령(SWCL1과 SWCL2)이 수신된 시점부터 각 데이터 저장 장치(200과 300)에서 수신된 라이트 명령에 대한 라이트 명령 로그(WL1과 WL2)를 생성하기 시작한다.
제1데이터 저장 장치(200)는 제1로그 시작 명령(SWCL1)을 수신하고, 제1로그 시작 명령(SWCL1)에 응답하여, RAID 컨트롤러(112)로부터 순차적으로 전송되는 제1라이트 명령들(W100, W210, 및 W180)에 대한 제1라이트 명령 로그(WL1)를 생성한다.
제2데이터 저장 장치(300)는 제2로그 시작 명령(SWCL2)을 수신하고, 제2로그 시작 명령(SWCL2)에 응답하여, RAID 컨트롤러(112)로부터 순차적으로 전송되는 제2라이트 명령들(W100, W210, 및 W180)에 대한 제2라이트 명령 로그(WL2)를 생성한다. 제1라이트 명령 로그(WL1) 및/또는 제2라이트 명령 로그(WL2)는 도 5의 (a)에 예시적으로 도시되어 있다.
각 라이트 명령(W100, W210, 및 W180)은 LBA, 섹터 카운트, 및 라이트 데이터를 포함할 수 있다. 상기 섹터 카운트는 섹터의 크기 또는 섹터의 갯수에 관련된다.
도 5는 본 발명의 실시 예에 따른 라이트 명령들에 대한 라이트 명령 로그를 나타낸다.
예컨대, 각 데이터 저장 장치(200과 300)는, 라이트 명령(W100)에 포함된 제1LBA(LBA100)와 제1섹터 카운트(SC1)에 기초하여, 라이트 명령(W100)에 포함된 제1라이트 데이터를 불휘발성 메모리(206-1과 206-2), 예컨대 NAND 플래시의 제1메모리 영역에 라이트한다. 라이트 작동이 완료되면, 각 데이터 저장 장치(200과 300)는 라이트 완료 신호(WC100)를 RAID 컨트롤러(112)로 전송한다. 예컨대, 라이트 완료 신호(WC100)는 라이트 명령 로드 컨트롤러(112-2)로 전송될 수 있다.
이때, 각 데이터 저장 장치(200과 300)는 라이트 명령(W100)을 파싱하고, 파싱의 결과에 따라 생성된 제1LBA(LBA100)와 제1섹터 카운트(SC1)를 포함하는 라이트 명령 로그(WL1과 WL2)를 생성할 수 있다.
그 후, 각 데이터 저장 장치(200과 300)는, 라이트 명령(W210)에 포함된 제2LBA(LBA210)와 제2섹터 카운트(SC2)에 기초하여, 라이트 명령(W210)에 포함된 제2라이트 데이터를 불휘발성 메모리(206-1과 206-2), 예컨대 NAND 플래시의 제2메모리 영역에 라이트한다. 라이트 작동이 완료되면, 각 데이터 저장 장치(200과 300)는 라이트 완료 신호(WC210)를 RAID 컨트롤러(112)로 전송한다. 예컨대, 라이트 완료 신호(WC210)는 라이트 명령 로그 컨트롤러(112-2)로 전송될 수 있다.
이때, 각 데이터 저장 장치(200과 300)는 라이트 명령(W210)을 파싱하고, 파싱의 결과에 따라 생성된 제2LBA(LBA210)와 제2섹터 카운트(SC2)를 포함하는 라이트 명령 로그(WL1과 WL2)를 생성(또는 업데이트)한다.
그 후, 각 데이터 저장 장치(200과 300)는, 라이트 명령(W180)에 포함된 제3LBA(LBA180)와 제3섹터 카운트(SC3)에 기초하여, 라이트 명령(W180)에 포함된 제3라이트 데이터를 불휘발성 메모리(206-1과 206-2), 예컨대 NAND 플래시의 제3메모리 영역에 라이트한다. 라이트 작동이 완료되면, 각 데이터 저장 장치(200과 300)는 라이트 완료 신호(WC180)를 RAID 컨트롤러(112)로 전송한다. 라이트 완료 신호 (WC180)는 라이트 명령 로그 컨트롤러(112-2)로 전송될 수 있다.
이때, 각 데이터 저장 장치(200과 300)는 라이트 명령(W180)을 파싱하고, 파싱의 결과에 따라 생성된 제3LBA(LBA180)와 제3섹터 카운트(SC3)를 포함하는 라이트 명령 로그(WL1과 WL2)를 생성(또는 업데이트)한다.
즉, 도 5의 (a)에 도시된 바와 같이, 각 라이트 명령(W100, W210, 및 W180)에 대한 라이트 명령 로그(WL1과 WL2)는 각 LBA(LBA100, LBA210, 및 LBA180)와 각 섹터 카운트(SC1, SC2, 및 SC3)를 포함한다.
라이트 명령들(W100, W210, 및 W180)에 대한 각 라이트 명령 로그(WL1과 WL2)는 각 메모리 컨트롤러(202-1과 202-2)의 제어에 따라 각 휘발성 메모리(204-1과 204-2)에 저장된다.
각 데이터 저장 장치(200과 300)로부터 출력된 각 라이트 완료 신호(WC180)에 기초하여, RAID 컨트롤러(112)는 각 로그 종료 명령(FWCL1과 FWCL2)을 각 데이터 저장 장치(200과 300)로 출력한다. 따라서, 각 데이터 저장 장치(200과 300)는, 각 로그 종료 명령(FWCL1과 FWCL2)에 응답하여, 각 휘발성 메모리(204-1과 204-2)에 저장된 각 라이트 명령 로그(WL1과 WL2)를 삭제한다. 따라서, 각 휘발성 메모리 (204-1과 204-2)에 대한 메모리 공간의 효율성은 증가한다.
각 라이트 명령(W100, W210, 및 W180)에 포함된 각 라이트 데이터에 대한 라이트 작동이 완료될 때까지, RAID 시스템(100A)에서 SPO가 발생하지 않으면, RAID 컨트롤러(112)는 각 로그 종료 명령(FWCL1과 FWCL2)을 각 데이터 저장 장치(200과 300)로 출력한다.
제1데이터 저장 장치(200)는, 별도의 명령들을 RAID 컨트롤러(112)와 주고받지 않고, RAID 컨트롤러(112)로부터 출력된 제1라이트 명령들(W100, W210, 및 W180)에 대한 제1라이트 명령 로그(WL1)를 생성할 수 있으므로, 제1데이터 저장 장치(200)와 RAID 컨트롤러(112)가 주고받는 명령들의 갯수는 감소한다. 또한, 제2데이터 저장 장치(300)는, 별도의 명령들을 RAID 컨트롤러(112)와 주고받지 않고, RAID 컨트롤러(112)로부터 출력된 제2라이트 명령들(W100, W210, 및 W180)에 대한 제2라이트 명령 로그(WL2)를 생성할 수 있으므로, 제2데이터 저장 장치(300)와 RAID 컨트롤러(112)가 주고받는 명령들의 개수는 감소한다.
도 4는 도 2에 도시된 RAID 시스템의 작동의 다른 실시 예를 나타낸다.
도 4는, RAID 시스템(100A) 또는 각 데이터 저장 장치(200과 300)에서 SPO가 발생하고 재부팅된 후, 데이터를 빠르게 복구하는 방법에 대한 개념도이다.
제1시점(T1)에서, RAID 시스템(100A) 또는 각 데이터 저장 장치(200과 300)에서 SPO가 발생한다고 가정한다.
도 1부터 도 4를 참조하면, 제1데이터 저장 장치(200)에서 라이트 명령 (W210)에 대한 라이트 작동은 성공했으나, 제2데이터 저장 장치(300)에서 라이트 명령(W210)에 대한 라이트 작동은 실패했다.
즉, RAID 시스템(10OA)에서 SPO가 발생하기 전에, 제1데이터 저장 장치(200)는 라이트 완료 신호(WC210)를 RAID 컨트롤러(112)로 출력했으나, 제2데이터 저장 장치(300)는 라이트 완료 신호(WC210)를 RAID 컨트롤러(112)로 출력하지 못했다.
그러나, 제1시점(T1)에서, 제1메모리 컨트롤러(202-1)에 의해 생성된 라이트 명령들(W100과 W210)에 대한 제1라이트 명령 로그(WL1)는 제1커패시터(C1)에 충전된 전압에 의해 제1휘발성 메모리(204-1)로부터 제1불휘발성 메모리(206-1)로 저장된다. 또한, 제1시점(T1)에서, 제2메모리 컨트롤러(202-2)에 의해 생성된 라이트 명령들(W100과 W210)에 대한 제2라이트 명령 로그(WL2)는 제2커패시터(C2)에 충전된 전압에 의해 제2휘발성 메모리(204-2)로부터 제2불휘발성 메모리(206-2)로 저장된다.
RAID 시스템(10OA)이 재부팅된 후, RAID 컨트롤러(112)는 각 로그 리드 명령 (RWCL1과 RWCL2)을 각 메모리 컨트롤러(202-1과 202-2)로 전송한다.
각 메모리 컨트롤러(202-1과 202-2)는 각 불휘발성 메모리(206-1과 206-2)에 저장된 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))를 RAID 컨트롤러(112-1)로 전송한다. 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))는, 도 5의 (b)에 도시된 바와 같이, LBA들(LAB100과 LBA200)과 섹터 카운트들(SC1과 SC2)을 포함한다.
RAID 컨트롤러(112-1), 즉 데이터 복구 매니저(112-1)는, 제1라이트 명령 로그(WL1(100,210))에 기초하여, SPO가 발생하기 전에 라이트 명령들(W100과 W210)이 제1데이터 저장 장치(200)로 전송되었음을 판단할 수 있다. 또한, RAID 컨트롤러 (112-1), 즉 데이터 복구 매니저(112-1)는, 제2라이트 명령 로그(WL2(100,210))에 기초하여, SPO가 발생하기 전에 라이트 명령들(W100과 W210)이 제2데이터 저장 장치(300)로 전송되었음을 판단할 수 있다.
RAID 컨트롤러(112-1), 즉 데이터 복구 매니저(112-1)는, 각 데이터 저장 장치(200과 300)로 각 리드 명령(R100과 R100)을 출력한다. 각 데이터 저장 장치(200과 300)의 각 메모리 컨트롤러(202-1과 202-2)는, 각 리드 명령(R100과 R100)에 응답하여, 각 LBA100에 해당하는 각 메모리 영역에 저장된 각 데이터(RD100와 RD100)를 데이터 복구 매니저(112-1)로 출력한다.
데이터 복구 매니저(112-1)는 제1데이터 저장 장치(200)로부터 출력된 데이터(RD100)와 제2데이터 저장 장치(300)로부터 출력된 데이터(RD100)를 서로 비교한다(S10). 비교의 결과, 두 데이터(RD100과 RD100)는 서로 일치한다.
계속하여, RAID 컨트롤러(112-1), 즉 데이터 복구 매니저(112-1)는, 각 데이터 저장 장치(200과 300)로 각 리드 명령(R210과 R210)을 출력한다. 각 데이터 저장 장치(200과 300)의 각 메모리 컨트롤러(202-1과 202-2)는, 각 리드 명령(R210과 R210)에 응답하여, 각 LBA210에 해당하는 각 메모리 영역에 저장된 각 데이터 (RD210와 RD210')를 데이터 복구 매니저(112-1)로 출력한다.
데이터 복구 매니저(112-1)는 제1데이터 저장 장치(200)로부터 출력된 데이터(RD210)와 제2데이터 저장 장치(300)로부터 출력된 데이터(RD210')를 서로 비교한다(S20). 비교의 결과, 두 데이터(RD210과 RD210')는 서로 일치하지 않는다.
데이터 복구 매니저(112-1)는 제1데이터 저장 장치(200)로부터 출력된 데이터(RD210)와 제2데이터 저장 장치(300)로부터 출력된 데이터(RD210')를 일치시키는 작동을 수행한다(S30). 이러한 작동을 재동기화(resynchronization) 작동이라 한다. 이때, 데이터(RD210)는 최신 데이터이다.
데이터 복구 매니저(112-1)는 제1데이터 저장 장치(200)에 저장된 데이터 (RD210), 즉 최신 데이터를 제2데이터 저장 장치(300)로 카피하기 위한 명령들을 제1데이터 저장 장치(200)와 제2데이터 저장 장치(300)로 출력할 수 있다.
예컨대, 제1메모리 컨트롤러(202-1)는, 데이터 복구 매니저(112-1)로부터 출력된 리드 명령(R210)에 응답하여, 제1불휘발성 메모리(206-1)의 LBA210에 해당하는 메모리 영역에 저장된 데이터(RD210)를 리드하고, 리드된 데이터(RD210)를 데이터 복구 매니저(112-1)로 출력한다.
데이터 복구 매니저(112-1)는 라이트 명령 (W210)을 제2메모리 컨트롤러 (202-2)로 전송한다. 제2메모리 컨트롤러(202-2)는, 라이트 명령(W210)에 응답하여, 제1메모리 컨트롤러(202-1)로부터 출력된 데이터 (RD210)를 제2불휘발성 메모리(206-2)의 LBA210에 해당하는 메모리 영역에 라이트한다. 라이트 작동이 완료되면, 제2메모리 컨트롤러(202-2)는 라이트 완료 신호(WC210)를 라이트 명령 로그 컨트롤러(112-2)로 출력한다.
실시 예에 따라, 각 메모리 컨트롤러(202-1과 202-2)는 각 라이트 명령 로그 (WL1과 WL2)를 생성할 때, 각 라이트 명령에 시퀀스 번호(sequence number)를 생성할 수 있다. 예컨대, 각 메모리 컨트롤러(202-1과 202-2)는 LBA100에 시퀀스 번호 1을 할당하고, LBA210에 시퀀스 번호 2를 할당할 수 있다. 따라서, 재동기화 작동이 수행될 때, 데이터 복구 매니저(112-1)는, 시퀀스 번호에 따라, LBA100에 해당하는 두 데이터를 먼저 비교하고, LBA210에 해당하는 두 데이터를 비교할 수 있다.
예컨대, 시퀀스 번호는 각 데이터 저장 장치(200과 300)로 전송된 라이트 명령의 순서에 따라 할당(또는 결정)될 수 있다.
다른 실시 예에 따라, 각 메모리 컨트롤러(202-1과 202-2)는 각 라이트 명령 로그(WL1과 WL2)를 생성할 때, 각 라이트 명령에 타임 스탬프(time stamp)를 생성할 수 있다. 예컨대, 상기 타임 스탬프는 시분초를 나타낼 수 있다.
도 6은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 3에 도시된 바와 같이, RAID 컨트롤러(112)는 동시에 대응되는 2개의 라이트 명령들(W100과 W100, W210과 W210, 및 W180)을 두 개의 데이터 저장 장치들 (200과 300)로 전송한다. 예컨대, 제1데이터 저장 장치(200)로 제1라이트 명령 (W100)과 제2데이터 저장 장치(300)로 제2라이트 명령(W100)이 동시에 전송될 수 있다.
그러나, RAID 컨트롤러(112)는 제1라이트 명령들(W100, W210, 및 W180) 각각과 제2라이트 명령들(W100, W210, 및 W180) 각각을 서로 다른 시점에 데이터 저장 장치들(200과 300) 각각으로 전송할 수 있다.
도 6에 도시된 바와 같이, RAID 컨트롤러(112)는 제1로그 시작 명령(SWCL1)을 제1데이터 저장 장치(200)로만 출력하고, 제1라이트 명령들(W100, W210, 및 W180)을 순차적으로 제1데이터 저장 장치(200)로 출력한다.
제1메모리 컨트롤러(202-1)는, 제1로그 시작 명령(SWCL1)이 입력된 시점 이후에 입력되는 제1라이트 명령들(W100, W210, 및 W180)에 대한 제1라이트 명령 로그(WL1)를 생성한다. 예컨대, 제1메모리 컨트롤러(202-1)는 제1라이트 명령들 (W100, W210, 및 W180) 각각이 입력될 때마다 제1라이트 명령 로그(WL1)를 생성할 수 있다. 제1라이트 명령 로그(WL1)에 포함된 LBA의 개수(또는 엔트리들의 갯수)는 제1라이트 명령들의 개수와 동일할 수 있다. 예컨대, 엔트리는 LBA와 섹터 카운트를 포함할 수 있다.
제1라이트 명령들(W100, W210, 및 W180)이 제1메모리 컨트롤러(202-1)로 전송된 후, RAID 컨트롤러(112)는 제2라이트 명령들(W100, W210, 및 W180)을 제2메모리 컨트롤러(202-2)로 전송한다.
제1데이터 저장 장치(200)에서 제1라이트 명령들(W100, W210, 및 W180) 각각에 대한 라이트 작동이 완료되면, 제1메모리 컨트롤러(202-1)는 각 라이트 완료 신호(WC100, WC210, 및 WC180)를 RAID 컨트롤러(112), 예컨대, 라이트 명령 로그 컨트롤러(112-2)로 출력한다.
또한, 제2데이터 저장 장치(300)에서 제2라이트 명령들 (W100, W210, 및 W180) 각각에 대한 라이트 작동이 완료되면, 제2메모리 컨트롤러 (202-2)는 각 라이트 완료 신호(WC100, WC210, 및 WC180)를 RAID 컨트롤러(112), 예컨대, 라이트 명령 로그 컨트롤러(112-2)로 출력한다.
라이트 명령 로그 컨트롤러(112-2)는 제2메모리 컨트롤러(202-2)로부터 출력된 라이트 완료 신호(WC180), 즉 마지막 라이트 완료 신호에 응답하여 제1로그 종료 명령(FWCL1)을 제1메모리 컨트롤러(202-1)로 출력한다. 따라서, 제1메모리 컨트롤러(202-1)는, 제1로그 종료 명령(FWCL1)에 기초하여, 제1라이트 명령 로그(WL1)를 생성하는 작동을 중단하고, 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 삭제한다.
RAID 컨트롤러(1120)가 데이터 저장 장치들(200과 300) 중에서 어느 하나로만 로그 시작 명령과 로그 종료 명령을 출력하면, 재부팅 후 데이터가 복구될 때, RAID 컨트롤러(1120)는 데이터 저장 장치들(200과 300) 중에서 어떤 데이터 저장 장치에 저장된 데이터가 최신 데이터인지 명확하게 구별할 수 있다.
예컨대, RAID 컨트롤러(1120)가 데이터 저장 장치들(200과 300) 중에서 어느 하나로만 로그 시작 명령을 출력하고 상기 어느 하나로 라이트 명령들을 먼저 출력하면, RAID 컨트롤러(112)는 상기 어느 하나에 저장된 데이터가 최신 데이터임을 보증할 수 있다.
따라서, RAID 시스템(100A)에서 SPO가 발생하고 RAID 시스템(100A)이 재부팅된 후, RAID 컨트롤러(112)는 상기 어느 하나에 대한 라이트 명령 로그를 이용하여 상기 어느 하나에 저장된 데이터가 최근 데이터임을 구별할 수 있다.
데이터 저장 장치들(200과 300) 중에서 어느 하나에만 라이트 명령 로그가 저장되면, 데이터 저장 장치들(200과 300) 각각에 라이트 명령 로그가 저장될 때보다, 상기 라이트 명령 로그를 저장하는 메모리 공간이 절약된다.
도 7은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 6과 도 7을 참조하면, 제2시점(T2)에서, RAID 시스템(100A) 또는 각 데이터 저장 장치(200과 300)에서 SPO가 발생한다고 가정한다.
RAID 컨트롤러(1120)는 데이터 저장 장치들(200과 300) 중에서 제1데이터 저장 장치(200)로만 제1로그 시작 명령(SWCL1)을 출력하고, 제1라이트 명령들(W100, W210, 및 W180)을 출력한다.
제1메모리 컨트롤러(202-1)는 제1라이트 명령들(W100, W210, 및 W180)에 대한 제1라이트 명령 로그(WL1)를 생성하고 생성된 제1라이트 명령 로그(WL1)를 제1휘발성 메모리(204-1)에 저장한다. SPO가 발생하기 전에, 제1메모리 컨트롤러(202-1)는 각 라이트 완료 신호(WC100, WC210, 및 WC180)를 RAID 컨트롤러(112)로 출력한다.
SPO 시에, 제1메모리 컨트롤러(202-1)는, 제1커패시터(C1)에 충전된 전압을 이용하여, 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 제1불휘발성 메모리(206-1)에 저장한다.
RAID 시스템(100A)이 재부팅된 후, 데이터 복구 매니저(112-1)는 제1로그 리드 명령(RWCL1)을 제1메모리 컨트롤러(202-1)로 출력하고, 제2로그 리드 명령 (RWCL2)을 제2메모리 컨트롤러(202-2)로 출력한다. 실시 예들에 따라, 로그 리드 명령들(RWCL1과 RWCL2)은 동시에 또는 서로 다른 시점에 데이터 저장 장치들(200과 300)로 출력될 수 있다.
제1메모리 컨트롤러(202-1)는, 제1로그 리드 명령(RWCL1)에 응답하여, 제1불휘발성 메모리(206-1)에 저장된 제1라이트 명령 로그(WL1(100,210,180))를 리드하고, 제1라이트 명령 로그(WL1(100,210,180))를 데이터 복구 매니저(112-1)로 전송한다. 제1라이트 명령 로그(WL1(100,210,180))는 도 5의 (a)에 도시된 바와 같이 LBA별로 섹터 카운트를 포함한다.
그러나, 라이트 명령 로그가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는, 제2로그 리드 명령(RWCL2)에 응답하여, 상기 라이트 명령 로그를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는, 제1라이트 명령 로그(WL1(100,210,180))를 이용하여, 각 리드 명령(R100과 R100)을 각 메모리 컨트롤러(202-1과 202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는 리드 명령(R100)에 상응하는 데이터(RD100)를 제1불휘발성 메모리(206-1)로부터 리드하고, 리드된 데이터(RD100)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R100)에 상응하는 데이터가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는 리드 명령(R100)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R100과 R100)에 상응하는 데이터를 서로 비교한다(S12). 리드 명령들(R100과 R100)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제1데이터 저장 장치(200)의 LBA100에 해당하는 메모리 영역에 저장된 데이터를 제2데이터 저장 영역(300)의 LBA100에 해당하는 메모리 영역에 라이트하는 작동(W100과 WC100)이 수행된다.
데이터 복구 매니저(112-1)는, 제1라이트 명령 로그(WL1(100,210,180))를 이용하여, 각 리드 명령(R210과 R210)을 각 메모리 컨트롤러(202-1과 202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는 리드 명령(R210)에 상응하는 데이터(RD210)를 제1불휘발성 메모리(206-1)로부터 리드하고, 리드된 데이터(RD210)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R210)에 상응하는 데이터가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는 리드 명령(R210)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R210과 R210)에 상응하는 데이터를 서로 비교한다(S22). 리드 명령들(R210과 R210)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제1데이터 저장 장치(200)의 LBA210에 해당하는 메모리 영역에 저장된 데이터를 제2데이터 저장 영역(300)의 LBA210에 해당하는 메모리 영역에 라이트하는 작동(W210과 WC210)이 수행된다.
계속하여, 데이터 복구 매니저(112-1)는, 제1라이트 명령 로그 (WL1(100,210,180))를 이용하여, 각 리드 명령(R180과 R180)을 각 메모리 컨트롤러 (202-1과 202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는 리드 명령(R180)에 상응하는 데이터(RD180)를 제1불휘발성 메모리(206-1)로부터 리드하고, 리드된 데이터(RD180)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R180)에 상응하는 데이터가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는 리드 명령(R180)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R180과 R180)에 상응하는 데이터를 서로 비교한다(S32). 리드 명령들(R180과 R180)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제1데이터 저장 장치(200)의 LBA180에 해당하는 메모리 영역에 저장된 데이터를 제2데이터 저장 영역(300)의 LBA180에 해당하는 메모리 영역에 라이트하는 작동(W180과 WC180)이 수행된다.
즉, 제1라이트 명령들(W100, W210, 및 W180) 각각에 해당하는 라이트 데이터 (RD100, RD210, 및 RD180)는 제1데이터 저장 장치(200)에만 라이트되고, 제2데이터 저장 장치(300)에는 데이터가 라이트되지 않았다.
RAID 컨트롤러(112)는, 제1라이트 명령 로그(WL1(100,210,180))에 기초하여, 제1데이터 저장 장치(200)에 라이트된 데이터(RD100, RD210, 및 RD180)가 최신 데이터임을 판단할 수 있다.
따라서, RAID 컨트롤러(112)는, LBA100, LBA210, 및 LBA180에 해당하는 각 데이터에 대해 제1데이터 저장 장치(200)로부터 제2데이터 저장 장치(300)로 재동기화 작동을 수행한다. 따라서, 제1데이터 저장 장치(200)에 저장된 데이터와 제2데이터 저장 장치(300)에 저장된 데이터 사이에 데이터 일관성이 유지된다.
도 8은 도 2에 도시된 RAID 시스템의 작동의 또 다른 실시 예를 나타낸다.
도 2와 도 8을 참조하면, RAID 컨트롤러(112)는 제1로그 시작 명령(SWCL1)을 제1데이터 저장 장치(200)로 출력하고, 그 후에 제2로그 시작 명령(SWCL2)을 제2데이터 저장 장치(200)로 출력한다.
제1메모리 컨트롤러(202-1)는 제1라이트 명령들(W100과 W210)에 대한 제1라이트 명령 로그(WL1)를 생성하고, 생성된 제1라이트 명령 로그(WL1)를 제1휘발성 메모리(204-1)에 라이트한다.
또한, 제2메모리 컨트롤러(202-2)는 제2라이트 명령(W180)에 대한 제2라이트 명령 로그(WL2)를 생성하고, 생성된 제2라이트 명령 로그(WL2)를 제2휘발성 메모리(204-2)에 라이트한다.
제3시점(T3)에서, RAID 시스템(100A)에서 SPO가 발생하면, 제1메모리 컨트롤러(202-1)는, 제1커패시터(C1)에 충전된 전압을 이용하여, 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 제1불휘발성 메모리(206-1)에 저장한다. 또한, 제2메모리 컨트롤러(202-2)는, 제2커패시터(C2)에 충전된 전압을 이용하여, 제2휘발성 메모리(204-2)에 저장된 제2라이트 명령 로그(WL2)를 제2불휘발성 메모리(206-2)에 저장한다.
RAID 시스템(100A)이 재부팅된 후, 데이터 복구 매니저(112-1)는 제1로그 리드 명령(RWCL1)을 제1메모리 컨트롤러(202-1)로 출력하고, 제2로그 리드 명령 (RWCL2)을 제2메모리 컨트롤러(202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는, 제1로그 리드 명령(RWCL1)에 응답하여, 제1불휘발성 메모리(206-1)에 저장된 제1라이트 명령 로그(WL1(100,210))를 리드하고, 리드된 제1라이트 명령 로그(WL1(100,210))를 데이터 복구 매니저(112-1)로 전송한다.
제2메모리 컨트롤러(202-2)는, 제2로그 리드 명령(RWCL2)에 응답하여, 제2불휘발성 메모리(206-2)에 저장된 제2라이트 명령 로그(WL2(180))를 리드하고, 리드된 제2라이트 명령 로그(WL2(180))를 데이터 복구 매니저(112-1)로 전송한다.
데이터 복구 매니저(112-1)는, 제1라이트 명령 로그(WL1(100,210))에 기초하여, 각 리드 명령(R100과 R100)을 각 메모리 컨트롤러(202-1과 202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는 리드 명령(R100)에 상응하는 데이터(RD100)를 제1불휘발성 메모리(206-1)로부터 리드하고, 리드된 데이터(RD100)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R100)에 상응하는 데이터가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는 리드 명령 (R100)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R100과 R100)에 상응하는 데이터를 비교한다(S14). 리드 명령들(R100과 R100)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제1데이터 저장 장치(200)의 LBA100에 해당하는 메모리 영역에 저장된 데이터를 제2데이터 저장 영역(300)의 LBA100에 해당하는 메모리 영역에 라이트하는 작동(W100과 WC100)이 수행된다.
데이터 복구 매니저(112-1)는, 제1라이트 명령 로그(WL1(100,210))에 기초하여, 각 리드 명령(R210과 R210)을 각 메모리 컨트롤러(202-1과 202-2)로 출력한다.
제1메모리 컨트롤러(202-1)는 리드 명령(R210)에 상응하는 데이터(RD210)를 제1불휘발성 메모리(206-1)로부터 리드하고, 리드된 데이터(RD210)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R210)에 상응하는 데이터가 제2데이터 저장 장치(300)에 존재하지 않으므로, 제2메모리 컨트롤러(202-2)는 리드 명령 (R210)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R210과 R210)에 상응하는 데이터를 비교한다(S24). 리드 명령들(R210과 R210)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제1데이터 저장 장치(200)의 LBA210에 해당하는 메모리 영역에 저장된 데이터를 제2데이터 저장 영역(300)의 LBA210에 해당하는 메모리 영역에 라이트하는 작동(W210과 WC210)이 수행된다.
계속하여, 데이터 복구 매니저(112-1)는, 제2라이트 명령 로그(WL2(180))에 기초하여, 각 리드 명령(R180과 R180)을 각 메모리 컨트롤러(202-1과 202-2)로 출력한다.
제2메모리 컨트롤러(202-2)는 리드 명령(R180)에 상응하는 데이터(RD180)를 제2불휘발성 메모리(206-2)로부터 리드하고, 리드된 데이터(RD180)를 데이터 복구 매니저(112-1)로 전송한다.
그러나, 리드 명령(R180)에 상응하는 데이터가 제1데이터 저장 장치(200)에 존재하지 않으므로, 제1메모리 컨트롤러(202-1)는 리드 명령 (R180)에 상응하는 상기 데이터를 데이터 복구 매니저(112-1)로 전송하지 못한다.
데이터 복구 매니저(112-1)는 리드 명령들(R180과 R180)에 상응하는 데이터를 서로 비교한다(S32). 리드 명령들(R180과 R180)에 상응하는 데이터가 동일하지 않으므로, 데이터 복구 매니저(112-1)의 제어에 따라, 제2데이터 저장 장치(300)의 LBA180에 해당하는 메모리 영역에 저장된 데이터를 제1데이터 저장 영역(200)의 LBA180에 해당하는 메모리 영역에 라이트하는 작동(W180과 WC180)이 수행된다.
제1라이트 명령들(W100과 W210) 각각에 해당하는 라이트 데이터(RD100과 RD210)는 제1데이터 저장 장치(200)에만 라이트되고, 제2라이트 명령(W180)에 해당하는 라이트 데이터(RD180)는 제2데이터 저장 장치(300)에만 라이트된다.
RAID 컨트롤러(112)는, 제1라이트 명령 로그(WL1(100,210))에 기초하여, 제1데이터 저장 장치(200)에 라이트된 데이터(RD100과 RD210)가 최신 데이터임을 판단할 수 있다. 또한, RAID 컨트롤러(112)는, 제2라이트 명령 로그 (WL2(180))에 기초하여, 제2데이터 저장 장치(300)에 라이트된 데이터(RD180)가 최신 데이터임을 판단할 수 있다.
RAID 컨트롤러(112)는, LBA100과 LBA210에 해당하는 각 데이터에 대해 제1데이터 저장 장치(200)로부터 제2데이터 저장 장치(300)로 재동기화 작동을 수행한다. 또한, RAID 컨트롤러(112)는, LBA180에 해당하는 데이터에 대해 제2데이터 저장 장치(300)로부터 제1데이터 저장 장치(200)로 재동기화 작동을 수행한다. 따라서, 제1데이터 저장 장치(200)에 저장된 데이터와 제2데이터 저장 장치(300)에 저장된 데이터 사이에 데이터 일관성이 유지된다.
도 9는 본 발명의 다른 실시 예에 따른 RAID 시스템의 개략적인 블록도이다.
도 9를 참조하면, RAID 시스템(100B)은 패리티 RAID 시스템으로 구현될 수 있다. 예컨대, RAID 시스템(100B)은 RAID 5로 구현될 수 있다.
RAID 시스템(100B)은 제어 장치(110)와 4개의 데이터 저장 장치들(210-1~210-4)을 포함할 수 있다.
제어 장치(110)에 포함된 RAID 컨트롤러(112)의 작동과 구조는 도 2에 도시된 RAID 컨트롤러(112)의 작동과 구조와 실질적으로 동일 또는 유사하다. 데이터 저장 장치들(210-1~210-4) 각각의 작동과 구조는 도 2에 도시된 데이터 저장 장치 (200 또는 300)의 작동과 구조와 실질적으로 동일 또는 유사하다.
동일한 LBA에 상응하는 각 데이터에 대한 패리티(parity)는 데이터 저장 장치들(210-1~210-4) 중에서 어느 하나에 저장된다.
예컨대, 각 LBA1에 대응되는 각 메모리 영역에 저장된 각 데이터(D1, D2, 및 D3)에 대한 패리티(P1_3)는 제4데이터 저장 장치(210-4)에 저장된다. 각 LBA2에 대응되는 각 메모리 영역에 저장된 각 데이터(D4, D5, 및 D6)에 대한 패리티(P4_6)는 제3데이터 저장 장치(210-3)에 저장된다.
각 LBA3에 대응되는 각 메모리 영역에 저장된 각 데이터(D7, D8, 및 D9)에 대한 패리티(P7_9)는 제2데이터 저장 장치(210-2)에 저장된다. 각 LBA4에 대응되는 각 메모리 영역에 저장된 각 데이터(D10, D11, 및 D12)에 대한 패리티(P10_12)는 제1데이터 저장 장치(210-1)에 저장된다. 예컨대, 패리티(P1_3)는 각 데이터(D1, D2, 및 D3)를 XOR 연산하여 계산될 수 있다.
도 10은 도 9에 도시된 RAID 시스템의 작동의 일 실시 예를 나타낸다.
데이터(D2)가 새로운 데이터(D2')로 업데이트되면, 패리티(P1_3)도 새로운 패리티(P1_3')로 업데이트되어야 한다. 도 10은 패리티(P1_3)가 새로운 패리티 (P1_3')로 정상적으로 업데이트되는 과정을 나타낸다.
도 2, 도 9, 및 도 10을 참조하면, 데이터(D2)에 대한 업데이트가 필요하면, RAID 컨트롤러(112)는 리드 명령(RD2)을 이용하여 제2데이터 저장 장치(210-2)로부터 데이터(D2)를 읽어온다. 데이터(D2)에 대한 리드 작동이 완료되면, 제2데이터 저장 장치(210-2)는 리드 완료 신호(RCD2)를 RAID 컨트롤러(112)로 전송한다. 또한, RAID 컨트롤러(112)는 리드 명령(RP1_3)을 이용하여 제4데이터 저장 장치(210-4)로부터 패리티(P1_3)를 읽어온다. 패리티(P1_3)에 대한 리드 작동이 완료되면, 제4데이터 저장 장치(210-4)는 리드 완료 신호(RCP1_3)를 RAID 컨트롤러(112)로 전송한다.
RAID 컨트롤러(112)는 각 데이터(D2, P1_3, 및 D2')를 XOR 연산하고, 새로운 패리티(P1_3')를 계산한다(S16).
RAID 컨트롤러(112)는 라이트 명령(WD2')을 이용하여 새로운 데이터(D2')를 제2데이터 저장 장치(210-2)에 라이트한다. 새로운 데이터(D2')에 대한 라이트 작동이 완료되면, 제2데이터 저장 장치(210-2)는 라이트 완료 신호(WCD2')를 RAID 컨트롤러(112)로 전송한다.
또한, RAID 컨트롤러(112)는 라이트 명령(WP1_3')을 이용하여 새로운 패리티 (P1_3')를 제4데이터 저장 장치(210-4)에 라이트한다. 새로운 패리티(P1_3')에 대한 라이트 작동이 완료되면, 제4데이터 저장 장치(210-4)는 라이트 완료 신호 (WCP1_3')를 RAID 컨트롤러(112)로 전송한다.
도 11은 도 9에 도시된 RAID 시스템의 작동의 다른 실시 예를 나타낸다.
새로운 데이터(D2')가 제2데이터 저장 장치(210-2)에 라이트 완료되고 새로운 패리티(P1_3')가 제4데이터 저장 장치(210-4)에 라이트 완료되기 전에, RAID 시스템(100B)에서 SPO가 발생한다고 가정한다.
도 9부터 도 11을 참조하면, RAID 컨트롤러(112)는 각 로그 시작 명령 (SWCL1~SWCL4)을 각 데이터 저장 장치(210-1~210-4)로 출력한다. 제2데이터 저장 장치(210-2)는 라이트 명령(WD2')에 대한 라이트 명령 로그(WL2)를 생성한다.
도 10을 참조하여 설명한 바와 같이, 제2데이터 저장 장치(210-2)가 라이트 완료 신호(WCD2')를 RAID 컨트롤러(112)로 전송한 후, 시점(T4)에서 RAID 시스템 (100B)에 대한 SPO가 발생한다. 따라서, 새로운 패리티(P1_3')가 제4데이터 저장 장치(210-4)에 라이트되지 않았으므로, 각 데이터(D1~D3)를 포함하는 스트립은 데이터 일관성을 유지할 수 없다.
RAID 시스템(100B)이 재부팅된 후, RAID 컨트롤러(112)는 각 로그 리드 명령 (RWCL1~RWCL4)을 각 데이터 저장 장치(210-1~210-4)로 출력한다. 제2데이터 저장 장치(210-2)만이 라이트 명령 로그(WL2)를 RAID 컨트롤러(112)로 출력할 수 있다.
RAID 컨트롤러(112)는 각 리드 명령(RD1, RD2', RD3, 및 RP1_3)을 이용하여 각 데이터 저장 장치(210-1~210-4)로부터 각 데이터(D1, D2', D3, 및 P1_3)를 읽어온다. 각 리드 작동이 완료되면, 각 데이터 저장 장치(210-1~210-4)는 각 리드 완료 신호(RCD1, RCD2', RCD3, 및 RCP1_3)를 RAID 컨트롤러(112)로 전송한다.
RAID 컨트롤러(112)는 패리티(P1_3')를 계산하기 위해 데이터(D1, D2', 및 D3)를 XOR 연산한다(S36). 제4데이터 저장 장치(210-4)로부터 출력된 패리티(P1_3)와 계산된 패리티(P1_3')가 동일하지 않으므로, RAID 컨트롤러(112)는 라이트 명령 (WP1_3')을 이용하여 새로운 패리티((P1_3')를 제4데이터 저장 장치(210-4)에 라이트한다. 새로운 패리티((P1_3')에 대한 라이트 작동이 완료되면, 제4데이터 저장 장치(210-4)는 라이트 완료 신호(WCP1_3')를 RAID 컨트롤러(112)로 전송한다. 따라서, 스트립에 포함된 데이터(D1, D2', D3, 및 P1_3')의 일관성이 유지된다.
도 12는 본 발명의 실시 예에 따른 데이터 저장 장치의 작동을 나타내는 플로우차트이다.
각 데이터 저장 장치(200, 210-1~210-4, 및 300)의 구조와 작동을 실질적으로 동일하므로, 제1데이터 저장 장치(200)에 대한 작동이 도 1, 도 2, 도 9, 및 도 12를 참조하여 설명된다.
제1데이터 저장 장치(200)는 RAID 컨트롤러(112)로부터 로그 시작 명령 (SWCL1)을 수신한다(S110).
제1데이터 저장 장치(200)는, 로그 시작 명령(SWCL1)에 응답하여, RAID 컨트롤러(112)로부터 출력되는 라이트 명령들에 대한 로그를 생성한다(S112). 예컨대, 제1메모리 컨트롤러(202-1)는, 도 5의 (a)에 도시된 바와 같이, 라이트 명령들 각각을 파싱하고, 파싱된 라이트 명령들 각각에 포함된 LBA와 섹터 카운트를 포함하는 로그를 생성할 수 있다.
제1데이터 저장 장치(200)는 생성된 로그를 제1휘발성 메모리(204-1)에 저장한다(S114).
RAID 시스템(100A 또는 100B)에서 SPO가 발생한다(S116).
SPO가 발생하면, 제1데이터 저장 장치(200)는, 제1커패시터(C1)에 충전된 전압을 이용하여, 제1휘발성 메모리(204-1)에 저장된 로그를 제1불휘발성 메모리 (206-1)로 전송한다(S118).
제1데이터 저장 장치(200)는 RAID 컨트롤러(112)로부터 출력된 로그 리드 명령(RWCL1)을 수신한다(S120). 제1데이터 저장 장치(200)는, 로그 리드 명령(RWCL1)에 응답하여, 제1불휘발성 메모리(206-1)에 저장된 라이트 명령 로그(WL1)를 RAID 컨트롤러(112)로 전송한다(S122).
도 13은 로그 시작 명령과 로그 종료 명령을 생성하는 방법을 설명하는 플로우차트이다.
도 1부터 도 4, 및 도 13을 참조하면, RAID 시스템(100A)은 미러링 RAID 시스템이고, RAID 시스템(100A)은 두 개의 데이터 저장 장치들(200과 300) 각각으로 각 시점에서 동시에 2개씩의 라이트 명령들(W100, W210, 및 W180)을 전송한다.
각 로그 시작 명령(SWCL1과 SWCL2)이 각 데이터 저장 장치(200과 300)로 출력된 후, 데이터 저장 장치들(200과 300)에 저장된 데이터의 일관성이 유지될 때 (S130), RAID 컨트롤러(112)는 각 로그 종료 명령(FWCL1과 FWCL2)의 출력 시점을 결정할 수 있다.
실시 예에 따라, RAID 컨트롤러(112)는, 각 데이터 저장 장치(200과 300)에서 생성된 라이트 명령 로그의 크기(또는 갯수)에 따라, 각 로그 종료 명령(FWCL1과 FWCL2)의 출력 시점을 결정할 수 있다(S132). 예컨대, 라이트 명령 로그(WL1 또는 WL2)의 크기(또는 갯수)는 데이터 저장 장치(200 또는 300)로 전송된 라이트 명령들의 갯수에 기초하여 계산될 수 있다.
다른 실시 예에 따라, RAID 컨트롤러(112)는, 각 데이터 저장 장치(200과 300)로 로그 종료 명령(FWCL1과 FWCL2)이 출력된 후 얼마의 시간이 지냈는지에 따라, 각 로그 종료 명령(FWCL1과 FWCL2)의 출력 시점을 결정할 수 있다(S132).
각 로그 시작 명령(SWCL1과 SWCL2)이 각 데이터 저장 장치(200과 300)로 출력되고, 데이터 저장 장치들(200과 300)에 저장된 데이터의 일관성이 유지되고, S132의 조건이 만족될 때, RAID 컨트롤러(112)는 각 로그 종료 명령(FWCL1과 FWCL2)을 각 데이터 저장 장치(200과 300)로 출력한다(S134). 따라서, 각 데이터 저장 장치(200과 300)의 각 휘발성 메모리에 저장된 각 라이트 명령 로그(WL1과 WL2)는 삭제된다. 즉, 각 데이터 저장 장치(200과 300)는, 각 로그 종료 명령 (FWCL1과 FWCL2)에 응답하여, 라이트 명령에 대한 로그의 생성을 중단하고 생성된 로그를 삭제할 수 있다.
각 로그 종료 명령(FWCL1과 FWCL2)이 각 데이터 저장 장치(200과 300)로 출력된 후, RAID 컨트롤러(112)는 각 로그 시작 명령(SWCL1과 SWCL2)을 각 데이터 저장 장치(200과 300)로 출력한다. 따라서, 각 데이터 저장 장치(200과 300)는, 각 로그 시작 명령(SWCL1과 SWCL2)에 응답하여, 라이트 명령에 대한 로그의 생성을 준비(또는 시작)할 수 있다.
즉, RAID 컨트롤러(112)는 각 로그 종료 명령(FWCL1과 FWCL2)의 출력 시점을 적절히 조절할 수 있는 효과가 있다.
실시 예들에 따라, RAID 컨트롤러(112)는 로그 종료 명령과 로그 시작 명령의 기능을 동시에 수행할 수 있는 하나의 명령을 출력할 수 있다. 따라서, 각 데이터 저장 장치(200과 300)는, 상기 하나의 명령에 응답하여, 각 라이트 명령 로그를 삭제하고 곧바로 새로운 라이트 명령에 대한 로그의 생성을 준비할 수 있다.
도 14는 도 1에 도시된 RAID 시스템의 작동의 일 실시 예를 설명하는 플로우차트이다. RAID 시스템(100A)에서 SPO가 발생하고 재부팅될 때, RAID 시스템(100A)의 작동은 도 1, 도 2, 도 4, 및 도 14를 참조하여 예시적으로 설명된다.
RAID 시스템(100A)에서 SPO가 발생하고, RAID 시스템(100A)은 재부팅된다 (S210). RAID 컨트롤러(112)는 각 로그 리드 명령(RWCL1과 RWCL2)을 각 데이터 저장 장치(200과 300)로 출력한다(S220).
RAID 컨트롤러(112)는 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))를 각 데이터 저장 장치(200과 300)로부터 수신한다(S230).
RAID 컨트롤러(112)는, 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))에 기초하여, 각 LBA100에 대한 각 데이터(RD100과 RD100)를 각 데이터 저장 장치 (200과 300)로부터 리드하고, 리드된 각 데이터(RD100과 RD100)를 서로 비교한다 (S240). 리드된 각 데이터(RD100과 RD100)가 같으면(S250), RAID 컨트롤러(112)는, 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))에 기초하여, LBA100가 재동기화 작동을 위한 마지막 LBA인지를 판단한다(S254).
LBA100가 마지막 LBA가 아니므로(S254), 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))에 기초하여, 각 LBA210에 대한 각 데이터(RD210과 RD210')를 각 데이터 저장 장치(200과 300)로부터 리드하고, 리드된 각 데이터(RD210과 RD210')를 서로 비교한다(S240). 리드된 각 데이터(RD210과 RD210')가 다르므로(S250), RAID 컨트롤러(112)는 제1데이터 저장 장치(200)에 저장된 데이터(즉, 라이트 명령 (W210)에 포함된 라이트 데이터)를 제2데이터 저장 장치(300)로 카피한다(S252). 즉, RAID 컨트롤러(112)는 데이터 복구 작동을 수행한다(S252).
데이터 복구 작동이 완료된 후, RAID 컨트롤러(112)는, 각 라이트 명령 로그(WL1(100,210)과 WL2(100,210))에 기초하여, LBA210이 마지막 LBA인지를 판단한다(S254). LBA210이 재동기화 작동을 위한 마지막 LBA이므로, 데이터 복구 과정은 종료된다(S260). 도 9에 도시된 RAID 시스템(100B)의 작동은 도 1에 도시된 RAID 시스템(100A)의 작동과 실질적으로 동일 또는 유사하므로, 도 14에 도시된 플로우차트는 도 9에 도시된 RAID 시스템(100B)에 적용될 수 있다.
도 15는 도 1에 도시된 RAID 시스템의 작동의 다른 실시 예를 설명하는 플로우차트이다.
도 1과 도 15를 참조하면, 제1데이터 저장 장치(200)는, RAID 컨트롤러(112)로부터 출력된 제1로그 시작 명령(SWCL1)에 응답하여, 제1라이트 명령들에 대한 제1라이트 명령 로그(WL1)를 생성하고, 생성된 제1라이트 명령 로그(WL1)를 제1휘발성 메모리(204-1)에 저장한다(S310).
제2데이터 저장 장치(300)는, RAID 컨트롤러(112)로부터 출력된 제2로그 시작 명령(SWCL2)에 응답하여, 제2라이트 명령들에 대한 제2라이트 명령 로그(WL2)를 생성하고, 생성된 제2라이트 명령 로그(WL2)를 제2휘발성 메모리(204-2)에 저장한다(S320).
실시 예들에 따라, S310 단계와 S320 단계는 동시에 수행될 수도 있다.
다른 실시 예들에 따라, S320 단계가 S310 단계보다 먼저 수행될 수도 있다.
RAID 시스템(100A)에서 SPO가 발생하고, RAID 시스템(100A)은 재부팅된다 (S330).
SPO가 발생하면, 제1메모리 컨트롤러(202-1)는 제1휘발성 메모리(204-1)에 저장된 제1라이트 명령 로그(WL1)를 제1커패시터(C1)에 저장된 전압을 이용하여 제1불휘발성 메모리(206-1)로 저장한다. 또한, SPO가 발생하면, 제2메모리 컨트롤러 (202-2)는 제2휘발성 메모리(204-2)에 저장된 제2라이트 명령 로그(WL2)를 제2커패시터(C2)에 저장된 전압을 이용하여 제2불휘발성 메모리(206-2)로 저장한다.
제1데이터 저장 장치(200)는, RAID 컨트롤러(112)로부터 출력된 제1로그 리드 명령(RWCL1)에 응답하여, 제1불휘발성 메모리(206-1)에 저장된 제1라이트 명령 로그(WL1)를 RAID 컨트롤러(112)로 전송한다(S340).
또한, 제2데이터 저장 장치(300)는, RAID 컨트롤러(112)로부터 출력된 제2로그 리드 명령(RWCL2)에 응답하여, 제2불휘발성 메모리(206-2)에 저장된 제2라이트 명령 로그(WL2)를 RAID 컨트롤러(112)로 전송한다(S340).
RAID 컨트롤러(112)는, 제1라이트 명령 로그(WL1) 및/또는 제2라이트 명령 로그(WL2)를 이용하여, 재동기화 작동을 수행한다(S350). 즉, 제1데이터 저장 장치 (200)에 저장된 최신 데이터는 제2데이터 저장 장치(300)로 전송되고, 제2데이터 저장 장치(300)에 저장된 최신 데이터는 제1데이터 저장 장치(300)로 전송된다.
도 16은 도 1 또는 도 9에 도시된 RAID 시스템은 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 16을 참조하면, 데이터 처리 시스템(400)은 클라이언트 컴퓨터(410), 웹서버(420), 네트워크(430), 데이터 처리 장치(440)를 포함한다. 데이터 처리 장치 (440)는 데이터베이스 서버(442)와 데이터베이스(444)를 포함한다.
예컨대, 데이터 서버 시스템(400)은 서치 포탈(search portal) 또는 IDC (Internet data center)를 의미할 수 있다.
클라이언트 컴퓨터(410)는 네트워크를 통해 웹 서버(420)와 데이터를 주거나 받을 수 있다. 클라이언트 컴퓨터(410)는 PC(personal computer), 랩탑 컴퓨터 (laptop computer), 스마트폰, 태블릿(tablet) PC, PDA(personal digital assistant), 모바일 인터넷 장치(mobile internet device(MID)) 또는 웨어러블 컴퓨터로 구현될 수 있다.
웹 서버(420)는 네트워크(430)를 통해 데이터베이스 서버(442)와 명령 및/또는 데이터를 주거나 받을 수 있다. 데이터베이스 서버(442)는 도 1 또는 도 9에 도시된 제어 장치(110)의 기능을 수행할 수 있다. 또한, 데이터베이스 서버(442)는 도 1에 도시된 제어 장치(110)와 명령 및/또는 데이터를 주거나 받을 수 있는 호스트의 기능을 수행할 수 있다.
데이터베이스 서버(442)는 데이터베이스(444)의 작동을 제어할 수 있다. 데이터베이스 서버(442)는 데이터베이스(444)를 액세스할 수 있다.
데이터베이스(444)는 복수의 RAID 시스템들(100A 또는 100B, 집합적으로 "100")을 포함할 수 있다.
웹 서버(420)와 데이터베이스 서버(442)는 네트워크(430)를 통해 명령 및/또는 데이터를 주거나 받을 수 있다. 네트워크(430)는 유선 네트워크, 무선 네트워크, 인터넷(internet), 인트라넷(intranet), 또는 이동 전화 네트워크를 의미할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100B; RAID 시스템
110; 제어 장치
112; RAID 컨트롤러
112-1; 데이터 복구 매니저
112-2; 라이트 명령 로그 컨트롤러
202-1, 202-2; 메모리 컨트롤러
204-1, 204-2; 휘발성 메모리
206-1, 206-2; 불휘발성 메모리
C1; 제1커패시터
C2; 제2커패시터
200; 제1데이터 저장 장치
300; 제2데이터 저장 장치
400; 데이터 처리 시스템
410; 클라이언트 컴퓨터
420; 웹서버
430; 네트워크
440; 데이터 처리 장치
442; 데이터베이스 서버
444; 데이터베이스

Claims (20)

  1. 데이터 저장 장치의 작동 방법에 있어서,
    컨트롤러로부터 전송된 로그 시작 명령을 수신하는 단계;
    상기 로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 라이트 명령들에 대한 로그를 생성하는 단계;
    생성된 로그를 메모리에 저장하는 단계;
    상기 컨트롤러로부터 전송된 로그 리드 명령을 수신하는 단계; 및
    상기 로그 리드 명령에 응답하여, 상기 메모리에 저장된 상기 로그를 상기 컨트롤러로 전송하는 단계를 포함하는 데이터 저장 장치의 작동 방법.
  2. 제1항에 있어서,
    상기 데이터 저장 장치는 하드디스크 드라이브(hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나인 데이터 저장 장치의 작동 방법.
  3. 제1항에 있어서, 상기 로그를 생성하는 단계는,
    상기 라이트 명령들 각각을 파싱(parsing)하는 단계; 및
    파싱된 라이트 명령들 각각에 포함된 논리 블록 어드레스(logical block address(LBA))와 섹터 카운트를 포함하는 상기 로그를 생성하는 단계를 포함하는 데이터 저장 장치의 작동 방법.
  4. 제1항에 있어서,
    상기 메모리는 휘발성 메모리와 불휘발성 메모리 중에서 어느 하나인 데이터 저장 장치의 작동 방법.
  5. 제1항에 있어서, 상기 저장하는 단계는,
    상기 데이터 저장 장치에 SPO(sudden power off)가 발생할 때, 상기 데이터 저장 장치에 포함된 커패시터를 이용하여, 휘발성 메모리에 저장된 상기 로그를 상기 메모리에 저장하고,
    상기 메모리는 불휘발성 메모리인 데이터 저장 장치의 작동 방법.
  6. 제1항에 있어서,
    상기 로그 리드 명령은 상기 데이터 저장 장치가 SPO에 따라 재부팅된 후 입력되는 데이터 저장 장치의 작동 방법.
  7. 컨트롤러와 제1데이터 저장 장치를 포함하는 RAID(redundant array of independent disks) 시스템의 작동 방법에 있어서,
    상기 제1데이터 저장 장치가 상기 컨트롤러로부터 전송된 제1로그 시작 명령을 수신하는 단계;
    상기 제1데이터 저장 장치가, 상기 제1로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 제1라이트 명령들에 대한 제1로그를 생성하는 단계;
    상기 제1데이터 저장 장치가 생성된 제1로그를 제1메모리에 저장하는 단계;
    상기 제1데이터 저장 장치가, 상기 제1데이터 저장 장치의 SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제1로그 리드 명령을 수신하는 단계; 및
    상기 제1데이터 저장 장치가, 상기 제1로그 리드 명령에 응답하여, 상기 제1메모리에 저장된 상기 제1로그를 상기 컨트롤러로 전송하는 단계를 포함하는 RAID 시스템의 작동 방법.
  8. 제7항에 있어서,
    상기 컨트롤러는 CPU에서 실행되는 소프트웨어 RAID 컨트롤러인 RAID 시스템의 작동 방법.
  9. 제7항에 있어서,
    상기 컨트롤러는 RAID 컨트롤러 카드에 구현된 하드웨어 RAID 컨트롤러인 RAID 시스템의 작동 방법.
  10. 제7항에 있어서, 상기 제1로그를 생성하는 단계는,
    상기 제1데이터 저장 장치가 상기 제1라이트 명령들 각각을 파싱(parsing)하는 단계; 및
    상기 제1데이터 저장 장치가 파싱된 제1라이트 명령들 각각에 포함된 논리 블록 어드레스(logical block address(LBS))와 섹터 카운트를 포함하는 상기 제1로그를 생성하는 단계를 포함하는 RAID 시스템의 작동 방법.
  11. 제7항에 있어서,
    상기 RAID 시스템은 제2데이터 저장 장치를 더 포함하고,
    상기 컨트롤러는 상기 제1데이터 저장 장치로만 상기 제1로그 시작 명령을 전송하는 RAID 시스템의 작동 방법.
  12. 제11항에 있어서,
    상기 컨트롤러가 수신된 제1로그에 기초하여 상기 제1데이터 저장 장치에 저장되고 상기 제1라이트 명령들에 관련된 데이터를 상기 제2데이터 저장 장치로 카피하는 단계를 더 포함하는 RAID 시스템의 작동 방법.
  13. 제7항에 있어서,
    상기 RAID 시스템은 제2데이터 저장 장치를 더 포함하고,
    상기 RAID 시스템의 작동 방법은,
    상기 제2데이터 저장 장치가 상기 컨트롤러로부터 전송된 제2로그 시작 명령을 수신하는 단계;
    상기 제2데이터 저장 장치가, 상기 제2로그 시작 명령에 응답하여, 상기 컨트롤러로부터 전송된 제2라이트 명령들에 대한 제2로그를 생성하는 단계;
    상기 제2데이터 저장 장치가 생성된 제2로그를 제2메모리에 저장하는 단계;
    상기 제2데이터 저장 장치가, 상기 제2데이터 저장 장치의 SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제2로그 리드 명령을 수신하는 단계; 및
    상기 제2데이터 저장 장치가, 상기 제2로그 리드 명령에 응답하여, 상기 제2메모리에 저장된 상기 제2로그를 상기 컨트롤러로 전송하는 단계를 더 포함하는 RAID 시스템의 작동 방법.
  14. 제13항에 있어서,
    상기 컨트롤러가 수신된 제1로그에 기초하여 상기 제1데이터 저장 장치에 저장되고 상기 제1라이트 명령들에 관련된 데이터를 상기 제2데이터 저장 장치로 카피하는 단계; 및
    상기 컨트롤러가 수신된 제2로그에 기초하여 상기 제2데이터 저장 장치에 저장되고 상기 제2라이트 명령들에 관련된 데이터를 상기 제1데이터 저장 장치로 카피하는 단계를 더 포함하는 RAID 시스템의 작동 방법.
  15. 제13항에 있어서,
    상기 제1데이터 저장 장치와 상기 제2데이터 저장 장치 각각은 하드디스크 드라이브(hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나인 RAID 시스템의 작동 방법.
  16. 제13항에 있어서,
    상기 제1데이터 저장 장치는 하드디스크 드라이브(hard disc drive(HDD))와 솔리드 스테이트 드라이브(solid state drive(SSD)) 중에서 어느 하나이고,
    상기 제2데이터 저장 장치는 상기 HDD와 상기 SSD 중에서 다른 하나인 RAID 시스템의 작동 방법.
  17. 제13항에 있어서,
    상기 컨트롤러는 상기 제1로그 시작 명령과 상기 제2로그 시작 명령을 서로 다른 시점에 생성하는 단계를 더 포함하는 RAID 시스템의 작동 방법.
  18. 제13항에 있어서,
    상기 컨트롤러는 상기 제1라이트 명령들 각각과 상기 제2라이트 명령들 각각을 서로 다른 시점에 생성하는 단계를 더 포함하는 RAID 시스템의 작동 방법.
  19. 제13항에 있어서,
    상기 RAID 시스템은 미러링 RAID 시스템과 패리티 RAID 시스템 중에서 어느 하나인 RAID 시스템의 작동 방법.
  20. 컨트롤러, 제1데이터 저장 장치, 및 제2데이터 저장 장치를 포함하는 RAID 시스템의 작동 방법에 있어서,
    상기 제1데이터 저장 장치가, 상기 컨트롤러로부터 전송된 제1로그 시작 명령에 기초하여, 상기 컨트롤러로부터 전송된 제1라이트 명령들에 대한 제1로그를 생성하고 생성된 제1로그를 제1메모리에 저장하는 단계;
    상기 제2데이터 저장 장치가, 상기 컨트롤러로부터 전송된 제2로그 시작 명령에 기초하여, 상기 컨트롤러로부터 전송된 제2라이트 명령들에 대한 제2로그를 생성하고 생성된 제2로그를 제2메모리에 저장하는 단계;
    상기 제1데이터 저장 장치가, 상기 제1데이터 저장 장치의 제1SPO(sudden power off)에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제1로그 리드 명령에 기초하여 상기 제1메모리에 저장된 상기 제1로그를 상기 컨트롤러로 전송하는 단계; 및
    상기 제2데이터 저장 장치가, 상기 제2데이터 저장 장치의 제2SPO에 따라 재부팅된 후, 상기 컨트롤러로부터 전송된 제2로그 리드 명령에 기초하여 상기 제2메모리에 저장된 상기 제2로그를 상기 컨트롤러로 전송하는 단계를 포함하는 RAID 시스템의 작동 방법.
KR1020140124532A 2014-09-18 2014-09-18 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법 KR20160033519A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140124532A KR20160033519A (ko) 2014-09-18 2014-09-18 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법
US14/800,728 US20160085445A1 (en) 2014-09-18 2015-07-16 Method operating raid system and data storage systems using write command log

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140124532A KR20160033519A (ko) 2014-09-18 2014-09-18 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법

Publications (1)

Publication Number Publication Date
KR20160033519A true KR20160033519A (ko) 2016-03-28

Family

ID=55525752

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140124532A KR20160033519A (ko) 2014-09-18 2014-09-18 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법

Country Status (2)

Country Link
US (1) US20160085445A1 (ko)
KR (1) KR20160033519A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791731A (zh) * 2021-08-26 2021-12-14 深圳创云科软件技术有限公司 一种解决存储磁盘阵列Write Hole的处理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9489226B2 (en) * 2014-06-06 2016-11-08 PernixData, Inc. Systems and methods to manage write commands in a cache
CN106293832B (zh) * 2016-08-09 2020-01-14 上海盈方微电子有限公司 一种soc芯片引导启动方法及系统
US10789130B1 (en) 2018-03-09 2020-09-29 Toshiba Memory Corporation Capacitor energy management for unexpected power loss in datacenter SSD devices
US11599403B2 (en) * 2018-10-03 2023-03-07 SK Hynix Inc. Logging mechanism for memory system
CN109614042B (zh) * 2018-11-30 2022-09-02 维沃移动通信有限公司 一种存储日志信息的方法及终端设备
CN109933292B (zh) * 2019-03-21 2023-06-09 深圳文脉国际传媒有限公司 存储器命令处理方法、终端及存储介质
US11294807B2 (en) * 2019-06-25 2022-04-05 Western Digital Technologies, Inc. Delayed write failure logging
KR20210095761A (ko) * 2020-01-23 2021-08-03 삼성전자주식회사 호스트로부터 오프로드된 작업을 수행하는 스토리지 장치 및 스토리지 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606694B2 (en) * 2000-12-22 2003-08-12 Bull Hn Information Systems Inc. Write logging in mirrored disk subsystems
US7194640B2 (en) * 2003-12-08 2007-03-20 Lsi Logic Corporation Alternate non-volatile memory for robust I/O
US7769947B2 (en) * 2005-09-30 2010-08-03 Intel Corporation Management of data redundancy based on power availability in mobile computer systems
US20090204758A1 (en) * 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
JP5377175B2 (ja) * 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791731A (zh) * 2021-08-26 2021-12-14 深圳创云科软件技术有限公司 一种解决存储磁盘阵列Write Hole的处理方法

Also Published As

Publication number Publication date
US20160085445A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
KR20160033519A (ko) 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법
KR102168838B1 (ko) 저장 장치들에 대한 매핑 테이블들
US9135119B1 (en) System and method for data management
US7366846B2 (en) Redirection of storage access requests
US20150301749A1 (en) Storage controller, storage system and method of operating storage controller
EP2557494B1 (en) Storage apparatus and data copy method between thin-provisioning virtual volumes
EP2849048A1 (en) Data sending method, data receiving method and storage device
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
KR20170088743A (ko) 이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들
US7930496B2 (en) Processing a read request to a logical volume while relocating a logical volume from a first storage location to a second storage location using a copy relationship
US20170228156A1 (en) Raid set initialization
KR20140113211A (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
US20120272114A1 (en) Memory controller, memory system, and operating method
US20190317872A1 (en) Database cluster architecture based on dual port solid state disk
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
US10664193B2 (en) Storage system for improved efficiency of parity generation and minimized processor load
US20180165020A1 (en) Variable cache flushing
TW202401255A (zh) 獨立磁碟冗餘陣列系統、獨立磁碟冗餘陣列系統的記憶體映射模組以及獨立磁碟冗餘陣列系統的方法
US20150161009A1 (en) Backup control device, backup control method, disk array apparatus, and storage medium
KR102277731B1 (ko) 스토리지 시스템의 구동 방법 및 스토리지 컨트롤러
KR20210131058A (ko) 메모리 시스템 내 데이터를 보호하는 장치 및 방법
US9779002B2 (en) Storage control device and storage system
JP5691227B2 (ja) ストレージ装置及びその制御方法
CN111752475A (zh) 在存储服务器中进行数据存取管理的方法与装置
KR20210056625A (ko) 데이터 저장 장치 및 이를 이용한 스토리지 시스템

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid