KR20190096837A - 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 - Google Patents

충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 Download PDF

Info

Publication number
KR20190096837A
KR20190096837A KR1020190015742A KR20190015742A KR20190096837A KR 20190096837 A KR20190096837 A KR 20190096837A KR 1020190015742 A KR1020190015742 A KR 1020190015742A KR 20190015742 A KR20190015742 A KR 20190015742A KR 20190096837 A KR20190096837 A KR 20190096837A
Authority
KR
South Korea
Prior art keywords
page
transaction
conflict
information
running
Prior art date
Application number
KR1020190015742A
Other languages
English (en)
Other versions
KR102123616B1 (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 KR20190096837A publication Critical patent/KR20190096837A/ko
Application granted granted Critical
Publication of KR102123616B1 publication Critical patent/KR102123616B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

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

Abstract

충돌 페이지 리스트를 이용한 병렬 저널링 방법을 개시한다. 본 발명의 일 실시예에 따른 호스트가 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 방법은 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계; 상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하는 단계; 상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하는 단계; 및 상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계를 포함한다.

Description

충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치{METHOD AND APPARATUS FOR PARALLEL JOURNALING USING CONFLICT PAGE LIST}
본 발명은 충돌 페이지 리스트를 이용하여 효율적으로 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 장치에 관한 것이다.
파일 시스템 저널링은 호스트 시스템이 예상치 못한 문제점(정전 등)의 발생으로 중지되었을 경우, 스토리지의 내용(파일 시스템의 내용)을 복구하는 기법이다. 예를 들어, XFS, EXT4등이 잘 알려져 있는 저널링 파일 시스템이다. 저널링 파일 시스템에서는 변경된 스토리지의 내용들을 모아 메모리에 보존한다. 이를 저널 트랜젝션이라 한다. 저널 트랜젝션은 주기적으로 스토리지의 특정 영역(저널영역)에 안전하게 저장되며, 이를 커밋(commit)이라고 한다. 저널영역에 저장된 내용들은 추후 원래의 위치에 다시 저장된다. 이를 체크포인트라고 한다.
기존의 대부분의 저널링 파일 시스템은 하나의 트랜잭션을 안전히 스토리지에 기록한 후에, 다음 트랜잭션을 스토리지에 기록한다. 이처럼, 저널 트랜잭션을 스토리지에 기록하는 방식이 완전히 직렬화(serialize)되어 있다. 하지만, 이와 같은 직렬화 기반의 저널링은 현대의 저널링 파일 시스템의 심각 성능 병목의 원인이 된다.
직렬화 저널링에서는 최대 2개의 트랜잭션이 존재할 수 있다. 즉, 현재 메모리에 보존중인 트랜잭션과 스토리지에 기록중인 트랜잭션의 2개이다. 기존 직렬화 저널링에서서는 페이지 충돌을 다음의 방법으로 해결한다. 첫 번째, 메모리 트랜잭션에 디스크 페이지를 추가할 때, 해당 페이지가 현재 커밋 중인지 여부를 검사한다. 만약 커밋 중이면 추가를 중지한다. 두 번째, 트랜잭션에 대한 커밋을 완료하면, 커밋된 페이지들을 검사하여 메모리 트랜잭션에 추가되어야 할(즉, 추가를 대기중인) 페이지가 있는지 검사한다. 그 결과, 추가를 대기중인 페이지가 있다면 이 페이지들을 메모리 트랜잭션에 추가한다.
즉, 현재 진행중인 트랜잭션의 커밋이 완료되면, 파일 시스템은 메모리에 보존 중인 트랜잭션을 스토리지에 커밋한다. 스토리지에 모든 페이지들이 안전히 기록되었고, 충돌된 페이지들이 메모리 트랜잭션에 삽입되었기 때문에, 기존 트랜잭션의 커밋이 완료되면 메모리에 보존중인 트랜잭션을 안전히 스토리지에 커밋할 수 있게 된다. 이와 같은 방법으로 직렬화 트랜잭션은 페이지 충돌 문제를 해결하고 있다.
하지만, 종래 기술은 다수의 커밋팅 트랜잭션이 존재하는 환경에서는 작동하지 않는다. 예컨대, 한 트랜잭션의 커밋이 완료되고, 충돌 페이지들을 메모리 트랜잭션에 삽입했다 가정하면, 여전히 현재 커밋 중인 트랜잭션에 메모리 트랜잭션과의 충돌이 발생한 페이지들이 존재할 수 있다. 즉, 한 트랜잭션에 대해서 커밋이 완료되었다고 해서, 그 완료된 트랜잭션에 있는 충돌페이지를 메모리 트랜잭션에 삽입한 후에, 즉시 메모리 트랜잭션을 커밋할 수 없다. 이는, 메모리 트랜잭션에 추가되어야 할 충돌페이지들이 여전히 존재할 수 있기 때문이다. 만약, 하나의 트랜잭션이 커밋되었을 시, 종래기법과 마찬가지로 즉시 메모리 트랜잭션을 커밋하면, 메모리 트랜잭션이 반드시 기록해야 할 데이터 페이지들이 누락된 상황에서 트랜잭션의 커밋이 진행될 수 있다. 이 경우에는 시스템의 정상복구가 보장되지 않음은 물론이다.
따라서, 충돌 페이지 리스트를 이용하여 효율적으로 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 방법이 적용된 컴퓨팅 장치에 대한 필요성이 대두되고 있다.
관련 선행기술로는 대한민국 공개특허공보 제10-2018-0070102호(발명의 명칭 : 저널링 파일 시스템에서의 메타데이터 저장 방법 및 그 방법이 적용된 데이터 기록 장치)가 있다.
본 발명은 충돌 페이지 리스트를 이용하여 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 방법이 적용된 컴퓨팅 장치를 제공하고자 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법은 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계; 상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하는 단계; 상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하는 단계; 및 상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계를 포함한다.
바람직하게는, 상기 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계는 상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하는 단계; 및 상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계를 포함할 수 있다.
바람직하게는, 상기 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록될 수 있다.
바람직하게는, 상기 충돌페이지정보를 삭제하는 단계는 상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 더 전송하도록 할 수 있다.
바람직하게는, 상기 충돌페이지정보를 삭제하는 단계와 상기 커밋팅 트랜잭션으로 전환하는 단계의 사이에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하는 단계를 더 포함하고, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계는 상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행할 수 있다.
또한, 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치는 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및 상기 스토리지에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고, 상기 프로세서는 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하고, 상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하고, 상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하고, 상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환할 수 있다.
바람직하게는, 상기 프로세서는 상기 적어도 하나의 충돌페이지가 존재하는지 확인할 때, 상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하고, 상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인할 수 있다.
바람직하게는, 상기 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 상기 스토리지에 기록될 수 있다.
바람직하게는, 상기 프로세서는 상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송할 수 있다.
바람직하게는, 상기 프로세서는 상기 충돌페이지정보를 삭제한 이후에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하고, 상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행할 수 있다.
본 발명은 충돌 페이지 리스트를 이용함으로써 2개 혹은 그 이상의 트랜잭션에 충돌 페이지가 존재하는 경우에도 이를 효율적으로 관리 및 해결할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법을 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법을 설명하기 위한 흐름도이다.
단계 S110에서는, 호스트가 커밋(commit)을 진행할 러닝 트랜잭션(running transaction)에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션(committing transaction)에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인한다.
일반적으로 저널링 파일 시스템에서 다수의 저널 트랜젝션을 동시에 스토리지에 기록할 때, 이들 트랜잭션에 포함된 페이지들은 반드시 서로 배반적(mutually exclusive, '소')이어야 한다. 이때, 하나의 페이지가 두개 이상의 트랜잭션에 포함되는 경우에 페이지 충돌이 발생했다고 하며, 그 페이지를 충돌페이지로 정의한다.
즉, 호스트는 러닝 트랜잭션과 적어도 하나의 커밋팅 트랜잭션 간에 페이지 충돌이 발생하였는지 확인하여, 적어도 하나의 충돌페이지가 존재하는지 확인할 수 있다.
다른 실시예에서는, 호스트가 트랜잭션정보를 획득하여 적어도 하나의 충돌페이지가 존재하는지 확인할 수 있다.
단계 S113에서는, 호스트가 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득할 수 있다.
예컨대, 호스트는 대상페이지에서 그 대상페이지가 속한 트랜잭션에 대응되는 포인터를 확인하여 트랜잭션정보를 획득할 수 있다.
단계 S116에서는, 호스트가 그 트랜잭션정보를 이용하여 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계
예컨대, 호스트는 해당 포인터가 null인 경우 그 대상페이지가 속한 트랜잭션이 존재하지 않는다는 정보를 얻을 수 있으며, 해당 포인터가 특정한 주소값을 가지는 경우 그 대상페이지가 속한 트랜잭션이 존재한다는 정보를 얻을 수 있다.
단계 S120에서는, 호스트가 그 적어도 하나의 충돌페이지가 존재하면, 그 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가한다.
이때, 호스트는 개별 러닝 트랜잭션에 대하여 충돌 페이지 리스트(conflict page list)를 보유하고 있으며, 개별 러닝 트랜잭션별로 적어도 하나의 충돌페이지에 관한 정보인 충돌페이지정보를 충돌 페이지 리스트에 삽입하여 관리할 수 있다.
단계 S130에서는, 호스트가 그 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 충돌 페이지 리스트에서 그 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제한다.
즉, 호스트는 그 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료된 이후에, 충돌 페이지 리스트에서 그 각각의 충돌페이지에 대응되는 충돌페이지정보를 삭제할 수 있다.
예컨대, 호스트는 하나의 러닝 트랜잭션(A)에 2개의 충돌페이지 {P1, P2}가 있다고 가정할 때, P1을 포함하는 커밋팅 트랜잭션(B)와 P2를 포함하는 커밋팅 트랜잭션(C)의 커밋이 완료되면, 충돌 페이지 리스트에서 {P1, P2} 각각에 대응되는 충돌페이지정보를 삭제할 수 있다.
보다 구체적으로, 호스트는 커밋팅 트랜잭션(B)의 커밋이 완료되면 P1에 대응되는 충돌페이지정보를 삭제하고, 커밋팅 트랜잭션(C)의 커밋이 완료되면 P2에 대응되는 충돌페이지정보를 삭제
마지막으로 단계 S140에서는, 호스트가 러닝 트랜잭션의 커밋을 진행하여, 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환한다.
즉, 호스트는 그 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 모두 완료된 이후에, 러닝 트랜잭션의 커밋을 진행할 수 있다. 그 결과 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환할 수 있다.
다른 실시예에서는, 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록될 수 있다.
예컨대, 호스트에 3개의 트랜잭션이 존재하는 경우를 가정할 수 있다. 이 3개의 트랜잭션은 각각 러닝 트랜잭션(A), 커밋팅 트랜잭션(B) 및 커밋팅 트랜잭션(C)이다.
이때, 러닝 트랜잭션(A)에 대응되는 프로세스(P1)가 러닝 트랜잭션(A)의 기록을 수행하고, 커밋팅 트랜잭션(B)에 대응되는 프로세스(P2)가 커밋팅 트랜잭션(B)의 기록을 수행하고, 커밋팅 트랜잭션(C)에 대응되는 프로세스(P3)가 커밋팅 트랜잭션(C)의 기록을 수행할 수 있다.
또 다른 실시예에서는, 호스트가 단계 S130에서 충돌페이지정보를 삭제한 후, 그 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 더 전송하도록 할 수 있다.
예컨대, 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드에 의해 충돌페이지정보가 삭제되었을 때, 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드는 그 삭제 사실을 알지 못할 수 있다. 따라서, 호스트는 그 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송하도록 할 수 있다.
이때, 소정의 시그널은 미리 약속된 시그널로써, 호스트에서 동작하는 운영체제(OS)에서 지원하는 프로세스간 통신 방식 또는 쓰레드간 통신 방식을 이용하여 전송될 수 있다.
또 다른 실시예에서는, 호스트가 단계 S130과 단계 S140의 사이에, 러닝 트랜잭션에 대응되는 충돌 페이지 리스트가 비어있는지 확인할 수 있다.
즉, 호스트는 충돌페이지정보를 삭제한 이후에, 러닝 트랜잭션의 커밋을 진행하기 이전에, 충돌 페이지 리스트가 비어있는지 확인할 수 있다. 다시 말하면, 호스트는 충돌 페이지 리스트가 비어있을 때에만 러닝 트랜잭션의 커밋을 진행할 수 있다.
나아가, 호스트가 충돌 페이지 리스트가 비어있는지 확인하는 과정은 앞서 상술한 다른 실시예에서 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송하는 것과 연계될 수 있다.
한편, 도 3을 참조하면, 커밋팅 트랜잭션 T1와 러닝 트랜잭션 T2 사이에 페이지 P에 대해서 페이지 충돌이 발생한 상황이 나타나있다. 보다 구체적으로, 프로세스 P1이 대응되는 페이지 P를 러닝 트랜잭션 T1에 삽입한다. 프로세스 P1은 동기화 연산(예, fsync 함수)을 수행하여 러닝 트랜잭션 T1을 커밋팅 트랜잭션으로 바꾸고 커밋을 시작한다. 그러나, 트랜잭션 T1 커밋 중, 프로세스 P2가 페이지 P를 새로운 러닝 트랜잭션 T2에 삽입하려 한다(①). 이때, 프로세스 P2는 페이지 P를 러닝 트랜잭션 T2에 삽입하지 않고, 러닝 트랜잭션 T2의 충돌 페이지 리스트에 삽입한다(②). 프로세스 P2는 동기화 연산을 호출하고 러닝 트랜잭션 커밋을 시도하지만, 러닝 트랜잭션 T2의 충돌 페이지 리스트가 비어 있지 않아서 대기한다. 커밋팅 트랜잭션 T1의 커밋이 완료된 후, 프로세스 P1은 트랜잭션 T1 내 페이지를 순회한다. 그 중 충돌 페이지인 페이지 P를 발견하고, 페이지 P를 충돌 페이지 리스트에서 제거한 후, 대기 중인 P2에게 시그널을 보낸다(③). P2는 다시 충돌 페이지 리스트가 비어 있는지 확인하고, 충돌 페이지 리스트가 비어 있음을 확인한 후, 트랜잭션 T2를 커밋한다.
이와 같이, 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법은 충돌페이지가 존재하지 않는 경우에 복수의 트랜잭션에 대한 커밋을 병렬적으로 진행할 수 있으며, 2개 혹은 그 이상의 트랜잭션에 충돌페이지가 존재하는 경우에도 충돌 페이지 리스트를 이용함으로써 이를 효율적으로 관리 및 해결할 수 있는 효과가 있다.
도 2는 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치(200)는 스토리지(210) 및 프로세서(220)를 포함한다.
한편, 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치(200)는 스마트폰, 태블릿PC, 데스크탑, 노트북 및 웨어러블 기기 등에 탑재될 수 있다.
스토리지(210)는 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 파일 시스템을 운영하는 소프트웨어가 탑재된다.
프로세서(220)는 스토리지(210)에 탑재된 소프트웨어를 운영한다.
이때, 프로세서(220)는 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하고, 그 적어도 하나의 충돌페이지가 존재하면, 그 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하고, 그 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 충돌 페이지 리스트에서 그 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하고, 러닝 트랜잭션의 커밋을 진행하여, 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환한다.
다른 실시예에서는, 프로세서(220)는 그 적어도 하나의 충돌페이지가 존재하는지 확인할 때, 그 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하고, 그 트랜잭션정보를 이용하여 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인할 수 있다.
또 다른 실시예에서는, 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록될 수 있다.
또 다른 실시예에서는, 프로세서(220)는 충돌페이지정보를 삭제한 후, 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송하도록 할 수 있다.
또 다른 실시예에서는, 프로세서(220)는 충돌페이지정보를 삭제한 이후에, 러닝 트랜잭션에 대응되는 충돌 페이지 리스트가 비어있는지 확인하고, 충돌 페이지 리스트가 비어있으면, 러닝 트랜잭션의 커밋을 진행한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (10)

  1. 호스트가 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 방법에 있어서,
    커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계;
    상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하는 단계;
    상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하는 단계; 및
    상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계
    를 포함하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계는
    상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하는 단계; 및
    상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계
    를 포함하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법.
  3. 제1항에 있어서,
    상기 복수의 트랜잭션은
    트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록되는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법.
  4. 제3항에 있어서,
    상기 충돌페이지정보를 삭제하는 단계는
    상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 더 전송하도록 하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법.
  5. 제1항에 있어서,
    상기 충돌페이지정보를 삭제하는 단계와 상기 커밋팅 트랜잭션으로 전환하는 단계의 사이에,
    상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하는 단계
    를 더 포함하고,
    상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계는
    상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법.
  6. 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및
    상기 스토리지에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고,
    상기 프로세서는
    커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하고,
    상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하고,
    상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하고,
    상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
  7. 제6항에 있어서,
    상기 프로세서는
    상기 적어도 하나의 충돌페이지가 존재하는지 확인할 때,
    상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하고,
    상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
  8. 제6항에 있어서,
    상기 복수의 트랜잭션은
    트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 상기 스토리지에 기록되는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 프로세서는
    상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송하도록 하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
  10. 제6항에 있어서,
    상기 프로세서는
    상기 충돌페이지정보를 삭제한 이후에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하고,
    상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
KR1020190015742A 2018-02-09 2019-02-11 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 KR102123616B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180016577 2018-02-09
KR20180016577 2018-02-09

Publications (2)

Publication Number Publication Date
KR20190096837A true KR20190096837A (ko) 2019-08-20
KR102123616B1 KR102123616B1 (ko) 2020-06-17

Family

ID=67807649

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190015742A KR102123616B1 (ko) 2018-02-09 2019-02-11 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102123616B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220074537A (ko) * 2020-11-27 2022-06-03 이화여자대학교 산학협력단 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328933A (ja) * 1995-05-30 1996-12-13 Nec Corp 並列処理システムのファイルアクセス制御方式
KR100316840B1 (ko) * 1998-12-21 2002-01-15 김진찬 프로세서로드데이타생성장치및방법
JP2008508582A (ja) * 2004-07-27 2008-03-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 部分的に順序付けられたトランザクションをスケジューリングしてイベントを関連付けるための方法およびシステム
JP2008269578A (ja) * 2007-03-27 2008-11-06 Nec Corp 競合部分処理検出方法、装置及びコンピュータプログラム
KR20160113207A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328933A (ja) * 1995-05-30 1996-12-13 Nec Corp 並列処理システムのファイルアクセス制御方式
KR100316840B1 (ko) * 1998-12-21 2002-01-15 김진찬 프로세서로드데이타생성장치및방법
JP2008508582A (ja) * 2004-07-27 2008-03-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 部分的に順序付けられたトランザクションをスケジューリングしてイベントを関連付けるための方法およびシステム
JP2008269578A (ja) * 2007-03-27 2008-11-06 Nec Corp 競合部分処理検出方法、装置及びコンピュータプログラム
KR20160113207A (ko) * 2014-03-26 2016-09-28 인텔 코포레이션 하이브리드 트랜잭션 메모리 시스템에서 최대 동시실행을 가능케 하기

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220074537A (ko) * 2020-11-27 2022-06-03 이화여자대학교 산학협력단 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템

Also Published As

Publication number Publication date
KR102123616B1 (ko) 2020-06-17

Similar Documents

Publication Publication Date Title
US9798792B2 (en) Replication for on-line hot-standby database
CN107391628B (zh) 数据同步方法及装置
US8799213B2 (en) Combining capture and apply in a distributed information sharing system
US10860539B2 (en) De-duplication-based remote replication method, and apparatus
US11386065B2 (en) Database concurrency control through hash-bucket latching
US9229970B2 (en) Methods to minimize communication in a cluster database system
US9785514B1 (en) Techniques for file system recovery
CN101567805A (zh) 并行文件系统发生故障后的恢复方法
US9652492B2 (en) Out-of-order execution of strictly-ordered transactional workloads
CN109783578B (zh) 数据读取方法、装置、电子设备以及存储介质
KR20040074627A (ko) 복제 명령 분배 시스템 및 방법
US9330153B2 (en) System, method, and computer readable medium that coordinates between devices using exchange of log files
US20090132534A1 (en) Remote replication synchronizing/accessing system and method thereof
EP3696658B1 (en) Log management method, server and database system
WO2020119709A1 (zh) 数据合并的实现方法、装置、系统及存储介质
US20120059997A1 (en) Apparatus and method for detecting data race
CN110196788B (zh) 一种数据读取方法、装置、系统及存储介质
US9386073B2 (en) Techniques for performing processing for database
US9015116B2 (en) Consistent replication of transactional updates
KR102123616B1 (ko) 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치
CN106997305B (zh) 一种事务处理方法与装置
US9424261B2 (en) Techniques to take clean database file snapshot in an online database
CN109857523B (zh) 一种用于实现数据库高可用性的方法及装置
CN113886500A (zh) 一种数据处理方法、装置、服务器以及存储介质
CN117435574A (zh) 改进的二阶段提交事务实现方法及系统、设备、存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant