KR101569945B1 - 대규모 네트워킹 시스템들에서의 소프트웨어 배치 - Google Patents

대규모 네트워킹 시스템들에서의 소프트웨어 배치 Download PDF

Info

Publication number
KR101569945B1
KR101569945B1 KR1020107005738A KR20107005738A KR101569945B1 KR 101569945 B1 KR101569945 B1 KR 101569945B1 KR 1020107005738 A KR1020107005738 A KR 1020107005738A KR 20107005738 A KR20107005738 A KR 20107005738A KR 101569945 B1 KR101569945 B1 KR 101569945B1
Authority
KR
South Korea
Prior art keywords
image
application
node
delta
server
Prior art date
Application number
KR1020107005738A
Other languages
English (en)
Other versions
KR20100068392A (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 KR20100068392A publication Critical patent/KR20100068392A/ko
Application granted granted Critical
Publication of KR101569945B1 publication Critical patent/KR101569945B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

이미지 기반 배치를 이용하여 대규모 네트워킹 시스템 내의 서버 노드들로의 소프트웨어 배치가 제공된다. 일반적으로 변경 불가능한 이미지가 중앙 서비스에서 제공되며, 중앙 서비스로부터 서버 노드들로 전송된다. 이미지는 변경 불가능한 베이스 이미지 및 기록 가능한 델타 이미지를 포함하며, 역할 고유 및/또는 노드 고유 상태를 베이스 부분에 제공한다. 서버 노드가 중앙 서비스로부터 이미지를 수신할 때, 서버 노드는 설치 없이 이미지를 그대로 저장한다. 이어서, 서버 노드는 저장된 이미지로부터 직접 소프트웨어를 실행한다.

Description

대규모 네트워킹 시스템들에서의 소프트웨어 배치{SOFTWARE DEPLOYMENT IN LARGE-SCALE NETWORKED SYSTEMS}
대규모 네트워킹 시스템들은 애플리케이션들을 실행하고 비즈니스 및 연산 기능들을 위한 데이터를 유지하기 위한 다양한 환경에서 사용되는 일반적인 시스템들이다. 예컨대, 데이터 센터는 다양한 웹 애플리케이션들(예컨대, 이메일 서비스, 검색 엔진 서비스 등)을 제공할 수 있다. 대규모 네트워킹 시스템들은 많은 수의 서버 노드를 포함하며, 각각의 노드는 물리적 기계 또는 물리적 호스트 상에서 실행되는 가상 기계이다. 부분적으로는 그러한 대규모 시스템들 내에 포함될 수 있는 많은 수의 서버 노드들로 인해, 다양한 노드들에 대한 소프트웨어(운영 체제(OS) 및 애플리케이션의 양자)의 배치 및 각각의 노드 상에서의 소프트웨어의 유지는 시간 소모적이며 비용이 많은 드는 프로세스일 수 있다. 특히, 소프트웨어는 각각의 노드 상에 관습적으로 설치되고 국지적으로 업그레이드되며, 따라서 설치 및 업데이트는 개별 노드들에 고유하다. 온라인 프로비저닝(on-line provisioning) 및/또는 업데이트 프로세스 동안에만 검출되는 많은 실패가 발생할 수 있다. 게다가, 기계가 연속적으로 업그레이드되고 국지적으로 패치(patch)될 때, "비트 손상(bit rot)"이 발생할 수 있다. 비트 손상은 인간 또는 소프트웨어 에러들로 인해 발생할 수 있는 로컬 소프트웨어 상태(예를 들어, OS 구성 상태)의 변화들을 지칭한다. 이러한 상태가 변화할 때, 노드의 거동은 예측 불가능하게 될 수 있다.
본 요약은 아래의 상세한 설명에서 더 설명되는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 본 요약은 청구 발명의 중요한 특징들 또는 필수적인 특징들을 식별하고자 하는 의도도 없고, 청구 발명의 범위를 결정하는 보조물로서 사용하려는 의도도 없다.
본 발명의 실시예들은 대규모 네트워킹 시스템들 내의 서버 노드들에 대한 소프트웨어 배치에 관한 것이다. 실시예들은, 대개는 변경 불가능한 이미지가 중앙 서비스에서 제공되고, 중앙 서비스에서 서버 노드들로 전송되는 이미지 기반 배치를 이용한다. 이미지는 변경 불가능한 베이스 이미지, 및 기록 가능하고 베이스 부분에 역할 고유 및/또는 노드 고유 상태를 제공하는 델타 이미지를 포함한다. 서버 노드가 중앙 서비스로부터 이미지를 수신할 때, 서버 노드는 이미지를 설치하지 않고 그대로 저장한다. 이어서, 서버 노드는 저장된 이미지로부터 직접 소프트웨어를 실행한다.
본 발명은 첨부된 도면들을 참조하여 아래에 상세히 설명된다.
도 1은 본 발명의 구현에 사용하기에 적합한 예시적인 컴퓨팅 환경의 블록도이다.
도 2는 본 발명의 실시예들이 이용될 수 있는 예시적인 시스템의 블록도이다.
도 3은 본 발명의 일 실시예에 따른, 다수의 역할 및 다수의 버전을 위한 소프트웨어 이미지들을 저장하는 예시적인 온-노드 캐시의 블록도이다.
도 4는 본 발명의 일 실시예에 따른, 대규모 네트워킹 시스템 내의 서버 노드들에 대해 소프트웨어를 배치하기 위한 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른, 대규모 네트워킹 시스템 내의 서버 노드들에 대해 소프트웨어 업데이트들을 배치하기 위한 방법을 나타내는 흐름도이다.
법정 요건을 충족시키기 위해, 본 명세서에서 본 발명의 내용이 구체적으로 설명된다. 그러나, 설명 자체는 본 특허의 범위를 한정하는 것을 의도하지 않는다. 그보다는, 발명자들은 청구 발명이 현재 또는 미래의 다른 기술들과 연계하여 본 명세서에 설명되는 것들과 다른 단계들 또는 유사한 단계들의 조합들을 포함하도록 다른 방식들로 구현될 수도 있다는 것을 고려하였다. 더욱이, 본 명세서에서 "단계" 및/또는 "블록"이라는 용어들은 이용되는 방법들의 상이한 요소들을 나타내는 데 사용될 수 있지만, 그러한 용어들은 개별 단계들의 순서가 명시적으로 기술되지 않는 한, 그리고 그러할 때를 제외하고는, 본 명세서에 개시되는 다양한 단계들 사이의 임의의 특정 순서를 나타내는 것으로 해석되지 않아야 한다.
전술한 바와 같이, 본 발명의 실시예들은 이미지 기반 배치를 이용하여 대규모 네트워크 시스템들 내의 서버 노드들에 대해 소프트웨어 배치를 제공한다. 본 명세서에서 사용될 때, "이미지"는 임의의 캡슐화된 네임 스페이스(namespace)를 지칭한다.
따라서, 일 양태에서, 본 발명의 일 실시예는 대규모 네트워킹 시스템 내의 다수의 서버 노드에 소프트웨어를 배치하는 방법을 수행하기 위한 컴퓨터 이용가능 명령어들을 구현하는 하나 이상의 컴퓨터 판독가능 매체에 관련된다. 방법은 대규모 네트워킹 시스템 내의 중앙 서비스에서 제1 이미지를 제공하는 단계를 포함한다. 제1 이미지는 변경 불가능한 부분과 기록 가능한 부분을 포함한다. 방법은 중앙 서비스에서 서버 노드들로 제1 이미지를 전송하는 단계를 더 포함한다. 방법은 각각의 서버 노드에서 제1 이미지의 설치를 수행하지 않고 각각의 서버 노드에서 제1 이미지를 저장하는 단계를 더 포함한다. 방법은 하나 이상의 서버 노드에서 제1 이미지로부터 직접 소프트웨어를 실행하는 단계를 포함한다.
본 발명의 다른 실시예에서, 일 양태는 대규모 네트워킹 시스템 내의 다수의 서버 노드에 소프트웨어 업데이트를 배치하는 방법을 수행하기 위한 컴퓨터 이용가능 명령어들을 구현하는 하나 이상의 컴퓨터 판독가능 매체에 관련된다. 방법은 이전 이미지에 소프트웨어 업데이트를 적용하여 새로운 이미지를 생성하는 단계를 포함한다. 방법은 중앙 서비스에서 서버 노드들로 새로운 이미지를 전송하는 단계를 더 포함하며, 노드들의 적어도 일부는 이전 이미지를 실행하고 있다. 방법은 서버 노드들에서 새로운 이미지를 설치하지 않고 새로운 이미지를 저장하는 단계를 더 포함한다. 방법은 하나 이상의 서버 노드에서 새로운 이미지들로부터 직접 소프트웨어를 실행하는 단계를 더 포함한다.
본 발명의 또 다른 양태는 이미지를 저장하고 이미지를 복수의 서버 노드로 전송하기 위한 하나 이상의 컴퓨팅 장치를 포함하는 중앙 서비스를 포함하는 시스템에 관련된다. 이미지는 변경 불가능한 부분과 기록 가능한 부분을 포함한다. 서버 노드들은 중앙 서비스로부터 이미지를 수신하고, 이미지 설치 없이 이미지를 저장하고, 이미지로부터 직접 부팅하도록 구성된다.
본 발명의 개요를 간단히 설명하였지만, 본 발명의 다양한 양태들에 대한 일반적 상황을 제공하기 위해, 본 발명의 다양한 양태들이 구현될 수 있는 예시적인 운영 환경이 아래에 설명된다. 먼저, 도 1을 특히 참조하면, 본 발명의 실시예들을 구현하기 위한 예시적인 운영 환경이 도시되고, 일반적으로 컴퓨팅 장치(100)로서 지시된다. 컴퓨팅 장치(100)는 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 이용 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 또한, 컴퓨팅 장치(100)는 설명되는 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된.
본 발명은 컴퓨터, 또는 개인용 데이터 지원 장치 또는 다른 핸드헬드 장치와 같은 다른 기계에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 코드 또는 기계 이용가능 명령어들과 일반적으로 관련하여 설명될 수 있다. 일반적으로, 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 코드를 지칭한다. 본 발명은 핸드헬드 장치, 소비자 전자 장치, 범용 컴퓨터, 더 특수한 컴퓨팅 장치 등을 포함하는 다양한 시스템 구성들에서 실시될 수 있다. 본 발명은 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다.
도 1과 관련하여, 컴퓨팅 장치(100)는 메모리(112), 하나 이상의 프로세서(114), 하나 이상의 프리젠테이션 컴포넌트(116), 입력/출력 포트(118), 입력/출력 컴포넌트(120) 및 예시적인 전원(122)을 직접 또는 간접적으로 결합하는 버스(110)를 포함한다. 버스(110)는 하나 이상의 버스(어드레스 버스, 데이터 버스 또는 이들의 조합)일 수 있는 것을 나타낸다. 도 1의 다양한 블록들은 명료화를 위해 라인들로 표시되지만, 실제로는 다양한 컴포넌트들을 묘사하는 것은 그렇게 명료하지 않으며, 은유적으로는 라인들은 더 정확히는 뚜렷하지 않고 분명하지 않다. 예를 들어, 디스플레이 장치와 같은 프리젠테이션 컴포넌트를 I/O 컴포넌트로서 고려할 수 있다. 또한, 프로세서들은 메모리를 구비한다. 이것은 본 기술 분야의 특성임을 인식하며, 도 1은 본 발명의 하나 이상의 실시예와 관련하여 사용될 수 있는 예시적인 컴퓨팅 장치를 예시할 뿐이라는 것을 다시 언급한다. "워크스테이션", "서버", "랩톱", "핸드헬드 장치" 등과 같은 카테고리들 모두는 도 1 및 "컴퓨팅 장치"의 참조의 범위 내에서 고려되므로, 이들 간의 차이는 없다.
컴퓨팅 장치(100)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨팅 장치(100)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨팅 장치(100)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하는 식으로 그 신호의 특성 집합 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 않는다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
메모리(112)는 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 메모리는 이동식, 비이동식 또는 이들의 조합일 수 있다. 예시적인 하드웨어 장치는 반도체 메모리, 하드 드라이브, 광학 디스크 드라이브 등을 포함한다. 컴퓨팅 장치(100)는 메모리(112) 및/또는 I/O 컴포넌트들(120)과 같은 다양한 엔티티로부터 데이터를 판독하는 하나 이상의 프로세서를 포함한다. 프리젠테이션 컴포넌트(들)(116)는 사용자 또는 다른 장치에 대해 데이터 지시들을 제공한다. 예시적인 프리젠테이션 컴포넌트들은 디스플레이 장치, 스피커, 프린팅 컴포넌트, 진동 컴포넌트 등을 포함한다.
I/O 포트들(118)은 컴퓨팅 장치(100)가 그 일부가 내장형일 수 있는 I/O 컴포넌트들(120)을 포함하는 다른 장치들에 논리적으로 결합되는 것을 가능하게 한다. 예시적인 컴포넌트들은 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 프린터, 무선 장치 등을 포함한다.
이제, 도 2를 참조하면, 본 발명의 일 실시예에 따른, 서버 노드들에 대한 소프트웨어 배치를 용이하게 하는 시스템(200)을 나타내는 블록도가 제공된다. 본 명세서에 설명되는 이러한 배열 및 다른 배열들은 단지 예로서 설명된다는 것을 이해해야 한다. 도시된 배열들에 더하여 또는 그 대신에 다른 배열들 및 요소들(예컨대, 기계, 인터페이스, 기능, 순서 및 기능들의 그룹핑 등)이 사용될 수 있으며, 일부 요소들은 전부 생략될 수 있다. 또한, 본 명세서에 설명되는 요소들 중 많은 요소는 개별 또는 분산 컴포넌트들로서 또는 다른 컴포넌트들과 연계하여, 그리고 임의의 적절한 조합 및 위치에 구현될 수 있는 기능적 엔티티들이다. 본 명세서에서 하나 이상의 엔티티에 의해 수행되는 것으로서 설명되는 다양한 기능들은 하드웨어, 펌웨어 및/또는 소프트웨어에 의해 수행될 수 있다. 예를 들어, 다양한 기능들은 메모리에 저장된 명령어들을 실행하는 프로세서에 의해 수행될 수 있다.
도시되지 않은 다른 컴포넌트들 중에서, 시스템(200)은 일반적으로 중앙 서비스(202), 서버 노드들(204) 및 네트워크(206)를 포함할 수 있다. 중앙 서비스(202) 및 서버 노드들(204)을 포함하는 시스템(200)의 컴포넌트들의 각각은 예를 들어 도 1을 참조하여 설명된 컴퓨팅 장치(100)와 같은 임의 타입의 컴퓨팅 장치를 포함할 수 있다. 컴포넌트들은 하나 이상의 근거리 네트워크(LAN) 및/또는 광역 네트워크(WAN)를 포함할 수 있지만 이에 한정되지 않는 네트워크(206)를 통해 서로 통신할 수 있다. 그러한 네트워킹 환경들은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다. 본 발명의 범위 내의 시스템(200) 내에서는 임의 수의 중앙 서비스, 서버 노드 및 네트워크가 사용될 수 있다는 것을 이해해야 한다. 게다가, 시스템(200)의 많은 다른 컴포넌트들이 도시되지 않았지만, 이 분야의 통상의 기술자들은 그러한 컴포넌트들 및 그들의 상호 접속들이 공지되어 있다는 것을 알 것이다. 따라서, 시스템(200)에 도시되지 않은 컴포넌트들에 관한 추가적인 상세는 본 명세서에 더 개시되지 않는다.
중앙 서비스(202)는 시스템(200) 내의 서버 노드들(204)에 대한 소프트웨어(OS 및/또는 애플리케이션들)의 배치를 관리하기 위한 하나 이상의 컴퓨팅 장치(도 1의 컴퓨팅 장치(100) 등)를 포함할 수 있다. 중앙 서비스(202)는 이미지들의 형성 및 저장을 담당한다. 또한, 중앙 서비스(202)는 서버 노드들(204)로의 이미지 전송을 담당한다.
본 발명의 실시예들은 이미지 기반 배치를 이용하는데, 이는 적어도 두 가지를 의미한다. 첫째, 각각의 서버 노드(204)는 노드(204)가 실행할 소프트웨어의 정확한 이미지를 송신 받는다. 서버 노드(204)는 하나의 위치로부터 OS를 먼저 설치한 후에 잠재적으로 다른 위치로부터 추가적인 지원 소프트웨어를 설치하고 최종적으로 제3 위치로부터 애플리케이션 소프트웨어를 설치함으로써 그의 소프트웨어를 어셈블하지 않는다. 대신에, 서버 노드(204)는 그의 소프트웨어를, 실행할 준비가 된 패키지 형태로 수신한다. 둘째, 서버 노드(204)는 배치된 이미지로부터 직접 소프트웨어를 실행한다. 노드(204)는 이미지를, 단지 기계 상에 소프트웨어를 설치하기 위한 소스로서 사용하지 않는데, 그렇게 하는 것은 시간 소모적이고 에러가 발생하기 쉽기 때문이다. 대신에, 서버 노드(204)는 이미지로부터 OS를 실제로 부팅한다.
각각의 서버 노드(204)에 적어도 2개의 상이한 이미지(즉, OS 이미지 및 애플리케이션 이미지)를 배치함으로써 애플리케이션 상태가 OS 상태로부터 분리된다. 이미지들은 중앙 서비스(202)에서 개별적으로 형성되며, 서버 노드(204)에서 분리되어 유지된다. 애플리케이션들은 이러한 분리를 인식하는 것이 필요하다. 따라서, 일 실시예에서, 애플리케이션이 실행되는 OS 이미지는 애플리케이션 이미지와 다른 드라이브 문자로 표시된다. 특정 드라이브 문자 할당들은 사전 정의되는 것이 아니라, 설정을 통해 애플리케이션에 대해 이용 가능하다.
실시예들에서 각각의 소프트웨어 이미지(예를 들어, OS 이미지 또는 애플리케이션 이미지)는 베이스 이미지 및 델타 이미지를 포함한다. 베이스 이미지는 변경 불가능한(판독 전용인) 반면, 델타 이미지는 기록 가능하다. 델타 이미지는 베이스 이미지에 역할 고유 및/또는 노드 고유 상태를 제공하는 데 사용된다. 역할 고유 및/또는 노드 고유 데이터가 배치 전에 중앙 서비스(202)에서 및/또는 배치 후에 개별 서버 노드(204)에서 델타 이미지에 기록될 수 있다. 베이스 이미지 및 델타 이미지는 중앙 서비스(202)에 개별적으로 유지되고, 배치 시에 병합될 수 있다.
베이스 이미지들 및 델타 이미지들의 사용과 연계한 OS 및 애플리케이션들의 개별 이미지들로의 분리는 노드에 의해 실행되는 "이미지"가 실제로 여러 물리적 파일들의 세트를 포함함을 의미한다. 따라서, "이미지"는 파일들의 전체 세트(모든 베이스 이미지들 및 델타 이미지들)를 지칭한다. "OS 이미지" 또는 "애플리케이션 이미지"는 각각 OS 이미지 또는 애플리케이션 이미지에 대한 디스크 세트(베이스 이미지 및 델타 이미지)를 구성하는 파일들의 세트를 지칭한다.
본 발명의 일 실시예에서, 이미지들은 단일 파일 내에 캡슐화된 네이티브 호스트 파일 시스템 상에 위치할 수 있는 가상 기계 하드 디스크를 지정하는 마이크로소프트(등록 상표) 가상 하드 디스크(VHD) 포맷을 이용하여 저장된다. VHD 포맷은 단일 논리 디스크가 2개의 파일, 즉 "베이스" VHD 파일 및 "델타" VHD 파일 내에 유지되는 상이한 디스크들을 제공한다. 본 발명의 실시예들에서, 일반 상태는 베이스 VHD에 위치하는 반면, 역할 단위(per-role) 및 노드 단위(per-node) 상태는 델타 VHD에 위치한다. 베이스 VHD는 판독 전용이며, 에뮬레이트된 디스크에 행해진 임의의 변경들은 델타 VHD에 기록된다. 본 명세서에서는 특히 VHD 포맷이 설명되지만, 이 분야의 기술자는 본 발명의 실시예들의 범위 내에서 다른 패키징 기술들(예컨대, WIM)이 사용될 수도 있다는 것을 인식할 것이다.
본 발명의 실시예들에 따른 이미지 기반 배치는 다음을 포함하는 여러 방식으로 빠르고 신뢰성 있는 서버 프로비저닝을 가능하게 한다.
ㆍ 서버 노드들(204) 상에서의 설치 단계가 존재하지 않으며, 따라서 서버 노드(204)에 이미지가 배치되면, 노드(204)는 할당된 소프트웨어로 빠르게 부팅할 수 있다.
ㆍ 이미지들이 중앙 서비스(202)에서 집중적으로 어셈블되며, 이러한 단계 동안에 발생하는 임의의 에러들은 노드 단위(per-node) 설치 동안에 발생할 수 있는 에러들보다 더 쉽게 검출될 수 있다.
ㆍ 서버 노드들(204)은 이미지로부터 직접 부팅하며, 따라서 노드들(204)이 그들의 현재 역할들을 수행하고 있는 동안에 배경에서 새로운 이미지들(업데이트들 또는 상이한 역할들)을 배치하는 것을 가능하게 한다. 새로운 이미지들이 적절한 경우, 노드들(204)은 최소한의 다운 시간으로 그들의 새로운 역할들로 부팅할 수 있다. 일부 예들에서는, 구 이미지들이 노드들(204) 상에 캐시되어 유지되며, 필요에 따라 노드들(204)은 최소한의 다운 시간으로 그들의 이전 상태로 돌아갈 수 있다.
ㆍ 배치된 이미지들 내의 콘텐츠의 대부분은 모든 노드들(204) 사이에서 동일하며, 역할 단위(per-role) 상태 및/또는 노드 단위(per-node) 상태는 델타 이미지들을 이용하여 일반 상태로부터 분리된다. 이것은 일반 상태(베이스 이미지)가 멀티캐스트를 통해, OS 또는 애플리케이션 이미지의 해당 버전을 실행하는 모든 물리적 노드들(204)로 동시에 전송되는 것을 가능하게 한다. 이것은 배치가 차지하는 네트워크 대역폭을 줄이며, 롤아웃(roll-out)들을 더 빠르게 발생시킨다.
ㆍ 유사하게, 가상화 호스트 상에서, OS 데이터의 대다수가 모든 할당된 게스트 노드들 사이에서 동일하며, OS 베이스 VHD의 하나의 사본만이 호스트로 전송되면 된다.
이미지 기반 배치는 또한, 서버 노드들(204) 상에서의 패칭을 필요로 하지 않으므로 "비트 손상(bit-rot)" 문제의 감소를 돕는다. 대신에, 패치가 설치될 필요가 있거나, 애플리케이션의 새로운 버전이 이용 가능할 때, 이미지의 새로운 버전이 중앙 서비스(202)에서 생성된 후, 서버 노드들(204)로 옮겨진다. 이것은 배치 전에 패치 에러들이 검출되는 것을 가능하게 하고, 모든 서버 노드들(204)이 동일한 비트들의 세트를 실행하는 것을 보장한다. 정상 동작의 과정에서, 주어진 노드의 상태가 소정의 방식으로(예를 들어, 디스크 에러로 인해) 훼손되는 경우, 중앙 서비스(202)는 노드의 상태에 대한 "진실(truth)"을 가지고 있으므로 이미지를 재배치하고, 노드(204)를 알려진 양호한 상태로 빠르고 신뢰성 있게 복귀시킬 수 있다.
실시예들에서, 이미지 기반 배치는 또한 물리 노드 및 가상 노드의 양 노드에 대해 동일한 이미지 포맷을 이용하여 동일 베이스 이미지가 모든 서버 노드들(204)에 배치되는 것을 가능하게 함으로써 양 노드에 대한 직접 배치를 가능하게 한다. 가상 노드에 대해 이미지를 배치하기 위하여, 이미지가 물리 서버 노드(204) 상의 루트 파티션으로 전송된 후, 에뮬레이트된 물리 디스크로서 부착된 그 이미지를 이용하여 가상 기계가 실행된다. 물리 서버 노드(204)에 대해 이미지를 배치하기 위하여, 이미지가 노드(204) 상에서 실행되는 유지 OS로 전송되며, 물리 디스크 상에 이미지가 (파일로서) 저장된다. 이어서, 서버 노드(204)는 디스크 상에서 그대로 이용 가능한 이미지로부터 직접 재부팅된다. 예를 들어, 일부 실시예들에서, 서버 노드(204)는 이미지를 디스크로서 그대로 이용 가능하게 하는 특수 드라이버를 이용하여 이미지로부터 직접 재부팅된다.
이미지 기반 배치는 정적 상태와 동적 상태를 분리하므로, 베이스 이미지를 한번(즉, 이미지가 중앙 서비스(202)에서 형성될 때) 기록하고, 델타 이미지에 대한 기록들을 격리시킴으로써 플래시 드라이브들의 마모 한계 문제들을 (전반적으로) 줄이거나 방지할 수 있다. 일부 실시예들에서, 베이스 이미지는 한번 기록될 수 있으며, 델타 이미지들은 RAM 내에 유지될 수 있어, 언제라도 백지 상태에서 시작할 수 있다. 이것은 마모 한계 문제를 전반적으로 방지하며, 상태 없는 프론트 엔드 서버 노드들에 적합한 동작 모드일 것이다.
이미지 기반 배치는 또한 디스크 없는 동작 모드들의 이용을 가능하게 한다. 예를 들어, 일 실시예에서, 서버 노드(204)는 (예컨대, 인터넷 소형 컴퓨터 시스템 인터페이스(iSCSI)를 이용하여) 원격 디스크 이미지를 이용할 수 있다. 다른 실시예에서, 서버 노드(204)는 RAM으로부터 부팅하여, 이미지를 RAM 디스크로서 취급한다.
전술한 바와 같이, 중앙 서비스(202)는 배치 가능한 이미지들을 형성하고 서비스하기 위한 컴포넌트들을 포함한다. 이미지들은 오프라인으로 (즉, 활성 서버 노드들(204) 상에서가 아니라) 중앙 서비스(202)에 의해 형성된다.
OS 이미지들에 대해, 중앙 서비스(202)는 먼저 OS 베이스 이미지를 형성한다. 일부 실시예들에서는, 다수의 OS 베이스 이미지(예를 들어, 상이한 버전들)가 형성될 수 있다. 역할 고유 상태를 추가함으로써 OS 베이스 이미지 상에 서비스 역할들이 형성된다. 역할 고유 상태의 예는 OS 옵션 컴포넌트들의 인에이블링, 외부 소프트웨어의 추가 및 OS 설정들의 변경을 포함한다. 중앙 서비스(202)는 OS 베이스 이미지로부터 분리되지만 그에 링크되는 델타 이미지를 생성함으로써 그러한 역할 고유 상태가 배치에 이용될 수 있게 한다. 이와 함께, 일반 OS 베이스 이미지 및 역할 고유 델타 이미지는 중앙 서비스(202)에서 서버 노드(204)로 전송되는 OS 이미지가 된다.
일 실시예에서, 델타 이미지를 형성하는 프로세스는 오프라인 가상 기계에서의 이미지 부팅이 이어지는 이미지의 오프라인 구성을 포함한다. 이러한 가상 기계 부트는 모든 서버 노드(204) 상에서가 아니라 오프라인 구성 동안 한번 큐잉되는(queued) "온라인 액션들"을 실행하는 데 사용된다.
일부 실시예들에서, 중앙 서비스(202)는 또한, 예를 들어 애플리케이션 개발자에 의해 지정되는 설정들과 같은 노드 고유 OS 구성 설정들을 허가한다. 또한, 중앙 서비스(202)에 의해 생성되는 노드 고유 OS 구성 설정들이 존재할 수 있다. 이러한 설정들은 OS 이미지와 함께 서버 노드(204)에 배치되며, 노드(204)에서 노드 고유 델타 이미지를 생성하기 위하여 역할 고유 델타 이미지의 사본에 적용된다. 노드(204)는 이러한 이미지로부터 직접 OS를 부팅한다.
애플리케이션 이미지들은 마찬가지로 베이스 이미지 및 델타 이미지를 포함한다. 일 실시예에서, 애플리케이션 개발자들은 그들의 바이너리들 및 구성 설정들을 기술하는 매니페스트(manifest)를 제공할 수 있으며, 이러한 기술은 애플리케이션에 대한 베이스 이미지를 형성하는 데 사용된다. 노드 고유 애플리케이션 구성 설정들은 애플리케이션 베이스 이미지와 더불어 서버 노드(204)에 배치되며, 노드 고유 델타 이미지를 생성하기 위해 노드(204)에서 적용된다. 서버 노드(204)는 이 이미지로부터 직접 애플리케이션을 실행한다.
OS 및 애플리케이션 패치들 및 업데이트들이 이용 가능한 경우, 패치들 및 업데이트들은 서버 노드들(204)에서 개별적으로 적용되지 않는다. 대신에, 패치들 및 업데이트들은 새로운 배치 이미지들을 생성하기 위하여 중앙 서비스(202)에서 오프라인으로 적용되며, 이어서 새로운 배치 이미지들은 서버 노드들(204)에 배치된다. 중앙 서비스(202)에서 새로운 이미지들을 생성한 후에 이미지들을 서버 노드들(204)에 배치함으로써, 이 프로세스는 실패하거나 부분적으로 적용되는 서버 노드들(204) 상의 패치들의 문제의 방지를 돕는다.
전술한 바와 같이, 중앙 서비스(202)에서 형성된 이미지들은 서버 노드들(204)에 배치된다. 즉, 이미지들은 중앙 서비스(202)로부터 시스템(200) 내의 다양한 노드들(204)로 전송될 수 있다. 일부 실시예들에서, 베이스 이미지들은 노드 단위 상태를 포함하지 않으므로, 동일한 OS 및 애플리케이션 베이스 이미지들이 많은 서버 노드(204)에 의해 사용될 수 있다. 이것은, 많은 노드(204)가 동시에 프로비저닝되는 것이 필요할 때, 동일한 파일이 여러 번 복사되는 것이 필요하다는 것을 의미한다. 네트워크 대역폭 사용을 줄이기 위하여, 본 발명의 실시예들은 멀티캐스트 프로토콜을 이용하여 파일을 많은 노드에 동시에 전송한다.
서버 노드들(204)에서 이미지들이 수신된 후, 노드들(204)은 설치 없이 이미지들을 저장한다. 이것은 서버 노드들(204)이 배치된 이미지들의 캐시를 유지하는 것을 가능하게 한다. 즉, 서버 노드들(204) 상에 이미지들이 설치되지 않는 대신에 이미지 형태로 유지되므로, 서버 노드(204) 상에 다수의 이미지 세트(예를 들어, OS 및/또는 애플리케이션의 상이한 버전들)를 캐시하는 것이 가능하다. 이러한 설계는 시스템에 유연성을 제공하며, 다양한 기능을 가능하게 한다.
먼저, 서버 노드(204)가 이미지들의 캐시를 포함하는 것을 가능하게 하는 것은 배경에서 새로운 이미지들을 롤아웃할 수 있는 능력을 제공한다. 구체적으로, OS 또는 애플리케이션 이미지의 새로운 버전이 배치될 준비가 된 경우, 새로운 버전은 목적 노드들(204)이 이전 버전을 실행하고 있는 동안에 목적 노드들(204)에 복사될 수 있다. 이것은, 복사 시간이 다운 시간이 아니고, 네트워크 대역폭이 문제인 경우에 복사가 더 느린 속도로 진행될 수 있거나, 복사가 네트워크 부하의 소강 상태 동안에 발생할 수 있다는 것을 의미한다(전술한 바와 같이, 멀티캐스트 전송을 사용함으로써 네트워크 대역폭도 보존될 수 있다). 이미지 다운로드가 이미지 활성화로부터 분리되며, 이것은 다운로드 이미지들의 검증을 허가하며, 노드들을 새로운 이미지 버전으로 언제 스위칭할지를 결정하는 데 있어서 더 많은 자유도를 제공한다.
일부 실시예들에서, 새로운 이미지 버전이 배치될 때, 이전 버전은 서버 노드(204) 상의 이미지 캐시 내에 유지된다. 롤아웃 시퀀스 동안에 문제가 발생하는 경우, 예를 들어 1000개의 서버 노드(204) 중 500개의 서버 노드 상에서 이미지를 활성화한 후에 서비스가 정상적으로 동작하지 않는 것이 인식되는 경우, 이미 진행하였던 노드들(204)은 이전 이미지로 재부팅함으로써 매우 빠르게 복귀할 수 있다. 이전 이미지를 다시 다운로드하거나, 이전 이미지를 재설치할 필요가 없다. 문제가 해결되면, 롤아웃이 반복될 수 있다. (해결이 새로운 이미지의 변경을 수반하지 않는 경우, 새로운 이미지를 재복사할 필요가 없다는 점에 유의한다.)
실시예들은 또한 서버 노드(204)의 최종 공지된 양호한 상태로의 복귀를 용이하게 한다. 노드(204) 상에서 OS 볼륨 또는 애플리케이션 볼륨에 대해 이루어지는 변경들은 델타 이미지에 저장된다. 오리지널 델타 이미지는 역할(role)이 활성화되기 전에 저장될 수 있으며, 변경들로 인해 문제들이 발생하는 경우, 오리지널 델타 이미지는 배치 서버(즉, 중앙 서비스(202))로부터의 복사 없이 복구될 수 있다.
게다가, 본 발명의 실시예들은 서버 노드들(204)이 캐시된 이미지들을 이용하여 역할들을 쉽게 스위칭하는 것을 허가한다. 구체적으로, 둘 이상의 역할에 대응하는 이미지들이 주어진 서버 노드(204) 상에 캐시될 수 있다. 따라서, 노드(204)의 하나의 역할에서 다른 역할로의 스위칭은 노드(204)를 재부팅하는 것만큼 간단하다. 스위치 수행의 재설치 비용이 발생하지 않는다.
실시예들은 또한 체크섬들을 이용하여 베이스 이미지의 변경들을 식별하는 것을 용이하게 한다. 베이스 이미지는 서버 노드들(204) 상에서 판독 전용일 수 있는데, 이는 임의의 변경들이 델타 이미지에 기록되기 때문이다. 이것은 에러들(예를 들어, 디스크 에러들)로 인해 발생하는 베이스 이미지의 변경들이 체크섬들을 통해 검출될 수 있다는 것을 의미한다. 그러한 변경이 발생하는 경우, 베이스 이미지는 서버 노드(204)에 재복사될 수 있다.
제한이 아니라, 예로서, 도 3은 온-노드 이미지 캐시(300)의 콘텐츠의 일례를 나타내는 블록도이다. 본 예에서, 이미지들은 2개의 역할을 위해 캐시에 저장된다. 예를 들어, 역할 1은 서버 노드가 이메일 서비스를 제공하는 것을 가능하게 할 수 있으며, 역할 2는 서버 노드가 검색 엔진 서비스를 제공하는 것을 가능하게 할 수 있다. 전술한 바와 같이, 양 역할을 위한 이미지들을 캐시함으로써, 서버 노드는 노드를 간단히 재부팅함으로써 하나의 역할에서 다른 역할로 쉽고 빠르게 스위칭될 수 있다. 또한, 캐시 내에는, 역할 1의 2개의 버전, 즉 버전 1.0 및 1.1이 존재하는 반면, 역할 2의 하나의 버전, 즉 버전 1.1만이 존재한다. 전술한 바와 같이, 특정 역할의 다수의 버전을 캐시함으로써, 서버 노드는 필요한 경우에 이전 버전으로 빠르게 복귀할 수 있다. 예를 들어, 역할 1의 버전 1.1이 활성 역할인 경우, 이전 버전이 캐시에 저장되어 있으므로, 서버 노드는 재부팅에 의해 역할 1의 버전 1.0으로 빠르게 복귀할 수 있다.
도 3에 도시된 바와 같이, 역할 1의 버전 1.0은 OS v1.0 베이스 이미지(302), OS v1.0 델타 이미지(304), App 1 v1.0 베이스 이미지(306) 및 App 1 v1.0 델타 이미지(308)를 포함한다. 역할 1의 버전 1.1은 OS v1.1 베이스 이미지(312), OS v1.1 델타 이미지(314), App 1 v1.1 베이스 이미지(316) 및 App 1 v1.1 델타 이미지(318)를 포함한다. 역할 2의 버전 1.1은 OS v1.1 베이스 이미지(312), OS v1.1 델타 이미지(324), App 2 v1.1 베이스 이미지(326) 및 App 2 v1.1 델타 이미지(328)를 포함한다. 역할 1의 버전 1.1 및 역할 2의 버전 1.1의 양자는 OS v1.1 베이스 이미지(312)를 사용하며, 따라서 그 이미지의 하나의 사본만이 캐시에 저장되며, 공유될 수 있다.
도 4를 참조하면, 본 발명의 일 실시예에 따른, 대규모 네트워킹 시스템 내의 서버 노드들에 소프트웨어를 배치하기 위한 예시적인 방법(400)을 나타내는 흐름도가 제공된다. 먼저, 블록 402에서 지시되는 바와 같이, 도 2의 중앙 서비스(202)와 같은 중앙 서비스에서 소프트웨어 이미지가 제공된다. 소프트웨어 이미지는 OS 이미지 또는 애플리케이션 이미지를 포함할 수 있다. 전술한 바와 같이, 소프트웨어 이미지는 판독 전용인 베이스 이미지, 및 기록 가능한 델타 이미지를 포함한다. 델타 이미지는 역할 고유 및/또는 노드 고유 상태를 추가함으로써 베이스 이미지 상에 형성되는 것을 의도한다. 일부 실시예들에서, 중앙 서비스는 다수의 OS 이미지 및 다수의 애플리케이션 이미지를 유지할 수 있으며, 시스템 내의 서버 노드들(예를 들어, 도 2의 서버 노드들(204))로의 다양한 이미지의 배치를 관리한다.
블록 404에 지시되는 바와 같이, 이미지가 중앙 서비스에서 그 이미지에 대한 목적 서버 노드들로 전송된다. 구체적으로, 중앙 서비스에서 이미지의 사본이 목적 서버 노드들의 각각으로 전송된다. 서버 노드가 중앙 서비스로부터 이미지를 수신할 때, 블록 406에 지시되는 바와 같이, 서버 노드는 설치 없이 이미지를 저장한다. 전술한 바와 같이, 이것은 종래의 서버 노드들로의 소프트웨어 배치와는 크게 다르다. 종래에, 소프트웨어는 각각의 서버 노드에 설치되는데, 이는 소프트웨어로부터 개별 파일들을 "언팩킹"하고 각각의 개별 파일을 디스크에 복사하는 것을 필요로 한다. 이와 달리, 본 발명의 실시예들에서는, 이미지가 설치 없이 디스크에 저장된다. 따라서, 소프트웨어의 개별 파일들은 서버 노드 상에 개별 파일들로서 존재하지 않는 대신에, 단지 이미지의 일부로서 존재한다.
이어서, 블록 408에 지시되는 바와 같이, 서버 노드들은 이미지로부터 직접 소프트웨어를 실행한다. OS 이미지의 경우, 서버 노드들은 OS 이미지로부터 직접 부팅한다. 애플리케이션 이미지의 경우, 서버 노드들은 이미지로부터 직접 애플리케이션을 실행한다. 따라서, 서버 노드들은 이미지를 단지 기계들 상에 소프트웨어를 설치하기 위한 소스로서 사용하는 것이 아니라, OS 이미지의 경우에는 이미지로부터 OS를 실제로 부팅하고, 애플리케이션 이미지의 경우에는 이미지로부터 애플리케이션을 실제로 실행한다.
전술한 바와 같이, 소프트웨어 패치들/업데이트들이 이용 가능한 경우, 패치들/업데이트들은 개별 노드들에서 적용되는 것이 아니라 중앙 서비스(예를 들어, 도 2의 중앙 서비스(202))에서 이미지들에 적용된다. 본 발명의 일 실시예에 따른, 소프트웨어 업데이트를 적용하기 위한 예시적인 방법(500)이 도 5에 도시되어 있다. 먼저, 블록 502에 지시되는 바와 같이, 중앙 서비스에서 소프트웨어 업데이트가 수신된다. 블록 504에 지시되는 바와 같이, 새로운 이미지를 오프라인으로 생성하기 위하여 소프트웨어 업데이트가 중앙 서비스에서 이전 이미지의 사본에 적용된다. 일 실시예에서, 새로운 이미지를 생성하기 위하여, 베이스 이미지의 현재 버전이 복사되며, 새로운 베이스 버전이 마운팅된다. 소프트웨어 업데이트가 적용되고, 이어서 새로운 베이스 이미지가 언마운팅(unmounting)된다. 역할 고유 델타 이미지들도 재생성될 수 있다. 새로운 베이스 이미지 및 재생성된 역할 고유 델타 이미지는 함께, 소프트웨어 업데이트를 갖는 생성된 새로운 이미지를 포함한다.
실시예들에서, 이미지들은 강하게 버저닝(versioning)될 수 있다는 점에 유의한다. 따라서, 이전 이미지는 새로운 이미지에 더하여 중앙 서비스에 유지될 수 있다. 따라서, OS 이미지 또는 애플리케이션 이미지의 다수의 버전이 중앙 서비스에 유지될 수 있으며, 중앙 서비스는 각각의 서버 노드의 역할에 따라 다양한 버전의 상이한 서버 노드들로의 배치를 관리할 수 있다.
소프트웨어 업데이트에 기초하여 중앙 서비스에서 새로운 이미지를 생성한 후, 블록 506에 지시되는 바와 같이, 새로운 이미지의 사본이 시스템 내의 각각의 목적 서버 노드(예를 들어, 도 2의 서버 노드들(204))로 전송된다. 서버 노드는 이전 이미지가 실행되고 있는 동안에 새로운 이미지를 수신하여, 이미지 전송 동안에 임의의 다운 시간을 방지할 수 있다. 블록 508에 지시되는 바와 같이, 서버 노드는 설치 없이 새로운 이미지를 디스크에 저장한다. 따라서, 새로운 이미지는 서버 노드가 현재 실행하고 있는 이미지를 포함하는 서버 노드 상의 임의의 이전에 캐시된 이미지들에 더하여 온전한 이미지로서 디스크에 저장된다.
이어서, 블록 510에 지시되는 바와 같이, 서버 노드들은 새로운 이미지로부터 직접 소프트웨어를 실행한다. OS 이미지의 경우, 서버 노드들은 새로운 OS 이미지로부터 직접 재부팅한다. 애플리케이션 이미지의 경우, 서버 노드들은 이미지로부터 직접 애플리케이션을 실행한다.
이해할 수 있듯이, 본 발명의 실시예들은 대규모 네크워킹 시스템들 내의 다수의 서버 노드들에 대한 이미지 배치 및 관리를 용이하게 한다. 본 발명은 특정 실시예들과 관련하여 설명되었으며, 이는 모든 면에서 한정이 아니라 예시적인 것을 의도한다. 본 발명의 범위로부터 벗어나지 않고 본 발명과 관련된 분야의 통상의 기술자들에게는 대안 실시예들이 명백할 것이다.
상기한 바로부터, 본 발명은 전술한 모든 목표 및 목적을, 명백하거나 본 시스템 및 방법에 고유한 다른 이익들과 더불어 달성하도록 양호하게 적응된 발명임을 알 것이다. 소정의 특징들 및 하위 조합들은 유용하며, 다른 특징들 및 하위 조합들에 관계없이 이용될 수 있다는 것을 이해할 것이다. 이것은 청구항들에 의해 고려되고 청구항들의 범위 안에 있다.

Claims (21)

  1. 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체로서 - 상기 컴퓨터 실행가능 명령어들은 하나 이상의 프로세서에 의해 실행될 경우 상기 하나 이상의 프로세서로 하여금 대규모 네크워킹 시스템 내의 복수의 서버 노드들에 소프트웨어를 배치하는 방법을 수행하도록 함 -,
    상기 방법은
    상기 대규모 네트워킹 시스템 내의 중앙 서비스에서 운영 체제(OS) 이미지 및 애플리케이션 이미지를 생성하는 단계 - 상기 중앙 서비스에서 상기 이미지들을 분리하여 구축하는 것에 기초하여 상기 OS 이미지는 OS 상태를 정의하고 상기 애플리케이션 이미지는 애플리케이션 상태를 정의하며, 상기 이미지들을 배치하는 것과 유지하는 것은 분리되고, 상기 OS 이미지는 OS 베이스 이미지 및 OS 델타 이미지를 포함하며, 상기 애플리케이션 이미지는 애플리케이션 베이스 이미지 및 애플리케이션 델타 이미지를 포함하고, 상기 베이스 이미지들은 변경 불가능하고(immutable) 상기 델타 이미지들은 기록 가능함(writable) -,
    상기 OS 이미지 및 상기 애플리케이션 이미지를 포함하는 배치 패키지를 구축하는 단계 - 상기 배치 패키지를 구축하는 단계는 상기 OS 이미지 및 상기 애플리케이션 이미지를 개별적으로 구척하는 단계를 포함하고, 상기 배치 패키지는 상기 OS 이미지 및 상기 애플리케이션 이미지와 각각 연관된 OS 및 애플리케이션을 설치하지 않고 실행하도록 부팅가능함 -,
    상기 중앙 서비스로부터 복수의 서버 노드들 중 대상 서버 노드로 상기 배치 패키지를 전달하는 단계 - 상기 OS 이미지 및 상기 애플리케이션 이미지는 분리되어 유지됨 -,
    상기 서버 노드 상에 OS 이미지 및 애플리케이션 이미지의 설치를 수행하지 않고 상기 배치 패키지를 상기 서버 노드에 저장하는 단계, 및
    상기 OS 및 상기 애플리케이션을 설치하지 않고 실행하도록 상기 서버 노드를 부팅하는 것에 기초하여, 상기 OS 이미지 및 상기 애플리케이션 이미지를 포함하는 상기 배치 패키지로부터 직접적으로 상기 소프트웨어를 실행하는 단계
    를 포함하는 하나 이상의 컴퓨터 판독가능 매체.
  2. 삭제
  3. 제1항에 있어서,
    상기 OS 상태 및 상기 애플리케이션 상태는 상기 OS 이미지 및 상기 애플리케이션 이미지에 대해 상이한 드라이브 문자를 부여하는 것에 기초하여 상기 서버 노드 상에서 분리되어 유지되는
    하나 이상의 컴퓨터 판독가능 매체.
  4. 삭제
  5. 제1항에 있어서,
    상기 OS 이미지 또는 상기 애플리케이션 이미지 중 적어도 하나는 가상 하드 디스크(VHD) 포맷으로 제공되고, 상기 VHD는 단일 논리 디스크가 베이스 VHD 파일 및 델타 VHD 파일로서 2개의 파일로 유지되는 디퍼런싱 디스크(differencing disk)를 제공하는
    하나 이상의 컴퓨터 판독가능 매체.
  6. 제1항에 있어서,
    상기 OS 이미지 및 상기 애플리케이션 이미지는 물리적 노드 및 가상 노드 양자에 배치할 수 있는
    하나 이상의 컴퓨터 판독가능 매체.
  7. 제6항에 있어서,
    상기 배치 패키지를 물리적 노드에 배치하는 것은
    상기 배치 패키지를 상기 물리적 노드 상에서 실행되는 유지 OS로 전송하는 것,
    상기 배치 패키지를 상기 유지 OS를 통해 상기 물리적 노드의 물리적 디스크 상에 저장하는 것, 및
    상기 물리적 디스크 상의 상기 배치 패키지로부터 직접적으로 상기 물리적 노드를 재부팅하는 것
    을 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  8. 제6항에 있어서,
    상기 배치 패키지를 가상 노드에 배치하는 것은
    상기 배치 패키지를 상기 서버 노드의 상기 물리적 노드의 루트 파티션으로 전송하는 것,
    상기 배치 패키지를 에뮬레이트된 물리적 디스크에 관해 부착하는(attaching) 것, 및
    상기 에뮬레이트된 물리적 디스크에 부착된 상기 배치 패키지에 기초하여 상기 가상 노드를 실행하는 것
    을 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  9. 제1항에 있어서,
    상기 OS 베이스 이미지 및 상기 OS 델타 이미지를 포함하는 상기 OS 이미지를 구축하는 단계는
    OS 베이스 이미지를 생성하는 단계,
    상기 OS 베이스 이미지에 역할 고유 상태를 추가하는 단계,
    상기 역할 고유 상태를 지원하기 위해 상기 OS 델타 이미지를 생성하는 단계 - 상기 OS 델타 이미지는 상기 OS 베이스 이미지에 연결되고, 상기 OS 델타 이미지는 상기 OS 베이스 이미지와 분리되어 생성됨 -, 및
    상기 역할 고유 상태를 갖는 상기 OS 베이스 이미지와 상기 OS 델타 이미지를 상기 OS 이미지로서 제공하는 단계
    를 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  10. 제9항에 있어서,
    상기 방법은
    가상 머신 상에서 상기 OS 델타 이미지를 오프라인으로 구성하는 단계,
    상기 가상 머신 상에서 상기 OS 이미지를 오프라인으로 부팅하는 단계, 및
    상기 OS 델타 이미지가 실행될 경우 상기 OS 델타 이미지 내의 온라인 액션들이 실행될 수 있도록 상기 온라인 액션들을 큐잉하는 단계
    를 더 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  11. 제9항에 있어서,
    상기 방법은
    상기 서버 노드가 특정 역할로 지정되었다는 것을 판정하는 단계,
    상기 특정 역할의 상기 서버 노드와 연관된 OS 구성 설정을 식별하는 단계,
    상기 배치 패키지에 따라 상기 OS 구성 설정을 배치하는 단계, 및
    상기 서버 노드에서 상기 OS 구성 설정을 상기 OS 델타 이미지에 적용하여 노드 고유 델타 이미지를 생성하는 단계
    를 더 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  12. 제1항에 있어서,
    상기 애플리케이션 베이스 이미지 및 상기 애플리케이션 델타 이미지를 포함하는 상기 애플리케이션 이미지를 구축하는 단계는
    상기 애플리케이션에 대한 매니페스트(manifest)를 수신하는 단계 - 상기 매니페스트는 애플리케이션 바이너리와 애플리케이션 구성 설정을 포함함 -,
    상기 애플리케이션 바이너리와 상기 애플리케이션 구성 설정에 기초하여 상기 애플리케이션 이미지를 생성하는 단계
    를 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  13. 제12항에 있어서,
    상기 방법은
    노드 고유 애플리케이션 구성 설정을 식별하는 단계,
    상기 노드 고유 애플리케이션 구성 설정을 상기 배치 패키지에 따라 배치하는 단계, 및
    상기 서버 노드에서 상기 노드 고유 애플리케이션 구성 설정을 상기 애플리케이션 델타 이미지에 적용하여 노드 고유 델타 이미지를 생성하는 단계
    를 더 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  14. 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체로서 - 상기 컴퓨터 실행가능 명령어들은 하나 이상의 프로세서에 의해 실행될 경우 상기 하나 이상의 프로세서로 하여금 대규모 네크워킹 시스템 내의 복수의 서버 노드들에 소프트웨어를 배치하는 방법을 수행하도록 함 -,
    상기 방법은
    이전 이미지에 상기 소프트웨어 업데이트를 적용함으로써 중앙 서비스에서 새로운 이미지를 생성하는 단계 - 상기 새로운 이미지는 베이스 이미지 및 델타 이미지를 포함하고, 상기 베이스 이미지는 상기 새로운 이미지의 변경 불가능한 부분을 나타내고 상기 델타 이미지는 기록 가능한 부분을 나타내며, 상기 새로운 이미지는 운영 체제(OS) 이미지 또는 애플리케이션 이미지 중 하나임 -,
    상기 중앙 서비스로부터 상기 복수의 서버 노드들 중 상기 이전 이미지를 실행하고 서버 노드로 상기 새로운 이미지를 전달하는 단계,
    상기 서버 노드에 상기 새로운 이미지의 설치를 수행하지 않고 상기 새로운 이미지를 저장하는 단계 - 상기 서버 노드는 상기 새로운 이미지와 상기 이전 이미지를 캐싱함 -, 및
    상기 서버 노드 상에서 스위칭 동작을 수행하는 단계
    를 포함하되,
    상기 스위칭 동작은
    (a) 상기 이전 이미지로부터 상기 소프트웨어가 직접적으로 실행되는 것을 중지하는 단계, 및
    (b) 상기 서버 노드를 재부팅하고 상기 소프트웨어를 상기 새로운 이미지로부터 직접적으로 실행하는 단계
    를 포함하며,
    상기 새로운 이미지가 OS 이미지인 경우에는
    (1) 역할 고유 상태를 OS 베이스 이미지에 추가하는 단계,
    (2) 상기 역할 고유 상태를 지원하기 위해 상기 OS 델타 이미지를 생성하는 단계 - 상기 OS 델타 이미지는 상기 OS 베이스 이미지에 연결되고, 상기 OS 델타 이미지는 상기 OS 베이스 이미지와 분리되어 생성됨 -, 및
    (3) 상기 역할 고유 상태를 갖는 상기 OS 베이스 이미지 및 상기 OS 델타 이미지를 상기 OS 이미지로서 제공하는 단계
    를 포함하고,
    상기 새로운 이미지가 애플리케이션 이미지인 경우에는
    (1) 노드 고유 애플리케이션 구성 설정을 식별하는 단계,
    (2) 상기 노드 고유 애플리케이션 구성 설정을 상기 배치 패키지에 따라 배치하는 단계, 및
    (3) 상기 서버 노드에서 상기 노드 고유 애플리케이션 구성 설정을 상기 애플리케이션 델타 이미지에 대해 적용하여 노드 고유 델타 이미지를 생성하는 단계
    를 포함하는
    하나 이상의 컴퓨터 판독가능 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 컴퓨터화된 시스템으로서,
    복수의 서버 노드들, 및
    이미지를 저장하고 상기 이미지를 상기 복수의 서버 노드들에 대한 배치 패키지로서 전달하는 하나 이상의 컴퓨팅 장치 상에 저장된 중앙 서비스 - 상기 이미지는 운영 체제(OS) 이미지 및 애플리케이션 이미지를 포함하고, 상기 중앙 서비스에서 상기 이미지들을 분리하여 구축하는 것에 기초하여 상기 OS 이미지는 OS 상태를 정의하고 상기 애플리케이션 이미지는 애플리케이션 상태를 정의하며, 상기 이미지들을 배치하는 것과 유지하는 것은 분리되고, 상기 OS 이미지는 OS 베이스 이미지 및 OS 델타 이미지를 포함하며, 상기 애플리케이션 이미지는 애플리케이션 베이스 이미지 및 애플리케이션 델타 이미지를 포함하고, 상기 베이스 이미지들은 변경 불가능하고(immutable) 상기 델타 이미지들은 기록 가능함(writable) -
    를 포함하되
    상기 복수의 서버 노드들은 상기 중앙 서비스로부터 상기 배치 패키지를 수신하고, 상기 배치 패키지를 설치하지 않고 상기 이미지를 저장하며, 상기 배치 패키지로부터 직접적으로 부팅하도록 구성되는
    컴퓨터화된 시스템.
  19. 제18항에 있어서,
    상기 OS 상태 및 상기 애플리케이션 상태는 상기 OS 이미지 및 상기 애플리케이션 이미지에 대해 상이한 드라이브 문자를 부여하는 것에 기초하여 상기 서버 노드 상에서 분리되어 유지되는
    컴퓨터화된 시스템.
  20. 제18항에 있어서,
    상기 OS 이미지 또는 상기 애플리케이션 이미지 중 적어도 하나는 가상 하드 디스크(VHD) 포맷으로 제공되고, 상기 VHD는 단일 논리 디스크가 베이스 VHD 파일 및 델타 VHD 파일로서 2개의 파일로 유지되는 디퍼런싱 디스크(differencing disk)를 제공하는
    컴퓨터화된 시스템.
  21. 제18항에 있어서,
    상기 중앙 서버에서 상기 이미지에 대한 업데이트를 오프라인으로 구축하는 것은
    상기 이미지의 이전 버전의 변경 불가능한 부분을 복사하는 것,
    상기 복사된 변경 불가능한 부분을 마운팅하는 것,
    상기 마운팅된 변경 불가능한 부분에 대한 소프트웨어 업데이트를 적용하는 것,
    상기 업데이트된 변경 불가능한 영역을 언마운팅하는 것,
    상기 이미지의 상기 이전 버전의 기록 가능한 부분을 재생성하는 것, 및
    상기 업데이트된 변경 불가능한 부분과 상기 재생성된 기록 가능한 부분을 상기 중앙 서비스에서 분리하여 유지하면서 상기 업데이트된 변경 불가능한 부분을 상기 재생성된 기록 가능한 부분으로 연결하는 것
    을 포함하는
    컴퓨터화된 시스템.
KR1020107005738A 2007-09-21 2008-08-25 대규모 네트워킹 시스템들에서의 소프트웨어 배치 KR101569945B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/859,469 US9262366B2 (en) 2007-09-21 2007-09-21 Software deployment in large-scale networked systems
US11/859,469 2007-09-21

Publications (2)

Publication Number Publication Date
KR20100068392A KR20100068392A (ko) 2010-06-23
KR101569945B1 true KR101569945B1 (ko) 2015-11-18

Family

ID=40472900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107005738A KR101569945B1 (ko) 2007-09-21 2008-08-25 대규모 네트워킹 시스템들에서의 소프트웨어 배치

Country Status (10)

Country Link
US (1) US9262366B2 (ko)
EP (1) EP2191385B1 (ko)
JP (1) JP5319685B2 (ko)
KR (1) KR101569945B1 (ko)
CN (1) CN101802807B (ko)
AU (1) AU2008305449B2 (ko)
BR (1) BRPI0814845B1 (ko)
CA (1) CA2695469C (ko)
RU (1) RU2495481C2 (ko)
WO (1) WO2009042327A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180000071A (ko) * 2016-06-22 2018-01-02 한국전자통신연구원 오프라인 가상 데스크탑 제공 장치, 오프라인 가상 데스크탑 단말 및 오프라인 가상 데스크탑 제공 방법
KR101835431B1 (ko) * 2016-09-01 2018-03-09 주식회사 시큐아이 가상화 시스템에서 컨테이너의 데이터 업데이트 방법 및 그 장치
KR20190102843A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR20190102839A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR20190102832A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601467B2 (en) * 2006-10-03 2013-12-03 Salesforce.Com, Inc. Methods and systems for upgrading and installing application packages to an application platform
US8239662B1 (en) * 2008-03-20 2012-08-07 Google Inc. Network based operating system across devices
US9442850B1 (en) * 2008-03-25 2016-09-13 Blue Coat Systems, Inc. Efficient directory refresh operations in wide area file systems
US8386757B1 (en) * 2009-02-13 2013-02-26 Unidesk Corporation Managed desktop system
US9940208B2 (en) * 2009-02-27 2018-04-10 Red Hat, Inc. Generating reverse installation file for network restoration
US8434090B2 (en) 2009-04-02 2013-04-30 Novell, Inc. Optimally managing computing images for deployment
US8448219B2 (en) * 2009-04-23 2013-05-21 Novell, Inc. Securely hosting workloads in virtual computing environments
US8375382B2 (en) * 2009-05-13 2013-02-12 International Business Machines Corporation Enabling parallel websphere runtime versions
CN102082780B (zh) 2009-11-30 2014-03-05 国际商业机器公司 安全验证的方法和装置
US8789155B2 (en) * 2009-12-07 2014-07-22 Microsoft Corporation Pure offline software appliance configuration
US8347071B2 (en) * 2010-02-09 2013-01-01 Microsoft Corporation Converting virtual deployments to physical deployments to simplify management
US8549272B2 (en) 2010-02-10 2013-10-01 Dell Products L.P. Information handling system image management deployment of virtual machine images to physical information handling systems
US8762508B2 (en) * 2010-03-11 2014-06-24 Microsoft Corporation Effectively managing configuration drift
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
US8898668B1 (en) 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
US9015707B2 (en) 2010-09-02 2015-04-21 International Business Machines Corporation Virtual machine rapid provisioning system
US8544007B2 (en) * 2010-09-13 2013-09-24 Microsoft Corporation Customization, deployment and management of virtual and physical machine images in an enterprise system
CN102419753B (zh) * 2010-09-28 2014-02-12 联想(北京)有限公司 信息处理设备、信息处理方法和信息处理系统
US9069620B2 (en) 2010-10-20 2015-06-30 Microsoft Technology Licensing, Llc Creating and deploying service-ready virtual hard disks
JP5681465B2 (ja) * 2010-12-02 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体
US20120159471A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Multi-machine deployment and configuration of multi-tiered applications
US9354852B2 (en) * 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US9489224B2 (en) * 2010-12-28 2016-11-08 Nec Corporation Network virtualization system, physical node, and virtual interface identification method in virtual machine
US20120260246A1 (en) * 2011-04-06 2012-10-11 International Business Machines Corporation Software application installation
US10075505B2 (en) 2011-05-30 2018-09-11 International Business Machines Corporation Transmitting data including pieces of data
JP5566342B2 (ja) * 2011-06-08 2014-08-06 株式会社エヌ・ティ・ティ・データ コンピュータシステム、仮想マシンデータ配置方法およびプログラム
JP5175957B2 (ja) * 2011-08-09 2013-04-03 株式会社東芝 情報処理装置及びクライアント管理方法
US9654896B2 (en) * 2011-09-22 2017-05-16 International Business Machines Corporation Smart online services presence in a cellular network
US20130111018A1 (en) * 2011-10-28 2013-05-02 International Business Machines Coporation Passive monitoring of virtual systems using agent-less, offline indexing
US9262145B2 (en) 2011-10-31 2016-02-16 Hewlett Packard Enterprise Development Lp Remote software deployment across a network
CN102611734A (zh) * 2011-12-16 2012-07-25 广州市品高软件开发有限公司 一种基于云计算的镜像实例启动方法及装置
US9116735B2 (en) * 2012-03-07 2015-08-25 Microsoft Technology Licensing, Llc Offline provisioning of virtual machines
US8904113B2 (en) * 2012-05-24 2014-12-02 International Business Machines Corporation Virtual machine exclusive caching
US20140068040A1 (en) * 2012-09-04 2014-03-06 Bank Of America Corporation System for Enabling Server Maintenance Using Snapshots
US9244693B2 (en) 2012-11-05 2016-01-26 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for booting multiple servers from snapshots of an operating system installation image while reducing access to unmodified portions of the installation image and reducing latencies between server ports
US9766912B1 (en) 2012-11-27 2017-09-19 Amazon Technologies, Inc. Virtual machine configuration
US8924351B2 (en) 2012-12-14 2014-12-30 Lsi Corporation Method and apparatus to share a single storage drive across a large number of unique systems when data is highly redundant
US20140359213A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Differencing disk improved deployment of virtual machines
US20150143354A1 (en) * 2013-11-19 2015-05-21 Suresh Mathew Zero downtime deployment and rollback
FR3019336B1 (fr) * 2014-03-25 2016-03-25 Bull Sas Procede et dispositif de controle du changement de systeme d'exploitation dans des nœuds de service d'un calculateur haute performance
KR102227185B1 (ko) * 2014-10-20 2021-03-11 건국대학교 산학협력단 분산 플랫폼의 자동 구축 방법
CN104618453A (zh) * 2015-01-05 2015-05-13 广州杰赛科技股份有限公司 一种软件分发方法、系统及服务器
CN104639614A (zh) * 2015-01-05 2015-05-20 广州杰赛科技股份有限公司 一种软件分发方法、系统及服务器
EP3062223A1 (en) * 2015-02-26 2016-08-31 Agfa Healthcare A system and method for installing software with reduced downtime
CN105007326A (zh) * 2015-07-24 2015-10-28 中食安信(北京)信息咨询有限公司 一种远程动态部署系统及其方法
US10606450B2 (en) * 2016-06-24 2020-03-31 Accenture Global Solutions Limited Method and system for visual requirements and component reuse driven rapid application composition
CN106201502B (zh) * 2016-07-06 2019-12-06 中国银联股份有限公司 一种跨主机应用程序部署方法及装置
US10146519B2 (en) * 2016-09-20 2018-12-04 Bluedata Software, Inc. Generation and deployment of scripts for large scale processing framework services
US10747520B2 (en) 2017-04-14 2020-08-18 Microsoft Technology Licensing, Llc Resource deployment using device analytics
CN107577475B (zh) * 2017-08-22 2020-02-07 清华大学 一种数据中心集群系统的软件包管理方法及系统
CN107483590A (zh) * 2017-08-22 2017-12-15 郑州云海信息技术有限公司 云数据系统中云化管理系统和方法
JP7052565B2 (ja) 2018-05-29 2022-04-12 京セラドキュメントソリューションズ株式会社 シート後処理装置およびそれを備えた画像形成システム
US10868853B2 (en) * 2018-06-08 2020-12-15 Verizon Patent And Licensing Inc. System and method for image file generation and management
US10990372B2 (en) * 2018-09-20 2021-04-27 Microsoft Technology Licensing, Llc Updating an edge computing device
US11163551B1 (en) * 2020-10-13 2021-11-02 Argo AI, LLC Systems and methods for improved smart infrastructure data transfer
US11385881B2 (en) * 2020-10-31 2022-07-12 Nutanix, Inc. State-driven virtualization system imaging
US20220377533A1 (en) * 2021-05-19 2022-11-24 Mehmood Zafarullahkhan System of mobile device operating system and apps delivery service
US20220413825A1 (en) * 2021-06-29 2022-12-29 EMC IP Holding Company LLC Immutable edge devices
US11928452B2 (en) * 2022-02-03 2024-03-12 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073413A1 (en) 2000-12-13 2002-06-13 International Business Machines Corporation Code image distribution in a multi-node network of processors
US20060174238A1 (en) 2005-01-28 2006-08-03 Henseler David A Updating software images associated with a distributed computing system

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291595A (en) * 1989-05-22 1994-03-01 Martins Augusto B Batch/application program processing
US5452454A (en) * 1991-12-10 1995-09-19 Digital Equipment Corporation Generic remote boot for networked workstations by creating local bootable code image
US5842811A (en) * 1997-02-21 1998-12-01 Johnson; David B. Confined space manhole sign system
US6496839B2 (en) * 1998-06-12 2002-12-17 Microsoft Corporation Persistent names for logical volumes
US6141010A (en) 1998-07-17 2000-10-31 B. E. Technology, Llc Computer interface method and apparatus with targeted advertising
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7213065B2 (en) 2001-11-08 2007-05-01 Racemi, Inc. System and method for dynamic server allocation and provisioning
KR100391952B1 (ko) 2001-11-21 2003-07-23 최백준 Aip시스템에서 서버측 어플리케이션을 이용한 직접파일 실행 방법
US20030121024A1 (en) * 2001-12-13 2003-06-26 Microsoft Corporation System and method for building a runtime image from components of a software program
US8336044B2 (en) 2002-10-09 2012-12-18 Rpx Corporation Method and system for deploying a software image
US7664984B2 (en) * 2002-10-09 2010-02-16 Xpoint Technologies, Inc. Method and system for updating a software image
US7503043B2 (en) * 2003-09-05 2009-03-10 International Business Machines Corporation Method of building dynamic installation packages using a declarative authoring tool
WO2005055072A1 (en) * 2003-11-26 2005-06-16 Hewlett-Packard Development Company, L.P. System and method for management and installation of operating system images for computers
US7583457B2 (en) * 2004-03-22 2009-09-01 Microsoft Corporation RAM disk boot of optical media image
US8190714B2 (en) * 2004-04-15 2012-05-29 Raytheon Company System and method for computer cluster virtualization using dynamic boot images and virtual disk
JP4353003B2 (ja) * 2004-06-25 2009-10-28 日本電気株式会社 インストール方式およびインストール方法ならびに配布装置およびそのプログラム
US7610477B2 (en) 2004-09-15 2009-10-27 Microsoft Corporation Deploying and receiving software over a network susceptible to malicious communication
KR100471420B1 (ko) 2004-09-17 2005-03-14 심영보 관리대상 컴퓨터에 대한 소프트웨어 원격설치 방법
US7516206B2 (en) * 2005-01-28 2009-04-07 Cassatt Corporation Management of software images for computing nodes of a distributed computing system
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US8370819B2 (en) * 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
JP4863154B2 (ja) * 2005-03-29 2012-01-25 日本電気株式会社 起動イメージ提供システム及びその動作方法、ブートノード装置、ブートサーバ装置並びにその動作プログラム
US7653894B2 (en) 2005-05-04 2010-01-26 International Business Machines Corporation Method and apparatus for classifying and modeling operating system image for data center management
US20070006205A1 (en) 2005-05-18 2007-01-04 Michael Kennedy System for virtual image migration
US7574491B2 (en) * 2005-07-29 2009-08-11 Scalent Systems Virtual data center for network resource management
US8949364B2 (en) * 2005-09-15 2015-02-03 Ca, Inc. Apparatus, method and system for rapid delivery of distributed applications
US8745124B2 (en) * 2005-10-31 2014-06-03 Ca, Inc. Extensible power control for an autonomically controlled distributed computing system
US7764683B2 (en) 2005-12-16 2010-07-27 Oracle America, Inc. Reliable multicast operating system (OS) provisioning
US20080052702A1 (en) * 2006-07-07 2008-02-28 Inventec Multimedia & Telecom Corporation Firmware update method and system utilizing digital broadcasting system
JP4900805B2 (ja) * 2007-02-21 2012-03-21 株式会社日立製作所 Osイメージのデプロイメントマシン及び方法
WO2008117500A1 (ja) * 2007-03-27 2008-10-02 Nec Corporation 仮想マシン運用システム、仮想マシン運用方法およびプログラム
US8966474B2 (en) * 2007-04-30 2015-02-24 Hewlett-Packard Development Company, L.P. Managing virtual machines using shared image

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073413A1 (en) 2000-12-13 2002-06-13 International Business Machines Corporation Code image distribution in a multi-node network of processors
US20060174238A1 (en) 2005-01-28 2006-08-03 Henseler David A Updating software images associated with a distributed computing system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180000071A (ko) * 2016-06-22 2018-01-02 한국전자통신연구원 오프라인 가상 데스크탑 제공 장치, 오프라인 가상 데스크탑 단말 및 오프라인 가상 데스크탑 제공 방법
KR102568985B1 (ko) * 2016-06-22 2023-08-23 한국전자통신연구원 오프라인 가상 데스크탑 제공 장치, 오프라인 가상 데스크탑 단말 및 오프라인 가상 데스크탑 제공 방법
KR101835431B1 (ko) * 2016-09-01 2018-03-09 주식회사 시큐아이 가상화 시스템에서 컨테이너의 데이터 업데이트 방법 및 그 장치
KR20190102843A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR20190102839A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR20190102832A (ko) * 2018-02-27 2019-09-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR102019486B1 (ko) 2018-02-27 2019-09-06 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR102019485B1 (ko) 2018-02-27 2019-09-06 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치
KR102019487B1 (ko) 2018-02-27 2019-11-04 주식회사 시큐아이 가상화 시스템에서 컨테이너 업데이트 방법 및 그 장치

Also Published As

Publication number Publication date
AU2008305449B2 (en) 2012-08-09
US9262366B2 (en) 2016-02-16
WO2009042327A2 (en) 2009-04-02
JP5319685B2 (ja) 2013-10-16
RU2010110588A (ru) 2011-09-27
EP2191385A4 (en) 2012-04-04
WO2009042327A3 (en) 2009-05-22
JP2010541044A (ja) 2010-12-24
CN101802807A (zh) 2010-08-11
US20090083404A1 (en) 2009-03-26
EP2191385A2 (en) 2010-06-02
CA2695469A1 (en) 2009-04-02
RU2495481C2 (ru) 2013-10-10
BRPI0814845B1 (pt) 2019-05-07
AU2008305449A1 (en) 2009-04-02
KR20100068392A (ko) 2010-06-23
CA2695469C (en) 2017-04-11
BRPI0814845A2 (pt) 2015-01-27
EP2191385B1 (en) 2016-11-16
CN101802807B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
KR101569945B1 (ko) 대규모 네트워킹 시스템들에서의 소프트웨어 배치
US11297126B2 (en) System and method for image file generation and management
US9176744B2 (en) Quickly provisioning a virtual machine by identifying a path to a differential file during pre-boot
KR101465928B1 (ko) 머신을 가상 머신으로 변환하는 방법
US8387037B2 (en) Updating software images associated with a distributed computing system
CN102200921B (zh) 智能引导设备选择和恢复
US8606886B2 (en) System for conversion between physical machines, virtual machines and machine images
US9250672B2 (en) Cloning target machines in a software provisioning environment
US8225037B2 (en) Apparatus and method for incremental package deployment
US8346886B2 (en) System, method, and medium for configuring client computers to operate disconnected from a server computer while using a master instance of the operating system
US20060173993A1 (en) Management of software images for computing nodes of a distributed computing system
EP2220558A1 (en) System synchronization in cluster
KR20110030447A (ko) 가상 머신 및 애플리케이션 수명들의 동기화
US11836542B1 (en) Instantiating VNFs which include VNFCs that are composed of independently manageable software modules
US20020165945A1 (en) Method and system for registry flying in a network
JP4353003B2 (ja) インストール方式およびインストール方法ならびに配布装置およびそのプログラム
US20240095053A1 (en) Virtual machine creation based on dynamic group host node feature set
JP7184097B2 (ja) ネットワーク機能仮想化システム及びオペレーティングシステム更新方法
US20170337065A1 (en) Live imaging of a device
CN114281354A (zh) 一种云桌面升级方法

Legal Events

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

Payment date: 20181018

Year of fee payment: 4