KR20150104434A - 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 - Google Patents

플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 Download PDF

Info

Publication number
KR20150104434A
KR20150104434A KR1020140026166A KR20140026166A KR20150104434A KR 20150104434 A KR20150104434 A KR 20150104434A KR 1020140026166 A KR1020140026166 A KR 1020140026166A KR 20140026166 A KR20140026166 A KR 20140026166A KR 20150104434 A KR20150104434 A KR 20150104434A
Authority
KR
South Korea
Prior art keywords
checkpoint
record
segment
information
block
Prior art date
Application number
KR1020140026166A
Other languages
English (en)
Other versions
KR102033323B1 (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 KR1020140026166A priority Critical patent/KR102033323B1/ko
Priority to US14/609,058 priority patent/US9563375B2/en
Publication of KR20150104434A publication Critical patent/KR20150104434A/ko
Application granted granted Critical
Publication of KR102033323B1 publication Critical patent/KR102033323B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 로그 구조 파일시스템(LFS; Log-structured File System)의 데이터 저장 방법에 관한 것으로, 세그먼트 요약 정보(SS)와 세그먼트 사용 정보(SU)를 별도로 저장하지 않고 체크포인트를 기록시 체크포인트 레코드에 포함시켜 기록함으로써 플래시 페이지에 기록해야 하는 메타데이터의 개수를 줄여 플래시 메모리에 대한 쓰기 성능을 높일 수 있는 방법에 관한 것이다.

Description

플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법{Method for storing metadata of log-structured file system for flash memory}
본 발명은 로그 구조 파일시스템(LFS; Log-structured File System)의 데이터 저장 방법에 관한 것으로, 보다 상세하게는 플래시 페이지에 기록해야 하는 메타데이터의 개수를 줄여 플래시 메모리에 대한 쓰기 성능을 높일 수 있는 방법에 관한 것이다.
플래시 메모리는 가격이 저렴하고 소비전력이 적으며 크기가 작기 때문에 다양한 임베디드 시스템에서 저장장치로 널리 사용되고 있다.
특히, 널리 사용되는 플래시 메모리의 종류 중 하나인 NAND 플래시 메모리는 여러 개의 삭제 단위 블록(erase block)으로 구성되며, 각 삭제 단위 블록은 여러 개의 페이지(page)로 구성된다. 또한, 최근 그 사용이 증가하는 라지 블록(Large Block) NAND 플래시 메모리의 경우, 페이지 하나의 크기는 2KB이며 64개의 페이지가 모여 1개의 삭제 단위 블록을 구성한다.
플래시 메모리에는 읽기(Read), 쓰기(Write), 삭제(Erase) 3가지 동작 수행이 가능하다. 읽기/쓰기는 페이지 단위로 이루어지는데 쓰기를 프로그램(program)이라고 한다. 한번 프로그램 된 페이지를 다시 프로그램하기 위해서는 먼저 그 페이지가 속한 삭제 단위 블록 전체를 삭제(erase)해야 하는데, 삭제 동작은 읽기/쓰기에 비해 매우 많은 시간이 걸린다. 또한 각 삭제 단위 블록은 삭제 가능한 횟수에 제한이 있어 삭제 횟수가 한계에 도달하면 해당 삭제 단위 블록은 사용할 수 없게 된다. 더 이상 쓸 수 없게 된 삭제 단위 블록은 배드 블록(bad block)에 해당한다. 따라서 각 삭제 단위 블록들이 골고루 이용되도록 하는 웨어 레벨링(wear-leveling)이 이루어져야 플래시 메모리의 충분한 수명을 확보할 수 있다.
이처럼, 플래시 메모리는 한번 데이터가 기록된 영역에 다시 기록하려면 처리 시간이 오래 소모되는 문제와 플래시 메모리의 블록은 사용될수록 점점 마모되어 한계에 다다르면 쓸 수 없게 되는 문제점이 존재한다. 따라서, 플래시 메모리의 상위의 계층에 해당하는 파일 시스템에서 특정 동작을 수행하여 데이터를 처리함으로써 위와 같은 문제점을 해결하는 방식이 제시되었다.
플래시 메모리에 사용되는 대표적인 파일 시스템으로는 로그 구조 파일시스템(Log-structured File System)이 있다. 로그 구조 파일시스템은 저장 공간을 하나의 로그로 보고 파일시스템의 메타데이터와 데이터를 모두 로그에 순차적으로 기록하는 방식으로 데이터를 저장한다.
이러한 로그 구조 파일시스템으로는 로그 구조 파일시스템(LFS)을 Sprite 운영체제에서 구현한 Sprite LFS, Sprite LFS의 구조를 FTL(Flash Translation Layer) 기반 플래시 저장장치에 사용하기 적합하도록 개량한 F2FS(Flash-Friendly File System), 스냅샵(snapshot) 기능을 제공하는 NILFS2(New Implementation of a Log-structured File System) 등이 있다.
한국공개특허 10-2012-0072228
본 발명의 실시 예는 파일시스템을 일관성 있는 상태로 만들기 위해 필요한 쓰기 횟수를 줄여줌으로써 파일시스템의 쓰기 성능을 높일 수 있는 방법을 제공하고자 한다.
본 발명의 일 실시 예에 따른 파일시스템의 메타데이터 저장 방법은 기록해야 할 정보가 저장될 블록을 할당하는 단계, 할당된 블록에 대한 세그먼트 요약 정보(SS) 레코드를 생성하여 임시 리스트에 기록하는 단계, 상기 세그먼트 요약 정보 레코드가 생성된 블록들이 위치하는 세그먼트에 대한 세그먼트 사용 정보(SU) 레코드를 생성하여 상기 임시 리스트에 기록하는 단계, 상기 임시 리스트에 기록된 상기 세그먼트 요약 정보 레코드와 상기 세그먼트 사용 정보 레코드 중 적어도 어느 하나를 체크포인트 레코드에 포함시키는 단계 및 상기 체크포인트 레코드를 할당된 위치에 기록하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 파일시스템의 메타데이터 저장 방법은 기록해야 할 정보가 저장될 블록을 할당하는 단계, 할당된 블록에 대한 세그먼트 요약 정보(SS) 레코드 및 상기 세그먼트 요약 정보 레코드가 생성된 블록들이 위치하는 세그먼트에 대한 세그먼트 사용 정보(SU) 레코드를 생성하는 단계 및 상기 세그먼트 요약 정보 레코드와 상기 세그먼트 사용 정보 레코드를 중 적어도 어느 하나를 체크포인트 레코드에 포함시켜 기 할당된 위치에 기록하는 단계를 포함할 수 있다.
본 발명의 실시 예는 파일시스템을 일관성 있는 상태로 만들기 위해 필요한 쓰기 횟수를 줄여줌으로써 파일시스템의 쓰기 성능을 높일 수 있다.
도 1은 본 발명의 일 실시 예에 따른 저장 공간의 구조를 나타내는 도면.
도 2a는 본 발명의 일 실시 예에 따른 블록별 세그먼트 요약 정보(SS) 엔트리의 구조를 나타내는 도면.
도 2b는 도 1a의 SS 엔트리들이 테이블 형태로 구성된 모습을 보여주는 도면.
도 3a는 본 발명의 일 실시 예에 따른 세그먼트 사용 정보(SU) 엔트리의 구조를 나타내는 도면.
도 3b는 도 3a의 SU 엔트리들이 테이블 형태로 구성된 모습을 보여주는 도면.
도 4a는 본 발명의 일 실시 예에 따른 체크포인트 레코드의 구조를 나타내는 도면.
도 4b와 도 4c는 각각 체크포인트 레코드의 SS/SU 레코드 리스트에 포함되는 SS 레코드 및 SU 레코드의 구조를 나타내는 도면.
도 5는 파일시스템이 체크포인트 레코드를 기록하는 과정을 설명하기 위한 순서도.
도 6 및 도 7은 복수의 체크포인트 세그먼트들을 이용하여 체크포인트 레코드를 기록하는 방법을 설명하기 위한 도면들.
도 8은 구 버전의 체크포인트 레코드를 지울 때 지워질 체크포인트 레코드에 포함된 SS 레코드와 SU 레코드들을 세그먼트 요약 정보와 세그먼트 사용 정보에 반영하는 과정을 설명하기 위한 순서도.
도 9는 본 발명의 일 실시 예로서 NILFS2 파일시스템에서 메타데이터 파일의 구조를 나타내는 도면.
도 10은 본 발명의 일 실시 예로서 NILFS2 파일시스템에서 저장 공간의 구조를 나타내는 도면.
도 11은 본 발명의 일 실시 예에 따른 메타데이터 동기화 과정을 나타내는 도면.
도 12는 본 발명의 다른 실시 예로서 F2FS 파일시스템에서 저장 공간의 구조를 나타내는 도면.
도 13은 본 발명의 다른 실시 예에 따른 메타데이터 동기화 과정을 나타내는 도면.
이하, 첨부된 도면들을 참조하여 본 발명의 바람직한 실시 예를 보다 상세하게 설명한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서, 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
도 1은 본 발명의 일 실시 예에 따른 저장 공간의 구조를 나타내는 도면이다.
본 발명의 일 실시 예에 따른 파일시스템은 데이터와 데이터에 대응되는 메타데이터를 저장 공간에 저장한다. 이때, 메타데이터는 아이노드 정보와 체크포인트 정보를 포함하며, 가비지 콜렉션(garbage collection)을 위한 세그먼트 요약 정보(SS; Segment Summary)와 세그먼트 사용 정보(SU; Segment Usage)를 포함한다.
저장 공간은 세그먼트 단위로 구분되며 각 세그먼트는 블록 단위로 나뉜다. 이때, 세그먼트/블록의 크기는 플래시 메모리의 제거 블록/페이지(Erase block/page) 크기에 맞추는 것이 바람직하다. 예컨대, 페이지 크기는 2KB이고 제거 블록(erase block) 크기는 128KB인 라지 블록(Large Block) NAND 플래시 메모리의 경우, 블록 크기는 2KB로 할 수 있으며 세그먼트 크기는 128KB로 할 수 있다.
메타데이터 중 아이노드 정보는 파일을 나타내는 아이노드에 접근하기 위한 정보들로, 종래의 파일시스템에서 사용된 아이노드 정보들 중 어떤 것을 사용하여도 무방하다. 예컨대, 본 실시 예에서의 아이노드 정보는 Sprite LFS의 inode map, F2FS의 NAT 또는 NILFS2의 IFILE 중 어떤 것을 사용해도 상관없다.
도 2a는 본 발명의 일 실시 예에 따른 블록별 세그먼트 요약 정보(SS) 엔트리의 구조를 나타내는 도면이며, 도 2b는 도 2a의 SS 엔트리들이 테이블(SS 테이블) 형태로 구성된 모습을 보여주는 도면이다.
세그먼트 요약 정보(SS)는 세그먼트 내 각 블록마다 하나씩 존재하는 블록별 SS 엔트리를 포함한다. 각 블록별 SS 엔트리는 아이노드 번호 및 파일 블록 번호를 포함한다. 이때, 파일 블록 번호는 해당 블록이 파일의 어느 부분을 구성하는지 예컨대 파일 내에서 몇 번째 블록인지를 나타내는 정보이다. 즉 파일 블록 번호는 세그먼트를 구성하는 각 블록의 번호를 의미하는 것이 아니다. 세그먼트 요약 정보(SS)는 이러한 블록별 SS 엔트리들이 모여서 도 2b에서와 같이 테이블을 이룬 것이다. 이때, 테이블에서 순서를 나타내는 인덱스가 블록 번호에 해당한다. 따라서, 본 실시 예에서의 SS 엔트리는 블록 번호를 별도로 포함하지 않는다.
도 3a는 본 발명의 일 실시 예에 따른 세그먼트 사용 정보(SU) 엔트리의 구조를 나타내는 도면이며, 도 3b는 도 3a의 SU 엔트리들이 테이블(SU 테이블) 형태로 구성된 모습을 보여주는 도면이다.
세그먼트 사용 정보(SU)는 각 세그먼트마다 하나씩 존재하는 SU 엔트리를 포함한다. SU 엔트리는 세그먼트 내 유효 블록 수 및 세그먼트에 마지막으로 기록한 시간에 대한 정보를 포함한다. 이때, 세그먼트 내 유효 블록 수는 말 그대로 세그먼트 내에서 유효한 블록의 수를 나타낸다. 예컨대, 어떤 파일이 변경되어 예전 블록이 유효하지 않게 되었다면, 해당 블록이 포함된 세그먼트의 이 필드(세그먼트 내 유효 블록 수) 값이 감소하게 된다. 세그먼트 사용 정보는 이러한 SU 엔트리들이 모여서 도 3b에서와 같이 테이블을 이룬 것이다. 이때, 테이블에서 순서를 나타내는 인덱스가 세그먼트 번호에 해당한다. 따라서, 본 실시 예에서의 SU 엔트리는 세그먼트 번호를 별도로 포함하지 않는다.
도 4a는 본 발명의 일 실시 예에 따른 체크포인트 레코드의 구조를 나타내는 도면이며, 도 4b와 도 4c는 각각 체크포인트 레코드의 SS/SU 레코드 리스트에 포함되는 SS 레코드 및 SU 레코드의 구조를 나타내는 도면이다.
체크포인트의 기록 단위는 체크포인트 레코드이며, 체크포인트 레코드 하나는 이를 저장하기 위한 저장 공간으로 블록 하나를 차지한다. 각 체크포인트 레코드는 체크포인트 정보 및 SS/SU 레코드 리스트를 포함한다.
체크포인트 정보는 어느 레코드가 최신의 것인지 구별할 수 있도록 체크포인트 기록 시간 또는 버전(version) 정보(예컨대, 버전 넘버)를 포함한다. 버전 넘버는 매 기록시마다 하나씩 증가하는 카운터이다.
SS/SU 레코드 리스트는 SS 레코드와 SU 레코드들이 리스트에 도착한 순서대로 하나씩 저장되어 리스트화된 정보이다. 이때, SS 레코드는 도 4b와 같이 레코드 타입, 블록 번호, 아이노드 번호 및 파일 블록 번호를 포함하며, SU 레코드는 도 4c와 같이 레코드 타입, 세그먼트 번호, 세그먼트 내 유효 블록 수 및 세그먼트 기록 시간을 포함한다. 즉, SS 레코드는 도 2a의 SS 엔트리에 레코드 타입과 블록 번호를 추가한 구조를 가지며, SU 레코드는 도 3a의 SU 엔트리에 레코드 타입과 세그먼트 번호를 추가한 구조를 갖는다. 레코드 타입은 SS 레코드와 SU 레코드를 구분하기 위한 정보이다. 따라서, SS/SU 레코드 리스트 필드에 SS 레코드와 SU 레코드가 모두 포함되는 경우에는 레코드 타입에 대한 정보가 필요하나, SS 레코드 또는 SU 레코드 중 어느 하나만 포함된다면 레코드 타입에 대한 정보는 필요하지 않다.
도 5는 파일시스템이 체크포인트 레코드를 기록하는 과정을 설명하기 위한 순서도이다.
사용자 응용 프로그램 등의 입출력(I/O) 요청에 따라 기록해야 할 데이터가 발생하면 운영체제 내부의 별도의 프로세스는 파일시스템에 해당 데이터를 저장장치에 기록해달라고 요청한다(단계 402).
파일시스템은 프로세스의 요청에 따라 해당 데이터를 저장할 저장 위치를 결정한다(단계 404). 즉, 파일시스템은 블록 번호를 할당한다.
블록 번호가 할당되면, 파일시스템은 도 4b와 같은 SS 레코드를 생성(단계 406)한 후 이를 임시 SS/SU 레코드 리스트의 끝에 추가한다(단계 408).
다음에, 파일시스템은 SS 레코드가 생성된 블록들이 위치한 세그먼트를 파악하여 도 4c와 같은 SU 레코드를 생성(단계 410)한 후 생성된 SU 레코드를 임시 SS/SU 레코드 리스트의 끝에 추가한다(단계 412).
SS 레코드와 SU 레코드를 생성한 블록들은 저장장치에 기록된다.
다음에 사용자 응용 프로그램이 sync() 시스템 콜을 호출하는 등 체크포인트를 기록해야 하는 상황이 발생하면(단계 414), 파일시스템은 임시 SS/SU 레코드 리스트의 크기와 체크포인트 레코드 안에서 SS/SU 레코드 리스트로 사용 가능한 공간(블록 크기에서 체크포인트 정보를 제외한 나머지 공간)의 크기를 확인하여 임시 SS/SU 레코드 리스트에 있는 레코드들을 모두 체크포인트 레코드에 기록할 수 있는지 여부를 확인한다(단계 416).
단계 416에서, SS/SU 레코드 리스트로 사용 가능한 공간이 임시 SS/SU 레코드 리스트의 크기보다 크면, 파일시스템은 임시 SS/SU 레코드 리스트에 있는 레코드들을 모두 체크포인트 레코드에 포함시킨다(단계 418).
그러나 단계 416에서, SS/SU 레코드 리스트로 사용 가능한 공간이 임시 SS/SU 레코드 리스트의 크기보다 크지 않으면, 파일시스템은 기록할 수 없는 양 즉 체크포인트 레코드에 포함시킬 수 없는 양만큼 임시 SS/SU 레코드 리스트의 앞 부분에서 떼어내어 세그먼트 요약 정보(SS) 및 세그먼트 사용 정보(SU)에 직접 반영하고 나머지 부분을 체크포인트 레코드에 포함시킨다(단계 420).
다음에, 파일시스템은 체크포인트 레코드의 체크포인트 정보 필드에 버전 넘버 또는 현재 시간(기록 시간)을 기입한다(단계 422).
다음에, 파일시스템은 체크포인트 레코드를 할당된 위치에 기록(단계 424)한 후 임시 SS/SU 레코드 리스트를 초기화한다(단계 426).
도 6 및 도 7은 복수의 체크포인트 세그먼트들을 이용하여 체크포인트 레코드를 기록하는 방법을 설명하기 위한 도면들이다.
파일시스템은 체크포인트 저장 공간으로 최소 2개 이상의 세그먼트들을 사용할 수 있다. 즉, 체크포인트는 파일시스템 마운트를 위해 매우 중요한 정보이기 때문에, 파일시스템은 2개 이상의 NAND 플래시 메모리 제거 블록(erase block)에 체크포인트 정보가 기록되도록 하여 하나의 제거 블록에 문제가 생기더라도 다른 제거 블록에 기록된 체크포인트를 사용할 수 있도록 할 수 있다.
체크포인트 레코드를 저장하기 위해 사용되는 세그먼트는 체크포인트 세그먼트라고 부른다. 체크포인트 기록 단위인 체크포인트 레코드는 블록 하나를 차지한다. 파일시스템은 체크포인트 기록이 필요할 때 마다 선택된 체크포인트 세그먼트의 첫 번째 블록부터 차례대로 체크포인트 레코드가 기록된다. 이때, 각 체크포인트 레코드에는 어느 것이 최신의 레코드인지 구별할 수 있도록 버전 넘버(매 기록 시마다 하나씩 증가하는 카운터) 또는 체크포인트 기록 시간이 반드시 포함된다.
그런데, 체크포인트 세그먼트를 위해 예약된 공간은 한계가 있으므로 사용하다 보면 사용 가능 공간이 고갈될 수 있다. 따라서, 파일시스템은 구 버전의 체크포인트 레코드를 삭제하면서 사용해야 한다. 그러나 구 버전의 레코드를 그냥 삭제하면 SS 레코드와 SU 레코드에 대한 변경 내용들이 소실되므로, 파일시스템은 삭제하기 전에 해당 체크포인트 레코드에 포함된 SS 레코드와 SU 레코드들의 내용을 각각 도 2b의 세그먼트 요약 정보(SS)와 도 3b의 세그먼트 사용 정보(SU)에 반영한다.
파일시스템이 구 버전의 레코드를 삭제(제거)하는 방법으로는 다음과 같은 2가지 방법이 사용될 수 있다.
도 6은 본 발명의 일 실시 예에 따른 구 버전의 체크포인트 레코드를 삭제하는 방법을 설명하기 위한 도면이다.
파일시스템은 사용하던 체크포인트 세그먼트 내 블록이 바닥나면 다른 세그먼트에 기록하기 시작한다. 이때, 파일시스템은 새로 기록을 시작한 체크포인트용 세그먼트의 블록이 바닥나기 전에 이전에 사용했던 세그먼트들을 모두 비운다.
예컨대, 도 6에서와 같이, 체크포인트 레코드를 저장하기 위해 2개의 세그먼트들이 사용되고 각 세그먼트는 4개의 블록으로 구성된 경우, 파일시스템은 첫 번째 세그먼트(Segment 1)의 블록이 모두 바닥나면 두 번째 세그먼트(Segment 2)에 기록을 시작한다. 이때, 도 6에서 박스(블록) 안의 숫자는 버전 넘버를 의미한다.
파일시스템은 두 번째 세그먼트의 블록이 모두 사용되기 전에 첫 번째 세그먼트를 모두 비운 후 두 번째 세그먼트가 모두 차면 다시 첫 번째 세그먼트에 기록을 시작한다.
마찬가지로, 파일시스템은 첫 번째 세그먼트의 블록이 모두 사용되기 전에 다시 두 번째 세그먼트를 모두 삭제한다.
도 7은 본 발명의 다른 실시 예에 따른 구 버전의 체크포인트 레코드를 삭제하는 방법을 설명하기 위한 도면이다.
도 7의 실시 예에서는 도 6의 실시 예에서와 같이 이전에 사용했던 세그먼트의 레코드들을 모두 미리 삭제하는 것이 아니라 오래된 레코드부터 차례대로 덮어쓰기를 하는 방법이다. 즉, 파일시스템은 두 번째 세그먼트도 모두 차게 되면, 첫 번째 세그먼트에서 제일 오래된 레코드부터 덮어쓰기를 시작한다. 본 실시 예는 덮어쓰기를 하기 때문에 파일시스템 하위에 FTL이 있는 경우에만 사용이 가능한 방법이다.
도 8은 도 6 또는 도 7에서와 같이 구 버전의 체크포인트 레코드를 삭제할 때 삭제될 체크포인트 레코드에 포함된 SS 레코드와 SU 레코드를 세그먼트 요약 정보(SS)와 세그먼트 사용 정보(SU)에 반영하는 과정을 설명하기 위한 순서도이다.
삭제 대상 체크포인트 레코드들에 대해 기록된 순서대로 예컨대 레코드 안의 버전 넘버나 기록 시간을 기준으로 먼저 기록된 것부터 차례대로 다음 단계들을 진행한다.
먼저, 파일시스템은 각 체크포인트 레코드를 준비한다(단계 802).
이를 위해, 파일시스템은 상술한 체크포인트 레코드 기록 과정에서 기록 후에 체크포인트 레코드를 메모리상에 따로 두었다면 그것을 가져오고 그렇지 않았다면 해당 체크포인트 레코드를 저장장치에서 읽어 들인다.
다음에, 파일시스템은 각 체크포인트 레코드의 SS/SU 레코드 리스트 필드에 있는 SS 레코드와 SU 레코드를 동기화 리스트의 끝에 추가한다(단계 804).
다음에, 파일시스템은 동기화 리스트의 앞부분에서 부터 차례대로 SS 레코드 또는 SU 레코드에 포함된 레코드 타입과 블록 번호 또는 세그먼트 번호를 확인한다(단계 806).
즉, 파일시스템은 해당 레코드가 SS 레코드인 경우에는 레코드 타입과 블록 번호를 확인하고, SU 레코드인 경우에는 레코드 타입과 세그먼트 번호를 확인한다. 이를 통해, 파일시스템은 해당 SS 레코드 또는 SU 레코드가 도 2b 또는 도 3b의 테이블 상에서 몇 번째 엔트리에 대한 것인지 알 수 있다.
다음에, 파일시스템은 기록할 레코드의 엔트리 정보를 SS 테이블 또는 SU 테이블에서 해당 블록 번호 또는 세그먼트 번호에 대응되는 엔트리에 덮어쓴다(단계 808).
예컨대, 해당 레코드가 SS 레코드인 경우, 파일시스템은 SS 레코드의 아이노드 번호와 파일 블록 번호를 도 2b의 SS 테이블에서 해당 블록 번호(단계 806에서 확인된 블록 번호)에 대응되는 아이노드 번호와 파일 블록 번호에 덮어쓴다.
<실시 예 1>
상술한 본 발명의 실시 예를 아이노드 정보, 체크포인트 정보, 세그먼트 요약 정보, 세그먼트 사용 정보를 가지는 로그 구조 파일시스템(LFS)에 적용할 경우 어떻게 동작할지를 간단한 시나리오에 기반하여 설명하면 다음과 같다.
이때, 대상 환경과 가상의 LFS의 구조는 다음과 같다.
- 저장장치: NAND 플래시 메모리(FTL이 없는)
- 파일 인덱스: 아이노드 포인터 구조
- 아이노드 정보: 아이노드 테이블/비트맵
- 전체 메타데이터 구성: NILFS2와 같이 파일에 메타데이터를 포함시키며, 메타데이터 파일은 도 9와 같이 IFILE, SUFILE 2개로 나누어 사용됨
저장 공간은 도 10와 같이 구분되며, 상자 안의 번호는 세그먼트 번호를 의미한다.
이때, 슈퍼블록은 체크포인트 영역에 대한 정보, SUFILE 아이노드 영역에 대한 정보, 로그 영역에 대한 정보(로그 영역이 시작되는 위치)를 저장하는 영역으로, 파일시스템 포맷 시에 기록되며 일반적인 파일시스템 사용 중에는 사용되지 않는 그렇지만 중요한 정보들을 담는 영역이다. 이러한 슈퍼블록은 1개 세그먼트가 할당된다.
체크포인트 영역은 본 발명에서 체크포인트 세그먼트로 사용되는 영역이다. 메타데이터가 파일로 기록되기 때문에 체크포인트 레코드의 체크포인트 정보에는 IFILE에 대한 아이노드를 포함한다. 체크포인트 영역은 2개의 세그먼트가 할당된다.
SUFILE 체크포인트 영역은 SUFILE에 대한 체크포인트가 기록되는 영역이다. 본 실시 예에서는 세그먼트 사용 정보를 IFILE에서 분리해 별도의 파일로 만들기 때문에 SUFILE도 체크포인트가 필요한 것이다. SUFILE의 아이노드 자체에 버전 넘버 또는 기록 시간을 포함하면 그게 바로 SUFILE 체크포인트 레코드가 된다. 이 영역의 운용도 체크포인트 저장 공간 운용 방식에 따라 운용하면 된다. SUFILE 체크포인트 영역은 2개 세그먼트가 할당된다.
로그는 메타데이터 파일 및 일반 파일을 구성하는 블록들이 쓰여지는 공간으로, 앞의 3개의 영역(슈퍼블록, 체크포인트 영역, SUFILE 체크포인트 영역)에 쓰이는 것들을 제외한 나머지 공간을 포함한다.
아래의 설명에서는, 설명의 편의를 위해 체크포인트 레코드에 세그먼트 사용 정보(SU) 만을 포함시키는 경우에 대해 설명하며, 세그먼트는 4개의 블록들로 구성되었다고 가정한다. 또한, 파일시스템 포맷이 완료되어 도 10과 같이 저장 공간이 배분되고, 메타데이터 파일이 이미 로그에 다 기록된 후 정상적으로 일반 파일들이 기록된 상황을 가정한다. 이러한 상황에서 이미 존재하는 파일들의 내용이 일부 변경되는 경우에 대해 설명한다.
단계 1.
파일 A에 대한 변경 내역을 저장장치에 쓰도록 요청이 수신되면, 이로 인해 도 11a에서와 같이 4개의 데이터 블록과 1개 인덱스 블록을 써야 하는 상황이 발생하게 된다. 도 11a에서, A'가 기록된 블록들 중 점으로 표시된 블록이 데이터 블록을 나타내며, 일 방향의 빗금으로 표시된 블록이 인덱스 블록을 나타낸다.
이에 따라, 세그먼트 요약 정보(SS)에 대한 변경 사항 4개와 아이노드 A에 대한 변경 사항이 발생하지만, 파일시스템은 이를 일단 메모리 상에만 표시해 둔다.
단계 2.
다음에 파일 B에 대한 변경 내역을 저장장치에 쓰도록 요청이 수신되면, 이로 인해 도 11b에서와 같이 2개의 데이터 블록과 1개 인덱스 블록을 써야 하는 상황이 발생하게 된다. 도 11b에서, B'가 기록된 블록들 중 점으로 표시된 블록이 데이터 블록을 나타내며, 일 방향의 빗금으로 표시된 블록이 인덱스 블록을 나타낸다.
이에 따라 세그먼트 요약 정보(SS)에 대한 변경 사항 2개와 아이노드 B에 대한 변경 사항이 발생하지만, 파일시스템은 마찬가지로 이를 일단 메모리 상에만 표시해 둔다.
단계 3.
파일시스템의 일관성(consistency)을 유지하기 위한 전체 동기화 요청이 수신되면, 도 11c에서와 같이 파일시스템은 앞서 발생한 파일 A와 B에 대한 아이노드 변경 내역 2건을 IFILE의 아이노드 테이블에 반영하기 위해 IFILE의 블록 2개를 사용한다. 또한 앞서 발생한 세그먼트 요약 정보(SS)에 대한 변경 내역 8건을 IFILE의 세그먼트 요약 정보(SS) 부분에 반영하기 위해 IFILE의 블록 1개를 사용한다.
도 11c의 Segment X+2에서, 첫 번째와 두 번째 블록 부분은 아이노드 테이블 변경 부분을 의미하며, 세 번째 블록 부분은 세그먼트 사용 정보 변경 부분을 의미한다.
임시 SU 레코드 리스트의 SU 레코드 2건은 체크포인트 레코드 안에 삽입되어 체크포인트 기록 시에 저장된다. 이를 위해 체크포인트 영역에는 도 11d에서와 같이 변경사항이 생긴다.
도 11d에서, 숫자 5는 버전 넘버를 의미하는 것으로, 해당 블록에 5번 버전 체크포인트 레코드가 기록된다.
상술한 실시 예에서, 단계 1 ~ 3을 수행하면서 메타데이터 동기화를 위해 총 4개의 블록이 사용되었다. 만약, 세그먼트 사용 정보(SU) 변경에 대해 본 발명을 적용하지 않았다면 SUFILE에 반영하느라 블록 1개가 소모되고, SUFILE 아이노드를 저장하기 위해 세그먼트 3, 4번에서 1개 블록을 또 사용하여야 하므로 2개 블록을 더 기록하게 되었을 것이다. 특정 응용 프로그램들은 이런 동기화 요청을 자주하는데 그럴수록 본 발명을 적용한 경우와 그렇지 않은 경우는 쓰기 성능에서 큰 차이를 보이게 될 것이다.
<실시 예 2>
상술한 실시 예 1에서는 FTL이 없는 NAND 플래시 메모리를 사용하는 상황을 대상으로 본 발명을 적용할 경우 어떻게 되는지를 보였다. 본 실시 예(실시 예 2)에서는 FTL이 있는 경우를 상정한 또 다른 가상의 LFS에 적용한 예를 보여준다.
FTL이 있을 경우에는 덮어쓰기가 가능하기 때문에, 메타데이터 구성 및 기록 방식은 실시 예 1에서와 같이 FTL이 없는 경우를 대상으로 만들어진 경우와 차이가 난다. 그런 경우에도 본 발명을 적용하여 개선 효과를 낼 수 있다는 것을 보여주는 것이 본 실시 예의 목적이다.
본 실시 예에서의 대상 환경과 가상의 LFS의 구조는 다음과 같다.
- 저장장치: eMMC 혹은 SD 카드(FTL을 탑재한 NAND 플래시 메모리 기반 저장장치)
- 파일 인덱스: 아이노드 포인터 구조
- 아이노드 정보: 아이노드 맵(Sprite LFS에서 사용하는 방식)
- 전체 메타데이터 구성: FTL로 인해 덮어쓰기가 가능하므로 메타데이터를 파일로 다루지 않음, 대신 각 메타데이터 항목마다 저장 위치를 지정해주고 변경 사항은 그곳에 덮어씀
저장 공간은 도 12에서와 같이 구분되며, 상자 안의 번호는 세그먼트 번호를 의미한다.
이때, 슈퍼블록은 각 메타데이터 항목들(체크포인트, IMAP, SU, SS)이 저장된 위치 등의 중요한 정보가 포함되는 영역이다. 이러한 슈퍼블록은 1개의 세그먼트가 할당된다.
체크포인트 영역은 본 발명에서 체크포인트 세그먼트로 사용되는 영역이다. 본 발명에 따른 체크포인트 저장 공간 운용 방법을 사용하기 위해서는 최소 2개의 세그먼트가 필요하기 때문에 본 실시 예에서는 2개의 세그먼트를 할당한다.
IMAP 영역은 아이노드 맵을 저장하는 영역으로, 각 아이노드의 위치가 테이블 형태로 기록된다.
SU 영역은 세그먼트 사용 정보가 저장되는 영역이다. 세그먼트 마다 테이블 엔트리가 하나씩 존재하기 때문에, 세그먼트 사용 정보를 저장하는데 필요한 크기는 전체 저장 공간의 크기에 비례하여 달라지지만 본 실시 예에서는 편의상 1개의 세그먼트만 필요하다고 가정한다.
SS 영역은 세그먼트 요약 정보가 저장되는 영역이다. SU 영역과 마찬가지로 필요한 크기는 전체 저장 공간의 크기에 비례하여 달라지지만 편의상 2개 세그먼트만 필요하다고 가정한다.
로그 영역은 메타데이터가 아닌 일반 데이터들이 기록되는 공간으로, 메타데이터용으로 사용하고 남는 나머지 공간을 사용한다.
아래의 설명에서도 실시 예 1에서와 같이, 설명의 편의를 위해 체크포인트 레코드에 세그먼트 사용 정보(SU) 만을 포함시키는 경우에 대해 설명하며, 세그먼트는 4개의 블록들로 구성되었다고 가정한다.
단계 1.
파일 A에 대한 변경 내역을 저장장치에 쓰도록 요청이 수신되면, 이로 인해 도 13a에서와 같이 4개의 데이터 블록과 1개 인덱스 블록을 써야 하는 상황이 발생하게 된다. 도 13a에서, A'가 기록된 블록들 중 점으로 표시된 블록이 데이터 블록을 나타내며, 일 방향의 빗금으로 표시된 블록이 인덱스 블록을 나타낸다.
이에 따라, 세그먼트 요약 정보(SS)에 대한 변경 사항 4개와 아이노드 A에 대한 변경 사항이 발생하지만, 파일시스템은 이를 일단 메모리 상에만 표시해 둔다.
단계 2.
다음에 파일 B에 대한 변경 내역을 저장장치에 쓰도록 요청이 수신되면, 이로 인해 도 13b에서와 같이 2개의 데이터 블록과 1개 인덱스 블록을 써야 하는 상황이 발생하게 된다. 도 13b에서, B'가 기록된 블록들 중 점으로 표시된 블록이 데이터 블록을 나타내며, 일 방향의 빗금으로 표시된 블록이 인덱스 블록을 나타낸다.
이에 따라 세그먼트 요약 정보(SS)에 대한 변경 사항 2개와 아이노드 B에 대한 변경 사항이 발생하지만, 파일시스템은 마찬가지로 이를 일단 메모리 상에만 표시해 둔다.
단계 3.
파일시스템의 일관성(consistency)을 유지하기 위한 전체 동기화 요청이 수신되면, 파일시스템은 앞의 단계 1, 2에서 변경된 2개 파일(A, B)의 새 아이노드들을 각각 블록 하나를 할당하여 로그에 기록해야 한다. 이로 인해 로그가 변경된 모습은 도 13c와 같다. 도 13c에서, IA'는 파일 A의 새 아이노드를 나타내며, IB'는 파일 B의 새 아이노드를 나타낸다.
다음에, 파일시스템은 위치가 변경된 새 아이노드들(IA', IB')의 위치를 아이노드 맵에 반영하고, 단계 1, 2에서 메모리 상에 표시만 해두었던 SS에 대한 변경 내역 8건을 도 12의 SS 영역에 반영한다. 이를 위해, 도 13d에서와 같이 아이노드 맵이 위치한 3번 세그먼트의 블록 1개가 변경되고, SS가 위치한 5번 세그먼트의 블록 1개가 변경된다.
다음에, 파일시스템은 임시 SU 레코드 리스트의 SU 레코드들을 체크포인트 레코드 안에 삽입하여 체크포인트 기록 시에 저장한다. 이를 위해, 도 13e에서와 같이 체크포인트 영역에서 블록 1개가 기록된다.
본 실시 예의 단계 3에서, 본 발명을 적용하지 않을 경우, 파일시스템은 SU 변경 사항의 반영을 위해 SU 저장 영역인 '4번 세그먼트'에 위치한 블록들 중 적어도 1개는 추가로 기록해야 한다. 만약, 단계 1, 2에서 수행한 것에 대한 SU 변경 사항이 기록되어야 할 위치가 여러 개의 블록들에 해당되면 각각의 블록에 대해 기록을 수행해야 한다.
발명의 내용을 간략히 요약하면 다음과 같다.
메타데이터가 4가지 항목, 즉 아이노드 정보, 체크포인트 정보, 세그먼트 요약 정보, 세그먼트 사용 정보로 구성되는 로그 구조 파일시스템에서 메타데이터를 동기화를 할 때는 아무리 각 항목별 수정된 사항의 크기가 작더라도 4가지 각각 별개로 기록해야 하기 때문에 최소한 4번을 기록해야 한다. 그런데, 파일시스템의 일관성 복원에 필수적인 체크포인트 정보는 그 크기가 통상적인 블록(보통 플래시 메모리의 페이지 크기의 배수에 맞추게 되는) 크기보다 작다. 따라서, 본 발명에서는 체크포인트 레코드에서 남는 공간에 세그먼트 요약 정보, 세그먼트 사용 정보에 대한 변경 사항을 '식별할 수 있는 레코드화'하여 포함시킴으로써 동기화에 필요한 기록 횟수를 줄이는 것이다.
상술한 본 발명의 바람직한 실시 예는 예시의 목적을 위한 것으로, 당업자라면 첨부된 특허청구범위의 기술적 사상과 범위를 통해 다양한 수정, 변경, 대체 및 부가가 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구범위에 속하는 것으로 보아야 할 것이다.

Claims (17)

  1. 파일시스템이 플래시메모리에 데이터를 저장하는 방법에 있어서,
    기록해야 할 정보가 저장될 블록을 할당하는 단계;
    할당된 블록에 대한 세그먼트 요약 정보(SS) 레코드를 생성하여 임시 리스트에 기록하는 단계;
    상기 세그먼트 요약 정보 레코드가 생성된 블록들이 위치하는 세그먼트에 대한 세그먼트 사용 정보(SU) 레코드를 생성하여 상기 임시 리스트에 기록하는 단계;
    상기 임시 리스트에 기록된 상기 세그먼트 요약 정보 레코드와 상기 세그먼트 사용 정보 레코드 중 적어도 어느 하나를 체크포인트 레코드에 포함시키는 단계; 및
    상기 체크포인트 레코드를 할당된 위치에 기록하는 단계를 포함하는 파일시스템의 메타데이터 저장 방법.
  2. 제 1항에 있어서, 상기 세그먼트 요약 정보 레코드는
    아이노드 번호 및 파일 블록 번호를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  3. 제 2항에 있어서, 상기 파일 블록 번호는
    해당 블록이 파일의 어느 부분을 구성하는지를 나타내는 번호인 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  4. 제 1항에 있어서, 상기 세그먼트 사용 정보 레코드는
    해당 세그먼트 내 유효 블록 수 및 해당 세그먼트에 마지막으로 기록한 시간에 대한 정보를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  5. 제 1항에 있어서,
    상기 체크포인트 레코드를 할당된 위치에 기록하기 전에,
    체크포인트 정보를 상기 체크포인트 레코드에 기입하는 단계를 더 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  6. 제 5항에 있어서, 상기 체크포인트 정보는
    버전(version) 정보 또는 체크포인트 기록 시간을 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  7. 제 1항에 있어서,
    상기 임시 리스트에 기록된 상기 세그먼트 요약 정보 레코드와 상기 세그먼트 사용 정보 레코드를 체크포인트 레코드에 포함시키는 단계는
    상기 임시 리스트의 크기와 상기 체크포인트 레코드에서 기 예약된 공간의 크기를 확인하는 단계; 및
    상기 사용 가능 공간이 상기 임시 리스트 크기보다 작은 경우, 상기 체크포인트 레코드에 포함시킬 수 없는 양만큼을 상기 임시 리스트의 앞 부분에서 떼어내어 기 저장된 세그먼트 요약 정보(SS) 및 세그먼트 사용 정보(SU)에 직접 반영하고 나머지 부분을 상기 체크포인트 레코드에 포함시키는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  8. 제 1항에 있어서, 상기 체크포인트 레코드를 할당된 위치에 기록하는 단계는
    상기 체크포인트 레코드를 기 설정된 체크포인트 세그먼트의 첫 번째 블록부터 순차적으로 기록하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  9. 제 8항에 있어서, 상기 체크포인트 레코드를 할당된 위치에 기록하는 단계는
    상기 체크포인트 레코드를 제 1 체크포인트 세그먼트에 순차적으로 기록하는 단계;
    상기 제 1 체크포인트 세그먼트가 모두 사용되면, 제 2 체크포인트 세그먼트에 상기 체크포인트 레코드를 순차적으로 기록하는 단계;
    상기 제 2 체크포인트 세그먼트가 모두 사용되기 전에 상기 제 1 체크포인트 세그먼트에 기록된 체크포인트 레코드를 모두 삭제하는 단계; 및
    상기 제 2 체크포인트 세그먼트가 모두 사용되면, 상기 제 1 체크포인트 세그먼트에 상기 체크포인트 레코드를 다시 기록하는 단계를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  10. 제 9항에 있어서,
    상기 제 1 체크포인트 세그먼트에 기록된 체크포인트 레코드를 모두 삭제하기 전에, 삭제될 체크포인트 레코드에 포함된 세그먼트 요약 정보 레코드 및 세그먼트 사용 정보 레코드의 내용을 기 저장된 세그먼트 요약 정보(SS) 및 세그먼트 사용 정보(SU)에 반영하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  11. 제 8항에 있어서, 상기 체크포인트 레코드를 할당된 위치에 기록하는 단계는
    상기 체크포인트 레코드를 제 1 체크포인트 세그먼트에 순차적으로 기록하는 단계;
    상기 제 1 체크포인트 세그먼트가 모두 사용되면, 제 2 체크포인트 세그먼트에 상기 체크포인트 레코드를 순차적으로 기록하는 단계; 및
    상기 제 2 체크포인트 세그먼트가 모두 사용되면, 상기 제 1 체크포인트 세그먼트에서 가장 오래전에 기록된 체크포인트 레코드를 새로 기록할 체크포인트 레코드로 덮어쓰기 하는 단계를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  12. 제 11항에 있어서,
    상기 덮어쓰기 전에, 삭제될 체크포인트 레코드에 포함된 세그먼트 요약 정보 레코드 및 세그먼트 사용 정보 레코드의 내용을 기 저장된 세그먼트 요약 정보(SS) 및 세그먼트 사용 정보(SU)에 반영하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  13. 파일시스템이 플래시메모리에 데이터를 저장하는 방법에 있어서,
    기록해야 할 정보가 저장될 블록을 할당하는 단계;
    할당된 블록에 대한 세그먼트 요약 정보(SS) 레코드 및 상기 세그먼트 요약 정보 레코드가 생성된 블록들이 위치하는 세그먼트에 대한 세그먼트 사용 정보(SU) 레코드를 생성하는 단계; 및
    상기 세그먼트 요약 정보 레코드와 상기 세그먼트 사용 정보 레코드 중 적어도 어느 하나를 체크포인트 레코드에 포함시켜 기 할당된 위치에 기록하는 단계를 포함하는 파일시스템의 메타데이터 저장 방법.
  14. 제 13항에 있어서, 상기 세그먼트 요약 정보 레코드는
    아이노드 번호 및 파일 블록 번호를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  15. 제 13항에 있어서, 상기 세그먼트 사용 정보 레코드는
    해당 세그먼트 내 유효 블록 수 및 해당 세그먼트에 마지막으로 기록한 시간에 대한 정보를 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  16. 제 13항에 있어서,
    상기 체크포인트 레코드를 할당된 위치에 기록하기 전에,
    체크포인트 정보를 상기 체크포인트 레코드에 기입하는 단계를 더 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
  17. 제 15항에 있어서, 상기 체크포인트 정보는
    버전(version) 정보 또는 체크포인트 기록 시간을 포함하는 것을 특징으로 하는 파일시스템의 메타데이터 저장 방법.
KR1020140026166A 2014-03-05 2014-03-05 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 KR102033323B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140026166A KR102033323B1 (ko) 2014-03-05 2014-03-05 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
US14/609,058 US9563375B2 (en) 2014-03-05 2015-01-29 Method for storing metadata of log-structured file system for flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140026166A KR102033323B1 (ko) 2014-03-05 2014-03-05 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법

Publications (2)

Publication Number Publication Date
KR20150104434A true KR20150104434A (ko) 2015-09-15
KR102033323B1 KR102033323B1 (ko) 2019-10-17

Family

ID=54017418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140026166A KR102033323B1 (ko) 2014-03-05 2014-03-05 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법

Country Status (2)

Country Link
US (1) US9563375B2 (ko)
KR (1) KR102033323B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170102772A (ko) * 2016-03-02 2017-09-12 한국전자통신연구원 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
KR20200017641A (ko) * 2018-08-09 2020-02-19 넵코어스 주식회사 Ssd 장치를 관리하는 방법 및 그 ssd 장치

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CN107766354A (zh) * 2016-08-17 2018-03-06 阿里巴巴集团控股有限公司 一种用于保证数据正确性的方法与设备
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10256981B2 (en) * 2016-09-27 2019-04-09 International Business Machines Corporation Secure logging for host security module
US10452608B2 (en) * 2016-10-17 2019-10-22 Netapp, Inc. Log-structured file system
CN108090168B (zh) * 2017-12-14 2021-01-12 厦门市美亚柏科信息股份有限公司 一种通用f2fs文件系统解析方法、终端设备及存储介质
WO2020000492A1 (zh) * 2018-06-30 2020-01-02 华为技术有限公司 一种存储碎片管理方法及终端
CN111566622B (zh) * 2018-07-06 2023-11-10 华为技术有限公司 一种文件系统调整方法及设备
CN109669640B (zh) 2018-12-24 2023-05-23 浙江大华技术股份有限公司 一种数据存储方法、装置、电子设备及介质
CN111913924B (zh) * 2020-07-21 2024-03-19 华中科技大学 一种基于热度的日志结构文件系统数据管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100199042A1 (en) * 2009-01-30 2010-08-05 Twinstrata, Inc System and method for secure and reliable multi-cloud data replication
KR20100091227A (ko) * 2007-11-21 2010-08-18 바이올린 메모리 인코포레이티드 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템
KR20110070656A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 플래시 메모리의 데이터 처리 방법 및 장치
KR20120072228A (ko) 2010-12-23 2012-07-03 한국전자통신연구원 플래시 메모리의 파일 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286198B2 (en) * 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US9043555B1 (en) * 2009-02-25 2015-05-26 Netapp, Inc. Single instance buffer cache method and system
KR20130075018A (ko) 2011-12-27 2013-07-05 한국전자통신연구원 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
US9411717B2 (en) * 2012-10-23 2016-08-09 Seagate Technology Llc Metadata journaling with error correction redundancy
US9251064B2 (en) * 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100091227A (ko) * 2007-11-21 2010-08-18 바이올린 메모리 인코포레이티드 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템
US20100199042A1 (en) * 2009-01-30 2010-08-05 Twinstrata, Inc System and method for secure and reliable multi-cloud data replication
KR20110070656A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 플래시 메모리의 데이터 처리 방법 및 장치
KR20120072228A (ko) 2010-12-23 2012-07-03 한국전자통신연구원 플래시 메모리의 파일 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170102772A (ko) * 2016-03-02 2017-09-12 한국전자통신연구원 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
KR20200017641A (ko) * 2018-08-09 2020-02-19 넵코어스 주식회사 Ssd 장치를 관리하는 방법 및 그 ssd 장치

Also Published As

Publication number Publication date
US20150254013A1 (en) 2015-09-10
US9563375B2 (en) 2017-02-07
KR102033323B1 (ko) 2019-10-17

Similar Documents

Publication Publication Date Title
KR102033323B1 (ko) 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
US10007468B2 (en) Method and apparatus for erasing data in data section in flash memory
KR101270807B1 (ko) 제어기, 데이터 기억 장치, 및 컴퓨터 판독가능한 기록 매체
JP4192129B2 (ja) メモリ管理装置
US8838875B2 (en) Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon
US10445022B1 (en) Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
KR101767710B1 (ko) 폐기가능 파일들의 카드-기반 관리
CN110678836A (zh) 用于键值存储的持久性存储器
US8402202B2 (en) Input/output control method and apparatus optimized for flash memory
WO2016086819A1 (zh) 将数据写入叠瓦状磁记录smr硬盘的方法及装置
US20100235565A1 (en) Apparatus and method to protect metadata against unexpected power down
JP6920448B2 (ja) フラッシュメモリファイルシステム及びそのデータ管理方法
KR20130075018A (ko) 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
CN109902034B (zh) 快照创建方法、装置、电子设备及机器可读存储介质
CN113568582B (zh) 数据管理方法、装置和存储设备
KR20120084906A (ko) 비휘발성 메모리 시스템 및 그 관리 방법
CN116257460B (zh) 基于固态硬盘的Trim命令处理方法及固态硬盘
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
CN103257928B (zh) 闪存设备数据管理方法和系统
CN111597066A (zh) Ssd修复方法、装置、计算机设备及存储介质
Lee et al. Efficient logging of metadata using NVRAM for NAND flash based file system
US20110022813A1 (en) Data storage system and data storage program
KR20120039166A (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
US10817215B2 (en) Data storage system and control method for non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right