KR101356470B1 - 플래시 파일 시스템 - Google Patents

플래시 파일 시스템 Download PDF

Info

Publication number
KR101356470B1
KR101356470B1 KR1020110049854A KR20110049854A KR101356470B1 KR 101356470 B1 KR101356470 B1 KR 101356470B1 KR 1020110049854 A KR1020110049854 A KR 1020110049854A KR 20110049854 A KR20110049854 A KR 20110049854A KR 101356470 B1 KR101356470 B1 KR 101356470B1
Authority
KR
South Korea
Prior art keywords
block
file system
list
file
store
Prior art date
Application number
KR1020110049854A
Other languages
English (en)
Other versions
KR20120131579A (ko
Inventor
서성한
전하늘
위승민
Original Assignee
에스코어 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스코어 주식회사 filed Critical 에스코어 주식회사
Priority to KR1020110049854A priority Critical patent/KR101356470B1/ko
Publication of KR20120131579A publication Critical patent/KR20120131579A/ko
Application granted granted Critical
Publication of KR101356470B1 publication Critical patent/KR101356470B1/ko

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

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 특징은 스캐닝에 걸리는 시간을 최소화 하기 위해 각 파일의 메타 데이터만을 스캔하고 각 파일 데이터의 위치를 저장하기 위한 인덱스 트리는 플래시 메모리에 저장하여 스캐닝시에 재구성이 필요하지 않도록 하는 데에 있다. 부가적으로 메인 메모리의 사용량을 감소시키는 효과 또한 얻을 수 있다. 또, 각 논리 블럭의 사용 패턴에 기반하여 빅팀 블럭을 선정하도록 함으로써 가비지 컬렉션을 효율적으로 구현하고 그 결과 파일의 입출력 속도를 향상시킨다.

Description

플래시 파일 시스템{FLASH FILE SYSTEM}
본 발명은 플래시 파일 시스템을 시스템에 마운트할 때 발생하는 스캐닝을 최소화하여 마운트시에 소요되는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 파일 시스템을 운용하는 중에 발생하는 무효 페이지들을 효율적으로 관리하여 파일 입출력 속도를 향상시키는 가비지 컬렉션(garbage collection)을 포함한 낸드 플래시 메모리(NAND Flash Memory)용 파일 시스템에 관한 것이다.
스마트폰과 태블릿 PC를 비롯한 휴대기기가 대두되면서 대용량의 플래시 메모리가 일반적으로 사용되고 있다. 그런데 기존의 플래시 파일 시스템은 플래시 메모리의 크기가 커질수록 부팅시에 보다 많은 양의 데이터를 스캐닝해야 하고 이는 부팅 속도의 현저한 저하를 가져오고 메인 메모리의 사용량 또한 따라서 증가하여 시스템의 성능 저하를 유발하게 된다. 또한, 무효 페이지들을 회수하기 위한 가비지 컬렉션이 효율적이지 못해 불필요한 플래시 메모리의 동작을 유발하고 결과적으로 파일의 입출력 속도를 저하시키게 된다.
현재, 휴대기기의 발전 방향과 대용량 플래시 메모리의 기술 동향을 볼 때 기존의 플래시 파일 시스템은 점점 더 심각한 병목을 일으킬 것이 자명하기 때문에 앞에서 언급한 문제점들을 해결한 파일 시스템을 고안해야 할 필요가 있다.
도 1은 낸드 플래시 메모리를 나타낸 도면이다. 낸드 플래시 메모리에 있어서 읽기 및 쓰기는 페이지 단위로만 가능하며, 삭제는 블럭 단위로만 가능하고, 덮어쓰기가 불가능하여 블럭 단위로 삭제한 후에 페이지 단위로 쓰기를 해야만 한다. 그리고, 삭제 횟수에 제한이 있다.
상기한 종래기술(YAFFS라고도 함)(도 2 참조)은 낸드 플래시 메모리에 최적화된 파일 시스템으로 각 페이지별 메타데이터를 낸드 플래쉬의 OOB(Out of Band) 영역(도 1 참조)에 함께 저장하는 방식으로 저널링 없이도 급작스런 전원 유실에 대응할 수 있도록 고안되었다. 로그 스트럭쳐 방식의 파일 시스템으로 플래시 메모리의 마모에 대응하며 간단한 구조로 다른 플래시 파일 시스템에 비해 높은 입출력 성능을 나타내고 있다.
메타데이터들이 흩어져 있기 때문에 파일 시스템을 사용하기 위해서는 최초 마운트시에 플래시 메모리 전체를 스캔하여 관리구조를 메인 메모리에 구축하여야 한다. 사용중 발생하는 무효 페이지들을 회수하기 위해 가비지 컬렉션이 동작하며 한 블럭 안에 일정량의 무효 페이지가 있는 블럭을 선택하여 적은 비용으로 많은 무효 페이지를 회수할 수 있도록 하고 있다.
상기 종래기술은 오브젝트와 인덱스 트리(tnode)를 DRAM상에 재구성하기 위해 플래시 메모리에 대한 풀 스캔(full scan)이 필요하다, 따라서, 풀 스캔으로 인해 마운트 시간이 길다는 점과 파일 시스템을 사용하기 위해 필요한 메인 메모리의 용량이 크다는 점, 그리고 더 높은 입출력 성능을 구현할 수 있음에도 비효율적인 가비지 컬렉션으로 성능 저하가 발생한다는 데에 문제가 있다.
플래시 메모리의 용량이 커짐에 비례해 마운트 시간도 길어지게 되는데 현재 기하급수적으로 커지고 있는 플래시 메모리의 용량으로 볼 때 이는 심각한 문제이다. 이때 마운트 시간과 함께 필요한 메인 메모리의 용량도 비례하여 증가하는데 이것은 응용프로그램 및 다른 서브시스템의 성능에 영향을 주어 전체적인 시스템의 성능 저하를 초래한다. 뿐만 아니라 플래시 메모리의 사용량이 100%에 가까워질 수록 가용한 빈 블럭이 줄어들어 빈번하게 가비지 컬렉션이 일어나는데 기존의 가비지 컬렉션 알고리즘은 불필요한 플래시 메모리 동작을 유발하여 입출력 성능의 저하를 가져온다.
본 발명의 상기 문제점을 보완하기 위해 이루어진 것으로서 관리구조 구성에 필요한 정보를 최소화하고 일부를 플래시 메모리에 다시 저장해 둠으로써 마운트에 걸리는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 각 논리 블럭의 사용 패턴을 추적하여 미래의 사용 패턴을 추정하고 이를 가비지 컬렉션 정책에 반영함으로써 효율성을 높여 입출력 성능을 향상시킬 수 있는 플래시 파일 시스템을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해 본 발명의 실시형태에 의한 플래시 파일 시스템은,
파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 갱신이 잘 일어나지 않는 파일 시스템 버전, 포맷 옵션, 배드 블럭 리스트 중 하나 이상을 저장하고 있으며, 마운트 로그 블럭을 가리키고 있는 마스터 블럭,
파일 시스템의 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서 자주 갱신되는 상기 오브젝트 헤더 블럭 리스트, 상기 예비 블럭 리스트, 첫번째 체크포인트 블럭, 언마운트 성공 여부의 정보 중 하나 이상을 저장하고 있는 마운트 로그 블럭,
플래시 메모리에 저장되어 있는 메타데이터인 오브젝트 헤더만을 별도로 저장하고 있는 오브젝트 헤더 블럭에 대한 리스트를 유지하고 있는 오브젝트 헤더 블럭 리스트, 및
파일 내용의 빠른 참조를 위한 인덱스 트리에 대한 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 사용된 예비 블럭들의 리스트를 유지하고 있는 예비 블럭 리스트를 포함하고,
파일 시스템의 마운트시에 상기 오브젝트 헤더 블럭 리스트에 의해 오브젝트를 구성하고, 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지 로딩 방식을 사용하는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
작은 크기의 데이터의 경우에 오브젝트 헤더가 저장되는 페이지에 오브젝트 헤더를 제외한 나머지 빈 공간을 활용하여 리스트로 저장하고, 이후 파일의 크기가 커지면 리프 노드를 직접 갱신하는 대신 루트 노드의 빈 슬롯을 사용하여 갱신된 데이터를 임시로 저장하는 방식을 사용하는 디퍼렌셜 B+ 트리의 형태로 확장하여 추가적으로 할당받은 페이지들을 이용하여 저장하는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
상기 마스터 블럭 및 상기 마운트 로그 블럭은 각각 두개의 블럭에 같은 정보를 중복해서 저장해두는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
상기 오브젝트 헤더 블럭 리스트에는 오브젝트 헤더 블럭이 N(N>1)개씩 할당되는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
가비지 컬렉션 수행시, 판독 빈도(read intensiveness)가 낮거나 높은 유효 페이지를 포함하는 블럭을 빅팀으로 선정하고, 빅팀으로 선정된 블럭 내의 유효 페이지를 상기 프리 블럭에 복사하며, 상기 빅팀으로 선정된 블럭을 삭제하는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
빅팀 블럭의 선정시, 블럭 사용량 테이블을 사용하고, 상기 블럭 사용량 테이블은 블럭내의 유효 페이지의 판독 빈도에 따라 정렬되는 것을 특징으로 한다.
본 발명의 다른 실시형태에 의한 플래시 파일 시스템은,
빅팀 블럭의 선정시, 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 하는 GC 밸류를 취하고, 상기 블럭 사용량 테이블 내의 유효 페이지 판독 빈도는 블럭들의 GC 밸류와 블럭 내의 유효 페이지 수를 포함하고, 가비지 컬렉션 수행시 GC 밸류가 높은 블럭들을 빅팀으로 선정하는 것을 특징으로 한다.
상기 종래기술의 문제점을 보완하기 위해 이루어진 본 발명은 관리구조 구성에 필요한 정보를 최소화하고 일부를 플래시 메모리에 다시 저장해 둠으로써 마운트에 걸리는 시간을 단축하고 메인 메모리의 사용량을 감소시키며 각 논리 블럭의 사용 패턴을 추적하여 미래의 사용 패턴을 추정하고 이를 가비지 컬렉션 정책에 반영함으로써 효율성을 높여 입출력 성능을 향상시킬 수 있다.
도 1은 낸드 플래시 메모리를 나타낸 도면이다.
도 2는 종래기술에 의한 플래시 메모리 시스템을 나타낸 도면이다.
도 3(A)는 본 발명에 의한 플래시 파일 시스템의 개략적인 구성도이고, 도 3(B)는 본 발명에 의한 플래시 파일 시스템에서의 플래시 메모리를 나타낸 도면이다.
도 4는 본 발명에 의한 플래시 파일 시스템에 있어서, 오브젝트 헤더 블럭 리스트에 오브젝트 헤더 블럭이 4개씩 할당된 것을 나타낸 도면이다.
도 5는 종래기술에 의한 B+ 트리의 구조를 나타낸 도면이다.
도 6은 본 발명에 의한 디퍼렌션 B+ 트리에 있어서 데이터의 변경에 따른 플래시 메모리에서의 갱신 동작을 나타낸 도면이다.
도 7은 가비지 컬렉션 동작을 설명하기 위한 도면이다.
도 8은 본 발명에 의한 플래시 파일 시스템에서 가비지 컬렉션에 사용되는 블럭 사용량 테이블이다.
이하, 본 발명의 바람직한 실시형태를 도면을 참조하여 설명한다.
파일 시스템은 파일을 저장하기 위해 각 파일의 속성을 나타내는 메타데이터와 내용을 포함하는 데이터로 나누어 저장한다. 메타데이터는 파일의 이름이나 접근 권한, 디렉토리 계층 구조에 관한 정보 등과 데이터에 대한 인덱스 정보를 가지고 있어 메타데이터로부터 파일의 내용에 접근할 수 있도록 한다.
플래시 메모리에 저장되어 있는 메타데이터를 오브젝트 헤더(Object Header)라 부르고, 이것을 메인 메모리에 읽어들인 것을 오브젝트(Object)라 부른다. 따라서, 오브젝트는 파일에 접근하기 위한 시작점이라고 볼 수 있다. 오브젝트는 파일의 내용을 참조하기 위해 인덱스 정보를 유지하는데 빠른 참조를 위해 트리를 구성하여 인덱스를 유지하고 이것을 인덱스 트리라고 부른다.
[오브젝트 헤더 블럭 리스트]
종래기술은 오브젝트와 인덱스 트리를 구성하기 위해 마운트시에 플래시 메모리 전체를 스캔하였으나 본 발명은 오브젝트 헤더만을 별도로 오브젝트 헤더 블럭에 모아서 저장하고 이들 블럭에 대한 리스트를 유지하여 데이터에 대한 스캐닝 없이 오브젝트 헤더 블럭에 대한 스캔만으로 오브젝트들을 구성할 수 있도록 하였다. 도 3(A)와 도 3(B)에 도시된 바와 같이, 본 발명에 의한 플래시 파일 시스템에서는 이 오브젝트 헤더 블럭에 대한 리스트를 오브젝트 헤더 블럭 리스트(300)라 한다. 오브젝트 헤더 블럭 리스트(300)가 화살표로 가리키고 있는 블럭이 오브젝트 헤더 블럭이다. 이때 파일이 생성 또는 삭제되어 오브젝트 헤더 블럭이 추가되거나 삭제될 때마다 리스트의 내용이 변경되어야 한다. 이것은 추가적인 쓰기 동작을 유발하기 때문에 이로 인한 부하를 줄이기 위해 오브젝트 헤더 블럭의 추가를 한꺼번에 여러 개를 하도록 한다. 예를 들어, 블럭당 64개의 페이지가 있는 플래시 메모리의 경우 파일 한 개당 한 페이지의 오브젝트 헤더를 필요로 하므로 64개의 파일이 생성될 때마다 오브젝트 헤더 블럭이 추가되고 리스트가 갱신된다. 그런데, 한번에 4개의 블럭을 추가한다고 하면 총 256개의 파일이 생성될 때마다 리스트의 내용을 갱신하면 된다(도 4 참조).
[인덱스 트리]
마운트시에 데이터에 대한 스캔 없이 오브젝트 헤더로부터 오브젝트들을 구성하므로 종래기술과 같이 스캐닝에 의해 인덱스 트리(tnode)를 구성할 수 없다. 대신 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지로딩(lazy loading) 방식을 사용한다. 이것은 데이터에 대한 스캔을 없앨 수 있으며 필요한 경우에 필요한 만큼만 메인 메모리에 인덱스 트리를 로딩하므로 메인 메모리의 사용량을 줄일 수 있다.
파일의 크기가 커지면 인덱스 트리를 구성하기 위한 데이터의 양도 커지게 되는데 작은 크기의 데이터는 오브젝트 헤더가 저장되는 페이지에 오브젝트 헤더를 제외한 나머지 빈 공간을 활용하여 리스트로 저장한다. 이후 파일의 크기가 점차 커지면 B+ 트리의 형태로 확장하여 추가적으로 할당받은 페이지들을 이용하여 저장한다. 이때 B+ 트리는 플래시 메모리의 특성에 맞게 수정하여 사용하였으며 이것을 디퍼렌셜 B+ 트리(Differential B+ Tree)라고 부른다. 디퍼렌션 B+ 트리는 이하 다시 설명한다.
[디퍼렌셜 B+ 트리]
기존의 B+ 트리(도 5 참조)는 데이터를 리프 노드 슬롯에 저장하며 중간의 이너 노드들이 루트 노드로부터 리프 노드까지를 연결한다. 그런데 플래시 메모리는 덮어쓰기가 불가능하므로 데이터가 추가 또는 삭제될 때마다 리프 노드를 다른 페이지에 갱신하여 써야 한다. 따라서 리프 노드를 저장하는 페이지가 바뀌게 되고 바뀐 정보를 갱신하기 위해 도 5와 같이 상위의 이너 노드들 또한 연쇄적으로 갱신되어야 한다.
즉, 도 5에 도시된 바와 같이, 완더링 트리(Wandering Tree) 형태로 리프 노드로부터 오브젝트 헤더까지 역순으로 한 트리 경로를 모두 기록해야만 변경된다. 따라서, 트리의 하이트(height)만큼 페이지에 대한 쓰기 동작이 필요하다.
이는 플래시 메모리에 많은 추가적인 쓰기 동작을 유발하게 된다. 이와 같은 문제점을 해결하기 위해 본 발명에서 사용한 디퍼렌셜 B+ 트리는 리프 노드를 직접 갱신하는 대신 도 6(B)에 도시된 바와 같이 루트 노드의 빈 슬롯을 사용하여 갱신된 데이터를 임시로 저장하는 방법을 사용한다.
도 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)를 높인다.
이와 같이 디퍼렌셜 B+ 트리를 사용하는 경우 순차적인 쓰기 동작시 기존에 기록된 리프 노드의 내용을 변경할 필요가 없고, 루트 노드에 대해 한 번의 쓰기만 발생하며 루트 노드를 저장하기 위해 오브젝트 헤더의 빈 공간을 활용하기 때문에 오브젝트 헤더가 저장될 때 함께 루트 노드가 갱신되도록 하여 부하를 줄일 수 있다.
[예비 블럭 리스트]
상기한 방식대로 인덱스 트리를 구성하기 위한 정보를 플래시 메모리에 저장하도록 하면 급작스런 전원 유실이 발생할 경우 파일 시스템의 일관성이 깨져서 파일 데이터가 유실되거나 파일 시스템의 오동작을 유발할 수 있다. 예를 들면 파일 데이터를 썼으나 그에 수반하는 인덱스 트리의 갱신이 플래시 메모리에 반영되기 전에 전원 유실이 발생할 경우 쓰여진 데이터에 접근할 수 있는 방법이 없어서 데이터의 유실이 발생한다. 또한 인덱스 트리 정보의 일부만 플래시 메모리에 반영된 상태에서 전원 유실이 발생하면 인덱스 트리의 일관성이 깨져서 파일 시스템의 오동작을 일으킬 수 있다.
이를 해결하기 위해 인덱스 트리 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 쓰인 블럭들을 예비 블럭 리스트(400)로 관리하여 급작스런 전원 유실이 발생해도 다음 번 마운트시에 이 리스트로부터 인덱스 트리를 복구할 수 있도록 한다. 인덱스 트리가 플래시 메모리에 반영되면 관련된 블럭들은 예비 블럭 리스트(400)에서 삭제되며 리스트 관리 기법은 오브젝트 헤더 블럭 리스트(300)와 마찬가지이다.
[마스터 블럭과 마운트 로그 블럭]
파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 것을 슈퍼블럭(superblock)이라 한다. 본 발명에서는 슈퍼블럭이 담고 있는 정보를 저장하기 위해 마스터 블럭(100)과 마운트 로그 블럭(200)을 이용한다. 슈퍼블럭은 파일 시스템이 마운트될 때 처음으로 참조되는 데이터이므로 보통 물리적으로 고정된 위치에 저장된다. 한편 슈퍼블럭은 그 특성상 내용이 자주 갱신된다. 따라서 이와 같은 방식을 플래시 메모리에 적용하게 되면 해당 블럭에 대해 마모가 발생하여 수명이 단축된다.
이와 같은 문제점을 해결하기 위해 마스터 블럭(100)에는 비교적 갱신이 잘 일어나지 않는 파일 시스템 버전이나 포맷 옵션, 배드 블럭 리스트 등을 저장하고, 마스터 블럭(100)이 마운트 로그 블럭(200)을 가리키도록 하여 이 곳에 오브젝트 헤더 블럭 리스트(300)와 예비 블럭 리스트(400), 첫번째 체크포인트 블럭, 언마운트 성공 여부 등 자주 갱신되는 정보를 저장하도록 한다. 그러면 고정된 위치에 있어야 하는 마스터 블럭(100)은 갱신이 잘 일어나지 않아 마모를 줄일 수 있는 한편 마운트 로그 블럭(200)은 장치의 어떤 블럭이든 사용할 수 있기 때문에 특정 블럭만 마모가 빨리 일어나는 문제를 해결할 수 있다.
마스터 블럭(100)과 마운트 로그 블럭(200)은 갱신 중에 발생할 수 있는 전원 유실이나 비트 플립 오류(bit-flip error)에 대비하기 위해 각각 두개의 블럭에 같은 정보를 중복해서 저장해둔다.
[가비지 컬렉션]
플래시 메모리는 덮어쓰기가 불가능하고 한 번 쓰여진 페이지를 다시 쓰기 위해서는 지우기 동작이 필요하다. 그런데 지우기는 페이지 단위가 아닌 블럭 단위로 이루어진다. 따라서 덮어쓰기 대신 빈 페이지에 갱신된 데이터를 저장하고 기존의 페이지는 무효 페이지로 만드는 방식을 사용한다. 그 결과 플래시 메모리를 계속 사용하면 빈 블럭들이 사라지게 되므로 무효 페이지들을 모아 지우기 동작을 통해 다시 빈 블럭을 만들어내는 과정이 필요하다. 이것을 가비지 컬렉션이라고 한다.
도 7은 가비지 컬렉션 동작을 설명하기 위한 도면이다. 도 7(A)는 빅팀으로 선정된 블럭 내의 유효 페이지들이 프리 블럭(프리 페이지)으로 복사될 것을 나타낸 도면이고, 도 7(B)는 빅팀 블럭 내의 유효 페이지가 프리 블럭으로 복사된 후 빅팀 블럭 내의 모든 페이지가 무효 페이지로 된 것을 나타낸 도면이고, 도 7(C)는 무효 페이지로만 구성된 빅팀 블럭을 삭제하여 프리 페이지로만 구성된 프리 블럭으로 만든 것을 나타낸 도면이다.
이와 같이, 가비지 컬렉션의 동작은 크게 두 단계로 나뉠 수 있다. 첫째는 지우기 동작으로 빈 블럭이 될 빅팀 블럭을 선정하는 것이고, 둘째는 빅팀 블럭 내에 존재할 수 있는 유효 페이지들을 이전시켜서 데이터를 보존하는 것이다. 종래기술은 빅팀 블럭을 선정하기 위해 사용중인 블럭들 중 유효 페이지가 일정량보다 적은 블럭을 선정하였다. 이것은 유효 페이지들을 이전시키는데 필요한 비용(가비지 컬렉션 오버헤드)을 줄이기 위한 것이다[여기서, 비용은 빅팀 블럭이 선정되고 난 후 이 빅팀 블럭을 프리 블럭으로 만드는 데까지 드는 비용으로서 프리 블럭으로 만들기 위해서는 유효 페이지를 다른 곳에 옮겨놓고 모두 옮긴 후에는 삭제를 하게 되는데 유효 페이지의 프리 블럭으로의 복사와 빅팀 블럭의 삭제에 걸리는 시간과 전력사용량 등을 포함하는 개념임]. 이와 같은 정책은 페이지들의 읽기 및 쓰기 패턴을 반영하지 못해 한 번 이전된 페이지가 반복적으로 이전되고, 일부의 무효 페이지가 오랫동안 방치되는 블럭이 발생하는 등 지엽성(locality) 있는 접근 패턴에 대해 약점이 있다고 알려져 있다.
본 발명에서는 어떤 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수(GC 카운트)를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 취하여 GC 밸류라 한다. 이렇게 얻어진 GC 밸류는 그 값이 클수록 어떤 블럭이 자주 갱신되지 않는 데이터를 포함하고 있음을 의미하고 그 값이 작을수록 어떤 블럭이 자주 갱신되는 데이터를 포함하고 있음을 의미한다. 이 GC 밸류에 기반하여 가비지 컬렉션을 할 때 GC 밸류가 높은 블럭들을 빅팀으로 선정하거나 때에 따라서 GC 밸류가 낮은 블럭들을 빅팀으로 선정하는 정책을 취하면 점차 갱신이 자주 일어나거나 자주 일어나지 않는 페이지들끼리 한 블럭에 모이도록 할 수 있다. 그러면 각 블럭에 무효 페이지가 산재하여 가비지 컬렉션에 드는 비용이 증가하는 문제를 해결할 수 있다.
GC 밸류가 높은 블럭들을 빅팀으로 선정하는 경우는 백그라운드에서 주기적으로 수행되는 가비지 컬렉션일 경우나 파일 데이터의 갱신이 아닌 덧붙이기(append) 중에 가비지 컬렉션이 이루어지는 경우이며, GC 밸류가 낮은 블럭들을 빅팀으로 선정하는 경우는 파일 데이터의 갱신이 일어나는 중에 가비지 컬렉션이 이루어지는 경우이다. 이와 같은 정책을 취하는 이유는 덧붙이기의 경우 이렇게 쓰여진 데이터는 앞으로 갱신이 자주 일어나지 않는 데이터일 것이라고 짐작할 수 있기 때문이다.
[블럭 사용량 테이블]
빅팀 블럭을 선정할 때는 블럭들의 GC 밸류와 함께 어떤 블럭이 얼마나 많은 유효 페이지를 포함하고 있는가를 참고해야 한다. 유효 페이지가 많은 블럭을 빅팀 블럭으로 선정할 경우 유효 페이지를 이전하는 데에 많은 비용이 들기 때문이다.
본 발명은 가비지 컬렉션 등에서 유효 페이지가 적거나 많은 블럭을 빠르게 찾기 위해 블럭 사용량 테이블(도 8 참조)을 사용한다. 이 테이블의 엔트리 개수는 블럭당 페이지 개수+1개이며 각 엔트리는 같은 개수의 유효 페이지를 갖는 블럭들의 리스트를 가리킨다. 예를 들어 블럭당 페이지가 64개인 플래시 메모리의 경우 65개의 엔트리를 가지며 각 엔트리는 각각 유효 페이지가 0개부터 64개인 블럭들의 리스트를 가리킨다. 어떤 블럭의 페이지가 사용되어 유효 페이지 개수가 늘어나거나 페이지가 삭제되어 무효 페이지가 되면 블럭을 블럭 사용량 테이블에서 적당한 엔트리로 옮겨지도록 하여 테이블의 속성을 유지한다. 또한 각 엔트리의 리스트는 GC 밸류에 따라 정렬하여 가비지 컬렉션에 있어서 효과적으로 빅팀 블럭을 선정할 수 있도록 한다. 즉, 카피 오버헤드(copy overhead)를 줄이기 위해 사용량이 적은 블럭을 선정하고, GC 밸류가 가장 크거나 가장 작은 블럭을 빅팀으로 선정하기 위해 리스트의 헤드(head)나 테일(tail)에서 블럭을 취한다.
이상으로 도면을 참조하여 본 발명에 의한 플래시 파일 시스템의 바람직한 실시형태를 상세히 설명하였지만 본 발명은 상기 실시형태에 한정되는 것이 아니며, 청구범위에 기재된 본 발명의 사상과 범위로부터 벗어나지 않는 당업자에 의한 다양한 수정 및 변경이 가능하다.

Claims (7)

  1. 플래시 메모리에 저장되어 있는 메타데이터인 오브젝트 헤더만을 별도로 저장하고 있는 오브젝트 헤더 블럭에 대한 리스트를 유지하고 있는 오브젝트 헤더 블럭 리스트,
    파일 내용의 빠른 참조를 위한 인덱스 트리에 대한 정보가 플래시 메모리에 반영되기 전까지 파일 데이터를 저장하기 위해 사용된 예비 블럭들의 리스트를 유지하고 있는 예비 블럭 리스트,
    파일 시스템의 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서, 상기 오브젝트 헤더 블럭 리스트, 상기 예비 블럭 리스트, 첫번째 체크포인트 블럭, 언마운트 성공 여부의 정보 중 하나 이상을 저장하고 있는 마운트 로그 블럭, 및
    파일 시스템 종류와 메타데이터를 찾기 위한 시작점을 저장하는 슈퍼블럭이 담고 있는 정보를 저장하기 위한 것으로서, 파일 시스템 버전, 포맷 옵션, 배드 블럭 리스트 중 하나 이상을 저장하고 있으며, 상기 마운트 로그 블럭을 가리키고 있는 마스터 블럭을 포함하고,
    파일 시스템의 마운트시에 상기 오브젝트 헤더 블럭 리스트에 의해 오브젝트를 구성하고, 인덱스 트리를 플래시 메모리에 저장해두었다가 필요한 경우에 메인 메모리로 읽어들이는 레이지 로딩 방식을 사용하고,
    상기 인덱스 트리를 갱신함에 있어서, 리프 노드를 직접 갱신하는 대신 갱신되는 데이터를 루트 노드의 빈 공간에 저장하고, 상기 갱신되는 데이터가 상기 루트 노드의 빈 공간의 용량보다 큰 경우, 상기 갱신되는 데이터 및 상기 루트 노드에 저장되어 있는 기갱신된 데이터를 새로운 리프 노드에 저장하고, 상기 루트 노드에는 상기 새로운 리프 노드의 포인터를 저장하는 것을 특징으로 하는 플래시 파일 시스템.
  2. 제 1 항에 있어서,
    파일의 크기가 오브젝트 헤더가 저장되는 페이지의 빈 공간보다 작은 경우에는 상기 파일을 상기 오브젝트 헤더가 저장되는 페이지의 빈 공간에 저장하는 것을 특징으로 하는 플래시 파일 시스템.
  3. 제 1 항에 있어서,
    상기 마스터 블럭 및 상기 마운트 로그 블럭은 각각 두개의 블럭에 같은 정보를 중복해서 저장해두는 것을 특징으로 하는 플래시 파일 시스템.
  4. 제 1 항에 있어서,
    상기 오브젝트 헤더 블럭 리스트에는 오브젝트 헤더 블럭이 N(N>1)개씩 할당되는 것을 특징으로 하는 플래시 파일 시스템.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    가비지 컬렉션 수행시, 판독 빈도가 미리 정해놓은 특정 값 보다 낮거나 높은 유효 페이지를 포함하는 블럭을 빅팀으로 선정하고, 빅팀으로 선정된 블럭 내의 유효 페이지를 프리 블럭에 복사하며, 상기 빅팀으로 선정된 블럭을 삭제하는 것을 특징으로 하는 플래시 파일 시스템.
  6. 제 5 항에 있어서,
    빅팀 블럭의 선정시, 블럭 사용량 테이블을 사용하고, 상기 블럭 사용량 테이블은 블럭내의 유효 페이지의 판독 빈도에 따라 정렬되는 것을 특징으로 하는 플래시 파일 시스템.
  7. 제 6 항에 있어서,
    빅팀 블럭의 선정시, 유효 페이지가 가비지 컬렉션에 의해 이전되는 횟수를 저장하였다가 한 블럭 내에서 그 횟수가 가장 작은 것을 대표값으로 하는 GC 밸류를 취하고, 상기 블럭 사용량 테이블 내의 유효 페이지의 판독 빈도는 블럭들의 GC 밸류와 블럭 내의 유효 페이지 수를 포함하고, 가비지 컬렉션 수행시 GC 밸류가 미리 정해놓은 특정 값 보다 높은 블럭들을 빅팀으로 선정하는 것을 특징으로 하는 플래시 파일 시스템.
KR1020110049854A 2011-05-26 2011-05-26 플래시 파일 시스템 KR101356470B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110049854A KR101356470B1 (ko) 2011-05-26 2011-05-26 플래시 파일 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110049854A KR101356470B1 (ko) 2011-05-26 2011-05-26 플래시 파일 시스템

Publications (2)

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

Family

ID=47515369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110049854A KR101356470B1 (ko) 2011-05-26 2011-05-26 플래시 파일 시스템

Country Status (1)

Country Link
KR (1) KR101356470B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817192B2 (en) 2017-10-12 2020-10-27 SK Hynix Inc. Data storage apparatus selecting memory block group based on interleaving index and operating method thereof
US11526438B2 (en) 2019-11-25 2022-12-13 SK Hynix Inc. Memory system capable of increasing storage efficiency and operation method thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101381597B1 (ko) * 2013-01-31 2014-04-07 한국과학기술원 다중채널 ssd의 패턴기반 관리 시스템 및 그 방법
KR102233808B1 (ko) 2014-03-14 2021-03-30 삼성전자주식회사 저장 장치 및 그것의 테이블 관리 방법
KR101631409B1 (ko) * 2015-03-06 2016-06-24 한양대학교 산학협력단 드라이브 컨트롤러를 포함하는 저장 장치, 상기 드라이브 컨트롤러가 수행하는 가비지 컬렉션 수행 방법
US9990304B2 (en) * 2015-11-13 2018-06-05 Samsung Electronics Co., Ltd Multimode storage management system
CN108090168B (zh) * 2017-12-14 2021-01-12 厦门市美亚柏科信息股份有限公司 一种通用f2fs文件系统解析方法、终端设备及存储介质
CN113625964B (zh) * 2021-07-16 2024-01-26 浙江鸿泉电子科技有限公司 基于NandFlash的顺序存储方法、电子设备和存储介质
KR20230025043A (ko) * 2021-08-13 2023-02-21 울산과학기술원 플래시 메모리 기반 ssd의 성능과 수명 개선을 위한 데이터 이동횟수에 따른 수명별 데이터 분류방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234188A (ja) 2003-01-29 2004-08-19 Canon Inc データファイル管理方法
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234188A (ja) 2003-01-29 2004-08-19 Canon Inc データファイル管理方法
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817192B2 (en) 2017-10-12 2020-10-27 SK Hynix Inc. Data storage apparatus selecting memory block group based on interleaving index and operating method thereof
US11526438B2 (en) 2019-11-25 2022-12-13 SK Hynix Inc. Memory system capable of increasing storage efficiency and operation method thereof

Also Published As

Publication number Publication date
KR20120131579A (ko) 2012-12-05

Similar Documents

Publication Publication Date Title
KR101356470B1 (ko) 플래시 파일 시스템
CN110678836B (zh) 用于键值存储的持久性存储器
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
KR102002830B1 (ko) 세그먼트 클리닝 장치 및 방법
KR100484147B1 (ko) 플래시 메모리 관리 방법
US11023318B1 (en) System and method for fast random access erasure encoded storage
Wu et al. An efficient B-tree layer implementation for flash-memory storage systems
US9519575B2 (en) Conditional iteration for a non-volatile device
US9368130B2 (en) Data storage system, method of writing to storage in the data storage system, hard disk and method of forming the hard disk
EP2633413B1 (en) Low ram space, high-throughput persistent key-value store using secondary memory
CN101743546B (zh) 用于提供快照的文件系统的分层存储管理
CN102364474B (zh) 用于机群文件系统的元数据存储系统和管理方法
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
CN107180092B (zh) 一种文件系统的控制方法、装置及终端
CN102779096B (zh) 一种基于页块面三维的闪存地址映射方法
US9336095B2 (en) Computing system and related data management method thereof
CN102696010A (zh) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
EP2834943A1 (en) Cryptographic hash database
US20100332717A1 (en) Access device, information recording device, controller, and information recording system
CN101488153A (zh) 嵌入式Linux下大容量闪存文件系统的实现方法
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
Lee et al. An efficient index buffer management scheme for implementing a B-tree on NAND flash memory
US10606746B2 (en) Access request processing method and apparatus, and computer system
CN115427941A (zh) 数据管理系统和控制的方法
Fang et al. An Adaptive Endurance-Aware ${B^+} $-Tree for Flash Memory Storage Systems

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