KR101701378B1 - 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법 - Google Patents

가상 머신과 파일을 공유하는 가상화 장치 및 그 방법 Download PDF

Info

Publication number
KR101701378B1
KR101701378B1 KR1020150108596A KR20150108596A KR101701378B1 KR 101701378 B1 KR101701378 B1 KR 101701378B1 KR 1020150108596 A KR1020150108596 A KR 1020150108596A KR 20150108596 A KR20150108596 A KR 20150108596A KR 101701378 B1 KR101701378 B1 KR 101701378B1
Authority
KR
South Korea
Prior art keywords
virtual machine
hint information
memory
file
sharing
Prior art date
Application number
KR1020150108596A
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 성균관대학교산학협력단
Priority to KR1020150108596A priority Critical patent/KR101701378B1/ko
Application granted granted Critical
Publication of KR101701378B1 publication Critical patent/KR101701378B1/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/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
    • 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

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

본 발명은 가상 머신과 파일을 공유하는 가상화 장치는 파일을 공유하는 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로그램의 실행에 따라, 가상 머신의 모니터링에 기초하여 생성된, 힌트 정보를 수신하고, 힌트 정보를 이용하여 가상 머신과 메모리에 포함된 하나 이상의 파일을 공유한다. 이때, 힌트 정보는 가상 머신이 모니터링에 기초하여 수집한 가상 머신의 파일 시스템에 포함된 파일 정보이고, 모니터링은 가상 머신이 가상 머신에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성한다.

Description

가상 머신과 파일을 공유하는 가상화 장치 및 그 방법{APPARATUS AND METHOD OF VIRTUALIZATION FOR FILE SHARING WITH VIRTUAL MACHINE}
본 발명은 가상 머신과 메모리를 공유하는 가상화 장치 및 그 방법에 관한 것이다.
최근 데이터 센터에서는 공간 제약을 해결하고 전력 소모를 절약하기 위하여 가상화(virtualization) 기술을 통한 서버의 통합이 이루어지고 있다. 가상화 기술은 물리적인 컴퓨팅 리소스를 활용하여 논리적인 컴퓨팅 리소스를 활용하는 하나 이상의 가상 머신(virtual machine)을 실행할 수 있다. 구체적으로 가상화는 물리 머신(physical machine) 내에서 하나 이상의 컴퓨터 환경이 에뮬레이션(emulation)된 가상 머신을 수행한다.
한정된 물리 머신을 복수의 가상 머신이 동시에 활용하는 가상화 기술에서는 효율적인 자원 분배가 중요하다. 물리 머신의 프로세서 및 디스크와 같은 자원은 각각의 가상 머신에서 시분할 방식의 공유가 가능하다. 그러나 메모리는 각 가상 머신에서 필요한 만큼 상호 배타적으로 할당해야 하므로, 가상 머신의 수를 제한하는 가장 큰 원인이 될 수 있다.
일반적인 가상화 장치는 가상 머신이 필요로 하는 메모리를 예측하고, 그에 맞는 메모리를 정확하게 분배하여 메모리의 낭비를 줄일 수 있는 메모리 균형 분배 기법을 통하여 가상 머신의 메모리를 효율적으로 사용할 수 있다. 또한, 일반적인 가상화 장치는 가상 머신이 사용하는 메모리에서 중복된 부분을 찾아내어 해당 부분을 공유하는 페이지 공유 기법을 이용하여, 가상 머신의 메모리를 효율적으로 사용할 수 있다.
이러한 가상화 장치의 메모리 균형 분배 기법과 페이지 공유 기법은 상호 보완적인 기술이다. 예를 들어, 가상화 장치에서 메모리 균형 분배 기법을 사용하는 경우, 가상화 장치의 메모리를 완벽하게 분배하더라도 가상 머신에서 갑작스런 메모리 요구량의 변화로 인하여 메모리가 부족해진 메모리 스와프(swap)가 발생하면, 가상화 장치의 성능 저하가 발생할 수 있다. 그러나 이러한 경우 가상화 장치가 페이지 공유 기법을 사용한다면, 여유 메모리를 확보할 수 있으므로 메모리 균형 분배 기법의 성능 저하를 방지할 수 있다.
페이지 공유 기법은 공유 가능한 메모리를 효율적으로 찾아내어 제거하는 것이 중요하다. 가장 일반적인 페이지 공유 기법은 메모리를 순차적으로 스캔하여 메모리의 내용을 비교하고, 공유 가능한 메모리를 검색한다. 그러나 순차적인 비교를 이용하는 경우, 페이지 공유 방법은 오버헤드가 크고, 메모리 스캔 시간 간격에 발생하는 짧은 메모리 공유 기회를 놓칠 수 있다.
이러한 문제를 해결하기 위한 종래의 기술은 다음과 같다. 한국 공개특허공보 제10-2015-0007666호(발명의 명칭: 가상화 장치 및 그의 메모리 페이지 병합 방법)는 가상 머신이 사용하는 가상화 장치의 페이지 캐시를 대상으로 중복 페이지를 확인하고, 중복 페이지를 제거함으로써 동일한 내용의 페이지에 대해 하나의 페이지만 메모리에 남겨 놓음으로써 메모리 공간을 확보할 수 있다.
또한, 미국 공개특허공보 제US2013/159596호(발명의 명칭: TECHNIQUES FOR MEMEORY DE-DULICATION INA VIRTUAL SYSTEM)는 공유형 메모리 페이지에 적합한 각각의 가상 머신 내의 후보 메모리 페이지의 해시값 및 페이지의 크기에 기초하여 순차적 및 병렬적으로 메모리 중복 제거 동작을 수행한다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 실시예는 힌트 정보를 통하여 가상 머신과 파일을 공유하는 가상화 장치를 제공하는데 그 목적이 있다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 가상 머신과 파일을 공유하는 가상화 장치는 파일을 공유하는 프로그램이 저장된 메모리 및 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로그램의 실행에 따라, 가상 머신의 모니터링에 기초하여 생성된, 힌트 정보를 수신하고, 힌트 정보를 이용하여 가상 머신과 메모리에 포함된 하나 이상의 파일을 공유한다. 이때, 힌트 정보는 가상 머신이 모니터링에 기초하여 수집한 가상 머신의 파일 시스템에 포함된 파일 정보이고, 모니터링은 가상 머신이 가상 머신에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성한다.
또한, 본 발명의 제 2 측면에 따른 가상화 장치의 파일 공유 방법은 가상 머신의 모니터링에 기초하여 힌트 정보를 수신하는 단계; 및 힌트 정보를 이용하여 가상 머신과 메모리에 포함된 하나 이상의 파일을 공유하는 단계를 포함한다. 이때, 힌트 정보는 가상 머신이 모니터링에 기초하여 수집한 가상 머신의 파일 시스템에 포함된 파일 정보이고, 모니터링은 가상 머신이 가상 머신에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성한다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 본 발명은 가상 머신의 모니터링에 기초하여 생성된 힌트 정보를 가상 머신이 직접 가상화 장치에 전달하여, 가상 머신에 의해 사용 중인 파일에 대한 공유 기회를 향상시킬 수 있다. 또한, 본 발명은 불필요한 파일 복사 및 불필요한 중복 검색을 최소화할 수 있으므로, 오버헤드를 줄일 수 있다.
그러므로 본 발명은 효율적인 파일 공유를 통하여, 가상화 장치에서 가상 머신에 할당할 수 있는 메모리의 공간이 증가할 수 있으므로, 실행할 수 있는 가상 머신의 수 역시 증가될 수 있다.
도 1은 본 발명의 일 실시예에 따른 가상화 장치의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 가상화 장치 및 가상 머신의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 가상 머신의 모니터링 모듈의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 가상 머신의 파일 공유에 대한 블록도이다.
도 5 는 본 발명의 일 실시예에 따른 가상화 장치의 파일 공유 방법의 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
다음은 도 1 내지 도 4를 참조하여 본 발명의 일 실시예에 따른 하나 이상의 가상 머신(130)과 파일을 공유하는 가상화 장치(100)를 설명한다.
도 1은 본 발명의 일 실시예에 따른 가상화 장치(100)의 블록도이다.
본 발명의 일 실시예에 따른 가상화 장치(100)는 하나 이상의 가상 머신(130)을 실행하고, 가상 머신(130)과의 파일을 공유한다. 이때, 가상화 장치(100)는 도 1과 같이 메모리(110) 및 프로세서(120)를 포함한다.
메모리(110)는 가상 머신(130)과의 파일을 공유하는 프로그램이 저장된다. 이때, 메모리(110)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치를 통칭하는 것이다.
또한, 가상화 장치(100)는 하나 이상의 가상 머신(130)을 포함할 수 있다. 이때, 가상 머신(130)은 가상화 장치(100)에서 실행 중인 하이퍼바이저(hypervisor; 200)에 의해 실행될 수 있다. 하이퍼바이저(200)는 가상화 장치(100)에서 하나 이상의 가상 머신(130)의 운영 체제(operating system)를 동시에 실행할 수 있다. 이때 하이퍼바이저(200)는 가상화 장치(100)의 운영 체제 상에서 실행되는 응용 프로그램(application program)이거나 가상화 장치(100)의 운영 체제에 포함된 시스템 프로그램(system program)일 수 있다.
가상 머신(130)은 가상 머신(130)의 대응하는 사용자가 가상화 장치(100)의 리소스의 일 부분을 사용할 수 있도록 가상화된 리소스를 제공한다. 그러므로 가상 머신(130)은 가상화 장치(100)의 메모리(110)를 가상화한 가상화된 메모리(140) 및 가상화 장치(100)의 프로세서(120)를 가상화한 가상화된 프로세서(150)를 포함할 수 있다. 즉, 사용자는 가상 머신(130)의 가상화된 메모리(140) 및 가상화된 프로세서(150)를 통하여, 가상화 장치(100)의 메모리(110) 및 프로세서(120)를 사용할 수 있다. 가상 머신(130)은 도 2를 참조하여 구체적으로 설명한다.
도 2는 본 발명의 일 실시예에 따른 가상화 장치(100) 및 가상 머신(130)의 블록도이다.
도 2를 참조하면, 물리 머신인 가상화 장치(100)는 하이퍼바이저(200)를 통하여 가상 머신인 제 1 가상 머신(210) 및 제 2 가상 머신(220)을 실행할 수 있다. 그러므로 제 1 가상 머신(210)은 가상화된 메모리(211) 및 가상화된 프로세서(212)를 포함하며, 제 2 가상 머신(220) 또한 가상화된 메모리(221) 및 가상화된 프로세서(222)를 포함할 수 있다.
이때, 제 1 가상 머신(210)의 가상화된 프로세서(212) 및 제 2 가상 머신(220)의 가상화된 프로세서(222)는 각각 가상화 장치(100)의 물리적인 프로세서(120)를 가상화 한 것이다. 또한, 제 1 가상 머신(210)의 가상화된 메모리(211) 및 제 2 가상 머신(220)의 가상화된 메모리(221)는 각각 가상화 장치(100)의 물리적인 메모리(110)를 각각 가상화한 것이다. 그러므로 제 1 가상 머신(210)의 가상화된 프로세서(212) 및 제 2 가상 머신(220)의 가상화된 프로세서(222)는 시분할 방식을 통하여 가상화 장치(100)의 프로세서(120)를 사용할 수 있다. 또한, 제 1 가상 머신(210)의 가상화된 메모리(211) 및 제 2 가상 머신(220)의 가상화된 메모리(221)는 각각의 가상 머신의 메모리 사용 요청에 따라, 상호 배타적으로 가상화 장치(100)의 메모리(110)를 할당하여 사용할 수 있다.
이때, 제 1 가상 머신(210) 및 제 2 가상 머신(220)이 동일한 파일에 대한 처리를 수행한다면, 메모리(110)에는 동일한 파일이 두 번 할당될 수 있다. 그러므로 제 1 가상 머신(210) 및 제 2 가상 머신(220)이 동일한 파일에 대한 처리를 수행한다면, 가상화 장치(100)가 하나의 파일만을 메모리(110)에 할당하여, 메모리(110)의 공간을 절약할 수 있다.
이를 위하여, 본 발명의 일 실시예에 따른 가상화 장치(100)의 프로세서(120)는 실행 중인 하나 이상의 가상 머신(130)의 모니터링을 수행하여 공유 가능성이 큰 파일을 검색하고, 검색된 파일을 가상 머신(130) 간에 공유한다.
구체적으로 프로세서(120)는 파일을 공유하는 프로그램의 실행에 따라, 가상 머신(130)의 모니터링에 기초하여 가상 머신(130)에서 생성된 힌트 정보를 수신한다. 그리고 프로세서(120)는 가상 머신(130)에 의해 수신된 힌트 정보를 이용하여, 가상 머신(130)과 메모리(110)에 포함된 하나 이상의 파일을 공유한다.
이때, 힌트 정보는 가상 머신(130)이 모니터링에 기초하여 수집한 가상 머신(130)의 파일 시스템에 포함된 공유 가능성이 큰 파일에 대한 정보이다. 예를 들어, 힌트 정보는 공유를 수행할 파일에 대응하는 가상 머신(130)의 가상화된 메모리(140) 상의 주소 및 가상화 장치(100)의 메모리(110) 상의 주소가 될 수 있다. 가상화된 메모리(150) 상의 주소는 논리적인 주소이다. 그러므로 힌트 정보는 공유를 수행할 파일에 대한 논리적인 주소 및 논리적인 주소를 물리적인 주소로 변환하는 메커니즘에 따라 변환된 논리적인 주소에 대응하는 물리적인 주소를 포함할 수 있다.
또한, 모니터링은 가상 머신(130)이 가상 머신(130)에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성하는 것이다. 가상 머신(130)의 모니터링 및 힌트 정보는 도 3을 참조하여 설명한다.
도 3은 본 발명의 일 실시예에 따른 가상 머신(130)의 모니터링 모듈의 블록도이다.
가상화된 메모리(140)에 포함된 해당 가상 머신(130)을 사용하는 사용자의 개인 파일은 다른 가상 머신과 공유 가능성이 적다. 그러나 가상화된 메모리(140)에 포함된 라이브러리 및 시스템 파일과 같은 파일은 다른 가상 머신과의 공유 가능성이 크다. 예를 들어, 가상화된 메모리에 저장된 디스크 버퍼 캐시와 같은 파일은 다른 가상 머신과의 공유 가능성이 클 수 있다. 그러므로 가상 머신(130)이 접근하고 있는 파일의 정보에서 공유 가능성이 큰 파일만을 선택하여 공유한다면, 가상화 장치(100)는 메모리(110) 전체의 공유 비율을 높일 수 있다.
이를 위하여 먼저, 가상화된 프로세서(150)는 모니터링 모듈(320)에 기초하여 가상 머신(130)의 내부의 미리 설정된 디렉토리에 포함된 하나 이상의 파일을 순차적으로 접근하여 공유 가능성이 큰 파일을 검색하고, 검색된 파일에 대한 파일 시스템 정보를 수집하고, 힌트 정보를 생성한다. 그러므로 힌트 정보는 가상 머신(130)에 포함된 파일 중 공유 가능성이 큰 파일에 대한 파일 시스템의 정보가 될 수 있다. 이때, 미리 설정된 디렉토리는 공유 디렉토리일 수 있다. 또한, 공유 디렉토리는 가상 머신에 포함된 하나 이상의 디렉토리 중 가상 머신(130), 가상 머신(130)의 사용자 또는 가상화 장치(100)에 의하여 선택된 디렉토리일 수 있다.
구체적으로 도 3을 참조하면, 가상화된 프로세서(150)는 먼저 미리 정해진 주기에 따라, 디렉토리 구조(300)에서 공유 가능성이 큰 파일의 정보를 수집할 수 있다. 이때, 디렉토리 구조(300)는 가상 머신(130)에서 실행 중인 운영 체제의 파일 시스템에 의해 제공되는 것이다. 예를 들어, 가상 머신(130)의 운영 체제가 리눅스(Linux)라면, 디렉토리 구조(300)는 리눅스의 파일 시스템이 제공한 디렉토리 구조가 될 수 있다. 또한, 가상 머신의 운영 체제가 윈도우(window)라면, 디렉토리 구조(300)는 윈도우의 파일 시스템이 제공한 디렉토리 구조가 될 수 있다.
또한, 가상화된 프로세서(150)는 디렉토리 구조(300) 중 미리 설정된 디렉토리에서 공유 가능성이 큰 파일의 정보를 수집할 수 있다. 이때, 미리 설정된 디렉토리는 앞에서 설명한 바와 같이, 가상 머신(130)의 사용자 또는 가상화 장치(100)에 의하여 설정된 공유 디렉토리일 수 있다. 또한, 미리 설정된 디렉토리는 가상 머신(130)에 포함된 하나 이상의 디렉토리 중 라이브러리나 시스템 파일이 저장된 디렉토리가 될 수 있다.
가상화된 프로세서(150)는 가상 머신(130)의 운영체제에 포함된 커널(310)에 기초하여 디렉토리에 포함된 파일의 'd_entry'를 차례대로 순회하여 접근할 수 있다. 이때, 가상화된 프로세서(150)는 하나 이상의 파일 중 유효한 인덱스 노드를 가진 파일에 대한 인덱스 노드의 'i_mapping' 필드를 통하여 파일의 데이터를 페이지 프레임 단위로 수집할 수 있다. 가상화된 프로세서(150)는 모니터링 모듈(320)을 통하여 수집된 파일의 페이지 프레임을 가상화된 메모리(140)의 물리적인 주소로 변환하여 힌트 정보로 생성할 수 있다. 이때, 가상화된 메모리(140)의 물리적인 주소는 메모리(110)의 논리적인 주소이므로, 가상화된 프로세서(150)는 커널(310)에 기초하여 가상화된 메모리(140)의 논리적인 주소를 메모리(110)의 물리적인 주소로 변환하고, 힌트 정보에 추가할 수 있다.
한편, 가상 머신(130)에 의해서 힌트 정보가 수집되면, 프로세서(120)는 수집된 힌트 정보에 기초하여 메모리(110)에 포함된 파일을 공유할 수 있다. 이를 위하여, 프로세서(120)는 가상 머신(130)에게 힌트 정보를 수신할 수 있다.
힌트 정보를 프로세서(120)로 전달하기 위하여, 가상 머신(130)의 가상화된 프로세서(150)는 공유 메모리를 이용할 수 있다. 구체적으로 가상화된 프로세서(150)는 불필요한 데이터 복제를 방지하기 위하여, 가상화된 메모리(140)의 소정의 공간에 공유 메모리를 생성할 수 있다. 그리고 가상화된 프로세서(150)는 생성된 공유 메모리에 대응하는 가상화 장치(100)의 메모리(110)에서의 물리적인 주소를 가상화 장치(100)에 전송하여 생성된 공유 메모리를 공유할 수 있다. 그리고 가상화된 프로세서(150)는 공유된 공유 메모리를 통해 가상화 장치(100)와 힌트 정보를 공유할 수 있다. 공유 메모리는 도 4를 참조하여 자세히 설명한다.
도 4는 본 발명의 일 실시예에 따른 가상 머신(130)의 파일 공유에 대한 블록도이다.
예를 들어, 제 1 가상 머신(210)의 프로세서(212)는 가상화된 메모리(211)의 소정의 공간에 공유 메모리(420)를 설정할 수 있다. 또한, 제 2 가상 머신(220)의 프로세서(222)는 가상화된 메모리(221)의 소정의 공간에 공유 메모리(430)를 설정할 수 있다. 이때, 공유 메모리(420, 430)는 힌트 정보를 저장할 수 있다.
제 1 가상 머신(210)은 가상화된 메모리(211)의 공유 메모리(420)에 대응하는 가상화 장치(100)의 메모리(110)의 물리적인 주소를 하이퍼바이저(200)에 전달하여, 제 1 가상 머신(210)의 공유 메모리를 가상화 장치(100)와 공유할 수 있다. 이와 마찬가지로 제 2 가상 머신(220)은 가상화된 메모리(221)의 공유 메모리(430)에 대응하는 메모리(110)의 물리적인 주소를 하이퍼바이저(200)에 전달하여 제 2 가상 머신(220)의 공유 메모리를 공유할 수 있다.
한편, 가상 머신(130)의 가상화된 프로세서(150)는 예를 들면, 'vmexit' 명령 또는 폴링(polling)에 기초하여, 공유 메모리에 저장된 힌트 정보를 가상화 장치(100)에 전송할 수 있다.
이때, 'vmexit' 명령은 가상 머신(130)의 제어권을 하이퍼바이저(200)로 넘기는 명령어이다. 그러므로 가상화된 프로세서(150)는 'vmexit' 명령을 통하여 가상 머신(130)의 제어권을 가상화 장치(100)의 프로세서(120)로 넘길 수 있다. 그리고 프로세서(120)는 가상 머신(130)으로부터 넘겨받은 제어권에 기초하여 힌트 정보를 수신할 수 있다. 그러나 'vmexit' 명령은 자주 발생하면, 시스템 저하의 원인이 될 수 있다. 그러므로 프로세서(120)는 가상 머신(130)이 미리 설정된 주기에 따라 모니터링을 수행하도록 설정할 수 있다. 예를 들어 모니터링 주기는 5초가 될 수 있다.
그리고 폴링은 가상 머신(130)이 가상화 장치(100)로 힌트 정보를 전송하는 것을 의미한다. 폴링은 가상화 장치(100) 및 가상 머신(130) 간의 가상화된 버스(bus; 미도시) 또는 가상화된 네트워크 모듈(미도시)에 기초하여 수행될 수 있다.
프로세서(120)는 가상 머신(130)의 공유 메모리를 통하여 가상 머신(130)이 전송하는 힌트 정보를 수신할 수 있다. 또한, 프로세서(120)는 수신된 힌트 정보에 기초하여 가상 머신(130)과의 파일 공유를 수행할 수 있다.
만약, 이미 가상 머신(130)에 의해서 기 공유된 파일을 다른 가상 머신이 공유하는 경우, 프로세서(120)는 기 공유된 파일에 대한 복수의 가상 머신의 공유를 허용할 수 있다. 다시 도 4를 예를 들면, 제 1 가상 머신(210)에 의해 기 공유된 파일을 제 2 가상 머신(220)이 공유하는 경우, 프로세서는 해당 파일에 대하여 제 1 가상 머신(210) 및 제 2 가상 머신(220)의 공유를 허용할 수 있다.
구체적으로 설명하면, 프로세서(120)는 제 1 가상 머신(210) 및 제 2 가상 머신(220)으로부터 힌트 정보를 수신하고, 수신된 제 1 가상 머신(210) 및 제 2 가상 머신(220)의 힌트 정보에 기반하여 메모리 공유를 수행할 수 있다. 이때, 프로세서(120)는 제 1 가상 머신(210) 및 제 2 가상 머신(220)으로부터 공유 메모리(420 및 430)를 통해, 수신한 힌트 정보(421, 431)를 우선순위 스택(priority stack; 402)에 저장할 수 있다. 그리고 프로세서(120)는 우선순위 정책에 따라, 우선순위 스택(402)에 저장된 힌트 정보를 관리할 수 있다.
예를 들어, 우선 순위 정책은 우선순위 스택(402)에 저장된 시간 정보가 미리 설정된 시간 이상 지난 경우, 우선 순위를 "낮음"으로 설정하는 것일 수 있다. 또한, 우선 순위 정책은 미리 설정된 개수 이상의 가상 머신(130)으로부터 공유되는 파일인 경우, 우선순위를 "높음"으로 설정하는 것일 수 있으나, 이에 한정된 것은 아니다.
그리고 프로세서(120)는 우선순위 스택(402)에 저장된 힌트 정보가 미리 설정된 개수 이상이거나, 우선순위 스택(402)에 저장된 힌트 정보가 미리 설정된 기간 이상 저장되었을 때, 힌트 정보의 우선순위를 확인하고, 우선 순위가 미리 설정된 임계값 이하일 경우 우선순위 스택(402)에서 제거할 수 있다. 또는 프로세서(120)는 우선 순위가 낮은 순으로 힌트 정보를 제거할 수 있다.
본 발명의 또 다른 실시예에서는 미리 설정된 주기에 따라 기존 가상화 장치(100)에서 가상 머신(130) 간의 파일 공유를 위하여 사용한 커널 공유 메모리(kernel shared memory; 410)과 힌트 정보 기반의 메모리 공유(400)를 교차 실행할 수 있다. 커널 공유 메모리(410)는 파일 시스템 스캔 방식으로 가상 머신(130)과 가상화 장치(100) 간의 공유 메모리를 관리할 수 있다. 프로세서(120)는 힌트 정보 기반의 메모리 공유(400) 및 커널 공유 메모리(410)를 교차 실행하여, 공유 가능성이 높은 파일의 공유 기회를 향상시킬 수 있다.
다음은 도 5를 참조하여 본 발명의 일 실시예에 따른 가상화 장치(100)의 파일 공유 방법을 설명한다.
도 5 는 본 발명의 일 실시예에 따른 가상화 장치(100)의 파일 공유 방법의 순서도이다.
가상화 장치(100)는 가상 머신(130)의 모니터링에 기초하여 힌트 정보를 수신한다(S500). 이때, 가상 머신(130)의 모니터링은 가상 머신(130)이 가상 머신(130)에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성하는 것이다. 힌트 정보는 가상 머신(130)이 메모리의 공유를 위하여 수집한 가상 머신(130)의 파일 시스템에 포함된 파일 정보이다.
가상화 장치(100)는 힌트 정보를 수신한 다음, 힌트 정보를 이용하여 가상 머신(130)과 가상화 장치(100)의 메모리(110)에 포함된 하나 이상의 파일을 공유한다(S510). 이때, 가상화 장치(100)는 가상 머신(130)의 'vmexit' 명령에 기초하여, 가상 머신으(130)로부터 힌트 정보를 수신할 수 있다. 또한, 가상화 장치(100)는 가상 머신(130)에 대한 폴링을 통하여, 힌트 정보를 수신할 수 있다.
한편, 가상화 장치(100)는 힌트 정보를 수신한 다음(S500), 힌트 정보를 우선순위 스택에 저장할 수 있다(S520). 예를 들어, 우선순위 스택은 최소-힙(min-heap) 자료구조를 사용할 수 있다.
가상화 장치(100)는 우선순위 정책에 따라, 우선순위 스택에 저장된 하나 이상의 가상 머신(130)의 힌트 정보 중 어느 하나를 제거할 수 있다(S530). 이때, 우선 순위 정책은 우선순위 스택에 저장된 시간 정보가 미리 설정된 시간 이상 지난 경우, 우선 순위를 "낮음"으로 설정하는 것일 수 있다. 또한, 우선 순위 정책은 미리 설정된 개수 이상의 가상 머신으로부터 공유되는 파일인 경우, 우선순위를 "높음"으로 설정하는 것일 수 있으나, 이에 한정된 것은 아니다. 예를 들어, 가상화 장치(100)는 이러한 우선순위 정책에 따라, 우선 순위가 낮은 가상 머신(130)을 제거할 수 있다.
다음은 본 발명의 일 실시예에 따른 호스트를 설명한다.
본 발명의 일 실시예에 따른 호스트(host)는 게스트(guest)와 파일을 공유할 수 있다. 이때, 호스트는 가상화 머신(100)에 대응될 수 있으며, 게스트는 가상 머신(130)에 대응될 수 있다.
구체적으로 호스트는 게스트의 모니터링에 기초하여 생성된 힌트 정보를 수신하고, 힌트 정보를 이용하여, 게스트와 메모리에 포함된 하나 이상의 파일을 공유할 수 있다. 이때, 힌트 정보는 게스트가 게스트의 메모리에 저장된 하나 이상의 파일 중 호스트와의 공유를 위하여 수집한 것이다. 즉, 힌트 정보는 게스트의 파일 시스템에 포함된 파일 정보가 될 수 있다. 그리고 모니터링은 게스트가 게스트에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성하는 것이다.
본 발명의 일 실시예에 따른 가상 머신(130)과 파일을 공유하는 가상화 장치(100) 및 그 방법은 가상 머신(130)의 모니터링에 기초하여 생성된 힌트 정보를 가상 머신(130)이 직접 가상화 장치(100)에 전달하여, 가상 머신(130)에 의해 사용 중인 파일에 대한 공유 기회를 향상시킬 수 있다. 또한, 가상 머신(130)과 파일을 공유하는 가상화 장치(100) 및 그 방법은 불필요한 파일 복사 및 불필요한 중복 검색을 최소화할 수 있으므로, 오버헤드를 줄일 수 있다.
그러므로 가상 머신(130)과 파일을 공유하는 가상화 장치(100) 및 그 방법은 효율적인 파일 공유를 통하여, 가상화 장치(100)에서 가상 머신(130)에 할당할 수 있는 메모리(110)의 공간이 증가할 수 있으므로, 실행할 수 있는 가상 머신(130)의 수 역시 증가될 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능한 기록 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능한 기록 매체는 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 가상화 장치 110: 메모리
120: 프로세서 130: 가상 머신
140: 가상화된 메모리 150: 가상화된 프로세서
200: 하이퍼바이저 210: 제 1 가상 머신
211: 가상화된 메모리 212: 가상화된 프로세서
220: 제 2 가상 머신 221: 가상화된 메모리
222: 가상화된 프로세서

Claims (12)

  1. 가상 머신과 파일을 공유하는 가상화 장치에 있어서,
    가상 머신과 파일을 공유하는 프로그램이 저장된 메모리 및
    상기 프로그램을 실행하는 프로세서를 포함하고,
    상기 프로세서는 상기 프로그램의 실행에 따라, 상기 가상 머신의 모니터링에 기초하여 생성된 힌트 정보를 수신하고, 상기 힌트 정보를 이용하여 상기 가상 머신과 상기 메모리에 포함된 하나 이상의 파일을 공유하되,
    상기 힌트 정보는 상기 가상 머신이 상기 공유를 위하여 수집한 상기 가상 머신의 파일 시스템에 포함된 파일 정보이고,
    상기 모니터링은 상기 가상 머신이 상기 가상 머신에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성하는 것이고,
    상기 공유 디렉토리는 상기 가상 머신에 포함된 하나 이상의 디렉토리 중 상기 가상 머신에 의해서 선택된 것이고,
    상기 프로세서는 미리 설정된 주기에 따라, 상기 힌트 정보를 이용한 파일 공유 및 커널 공유 메모리에 기초한 파일 공유를 교차 수행하여 상기 메모리에 포함된 하나 이상의 파일을 공유하는 것이고,
    상기 커널 공유 메모리에 기초한 파일 공유는 상기 프로세서에 의해서 실행된 운영 체제의 메모리 공유 기법을 통하여 수행되는 것인, 파일 공유 가상화 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는 상기 가상 머신의 vmexit 명령에 기초하여 상기 가상 머신으로부터 상기 힌트 정보를 수신하는 것인, 파일 공유 가상화 장치.
  3. 제 1 항에 있어서,
    상기 프로세서는 상기 가상 머신에 대한 폴링을 통하여, 상기 힌트 정보를 수신하는 것인, 파일 공유 가상화 장치.
  4. 제 1 항에 있어서,
    상기 가상 머신은 미리 설정된 주기에 따라, 상기 공유 디렉토리에 포함된 하나 이상의 파일을 순차적으로 접근하여 상기 모니터링을 수행하는, 파일 공유 가상화 장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 프로세서는 하나 이상의 가상 머신에 대하여 수신된 힌트 정보를 우선순위 스택에 저장하고, 우선순위 정책에 따라 상기 우선순위 스택에 저장된 힌트 정보 중 어느 하나를 제거하되,
    상기 우선순위 정책은 우선순위 스택에 저장된 시간 정보 및 공유되는 가상 머신의 수 중 어느 하나 이상에 기초한 것인, 파일 공유 가상화 장치.
  7. 삭제
  8. 가상화 장치의 파일 공유 방법에 있어서,
    가상 머신의 모니터링에 기초하여 힌트 정보를 수신하는 단계; 및
    상기 힌트 정보를 이용하여 상기 가상 머신과 메모리에 포함된 하나 이상의 파일을 공유하는 단계를 포함하되,
    상기 힌트 정보는 상기 가상 머신이 상기 공유를 위하여 수집한 상기 가상 머신의 파일 시스템에 포함된 파일 정보이고,
    상기 모니터링은 상기 가상 머신이 상기 가상 머신에 포함된 공유 디렉토리에 대응하는 힌트 정보를 생성하는 것이고,
    상기 공유 디렉토리는 상기 가상 머신에 포함된 하나 이상의 디렉토리 중 상기 가상 머신에 의해서 선택된 것이고,
    상기 공유하는 단계는, 미리 설정된 주기에 따라, 상기 힌트 정보를 이용한 파일 공유 및 커널 공유 메모리에 기초한 파일 공유를 교차 수행하여 상기 메모리에 포함된 하나 이상의 파일을 공유하는 것이고,
    상기 커널 공유 메모리에 기초한 파일 공유는 상기 가상화 장치에 의해서 실행된 운영 체제의 메모리 공유 기법을 통하여 수행되는 것인, 파일 공유 방법.
  9. 제 8 항에 있어서,
    상기 힌트 정보를 수신하는 단계는,
    상기 가상 머신의 vmexit 명령에 기초하여 상기 가상 머신으로부터 상기 힌트 정보를 수신하는 것인, 파일 공유 방법.
  10. 제 8 항에 있어서,
    상기 힌트 정보를 수신하는 단계는,
    상기 가상 머신에 대한 폴링을 통하여, 상기 힌트 정보를 수신하는 것인, 파일 공유 방법.
  11. 제 8 항에 있어서,
    상기 힌트 정보를 수신하는 단계 이후에, 상기 힌트 정보를 우선순위 스택에 저장하는 단계; 및
    우선순위 정책에 따라 상기 우선순위 스택에 저장된 하나 이상의 가상 머신의 힌트 정보 중 어느 하나를 제거하는 단계를 더 포함하되,
    상기 우선순위 정책은 우선순위 스택에 저장된 시간 정보 및 공유되는 가상 머신의 수 중 어느 하나 이상에 기초한 것인, 파일 공유 방법.
  12. 제 8 항 내지 제 11 항 중 어느 한 항에 기재된 방법을 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020150108596A 2015-07-31 2015-07-31 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법 KR101701378B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150108596A KR101701378B1 (ko) 2015-07-31 2015-07-31 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150108596A KR101701378B1 (ko) 2015-07-31 2015-07-31 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101701378B1 true KR101701378B1 (ko) 2017-02-01

Family

ID=58109240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150108596A KR101701378B1 (ko) 2015-07-31 2015-07-31 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101701378B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860506A (zh) * 2019-11-28 2021-05-28 阿里巴巴集团控股有限公司 监控数据的处理方法、装置、系统和存储介质
CN113010407A (zh) * 2019-12-20 2021-06-22 上海汽车集团股份有限公司 一种系统信息获取方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120124743A (ko) * 2011-05-04 2012-11-14 한국과학기술원 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
KR20150076699A (ko) * 2013-12-27 2015-07-07 성균관대학교산학협력단 가상화 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120124743A (ko) * 2011-05-04 2012-11-14 한국과학기술원 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
KR20150076699A (ko) * 2013-12-27 2015-07-07 성균관대학교산학협력단 가상화 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
노다승 외 2명. '힌트 기반의 어플리케이션 메모리 공유 기법'. 2014 한국정보과학회 제41회 정기총회 및 동계학술발표회, 2014.12, pp.1369-1370.* *
허재혁 외 2명. '모바일 환경에서의 I/O 기반 동적 페이지 공유 기법'. 한국정보과학회 2015 한국컴퓨터종합학술대회 논문집 , 2015.06, pp.1490-1491. *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860506A (zh) * 2019-11-28 2021-05-28 阿里巴巴集团控股有限公司 监控数据的处理方法、装置、系统和存储介质
CN112860506B (zh) * 2019-11-28 2024-05-17 阿里巴巴集团控股有限公司 监控数据的处理方法、装置、系统和存储介质
CN113010407A (zh) * 2019-12-20 2021-06-22 上海汽车集团股份有限公司 一种系统信息获取方法、装置及系统

Similar Documents

Publication Publication Date Title
US10552337B2 (en) Memory management and device
US10691363B2 (en) Virtual machine trigger
US9405476B2 (en) Systems and methods for a file-level cache
US10817333B2 (en) Managing memory in devices that host virtual machines and have shared memory
US8151032B2 (en) Direct memory access filter for virtualized operating systems
US8996807B2 (en) Systems and methods for a multi-level cache
US9612966B2 (en) Systems, methods and apparatus for a virtual machine cache
US9201677B2 (en) Managing data input/output operations
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
US20180239649A1 (en) Multi Root I/O Virtualization System
Skarlatos et al. Babelfish: Fusing address translations for containers
US9772776B2 (en) Per-memory group swap device
WO2013023090A2 (en) Systems and methods for a file-level cache
KR101701378B1 (ko) 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법
KR20190116641A (ko) 가상화 시스템을 위한 저장 장치 및 그 동작 방법
US10061725B2 (en) Scanning memory for de-duplication using RDMA
US10341177B2 (en) Parallel computing system and migration method
EP4375836A1 (en) Memory paging method and system, and storage medium
Jo et al. Instant virtual machine live migration
KR20120070326A (ko) 메모리 가상화 장치 및 방법
US10228859B2 (en) Efficiency in active memory sharing
Shaikh et al. Vmdedup: Memory de-duplication in hypervisor
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
Caldwell FluidMem: Open source full memory disaggregation
KR20150100041A (ko) Numa 시스템상에서 가상머신간의 통신방법

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200203

Year of fee payment: 4