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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-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
본 발명은 낸드 플래시 파일 시스템에 관한 것으로, 더욱 상세하게는 갑작스런 전원의 유실, 시스템 에러 등으로 정상적인 종료 동작을 수행하지 못했을 경우 발생하는 크래시 상태 시 플래시 메모리 공간 분할 기법을 통해 빠른 시간 내에 복구할 수 있는 낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법에 관한 것이다.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
여기서, 상기 플래시 메모리(10)의 블록은 시스템 설정 정보를 기록한 파일 시스템 설정 값과 저널 블록의 메타 데이터를 기록한 저널블록테이블을 저장하는 슈퍼 블록(110)과, 작업 영역 내에 있는 저널정보를 기록하는 저널 블록(120)과, 데이터와 아이노드가 기록되는 데이터 블록(130) 및 현재 사용되고 있지 않은 프리 블록(140)을 포함하는 것을 특징으로 한다.The block of the
그리고 상기 모든 블록(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
또한, 상기 저널블록테이블(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
또한, 상기 저널 블록(120)은 저널들이 메인 메모리에 캐싱되고 캐쉬 내의 저널들의 크기가 한 페이지 크기에 도달하는 경우 저장되되, 작업 영역 외부의 아이노드에 대해 삭제가 이루어지면 해당 정보의 저널과 함께 그때까지 캐쉬에 저장된 저널들이 즉각 저장되는 것을 특징으로 한다.In addition, the
상기 슈퍼블록(110)은 모든 작업 영역에 포함되는 저널블록(120)의 메타데이터를 저장 관리하는 블록으로 전체 작업 영역에 하나(슈퍼블록이 복수 개로 구성될 경우 블록은 복수 개로 구성될 수 있음)만 존재하고, 각 작업 영역에는 저널블록(120), 데이터 블록(130) 및 프리 블록(140)이 혼합되어 존재할 수 있다.The
한편, 상기 운영체제(20)는 세분된 다수의 작업영역을 설정하고 관리하는 작업영역 제어모듈(210)과, 파일 시스템의 초기화를 수행하는 초기화 모듈(220)과, 상기 초기화 수행시 크래시가 발생한 경우 크래시를 복구하는 크래시 복구 모듈(230)을 포함하는 것을 특징으로 한다.The
여기서, 상기 작업영역 제어모듈(210)은 세분된 다수의 작업영역을 설정하고, 캐쉬에 한 페이지 분량의 저널이 차거나 작업 영역 외부에서 삭제된 아이노드가 있는 경우 또는 현재 작업 영역에 할당된 저널 블록(120)이 남아있지 않고 추가 할당에 실패한 경우 작업영역을 순차적으로 이동하고, 다음 작업영역으로 이동시 저널이 기록된 페이지 여분 영역에 다음 작업영역의 시작 블록 번호를 기록하는 것을 특징으로 한다.Here, the work
그리고 상기 작업영역 제어모듈(210)은 블록 내에 포함된 모든 페이지가 불필요한 데이터를 기록하고 있는 경우 가비지 콜렉션(garbage collection)에 의해 저널 블록(120)과 데이터 블록(130)에 대한 삭제 연산을 수행하되, 슈퍼블록(110)의 저널 블록 테이블 정보를 다음 슈퍼 블록에 기록한 뒤 삭제 연산을 수행하는 것을 특징으로 한다.The
또한, 상기 초기화 모듈(220)은 전체 슈퍼 블록(110)들 각각에 대해 첫 번째 페이지의 여분 영역에 저장된 정보를 통해 유효한 슈퍼블록을 추출하고, 상기 유효한 슈퍼블록 중 가장 최신의 저널 블록 테이블을 구비한 슈퍼 블록을 추출하여 언마운트가 정확히 수행된 경우 상기 가장 최신의 저널 블록 테이블을 이용해 전체 저널을 추적하여 초기화를 수행하는 것을 특징으로 한다.In addition, the
즉, 슈퍼 블록(110)이 복수 개로 존재할 경우 각 블록의 첫 번째 페이지의 여분 영역에 저장된 에러교정코드(ECC)가 유효한지 여부에 따라 유효한 슈퍼블록을 추출하고, 상기 추출된 유효 슈퍼블록 중 버전 정보에 따라 가장 최신의 저널 블록 테이블을 구비한 슈퍼블록을 추출하게 된다.That is, when there are a plurality of
그리고 상기 크래시 복구 모듈(230)은 언마운트가 정확히 수행되지 않은 경우 크래시가 발생한 것으로 판단하고, 가장 최신의 저널 블록 테이블을 기반으로 저널 정보를 읽고 버전 정보를 이용하여 가장 마지막으로 기록된 저널을 찾아서 해당 저널의 여분 영역에 기록된 작업 영역 정보를 통해 가장 최신의 작업 영역을 파악하고, 작업 영역 내에서 변경되었지만 저널에 기록되지 않은 블록들을 순차적으로 검색하면서 메타데이터 정보를 복구하는 것을 특징으로 한다.The
본 발명을 통해 기대할 수 있는 효과는 플래시 파일 시스템의 크래시 복구 성능의 향상이다.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
상기 슈퍼블록(110)은 플래시 메모리(10)의 첫 블록부터 2개 이상의 블록으로 구성되고 파일 시스템 설정값과 저널블록의 메타데이터가 저장된다. 파일 시스템 설정값은 각 블록의 첫 페이지에 기록되며, 현재 파티션의 크기나 첫 번째 블록 번호 등 파일 시스템이 생성될 때 결정되는 정보들이 저장된다. 상기 파일 시스템 설정값은 파일 시스템의 설정에 따라 변경될 수 있다. 다만, 일반적인 파일 시스템 정보들 외에 한 작업 영역에 속하는 블록의 개수, 슈퍼블록의 크기 등은 반드시 포함되어야 한다.The
그리고 저널블록의 메타데이터는 저널 블록 테이블(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
크래시가 발생하더라도 작업 영역 내에서 변경이 이루어진 내용은 작업 영역을 스캔함으로써 파악할 수 있지만 다른 영역에 있던 아이노드가 삭제된 정보는 해당 정보가 기록되지 않으면 다시 복구할 수 없으므로 만약 작업영역 외부의 아이노드에 대해 삭제가 이루어진다면 삭제 정보가 유실되지 않도록 해당 정보의 저널과 함께 그때까지 캐쉬에 저장되어있던 저널들을 즉각 기록한다. 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
도 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
슈퍼 블록(110)은 파일 시스템이 생성될 때 정적으로 파티션의 가장 첫 블록부터 할당되며 그 크기는 2의 배수 개의 블록이다.The
도 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
그리고 1번 3번 블록은 0번 2번 블록에 대한 예비 블록이다. 플래시 메모리의 특성상 이미 데이터가 쓰여진 페이지에는 다시 데이터를 쓸 수 없고 반드시 삭제 연산을 수행하여야 한다.
따라서 슈퍼 블록(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
파일 시스템이 초기화되는 시점에는 0번 블록부터 차례대로 블록의 두 번째 페이지를 검사하여 JBT가 발견되는 블록이 현재 사용중인 슈퍼 블록이라 판단할 수 있다. 첫 번째 페이지에는 파일 시스템의 설정 정보를 기록한 파일 시스템 설정값(FS-configurations)이 저장된다.When the file system is initialized, the second page of the block can be examined in order from
저널 블록(120)은 한 번에 연속된 N개 블록이 할당된다. 블록은 임의의 위치에 있을 수 있고, 모든 저널 블록을 소진한 경우, 추가로 N개의 블록을 현재 작업 영역 내에서 할당하여 저널 블록으로 활용한다.The
할당이 이루어지면 슈퍼 블록(110) 내의 JBT를 업데이트한다. 한 번에 N개를 할당하는 이유는 슈퍼 블록(110)에 너무 잦은 연산이 이루어지지 않으며, 크래시 상황에서 다음 저널 블록을 쉽게 찾을 수 있도록 하기 위함이다.When the assignment is made, the JBT in the
데이터 블록(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
모든 블록 내 페이지의 여분 영역에는 공통적으로 에러 교정 코드(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
이렇게 연속적으로 작업 영역을 이동하게 함으로써 만약 가장 최근의 작업 영역 정보가 유실된다 하더라도 이를 검색하는 수행시간을 최소화시킬 수 있다.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
상기와 같은 저널 블록(120)과 데이터 블록(130)들을 수집하고 실제로 삭제하는 가비지 콜렉션은 파일 시스템이 유휴 상태일 때 수행된다. 가비지 콜렉션 대상 블록이 발견되고 해당 정보가 저널에 기록이 완료된 이후 해당 블록에 대해 지움 연산을 수행한다.Garbage collection, which collects and actually deletes the
슈퍼 블록(110)의 경우 JBT 정보는 언제나 갱신되기 때문에 하나의 슈퍼 블록 내의 페이지를 모두 사용하면 다른 슈퍼 블록에 정보를 기록하여야 한다. 이때는 데이터가 유실되는 것을 막기 위해 우선 다음 슈퍼 블록에 JBT 정보를 기록한 이후 이전 슈퍼 블록을 삭제한다. 이러한 동작을 통해 모든 슈퍼 블록들 내에 유효한 슈퍼 블록은 단 하나로 유지된다.In the case of the
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 technique of normal situation
정상적으로 언마운트가 수행된 경우 초기화 모듈(220)은 가장 최신의 JBT를 이용해 전체 저널을 추적할 수 있다. 저널들은 N개씩 연속적으로 할당되어 있으므로 만약 N개 내에서 사용되지 않은 저널이 있는 경우 생략할 수 있다. When unmounting is normally performed, the
저널 내에는 파일 시스템의 업데이트 정보가 모두 기록되어 있기 때문에 전체 저널의 정보를 읽어들이면 전체 파일 시스템 메타 데이터 정보를 구축할 수 있 다. 이러한 정상적 상황의 초기화 기법은 로그 기반 기법에서 유효한 슈퍼 블록과 정상적인 언마운트 여부를 파악하는 기법이 없는 단점을 보완할 수 있다.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
다음으로, 작업 영역 내에서 변경되었지만 저널에 기록되지 않은 정보를 찾고, 저널에 기록되어 있지 않은 블록들을 순차적으로 검색하면서 메타데이터 정보를 복구한다. 한 블록 내의 페이지는 언제나 순차적으로 기록되기 때문에 첫 페이지의 여분 영역을 읽음으로써 블록이 사용 중인지 여부를 알 수 있고 이를 통해 검색을 최적화할 수 있다. 이와 같이 작업 영역 내의 모든 블록 정보를 파악하면 크래시 복구를 종료한다.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
상기 모델에서 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)
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)
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)
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)
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 |
-
2009
- 2009-04-17 KR KR1020090033562A patent/KR101114125B1/en active IP Right Grant
Patent Citations (3)
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)
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 |