KR102356307B1 - 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치 - Google Patents

플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치 Download PDF

Info

Publication number
KR102356307B1
KR102356307B1 KR1020170114138A KR20170114138A KR102356307B1 KR 102356307 B1 KR102356307 B1 KR 102356307B1 KR 1020170114138 A KR1020170114138 A KR 1020170114138A KR 20170114138 A KR20170114138 A KR 20170114138A KR 102356307 B1 KR102356307 B1 KR 102356307B1
Authority
KR
South Korea
Prior art keywords
data
memory
size
storage device
write
Prior art date
Application number
KR1020170114138A
Other languages
English (en)
Other versions
KR20190027279A (ko
Inventor
박세진
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to KR1020170114138A priority Critical patent/KR102356307B1/ko
Publication of KR20190027279A publication Critical patent/KR20190027279A/ko
Application granted granted Critical
Publication of KR102356307B1 publication Critical patent/KR102356307B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치를 개시한다.
본 실시예의 일 측면에 의하면,호스트로부터 데이터 쓰기 요청을 수신하는 과정; 쓰기 요청된 데이터의 크기에 기반하여, 소거 코딩(Erasure Coding) 방식 및 복제(Replication) 방식 중 어느 하나의 데이터 저장 방식을 결정하는 과정; 상기 쓰기 요청된 데이터에 대한 정보를 포함하는 메타데이터를 생성하고, 생성된 메타데이터를 메모리에 기록하는 과정; 및 결정된 데이터 저장 방식에 따라 상기 쓰기 요청된 데이터를 메모리에 기록하는 과정을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법을 제공한다.

Description

플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치{Method And Apparatus for Recovery in Flash Storage Using Selective Erasure Coding}
본 실시예는 플래시 메모리에 기반한 저장 장치에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
저장 장치에서 중요한 기술 중 하나는 데이터의 손실이 발생했을 때, 원본 데이터를 복원하는 기술이다. 데이터를 복원하지 못할 경우 경제적 손실을 초래할 수 있다. 데이터 손실을 복원하기 위한 방법으로, 원본 데이터의 사본을 생성하고 사본을 원본과는 다른 물리적인 공간에 저장하는 복제(Replication) 방식이 있다. 이러한 복제 방식을 이용하는 경우에는 원본 데이터가 그대로 복제되므로 원본 데이터와 동일한 크기의 추가 저장공간이 필요하게 되므로, 상대적으로 가격이 저렴한 HDD, Tape 장치 등에서 사용된다.
최근에는 비용과 저장 공간 효율성 측면이 중요해지면서 소거 코딩(Erasure Coding) 방식이 도입되고 있다. 소거 코딩 방식은 데이터를 인코딩하여 패리티를 생성한 후 데이터와 패리티를 분산 저장하고, 데이터 손실시 패리티를 이용한 디코딩 과정을 거쳐 원본 데이터를 복원하는 방법이다. 이러한 소거 코딩 방식은 저장된 원본 데이터의 일부에 손실이 발생하더라도, 원본 데이터를 복원 시킬 수 있는 방법으로, 원본 데이터의 사본을 생성하지 않고 일부 복원 정보만 별도로 유지하면 데이터를 복원할 수 있기 때문에 공간 효율성 측면에서 유리하고, 오류의 복원 성능 또한 뛰어나 SSD와 같은 고가의 장치에서 사용된다. 소거 코딩 방식에 따르면 원본 데이터를 분할하여 분할된 데이터를 여러 저장 공간에 나누어 저장하는데, 이 때, 분할된 데이터의 크기가 플래시의 논리적 페이지 크기보다 작을 경우에 플래시 페이지 내부 단편화(internal fragmentation) 문제가 발생하게 된다. 내부 단편화가 발생한 페이지를 회수하기 위해서는 추가적인 데이터 읽기/쓰기 과정을 필요로 하는데, 플래시 메모리는 물리적인 특성상 쓰기 횟수가 제한되어 있어 이로 인해 메모리 수명이 단축될 수 있는 문제가 있다.
본 발명의 실시예들은, 플래시 저장 장치의 데이터 손실 복원을 위해 소거 코딩 방식을 적용함에 있어서, 페이지 내부 단편화로 인해 발생할 수 있는 플래시 메모리 수명 단축 문제를 해결할 수 있는 방법을 제공하는 데 주된 목적이 있다.
본 실시예의 일 측면에 의하면, 호스트로부터 데이터 쓰기 요청을 수신하는 과정, 쓰기 요청된 데이터의 크기에 기반하여, 소거 코딩(Erasure Coding) 방법 및 복제(Replication) 방법 중 어느 하나의 데이터 저장 방식을 결정하는 과정, 쓰기 요청된 데이터에 대한 정보를 포함하는 메타데이터를 생성하고, 생성된 메타데이터를 메모리에 기록하는 과정 및 결정된 데이터 저장 방식에 따라 쓰기 요청된 데이터를 메모리에 기록하는 과정을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법을 제공한다.
상기 데이터 손실 복원 방법의 실시예는 다음의 특징들을 하나 이상 더 포함할 수 있다.
데이터 저장 방식을 결정하는 과정은 소거 코딩 방식을 적용함에 따라 분할되는 데이터 청크 크기와 메모리의 논리 페이지 크기를 비교하는 과정을 포함하고, 데이터 청크 크기가 논리 페이지 크기보다 크거나 같은 경우 소거 코딩 방식으로 데이터 저장 방식을 결정하고, 데이터 청크 크기가 논리 페이지 크기보다 작은 경우 복제 방식으로 데이터 저장 방식을 결정할 수 있다.
메타데이터를 메모리에 기록하는 과정은, 쓰기 요청된 데이터와 대응하는 데이터 저장 방식에 대한 정보를 포함하는 메타데이터를 생성할 수 있다.
본 실시예의 일 측면에 의하면, 호스트로부터 데이터 읽기 요청을 수신하는 과정, 읽기 요청된 데이터의 메타데이터를 참조하여, 읽기 요청된 데이터의 데이터 저장 방식을 확인하는 과정, 데이터 저장 방식이 소거 코딩 방식인 경우, 메모리로부터 복수의 원본 데이터 청크를 읽어들이는 과정 및 데이터 저장 방식이 복제 방식인 경우, 메모리로부터 원본 데이터 또는 복제된 데이터 중 어느 하나를 읽어들이는 과정을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명의 실시예에 의하면, 플래시 메모리의 논리적 페이지 크기를 고려하여 선택적으로 소거 코딩을 적용함으로써 페이지 내부 단편화 문제를 해결할 수 있고, 이로 인한 입출력 성능 저하 문제 및 플래시 메모리 수명 단축 문제를 해소할 수 있는 효과가 있다.
또한, 본 발명의 실시예에 의하면, 플래시 메모리의 손상에 의해 저장된 데이터에 손실이 발생하더라도 데이터를 복원할 수 있는 방법 및 장치를 제공함으로써, 플래시 저장 장치에 저장된 데이터에 대한 신뢰성을 보장하는 효과가 있다.
도 1은 소거 코딩 방식을 설명하기 위한 도면이다.
도 2는 복제 방식을 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 플래시 저장 장치에 대한 구성도이다.
도 4은 본 발명의 실시예에 따른 데이터 손실 복원 방법을 이용한 플래시 저장 장치에서의 데이터 쓰기 방법을 나타내는 흐름도이다.
도 5 및 도 6은 본 발명의 실시예에 따른 데이터 쓰기 방법을 설명하기 위한 예시도이다.
도 7은 본 발명의 실시예에 따른 데이터 손실 복원 방법을 이용한 플래시 저장 장치에서의 데이터 읽기 방법을 나타내는 흐름도이다.
이하, 본 발명의 일부 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 본 발명을 설명하는 데 있어서, 플래시 저장 장치는 플래시 메모리를 기반으로 구현된 저장 장치를 말하며, 예컨대, SSD와 같은 저장 장치일 수 있다. 또한, 플래시 메모리는 다수의 플래시 메모리 칩을 포함하는 개념이며, 각각의 플래시 메모리 칩은 물리적으로 서로 다른 저장 공간에 해당한다. 플래시 메모리는 복수의 블록들로 구성되며 각각의 블록은 복수의 페이지들을 포함한다. 플래시 메모리에서 쓰기(program 또는 write) 및 읽기(read)는 페이지 단위로 수행되고, 지우기(erase)는 블록 단위로 수행된다.
도 1은 소거 코딩 방식을 설명하기 위한 도면이다. 도 1에는 논리적 페이지 크기가 4KB인 플래시 저장 장치에 4+2 소거 코드를 이용하여 4KB 크기의 데이터를 쓰는 경우가 예시되어 있다.
소거 코딩은 원본 데이터를 분할하여 생성한 원본 데이터 청크와 인코딩 과정을 통해 생성한 패리티 청크를 서로 다른 공간에 저장하여, 원본 데이터 청크 일부에 손실이 발생하더라도 패리티 청크를 이용해 손실된 데이터를 복원할 수 있는 방법이다. 일반적으로 소거 코드로는 Reed Solomon 코드를 많이 사용하며, K+N과 같은 형태로 표기한다. 이 때, K는 원본 데이터가 분할되는 개수, N은 원본 데이터를 복구하기 위해 생성하는 패리티의 개수를 의미하며, K+N은 분할된 데이터 및 패리티를 저장하기 위한 저장 공간의 총 개수를 나타낸다. K+N 소거 코드를 이용하여 데이터를 저장하면, N개의 분할된 데이터 또는 패리티에 손실이 발생하더라도 원본 데이터를 재구성할 수 있다. 이하에서는, Reed Solomon 코드를 사용하는 것을 예시로 하여, 소거 코딩 방식을 적용해 플래시 메모리에 데이터를 쓰는 과정에 대해 설명한다.
데이터 쓰기 요청이 발생하면, K+N 소거 코드를 적용하여 원본 데이터를 K 개의 원본 데이터 청크로 분할하고, 이들 원본 데이터 청크들로부터 N 개의 패리티 청크를 생성한다. 여기서 원본 데이터 청크는 원본 데이터를 분할하여 생성한 데이터 청크를 말하며, 패리티 청크는 원본 데이터의 복구를 위해 생성된 데이터 청크를 말한다. 저장 공간이 손상되는 경우에 대비하여, 생성된 원본 데이터 청크 및 패리티 청크는 물리적으로 서로 다른 공간에 저장하는 것이 바람직하다.
도 1을 참조하면, 4KB 크기의 데이터 쓰기 요청이 발생한 경우, 4+2 소거 코드를 사용하여, 각 1KB 크기의 4개의 원본 데이터 청크를 생성하고, 원본 데이터 청크들에 대한 2개의 패리티 청크를 생성한다. 데이터 쓰기 과정에서 이러한 소거 코드를 적용하는 경우, 원본 데이터 청크 또는 패리티 청크를 불문하고 4개의 청크만 존재하면 원본 데이터를 재구성할 수 있다. 도면과 같이, 소거 코드를 적용하여 생성된 원본 데이터 청크 및 패리티 청크를 서로 다른 플래시 메모리에 기록한다. 이 때, 데이터 쓰기는 페이지 단위로 이루어지므로, 논리적 페이지 크기가 4KB인 경우, 1KB의 청크들을 각각 기록하면 해당 페이지는 3KB의 내부 단편화가 발생하게 된다. 내부 단편화가 발생한 페이지는 향후 내부 단편화 제거 루틴에 의해 다시 읽혀진 후, 내부 단편화가 발생한 페이지들에 기록된 데이터를 병합하여 다른 새로운 페이지에 기록을 하며, 기존에 내부 단편화가 발생했던 페이지는 삭제 연산을 통해 유휴 공간으로 남겨지게 된다. 이러한 과정을 Write Amplification Factor(WAF)라 하는데, WAF가 증가함에 따라 병렬적인 연산이 불가능하게 되어 입출력 성능이 저하되고, 플래시 메모리의 수명도 짧아지게 된다.
도 2는 복제 방식을 설명하기 위한 도면이다. 도 2에는 논리적 페이지 크기가 4KB인 플래시 저장 장치에 3-way 복제 방식을 적용하여 4KB 크기의 데이터를 쓰는 경우가 예시되어 있다.
복제 방식은 데이터의 손실에 대비하기 위해, 원본 데이터의 사본을 생성하여 복제된 데이터를 만들고, 원본 데이터와 복제된 데이터를 서로 다른 공간에 저장함으로써, 어느 하나의 데이터에 손실이 발생하더라도 원본 데이터를 그대로 유지할 수 있는 방법이다. N-way와 같이 표기된 것은, 원본 데이터와 복제된 데이터의 총 개수가 N인 것을 의미하며, 도 2에 예시된 3-way 복제 방식의 경우 원본 데이터에 대한 사본이 2개 생성된다. 복제 방식을 적용해 데이터를 저장하면, N-1개의 데이터에 손실이 발생하더라도 원본 데이터를 복원할 수 있다.
데이터 쓰기 요청이 발생하면, N 개의 원본 데이터 및 복제된 데이터를 생성한다. 여기서 원본 데이터와 복제된 데이터는 실질적으로 동일하므로 그 구분은 사실상 무의미하며, 이하에서는 설명을 위해 구분하여 기재한다. 저장 공간이 손상되는 경우에 대비하여, 원본 데이터 및 복제된 데이터는 물리적으로 서로 다른 공간에 저장하는 것이 바람직하다.
도 2를 참조하면, 4KB 크기의 데이터 쓰기 요청이 발생한 경우, 쓰기 요청된 데이터에 대한 사본을 2개 생성하고, 원본 데이터 및 복제된 데이터를 서로 다른 플래시 메모리에 기록한다. 이 때, 데이터 쓰기는 페이지 단위로 이루어지므로, 논리적 페이지 크기가 4KB인 경우, 4KB 크기의 원본 데이터 및 복제된 페이지를 쓰게 되므로 내부 단편화 문제가 발생하지 않는다. 그러나, 이 경우 저장 장치에 데이터를 기록하기 위해 필요한 용량이 매우 크다는 단점이 있다. 도 1 및 도 2에 예시된 경우 모두 최대 2개의 디스크 오류에 대비가 가능하지만, 도 1의 소거 코딩 방식의 경우 6KB의 용량이 필요하고, 도 2의 복제 방식의 경우에는 12KB의 용량이 필요하게 되므로, 저장 장치의 용량 효율성 측면에서 불리하다.
본 발명은 플래시 기반 저장 장치에서 소거 코딩을 적용함에 있어, 플래시 메모리의 논리적 페이지 크기를 고려하여 소거 코딩 방식과 복제 방식을 선택적으로 적용하는 방법을 제안한다. 구체적으로, 원본 데이터를 분할하여 생성하는 데이터 청크의 크기가 플래시의 논리적 페이지 크기보다 작은 경우에는 소거 코딩을 적용하지 않고, 데이터 복제 방식을 적용하여 불필요한 데이터 내부 단편화 문제를 발생시키지 않는다.
또한, 쓰기 요청된 데이터의 크기에 의해 데이터의 저장 방식이 결정되기 때문에, 데이터 읽기 과정에서 데이터 저장 방식을 판단하고 해당 데이터를 읽어들일 수 있도록 하기 위해, 결정된 데이터 저장 방식에 따라 메타데이터에 포함되는 정보를 서로 달리하여 메타데이터를 생성하는 방법을 제안한다. 생성된 메타데이터는 데이터와 함께 메모리에 기록될 수 있으며 읽기 과정에서 메타데이터를 확인하는 과정을 거쳐 데이터 저장 방식을 판단할 수 있게 된다.
도 3은 본 발명의 실시예에 따른 플래시 저장 장치에 대한 구성도이다. 도 3을 참조하면, 본 발명의 실시예에 따른 플래시 저장 장치는 저장 장치 컨트롤러(100) 및 플래시 메모리(200)를 포함하여 구성된다.
저장 장치 컨트롤러(100)는 호스트와의 통신 및 플래시 메모리(200)와의 데이터 송수신 과정을 제어한다. 저장 장치 컨트롤러(100)는 플래시 메모리(200)에 데이터를 저장하거나, 저장된 데이터를 읽고 삭제할 수 있다. 본 발명의 실시예에서, 저장 장치 컨트롤러(100)는 플래시 메모리(200)에 데이터를 저장하는 과정을 제어하며, 데이터 손실에 대비해 데이터를 복원하기 위한 데이터 쓰기 방법을 제공한다. 또한, 본 발명의 실시예에서, 저장 장치 컨트롤러(100)는 플래시 메모리(200)로부터 데이터를 읽어들이는 과정을 제어하며, 데이터 손실이 발생한 경우 원본 데이터를 복원하기 위한 데이터 읽기 방법을 제공한다. 저장 장치 컨트롤러(100)는 플래시 메모리 어플리케이션을 위한 펌웨어를 구동하고, 데이터 읽기 및 쓰기의 과정을 제어하기 위한 마이크로프로세서 등을 구비할 수 있다.
저장 장치 컨트롤러(100)는 호스트 인터페이스(미도시), 플래시 메모리 컨트롤러(미도시) 등을 포함할 수 있다. 호스트 인터페이스는 저장 장치와 외부의 호스트 컴퓨터 사이에서 인터페이스를 제공한다. 호스트 인터페이스는, 예컨대, PATA(Parallel ATA), SATA(Seral ATA) 또는 USB(Universal Serial Bus) 등의 통신 규격일 수 있다. 본 발명의 실시예에 따른 플래시 저장 장치는 호스트 인터페이스를 통해 호스트로부터 데이터 읽기, 데이터 쓰기와 같은 데이터 액세스 명령을 수신한다. 플래시 메모리 컨트롤러는 저장 장치 컨트롤러(100)의 제어 하에 플래시 메모리(200)의 데이터 전송, 버스 제어 등을 수행한다.
플래시 메모리(200)는 다수의 플래시 메모리 칩을 포함하여 구성된다. 플래시 메모리(200)는 데이터 삭제 연산의 기본 단위인 복수의 블록으로 구성되며, 블록은 읽기 및 쓰기 연산의 기본 단위인 복수의 페이지로 구성된다.
도 4는 본 발명의 실시예에 따른 데이터 손실 복원 방법을 이용한 저장 장치에서의 데이터 쓰기 방법을 나타내는 흐름도이다.
도 5 및 도 6은 본 발명의 실시예에 따른 데이터 쓰기 방법을 설명하기 위한 예시도이다.
이하에서는, 도 4 내지 도 6을 참조하여 본 발명의 실시예에 따른 플래시 저장 장치에서 데이터를 저장하는 방법에 대해 설명한다.
도 4를 참조하면, 본 발명의 실시예에 따른 플래시 저장 장치가 호스트로부터 데이터 쓰기 요청을 수신하면(S410), 저장 장치 컨트롤러(100)는 쓰기 요청된 데이터의 크기에 기반하여, 소거 코딩 방식과 복제 방식 중 어떤 방법을 사용하여 데이터를 저장할지를 결정한다. 구체적으로, 저장 장치 컨트롤러(100)는 데이터 저장 방식을 결정하기 위해 쓰기 요청된 데이터에 소거 코딩 방식을 적용했을 때 생성되는 데이터 청크 크기와 메모리의 논리 페이지 크기를 비교한다(S420).
비교 결과, 데이터 청크 크기가 논리 페이지 크기보다 크거나 같은 경우 소거 코딩 방식을 적용하는 것으로 결정한다(S430). 데이터 저장 방식이 결정되면, 쓰기 요청된 데이터에 대응하는 데이터 저장 방식에 대한 정보를 포함하는 메타데이터를 생성한다(S440). 데이터 읽기 요청이 있는 경우에, 서로 다른 공간에 저장되어 있는 복수의 원본 데이터 청크를 모두 읽어 원본 데이터를 재구성하기 위해, 결정된 데이터 저장 방식에 대한 정보를 메타데이터에 포함시킬 필요가 있다. 생성된 메타데이터를 메모리에 기록하고, 원본 데이터 청크들과 패리티 청크를 플래시 메모리(200)에 기록한다(S450).
도 5를 참조하여, 논리적 페이지 크기가 4KB인 플래시 저장 장치에 4+2 소거 코드를 이용하여 16KB 크기의 데이터를 쓰는 경우를 예시로 설명한다. 도 5와 같은 예시에서, 16KB 데이터에 소거 코딩 방식을 적용하면 분할된 원본 데이터 청크의 크기는 4KB이다. 데이터 청크 크기가 논리적 페이지 크기와 같으므로, 쓰기 요청된 데이터의 데이터 저장 방식으로 소거 코딩 방식을 적용하는 것으로 결정한다. 결정된 데이터 저장 방식이 소거 코딩 방식인 경우, 원본 데이터 청크와 패리티 청크의 개수, 데이터 청크 크기 및 패리티 청크의 위치 정보를 포함하는 메타데이터를 생성하고, 쓰기 요청된 데이터의 저장에 앞서 생성된 메타데이터를 메모리에 저장한다. 도면에서, 4+2 소거 코딩 과정을 거쳐 생성된 원본 데이터 청크를 각 a, b, c, d와 같이 표기하였고, 원본 데이터 청크에 대한 패리티 청크는 p1, p2와 같이 표기하였다. 총 6개의 원본 데이터 청크(a, b, c, d)와 패리티 청크(p1, p2)는 물리적으로 서로 다른 저장 공간에 기록되며, 16KB 크기의 데이터 손실 복원을 위해서 8KB만이 추가적으로 사용된다.
반면에, 데이터 청크 크기와 메모리의 논리 페이지 크기 비교 결과, 데이터 청크 크기가 논리 페이지 크기보다 작은 경우 복제 방식을 적용하는 것으로 결정한다(S460). 데이터 저장 방식이 결정되면, 쓰기 요청된 데이터와 대응하는 데이터 저장 방식에 대한 정보를 포함하는 메타데이터를 생성한다(S470). 데이터 읽기 요청이 있는 경우에, 원본 데이터 및 복제된 데이터 중 어느 하나를 읽어 원본 데이터를 반환하기 위해, 결정된 데이터 저장 방식에 대한 정보를 메타데이터에 포함시킬 필요가 있다. 생성된 메타데이터를 메모리에 기록하고, 원본 데이터와 복제된 데이터를 플래시 메모리(200)에 기록한다(S480).
도 6을 참조하여, 논리적 페이지 크기가 4KB인 플래시 저장 장치에 3-way 복제 방식을 적용하여 8KB 크기의 데이터를 쓰는 경우를 예시로 설명한다. 도 6과 같은 플래시 저장 장치에 8KB 크기의 데이터 쓰기 요청이 있는 경우, 8KB 데이터에 소거 코딩 방식을 적용하면 분할된 원본 데이터 청크의 크기가 2KB이다. 데이터 청크 크기가 논리적 페이지 크기보다 작으므로, 쓰기 요청된 데이터의 데이터 저장 방식으로 복제 방식을 적용하는 것으로 결정한다. 결정된 데이터 저장 방식이 복제 방식인 경우, 원본 데이터 및 복제된 데이터의 위치 정보를 포함하는 메타데이터를 생성하고, 쓰기 요청된 데이터의 저장에 앞서 생성된 메타데이터를 메모리에 저장한다. 도면에서, 원본 데이터는 o, 복제된 데이터는 o'와 같이 표기하였다. 데이터 쓰기 과정은 페이지 단위로 이루어지기 때문에, 도면과 같이 4KB씩 나누어 메모리에 기록되며 각 a, b와 같이 표기하였고, 복제된 데이터 또한 페이지 단위로 나누어 기록되므로 a', b'와 같이 표기하였다. 원본 데이터와 복제된 데이터는 물리적으로 서로 다른 저장 공간에 기록되며, 이 경우 내부 단편화 문제는 발생하지 않는다.
도 7은 본 발명의 실시예에 따른 데이터 손실 복원 방법을 이용한 플래시 저장 장치에서의 데이터 읽기 방법을 나타내는 흐름도이다.
도 7을 참조하면, 본 발명의 실시예에 따른 플래시 저장 장치가 호스트로부터 데이터 읽기 요청을 수신하면(S710), 저장 장치 컨트롤러(100)는 읽기 요청된 데이터의 메타데이터를 확인하여(S720) 데이터 저장 방식이 소거 코딩 방식인지 복제 방식인지 판단한다(S730).
데이터 저장 방식이 소거 코딩 방식인 경우, 메타데이터에 포함된 원본 데이터 청크들의 위치 정보를 참조하여 해당 주소로부터 원본 데이터 청크들을 읽는다(S730). 원본 데이터 청크들 중 어느 하나 이상의 데이터 청크에 데이터 손실이 있는지 판단하고(S740), 손실이 있다고 판단되는 경우, 메타데이터에 포함된 패리티 청크의 위치 정보를 참조하여 해당 주소로부터 패리티 청크를 읽고, 이를 이용하여 원본 데이터를 복원한다(S750).
또는, 데이터 저장 방식이 복제 방식인 경우, 메타데이터에 포함된 원본 데이터의 위치 정보를 참조하여 해당 주소로부터 원본 데이터를 읽거나 복제된 데이터의 위치 정보를 참조하여 복제된 데이터를 읽는다(S760).
데이터 저장 방식에 따라 서로 다른 방법을 이용하여 원본 데이터를 읽거나 복원하고, 호스트에 원본 데이터를 반환한다(S770).
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 저장 장치 컨트롤러
200: 플래시 메모리

Claims (16)

  1. 호스트로부터 데이터 쓰기 요청을 수신하는 과정;
    쓰기 요청된 데이터의 크기에 기반하여, 소거 코딩(Erasure Coding) 방식 및 복제(Replication) 방식 중 어느 하나의 데이터 저장 방식을 결정하는 과정;
    상기 쓰기 요청된 데이터에 대한 정보를 포함하는 메타데이터를 생성하고, 생성된 메타데이터를 메모리에 기록하는 과정; 및
    결정된 데이터 저장 방식에 따라 상기 쓰기 요청된 데이터를 메모리에 기록하는 과정
    을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법.
  2. 제 1항에 있어서,
    상기 데이터 저장 방식을 결정하는 과정은,
    소거 코딩 방식을 적용함에 따라 분할되는 데이터 청크 크기와 상기 메모리의 논리 페이지 크기를 비교하는 과정을 포함하고,
    상기 데이터 청크 크기가 상기 논리 페이지 크기보다 크거나 같은 경우 소거 코딩 방식으로 데이터 저장 방식을 결정하고, 상기 데이터 청크 크기가 상기 논리 페이지 크기보다 작은 경우 복제 방식으로 데이터 저장 방식을 결정하는 것을 특징으로 하는 플래시 저장 장치의 데이터 손실 복원 방법.
  3. 제 1항에 있어서,
    상기 메타데이터를 메모리에 기록하는 과정은,
    상기 쓰기 요청된 데이터에 대응하는 데이터 저장 방식에 대한 정보를 포함하는 메타데이터를 생성하는 것을 특징으로 하는 플래시 저장 장치의 데이터 손실 복원 방법.
  4. 제 3항에 있어서,
    상기 메타데이터를 메모리에 기록하는 과정은,
    상기 결정된 데이터 저장 방식이 소거 코딩 방식인 경우 데이터 청크 크기 및 패리티 청크의 위치 정보를 포함하는 메타데이터를 생성하고, 상기 결정된 데이터 저장 방식이 복제 방식인 경우 복제된 데이터의 위치 정보를 포함하는 메타데이터를 생성하는 것을 특징으로 하는 플래시 저장 장치의 데이터 손실 복원 방법.
  5. 호스트로부터 데이터 읽기 요청을 수신하는 과정;
    읽기 요청된 데이터의 메타데이터를 참조하여, 상기 읽기 요청된 데이터의 데이터 저장 방식을 확인하는 과정;
    상기 데이터 저장 방식이 소거 코딩 방식인 경우, 메모리로부터 복수의 원본 데이터 청크를 읽어들이는 과정; 및
    상기 데이터 저장 방식이 복제 방식인 경우, 메모리로부터 원본 데이터 및 복제된 데이터 중 어느 하나를 읽어들이는 과정
    을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법.
  6. 제 5항에 있어서,
    상기 복수의 원본 데이터 청크 중 어느 하나 이상에 데이터 손실이 발생한 경우, 상기 메모리로부터 패리티 청크를 읽어들이는 과정; 및
    상기 패리티 청크를 이용하여 손실이 발생한 데이터를 복원하는 과정
    을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법.
  7. 호스트로부터 데이터 쓰기 요청을 수신하면, 쓰기 요청된 데이터의 크기에 기반하여 소거 코딩 방식 및 복제 방식 중 어느 하나의 데이터 저장 방식을 결정하고, 상기 쓰기 요청된 데이터에 대한 정보를 포함하는 메타데이터를 생성하여 메모리에 기록하고, 결정된 데이터 저장 방식에 따라 상기 쓰기 요청된 데이터를 메모리에 기록하는 과정; 및
    호스트로부터 데이터 읽기 요청을 수신하면, 상기 요청된 데이터의 메타데이터를 참조하여 상기 읽기 요청된 데이터의 데이터 저장 방식을 확인하고, 상기 데이터 저장 방식이 소거 코딩 방식인 경우 메모리로부터 복수의 원본 데이터 청크를 읽어들이고, 상기 데이터 저장 방식이 복제 방식인 경우 메모리로부터 원본 데이터 및 복제된 데이터 중 어느 하나를 읽어들이는 과정
    을 포함하는 플래시 저장 장치의 데이터 손실 복원 방법.
  8. 제 7항에 있어서,
    상기 쓰기 요청된 데이터를 메모리에 기록하는 과정은,
    소거 코딩 방식을 적용함에 따라 분할되는 데이터 청크 크기와 상기 메모리의 논리 페이지 크기를 비교하여, 상기 데이터 청크 크기가 상기 논리 페이지 크기보다 크거나 같은 경우 소거 코딩 방식으로 데이터 저장 방식을 결정하고, 상기 데이터 청크 크기가 상기 논리 페이지 크기보다 작은 경우 복제 방식으로 데이터 저장 방식을 결정하는 것을 특징으로 하는 플래시 저장 장치의 데이터 손실 복원 방법.
  9. 제 7항에 있어서,
    상기 복수의 원본 데이터 청크 중 어느 하나 이상에 데이터 손실이 발생한 경우, 상기 메모리로부터 패리티 청크를 읽어들이고, 상기 패리티 청크를 이용하여 손실이 발생한 데이터를 복원하는 것을 특징으로 하는 플래시 저장 장치의 데이터 손실 복원 방법.
  10. 호스트로부터 데이터 쓰기 요청을 수신하고, 쓰기 요청된 데이터의 크기에 기반하여, 소거 코딩 방식 및 복제 방식 중 어느 하나의 데이터 저장 방식을 결정하는 저장 장치 컨트롤러; 및
    상기 쓰기 요청된 데이터에 대한 정보를 포함하는 메타데이터가 기록되고, 결정된 데이터 저장 방식에 따라 상기 쓰기 요청된 데이터가 기록되는 플래시 메모리
    를 포함하는 플래시 저장 장치.
  11. 제 10항에 있어서,
    상기 저장 장치 컨트롤러는,
    소거 코딩 방식을 적용함에 따라 분할되는 데이터 청크 크기와 플래시 저장 장치의 논리 페이지 크기를 비교하여, 상기 데이터 청크 크기가 상기 논리 페이지 크기보다 크거나 같은 경우 소거 코딩 방식으로 데이터 저장 방식을 결정하고, 상기 데이터 청크 크기가 상기 논리 페이지 크기보다 작은 경우 복제 방식으로 데이터 저장 방식을 결정하는 것을 특징으로 하는 플래시 저장 장치.
  12. 제 10항에 있어서,
    상기 메타데이터는,
    상기 쓰기 요청된 데이터와 대응하는 데이터 저장 방식에 대한 정보를 포함하는 것을 특징으로 하는 플래시 저장 장치.
  13. 제 12항에 있어서,
    상기 메타데이터는,
    결정된 데이터 저장 방식이 소거 코딩 방식인 경우 데이터 청크 크기 및 패리티 청크의 위치 정보를 포함하고, 상기 결정된 데이터 저장 방식이 복제 방식인 경우 복제된 데이터의 위치 정보를 포함하는 것을 특징으로 하는 플래시 저장 장치.
  14. 제 10항에 있어서,
    상기 저장 장치 컨트롤러는,
    호스트로부터 데이터 읽기 요청을 수신하면, 읽기 요청된 데이터의 메타데이터를 참조하여 상기 읽기 요청된 데이터의 데이터 저장 방식을 확인하고, 상기 플래시 메모리로부터 데이터를 읽어들이는 것을 특징으로 하는 플래시 저장 장치.
  15. 제 14항에 있어서,
    상기 저장 장치 컨트롤러는,
    데이터 저장 방식이 소거 코딩 방식인 경우 상기 플래시 메모리로부터 복수의 원본 데이터 청크를 읽어들이고, 상기 데이터 저장 방식이 복제 방식인 경우 상기 플래시 메모리로부터 원본 데이터 또는 복제된 데이터 중 어느 하나를 읽어들이는 것을 특징으로 하는 플래시 저장 장치.
  16. 제 15항에 있어서,
    상기 저장 장치 컨트롤러는,
    상기 복수의 원본 데이터 청크 중 어느 하나 이상에 데이터 손실이 발생한 경우, 상기 플래시 메모리로부터 패리티 청크를 읽어들이고, 상기 패리티 청크를 이용하여 손실이 발생한 데이터를 복원하는 것을 특징으로 하는 플래시 저장 장치.
KR1020170114138A 2017-09-06 2017-09-06 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치 KR102356307B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170114138A KR102356307B1 (ko) 2017-09-06 2017-09-06 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170114138A KR102356307B1 (ko) 2017-09-06 2017-09-06 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190027279A KR20190027279A (ko) 2019-03-14
KR102356307B1 true KR102356307B1 (ko) 2022-01-26

Family

ID=65759808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170114138A KR102356307B1 (ko) 2017-09-06 2017-09-06 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102356307B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101265410B1 (ko) 2010-02-12 2013-05-16 가부시끼가이샤 도시바 반도체 메모리 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100526178B1 (ko) * 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
KR101679303B1 (ko) * 2010-09-13 2016-11-24 에스케이텔레콤 주식회사 비대칭 분산 파일 시스템 및 그 데이터 처리 방법
KR101993704B1 (ko) * 2012-08-24 2019-06-27 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101265410B1 (ko) 2010-02-12 2013-05-16 가부시끼가이샤 도시바 반도체 메모리 장치

Also Published As

Publication number Publication date
KR20190027279A (ko) 2019-03-14

Similar Documents

Publication Publication Date Title
US8788876B2 (en) Stripe-based memory operation
JP6422600B2 (ja) メモリにおけるストライプマッピング
US10055285B2 (en) Physical page, logical page, and codeword correspondence
US10127166B2 (en) Data storage controller with multiple pipelines
KR101447786B1 (ko) 파워 인터럽트 관리
US8799745B2 (en) Storage control apparatus and error correction method
US11531590B2 (en) Method and system for host-assisted data recovery assurance for data center storage device architectures
KR20130088173A (ko) 트랜잭션 로그 복구
US10467074B2 (en) Conditional journal for storage class memory devices
US11704196B2 (en) Reduced parity data management
US10574270B1 (en) Sector management in drives having multiple modulation coding
CN115202923A (zh) 非易失性存储器中的奇偶校验保护
US11177012B1 (en) Fast copy through controller
KR102356307B1 (ko) 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치
JP5908106B2 (ja) 妥当性マスクを記憶する装置および方法ならびに操作装置
TW202145243A (zh) 資料儲存裝置與資料處理方法
US11556261B2 (en) Memory stripe coding management
TWI673719B (zh) 在快閃記憶體上提升存取效能之控制方法
CN116909802A (zh) 用于经分区存储系统的动态rain
CN114822630A (zh) 一种基于mram缓存的混合型nvme ssd存储系统

Legal Events

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