KR100303190B1 - 고대역폭의레이드(raid)애플리케이션에서비정렬된입/출력기록요구의효율적인관리를위한방법및장치 - Google Patents

고대역폭의레이드(raid)애플리케이션에서비정렬된입/출력기록요구의효율적인관리를위한방법및장치 Download PDF

Info

Publication number
KR100303190B1
KR100303190B1 KR1019970028774A KR19970028774A KR100303190B1 KR 100303190 B1 KR100303190 B1 KR 100303190B1 KR 1019970028774 A KR1019970028774 A KR 1019970028774A KR 19970028774 A KR19970028774 A KR 19970028774A KR 100303190 B1 KR100303190 B1 KR 100303190B1
Authority
KR
South Korea
Prior art keywords
data
unaligned
stripe
raid
cache memory
Prior art date
Application number
KR1019970028774A
Other languages
English (en)
Other versions
KR980004057A (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 KR980004057A publication Critical patent/KR980004057A/ko
Application granted granted Critical
Publication of KR100303190B1 publication Critical patent/KR100303190B1/ko

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 RAID 기억 서브시스템에서 일반적으로 스트라이프 경계와 비정렬되는 대용량 버퍼의 시퀀스에 대한 기록 동작의 성능을 개선하기 위한 방법 및 관련 장치를 개시하고 있다. 특히, 본 발명의 방법은, RAID 기억 서브시스템에 기록될, 각 대용량 버퍼의 비정렬 시작 부분과, 비정렬 종료부, 및 RAID 기억 서브 시스템의 스트라이프 경계와 정렬되는 매우 큰 중간부를 식별한다. 스트라이프와 정렬된 중간 부분은 처리량을 최대화하기 위하여 스트라이프 기록 동작을 사용하여 캐쉬 라이트 쓰루(write through) 모드에서 RAID 기억 장치에 기록된다. 본 발명의 방법에 의해 식별된 시작부 및 종료부는 라이트 백(write back)모드에서 캐쉬 메모리에 기록되고 결국에는 해당 과정인 정상 RAID 처리에서 RAID 기억 장치에 포스트(post)될 것이다. 본 발명의 방법에 있어서 특별한 경우의 작업은 비정렬 시작부 또는 종료부의 부재임을 주지하라(예컨대, 비정렬 시작부나 비정렬 종료부, 또는 비정렬 시작부 및 종료부 양자를 갖고 있지 않은 버퍼). 인접하는 비정렬 시작부와 비정렬 종료부는 RAID 서브시스템의 캐쉬 메모리에 저장된다.

Description

고 대역폭의 레이드(RAID) 애플리케이션에서 비정렬된 입/출력 기록 요구의 효율적인 관리를 위한 방법 및 장치{METHOD AND APPARATUS FOR EFFICIENT MANAGEMENT OF NON-ALIGNED I/O WRITE REQUESTS IN HIGH BANDWIDTH RAID APPLICATIONS}
본 발명은 일반적으로 디스크 어레이 서브시스템(RAID)내에서 동작가능한 제어 방법에 관한 것으로, 상세하게는 호스트 컴퓨터의 RAID 관리 및 제어 소프트웨어 통합을 단순화하기 위해 디스크 어레이 서브시스템 내에서 동작가능한 방법에 관한 것이다.
현대의 대용량 기억 서브시스템(mass storage subsystem)에서는 호스트 컴퓨터 시스템 애플리케이션으로부터의 유저 요구를 실행하기 위해 기억 용량이 계속해서 증가하고 있다. 대용량 기억장치에 대한 이러한 신뢰로 인해, 향상된 신뢰도에 대한 요구도 또한 높다. 대용량 기억 서브시스템의 신뢰도를 유지 또는 향상시키면서 보다 높은 기억 용량에 대한 요구에 부합하기 위해서, 각종 기억 장치의 구성과 기하학이 공통적으로 적용되고 있다.
용량의 증가 및 신뢰도에 대한 이들 대용량 기억 요구에 대한 일반적인 해결방안은 여러 가지 고장의 경우에 데이터 보존성을 확보하도록 기억된 데이터의 리던던시(redundancy)를 허용하는 기하학으로 구성된 복수의 소형 기억 모듈을 이용하는 것이다. 이러한 많은 리던던트 서브시스템에 있어서는, 데이터 리던던시, 에러 코드, 및 소위 "핫 스페어(hot spares)" (고장난 이전의 활성 기억 모듈을 대체하도록 가동될 수 있는 여분의 기억모듈)의 이용으로 인해 기억 서브시스템 내에서 자체적으로 많은 공통적인 고장으로부터의 회복이 자동적으로 이루어지게 된다. 이들 서브시스템은 통상적으로 저가인(또는 독립적인) 디스크의 리던던트 어레이(redundant arrays of inexpensive(또는 independent) disks)로서 언급된다(보편적으로는 RAID로서 언급되기도 한다). 미국 버클리 소재의 캘리포니아 대학의 David A. Patterson 등이 발표한 명칭이 "A CASE FOR REDUNDANT ARRAYS OF INEXPENSIVE DISKS(RAID)"인 1987 공보에는 RAID 기술의 기본적인 개념이 개시되어 있다.
Patterson의 공보에서는 5가지 레벨의 표준 기하학이 정의되어 있다. 가장 간단한 어레이인 RAID 레벨 1 시스템은 데이터를 저장하기 위한 1개 이상의 디스크와 데이터 디스크에 기록된 정보의 복사분(copy)을 저장하기 위한 동일한 수의 추가적인 "미러" 디스크를 포함하고 있다. 나머지 RAID 레벨, 즉 RAID 레벨 2, 3, 4, 5 시스템의 데이터를 수 개의 데이터 디스크에 걸쳐 저장하기 위해 여러 부분으로 분할한다. 에러 검사 또는 패리티 정보를 저장하기 위해 추가적인 디스크 중 하나가 사용된다. 단일 유닛(unit)의 기억은 여러 디스크 드라이브(disk drive)에 걸쳐 확산되며 "스트라이프(stripe)"로서 언급된다. 스트라이프는 데이터와 함께 패리티(parity) 디스크 드라이브에 기록된 패리티(에러 복원) 정보를 포함하는 각 디스크 드라이브에 기록된 관련 데이터로 구성된다.
RAID 기억 서브시스템은 통상적으로 리던던트 어레이를 관리하는 것으로부터사용자나 또는 호스트 시스템을 보호하는 제어 모듈을 이용한다. 제어기는 호스트 컴퓨터가 서브시스템을 높은 신뢰도의 단일 대용량 디스크 드라이브로 인식하도록 한다. 실제적으로 RAID 제어기는 서브시스템의 신뢰도를 향상시키기 위해 호스트 컴퓨터 시스템에 의해 공급되는 데이터를 리던던시 및 에러 검사 정보와 함께 복수의 소형의 독립적인 드라이브에 걸쳐 분배할 수도 있다. RAID 서브시스템은 종종 RAID 서브시스템의 성능을 더욱 향상시키기 위해 대형 캐쉬 메모리 구조를 제공한다. 캐쉬 메모리는 디스크 어레이상의 기억 블록이 캐쉬내의 블록으로 사상(mapped)되도록 제어 모듈과 연결되어 있다. 이러한 사상은 또한 호스트 시스템에게도 트랜스패런트(transparent)하게 되어 있다. 호스트 시스템은 단순히 판독 또는 기록될 데이터의 블록을 요구하고 RAID 제어기는 요구된 바와같이 디스크 어레이 및 캐쉬 메모리를 조정한다.
(다른 RAID 레벨과 마찬가지로) RAID 레벨 5 서브시스템에 있어서, 전체 스트라이프보다 작은 것이 기억 어레이에 기록될 때 제공된 성능상의 문제점이 존재한다. 스트라이프의 일부분이 RAID 서브시스템에 기록된다면, 새로운 패리티 블록이 계산되고 어레이의 패리티 디스크에 라이트 백이 가능하도록 동일한 스트라이프의 부분들을 판독할 필요가 있다. 특히, 새로운 패리티 블록값이 판단될 수 있도록 그것과 관련된 이전 패리티 블록과 같이 위에 기록될 스트라이프의 부분에 저장된 이전 데이터는 기억 서브시스템으로부터 판독될 필요가 있다. 이 처리는 이전 데이터를 스트라이프로부터 판독할 필요성으로 인해 판독-수정-기록 사이클로 종종 언급되고, 원하는 데이터 블록 및 관련된 패리티 데이터를 수정하고, 새로운 데이터블록 및 새로운 패리티 블록을 기억 어레이로 다시 기록한다. 전체 스트라이프가 기록된다면 이 성능상의 문제점은 피할 수 있다. 전체 스트라이프가 기록된다면(스트라이프 기록 또는 전체 스트라이프 기록으로 종종 언급됨), 위에 기록될 스트라이프에 저장된 이전 데이터 및 이전 패리티는 무시된다. 새로운 스트라이프 데이터는 기록되고 그로부터 판단된 새로운 패리티 블록은 이전 데이터 또는 이전 패리티를 언급할 필요 없이 기록된다. 따라서 스트라이프 기록은 판독-수정-기록의 성능상 문제점을 회피할 수 있다.
RAID 애플리케이션 중 중요한 부분은 고 대역폭의 애플리케이션으로서 선정될 수 있다. 비디오 데이터 캡쳐(capture)는 그러한 고 대역폭의 RAID 기억 응용 프로그램의 전형적인 예이다. 데이터 비디오 캡쳐 애플리케이션에 있어서, 각 비디오 이미지(프레임)는 상당한 양의 데이터를 포함한다. 더욱이, 그런 비디오 프레임의 시퀀스(sequence)는 캡쳐된 비디오 프레임의 재생(playback)에서 실시간 비디오를 시뮬레이션하기 위해 급속하게 연속적으로 캡쳐될 수 있다. 캡쳐된 비디오 프레임들은 이후의 복구 및 재생을 위해 RAID 기억 서브시스템에 저장된다.
그러한 고대역폭의 RAID 애플리케이션에 있어서, 데이터는 통상적으로 RAID 서브시스템에서의 통상의 기억 유닛에 비하여 매우 큰 블록에서 판독 및 기록된다. 예컨대, 단일 고해상도(640×480 픽셀), 모노 컬러, 비디오 프레임(2개의 비디오 스캔 필드)은 300,000 바이트 이상의 비압축 기억을 포함한다. 실시간 비디오에 대해 초당 30 프레임의 캡쳐 속도가 바람직하다. 따라서 통상적인 컬러 비디오 캡쳐 스트림은 RAID 기억 서브시스템으로 향하는 연속적인 1.3941 메가바이트 입/출력기록 요구로 구성된다.
RAID 기억 서브시스템에 기록된 데이터는 RAID 서브시스템의 스트라이프 경계와 정렬될 때, 스트라이프 기록 동작을 사용함으로써 서브시스템에서 고성능이 유지될 수 있다. 그러나, 그런 고성능 유지는 기억 서브시스템에 기록될 데이터가 RAID 서브시스템에서의 경계와 정렬되지 않을 때 문제가 된다. 통상적인 요구 크기는 RAID 기억 서브시스템에서 통상적인 스트라이프 경계와 간단히 정렬되지 않는다. RAID 서브시스템에서의 통상적인 스트라이프 크기는 32, 64, 128, 또는 256킬로바이트이다. 그런 경우에 판독-수정-기록 사이클은 현재 RAID 서브시스템에 의해 사용되어 실시간 비디오 캡쳐와 같은 고 대역폭의 애플리케이션을 유지하기 위하여 요구되는 레벨이하의 RAID 서브시스템의 성능을 감소시킨다.
종래의 기술에서 잘 알려진 이 문제점에 대한 하나의 해결책은 추가 데이터가 부착된 컴퓨터로부터 수신될때까지 비정렬 데이터가 저장될 수 있도록 큰 버퍼 메모리를 제공하는 것이다. 그 후에 저장된 데이터는 효과적인 스트라이프 기록 동작에서 추가 수신 데이터와 함께 기록된다. 이 간단한 해결책이 갖는 문제점은 인접 버퍼에 대한 추가 입/출력 기록 요구가 수신될때까지 잠재적으로 큰 버퍼 메모리들이 비정렬 데이터를 저장하기 위해 요구될 수 있다는 것이다. 둘 또는 그 이상의 큰 입/출력 기록 요구를 저장하기 위해 요구되는 버퍼 메모리는 RAID 서브시스템에서 엄두도 못 낼 정도로 고가일 수 있다.
상기의 논의로부터 개선된 방법 및 장치가 큰 입/출력 요구 크기를 갖는 높은 고 대역폭의 기억 애플리케이션에 대해 RAID 성능을 유지하기 위해 요구된다는증거이다.
본 발명은 상기 및 다른 문제를 해결하여, 버퍼들이 RAID 어레이의 스트라이프 경계와 정렬되지 않은 RAID 기억 서브시스템에서 큰 버퍼들의 기억을 효과적으로 관리하는 방법 및 관련 장치를 제공함으로써 유용한 기술들을 발전시킨다. 특히, 본 발명의 방법 및 관련 장치는 큰 버퍼에 대한 입/출력 기록 요구를 수행하는데 있어서 스트라이프의 사용을 최대화한다(즉, 비디오 캡쳐와 다른 고 대역폭의 기억 애플리케이션에 공용된다). 본 발명의 방법은 3개의 부분, 즉 프레임 시작부(여기서는 시작부로서도 언급됨), 프레임 종료부(여기서는 종료부로서도 언급됨), 및 스트라이프-정렬 중간부를 갖는 것과 같이 스트라이프-정렬되지 않은 모든 기록 요구를 처리한다. 시작 프레그먼트(fragment)는 스트라이프 경계와 비정렬을 시작하고 제 1 스트라이프 경계에서 종료하는 입/출력 요구의 부분이다. 종료 프레그먼트는 입/출력 요구 데이터의 중간 부분의 최종 정렬 스트라이프의 종료에서 시작하고, RAID 서브시스템의 스트라이프 경계와 다시 비정렬된 입/출력 기록 요구 기억 버퍼의 종료에서 종료하는 입/출력 기록 요구의 부분이다. 스트라이프 정렬 중간 부분은 RAID 서브시스템의 스트라이프 경계와의 정렬을 시작 및 종료하는 시작 프레그먼트와 종료 프레그먼트 사이의 큰 부분이다.
RAID 캐쉬 관리의 정상적 절차에 있어서 시작 및 종료 프레그먼트는 라이트 백 모드에서 캐쉬 메모리에 기록된 후 기억 어레이에 포스트된다. 스트라이프와 정렬된 중간 부분은 캐쉬 버퍼 메모리를 바이패스(bypass)시키는 캐쉬 메모리의 라이트 쓰루(write through) 모드에서 1스트라이프 기록을 사용하여 디스크 어레이에 기록된다. 그 다음 입/출력 요구가 스트라이프 기록 동작에 있어서 인접 시작 및 종료 프레그먼트를 허용하는 인접 시작 프레그먼트를 제공할때까지 입/출력 기록 요구의 캐쉬 버퍼 메모리에 남아 있다. 본 발명의 선택적인 실시예에 있어서, 디스크 어레이에 기록된 전체 스트라이프(캐쉬 메모리)는 기록 모드지만 다른 캐쉬 기록 동작보다 높은 우선순위에서 기록된다. 이것은 캐쉬 메모리의 요구된 크기가 최소화인 본 발명의 장점을 유지하기 위해 전체 스트라이프가 디스크에 조속히 전달(post)되는 것을 보증한다.
특정 입/출력 기록 요구(예컨대, 요구가 RAID 서브시스템의 스트라이프 경계에서 시작 또는 종료되는 경우)에 대한 시작 또는 종료 프레그먼트가 존재하지 않을 때 특별 경계 조건은 본 발명의 방법에 의해 인식될 것이다. 더욱이, 라이트 백 캐쉬 버퍼 메모리를 관리하기 위한 표준 RAID 제어 방법은 입/출력 기록 요구 시퀀스의 첫 번째 시작 프레그먼트 및 최종 종료 프레그먼트가 캐쉬 버퍼 메모리로부터 디스크 어레이로 결국 전달(post)되는 것을 보증한다. 그러나, 본 발명의 방법은 시작 프레그먼트가 인접 RAID 위치에 상응하는 캐쉬 메모리에 부가되고, 이전 입/출력 기록 요구의 종료 프레그먼트가 후속하는 때를 검출한다. 그러한 종료 프레그먼트와 인접하는 시작 프레그먼트의 결합 데이터는 효과적인 스트라이프 기록 동작을 사용하여 캐쉬 메모리로부터 디스크 어레이에 전달(post)된다.
따라서, 본 발명의 방법 및 관련 장치는 종래 기술에 비해 효과적인 스트라이프 기록 동작 사용을 최대화함으로써 고대역폭의 기억 애플리케이션에 대해 요구되는 RAID 기억 성능을 유지한다. 본 발명의 방법은 RAID 기억 서브시스템의 제어기에서 요구되는 캐쉬 버퍼 메모리의 크기를 경제적으로 감소시키는 동안 전체 서브시스템의 성능을 개선한다.
따라서, 본 발명의 목적은 데이터 버퍼를 공급하는 큰 호스트 컴퓨터의 기억에서 RAID 기억 서브시스템 성능을 개선하기 위한 방법 및 관련 장치를 제공하는데 있다.
본 발명의 다른 목적은 효과적인 전체 스트라이프 기록 동작의 최대 사용으로 RAID 기억 서브시스템에서 큰 데이터 버퍼를 저장하기 위한 방법 및 관련 장치를 제공하는데 있다.
본 발명의 또다른 목적은 서브시스템내의 스트라이프 경계와 정렬된 RAID 기억 서브시스템에 저장될 예정인 큰 입/출력 요구 데이터 버퍼의 중간 부분을 식별하고 전체 스트라이프 기록 동작을 사용하여 서브시스템으로 식별된 중간 부분을 기록하기 위한 방법 및 관련 장치를 제공하는데 있다.
본 발명의 또다른 목적은 RAID 기억 서브시스템에 저장될 예정이며 서브시스템내의 스트라이프 경계와 비정렬된 입/출력 기록 요구 데이터 버퍼의 시작부를 식별하고, 이 식별된 시작 부분을 라이트 백 캐쉬 모드에서 서브시스템 내의 캐쉬 메모리에 기록하기 위한 방법 및 관련 장치를 제공하는데 있다.
본 발명의 또다른 목적은 RAID 기억 서브시스템에 저장될 예정이며 서브시스템내의 스트라이프 경계와 비정렬되는 입/출력 기록 요구 데이터 버퍼의 종료 부분을 식별하고 라이트 백 캐쉬 모드에서 서브시스템내의 캐쉬 메모리에 식별된 종료 부분을 기록하기 위한 방법 및 연관 장치를 제공하는데 있다.
본 발명의 또다른 목적은 다른 입/출력 기록 요구 데이터 버퍼의 캐쉬 종료 부분에 인접한 RAID 기억 서브시스템에 저장되고 식별된 시작 및 종료 부분이 스트라이프 기록 동작에 결합될 예정인 입/출력 기록 요구 데이터 버퍼를 식별하기 위한 방법 및 관련 장치를 제공하는데 있다.
본 발명의 또다른 목적은 다른 입/출력 기록 요구 데이터 버퍼의 캐쉬 시작 부분에 인접한 RAID 기억 서브시스템에 저장되고 식별된 시작 및 종료 부분을 스트라이프 기록 동작에 결합시킬 예정인 입/출력 기록 요구 데이터 버퍼의 종료 부분을 식별하기 위한 방법 및 연관 장치를 제공하는데 있다.
본 발명의 상기 및 다른 목적, 관점, 구성, 및 장점은 다음 설명 및 첨부된 도면으로부터 더욱 명백해질 것이다.
도1은 본 발명의 구조 및 방법이 유리하게 적용된 통상의 RAID 기억 서브시스템 블록도.
도2는 5개의 디스크 드라이브를 갖는 RAID 레벨 5 서브시스템의 전형적인 기하학을 설명하는 표.
도3은 도2의 표에 스트라이프 RAID 레벨 5 기하학으로 전형적인 입/출력 기록 요구의 사상을 나타내는 추가적인 표기법이 포함된 표.
도4는 본 발명의 방법을 구현하는 현재 최적으로 알려진 모드를 설명하는 순서도.
*도면의 주요 부분에 대한 부호 설명
100 : RAID 기억 서브시스템 102 : RAID 제어기
108 : 디스크 어레이 110 : 디스크 드라이브
112 : CPU 114 : 프로그램 메모리
116 : 캐쉬 메모리 120 : 호스트 컴퓨터
본 발명은 다양한 수정예 및 대안적인 형태가 가능하지만, 일례로서 특정 실시예를 도면에 도시하였으며 여기서 상세하게 설명한다. 그러나, 본 발명은 개시된 특정 형태에 한정되는 것은 아니며, 첨부된 특허청구의범위에 정의된 바와같은 본 발명의 사상 및 범위 내에 포함되는 모든 수정예, 대응예 및 대안적인 예를 포괄한다.
RAID 개요
도1은 본 발명의 방법 및 연관 장치가 적용되는 통상적인 RAID 기억 서브시스템의 블록도이다. RAID 기억 서브시스템(100)은 버스(150)를 통해 디스크 어레이(108) 및 버스(154)를 통해 호스트 컴퓨터에 차례로 연결되는 RAID 제어기(102)를 포함한다. 디스크 어레이(108)는 복수의 디스크 드라이브(110)로 구성된다. 종래의 기술에 익숙한 사람은 RAID 제어기(102)와 디스크 어레이(108)(디스크 드라이브(110)를 포함) 사이의 인터페이스 버스(150)는 SCSI, IDE, EIDE, IPI, 광채널, SSA, PCI 등을 포함하는 몇몇의 공업 표준 인터페이스 버스 중 어느 하나일 수 있다는 것을 인식할 것이다. 제어 버스(150)에 적합한 RAID 제어기(102)내의 회로(도시하지 않음)는 종래의 기술에 익숙한 사람들에게는 잘 알려져 있다. RAID 제어기(102)와 호스트 컴퓨터(120) 사이의 인터페이스 버스(154)는 SCSI, 이더넷(Ethernet)(LAN), 토큰링(Token Ring)(LAN) 등을 포함하는 몇몇의 공업 표준 인터페이스 버스중 하나일 수 있다. 본 발명의 방법은 하나이상의 호스트 컴퓨터 시스템과 RAID 기억 서브시스템(100) 사이의 SCSI 인터페이스 연결에 가장 유용하게 적용된다. (본 발명의 방법에서 사용되고 이하에서 상세히 설명될 것과 같은) 논리 유닛의 개념은 SCSI 인터페이스 고유의 것이다. LAN과 같은 다른 연결 표준은 상응 구조 및 그것에 연관된 프로토콜에 적합하게 변환(translate)된다면 본 발명의 방법을 사용할 수 있다.
도1에 도시된 것과 같이, RAID 기억 서브시스템(100)은 잘 알려진 RAID 레벨(예를 들어, 레벨 1-5)중 어느 하나를 구현하기 위해 적용될 수 있다. 다양한 RAID 레벨들은 RAID 제어기(102)는 디스크 어레이(108)에서 디스크 드라이브(110)를 논리적으로 세분, 분할, 및 사용하는 방식으로 구별된다. 예를 들어, RAID 레벨 1 형태를 구현할 때, 다른 절반이 처음 절반의 데이터 기억 내용을 미러(mirror)하기 위해 RAID 제어기(102)에 의해 동작되는 동안에 디스크 어레이(108)의 디스크 드라이브(110)의 약 절반은 데이터 저장 및 검색을 위해 사용된다. 더욱이, RAID 레벨 3-5 형태를 구현할 때, RAID 제어기(102)는 데이터의 기억을 위해 디스크 어레이(108)에서 디스크 드라이브(110)의 일부분을 사용하고, 잔여 디스크 드라이브(110)는 에러 체크/정정 정보(예를 들어, 패리티 정보)의 기억을 위해 사용된다. 이하에 설명될 것과 같이, 본 발명의 방법 및 연관 장치는 표준 RAID 레벨중 어느 하나와 함께 RAID 기억 서브시스템(100)에 적용될 수 있다.
RAID 제어기(102)는 CPU(112), 프로그램 메모리(114)(예를 들어, CPU(112)의 동작을 위한 프로그램 명령어 및 변수들을 저장하기 위한 ROM/RAM 장치), 디스크 어레이(108)에 저장된 데이터와 관련된 데이터 및 제어 정보를 저장하기 위한 캐쉬 메모리(116)를 포함한다. CPU(112), 프로그램 메모리(114), 및 캐쉬 메모리(116)는 CPU(112)가 메모리 장치에 정보를 저장 및 검색할 수 있도록 하기 위해 메모리 버스(152)를 통해 연결된다. 본 발명의 방법은 프로그램된 명령어로서 실시되고, 프로그램 메모리(114)내에 저장된 연관 데이터 구조는 CPU(112)에 의해 검색되고 CPU(112)내에서 동작할 수 있다. 종래의 기술에 익숙한 사람은 도1의 블록도가 본 발명을 실시할 수 있는 전형적인 디자인으로만 의도된다는 것을 바로 인식할 것이다. 많은 다른 제어기 및 RAID 기억 서브시스템 디자인이 본 발명의 방법 및 관련 장치 및 구조를 실시할 수 있다.
RAID 관리 컴퓨터 프로그램은 RAID 기억 서브시스템(100)의 동작을 구성 및 제어하기 위해 장착된 호스트 컴퓨터 시스템내에서 동작할 수 있다. 예를 들어, RAID 관리 프로그램은 하나의 RAID 레벨에 따라 동작하는 디스크 어레이(108)의 부분 및 다른 RAID 레벨에 따라 동작하는 디스크 어레이(108)의 다른 부분을 구성하기 위해 RAID 기억 서브시스템(100)으로 명령을 발생할 수 있다. RAID 기억 서브시스템(100)의 동작부는 종종 논리 유닛으로 언급되고 논리 유닛 번호로 불리는(여기서 LUN으로도 언급됨) 인덱스 값에 의해 식별된다. RAID 기억 서브시스템(100)내의 각 LUN은 RAID 서브시스템내의 다른 LUN들과는 실질적으로 독립인 호스트 컴퓨터 시스템 요구에 응답한다. RAID 관리 프로그램은 디스크 어레이(108)에서의 기억에 상응하는 LUN과의 데이터 통신의 대역폭밖에서 요구되는 대표적인 태스크(task)를 수행하기 위해 RAID 서브시스템과 통신한다.
RAID 레벨 5 전형적인 기하학
도2는 RAID 레벨 5 장치를 구현하기 위한 도1의 디스크 어레이(108)의 5개의 디스크 드라이브(110)의 통상적인 분할 및 사용을 설명한 표이다. RAID 레벨 5 표준에 따라 디스크 드라이브들은 스트라이프들로 분할되며, 각각의 디스크 드라이브로부터의 한 블록은 스트라이프에서의 복수의 블록중 한 블록에 대해 사용된다. 각 스트라이프의 블록중 하나는 패리티 정보(또는 에러 체킹 리던던시 정보와 유사함)를 위해 사용된다. 패리티 블록을 포함하는 특정 디스크 드라이브는 상기 Patterson의 논문에서 설명한 바와 같이 스트라이프들 간에 서로 다르게 되어 있다.
도2는 도1의 디스크 어레이(108)의 5개 디스크 드라이브(110)의 블록상에서 전형적인 10개의 스트라이프 분포를 도시한다. 도2에 도시된 어레이의 5개의 모든 드라이브에 모든 스트라이프의 수집은 부착된 호스트 컴퓨터에 의해 1 내지 N(N은 어레이에서 블록의 총수임)으로 논리적으로 나타내어진 복수의 블록을 갖는 큰(그러나 신뢰할 수 있는) 단일 디스크 드라이브로서 관측된다. 도2에 도시된 것과 같이, 스트라이프 1에는 디스크 드라이브 1상에서는 블록 1, 디스크 드라이브 2상에서는 블록 2, 디스크 드라이브 3상에서는 블록 3, 디스크 드라이브 4상에서는 블럭 4, 및 디스크 드라이브 5상에서는 블록 1 내지 4에 대한 패리티 블록이 포함된다. 스트라이프 2는 유사하게 데이터 기억에 대해서는 4개의 블록(디스크 드라이브 1 내지 3 및 5상에서 블록 5-8) 및 패리티 블록(디스크 드라이브 4상에서 패리티 5-8)이 포함된다. 스트라이프 3은 이와 마찬가지로 블록 9-12(각각 디스크 드라이브 1, 2, 4, 및 5상에서) 및 디스크 드라이브 3상에서 상응 패리티 9-12 블록이 포함된다. 스트라이프 4 내지 10은 유사하게 각 4개의 데이터 블록 및 하나의 상응 패리티 블록이 구비되는데 패리티 블록을 위해 사용되는 물리적 디스크 드라이브는 다른 스트라이프와 관련하여 순환하는 방식으로 쉬프트(shift)된다.
도3은 겹쳐지는 일련의 연속적인 입/출력 요구를 갖는 도2와 관련하여 상기한 RAID 레벨 5 전형적인 기하학을 도시한다. 일련의 기록 요구(1 내지 4로 나타내어진)는 RAID 기억 서브시스템에서 데이터의 기억을 위해 부착된 호스트 컴퓨터 시스템으로부터 수신된다. 상기한 바와 같이, 비디오 이미지 캡쳐와 같은 RAID 기억응용 프로그램의 높은 등급에서 각각의 연속적인 입/출력 기록 요구는 RAID 기억 기하학의 스트라이프 크기에 비해 매우 클 수 있다. 도3에 도시된 입/출력 기록 요구의 각 블록은 큰 입/출력 요구의 특정 블록을 나타내는 문자 A 내지 Z에 의해 나타내진다. 따라서, 제 1 기록 요구와 연관된 데이터 블록은 1-A, 1-B, 1-C, …, 1-K로 명명된다. 유사한 방식으로, 제 2, 제 3, 및 제 4 입/출력 기록 요구는 각각 2-A, …, 2-J, 3-A, …, 3-M, 4-A, …, 4-D로 명명된다.
도3에 도시될 수 있는 것과 같이, 전형적인 입/출력 기록 요구는 도2 및 도3에 의해 도시된 전형적인 스트라이프 크기에서 블록의 수를 크게 초과하는 복수의 블록을 제공한다. 따라서 각 입/출력 요구는 적어도 하나의 RAID 어레이의 전체 스트라이프에 걸쳐있다. 특히, 전형적인 제 1 기록 요구는 블록 1-C, …1-F를 갖는 스트라이프 2, 블록 1-G, …1-J를 갖는 스트라이프 3의 전체에 걸쳐있고, 제 2 기록 요구는 블록 2-D, …, 2-G를 갖는 스트라이프 5에 걸쳐있고, 제 3 입/출력 기록 요구는 3-F, …, 3-I를 갖는 스트라이프 8에 걸쳐있다. 본 발명의 방법은 이하에서 상세히 설명될 것처럼 기록 요구(기록 요구의 중간 부분)가 전체 스트라이프에 걸쳐있고 따라서 캐쉬 메모리 라이트 쓰루 모드에서 1스트라이프 기록 동작을 사용하여 디스크 어레이(108)의 디스크 드라이브(110)에 입/출력 기록 요구의 부분을 기록하는 조건을 인식한다. 이 동작은 스트라이프가 라이트 백 모드에서 캐쉬 메모리로 또는 저효율의 판독-수정-기록 동작을 갖는 디스크 어레이로 기록되었다는 점에서 종래 방법에 의해 이용된 표준 기술보다 훨씬 효율적이다.
상기한 것과 같이, 본 발명의 다른 실시예에 있어서, 디스크 어레이(캐쉬 메모리)에 기록된 전체 스트라이프는 라이트 백 모드이지만 다른 캐쉬 기록 동작보다 높은 우선 순위로 기록된다. 전체 스트라이프는 캐쉬 메모리의 요구되는 크기가 최소화된다는 본 발명의 이점을 유지하기 위해 디스크에 빠르게 기록된다.
각 입/출력 요구의 시작부는 디스크 어레이에서 스트라이프의 시작과 정렬되지 않을 수도 있으며 따라서 표준 캐쉬 메모리 라이트 백 기술을 사용하여 디스크 어레이로 이후에 전달하기 위해 RAID 제어기의 캐쉬 메모리에 기록된다. 유사한 방식으로, 입/출력 기록 요구의 종료부는 디스크 어레이의 스트라이프와 정렬되어 종료되지 않을 수도 있고, 어레이로 이후에 전달하기 위해 캐쉬 메모리에 저장된다. 예를 들어, 도3에 도시된 것과 같이, 제 1 기록 요구의 블록 1-A, 1-B, 및 1-K는 각각 블록 3, 4, 및 13에 이후에 전달하기 위해 캐쉬 메모리에 저장된다. 유사하게 제 2 입/출력 기록 요구의 블록 2-A, …, 2-C 및 2-H, …, 2-J 및 제 3 입/출력 기록 요구의 3-A는 상기한 것과 같이 전체 스트라이프 기록 동작을 허용할 수 있도록 디스크 어레이의 스트라이프의 경계와 정렬되지 않는다. 오히려, 이들 블록들은 정상 라이트 백 캐쉬 관리 기술을 통해 이후에 디스크 어레이로 전달하기 위해 RAID 제어기의 캐쉬 메모리에 저장된다.
그러나, 본 발명의 방법이 하나의 입/출력 기록 요구의 종료부와 다음 입/출력 기록 요구의 시작부는 디스크 어레이로 캐쉬 블록을 전달하기 위해 스트라이프 기록 동작의 사용을 허용하는 것과 같은 방식으로 인접할 수 있다. 예를 들어, 제 1 및 제 2 입/출력 기록 요구의 블록 1-K 및 2-A, …, 2-C는 각각 스트라이프 4 전부에 미치는 방식으로 인접한다. 본 발명의 방법은 캐쉬 블록을 디스크 어레이로전달하기 위해 더욱 효과적인 스트라이프 기록 동작의 사용을 허용하는 조건을 검출한다. 유사하게 블록 2-H, …, 2-J 및 3-A는 스트라이프 기록 동작을 사용하여 디스크 어레이로 캐쉬 블록을 전달하는 본 발명의 방법을 허용하는 스트라이프 6 전체에 걸쳐있다.
종래의 기술에 익숙한 사람은 도2 및 도3과 관련하여 상기한 RAID 레벨 5 기하학은 전형적인 것으로서만 의도된다는 것을 바로 인식할 것이다. (추가적으로 상세히 설명된) 본 발명의 방법은 다른 스트라이프 크기 및 다른 입/출력 기록 요구 크기를 갖는 다른 RAID 기하학에서도 유사하게 동작할 수 있다. 예를 들어, 통상적인 비디오 캡쳐 RAID 기억 응용 프로그램에서 입/출력 기록 요구의 실제 크기가 통상적으로 스트라이프의 크기보다 상당히 큰 스트라이프 크기이므로, 본 발명의 방법이 입/출력 기록 요구 데이터의 중간부에 의해 걸쳐진 복수의 전체 스트라이프를 효과적으로 저장하도록 한다.
본 발명의 방법
도4는 큰 입/출력 기록 요구의 시퀀스에 대한 전체 스트라이프 기록 동작의 사용을 최소화함으로써 RAID 서브시스템 성능을 개선하기 위한 본 발명의 방법을 설명하는 순서도이다. 도4의 방법은 부착된 호스트 컴퓨터 시스템으로부터의 입/출력 요구 수신에 응답하여 서브시스템의 RAID 제어기내에서 동작할 수 있다. 요소 400은 수신된 입/출력 기록 요구의 제 1 블록이 디스크 어레이에서의 스트라이프의 시작과 정렬된 디스크 어레이에서의 위치를 나타내는지 판단하기 위해 우선 동작할수 있다. 입/출력 기록 요구는 (다른 정보 중에서) 공급된 데이터가 기록될 디스크 어레이 내에서의 시작 위치 및 그곳에 저장될 데이터 길이를 명기한다. 데이터의 길이가 블록 유닛에 명기되는 반면에 위치는 통상적으로 디스크 어레이에 시작 블록 번호의 형태로 명기된다.
종래의 기술에 익숙한 사람은 기간 블록(term block)이 특정 RAID 서브시스템 구현, 용량, 및 응용을 위해 편리한 측정 유닛을 나타내는데 사용된다는 것을 바로 인식할 것이다. 예를 들어, 몇몇 응용 및 구현에 있어서, 블록은 특정 디스크 드라이브 설계에 의해 판단되는 것과 같이 데이터의 물리적 섹터를 나타낼 수 있다. 다른 응용에서, 블록은 공통 "블럭"으로서 함께 처리된 디스크 드라이브 섹터의 집단(클러스터)을 나타낼 수 있다. 본 발명의 방법은 특정 블록 크기 또는 정의를 고려하지 않고 유사하게 응용할 수 있다.
요소 400은 입/출력 기록 요구 데이터의 제 1 블록은 블록의 시작(예를 들어, 도2 및 도3에 도시된 전형적인 RAID 기하학의 블럭 1, 5, 9, 13, 17, 21, 25, 29, 33, 37 등)과 정렬된 위치에 저장될 것을 판단하고, 그 후에 처리는 디스크 어레이의 전체 스트라이프 경계에 걸쳐있는 입/출력 기록 요구에서 모든 블록을 기록하기 위해 요소 408로 계속된다. 그렇지 않으면, 처리는 입/출력 기록 요구의 시작부에서 블록을 처리하기 위해 요소 402로 계속된다. 입/출력 기록 요구의 시작부는 입/출력 기록 요구 데이터의 제 1 블록으로 시작하고 입/출력 기록 요구 버퍼의 제 1 블록과 동일한 디스크 어레이의 스트라이프의 블록에 저장될 입/출력 기록 요구 버퍼에서의 마지막 블록으로 종료하는 요구에서 공급되는 블록 부분이다. 예를 들어, 도3에 도시된 것과 같이, 블록 1-A 및 1-B는 제 1 입/출력 기록 요구의 시작부를 포함하고, 블록 2-A, …2-C는 제 2 요구의 시작부의 블록들이며, 블록 3-A는 제 3 입/출력 기록 요구의 시작부이다. 제 4 입/출력 기록 요구(4-A, …, 4-D)는 스트라이프의 제 1 블록, 즉 스트라이프 10의 블록 37과 정렬되어 시작되고, 따라서 시작부를 갖지 않는다.
요소 402는 입/출력 기록 요구 데이터의 시작부를 저장할 스트라이프에서 모든 다른 블록이 RAID 제어기의 캐쉬 메모리에 존재하며 "더티(dirty)"라는 것을 판단하기 위해 동작할 수 있다. 본 명세서에서 사용되는 바와 같이, 캐쉬 메모리에서의 "더티" 블록은 디스크 어레이에 아직까지 포스트되지 않은 블록이다. 동작중 라이트 백 캐쉬 모드에 있어서, 데이터는 결합된 호스트 컴퓨터에 의해 발생되는 입/출력 기록 요구를 신속하게 달성하기 위하여 캐쉬 메모리에 기록될 수 있다. 데이터는 지속적인 기억동안 디스크 어레이로 아직 전달되지 않았다는 것을 나타내기 위해 "더티"로 표시한다. 요소 402는 입/출력 기록 요구의 시작부를 포함하는 스트라이프에서 다른 모든 블록들이 캐쉬 메모리에 존재하고 더티라는 것을 판단한다면, 처리는 요소 404로 계속된다. 그렇지 않으면, 요소 406으로 진행된다.
요소 404는 입/출력 기록 요구의 시작과 동일한 스트라이프에서 다른 모든 블록들이 캐쉬 메모리에 존재하고 더티인 것을 판단하는 요소 402에 응답하여 동작할 수 있다. 그런 경우에, 요소 404는 상응 스트라이프의 전체 스트라이프 기록을 수행하기 위해 입/출력 기록 요구에 제공되는 블록을 갖는 입/출력 기록 요구의 시작부와 동일한 스트라이프에 위치된 RAID 제어기의 캐쉬 메모리에 더티 블록을 결합시키도록 동작할 수 있다. 입/출력 기록 요구의 시작부에 제공된 블록들은 동일한 스트라이프에 위치된 캐쉬 메모리에서 더티 블록과 결합될 때 연관 스트라이프의 기억에 걸쳐있다. 따라서 스트라이프는 효과적인 전체 스트라이프 기록 동작을 사용하여 디스크 어레이로 기록(전달)될 수 있다. 요소 404는 또한 전체 스트라이프 기록 동작의 동작에 의해 디스크 어레이로 전달되는 모든 캐쉬 블록들의 "더티" 상태도 리셋(reset)한다. 그 후에 처리는 요소 408로 계속된다.
예를 들어, 도3의 전형적인 RAID 기하학에 도시된 제 2 입/출력 기록 요구를 처리할 때, 제 2 입/출력 기록 요구의 시작부에는 블록 2-A, …, 2-C이 포함된다. 제 1 입/출력 기록 요구의 블록 1-K는 제 1 입/출력 기록 요구의 종료부 처리에서 캐쉬 메모리로 이전에 기록되었다(요소 410-416과 관련하여 이하에서 상세히 설명될 것임). 블록이 캐쉬 메모리에 아직도 존재하고 "더티"(디스크 어레이로 아직 전달되지 않는다)라면, 블록 2-A, …, 2-C와 결합하여, 스트라이프(4) 전체는 디스크 어레이에 기록될 새로운 데이터 블록에 걸쳐있다. 따라서, 스트라이프 4는 전체 스트라이프 기록 동작을 사용하여 디스크 어레이에 기록(전달)될 수 있다. 블록 1-K(블럭 13)의 "더티" 상태는 리셋되고, 제 2 입/출력 기록 요구의 시작부(2-A, …, 2-C)의 새로운 블록들은 캐쉬 메모리를 바이패스(bypass)시키는 라이트 쓰루 모드에서 디스크 어레이에 기록된다.
요소 406은 입/출력 기록 요구의 시작부와 동일한 스트라이프에서 다른 모든 블록이 존재하지는 않으며 더티라는 것을 판단하는 요소 402에 응답하여 동작할 수 있다. 그런 경우에, 시작부는 이때 스트라이프 기록 동작을 수행하기 위해 캐쉬 메모리에서의 다른 더티 버퍼들과 결합될 수 없다. 더욱이, 입/출력 기록 요구의 시작부 블록은 RAID 제어기의 캐쉬 메모리에 저장되고 RAID 서브시스템 동작의 정상 절차에서 이후에 디스크 어레이로 기록될 것이다. 특히, 요소 406은 RAID 제어기의 캐쉬 메모리에 입/출력 요구의 시작부 블록을 저장하고, RAID 제어기의 라이트 백 캐쉬 동작에서 디스크 어레이로 다음에 전달하기 위해 새로 저장된 블록을 "더티"로 표시한다. 처리는 요소 408로 진행하게 된다.
예를 들어, 제 1 입/출력 기록 요구가 도3과 관련하여 상기된 전형적인 RAID 기하학에서 처리될 때, RAID 요구의 시작부에는 블록 1-A 및 1-B가 포함된다. 그러나, 도3에 도시된 것과 같이, 스트라이프 1의 다른 블록들(블록 1 및 2)은 디스크 어레이에 전달될 것을 대기하는 더티 데이터를 포함하지 않는다. 따라서, 제 1 입/출력 기록 요구의 시작부는 라이트 백 캐쉬 모드에서 캐쉬 메모리에 기록되어 경우에 따라 디스크 어레이로의 포스팅을 기다리게 된다.
요소 408은 전체 스트라이프 기록 동작을 사용하여 디스크 어레이상에서 입/출력 기록 요구의 스트라이프 정렬 중간부분을 저장하기 위해 다음에 동작할 수 있다. 스트라이프 정렬 중간 부분은 스트라이프의 제 1 블록 위치에서 시작되어, 디스크 어레이에서 스트라이프의 마지막 블록 위치에 저장된 데이터로 종료되어 저장하는 입/출력 기록 요구 버퍼의 부분이다. 중간부는 디스크 어레이의 최소한 하나의 스트라이프 전부에 걸쳐있다. 본 발명의 방법의 통상적인 응용에 있어서, 그런 비디오 캡쳐 및 기억, 입/출력 기록 요구 버퍼들은 통상적으로 디스크 어레이의 복수의 전체 스트라이프에 걸쳐있다. 따라서, 요소 408은 입/출력 기록 요구 블록의중간 부분에 의해 완전히 걸쳐지는 디스크 어레이에 그런 모든 스트라이프를 기록하기 위해 동작할 수 있다.
상기한 바와 같이, 본 발명의 선택적인 실시예에 있어서, 디스크 어레이(캐쉬 메모리)에 기록된 전체 스트라이프는 라이트 백 모드이지만 다른 캐쉬 기록 동작보다 높은 우선순위로 기록된다. 이것은 요구되는 캐쉬 메모리의 크기가 최소인 본 발명의 이점을 유지하기 위해서 전체 스트라이프가 빠르게 디스크에 기록(포스트(post))(전달)되는 것을 보증한다. 도4의 요소 408은 두 실시예 모두를 위한 처리, 즉 정렬된 중간부의 전체 스트라이프가 라이트 쓰루 모드(본 발명을 구현하는 가장 잘 알려진 모드)에서 디스크 어레이에 기록되는 바람직한 제1 실시예와, 정렬된 중간부의 전체 스트라이프가 캐쉬 메모리로부터 디스크 어레이로 빠르게 전달될 것을 나타내는 라이트 백 캐쉬 메모리 동작을 사용하여 디스크 어레이로 기록되는 제2 실시예를 도시한다.
요소 410-416은 상기한 것과 같이 입/출력 기록 요구의 시작부를 처리하는 요소 400-406과 동일한 방식으로 입/출력 기록 요구의 비정렬 종료부를 처리할 수 있다. 특히 요소 410은 수신된 입/출력 기록 요구의 마지막 블록이 디스크 어레이에서 스트라이프의 종료와 정렬된 디스크 어레이에서의 위치를 나타내는지 판단하기 위하여 동작할 수 있다.
요소 410이 입/출력 기록 요구 데이터의 최종 블록이 블록(예를 들어, 도2 및 3에 도시된 전형적인 기하학의 블록 4, 8, 12, 16, 20, 24, 32, 35, 40 등)의 종료와 정렬된 위치에 저장될 것을 판단하면, 처리는 완료되고 입/출력 기록 요구에 대한 완료 상태는 사용자에게 돌아간다. 그렇지 않으면, 처리는 입/출력 기록 요구의 종료부에서 블록을 처리하기 위해 요소 412로 계속된다. 입/출력 기록 요구의 종료부는 입/출력 기록 요구의 중간부에서 마지막 블록을 따르는 블록으로 시작하고 입/출력 기록 요구에 의해 정의되는 마지막 블록으로 종료하는 요구에서 공급되는 블록이다. 예를 들어, 도3에 도시된 것과 같이 블록 1-K는 제 1 입/출력 기록 요구의 종료부를 포함하고 블록 2-H, …, 2-J는 제 2 요구의 종료부의 블록들이다. 제 3 및 제 4 입/출력 기록 요구(각각 3-A, …, 3-M 및 4-A, …, 4-D를 포함)는 모두 스트라이프의 마지막 블록, 즉 스트라이프 9의 블록 36 및 스트라이프 10의 블록 40과 정렬되어 종료되므로 종료부를 포함하지 않는다.
요소 412는 입/출력 기록 요구 데이터의 종료부를 저장할 스트라이프에서 다른 모든 블록들이 RAID 제어기의 캐쉬 메모리에 존재하고 더티로 표시된다는 것을 판단하기 위하여 동작할 수 있다. 요소 412가 입/출력 기록 요구의 시작부를 포함하는 스트라이프에서 다른 모든 블록이 캐쉬 메모리에 존재하고 더티라는 것을 판단하면, 처리는 요소 414로 계속된다. 그렇지 않으면 처리는 요소 416으로 계속된다.
요소 414는 입/출력 기록 요구의 종료부와 동일한 스트라이프에서의 다른 모든 블록들이 캐쉬에 존재하고 더티라는 요소 412의 판단에 응답하여 동작할 수 있다. 그런 경우에, 요소 414는 상응 스트라이프의 전체 스트라이프 기록을 수행하기 위해 입/출력 기록 요구의 종료부와 동일한 스트라이프에 위치한 RAID 제어기의 캐쉬 메모리에서의 더티 블록과 입/출력 기록 요구에서 제공된 블록을 결합시키도록동작할 수 있다. 입/출력 기록 요구의 종료부에 제공된 블록은 동일한 스트라이프에 위치된 캐쉬 메모리에서의 더티 블록과 결합될 때 연관 스트라이프의 기억에 걸쳐있다. 따라서, 스트라이프는 효과적인 전체 스트라이프 기록 동작을 사용하여 디스크 어레이로 기록(전달)될 수 있다. 요소 414는 또한 전체 스트라이프 기록 동작의 동작에 의해 디스크 어레이로 전달되는 모든 캐쉬 블록의 "더티" 상태를 재설정한다. 입/출력 기록 요구의 처리는 완료되고 완료 상태는 부착된 호스트 컴퓨터 시스템의 시작으로 되돌아간다.
입/출력 기록 요구의 종료부가 처리를 위해 준비될 때, 뒤따르는 다음 입/출력 기록 요구의 시작부가 처리되어야만 하는 것이 일반적이다. 제 3 입/출력 기록 요구는 통상 순차적으로 제 2 입/출력 기록 요구에 후행한다. 그러나, 본 발명의 방법에서는 입/출력 기록 요구의 시퀀스는 입/출력 기록 요구가 기록 데이터를 기록하고자 하는 위치의 시퀀스와 반드시 일치되어야만 할 필요가 없다. 예를 들어, 도3의 전형적인 RAID 기하학에 도시된 제 2 입/출력 기록 요구를 처리할 때, 제 3 요구가 이전에 이미 처리되었다면, 블록 2-H, …, 2-J를 포함하는 제 2 입/출력 기록 요구의 종료부는 이전에 캐쉬되고 계속 더티인 제 3 입/출력 기록 요구의 시작 블록, 즉 디스크 어레이의 동일한 스트라이프 6에 기록된 블록 3-A와 인접된다. 블록 2-H, …, 2-J와 이전에 캐쉬된 블록 3-A의 결합은 디스크 어레이에 기록될 새로운 데이터 블록을 갖는 스트라이프 6 전부에 걸쳐있다. 따라서, 스트라이프 6은 전체 스트라이프 기록 동작을 사용하여 디스크 어레이로 기록(전달)될 수 있다. 블록 3-A(블럭 24)의 "더티" 상태는 재설정되고 제 2 입/출력 기록 요구의 종료부의 새로운 블럭(2-H, …, 2-J)은 캐쉬 메모리 라이트 쓰루 모드에서 디스크 어레이에 기록된다.
요소 416은 입/출력 기록 요구의 종료부와 동일한 스트라이프에서의 다른 모든 블록이 캐쉬에 존재하는 것도 아니고 더티도 아니라는 요소 412의 판단에 응답하여 동작할 수 있다. 그런 경우에, 종료부는 스트라이프 기록 동작을 수행하기 위해 이 때는 캐쉬 메모리에서의 다른 더티 버퍼와 결합될 수 없다. 더욱이, 입/출력 기록 요구의 종료부의 블록들은 RAID 제어기의 캐쉬 메모리에 저장되고 RAID 서브시스템의 동작의 정상 절차에서 이후에 디스크 어레이로 기록될 것이다. 특히, 요소 416은 RAID 제어기의 캐쉬 메모리에 입/출력 기록 요구의 종료의 블록을 저장하고 RAID 제어기의 라이트 백 캐쉬 동작의 디스크 어레이로 이후에 전달하기 위해 새롭게 저장된 블록을 "더티"로 표시한다. 입/출력 기록 요구의 처리는 완료되고 완료 상태는 부착된 호스트 컴퓨터 시스템의 시작으로 돌아간다.
예를 들어, 입/출력 기록 요구를 수신되는 순차적인 순서로 처리할 때, 제 1 입/출력 기록 요구가 도3과 관련하여 상기한 전형적인 RAID 기하학에서 처리될 때, RAID 요구의 종료부에는 블록 1-K가 포함된다. 그러나, 도3에 도시된 것과 같이, 스트라이프4의 다른 블록(블록 3-5)들은 제 1 입/출력 기록 요구를 처리할 때 디스크 어레이에 포스트 되기를 기다리는 더티 데이터를 포함하지 않고 있다. 따라서, 제 1 입/출력 기록 요구의 종료부는 라이트 백 캐쉬 모드에서 캐쉬 메모리로 기록되어 경우에 따라 디스크 어레이로의 포스팅을 기다리게 된다.
종래의 기술에 능숙한 사람이라면 본 발명의 다른 실시예가 동일한 기능을유지하면서도 도4를 참조하여 설명한 방법의 요소 402-404 및 412-414를 제거할 수 있다는 것을 알 수 있을 것이다. 선택적인 실시예에 있어서 본 발명의 방법은 나중에 라이트 백 캐쉬 동작의 정상 과정에서의 포스팅을 위하여 입/출력 기록 요구의 비정렬 시작부와 종료부를 캐시 메모리에 항상 저장하고 있다. 그러한 선택적인 실시예가 도4에 도시된 방법을 단순하게 한 것일지라도, 상술한 양호한 실시예는 유효한 스트라이프 기록 동작의 사용을 더욱 증가시킴으로써 RAID 서브시스템 성능을 더욱 개선시키는 것임은 분명하다. 더욱이 도4와 관련하여 상술한 바와 같은 본 발명의 바람직한 실시예는 입/출력 기록 요구의 특정 시작부 및 종료부를 라이트 백 캐쉬 메모리로 기록할 필요성을 감소시킨다. 더욱이, 도4에서 설명된 것과 같은 바람직한 실시예는 캐쉬 메모리에 임 존재하는 다른 블록이 스트라이프 기록을 수행하기 위해 시작부 또는 종료부와 결합될 수 있다면 입/출력 기록 요구의 특정 시작부 및 종료부의 기록을 생략한다. 이에 따라서 입/출력 기록 요구의 시작부 또는 종료부의 블록들은 캐시 메모리의 사용이 생략되는 캐쉬 메모리 라이트 쓰루 모드에서 디스크 어레이에 기록되게 된다.
비록 본 발명이 도면 및 전술한 설명에서 상세하게 예시되고 설명되었지만, 이와 같은 예시 및 설명은 예로서 고려된 것이며 특성을 제한하는 것은 아니고, 단지 양호한 실시예 및 약간의 변형이 도시되고 설명되었으며 또한 본 발명의사상에 포함되는 모든 변형 및 수정도 보호되어야만 한다.
본 발명에 따르면 큰 버퍼에 대한 입/출력 기록 요구를 수행하는데 있어서 스트라이프의 사용을 최대화하는 방법 및 관련 장치를 제공할 수 있는 효과가 있다.

Claims (32)

  1. 복수의 디스크 드라이브와 캐쉬 메모리를 갖는 RAID 기억 서브시스템에 데이터를 저장하기 위한 방법에 있어서,
    상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 시작하고 종료하는 상기 데이터의 중간부를 식별하는 단계; 및
    상기 중간부를 적어도 하나의 스트라이프 기록 동작을 이용하여 상기 복수의 디스크 드라이브에 기록하는 단계
    를 포함하고,
    여기서, 상기 중간부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 시작하고 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 종료하는, 상기 데이터의 최대 연속 부분을 포함하는
    데이터 저장 방법.
  2. 제1항에 있어서,
    상기 기록 단계는,
    상기 중간부를 캐쉬 메모리 라이트 쓰루 모드(write through mode)에서 기록하는 단계를 더 포함하는
    데이터 저장 방법.
  3. 제1항에 있어서,
    상기 기록 단계는,
    상기 중간부를 캐쉬 메모리 라이트 백 모드(write back mode)에서 기록하는 단계를 더 포함하는
    데이터 저장 방법.
  4. 제1항에 있어서,
    상기 기록 단계는,
    상기 중간부를 높은 우선순위 캐쉬 메모리 라이트 백 모드에서 기록하는 단계를 더 포함하는
    데이터 저장 방법.
  5. 제1항에 있어서,
    상기 데이터의 비정렬 시작부 - 여기서, 상기 비정렬 시작부는 상기 비정렬 데이터의 시작을 포함함 - 를 식별하는 단계; 및
    상기 비정렬 시작부를 상기 캐쉬 메모리에 기록하는 단계
    를 더 포함하는 데이터 저장 방법.
  6. 제5항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 종료하는
    데이터 저장 방법.
  7. 제6항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는, 상기 데이터의 시작 이후의 상기 데이터의 제1 위치에서 종료하는
    데이터 저장 방법.
  8. 제5항에 있어서,
    상기 비정렬 시작부를 기록하는 단계는,
    상기 비정렬 시작부를 캐쉬 메모리 라이트 백 모드에서 상기 캐쉬 메모리에 기록하는 단계를 포함하는
    데이터 저장 방법.
  9. 제1항에 있어서,
    상기 데이터의 비정렬 종료부 - 여기서, 상기 비정렬 종료부는 상기 비정렬 데이터의 끝을 포함함 - 를 식별하는 단계; 및
    상기 비정렬 종료부를 상기 캐쉬 메모리에 기록하는 단계
    를 더 포함하는 데이터 저장 방법.
  10. 제9항에 있어서,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 시작하는
    데이터 저장 방법.
  11. 제10항에 있어서,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 최종 위치에서 시작하는
    데이터 저장 방법.
  12. 제9항에 있어서,
    상기 비정렬 종료부를 기록하는 단계는,
    상기 비정렬 종료부를 캐쉬 라이트 백 모드에서 상기 캐쉬 메모리에 기록하는 단계를 포함하는
    데이터 저장 방법.
  13. 제1항에 있어서,
    상기 데이터의 비정렬 시작부 - 여기서, 상기 비정렬 시작부는 상기 비정렬 데이터의 시작을 포함함 - 를 식별하는 단계;
    상기 비정렬 시작부를 상기 캐쉬 메모리에 기록하는 단계;
    상기 데이터의 비정렬 종료부 - 여기서, 상기 비정렬 종료부는 상기 비정렬 데이터의 끝을 포함함 - 를 식별하는 단계; 및
    상기 비정렬 종료부를 상기 캐쉬 메모리에 기록하는 단계
    를 더 포함하는 데이터 저장 방법.
  14. 제13항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 종료하고,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 시작하는
    데이터 저장 방법.
  15. 제14항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는, 상기 데이터의 시작 이후의 상기 데이터의 제1 위치에서 종료하고,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 최종 위치에서 시작하는
    데이터 저장 방법.
  16. 제13항에 있어서,
    상기 캐쉬 메모리에 기록된 데이터의 특정 비정렬 시작부를 식별하는 단계;
    상기 특정 비정렬 시작부와 인접하는 위치에서 상기 캐쉬 메모리에 기록된 데이터의 특정 비정렬 종료부를 식별하는 단계; 및
    상기 특정 비정렬 종료부 및 상기 특정 비정렬 시작부를 1스트라이프 기록동작을 사용하여 상기 복수의 디스크 드라이브에 기록하는 단계
    를 더 포함하는 데이터 저장 방법.
  17. 복수의 디스크 드라이브와 캐쉬 메모리를 갖는 RAID 기억 서브시스템과 결합된 RAID 제어기에 있어서,
    데이터의 중간부 - 여기서, 상기 중간부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 시작하고 종료하는 상기 데이터의 일부분임 - 를 식별하는 수단; 및
    상기 중간부를 적어도 하나의 스트라이프 기록 동작을 이용하여 상기 복수의 디스크 드라이브에 기록하는 수단
    을 포함하고,
    여기서, 상기 중간부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 시작하고 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되어 종료하는 상기 데이터의 최대 연속 부분을 포함하는
    RAID 제어기.
  18. 제17항에 있어서,
    상기 기록 수단은,
    상기 중간부를 캐쉬 메모리 라이트 쓰루 모드에서 기록하는 수단을 더 포함하는
    RAID 제어기.
  19. 제17항에 있어서,
    상기 기록 수단은,
    상기 중간부를 캐쉬 메모리 라이트 백 모드에서 기록하는 수단을 더 포함하는
    RAID 제어기.
  20. 제17항에 있어서,
    상기 기록 수단은,
    상기 중간부를 높은 우선순위 캐쉬 메모리 라이트 백 모드에서 기록하는 수단을 더 포함하는
    RAID 제어기.
  21. 제17항에 있어서,
    상기 데이터의 비정렬 시작부 - 여기서, 상기 비정렬 시작부는 상기 비정렬 데이터의 시작을 포함함 - 를 식별하는 수단; 및
    상기 비정렬 시작부를 상기 캐쉬 메모리에 기록하는 수단
    을 더 포함하는 RAID 제어기.
  22. 제21항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 종료하는
    RAID 제어기.
  23. 제22항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는, 상기 데이터의 시작 이후의 상기 데이터의 제1 위치에서 종료하는
    RAID 제어기.
  24. 제21항에 있어서,
    상기 비정렬 시작부를 기록하는 수단은,
    상기 비정렬 시작부를 캐쉬 메모리 라이트 백 모드에서 상기 캐쉬 메모리에 기록하는 수단을 더 포함하는
    RAID 제어기.
  25. 제17항에 있어서,
    상기 데이터의 비정렬 종료부 - 여기서, 상기 비정렬 종료부는 상기 비정렬 데이터의 끝을 포함함 - 를 식별하는 수단; 및
    상기 비정렬 종료부를 상기 캐쉬 메모리에 기록하는 수단
    을 더 포함하는 RAID 제어기.
  26. 제25항에 있어서,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 시작하는
    RAID 제어기.
  27. 제26항에 있어서,
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 최종 위치에서 시작하는
    RAID 제어기.
  28. 제25항에 있어서,
    상기 비정렬 종료부를 기록하는 수단은,
    상기 비정렬 종료부를 캐쉬 라이트 백 모드에서 상기 캐쉬 메모리에 기록하는 수단을 더 포함하는
    RAID 제어기.
  29. 제17항에 있어서,
    상기 데이터의 비정렬 시작부 - 여기서, 상기 비정렬 시작부는 상기 비정렬 데이터의 시작을 포함함 - 를 식별하는 수단;
    상기 비정렬 시작부를 상기 캐쉬 메모리에 기록하는 수단;
    상기 데이터의 비정렬 종료부 - 여기서, 상기 비정렬 종료부는 상기 비정렬 데이터의 끝을 포함함 - 를 식별하는 수단; 및
    상기 비정렬 종료부를 상기 캐쉬 메모리에 기록하는 수단
    을 더 포함하는 RAID 제어기.
  30. 제29항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 종료하고;
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 한 위치에서 시작하는
    RAID 제어기.
  31. 제30항에 있어서,
    상기 데이터의 상기 비정렬 시작부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는, 상기 데이터의 시작 이후의 상기 데이터의 제1 위치에서 종료하고;
    상기 데이터의 상기 비정렬 종료부는 상기 RAID 기억 서브시스템의 한 스트라이프와 정렬되는 상기 데이터의 최종 위치에서 시작하는
    RAID 제어기.
  32. 제29항에 있어서,
    상기 캐쉬 메모리에 기록된 데이터의 특정 비정렬 시작부를 식별하는 수단;
    상기 특정 비정렬 시작부에 인접하는 위치에서 상기 캐쉬 메모리에 기록된 데이터의 특정 비정렬 종료부를 식별하는 수단; 및
    상기 특정 비정렬 종료부와 상기 특정 비정렬 시작부를 1스트라이프 기록 동작을 사용하여 상기 복수의 디스크 드라이브에 기록하는 수단
    을 더 포함하는 RAID 제어기.
KR1019970028774A 1996-06-28 1997-06-28 고대역폭의레이드(raid)애플리케이션에서비정렬된입/출력기록요구의효율적인관리를위한방법및장치 KR100303190B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08671,863 1996-06-28
US08/671,863 1996-06-28
US08/671,863 US5860091A (en) 1996-06-28 1996-06-28 Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications

Publications (2)

Publication Number Publication Date
KR980004057A KR980004057A (ko) 1998-03-30
KR100303190B1 true KR100303190B1 (ko) 2001-09-28

Family

ID=24696174

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970028774A KR100303190B1 (ko) 1996-06-28 1997-06-28 고대역폭의레이드(raid)애플리케이션에서비정렬된입/출력기록요구의효율적인관리를위한방법및장치

Country Status (2)

Country Link
US (1) US5860091A (ko)
KR (1) KR100303190B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100689137B1 (ko) 2004-12-02 2007-03-08 후지쯔 가부시끼가이샤 기억 장치, 그 제어 방법 및 프로그램이 기록된 기억매체

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993023803A1 (fr) * 1992-05-21 1993-11-25 Fujitsu Limited Appareil de commande pour pile de disques
US6128711A (en) * 1996-11-12 2000-10-03 Compaq Computer Corporation Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US6098114A (en) * 1997-11-14 2000-08-01 3Ware Disk array system for processing and tracking the completion of I/O requests
US6311251B1 (en) * 1998-11-23 2001-10-30 Storage Technology Corporation System for optimizing data storage in a RAID system
US6195727B1 (en) * 1999-03-31 2001-02-27 International Business Machines Corporation Coalescing raid commands accessing contiguous data in write-through mode
US6591337B1 (en) * 1999-04-05 2003-07-08 Lsi Logic Corporation Method and apparatus for caching objects in a disparate management environment
US6842422B1 (en) 1999-06-15 2005-01-11 Marconi Communications, Inc. Data striping based switching system
US6742019B1 (en) * 1999-07-23 2004-05-25 International Business Machines Corporation Sieved caching for increasing data rate capacity of a heterogeneous striping group
US6542960B1 (en) * 1999-12-16 2003-04-01 Adaptec, Inc. System and method for parity caching based on stripe locking in raid data storage
US6546447B1 (en) * 2000-03-30 2003-04-08 International Business Machines Corporation Method and apparatus for dynamic PCI combining for PCI bridges
US6606629B1 (en) * 2000-05-17 2003-08-12 Lsi Logic Corporation Data structures containing sequence and revision number metadata used in mass storage data integrity-assuring technique
TW484723U (en) * 2000-12-20 2002-04-21 Areca Technology Corp Disk array controller
JP3592640B2 (ja) * 2001-01-09 2004-11-24 株式会社東芝 ディスク制御システムおよびディスク制御方法
JP2002207620A (ja) * 2001-01-10 2002-07-26 Toshiba Corp ファイルシステム及び該システムにおけるデータキャッシング方法
US6629211B2 (en) 2001-04-20 2003-09-30 International Business Machines Corporation Method and system for improving raid controller performance through adaptive write back/write through caching
US6760807B2 (en) * 2001-11-14 2004-07-06 International Business Machines Corporation System, apparatus and method providing adaptive write policy for disk array controllers
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7188270B1 (en) * 2002-11-21 2007-03-06 Adaptec, Inc. Method and system for a disk fault tolerance in a disk array using rotating parity
US7099997B2 (en) * 2003-02-27 2006-08-29 International Business Machines Corporation Read-modify-write avoidance using a boundary word storage mechanism
US7383381B1 (en) 2003-02-28 2008-06-03 Sun Microsystems, Inc. Systems and methods for configuring a storage virtualization environment
US8166128B1 (en) 2003-02-28 2012-04-24 Oracle America, Inc. Systems and methods for dynamically updating a virtual volume in a storage virtualization environment
US7290168B1 (en) 2003-02-28 2007-10-30 Sun Microsystems, Inc. Systems and methods for providing a multi-path network switch system
US7236987B1 (en) 2003-02-28 2007-06-26 Sun Microsystems Inc. Systems and methods for providing a storage virtualization environment
WO2005041044A1 (en) * 2003-09-24 2005-05-06 Seagate Technology Llc Multi-level caching in data storage devices
CN1316377C (zh) * 2004-06-03 2007-05-16 华为技术有限公司 一种磁盘阵列结构中的写处理方法
US7917694B1 (en) 2004-09-23 2011-03-29 Netlogic Microsystems, Inc. Method and system for finding maximal stripes in cache memory with content addressable memory
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
CN100389383C (zh) * 2006-06-02 2008-05-21 杭州华三通信技术有限公司 一种解决磁盘冗余阵列中写空洞的方法
KR101431205B1 (ko) * 2007-07-13 2014-08-18 삼성전자주식회사 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법
US8161238B2 (en) * 2009-11-10 2012-04-17 Blue Coat Systems, Inc. Systems and methods for avoiding performance degradation due to disk fragmentation in a network caching device
US20110202722A1 (en) * 2010-01-19 2011-08-18 Infinidat Ltd. Mass Storage System and Method of Operating Thereof
US9213628B2 (en) 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
US8966178B2 (en) 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US9021201B2 (en) 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US8825953B2 (en) * 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
CN103593297A (zh) * 2012-08-16 2014-02-19 鸿富锦精密工业(深圳)有限公司 虚拟u盘设计系统及方法
US10075498B2 (en) * 2012-12-21 2018-09-11 Vmware, Inc. Systems and methods for transmitting data in real time
US9170942B1 (en) * 2013-12-31 2015-10-27 Emc Corporation System, apparatus, and method of automatic data padding
US9274713B2 (en) 2014-04-03 2016-03-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Device driver, method and computer-readable medium for dynamically configuring a storage controller based on RAID type, data alignment with a characteristic of storage elements and queue depth in a cache
US10235087B1 (en) 2016-03-30 2019-03-19 EMC IP Holding Company LLC Distributing journal data over multiple journals
US10579282B1 (en) * 2016-03-30 2020-03-03 EMC IP Holding Company LLC Distributed copy in multi-copy replication where offset and size of I/O requests to replication site is half offset and size of I/O request to production volume
US10628300B2 (en) * 2017-11-13 2020-04-21 Western Digital Technologies, Inc. RAID stripe physical placement

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4805098A (en) * 1986-05-05 1989-02-14 Mips Computer Systems, Inc. Write buffer
US5357622A (en) * 1990-09-27 1994-10-18 Dell U.S.A., L.P. Apparatus for queing and storing data writes into valid word patterns
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5506977A (en) * 1991-12-17 1996-04-09 Dell Usa, L.P. Method and controller for minimizing reads during partial stripe write operations to a disk drive
US5408644A (en) * 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5459842A (en) * 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
US5420983A (en) * 1992-08-12 1995-05-30 Digital Equipment Corporation Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data
US5519849A (en) * 1992-12-07 1996-05-21 Digital Equipment Corporation Method of reducing the complexity of an I/O request to a RAID-4 or RAID-5 array
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
GB2273798A (en) * 1992-12-22 1994-06-29 Ibm Cache system for disk array.
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
US5586264A (en) * 1994-09-08 1996-12-17 Ibm Corporation Video optimized media streamer with cache management
US5613085A (en) * 1994-12-27 1997-03-18 International Business Machines Corporation System for parallel striping of multiple ordered data strings onto a multi-unit DASD array for improved read and write parallelism

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100689137B1 (ko) 2004-12-02 2007-03-08 후지쯔 가부시끼가이샤 기억 장치, 그 제어 방법 및 프로그램이 기록된 기억매체

Also Published As

Publication number Publication date
US5860091A (en) 1999-01-12
KR980004057A (ko) 1998-03-30

Similar Documents

Publication Publication Date Title
KR100303190B1 (ko) 고대역폭의레이드(raid)애플리케이션에서비정렬된입/출력기록요구의효율적인관리를위한방법및장치
US5191584A (en) Mass storage array with efficient parity calculation
US5742752A (en) Method for performing a RAID stripe write operation using a drive XOR command set
US6101615A (en) Method and apparatus for improving sequential writes to RAID-6 devices
US5487160A (en) Concurrent image backup for disk storage system
US7801933B2 (en) Storage control system and method
US5987566A (en) Redundant storage with mirroring by logical volume with diverse reading process
US5954822A (en) Disk array apparatus that only calculates new parity after a predetermined number of write requests
US7370145B2 (en) Write back method for RAID apparatus
US6484234B1 (en) Method and apparatus for efficiently destaging data from a cache to two or more non-contiguous storage locations
US5418925A (en) Fast write I/O handling in a disk array using spare drive for buffering
US7228381B2 (en) Storage system using fast storage device for storing redundant data
US7966471B2 (en) Storage controller and method for control of a data storage device
US5634109A (en) Method and system for enhanced data management efficiency in memory subsystems utilizing redundant arrays of disk memory devices and a nonvolatile cache
US20100199039A1 (en) Systems and Methods for Optimizing Host Reads and Cache Destages in a Raid System
EP1191442A2 (en) Data storage array apparatus and operating method for storing error information without delay in data access
EP1019835A1 (en) Segmented dma with xor buffer for storage subsystems
US7454686B2 (en) Apparatus and method to check data integrity when handling data
EP0701208B1 (en) Disk array subsystem and data generation method therefor
US6055646A (en) Disk array apparatus for multimedia server
US6701452B1 (en) Disk array controller having distributed parity generation function
JPH11212728A (ja) 外部記憶サブシステム
KR19980047273A (ko) 레이드 레벨 5 시스템에서 캐쉬 관리 방법
US6611827B1 (en) Redundant disk array and method for redundant disk array access using contiguous page grouping
JPH10312246A (ja) 記憶装置サブシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20050620

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee