KR101114125B1 - Nand Flash File System And Method For Initialization And Crash Recovery Thereof - Google Patents

Nand Flash File System And Method For Initialization And Crash Recovery Thereof Download PDF

Info

Publication number
KR101114125B1
KR101114125B1 KR1020090033562A KR20090033562A KR101114125B1 KR 101114125 B1 KR101114125 B1 KR 101114125B1 KR 1020090033562 A KR1020090033562 A KR 1020090033562A KR 20090033562 A KR20090033562 A KR 20090033562A KR 101114125 B1 KR101114125 B1 KR 101114125B1
Authority
KR
South Korea
Prior art keywords
journal
block
file system
work area
blocks
Prior art date
Application number
KR1020090033562A
Other languages
Korean (ko)
Other versions
KR20100115057A (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 KR1020090033562A priority Critical patent/KR101114125B1/en
Publication of KR20100115057A publication Critical patent/KR20100115057A/en
Application granted granted Critical
Publication of KR101114125B1 publication Critical patent/KR101114125B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 낸드 플래시 파일 시스템에 관한 것으로, 더욱 상세하게는 갑작스런 전원의 유실, 시스템 에러 등으로 정상적인 종료 동작을 수행하지 못했을 경우 발생하는 플래시 상태 시 플래시 메모리 공간 분할 기법을 통해 빠른 시간 내에 복구할 수 있는 낸드 플래시 파일 시스템에 관한 것이다.The present invention relates to a NAND flash file system, and more particularly, a flash memory space partitioning technique can be used to recover a flash memory space in a fast time when a normal shutdown operation is not performed due to sudden power loss or system error. It is about NAND flash file system.

낸드 플래시 크래시 복구 블록 Nand Flash Crash Recovery Block

Description

낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법{Nand Flash File System And Method For Initialization And Crash Recovery Thereof}Nand Flash File System And Method For Initialization And Crash Recovery Thereof}

본 발명은 낸드 플래시 파일 시스템에 관한 것으로, 더욱 상세하게는 갑작스런 전원의 유실, 시스템 에러 등으로 정상적인 종료 동작을 수행하지 못했을 경우 발생하는 크래시 상태 시 플래시 메모리 공간 분할 기법을 통해 빠른 시간 내에 복구할 수 있는 낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법에 관한 것이다.The present invention relates to a NAND flash file system. More particularly, the present invention relates to a flash memory space partitioning technique that can be quickly restored in a crash state caused by failure of a normal shutdown operation due to sudden power loss or system error. The NAND flash file system and its initialization and crash recovery method.

낸드 플래시 메모리는 비휘발성 특성과 빠른 속도, 작은 크기 등의 이유로 휴대용 전자기기의 저장매체로 널리 사용되고 있다.NAND flash memory is widely used as a storage medium for portable electronic devices due to its nonvolatile characteristics, high speed, and small size.

낸드 플래시 파일 시스템은 낸드 플래시 메모리가 내장된 기기에서 운영체제가 낸드 플래시를 저장 공간으로 운용하기 위한 시스템이다. 이러한 파일 시스템은 낸드 플래시의 지움(erase) 횟수 제한, 덮어쓰기(overwrite) 불가능 등의 특징으로 인해 하드 디스크 드라이브를 대상으로 하는 파일 시스템과 다른 특징을 갖는다.The NAND flash file system is a system for operating the NAND flash as a storage space in a device with NAND flash memory. Such a file system has a different feature from a file system targeting a hard disk drive due to the limitation of NAND flash erasing and overwriting.

그 중 중요한 특징 중 하나는 파일 시스템의 초기화이다. 파일 시스템을 사용하기 위해서는 실제 파일 시스템 자체가 요구하는 정보를 저장 매체에서 불러오 는 동작을 수행하여야하고 이를 플래시 파일 시스템에서의 초기화라고 부른다.One of the important features is the initialization of the file system. In order to use the file system, the information required by the actual file system itself must be loaded from the storage medium, which is called initialization in the flash file system.

초기화 과정에서는 파일 시스템의 메타데이터를 읽어 시스템의 메인 메모리에 파일 시스템을 사용하기 위한 데이터를 구축한다. In the initialization process, the metadata of the file system is read to construct data for using the file system in the main memory of the system.

그런데 만약 파일 시스템이 이전에 비정상적으로 종료된 경우 메타데이터가 유실되거나 기록된 메타데이터와 실제 데이터가 불일치할 수 있다. 이러한 상황을 파일 시스템의 무결성(intergrity)이 깨졌다고 하며 이것을 크래시(crash) 상황이라고 부른다.However, if the file system is abnormally terminated before, the metadata may be lost or the recorded metadata may be inconsistent with the actual data. This situation is known as the file system's intergrity is broken, and this is called a crash situation.

따라서, 초기화 과정에서는 크래시 상황을 판별할 수 있어야 하며, 무결성 상태로 회복하기 위한 크래시 복구(crash recovery) 기법이 필요하다.Therefore, in the initialization process, a crash situation must be able to be determined, and a crash recovery technique for recovering to an integrity state is required.

일반적으로 JEFS(Journaling Flash File System)나 YAFFS(Yet Another Flash File System)와 같은 로그 기반 구조의 파일 시스템은 모든 메타데이터가 데이터와 함께 메모리 공간 전체에 분산되어 저장된 로그 기반 구조를 사용하므로 정상적인 초기화 과정에서도 모든 메타데이터를 찾아내기 위해 플래시 전체 공간에 대한 읽기 동작이 수행되기 때문에 특별한 크래시 복구 기법을 가지지 않는다. 이러한 방식은 크래시 상황에서도 특별한 부가적인 복구 기법 없이 초기화를 정상적으로 종료할 수 있지만, 수행 시간이 매우 오래 걸리는 단점이 있다.In general, log-based file systems such as the Journaling Flash File System (JEFS) or Yeet Another Flash File System (YAFFS) use a log-based structure that is stored with all metadata distributed throughout the memory space along with the data. Does not have a special crash recovery technique because reads are performed over the entire flash space to find all metadata. Although this method can terminate initialization normally even in a crash situation without any additional recovery technique, the execution time is very long.

상기와 같은 단점을 해결하기 위한 빠른 초기화를 기법이 "A fast start-up technique for flash memory based computing systems"의 논문(저자:KS Yim, J Kim, K Koh, 출판:2005년 ACM Symposium on Applied computing 학술대회의 프로시딩)에서 스냅샷(snapshot) 기법이라는 이름으로 제안된 바 있다.In order to solve the above shortcomings, the technique of "A fast start-up technique for flash memory based computing systems" is published in KS Yim, J Kim, K Koh, published by 2005 ACM Symposium on Applied computing The procedure was proposed in the name of the snapshot technique.

상기 논문에서 제시된 기술에 따르면, 스냅샷 기법은 파일 시스템이 종료되는 시점에 메인 메모리 내에 저장되어 있는 파일 시스템의 메타 데이터 구조를 플래시 메모리의 미리 약속된 구역에 저장하고, 초기화 시점에 해당 구역만을 읽어들여 초기화를 수행한다. 이 기법은 빠른 초기화 속도를 보이지만, 크래시 상황에서 크래시 복구 수행시간이 명확하게 제시하고 있지 않다. 즉, 고속 결함 복구 기법을 제시하여 기존 플래시 파일 시스템에서의 초기화 기법을 최적화하였지만, 이는 기존 YAFFS에서 읽기 명령의 수행 횟수를 줄이기 위해 사용되는 방법과 다르지 않으며 크래시가 발생한 상황에는 YAFFS와 유사한 수행시간을 보일 것으로 예측할 수 있다.According to the technique proposed in the above paper, the snapshot technique stores the metadata structure of the file system stored in main memory at the end of the file system in a predetermined area of the flash memory, and reads only the corresponding area at the time of initialization. To perform initialization. This technique shows fast initialization speed, but the crash recovery time is not clearly shown in the crash situation. In other words, we proposed a fast fault recovery method to optimize the initialization method in the existing flash file system, but this method is not different from the method used to reduce the number of read commands in the existing YAFFS. You can expect to see it.

또한, "The Design of efficient initialization and crash recovery for log-based file systems over flash memory"의 논문(저자: Wu, C.H., T.W. Kuo, L.P. Chang 출판: 2006년 ACM Transactions on Storage 학술대회의 프로시딩)에서 제안된 로그 기반의 기법은 파일에 일어나는 쓰기/지움 연산을 모두 로그로 기록하고 초기화 시점에 로그만을 읽어들여 파일 시스템의 메타데이터를 재구축하여 초기화를 효율적으로 수행한다. 여기서, 로그는 파일 시스템의 사용에 따라 계속해서 생겨나기 때문에 특정 블록을 예약해서 사용하지 않고, 앞쪽의 몇 개 블록을 할당해두고 로그를 기록하기 위해 수시로 할당되는 로그 세그먼트 블록들의 번호를 기록하는 방식을 사용한다. 각 로그는 로그 세그먼트 블록 내에 페이지 단위로 기록되며 로그 세그먼트는 임의의 블록에 수시로 할당된다. 그리고 메모리 가장 앞쪽 공간에 로그 세그먼트 디렉토리를 할당하고 이에 로그 세그먼트들의 할당 및 해제 정보를 저장한다. Also proposed in a paper in "The Design of efficient initialization and crash recovery for log-based file systems over flash memory" (author: Wu, CH, TW Kuo, LP Chang published: Procedure of the 2006 ACM Transactions on Storage Conference). The log-based method records all the write / erase operations occurring in the file as a log, and reads the log only at the time of initialization to efficiently reconstruct the metadata of the file system. In this case, the log is generated continuously according to the use of the file system. Therefore, the number of log segment blocks, which are frequently allocated to record the log, is allocated to a few blocks in the first place without reserving a specific block. Use Each log is written page by block within a log segment block, and log segments are frequently assigned to any block. It allocates a log segment directory in the front space of memory and stores log segment allocation and free information.

그런데 종래에 개시된 기술은 다음과 같은 문제점들을 가지고 있다.However, the conventionally disclosed technology has the following problems.

첫째, 스냅샷 기법의 경우 파일 시스템이 정상적으로 종료된 경우 약속된 위치에 저장된 메타데이터들을 바로 읽어와서 초기화를 수행할 수 있기 때문에 매우 효율적인 성능을 보인다. 그러나 크래시가 발생한 상황에서는 JFFS나 YAFFS가 동일하게 거의 전체 플래시 메모리 영역에 대한 읽기를 수행하여야한다. 이때의 초기화 수행성능을 빅오(O) 복잡도 표기 기법으로 표현하면 플래시 메모리의 용량을 n이라 할 때 O(n)으로 정리할 수 있으며, 이것은 플래시 메모리의 용량이 증가하면 할수록 초기화 수행 성능도 선형적으로 비례하여 증가함을 의미한다.First, the snapshot technique shows very efficient performance when the file system is shut down normally because the metadata stored in the promised location can be directly read and initialized. However, in the event of a crash, JFFS or YAFFS should read almost the entire flash memory area equally. In this case, the performance of the initialization can be expressed in big O (O) complexity notation. The capacity of the flash memory can be summarized as O (n) when the capacity of n is n. It increases in proportion.

이는 최근 플래시 메모리의 사용이 급격하게 증가하면서 용량의 발전 속도 또한, 크게 증가하고 있다는 점을 감안할 때, 플래시 파일 시스템의 초기화 속도가 미래에 플래시 메모리 활용에 있어서 큰 문제가 될 수 있음을 알 수 있다.Considering the recent rapid increase in the use of flash memory, the rate of development of capacity has also increased significantly. Therefore, it can be seen that the initialization speed of the flash file system may be a big problem in the future of flash memory utilization. .

둘째, 로그 기반 기법의 경우 초기화에서는 스냅샷 기법과 유사한 효율적인 성능을 보이지만 로그를 페이지 단위로 기록하여야 하는 한계로 인해 페이지 용량만큼 로그가 생겨날 때까지 캐싱해두기 때문에 언마운트가 제대로 이루어지지 않으면 캐싱된 정보가 소실되며 이로 인한 크래시 현상을 복구해주어야 한다. Second, in the case of log-based technique, the initialization shows similar performance as the snapshot technique, but because of the limitation of log recording by page, the cache is cached until the page size is generated. The information will be lost and you will have to recover from the crash.

이때 이미 기록된 로그 정보를 활용할 수 있기 때문에 스냅샷보다는 오류복구에 걸리는 시간이 더 작을 것으로 예상되지만, 메타데이터가 유실된 데이터가 어느 공간에 위치하고 있는지 알 수 없기 때문에 플래시 메모리 내의 사용되지 않은 공간을 모두 검색하여야 한다. 따라서, 이 기법 또한 플래시 메모리의 용량에 따라 크래시 복구 수행시간이 O(n)의 형태로 선형적으로 증가할 수 있다.At this time, it is expected to take less time to recover from the error than the snapshot because it can use the log information already recorded, but because the metadata does not know in which space the lost data is located, All must be searched. Therefore, this technique can also increase linearly the crash recovery execution time in the form of O (n) depending on the capacity of the flash memory.

상기와 같이 현재 제안된 플래시 파일 시스템들은 공통적으로 크래시 복구의 수행시간이 플래시 메모리의 용량에 따라 선형적으로 비례하여 증가하므로 플래시 메모리를 사용하는 기기들의 초기화 수행 시간을 증가시키는 문제점으로 작용하며, 이로 인해 대용량 플래시 메모리에 적용시 문제가 될 수 있다.As described above, the currently proposed flash file systems have a problem of increasing the initialization execution time of devices using the flash memory because the execution time of the crash recovery increases linearly in proportion to the capacity of the flash memory. This can be a problem when applied to large flash memory.

상기와 같은 문제점을 해결하기 위해 안출된 것으로서 본 발명의 목적은 특정 시점에는 플래시 메모리의 한정된 작업 영역 내에서만 쓰기 작업이 이루어지도록 구성하여 비정상적인 종료로 인한 크래시 발생시 낸드 플래시 용량에 무관하게 빠른 복구가 가능한 낸드 플래시 파일 시스템을 제공하는 데 있다.In order to solve the above problems, an object of the present invention is to perform a write operation only within a limited working area of a flash memory at a specific time, so that a quick recovery is possible regardless of NAND flash capacity when a crash occurs due to abnormal termination. It is to provide a NAND flash file system.

도 1a는 본 발명의 바람직한 실시예에 따른 시스템 구성도이고, 도 1b는 도 1a의 상세 블록도이다.Figure 1a is a system block diagram according to a preferred embodiment of the present invention, Figure 1b is a detailed block diagram of Figure 1a.

도 1을 참조하면, 본 발명의 낸드 플래시 파일 시스템은 다수의 블록으로 구분된 플래시 메모리(10)와, 상기 블록의 작업 영역을 다수 개로 세분화하여 할당하되, 현재 작업 중인 영역 정보를 기록 관리하는 운영체제(20)를 포함하는 것을 특징으로 한다.Referring to FIG. 1, the NAND flash file system of the present invention divides and allocates a flash memory 10 divided into a plurality of blocks and a work area of the block into a plurality of operating systems, and records and manages information on a currently working area. It characterized by including (20).

여기서, 상기 플래시 메모리(10)의 블록은 시스템 설정 정보를 기록한 파일 시스템 설정 값과 저널 블록의 메타 데이터를 기록한 저널블록테이블을 저장하는 슈퍼 블록(110)과, 작업 영역 내에 있는 저널정보를 기록하는 저널 블록(120)과, 데이터와 아이노드가 기록되는 데이터 블록(130) 및 현재 사용되고 있지 않은 프리 블록(140)을 포함하는 것을 특징으로 한다.The block of the flash memory 10 may include a super block 110 for storing a file system setting value for recording system setting information and a journal block table for recording metadata of a journal block, and a journal information for recording journal information in a work area. Journal block 120, data block 130 on which data and inodes are written, and free block 140, which is not currently being used.

그리고 상기 모든 블록(110 ~ 140) 내 페이지의 여분 영역(Spare area)에 에러교정코드(Error Correction Code)와 버전이 저장되는 것을 특징으로 한다.In addition, an error correction code and a version are stored in a spare area of a page in all of the blocks 110 to 140.

또한, 상기 저널블록테이블(JBT)은 1개 이상의 페이지로 구성되고, 각 페이지의 여분 영역에는 현재의 페이지에 포함된 저널 블록의 개수, 언마운트 정상 수행 여부, 현재의 작업 영역의 시작 블록 번호, 다음 사용될 작업 영역의 시작 블록 번호 중 적어도 하나를 포함하여 기록되는 것을 특징으로 한다.In addition, the journal block table (JBT) is composed of one or more pages, each page has an extra area, the number of journal blocks included in the current page, whether or not unmounted normally, the start block number of the current working area, And at least one of a start block number of a work area to be used next.

그리고 상기 슈퍼블록(110)은 복수 개의 블록으로 구성되고, 슈퍼 블록 데이터의 유실을 막고 유실 시 복구를 위한 복제블록과 여분의 데이터를 위한 예비블록을 포함하는 것을 특징으로 한다.In addition, the superblock 110 is composed of a plurality of blocks to prevent the loss of the super block data, it characterized in that it comprises a duplicate block for recovery and spare data for recovery in case of loss.

또한, 상기 저널 블록(120)은 저널들이 메인 메모리에 캐싱되고 캐쉬 내의 저널들의 크기가 한 페이지 크기에 도달하는 경우 저장되되, 작업 영역 외부의 아이노드에 대해 삭제가 이루어지면 해당 정보의 저널과 함께 그때까지 캐쉬에 저장된 저널들이 즉각 저장되는 것을 특징으로 한다.In addition, the journal block 120 is stored when the journals are cached in the main memory and the size of the journals in the cache reaches one page size. Until then, journals stored in the cache are immediately stored.

상기 슈퍼블록(110)은 모든 작업 영역에 포함되는 저널블록(120)의 메타데이터를 저장 관리하는 블록으로 전체 작업 영역에 하나(슈퍼블록이 복수 개로 구성될 경우 블록은 복수 개로 구성될 수 있음)만 존재하고, 각 작업 영역에는 저널블록(120), 데이터 블록(130) 및 프리 블록(140)이 혼합되어 존재할 수 있다.The superblock 110 is a block for storing and managing metadata of the journal block 120 included in all work areas (one block in the entire work area. Only there exists a journal block 120, a data block 130, and a free block 140 in each working area.

한편, 상기 운영체제(20)는 세분된 다수의 작업영역을 설정하고 관리하는 작업영역 제어모듈(210)과, 파일 시스템의 초기화를 수행하는 초기화 모듈(220)과, 상기 초기화 수행시 크래시가 발생한 경우 크래시를 복구하는 크래시 복구 모듈(230)을 포함하는 것을 특징으로 한다.The operating system 20 may include a work area control module 210 for setting and managing a plurality of subdivided work areas, an initialization module 220 for initializing a file system, and a crash when performing the initialization. It is characterized in that it comprises a crash recovery module 230 for recovering the crash.

여기서, 상기 작업영역 제어모듈(210)은 세분된 다수의 작업영역을 설정하고, 캐쉬에 한 페이지 분량의 저널이 차거나 작업 영역 외부에서 삭제된 아이노드가 있는 경우 또는 현재 작업 영역에 할당된 저널 블록(120)이 남아있지 않고 추가 할당에 실패한 경우 작업영역을 순차적으로 이동하고, 다음 작업영역으로 이동시 저널이 기록된 페이지 여분 영역에 다음 작업영역의 시작 블록 번호를 기록하는 것을 특징으로 한다.Here, the work area control module 210 sets a plurality of subdivided work areas, and if a cache of one page is occupied in the cache or there is an inode deleted outside the work area, or the journal block allocated to the current work area. If 120 does not remain and additional allocation fails, the work area is sequentially moved, and when moving to the next work area, the start block number of the next work area is recorded in the page spare area where the journal is recorded.

그리고 상기 작업영역 제어모듈(210)은 블록 내에 포함된 모든 페이지가 불필요한 데이터를 기록하고 있는 경우 가비지 콜렉션(garbage collection)에 의해 저널 블록(120)과 데이터 블록(130)에 대한 삭제 연산을 수행하되, 슈퍼블록(110)의 저널 블록 테이블 정보를 다음 슈퍼 블록에 기록한 뒤 삭제 연산을 수행하는 것을 특징으로 한다.The workspace control module 210 performs a delete operation on the journal block 120 and the data block 130 by garbage collection when all pages included in the block are recording unnecessary data. After the journal block table information of the superblock 110 is recorded in the next superblock, a delete operation is performed.

또한, 상기 초기화 모듈(220)은 전체 슈퍼 블록(110)들 각각에 대해 첫 번째 페이지의 여분 영역에 저장된 정보를 통해 유효한 슈퍼블록을 추출하고, 상기 유효한 슈퍼블록 중 가장 최신의 저널 블록 테이블을 구비한 슈퍼 블록을 추출하여 언마운트가 정확히 수행된 경우 상기 가장 최신의 저널 블록 테이블을 이용해 전체 저널을 추적하여 초기화를 수행하는 것을 특징으로 한다.In addition, the initialization module 220 extracts a valid superblock through the information stored in the spare area of the first page for each of the superblocks 110, and has a most recent journal block table among the valid superblocks. When the unmounting is performed correctly by extracting a super block, the entire journal is tracked using the most recent journal block table, and the initialization is performed.

즉, 슈퍼 블록(110)이 복수 개로 존재할 경우 각 블록의 첫 번째 페이지의 여분 영역에 저장된 에러교정코드(ECC)가 유효한지 여부에 따라 유효한 슈퍼블록을 추출하고, 상기 추출된 유효 슈퍼블록 중 버전 정보에 따라 가장 최신의 저널 블록 테이블을 구비한 슈퍼블록을 추출하게 된다.That is, when there are a plurality of super blocks 110, a valid super block is extracted according to whether an error correction code (ECC) stored in the extra area of the first page of each block is valid, and a version of the extracted valid super blocks is extracted. According to the information, the superblock with the most recent journal block table is extracted.

그리고 상기 크래시 복구 모듈(230)은 언마운트가 정확히 수행되지 않은 경우 크래시가 발생한 것으로 판단하고, 가장 최신의 저널 블록 테이블을 기반으로 저널 정보를 읽고 버전 정보를 이용하여 가장 마지막으로 기록된 저널을 찾아서 해당 저널의 여분 영역에 기록된 작업 영역 정보를 통해 가장 최신의 작업 영역을 파악하고, 작업 영역 내에서 변경되었지만 저널에 기록되지 않은 블록들을 순차적으로 검색하면서 메타데이터 정보를 복구하는 것을 특징으로 한다.The crash recovery module 230 determines that a crash has occurred when the unmount is not performed correctly, reads journal information based on the most recent journal block table, and finds the last recorded journal using version information. The latest work area is identified through the work area information recorded in the spare area of the journal, and the metadata information is recovered while sequentially searching for blocks changed in the work area but not recorded in the journal.

본 발명을 통해 기대할 수 있는 효과는 플래시 파일 시스템의 크래시 복구 성능의 향상이다.An effect that can be expected through the present invention is an improvement in crash recovery performance of a flash file system.

특히, 크래시 복구에 소요되는 시간이 플래시 메모리의 용량에 비례하던 기존 기법의 한계를 극복하고 이에 비례하지 않는 수행시간을 갖는 기법을 제안함으로써 앞으로 플래시 메모리의 용량이 증가하더라도 크래시 복구 수행 시간은 거의 증가하지 않는 탁월한 효과가 발생한다. 이는 실제 플래시 메모리가 장착된 기기를 사용할 때 기기의 초기화 시간이 크래시 복구 수행 성능에 크게 영향을 받지않도록 하는 효과를 가진다.In particular, by overcoming the limitations of the existing techniques where the time required for crash recovery is proportional to the capacity of the flash memory, and suggesting a method with an execution time that is not proportional to this, the crash recovery time is almost increased even if the capacity of the flash memory is increased in the future. An excellent effect does not occur. This has the effect that the initialization time of the device when using the device equipped with the actual flash memory is not significantly affected by the performance of crash recovery.

이하, 본 발명의 바람직한 실시예에 대하여 도면을 참조하여 상세하게 설명하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

플래시 파일 시스템의 크래시 복구를 효율적으로 수행하기 위해 플래시 메모리의 블록에 대해 작업영역을 설정해 사용하는 기법을 설계하였다. In order to perform crash recovery of the flash file system efficiently, we designed a scheme that uses a working area for a block of flash memory.

본 발명에서 해결하고자 하는 종래 크래시 복구 기법의 문제점은 전체 플래시 공간에 따라 수행시간이 선형적으로 증가한다는 점이다. A problem of the conventional crash recovery scheme to be solved in the present invention is that the execution time increases linearly with the entire flash space.

이를 해결하기 위해 파일 시스템이 사용하는 블록의 영역을 세분화하여 현재 작업 중인 영역이 어디인지 기록해두는 작업 영역 설정 방식을 이용하여 크래시 복구 수행시간을 매우 작은 상수값으로 한정시키는 기법을 제안한다.To solve this problem, we propose a method to limit the crash recovery time to a very small constant value by using a work area setting method that divides the area of the block used by the file system and records the current work area.

예를 들어, 0~9까지 10개의 블록에 대해 현재 작업 중이라면 이 정보를 약속된 공간에 기록하고, 이후 해당 공간을 모두 사용하거나 그 외 설정된 조건이 만족되면 이에 대한 메타데이터를 기록한 후 10~19까지로 작업영역을 이동하고 이 정보를 업데이트 한다.For example, if you are currently working on 10 blocks from 0 to 9, record this information in the promised space, and then record metadata about the space if all the space is used or other set conditions are met. Move your workspace to 19 and update this information.

이러한 방식으로 크래시 복구시 탐색해야 하는 공간의 크기를 제한하여 결함 복구 수행시간을 플래시 메모리 용량과 무관하게 단축시킬 수 있다.In this way, by limiting the amount of space that must be explored during crash recovery, fault recovery time can be reduced regardless of flash memory capacity.

본 발명은 전체 플래시 메모리에 대해 이루어지는 변경 내용을 하나의 작업 영역 내에 기록하는 구조의 설계, 작업 영역의 할당 및 변이에 관한 정보를 유실하지 않는 설계, 이러한 구조에서의 효율적인 크래시 복구 기법 제공을 특징으로 한다. 이러한 특징에 대해 하기의 설계 내용에서 보다 세부적으로 기술하기로 한다.The present invention is characterized by the design of a structure that records changes made to the entire flash memory in one working area, the design that does not lose information about the allocation and variation of the working area, and the provision of an efficient crash recovery technique in such a structure. do. These features will be described in more detail in the following design.

1) 블록의 분류1) Classification of blocks

도 1b를 참조하면, 플래시 메모리(10) 내의 각 블록은 슈퍼블록(110), 저널 블록(120), 데이터불록(130), 프리 블록(140)의 4가지로 구분된다. Referring to FIG. 1B, each block in the flash memory 10 is divided into four types, a super block 110, a journal block 120, a data block 130, and a free block 140.

상기 슈퍼블록(110)은 플래시 메모리(10)의 첫 블록부터 2개 이상의 블록으로 구성되고 파일 시스템 설정값과 저널블록의 메타데이터가 저장된다. 파일 시스템 설정값은 각 블록의 첫 페이지에 기록되며, 현재 파티션의 크기나 첫 번째 블록 번호 등 파일 시스템이 생성될 때 결정되는 정보들이 저장된다. 상기 파일 시스템 설정값은 파일 시스템의 설정에 따라 변경될 수 있다. 다만, 일반적인 파일 시스템 정보들 외에 한 작업 영역에 속하는 블록의 개수, 슈퍼블록의 크기 등은 반드시 포함되어야 한다.The superblock 110 is composed of two or more blocks from the first block of the flash memory 10 and stores file system setting values and metadata of journal blocks. The file system settings are recorded on the first page of each block, and the information determined when the file system is created, such as the size of the current partition or the first block number, is stored. The file system setting value may be changed according to the setting of the file system. However, in addition to general file system information, the number of blocks belonging to a work area, the size of a superblock, and the like must be included.

그리고 저널블록의 메타데이터는 저널 블록 테이블(Journal Block Table, 이하 "JBT"라고 함)에 저장된다. The metadata of the journal block is stored in a journal block table (hereinafter referred to as "JBT").

상기 JBT는 저널 블록(120)들의 번호가 저장된 공간이며 1개 이상의 페이지로 구성되고, 각 페이지의 여분 영역에는 현재의 페이지에 포함된 저널 블록의 개수, 언마운트 정상 수행 여부, 현재의 작업 영역의 시작 블록 번호, 다음 사용될 작업 영역의 시작 블록 번호가 기록된다. 상기와 같은 정보를 통해 JBT의 크기와 언마운트가 정상적으로 수행되었는지 그리고 현재와 다음 작업 영역의 위치를 알 수 있다.The JBT is a space in which the number of journal blocks 120 is stored and is composed of one or more pages. The extra area of each page includes the number of journal blocks included in the current page, whether or not the normal operation is performed, and the current work area. The start block number, the start block number of the work area to be used next, is recorded. The above information shows the size and unmount of the JBT and whether the current and next work areas are located.

상기 저널 블록(120)은 저널이 기록되는 공간이다. 저널은 쓰기/지움 등의 업데이트 정보가 저장되며 현재 작업 영역 내에 있는 저널 블록에 페이지 단위로 기록된다. 저널들은 메인 메모리에 캐싱되며 캐쉬 내에서 중복되는 저널들을 정리하는 동작을 수행한다. 이와 동시에 각 저널들은 저널이 포함된 파일의 메타데이터 구조 내에서 시간 순으로 연결된 링크드 리스트 형태로 유지된다. 캐쉬 내 저널들의 크기가 한 페이지의 크기에 도달하면 실제 저널 블록에 기록된다. The journal block 120 is a space where a journal is recorded. The journal stores update information such as write / erase and writes page by page in the journal block within the current work area. Journals are cached in main memory and clean up duplicate journals in the cache. At the same time, each journal is maintained as a linked list in chronological order within the metadata structure of the file containing the journal. When the size of the journals in the cache reaches the size of one page, they are written to the actual journal block.

크래시가 발생하더라도 작업 영역 내에서 변경이 이루어진 내용은 작업 영역을 스캔함으로써 파악할 수 있지만 다른 영역에 있던 아이노드가 삭제된 정보는 해당 정보가 기록되지 않으면 다시 복구할 수 없으므로 만약 작업영역 외부의 아이노드에 대해 삭제가 이루어진다면 삭제 정보가 유실되지 않도록 해당 정보의 저널과 함께 그때까지 캐쉬에 저장되어있던 저널들을 즉각 기록한다. Even if a crash occurs, changes made in the work area can be identified by scanning the work area, but information deleted by an inode in another area cannot be recovered unless that information is recorded. If the deletion is done, the journals that have been stored in the cache are recorded immediately together with the journal of the information so that the deletion information is not lost.

이와 같이 저널을 기록하면 정보의 유실을 막는 효과가 발생하지만 한 페이지 내에 남는 공간이 생겨서 자원의 사용 효율이 떨어질 수 있는 트레이드-오프(trade-off) 관계에 있다. 그리고 저널이 저장되는 각 페이지의 여분 영역에는 다음으로, 저널이 기록될 작업 영역의 번호가 기록된다.Although the journal is recorded in this way, the loss of information is prevented, but there is a trade-off relationship in which a space left in one page may be used to reduce the efficiency of resource usage. Then, in the spare area of each page where the journal is stored, the number of the work area where the journal is to be recorded is recorded next.

그리고 상기 데이터 블록(130)은 데이터와 아이노드가 기록되는 블록이고, 이외의 블록들은 모두 현재 사용되지 않는 프리 블록(140)으로 간주한다.The data block 130 is a block in which data and an inode are written, and all other blocks are regarded as a free block 140 that is not currently used.

도 2는 본 발명의 바람직한 실시예에 따른 저널 블록을 C언어의 구조체 형태로 도시한 것이다. Figure 2 shows a journal block in the form of a C language structure according to a preferred embodiment of the present invention.

도 2를 참조하면, _u16은 기호가 붙지않은 정수형(unsigned integer) 형태의 16비트 자료형을 나타내고, _u32는 같은 형태의 32비트 자료형을 나타낸다.Referring to FIG. 2, _u16 represents an unsigned integer type 16-bit data type, and _u32 represents a 32-bit data type of the same type.

한 저널의 크기는 총 16바이트이며, 해당 저널이 표현하는 아이노드의 ID와 한 연산이 시작되는 파일 내의 오프셋, 연산의 사이즈, 연산의 종류를 나타내는 플래그, 그리고 페이지 주소가 기록된다.The size of a journal is 16 bytes in total, and the ID of the inode represented by the journal, the offset in the file where the operation starts, the size of the operation, a flag indicating the type of operation, and the page address are recorded.

한 저널이 나타낼 수 있는 최대 크기는 65,535바이트이며, 이는 2048 바이트 크기의 페이지에서 32개 페이지에 해당한다. 프래그의 옵션으로는 파일의 생성, 삭 제, 쓰기, 내용 제거(truncate), 0으로 채우기 등이 포함되며 기타 다른 옵션이 추가될 수 있다.The maximum size a journal can represent is 65,535 bytes, which is equivalent to 32 pages in a 2048-byte page. Flag options include file creation, deletion, writing, truncate, padding with zeros, and other options.

이러한 저널이 하나의 페이지에 모이면 저널 페이지 형태가 된다. 도 2는 2048바이트 크기의 페이지를 가정하여 128개의 저널이 포함된 형태를 표현하였고, 페이지 여분 영역에는 저널의 길이, 페이지의 버전, 그 외 에러 교정 코드(ECC, Error Correction Code)가 기록된다.When these journals are gathered on one page, they become journal pages. FIG. 2 shows a form including 128 journals assuming a 2048-byte page, and the length of the journal, the version of the page, and other error correction codes (ECC) are recorded in the page spare area.

도 3은 본 발명의 바람직한 실시예에 따른 JBT 내의 페이지 형태를 C언어의 구조체 형태로 도시한 것이다.3 illustrates a page form in a JBT according to a preferred embodiment of the present invention in the form of a structure of a C language.

도 3을 참조하면, 2048바이트 크기의 페이지에서 총 512개의 4바이트 주소가 기록되며, 각각은 하나의 저널 블록 주소를 나타낸다. JBT가 기록되는 페이지의 여분 영역에는 현재 페이지에 기록된 저널 블록의 개수, 해당 시점의 작업 영역이 시작되는 페이지 주소, 그리고 다음 작업 영역이 시작되는 페이지 주소, 파일 시스템이 정상적으로 종료되었는지 나타내는 언마운트 플래그 등이 기록된다.Referring to FIG. 3, a total of 512 four-byte addresses are recorded in a 2048-byte page, each representing one journal block address. The spare area of the page where the JBT is written contains the number of journal blocks written to the current page, the address of the page where the work area begins at that time, the address of the page where the next work area starts, and an unmount flag indicating whether the file system has been shut down normally. Etc. are recorded.

2) 블록의 관리2) Block Management

상기와 같이 분류된 블록들은 운영체제(20)에 의해 할당되고, 할당되는 규칙은 다음과 같다. Blocks classified as described above are allocated by the operating system 20, and the rules assigned are as follows.

슈퍼 블록(110)은 파일 시스템이 생성될 때 정적으로 파티션의 가장 첫 블록부터 할당되며 그 크기는 2의 배수 개의 블록이다.The super block 110 is statically allocated from the first block of the partition when the file system is created, and its size is a multiple of two.

도 4는 본 발명의 바람직한 실시예에 따른 슈퍼 블록의 상세 구성도이다.4 is a detailed block diagram of a super block according to a preferred embodiment of the present invention.

도 4는 슈퍼 블록(110)이 4개로 할당된 레이아웃을 간략하게 도시한 것으로, 0번 블록은 일반적인 슈퍼 블록이며 2번 블록은 슈퍼 블록 데이터의 유실을 막고 유실시 복구를 위한 복제 블록이다.4 is a diagram schematically illustrating a layout in which four super blocks 110 are allocated, in which block 0 is a general super block and block 2 is a duplicate block for preventing loss of super block data and restoring loss.

그리고 1번 3번 블록은 0번 2번 블록에 대한 예비 블록이다. 플래시 메모리의 특성상 이미 데이터가 쓰여진 페이지에는 다시 데이터를 쓸 수 없고 반드시 삭제 연산을 수행하여야 한다.Block 1 and 3 are reserved blocks for block 0 and 2. Due to the characteristics of flash memory, data cannot be written to a page where data is already written, and a delete operation must be performed.

따라서 슈퍼 블록(110)에 데이터를 기록하는 동작시 삭제 연산으로 인해 지연되는 것을 예비 블록을 구비함으로써 방지할 수 있다. 예를 들어, 0번 블록에 모든 데이터가 쓰여졌다면 슈퍼 블록에 대한 쓰기 연산은 1번 블록에 수행된다. 그리고 파일 시스템의 유휴 시간에 0번 블록에 대한 지움 연산을 수행하고 이후에 0번 블록이 예비 블록이 된다. Therefore, it is possible to prevent the delay due to an erase operation in the operation of writing data to the super block 110 by providing a spare block. For example, if all data is written in block 0, the write operation for the super block is performed in block 1. The erase operation is performed on block 0 during the idle time of the file system, and then block 0 becomes a spare block.

파일 시스템이 초기화되는 시점에는 0번 블록부터 차례대로 블록의 두 번째 페이지를 검사하여 JBT가 발견되는 블록이 현재 사용중인 슈퍼 블록이라 판단할 수 있다. 첫 번째 페이지에는 파일 시스템의 설정 정보를 기록한 파일 시스템 설정값(FS-configurations)이 저장된다.When the file system is initialized, the second page of the block can be examined in order from block 0 to determine that the block in which the JBT is found is the super block currently in use. The first page contains file system configuration values (FS-configurations) that record file system configuration information.

저널 블록(120)은 한 번에 연속된 N개 블록이 할당된다. 블록은 임의의 위치에 있을 수 있고, 모든 저널 블록을 소진한 경우, 추가로 N개의 블록을 현재 작업 영역 내에서 할당하여 저널 블록으로 활용한다.The journal block 120 is allocated N consecutive blocks at a time. Blocks can be in any location, and if all journal blocks are exhausted, an additional N blocks are allocated within the current work area to be used as journal blocks.

할당이 이루어지면 슈퍼 블록(110) 내의 JBT를 업데이트한다. 한 번에 N개를 할당하는 이유는 슈퍼 블록(110)에 너무 잦은 연산이 이루어지지 않으며, 크래시 상황에서 다음 저널 블록을 쉽게 찾을 수 있도록 하기 위함이다.When the assignment is made, the JBT in the super block 110 is updated. The reason for allocating N at a time is to prevent too many operations in the super block 110, so that the next journal block can be easily found in a crash situation.

데이터 블록(130)은 현재 작업 영역 내에서 최대한 순차적으로 할당된다. 만약 작업 영역 내에 충분한 블록이 없다면 해당 시점까지의 저널 정보를 기록하고 다음 작업 영역으로 이동한다. The data block 130 is allocated as sequentially as possible within the current work area. If there are not enough blocks in the work area, the journal information up to that point is recorded and moved to the next work area.

도 5는 본 발명의 바람직한 실시예에 따른 블록들이 할당된 상태를 도시한 것이다. 도 5를 참조하면, 현재 작업 영역의 크기는 6개 블록이며, 슈퍼 블록(110)은 JBT를 통해 저널 블록(120)들을 가리키고 있으며, 데이터 블록(130)은 각 작업 영역 내에서 순차적으로 할당되고 있음을 알 수 있다. 현재 작업 영역 3까지는 사용되지 않았지만 미리 저널 블록(120)을 할당해둔 상태이다.5 shows a state in which blocks are allocated according to a preferred embodiment of the present invention. Referring to FIG. 5, the size of the current working area is six blocks, the super block 110 points to the journal blocks 120 through JBT, and the data block 130 is sequentially assigned within each working area. It can be seen that. Although the current work area 3 has not been used, the journal block 120 has been allocated in advance.

모든 블록 내 페이지의 여분 영역에는 공통적으로 에러 교정 코드(ECC)와 버전이 기록된다. 상기 에러 교정 코드(ECC)는 플래시 메모리에서 발생하는 1비트 에러를 교정하기 위하여 모든 플래시 기반 저장 시스템에서 공통적으로 사용되는 정보이고, 버전은 페이지 상호 간의 기록된 순서를 알기 위해 1씩 증가시키며 기록하는 전역 정보이다. 이를 통해 어느 페이지가 가장 최신 정보를 기록하고 있는지 알 수 있다.Error correction codes (ECCs) and versions are commonly recorded in the extra area of the page in every block. The error correction code (ECC) is information that is commonly used in all flash-based storage systems to correct 1-bit errors occurring in flash memory, and the version is incremented by 1 to know the recorded order between pages. Global information. This tells you which pages are the most recent.

3) 작업 영역의 관리3) management of the working area

작업 영역은 파일 시스템이 생성될 때 그 크기가 정해지며 순차적으로 이동한다. 크기는 블록의 개수로 지정되며 대략 32~64MB 가량이 되도록 설정한다. 이 크기가 클수록 크래시 복구 소요시간이 길어지므로 플래시 메모리의 사양에 따라 적당한 값을 설정해줄 필요가 있다. 현재 플래시 메모리의 성능을 볼 때 32~64MB 이내라면 크래시 복구 수행 성능이 약 1-2초 이내가 될 것으로 예상된다. 이후 플래시 메모리 성능의 발전에 따라 이 값은 변경될 수 있다.The work area is sized when the file system is created and moves sequentially. The size is specified by the number of blocks and is set to be about 32 ~ 64MB. The larger this size is, the longer the crash recovery time is. Therefore, it is necessary to set an appropriate value according to the specification of the flash memory. If you look at the performance of the current flash memory within 32-64MB, the crash recovery performance is expected to be within 1-2 seconds. This value can then change as flash memory performance evolves.

작업 영역의 관리는 운영체제(20)의 작업영역 제어모듈(210)이 수행한다. 작업 영역의 이동은 순차적으로 이루어진다. 예를 들어, 현재 작업 영역이 128번 블록부터 1024개 블록이라면 다음 작업 영역은 1152(=128+1024)번 블록부터 시작한다.Management of the work area is performed by the work area control module 210 of the operating system 20. Movement of the work area takes place sequentially. For example, if the current work area is 1024 blocks starting from block 128, the next work area starts from block 1152 (= 128 + 1024).

이렇게 연속적으로 작업 영역을 이동하게 함으로써 만약 가장 최근의 작업 영역 정보가 유실된다 하더라도 이를 검색하는 수행시간을 최소화시킬 수 있다.By continuously moving the work area, even if the latest work area information is lost, the execution time for searching the work area can be minimized.

이동이 이루어지는 시점은 하나의 저널 페이지가 기록될 때, 즉 캐쉬에 한 페이지 분량의 저널이 차거나 작업 영역 외부에서 삭제된 아이노드가 있을 경우이다. The time to move is when a journal page is written, that is, when a cache is full of a page or an inode is deleted outside of the work area.

이때 만약 현재 작업 영역으로 이동한 이후 작업 영역 크기의 20% 이상을 사용했다면 다음 작업 영역으로 이동하고 기록될 저널이 기록된 페이지의 여분 영역에 다음 작업 영역의 시작 블록 번호를 기록한다. 이를 통해 저널들을 추적함으로써 가장 최근의 작업 영역을 파악할 수 있다.If more than 20% of the size of the work area has been used since moving to the current work area, move to the next work area and record the start block number of the next work area in the extra area of the page where the journal to be written is recorded. This allows you to keep track of the journals to identify the most recent work area.

여기서 20%는 임의의 수치이며 플래시 메모리의 크기, 작업 영역의 크기 등 여러 가지 변수에 따라 변경될 수 있다. 만약 한 작업 영역 내의 블록을 모두 할당하여 사용한 이후에 다음 작업 영역으로 이동한다면 사용자의 이용 패턴에 따라 특정 영역에만 많은 양의 데이터가 기록될 수 있고, 이것은 균등한 지움 횟수를 유지(wear-leveling)하여야 하는 플래시의 특성을 저해할 수 있다. 20% is an arbitrary number and can be changed by various variables such as the size of the flash memory and the size of the working area. If you move to the next work area after all the blocks in one work area have been allocated and used, a large amount of data can be recorded only in a certain area depending on the user's usage pattern, which maintains even wear-leveling. This can interfere with the flash characteristics.

따라서 최대한 플래시 전체 공간에 대해 균일한 I/O가 수행될 수 있도록 하기 위해 작업 영역을 수시로 변경하여 준다. 다만, 작업 영역 변경에 대한 정보를 JBT에 업데이트하는 약간의 오버헤드가 존재하기 때문에 너무 자주 작업 영역을 변경하는 것 또한 성능에 나쁜 영향을 끼칠 수 있다.Therefore, the work area is changed frequently so that uniform I / O can be performed for the entire flash space. However, changing the workspace too often can also have a negative impact on performance because there is some overhead in updating the JBT with information about changing the workspace.

4) 가비지 콜렉션(garbage collection) 기법4) Garbage Collection Technique

저널 블록(120)과 데이터 블록(130)의 해제는 블록 내에 포함된 모든 페이지가 불필요한 데이터를 기록하고 있는 경우에 가비지 콜렉션에 의해 이루어진다. 저널 블록(120) 내의 데이터는 갱신된 정보가 다른 위치에 저장되거나 파일의 삭제로 인해 저널 정보가 더이상 유효하지 않은 경우에 필요없어지고, 데이터 블록(130)은 내부에 포함된 데이터가 삭제 또는 수정된 경우이다.The release of the journal block 120 and the data block 130 is performed by garbage collection when all pages included in the block are recording unnecessary data. The data in journal block 120 is not needed if the updated information is stored elsewhere or if the journal information is no longer valid due to deletion of the file, and data block 130 deletes or modifies the data contained therein. If it is.

상기와 같은 저널 블록(120)과 데이터 블록(130)들을 수집하고 실제로 삭제하는 가비지 콜렉션은 파일 시스템이 유휴 상태일 때 수행된다. 가비지 콜렉션 대상 블록이 발견되고 해당 정보가 저널에 기록이 완료된 이후 해당 블록에 대해 지움 연산을 수행한다.Garbage collection, which collects and actually deletes the journal block 120 and the data block 130 as described above, is performed when the file system is idle. After a garbage collection target block is found and its information is written to the journal, the block is cleared.

슈퍼 블록(110)의 경우 JBT 정보는 언제나 갱신되기 때문에 하나의 슈퍼 블록 내의 페이지를 모두 사용하면 다른 슈퍼 블록에 정보를 기록하여야 한다. 이때는 데이터가 유실되는 것을 막기 위해 우선 다음 슈퍼 블록에 JBT 정보를 기록한 이후 이전 슈퍼 블록을 삭제한다. 이러한 동작을 통해 모든 슈퍼 블록들 내에 유효한 슈퍼 블록은 단 하나로 유지된다.In the case of the super block 110, since the JBT information is always updated, when all the pages in one super block are used, the information must be recorded in the other super block. In this case, to prevent data loss, the first super block is first deleted after the JBT information is recorded in the next super block. This operation keeps only one valid super block within all super blocks.

5) 초기화 및 크래시 복구 기법5) Initialization and Crash Recovery Techniques

이하, 상기와 같이 설계된 작업 영역 기법을 사용한 플래시 파일 시스템에 대한 초기화 기법과 크래시 복구 기법에 대해 도 6을 참조하여 기술하기로 한다.Hereinafter, an initialization technique and a crash recovery technique for a flash file system using the work area scheme designed as described above will be described with reference to FIG. 6.

파일 시스템의 초기화는 운영체제(20)의 초기화 모듈(220)에서 수행되고, 가장 먼저 수행되는 것은 유효한 슈퍼 블록과 가장 마지막에 저장된 저널 블록 테이블(JBT)을 찾는 것이다. 이를 위해 우리는 복수 개의 슈퍼 블록을 순차적으로 탐색한다. 각 블록의 첫 번째 페이지는 파일 시스템 정보이므로 해당 페이지의 데이터 영역과 여분 영역(spare area) 모두를 읽어 메인 메모리에 로딩한다. 두 번째 페이지부터는 JBT이므로 순차적으로 각 페이지의 여분 영역을 읽어 언마운트 플랙을 확인한다. 만약 언마운트 플랙이 발견되고, 그 다음 페이지에 아무 데이터가 없다면 그것이 유효한 JBT라 볼 수 있다. 만약 유효한 JBT가 없다면 이는 크래시가 발생한 상황으로, 가장 최신의 버전 값을 저장하고 있는 JBT를 토대로 크래시 복구를 수행하여야 한다. Initialization of the file system is performed in the initialization module 220 of the operating system 20, the first of which is to find a valid super block and the last stored journal block table (JBT). To do this, we sequentially search for a plurality of super blocks. The first page of each block is file system information, so both the data and spare areas of the page are read and loaded into main memory. Since the second page is JBT, the unmounted flag is checked sequentially by reading the extra area of each page. If an unmount flag is found and there is no data on the next page, it is considered valid JBT. If there is no valid JBT, this is a crash situation. You must perform crash recovery based on the JBT that stores the most recent version value.

① 정상적 상황의 초기화 기법① Initialization technique of normal situation

정상적으로 언마운트가 수행된 경우 초기화 모듈(220)은 가장 최신의 JBT를 이용해 전체 저널을 추적할 수 있다. 저널들은 N개씩 연속적으로 할당되어 있으므로 만약 N개 내에서 사용되지 않은 저널이 있는 경우 생략할 수 있다. When unmounting is normally performed, the initialization module 220 may track the entire journal using the latest JBT. N journals are allocated consecutively, so if there are journals that have not been used within N, they can be omitted.

저널 내에는 파일 시스템의 업데이트 정보가 모두 기록되어 있기 때문에 전체 저널의 정보를 읽어들이면 전체 파일 시스템 메타 데이터 정보를 구축할 수 있 다. 이러한 정상적 상황의 초기화 기법은 로그 기반 기법에서 유효한 슈퍼 블록과 정상적인 언마운트 여부를 파악하는 기법이 없는 단점을 보완할 수 있다.Since all the update information of the file system is recorded in the journal, the entire file system metadata information can be constructed by reading the entire journal information. This normal initialization technique can compensate for the lack of valid superblock and normal unmounting technique in log-based schemes.

② 크래시 복구 기법② Crash Recovery Techniques

만약 크래시가 발생하여 정상적으로 언마운트가 수행되지 않았다면, 운영체제(20)의 크래시 복구 모듈(230)은 먼저 가장 높은 버전이 기록된 가장 최신의 JBT를 기반으로 저널 정보를 읽는다. 이때 더이상 할당된 저널 블록이 없는 것을 확신할 수 있기 때문에 버전 정보를 이용하여 가장 마지막으로 기록된 저널과 작업 영역에 대한 정보를 찾는다.If a crash occurs and the unmounting is not normally performed, the crash recovery module 230 of the operating system 20 first reads journal information based on the latest JBT having the highest version recorded. At this point, you can be sure that there are no more journal blocks allocated, so use the version information to find information about the last recorded journal and work area.

다음으로, 작업 영역 내에서 변경되었지만 저널에 기록되지 않은 정보를 찾고, 저널에 기록되어 있지 않은 블록들을 순차적으로 검색하면서 메타데이터 정보를 복구한다. 한 블록 내의 페이지는 언제나 순차적으로 기록되기 때문에 첫 페이지의 여분 영역을 읽음으로써 블록이 사용 중인지 여부를 알 수 있고 이를 통해 검색을 최적화할 수 있다. 이와 같이 작업 영역 내의 모든 블록 정보를 파악하면 크래시 복구를 종료한다.Next, find the information that has been changed in the work area but not written in the journal, and recover the metadata information by sequentially searching for blocks not written in the journal. Since the pages within a block are always written sequentially, you can read the extra area of the first page to see if the block is in use and optimize your search. In this way, when all the block information in the work area is known, crash recovery ends.

또한, 본 발명에 따른 기법의 성능을 수행시간 모델로 나타내면 하기의 <수학식 1>과 같이 표현할 수 있다. In addition, if the performance of the technique according to the present invention represented by the execution time model can be expressed as shown in Equation 1 below.

Figure 112009023311036-pat00001
Figure 112009023311036-pat00001

상기 모델에서 Td와 Ts는 각각 한 페이지 내의 데이터 공간과 여분 영역을 읽는데 걸리는 시간을 의미하고, L은 저널의 전체 개수, Mf는 크래시로 인해 유실된 파일의 개수, Md는 유실된 데이터 페이지의 개수, Bfw는 하나의 작업 영역 내에서 사용되지 않은 블록을 의미한다.In the model, T d and T s respectively represent the time taken to read the data space and the spare area in one page, L is the total number of journals, M f is the number of files lost due to a crash, M d is lost The number of data pages, B fw , is an unused block in one work area.

분석 결과에서 가장 특징적인 것은 빈 블록을 확인하기 위한 시간을 크게 줄였다는 점이다. 작업 영역의 크기는 플래시 메모리의 용량과 무관하게 거의 고정된 값이므로, Bfw 또한 용량에 비례하여 증가하지 않고 한계를 가지는 값이라 추정할 수 있다. 이는 설계에 따라 32~64MB 이하의 값으로 예상된다.The most distinctive feature of the analysis is that it has greatly reduced the time to check for empty blocks. Since the size of the work area is almost fixed regardless of the capacity of the flash memory, it can be estimated that B fw also has a limit without increasing in proportion to the capacity. This is expected to be between 32 and 64MB, depending on the design.

따라서, 종래의 로그 기반 기법과 비교할 때 사용되지 않은 블록을 걸러내는데 소용되는 시간이 획기적으로 줄어들게 되고, 이외의 시간은 동일하다고 할 수 있으며 유실된 아이노드와 데이터의 크기는 저널을 저장하기 위한 캐쉬 크기와 비례한다. 단 작업 영역을 관리하기 위해 보다 자주 저널 데이터를 저장하기 때문에 더 좋은 성능을 보일 것으로 예상할 수 있다.Therefore, compared to the conventional log-based method, the time used to filter out unused blocks is greatly reduced, and the other time is the same, and the lost inode and the size of the data are caches for storing the journal. Proportional to size. However, you can expect better performance because you store journal data more frequently to manage your work area.

이상에서 설명한 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 본 발명의 보호범위는 상기 실시예에 한정되는 것이 아니며, 해당 기술분야의 통상의 지식을 갖는 자라면 본 발명의 사상 및 기술영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.

도 1a는 본 발명의 바람직한 실시예에 따른 시스템 구성도이고, 도 1b는 도 1a의 상세 블록도이다.Figure 1a is a system block diagram according to a preferred embodiment of the present invention, Figure 1b is a detailed block diagram of Figure 1a.

도 2는 본 발명의 바람직한 실시예에 따른 저널 블록을 C언어의 구조체 형태로 도시한 것이다. Figure 2 shows a journal block in the form of a C language structure according to a preferred embodiment of the present invention.

도 3은 본 발명의 바람직한 실시예에 따른 JBT 내의 페이지 형태를 C언어의 구조체 형태로 도시한 것이다.3 illustrates a page form in a JBT according to a preferred embodiment of the present invention in the form of a structure of a C language.

도 4는 본 발명의 바람직한 실시예에 따른 슈퍼 블록의 상세 구성도이다.4 is a detailed block diagram of a super block according to a preferred embodiment of the present invention.

도 5는 본 발명의 바람직한 실시예에 따른 블록들이 할당된 상태를 도시한 것이다. 5 shows a state in which blocks are allocated according to a preferred embodiment of the present invention.

도 6은 본 발명의 바람직한 실시예에 따른 초기화 및 크래시 복구 과정을 개략적으로 도시한 것이다.6 schematically illustrates an initialization and crash recovery process according to a preferred embodiment of the present invention.

*도면의 주요부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *

10 : 플래시 메모리 110 : 슈퍼 블록10: flash memory 110: super block

120 : 저널 블록 130 : 데이터 블록120: journal block 130: data block

140 : 프리 블록 20 : 운영체제140: free block 20: operating system

210 : 작업영역 제어모듈 220 : 초기화 모듈210: work area control module 220: initialization module

230 : 크래시 복구 모듈230: Crash Recovery Module

Claims (14)

낸드 플래시 파일 시스템에 있어서,In the NAND flash file system, 다수의 블록으로 구분된 플래시 메모리와;A flash memory divided into a plurality of blocks; 상기 블록들 중 일정 개수의 블록들을 단위로 작업 영역을 정의하여 상기 블록들을 다수 개의 상기 작업 영역들로 세분화하여 할당하고, 현재 작업 중인 작업 영역 정보를 기록 관리하여, 크래시 발생 시, 상기 작업 영역 정보를 이용하여 크래시 발생 직전에 사용 중인 작업 영역을 검색하고, 상기 검색된 작업 영역의 메타 데이터를 이용하여 크래시를 복구하는 운영체제를 포함하되;A work area is defined by a predetermined number of blocks among the blocks, the blocks are divided into a plurality of the work areas, and the work area information is recorded and managed. Using an operating system to search for a work area in use immediately before a crash occurs, and to recover a crash using metadata of the searched work area; 상기 운영체제는;The operating system; 상기 작업영역을 설정하고 관리하는 작업영역 제어모듈과;A work area control module for setting and managing the work area; 상기 낸드 플래시 파일 시스템의 초기화를 수행하는 초기화 모듈과;An initialization module for performing initialization of the NAND flash file system; 상기 초기화 수행시 크래시가 발생한 경우, 크래시를 복구하는 크래시 복구 모듈을 포함하는 것을 특징으로 하는 낸드 플래시 파일 시스템.And a crash recovery module for recovering a crash when a crash occurs during the initialization. 제 1항에 있어서,The method of claim 1, 상기 다수의 블록은The plurality of blocks 시스템 설정 정보를 기록한 파일 시스템 설정값과 저널 블록의 메타 데이터를 기록한 저널블록테이블을 저장하는 슈퍼 블록과;A super block for storing a file system setting value for recording system setting information and a journal block table for recording metadata of the journal block; 상기 작업 영역 내에 있는 저널정보를 기록하는 저널 블록과;A journal block for recording journal information in the work area; 데이터와 아이노드가 기록되는 데이터 블록 및;A data block in which data and an inode are recorded; 현재 사용되고 있지 않은 프리 블록을 포함하는 것을 특징으로 하는 낸드 플래시 파일 시스템. NAND flash file system comprising a free block that is not currently used. 제 2항에 있어서,3. The method of claim 2, 상기 모든 블록 내 페이지의 여분 영역(spare area)에In the spare area of the page in all the blocks 에러교정코드(Error Correction Code)와 버전이 저장되는 것을 특징으로 하 는 낸드 플래시 파일 시스템.NAND flash file system, characterized in that the error correction code and version are stored. 제 2항에 있어서,3. The method of claim 2, 상기 저널블록테이블(JBT)은 The journal block table (JBT) is 1개 이상의 페이지로 구성되고, 각 페이지의 여분 영역에는 현재의 페이지에 포함된 저널 블록의 개수, 언마운트 정상 수행 여부, 현재의 작업 영역의 시작 블록 번호, 다음 사용될 작업 영역의 시작 블록 번호 중 적어도 하나를 포함하여 기록되는 것을 특징으로 하는 낸드 플래시 파일 시스템.It consists of one or more pages, each of which contains at least one of the number of journal blocks contained in the current page, whether or not the unmounted is normally performed, the starting block number of the current working area, and the starting block number of the next working area. NAND flash file system, characterized in that the recording including one. 제 2항에 있어서,3. The method of claim 2, 상기 슈퍼블록은The superblock 복수 개의 블록으로 구성되고,Consists of a plurality of blocks, 슈퍼 블록 데이터의 유실을 막고 유실 시 복구를 위한 복제블록과;A duplicated block for preventing the loss of the super block data and recovering the lost when the super block data is lost; 여분의 데이터를 위한 예비블록을 포함하는 것을 특징으로 하는 낸드 플래시 파일 시스템.NAND flash file system comprising a spare block for extra data. 제 2항에 있어서,3. The method of claim 2, 상기 저널 블록은 The journal block is 저널들이 메인 메모리에 캐싱되고 캐쉬 내의 저널들의 크기가 한 페이지 크기에 도달하는 경우 저장되되, 작업 영역 외부의 아이노드에 대해 삭제가 이루어지면 해당 정보의 저널과 함께 그때까지 캐쉬에 저장된 저널들이 즉각 저장되는 것을 특징으로 하는 낸드 플래시 파일 시스템.Journals are cached in main memory and stored when the size of the journals in the cache reaches one page size, but when deleted for an inode outside the work area, the journals stored in the cache up to that time are immediately saved with the journal of that information. NAND flash file system, characterized in that. 삭제delete 제 1항 내지 제 6항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 6, 상기 작업영역 제어모듈은The work area control module 상기 작업영역을 설정하고, 캐쉬에 한 페이지 분량의 저널이 차거나 하나의 작업 영역 외부에서 삭제된 아이노드가 있는 경우 또는 현재 작업 영역에 할당된 저널 블록이 남아있지 않고 추가 할당에 실패한 경우 작업 영역을 순차적으로 이동하고, 다음 작업 영역으로 이동시 저널이 기록된 페이지의 여분 영역에 상기 다음 작업영역의 시작 블록 번호를 기록하는 것을 특징으로 하는 낸드 플래시 파일 시스템.If you set the workspace, if the cache is full of one-page journals, if there are inodes deleted outside of one workspace, or if there are no journal blocks assigned to the current workspace and additional allocation fails, NAND flash file system, characterized in that to move sequentially, the start block number of the next work area is recorded in the spare area of the page on which the journal is recorded when moving to the next work area. 제 8항에 있어서,The method of claim 8, 상기 작업영역 제어모듈은 The work area control module 블록 내에 포함된 모든 페이지가 불필요한 데이터를 기록하고 있는 경우 가비지 콜렉션(garbage collection)에 의해 저널 블록과 데이터 블록에 대한 삭제 연산을 수행하되,If all the pages included in the block are writing unnecessary data, garbage collection is performed on the journal block and the data block by garbage collection. 슈퍼블록의 저널 블록 테이블 정보를 다음 슈퍼 블록에 기록한 뒤 삭제 연산을 수행하는 것을 특징으로 하는 낸드 플래시 파일 시스템.NAND flash file system characterized by performing a delete operation after writing the journal block table information of the superblock to the next super block. 제 1항 내지 제 6항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 6, 상기 초기화 모듈은The initialization module 전체 슈퍼 블록 각각에 대해 첫 번째 페이지의 여분 영역에 저장된 정보를 통해 유효한 슈퍼블록을 추출하고, 상기 유효한 슈퍼블록 중 가장 최신의 저널 블록 테이블을 구비한 슈퍼 블록을 추출하여 언마운트가 정확히 수행된 경우 상기 가장 최신의 저널 블록 테이블을 이용해 전체 저널을 추적하여 초기화를 수행하는 것을 특징으로 하는 낸드 플래시 파일 시스템.When the valid superblock is extracted from the information stored in the extra area of the first page for each superblock, and the superblock having the most recent journal block table among the valid superblocks is extracted, the unmounting is performed correctly. NAND flash file system, characterized in that for performing the initialization by tracking the entire journal using the latest journal block table. 제 1항 내지 제 6항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 6, 상기 크래시 복구 모듈은The crash recovery module 언마운트가 정확히 수행되지 않은 경우 크래시가 발생한 것으로 판단하고, 가장 최신의 저널 블록 테이블을 기반으로 저널 정보를 읽고 버전 정보를 이용하여 가장 마지막으로 기록된 저널을 찾아서 해당 저널이 기록된 페이지의 여분 영역에 기록된 작업 영역 정보를 통해 가장 최신의 작업 영역을 파악하고, 작업 영역 내에서 변경되었지만 저널에 기록되지 않은 블록들을 순차적으로 검색하면서 메타데이터 정보를 복구하는 것을 특징으로 하는 낸드 플래시 파일 시스템.If the unmount was not performed correctly, it is determined that a crash has occurred, the journal information is read based on the most recent journal block table, the version information is used to find the last recorded journal, and the spare area of the page on which the journal is written. NAND flash file system, characterized in that to identify the most recent work area through the work area information recorded in the file, and to recover the metadata information while sequentially searching for blocks that have been changed in the work area but not recorded in the journal. 다수의 블록들을 구비하는 플래시 메모리 파일 시스템의 초기화 및 크래시 복구를 위한 방법에 있어서:A method for initialization and crash recovery of a flash memory file system having a plurality of blocks: 상기 블록들 중 일정 개수의 블럭들을 단위로 작업 영역을 설정 및 관리하여 상기 블록들을 초기화하고;Initializing the blocks by setting and managing a work area in units of a predetermined number of blocks; 상기 블록들 중 복수의 슈퍼 블록들을 순차적으로 탐색하여 유효한 슈퍼 블록과 가장 최근에 저장된 저널 블록 테이블(JBT)을 찾고;Sequentially searching a plurality of super blocks among the blocks to find a valid super block and a most recently stored journal block table (JBT); 상기 저널 블록 테이블에 대응되는 저널 정보로부터 각 페이지의 여분 영역을 순차적으로 읽어서 언마운트 플랙을 확인하고;Reading an extra area of each page sequentially from journal information corresponding to the journal block table to identify an unmount flag; 상기 언마운트 플랙이 크래시 발생을 나타내면, 상기 저널 블록 테이블로부터 저널 정보를 읽어들여서 상기 플래시 메모리 파일 시스템의 메타 데이터를 구축하고, 동시에 가장 최근의 작업 영역을 검색하고; 이어서If the unmount flag indicates a crash, read journal information from the journal block table to build metadata of the flash memory file system, and simultaneously retrieve the most recent work area; next 상기 가장 최근의 작업 영역에 대한 상기 메타 데이터와 상기 저널 블록 테이블의 상기 저널 정보를 이용하여 크래시를 복구하는 것을 특징으로 하는 플래시 메모리 파일 시스템의 초기화 및 크래시 복구 방법.And recovering a crash by using the metadata of the most recent working area and the journal information of the journal block table. 제 12항에 있어서,The method of claim 12, 상기 가장 최근의 작업 영역은 상기 여분 영역에 저장된 버전 정보를 이용하여 찾는 것을 특징으로 하는 플래시 메모리 파일 시스템의 초기화 및 크래시 복구 방법.And wherein the most recent working area is found using version information stored in the spare area. 제 12항 또는 제 13항에 있어서,The method according to claim 12 or 13, 상기 방법은;The method; 상기 작업 영역 내에서 변경되었지만 상기 저널 블록에 기록되지 않은 저널 정보가 있으면, 상기 저널 정보에 기록되어 있지 않은 슈퍼 블록 및 데이터 블록들을 순차적으로 검색하면서 상기 메타 데이터를 복구하여 크래시를 복구하는 것을 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템의 초기화 및 크래시 복구 방법.If there is journal information changed in the work area but not written in the journal block, the method further includes recovering the crash by recovering the metadata while sequentially searching for super blocks and data blocks not recorded in the journal information; Initializing and crash recovery method of the flash memory file system, characterized in that.
KR1020090033562A 2009-04-17 2009-04-17 Nand Flash File System And Method For Initialization And Crash Recovery Thereof KR101114125B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090033562A KR101114125B1 (en) 2009-04-17 2009-04-17 Nand Flash File System And Method For Initialization And Crash Recovery Thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090033562A KR101114125B1 (en) 2009-04-17 2009-04-17 Nand Flash File System And Method For Initialization And Crash Recovery Thereof

Publications (2)

Publication Number Publication Date
KR20100115057A KR20100115057A (en) 2010-10-27
KR101114125B1 true KR101114125B1 (en) 2012-02-20

Family

ID=43134031

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090033562A KR101114125B1 (en) 2009-04-17 2009-04-17 Nand Flash File System And Method For Initialization And Crash Recovery Thereof

Country Status (1)

Country Link
KR (1) KR101114125B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101607292B1 (en) * 2014-12-17 2016-03-29 고려대학교 산학협력단 Fast crash detection and recovery method through flash storage system and flash translation layer

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101301828B1 (en) 2011-09-29 2013-08-29 한양대학교 산학협력단 Method and apparatus for power-off recovery in flash memory-based solid state drive
KR101992940B1 (en) * 2012-08-08 2019-06-26 삼성전자주식회사 Method for operating memory controller and system having the memory controller
KR102509540B1 (en) 2015-06-30 2023-03-14 삼성전자주식회사 Storage device and garbage collection method thereof
CN107678679B (en) * 2016-08-02 2020-09-08 建兴储存科技(广州)有限公司 Scanning method for super block of solid state storage device
CN117331486A (en) * 2022-06-27 2024-01-02 中兴通讯股份有限公司 Backup storage device, metadata management method, metadata management device and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100309879B1 (en) 1999-03-30 2001-11-01 윤종용 System and method for managing a flash memory
KR20070096429A (en) * 2006-03-24 2007-10-02 부산대학교 산학협력단 Fast mounting for a file system on nand flash memory
KR20080100079A (en) * 2007-05-11 2008-11-14 삼성전자주식회사 Method for operating system with writing program code and mass data on nand flash memory and system for executing the method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100309879B1 (en) 1999-03-30 2001-11-01 윤종용 System and method for managing a flash memory
KR20070096429A (en) * 2006-03-24 2007-10-02 부산대학교 산학협력단 Fast mounting for a file system on nand flash memory
KR20080100079A (en) * 2007-05-11 2008-11-14 삼성전자주식회사 Method for operating system with writing program code and mass data on nand flash memory and system for executing the method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101607292B1 (en) * 2014-12-17 2016-03-29 고려대학교 산학협력단 Fast crash detection and recovery method through flash storage system and flash translation layer

Also Published As

Publication number Publication date
KR20100115057A (en) 2010-10-27

Similar Documents

Publication Publication Date Title
US9547589B2 (en) Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US10725669B2 (en) Incremental snapshot based technique on paged translation systems
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
KR100843543B1 (en) System comprising flash memory device and data recovery method thereof
US8706989B2 (en) Data storage device with power-off recovery system and method thereof
JP4766240B2 (en) File management method, apparatus, and program
KR100211790B1 (en) Directory rebuild method and apparatus for direct access storage device (dasd) data compression
CN110399310B (en) Method and device for recovering storage space
CN108604165B (en) Storage device
CN110678836A (en) Persistent memory for key value storage
Wu et al. Efficient initialization and crash recovery for log-based file systems over flash memory
US7849257B1 (en) Method and apparatus for storing and retrieving data
US20100146213A1 (en) Data Cache Processing Method, System And Data Cache Apparatus
KR101077904B1 (en) Apparatus and method for managing flash memory using page level mapping algorithm
KR101114125B1 (en) Nand Flash File System And Method For Initialization And Crash Recovery Thereof
KR20120090965A (en) Apparatus, system, and method for caching data on a solid-state strorage device
CN107924291B (en) Storage system
KR20070060070A (en) Fat analysis for optimized sequential cluster management
US11816027B2 (en) Translation lookup and garbage collection optimizations on storage system with paged translation table
KR20070096429A (en) Fast mounting for a file system on nand flash memory
US8650436B2 (en) Systems and methods for recovering information from NAND gates array memory systems
CN112131140B (en) SSD-based key value separation storage method supporting efficient storage space management
Yim et al. A fast start-up technique for flash memory based computing systems
JP2018181202A (en) Device, method, and program for storage control
KR101077901B1 (en) Apparatus and method for managing flash memory using log block level mapping algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150108

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180108

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200128

Year of fee payment: 9