KR102123616B1 - 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 - Google Patents
충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 Download PDFInfo
- Publication number
- KR102123616B1 KR102123616B1 KR1020190015742A KR20190015742A KR102123616B1 KR 102123616 B1 KR102123616 B1 KR 102123616B1 KR 1020190015742 A KR1020190015742 A KR 1020190015742A KR 20190015742 A KR20190015742 A KR 20190015742A KR 102123616 B1 KR102123616 B1 KR 102123616B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- transaction
- conflict
- information
- list
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual 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
본 발명은 충돌 페이지 리스트를 이용하여 효율적으로 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 장치에 관한 것이다.
파일 시스템 저널링은 호스트 시스템이 예상치 못한 문제점(정전 등)의 발생으로 중지되었을 경우, 스토리지의 내용(파일 시스템의 내용)을 복구하는 기법이다. 예를 들어, XFS, EXT4등이 잘 알려져 있는 저널링 파일 시스템이다. 저널링 파일 시스템에서는 변경된 스토리지의 내용들을 모아 메모리에 보존한다. 이를 저널 트랜젝션이라 한다. 저널 트랜젝션은 주기적으로 스토리지의 특정 영역(저널영역)에 안전하게 저장되며, 이를 커밋(commit)이라고 한다. 저널영역에 저장된 내용들은 추후 원래의 위치에 다시 저장된다. 이를 체크포인트라고 한다.
기존의 대부분의 저널링 파일 시스템은 하나의 트랜잭션을 안전히 스토리지에 기록한 후에, 다음 트랜잭션을 스토리지에 기록한다. 이처럼, 저널 트랜잭션을 스토리지에 기록하는 방식이 완전히 직렬화(serialize)되어 있다. 하지만, 이와 같은 직렬화 기반의 저널링은 현대의 저널링 파일 시스템의 심각 성능 병목의 원인이 된다.
직렬화 저널링에서는 최대 2개의 트랜잭션이 존재할 수 있다. 즉, 현재 메모리에 보존중인 트랜잭션과 스토리지에 기록중인 트랜잭션의 2개이다. 기존 직렬화 저널링에서서는 페이지 충돌을 다음의 방법으로 해결한다. 첫 번째, 메모리 트랜잭션에 디스크 페이지를 추가할 때, 해당 페이지가 현재 커밋 중인지 여부를 검사한다. 만약 커밋 중이면 추가를 중지한다. 두 번째, 트랜잭션에 대한 커밋을 완료하면, 커밋된 페이지들을 검사하여 메모리 트랜잭션에 추가되어야 할(즉, 추가를 대기중인) 페이지가 있는지 검사한다. 그 결과, 추가를 대기중인 페이지가 있다면 이 페이지들을 메모리 트랜잭션에 추가한다.
즉, 현재 진행중인 트랜잭션의 커밋이 완료되면, 파일 시스템은 메모리에 보존 중인 트랜잭션을 스토리지에 커밋한다. 스토리지에 모든 페이지들이 안전히 기록되었고, 충돌된 페이지들이 메모리 트랜잭션에 삽입되었기 때문에, 기존 트랜잭션의 커밋이 완료되면 메모리에 보존중인 트랜잭션을 안전히 스토리지에 커밋할 수 있게 된다. 이와 같은 방법으로 직렬화 트랜잭션은 페이지 충돌 문제를 해결하고 있다.
하지만, 종래 기술은 다수의 커밋팅 트랜잭션이 존재하는 환경에서는 작동하지 않는다. 예컨대, 한 트랜잭션의 커밋이 완료되고, 충돌 페이지들을 메모리 트랜잭션에 삽입했다 가정하면, 여전히 현재 커밋 중인 트랜잭션에 메모리 트랜잭션과의 충돌이 발생한 페이지들이 존재할 수 있다. 즉, 한 트랜잭션에 대해서 커밋이 완료되었다고 해서, 그 완료된 트랜잭션에 있는 충돌페이지를 메모리 트랜잭션에 삽입한 후에, 즉시 메모리 트랜잭션을 커밋할 수 없다. 이는, 메모리 트랜잭션에 추가되어야 할 충돌페이지들이 여전히 존재할 수 있기 때문이다. 만약, 하나의 트랜잭션이 커밋되었을 시, 종래기법과 마찬가지로 즉시 메모리 트랜잭션을 커밋하면, 메모리 트랜잭션이 반드시 기록해야 할 데이터 페이지들이 누락된 상황에서 트랜잭션의 커밋이 진행될 수 있다. 이 경우에는 시스템의 정상복구가 보장되지 않음은 물론이다.
따라서, 충돌 페이지 리스트를 이용하여 효율적으로 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 방법이 적용된 컴퓨팅 장치에 대한 필요성이 대두되고 있다.
관련 선행기술로는 대한민국 공개특허공보 제10-2018-0070102호(발명의 명칭 : 저널링 파일 시스템에서의 메타데이터 저장 방법 및 그 방법이 적용된 데이터 기록 장치)가 있다.
본 발명은 충돌 페이지 리스트를 이용하여 복수의 트랜잭션을 커밋하는 병렬 저널링 방법 및 그 방법이 적용된 컴퓨팅 장치를 제공하고자 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법은 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계; 상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하는 단계; 상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하는 단계; 및 상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계를 포함한다.
바람직하게는, 상기 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계는 상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하는 단계; 및 상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계를 포함할 수 있다.
바람직하게는, 상기 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록될 수 있다.
바람직하게는, 상기 충돌페이지정보를 삭제하는 단계는 상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 더 전송하도록 할 수 있다.
바람직하게는, 상기 충돌페이지정보를 삭제하는 단계와 상기 커밋팅 트랜잭션으로 전환하는 단계의 사이에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하는 단계를 더 포함하고, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계는 상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행할 수 있다.
또한, 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치는 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및 상기 스토리지에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고, 상기 프로세서는 커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하고, 상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하고, 상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하고, 상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환할 수 있다.
바람직하게는, 상기 프로세서는 상기 적어도 하나의 충돌페이지가 존재하는지 확인할 때, 상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하고, 상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인할 수 있다.
바람직하게는, 상기 복수의 트랜잭션은 트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 상기 스토리지에 기록될 수 있다.
바람직하게는, 상기 프로세서는 상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송할 수 있다.
바람직하게는, 상기 프로세서는 상기 충돌페이지정보를 삭제한 이후에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하고, 상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행할 수 있다.
본 발명은 충돌 페이지 리스트를 이용함으로써 2개 혹은 그 이상의 트랜잭션에 충돌 페이지가 존재하는 경우에도 이를 효율적으로 관리 및 해결할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 충돌 페이지 리스트를 이용한 병렬 저널링 방법을 설명하기 위한 도면이다.
도 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항에 있어서,
상기 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계는
상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하는 단계; 및
상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 단계
를 포함하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법. - 제1항에 있어서,
상기 복수의 트랜잭션은
트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 스토리지에 기록되는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법. - 제3항에 있어서,
상기 충돌페이지정보를 삭제하는 단계는
상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 더 전송하도록 하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법. - 제1항에 있어서,
상기 충돌페이지정보를 삭제하는 단계와 상기 커밋팅 트랜잭션으로 전환하는 단계의 사이에,
상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하는 단계
를 더 포함하고,
상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 단계는
상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링 방법. - 복수의 트랜잭션을 이용하여 병렬 저널링을 수행하는 파일 시스템을 운영하는 소프트웨어가 탑재된 스토리지; 및
상기 스토리지에 탑재된 소프트웨어를 운영하는 프로세서를 포함하고,
상기 프로세서는
커밋을 진행할 러닝 트랜잭션에 추가될 적어도 하나의 대상페이지 중에서 커밋을 진행중인 적어도 하나의 커밋팅 트랜잭션에 포함된 적어도 하나의 충돌페이지가 존재하는지 확인하고,
상기 적어도 하나의 충돌페이지가 존재하면, 상기 적어도 하나의 충돌 페이지에 관한 정보인 적어도 하나의 충돌페이지정보를 상기 러닝 트랜잭션에 대응되는 충돌 페이지 리스트에 추가하고,
상기 적어도 하나의 충돌페이지 각각에 대응되는 개별 커밋팅 트랜잭션의 커밋이 완료되면, 상기 충돌 페이지 리스트에서 상기 적어도 하나의 충돌페이지 각각에 대응되는 충돌페이지정보를 삭제하고,
상기 러닝 트랜잭션의 커밋을 진행하여, 상기 러닝 트랜잭션을 커밋팅 트랜잭션으로 전환하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치. - 제6항에 있어서,
상기 프로세서는
상기 적어도 하나의 충돌페이지가 존재하는지 확인할 때,
상기 적어도 하나의 대상페이지 각각에 대하여, 대상페이지 별로 포함된 트랜잭션의 존재 여부에 관한 정보인 트랜잭션정보를 획득하고,
상기 트랜잭션정보를 이용하여 상기 적어도 하나의 대상페이지 중에서 적어도 하나의 충돌페이지가 존재하는지 확인하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치. - 제6항에 있어서,
상기 복수의 트랜잭션은
트랜잭션별로 대응되는 프로세스 또는 쓰레드에 의해 상기 스토리지에 기록되는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치. - 제8항에 있어서,
상기 프로세서는
상기 충돌페이지정보를 삭제한 후, 상기 개별 커밋팅 트랜잭션에 대응되는 프로세스 또는 쓰레드가 상기 러닝 트랜잭션에 대응되는 프로세스 또는 쓰레드에게 소정의 시그널을 전송하도록 하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치. - 제6항에 있어서,
상기 프로세서는
상기 충돌페이지정보를 삭제한 이후에, 상기 러닝 트랜잭션에 대응되는 상기 충돌 페이지 리스트가 비어있는지 확인하고,
상기 충돌 페이지 리스트가 비어있으면, 상기 러닝 트랜잭션의 커밋을 진행하는 것을 특징으로 하는 충돌 페이지 리스트를 이용한 병렬 저널링을 수행하는 컴퓨팅 장치.
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 KR20190096837A (ko) | 2019-08-20 |
KR102123616B1 true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102472878B1 (ko) * | 2020-11-27 | 2022-12-01 | 이화여자대학교 산학협력단 | 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 競合部分処理検出方法、装置及びコンピュータプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2853608B2 (ja) * | 1995-05-30 | 1999-02-03 | 日本電気株式会社 | 並列処理システムのファイルアクセス制御方式 |
US9971627B2 (en) * | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
-
2019
- 2019-02-11 KR KR1020190015742A patent/KR102123616B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 競合部分処理検出方法、装置及びコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20190096837A (ko) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7139927B2 (en) | Journaling and recovery method of shared disk file system | |
US9229970B2 (en) | Methods to minimize communication in a cluster database system | |
US9785514B1 (en) | Techniques for file system recovery | |
US20050262170A1 (en) | Real-time apply mechanism in standby database environments | |
EP2976714B1 (en) | Method and system for byzantine fault tolerant data replication | |
US11176110B2 (en) | Data updating method and device for a distributed database system | |
US10007548B2 (en) | Transaction system | |
US10459804B2 (en) | Database rollback using WAL | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
WO2020119709A1 (zh) | 数据合并的实现方法、装置、系统及存储介质 | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
KR102123616B1 (ko) | 충돌 페이지 리스트를 이용한 병렬 저널링 방법 및 그 장치 | |
US10311033B2 (en) | Alleviation of index hot spots in data sharing environment with remote update and provisional keys | |
CN110196788B (zh) | 一种数据读取方法、装置、系统及存储介质 | |
CN108271420A (zh) | 管理文件的方法、文件系统和服务器系统 | |
US9015116B2 (en) | Consistent replication of transactional updates | |
JP2008310591A (ja) | クラスタシステム、計算機、および障害回復方法 | |
CN106997305B (zh) | 一种事务处理方法与装置 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
US20080082533A1 (en) | Persistent locks/resources for concurrency control | |
JP6477169B2 (ja) | データベースの処理制御方法、処理制御プロラム及びデータベースサーバ | |
CN113687921A (zh) | 事务处理方法、装置、分布式数据库系统及电子设备 | |
CN117435574B (zh) | 改进的二阶段提交事务实现方法及系统、设备、存储介质 | |
KR101758792B1 (ko) | 비휘발성 메모리의 자료 구조에 기초한 데이터 로깅 방법, 트랜잭션 로그에 기초한 복구 방법 및 상기 방법을 수행하는 장치 | |
CN112597160A (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 |