KR20090018909A - 컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법 - Google Patents

컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법 Download PDF

Info

Publication number
KR20090018909A
KR20090018909A KR1020087027887A KR20087027887A KR20090018909A KR 20090018909 A KR20090018909 A KR 20090018909A KR 1020087027887 A KR1020087027887 A KR 1020087027887A KR 20087027887 A KR20087027887 A KR 20087027887A KR 20090018909 A KR20090018909 A KR 20090018909A
Authority
KR
South Korea
Prior art keywords
library
computing device
host computing
software
vms
Prior art date
Application number
KR1020087027887A
Other languages
English (en)
Other versions
KR101279696B1 (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 마이크로소프트 코포레이션
Publication of KR20090018909A publication Critical patent/KR20090018909A/ko
Application granted granted Critical
Publication of KR101279696B1 publication Critical patent/KR101279696B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

복수의 가상 머신(VM) 각각은 라이브러리로부터의 검색 및 호스트 상에서의 재시작을 위해 라이브러리 내에 중지된 형태로 저장된다. 각각의 재시작된 VM은 복수의 소프트웨어 구조를 포함하고, 이들 각각은 적어도 잠재적으로 현재 상태가 아니며, 소프트웨어 갱신을 필요로 한다. 현재 상태가 아닌 VM을 갱신하기 위하여, 이러한 VM은 유지 호스트 상에서 검색 및 재시작되며, 각각의 현재 상태가 아닌 소프트웨어 구조는 대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득함으로써 유지 호스트 컴퓨팅 장치에서 갱신되는 것이 허가된다. 대안으로, VM은 컴퓨팅 장치에 탑재되고, 탑재된 VM의 구성 컴포넌트들은 VM의 각각의 소프트웨어 구조가 현재 상태인지를 판정하기 위해 검사되며, 각각의 현재 상태가 아닌 소프트웨어 구조는 대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득하고 각각의 패치를 탑재된 VM에 적용함으로써 갱신된다.
가상 머신 갱신, 패치, 라이브러리, 소프트웨어 구조, 현재 상태

Description

컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법{UPDATING VIRTUAL MACHINE WITH PATCH OR THE LIKE}
본 발명은 가상 머신 또는 그의 컴포넌트를 유지하기 위해 패치를 이용하여 가상 머신 또는 그의 컴포넌트를 갱신하는 것에 관한 것이다. 구체적으로, 본 발명은 라이브러리 등에서, 따라서 오프라인에서 가상 머신을 갱신하는 시스템 및 방법에 관한 것이다. 보다 구체적으로, 본 발명은 패치를 적용하기 위하여 라이브러리로부터, 온라인 상태로 가상 머신을 전개하거나, 패치를 적용하기 위해 파일들을 갖는 드라이브의 방식으로 가상 머신을 탑재하는 시스템 및 방법에 관한 것이다.
알아야 하듯이, 가상 머신('VM')은 하드웨어 시스템을 에뮬레이트하기 위한 목적으로 컴퓨팅 장치 등(즉, 호스트) 상에서 동작하는 소프트웨어 구조 등이다. 일반적으로, 반드시 그렇지는 않지만, VM은 애플리케이션 등이며, 호스트 상에서 사용 애플리케이션 등을 인스턴스화하는 동시에, 이러한 사용 애플리케이션을 호스트 장치 또는 호스트 상의 다른 애플리케이션들로부터 격리하는 데 사용될 수 있다. 하나의 일반적인 상황에서, 호스트는 복수의 전개된 VM을 수용할 수 있으며, 각각의 VM은 호스트로부터 이용 가능한 자원들을 통해 몇몇 소정 기능을 수행할 수 있다. 특히, 각각의 VM은 가상 형태이지만, 사실상 컴퓨팅 머신이며, 따라서 그의 사용 애플리케이션 및 외부 세계 양자에 대해 그 자신을 그렇게 표현한다.
일반적으로, 반드시 그렇지는 않지만, 호스트는 그의 각각의 VM을 개별 파티션 내에 전개한다. 이러한 호스트는 감독 애플리케이션 또는 '하이퍼바이저'로서 동작하고, 각각의 VM과 외부 세계 사이의 가능한 링크로서 동작하는 VM 모니터 등을 갖는 가상화 계층을 포함할 수 있는데, 이 가상화 계층은 호스트의 각각의 VM의 감독 양태들을 감독 및/또는 관리한다.
VM의 하나의 특징은 가상 구조로서의 VM이 뜻대로 중지 및 재시작될 수 있으며, 또한 중지시의 VM은 파일 등의 방식으로 저장 및 검색될 수 있다는 것이다. 특히, 특정 컴퓨팅 장치 상에서 인스턴스화된 VM은 적절히 패키지화될 수 있는 단독 소프트웨어 구조인데, 이는 이 소프트웨어 구조가 VM과 관련된 운영 데이터 및 상태 정보를 포함하는, VM에 관한 모든 데이터를 포함하기 때문이다. 결과적으로, 제1 호스트 상의 VM은, 제1 호스트에서 VM을 중지하고, 중지된 VM을 제2 호스트로 이동시키고, 이동된 VM을 제2 호스트에서 재시작하는 것 등에 의해, 제2 호스트로 이동 또는 '이주'될 수 있다. 보다 일반적으로, VM은 유사한 방식으로 제1 플랫폼에서 제2 플랫폼으로 이주될 수 있는데, 이 플랫폼들은 상이한 호스트들, 동일 호스트의 상이한 구성들 등을 나타낸다. 후자의 경우, 그리고 알아야 하듯이, 컴퓨팅 장치는, 예를 들어 추가 메모리가 추가되거나, 프로세서가 변경되거나, 추가 입력 장치가 제공되거나, 선택 장치가 제거되는 것 등의 경우에 상이한 구성을 가질 수 있다.
유사한 방식으로, VM들의 라이브러리가 유지될 수 있으며, 라이브러리 내의 각각의 VM은 적절한 지시 하에 검색되고 재시작될 수 있는 중지 및 저장된 VM이다. 따라서, 일례로, 특정 처리 시나리오를 필요로 하는 사용자 등은 라이브러리를 탐색하여 그 안에서 그 시나리오를 해결하는 적절한 VM을 찾고, 그러한 VM을 발견한 때, 그 VM을 검색 및 재시작할 수 있다. 유사한 방식으로, VM을 전개한 사용자 등은 임의의 적절한 시점에 VM을 중지하고, 중지된 VM을 나중 검색을 위해 라이브러리에 저장할 수 있으며, 이때 저장된 VM은 라이브러리로부터의 검색시 처리를 계속하도록 재시작될 수 있다.
VM은 운영 체제, 하나 이상의 사용 애플리케이션, 및 다른 다양한 소프트웨어 구조(즉, 집합적으로 '소프트웨어 구조들')를 포함하며, VM의 각각의 소프트웨어 구조는 때때로 패치 등의 형태의 갱신을 필요로 할 수 있다는 것을 이해해야 한다. 알 수 있듯이, 이러한 갱신은 구조를 현재 상태로 유지하거나, 구조에 추가 기능을 제공하거나, 구조와 관련된 보안 문제를 해결하는 것 등을 포함하는 임의의 여러 이유로 수행될 수 있다. 일반적으로, 구조는 임의의 새로운 패치들에 대해 갱신 소스에 주기적으로 쿼리하는 갱신 기능을 포함할 수 있으며, 입수 가능한 경우에 갱신 기능은 사용자 등의 지원 및/또는 승인 하에 새로운 패치들을 취득하여 이를 설치한다.
특히, 중지되어 라이브러리 등에 저장된 VM은 어떠한 처리도 수행할 수 없으며, 따라서 적절할 수 있는 바와 같이, 이러한 중지 및 저장된 VM의 구조의 갱신 기능은 패치들을 얻어서 설치할 수 없다. 알 수 있듯이, 그의 VM이 중지되고 저장된 동안 구조가 갱신될 수 없는 것은 갱신의 종류가 비교적 중요하지 않은 경우에 는 사소한 불편이거나, 갱신의 종류가 비교적 중요한 경우에는 중요한 문제일 수 있다. 전자의 경우, 비교적 중요하지 않을 수 있는 갱신은 예를 들어 추가적인 표시 특징들을 제공하는 갱신일 수 있다. 후자의 경우, 비교적 중요할 수 있는 갱신은 예를 들어 보안 문제를 해결하는 갱신일 수 있다.
특히, 비교적 중요한 갱신과 관련하여, VM이 라이브러리로부터 검색되어 정상적인 방식으로 재시작될 수 있는 소정의 불확정한 시간까지 VM에 갱신을 적용하기 위해 기다리는 것은 수용 가능하지 않을 수도 있다. 따라서, 임의의 갱신들, 특히 임의의 중요한 갱신들이 라이브러리 내의 VM에 적용되는 것을 가능하게 하는 시스템 및 방법이 필요하다.
<발명의 요약>
전술한 필요는 컴퓨팅 장치 상의 가상 머신들(VM들)의 라이브러리와 관련하여 시스템 및 방법을 제공하는 본 발명에 의해 충족된다. 각각의 VM은 라이브러리로부터의 검색 및 호스트 컴퓨팅 장치 상에서의 재시작을 위해 라이브러리 내에 중지된 형태로 저장된다. 라이브러리 내의 각각의 VM은 호스트 컴퓨팅 장치 상에서 재시작될 때 하드웨어 시스템을 에뮬레이트하는 소프트웨어 구조이다. 각각의 재시작된 VM은 복수의 소프트웨어 구조를 포함한다. 라이브러리 내의 각각의 VM의 각각의 소프트웨어 구조는 적어도 잠재적으로 현재 상태가 아니며, 소프트웨어 갱신을 필요로 한다.
본 방법에서는, 라이브러리 내의 각각의 VM에 대해, VM의 각각의 소프트웨어 구조가 현재 상태인지가 주기적으로 판정된다. VM의 임의의 소프트웨어 구조가 현 재 상태가 아닌 경우, VM은 라이브러리 내에 현재 상태가 아닌 것으로 표시된다. 소정 시점에서, 호스트 컴퓨팅 장치 상에서 검색되어 재시작될 라이브러리로부터의 VM의 선택이 수신된다. 선택된 VM이 라이브러리 내에 현재 상태가 아닌 것으로 표시된 경우, VM은 어떠한 호스트 컴퓨팅 장치에 대한 액세스도 갖지 않는 유지 호스트 컴퓨팅 장치에서 갱신되며, 이후 갱신된 VM은 호스트 컴퓨팅 장치에서 재시작된다.
VM을 갱신하기 위하여, VM은 라이브러리로부터 검색되어 유지 호스트 컴퓨팅 장치 상에서 재시작되며, 재시작된 VM의 각각의 현재 상태가 아닌 소프트웨어 구조는 대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득함으로써 유지 호스트 컴퓨팅 장치에서 갱신되는 것이 허가된다. 대안으로, VM은 컴퓨팅 장치에 탑재되고, 탑재된 VM의 구성 컴포넌트들은 VM의 각각의 소프트웨어 구조가 현재 상태인지를 판정하기 위해 검사되며, 각각의 현재 상태가 아닌 소프트웨어 구조는 대응 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득하고 각각의 패치를 탑재된 VM에 적용함으로써 갱신된다.
위의 요약은 물론, 본 발명의 실시예들의 아래의 상세한 설명은 첨부 도면들과 함께 읽을 때 보다 잘 이해될 것이다. 본 발명을 설명하기 위한 목적으로, 현재 선호되는 실시예들이 도면들에 도시되어 있다. 그러나, 이해해야 하듯이, 본 발명은 도시된 정확한 구성들 및 수단들로 제한되지 않는다.
도 1은 본 발명의 양태들 및/또는 그 부분들이 통합될 수 있는 범용 컴퓨터 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 갱신을 위해, 각자가 유지 호스트에서 재시작되거나 컴퓨팅 장치에 탑재될 수 있는 가상 머신(VM)들의 라이브러리를 갖는 시스템을 나타내는 블록도이다.
도 3-5는 본 발명의 실시예들에 따른 도 2의 시스템과 관련하여 수행되는 중요 단계들을 나타내는 흐름도들이다.
컴퓨터 환경
도 1 및 아래의 설명은 본 발명 및/또는 그의 부분들이 구현될 수 있는 적절한 컴퓨팅 환경의 간단한 일반 설명을 제공하는 것을 의도한다. 필요한 것은 아니지만, 본 발명은 일반적으로 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 본 발명 및/또는 그의 부분들은 핸드-헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 가전제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성에서 실시될 수 있음을 알아야 한다. 본 발명은 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경들에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 둘다에 위치할 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 처리 장치(121), 시스템 메모리(122), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(121)에 연결시키는 시스템 버스(123)를 포함하는 통상의 퍼스널 컴퓨터(120) 등을 포함한다. 시스템 버스(123)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(124) 및 랜덤 액세스 메모리(RAM)(125)를 포함한다. 예를 들어 시동 중과 같은 때에, 퍼스널 컴퓨터(120) 내의 구성요소들 사이의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(126)(BIOS)은 ROM(124)에 저장되어 있다.
퍼스널 컴퓨터(120)는 하드 디스크(도시되지 않음)에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(127), 이동식 자기 디스크(129)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(128), 및 CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(131)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(130)를 더 포함할 수 있다. 하드 디스크 드라이브(127), 자기 디스크 드라이브(128) 및 광 디스크 드라이브(130)는 하드 디스크 드라이브 인터페이스(132), 자기 디스크 드라이브 인터페이스(133) 및 광 드라이브 인터페이스(134)에 의해 각각 시스템 버스(123)에 접속된다. 드라이브들 및 이들과 관련된 컴퓨터 판독가능 매체는 퍼스널 컴퓨터(120)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다.
여기에 설명되는 예시적인 환경은 하드 디스크, 이동식 자기 디스크(129) 및 이동식 광 디스크(131)를 사용하지만, 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체들도 예시적인 운영 환경에서 사용될 수도 있다. 이러한 다른 유형의 매체는 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지, RAM, ROM 등을 포함한다.
운영 체제(135), 하나 이상의 애플리케이션 프로그램(136), 기타 프로그램 모듈(137) 및 프로그램 데이터(138)를 포함하는 다수의 프로그램 모듈이 하드 디스크, 자기 디스크(129), 광 디스크(131), ROM(124) 또는 RAM(125)에 저장될 수 있다. 사용자는 키보드(140) 및 포인팅 장치(142) 등의 입력 장치를 통해 명령 및 정보를 퍼스널 컴퓨터(120)에 입력할 수 있다. 다른 입력 장치(도시 생략)은 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 직렬 포트 인터페이스(146)를 통해 처리 장치(121)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스에 의해 접속될 수도 있다. 모니터(147) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(148) 등의 인터페이스를 통해 시스템 버스(123)에 접속된다. 모니터 외에, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터 등의 기타 주변 출력 장치(도시 생략)를 포함한다. 도 1의 예시적인 시스템은 호스트 어댑터(155), 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(156), 및 SCSI 버스(156)에 접속된 외부 저장 장치(162)를 더 포함한다.
퍼스널 컴퓨터(120)는 원격 컴퓨터(149)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(149)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 도 1에는 메모리 저장 장치(150)만이 도시되었지만, 통상적으로 퍼스널 컴퓨터(120)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 LAN(151) 및 WAN(152)이 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(120)는 네트워크 인터페이스 또는 어댑터(153)를 통해 LAN(151)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(120)는 통상적으로 인터넷과 같은 WAN(152)을 통해 통신을 설정하기 위한 모뎀(154) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(154)은 직렬 포트 인터페이스(146)를 통해 시스템 버스(123)에 접속된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(120) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
호스트 및 가상 머신 라이브러리
이제, 도 2를 참조하면, 본 발명은 가상 머신(VM)들(12)의 라이브러리(10)와 관련하여 특별한 응용을 가질 수 있음을 알 수 있는데, 가상 머신 각각은 중지되고 아마도 셧다운된 형태로 라이브러리(10)에 저장되며, 적절한 방식으로 라이브러리(10)로부터 검색되어, 호스트(14) 상에서 재시작될 수 있다. 여기서, 라이브러리(10), VM들(12) 및 호스트(14)는 본 발명의 사상 및 범위를 벗어나지 않는 한 임의의 적절한 라이브러리, VM들 및 호스트일 수 있음에 유의한다. 이러한 라이브러리, VM들 및 호스트는 공지되어 있거나, 관련 업계에 명백할 것이며, 따라서 이미 제공된 것을 넘어 더 이상 상세히 설명될 필요가 없다.
전술한 바와 같이, 라이브러리(10) 내의 각각의 VM(12)은 호스트(14) 상에서 재시작될 때 하드웨어 시스템을 에뮬레이트하는 소프트웨어 구조 등이다. 따라서, VM(12)은 호스트(14)의 자원들을 이용하여 사용 애플리케이션 등을 인스턴스화하는 동시에, 사용 애플리케이션을 호스트(14) 또는 호스트(14) 상의 다른 애플리케이션들로부터 격리할 수 있다. 도시된 바와 같이, 호스트(14)는 각자가 몇몇 소정 기능을 독립적으로 수행하는 복수의 전개된 VM(12)을 수용할 수 있다. 예를 들어, 호스트(14) 상에 전개된 VM들(12)의 적어도 일부는 데이터 서버들로서 동작할 수 있고, VM들(12)의 적어도 일부는 호스트(14)에 결합된 네트워크(16)와 관련하여 네트워크 서버들로서 동작할 수 있으며, VM들(12)의 적어도 일부는 메일 서버들로서 동작할 수 있고, VM들(12)의 적어도 일부는 유지 기능, 데이터 수집, 하드웨어 모니터링, 에러 수정, 파일 관리 등을 포함하는 저레벨 기능들을 수행할 수 있다. 특히, 각각의 VM(12)은 가상 형태이지만 사실상 컴퓨팅 머신이다.
호스트(14) 자체는 VM들(12) 중 하나 이상을 호스트하는 데 필요한 기능 및 용량을 갖는 데스크톱 컴퓨터, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 데이터 보조 장치, 메인프레임 컴퓨터, 또는 임의의 다른 유형의 컴퓨팅 장치일 수 있다. 그러나, 각각의 VM은 호스트(14)로부터 상당한 메모리, I/O 동작들, 저장 공간 및 프로세서 용량을 요구할 수 있고, 또한 호스트(14)는 어느 한 시점에 VM들(12) 중 2, 5, 10, 20 또는 그 이상을 수용할 것으로 예상될 수 있으며, 아마도 호스트(14)는 VM들(12)을 실제로 수용할 수 있도록 상당한 성능 및 자원들을 가져야 한다는 점에 유의한다.
라이브러리(10)는 본 발명의 사상 및 범위를 벗어나지 않는 한 임의 종류의 컴퓨팅 장치 상의 임의 종류의 라이브러리일 수 있다. 예를 들어, 라이브러리(10)는 라이브러리(10)의 VM들(12) 모두를 유지하기에 충분한 용량의 서버 상에 위치할 수 있거나, 충분한 용량의 적절한 디스크 드라이브 상에 단순히 위치할 수 있다. 후자의 경우, 디스크 드라이브는 호스트(14)의 일부일 수도 있다. 또한, 다수의 이용 가능한 호스트(14)가 존재하는 경우에, 아마도 라이브러리(10)는 호스트들(14)과 물리적으로 분리되지만, 통신적으로 결합된다는 점에 유의한다. 상상컨대, 라이브러리(10) 자체도 가상 머신 상에 위치할 수 있다.
전술한 바와 같이, 가상 구조로서의 각각의 VM(12)은 뜻대로 중지되고 재시작될 수 있으며, 중지시 파일 등의 방식으로 라이브러리(10)에 저장되고 그로부터 검색될 수 있다. 특히, 각각의 VM(12)은 적절히 패키지화될 수 있는 단독 소프트웨어 구조인데, 이는 이 소프트웨어 구조가 VM(12)에 관한 운영 데이터 및 상태 정보를 포함하는, VM(12)과 관련된 모든 데이터를 포함하기 때문이다. 따라서, 제1 호스트(14) 상의 VM(12)은, VM(12)을 제1 호스트(14)에서 중지하고, 중지된 VM(12)을 제2 호스트(14)로 이동시키고, 이동된 VM(12)을 제2 호스트(14)에서 재시작함으로써 간단히 호스트들(14) 사이에서 이동 또는 '이주'될 수 있다.
일반적으로, 반드시 그렇지는 않지만, 도 2의 시스템은 적절한 컴퓨팅 장치 등에서 동작하는 VM 컨트롤러(18)를 포함한다. 대체로, 그리고 알 수 있듯이, VM 컨트롤러(18)는 라이브러리(10)로부터 저장된 VM(12)을 검색하고, 검색된 VM을 특정 호스트(14) 상에서 재시작함으로써 검색된 VM(12)을 전개하며, 또한 전개된 VM(12)을 중지시키고 중지된 VM(12)을 라이브러리(10)에 저장하도록 동작하는데, 이들 모두는 사용자 등의 적절한 지시 하에 이루어진다. 따라서, 특정 처리 시나리오를 필요로 하는 사용자 등은 VM 컨트롤러(18)를 통해 라이브러리(10)를 탐색하여 시나리오를 해결하는 적절한 VM(12)을 찾고, 이러한 VM(12)의 발견시, 사용자는 VM 컨트롤러(18)를 이용하여 VM(12)을 검색하여 재시작할 수 있다. 유사한 방식으로, VM을 전개한 사용자 등은 임의의 적절한 시점에 VM을 중지시키고 중지된 VM을 후속 검색을 위해 라이브러리에 저장할 수 있으며, 이때 저장된 VM은 라이브러리로부터의 검색시에 재시작되어 처리를 계속할 수 있다. 여기서, VM 컨트롤러(18)는 본 발명의 사상 및 범위를 벗어나지 않는 한 임의의 적절한 VM 컨트롤러일 수 있음에 유의한다. 이러한 VM 컨트롤러(18)는 공지되어 있거나 관련 업계에 명확할 것이며, 따라서 이미 제공된 것을 넘어 더 이상 상세히 설명될 필요는 없다.
패치를 이용한 갱신
전술한 바와 같이, 라이브러리(10) 내의 각각의 VM(12) 자체는 물리적 의미에서 소프트웨어 구조이지만, 가상적인 의미에서 VM(12) 자체는 레지스트리 등을 갖는 운영 체제, 하나 이상의 사용 애플리케이션, 다양한 장치 드라이버 및 장치 라이브러리 등을 포함하는 복수의 소프트웨어 구조(즉, 집합적으로 '소프트웨어 구조들')를 포함한다. 특히, 임의의 VM(12)의 각각의 소프트웨어 구조는 때때로 패치 등의 형태의 소프트웨어 갱신을 필요로 할 수 있다. 이러한 패치(20) 등의 형태의 소프트웨어 갱신은 공지되어 있거나 관련 업계에 명확할 것이며, 따라서 더 이상 상세히 설명될 필요는 없다. 알 수 있듯이, 이러한 갱신은 소프트웨어 구조를 현재 상태로 유지하거나, 구조에 추가 기능을 제공하거나, 구조와 관련된 보안 문제를 해결하는 것 등을 포함하는 임의의 다양한 이유로 수행될 수 있다. 따라서, 본 발명은 임의의 특정 소프트웨어 갱신 또는 패치(20)(이하 '패치(20)') 또는 그 유형과 관계없이 동작할 수 있다.
일반적으로, 패치(20)는 적어도 부분적으로 자동화된 방식으로 VM(12)의 소프트웨어 구조와 같은 소프트웨어 구조에 적용될 수 있다. 따라서, 구조는 임의의 새로운 패치들(20)에 대해 하나 이상의 갱신 소스(22)에 주기적으로 쿼리하는 갱신 기능을 포함할 수 있으며, 입수 가능한 경우에 갱신 기능은 아마도 사용자 등의 지원 및/또는 승인 하에 갱신 소스(22)로부터 각각의 새로운 패치(20)를 얻어 이를 설치한다. 구조 등과 관련된 갱신 기능은 공지되어 있거나 관련 업계에 명확할 것이며, 따라서 더 이상 상세히 설명될 필요는 없다. 따라서, 본 발명은 임의의 특정 갱신 기능에 관계없이 동작할 수 있다.
하지만, VM(12)의 임의의 특정 구조의 갱신 기능을 위해, VM(12) 자체도 전개되어 동작하고 있어야 한다는 점에 유의한다. 달리 말하면, 중지되어 라이브러리 등에 저장된 VM은 어떠한 처리도 수행할 수 없으며, 따라서 중지되어 저장된 VM의 구조의 갱신 기능은 갱신 소스(22)로부터 패치(20)를 얻어 설치할 수 없다. 요컨대, 라이브러리(10) 내에 위치하는 VM(12)의 소프트웨어 구조는 갱신될 수 없다. 결과적으로, 소프트웨어 구조는 갱신을 위해, 사실상 VM(12)이 라이브러리(10)로부터 검색되어 호스트(14) 상에서 재시작될 때까지 기다려야 한다.
하지만, 보안 갱신과 같은 중요한 갱신은 라이브러리(10)에 저장된 VM(12)의 특정 구조에 대해 발행되는 것이 매우 당연할 수도 있다는 점에 유의한다. 이러한 상황에서, VM(12)은 보안 갱신이 막고자 하는 보안 위협으로부터 보호되지 못하며, 따라서 구조가 보호되지 않는 상태에서는 어떠한 호스트(14)에도 전개되지 않아야 한다. 구체적으로, 특히 호스트(14)가 네트워크(16)와 같은 임의의 네트워크에 대한 액세스를 갖는 경우에, 이러한 보호되지 않는 VM(12)의 전개는 네트워크(16), 호스트(14), 네트워크(16) 상의 다른 호스트들(14) 등의 보안 파괴를 포함하는 임의의 다양한 심각한 보안 상황이 발생하게 할 수 있다.
따라서, 도 2를 계속 참조하면, 본 발명의 일 실시예에서, VM 컨트롤러(18)는 VM(12)을 유지 호스트(14m)에 전개하며, 유지 호스트(14m)는 적절한 통신 결합을 통해 갱신 소스(22)에 액세스하지만, 네트워크(16)를 통해 또는 다른 방법으로 어떠한 호스트(14)에도 액세스하지 못한다. 특히, 이제 도 3을 참조하면, VM 컨트롤러(18)는 스케쥴러(24; 도 2)에 기초하여 하나 이상의 VM(12) 각각을 갱신을 위해 유지 호스트(14m)에 주기적으로 전개하도록 동작할 수 있다(단계 301). 이제, 알 수 있듯이, 유지 호스트(14m)에서, 각각의 전개된 VM(12)의 소프트웨어 구조들 중 하나 이상이 적절히 취득된 패치들(20)을 이용하여 갱신되며(단계 305), 이후 갱신된 VM(12)은 중지되고, 갱신된 형태로 라이브러리(10)에 저장되어, 호스트(14)에서의 다음 전개를 기다린다(단계 307). 전개된 VM(12)의 소프트웨어 구조들은 소프트웨어 구조들에 의해 트리거된 프로세스들에 기초하여 갱신되거나(단계 303a), VM 컨트롤러(18)에 의해 트리거된 프로세스들에 기초하여 갱신될 수 있다(단계 303b). 후자의 경우, VM 컨트롤러(18)는 트리거를 수행하기 위해 적절한 공지 인터페이스들을 이용할 수 있다.
여기서, 스케쥴러(24)는 본 발명의 사상 및 범위를 벗어나지 않는 한, 예를 들어 VM 컨트롤러(18)의 일부인 태스크 스케쥴러와 같은 임의의 적절한 스케쥴러일 수 있으며, 임의의 적절한 기준에 기초하여 갱신을 위해 각각의 VM(12)을 스케쥴링할 수 있다는 점에 유의한다. 예를 들어, 스케쥴러(24)는 VM 컨트롤러(18)가 각각의 VM(12)을 유지 호스트(14m)에 매주 한번, 2주에 한번 등으로 전개하게 하도록 동작할 수 있다. 이러한 스케쥴러 및 이러한 스케쥴링은 공지되어 있거나 관련 업계에 명확할 것이며, 따라서 더 이상 상세히 설명될 필요는 없다. 또한, 유지 호스트(14m)는, 본 발명의 사상 및 범위를 벗어나지 않는 한, 유지 호스트 상에 전개된 각각 VM(12)을 다른 호스트들(14)로부터 격리 또는 고립시키고, 갱신 소스(22)에 대해서만 액세스를 허가해야 하는 요건에 따르는 임의의 적절한 호스트일 수 있다는 점에 유의한다.
알 수 있듯이, 도 2의 스케쥴러(24)에 기초하여 도 3에 도시된 방식으로 동작하는 VM 컨트롤러(18)는, VM(12)에 대해 갱신이 필요한지에 관계없이 각각의 VM(12)이 유지 호스트(14m)에 전개된다는 점에서, 다소 비효율적이다. 따라서, 본 발명의 일 실시예에서, 이제 도 4를 참조하면, 먼저 각각의 스케쥴링된 VM(12)을 유지 호스트(14m)에 전개하는 대신에, VM 컨트롤러(18)는 VM(12)의 구성 컴포넌트들이 검사될 수 있도록 유지 호스트(14m), 라이브러리(10) 등과 같은 컴퓨팅 장치에 VM(12)을 탑재한다(단계 401). 이러한 VM(12)의 검사를 위한 탑재는 공지되어 있거나 관련 업계에 명확할 것이며, 따라서 더 이상 상세히 설명될 필요는 없다. 따라서, 본 발명의 사상 및 범위를 벗어나지 않는 한, 임의의 특정 형태의 탑재가 수행될 수 있다. 예를 들어, 이러한 VM(12)은 그의 구성 컴포넌트들이 복수의 파일 등을 갖는 디스크 드라이브 등의 방식으로 검사될 수 있도록 탑재될 수 있다.
이어서, 탑재된 때, VM 컨트롤러(18)는 VM(12)의 다양한 부분을 검사하여, VM(12)의 다양한 구조들이 현재 상태인지를 판정할 수 있다(단계 403). 구체적으로, 이해할 수 있듯이, 이러한 판정은 하나 이상의 패치(20)를 이용한 갱신이 필요한지를 결정하는 데 일반적으로 사용되는 파일 버전, 레지스트리 정보 및 다른 데이터와 같은 탑재된 VM(12)으로부터의 정보를 검토함으로써 VM 컨트롤러(18)에 의해 수행될 수 있다. 이어서, 하나 이상의 패치(20)가 실제로 필요한 경우, VM 컨트롤러(18)는 적절한 패치 소스(22)로부터 각각의 그러한 패치(20)를 취득하여, 이를 VM(12)에 적용할 수 있다. 특히, 이러한 패치들(20)은 탑재된 VM(12)에 적용되거나(단계 407a), 필요한 경우에 유지 호스트(14m)에 전개된 VM(12)에 적용될 수 있다(단계 407b).
단계 407a에서와 같은 전자의 경우, VM 컨트롤러(18)는 탑재된 VM(12) 상의 파일 대체, 파일 변경 등에 의해 각각의 패치(20)를 적용할 것이다. 탑재된 VM(12) 상에서 레지스트리 하이브 파일을 찾은 후에 찾은 레지스트리 하이브를 유지 호스트(14m), 라이브러리(10) 등에 로딩하고, 로딩된 하이브를 변경하고, 변경된 하이브를 대응하는 찾은 하이브에 대한 대체물로서 저장함으로써 임의의 필요한 레지스트리 변경들이 수행될 수 있다. 단계 407b에서와 같은 후자의 경우, VM 컨트롤러(18)는 먼저 유지 호스트(14m) 등으로부터 VM(12)을 내린 후, 이를 유지 호스트(14m) 상에 전개할 것이다. 마지막으로, VM(12)이 모든 필요한 패치들(20)을 이용하여 갱신된 후, VM 컨트롤러(18)는 유지 호스트(14m) 등으로부터 VM(12)을 내리고, 내려진 VM(12)을 라이브러리(10)에 저장함으로써(단계 409a), 또는 전개된 VM(12)을 중지시키고, 중지된 VM(12)을 라이브러리(10)에 저장함으로써(단계 409b), 갱신된 VM(12)을 다시 라이브러리(10)로 이동시킬 수 있다.
알 수 있듯이, 도 4에 도시된 방식으로 동작하는 VM 컨트롤러(18)는 때때로, 각각의 VM(12)이 사용자 등에 의해 사용되려고 하는지에 관계없이 갱신된다는 점에서 비효율적일 수 있다. 즉, 각각의 VM(12)은 VM(12)이 전개될 가능성이 거의 없는 경우에도 갱신된다. 따라서, 본 발명의 일 실시예에서, 이제 도 5를 참조하면, VM 컨트롤러(18)는 각각의 현재 상태가 아닌 VM(12)을 실제로 갱신하는 대신에 VM(12)을 현재 상태가 아닌 것으로 표시하며, VM(12)은 사실상 실제로 전개되지 전에만 갱신된다. 구체적으로, 전과 같이, VM 컨트롤러(18)는 예를 들어 단계 401에서와 같이 VM(12)의 구성 컴포넌트들이 검사될 수 있도록 VM(12)을 탑재함으로써 각각의 스케쥴링된 VM(12)이 현재 상태인지를 판정한다(단계 501). 또한, 여기서 각각의 현재 상태가 아닌 VM(12)은 예를 들어 라이브러리(10) 내에 VM(12)과 함께 적절한 표시를 포함시킴으로써 적절한 방식으로 그렇게 표시된다(단계 503). 따라서, 사용자가 라이브러리(10)로부터 전개될 각각의 VM(12)을 선택할 때(단계 505), VM 컨트롤러(18)는 먼저 선택된 VM(12)이 현재 상태가 아닌 것으로 표시되어 있는지를 검사한다(단계 507). 현재 상태가 아닌 경우, VM(12)은 먼저 유지 호스트(14m)에 탑재 또는 전개되고, 단계 301 이하에서 또는 단계 401 이하에서와 같이 갱신되며(단계 509), 이후 이제 현재 상태인 VM(12)이 선택 사용자에 의한 사용을 위해 호스트(14)에 전개된다(단계 511).
결론
본 발명과 관련하여 수행되는 프로세스들을 수행하는 데 필요한 프로그래밍은 비교적 간단하며, 관련 프로그래밍 업계에 자명해야 한다. 따라서, 이러한 프로그래밍은 이에 첨부되지 않는다. 또한, 본 발명의 사상 및 범위를 벗어나지 않는 한, 임의의 특정 프로그래밍이 본 발명을 실시하는 데 사용될 수 있다.
위의 설명에서, 본 발명은 라이브러리(10)에 저장된 VM(12)에 갱신을 적용하기 위한 새롭고 유용한 시스템 및 방법을 포함한다는 것을 알 수 있다. 본 발명의 발명적인 개념들로부터 벗어나지 않고 전술한 실시예들에 대한 변경들이 이루어질 수 있다는 것을 알아야 한다. 따라서, 본 발명은 개시된 특정 실시예들로 제한되는 것이 아니라, 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내의 변형들을 포함하는 것을 의도한다는 것을 이해해야 한다.

Claims (20)

  1. 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법으로서,
    각각의 VM은 상기 라이브러리로부터의 검색 및 호스트 컴퓨팅 장치 상에서의 재시작을 위해 상기 라이브러리에 중지된 형태로 저장되고, 상기 라이브러리 내의 각각의 VM은 호스트 컴퓨팅 장치 상에서 재시작될 때 하드웨어 시스템을 에뮬레이트하는 소프트웨어 구조이고, 각각의 재시작된 VM은 복수의 소프트웨어 구조를 포함하고, 상기 라이브러리 내의 각각의 VM의 적어도 하나의 소프트웨어 구조는 현재 상태가 아니고 소프트웨어 갱신을 필요로 하며,
    상기 방법은, 상기 라이브러리 내의 각각의 VM에 대해,
    상기 라이브러리로부터 상기 VM을 주기적으로 검색하고, 적어도 하나의 갱신 소스에 대한 액세스를 갖지만, 임의의 호스트 컴퓨팅 장치에 대한 액세스는 갖지 않는 유지 호스트 컴퓨팅 장치 상에서 상기 검색된 VM을 재시작하는 단계;
    대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득함으로써, 상기 재시작된 VM의 각각의 현재 상태가 아닌 소프트웨어 구조가 상기 유지 호스트 컴퓨팅 장치에서 갱신되게 하는 단계; 및
    상기 갱신된 VM을 중지시키고, 상기 중지된 VM을 상기 라이브러리에 저장하여, 상기 호스트 컴퓨팅 장치에서의 검색 및 재시작을 기다리는 단계
    를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  2. 제1항에 있어서, 상기 재시작된 VM의 각각의 현재 상태가 아닌 소프트웨어 구조가 갱신되도록 외부에서 트리거하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  3. 제1항에 있어서, 상기 재시작된 VM의 각각의 현재 상태가 아닌 소프트웨어 구조가 갱신되도록 그 자신을 내부적으로 트리거하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  4. 제1항에 있어서, VM 컨트롤러가 상기 라이브러리로부터 저장된 VM을 검색하고, 상기 검색된 VM을 상기 유지 호스트 컴퓨팅 장치 상에서 재시작하며, 또한 상기 재시작된 VM을 중지시키고, 상기 중지된 VM을 상기 라이브러리에 저장하도록 동작하며, 상기 방법은 상기 VM 컨트롤러에 의해 수행되는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  5. 제4항에 있어서, 상기 VM 컨트롤러가 스케쥴러에 기초하여, 갱신을 위해 상기 라이브러리의 각각의 VM을 상기 유지 호스트 컴퓨팅 장치에 주기적으로 전개하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  6. 제1항에 있어서, 스케쥴러에 기초하여, 갱신을 위해 상기 라이브러리의 각각의 VM을 상기 유지 호스트 컴퓨팅 장치에 주기적으로 전개하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  7. 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법으로서,
    각각의 VM은 상기 라이브러리로부터의 검색 및 호스트 컴퓨팅 장치 상에서의 재시작을 위해 상기 라이브러리에 중지된 형태로 저장되고, 상기 라이브러리 내의 각각의 VM은 호스트 컴퓨팅 장치 상에서 재시작될 때 하드웨어 시스템을 에뮬레이트하는 소프트웨어 구조이고, 각각의 재시작된 VM은 복수의 소프트웨어 구조를 포함하고, 상기 라이브러리 내의 각각의 VM의 적어도 하나의 소프트웨어 구조는 현재 상태가 아니고 소프트웨어 갱신을 필요로 하며,
    상기 방법은, 상기 라이브러리 내의 각각의 VM에 대해,
    상기 라이브러리로부터 상기 VM을 주기적으로 검색하고, 임의의 호스트 컴퓨팅 장치에 대한 액세스를 갖지 않는 컴퓨팅 장치에 상기 검색된 VM을 탑재하는 단계;
    상기 탑재된 VM의 구성 컴포넌트들을 검사하여, 상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 판정하고, 각각의 현재 상태가 아닌 소프트웨어 구조에 대해, 대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득하고, 각각의 패치를 상기 탑재된 VM에 적용함으로써 유지 호스트 컴퓨팅 장치에서 상기 탑재된 VM을 갱신하는 단계;
    상기 갱신된 VM을 상기 라이브러리에 저장하여, 상기 호스트 컴퓨팅 장치에서의 검색 및 재시작을 기다리는 단계
    를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  8. 제7항에 있어서, 상기 컴퓨팅 장치에 탑재된 상기 현재 상태가 아닌 소프트웨어 구조에 각각의 패치를 적용하는 단계를 포함하고, 상기 방법은 상기 갱신된 VM을 상기 유지 호스트 컴퓨팅 장치로부터 내린 후에 상기 라이브러리에 상기 갱신된 VM을 저장하는 단계를 더 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  9. 제7항에 있어서, 상기 유지 호스트 컴퓨팅 장치에서 재시작된 상기 현재 상태가 아닌 소프트웨어 구조에 각각의 패치를 적용하는 단계를 포함하고, 상기 유지 호스트 컴퓨팅 장치로부터 상기 VM을 내린 후에 상기 VM을 상기 유지 호스트 컴퓨팅 장치에서 재시작하는 단계를 포함하며, 상기 방법은 상기 갱신된 VM을 상기 유지 호스트 컴퓨팅 장치에서 중지시킨 후에 상기 갱신된 VM을 상기 라이브러리에 저장하는 단계를 더 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  10. 제7항에 있어서, 상기 검색된 VM을 상기 컴퓨팅 장치에 탑재하여, 상기 탑재 된 VM의 구성 컴포넌트들이 복수의 파일을 갖는 디스크 드라이브의 방식으로 검사될 수 있게 하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  11. 제7항에 있어서, 상기 탑재된 VM의 구성 컴포넌트들을 검사하여 상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 판정하는 단계는 파일 버전들 및 레지스트리 정보를 포함하는 상기 탑재된 VM으로부터의 정보를 검토하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  12. 제7항에 있어서, VM 컨트롤러가 상기 라이브러리로부터 저장된 VM을 검색하고, 상기 검색된 VM을 상기 컴퓨팅 장치에 탑재하며, 또한 상기 갱신된 VM을 상기 라이브러리에 저장하도록 동작하며, 상기 방법은 상기 VM 컨트롤러에 의해 수행되는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  13. 제12항에 있어서, 상기 VM 컨트롤러가 스케쥴러에 기초하여, 갱신을 위해 상기 라이브러리의 각각의 VM을 상기 유지 호스트 컴퓨팅 장치에 주기적으로 전개하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  14. 제7항에 있어서, 스케쥴러에 기초하여, 갱신을 위해 상기 유지 호스트 컴퓨 팅 장치에 상기 라이브러리의 각각의 VM을 주기적으로 전개하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  15. 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법으로서,
    각각의 VM은 상기 라이브러리로부터의 검색 및 호스트 컴퓨팅 장치 상에서의 재시작을 위해 상기 라이브러리에 중지된 형태로 저장되고, 상기 라이브러리 내의 각각의 VM은 호스트 컴퓨팅 장치 상에서 재시작될 때 하드웨어 시스템을 에뮬레이트하는 소프트웨어 구조이고, 각각의 재시작된 VM은 복수의 소프트웨어 구조를 포함하고, 상기 라이브러리 내의 각각의 VM의 각각의 소프트웨어 구조는 적어도 잠재적으로 현재 상태가 아니고 소프트웨어 갱신을 필요로 하며,
    상기 방법은, 상기 라이브러리 내의 각각의 VM에 대해,
    상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 주기적으로 판정하고, 상기 VM의 임의의 소프트웨어 구조가 현재 상태가 아닌 경우에 상기 라이브러리 내의 VM을 현재 상태가 아닌 것으로 표시하는 단계;
    호스트 컴퓨팅 장치 상에서 검색 및 재시작될 상기 라이브러리로부터의 VM의 선택을 수신하는 단계;
    상기 선택된 VM이 상기 라이브러리에서 현재 상태가 아닌 것으로 표시되어 있는지를 판정하고, 현재 상태가 아닌 경우에 임의의 호스트 컴퓨팅 장치에 대한 액세스를 갖지 않는 유지 호스트 컴퓨팅 장치에서 상기 VM을 갱신하는 단계; 및
    상기 갱신된 VM을 상기 호스트 컴퓨팅 장치에서 재시작하는 단계
    를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  16. 제15항에 있어서, VM 컨트롤러가 상기 라이브러리로부터 저장된 VM을 검색하고, 상기 검색된 VM을 상기 유지 호스트 컴퓨팅 장치 상에서 재시작하며, 또한 상기 재시작된 VM을 중지시키고, 상기 중지된 VM을 상기 라이브러리에 저장하도록 동작하며, 상기 방법은 상기 VM 컨트롤러에 의해 수행되는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  17. 제16항에 있어서, 상기 VM 컨트롤러가 스케쥴러에 기초하여, 상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 주기적으로 판정하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  18. 제15항에 있어서, 스케쥴러에 기초하여, 상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 주기적으로 판정하도록 동작하는 단계를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  19. 제15항에 있어서,
    상기 VM을 갱신하는 단계는,
    상기 라이브러리로부터 상기 VM을 검색하고, 상기 검색된 VM을 상기 유지 호 스트 컴퓨팅 장치 상에서 재시작하는 단계; 및
    대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득함으로써 상기 재시작된 VM의 각각의 현재 상태가 아닌 소프트웨어 구조가 상기 유지 호스트 컴퓨팅 장치에서 갱신되게 하는 단계
    를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
  20. 제15항에 있어서,
    상기 VM을 갱신하는 단계는,
    상기 라이브러리로부터 상기 VM을 검색하고, 상기 검색된 VM을 상기 컴퓨팅 장치에 탑재하는 단계; 및
    상기 탑재된 VM의 구성 컴포넌트들을 검사하여, 상기 VM의 각각의 소프트웨어 구조가 현재 상태인지를 판정하고, 각각의 현재 상태가 아닌 소프트웨어 구조에 대해, 대응하는 갱신 소스로부터 필요한 소프트웨어 갱신을 적어도 하나의 패치로서 취득하고, 각각의 패치를 상기 탑재된 VM에 적용함으로써 상기 유지 호스트 컴퓨팅 장치에서 상기 탑재된 VM을 갱신하는 단계
    를 포함하는, 컴퓨팅 장치 상의 가상 머신(VM)들의 라이브러리와 관련된 방법.
KR1020087027887A 2006-05-22 2007-03-15 컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법 KR101279696B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/439,395 2006-05-22
US11/439,395 US8291409B2 (en) 2006-05-22 2006-05-22 Updating virtual machine with patch on host that does not have network access
PCT/US2007/006577 WO2007136448A1 (en) 2006-05-22 2007-03-15 Updating virtual machine with patch or the like

Publications (2)

Publication Number Publication Date
KR20090018909A true KR20090018909A (ko) 2009-02-24
KR101279696B1 KR101279696B1 (ko) 2013-06-27

Family

ID=38713349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087027887A KR101279696B1 (ko) 2006-05-22 2007-03-15 컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법

Country Status (14)

Country Link
US (1) US8291409B2 (ko)
EP (1) EP2024849B1 (ko)
JP (1) JP5113836B2 (ko)
KR (1) KR101279696B1 (ko)
CN (1) CN101454765B (ko)
AU (1) AU2007254474B9 (ko)
BR (1) BRPI0712660B1 (ko)
CA (1) CA2649888C (ko)
HK (1) HK1129748A1 (ko)
MX (1) MX2008014860A (ko)
MY (1) MY151935A (ko)
RU (1) RU2439677C2 (ko)
TW (1) TWI431531B (ko)
WO (1) WO2007136448A1 (ko)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US7870387B1 (en) 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US20080126792A1 (en) * 2006-09-19 2008-05-29 Herington Daniel E Systems and methods for achieving minimal rebooting during system update operations
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US8407696B2 (en) * 2007-06-04 2013-03-26 International Business Machines Corporation Method for delivering, testing, and applying software patches or other changes to a conventionally installed application in virtual application containers
CN100555298C (zh) * 2007-06-08 2009-10-28 北京飞天诚信科技有限公司 虚拟个人办公环境的方法和设备
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
JP2009217395A (ja) * 2008-03-07 2009-09-24 Nec Corp 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US8145471B2 (en) * 2008-04-30 2012-03-27 International Business Machines Corporation Non-destructive simulation of a failure in a virtualization environment
US8185884B2 (en) * 2008-06-23 2012-05-22 Novell, Inc. System and method for offline updation of software in virtual machine (VM) images
US9361089B2 (en) * 2008-07-22 2016-06-07 International Business Machines Corporation Secure patch updates of a virtual machine image in a virtualization data processing system
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US9003411B2 (en) * 2009-05-13 2015-04-07 Verizon Patent And Licensing Inc. Automated provisioning and configuration of virtual and physical servers
US8032618B2 (en) 2009-06-05 2011-10-04 Microsoft Corporation Asynchronous update of virtualized applications
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) * 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
JP5403445B2 (ja) * 2010-03-20 2014-01-29 株式会社Pfu 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
US20110239209A1 (en) * 2010-03-23 2011-09-29 Fujitsu Limted System and methods for remote maintenance in an electronic network with multiple clients
US8751857B2 (en) * 2010-04-13 2014-06-10 Red Hat Israel, Ltd. Monitoring of highly available virtual machines
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US20120102190A1 (en) * 2010-10-26 2012-04-26 International Business Machines Corporation Inter-virtual machine communication
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
CN102262549B (zh) * 2011-03-02 2014-10-15 奇智软件(北京)有限公司 补丁安装方法与系统
US8713088B2 (en) * 2011-03-27 2014-04-29 Hewlett-Packard Development Company, L.P. Identifying users of remote sessions
DE102011080231B4 (de) 2011-08-01 2022-09-29 Trumpf Werkzeugmaschinen Gmbh + Co. Kg Verfahren, Vorrichtung und System zur Maschinensteuerungswartung
US9772784B2 (en) 2011-08-10 2017-09-26 Nutanix, Inc. Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
CN102402446B (zh) * 2011-11-22 2014-12-17 华为数字技术(成都)有限公司 应用软件的安装方法和应用软件的安装装置
US8924954B2 (en) 2011-11-22 2014-12-30 Huawei Technologies Co., Ltd. Application software installation method and application software installation apparatus
CN104182257B (zh) * 2011-11-22 2017-09-05 华为数字技术(成都)有限公司 应用软件的安装方法和应用软件的安装装置
JP5100883B2 (ja) * 2011-11-29 2012-12-19 株式会社東芝 計算機および計算機の制御方法
US20140359617A1 (en) * 2011-12-08 2014-12-04 International Business Machines Corporation Patching a Virtual Image
US8776058B2 (en) 2011-12-11 2014-07-08 International Business Machines Corporation Dynamic generation of VM instance at time of invocation
CN103988177B (zh) 2011-12-12 2017-02-22 国际商业机器公司 基于维护寄存器的离线虚拟机的维护
WO2013140460A1 (en) * 2012-03-23 2013-09-26 Hitachi, Ltd. Patch applying method for virtual machine by cloning an operating system image on shared storage and applying a patch to this cloned image
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
JP6213053B2 (ja) 2012-09-04 2017-10-18 富士通株式会社 プログラム、情報処理装置およびスケジュール決定方法
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
WO2014204453A1 (en) * 2013-06-19 2014-12-24 Empire Technology Development, Llc Processor-optimized library loading for virtual machines
JP6098392B2 (ja) * 2013-06-24 2017-03-22 富士通株式会社 ソフトウェア修正パッチ抽出プログラム、ソフトウェア修正パッチ抽出方法および情報処理装置
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9600262B2 (en) 2013-09-19 2017-03-21 International Business Machines Corporation System, method and program product for updating virtual machine images
CN105580023B (zh) 2013-10-24 2019-08-16 迈克菲股份有限公司 网络环境中的代理辅助的恶意应用阻止
WO2015172107A1 (en) 2014-05-09 2015-11-12 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9733958B2 (en) * 2014-05-15 2017-08-15 Nutanix, Inc. Mechanism for performing rolling updates with data unavailability check in a networked virtualization environment for storage management
US10642507B2 (en) 2015-01-30 2020-05-05 Nutanix, Inc. Pulsed leader consensus management
JP2017004201A (ja) * 2015-06-09 2017-01-05 富士通株式会社 パッチプログラム抽出装置、パッチプログラム抽出プログラム及びパッチプログラム抽出方法
US9600267B2 (en) * 2015-06-15 2017-03-21 International Business Machines Corporation Optimizing provisioning through automated virtual machine template generation
CN105426753B (zh) * 2015-11-18 2019-06-21 北京北信源软件股份有限公司 无代理来宾虚拟机已安装软件检测方法、装置及系统
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10768920B2 (en) * 2016-06-15 2020-09-08 Microsoft Technology Licensing, Llc Update coordination in a multi-tenant cloud computing environment
US10362092B1 (en) 2016-10-14 2019-07-23 Nutanix, Inc. Entity management in distributed systems
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
USD886143S1 (en) 2018-12-14 2020-06-02 Nutanix, Inc. Display screen or portion thereof with a user interface for database time-machine
US10817157B2 (en) 2018-12-20 2020-10-27 Nutanix, Inc. User interface for database management services
US11816066B2 (en) 2018-12-27 2023-11-14 Nutanix, Inc. System and method for protecting databases in a hyperconverged infrastructure system
US11010336B2 (en) 2018-12-27 2021-05-18 Nutanix, Inc. System and method for provisioning databases in a hyperconverged infrastructure system
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11556517B2 (en) 2020-05-17 2023-01-17 International Business Machines Corporation Blockchain maintenance
US11604705B2 (en) 2020-08-14 2023-03-14 Nutanix, Inc. System and method for cloning as SQL server AG databases in a hyperconverged system
US11907167B2 (en) 2020-08-28 2024-02-20 Nutanix, Inc. Multi-cluster database management services
US11640340B2 (en) 2020-10-20 2023-05-02 Nutanix, Inc. System and method for backing up highly available source databases in a hyperconverged system
US11604806B2 (en) 2020-12-28 2023-03-14 Nutanix, Inc. System and method for highly available database service
US11892918B2 (en) 2021-03-22 2024-02-06 Nutanix, Inc. System and method for availability group database patching
US11803368B2 (en) 2021-10-01 2023-10-31 Nutanix, Inc. Network learning to control delivery of updates
US12105683B2 (en) 2021-10-21 2024-10-01 Nutanix, Inc. System and method for creating template for database services
US20230221939A1 (en) * 2022-01-07 2023-07-13 Dell Products L.P. Version history based upgrade testing across simulated information technology environments

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001294677A1 (en) * 2000-09-22 2002-04-02 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US8205193B2 (en) * 2001-06-11 2012-06-19 Hewlett-Packard Development Company, L.P. Runtime updating of virtual machine class files
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
JP4094560B2 (ja) * 2004-01-23 2008-06-04 株式会社エヌ・ティ・ティ・データ リソース分割サーバ及びリソース分割サーバプログラム
US20050257206A1 (en) * 2004-05-14 2005-11-17 Semerdzhiev Krasimir P Pair-update mechanism for update module
US7908339B2 (en) * 2004-06-03 2011-03-15 Maxsp Corporation Transaction based virtual file system optimized for high-latency network connections
US7441272B2 (en) * 2004-06-09 2008-10-21 Intel Corporation Techniques for self-isolation of networked devices
KR100627728B1 (ko) * 2004-07-28 2006-09-25 에스케이 텔레콤주식회사 데이터 코어망을 이용한 가상머신 애플리케이션의업데이트 방법 및 시스템
US7437721B2 (en) * 2004-09-29 2008-10-14 Microsoft Corporation Isolating software deployment over a network from external malicious intrusion
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US20070234331A1 (en) * 2006-01-06 2007-10-04 Sun Microsystems, Inc. Targeted automatic patch retrieval
US8225314B2 (en) * 2006-03-31 2012-07-17 Intel Corporation Support for personal computing in a public computing infrastructure by using a single VM delta image for each VM base image utilized by a user

Also Published As

Publication number Publication date
CA2649888A1 (en) 2007-11-29
EP2024849A4 (en) 2009-11-11
AU2007254474B2 (en) 2012-04-05
EP2024849B1 (en) 2015-04-22
BRPI0712660B1 (pt) 2019-06-18
MX2008014860A (es) 2008-12-01
US20070271561A1 (en) 2007-11-22
BRPI0712660A8 (pt) 2016-12-13
CA2649888C (en) 2015-05-12
AU2007254474B9 (en) 2012-05-24
EP2024849A1 (en) 2009-02-18
BRPI0712660A2 (pt) 2012-09-04
US8291409B2 (en) 2012-10-16
AU2007254474A1 (en) 2007-11-29
TW200809627A (en) 2008-02-16
CN101454765A (zh) 2009-06-10
RU2439677C2 (ru) 2012-01-10
HK1129748A1 (en) 2009-12-04
KR101279696B1 (ko) 2013-06-27
CN101454765B (zh) 2012-01-18
MY151935A (en) 2014-07-31
TWI431531B (zh) 2014-03-21
JP2009538469A (ja) 2009-11-05
WO2007136448A1 (en) 2007-11-29
JP5113836B2 (ja) 2013-01-09
RU2008146053A (ru) 2010-05-27

Similar Documents

Publication Publication Date Title
KR101279696B1 (ko) 컴퓨팅 장치 상의 가상 머신들의 라이브러리와 관련된 방법
US10261800B2 (en) Intelligent boot device selection and recovery
US11698839B1 (en) System and method for hybrid kernel and user-space checkpointing using a character device
EP1915680B1 (en) Archiving data in a virtual application environment
US9063821B1 (en) Method for updating operating system without memory reset
US7028305B2 (en) Operating system abstraction and protection layer
US7779402B2 (en) System and method for fine grain method update of an application to provide continuous availability
JP2021509200A (ja) コンテナを更新するためのシステム及び方法
US20070168970A1 (en) Method and system for automated distributed software testing
US20090007105A1 (en) Updating Offline Virtual Machines or VM Images
US20080104441A1 (en) Data processing system and method
US10715594B2 (en) Systems and methods for update propagation between nodes in a distributed system
US9619340B1 (en) Disaster recovery on dissimilar hardware
Potter et al. Reducing downtime due to system maintenance and upgrades
US20160266892A1 (en) Patching of virtual machines during data recovery
US10545788B2 (en) Physical to virtual scheduling system and method
US20120246634A1 (en) Portable virtual applications
US9032199B1 (en) Systems, devices, and methods for capturing information, creating loadable images, and providing for restarts in a computer system
US11743188B2 (en) Check-in monitoring for workflows

Legal Events

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

Payment date: 20160517

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 7