KR101329759B1 - 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법 - Google Patents

클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법 Download PDF

Info

Publication number
KR101329759B1
KR101329759B1 KR1020100022882A KR20100022882A KR101329759B1 KR 101329759 B1 KR101329759 B1 KR 101329759B1 KR 1020100022882 A KR1020100022882 A KR 1020100022882A KR 20100022882 A KR20100022882 A KR 20100022882A KR 101329759 B1 KR101329759 B1 KR 101329759B1
Authority
KR
South Korea
Prior art keywords
operation command
block
network
write
virtual machine
Prior art date
Application number
KR1020100022882A
Other languages
English (en)
Other versions
KR20110103699A (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 KR1020100022882A priority Critical patent/KR101329759B1/ko
Publication of KR20110103699A publication Critical patent/KR20110103699A/ko
Application granted granted Critical
Publication of KR101329759B1 publication Critical patent/KR101329759B1/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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Abstract

클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법이 제공된다. 본 발명에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법은, 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일(Operating System Image File)과 상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터를 기록하는 쓰기 데이터 파일을 저장하는 단계; 네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하는 단계; 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하면 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 단계; 및 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에, 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계를 포함한다.

Description

클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법{NETWORK BLOCK DEVICE PROVIDING PERSONALIZED VIRTUAL MACHINE IN CLOUD COMPUTING ENVIRONMENT AND CONTROL METHOD THEREOF}
본 발명의 실시예들은 네트워크 블록 디바이스 및 그 제어 방법에 관한 것으로, 보다 상세하게는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2007-S-016-03, 과제명: 저비용 대규모 글로벌 인터넷 서비스 솔루션 개발].
블록 디바이스(Block Device)는 블록 단위의 입출력이 가능한 장치로서, 대부분의 유닉스(Unix) 또는 리눅스(Linux) 시스템은 이와 같은 블록 디바이스를 포함하여 구성되어 있다. 네트워크 블록 디바이스(Network Block Device: NBD)는 네트워크를 통하여 네트워크 블록 디바이스 클라이언트가 이와 같은 블록 디바이스로 접근 가능하도록 하는 구성을 가지고 있다.
클라우드 컴퓨팅(cloud computing) 환경에서 가상 머신(Virtual Machine)의 구동을 위해서는, 로컬 디스크에 운영 체제(Operating System: OS)를 설치 가능한 크기의 적절한 디바이스 파일을 생성하고 상기 디바이스 파일 상에 운영 체제를 설치한다. 이와 같이 구성되는 가상 머신은 사용자의 읽기(read) 또는 쓰기(write) 명령에 의하여 변경이 이루어지며 그에 따라 각 사용자당 하나의 가상 머신이 할당된다.
그러므로, 종래에는 사용자 별로 가상 머신을 위한 파일을 여러 개 생성하여 네트워크 파일 시스템(Network File System: NFS)의 형태로 사용자에게 제공하였으며, 그에 따라 가상 머신의 용량의 낭비가 발생하였으며 가상 머신의 사용자에 대한 응답성에도 문제가 발생하였다. 즉, 종래에는 사용자 별로 가상 머신 이미지 파일을 복사하여야 하므로 로컬 디스크의 용량의 낭비가 발생하고 사용자에게 제공할 수 있는 가상 머신의 수도 한정되어 있었다. 또한, 다수의 사용자가 가상 머신을 요청하는 경우 네트워크 블록 디바이스 서버에서 네트워크 병목 현상이 발생하여 사용자의 읽기 또는 쓰기 명령이 원활하게 이루어질 수 없었다.
본 발명은 가상 머신을 제공하는 OS 이미지 파일과 상기 OS 이미지 파일에 대한 쓰기 데이터를 별도로 관리하여 가상 머신의 제공을 위한 용량의 낭비를 최소화하고 사용자에게 제공할 수 있는 가상 머신의 수도 최대화 하고자 한다.
또한 본 발명은 다수의 사용자에게 가상 머신의 제공 시에도 네트워크 병목 현상이 발생하지 않도록 하고자 한다.
본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법은, 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일(Operating System Image File)과 상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터를 기록하는 쓰기 데이터 파일을 저장하는 단계; 네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하는 단계; 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하면 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 단계; 및 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에, 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계를 포함한다.
이때, 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 단계는, 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 상기 블록을 제공받아 상기 네트워크 블록 디바이스 클라이언트로 제공할 수 있다.
이때, 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계는, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하지 않으면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하고 상기 블록을 처음으로 저장하였음을 나타내는 값을 상기 쓰기 데이터 파일 상에 저장하는 단계일 수 있다.
이때, 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계는, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계일 수 있다.
이때, 상기 Peer To Peer(P2P) 네트워크는 비트토렌트 네트워크(BitTorrent network)일 수 있다.
본 발명에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버는, 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일을 저장하는 OS 이미지 파일 저장부; 상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터가 기록되는 쓰기 데이터 파일 저장부; 및 네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하고, 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 블록(block)이 상기 OS 이미지 파일 저장부의 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하면 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하도록 제어하고, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에, 상기 쓰기 연산 명령에 따른 블록을 기록하도록 제어하는 중앙 제어부를 포함한다.
이때, 상기 중앙 제어부는, 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 상기 블록을 제공받아 상기 OS 이미지 파일 저장부에 저장하고, 상기 OS 이미지 파일 저장부에 저장된 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공할 수 있다.
이때, 상기 중앙 제어부는, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하지 않으면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하고 상기 블록을 처음으로 저장하였음을 나타내는 값을 상기 쓰기 데이터 파일 저장부에 저장하도록 제어할 수 있다.
이때, 상기 중앙 제어부는, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하면 상기 쓰기 데이터 파일 저장부의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하도록 제어할 수 있다.
이때, 상기 Peer To Peer(P2P) 네트워크는 비트토렌트 네트워크(BitTorrent network)일 수 있다.
본 발명에 따르면, 가상 머신을 제공하는 OS 이미지 파일과 상기 OS 이미지 파일에 대한 쓰기 데이터를 별도로 관리하여 가상 머신의 제공을 위한 용량의 낭비를 최소화하고 사용자에게 제공할 수 있는 가상 머신의 수도 최대화 할 수 있으며, 다수의 사용자에게 가상 머신의 제공 시에도 네트워크 병목 현상이 발생하지 않는다.
또한 본 발명에 따르면, Peer To Peer(P2P) 네트워크로서 비트토렌트 네트워크(BitTorrent network)가 적용되는 경우, 보다 빠르게 사용자에게 가상 머신을 제공할 수 있다.
도 1은 본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스의 개념도이다.
도 2는 본 발명의 일실시예에 따른 네트워크 블록 디바이스 서버의 구성도이다.
도 3은 본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법을 설명하기 위한 흐름도이다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스의 개념도이다. 도 1을 참고하여 본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스를 설명하기로 한다.
도 1에 도시된 바와 같이 본 발명의 일실시예에 따른 네트워크 블록 디바이스(Network Block Device: NBD)는 네트워크 블록 디바이스 서버(Network Block Device Server: NBD Server)(110), 네트워크 블록 디바이스 클라이언트(Network Block Device Client: NBD Client)(121, 122) 및 Peer To Peer 네트워크(130)를 포함하여 구성된다.
네트워크 블록 디바이스 클라이언트(121, 122)는 네트워크 블록 디바이스 서버(110)에 액세스하여 각각 가상 머신(Virtual Machine: VM)을 제공받을 수 있다.
네트워크 블록 디바이스 서버(NBD Server: 110)는 OS 이미지 파일 저장부(111) 및 쓰기 데이터 파일 저장부(112)를 포함하여 구성되며, OS 이미지 파일 저장부(111) 상에는 OS 이미지 파일(Operation System Image File)이 저장되어 있다. 따라서, 제1 네트워크 블록 디바이스 클라이언트(121) 또는 제2 네트워크 블록 디바이스 클라이언트(122)는 네트워크 블록 디바이스 서버(NBD Server: 110)에 액세스하여 가상 머신을 제공받을 수 있다.
네트워크 블록 디바이스 클라이언트(121, 122)가 가상 머신 상에서의 읽기(read) 또는 쓰기(write) 명령을 내리면, 상기 읽기 또는 쓰기의 연산 명령은 네트워크 블록 디바이스 클라이언트(121, 122)로부터 네트워크 블록 디바이스 서버(110)로 전달된다.
네트워크 블록 디바이스 서버(110)는 네트워크 블록 디바이스 클라이언트(121, 122)로부터 상기 연산 명령을 수신하고 네트워크 블록 디바이스 서버(110)는 상기 수신한 연산 명령이 읽기 명령인지 또는 쓰기 명령인지를 판단한다. 네트워크 블록 디바이스 서버(110)의 상기 판단 결과, 상기 네트워크 블록 디바이스 클라이언트(121, 122)로부터 수신한 연산 명령이 읽기 연산 명령인 경우에는 상기 읽기 연산 명령에 해당하는 OS 이미지 파일의 블록(block)이 캐시 메모리(cache memory)상에 존재하는지를 판단한다. 네트워크 블록 디바이스 서버(110)에서의 상기 판단 결과, 상기 블록이 캐시 메모리에 존재하면 네트워크 블록 디바이스 서버(110)는 OS 이미지 파일 저장부(111)의 캐시 메모리에 존재하는 블록을 네트워크 블록 디바이스 클라이언트(121, 122)로 제공한다.
또한, 네트워크 블록 디바이스 서버(110)에서의 상기 판단 결과, 상기 블록이 캐시 메모리에 존재하지 않으면 네트워크 블록 디바이스 서버(110)는 Peer To Peer(P2P) 네트워크(130)를 통해 상기 블록을 제공받을 수 있다. 이때, 본 발명의 일실시예에 따른 Peer To Peer(P2P) 네트워크(130)로는 다양한 방식의 Peer To Peer 네트워크가 적용될 수 있으며, 보다 바람직하게는 Peer To Peer 네트워크로서 비트토렌트 네트워크(BitTorrent network)가 적용될 수 있다. 비트토렌트 네트워크를 적용하면 네트워크의 피어(131, 132, 133) 상에 분산되어 저장된 파일을 동시에 가져올 수 있으므로 네트워크 블록 디바이스 서버(110)가 보다 빠르게 블록을 제공받을 수 있다.
한편, 네트워크 블록 디바이스 서버(110)의 상기 판단 결과, 상기 네트워크 블록 디바이스 클라이언트(121, 122)로부터 수신한 연산 명령이 쓰기 연산 명령인 경우에는 네트워크 블록 디바이스 서버(110)가 쓰기 데이터 파일 저장부(112) 상에 상기 쓰기 연산 명령에 따른 블록을 기록한다. 즉, 네트워크 블록 디바이스 서버(110)는 쓰기 데이터 파일 저장부(112) 상의 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록한다.
이때, 네트워크 블록 디바이스 서버(110)는 쓰기 데이터 파일 저장부(112) 상의 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하지 않으면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하며, 또한 상기 블록을 처음으로 저장하였음을 나타내는 값을 상기 쓰기 데이터 파일 저장부(112)에 저장할 수 있다. 또 달리, 네트워크 블록 디바이스 서버(110)는 상기 기존의 블록이 존재하면 쓰기 데이터 파일 저장부(112)의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록할 수 있다.
예를 들어, 제1 네트워크 블록 디바이스 클라이언트(121)가 네트워크 블록 디바이스 서버(110)로 읽기(read, reread) 연산 명령을 전달하면, 네트워크 블록 디바이스 서버(110)는 상기 읽기 연산 명령에 해당하는 OS 이미지 파일의 블록이 OS 이미지 파일 저장부(111)에 캐시된 블록(142)으로 존재하는지를 판단하여, 존재하면 상기 캐시된 블록(142)을 제1 네트워크 블록 디바이스 클라이언트(121)로 제공한다. 한편, 네트워크 블록 디바이스 서버(110)는 OS 이미지 파일의 블록이 빈 블록(141)으로 존재하면 비트토렌트 네트워크(130) 상에 존재하는 제1 피어(peer: 131), 제2 피어(peer: 132) 및 제3 피어(peer: 133)을 통하여 블록을 제공받아서 제1 네트워크 블록 디바이스 클라이언트(121)로 신속하게 제공할 수 있다. 따라서 제1 네트워크 블록 디바이스(121)는 제공받은 블록을 통해 업데이트된 블록(143)을 구성할 수 있다.
그리고, 제1 네트워크 블록 디바이스 클라이언트(121)가 네트워크 블록 디바이스 서버(110)로 쓰기(write, rewrite) 연산 명령을 전달하는 경우에는, 네트워크 블록 디바이스 서버(110)는 쓰기 데이터 파일 저장부(112) 상의 쓰기 연산 명령에 매칭되는 블록의 비트맵에 기존의 블록이 존재하는지를 판단한다. 네트워크 블록 디바이스 서버(110)는 상기 판단 결과 기존의 블록이 존재하지 않으면, 상기 쓰기 연산 명령에 해당하는 쓰기 데이터 파일 저장부(112)의 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하며, 또한 상기 블록을 처음으로 저장하였음을 나타내는 값을 저장한다. 즉, 네트워크 블록 디바이스 서버(110)는 제1 네트워크 블록 디바이스 클라이언트(121)로부터 9번째의 빈 블록에 쓰기 요청을 수신한 경우에는 (9, 1, ■)과 같이 9번째 블록에 첫 번째로 해당 블록을 저장하였음을 기록할 수 있다. 이때, '9'(144)는 9번째 블록을 쓰기 하였음을 나타내며 '1'(145)은 빈 블록에 처음으로 쓰기를 하였음을 나타내며, '■'(146)은 쓰기에 의해 저장된 해당 블록 데이터를 나타낸다.
이와 같이, 본 발명에 따르면 가상 머신을 제공하는 OS 이미지 파일과 상기 OS 이미지 파일에 대한 쓰기 데이터를 별도로 관리하여 가상 머신의 제공을 위한 용량의 낭비를 최소화할 수 있다.
도 2는 본 발명의 일실시예에 따른 네트워크 블록 디바이스 서버의 구성도이다. 도 2를 참조하여 본 발명의 일실시예에 따른 네트워크 블록 디바이스 서버의 구성을 설명하기로 한다.
도 2에 도시된 바와 같이 본 발명의 일실시예에 따른 네트워크 블록 디바이스 서버는 OS 이미지 파일 저장부(210), 쓰기 데이터 파일 저장부(220) 및 중앙 제어부(230)를 포함하여 구성된다.
OS 이미지 파일 저장부(210)는 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일을 저장하며, 쓰기 데이터 파일 저장부(220)는 상기 OS 이미지 파일에 대한 쓰기 명령에 관련된 데이터를 기록한다.
중앙 제어부(230)는 네트워크 블록 디바이스 클라이언트(NBD Client)로부터 가상 머신(VM)에 대한 연산 명령을 수신하는 경우, 수신한 연산 명령이 읽기(read, reread) 연산 명령이면 읽기 연산 명령에 해당하는 블록(block)이 상기 OS 이미지 파일 저장부의 캐시 메모리에 존재하는지를 판단한다. 중앙 제어부(230)는 상기 판단 결과, 읽기 연산 명령에 대응되는 블록이 캐시 메모리에 존재하면 상기 블록을 네트워크 블록 디바이스 클라이언트로 제공하도록 제어한다.
또한, 중앙 제어부(230)는 상기 수신한 연산 명령이 읽기(read, reread) 연산 명령이면 읽기 연산 명령에 해당하는 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단한다. 중앙 제어부(230)는 판단 결과, 해당 블록이 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 블록을 제공받아 OS 이미지 파일 저장부(111)에 저장한다. 그리고, 중앙 제어부(230)는 OS 이미지 파일 저장부(111)에 저장된 블록을 네트워크 블록 디바이스 클라이언트로 제공하도록 제어한다. 이때, 중앙 제어부(230)가 블록을 제공받는 Peer To Peer(P2P) 네트워크가 비트토렌트 네트워크(BitTorrent network)로 구성되면, 네트워크의 피어(Peer) 상에 분산되어 저장된 파일을 동시에 가져올 수 있으므로 보다 빠르게 블록을 제공받을 수 있다.
한편, 중앙 제어부(230)는 블록 디바이스 클라이언트로부터 수신한 연산 명령이 쓰기 연산 명령이면, 쓰기 데이터 파일 저장부(220) 상의 쓰기 연산 명령에 해당하는 블록의 비트맵에, 쓰기 연산 명령에 따른 블록을 기록하도록 제어한다. 보다 상세하게 설명하면, 중앙 제어부(230)는 수신한 연산 명령이 쓰기 연산 명령이면 쓰기 데이터 파일 저장부(220) 상의 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단한다. 중앙 제어부(230)는 상기 판단 결과, 기존의 블록이 존재하지 않으면 쓰기 연산 명령에 해당하는 블록의 비트맵에 쓰기 연산 명령에 따른 블록을 기록하고 상기 블록을 처음으로 저장하였음을 나타내는 값을 쓰기 데이터 파일 저장부(220)에 저장하도록 제어할 수 있다. 또 달리, 중앙 제어부(230)는 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 기존의 블록이 존재하면 쓰기 데이터 파일 저장부(220)의 쓰기 연산 명령에 해당하는 블록의 비트맵에 쓰기 연산 명령에 따른 블록을 기록하도록 제어할 수 있다.
도 3은 본 발명의 일실시예에 따른 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법을 설명하기 위한 흐름도이다. 도 3을 참고하여 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법을 설명하기로 한다.
네트워크 블록 디바이스 서버(NBD Server)가 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일(Operating System Image File)과 상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터를 기록하는 쓰기 데이터 파일을 저장 및 유지한다(S310).
네트워크 블록 디바이스 서버가 네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하고(S320), 수신한 연산 명령이 읽기 연산 명령인지를 판단하여(S330), 상기 수신한 연산 명령이 읽기 연산 명령이면 읽기 연산 명령에 해당하는 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단한다(S340).
네트워크 블록 디바이스 서버는 상기 판단 결과, 블록이 캐시 메모리에 존재하면 상기 블록을 캐시 메모리로부터 읽고(S350), 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 블록을 제공받는다(S355). 이때, 상기 Peer To Peer(P2P) 네트워크는 비트토렌트 네트워크(BitTorrent network)로 구성될 수 있다. 이후, 네트워크 블록 디바이스 서버는 상기 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공한다(S360).
또 달리, 네트워크 블록 디바이스 서버의 판단 결과, 상기 수신한 연산 명령이 읽기 연산 명령이 아닌 쓰기 연산 명령이면, 상기 쓰기 데이터 파일 상의 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단한다(S370).
네트워크 블록 디바이스 서버의 판단 결과, 기존의 블록이 존재하면 쓰기 연산 명령에 해당하는 블록의 비트맵에 쓰기 연산 명령에 따른 블록을 기록한다(S380). 또한, 네트워크 블록 디바이스 서버의 판단 결과, 기존의 블록이 존재하지 않으면 쓰기 연산 명령에 해당하는 블록의 비트맵에 쓰기 연산 명령에 따른 블록을 기록하고 블록을 처음으로 저장하였음을 나타내는 값을 쓰기 데이터 파일 상에 저장한다(S385).
이와 같이, 본 발명은 가상 머신을 제공하는 OS 이미지 파일과 상기 OS 이미지 파일에 대한 쓰기 데이터를 별도로 관리한다. 따라서, 본 발명에 따르면 가상 머신의 제공을 위한 용량의 낭비를 최소화하고 사용자에게 제공할 수 있는 가상 머신의 수도 최대화 할 수 있으며, 다수의 사용자에게 가상 머신의 제공 시에도 네트워크 병목 현상이 발생하지 않는다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 네트워크 블록 디바이스 서버
111: OS 이미지 파일 저장부
112: 쓰기 데이터 파일 저장부
121: 제1 네트워크 블록 디바이스 클라이언트
122: 제2 네트워크 블록 디바이스 클라이언트
130: Peer To Peer 네트워크
131: 제1 피어
132: 제2 피어
133: 제3 피어
141: 빈 블록
142: 캐시된 블록
143: 업데이트된 블록

Claims (10)

  1. 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일(Operating System Image File)과 상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터를 기록하는 쓰기 데이터 파일을 저장하는 단계;
    네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하는 단계;
    상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하면 상기 OS 이미지 파일의 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 단계; 및
    상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에, 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계
    를 포함하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법.
  2. 제1항에 있어서,
    상기 OS 이미지 파일의 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 단계는,
    상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 상기 OS 이미지 파일의 블록을 제공받아 상기 네트워크 블록 디바이스 클라이언트로 제공하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법.
  3. 제1항에 있어서,
    상기 쓰기 연산 명령에 따른 블록을 기록하는 단계는,
    상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하지 않으면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하고 상기 블록을 처음으로 저장하였음을 나타내는 값을 상기 쓰기 데이터 파일 상에 저장하는 단계인 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법.
  4. 제1항에 있어서,
    상기 쓰기 연산 명령에 따른 블록을 기록하는 단계는,
    상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하는 단계인 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법.
  5. 제2항에 있어서,
    상기 Peer To Peer(P2P) 네트워크는,
    비트토렌트 네트워크(BitTorrent network)인 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버의 제어 방법.
  6. 가상 머신(Virtual Machine)을 제공하는 OS 이미지 파일을 저장하는 OS 이미지 파일 저장부;
    상기 OS 이미지 파일에 대한 쓰기 명령에 대한 데이터가 기록되는 쓰기 데이터 파일 저장부; 및
    네트워크 블록 디바이스 클라이언트(NBD Client)로부터 상기 가상 머신에 대한 연산 명령을 수신하고, 상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 블록(block)이 상기 OS 이미지 파일 저장부의 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하면 상기 읽기 연산 명령에 해당하는 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하도록 제어하고, 상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에, 상기 쓰기 연산 명령에 따른 블록을 기록하도록 제어하는 중앙 제어부
    를 포함하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버.
  7. 제6항에 있어서,
    상기 중앙 제어부는,
    상기 수신한 연산 명령이 읽기 연산 명령이면 상기 읽기 연산 명령에 해당하는 상기 OS 이미지 파일의 블록(block)이 캐시 메모리에 존재하는지를 판단하여, 상기 캐시 메모리에 존재하지 않으면 Peer To Peer(P2P) 네트워크를 통해 상기 OS 이미지 파일의 블록을 제공받아 상기 OS 이미지 파일 저장부에 저장하고, 상기 OS 이미지 파일 저장부에 저장된 블록을 상기 네트워크 블록 디바이스 클라이언트로 제공하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버.
  8. 제6항에 있어서,
    상기 중앙 제어부는,
    상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하지 않으면 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하고 상기 블록을 처음으로 저장하였음을 나타내는 값을 상기 쓰기 데이터 파일 저장부에 저장하도록 제어하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버.
  9. 제6항에 있어서,
    상기 중앙 제어부는,
    상기 수신한 연산 명령이 쓰기 연산 명령이면 상기 쓰기 데이터 파일 저장부 상의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 기존의 블록이 존재하는지를 판단하여, 상기 기존의 블록이 존재하면 상기 쓰기 데이터 파일 저장부의 상기 쓰기 연산 명령에 해당하는 블록의 비트맵에 상기 쓰기 연산 명령에 따른 블록을 기록하도록 제어하는 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버.
  10. 제7항에 있어서,
    상기 Peer To Peer(P2P) 네트워크는,
    비트토렌트 네트워크(BitTorrent network)인 것을 특징으로 하는 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 서버.
KR1020100022882A 2010-03-15 2010-03-15 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법 KR101329759B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100022882A KR101329759B1 (ko) 2010-03-15 2010-03-15 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100022882A KR101329759B1 (ko) 2010-03-15 2010-03-15 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20110103699A KR20110103699A (ko) 2011-09-21
KR101329759B1 true KR101329759B1 (ko) 2013-11-14

Family

ID=44954826

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100022882A KR101329759B1 (ko) 2010-03-15 2010-03-15 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법

Country Status (1)

Country Link
KR (1) KR101329759B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102237566B1 (ko) * 2014-01-23 2021-04-07 한국전자통신연구원 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법
KR20160093877A (ko) 2015-01-30 2016-08-09 엔트릭스 주식회사 가상 클라이언트와 클라우드 스트리밍 서버, 그를 포함하는 클라우드 스트리밍 서버 테스트 시스템, 그 제어 방법 및 컴퓨터 프로그램이 기록된 기록매체
US10802860B2 (en) * 2015-10-26 2020-10-13 Hewlett-Packard Development Company, L.P. Cloud platform OS management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090001305A (ko) * 2007-06-29 2009-01-08 엘지엔시스(주) 다중 컴퓨팅환경 지원시스템 및 이의 운용방법
KR20090059859A (ko) * 2007-12-07 2009-06-11 한국전자통신연구원 분산파일 시스템에서의 비동기식 데이터 복제 방법 및 그에따른 분산파일 시스템
KR20090065126A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090001305A (ko) * 2007-06-29 2009-01-08 엘지엔시스(주) 다중 컴퓨팅환경 지원시스템 및 이의 운용방법
KR20090059859A (ko) * 2007-12-07 2009-06-11 한국전자통신연구원 분산파일 시스템에서의 비동기식 데이터 복제 방법 및 그에따른 분산파일 시스템
KR20090065126A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법

Also Published As

Publication number Publication date
KR20110103699A (ko) 2011-09-21

Similar Documents

Publication Publication Date Title
US10853339B2 (en) Peer to peer ownership negotiation
US10474397B2 (en) Unified indirection in a multi-device hybrid storage unit
EP2638476B1 (en) Method and apparatus of accessing data of virtual machine
CN102708060B (zh) 一种镜像文件访问方法、装置及系统
CA3027756A1 (en) Systems and methods for efficient distribution of stored data objects
CN104239575A (zh) 一种虚拟机镜像文件存储、分发方法及装置
US10601901B2 (en) Methods, systems, and media for stored content distribution and access
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
US20180205791A1 (en) Object storage in cloud with reference counting using versions
JP6188713B2 (ja) 自律ネットワーク・ストリーミング
CN108139974B (zh) 分布式缓存动态迁移
US10360189B2 (en) Data object storage across multiple storage nodes
US20160335199A1 (en) Extending a cache of a storage system
EP3384384A1 (en) Methods and devices for acquiring data using virtual machine and host machine
US20230164219A1 (en) Access Pattern Driven Data Placement in Cloud Storage
US20210397374A1 (en) Function processing using storage controllers for load sharing
KR101329759B1 (ko) 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법
CN104052824A (zh) 分布式缓存方法及系统
JP6406283B2 (ja) ストレージ装置およびストレージ方法
CN110088745A (zh) 数据处理系统以及数据处理方法
JP4224279B2 (ja) ファイル管理プログラム
Meyer et al. Supporting heterogeneous pools in a single ceph storage cluster
CN117194439B (zh) 一种资源存储系统的创建方法、电子设备及存储介质
KR101677372B1 (ko) 디스크 블록 요청 예측 장치 및 방법
Mazumdar et al. Microsoft azure storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161107

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171101

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181030

Year of fee payment: 6