KR100188485B1 - 디스크 어레이에 데이타를 기록하기 위한 시스템, 디스크에 새로운 데이타를 기록하는 방법 및 사용되지 않은 데이타 블럭을 계산하는 방법 - Google Patents

디스크 어레이에 데이타를 기록하기 위한 시스템, 디스크에 새로운 데이타를 기록하는 방법 및 사용되지 않은 데이타 블럭을 계산하는 방법 Download PDF

Info

Publication number
KR100188485B1
KR100188485B1 KR1019950010951A KR19950010951A KR100188485B1 KR 100188485 B1 KR100188485 B1 KR 100188485B1 KR 1019950010951 A KR1019950010951 A KR 1019950010951A KR 19950010951 A KR19950010951 A KR 19950010951A KR 100188485 B1 KR100188485 B1 KR 100188485B1
Authority
KR
South Korea
Prior art keywords
block
data
parity
disk
new
Prior art date
Application number
KR1019950010951A
Other languages
English (en)
Inventor
앤소니 프라나스제크 피터
티모시 로빈슨 존
토마시안 알렉산더
Original Assignee
윌리암 티. 엘리스
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윌리암 티. 엘리스, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 윌리암 티. 엘리스
Application granted granted Critical
Publication of KR100188485B1 publication Critical patent/KR100188485B1/ko

Links

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1033Inactive data in parity groups, i.e. RAID parity groups where parity is calculated on only occupied or busy bits in the stripe
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 디스크 어레이에 데이터를 기록하는 시스템에 관한 것이다. 이 시스템은 어레이에 결합되어, 이 디스크 어레이상의 장소(locations)를 표시하는 데이터와, 이 장소를 포함하는 패리티 그룹과 연관된 패리티 블록을 저장하는 캐새 메모리를 포함한다. 각각의 패리티 블록은 패리티 데이터에 의해 보호되는 특정 패리티 그룹내의 장소를 나타내는 식별자를 포함한다. 기록 논리는 패리티 블럭으로부터 식별자를 판독하며, 이를 기초로 하나의 디스크 장소가 패리티 데이터에 의해 보호되는지를 판단한다. 기록 논리는 또한 상기 장소에 기록하고 패리티 데이터 및 패리티 블록과 연관된 식별자를 상기 장소를 포함하도록 갱신하여 상기 장소가 보호됨을 나타낸다.

Description

디스크 어레이에 데이터를 기록하기 위한 시스템, 디스크에 새로운 데이터를 기록하는 방법 및 사용되지 않은 데이터 블록을 계산하는 방법
제1a도는 디스크 어레이 서브시스템의 구조를 도시하는 블록도.
제1b도는 본 발명이 구현되는 디스크 어레이 서브시스템의 구조를 도시하는 블록도.
제2도는 분할된 패리티/데이터 디스크 캐시를 도시하는 도면.
제2a도는 데이터의 배치 및 패리티 블록을 도시하는 종래의 RAID 레벨 5데이터 맵핑.
제3도는 본 발명의 실시예에 따른 단일 블록 기록의 흐름도.
제4도는 본 발명의 실시예에 따른 자유 블록 커맨드의 흐름도.
제5도는 본 발명의 패리티 및 식별자를 기술하는 블록도.
* 도면의 주요부분에 대한 부호의 설명
10 : 호스트 시스템(CPU) 20 : 채널
30 : 디스크 제어기 31 : 캐시
32 : 가변 기록 보호 논리 204 : 패리티 캐시 해시표
206 : 데이터 캐시 해시표
본 발명은 일반적으로 디지털 정보(digital information)의 영구 저장 시스템(permanent storage system) 특히 디스크형, 영구 저장 시스템에 관한 것으로 보다 상세하게는 디스크 고장(disk failure)으로부터의 회복(recovery)을 용이하게 하기 위하여 패리티 블록(parity block)을 생성 및 기억하는 디스크 어레이 시스템(disk array systems)에 관한 것이다.
단일 대량 고가 디스크(Single Large Expensive Disk : SLED) 대신 저가 디스크의 중복 어레이(Redundant Array of lnexpensive Disks : RAID)를 사용하여 디지털 정보를 높은 처리율 및 적은 비용으로 대량 저장하는 것이 제안되었다. RAID의 이론은 개별적으로 고가의 디스크 보다 고장율이 높을 수 있는 비교적 값이 싼 디스크를 사용하는 것이며, 디스크 고장으로부터의 회복을 용이하게 하기 위해 패리티 블록을 생성 및 저장함으로써 중복성(redundancy)을 부가하여 이러한 높은 고장율을 보상하는 것이다.
제1a도는 RAID 구성이 구현될 수 있는 디스크 어레이 서브시스템 구조(disk array subsystem architecture)를 도시한다. 호스트 시스템 (host system)(10)에 접속되며 캐시(cache)(31)를 포함하는 디스크 제어기(disk controller)(30)는 저가 디스크(40-43)의 어레이를 관리한다. 전체 N+1개의 디스크를 갖는 RAID 구성에 있어서, 각각의 N개의 데이터 블록에 대해 하나의 패리티 블록(parity block)이 생성되고, 이들 N+1개의 블록(N개의 데이터 + 하나의 패리티 블록)은 각각 상이한 디스크상에 저장된다. 한 구현에 있어서, 패리티 블록은 N개의 데이터 블록의 비트단위(bitwise) 배타적 OR(XOR)를 계산함으로써 N개의 데이터 블록으로부터 계산된다. 패리티 블록과 이 패리티 블록이 계산된 N개의 데이터 블록은 패리티 그룹(parity group)으로 불리운다. 패리티 그룹내 임의의 블록은 이 패리티 그룹의 다른 블록으로부터 계산될 수 있다.
본 명세서에서 참조로서 인용된 A Case for Redundant Arrays of Inexpensive Disks(RAID) PROC. of ACM SIGMOD International Conference on Management of Data, 제 109-116쪽, 1988에서, 디.에이.패터슨. 지.깁슨 및 알.에이치.카츠(D.A.Patterson, G.Gibson and R.H.Katz) RAID 레벨 1에서 5까지로 분류된 다섯가지 유형의 디스크 어레이를 기술한다. RAID 레벨 5의 구성을 갖는 디스크 어레이가 특별히 관심을 끄는데, 그 이유는 이러한 RAID 유형의 패리티 블록은 모든 디스크에 걸쳐 고르게 분산되어, 병목 문제(bottleneck problems)를 야기하지 않기 때문이다.
RAID 환경의 단점은 디스크 기록 동작이 SLED에 비해 비용이 훨씬 많이 든다는 점인데, 이는 SLED상에서는 2번의 디스크 액세스 동작(disk access operations)을 필요로 하는데 비해 RAID상의 데이터 기록은 4번의 디스크 액세스 동작을 필요로 하기 때문이다. RAID 구성내 디스크 제어기가 데이터 블록을 기록하도록 하는 요구(request)를 수신할 때마다, 디스크 제어기는 데이터 블록을 갱신(즉, 판독 및 기록)해야 할 뿐만 아니라, 일관성(consistency)을 유지하기 위해 대응하는 패리티 블록을 갱신(즉, 판독 및 기록)하여야 한다. 예로서, 제2a도의 데이터 블록(D1)이 기록된다면, P0의 새로운 값은 신 P0=(구 D1 XOR 신 D1 XOR 구 P0)와 같이 계산된다. 따라서, (1)구 데이터 블록(D1)을 판독; (2)구 패리티 블록(P0)을 판독; (3)신 데이터 블록(D1)을 기록; 및 (4)신 패리티 블록(P0)을 기록하는 4번의 디스크 액세스 동작이 요구된다. 판독은 기록이 시작되기 전에 완료되어야 한다.
Performance of Disk Arrays in transaction Processing Environments, Proc. of International Conference on Distributed Computing Systems, 제 302-309쪽, 1992에서 제이.멘슨 및 디.매트슨(J.Menson and D.Mattson)은 디스크 제어기에서 저장 블록을 캐싱(caching) 혹은 버퍼링(buffering)하는 것이 RAID 디스크 어레이 서브시스템의 성능을 개선시킬 수 있다는 것을 개시하였다. 디스크 캐시(disk cache)가 존재하고, 대체될 블록이 이 캐시내에 존재한다면, 디스크 어레이로부터 이 블록을 예비-판독(pre-reading)할 필요가 없다. 더욱이, 각각의 패리티 그룹에 대한 패리티 블록이 또한 캐시내에 저장되는 경우 패리티 블록이 캐시내에 존재한다면 디스크 어레이로부터의 상술한 두 개의 판독은 피할 수 있다.
1993년 2월 16일 출원되어 본 출원의 양수인에 양도되었으며 역시 계류중인 미합중국 특허 출원 제 07/017,920호(IBM Docket Yo993-013)에는 높은 기록 활동 패리티 그룹(high write activity parity groups)으로부터의 패리티 블록이 캐시 버퍼(cache buffer)내에 저장되어 갱신동안 디스크 액세스의 횟수를 감소시키는 시스템이 개시되어 있다.
종래 방안의 결점은 임의의 주어진 시점에서 주어진 패리티 그룹내의 다양한 데이터 블록이 유용한 데이터를 포함하지 않을 수도 있다는 점이다. 예로서, 몇몇의 데이터 블록은 사용되지 않았을 수도 있으며, 다른 블록은, 비록 앞서 사용되었다 하더라도, 운영체에 의해 해방(free)되어 있을 수도 있다. 따라서, 각 패리티 블록이 데이터 블록의 그룹에 할당되는 한편, 각 패리티 블록 비트(parity block bits)는 데이터 블록이 사용중인지에 관계없이 대응하는 모든 데이터 블록 비트(data block bits)에 의존한다.
본 발명은 전술한 단점을 제거한다. 본 발명은 패리티 블록이 자신의 패리티 그룹내의 모든 데이터 블록 혹은 이들 데이터 블록 중 임의의 서브세트(arbitrary subset)에 대한 패리티 정보를 제공할 수 있는 디스크 어레이로 데이터를 기록하기 위한 시스템에 관한 것이다. 이것은 현재 사용중인 데이터 블록에 대해서만 패리티 정보가 저장되도록 한다. 시스템은 제각기의 장소(respective locations)를 포함하는 패리티 그룹에 연관된 패리테 블록을 저장하기 위한 디스크 어레이에 결합된 캐시 메모리를 포함한다. 본 발명에 따르면, 패리티 블록은 각각 패리티 데이터에 의해 보호되는 특정 패리티 그룹내의 데이터 블록을 나타내는 식별자(identifier)를 포함한다. 캐시 메모리 및 디스크 어레이에 결합된 기록 논리(write logic)는, 식별자를 판독하고 또한 종착 블록(destination block)이 패리티 데이터에 의해 보호되지 않았는지를 판정하는 수단을 포함한다. 또한, 기록 논리는 보호되지 않는 장소에 기록하기 위한 기록 수단, 장소가 보호됨을 표시하기 위해 장소를 포함하는 패리티 블록과 연관된 패리티 데이터 및 식별자를 갱신하기 위한 갱신 수단(update means)을 포함한다.
본 발명은 도면을 참조로 하여 보다 잘 이해될 것이다.
본 발명은 제1b도에 도시된 디스크 어레이 서브시스템(disk array subsystem)상에서 실시될 수 있으며, 상기 시스템은 캐시 메모리(31)를 포함하는 디스크 제어기(30) 및 디스크(40,41,42 및 43)의 어레이를 포함한다. 캐시 메모리(31)는 데이터 블록을 버퍼링하는 데이터부(31a) 및 패리티 블록을 버퍼링하는 패리티부(31b)의 두 부분으로 나누어진다. 데이터부(31a) 및 패리티부(31b)는 캐시 제어기에 의해 독립적으로 액세스될 수 있다. 본 발명의 일 실시예에 따르면, 데이터 블록 기록은 가변 기록 보호 논리(variable write protection logic)(32)의 제어 하에서 수행되며, 이 논리(32)는 캐시(31)의 데이터부(31a)과 패리티부(31b) 양자에 접속된다. 기술될 바람직한 실시예의 디스크 어레이(40-43)내의 데이터 맵핑은 RAID 레벨5(RAID V)맵핑이다.
제2도는 디스크 제어기의 캐시(31a 및 31b)를 위해 디스크 제어기(30)에 의해 사용되는 데이터 구조(data structure)를 나타낸다. 블록(202)에 스트라이프(stripe)의 ID가 주어질 때, RAID V는 어느 디스크가 패리티를 포함하는지와, 다른 디스크상의 데이터 블록의 번호매김(numbering)을 판단한다. 그런 다음, 디스크 제어기는 실제 디스크 어드레스(real disk addresses)에 의해 동작한다. 캐시 디렉토리(204 및 206)는 해시표(hash tables)에 의해 구현되며, 하나는 패리티 캐시용이고 하나는 데이터 캐시용이다. 디스크 블록 어드레스가 주어지면, 그 어드레스를 포함한 데이터가 캐시내에 존재하는지 여부를 판단하여, 캐시내에 데이터가 존재하면, 데이터가 존재하는 장소를 판단하기 위해 해시표가 참조된다. 패리티 캐시(parity cache)내의 블록에 대한 해시 테이블 엔트리(hash table entry)는 최소 최근 사용(a least recently used : LRU) 스택(208)을 가리킨다. LRU 스택 엔트리의 어드레스는 실제 데이터가 존재하는 장소를 결정하는데, 이는 LRU 스택 엔트리와 캐시 블록 사이에 1대1 대응이 존재하기 때문이다. 데이터의 어드레스를 계산하기 위해, (캐시 공간 베이스 어드레스)+(블럭 크기)*(LRU 스택 엔트리 어드레스-LRU 스택 베이스 어드레스)/(LRU 스택 엔트리 길이)를 사용한다. LRU 스택(210) 엔트리는 데이터 블록 어드레스 필드(data block address field)를 갖는다.
동작시, 각 캐시는 다음과 같은 방식 즉, (1)패리티/데이터 블록이 엑세스될 때마다, 현재의 위치에서 LRU 스택내 최대 최근 사용(most recently used : MRU) 위치로 이동되며; (2)공간이 패리티/데이터 블록을 입력하기 위해 필요할 때, 이 LRU 블록에 대한 캐시 공간이 해방되고, 블록이 MRU 위치에 배치된 이 장소로 입력됨으로써, 캐시 디렉토리(cache directory)가 갱신된다.
바람직한 실시예에 있어서, LRU 스택은 고정된 크기의 엔트리의 이중-결합 리스트(double-linked list), 또는 체인(chain)으로서 구현된다. 각 엔트리는 자신이 LUR 스택으로 작용하는 객체(object)에 관한 정보를 포함할 수도 있다. 이러한 경우, 캐시 블록에 대한 포인터(pointer)는 어드레스 계산 기법(address computation techniques)이 사용되는 경우 필요하지 않다. 각 엔트리는 또한 두 포인터에 관한 정보를 포함할 수도 있으며, 하나의 포인터는 다음의 MRU 엔트리(혹은 MRU 엔트리인 경우 NIL)에 대한 것이며, 하나의 포인터는 다음의 LRU 엔트리(또는 LRU 엔트리인 경우 NIL)이다. LRU 스택은 소프트웨어로 구현될 수 있는데, 이는 엔트리가 몇몇 커맨드에 의해 스택의 중앙을 벗어난 어느 곳으로부터도 이동되어 스택의 상부에 놓일 수 있기 때문이다.
제2a도는 RAID 레벨 5데이터 맵핑을 도시한다. 전체 N+1개의 디스크를 갖는 RAID 레벨 5 시스템에 있어서, 각 패리티 그룹은 N개의 데이터 블록 및 하나의 패리티 블록을 포함한다. 종래의 해결법은 데이터 블록을 제2a도에 도시된 바와 같이 패리티 그룹으로 나누는 것이다. 예로서, 제2a도에서 데이터 블록(D0,D1,D2,와 D3) 및 패리티 블록(P0)은 패리티 그룹을 형성한다. 제2a도에서 패리티 블록은 레이블(100,101,102,103 및 104)에 의해 표시된다. 따라서, (100으로 레이블된) 패리티 블록(P0)은 (110으로 레이블된) 데이터 블록(D0), (111로 레이블된) 데이터 블록(D1), (112로 레이블된) 데이터 블록(D2) 및 (113으로 레이블된) 데이터 블록(D3)을 XOR 논리 연산한 결과이다. 본 발명에 따르면, 호스트 시스템(10)에서 디스크 제어기(30)로의 각 데이터 블록 갱신 요구에 대해, 대응하는 패리티 블록이 제어 장치 캐시(31)내에 이미 존재하면, 하나의 데이터 갱신에 대해 1)구 데이터를 판독; 2)신 데이터를 기록; 3)신 패리티 블록을 기록하는 3개의 물리적 액세스 동작이 요구된다.
본 발명의 한 실시예에 따르면, 각각의 패리티 블록은 패리티 그룹내 데이터 블록 중 어느 블록이 보호되는지를 나타내는 식별자, 또는 접두부(prefix)를 포함한다. 호스트 시스템(10)이 디스크 제어기(30)로 기록 명령을 보낼 때, 가변 기록 보호 논리(32)는 캐시 메모리(31)내 관련된 패리티 블록으로부터 접두부를 판독한다. 기록될 패리티 그룹(또는 스트라이프)과 연관된 패리티 블록 접두부가 특정 데이터 블록이 그 패리티에 의해 보호되지 않는 다는 것을 표시하는 경우, 구 패리티는 새로운 데이터 블록에 의해 XOR논리 연산되고, 접두부는 데이터 블록이 보호된다는 것을 표시하기 위해 갱신되며, 새로운 데이터가 디스크상에 데이터 블록으로 기록되며, 새로운 패리티 블록이 디스크에 기록된다. 따라서, 디스크로부터 구 데이터를 판독하는 단계를 완전히 피할 수 있다.
제3도에는 본 발명에 따른 가변 보호 단일 블록 기록 논리(variable protection single block write logic)(32)의 흐름도가 도시되어 있다. 이러한 가변 보호 기록 논리(32)는 디스크 제어기의 마이크로프로세서에서 실행되는 마이크로코드 제어 프로그램으로서 구현될 수 있다.
이 논리는 디스크 제어기가 호스트 프로세서(10)로부터 기록 커맨드를 수신할 때 시작된다. 기록 커맨드는 데이터 블록 및 기록 어드레스를 포함한다. 호스트 파일 시스템에 의해 세트되는 플래그(a flag)가 기록 명령내에 또한 포함되며, 플래그는 전체 스트라이프가 자유(즉, 사용되지 않은) 공간으로 구성되어 있는지의 여부를 나타낸다.
단계(302)에서 디스크 제어기는 데이터 블록이 속하는 전체 스트라이프가 자유로운지를 판단하기 위해 자유 스트라이프 플래그를 조사한다. 전체 스트라이프가 자유롭다면, 단계(304)에서 디스크 제어기는 스트라이프의 패리티 블록(P)을 블록(D)(P=D)와 동일하게 설정한다. 또한, 데이터 블록(D)은 자유 블록 비트 벡터(free blocks bit vector)내에 보호되는 것으로 표시된다. 주목해야 할 것은 이러한 동작이 캐시 또는 디스크로부터 아무런 판독을 필요로 하지 않는다는 것이다. 단계(306)에서 제어기는 디스크에 블록(P 및 D)를 기록한다.
단계(302)에서, 디스크 제어기는 전체 스트라이프가 자유롭지 않다고 판정하면, 단계(308)에서 제어기는 해시표(304)를 이용해 패리티 블록(P)이 캐시(31)내에 존재하는지를 판단한다. 캐시(31)내에 패리티 블록(P)이 존재하지 않는다면, 단계(310)에서 제어기는 대체중인 데이터 블록(Dold)이 존재하면, 단계(312)에서 제어기는 디스크로부터 블록(P)을 판독한다. 캐시(31)내에 블록(Dold)이 존재하지 않으면, 단계(314)에서 제어기는 디스크로부터 블록(P와 Dold)양자를 판독한다.
이어서, 단계(316)에서 제어기는 패리티 블록 접두부를 조사하여 블록(Dold)이 보호되는지를 판정한다. 블록(Dold)이 보호된다면, 단계(318)에서 제어기는 식(P=P XOR Dold XOR D)에 의해 패리티 블록(P)의 새로운 값을 결정한다. 그런 다음, 단계(306)에서, 블록(P 및 D)은 디스크에 기록된다. 블록(Dold)이 보호되지 않는다면, 단계(320)에서 블록(P)의 새로운 값이 식(P=P XOR D)에 의해 결정되고 블록(D)은 블록 접두부내에 보호되는 것으로 표시된다. 그런 다음, 단계(306)에서, 블록(P 및 D)은 디스크에 기록된다.
단계(308)에서 블록(P)이 캐시내에 존재하는 것으로 판단되면, 단계(324)에서 제어기는 패리티 블록 접두부를 조사하여 블록(Dold)이 보호되는지의 여부를 판정한다. 블록(Dold)이 보호되면 디스크 제어기는 단계(326)에서 블록(Dold)이 캐시내에 존재하는지를 판정한다. 블록(Dold)이 캐시내에 존재하면, 단계(318 및 306)가 수행된다. 블록(Dold)이 캐시내에 존재하지 않으면, 블록(Dold)은 단계(328)에서 디스크로부터 판독된 후, 단계(318 및 306)가 수행된다.
단계(324)로부터 블록(Dold)이 보호되지 않는다는 것으로 판단되면, 제어기는 단계(320)에서 식(P=P XOR D)에 의해 새로운 패리티 값을 결정한 후, 블록(D)을 보호되는 것으로 표시한다. 그런 다음, 단계(306)가 수행된다. 단계(320)에서, 모든 값은 캐시로부터 취해지며, 따라서 디스크로부터 판독될 필요가 없다는 것을 주목해야 한다.
바람직한 실시예에서, 디스크 공간(disk space)은 파일 시스템(file system)으로 알려진 호스트 운영 체재(host operatingsystem)의 구성 요소(component)에 의해 관리된다. 파일 시스템은 파일 및 디렉토리로 알려진 논리적 엔티티(logical entities)를 디스크상의 물리적 공간으로 맵핑하고, 자유(사용되지 않은) 디스크 공간을 관리하는 책임이 있다. 예로서, 새로운 파일을 생성하거나 또는 기존의 파일을 확장할 필요가 있을 때, 파일 시스템은 이러한 목적을 위해 기존의 자유 공간에 할당될 수 있으며, 따라서, 자유 공간은 비자유(non-free)(즉, 사용중)가 된다. 역으로, 파일이 삭제되거나, 또는 파일을 기억시키기 위해 필요한 공간이 감소될 때, 앞서 사용중이었던 공간이 자유로워 질 수 있다. 자유 공간에 대한 디스크 기록의 성능을 최적화하고, 디스크 고장으로 부터의 신속한 회복을 위하여, 자유 디스크 블록이 보호되지 않는 것이 바람직하다. 이러한 목적을 위해, 블럭 해방 커맨드(Free Block Command)가 디스크 제어기에 제공되며, 그 논리는 제4도에 도시된다. 이 커맨드는, 주어진 시간 구간, 또는 축적된 보호 자유 공간의 임계량에 의해 판정되는 바와 같이, 앞서 사용중인 공간이 임의의 주어진 스트라이프(S)에서 자유롭게 될 때마다, 또는 주기적 백치(batches)(하나의 백치는 보호되지 않기를 원하는 보호된 자유 공간 영역을 포함하는 각 스트라이프에 대한 하나의 커맨드로 구성됨)로, 예를 들어 파일 시스템에 의해 송출될 수 있다.
제4도의 블록 해방 커맨드는 다음과 같이 동작한다 : 첫째, 단계(402)에서 캐시 보전 프로그램(cache maintenance program)은 블록(P)이 캐시내에 존재하는지를 판정한다. 블록(P)이 캐시내에 존재하지 않는다면, 단계(404)에서, 블록(P)은 디스크로부터 캐시내로 판독된다. 이어서, 단계(406)에서, 프로그램은 자유로워질 블록의 개수(K)가 (블럭(P)은 빼고) 스트라이프내의 블록의 개수(N)와 동일한지를 판단한다. (블럭(P)을 제외한) 전체 스트라이프가 자유로워진다면, 단계(408)에서 모든 데이터 블록은 보호되지 않은 것으로 표시된다. 단계(410)에서, 캐시내에 저장된 자유로워질 각각의 블록(BJ)은 자유 캐시 공간으로서 표시된다. 그런 다음, 단계(412)에서, 새로운 패리티 블록이 디스크에 기록된다.
전체 스트라이프 미만의 데이터 블록이 해방되어야 하는 경우, 단계(414)에서 캐시내에 기억되지 않은 사용중인 데이터 블록의 개수(d)가 결정된다. d는 사용중인 모든 데이터 블록에 XOR 연산을 수행하므로써 패리티를 계산하기 위해 디스크로부터 판독되어야 할 데이터 블록의 개수이다. 단계(416)에서, 캐시내에 존재하지 않는 자유로워질 보호 데이터 블록의 개수(b)가 결정된다. b는 패리티가 보호되었었으나 비보호화되고 있는 블록을 뺌으로써 재계산되는 경우 디스크로부터 판독되어야 할 블록의 개수이다.
이어서, 단계(415)에서 d가 b보다 작은지 또는 동일한지가 판정된다. 이 단계의 목적은 이 두가지 다른 대안 중 최소 횟수의 입/출력 동작이 가능한 것을 행하는데 있다. d가 b보다 작거나 또는 동일한 경우, 단계(418)에서 캐시내에 존재하지 않는 사용중인 데이터 블록의 모두가 디스크로부터 판독된 후 단계(420)에서 패리티는 모든 데이터 블록(D1,...Dn)을 서로 XOR 논리 연산시킴으로써 재계산된다. 반면에, d가 b보다 크다면, 단계(422)에서 캐시내에 존재하지 않는 보호 데이터 블록의 모두가 디스크로부터 판독된 후 단계(424)에서 자유롭게 될 각 데이터 블록(Bj)이 패리티 블록(P)과 XOR 논리 연산된다. 이러한 연산은 패리티 블록으로부터 자유롭게 될 보호 데이터 블록(Bj)을 뺀다.
단계(426)에서, 자유롭게되는 블록(Bj) 모두는 연관된 블록 접두부내에서 이들의 엔트리를 소거함으로써 보호되지 않는 것으로 표시된다. 그런 다음, 단계(410 및 412)가 전술한 바와 같이 수행된다.
제5a-5c도는 본 발명에 따른 패리티 블록 접두부(502)를 사용해 패리티가 판단되는 방법의 몇몇 예를 도시한다. 스트라이프(패리티 그룹)당 4개의 데이터 블록 및 하나의 패리티 블록을 포함하는 실시예가 도시된다. 접두부는 각 데이터 블록(Dn)이 접두사내에 하나의 위치를 갖도록 매핑된다. 영(zero)은 해당 데이터 블록이 패리티 계산에 포함되지 않는다는 것을 나타내며, 1은 해당 데이터 블록이 패리티 계산에 포함된다는 것을 나타낸다.
제5a도에서, 데이트 블록(D9,D10 및 D11)은 자유 상태이고, 따라서 데이터 블록(D8)만이 패리티 블록(P2)에 의해 보호된다. 접두부(502a)는 1000(2진수)로 설정되어 패리티 블록(P2)의 패리티 비트(504a)가 블록(D8)에 의해서만 발생되었음을 나타낸다. 3개의 영은 나머지 3개의 데이터 블록이 보호되지 않음을 나타낸다.
제5b도에서는 제어기가 블록(D10)에 대한 기록을 수행하여야 한다고 가정한다. 구 패리티 블록 접두부(502a)를 조사함으로써, 제어기는 블록(D8)만이 패러티 비트에 의해 보호되고 있다고 판정하고, 따라서, 새로운 패리티가 식(P=D8 XOR D10), 또는 (P=D10 XOR P)에 의해 계산되어 패리티 블록(504b)내에 기억된다.
제5c도에서는 제어기가 블록(D9)에 대한 기록을 수행하여야 한다고 가정한다. 구 패리티(502b)는 블록(D9)이 보호되고 있지 않음을 나타낸다. 따라서, 새로운 패리티가 식(P=D8 XOR D9 XOR D10), 또는 (P=D9 XOR 구(old) P)에 의해 계산된다. P는 패리티 블록(504c)내에 저장되며, 접두부는 502c에 도시된 바와 같이 갱신된다.
본 발명의 자유 블록 패리티 시스템을 구비한 RAID 5에 있어, 디스크 어레이내의 하나의 디스크가 고장난 경우의 회복 시나리오는 표준 RAID 디스크 어레이의 회복 시나리오와 동일하다. 고장난 디스크상에 하나의 블록을 갖는 각 패리티 그룹내의 부재 블록(missing block)은 다른 디스크상의 그 패리티 그롭에 속한 다른 블록으로부터 도출된다. 그러나, 본 발명의 시스템에 있어서 회복동안의 장점은 접두부가 패리티 블록에 의해 기술되는 데이터 블록의 맵을 제공한다는 점이다. 따라서, 사용되지 않은 데이터 블록의 회복은 필요하지 않다.
단일 디스크 고장의 경우, 종래의 RAID 구조 디스크 시스템내의 디스크의 내용은 회복될 수 있다. 필연적으로, 고장난 디스크의 각 블록에 대하여, 그 블록이 패리티 블록이라면, 패리티 정보가 재계산되고, 그 블록이 데이터 블록이라면, 그 내용은 스트라이프내의 다른 모든 데이터 블록과 함께 그 스트라이프에 대한 패리티 블록을 이용하여 회복될 수 있다.
본 발명의 가변 스트라이프 보호 방안을 이용함으로써, 회복은 다음과 같이 수행된다. 첫째, 고장난 디스크상의 블록이 데이터 블록이라고 가정한다. 이 스트라이프에 대한 패리티 블록으로부터, 그 블록이 보호되는지 또는 보호되지 않는지가 판정될 수 있다. 블록이 보호된다면, 블록의 내용은, (패리티 블록과 함께)스트라이프내의 다른 보호되는 데이터 블록만이 사용되는 것을 제외하고는, 전술한 바와 같이 회복될 수 있다. 단지 소수의 다른 블록만이 보호된다면, 이것은 (종래의 방법과 비교하여) 입/출력 동작이 절약되는 결과를 가져오고, 따라서 고속의 디스크 회복이 가능하다. 각 스트라이프내에 보호되는 블록이 적을수록 이러한 절약 효과는 증대된다. 다른 경우는 데이터 블록이 보호되지 않는 경우이다. 이 경우, 더 이상의 조치가 필요하지 않으며, 이것은 분명히 종래 기술에 비해 상당한 개선이다. 특히, 고장난 디스크가 대량의 보호되지 않는(자유) 공간을 포함하면, 디스크 회복은 종래의 디스크 회복 방법과 비교하여 매우 빠를 것이다.
다음으로, 고장난 디스크상의 블록이 패리티 블록인 것으로 가정한다. 이 경우, 이 패리티 블록을 회복하기 위한 두 가지 방법이 존재한다. 첫째, 디스크 회복이 호스트 시스템에 독립적으로 진행되길 원한다면, 스트라이프내 모든 데이터 블록이 유효(사용중인) 블록이라는 최악의 가정을 할 필요가 있다. 이 경우, 패리티 블록은 스트라이프내의 모든 데이터 블록의 패리티를 계산함으로써 구하여지고 또한 모든 데이터 블록이 보호되는 것으로 패리티 블록 접두부 영역내에 표시된다.
호스트 시스템과의 통신을 포함하는 제2방법은 다음과 같다. 고장난 디스크상의 각 패리티 블록에 대해, 디스크 제어기는 스트라이프내의 데이터 블럭의 상태(자유 또는 사용중)에 대해 호스트 파일 시스템에 질문한다. 호스트 파일 시스템은 스트라이프내의 각 블록에 대해 그 블록이 자유인지의 여부를 나타내는 비트-벡터(bit-vector)를 복귀한다. 각각의 이러한 자유 블록은 보호되지 않은 것으로 표시되고, 스트라이프내 다른 데이터 블록은 보호되는 것으로 표시된다. 마지막으로, 스트라이프내 보호되는 블록에 대해 패리티가 계산되어, 고장난 디스크상의 패리티 블록이 회복된다. 전체 데이터 블록보다 적은 데이터 블록이 스트라이프내에 보호되면, 이 역시 종래 방법 이상으로 개선된 것인데, 그 이유는 보호된 블록만이 패리티 블록을 재계산하기 위해 디스크로부터 판독될 필요가 있기 때문이다.
요약해서, 본 발명은 스트라이프내의 전체 데이터 블록보다 적은 수의 데이터 블록이 패리티 블록에 의해 보호되는 경우, 요구되는 판독 및 기록의 횟수를 감소시킨다. 보다 상세히 설명하면, 패리티 블록은 식별지를 포함하는데, 이 식별지는 각 데이터 블록을 보호되는 데이터 즉, 이에 대한 패리티 정보가 패리티 블록내에서 계산되고 저장된 데이터, 또는 보호되지 않는 데이터 즉, 저장된 패리티 정보가 존재하지 않는 데이터로 분류하는 식별자를 포함한다. 후자의 범주내 데이터 블록은 반드시 사용중이 아닌 블록이어야 한다. 또한, 첫 번째(보호되는) 범주 내 데이터 블록은 사용 중 또는 사용 중이지 않은 것으로 더 분류될 수도 있다. 보호되는 데이터 블록이 사용중이지 않은 데이터를 포함하는 경우는, 예를 들어, 주어진 블록내 정보가 갱신되어 다른 디스크 장소에 기록되거나, 또는 정보가 낡았고 이 데이터를 포함하는 디스크 공간이 운영 체재에 의해 자유롭게 될 때 일어날 수도 있다. 보호되지 않는 데이터 블록에 대한 기록은 현재의 블록 내용을 판단하지 않고 수행되는데, 이는 편재의 블록 내용이 현재의 패리티 정보내에 포함되지 않기 때문이다. 또한, 보호되지만 사용중이지 않는 데이터 블록은 사용중인 데이터 블록에 대해 패리티 정보를 재계산함으로써 보호되지 않는 블록으로 전환될 수 있다. 바람직한 실시예에서, 각종 유형의 판독 및 기록 블록을 위해 필요한 조치를 판단하기 위해, 시스템은 다수의 데이터 및 패리티 블록을 포함하는 캐시 메모리와 패리티 블록내 접두부를 판독 및 수정하는 기록 논리를 사용한다.
비록 본 발명이 바람직한 실시예를 참조하여 특정하게 도시되고 기술되었지만, 당 업자라면 본 발명의 범주 및 사상을 벗어남이 없이 그 형태 및 상세한 사항에 있어 다양한 변화가 이루어질 수 있다는 것을 이해할 것이다.

Claims (16)

  1. 디스크 어레이(a disk array)에 데이터를 기록하기 위한 시스템에 있어서, 상기 시스템은; 상기 디스크 어레이에 결합되어, 디스크 데이터 블록의 스트라이프(stripes of data blocks)와 연관된 하나 이상의 패리티 블록(one or more parity blocks)을 저장하는 캐시 메모리(a cache memory)로서, 각각 그의 스트라이프내의 하나 이상의 데이터 블록(one or more data block)과 그의 스트라이프내의 보호된 데이터 블록(protected data blocks)을 식별하는 식별자(an identifier)를 구비하는 상기 캐시 메모리(a cache memory)와; 상기 캐시 메모리 및 상기 디스크 어레이에 결합된 기록 논리(Write logic)를 포함하되, 상기 기록 논리는; 하나의 장소(a location)가 상기 패리티 데이터에 의해 보호되는지 여부를 판정하는 수단과; 선택된 장소(a selected location)에 데이터를 기록하기 위한 수단과, 새로운 패리티 데이터를 계산하고 상기 선택된 장소가 보호된다는 것을 나타내기 위해 필요한 경우 상기 새로운 패리티 데이터와 연관된 식별자를 갱신하는 수단을 구비하는 디스크 어레이에 데이터를 기록하기 위한 시스템.
  2. 제1항에 있어서, 데이터 블록(a block of data)이 자유롭게 된(freed) 후 상기 데이터 블록을 상기 디스크 어레이로부터 판독하는 수단과, 패리티 데이터를 재계산하고 상기 데이터 블록이 자유롭게 되었음을 나타내기 위해 상기 재계산된 패리티 데이터와 연관된 식별자를 갱신하는 수단을 더 포함하는 디스크 어레이에 데이터를 기록하기 위한 시스템.
  3. 제2항에 있어서, 데이터 블록이 자유롭게 될 때 이 데이터 블록을 상기 디스크 어레이로부터 판독하는 수단을 포함하는 디스크 어레이에 데이터를 기록하기 위한 시스템.
  4. 제2항에 있어서, 상기 패리티 데이터를 재계산하기 위해 디스크로부터 판독할 블록의 최적 세트(an optimal set of blocks)를 판정하는 수단을 더 포함하는 디스크 어레이에 데이터를 기록하기 위한 시스템.
  5. 제2항에 있어서, 다수의 데이터 블록(a plurality of blocks of data)이 자유롭게 된 후 상기 다수의 데이터 블록을 상기 디스크 어레이로부터 판독하는 수단을 더 포함하는 디스크 어레이에 데이터를 기록하기 위한 시스템.
  6. 저가 디스크의 중복 어레이(a redundant array of inexpensive disks)내의 디스크에 새로운 데이터를 기록하기 위한 방법에 있어서, 상기 방법은; 캐시 메모리에 상기 새로운 데이터를 저장하는 단계; 상기 디스크 어레이내의 데이터 블록 그룹(a group of data blocks)의 사용중인 데이터 블록(in-use data blocks)에 대해 패리티 블록을 계산하는 단계; 상기 데이터 블록 그룹 중 데이터 블록이 사용중인지를 나타내는 식별자를 상기 패리티 블록에 첨부(attach)하는 단계; 상기 새로운 데이터의 종착 데이터 블록(a destination data block)을 선택하는 단계와, 상기 종착 블록이 자유 데이터 블록 그룹(a group of free data blocks)에 속하는 지를 판단하여, 속하는 경우, 상기 새로운 데이터만을 사용해 상기 패리티 블록을 설정하고, 상기 설정된 패리티 블록 및 상기 새로운 데이터를 디스크에 기록하며; 속하지 않는 경우, 상기 종착 블록이 상기 패리티 블록에 의해 보호되는지를 상기 식별자로부터 판단하여, 상기 종착 블록이 보호되는 경우, 상기 새로운 데이터, 상기 종착 블록 및 상기 패리티 블록을 이용하여, 상기 새로운 데이터를 반영한 새로운 패리티 블록을 계산하고 이를 캐시 및 디스크에 기록하며; 상기 종착 블록이 보호되지 않는 경우, 상기 새로운 데이터를 반영한 새로운 패리티 블록을 계산하고, 상기 새로운 데이터를 반영한 새로운 패리티 블록을 계산하고, 상기 새로운 패리티 블록을 캐시 및 디스크에 기록하고, 상기 종착 블록이 상기 패리티 블록에 의해 현재 보호됨을 나타내기 위해 상기 식별자를 갱신하는 단계를 포함하는 디스크에 새로운 데이터를 기록하는 방법.
  7. 제6항에 있어서, 상기 종착 블록이 상기 패리티 블록에 의해 보호되고, 상기 종착 블록의 내용이 캐시내에 저장되어 있지 않으면, 상기 새로운 패리티 블록을 계산하기에 앞서 디스크로부터 상기 종착 블럭의 내용을 판독하는 단계를 포함하는 디스크에 새로운 데이터를 기록하는 방법.
  8. 제7항에 있어서, 상기 패리티 블록 및 상기 데이터 블록 그룹내의 상기 각 블록은 상기 디스크 어레이내의 상이한 디스크상에 저장되는 단계를 포함하는 디스크에 새로운 데이터를 기록하는 방법.
  9. 제6항에 있어서, 상기 패리티 블록이 캐시내에 저장되어 있지 않으면, 상기 종착 블록이 보호되는지를 판단하는 상기 단계에 앞서 디스크로부터 상기 패리티 블록 및 상기 식별자를 판독하는 단계를 포함하는 디스크에 새로운 데이터를 기록하는 방법.
  10. 제6항에 있어서, 상기 새로운 패리티 블록은 상기 새로운 데이터 블록과 상기 패리티 블록을 XOR 논리 연산(XORing)시킴으로써 계산되는 단계를 포함하는 디스크에 새로운 데이터를 기록하는 방법.
  11. 저가 디스크의 중복 어레이내의 사용되지 않는 데이터 블록을 계산(account)하는 방법에 있어서, 상기 방법은; 상기 디스크상에 저장된 데이터 블록 그룹내의 데이터 블록에 대해 패리티 블록을 계산(compute)하는 단계; 상기 그룹의 어느 블록이 사용중인지를 나타내는 식별자를 상기 패리티 블록에 첨부하는 단계; 블록이 사용중에서 사용중이 아님으로 재분류될 때, 상기 패리티 블록과 재분류될 상기 블록내의 데이터를 사용해 새로운 패리티 블록을 계산(compute)하고, 재분류될 상기 블록이 상기 새로운 패리티 블록에 의해 보호되지 않는다는 것을 나타내기 위하여 상기 식별자를 갱신하는 단계를 포함하는 사용되지 않는 데이터 블록을 계산하는 방법.
  12. 제11항에 있어서, 상기 어레이는 연관된 캐시 메모리(an associated cache memory)를 구비하고, 상기 패리티 블록 및 식별자가 상기 캐시 메모리내에 저장되지 않으면, 새로운 패리티 블록을 계산하는 상기 단계에 앞서 디스크로부터 상기 패리티 블록 및 식별자를 판독하는 단계를 포함하는 사용되지 않는 데이터 블록을 계산하는 방법.
  13. 제11항에 있어서, 상기 어레이는 연관된 캐시 메모리를 구비하고, 재분류될 상기 데이터 블록이 상기 캐시 메모리내에 저장되지 않으면, 새로운 패리티 블록을 계산하는 상기 단계에 앞서 재분류될 상기 데이터 블록을 디스크로부터 판독하는 단계를 포함하는 사용되지 않는 데이터 블록을 계산하는 방법.
  14. 제11항에 있어서, 상기 식별자는 상기 그룹내의 데이터 블록의 개수와 동일한 수의 비트(bits)를 갖되, 각각의 비트는 상기 그룹내의 상기 데이터 블록 중 상이한 데이터 블록에 대응하고, 상기 식별자를 갱신하는 상기 단계는 재분류될 상기 블록에 대응하는 비트의 상태를 변경시키는 단계를 포함하는 사용되지 않는 데이터 블록을 계산하는 방법.
  15. 제11항에 있어서, 상기 패리티 블록 및 상기 그룹내의 상기 각 데이터 블록은 상기 어레이내의 상이한 디스크상에 저장되는 사용되지 않는 데이터 클럭을 계산하는 방법.
  16. 제11항에 있어서, 새로운 패리티 블록을 계산하는 단계는 상기 패리티 블록과 재분류될 상기 블록내의 상기 데이터를 XOR 논리 연산시키는 단계를 포함하는 사용되지 않은 데이터 블록을 계산하는 방법.
KR1019950010951A 1994-05-05 1995-05-04 디스크 어레이에 데이타를 기록하기 위한 시스템, 디스크에 새로운 데이타를 기록하는 방법 및 사용되지 않은 데이타 블럭을 계산하는 방법 KR100188485B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/238,769 US5522032A (en) 1994-05-05 1994-05-05 Raid level 5 with free blocks parity cache
US8/238,769 1994-05-05

Publications (1)

Publication Number Publication Date
KR100188485B1 true KR100188485B1 (ko) 1999-06-01

Family

ID=22899236

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950010951A KR100188485B1 (ko) 1994-05-05 1995-05-04 디스크 어레이에 데이타를 기록하기 위한 시스템, 디스크에 새로운 데이타를 기록하는 방법 및 사용되지 않은 데이타 블럭을 계산하는 방법

Country Status (6)

Country Link
US (1) US5522032A (ko)
EP (1) EP0681238B1 (ko)
JP (1) JP2902970B2 (ko)
KR (1) KR100188485B1 (ko)
CN (1) CN1097774C (ko)
DE (1) DE69512459T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100579133B1 (ko) 2004-12-06 2006-05-12 한국전자통신연구원 블록분할 디스크 어레이에서의 분산 패러티를 이용한데이터 배치 방법 및 블록분할 분산패러티 디스크어레이에서의 대형/소형 블록 읽기/쓰기 제어 방법

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3687111B2 (ja) * 1994-08-18 2005-08-24 株式会社日立製作所 記憶装置システムおよび記憶装置の制御方法
JP3202550B2 (ja) * 1995-07-14 2001-08-27 日本電気株式会社 ディスクアレイサブシステム
US5826001A (en) * 1995-10-13 1998-10-20 Digital Equipment Corporation Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5961652A (en) * 1995-10-13 1999-10-05 Compaq Computer Corporation Read checking for drive rebuild
US5933592A (en) * 1995-10-13 1999-08-03 Digital Equipment Corporation Promoting device level error to raidset level error to restore redundacy in a raid array data storage system
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
KR100208801B1 (ko) 1996-09-16 1999-07-15 윤종용 데이타 입/출력 성능을 향상시키기 위한 기억장치 시스템 및 그에 따른 데이타 복구정보 캐시구현방법
US6016552A (en) * 1997-06-06 2000-01-18 The Chinese University Of Hong Kong Object striping focusing on data object
US6012123A (en) * 1997-06-10 2000-01-04 Adaptec Inc External I/O controller system for an independent access parity disk array
US6035347A (en) * 1997-12-19 2000-03-07 International Business Machines Corporation Secure store implementation on common platform storage subsystem (CPSS) by storing write data in non-volatile buffer
JPH11203056A (ja) * 1998-01-19 1999-07-30 Fujitsu Ltd 入出力制御装置及びアレイディスク装置
US6029168A (en) 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6173415B1 (en) 1998-05-22 2001-01-09 International Business Machines Corporation System for scalable distributed data structure having scalable availability
US6122754A (en) * 1998-05-22 2000-09-19 International Business Machines Corporation Method and system for data recovery using a distributed and scalable data structure
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6513093B1 (en) 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US6629199B1 (en) * 1999-08-20 2003-09-30 Emc Corporation Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location
JP2001356882A (ja) * 2000-06-13 2001-12-26 Nec Corp データ読み書き制御方法及びディスクアレイ装置並びにデータ読み書き制御用プログラムを記憶した記録媒体
EP1168173A3 (en) * 2000-06-29 2004-09-22 Snap Appliance, Inc. Fault tolerant storage device with cache
US6754773B2 (en) * 2001-01-29 2004-06-22 Snap Appliance, Inc. Data engine with metadata processor
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6766491B2 (en) 2001-05-09 2004-07-20 Dot Hill Systems Corp. Parity mirroring between controllers in an active-active controller pair
US20030037302A1 (en) * 2001-06-24 2003-02-20 Aliaksei Dzienis Systems and methods for automatically converting document file formats
US7168025B1 (en) * 2001-10-11 2007-01-23 Fuzzyfind Corporation Method of and system for searching a data dictionary with fault tolerant indexing
US7085953B1 (en) * 2002-11-01 2006-08-01 International Business Machines Corporation Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array
US7185144B2 (en) * 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
JP2007502470A (ja) * 2003-08-14 2007-02-08 コンペレント・テクノロジーズ 仮想ディスク・ドライブのシステムおよび方法
US7562230B2 (en) * 2003-10-14 2009-07-14 Intel Corporation Data security
CN100419700C (zh) * 2004-02-11 2008-09-17 鸿富锦精密工业(深圳)有限公司 磁盘容错系统及方法
US7370163B2 (en) * 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US7457980B2 (en) * 2004-08-13 2008-11-25 Ken Qing Yang Data replication method over a limited bandwidth network by mirroring parities
US20060036904A1 (en) * 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
US7321905B2 (en) 2004-09-30 2008-01-22 International Business Machines Corporation System and method for efficient data recovery in a storage array utilizing multiple parity slopes
US7711965B2 (en) * 2004-10-20 2010-05-04 Intel Corporation Data security
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7454668B1 (en) * 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
JP4567753B2 (ja) * 2006-01-19 2010-10-20 富士通株式会社 パリティ生成回路、計数回路および計数方法
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US8316258B2 (en) * 2007-05-03 2012-11-20 Oracle America, Inc. System and method for error detection in a data storage system
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム
WO2014016860A1 (en) * 2012-07-23 2014-01-30 Hitachi, Ltd. Raid storage system and rebuild process
US9830220B1 (en) * 2014-09-29 2017-11-28 EMC IP Holding Company LLC Enhanced error recovery for data storage drives
US9672106B2 (en) 2014-12-30 2017-06-06 Nutanix, Inc. Architecture for implementing erasure coding
US10567009B2 (en) 2016-12-06 2020-02-18 Nutanix, Inc. Dynamic erasure coding
US10664346B2 (en) * 2018-05-18 2020-05-26 Microsoft Technology Licensing, Llc Parity log with by-pass
CN112947847B (zh) * 2019-12-11 2023-12-29 伊姆西Ip控股有限责任公司 用于存储数据的方法、设备和计算机程序产品
CN111880963B (zh) * 2020-07-29 2022-06-10 北京浪潮数据技术有限公司 一种数据重构方法、装置、设备及存储介质
CN112947858B (zh) * 2021-02-25 2023-04-25 浪潮电子信息产业股份有限公司 一种raid 5校验值的更新方法、装置和介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4419725A (en) * 1980-11-14 1983-12-06 Sperry Corporation Cache/disk subsystem with tagalong copy
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5124987A (en) * 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5375128A (en) * 1990-10-18 1994-12-20 Ibm Corporation (International Business Machines Corporation) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
US5359611A (en) * 1990-12-14 1994-10-25 Dell Usa, L.P. Method and apparatus for reducing partial write latency in redundant disk arrays
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
JPH0820964B2 (ja) * 1991-09-13 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション メモリ制御装置および方法
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5341381A (en) * 1992-01-21 1994-08-23 Tandem Computers, Incorporated Redundant array parity caching system
US5410667A (en) * 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
JP2810593B2 (ja) * 1992-05-13 1998-10-15 三菱電機株式会社 記憶装置
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
US5309451A (en) * 1992-08-12 1994-05-03 Digital Equipment Corporation Data and parity prefetching for redundant arrays of disk drives
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100579133B1 (ko) 2004-12-06 2006-05-12 한국전자통신연구원 블록분할 디스크 어레이에서의 분산 패러티를 이용한데이터 배치 방법 및 블록분할 분산패러티 디스크어레이에서의 대형/소형 블록 읽기/쓰기 제어 방법

Also Published As

Publication number Publication date
JP2902970B2 (ja) 1999-06-07
EP0681238A1 (en) 1995-11-08
EP0681238B1 (en) 1999-09-29
CN1118503A (zh) 1996-03-13
JPH07306759A (ja) 1995-11-21
DE69512459D1 (de) 1999-11-04
CN1097774C (zh) 2003-01-01
DE69512459T2 (de) 2000-05-04
US5522032A (en) 1996-05-28

Similar Documents

Publication Publication Date Title
KR100188485B1 (ko) 디스크 어레이에 데이타를 기록하기 위한 시스템, 디스크에 새로운 데이타를 기록하는 방법 및 사용되지 않은 데이타 블럭을 계산하는 방법
US6745284B1 (en) Data storage subsystem including a storage disk array employing dynamic data striping
JP2654346B2 (ja) ディスク・アレイ・システムおよび記憶方法並びに制御装置
US7281089B2 (en) System and method for reorganizing data in a raid storage system
KR100263524B1 (ko) 알에이아이디 제어기 및 데이터 기록 방법
JP3697149B2 (ja) キャッシュ・メモリを管理する方法
US6915382B2 (en) Apparatus and method for reallocating logical to physical disk devices using a storage controller, with access frequency and sequential access ratio calculations and display
US5596709A (en) Method and apparatus for recovering parity protected data
US5375128A (en) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
US20080229003A1 (en) Storage system and method of preventing deterioration of write performance in storage system
US6098191A (en) Storage unit and storage unit subsystem
KR20070120731A (ko) 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법
WO2002088962A2 (en) Data storage array employing block checksums and dynamic striping
US5420983A (en) Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data
US6304946B1 (en) System and method for optimizing cache write backs to disks
JPH07200187A (ja) ディスクアレイ装置
KR19980047273A (ko) 레이드 레벨 5 시스템에서 캐쉬 관리 방법
KR100321987B1 (ko) 레이드 시스템에서 패러티 캐쉬 및 이의 운영 방법
JP3236166B2 (ja) キャッシュ制御方法および情報処理装置
JP3409627B2 (ja) 記憶装置システム
JPH07311659A (ja) キャッシュ内蔵ディスクアレイ装置
JPH10320133A (ja) アレイ型ディスクシステムの制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101210

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee