KR102545067B1 - 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 - Google Patents
로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 Download PDFInfo
- Publication number
- KR102545067B1 KR102545067B1 KR1020160025336A KR20160025336A KR102545067B1 KR 102545067 B1 KR102545067 B1 KR 102545067B1 KR 1020160025336 A KR1020160025336 A KR 1020160025336A KR 20160025336 A KR20160025336 A KR 20160025336A KR 102545067 B1 KR102545067 B1 KR 102545067B1
- Authority
- KR
- South Korea
- Prior art keywords
- segment
- block
- metadata
- msu
- usage information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
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
본 발명은 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
본 발명에 따른 로그 구조 파일 시스템의 메타데이터를 저장하는 방법은, 블록 번호와 블록의 할당 요청인지 해제 요청인지 여부를 나타내는 정보를 포함하는 블록 관리 요청 신호를 수신하는 단계, 상기 블록 번호를 참조로 하여 상기 블록이 속하는 세그먼트 번호를 산출하는 단계, 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목-상기 메타데이터 세그먼트 사용 정보(MSU)는 세그먼트 번호와 유효 블록 수에 대한 정보를 포함함-을 획득하는 단계 및 상기 블록 관리 요청 신호가 할당 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 증가하고, 상기 블록 관리 요청 신호가 해제 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 감소시키는 단계를 포함할 수 있다.
본 발명에 따른 로그 구조 파일 시스템의 메타데이터를 저장하는 방법은, 블록 번호와 블록의 할당 요청인지 해제 요청인지 여부를 나타내는 정보를 포함하는 블록 관리 요청 신호를 수신하는 단계, 상기 블록 번호를 참조로 하여 상기 블록이 속하는 세그먼트 번호를 산출하는 단계, 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목-상기 메타데이터 세그먼트 사용 정보(MSU)는 세그먼트 번호와 유효 블록 수에 대한 정보를 포함함-을 획득하는 단계 및 상기 블록 관리 요청 신호가 할당 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 증가하고, 상기 블록 관리 요청 신호가 해제 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 감소시키는 단계를 포함할 수 있다.
Description
본 발명은 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
NAND 플래시 메모리는 저렴한 가격, 낮은 소비전력, 작은 크기, 충격에 강한 특성 등의 장점 때문에 임베디드 시스템에서 저장장치로 널리 쓰인다. NAND 플래시 메모리는 전통적인 저장장치인 디스크와는 그 특성이 매우 다르며 사용함에 있어 많은 제약 사항을 가지고 있다. 특히, 플래시 메모리는 erase-before-write 제약 때문에 기본적으로 in-place update가 거의 불가능하다.
최근에는 NAND 플래시 메모리의 제약 사항들을 처리하기 위해 FTL(Flash Translation Layer)을 구동하는 컨트롤러와 플래시 메모리를 결합한 저장 장치들이 널리 쓰이는 추세이다. 이를 FTL 기반 저장장치라고 부르는데 SSD, USB 메모리, SD 카드 같은 것들이 대표적이다. 파일시스템 밑에 FTL이 있을 경우 in-place update를 해도 FTL이 처리하기 때문에 동작에는 문제가 없다. 다만, FTL이 in-place update를 처리하는 데에 필요한 성능 상 비용이 함께 증가하는 문제점이 있다.
본 발명은 전술한 종래 기술의 문제점을 모두 해결하는 것을 그 목적으로 한다.
본 발명은 로그 구조 파일시스템에서 메타데이터를 저장함에 있어 in-place update를 유발하지 않으면서도 변경된 항목만 기록하도록 하여, 메타데이터를 효율적으로 관리하고 저장 장치의 부담을 줄이는 것을 다른 목적으로 한다.
본 발명의 일 실시예에 따르면, 로그 구조 파일 시스템의 메타데이터를 저장하는 방법은, 블록 번호와 블록의 할당 요청인지 해제 요청인지 여부를 나타내는 정보를 포함하는 블록 관리 요청 신호를 수신하는 단계, 상기 블록 번호를 참조로 하여 상기 블록이 속하는 세그먼트 번호를 산출하는 단계, 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목-상기 메타데이터 세그먼트 사용 정보(MSU)는 세그먼트 번호와 유효 블록 수에 대한 정보를 포함함-을 획득하는 단계 및 상기 블록 관리 요청 신호가 할당 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 증가하고, 상기 블록 관리 요청 신호가 해제 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 감소시키는 단계를 포함할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 로그 구조 파일 시스템의 메타데이터를 저장하기 위한 시스템은, 소정의 데이터 또는 메타데이터 쓰기 요청이 수신되면, 블록 할당 또는 해제 요청을 전달하는 데이터 입출력 모듈, 상기 데이터 입출력 모듈로부터 블록 할당 또는 해제 요청을 수신하면, 데이터 쓰기 요청에 의한 것인지 메타데이터 쓰기 요청에 의한 것인지 판단한 후, 블록 할당 또는 해제 요청을 처리하는 공간 관리 모듈 및 상기 공간 관리 모듈에서 메타데이터 쓰기 요청에 대한 블록 할당 또는 해제 처리가 될 때마다, 메타데이터 파일에 대응되는 세그먼트 정보를 업데이트 하는 메타데이터 세그먼트 사용 정보 처리 모듈을 포함할 수 있다.
본 발명에 의하면, 로그 구조 파일시스템에서 데이터뿐만 아니라 메타데이터를 저장할 때에도 in-place update가 유발되지 않을 수 있으며, 메타데이터 기록 시 필요한 블록의 수를 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장 공간의 구조를 예시적으로 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 메타데이터 파일 구조를 예시적으로 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 아이노드 포인터 구조를 예시적으로 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 세그먼트 요약 정보의 구조를 예시적으로 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 세그먼트 요약 정보 영역의 구조를 예시적으로 나타내는 것이다.
도 6은 본 발명의 일 실시예에 따른 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 세그먼트 사용 정보 영역의 구조를 예시적으로 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 메타데이터 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템의 내부 구성을 도시하는 도면이다.
도 10은 본 발명의 일 실시예에 따른 데이터 입출력 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 11 내지 도 13은 본 발명의 일 실시예에 따라 공간 관리 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 14 내지 도 16은 본 발명의 일 실시예에 따라 MSU 처리 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 메타데이터 파일 구조를 예시적으로 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 아이노드 포인터 구조를 예시적으로 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 세그먼트 요약 정보의 구조를 예시적으로 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 세그먼트 요약 정보 영역의 구조를 예시적으로 나타내는 것이다.
도 6은 본 발명의 일 실시예에 따른 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 세그먼트 사용 정보 영역의 구조를 예시적으로 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 메타데이터 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템의 내부 구성을 도시하는 도면이다.
도 10은 본 발명의 일 실시예에 따른 데이터 입출력 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 11 내지 도 13은 본 발명의 일 실시예에 따라 공간 관리 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 14 내지 도 16은 본 발명의 일 실시예에 따라 MSU 처리 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 바람직한 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
앞서 상술한 바와 같이, 낸드(NAND) 플래시 메모리를 사용함에 있어 많은 제약 사항이 따르며, 대표적인 제약 사항은 아래와 같다.
NAND 플래시 메모리는 여러 개의 제거 블록(erase block)으로 구성되며, 각각의 제거 블록은 여러 개의 페이지(page)로 구성된다. 예를 들어, SLC(싱글레벨셀; single level cell) 방식의 Large Block NAND 플래시 메모리의 페이지 하나의 크기는 2KB이며, 제거 블록 1개는 64개의 페이지로 구성되어 128KB의 크기를 가진다. 플래시 메모리에는 읽기/쓰기/삭제 3가지 동작이 가능하며, 읽기/쓰기는 페이지 단위로 이루어지고 삭제는 제거 블록 단위로 이루어진다. 따라서, 페이지 하나의 크기보다 작은 크기의 데이터를 쓰더라도, 페이지 하나를 쓰는 것과 동일한 시간이 소요되는 문제점이 있다.
다음으로, 상술한 바와 같이 삭제는 제거 블록 단위로만 가능하므로, 다시 쓰기 위해서는 먼저 해당 페이지가 속한 제거 블록 전체를 삭제(erase) 하여야 한다. 삭제 동작은 읽기 또는 쓰기 동작에 비하여 많은 시간이 소요되고, 각 제거 블록에는 삭제 가능한 횟수에 제한이 있어 한계에 달하면 해당 제거 블록은 사용할 수 없게 되는 문제점이 있다.
이 때, 더 이상 쓸 수 없게 된 제거 블록은 배드 블록(bad block)이라 부르며, 각 제거 블록들에 수행되는 삭제 동작 횟수가 고르도록 하여, 최대한 배드 블록이 늦게 생성되도록 하여야 한다. 이를 위한 기능을 웨어 레벨링(wear-leveling)이라고 부른다.
다음으로, Large Block NAND 플래시 메모리를 사용함에 있어서, 제거 블록 내의 페이지들은 순차적으로 사용되어야 하는 문제점이 있다. 즉, 0번 페이지, 1번 페이지, 2번 페이지 순으로 사용되어야 하며, 특정 페이지를 사용하기 위하여는 반드시 앞의 페이지들에 쓰기 동작을 수행하여야 한다.
로그 구조 파일시스템은 데이터를 기록함에 있어서는 in-place update를 하지 않기 때문에, 자연스럽게 전술한 플래시 메모리의 제약 사항들을 회피하는 효과를 발휘한다. 따라서, 플래시 메모리 내에서 로그 구조 파일시스템을 사용하는 것은 적합하다.
[본 발명의 바람직한 실시예]
본 명세서에서, 저장 공간은 세그먼트와 블록 단위로 관리될 수 있다. 도 1은 본 발명의 일 실시예에 따른 저장 공간의 구조를 예시적으로 나타낸 도면이다.
도 1을 참조하면, 저장공간은 세그먼트 단위로 나뉘고, 각 세그먼트는 여러 개의 블록으로 구성된다. 세그먼트 및 블록의 크기는 임의로 설정될 수 있으며, 예를 들어, 블록 크기는 2KB, 세그먼트 크기는 128KB일 수 있다.
다음으로, 본 발명에 따르면, 메타데이터를 담는 별도의 파일을 둘 수 있다(이하, '메타데이터 파일'이라고 함).
도 2는 본 발명의 일 실시예에 따른 메타데이터 파일 구조를 예시적으로 나타내는 도면이다. 도 2에 도시된 바와 같이, 메타데이터 파일 내에는 '아이노드', '세그먼트 요약 정보' 및 '세그먼트 사용 정보'가 포함되어야 한다. 다만, 도 2에서는 설명의 편의를 위하여 '아이노드', '세그먼트 요약 정보' 및 '세그먼트 사용 정보' 순으로 구성하였으나 이에 제한되지 않으며, 메타데이터 파일 내 각 영역의 순서, 각 영역의 정보 구성 등은 변경될 수 있다.
본 명세서에서, 아이노드(Inode)는 유닉스/리눅스 시스템의 파일시스템에서 사용되는 용어로 특정 파일에 접근할 수 있는 각종 메타데이터를 담은 자료 타입을 나타내는 개념이며, 파일 하나마다 아이노드가 존재한다. 일반적으로 파일 크기, 접근 권한, 생성/수정 시간 등의 정보와 파일을 구성하는 데이터 블록들의 주소를 담고 있다.
데이터 블록 주소를 담기 위하여 아이노드 포인터 구조(Inode Pointer Structure)를 사용할 수 있다.
도 3은 본 발명의 일 실시예에 따른 아이노드 포인터 구조를 예시적으로 나타내는 도면이다. 도 3을 참조하면, 각각의 아이노드 내에는 해당 아이노드에 속한 블록들의 주소를 담는 포인터가 포함될 수 있다. 보다 구체적으로, 상부에 배치된 5개의 포인터와 같이 블록 주소를 직접적으로 가지고 있을 수 있으며, 여섯 번째에 배치된 포인터와 같이 여러 개의 블록 주소를 가지고 있을 수도 있다. 이러한 데이터 블록을 우회 블록(Indirect block)이라고 부른다. 한편, 마지막에 배치된 것과 같이, 두 번 우회하는 경우 이중 우회 블록(Double indirect block)이라고 할 수 있다. 한편, 본 명세서에서는 아이노드 포인터가 아이노드 내에 포함될 수 있다.
특정 아이노드 번호가 주어졌을 때 그에 대응하는 아이노드를 찾을 수 있도록 아이노드 영역이 구성될 수 있으며, 그 구성 방식에는 제한이 없다. 예를 들어, 아이노드가 담긴 블록의 주소가 나열되는 테이블 형태로 구성할 수도 있으며, 아이노드가 순서대로 나열되는 아이노드 테이블 형태로 구성할 수도 있다.
다음으로, 본 명세서에서, 세그먼트 요약 정보(SS, Segment Summary)는 특정 블록이 어떤 아이노드에 속하며, 몇 번째 블록인지 여부에 대한 정보를 포함하는 개념일 수 있다.
도 4는 본 발명의 일 실시예에 따른 세그먼트 요약 정보의 구조를 예시적으로 나타내는 도면이다. 도 4를 참조하면, 세그먼트 요약 정보에는 아이노드 번호와 아이노드 블록 번호에 대한 정보가 포함되도록 구성될 수 있다.
특정 블록이 세그먼트 청소 작업 수행 시 청소 대상으로 선정되어 다른 세그먼트로 이동되더라도, 세그먼트 요약 정보를 통해 원래 아이노드와의 연결을 유지할 수 있다. 세그먼트 요약 정보는 블록마다 하나씩 존재하며, 아이노드 번호는 해당 블록이 어떤 아이노드에 속하는지를 나타내고, 아이노드 블록 번호는 해당 블록이 아이노드를 구성하는 블록 중 몇 번째 블록에 해당하는지를 나타내는 것일 수 있다.
도 5는 본 발명의 일 실시예에 따른 세그먼트 요약 정보 영역의 구조를 예시적으로 나타내는 것이다. 도 5를 참조하면, 세그먼트 요약 정보 영역은 저장 공간에 존재하는 모든 블록에 대한 세그먼트 요약 정보를 테이블로 구성한 것일 수 있다.
본 발명에 따르면 메타데이터 파일의 세그먼트 요약 정보 영역에는 세그먼트 요약 정보 항목들이 차례로 나열되며, 따라서 항목의 배열 순서는 곧 인덱스가 될 수 있다. 이때, 인덱스는 블록 번호에 대응된다.
다음으로, 본 명세서에서, 세그먼트 사용 정보(SU, Segment Usage)는 세그먼트 청소 작업 시 사용되는 정보일 수 있다. 즉, 세그먼트 사용 정보를 참조로 하여 특정 세그먼트가 선택될 수 있다.
도 6은 본 발명의 일 실시예에 따른 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다. 도 6을 참조하면, 세그먼트 사용 정보는 유효 블록 수(valid_blocks)에 대한 정보를 포함하여 구성될 수 있다. 세그먼트 사용 정보는 세그먼트마다 하나씩 존재하며, 유효 블록 수는 해당 세그먼트 안에 실제로 파일에 할당되어 사용 중인 블록의 개수를 나타내는 정보일 수 있다.
도 7은 본 발명의 일 실시예에 따른 세그먼트 사용 정보 영역의 구조를 예시적으로 나타내는 도면이다. 도 7을 참조하면, 세그먼트 사용 정보 영역은 저장 공간에 존재하는 모든 세그먼트에 대한 세그먼트 사용 정보 항목들을 테이블로 구성한 것일 수 있다.
본 발명에 따르면, 메타데이터 파일의 세그먼트 사용 정보 영역에는 세그먼트 사용 정보 항목들이 차례로 나열되며, 따라서 항목의 배열 순서는 곧 인덱스가 될 수 있다. 이때, 인덱스는 세그먼트 번호에 대응된다.
본 명세서에서, MSU(Metadata Segment Usage; 메타데이터 세그먼트 사용 정보)는 메타데이터 파일에 속하는 특정 세그먼트의 사용 정보를 나타내는 자료 타입 개념이다.
도 8은 본 발명의 일 실시예에 따른 메타데이터 세그먼트 사용 정보의 구조를 예시적으로 나타내는 도면이다. 도 8을 참조하면, 메타데이터 세그먼트 사용 정보에는 세그먼트 번호(sno)와 유효 블록 수(valid_blocks)에 대한 정보가 포함되도록 구성될 수 있다. 메타데이터 세그먼트 정보는 메타데이터 파일에 속하는 각 세그먼트마다 하나씩 존재할 수 있다.
다음으로, 본 명세서에서 체크포인트는 파일 시스템을 구동하기 위해 필요한 메타데이터를 복원하는데 필요한 모든 정보가 담긴 요소를 나타내는 개념이다.
체크포인트 내에는 메타데이터 파일에 대한 아이노드, MSU 리스트 및 MSU 리스트에 포함된 MSU 항목 수에 대한 정보가 포함될 수 있다.
본 발명에 따르면, 메타데이터 파일을 저장하는 방법에 관한 것으로서, MSU 테이블을 메타데이터 파일 내에 포함시키므로, 메타데이터 파일에 대한 아이노드가 필요하다.
또한, 본 발명에 따르면, 메타데이터 파일에 속하는 블록을 담은 세그먼트에 대해서만 MSU 항목이 존재하게 되는 바, MSU 항목들을 테이블로 구성한 것이 MSU 리스트에 해당하며, MSU 항목 수는 상기의 테이블에 포함된 MSU 항목의 개수를 나타낸다. 또한, 체크포인트 영역이란 체크포인트가 기록되는 영역을 나타내는 개념이다.
이하에서는 본 발명의 실시예에 따라 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템에 대하여 구체적으로 설명하도록 한다.
로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템의 구성
도 9는 본 발명의 일 실시예에 따른 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템의 내부 구성을 도시하는 도면이다.
도 9에 도시된 바와 같이, 본 발명의 일 실시예에 따른 시스템은, 데이터 입출력 모듈(910), 공간 관리 모듈(920), MSU 처리 모듈(930), 메타데이터 청소 모듈(940), 저장 모듈(950), 통신 모듈(960) 및 제어 모듈(970)을 포함하여 구성될 수 있다.
본 발명의 일 실시예에 따르면, 데이터 입출력 모듈(910), 공간 관리 모듈(920), MSU 처리 모듈(930), 메타데이터 청소 모듈(940), 저장 모듈(950), 통신 모듈(960) 및 제어 모듈(970)는 그 중 적어도 일부가 소정의 외부 단말 장치(미도시됨)나 서버(미도시됨)와 통신하는 프로그램 모듈일 수 있다. 이러한 프로그램 모듈은 운영 시스템, 응용 프로그램 모듈 또는 기타 프로그램 모듈의 형태로 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템 에 포함될 수 있고, 물리적으로는 여러 가지 공지의 기억 장치에 저장될 수 있다. 또한, 이러한 프로그램 모듈은 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템과 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.
먼저, 본 발명의 일 실시예에 따른 데이터 입출력 모듈(910)은 로그 구조 파일 시스템에 읽기/쓰기 요청이 수신되면, 파일에 대응되는 아이노드를 찾고 그에 대응되는 블록을 찾는 기능을 수행한다. 보다 구체적으로, 데이터 입출력 모듈(910)은 데이터 쓰기 요청이 발생한 경우, 파일의 해당 부분에 대해 기존 블록의 존재 여부와 관계 없이, 새 블록을 할당 받아 그 블록에 쓰기 데이터를 담는다(out-of-place update).
특히, 본 발명에 따른 데이터 입출력 모듈(910)은 후술할 공간 관리 모듈(920)에 블록의 할당 또는 해체 요청을 보낸다. 이때, 공간 관리 모듈(920)로 블록의 할당 요청을 보내는 경우에는 아이노드 번호 및 아이노드 블록 번호에 대한 정보를 포함하는 세그먼트 요약 정보를 함께 전달하고, 블록의 해제 요청을 보내는 경우에는 해제하고자 하는 블록의 번호를 전달한다.
도 10은 본 발명의 일 실시예에 따른 데이터 입출력 모듈(910)에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
먼저, 단계 S101에서는 아이노드 블록 번호를 확인할 수 있다. 단계 S102에서 확인 결과, 아이노드 블록 번호에 대응하는 블록이 존재하는 것으로 판단되면, 단계 S103에서는 해당 블록에 대한 해제를 요청할 수 있다. 이후, 단계 S104에서 세그먼트 요약 정보를 생성하고, 새 블록 할당을 요청한다.
이와 달리, 아이노드 블록 번호에 대응하는 블록이 존재하지 않는 것으로 판단되면, 바로 단계 S104에서 세그먼트 요약 정보를 생성하고, 새 블록 할당을 요청한다. 단계 S104가 수행된 이후, 단계 S105에서는 할당된 새 블록에 데이터를 기록할 수 있다.
다음으로, 본 발명에 따른 공간 관리 모듈(920)은 데이터 입출력 모듈(910)로부터 블록에 대한 할당 또는 해제 요청을 받는 경우, 이를 처리하는 기능을 수행할 수 있다.
먼저, 공간 관리 모듈(920)에 의해 블록이 할당되는 처리 과정을 구체적으로 살펴보도록 한다. 블록 할당 처리 과정은, 블록을 할당하는 단계와 할당 결과를 세그먼트 요약 정보와 세그먼트 사용 정보에 반영하는 단계를 포함할 수 있다.
도 11은 본 발명의 일 실시예에 따라 공간 관리 모듈에서 블록이 할당되는 처리 과정을 예시적으로 나타내는 도면이다.
도 11을 참조하면, 단계 S111에서 블록 할당을 요청하는 파일이 일반 파일인지 메타데이터 파일인지 여부를 판단할 수 있다. 공간 관리 모듈(920)은 데이터 입출력 모듈(910)로부터 아이노드 번호가 포함된 세그먼트 요약 정보를 함께 전달 받는 바, 아이노드 번호가 메타데이터 파일용 번호인 경우 메타데이터 파일인 것으로 판단하고, 그렇지 않은 경우 일반 파일인 것으로 판단할 수 있다.
일반 파일인 것으로 판단되면, 단계 S112에서 일반 파일용 로그 헤드를 선택한다. 여기서, 로그 헤드란 할당을 위해 현재 사용되고 있는 세그먼트를 의미할 수 있다. 즉, 새 로그 헤드를 선택함에 따라 빈 세그먼트 중 하나가 선택되고, 이 세그먼트가 로그 헤드가 된다.
이와 달리, 할당 요청하는 파일이 메타데이터 파일인 것으로 판단되면, 단계 S113에서 메타데이터 파일용 로그 헤드를 선택한다. 즉, 메타데이터 파일과 일반 파일의 블록이 한 세그먼트에 섞이는 것을 방지하기 위하여 메타데이터 파일 저장용 로그 헤드를 따로 사용할 수 있으며, 따라서 로그 헤드는 최소 2개 이상 구비될 수 있다.
일반 파일용 또는 메타데이터 파일용 로그 헤드가 선택되면, 단계 S114에서 로그 헤드인 세그먼트에서 블록을 할당한다. 보다 구체적으로, 매 할당 요청마다 로그 헤드인 세그먼트의 제일 첫 번째 블록부터 차례로 할당에 사용된다.
다음으로, 단계 S115에서 로그 헤드에 남은 블록 수를 판단할 수 있다. 블록 할당 처리 후 로그 헤드에 더 이상 사용 가능한 블록이 없는 경우, 단계 S116에서 새 로그 헤드를 선택하여 다음 할당 요청이 오기 전에 미리 세그먼트가 준비될 수 있도록 할 수 있다.
상술한 처리 과정에 따라 블록 할당에 대한 처리가 완료되면, 할당된 블록은 특정 파일에 소속된 것인바 이를 세그먼트 요약 정보에 반영하고, 블록이 속한 세그먼트에서 사용 가능한 블록의 수가 한 개 감소하였음을 세그먼트 사용 정보에 반영하여야 한다.
도 12는 본 발명의 일 실시예에 따라 공간 관리 모듈에서 수행되는 주요 처리 과정을 예시적으로 나타내는 도면이다.
도 12를 참조하면, 단계 S121에서 블록 할당을 요청하는 파일이 일반 파일인지 메타데이터 파일인지 여부를 판단할 수 있다.
블록 할당을 요청하는 파일이 일반 파일인 경우, 단계 S122에서 할당된 블록의 블록 번호를 참조로 하여, 메타데이터 파일의 세그먼트 요약 정보 영역에서 할당된 블록에 대한 항목을 검색한다. 이때, 블록 번호는 세그먼트 요약 정보 영역의 테이블 인덱스로 사용할 수 있다.
다음으로, 단계 S123에서는 검색된 항목을 블록 할당 요청 시 받은 내용으로 교체한다. 단계 S124에서, 할당된 블록이 속한 세그먼트 번호로 세그먼트 사용 정보 영역을 조회하여 해당 세그먼트에 대한 항목을 찾을 수 있다. 이때, 세그먼트 번호는 블록 번호와 하나의 세그먼트를 구성하는 블록의 수를 참조로 하여 획득할 수 있다.
다음으로, 단계 S125에서는, 단계 S124에서 찾은 해당 세그먼트 항목의 유효 블록 수 값을 하나 증가시킨다.
다만, 단계 S121에서 메타데이터 파일에 해당하는 것으로 판단된 경우, 단계 S126에서, 본 발명의 MSU 처리 모듈(930)로 블록이 할당되었음을 나타내는 정보를 전달하며, 이때 상기 정보에는 해당 블록 번호가 포함될 수 있다.
이하에서는 공간 관리 모듈에 의해 블록이 해제되는 처리 과정을 구체적으로 살펴보도록 한다.
도 13은 본 발명의 일 실시예에 따라 공간 관리 모듈에서 블록이 해제되는 처리 과정을 예시적으로 나타내는 도면이다.
도 13을 참조하면, 단계 S131는 블록 할당을 요청하는 파일이 일반 파일인지 메타데이터 파일인지 여부를 판단할 수 있다. 일반 파일에 대한 블록 해제인 것으로 판단되면, 단계 S132에서 해제 요청 받은 블록이 속한 세그먼트의 번호를 획득한다. 이때, 세그먼트의 번호는 해제 요청 받은 블록의 번호와 하나의 세그먼트 내에 포함된 블록의 수를 참조로 하여 획득할 수 있다. 세그먼트의 번호를 획득하면, 획득된 세그먼트의 번호에 대응되는 세그먼트 사용 정보 항목을 획득한다. 다음으로, 단계 S133에서 획득된 세그먼트 사용 정보 항목의 유효 블록 수 값을 하나 감소시킨다.
다만, 단계 S131에서 메타데이터 파일에 속한 블록에 대한 해제인 것으로 판단되면, 단계 S134에서, 본 발명의 MSU 처리 모듈(930)로 블록이 해제되었음을 나타내는 정보를 전달하며, 이때 상기 정보에는 해당 블록 번호가 포함될 수 있다.
다음으로, 본 발명의 일 실시예에 따른 MSU 처리 모듈(930)은 각 메타데이터 파일에 대응하는 세그먼트를 관리하는 기능을 수행한다. 보다 구체적으로, 소정의 세그먼트가 메타데이터 파일에 속하는 블록을 담기 시작하면 리스트에 추가하고, 담고 있던 메타데이터 파일의 블록들이 모두 해제되면 리스트에서 제거하는 기능을 수행할 수 있다.
이러한 기능을 수행하기 위하여, 메타데이터 파일에 속한 블록의 할당 또는 해제 처리 될 때마다 공간 관리 모듈(920)로부터 처리 정보를 획득할 수 있다.
상술한 바와 같이, 메타데이터 파일에 속하는 블록을 담은 세그먼트에는 MSU 항목이 존재하며, 블록 해제로 세그먼트에 속한 메타데이터 파일의 블록이 모두 없어진 경우에는 상기 세그먼트에서 MSU 항목 또한 제거된다.
본 명세서에서는, MSU 항목들을 소정의 저장 모듈에 기록하기 위하여 체크포인트에 모아 놓은 것을 'MSU 리스트'라고 하고, MSU 처리 모듈(930)이 MSU 리스트를 처리하기 위해 메모리 상에 모아 놓은 것을 '메모리 상 MSU 리스트'라고 한다. 본 발명에 따른 메모리 상 MSU 리스트를 처리하기 위하여 임의의 자료 구조가 사용될 수 있으며, 예를 들어 이중 원형 연결 목록(Circular Doubly Linked List)이 사용될 수 있다. 이하에서는 이중 원형 연결 목록이 사용된 것으로 상정하여 설명하도록 한다.
도 14는 본 발명의 일 실시예에 따라 MSU 처리 모듈에서 메모리 상 MSU 리스트를 구성하는 과정을 예시적으로 나타내는 도면이다.
먼저 단계 S141에서, 체크포인트에 저장된 MSU 항목의 수에 대응하는 값(count)을 확인한다.
다음으로, 단계 S142에서, 'N=0'으로 설정하고, 단계 S143에서 N 값과 MSU 항목의 수(count)를 비교하여, N의 값이 단계 S141에서 확인한 MSU 항목의 수(count) 미만이 될 때까지 단계 S144 내지 단계 S146이 반복하여 수행되도록 할 수 있다. 즉, 단계 S144 내지 단계 S146은, 단계 S141에서 확인한 MSU 항목의 수(count)만큼 반복 수행될 수 있다.
단계 S144에서는 N 번째 MSU 항목을 읽어 그에 대응하는 노드로 생성하고, 단계 S145에서는 생성된 노드를 메모리 상 MSU 리스트에 추가한다. 다음으로, 단계 S146에서 N 값을 하나 증가시킨 후, 다시 단계 S143부터 반복되도록 한다.
본 발명에 따른 MSU 처리 모듈(930)은, 공간 관리 모듈(920)로부터 전달 받은 정보를 참조로 하여 MSU 항목을 수정할 수 있다.
공간 관리 모듈(920)은 메타데이터 파일에 대한 블록 할당 또는 해제 요청을 수신하는 경우, 블록 번호와 할당 요청인지 해제 요청인지 여부를 나타내는 정보를 MSU 처리 모듈(930)로 전달한다.
도 15는 본 발명의 일 실시예에 따라 MSU 처리 모듈에서 메모리 상 MSU 항목을 수정하는 과정을 예시적으로 나타내는 도면이다.
단계 S151에서, 블록 번호(bno)를 하나의 세그먼트 내에 포함되는 블록의 개수(BL_PER_SEG)로 나누어 해당 블록이 몇 번째 세그먼트에 포함되는 것인지 그 세그먼트 번호(sno)를 획득한다. 이후, 단계 S152에서 상기 세그먼트 번호(sno)에 대응되는 MSU 항목이 메모리 상 MSU 리스트에 존재하는지 여부는 검색한다.
단계 S153에서 판단한 결과, 상기 세그먼트 번호(sno)에 대응되는 MSU 항목이 메모리 상 MSU 리스트에 존재하는 것으로 판단되면 단계 S154가 수행되도록 하고, 그렇지 않은 경우 단계 S155에서 새로운 MSU 항목을 생성하여 메모리 상 MSU 리스트에 추가되도록 한다. 이때, 새로운 MSU 항목의 세그먼트 번호 필드 값은 상기 세그먼트 번호(sno)로, 유효 블록 수 필드의 값은 0으로 설정하여 추가할 수 있다.
한편, 상기 세그먼트 번호(sno)에 대응되는 MSU 항목이 있는지 여부에 대한 판단은 메모리 상 MSU 리스트를 구성하는 자료 구조에 따라 달라질 수 있으며, 예를 들어 상술한 바와 같은 이중 원형 연결 목록을 사용하여 메모리 상 MSU 리스트가 구성된 경우, 먼저 노드 하나를 선택한다. 이후, 해당 노드의 세그먼트 번호 필드와 세그먼트 번호(sno)를 비교하여 일치하는지 확인한다. 일치하는 경우, 상기 세그먼트 번호(sno)에 대응되는 MSU 항목이 있는 것으로 판단하고, 아닌 경우 다음 항목으로 넘어가 동일한 동작을 반복한다. 이러한 동작은 가장 처음 확인한 노드로 돌아올 때까지 반복된다.
다음으로, 단계 S154에서는 블록의 할당 요청인지 해제 요청인지 여부를 판단한다. 판단 결과, 할당 요청인 경우 단계 S156에서 유효 블록 수(vblocks) 값을 하나 증가시키고, 해제 요청인 경우 단계 S157에서 유효 블록 수(vblocks) 값을 하나 감소시킨다.
이후, 단계 S158에서 유효 블록 수(vblocks)가 0인지 여부를 판단하고, 유효 블록 수(vblocks)가 0인 것으로 판단되면, 더 이상 해당 MSU 항목을 유지할 필요가 없으므로, 단계 S159에서 해당 MSU 항목을 메모리 상 MSU 리스트에서 제거한다.
본 발명에 따른 MSU 처리 모듈(930)은 체크포인트를 기록하는 시점에 메모리 상 MSU 리스트를 체크포인트에 포함되는 MSU 리스트로 만드는 기능을 수행할 수도 있다. 이로써, 블록 할당/해제에 의하여 계속 변경되는 MSU 정보가 소정의 저장 모듈에 기록되어 소실되지 않을 수 있다.
도 16은 본 발명의 일 실시예에 따라 MSU 처리 모듈에서 메모리 상 MSU 리스트를 저장하는 과정을 예시적으로 나타내는 도면이다.
단계 S161에서, 노드를 선택하고, 노드 번호(각 노드를 구분하기 위하여 각 노드에 부여되는 번호) N을 0으로 설정한다. 이후, 단계 S162에서는 선택된 노드가 처음 선택된 노드의 반복인지 여부를 확인한다. 처음 선택된 노드의 반복인 것으로 판단되면, 모든 노드에 대한 처리가 수행된 것으로 보고 단계 S166이 수행되도록 한다. 단계 S166에서는, 노드 번호 N을 체크포인트의 MSU 항목의 수 count로 기입하고 종료한다.
이와 달리, 처음 선택된 노드가 아닌 것으로 판단되면, 단계 S163에서 선택된 노드의 정보를 획득하고, 단계 S164에서 상기 노드의 정보를 체크포인트의 MSU 리스트로 복사한다. 이후, 단계 S165에서 다음 노드로 이동하고, N 의 값을 하나 증가시킨 후, 처음 선택된 노드로 다시 돌아올 때까지, 단계 S163 내지 단계 S165가 반복되도록 한다.
즉, 메모리 상 MSU 리스트를 구성하는 모든 항목을 하나씩 읽어서 그대로 체크포인트의 MSU 리스트로 만들고, 체크포인트의 MSU 리스트를 구성하는 항목들의 수를 체크포인트에 기록한다.
다음으로, 본 발명의 일 실시예에 따른 메타데이터 청소 모듈(940)은 메타데이터 파일에 의해 발생된, 유효 하지 않은 블록을 청소하는 기능을 수행한다.
본 명세서에서 사용 해제되어 필요 없게 된 블록을 유효 하지 않은 블록(obsolete block)이라 한다. 로그 구조 파일 시스템은 파일 내용에 대한 수정이 발생하면 기존 할당 블록에 기록(in-place update)하지 않고 새 블록을 할당하여 기록(out-of-place update)한다. 기존 블록은 상술한 블록 해제 처리 과정을 통해 사용 해제되며, 사용 해제되어 필요 없게 된 블록이 유효 하지 않은 블록이다. 이러한 유효하지 않은 블록의 발생은 하나의 세그먼트 안에 유효한 블록과 유효하지 않은 블록이 혼재되는 결과를 초래하며, 더 나아가 실제 유효한 데이터를 저장하는데 필요한 세그먼트의 수보다 더 많은 세그먼트가 사용 중 상태로 분류되는 결과를 만들 수 있다. 즉, 저장 공간에 빈 공간이 많더라도 사용 가능한 세그먼트의 수가 적어지는 문제점이 발생할 수 있다.
따라서, 이러한 문제점을 해결하기 위하여, 유효한 블록들을 모아서 빈 세그먼트로 옮기고, 기존 세그먼트에 대하여 사용 해제하는 과정이 필요하다. 이를 세그먼트 청소(segment cleaning)라 한다. 세그먼트 청소 처리 과정은 세그먼트 요약 정보 및 세그먼트 사용 정보를 참조로 하여 수행될 수 있다.
한편, 본 발명에 의할 경우, 일반 데이터뿐만 아니라 메타데이터 또한 파일에 담겨 처리되는 바, 메타데이터 파일 역시 유효하지 않은 블록을 발생시키게 된다. 따라서, 메타데이터 파일에 대해서도 상술한 청소 작업이 필요하다.
본 발명에 따른 메타데이터 청소 모듈(940)은 소정의 조건을 만족하는 경우 메타데이터 파일에 대한 청소 동작을 수행할 수 있다. 보다 구체적으로, 메모리 상 MSU 리스트를 구성하는 MSU 항목의 수는 M이고, 메타데이터 파일 안의 내용이 전부 차있다고 가정할 경우 이를 저장하는데 필요한 최소한의 세그먼트 수 N은 [(메타데이터 파일의 크기/세그먼트 크기) + 1]이 될 때, 조건 M > KN을 만족하면 청소 동작을 수행할 수 있다(K는 임의의 상수).
또는, 메타데이터 청소 모듈(940)은 사용 가능한 공간이 협소하여 저장 공간 확보가 필요한 경우에도 청소 동작을 수행할 수 있다.
메타데이터 청소 모듈은 청소 동작이 필요한 경우, 메타데이터 파일의 내용을 그대로 유지하면서 처음부터 끝까지 덮어쓰기가 수행되도록 한다. 이 때, 로그 구조 파일시스템의 동작 특성 상 메타데이터 파일의 내용은 모두 새롭게 할당된 세그먼트들로 옮겨가고, 기존의 세그먼트들에 대한 사용은 해제된다. 따라서, MSU 리스트를 구성하는 MSU 항목들 또한 교체되고 MSU 리스트의 길이는 줄어들게 된다.
다음으로, 본 발명에 따른 저장 모듈(950)에는, 상술한 일반 데이터 및 메타데이터뿐만 아니라, 아이노드, 세그먼트 요약 정보, 세그먼트 사용 정보, 메타데이터 세그먼트 사용 정보 등이 저장될 수 있다.
다음으로, 본 발명의 일 실시예에 따른 통신 모듈(960)은 데이터 입출력 모듈(910), 공간 관리 모듈(920), MSU 처리 모듈(930), 메타데이터 청소 모듈(940) 및 저장 모듈(950)로부터의/로의 데이터 송수신이 가능하도록 하는 기능을 수행할 수 있다.
마지막으로, 본 발명의 일 실시예에 따른 제어 모듈(970)은 데이터 입출력 모듈(910), 공간 관리 모듈(920), MSU 처리 모듈(930), 메타데이터 청소 모듈(940), 저장 모듈(950) 및 통신부(960) 간의 데이터의 흐름을 제어하는 기능을 수행할 수 있다. 즉, 본 발명에 따른 제어 모듈(970)은 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템(900)의 외부로부터의/로의 데이터 흐름 또는 로그 구조 파일 시스템에서 메타데이터를 저장하기 위한 시스템(900)의 각 구성요소 간의 데이터 흐름을 제어함으로써, 데이터 입출력 모듈(910), 공간 관리 모듈(920), MSU 처리 모듈(930), 메타데이터 청소 모듈(940), 저장 모듈(950) 및 통신부(960)에서 각각 고유 기능을 수행하도록 제어할 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
910: 데이터 입출력 모듈
920: 공간 관리 모듈
930: MSU 처리 모듈
940: 메타데이터 청소 모듈
950: 저장 모듈
960: 통신 모듈
970: 제어 모듈
920: 공간 관리 모듈
930: MSU 처리 모듈
940: 메타데이터 청소 모듈
950: 저장 모듈
960: 통신 모듈
970: 제어 모듈
Claims (14)
- 로그 구조 파일 시스템의 메타데이터를 저장하는 방법에 있어서,
블록 번호와 블록의 할당 요청인지 해제 요청인지 여부를 나타내는 정보를 포함하는 블록 관리 요청 신호를 수신하는 단계;
상기 블록 번호를 참조로 하여 상기 블록이 속하는 세그먼트 번호를 산출하는 단계;
산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목-상기 메타데이터 세그먼트 사용 정보(MSU)는 세그먼트 번호와 유효 블록 수에 대한 정보를 포함함-을 획득하는 단계; 및
상기 블록 관리 요청 신호가 할당 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 증가하고, 상기 블록 관리 요청 신호가 해제 요청에 해당하는 경우, 상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 감소시키는 단계;를 포함하는 방법. - 제1항에 있어서,
상기 세그먼트 번호는, 상기 블록 번호를 하나의 세그먼트 내에 포함되는 블록의 개수로 나눈 값으로부터 산출되는 것을 특징으로 하는 방법. - 제1항에 있어서,
메타데이터 세그먼트 사용 정보(MSU) 리스트를 검색하여 상기 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목을 획득하는 것을 특징으로 하는 방법. - 제3항에 있어서,
상기 메타데이터 세그먼트 사용 정보(MSU) 리스트에 상기 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목이 존재하지 않는 경우, 상기 산출된 세그먼트 번호에 대응하는 메타데이터 세그먼트 사용 정보(MSU) 항목을 새로 생성하여 상기 리스트에 추가하는 것을 특징으로 하는 방법. - 제4항에 있어서,
상기 새로 생성된 메타데이터 세그먼트 사용 정보(MSU) 항목의 세그먼트 번호는 상기 산출된 세그먼트 번호로 설정되고, 유효 블록 수 값은 0으로 설정되는 것을 특징으로 하는 방법. - 제3항에 있어서,
상기 메타데이터 세그먼트 사용 정보(MSU) 항목의 유효 블록 수 값을 하나 증가시키거나 감소시킨 후, 상기 유효 블록 수 값이 0인 것으로 판단되면, 메타데이터 세그먼트 사용 정보(MSU) 리스트로부터 상기 메타데이터 세그먼트 사용 정보(MSU) 항목을 제거하는 단계;를 더 포함하는 방법. - 제3항에 있어서,
상기 메타데이터 세그먼트 사용 정보(MSU) 리스트를 구성하는 메타데이터 세그먼트 사용 정보 항목의 개수를 M이라 하고, 소정의 메타데이터 파일을 저장하기 위하여 필요한 세그먼트의 개수를 N이라고 할 때,
상기 M이 상기 N의 K 배수-K는 기설정된 계수-보다 큰 경우 블록 청소를 수행하는 단계;를 더 포함하는 방법. - 로그 구조 파일 시스템의 메타데이터를 저장하기 위한 시스템에 있어서,
소정의 데이터 또는 메타데이터 쓰기 요청이 수신되면, 블록 할당 또는 해제 요청을 전달하는 데이터 입출력 모듈;
상기 데이터 입출력 모듈로부터 블록 할당 또는 해제 요청을 수신하면, 데이터 쓰기 요청에 의한 것인지 메타데이터 쓰기 요청에 의한 것인지 판단한 후, 블록 할당 또는 해제 요청을 처리하는 공간 관리 모듈; 및
상기 공간 관리 모듈에서 메타데이터 쓰기 요청에 대한 블록 할당 또는 해제 처리가 될 때마다, 메타데이터 파일에 대응되는 세그먼트 정보를 업데이트 하는 메타데이터 세그먼트 사용 정보 처리 모듈;을 포함하고,
상기 데이터 입출력 모듈은, 상기 공간 관리 모듈로 블록 할당 요청을 전달하는 경우 아이노드 번호 및 아이노드 블록 번호를 포함하는 세그먼트 요약 정보 항목을 함께 전달하며, 블록 해제 요청을 전달하는 경우 해제하고자 하는 블록의 번호를 함께 전달하는 것을 특징으로 하는 시스템. - 삭제
- 제8항에 있어서,
상기 공간 관리 모듈은, 상기 데이터 입출력 모듈로부터 전달 받은 세그먼트 요약 정보의 아이노드 번호를 참조로 하여, 블록 할당 또는 해제 요청이 데이터 쓰기 요청에 의한 것인지 메타데이터 쓰기 요청에 의한 것인지 판단하는 것을 특징으로 하는 시스템. - 제10항에 있어서,
상기 공간 관리 모듈은, 블록 할당 처리 시 상기 아이노드 번호가 데이터 파일용 번호인 경우 일반 파일용 세그먼트 내의 블록을 할당하고,
상기 아이노드 번호가 메타데이터 파일용 번호인 경우 메타데이터 파일용 세그먼트 내의 블록을 할당하는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 공간 관리 모듈은, 일반 파일용 세그먼트 내의 블록을 할당한 경우 해당 세그먼트의 유효 블록 수 값을 하나 증가시키고,
메타데이터 파일용 세그먼트 내의 블록을 할당한 경우 할당된 블록 번호와, 상기 메타데이터 파일용 세그먼트 내의 블록이 할당되었음을 나타내는 정보를 상기 메타데이터 세그먼트 사용 정보 처리 모듈로 전달하는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 공간 관리 모듈은, 블록 해제 처리 시 상기 아이노드 번호가 데이터 파일용 번호인 경우 해제하고자 하는 블록이 속한 세그먼트의 유효 블록 수 값을 하나 감소시키고,
상기 아이노드 번호가 메타데이터 파일용 번호인 경우 해제된 블록 번호와, 상기 메타데이터 파일용 세그먼트 내의 블록이 해제되었음을 나타내는 정보를 상기 메타데이터 세그먼트 사용 정보 처리 모듈로 전달하는 것을 특징으로 하는 시스템. - 제1항 내지 제7항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160025336A KR102545067B1 (ko) | 2016-03-02 | 2016-03-02 | 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 |
US15/252,675 US10083181B2 (en) | 2016-03-02 | 2016-08-31 | Method and system for storing metadata of log-structured file system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160025336A KR102545067B1 (ko) | 2016-03-02 | 2016-03-02 | 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170102772A KR20170102772A (ko) | 2017-09-12 |
KR102545067B1 true KR102545067B1 (ko) | 2023-06-20 |
Family
ID=59722208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160025336A KR102545067B1 (ko) | 2016-03-02 | 2016-03-02 | 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10083181B2 (ko) |
KR (1) | KR102545067B1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10256981B2 (en) * | 2016-09-27 | 2019-04-09 | International Business Machines Corporation | Secure logging for host security module |
CN108733311B (zh) | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
WO2020000492A1 (zh) * | 2018-06-30 | 2020-01-02 | 华为技术有限公司 | 一种存储碎片管理方法及终端 |
US11841825B2 (en) | 2021-11-30 | 2023-12-12 | Dell Products L.P. | Inode clash resolution during file system migration |
US11971848B2 (en) * | 2021-11-30 | 2024-04-30 | Dell Products L.P. | Efficient transparent switchover of file system consolidation migrations |
US12007855B2 (en) | 2021-12-29 | 2024-06-11 | Dell Products L.P. | Efficient transparent rollback of file system consolidation migrations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003022206A (ja) * | 2001-07-06 | 2003-01-24 | Fujitsu Ltd | ファイル管理プログラムおよびファイル管理装置 |
US20050071537A1 (en) * | 2003-09-26 | 2005-03-31 | Hitachi Global Storage Technologies | Log-structured file system for disk drives with shingled writing |
JP2007517290A (ja) | 2003-12-19 | 2007-06-28 | ネットワーク・アプライアンス・インコーポレイテッド | 非常に短い更新インターバルで同期データ複製が可能なシステム及び方法 |
US20110022778A1 (en) | 2009-07-24 | 2011-01-27 | Lsi Corporation | Garbage Collection for Solid State Disks |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100825720B1 (ko) | 2005-12-08 | 2008-04-29 | 한국전자통신연구원 | 파일 시스템에서 파일 관리 방법 및 이를 위한 메타데이터서버 |
KR101447188B1 (ko) * | 2007-07-31 | 2014-10-08 | 삼성전자주식회사 | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 |
KR101867282B1 (ko) * | 2011-11-07 | 2018-06-18 | 삼성전자주식회사 | 비휘발성 메모리 장치의 가비지 컬렉션 방법 |
KR102050725B1 (ko) | 2012-09-28 | 2019-12-02 | 삼성전자 주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 |
KR20140082181A (ko) * | 2012-12-24 | 2014-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
KR102033323B1 (ko) | 2014-03-05 | 2019-10-17 | 한국전자통신연구원 | 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 |
-
2016
- 2016-03-02 KR KR1020160025336A patent/KR102545067B1/ko active IP Right Grant
- 2016-08-31 US US15/252,675 patent/US10083181B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003022206A (ja) * | 2001-07-06 | 2003-01-24 | Fujitsu Ltd | ファイル管理プログラムおよびファイル管理装置 |
US20050071537A1 (en) * | 2003-09-26 | 2005-03-31 | Hitachi Global Storage Technologies | Log-structured file system for disk drives with shingled writing |
US20110075292A1 (en) | 2003-09-26 | 2011-03-31 | New Richard M H | Log-structure file system for disk drives with shingled writing |
JP2007517290A (ja) | 2003-12-19 | 2007-06-28 | ネットワーク・アプライアンス・インコーポレイテッド | 非常に短い更新インターバルで同期データ複製が可能なシステム及び方法 |
US20110022778A1 (en) | 2009-07-24 | 2011-01-27 | Lsi Corporation | Garbage Collection for Solid State Disks |
Also Published As
Publication number | Publication date |
---|---|
US20170255636A1 (en) | 2017-09-07 |
US10083181B2 (en) | 2018-09-25 |
KR20170102772A (ko) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110678836B (zh) | 用于键值存储的持久性存储器 | |
US10713161B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR102545067B1 (ko) | 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체 | |
US10324834B2 (en) | Storage device managing multi-namespace and method of operating the storage device | |
US10402091B1 (en) | Managing data in log-structured storage systems | |
EP2439645B1 (en) | Method and apparatus for storing data in a multi-level cell flash memory device | |
US9563375B2 (en) | Method for storing metadata of log-structured file system for flash memory | |
CN106662985B (zh) | 主机管理的非易失性存储器 | |
KR20090046567A (ko) | 반도체 디스크 및 그것의 동작 방법 | |
US10922276B2 (en) | Online file system check | |
US10620844B2 (en) | System and method to read cache data on hybrid aggregates based on physical context of the data | |
US10120583B2 (en) | Performance penalty avoidance for solid state drive | |
US11340900B2 (en) | Flushing dirty pages from page buffers indicated by non-sequential page descriptors | |
KR101834082B1 (ko) | 다중 ssd 시스템 관리 장치 및 방법 | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 | |
US11455255B1 (en) | Read performance of log-structured file system (LFS)-based storage systems that support copy-on-write (COW) snapshotting | |
JP6552701B2 (ja) | メモリシステムおよび制御方法 | |
US20170322736A1 (en) | Reorder active pages to improve swap performance |
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 | ||
GRNT | Written decision to grant |