KR101790728B1 - 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체 - Google Patents

가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체 Download PDF

Info

Publication number
KR101790728B1
KR101790728B1 KR1020160049487A KR20160049487A KR101790728B1 KR 101790728 B1 KR101790728 B1 KR 101790728B1 KR 1020160049487 A KR1020160049487 A KR 1020160049487A KR 20160049487 A KR20160049487 A KR 20160049487A KR 101790728 B1 KR101790728 B1 KR 101790728B1
Authority
KR
South Korea
Prior art keywords
data
hypervisor
input
output
stored
Prior art date
Application number
KR1020160049487A
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 KR1020160049487A priority Critical patent/KR101790728B1/ko
Application granted granted Critical
Publication of KR101790728B1 publication Critical patent/KR101790728B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F17/30185
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 가상화(virtualization) 환경의 하이퍼바이저(hypervisor)에서의 데이터 입출력 방법에서, 게스트(guest) 장치에서 발생한 데이터가 호스트(host) 캐쉬(cache) 메모리에 저장되어야 할 데이터인지 여부를 확인하는 단계, 상기 데이터가 호스트 캐쉬 메모리에 저장되어야 할 데이터이면, 해당 데이터를 상기 호스트 캐쉬 메모리를 거쳐서 저장 장치에 저장하는 모드인 라이트백(writeback) 모드로 데이터의 입출력 동작을 수행하는 단계 및 상기 데이터가 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터이면, 상기 호스트 캐쉬 메모리를 거치지 않고 해당 데이터를 직접 저장 장치에 저장하는 모드인 논(none) 모드로 데이터의 입출력 동작을 수행하는 단계를 포함한다.
본 발명에 의하면, 가상화 환경에서 호스트 캐쉬를 사용함에 따른 버퍼링 및 캐슁 효과를 유지하면서, 메모리 적재 직후 동기화가 발생함에 따라 발생하는 오버헤드를 제거함으로써, 입출력(I/O) 성능을 향샹시킬 수 있는 효과가 있다.

Description

가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체 {Method for data input-output of hypervisor in virtualization, and recording medium thereof}
본 발명은 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법에 관한 것으로서, 더욱 상세하게는 게스트 장치의 입출력 패턴에 따라 부분적으로 직접 입출력을 지원하는 하이퍼바이저에서의 데이터 입출력 방법에 관한 것이다.
가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어로서, "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 이것은 다중 논리 리소스로서의 기능을 하는 것처럼 보이는 서버, 운영 체제, 응용 프로그램, 또는 저장 장치와 같은 것을 하나의 단일 물리 리소스로 만들어 내거나, 아니면 단일 논리 리소스처럼 보이는 저장 장치나 서버를 여러 개의 물리적 리소스를 만들어 낼 수 있다.
하이퍼바이저(Hypervisor)는 프로세서나 메모리와 같은 다양한 컴퓨터 자원에 서로 다른 각종 운영 체계(OS)의 접근 방법을 통제하는 얇은 계층의 소프트웨어로서, 다수의 OS를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어로 중앙 처리 장치(CPU)와 OS 사이에 일종의 중간웨어로 사용되며, 하나의 컴퓨터에서 서로 다른 OS를 사용하는 가상 컴퓨터를 만들 수 있는 효과적인 가상화 엔진이다.
일반적으로 클라우드 서비스에서는 물리서버를 가상화하여 여러 개의 논리적인 서버(Virtual Machine)로 사용할 수 있도록 제공한다. 이에 따라, 각각의 서버와 연결된 스토리지 장치도 가상화 플랫폼과 밀접한 연관을 갖는다.
일반적인 가상화 플랫폼의 하이퍼바이저는 독립된 시스템으로 구현되며 복수 개의 이기종 하이퍼바이저가 존재하는 경우, 각각의 하이퍼바이저에 해당하는 프로토콜 및 연동방식에 맞게 개별적으로 스토리지를 인식시켜야만 하이퍼바이저에서 스토리지의 사용이 가능하다.
가상화 환경에서 게스트의 파일 입출력은 호스트(host) 캐쉬(cache)를 사용하지 않고 직접 저장장치에 전송되는 방식인 논 모드(none mode)와, 호스트 캐쉬에 적재 후 저장 장치와 동기화 시키는 방식인 라이트백 모드(writeback mode)가 있다.
현재 대부분의 하이퍼바이저들은 호스트 캐쉬를 사용하여 입출력을 수행하는데, 이것은 버퍼링(buffering)과 캐슁(caching) 효과를 누릴 수 있어 성능 상의 이익을 가져온다. 그러나 호스트 캐쉬를 거쳐가는 입출력 방식은 데이터를 업데이트 한 직후 동기화 요청을 하는 경우에는 버퍼링의 효과가 없고 오히려 호스트 캐쉬를 거쳐감에 따른 오버헤드(overhead)가 발생하는 문제점이 있다.
또한, 재접근이 되지 않는 데이터의 경우에도 호스트 캐쉬에 저장 시 히트(hit)를 발생시키지 않고 캐쉬 공간을 오염시키는 결과만 초래한다. 이러한 특성을 지니는 대표적인 예가 저널(journal) 트래픽(traffic)이다. 즉, 저널링 영역에 발생하는 데이터는 커밋(commit) 수행 시 데이터를 보내지만 곧바로 fsync와 같은 명시적인 동기화 연산이 발생하여, 호스트 캐쉬를 거쳐갈 때 성능이 오히려 저하될 수 있다. 그리고, 호스트 캐쉬에 데이터를 적재하는 오버헤드는 최하위 스토리지 장치의 속도가 빨라질수록 더욱 증가한다는 문제점이 있다.
대한민국 공개특허 10-2011-0071679
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 가상화 환경에서 호스트 캐쉬에 적재 후 동기화 시키는 방식에서, 성능저하를 초래하는 특정 접근 워크로드(workload)를 감지하고, 이를 호스트 캐쉬를 거치지 않는 직접 입출력(I/O) 방식으로 데이터를 처리할 수 있도록 개선한 하이퍼바이저를 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명의 가상화(virtualization) 환경의 하이퍼바이저(hypervisor)에서의 데이터 입출력 방법에서, 게스트(guest) 장치에서 발생한 데이터가 호스트(host) 캐쉬(cache) 메모리에 저장되어야 할 데이터인지 여부를 확인하는 단계, 상기 데이터가 호스트 캐쉬 메모리에 저장되어야 할 데이터이면, 해당 데이터를 상기 호스트 캐쉬 메모리를 거쳐서 저장 장치에 저장하는 모드인 라이트백(writeback) 모드로 데이터의 입출력 동작을 수행하는 단계 및 상기 데이터가 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터이면, 상기 호스트 캐쉬 메모리를 거치지 않고 해당 데이터를 직접 저장 장치에 저장하는 모드인 논(none) 모드로 데이터의 입출력 동작을 수행하는 단계를 포함한다.
상기 게스트 장치에서 발생한 데이터가 호스트 캐쉬 메모리에 저장되어야 할 데이터인지 여부를 확인하는 단계에서, 데이터를 업데이트하고 바로 동기화 요청이 있는 경우이거나, 또는 재참조가 발생하지 않는 데이터의 경우이면, 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터로 확인할 수 있다.
이때, 상기 게스트 장치에서 발생한 데이터가 저널(journal) 데이터이면, 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터로 확인할 수 있다.
본 발명의 일 실시예에서 상기 하이퍼바이저는 상기 게스트 장치로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하여 저널 데이터를 감지하거나, 또는
상기 하이퍼바이저는 상기 게스트 장치로부터 유입되는 입출력(I/O) 패턴(pattern)을 통해 저널 데이터를 감지할 수 있다.
외부 저널링의 경우, 상기 하이퍼바이저는 특정 데이터에 대해 지속적으로 읽기 요청이 발생하지 않고, 순차적인 쓰기 요청만 발생하면, 해당 데이터를 저널 데이터로 판단할 수 있다.
내부 저널링의 경우, 상기 하이퍼바이저는 상기 게스트 장치에서 저널 영역으로 사용되는 구간을 감지하고, 상기 저널 영역의 데이터를 저널 데이터로 판단할 수 있다.
상기 게스트 장치에서 발생한 데이터가 쓰기 연산을 위해 읽어들여야 하는 읽기 데이터이면, 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터로 확인할 수 있다.
상기 하이퍼바이저는 상기 게스트 장치로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하여 상기 읽기 데이터를 감지할 수 있다.
상기 하이퍼바이저는 상기 입출력 스택에서 추가적인 정보를 전달하는 플래그(flag)를 통해 상기 읽기 데이터를 감지할 수 있다.
상기 논(none) 모드로 데이터의 입출력 동작을 수행하는 단계에서, 상기 하이퍼바이저는 상기 게스트 장치의 디스크 이미지에 접근하는 옵션에, 상기 저장 장치로 직접 입출력을 수행하도록 하는 플래그를 일시적으로 설정할 수 있다.
본 발명에 의하면, 가상화 환경에서 호스트 캐쉬를 사용함에 따른 버퍼링 및 캐슁 효과를 유지하면서, 메모리 적재 직후 동기화가 발생함에 따라 발생하는 오버헤드를 제거함으로써, 입출력(I/O) 성능을 향샹시킬 수 있는 효과가 있다.
즉, 본 발명에서 제안하는 기법에 의하면, 특정 패턴에 대해서는 입출력(I/O) 지연 시간을 단축하고, 전체적으로는 호스트 캐쉬의 히트율을 증가시켜서, 전반적인 입출력(I/O) 성능 향상에 기여할 수 있다.
도 1은 가상화 환경에서 라이트백(writeback) 모드에서의 입출력 동작 과정을 보여주는 도면이다.
도 2는 가상화 환경에서 논(none) 모드에서의 입출력 동작 과정을 보여주는 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법을 보여주는 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 내부 저널링 사용 시 저널 영역을 예측하는 알고리즘을 보여주는 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 갖는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명은 가상화(virtualization) 환경의 하이퍼바이저(hypervisor)에서의 데이터 입출력 방법에 대한 것이다.
본 발명에서 데이터 입출력 방법을 수행하는 주체는 하이퍼바이저이며, 하이퍼바이저는 일종의 소프트웨어로서, 하이퍼바이저를 수행하는 하드웨어는 컴퓨터를 전반적으로 제어하는 제어부 또는 제어 명령 신호 및 일련의 프로그램을 처리하는 중앙처리장치(CPU, Central Processing Unit)일 수 있다. 즉, 본 발명의 데이터 입출력 방법은 일종의 소프트웨어인 알고리즘 또는 로직으로 구성되며, 소프트웨어 알고리즘은 컴퓨터의 제어부 또는 중앙처리장치에서 실행될 수 있다.
도 1은 가상화 환경에서 라이트백(writeback) 모드에서의 입출력 동작 과정을 보여주는 도면이다.
도 1을 참조하면, 게스트 장치(Guest machine)(110)에서 발생하는 데이터는 호스트 캐쉬 메모리(120)에 우선 적재 후, 주기적인 플러시(flush) 또는 명시적인 동기화 명령에 의해 수정된 데이터가 저장 장치(Storage device)(130)에 저장된다. 본 발명에서 게스트 장치(110)는 가상 머신(Virtual machine)일 수 있다.
도 2는 가상화 환경에서 논(none) 모드에서의 입출력 동작 과정을 보여주는 도면이다.
도 2를 참조하면, 호스트 캐쉬 메모리(120)를 거치지 않고 게스트 장치(110)의 쓰기(write) 요청을 바로 저장 장치로 전송하는 논(none) 모드의 동작을 보여준다. 이 경우 하이퍼바이저는 직접 입출력(direct I/O) 방식을 사용하여 호스트 캐쉬 메모리(120)의 페이지 캐쉬를 사용하지 않고 직접 저장 장치(130)로 수정된 데이터를 전송한다.
통상적으로 라이트백 모드가 입출력의 버퍼링(buffering) 및 캐슁(caching) 효과를 제공하기 때문에 더 나은 성능을 제공하지만, 특정 입출력 패턴의 경우에는 논 모드가 더 효율적이다.
본 발명에서는 이러한 특정 입출력 패턴에 대하여 논 모드가 더 효율적인 경우에 호스트 캐쉬 메모리(120)에 데이터를 적재하지 않는 바이패스(bypass) 기법을 제안한다.
본 발명에서 가상화 환경의 하이퍼바이저에서 특정 입출력 패턴에 대하여 바이패스 기법을 구현하는 입출력 방법은 다음과 같다.
먼저, 게스트(guest) 장치(110)에서 발생한 데이터가 호스트(host) 캐쉬(cache) 메모리(120)에 저장되어야 할 데이터인지 여부를 확인한다.
그리고, 데이터가 호스트 캐쉬 메모리(120)에 저장되어야 할 데이터이면, 해당 데이터를 호스트 캐쉬 메모리(120)를 거쳐서 저장 장치(130)에 저장하는 모드인 라이트백(writeback) 모드로 데이터의 입출력 동작을 수행한다.
그러나, 데이터가 호스트 캐쉬 메모리(120)에 저장되지 않아야 할 데이터이면, 호스트 캐쉬 메모리(120)를 거치지 않고 해당 데이터를 직접 저장 장치(130)에 저장하는 모드인 논(none) 모드로 데이터의 입출력 동작을 수행한다.
본 발명에서는 호스트 캐쉬 메모리(120)에 저장되지 않아야 할 데이터로서 저널(journal) 트래픽(traffic)과, 쓰기 연산을 위해 읽어들여야할 읽기 트래픽을 예시한다. 이러한 트래픽을 대상으로 한 데이터 입출력 방법을 예시하면 다음과 같다.
도 3은 본 발명의 일 실시예에 따른 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법을 보여주는 흐름도이다.
먼저, 게스트 장치(110)에서 발생한 데이터가 저널 데이터인지 여부를 확인한다(S301).
저널 데이터가 아니면, 쓰기를 위해 읽어들여야 할 읽기(read) 데이터인지 여부를 확인한다(S303).
저널 데이터와 쓰기를 위해 읽어들여야 할 읽기 데이터가 아니면, 라이트백 모드로 입출력 동작을 수행한다(S305).
그러나, 저널 데이터이거나, 또는 쓰기를 위해 읽어들여야 할 읽기 데이터이면 논 모드로 입출력 동작을 수행한다(S307).
이처럼 본 발명에서는 데이터를 업데이트하고 바로 동기화 요청(fsync)이 있는 경우이거나, 또는 재참조가 발생하지 않는 데이터의 경우이면, 호스트 캐쉬 메모리(120)에 저장되지 않아야 할 데이터로 확인한다.
저널 데이터는 시스템이 크래쉬(crash)가 발생하지 않는 한 재참조 되지 않을 뿐 아니라, 쓰기(write) 요청 후 바로 명시적인 동기화 명령(fsync)이 발생하기 때문에, 호스트 캐쉬 메모리(120)에 적재하여 얻는 이익이 없다. 오히려 캐쉬 공간 오염 및 호스트 캐쉬 메모리(120)의 적재 오버헤드를 발생시켜 성능을 저하시킬 수 있다.
본 발명에서는 저널 데이터를 구별하는 명시적 방법과 암묵적 방법의 두가지 방법을 제안한다.
먼저 명시적인 방법은 게스트 장치(110)로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하여 저널 데이터를 감지하는 것이다. 이를 위해 입출력(I/O) 인터페이스에 새로운 플래그를 사용할 수 있다.
다음으로 암묵적 방법은 하이퍼바이저에서 게스트 장치(110)로부터 유입되는 입출력(I/O) 패턴(pattern)을 통해 저널 데이터를 감지하는 것이다.
이때, 외부 저널링인 경우에는 저널 영역으로 사용되는 별도의 파일을 감지해내는 작업이 필요하다. 저널 영역은 대량의 순차쓰기가 발생하므로 특정 파일에 대해 읽기 요청은 발생하지 않고, 순차적인 쓰기만 지속적으로 발생하는 경우에 해당 파일을 저널 파일이라고 판단한다.
본 발명에서 외부 저널링의 경우, 하이퍼바이저는 특정 데이터에 대해 지속적으로 읽기 요청이 발생하지 않고, 순차적인 쓰기 요청만 발생하면, 해당 데이터를 저널 데이터로 판단한다.
내부 저널링인 경우에는 게스트 장치(110)의 다른 파일 시스템 영역과 저널 영역이 동일한 디스크 이미지 파일에서 관리되므로, 저널 영역으로 사용되는 특정 구간을 감지해야 한다. 본 발명의 실시예에서는 ext4 파일시스템을 타겟(target)으로 저널 영역을 감지하는 알고리즘을 제안한다. ext4의 경우 디스크의 LBA 공간을 그룹(GROUP) 단위(예를 들어, 128MB)로 나누어 사용하는데, 그 중 특정 그룹을 저널 데이터로 사용한다. 본 발명에서 제안하는 하이퍼바이저는 각 그룹에 대해 최근에 접근했던 주소를 기억하고 순차적으로 반복 접근하는 부분을 저널 데이터의 그룹으로 예측한다. 도 4는 본 발명의 일 실시예에 따른 내부 저널링 사용 시 저널 영역을 예측하는 알고리즘을 보여주는 도면이다. 도 4의 알고리즘은 슈도코드(pseudocode)이다.
본 발명에서 내부 저널링의 경우, 하이퍼바이저는 게스트 장치(110)에서 저널 영역으로 사용되는 구간을 감지하고, 저널 영역의 데이터를 저널 데이터로 판단한다.
쓰기 연산을 위해 데이터를 읽어와야 하는 경우(read for write), 데이터가 호스트 캐쉬 메모리(120)에 적재된 후, 게스트 장치(110)에서 바로 수정되기 때문에 원래의 데이터에 재 참조가 발생하지 않는다. 따라서 호스트 캐쉬 메모리(120)에 저장된 데이터는 이익을 내지 못하고 공간만 낭비하게 된다. 이러한 데이터를 하이퍼바이저에서 감지하기 위해서는 입출력(I/O) 스택(stack)을 통한 명시적인 요청이 있어야 하며, 이것은 추가적인 정보를 전달하는 플래그를 사용해서 구현할 수 있다.
본 발명에서 게스트 장치(110)에서 발생한 데이터가 쓰기 연산을 위해 읽어들여야 하는 읽기 데이터이면, 호스트 캐쉬 메모리(120)에 저장되지 않아야 할 데이터로 판단한다. 이때, 하이퍼바이저는 게스트 장치(110)로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하여 읽기 데이터를 감지할 수 있다. 여기서, 하이퍼바이저는 입출력 스택에서 추가적인 정보를 전달하는 플래그(flag)를 통해 읽기 데이터를 감지할 수 있다.
본 발명에서 호스트 캐쉬 메모리(120)에 적재하지 않는 것이 더 효율적인 데이터가 감지되면, 하이퍼바이저는 저장 장치(130)로 직접 입출력을 수행해야 한다. 이것은 하이퍼바이저가 일시적으로 게스트 장치(110)의 디스크 이미지에 접근하는 옵션에 DIRECT_IO 플래그를 설정하는 방식으로 구현할 수 있다. 본 발명에서는 구현의 일 실시 예로 posix_fadvise 시스템 콜을 통해, 사용자 어플리케이션이 파일의 접근 플래그를 동적으로 DIRECT_IO 모드로 변경하는 매커니즘을 구현하고, 하이퍼바이저가 위의 데이터를 감지 시 해당 posix_fadvise 시스템 콜을 호출하도록 할 수 있다.
즉, 본 발명에서 하이퍼바이저는 게스트 장치(110)의 디스크 이미지에 접근하는 옵션에, 저장 장치(130)로 직접 입출력을 수행하도록 하는 플래그를 일시적으로 설정하여, 논 모드로 입출력 동작이 수행되도록 구현할 수 있다.
한편, 본 발명의 실시예에 따른 하이퍼바이저에서의 데이터 입출력 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있다.
또한, 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.
110 게스트 장치
120 호스트 캐쉬 메모리
130 저장 장치

Claims (12)

  1. 가상화(virtualization) 환경의 하이퍼바이저(hypervisor)에서의 데이터 입출력 방법에서,
    게스트(guest) 장치에서 발생한 데이터가, 임시 저장 메모리로서 버퍼링 및 캐슁(caching) 기능을 제공하기 위한 호스트(host) 캐쉬(cache) 메모리에 저장되어야 할 데이터인지 여부를 확인하는 단계;
    상기 데이터가 호스트 캐쉬 메모리에 저장되어야 할 데이터이면, 해당 데이터를 우선 상기 호스트 캐쉬 메모리에 임시로 적재한 후, 주기적인 플러시(flush) 또는 명시적인 동기화 명령에 의해 수정된 데이터를 저장 장치(Storage device)에 저장하는 모드인 라이트백(writeback) 모드로 데이터의 입출력 동작을 수행하는 단계; 및
    상기 데이터가 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터이면, 상기 호스트 캐쉬 메모리를 거치지 않고, 해당 데이터를 직접 상기 저장 장치에 저장하는 모드인 논(none) 모드로 데이터의 입출력 동작을 수행하는 단계를 포함하고,
    상기 게스트 장치에서 발생한 데이터가 호스트 캐쉬 메모리에 저장되어야 할 데이터인지 여부를 확인하는 단계에서, 데이터를 업데이트하고 바로 동기화 요청이 있는 경우이거나, 또는 재참조가 발생하지 않는 데이터의 경우이면, 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터로 확인하고,
    상기 게스트 장치에서 발생한 데이터가 저널(journal) 데이터 또는 쓰기 연산을 위해 읽어들여야 하는 읽기 데이터이면, 호스트 캐쉬 메모리에 저장되지 않아야 할 데이터로 확인하며,
    상기 하이퍼바이저는 상기 게스트 장치로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하는 명시적인 방식으로 저널 데이터를 감지하거나 또는 상기 게스트 장치로부터 유입되는 입출력(I/O) 패턴(pattern)을 이용하는 암묵적인 방식으로 저널 데이터를 감지하고,
    외부 저널링의 경우, 상기 하이퍼바이저는 특정 데이터에 대해 지속적으로 읽기 요청이 발생하지 않고, 순차적인 쓰기 요청만 지속적으로 발생하면, 해당 장치에 존재하는 데이터를 저널 데이터로 판단하고,
    내부 저널링의 경우, 상기 게스트 장치가 디스크의 LBA 공간을 그룹 단위로 나누어 사용하는 ext4 파일 시스템이라고 할 때, 상기 하이퍼바이저는 각 그룹에 대해 최근에 접근했던 주소를 기억하고, 순차적으로 반복 접근하는 부분을 저널 데이터가 저장되는 특정 그룹으로 판단하고,
    상기 하이퍼바이저는 상기 게스트 장치로부터 입출력(I/O) 스택(stack)의 추가 정보를 확인하여 상기 읽기 데이터를 감지하고, 이때 상기 하이퍼바이저는 상기 입출력 스택에서 추가적인 정보를 전달하는 플래그(flag)를 통해 상기 읽기 데이터를 감지하는 것을 특징으로 하는 하이퍼바이저에서의 데이터 입출력 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 청구항 1에 있어서,
    상기 논(none) 모드로 데이터의 입출력 동작을 수행하는 단계에서,
    상기 하이퍼바이저는 상기 게스트 장치의 디스크 이미지에 접근하는 옵션에, 상기 저장 장치로 직접 입출력을 수행하도록 하는 플래그를 일시적으로 설정하는 것을 특징으로 하는 하이퍼바이저에서의 데이터 입출력 방법.
  12. 청구항 1 또는 청구항 11의 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160049487A 2016-04-22 2016-04-22 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체 KR101790728B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160049487A KR101790728B1 (ko) 2016-04-22 2016-04-22 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160049487A KR101790728B1 (ko) 2016-04-22 2016-04-22 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체

Publications (1)

Publication Number Publication Date
KR101790728B1 true KR101790728B1 (ko) 2017-11-20

Family

ID=60809169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160049487A KR101790728B1 (ko) 2016-04-22 2016-04-22 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체

Country Status (1)

Country Link
KR (1) KR101790728B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561725B2 (en) 2021-01-20 2023-01-24 SK Hynix Inc. System and operating method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160077972A1 (en) * 2014-09-16 2016-03-17 International Business Machines Corporation Efficient and Consistent Para-Virtual I/O System

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160077972A1 (en) * 2014-09-16 2016-03-17 International Business Machines Corporation Efficient and Consistent Para-Virtual I/O System

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561725B2 (en) 2021-01-20 2023-01-24 SK Hynix Inc. System and operating method thereof

Similar Documents

Publication Publication Date Title
US9405476B2 (en) Systems and methods for a file-level cache
US11614873B2 (en) Virtual disk storage techniques
US8996807B2 (en) Systems and methods for a multi-level cache
US9612966B2 (en) Systems, methods and apparatus for a virtual machine cache
US8402200B2 (en) Method and apparatus for storing and restoring state of virtual machine
EP3764239A1 (en) Method and device for enhancing isolation between user space and kernel space
JP5091655B2 (ja) 計算機仮想化装置、そのプログラム、及びその方法
US10223026B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
JP2013542486A (ja) 仮想マシンのオンデマンド型イメージ・ストリーミング
EP3830719B1 (en) Binary search procedure for control table stored in memory system
CN101211289A (zh) 恢复操作管理系统和方法
US10140212B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US20200034049A1 (en) Spot coalescing of distributed data concurrent with storage i/o operations
US10901914B2 (en) Method for writing multiple copies into storage device, and storage device
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
JP2006155272A (ja) 仮想計算機の制御方法及びプログラム
WO2013023090A2 (en) Systems and methods for a file-level cache
US9904567B2 (en) Limited hardware assisted dirty page logging
KR101790728B1 (ko) 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체
JP2019021070A (ja) 情報処理装置、情報処理方法、及びプログラム
US20130346975A1 (en) Memory management method, information processing device, and computer-readable recording medium having stored therein memory management program
CN104461928A (zh) 划分高速缓存的方法及装置
US10712952B1 (en) Metadata caches in a reliable distributed computing system
Kim et al. I/O access frequency-aware cache method on KVM/QEMU
EP3053040B1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments

Legal Events

Date Code Title Description
GRNT Written decision to grant