KR20220088274A - Computing System including Per-core journal structure - Google Patents

Computing System including Per-core journal structure Download PDF

Info

Publication number
KR20220088274A
KR20220088274A KR1020210063617A KR20210063617A KR20220088274A KR 20220088274 A KR20220088274 A KR 20220088274A KR 1020210063617 A KR1020210063617 A KR 1020210063617A KR 20210063617 A KR20210063617 A KR 20210063617A KR 20220088274 A KR20220088274 A KR 20220088274A
Authority
KR
South Korea
Prior art keywords
core
transaction
journal
block
commit
Prior art date
Application number
KR1020210063617A
Other languages
Korean (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 KR20220088274A publication Critical patent/KR20220088274A/en

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/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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/1865Transactional file systems

Landscapes

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

Abstract

본 개시의 기술적 사상의 일측면에 따른 복수의 코어를 구비한 컴퓨팅 시스템은, 복수의 코어 별로 할당된 저널 스택을 포함하도록 구성된 메모리, 및 복수의 코어 별로 할당된 저널 영역을 포함하도록 구성된 스토리지 장치를 포함하고, 복수의 코어 중 제1 코어는 제1 코어에 의해 변경된 블록을 트랜잭션 단위로 병합하여 상기 제1 코어에 대응하는 저널 스택에 저장하고, 상기 제1 코어에 대응하는 저널 영역에 상기 트랜잭션 단위로 커밋(commit)을 수행하는 것을 특징으로 한다.A computing system having a plurality of cores according to an aspect of the technical concept of the present disclosure includes a memory configured to include a journal stack allocated to each of the plurality of cores, and a storage device configured to include a journal area allocated to each of the plurality of cores. a first core among the plurality of cores merges the blocks changed by the first core in units of transactions and stores them in a journal stack corresponding to the first core, and stores the blocks in a journal stack corresponding to the first core in a journal area corresponding to the first core It is characterized by performing a commit with

Figure P1020210063617
Figure P1020210063617

Description

코어별 저널 구조를 포함하는 컴퓨팅 시스템{Computing System including Per-core journal structure}Computing System including Per-core journal structure

본 개시의 기술적 사상은 컴퓨팅 시스템에 관한 것으로, 상세하게는 코어별 저널 구조를 포함하는 컴퓨팅 시스템에 관한 것이다.The technical idea of the present disclosure relates to a computing system, and more particularly, to a computing system including a journal structure for each core.

컴퓨팅 시스템의 동작 중에 비정상적인 전원 문제 또는 시스템 충돌(crash) 등이 발생하는 경우, 버퍼 메모리에 저장된 데이터가 손실되고 파일 시스템의 일관성(consistency)이 깨지는 문제가 발생할 수 있다. 컴퓨팅 시스템에 포함되는 파일 시스템은 이러한 상황에 대비하여 저널링(journaling) 계층을 포함할 수 있다. 최근, 컴퓨팅 시스템에 탑재되는 코어의 수가 증가하는 반면, 저널링 계층은 스토리지 장치 내의 하나의 저널 영역에 엑세스함으로 인해 확장성(scalability)이 제한되는 문제가 있다.When an abnormal power problem or a system crash occurs during the operation of the computing system, data stored in the buffer memory is lost and the consistency of the file system is broken. A file system included in the computing system may include a journaling layer in preparation for such a situation. Recently, while the number of cores mounted in a computing system increases, the journaling layer has a problem in that scalability is limited due to accessing one journal area in the storage device.

본 개시의 기술적 사상이 해결하려는 과제는 파일 시스템의 일관성을 보장하는 코어별 저널 구조, 및 이를 포함하는 컴퓨팅 시스템을 제공하는데 있다.An object of the technical spirit of the present disclosure is to provide a journal structure for each core that guarantees file system consistency, and a computing system including the same.

상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 복수의 코어를 구비한 컴퓨팅 시스템은, 복수의 코어 별로 할당된 저널 스택을 포함하도록 구성된 메모리, 및 복수의 코어 별로 할당된 저널 영역을 포함하도록 구성된 스토리지 장치를 포함하고, 복수의 코어 중 제1 코어는 제1 코어에 의해 변경된 블록을 트랜잭션 단위로 병합하여 상기 제1 코어에 대응하는 저널 스택에 저장하고, 상기 제1 코어에 대응하는 저널 영역에 상기 트랜잭션 단위로 커밋(commit)을 수행하는 것을 특징으로 한다.In order to achieve the above object, a computing system having a plurality of cores according to an aspect of the technical idea of the present disclosure includes a memory configured to include a journal stack allocated to each of the plurality of cores, and a memory allocated to each of the plurality of cores. a storage device configured to include a journal area, wherein a first core among a plurality of cores merges a block changed by the first core in a transaction unit and stores the merged block in a journal stack corresponding to the first core, and the first core It is characterized in that the commit is performed in the journal area corresponding to the transaction unit.

본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 각 코어의 커널 스레드가 각 코어별로 할당된 저널 영역에 독립적으로 커밋을 수행함으로써, 저널 계층의 확장성을 향상시킬 수 있다. 또한, 각 코어의 커널 스레드가 병렬적으로 파일 시스템의 변경 사항을 저널 영역에 기록함으로써 스토리지 입출력(I/O) 성능 및 연산 성능(throughput)이 개선될 수 있다.The computing system according to the exemplary embodiment of the present disclosure may improve the scalability of the journal layer by allowing the kernel thread of each core to independently commit to the journal area allocated to each core. In addition, storage input/output (I/O) performance and arithmetic throughput may be improved because the kernel thread of each core writes file system changes to the journal area in parallel.

본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 복수의 코어를 구비한 컴퓨팅 시스템에서 작은 오버헤드(overhead)로 파일 시스템의 일관성을 보장하는 방법을 제공할 수 있다.A computing system according to an exemplary embodiment of the present disclosure may provide a method for ensuring file system consistency with a small overhead in a computing system having a plurality of cores.

도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타낸다.
도 2는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타낸다.
도 3은 본 개시의 예시적 실시예에 따른 제0 코어에 대응하는 제1 저널 스택을 나타낸다.
도 4a는 본 개시의 예시적 실시예에 복수의 코어에서의 프로세싱 순서를 나타낸다. 도 4b는 본 개시의 예시적 실시예에 따른 도 4a의 복수의 코어에 대응하는 저널 스택을 나타낸다.
도 5는 본 개시의 예시적 실시예에 따른 도 4b의 저널 스택에 포함된 트랜잭션 리스트를 나타낸다.
도 6은 본 개시의 예시적 실시예에 따른 스토리지 장치에 저장된 저널 영역을 나타낸다.
도 7은 본 개시의 예시적 실시예에 따른 시스템 충돌 시 데이터 복구 방법을 나타낸다.
도 8은 본 개시의 예시적 실시예에 따른 체크포인트 방법을 나타낸다.
1 illustrates a computing system according to an exemplary embodiment of the present disclosure.
2 illustrates a computing system according to an exemplary embodiment of the present disclosure.
3 illustrates a first journal stack corresponding to a zeroth core according to an exemplary embodiment of the present disclosure.
4A illustrates a processing sequence in a plurality of cores in an exemplary embodiment of the present disclosure. 4B illustrates a journal stack corresponding to the plurality of cores of FIG. 4A according to an exemplary embodiment of the present disclosure.
5 shows a list of transactions included in the journal stack of FIG. 4B according to an exemplary embodiment of the present disclosure.
6 illustrates a journal area stored in a storage device according to an exemplary embodiment of the present disclosure.
7 illustrates a data recovery method in case of a system crash according to an exemplary embodiment of the present disclosure.
8 illustrates a checkpoint method according to an exemplary embodiment of the present disclosure.

이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.Hereinafter, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings.

도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(10)을 나타낸다. 1 illustrates a computing system 10 according to an exemplary embodiment of the present disclosure.

도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(100), 파일 시스템(140) 및 스토리지 장치(160)를 포함할 수 있다. 파일 시스템(140)은 호스트(100)와 하드웨어(예컨대, 스토리지 장치(160))사이의 인터페이스를 제공할 수 있다. Referring to FIG. 1 , a computing system 10 may include a host 100 , a file system 140 , and a storage device 160 . The file system 140 may provide an interface between the host 100 and hardware (eg, the storage device 160 ).

예를 들어, 컴퓨팅 시스템(10)은 다양한 종류의 전자 장치에 해당될 수 있다. 컴퓨팅 시스템(10)은 모바일 장치, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 사물 인터넷 (internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)에 해당할 수 있다. For example, the computing system 10 may correspond to various types of electronic devices. The computing system 10 is a mobile device, a laptop computer, a mobile phone, a smartphone, a tablet PC, a personal digital assistant (PDA), an enterprise digital assistant (EDA), a digital still camera, a digital video camera. camera), PMP (portable multimedia player), PND (personal navigation device or portable navigation device), handheld game console, mobile internet device (MID), wearable computer, internet of things (IoT) device, internet of everything (IoE) device, or e-book.

호스트(100)는 프로세서(102) 및 메모리(104)를 포함할 수 있다. 프로세서(102)가 프로세스에 할당하는 메모리(104) 공간은 유저 공간 및 커널 공간으로 구분될 수 있다. 유저 공간은 사용자 어플리케이션(user application)이 실행되는 영역이며, 커널 공간은 커널 사용을 위해 제한적으로 보장되는 영역일 수 있다. 사용자 어플리케이션은 운영체제에 스토리지 장치(160)에 데이터를 기입하거나 스토리지 장치(160)로부터 데이터를 독출하는 요청을 보낼 수 있다. 운영체제는 사용자 어플리케이션의 요청에 응답하여, 시스템 콜(system call)을 이용하여 커널 공간으로 전환하고 스토리지 장치(160)에 엑세스할 수 있다.The host 100 may include a processor 102 and a memory 104 . The memory 104 space allocated by the processor 102 to a process may be divided into a user space and a kernel space. The user space is an area in which a user application is executed, and the kernel space may be an area that is limitedly guaranteed for kernel use. The user application may send a request to the operating system to write data to the storage device 160 or to read data from the storage device 160 . In response to a request of a user application, the operating system may switch to the kernel space using a system call and access the storage device 160 .

운영체제는 스토리지 장치(160)에 저장되는 파일 관리을 위한 소프트웨어 모듈인 파일 시스템(140)을 더 포함할 수 있다. 파일 시스템(140)은 스토리지 장치(160)의 저장 공간을 논리적인 블록(block)의 집합으로 구분할 수 있고, 하나의 블록은 임의의 크기를 가질 수 있다. 파일 시스템(140)은 블록 단위로 스토리지 장치(160)에 데이터를 기입하거나 데이터를 독출할 수 있다. The operating system may further include a file system 140 that is a software module for managing files stored in the storage device 160 . The file system 140 may divide the storage space of the storage device 160 into a set of logical blocks, and one block may have an arbitrary size. The file system 140 may write data to or read data from the storage device 160 in block units.

예를 들어, 파일 시스템(140)은 호스트(100)의 운영 체제에 따라 다양한 형태를 가질 수 있다. 예를 들어, 파일 시스템(140)은 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser5, ISO 9660, Gnome VFS, BFS, 또는 WinFS 등을 포함할 수 있다. For example, the file system 140 may have various forms according to the operating system of the host 100 . For example, the file system 140 includes a File Allocation Table (FAT), FAT32, NT File System (NTFS), Hierarchical File System (HFS), Journaled File System2 (JSF2), XFS, and On-Disk Structure (ODS-5). -5), UDF, ZFS, UFS (Unix File System), ext2, ext3, ext4, ReiserFS, Reiser5, ISO 9660, Gnome VFS, BFS, or WinFS.

일부 실시예들에서, 파일 시스템(140)은 저널링 계층(142)을 포함할 수 있다. 저널링 계층(142)은 파일 시스템에서 데이터의 일관성 유지를 위해 사용되는 계층을 나타낼 수 있다. 예를 들어, 버퍼 메모리가 휘발성 메모리로 구현되는 경우, 시스템 충돌 시 버퍼 메모리에 저장된 데이터가 데이터 영역(164)에 기입되기 이전에 손실될 수 있다. 전원이 다시 인가된 경우 파일 시스템(140)에서 메타 데이터(metadata)와 실제 데이터가 일치하지 않고, 파일 시스템(140)의 일관성(consistency)이 깨질 수 있다.In some embodiments, file system 140 may include a journaling layer 142 . The journaling layer 142 may represent a layer used to maintain data consistency in a file system. For example, when the buffer memory is implemented as a volatile memory, data stored in the buffer memory may be lost before being written into the data area 164 when a system crashes. When power is applied again, metadata and actual data in the file system 140 do not match, and consistency of the file system 140 may be broken.

저널링 계층(142)은 커널 스레드를 실행함으로써 파일 시스템(140)의 일관성을 보장할 수 있다. 스토리지 장치(160)의 저장 공간은 저널 영역(162) 및 데이터 영역(164)으로 구분될 수 있다. 커널 스레드는 파일 시스템(140)의 변경 사항을 스토리지 장치(160)의 데이터 영역(164)에 기록하기 이전에 저널 영역(162)에 기록하고, 시스템 충돌이 발생하는 경우 저널 영역(162)에 기록된 변경 사항을 읽어 데이터 영역(164)에 기록함으로써 파일 시스템(140)의 일관성을 보장할 수 있다.The journaling layer 142 may ensure the consistency of the file system 140 by executing a kernel thread. The storage space of the storage device 160 may be divided into a journal area 162 and a data area 164 . The kernel thread records changes in the file system 140 to the journal area 162 before writing them to the data area 164 of the storage device 160, and writes them to the journal area 162 when a system crash occurs. The consistency of the file system 140 can be guaranteed by reading the changed changes and writing them to the data area 164 .

도 1에 도시되어 있지 않으나, 컴퓨팅 시스템(10)은 가상 파일 시스템(Virtual File System; VFS)을 더 포함할 수 있다. 가상 파일 시스템은 파일 시스템(140)의 상위 계층으로서 추상화 계층일 수 있다. 가상 파일 시스템은 호스트(100)가 다양한 파일 시스템(140)에 일관되게 엑세스 할 수 있도록 표준화된 시스템 콜을 지원할 수 있다. Although not shown in FIG. 1 , the computing system 10 may further include a Virtual File System (VFS). The virtual file system may be an abstraction layer as an upper layer of the file system 140 . The virtual file system may support a standardized system call so that the host 100 can consistently access various file systems 140 .

스토리지 장치(160)는 저널 영역(162) 및 데이터 영역(164)로 구분될 수 있다. 파일 시스템의 변경 사항은 저널 영역(162)에 트랜잭션(transaction) 단위로 기록됨으로써 원자성(Atomicity) 및 지속성이 보장될 수 있다. 저널 영역(162)은 커밋 블록을 포함할 수 있고, 커밋 블록은 해당 트랜잭션이 저널 영역(162)에 유효하게 기입되었음을 나타낼 수 있다. The storage device 160 may be divided into a journal area 162 and a data area 164 . Changes in the file system are recorded in the journal area 162 in transaction units, so that atomicity and persistence can be guaranteed. The journal area 162 may include a commit block, and the commit block may indicate that a corresponding transaction has been effectively written to the journal area 162 .

예를 들어, 스토리지 장치(160)는 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory; RRAM), 상변화 메모리(Phase-Change Random Access Memory; PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory; MRAM), 강유전체 메모리(Ferroelectric Random Access Memory; FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory; STT-RAM)로 구현될 수 있다.For example, the storage device 160 may include a NAND flash memory (NAND Flash Memory), a vertical NAND flash memory (VNAND), a NOR flash memory (NOR Flash Memory), and a resistive random access memory (RRAM). , Phase-Change Random Access Memory (PRAM), Magnetoresistive Random Access Memory (MRAM), Ferroelectric Random Access Memory (FRAM), Spin Transfer Torque Random Access Memory ; STT-RAM).

도 2는 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(20)을 나타낸다. 도 2는 도 1을 참조하여 후술될 것이다.2 illustrates a computing system 20 according to an exemplary embodiment of the present disclosure. FIG. 2 will be described later with reference to FIG. 1 .

도 2를 참조하면, 컴퓨팅 시스템(20)은 복수의 코어(CORE_0 내지 CORE_N)를 구비하고, 복수의 코어(CORE_0 내지 CORE_N)마다 할당된 저널 스택(120_0 내지 120_N)을 포함할 수 있다. 파일 시스템(140)은 호스트(100)에 포함된 메모리(104)에서 특정 주소 공간을 저널 스택(120_0 내지 120_N)으로 할당할 수 있다. 스토리지 장치(160)는 복수의 코어(CORE_0 내지 CORE_N)마다 할당된 저널 영역(162_0 내지 162_N)을 포함할 수 있다. 스토리지 장치(160)는 데이터 영역(미도시)을 더 포함할 수 있다.Referring to FIG. 2 , the computing system 20 may include a plurality of cores CORE_0 to CORE_N, and journal stacks 120_0 to 120_N allocated to each of the plurality of cores CORE_0 to CORE_N. The file system 140 may allocate a specific address space to the journal stacks 120_0 to 120_N in the memory 104 included in the host 100 . The storage device 160 may include journal areas 162_0 to 162_N allocated to each of the plurality of cores CORE_0 to CORE_N. The storage device 160 may further include a data area (not shown).

일부 실시예들에서, 제0 코어(CORE_0)는 스토리지 장치(160)에 포함된 적어도 하나의 블록을 변경할 수 있고, 파일 시스템(140)이 변경될 수 있다. 제0 코어(CORE_0)에 의해 변경된 블록은 트랜잭션(TX) 단위로 제1 저널 스택(120_0)에 저장될 수 있다. 제0 코어(CORE_0)는 제1 저널 스택(120_0)에 저장된 트랜잭션(TX)을 데이터 영역(164)에 기록하기 이전에, 제1 저널 영역(162_0)에 기록할 수 있다. 이러한 기록 과정은 커밋(Commit)으로 지칭될 수 있다. In some embodiments, the zeroth core CORE_0 may change at least one block included in the storage device 160 , and the file system 140 may change. The block changed by the 0th core CORE_0 may be stored in the first journal stack 120_0 in units of a transaction TX. The zeroth core CORE_0 may write the transaction TX stored in the first journal stack 120_0 to the first journal area 162_0 before writing it to the data area 164 . This recording process may be referred to as a commit.

이후, 제0 코어(CORE_0)는 컴퓨팅 시스템(20)에서 정의된 일정 시구간마다 또는 제1 저널 영역(162_0)의 용량이 부족한 경우, 커밋이 완료된 트랜잭션들을 데이터 영역(164)에 기록할 수 있다. 이러한 기록 과정은 체크포인트(checkpoint)로 지칭될 수 있다. 파일 시스템(140)의 커밋 및 체크포인트는 커널 스레드에 의해 수행될 수 있다. 예를 들어, 제0 코어(CORE_0)는 제1 커널 스레드(THREAD_0)를 실행함으로써 파일 시스템의 변경 사항을 기록할 수 있다.Thereafter, the zeroth core CORE_0 may record committed transactions in the data area 164 every predetermined time period defined in the computing system 20 or when the capacity of the first journal area 162_0 is insufficient. . This recording process may be referred to as a checkpoint. Commits and checkpoints of the file system 140 may be performed by a kernel thread. For example, the zeroth core CORE_0 may record changes in the file system by executing the first kernel thread THREAD_0.

전술한 제0 코어(CORE_0)의 제1 저널 스택(120_0) 및 제1 저널 영역(162_0)은 제1 코어(CORE_1) 내지 제N 코어(CORE_N)에 적용될 수 있다. 복수의 코어(CORE_0 내지 CORE_N) 각각은 서로 독립된 커널 스레드(THREAD_0 내지 THREAD_N)를 실행함으로써, 파일 시스템(140)의 변경 사항을 각 코어 별로 커밋할 수 있다. The first journal stack 120_0 and the first journal area 162_0 of the 0th core CORE_0 described above may be applied to the first core CORE_1 to the Nth core CORE_N. Each of the plurality of cores CORE_0 to CORE_N executes kernel threads THREAD_0 to THREAD_N independent from each other, so that changes in the file system 140 may be committed for each core.

본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 각 코어의 커널 스레드가 각 코어별로 할당된 저널 영역에 독립적으로 커밋을 수행함으로써, 저널 계층의 확장성을 향상시킬 수 있다. 또한, 각 코어의 커널 스레드가 병렬적으로 파일 시스템의 변경 사항을 저널 영역에 기록함으로써 스토리지 입출력(I/O) 성능 및 연산 성능(throughput)이 개선될 수 있다.The computing system according to the exemplary embodiment of the present disclosure may improve the scalability of the journal layer by allowing the kernel thread of each core to independently commit to the journal area allocated to each core. In addition, storage input/output (I/O) performance and arithmetic throughput may be improved because the kernel thread of each core writes file system changes to the journal area in parallel.

또한, 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 복수의 코어를 구비한 컴퓨팅 시스템에서 작은 오버헤드(overhead)로 파일 시스템의 일관성을 보장하는 방법을 제공할 수 있다.In addition, the computing system according to an exemplary embodiment of the present disclosure may provide a method of ensuring file system consistency with a small overhead in a computing system having a plurality of cores.

도 3은 본 개시의 예시적 실시예에 따른 제0 코어(CORE_0)에 대응하는 제1 저널 스택(120_0)을 나타낸다. 도 3은 도 2를 참조하여 후술될 것이다.3 illustrates a first journal stack 120_0 corresponding to a zeroth core CORE_0 according to an exemplary embodiment of the present disclosure. FIG. 3 will be described later with reference to FIG. 2 .

도 3을 참조하면, 컴퓨팅 시스템(20)은 제0 코어(CORE_0)에 대응하는 제1 저널 스택(120_0)을 포함할 수 있다. 제1 저널 스택(120_0)은 제0 코어(CORE_0)에 의해 변경된 블록을 트랙잭션 단위로 병합하여 저장할 수 있다. 도 3의 제1 저널 스택(120_0)의 구조는 도 2의 저널 스택(120_0 내지 120_N)에 적용될 수 있다.Referring to FIG. 3 , the computing system 20 may include a first journal stack 120_0 corresponding to a zero-th core CORE_0. The first journal stack 120_0 may store blocks changed by the 0th core CORE_0 by merging them in transaction units. The structure of the first journal stack 120_0 of FIG. 3 may be applied to the journal stacks 120_0 to 120_N of FIG. 2 .

제1 저널 스택(120_0)은 변경된 블록을 관리하기 위한 구조체로서, 저널 헤드(JH), 블록 헤드(BH) 및 제1 코어(CORE_1)에 의해 변경된 적어도 하나의 블록(BL)으로 구성될 수 있다. 예를 들어, 제0 코어(CORE_0)에 의해 변경된 블록 0 및 블록 1은 하나의 트랜잭션(TX)에 기입될 수 있다. 저널 헤드(JH)는 블록 헤드(BH)와 양 방향으로 연결될 수 있다. 예를 들어, 저널 헤드(JH)는 블록 헤드(BH)와 이중 연결 리스트(double linked list)로 연결될 수 있다. 블록 헤드(BH)는 변경된 블록(BL)과 연결되며, 블록(BL)의 정보를 포함할 수 있다. 예를 들어, 블록 헤드(BH)는 파일 시스템 내의 블록(BL)의 번호를 포함할 수 있다. The first journal stack 120_0 is a structure for managing a changed block, and may include a journal head JH, a block head BH, and at least one block BL changed by the first core CORE_1. . For example, block 0 and block 1 changed by the 0th core CORE_0 may be written in one transaction TX. The journal head JH may be connected to the block head BH in both directions. For example, the journal head JH may be connected to the block head BH through a double linked list. The block head BH is connected to the changed block BL, and may include information on the block BL. For example, the block head BH may include the number of the block BL in the file system.

제1 저널 스택(120_0)은 트랜잭션(TX)을 나타내는 구조체를 더 포함할 수 있다. 트랜잭션(TX)을 나타내는 구조체는 트랜잭션의 번호 및 트랜잭션의 상태를 나타낼 수 있다. 제1 저널 스택(120_0)에 저장되는 트랜잭션은 러닝(running) 또는 커밋(committing) 상태일 수 있다. 러닝 상태의 트랜잭션은 제0 코어(CORE_0)에 의해 변경된 블록들을 병합하는 상태일 수 있다. 커밋 상태의 트랜잭션은 제1 저널 스택(120_0)에 포함된 트랜잭션을 제1 저널 영역(162_0)에 기입 중인 상태를 나타낼 수 있다. 커밋 상태의 트랜잭션은 트랜잭션에 포함된 블록들을 제1 저널 영역(162_0)에 기입 완료하는 경우, 커밋 완료 상태가 될 수 있다. 커밋 완료 상태의 트랜잭션은 저널 영역 내에 커밋 블록에 기초하여 식별될 수 있다.The first journal stack 120_0 may further include a structure representing the transaction TX. The structure representing the transaction TX may indicate the number of the transaction and the status of the transaction. A transaction stored in the first journal stack 120_0 may be in a running or committing state. The transaction in the running state may be a state in which blocks changed by the 0th core CORE_0 are merged. The transaction in the commit state may indicate a state in which a transaction included in the first journal stack 120_0 is being written into the first journal area 162_0. The transaction in the commit state may be in the commit completion state when blocks included in the transaction are written to the first journal area 162_0. A transaction in a commit completion state may be identified based on a commit block in the journal area.

일부 실시예들에서, 제1 저널 스택(120_0)은 트랜잭션 리스트(130)를 더 포함할 수 있다. 트랜잭션 리스트(130)는 파일 시스템의 일관성을 보장하기 위해 스토리지 장치의 저널 영역에 함께 커밋되어야 하는 서로 다른 코어의 트랜잭션의 정보를 포함할 수 있다. 도 5를 참조하여 트랜잭션 리스트(130)에 대해 자세히 후술하기로 한다.In some embodiments, the first journal stack 120_0 may further include a transaction list 130 . The transaction list 130 may include information on transactions of different cores that must be committed together in a journal area of a storage device to ensure file system consistency. The transaction list 130 will be described later in detail with reference to FIG. 5 .

도 4a는 본 개시의 예시적 실시예에 복수의 코어에서의 프로세싱 순서를 나타낸다. 도 4b는 본 개시의 예시적 실시예에 따른 도 4a의 복수의 코어에 대응하는 저널 스택을 나타낸다.4A illustrates a processing sequence in a plurality of cores in an exemplary embodiment of the present disclosure. 4B illustrates a journal stack corresponding to the plurality of cores of FIG. 4A according to an exemplary embodiment of the present disclosure.

도 4a 및 도 4b를 함께 참조하면, 단계 S100에서, 제2 코어(CORE_2)는 블록 4, 및 블록 5를 변경할 수 있다. 변경된 블록 4 및 블록 5는 제2 트랜잭션(TX_2)에 포함될 수 있다. 제2 트랜잭션(TX_2)은 러닝 상태의 트랜잭션에 해당할 수 있고, 제2 코어(CORE_2)는 제3 저널 스택(120_2)에 제2 트랜잭션(TX_2)을 저장할 수 있다. 4A and 4B together, in step S100 , the second core CORE_2 may change blocks 4 and 5 . The changed blocks 4 and 5 may be included in the second transaction TX_2. The second transaction TX_2 may correspond to a transaction in a running state, and the second core CORE_2 may store the second transaction TX_2 in the third journal stack 120_2 .

단계 S120에서, 제2 코어(CORE_2)는 커밋을 수행할 수 있다. 예를 들어, 제2 코어(CORE_2)는 제2 트랜잭션(TX_2)을 저널 영역에 커밋할 수 있다. 제2 코어(CORE_2)는 제2 트랜잭션(TX_2)에 포함된 원본 블록을 복사하고, 복사된 블록을 제2 코어(CORE_2)에 대응하는 저널 영역으로 기입할 수 있다. 예를 들어, 제2 코어(CORE_2)는 제2 트랜잭션(TX_2)에 포함된 원본 블록 4 및 원본 블록 5를 복사하고, 복사된 블록 4 및 복사된 블록 5를 제2 코어(CORE_2)에 대응하는 저널 영역에 기입할 수 있다. 이에 따라, 원본 블록 4 및 원본 블록 5는 다른 코어에 의해 엑세스되어 변경될 수 있다. 제2 코어(CORE_2)가 커밋을 완료하는 경우, 제2 트랜잭션(TX_2)은 커밋 완료 상태의 트랜잭션으로 변경될 수 있다.In step S120 , the second core CORE_2 may perform a commit. For example, the second core CORE_2 may commit the second transaction TX_2 to the journal area. The second core CORE_2 may copy the original block included in the second transaction TX_2 and write the copied block to the journal area corresponding to the second core CORE_2 . For example, the second core CORE_2 copies the original block 4 and the original block 5 included in the second transaction TX_2, and applies the copied block 4 and the copied block 5 to the second core CORE_2. You can write to the journal area. Accordingly, the original block 4 and the original block 5 may be accessed and changed by other cores. When the second core CORE_2 completes the commit, the second transaction TX_2 may be changed to a transaction in a commit completion state.

단계 S140에서, 제1 코어(CORE_1)는 블록 2, 블록 3, 및 블록 4를 변경할 수 있다. 변경된 블록 2 및 블록 3은 제7 트랜잭션(TX_7)에 포함될 수 있다. 제7 트랜잭션(TX_7)은 러닝 상태의 트랜잭션에 해당할 수 있다. 아울러, 제2 코어(CORE_2)가 복사된 블록 4에 대해 커밋을 수행하므로, 원본 블록 4는 제1 코어(CORE_1)에 의해 수정이 가능할 수 있다. 제1 코어(CORE_1)는 복사된 블록 4를 제2 코어(CORE_2)의 제2 트랜잭션(TX_2)에 유지하고, 원본 블록 4를 가져와 제7 트랜잭션(TX_7)에 삽입할 수 있다. In operation S140 , the first core CORE_1 may change blocks 2 , 3 , and 4 . The changed blocks 2 and 3 may be included in the seventh transaction TX_7. The seventh transaction TX_7 may correspond to a transaction in a running state. In addition, since the second core CORE_2 commits the copied block 4 , the original block 4 may be modified by the first core CORE_1 . The first core CORE_1 may keep the copied block 4 in the second transaction TX_2 of the second core CORE_2 , and may bring the original block 4 and insert it into the seventh transaction TX_7 .

단계 S160에서, 제0 코어(CORE_0)는 블록 0, 블록 1, 및 블록 3을 변경할 수 있다. 변경된 블록 0 및 블록 1은 제4 트랜잭션(TX_4)에 포함될 수 있다. 한편, 블록 3은 단계 S140에서 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)에 포함되어 있을 수 있다. 이에 따라, 제0 코어(CORE_0)는 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)에 엑세스하여 블록 3을 수정할 수 있다.In operation S160 , the zeroth core CORE_0 may change block 0 , block 1 , and block 3 . The changed blocks 0 and 1 may be included in the fourth transaction TX_4. Meanwhile, block 3 may be included in the seventh transaction TX_7 of the first core CORE_1 in step S140 . Accordingly, the zeroth core CORE_0 may access the seventh transaction TX_7 of the first core CORE_1 to modify block 3 .

단계 S180에서, 제1 코어(CORE_1)는 블록 0을 변경할 수 있다. 블록 0은 단계 S160에서 제0 코어(CORE_0)의 제4 트랜잭션(TX_4)에 포함되어 있을 수 있다. 이에 따라, 제1 코어(CORE_1)는 제0 코어(CORE_0)의 제4 트랜잭션(TX_4)에 엑세스하여 블록 0을 수정할 수 있다.In step S180 , the first core CORE_1 may change block 0 . Block 0 may be included in the fourth transaction TX_4 of the 0th core CORE_0 in step S160 . Accordingly, the first core CORE_1 may access the fourth transaction TX_4 of the zeroth core CORE_0 to modify block 0 .

도 5는 본 개시의 예시적 실시예에 따른 도 4b의 저널 스택(120_0 내지 120_2)에 포함된 트랜잭션 리스트를 나타낸다. 도 5는 도 4a 및 4b를 참조하여 후술될 것이다.5 illustrates a list of transactions included in journal stacks 120_0 to 120_2 of FIG. 4B according to an exemplary embodiment of the present disclosure. 5 will be described later with reference to FIGS. 4A and 4B.

도 5를 참조하면, 저널 스택(120_0 내지 120_2)은 각각 트랜잭션 리스트(130_0 내지 130_2)를 포함할 수 있다. 각 코어별 독립된 저널 스택에 기인하여 스토리지 장치의 저널 영역에 함께 커밋되어야 하는 블록이 서로 다른 트랜잭션에 분산되는 문제가 있을 수 있다. 예를 들어, 단계 S100에서, 블록 4는 제1 코어(CORE_1) 및 제2 코어(CORE_2)에 의해 변경될 수 있다. 블록 4에 포함된 데이터의 일관성이 보장되기 위해서, 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)과 제2 코어(CORE_2)의 제2 트랜잭션(TX_2)이 스토리지 장치에 함께 기록되는 것이 요구될 수 있다. Referring to FIG. 5 , journal stacks 120_0 to 120_2 may include transaction lists 130_0 to 130_2 , respectively. Due to the independent journal stack for each core, there may be a problem in that blocks to be committed together in the journal area of the storage device are distributed in different transactions. For example, in step S100 , block 4 may be changed by the first core CORE_1 and the second core CORE_2 . In order to ensure the consistency of the data included in block 4, it is required that the seventh transaction TX_7 of the first core CORE_1 and the second transaction TX_2 of the second core CORE_2 are recorded together in the storage device. can

본 개시의 예시적 실시예에 따른 컴퓨팅 시스템은, 파일 시스템의 일관성을 보장하기 위해 트랜잭션 리스트(130_0 내지 130_2)를 포함할 수 있다. 트랜잭션 리스트(130_0 내지 130_2) 각각은 복수의 코어(CORE_0 내지 CORE_2)의 개수에 대응하는 복수의 리스트를 포함할 수 있다. 예를 들어, 트랜잭션 리스트(130_0 내지 130_2) 각각은 3개의 리스트를 포함할 수 있다. 트랜잭션 리스트(130_0 내지 130_2) 각각은 스토리지 장치의 저널 영역에 함께 커밋되어야 하는 트랜잭션의 정보를 포함할 수 있다. 예를 들어, 트랜잭션의 정보는 서로 다른 코어의 트랜잭션의 번호를 포함할 수 있고, 트랜잭션 마크로 지칭될 수 있다.The computing system according to an exemplary embodiment of the present disclosure may include transaction lists 130_0 to 130_2 to ensure file system consistency. Each of the transaction lists 130_0 to 130_2 may include a plurality of lists corresponding to the number of the plurality of cores CORE_0 to CORE_2 . For example, each of the transaction lists 130_0 to 130_2 may include three lists. Each of the transaction lists 130_0 to 130_2 may include information on a transaction to be committed together in a journal area of the storage device. For example, the transaction information may include the number of transactions of different cores, and may be referred to as a transaction mark.

단계 S140에서, 제1 코어(CORE_1)는 트랜잭션 리스트(130_1)에 제2 코어(CORE_2)의 제2 트랜잭션(TX_2)을 나타내는 데이터를 기입할 수 있다. 예를 들어, 제1 코어(CORE_1)는 트랜잭션 리스트(130_1)에 (2,2)를 기입할 수 있다. 시스템 충돌이 발생하는 경우, 제1 코어(CORE_1)는 제2 코어(CORE_2)의 제2 트랜잭션(TX_2)의 커밋 상태를 확인하고, 커밋이 완료된 경우 블록 4를 복원함으로써 블록 4의 변경사항을 파일 시스템에 반영할 수 있다. In operation S140 , the first core CORE_1 may write data representing the second transaction TX_2 of the second core CORE_2 in the transaction list 130_1 . For example, the first core CORE_1 may write (2,2) in the transaction list 130_1. When a system crash occurs, the first core (CORE_1) checks the commit status of the second transaction (TX_2) of the second core (CORE_2), and restores block 4 when the commit is completed to file the changes in block 4 can be reflected in the system.

단계 S160에서, 제0 코어(CORE_0)는 트랜잭션 리스트(130_0)에 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)을 나타내는 (1,7)을 기입할 수 있다. 제1 코어(CORE_1)는 트랜잭션 리스트(130_1)에 제0 코어(CORE_0)의 제4 트랜잭션(TX_4)를 나타내는 (0,4)를 기입할 수 있다. 시스템 충돌이 발생하는 경우, 제0 코어(CORE_0)는 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)의 커밋 상태를 확인하고, 커밋이 완료된 경우 블록 3을 복원함으로써 블록 3의 변경사항을 반영할 수 있다. 한편, 제1 코어(CORE_1)는 제0 코어(CORE_0)의 제4 트랜잭션(TX_4)의 커밋 상태를 확인하고, 커밋이 완료된 경우 블록 3을 복원함으로써 블록 3의 변경사항을 반영할 수 있다.In operation S160 , the zeroth core CORE_0 may write (1,7) indicating the seventh transaction TX_7 of the first core CORE_1 in the transaction list 130_0. The first core CORE_1 may write (0,4) indicating the fourth transaction TX_4 of the zeroth core CORE_0 in the transaction list 130_1 . When a system crash occurs, the 0th core (CORE_0) checks the commit status of the 7th transaction (TX_7) of the 1st core (CORE_1), and reflects the changes in block 3 by restoring block 3 when the commit is completed can do. Meanwhile, the first core CORE_1 may reflect the change in block 3 by checking the commit state of the fourth transaction TX_4 of the 0th core CORE_0 and restoring the block 3 when the commit is completed.

단계 S180에서, 제0 코어(CORE_0)는 트랜잭션 리스트(130_0)에 제1 코어(CORE_1) 및 제7 트랜잭션(TX_7)을 나타내는 (1,7)을 기입할 수 있다. 제1 코어(CORE_1)는 트랜잭션 리스트(130_1)에 제0 코어(CORE_0) 및 제4 트랜잭션(TX_4)를 나타내는 (0,4)를 기입할 수 있다. 시스템 충돌이 발생하는 경우, 제0 코어(CORE_0)는 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)의 커밋 상태를 확인하고, 커밋이 완료된 경우 블록 3을 복원함으로써 블록 3의 변경사항을 반영할 수 있다. 한편, 제1 코어(CORE_1)는 제0 코어(CORE_0)의 제4 트랜잭션(TX_4)의 커밋 상태를 확인하고, 커밋이 완료된 경우 블록 3을 복원함으로써 블록 3의 변경사항을 반영할 수 있다.In operation S180 , the zeroth core CORE_0 may write (1,7) indicating the first core CORE_1 and the seventh transaction TX_7 in the transaction list 130_0. The first core CORE_1 may write (0,4) indicating the zeroth core CORE_0 and the fourth transaction TX_4 in the transaction list 130_1 . When a system crash occurs, the 0th core (CORE_0) checks the commit status of the 7th transaction (TX_7) of the 1st core (CORE_1), and reflects the changes in block 3 by restoring block 3 when the commit is completed can do. Meanwhile, the first core CORE_1 may reflect the change in block 3 by checking the commit state of the fourth transaction TX_4 of the 0th core CORE_0 and restoring the block 3 when the commit is completed.

도 6은 본 개시의 예시적 실시예에 따른 스토리지 장치에 저장된 저널 영역을 나타낸다.6 illustrates a journal area stored in a storage device according to an exemplary embodiment of the present disclosure.

도 6을 참조하면, 시스템 충돌 발생 시 파일 시스템은 저널 영역(162_0 내지 162_2)에 기록된 블록들을 데이터 영역에 복원할 수 있다. 스토리지 장치는 저널 영역(162_0 내지 162_2) 내부에 커밋 블록(CM)을 더 포함할 수 있다. 복수의 코어(CORE_0 내지 CORE_2) 각각은 커밋 수행 시, 커밋 블록(CM) 내부에 트랜잭션 마크(예컨대, (2,7)) 및 타임스탬프(예컨대, TS_1 또는 TS_2)를 저장할 수 있다. 예를 들어, 타임스탬프(TS)는 트랜잭션의 커밋 시점을 나타내는 정보일 수 있다. Referring to FIG. 6 , when a system crash occurs, the file system may restore blocks recorded in the journal areas 162_0 to 162_2 to the data area. The storage device may further include a commit block CM in the journal areas 162_0 to 162_2. Each of the plurality of cores CORE_0 to CORE_2 may store a transaction mark (eg, (2,7)) and a timestamp (eg, TS_1 or TS_2) in the commit block CM when commit is performed. For example, the timestamp TS may be information indicating a commit time of a transaction.

일부 실시예들에서, 시스템 충돌 발생 시 파일 시스템은 커밋 블록(CM)이 기입된 트랜잭션을 복구의 대상으로 식별할 수 있다. 예를 들어, 제1 코어(CORE_1)의 제8 트랜잭션(TX_8)에 포함된 커밋 블록(CM)은 트랜잭션 마크(2,7)를 포함할 수 있다. 트랜잭션 마크(2,7)는 제1 코어(CORE_1)의 제8 트랜잭션(TX_8) 및 제2 코어(CORE_2)의 제7 트랜잭션(TX_7)이 데이터 영역에 함께 커밋되어야 함을 나타낼 수 있다. 파일 시스템은 제2 코어(CORE_2)의 제7 트랜잭션(TX_7)의 커밋 블록(CM)이 제2 코어(CORE_2)의 저널 영역(162_2) 내에 기록되지 않음에 따라, 제1 코어(CORE_1)의 제8 트랜잭션(TX_8)을 복구하지 않을 수 있다.In some embodiments, when a system crash occurs, the file system may identify a transaction in which a commit block (CM) is written as a target for recovery. For example, the commit block CM included in the eighth transaction TX_8 of the first core CORE_1 may include transaction marks 2 and 7 . The transaction marks 2 and 7 may indicate that the eighth transaction TX_8 of the first core CORE_1 and the seventh transaction TX_7 of the second core CORE_2 should be committed together in the data area. In the file system, as the commit block CM of the seventh transaction TX_7 of the second core CORE_2 is not recorded in the journal area 162_2 of the second core CORE_2, the first core CORE_1 8 The transaction (TX_8) may not be recovered.

일부 실시예들에서, 시스템 충돌 발생 시 파일 시스템은 타임스탬프에 기입된 트랜잭션의 커밋 시점에 기초하여 복구 대상이 되는 트랜잭션을 식별할 수 있다. 예를 들어, 블록 1(BH_1)은 제1 코어(CORE_1)의 저널 영역(162_1) 및 제2 코어(CORE_2)의 저널 영역(162_2)에 중복되어 포함될 수 있다. 파일 시스템은 제1 코어(CORE_1)의 제7 트랜잭션(TX_7)에 대응하는 타임스탬프(TS_1)및 제2 코어(CORE_2)의 제6 트랜잭션(TX_6)에 대응하는 타임스탬프(TS_2)를 비교한 후, 커밋 시점이 더 늦은 트랜잭션을 최종 변경된 데이터로서 복구할 수 있다. In some embodiments, when a system crash occurs, the file system may identify a transaction to be restored based on a commit time of the transaction written in the timestamp. For example, block 1 (BH_1) may be overlapped in the journal area 162_1 of the first core CORE_1 and the journal area 162_2 of the second core CORE_2. After comparing the timestamp TS_1 corresponding to the seventh transaction TX_7 of the first core CORE_1 and the timestamp TS_2 corresponding to the sixth transaction TX_6 of the second core CORE_2, the file system compares , a transaction with a later commit time can be recovered as the last changed data.

도 7은 본 개시의 예시적 실시예에 따른 시스템 충돌 시 데이터 복구 방법을 나타낸다. 7 illustrates a data recovery method in case of a system crash according to an exemplary embodiment of the present disclosure.

도 7을 참조하면, 단계 S200에서, 컴퓨팅 시스템에 시스템 충돌이 발생할 수 있다. 예를 들어, 제1 코어의 저널 영역은 시스템 충돌로 인해 데이터 영역에 미처 기입되지 않은 트랜잭션을 포함할 수 있다. 예를 들어, 제1 코어의 저널 영역에 제1 트랜잭션이 포함되고, 제1 트랜잭션은 시스템 충돌에 의해 데이터 영역에 기입되지 않을 수 있다. Referring to FIG. 7 , in step S200 , a system crash may occur in the computing system. For example, the journal area of the first core may include a transaction that has not yet been written to the data area due to a system crash. For example, the first transaction may be included in the journal area of the first core, and the first transaction may not be written to the data area due to a system crash.

단계 S220에서, 제1 코어는 제1 트랜잭션의 커밋 블록이 저널 영역 내에 기입되었는지 판단할 수 있다. 제1 코어는 커밋 블록이 기입된 트랜잭션을 복구의 대상으로 식별할 수 있다. 단계 S240에서, 제1 트랜잭션의 커밋 블록이 기입되지 않은 경우(S220-N), 제1 코어는 제1 트랜잭션을 데이터 영역에 기입하지 않을 수 있다. In step S220, the first core may determine whether the commit block of the first transaction is written in the journal area. The first core may identify a transaction in which a commit block is written as a recovery target. In step S240, if the commit block of the first transaction is not written (S220-N), the first core may not write the first transaction to the data area.

단계 S260에서, 제1 트랜잭션의 커밋 블록이 저널 영역 내에 기입된 경우(S220-Y), 제1 코어는 제1 트랜잭션을 복구의 대상으로 식별하고 제1 트랜잭션의 커밋 블록 내의 트랜잭션 마크를 확인할 수 있다. 예를 들어, 제1 트랜잭션의 커밋 블록 내의 트랜잭션 마크는 제2 코어의 제2 트랜잭션(예컨대, (2,2))를 포함할 수 있다.In step S260, when the commit block of the first transaction is written in the journal area (S220-Y), the first core may identify the first transaction as a target of recovery and check the transaction mark in the commit block of the first transaction. . For example, the transaction mark in the commit block of the first transaction may include the second transaction (eg, (2,2)) of the second core.

단계 S280에서, 제1 코어는 트랜잭션 마크에 포함된 제2 트랜잭션의 커밋 블록이 제2 코어의 저널 영역 내에 기입되었는지 확인할 수 있다. 단계 S300에서, 제2 트랜잭션이 데이터 영역에 기입되지 않은 경우(S280-N), 제1 코어는 제1 트랜잭션을 데이터 영역에 기입하지 않음으로써, 파일시스템의 일관성을 보장할 수 있다.In step S280, the first core may check whether the commit block of the second transaction included in the transaction mark is written in the journal area of the second core. In step S300, when the second transaction is not written to the data area (S280-N), the first core does not write the first transaction to the data area, thereby ensuring file system consistency.

단계 S320에서, 제2 트랜잭션이 데이터 영역에 기입된 경우(S280-Y), 제1 코어는 제1 트랜잭션을 데이터 영역에 기입함으로써, 파일시스템의 일관성을 보장할 수 있다.In step S320, when the second transaction is written to the data area (S280-Y), the first core writes the first transaction to the data area, thereby ensuring file system consistency.

도 8은 본 개시의 예시적 실시예에 따른 체크포인트 방법을 나타낸다. 8 illustrates a checkpoint method according to an exemplary embodiment of the present disclosure.

도 8을 참조하면, 단계 S400에서, 컴퓨팅 시스템에 포함된 복수의 코어 중 제1 코어가 커밋을 완료할 수 있다. 예를 들어, 제1 코어는 제1 트랜잭션의 커밋을 완료할 수 있다. 제1 코어는 컴퓨팅 시스템에서 정의된 일정 시구간마다 또는 제1 코어의 저널 영역의 용량이 부족한 경우, 커밋이 완료된 트랜잭션을 데이터 영역으로 체크포인트할 수 있다.Referring to FIG. 8 , in step S400 , a first core among a plurality of cores included in the computing system may complete a commit. For example, the first core may complete the commit of the first transaction. The first core may checkpoint the commit-completed transaction into the data area every predetermined time period defined in the computing system or when the capacity of the journal area of the first core is insufficient.

단계 S420에서, 제1 코어는 저널 영역에 제1 트랜잭션의 커밋 블록이 저널영역 내에 기입되었는지 확인할 수 있다. 제1 코어는 커밋 블록이 기입된 트랜잭션을 체크포인트의 대상으로 식별할 수 있다. 단계 S440에서, 제1 트랜잭션의 커밋 블록이 기입되지 않은 경우(S420-N), 제1 코어는 제1 트랜잭션을 체크포인트하지 않을 수 있다. In step S420, the first core may check whether the commit block of the first transaction is written in the journal area in the journal area. The first core may identify a transaction in which a commit block is written as a target of a checkpoint. In step S440, when the commit block of the first transaction is not written (S420-N), the first core may not checkpoint the first transaction.

단계 S460에서, 제1 트랜잭션의 커밋 블록이 저널 영역 내에 기입된 경우(S420-Y), 제1 코어는 제1 트랜잭션을 복구의 대상으로 식별하고 제1 트랜잭션의 커밋 블록 내의 트랜잭션 마크를 확인할 수 있다. 예를 들어, 제1 트랜잭션의 커밋 블록 내의 트랜잭션 마크는 제2 코어의 제2 트랜잭션(예컨대, (2,2))를 포함할 수 있다.In step S460, when the commit block of the first transaction is written in the journal area (S420-Y), the first core may identify the first transaction as a target of recovery and check the transaction mark in the commit block of the first transaction . For example, the transaction mark in the commit block of the first transaction may include the second transaction (eg, (2,2)) of the second core.

단계 S480에서, 제1 코어는 트랜잭션 마크에 포함된 제2 트랜잭션의 커밋 블록이 제2 코어의 저널 영역 내에 기입되었는지 확인할 수 있다. 단계 S500에서, 제2 트랜잭션이 데이터 영역에 기입되지 않은 경우(S480-N), 제1 코어는 제1 트랜잭션을 체크포인트하지 않음으로써, 파일시스템의 일관성을 보장할 수 있다.In step S480 , the first core may check whether the commit block of the second transaction included in the transaction mark is written in the journal area of the second core. In step S500, when the second transaction is not written to the data area (S480-N), the first core does not checkpoint the first transaction, thereby ensuring file system consistency.

단계 S520에서, 제2 트랜잭션이 데이터 영역에 기입된 경우(S480-Y), 제1 코어는 제1 트랜잭션을 체크포인트함으로써, 파일시스템의 일관성을 보장할 수 있다. 이에 따라, 컴퓨팅 시스템은 트랜잭션 마크에 기초하여 적은 오버헤드로 파일 시스템의 일관성을 보장할 수 있다. In step S520, when the second transaction is written in the data area (S480-Y), the first core may checkpoint the first transaction to ensure file system consistency. Accordingly, the computing system can guarantee the consistency of the file system with little overhead based on the transaction mark.

이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.Exemplary embodiments have been disclosed in the drawings and specification as described above. Although the embodiments have been described using specific terms in the present specification, these are used only for the purpose of explaining the technical spirit of the present disclosure, and are not used to limit the meaning or the scope of the present disclosure described in the claims. . Therefore, it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible therefrom. The true technical protection scope of the present disclosure should be defined by the technical spirit of the appended claims.

Claims (10)

복수의 코어를 구비한 컴퓨팅 시스템으로서,
상기 복수의 코어 별로 할당된 저널 스택을 포함하도록 구성된 메모리; 및
상기 복수의 코어 별로 할당된 저널 영역을 포함하도록 구성된 스토리지 장치를 포함하고,
상기 복수의 코어 중 제1 코어는,
상기 제1 코어에 의해 변경된 블록을 트랜잭션 단위로 병합하여 상기 제1 코어에 대응하는 저널 스택에 저장하고, 상기 제1 코어에 대응하는 저널 영역에 상기 트랜잭션 단위로 커밋(commit)을 수행하는 것을 특징으로 하는 컴퓨팅 시스템.
A computing system having a plurality of cores, comprising:
a memory configured to include a journal stack allocated to each of the plurality of cores; and
a storage device configured to include a journal area allocated to each of the plurality of cores;
A first core among the plurality of cores,
The block changed by the first core is merged in units of transactions, stored in a journal stack corresponding to the first core, and a commit is performed in a journal area corresponding to the first core in units of transactions. computing system with
제1항에 있어서,
상기 복수의 코어 별로 할당된 저널 스택 각각은, 상기 복수의 코어에 각각 대응하는 복수의 리스트를 포함하는 컴퓨팅 시스템.
According to claim 1,
Each of the journal stacks allocated to the plurality of cores includes a plurality of lists respectively corresponding to the plurality of cores.
제1항에 있어서,
상기 제1 코어에 대응하는 저널 스택은 러닝 상태의 제1 트랜잭션을 포함하고,
상기 복수의 코어 중 제2 코어의 제2 트랜잭션이 상기 제1 트랜잭션에 포함된 블록을 변경하는 경우, 상기 제1 코어는 상기 제2 코어에 대응하는 리스트에 상기 제2 코어의 제2 트랜잭션의 정보를 저장하고, 상기 제2 코어는 상기 제1 코어에 대응하는 리스트에 상기 제1 코어의 제1 트랜잭션의 정보를 저장하는 것을 특징으로 하는 컴퓨팅 시스템.
According to claim 1,
The journal stack corresponding to the first core includes a first transaction in a running state,
When a second transaction of a second core among the plurality of cores changes a block included in the first transaction, the first core lists information on the second transaction of the second core in a list corresponding to the second core , and the second core stores the information of the first transaction of the first core in a list corresponding to the first core.
제1항에 있어서,
상기 제1 코어에 대응하는 저널 스택은 원본 블록으로 구성된 제1 트랜잭션을 포함하고,
상기 제1 코어는 상기 제1 트랜잭션에 포함된 원본 블록을 복사하고, 복사된 블록에 대해 상기 저널 영역으로 커밋을 수행하는 것을 특징으로 하는 컴퓨팅 시스템.
According to claim 1,
The journal stack corresponding to the first core includes a first transaction composed of an original block,
The first core copies the original block included in the first transaction, and commits the copied block to the journal area.
제4항에 있어서,
상기 복수의 코어 중 제2 코어의 제2 트랜잭션이 상기 제1 트랜잭션에 포함된 원본 블록을 변경하는 경우, 상기 제2 코어는 상기 제1 코어에 대응하는 리스트에 상기 제1 코어의 제1 트랜잭션 정보를 저장하는 것을 특징으로 하는 컴퓨팅 시스템.
5. The method of claim 4,
When a second transaction of a second core among the plurality of cores changes an original block included in the first transaction, the second core adds the first transaction information of the first core to a list corresponding to the first core Computing system characterized in that it stores.
제5항에 있어서,
상기 제2 코어는,
상기 복사된 블록을 상기 제1 트랜잭션 내에 유지하며, 상기 제2 코어에 의해 변경되는 상기 원본 블록을 상기 제2 트랜잭션에 삽입하는 것을 특징으로 하는 컴퓨팅 시스템.
6. The method of claim 5,
The second core is
and maintaining the copied block in the first transaction, and inserting the original block changed by the second core into the second transaction.
제1항에 있어서,
상기 제1 코어는 상기 저널 영역에 커밋 블록을 포함하고,
상기 커밋 수행 시 상기 변경된 블록을 변경하는 제2 코어의 트랜잭션 정보가 포함된 트랜잭션 마크를 기록하는 것을 특징으로 하는 컴퓨팅 시스템.
According to claim 1,
The first core includes a commit block in the journal area,
Computing system, characterized in that when the commit is performed, a transaction mark including transaction information of a second core that changes the changed block is recorded.
제7항에 있어서,
상기 커밋 블록은,
상기 제1 코어에 의해 상기 커밋이 수행되는 시점을 나타내는 정보를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
8. The method of claim 7,
The commit block is
Computing system, characterized in that it further includes information indicating when the commit is performed by the first core.
제7항에 있어서,
상기 제1 코어는,
상기 컴퓨팅 시스템에 충돌(crash)이 발생하는 경우, 상기 트랜잭션 마크에 기초하여 데이터 복구를 수행하는 것을 특징으로 하는 컴퓨팅 시스템.
8. The method of claim 7,
The first core is
and performing data recovery based on the transaction mark when a crash occurs in the computing system.
제7항에 있어서,
상기 스토리지 장치는 데이터 영역을 더 포함하고,
상기 제1 코어는,
커밋이 완료된 경우, 상기 트랜잭션 마크에 기초하여 상기 스토리지 장치의 상기 데이터 영역에 체크포인트(checkpoint)를 수행하는 것을 특징으로 하는 컴퓨팅 시스템.
8. The method of claim 7,
The storage device further comprises a data area,
The first core is
and when a commit is completed, checkpointing is performed on the data area of the storage device based on the transaction mark.
KR1020210063617A 2020-12-18 2021-05-17 Computing System including Per-core journal structure KR20220088274A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200178941 2020-12-18
KR20200178941 2020-12-18

Publications (1)

Publication Number Publication Date
KR20220088274A true KR20220088274A (en) 2022-06-27

Family

ID=82246869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210063617A KR20220088274A (en) 2020-12-18 2021-05-17 Computing System including Per-core journal structure

Country Status (1)

Country Link
KR (1) KR20220088274A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024019485A1 (en) 2022-07-18 2024-01-25 주식회사 엘지에너지솔루션 Pouch-type battery cell and pouch-type battery case sealing device for manufacturing same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024019485A1 (en) 2022-07-18 2024-01-25 주식회사 엘지에너지솔루션 Pouch-type battery cell and pouch-type battery case sealing device for manufacturing same

Similar Documents

Publication Publication Date Title
US9256374B1 (en) Metadata for managing I/O and storage for a virtualization environment
US9747287B1 (en) Method and system for managing metadata for a virtualization environment
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
US6907505B2 (en) Immediately available, statically allocated, full-logical-unit copy with a transient, snapshot-copy-like intermediate stage
CN105843551B (en) Data integrity and loss resistance in high performance and large capacity storage deduplication
KR102275563B1 (en) Host-managed non-volatile memory
US10049036B2 (en) Reliable distributed messaging using non-volatile system memory
US9767015B1 (en) Enhanced operating system integrity using non-volatile system memory
US9760480B1 (en) Enhanced logging using non-volatile system memory
US10521148B2 (en) Data storage device backup
CN109902034B (en) Snapshot creating method and device, electronic equipment and machine-readable storage medium
CN103597440A (en) Method for creating clone file, and file system adopting the same
Jung et al. nvramdisk: A transactional block device driver for non-volatile ram
KR20130083356A (en) A method for metadata persistence
US9990150B2 (en) Method to provide transactional semantics for updates to data structures stored in a non-volatile memory
CN109804359A (en) For the system and method by write back data to storage equipment
Picoli et al. Open-channel SSD (what is it good for)
US8984011B1 (en) Page object caching for variably sized access control lists in data storage systems
Son et al. SSD-assisted backup and recovery for database systems
CN110134551B (en) Continuous data protection method and device
KR20220088274A (en) Computing System including Per-core journal structure
US10089220B1 (en) Saving state information resulting from non-idempotent operations in non-volatile system memory
US11010091B2 (en) Multi-tier storage
CN115048046B (en) Log file system and data management method
Sendir et al. Optimized durable commitlog for apache cassandra using capi-flash

Legal Events

Date Code Title Description
A201 Request for examination