KR101150025B1 - 데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을만드는 방법, 시스템 및 장치 - Google Patents

데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을만드는 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR101150025B1
KR101150025B1 KR1020050077759A KR20050077759A KR101150025B1 KR 101150025 B1 KR101150025 B1 KR 101150025B1 KR 1020050077759 A KR1020050077759 A KR 1020050077759A KR 20050077759 A KR20050077759 A KR 20050077759A KR 101150025 B1 KR101150025 B1 KR 101150025B1
Authority
KR
South Korea
Prior art keywords
task
data
tasks
protection
block
Prior art date
Application number
KR1020050077759A
Other languages
English (en)
Other versions
KR20060050607A (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 KR20060050607A publication Critical patent/KR20060050607A/ko
Application granted granted Critical
Publication of KR101150025B1 publication Critical patent/KR101150025B1/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
    • G06F11/1458Management of the backup or restore process
    • G06F11/1466Management of the backup or restore process to make the backup process non-disruptive
    • 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
    • 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
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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
    • G06F11/1456Hardware arrangements for backup
    • 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
    • G06F11/1458Management of the backup or restore process
    • 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/2056Error 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 by mirroring
    • G06F11/2071Error 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 by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • 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
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 보호 애플리케이션이 제공된다. 데이터 보호 애플리케이션은 데이터에 대해 보호를 제공하는 작업을 포함한다. 그 작업은 작업을 수행하도록 구성된 다수의 태스크를 포함한다. 또한, 다수의 태스크 각각의 진행을 관리하기 위한 태스크 실행기가 포함된다.
Figure R1020050077759
데이터 보호, 메이크업 작업, 태스크, 복제, 무결성, 에이전트

Description

데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터 보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을 만드는 방법, 시스템 및 장치{METHOD, SYSTEM, AND APPARATUS FOR CREATING AN ARCHITECTURAL MODEL FOR GENERATING ROBUST AND EASY TO MANAGE DATA PROTECTION APPLICATIONS IN A DATA PROTECTION SYSTEM}
도 1a-2는 본 발명의 일 실시예에 따라서, 데이터의 보호 및 복구를 관리하기 위한 데이터 보호 시스템의 블록도들.
도 3은 본 발명의 일 실시예에 따라서, 작성 위치에 위치되어 있는 보호가능 객체들의 초기 선택 및 보호를 설명하는 데이터 보호 시스템의 흐름도.
도 4는 본 발명의 일 실시예에 따라서, 사용자 상호작용 및 선택을 위한 사용자 인터페이스 상에 공개되고 표시되는 다수의 Namespaces 및 Namespace Elements의 블록도.
도 5는 본 발명의 일 실시예에 따라서, Namespace Element와 보호가능 객체들 간의 매핑(mapping)을 예시하는 도면.
도 6은 본 발명의 일 실시예에 따라서, 연관된 유형들의 Namespaces 및 Namespace Elements의 유형들에 대한 스키마(schema)의 블록도.
도 7은 본 발명의 일 실시예에 따라서, 논리적 Namespace Element를 물리적 보호가능 객체로 매핑하기 위한 스키마의 블록도.
도 8은 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 보호될 수 있는 보호가능 객체들을 포함하는 작성 위치의 블록도.
도 9a 및 9b는 본 발명의 일 실시예에 따라서, 작성 위치에서의 보호가능 객체들 및 보호 그룹으로의 보호가능 객체들의 그룹화에 대한 블록도들.
도 10은 본 발명의 일 실시예에 따라서, 선택된 Namespace Elements, 매핑된 보호 객체들 및 보호 그룹의 속성들을 포함하는 보호 그룹의 블록도.
도 11은 본 발명의 일 실시예에 따라서, 보호 그룹을 보호하기 위한 계획을 구성하는 구성 루틴의 흐름도.
도 12는 본 발명의 일 실시예에 따라서, 보호 그룹의 생성을 보다 상세하게 설명하는 보호 그룹 생성 루틴을 예시하는 도면.
도 13은 본 발명의 일 실시예에 따라서, 2개 이상의 보호 그룹에 포함되는 데이터 소스들의 중첩을 검출하기 위한 중첩 검출 루틴을 예시하는 도면.
도 14는 본 발명의 일 실시예에 따라서, 보호 객체를 복구하는 복구 프로세스의 흐름을 예시하는 데이터 보호 시스템의 흐름도.
도 15는 본 발명의 일 실시예에 따라서, 저장 위치에 포함될 수 있는 복구가능한 객체들의 보다 상세한 도면을 예시하는 블록도.
도 16은 본 발명의 일 실시예에 따라서, 저장 위치로부터 보호 객체들을 복구하는 복구 루틴을 예시하는 도면.
도 17 내지 23a, 및 24는 본 발명의 일 실시예에 따라서, 자동 검색 그룹 (auto discovery group)을 생성 및 활용하기 위한 흐름도.
도 23b는 본 발명의 일 실시예에 따라서, 보호 명칭공간 엘리먼트(namespace element)의 재매핑(remap)을 해결하기 위한 재매핑 해결 루틴(remap resolution routine)을 예시하는 도면.
도 25는 본 발명의 일 실시예에 따라서, 상위 레벨 Namespace Element와 보호가능 객체들 간의 매핑들을 초기에 검색하기 위한 초기 검색 루틴의 흐름도.
도 26은 본 발명의 일 실시예에 따라서, 작성 위치에 위치한 보호가능 객체들과 Namespaces 및 Namespace Elements 간의 매핑들의 검색을 위한 스케줄된 검색 루틴의 흐름도.
도 27은 본 발명의 일 실시예에 따른, 자동 검색 그룹 생성 루틴의 흐름도.
도 28 및 29는 본 발명의 일 실시예에 따른, 자동 검색 그룹 갱신 루틴의 흐름도.
도 30은 본 발명의 일 실시예에 따라서, 보호 의도를 데이터 세트를 보호하기 위한 계획으로 변환하기 위한 흐름도.
도 31 및 32는 본 발명의 일 실시예에 따라서, 보호 의도를 작성 위치에 위치하는 물리적 객체를 보호하기 위한 상세한 계획으로 변환하기 위한 의도 변환 루틴(intent translation routine)의 흐름도.
도 33은 본 발명의 일 실시예에 따라서, 보호 그룹에 대한 보호 계획을 생성하기 위한 보호 계획 생성 루틴의 흐름도.
도 34는 본 발명의 일 실시예에 따라서, 준비 계획을 실행하기 위한 준비 계 획 실행 루틴의 흐름도.
도 35는 본 발명의 일 실시예에 따라서, 저장 위치에 위치하는 데이터의 복사를 검증하기 위한 검증 루틴의 흐름도.
도 36은 본 발명의 일 실시예에 따라서, 저장 위치에 위치한 객체들의 복사를 검증하기 위한 스케줄된 검증 루틴의 흐름도.
도 37은 본 발명의 일 실시예에 따른, 저장 위치 및/또는 전체 저장 위치의 저장 부분에 대한 상태 천이의 블록도.
도 38은 본 발명의 일 실시예에 따라서, 이전의 의도 변환 루틴 동안에 발생한 인터럽션에 후속하여 의도 변환 루틴을 재시작하기 위한 재시작 루틴의 흐름도.
도 39는 본 발명의 일 실시예에 따라서, 데이터를 보관하기 위한 계획을 생성하는 보관(archive) 보호 계획 생성 루틴을 예시하는 도면.
도 40은 본 발명의 일 실시예에 따라서, 보관 방식을 생성하기 위해 사용될 수 있는 서로 다른 생성들의 일례를 예시하는 표.
도 41은 본 발명의 일 실시예에 따라서, 데이터를 보관하기 위해 매체를 할당하는 플로우 루틴.
도 42는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템의 블록도.
도 43 및 44는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 수행되는 데이터 전송 모니터링 루틴의 흐름도.
도 45는 본 발명의 일 실시예에 따라서, 작성 위치로부터 저장 위치로 변경 기록들의 전송을 재시작하는 데이터 보호 시스템의 흐름도.
도 46 및 47은 본 발명의 일 실시예에 따라서, 복제를 검증하기 위한 검증 루틴의 흐름도들.
도 48a는 본 발명의 일 실시예에 따라서, 작성 위치에 의해 수신된 커맨드들을 처리하기 위한 커맨드 처리 루틴의 흐름도.
도 48b는 본 발명의 일 실시예에 따라서, 작성 위치로부터 저장 위치로 변경 레코드(record)들을 전송하기 위한 데이터 전송 루틴의 흐름도.
도 48c는 본 발명의 일 실시예에 따라서, 데이터를 검증하기 위한 검증 루틴의 흐름도.
도 49a는 본 발명의 일 실시예에 따라서, 저장 위치에 의해 수신되는 커맨드들을 처리하기 위한 커맨드 처리 루틴의 흐름도.
도 49b는 본 발명의 일 실시예에 따라서, 저장 위치에서 레코드들을 수신하기 위한 레코드 수신 루틴의 흐름도.
도 49c는 본 발명의 일 실시예에 따라서, 저장 위치에서 복제에 대한 변경 레코드를 적용하기 위한 변경 레코드 적용 루틴의 흐름도.
도 50은 본 발명의 일 실시예에 따라서, 다수의 태스크를 포함하는 작업의 블록도.
도 51은 본 발명의 일 실시예에 따라서, 태스크들의 모니터링 및 메이크업 작업(makeup job)의 생성을 예시하는 흐름도.
도 52는 본 발명의 일 실시예에 따라서, 태스크가 실패인 것을 식별하고 태스크가 중요했다면 메이크업 작업을 생성하기 위한 메이크업 작업 루틴의 흐름도.
도 53은 본 발명의 일 실시예에 따라서, 복사 및 임시 버전들과 연관된 문제들을 진단하고 문제가 검출되면 제안된 보정을 갖는 보고서를 생성하기 위한 흐름도.
도 54 내지 56은 본 발명의 일 실시예에 따라서, 데이터 보호 시스템 내의 데이터의 복사와 관련된 잠재적인 문제점들을 진단하기 위한 복사 진단 루틴의 상세를 설명하는 흐름도.
도 57 내지 58은 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 생성된 임시 버전과 관련된 잠재적인 문제점들을 진단하기 위한 임시 버전 진단 루틴을 설명하는 흐름도.
도 59는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템의 정보의 복구와 연관된 잠재적인 문제점들을 진단하기 위한 복구 진단 루틴을 설명하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
101 : 데이터 보호기
103 : 작성 위치
105 : 저장 위치
303 : 사용자 인터페이스
601 : 도메인
603 : DFS ROOT
607 : 서버
[문헌 1] 미국 특허 출원 번호 _______[대리인 정리 번호: MSFT122430] "METHOD, SYSTEM, AND APPARATUS FOR CONFIGURING A DATA PROTECTION SYSTEM" (2004년 9월 9일)
[문헌 2] 미국 특허 출원 번호 ______[대리인 정리 번호: MSFT122560] "METHOD, SYSTEM, AND APPARATUS FOR CREATING SAVED SEARCHES AND AUTO DISCOVERY GROUPS FOR A DATA PROTECTION SYSTEM" (2004년 9월 9일)
[문헌 3] 미국 특허 출원 번호 _______[대리인 정리 번호: MSFT122799] "METHOD, SYSTEM, AND APPARATUS, FOR TRANSLATING LOGICAL INFORMATION REPRESENTATIVE OF PHYSICAL DATA IN A DATA PROTECTION SYSTEM" (2004년 9월 9일)
[문헌 4] 미국 특허 출원 번호 _______[대리인 정리 번호: MSFT122796] "METHOD, SYSTEM, AND APPARATUS FOR CREATING AN ARCHIVE ROUTINE FOR PROTECTION DATA IN A DATA PROTECTION SYSTEM" (2004년 9월 9일)
[문헌 5] 미국 특허 출원 번호 _______[대리인 정리 번호: MSFT122904] "METHOD, SYSTEM, AND APPARATUS FOR PROVIDING RESILIENT DATA TRANSFER IN A DATA PROTECTION SYSTEM" (2004년 9월 9일)
[문헌 6] 미국 특허 출원 번호 _______[대리인 정리 번호: MSFT122800] "METHOD, SYSTEM, AND APPARATUS FOR CREATING AN ARCHITECTURAL MODEL FOR GENERATING IN A DATA PROTECTION SYSTEM" (2004년 9월 9일)
본 발명은 상기 문헌들을 상호 참조하며, 그 전체가 참조로 본원에 포함된다.
일반적으로, 본 발명은 데이터 보호 및 데이터 보호 시스템에 관한 것으로서, 특히 데이터의 보호 및 복구를 제어하기 위한 시스템, 방법 및 장치에 관한 것이다.
일반적으로 설명되는 바와 같이, 큰 규모의 컴퓨터 시스템은 종종 몇몇 컴퓨팅 디바이스들 및 많은 양의 데이터를 포함한다. 그러한 시스템에서, 컴퓨팅 디바이스들은 종종 추가되고 제거된다. 유사하게, 기존의 컴퓨팅 디바이스들은 공유, 스토리지 그룹(Exchange Storage Groups), 데이터베이스, 볼륨(volume)의 추가, 및 컴퓨팅 디바이스들에 저장된 데이터에 대한 다른 변경들을 통해 종종 변경될 수 있다. 그러한 컴퓨팅 시스템을 활용하는 조직들에 대해, 데이터의 백업을 종종 생성함으로써 일반적으로 시스템 상에 저장된 데이터를 보호할 필요가 있다.
그러나, 시스템의 보호를 담당하는 사람들은 시스템에 대한 추가 및/또는 변경들에 대해 종종 통지받지 못할 수 있고 그 결과 보호를 필요로 하는 새로운 자원을 인식하지 못할 수 있다. 예를 들어, 서버와 같은 새로운 컴퓨팅 디바이스가 시스템에 추가되고 시스템의 보호를 담당하는 사람이 그러한 추가를 통보받지 못했다면, 새로운 컴퓨팅 디바이스 상의 데이터 및 새로운 컴퓨팅 디바이스는 보호되지 않은 채로 남아 있을 수 있다.
이러한 문제점은, 개인들이 시스템 내에서 물리적 레벨보다 논리적 레벨로 동작할 수 있게 하는 시스템들에 대해 증가한다. 개인들이 논리적 레벨에서 동작하는 반면, 보호는 통상적으로 물리적 레벨에서 결정된다. 그러한 환경에서, 논리적 레벨에서의 동작들이 백업 절차에 대한 변경을 필요로 하는 경우 문제가 발생할 수 있다. 예를 들어, 논리적 경로 \\history\public\tools가 서버 히스토리(server history) 1 상의 공유(share)를 지시하고 \\history\public\tools를 이동시켜 서버 히스토리 2 상의 다른 공유를 가리키도록 결정되고, 보호를 담당하는 사람이 그러한 변경을 통지받지 못하면, 새로운 공유는 보호받지 못하고 이전의 공유가 계속해서 보호될 수 있다.
단일 논리적 경로가, 하부 데이터의 동기화된 복사본들을 포함하는, 물리적 대안 세트를 나타내는 경우 더욱더 문제가 증가한다. 예를 들어 \\history\docs가 히스토리 1 및 히스토리 2 양자의 동일한 공유들을 나타낼 수 있고; 동일한 하부 폴더들 중 단지 하나만이 시스템에 의해 보호될 수 있다.
보호를 담당하는 사람이 보호될 데이터 및 자원들을 수동으로 식별하고 보호를 수동으로 구성하여야 하기 때문에 큰 시스템 상의 자료들을 보호하는데 실패한다. 시스템이 변경됨에 따라, 그러한 변경을 인식하지 못한다면, 데이터 및 자원들은 보호되지 않을 수 있다. 또한, 물리적 매체로의 데이터 백업을 보관하기 위해, 사람들은 어떤 매체가 보호를 위해 사용되어야 하는지 및 매체가 회전하는 때/방법을 수동으로 결정해야 한다. 큰 시스템들에서, 수동으로 변경들을 식별하고, 보호를 구성하고, 보관(archive)을 유지하는 것은 복잡하고 변경이 어렵다. 보호 의 그러한 수동 식별, 구성 및 수정은 종종 보호를 필요로 하는 자원 및 데이터의 누락을 초래하고 보호 자체와 관련된 문제를 발생시킨다.
문제가 발생하는 경우, 통상적으로 사람은 문제를 상세한 수준까지 결정할 수 있어야 하고 보호 시스템 자체로부터의 정보를 제공받지 않고도 그러한 문제를 해결하는 방법에 대해 알고 있어야 한다.
따라서, 컴퓨터 시스템의 보호를 자동화하고, 시스템에 변경이 발생하는 때를 식별하고, 보호와 관련된 문제들이 발생하는 경우 사용자에게 지침을 제공하고, 논리적 명칭공간(namespace)들에서 작업함으로써 사람들이 보호를 생성할 수 있게 하는 시스템, 방법 및 장치가 필요하다.
<발명의 요약>
데이터 보호 애플리케이션이 제공된다. 데이터 보호 애플리케이션은 데이터를 보호하기 위한 작업(job)을 포함한다. 그 작업은 작업을 수행하도록 구성된 다수의 태스크를 포함한다. 또한 다수의 태스크 각각의 진행을 관리하기 위한 태스크 실행기(task executor)도 포함된다.
본 발명의 일 양상에 따르면, 데이터 보호 시스템에서 데이터 보호 재시작(rstart)을 제공하는 방법이 제공된다. 그 방법은 작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 단계, 완료된 작업의 태스크들을 식별하는 단계, 및 완료되지 않은 작업의 태스크들을 식별하는 단계를 포함한다. 식별된 미완료 태스크들에 기초하여, 식별된 미완료 태스크들을 포함하는 메이크업 작업(makeup job)이 생성된다. 그 후 해당 메이크업 작업이 실행되어 데이터 보호를 재개한다.
다른 양상에 따르면, 정보를 보호하기 위한 컴퓨터 실행가능한 성분들을 포함하는 컴퓨터 판독가능한 매체가 제공된다. 보호가능 객체들을 보호하도록 실행될 작업들을 생성하기 위해 구현되는 데이터 보호기가 포함된다. 중요한 것으로 판정된 실패한 태스크를 교체하기 위해 메이크업 작업을 생성하도록 구성된 헬스 관리기(health manager)도 포함된다.
또 다른 양상에 따르면, 데이터를 포함하는 작성 위치, 저장 위치 및 통신 네트워크 - 저장 위치는 통신 네트워크를 통해 데이터를 취득하고 작성 위치에 포함된 데이터의 복제를 생성함 - 을 포함하는 데이터 보호 시스템에서, 데이터 보호 시스템의 강건함(robustness)을 유지하는 메카니즘이 제공된다. 데이터 보호 시스템의 강건함을 유지하기 위해 데이터 보호 시스템 내에 구현되는 데이터 보호기 및 작업을 실행하고 그 작업의 실패에 응답하여 복구를 수행하는 데이터 보호 시스템의 일부를 모니터하도록 구성된 태스크 실행기도 포함된다.
앞선 양상들 및 본 발명의 수반되는 많은 이점들은, 첨부된 도면들과 함께 취해질 때 상세한 설명을 참조함으로써 보다 잘 이해될 수 있는 것과 같이 보다 용이하게 이해될 것이다.
도 1a는 본 발명에 따라서, 데이터의 보호 및 복구를 관리하기 위한 데이터 보호 시스템의 블록도이다. 본원에 설명된 데이터 보호 시스템(100)의 실시예들은, 시스템 관리자와 같은 사용자에게 데이터의 보호 및 복구를 용이하게 관리할 수 있는 능력을 제공한다. 통상적으로, 데이터 관리 및 보호는 작성 위치(103)에 서 능동적으로 작성되고 수정되는 데이터에 대해 바람직하다. 해당 데이터는 저장 위치(105)에서 데이터의 복사본 또는 복제로서 보호되고 저장된다. 저장 위치는 작성 위치로부터 떨어진 위치 및/또는 작성 위치와 동일한 위치일 수 있다. 또한, 저장 위치는 서로 다른 형태의 저장을 위한 다수의 위치들을 포함할 수 있다. 예를 들어, 데이터 복제는 한 위치에서 유지되고 그 데이터의 보관은 제2 위치에서 유지될 수 있다. 따라서, 저장 위치는 데이터가 저장되고 보호될 수 있는 위치의 유형 및/또는 임의의 조합을 일반적으로 기술한다.
본원에서 설명되는 바와 같이, 데이터 보호 시스템(100)은 작성 위치(103)와 저장 위치(105) 간의 데이터의 보호 및 흐름을 모니터하기 위해 작성 위치(103)와 저장 위치(105)와 통신하는 데이터 보호기(101)를 포함한다. 도 1a에 예시된 바와 같이, 데이터 보호기(101)는 서버와 같은 단일 컴퓨팅 디바이스 상에 존재하거나 또는 다수의 컴퓨팅 디바이스들을 통해 분산될 수 있다. 데이터 보호기(101)는 작성 위치(103) 및/또는 저장 위치(105)와 같은 데이터 보호 시스템(100) 내의 서로 다른 컴퓨팅 디바이스들 상에 위치하는 에이전트를 활용하고 그들과 통신하여 다수의 디바이스들 간의 분산 제어 및 데이터 보호의 관리를 가능케 한다. 데이터 보호 시스템(100)에 의해 제공된 데이터 보호의 유형들의 예들은, 임시 버전들을 이용한 복제, 테이프 또는 디스크와 같은 착탈식 매체로의 전통적인 보관 및 복제와 보관의 조합을 포함하나 이에 한정되지 않는다. 보호의 임의의 다른 형태 및/또는 조합이 본 발명의 실시예들과 함께 활용될 수 있고 그러한 복제, 임시 버전들 및 보관은 단지 예들이라는 것이 이해될 것이다.
도 1b는 데이터 보호 시스템(100)의 대안적인 실시예를 예시한다. 특히, 데이터 보호기(110)는 작성 위치(111)에 부분적으로 또는 전체적으로 상주할 수 있다. 그러한 실시예에서, 데이터 보호기(110)는 자신과 작성 위치(111) 간의 통신 및 자신과 저장 위치(113) 간의 통신을 제공한다.
도 1c는 본 발명의 일 실시예에 따라서, 데이터를 보호하고 복구하는데 사용되는 데이터 보호 시스템(100)의 또 다른 실시예를 예시한다. 도 1c에 예시되는 바와 같이, 데이터 보호기(120)는 저장 위치(123)에 부분적으로 또는 전체적으로 상주할 수 있다. 그러한 실시예에서, 데이터 보호기(120)는 자신과 저장 위치(123) 간의 통신 및 자신과 작성 위치(121) 간의 통신을 제공한다.
도 2는 본 발명의 일 실시예에 따라서, 데이터를 보호하고 복구하기 위한 데이터 보호 시스템(200)의 다른 블록도이다. 데이터 보호 시스템(200)은 작성 위치 1(203), 작성 위치 2(205) 내지 작성 위치 N(207)과 같은 다수의 작성 위치가 데이터 보호기(201)와 상호작용하여 작성 위치들로부터 발원하는 데이터의 복제 및/또는 임시 버전들을 저장하는 것을 예시한다. 데이터 보호기(201)는 작성 위치(203, 205, 207)와 통신하고 저장 위치 A(209), 저장 위치 B(211), 저장 위치 X(213)와 같은 각각의 저장 위치에서 상기 작성 위치들 상에 상주하는 데이터의 보호를 제공한다. 본원에서 설명되는 실시예들은 임의 개수 및 조합의 데이터 작성 위치들 및 저장 위치들을 이용하여 활용될 수 있다.
이해되고, 도 1a 내지 2에 예시되어 있는 바와 같이, 데이터 보호 시스템의 임의의 유형의 구성이 본 발명의 실시예들에 따라 활용되어 데이터를 보호하고 복 구할 수 있다.
전체적으로, 본원에 설명된 데이터 보호 시스템의 실시예들은 데이터 보호 시스템의 사용자가 작성 위치에서의 중요한 데이터 및 사용자가 그 데이터를 보호하기를 원하는 방법을 높은 레벨로 지정할 수 있는 능력을 제공한다. 특히, 본원에 설명된 시스템은, 보호하기를 원하는 특정 작성 위치에서의 데이터 및 원하는 보호 방법을 논리적으로 식별하는 능력을 사용자에게 제공한다. 데이터 보호 시스템은 스케줄되고 실행되어 데이터를 보호하는 일련의 "작업(job)"들로 그 논리적 식별을 변환시킨다. 아래에 설명되는 작업은 사용자에 의해 식별된 데이터를 보호하는데 필수적인 상세한 정보를 포함한다. 예를 들어, 작업은 복제, 검증, 임시 버전 관리, 보관 및 매체 관리 등을 포함한다.
사용자들에게 논리적 레벨에서 데이터를 선택할 수 있는 능력을 제공하기 위해, 데이터 보호 시스템은 작성 위치에 저장된 데이터의 논리적 표현을 "Namespace" 및 "Namespace Elements"의 형태로 사용자들에게 제공한다. 본원에서 설명되는 Namespace는 애플리케이션의 논리적 표현이다. 예를 들어, 데이터 보호 시스템 내에서 Namespaces로 표현될 수 있는 애플리케이션들은 DFS(Distributed File System), 로컬 파일 시스템, Sharepoint와 같은 웹 애플리케이션 Namespaces 및 Exchange Namespaces를 포함하나 이에 한정되지 않는다. 이해되는 바와 같이, 예시적인 애플리케이션들의 리스트는 단지 예시를 위한 것이며 임의의 방식으로 한정되는 것을 의도하는 것이 아니다. 임의의 유형의 애플리케이션이 데이터 보호 시스템과 함께 사용될 수 있고 Namespace로서 식별될 수 있다.
본원에서 설명되는 Namespace Element는 데이터와 같은 물리적 객체의 논리적 표현이고, Namespace를 구성하는 주요 실체이다. 예를 들어, Namespace Element는 DFS 링크들, 서버들, 공유들, 볼륨들, 폴더들 또는 Exchange Storage Groups일 수 있으나 이에 한정되지 않는다. 일반적으로 기술하면, Exchange Storage Group은 공통 로그를 공유하는 데이터베이스들의 집합니다. 관련 기술 분야의 통상의 지식을 가진 자가 이해할 수 있는 바와 같이, Namespace Elements는 임의의 유형의 물리적 객체 또는 물리적 객체들의 집합을 표현하는데 사용될 수 있다.
데이터를 보호하기 위해, 사용자는 논리적 Namespace를 탐색하거나 네비게이트하고 하나 이상의 Namespace Elements를 선택한다. 선택된 Namespace Elements는 기존의 "보호 그룹(protected group)"과 연관되거나 또는 새로운 보호 그룹을 생성하는데 사용된다. Namespace Element가 보호 그룹과 연관되는 경우, 그 Namespace Element와 연관된 물리적 객체들(데이터)도 보호 그룹의 일부가 된다. 본원에서 설명된 보호 그룹은 Namespace Elements 및 동일한 보호 규칙들이 적용되는 관련된 보호 객체들의 논리적 그룹화이다.
각 Namespace Element는 보호 그룹에 추가될 수 있는, 본원에서 "보호가능 객체들(protectable objects)"로 지칭되는 하나 이상의 물리적 객체(데이터)를 찾는데 사용된다. 찾으면, 보호가능 객체들은 보호를 위해 선택될 수 있다. 보호가능 객체가 보호를 위해 선택되면, 선택된 보호가능 객체는 보호 그룹의 일부인 "보호 객체(protected object)"가 된다. 본원에서 설명되는 보호가능 객체는 보호될 수 있는 물리적 객체 및/또는 데이터이다. 예를 들어, 보호가능 객체는 폴더, 파일, 전자 우편함, 데이터베이스, 웹사이트 등일 수 있으나 이에 한정되지 않는다. 본원에서 설명되는 보호 객체는 보호를 위해 식별 및 선택된 보호가능 객체이다.
보호 그룹을 생성하는 것 이외에, 사용자들은 보호 그룹을 어떻게 보호하고, 언제(얼마나 자주) 보호하고, 어느 정도 길게 보호할 것인지를 하이 레벨에서 지정할 수 있다. 또한, 사용자는 보호 그룹의 복사본들 및 보관이 얼마나 오래 보유될 것인지에 대해 지정할 수 있다. 그러한 하이 레벨 지정은 복제, 보관, 매체 관리 및 그들의 임의의 조합과 같은 모든 보호 활동에 미칠 수 있다. 사용자에 의해 제공된 지정에 기초하여, 보호 그룹의 객체들을 보호하기 위한 상세한 계획이 생성된다.
데이터를 복구하기 위해, 사용자에게 논리적 Namespace를 탐색 또는 네비게이트하는 능력을 제공하여 사용자가 복구를 원하는 데이터를 찾을 수 있다. 그 후 복구될 데이터에 대한 논리적 경로는 아래에서 설명되는 바와 같이 하나 이상의 복구가능 객체들을 찾는데 사용된다. 복구가능 객체 각각은 보호 객체의 버전 또는 그 일부를 표현한다.
도 3은 본 발명의 일 실시예에 따라서, 작성 위치에 위치하는 보호가능 객체들의 초기 선택 및 보호를 설명하는 데이터 보호 시스템(300)의 흐름도이다. 도 3에 예시된 바와 같이, 데이터 보호 시스템(300)은 작성 위치(305)에 에이전트를 배치하여 작성 위치(305)에 위치한 보호가능 객체들의 검색을 가능케 하고 그러한 보호가능 객체들에 대응하는 Namespaces 및 Namespace Elements를 식별한다. 그러한 Namespace 및 Namespace Elements는 사용자 상호작용을 위해 사용자 인터페이스(303) 상에 공개되고 표시된다.
예를 들어, 도 4는 사용자 상호작용 및 선택을 위해 사용자 인터페이스(303) 상에 공개되고 표시되는 다수의 Namespaces 및 Namespace Elements의 블록도이다. 관련 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 도 4의 예시는 단지 예시적인 것이며 임의의 다른 구성들이 본 발명의 실시예들과 함께 표시될 수 있다. 예를 들어, 디스플레이는 공유(share)가 아니라 볼륨을 포함할 수 있다.
디스플레이(400)는 DFS ROOTS Namespace(401) 및 SERVERS Namespace(403)를 예시한다. DFS ROOTS Namespace(401)는 2개의 Namespace Elements(405, 407)를 포함하고, 그들 모두는 DFS ROOTS이다. DFS ROOTS Namespace(401) 아래에 식별되는 Namespace Elements는 \\ABCD\PUBLIC(405) 및 \\EPG\PRIVATE(407)이다. 또한, SERVERS Namespace(403)는 몇몇 Namespace Elements(409, 411, 413, 415, 421, 423, 425)를 포함한다. 이러한 Namespace Elements는 또한 몇몇 추가 Namespace Elements를 포함할 수 있다. 예를 들어, SERVER1(409)는 SHARES Namespace Element 유형(411)과 같은 몇몇 Namespace Element 유형들을 포함한다. 유사하게 SHARES Namespace Element 유형(411)은 SHARE1 Namespace Element(413) 및 SHARE2 Namespace Element(415)를 포함한다. 또한, SHARES Namespace Element(411), SHARE1 Namespace Element(413) 및 SHARE2 Namespace Element(415)는 모두 보호가능 객체들의 논리적 표현들이다.
사용자는 확장 박스(417)와 같은 확장 또는 통합(collapse) 박스들을 선택함 으로써 Namespaces 및 Namespace Elements의 디스플레이(400)와 상호작용한다. 또한, 사용자는 선택 박스(419)와 같은 선택 박스를 선택함으로써 보호를 위한 하나 이상의 Namespace Elements를 선택할 수 있다. 대안적인 실시예예서, 보호를 위한 Namespace Elements를 선택할 수 있는 것 이외에, 사용자는 보호를 위한 Namespace를 선택할 수 있다.
도 3을 다시 참조하면, 사용자 인터페이스(303) 상의 Namespace 및 Namespace Elements의 디스플레이(400)의 표현시, 사용자는 Namespace Elements 중 어느 것이 데이터 보호 시스템(300)에 의해 보호되기를 원하는 지를 선택한다. 또한, 사용자는 선택된 Namespace Elements에 대한 "보호 의도(protection intents)"를 제공할 수 있다. 본원에서 설명되는 보호 의도는 선택된 데이터가 보호되는 방법의 하이 레벨 기술이다. 예를 들어, 사용자는 밤마다 한번 객체들의 복사본을 백업하고 1년의 기간 동안 주마다 복사본을 유지함으로써 선택된 Namespace Elements가 보호된다는 것을 나타낼 수 있다. 선택된 Namespace Elements, 및 연관된 보호 의도는 사용자 인터페이스(303)에서 데이터 보호기(301)로 전달된다.
선택된 Namespace Elements 및 보호 의도를 사용하는 데이터 보호기(301)는 선택된 Namespace Elements에 의해 식별되는 보호가능 객체들에 대한 보호 그룹을 생성한다. 선택시, 보호가능 객체들은 보호 객체들이 된다. 보호 그룹은 선택된 Namespace Elements, 연관된 보호 객체들의 식별, 및 보호 객체들이 보호되는 방법에 대한 상세한 계획을 포함한다. 이외에도, 데이터 보호기(301)는 아래에 설명되는 바와 같이 적어도 하나의 자동 검색 그룹을 생성한다. 일 실시예에서, 데이터 보호기(301)는 또한 아래에 설명되는 바와 같이 저장된 탐색 루틴들을 생성할 수 있다.
선택된 논리적 객체들(Namespace Elements)을 작성 위치에 위치한 적절한 보호가능 객체들로 매핑함으로써 보호 그룹이 생성된다. 그 후 식별된 보호가능 객체들은 보호 그룹의 구성원들로서 추가되고 보호 객체들이 된다. 보호가능 객체들은 기존의 보호 그룹에 추가되거나 또는 새로운 보호 그룹을 형성할 수 있다. 또한, 보호 의도가 사용되어 보호 그룹을 보호하기 위한 그룹 계획을 생성한다. 그룹 계획은 자원 계획, 준비 계획 및 보호 계획을 포함하나 이에 한정되지 않으며, 이들 각각은 아래에서 상세하게 설명된다. 그룹 계획 및 그룹 내의 계획들은 하나 이상의 작업들 및 스케줄링 파라미터(scheduling parameter)들로 구성된다. 자원 계획의 경우, 할당될 자원의 양이 식별된다. 할당된 자원들은 복제를 위한 디스크 공간, 디스크 또는 테이프와 같은 보관을 위한 착탈식 매체, 및 복제와 착탈식 매체 양자의 조합 등을 포함할 수 있으나 이에 한정되지 않는다. 스케줄링 파라미터들은 작업들이 실행될 때를 식별한다.
보호 그룹, 데이터를 보호하기 위한 계획, 자동 검색 그룹 및 저장된 탐색들을 생성한 이후, 데이터 보호기(301)는 보호를 위한 저장 위치(307) 및 작성 위치(305)를 준비한다. 특히, 데이터 보호기는 작성 위치(305)로부터 저장 위치(307)로의 통신 및 데이터의 전송을 가능케 하는 에이전트들을 사용한다. 작성 위치 및 저장 위치가 보호를 위해 준비되면, 보호가 시작되고 보호 객체들에 대한 데이터의 복사본이 작성 위치(305)에서 저장 위치(307)로 전달된다. 아래에서 설명되는 바 와 같이 데이터의 전송된 복사본은 복제, 보관 복사 또는 임의의 다른 유형의 데이터 보호로서 유지될 수 있다.
아래에서 보다 상세하게 설명되는 바와 같이, 보호를 위한 저장 위치(307)를 준비하는 데 있어, 데이터 보호기(301)는 사용자에 의해 요청된 물리적 객체들의 복사본을 저장하기 위한 필요한 자원들을 (자원 계획을 통해) 할당한다. 보호를 시작하기 위해, 작업이 개시되어 작성 위치(305)에 저장된 선택된 보호가능 객체들의 초기 복사본을 생성하고, 그 복사본을 전송하고, 저장 위치(307)에 그 복사본을 저장한다. 복사본이 복제이면, 그 후 검증 작업의 실행을 통해 그 정확성을 보증하기 위해 검증된다. 복사본이 착탈식 매체에 보관되면, 초기 복사본은 선택된 보호가능 객체들의 전체 백업이다. 초기 복사본이 생성된 후, 데이터 보호기(301)는 작업들을 생성하여 복사본을 주기적으로 갱신하거나 또는 작성 위치(305)에 위치한 정보에 대해 이루어진 변경들로 (보관하는 경우와 같이) 추가 복사본들을 생성한다.
선택된 Namespace Elements와 연관된 작성 위치(305)에 저장된 보호가능 객체들을 식별하기 위해, 데이터 보호기(301)는 논리적 객체들(Namespace Elements)을 물리적 객체들(보호가능 객체들)로 매핑한다. 도 4를 다시 참조하면, 2개의 Namespaces, DFS ROOTS(401) 및 SERVERS Namespace(403)가 표시되고, 각각은 복수의 Namespace Elements를 가진다. 사용자는 하나 이상의 Namespace Elements를 선택할 수 있다. 일 실시예에서, Namespace Elements가 선택되는 경우, 포함된 모든 Namespace Elements도 디폴트로 선택된다. 도 4를 예로서 사용하면, 사용자가 SERVER 1(409) 상의 Storage Group 1(421)을 선택하면, 그 후 DATABASE A(423) 및 DATABASE B(425)도 자동적으로 선택된다. 사용자는 하나 이상의 Namespace Elements를 비선택할 수 있다.
각 Namespace Element는 작성 위치(305)에 위치한 하나 이상의 보호가능 객체들로 매핑한다. 예를 들어, Namespace Elements \\ABCD\PUBLIC(405)는 다수의 보호가능 객체들로 매핑한다. 도 5를 참조하면, Namespace Element \\ABCD\PUBLIC(505)는 작성 위치(305)에 위치한 3개의 보호가능 객체들로 매핑한다. 특히, Namespace Element \\ABCD\PUBLIC(505)는 서버 1 상의 D:\folder(507), 서버 2 상의 D:\folder(509), 및 서버 3 상의 F:\(511)로 매핑한다. 보호가능 객체(507, 509, 511) 각각은 작성 위치(305) 내에 위치한다.
데이터 보호기가 Namespaces를 탐색 및 네비게이트하고 Namespace Element(505)와 같은 논리적 객체로부터 물리적 객체로 매핑하기 위해, Namespaces 및 Namespace Elements를 연관시키는 스키마가 생성된다. 스키마는, 가능한 Namespaces가 DFS(Distributed File System) 및 Exchange를 포함하나 이에 한정되지 않는 애플리케이션 Namespace의 구성의 추상적 표현이다.
도 6은 본 발명의 일 실시예에 따라서, Volumes Schema를 표현하는 Namespace Elements의 유형들 및 연관된 유형들의 Namespace에 대한 그러한 하나의 스키마의 블록도를 예시한다. 스키마는, 그래프 내의 노드들이 애플리케이션 Namespace 내에서 Namespace Elements의 유형들을 표현하고 Namespace Elements 간의 포함(containment) 및 결합 관계(junction relationships)들을 표현하는 방향성 그래프로 표현된다. Namespace Elements의 유형들 간의 포함 관계 및 결합 관계들은 그러한 유형들의 인스턴스들이 관련될 수 있는 가능한 모든 방식들을 표현한다. 도 6을 참조하면, 포함 관계들은 단일 화살표 선들로 예시되고 결합 관계들은 더블 화살표 선들로 나타낸다. 예를 들어 "DFS root"(603) 유형의 Namespace Element는 "공유(share)"(609) 유형의 Namespace Element에 대한 결합(617)을 표현할 수 있고 공유(609)는 볼륨(611)에 대한 결합(619) 또는 폴더(615)에 대한 결합을 표현할 수 있다.
포함 관계는, 부모가 자식들에 의해 논리적으로 구성되는 Namespace Elements 간의 간단한 부모/자식 관계이다. 예를 들어, 도메인(601)은 서버(607)를 포함하고(623), DFS ROOT(603)를 포함한다(625). 서버(607)는 공유(609)들을 포함하고(627) 볼륨(611)을 포함한다(629). 볼륨(611)은 폴더(615)를 포함하고(631) 마운트 포인트(613)를 포함한다(633). 폴더(615)는 다른 폴더들 및 파일들(도시 안됨)을 포함할 수 있다.
결합 관계는, 소스 Namespace Element가 타겟 Namespace Elements에 대한 논리적 동의어인 소스/타겟 관계이며, 이는 소스 및 타겟 경로들이 2개의 서로 다른 Namespace 내의 동일한 하부 객체를 표현한다는 것을 의미한다. 결합 관계는 일-대-다 관계일 수 있다. 즉, 단일 소스 Namespace Element는 다수의 타겟 Namespace Elements를 가질 수 있고, 이 경우 타겟들은 소스에 의해 표현되는 하부 데이터를 검색하기 위한 대안적 위치들을 표현한다. 예를 들어, DFS ROOT(603)는 타겟들로서 다수의 공유(609)로 매핑할 수 있다(617). 결합 관계도 다-대-일일 수 있다. 결합의 타겟은 다른 Namespaces 내에 다수의 논리적 명칭들을 가질 수 있다. 예를 들어, 폴더(615)는 그 폴더(615)로 매핑하는(612) 다수의 공유(609)를 가질 수 있다.
또한, 다수의 논리적 Namespace Elements는 동일한 보호가능 객체로 매핑할 수 있다. 예를 들어, SHARE 1 Namespace Element(513)는 서버 1 상의 E:\PRIVATE(515)로 매핑한다. 유사하게, SHARE 2 Namespace Elements(517)도 서버 1 상의 E:\PRIVATE(515)로 매핑할 수 있다.
도 7은 본 발명의 일 실시예에 따라서, 보호가능 물리적 객체로 논리적 Namespace Element를 매핑하기 위한 스키마의 블록도를 예시한다. 특히, 스키마(700)는, 도메인 ABCD(701)이 DFS-ROOT-public(703) 및 3개의 서버(705)와 포함 관계를 갖는다는 것을 나타낸다. 유사하게, DFS ROOT-public(703)은 링크 1(707A), 링크 2(707B) 및 링크 3(707C)를 포함하는 3개의 DFS 링크들(707)과 포함 관계를 가진다. 링크 1(707A), 링크 2(707B) 및 링크 3(707C) 각각은 공유(711)에 대해 결합 관계를 포함한다. 특히, 링크 1(707A)는 \\server 1\share에 대한 결합을 포함하고, 링크 2(707B)는 \\server 2\share에 대한 결합을 포함하며, 링크 3(707C)는 \\server 3\share에 대한 결합을 포함한다. \\server 1\share, \\server 2\share, \\server 3\share는 각각 DFS Namespace보다는 서로 다른 Namespace 내의 논리적 객체이다. 이는 DFS 링크(707)와 공유(711) 간의 결합(719)의 운행(traversal)에 의해 예시된다. 특히, \\server 1\share, \\server 2\share, \\server 3\share는 UNC 서버 Namespace 내에 있다. 공유 (711)를 참조하면, \\ABCD\PUBLIC의 매핑을 완료하기 위해, 공유들 중 각각이 매핑하는 것에 대한 결정이 이루어진다. 위에서 설명한 바와 같이, 공유는 볼륨(713) 및/또는 폴더(717)로 매핑될 수 있다. 따라서, 이 예를 계속하면, 논리적 객체 \\server 1\share는 서버 1 상의 D:\folder의 물리적 객체로 매핑하고; \\server 2\share는 서버 2 상의 D:\folder로 매핑하고; \\server 3\share는 서버 3 상의 F:\로 매핑한다. 서버 1 상의 D:\folder, 서버 2 상의 D:\folder 및 서버 3 상의 F:\는 \\ABCD\PUBLIC(505)의 논리적 객체에 의해 표현되는 3개의 보호가능 물리적 객체들이다.
도 7의 예에 의해 예시된 바와 같이, 스키마(600)(도 6)를 사용하면 해당 Namespace Element에 의해 표현되는 작성 위치 상에 저장되는 물리적 객체들에 대한 매핑 관계가 논리적 Namespace Element로부터 결정될 수 있다. 스키마(600) 내의 각 포인트로부터, 링크에 대한 해당 포인트로부터 매핑의 다음 부분까지 어떤 관계들이 탐색될 수 있는지가 알려져 있다.
데이터 보호기의 Namespace 운행 성능은 브라우징, 탐색 및 논리적 Namespace 및 Namespace Elements로부터 작성 위치에 저장된 물리적 객체들로의 매핑을 위한 임의의 유형의 애플리케이션에 적용될 수 있다. 예를 들어, 사용자 인터페이스를 통해, 사용자는 와일드 카드들을 포함하여 탐색 파라미터들을 지정할 수 있고, 데이터 보호 시스템은 Namespaces 및 Namespace Elements의 기존 리스트에 질의하고 적절한 결과들을 제공할 수 있다. 사용자 인터페이스는 탐색 요청을 데이터 보호기에 전달하고 데이터 보호기는 그 결과들을 다시 User Interface로 송 신할 것이다. 데이터 보호기는, 각 애플리케이션 Namespace의 특정 구조가 스키마 내에 캡쳐될 수 있는 Namespaces 간에서 "탐색(search)", "네비게이트(navigate)" 및 "매핑(map)"에 대한 일반적인 동작들을 지원한다. 새로운 애플리케이션을 지원하도록 데이터 보호기를 확장하기 위해, 그 후, 포함 관계 및 결합 관계뿐만 아니라, 이들 동작들을 보다 큰 "탐색" "네비게이트" 및 "매핑" 동작들로 구성하는 방법을 기술하는, 스키마를 운행하기 위해 해당 명칭공간에 기본 동작들을 수행하는 모듈을 제공할 필요가 있다.
본 발명의 실시예들은 비-데이터 보호 애플리케이션들에 대해서도 사용될 수 있다. 예를 들어, 작성 위치를 통해 또는 작성 위치 내의 서버 세트를 통해 저장이 사용되고 있는 방법을 예시하는 저장 보고서들이 생성될 수 있다. 그러한 실시예에서, 사용자는 DFS root 아래의 100MB보다 큰 모든 파일들을 보여주기 위해 보고서를 구성할 수 있다.
작성 위치는 보호될 수 있는 몇몇 다른 유형들의 객체를 포함한다. 예를 들어, 도 8은 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 보호될 수 있는 보호가능 객체들을 포함하는 작성 위치(800)의 블록도를 예시한다. 3개의 서버(801, 803, 805)가 작성 위치(800) 내에 포함된다. 각 서버는 자신의 컴퓨팅 디바이스 또는 단일 서버로 보이는 컴퓨팅 디바이스들의 그룹일 수 있다. 각 서버는 지리적으로 중앙 위치에 있거나 또는 분산될 수 있다.
서버 1(801)과 같은 서버 내에 하나 이상의 "데이터 소스들"이 포함될 수 있다. 본원에서 사용되는 데이터 소스는 데이터 보호기에 의해 동작되는 애플리케이 션 데이터의 하이 레벨 추상화이다. 데이터 소스는 자신의 물리적 데이터를 하나 이상의 보호가능 객체들로서 노출시키고 데이터 소스 자체가 보호가능 객체일 수 있다. 데이터 소스는 단일 서버 내에 포함되고 서버는 하나 이상의 데이터 소스를 포함할 수 있다. 예를 들어, 서버 1(801)은 2개의 데이터 소스, 데이터 소스 1(DS1)(807) 및 데이터 소스 2(DS2)(821)를 포함한다.
유사하게, 데이터 소스 1(807)는 6개의 보호가능 객체(809, 811, 813, 815, 817, 819)를 포함한다. 유사하게, 데이터 소스 2(821)는 2개의 보호가능 객체(823, 825)를 포함한다. 보호가능 객체들을 포함하는 데이터 소스들 이외에, 데이터 소스들 자체가 보호가능 객체들일 수 있다. 또한, 보호가능 객체들은 다른 보호가능 객체들을 포함할 수 있다. 예를 들어, 데이터 소스 3(835)는 8개의 보호가능 객체(827, 829, 831, 833, 837, 839, 841, 843)을 포함한다. 보호가능 객체(837)는 보호가능 객체(839)를 포함하며, 이는 보호가능 객체(841, 843)을 포함한다.
서버 3(805)은 4개의 데이터 소스, 데이터 소스 4(DS4)(845), 데이터 소스 5(DS5)(851), 데이터 소스 6(DS6)(857), 및 데이터 소스 7(DS7)(859)를 포함한다. 4개의 데이터 소스(845, 851, 857, 859) 각각은 보호가능 객체일 수 있다. 데이터 소스 4(845) 내에 2개의 보호가능 객체(847, 849)가 포함된다. 데이터 소스 5(851)는 2개의 보호가능 객체(853, 855)를 포함하며 데이터 소스 6(857)은 보호가능 객체를 포함하지 않고 데이터 소스 7(859)은 2개의 보호가능 객체(861, 863)를 포함한다.
보호가능 객체 각각은, 데이터 보호 시스템이 각 데이터 소스 내의 보호가능 객체들을 서로 다른 세밀도(granularity) 수준으로 노출시킬 수 있게 하는 특별한 보호가능 객체 유형이다. 예를 들어, 데이터 보호 시스템은, Exchange Storage Group 데이터 소스 전체를 저장 그룹의 보호 객체 유형을 갖는 보호가능 객체로서 노출시킬 수 있다. 또한, 동일한 저장 그룹 데이터 소스를 다수의 보호가능 객체로 분할할 수 있고, 보호가능 객체 각각은 보호가능 객체 유형의 데이터베이스를 가진다. 심지어 보호가능한 동일 객체에 대해 2개 이상의 서로 다른 보호가능 객체 유형들이 존재할 수 있다. 예를 들어, 데이터 보호 시스템은 하나의 보호가능 객체 유형의 보호가능 객체로서 볼륨을 블록 레벨에서 노출시키고 다른 보호가능 객체 유형의 보호가능 객체로서 파일 레벨에서 노출시킬 수 있다.
데이터 소스들의 예들은 운영 체제, 시스템 볼륨, Exchange Storage Groups, SQL 데이터베이스 등을 포함하나 이에 한정되지 않는다. 서버에 대한 보호가능 객체 유형들의 예들은 시스템 보호 파일들 및 레지스트리와 액티브 디렉토리와 같은 운영 체제 데이터 저장소들을 포함하나, 이에 한정되지 않는다. 파일 시스템 볼륨 보호가능 객체 유형들은 디렉토리들 및 파일들을 포함하나 이에 한정되지 않는다. 파일 시스템 볼륨 실체들은 파일 공유 또는 DFS 링크된 타겟 Namespace Elements에 의해 찾아질 수 있다. Exchange Storage Group에 대한 보호가능 객체 유형들은 데이터베이스들 및 우편함들을 포함하나 이에 한정되지 않는다.
상술한 바와 같이, 선택가능한 Namespace Element 각각은 보호가능 객체들(801-863)(도 8)과 같은 하나 이상의 보호가능 객체들로 매핑한다. 보호가능 객체 각각은 보호가능 객체 유형이고 보호가능 객체 각각은 단일 데이터 소스 내에 존재한다. 또한, 각 데이터 소스는 작성 위치의 단일 서버 내에 존재한다.
사용자가 선택하는 Namespace Element \\ABCD\PUBLIC(405)(도 4)의 예를 다시 한번 참조하고 도 5 및 7에 대해 상술한 바와 같이, Namespace Element가 보호가능 객체들로 매핑되는 것을 계속하면, 그러한 보호가능 객체들의 매핑 및 보호 그룹으로의 연관은 본 발명의 일 실시예에 따라서, 도 9A 내지 9B에 대해 설명될 것이다.
사용자의 관점에서, 보호 그룹의 구성원들은 사용자가 선택하고 보호 그룹에 추가시킨 Namespace Elements뿐만 아니라 자동 검색 그룹(아래에서 설명됨)의 결과로서 추가되는 보호가능 객체들에 의해 정의된다. 또한, 데이터 보호 시스템은 사용자가, 보호 그룹 내의 각 Namespace Element가 매핑하는 보호 객체들 및 그러한 보호 객체들 각각의 상태를 볼 수 있게 할 것이다.
이전의 예를 다시 참조하면, Namespace Element \\ABCD\PUBLIC(405)는 3개의 서로 다른 보호가능 객체들, 서버 1 상의 D:\folder(507), 서버 2 상의 D:\folder(509) 및 서버 3 상의 F:\(511)로 매핑한다. 도 7에 대해 설명한 매핑에 대한 설명을 더 진행하고 도 9a를 참조하면, 서버 1 상의 D:\folder(507)는 서버 1 상의 데이터 소스 D:\(907) 내에 포함되는 폴더(909)를 나타낸다. 서버 2 상의 D:\folder(509)는 서버 2 상의 데이터 소스 D:\(935)에 포함되는 폴더(927)를 나타낸다. 마지막으로, 서버 3 상의 F:\(511)는 서버 3(905) 상의 데이터 소스 F:\(951)를 나타낸다. 도 9b를 참조하면, Namespace Element \\ABCD\ PUBLIC(405)의 선택은 도 9a에 대해 설명된 보호 객체들로 매핑하고 이러한 객체들은 보호 그룹(930)과 연관된다. 상술한 바와 같이, 선택된 보호 객체 내에 포함되는 보호가능 객체들은 자동적으로 보호 그룹에 포함될 수 있다. 예를 들어, 부분적으로 서버 3(905) 상의 F:\(951)에 매핑하는 \\ABCD\PUBLIC(505)의 선택은, 서버 3(905) 상의 F:\(951) 보호 객체 내에 포함되기 때문에, 추가의 보호가능 객체(953, 955)를 포함할 수 있다. 도 9b에 예시되는 바와 같이, 보호 그룹(930)은 서버 1(901), 서버 2(903) 및 서버 3(905)와 같은 서로 다른 서버들 상에 위치하는 보호 객체들을 포함할 수 있다.
도 10은 본 발명의 일 실시예에 따라서, 선택된 Namespace Elements, 매핑된 보호 객체들 및 보호 그룹의 속성들을 포함하는 보호 그룹의 블록도를 예시한다. 특히, 보호 그룹(1030)은 Namespace Element \\ABCD\PUBLIC(1005), 이전의 예에 대해 설명된 매핑된 보호 객체들 각각, 및 선택된 보호 객체들 내에 포함되는 보호 객체들을 포함한다. 특히, 보호 그룹(1030)은 서버 1 상의 D:\folder(1009), 서버 2 상의 D:\folder(1027)의 보호 객체들을 포함한다. 또한, 보호 그룹(1030)은 보호 객체 서버 3 상의 F:\(1051) 및 보호 객체 서버 3 상의 F:\(1051) 내에 포함되는 2개의 보호 객체(1053, 1055)를 포함한다.
보호 그룹(1030)과 같은 보호 그룹 각각은 스케줄(1041), 공간 할당 규칙(1043) 등을 포함할 수 있는 그룹 계획(1040)을 포함한다. 그룹 계획은 그룹을 보호하기 위한 작업 및 다른 정보를 포함한다. 보호 그룹들은 동작의 간단함을 위해 보호 객체들을 수집한다. 보호 그룹 내의 모든 보호 객체들은 보호 의도의 동일한 집합으로부터 발생되는 동일한 그룹 계획을 공유한다.
요약하면, 보호 그룹은 하나 이상의 보호 Namespace Elements를 포함한다. 보호 Namespace Element 각각은 하나 이상의 보호가능 객체들에 위치한다. 보호가능 객체들은, 다시, 데이터 소스 상에 위치된다. 데이터 소스는 많아야 하나의 보호 그룹의 구성원일 수 있다. 보호 동안, 보호 그룹 매핑들은 주기적으로 재평가되어 보호 그룹 자체에 잠재적으로 포함되는 새롭게 발견된 보호가능 객체들을 식별하고 보호 객체로의 논리적 경로의 변경들을 검출한다. 아래에서 설명된 이러한 주기적인 평가는 자동 검색 그룹을 사용하여 달성된다.
도 11, 12, 13, 16, 23b, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 48a, 48b, 48c, 49a, 49b, 49c, 52, 53, 54, 55, 56, 57, 58, 59를 참조하면, 본 발명의 실시예들에 의해 구현되는 서로 다른 루틴들이 설명될 것이다.관련 분야의 통상의 기술을 가진 자는, 루틴들이 서버와 같은 단일 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스에 분산되어 구현될 수 있다는 것을 이해할 것이다. 도 11, 12, 13, 16, 23b, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 48a, 48b, 48c, 49a, 49b, 49c, 52, 53, 54, 55, 56, 57, 58, 59는 특정 기능들을 수행하기 위한 블록들을 예시한다. 대안적인 실시예에서, 보다 많거나 보다 적은 블록들이 사용될 수 있다. 본 발명의 일 실시예에서, 블록은 소프트웨어 프로그램, 소프트웨어 객체, 소프트웨어 함수, 소프트웨어 서브루틴, 소프트웨어 메소드, 소프트웨어 인스턴스, 코드 조각, 하드웨어 동작 또는 사용자 동작을 하나 또는 조합한 것을 표현할 수 있다.
도 11은 본 발명의 일 실시예에 따라서, 보호 그룹을 보호하기 위한 계획을 구성하는 구성 루틴의 흐름도이다. 구성 루틴(1100)은 블록(1101)에서 시작하고 블록(1103)에서 루틴은 사용자 인터페이스와 인터페이스하는 사용자로부터 보호 의도 및 Namespace Elements의 선택을 취득한다. 아래에서 설명되는 바와 같이, 사용자는 보호를 위한 다수의 Namespace Elements를 선택할 수 있다. 제공된 보호 의도들은 선택된 엘리먼트들 모두에 적용된다. 블록(1105)에서, 선택된 Namespace Elements는 적절한 보호가능 객체들에 매핑된다.
판정 블록(1107)에서, 추가 Namespace Elements가 이전에 선택된 Namespace Elements와 함께 포함되도록 선택되었는지에 대해 판정된다. 판정 블록(1107)에서 추가의 Namespace Elements가 선택되었다고 판정되면, 루틴은 블록(1103)의 선택된 Namespace Elements를 얻는 단계로 되돌아간다. 그러나, 판정 블록(1107)에서 추가의 Namespace Elements가 존재하지 않는다고 판정되면, 블록(1109)에서 데이터 보호기가 블록(1105)에서 매핑된 연관된 보호가능 객체들을 보호하는데 사용될 수 있는 선택된 Namespace Elements에 대한 보호 그룹을 생성한다. 보호 그룹에 추가된 보호가능 객체들은 보호 객체들이 된다.
블록(1111)에서, 보호용 그룹 계획이 블록(1103)에서 사용자에 의해 제공된 보호 의도들에 기초하여 생성된다. 보호용 그룹 계획은 보호의 빈도 및 원하는 보호 유형을 포함할 수 있다. 보호 유형들의 예들은 "백그라운드 보호(background protection)" 및 "백업 보호(backup protection)" 및 "보관 보호(archive protection)"를 포함하나 이에 한정되지 않는다. 백그라운드 보호는 보호가 거의 연속적인 보호 유형(예를 들어, 복사본들이 매시간, 하루 24시간, 1주일 7일에 갱신됨)을 나타낸다. 백업 보호는 특정 인스턴스가 정시에 발생하도록 보호가 스케줄되는 보호 유형(예를 들어, 밤에 한번, 매일 밤)을 나타낸다. 그룹 계획은 보호 그룹의 모든 보호 객체들에 적용된다. 그룹 계획의 생성은 아래에서 보다 상세하게 설명되고 "의도 변환(intent translation)"으로서 불려진다(도 31 내지 34).
블록 1113에서, 보호 객체들을 포함하는 보호 위치 및 객체들의 복사본이 저장될 저장 위치가 보호를 위해 준비된다. 예를 들어, 데이터 보호기는 저장 위치에 저장되고 정확성에 대해 검증되는 데이터의 초기 복사본을 만든다. 블록 1115에 의해 예시된 바와 같이, 보호가 진행되고 선택된 Namespace Elements와 연관된 보호 객체들이 복사 및 저장된 후, 루틴은 블록 1117에서 종료한다.
도 12는 본 발명의 일 실시예에 따라서, 블록 1109(도 11)에서 나타낸 보호 그룹의 생성을 보다 상세하게 설명하는 보호 그룹 생성 루틴을 예시한다. 보호 그룹 생성 루틴(1200)은 블록 1201에서 시작하고 블록 1203에서 보호가 수행될 Namespace Elements의 선택이 수신된다. 또한, 선택된 Namespace Elements에 대한 보호 의도도 수신된다. 판정 블록 1205에서, 수신된 Namespace Elements가 새로운 보호 그룹에 추가될 것인지 또는 기존의 보호 그룹 내에 포함될 것인지 여부가 판정된다. Namespace Elements가 새로운 보호 그룹에 추가되지 않는다고 판정되면, 블록 1207에서 Namespace Elements가 포함될 기존 보호 그룹이 선택된다.
블록 1209에서, Namespace Elements와 연관된 데이터 소스들의 중첩이 아래에서 보다 상세하게 설명되는 바와 같이 해결된다(도 13). 최종적으로, 블록 1211 에서 기존의 보호 그룹이 갱신되어 추가 Namespace Elements 및 연관된 보호 객체들을 포함한다. 또한, 사용자는 보호 그룹에 대한 그룹 계획을 변경할 옵션들 가질 수 있다.
다시 판정 블록 1205를 참조하면, 수신된 Namespace Elements가 새로운 보호 그룹에 추가되는 것으로 판정되면, 블록 1213에서, 그러한 Namespace Elements와 연관된 데이터 소스들의 임의의 중첩이 해결된다. 블록 1215에서 새로운 보호 그룹에 대한 명칭이 수신된다. 일례에서, 새로운 보호 그룹의 명칭은 사용자 인터페이스를 통해 사용자에 의해 제공될 수 있다. 대안적으로, 보호 그룹에 대한 명칭은 데이터 보호 시스템 자체에 의해 자동적으로 생성될 수 있다. 블록 1217에서, 데이터 보호 시스템에 이전에 제공된 보호 의도에 따라 그룹 계획이 보호 그룹에 대해 생성된다. 블록 1219에서 보호 그룹을 생성하는 루틴이 완료된다.
도 13은, 본 발명의 일 실시예에 따라서, 2개 이상의 보호 그룹들에 포함된 데이터 소스들의 중첩을 검출하기 위한, 블록 1209 및 1213(도 12)에 대응하는, 중첩 검출 루틴을 예시한다. 중첩 검출 루틴(1300)은 블록 1301에서 시작하고 판정 블록 1303에서 선택된 Namespace Element와 연관된 임의의 보호가능 객체들의 포함하는 데이터 소스가 현재 다른 보호 그룹(기존의 보호 그룹)에 포함되어 있는지가 판정된다. 기존의 보호 그룹 내에 포함된 선택된 Namespace Element와 연관된 보호가능 객체들을 포함하는 데이터 소스들이 없다고 판정되면, 루틴은 블록 1313에서 종료하고 보호 그룹 생성 루틴(1200)(도 12)와 같은 적절한 루틴으로 제어를 복귀시킨다.
그러나, 선택된 Namespace Elements와 연관된 보호가능 객체의 포함하는 데이터 소스가 기존의 보호 그룹에 포함되어 있다면(즉, 중첩되면), 판정 블록 1305 - 1307에서, 검출된 중첩이 어떻게 해결될 것인지에 대한 판정이 이루어진다. 본 발명의 실제 실시예에서, 중첩의 해결은 사용자의 판정에 달려있다. 예를 들면, 중첩이 검출되면, 현재 보호 그룹으로부터 중첩하는 데이터 소스의 보호가능 객체("충돌된 보호가능 객체")를 제외시키거나(1305) 또는 기존 보호 그룹으로부터 중첩을 야기하는 충돌된 보호가능 객체를 포함하는 데이터 소스를 삭제하고 현재 보호 그룹에 추가시키는(1307) 옵션이 사용자에게 제공될 수 있다. 대안적 실시예에서, 중첩 검출 루틴(1500)을 통해 진행하는데 사용되는 중첩들을 해결하기 위한 글로벌 정책이 사용자에 의해 제공될 수 있다. 또 다른 실시예에서, 중첩을 야기할 보호 그룹에 보호가능 객체를 추가시키는 시도들이 실패할 것이다.
판정 블록 1305에서, 충돌된 보호가능 객체가 현재 추가되고 있는 보호 그룹(현재 보호 그룹)으로부터 제외될 것인지 여부에 대해 판정이 이루어진다. 판정 블록 1305에서, 충돌된 보호가능 객체가 현재 보호 그룹으로부터 제외되는 것으로 판정되면, 해당 보호가능 객체는 현재 보호 그룹에서 제거되나 충돌을 야기한 기존 보호 그룹에 남아 있고 블록 1313에 의해 예시된 바와 같이 중첩 검출 루틴은 제어를 개시 루틴으로 복귀시킨다.
판정 블록 1305에서 충돌된 보호가능 객체가 현재 보호 그룹에서 제외되지 않는다고 판정되면, 판정 블록 1307에서 기존 보호 그룹으로부터 보호가능 객체의 데이터 소스 및 해당 데이터 소스 내에 포함되는 모든 보호 객체들을 제거하고 제 거된 데이터 소스, 제거된 보호 객체 및 충돌된 보호가능 객체를 현재 보호 그룹에 추가할지 여부에 대해 루틴이 판정한다. 데이터 소스 및 포함된 보호 객체들이 기존 보호 그룹으로부터 제거되고 현재 보호 그룹에 추가된다면, 루틴은 블록 1313에서 완료하고 루틴이 온 적절한 루틴으로 제어를 복귀시킨다.
판정 블록 1307에서, 충돌된 보호가능 객체의 데이터 소스 및 포함된 모든 보호 객체들이 기존 보호 그룹에서 제거되지 않고 현재 보호 그룹에 추가된다고 판정되면, 중첩 검출 루틴(1300)은 블록 1311에 의해 예시된 바와 같이 중첩 오류를 생성하고 블록 1313에서 완료한다.
이러한 보호가능 객체들을 표현하는 Namespace Elements을 선택함으로써 작성 위치에 저장되는 물리적 객체들(보호가능 객체들)을 사용자가 보호할 수 있는 것과 유사하게, 사용자는 또한 복구될 물리적 객체들을 표현하는 Namespace Elements를 선택함으로써 물리적 객체들(복구가능 객체들)을 복구할 수 있다. 도 14는 본 발명의 일 실시예에 따라서, 보호 객체를 복구하기 위한 복구 프로세스의 흐름을 예시하는 데이터 보호 시스템의 흐름도이다. 객체들을 복구하기 위해, 사용자는 복구될 보호 객체들을 표현하는 하나 이상의 Namespace Elements를 선택한다. Namespace Element의 선택을 수신하는 것에 응답하여, 데이터 보호기(1401)는 저장 위치(1403)에 질의하여 사용자에 의해 제공된 선택된 Namespace Elements와 연관된 복구가능 객체들의 임시 버전들을 식별한다. 대안적 실시예에서, 임시 버전들을 식별하기 위해 저장 위치(1403)를 반드시 질의할 필요는 없다. 예를 들어, 보관으로부터의 복구를 위해, 데이터 보호기(1401)는 이용가능한 임시 버전들을 식 별하는 정보를 포함하는 데이터베이스 또는 카탈로그를 탐색함으로써 임시 버전들을 식별할 수 있다. 식별된 임시 버전들은 합성되고 데이터가 복구될 수 있는 시점의 표현으로서 사용자에게 제공된다.
사용자는 복귀할 시점을 선택하고 해당 시점에 대한 복구 의도를 제공한다. 복구 의도의 예들은 아래에서 보다 상세하게 설명된다. 복구될 대상 및 대응하는 복구 의도에 대해 사용자로부터 수신하면, 복구 계획이 생성되고 데이터 보호기(1401)에 의해 실행되며 저장 위치(1403)에 위치한 적절한 복구가능 객체들이 복구되고 작성 위치(1405)에 송신된다.
도 15는 본 발명의 일 실시예에 따라서, 저장 위치(1403)에 포함될 수 있는 복구가능 객체들의 보다 상세한 도면을 예시하는 블록도이다. 일반적으로, 복구는 손상되거나 누락된 보호 객체(또는 그 일부)를 이전 임시 버전으로 되돌린다. 임시 버저닝(temporal versioning)은 개별적이거나 또는 거의 연속적이다. 개별적인 임시 버전들은 보호 객체들의 지속적인 실시간(point-in-time) 전체 복사본으로부터 발생한다. 개별적인 임시 버전의 복구는 보호 객체의 복원만을 필요로 할 수 있거나 또는 복원 이후 추가 복구 처리를 필요로 할 수 있다. 거의 연속적인 임시 버전들은 보호 객체와 연관된 로그(log)의 지속적인 실시간 복사본들로부터 발생한다. 복구는 로그의 롤 포워드 적용(roll forward application)에 의해 발생한다. 본 발명의 일 실시예에서, 롤 포워드는 로그 내에 포함된 임의의 시점에서 멈춰질 수 있다.
본원에서 설명되는 복구가능 객체는 보호 객체의 복구에 대한 가능성을 표현 한다. 복구가능 객체 각각은 하나 이상의 복구 소스들로부터 생성될 수 있다. 복구 소스는, 복제와 연관된 임시 버전, 복제 내, 기록 테이프 또는 디스크 상의 보관된 복사본에 위치될 수 있다.
지금부터 도 15를 참조하면, 보호 객체(1509)는 하나 이상의 복구가능 객체(1511, 1513, 1515, 1517, 1519, 1521)를 포함할 수 있다. 일반적으로, 복구가능 객체들은 보호 객체들보다 미세할 수 있다. 예를 들어, 보호 객체는 서버 1 상의 D:\folder(1509)와 같은 폴더일 수 있다. 해당 보호 객체(1509)는 다수의 복구가능 객체들을 포함할 수 있다. 예를 들어, 보호 객체 서버 1 상의 D:\folder(1509)는, 파일1(1511), 파일2(1513), 파일3(1515), 파일4(1517), 파일5(1519), 파일6(1521)을 포함하는 6개의 복구가능 객체들을 포함할 수 있다. 또한, 보호 객체(1509)도 복구가능 객체이다.
보호 객체 및 보호 방법의 본래의 선택은 종종 이용가능한 복구가능 객체들 및/또는 복구에 필요한 작업을 결정한다. 예를 들어, 보호 객체가 우편함들을 포함하는 데이터베이스들을 포함하는 Exchange Storage Group이면, 해당 저장 그룹 내의 모든 데이터베이스들이 암시적으로 보호될 수 있다. 전체 저장 그룹 또는 하나 이상의 데이터베이스들아 복구될 수 있고 그 결과 복구가능한 객체들이 된다. (아래에 설명된) 복제가 없이 단지 보관만으로 보호가 수행되면, 우편함 복구는 매우 시간 소비적(비용이 비싼)일 가능성이 있다. 보관뿐만 아니라 복제에 의해 보호가 수행되면, 복제로부터의 우편함 복구는 실질적으로 보다 빠를 수 있다(보다 비용이 적을 수 있음).
보호 객체가 저장 그룹의 데이터베이스이면, 저장 그룹은 완전히 보호되지 않으나 선택된 데이터베이스 내에 포함된 우편함들은 보호된다. 그러나, 보호 객체가 우편함이면, 연관된 데이터베이스 또는 저장 그룹의 암시적인 보호는 존재하지 않을 수 있다. 복제없이 보관만으로 보호가 실행되면, 그 보관은 선택된 우편함 이외의 다른 어떤 것을 복원할 수 없을 가능성이 있다. 대안적으로, 우편함이 서로 다른 보호 그룹의 일부로서 복제되는 데이터베이스의 일부인 것으로 알려지면, 우편함 복구는 보관 매체가 아니라 다른 보호 그룹의 복제로부터 발생할 수 있다.
도 16은 본 발명의 일 실시예에 따라서, 저장 위치로부터 보호 객체들을 복구하기 위한 복구 루틴을 예시한다. 복구 루틴(1600)은 블록 1601에서 시작하고 블록 1603에서 사용자 인터페이스 상에 표시된 Namespace Elements와 상호작용하는 사용자로부터 복구할 Namespace Elements의 선택이 수신된다. 사용자는 또한 복구될 데이터에 대한 복구 의도를 제공할 수 있다. 블록 1605에서, 데이터가 복구될 특정 시점 버전의 선택이 수신된다. 본 발명의 일 실시예에서, 사용자는 복구가 발행하는 때를 제공한다. 다른 실시예에서, 임시 버전들이 선택된 명칭공간 엘리먼트들에 대해 식별되고 선택을 위해 사용자에게 제공될 수 있다.
블록 1607에서, 추가 엘리먼트들이 복구를 위해 선택되었는지가 판정된다. 추가 엘리먼트들이 복구를 위해 선택되었다고 판정되면, 루틴을 블록 1603으로 복귀시키고 복구할 이러한 추가 Namespace Elements의 선택을 수신한다. 그러나, 복구할 추가 엘리먼트들이 존재하지 않는다고 판정되면, 블록 1609에서 복구가능 객 체들은 상술한 매핑 스키마 및 수신된 복구 의도를 활용하여 저장 위치에 위치한 적절한 복구 소스로 매핑된다.
필요한 복구 소스들의 식별시, 복구 계획이 블록 1611에서 생성된다. 복구 계획은 적절한 복구 소스로부터 복구가능 객체들의 필요한 시점 버전들을 합성하기 위한 프로세스를 포함한다. 블록 1613에서, 계획이 실행되고 식별된 복구가능 객체들이 복구된다. 블록 1615에서, 복구 루틴이 종료한다.
상술한 바와 같이, 보호 그룹을 생성하는 것 이외에, 데이터 보호 시스템은 또한 자동 검색 그룹 및 저장된 탐색들을 생성한다. 자동 검색 그룹들 및 저장된 탐색들은 작성 위치에 대한 변경들을 사용자에게 통지하는 자동화된 수단을 제공한다. 예를 들어, 변경들은 서버, Exchange Storage Group, 데이터베이스, 볼륨 및 공유와 같은 컴퓨팅 디바이스들의 추가 또는 제거뿐만 아니라 Namespace Elements와 보호가능 객체들 간의 매핑들의 변경들도 포함할 수 있다. 사용자에게 작성 위치 변경들의 통지를 제공함으로써, 데이터가 재배치되거나 제거되었을 때 보호될 필요가 있는 새로운 데이터를 보호하고 그들의 보호 전략들을 조정하기 위한 적절한 액션(action)을 사용자가 취할 수 있게 한다.
자동 검색 그룹들은 물리적 자원들의 개별적인 세트라기보다는 보호되어야 하는 것을 질의로서 기술하기 위한 메카니즘이다. 예를 들어, 조직이 모든 파일 서버들을 \\FILESRV1, \\FILESRV2 등과 같은 \\FILESRV*로서 명명한다고 가정하자. 그 조직에 대한 사용자는 \\FILESRV*로 명명된 임의의 서버 또는 모든 공유들을 주기적으로 탐색하는 자동 검색 그룹을 생성할 수 있다. 자동 검색 그룹 은 그러한 모든 공유를 찾고 그러한 공유들과 연관되거나 또는 위치된 임의의 보호가능 객체의 보호를 사용자가 선택 또는 거절할 수 있게 할 것이다. 또한, 본 발명의 일 실시예에서, 자동 검색 그룹은 주기적으로 재평가될 수 있고 임의의 새로운 공유들이 사용자에게 통지되고 그러한 새로운 공유들의 보호를 승인 또는 거절하기 위한 기회가 주어진다. 또한, 재평가는 제거된 임의의 기존 공유들을 식별하고 제거 통지를 사용자에게 제공한다.
자동 검색 그룹들은 또한 데이터 보호기에 의해 사용되어 Namespace Elements와 보호가능 객체들 간의 매핑을 추적할 수 있다. 다시 상기 예를 참조하면, 사용자가 경로 \\ABCD\PUBLIC를 보호한다고 가정하자. 데이터 보호 시스템은 명칭 \\ABCD\PUBLIC와 서버 1 상의 D:\folder, 서버 2 상의 D:\folder 및 서버 3 상의 F:\folder와 같은 보호 객체들로의 매핑을 포함하는 자동 검색 그룹을 자동적으로 생성한다. 장래에, \\ABCD\PUBLIC이 동일한 서버 또는 다른 서버 상의 다른 폴더들에 관련되도록 변경되면, 그 후 사용자는 데이터 보호기에 의해 그 변경을 통보받고 보호를 조정할 기회가 주어진다.
도 17 내지 24는 본 발명의 일 실시예에 따라서, 자동 검색 그룹을 생성하고 활용하기 위한 흐름도를 예시한다. 도 17 내지 24에 대한 설명을 위해, 데이터 보호 시스템이 보호를 원하는 몇몇 서버들을 포함하는 작업위치(작성 위치(1703)로 예시됨)에 설치되었다고 가정할 것이다.
데이터 보호 시스템(1700)의 초기화 시, 데이터 보호기(1701)는 작성 위치(1703)에 질의하여 작성 위치 내에 포함되는 보호가능 객체들을 표현하는 Namespace Elements 및 Namespaces를 식별한다. 데이터 보호기(1701)는 사용자 인터페이스(1705)를 통해 Namespaces 및 Namespace Elements를, 사용자에 의한 상호작용 및 선택을 위한 Namespaces 및 포함된 Namespace Elements의 계층적 뷰의 형태로 사용자에게 공표한다.
사용자 인터페이스(1705)와 상호작용하는 사용자는, \\ABCD\PUBLIC Namespace Element(1707)과 같은 보호를 위한 하나 이상의 Namespace Elements를 선택할 수 있다. 보호를 위한 Namespace Elements를 선택하는 것 이외에, 사용자가 연관된 보호가능 객체들을 보호하기를 원하는 방법을 식별하는 보호 의도를 사용자가 제공한다. 선택된 Namespace Elements 및 보호 의도의 표시는 데이터 보호기(1701)로 반환된다.
지금부터 도 18을 참조하면, 데이터 보호기(1701)는 Namespace Elements의 선택을 작성 위치(1703)에 위치한 보호가능 객체들로 매핑한다. 예를 들어, Namespace Element \\ABCD\PUBLIC(1707)의 선택 시, 데이터 보호기는 상술한 바와 같이 Namespace 스키마를 사용하여 해당 Namespace Element를 보호가능 객체들로 매핑한다. 이러한 매핑은 Namespace Element \\ABCD\PUBLIC(1707)이 보호가능 객체 서버 1 상의 D:\folder(1709) 및 보호가능 객체 서버 2 상의 D:\folder(1711)로 매핑하는 것을 식별한다. 대안적 실시예에서, Namespace Elements의 초기 검색 동안, 엘리먼트들은 해당 시간에 대응하는 보호가능 객체들로 매핑될 수 있다.
데이터 보호기(1701)는 선택된 Namespace Elements, 보호 객체들이 되는 보 호가능 객체들의 식별, 자동 검색 그룹(1713), 및 자동 검색 그룹표(1715)를 포함하는 보호 그룹을 생성한다. 설명된 바와 같이, 사용자에 의해 제공된 의도에 기초하여, 보호 그룹은 또한 보호 그룹이 실제로 보호되는 방법을 기술하는 그룹 계획을 포함한다. 자동 검색 그룹(1713)은 \\ABCD\PUBLIC\*와 같은 Namespace 탐색 파라미터 및 해당 Namespace Element의 보호 객체 서버 1 상의 D:\folder 및 서버 2 상의 D:\folder로의 현재 매핑을 포함한다. 선택된 Namespace Element에 대한 Namespace 탐색 파라미터를 포함하는 자동 검색 그룹(1713)을 생성함으로써, 데이터 보호기에게 Namespace 탐색 파라미터와 매치하는 작성 위치에 대한 추가, 삭제 및 재매핑(remapping)을 후속적으로 탐색할 수 있는 능력을 제공한다. 임의의 그러한 변경들은, 보호를 위한 관심대상일 수 있기 때문에, 경보를 통해 사용자에게 보고된다. 경보는 다양한 형태로 사용자에게 제공될 수 있다. 예를 들어, 경보는 사용자 인터페이스, 이메일, 페이지, 음성 메시지 등을 통해 제공될 수 있다.
자동 검색 그룹(1713)의 생성 이외에, 데이터 보호기(1701)는 보호 객체들에 대한 현재 매핑의 식별, 및 그러한 보호 객체들에 관한 정보를 포함하는 자동 검색 그룹표(1715)를 생성한다. 특히, 그 정보는 매치 열(1717)에 의해 표시된 바와 같이 보호 객체에 대한 매핑이 자동 검색 그룹(1713)에 포함된 자동 검색 그룹 파라미터들과 매치하는지 여부, 대기 열(1719)에 의해 표시된 바와 같이 보호 객체가 현재 사용자 액션을 대기 중인지 여부, 계획("PP") 열(1721)에 의해 표시된 바와 같이 그룹 계획 하에서 매핑된 보호 객체가 현재 보호되는지 여부, 및 사용자 ("PU") 열(1731)에 의해 표시되는 바와 같이, 매핑된 보호 객체가 현재 사용자에 의해 보호되는지 여부를 포함한다. 아래에서 설명되는 바와 같이, 객체는 데이터 보호 시스템에 의해 보호되는 것이 아니라 사용자에 의해 보호될 수 있다. 예를 들어, 사용자는 특정 객체를 보호하기를 원한다고 지시하여, 사용자에 의해 해당 객체가 보호될 수 있으나, 해당 보호 객체에 대한 의도 변환이 완료된 이후까지는 객체가 계획에 의해 보호될 수 없다.
본 발명의 일 실시예에 따르면, 보호 그룹의 생성 이후, 자동 검색 그룹, 그룹 계획 및 자동 검색 그룹표, 데이터 보호 시스템은 보호를 위해 작성 위치 및 저장 위치를 준비한다. 보호를 위한 위치들이 준비된 이후(예를 들어 자원 계획), 선택된 보호가능 객체들의 초기 복사본(준비 계획)을 생성하기 위한 초기 단계들이 수행된 후, 보호가 시작된다(보호 계획).
선택된 보호 객체들이 보호된 후 소정의 미리 결정된 시간에, 데이터 보호 시스템은 자동 검색 그룹을 실행시키고 작성 위치(1703)를 재매핑한다. 예를 들어, 자동 검색 그룹은 밤마다 한번 실행하도록 예정될 수 있다. 자동 검색 그룹을 밤 또는 작성 위치에서의 활동이 적은 소정의 시간에 실행시킴으로써, 작성 위치에 부과되는 부하량을 감소시킨다.
설명을 위해, 도 17 내지 24에 대해 설명된 예로 돌아가면, 자동 검색 그룹이 실행되고 자동 검색 그룹 결과들(1723)(도 19)는 \\ABCD\PUBLIC\*의 자동 검색 그룹 탐색 파라미터들과 매칭하는 보호가능 객체들만이 서버 2 상의 D:\folder의 보호가능 객체라는 것을 식별한다. 데이터 보호기(1701)는 자동 검색 그 룹 결과들(1723)을 자동 검색 그룹표(1715)와 비교한다. 이러한 예에서, 서버 1 상의 D:\folder의 보호 객체가 자동 검색 그룹표 탐색 파라미터들과 더 이상 매칭하지 않는다는 것이 식별된다. 서버 1 상의 D:\folder는 여러 가지 이유로 인해 탐색 파라미터들과 더 이상 매칭하지 않을 수 있다. 예를 들어, 서버 1 상의 D:\folder가 더 이상 존재하지 않을 수 있거나, 또는 서버 1 상의 D:\folder가 더 이상 \\ABCD\PUBLIC 아래로 매핑되지 않을 수 있다.
비교 이후, 표(1715)가 갱신되어 서버 1 상의 D:\folder의 보호 객체가 결과 내에 반환되지 않아서, 매치 열(1717)의 "N"으로 예시되는 바와 같이, 더 이상 자동 검색 그룹 탐색 파라미터와 매치하지 않는다는 것을 나타낸다. 또한, 자동 검색 그룹표(1715)가 서버 1 상의 D:\folder의 보호 객체에 대해 갱신되어 열(1719)의 "Y"로 예시된 바와 같이 해당 보호 객체에 대해 사용자 상호작용이 현재 대기 중이라는 것을 나타낸다. 보호 객체가 더 이상 자동 검색 그룹 파라미터들과 매치하지 않기 때문에 사용자 상호작용은 현재 대기 중이다. PP 열(1721) 및 PU 열(1731)에서 Y로 예시된 바와 같이, 서버 1 상의 D:\folder는 계획 하에서 보호되고 사용자에 의해 보호되는 것으로 표시된채 남아 있는다.
자동 검색 그룹표(1715)는 또한 갱신되어 서버 2 상의 D:\folder가 자동 검색 그룹 탐색 파라미터들과 매칭하고, 열(1721, 1731)에서 각각 "Y"로 예시되는 바와 같이 계획 및 사용자에 의해 보호되는 것으로 남아 있다는 것을 나타낸다. 마지막으로, 대기 열(1719)에서 "N"으로 예시된 바와 같이, 매칭하고 보호되기 때문에 보호 객체 서버 2 상의 D:\folder에 대한 사용자 액션을 대기하지 않는다는 것 에 대한 표시가 존재한다.
지금부터 도 20을 참조하면, 자동 검색 그룹이 실행되고, 자동 검색 그룹표가 갱신되고 경보가 생성된 이후 다음날 아침에, 사용자는 데이터 보호 시스템에 액세스하고 서버 1 상의 D:\folder의 보호 객체가 더 이상 자동 검색 그룹 탐색 파라미터들과 매치하지 않는다는 통지를 데이터 보호 시스템으로부터 제공받는다.
응답 시, 데이터 보호 시스템은 보호 그룹으로부터 보호 객체를 제거하라는 지시를 사용자부터 수신한다. 데이터 보호기(1701)는 자동 검색 그룹을 갱신하여 서버 1 상의 D:\folder의 매핑을 보호 그룹으로부터 제거하고 자동 검색 그룹표(1715)를 갱신한다. 특히, 서버 1 상의 D:\folder는, PU 열(1731)의 "N"에 의해 예시된 바와 같이, 사용자에 의해 더 이상 보호되지 않는 것으로 표시되고, 열(1719)의 "N"으로 예시되는 바와 같이, 더 이상 대기 중이 아니라고 표시된다. 이 때, 서버 1 상의 D:\folder는, 보호 그룹으로부터 서버 1 상의 D:\folder가 제거되도록 의도 변환이 아직 재실행되지 않았기 때문에, 계획에 의해 보호되는 것으로 남아 있다 .
그 객체는 자동 검색표(1715) 내에 유지되고 사용자에 의해 보호되지 않는 것으로 표시되어 자동 검색 루틴의 후속 실행에 의해 식별되면 이미 보호로부터 제외되었기 때문에 승인을 대기하는 것으로서 사용자에게 제공되지 않을 것이다. 객체가 사용자에 의해 더 이상 보호되지 않기 때문에, 보호가능 객체가 된다.
도 21은 이전의 예의 계속으로서, 사용자가 더 이상 서버 1 상의 D:\folder를 보호하기를 원하지 않는다는 것을 사용자가 나타낸 이후 소정의 시점에서 의도 변환이 실행된다. 의도 변환의 실행 시, 그룹 계획이 갱신되고 서버 1 상의 D:\folder가 보호 그룹으로부터 제거된다. 서버 1 상의 D:\folder가 더 이상 보호 그룹에 의해 보호되지 않더라도, 보호 그룹의 기존의 임시 버전들은 저장 위치에 저장된 채로 남아 있고 계획에 의해 더 이상 보호되지 않는 때까지 서버 1 상의 D:\folder를 복구하는데 활용될 수 있다. 의도 변환이 완료된 후, 자동 검색 그룹표(1715)가 갱신된다. 특히, PP 열(1721)의 "N"에 의해 예시된 바와 같이, 서버 1 상의 D:\folder가 계획에 의해 보호되지 않은 것으로 표시된다.
의도 변환이 완료된 이후 소정의 시점에서, 자동 검색 그룹이 다시 실행되고, 작성 위치(1703)에 질의하고 자동 검색 그룹 탐색 파라미터들을 작성 위치(1703)에 위치한 객체들로 재매핑한다. 자동 검색 그룹 탐색 파라미터들의 매핑이 완료되면, 자동 검색 그룹 결과들(1725)이 제공되고 탐색 파라미터들이 서버 2 상의 D:\folder의 보호 객체 및 서버 2 상의 E:\folder의 새로운 보호 객체로 매핑하는 것을 나타내는 표시를 포함한다. 다시, 데이터 보호기(1701)는 결과들을 자동 검색 그룹표(1715)와 비교한다. 해당 비교 결과가 서버 2 상의 D:\folder의 보호 객체가 다시 자동 검색 그룹 탐색 파라미터들과 매칭하고, 사용자 액션을 대기하지 않으며, 사용자 및 그룹 계획 모두에 의해 보호된 채로 남아 있다는 것을 나타낸다. 이외에도, 서버 2 상의 E:\folder의 새로운 보호가능 객체는 자동 검색 그룹 탐색 파라미터들과 일치하고, PP 열(1721)의 "N"에 의해 예시된 바와 같이, 그룹 계획에 의해 현재 보호되고 있지 않으며, PU 열(1731)의 "N"에 의해 예시된 바와 같이, 사용자에 의해 현재 보호되고 있지 않으며, 대기 열(1719)의 "Y"에 의해 예시된 바와 같이, 현재 사용자 액션을 대기하고 있다. 비교가 완료되면, 자동 검색 그룹표(1715)가 갱신되어 새로운 매핑 및 모든 객체들의 상태를 식별한다.
서버 2 상의 E:\folder의 보호가능 객체는, 자동 검색 그룹에 의해 새롭게 식별되었기 때문에, 현재 계획이나 사용자에 의해 보호되고 있지 않다. 데이터 보호 시스템(1701)은 새로운 보호가능 객체가 보호 그룹 내의 보호 객체들과 유사한 작성 위치에 추가되었다는 것을 나타내도록 사용자에게 제공되는 경보를 생성한다. 사용자는 이러한 새롭게 식별된 보호가능 객체를 보호 그룹의 일부로서 추가로 보호하는데 관심있을 수 있기 때문에 경보가 생성된다.
도 22에서, 사용자는 경보를 수신하고 응답을 제공하여 자동 검색 그룹에 의해 자동적으로 식별된 새로이 식별된 보호가능 객체의 보호를 시작한다. 서버 2 상의 E:\folder의 보호가능 객체는 또한 보호 그룹에 추가되고 그 결과 보호 객체가 된다. 유사하게, 데이터 보호기(1701)는, 서버 2 상의 E:\folder의 객체가 더 이상 사용자 액션을 대기하지 않으며, 사용자에 의해 보호되나, 이 때 계획에 의해 보호되지 않는다는 표시를 자동 검색 그룹표(1715)에 추가한다.
도 23a는 상기 예의 계속으로서, 새롭게 식별된 보호가능 객체를 보호 그룹에 추가하는, 사용자에 의한 표시 이후의 소정의 시간에 의도 변환이 실행되고 서버 2 상의 E:\folder가 계획에 의해 보호된다. 의도 변환이 완료되면, 자동 검색 그룹 로그(1715)가 갱신되어, PP 열(1721)의 "Y"로 예시되는 바와 같이, 서버 2 상의 E:\folder가 계획에 의해 지금 보호되고 있다는 것을 나타낸다.
의도 변환이 완료된 이후 소정의 시간에, 데이터 보호기(1701)는 다시 자동 검색 그룹 루틴을 실행시키고 \\ABCD\PUBLIC\*의 자동 검색 그룹 탐색 파라미터를 작성 위치(1703)에 위치한 객체들로 재매핑한다. 자동 검색 그룹 루틴의 완료시, 데이터 보호기는 서버 2 상의 D:\folder 및 서버 3 상의 E:\folder(1729)의 매핑들을 식별한다. 그러한 결과들이 비교하는데 사용되고 자동 검색 그룹표(1715)를 갱신하여 서버 2 상의 D:\folder의 보호 객체가 다시 자동 검색 그룹 탐색 파라미터들과 일치하고, 사용자 액션을 대기하지 않고 있으며, 데이터 보호 시스템에 의해 보호된 채로 남아 있고 사용자에 의해 보호된 채로 남아 있다는 것을 나타낸다. 또한, 서버 2 상의 E:\folder의 이전의 보호 객체가 자동 검색 루틴에 의해 식별되지 않았으나 사용자 및 보호 계획에 의해 보호된 채로 있으므로 사용자 액션을 대기하지 않는다는 것을 나타낸다. 마지막으로, 서버 3 상의 E:\folder의 새로운 보호가능 객체의 추가가 자동 검색 그룹 탐색 파라미터들과의 매칭으로서 식별되나, 새롭게 식별되었기 때문에 사용자 또는 보호 계획에 의해 현재 보호되고 있지 않으므로 사용자 액션을 대기 중이다. 자동 검색 표의 갱신 시, 데이터 보호기(1701)는, 서버 2 상의 E:\folder의 이전의 보호 객체가 더 이상 자동 검색 그룹 탐색 파라미터들과 일치하지 않고, 서버 3 상의 E:\folder가 작성 위치에 추가되었고 자동 검색 그룹 탐색 파라미터들과 일치한다는 식별을 포함하는 경보를 생성한다. 이러한 경보는, 서버 2 상의 E:\folder의 보호 객체가 서버 3 상의 E:\folder로 이동했을 수 있다는 것을 사용자에게 나타낼 수 있다. 그러한 변경의 자동 검색이 없으면, 사용자는 계속하여 이전의 객체를 보호하고 새로운 객체에 대한 보호를 제공할 수 없다.
도 23b는 본 발명의 일 실시예에 따라서, 도 23a에서 검출된 것과 같이, 보호된 명칭공간 엘리먼트의 재매핑을 해결하기 위한 재매핑 해결 루틴을 예시한다. 재매핑 해결 루틴(2300)은, Namespace Element가 이동되었다고 판정될 때 실행한다. 예를 들어, 서버 2 상의 E:\folder로 이전에 매핑된 \\ABCD\PUBLIC\LINK3는 서버 3 상의 E:\folder로 재매핑될 수 있다.
재매핑 해결 루틴(2300)은 블록 2301에서 시작한다. 블록 2303에서, 자동 검색 그룹이 평가되고, 보호된 명칭공간 엘리먼트가 하나의 보호가능 객체에서 다른 객체로 재매핑되었는지를 판정한다. 판정 블록들 2305 - 2309에서, 재매핑이 해결되는 방법에 대한 판정이 이루어진다.
특히, 판정 블록 2305에서, 새로운 매핑이 배타적으로 보호되어야 하는지 여부에 대한 판정이 이루어진다. 새로운 매핑이 배타적으로 보호되어야 한다고 판정되면, 블록 2311에서 이전의 매핑은 사용자에 의해 보호되지 않는 것으로 표시되고 새로운 매핑이 사용자에 의해 보호되는 것으로 표시된다. 그러나, 새로운 매핑이 배타적으로 보호되지 않아야 한다고 판정되면, 판정 블록 2307에서 이전의 매핑이 배타적으로 보호되어야 하는지에 대한 판정이 이루어진다. 이전 매핑이 배타적으로 보호된다면, 블록 2311에서 이전의 매핑은 사용자에 의해 보호되는 것으로 표시되고 새로운 매핑은 보호되지 않는 것으로 표시된다. 그러나, 판정 블록 2307에서 이전 매핑이 배타적으로 보호되지 않아야 한다고 판정되면, 판정 블록 2309에서 양쪽 매핑이 보호되어야 하는지에 대한 판정이 이루어진다.
판정 블록 2309에서 양쪽 매핑이 보호되어야 한다고 판정되면, 블록 2311에 서 양쪽 매핑은 사용자에 의해 보호되는 것으로 표시된다. 그러나, 양쪽 매핑이 보호되지 않는 것으로 판정되면, 블록 2311에서 양쪽 매핑은 사용자에 의해 보호되지 않는 것으로 표시된다.
블록 2313에서, 본원에서 설명되는 의도 변환 루틴이 실행된다. 의도 변환의 완료시, 보호 객체들은, 계획 플래그 내에 보호되는 것이 이전의 보호 객체 및 새로운 보호 객체 양자에 대해 사용자 플래그에 의해 보호되는 것과 동일한 값을 포함하도록 갱신된다. 블록 2315에서 루틴이 종료한다.
도 24는 본 예의 이전 부분들에 대해, 이전에 실행한 자동 검색 그룹 루틴에 의해 검출된 변경들을 식별하는 경보가 사용자에게 제공되는 것을 예시한다. 사용자는 서버 3 상의 E:\folder의 새롭게 식별된 보호가능 객체를 포함하고 서버 2 상의 E:\folder의 보다 이전의 보호 객체의 매핑을 제거하기 위해 자동 검색 그룹 탐색 파라미터들의 매핑을 갱신하도록 선택한다(도 23b의 블록 2305). 매핑을 갱신하기 위한 지시를 사용자로부터 수신하는 것에 응답하여, 데이터 보호 시스템(1701)은 새로운 보호 객체를 포함하도록 보호 그룹을 갱신한다. 또한, 데이터 보호기(1701)는, 서버 2 상의 E:\folder가 더 이상 사용자에 의해 보호되지 않으나, 이 시점에서 계획에 의해 보호된 채로 있다는 것을 식별하고 서버 3 상의 E:\folder의 보호 객체의 새로운 매핑이 사용자에 의해 보호되나 계획에 의해 아직 보호되지 않는다는 것을 나타내도록 자동 검색 그룹 표(1715)를 갱신한다.
사용자가 변경을 표시한 이후 소정의 시간에, 의도 변환이 실행되어 서버 2 상의 E:\folder를 그룹 계획에 의해 보호되는 것으로부터 제거하고 서버 3 상의 E:\folder를 그룹 계획에 의해 보호되는 것으로 추가한다. 이해되는 바와 같이, 의도 변환은 보호 그룹의 변경(객체의 추가 또는 객체의 제거)을 사용자가 표시한 것에 후속하여 임의의 시점에서 실행될 수 있다. 예를 들어, 의도 변환은 보호 그룹에 대한 변경을 사용자가 표시한 직후 또는 몇 일 이후에 실행될 수 있다. 또한, 자동 검색 그룹 루틴 및 의도 변환은 서로 독립적일 수 있다. 자동 검색 그룹 루틴은 사용자가 보호 그룹에 대한 변경들을 나타내는 것과 의도 변환 실행 사이에 여러 번 수행될 수 있다. 그러한 예에서, 자동 검색 그룹의 리프레시 시, 그룹 계획에 대한 실제 변경이 아직 발생하지 않았더라도, 사용자가 이미 지시를 제공했기 때문에 객체가 변경된 것에 대한 경보는 생성되지 않을 것이다.
도 25는 본 발명의 일 실시예에 따라서, 상위 레벨 Namespace Elements와 보호가능 객체들 간의 매핑을 초기에 검색하기 위한 초기 검색 루틴의 흐름도를 예시한다. 초기 검색 루틴(2500)은 블록 2501에서 시작하고 블록 2503에서 작성 위치의 용이하게 검색가능한 모든 객체들의 Namespaces 및 Namespace Elements가 식별된다. 용이하게 검색가능한 객체들은 작성 위치의 상위 레벨 객체들이다. 예를 들어, Namespaces 및 Namespace Elements는 DFS 루트들, 서버들, Exchange 서버들 및 STS 서버들과 같은 상위 레벨 객체들에 대해 용이하게 검색될 수 있다. 블록 2505에서, 작성 위치의 검색된 상위 레벨 Namespaces 및 Namespace Elements는 데이터 보호기의 메모리(예를 들어 데이터베이스)에 지속된다. 블록 2507에서, 초기 검색 루틴(2500)이 완료된다.
도 26은 본 발명의 일 실시예에 따라서, 작성 위치에 위치한 보호가능 객체 들과 Namespaces 및 Namespace Elements 간의 매핑의 검색을 위한 스케줄된 검색 루틴의 흐름도를 예시한다. 특히, 스케줄된 검색 루틴(2600)은 블록 2601에서 시작하고 블록 2603에서 초기 검색 루틴(2500)(도 25)이 실행되고 작성 위치의 상위 레벨 Namespace Elements가 식별된다. 상술한 바와 같이, 상위 레벨 Namespace Elements의 저장된 복사본이 데이터 보호 시스템에 의해 활용되어 탐색 시 작성 위치를 재검색하지 않고 사용자가 작성 위치의 특정 부분들을 탐색할 수 있게 하거나 및/또는 작성 위치를 네비게이트할 수 있게 하여, 탐색 및 네비게이션 시간을 증가시키고 작성 위치의 부하를 제거한다.
판정 블록 2605에서, 수행될 임의의 기존의 저장된 탐색(아래에서 설명됨)이 존재하는지가 판정된다. 판정 블록 2605에서 수행될 저장된 탐색이 존재한다고 판정되면, 블록 2607에서 그렇게 저장된 탐색이 실행된다. 그러나, 판정 블록 2605에서 기존의 저장된 탐색이 없다고 판정되면, 판정 블록 2609에서 갱신될 임의의 기존의 자동 검색 그룹들이 존재하는지 여부에 대해 판정된다. 판정 블록 2609에서 갱신될 기존의 자동 검색 그룹들이 존재한다고 판정되면, 도 17 내지 24의 예에 대해 이전에 설명된 바와 같이, 블록 2611에서 그러한 자동 검색 그룹들이 갱신된다. 루틴은 블록 2617에서 완료된다.
도 27은 본 발명의 일 실시예에 따라서, 자동 검색 그룹 생성 루틴의 흐름도이다. 자동 검색 그룹 생성 루틴(2700)은 블록 2701에서 시작하고 블록 2703에서 사용자가 보호하기를 원하는 Namespace Elements의 선택이 수신된다. Namespace Elements의 수신 이외에, 그러한 Namespace Elements와 연관된 보호가능 객체들도 수신된다. 블록 2705에서, 그러한 Namespace Elements와 연관된 데이터 소스들의 임의의 중첩이 해결된다. 중첩 해결은 도 13에 대해 위에서 설명되었다.
임의의 중첩이 해결된 후, 블록 2707에서 선택된 Namespace Elements를 식별하는 자동 검색 그룹 리스트가 생성된다. 또한, 질의 파라미터가 생성되고 선택된 Namespace Elements와 유사한 다른 Namespace Elements를 식별하는데 사용되는 자동 검색 그룹에 포함된다. 질의 파라미터는 물리적 자원들(예를 들면, 서버 1 상의 모든 볼륨들), Namespace에 대한 소정의 질의(예를 들어, DFS ROOT \제품들 아래의 모든 공유들), 또는 소정의 조합(예를 들어, \\FILESRV*로 명명된 서버들 상의 모든 공유들)로 표현될 수 있다. 또한, 질의 파라미터는 이미 존재하는 Namespace Elements의 소정의 속성에 기초할 수 있다.
각 경우에 있어서, 데이터 보호 시스템은 자동 검색 그룹의 회원 자격을 추적하고 사용자들에게 해당 그룹의 변경들을 통지한다. 블록 2709에서, 자동 검색 그룹 및 선택된 Namespace Elements의 리스트가 보호 그룹에 추가된다. 상술한 바와 같이, 보호 그룹은 기존의 보호 그룹 또는 선택된 Namespace Elements에 대해 새롭게 생성된 보호 그룹일 수 있다. 블록 2711에서, 자동 검색 그룹 생성 루틴이 종료한다.
도 27에 대해 상술된 바와 같이 생성된 자동 검색 그룹은 물리적 자원들의 개별적인 세트라기보다는 질의로서 잠재적으로 보호되어야 되는 객체들을 기술하는 방식이다. 변경이 검출되면, 사용자는 해당 자동 검색 그룹과 연관된 객체들 및/또는 보호 그룹의 일부인 객체들을 보호하기 위한 계획에 대한 변경을 승인 또는 거부할 수 있다. 예를 들어, 자동 검색 그룹이 서버들 \\FILESRV* 상의 모든 공유들에 대한 탐색 파라미터를 포함하고 새로운 서버 \\FILESRV10이 10개의 새로운 공유를 갖게 되면, 사용자는 새로운 공유들 각각의 보호를 승인 또는 거부할 옵션을 가진다.
상술한 바와 같이, 데이터 보호 시스템은 사용자에게 보고된 자동 검색 그룹 변경들에 대한 응답을 추적한다. 예를 들어, 사용자가 새롭게 식별된 보호가능 객체의 보호를 거부하면, 그 후 해당 보호가능 객체가 작성 위치로부터 후속과정에서 제거된다면 통지가 사용자에게 후속적으로 송신되지 않는다. 특히, 사용자가 그 객체를 보호하기를 원하지 않고 미래의 모든 통지들 자동적으로 무시하기를 원한다는 것을 나타내면 보호가능 객체에 대한 제외 플래그(excluded flag)가 설정된다. 일 실시예에서, 객체를 한번 거부하는 것이 제외 플래그를 자동적으로 설정하지는 않는다. 또한, 객체가 거부된 횟수가 추적되고 소정의 거부 회수 이후(예를 들어 5번), 객체는 제외된 것으로 표시될 수 있다. 제외된 객체의 후속 식별은 사용자에게 경보되지 않을 것이다.
데이터 보호 시스템은 사용자가 보호되기를 원하는 각 Namespace Elements에 대해 자동 검색 그룹들을 자동적으로 생성 및 구성한다. 예를 들어, 사용자가 서버 \\FILESRV1 상의 share1을 보호하면, 데이터 보호 시스템은 물리적 자원에 대한 \\FILESRV1\share1의 매핑으로 구성되는 자동 검색 그룹을 구성한다(예를 들어 \\FILESRV1 상의 볼륨 X: 상의 folder1). \\FILESRV1\share1이 사라지거나 또는 공유에서 물리적 자원으로의 매핑이 변경되면, 사용자가 그 변경을 통보받 고 진행하는 방법에 대한 몇 가지 옵션들을 제공받는다(도 23b). 예를 들어, \\FILESRV1\share1이 볼륨 Y 상의 folder1으로 매핑한다고 가정하자. 사용자는 계속하여 X:\folder1을 보호할 것인지, X:\folder1의 보호를 중지할 것인지, 및 Y:\folder1의 보호를 개시할 것인지 또는 양쪽 객체들을 보호할 것인지에 대한 옵션들을 가진다. 이러한 방식으로, 사용자는 보호할려고 하는 Namespace Element 및 실제 보호되고 있는 물리적 객체들에 대한 임의의 변경들을 통보받는다.
도 28 및 29는 본 발명의 일 실시예에 따라서, 자동 검색 그룹 갱신 루틴의 흐름도를 예시한다. 자동 검색 그룹 갱신 루틴(2800)은 블록 2801에서 시작하고 블록 2803에서 자동 검색 그룹 결과들로부터의 보호가능 객체가 선택된다. 해당 자동 검색 그룹의 Namespace Elements가 매핑하거나 또는 이전에 매핑된 보호가능 객체들 각각을 식별하는 자동 검색 그룹 매핑 시퀀스의 실행 이후 자동 검색 그룹 결과들이 생성된다. 판정 블록 2805에서, 선택된 보호가능 객체가 현재 사용자에 의해 보호되는지에 대한 판정이 이루어진다.
판정 블록 2805에서, 선택된 보호가능 객체가 사용자에 의해 현재 보호되고 있지 않다고 판정되면, 판정 블록 2807에서 선택된 보호가능 객체가 사용자로부터의 승인을 현재 대기 중에 있는지에 대한 판정이 이루어진다. 이전에 식별되고 경보를 통해 사용자에게 보고되었고 객체가 보호 그룹에 추가되어야 한다는 것을 사용자가 식별하지 못했다면 보호 그룹에 추가될 보호가능 객체가 사용자로부터 현재 승인을 대기하고 있는 중일 수 있다. 도 17 내지 24에서 설명된 바와 같이, 자동 검색 그룹표의 대기 열을 "Y"로 설정함으로써 객체가 승인을 대기하고 있는 것으로 식별될 수 있다. 판정 블록 2807에서 보호가능 객체가 승인을 대기하고 있지 않다고 판정되면, 판정 블록 2809에서 선택된 보호가능 객체가 보호로부터 제외되었는지 여부를 판정한다. 상술한 바와 같이, 보호가능 객체를 보호하기를 원하지 않거나 또는 보호가능 객체에 대한 변경을 통보받지 않는 사용자로부터의 식별에 의해 보호가능 객체가 보호에서 제외될 수 있다. 자동 검색 그룹표 내의 해당 객체를 사용자에 의해 제외된 것으로 표시함으로써 그러한 식별이 확인된다.
판정 블록 2809에서, 선택된 보호가능 객체가 현재 보호에서 제외되어 있지 않다고 판정되면, 블록 2811에서 새로운 보호가능 객체를 식별하고 사용자가 보호가능 객체를 보호 그룹에 추가하는 것을 승인하거나 및/또는 보호 그룹으로부터 보호가능 객체를 구체적으로 제외시키는 응답을 요청하는 경보가 생성된다. 블록 2813에서 보호가능 객체는 사용자에 의한 승인을 대기하고, 사용자에 의해 보호되지 않고 계획에 의해 보호되지 않는 것으로 표시된다.
선택된 보호가능 객체가 사용자에 의해 현재 보호되고 있고(블록 2805); 사용자로부터의 보호 승인을 대기하고 있고(블록 2807); 또는 보호로부터 제외되었다고(2809) 판정되면, 판정 블록 2815에서 자동 검색 그룹 결과들로서 식별된 추가의 보호가능 객체들이 존재하는지 여부에 대해 판정된다. 판정 블록 2815에서 추가의 보호가능 객체가 존재한다고 판정되면, 루틴은 블록 2803으로 되돌아 가고, 자동 검색 그룹 결과로서 식별된 추가의 보호가능 객체 각각에 대한 프로세스를 계속한다. 그러나, 판정 블록 2815에서 자동 검색 그룹 결과로서 식별된 추가의 보호가능 객체들이 존재하지 않는다고 판정되면, 블록 2817(도 29)에서 자동 검색 그룹의 기존의 보호 객체가 식별된다.
판정 블록 2818에서, 기존의 보호 객체가 사용자에 의해 보호되는 것으로 표시되어 있는지 여부에 대해 판정이 이루어진다. 기존의 보호 객체가 사용자에 의해 보호되는 것으로 표시되지 않는다고 판정되면, 루틴은 판정 블록 2821로 진행한다. 그러나, 기존의 보호 객체가 사용자에 의해 보호되고 있다고 판정되면, 판정 블록 2819에서, 기존의 보호 객체는 자동 검색 그룹의 실행에 의해 생성되는 결과들 내에 포함되는지에 대한 판정이 이루어진다. 판정 블록 2819에서 기존의 보호 객체가 새롭게 생성된 자동 검색 그룹 결과들 내에 포함된다고 판정되면, 판정 블록 2821에서 자동 검색 그룹의 추가의 기존 보호 객체들이 존재하는지 여부에 대한 판정이 이루어진다. 판정 블록 2821에서 자동 검색 그룹의 추가의 기존 보호 객체들이 존재한다고 판정되면, 루틴은 블록 2817로 되돌아가서 계속된다. 판정 블록 2821에서 자동 검색 그룹에 대한 추가의 기존 보호 객체가 없다고 판정되면, 루틴은 블록 2827에서 종료한다.
판정 블록 2819를 다시 참조하면, 식별된 기존 보호 객체가 새롭게 생성된 자동 검색 그룹 결과들에 포함되어 있지 않다고 판정되면, 판정 블록 2822에서, 대기 중인 플래그를 조사함으로써, 변경을 사용자에게 통지하는 경보가 사용자에게 이전에 발송되었는지 여부가 판정된다. 경보가 이전에 송신되지 않았다고 판정되면, 블록 2823에 의해 예시된 바와 같이, 사용자에 의해 보호된 객체에 대한 매핑이 더 이상 존재하지 않는다는 것을 식별하는 변경이 사용자에게 경보를 통해 보고된다. 블록 2825에서 해당 보호 객체는 보호 그룹으로부터의 제거를 대기하고 있 고, 자동 검색 그룹 탐색 파라미터들과 매칭하지 않으나, 현재 사용자에 의해 보호되고 있는 것으로 표시된다. 보호 그룹에서 보호 객체를 제거하는 것은 저장 위치로부터 해당 보호 객체의 임의의 실제 복사본을 제거하지 않는다. 관련 기술 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 제거 대기 및 승인 대기는 대기의 단일 상태로 추적될 수 있다. 상술한 바와 같이, 객체가 자동 검색 그룹 탐색 파라미터와 매치하는지 여부를 추적하는 것은 객체가 제거될 것인지 또는 추가될 것인지 여부를 식별한다.
객체들이 사용자 액션을 대기 중인지 여부를 추적하는 것 이외에, 객체들이 자동 검색 루틴에 의해 식별되고, 계획에 의해 보호되고, 사용자에 의해 보호되고 자동 검색 탐색 파라미터들과 매칭하는 경우, 객체가 먼저 식별되고 자동 검색 그룹표에 추가될 때 식별된 날짜 및 시간도 기록된다. 또한, 자동 검색 그룹표에 존재하는 보호 객체가 자동 검색 그룹 루틴에 의해 더 이상 식별되지 않는 경우, 사라진 날짜 및 시간도 기록된다.
사용자가 Namespace Elements를 선택하는 것에 응답하여 데이터 보호 시스템이 자동 검색 그룹들을 자동적으로 생성하는 것 이외에, 데이터 보호 시스템은 또한 저장된 탐색들을 자동적으로 생성한다. 다른 실시예에서, 저장된 탐색들은 데이터 보호 시스템 설치 시 생성될 수 있다. 또 다른 실시예에서, 저장된 탐색들은 사용자에 의해 생성될 수도 있다.
저장된 탐색이 사용되어 서버와 같은 작성 위치의 세그먼트들이 나타나거나 사라지는 때를 사용자에게 알린다. 예를 들어, 저장된 탐색들을 사용하면, 데이터 보호 시스템이 새로운 서버들, 새로운 DFS 루트, 더 이상 존재하지 않는 서버들, 더 이상 존재하지 않는 DFS 루트, 새로운 STS 서버들, 더 이상 존재하지 않는 STS 서버들 등을 사용자에게 통지하는 능력을 제공한다. 동일한 저장된 탐색의 이전의 평가 동안 찾아진 Namespace Elements의 리스트는 저장된 탐색 각각과 연관된다. 저장된 탐색들은 탐색을 위한 시작점을 나타내는 Namespace Element 및 반환될 포함된 Namespace Elements를 기술하는 탐색 기준 세트를 포함한다. 자동 검색 그룹과는 달리, 저장된 탐색들은 보호가능 객체들보다 Namespace Elements에 작용한다. 예를 들어, 저장된 탐색이 생성되어 회사의 마케팅 부서에 속하는 모든 서버들을 식별한다. 이는 일반적으로 유효한 자동 검색 그룹은 아니다. 그러나, 자동 검색 그룹과 같이, 저장된 탐색들은 탐색 파라미터들과 매칭하는 Namespace Elements를 식별하는 저장된 탐색 결과표를 유지한다.
탐색과 매칭하는 Namespace Elements에 대해 상태가 유지된다. 예를 들어, 먼저 식별되고 마지막에 보여진 시간 정보가 각 Namespace Element에 대해 유지된다. 이러한 정보는 변경을 검출하는데도 사용될 수도 있다. 먼저 Namespace Element가 저장된 탐색에 의해 식별되며, 해당 식별의 날짜를 식별하는 타임스탬프가 지속되고 Namespace Element가 작성 위치로부터 제거되는 경우, Namespace Element가 최종 보여졌던 날짜와 시간을 식별하는 타임스탬프도 지속된다. 실제 실시예에서, 작성 위치에서의 변경이 검출될 때마다 경보가 사용자에게 제공된다. 일 실시예에서, 작성 위치에 대한 Namespace Element의 추가 및/또는 Namespace Element의 제거는 해당 변경을 식별하는 사용자에게 경보를 생성한다. 일 실시예 에서, 서버 상의 모든 공유들에 대한 저장된 탐색이, 사용자가 해당 서버 상의 공유가 보호되는 것인지를 식별하는 것에 응답하여 생성된다. 유사하게, 서버 상의 모든 볼륨들에 대한 저장된 탐색은 해당 서버 상의 볼륨이 보호될 때 생성된다. 서버에 대한 변경 시(예를 들어, 적절한 경우 공유 또는 볼륨의 추가) 사용자는 그 변경을 통지받을 것이다.
자동 검색 그룹 및 저장된 탐색들의 결과들이 또한 사용되어 데이터 보호기의 네비게이션 및 탐색 기능들의 성능을 향상시킬 수도 있다. 자동 검색 그룹 및 저장된 탐색들은 그들의 결과들을 주기적으로 영속적인 저장장치에 캐시하여, 네비게이션 및 탐색 결과들이 자주 변경되지 않는 경우 또는 소정의 손상이 수용가능한 경우 데이터 보호기는 이러한 캐시된 결과들을 활용하여 사용자가 개시한 네비게이션 및 탐색에 보다 빠르게 응답한다.
보호 그룹을 어떻게 보호하기를 원하는 지(예를 들어 복제, 보관, 양자) 및 시간 상 얼마만큼 뒤에서 복구할 수 있기를 원하는 지(기간)을 기술하기 위해 보호 의도가 사용자에 의해 제공된다. 예를 들어, 사용자는 매일 밤 해당 데이터에 대해 생성된 선택된 데이터 그룹의 복제, 저장 위치에서 착탈식 매체에 저장된 복사본, 일주일에 한번 갱신된 해당 복사본, 및 착탈식 매체에 보관된 최대 4개의 복사본들을 가지기를 원할 수 있다. 또한, 사용자는 적어도 한 달 전의 정보를 복구할 수 있기를 원할 수 있다는 것을 지정할 수 있다.
예를 들어, 복제, 보관 또는 양자로서 저장 위치에 데이터를 보호하는 것은 자원들이 데이터의 복사본들에 할당되는 것을 필요로 할 뿐만 아니라 프로세스 자 체에 대해 요구되는 임의의 자원들을 필요로 한다. 이외에도, 이러한 자원들을 사용될 필요한 상태로 두는데 많은 작업들이 필요하고 보호의 정확성을 유지하기 위해 진행 중인(ongoing) 작업들이 필수적이다. 데이터를 보호하기 위한 작업들의 이용은 아래에서 보다 상세하게 설명될 것이다. 자원들 및 작업들을 수동으로 설정하는 것은 지루하고 에러가 발생하기 쉽다. 이외에도, 자원들 및 작업들은, 예를 들어 자동 검색 그룹에 의해 검출된 변경에 응답하여, 보호되고 있는 객체 세트가 변경될 때마다 자원들 및 작업들이 변경될 필요가 있을 수 있다. 사용자가 상세한 자원들 및 작업들을 수동으로 지정하기를 요구하는 것보다, 사용자는 Namespace Elements의 선택 및 보호 의도를 제공하는 것에 의해 보호될 것을 간단하게 지정할 수 있다. 그 후 해당 정보가 사용되어 선택된 데이터의 보호를 유지하기 위한 그룹 계획을 생성한다. 일 실시예에서, 그룹 계획은 3개의 컴포넌트: 자원 계획, 준비 계획 및 보호 계획을 포함한다.
자원 계획은 보호를 인에이블시키기 위해 필요한 자원들을 얻는데 필수적인 작업 리스트를 포함한다. 준비 계획은 식별된 데이터의 보호를 설정하는데 필요한 일회성 작업 리스트를 포함한다. 예를 들어, 일회성 작업은 초기 복사 및 작성 위치에서 저장 위치로의 데이터의 전달일 수 있다. 보호 계획은 보호 데이터의 무결성 및 정확성을 유지하는데 필요한 진행 중인 작업들의 리스트를 포함한다.
사용자에 의해 식별된 보호 의도로부터 객체를 보호하기 위한 상세한 계획으로의 변환은 "의도 변환(intent translation")으로 나타내고 본원에서 설명된다. 본 발명의 실제 실시예에서, 의도 변환은 보호 그룹 및 해당 보호 그룹에 대해 제 공된 보호 의도에 작용한다. 보호 의도는 논리적 표현으로 표현되고 목표로서 서술될 수 있다. 목표들은 원하는 보호 레벨(세밀도(granularity)), 데이터가 보호되는 방법, 데이터가 보호되는 기간, 데이터가 얼마나 자주 보호되는지 등을 식별할 수 있다. 예를 들어, 사용자는 "임의의 실행 파일 공유에 30분 이상을 허비하지 않고; 모든 콘텐트를 일 년 동안 보관한다"와 같은 보호 의도를 식별할 수 있다. 보호 의도로부터의 동사들은 의도를 객체를 보호하기 위한 상세한 계획으로 변환하기 위한 액션들로 사용될 수 있다. 이전의 예를 참조하면, 해당 의도에 대한 대응하는 액션들은 "30분 마다 볼륨들 및 폴더들을 복제하라", "매주 보관하라" 및 "현장외에 일 년 매체 보존으로 저장하라"이다.
본 발명의 일 실시예에서, 보호 의도를 식별하는 보호 템플릿들이 사용자에 의해 선택되고 사용되어 선택된 보호 그룹을 보호하기 위한 계획을 생성한다. 보호 템플릿은 적절한 동사 및 디폴트 속성들을 포함하는 하나 이상의 원형 작업 정의를 포함한다. 보호 템플릿은 또한 디폴트 원형 스케줄을 포함한다. 예를 들어, "매시간 복제, 하루 동안 생성된 3개의 임시 버전들, 밤에 보관, 전송 동안 암호화하지 않음, 저장 위치들에서 암호화하지 않음"은 디폴트 원형 스케줄이다. 사용자는 보호 템플릿을 무시하고 명시적으로 변경할 수 있는 능력을 가진다. 예를 들어, 사용자는 매시간 복제, 하루 동안 단지 하나의 임시 버전, 주마다 보관, 전송 동안 암호화하지 않음, 저장 위치들에서 암호화하지 않음을 생성하기 위해 이전의 보호 템플릿을 변경할 수 있다. 언급된 디폴트 원형 스케줄에서 식별된 "전송 동안 암호화하지 않음"은 작성 위치에서 저장 위치로 전송되는 경우 데이터가 암호화 될 필요가 없다는 것을 식별한다. 대안적으로, 데이터는 작성 위치와 저장 위치 간의 전송 동안 암호화될 수 있다. "저장 위치들에서 암호화하지 않음"은 저장 위치에 복제 또는 보관으로 저장된 데이터가 암호화될 필요가 있다는 것을 식별한다. 대안적으로 저장된 데이터는 암호화될 수 있다. 예를 들어, 테이프와 같은 착탈식 매체에 보관되는 작성 위치의 복사본들이 암호화될 수 있다. 또한, 복제로서 저장된 복사본들도 대안적으로 암호화될 수 있다. 관련 분야의 통상의 지식을 가진 자는, 전송 및 저장을 위해 데이터를 암호화하기 위해 임의의 암호화 기술이 본 발명의 실시예들과 함께 사용될 수 있다는 것을 이해할 것이다.
도 30은 본 발명의 일 실시예에 따라서, 보호 의도를 데이터 세트를 보호하기 위한 계획으로 변환하기 위한 흐름도를 예시한다. 사용자 인터페이스(3003)를 통해 데이터 보호 시스템과 인터페이스하는 사용자는 보호할 Namespace Elements 리스트를 선택한다. 보호할 Namespace Elements의 선택은 데이터 보호기(3001)로 전달되고 응답하여 데이터 보호기는 사용자 인터페이스(3003)를 통해 사용자에게 보호 의도 디폴트들을 제공한다. 특히, 데이터 보호기는, 선택된 Namespace Elements의 수신 시, 선택된 Namespace Elements와 연관된 보호가능 객체를 식별하고 사용자에게 제공되는 보호 의도의 디폴트 리스트를 식별한다.
보호 의도 디폴트들을 수신하는 것에 응답하여, 사용자는 사용자 인터페이스(3003)와 상호작용하고 적절한 디폴트를 수정하거나 또는 선택한다. 데이터 보호기(3001)는 선택 또는 수정을 수신하고 의도를 저장하며 객체에 대한 보호 그룹을 생성한다. 의도는, 이진, XML(Extensible Matkup Language) 또는 데이터베이스 표 를 포함하여 임의의 포맷으로 저장될 수 있으나 이에 한정되지 않는다. 데이터 보호기(3001)는 보호 의도 디폴트들에 임의의 수정을 가하고 수정된 보호 의도를 사용하여 이진, XML 또는 데이터베이스 표를 포함하며 이에 한정하지 않는 임의의 형태로 저장될 수도 있는 보호 그룹을 보호하기 위한 상세한 계획을 생성한다.
보호 그룹을 보호하기 위한 상세한 계획을 생성하는 것과 유사하게, 데이터 보호기는 서술된 복구 의도가 주어진 선택된 복구가능 객체들에 대한 복구 계획, 복구 파라미터들 및 복구할 Namespace Element의 선택을 생성할 수 있다. 복구 계획을 생성하기 위해, 데이터 보호기는 필요한 복구 소스를 결정하고 그들을 적절하게 배열한다. 또한 데이터 보호기는 데이터가 복원될 장소를 식별하는 물리적 경로인 복구 타겟을 결정한다.
몇몇 서로 다른 복구 의도가 지정되어 복구가 진행되는 방법을 제어할 수 있다. 예를 들어, 겹쳐쓰기 의도는 작성 위치로 파일을 복구하고자 하는 경우 파일이 이미 작성 위치에 존재한다는 것이 판정되면 발생하는 일을 제어한다. 항상 겹쳐쓰기, 겹쳐쓰기 금지, 2개 중 가장 최근의 것을 사용하기를 포함하나 이에 한정되지 않는 몇몇 대안들이 제공될 수 있다. 지정될 수 있는 다른 복구 의도는 복원된 객체들의 보안성이 설정되는 방법이다. 예를 들어, 복원된 객체의 보안성은 부모 객체로부터 보안성을 계승한다고 지정될 수 있다(예를 들어 폴더로 복원된 파일의 보안성은 폴더와 동일한 보안성을 수취한다). 대안적인 모델은 복구된 객체의 보안성을 정확하게 백업되었을 때의 것으로 복원하는 것이다. 의도는 또한 복구된 객체가 전송 동안 및/또는 저장될 때 암호화될 것인지를 지정할 수 있다.
도 31 및 32는 본 발명의 일 실시예에 따라서, 작성 위치에 위치한 물리적 객체들을 보호하기 위한 상세한 계획으로 보호 의도를 변환하기 위한 의도 변환 루틴의 흐름도를 예시한다. 의도 변환 루틴(3200)은 블록 3201에서 시작하고 블록 3203에서 보호될 Namespace Elements의 선택 및 선택된 Namespace Elements에 적용될 보호 의도가 수신된다. 상술한 바와 같이, Namespace Elements는 작성 위치에 위치한 보호가능 객체들로 매핑된다. 이외에도, 상술한 바와 같이, Namespace Elements의 선택 및 연관된 보호가능 객체는 데이터 보호 시스템에 의해 보호 의도가 적용되는 보호 그룹으로 컴파일된다. 블록 3205에서 해당 보호 그룹은 "변환 중(under tranlation)"으로 표시된다. 보호 그룹을 "변환 중"으로 표시하는 것은, 의도 변환이 성공적으로 완료되거나 또는 이루어진 임의의 변경들을 원래대로 되돌리는 실패 때까지 사용자가 보호 그룹에 임의의 변경을 하지 못하게 한다.
블록 3207에서, 선택된 보호 그룹에 대해 적절하게 보호를 제공하는데 필수적인 자원 필요조건들이 계산된다. 자원 필요조건들은 보호 그룹에 대해 어떤 변경들이 필요한지를 결정하는 것에 의해 식별된다. 보호 그룹에 대해 필요할 수 있는 변경들의 예들은 새로운 데이터 소스가 보호 그룹에 추가되는 것, 데이터 소스가 보호 그룹으로부터 제거되는 것, 보호 그룹에 대한 데이터 소스가 보호 객체의 추가 또는 제거에 의해 변경되는 것, 자원들이 추가 또는 제거되는 것(예를 들어 복제에 대한 디스크 공간의 추가 또는 삭제, 보관에 대한 착탈식 매체의 추가 또는 삭제), 보호 목적 또는 스케줄들이 보호 그룹에 대해 조정되는 것, 또는 처음 새로운 보호 그룹이 추가되는 것을 포함하나 이에 한정되지 않는다. 이외에도, 저장 위치에 복사 및 저장될 예정인 작성 위치에 위치한 보호 객체의 크기 및 지정된 특정 보호 방법 및 보호 의도를 식별함으로써 필수적인 자원들의 크기가 결정된다.
블록 3209에서, 자원 계획이 생성되고 실행되어 보호 그룹에 보호를 제공하는데 필수적인 자원들을 할당한다. 자원 계획은 필요한 자원들을 결정하고 이러한 자원들을 얻는데 필수적인 임의의 작업들을 포함한다. 예를 들어, 그러한 작업들은 디스크 공간의 할당, 기존 저장 공간의 확장, 테이프 매체의 할당, 테이프 라이브러리 변경기 및 드라이브의 할당 및 자유 매체 풀로부터의 테이프 요청 등을 포함할 수 있다. 자원 계획에 포함되는 작업은 사용자가 원하는 보호 유형에 의존적이다. 예를 들어, 복제를 위해, 작업들은 복제 및 임시 버전을 위해 디스크 자원들을 할당하는 것 및 가능하면 로그 영역에 대한 자원들의 할당을 포함한다. 블록 3209에서 생성된 자원 계획과 연관된 작업들이 실행되고 보호 그룹에 대한 필수적인 자원들이 할당된다.
자원들이 할당된 후, 블록 3211에서 데이터 보호 시스템에 의해 체크포인트가 생성된다. 대안적인 실시예에서, 자원 계획은 이러한 자원들을 할당하는데 필수적인 작업들의 생성만을 포함할 수 있고 이러한 작업들의 실행은 실제로 포함하지 않는다. 자원 계획과 연관된 작업의 실행은 준비 계획의 일부로서 스케줄되고 수행될 수 있다. 이러한 실시예에서, 체크포인트는 의도 변환이 완료될 때까지 생성되지 않는다. 따라서, 의도 변환이 완료되지 않으면, 처음부터 재시작해야 한다. 블록 3209에 대해 아래에서 설명된 바와 같이, 자원들의 할당 이후 체크포인트를 생성함으로써 루틴이 성공적으로 완료되지 않으면 의도 변환 루틴이 재시작할 수 있는 알려진 포인트를 제공한다.
자원들의 전부가 아닌 일부가 자원 할당 작업들의 실행 동안 할당될 가능성이 있기 때문에(예를 들어, 물리적 자원들의 일부를 할당한 이후 시스템이 충돌하나 다른 것은 그렇지 않음) 본 발명의 실시예에는 의도 변환 루틴의 미완료 실행에서 완전히 할당되지 않은 자원들을 청소하는 클린-업(clean-up) 루틴이 포함된다. 이러한 클린-업 루틴은, 시스템의 자원 할당이 소정의 방식으로 거동하도록 설계함으로써 달성된다. 실제 실시예에서, 데이터소스 베이스에 따라 자원들이 할당되고 소정의 데이터소스에 대해 필수적인 모든 자원들이 할당되거나 전혀 그렇지 않을 수 있다. 자원들 중 모두가 아니라 일부가 할당되고 할당 작업들이 인터럽트되면, 그 후 리프레시 작업이 생성되어 자원 할당 계획의 할당 작업들의 이전 동작으로부터 임의의 부분적으로 할당된 자원들을 청소한다. 클린-업 루틴이 임의의 부분적으로 할당된 자원들을 청소하면, 그 후 데이터 보호 시스템은 필요한 자원을 재할당할 수 있다. 의도 변환은 자원이 성공적으로 할당된 새로운 보호 객체들에 대해 계속될 수 있다.
도 31을 다시 참조하면, 블록 3209에서 자원들의 할당이 성공적으로 완료되는 경우 블록 3211에서 체크포인트가 생성된다. 자원들이 할당된 후 체크포인트의 생성으로 인해, 자원이 할당된 후 완료되기 이전에 의도 변환 루틴(3200)이 인터럽트되는 경우 발생될 수 있는 임의의 문제들을 데이터 보호 시스템이 해결할 수 있다 . 예를 들어, 의도 변환 루틴의 완료 이전이나, 블록 3211에 예시된 바와 같이, 제1 체크포인트가 추가된 이후에 시스템이 충돌하면, 재시작시 데이터 보호 시 스템은 의도 변환 루틴이 인터럽트되었다는 것을 식별하고 자원의 할당에 후속적으로 추가된 체크포인트를 찾는다. 체크포인트를 식별함으로써, 이전에 할당된 자원들이 사용될 수 있고 의도 변환 루틴(3200)은 완전히 재시작하고 자원들을 재할당할 필요없이 해당 체크포인트로부터 재개될 수 있다. 의도 변환 루틴에 대한 인터럽션이후의 재시작은 도 38에 대해 보다 상세하게 설명될 것이다.
판정 블록 3213에서, 의도 변환 루틴(3200)은, 보호 그룹과 현재 연관된 태스크들 및/또는 임의의 기존의 작업들이 존재하는지를 판정한다. 판정 블록 3213에서 보호 그룹과 연관된 태스크들 및/또는 기존의 작업들이 존재한다고 판정되면, 블록 3215에서 이러한 작업들 및 태스크들은 등록해제(de-registered)되고 블록 3217에서 예시된 바와 같이 임의의 활성 작업들은 종료된다. 해당 보호 그룹이 처음에 생성되기보다 수정된다면 작업들 및 태스크들이 보호 그룹에 대해 미리 존재할 수 있다.
판정 블록 3213에서 보호 그룹에 대한 기존의 작업들 및/또는 태스크들이 존재하지 않는다고 판정되거나 또는 블록 3217에서 기존의 작업들 및/또는 태스크들이 종료된 후에 블록 3219에서 의도 변환 루틴(3200)은 보호 계획을 생성 및 스케줄한다. 아래에서 보다 상세하게 설명되는 바와 같이, 보호 계획은 저장 위치에서 보호 그룹의 복사본의 정확성을 시간에 걸쳐 유지하는데 필요한 작업 리스트를 포함한다. 이외에도, 의도 변환 루틴(3200)은 블록 3221에서 준비 계획을 생성 및 스케줄한다. 아래에서 보다 상세하게 설명되는 바와 같이, 준비 계획은, 보호 계획과 연관된 작업들이 실행될 수 있고 보호 그룹의 보호의 정확성이 달성될 수 있 는 상태로 작성 위치 및 저장 위치를 두는데 활용되는 일회성 작업들의 리스트를 포함한다. 예를 들어, 보호 그룹이 생성된 첫 번째이고 복제로 저장되어 있다면, 복제에 상주하는 보호 그룹과 연관된 데이터의 복사본은 존재하지 않을 것이다. 따라서, 준비 계획과 연관된 작업들 중 하나는 복제의 해당 복사본의 저장 및 보호 객체의 복사본의 생성일 수 있다.
도 32를 참조하면, 블록 3225에서 의도 변환 루틴(3200)이 저장된 탐색 및 상술한 자동 검색 그룹을 생성한다. 상술한 바와 같이, 이러한 자동 검색 그룹들 및 저장된 탐색들은 스케줄된 검색 루틴의 일부로서 실행된다.
자원 계획, 준비 계획, 보호 계획, 저장된 탐색 및 자동 검색 그룹들에 대한 작업들이 생성된 이후에, 블록 3227에서 작업 생성의 완료를 나타내는 제2 체크포인트가 데이터 보호 시스템에 추가된다. 위에서 표시하고 아래에서 보다 상세하게 설명되는 바와 같이, 이러한 체크포인트가 데이터 보호 시스템에 의해 사용되어 의도 변화 루틴(3200) 동안 발생하는 인터럽션으로부터 복구한다. 예를 들어, 블록 3227에 예시된 바와 같이, 의도 변환 루틴(3200)이 체크포인트가 생성된 후 인터럽트되면, 재시작 동안 데이터 보호 시스템은 의도 변환 루틴(3200)이 진행 중이었다는 것을 식별하고 계획 및 작업들이 생성되었던 것을 나타내는 체크포인트를 찾는다. 체크포인트의 식별시, 의도 변환 루틴(3200)은 해당 체크포인트로부터 재개되고 완료된다.
블록 3229에서, 새롭게 보호된 객체들 및 보호로부터 제거되었던 이전의 보호 객체들의 상태가 갱신되어 보호 계획에의 포함 및 그로부터의 제외를 반영한다. 블록 3209에서 자원 할당 에러들을 갖는 것으로 표시된 보호 객체들은 "계류 중인 상태(pending state)"로 되돌아간다. 블록 3231에서, 모든 체크포인트들이 삭제되고 보호 그룹은 "변환 중이 아님(no under translation)"으로 표시된다. 모든 보호 객체들이 제거되면, 보호 그룹은 삭제될 수 있다. 블록 3233에서 의도 변환 루틴(3200)이 완료한다.
도 33은 본 발명의 일 실시예에 따라서, 보호 그룹에 대한 보호 계획을 생성하기 위한 보호 계획 생성 루틴의 흐름도이다. 보호 계획 생성 루틴(3300)은 블록 3219(도 31)에 대해 위에서 나타낸 보호 계획의 생성 및 스케줄링을 보다 상세하게 설명한다. 보호 계획 생성 루틴(3300)은 블록 3301에서 시작하고 블록 3303에서 보호 그룹에 대한 복사 작업이 생성 및 스케줄된다. 복사 작업은, 작성 위치에서의 하나 이상의 보호가능 객체들에 발생된 변경들을 저장 위치에 저장된 대응하는 하나 이상의 보호가능 객체들의 복사본으로 복사하는 작업이다. 예를 들어, 하루 동안 사용자가 작성 위치에 위치한 보호 객체들을 수정하면, 복사 작업 실행시, 이러한 변경들이 복사되고 저장 위치로 전송되며, 이러한 변경들을 포함하도록 복사본이 갱신된다.
블록 3305에서, 보호 계획 생성 루틴(3300)은 임시 버전 작업을 생성 및 스케줄한다. 임시 버전 작업은 저장 위치에서의 데이터의 실제 버저닝을 수행하도록 스케줄된 작업이다. 임시 버전들의 생성은 관련 분야의 통상의 지식을 가진 자에게 알려져 있고 본원에서 상세하게 설명하지 않을 것이다.
블록 3307에서, 검증 루틴이 생성 및 스케줄된다. 실행되는 경우, 작업은 도 35에 대해 아래에서 상세하게 설명되는 검증 루틴을 수행한다. 블록 3309에서 보호 계획 생성 루틴(3300)이 완료된다.
도 34는 본 발명의 일 실시예에 따라서, 준비 계획을 실행하기 위한 준비 계획 실행 루틴의 흐름도이다. 준비 계획 실행 루틴(3400)은 블록 3401에서 시작하고 블록 3403에서 보호 그룹을 보호하는데 추가의 자원들이 필요한지 여부에 대한 판정이 이루어진다. 상술한 바와 같이, 저장 위치에서 보호 그룹을 보호하는데 필요한 자원들을 결정하기 위한 자원 계획이 생성된다. 일 실시예에서, 이러한 자원들은 준비 계획의 생성 및 실행 이전에 자원 계획 동안 할당될 수 있다.
판정 블록 3403에서 자원들이 필요하다고 판정되면, 블록 3405에서 이러한 자원들을 할당하기 위해 자원 계획에서 생성된 작업들이 실행되고 자원들이 할당된다.
블록 3405에서의 자원의 할당에 후속하여 또는 블록 3403에서 보호 그룹의 보호에 추가의 자원들이 필요없다고 판정되면, 블록 3407에서 보호 그룹과 연관된 물리적 객체들의 초기 복사본이 생성되고, 저장 위치로 전달되며, 이전에 할당된 자원들에 저장된다. 보호 그룹의 초기 복사본이 생성되고 저장 위치에 복제를 위해 저장되면, 블록 3409에서 해당 복사본은 작성 위치에 위치한 실제 물리적 객체들로 검증된다. 검증은 도 35에 대해 아래에 설명될 것이다.
판정 블록 3411에서, 임의의 보호 객체들이 보호 그룹으로부터 제거되었는지 여부에 대한 판정이 이루어진다. 블록 3411에서 보호 객체가 보호 그룹으로 제거되었다고 판정되면, 블록 3413에서 준비 계획은 이러한 객체들을 모니터링하는 것 을 멈추는 작업들을 포함하고 이러한 객체들은 보호가능 객체들로 남아 있는다. 모니터링이 자원을 소비하기 때문에, 작업은 더 이상 필요하지 않을 때 모니터링을 멈춘다. 블록 3415에서, 준비 계획 실행 루틴(3400)이 완료한다.
상술한 바와 같이, 보다 많거나 또는 보다 적은 블록들이 본원에 설명된 루틴들을 수행하는데 사용될 수 있다. 예를 들어, 매체 로드를 통해 복사가 행해지는 경우, 준비 계획(3400)은 데이터의 초기 복사본을 생성하지 않는다(블록 3407). 유사하게, 복사가 보관을 위한 것인 경우, 준비 계획(3400)은 데이터의 초기 복사본을 생성하지 않는다(블록 3407).
도 35는 본 발명의 일 실시예에 따라서, 저장 위치에 위치한 데이터의 복사본을 검증하기 위한 검증 루틴의 흐름도이다. 검증 루틴(3500)은 블록 3501에서 시작하고 블록 3503에서 검증 루틴(3500)은 작성 위치에 위치한 물리적 객체들에 대한 검증 파라미터를 얻는다. 관련 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 검증 파라미터는 작성 위치에 위치한 물리적 객체들의 체크섬일 수 있다. 대안적으로, 검증 파라미터는 작성 위치에서의 물리적 객체들의 최종 변경 시간 또는 작성 위치에 위치한 물리적 객체들의 크기일 수 있다. 일반적으로, 검증 파라미터는 작성 위치에 위치한 물리적 객체들에 대한 임의의 유형의 식별일 수 있다.
블록 3505에서, 검증 루틴(3500)은 저장 위치에 위치한 객체들에 대한 검증 파라미터를 얻는다. 작성 위치에서의 객체들에 대한 검증 파라미터와 유사하게, 저장 위치에서의 객체들의 검증 파라미터들은 체크섬(checksum), 최종 변경 시간, 파일 크기 등일 수 있다.
블록 3507에서, 블록 3503에서 얻어진 작성 위치에서의 보호 객체들의 검증 파라미터들 및 블록 3505에서 얻어진 저장 위치에서의 객체들의 검증 파라미터들이 비교되어 저장 위치에 위치한 객체들이 작성 위치에 위치한 보호 객체들과 매칭한다는 것을 확인한다. 판정 블록 3509에서, 블록 3507에서 비교된 파라미터들이 매칭하는지 여부에 대한 판정이 이루어진다. 블록 3509에서 파라미터들이 매칭하지 않는다고 판정되면, 블록 3513에서 검증 루틴(3500)은 작성 위치로부터 매칭하지 않는 보호 객체들을 다시 복사하고 저장 위치에 위치한 객체들을 대체하고 판정 블록 3511로 진행한다.
그러나, 판정 블록 3509에서 파라미터들이 매칭한다고 판정되면, 판정 블록 3511에서 보호 그룹에 대해 여전히 검증되지 않은 추가의 데이터가 존재하는지 여부에 대한 판정이 이루어진다. 보호 그룹에 대해 검증되지 않은 저장 위치에 위치한 추가 데이터가 존재한다고 판정되면, 검증 루틴은 블록 3503으로 되돌아가고 프로세스가 계속한다. 대안적으로, 판정 블록 3511에서 추가의 데이터가 없다고 판정되면, 저장 위치가 검증되고 검증 루틴은 블록 3515에서 완료되어, 저장 위치에 위치한 객체들이 보호 객체들과 매칭한다는 것을 확인한다.
복사의 정확성을 확인하기 위해 의도 변환 동안 준비 계획의 일부로서 실행하는 검증 루틴 이외에, 검증 루틴들은 물리적 객체들의 보호의 정확성을 이어서 재확인하도록 스케줄될 수 있다. 또한, 검증 루틴은 저장 위치에 위치한 객체들의 복사본이 유효 상태에 놓이도록 스케줄되고 실행될 수 있다. 시스템이 충돌하거나 또는 스케줄되지 않은 소정의 다른 유형의 변경이 발생하면 저장 위치에 위치한 물 리적 객체들의 복사본은 무효 상태에 있을 수 있다. 예를 들어, 변경 로그(아래에서 설명됨)가 실패로 인해 넘쳐 저장 위치에 이러한 변경들을 적용하면 복제는 무효가 될 수 있다.
도 36은 본 발명의 일 실시예에 따라서, 저장 위치에 위치한 객체들의 복사본을 검증하기 위한 스케줄된 검증 루틴의 흐름도이다. 스케줄된 검증 루틴(3600)은 블록 3601에서 시작하고 블록 3603에서 루틴은 검증될 저장 위치에 위치된 보호 그룹의 객체들의 복사본을 식별한다. 판정 블록 3605에서, 식별된 복사본이 유효 상태인지 또는 무효 상태인지에 대한 판정이 이루어진다. 판정 블록 3605에서 식별된 복사본이 무효 상태인 것으로 판정되면, 블록 3607에서 스케줄된 검증 루틴(3600)이 도 35에 대해 설명된 검증 루틴(3500)을 실행한다.
그러나, 판정 블록 3605에서 복사본이 유효 상태인 것으로 판정되면, 판정 블록 3609에서 저장 위치에 위치한 보호 그룹들의 임의의 추가 복사본들이 그들의 유효성을 확인받을 필요가 있는지에 대한 판정이 이루어진다. 블록 3609에서 해당 추가 복사본들이 그들의 유효성을 확인받을 필요가 있다고 판정되면, 스케줄된 검증 루틴(3600)은 블록 3603으로 되돌아 가고 검증될 추가 복사본들을 식별하고 해당 프로세스를 계속한다. 그러나, 판정 블록 3609에서 검증될 저장 위치에 위치한 추가의 복사본들이 존재하지 않는다고 판정되면, 스케줄된 검증 루틴(3600)이 블록 3611에 예시된 바와 같이 완료한다.
도 37은 본 발명의 일 실시예에 따라서, 복제에 대한 상태 천이의 블록도를 예시한다. 자원 할당 동안 저장 위치의 일부분을 할당하기 전에, 복제는 할당되지 않은 상태에 있다. 의도 변환이 보호 그룹에 대한 자원들을 할당한 이후, 복제는 할당된 상태로 천이한다. 그 후, 콘텐츠(보호 그룹의 복사본)는 저장 위치로 전달되고 저장되어야 한다. 전달 및 저장은 디스크-대-디스크 초기화(데이터 보호 시스템에 의해 자동적으로 됨), 자동화된 매체 코드, 또는 관리자에 의해 수동(예를 들어, 수동 매체 로딩에 의해) 중 어느 하나를 사용하여 달성될 수 있다. 디스크-대-디스크 초기화가 행해지면, 의도 변환기는 자동적으로 초기 복사 작업을 생성한다. 실행 시, 초기 복사 작업은 복제를 무효 상태로 둘 것이다. 매체 로딩을 사용하여 복사본이 초기화되면, 그 후 사용자는 매체 로딩이 완료되고 복제가 해당 포인트에서 무효 상태로 놓이는 때를 나타낸다.
복제가 무효 상태이면, 검증 작업이 실행되어 유효 상태로 두는 것이 필수적이다. 상술한 바와 같이, 검증 작업은 저장 위치에서의 복사본이 작성 위치에서의 보호 객체들과 매칭한다는 것을 보장한다.
복제가 할당된 상태(3703), 무효 상태(3705) 또는 유효 상태(3711)에 있는 것 이외에, 복제는 누락 상태(3713)로 천이할 수 있다. 예를 들어 시간에 따라, 특정 보호 그룹에 대한 복제에 할당된 물리적 매체가 고장날 수 있어, 복제가 누락 상태가 될 수 있다. 누락 상태(3713)로부터, 사용자와 상호작용하는 데이터 보호 시스템은, 복제되는 정보가 계속 보호될 필요가 있는지 여부를 결정한다. 보호 그룹이 지속적으로 보호될 필요가 있다면, 자원이 재할당되어 복제를 다시 할당된 상태(3703)로 천이시킨다. 해당 복제와 연관된 정보가 더 이상 보호될 필요가 없다고 누락 상태(3713)로부터 판정되면, 복제는 파괴 상태(3707)로 천이할 수 있고 보 호 그룹에 대한 복제는 더 이상 데이터 보호 시스템에 의해 수행되지 않을 것이다.
복제는 또한 일시적으로 누락 상태(3713)로 천이할 수 있다. 예를 들어, 소정의 하드웨어 문제로 인해 디스크가 일시적으로 단절되거나 또는 이용가능하지 않을 수 있고 이어서 다시 이용가능하게 될 수 있다. 이러한 경우, 디스크가 다시 이용가능하게 될 때, 복제는 유효 상태(3711) 또는 무효 상태(3705)로 되돌아 갈 수 있다.
더 이상 보호 그룹을 보호하기를 원하지 않는다는 것을 사용자가 나타내는 것에 응답하여 파괴 상태(3707)에 도달한다. 복제는 임의의 다른 상태로부터 파괴 상태(3707)로 천이할 수 있다. 예를 들어, 복제가 무효 상태(3705)에 있다면, 사용자는 복제에 복사된 보호 객체들을 더 이상 보호하기를 원하지 않는다는 것을 나타낼 수 있어, 복제를 파괴 상태(3707)로 천이시킨다. 복제를 파괴 상태로 두는 것은, 사용자가 복제에 복사된 보호 객체들의 보호를 완료했고, 하드 디스크와 같은 물리적 매체가 빈 매체 풀로 되돌아갈 수 있고 다른 보호 그룹들로 할당될 수 있다는 것을 데이터 보호 시스템에 나타낸다.
본 발명의 일 실시예에서, 사용자가 복제에 복사된 보호 객체들의 보호를 계속하기를 더 이상 원하지 않는다는 것을 나타내는 경우, 복제는 정지 상태(3709)로 천이하여, 그 복제 및 그의 임시 버전들은 유한한 시간 동안 유지된다. 더 이상 보호되지 않는 것으로 표시된 이후에 정보를 유지함으로써, 사용자는 보호를 멈춘 포인트까지 해당 정보를 복구할 능력을 가진다.
도 38은 본 발명의 일 실시예에 따라서, 이전의 의도 변환 루틴 동안 발생한 인터럽션에 후속하여 의도 변환 루틴을 재시작하기 위한 재시작 루틴의 흐름도를 예시한다. 재시작 루틴(3800)은 블록 3801에서 시작하고 판정 블록 3803에서 루틴은 보호 그룹이 현재 의도 변환 중에 있는지 여부를 판정한다. 판정 블록 3803에서 보호 그룹이 의도 변환 중이라고 판정되면, 판정 블록 3805에서 모든 자원들이 의도 변환 중의 보호 그룹에 대해 할당되었는지 여부에 대한 판정이 이루어진다. 판정 블록 3805에서 모든 자원들이 할당되지 않았다고 판정되면, 그 후 블록 3806에 의해 예시된 바와 같이 재시작 이전에 할당되었던 임의의 자원들이 할당해제(deallocate)된다. 임의의 이전의 할당된 자원들의 할당해제 이후, 블록 3807에서 의도 변환 중인 보호 그룹이 새로운 보호 그룹인지 여부가 판정된다. 판정 블록 3807에서 보호 그룹이 새로운 보호 그룹이 아니라고 판정되면, 블록 3808에서 루틴은 기존의 보호 그룹에 추가되었던 새로운 객체들을 계류 상태로 되돌린다. 특히, 새로운 객체들이 사용자에 의해 보호되지 않는 것으로 되돌아 가고 사용자 액션을 대기 중이다.
블록 3809에서, 기존의 보호 그룹은 변환 중이 아니라고 표시되고 블록 3817에서 루틴이 완료한다. 기존의 그룹을 변환 중이 아닌 것으로 되돌리고 새로운 객체를 계류 중인 상태로 되돌리는 것은 시도된 변환 이전에 데이터 보호 시스템을 자신의 상태로 되돌린다. 특히, 새로운 객체들은 다시 기존의 보호 그룹에 추가되어야 되고 기존의 보호 그룹의 객체들은 의도 변환 루틴에서의 초기 시도 이전에 보호되었던 것처럼 계속 보호된다.
판정 블록 3807를 다시 참조하면, 인터럽션이 발생했을 때 의도 변환 중에 있는 보호 그룹이 새로운 보호 그룹이었다고 판정되면, 블록 3811에서 새로운 보호 그룹의 모든 보호 객체들은 계류 중인 상태(즉, 사용자에 의해 보호되지 못하고 사용자 액션을 대기함)로 되돌려지고 루틴은 블록3817에서 완료한다. 객체들을 계류 상태로 되돌리는 것 이외에, 보호 그룹은 또한 그룹 내에 보호 객체들이 존재하지 않는 것으로 삭제될 수 있다.
판정 블록 3805를 다시 참조하면, 모든 자원들이 인터럽션 이전에 할당되었다고 판정되면, 블록 3813에서 시도된 의도 변환 루틴에 의해 발생된 최종 체크포인트가 식별된다. 상술한 바와 같이, 체크포인트들은 의도 변환 루틴 내의 2개의 상이한 포인트들에서 생성된다. 특히, 자원들이 할당된 후, 및 보호 계획이 생성되거나 또는 갱신된 후에 다시 및 준비 계획이 생성된 후에 체크포인트가 생성된다. 최종 체크포인트가 블록 3813에서 식별되었다면, 블록 3815에 예시된 바와 같이, 의도 변환 루틴은 식별된 최종 체크포인트로부터 재시작되고 프로세스는 블록 3817에서 완료한다.
물리적 객체들이 저장 위치에서 보호될 수 있는 몇 가지 방식이 존재한다. 예를 들어, 복제들이 서버와 같은 컴퓨팅 디바이스 상에 유지될 수 있고, 보관 복사본들이 테이프 또는 다른 착탈식 매체와 같은 물리적 매체 상에 저장될 수 있는 것 등이다. 사용자가 원하는 보호의 유형이, 상술한 바와 같이 의도 변환기에 의해 계획 세트로 변환되는, 높은 수준의 목표 또는 보호 의도의 일부로 제공된다. 테이프 또는 다른 착탈식 매체 상의 데이터 보관에 대해, 특정 때에 보호 그룹의 데이터의 표현 또는 시점에 대한 그의 변경들을 매체의 하나 이상의 물리적 매체 조각들을 통해 포함하는 "데이터세트(datasets)"를 생성함으로써 데이터 보호가 작용한다. 데이터세트는 하나 이상의 보호 객체들과 연관된 하나 이상의 보관 경로들의 결과이다. 또한, 다수의 복구 소스가 복구에 기여할 수 있고, 다수의 데이터세트가 또한 복구에 기여하는데 필수적이기 때문에, 데이터세트 각각은 하나 이상의 복구 소스들을 포함할 수 있다.
매체가 관리되는 주 객체인 다른 백업 애플리케이션들과 달리, 본 발명의 일 실시예에 따르면, 매체 자체 대신에, 데이터세트 및 매체와 데이터세트의 연관성이 관리된다.
긴 시간 주기(수 주, 몇 달, 또는 몇 년 단위) 동안 데이터를 유지하도록 보관 작업이 설계된다. 보관된 매체는, 지진 또는 화재와 같은 전체 작성 위치에 영향을 주는 재앙에 대해 보호하기 위해 일반적으로 외부에 보관된다. 보관된 매체는 또한 서버 또는 디스크의 손실 또는 사용자 에러를 포함하여 보다 작은 정전으로부터의 복구를 위해 현지에 보관될 수 있다. 또한, 복제 및 보관 양자를 활용하는 이러한 실시예들에 대해, 보관된 매체는 복제를 갖는 저장 위치, 작성 위치 또는 별개의 위치에 유지될 수 있다.
도 39는 본 발명의 일 실시예에 따라서, 데이터를 보관하기 위한 계획을 생성하는 보관 보호 계획 생성 루틴을 예시한다. 보관 보호 계획 생성 루틴(3900)은 블록 3901에서 시작하고 블록 3903에서 루틴은 데이터 보호 종류를 수신한다. 데이터 보호 종류는, 자신들의 데이터 현장, 외부, 또는 현장 및 외부 양자에 보관하기를 원하는지 여부에 대해 사용자에 의해 식별된다. 데이터 보호 종류를 수신하 는 것 이외에, 블록 3905에서 루틴은 데이터 보호 기간을 수신한다. 데이터 보호 기간은, 과거 얼마 동안 보호된 정보를 복구할 수 있기를 원하는지에 대해 사용자에 의해 제공되는 높은 수준의 의도이다. 이러한 의도는 사용자가 복구할 수 있기를 원하는 것에 대한 목표로서 서술될 수 있다.
예를 들어, "나는 7년 동안 데이터를 복구할 수 있게 되기를 원합니다"의 의도를 제공하면, 사용자가 7년 이전의 작성 위치에 존재한 정보에 대한 데이터를 복구할 수 있게 할 보관 계획으로 변환될 것이다. 데이터 보호 기간은 수 년, 몇 달, 수주 또는 며칠이 될 수 있다. 블록 3907로 예시된 바와 같이, 보관 보호 계획 생성 루틴(3900)은 또한 사용자가 데이터를 보관하는 액션이 일어나기를 원하는 때와 같은 스케줄링 의도들을 수신한다. 대안적 실시예예서, 데이터 보호 포맷도 수신될 수 있다. 데이터 보호 포맷은 전체 백업, 차등 백업(differential backup) 및 증분 백업을 포함하나 이에 한정되지 않는다. 본원에 사용된 전체 백업은 모든 보호 객체가 저장 위치에 복사되는 백업이다. 본원에 사용되는 차등 백업은 최종 전체 백업 이후 수정되었던 보호 객체들이 저장 위치에 복사되는 백업이다. 본원에 사용된 증분 백업은, 소정의 이전 백업(전체, 차등 또는 증분)의 시간 이후 수정되었던 보호 객체들만이 복사되는 백업이다. 본원에서 설명한 바와 같이, 차등 및 증분 백업은 일반적으로 "부분 백업(partial backup)"으로 불리우고, 둘 중 하나를 식별하도록 의도된다. 사용자는 또한 보관이 작성 위치에서의 본래 데이터로부터 생성되는지 또는 보관이 저장 위치에서의 복사본으로부터 생성되는지를 지정할 수 있다.
데이터 보호 종류 및 보호 기간에 기초하여, 보관 보호 계획 생성 루틴(3900)은 사용자에 의해 지정된 높은 수준의 요구조건들을 만족시키는 디폴트 보관 방식을 결정한다. 실제 실시예에서는, 데이터를 보관하는 4개의 서로 다른 유형의 방식들이 존재한다. GGFS(great grandfather, grandfather, father, son)로 불리우는 제1 방식은 4주 동안 현장에 유지되고 복사본이 수 년 동안 외부에 유지되는 년간 전체 백업; 4주 동안 현장에 유지되고 복사본이 1년 동안 외부에 유지되는 월간 전체 백업; 4주 동안 현장에 유지되고 복사본이 4주 동안 외부에 유지되는 주간 전체 백업; 및 2주 동안 현장에 유지되는 일별 차등 백업을 제공한다. 대안적 실시예에서, 블록 3903에서 식별된 보호 종류에 따라 현장 또는 외부 복사본들만 유지될 수 있다. 다른 실시예에서, 현장 복사본 자체는 블록 3903에서 식별된 보호 종류에 기초하여 소정의 기간 이후에 외부로 전달되고 유지될 수 있다. 다른 방식은 GFS(grandfather, father, son) 방식으로 본원에서 불리운다. GFS 방식은 4주 동안 현장에 유지되고 복사본이 1년 동안 외부에 유지되는 월별 전체 백업; 4주 동안 현장에 유지되고 복사본이 4주 동안 외부에 유지되는 주간 전체 백업; 및 2주 동안 현장에 유지되는 일별 차등 백업을 제공한다.
다른 보관 방식은 FS(father, son) 방식으로 본원에서 불리운다. FS 방식은 4주 동안 현장에서 유지되고 복사본이 4주 동안 외부에서 유지되는 주간 전체 백업; 및 2주 동안 현장에서 유지되는 일별 차등 백업을 제공한다. 다른 보관 방식은 본원에서 S(son) 방식으로 불리운다. S 방식은 1주 동안 현장에서 유지되고 복사본이 1주 동안 외부에서 유지되는 일별 전체 백업을 제공한다. 마지막으로, 일 반 보호 방식 이외의 백업을 제공하는 애드훅 루틴(ad hoc routine)도 이용가능하다. 이는 현장 또는 외부에 유지되는 기한이 없는 전체 백업일 수 있다.
본 기술 분야의 통상의 지식을 가진 자는, 디폴트 보관 방식들이 사용자에 의해 임의의 레벨에서 수정될 수 있고, 추가/대안적인 디폴트 보관 방식들도 제공될 수 있다는 것을 이해할 것이다. 예를 들어, 종류(현장, 외부), 기간(월, 년) 및 포맷(전체, 차등, 증분)이 수정될 수 있다. 또한, 사용자는 보관 방식에 대한 스케줄링 제어를 지정할 수 있다. 예를 들어, 사용자는 방식이 시작되는 주의 날짜, 보관물이 생성될 날짜의 시간, 방식이 회사 달력, 월별 달력 상 동작할 것인지 여부 등을 나타낼 수 있다.
도 39를 다시 참조하면, 디폴트 보관 방식이 사용자에게 제공되고 사용자는 제공된 방식의 임의의 부분을 무시할 수 있다. 판정 블록 3911에서, 사용자에게 결정된 보관 방식에 대한 임의의 대체(override)가 제공되는지 여부에 대한 판정이 이루어진다. 판정 블록 3911에서 사용자에게 대체가 제공된다고 판정되면, 블록 3913에서 보관 방식이 수정되어 이러한 대체를 포함한다. 대체물들은, 백업 방식의 임의의 부분에 대해 제공될 수 있고 범위가 변할 수 있다. 예를 들어, 대체물들은 백업 포맷(전체, 차동, 증분), 유지될 현장 복사본의 개수, 유지될 외부 복사본의 개수, 외부 복사본에 대한 보유 기간, S 레벨을 디스에이블할지 여부, 백업에 의해 생성된 데이터세트가 검증되어야 하는지 여부 및 때, 작성 위치, 저장 위치 또는 다른 곳에서 보관이 발생할지 여부, 및 그 주의 시작 날짜, 작업일수 등을 포함할 수 있다. S 레벨을 디스에이블하는 것은 여러 가지 이유로 바람직할 수 있 다. 예를 들어, 사용자가 보관 및 복제 모두를 구현하면, 사용자는 일별 보관 보호(S 레벨) 없이 지내는 것으로 결정하고 모든 현장 복구 요구조건들을 처리하는 복제에 의존한다.
블록 3909에서 결정된 보관 방식이 수용되거나 또는 블록 3913에 예시된 바와 같이 수정되면, 블록 3915에서 보관 계획 생성 루틴(3900)은 보관에 의해 데이터를 보호하는데 필수적인 계획들을 생성한다. 상술한 바와 같이, 데이터를 보호하는데 필요한 계획은 자원 계획, 준비 계획 및 보호 계획을 포함할 수 있다. 마지막으로, 블록 3915에서 예시된 바와 같이 계획들이 생성된 이후, 보관 보호 계획 생성 루틴(3900)은 블록 3917에서 완료한다.
도 40은 본 발명의 일 실시예에 따라서, 보관 방식을 생성하는데 사용될 수 있는 상이한 생성들의 예들을 예시하는 표이다. 표(4000)는 일주일에 5일(월요일 - 금요일) 발생하는 하나의 현장 복사본을 2주 동안 유지하고 외부 복사본을 유지하지 않는 증분 모드 백업을 갖는 아들 세대(son generation)(4001)를 식별한다. 아버지 세대(4003)은 4주 동안 보관되는 하나의 현장 복사본을 갖는 전체 백업 모드를 유지하고 전체 백업은, 각 달 중 백업이 수행되지 않는 1주를 제외한(예를 들어, 각 달의 마지막 토요일), 주당 한번(예를 들어 토요일) 수행된다. 유사하게, 아버지 세대(4003)는 4주 동안 하나의 외부 복사본을 유지한다. 할아버지 세대(4005)은, 백업이 수행되지 않는 년간 한 달(예를 들어 년 중 마지막 토요일)을 제외한, 월간 한번(각 달의 마지막 토요일) 생성되는 하나의 현장 복사본을 4주 동안 유지하는 전체 모드 백업을 가진다. 또한, 증조할아버지 세대(4007)는 12개월 동 안 하나의 외부 복사본을 유지한다. 마지막으로, 증조할아버지 세대(4007)은 년 중 한번(예를 들어 년 중 마지막 토요일)에 생성되고 4주 동안 보관되는 하나의 현장 복사본을 유지하는 전체 모드 백업을 가진다. 또한, 증조할아버지 세대(4007)는 7년 동안 하나의 외부 복사본을 유지한다.
회사 달력에 따른 스케줄링(예를 들어 1달의 마지막 토요일, 1년의 마지막 토요일 등)의 대안으로서, 물리적 달력에 따른 스케줄링이 달성될 수 있다. 예를 들어, 작업은 그 달의 마지막 날, 그 해의 마지막 날, 그 달의 첫 번째 날 등에 일어나도록 스케줄될 수 있다. 이러한 날들은 토요일일 수 있거나 아닐 수 있다. 관련 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 임의의 유형의 스케줄링 및/또는 캘런더링(calendering)이 본 발명의 실시예들과 함께 활용되고 회사 달력 또는 물리적 달력의 활용은 단지 예로서 제공된다. 스케줄링의 다른 양상은 작업들이 실행될 주기들을 지정할 수 있는 것이다. 작업에 대한 실행 시간에 대한 주기를 스케줄링함으로써 사용자는 작업이 수행될 수 있는 특정 시간을 식별할 수 있다. 또한, 데이터 보호 시스템은, 작업이 지정된 시간까지 완료될 수 없다는 것을 보호 시스템이 알 수 있는 경우 선행 경고를 제공할 수 있다. 대안적으로, 작업이 실행 시간의 예정된 기간 동안 완료되지 않는 경우, 자동적으로 종료되고 가능하면 재스케줄된다.
관련 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 아들(4001), 아버지(4003), 할아버지(4005) 및 증조할아버지(4007)와 같은 세대들이 수정되어 도 40에 대해 설명된 보호 계획 상의 상이한 변화들을 활용할 수 있다. 유일한 요구 조건은, 부모가 동등하거나 자식의 수퍼세트(superset)이라는 것이다. 예를 들어, 아버지 세대가 전체 백업이면, 아들 세대는 전체, 차등 또는 증분 백업일 수 있다. 또한, 현장 또는 외부에 유지되는 복사본들의 개수는 0에서 사용자가 원하는 임의의 개수까지의 임의의 조합일 수 있다. 보유 기간 및 복사본이 만들어지는 빈도도 사용자에 의해 조정될 수 있다.
데이터의 장기간 보관을 위한 보관 방식을 생성하는 것 이외에, 데이터 보호 시스템은 진행 중인 할당, 회전, 저장(외부 저장) 및 매체의 폐기를 제공한다. 따라서, 본 발명의 일 실시예에 따르면, 매체 풀이 각 보호 그룹과 연관된다. 매체 풀은 매체의 컨테이너뿐만 아니라 할당 및 매체의 재활용을 제어하기 위해 다양한 의도가 위치하는 객체이다. 도 41에 대해 보다 상세하게 설명되는 것과 같이, 콜로케이션(co-location) 의도와 같은 매체 할당을 제어하기 위한 몇몇 유형의 의도들이 존재한다. 본 발명의 일 실시예에 따라 사용될 수 있는 콜로케이션 의도의 예들은: 작업 콜로케이션 의도, 아들 콜로케이션 의도 및/또는 아버지/아들 콜로케이션 의도들이다. 작업 콜로케이션 의도는 동일한 작업 내의 태스크들에 대해 동일한 매체를 사용하도록 시도한다. 이로 인해, 작업이 다수의 태스크를 가지고 이러한 태스크들로부터의 데이터가 단일 매체에 맞을 경우 매체의 탑재/탑재해제의 수를 줄인다. 아들의 콜로케이션 의도는 매체가 GGFS, GFS, FS 또는 S 보관 방식들 중 어느 하나의 아들 작업들에 대해 어떻게 사용되는지를 제어한다. 아들의 콜로케이션 의도가 지정되면, 사이클(주간 사이클 등)의 제1 아들 작업은 새로운 매체에서 시작될 것이나, 모든 후속 아들들은, 충분한 공간이 이용가능하지 않거나 포함하지 않는 경우가 아니면 동일한 매체에 첨부되도록 시도될 것이다. 아버지/아들 콜로케이션 의도의 사용은 주간 전체 백업 및 후속의 일별 차등 및 증분 백업들이 동일한 매체에 저장되도록 할 것이다.
도 41은 본 발명의 일 실시예에 따라서, 작업 콜로케이션 의도 및 아들 콜로케이션 의도 각각이 지정되면 데이터를 보관하기 위해 매체를 할당하는 플로우 루틴이다. 이해되는 바와 같이, 콜로케이션 의도들의 다른 조합들이 보관을 위해 매체를 할당하기 위해 지정될 수 있고 도 41에 대해 설명된 루틴은 단지 하나의 예이다. 매체 할당 루틴(4100)은 매체가 필요할때마다 수행된다. 매체 할당 루틴(4100)은 블록 4101에서 시작하고 판정 블록 4102에서 작업 콜로케이션이 지정되었는지에 대한 판정이 이루어진다. 작업 콜로케이션이 지정되지 않았다고 판정되면, 매체 할당 루틴은 판정 블록 4111로 진행하고 아래에 설명되는 바와 같이 계속된다. 그러나, 판정 블록 4102에서 작업 콜로케이션이 지정되었다고 판정되면, 판정 블록 4103에서, 매체를 할당하려고 시도하는 태스크가 대체 작업인지 여부에 대한 판정이 이루어진다. 대체 작업은 성공적으로 완료되지 않은 이전의 작업을 대체하는 작업이다. 판정 블록 4103에서 태스크가 대체 작업인 것이라고 판정되면, 블록 4105에서 루틴은 성공적으로 완료되지 않은 본래의 작업에 사용되고 할당되었던 동일한 물리적 매체를 할당하려고 시도한다.
그러나, 블록 4103에서 태스크가 대체 작업이 아니라고 판정되면, 판정 블록 4107에서 태스크가 작업으로부터의 제1 태스크인지에 대한 판정이 이루어진다. 태스크가 작업으로부터의 제1 태스크가 아니라고 판정되면, 블록 4109에서 매체 할당 루틴(4100)은 동일한 작업의 이전 태스크들에 대해 이미 할당된 매체를 할당하도록 시도한다.
그러나, 판정 블록 4107에서 태스크가 작업으로부터의 제1 태스크이라고 판정되면 판정 블록 4111에서 보호되고 있는 데이터세트가 제1 아들 데이터세트인지에 대해 판정이 이루어진다. 블록 4111에서 보호되고 있는 데이터세트가 제1 아들 데이터세트인 것으로 판정되면, 판정 블록 4112에서 FS 콜로케이션 의도가 지정되어 있는지에 대한 판정이 이루어진다. FS 콜로케이션 의도가 지정되어 있다고 판정되면, 블록 4113에서 매체 할당 루틴(4100)은 동일한 사이클의 아버지 데이터세트에 의해 사용된 매체를 할당하려고 시도한다. 본원에 설명된 사이클은, 보관 세트(일 별 또는 주 별 등)에 대한 스케줄된 시간 길이이다. 그러나, 판정 블록 4112에서 FS 콜로케이션이 지정되어 있지 않다고 판정되면, 루틴은 아래에 설명된 판정 블록 4115로 진행한다.
판정 블록 4111에서 데이터세트가 아들 데이터세트가 아니거나 또는 사이클의 제1 아들이 아니라고 판정되면, 판정 블록 4114에서 데이터세트가 제2 또는 최종 아들 데이터세트인지에 대해 판정된다. 데이터세트가 제2 또는 최종 아들 데이터세트라고 판정되면, 판정 블록 4118에서 FS 콜로케이션 의도 또는 S 콜로케이션 의도가 지정되어 있는지에 대해 판정된다. FS 콜로케이션 의도 또는 S 콜로케이션 의도가 지정되어 있다면, 블록 4116에서 매체 할당 루틴(4100)은 동일한 사이클의 최종 아들 데이터세트에 의해 사용된 매체를 할당하려고 시도한다. 그러나, 판정 블록 4118에서 FS 콜로케이션 의도도 S 콜로케이션 의도도 지정되지 않았다고 판정 되면, 루틴은 아래에 설명된 블록 4115로 진행한다.
그러나, 판정 블록 4114에서 데이터세트가 제2 또는 최종 아들 데이터세트가 아니라고 판정되면, 판정 블록 4115에서 동일한 생성으로부터의 재활용가능 매체가 이용가능한지에 대한 판정이 이루어진다. 예를 들어, 데이터세트가 아버지 데이터세트이면, 이용가능한 매체 상에 포함된 다른 아버지 데이터세트가 존재하는지에 대한 판정이 이루어진다. 판정 블록 4115에서 동일한 생성으로부터의 재활용가능 매체가 이용가능하다고 판정되면, 블록 4117에서 매체 할당 루틴(4100)은 동일한 생성으로부터 이용가능한 가장 오래된 재활용가능 매체를 선택하고 그 매체를 할당하려고 시도한다.
판정 블록 4115에서 동일한 생성으로부터의 이용가능한 매체가 존재하지 않다고 판정되거나 또는 판정 블록 4127에서 블록들 4105, 4109, 4113, 4117의 시도된 할당들 중 하나가 성공적으로 완료되지 않았다고 판정되면, 판정 블록 4119에서 비어있는 풀 내의 임의의 매체가 존재하는지에 대한 판정이 이루어진다. 판정 블록 4119에서 풀 내의 매체가 존재한다고 판정되면, 블록 4121에서 매체 할당 루틴(4100)은 풀로부터 빈 매체를 얻고 해당 매체가 할당에 사용된다.
마지막으로, 판정 블록 4119에서 특정 보호 그룹에 대한 풀 내의 빈 매체가 없다고 판정되면, 블록 4123에서 매체 할당 루틴(4100)은 추가 매체를 얻기 위해 시도한다. 보호 풀에 대해 추가 매체가 요구된다는 것을 사용자에게 통지하거나 또는 기존의 빈 매체 풀을 질의함으로써 추가 매체가 얻어질 수 있다. 빈 매체 풀은 다른 보호 그룹과 연관되지 않는 매체를 포함한다. 빈 매체가 빈 매체 풀 내에 이용가능하지 않다면, 사용자는 추가의 빈 매체가 저장 위치에 추가될 필요가 있고 빈 매체 풀에 할당될 필요가 있다는 것을 통지받는다. 매체 할당 루틴(4100)은 블록 4125에 예시된 바와 같이 추가 매체가 할당된 후에 완료되거나 또는 추가 매체가 할당될 수 없으면 실패한다.
도 41에 대해 설명된 의도 이외에, 추가 의도가 활용되어 매체 풀의 활동을 제어할 수 있다. 예를 들어, 매체 풀 내에서 유지될 수 있는 매체의 최대 개수를 지정하는 최대 한계 의도가 사용자에 의해 지정될 수 있다. 최대 한계 의도를 사용함으로써, 최대 한계를 넘어 풀에 매체를 불필요하게 추가하는 것을 방지한다. 유사하게, 최대 일별 한계 의도가 사용되어 24 시간 주기 동안 특정 풀에 할당되는 빈 매체의 항목 수를 제어할 수 있다. 최대 한계 및 최대 일별 한계를 활용하면, 빈 풀로부터 특정 풀로의 매체의 불필요하거나 우발적인 할당을 방지한다.
보관 보호에 대한 매체 할당에 대해 최소 임계 의도도 지정될 수 있다. 최소 임계 의도는 다양한 매체 풀들로의 할당을 위한 빈 매체 풀 내에 이용가능한 매체의 최소 개수를 지정한다. 빈 매체의 개수가 최소량 아래에 있으면, 그 후 사용자는 추가의 매체가 저장 위치에 추가되고 빈 매체 풀에 할당될 필요가 있다는 것을 통지받는다. 임의의 재활용가능 매체가 재사용되거나 또는 재할당을 위해 빈 매체 풀에 방출되기 전에 소거될 필요가 있는지에 대해 제어하는 매체 소거 의도도 지정될 수 있다.
작성 위치에서 저장 위치로 보호 객체를 복제 또는 복사하는 것은, 각 위치에 설치된 에이전트들의 쌍 사이에 발생한다. 에이전트 쌍의 액션들은 데이터 보 호기에 의해 제어된다. 예를 들어, 복제에 대해, 클론 에이전트(clone agent)가 작성 위치에 설치되고 복제 에이전트가 저장 위치에 설치된다. 클론 에이전트 및 복제 에이전트의 액션들은 데이터 보호기에 의해 제어된다. 또한, 데이터 이동기는 에이전트 쌍들 간의 통로 역할을 한다. 데이터 이동기는 에이전트들 간의 상호 인증을 보장하고 선택적으로 데이터 암호화, 복호화, 압축 또는 압축해제를 수행한다. 또한, 데이터 이동기는 데이터 전송 동안 데이터 보호 시스템에 의해 소비되는 네트워크 대역폭을 제한하기 위해 흐름 조절 제어를 포함한다.
도 42는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템의 블록도를 예시한다. 데이터 보호 시스템(4200)은 작성 위치(4203)에서 저장 위치(4205)로의 데이터(보호 객체)의 전송을 관리하기 위한 데이터 보호기(4201)를 포함한다. 상술한 바와 같이, 복제를 위해, 작성 위치(4203)는 클론 에이전트(4207) 및 작성 위치(4203)에서 저장 위치(4205)로의 데이터의 흐름을 제어하기 위한 데이터 이동기 부분(4209A)을 포함한다. 유사하게, 저장 위치(4205)는 복제 에이전트(4211) 및 작성 위치(4203)로부터 정보를 얻기 위한 데이터 이동기(4209B)의 제2 부분을 포함한다. 작성 위치(4203), 저장 위치(4205) 및 데이터 보호기(4201) 간의 상호작용이 사용되어 작성 위치(4203)로부터 저장 위치(4205)로 데이터를 전송하고 데이터 보호기(4201)와의 통신에 의해 해당 데이터의 전송의 유효성을 검증한다.
데이터는 작성 위치(4203)로부터 데이터 이동기(4209A)를 통해 통신 채널(4213)을 거쳐 데이터 이동기(4209B)를 통해 저장 위치(4205)로 전송된다. 데이터 보호 시스템은 작성 위치(4203)로부터 저장 위치(4205)로의 데이터의 전송을 모니 터하는 능력을 포함하고, 그러한 통신 채널이 고장나면, 인터럽트된 데이터 전송을 재개할 수 있는 능력을 가진다. 다시 시작하는 것과 대조적으로, 데이터의 전송을 재개하기 위해, 데이터 전송의 상태가 주기적으로 추적되고 저장될 필요가 있다. 이는, 작성 위치(4203)로부터 저장 위치(4205)로의 데이터 전송을 모니터링하는 데이터 보호기(4201)에 의해 달성된다.
데이터는 통신 채널(4213)을 통해 데이터 블록 또는 레코드의 형태로 전달된다. 그러한 통신 시스템에서, 데이터의 일부는 작성 위치(4203)에 의해 보유되고 데이터의 일부는 저장 위치(4205)에 의해 보유된다. 통신 채널이 고장나면, 데이터 전송이 인터럽트되고 전송 상태는 동기화를 상실할 수 있다. 예를 들어, 작성 위치(4203)는 저장 위치(4205)에 의해 성공적으로 수신된 레코드들의 수와 다른 개수의 레코드를 전송할 수 있다. 이러한 문제를 해결하기 위해, 데이터 보호기(4201)는 데이터 전송이 중지 또는 시작될 때 작성 위치(4203) 및 저장 위치(4205)에게 개별적으로 지시함으로써 데이터 전송 프로세스를 모니터하고 제어한다.
데이터의 보호를 위해, 작성 위치(4203)에 위치한 클론 에이전트(4207)는 데이터 이동기(4209)를 통해 저장 위치(4205)에 위치한 복제 에이전트(4211)로 데이터를 전송한다. 해당 데이터는, 작성 위치에 위치한 보호 객체들의 복사본 또는 복제를 생성하기 위해, 통신 채널(4213)을 통해 데이터 레코드들로서 전송된다. 클론 에이전트 및 복제 에이전트는 데이터 보호기(4201)와 데이터 전송 상태들을 본원에서 레코드 체크포인트들로 불리우는 특별한 데이터 블록들로서 통신한다. 레코드 체크포인트들은 데이터 보호기(4201)에 의해 수신되고 데이터베이스에 저장 된다. 또한, 데이터 보호기(4201)는 클론 에이전트 및 복제 에이전트와 명령/커맨드들을 통신한다.
일반적으로, 작성 위치의 클론 에이전트(4207)가 통신 채널(4213)을 통해 전송할 2가지 유형의 데이터 레코드가 존재한다. 데이터 레코드의 제1 유형은 작성 위치에 위치한 보호 객체들에 대해 이루어진 변경들을 표현한다. 데이터 레코드의 제2 유형은 보호 객체 데이터에 대한 정보(메타데이터)를 포함한다. 메타데이터를 포함하는 레코드들은 데이터 보호 시스템에 의해 생성된다. 아래에 설명되는 바와 같이, 메타데이터는 전송되고 저장 위치에 저장되는 데이터의 복사본을 검증하는데 사용되고 예를 들어 데이터의 체크섬(checksum)일 수 있다.
클론 에이전트(도 43 - 47)의 변경 로그로부터 복제 에이전트(도 43 - 47)의 스필 로그(spill log)로 전송되는 데이터 레코드 스트림에 특별한 데이터 마커들(레코드 체크포인트들)을 삽입함으로써 작성 위치(4203)로부터의 데이터 전송의 상태는 클론 에이전트(4207)로부터 전달된다. 실제 실시예에서, 레코드 체크포인트는, 작성 위치의 데이터 이동기(4209A)에 의해 전송되는 데이터 스트림의 마지막에 첨부된다. 대안적인 실시예에서, 레코드 체크포인트는 변경 로그에 추가될 수 있고 데이터의 항목으로서 데이터 스트림과 함께 전송된다. 저장 위치의 데이터 이동기(4209B)에 의해 데이터 스트림을 수신한 경우, 데이터 및 임의의 레코드 체크포인트들이 스필 로그에 저장된다.
복제 에이전트(4211)가 데이터 스트림 내의 이러한 레코드 체크포인트들을 만나는 경우, 이러한 레코드 체크포인트들을 데이터 보호기(4201)에 전달한다. 이 외에, 복제 에이전트는 자신의 레코드 체크포인트들을 작성하고 이들도 데이터 보호기(4201)에 전달한다. 클론 에이전트(4207) 및 복제 에이전트(4211) 양자에 의해 생성된 레코드 체크포인트 내에 포함된 정보는 동작의 시작 또는 정지에 대한 커맨드들을 전송할 때 데이터 보호기에 의해 사용된다.
데이터 보호기(4201)가 레코드 체크포인트들 중 임의의 것을 수신하는 경우, 자동적으로 그들을 데이터베이스에 저장하여 통신 고장, 프로세스들 및 시스템 재시작에 대해 데이터 보호 시스템을 복원력이 있게 한다.
본 발명의 실제 실시예에서, 클론 에이전트(4207)는 "Class C 체크포인트(Class C checkpoints)" 및 "Class A 체크포인트"로 본원에서 불리우는 2가지 유형의 체크포인트를 생성한다. Class C 체크포인트들은 클론 에이전트(4207)에서 복제 에이전트(4211)로 송신된 데이터 레코드의 상태를 표현한다. Class A 체크포인트는 메타데이터 레코드들을 생성하는 전체 프로세스 내의 위치를 표현한다.
복제 에이전트(4211)는 본원에서 "Class B 체크포인트"로 불리우는 한가지 유형의 레코드 체크포인트를 생성한다. Class B 체크포인트는 복제 에이전트(4211)에 의해 수신되고 적용된 데이터 레코드들을 식별한다.
Class C 및 Class B 체크포인트들은 데이터 체크포인트들이다. 이들은 클론 에이전트(4207)로부터 복제 에이전트(4211)로의 데이터 전송을 재개하고 복제 에이전트(4211) 상의 수신된 데이터 레코드들의 적용을 재개하는데 사용된다. Class A 체크포인트들은 메타데이터 체크포인트들이다. 이들은 메타데이터를 생성하는 클론 에이전트(4207) 상의 장기간 실행하는 프로세스들을 모니터링하는 데 사용된다. Class A 체크포인트들을 생성하면, 인터럽트된 데이터 전송의 경우 이러한 장기간 실행하는 프로세스들에 대해 반복될 작업량이 저감된다.
보다 상세하게, Class C 체크포인트들은 클론 에이전트(4207) 시스템 및 복제 에이전트(4211) 시스템 상의 데이터 레코드 스트림 내의 위치에 대한 포인터들을 포함한다. Class C 체크포인트들은 클론 에이전트(4207)에 의해 생성되고 복제 에이전트(4211)로 전달된다. 복제 에이전트(4211)는 Class C 체크 포인트를 자신의 스필 로그 내의 마지막으로 수신된 레코드의 포인터로 갱신한다.
Class B 체크포인트는 저장 위치(4205)에서의 복제 에이전트(4211)에 의해 최종적으로 적용된 데이터 레코드에 대한 포인터들을 포함한다. 데이터 보호기(4201)가 Class B 체크포인트를 수신하는 경우, Class B 체크포인트 이전의 모든 데이터 블록들이 저장 위치에 저장된 데이터의 복제에 적용되었다는 것을 데이터 보호기(4201)에 확인시킨다.
Class A 체크포인트는 메타데이터를 생성하는 동안 클론 에이전트(4207)에 의해 처리된 보호 데이터의 양을 나타낸다. 복제 에이전트에 의해 Class A 체크포인트가 수신되는 경우, 복제 에이전트는 필요한 경우 자신의 메타데이터를 추가하고 Class A 체크포인트를 데이터 보호기에 전달한다. 데이터 보호기가 Class A 체크포인트를 수신하는 경우, 체크포인트에 포함된 위치까지 메타데이터 생성이 완료된다는 것을 의미한다. 일 실시예에서, Class A 체크포인트들은 순차적으로 참조되어(예를 들어 순차적으로 순번화됨) 데이터 보호 시스템이 Class A 체크포인트가 누락된지 여부를 판정할 수 있게 한다. Class A 체크포인트가 누락되었다면, 차이 리스트(difference list)의 엘리먼트들이 누락될 수 있기 때문에 검증이 재시작될 것이다. 아래에 설명되는 바와 같이, 차이 리스트는 복제와 매칭하지 않는 보호 객체를 식별하는 정보를 포함한다. 이러한 객체들은 작성 위치에서 생성된 메타데이터와 저장 위치에서 생성된 메타데이터를 비교함으로써 식별된다.
상술한 3개의 체크포인트 유형 이외에, 데이터 보호기(4201)는 특별한 마커 토큰(marker token)을 생성하고 데이터 레코드 스트림에 삽입되도록 작성 위치(4203)에 위치한 클론 에이전트로 이를 송신한다. 그 후 이러한 토큰은 클론 에이전트(4207)에 의해 통신 채널(4213)을 거쳐 복제 에이전트(4211)로 전송된다. 수신 시, 복제 에이전트(4211)는 데이터 보호기(4201)로 토큰을 다시 전송한다. 마커 토큰의 목적은 메타데이터 생성을 재개하기 이전에 임의의 데이터 통신 전송으로부터 모든 Class A 체크포인트들을 제거하는 것이다. 모든 Class A 체크포인트들을 시스템을 통해 전달함으로써, 클론 에이전트(4207)에 의해 이미 생성된 메타데이터가 전송되고 그 후에만 메타데이터 생성이 재개된다. 이러한 것의 이점은, 데이터 보호기(4201)가 마커 토큰을 수신하기 이전에 모든 메타데이터를 볼 수 있기 때문에, 데이터 레코드 전송 로그가 넘치는 것을 방지하고(메타데이터 생성 프로세스가 클론 에이전트(4207)가 송신할 수 있는 것보다 훨씬 빠른 경우) 동일한 메타데이터가 여러 번 생성되는 것을 회피한다.
도 43 내지 도44는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 수행되는 데이터 전송 모니터링 루틴의 흐름도를 예시한다. 상술한 바와 같이, 작성 위치(4303)와 저장 위치(4305) 간의 데이터 전송은, 사용자 또는 보호 데이터 에 변경을 가하는 다른 개인 또는 스케줄된 작업 실행 시간에 응답하여 개시된다. 사용자에 의해 이루어지는 보호 데이터에 대한 변경에 응답하여, 작성 위치(4303)는 변경 로그(4307)에 보호 데이터에 대한 변경의 레코드를 기록한다. 예를 들어, R1, R2, R3, R4, R5, R6은 각각 작성 위치(4303)의 클론 에이전트에 의해 변경 로그(4307)에 기록된 변경 레코드이다. 주기적으로, 변경 로그(4307) 내에 포함된 레코드들은 데이터 이동기에 의해 변경 로그(4307)로부터 끌려 나오고 함께 일괄 처리되고 저장 위치(4305)로 전송된다. 이외에도, 클론 에이전트는, 전송되는 최종 레코드의 전송된 변경 로그(4307) 내의 위치에 대한 포인터를 포함하는 Class C 체크포인트를 생성하고 Class C 체크포인트를 전송 배치(batch)의 끝에 첨부한다. 예를 들어, 클론 에이전트는 변경 로그(4307)로부터 레코드 R1, R2, R3을 끌어내고 이들 레코드들을 함께 일괄 처리하고 그 배치를 작성 위치(4305)에 전송한다. R3의 변경 로그(4307) 내의 위치에 대한 포인터 - 이 경우 변경 로그 위치(4)임 - 를 포함하는 Class C 체크포인트(4311)가 생성된다. Class C 체크포인트는 작성 위치(4305)에 전송되는 배치의 끝에 첨부된다.
상기 예는, Class C 체크포인트가 생성되고 데이터의 매 전송 배치와 함께 전송되는 것을 예시하나, 대안적 실시예에서, Class C 체크포인트들은 전송되는 데이터의 양에 기초하여 생성될 수 있다. 그러한 실시예에서, Class C 체크포인트는, 데이터 양이 미리 정의된 최소 전송 크기를 초과하는 경우에만 생성될 수 있다. 또 다른 실시예에서, Class C 체크포인트들의 생성 및 전송은 이전의 Class C 체크포인트가 생성되고 전송된 이후의 시간에 의존적일 수 있다. 또한, Class C 체크포인트의 생성 및 전송은 소정 수의 데이터 전송으로 생성 및 전송될 수 있다. 예를 들어, Class C 체크포인트들은 매 5번째 데이터 전송에 대해 생성 및 전송될 수 있다. 또한, 체크포인트들을 생성 및 전송하기 위한 기술들의 임의의 조합이 본 발명의 실시예들과 함께 활용될 수 있다. 예를 들어, Class C 체크포인트들은 데이터가 최소 크기를 초과하거나 또는 매 5번째 전송시에 생성될 수 있다.
저장 위치(4305)에 위치한 복제 에이전트는 데이터 이동기를 통해 전송된 레코드들 및 Class C 체크포인트를 수신하고 전송된 레코드들 및 Class C 체크포인트를 스필 로그(4313)에 저장한다. 또한, Class C 체크포인트(4311) 수신 시, 저장 위치(4305)의 복제 에이전트는 Class C 체크포인트의 스필 로그(4313) 내의 위치를 식별하는 Class C 체크포인트에 제2 포인터를 추가하며, 이 경우 Class C 체크포인트(4311)에 추가된 포인터는 스필 로그 위치(106)에 대한 포인터이다. 따라서, Class C 체크포인트(4313)는 변경 로그(4307)의 최종 전송 위치 및 스필 로그(4313) 내의 Class C 체크포인트의 위치 양자에 대한 포인터를 포함한다. 그 후, Class C 체크포인트(4315)는 복제 에이전트에 의해 데이터 보호기(4301)로 전달된다. 데이터 보호기(4301)는 Class C 체크포인트를 데이터베이스에 기록한다. 대안적 실시예에서, Class C 체크포인트는 스필 로그에 저장되지 않고 대신 복제 에이전트가 배치와 함께 전송된 최종 변경 레코드를 식별하는 Class C 체크포인트에 포인터를 추가하고 Class C 체크포인트를 데이터 보호기(4301)로 전달한다.
도 44를 참조하면, 데이터 보호기(4301)는, 저장 위치(4305)로부터 Class C 체크포인트의 수신 시, Class C 체크포인트를 데이터 보호기의 데이터베이스에 저장하고 Class C 체크포인트 확인을 작성 위치(4303)에 전송한다. 작성 위치(4303)에 의한 Class C 체크포인트 확인의 수신에 의해 Class C 체크포인트 이전에 전송된 모든 레코드들이 저장 위치(4305)에 의해 수신되었다는 것과 이러한 전송된 레코드들이 변경 로그(4307)로부터 퍼지(purge)될 수 있다는 것을 작성 위치에 확인시킨다.
레코드들 수신하고 이러한 레코드를 스필 로그(4313)에 저장하는 것 이외에, 저장 위치(4305)에 위치한 복제 에이전트는 수신된 레코드를 저장 위치(4305)에 위치한 데이터의 복제에 적용하기 시작한다. 소정의 포인트에서, 복제 에이전트는 복제 데이터(4317)에 적용된 최종 레코드의 스필 로그(4313) 내의 위치에 대한 포인터를 포함하는 Class B 체크포인트를 생성한다. 소정의 포인트는 예를 들어 처리된 데이터양, 최종 Class B 체크포인트 이후의 시간, 또는 이들 둘의 조합에 기초할 수 있으나, 이에 한정되지 않는다. 예를 들어, 복제 에이전트는 스필 로그(4313) 위치(103)에서 R1을 적용하고, 스필 로그(4313) 위치(104)에서 R2를 적용하고 복제 데이터(4317)에 R2를 적용한 후 스필 로그 위치(104)에 대한 참조를 포함하는 Class B 체크포인트를 생성한다. 생성된 Class B 체크포인트(4319)는 저장 위치(4305) 상의 복제 에이전트에 의해 데이터 보호기(4301)로 전달된다. 데이터 보호기(4301)는 Class B 체크포인트를 데이터베이스에 저장하여 데이터 전송의 인터럽션의 경우 그 레코드를 사용할 수 있게 한다.
또한, 저장 위치(4305)로부터의 Class B 체크포인트의 수신에 응답하여, 데이터 보호기(4301)는 Class B 체크포인트를 자신의 데이터베이스에 저장하고 Class B 체크포인트 확인을 다시 저장 위치(4305)로 전송한다. 저장 위치(4305)에 의한 Class B 체크포인트 확인의 수신으로 인해, 복제 데이터(4317)에 적용된 레코드들의 최종 위치를 데이터 보호기가 기록했고 이러한 레코드들은 스필 로그(4313)에서 퍼지될 수 있다는 것을 저장 위치(4305)에 확인시킨다.
레코드를 전송하고 이들 레코드를 저장 위치의 복제 데이터에 적용하고 체크포인트들을 순환시키는 프로세스는 작성 위치(4303)로부터 저장 위치(4305)로의 레코드의 전송의 정확성을 확인시키고 고장의 결과 데이터 전송을 재시작하는데 사용될 수 있는 정보를 데이터 보호기(4301)에 제공한다.
도 45는 본 발명의 일 실시예에 따라서, 작성 위치(4303)로부터 저장 위치(4305)로의 변경 레코드들의 전송을 재시작하는 데이터 보호 시스템의 흐름도를 예시한다. 설명을 위해, 시스템이 작성 위치(4303)로부터 저장 위치(4305)로 데이터를 전송시켰고 소정의 이유로 인해 전송이 인터럽트되고 시스템이 해당 전송을 재개하고 있다고 가정할 것이다.
데이터의 전송을 재개하기 위해, 데이터 보호기(4301)는 데이터 보호기(4301)의 데이터베이스에 저장된 최종 기록된 Class C 및 Class B 체크포인트들을 참조하여 작성 위치(4303) 및 저장 위치(4305)에 대한 재시작 위치들을 식별한다. 예를 들어, B2의 기록된 Class B 체크포인트를 참조하면, 데이터 보호기(4301)는 최 종 레코드가 적용된 스필 로그(4313) 내의 위치가 위치(107)이었다고 결정한다. 따라서, 데이터 보호기(4301)는 스필 로그 위치(108)로부터의 레코드들 적용하기 시작하고 스필 로그 위치(111) 이후에 다음에 수신되는 데이터 레코드(즉, 스필 로그 위치(112))를 저장하도록 저장 위치(4305)의 복제 에이전트에게 명령하는, 저장 위치로 전송되는 커맨드를 생성한다. 복제 에이전트가 수신된 레코드(112)를 저장하기 시작하는 위치는 데이터 보호기(4301)의 데이터베이스 내에 기록된 최종 Class C 체크포인트를 참조함으로써 식별된다. 이러한 예에서, 데이터 보호기(4301)는, C3의 Class C 체크포인트를 참조하면, 저장 위치(4305)에 의해 수신된 최종적으로 알려진 Class C 체크포인트가 스필 로그 위치(111)에 위치된다는 것을 식별한다.
유사하게, 데이터 보호기(4301)는, C3의 최종 수신된 Class C 체크포인트를 참조하면, 저장 위치(4305)에 의해 성공적으로 수신되었다고 알려진 작성 위치(4303)에 의해 전송된 최종 레코드가 변경 로그 위치(9)에 위치되었다는 것을 확인한다. 따라서, 데이터 보호기(4301)는 레코드(10)로 시작하는 저장 위치(4305)에 레코드를 송신하기 시작하도록 작성 위치(4303)에 위치하는 클론 에이전트에게 명령하는, 작성 위치(4303)에 전송되는 커맨드를 생성한다.
전체적으로, 데이터 레코드의 전송을 효율적으로 재개하기 위해, 데이터 보호기(4301)는 3개의 커맨드를 생성 및 송신한다. 변경 로그(4307) 내의 전송 시작점을 식별하는 레코드 송신 개시 커맨드가 생성되고 작성 위치(4303)에 전송된다. 적용을 재개하는 스필 로그(4313) 내의 위치를 식별하는 레코드 적용 개시 커맨드가 저장 위치(4305)에 송신된다. 새롭게 수신된 레코드들이 저장될 장소에 대한 스필 로그(4313) 내의 위치를 식별하는 제3 커맨드인, 수신된 레코드 저장 개시 커맨드도 생성되고 저장 위치(4305)에 송신된다.
Class B 및 Class C와 같은 체크포인트들을 참조하고 레코드 적용 개시 커맨드, 레코드 송신 개시 커맨드, 및 수신된 레코드 저장 개시 커맨드를 생성하면, 데이터의 전송을 처음부터 개시할 필요가 없고 임의의 데이터를 소실하지 않고 데이터 전송 내의 알려진 체크포인트들로부터 재시작함으로써 데이터 보호 시스템이 스스로 재동기화할 수 있게 한다.
상술한 바와 같이, 작성 위치(4303)로부터 저장 위치(4305)로의 변경 레코드의 전송을 모니터링하는 것 이외에, 데이터 보호 시스템은 저장 위치(4305)에 위치한 복제 데이터(4317)의 무결성을 검증할 수 있다. 본 발명의 실제 실시예에서, 저장 위치(4305)의 레코드와 비교되는 작성 위치(4303)로부터의 검증 레코드를 전송함으로써 데이터의 검증이 달성된다.
도 46 및 47은 본 발명의 일 실시예에 따라서, 복제(4317)를 검증하기 위한 검증 루틴의 흐름도를 예시한다. 검증 루틴을 시작하기 위해, 데이터 보호기(4301)는 검증을 시작하도록 작성 위치(4303)로 발행되는 커맨드를 생성한다. 검증 개시 커맨드의 수신에 응답하여, 작성 위치(4303)에서의 클론 에이전트는 작성 위치(4303)에 위치한 보호 객체 각각에 대한 메타데이터를 생성하기 시작한다. 이러한 메타데이타는 변경 로그(4307)에 레코드로 추가되고 변경 레코드들과 함께 전 송된다. 레코드들 및 메타데이타는 상술한 바와 같이 변경 로그(4307)로부터 저장 위치(4305)로 전송된다. 변경 레코드 수신 시, 상술한 바와 같이 저장 위치(4305)에 위치한 복제 에이전트는 레코드를 복제 데이터(4317)에 적용한다. V1과 같은 메타데이터 레코드 적용 시, 저장 위치(4305)에 위치한 복제 에이전트는 복제 데이터(4317)의 동일한 부분에 대한 메타데이터를 계산한다. 메타데이터의 2개 항목이 비교되어 복제 데이터의 해당 부분의 무결성 및 유효성이 확인된다. 메타데이타가 매칭하지 않으면, 복제 에이전트는 복제(4317)와 매칭하지 않는 보호 객체를 식별하는 차이 리스트를 생성한다.
관련 분야의 통상의 기술을 가진 자가 이해하는 바와 같이, 메타데이터를 활용하여 복제 데이터와 보호 데이터를 비교하는 것은, 비교될 데이터에 대한 체크섬들을 생성하거나 및/또는 데이터에 대한, 최종 변경 시간과 같은 인덱스들을 식별하는 임의의 다른 것을 비교함으로써 달성될 수 있다.
V1 및 V2와 같은 메타데이터 레코드 세트가 변경 로그(4307)에 포함된 이후의 소정의 때에, 작성 위치(4303)에 위치한 클론 에이전트는 변경 로그(4307)에 레코드로서 추가되는 Class A 체크포인트를 생성한다. A1과 같은 Class A 체크포인트는 통신 채널을 통해 변경 레코드 및 메타데이타 레코드와 함께 저장 위치(4305)로 전송된다.
저장 위치(4305)의 복제 에이전트에 의한 Class A 체크포인트의 수신 시, 복제 에이전트는 Class A 체크포인트 및 메타데이터 비교 결과로서 생성된 임의의 차 이 리스트를 데이터 보호기(4301)로 전달한다. 도 46에 예시된 바와 같이, Class A 체크포인트는 퍼지될 때까지 스필 로그 내에 유지될 수 있다. 대안적으로, Class A 체크포인트 수신 시, 차이 리스트와 함께 전달될 수 있고 스필 로그에는 저장되지 않을 수 있다.
데이터 보호기(4301)는 Class A 체크포인트 및 차이 리스트를 수신하고 Class A 체크포인트 및 차이 리스트를 데이터베이스에 기록한다. 차이 리스트는 작성 위치로 전달되고 식별된 보호 객체는 재복제되고 저장 위치로 재전송된다. 식별된 보호 객체의 재복제 및 재전송은 차이 리스트를 수신하는 것에 응답하여 발생할 수 있거나 또는 소정의 나중의 시점에서 발생하도록 스케줄될 수 있다(예를 들어, 복제의 검증이 완료된 후).
Class A 체크포인트는 메타데이터가 계산된 것까지 특정 보호 객체의 식별을 자신 내에 포함한다. 예를 들어, 메타데이타가 서버 1 상의 C:\에 위치하는 보호 객체에 대해 생성되고, 메타데이터가 생성된 최종 보호 객체가 서버 1 상의 C:\file50이면, Class A 체크포인트는 서버 1 상의 C:\file50에 대한 참조를 포함한다. 이러한 정보는 데이터 보호기(4301)에 의해 데이터베이스에 저장되어 데이터 전송의 인터럽션의 경우에 검증을 재개시하는 참조점을 가질 수 있다.
도 47은 본 발명의 일 실시예에 따라서, 검증이 특정 때에 인터럽트되었을 때 검증을 재개시하기 위해 데이터 보호 시스템에 의해 생성되는 검증 루틴의 재개시를 기술하는 흐름도를 예시한다. 이를 설명하기 위해, 데이터 전송이 인터럽트되었고 지금 재개하고 있다고 먼저 가정한다. 데이터 전송을 재개할 때, 데이터 보호기(4301)는 도 47에서 Ap로 예시된 마커 토큰을 생성 및 송신한다. 마커 토큰은, 데이터의 검증이 재개되기 전에 시스템에서 모든 메타데이터 및 Class A 체크포인트들을 소거하기 위해 시스템을 통해 순환되는 데이터 보호기(4301)에 의해 생성되는 고유 토큰이다.
마커 Ap는 데이터 보호기(4301)로부터 작성 위치(4303)으로 전송되고 작성 위치(4303)에 위치한 클론 에이전트에 의해 변경 로그(4307)에 포함된다. 작성 위치(4303)에 의한 마커 토큰 Ap의 수신 시, 클론 에이전트는 마커 Ap를 변경 로그(4307)에 추가하고 이어서 마커 Ap를 저장 위치(4305)로 전송한다. 저장 위치(4305)에 의한 마커 토큰 Ap의 수신 시, 저장 위치(4305)에 위치한 복제 에이전트는 마커 토큰 Ap를 다시 데이터 보호기(4301)로 전달한다.
데이터 보호기(4301)에 의한 마커 토큰 Ap의 수신 시, 데이터 보호기(4301)는 이전에 생성되었던 시스템에 대한 모든 메타데이타가 작성 위치(4303)로부터 저장 위치(4305)로 전송되었다는 것을 알게 된다. 데이터 보호기(4301)는, Class A 체크포인트들의 데이터베이스를 참조하면, 전송된 최종 Class A 체크포인트를 식별하고 작성 위치가 데이터의 검증을 재개시하는 위치를 포함하는 재개시 커맨드를 준비한다. 데이터 보호기(4301)는 검증 재개시 커맨드 및 데이터의 검증이 재개되는 포인트의 식별을 작성 위치(4303)에 전송한다.
예를 들어, 도 47을 참조하면, 데이터 보호기(4301)는 이전의 검증 루틴 동 안 메타데이터가 계산되었던 최종 보호 객체가 서버 1 상의 C:\file1003이었다는 것을 자신의 데이터베이스로부터 확인한다. 따라서, 데이터 보호기(4301)는, 서버 1의 볼륨 C: 상의 file1003까지의 모든 파일들에 대해 메타데이터가 생성되고 전송되었다는 것을 알 수 있고, 그 결과 서버 1 상의 C:\file1003 이후의 메타데이터의 생성을 재개시하기 위해 작성 위치(4303)에 명령하는 검증 재개시 커맨드를 생성한다.
도 48a는 본 발명의 일 실시예에 따라서, 작성 위치에 의해 수신된 커맨드를 처리하기 위한 커맨드 처리 루틴의 흐름도이다. 커맨드 처리 루틴(4800)은 블록 4801에서 시작하고 판정 블록 4803에서 수신된 커맨드가 "전송 개시" 커맨드인지 여부에 대한 판정이 이루어진다. 상술한 바와 같이, 데이터 보호 시스템을 통해 배치되는 에이전트들을 제어하기 위해 데이터 보호기에 의해 커맨드들이 생성된다. 판정 블록 4803에서 수신된 커맨드가 "전송 개시" 커맨드라고 판정되면, 블록 4805에서 전송 개시점이 식별된다. 전송 개시점은 "전송 개시" 커맨드 내에 포함될 수 있다. 전송 개시점은 데이터 전송이 시작되는 변경 로그 내의 위치를 식별한다.
또한, 블록 4807에서, 전송 종료점이 식별된다. 전송 종료점은 다양한 방식으로 결정될 수 있다. 예를 들어, 변경 로그 내에 포함된 최종 레코드를 발견하고 이를 전송 종료점으로 사용하고, 전송 데이터의 최대 크기를 결정하고 해당 크기에 도달하는 로그 내의 포인트를 식별하는 것 등에 의해 전송 종료점이 식별될 수 있다. 전송 개시점 및 종료점의 식별의 수신 시, 블록 4809에서 커맨드 처리 루틴(4800)은 제어를 데이터 전송 플로우(도 48b)에 전달한다.
다시 판정 블록 4803을 참조하면, 수신된 커맨드가 "전송 개시" 커맨드가 아니라고 판정되면, 판정 블록 4811에서 수신된 커맨드가 "검증 개시" 커맨드인지 판정된다. 판정 블록 4811에서 커맨드가 "검증 개시" 커맨드라고 판정되면, 블록 4813에서 검증이 시작하는 작성 위치 내의 위치가 식별된다. 전송에 대한 개시점 및 종료점에 대해, 그 위치는 검증 개시 커맨드에 포함될 수 있거나 또는 개별적으로 얻어질 수 있다. 검증이 시작하는 작성 위치 내의 위치의 식별 시, 커맨드 처리 루틴(4800)은 블록 4815에서 예시된 바와 같이 제어를 검증 루틴(도 48c)에 전달한다.
판정 블록 4811에서 수신된 커맨드가 "검증 개시" 커맨드가 아니라고 판정되면, 판정 블록 4817에서 수신된 커맨드가 C 체크포인트 확인인지에 대해 판정된다. C 체크포인트 확인이라면, 확인되었던 C 체크포인트 이전에 전송된 변경 로그 내에 포함된 레코드들은 블록 4819에서 예시된 바와 같이 변경 로그에서 퍼지되고, 루틴은 블록 4821에서 완료한다. 그러나, 판정 블록 4817에서 수신된 체크포인트가 C 체크포인트 확인이 아니라고 판정되면, 그 후 수신된 커맨드는 마커 토큰 Ap이다. 블록 4823에서, 마커 토큰 Ap는 변경 로그 내에 배치되고 루틴은 블록 4825에서 완료한다.
도 48b는 본 발명의 일 실시예에 따라서, 작성 위치로부터 저장 위치로 변경 레코드를 전송하는 데이터 전송 루틴의 흐름도이다. 데이터 전송 루틴(4830)은 블록 4831에서 시작하고 블록 4833에서 변경 로그로부터 얻어진 변경 레코드 그룹이 전송을 위해 함께 처리된다. 레코드의 배치(batch)는 임의의 개수의 레코드일 수 있다. 변경이 발생한 후, 소정의 때에 변경 로그의 최대 크기에 도달하는 것에 응답하여 레코드 배치를 생성하는 것이 발생할 수 있다. 관련 분야의 통상의 기술을 가진 자가 이해하는 바와 같이, 레코드의 배치의 생성을 위한 타이밍 및 제공된 레코드 배치의 크기는 단순한 예일 뿐이고 레코드 배치를 생성하는데 임의의 타이밍 및 크기가 본 발명의 실시예들과 함께 활용될 수 있다. 예를 들어, 레코드 배치는 단지 하나의 레코드만을 포함할 수 있고, 데이터 보호 시스템에 변경이 발생할 때마다 생성될 수 있다.
블록 4835에서, 레코드 배치는 작성 위치로부터 전송된다. 레코드 배치를 전송하는 것 이외에, Class C 체크포인트가 생성되고 레코드 배치의 끝에 첨부되고 레코드 배치의 일부로서 함께 전송된다. 상술한 바와 같이, Class C 체크포인트들은 레코드 배치 내에 포함된 최종 변경 레코드의 변경 로그 내의 위치에 대한 포인터들을 포함한다. 판정 블록 4837에서, 변경 로그 내에 추가 레코드들이 존재하는지에 대한 판정이 이루어진다. 판정 블록 4837에서 추가의 레코드가 존재한다고 판정되면, 데이터 전송 루틴(4830)은 제어를 블록 4833으로 되돌리고 루틴은 계속된다. 그러나, 판정 블록 4837에서 전송할 레코드가 더 이상 존재하지 않는다고 판정되면, 블록 4839에 예시된 바와 같이, 루틴은 완료된다.
도 48c는 본 발명의 일 실시예에 따라서, 데이터를 검증하기 위한 검증 루틴의 흐름도이다. 검증 루틴(4840)은 블록 4841에서 시작하고 판정 블록 4843에서 검증이 필요한 작성 위치 내의 임의의 객체들이 존재하는지에 대한 판정이 이루어 진다. 판정 블록 4843에서 검증할 추가 객체들이 존재하지 않는다고 판정되면 블록 4844로 예시된 바와 같이 루틴은 종료한다. 그러나, 검증할 추가 객체들이 존재한다고 판정되면, 블록 4845에서 객체에 대한 메타데이터가 생성된다. 특히, 메타데이터가 생성될 수 있는 제1 객체는 커맨드 처리 루틴(4800)(도 48a)의 블록 4813에서 식별된 시작 위치에 대응하는 객체이다. 메타데이터 생성 시, 해당 메타데이터는 메타 레코드(V)의 형태로 변경 로그에 추가된다.
판정 블록 4847에서 Class A 체크포인트가 생성되고 변경 로그에 추가되는지에 대한 판정이 이루어진다. 상술한 바와 같이, Class A 체크포인트들은 메타데이터 레코드를 생성 및 전송하는 전체 프로세스 내의 위치를 표현하고 데이터 검증을 재개시하는데 사용될 수 있다. 또한, Class A 체크포인트들은 순차적인 마커들을 포함하여 전송된 Class A 체크포인트들 중 하나가 수신되지 않은지를 판정할 수 있다. 판정 블록 4847에서 Class A 체크포인트가 생성될 것으로 판정되면, 블록 4849에서 체크포인트가 생성되고, 일괄 처리되고 변경 로그 내에 포함된 다른 레코드와 함께 전송될 레코드로서 변경 로그에 추가된다. 변경 로그에 Class A 체크포인트 추가 시, 검증 루틴(4840)은 제어를 판정 블록(4843)으로 되돌리고 루틴은 계속된다. 그러나, 판정 블록 4847에서 Class A 체크포인트가 생성되지 않는다고 판정되면, 검증 루틴(4840)은 판정 블록(4843)으로 되돌아가서 계속된다.
도 49a는 본 발명의 일 실시예에 따라서, 저장 위치에 의해 수신되는 커맨드를 처리하기 위한 커맨드 처리 루틴의 흐름도이다. 커맨드 처리 루틴(4900)은 블록 4901에서 시작하고 판정 블록 4903에서 수신된 커맨드가 "수신 개시" 커맨드인 지에 대한 판정이 이루어진다. "수신 개시" 커맨드는 작성 위치로부터 전송되고 있는 레코드를 수신하기 시작하는 저장 위치에 대한 명령이다. 판정 블록 4903에서 커맨드가 "수신 개시" 커맨드인 것으로 판정되면, 블록 4905에서 수신된 레코드를 저장하기 위한 스필 로그 내의 개시점이 식별된다. 스필 로그 내의 위치의 식별은, "수신 개시" 커맨드 내에 포함된 위치를 수신하거나 또는 별개의 명령에 의해 결정될 수 있다. 수신된 레코드가 저장되기 시작하는 위치에 대한 스필 로그 내의 위치의 식별 시, 커맨드 처리 루틴(4900)은 블록 4907에 예시된 바와 같이 레코드 수신 루틴(도 49b)에 제어를 전달한다.
판정 블록 4903을 다시 참조하면, 수신된 커맨드가 "수신 개시" 커맨드이지 않다고 판정되면, 판정 블록 4909에서 수신된 커맨드가 "적용 개시" 커맨드인지에 대해 판정이 이루어진다. 수신된 커맨드가 적용 개시 커맨드이면, 블록 4911에서 레코드를 적용하기 시작하는 스필 로그 내의 시작 위치가 식별된다. 레코드 수신 개시 위치에 대해, 스필 로그 내의 식별은 "적용 개시" 커맨드와 함께 포함되는 위치에 의해 식별될 수 있고, 별개의 커맨드로 수신될 수 있거나 또는 소정의 다른 수단에 의해 식별될 수 있다. 적용을 개시하는 스필 로그 내의 위치의 식별 시, 커맨드 처리 루틴(4900)은 변경 레코드 적용 루틴(도 49c)으로 제어를 넘긴다.
판정 블록 4909에서, 커맨드가 "적용 개시" 커맨드가 아닌 것으로 판정되면, 그 후 커맨드는 Class B 체크포인트 확인이고, 블록 4915에서 확인된 Class B 체크포인트의 전송 이전에 저장 위치의 복사본에 적용되었던 스필 로그 내에 포함된 모든 레코드들이 로그로부터 퍼지된다. 블록 4917에서 루틴은 완료된다.
도 49b는 본 발명의 일 실시예에 따라서, 저장 위치에서 레코드를 수신하기 위한 레코드 수신 루틴의 흐름도이다. 레코드 수신 루틴(4920)은 블록 4921에서 시작하고 블록 4923에서 다음의 인입 레코드가 수신된다. 상술한 바와 같이, 레코드의 전송은, 유선, 무선 등을 포함하나 이에 한정되지 않는 임의의 유형의 전송 매체를 사용하여 달성될 수 있다. 판정 블록 4925에서, 수신된 레코드가 Class C 체크포인트인지에 대한 판정이 이루어진다. Class C 체크포인트이면, Class C 체크포인트의 스필 로그 위치가 Class C 체크포인트에 추가되고 Class C 체크포인트는 블록 4927에 예시된 바와 같이, 데이터 보호기로 전송된다. 그러나, 판정 블록 4925에서 레코드가 Class C 체크포인트가 아니라고 판정되면, 판정 블록 4929에서 레코드가 마커 토큰 Ap인지에 대한 판정이 이루어진다. 레코드가 마커 토큰이면, 블록 4931에서 마커 토큰은 데이터 보호기로 전송된다.
판정 블록 4929에서 레코드가 마커 토큰이 아니라고 판정되면, 판정 블록 4935에서 레코드가 Class A 체크포인트인지에 대한 판정이 이루어진다. 판정 블록 4935에서 레코드가 Class A 체크포인트라고 판정되면, 블록 4937에서 Class A 체크포인트 및 차이 리스트가 데이터 보호기로 전송된다. 판정 블록 4935에서 레코드가 Class A 체크포인트가 아니라고 판정되거나 또는 레코드를 데이터 보호기로 전송한 후(블록 4927, 4931, 4937), 수신된 레코드는 블록 4939에 예시된 바와 같이 스필 로그에 추가된다. 판정 블록 4941에서, 수신된 추가의 레코드가 존재하는지에 대해 판정된다. 추가 레코드가 존재한다면, 레코드 수신 루틴(4920)은 블록 4923으로 되돌아가서 루틴이 계속된다. 추가 레코드가 없다면, 루틴은 블록 4943에서 완료된다.
도 49c는 본 발명의 일 실시예에 따라서, 저장 위치의 복제에 변경 레코드를 적용하기 위한 변경 레코드 적용 루틴의 흐름도이다. 레코드 적용 루틴(4950)은 블록 4951에서 시작되고 블록 4953에서 스필 로그로부터 레코드가 얻어진다. 판정 블록 4955에서 얻어진 레코드가 보호 객체에 대한 메타데이터를 포함하고 있는지에 대한 판정이 이루어진다. 레코드가 메타데이터를 포함하고 있다고 판정되면, 블록 4957에서 메타데이터는 복제에 저장된 대응 객체와 비교된다. 상술한 바와 같이, 메타데이타는, 최종 변경 시간, 크기, 계산된 체크섬 등과 같은 객체에 대한 임의의 형태의 식별일 수 있다. 판정 블록 4959에서, 메타데이터 비교시, 메타데이타가 상이한지 여부가 판정된다. 비교된 메타데이터가 상이하다면, 블록 4961에서 메타데이터가 비교된 객체의 식별이 차이 리스트에 추가된다. 식별된 객체를 차이 리스트에 추가하는 경우(블록 4961) 또는 판정 블록 4949에서 메타데이터가 상이하지 않다고 판정되면, 변경 레코드 적용 루틴(4950)은 판정 블록 4965로 계속 진행된다. 다시 판정 블록 4955로 되돌아가면, 레코드가 메타데이타가 아니라고 판정되면, 레코드는 변경 레코드이고 블록 4963에 예시된 바와 같이 복제에 적용된다.
판정 블록 4965에서, Class B 체크포인트가 생성되어야 하는지에 대해 판정된다. 상술한 바와 같이, Class B 체크포인트의 생성이 임의의 형태의 기준들에 기초하여 생성될 수 있다. 예를 들어, Class B 체크포인트는 변경 레코드의 각각의 적용 이후, 소정의 기간 이후 등에서 생성될 수 있다. 판정 블록 4965에서 Class B 체크포인트가 생성되어야 한다고 판정되면, 판정 블록 4967에서 차이 리스트가 비어있는지 여부에 대해 판정된다. 차이 리스트가 비어있지 않다면, 블록 4969에서 루틴(4950)은 Class A 체크포인트의 수신을 대기한다. 차이 리스트가 비어있지 않는 경우 Class A 체크포인트를 대기하는 것은, 시스템이 재개시되면 차이 리스트로의 추가를 발생한 메타데이터 레코드들이 손실되지 않는다는 것을 보장한다. Class B 체크포인트의 전송 이전에 Class A 체크포인트를 수신하는 것은, 차이 리스트가 송신될 때 해당 차이 리스트를 생성하는데 활용된 모든 메타데이터 레코드들이 더 이상 필요하지 않다는 것을 보장한다. 판정 블록 4967에서 차이 리스트가 비어있다고 판정되거나 또는 블록 4969에서 Class A 체크포인트의 수신 시, 블록 4971에서 예시된 바와 같이 Class B 체크포인트가 생성 및 전송된다.
판정 블록 4965를 다시 참조하면, Class B 체크포인트가 생성되지 않는다고 판정되거나 또는 Class B 체크포인트의 전송 이후(블록 4971), 판정 블록 4973에서 복제에 아직 적용되지 않은 스필 로그 내의 추가 레코드들이 존재하는지에 대해 판정이 이루어진다. 추가 레코드가 존재한다면, 변경 레코드 적용 루틴(4950)은 블록 4953으로 되돌아가서 계속된다. 그러나, 판정 블록 4973에서 적용할 추가 레코드가 없다고 판정되면, 루틴은 블록 4975에서 예시된 바와 같이 완료된다.
본 발명의 실시예들은 임시 버저닝을 이용한 복제 및/또는 착탈식 매체로의 데이터 복사본의 보관과 같은 임의의 유형의 백업 기술을 사용하여 작성 위치의 데이터를 보호하는 능력을 제공한다. 본 발명의 일 실시예에서, 작성 위치의 데이터를 보호하는 능력은 데이터 보호 시스템의 서로 다른 부분들에 위치한 에이전트들 에 의해 수행되는 액션들의 분산 제어 및 조정을 사용하여 달성된다. 예를 들어, 에이전트는 작성 위치, 저장 위치 및/또는 데이터 보호기 위치에 위치할 수 있다. 작업이라고 표현되는 이러한 활동은 통상적으로 스케줄에 기초하여 실행된다. 작업들은 종종 원격 에이전트와의 통신을 수반하기 때문에, 통상적으로 비동기적이고 완료하는데 긴 시간 주기가 소요된다. 작업은 한번 또는 주기적으로 실행할 수 있는 활동의 스케줄된 유닛이다. 작업은 하나 이상의 태스크들로 구성된다. 태스크들은 직렬로 또는 병렬로 실행할 수 있다. 이외에도, 태스크들 중 임의의 것이 실패할때 작업이 실패하거나, 또는 태스크들이 완료되거나 실패할 때까지 모든 태스크들을 실행하도록 작업이 계속될 수 있다.
데이터 보호를 위해, 보호 그룹의 모든 구성원들에 대한 소정의 활동을 수행하도록 작업들이 조직된다. 데이터 보호는 특정 작업에 대한 적절한 활동들을 수행하기 위해 태스크들을 포함하는 작업들의 조직화를 통해 발생한다. 예를 들어, 보호 또는 복구 계획은 하나 이상의 작업 및 이러한 작업들에 대한 스케줄을 포함한다. 본 발명의 실제 실시예에서, 작업들은 4개의 상이한 유형들: 보호, 복구, 검색 및 하우스키핑(housekeeping) 중 하나로 생각될 수 있다. 보호 작업들은 복제, 임시 버전 관리, 보관 또는 데이터세트 스테이징(dataset staging)과 같은 데이터 보호 활동들을 수행한다. 각 보호 태스크는 보호 그룹과 연관된다. 복구 작업들은 복제, 데이터세트, 보관 또는 그들의 조합으로부터 데이터 복구를 수행한다. 각 복구 태스크는 복구 소스와 연관된다. 초기 검색 루틴(도 25) 및 스케줄된 검색 루틴(도 26)과 같은 검색 작업들은 데이터 보호기 외부의 실체들을 검색한 다. 검색, 네비게이션, 자동 검색 그룹 리프레시 또는 저장된 탐색, 및 보호 그룹 멤버쉽 결정을 위해 검색이 수행된다. 하우스키핑 작업은 데이터 보호 시스템 관리에 필수적인 활동을 수행한다. 하우스키핑 작업은 에이전트 설치 버전 조사, 요약 트레일의 생성, 매체 이동 및 데이터 보호 시스템 데이터베이스 불용 정보 수집을 포함한다.
데이터 보호 시스템의 각 작업은 작업 관리기에 의해 모니터된다. 작업 관리기는 작업들의 전체 진행을 모니터하고, 이러한 작업들에 연관된 데이터 보호기 데이터베이스로부터 정보를 판독하고, 이러한 작업들로부터 수신된 정보를 유지하는 데이터 보호기 데이터베이스의 특정 부분에 기입한다. 작업 관리기가 유지하는 데이터베이스의 일부에 대해, 데이터 보호 시스템의 관리자만이 데이터베이스의 해당 부분에 기입할 수 있다.
도 50은 본 발명의 일 실시예에 따라서, 다수의 태스크를 포함하는 작업의 블록도이다. 상술한 바와 같이, 작업(5000)은 태스크 1(5001), 태스크 2(5002)와 같은 하나 이상의 태스크를 태스크 N(5003)으로 예시된 임의의 개수의 태스크까지 포함한다. 작업의 각 태스크는 태스크 실행기(5005, 5007)에 의해 실행되고 관리된다. 태스크 2(5002)와 같은 태스크를 실행하는 태스크 실행기(5005)는 데이터 보호 시스템을 통해 분산된 상이한 에이전트들에 의해 수행되는 하나 이상의 커맨드를 생성한다. 예를 들어, 태스크 실행기(5005)는, 각각이 서로 다른 에이전트에 의해 완료되는, 태스크 2(5002)에 대한 서로 다른 3개 커맨드를 생성할 수 있다. 태스크 2(5002)에 대한 제1 커맨드는 에이전트 A(5009)에 의해 실행될 수 있고, 제 2 커맨드는 에이전트 B(5011)에 의해 실행될 수 있고, 제3 커맨드는 에이전트 C(5013)에 의해 실행될 수 있다. 태스크의 유형 및 작업의 유형에 따라, 에이전트(5009-5013)는 커맨드를 직렬로 또는 병렬로 실행할 수 있다.
작업 속성들은 작업의 모든 태스크들에 적용된다. 작업의 특정 태스크들은 또한 특정 속성들을 가진다. 보호 작업들을 위한 작업 및 태스크 속성들은 그룹 계획의 작업들을 생성하는 것의 일부로서 의도 변환기에 의해 결정된다. 본 발명의 실제 실시예에서, 모든 작업들은 다음의 속성들: 성공/실패에 대한 액션을 가지고 병렬로 또는 단지 직렬로 실행한다. 또한, 데이터 이동을 수반하는 임의의 작업은 다음의 속성들: 암호화, 압축, 스로틀링(throttling) 및 수집 의도들을 가질 수 있다.
각 태스크 실행기(5005, 5007)는 입력들에 응답하여 상이한 상태들을 통해 FSM(finite state machine)을 천이시키고, 상태를 지속시키고 재개시 논리를 수행하는 공통 엔진에 의해 실행되는 FSM으로 생성될 수 있다. 예를 들어, 태스크 실행기는 에이전트에 대해 이전에 발행된 커맨드로부터의 응답에 기초하여 천이할 수 있다. 공통 엔진을 활용함으로써, 모든 FSM의 설계가 공통 설계 방법을 따르도록 할 수 있고 상이한 FSM들에 대해서는 동일한 공통 블록들을 공유할 수 있다(에이전트가 살아있는지 여부에 대해 폴링(polling)하고 에이전트로부터 상태를 얻는 것 등).
통상적으로, 태스크 실행기는 에이전트들로 커맨드들을 발행하고 이러한 커맨드들의 성공 또는 실패 및 이러한 커맨드들로부터 제공된 응답들에 기초하여 대 기 상태로 천이하거나 대기 상태로부터 천이한다. 또한, 태스크 실행기(5005, 5007)는, 태스크의 실행 동안 특정 시간이 지나간 이후 취소 요청(예를 들어, 사용자로부터의 취소 요청, 해당 작업에 대해 할당된 최대 시간을 초과하는 작업에 의한 내부 취소 요청 등)에 응답하거나 또는 데이터베이스의 상태에 기초하여 생성된 내부 메시지에 응답하여 천이할 수 있다. 각 천이에서 태스크 실행기는 태스크를 통해 그 진행을 지속한다. 지속되는 진행 포인트들은 데이터 보호기 데이터베이스에 저장될 수 있다. 태스크를 통한 지속적인 진행 포인트들은 예기치 못한 종료(전력 정전 등)의 이벤트 시의 강건함을 데이터 보호 시스템에 제공한다. 재개시 시, 태스크 실행기는 지속된 포인트들을 참조하고 태스크의 적절한 상태를 식별하고 해당 포인트에서 바로 실패하고 필수적일 수 있는 임의의 청소를 수행할 수 있다.
예를 들어, 복제를 위한 데이터 전송 작업에 대해, 상술한 바와 같이, 태스크 실행기는 작업의 각 태스크를 수행하기 위해 적절한 에이전트에게 커맨드들을 발행한다. 변경 레코드의 전송을 개시하도록 클론 에이전트에게 발생된 커맨드가 이러한 커맨드들에 포함된다. 유사하게, 태스크 실행기는 수신 및 레코드의 적용을 시작하도록 복제 에이전트에게 커맨드를 발행한다. 에이전트들이 이러한 커맨드들을 수행하기 때문에, 태스크 실행기는 타이머를 시작시키고 대기 상태로 천이한다. 각 천이(커맨드 발행, 대기 시작)에서 태스크 실행기는 태스크에 대해 진행 포인트를 지속시킨다. 태스크 실행기에 의해 수신될 수 있는 응답은 체크포인트, 타임아웃 이벤트, 취소 요청 등일 수 있다. 응답 수신 시, 태스크 실행기는 응답 에 따라 천이하고 태스크 내에 해당 포인트를 지속시킨다. 이러한 프로세스는 태스크가 성공하거나 실패할 때까지 계속된다.
타임아웃 이벤트가 발생하면, 태스크 실행기(5005)는 또한 각 에이전트를 폴링하여 에이전트들이 여전히 살아있고 잠재적으로 해당 에이전트에 의해 실행될 커맨드의 진행에 대한 갱신을 얻을 수 있는지를 판정한다. 천이 포인트들을 지속시켜 강건함을 증가시키는 것 이외에, 오래 실행하는 활동은, 중간점들, 체크포인트들에서 재시작할 수 있도록 설계되어, 실패하는 경우 모든 작업이 손실되지 않는다. 예를 들어, 도 43 내지 47을 참조하면, 데이터 전송 및 검증 동안 체크포인트들이 생성된다. 이러한 체크포인트들은 복제 관리기에 의해 얻어지고 데이터 보호 데이터베이스에 저장된다. 도 43 내지 47에 대해 상술한 바와 같이, 실패에서 재개시하는 경우, 이러한 체크포인트들이 평가될 수 있고 데이터 전송 및 검증은 체크포인트들에 의해 식별된 포인트로부터 재개될 수 있다.
태스크를 완료까지 실행시키는 것 이외에, 태스크 실행기(5005, 5007)는, 본 발명의 일 실시예에서, 태스크의 완료 및 태스크가 성공적으로 또는 실패로 완료되었는지 여부에 대해 작업 관리기에 통지한다. 작업 관리기는 작업 내의 모든 태스크들에 대한 요약 정보를 제공하는 자신의 트레일(trail)을 유지한다. 예를 들어, 작업 트레일은 성공적으로 완료된 다수의 태스크를 포함할 수 있다. 또한 작업 관리기는 데이터 보호기 데이터베이스 내의 태스크 트레일에서 태스크 실행기들로부터 수신된 정보를 지속시킨다. 또한, 태스크 실행기는 태스크에 연관된 태스크 실행기 특정 정보를 자신의 태스크 트레일에 유지시킨다. 태스크 트레일은 태스크 동안 조우하는 임의의 에러들을 포함할 뿐만 아니라 데이터 보호 시스템의 사용자에게 유용한 태스크와 연관된 통계를 포함할 수 있다. 태스크 유형 고유 트레일들이 해당 특정 태스크와 연관된 관리기들에 의해 수신되고 유지된다. 태스크 유형 고유 트레일은 데이터를 이동하는데 드는 전체 시간, 태스크를 완료하기 위한 전체 시간, 전송된 데이터의 전체량 등과 같은 태스크 고유 정보를 포함할 수 있다. 데이터 보호 시스템 재개시 시, 태스크 트레일이 활용되어 실패를 초래하는 에러 경로를 식별할 수 있다. 또한, 태스크들은 태스크 사유 메타데이터를 유지할 수 있다. 이러한 사유 메타데이터는 재개시 시 사용되어 실패한 태스크를 청소하고 태스크 완료(성공 또는 실패)시 태스크 트레일을 생성한다. 또한, 태스크 실행기(5005, 5007)는 태스크와 연관된 메타데이터를 관리할 수도 있다.
실패한 경우, 재개시 시, 작업들은 매우 간단한 청소를 행한다. 그들은 스스로 재스케줄하거나 복잡한 복구 액션들을 수행하지 않는다. 대신, 실패한 작업의 태스크는 간단히 임의의 물리적 객체 상태를 갱신하고 실패한다. 실패는 태스크 트레일 및 작업 트레일에 기록된다. 신속하고 자동화된 복구 활동을 보장할 정도로 중요한 태스크들의 경우, 데이터 보호 시스템은 헬스 관리기(health manager)를 통해 태스크가 실패한 포인트로부터 또는 태스크에 의해 생성된 최종 체크포인트에서 작업을 완료하기 위해 사용되는 메이크업 작업을 생성할 수 있다. 헬스 관리기는 태스크 시도뿐만 아니라 데이터베이스 내의 다양한 객체들의 상태를 활용하여 보다 복잡한 복구 메카니즘을 구현함으로써 데이터 보호가 진행될 수 있게 한다.
복제와 같이 중요하다고 생각되는 태스크들에 대해, 헬스 관리기는 이러한 태스크들을 모니터할 수 있다. 일 실시예에서, 헬스 제공자들은 헬스 관리기에 의해 인스턴스화된다. 실패시 중요한 태스크들은 실패 이벤트들을 일으킨다. 헬스 관리기는 이러한 이벤트들을 모니터하고 임의의 복구가 수행될 필요가 있는지 여부를 판정한다. 복구가 필요하면, 메이크업 작업이 생성되고 하나 이상의 실패한 태스크를 복구하도록 스케줄된다. 이외에도, 시스템 기동시 헬스 관리기는 헬스 제공자들을 기동시킨다. 각 헬스 제공자는, 시스템이 이전에 종료했을 때 실행되었을 수 있는 실패한 태스크들의 복구가 필요한지 여부에 대해 대안적이고 독립적으로 판정한다. 복구가 필요하면, 메이크업 작업이 생성 및 스케줄된다. 메이크업 작업은 실패한 작업 내의 단일 태스크 실패의 경우에서의 단일 태스크 또는 결코 시작하지 않은 그러한 태스크들을 포함하는 실패한 작업으로부터의 모든 미완료 태스크들을 포함할 수 있다.
도 51은 본 발명의 일 실시예에 따라서, 태스크의 모니터링 및 메이크업 작업의 생성을 예시하는 흐름도이다. 상술한 바와 같이, 데이터 보호 시스템 내의 각 액션은 몇몇 태스크들을 가지는 작업의 형태로 조직화된다. 데이터 보호기(5101)는, 하나 이상의 태스크들의 실행의 결과로서, 저장 위치(5105)로 전송되고 저장될 작성 위치(5103)에서의 보호 객체들의 복제와 같은 작업을 생성할 수 있다. 이러한 작업은 데이터 보호기(5101)에 의해 개시되고 작업의 각 태스크는 하나 이상의 태스크 실행기에 의해 실행된다. 예를 들어, 복제 작업에 대해, 태스크 실행기는 몇몇 에이전트들에게 커맨드들을 발행하며, 그들 중 하나는 작성 위치(5103) 에 위치되도, 그들 중 하나는 저장 위치(5105)에 위치될 수 있다. 이러한 태스크들은 실행되고 현재 진행 중에 있으며, 본 예의 설명을 위해, 작업이 인터럽트되고 이어서 복구한다. 작업 인터럽션은 전력 정전과 같은 시스템 오류를 통해 발생할 수 있다. 복구 시, 데이터 보호기(5101)는 시스템 오류이전에 작업의 태스크가 진행 중이었는지를 식별한다. 작업의 태스크가 진행 중이었다는 것을 식별하는 경우, 데이터 보호기(5101)는 태스크를 재개시하는 커맨드를 발행한다. 태스크의 재개시 시, 태스크 실행기는 태스크를 실패로 하고 실패한 태스크에 대한 간단한 청소를 수행한다. 태스크가 중요한 것이면, 적절한 헬스 제공자가 통지받는다.
메이크업 작업은 이전의 작업이 남긴 것을 되찾는 작업이다. 메이크업 작업은 이전의 작업에서 실패하거나 또는 이전 작업에서 시작하지 않았던 태스크를 포함한다. 예를 들어, 실패한 작업이 복제 작업이면, 헬스 제공자는 복제 작업의 어떤 태스크가 성공적으로 완료되지 못했는지를 식별하고 완료되지 않은 태스크 및 해당 작업을 완료하지 못했던 다른 모든 태스크들을 포함하는 메이크업 작업을 생성한다. 메이크업 작업이 실패한 태스크의 수신에 응답하여 생성되면, 헬스 관리기는 실패한 태스크를 식별하고 해당 태스크 및 해당 작업과 직렬로 또는 병렬로 실행될 잠재적인 임의의 다른 태스크들을 포함하는 작업을 생성한다. 메이크업 작업의 생성 시, 헬스 관리기는 실행을 위해 메이크업 작업을 스케줄한다. 그 후, 해당 메이크업 작업은 자신의 작업이었던 것처럼 스케줄대로 진행하고 해당 메이크업 작업의 태스크들이 실행된다. 또한, 메이크업 작업이 자신의 작업으로서 스케줄되기 때문에, 작업 관리기의 관점에서 임의의 다른 작업으로 취급되고 작업 관리 기는 그것이 메이크업 작업인지를 알지 못할 수 있다.
도 52는 본 발명의 일 실시예에 따라서, 태스크 실패를 식별하고 해당 태스크가 중요한 경우 메이크업 작업을 생성하기 위한 메이크업 작업 루틴의 흐름도를 예시한다. 메이크업 작업 루틴(5200)은 데이터 보호 시스템에 의해 실행되거나 또는 본 발명의 실제 실시예에서는 헬스 관리기에 의해 실행될 수 있다.
메이크업 작업 루틴(5200)은 블록 5201에서 시작하고 블록 5203에서 태스크 실패를 수신한다. 상술한 바와 같이, 태스크가 인터럽트되면, 재개시 시, 태스크 실행기는 이전에 실행한 태스크를 재개시하고 실패로 하며, 태스크 실패 통지를 발행한다. 태스크 실행기는 실패한 태스크에 대해 청소를 수행한다.
판정 블록 5205에서 메이크업 작업 루틴(5200)은 실패한 태스크가 중요한 것인지 판정한다. 대안적 실시예에서, 사용자는 어떤 태스크들이 중요한 것으로 고려될 것인지를 지정할 수 있다. 판정 블록 5205에서 실패한 태스크가 중요한 것이었다고 판정되면, 블록 5207에서 완료되지 않은 태스크 및 임의의 연관된 태스크들이 식별된다. 블록 5209에서, 메이크업 작업 루틴(5200)은 완료되지 않은 태스크 각각에 대한 메이크업 작업을 생성하고 블록 5211에서 메이크업 작업이 스케줄된다.
다시 판정 블록 5205를 참조하면, 실패한 태스크가 중요하지 않다고 판정되면, 메이크업 작업 루틴은 블록 5213에서 예시된 바와 같이 완료된다. 여러 번 수행되는 루틴 작업의 일부이면 태스크는 중요하지 않은 것으로 식별된다. 예를 들어, 백그라운드 복제에 대한 복제 작업은, 복제 작업이 매 시간마다 실행되는 것으 로 예정되어 있기 때문에 중요한 작업으로 생각되지 않을 수 있다. 따라서, 복제 작업은 예정된 대로 다시 진행될 것이기 때문에, 데이터 보호 시스템은 복제 작업의 태스크들이 중요하지 않다고 판정할 수 있다.
메이크업 작업이 스케줄되어야 하는지를 판정하는 것 이외에, 데이터 보호기는, 작업 관리기를 통해, 태스크 실패에 응답하여, 실패한 태스크를 포함하는 작업이 계속되어야 하는지 또는 마찬가지로 실패로 되어야 하는지 여부를 판정한다. 실패한 태스크가 작업을 실패로 만드는 것으로 판정된 태스크라면, 그 후 작업 관리기는 연관된 작업을 실패할 것이다. 태스크가 중요하다고 고려되더라도(따라서, 메이크업 작업을 필요로 함), 작업이 실패할 것을 요구하지 않을 수 있다. 유사하게, 중요하지 않은 태스크의 실패는 작업 실패를 초래할 수 있다. 예를 들어, 작업이 다수의 데이터 소스로부터의 복제를 포함하는 경우, 복제 태스크들 중 하나의 실패(중요한 태스크)는 작업의 실패를 초래하지 않을 수 있다.
상술한 바와 같이, 데이터 보호 시스템은 데이터 보호 시스템의 특정 부분들을 제어하는 관리기들을 포함한다. 예를 들어, 데이터 보호 시스템은 복제 관리기, 구성 관리기, 헬스 관리기, 요약 관리기, 작업 관리기, 매체 관리기, 보관 관리기 등을 포함하나 이에 한정되지 않는다. 각 관리기는 데이터 보호기 데이터베이스의 특정 부분을 유지한다. 데이터베이스의 각 부분은 대응하는 관리기에 의해서만 기입될 수 있는 표들의 세트로 구성된다. 이러한 표들은 임의의 관리기 및 다른 외부 애플리케이션들에 의해 판독될 수 있으나, 대응하는 관리기가 데이터를 표들로 기입할 수 있는 유일한 것이기 때문에, 모든 동시 제어 및 동기화 논리는 관리기가 소유한다. 헬스 관리기는, 태스크 및 작업들을 모니터링하는 것 이외에, 다른 관리기도 모니터할 수 있다. 헬스 관리기는 관리기와 연관된 태스크들 중 임의의 것의 실패에 응답하도록 구성되고 복구 액션들이 필요한지를 판정하기 위해 관리기에 대응하는 데이터베이스의 상태를 검사할 수 있다.
또한, 관리기는 관리기의 기능을 구현하는 하나 이상의 태스크 실행기를 포함할 수도 있다. 예를 들어, 복제 관리기는, 복제 태스크 실행기들, 임시 버저닝 태스크 실행기들, 및 임시 버전 태스크 실행기들로부터의 복구를 포함하나 이에 한정되지 않는 복제들과 연관된 모든 태스크 실행기들을 포함할 수 있다.
데이터 보호 시스템의 물리적 객체에 대해(예를 들어, 복제, 매체, 디스크, 라이브러리, 드라이브들), 상태 모델이 유지된다. 각 상태 모델은, 객체가 존재할 수 있는 가능한 상태들 및 상태들 간에 허용가능한 천이들을 기술한다. 예를 들어 도 37은 본 발명의 일 실시예에 따라서, 복제에 대한 상태 모델을 예시한다. 상태 모델은 객체의 수명을 기술하고 한 상태에서 다른 상태로 객체를 천이시키기 위해 어떤 활동들이 수행될 필요가 있는지를 나타낸다. 예를 들어, 복제가 무효 상태(3705)(도 37)에 있는 경우, 해당 상태에 기초하여, 데이터 보호 시스템은 복제를 유효 상태(3711)로 두기 위해 검증 작업이 수행되어야 한다는 것을 안다. 객체의 상태는 종종 헬스 제공자에 대한 입력이다.
상태 모델을 유지하는 것은 복구를 위해 헬스 제공자에 의해 활용될 수 있는 기지의 상태를 유지하고, 따라서 에러 처리를 간단하게 한다. 또한, 객체의 상태를 모니터링함으로써, 데이터 보호 시스템이 임의의 에러 상태들을 다루는 방법이 사용자에게 제공된다.
데이터 보호 시스템은 또한 데이터 보호 시스템의 부분들에 의해 생성되는 이벤트들을 모니터하고 데이터 보호 시스템 자체의 전체 상태에 대해 사용자에게 보고서를 제공한다. 대안적으로, 보고서는 데이터 보호 시스템 내의 상이한 물리적 객체들에 대한 특정 정보를 제공한다. 예를 들어, 작성 위치의 서버가 이용가능하지 않다면, 그 문제를 사용자에게 알리고 제안된 해결책을 제공하는 에러 보고서가 생성될 수 있다.
데이터 보호 시스템에 의해 이벤트들이 리뷰되고 해당 리뷰에 기초하여 이벤트 리뷰에 대한 보고서가 생성된다. 그 보고서는 3개의 카테고리: 정보, 경고 또는 에러 중 하나로 분류된다. 전체적으로 보고서가 에러 보고서이면, 사용자 액션이 필수적이라는 것을 식별한다. 보고서가 경고 보고서이면, 즉각적인 사용자 액션이 필수적이지 않으나 경고가 자동적으로 또는 사용자에 의해 해결되지 않으면 필요하게 될 수 있다는 것을 식별한다. 마지막으로, 보고서가 정보 보고서이면, 사용자로부터 어떤 액션도 필요치 않다는 것을 사용자에게 통보하고, 데이터 보호 시스템에 관한 정보를 제공한다. 본 기술 분야의 통상의 지식을 가진 자가 이해하는 바와 같이, 보고서들은 정보, 경고, 에러 이외의 임의의 형태로 또는 이들에 대한 대안으로 제공될 수 있다.
보고서들은 데이터 보호 시스템의 서로 다른 부분들에 의해 생성된 이벤트들을 리뷰함으로써 생성된다. 이러한 이벤트들에 기초하여, 데이터 보호 시스템은 이벤트들 및 데이터 보호 시스템의 해당 부분의 상태에 대한 보고서를 컴파일한다. 따라서, 데이터 보호 시스템에 의해 생성된 모든 이벤트들이 사용자에게 제공되지 않고 대신 정보 보고서, 경고 보고서 또는 에러 보고서 중 하나로 카테고리화된 보고서가 제공된다. 제공된 보고서는, 필요한 경우, 데이터 보호 시스템에 의해 검출된 문제점에 대한 제안된 해결책을 포함할 수 있다. 보고서들은 태스크가 최종 작업에서 실패했는지 여부에 상관없이 생성될 수 있다. 예를 들어, 아래에 예시된 바와 같이, 최종 복사 작업이 성공이더라도(블록 5409), 저장 위치의 복사본을 유지하는데 사용되는 디스크 공간이 소정의 임계값을 초과하면(블록 5411), 데이터 보호 시스템이 경고로 분류하는 이벤트가 발생하고 보다 많은 디스크 공간을 할당하기를 원한다는 것을 사용자에게 통보하는 경고 보고서가 사용자에게 제공된다(블록 5413).
보고서 유형들(정보, 경고, 에러)은 데이터 보호 시스템의 특정 부분들을 분석함으로써 결정될 수 있다. 예를 들어, 임시 버전 진단 루틴(5700)(도 57)을 참조하면, 소정의 기간 동안 누락된 임시 버전들의 수 및 전체 보존 주기가 계산되고(블록 5725) 보고서 분류(경고, 에러)에 대한 판정은 이러한 시간 주기들 동안 누락된 임시 버전들의 퍼센티지에 기초하여 결정된다.
또한, 소정의 경우, 일련의 테스트들이 수행되어 보고서에 포함될 제안들을 결정한다. 예를 들어, 복사 진단 루틴(5400)에서 복사가 유효하지 않다고 판정되고(5403) 검증 작업이 실패하면(5445) 데이터 보호 시스템은 일련의 테스트(판정 블록 5447, 5451, 5455, 5459)를 통해 제안된 해결책이 사용자에게 생성된 에러 보고서 내에 포함되어야 하는지를 판정하도록 진행된다. 유사한 예가 복구 진단 루 틴(5900)(도 59)에 예시되어 있다. 특히, 작업이 실패하였다고 판정되면(5911), 데이터 보호 시스템은 일련의 테스트(판정 블록 5917, 5921, 5925, 5929)를 통해 제안된 해결책들이 에러 보고서에 포함되어야 하는지를 결정한다.
도 53은 본 발명의 일 실시예에 따라서, 데이터의 복사본들과 연관된 문제점을 진단하고 문제가 검출되면 제안된 해결책들을 갖는 보고서를 생성하기 위한 흐름도를 예시한다. 상술한 바와 같이, 보고서들은 3개 상태:에러, 경고 및 정보 중 하나로 카테고리화될 수 있다.
진단 루틴(5300)은 블록 5301에서 시작하고 블록 5303에서 루틴은 도 54 내지 56에 대해 상세하게 설명되는 바와 같이 복사 진단 루틴을 수행한다. 복사 진단 루틴(5303)을 수행하는 것 이외에, 진단 루틴(5300)은 도 55 내지 58에 대해 설명되는 바와 같이 임시 버전 진단 루틴을 수행한다. 마지막으로, 진단 루틴(5300)은 데이터 보호 시스템에 의해 발행되었던 임의의 다른 경고들이 존재하는지 여부를 판정한다.
판정 블록 5309에서, 복사 진단 루틴, 임시 버전 진단 루틴 중 어느 하나에서 검출되거나 또는 다른 경고들에 의해 제공되는 임의의 에러들이 존재하는지에 대해 판정이 이루어진다. 판정 블록 5309에서 에러가 검출되었다고 판정되면, 판정 블록 5311에서 에러를 설명하고 보고된 에러를 해결하기 위해 취해질 제안된 단계들을 사용자에게 제공하는 에러 보고서가 생성된다. 그러나, 판정 블록 5309에서 에러가 검출되지 않았다고 판정되면, 판정 블록 5313에서 복사 진단 루틴, 임시 버전 진단 루틴 중 어느 하나로부터 생성되거나 또는 다른 경고들에 의해 제공되는 임의의 경고들이 존재하는지 여부에 대해 판정이 이루어진다. 판정 블록 5313에서 경고가 검출되었다고 판정되면, 블록 5315에서 경고를 사용자에게 설명하고 경고를 해결하기 위해 수행될 수 있는 잠재적인 단계들을 사용자에게 제공하는 경고 보고서가 생성된다. 마지막으로, 판정 블록 5313에서 경고가 검출되지 않았다고 판정되면, 판정 블록 5317에서 데이터 보호 시스템에는 문제점들이 없고 사용자에 의해 요청된 정보를 보호하고 있다는 것을 사용자에게 통보하는 정보 보고서가 생성된다.
블록 5303, 5305, 5307의 루틴들 각각을 통해 진행하고 그 후 이러한 루틴의 가장 심각한 문제점을 판정함으로써(판정 블록 5309, 5313), 임의의 잠재적인 문제점들이 단일 보고서로 제공될 수 있다. 예를 들어, 에러가 식별되면, 에러와 제안된 해결책이 제공될 수 있고 임의의 경고 또는 정보 보고서는 보다 많은 중요한 문제, 에러가 해결될 때까지 보류될 수 있다.
도 54는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에서의 데이터의 복사 시의 잠재적인 문제점을 진단하기 위한 복사 진단 루틴의 상세를 설명하는 흐름도이다. 복사 진단 루틴은 복제 저장, 보관 또는 복제와 보관 양자와 같은 임의의 유형의 저장에 대해 활용될 수 있다. 아래에서 상세하게 설명되는 바와 같이, 복사 진단 루틴(5400)은 최종 복사 태스크가 성공했는지 또는 실패했는지 여부를 판정한다. 최종 복사 태스크가 실패했다면, 그 후 복사 모드가 백그라운드인지 또는 백업인지 여부에 기초하여 서로 다른 경로들이 이어진다(블록 5417). 하루에 한번 실행하고 실패하는 태스크는 매시간마다 실행하고 실패하는 태스크보다 훨씬 더 중요하기 때문에, 이러한 실패들에 기초하여 서로 다른 보고서들이 생성된다. 예를 들어, 모드가 백그라운드이고 태스크가 실패한다면, 실패의 횟수가 소정의 하한을 초과하지 않은 경우 사용자에게 정보 보고서가 제공될 수 있다. 대안적으로, 백그라운드 모드에 대해, 자주 실행하도록 스케줄된 태스크들에 대해 보고서가 생성되지 않을 수 있는데, 그 이유는 해당 태스크의 후속 실행이 자동적으로 문제를 해결하기 때문이다. 대조적으로, 복사 모드가 백업이고 태스크가 실패하면, 경고 보고서 또는 에러 보고서 중 하나가 사용자에게 제공된다.
복사 진단 루틴(5400)은 블록 5401에서 시작하고 판정 블록 5403에서 복사가 유효한지에 대한 판정이 이루어진다. 판정 블록 5403에서 복사가 유효하다고 판정되면, 판정 블록 5405에서 복사 작업이 현재 실행 중인지 여부에 대해 판정된다. 판정 블록 5405에서 복사 작업이 실행 중이라고 판정되면, 블록 5407에서 데이터 보호 시스템은 복사본의 최종 상태를 식별하고 복사 작업이 현재 실행 중이라는 표시를 사용자에게 제공하는 정보 보고서를 생성한다.
그러나, 판정 블록(5405)에서 복사 작업이 현재 실행 중에 있지 않다고 판정되면, 판정 블록 5409에서 최종 복사 작업이 성공적인지 여부에 대해 판정이 이루어진다. 판정 블록 5409에서 최종 복사 작업이 성공했다고 판정되면, 판정 블록 5411에서 디스크 사용 임계 경고가 최종 복사 작업으로부터 발생되었는지 여부에 대해 판정이 이루어진다. 디스크 사용 임계 경고는, 복사본이 현재 저장되고 있는 저장 위치의 일부가 이용가능한 디스크 공간이 고갈되고 있다는 것을 데이터 보호 시스템이 식별하는 것에 응답하여 생성된다. 예를 들어, 복제에 대한 디스크 공간 이 고갈될 때마다 또는 보관이 테이프 매체보다 디스크에 수행되고 풀 내의 어느 하나의 매체가 고갈되고 있거나 빈 풀 내의 매체가 고갈되고 있는 경우, 디스크 사용 임계 경고가 생성될 수 있다. 이러한 임계 레벨은 도달했을 때 임계 경고를 생성하는 소정의 미리 설정된 크기이다.
판정 블록 5411에서, 디스크 사용 임계 경고가 생성되었다고 판정되면, 블록 5413에서 저장 위치의 디스크 사용이 소정의 임계값을 초과했다는 경고 보고서가 생성되고, 추가의 디스크 공간이 복사를 위해 할당되는 제안을 제공한다. 대안적 실시예에서, 임계 경고를 사용자에게 통보하는 경고 보고서를 생성하는 것 이외에, 데이터 보호 시스템은 또한 복사를 위한 현재 디스크 공간 상태를 확인함으로써 경고가 여전히 적용가능한지를 보기 위해 체크할 수 있다.
판정 블록 5411에서, 디스크 사용 임계 경고가 생성되지 않았다고 판정되면, 데이터 보호 시스템의 해당 부분과 연관된 문제가 없다는 것을 나타내는 정보 보고서가 사용자에게 제공된다.
판정 블록 5409를 다시 참조하면, 최종 복사 작업이 성공하지 못했다고 판정되면, 판정 블록 5417에서 보호 모드가 백그라운드 모드인지에 대해 판정이 이루어진다. 본원에 설명되는 바와 같이, 보호의 백그라운드 모드는 복사하는 것이 거의 연속적인 - 예를 들어, 매시간, 하루 24시간, 일주일에 7일 - 데이터 보호 시스템에 대한 동작 모드이다. 대안적으로, 복사 모드는 백업 모드일 수 있다. 보호의 백업 모드는 복사하는 것이 비교적 드문 동작 모드이다. 예를 들어, 보관 및/또는 복제는 밤에 일어날 수 있다.
판정 블록 5417에서, 복사 모드가 백그라운드인 것으로 판정되면, 블록 5419에서 이전에 실패한 복사 작업들의 수가 계산된다. 블록 5419에서 계산된 실패한 복사 작업들의 수가 소정의 하한을 초과하는지에 대한 판정이 이루어진다. 이전에 실패한 복사 작업들의 수가 소정의 하한을 초과하지 않는다고 판정 블록 5421에서 판정되면, 블록 5422에서 데이터 보호 시스템이 현재 예상대로 동작 중이라는 것을 사용자에게 알리는 정보 보고서가 생성된다. 실패한 복사 작업들의 수를 계산하고 보고서를 생성할지 여부를 판정하기 위해 이를 한계값들과 비교함으로써, 사용자에게 알릴 필요없이 데이터 보호 시스템이 문제를 해결할 기회를 제공한다. 예를 들어, 복사 작업들이 시간별로 생성되고 있고 하나가 누락되면, 데이터 보호 시스템은 복사 작업이 성공적으로 완료되면 다음 시간에 이러한 문제를 해결할 수 있다.
그러나, 판정 블록 5421에서, 이전에 실패한 복사 작업들의 수가 소정의 하한을 초과한다고 판정되면, 판정 블록 5423에서 이전에 실패한 복사 작업들의 수가 보다 높은 제2 한계를 초과했는지에 대해 판정이 이루어진다. 이전에 실패한 복사 작업들의 수가 소정의 보다 높은 한계를 초과하지 않았다고 판정되면, 블록 5424에서 실패한 복사 작업의 수를 사용자에게 알리는 경고 보고서가 생성된다. 이러한 경고 보고서는 또한 실패한 복사 작업들의 수가 소정의 보다 높은(중요한) 개수에 도달하지 않았고 사용자에 의해 어떤 액션도 현재 요구되지 않는다는 것을 사용자에게 알린다.
판정 블록 5417에서 보호 모드가 백그라운드 모드가 아니라고 판정되면, 즉 백업 모드이거나 또는 판정 블록 5423에서 실패한 복사 작업의 수가 소정의 보다 높은 한계를 초과한다고 판정되면, 블록 5425(도 55)에 의해 예시된 바와 같이 복사 진단 루틴(5400)이 최종 태스크 실패에 대한 원인을 취득한다. 본 발명의 일 실시예에서, 복사 작업들의 실패에 대한 원인들이 복사 작업 자체 내에 포함된 태스크들에 의해 생성된 태스크 트레일들로부터 얻어질 수 있다. 상술한 바와 같이, 태스크 트레일은 태스크 자체에 대한 메타데이터, 태스크가 행한 것, 태스크가 완료한 것 또는 태스크가 실패한 이유를 포함한다.
판정 블록 5427에서, 실패에 대한 원인이 사용자가 이전의 복사 작업을 취소한 것이었는지에 대한 판정이 이루어진다. 판정 블록 5427에서, 사용자가 해당 작업을 취소한 것에 의해 복사 작업이 실패했다고 판정되면, 복사 실패의 통지가 무시된다. 그러나, 판정 블록 5427에서 사용자에 의해 취소된 것과는 다른 이유로 인해 이전 복사가 실패했다고 판정되면, 데이터 보호 시스템이 작성 위치와 연락할 수 없기 때문에 이전의 복사 작업이 실패했는지에 대해 판정이 판정 블록 5431에서 이루어진다. 작성 위치와 연락할 수 없는 것은 네트워크 정전, 전원 문제 또는 작성 서버가 다른 작업들 또는 유지보수를 위해 현재 꺼졌다는 것과 같은 몇몇 상이한 유형의 외부 이벤트들에 의해 발생한다.
판정 블록 5431에서 데이터 보호 시스템이 작성 위치와 연락할 수 없어서 최종 복사 작업이 실패했다고 판정되면, 블록 5433에서 이전의 복사 작업이 성공적으로 완료되지 않았다는 것을 사용자에게 확인시키고 데이터 보호 시스템이 작성 위치와 연락할 수 없었던 이유를 판정하기 위해 네트워크 및/또는 작성 위치를 체크하라는 제안을 사용자에게 제공하는 보고서가 생성된다.
판정 블록 5431에서, 데이터 보호 시스템이 작성 위치와 연락할 수 없었기 때문에 이전의 실패가 발생한 것이 아니라고 판정되면, 판정 블록 5435에서 데이터 보호 시스템이 복사를 수행하는 에이전트와 연락할 수 없었기 때문에 이전 실패가 발생했는지 여부에 대해 판정이 이루어진다. 복사를 행하는 에이전트와의 연락 불능에 의해 실패가 발생했다고 판정되면, 블록 5437에 예시된 바와 같이, 에러를 사용자에게 통보하고, 사용자가 에이전트를 체크하고 가능하면 루틴을 재개시하거나 및/또는 에이전트 설치를 체크하거나 및/또는 필요한 경우 에이전트를 재설치하도록 하는 제안을 제공하는 경고 보고서가 생성된다.
그러나, 이전의 실패가 사용자 취소(블록 5427), 작성 위치와의 연락 불능(블록 5431) 또는 에이전트와의 연락 불능(블록 5435)에 의한 것이 아니라고 판정되면, 문제점은 미지이고 데이터 보호 시스템이 실패의 원인을 결정할 수 없다는 것을 사용자에게 알리고 사용자가 복사에 관련된 에이전트 및 네트워크 접속을 체크하라는 제안을 제공하는 에러 보고서가 생성된다.
다시 도 54를 참조하면, 판정 블록 5403에서 복사 진단 루틴(5400)을 사용하여 진단이 수행되고 있는 복사가 유효하지 않다고 판정되면, 판정 블록 5437(도 56)에서 진단되고 있는 복사가 무효인지에 대해(즉 무효 상태에 있는지(3705) (도 37)) 판정이 이루어진다. 판정 블록 5437에서 진단되고 있는 복사가 무효라고 판정되면, 블록 5439에서 복사 진단 루틴은, 데이터 소스에 대한 복사가 개시되지 않았다는 것을 사용자에게 통지한다. 대안적 실시예에서, 블록 5439에서 진단되고 있는 특정 데이터 소스에 대한 복사가 초기화되지 않고 있다는 것을 확인시키고 초 기화 작업을 생성하기를 원하는지 여부를 사용자에게 물어보는 보고서가 사용자에게 제공될 수 있다.
판정 블록 5437에서 복사가 무효인 것으로 판정되면, 판정 블록 5441에서 진단되고 있는 복사에 검증 작업이 현재 실행되고 있는지에 대한 판정이 이루어진다. 판정 블록 5441에서 진단되고 있는 특정 복사에 대해 현재 검증 작업이 실행되고 있다고 판정되면, 블록 5443에서 진단되고 있는 복사가 현재 검증 작업에 의해 검증되고 있고 현재 아무런 액션이 필요하지 않다는 것을 사용자에게 알리는 경고 보고서가 생성된다.
판정 블록 5441에서 검증 작업이 실행되고 있지 않다고 판정되면, 판정 블록 5445에서 복사 진단 루틴(5400)은 이전 검증 작업이 실행되었고 실패했는지에 대해 판정한다. 판정 블록 5445에서 검증 작업이 실행되었고 실패했다고 판정되면, 판정 블록 5447에서 실패가 사용자에 의한 검증 작업의 취소의 결과였는지 여부에 대해 판정이 이루어진다. 판정 블록 5445에서 이전에 실행한 검증 작업이 실패하지 않았다거나 또는 이전에 실행한 검증 작업이 실패했고 그 실패가 사용자에 의한 취소에 의한 것이라고 판정되면, 블록 5449에서 실패를 사용자에게 알리고 사용자가 검증 작업을 실행시키도록 제안하는 에러 보고서가 생성된다. 대안적으로 검증 작업이 자동적으로 실행될 수 있다.
그러나, 판정 블록 5447에서 이전에 실행한 검증 작업이 실패했고 실패한 이유가 사용자의 취소에 의한 것 이외의 것이라고 판정되면, 블록 5449에서 이러한 실패에 대한 원인이 이전의 검증 작업과 연관된 태스크 트레일들로부터 얻어진다. 블록 5449에서 얻어진 실패에 대한 원인들을 활용하여, 복사 진단 루틴(5400)은 판정 블록 5451에서 이전의 실행한 검증 작업이 실패했고, 실패한 이유가 복사를 위해 이용가능한 저장 위치의 양이 꽉 찼기 때문인지에 대해 판정한다. 판정 블록 5451에서 저장 위치에서의 복사를 위한 공간이 찼다고 판정되면, 블록 5453에서 저장 위치가 채워졌다는 것을 사용자에게 알리고 사용자가 복사의 저장을 위한 보다 많은 디스크 공간을 할당하도록 하는 제안을 제공하는 에러 보고서가 보고된다. 보다 많은 디스크 공간을 할당하는 것은, 복제에 대한 추가의 디스크 공간을 추가하는 것을 포함한다.
판정 블록 5451에서 실패가 불충분한 공간의 결과가 아니라고 판정되면, 블록 5455에서 실패가 데이터 보호 시스템이 저장 위치에 전혀 도달하지 못한 것의 결과였는지에 대한 판정이 이루어진다. 판정 블록 5455에서 복사를 검증하기 위해 데이터 보호 시스템이 저장 위치에 도달할 수 없었다고 판정되면, 에러 보고서가 생성된다. 에러 보고서는 저장 위치에 액세스할 수 없다는 것을 사용자에게 알리고 사용자가 데이터 보호 시스템과 저장 위치 간의 통신, 타겟 볼륨과의 통신 및 저장 위치 자체의 무결성을 체크하라고 제안한다.
판정 블록 5455에서, 실패가 저장 위치가 액세스가능하지 않은 것의 결과가 아니라고 판정되면, 판정 블록 5459에서 작성 위치에서의 변경 로그 오버플로우가 존재했는지 여부에 대해 판정이 이루어진다. 로그 오버플로우는 작성 위치의 변경 로그에 너무 많은 변경들이 대기하고 있거나 및/또는 저장 위치의 스필 로그가 완전히 채워지게 된 것으로부터 발생할 수 있다. 변경 레코드 및 검증 레코드가 그 들이 저장 위치로 전송되거나 또는 저장 위치에서 처리되는 것보다 빠르게 생성되면 이러한 것이 발생할 수 있다. 판정 블록 5459에서 실패가 로그 오버플로우의 결과였다고 판정되면, 블록 5461에 나타낸 바와 같이 로그 오버플로우를 사용자에게 알리고 로그가 오버플로우되었다는 것을 나타내고 로그를 적절이 크기조절하라고 제안하는 에러 보고서가 생성된다.
마지막으로, 복사 진단 루틴(5400)이 판정 블록 5459에서 실패가 로그 오버플로우의 결과가 아니었다고 판정하면, 블록 5463에서 실패를 사용자에게 알리고 사용자가 잠재적인 통신 문제 또는 다른 잠재적 문제에 대해 작성 서버, 데이터 보호기 및 저장 서버를 체크하고 실패가 계속되면 데이터 보호 시스템을 재초기화하라고 제안하는 에러 보고서가 생성된다.
보호 문제점을 진단하는 다른 예는, 임시 버전의 진단이다. 임시 버전 진단 루틴은 도 53(블록 5305)에 설명된 전체 진단 루틴에 대해 언급되고 도 57에 대해 보다 상세하게 설명되었다.
도 57은 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에 의해 생성된 임시 버전이 갖는 잠재적인 문제를 진단하기 위한 임시 버전 진단 루틴을 기술하는 흐름도를 예시한다. 임시 버전 진단 루틴(5700)은 블록 5701에서 시작하고 판정 블록 5703에서 임시 버전이 생성되고 있는 복사가 유효 상태인지에 대한 판정이 이루어진다. 판정 블록 5703에서, 임시 버전이 생성되고 있는 복사가 유효 상태라고 판정되면, 판정 블록 5705에서 해당 복사의 최종 임시 버전 작업이 성공했는지 여부에 대해 판정이 이루어진다. 판정 블록 5705에서 복사의 최종 임시 버전 작업이 성공하지 못했다고 판정되면, 판정 블록 5707에서 임시 버전 작업의 실패에 대한 원인이 임시 버전 작업의 태스크와 연관된 태스크 트레일들로부터 얻어진다.
판정 블록 5709에서 설명을 제공하고 임시 버전을 다시 취할 것을 사용자에게 제안하는 에러 보고서가 생성된다. 대안적 실시예에서, 설명을 제공하는 보고서를 생성하는 것 이외에, 데이터 보호 시스템은 후속 임시 버전을 취하기 위한 임시 버전 작업을 자동적으로 스케줄한다.
다시 판정 블록 5703을 참조하면, 임시 버전이 취해질 복사가 유효 상태가 아니라고 판정되면, 임시 버전 진단 루틴(5700)은 도 56에 예시된 블록들에 대해 상술한 바와 같이 계속된다.
판정 블록 5705에서, 유효 복사의 최종 임시 버전 작업이 성공했다고 판정되면, 판정 블록 5711에서 임시 버전이 실제 취해졌는지에 대해 판정이 이루어진다. 판정 블록 5711에서 임시 버전이 실제로 취해지지 않았다고 판정되면, 판정 블록 5713에서 복사 작업 실패가 존재했는지 여부에 대해 판정이 이루어진다. 판정 블록 5713에서 복사 작업 실패가 존재했었다고 판정되면, 임시 버전 진단 루틴(5700)은 도 55에 예시되고 설명된 블록들에 대해 상술한 바와 같이 계속된다.
그러나, 판정 블록 5711에서 임시 버전이 취해지지 않았고 판정 블록 5713에서 복사 작업 실패가 없었다고 판정되면, 이는, 복사에 대한 활동이 없고 따라서 임시 버전이 필요하지 않다는 것을 데이터 보호 시스템에 확인시킨다. 또한, 복사 및/또는 임시 버전에 문제가 없기 때문에, 블록 5715에서 복사에 대한 활동이 존재하지 않았었고 그 결과 임시 버전이 취해지지 않았다는 것을 사용자에게 알리는 정 보 보고서가 생성된다.
판정 블록 5711을 다시 참조하면, 임시 버전 작업이 수행되고 임시 버전이 취해졌다고 판정되면, 판정 블록 5721(도 58)에 예시된 바와 같이, 복구가 필요한, 가장 오래된 의도된 임시 버전이 이용가능한지에 대해 판정이 이루어진다. 가장 오래된 의도된 임시 버전이 이용가능한지 여부를 판정하는 것은, 기간 의도가 충족되고 있는지 아닌지를 확인한다. 예를 들어, 기간이 적어도 1년 전의 정보를 복구할 수 있고 가장 오래된 의도된 임시 버전(1년 전)이 이용가능하다면, 기간 의도가 만족되고 있는지를 확인하라. 판정 블록 5721에서 가장 오래된 의도된 임시 버전이 복구에 대해 이용가능하지 않다고 판정되면, 가장 오래된 의도된 임시 버전이 이용가능하지 않고 이것의 가장 가능성 있는 원인이 디스크 공간 부족에 의한 것이라는 것을 사용자에게 알리는 에러 보고서가 생성된다. 에러 보고서는 또한 블록 5723에 예시된 바와 같이 임시 버전에 대한 보다 많은 디스크 공간을 할당하도록 사용자에게 제안한다.
판정 블록 5721에서 가장 오래된 의도된 임시 버전이 이용가능하다고 판정되면, 블록 5725에서 임시 버전 진단 루틴(5700)은 소정의 기간 동안 누락된 복사본들의 개수를 계산하고 전체 보유 기간에 걸쳐 누락된 복사본들의 전체 개수를 계산한다. 누락된 임시 버전들이 계산되는 소정의 기간은 전체 보유 기간보다 작은 1주, 2주, 1달 등과 같은 임의의 소정의 시간 길이일 수 있다. 사용자가 보호 객체들을 보호할 수 있기를 원하는 전체 시간 길이를 식별할 때 보호 의도 설정 시 전체 보유 기간이 사용자에 의해 식별된다. 누락된 복사본들의 개수를 계산하는 것 은 빈도 의도가 충족되고 있는지 여부를 확인한다.
판정 블록 5727에서, 누락된 복사본들이 블록 5725에서 계산되었던 소정의 기간 동안 누락된 0%보다 큰 임시 버전이 존재하는지 여부에 대해 판정이 이루어진다. 판정 블록 5727에서 누락된 임시 버전이 없다고 판정되면, 판정 블록 5729에서 전체 보유 기간 동안 50% 미만의 임시 버전이 누락되는지에 대해 판정이 이루어진다. 판정 블록 5729에서 전체 기간 동안 누락된 임시 버전의 수가 50% 미만이라고 판정되면, 블록 5731에 예시된 바와 같이, 데이터 보호 시스템의 임시 버전 부분에 현재 문제가 없다는 것을 사용자에게 알리는 정보 보고서가 생성된다. 상술한 바와 같이, 문제를 즉시 보고하지 않음으로써, 데이터 보호 시스템은 사용자가 개입할 필요없이도 임의의 문제를 해결할 기회를 가진다. 예를 들어, 전체 기간 동안 누락된 복사본의 수가 10%이나 미래의 복사 작업들이 성공적으로 완료된다고 판정되면, 이러한 퍼센티지는 사용자에게 경보할 필요없이 시간에 따라 감소할 것이다.
그러나, 블록 5729에서 50%보다 큰 임시 버전이 전체 기간 동안 누락되었다고 판정되면, 블록 5733에 의해 예시된 바와 같이 현재 누락되어 있는 임시 버전의 퍼센티지를 확인시키고 누락된 임시 버전들의 퍼센티지의 지속적인 모니터링 이외에 필요한 액션이 없다는 것을 제안하는 경고 보고서가 생성된다.
판정 블록 5727에서 소정의 기간 동안 누락된 소정의 임시 버전들이 존재한다고 판정되면, 판정 블록 5735에서 상기 소정의 기간 동안 누락된 임시 버전의 개수가 0%와 20% 사이에 있는지에 대해 판정이 이루어진다. 판정 블록 5735에서 소 정의 기간 동안 누락된 복사본의 개수가 0%와 20% 사이에 있다고 판정되면, 판정 블록 5737에서 전체 보유 기간 동안 누락된 임시 버전들의 개수가 50% 미만인지에 대해 판정이 이루어진다. 판정 블록 5737에서 전체 보유 기간 동안 누락된 임시 버전들의 수가 50% 미만이라고 판정되면, 블록 5739에서 누락된 임시 버전들의 퍼센티지를 제공하고 누락된 임시 버전의 퍼센티지를 모니터링하는 것 이외에 액션이 필요하지 않다는 것을 제안하는 경고 보고서가 생성된다.
그러나, 블록 5737에서 전체 보유 기간 동안 누락된 임시 버전들의 퍼센티지가 50% 초과라고 판정되면, 블록 5741에서 누락된 임시 버전의 퍼센티지를 사용자에게 알리는 에러 보고서가 생성된다. 또한, 블록 5741에서 생성된 에러 보고서는, 보호가 예상대로 수행되고 있지 않다는 것을 사용자에게 알리고, 사용자가 식별된 보호 파라미터들 및 작성 위치와 저장 위치에 대한 디스크 셋업을 체크하도록 제안한다.
판정 블록 5735를 다시 참조하면, 소정의 기간 동안 누락된 임시 버전의 퍼센티지가 0%와 20% 사이가 아니라고 판정되면, 판정 블록 5743에서 전체 보유 기간 동안 누락된 임시 버전의 수가 50% 미만인지에 대해 판정이 이루어진다. 판정 블록 5743에서 전체 보유 기간 동안 누락된 임시 버전들의 전체 수가 50% 미만이라고 판정되면, 보호가 예상대로 수행되지 않고 있다는 것을 사용자에게 알리고, 전체 보유 기간 동안 누락된 임시 버전의 전체 퍼센티지를 사용자에게 제공하고 복사본 자체의 무결성을 사용자가 체크하고 보호 스케줄을 체크하도록 제안하는 에러 보고서가 생성된다. 마지막으로, 판정 블록 5743에서 전체 보유 기간 동안 누락된 임 시 버전의 수가 50%를 초과한다고 판정되면, 블록 5747에 예시된 바와 같이 보호가 지속적으로 좋지 않다는 것을 사용자에게 알리고 사용자가 작성 위치 및 저장 위치 모두에서의 보호 및 디스크 셋업을 체크하도록 제안하는 에러 보고서가 생성된다.
임시 버전 진단 루틴(5700)의 상기 설명에 대해 특정 퍼센티지를 활용하였지만, 관련 기술 분야의 통상이 지식을 가진 자는 임의의 소정의 퍼센티지가 본 발명의 실시예들과 함께 사용될 수 있고 본원에 제공된 것들은 단지 설명을 위해 의도된 것이라는 것을 이해할 것이다.
도 59는 본 발명의 일 실시예에 따라서, 데이터 보호 시스템에서 정보의 복구가 갖는 잠재적인 문제를 진단하기 위한 복구 진단 루틴을 설명하는 흐름도이다. 복구 진단 루틴(5900)은 블록 5901에서 시작하고 판정 블록 5903에서 복구 작업이 현재 실행 중에 있는지에 대해 판정이 이루어진다. 판정 블록 5903에서 복구 작업이 현재 실행 중에 있다고 판정되면, 판정 블록 5905에서 복구 진단 루틴(5900)이 실행 중인 복구 작업과 연관된 태스크들로부터 임의의 경고가 생성되었는지를 판정한다. 판정 블록 5905에서 실행 중인 복구 작업과 연관된 태스크에 의해 경고가 생성되지 않았다고 판정되면, 데이터 보호 시스템에 대한 복구 관련 문제가 존재하지 않는다는 것을 사용자에게 알리는 정보 보고서가 생성된다. 판정 블록 5905에서 현재 실행 중인 작업과 연관된 태스크로부터 경고가 생성되었다고 판정되면, 블록 5909에서 현재 실행 중인 복구 작업이 하나 이상의 경고를 생성하였다는 것을 사용자에게 알리는 경고 보고서가 생성되고, 이러한 경고들을 사용자에게 알리며 임의의 해결책이 필요하면 이러한 경고들을 해결하기 위해 제안된 접근법들을 제공 한다. 예를 들어, 현재 실행 중인 작업이, 현재 열려져 있기 때문에 파일을 복원할 수 없었다는 것을 나타내는 경고를 생성할 수 있다.
복구 작업이 현재 실행하지 않는다고 판정 블록 5903에서 판정되면, 판정 블록 5911에서 최근 복구 작업(예를 들어, 최종 24시간 내에 실행되었던 복구 작업)이 완료하지 못했는지에 대해 판정이 이루어진다. 판정 블록 5911에서 어떠한 최근 복구 작업도 완료에 실패하지 않았다고 판정되면, 즉 성공적으로 완료되었거나, 또는 수행된 복구 작업이 없다고 판정되면, 데이터 보호 시스템의 복구 부분과 연관된 문제가 없다는 것을 사용자에게 알리는 보고서가 블록 5913에서 생성된다.
판정 블록 5911에서 최근 실행한 복구 작업이 실패했다고 판정되면, 블록 5915에서 해당 작업의 실패에 대한 원인이 해당 작업과 연관된 태스크 트레일들로부터 얻어진다. 상술한 바와 같이, 특정 작업과 연관된 태스크들에 대한 태스크 트레일들은 태스크가 실패했다면 태스크가 실패한 이유를 포함하여 태스크 자체에 대한 정보를 포함한다.
판정 블록 5917에서, 블록 5915에서 얻은 실패에 대한 원인을 활용하면, 복구 작업의 실패가, 데이터 보호 시스템이 데이터가 복구될 위치에 대해 작성 위치와 연락할 수 없는 결과였는지에 대해 판정이 이루어진다. 판정 블록 5917에서 복구 작업 실패에 대한 원인이, 데이터 보호 시스템이 작성 위치와 연락할 수 없었다는 것이라고 판정되면, 블록 5919에서 최종 복구 작업 실패에 대한 원인을 사용자에게 알리고, 사용자가 작성 위치의 네트워크 접속들을 체크하고 에이전트가 적절히 동작하고 있다는 것을 보장하도록 작성 위치 상의 에이전트를 체크하라고 제안 하는 에러 보고서가 생성된다. 복사 진단 루틴(도 54 내지 56)에 대해 상술한 바와 같이, 작성 위치와 같은 위치에 연락할 수 없는 것은, 네트워크 정전, 전력 문제 또는 유지보수 또는 다른 동작들을 위해 작성 위치가 오프라인으로 취해지는 것과 같은 몇몇 외부 이벤트들의 결과일 수 있다.
판정 블록 5917에서 복구 작업 실패에 대한 원인이, 데이터 보호 시스템이 작성 위치와 연락할 수 없었던 것의 결과가 아니라고 판정되면, 판정 블록 5921에서 복구 작업 실패의 원인이 작성 위치의 타겟이 이용가능하지 않은 것의 결과였는지에 대해 판정이 이루어진다. 작성 위치 상의 타겟은 복구된 데이터가 기록될 작성 위치의 물리적 부분일 수 있다. 판정 블록 5921에서 타겟이 이용가능하지 않다고 판정되면, 블록 5923에 예시된 바와 같이, 복구 작업 실패에 대한 원인을 사용자에게 통지하고 사용자가 잠재적 문제점들에 대해 작성 서버 상의 물리적 위치를 체크하라고 제안하는 에러 보고서가 생성된다.
복구 작업 실패가 작성 위치 상의 타겟이 이용가능하지 않은 것의 결과가 아니라고 판정 블록 5921에서 판정되면, 판정 블록 5925에서 복구 작업 실패에 대한 원인이, 복구 작업의 태스크가 저장 위치로부터 데이터를 판독할 수 없었다는 것인지 여부에 대해 판정된다. 복구 작업의 태스크가 저장 위치로부터 데이터를 판독할 수 없었다고 판정되면, 블록 5927에서 복구 작업 실패에 대한 원인을 사용자에게 알리고 사용자가 저장 위치의 디스크 및/또는 매체를 체크하도록 하는 제안하는 에러 보고서가 생성된다.
판정 블록 5925에서, 복구 작업 실패에 대한 원인이, 태스크가 저장 위치로 부터 판독될 수 없었던 결과가 아니라고 판정되면, 판정 블록 5929에서 복구 데이터가 복구될 작성 위치의 디스크가 현재 꽉 찼는지에 대한 판정이 이루어진다. 판정 블록 5929에서 디스크가 완전히 채워진 것으로 판정되면, 블록 5931에서 복구 위치의 디스크가 요청된 데이터를 복구하는데 충분한 공간을 가지지 않는다는 것을 사용자에게 알리고 사용자가 대안 위치에서 데이터를 복구하거나 또는 작성 위치의 디스크 공간을 증가시킬 것을 제안하는 에러 보고서가 생성된다.
마지막으로, 판정 블록 5929에서 복구 작업 실패에 대한 원인이, 작성 위치의 디스크가 완전히 채워진 것의 결과가 아니라고 판정되면, 미지의 에러가 이전의 복구 작업에서 발생했고 사용자가 복구 작업을 재실행시킬 것을 제안하는 보고서가 생성된다.
본 발명의 바람직한 실시예가 예시되고 설명되었지만, 본 발명의 사상과 범주로부터 벗어나지 않고 다양한 변경이 이루어질 수 있다는 것을 이해할 것이다.
배타적 재산 또는 권한이 청구되는 본 발명의 실시예들은 다음과 같이 정의된다.
본 발명에 따르면, 컴퓨터 시스템의 보호를 자동화하고, 시스템에 변경이 발생하는 때를 식별하고, 보호와 관련된 문제들이 발생하는 경우 사용자에게 지침을 제공하고, 논리적 명칭공간(namespace)들에서 작업함으로써 사람들이 보호를 생성할 수 있게 하는 시스템, 방법 및 장치가 제공된다.

Claims (44)

  1. 데이터를 보호하기 위한 방법으로서,
    데이터 보호 작업(job)을 수행하도록 구성된 복수의 태스크를 통해 데이터를 보호하기 위한 동작을 개시하는 단계;
    상기 복수의 태스크 중 적어도 하나의 진행을 관리하는 단계 - 상기 관리는 상기 데이터 보호 작업의 적어도 하나의 중단된(interrupted) 태스크를 식별하는 것을 포함함 - ;
    상기 데이터 보호 작업으로부터의 적어도 하나의 중단된 태스크가 중요한(critical) 것인지의 여부를 인식하는 단계;
    적어도 하나의 중단된 중요 태스크의 인식 시에 메이크업(makeup) 작업을 생성하는 단계;
    상기 메이크업 작업을, 인식된 중단된 중요 태스크들에 포퓰레이트(populate)하는 단계; 및
    중단된 비중요(non-critical) 태스크들이 상기 메이크업 작업의 일부가 되지 않도록 상기 중단된 비중요 태스크들을 폐기(disregard)하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 태스크 각각을 실행함으로써 작업의 액션을 수행하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 복수의 태스크 중 적어도 하나를 복수의 에이전트에 의해 수행하는 단계; 및 상기 복수의 에이전트 중 적어도 2개를 서로 다른 위치에서 동작시키는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 복수의 태스크 각각을 실행시키기 위한 태스크 실행기를 구성하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 단계;
    완료된 상기 작업의 태스크들을 식별하는 단계;
    미완료된 상기 작업의 태스크들을 식별하는 단계;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 단계
    를 더 포함하는 방법.
  6. 데이터를 보호하기 위한 방법으로서,
    데이터 백업을 위한 작업을 수행하도록 구성되는 복수의 태스크를 개시하는 단계;
    상기 복수의 태스크 중 적어도 하나의 태스크가 중단되었는지의 여부를 판정하는 단계;
    중단된 태스크가 중요한 것인지의 여부를 식별하는 단계;
    상기 중단된 태스크가 중요한 것인지에 대해 포지티브 식별이 행해진 경우에, 중요한 것으로 식별된 상기 중단된 태스크를 메이크업 작업으로 분류하는 단계;
    상기 중단된 태스크가 중요한 것인지에 대해 네거티브 식별이 행해진 경우에, 중단된 비중요 태스크가 메이크업 작업의 일부가 되지 않도록 상기 중단된 태스크를 폐기하는 단계;
    포지티브 식별인 경우에, 적어도 하나의 식별된 중단된 중요 태스크를 대체하기 위한 메이크업 작업을 생성하는 단계; 및
    상기 메이크업 작업을 수행하는 단계 - 상기 수행되는 메이크업 작업은 상기 메이크업 작업을 수행하도록 구성되는 복수의 태스크를 통해 수행됨 -
    를 포함하는 방법.
  7. 제6항에 있어서,
    태스크가 자동화된 알고리즘의 결과로서 중요한 것인지의 여부, 태스크가 사용자 지정의 결과로서 중요한 것인지의 여부를 식별하는 단계; 또는
    작업이 반복되는 빈도를 포함할 수 있는 기준을 통해 태스크가 중요한 것인지의 여부를 식별하는 단계 중 적어도 하나를 더 포함하는 방법.
  8. 데이터를 보호하기 위한 시스템으로서,
    데이터 보호 작업을 수행하도록 구성된 복수의 태스크를 통해 데이터를 보호하기 위한 동작을 개시하는 수단;
    상기 복수의 태스크 중 적어도 하나의 진행을 관리하는 수단 - 상기 관리는 상기 데이터 보호 작업의 적어도 하나의 중단된 태스크를 식별하는 것을 포함함 - ;
    상기 데이터 보호 작업으로부터의 적어도 하나의 태스크가 중요한(critical) 것인지의 여부를 인식하는 수단;
    적어도 하나의 중단된 중요 태스크의 인식 시에 메이크업 작업을 생성하는 수단;
    상기 메이크업 작업을, 인식된 중단된 중요 태스크들에 포퓰레이트(populate)하는 수단; 및
    중단된 비중요 태스크들이 상기 메이크업 작업의 일부가 되지 않도록 상기 중단된 비중요 태스크들을 폐기하는 수단
    을 포함하며,
    상기 수단들 중 적어도 하나는 적어도 하나의 컴퓨팅 디바이스 상에 존재하는 시스템.
  9. 제8항에 있어서,
    상기 복수의 태스크 각각을 실행함으로써 작업의 액션을 수행하는 수단;
    상기 복수의 태스크 중 적어도 2개를 병렬로 실행하는 수단;
    상기 복수의 태스크 중 적어도 2개를 직렬로 실행하는 수단;
    상기 복수의 태스크 중 적어도 하나를 복수의 에이전트로 수행하고, 상기 복수의 에이전트 중 적어도 2개를 서로 다른 위치에서 동작시키는 수단; 또는
    상기 복수의 태스크 중 적어도 하나가 실패할 수 있는 경우에도 작업을 완료하는 수단 중 적어도 하나를 더 포함하는 시스템.
  10. 제8항에 있어서,
    상기 복수의 태스크 각각을 실행하도록 태스크 실행기를 구성하는 수단을 더 포함하고, 상기 태스크 실행기는 태스크의 상기 진행을 판정하도록 실행하는 태스크를 폴링(poll)하는 시스템.
  11. 제8항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 수단;
    완료된 상기 작업의 태스크들을 식별하는 수단;
    미완료된 상기 작업의 태스크들을 식별하는 수단;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 수단;
    상기 실패한 태스크가 중요한 것이었는지의 여부를 판정하는 수단;
    중요한 태스크들을 메이크업 작업에 포함시키는 수단; 및
    비중요 태스크들을 메이크업 작업에서 배제시키는 수단
    을 더 포함하는 시스템.
  12. 제8항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 수단;
    완료된 상기 작업의 태스크들을 식별하는 수단;
    미완료된 상기 작업의 태스크들을 식별하는 수단;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 수단;
    진행중이었던 태스크를 식별하는 수단;
    상기 식별된 태스크를 재개시하는 수단; 및
    태스크 실패 통지를 상기 재개시된 태스크에 대한 실패 통지로서 식별하는 수단
    을 더 포함하는 시스템.
  13. 제8항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 수단;
    완료된 상기 작업의 태스크들을 식별하는 수단;
    미완료된 상기 작업의 태스크들을 식별하는 수단;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 수단; 및
    상기 태스크 실패를 이벤트 통지에 포함시키는 수단
    을 더 포함하는 시스템.
  14. 제8항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 수단;
    완료된 상기 작업의 태스크들을 식별하는 수단;
    미완료된 상기 작업의 태스크들을 식별하는 수단;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 수단; 및
    작업의 각 태스크에 대해 태스크 트레일(trail)을 분석하는 것을 포함하는, 완료된 상기 작업의 태스크들을 식별하는 수단
    을 더 포함하는 시스템.
  15. 제8항에 있어서,
    작업의 실패한 태스크로부터 태스크 실패 통지를 수신하는 수단;
    완료된 상기 작업의 태스크들을 식별하는 수단;
    미완료된 상기 작업의 태스크들을 식별하는 수단;
    상기 식별된 미완료된 태스크들을 포함하는 메이크업 작업을 생성하고 실행하는 수단; 및
    작업의 각 태스크에 대해 태스크 트레일을 분석하는 것을 포함하는, 미완료된 상기 작업의 태스크들을 식별하는 수단
    을 더 포함하는 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
KR1020050077759A 2004-09-09 2005-08-24 데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을만드는 방법, 시스템 및 장치 KR101150025B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/937,218 US7487395B2 (en) 2004-09-09 2004-09-09 Method, system, and apparatus for creating an architectural model for generating robust and easy to manage data protection applications in a data protection system
US10/937,218 2004-09-09

Publications (2)

Publication Number Publication Date
KR20060050607A KR20060050607A (ko) 2006-05-19
KR101150025B1 true KR101150025B1 (ko) 2012-06-01

Family

ID=35613819

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050077759A KR101150025B1 (ko) 2004-09-09 2005-08-24 데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을만드는 방법, 시스템 및 장치

Country Status (13)

Country Link
US (1) US7487395B2 (ko)
EP (2) EP1635259A3 (ko)
JP (1) JP4807988B2 (ko)
KR (1) KR101150025B1 (ko)
CN (1) CN100576134C (ko)
AU (1) AU2005203576B2 (ko)
BR (1) BRPI0503722A (ko)
CA (1) CA2515330C (ko)
MX (1) MXPA05009273A (ko)
MY (1) MY147620A (ko)
RU (1) RU2391697C2 (ko)
TW (1) TWI403890B (ko)
ZA (1) ZA200506335B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7567974B2 (en) 2004-09-09 2009-07-28 Microsoft Corporation Method, system, and apparatus for configuring a data protection system
US7502961B2 (en) * 2004-09-09 2009-03-10 Microsoft Corporation Method, system, and apparatus for providing alert synthesis in a data protection system
US8145601B2 (en) 2004-09-09 2012-03-27 Microsoft Corporation Method, system, and apparatus for providing resilient data transfer in a data protection system
US8090987B2 (en) * 2005-12-05 2012-01-03 Lg Electronics Inc. Imaging apparatus having automatic backup function and method for controlling the same
US7904759B2 (en) * 2006-01-11 2011-03-08 Amazon Technologies, Inc. System and method for service availability management
US8601112B1 (en) * 2006-03-14 2013-12-03 Amazon Technologies, Inc. Method and system for collecting and analyzing time-series data
US9037698B1 (en) 2006-03-14 2015-05-19 Amazon Technologies, Inc. Method and system for collecting and analyzing time-series data
JP4761538B2 (ja) * 2006-03-31 2011-08-31 キヤノン株式会社 デバイス管理システム、情報処理装置及びその制御方法、プログラム
US7836440B2 (en) * 2006-04-27 2010-11-16 Oracle America, Inc. Dependency-based grouping to establish class identity
JP2008009485A (ja) * 2006-06-27 2008-01-17 Fujitsu Ltd 仮想ストレージ制御装置及び仮想ストレージ制御プログラム
US10210340B2 (en) * 2007-07-05 2019-02-19 Blackberry Limited File sharing with a hostile system
US9176825B2 (en) 2008-12-31 2015-11-03 Symantec Corporation Granular application data lifecycle sourcing from a single backup
JP4886831B2 (ja) * 2009-10-15 2012-02-29 株式会社東芝 コンテンツ記録装置、再生装置、編集装置およびその方法
US8464229B2 (en) * 2009-12-29 2013-06-11 Microgen Aptitude Limited Creation of form-based software application in a graphical user interface (GUI) environment
RU2467389C1 (ru) * 2011-06-07 2012-11-20 Антон Андреевич Краснопевцев Способ защиты программно-информационного обеспечения от несанкционированного использования
US8726080B2 (en) * 2011-08-15 2014-05-13 International Business Machines Corporation Merging multiple contexts to manage consistency snapshot errors
RU2469388C1 (ru) * 2011-09-19 2012-12-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Способ обращения к данным, хранимым в параллельной файловой системе, с иерархической организацией памяти
JP5735702B2 (ja) * 2012-03-16 2015-06-17 株式会社日立製作所 情報処理システム及び情報処理システムの制御方法
US9270793B2 (en) 2012-06-19 2016-02-23 Microsoft Technology Licensing, Llc Enhanced data protection for message volumes
US10203904B1 (en) * 2013-09-24 2019-02-12 EMC IP Holding Company LLC Configuration of replication
JP6369162B2 (ja) * 2014-06-25 2018-08-08 富士通株式会社 監視装置、情報処理システム及び監視方法
US9870295B2 (en) * 2014-07-18 2018-01-16 General Electric Company Automation of workflow creation and failure recovery
US9939792B2 (en) * 2014-12-30 2018-04-10 Futurewei Technologies, Inc. Systems and methods to adaptively select execution modes
US10558538B2 (en) 2017-11-22 2020-02-11 Netapp, Inc. Erasure coding repair availability
US9626245B2 (en) 2015-02-20 2017-04-18 Netapp, Inc. Policy based hierarchical data protection
US11423343B2 (en) * 2015-03-25 2022-08-23 Kyndryl, Inc. Dynamic construction of cloud services
US9575804B2 (en) 2015-03-27 2017-02-21 Commvault Systems, Inc. Job management and resource allocation
WO2017105386A1 (en) * 2015-12-14 2017-06-22 Hitachi Data Systems Corporation Restore points based on milestone versions
RU2647648C1 (ru) * 2017-04-13 2018-03-16 Общество с ограниченной ответственностью "Научно-технический центр РЕЛЭКС" (ООО "НТЦ РЕЛЭКС") Способ организации хранения исторических дельт записей
US10983950B2 (en) * 2017-11-10 2021-04-20 Palantir Technologies Inc. Approaches for managing data retention lifecycle
US10798102B2 (en) * 2017-11-14 2020-10-06 International Business Machines Corporation Protecting data at an object level
CN108985088A (zh) * 2018-07-25 2018-12-11 江阴嘉恒软件技术有限公司 一种控制计算机数据访问的方法
CN110750806A (zh) * 2019-07-16 2020-02-04 黑龙江省科学院自动化研究所 一种基于tp-mfsa抑制发布的高维位置轨迹数据隐私保护发布系统及方法
US11363029B2 (en) 2020-01-08 2022-06-14 Bank Of America Corporation Big data distributed processing and secure data transferring with hyper fencing
US11314874B2 (en) 2020-01-08 2022-04-26 Bank Of America Corporation Big data distributed processing and secure data transferring with resource allocation and rebate
US11321430B2 (en) 2020-01-08 2022-05-03 Bank Of America Corporation Big data distributed processing and secure data transferring with obfuscation
US11379603B2 (en) 2020-01-08 2022-07-05 Bank Of America Corporation Big data distributed processing and secure data transferring with fallback control
US11334408B2 (en) 2020-01-08 2022-05-17 Bank Of America Corporation Big data distributed processing and secure data transferring with fault handling
US11249988B2 (en) 2020-05-20 2022-02-15 Snowflake Inc. Account-level namespaces for database platforms
US11593354B2 (en) 2020-05-20 2023-02-28 Snowflake Inc. Namespace-based system-user access of database platforms
US11501010B2 (en) * 2020-05-20 2022-11-15 Snowflake Inc. Application-provisioning framework for database platforms

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61279959A (ja) * 1985-06-05 1986-12-10 Nec Corp 主記憶退避出力方式
DE3750662T2 (de) * 1986-08-12 1995-02-16 Hitachi Ltd Mikroprozessor zur Datentransferwiederholung.
JPH04137046A (ja) * 1990-09-28 1992-05-12 Toshiba Corp 電子計算機のオペレーティングシステム
US5241668A (en) * 1992-04-20 1993-08-31 International Business Machines Corporation Method and system for automated termination and resumption in a time zero backup copy process
JPH07146809A (ja) * 1993-11-22 1995-06-06 Hitachi Ltd 情報処理装置
US5596710A (en) * 1994-10-25 1997-01-21 Hewlett-Packard Company Method for managing roll forward and roll back logs of a transaction object
JPH08314783A (ja) * 1995-05-17 1996-11-29 Hitachi Ltd データ保全方式
JPH09160818A (ja) * 1995-12-06 1997-06-20 Kokusai Electric Co Ltd ファイルの自動バックアップ方法
US6126328A (en) * 1997-02-28 2000-10-03 Oracle Corporation Controlled execution of partitioned code
JPH11134235A (ja) * 1997-10-31 1999-05-21 Hitachi Ltd 外部記憶装置故障時の回復支援方法
US6182238B1 (en) * 1998-05-14 2001-01-30 Intel Corporation Fault tolerant task dispatching
JP2000148604A (ja) * 1998-11-12 2000-05-30 Hitachi Ltd 記憶装置の制御方法
JP2001350660A (ja) * 2000-06-06 2001-12-21 Toshiba Corp プログラム実行管理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US6662281B2 (en) * 2001-01-31 2003-12-09 Hewlett-Packard Development Company, L.P. Redundant backup device
US6751753B2 (en) * 2001-02-27 2004-06-15 Sun Microsystems, Inc. Method, system, and program for monitoring system components
US6772178B2 (en) * 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system
US7320035B2 (en) * 2002-03-01 2008-01-15 Sun Microsystems, Inc. Object mutation determination for incremental state saves
US7363617B2 (en) * 2002-05-23 2008-04-22 International Business Machines Corporation Database breakpoint apparatus and method
JP4056794B2 (ja) * 2002-05-28 2008-03-05 株式会社日立製作所 ストレージシステムの制御方法及びストレージシステム
US6721907B2 (en) * 2002-06-12 2004-04-13 Zambeel, Inc. System and method for monitoring the state and operability of components in distributed computing systems
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7206836B2 (en) * 2002-09-23 2007-04-17 Sun Microsystems, Inc. System and method for reforming a distributed data system cluster after temporary node failures or restarts
US7178065B2 (en) * 2003-04-02 2007-02-13 Sun Microsystems, Inc. System and method for measuring performance with distributed agents
US7174479B2 (en) * 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
US7917910B2 (en) * 2004-03-26 2011-03-29 Intel Corporation Techniques to manage critical region interrupts
US7096392B2 (en) * 2004-05-07 2006-08-22 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection

Also Published As

Publication number Publication date
JP4807988B2 (ja) 2011-11-02
EP1635259A3 (en) 2012-04-18
AU2005203576A1 (en) 2006-03-23
EP3026561A2 (en) 2016-06-01
CA2515330A1 (en) 2006-03-09
US20060053334A1 (en) 2006-03-09
JP2006079626A (ja) 2006-03-23
CN1760789A (zh) 2006-04-19
MXPA05009273A (es) 2006-03-13
BRPI0503722A (pt) 2006-04-18
MY147620A (en) 2012-12-31
ZA200506335B (en) 2007-04-25
KR20060050607A (ko) 2006-05-19
RU2005128122A (ru) 2007-03-20
US7487395B2 (en) 2009-02-03
TWI403890B (zh) 2013-08-01
EP3026561A3 (en) 2016-07-13
EP1635259A2 (en) 2006-03-15
RU2391697C2 (ru) 2010-06-10
AU2005203576B2 (en) 2010-08-05
CA2515330C (en) 2014-05-13
TW200609826A (en) 2006-03-16
CN100576134C (zh) 2009-12-30

Similar Documents

Publication Publication Date Title
KR101150025B1 (ko) 데이터 보호 시스템에서 강건하고 관리하기 쉬운 데이터보호 애플리케이션들을 생성하기 위한 아키텍쳐 모델을만드는 방법, 시스템 및 장치
KR101149975B1 (ko) 데이터 보호 시스템에서 경보 통합을 제공하기 위한 방법, 시스템 및 장치
EP1635244B1 (en) Method and system for creating an archive routine for protecting data in a data protection system
US8078587B2 (en) Configuring a data protection system
US9372906B2 (en) Method, system, and apparatus for providing resilient data transfer in a data protection system
US7631194B2 (en) Method, system, and apparatus for creating saved searches and auto discovery groups for a data protection system
US7865470B2 (en) Method, system, and apparatus for translating logical information representative of physical data in a data protection system

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: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8