KR100800342B1 - 분산형 시스템의 백업 펌웨어 - Google Patents

분산형 시스템의 백업 펌웨어 Download PDF

Info

Publication number
KR100800342B1
KR100800342B1 KR1020057010750A KR20057010750A KR100800342B1 KR 100800342 B1 KR100800342 B1 KR 100800342B1 KR 1020057010750 A KR1020057010750 A KR 1020057010750A KR 20057010750 A KR20057010750 A KR 20057010750A KR 100800342 B1 KR100800342 B1 KR 100800342B1
Authority
KR
South Korea
Prior art keywords
code
identifier
backup
module
processor
Prior art date
Application number
KR1020057010750A
Other languages
English (en)
Other versions
KR20050088172A (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 KR20050088172A publication Critical patent/KR20050088172A/ko
Application granted granted Critical
Publication of KR100800342B1 publication Critical patent/KR100800342B1/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/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2023Failover techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

네트워크 내의 모듈들의 분산형 시스템에서, 각각의 모듈은 관련 프로세서 노드를 구비하고, 그 관련 프로세서 노드는 그 관련 모듈을 동작시키기 위한 프로세싱 유닛을 포함한다. 프로세싱 유닛은 네트워크 내에서의 통신을 위한 프로세서 인터페이스와, 그 관련 모듈을 동작시키기 위한 프로세싱 유닛을 위한 코드를 저장하고 네트워크 내의 다른 프로세서 노드의 적어도 하나의 다른 프로세싱 유닛을 위한 백업 코드를 저장하기 위한 비휘발성 메모리를 포함하는데, 이 백업 코드는 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이다. 요청에 응답하여, 프로세싱 유닛은 요청 프로세서 노드와 관련된 모듈을 동작시키기 위한 코드를 복구하는데 사용되도록 백업 코드를 프로세서 노드에 공급한다.

Description

분산형 시스템의 백업 펌웨어{BACKUP FIRMWARE IN A DISTRIBUTED SYSTEM}
본 발명은 분산형 시스템의 모듈들에 관한 것이고, 보다 상세하게는 관련 프로세서 노드들이 네트워크 내에서 상호접속되게 하고, 그 프로세서 노드들이 관련 모듈을 동작시키기 위한 코드들 구비하고 있는 적어도 복수인 모듈들에 관한 것이다.
분산형 시스템들은 복수의 모듈들, 네트워크 내에서 상호접속된 관련 프로세서 노드들을 구비한 적어도 몇몇의 모듈들로 구성될 수 있다. 프로세서 노드들은 통상 관련 모듈들을 동작시키기 위한 프로세싱 유닛과 네트워크 내에서 프로세서 노드들의 통신을 제공하는 프로세서 인터페이스로 구성된다. 프로세싱 유닛은 코드, 즉 컴퓨터 판독 가능 프로그램 코드를 실행하는데, 이 코드는 비휘발성 메모리와 같은, 메모리에 저장되어서 관련 모듈을 동작시킨다. 모듈들과 관련 프로세서들은 내장형(embedded) 시스템이라 불릴 수 있다.
분산형 시스템의 일 예는 저장 장치 수납용 선반들(storage shelves) 내에 리무버블(removable) 데이터 저장 매체를 저장하는 자동형 데이터 저장 라이브러리를 포함하고, 그 리무버블 데이터 저장 매체 상의 데이터 판독 및/또는 기록을 위하여 적어도 하나의 데이터 저장 드라이브를 구비한다. 액세서(accessor) 로봇은 리무버블 데이터 저장 매체(카트리지의 형태일 수 있음)를 데이터 저장 드라이브들 및 저장 장치 수납용 선반들 사이에서 운반한다. 조작자는 조작자 패널(operator panel)을 통하여 라이브러리와 통신할 수 있으며, 또한 도어를 열고 라이브러리로부터 카트리지들을 삽입하거나 제거하는 것과 같은 라이브러리와의 다른 상호작용을 감지할 수도 있다. 또한, 제어기는 라이브러리와의 호스트 상호작용을 제어하는데, 이는 호스트와 데이터 저장 드라이브들 간의 상호작용을 포함할 수 있다.
IBM 3584 울트라스케일러블 테이프 라이브러리(UltraScalable Tape Library)의 예에서, 2 개의 프로세서 노드들이 액세서 로봇 모듈들을 위해서 제공되고, 액세서 제어기는 그리퍼(gripper)에 의한 카트리지 처리, 액세서 작업 조회, 카트리지 라벨들의 판독 등을 포함하는 기본 액세서 기능들을 제어한다. 조작자 패널 제어기 프로세서 노드는 디스플레이 출력, 키보드 입력, I/O 스테이션 센서들 및 잠금(lock)들 등을 포함하는 기본 조작자 패널 모듈 기능들을 제어한다. 매개물 교체자 제어기(medium changer controller) 프로세서 노드는, 호스트 상호작용, 호스트 통신, 드라이브 통신, "이더넷(Ethernet)" 통신, 전력 관리 등을 포함하는 제어기 모듈 기능들을 제어한다. 프로세서 노드들은 CAN(Controller Area Network)과 같은 네트워크에 의해서 상호접속되는데, 이는 멀티-드롭(multi-drop) 네트워크를 포함한다. 다른 액세서 로봇 모듈들과 조작자 스테이션 모듈들 각각이 관련 프로세서 노드들과 함께 추가된다.
분산형 시스템의 다른 예들이 산업 제어 시스템들과 자동차 및 비행기 다중-프로세서 시스템을 제어한다.
2001년 1월 5일 제출된 미국 특허 출원 제09/755,832호의 분산형 시스템에서, 완전한 코드 이미지가 모듈들 중 임의의 모듈을 동작시키기 위해 사용될 수 있는 코드를 제공하는 프로세서 노드들 각각을 위하여 제공된다. 2000년 12월 13일 제출된 미국 특허 출원 제09/734,917호의 분산형 시스템에서, 마스터 코드 이미지가 비휘발성 저장 매체를 구비할 수 있는 마스터 소스에 의하여 제공될 수 있으며, 전력이 차단된 임의의 프로세서 노드의 비휘발성 메모리를 리프레쉬(refresh)하기 위하여 사용될 수 있다.
도입되는 이슈는 그 코드 이미지를 복구할 필요가 있는 프로세서 노드에 의하여 사용될 수 있는 백업 코드 또는 코드의 문제이다. 예컨대, 프로세서 노드들 중 하나의 노드에 대한 코드 이미지는 동작 중에 일정한 방식으로 타협될 수 있는데, 프로세서 노드에 의하여 사용되는 코드 이미지는 부분적으로 삭제될 수 있고, 이 모듈은 대체될 수 있으며, 프로세서 노드 코드 이미지가 올바르지 않거나, 하나 이상의 다른 프로세서 노드들이 업데이트되는 경우, 노드의 프로세서는 네트워크로부터와 같이 사용 불가(available)일 수 있다. 프로세서 노드는 그 뒤 에러 상태로 진입할 수 있는데, 이는 조작자 개입을 요구할 수 있다. 코드의 백업 카피(backup copy)가 그 뒤 에러가 있는 프로세서 노드의 모듈의 기능을 복구하기 위하여 배치되고 사용될 수 있다. 조작자는 다른 프로세서 노드로부터 모든 프로세서 노드들에 대한 코드를 포함한 완전한 코드 이미지를 선택하거나, 마스터 비휘발성 저장 매체로부터 마스터 코드 이미지를 선택할 수 있지만, 우선은 그 코드 이미지가 정확하고 시스템 백업으로서 기능할 수 있다는 것인 확인 되어야 한다. 각 프로세서 노드 또는 마스터 소스에서 복사되는 완전한 코드 이미지를 사용하는데 방해가 되는 것들은, 코드의 전체를 향한 비휘발성 메모리에 대한 요구와, 하나의 프로세서 노드 모듈에 대한 오직 하나의 코드가 실제로 업데이트되는 경우에조차 완전한 또는 마스터 코드 이미지를 업데이트해야할 필요성이다. 상이한 프로세서 노드들 상의 상이한 레벨들의 완전한 코드가 존재하는 경우, 하나의 프로세서 노드 상의 하위등급의 완전한 코드는 올바르지 않거나, 다른 프로세서 노드를 위한 잠재적인 백업으로서 기능할 수 없을 수 있다.
본 발명에 따른 분산형 시스템(distributed system), 분산형 시스템을 위한 프로세서 노드, 분산형 시스템을 위한 모듈, 자동형 데이터 저장 라이브러리, 및 컴퓨터 프로그램 제품이 분산형 시스템의 프로세서 노드들에 대한 백업 코드를 제공한다.
일 실시예에서, 모듈들의 분산형 시스템은 네트워크 및 복수의 모듈들을 포함하고, 모듈은 적어도 하나의 관련 프로세서 노드를 포함한다. 관련 프로세서 노드는 관련 모듈과; 네트워크의 프로세서 노드의 통신을 제공하는 프로세서 인터페이스와; 관련 모듈을 동작시키는 프로세싱 유닛에 대한 코드를 저장하고, 네트워크 내의 다른 프로세서 노드의 적어도 하나의 다른 프로세싱 유닛에 대한 백업 코드를 저장하는 비휘발성 메모리를 포함한다. 그러므로 함께 사용되는 경우 프로세서 노드들의 백업 이미지는 시스템 집합의 일부 또는 전부를 형성한다. 백업 코드 이미지들과 동작 코드 이미지의 결과적인 시스템 집합은 각각의 프로세서 노드에서, 전체 시스템 집합에 필요한 공간 전체의 오직 일부만을 사용한다. 결과적으로, 모든 모듈들에 대한 완전한 코드 이미지가 각 모듈에서 복제되는 시스템과 비교하여, 상당한 비휘발성 메모리 저장 공간이 절약된다.
다른 실시예에서, 모듈 프로세싱 노드의 프로세싱 유닛은 프로세서 인터페이스에서 수신된 백업 코드에 대한 요청에 응답하여, 프로세서 인터페이스에 백업 코드를 공급한다. 결과적으로, 백업 코드는 요청하는 프로세서 노드와 관련된 모듈을 동작시키는 코드를 복구하는데 사용되기 위하여, 요청 프로세서 노드에 공급될 수 있다.
다른 실시예에서, 또한 프로세싱 유닛은 백업 코드 유형의 식별자를 유지한다. 예컨대, 백업 코드의 유형은 그 백업 코드가 동작시키려는 모듈의 유형과 관련될 수 있다. 프로세싱 유닛은 프로세서 인터페이스에서 수신된 식별자에 대한 요청에 응답하여 프로세서 인터페이스에 식별자를 제공한다.
다른 실시예에서, 예컨대 그 코드의 복구를 요청하는 프로세싱 유닛은 복구 신호에 응답하여 백업 코드를 위한 요청을 프로세서 인터페이스에 전달하는데, 그 백업 코드는 관련 모듈을 동작시키는 프로세싱 유닛에 대한 코드를 포함한다.
또한, 프로세싱 유닛은 관련 모듈을 동작시키는 코드 유형의 식별자를 유지할 수 있고; 그 코드의 복구 요청 시, 백업 코드 유형의 식별자에 대한 요청을 프로세서 인터페이스에 전달한다. 그 뒤, 프로세서 인터페이스에서의 요청에 대한 응답 수신에 응답하여, 프로세싱 유닛은 그 수신된 식별자를 유지된 식별자와 비교하고; 그 관련 모듈을 동작시키는 코드의 교체를 위하여 식별자가 유효하다는 것을 나타내는 비교에 응답하여, 백업 코드를 수신하고 백업 코드로써 관련 모듈을 동작시키는 코드의 적어도 일부를 교체한다.
다른 실시예에서, 또한 프로세싱 유닛은 관련 모듈을 동작시키는 백업 코드를 구비한 적어도 하나의 다른 프로세서 노드의 식별자를 유지하고; 백업 코드에 대한 다른 프로세서 노드로의 요청을 프로세서 인터페이스에 전달하기 위하여 복구 신호에 응답하는 로직을 포함한다. 또한, 프로세싱 유닛은 관련 모듈을 동작시키기 위하여 코드 레벨의 식별자를 유지할 수 있으며, 다른 프로세서 노드의 백업 코드 레벨의 식별자 수신에 응답하여 그 수신된 식별자를 유지된 식별자와 비교하고; 그 관련 모듈을 동작시키는 코드의 교체를 위하여 그 식별자가 유효하다는 것을 나타내는 비교에 응답하여 그 관련 모듈을 동작시키는 코드의 적어도 일부를 백업 코드와 교체한다.
다른 실시예에서, 프로세서 노드의 프로세싱 유닛은 또한 백업 코드의 레벨 식별자를 유지하고, 또한 백업 코드의 업데이트에 응답하여 그 식별자를 업데이트하고 네트워크 상의 프로세서 인터페이스 상의 업데이트의 통보를 전달하는 로직을 포함한다.
도 1은 본 발명을 구현하는 분산형 시스템의 모듈과 프로세싱 노드들의 실시예의 블록도이다.
도 2a, 2b, 2c 및 2d는 도 1의 프로세싱 노드들의 비휘발성 메모리들의 도식적인 표현이다.
도 3, 4 및 5는 본 발명의 컴퓨터 구현 방법의 예를 나타내는 흐름도이다.
도 6a 및 6b는 본 발명에 따른 분산형 시스템의 예를 구현할 수 있는 자동형 데이터 저장 라이브러리의 등각 시야도(isometric view)이다.
도 7은 본 발명에 따른 분산형 시스템을 사용하는 도 6a 및 6b의 자동형 데이터 저장 라이브러리의 실시예를 나타내는 블록도이다.
도 8a, 8b, 8c 및 8d는 도 7의 4 개의 프로세싱 노드들의 비휘발성 메모리들을 나타내는 도식도이다.
도 1에 관하여, 분산형 시스템(100)의 실시예는 본 시스템의 노드들의 프로세서들과 함께 복수의 모듈들(101, 102, 103, 104)을 포함하고, 네트워크(110)는 그 시스템의 모듈들과 상호접속하도록 기능한다. "네트워크"는 2 이상의 노드들 사이에서의 직접 또는 간접 통신을 포함하고, 하나 이상의 서브네트워크(subnetwork)를 포함하는 것으로서 규정된다. 설명되는 모듈들 각각은 적어도 하나의 관련 프로세서 노드를 포함한다. 그 관련 프로세서 노드는 프로세싱 유닛들(111, 112, 113, 114)로서 도시되는 관련 모듈을 동작시키는 프로세싱 유닛과; 인터페이스들(121, 122, 123, 124)로 도시되는 네트워크(110)의 프로세서 노드의 통신을 제공하는 프로세서 인터페이스와; 비휘발성 메모리(131, 132, 133, 134)로서 도시되는 관련 모듈을 동작시키는 프로세싱 유닛에 대한 저장 코드를 위한 비휘발성 메모리를 포함한다. 도 1의 예에서, 검토될 바와 같이 추가적인 비휘발성 메모리(135)가 모듈(101)의 프로세싱 노드를 위하여 제공된다. 비휘발성 메모리는 NVRAM(nonvolatile random access memory), PROM(programmable read only memory), ROM(read only memory), 플래시 메모리(flash memory), EEPROM(electrically erasable programmable read only memory), 배터리 백업 RAM(random access memory), 하드 디스크 드라이브 등을 포함할 수 있다. 또한, 비휘발성 메모리가 프로세싱 유닛에 배치될 수 있다. 프로세싱 유닛(111, 112, 113, 114)은 모듈 및 그 구성 요소들을 동작시키는 프로세서를 포함하는데, 그에 의하여 시스템을 동작시킨다. 모듈 구성 요소들은 구성 요소들(141, 142, 143, 144)로서 도시된다. 프로세싱 유닛은 종래의 공지된 임의의 마이크로프로세서 장치를 포함하고, "펌웨어"라고 불리는 프로그램 코드의 제어 하에서 동작하는데, 이는 그 코드가 예컨대, 라이브러리를 구성하는 모듈 하드웨어와 관련되어 있기 때문이다. 그 코드는 프로세싱 유닛들이 그 시스템의 구성 요소들을 동작하게 하는 것이다. 그 코드는 통상 비휘발성 메모리에서 유지되지만, 그 코드의 일부 또는 전부는 프로세싱 유닛을 동작시키는 프로세싱 유닛의 고속 RAM(random access memory)으로 전달될 수 있고, 필요하다면 비휘발성 메모리로부터 액세스된다.
도 1 및 2a, 2b, 2c 및 2d에 관하여, 본 발명의 실시예에 따르면, 비휘발성 메모리(131, 132, 133, 134)는 관련 모듈을 동작시키고 네트워크 내의 다른 프로세서 노드의 적어도 하나의 다른 프로세싱 유닛에 대한 백업 코드를 저장하는 프로세싱 유닛에 대한 코드(151, 152, 153, 154)를 저장하는데, 그 백업 코드는 다른 프로세서 노드의 관련 모듈을 동작시키는 것이다.
예로서, 도 1 및 2a의 비휘발성 메모리(135)는 모듈의 프로세싱 노드의 프로 세싱 유닛(112)에 대한 백업 코드(162)를 저장한다. 만약 모듈(102)의 프로세서 노드에 대한 도 1 및 2b의 코드 이미지(152)가 동작 중 일정한 방식으로 타협되고 일부 삭제되고, 그 모듈이 교체되고 그 코드 이미지가 올바르지 않거나, 하나 이상의 다른 프로세서 노드들이 업데이트되는 경우 노드의 프로세서가 네트워크로부터와 같이 사용 불가라면, 프로세싱 유닛(112)은 복구 프로세스를 시작하여 백업 코드(162)에 대한 요청을 전달한다.
도 1 및 2a, 2b, 2c 및 2d에 관하여, 모듈(102)의 프로세서 노드의 비휘발성 메모리(132)는 모듈(101)을 동작시키는 프로세싱 노드의 프로세싱 유닛(111)에 대한 백업 코드(161)를 저장하고 모듈(103)을 동작시키는 모듈(103)의 프로세싱 노드의 프로세싱 유닛(113)에 대한 백업 코드의 카피(copy)를 저장한다. 모듈(103)의 프로세서 노드의 비휘발성 메모리(133)는 모듈(104)을 동작시키는 프로세싱 노드의 프로세싱 유닛(114)에 대한 백업 코드(164)를 저장한다. 모듈(104)의 프로세서 노드의 비휘발성 메모리(134)는 모듈(103)을 동작시키는 프로세싱 노드의 프로세싱 유닛(113)에 대한 백업 코드의 제2 카피(173)를 저장한다.
본 발명에 따라서, 백업 및 복구 프로세스를 수행하는 코드는 동작 코드(151)와 같은 모듈에 대한 동작 코드에서 실행될 수 있고, 프로세싱 유닛(112)과 같은 프로세싱 유닛에서 유지되는 코드에서 실행될 수 있거나, 비휘발성 메모리(133)의 코드(177)와 같은 비휘발성 메모리에서 개별적으로 저장될 수 있다.
그러므로, 여기서 용어 "비휘발성 메모리"는 하나 이상의 장치, 프로세서의 일부를 형성하거나, 프로세서 일부로부터 분리되는, 비휘발성 방식으로 코드를 저 장할 수 있는 장치이다.
백업 코드 이미지들은 분산형 형식으로 저장되어서 백업 코드 이미지들 및/또는 동작 코드 이미지들이 시스템 집합의 일부 또는 전부를 형성하기 때문에, 각 백업 코드 이미지는 시스템 집합의 일부를 형성한다. 결과적으로 모든 모듈들에 대한 완전한 코드 이미지(complete code image)가 각 모듈에서 복제되는 시스템에 비하여 상당한 비휘발성 메모리 저장 공간이 절약된다.
예컨대, 만약 분산형 시스템에 대한 코드 이미지들이 도 2a, 2b, 2c, 2d 에 서 설명된다면, 비휘발성 메모리(135)에 저장된 모듈(102)의 프로세싱 유닛(112)를 위한 백업 코드(162)는 시스템 집합의 아주 일부분만을 차지한다. 예컨대, 각 모듈에서 시스템의 모든 모듈들에 대한 종래의 완전한 동작 코드 이미지를 복제하도록 요청되는 비휘발성 메모리와 집합의 일부로서 비휘성 메모리(135)를 비교할 수 있다.
개별적인 코드 로드(load)들보다 오히려 집합 코드 로드(aggregate code load)를 사용하여 시스템의 펌웨어를 업데이트하는 것이 바람직할 수 있다. 또한, 호환 가능 레벨들의 집합 코드 로드의 일부 또는 전부를 구비하는 것이 바람직할 수 있다. 시스템 코드 로드(system code load)가 집합으로서 업데이트되지 않은 경우에조차, 개별적인 코드 로드들은 집합으로서 간주될 수 있다.
본 발명에 따른 백업 및 복구 프로세스의 일 실시예에서, 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 그 관련 모듈을 동작시키는 코드의 유형의 식별자를 유지하고; 그 코드의 복구를 요청하는 경우 백업 코드의 유형의 식별자에 대한 요 청을 프로세서 인터페이스에 전달할 수 있다. 백업 코드의 유형은 여기에서 백업 코드가 동작시키고자 하는 모듈의 종류를 나타내는 것으로 규정된다. 식별자는 백업 및 복구 코드의 일부로서 설정되고 유지될 수 있거나, 그 프로세서 노드와의 모듈 인터페이스의 일부일 수 있다. 그러므로 "유지된다"는 용어는 식별자에 액세스되는 것으로 규정된다. 식별자의 예는 워드에서 "1" 상태로 설정되는 비트 위치를 포함한다. 프로세싱 유닛들은 또한 그 관련 비휘발성 메모리에 저장되는 백업 코드 유형의 식별자를 유지할 수 있다. 식별자는 백업 및 복구의 일부로서 설정되고 유지될 수 있거나, 비휘발성 메모리에 저장된 백업 코드의 일부를 포함할 수 있다. 그러므로 다시 "유지된다"는 용어는 식별자로 액세스되는 것으로 규정된다. 그러므로 비휘발성 메모리(132)에 저장된 백업 코드(161)의 유형은 모듈(101)을 포함하는 모듈의 유형을 동작시키기 위한 것이다. 프로세싱 유닛은 프로세서 인터페이스에서 수신된 식별자에 대한 요청에 응답하여 프로세서 인터페이스에 식별자를 제공한다. 예컨대, 만약 모듈(101)에 대한 동작 코드가 복구를 요청한다면, 그 관련 인터페이스(122, 123, 124)에서 식별자에 대한 요청을 수신하는 각각의 프로세싱 유닛들(112, 113, 114)은 그 관련 비휘발성 메모리에 저장된 백업 코드의 식별자, 개별적으로는 모듈(101)을 동작시키는 백업 코드(161)와, 모듈(103)을 동작시키는 백업 코드(163)와, 모듈(104)을 동작시키는 백업 코드(164)와, 모듈(103)을 동작시키는 백업 코드(173)의 식별자와 응답한다. 선택적으로, 동작 코드는 다른 유사한 모듈에 대한 백업 코드로서 사용될 수 있거나, 백업 코드 및 동작 코드는 검토될 바와 같이 단일 유닛을 포함할 수 있다.
그 뒤, 프로세서 인터페이스(즉, 프로세서 인터페이스 121)에서의 요청에 응답을 수신하는 것에 응답하여, 요청 프로세싱 유닛(즉, 프로세싱 유닛 111)은 수신된 식별자를 유지된 식별자와 비교하고, 그 관련 모듈을 동작시키는 코드의 교체를 위한 식별자가 유효하다는 것을 나타내는 비교에 응답하여[모듈(102)에 저장된 백업 코드(161)를 위한 수신된 식별자], 백업 코드를 요청하고, 백업 코드를 수신하여(예컨대, 백업 코드 161), 그 관련된 모듈을 동작시키는 코드(즉, 코드 151)의 적어도 일부를 백업 코드로 교체한다. 동일한 기능의 다른 실시예로서, 요청 프로세서 노드는 프로세서 인터페이스의 백업 코드의 소망하는 유형으로 요청을 전달한다. 이러한 예에서, 관련 비휘발성 메모리에 저장된 소망하는 유형의 백업 코드를 구비한 프로세싱 유닛만이 백업 코드 유형의 식별자로 응답한다[예컨대, 모듈(102)의 프로세싱 유닛(112)은 백업 코드(161) 유형의 식별자를 전달함].
다른 실시예에서, 프로세싱 유닛은 또한 프로세싱 유닛과 관련된 모듈을 동작시키는 백업 코드를 구비한 적어도 하나의 다른 프로세서 노드의 식별자를 유지한다. 이것은 예컨대, 모듈(101)을 동작시키는 백업 코드(161)를 구비하는 것처럼, 모듈(102)의 프로세싱 노드의 식별자를 유지한다. 예컨대, 프로세싱 유닛(111)은 백업 코드를 위한 모듈(102)의 프로세서 노드로의 요청을 프로세서 인터페이스에 전달하기 위하여 복구 신호에 응답하고, 프로세싱 유닛(112)은 비휘발성 메모리(132)에서 백업 코드를 검색하여 모듈(101)의 프로세서 노드로 인터페이스(122)를 통하여 백업 코드(161)를 전달한다.
또한, 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 그 관련 모듈을 동작시 키는 코드의 레벨 식별자를 유지할 수 있고, 다른 프로세서 노드의 백업 코드(예컨대, 백업 코드 161)의 레벨 식별자를 수신하는 것에 응답하여 수신된 식별자를 유지된 식별자와 비교하고; 관련 모듈을 동작시키는 코드의 교체를 위하여 식별자가 유효하다는 것을 나타내는 비교에 응답하여, 그 관련 모듈(예컨대, 코드 151)을 동작시키는 코드의 적어도 일부분을 백업 코드(예컨대, 백업 코드 161)로 교체한다.
다른 실시예에서, 백업 코드는 예컨대, 새로운 레벨로 업데이트될 수 있다. 프로세서 노드의 프로세싱 유닛은 또한 백업 코드의 레벨의 식별자를 유지하고; 또한 그 식별자를 업데이트하고 네트워크 상의 프로세서 인터페이스로 업데이트의 통보를 전달하는 것에 응답하는 로직을 포함한다. 그 통보는 모든 다른 프로세서 노드들로 방송될 수 있거나, 그 코드를 복구하는 백업 코드를 사용하는 프로세서 노드로 직접 전달될 수 있다. 예컨대, 모듈(104)의 비휘발성 메모리(134)에 저장된 백업 코드(173)로의 업데이트에 응답하여, 프로세싱 유닛(114)은 백업 코드의 레벨 식별자를 업데이트하고 모듈(103)의 프로세서 노드로 식별자 업데이트의 통보를 전달한다. 만약 모듈(103)의 프로세서 노드를 위한 백업 코드의 다른 카피(163)가 업데이트되지 않고, 동작 코드(153)가 또한 업데이트되었다면, 백업 코드의 카피(173)만이 유효할 것이다. 반대로, 만약 동작 코드(153)가 백업 코드 카피(163)와 동일한 레벨에 있었다면, 백업 코드의 카피(163)만이 유효할 것이다.
도 3 과 도 1 및 2a, 2b, 2c 및 2d와 관련하여, 복구 프로세스의 일 실시예가 단계(199)에서 시작하는 것으로 설명된다. 단계(199)에서 "복구 신호"라는 용어는, 상술한 바와 같이 프로세서 노드를 동작시키는 코드 이미지가 일정한 방식으로 타협되었거나 타협되는 중이라는 검출로서 규정된다. 다른 단계(201)는 코드가 복구될 프로세서 노드의 프로세싱 유닛이 프로세서 노드를 위한 백업 코드를 구비한 프로세싱 유닛을 알고 있는지 여부를 나타낸다. 예컨대, 모듈(101)의 프로세싱 유닛(111)은 모듈(101)을 동작시키는 백업 코드(161)를 구비함으로써 모듈(102)의 프로세싱 노드의 동일성을 유지하는데, 이는 단계(201)에서 "예"를 의미한다. 이 프로세스는 그 뒤 단계(205)로 이어진다. 만약 백업 코드를 구비한 프로세싱 유닛이 코드가 복구될 프로세서 노드에 알려지지 않는다면("아니오"), 프로세스는 단계(206)로 이어진다. 단계(201)는 일반적인 백업 및 복구 프로세스에서의 단계이고, 코드는 대신에 백업 코드 위치들이 알려진 백업 및 복구 프로세스를 위한 직접적인 액세스 단계(206)로 프로그램될 수 있거나, 백업 코드 위치들이 알려지지 않은 백업 및 복구 프로세스를 위한 직접 액세스 단계(206)로 프로그램될 수도 있다. 만약 그렇다면, 다른 레그(leg)의 프로세스 단계들이 프로세스로부터 삭제될 수 있다.
단계(206)에서, 코드가 복구될 프로세서 노드의 프로세싱 유닛이 백업 코드의 유형 및/또는 레벨의 식별자를 위한 요청을 관련 프로세서 인터페이스에 전달한다. 상술한 바와 같이, 하나의 실시예에서, 요청은 오직 다른 프로세서 노드들의 모두로 공급되고, 동일한 기능의 다른 실시예로서, 요청 프로세서 노드는 백업 코드의 소정의 유형 및/또는 레벨을 사용하여 요청을 프로세서 인터페이스에 전달한다. 이러한 제2 예에서, 관련 비휘발성 메모리에 저장된 소정의 유형 및/또는 레벨의 백업 코드를 구비한 프로세싱 유닛만이 백업 코드의 유형 및/또는 레벨의 식별자를 사용하여 응답한다[예컨대, 만약 모듈(101)의 프로세싱 유닛(111)이 모듈 (101)을 동작시키는 백업 코드의 유형에 대한 요청을 전달함]. 제1 예에서, 다른 프로세서 노드들 각각은 그 관련 비휘발성 메모리에 저장된 백업 코드의 각 카피의 식별자를 사용하여 응답한다[예컨대, 관련 인터페이스(122, 123, 124)에서 식별자에 대한 요청을 수신한 프로세싱 유닛들(112, 113, 114) 각각은 그 관련 비휘발성 메모리에 저장된 백업 코드, 즉 개별적으로는 모듈(101)을 동작시키는 백업 코드(161)와, 모듈(103)을 동작시키는 백업 코드(163)와 모듈(104)을 동작시키는 백업 코드(164)와, 모듈(103)을 동작시키는 백업 코드(173)의 식별자를 사용하여 응답함].
또한, 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 관련 모듈을 동작시키는 코드의 레벨 식별자를 유지할 수 있고, 그 백업 코드의 레벨을 요청하는 복구 신호에 응답하는 로직을 포함하는데, 이는 그 응답 프로세싱 노드들에 의하여 공급된다.
단계(208)에서, 요청 프로세서 노드는 그 요청에 응답하여 식별자 또는 식별자들을 수신하는데, 그 식별자 또는 식별자들은 백업 코드의 유형 및/또는 레벨을 포함한다. 예컨대, 만약 그 요청이 소정의 백업 코드의 유형을 포함하고 있었다면, 그 응답은 어떠한 요청에 응답하고 있는지만을 나타내고, 유형의 표시를 효과적으로 포함한다. 그 뒤, 단계(210)에서, 프로세서 인터페이스(예컨대, 프로세서 인터페이스 121)에서 요청에 대한 응답을 수신하는 것에 응답하여, 요청하는 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 수신된 식별자(유형 및/또는 레벨)를 유지된 식별자와 비교한다. 만약 단계(211)에서, 단계(210)의 비교가 관련 모듈을 동작시 키는 코드(예컨대, 백업 코드 161에 대한 수신된 식별자)의 교체를 위하여 식별자가 유효하다는 것을 나타낸다면, 코드가 복구될 프로세싱 유닛은 단계(215)에서 백업 코드를 요청한다.
비교 단계(210)는 한번에 모든 응답들(만약 하나 이상이면)의 식별자들을 비교할 수도 있거나, 단독으로 예컨대, 단계(208)에서 수신된 것처럼 응답들을 비교할 수도 있다. 만약 단계(211) 후에 단독으로 식별자들을 비교하는 것이 유효하지 않다면, 단계(217)는 모든 식별자들이 비교되었는지 여부를 검사한다. 이것은 모든 가능한 응답들이 수신되었다는 것을 보증하기 위하여 단계(208)에서 대기 시간을 필요로 할 수 있다. 만약 모든 수신된 식별자들이 유지된 식별자와 비교되지는 않았다면, 단계(217)는 다음 식별자를 비교하기 위하여 단계(210)로 프로세스를 되돌려 순환하는데, 상기의 식별자는 단계(208)에서 개별적으로 수신될 수 있다. 만약 모든 식별자들이 유효한 식별자 없이 비교되었다면, 복구 프로세스는 실행될 수 없고, 에러가 단계(218)에서 표시된다.
단계(220)에서, 단계(215)에서 요청된 백업 코드가 수신되고(예컨대, 백업 코드 161), 단계(2230)에서, 프로세싱 유닛이 백업 코드를 인스톨하여, 그 관련 모듈을 동작시키는 코드(예컨대, 코드 151)의 적어도 일부를 백업 코드와 교체한다.
단계(205)의 실시예에서, 프로세싱 유닛은 또한 그 관련 모듈을 동작시키는 백업 코드를 구비한 적어도 하나의 다른 프로세서 노드의 식별자를 유지한다[예컨대, 모듈(101)의 프로세싱 유닛(111)은 모듈(101)을 동작시키는 백업 코드(161)를 구비함으로써 모듈(102)의 프로세싱 노드의 동일성을 유지함). 복구된 프로세서 노 드의 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은, 단계(205)에서 백업 코드를 위한 모듈(102)의 프로세서 노드로의 요청을 프로세서 인터페이스에 전달하기 위하여 복구 신호에 응답한다. 그 요청을 수신하는 프로세싱 유닛(예컨대, 프로세싱 유닛 112)은 비휘발성 메모리에서 백업 코드를 검색하고(예컨대, 비휘발성 메모리 132), 프로세서 인터페이스(예컨대, 프로세서 인터페이스 122)를 통하여 백업 코드(예컨대, 백업 코드 161)를 요청한 프로세서 노드(예컨대, 모듈 101 의 프로세서 노드)로 전달한다.
단계(230)에서, 코드가 복구될 프로세싱 유닛은 요청이 이루어진 다른 프로세싱 노드의 프로세싱 유닛으로부터 백업 코드를 수신한다.
위에서 검토한 바와 같이, 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 그 관련 모듈을 동작시키는 코드의 레벨의 식별자를 유지할 수 있고, 단계(230)에서 다른 프로세서 노드의 백업 코드(예컨대, 백업 코드 161)의 레벨의 식별자를 수신하는 것에 응답하여 복구 신호에 응답하는 로직을 포함할 수 있으며, 단계(233)에서 수신된 식별자를 유지된 식별자와 비교할 수 있다. 관련 모듈을 동작시키는 코드의 교체를 위하여 그 식별자가 유효하다는 것을 나타내는 비교에 응답하여, 코드가 복구될 프로세싱 유닛(예컨대, 프로세싱 유닛 111)은 단계(223)에서 백업 코드를 인스톨하여 그 관련 모듈을 동작시키는 코드(예컨대, 코드 151)의 적어도 일부를 백업 코드(예컨대, 백업 코드 161)와 교체한다.
만약 단계(233)가 그 수신된 백업 코드 또는 그 레벨이 유효하지 않다는 것을 나타낸다면, 단계(235)는 어떤 다른 프로세서 노드가 백업 코드의 카피를 구비 하고 있는지 여부를 결정한다. 예컨대, 그 프로세서 노드(102)의 비휘발성 메모리(132)가 모듈(103)의 프로세서 노드에 대한 백업 코드의 하나의 카피(163)를 구비하고 있고, 프로세서 노드(104)의 비휘발성 메모리(134)가 모듈(103)의 프로세서 노드를 위한 백업 코드의 다른 카피(173)를 구비한다. 만약 다른 카피가 존재한다면, 단계(235)는 백업 코드의 다음 카피를 요청하기 위하여 단계(205)로 프로세스를 돌려 순환한다(cycle). 만약 단계(233)가 수신된 백업 코드 또는 그 레벨이 유효하지 않다는 것을 나타내고, 단계(235)가 백업 카피를 구비한 다른 프로세서 노드가 존재하지 않는다고 판단한다면, 에러가 단계(239)에서 나타난다.
도 3 의 단계들의 다른 조정이 당업자들에 의해 이루어질 수 있다. 또한, 단계들은 추가되거나 제거될 수 있다. 예컨대, 단계(233, 235, 및 239)는 제거될 수 있으며, 단계(230)가 직접 단계(223)로 연결될 수 있다.
도 4는 식별자 또는 백업 코드에 대한 요청을 수신하는 프로세서 노드의 프로세스의 실시예를 나타내는데, 이 프로세스는 단계(240)에서 시작한다. 단계(241)는 요청이 식별자만을 위한 것인지 여부를 결정하는데, 이는 백업 코드의 유형(들) 및/또는 레벨(들)에 대한 것일 수 있다. 만약 그렇다면, 프로세서 노드의 프로세싱 유닛은 단계(245)에서 요청된 유형(들)과 레벨(들)의 요청된 식별자(들)을 검색하고, 단계(246)에서 식별자(들)을 전달한다. 또한, 도 1 및 2b와 관련하여서, 예컨대 프로세서 노드(102)의 프로세싱 유닛(112)은 백업 코드(161)와 백업 코드(163)에 대한 식별자들을 전달한다.
만약 도 4의 단계(241)가 그 요청이 식별자를 위한 것이 아니라고 결정한다 면, 단계(247)는 그 요청이 백업 코드를 위한 것인지 여부를 결정한다. 만약 그렇지 않다면, 다른 요청이 이루어지고 단계(248)로 이어진다.
다른 예로써, 단계(241, 247 및 248)들은 어떤 요청이 수신되었는지를 판단하기 위한 룩업(lookup)을 포함한다.
만약 단계(247)가 수신된 요청이 백업 코드를 위한 것이라고 판단한다면, 프로세서 노드의 프로세싱 유닛은 단계(251)에서 요청된 백업 코드를 검색하고, 그 백업 코드를 단계(253)에서 전달한다. 또한, 도 1, 2a 및 2b와 관련하여, 예컨대, 프로세싱 유닛(111)에 의한 요청에 응답하여, 프로세서 노드(102)의 프로세싱 유닛(112)은 백업 코드(161)를 전달한다.
도 4의 단계들의 다른 조정이 당업자에 의하여 실행될 수 있다. 예컨대, 만약 요청 프로세서 노드가 어떤 프로세서 노드(들)가 백업 코드를 구비하고 있는지에 관한 정보를 유지한다면, 단계(241, 245, 및 246)는 필요하지 않다.
도 5는 다른 프로세서 노드에 대한 백업 코드가 예컨대, 새로운 레벨로 업데이트되는 프로세서 노드의 프로세스의 실시예를 나타낸다. 프로세서 노드의 프로세싱 유닛은 또한 백업 코드의 레벨의 식별자를 유지한다. 백업 프로세스는 단계(260)에서 시작한다. 단계(261)는 프로세스가 백업 코드로의 업데이트인지 여부를 판단하고, 만약 그렇지 않다면, 다른 프로세스가 단계(263)에 포함되어 있다는 것을 나타낸다. 만약 그렇다면, 단계(265)는 업데이트된 것을 로드하거나, 단계(266)에서 백업 코드의 업데이트된 부분을 비휘발성 메모리로 로드한다. 그 뒤, 단계(267)에서, 프로세싱 유닛은 네트워크 상의 프로세서 인터페이스로 업데이트의 통 보를 전달한다. 통보는 모든 다른 프로세서 노드들로 방송될 수 있거나 그 코드를 복구하기 위한 백업 코드를 사용할 수 있는 프로세서 노드로 직접 전달될 수 있다. 또한 예컨대 도 1 및 2d와 관련하여, 모듈(104)의 비휘발성 메모리에 저장된 백업 코드(173)로의 업데이트에 응답하여, 프로세싱 유닛(114)은 백업 코드의 레벨 식별자를 업데이트하고 모듈(103)의 프로세서 노드로 업데이트의 식별자의 통보를 전달한다.
도 4의 단계들의 다른 조정이 당업자에 의하여 실행될 수 있다. 예컨대, 단계(266)는 만약 식별자(들)가 백업 코드 이미지의 일부라면 제거될 수 있다.
도 6a 및 6b 는 자동형 데이터 저장 라이브러리(10)의 실시예를 설명하는데, 이는 본 발명에 따른 분산형 시스템을 구현할 수 있다. 이 라이브러리는 적어도 하나의 외부 호스트 시스템으로부터의 커맨드들에 응답하여 데이터 저장 매체(도시되지 않음)에 액세스하기 위하여 구성되는 것이고, 데이터 저장 매체를 저장하기 위한 복수의 저장 장치 수납용 선반들(16); 데이터 저장 매체에 관한 데이터를 판독 및/또는 기록하기 위한 적어도 하나의 데이터 저장 드라이브(15); 및 복수의 저장 장치 수납용 선반들(16)과 데이터 저장 드라이브(들)(15) 간에서 데이터 저장 매체를 운반하기 위한 적어도 하나의 로봇 액세서(18)를 포함한다. 라이브러리는 또한 조작자 패널(23) 또는, 웹-기반 인터페이스와 같은 다른 사용자 인터페이스를 포함할 수 있는데, 사용자는 이로써 라이브러리와 상호작용할 수 있다. 라이브러리(10)는 하나 이상의 프레임들(11-13)을 포함하는데, 이들 각각은 로봇 액세서(18)에 의해 접근 가능한 저장 장치 수납용 선반들(16)을 구비한다. 로봇 액세서(18)는 하나 이상의 데이터 저장 매체를 고정(grip)하기 위한 그리퍼 어셈블리(20)를 포함하고, 그리퍼(20) 상에 장착되는 스마트 카드 판독기 또는 유사한 시스템과 같은 바코드 스캐너(22) 또는 판독 시스템을 포함할 수 있으며, 이는 데이터 저장 매체에 관한 식별 정보를 "판독"하기 위한 것이다.
도 7은 도 6a 및 6b의 데이터 저장 라이브러리(10)의 실시예를 설명하는데, 이는 본 발명에 따른 복수의 프로세서 노드들을 구비한 분산형 시스템의 모듈들을 사용한다. 본 발명을 구현할 수 있는 데이터 저장 라이브러리의 예는 IBM 3584 울트라스케일러블 테이프 라이브러리(IBM 3584 UltraScalable Tape Library)이다. 이 라이브러리는 베이스 프레임(11)을 포함할 수 있고, 또한 하나 이상의 확장 프레임(12)들을 포함할 수 있으며, 고 가용성(high availability) 프레임(13)을 포함할 수 있다.
라이브러리(10)의 베이스 프레임은 하나 이상의 데이터 저장 드라이브들(15)과, 로봇 액세서(18)를 포함한다. 위에서 검토한 바와 같이, 로봇 액세서(18)는 그리퍼 어셈블리(20)를 포함하고, 데이터 저장 매체에 관한 식별 정보를 "판독"하기 위한 판독 시스템을 포함할 수 있다. 데이터 저장 드라이브(15)는 예컨대, 광 디스크 드라이브 또는 자기 테이프 드라이브들일 수 있고, 이 데이터 저장 매체는 광 또는 자기 테이프 매체 또는 다른 리무버블 매체와 관련 드라이브를 포함할 수 있다. 예로써, 데이터 저장 드라이브는 IBM LTO Ultrium 드라이브 등을 포함할 수 있다. 또한, 제어 포트가 제공될 수 있고, 이는 호스트 및 라이브러리 간의 통신을 담당하는데, 예컨대, 호스트로부터의 커맨드들을 수신하고 그 커맨드들을 라이브러 리로 전달하지만, 이는 데이터 저장 드라이브는 아니다.
확장 프레임(12)이 추가적인 저장 장치 수납용 선반들을 포함하고, 추가적인 데이터 저장 드라이브들(15)을 포함한다. 고 가용성 프레임(13)이 또한 추가적인 저장 장치 수납용 선반들과 데이터 저장 드라이브(15)를 포함할 수 있고, 제2 로봇 액세서(28)를 포함할 수 있는데, 이는 그리퍼 어셈블리(30)를 포함할 수 있고, 바코드 스캐너(32) 또는 다른 판독 장치와 조작자 패널(280) 또는 다른 사용자 인터페이스를 포함할 수 있다. 로봇 액세서(18) 또는 그 그리퍼(20) 등의 실패 또는 다른 불가용성의 경우에, 제2 로봇 액세서(28)가 임무를 넘겨받을 수 있다.
예시적인 라이브러리에서, 로봇 액세서(18, 28)들 각각은 그 그리퍼를 수형 "X" 방향과 수직 "Y" 방향으로 불리는 적어도 2 개의 방향들로 이동시켜서, 데이터 저장 매체를 검색하고 고정하거나 저장 장치 수납용 선반(16)으로 전달하거나 릴리스하고, 데이터 저장 매체를 데이터 저장 드라이브들(15)에 로드(load)하고 언로드(unload)한다.
예시적인 라이브러리(10)는 하나 이상의 호스트 시스템들(40, 41, 또는 42)로부터 커맨드들을 수신한다. 호스트 서버들과 같은, 호스트 시스템은 경로(81, 82) 상의 하나 이상의 제어 포트들(도시되지 않음) 또는 하나 이상의 데이터 저장 드라이브들(15)을 통하여, 경로(80)와 같이 라이브러리와 직접 통신하여, 예컨대 특정한 데이터 저장 매체에 액세스하고 저장 장치 수납용 선반들과 데이터 저장 드라이브들 사이의 매체를 이동시키기 위하여 커맨드들을 제공한다. 커맨드들은 통상 매체에 액세스하기 위한 매체 및/또는 논리적인 위치들을 식별하는 논리적인 커맨 드들이다.
예시적인 라이브러리는 호스트들로부터 논리적인 커맨드들을 수신하는 분산형 제어 시스템에 의하여 제어되어 요청된 조치들을 결정하고, 조치들을 로봇 액세서(18, 28)의 물리적인 이동들로 변환한다.
예시적인 라이브러리에서, 이 분산형 제어 시스템은 복수의 프로세서 노드들을 포함하는데, 이 노드들 각각은 하나 이상의 프로세서들을 구비한다. 분산형 제어 시스템의 일례에서, 통신 프로세서 노드(50)는 베이스 프레임(11)에 배치될 수 있다. 이 통신 프로세서 노드는 라인(80)에 결합하는 등의 적어도 하나의 외부 인터페이스를 통하여, 직접 또는 드라이브들(15)을 통하는 것 중 어느 하나의 방식으로 호스트 커맨드들을 수신하는 통신 링크를 제공한다. 통신 프로세서 노드(50)는 데이터 저장 드라이브들(15)과 통신하기 위하여 통신 링크(70)를 추가로 제공한다.
통신 프로세서 노드(50)는 데이터 저장 드라이브(15)에 가까이에 있는 프레임(11)에 배치될 수 있다. 또한, 분산형 프로세서 시스템의 예에서, 하나 이상의 추가적인 워크 프로세서 노드들이 제공되는데, 이는 예컨대, 로봇 액세서(18)에 배치될 수 있는 워크 프로세서 노드(52)를 포함할 수 있으며, 네트워크(60)를 통하여 통신 프로세서 노드(50)로 결합한다. 각 워크 프로세서 노드는 어떠한 통신 프로세서 노드로부터 워크 프로세서 노드들로 방송되는 수신된 커맨드들에 응답할 수 있으며, 워크 프로세서 노드는 또한 로봇 액세서의 동작을 조정하여 이동 커맨드들을 제공할 수 있다. XY 프로세서 노드(55)가 제공될 수 있고, 로봇 액세서(18)의 XY 시스템에 배치될 수 있다. XY 프로세서 노드(55)는 네트워크(60)에 결합하여 이동 커맨드들에 응답하여, XY 시스템을 그리퍼(20)를 배치하도록 조작한다.
또한, 조작자 패널 프로세서 노드(59)는 조작자 패널과 통신 프로세서 노드(50), 워크 프로세서 노드(52)와 XY 프로세서 노드(55) 사이의 통신을 위한 인터페이스를 제공하기 위하여 조작자 패널(23)에서 제공될 수 있다.
예컨대 공통 버스(60)를 포함하는 네트워크가 다양한 프로세서 노드들과 결합하여 제공될 수 있다. 네트워크는 상업적으로 이용가능한 CAN(controller area network) 버스 시스템과 같은 견고한 배선 네트워크(robust wiring network)를 포함할 수 있으며, 이는 멀티-드롭(multi-drop) 네트워크이고, 예컨대, CiA, 자동화 협회(Automation Association)의 CAN, Am Welch selgarten 26, D-91058 Erlangen, 독일. 에 의하여 규정되는 표준 액세스 프로토콜 및 배선 표준을 구비한다. 이더넷과 같은 다른 유사한 네트워크들 또는 RF 또는 적외선과 같은 무선 네트워크 시스템이 당업자에게 공지된 라이브러리에서 사용될 수 있다.
통신 프로세서 노드(50)는 드라이브들과 통신하고 호스트 시스템들(40, 41 및 42)과 통신하도록 라인들(70)을 통하여, 베이스 프레임(11)의 데이터 저장 드라이브들(15) 각각에 접속된다. 또한, 호스트 시스템들은 입력(80)에서 통신 프로세서 노드(50)로 직접 결합할 수 있거나, 라이브러리를 드라이브/라이브러리 인터페이스에 유사한 라이브러리 인터페이스를 사용하여 호스트 시스템(들)에 연결하는 제어 포트 장치들(도시되지 않음)에 접속시킬 수 있다. 당업자가 주지하고 있는 바와 같이, 다양한 통신 조정이 호스트와 통신하거나 데이터 저장 드라이브들과 통신하기 위하여 사용될 수 있다. 도 7의 예에서, 호스트 연결들(80 및 81)은 SCSI 버 스들이다. 버스(82)는 고속 직렬 데이터 인터페이스인 FC-AL(Fibre Channel Arbitrated Loop)의 예를 포함하는데, 이는 SCSI 버스 시스템들보다 더 먼 거리를 통하여 전송할 수 있게 한다.
데이터 저장 드라이브들(15)은 통신 프로세서 노드(50)에 매우 근접할 수 있으며, SCSI와 같은 단거리 통신 기술, 또는 RS-422과 같은 직렬 연결을 사용할 수 있다. 그러므로 데이터 저장 드라이브들(15)은 라인들(70)에 의하여 통신 프로세서 노드(50)에 개별적으로 연결된다.
확장 프레임(12)이 제공될 수 있으며, 확장 네트워크(157)에 의해 네트워크(157, 60)에 연결될 수 있다. 통신 프로세서 노드(50)에 유사한 다른 통신 프로세서 노드(155)가 확장 프레임에 배치될 수 있고, 예컨대, 입력(156)에서 호스트들과, 예컨대, 라인들(170)을 통하여 확장 프레임(12)에서 데이터 저장 드라이브들(15)과 통신할 수 있다. 통신 프로세서 노드(155)는 네트워크(157, 60)에 접속되는데, 이 통신 프로세서 노드(155)는 네트워크(157, 60)에 커맨드들을 위한 통신 링크를 제공하여 커맨드들이 베이스 프레임 워크 프로세서 노드(52)에 링크된다.
통신 프로세서 노드(155)는 확장 프레임(12)의 접속된 데이터 저장 드라이브들(15)에 매우 인접한 확장 프레임(12)에 장착될 수 있어서, 드라이브들과, 부착된 호스트 시스템들과 통신한다. 데이터 저장 드라이브들(15)은 또한 라인들(170)에 의하여 통신 프로세서 노드(155)와 개별적으로 접속된다.
동일한 통신 프로세서 노드들(155), 저장 장치 수납용 선반들, 데이터 저장 드라이브들(15), 및 확장 네트워크들(157)을 구비한 추가적인 확장 프레임들이 제 공될 수 있고, 각각이 인접한 확장 프레임에 접속된다.
또한, 데이터 저장 라이브러리(10)는 예컨대, 고 가용성 프레임(13)에서, 추가로 다른 로봇 액세서(28)를 포함할 수 있다. 로봇 액세서(28)는 데이터 저장 매체에 액세스하기 위한 그리퍼(30)와, 로봇 액세서를 이동시키기 위한 XY 시스템(255)을 포함할 수 있다. 고 가용성 프레임은 확장 프레임(12)에 인접하거나, 베이스 프레임(11)에 인접할 수 있으며, 로봇 액세서(28)는 로봇 액세서(18)와 동일한 수평 기계적 경로 또는 인접한 경로 상에서 구동될 수 있다. 예시적인 제어 시스템이 확장 프레임의 네트워크(157) 또는 베이스 프레임의 네트워크(60)에 접속되는 네트워크를 형성하는 확장 네트워크(200)를 추가로 포함한다. 다른 통신 프로세서 노드(250)가 제공될 수 있는데, 이것은 또한 통신 프로세서 노드(50)와 유사한 것이고, 입력(256)에서 직접 또는 제어 포트들(도시되지 않음), 또는 데이터 저장 드라이브들(15) 및 라인들(270), 예컨대, 입력(256) 중 어느 하나의 방식으로, 호스트들로부터 커맨드를 수신하기 위하여, 고 가용성 프레임(13)에 배치될 수 있다. 통신 프로세서 노드(250)는 고 가용성 프레임 네트워크(200)에 접속되고, 네트워크로의 통신 링크를 제공한다.
통신 프로세서 노드(250)는 고 가용성 프레임(13)의 접속된 데이터 저장 드라이브들(15)에 매우 인접하여 장착될 수 있어서, 드라이브들과 통신하고 부착된 호스트 시스템들과 통신한다. 데이터 저장 드라이브들(15)은 또한 라인들(270)에 의하여, RS-422과 같은 인터페이스를 사용하여 통신 프로세서 노드(250)에 개별적으로 접속된다.
본 발명을 구현하는 컴퓨터 프로그램 제품이 하나의 프로세서 노드들, 예컨대, 워크 프로세서(52), 또는 선택적으로 프로세서(50), 프로세서(155), 또는 프로세서(250)에서, 제공될 수 있거나, 복수의 또는 모든 프로세서 노드들에서 구현될 수 있다.
또한, 도 8a, 8b, 8c 및 8d에 관련하여, 본 발명의 실시예에 따라서, 하나 또는 모든 모듈들의 비휘발성 메모리는 관련 모듈을 동작시키기 위한 프로세싱 유닛에 대한 코드를 저장하고, 네트워크의 다른 프로세서 노드의 적어도 하나의 다른 프로세싱 유닛에 대한 백업 코드, 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 백업 코드를 저장한다. 예컨대, 통신 프로세서 노드(50), 통신 프로세서 노드(155) 및 통신 프로세서 노드(250) 중 하나 또는 각각의 비휘발성 메모리(331)는 그 관련 모듈을 동작시키기 위한 프로세싱 유닛에 대한 코드(351)를 저장하고, 조작자 패널 프로세서 노드(59) 및/또는 조작자 패널 프로세서 노드(259)의 프로세싱 유닛에 대한 백업 코드(362)를 저장한다. 조작자 패널 프로세서 노드(59) 및 조작자 패널 프로세서 노드(259) 중 하나 또는 각각의 비휘발성 메모리(332)는 관련 모듈을 동작시키기 위한 프로세싱 유닛에 대한 코드(352)를 저장하고, 통신 프로세서 노드(50), 통신 프로세서 노드(155) 및/또는 통신 프로세서 노드(250)의 프로세싱 유닛에 대한 백업 코드(361)를 저장한다. 워크 프로세서 노드(52)와 워크 프로세서 노드(252)의 하나 또는 각각의 비휘발성 메모리(333)는 그 관련 모듈을 동작시키기 위한 프로세싱 유닛에 대한 코드(353)를 저장하고, XY 프로세서 노드(55) 및/또는 XY 프로세서 노드(255)의 프로세싱 유닛에 대한 백업 코드(364)를 저장한다. XY 프 로세서 노드(55)와 XY 프로세서 노드(255)의 하나 또는 각각의 비휘발성 메모리(334)는 그 관련 모듈을 동작시키기 위한 프로세싱 유닛에 대한 코드(354)를 저장하고, 워크 프로세서 노드(52) 및 워크 프로세서 노드(252)의 프로세싱 유닛에 대한 백업 코드(363)를 저장한다.
그러므로 위에서 검토한 바와 같이, 요청에 응답하여, 프로세서 노드의 프로세싱 유닛은 그 비휘발성 메모리(331, 332, 333, 334)의 백업 코드(362, 361, 364, 363)를 그 요청 프로세서 노드로 공급하는데, 이는 그 요청 프로세서 노드와 관련된 모듈을 동작시키기 위하여 코드(351, 352, 353, 354)를 복구하는데 사용된다.
비휘발성 메모리들(331, 332, 33, 334)은 또한 본 발명의 컴퓨터 프로그램 제품, 및/또는 모든 프로세서 노드들에 공통된 일부 통신 코드 등과 같은 공통 코드를 개별적으로 저장할 수 있다. 또한, 비휘발성 메모리들(331, 332, 333, 334)은 복수의 프로세서 노드들에 대한 백업 코드를 저장할 수 있거나, 백업 코드를 저장할 수 없다. 코드를 복구하고 요청들에 응답하고 백업 코드를 업데이트하기 위한 프로세스들은 위에서 설명한 바와 같다.
동작 코드 및 백업 코드가 개별적으로 검토되었지만, 그들은 단일한 유닛에서 조합될 수 있다. 예컨대, 통신 프로세서 블록(351) 및 조작자 패널 블록(362)을 포함하는 도 8a의 코드 이미지는 각각의 블록에 의해 제공되는 기능을 포함하는 단일한 블록으로 조합될 수 있다. 이러한 예에서, 동작 코드(351)와 백업 코드(362) 간의 구별이 없다. 조합된 단일 블록은 통신 프로세서 노드들 또는 조작자 패널 노드들 중 어느 하나를 백업하는데 사용될 것이다. 또한, 동작 코드(351, 352, 353, 354)는 위에서 검토한 바와 같이, 유사한 모듈에 대한 백업 코드로서 기능할 수 있다.
본 발명의 바람직한 실시예들이 구체적으로 설명되었지만, 다음의 청구범위에 기술될 본 발명의 기술적 사상을 벗어나지 않는 범위에서 당업자에 의하여 개조 및 변경이 이루어질 수 있음은 물론이다.

Claims (23)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 모듈들의 분산형 시스템에 있어서,
    네트워크와;
    각각 적어도 하나의 관련 프로세서 노드를 포함하는 다양한 종류의 복수의 모듈들을 포함하는 분산형 시스템으로서, 상기 관련 프로세서 노드는
    상기 관련 모듈들을 동작시키기 위한 프로세싱 유닛;
    상기 네트워크에서 상기 프로세서 노드의 통신을 제공하기 위한 프로세서 인터페이스; 그리고
    상기 관련 모듈을 동작시키기 위하여 상기 프로세싱 유닛에 대한 동작 코드를 저장하고, 상기 네트워크의 다른 프로세서 노드들 중 적어도 어느 하나의 적어도 어느 다른 프로세싱 유닛에 대한 백업 코드를 저장하기 위한 비휘발성 메모리로서, 상기 백업 코드는 상기 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이고 시스템 집합의 일부를 형성하는 것인, 상기 비휘발성 메모리
    를 포함하고;
    상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 상기 관련 모듈을 동작시키기 위하여 상기 동작 코드의 유형 식별자 및 레벨 식별자를 유지하고, 상기 동작 코드의 유형 식별자는 상기 동작 코드가 동작하도록 하는 모듈의 종류를 나타내고; 그리고 상기 프로세서 인터페이스에서의 다른 프로세싱 유닛으로부터의 백업 코드의 유형 식별자 및 레벨 식별자의 수신에 응답하는 로직을 포함하고, 상기 백업 코드의 유형 식별자는 상기 백업 코드가 동작하도록 하는 모듈의 종류를 나타내어, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 분산형 시스템.
  15. 제14항에 있어서, 상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 복구 신호에 응답하여 백업 코드의 유형 식별자 및 레벨 식별자에 대한 요청을 상기 프로세서 인터페이스에 전달하는 로직을 포함하고; 상기 프로세서 인터페이스에서 상기 요청에 대한 응답을 수신하는 것에 응답하여, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 분산형 시스템.
  16. 다양한 종류의 모듈들의 분산형 시스템의 모듈과 관련하고, 적어도 복수의 상기 모듈들이 네트워크에 상호 연결된 관련 프로세서 노드들을 갖는 프로세서 노드로서, 상기 프로세서 노드는
    상기 관련 모듈들을 동작시키기 위한 프로세싱 유닛;
    상기 네트워크에서 상기 프로세서 노드의 통신을 제공하는 프로세서 인터페이스; 그리고
    상기 관련 모듈을 동작시키기 위하여 상기 프로세싱 유닛에 대한 동작 코드를 저장하고, 상기 네트워크의 다른 프로세서 노드들 중 적어도 어느 하나의 적어도 어느 다른 프로세싱 유닛에 대한 백업 코드를 저장하기 위한 비휘발성 메모리로서, 상기 백업 코드는 상기 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이고 시스템 집합의 일부를 형성하는 것인, 상기 비휘발성 메모리
    를 포함하고;
    상기 프로세싱 유닛은 추가적으로 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 유형 식별자 및 레벨 식별자를 유지하고, 상기 동작 코드의 유형 식별자는 상기 동작 코드가 동작하도록 하는 모듈의 종류를 나타내고; 그리고 상기 프로세서 인터페이스에서의 다른 프로세싱 유닛으로부터의 백업 코드의 유형 식별자 및 레벨 식별자의 수신에 응답하는 로직을 포함하고, 상기 백업 코드의 유형 식별자는 상기 백업 코드가 동작하도록 하는 모듈의 종류를 나타내어, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 프로세스 노드.
  17. 제16항에 있어서, 상기 프로세싱 유닛은 추가적으로 복구 신호에 응답하여 백업 코드의 유형 식별자 및 레벨 식별자에 대한 요청을 상기 프로세서 인터페이스에 전달하는 로직을 포함하고; 상기 프로세서 인터페이스에서 상기 요청에 대한 응답을 수신하는 것에 응답하여, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 프로세서 노드.
  18. 네트워크에 상호연결된 다양한 종류의 모듈들의 분산형 시스템에 대한 모듈로서, 상기 모듈은
    모듈 기능을 수행하기 위한 시스템; 그리고
    상기 모듈에 관련된 프로세서 노드를 포함하며, 상기 프로세서 노드는
    상기 관련 모듈을 동작시켜 상기 모듈 기능을 수행하는 프로세싱 유닛;
    상기 네트워크에서 상기 프로세서 노드의 통신을 제공하기 위한 프로세서 인터페이스; 그리고
    상기 관련 모듈을 동작시키기 위하여 상기 프로세싱 유닛에 대한 동작 코드를 저장하고, 상기 네트워크의 다른 프로세서 노드들 중 적어도 어느 하나의 적어도 어느 다른 프로세싱 유닛에 대한 백업 코드를 저장하기 위한 비휘발성 메모리로서, 상기 백업 코드는 상기 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이고, 상기 백업 코드는 시스템 집합의 일부를 형성하는 것인, 상기 비휘발성 메모리
    를 포함하고;
    상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 유형 식별자 및 레벨 식별자를 유지하고, 상기 동작 코드의 유형 식별자는 상기 동작 코드가 동작하도록 하는 모듈의 종류를 나타내고; 그리고 상기 프로세서 인터페이스에서의 다른 프로세싱 유닛으로부터의백업 코드의 유형 식별자 및 레벨 식별자의 수신에 응답하는 로직을 포함하고, 상기 백업 코드의 유형 식별자는 상기 백업 코드가 동작하도록 하는 모듈의 종류를 나타내어, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자를 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 모듈.
  19. 제18항에 있어서, 상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 복구 신호에 응답하여 백업 코드의 유형 식별자 및 레벨 식별자에 대한 요청을 상기 프로세서 인터페이스에 전달하는 로직을 포함하고; 상기 프로세서 인터페이스에서 상기 요청에 대한 응답을 수신하는 것에 응답하여, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 모듈.
  20. 컴퓨터 판독 가능 프로그램 코드를 내부에 구비하고, 다양한 종류의 분산형 시스템의 모듈들 중의 모듈 - 적어도 복수인 상기 모듈들은 관련 프로세서 노드들이 네트워크에서 상호접속되게 하는 것임 - 과 관련된 프로그램 가능한 컴퓨터 프로세서와 함께 사용 가능한 컴퓨터 판독 가능 기록 매체에 있어서, 상기 컴퓨터 판독 가능 기록 매체는,
    상기 프로그램 가능한 컴퓨터 프로세서가 상기 관련 모듈을 동작시키기 위한 동작 코드를 저장하도록 하는 컴퓨터 판독 가능 프로그램 코드; 그리고
    상기 프로그램 가능한 컴퓨터 프로세서가 상기 네트워크의 다른 프로세서 노드들 중 적어도 어느 하나의 적어도 어느 다른 프로세싱 유닛에 대한 백업 코드를 저장하도록 하는 컴퓨터 판독 가능 프로그램 코드로서, 상기 백업 코드는 상기 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이고, 상기 백업 코드는 시스템 집합의 일부를 형성하는 것인, 상기 컴퓨터 판독 가능 프로그램 코드
    를 포함하고,
    상기 컴퓨터 판독 가능 프로그램 코드는 추가적으로 상기 프로그램 가능한 컴퓨터 프로세서가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 유형 식별자 및 레벨 식별자를 유지하고, 상기 동작 코드의 유형 식별자는 상기 동작 코드가 동작하도록 하는 모듈의 종류를 나타내고; 그리고 상기 프로세서 인터페이스에서의 다른 프로세싱 유닛으로부터의 백업 코드의 유형 식별자 및 레벨 식별자의 수신에 응답하고, 상기 백업 코드의 유형 식별자는 상기 백업 코드가 동작하도록 하는 모듈의 종류를 나타내어, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 컴퓨터 판독 가능 기록 매체.
  21. 제20항에 있어서, 상기 컴퓨터 판독 가능 프로그램 코드는 추가적으로 상기 프로그램 가능한 컴퓨터 프로세서가 복구 신호에 응답하여 백업 코드의 유형 식별자 및 레벨 식별자에 대한 요청을 상기 프로세서 인터페이스에 전달하고; 상기 프로세서 인터페이스에서 상기 요청에 대한 응답을 수신하는 것에 응답하여 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 컴퓨터 판독 가능 기록 매체.
  22. 자동형 데이터 저장 라이브러리에 있어서,
    네트워크와;
    각각 상기 자동형 데이터 저장 라이브러리의 모듈 기능을 수행하는 다양한 종류의 복수의 모듈로서, 적어도 복수의 상기 모듈들이 각각 적어도 하나의 관련 프로세서 노드를 포함하는 자동형 데이터 저장 라이브러리로서, 상기 관련 프로세서 노드는
    상기 관련 모듈을 동작시키기 위한 프로세싱 유닛;
    상기 네트워크에서 상기 프로세서 노드의 통신을 제공하기 위한 프로세서 인터페이스; 그리고
    상기 관련 모듈을 동작시키기 위하여 상기 프로세싱 유닛에 대한 동작 코드를 저장하고, 상기 네트워크의 다른 프로세서 노드들 중 적어도 어느 하나의 적어도 어느 다른 프로세싱 유닛에 대한 백업 코드를 저장하기 위한 비휘발성 메모리로서, 상기 백업 코드는 상기 다른 프로세서 노드의 관련 모듈을 동작시키기 위한 것이고 시스템 집합의 일부를 형성하는 것인, 상기 비휘발성 메모리
    를 포함하고;
    상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 상기 관련 모듈을 동작시키기 위하여 상기 동작 코드의 유형 식별자 및 레벨의 식별자를 유지하고, 상기 동작 코드의 유형 식별자는 상기 동작 코드가 동작하도록 하는 모듈의 종류를 나타내고; 그리고 상기 프로세서 인터페이스에서의 다른 프로세싱 유닛으로부터의 백업 코드의 유형 식별자 및 레벨 식별자의 수신에 응답하는 로직을 포함하고, 상기 유형 식별자는 상기 백업 코드가 동작하도록 하는 모듈의 종류를 나타내어, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인, 자동형 데이터 저장 라이브러리.
  23. 제22항에 있어서, 상기 관련 프로세서 노드의 상기 프로세싱 유닛은 추가적으로 복구 신호에 응답하여 백업 코드의 유형 식별자 및 레벨 식별자에 대한 요청을 상기 프로세서 인터페이스에 전달하는 로직을 포함하고; 상기 프로세서 인터페이스에서 상기 요청에 대한 응답을 수신하는 것에 응답하여, 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자를 상기 유지된 동작 코드의 유형 식별자 및 레벨 식별자와 비교하고; 그리고 상기 수신된 백업 코드의 유형 식별자 및 레벨 식별자가 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 교체에 유효하다는 것을 나타내는 상기 비교에 응답하여, 상기 백업 코드를 수신하고 상기 관련 모듈을 동작시키기 위한 상기 동작 코드의 적어도 일부를 상기 백업 코드와 교체하는 것인 자동형 데이터 저장 라이브러리.
KR1020057010750A 2003-01-14 2004-01-08 분산형 시스템의 백업 펌웨어 KR100800342B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/341,377 US6986008B2 (en) 2003-01-14 2003-01-14 Backup firmware in a distributed system
US10/341,377 2003-01-14

Publications (2)

Publication Number Publication Date
KR20050088172A KR20050088172A (ko) 2005-09-02
KR100800342B1 true KR100800342B1 (ko) 2008-02-04

Family

ID=32711510

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057010750A KR100800342B1 (ko) 2003-01-14 2004-01-08 분산형 시스템의 백업 펌웨어

Country Status (8)

Country Link
US (1) US6986008B2 (ko)
EP (1) EP1584033B1 (ko)
JP (1) JP4464956B2 (ko)
KR (1) KR100800342B1 (ko)
CN (1) CN100403270C (ko)
AT (1) ATE347135T1 (ko)
DE (1) DE602004003467T2 (ko)
WO (1) WO2004063927A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090069817A1 (en) * 1995-10-20 2009-03-12 Acufocus, Inc. Intrastromal corneal modification
JP4411929B2 (ja) * 2003-02-28 2010-02-10 株式会社日立製作所 バックアップ方法、システム、及びプログラム
US7490205B2 (en) * 2005-03-14 2009-02-10 International Business Machines Corporation Method for providing a triad copy of storage data
US20060277524A1 (en) * 2005-06-07 2006-12-07 International Business Machines Corporation Redundant updatable firmware in a distributed control system
JP2007026318A (ja) * 2005-07-20 2007-02-01 Nec Corp 携帯電話機、プログラム作成方式、プログラム更新方式、プログラム作成方法及びプログラム更新方法
JP5103823B2 (ja) * 2006-08-18 2012-12-19 富士通株式会社 情報処理装置および入出力要求制御方法
US8065510B2 (en) * 2007-07-30 2011-11-22 Hewlet-Packard Development Company, L.P. System and methods of retrieving firmware between network locations
CN101996108B (zh) * 2009-08-18 2013-05-08 中兴通讯股份有限公司 一种分布式环境的备份和恢复方法及其系统
JP2011065528A (ja) * 2009-09-18 2011-03-31 Toyota Motor Corp マルチプロセッサシステム
CN102455915A (zh) * 2010-10-18 2012-05-16 卓望数码技术(深圳)有限公司 一种分布式系统的自动化配置方法及服务器
US9235719B2 (en) 2011-09-29 2016-01-12 Intel Corporation Apparatus, system, and method for providing memory access control
CN102437925B (zh) * 2011-12-01 2018-03-13 中兴通讯股份有限公司 分布式系统中的数据备份方法、装置及系统
US8713562B2 (en) 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
JP6037903B2 (ja) * 2013-03-18 2016-12-07 三菱電機株式会社 処理システム及びデータのバックアップ方法
US8918778B2 (en) * 2013-04-17 2014-12-23 American Megatrends, Inc. Method of fail safe flashing management device and application of the same
CN103235725A (zh) * 2013-05-16 2013-08-07 浪潮通信信息系统有限公司 一种基于linux的Oracle数据库在云计算中的快速部署方法
EP2866107B1 (de) * 2013-10-25 2020-12-09 Siemens Aktiengesellschaft Verfahren zum Wiedergeben des Ablaufs eines Programms eines Automatisierungsgerätes
CN106445409A (zh) * 2016-09-13 2017-02-22 郑州云海信息技术有限公司 一种分布式块存储的数据写入方法及装置
US10445192B2 (en) * 2017-01-10 2019-10-15 Indegy Ltd. Efficient backup and restore of controller code in industrial control network
US11442816B2 (en) * 2018-12-03 2022-09-13 International Business Machines Corporation Performance of backup operations in an order determined using service-metadata associated with backup requests
JP7058928B2 (ja) * 2019-03-15 2022-04-25 矢崎総業株式会社 車両用通信システム
US20240020032A1 (en) * 2022-07-15 2024-01-18 Dell Products L.P. Option read-only memory firmware-based remediation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0854423A1 (en) * 1997-01-20 1998-07-22 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Data partitioning and duplication in a distributed data processing system
US6029232A (en) 1995-12-18 2000-02-22 Nec Corporation Data backup system in terminal device connected to data communications network
EP1168176A2 (en) * 2000-06-09 2002-01-02 Hewlett-Packard Company Utilization of unused disk space on networked computers
US20020091807A1 (en) * 2001-01-05 2002-07-11 International Business Machines Corporation Automatic firmware update of processor nodes
EP1265139A1 (en) * 2001-06-08 2002-12-11 Hewlett Packard Company, a Delaware Corporation A method of restoring an impaired software image associated with a networked computer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878256A (en) 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US5464435A (en) * 1994-02-03 1995-11-07 Medtronic, Inc. Parallel processors in implantable medical device
US6070250A (en) * 1996-12-13 2000-05-30 Westinghouse Process Control, Inc. Workstation-based distributed process control system
US6237091B1 (en) 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6357021B1 (en) 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6473856B1 (en) * 1999-06-30 2002-10-29 International Business Machines Corporation Gold code backup for corrupt boot code recovery
TWI251771B (en) * 2001-12-28 2006-03-21 Asustek Comp Inc Module and method for automatic restoring BIOS device, and the computer-readable recording media of storing the program codes thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029232A (en) 1995-12-18 2000-02-22 Nec Corporation Data backup system in terminal device connected to data communications network
EP0854423A1 (en) * 1997-01-20 1998-07-22 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Data partitioning and duplication in a distributed data processing system
EP1168176A2 (en) * 2000-06-09 2002-01-02 Hewlett-Packard Company Utilization of unused disk space on networked computers
US20020091807A1 (en) * 2001-01-05 2002-07-11 International Business Machines Corporation Automatic firmware update of processor nodes
EP1265139A1 (en) * 2001-06-08 2002-12-11 Hewlett Packard Company, a Delaware Corporation A method of restoring an impaired software image associated with a networked computer

Also Published As

Publication number Publication date
CN1836216A (zh) 2006-09-20
EP1584033B1 (en) 2006-11-29
JP2006518497A (ja) 2006-08-10
US6986008B2 (en) 2006-01-10
EP1584033A1 (en) 2005-10-12
KR20050088172A (ko) 2005-09-02
CN100403270C (zh) 2008-07-16
DE602004003467D1 (de) 2007-01-11
WO2004063927A1 (en) 2004-07-29
US20040139294A1 (en) 2004-07-15
DE602004003467T2 (de) 2007-10-04
ATE347135T1 (de) 2006-12-15
JP4464956B2 (ja) 2010-05-19

Similar Documents

Publication Publication Date Title
KR100800342B1 (ko) 분산형 시스템의 백업 펌웨어
US6782448B2 (en) Transparent code update in an automated data storage library
US6813698B2 (en) Concurrent configuration of drives of a data storage library
US8131780B2 (en) Systems and methods for managing location of media in a storage system
US6625703B2 (en) Verifying primary and backup copies of vital information for a processing system employing a pseudo-fixed reference identifier
US20050188246A1 (en) Persistent worldwide names assigned to removable media storage
US7200722B2 (en) Reducing inventory after media access in an automated data storage library
US20060190599A1 (en) Handling node address failure in a distributed nodal system of processors
US20060277524A1 (en) Redundant updatable firmware in a distributed control system
US6996635B2 (en) Apparatus and method to activate transparent data storage drive firmware updates
US20040153205A1 (en) Use of cartridge memory for storing logical library association information
US6996673B2 (en) Method and apparatus for managing inventory and door status during firmware update of an automated data storage library
US7568123B2 (en) Apparatus, system, and method for backing up vital product data
US6898480B2 (en) Use of cartridge memory for storing logical library association information
US7484036B2 (en) Apparatus system and method for managing control path commands in an automated data storage library
US20050235076A1 (en) Targeted communications for microcode updates using dedicated LUNs
US7941242B2 (en) Apparatus and method to provide redundant accessor availability
US7159140B2 (en) Method to transfer information between data storage devices
US20040167662A1 (en) Expansion of an automated data storage system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20101210

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee