KR20200060220A - 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 - Google Patents

비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 Download PDF

Info

Publication number
KR20200060220A
KR20200060220A KR1020190101277A KR20190101277A KR20200060220A KR 20200060220 A KR20200060220 A KR 20200060220A KR 1020190101277 A KR1020190101277 A KR 1020190101277A KR 20190101277 A KR20190101277 A KR 20190101277A KR 20200060220 A KR20200060220 A KR 20200060220A
Authority
KR
South Korea
Prior art keywords
storage
data
file system
stored
file
Prior art date
Application number
KR1020190101277A
Other languages
English (en)
Other versions
KR102262409B1 (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 서강대학교산학협력단
Publication of KR20200060220A publication Critical patent/KR20200060220A/ko
Application granted granted Critical
Publication of KR102262409B1 publication Critical patent/KR102262409B1/ko

Links

Images

Classifications

    • 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/13File access structures, e.g. distributed indices
    • 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

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

파일 시스템이 적용된 시스템으로서, 복수의 파일들의 노드 어드레스 테이블, 파일들 각각의 아이노드, 그리고 데이터를 임시로 저장하는 메모리와, 메모리에 저장된 복수의 파일들 중 임의의 파일이 변경되면, 변경된 임의의 파일의 데이터 로그를 저장하는 제1 스토리지, 그리고 변경된 임의의 파일에 대한 노드 로그와 메타 데이터를 저장하는 제2 스토리지를 포함한다.

Description

비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법{NVM-based file system and method for data update using the same}
본 발명은 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법에 관한 것이다.
클라우드(Cloud) 환경에서 데이터를 저장하기 위하여, SQLite, MySQL, LevelDB, RocksDB 등과 같은 데이터베이스가 사용된다. 데이터베이스는 질의를 이용하여 데이터를 관리하고, 파일 시스템을 통하여 데이터를 저장 장치에 보관한다.
낸드 플래시(NAND Flash)가 보급되고 SSD(Solid State Drive)가 주 저장 장치로 사용되면서, SSD의 특성을 고려하여 설계된 F2FS(Flash-Friendly File System)가 등장하였다. F2FS는 로그 기반 파일 시스템으로 쓰기 전파(Write Propagation) 문제인 Wandering tree 문제를 해결하였다. 또한, F2FS는 SSD를 저장 장치로 사용하는 데이터베이스 환경에서 기존 파일 시스템들보다 좋은 성능을 보인다.
파일 시스템은 메모리의 변경 사항들을 fsync 시스템 콜을 이용하여 저장 장치로 보관하고 일관성을 지킨다. 대부분의 파일 시스템들은 일관성을 보장하기 위하여 저널링(Journaling), COW(Copy-on-Write) 또는 로그 기반 구조(Log-Structured) 방식들을 채택한다. 하지만 이러한 방식들은 동기식 입출력 함수인 fsync가 호출되었을 때, 단순히 데이터만 저장하는 것이 아니라 파일시스템 내부 구조에 따라서 추가적인 I/O를 발생시킨다.
F2FS는 fsync가 호출됐을 때 파일의 데이터뿐만 아니라, 파일의 아이노드(Inode)와 파일시스템 메타 데이터를 저장하기 위해 I/O를 수행한다. 또한 세그먼트 클리닝과 체크 포인팅(Checkpointing)을 위한 추가적인 I/O를 생성한다.
세그먼트 클리닝은 로그 기반 파일 시스템에서 새로운 로그 영역을 만들기 위한 과정으로, 반드시 체크 포인팅을 수반한다. 체크 포인팅은 메모리에 존재하는 파일 시스템 메타데이터들을 SSD에 저장하여 일관성을 보장하는 과정이다. 특히 체크 포인팅은 파일 시스템의 모든 I/O 요청을 블록킹(Blocking)하기 때문에, 파일 시스템의 전체적인 성능에 치명적이다.
이와 같은 추가적인 I/O 생성과 함께, 블록 장치로 인한 쓰기 증폭(Write Amplification) 문제도 발생한다. 쓰기 증폭 문제는 아이노드와 파일 시스템 메타데이터를 쓸 때 두드러지게 나타난다. 아이노드와 파일 시스템 메타데이터의 경우 작은 임의 쓰기가 주로 발생한다. 따라서, 실제로 변경되는 내용은 작은데, 블록 장치에 쓸 때는 블록 단위로 쓰게 되어, 불필요한 쓰기가 발생한다.
따라서, 본 발명은 fsync에서 발생하는 추가적인 I/O와 쓰기 증폭 문제를 해결하기 위하여, 비휘바성 메모리를 노드 로그로 활용하여 노드 로깅과 체크 포인팅을 가속화하는 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법을 제공한다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 하나의 특징인 파일 시스템이 적용된 시스템으로서,
복수의 파일들의 노드 어드레스 테이블, 상기 파일들 각각에 대한 아이노드, 그리고 데이터를 임시로 저장하는 메모리, 상기 메모리에 저장된 복수의 파일들 중 임의의 파일이 변경되면, 상기 변경된 임의의 파일의 데이터 로그를 저장하는 제1 스토리지, 그리고 상기 변경된 임의의 파일에 대한 노드 로그와 메타 데이터를 저장하는 제2 스토리지를 포함한다.
상기 제1 스토리지는 SSD(Solid State Drive)이고, 상기 제2 스토리지는 비휘발성 메모리(Non-Volatile Memory)일 수 있다.
상기 메모리는, 복수의 파일들 각각에 대하여 각 파일들의 노드 식별자들과 상기 각 파일들이 저장되어 있는 블록 주소 정보들을 상기 노드 어드레스 테이블에 저장하고, 상기 각 파일들에 포함된 데이터들과 아이노드를 저장하는 메모리 모듈, 파일 시스템을 구동하고, 외부로부터 입력되는 fsync 함수에 따라 상기 메모리 모듈에 저장된 데이터와 상기 제1 스토리지 및 제2 스토리지에 저장된 데이터가 일치하도록 플러시(flush)하는 파일 시스템 모듈, 그리고 상기 메모리 모듈과 상기 제1 스토리지 및 제2 스토리지를 연동하여, 데이터를 송수신하는 인터페이스 모듈을 포함할 수 있다.
상기 파일 시스템 모듈은, 상기 변경된 임의의 파일에 대하여 데이터 로그를 상기 제1 스토리지에 저장하고, 상기 데이터 로그가 저장되면 상기 임의의 파일에 대한 노드 로그를 상기 제2 스토리지로 저장하며, 상기 노드 로그가 저장되면, 상기 임의의 파일에 대한 메타 데이터를 상기 제2 스토리지에 저장할 수 있다.
상기 제2 스토리지는, 상기 임의의 파일에 아이노드의 노드 로그를 바이트 단위로 저장할 수 있다.
본 발명에 따르면, 비휘발성 메모리에 노드 로그를 저장함으로써 바이트 접근성을 이용하여 아이노드를 저장할 때 발생하는 쓰기 증폭 문제를 개선할 수 있다.
또한, 파일 시스템 메타데이터를 비휘발성 메모리에 저장하므로 체크 포인팅 과정이 생략되고, 이에 따라 체크 포인팅으로 인한 I/O 블록킹 문제도 해결할 수 있다.
도 1은 기존의 F2FS의 온-디스크 자료 구조와 플러시 과정을 나타낸 예시도이다.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리 기반 파일 시스템이 적용된 시스템의 예시도이다.
도 3은 본 발명의 실시예에 따른 메모리 모듈과 스토리지의 연동을 나타낸 예시도이다.
도 4는 본 발명의 실시예에 따른 비휘발성 메모리 기반의 파일 시스템의 플러시 과정에 대한 예시도이다.
도 5는 본 발명의 실시예에 따른 데이터 갱신 방법에 대한 흐름도이다.
도 6은 본 발명의 실시예에 따른 아이노드를 이용한 노드 어드레스 테이블을 갱신하는 예시도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조로 하여 본 발명의 실시예에 따른 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 노드와 체크 포인트 로깅 방법에 대해 상세히 설명한다.
본 발명의 실시예에 대해 설명하기 앞서, 기존의 F2FS의 온-디스크 자료 구조와 플러시 과정, 그리고 관련 기존 연구들에 대해 먼저 도 1을 참조로 설명한다.
도 1은 기존의 F2FS의 온-디스크 자료 구조와 플러시 과정을 나타낸 예시도이다.
저널링 파일 시스템에서 fsync로 인한 오버헤드를 개선하기 위해서 다양한 연구들이 진행되었다.
세분화된 메타데이터 저널링(Fine grained metadata journaling) 기법은, 저널링 파일 시스템에서 비휘발성 메모리(NVM: Non-Volatie Memory)를 저널 영역으로 활용하는 방식을 제안하였다. 비휘발성 메모리의 바이트 주소 참조 가능(Byte-addressable)한 특성을 이용하여, 세분화된 저널을 수행함으로써 쓰기 증폭 문제를 해결하였다.
iJournaling은 Ext4(Extended File System 4) 파일 시스템에서의 컴파운드 트랜잭션(Compound Transaction)으로 발생하는 성능 저하를 해결하기 위해, 파일 단위의 트랜잭션을 제안하였다. 하지만 파일 단위의 트랜잭션은 여러 코어에서 동시에 fsync를 하는 상황이 발생하면, 처리해야 할 트랜잭션의 수를 증가시키는 문제가 있다.
Tinca는 저널링 파일 시스템에서 비휘발성 메모리를 블록 캐시(Block Cache)로 사용하는 방식을 제안하였다. Tinca는 커밋(Commit)과 체크 포인트에서 발생하는 이중쓰기 문제를 해결하였으며, 링 버퍼(Ring Buffer)를 이용하여 블록 캐시 수준 에서의 트랜잭션을 구현하였다.
이외에도 SSD 장치 수준에서 fsync를 개선하는 연구도 진행되었다. RFLUSH는 플러시 명령을 수행할 때, SSD 내부 메모리에 존재하는 모든 데이터를 일괄적으로 플래시에 저장하는 lump-sum 문제를 해결하기 위하여, 새로운 RFLUSH 명령어를 제안하였다. RFLUSH 명령어는 SSD 내부 버퍼에서 특정 파일만 플래시에 저장하여, 필요하지 않은 플러시를 줄일 수 있다.
한편, F2FS는 SSD의 특성을 고려하여 설계된 로그 기반 파일 시스템으로, 멀티 헤드(Multi-Head) 로그를 사용하여 SSD 내부의 병렬성을 높인다. F2FS의 로그는 노드(Node) 로그와 데이터(Data) 로그로 구성된다.
노드 로그는 파일의 아이노드(Inode)와 직접 노드(direct node), 간접 노드(indirect node)로 구성되며, 노드 ID를 통해 각각의 노드로 접근한다. 데이터 로그는 사용자의 데이터와 디렉토리 정보들로 구성되며, 블록 주소로 접근한다.
파일 시스템의 메타데이터로는 NAT(Node Address Table)와 SIT(Segment Information Table), SSA(Segment Summary Area), CP(Checkpoint Pack)이 존재한다. NAT는 노드의 ID와 해당 노드의 실제 저장 위치를 관리하는 테이블로, 메모리 관리에서 페이지 테이블과 같은 역할을 한다. SIT는 각 세그먼트에 대하여 유효 블록을 비트맵으로 관리한다.
이와 같은 일반적인 파일 시스템인 F2FS에서의 자료 구조와 플러시 과정에 대해 도 1을 참조로 설명한다.
도 1에 도시된 바와 같이, 파일의 아이노드 번호가 노드의 ID가 되어 NAT에 저장된다. NAT를 통해 해당 아이노드가 저장되어 있는 블록 주소를 확인하고, 이를 이용하여 아이노드를 참조한다. 파일의 아이노드에는 파일의 메타데이터들과 데이터 블록에 대한 주소들이 있어, 이를 이용하여 데이터를 참조할 수 있다. 이러한 파일의 데이터와 노드 로그, NAT는 fsync 시스템 콜이 호출되었을 때 SSD로 플러시 되어야 한다.
이때, 파일 시스템의 일관성을 지켜주기 위하여, ① 데이터 로그, ② 노드 로그, ③ 파일 시스템 메타데이터의 순서로 플러시한다. 이러한 순서로 호출된 정보를 쓰게 되면, 로그 기반 파일 시스템의 특성상 이전의 데이터들이 보존되므로, 시스템 장애 시에도 쉽게 복구할 수 있다.
F2FS는 롤 포워드(Roll-forward) 복구 방식도 사용하기 때문에, 모든 fsync에서 체크 포인팅이 발생하지 않는다. 하지만 롤 포워드 복구를 위해서 NAT와 같은 파일 시스템의 메타데이터만 SSD로 플러시 하지 않을 뿐, 데이터 로그와 노드 로그는 SSD로 플러시 해야한다. 또한 fsync가 자주 호출되거나 세그먼트 클리닝이 필요한 상황이 발생하면, 체크 포인팅이 발생할 때 데이터 로그, 노드 로그와 함께 파일 시스템 메타데이터도 SSD로 플러시 해야 한다.
이와 같은 플러시 과정들은 파일 시스템의 다른 I/O 요청들을 블록킹하고 진행되기 때문에, 파일 시스템의 전체적인 성능을 저하시킨다. 특히 fsync가 자주 호출될수록 데이터와 노드 로그가 많이 쓰이고 세그먼트 클리닝도 자주 호출되므로, 체크 포인팅 역시 자주 발생하게 된다. 또한 변경량이 작은 아이노드나 파일 시스템 메타데이터에 대해서 블록 단위로 SSD에 써야 하므로, 쓰기 증폭 문제가 발생한다.
본 발명의 실시예에서는 fsync로 인한 성능 저하와 쓰기 증폭 문제를 해결하기 위하여 비활성 메모리를 사용하는 파일 시스템을 제안한다. 본 발명의 실시예에 따른 비휘발성 메모리 기반 파일 시스템이 적용된 컴퓨터 시스템에 대해 도 2를 참조로 설명한다.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리 기반 파일 시스템이 적용된 시스템의 예시도이다.
도 2에 도시된 바와 같이, 시스템(10)은 프로세서(110), 메모리(120) 그리고 스토리지(130)를 포함한다. 프로세서(110)는 스토리지(130)를 제어하여, 스토리지(130)에 데이터를 쓰거나(write), 스토리지(130)로부터 데이터를 읽어들일 수 있다.
여기서, 시스템(10)은 컴퓨터나 스마트폰 등 다양한 형태의 단말에 구현될 수 있으므로, 본 발명의 실시예에서는 어느 하나의 형태로 한정하지 않는다.
프로세서(110)는 시스템(10)에서 발생하는 모든 동작을 제어한다. 프로세서(110)는 메모리(120)에 임시 저장되어 있는 다양한 프로그램들을 실행할 수 있는 코드들을 실행하여, 코드에 대응하는 제어 명령을 시스템(10) 내 구성 요소들에 내릴 수 있다.
메모리(120)는 메모리 모듈(121), 파일 시스템 모듈(122), 그리고 인터페이스 모듈(123)을 포함한다. 본 발명의 실시예에서는 메모리(120)가 DRAM으로 구현되어 있는 것을 예로 하여 설명한다.
메모리 모듈(121)은 프로세서(110)에서 실행한 코드들을 임시로 저장한다. 또한, 메모리 모듈(121)는 프로세서(110)가 처리하는 데이터를 저장한다. 그리고, 메모리 모듈(121)은 메모리(120)에 임시 저장되는 파일들의 아이노드, NAT, 데이터 들을 저장한다.
파일 시스템 모듈(122)은 파일 시스템을 구동한다. 일반적으로 시스템(10)에는 운영 체제(OS), 어플리케이션, 메모리 관리자, 입출력 드라이버(I/O driver) 등을 구동할 수 있도록 다양한 모듈들이 메모리(120)에 포함될 수 있으나, 본 발명의 실시예에서는 설명의 편의를 위하여 파일 시스템 모듈(122)만을 도시한다.
파일 시스템 모듈(122)이 구동하는 파일 시스템은, 파일 또는 데이터가 메모리 모듈(121) 또는 스토리지(130)에 저장되도록 한다. 파일 시스템은 쓰기 또는 읽기 명령에 따른 어드레스 정보를 스토리지(130)로 제공한다. 파일 시스템은 시스템(10)에서 실행되는 특정한 운영 체제에 따라 사용될 수 있으며, 본 발명의 실시예에서는 F2FS 파일 시스템을 예로 하여 설명한다.
인터페이스 모듈(123)은 메모리(120)와 스토리지(130) 사이에 데이터 송수신을 중계한다.
스토리지(130)는 SSD(Static Solid Disk), HDD(Dard Disk Drive) 등 각종 카드 스토리지나 데이터 서버 등으로 구현될 수 있다. 그러나, 본 발명의 실시예에서는 스토리지(130)가 SSD인 제1 스토리지(131)와 비휘발성 메모리인 제2 스토리지(132)로 구성되는 것을 예로 하여 설명한다.
제2 스토리지(132)는 노드 로그와 노드 어드레스 테이블(이하, 'NAT'(Node Address Table)이라 지칭함)을 저장하고, 제1 스토리지(131)는 데이터 로그를 저장한다. 제2 스토리지(132)에 저장되어 있는 노드 로그와 NAT, 제1 스토리지(131)에 저장되어 있는 데이터 로그는 메모리 모듈(121)에 저장되어 있는 정보들과 동일하다.
제2 스토리지(132)인 비휘발성 메모리는 바이트 주소로 참조가 가능하여(byte addressable), 기존의 F2FS의 아이노드 자료구조가 4KB 블록 단위를 맞추기 위해 SSD에 불필요한 주소 공간을 갖고 있던 것을 줄여줄 수 있다.
이상에서 설명한 시스템(10)에서 메모리 모듈(121)과 스토리지(130)의 연결 관계에 대해 도 3을 참조로 설명한다.
도 3은 본 발명의 실시예에 따른 메모리 모듈과 스토리지의 연동을 나타낸 예시도이다.
도 3에 도시된 바와 같이, 메모리 모듈(121)은 파일의 NAT를 저장하는 노드 어드레스 테이블 저장 모듈, 파일의 아이노드를 저장하는 아이노드 저장 모듈, 파일의 실제 데이터를 저장하는 데이터 저장 모듈을 포함한다.
메모리 모듈(121)에 임시로 저장되는 NAT는 스토리지(130)의 제2 스토리지(132)의 노드 어드레스 테이블 저장 모듈에 동일하게 저장된다. 또한, 메모리 모듈(121)에 저장되는 아이노드도 제2 스토리지(132)의 아이노드 로그 저장 모듈에 동일하게 저장된다.
이와 마찬가지로, 메모리 모듈(121)에 저장되어 있는 데이터는 제1 스토리지(131)에 동일하게 저장된다.
메모리 모듈(121)에 저장되어 있는 파일의 아이노드와 파일 시스템 메타데이터가 변경되는 경우, 변경된 정보를 제1 스토리지(131)와 제2 스토리지(132)에 반영하기 위하여, 파일 시스템 모듈(122)은 fsync 함수를 발생하여 플러시 절차를 수행한다. 플러시 과정에 대해 도 4를 참조로 설명한다.
도 4는 본 발명의 실시예에 따른 비휘발성 메모리 기반의 파일 시스템의 플러시 과정에 대한 예시도이다.
도 4에 도시된 바와 같이, 데이터 로그의 경우 기존 F2FS와 같이 제1 스토리지(131)인 SSD에 저장하며, 제2 스토리지(132)에는 노드 로그와 NAT를 저장한다. 제2 스토리지(132)에 노드 로그와 파일 시스템 메타데이터를 쓸 때에도 일관성을 보장해야 하므로, 데이터 로그, 노드 로그, 파일 시스템 메타데이터의 순서로 저장한다.
이 때, 제2 스토리지(132)에 노드 로그와 NAT를 저장하는 순서는 일관성에 치명적이므로 명령어들(예를 들어, clflush와 mfence 등)을 이용하여 캐시 라인을 플러시하고, 명령어들간의 재정렬을 방지해야 한다. 여기서, 캐시 라인은 CPU 내부의 캐시를 읽고 쓰는 단위를 의미한다.
아이노드와 파일 시스템 메타데이터를 제2 스토리지(132)에 저장할 때는, 블록 단위의 쓰기가 아닌 바이트 단위로 쓸 수 있다. 또한 NAT와 같은 파일 시스템 메타데이터도 변경된 부분만 저장할 수 있다.
또한, 제2 스토리지(132)에 저장된 정보들은 영구적으로 저장될 수 있으므로, 제2 스토리지(132)에 저장된 정보들을 제1 스토리지(131)에 저장하지 않아도 된다. 따라서, 종래에 제1 스토리지(131) 저장에 따른 체크 포인팅 과정을 생략할 수 있다.
본 발명의 실시예에 따른 파일 시스템은 제2 스토리지(132)에 대한 프리 블록(Free block) 리스트를 관리한다. 여기서, 프리 블록이란 현재 사용되지 않는, 즉 사용 가능한 블록을 의미한다. 프리 블록 리스트는 메모리 내에서 저장되며, 파일 시스템이 프리 블록들의 범위를 RB(Red-Black) 트리의 형태로 관리한다. 노드 로그 엔트리(Entry)를 쓰기 위해서 프리 블록 리스트에서 새로운 프리 블록을 할당 받는다.
노드 로그 엔트리가 업데이트 되면 기존의 엔트리는 Invalid가 되며 Free 리스트에 다시 추가 된다. 따라서 NVM 영역에 대해서는 Garbage Collection 이 필요 없다. 또한 SSD는 데이터 로그만 저장하므로 데이터 로그에 대한 세그먼트 클리닝만 수행하게 된다.
즉, 로그 기반 파일시스템의 특성상 블록이 업데이트 되면, 기존의 블록은 invalid 상태로 되어, 추후에 가비지 콜렉션(garbage collection)을 통해서 프리 블록으로 변하게 된다. 가비지 콜렉션 과정은 로그 기반 파일시스템의 주요 오버헤드 중 하나로, 가비지 콜렉션에 대한 사항은 이미 알려진 것이므로 본 발명의 실시예에서는 상세한 설명은 생략한다.
비휘발성 메모리의 경우 바이트 단위 접근성을 이용하여 기존의 블록이 invalid가 될 때 바로 프리 블록으로 만들고 관리할 수 있으므로, 비휘발성 메모리 영역에 대해서는 가비지 콜렉션이 필요 없다. 또한 SSD는 데이터 로그만 저장하므로, 데이터 로그의 가비지 콜렉션 발생이 줄고, SSD 자체의 세그먼트 클리닝의 효율도 올라가게 된다.
이상에서 설명한 비휘발성 메모리 기반 파일 시스템이 데이터를 갱신하는 방법에 대해 도 5를 참조로 설명한다.
도 5는 본 발명의 실시예에 따른 데이터 갱신 방법에 대한 흐름도이다.
도 5에 도시된 바와 같이, 파일 시스템은 Fsync 함수의 호출을 인지하면(S100), 메모리 모듈(121)에 저장된 파일들 중, 변경된 파일을 확인한다(S110). 변경된 파일의 데이터 로그를 먼저 제1 스토리지(131)에 저장한다(S120).
그리고, 변경된 파일의 노드 로그를 제2 스토리지(132)에 저장한다(S130). 마지막으로, 변경된 파일의 메타데이터를 제2 스토리지(132)의 노드 어드레스 테이블에 반영하여(S140), 메모리 모듈(121)에 저장된 파일과 스토리지(130)에 저장된 파일이 동일하게 유지되도록 한다.
다음은 본 발명의 실시예에 따라 파일이 플러시되어 노드 어드레스 테이블을 갱신하는 예에 대해 도 6을 참조로 설명한다.
도 6은 본 발명의 실시예에 따른 아이노드를 이용한 노드 어드레스 테이블을 갱신하는 예시도이다.
도 6에 도시된 바와 같이, 데이터 블록 A를 갖고 있는 파일(nid=3)에 데이터 블록 B가 추가되어 플러시되는 상황을 나타낸 예시도이다.
아이노드는 파일의 데이터가 저장된 위치를 가리키는데, 데이터 블록 A와 데이터 블록 B가 각각 제2 스토리지(132)의 101 주소 위치와 102 주소 위치에 저장되어 있음을 알 수 있다.
메모리 모듈(121)의 노드 어드레스 테이블(NAT)는 파일의 아이노드가 저장된 위치를 가리키며, 도 6에서는 해당 파일의 아이노드가 제2 스토리지(132)의 28 위치에 저장되어 있음을 의미한다.
따라서, 데이터 블록 B를 추가할 경우, 데이터는 제1 메모리 모듈(131)에 데이터 블록 A 뒤에 저장하고, 데이터 블록 B에 대한 노드 ID와 메타 데이터는 제2 메모리 모듈(132)에 저장한다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (5)

  1. 파일 시스템이 적용된 시스템으로서,
    복수의 파일들의 노드 어드레스 테이블, 상기 파일들 각각에 대한 아이노드, 그리고 데이터를 임시로 저장하는 메모리,
    상기 메모리에 저장된 복수의 파일들 중 임의의 파일이 변경되면, 상기 변경된 임의의 파일의 데이터 로그를 저장하는 제1 스토리지, 그리고
    상기 변경된 임의의 파일에 대한 노드 로그와 메타 데이터를 저장하는 제2 스토리지
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 제1 스토리지는 SSD(Solid State Drive)이고, 상기 제2 스토리지는 비휘발성 메모리(Non-Volatile Memory)인 시스템.
  3. 제1항에 있어서,
    상기 메모리는,
    복수의 파일들 각각에 대하여 각 파일들의 노드 식별자들과 상기 각 파일들이 저장되어 있는 블록 주소 정보들을 상기 노드 어드레스 테이블에 저장하고, 상기 각 파일들에 포함된 데이터들과 아이노드를 저장하는 메모리 모듈,
    파일 시스템을 구동하고, 외부로부터 입력되는 fsync 함수에 따라 상기 메모리 모듈에 저장된 데이터와 상기 제1 스토리지 및 제2 스토리지에 저장된 데이터가 일치하도록 플러시(flush)하는 파일 시스템 모듈, 그리고
    상기 메모리 모듈과 상기 제1 스토리지 및 제2 스토리지를 연동하여, 데이터를 송수신하는 인터페이스 모듈
    을 포함하는 시스템.
  4. 제3항에 있어서,
    상기 파일 시스템 모듈은,
    상기 변경된 임의의 파일에 대하여 데이터 로그를 상기 제1 스토리지에 저장하고,
    상기 데이터 로그가 저장되면 상기 임의의 파일에 대한 노드 로그를 상기 제2 스토리지로 저장하며,
    상기 노드 로그가 저장되면, 상기 임의의 파일에 대한 메타 데이터를 상기 제2 스토리지에 저장하는 시스템.
  5. 제4항에 있어서,
    상기 제2 스토리지는,
    상기 임의의 파일에 아이노드의 노드 로그를 바이트 단위로 저장하는 시스템.
KR1020190101277A 2018-11-22 2019-08-19 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 KR102262409B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180145254 2018-11-22
KR1020180145254 2018-11-22

Publications (2)

Publication Number Publication Date
KR20200060220A true KR20200060220A (ko) 2020-05-29
KR102262409B1 KR102262409B1 (ko) 2021-06-08

Family

ID=70912067

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190101277A KR102262409B1 (ko) 2018-11-22 2019-08-19 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법

Country Status (1)

Country Link
KR (1) KR102262409B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102399103B1 (ko) * 2020-11-26 2022-05-18 (주)볼트마이크로 파일 시스템 기반 차량 진단 이벤트 메모리 관리 장치 및 방법
WO2022154262A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 예약 공간에 기반한 데이터베이스 업데이트 방법 및 장치
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
WO2024001643A1 (zh) * 2022-06-27 2024-01-04 中兴通讯股份有限公司 后备存储设备、元数据管理方法、装置、存储介质
US11907166B2 (en) 2021-01-13 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and method for updating database based on reserved space

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101008032B1 (ko) * 2007-12-18 2011-01-13 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20140042430A (ko) * 2012-09-28 2014-04-07 삼성전자주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
KR20140121013A (ko) * 2013-04-04 2014-10-15 이화여자대학교 산학협력단 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
KR20160012388A (ko) * 2014-07-24 2016-02-03 성균관대학교산학협력단 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101008032B1 (ko) * 2007-12-18 2011-01-13 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20140042430A (ko) * 2012-09-28 2014-04-07 삼성전자주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
KR20140121013A (ko) * 2013-04-04 2014-10-15 이화여자대학교 산학협력단 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
KR20160012388A (ko) * 2014-07-24 2016-02-03 성균관대학교산학협력단 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
여해동 등, "비휘발성램을 사용하는 플래시 파일 시스템의 효율적인 메타데이터 관리기법", pp 307-312, 2009 한국컴퓨터종합학술대회 논문집 Vol.36, No.1. 1부.* *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102399103B1 (ko) * 2020-11-26 2022-05-18 (주)볼트마이크로 파일 시스템 기반 차량 진단 이벤트 메모리 관리 장치 및 방법
WO2022114754A1 (ko) * 2020-11-26 2022-06-02 (주)볼트마이크로 파일 시스템 기반 차량 진단 이벤트 메모리 관리 장치 및 방법
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
WO2022154262A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 예약 공간에 기반한 데이터베이스 업데이트 방법 및 장치
US11907166B2 (en) 2021-01-13 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and method for updating database based on reserved space
WO2024001643A1 (zh) * 2022-06-27 2024-01-04 中兴通讯股份有限公司 后备存储设备、元数据管理方法、装置、存储介质

Also Published As

Publication number Publication date
KR102262409B1 (ko) 2021-06-08

Similar Documents

Publication Publication Date Title
KR102262409B1 (ko) 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법
US8738850B2 (en) Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory
CN111480149B (zh) 持久存储器设备中的预写式日志记录
US11301379B2 (en) Access request processing method and apparatus, and computer device
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
WO2017190604A1 (zh) 数据库系统中事务恢复的方法与数据库管理系统
US20160077744A1 (en) Deferred reference count update technique for low overhead volume metadata
US20140115244A1 (en) Apparatus, system and method for providing a persistent level-two cache
US11030092B2 (en) Access request processing method and apparatus, and computer system
KR20150053720A (ko) 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스
US20150193463A1 (en) Systems and methods for durable database operations in a memory-mapped environment
US20210311877A1 (en) Key-value store architecture for key-value devices
US20220129420A1 (en) Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
Son et al. SSD-assisted backup and recovery for database systems
CN111338853B (zh) 一种基于Linux的数据实时存储系统及方法
CN111459400B (zh) 在存储服务器中进行基于管线的存取管理的方法及设备
Do et al. Programming an SSD controller to support batched writes for variable-size pages
US11989436B2 (en) Variable extent size
US20230401155A1 (en) Hold-aside buffer for uncommitted write transactions in a log structured key-value database
Song et al. CADedup: High-performance Consistency-aware Deduplication Based on Persistent Memory
Shim et al. IPLization of postgreSQL on NVDIMM
KR20090085818A (ko) 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템
JP2013025773A (ja) ファイル管理装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant