KR100497990B1 - 중복i/o경로페일오버후의고속큐재시작방법 - Google Patents

중복i/o경로페일오버후의고속큐재시작방법 Download PDF

Info

Publication number
KR100497990B1
KR100497990B1 KR1019980009072A KR19980009072A KR100497990B1 KR 100497990 B1 KR100497990 B1 KR 100497990B1 KR 1019980009072 A KR1019980009072 A KR 1019980009072A KR 19980009072 A KR19980009072 A KR 19980009072A KR 100497990 B1 KR100497990 B1 KR 100497990B1
Authority
KR
South Korea
Prior art keywords
path
request
queue
failure
redundant
Prior art date
Application number
KR1019980009072A
Other languages
English (en)
Other versions
KR19980080373A (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 KR19980080373A publication Critical patent/KR19980080373A/ko
Application granted granted Critical
Publication of KR100497990B1 publication Critical patent/KR100497990B1/ko

Links

Classifications

    • 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
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • 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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2007Error 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 interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error 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 interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • 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/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

중복 스토리지 제어 모듈(또한 RDAC 또는 다중-액티브 제어기로 지칭됨)은 제1 비동기 동작 I/O 경로를 통한 처리를 위해 전송되는 보류 I/O 요구의 큐를 유지한다. 제1 비동기 동작 I/O 경로가 장해일 경우, 제어기는 각 요구가 제1 경로로부터 개별적으로 실패되기를 기다리지 않고 제2 I/O 경로에 대하여 보류 I/O 요구의 전체 큐를 재시작한다. 몇몇 종래의 기술은 제2 I/O 경로에 대하여 각각의 실패한 요구를 재시작하기 전에 RDAC 모듈이 장해 제1 I/O 경로로 전송된 각각의 I/O 요구의 실패를 대기할 것을 요구하였다. 이러한 기술은, 이전에 제1 I/O 경로로 전송된 모든 I/O 요구의 실패를 대기함으로써 장해 I/O 경로로 전송된 모든 동작을 재시작하는데 필요한 전체 시간을 상당히 연장한다. 다른 알려진 기술은, 상위 레벨 RDAC 모듈로 하여금 로우 레벨 장치 드라이버 내에서 각각의 I/O 경로에 대해 유지되는 디스패치 큐를 직접 처리할 수 있도록 하기 위하여 하위 레벨 드라이버 모듈에 비표준 특징을 제공한다. 이러한 종래의 기술은 실패한 I/O 요구의 재시작을 위한 대기 시간을 감소시키지만, RDAC 모듈의 이식성(portability)을 희생시키게 된다. 본 발명의 방법과 구조는 다양한 호스트 시스템에 대하여 이식성을 유지하도록 하는 방법으로 실패한 I/O 요구의 재시작을 위한 대기 시간을 감소시킨다.

Description

중복 I/O 경로 페일오버 후의 고속 큐 재시작 방법{METHOD FOR FAST QUEUE RESTART AFTER REDUNDANT I/O PATH FAILOVER}
본 발명은 일반적으로 중복 스토리지 서브시스템에 관한 것으로, 특히 스토리지 서브시스템의 제어에 종종 채택되는 것과 같이 중복 I/O 경로 제어기에서 동작할 수 있는 이식성 고속 재시작 방법(portable and fast restart methods)에 관한 것이다.
현대의 대용량 스토리지 시스템은 호스트 컴퓨터 시스템 애플리케이션(host computer system applications)으로부터 증가하는 사용자 요구를 충족시키기 위하여 증가하는 스토리지 용량을 제공하도록 발달하고 있다. 대용량 스토리지에 관한 이러한 중대한 의지로 인해, 향상된 신뢰도에 대한 요구도 또한 높다. 증가된 신뢰도에 대한 요구의 일반적인 해결책은 구성요소 레벨 서브시스템의 중복성이다. 중복성은 일반적으로 모든 서브시스템 동작에 포함된 구성요소의 다수의 레벨 또는 모든 레벨에 적용된다. 예를 들어, 스토리지 서브시스템에서, 중복 호스트 시스템은 각각 중복 I/O 경로를 통해 각각의 중복 스토리지 제어기에 접속될 수 있고, 이어서 각각의 중복 스토리지 제어기는 중복 I/O 경로를 통하여 중복 스토리지 장치(예를 들어, 디스크 드라이브)에 접속될 수 있다.
중복 I/O 경로는 SCSI 버스, 호스트 어댑터 또는 RAID 제어기를 포함하는 다수의 형태 중 어떤 것도 취할 수 있지만, 이것에 한정되지는 않는다. 스토리지 제어기를 스토리지 장치에 접속시키는 중복 I/O 경로를 갖는 시스템에는, 본 명세서에서 "중복 이중-액티브 제어(Redundant Dual-Active Control)"(RDAC)라 지칭되는 중복 경로를 관리하는 제어 서브시스템이 존재한다. RDAC 제어 서브시스템은 종종 호스트 시스템과 스토리지 서브시스템 사이에 인터페이스를 제공하는 제어 소프트웨어의 계층화(hierarchical layering)에서의 소프트웨어의 계층이다.
본 기술분야에서 통상의 지식을 가진 자는 RDAC 계층이 일반적으로 소프트웨어 모듈로서 구체화된 논리 구성요소임을 인식할 것이다. RDAC 계층은 일반적으로 호스트 시스템 내에서 (동작 시스템의 일부로서) 동작하거나 또는 스토리지 서브시스템 내에 내장된 스토리지 제어기뿐만 아니라 그 호스트 시스템 내의 지능형 I/O 어댑터 내에서 동작할 수도 있다. RDAC 계층이 동작할 수 있는 물리적 구성요소는 RDAC 계층이 구성요소인 계층화 아키텍처와 특별히 관련되지는 않는다. 일반적으로, RDAC 계층이 상위 레벨(higher level)에서 동작하고, 그에 따라 그것으로 하여금 장해 복구(failure recovery) 기술에서 보다 많은 수의 I/O 경로 소자의 제어를 처리할 수 있도록 하는 것이 바람직하다.
더욱이, 본 기술분야의 통상의 지식을 가진 자는, RDAC가 단지 2 또는 이중 액티브 제어기보다는 오히려 다중 액티브 제어기로 일반화될 수 있음을 인식할 것이다. 성능의 추가적인 중복성과 확장성은 다중 액티브 제어기의 사용을 통해 달성될 수도 있다. 본 명세서에서 이용된 바와 같이, RDAC는 이중-액티브 및 다중-액티브 중복 제어 시스템 모두를 나타낸다.
RDAC 계층은 그것을 스토리지 장치에 접속시키는 중복 I/O 경로 중 선호 경로로 I/O 요구를 전송한다. 전형적으로, RDAC 계층은 본 명세서에서 로우 레벨 디스크 드라이버 또는 디스크 드라이버로 지칭되는 소프트웨어의 또다른 하위 계층(lower layer)으로 그 요구를 전송한다. 일단 디스크 드라이버로 전송되면, RDAC 계층은 제1 요구의 완료를 대기하면서 다른 요구를 자유롭게 처리한다.
상위 레벨(higher level)(예를 들어, RDAC) 소프트웨어 계층으로 버퍼 인터페이스(buffered interface)를 제공하기 위해, 로우 레벨 디스크 드라이버가 큐 구조(queue structure)(본 명세서에서, 디스패치 큐(dispatch queue)로 지칭됨)를 이용하는 경우가 종종 있다. 로우 레벨 디스크 드라이버의 성능은 디스크 드라이브의 속도에 의해 게이트되고, 그에 따라 상위 레벨 소프트웨어 구성요소보다 실질적으로 더 느리다. 디스패치 큐는 로우 레벨 디스크 드라이버에서 각각의 I/O 경로와 결합되어, RDAC 계층과 비교해 볼 때 더 느린 동작을 버퍼한다. RDAC 계층은 로우 레벨 디스크 드라이버 계층으로 그 요구를 전송하고, 로우 레벨 디스크 드라이버 계층은 로우 레벨 디스크 드라이버가 요구를 즉시 처리할 준비가 되어 있지 않을 경우 바람직한 I/O 경로에 대한 디스패치 큐에 발생된 I/O 요구를 차례로 큐한다. 따라서, RDAC 계층은 디스패치 큐에 직접 액세스하지 않는다. 오히려, 디스패치 큐는 상위 레벨 소프트웨어 계층으로부터의 요구를 버퍼하는데 이용된 로우 레벨 디스크 드라이버 내에서 이용되는 공통 메커니즘이다. 로우 레벨 디스크 드라이버 성능은 디스크 드라이브 그 자신의 성능에 의해 게이트되고, 그에 따라 상위 레벨 소프트웨어 계층(예를 들어, RDAC 계층)보다 훨씬 더 느리게 동작한다. 이들 디스패치 큐는 매우 길게 될 수 있다. 로우 레벨 디스크 드라이버에 의한 처리를 위해 디스패치 큐에서 대기하는 수천의 I/O 요구가 있을 수도 있다.
RDAC 계층이 중복 I/O 경로 중 하나를 통해(예를 들어, 선호 I/O 경로를 통해) 스토리지 장치에 액세스할 수 없을 수도 있도록 다양한 장해가 발생할 수 있다. 로우 레벨 디스크 드라이버 모듈에서 소프트웨어 장해는 이러한 장해의 한 예이다. 또는, 예를 들어 하드웨어 장해가 디스크 드라이버 모듈로부터 디스크 어레이(disk array)로의 물리적 접속에서 발생할 수도 있다. 일반적으로, I/O 경로로 하여금 RDAC 계층에 대해 이용할 수 없게 하는 모든 이러한 장해는 본 명세서에서 I/O 경로 장해로 간주될 것이다. 장해 I/O 경로는 또한 본 명세서에서 불량 경로 또는 장해 I/O 경로라 지칭되는 한편, 동작 I/O 경로는 또한 본 명세서에서 양호 경로 또는 동작 I/O 경로라 지칭된다. 일반적으로, RDAC 계층이 I/O 경로(불량 경로)에서의 이러한 장해를 알게 될 때, 실패한 I/O 요구는 다른 I/O 경로(양호 경로)로 방향변경(redirection)된다(재시도된다).
로우 레벨 디스크 드라이버는 I/O 요구를 처리하고, 각각의 요구가 처리됨에 따라 적당한 때에 각각의 I/O 요구의 성공 또는 실패를 RDAC로 통지한다. 실패한 I/O 요구의 경우, 로우 레벨 디스크 드라이버는, I/O 요구를 실패로서 역으로 RDAC로 전송하기 전에 그 요구를 여러 번 처리하려 시도할 수도 있다. 그런 다음, 로우 레벨 디스크 드라이버는 I/O 경로의 연관된 디스패치 큐에서 다음 I/O 요구로 이동할 것이며, 또다른 실패로서 역으로 RDAC로 전송되기 전에 이를 처리하려 시도할 것이다. 실패의 원인이 I/O 경로 그 자체이기 때문에, I/O 요구의 전체적인 디스패치 큐는 실패로 예정된다. 그러나, 각각의 요구는 재시도 횟수를 포함하여 실패로의 그것의 전환을 위해 로우 레벨 디스크 드라이버 내의 디스패치 큐에서 대기해야 하고, 그런 다음 실패로서 단지 로우 레벨 디스크 드라이버에 의해 RDAC 계층으로 리턴된다.
처리된 요구의 실패 상태를 리턴하기 위한 하나의 방법은 RDAC 계층에 의한 소모를 위해 디스크 드라이버 계층에 의해 채워진 실패한 I/O 큐를 제공하는 것이다. 완료하기를 실패한 각각의 처리된 요구에 대한 실패 리턴 상태는 디스크 드라이버에 의해 실패한 I/O 큐에 배치된다. 디스크 드라이버에 대해 비동기적으로, RDAC 계층은 실패한 I/O 큐 내의 실패한 요구를 양호한 중복 경로의 디스패치 큐를 통해 디스크 드라이버로 역으로 전송함으로써 실패한 요구를 처리한다. 요구의 처리를 완료하기 위해, 디스크 드라이버는 결국 양호한 중복 경로 상의 리큐(requeued) 요구를 처리한다.
이러한 알려진 방법 하에서, 각각의 실패한 I/O 요구는 계층화 시스템(layered system)을 통하여 잠재적으로 시간을 소모하는 "라운드 트립(round trip)"을 이루어야 한다. 우선, 요구는 RDAC 계층에서 발생되어 로우 레벨 디스크 드라이버 레벨로 전송된다. 로우 레벨 디스크 드라이버 레벨에서, 요구는 결국 실패하는 2개의 중복 I/O 경로 중 제1 경로에 대해 연관된 디스패치 큐에 배치된다. 큐 요구(queued request)는 디스크 드라이버에 의해 개별 처리되어 실패되기에 앞서, 모든 I/O 요구(잠재적으로, 수천)를 대기하여야 한다. 제1 I/O 경로 디스패치 큐에서 I/O 요구의 현저한 백로그(backlog)가 있는 상황에서, 로우 레벨 디스크 드라이버는 모든 실패한 I/O 요구의 처리를 완료하기 위해 상당한 양의 시간을 필요로 할 수도 있다. 각각의 요구에 대해, 실패의 검출은 I/O 요구에 대한 다수의 재시도를 필요로 할 수도 있다. I/O 경로의 소정의 형태의 장해의 경우, 각각의 재시도는 실패가 감지되기 전에 상당한 시간 주기(예를 들어, 긴 타임아웃)를 필요로 할 수도 있다. I/O 요구가 최종적으로 실패할 때, RDAC가 실패한 요구를 로우 레벨 디스크 드라이버의 교체 I/O 경로(양호 경로)로 전송함으로써 실패한 요구를 재처리할 수 있을 때까지, I/O 요구는 실패한 I/O 큐에서 대기할 수도 있다. 실패한 모든 I/O 요구를 재처리하기 위한 누적 처리 및 지연은 따라서 매우 중요할 수 있다. 따라서, 불량 I/O 경로로부터 양호한 I/O 경로로의 페일오버(failover) 후의 재시작(불량 경로로부터 양호 경로로의 실패한 모든 I/O 요구의 방향변경)이 상당히 느려진다. 각각의 실패를 검출하고 이를 교체 경로에서 재처리하는 것을 완료하기 위해, 재시작하는데 필요한 시간은 단순히 I/O 경로가 장해인 것으로 처음 검출될 때 로우 레벨 디스크 드라이버의 디스패치 큐에서의 요구의 수와 검출될 하나의 실패에 대한 시간을 승산한 시간이다.
이러한 리큐잉(requeuing) 시간을 감소시키기 위한 종래의 몇몇 해결책은 특정 페일오버 특징을 제공하도록 로우 레벨 디스크 드라이버를 맞춤화하는 것과 같이 이러한 문제점을 해결하는 호스트 시스템 기반 접근법을 포함한다. 호스트 시스템은 예를 들어 맞춤화 로우 레벨 디스크 드라이버에서의 특정 액세스 기능(API 기능)을 이용하여 제1 실패에서 디스패치 큐를 플러시(flush)할 수도 있다. 플러시된 I/O 요구는 호스트 시스템에서 다른 데이터 경로로 다시 재라우팅된다. 이러한 접근법은 예를 들어 보류 I/O 요구를 플러시하는 유일한 능력을 지닌 호스트 시스템의 로우 레벨 디스크 드라이버에 의존하고, 따라서 이 해결책은 유일하고, 다양한 호스트 시스템 사이에서 비이식성(non-portable)이다.
전술된 바로부터, 장해(불량) I/O 경로로부터 교체되는 동작(양호) I/O 경로로 I/O 요구의 페일오버의 고속 재시작을 위한 개선된 방법에 대한 필요가 있다는 것은 명백하다. 또한, 어떠한 호스트 시스템 내에서도 쉽게 구현되도록, 이러한 고속 페일오버 방법이 이식성인 것이 바람직하다.
본 발명은 한 I/O 경로로부터 다른 I/O 경로로 페일오버 후 고속 재시작을 위한 이식성 방법을 제공함으로써 전술된 문제점 및 다른 문제점을 해결하여, 유용한 기술의 상태를 향상시킨다. 특히, 본 발명은 RAID 시스템과 같은 스토리지 서브시스템의 I/O 동작의 고속 재시작을 허용한다. 단지 RDAC 계층에 대해서만 변경하여 표준화된 디스크 시스템 기능을 이용하면, 본 발명이 하나의 호스트 시스템으로부터 다른 호스트 시스템으로 고도로 이식성으로 된다.
본 발명의 RDAC 계층은 로우 레벨 디스크 드라이버로 전송되는 각 I/O 요구를 보류 I/O 큐로 복사하도록 변경된다. I/O 경로가 장해이면, RDAC는 제1 I/O 요구 실패 상태가 디스크 드라이버로부터 (시스템의 표준 RDAC/디스크 드라이버 인터페이스 기능을 통하여) 리턴되는 시간에 문제점을 알아챌 것이다. 그런 다음, 불량 I/O 경로에 대한 로우 레벨 디스크 드라이버의 디스패치 큐에 있던 실패한 요구와 모든 다른 보류 요구를 찾기 위해, RDAC는 그 보류 I/O 큐에 문의한다. RDAC 보류 I/O 큐는 불량 I/O 경로에 대해 이전에 제출된 I/O 요구를 모두 포함한다. 이는 RDAC 계층으로 하여금 모든 이러한 보류 요구를 교체 I/O 경로(양호 경로)로 즉시 전송(재시작)할 수 있게 한다. RDAC는 각각의 개별 I/O 요구에 대해 불량한 I/O 경로에서 큐 요구에 대한 로우 레벨 디스크 드라이버의 처리로부터 실패 상태를 리턴하기를 대기하지 않고 이러한 요구 모두를 보류 I/O 큐로부터 양호한 중복 I/O 경로로 전송한다. 불량한 I/O 경로의 디스패치 큐에서 큐된 후속 I/O 요구가 결국 실패할 경우, 로우 레벨 디스크 드라이버로부터 RDAC 계층으로 리턴된 대응하는 실패 메시지는 단순히 RDAC 계층에 의해 폐기된다. 그런 다음, 보류 I/O 큐 내의 대응 엔트리가 제거될 수도 있다.
본 발명의 페일오버 재시작 방법은 불량 경로로부터의 제1 실패에 응답하여 장해 경로로부터 양호 경로로 모든 요구를 리큐잉(requeueing)함으로써 실패한 I/O 요구의 고속 재처리를 제공한다. 따라서, 실패한(막 실패하려 하는 것을 포함하여) I/O 요구의 재처리는 제1 실패가 불량 I/O 경로에서 검출되자마자 시작될 수 있다.
본 발명의 또다른 중요한 장점은, 이 방법이 한 호스트 컴퓨터에서 다른 호스트 컴퓨터로 쉽게 이식될 수 있도록, 단지 RDAC 계층만이 변경되기 때문에 표준 디스크 서브시스템 구성요소가 사용될 수 있다는 점이다. 달리 말하면, 본 발명의 RDAC 계층의 구조 및 방법은 로우 레벨 디스크 드라이버에서 맞춤화된 기능을 필요로 하지 않는다. 오히려, 로우 레벨 디스크 드라이버의 최소 기능이 이용되고, 본 발명의 보류 I/O 큐 기능을 포함하도록 단지 RDAC 계층만이 맞춤화된다. 따라서, 본 발명의 RDAC 계층은 로우 레벨 디스크 드라이버 계층에서 표준화된 인터페이스와 기능을 지원하는 다양한 컴퓨팅 환경에 대해 이식성이다.
따라서, 본 발명의 목적은 장해 I/O 경로로부터 페일오버 후 중복 I/O 경로에서 I/O 요구의 고속 재시작을 위한 스토리지 서브시스템의 동작 방법을 제공하는 것이다.
본 발명의 또다른 목적은, 장해 I/O 경로로부터 페일오버 후 중복 I/O 경로에서 I/O 요구의 고속 재시작을 위한 스토리지 서브시스템의 동작 방법을 제공하는 것이며, 여기서 이러한 방법은 다양한 호스트 컴퓨팅 시스템과 함께 동작하도록 이식성이다.
본 발명의 또다른 목적은, 장해 I/O 경로로부터 페일오버 후 중복 I/O 경로에서 I/O 요구의 고속 재시작을 위해 보류 I/O 큐를 이용하는 방법을 제공하는 것이다.
본 발명이 여러 가지 수정과 대안의 유형을 받아들일 수 있지만 본 발명의 특정 실시예가 도면에서 예를 통하여 도시되었으며 본 명세서에서 상세히 설명될 것이다. 그러나, 이는 본 발명을 설명된 특정 유형에 한정하려 의도된 것은 아니며 반대로 본 발명은 첨부된 청구 범위에 의해 규정된 바와 같이 발명의 사상과 범위 내에 속하는 모든 수정, 등가, 대안을 커버할 것임을 이해해야 한다.
도1은 I/O 경로 장해 후 본 발명의 방법 및 장치가 I/O 요구에 대해 고속의 이식성 페일오버 재시작을 제공하도록 동작할 수 있는 대표적인 컴퓨팅 환경을 도시한다. 호스트 시스템(104)은 중복 버스(105, 106)를 통해 데이터 스토리지 서브시스템(108)에 접속된다. 데이터 스토리지 서브시스템(108)은, 각각 중복 버스(105, 106)에 접속된 중복 스토리지 제어 모듈(110, 112)을 포함한다. 제어 모듈(110, 112)은 이어서 각각 중복 버스(114, 115)를 통해 다수의 중복 디스크 드라이브(118)를 포함하는 디스크 어레이(116)에 접속된다.
통상의 지식을 가진 자는, 제어 모듈(110, 112)이 디스크 어레이(116)로 RAID 스토리지 관리 기능을 제공할 수도 있음을 인식할 것이다. 본 발명의 방법은 중복 경로를 포함하는 스토리지 서브시스템에 인터페이스된 호스트 시스템에서 적용가능하다. RAID 스토리지 관리는 중복 동작을 제공하는 이러한 스토리지 서브시스템에 대해 공통 구성이지만, 부가 호스트 시스템에서의 본 발명의 방법의 동작을 위해 필요하지는 않다.
도1에 도시된 바와 같이, 버스(105), 제어 모듈(110) 및 버스(115)는 호스트 시스템(104)과 디스크 어레이(116) 사이에 제1 I/O 경로를 형성한다. 버스(106), 제어 모듈(112) 및 버스(114)는 호스트 시스템(104)과 디스크 어레이(116) 사이에 제2 (중복) I/O 경로를 형성한다. 통상의 지식을 가진 자는 또한, 호스트 시스템(104) 내의 I/O 어댑터 즉, 버스(105)에 접속된 제1 I/O 어댑터와 버스(106)에 접속된 제2 I/O 어댑터가 중복 I/O 경로 각각의 또다른 구성요소를 형성할 수 있음을 알 것이다. 더욱이, 소정수의 I/O 경로가 호스트 시스템(104)을 디스크 어레이(116)에 접속시킬 수도 있음을 인식할 것이다. 따라서, 도1은 단지 본 발명의 방법이 유리하게 적용될 수도 있는 대표적인 컴퓨팅 환경으로서 의도된 것이다. 다수의 유사한 컴퓨팅 환경이 본 기술분야의 통상의 지식을 가진 자에 의해 인식된다.
도2는 종래 기술에서 알려진 바와 같은 RDAC 시스템에서 I/O 요구의 흐름을 설명하는 단순화된 블록도이다. 애플리케이션 소프트웨어(202)는 I/O 요구를 RDAC(204)로 전송한다. 그런 다음, RDAC(204)는 특정 I/O 경로에서의 그 이상의 처리를 위해 요구를 로우 레벨 디스크 드라이버(210)로 전송한다. 그런 다음, 로우 레벨 디스크 드라이버(210)는 로우 레벨 디스크 드라이버(210)에 의해 비동기 처리하기 위하여 경로 A 디스패치 큐(206)에 이러한 요구를 큐한다. 로우 레벨 디스크 드라이버(210)는 이어서 I/O 요구를 처리하기 위하여 스토리지 어레이(예를 들어, RAID LUN(도시되지 않음))의 동작을 제어한다.
I/O 경로 A에 의한 실패의 경우, 그 경로를 통하여 전송된 I/O 요구는 로우 레벨 디스크 드라이버(210)에 의해 처리되면 모두 실패할 것으로 예정될 수도 있다. 그러나, 로우 레벨 디스크 드라이버(210)는 경로 A 디스패치 큐(206)로부터 한 번에 하나씩 그 I/O 요구를 처리하는 것을 계속할 것이다. 이러한 하드웨어 장해의 경우, 개별 I/O 요구가 처리되고 실패되는데 과도한 양의 시간을 필요로 할 수도 있기 때문에, 개별 I/O 요구는 상당한 시간 동안 경로 A 디스패치 큐(206)에 위치할 수 있는 한편, 그들에 앞선 수천의 요구는 하나씩 처리된다.
실패한 I/O 요구가 로우 레벨 디스크 드라이버(210)에 의해 최종으로 처리될 때, 이는 실패한 I/O 큐(212)를 통하여 RDAC로 역으로 전송될 것이다. RDAC(204)는 큐(212)로부터 실패 상태를 취득하고, 그런 다음 경로 B(양호한 I/O 경로)에서 로우 레벨 디스크 드라이버(210)에 의한 처리를 위해 실패한 I/O 요구를 경로 B 디스패치 큐(208)로 배치한다. 본 기술분야에 통상의 지식을 가진 자는, 실패한 I/O 요구 큐(212)가 이러한 실패 상태를 RDAC(204)로 리턴하기 위한 하나의 일반적인 기술을 나타냄을 인식할 것이다. 로우 레벨 디스크 드라이버(210) 또는 RDAC(204)로부터의 실패 및 성공 상태 메시지의 리턴을 위해 버퍼(buffered) 또는 넌-버퍼(non-buffered) 통신 경로를 제공하도록, 다양한 다른 등가 기술과 구조가 채택될 수도 있다.
종래 기술에서 알려진 바와 같이 또한 도2에 도시된 바와 같이, 각각의 실패한 요구는, 로우 레벨 디스크 드라이버(210)가 요구를 처리하고, 실패하였다고 판정하며, 실패한 I/O 큐(212)를 경유하여 RDAC로 실패 상태를 큐할 때까지, 경로 A 디스패치 큐(206)에서 그 순서를 대기할 것이다. RDAC(204)는 실패한 I/O 큐(212)에서의 실패 상태를 결국 인식하고, 교체 동작 경로 B에서 실패한 동작을 재시작할 것이다. 각각의 개별 I/O 요구가 실패하기를 대기하는 것은, 실패 검출이 예를 들어 타임아웃 주기와 타임아웃 동작의 다수의 재시도를 대기할 것을 필요로 하는 경우에 중요할 수 있다. 따라서, 장해 I/O 경로의 디스패치 큐(206)에서 모든 동작의 재시작을 완료하는데 필요한 누적 지연은 디스패치 큐가 선호 I/O 경로의 장해 시에 상당한 수의 엔트리를 포함하는 경우에 매우 길어질 수 있다.
전술된 바와 같이, (경로 B 디스패치 큐(208)뿐만 아니라) 경로 A 디스패치 큐(206)는 로우 레벨 디스크 드라이버(210) 내에서 생성되고 유지되는 구성요소이다. 디스패치 큐는 상위 레벨 소프트웨어 계층(예를 들어, 애플리케이션 계층(202)과 RDAC 계층(204))에 의해 I/O 요구의 고속 발생을 버퍼하는데 이용된다. 로우 레벨 디스크 드라이버(210)의 성능은 스토리지 어레이(예를 들어, RAID LUN(도시되지 않음))의 비교적 느린 성능에 의해 게이트된다. 따라서, 디스패치 큐는 로우 레벨 디스크 드라이버(210)가 다음 요구를 처리할 준비가 될 때까지 I/O 요구를 버퍼하는 역할을 한다. 따라서, 경로 A 디스패치 큐(206)는 로우 레벨 디스크 드라이버(210)에 의한 처리를 위해 큐에서 대기하는 수천의 I/O 요구를 포함할 수 있다.
로우 레벨 디스크 드라이버(210)에 의해 제공된 특정 (비표준) 기능 없으면, RDAC 계층(204)은 디스패치 큐(206, 208)에 직접 액세스하지 않거나, 디스패치 큐에 대해 제어하지 않는다. 이 상태는 디스패치 큐(206, 208)와 로우 레벨 디스크 드라이버(210)를 둘러싸는 점선(214)으로 표시된다. RDAC(204)로 하여금 디스패치 큐를 직접 제어할 수 있도록 하기 위해, 종래 기술은 맞춤화된 로우 레벨 디스크 드라이버(210) 내에 이러한 특정 비표준 기능을 제공하였다. 예를 들어, 몇몇 종래 기술은, RDAC 계층(204)으로 하여금 디스패치 큐로부터 엔트리를 취득하거나 또는 디스패치 큐에서 엔트리를 플러시(flush)하도록 허용할 수도 있다. 그러나, 이러한 기술은 이종 컴퓨팅 시스템 사이에서 상당히 비이식성(non-portable)이다. 오히려, 이러한 해결책은 특정 컴퓨팅 환경의 로우 레벨 디스크 드라이버의 맞춤 기능에 의존한다. 맞춤화된 로우 레벨 디스크 드라이버 기능에 의존하는 이러한 RDAC 모듈을 포팅(porting)하는 것은 방대한 작업이다.
I/O 동작의 이식성 고속 페일오버 재시작
도3은 본 발명의 방법에 의한 I/O 요구의 처리를 도시한 단순화된 블록도이다. 애플리케이션 소프트웨어(302)는 I/O 요구를 RDAC(304)로 전송하고, RDAC(304)는 이어서 I/O 요구를 (표준) 로우 레벨 디스크 드라이버((310)로 전송한다. 도2에 대하여 전술된 바와 같이, 로우 레벨 디스크 드라이버(310)는, RDAC(304)에 의한 I/O 요구의 발생을 버퍼하고, 스토리지 어레이(예를 들어, RAID LUN(도시되지 않음))에서 I/O 요구의 더 느린 비동기 처리를 위하여, 각각의 중복 I/O 경로에 대응하는 디스패치 큐(306, 308)를 유지한다. 로우 레벨 디스크 드라이버(310)는 RDAC(304)의 처리에 대해 비동기적으로 적당한 때에 요구된 I/O 동작을 실행하도록 스토리지 어레이를 제어한다. RDAC(304)는 또한, 로우 레벨 디스크 드라이버(310)에 의해 전송되어 그에 따라 경로 A 디스패치 큐(306) 상에 큐된 각각의 I/O 요구의 카피(copy)를 포함하는 보류 I/O 큐(312)도 유지한다.
RDAC(304) 제어기는, 각각의 I/O 요구가 완료될 때까지 각각의 I/O 요구의 카피가 유지되는 단일 보류 I/O 큐(312)를 유지한다. 보류 I/O 큐(312)에서 어떠한 특정 I/O 요구는 어느 I/O 경로가 요구의 시작을 위해 선택되었는가에 따라 경로 A 또는 경로 B 상에 보류될 수 있었다. 대안으로서, RDAC(304)는 또한, 경로 B에 대해 분리된 보류 I/O 큐를 유지할 수 있고, 그에 따라 (원래 거기로 지시되었든지 또는 페일오버 재시작에 응답하여 방향변경되었든지 간에) 그것은 경로 B로 향하는 I/O 요구에 대해 동일 처리를 할 수도 있다. 본 기술분야의 통상의 지식을 가진 자는, I/O 경로와 연관된 보류 I/O 큐를 유지하는 원리가 소정수의 교체 중복 I/O 경로로 확장될 수도 있음을 인식할 것이다. 또한, 보류 I/O 큐(312)는 본 기술분야의 통상의 지식을 가진 자에게 잘 알려져 있는 여러 기술 중 어떠한 기술에 의해서도 구현될 수 있다. 잘 알려진 여러 가지 소프트웨어 데이터 구조와 알고리즘 및 하드웨어 구조가, 예를 들어 연결 리스트(linked list), 우선순위 큐, 하드웨어 FIFO 회로, 데이터 테이블, 그리고 많은 다른 것을 포함하여 이러한 큐를 생성하는데 이용될 수 있다.
I/O 요구의 정상 처리에서, 보류 I/O 큐(312) 내의 I/O 요구의 카피는 I/O 요구가 로우 레벨 디스크 드라이버(310)에 의해 성공적으로 완료되면 제거된다. 그러나, I/O 요구가 불량 I/O 경로에서 처음 실패되면, 로우 레벨 디스크 드라이버(310) 내에서(예를 들어, I/O 경로 A에 대한 디스패치 큐(306) 내에서) 보류 중인 모든 I/O 요구를 신속히 식별하고, 대체의 양호한 I/O 경로에서 모든 이러한 식별된 I/O 요구를 재시작하기 위해, RDAC(304)는 보류 I/O 큐(312)를 이용한다.
본 발명의 장점은, 제1 I/O 경로 A 상에서의 실패의 경우 I/O 요구의 흐름을 고려함으로써 제시된다. 로우 레벨 디스크 드라이버(310)는 실패한 I/O 요구 중 제1 요구를 RDAC(304)로 역으로 전송한다. 그런 다음, RDAC(304)는 실패한 I/O 요구에 대해 보류 I/O 큐(312)를 검색한다. 보류 I/O 큐(312)의 데이터 구조 및 구성에 따라, 제1 실패 I/O 요구를 위치시키는 것은 큐에서 제1 엔트리를 식별하는 것만큼 단순할 수도 있다. 실패한 I/O 요구를 발견하면, RDAC(304)는 로우 레벨 디스크 드라이버(310)를 경유하여 양호한 I/O 경로로 그 I/O 요구를 전송할 것이다. 그런 다음, 로우 레벨 디스크 드라이버(310)는 양호한 I/O 경로 B 디스패치 큐(308)에 요구를 큐한다. 또한, RDAC(304)는, 현재 불량한 장해 I/O 경로 A에서의 요구를 처리하는 정상 과정에서 결국 실패하도록 예정된 보류 I/O 큐(312)에 모든 다른 보류 I/O 요구(현재 로우 레벨 디스크 드라이버(310)에 의한 처리를 대기하는 I/O 경로 A의 디스패치 큐(306)에 있는 요구)를 위치시킨다. 보류 I/O 큐(312)에 이와 같이 위치된 모든 다른 I/O 요구는 또한 양호한 교체 I/O 경로 B로 향하는 로우 레벨 디스크 드라이버(310)로 전송된다. 그런 다음, 로우 레벨 디스크 드라이버(310)는 경로 B의 디스패치 큐(308)에 추가적인 방향변경된 I/O 요구를 큐한다. 따라서, 동작을 완료할 때, 실패하도록 예정되고, 아직 경로 A 디스패치 큐(306)에서 대기 중인 수천의 모든 I/O 요구는 또한 경로 B의 디스패치 큐(308)에서 로우 레벨 디스크 드라이버(310)에 의한 처리를 대기하고 있다. 따라서, I/O 요구의 페일오버 재시작 처리는 경로 A 디스패치 큐(306)로부터 개별적으로 실패할 각각의 요구에 대해 필요한 시간에 의존하지 않는다. 오히려, 모든 요구는 불량한 I/O 경로 A에서 제1 실패를 감지할 때, 양호한 I/O 경로 B로 방향변경된다.
또한, 로우 레벨 디스크 드라이버(310)는 정상적인 방법으로 경로 A 디스패치 큐(306)에서 아직 남아 있는 다른 I/O 요구를 계속 처리할 것이다. 불량한 I/O 경로(경로 A)에서의 실패의 회복불능(irrecoverable) 속성으로 인하여, 각각의 큐 I/O 요구는 로우 레벨 디스크 드라이버(310)가 경로 A 디스패치 큐(306)에서 I/O 요구를 계속 처리함에 따라 결국 실패하도록 예정된다. 로우 레벨 디스크 드라이버(310)가 각각의 I/O 요구를 실패할 때까지 처리하기 때문에, 로우 레벨 디스크 드라이버(310)는 그 요구를 역으로 RDAC(304)로 전송한다. 양호한 교체 I/O 경로에서 실패한 I/O 요구를 이전에 재시작하였기 때문에, RDAC(304)는 실패 상태를 폐기한다. 마찬가지로, RDAC(304)는 불량한 I/O 경로 A 디스패치 큐(306)에 아직 큐된 모든 다른 I/O 요구에 대응하는 수신된 실패 상태 메시지를 폐기한다.
로우 레벨 디스크 드라이버(310)가 어떠한 특정 능력도 필요로 하지 않기 때문에, 본 발명의 RDAC(304)는, 최소 표준 I/O 인터페이스 API 규칙이 시스템의 로우 레벨 디스크 드라이버(310)에 의해 채택되는 한 다양한 호스트 시스템 사이에서 이식성이다.
도4는 로우 레벨 디스크 드라이버(310)에 전송하기 위한 I/O 요구를 발생하는 RDAC(304)의 동작을 설명하는 흐름도이다. 엘리먼트(element)(404)는 (예를 들어, 호스트 컴퓨터 시스템 내에서 동작할 수 있는 애플리케이션 소프트웨어(302)로부터) I/O 요구를 수신하도록 동작할 수 있다. 그런 다음, 엘리먼트(406)는 I/O 경로 A로 향하는 로우 레벨 디스크 드라이버(310)로 I/O 요구를 전송하도록 동작할 수 있다. 그런 다음, 엘리먼트(408)는 보류 I/O 큐(312)에 I/O 요구를 카피하도록 동작할 수 있다. 그 때문에, RDAC(304)는 그 자신의 보류 I/O 큐에 모든 보류 I/O 요구의 카피를 유지한다. 따라서, RDAC(304)는 로우 레벨 디스크 드라이버(310) 내의 큐잉 메커니즘(예를 들어, 디스패치 큐(306, 308))으로의 특정, 맞춤, 비이식성 액세스를 필요로 하지 않는다.
도3의 로우 레벨 장치 드라이버(310)는 경로 A 디스패치 큐(306)에서 버퍼된(큐된) I/O 요구를 처리하도록 비동기로 동작할 수 있다. 디스패치 큐에서 각각의 I/O 요구는 거기에서 식별된 I/O 동작을 실행하기 위해 차례로 처리된다. 로우 레벨 장치 드라이버(310)는 처리된 I/O 요구가 성공하였거나 또는 실패하였음을 나타내는 상태 메시지를 RDAC(304)로 리턴한다. 실패의 경우, 동작이 성공적으로 실행될 수 없음을 확신하기 위해, 로우 레벨 디스크 드라이버(310)는 소정의 요구되는 동작의 재시도를 실행한다. 로우 레벨 장치 드라이버(310)의 처리는 일반적으로 호스트 컴퓨터의 동작 시스템(호스트 시스템 API) 내에서 인터페이스 기능에 의해 제공된다. 이러한 기능은 일반적으로 표준화되고, 이러한 기능성을 위한 하나 또는 그 이상의 산업 표준(예를 들어, UNIX/POSIX, MS 윈도우즈 등)에 따른다. 로우 레벨 장치 드라이버(310)의 작동과 그에 대한 인터페이스는 따라서 본 기술분야의 통상의 지식을 가진 자에게 잘 알려져 있다.
도5는 I/O 요구의 성공적 또는 실패한(unsuccessful 또는 failed) 완료를 표시하는 로우 레벨 장치 드라이버(310)로부터의 상태 메시지의 수신에 응답하여 RDAC(304)의 동작을 설명하는 흐름도이다. 엘리먼트(504)는 RDAC(304) 내에서 동작하여, 수신된 상태 메시지가 연관된 I/O 요구를 처리할 때 성공을 나타내는지 또는 실패를 나타내는지 여부를 판정한다. 엘리먼트(504)가 (상태 메시지에 의해 표시된 바와 같이) I/O 요구의 처리가 성공하였다고 판정할 경우, 처리는 I/O 요구가 보류 I/O 큐(312)로부터 제거되는 엘리먼트(506)로 계속된다. 그런 다음, I/O 요구 성공 상태 메시지의 처리가 완료된다.
엘리먼트(504)가 (수신된 상태 메시지에 의해 표시된 바와 같이) I/O 요구의 처리가 실패하였다고 판정할 경우, 처리는 실패한 I/O 요구를 보류 I/O 큐(312)에 위치시키기 위해 엘리먼트(508)로 계속된다. 전술된 바와 같이, I/O 요구는 RDAC(304)에 의해 발생되고, 선호 I/O 경로(예를 들어, I/O 경로 A)로 전송되며, 보류 I/O 큐(312)에 카피된다. 따라서, 엘리먼트(508)는 보류 I/O 큐(312)에 카피된 큐 엔트리를 위치시키도록 동작할 수 있다. 보류 I/O 큐(312)에 엔트리를 위치시키는 상세한 단계는 보류 I/O 큐(312)를 표시하도록 선택된 데이터 구조에 의존한다. 이러한 데이터 구조와 연관된 검색 기술은 본 기술분야의 통상의 지식을 가진 자에게 잘 알려져 있다. 바람직한 실시예에서, 보류 I/O 큐 내의 각각의 엔트리는, I/O 요구가 향하는 I/O 경로를 나타내고, 엔트리는 RDAC(304)에 의해 엔트리가 발생되는 시간적 순서로 유지된다. 따라서, 실패한 엔트리를 위치시키는 것은, 실패한 I/O 경로(예를 들어, 경로 A)를 원래의 수신 경로로서 식별하는 큐에 제1(최고(最古)) 엔트리를 배치하는 것을 포함하는 것이 바람직하다.
다음에, 보류 I/O 큐에 배치된 I/O 요구가 이미 리큐된(requeued) 것으로 표지되는지 여부를 체크하기 위해, 엘리먼트(510)는 RDAC(304)에서 동작할 수 있다. 엘리먼트(514)에 대해 이하에서 설명되는 바와 같이, 엔트리를 양호한 중복 I/O 경로 B(경로(308))로 전송함으로써 보류 I/O 큐(312)로부터 재시작된 모든 엔트리는 보류 I/O 큐(312)에서 그와 같이 나타나도록 표지된다. 엘리먼트(508)의 동작에 의해 위치된 큐 엘리먼트가 그와 같이 표지되지 않을 경우, 위치된 큐 엘리먼트는 불량 I/O 경로 A(경로(306))의 장해와 연관하여 제1 I/O 요구가 실패할 거라고 나타낸다. 따라서, 사실상 엘리먼트(510)는, 이러한 실패한 특정 I/O 요구가 식별된 I/O 경로에 대하여 또는 오히려 (이전에 제1 실패가 검출되었을 때 표지된) 후속하는 실패한 I/O 요구에 대하여 로우 레벨 디스크 드라이버(310)로부터 실패로서 리턴되는 이러한 제1 요구인지 여부를 판정한다.
엘리먼트(510)가 엘리먼트(508)의 동작에 의해 보류 I/O 큐에 위치된 실패한 I/O 요구가 제1의 이러한 요구(따라서 리큐된 것으로 표지되지 않음)라고 판정할 경우, 엘리먼트(512)는 그 다음에 실패한 I/O 요구를 교체 I/O 경로 B로 전송하도록 동작할 수 있다. 따라서, 로우 레벨 디스크 드라이버(310)는 재시작된(전송된) I/O 요구를 I/O 경로 B 디스패치 큐(308)에 부가한다. 엘리먼트(512)에 의해 실행되는 동작은 따라서 엔트리를 보류 I/O 큐로부터 교체 I/O 경로 B 디스패치 큐(308)로 효과적으로 카피하고, 그에 따라 본 명세서에서 리큐 동작으로 지칭되고, 큐 엔트리는 리큐된 I/O 요구로 지칭된다.
엘리먼트(512)는 로우 레벨 디스크 드라이버(310)로의 전송에 의해 모든 다른 (후속) I/O 요구를 보류 I/O 큐(312)로부터 경로 B 디스패치 큐(308)로 리큐하도록 동작할 수도 있다. 모든 다른 이러한 I/O 요구는 I/O 경로 A(306)의 실패로 인하여 실패하도록 예정된다. 다음에, 엘리먼트(514)는 엘리먼트(512)의 동작에 의해 리큐된 바와 같은 보류 I/O 큐(310) 내에 위치된 모든 리큐된 I/O 요구를 표지하도록 동작할 수 있다. 엔트리는 표지되어, 불량 I/O 경로 A 상의 제1 실패에 부닥친 사실을 플래그한다. 이 사실은 엘리먼트(510)에 대하여 전술된 테스트와 관련된다. 로우 레벨 디스크 드라이버(310)로부터 보류 I/O 큐에 플래그된 엔트리에 대응하는 RDAC(304)로 리턴된 실패 상태는 폐기될 수도 있다. 대응 I/O 요구는, 제1 실패가 감지되었을 때 교체 I/O 경로 B로 이미 리큐되었다. 본 발명의 방법의 처리는 수신된 상태 메시지에 대하여 완전하다.
후속 실패 상태 메시지가 후속 리큐된 I/O 요구와 대응하는 로우 레벨 장치 드라이버로부터 수신될 때, 엘리먼트(510)는 보류 I/O 큐(310) 내에 배치된 대응 I/O 요구가 이미 리큐된 것으로 표지된 것으로(따라서, 제1 이러한 실패가 아님) 판정할 것이다. 엘리먼트(510)에 의한 이러한 판정은 엘리먼트(516)로 하여금 로우 레벨 장치 드라이버(310)로부터의 실패 메시지를 폐기하도록 한다. 장해 경로로부터의 제1 실패 메시지는 모든 보류 I/O 요구로 하여금 리큐되도록 하였다. 따라서, 장해 I/O 경로로부터의 후속 실패 메시지는 무시될 수도 있다.
본 발명이 도면과 전술된 설명으로 상세히 예시되고 설명되었으나, 이러한 예시와 설명은 특징에 있어서 대표적인 것으로 간주되어야 하고, 제한으로 간주되지 않아야 하며, 또한 바람직한 실시예와 그에 대한 작은 변형만이 제시되고 설명되었으며, 본 발명의 사상에 속하는 한 모든 변경과 수정이 보호되기를 원하는 것으로 이해된다.
이상에서 살펴본 바와 같이, 본 발명은 불량 경로로부터의 제1 실패에 응답하여 장해 경로로부터 양호 경로로 모든 요구를 리큐함으로써 실패한 I/O 요구를 고속으로 재처리할 수 있고, RDAC 계층만이 변경되기 때문에 표준 디스크 서브시스템 구성요소가 사용될 수 있어, 다양한 호스트 시스템 사이에서 이식성일 수 있다.
도1은 본 발명의 방법이 유리하게 적용될 수 있는 일반적인 컴퓨터 시스템의 블록도.
도2는 종래 기술에서 이용되는 RDAC, 하나의 디스크 드라이버 및 다양한 I/O 요구 큐의 상호관계를 도시한 블록도.
도3은 보류 I/O 큐를 포함하여, 본 발명에서 이용되는 RDAC, 하나의 로우 레벨 디스크 드라이버 및 다양한 I/O 요구 큐의 상호관계를 도시한 블록도.
도4는 요구의 성공 또는 실패를 통지하기 전에, 본 발명에서 RDAC에 의해 I/O 요구를 처리하는 것을 설명하는 흐름도.
도5는 요구의 성공 또는 실패를 통지한 이후에, 본 발명에서 RDAC에 의해 I/O 요구를 처리하는 것을 설명하는 흐름도.
* 도면의 주요부분에 대한 부호의 설명
104: 호스트 시스템 105, 106, 114, 115: 중복 버스
108: 데이터 스토리지 서브시스템 110, 112: 중복 스토리지 제어 모듈
116: 디스크 어레이 118: 중복 디스크 드라이브
202, 302: 애플리케이션 소프트웨어
204, 304: RDAC 206, 306: 경로 A 디스패치 큐
208, 308: 경로 B 디스패치 큐 210, 310: 로우 레벨 디스크 드라이버
312: 보류 I/O 큐

Claims (34)

  1. 중복 제어기 관리 구성요소 및 다수의 비동기 동작 I/O 경로를 갖는 시스템에서 실패한 입/출력 동작의 재시작 방법에 있어서,
    상기 중복 제어기 관리 구성요소로부터 상기 비동기 동작 I/O 경로 중 제1 I/O 경로로 적어도 하나의 I/O 요구를 전송하는 단계 - 여기서, 상기 중복 제어기 관리 구성요소는 상기 적어도 하나의 I/O 요구가 상기 제1 I/O 경로 내에서 처리될 때 상기 적어도 하나의 I/O 요구에 액세스하지 않음 - ;
    상기 적어도 하나의 I/O 요구에 관한 정보를 포함하는 엔트리를 상기 중복 제어기 관리 구성요소와 결합된 보류 I/O 큐 내에 저장하는 단계; 및
    상기 제1 I/O 경로의 실패에 대한 표시의 수신에 응답하여, 상기 보류 I/O 큐 내에 이전에 상기 제1 I/O 경로로 전송된 엔트리를 갖는 I/O 요구를 상기 비동기 동작 I/O 경로 중 제2 I/O 경로에서 재시작하는 단계
    를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 다수의 비동기 동작 I/O 경로 각각은 다수의 중복 다중 액티브 제어기중 한 제어기와 대응하는 실패한 입출력 동작의 재시작 방법.
  3. 제2항에 있어서,
    상기 다수의 중복 다중-액티브 제어기의 각각은 RAID 스토리지 제어기인
    방법.
  4. 제 1 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 I/O 어댑터를 포함하는 실패한 입출력 동작의 재시작 방법.
  5. 제 1 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 지능 I/O 어댑터를 포함하는 실패한 입출력 동작의 재시작 방법.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 I/O 요구는 다수의 I/O 요구를 포함하고, 상기 재시작 단계는 실패의 표시에 대한 제1의 상기 수신에 응답하여 실행되는 실패한 입출력 동작의 재시작 방법.
  7. 제6항에 있어서,
    상기 재시작 단계는, 상기 보류 I/O 큐 내의 상기 엔트리를 상기 재시작된 I/O 요구에 대응하여 표지하는 단계를 포함하는
    방법.
  8. 제7항에 있어서,
    상기 표시의 제1 수신에 후속하여 수신되고, 상기 보류 I/O 큐 내의 상기 엔트리 중 표지된 엔트리에 대응하는 실패에 대한 표시의 수신을 무시하는 단계
    를 더 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 적어도 하나의 I/O 요구에 대한 처리의 성공적인 완료에 응답하여 상기 보류 I/O 큐로부터 상기 엔트리를 제거하는 단계를 더 포함하는 실패한 입출력 동작의 재시작 방법.
  10. 중복 제어기 관리 구성요소 및 다수의 비동기 동작 I/O 경로를 갖는 시스템에서 실패한 입/출력 동작의 재시작 방법에 있어서,
    상기 중복 제어기 관리 구성요소로부터 상기 비동기 동작 I/O 경로 중 제1 I/O 경로로 적어도 하나의 I/O 요구를 전송하는 단계 - 여기서, 상기 중복 제어기 관리 구성요소는 상기 적어도 하나의 I/O 요구가 상기 제1 I/O 경로 내에서 처리될 때 상기 적어도 하나의 I/O 요구에 액세스하지 않음 - ;
    상기 제1 I/O 경로로 전송된 상기 적어도 하나의 I/O 요구에 대응하는 엔트리를 상기 중복 제어기 관리 구성요소와 결합된 보류 I/O 큐 내에 저장하는 단계;
    상기 제1 I/O 경로의 장해에 응답하여 발생된 실패에 대한 표시의 수신에 응답하여, 상기 보류 I/O 큐로부터 이전에 상기 제1 I/O 경로로 전송된 I/O 요구에 대응하는 모든 엔트리를 취득하는 단계; 및
    상기 모든 엔트리를 상기 비동기 동작 I/O 경로 중 제2 I/O 경로로 송신하는 단계
    를 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 다수의 비동기 동작 I/O 경로 각각은 다수의 중복 다중 액티브 제어기중 한 제어기에 대응하는 실패한 입출력 동작의 재시작 방법.
  12. 제11항에 있어서,
    상기 다수의 중복 다중-액티브 제어기의 각각은 RAID 스토리지 제어기인
    방법.
  13. 제 10 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 I/O 어댑터를 포함하는 실패한 입출력 동작의 재시작 방법.
  14. 제 10 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 지능 I/O 어댑터인 실패한 입출력 동작의 재시작 방법.
  15. 제10항에 있어서,
    상기 적어도 하나의 I/O 요구는 다수의 I/O 요구를 포함하고, 상기 취득 단계 및 상기 송신 단계는 실패한 제1 I/O 요구에 대응하는 실패에 대한 표시의 제1 수신에 응답하여 실행되는
    방법.
  16. 제15항에 있어서,
    상기 취득 단계는, 상기 보류 I/O 큐 내의 각 취득된 엔트리를 상기 제2 I/O 경로로 재전송된 것으로서 표지하는 단계를 포함하는
    방법.
  17. 제16항에 있어서,
    상기 표시의 제1 수신에 후속하여 수신되고, 상기 보류 I/O 큐 내의 상기 엔트리 중 표지된 엔트리에 대응하는 실패에 대한 표시의 수신을 무시하는 단계
    를 더 포함하는 방법.
  18. 제10항에 있어서,
    상기 적어도 하나의 I/O 요구 중 대응하는 하나에 대한 처리의 완료에 응답하여, 상기 보류 I/O 큐로부터 상기 엔트리를 제거하는 단계
    를 더 포함하는 방법.
  19. I/O 서브시스템 내에서 실패한 I/O 요구를 리큐잉(requeuing)하기 위한 장치에 있어서,
    중복 제어기 관리 구성요소;
    상기 중복 제어기 관리 구성요소와 결합된 보류 I/O 큐;
    상기 중복 제어기 관리 구성요소와 결합되고, 상기 중복 제어기 관리 구성요소로부터 전송된 I/O 요구를 유지하기 위해 상기 중복 제어기 관리 구성요소가 액세스할 수 없는 수단을 포함하는 제1 비동기 동작 I/O 경로;
    상기 중복 제어기 관리 구성요소와 결합되고, 상기 중복 제어기 관리 구성요소로부터 전송된 I/O 요구를 유지하기 위해 상기 중복 제어기 관리 구성요소가 액세스할 수 없는 수단을 포함하는 제2 비동기 동작 I/O 경로;
    I/O 요구의 수신에 응답하여, 상기 보류 I/O 큐 내에 상기 I/O 요구를 큐잉하기 위한 상기 중복 제어기 관리 구성요소 내의 수단;
    I/O 요구의 수신에 응답하여, 상기 제1 비동기 동작 I/O 경로로 상기 I/O 요구를 전송하기 위한 상기 중복 제어기 관리 구성요소 내의 수단;
    상기 제1 비동기 동작 I/O 경로의 동작에서 실패를 검출하기 위한 상기 중복 제어기 관리 구성요소 내의 수단;
    상기 제1 비동기 동작 I/O 경로의 동작에서의 실패의 검출에 응답하여, 상기 보류 I/O 큐로부터 이전에 상기 제1 비동기 동작 I/O 경로로 전송된 모든 I/O 요구를 취득하기 위한 수단; 및
    상기 모든 I/O 요구를 상기 제2 비동기 동작 I/O 경로로 송신하기 위한 수단
    을 포함하는 장치.
  20. 제 19 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로는 중복 다중 액티브 제어기이고, 상기 제2의 비동기 동작 I/O 경로는 중복 다중 액티브 제어기인 실패한 I/O 요구 리큐잉 장치.
  21. 제 20 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로는 RAID 제어기이고, 상기 제2의 비동기 동작 I/O 경로는 RAID 제어기인 실패한 I/O 요구 리큐잉 장치.
  22. 제 19 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로는 I/O 어댑터이고, 상기 제2의 비동기 동작 I/O 경로는 I/O 어댑터인 실패한 I/O 요구 리큐잉 장치.
  23. 제 19 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로는 지능 I/O 어댑터이고, 상기 제2의 비동기 동작 I/O 경로는 지능 I/O 어댑터인 실패한 I/O 요구 리큐잉 장치.
  24. 제 19 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로의 동작에서 실패를 검출하기 위한 상기 수단은 상기 제1의 비동기 동작 I/O 경로로부터 제1의 실패한 I/O 요구의 실패의 제1 표시에 응답하는 실패한 I/O 요구 리큐잉 장치.
  25. 제 24 항에 있어서,
    상기 제1의 비동기 동작 I/O 경로로부터 I/O 요구의 실패의 후속 표시-상기 실패의 후속 표시는 실패의 상기 제1 표시에 이어서 검출하기 위한 상기 수단에 의해 수신됨-를 폐기하기 위한 수단을 더 포함하는 실패한 I/O 요구 리큐잉 장치.
  26. 중복 제어기 관리 구성요소 및 다수의 비동기 동작 I/O 경로를 갖는 시스템 내에서 동작가능한 실패한 입/출력 동작의 재시작 방법을 실행하도록 프로그램된 명령을 포함하는 컴퓨터 판독가능 기억 매체에 있어서,
    상기 방법은,
    상기 중복 제어기 관리 구성요소로부터 상기 비동기 동작 I/O 경로 중 제1 I/O 경로로 적어도 하나의 I/O 요구를 전송하는 단계 - 여기서, 상기 중복 제어기 관리 구성요소는 상기 적어도 하나의 I/O 요구가 상기 제1 I/O 경로 내에서 처리될 때 상기 적어도 하나의 I/O 요구에 액세스하지 않음 - ;
    상기 적어도 하나의 I/O 요구에 관한 정보를 포함하는 엔트리를 상기 중복 제어기 관리 구성요소와 결합된 보류 I/O 큐 내에 저장하는 단계; 및
    상기 제1 비동기 동작 I/O 경로의 실패에 대한 표시의 수신에 응답하여, 상기 보류 I/O 큐 내에 이전에 상기 제1 I/O 경로로 전송된 엔트리를 갖는 I/O 요구를 상기 비동기 동작 I/O 경로 중 제2 I/O 경로에서 재시작하는 단계를 포함하는
    기억 매체.
  27. 제 26 항에 있어서,
    상기 다수의 비동기 동작 I/O 경로 각각은 다수의 중복 다중 액티브 제어기중 한 제어기에 대응하는 컴퓨터 판독 가능 기억 매체.
  28. 제27항에 있어서,
    상기 다수의 중복 다중-액티브 제어기의 각각은 RAID 스토리지 제어기인
    기억 매체.
  29. 제 26 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 I/O 어댑터를 포함하는 컴퓨터 판독 가능 기억 매체.
  30. 제 26 항에 있어서,
    상기 비동기 동작 I/O 경로 각각은 지능 I/O 어댑터를 포함하는 컴퓨터 판독 가능 기억 매체.
  31. 제 26 항에 있어서,
    상기 적어도 하나의 I/O 요구는 다수의 I/O 요구를 포함하고, 상기 재시작 단계는 실패의 표시의 제1의 상기 수신에 응답하여 실행되는 컴퓨터 판독 가능 기억 매체.
  32. 제31항에 있어서,
    상기 재시작 단계는, 상기 보류 I/O 큐 내의 상기 엔트리를 상기 재시작된 I/O 요구에 대응하여 표지하는 단계를 포함하는
    기억 매체.
  33. 제32항에 있어서,
    상기 방법은, 상기 표시의 제1 수신에 후속하여 수신되고, 상기 보류 I/O 큐 내의 상기 엔트리 중 표지된 엔트리에 대응하는 실패에 대한 표시의 수신을 무시하는 단계를 더 포함하는
    기억 매체.
  34. 제 26 항에 있어서,
    상기 방법은 상기 적어도 하나의 I/O 요구의 처리의 성공적인 완료에 응답하여 상기 보류 I/O 큐로부터 상기 엔트리를 제거하는 단계를 더 포함하는 컴퓨터 판독 가능 기억 매체.
KR1019980009072A 1997-03-31 1998-03-17 중복i/o경로페일오버후의고속큐재시작방법 KR100497990B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/828,614 1997-03-31
US8/828,614 1997-03-31
US08/828,614 US5944838A (en) 1997-03-31 1997-03-31 Method for fast queue restart after redundant I/O path failover

Publications (2)

Publication Number Publication Date
KR19980080373A KR19980080373A (ko) 1998-11-25
KR100497990B1 true KR100497990B1 (ko) 2005-09-08

Family

ID=25252277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980009072A KR100497990B1 (ko) 1997-03-31 1998-03-17 중복i/o경로페일오버후의고속큐재시작방법

Country Status (2)

Country Link
US (1) US5944838A (ko)
KR (1) KR100497990B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107918570A (zh) * 2017-10-20 2018-04-17 杭州沃趣科技股份有限公司 一种双活系统共享仲裁盘的方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112311A (en) * 1998-02-20 2000-08-29 International Business Machines Corporation Bridge failover system
JPH11345175A (ja) * 1998-06-02 1999-12-14 Nec Kofu Ltd 代替パス制御システム及び方法
US6308284B1 (en) * 1998-08-28 2001-10-23 Emc Corporation Method and apparatus for maintaining data coherency
US6397350B1 (en) * 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6516423B1 (en) * 1999-10-21 2003-02-04 Ericsson Inc. System and method for providing multiple queue redundancy in a distributed computing system
US7111189B1 (en) * 2000-03-30 2006-09-19 Hewlett-Packard Development Company, L.P. Method for transaction log failover merging during asynchronous operations in a data storage network
AU2001255531A1 (en) * 2000-04-20 2001-11-07 Ciprico Inc. Network appliance
US6701449B1 (en) 2000-04-20 2004-03-02 Ciprico, Inc. Method and apparatus for monitoring and analyzing network appliance status information
JP3992427B2 (ja) * 2000-08-01 2007-10-17 株式会社日立製作所 ファイルシステム
WO2002033551A1 (en) * 2000-10-18 2002-04-25 Tricord Systems, Inc. Controller fault recovery system for a distributed file system
US6820212B2 (en) 2001-02-20 2004-11-16 Digi-Data Corporation RAID system having channel capacity unaffected by any single component failure
US6910098B2 (en) * 2001-10-16 2005-06-21 Emc Corporation Method and apparatus for maintaining data coherency
US7111084B2 (en) * 2001-12-28 2006-09-19 Hewlett-Packard Development Company, L.P. Data storage network with host transparent failover controlled by host bus adapter
US6941493B2 (en) * 2002-02-27 2005-09-06 Sun Microsystems, Inc. Memory subsystem including an error detection mechanism for address and control signals
US6928509B2 (en) * 2002-08-01 2005-08-09 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
DE60324574D1 (de) * 2002-08-02 2008-12-18 Grass Valley Us Inc Echtzeit-failover-wiederherstellung für ein mediennetzwerk
US7395337B2 (en) * 2002-08-29 2008-07-01 International Business Machines Corporation Method, system, and program for establishing and requesting status on a computational resource
US7318116B2 (en) * 2002-11-08 2008-01-08 International Business Machines Corporation Control path failover in an automated data storage library
US7024499B2 (en) * 2003-01-21 2006-04-04 Red Hat, Inc. Cache only queue option for cache controller
US20050028028A1 (en) * 2003-07-29 2005-02-03 Jibbe Mahmoud K. Method for establishing a redundant array controller module in a storage array network
JP4012498B2 (ja) * 2003-11-18 2007-11-21 株式会社日立製作所 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US7127545B1 (en) 2003-11-19 2006-10-24 Veritas Operating Corporation System and method for dynamically loadable storage device I/O policy modules
US7251743B2 (en) * 2003-11-20 2007-07-31 International Business Machines Corporation Method, system, and program for transmitting input/output requests from a primary controller to a secondary controller
US20050228943A1 (en) * 2004-04-02 2005-10-13 Decenzo David P Multipath redundant storage system architecture and method
US7284020B2 (en) * 2004-09-01 2007-10-16 Hitachi, Ltd. System and method for data recovery in a storage system
US7437608B2 (en) * 2004-11-15 2008-10-14 International Business Machines Corporation Reassigning storage volumes from a failed processing system to a surviving processing system
US7406617B1 (en) * 2004-11-22 2008-07-29 Unisys Corporation Universal multi-path driver for storage systems including an external boot device with failover and failback capabilities
US20070174723A1 (en) * 2006-01-18 2007-07-26 Omar Cardona Sub-second, zero-packet loss adapter failover
GB0610474D0 (en) * 2006-05-26 2006-07-05 Ibm Storage area network controller
US20080244535A1 (en) * 2007-03-28 2008-10-02 Vmware, Inc. Logging and Replaying Input/Output Events for a Virtual Machine
US20090007111A1 (en) * 2007-06-27 2009-01-01 Vmware, Inc. Logging and replaying input/output events for a virtual machine
US7774646B2 (en) 2007-07-23 2010-08-10 Netapp, Inc. Surviving storage system takeover by replaying operations in an operations log mirror
US11539675B2 (en) 2018-06-06 2022-12-27 Slack Technologies, Llc Encryption key management for international data residency
CN111046007B (zh) * 2018-10-12 2023-08-18 伊姆西Ip控股有限责任公司 管理存储系统的方法、装置和计算机程序产品
US11949739B2 (en) * 2018-12-14 2024-04-02 Salesforce, Inc. Methods, apparatuses, and computer program products for management of data deletion requests based on geographically distributed data

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259197A (ja) * 1993-03-08 1994-09-16 Hitachi Ltd アレイ型ディスクシステムの制御方式
JPH07210333A (ja) * 1994-01-13 1995-08-11 Hitachi Ltd アレイ型ディスクシステムの制御方式
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
JPH0816328A (ja) * 1994-06-28 1996-01-19 Mitsubishi Electric Corp ディスクアレイシステム
US5504882A (en) * 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08137630A (ja) * 1994-11-11 1996-05-31 Hitachi Ltd ディスクアレイコントローラ及びディスクアレイ装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE645702C (de) * 1935-03-26 1937-06-02 Karl Ronge Deckelverschluss fuer Schnellkochtoepfe
US3702006A (en) * 1971-06-09 1972-10-31 Ibm Method for balancing the utilization of input/output devices
US5764922A (en) * 1986-11-04 1998-06-09 Unisys Corporation I/O system for off-loading operating system functions
US5148432A (en) * 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5101492A (en) * 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
US5249279A (en) * 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5317752A (en) * 1989-12-22 1994-05-31 Tandem Computers Incorporated Fault-tolerant computer system with auto-restart after power-fall
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
US5210860A (en) * 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
JPH05134886A (ja) * 1990-11-30 1993-06-01 Fujitsu Ltd デツドロツク検出方式
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5317731A (en) * 1991-02-25 1994-05-31 International Business Machines Corporation Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
WO1993018456A1 (en) * 1992-03-13 1993-09-16 Emc Corporation Multiple controller sharing in a redundant storage array
JP3181398B2 (ja) * 1992-10-06 2001-07-03 三菱電機株式会社 アレイ型記録装置
US5388108A (en) * 1992-10-23 1995-02-07 Ncr Corporation Delayed initiation of read-modify-write parity operations in a raid level 5 disk array
US5459864A (en) * 1993-02-02 1995-10-17 International Business Machines Corporation Load balancing, error recovery, and reconfiguration control in a data movement subsystem with cooperating plural queue processors
US5455934A (en) * 1993-03-23 1995-10-03 Eclipse Technologies, Inc. Fault tolerant hard disk array controller
US5367669A (en) * 1993-03-23 1994-11-22 Eclipse Technologies, Inc. Fault tolerant hard disk array controller
US5386324A (en) * 1993-07-30 1995-01-31 International Business Machines Corporation Apparatus and method for anticipated error recovery using debris profiles
US5331476A (en) * 1993-07-30 1994-07-19 International Business Machines Corporation Apparatus and method for dynamically performing knowledge-based error recovery
US5742239A (en) * 1993-08-24 1998-04-21 Mti Technology Corporation Background arbitration monitoring to improve access on lightly consumed network
US5548711A (en) * 1993-08-26 1996-08-20 Emc Corporation Method and apparatus for fault tolerant fast writes through buffer dumping
US5535365A (en) * 1993-10-22 1996-07-09 Cray Research, Inc. Method and apparatus for locking shared memory locations in multiprocessing systems
AU1091295A (en) * 1993-11-09 1995-05-29 Kenneth H. Conner First come memory accessing without conflict
US5463643A (en) * 1994-03-07 1995-10-31 Dell Usa, L.P. Redundant memory channel array configuration with data striping and error correction capabilities
EP0707269A1 (en) * 1994-10-11 1996-04-17 International Business Machines Corporation Cache coherence network for a multiprocessor data processing system
US5574863A (en) * 1994-10-25 1996-11-12 Hewlett-Packard Company System for using mirrored memory as a robust communication path between dual disk storage controllers
EP0832456A1 (en) * 1995-05-22 1998-04-01 MTI Technology Corporation Disk array system including a dual-ported staging memory and concurrent redundancy calculation capability
US5682537A (en) * 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5790775A (en) * 1995-10-23 1998-08-04 Digital Equipment Corporation Host transparent storage controller failover/failback of SCSI targets and associated units
US5694571A (en) * 1995-10-31 1997-12-02 Sun Microsystems, Inc. Utilizing a rotating randomly accessible mass storage medium as a caching device for another rotating mass storage medium
US5708771A (en) * 1995-11-21 1998-01-13 Emc Corporation Fault tolerant controller system and method
US5678026A (en) * 1995-12-28 1997-10-14 Unisys Corporation Multi-processor data processing system with control for granting multiple storage locks in parallel and parallel lock priority and second level cache priority queues
US5787304A (en) * 1996-02-05 1998-07-28 International Business Machines Corporation Multipath I/O storage systems with multipath I/O request mechanisms

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259197A (ja) * 1993-03-08 1994-09-16 Hitachi Ltd アレイ型ディスクシステムの制御方式
JPH07210333A (ja) * 1994-01-13 1995-08-11 Hitachi Ltd アレイ型ディスクシステムの制御方式
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
US5504882A (en) * 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH0816328A (ja) * 1994-06-28 1996-01-19 Mitsubishi Electric Corp ディスクアレイシステム
JPH08137630A (ja) * 1994-11-11 1996-05-31 Hitachi Ltd ディスクアレイコントローラ及びディスクアレイ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107918570A (zh) * 2017-10-20 2018-04-17 杭州沃趣科技股份有限公司 一种双活系统共享仲裁盘的方法

Also Published As

Publication number Publication date
US5944838A (en) 1999-08-31
KR19980080373A (ko) 1998-11-25

Similar Documents

Publication Publication Date Title
KR100497990B1 (ko) 중복i/o경로페일오버후의고속큐재시작방법
US7290086B2 (en) Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system
KR100194295B1 (ko) 데이타 처리 시스템 및 큐의 상태 갱신 방법
US7788453B2 (en) Redirection of storage access requests based on determining whether write caching is enabled
US7673173B2 (en) System and program for transmitting input/output requests from a first controller to a second controller
US7613890B1 (en) Consistent replication across multiple storage devices
US6389555B2 (en) System and method for fail-over data transport
US7558981B2 (en) Method and apparatus for mirroring customer data and metadata in paired controllers
US6070251A (en) Method and apparatus for high availability and caching data storage devices
US20060031709A1 (en) Failure monitoring for storage systems constituting multiple stages
US10970178B2 (en) Generating a health condition message on a health condition detected at a server to send to a host system accessing the server
US10942835B2 (en) Processing a health condition message on a health condition to determine whether to perform a swap operation
US7117320B2 (en) Maintaining data access during failure of a controller
US20080244306A1 (en) Storage system and management method for the same
US7836215B2 (en) Method for providing high performance storage devices
US7904682B2 (en) Copying writes from primary storages to secondary storages across different networks
US7512834B2 (en) Apparatus, system, and method for providing parallel access to a data set configured for automatic recovery
US7770054B2 (en) Apparatus, system, and method to prevent queue stalling
US10871908B2 (en) Storage bypass driver operation in a highly available computer system
US8694538B1 (en) Method and apparatus for logging write requests to a storage volume in a network data switch
JP2919457B1 (ja) 二重化装置i/o制御方式およびそのプログラム記録媒体

Legal Events

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

Payment date: 20130524

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140519

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150518

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160518

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170529

Year of fee payment: 13

EXPY Expiration of term