KR102102248B1 - 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법 - Google Patents

솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법 Download PDF

Info

Publication number
KR102102248B1
KR102102248B1 KR1020180155318A KR20180155318A KR102102248B1 KR 102102248 B1 KR102102248 B1 KR 102102248B1 KR 1020180155318 A KR1020180155318 A KR 1020180155318A KR 20180155318 A KR20180155318 A KR 20180155318A KR 102102248 B1 KR102102248 B1 KR 102102248B1
Authority
KR
South Korea
Prior art keywords
spo
emulator
ssd
mapping table
metadata
Prior art date
Application number
KR1020180155318A
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 KR1020180155318A priority Critical patent/KR102102248B1/ko
Application granted granted Critical
Publication of KR102102248B1 publication Critical patent/KR102102248B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods

Landscapes

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

Abstract

솔리드 스테이트 드라이브(SSD) 에뮬레이터의 동작 테스트 방법이 개시된다. 본 발명의 일 실시예에 따른 SSD 에뮬레이터의 동작 테이트 방법은, 에뮬레이터에서 서든 파워 오프(Sudden Power-off, SPO) 시그널이 입력되는 경우, 소정의 메타 데이터들을 스토리지에 저장시키고, 스토리지에 저장된 메타 데이터를 이용하여 SPO 복구 알고리즘을 수행하여 매핑 테이블을 복구함으로써, SPO 복구 알고리즘을 SSD 에뮬레이터 상에서 테스트할 수 있게된다.

Description

솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법{METHOD FOR TESTING PERFORMANCE OF SOLID STATE DRIVCE EMULATOR}
본 발명은 SSD 에뮬레이터의 동작 테스트 방법에 관한 것으로서, 보다 구체적으로는 SSD 에뮬레이터에서 서든 파워 오프 복구 알고리즘을 테스트할 수 있는 SSD 에뮬레이터의 동작 테스트 방법에 관한 것이다.
플래시 메모리는 저전력, 고성능, 높은 내구성의 장점을 가진다. 최근 플래시 메모리의 가격이 하락하고, 용량이 커짐에 따라 낸드 플래시 메모리 기반의 저장장치인 솔리스 스테이트 드라이브(SDD)가 기존 하드 디스프 드라이버(HDD)를 대체하고 있다. SSD는 여러개의 플래시 칩, DRAM 버퍼와 컨트롤러로 구성되며, 멀티 채널과 멀티 웨이 구조를 활용하여 여러 칩에 동시에 읽기/쓰기 연산이 가능하다.
플래시 메모리 칩은 여러 개의 블록으로 구성되어 있고, 각 블록은 여러 개의 페이지를 가진다. 페이지는 읽기/쓰기 연산의 단위이며, 페이지에 데이터를 기록하기 전에 반드시 해당 블록을 지워야 하는 특성을 가진다. 그러나 지우기 연산은 블록 단위로 이루어지므로, 쓰기 연산을 하고자 하는 페이지와 같은 블록에 속한 다른 페이지들을 복사해야 한다. 이러한 특성들을 다루기 위해, SSD 내부에는 플래시 전환 계층(FTL; Flash Translation Layer)이라는 소프트웨어 레이어가 내장된다.
FTL은 플래시 메모리의 성능 향상과 수명 연장을 위해 효율적인 L2P(Logical Adress to Physical Adress) 주소 매핑 방식을 제공하고, 가비지 컬렉션(GC; Garbage Collection), 웨어-레벨링(Wear-leveling)과 같은 다양한 테크닉이 사용될 수 있다. 따라서, FTL의 동작 알고리즘은 SSD의 성능에 크게 영상을 미친다. 이러한 FTL의 중요성이 부각되면서 FTL 알고리즘을 최적화시키기 위한 연구들이 진행되어 왔다. 그러나, 저장장치에 내장되어 있는 FTL이 입출력 요청과 관련하여 가지는 정보는 매우 제한적이므로 성능 향상을 이루기에는 한계가 있다.
한편, 일반적인 SSD는 서든 파워 오프(Sudden Power Off) 상황이 발생한 경우 부팅 시에 데이터와 메타데이터의 불일치가 없도록 매핑 정보를 복구하는 SPOR(Sudden Power-off Recovery)을 수행한다.
SPO 상황에서의 복구 알고리즘 개발을 위해서 실제 하드웨어에서 FTL 코드를 사용하여 테스트를 진행한다. 실제 하드웨어에 FTL 코드를 적용하여 테스트를 할 경우, 온전하지 않은 FTL 동작으로 인해 하드웨어가 고장날 수 있고, 그로 인해 다시 하드웨어 제품을 재 생산해야하므로 FTL 개발 비용이 많이 든다는 단점이 있다.
본 발명은 전술한 문제 및 다른 문제를 해결하는 것을 목적으로 한다.
또한, 본 발명은 SSD 에뮬레이터에서 SPO 상황을 재현하여 소프트웨어 상에서 SPO 복구 알고리즘을 테스트해봄으로써, 온전하지 않은 FTL 동작으로 인해 하드웨어 저장장치가 고장날 가능성을 낮추고, 적은 비용으로 FTL을 개발할 수 있는 SSD 에뮬레이터의 동작 테스트 방법을 제공한다.
또한, 본 발명은 SSD 에뮬레이터에서 SPO 복구 알고리즘의 정확성을 테스트하고, SPO 복구 알고리즘의 정확성을 높일 수 있는 SSD 에뮬레이터의 동작 테스트 방법을 제공한다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 SSD 에뮬레이터 동작 테스트 방법은, 호스트(Host)으로부터 서든 파워 오프(Sudden Power-off, SPO) 시그널을 수신하는 단계; 상기 SPO 시그널을 수신하는 경우, 메타 데이터, OOB(Out of Band) 데이터, 캐시된 매핑 테이블(Cached Mapping Table, CMT)을 스토리지에 저장하는 단계; 상기 스토리지에 저장된 상기 메타데이터와 상기 OOB 데이터를 기초로 복구 매핑 테이블을 생성하는단계; 및 상기 매핑테이블과 상기 복구매핑테이블을 비교하는 단계;를 포함한다.
일 실시예에 의하면, 상기 SPO 시그널은, 상기 SSD 에뮬레이터를 통해 가상의 플래시 메모리에 데이터를 라이트 동작 및 리드 동작이 수행되는 중에 발생될 수 있다.
일 실시예에 의하면, 상기 메타 데이터는, DRAM 메타 데이터 및 NAND 메타 데이터를 포함할 수 있다.
일 실시예에 의하면, DRAM 메타 데이터를 이용하여 적어도 일부의 페이지에 대하여 리드 언콜렉터블(read uncorrectable) 에러를 발생시키는 단계;를 더 포함할 수 있다.
일 실시예에 의하면, 상기 복구 매핑 테이블은 NAND 메타 데이터를 이용하여 복구될 수 있다.
일 실시예에 의하면, 상기 SPO 시그널을 수신하는 경우, SPO 핸들러 프로그램을 호출하는 단계; 및 상기 SPO 핸들러 프로그램을 통해 상기 메타 데이터, OOB 데이터 및 캐시된 매핑 테이블을 스토리지에 저장하는 단계;를 더 포함할 수 있다.
일 실시예에 의하면, 상기 SPO 시그널을 통해 구현된 SPO 상태를 복구하는 SPO 복구 프로그램을 호출하는 단계; 및 상기 SPO 복구 프로그램을 통해 상기 복구 매핑 테이블을 생성하는 단계;를 더 포함할 수 있다.
일 실시예에 의하면, 상기 비교하는 단계는, 상기 SPO 시그널을 통해 상기 SPO 상태가 시작되었을 때 상기 매핑 테이블과 상기 복구 매핑 테이블을 비교하여 상기 SPO 복수 프로그램의 동작을 테스트 할 수 있다.
일 실시예에 의하면, 상기 저장하는 단계는, 상기 메타데이터, OOB 데이터, 매핑테이블을 파일 형태로 저장할 수 있다.
본 발명의 다른 측면에 따르면, 전술한 실시예들 중 어느 하나의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체를 포함한다.
본 발명에 따른 SSD 에뮬레이터의 동작 테스트 방법의 효과에 대해 설명하면 다음과 같다.
본 발명에 의하면, SSD 에뮬레이터에서 SPO 상황을 재현하여 소프트웨어 상에서 SPO 복구 알고리즘을 테스트해봄으로써, 온전하지 않은 FTL 동작으로 인해 하드웨어 저장장치가 고장날 가능성을 낮추고, 적은 비용으로 FTL을 개발할 수 있다.
또한, 본 발명에 의하면, 보다 간편한 방법으로 SSD 에뮬레이터에서 SPO 복구 알고리즘의 정확성을 테스트하고, SPO 복구 알고리즘의 정확성을 높일 수 있다.
또한, 본 발명에 의하면, SSD 에뮬레이터 환경에서 제공되는 다양한 메타 데이터를 활용하여 SPO 복구 알고리즘을 개선하거나 개발할 수 있는 환경을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 SSD 에뮬레이터의 구조를 개략적으로 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 SSD 에뮬레이터의 동작 테스트 방법의 흐름도이다.
도 3은 가상의 SPO 상황에서 SPO 복구 알고리즘을 적용하기 위해 이용하는 데이터들을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따라 SSD 에뮬레이터에서 SPO 상황을 재연시켜 SPO 복구 알고리즘을 테스트 하는 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따라 SSD 에뮬레이터 상에서 SPO 상황을 재연하는 구체적인 방법을 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
도 1은 본 발명의 일 실시예에 따른 SSD 에뮬레이터의 구조를 개략적으로 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 SSD 에뮬레이터는 가상의 플래시 메모리 시스템에 기초하여 구현될 수 있다. 상기 가상의 플래시 메모리 시스템의 구조는 Host O/S(30,31)위에 가상머신(Virtual Machine)을 통해 Guest O/S(10)가 동작하는 구조이다.
그리고, SSD 에뮬레이터(20)가 Host App 수준으로 구현되어 있으며, 기존의 SSD 저장장치에서 FTL이 장치 내부에 구현되어 있는 것과 달리 오픈 채널 SSD에서는 FTL이 호스트 수준으로 구현되어 있다. 본 발명의 일 실시예에서 SSD 에뮬레이터는 리눅스 커널의 오픈 채널 SSD 시스템으로 호스트 기반의 SSD 저장장치의 관리를 가능하게 한다. 그러나 본 발명은 이에 한정되는 것은 아니다. 예를 들어, 본 발명은 일반적인 SSD 저장장치(Black box model)를 에퓰레이션 하여 SPO 복구 알고리즘을 테스트하는 동작에서도 적용될 수 있음을 물론이다.
상기 SSD 에뮬레이터는 일 예로 SimpleSSD, VSSIM, FEMU, VNSIM 등이 있으며, 본 문서에서는 설명의 편의를 위해 FEMU 에뮬레이터를 예로 들어서 설명한다. FEMU는 QEMU 기반으로 만들어진 가상머신 관리자로서, VMware, Virtual Box 등과 같은 가상화 소프트웨어 계층으로 구현될 수 있다.
Guest OS(10)는 파일 시스템(File System)(11), 블럭 입/출력 레이어(Block I/O Layer)(12) 및 디바이스 드라이버(Device Driver)(13)를 포함할 수 있다.
파일 시스템(File System)(11)은, 파일에 대한 open/read/write/delete 등의 파일 단위의 동작을 제공하며, 파일을 디렉토리 구조로 관리하여 사용자에게 계층구조로 제공할 수 있다.
블럭 입/출력 레이어(Block I/O Layer)(12)는, 파일 시스템(11)이 블럭 장치에 대한 읽기 연산/쓰기 연산을 발생시키면 거쳐가는 레이어이다. 블럭 입/출력 레이어(12) 내부에서는 I/O 스케줄링(scheduling)을 통해 I/O의 처리 순서를 결정할 수 있으며, I/O의 서브미션(submission)과 완료(completion)를 처리할 수 있다.
디바이스 드라이버(Device Driver)(13)는 하드웨어와 Host O/S(31) 사이를 연결하는 기능을 수행한다. Host O/S(31)에서 디바이스의 특정 위치에 읽기 연산/쓰기 연산을 전달하면, 디바이스와 Host P/C가 연결된 인터페이스의 프로토콜을 따라 I/O를 전달해주고 응답을 받는 기능을 수행한다.
FEMU(20)는 오픈 채널(Open-Channel) SSD를 에뮬레이션 할 수 있다.
오픈 채널 SSD는 기존의 SSD가 처리하던 작업의 일부를 운영체제(O/S)가 수행할 수 있다. 이로 인해 오픈 채널 SSD는 운영체제에게 하드웨어 구조(channel/bank/plane/block/page)를 제공하고, NAND의 동작 (read/program/erase)을 전달받아 수행한다. 따라서, 운영체제는 FTL이 수행하던 mapping translation 동작을 수행한다.
전술한 바와 같이 상기 FEMU(20)는 오픈 채널 기반의 SSD 외에 일반적인 SSD 저장 장치도 에뮬레이션 할 수 있음을 물론이다.
호스트 인터페이스 레이어(Host interface Layer)(21)는, 운영체제에서 전달받은 block I/O request를 해석하여, FTL(22)에게 전달한다. 또한, 운영체제가 전달한 명령에 대한 핸들링(DMA transfer / completion 동작의 처리 등)을 수행한다.
플래시 변환 계층(FTL; Flash Translation Layer)(22)은 운영체제(O/S) 에서 전달한 논리 주소를 물리 주소(어떤 NAND page에 저장되어 있는지 혹은 어떤 NAND page로 쓰기 연산을 수행할 지)로 변환하는 작업을 수행한다. 또한 SSD의 유효 공간을 확보하는 가비지 콜렉션(Garbage collection) 동작과 NAND의 수명을 관리하기 위한 웨어-레블링(wear-leveling) 동작도 수행한다.
입/출력 에뮬레이터(I/O Emulator)(23)는, 낸드 플래시 메모리에 대한 에뮬레이션을 수행할 수 있다. FEMU(20)가 Host PC의 DRAM을 낸드 플래시(NAND flash)로 가정하고 에뮬레이션을 수행하는 구조이며, 입/출력 에뮬레이터(23)는 입/출력 수행 시간을 관리할 수 있다.
Host(20)는 Host O/S(31)와 Host DRAM(32)를 포함할 수 있다. Host O/S(31)는 가상화 프로그램(FEMU)를 수행시키는 운영체제일 수 있다. Host DRAM(32)은 전술한 바와 같이, FEMU(20)가 Host PC의 일부를 낸드 플래시로 할당받아 사용하는 구조를 제공할 수 있다.
도 2는 본 발명의 일 실시예에 따른 SSD 에뮬레이터의 동작 테스트 방법의 흐름도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 SSD 에뮬레이터 동작 테스트 방법은 에뮬레이터 환경과 시뮬레이터 환경에서 구현될 수 있다. 상기 에뮬레이터 환경은, SPO 핸들러 프로그램을 통해 수행될 수 있으며, 시뮬레이터 환경은 SPO 복구 알고리즘을 통해 수행될 수 있다. 이하에서는 SPO 핸들러 프로그램을 'SPO 핸들러'로 호칭하고, SPO 복구 알고리즘(프로그램)을 'SPO 리커버'로 호칭하여 설명하기로 한다.
호스트(Host)는 서든 파워 오프(Sudden Power-off, SPO) 시그널을 출력하여 SSD 에뮬레이터에 전달할 수 있다. 호스트(Host)는 SSD 에뮬레이터가 가상의 플래시 메모리에 데이터 쓰기 연산/읽기 연산을 수행하는 중에 SSD 에뮬레이터에 SPO 신호를 전달할 수 있다.
SSD 에뮬레이터는 상기 SPO 시그널을 수신함에 따라 SPO 상황이 발생되었음을 확인한다(S100).
SSD 에뮬레이터는 상기 SPO 시그널을 수신하는 경우, SPO 핸들러를 통해 메타 데이터, OOB(Out of Band) 데이터, 캐시된 매핑 테이블(Cached Mapping Table, CMT)을 스토리지에 저장할 수 있다(S110).
상기 메타 데이터는 상기 가상의 플래시 메모리에 저장된 데이터의 블록 매핑 테이블, 페이지 매핑 테이블, 섹터 매핑 테이블, 블록 혹은 페이지의 상태 정보 등을 포함할 수 있다.
또한, 상기 메타 데이터는, DRAM에 저장된 매핑 테이블과 메타 데이터를 포함할 수 있다. 또한, 상기 메타 데이터는 NAND 플래시 메모리의 대역외 (OOB:out of band) 데이터를 포함할 수 있다.
상기 SSD 에뮬레이터는 상기 DRAM 메타 데이터, NAND 메타 데이터, OOB 영역의 데이터 및 CMT Map 을 파일 형태로 상기 스토리지에 저장할 수 있다.
전술한 바와 같이, S100 및 S110은 에뮬레이터 환경에서 SPO 핸들러 프로그램을 통해 동작될 수 있다.
한편, SSD 에뮬레이터는 SPO 복구 알고리즘(프로그램)을 구동하여 상기 스토리지에 저장된 파일로부터 데이터를 읽어오는 동작을 수행할 수 있다(S120).
상기 SPO 복구 프로그램은, 상기 스토리지로부터 독출한 DRAM 메타 데이터를 이용하여 일부 페이지에 대하여 리드 언콜렉터블 상태로 만들 수 있다(S130).
보다 구체적으로는, SSD 에뮬레이터는 상기 스토리지에 저장된 메타 데이터와 OOB 데이터 및 캐싱된 매핑 테이블을 이용하여 가장 최근에 저장된 일부 데이터에 대하여 인위적으로 NAND 에러 상황을 발생시킴으로써, 실제 SPO 상황과 근접한 환경을 제공할 수 있다.
상기 SPO 복구 프로그램은, 상기 NAND 메타 데이터를 이용하여 캐시된 매핑 테이블(CMT)을 복구할 수 있다(S140).
보다 구체적으로는, 상기 SPO 복구 프로그램은, 상기 스토리지에 저장된 상기 메타 데이터와 상기 OOB 데이터에 기초하여 복구 매핑 테이블을 생성할 수 있다.
그런 후, SSD 에뮬레이터는 상기 복구한 캐싱된 매핑 테이블의 복구된 정도를 측정할 수 있다(S150).
도 3은 가상의 SPO 상황에서 SPO 복구 알고리즘을 적용하기 위해 이용하는 데이터들을 설명하기 위한 도면이다.
도 3을 참조하면, SSD는 DRAM 상에 메타 데이터를 유지하고 있다.
상기 DRAM이 갖는 메타 데이터(40)는 NAND 플래시에 데이터 쓰기 연산이 이루어지고, 라이팅된 데이터의 주소가 매핑되어 저장될 수 있다. 한편, NAND 플래시에 데이터가 지속적으로 라이팅 되는 경우, 해당 데이터의 매핑 정보 또한 지속적으로 변경될 수 있다. 이에 따라 DRAM의 메타 데이터(40)는 데이터가 쓰여지고 매핑 정보가 변경될 때 마다 업데이트 될 수 있다.
즉, NAND 플래시에 제1 쓰기 연산(W1)이 이루어지고, 상기 제1 쓰기 연산된 데이터들이 Map 1에 의해 매핑될 수 있으며, 제2 쓰기 연산(W2)이 이루어지고, 상기 제2 쓰기 연산된 데이터들이 Map 5에 의해 매핑될 수 있다. 여기서 제3 쓰기 연산(W3)이 이루어진 데이터들은 매핑 테이블에 매핑되기 전에 SPO 상황이 발생하는 경우, 실질적으로 NAND 플래시에 데이터 쓰기 연산이 이루어졌지만, DRAM 상에는 제3 쓰기 연산된 데이터(W3)들의 맵 정보가 저장되어 있지 않은 상태에서 SPO 상황이 발생된 것이다. 이 경우, 상기 제3 쓰기 연산된 데이터(W3)에 대응하는 DRAM의 메타 데이터는 존재하지 않으며, 나아가 NAND 플래시에 라이팅된 정보 또한 복구가 불가능한 상태가 된다.
CMT(Cached Mapping Table)는 DRAM 매핑 테이블의 일부를 캐싱해서 보유하고 있다. 즉, 총 8개의 매핑 테이블이 있는 것으로 가정할 때, 이 중에 3개가 캐싱된 매핑 테이블에 포함되어 있을 수 있다. 여기서, 상기 캐싱된 매핑 테이블 중 제1 매핑 테이블(map 0)과 제8 매핑 테이블(map 7)의 경우, SPO 발생시 오류가 발생한 페이지를 포함하는 매핑 테이블일 수 있다. 제8 매핑 테이블(map 7)이 SPO 발생 시점을 기준으로 최근에 데이터 라이팅이 된 페이지가 존재하는 경우, 데이터 복구 과정이 필요할 수 있다.
메타 플러시(Meta Flush)가 발생하는 경우, 디램의 메타 데이터(40)는 클린된 상태로 전환되고, 데이터가 지속적으로 라이팅되는 경우 디램의 메타 데이터(40) 또한 맵 데이터가 지정됨에 따라 지속적으로 변경될 수 있다.
그러나, SPO 발생 시점을 기준으로 최근에 쓰여진 데이터는 맵 정보가 존재하지 않기 때문에 해당 라이팅 데이터에 대응되는 메타 데이터가 DRAM 상에 존재하지 않고, SPO가 발생한 경우 쓰기 연산에 따른 데이터 자체가 복구할 수 없는 문제가 발생하게 된다.
이에 따라, 본 발명의 일 실시예에 의하면, 미리 정해진 SPO 알고리즘에 의해 스토리지에 파일 형태로 저장된 NAND 메타 데이터를 사용하여 DRAM의 메핑 테이블을 복구할 수 있다.
도 4는 본 발명의 일 실시예에 따라 SSD 에뮬레이터에서 SPO 상황을 재연시켜 SPO 복구 알고리즘을 테스트 하는 동작을 설명하기 위한 도면이다.
도 4를 참조하면, SDD 에뮬레이터는 소정의 데이터들을 가상의 플래시 메모리 공간에 읽기 연산 및 쓰기 연산을 수행할 수 있다. 소켓 통신 등을 통해 SPO 시그널이 수신되는 경우, SDD 에뮬레이터는 SPO 핸들러 함수(P1)를 호출하여, 메타 데이터, OOB 데이터, CMT를 파일 형태로 스토리지에 저장한다.
그런 후, SDD 에뮬레이터는 SPO 복구 프로그램(P2)을 통해 상기 스토리지에 저장된 메타 데이터, OOB 데이터를 읽어와서 SPO 복구 알고리즘을 수행할 수 있다.
SDD 에뮬레이터는 SPO 발생 시점의 매핑 테이블(MP1)과 복구한 매핑 테이블(MP2)을 비교함으로써, 복구 정도를 측정할 수 있다.
제1 매핑 테이블(MP1)은 SPO가 발생한 시점의 매핑 테이블이며, 제2 매핑 테이블(MP2)은 SPO 복구 프로그램에 의해 복구된 매핑 테이블이다. 제1 매핑 테이블(NP1)은 SPO 시그널이 발생한 시점에 가상의 플래시 메모리에 지속적으로 쓰기 연산 및 읽기 연산이 수행되기 때문에 실직적으로 SPO 상황에 영향을 받지 않을 수 있다.
제2 매핑 테이블(MP2)의 경우, 복구된 매핑 테이블에서 에러가 생긴 액티브 블럭에 리드 언콜렉터블 페이지들(U1,U2,U3)이 발생된 것을 알 수 있다.
도 5는 본 발명의 일 실시예에 따라 SSD 에뮬레이터 상에서 SPO 상황을 재연하는 구체적인 방법을 설명하기 위한 도면이다.
도 5의 (a)를 참조하면, 실제 하드웨어에서는 NAND 페이지의 OBB 영역을 사용하여 리드 언콜렉터블 페이지인지 여부를 판단한다. ECC를 통해 NAND 페이지에 쓰여진 데이터가 정상적인 데이터인지 판단한다.
그러나, SSD 에뮬레이터에서는 라이트 함수에 의해 가상의 플래시에 지속적으로 쓰기가 가능하므로 SPO 상황이 발생하더라도 데이터를 라이팅하는 중에 오류가 발생할 가능성이 존재하지 않는다.
이에 따라, 본 발명의 일 실시예에 의하면, SSD 에뮬레이터는 SPO 시그널에 응답하여, 어떤 페이지가 리드 언콜렉터블인지, 리드 가능한지 페이지 상태 비트맵(Page Status Bitmap)을 추가적으로 생성할 수 있다. 상기 페이지 상태 비트맵은 인위적으로 리드 언콜렉터블 페이지를 판단할 수 있는 비트맵이다.
SPO가 발생하면, 액티브 블럭 중 최근에 라이팅된 페이지는 오류가 발생했을 확률이 크므로, 상기 페이지들은 오류가 발생하였음을 알리는 비트(RU1,RU2, RU3)가 상기 페이지 상태 비트맵에 포함되어 있다.
이에 따라 도 4에서 페이지 U1,U2,U3들은 최근에 라이팅된 페이지들이며, 상기 U1, U2, U3에 오류가 있음을 인위적으로 알리는 비트맵을 설정하고, 상기 비트맵을 통해 복구된 매핑 테이블에서 해당 페이지들(U1,U2,U3)을 리드 언콜렉터블 상태로 표시한다.
상기 페이지 상태 비트맵은 메타 데이터에 기초하여 생성될 수 있다. 메타 데이터는 최근에 어떤 페이지를 쓰고 있는지 확인 가능하다.
전술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
P1: SPO 핸들러
P2: SPO 리커버

Claims (10)

  1. 솔리드 스테이트 드라이브(SSD) 에뮬레이터의 동작 방법에 있어서,
    호스트(Host)으로부터 서든 파워 오프(Sudden Power-off, SPO) 시그널을 수신하는 단계;
    상기 SPO 시그널을 수신하는 경우, 메타 데이터, OOB(Out of Band) 데이터, 캐시된 매핑 테이블(Cached Mapping Table, CMT)을 스토리지에 저장하는 단계;
    상기 스토리지에 저장된 상기 메타데이터와 상기 OOB 데이터를 기초로 복구 매핑 테이블을 생성하는단계; 및
    상기 매핑테이블과 상기 복구매핑테이블을 비교하는 단계;
    를 포함하는, 솔리드 스테이트 드라이브(SSD) 에뮬레이터의 동작 테스트 방법.
  2. 제 1 항에 있어서,
    상기 SPO 시그널은,
    상기 SSD 에뮬레이터를 통해 가상의 플래시 메모리에 데이터 쓰기 연산 및 읽기 연산이 수행되는 중에 발생되는 것을 하는 SSD 에뮬레이터의 동작 테스트 방법.
  3. 제 1 항에 있어서,
    상기 메타 데이터는,
    DRAM 메타 데이터 및 NAND 메타 데이터를 포함하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  4. 제 1 항에 있어서,
    DRAM 메타 데이터를 이용하여 적어도 일부의 페이지에 대하여 리드 언콜렉터블(read uncorrectable) 에러를 발생시키는 단계;
    를 더 포함하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  5. 제 1 항에 있어서,
    상기 복구 매핑 테이블은 NAND 메타 데이터를 이용하여 복구되는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  6. 제 1 항에 있어서,
    상기 SPO 시그널을 수신하는 경우, SPO 핸들러 프로그램을 호출하는 단계; 및
    상기 SPO 핸들러 프로그램을 통해 상기 메타 데이터, OOB 데이터 및 캐시된 매핑 테이블을 스토리지에 저장하는 단계;
    를 더 포함하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  7. 제 1 항에 있어서,
    상기 SPO 시그널을 통해 구현된 SPO 상태를 복구하는 SPO 복구 프로그램을 호출하는 단계; 및
    상기 SPO 복구 프로그램을 통해 상기 복구 매핑 테이블을 생성하는 단계;
    를 더 포함하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  8. 제 7 항에 있어서,
    상기 비교하는 단계는,
    상기 SPO 시그널을 통해 상기 SPO 상태가 시작되었을 때 상기 매핑 테이블과 상기 복구 매핑 테이블을 비교하여 상기 SPO 복구 프로그램의 동작을 테스트 하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  9. 제 1 항에 있어서,
    상기 저장하는 단계는,
    상기 메타데이터, OOB 데이터, 매핑테이블을 파일 형태로 저장하는 것을 특징으로 하는 SSD 에뮬레이터의 동작 테스트 방법.
  10. 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR1020180155318A 2018-12-05 2018-12-05 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법 KR102102248B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180155318A KR102102248B1 (ko) 2018-12-05 2018-12-05 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180155318A KR102102248B1 (ko) 2018-12-05 2018-12-05 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법

Publications (1)

Publication Number Publication Date
KR102102248B1 true KR102102248B1 (ko) 2020-04-20

Family

ID=70467540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180155318A KR102102248B1 (ko) 2018-12-05 2018-12-05 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법

Country Status (1)

Country Link
KR (1) KR102102248B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11404137B1 (en) 2021-02-09 2022-08-02 SK Hynix Inc. Memory system and operating method of memory system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130063244A (ko) * 2011-12-06 2013-06-14 주식회사 디에이아이오 비휘발성 메모리 시스템
KR20130128694A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR20170091389A (ko) * 2016-02-01 2017-08-09 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130063244A (ko) * 2011-12-06 2013-06-14 주식회사 디에이아이오 비휘발성 메모리 시스템
KR20130128694A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR20170091389A (ko) * 2016-02-01 2017-08-09 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11404137B1 (en) 2021-02-09 2022-08-02 SK Hynix Inc. Memory system and operating method of memory system

Similar Documents

Publication Publication Date Title
US10318324B2 (en) Virtualization support for storage devices
KR101466560B1 (ko) 호스트가 볼 때 디바이스 펌웨어 업데이트 효과들의 관리
TWI584125B (zh) 輸入/輸出裝置及計算主機相互運作
Hahn et al. Improving file system performance of mobile storage systems using a decoupled defragmenter
TWI674503B (zh) 用於測試固態儲存裝置之韌體的方法與系統以及電子設備
US8130554B1 (en) Securely erasing flash-based memory
KR101903817B1 (ko) 가상 디스크 스토리지 기술
US8521949B2 (en) Data deleting method and apparatus
US8239618B2 (en) System and method for emulating preconditioning of solid-state device
US9514002B2 (en) Incremental backups using retired snapshots
US9772907B2 (en) Incremental backups using retired snapshots
US8799745B2 (en) Storage control apparatus and error correction method
US20150039815A1 (en) System and method for interfacing between storage device and host
US20080147962A1 (en) Storage subsystem with multiple non-volatile memory arrays to protect against data losses
TW201619971A (zh) 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法
US20190087348A1 (en) Data backup method, data recovery method and storage controller
KR20140023944A (ko) 가상 디스크 스토리지 기술
US20130036256A1 (en) Method and apparatus of sanitizing storage device
US7222135B2 (en) Method, system, and program for managing data migration
US9983826B2 (en) Data storage device deferred secure delete
US11409451B2 (en) Systems, methods, and storage media for using the otherwise-unutilized storage space on a storage device
US8055835B2 (en) Apparatus, system, and method for migrating wear spots
KR102102248B1 (ko) 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법
Arani et al. An extended approach for efficient data storage in cloud computing environment
Huang et al. BVSSD: Build built-in versioning flash-based solid state drives

Legal Events

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