KR20120131579A - Flash file system - Google Patents

Flash file system Download PDF

Info

Publication number
KR20120131579A
KR20120131579A KR1020110049854A KR20110049854A KR20120131579A KR 20120131579 A KR20120131579 A KR 20120131579A KR 1020110049854 A KR1020110049854 A KR 1020110049854A KR 20110049854 A KR20110049854 A KR 20110049854A KR 20120131579 A KR20120131579 A KR 20120131579A
Authority
KR
South Korea
Prior art keywords
block
list
file system
object header
blocks
Prior art date
Application number
KR1020110049854A
Other languages
Korean (ko)
Other versions
KR101356470B1 (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 KR1020110049854A priority Critical patent/KR101356470B1/en
Publication of KR20120131579A publication Critical patent/KR20120131579A/en
Application granted granted Critical
Publication of KR101356470B1 publication Critical patent/KR101356470B1/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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

Abstract

PURPOSE: A flash file system is provided to reduce the usability of a main memory and time for mounting by storing a part of management structure configuration in a flash memory. CONSTITUTION: A master block(100) stores a file system version, a format option, and a bad block list and indicates a mount log block(200). The mount log block stores an object header block list(300), a preliminary block list, a first checkpoint block, and unmount success information. The preliminary block list maintains a list of the preliminary blocks which store file data and an object header block list. [Reference numerals] (100) Master block; (200) Mount log block; (300) Object header block list; (400) Preliminary block list; (A1, A2) Check point; (B1~B5) Empty; (C1~C12) File data; (D1,D2) Object; (E1~E5) Tnode; (FF) DRAM; (GG) Flash memory; (HH) Object head block; (II) Preliminary block; (JJ) Data, tnode or free block

Description

플래시 파일 시스템{FLASH FILE SYSTEM}Flash file system {FLASH FILE SYSTEM}

본 발명은 플래시 파일 시스템을 시스템에 마운트할 때 발생하는 스캐닝을 최소화하여 마운트시에 소요되는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 파일 시스템을 운용하는 중에 발생하는 무효 페이지들을 효율적으로 관리하여 파일 입출력 속도를 향상시키는 가비지 컬렉션(garbage collection)을 포함한 낸드 플래시 메모리(NAND Flash Memory)용 파일 시스템에 관한 것이다.The present invention minimizes the scanning that occurs when the flash file system is mounted on the system, thereby reducing the time required for mounting, reducing the amount of main memory used, and efficiently managing invalid pages generated while operating the file system. The present invention relates to a file system for NAND Flash memory including garbage collection that improves input / output speed.

스마트폰과 태블릿 PC를 비롯한 휴대기기가 대두되면서 대용량의 플래시 메모리가 일반적으로 사용되고 있다. 그런데 기존의 플래시 파일 시스템은 플래시 메모리의 크기가 커질수록 부팅시에 보다 많은 양의 데이터를 스캐닝해야 하고 이는 부팅 속도의 현저한 저하를 가져오고 메인 메모리의 사용량 또한 따라서 증가하여 시스템의 성능 저하를 유발하게 된다. 또한, 무효 페이지들을 회수하기 위한 가비지 컬렉션이 효율적이지 못해 불필요한 플래시 메모리의 동작을 유발하고 결과적으로 파일의 입출력 속도를 저하시키게 된다.With the rise of mobile devices such as smartphones and tablet PCs, a large amount of flash memory is generally used. However, the existing flash file system needs to scan a larger amount of data at boot time as the size of the flash memory increases, which causes a significant decrease in the boot speed and the increase in the main memory usage, thus causing a decrease in system performance. do. In addition, garbage collection to retrieve invalid pages is not efficient, causing unnecessary flash memory operation and consequently slowing the input / output speed of the file.

현재, 휴대기기의 발전 방향과 대용량 플래시 메모리의 기술 동향을 볼 때 기존의 플래시 파일 시스템은 점점 더 심각한 병목을 일으킬 것이 자명하기 때문에 앞에서 언급한 문제점들을 해결한 파일 시스템을 고안해야 할 필요가 있다.At present, it is necessary to devise a file system that solves the above-mentioned problems because it is obvious that the flash file system will become a serious bottleneck in view of the development direction of portable devices and the technology trend of large-capacity flash memory.

도 1은 낸드 플래시 메모리를 나타낸 도면이다. 낸드 플래시 메모리에 있어서 읽기 및 쓰기는 페이지 단위로만 가능하며, 삭제는 블럭 단위로만 가능하고, 덮어쓰기가 불가능하여 블럭 단위로 삭제한 후에 페이지 단위로 쓰기를 해야만 한다. 그리고, 삭제 횟수에 제한이 있다.1 illustrates a NAND flash memory. In NAND flash memory, reading and writing is possible only in units of pages. Deletion can be performed only in units of blocks. Since it cannot be overwritten, it must be written in units of pages after erasing in units of blocks. There is a limit on the number of deletions.

상기한 종래기술(YAFFS라고도 함)(도 2 참조)은 낸드 플래시 메모리에 최적화된 파일 시스템으로 각 페이지별 메타데이터를 낸드 플래쉬의 OOB(Out of Band) 영역(도 1 참조)에 함께 저장하는 방식으로 저널링 없이도 급작스런 전원 유실에 대응할 수 있도록 고안되었다. 로그 스트럭쳐 방식의 파일 시스템으로 플래시 메모리의 마모에 대응하며 간단한 구조로 다른 플래시 파일 시스템에 비해 높은 입출력 성능을 나타내고 있다.The prior art (also referred to as YAFFS) (see FIG. 2) is a file system optimized for NAND flash memory and stores metadata for each page together in an OOB area (see FIG. 1) of the NAND flash. It is designed to cope with sudden power loss without journaling. It is a log structured file system that copes with the wear of flash memory, and its simple structure shows higher input / output performance than other flash file systems.

메타데이터들이 흩어져 있기 때문에 파일 시스템을 사용하기 위해서는 최초 마운트시에 플래시 메모리 전체를 스캔하여 관리구조를 메인 메모리에 구축하여야 한다. 사용중 발생하는 무효 페이지들을 회수하기 위해 가비지 컬렉션이 동작하며 한 블럭 안에 일정량의 무효 페이지가 있는 블럭을 선택하여 적은 비용으로 많은 무효 페이지를 회수할 수 있도록 하고 있다.Because the metadata is scattered, to use the file system, you must scan the entire flash memory at initial mount and build the management structure in main memory. Garbage collection operates to recover invalid pages generated during use, and selects a block that has a certain amount of invalid pages in one block so that many invalid pages can be recovered at a low cost.

상기 종래기술은 오브젝트와 인덱스 트리(tnode)를 DRAM상에 재구성하기 위해 플래시 메모리에 대한 풀 스캔(full scan)이 필요하다, 따라서, 풀 스캔으로 인해 마운트 시간이 길다는 점과 파일 시스템을 사용하기 위해 필요한 메인 메모리의 용량이 크다는 점, 그리고 더 높은 입출력 성능을 구현할 수 있음에도 비효율적인 가비지 컬렉션으로 성능 저하가 발생한다는 데에 문제가 있다.The prior art requires a full scan of the flash memory to reconstruct the object and index tree on DRAM, thus using a file system and a long mount time due to the full scan. The problem is that the main memory required for this purpose is large, and that even though higher input / output performance can be achieved, inefficient garbage collection causes performance degradation.

플래시 메모리의 용량이 커짐에 비례해 마운트 시간도 길어지게 되는데 현재 기하급수적으로 커지고 있는 플래시 메모리의 용량으로 볼 때 이는 심각한 문제이다. 이때 마운트 시간과 함께 필요한 메인 메모리의 용량도 비례하여 증가하는데 이것은 응용프로그램 및 다른 서브시스템의 성능에 영향을 주어 전체적인 시스템의 성능 저하를 초래한다. 뿐만 아니라 플래시 메모리의 사용량이 100%에 가까워질 수록 가용한 빈 블럭이 줄어들어 빈번하게 가비지 컬렉션이 일어나는데 기존의 가비지 컬렉션 알고리즘은 불필요한 플래시 메모리 동작을 유발하여 입출력 성능의 저하를 가져온다.As the size of flash memory increases, the mount time also increases, which is a serious problem in light of the exponential growth of flash memory. The amount of main memory required increases proportionally with mount time, which affects the performance of applications and other subsystems, resulting in overall system degradation. In addition, as the usage of flash memory approaches 100%, the available free blocks decrease, which causes frequent garbage collection. The conventional garbage collection algorithm causes unnecessary flash memory operation, resulting in a decrease in input / output performance.

본 발명의 상기 문제점을 보완하기 위해 이루어진 것으로서 관리구조 구성에 필요한 정보를 최소화하고 일부를 플래시 메모리에 다시 저장해 둠으로써 마운트에 걸리는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 각 논리 블럭의 사용 패턴을 추적하여 미래의 사용 패턴을 추정하고 이를 가비지 컬렉션 정책에 반영함으로써 효율성을 높여 입출력 성능을 향상시킬 수 있는 플래시 파일 시스템을 제공하는 것을 목적으로 한다.In order to solve the above problems of the present invention, it is possible to minimize the information required for configuring the management structure and to store some of the information in the flash memory to shorten the mount time, reduce the usage of the main memory, and reduce the usage pattern of each logical block. It aims to provide a flash file system that tracks and estimates future usage patterns and reflects them in the garbage collection policy to increase efficiency and improve I / O performance.

상기 목적을 달성하기 위해 본 발명의 실시형태에 의한 플래시 파일 시스템은,In order to achieve the above object, a flash file system according to an embodiment of the present invention,

파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 갱신이 잘 일어나지 않는 파일 시스템 버전, 포맷 옵션, 배드 블럭 리스트 중 하나 이상을 저장하고 있으며, 마운트 로그 블럭을 가리키고 있는 마스터 블럭,It is used to store the information contained in the superblock, which stores the file system type and the starting point for searching the metadata. It stores one or more of the file system versions, format options, and bad block list that are not easily updated. A master block pointing to,

파일 시스템의 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 자주 갱신되는 상기 오브젝트 헤더 블럭 리스트, 상기 예비 블럭 리스트, 첫번째 체크포인트 블럭, 언마운트 성공 여부의 정보 중 하나 이상을 저장하고 있는 마운트 로그 블럭,The object header block list, the spare block list, the first checkpoint block, and whether the unmount succeeded are used to store information contained in a superblock that stores a type of file system and a starting point for searching metadata. A mount log block that stores one or more of

플래시 메모리에 저장되어 있는 메타데이터인 오브젝트 헤더만을 별도로 저장하고 있는 오브젝트 헤더 블럭에 대한 리스트를 유지하고 있는 오브젝트 헤더 블럭 리스트, 및An object header block list which holds a list of object header blocks separately storing only object headers which are metadata stored in flash memory, and

파일 내용의 빠른 참조를 위한 인덱스 트리에 대한 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 사용된 예비 블럭들의 리스트를 유지하고 있는 예비 블럭 리스트를 포함하고,A spare block list, which maintains a list of spare blocks used to store file data until information about an index tree for quick reference of file contents is reflected in flash memory,

파일 시스템의 마운트시에 상기 오브젝트 헤더 블럭 리스트에 의해 오브젝트를 구성하고, 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지 로딩 방식을 사용하는 것을 특징으로 한다.When the file system is mounted, an object is constructed by the object header block list, and a lazy loading method of storing an index tree in flash memory and reading it into main memory when necessary is used.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

작은 크기의 데이터의 경우에 오브젝트 헤더가 저장되는 페이지에 오브젝트 헤더를 제외한 나머지 빈 공간을 활용하여 리스트로 저장하고, 이후 파일의 크기가 커지면 리프 노드를 직접 갱신하는 대신 루트 노드의 빈 슬롯을 사용하여 갱신된 데이터를 임시로 저장하는 방식을 사용하는 디퍼렌셜 B+ 트리의 형태로 확장하여 추가적으로 할당받은 페이지들을 이용하여 저장하는 것을 특징으로 한다.In the case of small data, the page where the object header is stored is saved as a list by utilizing the empty space except the object header, and when the file size increases, the empty slot of the root node is used instead of updating the leaf node directly. The extended data is stored in the form of a differential B + tree using a method of temporarily storing updated data, and then stored using additionally allocated pages.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

상기 마스터 블럭 및 상기 마운트 로그 블럭은 각각 두개의 블럭에 같은 정보를 중복해서 저장해두는 것을 특징으로 한다.The master block and the mount log block are characterized in that the same information is repeatedly stored in two blocks.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

상기 오브젝트 헤더 블럭 리스트에는 오브젝트 헤더 블럭이 N(N>1)개씩 할당되는 것을 특징으로 한다.The object header block list may be allocated with N (N> 1) object header blocks.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

가비지 컬렉션 수행시, 판독 빈도(read intensiveness)가 낮거나 높은 유효 페이지를 포함하는 블럭을 빅팀으로 선정하고, 빅팀으로 선정된 블럭 내의 유효 페이지를 상기 프리 블럭에 복사하며, 상기 빅팀으로 선정된 블럭을 삭제하는 것을 특징으로 한다.When garbage collection is performed, a block containing valid pages having a low or high read intensiveness is selected as a big team, a valid page in the block selected as a big team is copied to the free block, and the block selected as the big team is selected. It is characterized in that the deletion.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

빅팀 블럭의 선정시, 블럭 사용량 테이블을 사용하고, 상기 블럭 사용량 테이블은 블럭내의 유효 페이지의 판독 빈도에 따라 정렬되는 것을 특징으로 한다.When selecting a Victim block, a block usage table is used, and the block usage table is arranged according to the reading frequency of valid pages in the block.

본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,Flash file system according to another embodiment of the present invention,

빅팀 블럭의 선정시, 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 하는 GC 밸류를 취하고, 상기 블럭 사용량 테이블 내의 유효 페이지 판독 빈도는 블럭들의 GC 밸류와 블럭 내의 유효 페이지 수를 포함하고, 가비지 컬렉션 수행시 GC 밸류가 높은 블럭들을 빅팀으로 선정하는 것을 특징으로 한다.When selecting a Victim block, a GC value is stored which stores the number of times a valid page is transferred by garbage collection, and has the smallest number within a block, and the valid page read frequency in the block usage table is determined by the block. GC value and the number of valid pages in the block, and characterized in that the high GC value blocks are selected as a big team during garbage collection.

상기 종래기술의 문제점을 보완하기 위해 이루어진 본 발명은 관리구조 구성에 필요한 정보를 최소화하고 일부를 플래시 메모리에 다시 저장해 둠으로써 마운트에 걸리는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 각 논리 블럭의 사용 패턴을 추적하여 미래의 사용 패턴을 추정하고 이를 가비지 컬렉션 정책에 반영함으로써 효율성을 높여 입출력 성능을 향상시킬 수 있다.The present invention has been made to solve the problems of the prior art by minimizing the information required for the configuration of the management structure and re-store a portion in the flash memory to shorten the mount time, reduce the use of the main memory and use of each logical block By tracking patterns, you can estimate future usage patterns and incorporate them into your garbage collection policies to increase efficiency and improve I / O performance.

도 1은 낸드 플래시 메모리를 나타낸 도면이다.
도 2는 종래기술에 의한 플래시 메모리 시스템을 나타낸 도면이다.
도 3(A)는 본 발명에 의한 플래시 파일 시스템의 개략적인 구성도이고, 도 3(B)는 본 발명에 의한 플래시 파일 시스템에서의 플래시 메모리를 나타낸 도면이다.
도 4는 본 발명에 의한 플래시 파일 시스템에 있어서, 오브젝트 헤더 블럭 리스트에 오브젝트 헤더 블럭이 4개씩 할당된 것을 나타낸 도면이다.
도 5는 종래기술에 의한 B+ 트리의 구조를 나타낸 도면이다.
도 6은 본 발명에 의한 디퍼렌션 B+ 트리에 있어서 데이터의 변경에 따른 플래시 메모리에서의 갱신 동작을 나타낸 도면이다.
도 7은 가비지 컬렉션 동작을 설명하기 위한 도면이다.
도 8은 본 발명에 의한 플래시 파일 시스템에서 가비지 컬렉션에 사용되는 블럭 사용량 테이블이다.
1 illustrates a NAND flash memory.
2 is a view showing a flash memory system according to the prior art.
Fig. 3A is a schematic configuration diagram of a flash file system according to the present invention, and Fig. 3B is a diagram showing a flash memory in the flash file system according to the present invention.
4 is a diagram showing that four object header blocks are allocated to an object header block list in the flash file system according to the present invention.
5 is a view showing the structure of the B + tree according to the prior art.
FIG. 6 is a diagram illustrating an update operation in a flash memory according to a change of data in a differential B + tree according to the present invention.
7 is a diagram for describing a garbage collection operation.
8 is a block usage table used for garbage collection in the flash file system according to the present invention.

이하, 본 발명의 바람직한 실시형태를 도면을 참조하여 설명한다.DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings.

파일 시스템은 파일을 저장하기 위해 각 파일의 속성을 나타내는 메타데이터와 내용을 포함하는 데이터로 나누어 저장한다. 메타데이터는 파일의 이름이나 접근 권한, 디렉토리 계층 구조에 관한 정보 등과 데이터에 대한 인덱스 정보를 가지고 있어 메타데이터로부터 파일의 내용에 접근할 수 있도록 한다.In order to store files, the file system stores the data including metadata and contents representing attributes of each file. Metadata includes file name, access rights, directory hierarchy information, and index information about the data so that the contents of the file can be accessed from the metadata.

플래시 메모리에 저장되어 있는 메타데이터를 오브젝트 헤더(Object Header)라 부르고, 이것을 메인 메모리에 읽어들인 것을 오브젝트(Object)라 부른다. 따라서, 오브젝트는 파일에 접근하기 위한 시작점이라고 볼 수 있다. 오브젝트는 파일의 내용을 참조하기 위해 인덱스 정보를 유지하는데 빠른 참조를 위해 트리를 구성하여 인덱스를 유지하고 이것을 인덱스 트리라고 부른다.Metadata stored in flash memory is called an object header, and what is read in main memory is called an object. Thus, an object can be seen as a starting point for accessing a file. An object maintains index information to refer to the contents of a file. It constructs a tree for quick reference to maintain an index, which is called an index tree.

[오브젝트 헤더 블럭 리스트][Object header block list]

종래기술은 오브젝트와 인덱스 트리를 구성하기 위해 마운트시에 플래시 메모리 전체를 스캔하였으나 본 발명은 오브젝트 헤더만을 별도로 오브젝트 헤더 블럭에 모아서 저장하고 이들 블럭에 대한 리스트를 유지하여 데이터에 대한 스캐닝 없이 오브젝트 헤더 블럭에 대한 스캔만으로 오브젝트들을 구성할 수 있도록 하였다. 도 3(A)와 도 3(B)에 도시된 바와 같이, 본 발명에 의한 플래시 파일 시스템에서는 이 오브젝트 헤더 블럭에 대한 리스트를 오브젝트 헤더 블럭 리스트(300)라 한다. 오브젝트 헤더 블럭 리스트(300)가 화살표로 가리키고 있는 블럭이 오브젝트 헤더 블럭이다. 이때 파일이 생성 또는 삭제되어 오브젝트 헤더 블럭이 추가되거나 삭제될 때마다 리스트의 내용이 변경되어야 한다. 이것은 추가적인 쓰기 동작을 유발하기 때문에 이로 인한 부하를 줄이기 위해 오브젝트 헤더 블럭의 추가를 한꺼번에 여러 개를 하도록 한다. 예를 들어, 블럭당 64개의 페이지가 있는 플래시 메모리의 경우 파일 한 개당 한 페이지의 오브젝트 헤더를 필요로 하므로 64개의 파일이 생성될 때마다 오브젝트 헤더 블럭이 추가되고 리스트가 갱신된다. 그런데, 한번에 4개의 블럭을 추가한다고 하면 총 256개의 파일이 생성될 때마다 리스트의 내용을 갱신하면 된다(도 4 참조).The prior art scans the entire flash memory at mount time to construct an object and an index tree, but the present invention collects and stores only object headers separately in an object header block and maintains a list of these blocks so that the object header block is not scanned for data. Objects can be constructed by only scanning. As shown in Figs. 3A and 3B, in the flash file system according to the present invention, the list for this object header block is called an object header block list 300. The block indicated by the arrow in the object header block list 300 is an object header block. At this time, the contents of the list should be changed whenever a file is created or deleted and an object header block is added or deleted. Since this causes additional write operations, add multiple object header blocks at once to reduce the overhead. For example, a flash memory with 64 pages per block requires an object header of one page per file, so an object header block is added and the list is updated each time 64 files are created. However, if four blocks are added at a time, the contents of the list may be updated every time 256 files are generated (see FIG. 4).

[인덱스 트리][Index tree]

마운트시에 데이터에 대한 스캔 없이 오브젝트 헤더로부터 오브젝트들을 구성하므로 종래기술과 같이 스캐닝에 의해 인덱스 트리(tnode)를 구성할 수 없다. 대신 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지로딩(lazy loading) 방식을 사용한다. 이것은 데이터에 대한 스캔을 없앨 수 있으며 필요한 경우에 필요한 만큼만 메인 메모리에 인덱스 트리를 로딩하므로 메인 메모리의 사용량을 줄일 수 있다.Since objects are constructed from object headers without scanning for data at mount time, index trees cannot be constructed by scanning as in the prior art. Instead, it uses lazy loading, which stores the index tree in flash memory and loads it into main memory when needed. This can eliminate scans of data and reduce the main memory usage by loading the index tree into main memory only as needed.

파일의 크기가 커지면 인덱스 트리를 구성하기 위한 데이터의 양도 커지게 되는데 작은 크기의 데이터는 오브젝트 헤더가 저장되는 페이지에 오브젝트 헤더를 제외한 나머지 빈 공간을 활용하여 리스트로 저장한다. 이후 파일의 크기가 점차 커지면 B+ 트리의 형태로 확장하여 추가적으로 할당받은 페이지들을 이용하여 저장한다. 이때 B+ 트리는 플래시 메모리의 특성에 맞게 수정하여 사용하였으며 이것을 디퍼렌셜 B+ 트리(Differential B+ Tree)라고 부른다. 디퍼렌션 B+ 트리는 이하 다시 설명한다.As the size of the file grows, the amount of data that constitutes the index tree also increases, and the small size data is stored in a list using the empty space other than the object header on the page where the object header is stored. After that, if the file size gradually increases, it expands to the form of B + tree and stores it using additionally allocated pages. At this time, the B + tree was modified according to the characteristics of the flash memory, and this is called a differential B + tree. The difference B + tree is described again below.

[디퍼렌셜 B+ 트리][Differential B + Tree]

기존의 B+ 트리(도 5 참조)는 데이터를 리프 노드 슬롯에 저장하며 중간의 이너 노드들이 루트 노드로부터 리프 노드까지를 연결한다. 그런데 플래시 메모리는 덮어쓰기가 불가능하므로 데이터가 추가 또는 삭제될 때마다 리프 노드를 다른 페이지에 갱신하여 써야 한다. 따라서 리프 노드를 저장하는 페이지가 바뀌게 되고 바뀐 정보를 갱신하기 위해 도 5와 같이 상위의 이너 노드들 또한 연쇄적으로 갱신되어야 한다.The existing B + tree (see FIG. 5) stores data in leaf node slots and intermediate inner nodes connect from the root node to the leaf node. However, since flash memory cannot be overwritten, each time a data is added or deleted, the leaf node must be updated and written to another page. Therefore, the page storing the leaf node is changed and the upper inner nodes must also be serially updated as shown in FIG. 5 to update the changed information.

즉, 도 5에 도시된 바와 같이, 완더링 트리(Wandering Tree) 형태로 리프 노드로부터 오브젝트 헤더까지 역순으로 한 트리 경로를 모두 기록해야만 변경된다. 따라서, 트리의 하이트(height)만큼 페이지에 대한 쓰기 동작이 필요하다.That is, as shown in FIG. 5, the tree path is changed only in the reverse order from the leaf node to the object header in the form of a wandering tree. Therefore, a write operation on a page is required by the height of the tree.

이는 플래시 메모리에 많은 추가적인 쓰기 동작을 유발하게 된다. 이와 같은 문제점을 해결하기 위해 본 발명에서 사용한 디퍼렌셜 B+ 트리는 리프 노드를 직접 갱신하는 대신 도 6(B)에 도시된 바와 같이 루트 노드의 빈 슬롯을 사용하여 갱신된 데이터를 임시로 저장하는 방법을 사용한다.This causes many additional write operations to the flash memory. To solve this problem, the differential B + tree used in the present invention uses a method of temporarily storing updated data using empty slots of the root node instead of directly updating leaf nodes. do.

도 6은 디퍼렌셜 B+ 트리에서의 플래시 메모리에 추가적인 쓰기 동작을 도 6(A)->도 6(B)->도 6(C)->도 6(D)의 순서로 나타낸 도면이다. 도 6(A) 내지 도 6(D)에 도시된 바와 같이, B+ 트리의 루트 노드의 남는 영역에 변경된 데이터 블럭 어드레싱 정보(301)를 누적 기록[도 6(B) 참조]하고, 루트 노드에 남는 공간이 부족하면 차일드 노드(child node)[도 6(C) 참조]를 만들어서 해당 변경된 내용(302)을 추가한다. 루트 노드에 기록된 블럭 어드레싱 정보(301)와 차일드 노드에 기록된 정보(302)를 새로운 리프 노드에 기록하고, 루트 노드에 새로 기록된 리프 노드를 가리키는 노드 포인터를 만든다[도 6(D) 참조]. 또한, 루트에 노드 포인터가 많아지면 트리 뎁스(tree depth)를 높인다.FIG. 6 is a diagram illustrating an additional write operation to the flash memory in the differential B + tree in the order of FIGS. 6 (A)-> 6 (B)-> FIG. 6 (C)-> FIG. 6 (D). As shown in Figs. 6A to 6D, the changed data block addressing information 301 is accumulated and recorded in the remaining area of the root node of the B + tree (see Fig. 6 (B)) and written to the root node. If there is not enough space left, create a child node (see Figure 6 (C)) to add the corresponding change 302. The block addressing information 301 recorded in the root node and the information 302 recorded in the child node are recorded in a new leaf node, and a node pointer pointing to the leaf node newly recorded in the root node is made (see Fig. 6 (D)). ]. Also, increasing the node pointer at the root increases the tree depth.

이와 같이 디퍼렌셜 B+ 트리를 사용하는 경우 순차적인 쓰기 동작시 기존에 기록된 리프 노드의 내용을 변경할 필요가 없고, 루트 노드에 대해 한 번의 쓰기만 발생하며 루트 노드를 저장하기 위해 오브젝트 헤더의 빈 공간을 활용하기 때문에 오브젝트 헤더가 저장될 때 함께 루트 노드가 갱신되도록 하여 부하를 줄일 수 있다.In this case, when using the differential B + tree, the sequential write operation does not need to change the contents of the previously recorded leaf node. Only one write occurs to the root node, and an empty space in the object header is used to store the root node. This reduces the load by having the root node updated with the object header when it is saved.

[예비 블럭 리스트][Spare block list]

상기한 방식대로 인덱스 트리를 구성하기 위한 정보를 플래시 메모리에 저장하도록 하면 급작스런 전원 유실이 발생할 경우 파일 시스템의 일관성이 깨져서 파일 데이터가 유실되거나 파일 시스템의 오동작을 유발할 수 있다. 예를 들면 파일 데이터를 썼으나 그에 수반하는 인덱스 트리의 갱신이 플래시 메모리에 반영되기 전에 전원 유실이 발생할 경우 쓰여진 데이터에 접근할 수 있는 방법이 없어서 데이터의 유실이 발생한다. 또한 인덱스 트리 정보의 일부만 플래시 메모리에 반영된 상태에서 전원 유실이 발생하면 인덱스 트리의 일관성이 깨져서 파일 시스템의 오동작을 일으킬 수 있다.When the information for constructing the index tree is stored in the flash memory as described above, if a sudden power loss occurs, the file system may be inconsistent and the file data may be lost or the file system may malfunction. For example, if a file data is written but a power loss occurs before the update of the index tree accompanying it is reflected in the flash memory, there is no way to access the written data. In addition, if a power loss occurs when only part of the index tree information is reflected in the flash memory, the index tree may be inconsistent and may cause a file system malfunction.

이를 해결하기 위해 인덱스 트리 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 쓰인 블럭들을 예비 블럭 리스트(400)로 관리하여 급작스런 전원 유실이 발생해도 다음 번 마운트시에 이 리스트로부터 인덱스 트리를 복구할 수 있도록 한다. 인덱스 트리가 플래시 메모리에 반영되면 관련된 블럭들은 예비 블럭 리스트(400)에서 삭제되며 리스트 관리 기법은 오브젝트 헤더 블럭 리스트(300)와 마찬가지이다.To solve this problem, the blocks used to store file data are managed in the spare block list 400 until the index tree information is reflected in the flash memory, and the index tree is recovered from this list at the next mount even if a sudden power loss occurs. Do it. When the index tree is reflected in the flash memory, related blocks are deleted from the spare block list 400 and the list management scheme is the same as that of the object header block list 300.

[마스터 블럭과 마운트 로그 블럭][Master block and mount log block]

파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 것을 슈퍼블럭(superblock)이라 한다. 본 발명에서는 슈퍼블럭이 담고 있는 정보를 저장하기 위해 마스터 블럭(100)과 마운트 로그 블럭(200)을 이용한다. 슈퍼블럭은 파일 시스템이 마운트될 때 처음으로 참조되는 데이터이므로 보통 물리적으로 고정된 위치에 저장된다. 한편 슈퍼블럭은 그 특성상 내용이 자주 갱신된다. 따라서 이와 같은 방식을 플래시 메모리에 적용하게 되면 해당 블럭에 대해 마모가 발생하여 수명이 단축된다.Storing the file system type and starting point to find metadata is called a superblock. In the present invention, the master block 100 and the mount log block 200 are used to store the information contained in the superblock. Superblocks are the first data referenced when a file system is mounted, so they are usually stored in a physically fixed location. Superblocks, on the other hand, are frequently updated in nature. Therefore, applying this method to flash memory will cause wear to the block and shorten its lifespan.

이와 같은 문제점을 해결하기 위해 마스터 블럭(100)에는 비교적 갱신이 잘 일어나지 않는 파일 시스템 버전이나 포맷 옵션, 배드 블럭 리스트 등을 저장하고, 마스터 블럭(100)이 마운트 로그 블럭(200)을 가리키도록 하여 이 곳에 오브젝트 헤더 블럭 리스트(300)와 예비 블럭 리스트(400), 첫번째 체크포인트 블럭, 언마운트 성공 여부 등 자주 갱신되는 정보를 저장하도록 한다. 그러면 고정된 위치에 있어야 하는 마스터 블럭(100)은 갱신이 잘 일어나지 않아 마모를 줄일 수 있는 한편 마운트 로그 블럭(200)은 장치의 어떤 블럭이든 사용할 수 있기 때문에 특정 블럭만 마모가 빨리 일어나는 문제를 해결할 수 있다.In order to solve such a problem, the master block 100 stores file system versions, format options, bad block lists, etc., which are relatively infrequently updated, and the master block 100 points to the mount log block 200. In this case, the frequently updated information such as the object header block list 300, the spare block list 400, the first checkpoint block, and whether the unmount is successful is stored. Then, the master block 100, which should be in a fixed position, may not wear out well so that the wear may be reduced, while the mount log block 200 may use any block of the device. Can be.

마스터 블럭(100)과 마운트 로그 블럭(200)은 갱신 중에 발생할 수 있는 전원 유실이나 비트 플립 오류(bit-flip error)에 대비하기 위해 각각 두개의 블럭에 같은 정보를 중복해서 저장해둔다.The master block 100 and the mount log block 200 repeatedly store the same information in two blocks in order to prepare for power loss or bit-flip error that may occur during the update.

[가비지 컬렉션]Garbage Collection

플래시 메모리는 덮어쓰기가 불가능하고 한 번 쓰여진 페이지를 다시 쓰기 위해서는 지우기 동작이 필요하다. 그런데 지우기는 페이지 단위가 아닌 블럭 단위로 이루어진다. 따라서 덮어쓰기 대신 빈 페이지에 갱신된 데이터를 저장하고 기존의 페이지는 무효 페이지로 만드는 방식을 사용한다. 그 결과 플래시 메모리를 계속 사용하면 빈 블럭들이 사라지게 되므로 무효 페이지들을 모아 지우기 동작을 통해 다시 빈 블럭을 만들어내는 과정이 필요하다. 이것을 가비지 컬렉션이라고 한다.Flash memory cannot be overwritten and an erase operation is required to rewrite a page once it has been written. However, erasing is done in blocks rather than pages. So instead of overwriting it, you store the updated data in a blank page and make the existing page invalid. As a result, if the flash memory continues to be used, the empty blocks disappear, and a process of collecting the invalid pages and recreating the empty blocks through the erase operation is necessary. This is called garbage collection.

도 7은 가비지 컬렉션 동작을 설명하기 위한 도면이다. 도 7(A)는 빅팀으로 선정된 블럭 내의 유효 페이지들이 프리 블럭(프리 페이지)으로 복사될 것을 나타낸 도면이고, 도 7(B)는 빅팀 블럭 내의 유효 페이지가 프리 블럭으로 복사된 후 빅팀 블럭 내의 모든 페이지가 무효 페이지로 된 것을 나타낸 도면이고, 도 7(C)는 무효 페이지로만 구성된 빅팀 블럭을 삭제하여 프리 페이지로만 구성된 프리 블럭으로 만든 것을 나타낸 도면이다.7 is a diagram for describing a garbage collection operation. FIG. 7 (A) shows that valid pages in a block selected as a big team are copied to a free block (free page), and FIG. 7 (B) shows that valid pages in a big team block are copied to a free block and then in a big block. Fig. 7 (C) is a view showing that all pages are made invalid pages, and Fig. 7 (C) shows that the Victim blocks composed of only invalid pages are deleted to form free blocks composed only of free pages.

이와 같이, 가비지 컬렉션의 동작은 크게 두 단계로 나뉠 수 있다. 첫째는 지우기 동작으로 빈 블럭이 될 빅팀 블럭을 선정하는 것이고, 둘째는 빅팀 블럭 내에 존재할 수 있는 유효 페이지들을 이전시켜서 데이터를 보존하는 것이다. 종래기술은 빅팀 블럭을 선정하기 위해 사용중인 블럭들 중 유효 페이지가 일정량보다 적은 블럭을 선정하였다. 이것은 유효 페이지들을 이전시키는데 필요한 비용(가비지 컬렉션 오버헤드)을 줄이기 위한 것이다[여기서, 비용은 빅팀 블럭이 선정되고 난 후 이 빅팀 블럭을 프리 블럭으로 만드는 데까지 드는 비용으로서 프리 블럭으로 만들기 위해서는 유효 페이지를 다른 곳에 옮겨놓고 모두 옮긴 후에는 삭제를 하게 되는데 유효 페이지의 프리 블럭으로의 복사와 빅팀 블럭의 삭제에 걸리는 시간과 전력사용량 등을 포함하는 개념임]. 이와 같은 정책은 페이지들의 읽기 및 쓰기 패턴을 반영하지 못해 한 번 이전된 페이지가 반복적으로 이전되고, 일부의 무효 페이지가 오랫동안 방치되는 블럭이 발생하는 등 지엽성(locality) 있는 접근 패턴에 대해 약점이 있다고 알려져 있다.As such, garbage collection can be divided into two stages. The first is to select a VicTim block to be an empty block by the erase operation, and the second is to preserve data by transferring valid pages that may exist within the VicTim block. In the prior art, a block having less than a certain amount of valid pages is selected among the blocks being used to select the Victim block. This is to reduce the cost (garbage collection overhead) required to transfer the valid pages [where the cost is the cost of making the big team block a free block after the big team block has been selected, to make the free page a free block. After moving it to another place, it is deleted. This concept includes copying the valid page to a free block, deleting the Victim block, and time and power consumption. Such a policy has weaknesses in locality access patterns, such as failing to reflect the read and write patterns of pages, causing repeated migration of once migrated pages, and block generation of some invalid pages for a long time. It is known.

본 발명에서는 어떤 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수(GC 카운트)를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 취하여 GC 밸류라 한다. 이렇게 얻어진 GC 밸류는 그 값이 클수록 어떤 블럭이 자주 갱신되지 않는 데이터를 포함하고 있음을 의미하고 그 값이 작을수록 어떤 블럭이 자주 갱신되는 데이터를 포함하고 있음을 의미한다. 이 GC 밸류에 기반하여 가비지 컬렉션을 할 때 GC 밸류가 높은 블럭들을 빅팀으로 선정하거나 때에 따라서 GC 밸류가 낮은 블럭들을 빅팀으로 선정하는 정책을 취하면 점차 갱신이 자주 일어나거나 자주 일어나지 않는 페이지들끼리 한 블럭에 모이도록 할 수 있다. 그러면 각 블럭에 무효 페이지가 산재하여 가비지 컬렉션에 드는 비용이 증가하는 문제를 해결할 수 있다.In the present invention, the number of times a valid page is transferred by garbage collection (GC count) is stored, and the smallest number of times in a block is referred to as a GC value. The GC value obtained in this way means that a block contains data that is not updated frequently, while a smaller value means that a block contains data that is frequently updated. When garbage collection is based on this GC value, if a policy with a high GC value block is selected as a big team, or a block with a low GC value as a big team, then pages that are updated frequently or infrequently occur frequently. Can be gathered in blocks. This can solve the problem of garbage collection scattered in each block, which increases the cost of garbage collection.

GC 밸류가 높은 블럭들을 빅팀으로 선정하는 경우는 백그라운드에서 주기적으로 수행되는 가비지 컬렉션일 경우나 파일 데이터의 갱신이 아닌 덧붙이기(append) 중에 가비지 컬렉션이 이루어지는 경우이며, GC 밸류가 낮은 블럭들을 빅팀으로 선정하는 경우는 파일 데이터의 갱신이 일어나는 중에 가비지 컬렉션이 이루어지는 경우이다. 이와 같은 정책을 취하는 이유는 덧붙이기의 경우 이렇게 쓰여진 데이터는 앞으로 갱신이 자주 일어나지 않는 데이터일 것이라고 짐작할 수 있기 때문이다.Blocks with high GC values are selected as big teams if they are garbage collections that are performed periodically in the background, or garbage collections are made during appending rather than updating of file data. In this case, garbage collection is performed while the file data is being updated. The reason for taking such a policy is that, in the case of the addition, it can be assumed that the data written in this way will be data that is not updated frequently.

[블럭 사용량 테이블][Block Usage Table]

빅팀 블럭을 선정할 때는 블럭들의 GC 밸류와 함께 어떤 블럭이 얼마나 많은 유효 페이지를 포함하고 있는가를 참고해야 한다. 유효 페이지가 많은 블럭을 빅팀 블럭으로 선정할 경우 유효 페이지를 이전하는 데에 많은 비용이 들기 때문이다.When selecting a VicTeam block, you need to consider the GC value of the blocks and which blocks contain how many valid pages. This is because when a block having many valid pages is selected as a big team block, it is expensive to transfer the valid pages.

본 발명은 가비지 컬렉션 등에서 유효 페이지가 적거나 많은 블럭을 빠르게 찾기 위해 블럭 사용량 테이블(도 8 참조)을 사용한다. 이 테이블의 엔트리 개수는 블럭당 페이지 개수+1개이며 각 엔트리는 같은 개수의 유효 페이지를 갖는 블럭들의 리스트를 가리킨다. 예를 들어 블럭당 페이지가 64개인 플래시 메모리의 경우 65개의 엔트리를 가지며 각 엔트리는 각각 유효 페이지가 0개부터 64개인 블럭들의 리스트를 가리킨다. 어떤 블럭의 페이지가 사용되어 유효 페이지 개수가 늘어나거나 페이지가 삭제되어 무효 페이지가 되면 블럭을 블럭 사용량 테이블에서 적당한 엔트리로 옮겨지도록 하여 테이블의 속성을 유지한다. 또한 각 엔트리의 리스트는 GC 밸류에 따라 정렬하여 가비지 컬렉션에 있어서 효과적으로 빅팀 블럭을 선정할 수 있도록 한다. 즉, 카피 오버헤드(copy overhead)를 줄이기 위해 사용량이 적은 블럭을 선정하고, GC 밸류가 가장 크거나 가장 작은 블럭을 빅팀으로 선정하기 위해 리스트의 헤드(head)나 테일(tail)에서 블럭을 취한다.The present invention uses a block usage table (see FIG. 8) to quickly find a block with few or valid pages in garbage collection. The number of entries in this table is the number of pages per block plus one and each entry points to a list of blocks with the same number of valid pages. For example, a flash memory with 64 pages per block has 65 entries, each entry pointing to a list of blocks with 0 to 64 valid pages each. When a page of a block is used to increase the number of valid pages or a page is deleted to become an invalid page, the block is moved to the appropriate entry in the block usage table to maintain the attributes of the table. In addition, the list of entries is sorted according to GC value to effectively select Victim blocks for garbage collection. In other words, select blocks with low usage to reduce copy overhead, and take blocks from the head or tail of the list to select the largest or smallest GC value as the big team. do.

이상으로 도면을 참조하여 본 발명에 의한 플래시 파일 시스템의 바람직한 실시형태를 상세히 설명하였지만 본 발명은 상기 실시형태에 한정되는 것이 아니며, 청구범위에 기재된 본 발명의 사상과 범위로부터 벗어나지 않는 당업자에 의한 다양한 수정 및 변경이 가능하다.Although the preferred embodiments of the flash file system according to the present invention have been described in detail above with reference to the drawings, the present invention is not limited to the above embodiments and various modifications by those skilled in the art without departing from the spirit and scope of the present invention described in the claims. Modifications and changes are possible.

Claims (7)

파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 갱신이 잘 일어나지 않는 파일 시스템 버전, 포맷 옵션, 배드 블럭 리스트 중 하나 이상을 저장하고 있으며, 마운트 로그 블럭을 가리키고 있는 마스터 블럭,
파일 시스템의 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 자주 갱신되는 상기 오브젝트 헤더 블럭 리스트, 상기 예비 블럭 리스트, 첫번째 체크포인트 블럭, 언마운트 성공 여부의 정보 중 하나 이상을 저장하고 있는 마운트 로그 블럭,
플래시 메모리에 저장되어 있는 메타데이터인 오브젝트 헤더만을 별도로 저장하고 있는 오브젝트 헤더 블럭에 대한 리스트를 유지하고 있는 오브젝트 헤더 블럭 리스트, 및
파일 내용의 빠른 참조를 위한 인덱스 트리에 대한 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 사용된 예비 블럭들의 리스트를 유지하고 있는 예비 블럭 리스트를 포함하고,
파일 시스템의 마운트시에 상기 오브젝트 헤더 블럭 리스트에 의해 오브젝트를 구성하고, 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지 로딩 방식을 사용하는 것을 특징으로 하는 플래시 파일 시스템.
It is used to store the information contained in the superblock, which stores the file system type and the starting point for searching the metadata. It stores one or more of the file system versions, format options, and bad block list that are not easily updated. A master block pointing to,
The object header block list, the spare block list, the first checkpoint block, and whether the unmount succeeded are used to store information contained in a superblock that stores a type of file system and a starting point for searching metadata. A mount log block that stores one or more of
An object header block list holding a list of object header blocks that separately store only object headers, which are metadata stored in flash memory, and
A spare block list, which maintains a list of spare blocks used to store file data until information about an index tree for quick reference of file contents is reflected in flash memory,
When the file system is mounted, an object is constructed by the object header block list, and a lazy loading method of storing an index tree in flash memory and reading it into main memory when necessary is used.
제 1 항에 있어서,
작은 크기의 데이터의 경우에 오브젝트 헤더가 저장되는 페이지에 오브젝트 헤더를 제외한 나머지 빈 공간을 활용하여 리스트로 저장하고, 이후 파일의 크기가 커지면 리프 노드를 직접 갱신하는 대신 루트 노드의 빈 슬롯을 사용하여 갱신된 데이터를 임시로 저장하는 방식을 사용하는 디퍼렌셜 B+ 트리의 형태로 확장하여 추가적으로 할당받은 페이지들을 이용하여 저장하는 것을 특징으로 하는 플래시 파일 시스템.
The method of claim 1,
In the case of small data, the page where the object header is stored is saved as a list by utilizing the empty space except the object header, and when the file size increases, the empty slot of the root node is used instead of updating the leaf node directly. Flash file system, characterized in that by using the additionally allocated pages to expand in the form of a differential B + tree using a method of temporarily storing the updated data.
제 1 항에 있어서,
상기 마스터 블럭 및 상기 마운트 로그 블럭은 각각 두개의 블럭에 같은 정보를 중복해서 저장해두는 것을 특징으로 하는 플래시 파일 시스템.
The method of claim 1,
And the master block and the mount log block each store the same information in two blocks.
제 1 항에 있어서,
상기 오브젝트 헤더 블럭 리스트에는 오브젝트 헤더 블럭이 N(N>1)개씩 할당되는 것을 특징으로 하는 플래시 파일 시스템.
The method of claim 1,
And N (N> 1) object header blocks are allocated to the object header block list.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
가비지 컬렉션 수행시, 판독 빈도가 낮거나 높은 유효 페이지를 포함하는 블럭을 빅팀으로 선정하고, 빅팀으로 선정된 블럭 내의 유효 페이지를 상기 프리 블럭에 복사하며, 상기 빅팀으로 선정된 블럭을 삭제하는 것을 특징으로 하는 플래시 파일 시스템.
The method according to any one of claims 1 to 4,
When garbage collection is performed, a block including valid pages having a low or high reading frequency is selected as a big team, a valid page in the block selected as a big team is copied to the free block, and the block selected as the big team is deleted. Flash file system.
제 5 항에 있어서,
빅팀 블럭의 선정시, 블럭 사용량 테이블을 사용하고, 상기 블럭 사용량 테이블은 블럭내의 유효 페이지의 판독 빈도에 따라 정렬되는 것을 특징으로 하는 플래시 파일 시스템.
The method of claim 5, wherein
And a block usage table, wherein the block usage table is arranged in accordance with the frequency of reading valid pages in the block.
제 6 항에 있어서,
빅팀 블럭의 선정시, 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 하는 GC 밸류를 취하고, 상기 블럭 사용량 테이블 내의 유효 페이지의 판독 빈도는 블럭들의 GC 밸류와 블럭 내의 유효 페이지 수를 포함하고, 가비지 컬렉션 수행시 GC 밸류가 높은 블럭들을 빅팀으로 선정하는 것을 특징으로 하는 플래시 파일 시스템.
The method according to claim 6,
When selecting a Victim block, a GC value is stored which stores the number of times a valid page is transferred by garbage collection, and has the smallest number within a block, and the frequency of reading valid pages in the block usage table is A flash file system including a GC value of blocks and a valid number of pages in a block, and selecting blocks having a high GC value as a big team during garbage collection.
KR1020110049854A 2011-05-26 2011-05-26 Flash file system KR101356470B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110049854A KR101356470B1 (en) 2011-05-26 2011-05-26 Flash file system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110049854A KR101356470B1 (en) 2011-05-26 2011-05-26 Flash file system

Publications (2)

Publication Number Publication Date
KR20120131579A true KR20120131579A (en) 2012-12-05
KR101356470B1 KR101356470B1 (en) 2014-01-28

Family

ID=47515369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110049854A KR101356470B1 (en) 2011-05-26 2011-05-26 Flash file system

Country Status (1)

Country Link
KR (1) KR101356470B1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101381597B1 (en) * 2013-01-31 2014-04-07 한국과학기술원 Pattern-aware management system for multi-channel ssd and method therefor
KR101631409B1 (en) * 2015-03-06 2016-06-24 한양대학교 산학협력단 Storage apparatus including drive controller, the drive controller for performing garbage collection perform method
KR20170056411A (en) * 2015-11-13 2017-05-23 삼성전자주식회사 Management system for operating storage media in multi-mode, storage system including the same, and method of managing storage media using the same
US9691487B2 (en) 2014-03-14 2017-06-27 Samsung Electronics Co., Ltd. Storage device and table management method thereof
CN108090168A (en) * 2017-12-14 2018-05-29 厦门市美亚柏科信息股份有限公司 A kind of general F2FS file system analytic method, terminal device and storage medium
CN113625964A (en) * 2021-07-16 2021-11-09 浙江鸿泉电子科技有限公司 NandFlash-based sequential storage method, electronic equipment and storage medium
WO2023017914A1 (en) * 2021-08-13 2023-02-16 울산과학기술원 Method for data classification by lifespan according to data transfer frequency for improving performance and lifespan of flash memory-based ssd

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190041082A (en) 2017-10-12 2019-04-22 에스케이하이닉스 주식회사 Data storage device and operating method thereof
KR20210063764A (en) 2019-11-25 2021-06-02 에스케이하이닉스 주식회사 Memory system and method for operation in memory system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234188A (en) 2003-01-29 2004-08-19 Canon Inc Data file management method
KR20070096429A (en) * 2006-03-24 2007-10-02 부산대학교 산학협력단 Fast mounting for a file system on nand flash memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101381597B1 (en) * 2013-01-31 2014-04-07 한국과학기술원 Pattern-aware management system for multi-channel ssd and method therefor
US9691487B2 (en) 2014-03-14 2017-06-27 Samsung Electronics Co., Ltd. Storage device and table management method thereof
KR101631409B1 (en) * 2015-03-06 2016-06-24 한양대학교 산학협력단 Storage apparatus including drive controller, the drive controller for performing garbage collection perform method
KR20170056411A (en) * 2015-11-13 2017-05-23 삼성전자주식회사 Management system for operating storage media in multi-mode, storage system including the same, and method of managing storage media using the same
CN108090168A (en) * 2017-12-14 2018-05-29 厦门市美亚柏科信息股份有限公司 A kind of general F2FS file system analytic method, terminal device and storage medium
CN113625964A (en) * 2021-07-16 2021-11-09 浙江鸿泉电子科技有限公司 NandFlash-based sequential storage method, electronic equipment and storage medium
CN113625964B (en) * 2021-07-16 2024-01-26 浙江鸿泉电子科技有限公司 NandFlash-based sequential storage method, electronic device and storage medium
WO2023017914A1 (en) * 2021-08-13 2023-02-16 울산과학기술원 Method for data classification by lifespan according to data transfer frequency for improving performance and lifespan of flash memory-based ssd

Also Published As

Publication number Publication date
KR101356470B1 (en) 2014-01-28

Similar Documents

Publication Publication Date Title
KR101356470B1 (en) Flash file system
CN110678836B (en) Persistent memory for key value storage
CN107862064B (en) High-performance and extensible lightweight file system based on NVM (non-volatile memory)
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
KR102002830B1 (en) Segment cleaning apparatus and method thereof
US11023318B1 (en) System and method for fast random access erasure encoded storage
KR100484147B1 (en) Flash memory management method
US9519575B2 (en) Conditional iteration for a non-volatile device
EP2633413B1 (en) Low ram space, high-throughput persistent key-value store using secondary memory
CN101743546B (en) Hierarchical storage management for a file system providing snapshots
US8612719B2 (en) Methods for optimizing data movement in solid state devices
KR101977575B1 (en) Apparatus and method for directory entry look up, and recording medium recording the directory entry look up program thereof
US8868926B2 (en) Cryptographic hash database
CN101187901B (en) High speed cache system and method for implementing file access
CN102779096B (en) Page, block and face-based three-dimensional flash memory address mapping method
US20100332717A1 (en) Access device, information recording device, controller, and information recording system
KR20020092487A (en) Flash memory management method
Lee et al. An efficient index buffer management scheme for implementing a B-tree on NAND flash memory
KR20070096429A (en) Fast mounting for a file system on nand flash memory
CN110347852A (en) It is embedded in the file system and file management method of key assignments storage system extending transversely
US10606746B2 (en) Access request processing method and apparatus, and computer system
Fang et al. An Adaptive Endurance-Aware ${B^+} $-Tree for Flash Memory Storage Systems
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN112882649A (en) Data storage device and non-volatile memory control method
US20090112951A1 (en) Apparatus and method of managing files and memory device

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: 20170123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190115

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 7