KR20200035592A - 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 - Google Patents

스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR20200035592A
KR20200035592A KR1020180114813A KR20180114813A KR20200035592A KR 20200035592 A KR20200035592 A KR 20200035592A KR 1020180114813 A KR1020180114813 A KR 1020180114813A KR 20180114813 A KR20180114813 A KR 20180114813A KR 20200035592 A KR20200035592 A KR 20200035592A
Authority
KR
South Korea
Prior art keywords
data
disks
target
disk
journal
Prior art date
Application number
KR1020180114813A
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 KR1020180114813A priority Critical patent/KR20200035592A/ko
Priority to CN201910455931.3A priority patent/CN110955610A/zh
Priority to EP19177544.4A priority patent/EP3629142A3/en
Priority to US16/444,998 priority patent/US11487663B2/en
Priority to SG10201907405QA priority patent/SG10201907405QA/en
Publication of KR20200035592A publication Critical patent/KR20200035592A/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/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0614Improving the reliability of storage systems
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

스토리지 장치의 구동 방법에서, 스토리지 장치는 복수의 디스크(disk)들을 포함한다. 복수의 디스크들 모두를 각각 저널(journal) 영역 및 데이터 영역으로 구분한다. 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행한다. 제1 기입 동작이 완료된 이후에, 목표 데이터를 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행한다.

Description

스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템{METHOD OF OPERATING STORAGE DEVICE, STORAGE DEVICE PERFORMING THE SAME AND STORAGE SYSTEM INCLUDING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 스토리지 장치의 구동 방법, 상기 구동 방법을 수행하는 스토리지 장치 및 상기 스토리지 장치를 포함하는 스토리지 시스템에 관한 것이다.
스토리지 시스템(storage system)은 호스트 장치(host device) 및 스토리지 장치(storage device)를 포함한다. 스토리지 장치는 메모리 컨트롤러와 메모리 장치를 포함하는 메모리 시스템 또는 메모리 장치만을 포함하여 구현될 수 있다. 스토리지 시스템 내에서 호스트와 스토리지 장치는 UFS(universal flash storage), SATA(serial ATA), SCSI(small computer small interface), SAS(serial attached SCSI), eMMC(embedded MMC) 등과 같은 다양한 인터페이스 표준을 통해 서로 연결된다.
최근, 많은 스토리지 시스템들은 데이터 내구성 및 성능을 위해 저널링(journaling) 기법을 사용하고 있다. 저널링 기법을 사용하는 스토리지 시스템은 두 개의 데이터 복사본을 저장하며, 예를 들어 하나의 복사본은 저널 영역에 저장되고 다른 하나의 복사본은 데이터 영역에 저장된다. 이 때, 저널 영역을 형성하기 위해 추가적인 장치가 요구되는 문제가 있었다.
본 발명의 일 목적은 데이터 기입 시에 발생할 수 있는 라이트-홀(write-hole) 문제를 방지할 수 있는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 구동 방법을 수행하여 데이터 기입 시에 발생할 수 있는 라이트-홀 문제를 방지할 수 있는 스토리지 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 스토리지 장치를 포함하는 스토리지 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 스토리지 장치는 복수의 디스크(disk)들을 포함한다. 상기 복수의 디스크들 모두를 각각 저널(journal) 영역 및 데이터 영역으로 구분한다. 상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 상기 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행한다. 상기 제1 기입 동작이 완료된 이후에, 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 각각 저널(journal) 영역 및 데이터 영역으로 구분되는 복수의 디스크(disk)들을 포함한다. 상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 상기 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행한다. 상기 제1 기입 동작이 완료된 이후에, 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행한다.
상기 또 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 시스템은 호스트 장치 및 스토리지 장치를 포함한다. 상기 스토리지 장치는 상기 호스트 장치에 의해 액세스되고, 각각 저널(journal) 영역 및 데이터 영역으로 구분되는 복수의 디스크(disk)들을 포함한다. 상기 호스트 장치로부터 기입 커맨드 및 기입하고자 하는 목표 데이터가 제공되는 경우에, 상기 스토리지 장치는 상기 목표 데이터를 상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행하고, 상기 제1 기입 동작이 완료된 이후에 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행한다.
상기와 같은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법, 스토리지 장치 및 스토리지 시스템에서는, 각 디스크 내에 자기 자신을 위한 저널 영역을 형성하는 인-디스크 저널링 기법을 구현함으로써, 추가적인 장치 없이 저널링 기법을 이용할 수 있으며, 전원 장애 및/또는 디스크 장애 발생 시에 재기입 또는 데이터 리커버리 동작을 효과적으로 수행함으로써, 스토리지 장치의 성능 및 데이터 안정성을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 일 예를 나타내는 도면이다.
도 4는 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 일 예를 나타내는 순서도이다.
도 5a, 5b, 5c, 5d 및 6은 도 4의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다.
도 7은 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 다른 예를 나타내는 순서도이다.
도 8 및 9는 도 7의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다.
도 10은 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 또 다른 예를 나타내는 순서도이다.
도 11은 도 10의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 13은 도 12의 스토리지 장치의 구동 방법에서 재기입 동작을 수행하는 일 예를 나타내는 순서도이다.
도 14a, 14b, 14c 및 15는 도 13의 재기입 동작을 설명하기 위한 도면들이다.
도 16은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 다른 예를 나타내는 도면이다.
도 17은 도 12의 스토리지 장치의 구동 방법에서 재기입 동작을 수행하는 다른 예를 나타내는 순서도이다.
도 18a, 18b 및 18c는 도 17의 재기입 동작을 설명하기 위한 도면들이다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 20은 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 일 예를 나타내는 순서도이다.
도 21a, 21b 및 21c는 도 20의 데이터 리커버리 동작을 설명하기 위한 도면들이다.
도 22는 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 다른 예를 나타내는 순서도이다.
도 23a, 23b 및 23c는 도 22의 데이터 리커버리 동작을 설명하기 위한 도면들이다.
도 24는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 또 다른 예를 나타내는 도면이다.
도 25는 도 24의 저널 영역에 포함되는 메타 블록의 일 예를 나타내는 도면이다.
도 26은 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 또 다른 예를 나타내는 순서도이다.
도 27a, 27b 및 27c는 도 26의 데이터 리커버리 동작을 설명하기 위한 도면들이다.
도 28은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 29는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 구동 방법을 수행하는 스토리지 장치는 복수의 디스크(disk)들을 포함한다. 상기 복수의 디스크들은 각각 독립적인 저장 공간을 형성한다.
또한, 상기 스토리지 장치는 RAID(Redundant Array of Independent Disks) 구성을 가질 수 있다. RAID 구성은 여러 개의 독립적인 디스크들을 모아서 하나의 스토리지 장치를 형성하고 데이터를 각 디스크들에 분산하여 저장하는 것을 나타낸다. 호스트 장치에서는 여러 개의 독립적인 디스크들이 마치 하나의 디스크처럼 보이게 함으로써 대용량 스토리지 장치의 구현이 가능하고, 각 디스크들에 대한 데이터의 입출력이 동시에 수행됨으로써 데이터 입출력 속도를 향상시킬 수 있다. 또한, 각 디스크들에 저장되는 실제 데이터들에 대한 패리티(parity) 데이터를 함께 저장함으로써, 일부 디스크에 물리적인 에러가 발생하는 경우에도 패리티 데이터를 사용하여 손상된 데이터를 복구할 수 있으므로, 데이터 안정성을 향상시킬 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 복수의 디스크들 모두를 각각 저널(journal) 영역 및 데이터 영역으로 구분한다(단계 S100). 다시 말하면, 상기 복수의 디스크들 각각은 자기 자신에 기록될(즉, 자기 자신을 위한) 기입 저널(write journal)을 내부적으로 가질 수 있다.
일 실시예에서, 상기 스토리지 장치의 제조 시 또는 최초 구동 시에 단계 S100이 수행되어 상기 저널 영역 및 상기 데이터 영역이 각 디스크에 설정되며, 이후 구동 시에는 설정 결과를 로딩하여 동작할 수 있다.
상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 상기 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행한다(단계 S200). 상기 제1 기입 동작이 완료된 이후에, 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행한다(단계 S300). 다시 말하면, 상기 목표 데이터를 상기 저널 영역들에 먼저 기입하고, 상기 저널 영역들에 대한 기입이 완료된 이후에 상기 목표 데이터를 상기 데이터 영역들의 최종 위치(final location)에 기입할 수 있다.
상기 제2 기입 동작이 완료된 이후에, 상기 목표 디스크들의 저널 영역들의 상기 목표 데이터를 해제할 수 있다(단계 S400). 상기 제2 기입 동작이 정상적으로 완료되었다면, 상기 목표 디스크들의 저널 영역들의 상기 목표 데이터는 더 이상 필요하지 않으며, 따라서 상기 저널 영역들에서 상기 목표 데이터를 해제할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치는 저널링(journaling) 기법에 기초하여 구동된다. 저널링 기법 또는 저널링 파일 시스템에서는, 저널이라는 영역을 예비해 놓은 다음에, 특정한 기입 작업이 발생되면 데이터나 메타 데이터를 스토리지 장치 내의 저장하고자 하는 위치에 바로 저장하지 않고, 먼저 저널 영역에 저장한다. 하나의 기입 작업에 연관된 모든 데이터와 메타 데이터를 저널 영역에 몰아서 저장해두고, 이 데이터와 메타 데이터의 스트림을 트랜잭션(transaction)이라는 단위로 묶어 둔다. 이러한 식으로, 몇 개의 트랜잭션을 저널 영역에 기입한 후, 백그라운드 작업을 통해 완벽하게 저널 영역에 쓰여진 특정 트랜잭션을 스토리지 장치의 저장하고자 하는 위치(즉, 데이터 영역의 최종 위치)에 기입한다. 데이터 영역에도 모두 잘 저장되었다면, 다음 기입 작업이 필요로 하는 저널 영역의 공간을 위해 그 트랜잭션을 저널 영역에서 삭제한다.
상기와 같은 저널링 기법을 이용하는 경우에, 전원 장애(power failure)가 일어난 경우에도 스토리지 장치의 일관성(consistency)을 유지할 수 있다. 예를 들어, 기입 작업 도중에 전원 장애에 의해 작업이 중단되었다면, 그 결과가 각각 데이터 영역과 저널 영역에 남아 있을 것이다. 데이터 영역에 쓰여지다가 중단된 작업은 저널링 파일 시스템에 의하면, 분명 저널 영역에 완벽하게 써진 트랜잭션 형태로 존재하는 작업일 수 있다. 재부팅 혹은 재마운트 시에 저널 영역을 스캔함으로써, 빠른 시간에 중단된 기입 작업을 완료할 수 있다. 한편, 저널 영역에 저장하다가 중단된 작업도 있을 수 있다. 이 경우, 불완전한 트랜잭션이 저널 영역에 저장되다가 만 형태로 남아 있을 것이다. 이러한 트랜잭션의 경우는 재부팅 혹은 재마운트 시에 무시함으로써, 파일 시스템에 일관성을 가져올 수 있다. 다시 말하면, 전원 장애 시에 나타날 수 있는 모든 케이스에 대해 회복 혹은 일관성을 해치지 않도록 무시하는 방법을 취함으로써, 일관성을 유지할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에 따르면, 각 디스크 내에 자기 자신을 위한 저널 영역을 형성하는 인-디스크(in-disk) 저널링 기법을 구현함으로써, 추가적인 장치 없이 저널링 기법을 이용할 수 있으며, 전원 장애 및/또는 디스크 장애(disk failure) 발생 시에 재기입(replay write) 또는 데이터 리커버리(recovery) 동작을 효과적으로 수행함으로써, 스토리지 장치의 성능 및 데이터 안정성을 향상시킬 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 스토리지 시스템(100)의 전반적인 동작을 제어하며, 프로세서(210) 및 호스트 메모리(220)를 포함할 수 있다.
프로세서(210)는 호스트 장치(200)의 동작을 제어할 수 있다. 예를 들어, 프로세서(210)는 운영 체제(operating system; OS)를 실행할 수 있다. 상기 운영 체제는 파일 관리를 위한 파일 시스템, 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버를 포함할 수 있다. 예를 들어, 프로세서(210)는 CPU(Central Processing Unit)와 같은 임의의 프로세서를 포함할 수 있다.
호스트 메모리(220)는 프로세서(210)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 호스트 메모리(220)는 상대적으로 빠른 동작 속도를 갖는 메모리 장치로 구현될 수 있다. 예를 들어, 호스트 메모리(220)는 DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리 장치를 포함할 수 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스되고, 복수의 디스크들(310, 320, ..., 330)을 포함한다. 복수의 디스크들(310~330) 모두는 각각 저널 영역(JA) 및 데이터 영역(DA)으로 구분된다. 상술한 것처럼, 데이터 영역(DA)은 데이터를 실제로 저장하고자 하는 영역이고, 저널 영역(JA)은 상기 데이터를 데이터 영역(DA)에 저장하기 전에 예비적으로 저장하는 저널링 기법을 위한 영역이다. 예를 들어, 데이터 영역(DA)의 크기는 저널 영역(JA)의 크기보다 클 수 있다.
복수의 디스크들(310~330) 각각은 독립적인 저장 공간일 수 있다. 복수의 디스크들(310~330) 각각은 호스트 장치(200)에 의해 블록 단위로 액세스되는 메모리 장치로 구현될 수 있다. 예를 들어, 복수의 디스크들(310~330) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 비휘발성 메모리 장치를 포함할 수 있다.
일 실시예에서, 복수의 디스크들(310~330) 각각은 하나의 비휘발성 메모리 장치만을 포함할 수 있다. 다른 실시예에서, 복수의 디스크들(310~330) 각각은 복수의 비휘발성 메모리 장치들 및 이를 제어하는 메모리 컨트롤러를 포함할 수 있다. 예를 들어, 복수의 디스크들(310~330) 각각은 SSD(Solid State Drive), MMC(Multi Media Card), eMMC(embedded MMC), UFS(Universal Flash Storage) 또는 이와 유사한 형태로 구현될 수 있다.
호스트 장치(200)로부터 기입 커맨드(WCMD), 기입 주소(WADDR) 및 기입하고자 하는 목표 데이터(WDAT)가 제공되는 경우에, 스토리지 장치(300)는 목표 데이터(WDAT)를 동일 어레이에 포함되는 목표 디스크들의 저널 영역들(JA)에 저장하는 제1 기입 동작을 수행하고, 상기 제1 기입 동작이 완료된 이후에 목표 데이터(WDAT)를 상기 목표 디스크들의 데이터 영역들(DA)에 저장하는 제2 기입 동작을 수행한다. 스토리지 장치(300)는 상기 제2 기입 동작이 완료된 이후에, 상기 목표 디스크들의 저널 영역들(JA)의 목표 데이터(WDAT)를 해제할 수 있다. 다시 말하면, 호스트 장치(200)로부터의 요청에 기초하여 스토리지 장치(300)는 도 1의 단계 S200, S300 및 S400을 수행할 수 있다.
일 실시예에서, 스토리지 장치(300)는 SATA(Serial Advanced Technology Attachment) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 도 2에 도시된 스토리지 시스템(100)은 별도의 RAID 컨트롤러 없이 호스트 장치(200)의 상기 운영 체제 상에서 RAID 구성을 구현하는 소프트웨어 RAID 시스템일 수 있다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 일 예를 나타내는 도면이다.
도 3에서는 네 개의 디스크들(예를 들어, 도 5a의 DISK1, DISK2, DISK3, DISK4)에 포함되는 네 개의 저널 영역들(JA1, JA2, JA3, JA4)을 도시하고 있다. 이하에서, 네 개의 디스크들이 하나의 어레이(즉, 디스크들의 묶음)를 형성하고 하나의 어레이에 포함되는 네 개의 디스크들에 대해 기입 동작을 한 번에 수행하는 경우, 즉 상기 목표 디스크들이 네 개의 디스크들을 포함하는 경우에 기초하여 본 발명의 실시예들을 설명하도록 한다.
도 3을 참조하면, 저널 영역들(JA1~JA4)은 슈퍼 블록(superblock)들(SB1, SB2, SB3, SB4), 메타 블록(metablock)들(MB01, MB02, MB03, MB04, MB11, MB12, MB13, MB14) 및 데이터 블록들(D01, D02, D03, P0, D11, D12, P1, D13, D21, D22, D23, P2, P3, D31, D32, D33, D41, D42, D43, P4, P5, D51, D52, D53, D61, D62, P6, D63)을 포함할 수 있다.
본 명세서에서, 데이터 블록은 저장하고자 하는 실제 데이터를 저장하는 블록 및 상기 실제 데이터에 대한 패리티 데이터를 저장하는 블록 모두를 포괄하는 개념으로 사용될 수 있다. 경우에 따라서, 저장하고자 하는 실제 데이터를 저장하는 블록만을 데이터 블록으로 부르고 패리티 데이터를 저장하는 블록은 패리티 블록으로 부를 수도 있다.
스토리지 장치(300)에 대한 기입 동작은 스트라이프(stripe) 단위로 수행되며, 또한 트랜잭션 단위로 수행될 수 있다. 상기 스트라이프는 상기 목표 디스크들에 한 번에 기입되는 단위를 나타낸다. 상기 트랜잭션은 도 1을 참조하여 상술한 것처럼, 저널링 기법을 구현하기 위해 특정 데이터들을 하나로 묶은 단위를 나타낸다. 하나의 스트라이프는 저장하고자 하는 실제 데이터 및 상기 실제 데이터에 대한 패리티 데이터를 포함할 수 있다. 하나의 트랜잭션은 두 개 이상의 스트라이프들을 포함할 수 있다.
도 3의 예에서, 데이터 블록들(D01, D02, D03, P0)이 스트라이프(STR0)를 형성하고, 데이터 블록들(D11, D12, P1, D13)이 스트라이프(STR1)를 형성하고, 데이터 블록들(D21, D22, D23, P2)이 스트라이프(STR2)를 형성하고, 데이터 블록들(P3, D31, D32, D33)이 스트라이프(STR3)를 형성하고, 데이터 블록들(D41, D42, D43, P4)이 스트라이프(STR4)를 형성하고, 데이터 블록들(P5, D51, D52, D53)이 스트라이프(STR5)를 형성하며, 데이터 블록들(D61, D62, P6, D63)이 스트라이프(STR6)를 형성할 수 있다. 또한, 스트라이프들(STR0, STR1, STR2, STR3)이 트랜잭션(TRS0)을 형성하고, 스트라이프들(STR4, STR5, STR6)이 트랜잭션(TRS1)을 형성할 수 있다. 트랜잭션을 나타내는 참조부호에서 마지막에 기재된 숫자가 트랜잭션 ID(Identification)를 나타낼 수 있다. 트랜잭션 ID는 순차적으로 증가할 수 있다.
슈퍼 블록들(SB1~SB4)은 저널 영역들(JA1~JA4)의 주요 정보를 저장할 수 있다. 예를 들어, 슈퍼 블록들(SB1~SB4)은 저널 영역들(JA1~JA4) 각각에 대하여 재기입 동작의 시작 지점을 나타내는 최초 트랜잭션 관련 정보, 및 크기 정보를 저장할 수 있다. 예를 들어, 상기 최초 트랜잭션 관련 정보는 전원 장애나 시스템 충돌(system crash)에 의한 상기 재기입 동작 수행 시에 유효한 첫 번째 트랜잭션인 상기 최초 트랜잭션의 ID 정보, 및 상기 최초 트랜잭션의 저널 영역 내의 블록 오프셋(block offset)을 나타내는 커밋(commit) 정보를 포함할 수 있다. 하나의 저널 영역은 하나의 슈퍼 블록을 포함할 수 있다.
메타 블록들(MB01~MB14)은 현재 트랜잭션 관련 정보(즉, 해당하는 각 트랜잭션 관련 정보)를 저장하며, 특히 상기 현재 트랜잭션 내에 필요한 정보 및 상기 현재 트랜잭션에 속한 각 블록의 정보를 저장할 수 있다. 예를 들어, 상기 현재 트랜잭션 관련 정보는 현재 트랜잭션의 ID 정보, 최종 위치 블록 주소(final location block address) 정보, 속성(attribute) 정보, 및 메타 데이터와 데이터 블록의 유효성 판단을 위한 체크섬(checksum) 정보를 포함할 수 있다. 하나의 저널 영역 내의 메타 블록들의 개수는 트랜잭션들의 개수와 동일할 수 있다.
데이터 블록들(D01~D63)은 상기 현재 트랜잭션에 대한 데이터를 저장할 수 있다. 예를 들어, 상기 현재 트랜잭션에 대한 데이터는 저장하고자 하는 실제 데이터 및 상기 실제 데이터에 대한 패리티 데이터를 포함할 수 있다. 데이터 블록을 나타내는 참조부호에서 맨 처음 기재된 영문자가 "D", "P"인 경우에 각각 실제 데이터, 패리티 데이터를 나타낼 수 있다.
구체적으로, 제1 슈퍼 블록(SB1)은 제1 저널 영역(JA1)의 주요 정보를 저장할 수 있다. 제1 슈퍼 블록(SB1)은 제1 저널 영역(JA1)에 대한 제1 최초 트랜잭션 관련 정보(즉, 상기 제1 최초 트랜잭션의 ID 정보 및 커밋 정보)와 제1 저널 영역(JA1)의 크기 정보를 포함할 수 있다. 예를 들어, 상기 제1 최초 트랜잭션이 트랜잭션(TRS1)인 경우에, 상기 제1 최초 트랜잭션의 ID 정보는 "1"이고, 상기 제1 최초 트랜잭션의 커밋 정보는 제1 슈퍼 블록(SB1)부터 트랜잭션(TRS1)의 메타 블록(MB11)까지의 블록 개수인 "6"일 수 있다. 이와 유사하게, 제2, 제3 및 제4 슈퍼 블록들(SB2~SB4)은 각각 제2, 제3 및 제4 저널 영역들(JA2~JA4)의 주요 정보를 저장할 수 있다.
메타 블록(MB01)은 트랜잭션(TRS0) 관련 정보를 저장할 수 있다. 메타 블록(MB01)에서, 상기 현재 트랜잭션의 ID 정보는 "0"이고, 상기 현재 트랜잭션의 최종 위치 블록 주소 정보는 제1 저널 영역(JA1)을 포함하는 제1 디스크의 제1 데이터 영역에 데이터 블록들(D01, D11, D21, P3)이 저장될 블록 주소(예를 들어, 물리 블록 주소)를 포함하고, 상기 현재 트랜잭션의 속성 정보는 데이터 블록들(D01, D11, D21, P3)의 속성을 포함하며, 상기 현재 트랜잭션의 체크섬 정보는 데이터 블록들(D01, D11, D21, P3)의 유효성을 판단하기 위한 체크섬을 포함할 수 있다. 이와 유사하게, 메타 블록들(MB02, MB03, MB04)은 트랜잭션(TRS0) 관련 정보를 저장하며, 메타 블록들(MB11, MB12, MB13, MB14)은 트랜잭션(TRS1) 관련 정보를 저장할 수 있다.
일 실시예에서, 상기 동일 어레이에 포함되는 상기 목표 디스크들은 슈퍼 블록들(SB1~SB4) 및 메타 블록들(MB01~MB14)에 저장된 상기 정보들의 적어도 일부를 공유할 수 있다. 예를 들어, 슈퍼 블록들(SB1~SB4) 내의 정보들 중 상기 최초 트랜잭션 관련 정보와, 메타 블록들(MB01~MB14) 내의 정보들 중 상기 현재 트랜잭션의 최종 위치 블록 주소 정보 및 속성 정보를 공유할 수 있다.
다시 말하면, 제1 슈퍼 블록(SB1)은 제1 저널 영역(JA1)에 대한 상기 제1 최초 트랜잭션 관련 정보뿐만 아니라 나머지 저널 영역들(JA2~JA4)에 대한 최초 트랜잭션 관련 정보들을 모두 저장할 수 있다. 또한, 메타 블록(MB01)은 데이터 블록들(D01, D11, D21, P3)에 대한 최종 위치 블록 주소 및 속성뿐만 아니라, 동일 트랜잭션(TRS0) 내의 나머지 데이터 블록들(D02, D12, D22, D31, D03, P1, D23, D32, P0, D13, P2, D33)에 대한 최종 위치 블록 주소 및 속성들을 모두 저장할 수 있다. 이와 같이 공유된 정보들은 전원 장애 및/또는 디스크 장애 발생 이후에 수행되는 재기입 동작 및/또는 데이터 리커버리 동작에서 이용될 수 있으며, 이에 대해서는 후술하도록 한다.
도 4는 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 일 예를 나타내는 순서도이다. 도 5a, 5b, 5c, 5d 및 6은 도 4의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다.
도 1, 4, 5a, 5b, 5c, 5d 및 6을 참조하면, 상기 제1 기입 동작 및 상기 제2 기입 동작을 수행하는데 있어서, 먼저 도 5a에 도시된 것처럼 호스트 장치(200)에 포함되는 호스트 메모리(220)에 기입하고자 하는 목표 데이터(DX1, DX2, DX3, PX)를 준비할 수 있다. 예를 들어, 목표 데이터(DX1, DX2, DX3, PX)는 하나의 스트라이프에 대응할 수 있다.
기입 커맨드(예를 들어, 도 2의 WCMD)에 기초하여, 도 5b에 도시된 것처럼 목표 데이터(DX1, DX2, DX3, PX)를 목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4)에 한 번에 저장하는 상기 제1 기입 동작을 수행한다(단계 S200). 상기 제1 기입 동작 시에 목표 데이터(DX1, DX2, DX3, PX)는 스토리지 장치(300) 외부의 호스트 메모리(220)로부터 제공될 수 있다.
구체적으로, 도 6에 도시된 것처럼 목표 데이터(DX1, DX2, DX3, PX)에 포함되는 제1 데이터(DX1)를 목표 디스크들(DISK1~DISK4) 중 제1 디스크(DISK1)에 포함되는 제1 데이터 블록(D01)에 저장할 수 있다(단계 S210). 제1 데이터 블록(D01)은 물리 블록 주소들(PBA0, PBA1, ..., PBA10, PBA11) 중 제1 물리 블록 주소(PBA0)를 나타낼 수 있다. 또한, 논리 블록 주소들(LBA10, LBA11, ..., LBA1000, LBA1001) 중 제1 논리 블록 주소(LBA10)를 제1 데이터 블록(D01)의 제1 물리 블록 주소(PBA0)와 맵핑할 수 있다(단계 S220). 제1 논리 블록 주소(LBA10)는 제1 디스크(DISK1)의 저널 영역(JA1)을 나타낼 수 있다. 도 6의 화살표 ①이 단계 S210을 나타내고, 도 6의 화살표 ②가 단계 S220을 나타낼 수 있다.
이와 유사하게, 나머지 데이터들(DX2, DX3, PX)을 나머지 디스크들(DISK2~DISK4)의 데이터 블록들에 저장하고, 해당 논리 블록 주소들을 해당 물리 블록 주소들과 맵핑할 수 있다.
상기 제1 기입 동작이 완료된 이후에, 도 5c에 도시된 것처럼 목표 데이터(DX1, DX2, DX3, PX)를 목표 디스크들(DISK1~DISK4)의 데이터 영역들(DA1~DA4)에 한 번에 저장하는 상기 제2 기입 동작을 수행한다(단계 S300). 도 4에서는, 상기 제2 기입 동작 시에 목표 데이터(DX1, DX2, DX3, PX)가 스토리지 장치(300) 외부의 호스트 메모리(220)로부터 제공될 수 있다.
구체적으로, 도 6에 도시된 것처럼 제1 데이터(DX1)를 제1 디스크(DISK1)에 포함되고 제1 데이터 블록(D01)과 구별되는 제2 데이터 블록(DP1)에 저장할 수 있다(단계 S310). 제2 데이터 블록(DP1)은 제1 물리 블록 주소(PBA0)와 다른 제2 물리 블록 주소(PBA10)를 나타낼 수 있다. 또한, 제1 논리 블록 주소(LBA10)와 다른 제2 논리 블록 주소(LBA1000)를 제2 데이터 블록(DP1)의 제2 물리 블록 주소(PBA10)와 맵핑할 수 있다(단계 S320). 제2 논리 블록 주소(LBA1000)는 제1 디스크(DISK1)의 데이터 영역(DA1)을 나타낼 수 있다. 도 6의 화살표 ③이 단계 S310을 나타내고, 화살표 ④가 단계 S320을 나타낼 수 있다.
이와 유사하게, 나머지 데이터들(DX2, DX3, PX)을 나머지 디스크들(DISK2~DISK4)의 다른 데이터 블록들에 저장하고, 해당 논리 블록 주소들을 해당 물리 블록 주소들과 맵핑할 수 있다.
상기 제2 기입 동작이 완료된 이후에, 도 5d에 도시된 것처럼 목표 데이터(DX1, DX2, DX3, PX)를 해제할 수 있다(단계 S400). 호스트 메모리(220) 내의 목표 데이터(DX1, DX2, DX3, PX)를 해제하며, 목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4) 내의 목표 데이터(DX1, DX2, DX3, PX) 역시 해제할 수 있다(단계 S410). 구체적으로, 도 6에 도시된 것처럼 제1 논리 블록 주소(LBA10)와 제1 물리 블록 주소(PBA0)의 맵핑을 해제할 수 있다. 도 6의 X표시 ⑤가 단계 S410을 나타낼 수 있다.
일 실시예에서, 단계 S410에서의 상기 해제 동작과 동시에 제1 데이터 블록(D01)에 저장된 제1 데이터(DX1)를 소거 또는 삭제하지는 않을 수 있다. 다시 말하면, 단계 S410의 해제 동작은 어드레스 맵핑을 해제하는 것으로 충분하며, 추후 백그라운드 작업을 통해 저널 영역(JA1) 내의 제1 데이터(DX1)를 소거할 수 있다.
도 4의 실시예에서는 외부의 호스트 메모리(220)로부터 목표 데이터(DX1, DX2, DX3, PX)를 2회 수신하며, 목표 데이터(DX1, DX2, DX3, PX)가 목표 디스크들(DISK1~DISK4) 내에 물리적으로 2회 기입될 수 있다. 또한, 목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4) 및 데이터 영역들(DA1~DA4)은 논리적 및 물리적으로 서로 구분될 수 있다.
한편, 도 5a, 5b, 5c 및 5d에서는 하나의 스트라이프에 대하여 상기 제1 기입 동작 및 상기 제2 기입 동작이 연속적으로 수행되는 것으로 도시하였으나, 실제로는 복수의 스트라이프들을 포함하는 하나의 트랜잭션에 대하여 상기 제1 기입 동작이 수행되고 상기 제1 기입 동작이 완료된 이후에 동일한 트랜잭션에 대하여 상기 제2 기입 동작이 수행될 수 있다.
도 7은 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 다른 예를 나타내는 순서도이다. 도 8 및 9는 도 7의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다. 이하 도 4, 5a, 5b, 5c, 5d 및 6과 중복되는 설명은 생략한다.
도 1, 7, 8 및 9를 참조하면, 상기 제1 기입 동작은 도 5a 및 5b를 참조하여 상술한 것과 실질적으로 동일하며, 도 7의 단계 S210 및 S220은 도 4의 단계 S210 및 S220과 실질적으로 동일할 수 있다. 도 9의 화살표 ① 및 ② 역시 도 6의 화살표 ① 및 ②와 실질적으로 동일할 수 있다.
상기 제1 기입 동작이 완료된 이후에, 도 8에 도시된 것처럼 목표 데이터(DX1, DX2, DX3, PX)를 목표 디스크들(DISK1~DISK4)의 데이터 영역들(DA1~DA4)에 한 번에 저장하는 상기 제2 기입 동작을 수행한다(단계 S300). 도 7에서는, 상기 제2 기입 동작 시에 목표 데이터(DX1, DX2, DX3, PX)는 호스트 메모리(220)가 아닌 스토리지 장치(300) 내부적으로 제공될 수 있다.
구체적으로, 도 9에 도시된 것처럼 제1 디스크(DISK1)의 저널 영역(JA1)을 나타내는 제1 논리 블록 주소(LBA10)와 제1 데이터 블록(D01)을 나타내는 제1 물리 블록 주소(PBA0)의 맵핑을 해제하고, 이와 동시에 제1 디스크(DISK1)의 데이터 영역(DA1)을 나타내는 제2 논리 블록 주소(LBA1000)를 제1 물리 블록 주소(PBA0)와 맵핑할 수 있다(단계 S330). 도 9의 화살표 및 X표시 ③'가 단계 S330을 나타낼 수 있다.
일 실시예에서, 단계 S330의 어드레스 맵핑 해제 및 어드레스 재맵핑 동작은 호스트 장치(200)로부터 수신되거나 스토리지 장치(300) 내부적으로 발생되는 이동(move) 커맨드를 이용하여 한 번에 수행될 수 있다.
일 실시예에서, 도 7의 실시예와 같이 상기 제2 기입 동작이 수행되는 경우에, 도 1의 단계 S400은 생략될 수 있다.
도 10은 도 1의 스토리지 장치의 구동 방법에서 제1 기입 동작 및 제2 기입 동작을 수행하는 또 다른 예를 나타내는 순서도이다. 도 11은 도 10의 제1 기입 동작 및 제2 기입 동작을 설명하기 위한 도면들이다. 이하 도 4, 5a, 5b, 5c, 5d, 6 및 8과 중복되는 설명은 생략한다.
도 1, 8, 10 및 11을 참조하면, 상기 제1 기입 동작은 도 5a 및 5b를 참조하여 상술한 것과 실질적으로 동일하며, 도 10의 단계 S210 및 S220은 도 4의 단계 S210 및 S220과 실질적으로 동일할 수 있다. 도 11의 화살표 ① 및 ② 역시 도 6의 화살표 ① 및 ②와 실질적으로 동일할 수 있다.
상기 제1 기입 동작이 완료된 이후에, 도 8을 참조하여 상술한 것과 유사하게 상기 제2 기입 동작을 수행한다(단계 S300). 구체적으로, 도 11에 도시된 것처럼 제1 디스크(DISK1)의 저널 영역(JA1)을 나타내는 제1 논리 블록 주소(LBA10)와 제1 데이터 블록(D01)을 나타내는 제1 물리 블록 주소(PBA0)의 맵핑을 유지하면서, 제1 디스크(DISK1)의 데이터 영역(DA1)을 나타내는 제2 논리 블록 주소(LBA1000)를 제1 물리 블록 주소(PBA0)와 맵핑할 수 있다(단계 S340). 도 9의 화살표 ③"가 단계 S340을 나타낼 수 있다.
일 실시예에서, 단계 S340의 어드레스 중복 맵핑 동작은 호스트 장치(200)로부터 수신되거나 스토리지 장치(300) 내부적으로 발생되는 공유(share) 커맨드를 이용하여 수행될 수 있다.
상기 제2 기입 동작이 완료된 이후에, 도 5d를 참조하여 상술한 것처럼 목표 데이터(DX1, DX2, DX3, PX)를 해제할 수 있다(단계 S400). 구체적으로, 도 11에 도시된 것처럼 제1 논리 블록 주소(LBA10)와 제1 물리 블록 주소(PBA0)의 맵핑을 해제할 수 있다. 도 11의 X표시 ④"가 단계 S410을 나타내며, 단계 S410은 도 4의 단계 S410과 실질적으로 동일할 수 있다.
도 7의 실시예와 다르게, 도 10의 실시예에서는 어드레스 중복 맵핑 이후에 어드레스 맵핑 해제 동작을 수행하며, 이 경우 전원 장애 및/또는 디스크 장애를 보다 효과적으로 대처할 수 있다.
도 7 및 10의 실시예에서는 외부의 호스트 메모리(220)로부터 목표 데이터(DX1, DX2, DX3, PX)를 1회 수신하며, 목표 데이터(DX1, DX2, DX3, PX)가 목표 디스크들(DISK1~DISK4) 내에 물리적으로 1회 기입되어 데이터 기입 비용을 줄일 수 있다. 또한, 목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4) 및 데이터 영역들(DA1~DA4)은 논리적으로는 구분되지만 물리적으로는 구분되지 않을 수 있다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다. 이하 도 1과 중복되는 설명은 생략한다.
도 12를 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 단계 S100은 도 1의 단계 S100과 실질적으로 동일할 수 있다.
상기 스토리지 장치에 대한 전원 장애 발생 후 재부팅 되는 경우에, 상기 목표 디스크들의 저널 영역들에 기초하여 상기 목표 디스크들의 데이터 영역들에 대한 재기입 동작을 수행한다(단계 S500). 다시 말하면, 상기 목표 디스크들의 저널 영역들을 이용하여 상기 전원 장애에 의한 파일 시스템의 일관성 손상을 방지할 수 있다.
일 실시예에서, 상기 제1 기입 동작 및 상기 제2 기입 동작 중 적어도 하나가 수행되는 도중에 상기 전원 장애가 발생하여 재부팅된 경우에, 상기 재기입 동작이 수행될 수 있다. 다시 말하면, 도시하지는 않았으나, 도 12의 단계 S100과 S500 사이에는 도 1의 단계 S200 및 S300 중 적어도 하나가 포함될 수 있다.
도 13은 도 12의 스토리지 장치의 구동 방법에서 재기입 동작을 수행하는 일 예를 나타내는 순서도이다. 도 14a, 14b, 14c 및 15는 도 13의 재기입 동작을 설명하기 위한 도면들이다. 도 14a 및 이후의 도면에서, 슈퍼 블록, 메타 블록 및 데이터 블록을 나타내는 참조부호는 슈퍼 블록, 메타 블록 및 데이터 블록에 저장된 정보 및/또는 데이터를 나타내는 것으로 혼용될 수 있다.
도 3, 12, 13, 14a, 14b, 14c 및 15를 참조하면, 상기 재기입 동작을 수행하는데 있어서, 전원 장애 발생 후 스토리지 시스템(100)이 재부팅된 직후에 목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4)로부터 슈퍼 블록들(SB1~SB4)을 독출하여, 상기 재기입 동작의 시작 지점을 결정할 수 있다(단계 S510).
예를 들어, 도 14a에 도시된 것처럼 독출된 슈퍼 블록들(SB1~SB4)은 스토리지 장치(300) 외부의 호스트 메모리(220)에 전송되며, 호스트 장치(200)는 슈퍼 블록들(SB1~SB4)에 포함되는 상기 최초 트랜잭션 관련 정보에 기초하여 상기 재기입 동작의 시작 지점을 결정할 수 있다. 이를 위하여, 슈퍼 블록들(SB1~SB4)의 상기 최초 트랜잭션 관련 정보는 공유될 수 있다.
일 실시예에서, 슈퍼 블록들(SB1~SB4)에 저장된 상기 최초 트랜잭션의 ID 정보가 모두 동일한 경우에, 해당 ID 정보에 대응하는 트랜잭션을 선택할 수 있다.
다른 실시예에서, 슈퍼 블록들(SB1~SB4)에 저장된 상기 최초 트랜잭션의 ID 정보가 서로 다른 경우에, 가장 작은 ID 정보에 대응하는 트랜잭션을 선택할 수 있다. 예를 들어, 슈퍼 블록들(SB1, SB3, SB4)에서 상기 최초 트랜잭션의 ID 정보가 "1"이고 슈퍼 블록(SB2)에서 상기 최초 트랜잭션의 ID 정보가 "0"인 경우에, 가장 작은 ID 정보에 대응하는 트랜잭션(TRS0)이 아직 저널 영역들(JA1~JA4)에서 해제되지 않은 것으로 판단하여, 트랜잭션(TRS0)부터 상기 재기입 동작을 수행할 수 있다.
목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4)로부터 상기 재기입 동작의 시작 지점과 관련된 메타 블록들 및 데이터 블록들을 독출하여, 유효성을 판단할 수 있다(단계 S520).
예를 들어, 상술한 것처럼 트랜잭션(TRS0)이 상기 재기입 동작의 시작 지점으로 결정된 경우에, 도 14b에 도시된 것처럼 메타 블록들(MBs) 및 데이터 블록들(D/Ps) 중 트랜잭션(TRS0)에 대한 메타 블록들(MB01~MB04) 및 데이터 블록들(D01, D02, D03, P0)을 독출하여 외부의 호스트 메모리(220)에 전송할 수 있다. 도 14a에서는 트랜잭션(TRS0)의 일부 데이터 블록들(D01, D02, D03, P0)만을 독출하는 것으로 도시하였으나, 실제로는 트랜잭션(TRS0)의 모든 데이터 블록들(D01, D02, D03, P0, D11, D12, P1, D13, D21, D22, D23, P2, P3, D31, D32, D33)을 독출할 수 있다.
일 실시예에서, 유효성 판단을 위하여 트랜잭션(TRS0)의 모든 데이터 블록들(D01~D33)의 정보를 읽어서 메타 블록들(MB01~MB04)의 상기 체크섬 정보와 비교하는 작업이 수행될 수 있다.
단계 S520의 판단 결과, 상기 독출된 메타 블록들 및 데이터 블록들이 유효한 경우에, 상기 독출된 데이터 블록들의 데이터들을 목표 디스크들(DISK1~DISK4)의 데이터 영역들(DA1~DA4)에 기입할 수 있다(단계 S530).
일 실시예에서, 도 14c에 도시된 것처럼 데이터 블록들(D01, D02, D03, P0)은 외부의 호스트 메모리(220)로부터 수신되어 데이터 영역들(DA1~DA4)에 기입될 수 있다. 다시 말하면, 도 14c의 동작은 도 5c의 동작과 유사할 수 있다.
다른 실시예에서, 도 15에 도시된 것처럼 데이터 블록들(D01, D02, D03, P0)은 외부의 호스트 메모리(220)가 아닌 스토리지 장치(300) 내부적으로 제공되어 데이터 영역들(DA1~DA4)에 기입될 수 있다. 다시 말하면, 도 15의 동작은 도 8의 동작과 유사하며, 도 9 및 11을 참조하여 상술한 상기 이동/공유 커맨드 중 하나를 이용하여 내부적으로 수행될 수 있다.
상기 독출된 메타 블록들 및 데이터 블록들이 유효하지 않다면, 다음 트랜잭션(예를 들어, 트랜잭션(TRS1))에 대하여 단계 S520 및 S530이 반복될 수 있다. 이러한 방식으로 저널 영역들(JA1~JA4) 내의 모든 유효 트랜잭션들을 데이터 영역들(DA1~DA4)에 기입할 수 있다.
도 16은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 다른 예를 나타내는 도면이다. 이하 도 3과 중복되는 설명은 생략한다.
도 16을 참조하면, 저널 영역들(JA1~JA4)은 슈퍼 블록들(SB1~SB4), 메타 블록들(MB01~MB14), 데이터 블록들(D01~D63) 및 커밋 블록들(CB01, CB02, CB03, CB04, CB11, CB12, CB13, CB14)을 포함할 수 있다.
커밋 블록들(CB01~CB14)을 더 포함하는 것을 제외하면, 도 16은 도 3과 실질적으로 동일할 수 있다.
커밋 블록들(CB01~CB14)은 상기 현재 트랜잭션에 대한 기입이 정상적으로 완료되었음을 보장할 수 있다. 다시 말하면, 하나의 트랜잭션에 속한 모든 데이터/패리티 블록들이 저널 영역들(JA1~JA4)에 완전히 기입된 후에 마지막에 완전히 기입되었음을 보장하는 용도로 사용될 수 있다.
커밋 블록은 하나의 트랜잭션의 가장 마지막 블록이므로, 하나의 트랜잭션 내에서 커밋 블록의 위치는 메타 블록을 이용하여 알 수 있다. 메타 블록은 자신이 가지고 있는 데이터/패리티 블록들의 개수를 알고 있으므로, 이를 이용하여 커밋 블록의 위치를 구할 수 있다. 따라서, 시스템 리부트 상황에서 메타 블록만을 읽고 커밋 블록의 위치를 확인할 수 있으며, 데이터/패리티 블록들을 읽을 필요 없이 데이터의 유효성을 판단할 수 있다.
도 17은 도 12의 스토리지 장치의 구동 방법에서 재기입 동작을 수행하는 다른 예를 나타내는 순서도이다. 도 18a, 18b 및 18c는 도 17의 재기입 동작을 설명하기 위한 도면들이다. 이하 도 13, 14a, 14b, 14c 및 15와 중복되는 설명은 생략한다.
도 12, 16, 17, 18a, 18b 및 18c를 참조하면, 상기 재기입 동작을 수행하는데 있어서, 단계 S510은 도 13의 단계 S510과 실질적으로 동일하며, 도 18a의 동작은 도 14a의 동작과 실질적으로 동일할 수 있다.
목표 디스크들(DISK1~DISK4)의 저널 영역들(JA1~JA4)로부터 상기 재기입 동작의 시작 지점과 관련된 메타 블록들 및 커밋 블록들을 독출하여, 유효성을 판단할 수 있다(단계 S540).
예를 들어, 트랜잭션(TRS0)이 상기 재기입 동작의 시작 지점으로 결정된 경우에, 도 18b에 도시된 것처럼 메타 블록들(MBs) 및 커밋 블록들(CBs) 중 트랜잭션(TRS0)에 대한 메타 블록들(MB01~MB04) 및 커밋 블록들(CB01~CB04)을 독출하여 외부의 호스트 메모리(220)에 전송할 수 있다.
단계 S540의 판단 결과, 상기 독출된 메타 블록들 및 커밋 블록들이 유효한 경우에, 상기 독출된 메타 블록들 및 커밋 블록들에 대응하는 데이터 블록들의 데이터들을 목표 디스크들(DISK1~DISK4)의 데이터 영역들(DA1~DA4)에 기입할 수 있다(단계 S550).
예를 들어, 도 18c에 도시된 것처럼 데이터 블록들(D01, D02, D03, P0)은 스토리지 장치(300) 내부적으로 제공되어 데이터 영역들(DA1~DA4)에 기입될 수 있다. 도 18c의 동작은 도 15의 동작과 실질적으로 동일하며, 상기 이동/공유 커맨드 중 하나를 이용하여 내부적으로 수행될 수 있다.
도 17의 실시예에서는 데이터 블록들(D01, D02, D03, P0)이 외부의 호스트 메모리(220)에 전송되지 않으며, 따라서 도 14c의 동작과 같이 외부의 호스트 메모리(220)로부터 데이터 블록들(D01, D02, D03, P0)을 수신하여 데이터 영역들(DA1~DA4)에 기입할 수 없다. 또한, 트랜잭션의 모든 데이터 블록들과 메타 블록들의 체크섬 정보를 비교하여 유효성을 판단하는 대신에 커밋 블록들(CB01~CB04)을 이용하여 상대적으로 간단하게 유효성을 판단할 수 있다. 따라서, 재부팅 시간이 감소되어 향상된 성능을 가질 수 있다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다. 이하 도 1 및 12와 중복되는 설명은 생략한다.
도 19를 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 단계 S100은 도 1의 단계 S100과 실질적으로 동일할 수 있다.
상기 스토리지 장치에 대한 전원 장애 및 상기 목표 디스크들 중 적어도 하나에 대한 디스크 장애 발생 후 재부팅 되는 경우에, 상기 디스크 장애 발생된 디스크에 대한 데이터 리커버리(recovery) 동작을 수행한다(단계 S600).
상기 데이터 리커버리 동작을 수행한 이후에, 상기 목표 디스크들의 저널 영역들에 기초하여 상기 목표 디스크들의 데이터 영역들에 대한 재기입 동작을 수행한다(단계 S700). 단계 S700은 도 12의 단계 S500과 유사할 수 있다.
도시하지는 않았으나, 도 19의 단계 S100과 S600 사이에는 도 1의 단계 S200 및 S300 중 적어도 하나가 포함될 수 있다.
도 20은 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 일 예를 나타내는 순서도이다. 도 21a, 21b 및 21c는 도 20의 데이터 리커버리 동작을 설명하기 위한 도면들이다.
도 3, 19, 20, 21a, 21b 및 21c를 참조하면, 상기 데이터 리커버리 수행하는데 있어서, 상기 디스크 장애 발생된 디스크를 예비(spare) 디스크로 대체할 수 있다(단계 S610).
예를 들어, 도 21a에 도시된 것처럼 목표 디스크들(DISK1, DISK2, DISK3, DISK4) 중 제2 디스크(DISK2)에 대한 디스크 장애가 발생할 수 있다(도 21a의 X표시). 이에 따라, 도 21b에 도시된 것처럼 제2 디스크(DISK2)를 예비 디스크(DISKSP)로 대체할 수 있다.
예비 디스크(DISKSP)는 스토리지 장치(300)의 복수의 디스크들(310~330) 중 하나이며, 일반적인 동작 시에는 사용하지 않다가 디스크 장애가 발생한 경우에 디스크 장애 발생된 디스크를 대체하기 위한 용도로 사용될 수 있다. 일반적인 디스크들(DISK1~DISK4)과 유사하게, 예비 디스크(DISKSP) 또한 저널 영역(JASP) 및 데이터 영역(DASP)으로 구분될 수 있다.
디스크 장애가 발생함에 따라, 제2 디스크(DISK2) 내의 데이터들인 저널 영역(JA2)의 슈퍼 블록(SB2), 메타 블록들(MBs) 및 데이터 블록들(D/Ps)과 데이터 영역(DA2)의 데이터 블록들은 모두 손상될 수 있다. 동일 어레이 내의 손상되지 않은 나머지 디스크들(DISK1, DISK3, DISK4)의 데이터를 이용하여 복원 동작을 수행할 수 있다.
구체적으로, 손상된 디스크(DISK2)를 제외한 나머지 디스크들(DISK1, DISK3, DISK4)의 저널 영역들(JA1, JA3, JA4)에 기초하여, 손상된 디스크(DISK2)의 저널 영역(JA2)에 대응하는 예비 디스크(DISKSP)의 저널 영역(JASP)을 복원하는 제1 복원 동작을 수행할 수 있다(단계 S620). 또한, 나머지 디스크들(DISK1, DISK3, DISK4)의 데이터 영역들(DA1, DA3, DA4)에 기초하여, 손상된 디스크(DISK2)의 데이터 영역(DA2)에 대응하는 예비 디스크(DISKSP)의 데이터 영역(DASP)을 복원하는 제2 복원 동작을 수행할 수 있다(단계 S630).
도 20의 실시예에서, 도 21c에 도시된 것처럼 상기 제1 복원 동작과 상기 제2 복원 동작은 실질적으로 동시에 수행될 수 있다. 도 21c의 화살표들 ⓐ, ⓑ, ⓒ가 상기 제1 복원 동작을 나타내고, 화살표들 ⓓ, ⓔ, ⓕ가 상기 제2 복원 동작을 나타낼 수 있다. 상기 제1 및 제2 복원 동작들은 일반적인 리커버리 알고리즘에 기초하여 수행되며, 이에 따라 디스크(DISK2)에 저장되었던 데이터와 실질적으로 동일한 데이터가 복원될 수 있다.
상기 데이터 리커버리 동작이 완료된 이후에, 도 13 내지 18을 참조하여 상술한 방식으로 재기입 동작이 수행될 수 있다.
도 22는 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 다른 예를 나타내는 순서도이다. 도 23a, 23b 및 23c는 도 22의 데이터 리커버리 동작을 설명하기 위한 도면들이다. 이하 도 20, 21a, 21b 및 21c와 중복되는 설명은 생략한다.
도 3, 19, 22, 23a, 23b 및 23c를 참조하면, 상기 데이터 리커버리 수행하는데 있어서, 단계 S610은 도 20의 단계 S610과 실질적으로 동일하며, 예를 들어 도 21a 및 21b에 도시된 것처럼 디스크 장애 발생된 제2 디스크(DISK2)를 예비 디스크(DISKSP)로 대체할 수 있다.
도 20의 실시예와 유사하게, 상기 제1 및 제2 복원 동작들을 수행하여 손상된 디스크(DISK2)의 데이터를 복원할 수 있다. 이 때, 도 20의 실시예와 다르게, 도 22의 실시예에서는 상기 제1 복원 동작과 상기 제2 복원 동작이 순차적으로 수행되며, 상기 제1 복원 동작이 완료된 이후부터 상기 제2 복원 동작 및 상기 재기입 동작이 완료되기 전까지 스토리지 장치(300)는 저하 모드(degraded mode)로 동작할 수 있다.
구체적으로, 도 23a에 도시된 것처럼 예비 디스크(DISKSP)의 저널 영역(JASP)을 복원하는 상기 제1 복원 동작만을 먼저 수행할 수 있다(단계 S620). 단계 S620은 도 20의 단계 S620과 실질적으로 동일하며, 도 23a의 화살표들 ⓐ, ⓑ, ⓒ는 도 21c의 화살표들 ⓐ, ⓑ, ⓒ와 실질적으로 동일할 수 있다. 이 때, 복원 시간을 줄이기 위하여 유효한 저널 영역만을 확인하여 복원을 수행할 수 있다.
상기 제1 복원 동작이 완료되면, 도 23b에 도시된 것처럼 저널 영역들(JA1, JASP, JA3, JA4)의 유효한 블록들을 외부의 호스트 메모리(220)로 전송하고 이들을 탐색할 수 있는 자료 구조를 형성하며(단계 S625), 이 때부터 스토리지 장치(300)는 상기 저하 모드로 동작할 수 있다(단계 S640).
상기 제1 복원 동작이 완료된 이후 및 상기 자료 구조를 형성한 이후에, 도 23c에 도시된 것처럼 예비 디스크(DISKSP)의 데이터 영역(DASP)을 복원하는 상기 제2 복원 동작을 수행할 수 있다(단계 S650). 단계 S650은 도 20의 단계 S630과 실질적으로 동일하며, 도 23c의 화살표들 ⓓ, ⓔ, ⓕ는 도 21c의 화살표들 ⓓ, ⓔ, ⓕ와 실질적으로 동일할 수 있다.
상기 데이터 리커버리 동작이 완료된 이후에, 도 13 내지 18을 참조하여 상술한 방식으로 재기입 동작이 수행될 수 있다.
일반적으로 스토리지 장치는 데이터 리커버리 동작 중에 나머지 정상적인 디스크들의 조합에 의해 손상된 디스크의 데이터를 액세스하는 상기 저하 모드로 동작할 수 있으나, 도 20의 실시예에서는 저널 영역의 유효한 최신 데이터가 데이터 영역에 반영되지 않은 상태이므로, 상기 저하 모드를 활용할 수 없으며, 따라서 상기 데이터 리커버리 동작 및 상기 재기입 동작이 완료될 때까지 스토리지 장치(300)에 액세스할 수 없다.
도 22의 실시예에서는 저널 영역을 먼저 복원하고 호스트 메모리(220)에 올려서 상기 자료 구조부터 생성하고, 데이터 영역 복원 및 상기 재기입 동작 동안에 상기 저하 모드를 활용할 수 있다. 예를 들어, 상기 저하 모드로 동작하는 도중에 호스트 장치(200)로부터의 액세스 요청이 들어오면, 호스트 메모리(220)에 형성된 저널 영역의 상기 자료 구조를 탐색하여 저널 영역에 최신 데이터가 있는지 확인하고 이를 반영한다. 만약 저널 영역의 데이터와 무관한 경우 데이터 영역의 데이터를 반영한다. 데이터 영역의 복원도 완료되면, 저널 영역의 유효한 데이터를 데이터 영역에 반영하고 상기 저하 모드를 종료하며, 스토리지 장치(300)가 정상 모드로 동작을 시작할 수 있다. 따라서, 스토리지 장치(300)의 성능이 향상될 수 있다.
도 24는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 저널 영역의 또 다른 예를 나타내는 도면이다. 도 25는 도 24의 저널 영역에 포함되는 메타 블록의 일 예를 나타내는 도면이다. 이하 도 3과 중복되는 설명은 생략한다.
도 24를 참조하면, 저널 영역들(JA1~JA4)은 슈퍼 블록들(SB1~SB4), 메타 블록들(MB01~MB14) 및 데이터 블록들(D01, D02, D03, P0, D12, P1, D13, D21, P2, P3, D31, D32, D33, D42, P4, P5, D51, D52, D53, D61, D62, P6, D63)을 포함할 수 있다.
도 3과 비교하였을 때, 도 24에서는 하나의 스트라이프 내에서 수정된 데이터 블록만이 저널 영역들(JA1~JA4)에 저장될 수 있다.
기존의 데이터를 새로운 데이터로 업데이트하는 경우에, 하나의 스트라이프에 포함된 모든 데이터 블록들이 수정되지 않으며, 일부 데이터 블록은 수정되고 다른 일부 데이터 블록은 유지될 수 있다. 하지만 기입 동작은 항상 스트라이프 단위로 수행되므로, 일부 데이터 블록만 수정되었더라도 수정된 데이터 블록 및 수정되지 않은 데이터 블록 모두를 데이터 영역에 한 번에 기입하여야 한다.
예를 들어, 도 3에서는 수정 여부와 상관 없이 스트라이프(STR0) 내의 모든 데이터 블록들(D01, D02, D03, P0)을 저널 영역들(JA1~JA4)에 기입하고, 이후에 저널 영역들(JA1~JA4)의 데이터 블록들(D01, D02, D03, P0)을 데이터 영역들(DA1~DA4)에 기입할 수 있다.
이에 비하여, 도 24에서는 수정된 데이터 블록만을 저널 영역들(JA1~JA4)에 기입할 수 있다. 구체적으로, 스트라이프(STR0) 내에서는 모든 데이터 블록들(D01, D02, D03)이 수정되어 기입될 수 있고 이에 따라 패리티 블록(P0)이 수정되어 기입될 수 있다. 스트라이프(STR1) 내에서는 일부 데이터 블록들(D12, D13)만이 수정되어 기입될 수 있고 데이터 블록(D11)은 수정되지 않아 기입하지 않으며 이에 따라 패리티 블록(P1)이 수정되어 기입될 수 있다. 하나의 스트라이프 내에서 하나의 데이터 블록이라도 수정되면 패리티 블록은 항상 수정되어야 한다. 저널 영역들(JA2, JA3, JA4)의 블록들(D12, P1, D13)과 데이터 영역(DA1)의 기존 블록을 이용하여 스트라이프(STR1)를 데이터 영역들(DA1~DA4)에 기입할 수 있다.
이와 유사하게, 스트라이프들(STR2, STR3) 내에서는 데이터 블록들(D21, D31, D32, D33)만이 수정되어 기입될 수 있고 이에 따라 패리티 블록들(P2, P3)이 수정되어 기입될 수 있다. 스트라이프들(STR4, STR5, STR6) 내에서는 데이터 블록들(D42, D51, D52, D53, D61, D62, D63)만이 수정되어 기입될 수 있고 패리티 블록들(P4, P5, P6)이 수정되어 기입될 수 있다.
상술한 것처럼 수정된 데이터 블록만을 저장함으로써, 저널 영역들(JA1~JA4)의 저장 공간을 절약할 수 있다. 이를 소기입(small write) 기법 또는 소기입 최적화 운영 기법으로 부를 수 있다.
도 25를 참조하면, 트랜잭션(TRS0)에 대응하는 메타 블록들(MB01~MB04)의 일 예를 도시하고 있다.
도 24를 참조하여 상술한 것처럼 수정된 데이터 블록만을 저장하는 경우에, 메타 블록에는 수정되지 않은 블록을 저널 영역에 기록하지 않았음을 표시할 수 있다.
구체적으로, 디스크(DISK1)에는 스트라이프들(STR0, STR2, STR3)에 대한 데이터 블록들(D01, D21, P3)이 기입되었고 이 중 블록(P3)은 패리티 데이터를 저장하므로, 스트라이프들(STR0, STR2, STR3)의 속성에는 "존재함(EST)"을 표시하고 스트라이프(STR1)의 속성에는 "존재하지 않음(NEST)"을 표시할 수 있다. 또한, 스트라이프(STR3)의 속성에는 "패리티(PRT)"를 표시할 수 있다. 이와 유사하게, 디스크들(DISK2, DISK3, ...)의 스트라이프들(STR0, STR1, STR2, STR3)의 속성을 표시할 수 있다.
한편, 스토리지 장치에서 스트라이프에 속한 각 디스크 별 블록 주소는 동일선 상에 존재하므로, "다음 주소 생략(NADDR)"을 표시하고, 다음 디스크들(DISK2, DISK3, ...)의 최종 위치 블록 주소를 생략할 수 있다. 다시 말하면, 디스크들(DISK2, DISK3, ...)의 최종 위치 블록 주소는 디스크(DISK1)의 최종 위치 블록 주소와 동일할 수 있다.
또한, 소기입 기법을 이용하는 경우에, 트랜잭션에 속한 메타 블록의 오프셋이 달라지므로, 슈퍼 블록에 모든 디스크의 메타 블록의 오프셋 정보를 함께 기록할 수 있다. 메타 블록들(MB01~MB04)은 최종 위치 블록 주소 정보 및 속성 정보를 공유할 수 있다.
도 26은 도 19의 스토리지 장치의 구동 방법에서 데이터 리커버리 동작을 수행하는 또 다른 예를 나타내는 순서도이다. 도 27a, 27b 및 27c는 도 26의 데이터 리커버리 동작을 설명하기 위한 도면들이다. 이하 도 20, 21a, 21b, 21c, 22, 23a, 23b 및 23c와 중복되는 설명은 생략한다.
도 19, 24, 25, 26, 27a, 27b 및 27c를 참조하면, 상기 데이터 리커버리 수행하는데 있어서, 단계 S610은 도 20의 단계 S610과 실질적으로 동일할 수 있다. 예를 들어, 도 27a 및 27b에 도시된 것처럼 디스크 장애 발생된 제4 디스크(DISK4)를 예비 디스크(DISKSP)로 대체할 수 있다.
도 20의 실시예와 유사하게, 상기 제1 및 제2 복원 동작들을 수행하여 손상된 디스크(DISK4)의 데이터를 복원할 수 있다. 이 때, 도 24 및 25를 참조하여 상술한 소기입 기법을 이용하여 데이터가 저장되어 있었으므로, 저널 영역의 복원 동작이 달라질 수 있다.
구체적으로, 도 27c에 도시된 것처럼 손상된 디스크(DISK4)를 제외한 나머지 디스크들(DISK1, DISK2, DISK3)의 저널 영역들 및 디스크 영역들에 기초하여, 손상된 디스크(DISK4)의 저널 영역(JA4)에 대응하는 예비 디스크(DISKSP)의 저널 영역(JASP)을 복원하는 상기 제1 복원 동작을 수행할 수 있다(단계 S660). 수정된 데이터 블록(DX1N) 및 패리티 블록(PXN)은 저널 영역들(JA1, JA4)에 저장되어 있었고 수정되지 않은 데이터 블록들(DX2O, DX3O)은 데이터 영역들(DA2, DA3)에 저장되어 있었으므로, 저널 영역(JA1) 및 데이터 영역들(DA2, DA3)을 이용하여 저널 영역(JA4)을 복원할 수 있다. 도 27c의 화살표들 ⓐ', ⓑ', ⓒ'가 상기 제1 복원 동작을 나타낼 수 있다.
또한, 예비 디스크(DISKSP)의 데이터 영역(DASP)을 복원하는 상기 제2 복원 동작을 수행할 수 있다(단계 S670). 단계 S670은 도 20의 단계 S630과 같이 상기 제1 복원 동작과 동시에 수행되거나 도 22의 단계 S650과 같이 상기 제1 복원 동작이 완료된 이후에 수행될 수 있다.
도 28은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다. 이하 도 2와 중복되는 설명은 생략한다.
도 28을 참조하면, 스토리지 시스템(100a)은 호스트 장치(200) 및 스토리지 장치(300a)를 포함한다.
스토리지 장치(300a)가 스토리지 컨트롤러(301)를 더 포함하는 것을 제외하면, 스토리지 시스템(100a) 및 스토리지 장치(300a)는 도 2의 스토리지 시스템(100) 및 스토리지 장치(300)와 실질적으로 동일할 수 있다.
스토리지 컨트롤러(301)는 스토리지 장치(300a)의 동작을 제어할 수 있다. 도 28에 도시된 스토리지 시스템(100a)은 스토리지 컨트롤러(301)를 RAID 컨트롤러로 이용하여 RAID 구성을 구현하는 하드웨어 RAID 시스템일 수 있다.
도시하지는 않았으나, 스토리지 장치(300a)는 스토리지 컨트롤러(301)와 연결되는 보조 전력 장치를 더 포함할 수 있다.
도 29는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 29를 참조하면, 전자 시스템(4000)은 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 스토리지 장치(4400) 및 버퍼 메모리(4500)를 포함한다.
프로세서(4100)는 전자 시스템(4000)의 전반적인 동작을 제어한다. 프로세서(4100)는 운영 체제, 어플리케이션 등을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 스토리지 장치(4400)는 사용자의 데이터를 저장하며, 본 발명의 실시예들에 따른 구동 방법에 기초하여 동작할 수 있다. 버퍼 메모리(4500)는 전자 시스템(4000)의 처리 동작 시 필요한 데이터를 임시로 저장할 수 있다.
본 발명의 실시예들은 스토리지 장치 및 스토리지 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 컴퓨터, 노트북, 핸드폰, 스마트 폰, MP3 플레이어, PDA, PMP, 디지털 TV, 디지털 카메라, 포터블 게임 콘솔, 네비게이션 기기, 웨어러블 기기, IoT 기기, IoE 기기, e-북, VR 기기, AR 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 복수의 디스크(disk)들을 포함하는 스토리지 장치의 구동 방법으로서,
    상기 복수의 디스크들 모두를 각각 저널(journal) 영역 및 데이터 영역으로 구분하는 단계;
    상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 상기 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행하는 단계; 및
    상기 제1 기입 동작이 완료된 이후에, 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행하는 단계를 포함하는 스토리지 장치의 구동 방법.
  2. 제 1 항에 있어서,
    상기 제1 기입 동작을 수행하는 단계는,
    상기 목표 데이터에 포함되는 제1 데이터를 상기 목표 디스크들 중 제1 디스크에 포함되고 제1 물리 블록 주소를 나타내는 제1 데이터 블록에 저장하는 단계; 및
    상기 제1 디스크의 저널 영역을 나타내는 제1 논리 블록 주소를 상기 제1 물리 블록 주소와 맵핑하는 단계를 포함하고,
    상기 제2 기입 동작을 수행하는 단계는,
    상기 제1 데이터를 상기 제1 디스크에 포함되고 제2 물리 블록 주소를 나타내는 제2 데이터 블록에 저장하는 단계; 및
    상기 제1 디스크의 데이터 영역을 나타내는 제2 논리 블록 주소를 상기 제2 물리 블록 주소와 맵핑하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  3. 제 1 항에 있어서,
    상기 제1 기입 동작을 수행하는 단계는,
    상기 목표 데이터에 포함되는 제1 데이터를 상기 목표 디스크들 중 제1 디스크에 포함되고 제1 물리 블록 주소를 나타내는 제1 데이터 블록에 저장하는 단계; 및
    상기 제1 디스크의 저널 영역을 나타내는 제1 논리 블록 주소를 상기 제1 물리 블록 주소와 맵핑하는 단계를 포함하고,
    상기 제2 기입 동작을 수행하는 단계는,
    이동(move) 커맨드를 이용하여, 상기 제1 논리 블록 주소와 상기 제1 물리 블록 주소의 맵핑을 해제하고 상기 제1 디스크의 데이터 영역을 나타내는 제2 논리 블록 주소를 상기 제1 물리 블록 주소와 맵핑하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  4. 제 1 항에 있어서,
    상기 제1 기입 동작을 수행하는 단계는,
    상기 목표 데이터에 포함되는 제1 데이터를 상기 목표 디스크들 중 제1 디스크에 포함되고 제1 물리 블록 주소를 나타내는 제1 데이터 블록에 저장하는 단계; 및
    상기 제1 디스크의 저널 영역을 나타내는 제1 논리 블록 주소를 상기 제1 물리 블록 주소와 맵핑하는 단계를 포함하고,
    상기 제2 기입 동작을 수행하는 단계는,
    공유(share) 커맨드를 이용하여, 상기 제1 논리 블록 주소와 상기 제1 물리 블록 주소의 맵핑을 유지하면서 상기 제1 디스크의 데이터 영역을 나타내는 제2 논리 블록 주소를 상기 제1 물리 블록 주소와 맵핑하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  5. 제 1 항에 있어서,
    상기 제2 기입 동작이 완료된 이후에, 상기 목표 디스크들의 저널 영역들의 상기 목표 데이터를 해제하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  6. 제 1 항에 있어서,
    상기 제1 및 제2 기입 동작들 각각은 스트라이프(stripe) 단위로 상기 목표 디스크들에 대해 한 번에 수행되고 두 개 이상의 스트라이프들을 포함하는 트랜잭션(transaction) 단위로 수행되며,
    상기 각 저널 영역은,
    재기입(replay write) 동작의 시작 지점을 나타내는 최초 트랜잭션 관련 정보, 및 상기 저널 영역의 크기 정보를 저장하는 슈퍼 블록;
    현재 트랜잭션의 ID 정보, 최종 위치 블록 주소 정보, 속성(attribute) 정보 및 유효성 판단을 위한 체크섬(checksum) 정보를 저장하는 메타 블록; 및
    상기 현재 트랜잭션에 대한 데이터를 저장하는 데이터 블록을 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  7. 제 6 항에 있어서,
    상기 동일 어레이에 포함되는 상기 목표 디스크들은 상기 슈퍼 블록 및 상기 메타 블록에 저장된 상기 정보들을 공유하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  8. 제 6 항에 있어서, 상기 저널 영역은,
    상기 현재 트랜잭션에 대한 기입이 정상적으로 완료되었음을 보장하는 커밋 블록을 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  9. 제 6 항에 있어서,
    하나의 스트라이프 내에서 수정된 데이터 블록만이 상기 각 저널 영역에 저장되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  10. 제 1 항에 있어서,
    상기 스토리지 장치에 대한 전원 장애(power failure) 발생 후 재부팅 되는 경우에, 상기 목표 디스크들의 저널 영역들에 기초하여 상기 목표 디스크들의 데이터 영역들에 대한 재기입 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  11. 제 10 항에 있어서, 상기 재기입 동작을 수행하는 단계는,
    상기 목표 디스크들의 저널 영역들로부터 슈퍼 블록들을 독출하여, 상기 재기입 동작의 시작 지점을 결정하는 단계;
    상기 목표 디스크들의 저널 영역들로부터 상기 재기입 동작의 시작 지점과 관련된 메타 블록들 및 데이터 블록들을 독출하여, 유효성을 판단하는 단계; 및
    상기 독출된 메타 블록들 및 데이터 블록들이 유효한 경우에, 상기 독출된 데이터 블록들의 데이터들을 상기 목표 디스크들의 데이터 영역들에 기입하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  12. 제 11 항에 있어서,
    상기 독출된 데이터 블록들의 데이터들을 상기 목표 디스크들의 데이터 영역들에 기입하는 단계는 이동 커맨드 또는 공유 커맨드를 이용하여 상기 스토리지 장치 내부적으로 수행되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  13. 제 10 항에 있어서, 상기 재기입 동작을 수행하는 단계는,
    상기 목표 디스크들의 저널 영역들로부터 슈퍼 블록들을 독출하여, 상기 재기입 동작의 시작 지점을 결정하는 단계;
    상기 목표 디스크들의 저널 영역들로부터 상기 재기입 동작의 시작 지점과 관련된 메타 블록들 및 커밋 블록들을 독출하여, 유효성을 판단하는 단계; 및
    상기 독출된 메타 블록들 및 커밋 블록들이 유효한 경우에, 상기 독출된 메타 블록들 및 커밋 블록들에 대응하는 데이터 블록들의 데이터들을 상기 목표 디스크들의 데이터 영역들에 기입하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  14. 제 1 항에 있어서,
    상기 스토리지 장치에 대한 전원 장애 및 상기 목표 디스크들 중 제1 디스크에 대한 디스크 장애(disk failure) 발생 후 재부팅 되는 경우에, 상기 제1 디스크에 대한 데이터 리커버리(recovery) 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  15. 제 14 항에 있어서, 상기 데이터 리커버리 동작을 수행하는 단계는,
    상기 제1 디스크를 예비(spare) 디스크로 대체하는 단계;
    상기 목표 디스크들 중 상기 제1 디스크를 제외한 나머지 디스크들의 저널 영역들에 기초하여, 상기 제1 디스크의 저널 영역에 대응하는 상기 예비 디스크의 저널 영역을 복원하는 제1 복원 동작을 수행하는 단계; 및
    상기 목표 디스크들 중 상기 제1 디스크를 제외한 상기 나머지 디스크들의 데이터 영역들에 기초하여, 상기 제1 디스크의 데이터 영역에 대응하는 상기 예비 디스크의 데이터 영역을 복원하는 제2 복원 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  16. 제 15 항에 있어서,
    상기 제1 복원 동작과 상기 제2 복원 동작은 동시에 수행되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  17. 제 15 항에 있어서,
    상기 제2 복원 동작은 상기 제1 복원 동작이 완료된 이후에 수행되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  18. 제 14 항에 있어서, 상기 데이터 리커버리 동작을 수행하는 단계는,
    상기 제1 디스크를 예비 디스크로 대체하는 단계;
    상기 목표 디스크들 중 상기 제1 디스크를 제외한 나머지 디스크들의 저널 영역들 및 디스크 영역들에 기초하여, 상기 제1 디스크의 저널 영역에 대응하는 상기 예비 디스크의 저널 영역을 복원하는 제1 복원 동작을 수행하는 단계; 및
    상기 목표 디스크들 중 상기 제1 디스크를 제외한 상기 나머지 디스크들의 데이터 영역들에 기초하여, 상기 제1 디스크의 데이터 영역에 대응하는 상기 예비 디스크의 데이터 영역을 복원하는 제2 복원 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  19. 각각 저널(journal) 영역 및 데이터 영역으로 구분되는 복수의 디스크(disk)들을 포함하고,
    상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들에 대한 기입 커맨드가 수신된 경우에, 기입하고자 하는 목표 데이터를 상기 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행하며,
    상기 제1 기입 동작이 완료된 이후에, 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행하는 스토리지 장치.
  20. 호스트 장치; 및
    상기 호스트 장치에 의해 액세스되고, 각각 저널(journal) 영역 및 데이터 영역으로 구분되는 복수의 디스크(disk)들을 포함하는 스토리지 장치를 포함하고,
    상기 호스트 장치로부터 기입 커맨드 및 기입하고자 하는 목표 데이터가 제공되는 경우에, 상기 스토리지 장치는 상기 목표 데이터를 상기 복수의 디스크들 중 동일 어레이(array)에 포함되는 목표 디스크들의 저널 영역들에 저장하는 제1 기입 동작을 수행하고, 상기 제1 기입 동작이 완료된 이후에 상기 목표 데이터를 상기 목표 디스크들의 데이터 영역들에 저장하는 제2 기입 동작을 수행하는 스토리지 시스템.

KR1020180114813A 2018-09-27 2018-09-27 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 KR20200035592A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180114813A KR20200035592A (ko) 2018-09-27 2018-09-27 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN201910455931.3A CN110955610A (zh) 2018-09-27 2019-05-29 操作存储装置的方法、存储装置和存储系统
EP19177544.4A EP3629142A3 (en) 2018-09-27 2019-05-30 Method of operating storage device, storage device performing the same and storage system including the same
US16/444,998 US11487663B2 (en) 2018-09-27 2019-06-18 Method of operating storage device, storage device performing the same and storage system including the same
SG10201907405QA SG10201907405QA (en) 2018-09-27 2019-08-13 Method of operating storage device, storage device performing the same and storage system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180114813A KR20200035592A (ko) 2018-09-27 2018-09-27 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20200035592A true KR20200035592A (ko) 2020-04-06

Family

ID=66677078

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180114813A KR20200035592A (ko) 2018-09-27 2018-09-27 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템

Country Status (5)

Country Link
US (1) US11487663B2 (ko)
EP (1) EP3629142A3 (ko)
KR (1) KR20200035592A (ko)
CN (1) CN110955610A (ko)
SG (1) SG10201907405QA (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200035592A (ko) 2018-09-27 2020-04-06 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
KR102226184B1 (ko) * 2020-02-25 2021-03-10 한국과학기술원 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치
CN112463306A (zh) * 2020-12-03 2021-03-09 南京机敏软件科技有限公司 一种虚拟机中共享盘数据一致性的方法
US11861198B2 (en) * 2022-04-25 2024-01-02 Netapp, Inc. Journal replay optimization

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240235B2 (en) 2002-03-13 2007-07-03 Intel Corporation Journaling technique for write transactions to mass storage
JP2004259079A (ja) * 2003-02-27 2004-09-16 Hitachi Ltd データ処理システム
US7533298B2 (en) 2005-09-07 2009-05-12 Lsi Corporation Write journaling using battery backed cache
JP4749112B2 (ja) * 2005-10-07 2011-08-17 株式会社日立製作所 記憶制御システム及び方法
US7986480B2 (en) * 2005-11-03 2011-07-26 Hitachi Global Storage Technologies Netherlands B.V. Micro-journaling of data on a storage device
CN101501623B (zh) * 2006-05-03 2013-03-06 数据机器人技术公司 感知文件系统的块存储系统、装置和方法
JP5366480B2 (ja) * 2008-08-27 2013-12-11 株式会社日立製作所 計算機システム及びそのバックアップ方法
US20100138603A1 (en) 2008-12-03 2010-06-03 Atul Mukker System and method for preventing data corruption after power failure
KR100981064B1 (ko) 2009-02-18 2010-09-09 한국과학기술원 저널링 파일 시스템을 이용한 소프트웨어 레이드에서의 일관성 유지방법
KR101562794B1 (ko) 2009-08-04 2015-10-26 삼성전자주식회사 데이터 저장 장치
WO2013070273A1 (en) 2011-04-01 2013-05-16 Nexsan Corporation Journaling raid system
US9396067B1 (en) * 2011-04-18 2016-07-19 American Megatrends, Inc. I/O accelerator for striped disk arrays using parity
US9229809B2 (en) * 2011-09-11 2016-01-05 Microsoft Technology Licensing Llc Nonvolatile media journaling of verified data sets
US9146684B2 (en) * 2012-09-28 2015-09-29 Netapp, Inc. Storage architecture for server flash and storage array operation
US9423978B2 (en) * 2013-05-08 2016-08-23 Nexgen Storage, Inc. Journal management
KR102025180B1 (ko) * 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
IN2013KO01274A (ko) 2013-11-08 2015-05-15 Lsi Corp
US9946607B2 (en) * 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
CN106502587B (zh) * 2016-10-19 2019-10-25 华为技术有限公司 硬盘数据管理方法和硬盘控制装置
KR20200035592A (ko) 2018-09-27 2020-04-06 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템

Also Published As

Publication number Publication date
US20200104257A1 (en) 2020-04-02
US11487663B2 (en) 2022-11-01
EP3629142A2 (en) 2020-04-01
SG10201907405QA (en) 2020-04-29
EP3629142A3 (en) 2020-04-15
CN110955610A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
KR102567140B1 (ko) 데이터 관리 방법 및 이를 수행하는 저장 장치
US9928167B2 (en) Information processing system and nonvolatile storage unit
US10126959B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
EP2359252B1 (en) Storage system snapshot assisted by ssd technology
US8850114B2 (en) Storage array controller for flash-based storage devices
JP5636034B2 (ja) データ利用についてのマウント時間の調停
US9864529B1 (en) Host compatibility for host managed storage media
KR20200035592A (ko) 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
US10956071B2 (en) Container key value store for data storage devices
US11789611B2 (en) Methods for handling input-output operations in zoned storage systems and devices thereof
US9558108B2 (en) Half block management for flash storage devices
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
US7293193B2 (en) Array controller for disk array, and method for rebuilding disk array
US20140201167A1 (en) Systems and methods for file system management
US11256435B2 (en) Method and apparatus for performing data-accessing management in a storage server
CN113687769A (zh) 用于提高数据处理系统中的操作效率的设备和方法
CN116136739A (zh) 用于改善存储装置的数据输入/输出性能的设备和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal