KR20220074806A - 다중파일 트랜잭션의 파일 관리 기법 및 장치 - Google Patents

다중파일 트랜잭션의 파일 관리 기법 및 장치 Download PDF

Info

Publication number
KR20220074806A
KR20220074806A KR1020210167385A KR20210167385A KR20220074806A KR 20220074806 A KR20220074806 A KR 20220074806A KR 1020210167385 A KR1020210167385 A KR 1020210167385A KR 20210167385 A KR20210167385 A KR 20210167385A KR 20220074806 A KR20220074806 A KR 20220074806A
Authority
KR
South Korea
Prior art keywords
file
call
group
filegroup
transaction
Prior art date
Application number
KR1020210167385A
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 KR20220074806A publication Critical patent/KR20220074806A/ko

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/1865Transactional file systems
    • 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/11File system administration, e.g. details of archiving or snapshots
    • 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
    • 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/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof

Abstract

파일그룹을 생성하는 단계, 및 상기 파일그룹을 지정한 커밋 콜이 발생하면 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 단계를 포함하는 트랜잭션 처리방법을 공개한다.

Description

다중파일 트랜잭션의 파일 관리 기법 및 장치{Method and in-memory structure for a file operation processing multiple files}
본 발명은 컴퓨팅 기술에 관한 것으로서, 특히 파일시스템이 트랜잭션 기능을 지원할 때, 트랜잭션이 수정하는 다수의 파일을 관리하는 기법에 관한 것이다.
원자적으로 실행되는 다수의 쓰기 연산의 트랜잭션이라 정의한다. 종래 기술 중 트랜잭션 기능을 지원하는 파일 시스템을 트랜잭션 지원 파일 시스템 (Transactional file system)이라 정의한다. 트랜잭션 지원 파일 시스템은 시스템 콜 형태로 사용자 어플리케이션(사용자)에게 트랜잭션 기능을 제공한다. 종래 기술은 파일 중심 트랜잭션 관리 기술과 프로세스 중심 트랜잭션 관리 기술로 분류될 수 있다. 파일 중심 트랜잭션 관리 기술은 트랜잭션 정보를 파일에 관련된 일련의 정보를 나타내는 자료구조에 저장한다. 해당 자료구조를 아이노드라고 칭한다. 프로세스 중심 트랜잭션 관리 기술은 트랜잭션 정보를 프로세스에 관련된 일련의 정보를 나타내는 자료구조에 저장한다. 해당 자료구조를 프로세스 컨트롤 블록이라고 칭한다. 리눅스에서는 프로세스 컨트롤 블록을 task_struct라고 칭한다.
대표적인 파일 중심 트랜잭션 관리 기술은 F2FS의 단일 파일 트랜잭션이다. F2FS의 아이노드(Inode)는 해당 파일의 트랜잭션 진행 여부를 나타내는 플래그와 트랜잭션이 수정한 내용들의 리스트를 갖는다. 트랜잭션이 수정한 내용들은 디스크 블록의 캐싱 단위인 페이지 단위로 관리한다. 트랜잭션이 수정한 내용들의 리스트는 트랜잭션이 수정한 페이지들의 리스트다. 사용자는 트랜잭션을 시작(start)하거나 커밋(commit)할 때 파일을 인자로 전달한다. 정확히는 사용자가 파일을 열었을 때 파일마다 할당받는 파일 디스크립터를 인자로 전달한다. 사용자가 해당 파일에 트랜잭션 시작을 요청하면 아이노드에 트랜잭션 진행을 나타내는 플래그 값을 1로 바꾼다. 트랜잭션 수행 중에 파일이 변경되면 변경된 내용의 페이지를 아이노드가 갖고 있는 페이지 리스트에 삽입한다. 사용자가 트랜잭션 커밋을 요청하면 페이지 리스트에 있는 페이지들을 저장장치에 원자적으로 쓴다(write atomically).
대표적인 프로세스 중심 트랜잭션 관리 기술은 TxFS다. TxFS의 프로세스 컨트롤 블록(struct task_struct)은 트랜잭션 진행 여부를 나타내는 플래그와 트랜잭션이 수정한 페이지의 리스트를 갖는다. 프로세스 중심 트랜잭션에서 트랜잭션 시작과 커밋은 인자를 필요로 하지 않는다. 사용자가 트랜잭션을 시작하면 트랜잭션 시작을 호출한 프로세스의 프로세스 컨트롤 블록에 트랜잭션 진행을 나타내는 플래그 값을 1로 바꾼다. 트랜잭션을 시작한 프로세스가 수정하는 모든 페이지들은 해당 프로세스의 프로세스 컨트롤 블록에 있는 페이지 리스트에 삽입된다. 사용자가 트랜잭션 커밋을 요청하면 프로세스 컨트롤 블록의 페이지 리스트에 있는 페이지들을 저장장치에 원자적으로 쓴다.
파일 중심 트랜잭션 관리 기술은 다중 파일 트랜잭션을 지원하지 못한다. 파일 중심 트랜잭션 관리 기술이 트랜잭션 정보를 저장하는 자료구조인 아이노드는 파일 하나를 표현하는 자료구조다. 아이노드에 저장된 트랜잭션 정보는 트랜잭션 범위를 파일 하나로 한정된다. 트랜잭션의 시작과 커밋의 단위도 파일 디스크립터다. 사용자가 시작하거나 커밋할 수 있는 트랜잭션이 단일 파일 트랜잭션으로 제한된다는 문제가 있다.
프로세스 중심 트랜잭션 관리 기술에서는 사용자가 트랜잭션에 포함할 파일을 지정할 수 없다. 프로세스 중심 트랜잭션 관리 기술이 트랜잭션 정보를 저장하는 자료구조인 프로세스 컨트롤 블록에는 파일 관련 정보가 저장되지 않는다. 어떤 파일을 트랜잭션에 참여시킬지를 나타내는 정보를 저장할 수 없다. 트랜잭션의 시작과 커밋도 인자를 전달받지 않는다. 트랜잭션에 참여시킬 파일을 지정할 방법이 없다. 때문에 프로세스 중심 트랜잭션은 트랜잭션을 시작한 프로세스가 변경하는 모든 파일 내용을 트랜잭션에 참여시킨다. 이는 불필요한 내용들을 트랜잭션에 포함시키게 할 수 있다는 문제가 있다.
일반적으로 다중 파일 트랜잭션 기능을 필요로 하는 소프트웨어는 서버향 혹은 임베디드향 데이터베이스 시스템, 소프트웨어 설치 관리자, 웹 브라우저가 포함된다. 이들은 독자적인 로깅 메커니즘을 사용하거나 단일 파일 트랜잭션의 연속 호출과 전역 로그 파일 기록을 이용해서 다중 파일 트랜잭션을 구현한다. 하지만, 이러한 종래기술들은 쓰기량 증폭과 무분별한 플러쉬 호출 때문에 심각한 성능 저하를 겪는다.
본 발명에서는, 사용자가 시작하거나 커밋할 수 있는 트랜잭션을 단일 파일 트랜잭션으로 제한하지 않으며, 그리고 불필요한 내용들을 트랜잭션에 포함시키지 않도록 하는 트랜잭션의 파일 관리 방법을 제공하고자 한다.
본 발명에서는, 운영체제 수준에서 다중 파일 트랜잭션 기능을 지원하여 효율적인 트랜잭션 성능을 제공하는 동시에 사용자가 트랜잭션에 참여시킬 파일을 지정할 수 있도록 하는 기술을 제공하고자 한다.
본 발명의 일 관점에 따라, 운영체제가 트랜잭션 기능을 지원할 때 다중 파일 트랜잭션의 파일들을 관리하는 방법 및 이를 위한 장치가 제공될 수 있다.
본 발명의 일 관점에 따라 제공되는 파일 관리 방법에서는, 다중 파일 트랜잭션을 위한 새로운 자료구조인 트랜잭션 파일그룹이 정의되며, 트랜잭션이 트랜잭션 파일그룹 단위로 실행된다.
본 발명의 일 관점에 따라 제공되는 파일 관리 방법에서는, 다중 파일 트랜잭션을 위한 파일 관리 기법과 그 장치가 정의된다. 종래 기술의 다중 파일 트랜잭션은 사용자가 트랜잭션에 참여시킬 파일을 지정할 수 없다는 한계를 갖는다. 그러나 본 발명에서는 사용자가 트랜잭션에 참여시킬 파일을 지정할 수 있는 다중 파일 트랜잭션이 정의된다. 본 발명에서는 트랜잭션 파일그룹이라는 개념이 제공된다.
도 11은 본 발명에 따른 트랜잭션 파일그룹의 구조를 보여준다.
트랜잭션 파일그룹(110)(TFG)은 아이노드 리스트(Inode list)(111), 데이터 페이지 리스트(dirty data page list)(112), 메타데이터 페이지 리스트(dirty node page list)(113)로 이루어져 있다. 아이노드 리스트(111)는 트랜잭션에 참여한 파일들의 아이노드들로 이루어진 리스트다. 데이터 페이지 리스트(112)와 메타데이터 페이지 리스트(113)는 각각 트랜잭션이 수정한 데이터 페이지들과 메타데이터 페이지들의 리스트다.
사용자는 시스템 콜을 통해 트랜잭션 파일그룹(110)을 생성하고 삭제할 수 있다. 트랜잭션 파일그룹(110)을 생성한 사용자는 트랜잭션 파일그룹(110)의 ID를 반환받는다. 사용자는 해당 ID로 자신이 생성한 트랜잭션 파일그룹(110)에 접근할 수 있다. 사용자는 시스템 콜을 통해 트랜잭션에 참여시킬 파일들을 트랜잭션 파일그룹(110)에 추가할 수 있다.
예컨대 트랜잭션 파일그룹(110)을 생성하는 콜, 및 트랜잭션에 참여시킬 파일들을 트랜잭션 파일그룹(110)에 추가하는 콜은, 각각 CALL: Create ( ), 및 CALL: Add ( )로 표현될 수 있다.
본 발명에서 트랜잭션 파일그룹(110)은 트랜잭션의 시작과 커밋의 기본 단위로 사용된다. 다중 파일 트랜잭션을 시작할 때는 트랜잭션 파일그룹(110)의 ID를 인자로 사용한다. 예컨대 도 5의 단계(S111)에서, TFG#1은 제1트랜잭션의 트랜잭션 파일그룹의 ID이다.
예컨대 CALL: Create ( ), CALL: Delete ( ), 및 CALL: Add ( )의 ( ) 안에 선택된 트랙잰션 파일그룹의 ID를 포함시키면, 상기 콜들은 상기 선택된 트랙잰션 파일그룹에 관한 콜로서 간주될 수 있다.
다중 트랜잭션을 시작하면 트랜잭션 파일그룹(110)의 아이노드 리스트(111)에 있는 아이노드들에 트랜잭션이 진행 중임을 나타내는 플래그 값을 1로 변경한다. 다수의 아이노드들을 원자적으로(atomically) 변경해야 한다. 이를 위해 두 단계 락킹(locking)을 사용한다. 가장 먼저 아이노드들의 락들을 일괄적으로 획득하고 아이노드들을 수정한다. 수정이 완료되면 아이노드들의 락들을 일괄적으로 해제한다. 트랜잭션 진행 중에 트랜잭션 파일그룹(110)에 추가된 파일을 수정하면 수정한 페이지를 트랜잭션 파일그룹(110)이 갖고 있는 페이지 리스트에 삽입한다.
다중 트랜잭션 파일그룹을 커밋할 때 트랜잭션 파일그룹의 ID를 인자로 전달한다.
예컨대, 다중 트랜잭션 파일그룹의 커밋은 커밋 콜 CALL: Commit ( )에 의해 이루어질 수 있다. 그리고 이때 상기 ( ) 안에는 커밋의 대상이 되는 트랙잰션 파일그룹의 ID를 포함시킨다.
다중 트랜잭션 파일그룹의 커밋은 트랜잭션 파일그룹이 갖고 있는 페이지 리스트 내 페이지들을 저장 장치에 원자적으로 쓴다.
도 12는 본 발명의 일 관점에 따라 정의된 다중 파일 트랜잭션의 동작을 순서도로 표현한 것이다.
단계(S611)에서, 사용자는 가장 먼저 트랜잭션 파일그룹을 생성한다(create_tx_file_group( )).
단계(S612)에서, 사용자는 트랜잭션에 참여시킬 파일들을 트랜잭션 파일그룹에는 추가할 수 있다(add_tx_file_group( )).
단계(S613)에서, 트랜잭션을 시작하면 트랜잭션 파일그룹에 포함된 파일들을 대상으로 트랜잭션이 시작된다.
단계(S614)에서, 사용자가 해당 파일들을 변경하면 변경 사항들이 트랜잭션에 추가된다.
단계(S618)에서, 중간에 파일 연산이 실패하는 등의 이유로 트랜잭션이 비정상적으로 진행될 경우 트랜잭션을 abort 한다(abort_tx_file_group( )).
단계(S616)에서, 반면에 트랜잭션이 정상적으로 진행되면 트랜잭션을 커밋한다(commit_tx_file_group( )).
단계(S617)에서, 트랜잭션 진행이 완료되면 트랜잭션 파일그룹을 삭제한다(delete_tx_file_group( )).
본 명세서에서, 상기 create_tx_file_group( )은 CALL: Create ( )로 표기될 수도 있다. 그리고 상기 add_tx_file_group( )은 CALL: Add ( )로 표기될 수도 있다. 그리고 상기 abort_tx_file_group( )은 CALL: Abort ( )로 표기될 수도 있다. 그리고 상기 commit_tx_file_group( )은 CALL: Commit ( )로 표기될 수도 있다. 그리고 상기 commit_tx_file_group( )은 CALL: Commit ( )로 표기될 수도 있다.
본 발명의 일 관점에 따라 호스트의 파일 시스템이, 파일그룹을 생성하는 그룹생성단계(S711); 및 상기 파일 시스템이, 상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117)를 포함하는, 트랜잭션 처리방법이 제공될 수 있다.
이때, 상기 그룹생성단계와 상기 커밋단계 사이에, 상기 파일 시스템이, 상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및 상기 파일 시스템이, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계를 더 포함할 수 있다.
이때, 상기 커밋단계 이후에, 상기 파일 시스템이, 상기 파일그룹을 삭제하는 단계(S717)를 더 포함할 수 있다.
이때, 상기 그룹생성단계 이전에, 상기 호스트의 어플리케이션이, 상기 파일그룹을 생성하라는 파일그룹 생성 콜을 상기 파일 시스템에게 전송하는 단계(S111); 상기 그룹생성단계와 상기 파일추가단계 사이에, 상기 어플리케이션이, 상기 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하라는 요청을 나타내는 파일추가 콜을 상기 파일 시스템에게 전송하는 단계(S112); 및 상기 파일추가단계와 상기 오퍼레이션 콜을 실행하는 단계 사이에, 상기 어플리케이션이, 상기 파일그룹을 지정한 시작 콜을 상기 파일 시스템에게 전송하는 단계(S113);를 더 포함할 수 있다. 상기 그룹생성단계는, 상기 파일 시스템이 상기 파일그룹 생성 콜을 수신하면 실행되고, 상기 파일추가단계는, 상기 파일 시스템이 상기 파일추가 콜을 수신하면 실행될 수 있다.
이때, 상기 파일추가 콜은 상기 파일그룹을 식별하는 식별자와 상기 일 그룹의 파일을 식별하는 식별자에 관한 정보를 포함하며, 상기 시작 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하며, 그리고 상기 커밋 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함할 수 있다.
본 발명의 일 관점에 따라 호스트가 제공될 수 있다. 상기 호스트는 처리부; 및 통신부;를 포함하며, 상기 처리부는 상기 호스트의 파일 시스템을 실행하도록 되어 있고, 상기 파일 시스템은, 파일그룹을 생성하는 그룹생성단계(S711); 및 상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117)를 실행하도록 되어 있는 것을 특징으로 할 수 있다.
이때, 상기 파일 시스템은, 상기 그룹생성단계와 상기 커밋단계 사이에,
상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계를 더 실행하도록 되어 있을 수 있다.
이때, 상기 처리부는 상기 호스트의 어플리케이션을 실행하도록 되어 있고, 상기 어플리케이션은, 상기 그룹생성단계 이전에, 상기 파일그룹을 생성하라는 파일그룹 생성 콜을 상기 파일 시스템에게 전송하는 단계(S111); 상기 그룹생성단계와 상기 파일추가단계 사이에, 상기 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하라는 요청을 나타내는 파일추가 콜을 상기 파일 시스템에게 전송하는 단계(S112); 및 상기 파일추가단계와 상기 오퍼레이션 콜을 실행하는 단계 사이에, 상기 파일그룹을 지정한 시작 콜을 상기 파일 시스템에게 전송하는 단계(S113)를 실행하도록 되어 있을 수 있다. 상기 그룹생성단계는, 상기 파일 시스템이 상기 파일그룹 생성 콜을 수신하면 실행되고, 상기 파일추가단계는, 상기 파일 시스템이 상기 파일추가 콜을 수신하면 실행될 수 있다.
본 발명의 일 관점에 따라 호스트 및 스토리지를 포함하는 컴퓨팅 장치가 제공될 수 있다. 상기 호스트는 파일 시스템을 실행하도록 되어 있을 수 있다. 상기 파일 시스템은, 파일그룹을 생성하는 그룹생성단계(S711); 및 상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117)를 실행하도록 되어 있을 수 있다. 상기 스토리지는, 상기 파일 시스템이 상기 커밋단계를 실행하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 상기 스토리지에 저장하도록 되어 있을 수 있다.
이때, 상기 파일 시스템은, 상기 그룹생성단계와 상기 커밋단계 사이에,
상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계를 더 실행하도록 되어 있을 수 있다.
본 발명의 일 관점에 따라 제공되는 파일 관리 방법은, SQLite, MySQL과 같은 데이터베이스 관리 시스템, MongoDB, RocksDB과 같은 키밸류 스토어, EXT4, XFS과 같은 파일 시스템을 포함한 트랜잭션 지원을 필요로 하는 모든 분야에 적용될 수 있다.
또한, 본 발명의 일 관점에 따라 제공되는 파일 관리 방법은, 데이터베이스 관리 시스템을 운용하는 모든 서버용 소프트웨어 혹은 이를 이용하는 모든 서비스와 데이터의 일관성을 위해 트랜잭션을 사용하는 스마트폰, 스마트카 등의 임베디드 기기에 적용될 수 있다.
본 발명에 따라 제공되는 방법은 다중 파일 트랜잭션 기능을 필요로 하는 모든 소프트웨어에 적용 가능하다.
본 발명은 데이터센터 관리용 소프트웨어와 데이터베이스, 그리고 데이터 일관성을 필요로 하는 임베디드 어플리케이션에 적용될 수 있다. 본 발명은 스마트폰 시장과 데이터 센터 시장뿐만 아니라 다중 파일 트랜잭션을 필요로 하는 모든 분야에 적용될 수 있다.
본 발명은 소프트웨어를 개발하는 모든 기업의 사업에 적용될 수 있다. 웹 브라우저의 경우, 다중 파일에 웹 사이트 방문 기록 및 파일 다운로드 기록을 저장한다. 이는 데스크톱용 웹 브라우저와 모바일용 웹 브라우저 전부 해당된다. 많은 기업들은, 데이터센터 관리용으로 사용하고, Ceph 등 분산 스토리지에서 사용하는 데이터베이스 시스템인 RocksDB는 컴팩션 연산에서 다중 파일 연산을 필요로 한다. 이들은 모두 다중 파일 트랜잭션으로 최적화될 수 있는 소프트웨어들이다. 본 발명은 이들의 서비스 품질을 향상시킬 수 있는 기술이다.
본 발명에 따르면, 사용자가 시작하거나 커밋할 수 있는 트랜잭션을 단일 파일 트랜잭션으로 제한하지 않으며, 그리고 불필요한 내용들을 트랜잭션에 포함시키지 않도록 하는 트랜잭션의 파일 관리 방법을 제공할 수 있다.
본 발명에 따르면, 운영체제 수준에서 다중 파일 트랜잭션 기능을 지원하여 효율적인 트랜잭션 성능을 제공하는 동시에 사용자가 트랜잭션에 참여시킬 파일을 지정할 수 있도록 하는 기술이 제공될 수 있다.
도 1은 일 실시예에 따라 호스트가 스토리지에 정보를 기록하는 개념을 나타낸 것이다.
도 2는 호스트가 실행하는 서로 다른 트랜잭션들을 나타낸 것이다.
도 3은 일 실시예에 따라 제공되는 한 개의 트랜잭션 처리 방법을 나타낸 것이다.
도 4는 일 실시예에 따라 제공되는 두 개의 트랜잭션 처리 방법을 나타낸 것이다.
도 5는 본 발명의 일 실시예에 따라, 호스트가 스토리지에 정보를 기록하는 개념을 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따라 제공되는 트랜잭션을 실행하는 방법을 나타낸 순서도이다.
도 7은 도 6으로부터 변형된 실시예를 나타낸다.
도 8은 비교 실시예에 따라 트랜잭션을 실행하는 방법을 나타낸 순서도이다.
도 9는 본 발명의 일 실시예에 따라 제공되는 트랜잭션 실행 방법을 나타낸 순서도이다.
도 10은 본 발명의 일 실시예에 따라 제공되는 트랜잭션 실행 방법을 나타낸 순서도이다.
도 11은 본 발명에 따른 트랜잭션 파일그룹의 구조를 보여준다.
도 12는 본 발명의 일 관점에 따라 정의된 다중 파일 트랜잭션의 동작을 순서도로 표현한 것이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
도 1은 일 실시예에 따라 호스트가 스토리지에 정보를 기록하는 개념을 나타낸 것이다.
호스트(10)와 저장소(20)는 각각 전원장치로부터 전력을 공급하여 동작하는 컴퓨팅 장치일 수 있다. 상기 호스트(10)와 상기 저장소(20)는 한 개 이상의 전송채널들(30)을 통해 데이터 및 명령을 교환할 수 있다. 상기 전송채널들(30)은 무선채널 또는 유선채널일 수 있다. 상기 호스트(10)와 상기 저장소(20)는 한 개의 전원장치로부터 제공되는 전원을 공유할 수도 있고, 또는 서로 다른 두 개의 전원장치들로부터 각각 전력을 공급받을 수도 있다.
상기 호스트(10)는 CPU, 메모리, 전원장치, 및 통신장치를 포함할 수 있다.
상기 저장소(20)는 콘트롤러(21), 휘발성 메모리(22), 및 비휘발성 메모리(23)를 포함할 수 있다.
상기 호스트(10)는 상기 전송채널들(30)을 통해 각종 명령 및 데이터를 상기 저장소(20)에게 전송할 수 있다. 상기 명령에는 쓰기 명령이 포함될 수 있다.
상기 저장소(20)의 상기 콘트롤러(21)는 상기 전송채널들(30)로부터 수신한 명령을 기초로 상기 전송채널들(30)로부터 수신한 데이터를 상기 휘발성 메모리(22)에 저장할 수 있다. 상기 휘발성 메모리(22)에 저장된 데이터는 상기 콘트롤러(21)가 따르는 규칙에 의해 상기 비휘발성 메모리(23)에 저장될 수 있다. 상기 휘발성 메모리(22) 저장된 데이터는 상기 저장소(20)에 공급되는 전원이 차단되면 삭제될 수 있지만, 상기 비휘발성 메모리(23)에 저장된 데이터는 상기 저장소(20)에 공급되는 전원이 차단되더라도 삭제되지 않는다.
상기 호스트(10)는 어플리케이션(11)과 파일 시스템(12)을 실행할 수 있다. 상기 어플리케이션(11)과 상기 파일 시스템(12)은 상기 호스트(10)가 액세스하는 메모리에 저장된 소정의 명령코드들이 상기 호스트(10)에 포함된 CPU에 의해 실행됨으로써 실행되는 것일 수 있다.
일 실시예에서, 상기 어플리케이션(11)은 상기 호스트(10)는 사용하는 사용자가 상기 호스트(10)이 제공하는 사용자 인터페이스를 통해 사용자 입력을 제공함으로써 실행되거나 종료되는 프로그램일 수 있다.
일 실시예에서, 상기 파일 시스템(12)는 상기 호스트(10)에 전원이 인가되거나 리셋이 이루어지면 상기 호스트(10)에 의해 자동으로 실행되는 프로그램일 수 있다.
상기 어플리케이션(11)은 상기 파일 시스템(12)에게 다양한 시스템 콜을 보낼 수 있다. 상기 파일 시스템(12)은 상기 시스템 콜에 대응하는 작업을 실행할 수 있다.
상기 호스트(10)는 트랜잭션을 실행할 수 있다. 특정 트랜잭션이 시작되어 종료될 때까지 소정의 시간이 소요될 수 있다. 특정 시점에, 상기 호스트(10)는 한 개의 트랜잭션을 수행할 수 있다.
트랜잭션의 시작 및 커밋을 상기 어플리케이션(11)가 제어할 수 있다. 그리고 상기 트랜잭션 도중 실행되어야 하는 한 개 이상의 오퍼레이션들을 상기 어플리케이션(11)가 제어할 수 있다. 도 1에 제시하였듯이, 상기 어플리케이션(11)는 스타트 콜, 한 세트의 오퍼레이션 콜, 및 커밋 콜을 포함하는 시스템 콜들을 상기 파일 시스템(12)에 전송할 수 있다.
상기 스타트 콜에 의해 특정 트랜잭션이 시작되고, 상기 한 세트의 오퍼레이션 콜들에 의해 상기 호스트(10)으로부터 상기 저장소(20)에게 전달되어야 하는 명령들이 준비되고, 그리고 상기 커밋 콜에 의해 상기 준비된 명령들이 상기 전송채널들(30)을 통해 상기 저장소(20)에게 전달될 수 있다.
도 2는 호스트가 실행하는 서로 다른 트랜잭션들을 나타낸 것이다.
복수 개의 오퍼레이션들의 집합이 하나의 트랜잭션을 구성할 수 있다.
제1트랜잭션(41)은 4개의 쓰기 오퍼레이션들(WO#1~WO#4)로 구성되고, 제2트랜잭션(42)은 2개의 쓰기 오퍼레이션들(WO#5~WO#6)로 구성되고, 그리고 제3트랜잭션(43)은 2개의 쓰기 오퍼레이션들(WO#7~WO#8)로 구성될 수 있다.
도 2에서는 각 트랙잰션에 쓰기 오퍼레이션들만일 포함된 예를 제시하였지만, 다른 종류의 오퍼레이션들도 포함될 수 있다.
도 3은 일 실시예에 따라 제공되는 한 개의 트랜잭션 처리 방법을 나타낸 것이다.
단계(S11)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 스타트 콜을 송신(transmit)할 수 있다. 이로써 제1트랜잭션일 시작될 수 있다. 상기 파일 시스템(12)은 상기 스타트 콜을 수신하면 제1트랜잭션을 위한 프로세스를 시작할 수 있다.
단계(S12)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제1파일에 대한 쓰기 오퍼레이션 콜(WO#1)을 호출할 수 있다. 단계(S13)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제2파일에 대한 쓰기 오퍼레이션 콜(WO#2)을 호출할 수 있다. 단계(S14)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제3파일에 대한 쓰기 오퍼레이션 콜(WO#3)을 호출할 수 있다. 단계(S15)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제4파일에 대한 쓰기 오퍼레이션 콜(WO#4)을 호출할 수 있다.
상기 파일 시스템(12)은 상기 쓰기 오퍼레이션 콜들을 수신하면, 각 쓰기 오퍼레이션 콜에 대응하는 페이지를, 각 페이지에 대응하는 버퍼에 저장할 수 있다.
단계(S16)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 커밋 콜을 호출할 수 있다. 상기 스타트 콜과 상기 커밋 콜 사이에 상기 어플리케이션(11)이 상기 파일 시스템(12)에게 보낸 모든 오퍼레이션 콜들을 한 개의 상기 제1트랜잭션에 포함된 것으로 간주된다.
단계(S17)에서, 상기 파일 시스템(12)는 상기 커밋 콜을 수신하면, 상기 제1트랜잭션에 관련된 버퍼들에 저장된 내용을 참조하여 제1트랜잭션을 처리할 수 있다.
단계(S18)에서, 상기 제1트랜잭션의 처리에 따라 상기 4개의 쓰기 오퍼레이션들에 관한 4개의 쓰기 명령들(WC#1~WC#4)이 상기 파일 시스템(12)으로부터 상기 저장소(20)에게 전송될 수 있다. 그 다음, 상기 파일 시스템(12)은 상기 저장소(20)에게 플러시 명령을 전송하고, 상기 저장소(20)는 상기 플러시 명령을 수신하면 상기 4개의 쓰기 명령에 관련된 페이지들이 상기 저장소(20)의 비휘발성 메모리(23)에 저장될 수 있도록 한다.
도 4는 일 실시예에 따라 제공되는 두 개의 트랜잭션 처리 방법을 나타낸 것이다.
단계(S21)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 스타트 콜을 송신할 수 있다. 이로써 제2트랜잭션일 시작될 수 있다. 상기 파일 시스템(12)은 상기 스타트 콜을 수신하면 제2트랜잭션을 위한 프로세스를 시작할 수 있다.
단계(S22)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제1파일에 대한 쓰기 오퍼레이션 콜(WO#1)을 호출할 수 있다. 단계(S23)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제2파일에 대한 쓰기 오퍼레이션 콜(WO#2)을 호출할 수 있다.
상기 파일 시스템(12)은 상기 쓰기 오퍼레이션 콜들을 수신하면, 각 쓰기 오퍼레이션 콜에 대응하는 페이지를, 각 페이지에 대응하는 버퍼에 저장할 수 있다.
단계(S24)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 커밋 콜을 호출할 수 있다. 상기 스타트 콜과 상기 커밋 콜 사이에 상기 어플리케이션(11)이 상기 파일 시스템(12)에게 보낸 모든 오퍼레이션 콜들을 한 개의 상기 제2트랜잭션에 포함된 것으로 간주된다.
단계(S25)에서, 상기 파일 시스템(12)는 상기 커밋 콜을 수신하면, 상기 제2트랜잭션에 관련된 버퍼들에 저장된 내용을 참조하여 제2트랜잭션을 처리할 수 있다.
단계(S26)에서, 상기 제2트랜잭션의 처리에 따라 상기 2개의 쓰기 오퍼레이션들에 관한 2개의 쓰기 명령들(WC#1~WC#2) 및 플러시 명령이 상기 파일 시스템(12)으로부터 상기 저장소(20)에게 전송될 수 있다.
단계(S31)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 스타트 콜을 송신할 수 있다. 이로써 제3트랜잭션일 시작될 수 있다. 상기 파일 시스템(12)은 상기 스타트 콜을 수신하면 제3트랜잭션을 위한 프로세스를 시작할 수 있다.
단계(S32)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제3파일에 대한 쓰기 오퍼레이션 콜(WO#3)을 호출할 수 있다. 단계(S33)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제4파일에 대한 쓰기 오퍼레이션 콜(WO#4)을 호출할 수 있다.
상기 파일 시스템(12)은 상기 쓰기 오퍼레이션 콜들을 수신하면, 각 쓰기 오퍼레이션 콜에 대응하는 페이지를, 각 페이지에 대응하는 버퍼에 저장할 수 있다.
단계(S34)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 커밋 콜을 호출할 수 있다. 상기 스타트 콜과 상기 커밋 콜 사이에 상기 어플리케이션(11)이 상기 파일 시스템(12)에게 보낸 모든 오퍼레이션 콜들을 한 개의 상기 제3트랜잭션에 포함된 것으로 간주된다.
단계(S35)에서, 상기 파일 시스템(12)는 상기 커밋 콜을 수신하면, 상기 제3트랜잭션에 관련된 버퍼들에 저장된 내용을 참조하여 제3트랜잭션을 처리할 수 있다.
단계(S36)에서, 상기 제3트랜잭션의 처리에 따라 상기 2개의 쓰기 오퍼레이션들에 관한 2개의 쓰기 명령들(WC#3~WC#4) 및 플러시 명령이 상기 파일 시스템(12)으로부터 상기 저장소(20)에게 전송될 수 있다.
도 4에 제시된 예에서, 한 개의 트랜잭션에 대한 커밋이 종료된 이후에야 다른 한 개의 트랜잭션이 시작될 수 있다. 이는 도 4에 제시된 예에서 스타트 콜과, 상기 스타토 콜 이후에 처음으로 발생하는 커밋 콜 사이에 발생한 모든 오퍼레이션 콜들은 한 개의 단일 트랜잭션에 포함된 것으로 간주되기 때문이다.
도 5는 본 발명의 일 실시예에 따라, 호스트가 스토리지에 정보를 기록하는 개념을 나타낸 것이다.
도 5에 나타낸 개념은 도 1에 나타낸 개념과 동일하다. 다만, 상기 어플리케이션(11)이 상기 파일 시스템(12)에게 전송하는 시스템 콜은 도 1에 제시된 것과 다르다. 그리고 특정 시점에, 상기 호스트(10)는 한 개의 트랜잭션을 수행할 수도 있고, 복수 개의 서로 다른 트랜잭션을 함께 실행할 수도 있다.
도 5에 제시하였듯이, 상기 어플리케이션(11)는 생성 콜(Create( ) Call), 추가 콜(Add( , ) Call), 스타트 콜(Start( ) Call), 한 세트의 오퍼레이션 콜, 및 커밋 콜(Commit( ) Call)을 포함하는 시스템 콜들을 상기 파일 시스템(12)에 전송할 수 있다.
상기 생성 콜(Create( ) Call), 상기 추가 콜(Add( , ) Call), 상기 스타트 콜(Start( ) Call), 및 상기 커밋 콜(Commit( ) Call)은 본 발명의 일 실시예에 따라 제공되는 상기 파일 시스템(12)이 지원하는 기능일 수 있다.
본 발명의 일 실시예에서는 트랜잭션 파일그룹(TFG)(간단히 '파일그룹')이라는 것을 생성하여 용할 수 있다.
에 따라, 상기 호스트(10)는 상기 생성 콜(Create( ) Call)에는 새로운 파일그룹을 생성할 수 있다. 상기 생성 콜(Create( ) Call)에는 상기 새로운 파일그룹을 나타내는 ID가 인자로서 포함될 수 있다.
상기 생성 콜(Create( ) Call), 상기 추가 콜(Add( , ) Call), 상기 스타트 콜(Start( ) Call), 및 상기 커밋 콜(Commit( ) Call)에는 특정 파일그룹을 나타내는 ID가 인자로서 포함될 수 있다.
이하 도 6을 참조하여 설명한다.
도 6은 본 발명의 일 실시예에 따라 제공되는 트랜잭션을 실행하는 방법을 나타낸 순서도이다.
단계(S111)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 생성 콜(Create)을 송신할 수 있다.
본 발명의 일 실시예에서, 상기 생성 콜에 의해 지정된 새로운 파일그룹이 생성될 수 있다. 상기 파일 시스템(12)은 상기 생성 콜(Create)을 수신하면 상기 제1파일그룹(TFG#1)을 생성할 수 있다(S711).
여기서 상기 제1파일그룹을 나타내는 식별자인 TFG#1은 상기 파일 시스템(12)이 생성한 것이다. 상기 파일 시스템(12)은 상기 TFG#1을 상기 어플리케이션(11)에 반환할 수 있다. 이때부터, 상기 어플리케이션(11)은 상기 제1파일그룹에 관한 단계를 실행하기 위하여 상기 식별자 TFG#1을 이용할 수 있다.
단계(S112)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 추가 콜(Add(TFG#1, File#1, File#2))을 송신할 수 있다.
본 발명의 일 실시예에서, 상기 추가 콜에 의해 지정된 파일들이 상기 추가 콜에 의해 지정된 특정 파일그룹에 멤버로서 추가될 수 있다. 상기 지정을 위해 상기 추가 콜에는 파일그룹 및 파일들을 나타내는 ID들이 인자로서 포함될 수 있다. 단계(S112)에서 TFG#1은 파일을 추가할 파일그룹을 나타내며, File#1 및 File#2는 TFG#1에 추가할 파일들을 나타낸다. 상기 파일 시스템(12)은 상기 추가 콜(Add(TFG#1, File#1, File#2))을 수신하면 상기 제1파일그룹(TFG#1)에 제1파일(File#1) 및 제2파일(File#2)을 추가할 수 있다(S712).
단계(S113)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 스타트 콜(Start(TFG#1))을 송신할 수 있다. 이로써 제1트랜잭션일 시작될 수 있다. 상기 파일 시스템(12)은 상기 스타트 콜(Start(TFG#1))을 수신하면 제1트랜잭션을 위한 프로세스를 시작할 수 있다.
본 발명의 일 실시예에서, 상기 스타트 콜에 의해 시작되는 트랜잭션은, 상기 스타트 콜에 의해 지정된 파일그룹에만 연관된다. 상기 지정을 위해 상기 스타트 콜에는 새롭게 트랜잭션을 시작할 파일그룹을 나타내는 ID가 인자로서 포함될 수 있다. 단계(S113)에서 TFG#1은 시작할 트랜잭션에 연관지을 파일그룹을 나타내는 ID이다. 상기 파일 시스템(12)은 상기 스타트 콜(Start(TFG#1))을 수신하면 상기 제1파일그룹(TFG#1)에 연관된 상기 제1트랜잭션을 위한 프로세스를 시작할 수 있다.
단계(S114)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 상기 제1파일(File#1)에 대한 쓰기 오퍼레이션 콜(WO#1)을 호출할 수 있다. 단계(S115)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제2파일(File#2)에 대한 쓰기 오퍼레이션 콜(WO#2)을 호출할 수 있다. 단계(S114) 및 단계(S115)에서 각각, 상기 파일 시스템(12)은 상기 오퍼레이션 콜(WO#1) 및 오퍼레이션 콜(WO#2)이 전달한 페이지를 이에 대응하는 버퍼들에 저장할 수 있다. 이 버퍼들은 상기 제1트랜잭션에 관련된 버퍼인 것으로 간주될 수 있다.
상기 파일 시스템(12)은 상기 쓰기 오퍼레이션 콜들을 수신하면, 각 쓰기 오퍼레이션 콜에 대응하는 페이지를, 각 페이지에 대응하는 버퍼에 저장할 수 있다.
단계(S116)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 커밋 콜(Commit(TFG#1))을 호출할 수 있다.
본 발명의 일 실시예에서, 상기 커밋 콜에 의해 커밋되는 트랜잭션은, 상기 커밋 콜에 의해 지정된 파일그룹에만 연관된다. 상기 지정을 위해 상기 커밋 콜에는 커밋을 실행할 트랜잭션에 연관된 파일그룹을 나타내는 ID가 인자로서 포함될 수 있다. 단계(S116)에서 TFG#1은 커밋을 실행할 트랜잭션에 연관된 파일그룹을 나타내는 ID이다. 상기 파일 시스템(12)은 상기 커밋 콜(Commit(TFG#1))을 수신하면 상기 제1파일그룹(TFG#1)에 연관된 상기 제1트랜잭션을 처리할 수 있다.
단계(S117)에서, 상기 파일 시스템(12)는 상기 커밋 콜(Commit(TFG#1))을 수신하면, 상기 제1파일그룹에 연관된 상기 제1트랜잭션에 관련된 버퍼들에 저장된 내용을 참조하여 제1트랜잭션을 처리할 수 있다.
상기 파일 시스템(12)은, 단계(S113)와 단계(S117) 사이에, 파일그룹 TFG#1에 포함된 파일들(File#1, File#2)에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일(File#3, File#4)에 관한 오퍼레이션 콜을 실행(S715, S716)할 수 있다.
단계(S118)에서, 상기 제1트랜잭션의 처리에 따라 상기 2개의 쓰기 오퍼레이션들에 관한 2개의 쓰기 명령들(WC#1~WC#2) 및 플러시 명령이 상기 파일 시스템(12)으로부터 상기 저장소(20)에게 전송될 수 있다.
한편, 도 6에 제시한 본 발명의 일 실시예에서, 상기 제1파일그룹(TFG#1)에 연관된 상기 제1트랜잭션이 아닌 제2파일그룹(TFG#2)에 연관된 제2트랜잭션이 실행될 수 있다. 이때, 상기 제2트랜잭션이 실행되는 시각은 상기 제1트랜잭션이 실행되는 시각에 종속되지 않는다. 즉, 상기 제1파일그룹(TFG#1)에만 연관된 상기 제1트랜잭션과 상기 제2파일그룹(TFG#2)에만 연관된 제2트랜잭션은 서로 독립적으로 실행될 수 있다. 즉, 상기 제1트랜잭션이 실행되고 있는 특정 시점에 상기 제2트랜잭션이 실행되고 있을 수 있다.
도 6에서 단계(S121~S128)는 상기 제2파일그룹(TFG#2)에만 연관된 제2트랜잭션에 관한 것이다. 도 6에서 단계(S121, S122)는 단계(S112)와 단계(S113) 사이에 실행되고, 단계(S123)는 단계(S113)와 단계(S114) 사이에 실행되고, 단계(S124, S125)는 단계(S115)와 상기 단계(S116) 사이에 실행되고, 단계(S126)는 단계(S118) 이후에 실행된다.
단계(S121)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 생성 콜(Create)을 송신할 수 있다. 상기 파일 시스템(12)은 상기 생성 콜(Create)을 수신하면 상기 제2파일그룹(TFG#2)을 생성할 수 있다.
여기서 상기 제2파일그룹을 나타내는 식별자인 TFG#2은 상기 파일 시스템(12)이 생성한 것이다. 상기 파일 시스템(12)은 상기 TFG#2을 상기 어플리케이션(11)에 반환할 수 있다. 이때부터, 상기 어플리케이션(11)은 상기 제2파일그룹에 관한 단계를 실행하기 위하여 상기 식별자 TFG#2을 이용할 수 있다.
단계(S122)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 추가 콜(Add(TFG#2, File#3, File#4))을 송신할 수 있다. 이때, TFG#2은 파일을 추가할 파일그룹을 나타내며, File#3 및 File#4는 TFG#2에 추가할 파일들을 나타낸다. 상기 파일 시스템(12)은 상기 추가 콜(Add(TFG#2, File#3, File#4))을 수신하면 상기 제2파일그룹(TFG#2)에 제3파일(File#3) 및 제4파일(File#4)을 추가할 수 있다.
단계(S123)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 스타트 콜(Start(TFG#2))을 송신할 수 있다. 이로써 제2트랜잭션일 시작될 수 있다. 상기 파일 시스템(12)은 상기 스타트 콜(Start(TFG#2))을 수신하면 제2트랜잭션을 위한 프로세스를 시작할 수 있다. 이때, TFG#2은 제2트랜잭션에 연관 지을 파일그룹을 나타내는 ID이다.
단계(S124)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 상기 제3파일(File#3)에 대한 쓰기 오퍼레이션 콜(WO#3)을 호출할 수 있다. 단계(S125)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 제4파일(File#4)에 대한 쓰기 오퍼레이션 콜(WO#4)을 호출할 수 있다. 단계(S214) 및 단계(S215)에서 각각, 상기 파일 시스템(12)은 상기 오퍼레이션 콜(WO#3) 및 오퍼레이션 콜(WO#4)이 전달한 페이지를 이에 대응하는 버퍼들에 저장할 수 있다. 이 버퍼들은 상기 제2트랜잭션에 관련된 버퍼인 것으로 간주될 수 있다.
본 발명의 일 실시예에 있어서, 상기 제2파일그룹을 지정한 스타트 콜, 오퍼레이션 콜, 및 커밋 콜의 실행시점은 상기 제1파일그룹을 지정한 스타트 콜, 오퍼레이션 콜, 및 커밋 콜의 실행시점에 종속되지 않는다.
본 발명의 일 실시예에서, 복수 개의 스타트 콜들과 복수 개의 커밋 콜들 중, 동일한 파일그룹을 지정하고 있는 한 개의 스타트 콜과 한 개의 커밋 콜은 서로 페어링될 수 있다. 예컨대 제1파일그룹을 지정한 스타트 콜(Start(TFG#1))과 커밋 콜(Commit(TFG#1))은 서로 페어링될 수 있다. 상기 호스트가 동작하는 동안, 상기 제1파일그룹을 지정한 커밋 콜(Commit(TFG#1))은 복수 회 발생할 수도 있다. 여기서 상기 스타트 콜(Start(TFG#1))에 페어링되는 커밋 콜(Commit(TFG#1))은, 상기 복수 개의 커밋 콜(Commit(TFG#1))들 중 상기 스타트 콜(Start(TFG#1))이 발생한 이후 처음으로 발생한 것일 수 있다.
본 발명의 일 실시예에서, 제1파일그룹을 지정한 스타트 콜(Start(TFG#1))은 제1시점에 발생하고, 상기 스타트 콜(Start(TFG#1))에 페어링된 커밋 콜(Commit(TFG#1))은 제2시점에 발생할 수 있다. 이때, 상기 제1시점과 상기 제2시점 사이에, 상기 제1파일그룹에 관한 오퍼레이션 콜들뿐만 아니라 제2파일그룹에 관한 오퍼레이션 콜들이 발생할 수 있다. 이때, 상기 커밋 콜(Commit(TFG#1))이 발생하면, 상기 제1파일그룹에 관한 오퍼레이션 콜들만이 커밋 처리되며, 상기 제2파일그룹에 관한 오퍼레이션 콜들은 커밋 처리되지 않는다. 즉, 상기 제1파일그룹에 관한 오퍼레이션 콜들은 제1트랜잭션에 속하고, 상기 제2파일그룹에 관한 오퍼레이션 콜들은 제2트랜잭션에 속한다.
이러한 본 발명의 특징은, 도 3 및 도 4에 제시한 비교 기술에서, 스타트 콜와 커밋 콜 사이에 발생한 모든 오퍼레이션 콜들이 한 개의 단일 트랜잭션에 포함되는 것과는 다르다.
도 6의 단계(S117)에서 상기 제2파일그룹(TFG#2)에 대한 오퍼레이션들은 처리되지 않는다.
단계(S126)에서, 상기 어플리케이션(11)은 상기 파일 시스템(12)에게 커밋 콜(Commit(TFG#2))을 호출할 수 있다. 상기 파일 시스템(12)은 상기 커밋 콜(Commit(TFG#2))을 수신하면 상기 제2파일그룹(TFG#2)에 연관된 상기 제2트랜잭션을 처리할 수 있다.
이때, 스타트 콜(Start(TFG#2))과 커밋 콜(Commit(TFG#2)) 사이에, 상기 제1파일그룹에 관한 오퍼레이션 콜들(WO#1, WO#2)뿐만 아니라 제2파일그룹에 관한 오퍼레이션 콜들(WO#3, WO#4)이 발생하였다.
상기 파일 시스템(12)은, 상기 어플리케이션(11)으로부터 수신한 오퍼레이션 콜에 지정되어 있는 파일이 제1파일그룹에 속한 것이라면 상기 오퍼레이션 콜은 상기 제1파일그룹에 관한 것으로 판단한다. 예컨대, 단계(S114)에서 상기 파일 시스템(12)이 수신한 오퍼레이션 콜(WO#1)에 지정되어 있는 파일(File#1)은 단계(S112)에서 제1파일그룹의 멤버가 되었으므로, 오퍼레이션 콜(WO#1)은 상기 제1파일그룹에 관한 것으로 결정된다.
이때, 상기 커밋 콜(Commit(TFG#2))이 발생하면, 상기 제2파일그룹에 관한 오퍼레이션 콜들만이 커밋 처리되며, 상기 제1파일그룹에 관한 오퍼레이션 콜들은 커밋 처리되지 않는다.
단계(S127)에서, 상기 파일 시스템(12)는 상기 커밋 콜(Commit(TFG#2))을 수신하면, 상기 제2파일그룹에 연관된 상기 제2트랜잭션에 관련된 버퍼들에 저장된 내용을 참조하여 제2트랜잭션을 처리할 수 있다.
단계(S128)에서, 상기 제2트랜잭션의 처리에 따라 상기 2개의 쓰기 오퍼레이션들에 관한 2개의 쓰기 명령들(WC#3~WC#4) 및 플러시 명령이 상기 파일 시스템(12)으로부터 상기 저장소(20)에게 전송될 수 있다.
도 7은 도 6으로부터 변형된 실시예를 나타낸다.
도 6에서는 제1파일그룹에 대한 스타트 콜이 제2파일그룹에 대한 스타트 콜 보다 먼저 발생하였고, 제1파일그룹에 대한 커밋 콜도 제2파일그룹에 대한 커밋 콜 보다 먼저 발생하였다.
이에 비하여, 도 6에서는 제1파일그룹에 대한 스타트 콜이 제2파일그룹에 대한 스타트 콜 보다 먼저 발생하였지만, 제2파일그룹에 대한 커밋 콜이 제1파일그룹에 대한 커밋 콜 보다 먼저 발생한 경우를 나타낸다.
그러나 상술한 바와 같이, 본 발명의 일 실시예에서, 서로 다른 파일그룹에 대한 서로 다른 트랜잭션들을 시간축에서 서로 독립적으로 실행되기 때문에, 상기 저장소(20)가 상기 파일 시스템(12)으로부터 수신하는 명령들의 집합은 도 6 및 도 7의 예에서 모두 동일하다. 다만, 상기 저장소(20)이 각 명령들의 집합을 수신하는 시점이 변경될 뿐이다. 도 6에서 단계(S118)에 전송되는 명령들이 한 개의 집합을 이루고, 단계(S128)에 전송되는 명령들이 또 다른 한 개의 집합을 이룬다.
도 8은 비교 실시예에 따라 트랜잭션을 실행하는 방법을 나타낸 순서도이다.
도 8은, 상기 파일그룹 개념을 이용하지 않는 종래의 기술을 이용하여, 상기 저장소(20)의 입장에서 도 6과 동일한 결과를 얻도록 하는 비교 실시예이다.
도 8에 나타낸 단계(S213~S218)은 도 6에 나타낸 단계(S113~S118)에 대응한다. 다만, 단계(S213~S217)이 나타내는 시스템 콜은 상술한 파일그룹이라는 정보를 이용하지 않는다.
또한, 도 8에 나타낸 단계(S223~S228)은 도 6에 나타낸 단계(S123~S128)에 대응한다. 다만, 단계(S223~S227)이 나타내는 시스템 콜은 상술한 파일그룹이라는 정보를 이용하지 않는다.
도 8에는 도 6에 나타낸 단계(S111, S112, S121, S122)에 대응하는 단계가 제공되지 않는다.
도 8에 나타낸 실시예가 도 6과 동일한 결과를 얻기 위해서, 제2트랜잭션의 시작을 위한 스타트 콜(S223)은 반드시 제1트랜잭션의 커밋 콜이 발생한 이후에 발생해야 한다. 즉, 제2트랜잭션의 스타트 콜 발생시점과 제1트랜잭션의 커밋 콜의 발생시점을 상기 어플리케이션(11)이 제어해야 한다.
이에 비하여, 도 6에 나타낸 방법에서는, 제2트랜잭션의 스타트 콜 발생시점과 제1트랜잭션의 커밋 콜의 발생시점을 상기 어플리케이션(11)이 제어하지 않더라도, 상기 파일 시스템(12)이 상기 파일그룹이라는 정보를 이용하여 자동으로 처리한다.
도 6의 방법에 따르면, 상기 어플리케이션(11)에서 특정 파일그룹에 대한 시작 콜과 추가 콜을 한 번만 발생시키면, 그 이후에 상기 파일그룹에 대한 트랜잭션을 다른 파일그룹에 대한 트랜잭션을 고려하지 않고 임의의 시점에 실행할 수 있다는 큰 효과가 제공된다.
도 9는 본 발명의 일 실시예에 따라 제공되는 트랜잭션 실행 방법을 나타낸 순서도이다.
도 9의 각 단계는 호스트에서 실행될 수 있다.
단계(S51)에서, 호스트의 어플리케이션이 상기 호스트의 파일 시스템에게 제1파일그룹을 생성하는 시스템 콜을 전송하고, 상기 파일 시스템이 상기 제1파일그룹을 생성할 수 있다.
단계(S52)에서, 상기 어플리케이션이 상기 파일 시스템에게 상기 제1파일그룹에 소정의 파일들을 멤버로서 추가하는 시스템 콜을 전송하고, 상기 제1파일그룹에 상기 소정의 파일들을 상기 제1파일그룹의 멤버로서 추가할 수 있다.
단계(S53)에서, 상기 어플리케이션이 상기 파일 시스템에게 상기 제1파일그룹에 관련된 제1트랜잭션을 시작하는 시스템 콜을 전송한 후, 상기 제1파일그룹에 대한 한 개 이상의 오퍼레이션 시스템 콜을 전송할 수 있다.
단계(S54)에서, 상기 어플리케이션이 상기 파일 시스템에게 상기 제1파일그룹에 관련된 제1트랜잭션의 커밋의 실행을 위한 시스템 콜을 전송하고, 상기 파일 시스템이, 상기 제1트랜잭션을 처리하여 한 세트의 명령들을 스토리지에 전송할 수 있다.
이때, 상기 파일 시스템이 처리하는 상기 제1트랜잭션은, 상기 제1트랜잭션을 시작하는 시스템 콜의 발생 시각과 상기 제1트랜잭션의 커밋의 실행을 위한 시스템 콜의 발생 시각 사이에, 상기 파일 시스템이 상기 어플리케이션으로부터 수신한 오퍼레이션 콜들 중에서, 상기 제1파일그룹에 연관된 오퍼레이션 콜들만을 포함할 수 있다.
도 10은 본 발명의 일 실시예에 따라 제공되는 트랜잭션 실행 방법을 나타낸 순서도이다. 도 10의 각 단계는 호스트에서 실행될 수 있다.
단계(S551)에서, 파일 시스템은 일 그룹의 파일들을 멤버로 갖는 파일그룹을 생성할 수 있다.
단계(S552)에서, 상기 파일 시스템이 어플리케이션으로부터 상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 연관된 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋할 수 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (15)

  1. 호스트의 파일 시스템이, 파일그룹을 생성하는 그룹생성단계(S711); 및
    상기 파일 시스템이, 상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117);
    를 포함하는,
    트랜잭션 처리방법.
  2. 제1항에 있어서,
    상기 그룹생성단계와 상기 커밋단계 사이에,
    상기 파일 시스템이, 상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및
    상기 파일 시스템이, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계;
    를 더 포함하는,
    트랜잭션 처리방법.
  3. 제1항에 있어서, 상기 커밋단계 이후에, 상기 파일 시스템이, 상기 파일그룹을 삭제하는 단계(S717)를 더 포함하는, 트랜잭션 처리방법.
  4. 제2항에 있어서,
    상기 그룹생성단계 이전에, 상기 호스트의 어플리케이션이, 상기 파일그룹을 생성하라는 파일그룹 생성 콜을 상기 파일 시스템에게 전송하는 단계(S111);
    상기 그룹생성단계와 상기 파일추가단계 사이에, 상기 어플리케이션이, 상기 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하라는 요청을 나타내는 파일추가 콜을 상기 파일 시스템에게 전송하는 단계(S112); 및
    상기 파일추가단계와 상기 오퍼레이션 콜을 실행하는 단계 사이에, 상기 어플리케이션이, 상기 파일그룹을 지정한 시작 콜을 상기 파일 시스템에게 전송하는 단계(S113);
    를 더 포함하며,
    상기 그룹생성단계는, 상기 파일 시스템이 상기 파일그룹 생성 콜을 수신하면 실행되고,
    상기 파일추가단계는, 상기 파일 시스템이 상기 파일추가 콜을 수신하면 실행되는,
    트랜잭션 처리방법.
  5. 제4항에 있어서,
    상기 파일추가 콜은 상기 파일그룹을 식별하는 식별자와 상기 일 그룹의 파일을 식별하는 식별자에 관한 정보를 포함하며,
    상기 시작 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하며, 그리고
    상기 커밋 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하는,
    트랜잭션 처리방법.
  6. 호스트로서,
    처리부; 및 통신부;를 포함하며,
    상기 처리부는 상기 호스트의 파일 시스템을 실행하도록 되어 있고,
    상기 파일 시스템은,
    파일그룹을 생성하는 그룹생성단계(S711); 및
    상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117);
    를 실행하도록 되어 있는 것을 특징으로 하는,
    호스트.
  7. 제6항에 있어서,
    상기 파일 시스템은,
    상기 그룹생성단계와 상기 커밋단계 사이에,
    상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및
    상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계;
    를 더 실행하도록 되어 있는,
    호스트.
  8. 제7항에 있어서,
    상기 처리부는 상기 호스트의 어플리케이션을 실행하도록 되어 있고,
    상기 어플리케이션은,
    상기 그룹생성단계 이전에, 상기 파일그룹을 생성하라는 파일그룹 생성 콜을 상기 파일 시스템에게 전송하는 단계(S111);
    상기 그룹생성단계와 상기 파일추가단계 사이에, 상기 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하라는 요청을 나타내는 파일추가 콜을 상기 파일 시스템에게 전송하는 단계(S112); 및
    상기 파일추가단계와 상기 오퍼레이션 콜을 실행하는 단계 사이에, 상기 파일그룹을 지정한 시작 콜을 상기 파일 시스템에게 전송하는 단계(S113);
    를 실행하도록 되어 있으며,
    상기 그룹생성단계는, 상기 파일 시스템이 상기 파일그룹 생성 콜을 수신하면 실행되고,
    상기 파일추가단계는, 상기 파일 시스템이 상기 파일추가 콜을 수신하면 실행되는,
    호스트.
  9. 제8항에 있어서,
    상기 파일추가 콜은 상기 파일그룹을 식별하는 식별자와 상기 일 그룹의 파일을 식별하는 식별자에 관한 정보를 포함하며,
    상기 시작 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하며, 그리고
    상기 커밋 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하는,
    호스트.
  10. 제6항에 있어서, 상기 파일 시스템은, 상기 커밋단계 이후에, 상기 파일 시스템이, 상기 파일그룹을 삭제하는 단계(S717)를 더 실행하도록 되어 있는, 호스트.
  11. 호스트 및 스토리지를 포함하는 컴퓨팅 장치로서,
    상기 호스트는 파일 시스템을 실행하도록 되어 있고,
    상기 파일 시스템은,
    파일그룹을 생성하는 그룹생성단계(S711); 및
    상기 파일그룹을 지정한 커밋 콜을 수신하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 커밋하는 커밋단계(S117);
    를 실행하도록 되어 있고,
    상기 스토리지는, 상기 파일 시스템이 상기 커밋단계를 실행하면, 상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜들만으로 구성된 트랜잭션을 상기 스토리지에 저장하도록 되어 있는,
    컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 파일 시스템은,
    상기 그룹생성단계와 상기 커밋단계 사이에,
    상기 파일그룹에 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하는 파일추가단계(S712); 및
    상기 파일그룹에 포함된 파일들에 관한 오퍼레이션 콜을 실행하고(S713, S714), 상기 파일그룹에 포함되지 않은 다른 파일에 관한 오퍼레이션 콜을 실행(S715, S716)하는 단계;
    를 더 실행하도록 되어 있는,
    컴퓨팅 장치.
  13. 제12항에 있어서, 상기 파일 시스템은, 상기 커밋단계 이후에, 상기 파일 시스템이, 상기 파일그룹을 삭제하는 단계(S717)를 더 실행하도록 되어 있는, 컴퓨팅 장치.
  14. 제12항에 있어서,
    상기 그룹생성단계 이전에, 상기 호스트의 어플리케이션이, 상기 파일그룹을 생성하라는 파일그룹 생성 콜을 상기 파일 시스템에게 전송하는 단계(S111);
    상기 그룹생성단계와 상기 파일추가단계 사이에, 상기 어플리케이션이, 상기 일 그룹의 파일을 상기 파일그룹의 멤버로서 추가하라는 요청을 나타내는 파일추가 콜을 상기 파일 시스템에게 전송하는 단계(S112); 및
    상기 파일추가단계와 상기 오퍼레이션 콜을 실행하는 단계 사이에, 상기 어플리케이션이, 상기 파일그룹을 지정한 시작 콜을 상기 파일 시스템에게 전송하는 단계(S113);
    를 더 실행하도록 되어 있고,
    상기 그룹생성단계는, 상기 파일 시스템이 상기 파일그룹 생성 콜을 수신하면 실행되고,
    상기 파일추가단계는, 상기 파일 시스템이 상기 파일추가 콜을 수신하면 실행되는,
    컴퓨팅 장치.
  15. 제14항에 있어서,
    상기 파일추가 콜은 상기 파일그룹을 식별하는 식별자와 상기 일 그룹의 파일을 식별하는 식별자에 관한 정보를 포함하며,
    상기 시작 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하며, 그리고
    상기 커밋 콜은 상기 파일그룹을 식별하는 식별자에 관한 정보를 포함하는,
    컴퓨팅 장치.
KR1020210167385A 2020-11-27 2021-11-29 다중파일 트랜잭션의 파일 관리 기법 및 장치 KR20220074806A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200163275 2020-11-27
KR20200163275 2020-11-27

Publications (1)

Publication Number Publication Date
KR20220074806A true KR20220074806A (ko) 2022-06-03

Family

ID=81755875

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210167385A KR20220074806A (ko) 2020-11-27 2021-11-29 다중파일 트랜잭션의 파일 관리 기법 및 장치

Country Status (2)

Country Link
KR (1) KR20220074806A (ko)
WO (1) WO2022114898A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
GB2472620B (en) * 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US10346298B2 (en) * 2016-06-10 2019-07-09 Sap Se Interval garbage collection for multi-version concurrency control in database systems
US11769156B2 (en) * 2018-05-15 2023-09-26 International Business Machines Corporation Automated data projection for smart contract groups on a blockchain

Also Published As

Publication number Publication date
WO2022114898A1 (ko) 2022-06-02

Similar Documents

Publication Publication Date Title
US20200265017A1 (en) Synchronization of client machines with a content management system repository
US10606578B2 (en) Provisioning of pluggable databases using a central repository
US10387451B2 (en) Synchronization system for multiple client devices
US8250102B2 (en) Remote storage and management of binary object data
KR101643022B1 (ko) 카탈로그-기반 소프트웨어 컴포넌트 관리
US11296940B2 (en) Centralized configuration data in a distributed file system
EP3079084A1 (en) Systems and methods for caching of managed content in a distributed environment using a multi-tiered architecture
US20190278856A9 (en) Asynchronous Shared Application Upgrade
US9462037B2 (en) Dynamically sizing chunks in a partially loaded spreadsheet model
US8370385B2 (en) Media collections service
US8650216B2 (en) Distributed storage for collaboration servers
US11574025B2 (en) Systems and methods for managed asset distribution in a distributed heterogeneous storage environment
JP2011508342A (ja) 非同期型レプリケーション
US20130097595A1 (en) Update scanning
US8612635B2 (en) Reusing system configuration information and metadata for related operations
US11321374B2 (en) External storage of unstructured database objects
CN112596956A (zh) 一种文件系统管理方法、装置及相关组件
CN110096295B (zh) 基于ReactNative的多模块移动应用的热更新方法及系统
US11831932B2 (en) System and method for client side compression in a content management environment
KR20220074806A (ko) 다중파일 트랜잭션의 파일 관리 기법 및 장치
US7761418B2 (en) Method and product for sharing logged data objects within a distributed storage system
CN117043764A (zh) 数据库复制到远程部署
US20210342084A1 (en) Using a secondary storage system to implement a hierarchical storage management plan
US11768853B2 (en) System to copy database client data
US20130159253A1 (en) Directing a data replication environment through policy declaration