KR20200044646A - 듀얼 모드 저널링 방법 및 장치 - Google Patents

듀얼 모드 저널링 방법 및 장치 Download PDF

Info

Publication number
KR20200044646A
KR20200044646A KR1020190015745A KR20190015745A KR20200044646A KR 20200044646 A KR20200044646 A KR 20200044646A KR 1020190015745 A KR1020190015745 A KR 1020190015745A KR 20190015745 A KR20190015745 A KR 20190015745A KR 20200044646 A KR20200044646 A KR 20200044646A
Authority
KR
South Korea
Prior art keywords
storage
command
barrier
write command
journal
Prior art date
Application number
KR1020190015745A
Other languages
English (en)
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 KR20200044646A publication Critical patent/KR20200044646A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 일 실시예에 따른 호스트가 듀얼 모드 저널링을 수행하는 방법은 순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하는 단계; 커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 상기 스토리지에게 전송하는 단계; 상기 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 상기 저널데이터가 상기 스토리지에 기록되도록 설정한 후, 반환하는 단계; 및 상기 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 상기 플러시 쓰레드를 이용하여 상기 저널데이터를 상기 스토리지에 기록한 후, 반환하는 단계를 포함한다.

Description

듀얼 모드 저널링 방법 및 장치{METHOD AND APPARATUS FOR DUAL MODE JOURNALING}
본 발명은 순서 보장 입출력 스택 기반의 듀얼 모드 저널링 방법 및 장치에 관한 것이다.
저널링은 소프트웨어가 데이터의 일관성을 유지하기 위해 사용하는 기법 중 하나이다. 저널링은 실제 데이터를 변경하기 전에 저널 영역에 로그를 쓰는 것이다. 저널 영역에 저장되는 기록 사항은 ACID 특성이 유지되어야 하므로, 트랜잭션의 형태로 써진다. 이 트랜잭션을 저널 트랜잭션이라고 한다. 저널 트랜잭션은 저널 커밋 블록을 포함한다. 저널 커밋 블록이란 저널 트랜잭션이 스토리지에 내구적으로 쓰여졌다는 것을 나타내는 블록이다. 따라서, 저널 커밋 블록은 저널 트랜잭션이 포함하는 데이터 중 가장 마지막에 쓰여져야 한다.
따라서, 일반적으로 저널링은 다음과 같은 순서로 동작하게 된다. 저널 로그 쓰기 명령을 스토리지에게 요청하고, 저널 로그 쓰기 명령의 처리를 대기한 후, 플러시 명령을 요청한다. 그 후, 저널 커밋 블록 쓰기 명령을 스토리지에게 요청하고, 저널 커밋 블록 쓰기 명령의 처리를 대기한 후, 플러시 명령을 요청한다.
이때, 플러시 명령은 스토리지 캐시에 있는 내용을 스토리지 표면에 기록하는 명령으로써, 위 동작에서는 쓰기 내용이 스토리지에 내구적으로 쓰여지는 순서를 보장하기 위해서 쓰인다. 그러나, 스토리지에 요청한 명령들은 그 순서가 바뀔 수 있기 때문에, 순서 보장이 중요한 저널링에서 모든 쓰기 명령 요청은 명령 처리 대기를 동반하고 있다.
이와 같이, 종래의 기술은 저널 트랜잭션의 내용들, 즉, 저널 로그와 저널 커밋 블록 사이의 순서를 보장하기 위해서, 모든 명령 요청에 명령 처리에 대한 대기를 동반한다. 즉, 종래의 기술은 저널링 과정이 직렬화(serialization)되어 있는 것이다. 그러나, 이러한 구조에서는 스토리지의 멀티 큐 특성을 제대로 활용할 수 없다. 또한, 명령을 처리하는 오버헤드가 그대로 사용자에게 노출되어 저널링의 성능이 하락하는 문제점이 있다.
따라서, 이러한 문제점을 해결하여 저널링 성능을 향상시키는 듀얼 모드 저널링 방법 및 장치에 대한 필요성이 대두되고 있다.
관련 선행기술로는 대한민국 등록특허공보 제10-1765517호(발명의 명칭: 데이터베이스를 저널링하는 장치 및 방법)가 있다.
본 발명은 저널 트랜잭션의 기록 순서를 보장하는 모드인 순서보장모드 및 저널 트랜잭션과 관련된 입출력을 직렬화하여 데이터의 기록까지 보장하는 모드인 지속보장모드를 지원하는 듀얼 모드 저널링 방법 및 장치를 제공하고자 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법은 순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하는 단계; 커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 상기 스토리지에게 전송하는 단계; 상기 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 상기 저널데이터가 상기 스토리지에 기록되도록 설정한 후, 반환하는 단계; 및 상기 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 상기 플러시 쓰레드를 이용하여 상기 저널데이터를 상기 스토리지에 기록한 후, 반환하는 단계를 포함한다.
바람직하게는, 상기 배리어 기반 쓰기 명령은 상기 배리어 기반 쓰기 명령이 상기 스토리지의 커맨드 큐에 입력된 시점인 입력시점을 기준으로, 상기 입력시점 이전에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 상기 입력시점 이후에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 상기 스토리지 내부에서 처리될 수 있다.
바람직하게는, 상기 배리어 기반 쓰기 명령은 쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나, 쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성될 수 있다.
바람직하게는, 상기 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때, 상기 스토리지에게 전송하는 단계는 상기 JD 및 상기 JC 각각에 대한 상기 배리어 기반 쓰기 명령을 순차적으로 전송하고, 상기 스토리지에 기록되도록 설정한 후, 반환하는 단계 및 상기 저널데이터를 상기 스토리지에 기록한 후, 반환하는 단계는 상기 플러시 쓰레드가 상기 JD 및 상기 JC 각각을 순차적으로 상기 스토리지에 기록하도록 할 수 있다.
바람직하게는, 상기 호스트는 상기 저널데이터에 대한 상기 배리어 기반 쓰기 명령이 상기 스토리지에게 전송되면, 상기 저널데이터를 상기 스토리지에게 DMA를 이용하여 전송할 수 있다.
바람직하게는, 상기 플러시 쓰레드는 상기 저널데이터가 상기 스토리지에 전송된 이후에, 상기 저널데이터를 상기 스토리지에 기록하기 시작할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 듀얼 모드 저널링을 지원하는 컴퓨팅 장치는 듀얼 모드 저널링을 지원하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및 상기 메모리에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고, 상기 프로세서는 순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하고, 커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 상기 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 상기 스토리지에게 전송하되, 상기 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 상기 저널데이터가 상기 스토리지에 기록되도록 설정한 후, 반환하고, 상기 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 상기 플러시 쓰레드를 이용하여 상기 저널데이터를 순차적으로 상기 스토리지에 기록한 후, 반환한다.
바람직하게는, 상기 배리어 기반 쓰기 명령은 상기 배리어 기반 쓰기 명령이 상기 스토리지의 커맨드 큐에 입력된 시점인 입력시점을 기준으로, 상기 입력시점 이전에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 상기 입력시점 이후에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 상기 스토리지 내부에서 처리될 수 있다.
바람직하게는, 상기 배리어 기반 쓰기 명령은 쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나, 쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성될 수 있다.
바람직하게는, 상기 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때, 상기 프로세서는 상기 JD 및 상기 JC 각각에 대한 상기 배리어 기반 쓰기 명령을 순차적으로 전송하고, 상기 플러시 쓰레드가 상기 JD 및 상기 JC 각각을 순차적으로 상기 스토리지에 기록하도록 할 수 있다.
바람직하게는, 상기 프로세서는 상기 저널데이터에 대한 상기 배리어 기반 쓰기 명령이 상기 스토리지에게 전송되면, 상기 저널데이터를 상기 스토리지에게 DMA를 이용하여 전송할 수 있다.
바람직하게는, 상기 플러시 쓰레드는 상기 저널데이터가 상기 스토리지에 전송된 이후에, 상기 저널데이터를 상기 스토리지에 기록하기 시작할 수 있다.
본 발명은 저널 트랜잭션의 기록 순서를 보장하는 모드인 순서보장모드 및 저널 트랜잭션과 관련된 입출력을 직렬화하여 데이터의 기록까지 보장하는 모드인 지속보장모드를 지원하는 듀얼 모드 저널링 방법 및 장치를 제공함으로써, 데이터 기록의 보장 필요성에 따라 가변적으로 저널링 모드를 선택할 수 있는 효과가 있다.
또한, 본 발명의 순서보장모드는 커밋 쓰레드와 플러시 쓰레드의 듀얼 쓰레드를 이용하여 동시에 여러 개의 저널 트랜잭션을 수행함으로써, 저널링 성능을 향상시킬 수 있는 효과가 있다. 또한, 이를 통해 DMA의 효과를 극대화하고, 스토리지의 멀티 커맨드 큐 및 멀티 채널을 효과적으로 활용할 수 있다.
또한, 본 발명의 듀얼 모드 저널링 방법 및 장치는 신규한 동기화 명령 및 기존 동기화 명령의 재구성을 통해, 플러시(flush) 및 DMA 전송의 오버헤드와 컨텍스트 스위치(context switch)를 감소시킴으로써, 파일시스템의 저널링 처리율(throughput)을 상당히 증가시킬 수 있는 효과가 있다.
도 1은 종래의 기술에 따른 호스트와 스토리지 간의 데이터 입출력 과정을 설명하기 위한 도면이다.
도 2는 종래의 기술에 따른 EXT4 파일시스템의 동기화 명령인 fsync()의 동작 과정을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 순서 보장 입출력 스택을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 듀얼 모드 저널링을 지원하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 6은 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법의 효과를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 종래의 기술에 따른 호스트와 스토리지 간의 데이터 입출력 과정을 설명하기 위한 도면이다.
도 1을 참조하면, 호스트에서 운영되는 파일시스템은 IO 스케줄러 큐(IO scheduler queue)에 쓰기 요청(write request)를 입력한다. 그리고, 블록 디바이스 드라이버는 IO 스케줄러 큐로부터 하나 이상의 쓰기 요청을 제거하여, 이로부터 쓰기 명령(write command)를 구성한다. 그리고, 블록 디바이스 드라이버는 가능한 경우에 그 쓰기 명령을 스토리지 디바이스에게 전달한다. 이때, 스토리지 디바이스의 커맨드 큐(command queue)가 가득차 있지 않으면, 가능한 경우에 해당할 수 있다. 또한, 스토리지 컨트롤러(storage controller)는 커맨드 큐로부터 그 전달된 쓰기 명령을 제거하고, 호스트로부터 그 쓰기 명령에 관련 데이터를 수신하여 캐시에 저장한다. 수신이 완료되면, 스토리지는 호스트에 시그널을 전송한다. 한편, 캐시에 저장된 데이터는 주기적으로 또는 호스트로부터의 명시적인 요청에 의하여 스토리지 표면에 기록된다.
여기서, 쓰기 요청의 입력 순서(I), 쓰기 명령 전달 순서(D), 데이터 전송 순서(X) 및 데이터 기록 순서(P)를 고려할 때, 다음과 같은 순서 상의 불일치가 존재할 수 있다.
우선, I와 D가 불일치할 수 있다. 이는, IO 스케줄러가 쓰기 요청을 스케줄링 원칙에 따라 재배치(reorder)하거나 병합(coalescence)할 수 있기 때문이다.
또한, D와 X가 불일치할 수 있다. 이는, 스토리지 컨트롤러가 자유롭게 커맨드 큐의 쓰기 명령의 순서를 조정할 수 있기 때문이다.
또한, X와 P가 불일치할 수 있다. 이는, 스토리지의 캐시가 FIFO가 아니기 때문이다. 즉, 플래시 기반 스토리지에서, 데이터 기록 순서는 캐시에 기록된 순서가 아니라, 관련된 맵핑 테이블에 기록된 순서에 따라 결정될 수 있다.
이러한 다양한 순서 상의 불확실성 때문에, 현대의 IO 스택을 이용한 데이터 입출력 과정은 전 과정을 통해 순서가 지켜지기 어려운 것으로 인식되어 왔다.
도 2는 종래의 기술에 따른 EXT4 파일시스템의 동기화 명령인 fsync()의 동작 과정을 설명하기 위한 도면이다.
EXT4(extended file system 4)는 리눅스의 대표적인 저널링 파일 시스템으로, 기존 EXT3 파일 시스템의 향상된 버전이다. 저널링 파일 시스템은 파일 시스템에 변경사항을 반영(commit)하기 전에, 저널안에 생성되는 변경사항을 추적하여 기록하는 파일 시스템이다. 이를 통해, 시스템 충돌이나 전원 문제가 발생할 때 초래될 수 있는 시스템의 손상을 최소화할 수 있는 효과가 있다.
EXT4 파일 시스템에서는 기록 순서를 제어하기 위하여 fsync() 함수를 이용한다. Ordered모드(default)에서는 데이터 블록(D)이 저널 트랜잭션에 앞서 기록된다.
우선, 파일 시스템이 데이터 블록(D)에 대한 쓰기 요청을 입력한다. 이때, 데이터 블록(D)은 다른 파일들에 대한 복수의 블록일 수 있다. 그 후, 어플리케이션 쓰레드는 DMA 전송이 완료될 때까지 대기한다. 그리고, DMA 전송이 완료되면 그 어플리케이션 쓰레드는 JBD 쓰레드를 동작시켜 저널 트랜잭션을 반영하도록 한다. 그 후, 그 어플리케이션 쓰레드는 다시 슬립 상태로 진입하며, JBD 쓰레드가 저널 트랜잭션을 모두 기록한 후, 반환(return)한다.
보다 구체적으로, 저널 트랜잭션은 두개의 쓰기 요청을 통해 반영될 수 있다. 이는, 저널 디스크립터 블록 및 로그 블록(JD)과 커밋 블록(JC)이다. 또한, 저널 트랜잭션을 반영하는 과정에서, JBD 쓰레드는 단일 트랜잭션 내부에서, 그리고 트랜잭션들 간에서 그 기록 순서를 유지할 필요가 있다.
단일 트랜잭션 내부에서는, JBD 쓰레드가 JD를 JC보다 먼저 기록해야 할 필요가 있다. 즉, JBD 쓰레드는 JD가 JC보다 먼저 기록되도록, Transfer-and-Flush 기법을 이용할 수 있다. 이때, Transfer-and-Flush 기법은 JD에 관한 데이터가 DMA를 통해 전송(transfer)되고, 스토리지에 기록(flush)되는 동안 대기한 후, JC에 관한 데이터가 DMA를 통해 전송(transfer)되고, 스토리지에 기록(flush)되도록 함으로써, 그 기록 순서를 지키는 것이다.
또한, 트랜잭션들 간에는, JBD 쓰레드가 저널 트랜잭션의 요청 순서에 따라서 그 트랜잭션들이 기록되도록 해야 할 필요가 있다.
이처럼, EXT4 파일 시스템에서는 fsync()를 이용한 동기화 과정에서, 여러 차례의 컨텍스트 스위치가 발생하며, 데이터 전송과 기록에 따른 대기 시간이 요구되어 전송 오버헤드, 플러시 오버헤드가 필연적으로 발생하게 된다.
도 3은 본 발명의 일 실시예에 따른 순서 보장 입출력 스택을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 순서 보장 입출력 스택은 순서 보장 블록 디바이스 레이어에서 새롭게 정의된 배리어 기반 쓰기 명령, 순서 보장 디스패치 모듈(order preserving dispatch module), 에포크 기반 IO 스케줄러(Epoch-based IO scheduler)로 구성될 수 있다. 이와 같은 구성들을 이용함으로써, Transfer-and-Flush 기법을 이용하지 않고도, 부분적으로 쓰기 요청에 대한 순서가 스토리지에까지 반영될 수 있다.
보다 구체적으로, 순서 보장 블록 디바이스 레이어는 쓰기 요청을 두 종류로 구분한다. 순서 보장 쓰기 요청과 순서 없는 쓰기 요청이 그것이다. 여기서, 순서 보장 쓰기 요청은 스토리지 기록 순서가 보장되도록 하기 위한 쓰기 요청이다.
또한, 순서 보장 쓰기 요청의 집합으로, 그 집합 내부에서는 기록 순서가 변경가능한 단위가 에포크이다. 또한, 순서 보장 쓰기 요청에 대응되는 순서 보장 쓰기 명령 중에서 특별한 하나의 타입이 배리어 기반 쓰기 명령이다. 즉, 배리어 기반 쓰기 명령은 에포크를 분류하기 위하여 이용되며, 그 전후의 순서 보장 쓰기 명령 간의 스토리지에서의 기록 순서가 보장된다.
이때, 순서 보장 쓰기 명령 및 배리어 기반 쓰기 명령에는 각각 새로운 속성인 REQ_ORDERED 및 REQ_BARRIER가 이용될 수 있다. 즉, 일반적인 순서 보장 쓰기 명령에는 REQ_ORDERED가 이용되고, 배리어 기반 쓰기 명령에는 REQ_ORDERED와 REQ_BARRIER가 함께 이용될 수 있다.
도 4는 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법을 설명하기 위한 흐름도이다.
본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법은 도 3에서 설명한, 본 발명의 일 실시예에 따른 순서 보장 입출력 스택을 이용하여 수행될 수 있다. 그러나, 반드시 그 순서 보장 입출력 스택을 이용하는 것으로 한정되는 것은 아니며, 다양한 방법을 통해 수행될 수 있음은 통상의 기술자에게 자명할 것이다.
단계 S410에서는, 호스트가 순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출한다.
이때, 호스트는 데이터 블록(D)에 대한 순서 보장 쓰기 명령을 먼저 호출한 이후에, 동기화 명령을 호출(601)하는 것일 수 있다. 즉, 호스트는 호스트에서의 파일의 변경 사항을 스토리지에 저장된 파일과 동기화시키기 위하여 동기화 명령을 호출할 수 있다.
한편, 순서보장모드는 데이터 블록(D)과 저널 트랜잭션의 스토리지 상의 기록 순서를 보장하는 모드이고, 지속보장보드는 데이터 블록(D)과 저널 트랜잭션과 관련된 입출력을 직렬화하여 데이터의 기록까지 보장하는 모드일 수 있다.
예컨대, 순서보장모드에 대응되는 동기화 명령은 fbarrier()일 수 있고, 지속보장모드에 대응되는 동기화 명령은 fsync()일 수 있다. 이때, fbarrier()는 새롭게 만들어진 동기화 명령이고, fsync()는 기존의 동기화 명령의 구현을 변경한 동기화 명령일 수 있다. 한편, 순서보장모드 및 지속보장모드에 대응되는 동기화 명령의 자세한 동작 방법에 관하여는 아래 단계 S430 및 S440에서 보다 구체적으로 설명한다.
단계 S420에서는, 호스트가 커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 스토리지에게 전송한다.
즉, 호스트는 저널 트랜잭션을 위하여 저널데이터를 스토리지에 쓰기 위한 배리어 기반 쓰기 명령을 스토리지에게 전송할 수 있다. 이때, 스토리지는 플래시 메모리에 기반하는 SSD(Solid State Drive), UFS(Universal Flash Storage), SD카드, USB 플래시 메모리 등일 수 있으나, 이에 한정되는 것은 아니며 내부에서의 기록 순서를 변경가능한 모든 종류의 스토리지일 수 있다.
예컨대, EXT4 파일 시스템에서와 같이 저널데이터가 저널 디스크립터 블록과 로그 블록(JD) 및 커밋 블록(JC)로 구성되는 경우를 가정할 수 있다. 이때, 블록데이터(D), 저널 디스크립터 블록과 로그 블록(JD), 커밋 블록(JC)의 기록 순서가 보장되어야 하기 때문에, 호스트는 D에 대하여 순서 보장 쓰기 명령을 전송하고, JD에 대하여 배리어 기반 쓰기 명령을 전송하고, JC에 대하여 배리어 기반 쓰기 명령을 전송할 수 있다.
다른 실시예에서는, 배리어 기반 쓰기 명령은 배리어 기반 쓰기 명령이 스토리지의 커맨드 큐에 입력된 시점인 입력시점을 기준으로, 그 입력시점 이전에 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 그 입력시점 이후에 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 스토리지 내부에서 처리될 수 있다.
예컨대, 커맨드 큐에 {W1, W2, W3, W4}의 순서로 쓰기 명령이 입력되어 있다고 가정할 수 있다. 이때, W1, W2 는 순서 보장 쓰기 명령이고, W3, W4는 배리어 기반 쓰기 명령이다. 이 경우, W3의 배리어 기반 쓰기 명령은, W3의 배리어 기반 쓰기 명령의 입력시점을 기준으로, 그 이전에 입력된 쓰기 명령인 W1과 W2가 먼저 처리되어 스토리지에 기록된 이후에 스토리지에 기록된다. 또한, 그 이후에 입력된 쓰기 명령인 W4가 처리되어 스토리지에 기록되기 이전에 스토리지에 기록된다.
또 다른 실시예에서는, 배리어 기반 쓰기 명령은 쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나, 쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성될 수 있다.
즉, 본 발명의 순서 보장 쓰기 명령 및 배리어 기반 쓰기 명령은 다양한 형태로 구현될 수 있다.
우선, 쓰기 명령과 분리된 순서 보장 설정 명령 또는 배리어 설정 명령으로 구현될 수 있다. 즉, 어플리케이션 레벨에서는 쓰기 명령을 호출한 이후에 순서 보장 설정 명령 또는 배리어 설정 명령을 호출함으로써, 순서 보장 쓰기 명령 또는 배리어 기반 쓰기 명령을 구현할 수 있다.
하지만, 이 경우, 호스트가 그 분리된 명령을 별도로 디스패치해야 하는 오버헤드가 발생하며, 스토리지의 커맨드 큐에서도 하나의 엔트리를 차지하는 문제가 발생할 수 있다.
따라서, 바람직하게는 쓰기 명령에 플래그를 입력하여 순서 보장 쓰기 명령 및 배리어 기반 쓰기 명령을 구현할 수 있다.
예컨대, 어플리케이션 레벨에서 SCSI 명령에서 사용되지 않는 비트에 배리어플래그를 입력하도록 하여, 해당 비트의 값에 따라 배리어 기반 쓰기 명령인지 여부를 판단하도록 할 수 있다. 이때, 스토리지 컨트롤러는 쓰기 명령과 베리어 설정 명령이 연달아 입력된 것처럼 동작할 수 있다.
또 다른 실시예에서는, 호스트는 저널데이터에 대한 배리어 기반 쓰기 명령이 스토리지에게 전송되면, 저널데이터를 스토리지에게 DMA를 이용하여 전송할 수 있다.
즉, 호스트가 커밋 쓰레드를 이용하여 배리어 기반 쓰기 명령을 스토리지에게 전송하면, 호스트는 DMA를 통해 저널데이터를 스토리지에게 전송할 수 있다.
이때, 호스트는 DMA를 통해 저널데이터를 스토리지에게 전송하므로, 호스트 또는 커밋 쓰레드가 그 전송 과정이 완료될 때까지 대기할 필요가 없게 될 수 있다.
한편, 저널데이터가 저널 디스크립터 블록과 로그 블록(JD) 및 커밋 블록(JC)로 구성되는 경우를 가정할 수 있다. 이때, 커밋 쓰레드가 JD에 대한 배리어 기반 쓰기 명령을 먼저 전송하고, JC에 대한 배리어 기반 쓰기 명령을 나중에 전송한다면, JD 및 JC의 전송은 다음과 같이 진행될 수 있다.
예컨대, 커밋 쓰레드가 JD에 대한 배리어 기반 쓰기 명령을 전송(605)하면, 순서 보장 쓰기 명령(604)에 따라 블록 데이터(D)의 DMA를 통한 데이터 전송이 완료된 이후에, 호스트는 DMA를 통해 JD를 스토리지에게 전송할 수 있다. 그 후, 커밋 쓰레드가 JC에 대한 배리어 기반 쓰기 명령을 전송(606)하면, JD의 DMA를 통한 데이터 전송이 완료된 이후에, 호스트는 DMA를 통해 JC를 스토리지에게 전송할 수 있다.
단계 S430에서는, 호스트가 그 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 저널데이터가 스토리지에 기록되도록 설정한 후, 반환한다.
즉, 호스트는 순서보장모드에서 스토리지에 기록되는 순서만을 보장하므로, 플러시 쓰레드에 의해 저널데이터가 스토리지에 기록완료되는 것을 대기하지 않고, 바로 동기화 명령을 반환할 수 있다. 또한, 호스트는 이처럼 플러시 과정의 이전에 동기화 명령을 반환함으로써, 새로운 저널 트랜잭션을 수행할 수 있게 되어, 동기화 명령의 지연시간을 감소시킬 수 있다.
예컨대, 저널데이터가 저널 디스크립터 블록과 로그 블록(JD) 및 커밋 블록(JC)로 구성되는 경우를 가정할 수 있다. 이때, 플러시 쓰레드는 동기화 명령이 반환된 이후에 데이터 블록(D), JD 및 JC의 순서로 스토리지에 기록하도록 설정될 수 있다.
이때, 플러시 쓰레드는 동기화 명령을 반환 이후에, 플러시 명령어(예, flush())를 호출하여, 쓰기 명령의 종류에 따라 스토리지의 캐시에 저장된 데이터가 스토리지에 순차적으로 기록되도록 할 수 있다.
단계 S440에서는, 호스트가 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 저널데이터를 스토리지에 기록한 후, 반환한다.
즉, 호스트는 지속보장모드에서 스토리지에 기록되는 순서 및 기록 완료까지 보장하므로, 플러시 쓰레드에 의해 저널데이터가 스토리지에 기록완료되는 것을 대기한 후, 동기화 명령을 반환할 수 있다.
예컨대, 저널데이터가 저널 디스크립터 블록과 로그 블록(JD) 및 커밋 블록(JC)로 구성되는 경우를 가정할 수 있다. 이때, 플러시 쓰레드는 데이터 블록(D), JD 및 JC의 순서로 스토리지에 기록할 수 있다. 그리고, 그 이후 호스트는 동기화 명령을 반환할 수 있다.
이때, 도 3 및 6을 참조하면, 본 발명의 일 실시예에 따른 지속보장동기화명령은 플러시(flush) 및 DMA 전송의 오버헤드와 컨텍스트 스위치(context switch)를 감소시킴으로써, 종래의 기술에 따른 Transfer-and-Flush 기법에서 발생하는 문제점을 완화하여, 파일시스템의 저널링 처리율(throughput)을 상당히 증가시킬 수 있다.
다른 실시예에서는, 플러시 쓰레드는 저널데이터가 스토리지에 전송된 이후에, 저널데이터를 스토리지에 기록할 수 있다.
예컨대, 플러시 쓰레드는 저널데이터가 저널 디스크립터 블록과 로그 블록(JD) 및 커밋 블록(JC)로 구성될 때, JD 및 JC의 순서로 스토리지에 전송이 완료된 이후에, JD 및 JC를 차례로 스토리지에 기록할 수 있다.
또 다른 실시예에서는, 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때, 호스트는 배리어 기반 쓰기 명령을 스토리지에게 전송하기 위하여, JD 및 JC 각각에 대한 배리어 기반 쓰기 명령을 순차적으로 전송할 수 있다. 또한, 플러시 쓰레드는 JD 및 JC 각각을 순차적으로 스토리지에 기록할 수 있다.
나아가, 호스트는 저널데이터가 JD 및 JC의 두 종류로 구성된 경우뿐만 아니라 3 종류 이상으로 구성된 경우에도 동일한 방법으로 처리할 수 있다.
한편, 도 7을 참조하면, 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법이 구현된 파일 시스템(BarrierFS)에서의 동시성에 관한 효과를 확인할 수 있다.
이때, 도 7에서, 가로 점선은 저널 트랜잭션이 스토리지에 기록되기까지의 시간을 나타내고, 가로 실선은 저널 커밋이 완료되기 까지의 시간을 나타낸다.
이를 참조하면, BarrierFS는 저널링 스루풋에 있어서 나머지 3개를 압도하는 것을 확인할 수 있다. 즉, BarrierFS에서는 배리어 기반 쓰기 명령을 스토리지에게 전송하기 위한 시간인 디스패치 지연시간에 대응되는 tD간격으로 연속적인 저널 커밋이 가능하나, EXT4에 기반한 다른 경우에는 그 간격이 각각 tD+tX, tD+tX+tE, tD+tX+tE+tF이 되어 연속적인 저널 커밋에서 불리함을 확인할 수 있다. 이때, tX는 전송 지연시간이고, tE는 플러시 지연시간(슈퍼캡 SSD), tF는 플러시 지연시간이다.
즉, EXT4에 기반한 파일 시스템에는 저널링 성능상의 제약 또는 별도의 하드웨어 컴포넌트를 추가해야 하는 부담이 있지만, BarrierFS에서는 추가적인 하드웨어 컴포넌트 없이 간단히 저널링 성능을 향상시킬 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 듀얼 모드 저널링 방법은 저널 트랜잭션의 기록 순서를 보장하는 모드인 순서보장모드 및 저널 트랜잭션과 관련된 입출력을 직렬화하여 데이터의 기록까지 보장하는 모드인 지속보장모드를 지원하는 듀얼 모드 저널링 방법 및 장치를 제공하는 효과가 있다.
또한, 본 발명의 순서보장모드는 커밋 쓰레드와 플러시 쓰레드의 듀얼 쓰레드를 이용하여 동시에 여러 개의 저널 트랜잭션을 수행함으로써, 저널링 성능을 향상시킬 수 있으며, 지속보장모드는 기존 동기화 명령의 재구성을 통해, 플러시(flush) 및 DMA 전송의 오버헤드와 컨텍스트 스위치(context switch)를 감소시킴으로써, 파일시스템의 저널링 처리율(throughput)을 증가시키는 있는 효과가 있다.
도 5는 본 발명의 일 실시예에 따른 듀얼 모드 저널링을 지원하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 듀얼 모드 저널링을 지원하는 컴퓨팅 장치(500)는 스토리지(510) 및 프로세서(520)를 포함한다.
한편, 본 발명의 일 실시예에 따른 듀얼 모드 저널링을 지원하는 컴퓨팅 장치(500)는 데스크탑PC, 노트북PC, 스마트폰, 태블릿 및 웨어러블 기기 등과 같이 저널링 파일 시스템을 필요로 하는 다양한 종류의 기기에 탑재될 수 있다.
스토리지(510)는 듀얼 모드 저널링을 지원하는 파일 시스템을 운영하는 소프트웨어가 탑재된다.
프로세서(520)는 스토리지(510)에 탑재된 소프트웨어를 운영한다.
이때, 프로세서(520)는 순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하고, 커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 스토리지(510)에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 스토리지(510)에게 전송하되, 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 저널데이터가 스토리지(510)에 기록되도록 설정한 후, 반환하고, 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 저널데이터를 순차적으로 스토리지(510)에 기록한 후, 반환한다.
다른 실시예에서는, 배리어 기반 쓰기 명령은 배리어 기반 쓰기 명령이 스토리지(510)의 커맨드 큐에 입력된 시점인 입력시점을 기준으로, 그 입력시점 이전에 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 그 입력시점 이후에 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 스토리지(510) 내부에서 처리될 수 있다.
또 다른 실시예에서는, 배리어 기반 쓰기 명령은 쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나, 쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성될 수 있다.
또 다른 실시예에서는, 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때, 프로세서(520)는 그 JD 및 JC 각각에 대한 배리어 기반 쓰기 명령을 순차적으로 전송하고, 플러시 쓰레드가 그 JD 및 JC 각각을 순차적으로 스토리지(510)에 기록하도록 할 수 있다.
또 다른 실시예에서는, 프로세서(520)는 저널데이터에 대한 배리어 기반 쓰기 명령이 스토리지(510)에게 전송되면, 저널데이터를 스토리지(510)에게 DMA를 이용하여 전송할 수 있다.
또 다른 실시예에서는, 플러시 쓰레드는 저널데이터가 스토리지(510)에 전송된 이후에, 저널데이터를 스토리지(510)에 기록하기 시작할 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (12)

  1. 호스트가 듀얼 모드 저널링을 수행하는 방법에 있어서,
    순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하는 단계;
    커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 상기 스토리지에게 전송하는 단계;
    상기 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 상기 저널데이터가 상기 스토리지에 기록되도록 설정한 후, 반환하는 단계; 및
    상기 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 상기 플러시 쓰레드를 이용하여 상기 저널데이터를 상기 스토리지에 기록한 후, 반환하는 단계
    를 포함하는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  2. 제1항에 있어서,
    상기 배리어 기반 쓰기 명령은
    상기 배리어 기반 쓰기 명령이 상기 스토리지의 커맨드 큐에 입력된 시점인 입력시점을 기준으로,
    상기 입력시점 이전에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 상기 입력시점 이후에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 상기 스토리지 내부에서 처리되는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  3. 제1항에 있어서,
    상기 배리어 기반 쓰기 명령은
    쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나,
    쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성되는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  4. 제1항에 있어서,
    상기 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때,
    상기 스토리지에게 전송하는 단계는
    상기 JD 및 상기 JC 각각에 대한 상기 배리어 기반 쓰기 명령을 순차적으로 전송하고,
    상기 스토리지에 기록되도록 설정한 후, 반환하는 단계 및 상기 저널데이터를 상기 스토리지에 기록한 후, 반환하는 단계는
    상기 플러시 쓰레드가 상기 JD 및 상기 JC 각각을 순차적으로 상기 스토리지에 기록하도록 하는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  5. 제1항에 있어서,
    상기 호스트는
    상기 저널데이터에 대한 상기 배리어 기반 쓰기 명령이 상기 스토리지에게 전송되면, 상기 저널데이터를 상기 스토리지에게 DMA를 이용하여 전송하는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  6. 제1항에 있어서,
    상기 플러시 쓰레드는
    상기 저널데이터가 상기 스토리지에 전송된 이후에, 상기 저널데이터를 상기 스토리지에 기록하기 시작하는 것을 특징으로 하는 듀얼 모드 저널링 방법.
  7. 듀얼 모드 저널링을 지원하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및
    상기 메모리에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고,
    상기 프로세서는
    순서보장모드 및 지속보장모드 중 하나의 모드에 대응되는 동기화 명령을 호출하고,
    커밋 쓰레드를 이용하여, 저널 트랜잭션을 위한 데이터인 저널데이터에 대하여 상기 스토리지에서의 쓰기 순서가 보장되는 배리어 기반 쓰기 명령을 상기 스토리지에게 전송하되,
    상기 순서보장모드에 대응되는 동기화 명령인 순서보장동기화명령을 호출한 경우에, 플러시 쓰레드를 이용하여 상기 저널데이터가 상기 스토리지에 기록되도록 설정한 후, 반환하고,
    상기 지속보장모드에 대응되는 동기화 명령인 지속보장동기화명령을 호출한 경우에, 상기 플러시 쓰레드를 이용하여 상기 저널데이터를 순차적으로 상기 스토리지에 기록한 후, 반환하는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
  8. 제7항에 있어서,
    상기 배리어 기반 쓰기 명령은
    상기 배리어 기반 쓰기 명령이 상기 스토리지의 커맨드 큐에 입력된 시점인 입력시점을 기준으로,
    상기 입력시점 이전에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리된 이후로, 상기 입력시점 이후에 상기 커맨드 큐에 입력된 적어도 하나의 쓰기 명령이 처리되기 이전에, 상기 스토리지 내부에서 처리되는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
  9. 제7항에 있어서,
    상기 배리어 기반 쓰기 명령은
    쓰기 명령과 배리어 설정 명령을 조합하여 호출하도록 구성되거나,
    쓰기 명령에 미리 정해진 배리어플래그를 입력하도록 구성되는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
  10. 제7항에 있어서,
    상기 저널데이터가 저널 디스크립터 블록과 로그 블록을 포함하는 JD 및 커밋 블록을 포함하는 JC로 구성될 때,
    상기 프로세서는
    상기 JD 및 상기 JC 각각에 대한 상기 배리어 기반 쓰기 명령을 순차적으로 전송하고,
    상기 플러시 쓰레드가 상기 JD 및 상기 JC 각각을 순차적으로 상기 스토리지에 기록하도록 하는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
  11. 제7항에 있어서,
    상기 프로세서는
    상기 저널데이터에 대한 상기 배리어 기반 쓰기 명령이 상기 스토리지에게 전송되면, 상기 저널데이터를 상기 스토리지에게 DMA를 이용하여 전송하는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
  12. 제7항에 있어서,
    상기 플러시 쓰레드는
    상기 저널데이터가 상기 스토리지에 전송된 이후에, 상기 저널데이터를 상기 스토리지에 기록하기 시작하는 것을 특징으로 하는 듀얼 모드 저널링을 지원하는 컴퓨팅 장치.
KR1020190015745A 2018-10-19 2019-02-11 듀얼 모드 저널링 방법 및 장치 KR20200044646A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180125446 2018-10-19
KR1020180125446 2018-10-19

Publications (1)

Publication Number Publication Date
KR20200044646A true KR20200044646A (ko) 2020-04-29

Family

ID=70466728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190015745A KR20200044646A (ko) 2018-10-19 2019-02-11 듀얼 모드 저널링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20200044646A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853614B2 (en) 2021-11-26 2023-12-26 Samsung Electronics Co., Ltd. Synchronous write method and device, storage system and electronic device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853614B2 (en) 2021-11-26 2023-12-26 Samsung Electronics Co., Ltd. Synchronous write method and device, storage system and electronic device

Similar Documents

Publication Publication Date Title
Won et al. {Barrier-Enabled}{IO} stack for flash storage
EP2737383B1 (en) Flash-dram hybrid memory module
US7788453B2 (en) Redirection of storage access requests based on determining whether write caching is enabled
US7739475B2 (en) System and method for updating dirty data of designated raw device
US6895482B1 (en) Reordering and flushing commands in a computer memory subsystem
US7383290B2 (en) Transaction processing systems and methods utilizing non-disk persistent memory
US8607239B2 (en) Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread
KR920006851A (ko) 데이터 처리시스템 및 방법
EP0375121A2 (en) Method and apparatus for efficient DRAM control
US10983833B2 (en) Virtualized and synchronous access to hardware accelerators
US20140280394A1 (en) Multi-Threaded Message Passing Journal
JPH04306748A (ja) 情報処理装置
KR101317760B1 (ko) 반도체 저장 장치 기반 시스템용 동적 랜덤 액세스 메모리
US7836215B2 (en) Method for providing high performance storage devices
KR102262209B1 (ko) 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치
KR20200044646A (ko) 듀얼 모드 저널링 방법 및 장치
US10169157B2 (en) Efficient state tracking for clusters
US20150154117A1 (en) Providing record level sharing (rls) to individual catalogs
CN112748869B (zh) 一种数据处理方法及装置
CN109634532B (zh) 多VxWorks主机共享访问存储介质的方法
KR102132387B1 (ko) 배리어 기반 로깅 방법 및 장치
JP3615219B2 (ja) システムコントローラ、コントロールシステムおよびシステムコントロール方法
Sendir et al. Optimized durable commitlog for apache cassandra using capi-flash
KR102254501B1 (ko) 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법
KR20190096837A (ko) 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application