KR20180082232A - 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법 - Google Patents

비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법 Download PDF

Info

Publication number
KR20180082232A
KR20180082232A KR1020170003670A KR20170003670A KR20180082232A KR 20180082232 A KR20180082232 A KR 20180082232A KR 1020170003670 A KR1020170003670 A KR 1020170003670A KR 20170003670 A KR20170003670 A KR 20170003670A KR 20180082232 A KR20180082232 A KR 20180082232A
Authority
KR
South Korea
Prior art keywords
dram
block
storage device
storage
log
Prior art date
Application number
KR1020170003670A
Other languages
English (en)
Other versions
KR101888781B1 (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 한국교통대학교산학협력단
Priority to KR1020170003670A priority Critical patent/KR101888781B1/ko
Publication of KR20180082232A publication Critical patent/KR20180082232A/ko
Application granted granted Critical
Publication of KR101888781B1 publication Critical patent/KR101888781B1/ko

Links

Images

Classifications

    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0686Libraries, e.g. tape libraries, jukebox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation

Abstract

비휘발성 메모리와 DRAM을 이용하는 하이브리드 블록 기반의 영속적 DRAM 스토리지와 그 작동 방법이 개시된다. DRAM 스토리지는, 비휘발성 메모리와 DRAM 및 DRAM보다 입출력 성능이 낮은 제3 저장장치를 구비하는 컴퓨팅 장치에서, 블록 데이터에 대한 입출력 요구에 따라 DRAM 스토리지의 커널에 의해 관리되는 로그 관리자가 DRAM에서 변경되는 블록에 대한 로그를 비휘발성 메모리에 저장하는 단계, 입출력 요구에 대한 데이터 처리와는 별도로 로그에 대응하는 블록 데이터를 임의의 쓰레드를 통해 제3 저장장치로 백업하는 단계를 포함한다.

Description

비휘발성 메모리를 이용하는 영속적 DRAM 스토리지 및 그 작동 방법{PERSISTENT DYNAMIC RANDOM ACCESS MEMORY STORAGE USING NON-VOLATILE RAM AND OPERATING METHOD THEREFOF}
본 발명의 실시예들은 영속적 DRAM(dynamic random access memory) 스토리지에 관한 것으로, 보다 상세하게는, 비휘발성 메모리와 DRAM을 이용하는 하이브리드 블록 기반의 영속적 DRAM 스토리지와 그 작동 방법에 관한 것이다.
기존의 DRAM(dynamic random access memory)을 기반으로 하는 리눅스의 RAM 디스크는 고속의 입출력성능을 제공하지만, 시스템 고장이 발행할 경우 모든 데이터를 잃어버리게 된다. 일부에서 DRAM과 하드디스크를 결합하여 시스템 고장에도 안정적으로 데이터를 유지하기 위한 방법이 제안된바 있지만, 입출력 성능이 RAM 디스크에 비해 상당히 저하된다.
DRAM의 휘발성 때문에 정전에 따라 발생하는 데이터 손실을 막기 위한 비휘발성 메모리에 개발이 활발히 진행되고 있다. 대표적인 사례가 PCM(Phase Change Memory), STT-MRAM(Non-Volatile Spin-Transfer Torque RAM), RRAM(Resistive RAM) 등과 같이 DRAM과는 다른 형태의 차세대 메모리 기술이다.
다른 한편으로, NVDIMM(Non-Volatile Dual In-line Memory Module)과 같이 기존의 DRAM에 배터리를 이용해서 전원을 공급함으로써 데이터를 유지하는 기술이 있다. 특히, NVDIMM(이하 NVRAM이라 함)은 JEDEC의 JC-45에 의해 표준으로 제정되었다.
또한, 기존의 DRAM 블록 스토리지는 DRAM의 휘발성으로 인해 발생하는 데이터 손실 문제를 해결하기 위해서 하드디스크를 결합하는 접근법을 취하기도 한다. 하지만, 이 접근법은 DRAM에서 변경된 데이터를 실시간으로 하드디스크로 백업하는 구조이므로 변경연산의 정도에 따라서 입출력 성능이 하드디스크에 가까워지는 단점이 있다.
이와 같이, DRAM 블록 스토리지 분야에서는 데이터 손실 문제를 해결하면서 하드디스크 대비 입출력 성능을 향상시킬 수 있는 방안이 요구되고 있다.
상술한 종래 기술의 문제점을 해결하기 위하여 본 발명의 목적은 비휘발성 메모리(NVRAM), DRAM(dynamic random access memory) 및 하드 디스크를 결합한 고속의 신뢰성 있는 하이브리드 블록 기반의 DRAM 스토리지를 제공하는데 있다.
본 발명의 다른 목적은 DRAM, NVRAM 및 하드디스크를 결합하여 DRAM의 입출력 성능에 가까우면서 안정적으로 데이터를 저장할 수 있는 DRAM 스토리지를 제공하는데 있다.
상술한 기술적 과제를 달성하기 위하여 본 발명의 일 측면에서는, NVRAM(non-volatile random access memory)과 DRAM(dynamic RAM)의 하이브리드 블록 스토리지에서 DRAM에 변경된 데이터를 일단 NVRAM에 저장한 후 하드디스크로 백업하는 DRAM 스토리지가 제공된다. DRAM 스토리지는 HDD(hard disk dirve)를 포함하는 하이브리드 블록 스토리지로 지칭될 수 있다.
일실시예에서, NVRAM의 용량에 제한이 있으므로 공간을 효과적으로 사용하기 위해서 DRAM에서 변경이 가해진 블록 중 변경된 영역만을 저장할 수 있다.
일실시예에서, 논리적인 블록 스토리지의 공간과 물리적인 공간(NVRAM, DRAM, 하드디스크) 사이의 매핑을 이용할 수 있다.
상술한 기술적 과제를 달성하기 위하여 본 발명의 다른 측면에서는, 비휘발성 메모리와 DRAM(dynamic random access memory) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함한 DRAM 스토리지를 구비하는 컴퓨팅 장치에서 수행되는 DRAM 스토리지의 작동 방법으로서, 블록 데이터에 대한 입출력 요구에 따라 DRAM 스토리지의 커널에 의해 관리되는 로그 관리자(비휘발성 메모리 로그 관리자)가 DRAM에서 변경되는 블록에 대한 로그를 비휘발성 메모리에 저장하는 단계; 상기 입출력 요구에 대한 데이터 처리와는 별도로 로그에 대응하는 블록 데이터를 임의의 쓰레드를 통해 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법이 제공된다.
상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 비휘발성 메모리와 DRAM(dynamic random access memory) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함한 DRAM 스토리지를 구비하는 컴퓨팅 장치에서 수행되는 DRAM 스토리지의 작동 방법으로서, 블록 데이터에 대한 입출력 요구시 제3 저장장치의 몇 번째 블록까지 데이터가 적재되었는지에 대한 기록에 따라 상기 입출력 요구를 상기 제3 저장장치에서 처리할지 혹은 상기 DRAM에서 처리할지를 판단하는 단계; 상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하는 단계; 및 상기 로그에 대응하는 블록을 상기 비휘발성 메모리에서 상기 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법이 제공된다.
일실시예에서, 상기 저장하는 단계는, 상기 DRAM에서 변경이 가해진 블록 중 변경된 영역에 대한 로그만을 상기 NVRAM에 저장할 수 있다.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 저장하는 단계 전에, 상기 비휘발성 메모리, 상기 DRAM 및 상기 제3 저장장치를 포함한 물리적인 공간들과 논리적인 블록 스토리지의 공간 사이를 매핑하는 매핑 테이블에 상기 로그를 기록하는 단계를 더 포함할 수 있다.
일실시예에서, 상기 저장하는 단계는, 상기 로그를 상기 제3 저장장치의 저장 단위에 따라 상기 로그를 복수의 로그들로 분할하여 상기 NVRAM에 저장할 수 있다.
일실시예에서, 상기 입출력 요구는 상기 컴퓨팅 장치에서 동작하는 응용 프로그램이 메인 메모리인 상기 DRAM에 데이터를 로딩할 때 상기 응용 프로그램으로부터 발생할 수 있다.
일실시예에서, 상기 입출력 요구는 상기 응용 프로그램에 연결되는 가상파일 시스템(virtual file system, VFS)을 통해 커널의 하이브리드 블록 스토리지의 디바이스 드라이버로 전달될 수 있다.
일실시예에서, 상기 디바이스 드라이버(블록 디바이스 드라이버)는 상기 DRAM의 일부 영역을 확보하여 DRAM 스토리지로 사용하고 상기 입출력 요구를 주기억장치인 DRAM 상의 메모리 읽기/쓰기로 변환하여 처리할 수 있다.
일실시예에서, 상기 디바이스 드라이버는 입력 요구에 대해서는 상기 DRAM 상의 해당 영역에 변경된 블록을 쓰고나서 변경분을 상기 NVRAM에 기록한 후 종료하며, 여기서 상기 NVRAM에 기록된 변경분은 임의의 쓰레드에 의해 순차적으로 상기 제3 저장장치의 해당 블록에 기록될 수 있다.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 백업하는 단계 후에, 상기 컴퓨팅 장치가 재시작될 때 상기 제3 저장장치의 블록을 상기 DRAM으로 적재하면서 상기 VFS로부터 입출력 요구가 전달되면 상기 DRAM에 적재된 블록은 상기 DRAM에서 처리되고, 아직 적재되지 않은 상기 제3 저장장치의 블록들은 상기 제3 저장장치에서 처리하는 단계를 더 포함할 수 있다.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 처리하는 단계 후에, 상기 컴퓨팅 장치의 커널에서는 상기 DRAM에서의 입출력, 상기 제3 저장장치에서의 입출력, 상기 제3 저장장치에서 상기 DRAM으로의 적재 연산이 일관되어 수행되도록 논리적인 블록 스토리지의 공간과 상기 제3 저장장치와 상기 DRAM의 물리적인 공간을 매핑하는 단계를 더 포함할 수 있다.
일실시예에서, 상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑하는 매핑 테이블은 상기 제3 저장장치의 모든 데이터를 상기 DRAM으로 적재하면 더 이상 유지되지 않거나 삭제될 수 있다.
일실시예에서, 상기 제3 저장장치는 하드디스크를 포함할 수 있다.
본 상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 컴퓨팅 장치의 커널에 의해 관리되는 블록 디바이스 드라이버; 상기 커널에 의해 관리되는 비휘발성 메모리 로그 관리자; 및 상기 블록 디바이스 드라이버와 상기 로그 관리자에 의해 관리되는 매핑 테이블을 포함하고, 상기 블록 디바이스 드라이버는 DRAM(dynamic random access memory), 비휘발성 메모리 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치에 대한 블록 데이터의 입출력 요구에 따라 상기 블록 데이터의 입출력을 관리하고, 상기 비휘발성 메모리 로그 관리자는 상기 입출력 요구에 따라 상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하며, 여기서, 상기 블록 디바이스 드라이버는 상기 입출력 요구에 대한 데이터 처리와는 별도로 상기 로그에 대응하는 블록 데이터를 상기 제3 저장장치로 백업하는, DRAM 스토리지가 제공된다.
일실시예에서, 상기 매핑 테이블은 상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑할 수 있다.
상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 컴퓨팅 장치의 커널의 가상 파일 시스템(virtual file system, VFS)에 의해 제어되는 블록 디바이스 드라이버; 상기 블록 디바이스 드라이버에 연결되는 비휘발성 메모리(non-volatile random access memory, NVRAM) 로그 관리자와 적재 관리자; 및 상기 블록 디바이스 드라이버에 의해 구동되는 DRAM(dynamic random access memory), 비휘발성 메모리(NVRAM) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함하는, DRAM 스토리지가 제공된다. 여기서, 사용자 레벨의 응용의 IO 요청들은 VFS를 통해 블록 입출력(Block IO) 요구로 변환되어 블록 디바이스 드라이버로 전달될 수 있다. Block IO가 쓰기 연산일 경우, Block IO는 NVRAM 로그 관리자에 의해서 로그 레코드로 변환되어 NVRAM에 저장될 수 있다. NVRAM에 Block IO의 로그 레코드가 저장되면, NVRAM 로그 관리자는 DRAM에 Block IO를 반영하고, VFS에 Block IO의 처리가 완료되었음을 알릴 수 있다. VFS는 Block IO를 요청한 응용(Applications)에 Block IO의 처리가 완료되었음을 알릴 수 있다. 그리고, NVRAM 및 제3 저장장치 사이에 연결되는 동기화 관리자는 NVRAM 로그 관리자에 의해 NVRAM에 기록된 로그 레코드를 읽고 읽은 로그 레코드를 제3 저장장치에 쓰기 위한 Block IO로 변환할 수 있다. 변환된 Block IO는 DRAM에 기록된 블록 위치와 동일한 위치의 제3 저장장치에 쓰여질 수 있다.
일실시예에서, 적재 관리자는, 컴퓨팅 장치 또는 시스템의 재시작시, 제3 저장장치의 블록들을 순차적으로 DRAM으로 적재하며, 적재 중에 각 블록이 제3 저장장치에 있는지 DRAM에 적재되어 있는지를 관리하며, VFS로부터 전달되는 Block IO에 대해서 해당 블록이 제3 저장장치에 있는지 또는 DRAM에 있는지 판단해서 Block IO를 해당 매체로 전달할 수 있다.
일실시예에서, 적재 관리자는 각 블록의 실제 위치를 관리하기 위해서 매핑 테이블을 이용할 수 있다.
일실시예에서, 적재 관리자는 각 블록의 실제 위치를 관리하기 위해서 제3 저장장치에서 DRAM으로 가장 마지막에 적재된 블록의 번호(및/또는 위치)만을 기록할 수 있다.
일실시예에서, 상기 제3 저장장치는 하나 또는 복수의 하드디스크들을 포함하며 하나의 하드디스크의 외형 사이즈는 하나의 DRAM의 외형 사이즈에 대응할 수 있다.
상술한 바와 같은 본 발명의 실시예들에 의하면, DRAM의 입출력 성능에 가까우면서 안정적으로 데이터를 저장할 수 있는 고속 및 고신뢰성의 DRAM 블록 스토리지를 제공할 수 있다.
또한, 시스템 고장으로 인한 재시작이나, 정상적인 재시작시에 빠르게 블록 스토리지의 입출력 기능/서비스를 제공할 수 있다.
도 1은 본 발명의 일실시예에 따른 DRAM(dynamic random access memory) 스토리지에 대한 블록도이다.
도 2는 도 1의 DRAM 스토리지에 채용할 수 있는 매핑 테이블의 구조를 예시한 도면이다.
도 3은 도 1의 DRAM 스토리지에 채용되는 로그 관리자와 동기화 관리자의 작동 원리를 설명하기 위한 블록도이다.
도 4 내지 도 7은 도 1의 DRAM 스토리지의 작동 원리를 설명하기 위한 도면들이다.
도 8은 본 발명의 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 또 다른 도면이다.
도 9는 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 구현예를 설명하기 위한 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 영속적 DRAM 스토리지의 다른 구현예를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 아니하는 것으로 이해되어야 할 것이다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함한다", "가진다" 등과 관련된 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 명세서에서 블록 I/O 연산 중 디스크에 저장된 데이터를 메모리로 옮기는 것을 읽기(read)라고 지칭하고, 메모리에 저장된 데이터를 디스크로 옮기는 것을 쓰기(write)라고 지칭할 수 있다.
본 명세서에서 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 포함한다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 의미와 일치하는 의미로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 DRAM(dynamic random access memory) 스토리지를 포함하는 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 실시예에 따른 컴퓨팅 장치는 프로세서와 메모리를 포함할 수 있다. 프로세서는 메모리에 저장된 프로그램을 실행하여 일련의 절차를 수행할 수 있다. 일련의 절차는 사용자 영역(user area, 10)과 커널 영역(kernel area, 20)으로 구분될 수 있다.
프로세서는 적어도 하나 이상의 중앙 처리 장치를 포함할 수 있고, 중앙처리장치(CPU)는 MCU(micro control unit)와 주변 장치(외부 확장 장치를 위한 집적회로)가 함께 배치되는 SOC(system on chip)로 구현될 수 있으나, 이에 한정되지는 않는다. 그리고 코어는 처리할 명령어를 저장하는 레지스터(register)와, 비교, 판단, 연산을 담당하는 산술논리연산장치(arithmetic logical unit, ALU)와, 명령어의 해석과 실행을 위해 CPU를 내부적으로 제어하는 제어부(control unit)와, 이들을 연결하는 내부 버스 등을 구비할 수 있다.
또한, 프로세서는 하나 이상의 데이터 프로세서, 이미지 프로세서 또는 코덱(CODEC)을 포함할 수 있으나, 이에 한정되지는 않는다. 프로세서는 주변장치 인터페이스와 메모리 인터페이스를 구비할 수 있다. 주변장치 인터페이스는 프로세서와 입출력 시스템 및 여러 다른 주변 장치를 연결하고, 메모리 인터페이스는 프로세서와 메모리를 연결할 수 있다.
또한, 프로세서는 여러 가지의 소프트웨어 프로그램을 실행하여 데이터 처리를 수행할 수 있다. 프로세서는 메모리에 저장되어 있는 특정한 소프트웨어 모듈(명령어 세트)을 실행하여 해당 모듈에 대응하는 특정한 기능을 수행할 수 있다. 즉, 프로세서는 메모리에 저장된 소프트웨어 모듈들에 의해 컴퓨팅 장치에서 데이터 입출력 서비스를 제공할 수 있다.
본 실시예에서 메모리는 영속적 DRAM 스토리지(이하 간략히 'DRAM 스토리지'라고 함)를 포함할 수 있다. DRAM 스토리지는, DRAM, 비휘발성 랜덤 액세스 메모리(non-volatile RAM, NVRAM; 이하 간략히 '비휘발성 메모리'라고 함) 및 하드디스크드라이브(hard disk drive, HDD; 이하 간략히 '하드디스크'라고 함)을 포함할 수 있다. 메모리는 광 저장 장치, 플래시 메모리 등에서 선택되는 적어도 하나를 더 포함할 수 있다. 이러한 메모리는 소프트웨어, 운영체제, 프로그램, 명령어 집합 또는 이들의 조합을 저장할 수 있고, 스케줄 운영 정책이나 프로그램 코드를 저장할 수 있다.
소프트웨어의 구성요소는 운영 체제(operating system) 모듈, 그래픽 모듈, 사용자 인터페이스 모듈, MPEG(moving picture experts group) 모듈, 통신 모듈, 카메라 모듈, 애플리케이션 모듈 등을 포함할 수 있다. 모듈은 명령어들의 집합으로서 명령어 세트(instruction set) 또는 프로그램으로 표현될 수 있다.
운영체제는 MS WINDOWS, LINUX, 다윈(Darwin), RTXC, UNIX, OS X, iOS, 맥 OS, VxWorks, 구글 OS, 안드로이드(android), 바다(삼성 OS), 플랜 9 등과 같은 내장형 운영체제를 포함할 수 있다. 운영체제는 여러 가지의 하드웨어(장치)와 소프트웨어 구성요소(모듈) 사이의 통신을 수행하는 기능도 구비할 수 있다.
본 실시예의 DRAM 스토리지에 사용되는 비휘발성 메모리(NVRAM, 40)는 전력 유지를 위해 백업 배터리를 사용할 수 있고, 그에 의해 갑작스런 정전(unexpected power loss), 시스템 충돌(system crash), 또는 통상적인 시스템 셧다운으로부터 전력이 차단될 때에도 NVRAM(40)의 데이터를 유지할 수 있다. 비휘발성 메모리로는 NVDIMM-N, NVDIMM-F 및 NVDIMM-P의 세 타입들 중 적어도 어느 하나 이상이 사용될 수 있다. 이러한 구성에 의하면, 본 실시예에 따른 하이브리드 블록 기반의 영속적 DRAM 스토리지는 NVRAM(40)을 로그 장치(log devices)로서 사용하여 컴퓨터 시스템 또는 프로세서가 재부팅될 때 HDD(hard disk drive, 50) 내 모든 블록들이 DRAM에 로딩되기 전에 접근될 수 있다. DRAM(30)은 좁은 의미에서 DRAM 스토리지로 지칭될 수 있다.
전술한 유저 영역(10)은 유저 모드 또는 유저 모드 운영체제로 지칭될 수 있고, 커널 영역(20)은 커널 모드 또는 커널 모드 운영체제로 지칭될 수 있다.
커널 모드(20)는 커널에 권한이 있는 프로그램 모드로서, 모든 시스템 메모리와 모든 CPU 인스트럭션(instruction)에 접근이 허가된 프로세스 실행모드를 지칭할 수 있다. 즉, 프로세서는 유저 모드(10)보다 커널 모드(20)에 높은 권한을 부여함으로써 오작동을 유발하는 유저 어플리케이션 등이 시스템 안정성을 해치지 않도록 설계될 수 있다. 한편, 유저 모드(10)는 보통 커널 모드(20)보다 낮은 권한으로 설정되고, 애플리케이션의 오작동으로 인해 컴퓨팅 시스템의 안정성을 해칠 수 있다.
유저 모드(10)와 커널 모드(20)는 접근 가능한 가상 메모리의 범위를 서로 다르게 가질 수 있다. 각 프로세스들은 고유한 개별 메모리 공간을 가지지만 커널 모드 운영체제와 디바이스 드라이버 코드는 단일 가상주소 공간을 공유할 수 있다. 가상 메모리 내의 각 페이지에는 페이지를 읽고 쓰기 위해 프로세서가 가져야 하는 접근 모드가 무엇인지 표시될 수 있으며, 시스템 공간의 페이지는 커널 모드(20)에서만 접근가능할 수 있다.
애플리케이션(60)(이하 유저 애플리케이션이라 함)은 시스템 서비스를 호출할 때 유저 모드(10)에서 커널 모드(20)로 전환될 수 있다. 예를 들면, 윈도우 ReadFile 함수는 실제로 파일로부터 데이터를 읽는 기능을 처리할 내부 윈도우 루틴의 호출이 필요하다. 이 루틴은 시스템 데이터 구조체에 접근하므로 커널 모드(20)에서 실행되어야 하며, 유저 모드(10)에서 커널 모드(20)로의 변환은 프로세서를 커널 모드(20)로 전환하게 하는 특별한 프로세서 인스트럭션의 사용으로 구현될 수 있다.
본 실시예에 따른 컴퓨팅 장치에서 운영체제는 유저 애플리케이션(60)에서 가상 파일 시스템(virtual file system, VFS, 62)을 통해 영속적 베스트 입출력을 위한 블록 디바이스 드라이버(PBestIO Block Device Driver, 이하 간략히 블록 디바이스 드라이버 또는 디바이스 드라이버라고 함; 22)에 DRAM 스토리지를 운영, 관리 또는 제어할 수 있다. 여기서 DRAM 스토리지는 넓은 의미에서 DRAM(30), NVRAM(40) 및 HDD(50)을 포함하고, 좀더 넓은 의미에서 비휘발성 메모리 로그 관리자(이하, 간략히 로그 관리자라고 함, NVRAM Log Manager, 24), 적재 관리자(Load Manager, 25) 및 동기화 관리자(Sync Manager, 27)를 더 포함할 수 있다.
운영체제는 상기의 인스트럭션을 통해 시스템 서비스가 요청됨을 인식하고 스레드(thread)가 시스템 함수에 전달한 인자를 검증한 후 내부 함수를 실행할 수 있다. 제어를 다시 유저 스레드로 되돌리기 전에 프로세서는 다시 유저 모드로 전환될 수 있다. 이러한 방식으로 운영체제는 그 자체와 데이터를 사용자 프로세스가 들여다보거나 변경하지 못하게 보호될 수 있다. 이렇게 유저 모드(10)에서 커널 모드(20)에 접근할 수 있는 권한을 받은 후에 시스템 자원을 이용하고 그 이후에 유저 모드(10)로 돌아갈 수 있다. 그 경우, 유저 모드(10)로의 복귀를 위한 권한 회수는 시스템 서비스 콜(system service call)이라는 기능에 의해 구현될 수 있다.
유저 모드(10)는 구현에 따라서 명령어 인터페이스(command line interface, CLI), 공유 라이브러리(shored library) 및 입출력 제어 인터페이스(nput/output control interface, IOCTL interface)를 포함할 수 있다. 명령어 인터페이스는 명령 줄 인터페이스로 지칭될 수 있으며, 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 말한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력할 수 있고, 컴퓨터로부터의 출력도 문자열 형태로 주어질 수 있다. 공유 라이브러리는 다른 프로그램들과 링크되기 위해 존재하는 하나 이상의 서브루틴이나 함수들의 집합 파일로서 함께 링크(link)될 수 있도록 미리 컴파일된 형태인 오브젝트 코드 형태로 존재할 수 있는 라이브러리의 일종이다. 공유 라이브러리를 사용하여 컴파일을 하면 링커가 실행파일에 "실행될 때 우선 이 라이브러리를 로딩시킬 것"이라는 표시를 할 수 있다. 이러한 방식은 정적 라이브러리를 사용하는 것보다 파일 크기가 작아지고 커널이 메모리에 한 카피(copy)의 공유 메모리를 보유하면서 다중의 프로그램들과 공유하기 때문에 메모리를 적게 차지하고, 사용 후 메모리에서 삭제되기 때문에 메모리 사용에 효율적이다. 그리고 입출력 제어 인터페이스는 기본 운영체제의 컴퓨터 사용자와 커널을 잇는 인터페이스의 일부일 수 있다. 입출력 제어 인터페이스는 사용자 공간의 코드가 하드웨어 장치, 커널 구성 요소와 통신할 수 있도록 동작할 수 있다. 여기서 기본 운영체제는 두 개의 계층 즉 유저 영역(10)과 커널 영역(20)으로 나뉘어질 수 있다.
유저 영역(10)에서는 스토리지 생성, 삭제 등의 동작과, 성능, 실패 등의 모니터링 동작이 수행될 수 있다. 그리고 커널 영역(20)에서는 가상 블록 디바이스 드라이버(VFS에 연결되는 블록 디바이스 드라이버에 대응함)를 실행하거나, NVRAM(40)에 대한 로그 관리를 수행하거나, 맵핑 테이블을 이용하여 HDD(50)로부터의 초기 데이터 로딩 동안에 DRAM(30)과 HDD(50)의 접속을 허용할 수 있다.
커널 영역(20)은 VFS(62), 블록 디바이스 드라이버(22), 로그 관리자(24), 적재 관리자(25), 동기화 관리자(27), DRAM(30), NVRAM(40) 및 HDD(50)를 포함할 수 있다.
다시 도 1을 참조하여 블록의 영속적 베스트 입출력(PBestIO)에 대한 전체 구조를 설명하면 다음과 같다. PBestIO는 리눅스 시스템 커널의 블록 장치 드라이버로 동작할 수 있고, 이 드라이버를 지칭할 수 있다. 도 1에서 PBestIO 블록 장치 드라이버 (PBestIO Block Device Driver, 22)가 바로 그것이다.
사용자 레벨의 응용 또는 응용 프로그램(Applications, 60)의 IO 요청들은 커널 레벨의 VFS(62)를 통해서 Block IO 요청으로 변환되어 PBestIO 블록 장치 드라이버(22)로 전달된다. PBestIO 블록 장치 드라이버(22)로 전달되는 Block IO가 쓰기 연산일 경우 NVRAM 로그 관리자(NVRAM Log Manager, 24)에 의해서 로그 레코드(Log Record)로 변환되어 NVRAM(40)에 저장된다.
다음, NVRAM(40)에 해당 Block IO의 로그 레코드가 저장되면 DRAM 저장소(DRAM Storage, 30)에 Block IO를 반영하고 VFS(62)에 Block IO의 처리가 완료되었음을 알린다. VFS(62)는 다시 Block IO를 요청한 응용(60)에 Block IO의 처리가 완료되었음을 알린다. 동기화 관리자(Sync Manager, 27)는 NVRAM 로그 관리자(24)에 기록된 로그 레코드를 읽어서 HDD(50)에 쓰기 위한 Block IO로 변환한다. 변환된 Block IO는 DRAM 저장소(30)에 기록된 블록 위치와 동일한 위치의 하드디스크(50)에 쓰인다.
적재 관리자(Load Manager, 25)는 시스템 재시작시 동작할 수 있다. 적재 관리자(25)는 시스템이 재시작하면 HDD(50)의 블록들을 순차적으로 DRAM(30)으로 적재할 수 있다. 적재하면서 각 블록이 HDD(50)에 있는지 DRAM(30)에 적재되어 있는지를 관리할 수 있다. 또한, 적재 관리자(25)는, VFS(62)로부터 전달되는 Block IO에 대해서 해당 블록이 HDD(50)에 있는지 DRAM(30)에 있는지 판단해서 Block IO를 해당 매체로 전달하여 처리할 수 있다. 적재 관리자(25)는 각 블록의 실제 위치를 관리하기 위해서 매핑 테이블(mapping table) 방식 및/또는 가장 마지막에 적재된 블록의 번호만을 기록하는 방식을 취할 수 있다.
적재 관리자(25)는 PBestIO(22)가 시스템 재시작 시에 하드디스크(50)에 저장된 데이터를 모두 DRAM(30)으로 적재하는 동안 하드디스크(50)와 DRAM(30)을 모두 이용하여 Block IO 요청을 처리할 수 있다. 시스템이 재시작되면 하드디스크(50)의 블록을 DRAM(30)으로 적재하면서 VFS(62)의 입출력 요구에 따라 DRAM(30)에 적재된 블록은 DRAM(30)에서 처리하고, 아직 적재되지 않은 블록들은 하드디스크(50)에서 처리하는 형태로 진행될 수 있다. 이때, DRAM(30)에서의 입출력, 하드디스크(50)에서의 입출력, 하드디스크(50)에서 DRAM(30)으로의 적재 연산이 동시에 일관되게 수행될 수 있도록 논리적인 블록 스토리지의 공간과 물리적인 하드디스크(50)와 DRAM(30)의 공간을 매핑하는 매핑 테이블을 유지할 수 있다.
도 2는 도 1의 DRAM 스토리지에 채용할 수 있는 매핑 테이블의 구조를 나타낸다.
도 2에 도시한 바와 같이, 본 실시예에 따른 매핑 테이블(mapping table, 26)은 논리적인 블록 스토리지의 블록 ID(logical block ID)와 물리적인 위치(physical location)를 매핑한다.
한편, 도 2에서 매핑 테이블(26)만을 보면 각 블록 ID에 대해서 해당 블록이 DRAM(M) 및 하드디스크(H)의 몇 번째 블록에 있는지를 모두 관리한다. 매핑 테이블은 하드디스크의 모든 데이터를 DRAM으로 적재하면 더 이상 유지되지 않는다. 이러한 구성(기존 구성)의 문제점은 스토리지의 크기가 매우 크고 블록의 크기가 작을 때, 매핑 테이블의 크기가 매우 커져서 이에 대한 관리 비용이 높아진다는 것이다.
따라서, 본 실시예에서는 새로운 방법으로서 하나의 변수를 통해서 하드디스크의 몇 번째 블록까지 적재되었는지를 기록해서 IO 요청(IO request)을 하드디스크에서 처리할지 DRAM에서 처리할지 판단하는 방법을 이용한다. 이러한 방법은 아직 적재되지 않은 블록에 대한 쓰기 연산의 경우 DRAM에서 처리해도 되는데 이를 처리하지 못할 수 있지만, 적재 동안에만 이 현상이 발생하므로 전체 성능에는 크게 영향을 미치지 않고, 구현의 복잡도를 줄일 수 있어서 기존 구성의 문제점을 해결하면서 성능을 향상시킬 수 있는 장점이 있다.
도 3은 본 발명의 다른 실시예에 따른 DRAM 스토리지에 채용할 수 있는 로그 관리자와 동기화 관리자의 작동 원리를 설명하기 위한 블록다이어그램이다.
도 3을 참조하면, 로그 관리자(NVRAM Log Manager, 24)와 동기화 관리자(Sync Manager, 27)는 모두 별도의 쓰레드(thread)로 동작하며 쓰레드가 생성된 후 바로 슬립(Sleep) 모드로 전환될 수 있다. PBestIO 블록 장치 드라이버는 VFS로부터 Block IO를 받고 그에 따라 로그 관리자 쓰레드를 깨울 수 있다.
로그 관리자(24)는 전달된 Block IO를 로그 생성기 (Log Generator, 242)에 입력하여 로그를 생성할 수 있다. 생성된 로그 레코드는 로그 기록기(Log Writer, 244)에 전달되고, 로그 기록기(244)는 NVRAM IO 관리자(NVRAM IO Manager, 246)를 통해서 NVRAM(40)에 로그 레코드를 기록할 수 있다. 로그 관리자(24)는 NVRAM(40)에 로그를 기록하고 나서 동기화 관리자(27)를 깨울 수 있다.
동기화 관리자(27)는 로그 관리자(24)에 의해서 슬립 모드에서 활성 모드로 전환될 수 있다. 동기화 관리자(27)는 제일 먼저 NVRAM 로그 관리자(24)가 읽어서 처리할 로그가 있는지 확인하고 처리할 로그가 있으면 순차적으로 읽어서 로그 분석기(Log Parser, 272)를 통해서 하드디스크(50)에 저장하기 위한 Block IO 형태로 변환한다. 변환된 Block IO는 블록 기록기(Block Writer, 274)에 의해서 하드디스크(50)에 기록될 수 있다. 동기화 관리자(27)는 NVRAM 로그 장치에서 처리할 로그가 있으면 계속 위의 과정을 반복하고 없으면 다시 슬립 모드로 전환될 수 있다.
도 4 내지 도 7은 본 발명의 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 도면들이다.
먼저, 도 4를 참조하면, 본 실시예에 따른 NVRAM 로그 관리자(이하 간략히 '로그 관리자'라고 함)는 입출력 요구(IO Request)가 입력될 때 DRAM에서 변경되는 블록에 대한 로그 기록(log records)을 이용하여 블록 단위의 데이터를 HDD(50)에 저장할 수 있다.
로그 관리자에 제어에 따른 DRAM 스토리지(22)의 동작을 좀더 구체적으로 살펴보면, 일점쇄선 박스(E1) 내에 나타낸 바와 같이, DRAM(30)에 일정 크기(block) 단위의 데이터에 대한 입출력 요구(IO Request)가 입력되면, 로그 관리자는 먼저 블록 I/O의 시작 지점인 함수(예컨대, submit_bio())에 포함된 bio 구조체의 인자를 인지하거나 체크할 수 있다.
상기 함수는 I/O 연산의 종류(예컨대, read 혹은 wirte)와 해당 연산에 대한 모든 정보를 포함하는 bio 구조체를 인자로 받을 수 있다. bio 구조체는 기본으로 I/O를 수행할 디스크 영역의 정보와 I/O를 수행할 데이터를 저장하기 위한 메모리 영역의 정보를 포함할 수 있다.
다음, 로그 관리자는 DRAM(30)에서 변경되는 블록들(예컨대, block1, block2)에 대한 정보를 포함하는 로그 기록(log records)을 NVRAM(40)에 저장할 수 있다. 이때, DRAM(30)의 서로 다른 저장 영역들에 저장되는 데이터에 대응하는 로그 기록들은 로그 기록을 기록하는 메모리의 소정 영역에 순서대로 기록될 수 있다. 로그 기록을 기록하는 메모리는 DRAM(30) 내 일부 저장 공간일 수 있으나, 이에 한정되지는 않는다.
다음으로, 도 5를 참조하면, 본 실시예에 따른 로그 관리자는 입출력 요구가 있을 때 DRAM(30)에서 변경되는 블록(block4)에 대한 로그 기록을 획득할 수 있다. 로그 기록은 일점쇄선 박스(E2) 속에 나타낸 바와 같이 이전 로그 기록(block1 및 block2)과 함께 기록될 수 있다. 로그 기록은 DRAM(30)에 소정 영역에 저장될 수 있고, 로그 기록을 누적하다가 시스템상의 기설정 이벤트나 로그 기록의 사이즈 등에 따라 초기화될 수 있다. 로그 기록은 현재 로그 기록을 포함하는 누적 로그 기록 형태로 NVRAM(40)에 저장될 수 있다. 또한, 로그 기록은 HDD(50)의 저장 단위(예컨대, 섹터), 데이터 처리 용량 단위 등에 따라 미리 정해진 크기 단위에 대응하는 복수의 로그 기록들(예컨대, 두 개의 block4)로 분할되어 NVRAM(40)에 저장될 수 있다.
다음으로, 도 6을 참조하면, 본 실시예에 따른 로그 관리자는 일점쇄선 박스(E3)로 나타낸 바와 같이 NVRAM(40)에 저장된 로그 기록에 대응하는 매핑 테이블의 정보를 이용하여 DRAM(30)에 저장된 데이터 블록들(blocks)을 HDD(50)에 저장할 수 있다. NVRAM(40)에 저장된 로그 기록에 대응하는 데이터 블록들은 HDD(50)의 서로 다른 저장 영역들에 대응하도록 매핑 테이블에 의해 매핑될 수 있다.
또한, 도 7을 참조하면, 본 실시예에 따른 적재 관리자는 일점쇄선 박스(E4) 속에 나타낸 바와 같이 NVRAM(40)에 저장된 로그 기록에 대응하는 매핑 테이블의 정보를 이용하여 DRAM(30)에 저장된 데이터 블록들(blocks)을 HDD(50)에 저장할 때, NVRAM(40)에 저장된 복수의 로그 기록들에 대응하는 데이터 블록들을 HDD(50)의 동일 저장 영역에 연속하여 저장할 수 있다.
이와 같이, 적재 관리자는 DRAM 스토리지(22)에 블록 단위의 쓰기 요구가 들어올 때 DRAM(30)에 1차로 블록을 기록하고, 기록된 블록에서 변경된 내용만을 로그(로그 기록)로 만들어 NVRAM(40)에 기록한 후 쓰기 요구를 끝낸 후에, 비동기적으로 동작하는 쓰레드가 지속적으로 NVRAM(40)의 로그를 순차적으로 읽어서 HDD(50)에 블록을 기록할 수 있다.
본 실시예에 의하면, 비휘발성 메모리를 로그 장치로 이용하여 쓰기 요구가 들어올 때 하드디스크에 대한 쓰기 없이 쓰기 요구를 처리하는 영속적 DRAM 스토리지를 제공할 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 블록도이다.
본 실시예에 따른 비휘발성 메모리(40, NVDIMM 또는 NVRAM)와 DRAM(30)의 하이브리드 스토리지(DRAM 스토리지에 대응함)의 논리구조는 도 8에 도시한 바와 같다.
도 8을 참조하면, 본 실시예에 따른 컴퓨팅 장치의 응용 프로그램(Application, 60)이 메인 메모리인 DRAM(30)에 데이터를 로딩할 때 응용 프로그램(60)으로부터 발생한 입출력 요구는 가상파일 시스템(virtual file system, 62)을 통해 커널의 하이브리드 블록 스토리지 디바이스 드라이버(22)로 전달될 수 있다. 하이브리드 블록 스토리지 디바이스 드라이버(22)는 메모리 디스크 블록 디바이스 드라이버(memory disk block device driver)(이하, 간략히 '블록 디바이스 드라이버'라고 함)로 지칭될 수 있다.
블록 디바이스 드라이버(22)는 DRAM(30)의 일부 영역을 확보하여 블록 스토리지로 사용할 수 있다. 블록 디바이스 드라이버(22)에 의해서 블록 입출력 요구는 주기억장치인 DRAM(30) 상의 메모리 읽기/쓰기로 변환되어 처리될 수 있다.
블록 디바이스 드라이버(22)가 출력 요구를 DRAM(30)에서 해당 영역을 읽기 연산으로 변환하여 처리하면 바로 종료되지만, 입력 요구에 대해서는 DRAM(30) 상의 해당 영역에 변경된 블록을 쓰고나서 변경부분(그 정보 혹은 로그 기록)을 NVRAM(40)에 기록한 후 종료할 수 있다. NVRAM(40)에 기록된 변경분은 다시 하드디스크(50)의 해당 블록에 기록되게 된다. 즉, 블록 스토리지 드라이버(22)에 대한 출력 요구는 DRAM(30)의 읽기 연산으로 처리되지만, 입력 요구는 DRAM(30)의 쓰기 연산과 NVDIMM의 쓰기 연산으로 처리될 수 있다. 기존의 DRAM 블록 스토리지는 입력 연산의 경우 DRAM에 대한 쓰기와 하드디스크에 대한 입력 연산으로 처리되므로 본 실시예에 따른 하이브리드 블록 스토리지의 입력 성능이 훨씬 우수하게 된다.
또한, 본 실시예에 따른 컴퓨팅 장치에서 하이브리드 블록 스토리지가 시스템 재시작시에 하드디스크(50)에 저장된 데이터를 모두 DRAM(30)으로 적재하는 동안 하드디스크(50)와 DRAM(30)을 모두 이용하여 입출력을 처리할 수 있다.
본 실시예에서 시스템(컴퓨팅 장치)이 재시작되면 하드디스크(50)의 블록을 DRAM(30)으로 적재하면서 VFS(62)로부터 입출력 요구가 전달되면 DRAM(30)에 적재된 블록은 DRAM(30)에서 처리하고, 아직 적재되지 않은 블록들은 하드디스크(50)에서 처리하는 형태로 진행될 수 있다. 이때 DRAM(30)에서의 입출력, 하드디스크(50)에서의 입출력, 하드디스크(50)에서 DRAM(30)으로의 적재 연산이 동시에 일관되게 수행될 수 있도록 논리적인 블록 스토리지의 공간과 물리적인 하드디스크(50)와 DRAM(30)의 공간을 매핑하는 매핑 테이블(26)을 유지할 수 있다.
매핑 테이블(26)은 논리적인 블록 스토리지의 블록 ID(간략히 Logical Block Id)와 물리적인 위치(Physical Location)를 매핑할 수 있다. 매핑 테이블(26)은 하드디스크(50)의 모든 데이터를 DRAM(30)으로 적재하면 더 이상 유지되지 않을 수 있다.
도 9는 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 구현예를 설명하기 위한 도면이다.
도 9에 도시한 바와 같이, PBestIO 장치(도 1의 22 참조)가 생성된 후 VFS로부터 bio를 전달받아 NVRAM에 로그를 기록하고, HDD로 플러쉬하는 과정을 담고 있다. 여기서, 플러쉬(flush)는 현재 버퍼에 저장되어 있는 내용을 목적지로 전송하고 버퍼를 비운다는 말로서, 본 실시예에서는 NVRAM에 저장되어 있는 내용을 HDD로 전송하고 NVRAM에 저장되어 있는 로그 기록을 지우는 동작을 지칭할 수 있다. 그리고 슈퍼 블록은 이후에 서로 다른 영역에 저장되는 복수의 블록들로 분할될 수 있는 블록을 지칭할 수 있다.
pdramstors_make_request 함수(91)는 VFS(도 1의 62 참조)로부터 bio를 전달받는 함수이다. VFS로부터 bio를 전달받으면 bestio_thread_fun 함수(92)를 깨워주고 자신은 슬립 모드로 진행할 수 있다.
bestio_thread_fun 함수(92)는 NVRAM에 로그를 기록하기 위해 clone_pmem_bio 함수(93)를 실행하고 로그 기록이 완료되면 pdramstors_make_request 함수(91)를 깨울 수 있다.
pdramstors_make_request 함수(91)는 요청받은 bio를 DRAM에 기록하고 해당 작업을 종료할 수 있다.
backup_thread_fun 함수(94)는 NVRAM에 기록된 로그가 있는지 확인하여 로그가 기록되어 있으면 chain 함수(95)를 호출할 수 있다. 호출된 chain 함수(95)는 기설정된 함수 예컨대, is_full_manager 함수와 readbuffer2manager 함수를 통해 로그의 헤더 정보를 읽어들인 뒤 헤더 정보를 HDD에 기록한 후 미리 설정된 다른 함수 예컨대, readbuffer2disk 함수를 통해 로그 정보를 HDD에 기록할 수 있다.
도 10은 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 다른 구현예를 설명하기 위한 도면이다. 도 10은 PBestIO 장치(도 1의 22 참조)의 생성 및 제거 과정의 함수 호출 관계를 나타내고 있다.
도 10을 참조하면, PBestIO 장치가 생성되면 가장 먼저 자체 초기화 함수(97) 예컨대, My_init 함수가 호출되고, My_init 함수 내에서 블록이 비어있는지를 판단하는 체크함수(예컨대, isMetaEmtpy())를 통해 NVRAM에 매직 코드가 쓰여 있는지 확인할 수 있다. 매직 코드는 시스템이 부팅되기 전 NVRAM에 기록되었던 로그가 남아있는지 확인하는 값으로 매직 코드가 남아있다면 NVRAM의 로그를 HDD로 모두 넘겨준 뒤 복귀함수(98, 예컨대 recovery_thread 함수)의 스레드(Recovery_thread)를 통해 HDD의 데이터를 DRAM으로 백업하는 과정을 수행할 수 있다.
PBestIO 장치가 제거되면, My_exit 함수(99)를 호출하여 NVRAM에 있는 모든 데이터를 HDD로 플러쉬(Flush)한 뒤 해당 함수와 함께 해당 작업(process)이 종료될 수 있다.
전술한 실시예들에 의하면, DRAM에 배터리를 이용하여 데이터를 안정적으로 유지하는 NVRAM(NVDIMM)을 이용하여 DRAM을 블록 스토리지로 사용하면서도 안정적으로 데이터를 유지할 수 있는 NVRAM과 DRAM의 하이브리드 블록 스토리지 또는 NVRAM과 DRAM 및 HDD의 하이브리드 블록 스토리지를 제공할 수 있다.
한편, 전술한 실시예들에서는 휘발성 메모리로서 DRAM을 중심으로 설명하였으나, 본 발명은 그러한 구성으로 한정되지 않고, 메모리 기술 발전에 따라 DRAM을 대체하여 사용가능한 모든 휘발성 메모리를 포함할 수 있다. 또한, 본 발명의 하이브리드 블록 스토리지는 DRAM, 비휘발성 메모리 및 하드디스크 드라이브를 포함하는 구성으로 한정되지 않고, DRAM보다 입출력 성능은 낮으나 하이브리드 블록 스토리지로 구성할 때 소정의 장점(제조비용 절감 등)을 가질 수 있다면, 하드디스크 드라이브를 대체한 다른 저장장치(제3 저장장치)가 사용될 수 있음은 물론이다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (17)

  1. 비휘발성 메모리와 DRAM(dynamic random access memory) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함한 DRAM 스토리지를 구비하는 컴퓨팅 장치에서 수행되는 DRAM 스토리지의 작동 방법으로서,
    블록 데이터에 대한 입출력 요구시 제3 저장장치의 몇 번째 블록까지 데이터가 적재되었는지에 대한 기록에 따라 상기 입출력 요구를 상기 제3 저장장치에서 처리할지 혹은 상기 DRAM에서 처리할지를 판단하는 단계;
    상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하는 단계;
    상기 로그에 대응하는 블록을 상기 비휘발성 메모리에서 상기 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법.
  2. 청구항 1에 있어서,
    상기 저장하는 단계는, 상기 DRAM에서 변경이 가해진 블록 중 변경된 영역에 대한 로그만을 상기 비휘발성 메모리에 저장하는, DRAM 스토리지의 작동 방법.
  3. 청구항 1에 있어서,
    상기 저장하는 단계 전에, 상기 비휘발성 메모리, 상기 DRAM 및 상기 제3 저장장치를 포함한 물리적인 공간들과 논리적인 블록 스토리지의 공간 사이를 매핑하는 매핑 테이블에 상기 로그를 기록하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.
  4. 청구항 1에 있어서,
    상기 저장하는 단계는, 상기 로그를 상기 제3 저장장치의 저장 단위에 따라 상기 로그를 복수의 로그들로 분할하여 상기 비휘발성 메모리에 저장하는, DRAM 스토리지의 작동 방법.
  5. 청구항 1에 있어서,
    상기 입출력 요구는 상기 컴퓨팅 장치에서 동작하는 응용 프로그램이 메인 메모리인 상기 DRAM에 데이터를 로딩할 때 상기 응용 프로그램으로부터 발생하는, DRAM 스토리지의 작동 방법.
  6. 청구항 5에 있어서,
    상기 입출력 요구는 상기 응용 프로그램에 연결되는 가상파일 시스템(virtual file system, VFS)을 통해 커널의 블록 디바이스 드라이버로 전달되는, DRAM 스토리지의 작동 방법.
  7. 청구항 6에 있어서,
    상기 블록 디바이스 드라이버는 상기 DRAM의 일부 영역을 확보하여 DRAM 스토리지로 사용하고 상기 입출력 요구를 주기억장치인 DRAM 상의 메모리 읽기/쓰기로 변환하여 처리하는, DRAM 스토리지의 작동 방법.
  8. 청구항 6에 있어서,
    상기 블록 디바이스 드라이버는 입력 요구에 대해서는 상기 DRAM 상의 해당 영역에 변경된 블록을 쓰고나서 변경분을 상기 비휘발성 메모리에 기록한 후 종료하며, 여기서 상기 비휘발성 메모리에 기록된 변경분은 임의의 쓰레드에 의해 순차적으로 상기 제3 저장장치의 해당 블록에 기록되는, DRAM 스토리지의 작동 방법.
  9. 청구항 6에 있어서,
    상기 백업하는 단계 후에, 상기 컴퓨팅 장치가 재시작될 때 상기 제3 저장장치의 블록을 상기 DRAM으로 적재하면서 상기 VFS로부터 입출력 요구가 전달되면 상기 DRAM에 적재된 블록은 상기 DRAM에서 처리되고, 아직 적재되지 않은 상기 제3 저장장치의 블록들은 상기 제3 저장장치에서 처리하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.
  10. 청구항 9에 있어서,
    상기 처리하는 단계 후에, 상기 컴퓨팅 장치의 커널에서는 상기 DRAM에서의 입출력, 상기 제3 저장장치에서의 입출력, 상기 제3 저장장치에서 상기 DRAM으로의 적재 연산이 일관되어 수행되도록 논리적인 블록 스토리지의 공간과 상기 제3 저장장치와 상기 DRAM의 물리적인 공간을 매핑하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.
  11. 청구항 10에 있어서,
    상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑하는 매핑 테이블은 상기 제3 저장장치의 모든 데이터를 상기 DRAM으로 적재하면 더 이상 유지되지 않거나 삭제되는, DRAM 스토리지의 작동 방법.
  12. 청구항 1에 있어서,
    상기 제3 저장장치는 하드디스크를 포함하는, DRAM 스토리지의 작동 방법.
  13. 컴퓨팅 장치의 커널의 가상 파일 시스템(virtual file system, VFS)에 의해 제어되는 블록 디바이스 드라이버;
    상기 블록 디바이스 드라이버에 의해 구동되는 비휘발성 메모리(non-volatile random access memory, NVRAM) 로그 관리자와 적재 관리자; 및
    상기 블록 디바이스 드라이버에 의해 구동되는 DRAM(dynamic random access memory), 비휘발성 메모리(NVRAM) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함하며,
    여기서, 사용자 레벨의 응용의 IO 요청들은 상기 VFS를 통해 블록 입출력(Block IO) 요구로 변환되어 상기 블록 디바이스 드라이버로 전달되고,
    상기 Block IO가 쓰기 연산일 경우, 상기 Block IO는 상기 NVRAM 로그 관리자에 의해서 로그 레코드로 변환되어 상기 NVRAM에 저장되며,
    상기 NVRAM 로그 관리자는 상기 NVRAM에 상기 Block IO의 로그 레코드가 저장되면 상기 DRAM에 상기 Block IO를 반영하고, 상기 VFS에 Block IO의 처리가 완료되었음을 알리고,
    상기 VFS는 다시 Block IO를 요청한 응용(Applications)에 Block IO의 처리가 완료되었음을 알리고,
    상기 NVRAM 및 상기 제3 저장장치 사이에 연결되는 동기화 관리자는 상기 NVRAM 로그 관리자에 의해 상기 NVRAM에 기록된 로그 레코드를 읽어서 상기 제3 저장장치에 쓰기 작업을 위한 Block IO로 변환하며, 여기서 변환된 Block IO는 상기 DRAM에 기록된 블록 위치와 동일한 위치의 상기 제3 저장장치에 쓰이는, DRAM 스토리지.
  14. 청구항 13에 있어서,
    상기 적재 관리자는, 상기 컴퓨팅 장치 또는 시스템의 재시작시, 상기 제3 저장장치의 블록들을 순차적으로 상기 DRAM으로 적재하며, 적재 중에 각 블록이 상기 제3 저장장치에 있는지 상기 DRAM에 적재되어 있는지를 관리하며, 상기 VFS로부터 전달되는 Block IO에 대해서 해당 블록이 상기 제3 저장장치에 있는지 또는 상기 DRAM에 있는지 판단해서 상기 Block IO를 해당 매체로 전달하는, DRAM 스토리지.
  15. 청구항 14에 있어서,
    상기 적재 관리자는 상기 각 블록의 실제 위치를 관리하기 위해서 매핑 테이블을 이용하는, DRAM 스토리지.
  16. 청구항 14에 있어서,
    상기 적재 관리자는 상기 각 블록의 실제 위치를 관리하기 위해서 상기 제3 저장장치에서 상기 DRAM으로 가장 마지막에 적재된 블록의 번호만을 기록하는, DRAM 스토리지.
  17. 청구항 13에 있어서,
    상기 제3 저장장치는 하나 또는 복수의 하드디스크들을 포함하며 하나의 하드디스크의 사이즈는 하나의 DRAM의 사이즈에 대응하는, DRAM 스토리지.
KR1020170003670A 2017-01-10 2017-01-10 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법 KR101888781B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170003670A KR101888781B1 (ko) 2017-01-10 2017-01-10 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170003670A KR101888781B1 (ko) 2017-01-10 2017-01-10 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법

Publications (2)

Publication Number Publication Date
KR20180082232A true KR20180082232A (ko) 2018-07-18
KR101888781B1 KR101888781B1 (ko) 2018-08-16

Family

ID=63048880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170003670A KR101888781B1 (ko) 2017-01-10 2017-01-10 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법

Country Status (1)

Country Link
KR (1) KR101888781B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230046356A (ko) 2021-09-29 2023-04-06 삼성전자주식회사 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090066071A (ko) * 2007-12-18 2009-06-23 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20130070178A (ko) * 2011-12-19 2013-06-27 한국전자통신연구원 하이브리드 저장 장치 및 그것의 동작 방법
KR101541532B1 (ko) * 2014-09-17 2015-08-06 성균관대학교산학협력단 스토리지 클래스 메모리의 데이터 일관성 유지를 위한 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090066071A (ko) * 2007-12-18 2009-06-23 재단법인서울대학교산학협력재단 메타 데이터 관리 시스템 및 방법
KR20130070178A (ko) * 2011-12-19 2013-06-27 한국전자통신연구원 하이브리드 저장 장치 및 그것의 동작 방법
KR101541532B1 (ko) * 2014-09-17 2015-08-06 성균관대학교산학협력단 스토리지 클래스 메모리의 데이터 일관성 유지를 위한 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
비특허문헌 ‘비휘발성 메모리와 DRAM의 하이브리드 블록 장치 개발’, by 전태인 외 3명, 한국콘텐츠학회 종합학술대회 논문집, 485-486. (2016.05) *

Also Published As

Publication number Publication date
KR101888781B1 (ko) 2018-08-16

Similar Documents

Publication Publication Date Title
CN100394391C (zh) 用于在计算机系统上存储数据的系统和方法
US9244839B2 (en) Methods and apparatus for supporting persistent memory
US10521354B2 (en) Computing apparatus and method with persistent memory
KR101562973B1 (ko) 메모리 장치 및 메모리 장치의 동작 방법
US8464257B2 (en) Method and system for reducing power loss to backup IO start time of a storage device in a storage virtualization environment
US20080022032A1 (en) Concurrent virtual machine snapshots and restore
JP5783809B2 (ja) 情報処理装置、起動方法およびプログラム
KR101846612B1 (ko) 부트 데이터 로드
JP2006268503A (ja) 計算機システム、ディスク装置およびデータ更新制御方法
US11422860B2 (en) Optimizing save operations for OS/hypervisor-based persistent memory
US10019193B2 (en) Checkpointing a journal by virtualization of non-volatile random access memory
US20160139995A1 (en) Information processing apparatus, memory dump method, and storage medium
Scargall et al. Persistent memory architecture
US20190324868A1 (en) Backup portion of persistent memory
KR101888781B1 (ko) 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법
CN114756355B (zh) 一种计算机操作系统的进程自动快速恢复的方法和装置
US9904559B2 (en) Information processing apparatus and activation method therefor for processing data of a hibernation image
US20220318053A1 (en) Method of supporting persistence and computing device
US11526358B2 (en) Deterministic execution replay for multicore systems
WO2010116405A1 (ja) 不揮発性の主記憶を備えた計算機システム
JP6080492B2 (ja) 情報処理装置、起動方法およびプログラム
US10802918B2 (en) Computer device, server device, and method for controlling hybrid memory unit thereof
KR101881039B1 (ko) 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치
Colesa et al. Fast creation of short-living virtual machines using copy-on-write ram-disks
TWI569129B (zh) 系統暫停方法、系統回復方法及應用其之電腦系統

Legal Events

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