KR101888781B1 - Persistent dynamic random access memory storage using non-volatile ram and operating method therefof - Google Patents
Persistent dynamic random access memory storage using non-volatile ram and operating method therefof Download PDFInfo
- Publication number
- KR101888781B1 KR101888781B1 KR1020170003670A KR20170003670A KR101888781B1 KR 101888781 B1 KR101888781 B1 KR 101888781B1 KR 1020170003670 A KR1020170003670 A KR 1020170003670A KR 20170003670 A KR20170003670 A KR 20170003670A KR 101888781 B1 KR101888781 B1 KR 101888781B1
- Authority
- KR
- South Korea
- Prior art keywords
- dram
- block
- storage device
- log
- storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0686—Libraries, e.g. tape libraries, jukebox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
비휘발성 메모리와 DRAM을 이용하는 하이브리드 블록 기반의 영속적 DRAM 스토리지와 그 작동 방법이 개시된다. DRAM 스토리지는, 비휘발성 메모리와 DRAM 및 DRAM보다 입출력 성능이 낮은 제3 저장장치를 구비하는 컴퓨팅 장치에서, 블록 데이터에 대한 입출력 요구에 따라 DRAM 스토리지의 커널에 의해 관리되는 로그 관리자가 DRAM에서 변경되는 블록에 대한 로그를 비휘발성 메모리에 저장하는 단계, 입출력 요구에 대한 데이터 처리와는 별도로 로그에 대응하는 블록 데이터를 임의의 쓰레드를 통해 제3 저장장치로 백업하는 단계를 포함한다.Hybrid block based persistent DRAM storage using nonvolatile memory and DRAM and method of operation are disclosed. In a computing device having a non-volatile memory, a third storage device having a lower input / output performance than a DRAM and a DRAM, a log manager managed by a kernel of the DRAM storage is changed in the DRAM according to an input / output request for block data Storing the log for the block in the nonvolatile memory, and backing up the block data corresponding to the log to the third storage device via an arbitrary thread, in addition to the data processing for the input / output request.
Description
본 발명의 실시예들은 영속적 DRAM(dynamic random access memory) 스토리지에 관한 것으로, 보다 상세하게는, 비휘발성 메모리와 DRAM을 이용하는 하이브리드 블록 기반의 영속적 DRAM 스토리지와 그 작동 방법에 관한 것이다.Embodiments of the present invention relate to persistent dynamic random access memory (" DRAM ") storage, and more particularly, to hybrid block based persistent DRAM storage using non-volatile memory and DRAM and methods of operation thereof.
기존의 DRAM(dynamic random access memory)을 기반으로 하는 리눅스의 RAM 디스크는 고속의 입출력성능을 제공하지만, 시스템 고장이 발행할 경우 모든 데이터를 잃어버리게 된다. 일부에서 DRAM과 하드디스크를 결합하여 시스템 고장에도 안정적으로 데이터를 유지하기 위한 방법이 제안된바 있지만, 입출력 성능이 RAM 디스크에 비해 상당히 저하된다.Linux RAM disks based on conventional dynamic random access memory (DRAM) provide high-speed I / O performance, but all data is lost when a system failure occurs. In some cases, a method for stably maintaining data in a system failure by combining a DRAM and a hard disk has been proposed, but the input / output performance is considerably lower than that of the RAM disk.
DRAM의 휘발성 때문에 정전에 따라 발생하는 데이터 손실을 막기 위한 비휘발성 메모리에 개발이 활발히 진행되고 있다. 대표적인 사례가 PCM(Phase Change Memory), STT-MRAM(Non-Volatile Spin-Transfer Torque RAM), RRAM(Resistive RAM) 등과 같이 DRAM과는 다른 형태의 차세대 메모리 기술이다.Due to the volatility of DRAM, nonvolatile memory has been actively developed to prevent data loss caused by power failure. Typical examples are the next-generation memory technologies, such as PCM (Phase Change Memory), STT-MRAM (Non-Volatile Spin-Transfer Torque RAM), and RRAM (Resistive RAM).
다른 한편으로, NVDIMM(Non-Volatile Dual In-line Memory Module)과 같이 기존의 DRAM에 배터리를 이용해서 전원을 공급함으로써 데이터를 유지하는 기술이 있다. 특히, NVDIMM(이하 NVRAM이라 함)은 JEDEC의 JC-45에 의해 표준으로 제정되었다.On the other hand, there is a technology for maintaining data by supplying power to a conventional DRAM using a battery such as a non-volatile dual in-line memory module (NVDIMM). In particular, NVDIMM (hereinafter referred to as NVRAM) was established as a standard by JEDEC JC-45.
또한, 기존의 DRAM 블록 스토리지는 DRAM의 휘발성으로 인해 발생하는 데이터 손실 문제를 해결하기 위해서 하드디스크를 결합하는 접근법을 취하기도 한다. 하지만, 이 접근법은 DRAM에서 변경된 데이터를 실시간으로 하드디스크로 백업하는 구조이므로 변경연산의 정도에 따라서 입출력 성능이 하드디스크에 가까워지는 단점이 있다.In addition, existing DRAM block storage also adopts an approach of combining hard disks to solve the data loss problem caused by the volatility of the DRAM. However, this approach has a disadvantage in that the input / output performance becomes closer to the hard disk according to the degree of change operation since the modified data is backed up to the hard disk in real time in the DRAM.
이와 같이, DRAM 블록 스토리지 분야에서는 데이터 손실 문제를 해결하면서 하드디스크 대비 입출력 성능을 향상시킬 수 있는 방안이 요구되고 있다.As described above, in the DRAM block storage field, there is a need to improve the input / output performance of the hard disk in order to solve the data loss problem.
상술한 종래 기술의 문제점을 해결하기 위하여 본 발명의 목적은 비휘발성 메모리(NVRAM), DRAM(dynamic random access memory) 및 하드 디스크를 결합한 고속의 신뢰성 있는 하이브리드 블록 기반의 DRAM 스토리지를 제공하는데 있다.In order to solve the above problems, it is an object of the present invention to provide a high-speed reliable hybrid block-based DRAM storage that combines a non-volatile memory (NVRAM), a dynamic random access memory (DRAM)
본 발명의 다른 목적은 DRAM, NVRAM 및 하드디스크를 결합하여 DRAM의 입출력 성능에 가까우면서 안정적으로 데이터를 저장할 수 있는 DRAM 스토리지를 제공하는데 있다.It is another object of the present invention to provide a DRAM storage capable of stably storing data while matching the input / output performance of a DRAM by combining a DRAM, an NVRAM and a hard disk.
상술한 기술적 과제를 달성하기 위하여 본 발명의 일 측면에서는, NVRAM(non-volatile random access memory)과 DRAM(dynamic RAM)의 하이브리드 블록 스토리지에서 DRAM에 변경된 데이터를 일단 NVRAM에 저장한 후 하드디스크로 백업하는 DRAM 스토리지가 제공된다. DRAM 스토리지는 HDD(hard disk dirve)를 포함하는 하이브리드 블록 스토리지로 지칭될 수 있다.According to an aspect of the present invention, there is provided a method of storing data in a DRAM in a hybrid block storage of non-volatile random access memory (NVRAM) and dynamic random access memory (DRAM) DRAM storage is provided. The DRAM storage may be referred to as a hybrid block storage including a hard disk drive (HDD).
일실시예에서, NVRAM의 용량에 제한이 있으므로 공간을 효과적으로 사용하기 위해서 DRAM에서 변경이 가해진 블록 중 변경된 영역만을 저장할 수 있다.In one embodiment, since there is a limitation on the capacity of the NVRAM, only the changed area of the block to which the DRAM is changed in order to use the space effectively can be stored.
일실시예에서, 논리적인 블록 스토리지의 공간과 물리적인 공간(NVRAM, DRAM, 하드디스크) 사이의 매핑을 이용할 수 있다.In one embodiment, the mapping between logical block storage space and physical space (NVRAM, DRAM, hard disk) can be utilized.
상술한 기술적 과제를 달성하기 위하여 본 발명의 다른 측면에서는, 비휘발성 메모리와 DRAM(dynamic random access memory) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함한 DRAM 스토리지를 구비하는 컴퓨팅 장치에서 수행되는 DRAM 스토리지의 작동 방법으로서, 블록 데이터에 대한 입출력 요구에 따라 DRAM 스토리지의 커널에 의해 관리되는 로그 관리자(비휘발성 메모리 로그 관리자)가 DRAM에서 변경되는 블록에 대한 로그를 비휘발성 메모리에 저장하는 단계; 상기 입출력 요구에 대한 데이터 처리와는 별도로 로그에 대응하는 블록 데이터를 임의의 쓰레드를 통해 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법이 제공된다.According to another aspect of the present invention, there is provided a computer system having a DRAM storage including a nonvolatile memory, a dynamic random access memory (DRAM), and a third storage device having a lower input / output capability than the DRAM,
상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 비휘발성 메모리와 DRAM(dynamic random access memory) 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치를 포함한 DRAM 스토리지를 구비하는 컴퓨팅 장치에서 수행되는 DRAM 스토리지의 작동 방법으로서, 블록 데이터에 대한 입출력 요구시 제3 저장장치의 몇 번째 블록까지 데이터가 적재되었는지에 대한 기록에 따라 상기 입출력 요구를 상기 제3 저장장치에서 처리할지 혹은 상기 DRAM에서 처리할지를 판단하는 단계; 상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하는 단계; 및 상기 로그에 대응하는 블록을 상기 비휘발성 메모리에서 상기 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법이 제공된다.According to still another aspect of the present invention, there is provided a method of operating a computing device having a DRAM storage including a nonvolatile memory, a dynamic random access memory (DRAM), and a third storage device having a lower input / output capability than the DRAM Wherein the third storage device is configured to process the input / output request in accordance with a record of how many blocks of the third storage device are loaded with data when an input / output request for block data is requested, ; Storing a log of blocks changed in the DRAM in the nonvolatile memory; And backing up a block corresponding to the log from the non-volatile memory to the third storage device.
일실시예에서, 상기 저장하는 단계는, 상기 DRAM에서 변경이 가해진 블록 중 변경된 영역에 대한 로그만을 상기 NVRAM에 저장할 수 있다.In one embodiment, the storing step may store, in the NVRAM, only a log of the changed area of the block to which the DRAM is changed.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 저장하는 단계 전에, 상기 비휘발성 메모리, 상기 DRAM 및 상기 제3 저장장치를 포함한 물리적인 공간들과 논리적인 블록 스토리지의 공간 사이를 매핑하는 매핑 테이블에 상기 로그를 기록하는 단계를 더 포함할 수 있다.In one embodiment, a method of operating a DRAM storage further comprises, prior to the storing, mapping a mapping between physical spaces, including the non-volatile memory, the DRAM, and the third storage, And recording the log in the log.
일실시예에서, 상기 저장하는 단계는, 상기 로그를 상기 제3 저장장치의 저장 단위에 따라 상기 로그를 복수의 로그들로 분할하여 상기 NVRAM에 저장할 수 있다.In one embodiment, the storing step may divide the log into a plurality of logs according to a storage unit of the third storage device, and store the log in the NVRAM.
일실시예에서, 상기 입출력 요구는 상기 컴퓨팅 장치에서 동작하는 응용 프로그램이 메인 메모리인 상기 DRAM에 데이터를 로딩할 때 상기 응용 프로그램으로부터 발생할 수 있다.In one embodiment, the input / output request may originate from the application program when an application running on the computing device loads data into the DRAM, which is main memory.
일실시예에서, 상기 입출력 요구는 상기 응용 프로그램에 연결되는 가상파일 시스템(virtual file system, VFS)을 통해 커널의 하이브리드 블록 스토리지의 디바이스 드라이버로 전달될 수 있다.In one embodiment, the input / output request may be transferred to the device driver of the hybrid block storage of the kernel through a virtual file system (VFS) connected to the application program.
일실시예에서, 상기 디바이스 드라이버(블록 디바이스 드라이버)는 상기 DRAM의 일부 영역을 확보하여 DRAM 스토리지로 사용하고 상기 입출력 요구를 주기억장치인 DRAM 상의 메모리 읽기/쓰기로 변환하여 처리할 수 있다.In one embodiment, the device driver (block device driver) secures a part of the DRAM and uses the DRAM as a DRAM storage, and converts the input / output request into memory read / write on a DRAM as a main memory.
일실시예에서, 상기 디바이스 드라이버는 입력 요구에 대해서는 상기 DRAM 상의 해당 영역에 변경된 블록을 쓰고나서 변경분을 상기 NVRAM에 기록한 후 종료하며, 여기서 상기 NVRAM에 기록된 변경분은 임의의 쓰레드에 의해 순차적으로 상기 제3 저장장치의 해당 블록에 기록될 수 있다.In one embodiment, the device driver writes a changed block in a corresponding area on the DRAM to an input request, writes the changed block to the NVRAM, and then terminates. The change recorded in the NVRAM is sequentially May be recorded in the corresponding block of the third storage device.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 백업하는 단계 후에, 상기 컴퓨팅 장치가 재시작될 때 상기 제3 저장장치의 블록을 상기 DRAM으로 적재하면서 상기 VFS로부터 입출력 요구가 전달되면 상기 DRAM에 적재된 블록은 상기 DRAM에서 처리되고, 아직 적재되지 않은 상기 제3 저장장치의 블록들은 상기 제3 저장장치에서 처리하는 단계를 더 포함할 수 있다.In one embodiment, the method of operating the DRAM storage further comprises, after the step of backing up, loading the block of the third storage device into the DRAM when the computing device is restarted, The blocks being processed in the DRAM and the blocks of the third storage device not yet loaded may be processed in the third storage device.
일실시예에서, DRAM 스토리지의 작동 방법은, 상기 처리하는 단계 후에, 상기 컴퓨팅 장치의 커널에서는 상기 DRAM에서의 입출력, 상기 제3 저장장치에서의 입출력, 상기 제3 저장장치에서 상기 DRAM으로의 적재 연산이 일관되어 수행되도록 논리적인 블록 스토리지의 공간과 상기 제3 저장장치와 상기 DRAM의 물리적인 공간을 매핑하는 단계를 더 포함할 수 있다.In one embodiment, the method of operating a DRAM storage further comprises: after the processing, input / output in the DRAM, input / output in the third storage device, loading from the third storage device to the DRAM in the kernel of the computing device, Mapping the space of the logical block storage and the physical space of the DRAM to the DRAM to perform the operation consistently.
일실시예에서, 상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑하는 매핑 테이블은 상기 제3 저장장치의 모든 데이터를 상기 DRAM으로 적재하면 더 이상 유지되지 않거나 삭제될 수 있다.In one embodiment, a mapping table that maps the block ID corresponding to the space of the logical block storage and the physical location of the physical space is no longer retained when all data of the third storage device is loaded into the DRAM Or deleted.
일실시예에서, 상기 제3 저장장치는 하드디스크를 포함할 수 있다.In one embodiment, the third storage device may comprise a hard disk.
본 상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 컴퓨팅 장치의 커널에 의해 관리되는 블록 디바이스 드라이버; 상기 커널에 의해 관리되는 비휘발성 메모리 로그 관리자; 및 상기 블록 디바이스 드라이버와 상기 로그 관리자에 의해 관리되는 매핑 테이블을 포함하고, 상기 블록 디바이스 드라이버는 DRAM(dynamic random access memory), 비휘발성 메모리 및 상기 DRAM보다 입출력 성능이 낮은 제3 저장장치에 대한 블록 데이터의 입출력 요구에 따라 상기 블록 데이터의 입출력을 관리하고, 상기 비휘발성 메모리 로그 관리자는 상기 입출력 요구에 따라 상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하며, 여기서, 상기 블록 디바이스 드라이버는 상기 입출력 요구에 대한 데이터 처리와는 별도로 상기 로그에 대응하는 블록 데이터를 상기 제3 저장장치로 백업하는, DRAM 스토리지가 제공된다.In accordance with another aspect of the present invention, there is provided a computer program product comprising: a block device driver managed by a kernel of a computing device; A non-volatile memory log manager managed by the kernel; And a mapping table managed by the block device driver and the log manager, the block device driver including a dynamic random access memory (DRAM), a nonvolatile memory, and a block for a third storage device having a lower input / Wherein the nonvolatile memory log manager manages the input / output of the block data according to an input / output request of data, and the nonvolatile memory log manager stores a log of blocks changed in the DRAM in the nonvolatile memory according to the input / output request, And the driver backs up the block data corresponding to the log to the third storage device separately from the data processing for the input / output request.
일실시예에서, 상기 매핑 테이블은 상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑할 수 있다.In one embodiment, the mapping table may map the block ID corresponding to the space of the logical block storage and the physical location of the physical space.
상술한 기술적 과제를 달성하기 위하여 본 발명의 또 다른 측면에서는, 컴퓨팅 장치의 커널의 가상 파일 시스템(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 저장장치에 쓰여질 수 있다.According to still another aspect of the present invention, there is provided a method for controlling a boot device, the method comprising: a block device driver controlled by a virtual file system (VFS) of a kernel of a computing device; A non-volatile random access memory (NVRAM) log manager and a load manager connected to the block device driver; And a third storage device having a dynamic random access memory (DRAM), a nonvolatile memory (NVRAM), and a third input / output capability lower than the DRAM, which are driven by the block device driver. Here, the I / O requests of the user level application may be converted into a block IO request through the VFS and transferred to the block device driver. If the block IO is a write operation, the block IO can be converted to a log record by the NVRAM log manager and stored in the NVRAM. When the log record of the block IO is stored in the NVRAM, the NVRAM log manager can reflect the block IO in the DRAM and notify the completion of the processing of the block IO in the VFS. The VFS can notify the application that requested the block IO that the processing of the block IO is completed. The synchronization manager connected between the NVRAM and the third storage device reads the log record recorded in the NVRAM by the NVRAM log manager and converts the read log record into a block IO for writing to the third storage device. The converted Block IO can be written to the third storage device at the same position as the block position recorded in the DRAM.
일실시예에서, 적재 관리자는, 컴퓨팅 장치 또는 시스템의 재시작시, 제3 저장장치의 블록들을 순차적으로 DRAM으로 적재하며, 적재 중에 각 블록이 제3 저장장치에 있는지 DRAM에 적재되어 있는지를 관리하며, VFS로부터 전달되는 Block IO에 대해서 해당 블록이 제3 저장장치에 있는지 또는 DRAM에 있는지 판단해서 Block IO를 해당 매체로 전달할 수 있다.In one embodiment, the load manager loads the blocks of the third storage device sequentially into the DRAM at the restart of the computing device or system, and manages whether each block is in the third storage device or loaded into the DRAM during loading , It is determined whether the corresponding block is in the third storage device or in the DRAM for the Block IO transmitted from the VFS, and the Block IO can be transmitted to the corresponding medium.
일실시예에서, 적재 관리자는 각 블록의 실제 위치를 관리하기 위해서 매핑 테이블을 이용할 수 있다.In one embodiment, the load manager can use a mapping table to manage the actual location of each block.
일실시예에서, 적재 관리자는 각 블록의 실제 위치를 관리하기 위해서 제3 저장장치에서 DRAM으로 가장 마지막에 적재된 블록의 번호(및/또는 위치)만을 기록할 수 있다.In one embodiment, the load manager may record only the number (and / or location) of the most recently loaded block into the DRAM in the third storage device to manage the actual location of each block.
일실시예에서, 상기 제3 저장장치는 하나 또는 복수의 하드디스크들을 포함하며 하나의 하드디스크의 외형 사이즈는 하나의 DRAM의 외형 사이즈에 대응할 수 있다.In one embodiment, the third storage device includes one or a plurality of hard disks, and the external size of one hard disk may correspond to the external size of one DRAM.
상술한 바와 같은 본 발명의 실시예들에 의하면, DRAM의 입출력 성능에 가까우면서 안정적으로 데이터를 저장할 수 있는 고속 및 고신뢰성의 DRAM 블록 스토리지를 제공할 수 있다.According to the embodiments of the present invention as described above, it is possible to provide high-speed and high-reliability DRAM block storage capable of stably storing data while being close to the input / output performance of the DRAM.
또한, 시스템 고장으로 인한 재시작이나, 정상적인 재시작시에 빠르게 블록 스토리지의 입출력 기능/서비스를 제공할 수 있다.In addition, it is possible to provide a block storage input / output function / service quickly in case of a restart due to a system failure or a normal restart.
도 1은 본 발명의 일실시예에 따른 DRAM(dynamic random access memory) 스토리지에 대한 블록도이다.
도 2는 도 1의 DRAM 스토리지에 채용할 수 있는 매핑 테이블의 구조를 예시한 도면이다.
도 3은 도 1의 DRAM 스토리지에 채용되는 로그 관리자와 동기화 관리자의 작동 원리를 설명하기 위한 블록도이다.
도 4 내지 도 7은 도 1의 DRAM 스토리지의 작동 원리를 설명하기 위한 도면들이다.
도 8은 본 발명의 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 또 다른 도면이다.
도 9는 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 구현예를 설명하기 위한 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 영속적 DRAM 스토리지의 다른 구현예를 설명하기 위한 도면이다.1 is a block diagram of dynamic random access memory (DRAM) storage in accordance with one embodiment of the present invention.
2 is a diagram illustrating a structure of a mapping table that can be employed in the DRAM storage of FIG.
3 is a block diagram illustrating the operation principle of the log manager and the synchronization manager employed in the DRAM storage of FIG.
FIGS. 4 to 7 are views for explaining the operation principle of the DRAM storage of FIG.
8 is a view for explaining the operation principle of the DRAM storage according to another embodiment of the present invention.
9 is a view for explaining an embodiment of a DRAM storage according to another embodiment of the present invention.
10 is a view for explaining another embodiment of persistent DRAM storage according to another embodiment of the present invention.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It is to be understood, however, that the invention is not to be limited to the specific embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, A, B, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 아니하는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함한다", "가진다" 등과 관련된 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms related to "comprising "," having ", and the like are intended to specify the presence of stated features, integers, steps, operations, elements, parts, or combinations thereof, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.
본 명세서에서 블록 I/O 연산 중 디스크에 저장된 데이터를 메모리로 옮기는 것을 읽기(read)라고 지칭하고, 메모리에 저장된 데이터를 디스크로 옮기는 것을 쓰기(write)라고 지칭할 수 있다.Moving data stored in a disk to a memory during a block I / O operation in this specification is referred to as read, and transferring data stored in a memory to a disk may be referred to as write.
본 명세서에서 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 포함한다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 의미와 일치하는 의미로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined herein, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted in a manner consistent with the contextual meaning of the related art, and are not to be construed as ideal or overly formal, unless explicitly defined herein.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일실시예에 따른 DRAM(dynamic random access memory) 스토리지를 포함하는 컴퓨팅 장치를 설명하기 위한 블록도이다.1 is a block diagram illustrating a computing device including dynamic random access memory (DRAM) storage in accordance with one embodiment of the present invention.
도 1을 참조하면, 본 실시예에 따른 컴퓨팅 장치는 프로세서와 메모리를 포함할 수 있다. 프로세서는 메모리에 저장된 프로그램을 실행하여 일련의 절차를 수행할 수 있다. 일련의 절차는 사용자 영역(user area, 10)과 커널 영역(kernel area, 20)으로 구분될 수 있다.Referring to FIG. 1, a computing device according to the present embodiment may include a processor and a memory. The processor can execute a program stored in the memory to perform a series of procedures. A set of procedures can be divided into a user area (10) and a kernel area (20).
프로세서는 적어도 하나 이상의 중앙 처리 장치를 포함할 수 있고, 중앙처리장치(CPU)는 MCU(micro control unit)와 주변 장치(외부 확장 장치를 위한 집적회로)가 함께 배치되는 SOC(system on chip)로 구현될 수 있으나, 이에 한정되지는 않는다. 그리고 코어는 처리할 명령어를 저장하는 레지스터(register)와, 비교, 판단, 연산을 담당하는 산술논리연산장치(arithmetic logical unit, ALU)와, 명령어의 해석과 실행을 위해 CPU를 내부적으로 제어하는 제어부(control unit)와, 이들을 연결하는 내부 버스 등을 구비할 수 있다.The processor may comprise at least one central processing unit and the central processing unit (CPU) may be a system on chip (SOC) in which a micro control unit (MCU) and peripheral devices (integrated circuits for external expansion devices) But is not limited thereto. The core includes a register for storing an instruction to be processed, an arithmetic logical unit (ALU) for performing comparison, determination, and operation, a controller for internally controlling the CPU for interpreting and executing the instruction, a control unit, and an internal bus for connecting them.
또한, 프로세서는 하나 이상의 데이터 프로세서, 이미지 프로세서 또는 코덱(CODEC)을 포함할 수 있으나, 이에 한정되지는 않는다. 프로세서는 주변장치 인터페이스와 메모리 인터페이스를 구비할 수 있다. 주변장치 인터페이스는 프로세서와 입출력 시스템 및 여러 다른 주변 장치를 연결하고, 메모리 인터페이스는 프로세서와 메모리를 연결할 수 있다.A processor may also include, but is not limited to, one or more data processors, image processors, or CODECs. The processor may have a peripheral interface and a memory interface. The peripheral interface connects the processor with the input / output system and several other peripherals, and the memory interface can couple the processor to the memory.
또한, 프로세서는 여러 가지의 소프트웨어 프로그램을 실행하여 데이터 처리를 수행할 수 있다. 프로세서는 메모리에 저장되어 있는 특정한 소프트웨어 모듈(명령어 세트)을 실행하여 해당 모듈에 대응하는 특정한 기능을 수행할 수 있다. 즉, 프로세서는 메모리에 저장된 소프트웨어 모듈들에 의해 컴퓨팅 장치에서 데이터 입출력 서비스를 제공할 수 있다.Further, the processor can execute data processing by executing various software programs. The processor may execute a specific software module (instruction set) stored in the memory to perform a specific function corresponding to the module. That is, the processor may provide data input / output services at the computing device by software modules stored in memory.
본 실시예에서 메모리는 영속적 DRAM 스토리지(이하 간략히 'DRAM 스토리지'라고 함)를 포함할 수 있다. DRAM 스토리지는, DRAM, 비휘발성 랜덤 액세스 메모리(non-volatile RAM, NVRAM; 이하 간략히 '비휘발성 메모리'라고 함) 및 하드디스크드라이브(hard disk drive, HDD; 이하 간략히 '하드디스크'라고 함)을 포함할 수 있다. 메모리는 광 저장 장치, 플래시 메모리 등에서 선택되는 적어도 하나를 더 포함할 수 있다. 이러한 메모리는 소프트웨어, 운영체제, 프로그램, 명령어 집합 또는 이들의 조합을 저장할 수 있고, 스케줄 운영 정책이나 프로그램 코드를 저장할 수 있다.In this embodiment, the memory may include persistent DRAM storage (hereinafter simply referred to as " DRAM storage "). The DRAM storage includes a DRAM, a non-volatile random access memory (NVRAM), and a hard disk drive (HDD) . The memory may further include at least one selected from an optical storage device, a flash memory, and the like. Such memories may store software, an operating system, a program, a set of instructions or a combination thereof, and may store schedule operating policies or program codes.
소프트웨어의 구성요소는 운영 체제(operating system) 모듈, 그래픽 모듈, 사용자 인터페이스 모듈, MPEG(moving picture experts group) 모듈, 통신 모듈, 카메라 모듈, 애플리케이션 모듈 등을 포함할 수 있다. 모듈은 명령어들의 집합으로서 명령어 세트(instruction set) 또는 프로그램으로 표현될 수 있다.The components of the software may include an operating system module, a graphics module, a user interface module, a moving picture experts group (MPEG) module, a communication module, a camera module, an application module, and the like. A module is a set of instructions that can be represented as an instruction set or program.
운영체제는 MS WINDOWS, LINUX, 다윈(Darwin), RTXC, UNIX, OS X, iOS, 맥 OS, VxWorks, 구글 OS, 안드로이드(android), 바다(삼성 OS), 플랜 9 등과 같은 내장형 운영체제를 포함할 수 있다. 운영체제는 여러 가지의 하드웨어(장치)와 소프트웨어 구성요소(모듈) 사이의 통신을 수행하는 기능도 구비할 수 있다.The operating system can include embedded operating systems such as MS WINDOWS, LINUX, Darwin, RTXC, UNIX, OS X, iOS, MacOS, VxWorks, Google OS, Android, Sea (Samsung OS) have. The operating system may also have a function of performing communication between various hardware (devices) and software components (modules).
본 실시예의 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 스토리지로 지칭될 수 있다.A nonvolatile memory (NVRAM) 40 used in the DRAM storage of the present embodiment can use a backup battery to maintain power, thereby preventing unexpected power loss, a system crash, or a normal system shutdown The data of the
전술한 유저 영역(10)은 유저 모드 또는 유저 모드 운영체제로 지칭될 수 있고, 커널 영역(20)은 커널 모드 또는 커널 모드 운영체제로 지칭될 수 있다.The
커널 모드(20)는 커널에 권한이 있는 프로그램 모드로서, 모든 시스템 메모리와 모든 CPU 인스트럭션(instruction)에 접근이 허가된 프로세스 실행모드를 지칭할 수 있다. 즉, 프로세서는 유저 모드(10)보다 커널 모드(20)에 높은 권한을 부여함으로써 오작동을 유발하는 유저 어플리케이션 등이 시스템 안정성을 해치지 않도록 설계될 수 있다. 한편, 유저 모드(10)는 보통 커널 모드(20)보다 낮은 권한으로 설정되고, 애플리케이션의 오작동으로 인해 컴퓨팅 시스템의 안정성을 해칠 수 있다.
유저 모드(10)와 커널 모드(20)는 접근 가능한 가상 메모리의 범위를 서로 다르게 가질 수 있다. 각 프로세스들은 고유한 개별 메모리 공간을 가지지만 커널 모드 운영체제와 디바이스 드라이버 코드는 단일 가상주소 공간을 공유할 수 있다. 가상 메모리 내의 각 페이지에는 페이지를 읽고 쓰기 위해 프로세서가 가져야 하는 접근 모드가 무엇인지 표시될 수 있으며, 시스템 공간의 페이지는 커널 모드(20)에서만 접근가능할 수 있다.The
애플리케이션(60)(이하 유저 애플리케이션이라 함)은 시스템 서비스를 호출할 때 유저 모드(10)에서 커널 모드(20)로 전환될 수 있다. 예를 들면, 윈도우 ReadFile 함수는 실제로 파일로부터 데이터를 읽는 기능을 처리할 내부 윈도우 루틴의 호출이 필요하다. 이 루틴은 시스템 데이터 구조체에 접근하므로 커널 모드(20)에서 실행되어야 하며, 유저 모드(10)에서 커널 모드(20)로의 변환은 프로세서를 커널 모드(20)로 전환하게 하는 특별한 프로세서 인스트럭션의 사용으로 구현될 수 있다.The application 60 (hereinafter referred to as a user application) can be switched from the
본 실시예에 따른 컴퓨팅 장치에서 운영체제는 유저 애플리케이션(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)를 더 포함할 수 있다.In the computing device according to the present embodiment, the operating system includes a PBestIO Block Device Driver (hereinafter, simply referred to as a block device driver) for the persistent best input / output through a virtual file system (VFS) 62 in the
운영체제는 상기의 인스트럭션을 통해 시스템 서비스가 요청됨을 인식하고 스레드(thread)가 시스템 함수에 전달한 인자를 검증한 후 내부 함수를 실행할 수 있다. 제어를 다시 유저 스레드로 되돌리기 전에 프로세서는 다시 유저 모드로 전환될 수 있다. 이러한 방식으로 운영체제는 그 자체와 데이터를 사용자 프로세스가 들여다보거나 변경하지 못하게 보호될 수 있다. 이렇게 유저 모드(10)에서 커널 모드(20)에 접근할 수 있는 권한을 받은 후에 시스템 자원을 이용하고 그 이후에 유저 모드(10)로 돌아갈 수 있다. 그 경우, 유저 모드(10)로의 복귀를 위한 권한 회수는 시스템 서비스 콜(system service call)이라는 기능에 의해 구현될 수 있다.The operating system recognizes that the system service is requested through the above instruction and can execute an internal function after verifying the argument passed to the system function by the thread. The processor can be switched back to user mode before returning control back to the user thread. In this way, the operating system itself and data can be protected from being viewed or altered by user processes. In this way, after receiving the authority to access the
유저 모드(10)는 구현에 따라서 명령어 인터페이스(command line interface, CLI), 공유 라이브러리(shored library) 및 입출력 제어 인터페이스(nput/output control interface, IOCTL interface)를 포함할 수 있다. 명령어 인터페이스는 명령 줄 인터페이스로 지칭될 수 있으며, 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 말한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력할 수 있고, 컴퓨터로부터의 출력도 문자열 형태로 주어질 수 있다. 공유 라이브러리는 다른 프로그램들과 링크되기 위해 존재하는 하나 이상의 서브루틴이나 함수들의 집합 파일로서 함께 링크(link)될 수 있도록 미리 컴파일된 형태인 오브젝트 코드 형태로 존재할 수 있는 라이브러리의 일종이다. 공유 라이브러리를 사용하여 컴파일을 하면 링커가 실행파일에 "실행될 때 우선 이 라이브러리를 로딩시킬 것"이라는 표시를 할 수 있다. 이러한 방식은 정적 라이브러리를 사용하는 것보다 파일 크기가 작아지고 커널이 메모리에 한 카피(copy)의 공유 메모리를 보유하면서 다중의 프로그램들과 공유하기 때문에 메모리를 적게 차지하고, 사용 후 메모리에서 삭제되기 때문에 메모리 사용에 효율적이다. 그리고 입출력 제어 인터페이스는 기본 운영체제의 컴퓨터 사용자와 커널을 잇는 인터페이스의 일부일 수 있다. 입출력 제어 인터페이스는 사용자 공간의 코드가 하드웨어 장치, 커널 구성 요소와 통신할 수 있도록 동작할 수 있다. 여기서 기본 운영체제는 두 개의 계층 즉 유저 영역(10)과 커널 영역(20)으로 나뉘어질 수 있다.The
유저 영역(10)에서는 스토리지 생성, 삭제 등의 동작과, 성능, 실패 등의 모니터링 동작이 수행될 수 있다. 그리고 커널 영역(20)에서는 가상 블록 디바이스 드라이버(VFS에 연결되는 블록 디바이스 드라이버에 대응함)를 실행하거나, NVRAM(40)에 대한 로그 관리를 수행하거나, 맵핑 테이블을 이용하여 HDD(50)로부터의 초기 데이터 로딩 동안에 DRAM(30)과 HDD(50)의 접속을 허용할 수 있다.In the
커널 영역(20)은 VFS(62), 블록 디바이스 드라이버(22), 로그 관리자(24), 적재 관리자(25), 동기화 관리자(27), DRAM(30), NVRAM(40) 및 HDD(50)를 포함할 수 있다.The
다시 도 1을 참조하여 블록의 영속적 베스트 입출력(PBestIO)에 대한 전체 구조를 설명하면 다음과 같다. PBestIO는 리눅스 시스템 커널의 블록 장치 드라이버로 동작할 수 있고, 이 드라이버를 지칭할 수 있다. 도 1에서 PBestIO 블록 장치 드라이버 (PBestIO Block Device Driver, 22)가 바로 그것이다.Referring back to FIG. 1, the overall structure of the block's persistent best input / output (PBestIO) will be described as follows. PBestIO can act as a block device driver for the Linux system kernel and can refer to this driver. 1, the PBestIO
사용자 레벨의 응용 또는 응용 프로그램(Applications, 60)의 IO 요청들은 커널 레벨의 VFS(62)를 통해서 Block IO 요청으로 변환되어 PBestIO 블록 장치 드라이버(22)로 전달된다. PBestIO 블록 장치 드라이버(22)로 전달되는 Block IO가 쓰기 연산일 경우 NVRAM 로그 관리자(NVRAM Log Manager, 24)에 의해서 로그 레코드(Log Record)로 변환되어 NVRAM(40)에 저장된다.The I / O requests of the user level application or
다음, 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)에 쓰인다.Next, when the log record of the corresponding block IO is stored in the
적재 관리자(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) 방식 및/또는 가장 마지막에 적재된 블록의 번호만을 기록하는 방식을 취할 수 있다.The Load Manager (25) can be run at system restart. The
적재 관리자(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)의 공간을 매핑하는 매핑 테이블을 유지할 수 있다.The
도 2는 도 1의 DRAM 스토리지에 채용할 수 있는 매핑 테이블의 구조를 나타낸다.FIG. 2 shows a structure of a mapping table that can be employed in the DRAM storage of FIG.
도 2에 도시한 바와 같이, 본 실시예에 따른 매핑 테이블(mapping table, 26)은 논리적인 블록 스토리지의 블록 ID(logical block ID)와 물리적인 위치(physical location)를 매핑한다.As shown in FIG. 2, a mapping table 26 according to the present embodiment maps a logical block ID (logical block ID) and a physical location of a logical block storage.
한편, 도 2에서 매핑 테이블(26)만을 보면 각 블록 ID에 대해서 해당 블록이 DRAM(M) 및 하드디스크(H)의 몇 번째 블록에 있는지를 모두 관리한다. 매핑 테이블은 하드디스크의 모든 데이터를 DRAM으로 적재하면 더 이상 유지되지 않는다. 이러한 구성(기존 구성)의 문제점은 스토리지의 크기가 매우 크고 블록의 크기가 작을 때, 매핑 테이블의 크기가 매우 커져서 이에 대한 관리 비용이 높아진다는 것이다.On the other hand, in FIG. 2, only the mapping table 26 manages both the blocks of the DRAM (M) and the hard disk (H) for each block ID. The mapping table is no longer retained when all the data on the hard disk is loaded into the DRAM. The problem with this configuration (existing configuration) is that when the size of the storage is very large and the size of the block is small, the size of the mapping table becomes very large, which increases the management cost.
따라서, 본 실시예에서는 새로운 방법으로서 하나의 변수를 통해서 하드디스크의 몇 번째 블록까지 적재되었는지를 기록해서 IO 요청(IO request)을 하드디스크에서 처리할지 DRAM에서 처리할지 판단하는 방법을 이용한다. 이러한 방법은 아직 적재되지 않은 블록에 대한 쓰기 연산의 경우 DRAM에서 처리해도 되는데 이를 처리하지 못할 수 있지만, 적재 동안에만 이 현상이 발생하므로 전체 성능에는 크게 영향을 미치지 않고, 구현의 복잡도를 줄일 수 있어서 기존 구성의 문제점을 해결하면서 성능을 향상시킬 수 있는 장점이 있다.Accordingly, in this embodiment, as a new method, it is recorded how many blocks of the hard disk are loaded through one variable, and a method of determining whether to process the IO request (IO request) in the hard disk or DRAM is used. In this case, the write operation for a block that has not yet been loaded may be processed in the DRAM but it may not be processed. However, since this phenomenon occurs only during the load, the overall performance is not greatly affected, There is an advantage that the performance can be improved while solving the problems of the existing configuration.
도 3은 본 발명의 다른 실시예에 따른 DRAM 스토리지에 채용할 수 있는 로그 관리자와 동기화 관리자의 작동 원리를 설명하기 위한 블록다이어그램이다.3 is a block diagram for explaining the operation principle of a log manager and a synchronization manager that can be employed in a DRAM storage according to another embodiment of the present invention.
도 3을 참조하면, 로그 관리자(NVRAM Log Manager, 24)와 동기화 관리자(Sync Manager, 27)는 모두 별도의 쓰레드(thread)로 동작하며 쓰레드가 생성된 후 바로 슬립(Sleep) 모드로 전환될 수 있다. PBestIO 블록 장치 드라이버는 VFS로부터 Block IO를 받고 그에 따라 로그 관리자 쓰레드를 깨울 수 있다.3, both the log manager (NVRAM Log Manager) 24 and the synchronization manager (Sync Manager) 27 operate as a separate thread and can be switched to a sleep mode immediately after a thread is created have. The PBestIO block device driver can receive Block IO from the VFS and wake up the log manager thread accordingly.
로그 관리자(24)는 전달된 Block IO를 로그 생성기 (Log Generator, 242)에 입력하여 로그를 생성할 수 있다. 생성된 로그 레코드는 로그 기록기(Log Writer, 244)에 전달되고, 로그 기록기(244)는 NVRAM IO 관리자(NVRAM IO Manager, 246)를 통해서 NVRAM(40)에 로그 레코드를 기록할 수 있다. 로그 관리자(24)는 NVRAM(40)에 로그를 기록하고 나서 동기화 관리자(27)를 깨울 수 있다.The
동기화 관리자(27)는 로그 관리자(24)에 의해서 슬립 모드에서 활성 모드로 전환될 수 있다. 동기화 관리자(27)는 제일 먼저 NVRAM 로그 관리자(24)가 읽어서 처리할 로그가 있는지 확인하고 처리할 로그가 있으면 순차적으로 읽어서 로그 분석기(Log Parser, 272)를 통해서 하드디스크(50)에 저장하기 위한 Block IO 형태로 변환한다. 변환된 Block IO는 블록 기록기(Block Writer, 274)에 의해서 하드디스크(50)에 기록될 수 있다. 동기화 관리자(27)는 NVRAM 로그 장치에서 처리할 로그가 있으면 계속 위의 과정을 반복하고 없으면 다시 슬립 모드로 전환될 수 있다.The
도 4 내지 도 7은 본 발명의 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 도면들이다.FIGS. 4 to 7 are views for explaining the operation principle of the DRAM storage according to another embodiment of the present invention.
먼저, 도 4를 참조하면, 본 실시예에 따른 NVRAM 로그 관리자(이하 간략히 '로그 관리자'라고 함)는 입출력 요구(IO Request)가 입력될 때 DRAM에서 변경되는 블록에 대한 로그 기록(log records)을 이용하여 블록 단위의 데이터를 HDD(50)에 저장할 수 있다.Referring to FIG. 4, an NVRAM log manager (hereinafter simply referred to as a log manager) according to the present embodiment records log records of blocks changed in the DRAM when an input / output request (IO Request) Can be stored in the
로그 관리자에 제어에 따른 DRAM 스토리지(22)의 동작을 좀더 구체적으로 살펴보면, 일점쇄선 박스(E1) 내에 나타낸 바와 같이, DRAM(30)에 일정 크기(block) 단위의 데이터에 대한 입출력 요구(IO Request)가 입력되면, 로그 관리자는 먼저 블록 I/O의 시작 지점인 함수(예컨대, submit_bio())에 포함된 bio 구조체의 인자를 인지하거나 체크할 수 있다.As shown in the one-dot chain line E1, the operation of the
상기 함수는 I/O 연산의 종류(예컨대, read 혹은 wirte)와 해당 연산에 대한 모든 정보를 포함하는 bio 구조체를 인자로 받을 수 있다. bio 구조체는 기본으로 I/O를 수행할 디스크 영역의 정보와 I/O를 수행할 데이터를 저장하기 위한 메모리 영역의 정보를 포함할 수 있다.The function may take a bio structure including a type of an I / O operation (for example, read or wirte) and a bio structure including all information about the operation. The bio structure can basically contain information of a disk area to perform I / O and information of a memory area to store data to perform I / O.
다음, 로그 관리자는 DRAM(30)에서 변경되는 블록들(예컨대, block1, block2)에 대한 정보를 포함하는 로그 기록(log records)을 NVRAM(40)에 저장할 수 있다. 이때, DRAM(30)의 서로 다른 저장 영역들에 저장되는 데이터에 대응하는 로그 기록들은 로그 기록을 기록하는 메모리의 소정 영역에 순서대로 기록될 수 있다. 로그 기록을 기록하는 메모리는 DRAM(30) 내 일부 저장 공간일 수 있으나, 이에 한정되지는 않는다. Next, the log manager may store log records in the
다음으로, 도 5를 참조하면, 본 실시예에 따른 로그 관리자는 입출력 요구가 있을 때 DRAM(30)에서 변경되는 블록(block4)에 대한 로그 기록을 획득할 수 있다. 로그 기록은 일점쇄선 박스(E2) 속에 나타낸 바와 같이 이전 로그 기록(block1 및 block2)과 함께 기록될 수 있다. 로그 기록은 DRAM(30)에 소정 영역에 저장될 수 있고, 로그 기록을 누적하다가 시스템상의 기설정 이벤트나 로그 기록의 사이즈 등에 따라 초기화될 수 있다. 로그 기록은 현재 로그 기록을 포함하는 누적 로그 기록 형태로 NVRAM(40)에 저장될 수 있다. 또한, 로그 기록은 HDD(50)의 저장 단위(예컨대, 섹터), 데이터 처리 용량 단위 등에 따라 미리 정해진 크기 단위에 대응하는 복수의 로그 기록들(예컨대, 두 개의 block4)로 분할되어 NVRAM(40)에 저장될 수 있다.Next, referring to FIG. 5, the log manager according to the present embodiment can acquire a log record for a block (block 4) to be changed in the
다음으로, 도 6을 참조하면, 본 실시예에 따른 로그 관리자는 일점쇄선 박스(E3)로 나타낸 바와 같이 NVRAM(40)에 저장된 로그 기록에 대응하는 매핑 테이블의 정보를 이용하여 DRAM(30)에 저장된 데이터 블록들(blocks)을 HDD(50)에 저장할 수 있다. NVRAM(40)에 저장된 로그 기록에 대응하는 데이터 블록들은 HDD(50)의 서로 다른 저장 영역들에 대응하도록 매핑 테이블에 의해 매핑될 수 있다.Next, referring to FIG. 6, the log manager according to the present embodiment uses the information of the mapping table corresponding to the log record stored in the
또한, 도 7을 참조하면, 본 실시예에 따른 적재 관리자는 일점쇄선 박스(E4) 속에 나타낸 바와 같이 NVRAM(40)에 저장된 로그 기록에 대응하는 매핑 테이블의 정보를 이용하여 DRAM(30)에 저장된 데이터 블록들(blocks)을 HDD(50)에 저장할 때, NVRAM(40)에 저장된 복수의 로그 기록들에 대응하는 데이터 블록들을 HDD(50)의 동일 저장 영역에 연속하여 저장할 수 있다. Referring to FIG. 7, the load manager according to the present embodiment stores the information in the mapping table stored in the
이와 같이, 적재 관리자는 DRAM 스토리지(22)에 블록 단위의 쓰기 요구가 들어올 때 DRAM(30)에 1차로 블록을 기록하고, 기록된 블록에서 변경된 내용만을 로그(로그 기록)로 만들어 NVRAM(40)에 기록한 후 쓰기 요구를 끝낸 후에, 비동기적으로 동작하는 쓰레드가 지속적으로 NVRAM(40)의 로그를 순차적으로 읽어서 HDD(50)에 블록을 기록할 수 있다.As described above, the load manager writes a block in the
본 실시예에 의하면, 비휘발성 메모리를 로그 장치로 이용하여 쓰기 요구가 들어올 때 하드디스크에 대한 쓰기 없이 쓰기 요구를 처리하는 영속적 DRAM 스토리지를 제공할 수 있다.According to the present embodiment, it is possible to provide a persistent DRAM storage that processes a write request without writing to a hard disk when a write request is received using a nonvolatile memory as a log device.
도 8은 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 작동 원리를 설명하기 위한 블록도이다.8 is a block diagram illustrating the operation principle of a DRAM storage according to another embodiment of the present invention.
본 실시예에 따른 비휘발성 메모리(40, NVDIMM 또는 NVRAM)와 DRAM(30)의 하이브리드 스토리지(DRAM 스토리지에 대응함)의 논리구조는 도 8에 도시한 바와 같다.The logical structure of the nonvolatile memory 40 (NVDIMM or NVRAM) and the hybrid storage (corresponding to the DRAM storage) of the
도 8을 참조하면, 본 실시예에 따른 컴퓨팅 장치의 응용 프로그램(Application, 60)이 메인 메모리인 DRAM(30)에 데이터를 로딩할 때 응용 프로그램(60)으로부터 발생한 입출력 요구는 가상파일 시스템(virtual file system, 62)을 통해 커널의 하이브리드 블록 스토리지 디바이스 드라이버(22)로 전달될 수 있다. 하이브리드 블록 스토리지 디바이스 드라이버(22)는 메모리 디스크 블록 디바이스 드라이버(memory disk block device driver)(이하, 간략히 '블록 디바이스 드라이버'라고 함)로 지칭될 수 있다.8, when an
블록 디바이스 드라이버(22)는 DRAM(30)의 일부 영역을 확보하여 블록 스토리지로 사용할 수 있다. 블록 디바이스 드라이버(22)에 의해서 블록 입출력 요구는 주기억장치인 DRAM(30) 상의 메모리 읽기/쓰기로 변환되어 처리될 수 있다.The
블록 디바이스 드라이버(22)가 출력 요구를 DRAM(30)에서 해당 영역을 읽기 연산으로 변환하여 처리하면 바로 종료되지만, 입력 요구에 대해서는 DRAM(30) 상의 해당 영역에 변경된 블록을 쓰고나서 변경부분(그 정보 혹은 로그 기록)을 NVRAM(40)에 기록한 후 종료할 수 있다. NVRAM(40)에 기록된 변경분은 다시 하드디스크(50)의 해당 블록에 기록되게 된다. 즉, 블록 스토리지 드라이버(22)에 대한 출력 요구는 DRAM(30)의 읽기 연산으로 처리되지만, 입력 요구는 DRAM(30)의 쓰기 연산과 NVDIMM의 쓰기 연산으로 처리될 수 있다. 기존의 DRAM 블록 스토리지는 입력 연산의 경우 DRAM에 대한 쓰기와 하드디스크에 대한 입력 연산으로 처리되므로 본 실시예에 따른 하이브리드 블록 스토리지의 입력 성능이 훨씬 우수하게 된다.When the
또한, 본 실시예에 따른 컴퓨팅 장치에서 하이브리드 블록 스토리지가 시스템 재시작시에 하드디스크(50)에 저장된 데이터를 모두 DRAM(30)으로 적재하는 동안 하드디스크(50)와 DRAM(30)을 모두 이용하여 입출력을 처리할 수 있다.In the computing apparatus according to the present embodiment, the hybrid block storage uses both the
본 실시예에서 시스템(컴퓨팅 장치)이 재시작되면 하드디스크(50)의 블록을 DRAM(30)으로 적재하면서 VFS(62)로부터 입출력 요구가 전달되면 DRAM(30)에 적재된 블록은 DRAM(30)에서 처리하고, 아직 적재되지 않은 블록들은 하드디스크(50)에서 처리하는 형태로 진행될 수 있다. 이때 DRAM(30)에서의 입출력, 하드디스크(50)에서의 입출력, 하드디스크(50)에서 DRAM(30)으로의 적재 연산이 동시에 일관되게 수행될 수 있도록 논리적인 블록 스토리지의 공간과 물리적인 하드디스크(50)와 DRAM(30)의 공간을 매핑하는 매핑 테이블(26)을 유지할 수 있다.When a system (computing device) is restarted in the present embodiment, when a block of the
매핑 테이블(26)은 논리적인 블록 스토리지의 블록 ID(간략히 Logical Block Id)와 물리적인 위치(Physical Location)를 매핑할 수 있다. 매핑 테이블(26)은 하드디스크(50)의 모든 데이터를 DRAM(30)으로 적재하면 더 이상 유지되지 않을 수 있다.The mapping table 26 may map a block ID (a logical block ID) and a physical location of a logical block storage. The mapping table 26 may not be held any longer when all the data of the
도 9는 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 구현예를 설명하기 위한 도면이다.9 is a view for explaining an embodiment of a DRAM storage according to another embodiment of the present invention.
도 9에 도시한 바와 같이, PBestIO 장치(도 1의 22 참조)가 생성된 후 VFS로부터 bio를 전달받아 NVRAM에 로그를 기록하고, HDD로 플러쉬하는 과정을 담고 있다. 여기서, 플러쉬(flush)는 현재 버퍼에 저장되어 있는 내용을 목적지로 전송하고 버퍼를 비운다는 말로서, 본 실시예에서는 NVRAM에 저장되어 있는 내용을 HDD로 전송하고 NVRAM에 저장되어 있는 로그 기록을 지우는 동작을 지칭할 수 있다. 그리고 슈퍼 블록은 이후에 서로 다른 영역에 저장되는 복수의 블록들로 분할될 수 있는 블록을 지칭할 수 있다.As shown in FIG. 9, a PBestIO device (see 22 in FIG. 1) is generated, receives bio from the VFS, records the log in the NVRAM, and flushes it to the HDD. Herein, the flush means that contents stored in the current buffer are transmitted to the destination and the buffer is empty. In this embodiment, the contents stored in the NVRAM are transmitted to the HDD and the log records stored in the NVRAM are erased . ≪ / RTI > And the super block may be referred to as a block that can be later divided into a plurality of blocks stored in different areas.
pdramstors_make_request 함수(91)는 VFS(도 1의 62 참조)로부터 bio를 전달받는 함수이다. VFS로부터 bio를 전달받으면 bestio_thread_fun 함수(92)를 깨워주고 자신은 슬립 모드로 진행할 수 있다.The
bestio_thread_fun 함수(92)는 NVRAM에 로그를 기록하기 위해 clone_pmem_bio 함수(93)를 실행하고 로그 기록이 완료되면 pdramstors_make_request 함수(91)를 깨울 수 있다.The
pdramstors_make_request 함수(91)는 요청받은 bio를 DRAM에 기록하고 해당 작업을 종료할 수 있다.The
backup_thread_fun 함수(94)는 NVRAM에 기록된 로그가 있는지 확인하여 로그가 기록되어 있으면 chain 함수(95)를 호출할 수 있다. 호출된 chain 함수(95)는 기설정된 함수 예컨대, is_full_manager 함수와 readbuffer2manager 함수를 통해 로그의 헤더 정보를 읽어들인 뒤 헤더 정보를 HDD에 기록한 후 미리 설정된 다른 함수 예컨대, readbuffer2disk 함수를 통해 로그 정보를 HDD에 기록할 수 있다.The
도 10은 본 발명의 또 다른 실시예에 따른 DRAM 스토리지의 다른 구현예를 설명하기 위한 도면이다. 도 10은 PBestIO 장치(도 1의 22 참조)의 생성 및 제거 과정의 함수 호출 관계를 나타내고 있다.10 is a view for explaining another embodiment of the DRAM storage according to another embodiment of the present invention. FIG. 10 shows a function calling relationship of the process of creating and removing the PBestIO device (see 22 in FIG. 1).
도 10을 참조하면, PBestIO 장치가 생성되면 가장 먼저 자체 초기화 함수(97) 예컨대, My_init 함수가 호출되고, My_init 함수 내에서 블록이 비어있는지를 판단하는 체크함수(예컨대, isMetaEmtpy())를 통해 NVRAM에 매직 코드가 쓰여 있는지 확인할 수 있다. 매직 코드는 시스템이 부팅되기 전 NVRAM에 기록되었던 로그가 남아있는지 확인하는 값으로 매직 코드가 남아있다면 NVRAM의 로그를 HDD로 모두 넘겨준 뒤 복귀함수(98, 예컨대 recovery_thread 함수)의 스레드(Recovery_thread)를 통해 HDD의 데이터를 DRAM으로 백업하는 과정을 수행할 수 있다.10, when the PBestIO device is created, the
PBestIO 장치가 제거되면, My_exit 함수(99)를 호출하여 NVRAM에 있는 모든 데이터를 HDD로 플러쉬(Flush)한 뒤 해당 함수와 함께 해당 작업(process)이 종료될 수 있다.When the PBestIO device is removed, the
전술한 실시예들에 의하면, DRAM에 배터리를 이용하여 데이터를 안정적으로 유지하는 NVRAM(NVDIMM)을 이용하여 DRAM을 블록 스토리지로 사용하면서도 안정적으로 데이터를 유지할 수 있는 NVRAM과 DRAM의 하이브리드 블록 스토리지 또는 NVRAM과 DRAM 및 HDD의 하이브리드 블록 스토리지를 제공할 수 있다.According to the above-described embodiments, NVRAM (NVRAM) capable of stably maintaining data while using DRAM as block storage by using NVRAM (NVDIMM) which stably maintains data using a battery in a DRAM, hybrid block storage or NVRAM And hybrid block storage of DRAM and HDD.
한편, 전술한 실시예들에서는 휘발성 메모리로서 DRAM을 중심으로 설명하였으나, 본 발명은 그러한 구성으로 한정되지 않고, 메모리 기술 발전에 따라 DRAM을 대체하여 사용가능한 모든 휘발성 메모리를 포함할 수 있다. 또한, 본 발명의 하이브리드 블록 스토리지는 DRAM, 비휘발성 메모리 및 하드디스크 드라이브를 포함하는 구성으로 한정되지 않고, DRAM보다 입출력 성능은 낮으나 하이브리드 블록 스토리지로 구성할 때 소정의 장점(제조비용 절감 등)을 가질 수 있다면, 하드디스크 드라이브를 대체한 다른 저장장치(제3 저장장치)가 사용될 수 있음은 물론이다.Although the embodiments have been described with reference to a DRAM as a volatile memory, the present invention is not limited to such a configuration, and may include all volatile memories that can be used in place of a DRAM in accordance with development of a memory technology. The hybrid block storage of the present invention is not limited to a configuration including a DRAM, a nonvolatile memory, and a hard disk drive. The hybrid block storage of the present invention has a lower input / output performance than a DRAM, but has a certain advantage It is needless to say that another storage device (third storage device) replacing the hard disk drive may be used.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the present invention as defined by the following claims It can be understood that
Claims (17)
블록 데이터에 대한 입출력 요구시 제3 저장장치의 몇 번째 블록까지 데이터가 적재되었는지에 대한 기록에 따라 상기 입출력 요구를 상기 제3 저장장치에서 처리할지 혹은 상기 DRAM에서 처리할지를 판단하는 단계;
상기 DRAM에서 변경되는 블록에 대한 로그를 상기 비휘발성 메모리에 저장하는 단계;
상기 로그에 대응하는 블록을 상기 비휘발성 메모리에서 상기 제3 저장장치로 백업하는 단계를 포함하는, DRAM 스토리지의 작동 방법.A method of operating a DRAM storage in a computing device comprising a non-volatile memory, a dynamic random access memory (DRAM), and a DRAM storage including a third storage device having a lower input / output capability than the DRAM,
Determining whether to process the input / output request in the third storage device or in the DRAM according to a record of how many blocks of the third storage device are loaded when the input / output request for the block data is requested;
Storing a log of blocks changed in the DRAM in the nonvolatile memory;
Backing up a block corresponding to the log from the non-volatile memory to the third storage device.
상기 저장하는 단계는, 상기 DRAM에서 변경이 가해진 블록 중 변경된 영역에 대한 로그만을 상기 비휘발성 메모리에 저장하는, DRAM 스토리지의 작동 방법.The method according to claim 1,
Wherein the storing step stores in the non-volatile memory only the log of the changed area of the block that has been changed in the DRAM.
상기 저장하는 단계 전에, 상기 비휘발성 메모리, 상기 DRAM 및 상기 제3 저장장치를 포함한 물리적인 공간들과 논리적인 블록 스토리지의 공간 사이를 매핑하는 매핑 테이블에 상기 로그를 기록하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.The method according to claim 1,
Further comprising the step of recording the log in a mapping table mapping between physical spaces including the non-volatile memory, the DRAM and the third storage device and a space of logical block storage before the storing, How DRAM storage works.
상기 저장하는 단계는, 상기 로그를 상기 제3 저장장치의 저장 단위에 따라 상기 로그를 복수의 로그들로 분할하여 상기 비휘발성 메모리에 저장하는, DRAM 스토리지의 작동 방법.The method according to claim 1,
Wherein the storing step divides the log into a plurality of logs according to a storage unit of the third storage device and stores the log in the nonvolatile memory.
상기 입출력 요구는 상기 컴퓨팅 장치에서 동작하는 응용 프로그램이 메인 메모리인 상기 DRAM에 데이터를 로딩할 때 상기 응용 프로그램으로부터 발생하는, DRAM 스토리지의 작동 방법.The method according to claim 1,
Wherein the input / output request is generated from the application program when the application program running on the computing device loads data into the DRAM which is main memory.
상기 입출력 요구는 상기 응용 프로그램에 연결되는 가상파일 시스템(virtual file system, VFS)을 통해 커널의 블록 디바이스 드라이버로 전달되는, DRAM 스토리지의 작동 방법.The method of claim 5,
Wherein the input / output request is transferred to a block device driver of a kernel through a virtual file system (VFS) connected to the application program.
상기 블록 디바이스 드라이버는 상기 DRAM의 일부 영역을 확보하여 DRAM 스토리지로 사용하고 상기 입출력 요구를 주기억장치인 DRAM 상의 메모리 읽기/쓰기로 변환하여 처리하는, DRAM 스토리지의 작동 방법.The method of claim 6,
Wherein the block device driver acquires a partial area of the DRAM and uses the DRAM as a DRAM storage, and converts the input / output request into memory read / write on a DRAM, which is a main memory, and processes the DRAM storage.
상기 블록 디바이스 드라이버는 입력 요구에 대해서는 상기 DRAM 상의 해당 영역에 변경된 블록을 쓰고나서 변경분을 상기 비휘발성 메모리에 기록한 후 종료하며, 여기서 상기 비휘발성 메모리에 기록된 변경분은 임의의 쓰레드에 의해 순차적으로 상기 제3 저장장치의 해당 블록에 기록되는, DRAM 스토리지의 작동 방법.The method of claim 6,
Wherein the block device driver writes a changed block to a corresponding area on the DRAM and then writes the changed block to the nonvolatile memory and terminates after the changed block is written to the nonvolatile memory, To the corresponding block of the third storage device.
상기 백업하는 단계 후에, 상기 컴퓨팅 장치가 재시작될 때 상기 제3 저장장치의 블록을 상기 DRAM으로 적재하면서 상기 VFS로부터 입출력 요구가 전달되면 상기 DRAM에 적재된 블록은 상기 DRAM에서 처리되고, 아직 적재되지 않은 상기 제3 저장장치의 블록들은 상기 제3 저장장치에서 처리하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.The method of claim 6,
After the backup step, when the computing device is restarted, blocks of the third storage device are loaded into the DRAM, and when an input / output request is transferred from the VFS, the blocks loaded in the DRAM are processed in the DRAM and are not yet loaded Further comprising: processing the blocks of the third storage device in the third storage device.
상기 처리하는 단계 후에, 상기 컴퓨팅 장치의 커널에서는 상기 DRAM에서의 입출력, 상기 제3 저장장치에서의 입출력, 상기 제3 저장장치에서 상기 DRAM으로의 적재 연산이 일관되어 수행되도록 논리적인 블록 스토리지의 공간과 상기 제3 저장장치와 상기 DRAM의 물리적인 공간을 매핑하는 단계를 더 포함하는, DRAM 스토리지의 작동 방법.The method of claim 9,
After the processing, the kernel of the computing device performs a logical block storage operation such that input / output in the DRAM, input / output in the third storage device, and loading operation from the third storage device to the DRAM are consistently performed. And mapping the physical space of the DRAM to the third storage device.
상기 논리적인 블록 스토리지의 공간에 대응하는 블록 ID와 상기 물리적인 공간의 물리적인 위치를 매핑하는 매핑 테이블은 상기 제3 저장장치의 모든 데이터를 상기 DRAM으로 적재하면 더 이상 유지되지 않거나 삭제되는, DRAM 스토리지의 작동 방법.The method of claim 10,
A mapping table for mapping a block ID corresponding to a space of the logical block storage and a physical location of the physical space is stored in the DRAM so that all data of the third storage device is not held or deleted, How storage works.
상기 제3 저장장치는 하드디스크를 포함하는, DRAM 스토리지의 작동 방법.The method according to claim 1,
Wherein the third storage device comprises a hard disk.
상기 블록 디바이스 드라이버에 의해 구동되는 비휘발성 메모리(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 스토리지.A block device driver controlled by a virtual file system (VFS) of the kernel of the computing device;
A non-volatile random access memory (NVRAM) log manager and a load manager driven by the block device driver; And
A dynamic random access memory (DRAM) driven by the block device driver, a nonvolatile memory (NVRAM), and a third storage device having a lower input / output performance than the DRAM,
Here, IO requests of a user level application are converted into a block IO request through the VFS and transferred to the block device driver,
When the Block IO is a write operation, the Block IO is converted into a log record by the NVRAM log manager and stored in the NVRAM,
The NVRAM log manager reflects the Block IO to the DRAM when the log record of the Block IO is stored in the NVRAM, notifies the VFS that the processing of the Block IO is completed,
The VFS informs that the application of the Block IO has completed the processing of the Block IO,
The synchronization manager connected between the NVRAM and the third storage device reads the log record recorded in the NVRAM by the NVRAM log manager and converts the log record into a Block IO for writing to the third storage device, IO is used for the third storage device at the same location as the block location recorded in the DRAM.
상기 적재 관리자는, 상기 컴퓨팅 장치 또는 시스템의 재시작시, 상기 제3 저장장치의 블록들을 순차적으로 상기 DRAM으로 적재하며, 적재 중에 각 블록이 상기 제3 저장장치에 있는지 상기 DRAM에 적재되어 있는지를 관리하며, 상기 VFS로부터 전달되는 Block IO에 대해서 해당 블록이 상기 제3 저장장치에 있는지 또는 상기 DRAM에 있는지 판단해서 상기 Block IO를 해당 매체로 전달하는, DRAM 스토리지.14. The method of claim 13,
Wherein the loading manager loads the blocks of the third storage device sequentially into the DRAM at the restart of the computing device or system and controls whether each block is in the third storage device and loaded in the DRAM during loading And determines whether the corresponding block is in the third storage device or in the DRAM with respect to the Block IO transmitted from the VFS, and transfers the Block IO to the corresponding medium.
상기 적재 관리자는 상기 각 블록의 실제 위치를 관리하기 위해서 매핑 테이블을 이용하는, DRAM 스토리지.15. The method of claim 14,
Wherein the load manager uses a mapping table to manage the actual location of each block.
상기 적재 관리자는 상기 각 블록의 실제 위치를 관리하기 위해서 상기 제3 저장장치에서 상기 DRAM으로 가장 마지막에 적재된 블록의 번호만을 기록하는, DRAM 스토리지.15. The method of claim 14,
Wherein the stack manager records only the number of the most recently loaded block from the third storage device to the DRAM to manage the actual location of each block.
상기 제3 저장장치는 하나 또는 복수의 하드디스크들을 포함하며 하나의 하드디스크의 사이즈는 하나의 DRAM의 사이즈에 대응하는, DRAM 스토리지.14. The method of claim 13,
Wherein the third storage device comprises one or more hard disks and the size of one hard disk corresponds to the size of one DRAM.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170003670A KR101888781B1 (en) | 2017-01-10 | 2017-01-10 | Persistent dynamic random access memory storage using non-volatile ram and operating method therefof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170003670A KR101888781B1 (en) | 2017-01-10 | 2017-01-10 | Persistent dynamic random access memory storage using non-volatile ram and operating method therefof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180082232A KR20180082232A (en) | 2018-07-18 |
KR101888781B1 true KR101888781B1 (en) | 2018-08-16 |
Family
ID=63048880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170003670A KR101888781B1 (en) | 2017-01-10 | 2017-01-10 | Persistent dynamic random access memory storage using non-volatile ram and operating method therefof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101888781B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11899970B2 (en) | 2021-09-29 | 2024-02-13 | Samsung Electronics Co., Ltd. | Storage system and method to perform workload associated with a host |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101541532B1 (en) | 2014-09-17 | 2015-08-06 | 성균관대학교산학협력단 | Method and apparatus for data consistency control of storage class memory |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101008032B1 (en) * | 2007-12-18 | 2011-01-13 | 재단법인서울대학교산학협력재단 | Meta-data management system and method |
KR20130070178A (en) * | 2011-12-19 | 2013-06-27 | 한국전자통신연구원 | Hybrid storage device and operating method thereof |
-
2017
- 2017-01-10 KR KR1020170003670A patent/KR101888781B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101541532B1 (en) | 2014-09-17 | 2015-08-06 | 성균관대학교산학협력단 | Method and apparatus for data consistency control of storage class memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11899970B2 (en) | 2021-09-29 | 2024-02-13 | Samsung Electronics Co., Ltd. | Storage system and method to perform workload associated with a host |
Also Published As
Publication number | Publication date |
---|---|
KR20180082232A (en) | 2018-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100394391C (en) | Systems and methods for storing data on computer systems | |
US9244839B2 (en) | Methods and apparatus for supporting persistent memory | |
KR101562973B1 (en) | Memory apparatus and method for operating thereof | |
US8464257B2 (en) | Method and system for reducing power loss to backup IO start time of a storage device in a storage virtualization environment | |
US10521354B2 (en) | Computing apparatus and method with persistent memory | |
US20080022032A1 (en) | Concurrent virtual machine snapshots and restore | |
US11422860B2 (en) | Optimizing save operations for OS/hypervisor-based persistent memory | |
KR101846612B1 (en) | Load boot data | |
JP2006268503A (en) | Computer system, disk unit and data update control method | |
CN110457261B (en) | Data access method, device and server | |
JP2012252576A (en) | Information processing device, start method and program | |
US20160139995A1 (en) | Information processing apparatus, memory dump method, and storage medium | |
US10019193B2 (en) | Checkpointing a journal by virtualization of non-volatile random access memory | |
US20190324868A1 (en) | Backup portion of persistent memory | |
Scargall et al. | Persistent memory architecture | |
KR101888781B1 (en) | Persistent dynamic random access memory storage using non-volatile ram and operating method therefof | |
CN114756355B (en) | Method and device for automatically and quickly recovering process of computer operating system | |
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 (en) | Calculation system provided with nonvolatile main memory | |
JP6080492B2 (en) | Information processing apparatus, activation method, and program | |
US10733097B2 (en) | Shingled magnetic recording storage system with reduced time to recover | |
US10802918B2 (en) | Computer device, server device, and method for controlling hybrid memory unit thereof | |
KR101881039B1 (en) | Method for asynchronous atomic update of memory mapped files stored in non-volatile memory and control apparatus thereof |
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 |