KR101496325B1 - 가상 머신의 상태를 저장, 복원하는 방법 및 장치 - Google Patents

가상 머신의 상태를 저장, 복원하는 방법 및 장치 Download PDF

Info

Publication number
KR101496325B1
KR101496325B1 KR1020080004913A KR20080004913A KR101496325B1 KR 101496325 B1 KR101496325 B1 KR 101496325B1 KR 1020080004913 A KR1020080004913 A KR 1020080004913A KR 20080004913 A KR20080004913 A KR 20080004913A KR 101496325 B1 KR101496325 B1 KR 101496325B1
Authority
KR
South Korea
Prior art keywords
virtual machine
memory
state
page
storage device
Prior art date
Application number
KR1020080004913A
Other languages
English (en)
Other versions
KR20090079012A (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 KR1020080004913A priority Critical patent/KR101496325B1/ko
Priority to US12/129,122 priority patent/US8402200B2/en
Publication of KR20090079012A publication Critical patent/KR20090079012A/ko
Application granted granted Critical
Publication of KR101496325B1 publication Critical patent/KR101496325B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 가상 모니터 상의 가상 머신의 상태를 저장, 복원하는 방법 및 장치에 관한 것으로 본 발명에 따른 가상 머신 모니터 상의 제1 가상 머신이 소정의 저장 장치에 제2 가상 머신의 상태를 저장하는 방법은 저장 장치에 이미 저장되어 있는 제2 가상 머신의 상태와 제2 가상 머신의 현재 상태를 비교하여 상태에 변경이 발생했는지 판단하고, 판단 결과에 기초하여 선택적으로 제2 가상 머신의 상태를 소정의 저장 장치에 수시로 저장함으로써 가상 머신의 상태를 저장 또는 복원하는데 소모되는 시간을 최소화할 수 있다.
가상 머신, 모니터, 상태, 복원

Description

가상 머신의 상태를 저장, 복원하는 방법 및 장치{Method and apparatus for save/restore state of virtual machine}
본 발명은 가상 머신 모니터 상에서 구동하는 가상 머신의 상태를 저장/복원하는 방법 및 장치에 관한 것으로 보다 상세히는 가상 머신의 상태를 저장/복원하는데 걸리는 시간을 최소화하기 위한 상태 저장/복원 방법 및 장치에 관한 것이다.
범용 CPU(Central Processing Unit)에 기반한 하드웨어 플랫폼들은 본래 하나의 OS(operating system)를 운영하도록 설계되어 있다. 그러나, 하나의 OS를 운영하는 컴퓨터는 하드웨어의 최대 성능을 전부 사용하지 못하며, 최대 성능의 약 5~10% 정도만을 사용한다.
하드웨어 활용의 비효율성은 기업 서버의 경우 더 심각하다. 이러한, 하드웨어 활용의 비효율성 때문에 기업의 IT 비용은 상승하게 되고, 이를 해결하기 위해 하드웨어 자원을 복수의 OS들이 공유하여 사용할 수 있는 가상화 기술들이 꾸준히 개발되어 왔다.
하나의 하드웨어 플랫폼에서 복수의 동일한 실행 환경을 제공하기 위해 제안된 기술 중 하나가 가상 머신 모니터(virtual machine monitor)이다. 가상 머신 모니터는 하나의 하드웨어에 독립적으로 운영되는 복수의 가상 머신을 생성하여, 복수의 가상 머신이 하드웨어 자원을 공유할 수 있게 한다. 가상 머신은 각각의 OS에 운영되는 가상화된 시스템으로 가상 머신 모니터 상의 다른 가상 머신에 의해 영향을 받지 않는 독립적인 개체이다. 도 1a를 참조하여 상세히 설명한다.
도 1a 및 1b는 종래 기술에 따른 가상 머신 모니터 및 가상 머신들을 도시한다.
도 1a를 참조하면, 가상 머신 모니터(112)는 하드웨어 플랫폼 A(110)의 하드웨어 자원을 가상화함으로써 복수의 가상 머신들(114 및 116)이 하드웨어 플랫폼 A(110)의 자원을 공유할 수 있게 한다. 복수의 가상 머신들(114 및 116)은 서로 독립적인 객체로써 가상화된 하드웨어 자원을 이용해 독립적인 OS를 구동한다.
가상 머신들(114 및 116)에서 구동되는 OS들는 가상 머신 모니터(112)에 하드웨어 플랫폼 A(110)에 대한 액세스를 요청하고, 가상 머신 모니터는 이러한 가상 머신들(114 및 116)과 하드웨어 플랫폼 A(110)를 중개한다. 가상 머신 모니터를 구동하지 않는 시스템에서는 OS가 직접 하드웨어 플랫폼 A(110)에 액세스할 수 있으나, 가상 머신 모니터를 구동하는 시스템에서 가상 머신들(114 및 116)의 OS는 가상 머신 모니터를 통해서만 하드웨어 플랫폼 A(110)에 액세스할 수 있다.
도 1b는 하드웨어 플랫폼 A(110)에서 구동되고 있던 가상 머신(116)을 하드웨어 플랫폼 B(120)로 이동시키는 경우를 도시한다. 도 1a에 도시된 하드웨어 플랫폼 A(110)에서 구동되고 있던 제2 가상 머신(116)을 하드웨어 플랫폼 B(120)로 이동시키려면, 하드웨어 플랫폼 A(110)에서의 제2 가상 머신(116)의 상태를 저장한 다음, 하드웨어 플랫폼 B(120)에서 복원하여야 한다.
하드웨어 플랫폼 A(110)에서의 CPU 레지스터의 상태, 디바이스 레지스터의 상태 및 제2 가상 머신(116)이 가상 머신 모니터(112)로부터 할당받아 사용하던 시스템 메모리에 저장되어 있는 데이터 등이 저장, 복원되는 제2 가상 머신(116)의 상태에 포함될 수 있다.
제2 가상 머신(116)의 상태를 저장, 복원함에 있어서, 종래 기술은 하드웨어 플랫폼 A(110)에서의 제2 가상 머신(116)의 상태를 모두 소정의 저장 장치에 저장한 다음, 하드웨어 플랫폼 B(120)에서 상태를 모두 복원하였다.
따라서, 종래 기술에 따르면 CPU 레지스터의 상태, 디바이스 레지스터의 상태 및 시스템 메모리에 저장되어 있는 데이터 등을 모두 일괄적으로 저장하고, 복원하기 때문에 가상 머신의 상태를 저장, 복원하는데 너무 오랜 시간이 걸린다는 단점이 있었다. 또한, 가상 머신이 복원되는 하드웨어 플랫폼 B(120)의 메모리의 크기가 하드웨어 플랫폼 A(110)에 비해 작은 경우에는 가상 머신을 복원할 수 없는 단점이 있었다.
따라서, 종래 기술에 따른 단점을 극복하여 가상 머신을 다른 하드웨어로 이동할 때 발생하는 시간 지연을 최소화할 수 있는 가상 머신의 상태 저장/복원 방법 및 장치가 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 가상 머신의 이동할 때 발생하는 시간을 최소화하기 위해 가상 머신 모니터 상의 가상 머신의 상태를 보다 효율적으로 저장/복원할 수 있는 상태 저장/복원 방법 및 장치를 제공하는데 있고, 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 가상 머신 모니터 상의 제1 가상 머신이 소정의 저장 장치에 제2 가상 머신의 상태를 저장하는 방법은 상기 저장 장치에 이미 저장되어 있는 상기 제2 가상 머신의 상태와 상기 제2 가상 머신의 현재 상태를 비교하여 상태에 변경이 발생했는지 판단하는 단계; 및 상기 판단 결과에 기초하여 선택적으로 상기 제2 가상 머신의 상태를 소정의 저장 장치에 저장하는 단계를 포함한다.
본 발명에 따른 보다 바람직한 실시예에 따르면, 상기 제2 가상 머신의 상태는 상기 제2 가상 머신에 할당된 메모리의 데이터이고, 상기 판단하는 단계는 상기 저장 장치에 이미 저장되어 있는 상기 메모리의 페이지들을 현재 메모리의 페이지들과 비교하여 변경이 발생한 페이지가 있는지 판단하는 단계를 포함하며, 상기 저장하는 단계는 상기 변경이 발생한 페이지의 데이터만 상기 저장 장치에 저장하는 단계를 포함한다.
본 발명에 따른 보다 바람직한 실시예에 따르면, 상기 변경이 발생한 페이지에 저장되어 있는 데이터만 상기 저장 장치에 저장하는 단계는 상기 저장 장치에 이미 저장되어 있는 메모리 페이지의 데이터와 상기 변경이 발생한 페이지의 데이터 사이의 차이 값을 구하는 단계; 및 상기 차이 값을 상기 저장 장치에 저장하는 단계를 포함한다.
본 발명에 따른 보다 바람직한 실시예에 따르면, 상기 제2 가상 머신의 상태는 중앙 처리 장치(CPU) 레지스터의 상태 또는 상기 제2 가상 머신의 디바이스 레지스터의 상태 중 적어도 하나를 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 가상 머신 모니터가 소정의 저장 장치에 저장되어 있는 가상 머신의 상태를 복원하는 방법은 상기 가상 머신으로부터 소정의 메모리 페이지의 데이터를 액세스할 것을 요청받는 단계; 상기 소정의 메모리 페이지가 이미 복원되었는지 판단하는 단계; 및 상기 판단 결과에 따라 상기 메모리 페이지의 복원을 위한 메모리를 할당하고, 상기 할당된 메모리에 상기 요청받은 데이터를 저장하는 단계를 포함한다.
본 발명에 따른 보다 바람직한 실시예에 따르면, 상기 저장하는 단계는 상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 메모리 페이지의 복원을 위한 추가적인 메모리를 상기 제2 가상 머신에 할당하는 단계; 상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하는 단계; 및 상기 할당된 추가적인 메모리에 상기 수신한 데이터를 저장하는 단계를 포함한다.
본 발명에 따른 보다 바람직한 실시예에 따르면, 상기 저장하는 단계는 상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 가상 머신을 위해 할당된 메모리 중 가장 이전에 사용된(Least Recently Used) 메모리 페이지에 할당되었던 메모리를 상기 액세스가 요청된 메모리 페이지의 복원을 위해 할당하는 단계; 상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하는 단계; 및 상기 할당된 메모리에 상기 수신한 데이터를 저장하는 단계를 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 가상 머신 모니터 상의 제1 가상 머신이 소정의 저장 장치에 제2 가상 머신의 상태를 저장하는 장치는 상기 저장 장치에 이미 저장되어 있는 상기 제2 가상 머신의 상태와 상기 제2 가상 머신의 현재 상태를 비교하여 상태에 변경이 발생했는지 판단하는 제어부; 및 상기 판단 결과에 기초하여 선택적으로 상기 제2 가상 머신의 상태를 소정의 저장 장치에 저장하는 저장부를 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 가상 머신 모니터가 소정의 저장 장치에 저장되어 있는 가상 머신의 상태를 복원하는 장치는 상기 가상 머신으로부터 소정의 메모리 페이지의 데이터를 액세스할 것을 요청받고, 상기 소정의 메모리 페이지가 이미 복원되었는지 판단하여 상기 판단 결과에 따라 상기 메모리 페이지의 복원을 위한 메모리를 할당하는 제어부; 및 상기 할당된 메모리에 상기 요청받은 데이터를 저장하는 저장부를 포함한다.
상기 기술적 과제를 해결하기 위해, 본 발명은 상기된 상태 저장/복원 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한 다.
본 발명에 따르면, 과거에 저장했던 가상 머신의 상태와 가상 머신의 현재 상태 사이의 차이만을 수시로 저장할 수 있어, 가상 머신을 다른 하드웨어 플랫폼으로 이동할 때 발생할 수 있는 시간 지연을 최소화할 수 있다.
또한, 가상 머신의 상태를 복원함에 있어 가상 머신의 구동에 필요한 메모리 페이지만을 선택적으로 복원할 수 있어 시간 지연을 최소화할 수 있으며, 시스템 모메리가 부족한 하드웨어 플랫폼에서도 가상 머신의 상태를 복원할 수 있다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 가상 머신들 및 가상 머신 모니터를 도시한다.
도 2는 복수의 가상 머신들 즉, 제1 가상 머신(210) 및 제2 가상 머신(220)이 가상 머신 모니터(230)에 의해 하나의 하드웨어 A(260)의 자원을 공유하여 구동되고 있던 중에 제2 가상 머신(220)의 상태를 저장 장치(240)에 저장하는 경우에 대하여 도시한다.
가상 머신 모니터(230)는 제1 가상 머신(210)의 OS 및 제2 가상 머신(220)의 OS가 하드웨어 A(260)의 자원에 액세스할 수 있도록 중개한다. 가상 머신 모니터(230)는 제1 가상 머신(210) 및 제2 가상 머신(220)이 하드웨어 A(260)의 자원을 공유할 수 있도록 하드웨어 A(260)의 자원들을 가상화한다. 공유되는 하드웨어 자원에는 CPU, 시스템메모리(262) 등이 있을 수 있다.
제1 가상 머신(210)은 제2 가상 머신(220)의 상태를 저장 장치(240)에 저장하는 제어 도메인의 가상 머신이다. 소정의 저장/복원 어플리케이션을 실행하여 제2 가상 머신(220)의 상태를 저장 장치(240)에 저장한다. 제1 가상 머신(210)은 저장 장치(240)에 액세스할 수 있는 드라이버를 가지고 있어, 가상 머신 모니터(230)를 통해 저장 장치(240)에 액세스할 수 있다.
제2 가상 머신(220)은 소정의 어플리케이션을 실행하고 있는 게스트 도메인의 가상 머신이다. 제2 가상 머신(220)은 저장 장치(240) 드라이버를 가지고 있지 않으므로, 저장 장치(240)에 직접 액세스할 수 없으며, 제1 가상 머신(210)을 통해서만 저장 장치(240)에 액세스할 수 있다. 제2 가상 머신(220)은 프론트-앤드(front-end) 드라이버를 이용해 제1 가상 머신(210)에 액세스한 다음, 제1 가상 머신(210)의 저장 장치(240) 드라이버를 이용해 저장 장치(240)에 액세스한다. 제1 가상 머신(210)은 제2 가상 머신(220)의 프론트-앤드 드라이버에 대응하여 백-앤드(back-end) 드라이버를 가지고 있어, 제2 가상 머신(220)이 제1 가상 머신(210)에 액세스할 수 있게 한다.
(1) 상태의 저장
제1 가상 머신(220)이 제2 가상 머신(220)의 상태를 저장하는 방법을 도 3을 상세히 설명한다. 제1 가상 머신(220)의 상태 저장은 일정한 시간 간격을 두고 주 기적으로 수행될 수도 있고, 제1 가상 머신(220)의 사용자의 명시적인 명령이 있을 경우에 수행될 수도 있다. 또한, 저장 장치(240)에 액세스하기 위한 입/출력 장치(I/O device)가 대기(idle) 상태인 경우에 수행될 수도 있다.
도 3은 본 발명의 일 실시예에 따른 제1 가상 머신(220)을 도시한다. 도 3을 참조하면 본 발명에 따른 제1 가상 머신(220)은 제어부(310) 및 저장부(320)를 포함한다.
제어부(310)는 제2 가상 머신(220)의 현재 상태와 저장 장치(240)에 이미 저장되어 있는 제2 가상 머신(220)의 상태를 비교하여 상태에 변경이 발생하였는지 판단한다. 본 발명에 따른 상태 저장 방법은 가상 머신의 상태를 수시로 저장함으로써 가상 머신을 다른 하드웨어 플랫폼으로 이동할 때 소모되는 시간 지연을 최소화하는데 목적이 있다. 이를 위해 제어부(310)는 수시로 저장 장치(240)에 이미 저장되어 있는 제2 가상 머신(220)의 상태와 제2 가상 머신(220)의 현재 상태를 비교하여 상태에 변경이 발생하였는지 판단한다. 제어부(310)의 상태 비교는 일정한 시간 간격을 두고 주기적으로 수행될 수 있고, 가상 머신 모니터(230) 또는 저장 장치(240)가 대기(idle) 상태일 때에 수행될 수도 있다. 저장 되는 제2 가상 머신(220)의 상태에는 제2 가상 머신(220)이 사용하고 있는 CPU 레지스터의 상태, 디바이스 레지스터의 상태 및 시스템 메모리에 저장되어 있는 데이터 등이 있을 수 있다.
제2 가상 머신(220)의 상태 중 시스템 메모리(262)에 저장된 데이터를 예로 들어 설명한다. 가상 머신 모니터(230)는 시스템 메모리(262) 중 일부를 제2 가상 머신(220)에 할당하고, 제2 가상 머신(220)은 자신에게 할당된 메모리에 데이터를 저장하고, 저장된 데이터에 액세스한다. 제1 가상 머신(210)은 이러한 제2 가상 머신(220)에 할당된 메모리의 페이지들을 저장 장치(240)에 이미 저장되어 있는 메모리 페이지들과 비교하여 변경이 발생한 페이지가 있는지 판단한다.
제2 가상 머신(220)은 가상 머신 모니터(230)를 통해 자신에게 할당된 메모리에 액세스하므로, 가상 머신 모니터(230)는 제2 가상 머신(220)이 액세스하여 내용을 변경한 페이지들에 대한 정보를 가지고 있다. 따라서, 제1 가상 머신(210)은 이 정보를 가상 머신 모니터(230)로부터 수신하여 변경이 발생한 페이지가 있는지 판단한다.
제어부(310)가 저장 장치(240)에 이미 저장된 제2 가상 머신(220)의 상태와 제2 가상 머신(220)의 현재 상태를 비교할 때, 보다 빠른 비교를 가능하게 하기 위해 제2 가상 머신(220)의 상태를 시스템 메모리(262)에 저장하여 놓고 상태를 비교할 수도 있다. 다시 말해, 상태의 비교를 위해 액세스 속도가 느린 저장 장치(240)에 엑세스하는 것이 아니라 마지막으로 저장된 제2 가상 머신(220)의 상태를 시스템 메모리(262)에 저장하여 놓고, 이를 제2 가상 머신(220)의 현재 상태와 비교할 수도 있다. 이때, 제2 가상 머신(220)의 상태 중 일부만을 시스템 메모리(262)에 저장하고 이를 제2 가상 머신(220)의 현재 상태와 비교할 수도 있다.
전술한 메모리 페이지를 예로 들면, 마지막 상태 저장 이후 제2 가상 머신(220)에 할당된 메모리 페이지들에 변경이 발생하면, 변경 발생 이전의 메모리 페이지를 시스템 메모리(262)의 다른 부분에 임시로 저장하고, 다음 상태 저장 시 의 메모리 페이지와 비교할 수 있다.
저장부(320)는 제어부(310)에서의 판단 결과 변경이 있는 것으로 판단된 제2 가상 머신(220)의 상태만 저장 장치(240)에 저장한다. 저장 장치 드라이버를 이용해 저장 장치(240)에 액세스하여 변경된 상태를 저장 장치(240)에 저장한다.
전술한 메모리 페이지를 예로 들면, 변경이 발생한 메모리 페이지들만 저장 장치(240)에 저장한다. 제2 가상 머신(220)에 할당된 메모리에 현재 저장되어 있는 데이터와 저장 장치(240)에 이미 저장되어 있는 데이터가 동일한 메모리 페이지는 다시 저장 장치(240)에 저장하지 않는다.
또한, 저장부(320)는 제2 가상 머신(220)의 OS가 사용하지 않는 무효 페이지(invalid page)의 데이터는 저장 장치(240)에 저장하지 않는다. 가상 머신 모니터(230)가 제2 가상 머신(220)에 할당한 메모리 중 일부의 페이지는 제2 가상 머신(220)이 실제로 사용하지 않는다. 가상 머신 모니터(230)가 제2 가상 머신(220)의 OS가 사용하는 페이지 테이블(page table)을 검사함으로서 무효 페이지들을 알 수 있으며, 제1 가상 머신(210)은 이를 참조하여 무효 페이지는 저장 장치(240)에 저장하지 않는다.
요컨데, 상태 저장 시에 제1 가상 머신(210)이 저장 장치(240)에 저장하는 메모리 페이지는 제2 가상 머신(220)이 실제로 사용하는 메모리 페이지들 중에서 이전 상태 저장 이후 변경이 발생한 메모리 페이지이다.
제1 가상 머신(210)이 변경이 발생한 메모리 페이지들을 저장할 때 저장 장치(240)에 저장되어 있는 메모리 페이지를 모두 삭제하고 새로이 저장하는 것이 아 니라, 저장 장치(240)에 이미 저장되어 있는 메모리 페이지와 현재 메모리 페이지 사이의 차이 값만을 저장하는 것이 바람직하다. 도 4를 참조하여 상세히 설명한다.
도 4는 본 발명의 일 실시예에 따른 메모리 페이지들의 차이 값을 구하는 방법을 도시한다.
도 4를 참조하면, 저장부(320)는 저장 장치(240)에 이미 저장되어 있는 메모리 페이지(410)와 현재 메모리 페이지(420)를 비트 단위로 XOR(eXclusive OR)하여 메모리 페이지들 사이의 차이 값(delta)(430)을 생성한다. 현재 메모리 페이지(420)는 제2 가상 머신(220)에 할당된 메모리 페이지들 중에서 판단부(410)에서 변경이 발생한 것으로 판단된 메모리 페이지이다.
저장 장치(240)에 이미 저장되어 있는 메모리 페이지(410)를 저장 장치(240)에서 삭제하지 않고, 생성된 차이 값(430)을 추가로 저장 장치(240)에 저장한다. 바람직하게는 생성된 차이 값을 소정의 알고리즘을 이용해 압축하여 저장 장치(240)에 저장한다.
차이 값(430)이 저장한 후 다음 번 상태 저장에서 메모리 페이지를 저장하고자 할 때에는 이미 저장되어 있는 메모리 페이지(410)에 차이 값을 반영하여 현재 메모리 페이지(420)를 복원하고, 복원된 메모리 페이지(420)와 저장하려는 메모리 페이지의 차이 값을 다시 구하여 그 차이 값을 추가로 저장 장치(240)에 저장한다. 도 5를 참조하여 상세히 설명한다.
도 5는 본 발명의 일 실시예에 따른 메모리 페이지 저장 방법을 도시한다.
저장 장치(240)에 저장되는 각각의 메모리 페이지들(510 및 520)은 최초 상태 저장 시에 저장된 메모리 페이지와 이후 상태 저장 시에 저장된 차이 값들로 구성된다. 메모리 페이지#1, #2, #3, ... 의 데이터를 저장 장치(240)에 저장하는 경우를 예로 들어 설명한다.
최초 상태 저장 시의 메모리 페이지#1(510)는 그대로 저장 장치(240)에 저장된다. 두 번째 상태 저장 시에는 최초 상태 저장 시에 저장된 메모리 페이지#1(510)과 두 번째 상태 저장 시의 메모리 페이지#1의 차이 값인 delta#10(512)을 저장한다.
세 번째 상태 저장 시에는 우선 최초 저장된 메모리 페이지#1(510)에 첫 번째 차이 값인 delta#10(512)을 반영하여 두 번째 상태 저장 시의 메모리 페이지#1을 복원한다. 그런 다음 두 번째 상태 저장 시의 메모리 페이지#1과 세 번째 상태 저장 시의 메모리 페이지#1의 차이 값인 delta#11(514)을 저장한다.
메모리 페이지 #2도 마찬가지 방법으로 차이 값의 저장을 반복한다. 저장부(320)는 제어부(310)가 마지막 상태 저장 이후 변경이 발생한 것으로 판단한 메모리 페이지들에 대해서만 개별적으로 차이 값을 저장한다.
다시 도 3을 참조하면, 저장부(320)가 상태를 저장할 때 특정 시간에서의 제2 가상 머신(220)의 상태를 정확하게 저장하기 위해 제2 가상 머신(220)의 가상 머신의 정지를 요청하고, 정지된 가상 머신의 현재 상태를 저장 장치(240)에 저장할 수 있다. 이와 같은 저장 방식을 스톱-앤-고(stop-and-go) 방식이라고 하는데 이러한 스톱-앤-고 방식은 제2 가상 머신(220)의 동작에 제1 가상 머신(210)이 영향 을 주게 되어 바람직하지 않다. 특히 제2 가상 머신(220)이 실시간으로 처리해야 하는 프로세스를 실행 중인 경우에 스톱-앤-고 방식은 바람직하지 않다.
따라서, 저장부(320)가 상태를 저장할 때, 가상 머신 모니터(230)는 제2 가상 머신(220)의 현재 상태를 임시로 시스템 메모리의 다른 부분에 복사한다. 제2 가상 머신(220)은 임시로 복사된 현재 상태에 기초하여 실행 중인 프로세스를 계속하여 실행한다. 제2 가상 머신(220)가 프로세스를 계속 실행하던 중 저장부(320)의 상태 저장이 모두 끝나면, 임시로 복사된 현재 상태를 삭제한다.
전술한, 메모리 페이지를 예로 들어 설명한다. 제2 가상 머신(220)이 메모리 페이지#1에 액세스하며, 프로세스를 실행하던 도중에 저장부(320)가 메모리 페이지#1을 저장하는 경우를 예로 든다.
가상 머신 모니터(230)는 제2 가상 머신(220)이 액세스하고 있는 메모리 페이지#1을 임시로 복사하여 그림자 페이지 카피(shadow page copy)를 생성한다. 제2 가상 머신(220)은 그림자 페이지 카피를 이용해 계속해서 프로세스를 실행하고, 제1 가상 머신(220)의 상태 저장이 모두 끝나면, 그림자 페이지 카피를 본래의 메모리 페이지#1에 복사하고, 그림자 페이지 카피를 삭제한다.
(2) 상태의 복원
가상 머신 모니터가 소정의 저장 장치에 저장되어 있는 가상 머신의 상태를 복원하는 방법을 도 6을 참조하여 상세히 설명한다. 본 발명에 따른 상태 복원 방법은 가상 머신의 상태를 복원함에 있어 가상 머신의 상태를 한꺼번에 복원하는 것 이 아니라, 복원 과정의 각 단계에서 필요한 상태만을 저장 장치에서 복원하여 상태 복원에 이용한다. 도 6을 참조하여 상세히 설명한다.
도 6은 본 발명의 또 다른 실시예에 따른 가상 머신들 및 가상 머신 모니터를 도시한다.
도 6을 참조하면, 제어 도메인의 가상 머신인 제1 가상 머신(610)은 하드웨어 B(650)에서 게스트 도메인의 가상 머신인 제2 가상 머신(620)을 복원하는 프로세스를 호출한다. 제1 가상 머신(610)에서 상태 저장/복원 어플리케이션이 저장 장치(410)에 저장된 제2 가상 머신(620)의 상태를 복원하는 프로세스를 호출한다. 제1 가상 머신(610)은 저장 장치(640)에 액세스할 수 있는 저장 장치 드라이버를 가지고 있는 디바이스로써 가상 머신 모니터(630)를 통해 저장 장치(640)에 액세스할 수 있다.
제1 가상 머신(610)의 호출에 따라 가상 머신 모니터(630)는 제1 가상 머신(610)의 저장 장치 드라이버를 이용해 저장 장치(640)에 액세스하여 제2 가상 머신(620)의 상태를 복원한다.
제2 가상 머신(620)에 할당된 메모리의 데이터를 복원하는 경우를 예로 들어 설명한다. 제2 가상 머신(620)의 일반적인 상태 즉, 제2 가상 머신(620)이 사용하고 있던 CPU 레지스터, 디바이스 레지스터 등이 복원된 상태에서 제2 가상 머신(620)에 할당된 메모리의 데이터를 복원하는 경우를 예로 들어 설명한다.
제어부(632)는 제2 가상 머신(620)으로부터 소정의 메모리 페이지의 데이터를 액세스할 것을 요청받는다. 액세스를 요청받은 제어부(632)는 요청된 메모리 페이지가 이미 복원되었는지 판단한다.
이미 복원이 판단된다면, 다시 복원할 필요가 없다. 그러나, 아직 복원이 되지 않은 것으로 판단되면, 제어부(632)는 액세스가 요청된 메모리 페이지를 저장하기 위한 추가적인 메모리를 제2 가상 머신(620)에 할당하고 할당된 메모리에 요청된 메모리 페이지의 데이터를 저장한다. 가상 머신 모니터(630)는 제2 가상 머신(620)의 시스템 메모리(562) 액세스를 중개하기 위해 수도 물리 주소(pseudo physical address)와 머신 주소(machine address)의 대응 관계를 나타내는 그림자 페이지 테이블(shadow page table)을 가지고 있다. 따라서, 가상 머신 모니터(630) 상에서 그림 페이지 테이블을 수정함으로써 제2 가상 머신(620)을 위해 추가적인 메모리를 할당할 수 있다. 제2 가상 머신(620)이 자신에게 할당된 메모리를 액세스할 때 사용하는 수도 물리 주소와 실제 시스템 메모리(652)의 주소인 머신 주소 사이의 일대일 대응 관계를 나타내는 그림자 페이지 테이블을 수정함으로써 추가적인 메모리를 할당할 수 있다.
본 발명에 따른 상태 복원 방법에 따르면, 제2 가상 머신(620)의 상태 특히, 시스템 메모리(652) 중 제2 가상 머신(620)에 할당된 메모리에 저장된 데이터는 복원 과정에서 한꺼번에 복원되지 않고, 복원 과정의 각 단계에서 필요한 메모리 페이지만 복원된다. 제2 가상 머신(620)이 액세스를 요청한 메모리 페이지만 저장 장치(640)에서 읽어와 제2 가상 머신(620)에 할당된 메모리에 저장함으로써 복원 과정에서 발생하는 시간 지연을 최소화한다.
제2 가상 머신(620)이 액세스를 요청한 데이터가 시스템 메모리(652)에 없으 면, 제2 가상 머신(620)에 할당된 메모리를 관리하는 메모리 관리 장치(Memory Management Unit)가 페이지 폴트가 발생하였음을 가상 머신 모니터(630)에 알린다. 페이지 폴트를 수신한 가상 머신 모니터(630)는 제1 가상 머신(620)의 저장 장치 드라이버를 이용해 저장 장치(640)에 액세스하여 액세스가 요청된 데이터를 시스템 메모리(652)에 저장한다.
제어부(632)가 액세스가 요청된 메모리 페이지 복원을 위한 메모리를 할당하는 과정에서 시스템 메모리(652)의 메모리가 부족한 경우가 있을 수 있다. 이러한 경우는 가상 머신의 상태를 저장한 하드웨어의 자원과 가상 머신의 상태를 복원하는 하드웨어의 자원 사이에 차이가 있어 발생하는 경우로써, 가상 머신의 상태를 복원하는 하드웨어의 환경이 가상 머신의 상태를 저장하는 하드웨어의 환경에 비해 열악한 경우 발생할 수 있다.
제2 가상 머신(620)의 상태로써 저장 장치(640)에 저장되어 있는 메모리의 용량이 시스템 메모리(652) 중 제2 가상 머신(620)을 위해 할당할 수 있는 메모리의 용량을 넘는 경우가 이러한 경우이다. 종래 기술에 따르면, 저장 장치(640)에 저장된 제2 가상 머신(620)의 상태를 복원함에 있어, 제2 가상 머신(620)이 상태 저장 전에 하드웨어에서 사용했던 메모리를 한꺼번에 복원하기 때문에 하드웨어 B(650)의 시스템 메모리(652) 용량이 부족하면 제2 가상 머신(620)의 상태를 복원할 수 없었다.
그러나 본원 발명에 따르면, 가상 머신 모니터(630)는 제2 가상 머신(620)의 복원 과정에서 필요한 메모리 페이지 다시 말해, 제2 가상 머신(620)이 액세스를 요청한 메모리 페이지만 복원하기 때문에 하드웨어 B(650)의 시스템 메모리(652)가 부족하여도 제2 가상 머신(620)의 상태를 복원할 수 있다.
또한, 제2 가상 머신(620)에 할당된 시스템 메모리(652)에 저장된 메모리 페이지들 중 가장 이전에 사용된(Least Recently Used) 메모리 페이지를 삭제하여 메모리를 확보하고, 확보된 메모리를 제2 가상 머신(620)이 액세스를 요청한 메모리 페이지를 위해 할당하여 부족한 하드웨어 자원에서 제2 가상 머신(620)을 구동할 수도 있다.
저장부(634)는 제어부(632)가 할당한 메모리에 제2 가상 머신(620)에 액세스를 요청한 데이터를 저장한다. 메모리 페이지의 데이터가 도 5에 도시된 바와 같이 최초 저장된 메모리 페이지 및 두 번째 이후 저장된 차이 값들로 구성된 경우에는 최초 저장된 메모리 페이지에 차이 값들을 순서대로 반영하여 시스템 메모리(652)에 저장할 메모리 페이지를 생성하고, 생성된 메모리 페이지를 제어부(632)가 할당한 메모리에 저장한다.
예를 들어, 최초 저장된 메모리 페이지#1(510)에 첫 번째 차이 값인 delta#10(512)을 반영하고, 반영한 결과 생성된 메모리 페이지 #1에 두 번째 차이 값인 delta#11(514)을 반영하여 최종적으로 메모리에 저장할 메모리 페이지를 생성한다.
도 7은 본 발명의 일 실시예에 따른 상태 저장 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 단계 710에서 제1 가상 머신은 소정의 저장 장치에 이미 저장되어 있는 제2 가상 머신의 상태와 제2 가상 머신의 현재 상태를 비교한다. 제1 가상 머신이 과거에 저장한 제2 가상 머신의 상태와 현재 상태를 비교한다. 여기서 제1 가상 머신 및 제2 가상 머신은 이용해 하나의 하드웨어 플랫폼에서 구동되고 있는 가상 머신 모니터 상의 가상 머신들로써, 제1 가상 머신은 제2 가상 머신의 상태를 저장/복원하기 위한 제어 도메인의 가상 머신이고, 제2 가상 머신은 소정의 어플리케이션을 실행하고 있는 게스트 도메인의 가상 머신이다. 여기서 저장되는 제2 가상 머신의 상태에는 CPU 레지스터, 디바이스 레지스터 또는 제2 가상 머신에 할당된 메모리에 저장되어 있는 데이터가 포함될 수 있다.
본 발명에 따른 상태 저장 방법은 수시로 가상 머신의 상태를 저장함으로써, 가상 머신을 다른 하드웨어 플랫폼으로 이동시킬 때에 가상 머신의 상태를 저장하는데 소모되는 시간을 최소화한다. 이를 위해 단계 710에서 제1 가상 머신은 저장 장치에 이미 저장되어 있는 제2 가상 머신의 상태와 제2 가상 머신의 현재 상태를 비교한다.
제2 가상 머신의 상태로서 제2 가상 머신에 할당되어 있는 메모리의 데이터를 저장하는 경우, 제1 가상 머신은 제2 가상 머신에 할당된 현재 메모리의 페이지들을 저장 장치에 이미 저장되어 있는 메모리 페이지들과 비교한다.
단계 720에서 제1 가상 머신은 단계 710의 비교에 기초하여 제2 가상 머신의 상태에 변경이 발생하였는지 판단한다.
전술한 메모리 페이지를 예로 들면, 제2 가상 머신은 가상 머신 모니터를 통해 자신에게 할당된 메모리에 액세스하므로, 가상 머신 모니터는 제2 가상 머신이 액세스하여 내용을 변경한 페이지들에 대한 정보를 가지고 있다. 따라서, 제1 가상 머신은 이 정보를 가상 머신 모니터로부터 수신하여 변경이 발생한 페이지가 있는지 판단한다.
단계 730에서 제1 가상 머신은 제2 가상 머신의 상태를 저장 장치에 저장한다. 단계 720에서 제2 가상 머신의 상태에 변경이 발생한 것으로 판단되면, 단계 730에서 제1 가상 머신은 제2 가상 머신의 상태를 저장한다. 반면에, 변경이 발생하지 않은 것으로 판단되면, 상태를 저장하지 않는다.
제2 가상 머신의 상태를 모두 저장하는 것이 아니라, 변경이 발생한 상태만 다시 저장한다. 전술한 메모리 페이지를 예로 들면, 최후 상태 저장 이후에 변경이 발생한 메모리 페이지만 저장 장치에 다시 저장한다. 이때 최후 상태 저장 시에 저장된 메모리 페이지와 변경이 발생한 현재 메모리 페이지의 차이 값만을 반복해서 저장할 수 있음은 전술하였다. 또한, 제2 가상 머신에 할당되어 있는 메모리 중에서 제2 가상 머신이 실제로 사용하지 않는 메모리 페이지의 데이터는 저장되지 않는다.
도 8은 본 발명의 일 실시예에 따른 상태 복원 방법을 설명하기 위한 흐름도이다. 도 8은 CPU 레지스터, 디바이스 레지스터 등의 글로벌 상태(global state)가 복원된 상태에서 가상 머신에 할당된 메모리의 데이터를 복원하는 경우를 예로 들어 설명한다.
도 8을 참조하면, 단계 810에서 가상 머신 모니터는 가상 머신으로부터 소정의 메모리 페이지에 액세스할 것을 요청받는다.
단계 820에서 가상 머신 모니터는 단계 810에서 액세스가 요청된 메모리 페이지가 이미 복원되었는지 판단한다. 본 발명에 따르면, 가상 머신 모니터는 가상 머신에 할당된 메모리 페이지가 한꺼번에 복원하지 않고, 가상 머신이 소정의 프로세스를 실행하던 중에 필요한 메모리 페이지만 복원한다. 따라서, 가상 머신 모니터는 액세스가 요청된 메모리 페이지가 이미 복원되어 가상 머신에 할당된 메모리에 저장되어 있는지 판단한다.
액세스가 요청된 메모리 페이지가 아직 복원되지 않은 경우에는 가상 머신에 할당된 메모리를 관리하는 메모리 관리 장치에서 페이지 폴트를 발생시킨다. 따라서, 가상 머신 모니터가 메모리 관리 장치로부터 페이지 폴트를 수신한 경우가 액세스를 요청받은 메모리가 아직 복원되지 않은 경우이다.
단계 820에서 액세스가 요청된 메모리 페이지가 아직 복원되지 않은 것으로 판단되면, 단계 830에서 가상 머신 모니터는 메모리 페이지의 복원을 위해 메모리를 할당한다. 액세스가 요청된 메모리 페이지를 저장할 메모리를 추가적으로 할당할 수 있다. 또한, 가장 이전에 사용된(Least Recently Used) 메모리 페이지를 메모리에서 삭제하여, 메모리를 확보하고, 확보된 메모리를 액세스가 요청된 메모리 페이지를 위해 할당한다.
수도 물리 주소(pseudo physical address)와 머신 주소(machine address)의 대응 관계를 나타내는 그림자 페이지 테이블(shadow page table)을 가상 머신 모니터가 관리하고 있으므로, 이를 수정함으로써 액세스가 요청된 메모리 페이지의 복원을 위한 메모리를 할당할 수 있다.
단계 840에서 가상 머신 모니터는 단계 830에서 할당된 메모리에 액세스가 요청된 메모리 페이지의 데이터를 저장한다. 저장 장치로부터 액세스가 요청된 메모리 페이지의 데이터를 읽어와 단계 830에서 할당된 메모리에 저장한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다. 또한, 본 발명에 따른 시스템은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
도 1a 및 1b는 종래 기술에 따른 가상 머신 모니터 및 가상 머신들을 도시한다.
도 2는 본 발명의 일 실시예에 따른 가상 머신들 및 가상 머신 모니터를 도시한다.
도 3은 본 발명의 일 실시예에 따른 제어 도메인의 가상 머신을 도시한다.
도 4는 본 발명의 일 실시예에 따른 메모리 페이지들의 차이 값을 구하는 방법을 도시한다.
도 5는 본 발명의 일 실시예에 따른 메모리 페이지 저장 방법을 도시한다.
도 6은 본 발명의 또 다른 실시예에 따른 가상 머신들 및 가상 머신 모니터를 도시한다.
도 7은 본 발명의 일 실시예에 따른 상태 저장 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 상태 복원 방법을 설명하기 위한 흐름도이다.

Claims (21)

  1. 가상 머신 모니터 상의 제1 가상 머신이 소정의 저장 장치에 제2 가상 머신의 상태를 저장하는 방법에 있어서,
    상기 저장 장치에 이미 저장되어 있는 상기 제2 가상 머신의 상태와 상기 제2 가상 머신의 현재 상태를 비교하여 상태에 변경이 발생했는지 판단하는 단계; 및
    상기 판단 결과, 변경이 발생한 것으로 판단된 상기 제2 가상 머신의 상태를 소정의 저장 장치에 저장하는 단계를 포함하고,
    상기 제2 가상 머신의 상태는 상기 제2 가상 머신에 할당된 메모리의 데이터를 포함하며,
    상기 판단하는 단계는 상기 저장 장치에 이미 저장되어 있는 상기 메모리의 페이지들을 현재 메모리의 페이지들과 비교하여 변경이 발생한 페이지가 있는지 판단하는 단계를 포함하고,
    상기 저장하는 단계는 상기 변경이 발생한 페이지의 데이터만 상기 저장 장치에 저장하는 단계를 포함하는 것을 특징으로 하는 상태 저장 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서, 상기 변경이 발생한 페이지에 저장되어 있는 데이터만 상기 저장 장치에 저장하는 단계는
    상기 저장 장치에 이미 저장되어 있는 메모리 페이지의 데이터와 상기 변경이 발생한 페이지의 데이터 사이의 차이 값을 구하는 단계; 및
    상기 차이 값을 상기 저장 장치에 저장하는 단계를 포함하는 것을 특징으로 하는 상태 저장 방법.
  5. 제 1 항에 있어서, 상기 저장하는 단계는
    상기 제2 가상 머신에 할당된 메모리의 페이지들 중 상기 제2 가상 머신이 사용하지 않는 페이지를 제외한 나머지 페이지의 데이터를 저장하는 것을 특징으로 하는 상태 저장 방법.
  6. 제 1 항에 있어서, 상기 제2 가상 머신의 상태는
    중앙 처리 장치(CPU) 레지스터 또는 상기 제2 가상 머신의 디바이스 레지스터의 상태 중 적어도 하나를 포함하는 것을 특징으로 하는 상태 저장 방법.
  7. 가상 머신 모니터가 소정의 저장 장치에 저장되어 있는 가상 머신의 상태를 복원하는 방법에 있어서,
    상기 가상 머신으로부터 소정의 메모리 페이지의 데이터를 액세스할 것을 요청받는 단계;
    상기 소정의 메모리 페이지가 이미 복원되었는지 판단하는 단계; 및
    상기 판단 결과 상기 소정의 메모리 페이지가 이미 복원되지 않았다면, 상기 메모리 페이지의 복원을 위한 메모리를 할당하고, 상기 할당된 메모리에 상기 요청받은 데이터를 저장하여 상기 소정의 메모리 페이지를 복원하는 단계를 포함하는 것을 특징으로 하는 상태 복원 방법.
  8. 제 7 항에 있어서, 상기 저장하는 단계는
    상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 메모리 페이지의 복원을 위한 추가적인 메모리를 상기 가상 머신에 할당하는 단계;
    상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하는 단계; 및
    상기 할당된 추가적인 메모리에 상기 수신한 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 상태 복원 방법.
  9. 제 7 항에 있어서, 상기 저장하는 단계는
    상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 가상 머신을 위해 할당된 메모리 중 가장 이전에 사용된(Least Recently Used) 메모리 페이지에 할당되었던 메모리를 상기 액세스가 요청된 메모리 페이지의 복원을 위해 할당하는 단계;
    상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하는 단계; 및
    상기 할당된 메모리에 상기 수신한 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 상태 복원 방법.
  10. 제 7 항에 있어서, 상기 판단하는 단계는
    상기 가상 머신을 위해 할당된 메모리를 관리하는 메모리 관리 장치(Memory Management Unit)로부터 페이지 폴트(page fault)를 수신하였는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 상태 복원 방법.
  11. 가상 머신 모니터 상의 제1 가상 머신이 소정의 저장 장치에 제2 가상 머신의 상태를 저장하는 장치에 있어서,
    상기 저장 장치에 이미 저장되어 있는 상기 제2 가상 머신의 상태와 상기 제2 가상 머신의 현재 상태를 비교하여 상태에 변경이 발생했는지 판단하는 제어부; 및
    상기 판단 결과, 변경이 발생한 것으로 판단된 상기 제2 가상 머신의 상태를 소정의 저장 장치에 저장하는 저장부를 포함하고,
    상기 제2 가상 머신의 상태는 상기 제2 가상 머신에 할당된 메모리의 데이터를 포함하며,
    상기 제어부는 상기 저장 장치에 이미 저장되어 있는 상기 메모리의 페이지들을 현재 메모리의 페이지들과 비교하여 변경이 발생한 페이지가 있는지 판단하고,
    상기 저장부는 상기 변경이 발생한 페이지의 데이터만 상기 저장 장치에 저장하는 것을 특징으로 하는 상태 저장 장치.
  12. 삭제
  13. 삭제
  14. 제 11 항에 있어서, 상기 저장부는
    상기 저장 장치에 이미 저장되어 있는 메모리 페이지의 데이터와 상기 변경이 발생한 페이지의 데이터 사이의 차이 값을 구하고, 상기 차이 값을 상기 저장 장치에 저장하는 것을 특징으로 하는 상태 저장 장치.
  15. 제 11 항에 있어서, 상기 저장부는
    상기 제2 가상 머신에 할당된 메모리 중 상기 제2 가상 머신이 사용하지 않는 페이지를 제외한 나머지 페이지의 데이터를 저장하는 것을 특징으로 하는 상태 저장 장치.
  16. 제 11 항에 있어서, 상기 제2 가상 머신의 상태는
    중앙 처리 장치(CPU) 레지스터 또는 상기 제2 가상 머신의 디바이스 레지스터의 상태 중 적어도 하나를 포함하는 것을 특징으로 하는 상태 저장 장치.
  17. 가상 머신 모니터가 소정의 저장 장치에 저장되어 있는 가상 머신의 상태를 복원하는 장치에 있어서,
    상기 가상 머신으로부터 소정의 메모리 페이지의 데이터를 액세스할 것을 요청받고, 상기 소정의 메모리 페이지가 이미 복원되었는지 판단하여 상기 판단 결과 상기 소정의 메모리 페이지가 이미 복원되지 않았다면, 상기 메모리 페이지의 복원을 위한 메모리를 할당하는 제어부; 및
    상기 할당된 메모리에 상기 요청받은 데이터를 저장하여 상기 소정의 메모리 페이지를 복원하는 저장부를 포함하는 것을 특징으로 하는 상태 복원 장치.
  18. 제 17 항에 있어서,
    상기 제어부는
    상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 메모리 페이지의 복원을 위한 추가적인 메모리를 상기 가상 머신에 할당하는 것을 특징으로 하고,
    상기 저장부는
    상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하고, 상기 할당된 추가적인 메모리에 상기 수신한 데이터를 저장하는 것을 특징하는 상태 복원 장치.
  19. 제 17 항에 있어서,
    상기 제어부는
    상기 판단 결과 상기 액세스가 요청된 메모리 페이지가 이미 복원되지 않았다면, 상기 가상 머신을 위해 할당된 메모리 중 가장 이전에 사용된(Least Recently Used) 메모리 페이지에 할당되었던 메모리를 상기 액세스가 요청된 메모리 페이지의 복원을 위해 할당하는 것을 특징으로 하고,
    상기 저장부는
    상기 저장 장치로부터 상기 메모리 페이지의 데이터를 수신하고, 상기 할당된 메모리에 상기 수신한 데이터를 저장하는 것을 특징으로 하는 상태 복원 장치.
  20. 제 17 항에 있어서, 상기 제어부는
    상기 가상 머신을 위해 할당된 메모리를 관리하는 메모리 관리 장치(Memory Management Unit)로부터 페이지 폴트(page fault)를 수신하였는지 여부에 따라 상기 메모리 페이지가 이미 복원되었는지 판단하는 것을 특징으로 하는 상태 복원 장치.
  21. 제 1 항 및 제 4 항 내지 제 10 항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020080004913A 2008-01-16 2008-01-16 가상 머신의 상태를 저장, 복원하는 방법 및 장치 KR101496325B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080004913A KR101496325B1 (ko) 2008-01-16 2008-01-16 가상 머신의 상태를 저장, 복원하는 방법 및 장치
US12/129,122 US8402200B2 (en) 2008-01-16 2008-05-29 Method and apparatus for storing and restoring state of virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080004913A KR101496325B1 (ko) 2008-01-16 2008-01-16 가상 머신의 상태를 저장, 복원하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20090079012A KR20090079012A (ko) 2009-07-21
KR101496325B1 true KR101496325B1 (ko) 2015-03-04

Family

ID=40851679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080004913A KR101496325B1 (ko) 2008-01-16 2008-01-16 가상 머신의 상태를 저장, 복원하는 방법 및 장치

Country Status (2)

Country Link
US (1) US8402200B2 (ko)
KR (1) KR101496325B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300307A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation Protection and security provisioning using on-the-fly virtualization
US20090319740A1 (en) * 2008-06-18 2009-12-24 Fujitsu Limited Virtual computer system, information processing device providing virtual computer system, and program thereof
KR20110106716A (ko) * 2010-03-23 2011-09-29 삼성전자주식회사 프로그램 컴파일러, 설치 장치, 및 설치 방법
JP2011198299A (ja) * 2010-03-23 2011-10-06 Fujitsu Ltd プログラム、コンピュータ、通信装置および通信制御システム
TW201201102A (en) * 2010-06-18 2012-01-01 Inst Information Industry Resource adjustment methods and systems for virtual machines, and computer program products thereof
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
KR101731422B1 (ko) 2010-10-04 2017-04-28 삼성전자주식회사 가상화 환경에서의 장애 복구 장치 및 방법
KR101694284B1 (ko) * 2010-12-21 2017-01-10 한국전자통신연구원 페이지 테이블 동기화 장치 및 그 방법
US9032400B1 (en) * 2012-10-25 2015-05-12 Amazon Technologies, Inc. Opportunistic initiation of potentially invasive actions
US9015834B2 (en) * 2013-03-15 2015-04-21 Cisco Technology, Inc. Mitigating just-in-time spraying attacks in a network environment
US9529680B2 (en) * 2014-06-17 2016-12-27 Verizon Patent And Licensing Inc. Virtual resource-based backup
US10671545B2 (en) 2014-06-28 2020-06-02 Vmware, Inc. Asynchronous encryption and decryption of virtual machine memory for live migration
US9552217B2 (en) 2014-06-28 2017-01-24 Vmware, Inc. Using active/active asynchronous replicated storage for live migration
US9766930B2 (en) 2014-06-28 2017-09-19 Vmware, Inc. Using active/passive asynchronous replicated storage for live migration
US9672120B2 (en) 2014-06-28 2017-06-06 Vmware, Inc. Maintaining consistency using reverse replication during live migration
US9760443B2 (en) 2014-06-28 2017-09-12 Vmware, Inc. Using a recovery snapshot during live migration
US9898320B2 (en) 2014-06-28 2018-02-20 Vmware, Inc. Using a delta query to seed live migration
CN105653345A (zh) * 2014-10-17 2016-06-08 伊姆西公司 用于支持对数据的非易失性随机访问的方法和设备
US9430407B2 (en) * 2014-10-31 2016-08-30 Qualcomm Incorporated Method and system for secure storage and retrieval of machine state
CN104536816A (zh) * 2014-12-17 2015-04-22 中电科华云信息技术有限公司 提高虚拟机迁移效率的方法
KR101630088B1 (ko) * 2014-12-18 2016-06-13 한양대학교 산학협력단 가상머신의 라이프사이클 모니터링 방법 및 그 장치
CN109597677B (zh) * 2018-12-07 2020-05-22 北京百度网讯科技有限公司 用于处理信息的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799258B1 (en) * 2001-01-10 2004-09-28 Datacore Software Corporation Methods and apparatus for point-in-time volumes

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US7203944B1 (en) 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US8156490B2 (en) 2004-05-08 2012-04-10 International Business Machines Corporation Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US7257811B2 (en) 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
KR100772863B1 (ko) * 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US7979742B2 (en) * 2007-07-19 2011-07-12 Hewlett-Packard Development Company, L.P. Recoverability of a dataset associated with a multi-tier storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799258B1 (en) * 2001-01-10 2004-09-28 Datacore Software Corporation Methods and apparatus for point-in-time volumes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Constantine P. Sapuntzakis 외 5인, Optimizing the Migration of Virtual Computers, Stanford University Computer Science Department (2002.공개) *

Also Published As

Publication number Publication date
KR20090079012A (ko) 2009-07-21
US20090182929A1 (en) 2009-07-16
US8402200B2 (en) 2013-03-19

Similar Documents

Publication Publication Date Title
KR101496325B1 (ko) 가상 머신의 상태를 저장, 복원하는 방법 및 장치
US10275348B2 (en) Memory controller for requesting memory spaces and resources
US8327086B2 (en) Managing migration of a shared memory logical partition from a source system to a target system
EP2577450B1 (en) Virtual machine migration techniques
US9317320B2 (en) Hypervisor-based server duplication system and method and storage medium storing server duplication computer program
Hines et al. Post-copy based live virtual machine migration using adaptive pre-paging and dynamic self-ballooning
Hines et al. Post-copy live migration of virtual machines
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
US20140040576A1 (en) Requesting a memory space by a memory controller
JP2019212330A (ja) スケーラブル分散ストレージアーキテクチャ
WO2014109007A1 (ja) ストレージ階層管理システム
WO2018176911A1 (zh) 一种虚拟磁盘文件格式转换方法和装置
US20180107605A1 (en) Computing apparatus and method with persistent memory
JP2016531349A (ja) 仮想化ストレージエリアネットワークのための仮想ディスクブループリント
US20130111103A1 (en) High-speed synchronous writes to persistent storage
US20110202918A1 (en) Virtualization apparatus for providing a transactional input/output interface
JP2009512948A (ja) ストレージサーバにおけるスループットを増加させる方法および装置
US20140082275A1 (en) Server, host and method for reading base image through storage area network
KR102326280B1 (ko) 데이터 처리 방법, 장치, 기기 및 매체
Pinter et al. Improving machine virtualisation with'hotplug memory'
Egger et al. Efficiently restoring virtual machines
JP4792065B2 (ja) データ記憶方法
Gustafsson Optimizing total migration time in virtual machine live migration
US20180011661A1 (en) Data locality in a hyperconverged computing system
TW201317781A (zh) 虛擬機器記憶體的分享方法與電腦系統

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190130

Year of fee payment: 5