KR102562160B1 - 인메모리를 이용한 가상 머신 시스템 및 그 동작 방법 - Google Patents

인메모리를 이용한 가상 머신 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR102562160B1
KR102562160B1 KR1020230007996A KR20230007996A KR102562160B1 KR 102562160 B1 KR102562160 B1 KR 102562160B1 KR 1020230007996 A KR1020230007996 A KR 1020230007996A KR 20230007996 A KR20230007996 A KR 20230007996A KR 102562160 B1 KR102562160 B1 KR 102562160B1
Authority
KR
South Korea
Prior art keywords
block
overlay area
virtual machine
data
memory
Prior art date
Application number
KR1020230007996A
Other languages
English (en)
Inventor
방혁준
양진원
Original Assignee
쿤텍 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쿤텍 주식회사 filed Critical 쿤텍 주식회사
Application granted granted Critical
Publication of KR102562160B1 publication Critical patent/KR102562160B1/ko

Links

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

가상 머신 시스템 및 그 동작 방법이 개시된다. 개시되는 일 실시예에 따른 가상 머신 시스템은, 가상 머신, 디스크 스토리지에 가상 머신에 대응하여 생성되고 데이터를 저장하는 영역이 복수 개의 블록으로 구분되며, 각 블록에 블록 ID가 부여되는 가상 스토리지, 및 가상 머신 시스템이 동작되는 컴퓨팅 환경의 인메모리를 관리하고, 가상 스토리지의 용량에 따라 인메모리에 오버레이(overlay) 영역을 할당하는 인메모리 관리 모듈을 포함한다.

Description

인메모리를 이용한 가상 머신 시스템 및 그 동작 방법{VIRTUAL MACHINE SYSTEM USING IN-MEMORY AND OPERATING METHOD THE SAME}
본 발명의 실시예는 가상 머신 시스템 및 그 동작 방법과 관련된 것이다.
최근, 5G 통신 기술의 발전과 IoT(Internet of Things)의 발전으로 인하여 가상 머신 시스템에서 다양하고 많은 가상 머신(Virtual Machine)을 실행하기 위한 필요성이 대두되고 있다. 그러나, 가상 머신 시스템에서 많은 수의 가상 머신을 실행하는 경우, 각 가상 머신의 스토리지 영역에 대한 쓰기(write) 동작의 과부하로 인하여 성능 감소가 발행하게 된다. 이러한 문제를 해소하기 위해 가상 머신에 대한 스토리지 전체 영역을 인메모리로 구현할 수 있으나, 이 경우 대용량 사이즈의 메모리가 필요하다는 단점이 있다.
한국등록특허공보 제10-1451781호(2014.10.16)
본 발명의 실시예는 가상 머신의 쓰기 동작 및 읽기 동작의 성능을 향상시킬 수 있는 가상 머신 시스템 및 그 동작 방법을 제공하기 위한 것이다.
개시되는 일 실시예에 따른 가상 머신 시스템은, 가상 머신; 디스크 스토리지에 상기 가상 머신에 대응하여 생성되고 데이터를 저장하는 영역이 복수 개의 블록으로 구분되며, 각 블록에 블록 ID가 부여되는 가상 스토리지; 및 상기 가상 머신 시스템이 동작되는 컴퓨팅 환경의 인메모리를 관리하고, 상기 가상 스토리지의 용량에 따라 상기 인메모리에 오버레이(overlay) 영역을 할당하는 인메모리 관리 모듈을 포함한다.
상기 인메모리 관리 모듈은, 상기 가상 머신의 쓰기 동작 신호를 수신하고, 상기 쓰기 동작 신호에 포함된 블록 ID를 확인하여 상기 오버레이 영역에 해당 블록 ID에 대응하는 블록을 생성하며, 생성한 상기 블록에 상기 쓰기 동작 신호에 따른 데이터를 기록할 수 있다.
상기 인메모리 관리 모듈은, 기 설정된 주기로 상기 오버레이 영역의 블록에 기록된 데이터를 상기 가상 스토리지의 해당 블록에 기록한 후 상기 오버레이 영역의 블록을 삭제할 수 있다.
상기 인메모리 관리 모듈은, 상기 가상 머신의 읽기 동작 신호를 수신하고, 상기 읽기 동작 신호에 포함된 블록 ID를 확인하며, 상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하는지를 확인할 수 있다.
상기 인메모리 관리 모듈은, 상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하는 경우, 상기 오버레이 영역의 해당 블록에서 데이터를 읽어서 상기 가상 머신으로 전달하고, 상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하지 않는 경우, 상기 가상 스토리지의 상기 블록 ID에 대응하는 블록에서 데이터를 읽어서 상기 가상 머신으로 전달할 수 있다.
상기 인메모리 관리 모듈은, 상기 오버레이 영역에서 각 블록과 그에 대응하는 상기 가상 스토리지의 블록을 매핑하여 관리할 수 있다.
상기 인메모리 관리 모듈은, 상기 쓰기 동작 신호에 따라 상기 오버레이 영역에서 블록을 생성하여 데이터를 기록할 때, 상기 오버레이 영역에 할당된 잔여 용량이 기 설정된 임계 용량 미만인 경우, 상기 기 설정된 주기가 아니라 하더라도 상기 오버레이 영역의 블록에 기록된 데이터를 상기 가상 스토리지의 해당 블록에 기록한 후 상기 오버레이 영역의 블록을 삭제할 수 있다.
상기 인메모리 관리 모듈은, 상기 쓰기 동작 신호에 대응하는 데이터 량에 기초하여 상기 오버레이 영역의 데이터가 기록된 블록들 중 상기 가상 스토리지에 기록한 후 삭제할 블록을 결정할 수 있다.
상기 인메모리 관리 모듈은, 상기 가상 스토리지의 용량, 상기 가상 머신의 쓰기 동작 빈도, 및 상기 가상 머신의 쓰기 동작 시 데이터 사용량 중 하나 이상을 기초로 상기 인메모리에서 오버레이 영역을 할당할 수 있다.
개시되는 일 실시예에 따른 가상 머신 시스템의 동작 방법은, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 가상 머신을 생성하는 단계; 디스크 스토리지에 상기 가상 머신에 대응하여 가상 스토리지를 생성하는 단계; 상기 가상 스토리지를 복수 개의 블록으로 구분하고 각 블록에 블록 ID를 부여하는 단계; 및 상기 가상 스토리지의 용량에 따라 인메모리에 오버레이(overlay) 영역을 할당하는 단계를 포함한다.
개시되는 실시예에 의하면, 가상 머신의 쓰기 동작에 대해서는 인메모리의 오버레이 영역에 블록을 생성한 후 기록하고, 인메모리의 오버레이 영역에서 블록의 데이터를 주기적으로 가상 스토리지에 기록한 후 삭제함으로써, 가상 스토리지의 영역 전체를 인메모리의 오버레이 영역에 할당하지 않아도 되므로 메모리 사용량을 줄일 수 있게 된다.
또한, 가상 머신의 쓰기 동작은 인메모리에서 수행되도록 하고, 가상 머신의 읽기 동작도 해당 데이터가 인메모리에 존재하는 경우 인메모리에서 수행되도록 함으로써, 가상 머신 시스템에서 쓰기 동작 및 읽기 동작에 대한 성능을 향상시킬 수 있게 된다. 특히 쓰기 동작은 읽기 동작보다 많은 부하가 발생하는데, 쓰기 동작을 인메모리에서 수행되도록 하여 부하를 줄이면서 작업 속도를 높일 수 있게 된다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 시스템의 구성을 나타낸 블록도
도 2는 본 발명의 일 실시예에서 가상 머신 시스템의 동작 방법을 개략적으로 나타낸 도면
도 3은 본 발명의 일 실시예에 따른 가상 머신 시스템의 동작 방법을 설명하기 위한 흐름도
도 4는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 시스템의 구성을 나타낸 블록도이다.
도 1을 참조하면, 가상 머신 시스템(100)은 가상 머신(102), 가상 스토리지(104), 및 인메모리 관리 모듈(106)을 포함할 수 있다. 가상 머신 시스템(100)은 복수 개의 가상 머신(102)을 포함할 수 있으나, 설명의 편의상 하나의 가상 머신(102)만을 도시하였다.
가상 머신(102)은 가상 머신 시스템(100)이 동작되는 컴퓨팅 환경에서 필요한 자원들을 모아 생성될 수 있다. 가상 머신(102)의 생성 기술은 이미 공지된 기술이므로 이에 대한 자세한 설명은 생략하기로 한다. 가상 머신(102)은 사용자의 입력에 의한 명령 또는 스케줄링 된 명령 등에 따라 데이터의 쓰기 또는 읽기 동작을 수행할 수 있다.
가상 머신(102)은 입력되는 명령 또는 설정된 명령 등에 따라 데이터의 쓰기 또는 읽기 동작을 수행할 때, 인메모리 관리 모듈(104)로 쓰기 동작 신호 또는 읽기 동작 신호를 전달 할 수 있다. 여기서, 쓰기 동작 신호 또는 읽기 동작 신호에는 각각 가상 스토리지(104)의 블록 ID가 포함될 수 있다.
즉, 쓰기 동작 신호에는 가상 스토리지(104)의 어떤 블록에 대한 쓰기 동작인지를 구별하기 위해 해당 블록 ID가 포함될 수 있다. 또한, 읽기 동작 신호에는 가상 스토리지(104)의 어떤 블록에 대한 읽기 동작인지를 구별하기 위해 해당 블록 ID가 포함될 수 있다.
가상 스토리지(104)는 컴퓨팅 환경의 디스크 스토리지(예를 들어, HDD(Hard Disk Drive))에 마련될 수 있다. 가상 머신(102)의 생성 시 가상 머신(102)에 대응하는 가상 스토리지(104)가 생성될 수 있다. 가상 스토리지(104)는 데이터를 저장하는 영역이 블록 별로 구분될 수 있다. 예를 들어, 가상 스토리지(104)는 N개의 블록으로 구분될 수 있으며, 각 블록에는 블록 ID가 부여될 수 있다.
인메모리 관리 모듈(106)은 가상 머신 시스템(100)이 동작되는 컴퓨팅 환경의 인메모리(In-Memory)를 관리하는 역할을 할 수 있다. 인메모리 관리 모듈(106)은 인메모리(106a)를 포함하여 구성될 수 있으나, 이에 한정되는 것은 아니며 인메모리(106a)는 인메모리 관리 모듈(106)과는 별도로 마련될 수도 있다. 일 실시예에서, 인메모리(106a)는 RAM(Random Access Memory)로 이루어질 수 있다.
인메모리 관리 모듈(106)은 가상 스토리지(104)의 용량에 따라 인메모리(106a)에 오버레이(overlay) 영역을 할당할 수 있다. 일 실시예에서, 인메모리 관리 모듈(106)은 가상 스토리지(104)의 용량(데이터 저장 용량) 보다 작은 용량의 오버레이 영역을 인메모리(106a)에 할당할 수 있다.
인메모리 관리 모듈(106)은 가상 머신(102)의 쓰기 동작 빈도 및 쓰기 동작 시 데이터 사용량 중 하나 이상을 기초로 인메모리(106a)에 오버레이 영역을 할당할 수 있다. 예를 들어, 인메모리 관리 모듈(106)은 가상 머신(102)의 쓰기 동작 빈도가 많을수록 인메모리(106a)에 많은 용량의 오버레이 영역을 할당할 수 있다. 또한, 가상 머신(102)의 쓰기 동작 시 데이터 사용량이 많을수록 인메모리(106a)에 많은 용량의 오버레이 영역을 할당할 수 있다. 여기서, 가상 머신(102)의 쓰기 동작 빈도 및 쓰기 동작 시 데이터 사용량은 이전에 생성되었던 가상 머신(102)의 쓰기 동작 빈도 및 쓰기 동작 시 데이터 사용량을 모니터링 하여 산출될 수 있다.
일 실시예에서, 인메모리 관리 모듈(106)은 기계 학습에 기반하여 인메모리(106a)에서 할당할 오버레이 영역의 용량을 결정할 수 있다. 이때, 기계 학습 모델은 가상 머신(102)의 쓰기 동작 빈도, 쓰기 동작 시 데이터 사용량, 및 가상 스토리지(104)의 용량을 입력으로 하여 인메모리(106a)에서 오버레이 영역의 용량을 예측하도록 학습될 수 있다.
인메모리 관리 모듈(106)은 가상 머신(102)으로부터 쓰기 동작 신호가 수신되는 경우, 쓰기 동작 신호에 포함된 블록 ID를 확인하고, 인메모리(106a)의 오버레이 영역에 해당 블록 ID에 대응하는 블록을 생성하며, 생성한 블록에 데이터를 기록할 수 있다. 즉, 가상 머신(102)의 쓰기 동작 신호에 대해 가상 스토리지(104)의 해당 블록에 데이터를 기록하지 않고 인메모리(106a)의 오버레이 영역에 그에 대응하는 블록을 생성하고 데이터를 기록할 수 있다. 여기서, 인메모리(106a)를 통해 데이터의 쓰기 동작이 수행되기 때문에, 쓰기 동작의 성능이 향상되게 된다.
인메모리 관리 모듈(106)은 가상 머신(102)으로부터 읽기 동작 신호가 수신되는 경우, 읽기 동작 신호에 포함된 블록 ID를 확인하고, 인메모리(106a)의 오버레이 영역의 해당 블록 ID에 데이터가 존재하는지를 확인할 수 있다. 인메모리(106a)의 오버레이 영역의 해당 블록 ID에 데이터가 존재하는 경우, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역의 해당 블록에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다. 이 경우, 인메모리(106a)를 통해 데이터의 읽기 동작이 수행되기 때문에, 읽기 동작의 성능이 향상되게 된다. 반면, 인메모리(106a)의 오버레이 영역의 해당 블록 ID에 데이터가 존재하지 않는 경우, 인메모리 관리 모듈(106)은 가상 스토리지(104)의 해당 블록 ID에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다.
인메모리 관리 모듈(106)은 기 설정된 주기로 인메모리(106a)의 오버레이 영역에 기록된 데이터를 가상 스토리지(104)의 해당 블록에 기록할 수 있다. 즉, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역의 n 블록(블록 ID가 n인 블록)에 기록된 데이터를 가상 스토리지(104)의 n 블록에 기록할 수 있다. 데이터가 가상 스토리지(104)의 n 블록에 기록된 경우, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역의 n 블록에서 데이터를 삭제할 수 있다.
이와 같이, 인메모리(106a)의 오버레이 영역에 기록된 데이터를 가상 스토리지(104)의 해당 블록에 주기적으로 기록 및 삭제함으로써, 인메모리(106a)의 오버레이 영역과 가상 스토리지(104)를 데이터 동기화 할 수 있고, 오버레이 영역의 메모라 사용량을 관리할 수 있으며 오버레이 영역의 데이터가 유실되는 것을 방지할 수 있게 된다.
여기서, 인메모리(106a)의 오버레이 영역에 기록된 데이터를 가상 스토리지(104)의 해당 블록에 기록하는 주기는 가상 머신(102)의 쓰기 동작 부하에 따라 조절될 수 있다. 가상 머신(102)의 쓰기 동작 부하는 가상 머신(102)의 쓰기 동작 빈도 및 쓰기 동작 시 데이터 사용량 등에 따라 산출할 수 있다.
한편, 인메모리 관리 모듈(106)은 가상 머신(102)의 쓰기 동작 신호에 따라 인메모리(106a)의 오버레이 영역에서 블록을 생성하여 데이터를 기록할 때, 오버레이 영역에 할당된 잔여 용량(즉, 잔여 메모리 용량)이 기 설정된 임계 용량 미만인 경우, 기 설정된 주기가 아니라 하더라도 인메모리(106a)의 오버레이 영역에 기록된 데이터를 가상 스토리지(104)의 해당 블록에 기록한 후 오버레이 영역의 데이터를 삭제(해당 블록을 삭제)하여 오버레이 영역의 잔여 용량을 확보할 수 있다.
이때, 인메모리 관리 모듈(106)은 쓰기 동작 신호에 대응하는 데이터 량에 기초하여 인메모리(106a)의 오버레이 영역의 데이터가 기록된 블록들 중 가상 스토리지(104)에 기록한 후 삭제할 블록을 결정할 수 있다. 예를 들어, 인메모리 관리 모듈(106)은 쓰기 동작 신호에 대응하는 데이터 량 이상의 데이터가 기록된 블록을 가상 스토리지(104)에 기록 후 삭제할 블록으로 결정할 수 있다.
인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역에서 각 블록과 그에 대응하는 가상 스토리지(104)의 블록을 매핑하여 관리할 수 있다. 이를 통해, 인메모리 관리 모듈(106)은 가상 스토리지(104)의 데이터와 인메모리(106a)의 오버레이 영역의 데이터를 블록 단위로 관리할 수 있다.
도 2는 본 발명의 일 실시예에서 가상 머신 시스템의 동작 방법을 개략적으로 나타낸 도면이다.
도 2를 참조하면, 가상 머신(102)에서 블록 ID 1번 영역에 대해 읽기 동작 신호가 수신된 경우, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역에 블록 ID 1번에 대응하는 블록이 존재하는지 확인할 수 있다. 여기서는, 인메모리(106a)의 오버레이 영역에 블록 ID 1번에 대응하는 블록이 존재하지 않으므로, 인메모리 관리 모듈(106)은 가상 스토리지(104)의 블록 ID 1번에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다(A).
또한, 가상 머신(102)에서 블록 ID 3번 영역에 대해 쓰기 동작 신호가 수신된 경우, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역에 블록 ID 3번에 대응하는 블록을 생성한 후 해당 블록에 데이터를 기록할 수 있다(B).
그 후, 가상 머신(102)에서 블록 ID 3번 영역에 대해 읽기 동작 신호가 수신되는 경우, 인메모리 관리 모듈(106)은 오버레이 영역의 블록 ID 3번 영역에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다(C). 즉, 오버레이 영역의 블록 ID 3번이 가상 스토리지(104)의 블록 ID 3번에 기록된 후 삭제되기 까지, 블록 ID 3번 영역에 대한 읽기 동작은 오버레이 영역의 블록 ID 3번 영역에서 수행될 수 있다.
또한, 기 설정된 주기가 된 경우, 인메모리 관리 모듈(106)은 인메모리(106a)의 오버레이 영역에서 블록 ID 5번 영역의 데이터를 가상 스토리지(104)의 블록 ID 5번에 기록한 후, 오버레이 영역에서 블록 ID 5번을 삭제할 수 있다(D).
개시되는 실시예에 의하면, 가상 머신(102)의 쓰기 동작에 대해서는 인메모리(106a)의 오버레이 영역에 블록을 생성한 후 기록하고, 인메모리(106a)의 오버레이 영역에서 블록의 데이터를 주기적으로 가상 스토리지(104)에 기록한 후 삭제함으로써, 가상 스토리지(104)의 영역 전체를 인메모리(106a)의 오버레이 영역에 할당하지 않아도 되므로 메모리 사용량을 줄일 수 있게 된다.
즉, 가상 스토리지(104)의 전체 영역을 인메모리(106a)에 구현하지 않고 인메모리(106a)에 오버레이 영역을 할당하고, 쓰기 동작에 대해 오버레이 영역에 기록하도록 함으로써, 적은 메모리로 가상 머신(102)의 가상 스토리지(104)에 대한 성능을 향상시킬 수 있게 된다.
또한, 가상 머신(102)의 쓰기 동작은 인메모리(106a)에서 수행되도록 하고, 가상 머신(102)의 읽기 동작도 해당 데이터가 인메모리(106a)에 존재하는 경우 인메모리(106a)에서 수행되도록 함으로써, 가상 머신 시스템(100)에서 쓰기 동작 및 읽기 동작에 대한 성능을 향상시킬 수 있게 된다. 특히 쓰기 동작은 읽기 동작보다 많은 부하가 발생하는데, 쓰기 동작을 인메모리(106a)에서 수행되도록 하여 부하를 줄이면서 작업 속도를 높일 수 있게 된다.
본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 "모듈"은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아니다.
도 3은 본 발명의 일 실시예에 따른 가상 머신 시스템의 동작 방법을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
도 3을 참조하면, 가상 머신 시스템(100)은 가상 머신(102) 및 가상 스토리지(104)를 생성할 수 있다(S 101). 다음으로, 가상 스토리지(104)를 복수 개의 블록으로 구분하고 각 블록에 블록 ID를 부여할 수 있다(S 103).
다음으로, 가상 머신 시스템(100)은 인메모리(106a)에 가상 스토리지(104)의 용량에 따라 오버레이 영역을 할당할 수 있다(S 105). 일 실시예에서, 가상 머신 시스템(100)은 가상 스토리지(104)의 용량, 가상 머신(102)의 쓰기 동작 빈도, 및 쓰기 동작 시 데이터 사용량 중 하나 이상을 기초로 인메모리(106a)에 오버레이 영역을 할당할 수 있다.
다음으로, 가상 머신 시스템(100)은 가상 머신(102)의 쓰기 동작 신호에 따라 오버레이 영역에 쓰기 동작 신호에 포함된 블록 ID에 대응하는 블록을 생성하며, 생성한 블록에 데이터를 기록할 수 있다(S 107).
다음으로, 가상 머신 시스템(100)은 기 설정된 주기에 따라 오버레이 영역의 블록에 기록된 데이터를 가상 스토리지(104)의 해당 블록에 기록한 후 오버레이 영역의 블록을 삭제할 수 있다(S 109).
다음으로, 가상 머신 시스템(100)은 가상 머신(102)의 읽기 동작 신호에 따라 오버레이 영역에 읽기 동작 신호에 포함된 블록 ID에 대응하고 데이터가 기록된 블록이 존재하는지를 확인할 수 있다(S 111).
단계 S 111의 확인 결과, 데이터가 기록된 블록이 존재하는 경우, 가상 머신 시스템(100)은 오버레이 영역의 해당 블록에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다(S 113).
단계 S 113의 확인 결과, 데이터가 기록된 블록이 존재하지 않는 경우, 가상 머신 시스템(100)은 가상 스토리지(104)의 해당 블록에서 데이터를 읽어서 가상 머신(102)으로 전달할 수 있다(S 115).
도 4는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 가상 머신 시스템(100)일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10 : 컴퓨팅 환경
12 : 컴퓨팅 장치
14 : 프로세서
16 : 컴퓨터 판독 가능 저장 매체
18 : 통신 버스
20 : 프로그램
22 : 입출력 인터페이스
24 : 입출력 장치
26 : 네트워크 통신 인터페이스
100 : 가상 머신 시스템
102 : 가상 머신
104 : 가상 스토리지
106 : 인메모리 관리 모듈
106a : 인메모리

Claims (10)

  1. 가상 머신 시스템으로서,
    가상 머신;
    디스크 스토리지에 상기 가상 머신에 대응하여 생성되고 데이터를 저장하는 영역이 복수 개의 블록으로 구분되며, 각 블록에 블록 ID가 부여되는 가상 스토리지; 및
    상기 가상 머신 시스템이 동작되는 컴퓨팅 환경의 인메모리를 관리하고, 상기 가상 스토리지의 용량에 따라 상기 인메모리에 오버레이(overlay) 영역을 할당하는 인메모리 관리 모듈을 포함하고,
    상기 인메모리 관리 모듈은,
    상기 가상 머신의 쓰기 동작 신호를 수신하고, 상기 쓰기 동작 신호에 포함된 가상 스토리지의 블록 ID를 확인하여 상기 오버레이 영역에 상기 가상 스토리지의 블록 ID에 대응하는 블록을 생성하며, 상기 쓰기 동작 신호에 따른 데이터를 상기 가상 스토리지의 해당 블록에 기록하는 것이 아닌 상기 오버레이 영역의 해당 블록에 기록하며,
    상기 인메모리 관리 모듈은,
    이전에 생성되었던 가상 머신의 쓰기 동작 빈도, 쓰기 동작 시 데이터 사용량, 및 가상 스토리지 용량을 모니터링하고, 모니터링 된 상기 쓰기 동작 빈도, 상기 쓰기 동작 시 데이터 사용량, 및 상기 가상 스토리지 용량을 기계 학습 모델에 입력하여 상기 인메모리의 오버레이 영역의 용량을 예측하도록 학습하는, 가상 머신 시스템.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 인메모리 관리 모듈은,
    기 설정된 주기로 상기 오버레이 영역의 블록에 기록된 데이터를 상기 가상 스토리지의 해당 블록에 기록한 후 상기 오버레이 영역의 블록을 삭제하는, 가상 머신 시스템.
  4. 청구항 3에 있어서,
    상기 인메모리 관리 모듈은,
    상기 가상 머신의 읽기 동작 신호를 수신하고, 상기 읽기 동작 신호에 포함된 블록 ID를 확인하며, 상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하는지를 확인하는, 가상 머신 시스템.
  5. 청구항 4에 있어서,
    상기 인메모리 관리 모듈은,
    상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하는 경우, 상기 오버레이 영역의 해당 블록에서 데이터를 읽어서 상기 가상 머신으로 전달하고,
    상기 오버레이 영역에 상기 블록 ID에 대응하고 데이터가 기록된 블록이 존재하지 않는 경우, 상기 가상 스토리지의 상기 블록 ID에 대응하는 블록에서 데이터를 읽어서 상기 가상 머신으로 전달하는, 가상 머신 시스템.
  6. 청구항 5에 있어서,
    상기 인메모리 관리 모듈은,
    상기 오버레이 영역에서 각 블록과 그에 대응하는 상기 가상 스토리지의 블록을 매핑하여 관리하는, 가상 머신 시스템.
  7. 청구항 3에 있어서,
    상기 인메모리 관리 모듈은,
    상기 쓰기 동작 신호에 따라 상기 오버레이 영역에서 블록을 생성하여 데이터를 기록할 때, 상기 오버레이 영역에 할당된 잔여 용량이 기 설정된 임계 용량 미만인 경우, 상기 기 설정된 주기가 아니라 하더라도 상기 오버레이 영역의 블록에 기록된 데이터를 상기 가상 스토리지의 해당 블록에 기록한 후 상기 오버레이 영역의 블록을 삭제하는, 가상 머신 시스템.
  8. 청구항 7에 있어서,
    상기 인메모리 관리 모듈은,
    상기 쓰기 동작 신호에 대응하는 데이터 량에 기초하여 상기 오버레이 영역의 데이터가 기록된 블록들 중 상기 가상 스토리지에 기록한 후 삭제할 블록을 결정하는, 가상 머신 시스템.
  9. 삭제
  10. 하나 이상의 프로세서들, 및
    상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
    가상 머신을 생성하는 단계;
    디스크 스토리지에 상기 가상 머신에 대응하여 가상 스토리지를 생성하는 단계;
    상기 가상 스토리지를 복수 개의 블록으로 구분하고 각 블록에 블록 ID를 부여하는 단계;
    상기 가상 스토리지의 용량에 따라 인메모리에 오버레이(overlay) 영역을 할당하는 단계; 및
    상기 가상 머신의 쓰기 동작 신호를 수신하고, 상기 쓰기 동작 신호에 포함된 가상 스토리지의 블록 ID를 확인하여 상기 오버레이 영역에 상기 가상 스토리지의 블록 ID에 대응하는 블록을 생성하며, 상기 쓰기 동작 신호에 따른 데이터를 상기 가상 스토리지의 해당 블록에 기록하는 것이 아닌 상기 오버레이 영역의 해당 블록에 기록하는 단계를 포함하고,
    상기 오버레이 영역을 할당하는 단계는,
    이전에 생성되었던 가상 머신의 쓰기 동작 빈도, 쓰기 동작 시 데이터 사용량, 및 가상 스토리지 용량을 모니터링하는 단계; 및
    모니터링 된 상기 쓰기 동작 빈도, 상기 쓰기 동작 시 데이터 사용량, 및 상기 가상 스토리지 용량을 기계 학습 모델에 입력하여 상기 인메모리의 오버레이 영역의 용량을 예측하도록 학습하는 단계를 포함하는, 가상 머신 시스템의 동작 방법.
KR1020230007996A 2022-11-22 2023-01-19 인메모리를 이용한 가상 머신 시스템 및 그 동작 방법 KR102562160B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220157485 2022-11-22
KR20220157485 2022-11-22

Publications (1)

Publication Number Publication Date
KR102562160B1 true KR102562160B1 (ko) 2023-08-01

Family

ID=87561326

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230007996A KR102562160B1 (ko) 2022-11-22 2023-01-19 인메모리를 이용한 가상 머신 시스템 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102562160B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014178975A (ja) * 2013-03-15 2014-09-25 Nec Corp コンピュータ装置と方法とプログラム
KR101451781B1 (ko) 2013-04-05 2014-10-16 국방과학연구소 가상머신 환경에서 가상화 시스템의 장치 복제 시스템 및 그 방법
KR20200135715A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 처리 방법, 장치, 기기 및 매체

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014178975A (ja) * 2013-03-15 2014-09-25 Nec Corp コンピュータ装置と方法とプログラム
KR101451781B1 (ko) 2013-04-05 2014-10-16 국방과학연구소 가상머신 환경에서 가상화 시스템의 장치 복제 시스템 및 그 방법
KR20200135715A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 처리 방법, 장치, 기기 및 매체

Similar Documents

Publication Publication Date Title
US10114740B2 (en) Memory management techniques
JP5149912B2 (ja) 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用
US20170075614A1 (en) Memory system and host apparatus
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
CN109213696B (zh) 用于缓存管理的方法和设备
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
US20160306588A1 (en) Solid state disk and data moving method
JP2013509658A (ja) 将来の使用推量に基づく記憶メモリの割り当て
CN109582215B (zh) 硬盘操作命令的执行方法、硬盘及存储介质
CN111796765B (zh) 优化数据存储系统性能的方法
US10394819B2 (en) Controlling mirroring of tables based on access prediction
US10789170B2 (en) Storage management method, electronic device and computer readable medium
KR101478619B1 (ko) 가상화 기술을 이용한 데이터 입출력 방법 및 장치
KR102202107B1 (ko) 사용자 개별 서비스 환경을 위한 스토리지 장치 제어 방법 및 스토리지 컨트롤러
US9785374B2 (en) Storage device management in computing systems
WO2015001620A1 (ja) ストレージシステム、記憶制御方法、及び計算機システム
JP6311365B2 (ja) 記憶領域管理装置、記憶領域管理方法及び記憶領域管理プログラム
KR102562160B1 (ko) 인메모리를 이용한 가상 머신 시스템 및 그 동작 방법
CN115934002B (zh) 固态硬盘的访问方法、固态硬盘、存储系统及云服务器
US20220179588A1 (en) Data storage method and apparatus
KR102545480B1 (ko) 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
KR101619989B1 (ko) 메모리 관리 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US11822791B1 (en) Writing data to lower performance storage tiers of a multi-tier storage system
KR20190069134A (ko) 응용 프로그램간 파일 공유 장치 및 방법

Legal Events

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