KR20190013729A - 고속 시스템 상태 클로닝 - Google Patents

고속 시스템 상태 클로닝 Download PDF

Info

Publication number
KR20190013729A
KR20190013729A KR1020187031993A KR20187031993A KR20190013729A KR 20190013729 A KR20190013729 A KR 20190013729A KR 1020187031993 A KR1020187031993 A KR 1020187031993A KR 20187031993 A KR20187031993 A KR 20187031993A KR 20190013729 A KR20190013729 A KR 20190013729A
Authority
KR
South Korea
Prior art keywords
data
memory
computing system
source computing
uncoded
Prior art date
Application number
KR1020187031993A
Other languages
English (en)
Inventor
브라이언 엠. 이그노미레로
수이홍 리앙
Original Assignee
포뮬루스 블랙 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/089,837 external-priority patent/US9817728B2/en
Application filed by 포뮬루스 블랙 코포레이션 filed Critical 포뮬루스 블랙 코포레이션
Publication of KR20190013729A publication Critical patent/KR20190013729A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

소스 컴퓨팅 시스템의 클론을 생성하기 위한 시스템 및 방법으로서, 상기 시스템은, 소스 컴퓨팅 시스템에 연결된 메모리 공간을 선택하는 단계, 선택된 메모리 공간으로부터 미코딩 데이터를 검색하는 단계; 백업 서버 상에서 실행하는 비트 마커 기반 인코딩 프로세스의 사용에 의해 미코딩 데이터를 인코딩하는 단계, 백업 서버에 연결되고 전력 중단으로부터 보호되는 보호 메모리 내에 인코딩 데이터를 저장하는 단계; 보호 메모리로부터 인코딩 데이터를 검색하는 단계; 및 인코딩 데이터를 타깃 컴퓨팅 시스템 상에 디코딩하는 단계를 포함하고, 타깃 컴퓨팅 시스템은 소스 컴퓨팅 시스템으로부터 분리된다.

Description

고속 시스템 상태 클로닝
관련 출원에 대한 상호 참조
본 출원은 "FAST SYSTEM STATE CLONING"이라는 발명의 명칭으로 2016년 4월 4일자로 출원된 미국 특허출원 제15/089,837호의 이익을 주장하며, 그 전체 내용이 참고로 본 명세서에 전체적으로 원용된다.
기술분야
본 발명의 실시형태는 일반적으로 시스템 클로닝에 관한 것으로, 특히 백업 또는 복제를 위해 시스템을 클로닝하기 위한 고속 장치 및 방법에 관한 것이다.
다양한 범위 또는 배치의 컴퓨터 시스템은 전형적인 대기업 전체에 걸쳐서 사용된다. 기업 수준 컴퓨터 시스템은 기업 전체에 걸쳐서 사용될 수 있거나 기업 핵심 기능을 지원하는 데 사용될 수 있는 시스템이다. 예를 들어, 항공사에 대하여, 예약 및 부킹 시스템 또는 비행 스케줄링 시스템은 기업 수준 시스템일 수 있다. 더 낮은 수준의 배치에서는, 다른 시스템(예를 들어, 부서 수준 또는 기능 수준 시스템)이 부서 수준의 조직을 지원할 수 있거나 제한된 기능을 지원할 수 있다. 예를 들어, 항공사를 위한 부서 수준 시스템은 회계, 판매 및 마케팅, 엔지니어링, 유지 관리 지원 등에서 하나를 지원할 수 있다. 훨씬 낮은 수준에서는, 컴퓨터 시스템(실제 시스템 또는 클라우드 기반 시스템과 같은 가상 시스템)이 개별 직원을 지원할 수 있다.
컴퓨터 시스템은 그 하드웨어 및 소프트웨어 자산, 스테이터스, 시스템 상태 등에 의해 특성화될 수 있다. 하드웨어 특성화는 사용된 서버, 사용 가능한 메모리 및 메모리 저장 공간, 사용 가능한 통신 링크, 라우터 접속성(router connectivity) 등의 리스트를 포함할 수 있다. 소프트웨어 자산의 특성화는 각 서버 상에서 사용 가능한 운영 시스템 및 애플리케이션 프로그램의 리스트를 포함할 수 있다. 시스템 상태의 특성화는 각 서버 상에서 현재 실행중인 소프트웨어, 각 소프트웨어의 상태(예를 들어, 유한 상태 머신 모델로 표시된 바와 같이), 각 소프트웨어에 액세스 가능한 및/또는 각 소프트웨어에 의해 사용되는 휘발성 및 비휘발성 메모리 내의 데이터 등의 리스트를 포함할 수 있다.
때로는, 예를 들어 백업 또는 용량 목적으로 컴퓨터 시스템을 클로닝하는 것이 필요하거나 바람직하다. 예를 들어, 컴퓨터 시스템의 백업은 컴퓨터 시스템의 전부 또는 일부를 클로닝함으로써, 예를 들어 반드시 하드웨어 특성화일 필요는 없지만 적어도 시스템 상태를 클로닝함으로써 이루어질 수 있다. 한편, 복제에 의한 클로닝은 처리 용량 또는 성능을 신속하게 증가시킬 필요가 있을 때에 이루어질 수 있다. 예를 들어, 온라인 소매상은 추수 감사절부터 크리스마스까지의 기간 동안 판매 및 마케팅에 전담되는 그의 컴퓨터 시스템을 일시적으로 복제하고, 나중에 해당 자산을 해제하고자 할 수 있다. 그러나, 온라인 소매상은 그의 회계 연도 말에 회계에 전담되는 그의 컴퓨터 시스템을 일시적으로 복제하고자 할 수도 있다.
때로는, 백업으로부터 컴퓨터 시스템을 복원하는 것이 필요하거나 바람직하다. 예를 들어, 온라인 판매자의 판매 시스템 또는 웹 사이트가 고장 난 경우, 판매자는 판매 시스템 또는 웹 사이트가 복원될 때까지 어떠한 판매도 하지 못할 수 있다. 따라서, 가능한 빨리 백업으로부터 이러한 시스템을 복원해야 할 필요가 있을 것이다.
시스템을 클로닝하기 위한 기존의 방법은 다양한 결점을 갖는다. 예를 들어, 핫 스탠바이(hot standby)(예를 들어, 지속적으로 활성화되고 주 시스템의 상태를 미러링하는 시스템)는, 특히 대형 시스템에 대하여, 요구되는 하드웨어, 필요한 소프트웨어 라이센스 및 유지 관리 비용(예를 들어, 유틸리티 및 스태프를 위한)의 관점에서 고가일 수 있다. 다수의 가상 머신 및 하이퍼바이저는 지속적으로 핫으로 유지되는 경우에 하드웨어 및 소프트웨어의 관점에서 또한 잠재적으로 고가이다. 콜드 스탠바이(cold standby) 백업 시스템(예를 들어, 주 시스템 고장 시와 같은, 필요할 때에만 온라인으로 이루어지는 백업)은 고장난 시스템을 인계받는 데 바람직하지 않게 오랜 시간이 걸릴 수 있고, 고장 전에 주 시스템의 가장 최근 상태를 반영하지 못할 수도 있다.
따라서, 컴퓨터 시스템을 저비용으로 신속하게 클로닝하기 위한 시스템 및 방법을 제공할 필요성이 존재한다.
일 실시형태에서, 시스템 클론은, 본 명세서에서 설명되는 고속 방법 및 아키텍처를 사용하여 애플리케이션 서버 시스템의 현재 메모리 콘텐츠의 전부 또는 일부를 복사함으로써 이루어진다. 그런 다음, 시스템 클론이 백업으로서 사용되어, 기업 용량을 증가시키는 것, 컴퓨팅 자산을 용도 변경하는 것 등을 행할 수 있다.
본 개시의 실시형태에 따른 소스 컴퓨팅 시스템을 클로닝하기 위한 방법은, 소스 컴퓨팅 시스템에 연결된 메모리 공간을 선택하는 단계, 선택된 메모리 공간으로부터 미코딩 데이터(uncoded data)를 검색하는 단계, 백업 서버 상에서 실행하는 비트 마커 기반(bit-marker-based) 인코딩 프로세스의 사용에 의해 미코딩 데이터를 인코딩하는 단계, 백업 서버에 연결되고 전력 중단으로부터 보호되는 보호 메모리 내에 인코딩 데이터를 저장하는 단계, 보호 메모리로부터 인코딩 데이터를 검색하는 단계, 및 인코딩 데이터를 타깃 컴퓨팅 시스템 상에 디코딩하는 단계를 포함할 수 있고, 타깃 컴퓨팅 시스템은 소스 컴퓨팅 시스템으로부터 분리된다.
본 개시의 실시형태에 따른 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템은, 소스 컴퓨팅 시스템을 위한 메모리 공간을 제공하는 메모리에 연결된 프로세서, 메모리 공간으로부터 미코딩 데이터의 검색을 지원하기 위한 통신 인터페이스, 백업 서버 상에서 실행하는 비트 마커 기반 인코딩 프로세스의 사용에 의해 미코딩 데이터를 인코딩하기 위한 인코더, 백업 서버에 연결되고 전력 중단으로부터 보호되는 보호 메모리 내에 인코딩 데이터를 저장하기 위한 저장 모듈, 보호 메모리로부터 인코딩 데이터의 검색을 지원하기 위한 통신 인터페이스, 및 인코딩 데이터를 타깃 컴퓨팅 시스템 상에 디코딩하기 위한 디코더를 포함하며, 타깃 컴퓨팅 시스템은 소스 컴퓨팅 시스템으로부터 분리된다.
본 개시의 일부 양태의 이해를 제공하기 위해 본 개시의 실시형태에 대한 간략한 요약이 선행된다. 이러한 요약은 본 개시 및 그의 다양한 실시형태에 대한 광대하고 철저한 개요가 아니다. 그것은 본 개시의 주요한 또는 중대한 요소를 식별하며 본 개시의 범위를 상세히 기술하도록 의도되지 않으며 이하에서 제공된 더욱 상세한 설명에 대한 도입부로서 간략한 형태로 본 개시의 선택된 개념을 제시하도록 의도된다. 이해되는 바와 같이, 본 개시의 다른 실시형태는 단독으로 또는 조합하여, 전술한 또는 이하에서 상세히 설명되는 특징 중 하나 이상을 이용하여 가능하다.
본 발명의 상기 및 또 다른 특징 및 이점은, 특히 다양한 도면에서의 유사한 참조 번호가 유사한 구성요소를 지정하기 위해 이용되는 첨부 도면과 함께 취해질 때, 그의 실시형태에 대한 다음의 상세한 설명의 고려 시 분명해질 것이며, 도면은 다음과 같다:
도 1은 당 기술분야에 공지된 퍼스널 컴퓨터(PC) 기반 서버의 기능 블록도;
도 2는 본 개시의 실시형태에 따른 PC 기반 클로닝 서버의 기능 블록도;
도 3a는 본 개시의 실시형태에 따른 시스템을 도시한 도면;
도 3b는 본 개시의 실시형태에 따른 다른 시스템을 도시한 도면;
도 3c는 본 개시의 실시형태에 따른, 가상 서버를 갖는 시스템을 도시한 도면;
도 4는 본 개시의 실시형태에 따른 메모리 모델을 도시한 도면;
도 5a는 본 개시의 실시형태에 따른 데이터를 인코딩하기 위한 방법을 나타낸 도면;
도 5b는 본 개시의 실시형태에 따른 데이터를 디코딩하기 위한 방법을 나타낸 도면;
도 6a는 본 개시의 실시형태에 따른, 소스 시스템의 블링크 백업(blink backup)을 수행하기 위한 프로세스를 나타낸 도면;
도 6b는 본 개시의 실시형태에 따른, 블링크 백업으로부터 시스템을 복원하기 위한 프로세스를 나타낸 도면.
본 명세서에서 사용되는 주제는 단지 조직 목적만을 위한 것이며 설명 또는 청구항의 범위를 제한하는 데 사용되는 것으로 의도되지 않는다. 본 출원 전반에 걸쳐 사용되는 바와 같이, 단어 "~ 수 있다"는 강제적 의미(즉, ~ 해야 함을 의미함)보다는, 허가의 의미(즉, ~할 가능성을 가짐을 의미함)로 사용된다. 마찬가지로, 단어 "포함한다", "포함하는", 및 "포함하다"는 이에 제한되지 않지만 ~를 포함하는 것을 의미한다. 이해를 용이하게 하기 위해, 유사한 참조 번호가, 가능한 경우, 도면에 공통적인 유사한 요소를 표기하기 위해 사용되었다. 도면의 선택적인 부분은, 사용의 맥락이 달리 표시하지 않는 한, 파선 또는 점선을 사용하여 도시될 수 있다.
본 개시는 예시적인 사용 케이스, 방법 실시형태, 및 시스템 실시형태와 관련하여 이하에서 예시될 것이다. 예를 들어, 서버, 네트워킹 장비 및/또는 특수 계기를 사용하는 시스템과 함께 사용하기에 적합하지만, 본 개시는 특정 유형의 전자 시스템 또는 시스템 요소의 구성과 함께 사용되는 것에 국한되지 않는다. 당업자는, 개시된 기술이 컴퓨터 시스템을 복제, 클로닝, 백업 또는 복원하는 것이 바람직한 임의의 전자 시스템에서 사용될 수 있다는 것을 인식할 것이다.
본 개시에 따른 실시형태는 관련 하드웨어와 관련하여 설명될 것이다. 그러나, 본 개시를 불필요하게 모호하게 하는 것을 회피하기 위해, 다음의 설명은 블록도 형태로 도시될 수 있거나, 잘 알려져 있거나, 또는 달리 요약되어 있는 잘 알려진 구조, 구성요소 및 디바이스를 생략한다. 본 명세서에 제시된 예는, 다른 동일하게 효과적인 예가 가능하고 가능성이 있으므로, 본 발명의 실시형태의 범위를 제한하는 것으로 해석되지 않아야 한다.
본 명세서에서 사용되는 바와 같이, 용어 "모듈"은 일반적으로 단계, 프로세스 또는 구성요소의 논리적 시퀀스 또는 연관을 지칭한다. 예를 들면, 소프트웨어 모듈은 컴퓨터 프로그램 내에서 연관된 루틴 또는 서브루틴의 세트를 포함할 수 있다. 대안적으로, 모듈은 실질적으로 독립적 하드웨어 디바이스를 포함할 수 있다. 모듈은 또한 임의의 소프트웨어 또는 하드웨어 구현에 관계없이 프로세스의 논리 세트를 포함할 수 있다.
기능을 수행하는 모듈은 또한 기능을 수행하도록 구성되는 것이라고 지칭될 수 있고, 예를 들어 데이터를 수신하는 데이터 모듈은 또한 데이터를 수신하도록 구성되는 것으로 설명될 수 있다. 기능을 수행하기 위한 구성은, 예를 들어, 기능을 수행하는 컴퓨터 코드를 제공하고 실행하는 것; 모듈의 성능을 제어, 제한, 활성화 또는 비활성화하는 프로비저닝 가능 구성 파라미터(provisionable configuration parameter)를 제공하는 것(예를 들어, 플래그를 설정하는 것, 사용권한을 설정하는 것, 결정 지점에서 사용되는 임계 레벨을 설정하는 것 등); 옵션을 선택하기 위해, 또는 옵션을 활성화/비활성화하기 위해 점퍼와 같은 물리 접속을 제공하는 것; 물리 통신 링크를 부착하는 것; 무선 통신 링크를 활성화하는 것; 예를 들어 이산 구성요소 및/또는 비CPU 집적 회로의 사용에 의해, 프로세서의 사용 없이 기능을 수행하도록 설계되는 전기 회로를 제공하는 것; 기능을 수행하는 회로를 통전(energizing)하는 것(예를 들어, 데이터를 수신하기 위해 송수신기 회로에 전력을 공급하는 것) 등을 포함할 수 있다.
본 특허출원의 모특허출원(미국 특허 출원 제14/804,175호, "'175 출원")은 고용량 및 고속 전송률 디지털 저장을 위한 시스템을 개시한다. '175 출원 및 본 명세서에서 사용되는 비트 마커 기술은 CIP 모출원인 미국 특허출원 제13/908,239("'239 출원")에 기재되어 있다. 컴퓨터 시스템이 그의 소프트웨어 자산, 스테이터스 및 시스템 상태의 디지털 상태에 의해 적어도 부분적으로 특성화될 수 있으면, 본 개시에 따른 실시형태는 디지털 상태를 매우 신속하게 클로닝하기 위해 모출원 개시의 시스템을 사용할 수 있다. 시스템 복원은 그에 상응하여 신속하게 수행될 수 있다.
'175 출원에서 개시되고 본 실시형태에서 사용되는 방법, 구성요소 및 시스템은 하이퍼바이저, 서버 프로세서, 맞춤형 운영 시스템 및/또는 하이퍼바이저 내의 게스트 운영 시스템(OS), 게스트 OS와 연관된 데이터 또는 드라이브를 포함한다. 실시형태는 네트워킹 구성요소(예를 들어, 이더넷 어댑터)를 통해 실질적으로 임의의 네트워크로 통합될 수 있다. 실시형태는 통상의 RAM 휘발성 메모리, 및 '175 출원에 개시된 바와 같이 데이터 손실로부터 보호되는 비휘발성 DIMM 메모리(NV-DIMM)를 더 포함할 수 있다. 시스템은 PCIe, 주변 디바이스 및 구조화(structuring)를 더 포함할 수 있다.
이미징되고 표현되는 데이터는 휘발성 RAM에 저장된 실질적으로 임의의 데이터, 예를 들어 데이터베이스, 애플리케이션 프로그램, 로그, 소유 데이터(proprietary data) 등을 포함할 수 있다. 애플리케이션 프로그램은, 방화벽 서비스, 문서 서비스 등과 같은 운영 시스템 수준에서 실행하는 다양한 서비스; 스프레드시트, 워드 프로세서, 그래픽 편집, CAD/CAM 소프트웨어, 회계 소프트웨어 등과 같은 사용자 수준에서 실행하는 다양한 소프트웨어; 및 웹 서버, 메일 서버, 데이터베이스 서버 등과 같은 다양한 서버를 포함할 수 있다.
도 1은 당 기술분야에 공지된 통상의 컴퓨터 시스템(100)의 기능 블록도를 도시한다. 시스템(100)은, 예를 들어 Intel® 호환성 아키텍처에 기초한 컴퓨터 시스템에서 사용될 수 있다. 제조 기술이 진보함에 따라, 다양한 기능 구성요소가 칩셋의 생성, 타킷 고객의 가격대 성능비, 타깃 컴퓨팅 플랫폼(예를 들어, 모바일 디바이스, 서버 등) 등과 같은 요인에 따라 상이한 집적 회로(IC) 구성으로 제조될 수 있다. 소정의 기능은 IC(116)와 같은 단일 IC와 같은 다양한 구성으로 조합될 수 있다.
시스템(100)은, Xeon®, Intel Core i7®, i5®, i3®와 같은 범용 프로세서, 또는 Athlon64®와 같은 Advanced Micro Devices®(AMD)로부터의 프로세서 등일 수 있는 프로세서(102)를 포함한다. 다른 실시형태에서, 프로세서(102)는 그래픽 처리 유닛(GPU)일 수 있다. 도 1의 기능 블록도에서, 본 명세서에서 사용되는 바와 같은 프로세서(102)는 프로세서의 기능을 지칭할 수 있고, 및/또는 프로세서의 하나 이상의 하드웨어 코어를 지칭할 수 있다. 프로세서(102)는 멀티 GHz 속도로 동작하는 다수의 처리 코어를 포함할 수 있다. 프로세서(102)는 캐시 메모리(103)(예를 들어, L1 또는 L2 캐시)를 포함할 수 있다. 프로세서(102)는 또한 운영 시스템(104)을 포함하도록 프로그래밍되거나 구성될 수 있다. 운영 시스템(104)의 예는 다양한 버전의 Windows®, Mac OS®, Linux®, 및/또는 본 개시의 실시형태에 따른 운영 시스템 또는 운영 시스템 확장 등을 포함한다. 등록 상표 Windows는 Microsoft Inc.의 상표이다. 등록 상표 Mac OS는 Apple Inc.의 상표이다. 등록 상표 Linux는 전세계 기반의 상표 소유자인 Linus Torvalds의 독점 실시권자인 LMI로부터의 재실시권에 따라 사용된다. 운영 시스템(104)은 애플리케이션 프로그램(도 1에는 도시되지 않음)의 실행을 포함하는 통상의 기능을 수행한다. 기능적으로, 운영 시스템(104)은 프로세서(102)의 일부인 것으로서 도시되지만, 운영 시스템(104)의 일부분은 도 1에 도시되지 않은 비휘발성 메모리(예를 들어, 하드 디스크, SSD(solid-state drive), 플래시 드라이브, NAND 메모리, 비휘발성 RAM 등)에 물리적으로 상주할 수 있고, 운영 시스템(104)의 적어도 일부분은 프로세서(102)에 의한 실행을 위해 필요에 따라 RAM 메모리로 판독될 수 있다.
프로세서(102)는 다양한 기능 구성요소와 인터페이싱하기 위해 수개의 내부 및 외부 버스를 사용할 수 있다. 시스템(100)은 프로세서(102)를 메모리 컨트롤러(106)에 링크시키는 통신 버스(105)를 포함한다. 메모리 컨트롤러(106)는 또한 노스브릿지(northbridge)라고도 지칭될 수 있다. 통신 버스(105)는 FSB(Front Side Bus), NUMA(Non-Uniform Memory Access) 버스, EV6 버스, PCI(Peripheral Component Interconnect) 버스 등 중 하나로서 구현될 수 있다.
시스템(100)은 프로세서(102)에 연결된 비휘발성 메모리(122)(예를 들어, CMOS 메모리)를 더 포함한다. CMOS 메모리(122)는, 컴퓨터 구성요소들 간의 저수준 통신을 관리하는 것을 돕는 BIOS(basic input/output system)(124)를 포함할 수 있고, 시동 자체 시험(power-on self-test)을 수행하기 위한 컴퓨터 코드의 스토리지를 포함할 수 있다. 통상적으로, 시동 자체 시험은 설치된 RAM의 데이터 무결성 시험을 포함할 수 있다.
메모리 컨트롤러 허브(106)는 전형적으로 프로세서(102)와, 다양한 고속 기능요소, 예를 들어 통신 버스(107)를 통한 듀얼 인라인 메모리 모듈(DIMM) 슬롯(108a, 108b)에 설치된 외부 RAM 메모리, 및 통신 버스(109)를 통한 비디오 그래픽 카드(110) 간의 통신을 처리한다. 통신 버스(107 및 109)는 PCIe(Peripheral Component Interconnect Express) 또는 AGP(Accelerated Graphics Port)와 같은 고속 인터페이스일 수 있다. 메모리 컨트롤러 허브(106)는 또한 통신 버스(112)를 통해, 프로세서(102)와 컨트롤러 허브(114) 간의 통신을 처리할 수도 있다. 컨트롤러 허브(114)는 또한 사우스브릿지(southbridge), I/O 컨트롤러 허브(ICH), 퓨전 컨트롤러 허브(FCH), 플랫폼 컨트롤러 허브(PCH) 등과 같은 다른 명칭으로 알려져 있을 수도 있다. 컨트롤러 허브(114)는, USB 포트(131), 표준 인터페이스(예를 들어, ATA/SATA, mSATA, SAS 등)를 갖는 저장 매체(132), 이더넷 송수신기(133), 오디오 포트(134), 기타 PCI 디바이스(135) 등과 같은 추가 및/또는 저속 I/O 디바이스 또는 인터페이스와의 추가 통신을 차례대로 관리한다.
시스템(100)의 일부 구성(미도시)에서, 프로세서(102)는 메모리 컨트롤러(106)를 우회하고 다이렉트 미디어 인터페이스(DMI)를 통해 컨트롤러 허브(114)와 직접 통신하도록 설계된다. 이러한 구성은 또한 프로세서(102) 및 메모리 컨트롤러(106)의 기능을 단일 IC(116)에 통합할 수 있다. 이러한 구성에서, 컨트롤러 허브(114)는 전형적으로 플랫폼 컨트롤러 허브(PCH)이다.
DIMM 슬롯(108a, 108b)에 설치된 RAM 메모리를 구성하는 메모리 칩은 매우 높은 최대 액세스 속도(예를 들어, 약 57 GBytes/sec)를 가질 수 있지만, 통신 버스(109)는 일반적으로 빠른 속도를 지원할 수 없다. 예를 들어, 16 레인 슬롯에서 PCIe 4.0의 속도는 31.508 GBytes/sec로 제한된다. AGP는 PCIe보다 여전히 저속이다. 따라서, 통신 버스(107)는 더 빠른 메모리 액세스를 방지하는 병목이다.
메모리 액세스의 병목은 종래 기술의 하나의 결점이다. 통상의 컴퓨터의 전술한 다른 결점은 RAM 메모리의 크기(전형적으로 수 Gbytes 정도)와 통상의 하드 디스크의 저장 크기(전형적으로 수 Tbytes 정도) 사이의 저장 크기의 불합치, 및 통상의 하드 디스크의 저장 크기에 대한 RAM 메모리의 비교적 작은 저장 크기를 포함한다. 종래 기술의 다른 결점은 RAM 메모리의 휘발성이다.
본 개시에 따른 실시형태는 RAM이 오늘날 갖고 있는 밀도 문제를 해소한다. 본 개시에 따른 실시형태는 저장 유닛을 위한 신규한 하드웨어 인터페이스, 및 하드웨어 인터페이스를 위한 신규한 드라이버 인터페이스를 제공함으로써 종래 기술의 이러한 결점을 해결한다.
CPU 외에는, RAM이 x86 및 x64 컴퓨팅 시스템에서 가장 빠른 요소이므로, 실시형태는 높은 저장 밀도를 달성하는 새로운 방법으로 오늘날의 고속 RAM 성능을 정렬할 수 있게 한다. 이 효과가 적용됨에 따라, 비용 패러다임을 완전히 변경하고 저비용 메모리 모듈이 고밀도, 고비용 메모리 모듈에 대한 필요성을 대체할 수 있게 한다.
남아있는 문제는 표준 메모리 모듈의 휘발성이다. 모든 RAM이 휘발성이기 때문에, 장기간 저장 매체가 되는 것에 적합하지 않다. 실시형태는, 표준 DIMM 디바이스에서 발견되는 휘발성 문제를 회피하는 비휘발성 RAM(NVRAM) 기술과 유사하지만 다르다.
본 개시에 따른 실시형태는 Intel® 또는 AMD® CPU 프로세서에 의해 전력 공급될 수 있는 기본 저가의 x64 마더보드를 사용한다. 마더보드는, 비휘발성 메모리인 것으로 인식하는 데 요구되는 지능을 제공하는 수정된 CME 및 BIOS를 갖는다. 또한, 마더보드는 환경 친화적인 저부하, 저속 드레인 커패시터를 충전하는 데 사용될 수 있는 DC 공급 전압(예를 들어, 1.2v, 1.35v, 1.5v 등)을 각 메모리 모듈에 제공한다. 이 설계는 메모리 모듈 내에서 데이터 지속성을 유지하는 셧다운 상태(예를 들어, 전력 손실 또는 안전한 셧다운)를 가능하게 함으로써, 메모리 모듈을 실행 가능한 장기간 저장 디바이스가 되게 한다.
도 2는 본 개시의 일 실시형태에 따른 컴퓨터 시스템(200)의 기능 블록도를 도시한다. 컴퓨터 시스템(200)은 또한 본 명세서에서 블링크 서버라고도 지칭될 수 있다. 도 1에서 이미 설명된 기능 구성요소는 도 1에 도시된 것과 동일한 참조 번호가 도 2에서 부여된다. 시스템(200)은, Molex® 커넥터와 같은 커넥터(208)의 사용에 의해 DIMM 슬롯(예를 들어, DIMM 슬롯(108b))에 물리적으로 연결될 수 있는 메모리 인터페이스(218)를 포함한다. 메모리 인터페이스(218)는 통신 버스(107) 상에서 통상의 프로토콜의 사용에 의해 DIMM 슬롯(108b)을 통해 프로세서(202)와 통신한다. 메모리 인터페이스(218)는 물리적으로 그리고 통신 가능하게 RAM 저장 유닛(220)에 연결된다. 메모리 인터페이스(218)의 기능은 RAM 저장 유닛(220)을 통신 버스(107)에 통신 가능하게 연결하는 것, RAM 저장 유닛(220)에 관한 건전 상태와 같은 소정의 이벤트, 기타 하드웨어 이벤트에 대한 모니터링, 검출된 신호 또는 하드웨어 이벤트에 기초하여 소정의 조치를 취하는 것 등을 포함한다. 또한, 메모리 인터페이스(218)의 기능은, 메모리 어드레스를 분석하는 것, 메모리 크기를 보고하는 것, I/O 제어, 총 전력 사이클의 트랙을 유지하고 총 전력 사이클을 보고하는 것, 1시간 내의 실행 시간, DIMM의 수를 보고하는 것, 울트라 커패시터(cap) 전류 전압, 버스 준비, 최종 복원 성공 또는 실패, 디바이스 준비, NAND 영역의 플래시 스테이터스, 접속된 cap, cap 충전 상태, 존재하는 유효 이미지, 수행된 DIMM 초기화, 판독 레지스터와 같은 스테이터스를 보고하는 것 등과 같은 간단한 프로세싱 및 하우스키핑 기능을 포함할 수도 있다. NAND는 데이터를 보유하는 데 전력을 필요로 하지 않는 일종의 비휘발성 IC 기반 저장 기술로서 알려져 있을 수 있다.
시스템(200)은 프로세서(202)에 연결된 비휘발성 메모리(222)(예를 들어, CMOS 메모리)를 더 포함한다. CMOS 메모리(222)는, 컴퓨터 구성요소들 간의 저수준 통신을 관리하는 것을 돕는 BIOS(basic input/output system)(224)를 포함할 수 있고, 시동 자체 시험을 수행하기 위한 컴퓨터 코드의 스토리지를 포함할 수 있다. 통상적으로, 시동 자체 시험은 설치된 RAM의 데이터 무결성 시험을 포함할 수 있다. 본 개시에 따른 실시형태는, 시동 자체 시험이, 예를 들어 그 시험이 미리 정해진 메모리 모듈 내에 저장된 데이터의 속성과 양립하지 않을 경우, 적어도 일부의 미리 정해진 메모리 모듈에 대한 시험을 생략할 수 있도록, (BIOS(124)의 시동 자체 시험에 비해) 수정된 시동 자체 시험을 포함할 수 있다.
본 개시에 따른 실시형태는 또한 에너지원(219)을 RAM 저장 유닛(220)과 연결하는 공지된 기술의 RAM 휘발성 단점도 해결한다. 에너지원(219)은 메모리 인터페이스(218)와 통합될 수 있다. 에너지원(219)은, RAM 저장 유닛(220)에 대한 외부 전원이 (예를 들어, 전체 컴퓨팅 시스템(200)에 영향을 미치는 AC 전력 고장, 모바일 시스템(200)에 전력을 공급하는 배터리의 제거, 마더보드 고장 등에 의해) 손실된 경우, 에너지원(219)이 RAM 저장 유닛(220) 내에 저장된 데이터의 무결성을 유지하기에 충분한 전력을 공급할 수 있도록 하는 백업 전력원이다.
본 개시에 따른 실시형태는 전통적인 휘발성 메모리 및 비휘발성 RAM 모듈 메모리(NV-DIMM)의 조합으로 조직된 랜덤 액세스 메모리(RAM)를 포함한다. NV-DIMM 메모리는, 예를 들어 RAM 저장 유닛(220)으로서, 미국 특허출원 제14/804,175호("'175 출원")에 개시되어 있다. 시스템에 설치되는 전체 메모리의 각 유형의 비율은 시스템마다 다를 수 있다. 예를 들어, 총 메모리 크기는, 2개의 뱅크가 통상의 RAM 메모리로 구성되고 6개의 뱅크가 NV-DIMM으로서 구성되는 8개의 뱅크로 조직되는 8 GB 내지 160 GB 이상의 범위 이내가 되도록 설치 시에 선택될 수 있다.
본 개시에 따른 실시형태는 2개의 모드에서 동작하는 시스템을 제공할 수 있다. 제1 모드에서, 소스 시스템(본 시스템 또는 외부 시스템 중 어느 하나)의 통상의 휘발성 메모리의 전체 콘텐츠 또는 어드레스 범위는 '175 출원에 개시된 방법, 및 NV-DIMM 메모리 내에 저장된 표현(representation)의 사용에 의해 이미징되고 표현되도록 선택될 수 있다. 이 이미지 또는 표현은 또한 기준 이미지라고 알려져 있을 수도 있다. 실시형태는 IEEE 802.3ba-2010 표준을 준수하는 100 기가비트 이더넷과 같은 고속 통신 링크의 사용에 의해 외부 시스템에 통신 가능하게 연결될 수 있다.
본 개시의 실시형태에 따른 제2 모드에서, 소스 시스템의 전체 통상의 휘발성 메모리 어드레스 범위의 서브세트(subset)는 이미징되고 표현되도록 선택될 수 있고, 예를 들어, 시스템 상에서 실행하는 프로세싱에 의해 능동적으로 활용되는 통상의 휘발성 메모리의 일부분만이 이미징되고 표현된다. 이 실시형태의 다른 변형예에서는, 전체 통상의 휘발성 메모리 어드레스 범위의 고정 범위 서브세트(fixed range subset)가 이미징되고 표현될 수 있다. 고정 범위 서브세트가 반드시 연속적일 필요는 없다. 이 실시형태의 다른 변형예에서는, 이미징되고 표현되는 어드레스 범위의 서브세트가 가상 서버를 표현할 수 있다. 예를 들어, 단일의 물리 서버(예를 들어, 기업체에 의해 사용됨)가 하나보다 많은 가상 서버(예를 들어, 기업체 내의 수개의 부서에 대해 하나씩)를 호스팅하는 경우, 실시형태는 가상 서버 중 전부가 아닌 일부를 이미징하고 표현할 수 있다. 이러한 성능은, 예를 들어 상이한 서버에 의해 수행되는 기능이 상이한 백업 요건(예를 들어, 재무 부서용 가상 서버 대 고객 지원 부서용 가상 서버)을 갖는 경우에 유용할 수 있다.
일부 실시형태에서, NV-DIMM은, 예를 들어 시간 경과에 따른 단일의 시스템, 또는 다수의 외부 시스템, 또는 이들의 조합을 표현하는 복수의 기준 이미지(reference image)를 저장하기 위한 리포지토리(repository)로서 기능할 수 있다. 다수의 기준 이미지의 NV-DIMM 리포지토리는 재해 복구를 지원하는 데 사용될 수 있고, 예를 들어 다수의 기업을 위한 기준 이미지를 안전하게 저장하는 오프사이트(off-site) 장소이다.
데이터가 이미징되고, 표현되며 NV-DIMM 메모리 내에 저장된 후에, 본 개시에 따른 실시형태는 "박스 내의 기반시설(infrastructure in a box)" 능력을 제공할 수 있다. 예를 들어, 이미징되고 표현된 모든 데이터베이스, 애플리케이션, 로그, 소유 데이터 등이 원래의 하드웨어 환경을 모방하는 타깃 하드웨어 환경에 복제되면, 이미징되고 표현된 시스템은 이미징되고 표현된 시점에서 원래의 시스템의 시스템 상태와 함께 복제될 수 있다.
복제된 사본은 고속 복원을 갖는 백업 목적에, 또는 촉박한 통지(short notice)에 대한 확장 용량을 제공할 수 있는 데 유용할 수 있다. 복원이 고속인 것으로 간주되는지의 여부는 사용 분야마다, 또는 콘텐츠마다 다를 수 있다. 예를 들어, CAD/CAM 시스템에 대한 고속 복원은 금융 시장 거래를 지원하는 컴퓨팅 시스템에 대한 고속 복원인 것으로 간주되지 않을 수 있다. 온디맨드(on demand) 영화의 비디오 배포를 제공하는 컴퓨팅 시스템에 대한 고속 복원은 수퍼 볼(Super Bowl)과 같은 실시간 이벤트의 비디오 배포를 제공하는 컴퓨팅 시스템에 대한 고속 복원인 것으로 간주되지 않을 수 있다. 마찬가지로, 촉박한 통지인 것으로 간주되는 통지는 사용 분야 또는 콘텐츠마다 다를 수 있고, 금융 시장 거래를 지원하는 컴퓨팅 시스템에 대해서는 수초 이하만큼 짧을 수 있다. 일부 실시형태에서, 촉박한 통지는 약 5초 미만의 통지이다. 일부 실시형태에서, 고속 복원은 복원을 수행하기 위한 커맨드의 복원 또는 수신에 대한 필요성의 검출의 약 10분 이내에 완료될 수 있다. 다른 실시형태에서, 고속 복원은 약 3분 이내에 완료될 수 있다. 다른 실시형태에서, 고속 복원은 10초 이내에 완료될 수 있다.
전통적인 백업은, 시스템 상태가 동결되어야 하거나 또는 적어도 시스템 상태에 대한 변화가 (예를 들어, 중단을 초래하는, 사용자가 자신의 작업을 저장하는 것, 애플리케이션으로부터 빠져나오는 것 등에 의해) 전통적인 백업 프로세스 동안 최소화되어야 하는 비교적 드문 발생(예를 들어, 하루에 한번, 일주일에 한번 등)이다. 대조적으로, 복제된 사본이 보다 신속하게 만들어질 수 있을 때, 백업은 보다 신속하게, 보다 적시에, 보다 빈번하게 이루어질 수 있어, 복원이 필요할 경우에 시스템 상태의 보다 최근의(즉, 덜 오래된) 사본을 생성한다. 빈번한 백업은 시스템 상태의 스냅샷과 유사하게 시작한다. 빈번한 백업은 본 명세서에서 "블링크" 백업이라고 지칭될 수 있다.
도 3c와 관련하여 이하에서 보다 상세히 설명되는 바와 같이, 시스템 상태에 대한 변경은 블링크 백업 동안 감소될 수 있다. 블링크 백업의 빈도는 사용자 또는 시스템 관리자에 의해 구성 가능할 수 있다.
사진 촬영과 마찬가지로, 전통적인 백업은 준비(예를 들어, 인물 사진을 촬영하기 위해 다른 활동을 중단하는 것, 및 스테이징, 즉 특별한 포즈, 조명, 소품 등)가 필요한 공식 휴일의 가족 사진과 같다. 대조적으로, 실시형태는 (비디오 레코딩에 비해 비교적 느린 프레임 속도 임이더라도) 별도의 블링크 백업을 표현하는 비디오의 각각의 개별 프레임을 갖는, 가족의 비디오 레코딩과 더 유사하다. 블링크 백업은 반드시 과도한 준비가 필요하지 않고 신속하게 일어나며, 이에 따라 블링크되는 시스템의 동작을 중단시키지 않고 빈번하게 이루어질 수 있다.
블링크 백업은, 우선 백업될 메모리 리소스를 식별함으로써 진행될 수 있다. 예를 들어, 애플리케이션 특정(application-specific) 서버가 백업되는 것으로 가정한다. 예를 들어, 백업될 애플리케이션 특정 서버는 회계 기능에 전용되는 가상 서버일 수 있고, 가상 서버는 판매 및 마케팅, 엔지니어링 부서 등과 같은 각각 다른 기능에 전용되는 다른 가상 서버와 함께 물리 서버 상에서 호스팅된다. 관습적으로 백업될 서버는 자체적으로 실행하는 애플리케이션 프로그램의 리스트를 그들 각각의 시스템 리소스 사용량과 함께 유지할 것이다. 실시형태는, 백업되는 애플리케이션 특정 서버 상에서 현재 실행중인 모든 애플리케이션 프로그램에 할당되거나 그에 의해 사용되는 RAM 메모리 범위, 비휘발성 메모리(예를 들어, 하드 디스크, SSD(Solid-State Drive), 플래시 드라이브, NAND 메모리, 비휘발성 RAM 등과 같은 저장 매체) 내에 저장된 프로그램 코드의 어드레스 범위, 운영 시스템 구성 등으로 나타낸 바와 같이, 애플리케이션 특정 서버에 의해 사용되는 모든 시스템 리소스를 식별할 수 있다. 실시형태는, 수집이 발생하는 동안 애플리케이션 특정 서버 상에서 실행하는 다른 애플리케이션 프로그램에 대한 상태 또는 데이터 변경을 최소화하기 위해서, 이 수집을 우선도가 높은 데이터 수집 작업으로서 수행할 수 있다. 데이터 수집 작업은 그 자체의 메모리 사용량을 보고할 필요가 없다.
다음으로, 실시형태는 식별 작업에 의해 표시되는 메모리 콘텐츠를 검색할 수 있다. 그런 다음, 실시형태는 이하에서 더욱 상세하게 설명되는 도 5a의 프로세스(500)에 따라 메모리 콘텐츠를 인코딩하고 저장할 수 있다.
일부 실시형태에서, 복제된 사본은 복제되는 시스템 외부의 소스로부터의 요청에 의해 생성될 수 있다(예를 들어, "풀(pull)" 기반). 다른 실시형태에서, 복제된 사본은 복제되는 시스템에 의해 결정된 시간에 생성될 수 있다(예를 들어, "푸시(push)" 기반). 푸시 기반은 스케줄링된 백업과 유사하다.
본 개시에 따른 실시형태는 또한 촉박한 통지 시 컴퓨터 하드웨어 아키텍처를 용도 변경하는 능력을 제공한다. 예를 들어, 웹 호스팅 회사가 관심 대상인 수개의 전혀 다른 웹 사이트, 예를 들어 평균 200대의 서버를 사용하는 Amazon™과 같은 전자 상거래 웹 사이트, 평균 100대의 서버를 사용하는 E-Trade™와 같은 온라인 거래 웹 사이트 등을 호스팅한다고 가정한다. 또한, 그들이 표준 구성요소로부터 구성된 동일한 또는 유사한 컴퓨터 하드웨어 아키텍처를 사용한다고 가정한다. 소프트웨어 구성요소는 상이할 수 있고, 예를 들어 전자 상거래 웹 사이트는 Linux™와 같은 오픈소스 운영 시스템을 기반으로 할 수 있고, 온라인 거래 웹 사이트는 Microsoft Windows™와 같은 상용 운영 시스템을 기반으로 할 수 있다. 사용률은 시간 경과에 따라 달라질 수 있어, 하나의 시스템이 고도로 사용될 때에 다른 시스템은 가볍게 사용될 수 있으며, 그 반대의 경우도 마찬가지이다. 이러한 시나리오에서, 실시형태는 일부 서버를 하나의 웹 사이트로부터 다른 웹 사이트로 신속하게 용도 변경할 수 있다. 예를 들어, 평일 중반에 전자 상거래 웹 사이트가 분주하지 않지만 온라인 거래 웹 사이트가 분주할 경우, 일부의 서버(예를 들어, 40대의 서버)는 전자 상거래로부터 온라인 거래로 용도 변경될 수 있다. 대조적으로, 전자 상거래 웹 사이트가 분주하지만 온라인 거래 웹 사이트가 분주하지 않은 평일 저녁에는, 일부의 서버(예를 들어, 50대의 서버)가 온라인 거래 웹 사이트로부터 전자 상거래 웹 사이트로 용도 변경될 수 있다. 용도 변경은 또한 퍼스낼리티 스와핑(personality swapping)이라고도 지칭될 수 있다.
용도 "A"로부터 용도 "B"로 용도 변경되는 서버에 대하여, 용도 변경은 현재 용도 "B"에 전담되는 서버의 시스템 상태를 먼저 복사 또는 클로닝하는 것을 포함할 수 있다. 시스템 상태는 현재 사용되는 모든 메모리, 현재 실행중인 운영 시스템 및 모든 소프트웨어 등을 포함할 수 있다. 선택적으로, 현재 용도 "A"에 전담되지만 용도 변경될 서버의 현재 시스템 상태는 차후 복원을 위해 저장될 수 있다. 다음으로, 용도 "B"로부터 클로닝된 시스템 상태가 이전에 용도 "A"에 전담된 서버 상에 복원되어, 해당 서버를 용도 "B"로 실질적으로 즉시 용도 변경한다.
용도 변경할 때, 용도 "A" 및 용도 "B"는 동일한 기업 또는 상이한 기업에 대해 실질적으로 임의의 서버 기반 애플리케이션일 수 있다. 예를 들어, 주요 완구 소매점과 같은 단일 기업에 대하여, 용도 "A"는 크리스마스 전에 수요가 가장 많은 판매 시스템일 수 있고, 용도 "B"는 회계 연도 말에 가장 수요가 많은 회계 시스템일 수 있다.
마찬가지로, 본 개시에 따른 실시형태는 특정 목적을 위해 서버를 예비 스테이터스(spare status)로부터 활성 스테이터스(active status)로 용도 변경함으로써 시스템 용량을 증가시킬 수 있다. 예비 스테이터스는, 예를 들어 하드웨어가 실장되지만 사용 가능한 소프트웨어 또는 데이터가 설치되지 않는 블랭크 시스템일 수 있다.
본 개시에 따른 실시형태는 시스템 이미지의 조합을 용이하게 할 수 있다. 예를 들어, 기본 시스템 이미지는 운영 시스템 및/또는 운영 시스템용의 소정의 컴퓨팅 기반시설, 예를 들어 웹 서버, 메일 서버 등과 같은 비맞춤형 서버(uncustomized server)를 표현할 수 있다. 그런 다음, 기본 시스템 이미지는, 비맞춤형 서버의 시스템 특정 맞춤화(system-specific customization), 예를 들어 사용자 계정, 이력, 선호도, 매크로, 특수 애플리케이션 프로그램 등을 표현할 수 있는 커스텀 이미지(custom image)와 병합(조합)될 수 있다. 대조적으로, 시스템 블링크는 기본 시스템 이미지와는 별도로 맞춤화를 블링크할 수 있어, 맞춤화가 기본 시스템 이미지의 백업에 비해 다른 스케줄에서 또는 적은 지연으로 백업될 수 있게 한다.
도 3a는 본 개시의 실시형태에 따른 시스템(300)을 도시한다. 시스템(300)은 고속 클로닝을 수행하는 데 사용될 수 있다. 도시된 바와 같은 시스템(300)은 기업 A(301-A), 기업 B(301-B) 및 기업 C(301-C)를 포함한다. 각 기업은 전체 회사 또는 조직, 예를 들어 게이밍 네트워크, 온라인 판매자, 온라인 중개사, 증권 거래소 등을 표현할 수 있다. 시스템(300)은 도 3a에 도시된 것보다 더 적거나 많은 기업 네트워크를 포함할 수 있다.
각 기업(301-n)은 하나 이상의 서버, 예를 들어 기업 A(301-A)를 위한 서버(303-A-1 내지 303-A-n), 기업 B(301-B)를 위한 서버(303-B-1 내지 303-B-n), 및 기업 C(301-C)를 위한 서버(303-C-1 내지 303-C-n)를 포함할 수 있다. 기업 내의 개별 서버는 상이한 기능을 위해 기업에 의해 사용될 수 있다. 예를 들어, 기업 A(301-A)가 온라인 판매자인 경우, 서버(303-A-1)는 웹 서버일 수 있고, 서버(303-A-2)는 데이터베이스 및 재고 관리에 전담될 수 있고, 서버(303-A-3)는 경리 및 회계 등에 전담될 수 있다.
각 기업(301-n)은 통신 네트워크(308)를 통해 클로닝 서버(305)에 통신 가능하게 연결될 수 있다. 클로닝 서버(305)는, 예를 들어 도 2에 도시된 바와 같은 컴퓨터 시스템(200)일 수 있다. 동작 시, 클로닝 서버(305)는 외부 서버(303-m-n) 상에서 본 명세서에서 설명되는 프로세스 실시형태를 수행할 수 있다. 예를 들어, 클로닝 서버(305)는 서버(303-B-1)를 서버(303-B-2) 상에 복제할 수 있거나, 또는 클로닝 서버(305)는 서버(303-C-1)의 블링크 백업을 행할 수 있다.
일부 실시형태에서, 선택적인 별도의 블링크 리포지토리(306)는 하나 이상의 서버(303)로부터의 블링크 백업을 저장할 수 있다. 별도의 블링크 리포지토리(306) 없이, 블링크 백업은 클로닝 서버(305)의 NV-DIMM 메모리 내에 저장될 수 있다.
도 3b는 본 개시의 실시형태에 따른 시스템(350)을 도시한다. 시스템(350)은 네트워크를 통한 외부 액세스의 필요 없이 애플리케이션 서버(351)의 고속 클로닝을 수행하는 데 사용될 수 있다. 시스템(350)은, 통상적인 기능, 예를 들어 웹 서버, 데이터베이스 서버, 또는 회계 서버 등일 수 있는 애플리케이션 서버(351)를 포함한다. 애플리케이션 서버(351)는 통상적인 기능으로 애플리케이션 서버(351)의 동작을 지원하기 위해 통상의 휘발성 RAM 메모리(353) 및 저장 매체(354)에 연결된 프로세서(352)를 포함할 수 있다. 통신 인터페이스(355)는 애플리케이션 서버(351)와 외부 통신 링크(예를 들어, WAN 또는 LAN에 대한 이더넷 인터페이스) 사이의 통신 접속성을 제공할 수 있다.
그러나, 애플리케이션 서버(351)는 통상의 휘발성 RAM 메모리(307) 및 NV-DIMM(309)에 의해 지원되는, 클로닝 서버(355)의 기능을 해당 애플리케이션 서버 내에 추가로 내장할 수 있다. 클로닝 서버(355)는, 예를 들어 도 2에 도시된 바와 같은 컴퓨터 시스템(200)일 수 있다. 동작 시, 클로닝 서버(355)는 애플리케이션 서버(351) 상에서 본 명세서에서 설명되는 프로세스 실시형태를 수행할 수 있다. 시스템(300)과 비교되는 시스템(350)의 이점은, 클로닝 서버(355)가 애플리케이션 서버(351) 내에 내장되기 때문에, 시스템(350)이 통신 네트워크(308)와 같은 통신 네트워크에 대한 액세스를 반드시 필요로 하지 않는다는 것이다. 내장하는 것은, 예를 들어 애플리케이션 서버(351) 및 클로닝 서버(355) 모두를 위한 코드 모듈을 실행하는, 애플리케이션 서버(351)의 프로세서(352)에 의해 달성될 수 있다.
대안적으로, 애플리케이션 서버(351)는, 컴퓨터 시스템(200)을 기점으로 서용하고, 이어서 애플리케이션 서버(351)의 기능을 제공하는 추가 소프트웨어 모듈을 운영 시스템(204)에 의해 실행하여 구현될 수 있다.
도 3c는 본 개시의 실시형태에 따른 시스템(370)을 도시한다. 시스템(370)은, 하나 이상의 가상 서버(378a…378n)(총칭하여, 가상 서버(378))에 더하여, 복제 서버(375) 및 애플리케이션 서버(351)의 하나 이상의 구성요소(유사한 참조 번호로 표시됨)를 차례대로 포함할 수 있는 물리 서버(371)를 포함한다. 가상 서버(378) 중 개별이지만 비특정인 것은 가상 서버(378)라고 지칭될 수 있다. 프로세서(352)에서 동작하는 하이퍼바이저 또는 다른 가상 머신 모니터는 원격 사용자, 예를 들어 통신 인터페이스(355)를 통해 연결된 원격 사용자에게 가상 서버(378)의 외관을 제공하기 위해 물리 서버(371) 및 그의 리소스를 관리할 수 있다. 가상 서버(378)는, 예를 들어 각각의 가상 서버(378)에 연결되는 사용자(예를 들어, 원격 사용자)의 이익을 위해, 그리고 가상 서버(378) 상의 애플리케이션 프로그램(들)의 실행을 지원하기 위해 각각의 게스트 운영 시스템("GOS")을 제공할 수 있다. 가상 서버(378)를 지원하기 위한 메모리 스토리지는 RAM(353), 저장 매체(354)로부터 할당될 수 있고, 및/또는 외부 메모리 디바이스(도 3c에는 도시되지 않음)에 의해 제공될 수 있다.
일부 실시형태에서, 블링크 백업의 발생 시, 가상 서버(378), 그의 각각의 GOS, 메모리 리소스 및 GOS 상에서 실행하는 임의의 애플리케이션 프로그램은 블링크 백업을 수행하는 데 걸리는 시간 동안 일시적으로 잠금 또는 일시 정지 상태에 진입할 수 있다. 잠금 또는 일시 정지 상태는 블링크 백업이 수행되는 동안 시스템 상태 또는 시스템 구성에 대한 변경을 감소시킨다. 블링크 백업의 종결 시, 잠금 또는 일시 정지 상태에 진입한 요소는 자동적으로 자신의 정상 상태로 복귀할 수 있다.
일부 실시형태에서, 가상 서버(378), 그의 각각의 GOS, 메모리 리소스 및 GOS 상에서 실행하는 임의의 애플리케이션 프로그램은 블링크 백업 동안 일시적으로 대기 휴지(quiescent) 상태에 진입할 수 있다. 대기 휴지 상태는 트랜잭션을 계속해서 실행할 수 있지만, 결과는 저장 매체에 할당되는 것이 아니라 상주 메모리 내에 보유될 수 있다. 대조적으로, 절전 모드(hibernation mode)에서의 서버는 메모리 이미지를 저장 매체에 저장하고, 절전 모드에 있는 동안 트랜잭션을 실행하지 않고 셧다운할 수 있다. 블링크 백업의 종결 시, 대기 휴지 상태에 진입한 요소는 자동적으로 자신의 정상 상태로 복귀할 수 있다.
일부 실시형태에서, 블링크 백업은 통신 인터페이스(355)를 통해 액세스 가능한, 블링크 리포지토리(306)와 유사한 외부 블링크 리포지토리 내에 저장될 수 있다.
도 4는 단순화된 플랫 물리 어드레스 공간 모델을 도시한다. 물리 메모리의 총량은 도 4에 도시된 양과 다를 수 있다. 본 발명에 따른 실시형태는 본 명세서에서 설명되는 프로세스를 사용하여 전체 어드레스 공간(403)의 고속 클론을 생성할 수 있다. 다른 실시형태는 본 명세서에서 설명되는 프로세스를 사용하여 단순화된 플랫 물리 어드레스 공간 모델의 하나 이상의 부분(401a, 401b)의 고속 클론을 생성할 수 있다.
도 5a는 본 개시의 실시형태에 따른 인코딩 프로세스(500)를 도시한다. 프로세스(500)는 운영 시스템(204) 및 데이터 적응 모듈(211)에 의해 수행될 수 있다.
프로세스(500)는, 저장될 원시 데이터(raw data)의 블록이 원시 데이터를 저장하고자 하는 애플리케이션 프로그램으로부터 수신되는 단계(501)에서 시작한다. 원시 데이터는 파일, 스트리밍 미디어, 고정 크기 또는 가변 크기의 데이터 블록 등의 형태일 수 있다.
다음으로, 프로세스(500)는, 단계(501)에서 수신된 원시 데이터의 일부분이 원시 데이터의 후보 벡터에 매핑되거나 매칭될 수 있는 단계(503)로 이행한다. 원시 데이터를 원시 데이터의 더 긴 후보 벡터에 매칭하는 것은 원시 데이터를 원시 데이터의 더 짧은 후보 벡터와 매칭하는 것보다 더 큰 데이터 저장 효율을 생성해야 한다. 후보 벡터는 통상의 메모리 내에 (마커, 벡터) 쌍의 테이블로서 저장될 수 있다. 목표는 적어도 하나의 벡터에 의해 원시 데이터 내의 각 비트 또는 바이트를 표현하는 것이다. 0x00 또는 0xFF와 같은 소정의 원시 데이터 바이트는 디폴트 값인 것으로 간주될 수 있고, 디폴트 값과 동일한 임의의 원시 데이터 바이트에 대하여, 벡터로 디폴트 값과 동일한 바이트를 표현하는 것은 선택 사항이다.
단계(503)에서, 최소 임계 길이 한계는 원시 데이터의 후보 벡터에 매핑될 원시 데이터의 일부분의 길이 상에 존재할 수 있다. 예를 들어, 단일 바이트만으로 이루어지는 원시 데이터는, 원시 데이터의 벡터에 대한 포인터가 원시 데이터 자체보다 더 길 것이므로, 원시 데이터의 후보 데이터에 매칭시키려고 시도하기에는 너무 짧을 것이다. 길이가 최소 임계값을 초과하는 원시 데이터에 대하여, 원시 데이터가 원시 데이터의 존재하는 후보 벡터와 매칭하지 않는 경우, 원시 데이터는 원시 데이터의 새로운 벡터로서 추가될 수 있다.
다음으로, 프로세스(500)는, 단계(503)에서 결정된 벡터가 (마커, 벡터) 쌍의 테이블로부터 각각의 비트 마커에 매핑될 수 있는 단계(505)로 이행한다. 비트 마커는 관련 벡터를 지칭하는 간단한 방식이다.
다음으로, 프로세스(500)는, (마커, 벡터) 쌍의 테이블로부터의 비트 마커가 RAM 저장 유닛(220)과 같은 메모리 내에 저장되는 단계(507)로 이행한다.
도 5b는 본 개시의 실시형태에 따른 디코딩 프로세스(550)를 도시한다. 프로세스(550)는 운영 시스템(204) 및 데이터 적응 모듈(211)에 의해 수행될 수 있다.
프로세스(550)는, 디코딩될 인코딩 데이터의 블록이 RAM 저장 유닛(220)과 같은 메모리로부터 판독되는 단계(551)에서 시작한다. 어드레스는, 당업자에게 공지되어 있는 바와 같이, 가상 어드레스 조정 방법 및 테이블에 의해 관리될 수 있다.
다음으로, 프로세스(550)는, 비트 마커가 인코딩 데이터로부터 추출되는 단계(553)로 이행한다.
다음으로, 프로세스(550)는, 단계(553)로부터의 추출된 비트 마커가 (마커, 벡터) 쌍의 테이블에서 검색되는 단계(555)로 이행한다.
다음으로, 프로세스(550)는, 원시 데이터 벡터가 단계(553)로부터의 추출된 비트 마커에 대응하는 (마커, 벡터) 쌍의 테이블 내의 엔트리로부터 추출되는 단계(557)로 이행한다.
다음으로, 프로세스(550)는, 단계(557)로부터의 추출된 원시 데이터 벡터가 조합되어 재구성된 디코딩 데이터를 형성하는 단계(559)로 이행한다. 조합된 원시 데이터 벡터가 재구성된 디코딩 데이터의 전체 예상 어드레스 범위 내의 모든 어드레스를 포함하지 않는 경우, 포함되지 않는 어드레스는 디코딩 데이터 내의 디폴트 값, 예를 들어 0x00 또는 0xFF 바이트를 취하는 것으로 간주될 수 있다.
도 6a는 본 개시의 실시형태에 따른, 소스 시스템의 블링크 백업을 수행하기 위한 프로세스(600)를 도시한다. 프로세스(600)는 운영 시스템(204) 및 데이터 적응 모듈(211)에 의해 수행될 수 있다.
프로세스(600)는, 소스 시스템으로부터 백업될 메모리 리소스가 식별되는 단계(601)에서 시작한다. 예를 들어, 메모리 리소스는 전체 서버, 또는 특정 기능 또는 그룹(예를 들어, 회계 기능)에 전용되는 가상 서버에 대응할 수 있거나, 또는 다른 유사한 컴퓨팅 시스템에 대응할 수 있다. 보다 구체적으로, 메모리 리소스는 소스 시스템(즉, 백업될 시스템) 상에서 실행하는 하나 이상의 프로세스에 대응할 수 있다. 가상 서버는 판매 및 마케팅, 엔지니어링 부서 등과 같은 각각 다른 기능에 전용되는 다른 가상 서버와 함께 물리 서버 상에서 호스팅될 수 있다.
다음으로, 프로세스(600)는, 단계(601)에서 식별된 메모리 콘텐츠가 소스 시스템(즉, 백업될 시스템)으로부터 검색되는 단계(603)로 이행한다. 그런 다음, 프로세스(600)의 제어는 추가 프로세싱을 위해 인코딩 프로세스(500)로 전이될 수 있다. 단계(601)에서 식별된 메모리 콘텐츠는 프로세스(500)에 의해 인코딩될 원시 데이터 입력의 블록으로서 사용될 수 있다. 원시 데이터의 블록은 인코딩 프로세스(500)로 전이하기 전에 실질적으로 임의의 편리한 방식으로 분할될 수 있다. 예를 들어, 원시 데이터의 블록은 실질적으로 균일한 블록 크기(예를 들어, 원시 데이터의 블록당 1 Mbyte)를 가질 수 있거나, 또는 원시 데이터의 블록은 백업되는 서버의 각 프로세스에 의해 사용되는 메모리 공간에 대응할 수 있다. 일부 실시형태에서, '175 출원에 기재된 바와 같은 마커 테이블은 하나보다 많은 블링크 백업에 의해 참조될 수 있다.
도 6b는 본 개시의 실시형태에 따른, 블링크 백업으로부터 시스템을 복원하기 위한 프로세스(650)를 도시한다. 블링크 백업은, 블링크 백업이 이루어졌을 때에 백업의 타깃이었기 때문에 타깃 시스템이라고도 지칭될 수 있다. 프로세스(650)는 운영 시스템(204) 및 데이터 적응 모듈(211)에 의해 수행될 수 있다.
프로세스(650)는, 실시형태가 복원하기 위한 시스템을 식별하는 단계(651)에서 시작한다.
다음으로, 프로세스(650)는, 복원될 서버에 대응하는 인코딩 콘텐츠가 NV-DIMM(309)과 같은 인코딩 메모리로부터 검색되는 단계(653)로 이행한다.
다음으로, 프로세스(650)는, 단계(653)로부터의 검색된 인코딩 콘텐츠를 디코딩하기 위해 디코딩 프로세스(550)와 같은 디코딩 프로세스가 호출되는 단계(655)로 이행한다.
다음으로, 프로세스(650)는, 디코딩 데이터가 타깃 시스템의 메모리 공간 내에 저장되는 단계(657)로 이행한다. 디코딩 데이터는 소스 시스템 상에 점유되는 것과 동일한 메모리 어드레스에 저장될 수 있다.
전술한 것은 본 발명의 실시형태에 관한 것이지만, 본 발명의 다른 및 추가 실시형태가 그의 기본 범위로부터 벗어나지 않고 고안될 수 있다. 본 명세서에서 설명된 다양한 실시형태는, 본 명세서에 포함된 범위로부터 벗어나지 않고, 설명된 임의의 다른 실시형태와 조합하여 사용될 수 있다는 것이 이해된다. 또한, 전술한 설명은 철저하거나 또는 개시된 정확한 형태로 본 발명을 제한하도록 의도되지 않는다. 수정 및 변형이 상기 교시를 고려하여 가능하거나 또는 본 발명의 실시로부터 취득될 수 있다. 소정의 예시적인 실시형태는, 리스트 아이템이 실시형태를 나타낸다는 것 및 리스트가 추가 실시형태를 배제하는 폐쇄된 리스트를 나타내도록 의도되지 않는다는 것을 나타내기 위한 용어를 포함하는 제약을 두지 않는 리스트의 사용에 의해 식별될 수 있다. 이러한 용어는 주변 맥락으로부터 분명한 바와 같이 "예를 들어", "등", "~와 같은", "예를 들면", "등등", "기타 같은 종류의 것" 등, 및 다른 용어를 포함할 수 있다.
본 출원의 설명에서 사용된 요소, 행위, 또는 지시는 이와 같이 명시적으로 설명되지 않는 한 본 발명에 중대하거나 또는 필수적인 것으로 해석되지 않아야 한다. 또한, 본 명세서에서 사용된 바와 같이, 단수 표현은 하나 이상의 아이템을 포함하도록 의도된다. 단지 하나의 아이템이 의도되는 경우, 용어 "하나" 또는 유사한 언어가 사용된다. 또한, 본 명세서에서 사용된 바와 같이, 복수의 아이템의 목록 및/또는 아이템의 복수의 카테고리에 후행하는 용어 "~ 중 임의의 것"은 개별적으로 또는 다른 아이템 및/또는 아이템의 다른 카테고리와 함께, 아이템 및/또는 아이템의 카테고리 "중 임의의 것", "의 임의의 조합", "의 임의의 다수", 및/또는 "의 다수의 임의의 조합"을 포함하도록 의도된다.
또한, 청구항은 그 취지로 명시되지 않은 한 설명된 순서 또는 요소에 한정되는 것으로 읽지 않아야 한다. 또한, 임의의 청구항에서 용어 "수단"의 사용은 35 U.S.C. §112, ¶ 6을 원용하도록 의도되며, 단어 "수단"이 없는 임의의 청구항은 그렇게 의도되지 않는다.

Claims (26)

  1. 소스 컴퓨팅 시스템을 클로닝하기 위한 방법으로서,
    상기 소스 컴퓨팅 시스템에 연결된 메모리 공간을 선택하는 단계;
    상기 선택된 메모리 공간으로부터 미코딩 데이터(uncoded data)를 검색하는 단계;
    백업 서버 상에서 실행하는 비트 마커 기반(bit-marker-based) 인코딩 프로세스를 사용하여 상기 미코딩 데이터를 인코딩하는 단계;
    상기 백업 서버에 연결되고 전력 중단으로부터 보호되는 보호 메모리 내에 인코딩 데이터를 저장하는 단계;
    상기 보호 메모리로부터 상기 인코딩 데이터를 검색하는 단계; 및
    상기 소스 컴퓨팅 시스템으로부터 분리되는 타깃 컴퓨팅 시스템 상에 상기 인코딩 데이터를 디코딩하는 단계를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  2. 제1항에 있어서, 상기 메모리 공간을 선택하는 단계는,
    상기 소스 컴퓨팅 시스템 상에서 실행하는 하나 이상의 컴퓨팅 프로세스를 식별하는 단계; 및
    상기 하나 이상의 식별된 컴퓨팅 프로세스 각각에 의해 사용되는 메모리 공간을 선택하는 단계를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  3. 제1항에 있어서, 상기 메모리 공간을 선택하는 단계는 상기 소스 컴퓨팅 시스템의 전체 휘발성 메모리 어드레스 범위를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  4. 제1항에 있어서, 상기 메모리 공간을 선택하는 단계는 상기 소스 컴퓨팅 시스템의 전체 휘발성 메모리 어드레스 범위의 고정 범위 서브세트(fixed range subset)를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  5. 제1항에 있어서, 상기 소스 컴퓨팅 시스템은 가상 서버를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  6. 제1항에 있어서, 상기 백업 서버에 연결된 상기 보호 메모리는 복수의 소스 컴퓨팅 시스템 기준 이미지를 저장하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  7. 제6항에 있어서, 상기 복수의 소스 컴퓨팅 시스템 기준 이미지는 단일의 소스 컴퓨팅 시스템의 시간 경과에 따른 이미지를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  8. 제6항에 있어서, 상기 복수의 소스 컴퓨팅 시스템 기준 이미지는 복수의 소스 컴퓨팅 시스템의 이미지를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  9. 제1항에 있어서, 상기 소스 컴퓨팅 시스템의 클론은 클로닝되는 상기 소스 컴퓨팅 시스템 외부의 소스로부터의 요청에 의해 생성되는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  10. 제1항에 있어서, 상기 소스 컴퓨팅 시스템의 클론은 클로닝되는 상기 소스 컴퓨팅 시스템에 의해 결정된 시간에 생성되는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  11. 제1항에 있어서, 상기 소스 컴퓨팅 시스템을 클로닝하는 것은 상기 타깃 컴퓨팅 시스템을 다른 용도로 용도 변경하도록 작동 가능한, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  12. 제1항에 있어서, 상기 소스 컴퓨팅 시스템을 클로닝하는 것은 상기 타깃 컴퓨팅 시스템을 백업 상태로 복원하도록 작동 가능한, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  13. 제1항에 있어서, 상기 소스 컴퓨팅 시스템을 클로닝하는 것은 상기 타깃 컴퓨팅 시스템을 예비 스테이터스(spare status)로부터 활성 스테이터스(active status)로 용도 변경하도록 작동 가능한, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  14. 제1항에 있어서, 상기 메모리 공간을 선택하는 단계는,
    비맞춤형 서버(uncustomized server)의 기본 시스템 이미지를 포함하는 제1 메모리 공간; 및
    상기 비맞춤형 서버의 시스템 특정 맞춤화(system-specific customization)를 포함하는 제2 메모리 공간을 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 방법.
  15. 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템으로서,
    상기 소스 컴퓨팅 시스템을 위한 메모리 공간을 제공하는 메모리에 연결된 프로세서;
    상기 메모리 공간으로부터 미코딩 데이터의 검색을 지원하기 위한 통신 인터페이스;
    백업 서버 상에서 실행하는 비트 마커 기반 인코딩 프로세스의 사용에 의해 상기 미코딩 데이터를 인코딩하기 위한 인코더;
    상기 백업 서버에 연결되고 전력 중단으로부터 보호되는 보호 메모리 내에 인코딩 데이터를 저장하기 위한 저장 모듈;
    상기 보호 메모리로부터 상기 인코딩 데이터의 검색을 지원하기 위한 통신 인터페이스; 및
    상기 소스 컴퓨팅 시스템으로부터 분리되는 타깃 컴퓨팅 시스템 상에 상기 인코딩 데이터를 디코딩하기 위한 디코더를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  16. 제15항에 있어서, 상기 메모리 공간을 선택하는 것은 상기 소스 컴퓨팅 시스템의 전체 휘발성 메모리 어드레스 범위를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  17. 제15항에 있어서, 상기 메모리 공간을 선택하는 것은 상기 소스 컴퓨팅 시스템의 전체 휘발성 메모리 어드레스 범위의 고정 범위 서브세트를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  18. 제15항에 있어서, 상기 소스 컴퓨팅 시스템은 가상 서버를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  19. 제15항에 있어서, 상기 백업 서버에 연결된 상기 보호 메모리는 복수의 소스 컴퓨팅 시스템 기준 이미지를 저장하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  20. 제19항에 있어서, 상기 복수의 소스 컴퓨팅 시스템 기준 이미지는 단일의 소스 컴퓨팅 시스템의 시간 경과에 따른 이미지를 포함하는, 소스 컴퓨팅 시스템을 클로닝하기 위한 시스템.
  21. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서, 복합 오브젝트 및 다차원 데이터 오브젝트로 이루어진 군으로부터 선택된 것을 표현하는 미코딩 시스템 상태 데이터의 블록을 수신하기 위한 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하되, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 디폴트 데이터 및 비디폴트 데이터로 분해하는 것;
    상기 비디폴트 데이터를 복수의 데이터 벡터로 매핑하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
  22. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서,
    미코딩 시스템 상태 데이터의 블록을 수신하는 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하고, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 디폴트 데이터 및 비디폴트 데이터로 분해하는 것;
    상기 비디폴트 데이터를 복수의 데이터 벡터로 매핑하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되며,
    상기 비트 메이커는,
    시드 값(seed value)과 복제 규칙, 및
    복수의 다른 비트 마커와 조합 규칙으로 이루어진 군으로부터 선택된 것을 포함하는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
  23. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서,
    미코딩 시스템 상태 데이터의 블록을 수신하는 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하되, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 디폴트 데이터 및 비디폴트 데이터로 분해하는 것;
    상기 비디폴트 데이터를 복수의 데이터 벡터로 매핑하는 것으로서, 상기 데이터 벡터 중 적어도 하나가 프랙탈화 패턴(fractalized pattern)을 포함하는, 상기 매핑하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
  24. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서,
    복합 오브젝트 및 다차원 데이터 오브젝트로 이루어진 군으로부터 선택된 것을 표현하는 미코딩 시스템 상태 데이터의 블록을 수신하기 위한 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하되, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 복수의 데이터 벡터로 분해하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되며,
    상기 복수의 데이터 벡터 중 적어도 일부는 상기 미코딩 시스템 상태 데이터의 블록을 표현할 때에 서로 중첩하는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
  25. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서,
    미코딩 시스템 상태 데이터의 블록을 수신하는 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하되, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 복수의 데이터 벡터로 분해하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것으로서, 상기 각각의 비트 마커는,
    시드 값과 복제 규칙, 및
    복수의 다른 비트 마커와 조합 규칙으로 이루어진 군으로부터 선택된 것을 포함하는, 상기 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되며,
    상기 복수의 데이터 벡터 중 적어도 일부는 상기 미코딩 시스템 상태 데이터의 블록을 표현할 때에 서로 중첩하는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
  26. 시스템 상태 데이터를 인코딩하기 위한 시스템으로서,
    미코딩 시스템 상태 데이터의 블록을 수신하는 데이터 인터페이스; 및
    메모리에 연결된 프로세서를 포함하되, 상기 프로세서는,
    상기 미코딩 시스템 상태 데이터의 블록을 복수의 데이터 벡터로 분해하는 것으로서, 상기 데이터 벡터의 적어도 하나가 프랙탈화 패턴을 포함하는, 상기 분해하는 것;
    상기 복수의 데이터 벡터 각각을 각각의 비트 마커에 매핑하는 것; 및
    상기 각각의 비트 마커를 상기 메모리 내에 저장하여 상기 미코딩 시스템 상태 데이터의 인코딩 표현을 생성하는 것을 수행하도록 구성되며,
    상기 복수의 데이터 벡터 중 적어도 일부는 상기 미코딩 시스템 상태 데이터의 블록을 표현할 때에 서로 중첩하는, 시스템 상태 데이터를 인코딩하기 위한 시스템.
KR1020187031993A 2016-04-04 2017-03-29 고속 시스템 상태 클로닝 KR20190013729A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/089,837 2016-04-04
US15/089,837 US9817728B2 (en) 2013-02-01 2016-04-04 Fast system state cloning
PCT/US2017/024692 WO2017176523A1 (en) 2016-04-04 2017-03-29 Fast system state cloning

Publications (1)

Publication Number Publication Date
KR20190013729A true KR20190013729A (ko) 2019-02-11

Family

ID=60000675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031993A KR20190013729A (ko) 2016-04-04 2017-03-29 고속 시스템 상태 클로닝

Country Status (7)

Country Link
EP (1) EP3440549A4 (ko)
JP (1) JP2019514146A (ko)
KR (1) KR20190013729A (ko)
CN (1) CN109643259A (ko)
AR (1) AR108087A1 (ko)
TW (1) TW201738759A (ko)
WO (1) WO2017176523A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096398A (ko) 2020-12-31 2022-07-07 스노우화이트팩토리(주) 생열귀나무 추출물을 유효성분으로 포함하는 치주 질환의 예방 또는 치료용 조성물

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
PT3539026T (pt) 2016-11-10 2022-03-08 Swirlds Inc Métodos e aparelhos para uma base de dados distribuída que inclui entradas anónimas
US11222006B2 (en) 2016-12-19 2022-01-11 Swirlds, Inc. Methods and apparatus for a distributed database that enables deletion of events
KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
SG11202002308RA (en) 2017-11-01 2020-04-29 Swirlds Inc Methods and apparatus for efficiently implementing a fast-copyable database
US10572186B2 (en) 2017-12-18 2020-02-25 Formulus Black Corporation Random access memory (RAM)-based computer systems, devices, and methods
TWI750425B (zh) * 2018-01-19 2021-12-21 南韓商三星電子股份有限公司 資料儲存系統和用於寫入鍵值對的物件的方法
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
CN113711202A (zh) 2019-05-22 2021-11-26 斯沃尔德斯股份有限公司 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置
TWI788084B (zh) * 2021-11-03 2022-12-21 財團法人資訊工業策進會 運算裝置以及資料備份方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212644A1 (en) * 2005-03-21 2006-09-21 Acton John D Non-volatile backup for data cache
US8806271B2 (en) * 2008-12-09 2014-08-12 Samsung Electronics Co., Ltd. Auxiliary power supply and user device including the same
US8055937B2 (en) * 2008-12-22 2011-11-08 QuorumLabs, Inc. High availability and disaster recovery using virtualization
JP2011039589A (ja) * 2009-08-06 2011-02-24 Fujitsu Ltd 復元制御装置、復元制御方法、コンピュータ可読記憶媒体、及び、復元制御プログラム
US20150163060A1 (en) * 2010-04-22 2015-06-11 Martin Tomlinson Methods, systems and apparatus for public key encryption using error correcting codes
US20120239860A1 (en) * 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
CN102073893A (zh) * 2010-12-27 2011-05-25 陆宝武 一种防伪编码方法及解码装置
EP2798486B1 (en) * 2011-12-29 2019-11-06 VMware, Inc. N-way synchronization of desktop images
US9137225B2 (en) * 2012-04-23 2015-09-15 Raghavendra Kulkarni Seamless remote storage of uniformly encrypted data for diverse platforms and devices
US20140223118A1 (en) * 2013-02-01 2014-08-07 Brian Ignomirello Bit Markers and Frequency Converters
US9817728B2 (en) * 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US9467294B2 (en) * 2013-02-01 2016-10-11 Symbolic Io Corporation Methods and systems for storing and retrieving data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096398A (ko) 2020-12-31 2022-07-07 스노우화이트팩토리(주) 생열귀나무 추출물을 유효성분으로 포함하는 치주 질환의 예방 또는 치료용 조성물

Also Published As

Publication number Publication date
WO2017176523A8 (en) 2018-10-25
CN109643259A (zh) 2019-04-16
EP3440549A4 (en) 2019-11-13
EP3440549A1 (en) 2019-02-13
JP2019514146A (ja) 2019-05-30
AR108087A1 (es) 2018-07-18
WO2017176523A1 (en) 2017-10-12
TW201738759A (zh) 2017-11-01

Similar Documents

Publication Publication Date Title
US10789137B2 (en) Fast system state cloning
KR20190013729A (ko) 고속 시스템 상태 클로닝
US11513926B2 (en) Systems and methods for instantiation of virtual machines from backups
CN106852175B (zh) 可配置易失性存储器数据保存触发器
CN106062742B (zh) 用于改进快照性能的系统和方法
US9116846B2 (en) Virtual machine backup from storage snapshot
Schulz Cloud and virtual data storage networking
CN103210395B (zh) 与客户端虚拟机交互的技术
US10785320B2 (en) Managing operation of instances
US10606482B2 (en) Method and apparatus for dense hyper IO digital retention
CN105164635B (zh) 针对固态存储设备在运行中的性能调整
JP6224762B2 (ja) 高密度ハイパーioデジタル保持のための方法及び装置
US10997516B2 (en) Systems and methods for predicting persistent memory device degradation based on operational parameters
US20170052716A1 (en) Systems and methods for persistent memory timing characterization
CN104981812A (zh) 在对等监控中支持可靠性、可用性、以及可服务性(ras)流的机制
US20160218737A1 (en) Method and apparatus for dense hyper io digital retention
US10824524B2 (en) Systems and methods for providing continuous memory redundancy, availability, and serviceability using dynamic address space mirroring
US10387306B2 (en) Systems and methods for prognosticating likelihood of successful save operation in persistent memory
US11093332B2 (en) Application checkpoint and recovery system
CN101000570A (zh) 计算机平台开机配置存储器备援处理方法及系统
US20080010445A1 (en) Initialization After a Power Interruption
CN108897561B (zh) 一种数据存储方法及存储系统
US7657733B2 (en) Hardware password accessing method
Schulz StorageIO Comments and Feedback for EPA Energy Star® for Enterprise Storage Specification
Venkatachar Accelerate Oracle Backup Using SanDisk® Solid State Drives (SSDs)

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application