KR19990010106A - Method and apparatus for data storage in parity storage and disk failure in external storage subsystem - Google Patents

Method and apparatus for data storage in parity storage and disk failure in external storage subsystem Download PDF

Info

Publication number
KR19990010106A
KR19990010106A KR1019970032758A KR19970032758A KR19990010106A KR 19990010106 A KR19990010106 A KR 19990010106A KR 1019970032758 A KR1019970032758 A KR 1019970032758A KR 19970032758 A KR19970032758 A KR 19970032758A KR 19990010106 A KR19990010106 A KR 19990010106A
Authority
KR
South Korea
Prior art keywords
parity
disk
blocks
block
horizontal
Prior art date
Application number
KR1019970032758A
Other languages
Korean (ko)
Other versions
KR100267366B1 (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 윤종용
Priority to KR1019970032758A priority Critical patent/KR100267366B1/en
Priority to JP29236397A priority patent/JP3587667B2/en
Priority to CA002225771A priority patent/CA2225771C/en
Priority to US09/039,679 priority patent/US6158017A/en
Publication of KR19990010106A publication Critical patent/KR19990010106A/en
Application granted granted Critical
Publication of KR100267366B1 publication Critical patent/KR100267366B1/en

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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2921Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes wherein error correction coding involves a diagonal direction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 사선 패리티와 수평 패리티를 이용한 효율적인 디스크 분산 배치 기법(본 발명에서는 DH 기법이라 칭한다)에 관한 것이다. 본 발명에 따른 DH 기법은 소수(prime number) N개로 이루어진 디스크 어레이에서 임의로 두 개의 디스크에서 오류가 발생하여도 사선 패리티와 수평 패리티를 반복적으로 적용하여 복구하는 기법이다. N개의 디스크로 디스크 어레이를 구성할 경우, 각 디스크는 (N-1)개의 블록으로 구성하여 (N-1)*N행렬로 정의하고, 수평 패리티 블록들은 각 디스크에 사선방향으로 배치하고 사선 패리티 블록들은 각 디스크의 (N-1)번째 블록에 위치시킨다. 패리티 저장 방법은 에러 정정 그룹의 데이터 값들을 배타적 논리합(XOR: eXclusive OR) 연산하여 그 그룹의 패리티 블록에 저장하고, 두 개의 디스크에서 에러가 발생시에는 먼저 사선 패리티 그룹을 적용하여 한 블록을 복구하고 다시 이를 이용하여 수평 패리티 그룹의 에러 발생 블록을 복구하며 이 과정을 반복적으로 적용시에 모든 오류 발생 디스크의 블록들을 복구할 수 있다.The present invention relates to an efficient disk distribution scheme (referred to as a DH scheme in the present invention) using diagonal parity and horizontal parity. The DH scheme according to the present invention is a technique for repeatedly applying diagonal parity and horizontal parity even if an error occurs in two disks arbitrarily in a disk array having N prime numbers. In the case of constructing a disk array with N disks, each disk is defined by (N-1) * N matrix composed of (N-1) blocks, the horizontal parity blocks are arranged diagonally on each disk, The blocks are located in the (N-1) th block of each disk. In the parity storing method, the data values of the error correction group are subjected to XOR (eXclusive OR) operation and stored in the parity block of the group. When an error occurs in the two disks, a block is first recovered by applying a diagonal parity group Then, it is used to recover the error occurrence block of the horizontal parity group, and it is possible to recover the blocks of all erroneous disks when the process is repeatedly applied.

Description

외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구 방법과 그 장치Method and apparatus for data storage in parity storage and disk failure in external storage subsystem

본 발명은 외부 저장 서브시스템에 관한 것으로, 특히 디스크 어레이내 디스크 페일시 데이터 복구를 용이하게 하기 위한 패리티 저장 및 그에 따른 데이터 복구를 수행하는 방법 및 장치에 관한 것이다.The present invention relates to an external storage subsystem, and more particularly, to a method and apparatus for performing parity storage and thus data recovery in order to facilitate data recovery in a disk failure in a disk array.

최근 반도체 기술이 발전함에 따라 더욱 빠르고 강력한 마이크로 프로세서와메모리가 개발되고 있으나 기계적인 특성을 갖는 하드 디스크의 성능은 이에 미치지 못하고 있다. 즉, RISC(Reduced Instruction Set Computer) 마이크로 프로세서는 매년 50% 이상의 성능 향상을 보이고 있는 반면 하드 디스크의 접근 시간은 매년 10% 미만의 성능향상을 보이고 있다. 따라서 하드 디스크를 근간으로 하는 입출력 서브시스템의 성능 저하는 전체 시스템의 성능을 제한하는 중요한 원인이 되고 있다.Recently, with the development of semiconductor technology, faster and more powerful microprocessors and memories have been developed, but the performance of hard disks with mechanical characteristics is not enough. In other words, the RISC (Reduced Instruction Set Computer) microprocessor shows a performance improvement of more than 50% every year, while the access time of the hard disk is less than 10% per year. Therefore, performance degradation of I / O subsystem based on hard disk is an important reason to limit the performance of the whole system.

Patterson 등(et al)은 1988년 미국 시카고(Chicago)에서 ACM SIGMOD Conf.에 의해 발행된 보고서의 109∼116페이지에 걸쳐 A Case for Redundant Arrays of Inexpensive Disks(RAID)이라는 제목의 보고서를 발표하였다. 이 보고서에 발표된 RAID는 디스크 어레이를 각 구조 및 특성에 따라 레벨 0부터 레벨 5까지 6개의 레벨에 대한 내용을 개시하고 있다. 6가지의 RAID레벨(레벨 0∼레벨 5)은 각 톡성에 맞는 환경에 장단점을 가지며 여러 가지 응용분야에 사용된다. 이러한 RAID는 디스크 어레이의 병렬적인 처리가 가능하여 고성능을 보장할 뿐만 아니라, 중복성을 이용하여 디스크 오류 발생시에도 복구 가능한 신뢰성의 특징을 가지며 다수의 디스크로 구성하므로 대용량의 특성을 갖는다.Patterson et al. (A) published a report titled A Case for Redundant Arrays of Inexpensive Disks (RAID) on pages 109 to 116 of a report issued by ACM SIGMOD Conf. In 1988 in Chicago, USA. The RAID presented in this report discloses six levels of disk arrays, from level 0 to level 5, depending on their structure and characteristics. Six RAID levels (level 0 to level 5) have advantages and disadvantages for each shell-like environment and are used in various applications. These RAIDs not only guarantee high performance by enabling parallel processing of disk arrays, but also have reliability characteristics that can be recovered even when a disk error occurs due to redundancy and have large capacity because they are composed of a plurality of disks.

그런데 기존의 문서형 데이터 뿐만 아니라 멀티미디어 데이터의 특성이 가속화됨에 따라 더욱 많은 데이터를 저장할 공간이 필요하게 되므로 디스크 어레이를 구성하는 디스크의 수는 더욱 증가할 수 밖에 없는 것이 현실이다. 그러나 대용량의 디스크 어레이를 구성함에 따라 디스크 읽기 실패의 확률은 더욱 높아지게 된다. 왜냐하면 하나의 디스크에서 오류 발생 가능한 평균시간을 MTTF(the Mean Time To Failure)라고 한다면, 디스크 어레이를 구성하는 디스크의 수가 n일 경우의 오류 발생 가능한 평균 시간은 단순히 MTTF/n이기 때문이다. 따라서 디스크 어레이를 구성하는 디스크 어레이를 구성하는 디스크의 수가 증가하여도 고신뢰성을 보장할 수 있는 방법은 기존의 RAID가 하나의 디스크 오류에 대해서만 복구할 수 있는 중복성을 갖고 있는데 반해 두 개의 디스크가 오류 발생시에도 복구 가능한 경우가 필요하고 이를 흔히 RAID 레벨 6로 인정한다. RAID 레벨 6은, Patterson 등에 의해서 1994년 6월에 발행된 ACM Computing Surverys, vol. 26의 109∼116페이지에서 RAID: High-Performance, Reliable Secondary Storage라는 제목의 보고서에 개시되어 있다. 고신뢰성을 보장해야 하는 또 다른 이유는 시스템 고장, 정정 불가능한 비트 오류(uncorrectable bit error) 및 주위 환경 등 기타의 사유로 인해 디스크에서의 오류 발생이 더욱 커질 수 있기 때문이다. Patterson 등에 의해 정의된 레벨 6은 리드-솔로몬(reed solomon) 코드를 이용한 것인데 이는 코드의 복잡도로 인하여 유지 비용이 비싸고 부가적인 하드웨어의 추가가 필요한 단점이 있었다.However, as the characteristics of multimedia data as well as the existing document type data are accelerated, a space for storing more data is needed, so that it is a reality that the number of disks constituting the disk array can not be increased any more. However, the probability of disk read failure becomes higher as a large-capacity disk array is constructed. If MTTF (Mean Time To Failure) is the average time that can occur in a single disk, the average time for error occurrence is simply MTTF / n when the number of disks constituting the disk array is n. Therefore, even if the number of disks constituting a disk array is increased, a method of ensuring high reliability can be realized by the conventional RAID having redundancy to recover only one disk error, RAID level 6 is often required. RAID level 6 is described in ACM Computing Surverys, vol. 26, pp. 109-116, a report titled RAID: High-Performance, Reliable Secondary Storage. Another reason to ensure high reliability is that errors on the disk can be more likely to occur due to system failures, uncorrectable bit errors, and other reasons. Level 6, defined by Patterson et al., Uses reed solomon code, which is expensive due to the complexity of the code and requires additional hardware.

한편 두 개의 디스크가 오류 발생시 복구할 수 있는 방법으로서 이차원 패리티 기법과 최근에 연구 발표된 EVENODD 기법 및 중복 행렬(redundancy matrix)을 이용한 기법 등이 있다.On the other hand, there are two-dimensional parity scheme and EVENODD scheme and a redundancy matrix scheme which are recently proposed.

이차원 패리티 기법은, 1988년 12월에 발행된 Computer Science Tech. Report CSD88-477, Univ. of California, Berkeley에서 Coding Techniques for Handling Failures in Large Disk Arrays라는 제목으로 Patterson 등에 의해서 발표된 논문 등에서 언급되어 있다. 상기 이차원 패리티 기법은 RAID 레벨 4의 구조를 확장시킨 것으로 가로 방향 뿐만 아니라 세로 방향으로도 패리티 디스크를 위치시키는 것이다. 그러나 이러한 이차원 패리티 기법은 다음과 같은 두가지의 문제점을 가지고 있다. 첫째는 패리티 디스크가 분산되어 있지 않기 때문에 패리티 디스크의 병목현상을 가져올 수 있고, 이는 시스템 성능저하의 주요 원인이 된다. 둘째는 패리티 디스크 오버헤드(parity disk overhead)가 크다는 것이다.The two-dimensional parity technique is described in Computer Science Tech. Report CSD88-477, Univ. in Patterson et al., entitled " Coding Techniques for Handling Failures in Large Disk Arrays, " The two-dimensional parity scheme extends the structure of the RAID level 4 and places the parity disk not only in the horizontal direction but also in the vertical direction. However, this two-dimensional parity scheme has the following two problems. The first is that the parity disk is not distributed, which can lead to bottleneck of the parity disk, which is a main cause of system performance degradation. The second is that the parity disk overhead is large.

EVENODD 기법은, Blaum 등에 의해서 1995년 2월에 발행된 IEEE Trans. on Computers, vol. 44, no. 2, pp. 192∼202에서 EVENODD: An Efficient Scheme for Tlertating Double Disk Failures in RAID Architectures라는 논문제목으로 발표되었다. 상기 EVENODD 기법의 가장 큰 특징 및 장점은 최적의 패리티 디스크를 사용하는 것이다. 즉, 소수(prime number) m개의 디스크를 데이터 디스크로 사용할 경우 단지 두 개의 패리티 디스크만을 추가적으로 사용한다는 것으로 패리티 디스크 오버헤드가 최적이다. 그러나 EVENODD 기법은 전술한 이차원 패리티 기법과 마찬가지로 병목현상으로 인한 성능 저하가 예측되고 또한 에러정정을 구성하는 크기가 커짐에 따라 에러정정 그룹의 크기에 반비례하는 데이터 손실에 걸리는 평균시간(MTTDL: Mean Time To Data Loss)이 적어지게 된다. EVENODD 기법의 또 하나의 단점은 각 사선 데이터 블록들의 유지에 대한 오버헤드가 존재한다는 것이다. 즉, 각 디스크의 사선 블록들의 데이터 블록들에 대한 쓰기 작업이 발생할 경우 사선 패리티 디스크의 모든 블록들의 값이 변경되므로 이를 모두 갱신(update)해야 한다는 것이 그 오버헤드의 한 예일 수 있다.The EVENODD technique is described by Blaum et al. In IEEE Trans. on Computers, vol. 44, no. 2, pp. In the paper titled EVENODD: An Efficient Scheme for Tlating Double Disk Failures in RAID Architectures, The greatest feature and advantage of the EVENODD technique is that it uses an optimal parity disk. That is, if a prime number m disk is used as a data disk, the parity disk overhead is optimal because only two parity disks are additionally used. However, as with the two-dimensional parity scheme described above, the EVENODD scheme has a problem that the performance degradation due to the bottleneck phenomenon is predicted and the average time (MTTDL: Mean Time To Data Loss. Another disadvantage of the EVENODD scheme is that there is an overhead for maintaining each of the oblique data blocks. That is, when a write operation is performed on data blocks of oblique blocks of each disk, the values of all the blocks of the oblique parity disk are changed, so that it is an example of the overhead to update all the blocks.

EVENODD 기법을 발표한 Blaum et al에 의해 발명되고 특허출원되어 1993년 12월 14자로 발행된(issued) 미국특허번호 제5,271,012호(발명의 명칭: METHOD AND MEANS FOR ENCODING AND REBUILDING DATA CONTENTS OF UP TO TWO UNAVAILABLE DASDS IN AN ARRAY OF DASDS) 및 1994년 9월 27자로 발행된 미국특허번호 제5,351,246호(발명의 명칭: METHOD AND MEANS FOR CODING AND REBUILDING THAT DATA CONTENTS OF UNIVAILABLE DASDS IN ERROR IN THE PRESENCE OF REDUCED NUMBER OF UNIVEAILABLE DASDS IN A DASD ARRAY)에는 사선 패리티(diagonal parity)와 행 패리티(row parity)를 이용하여 디스크 어레이를 인코딩(endcoding)하고 두 개의 디스크에서 오류가 발생하여도 이를 복구하는 내용이 개시되고 있다. 그렇지만 상기 두 특허 제5,271,012호 및 제5,351,246호도 전기한 EVENODD 기법에서의 단점들을 가지고 있다.U.S. Patent No. 5,271,012, entitled " METHOD AND MEANS FOR ENCODING AND REBUILDING DATA CONTENTS OF UP TO TWO ", filed 14 December 1993, invented and patented by Blaum et al. UNAVAILABLE DASDS IN AN ARRAY OF DASDS) and U.S. Patent No. 5,351,246 issued September 27, 1994 (entitled METHOD AND MEANS FOR CODING AND REBUILDING THAT DATA CONTENTS OF UNITEDABLE DASDS IN ERROR IN THE PRESENCE OF REDUCED NUMBER OF DASDS) UNIVEAILABLE DASDS IN A DASD ARRAY has been disclosed to encode a disk array using diagonal parity and row parity, and to recover even if an error occurs in two disks. However, both of these patents 5,271,012 and 5,351,246 have disadvantages in the EVENODD technique.

중복행렬을 이용한 기법은, Chan-Ik Park에 의해서 1995년 11월에 발행된 IEEE Trans. on Parallel and Distributed Systems, vol. 6, no. 11, pp. 1177∼1184에서 Efficient Placement of Parity and Data to Tolerate Two Disk Failures in Disk Array Systems이라는 논문제목으로 발표되었다. 상기 중복 행렬을 이용한 기법은 이차원 패리티 기법 등의 방법들에 내재한 패리티 디스크에 대한 병목 현상에 대한 문제점을 해결하기 위해 패리티 블록을 분산하는 방법으로 N개의 디스크가 주어졌을 때 N*N 행렬의 중복 행렬로 정의하고 이 행렬이 몇 가지 특성을 만족하면 두 개의 디스크에서 오류 발생시에도 데이터 복구를 할 수 있다. 이 기법은 패리티와 데이터 블록을 배치 알고리즘에 의해 분산시킴으로써 다른 기법들에서 문제시되었던 패리티 디스크에 대한 오버헤드에 의해 발생되는 병목 현상을 해결할 수 있는 장점이 있지만 알고리즘의 복잡함과 중복 행렬을 유지하기 위한 오버헤드와 추가 비용이 문제될 수 있다. 또한 확장시에도 다시 알고리즘을 적용하여 배치해야 하는 문제점이 있다.A technique using a redundant matrix is disclosed in IEEE Trans. on Parallel and Distributed Systems, vol. 6, no. 11, pp. 1177-1184, entitled Efficient Placement of Parity and Data to Tolerate Two Disk Failures in Disk Array Systems. In order to solve the bottleneck problem of the parity disk inherent in the methods such as the two-dimensional parity method, the method using the redundant matrix is a method of distributing parity blocks. When N disks are given, If the matrix is defined as a matrix and the matrix meets some characteristics, data can be recovered in the event of an error in two disks. This technique has the advantage of solving the bottleneck caused by the overhead on the parity disk which is problematic in other techniques by distributing the parity and data blocks by the placement algorithm. However, the complexity of the algorithm and the overhead The head and additional cost can be a problem. In addition, there is a problem that the algorithm must be deployed again when expanding.

따라서 본 발명의 목적은 디스크 어레이에서 적어도 두 개의 디스크에서 오류가 발생하여도 복구가 가능하며 패리티 디스크의 병목 현상으로 인한 성능 저하의 문제점을 해결하는 방법 및 그 장치를 제공하는데 있다.It is therefore an object of the present invention to provide a method and apparatus for solving the problem of performance degradation due to a bottleneck of a parity disk, even if an error occurs in at least two disks in a disk array.

본 발명의 다른 목적은 디스크 오류시 복구시간을 줄일 수 있는 방법 및 그 장치를 제공하는데 있다.It is another object of the present invention to provide a method and apparatus for reducing recovery time in the event of a disk error.

본 발명의 또 다른 목적은 데이터 디스크의 내용을 갱신(update)시에 여러번의 디스크 접근으로 인한 성능 저하를 극복할 수 있는 방법 및 그 장치를 제공하는데 있다.It is still another object of the present invention to provide a method and apparatus for overcoming performance degradation due to multiple disk accesses at the time of updating the contents of a data disk.

본 발명의 또 다른 목적은 디스크 에러 복구과정을 동시에 병렬적으로 진행할 수 있는 방법 및 그 장치를 제공하는데 있다.It is still another object of the present invention to provide a method and apparatus for concurrently performing a disk error recovery process.

상기한 목적에 따라, 본 발명은, 외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 방법에 있어서: 소수 N개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*N 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 바로 이전 번째(N-1번째) 디스크의 첫 번째 블록에서 사선방향이 되게 각 디스크에 하나씩 배치시키고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록에 배치시키는 과정과; 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 각각 저장하는 패리티 저장 과정과; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 복구과정;으로 이루어 진다.According to another aspect of the present invention, there is provided a method for restoring parity storage and disk failures in an external storage subsystem, the method comprising the steps of: allocating a small number of N disks and each disk of the disks to (N-1) (N-1) * N matrix, blocks of each row of the matrix are defined as a horizontal parity group, blocks of a recursive configuration in the upper right diagonal direction of the matrix are defined as a diagonal parity group (N-1) -th block of the disk, and the horizontal parity blocks are arranged in the oblique direction on the first block of the immediately preceding (N-1) -th disk, and the oblique parity blocks are arranged in the A process; A parity storing step of performing XOR operation on the data values of each of the horizontal and diagonal parity groups and storing the data values in the horizontal and diagonal parity blocks of the corresponding group; If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And restoring the fail blocks of the two failed disks by repeatedly applying the above process.

또한 본 발명은, 외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 방법에 있어서: N+1(N은 소수)개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*(N+1) 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 마지막 번째(N+1번째) 디스크의 블록을 제외한 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 번째(N+1번째) 디스크의 블록들에 배치시키고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록들에 배치시키는 과정과; 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 각각 저장하는 패리티 저장 과정과; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 복구과정;으로 이루어 진다.(N is a prime number) disks and each disk of the disks is divided into (N-1) block units. The method of claim 1, (N + 1) th row, and blocks of each row of the matrix are defined as a horizontal parity group, and blocks of the last (N + 1) th disk are excluded (N + 1) -th disk, blocks of sloping parity are defined as (N-1) -th block of the disk, and blocks of the cyclic configuration are defined as a sloped parity group. 1) th blocks; A parity storing step of performing XOR operation on the data values of each of the horizontal and diagonal parity groups and storing the data values in the horizontal and diagonal parity blocks of the corresponding group; If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And restoring the fail blocks of the two failed disks by repeatedly applying the above process.

도 1은 본 발명의 일 실시예에 따라 DH 기법으로 구현된 디스크 어레이 블록 구성도,1 is a block diagram of a disk array block implemented by a DH technique according to an embodiment of the present invention;

도 2는 본 발명의 다른 실시예에 따라 DH2 기법으로 구현된 디스크 어레이 블록 구성도,2 is a block diagram of a disk array block implemented by the DH2 technique according to another embodiment of the present invention;

도 3은 DH 기법에 따른 수평 및 사선 패리티 그룹과 수평 및 사선 패리티 블록을 설명하기 위한 예시도,3 is an exemplary diagram for explaining horizontal and diagonal parity groups and horizontal and diagonal parity blocks according to the DH scheme,

도 4는 DH2 기법에 따른 수평 및 사선 패리티 그룹과 수평 및 사선 패리티 블록을 설명하기 위한 예시도,4 is an exemplary diagram for explaining horizontal and diagonal parity groups and horizontal and diagonal parity blocks according to the DH2 technique,

도 5는 디스크의 갯수 N이 7인 경우 DH 기법의 수평 패리티 그룹 및 수평 패리티 블록들의 배치를 나타낸 도면,FIG. 5 is a diagram illustrating the arrangement of horizontal parity groups and horizontal parity blocks of the DH scheme when the number N of disks is 7;

도 6은 디스크의 갯수 N이 7인 경우 DH 기법의 사선 패리티 그룹 및 사선 패리티 블록들의 배치를 나타낸 도면,6 is a diagram illustrating the arrangement of a diagonal parity group and a diagonal parity block of the DH scheme when the number N of disks is 7;

도 7은 디스크의 갯수 N이 7인 경우 DH 기법에서의 패리티 및 데이터의 배치를 나타낸 도면,FIG. 7 is a diagram illustrating parity and data arrangement in the DH scheme when the number N of disks is 7; FIG.

도 8은 디스크의 갯수 N이 7인 경우 DH2 기법의 수평 패리티 그룹 및 수평 패리티 블록들의 배치를 나타낸 도면,8 is a diagram illustrating the arrangement of horizontal parity groups and horizontal parity blocks of the DH2 scheme when the number N of disks is 7,

도 9는 디스크의 갯수 N이 7인 경우 DH2 기법의 사선 패리티 그룹 및 사선 패리티 블록들의 배치를 나타낸 도면,9 is a diagram illustrating the arrangement of a diagonal parity group and diagonal parity blocks of the DH2 scheme when the number N of disks is 7;

도 10은 디스크의 갯수 N이 7인 경우 DH2 기법에서의 패리티 및 데이터의 배치를 나타낸 도면,10 is a diagram showing parity and data arrangement in the DH2 scheme when the number N of disks is 7;

도 11은 본 발명의 일 실시예인 DH 기법에 따른 패리티 저장 알고리즘의 흐름도,11 is a flowchart of a parity storage algorithm according to the DH scheme, which is an embodiment of the present invention.

도 12 내지 도 14는 디스크의 갯수 N이 7인 경우 DH 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도,FIGS. 12 to 14 are diagrams for explaining a parity storing process according to the DH scheme when the number N of disks is 7,

도 15는 본 발명의 다른 실시예인 DH2 기법에 따른 패리티 저장 알고리즘의 흐름도,15 is a flowchart of a parity storing algorithm according to the DH2 technique, which is another embodiment of the present invention;

도 16 내지 도 18은 디스크의 갯수 N이 7인 경우 DH2 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도,16 to 18 are diagrams for explaining a parity storing process according to the DH2 scheme when the number N of disks is 7,

도 19는 본 발명의 실시예에 따라 두 개의 디스크가 페일시 DH 기법의 디코딩 알고리즘 흐름도,FIG. 19 is a flowchart of a decoding algorithm of a DH scheme when two disks fail according to an embodiment of the present invention; FIG.

도 20a 내지 도 20g는 두 개의 디스크 페일시 DH 기법에 따른 데이터 복원과정을 설명하기 위한 예시도,FIGS. 20A to 20G are diagrams for explaining a data restoration process according to the DH scheme when two disk failures are generated; FIG.

도 21은 본 발명의 다른 실시예에 따른 DH2 기법의 디코딩 알고리즘 흐름도,21 is a flowchart of a decoding algorithm of the DH2 technique according to another embodiment of the present invention,

도 22a 내지 도 22g는 두 개의 디스크 페일시 DH2 기법에 따른 데이터 복원과정을 설명하기 위한 예시도,FIGS. 22A to 22G are diagrams for explaining a data restoration process according to the DH2 scheme when two disk failures are generated; FIG.

도 23은 본 발명의 실시예에 따른 에러 복구 방법의 병렬성을 설명하기 위한 예시도,23 is an exemplary diagram for explaining the parallelism of the error recovery method according to the embodiment of the present invention,

도 24는 각 기법에 대한 MTTDL비교 그래프,Figure 24 is a graph of MTTDL comparisons for each technique,

도 25는 EVENODD 기법에서 사선 S 블록의 갱신시 접근해야 할 패리티 블록들(N=7일 때)을 보여주는 도면,FIG. 25 is a diagram showing parity blocks (when N = 7) to be accessed when an oblique line S block is updated in the EVENODD scheme,

도 26은 DH 기법에서 데이터 블록 갱신시 접근해야 할 패리티 블록들(N=7일 때)을 보여주는 도면,26 is a diagram showing parity blocks (when N = 7) to be accessed in data block updating in the DH scheme,

도 27은 각 기법에 대한 그룹 사이즈 비교 그래프.Figure 27 is a group size comparison graph for each technique.

본 발명의 실시예에 따른 DH 기법은 두 개의 디스크가 오류 발생시에도 간단한 XOR(eXclusive OR) 연산만으로 복구 가능한 효율적인 패리티 배치 기법이며 패리티를 분산 배치하여 병목 현상을 제거함으로써 이에 따른 디스크 어레이의 성능 향상을 도모한다. 상기 DH 기법에서 D와 H는 사선 패리티(Diagonal parity)와 수평 패리티(horizontal parity)의 영어 머릿글자에서 가져온 것임을 이해하여야 한다.The DH scheme according to the embodiment of the present invention is an efficient parity placement technique that can recover only two XOR (eXclusive OR) operations even when two disks fail, and eliminates the bottleneck by distributing parities, thereby improving the performance of the disk array . It should be understood that in the DH scheme, D and H are derived from the English header of diagonal parity and horizontal parity.

이하 본 발명의 바람직한 실시예들을 첨부한 도면을 참조하여 상세히 설명한다. 도면들중 동일한 부품 및 동일한 구성요소들은 가능한한 어느 곳에서든지 동일한 참조번호 또는 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. It is to be noted that the same components and the same components as those in the drawings are denoted by the same reference numerals or the same reference numerals as possible. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail.

하기 본 발명의 설명에서는, 먼저 본 발명의 일시예인 DH 기법이 도 1, 도 3, 도 5 내지 도 7, 도 11 내지 도 14, 도 19, 도 20a∼도 20g가 참조되어 설명되어질 것이고 그 다음으로는 본 발명의 다른 실시예인 DH2 기법이 도 2, 도 4, 도 8 내지 도 10, 도 15 내지 도 18, 도 21, 도 22a∼도 22g가 참조되어 설명되어질 것이다.In the following description of the present invention, a DH scheme, which is a temporary example of the present invention, will be described with reference to Figs. 1, 3, 5 to 7, 11 to 14, 19, 20A to 20G, The DH2 technique, which is another embodiment of the present invention, will be described with reference to Figs. 2, 4, 8 to 10, 15 to 18, 21, and 22a to 22g.

먼저 본 발명의 일시예인 DH 기법을 도 1, 도 3, 도 5 내지 도 7, 도 11 내지 도 14, 도 19, 도 20a∼도 20g를 참조하여 설명한다.First, the DH technique, which is a temporary example of the present invention, will be described with reference to Figs. 1, 3, 5 to 7, 11 to 14, 19, and 20A to 20G.

DH 기법DH technique

도 1은 본 발명의 일 실시예에 따라 DH 기법으로 구현된 디스크 어레이의 블록 구성도이다. 도 1을 참조하면, 호스트 컴퓨터(host computer) 2는 디스크 어레이의 컨트롤러 4에 I/O 요구(Input/Output request)를 보내고 데이터를 처리한다. 컨트롤러 4는 디스크 어레이의 전반적인 처리, 관리 및 유지하는 것으로 DH 기법의 인코딩 및 디코딩 알고리즘을 구현한 유닛(unit)과 XOR 연산을 주로 할 수 있는 프로세서를 포함한다. N(N=소수)개로 구성되는 디스크들 8-0∼8-(n-1)의 각 디스크에는 본 발명의 실시예에 따른 DH 기법의 구조에 의거한 데이터 블록 및 패리티 블록이 구성되어 있다. 컨트롤러 4와 디스크들 8-0∼8-(n-1) 사이에 각각 위치한 버퍼(buffer)들 6-0∼6-(n-1)은 컨트롤러 4에서의 디스크 접근시간을 줄이기 위해 구비된 것으로, 고성능의 버퍼로 구현되어 디스크 어레이의 시스템 성능을 향상시킨다. 호스트 컴퓨터 2와 컨트롤러 4간에는 시스템 버스 10으로 접속되고, 컨트롤러 4와 버퍼들 6-0∼6-(n-1) 사이와 디스크들 8-0∼8-(n-1)와 버퍼들 6-0∼6-(n-1)간에는 고속의 입출력을 위하여 각각의 I/O 버스들 12-0∼12-(n-1)로 직접 접속된다.1 is a block diagram of a disk array implemented by the DH technique according to an embodiment of the present invention. Referring to FIG. 1, a host computer 2 sends an I / O request to a controller 4 of a disk array and processes data. The controller 4 includes a unit that implements an encoding and decoding algorithm of the DH technique, and a processor that can mainly perform an XOR operation, for overall processing, management, and maintenance of the disk array. Data blocks and parity blocks based on the structure of the DH scheme according to the embodiment of the present invention are configured in each disk of the disks 8-0 to 8- (n-1) composed of N (N = prime) numbers. Buffers 6-0 to 6- (n-1) located between the controller 4 and the disks 8-0 to 8- (n-1) are provided to reduce the disk access time in the controller 4 , And is implemented as a high-performance buffer to improve the system performance of the disk array. The host computer 2 and the controller 4 are connected by the system bus 10 and are connected between the controller 4 and the buffers 6-0 to 6- (n-1), the disks 8-0 to 8- (n-1) 0 to 6 - (n-1) are directly connected to the respective I / O buses 12-0 to 12- (n-1) for high-speed input / output.

도 3은 DH 기법에 따른 수평 및 사선 패리티 그룹과 수평 및 사선 패리티 블록을 설명하기 위한 예시도이고, 도 4는 DH2 기법에 따른 수평 및 사선 패리티 그룹과 수평 및 사선 패리티 블록을 설명하기 위한 예시도이다.FIG. 3 is an exemplary view for explaining horizontal and diagonal parity groups and horizontal and diagonal parity blocks according to the DH scheme, FIG. 4 is an exemplary diagram for explaining horizontal and diagonal parity groups and horizontal and diagonal parity blocks according to the DH2 technique to be.

도 5는 디스크의 갯수 N이 7인 경우 DH 기법의 수평 패리티 그룹 및 수평 패리티 블록들의 배치를 나타낸 도면이고, 도 6은 디스크의 갯수 N이 7인 경우 DH 기법의 사선 패리티 그룹 및 사선 패리티 블록들의 배치를 나타낸 도면이며, 도 7은 디스크의 갯수 N이 7인 경우 DH 기법에서의 패리티 및 데이터의 배치를 행렬형태로 나타낸 도면이다.FIG. 5 is a diagram showing the arrangement of horizontal parity groups and horizontal parity blocks of the DH scheme when the number N of disks is 7. FIG. 6 is a diagram illustrating the arrangement of diagonal parity groups and diagonal parity blocks of the DH scheme, FIG. 7 is a diagram showing the arrangement of parity and data in the DH scheme in the form of a matrix when the number N of disks is 7. FIG.

도 11은 본 발명의 일 실시예에 따른 DH 기법에 따른 패리티 저장 알고리즘의 흐름도이다. 그리고 도 12 내지 도 14는 디스크의 갯수 N이 7인 경우 DH 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도이다.11 is a flowchart of a parity storage algorithm according to the DH scheme according to an embodiment of the present invention. And FIGS. 12 to 14 are diagrams for explaining a parity storing process according to the DH scheme when the number N of disks is 7.

먼저 본 발명의 일 실시예에서는 도 3, 도 5 내지 도 7을 참조하여 DH 기법의 구성(정의 1), 수평 패리티(horizontal parity) 블록 및 그룹(정의 2), 및 사선 패리티(diogonal parity) 블록 및 그룹(정의 3)을 정의하고, 상기 정의들에 의거한 DH 기법의 데이터 및 배치를 설명한다.1, a horizontal parity block and a group (definition 2), and a diagonal parity block (definition 2) of a DH scheme are described with reference to FIGS. 3 and 5 to 7 in an embodiment of the present invention. And a group (Definition 3), and describes the data and the arrangement of the DH scheme based on the above definitions.

정의 1: DH 기법의 구성Definition 1: Configuration of DH technique

소수 N개의 디스크들로 이루어진 디스크 어레이를 구성할 경우 각 디스크는 (N-1)개의 논리적인 블록으로 이루어지고 이를 하기와 같은 (N-1)*N 행렬로 정의된다.In the case of constructing a disk array made up of a small number N of disks, each disk is made up of (N-1) logical blocks and is defined as an (N-1) * N matrix as follows.

a(i,j) a (i, j)

여기서, i의 범위는 0≤i≤N-2이고 j는 0≤j≤N-1이다. 하기 표 1은 상기 정의된 행렬 a(i,j)을 표현한 것이다.Here, the range of i is 0? I? N-2 and j is 0? J? N-1. Table 1 below represents the matrix a (i, j) defined above.

a(0,0) a (0,0) a(0,1) a (0,1) ... a(0,j) a (0, j) ... a(0,N-1) a (0, N-1) a(1,0) a (1,0) a(1,1) a (1,1) ... a(1,j) a (1, j) ... a(i,N-1) a (i, N-1) a(2,0) a (2,0) a(2,1) a (2,1) ... a(2,j) a (2, j) ... a(i,N-1) a (i, N-1) ... ... ... ... ... ... a(i,0) a (i, 0) a(i,1) a (i, 1) ... a(i,j) a (i, j) ... a(i,N-1) a (i, N-1) ... ... ... ... ... ... a(N-2,0) a (N-2,0) a(N-2,1) a (N-2,1) ... a(N-2,j) a (N-2, j) ... a(N-2,N-1) a (N-2, N-1)

행렬 a(i,j)는 디스크 j의 논리적인 블록 i의 값을 나타내는 것으로 본 발명에서는 각각의 논리적인 블록들을 이진수로 표현하여 이해할 것이다. 이러한 (N-1)*N의 행렬 a(i,j)이 주어졌을 경우에 (N-1)번째 행, 즉 각 디스크의 마지막 블록들 a(N-2,0),a(N-2,1),…, a(N-2,N-1)은 사선 패리티를 유지하는데 사용되는 사선 패리티 블록들이고, (N-1)번째 디스크의 첫 번째 블록 a(0,N-2)부터 첫 번째 디스크의 마지막 블록까지 a(N-2,0)즉, a(0,N-2),a(1,N-3),a(2,N-4),,a(N-3,1), a(N-2,0)는 각 행의 패리티 값을 저장하는 수평 패리티 블록으로 사용되며 그 이외의 블록들은 데이터가 저장되는 데이터 블록들이다.The matrix a (i, j) represents the value of the logical block i of the disk j. In the present invention, each logical block is represented by a binary number. The (N-1) * N matrix of a (i, j) is given to the case (N-1) th row, i.e., the last block of each disk a (N-2,0), a (N-2 , 1), ... , A (N-2, N -1) is deulyigo diagonal parity blocks are used to maintain the diagonal parity, (N-1) th first block is a (0, N-2) last block of the first disk from the disk to a (N-2,0) That is, a (0, N-2 ), a (1, N-3), a (2, N-4), ... , a (N-3,1) and a (N-2,0) are used as horizontal parity blocks for storing the parity values of the respective rows, and the other blocks are data blocks in which data is stored.

정의2: DH 기법에서의 수평 패리티(horizontal parity) 그룹 및 블록Definition 2: Horizontal parity group and block in DH scheme

정의 1에서 정의된 디스크 어레이를 나타내는 행렬 a(i,j)에서 각 행들을 수평 패리티의 에러 정정 그룹(이하 수평 패리티 그룹으로 약칭한다)으로 정의하고, 첫 번째 디스크의 마지막 블록부터 오른쪽 위쪽으로 (N-1)번째 디스크의 첫 번째 블록까지의 블록들(이하 수평 패리티 블록이라 칭함)에 그 행의 나머지 블록들의 XOR값을 저장하게 된다. 즉, 행렬 a(i,N-2-i)에 해당하는 블록들에 각 수평 패리티 그룹의 패리티 값이 저장된다. 여기서 i의 범위는 0≤i≤N-2이다.In the matrix a (i, j) representing the disk array defined in Definition 1, each row is defined as an error correction group of horizontal parity (hereinafter abbreviated as a horizontal parity group), and from the last block of the first disk to the upper right (Hereinafter referred to as a horizontal parity block) up to the first block of the (N-1) -th disk. That is, the parity values of each horizontal parity group are stored in blocks corresponding to the matrix a (i, N-2-i) . Here, the range of i is 0? I? N-2.

도 3에는 5개의 디스크들(N=5) d0∼d4로 구현된 디스크 어레이를 보여주는 것으로, 그에 따라 디스크들 d0∼d4 각각은 4개의 논리적인 블록들(N-1=4) b0∼b3, b4∼b7,…로 구성된다. 4개의 논리적인 블록들 b0∼b3 각각은 해당 번째의 수평 패리티 그룹이 되는데, 도 3에서 실선으로 표시한 참조번호 20은 두 번째 블록 b1의 수평 패리티 그룹을 일예로 표시하고 있다. 도 3에서 빗금으로 표시한 블록들은 각 수평 패리티 그룹의 패리티 값을 저장하는 수평 패리티 블록들을 의미하는데, 상기 수평 패리티 블록은 행렬 a(i,N-2-i)에 해당하는 블록이다. 즉, N=5이므로, a(3,0),a(2,1),a(1,2),a(0,3)에 해당하는 블록이 수평 패리티 블록임을 알 수 있다.FIG. 3 shows a disk array implemented with five disks (N = 5) d0 to d4, whereby each of the disks d0 to d4 includes four logical blocks (N-1 = 4) b0 to b3, b4 to b7, ... . Each of the four logical blocks b0 to b3 is a corresponding horizontal parity group. In FIG. 3, reference numeral 20 indicated by a solid line represents a horizontal parity group of the second block b1 as an example. In FIG. 3, hatched blocks denote horizontal parity blocks storing parity values of each horizontal parity group, and the horizontal parity blocks are blocks corresponding to a matrix a (i, N-2-i) . That is, since N = 5, it can be seen that a block corresponding to a (3,0), a (2,1), a (1,2), and a (0,3) is a horizontal parity block.

도 5는 N=7인 경우의 DH 기법에서 각 수평 패리티 그룹을 번호(0,1,2,3,4,5)로 나타낸 것으로, 빗금으로 표시한 블록 H0∼H5는 각 수평 패리티 그룹의 패리티 블록이 된다.FIG. 5 shows each horizontal parity group in the DH scheme in the case of N = 7 in numbers (0, 1, 2, 3, 4, 5). Blocks H0 to H5 indicated by hatched lines are parity Block.

정의 3: DH 기법에서의 사선 패리티(diagonal parity) 그룹 및 블록Definition 3: Diagonal parity in the DH scheme Groups and blocks

정의 1의 (N-1)*N 행렬 a(i,j)에서 (N-1)번째 행은 각각의 사선 패리티 값을 저장하는 블록들(이하 사선 패리티 블록이라 칭함)이다. 사선 패리티의 각 에러 정정 그룹(이하 사선 패리티 그룹으로 약칭함)은 수평패리티 블록들이 위치하는 것처럼 상기 사선 패리티 블록의 오른쪽 위의 사선 방향으로 각 그룹이 순환적으로 구성된다. 사선 패리티 그룹들중 첫 번째 사선 패리티 그룹은 첫 번째 디스크 마지막 블록의 오른쪽 위쪽 사선방향의 그룹들이다. 사선 패리티 블록들 즉, 행렬 a(N-2,j)에 속하는 블록들에는 각 사선 패리티 그룹의 패리티 값이 저장된다. 여기서, j의 범위는 0≤j≤N-1 이다.The (N-1) th row to the (N-1) * N matrix a (i, j) of Definition 1 are blocks (hereinafter referred to as oblique parity blocks) for storing respective diagonal parity values. Each group of error correction groups (hereinafter abbreviated as diagonal parity groups) of diagonal parity is configured cyclically in the oblique direction to the upper right of the oblique parity block as if the horizontal parity blocks are located. The first diagonal parity group among the diagonal parity groups are groups in the upper right diagonal direction of the last block of the first disk. Parity values of each oblique parity group are stored in oblique parity blocks, i.e., blocks belonging to the matrix a (N-2, j) . Here, the range of j is 0? J? N-1.

도 3에서, 점선으로 표시한 참조번호 22는 두 번째 사선 패리티 그룹을 일예로 표시하고 있다. 그리고 4(=N-1)번째 행(i=3)에 위치한 검은 점들로 표시한 블록들은 각 사선 패리티 그룹의 패리티 값을 저장하는 사선 패리티 블록을 의미한다. 그리고, 도 6은 N=7인 경우의 각 사선 패리티 그룹을 번호로 나타낸 것으로, 검은 점들로 표시한 블록 D0∼D6은 각 사선 패리티 그룹의 패리티 블록이다.In FIG. 3, reference numeral 22 indicated by a dotted line indicates an example of a second diagonal parity group. Blocks indicated by black dots located in 4 (= N-1) th rows (i = 3) are diagonal parity blocks storing parity values of each diagonal parity group. FIG. 6 shows each of the slanting parity groups in the case of N = 7, and blocks D0 to D6 indicated by black dots are parity blocks of each slanting parity group.

정의 2와 정의 3에서 각각 정의된 수평 패리티 블록 및 사선 패리티 블록을 제외한 나머지 블록들이 실제 데이터가 저장되는 데이터 블록들이다. 도 7에서는 디스크의 갯수 N이 7인 경우 DH 기법에서의 패리티 및 데이터의 배치를 행렬의 형태로 나타낸 도면이다. 도 7에서, H0∼H6은 각 수평 패리티 그룹(0∼6번)의 수평 패리티 블록을, D0∼D6은 사선 패리티 그룹(0∼6번)의 사선 패리티 블록을 나타낸다. 각각의 데이터 블록은 i,j형태로 표현되어 있는 바 i는 수평 패리티 그룹을, j는 사선 패리티 그룹을 의미한다.The remaining blocks excluding the horizontal parity block and the diagonal parity block defined in Definition 2 and Definition 3 are data blocks in which actual data is stored. FIG. 7 is a diagram illustrating parity and data arrangement in the DH scheme in the form of a matrix when the number N of disks is 7. In FIG. 7, H0 to H6 denote horizontal parity blocks of horizontal parity groups (0 to 6), and D0 to D6 denote diagonal parity blocks of diagonal parity groups (0 to 6). Each data block is represented by i, j, where i denotes a horizontal parity group and j denotes a diagonal parity group.

DH 기법에 따른 패리티 저장 알고리즘은 XOR연산을 통해 각 패리티 그룹에서 데이터 블록들의 패리티 값을 구하는 방법으로서, 도 11은 본 발명의 일 실시예에 따른 DH 기법의 패리티 저장 알고리즘의 흐름도이다. 도 11의 100단계와 같이 (N-1)*N 디스크 어레이가 구성되어 있을 때 도 1의 컨트롤러 4는 도 11의 110단계 및 120단계를 수행하여 수평 패리티 값 및 사선 패리티 값을 구한다. 먼저 110단계에서는 각 수평 패리티 그룹 0∼(N-3)을 이용하여 수평 패리티 블록을 인코딩(encoding)한다. 더욱 구체적으로 설명하면, 컨트롤러 4는 수평 패리티 그룹들 0∼(N-3)을 이용하여 해당 수평 패리티 그룹의 수평 패리티 값을 구한 후 해당 수평 패리티 블록에 각각 저장한다. 해당 수평 패리티 블록에 저장되는 수평 패리티 값을 구하는 식은 하기 수학식 1과 같다.The parity storing algorithm according to the DH method is a method of obtaining a parity value of data blocks in each parity group through an XOR operation. FIG. 11 is a flowchart of a parity storing algorithm of the DH method according to an embodiment of the present invention. When the (N-1) * N disk array is configured as shown in step 100 of FIG. 11, the controller 4 of FIG. 1 performs steps 110 and 120 of FIG. 11 to obtain a horizontal parity value and a diagonal parity value. First, in step 110, a horizontal parity block is encoded using each horizontal parity group 0 to (N-3). More specifically, the controller 4 calculates the horizontal parity values of the corresponding horizontal parity group using the horizontal parity groups 0 to (N-3), and stores them in the corresponding horizontal parity blocks. The horizontal parity value stored in the horizontal parity block is obtained by Equation (1).

110단계 후 컨트롤러 4는 각 120단계에서 사선 패리티 그룹 0∼(N-1)을 이용하여 사선 패리티 블록을 인코딩한다. 더욱 구체적으로 설명하면, 컨트롤러 4는 사선 패리티 그룹들 0∼(N-1)을 이용하여 해당 사선 패리티 그룹의 사선 패리티 값을 구한 후 해당 사선 패리티 블록에 각각 저장한다. 해당 사선 패리티 블록에 저장되는 사선 패리티 값을 구하는 식은 하기 수학식 2와 같다.After step 110, the controller 4 encodes the oblique parity block using the diagonal parity groups 0 to (N-1) in step 120, respectively. More specifically, the controller 4 calculates diagonal parity values of the oblique parity groups using the oblique parity groups 0 to (N-1), and stores them in the corresponding oblique parity blocks. The diagonal parity value stored in the corresponding slanting parity block is obtained by Equation (2).

상기 수학식 1 및 수학식 2에 의해 실제의 수평 패리티 값 및 사선 패리티 값을 계산하는 일 예를 도 12 내지 도 14를 참조하여 설명한다. 도 12 내지 도 14는 디스크의 갯수 N이 7인 경우 DH 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도이다.An example of calculating an actual horizontal parity value and a diagonal parity value using Equations (1) and (2) will be described with reference to FIG. 12 to FIG. FIGS. 12 to 14 are diagrams for explaining a parity storing process according to the DH scheme when the number N of disks is 7; FIG.

N=7인 경우 DH 기법에 따른 패리티 저장 방법If N = 7, parity storage method according to DH scheme

하기 표 2에 나타낸 행렬은 일곱 개의 디스크, 즉 N=7인 경우의 DH 기법의 디스크 어레이를 나타내는 행렬을 보여 주고 있으며, 각각의 디스크에서 블록들은 인코딩 및 디코딩에서 사용될 행렬 번호가 주어져 있다.The matrix shown in Table 2 below shows a matrix representing a disk array of the DH scheme for seven disks, i.e., N = 7, where the blocks in each disk are given matrix numbers to be used in encoding and decoding.

a(0,0) a (0,0) a(0,1) a (0,1) a(0,2) a (0,2) a(0,3) a (0, 3) a(0,4) a (0,4) a(0,5) a (0,5) a(0,6) a (0,6) a(1,0) a (1,0) a(1,1) a (1,1) a(1,2) a (1,2) a(1,3) a (1, 3) a(1,4) a (1, 4) a(1,5) a (1,5) a(1,6) a (1,6) a(2,0) a (2,0) a(2,1) a (2,1) a(2,2) a (2,2) a(2,3) a (2,3) a(2,4) a (2,4) a(2,5) a (2,5) a(2,6) a (2,6) a(3,0) a (3,0) a(3,1) a (3, 1) a(3,2) a (3,2) a(3,3) a (3, 3) a(3,4) a (3,4) a(3,5) a (3,5) a(3,6) a (3,6) a(4,0) a (4,0) a(4,1) a (4,1) a(4,2) a (4,2) a(4,3) a (4,3) a(4,4) a (4, 4) a(4,5) a (4,5) a(4,6) a (4,6) a(5,0) a (5,0) a(5,1) a (5, 1) a(5,2) a (5,2) a(5,3) a (5,3) a(5,4) a (5,4) a(5,5) a (5, 5) a(5,6) a (5,6)

도 12는 상기 표 2와 같이 표현되는 행렬에서 각 데이터 블록에 이진수인 임의의 데이터가 저장되어 있는 상태를 나타낸 것으로, 빗금으로 표시된 빈 블록들에는 수평 패리티 값들이, 검은 점들로 표시한 빈 블록들에는 사선 패리티 값들이 수학식 1 및 수학식 2에 의거한 각 그룹별 XOR 연산 후 저장될 것이다.12 shows a state where arbitrary data of binary numbers are stored in each data block in a matrix expressed by the table 2. The horizontal parity values are displayed in the empty blocks indicated by hatching, The diagonal parity values will be stored after XOR calculation for each group based on Equations (1) and (2).

먼저 하기에서는 수학식 1을 이용하여 각 수평 패리티 블록(즉, 행렬 a(0,5),a(1,4),a(2,3),a(3,2),a(4,1))의 수평 패리티 값을 구하는 과정을 보여주고 있다.In the following first the horizontal parity blocks using Equation 1 (i.e., the matrix a (0,5), a (1,4 ), a (2,3), a (3,2), a (4,1 ) ) Of the horizontal parity value.

a(0,5)= a(0,0) a(0,1) a(0,2) a(0,3) a(0,4) a(0,6) a (0,5) = a (0,0) a (0,1) a (0,2) a (0, 3) a (0,4) a (0,6)

= 101100 = 1= 1 0 One One 0 0 = 1

a(1,4)= a(1,0) a(1,1) a(1,2) a(1,3) a(1,5) a(1,6) a (1, 4) = a (1, 0) a (1,1) a (1,2) a (1, 3) a (1,5) a (1,6)

= 011001 = 1= 0 One One 0 0 1 = 1

a(2,3)= a(2,0) a(2,1) a(2,2) a(2,4) a(2,5) a(2,6) a (2,3) = a (2,0) a (2,1) a (2,2) a (2,4) a (2,5) a (2,6)

= 111000 = 1= 1 One One 0 0 0 = 1

a(3,2)= a(3,0) a(3,1) a(3,3) a(3,4) a(3,5) a(3,6) a (3, 2) = a (3, 0) a (3, 1) a (3, 3) a (3,4) a (3,5) a (3,6)

= 001010 = 0= 0 0 One 0 One 0 = 0

a(4,1)= a(4,0) a(4,2) a(4,3) a(4,4) a(4,5) a(4,6) a (4, 1) = a (4, 0 ) a (4,2) a (4,3) a (4, 4) a (4,5) a (4,6)

= 001011 = 1= 0 0 One 0 One 1 = 1

도 13에서는 상기 수학식 1에 의거해 구한 상기 수평 패리티 값을 구한 후에 각각의 수평 패리티 블록 a(0,5),a(1,4),a(2,3),a(3,2),a(4,1)에 저장한 모습을 보여주고 있다. 행렬 a(0,5)의 수평 패리티 블록에는 1, 행렬 a(1,4)의 수평 패리티 블록에는 1, 행렬 a(2,3)의 수평 패리티 블록에는 1, 행렬 a(3,2)의 수평 패리티 블록에는 0, 행렬 a(4,1)의 수평 패리티 블록에는 1 의 수평 패리티값들이 각각 저장되어 있다.In FIG. 13, the horizontal parity values a (0,5), a (1,4), a (2,3), a (3,2) , and a (4,1) , respectively. Of the matrix a (0,5) horizontal parity block 1, the matrix a (1,4) horizontal parity block 1, the matrix a (2,3) horizontal parity block 1, the matrix a (3,2) of the 0 is stored in the horizontal parity block, and 1 is stored in the horizontal parity block of the matrix a (4, 1) .

하기에서는 전기한 수학식 2를 사용하여 각 사선 패리티 블록(행렬 a(5,0),a(5,1),a(5,2),a(5,3),a(5,4),a(5,5))의 사선 패리티 값을 구하는 과정을 보여준다. (5,0), a (5,1), a (5,2), a (5,3), and a (5,4) using the equation (2 ) , a (5, 5) ).

a(5,0)= a(4,1) a(3,2) a(2,3) a(1,4) a(0,5) a (5, 0 ) = a (4, 1) a (3,2) a (2,3) a (1, 4) a (0,5)

= 10111 = 0= 1 0 One One 1 = 0

a(5,1)= a(4,2) a(3,3) a(2,4) a(1,5) a(0,6) a (5,1) = a (4,2) a (3, 3) a (2,4) a (1,5) a (0,6)

= 01000 = 1= 0 One 0 0 0 = 1

a(5,2)= a(4,3) a(3,4) a(2,5) a(1,6) a(0,0) a (5,2) = a (4,3) a (3,4) a (2,5) a (1,6) a (0,0)

= 10011 = 1= 1 0 0 One 1 = 1

a(5,3)= a(4,4) a(3,5) a(2,6) a(1,0) a(0,1) a (5,3) = a (4,4) a (3,5) a (2,6) a (1,0) a (0,1)

= 01000 = 1= 0 One 0 0 0 = 1

a(5,4)= a(4,5) a(3,6) a(2,0) a(1,1) a(0,2) a (5, 4) = a (4, 5) a (3,6) a (2,0) a (1,1) a (0,2)

= 10111 = 0= 1 0 One One 1 = 0

a(5,5)= a(4,6) a(3,0) a(2,1) a(1,2) a(0,3) a (5, 5) = a (4, 6) a (3,0) a (2,1) a (1,2) a (0, 3)

= 10111 = 1= 1 0 One One 1 = 1

a(5,6)= a(4,0) a(3,1) a(2,2) a(1,3) a(0,4) a (5,6) = a (4,0) a (3, 1) a (2,2) a (1, 3) a (0,4)

= 00100 = 1= 0 0 One 0 0 = 1

도 14에서는 상기한 과정을 거쳐 수평 및 사선 패리티 값을 구한 후에 각각의 수평 및 사선 패리티 블록에 저장한 모습을 보여주고 있다. 즉, 도 14에서는 N=7인 경우 본 발명의 실시예에 따른 패리티 및 데이터 배치의 한 예를 나타낸다.In FIG. 14, the horizontal and the diagonal parity values are obtained through the above process, and then stored in the respective horizontal and diagonal parity blocks. That is, FIG. 14 shows an example of parity and data arrangement according to the embodiment of the present invention when N = 7.

다음으로 본 발명의 실시예에 따른 DH 기법의 디코딩 방법, 즉 디스크 오류 발생시 해당 디스크의 데이터 복구 방법에 대해 설명한다.Next, a method of decoding a DH scheme according to an embodiment of the present invention, that is, a method of recovering data on a disk in the event of a disk error, will be described.

DH 기법에 따른 해당 디스크의 데이터 복구방법의 기본 사상은 하나의 디스크가 오류 발생시에는 수평 패리티나 사선 패리티를 이용하여 쉽게 복구하고, 두개의 디스크에서 오류 발생시에는 사선 패리티와 수평 패리티를 반복적으로 적용하여 두 디스크의 모든 블록들을 복구한다는 것이다. 소수 N개로 이루어진 디스크 어레이에서 수평 패리티 그룹 중 한 블록만 오류시에는 나머지 블록들을 XOR하여 복구할 수 있다. 즉, 수평 패리티 그룹을 구성하는 N블록 중(N-1)개의 블록들이 온전할 경우 오류 발생한 디스크의 블록을 복구할 수 있다.The basic idea of the data recovery method of the corresponding disk according to the DH method is as follows. When one disk fails, it can be easily recovered by using horizontal parity or diagonal parity. When an error occurs in two disks, the oblique parity and horizontal parity are repeatedly applied And recover all the blocks on both disks. In a disk array made up of a few N blocks, when only one block in a horizontal parity group is erroneous, the remaining blocks can be recovered by XORing. That is, when (N-1) blocks of the N blocks constituting the horizontal parity group are complete, a block of the erroneous disk can be recovered.

사선 패리티 그룹은 (N-1)개의 블록으로 구성되는데 이들은 서로 다른 디스크에 분산되어 있다. 이러한 분산 구조에 의해 N개의 디스크중 두 개에 오류 발생하여도 사선 패리티 그룹 중 한 블록만 오류가 발생한 것이 적어도 하나 이상 존재한다. 따라서 이를 복구한다면 그 블록을 포함하는 수평 패리티그룹의 N 블록중 페일난 나머지 한 블록도 복구할 수 있다. 복구된 나머지 한 블록은 다시 사선 패리티 그룹의 한 블록이므로 상기 사선 패리티 그룹의 나머지 페일난 블록을 복구할 수 있으며 같은 방법으로 모든 블록에 적용된다. 이러한 방법으로 소수 N개로 이루어진 디스크 어레이에서 임의의 두 디스크에서 오류 발생시 모두 복구할 수 있다.A diagonal parity group consists of (N-1) blocks, which are distributed on different disks. Due to such a distributed structure, even if two of the N disks fail, at least one error occurs in only one block among the oblique parity groups. Therefore, if the block is restored, the rest of the N blocks of the horizontal parity group including the block can be restored. Since the restored one block is again one block of the oblique parity group, the rest of the failed parity blocks of the oblique parity group can be recovered and applied to all the blocks in the same manner. In this way, it is possible to recover all errors in any two disks in a disk array made up of a few N pieces.

도 19와 함께 후술될 DH 기법 디코딩 방법의 요지는 먼저 디스크 i와 디스크 j가 오류 발생시에 디스크의 차이값인 k를 구한 다음 디스크 (i+1)의 사선 패리티 블록의 사선 패리티 그룹에 속하는 디스크 j의 블록을 복구한다. 그 다음에는 상기 디스크 j의 블록을 포함하는 수평 패리티 그룹을 통해 디스크 i의 블록을 복구하며 이 과정을 반복적으로 수행하여 결국 오류가 발생한 두 디스크의 모든 블록들을 복구하는 것이다.19, when a disk i and a disk j fail, k is obtained as a disk difference value, and then a disk j (i + 1) belonging to a diagonal parity group of a diagonal parity block of the disk i + Lt; / RTI > Then, the block of the disk i is recovered through the horizontal parity group including the block of the disk j, and the process is repeatedly performed to recover all the blocks of the failed two disks.

두 개의 디스크에서 오류 발생시 본 발명의 실시예에 따라 도 1의 컨트롤러 4가 오류 발생된 해당 디스크의 모든 블록을 복구하는 방법을 도 19를 참조하여 상세히 설명한다. 도 19는 본 발명의 실시예에 따라 두 개의 디스크가 페일시 DH 기법의 디코딩 알고리즘 흐름도이다. 도 19에서는 하기와 같은 가정을 한다.A method of recovering all blocks of a corresponding disk in which an error occurs in the controller 4 of FIG. 1 according to an embodiment of the present invention when an error occurs in two disks will be described in detail with reference to FIG. FIG. 19 is a flowchart of a decoding algorithm of a DH scheme when two disks fail according to an embodiment of the present invention. FIG. In Fig. 19, the following assumption is made.

가정 : 디스크 i와 디스크 j에서 오류 발생 (0≤i〈 j≤(N-1)Assumption: Error occurred on disk i and disk j (0? I <j? (N-1)

도 1의 컨트롤러 4는 도 19의 300단계에서 k=j-i로 그리고 m=0으로 설정한다. 즉, 디스크 i와 디스크 j가 오류 발생시에 디스크의 차이값인 k를 구하고, 페일된 디스크들의 블록 복구 과정을 반복 적용하기 위한 변수 m을 0으로 초기화한다.The controller 4 of Fig. 1 sets k = j-i and m = 0 in step 300 of Fig. That is, when the disk i and the disk j fail, k is obtained as a difference value of the disk, and a variable m for initializing the block restoring process of the failed disks is initialized to zero.

그후 302단계에서는 하기와 같은 n값을 구한다.Then, in step 302, the following n value is obtained.

n = N-1-k-m*k mod Nn = N-1-k-m * k mod N

전술한 바와 같이 사선 패리티 그룹은 (N-1)개의 블록으로 구성되는데 이들은 서로 다른 디스크에 분산되어 있다. 그러므로 N개의 디스크에서 두 개 디스크에 오류가 발생하여도 사선 패리티 그룹 중 한 블록만 오류가 발생한 것이 적어도 하나 이상 존재한다. 그러므로 상기 n은 한 블록만 오류 발생된 사선 패리티 그룹의 디스크 j의 페일 블록을 나타내는 값이다. 그후 컨트롤러 4는 304단계에서 한 블록만 오류 발생된 사선 패리티 그룹을 이용하여 디스크 j의 블록 n을 디코딩한다. 즉, 하기 수학식 3을 이용하여 디스크 j의 블록 n의 값 a(n,j)를 구한다.As described above, the diagonal parity group is composed of (N-1) blocks, which are distributed on different disks. Therefore, even if there are errors in two disks in N disks, there is at least one error occurred in only one of the oblique parity groups. Therefore, n is a value indicating a fail block of the disk j of the diagonal parity group in which only one block of error has occurred. In step 304, the controller 4 decodes the block n of the disk j using the slant parity group in which only one block of error has occurred. That is, the value a (n, j) of the block n of the disk j is obtained using the following equation (3 ) .

그후 컨트롤러 4는 306단계에서 304단계에서 구한 디스크 j의 블록 n에 대한 수평 패리티 그룹을 이용하여 디스크 i의 블록 n을 디코딩한다. 즉, 하기 수학식 4를 이용하여 디스크 i의 블록 n의 값 a(n,i)를 구한다.Then, the controller 4 decodes the block n of the disc i using the horizontal parity group for the block n of the disc j obtained in step 306 in step 306. That is, the value a (n, i) of the block n of the disk i is obtained using the following equation (4 ) .

그후 308단계에서는 m〈(N-1)인가를 판단하고, 그러면 310단계로 진행하여 m=m+1로 하고 다시 302단계부터의 과정을 반복 수행한다.In step 308, it is determined whether m &lt; (N-1). If so, the process proceeds to step 310 and m = m + 1.

하기 일 예에서는 도 19를 이용해 실제로 두 개의 디스크에서 오류 발생시 데이터 복구하는 과정을 보여준다. 하기 일예에서의 데이터 복구 과정을 도 20a 내지 도 20g를 참조하여 설명한다. 도 20a 내지 도 20g는 두 개의 디스크 페일시 DH 기법에 따른 데이터 복구 과정을 설명하기 위한 예시도이다. 도 20a 내지 도 20g에서는 도 14와 같이 데이터 및 패리티가 배치된 상태에서 두 번째 디스크 d1(i=1)과 네 번째 디스크 d3(j=3)가 페일시의 DH 기법에 따른 데이터 복원과정을 보여주고 있다.In the following example, FIG. 19 shows a process of recovering data in the event of an error in two disks. The data recovery process in the following example will be described with reference to FIGS. 20A to 20G. FIGS. 20A to 20G are diagrams for explaining a data restoration process according to the DH scheme when two disk failures occur. In FIGS. 20A to 20G, as shown in FIG. 14, the second disk d1 (i = 1) and the fourth disk d3 (j = 3) Giving.

N=7일 때, 두개의 디스크에서 오류 발생시 DH 기법에 따른 에러복구 방법If N = 7, error recovery method based on DH method in case of error in two disks

도 14에 도시된 행렬은 N=7인 경우의 디스크 어레이 형태로 주어진 데이터 값에 대하여 수평 패리티 및 사선 패리티 값이 계산되어 구성되어 있는 것이다.The matrix shown in FIG. 14 is constructed by calculating horizontal parity and diagonal parity values for a given data value in the form of a disk array when N = 7.

도 20a의 행렬은 도 14에서 사용된 디스크 어레이에서 두 번째와 네 번째 디스크가 오류 발생한 상황을 보여준다. 즉, i=1이고 j=3이며 따라서 k=2이다.The matrix of FIG. 20A shows a situation in which the second and fourth disks in the disk array used in FIG. 14 are in error. That is, i = 1 and j = 3, and thus k = 2.

그리고 n= N-1-k-k*m mod N = 7-1-2-2m mod 7 = 4-2m mod 7이다.And n = N-1-k-k * m mod N = 7-1-2-2m mod7 = 4-2m mod7.

그러므로 디스크 j의 블록 n의 값을 구하는 도 19의 304단계에서의 수학식 3은 하기 수학식 5와 같이 되고,Therefore, the equation (3) in step 304 of FIG. 19 for obtaining the value of the block n of the disk j is expressed by the following equation (5)

디스크 i의 블록 n의 값을 구하는 도 19의 306단계에서의 수학식 4는 하기 수학식 6과 같이 된다.The equation (4) in the step 306 of FIG. 19 for obtaining the value of the block n of the disk i becomes as shown in the following equation (6).

그에 따라 m=0일 때, 상기 수학식 5, 6은 다음과 같이 각각 표현된다.Accordingly, when m = 0, the equations (5) and (6) are expressed as follows.

a(4,3)= a(5,2) a(3,4) a(2,5) a(1,6) a(0,0) a (4,3) = a (5,2) a (3,4) a (2,5) a (1,6) a (0,0)

= 10011 = 1= 1 0 0 One 1 = 1

a(4,1)= a(4,0) a(4,2) a(4,3) a(4,4) a(4,5) a(4,6) a (4, 1) = a (4, 0 ) a (4,2) a (4,3) a (4, 4) a (4,5) a (4,6)

= 001011 = 1= 0 0 One 0 One 1 = 1

상기 a(4,3)은 페일상태인 네 번째 디스크(j=3) 5번째 블록(n=4)으로서, 그의 사선 패리티 그룹들의 XOR에 의해 값이 구해짐을 알 수 있다. 상기 a(4,3)의 값은 1임을 알 수 있다. 상기 a(4,1)은 페일상태인 두 번째 디스크(i=1) 5번째 블록(n=4)으로서, 그의 수평 패리티 그룹들의 XOR에 의해 값이 구해짐을 알 수 있다. 상기 a(4,3)의 값도 1임을 알 수 있다. 도 20b의 행렬에서는 디스크 어레이에서 네 번째와 두 번째 디스크(j=3, i=1)의 다섯 번째 블록(n=4)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,1을 보여주고 있다.The a (4,3) is the fifth block (n = 4) of the fourth disk (j = 3) which is in a fail state and its value is obtained by XOR of its diagonal parity groups. The value of a (4, 3) is 1. The a (4,1) is the fifth block (n = 4) of the second disk (i = 1 ) in the fail state, and it is found that the value is obtained by the XOR of the horizontal parity groups. The value of a (4,3) is also 1. In the matrix of FIG. 20B, a data value 1,1 recovered by using a diagonal parity group and a horizontal parity group in the fifth block (n = 4) of the fourth and second disks (j = 3, i = 1) .

m=1일 때, 상기 수학식 5, 6은 다음과 같이 각각 표현된다.When m = 1, the equations (5) and (6) are expressed as follows.

a(2,3)= a(5,0) a(4,1) a(3,2) a(1,4) a(0,5) a (2,3) = a (5,0) a (4,1) a (3,2) a (1, 4) a (0,5)

= 01011 = 1= 0 One 0 One 1 = 1

a(2,1)= a(2,0) a(2,2) a(2,3) a(2,4) a(2,5) a(2,6) a (2,1) = a (2,0) a (2,2) a (2,3) a (2,4) a (2,5) a (2,6)

= 111000 = 1= 1 One One 0 0 0 = 1

도 20c의 행렬에서는 m=1일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 세 번째 블록(n=2)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,1을 보여주고 있다.In the matrix of FIG. 20C, the third block (n = 2) of the fourth and second disks (j = 3, i = 1) failing in the disk array is processed horizontally And the data value 1,1 recovered using the parity group.

m=2일 때, 상기 수학식 5, 6은 다음과 같이 각각 표현된다.When m = 2, the equations (5) and (6) are expressed as follows.

a(0,3)= a(5,5) a(4,6) a(3,0) a(2,1) a(1,2) a (0, 3) = a (5, 5) a (4,6) a (3,0) a (2,1) a (1,2)

= 01011 = 1= 0 One 0 One 1 = 1

a(0,1)= a(0,0) a(0,2) a(0,3) a(0,4) a(0,5) a(0,6) a (0, 1) = a (0, 0) a (0,2) a (0, 3) a (0,4) a (0,5) a (0,6)

= 111010 = 0= 1 One One 0 One 0 = 0

도 20d의 행렬에서는 m=2일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 첫 번째 블록(n=0)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,0을 보여주고 있다.20d, the first blocks (n = 0) of the fourth and second disks (j = 3, i = 1) failing in the disk array are processed horizontally Data values 1 and 0 recovered using the parity group are shown.

m=3일 때, 상기 수학식 5, 6은 다음과 같이 표현된다.When m = 3, the above equations (5) and (6) are expressed as follows.

a(5,3)= a(4,4) a(3,5) a(2,6) a(1,0) a(0,1) a (5,3) = a (4,4) a (3,5) a (2,6) a (1,0) a (0,1)

= 01000 = 1= 0 One 0 0 0 = 1

a(5,1)= a(5,0) a(5,2) a(5,3) a(5,4) a(5,5) a(5,6) a (5, 1) = a (5 , 0 ) a (5,2) a (5,3) a (5,4) a (5, 5) a (5,6)

= 011001 = 1= 0 One One 0 0 1 = 1

도 20e의 행렬에서는 m=3일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 여섯 번째 블록(n=5)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,1을 보여주고 있다.In the matrix of FIG. 20E, the sixth block (n = 5) of the fourth and second disks (j = 3, i = 1) failing in the disk array is processed horizontally And the data value 1,1 recovered using the parity group.

m=4일 때, 상기 수학식 5, 6은 다음과 같이 표현된다.When m = 4, the above equations (5) and (6) are expressed as follows.

a(3,3)= a(5,1) a(4,2) a(2,4) a(1,5) a(0,6) a (3, 3) = a (5, 1) a (4,2) a (2,4) a (1,5) a (0,6)

= 10000 = 1= 1 0 0 0 0 = 1

a(3,1)= a(3,0) a(3,2) a(3,3) a(3,4) a(3,5) a(3,6) a (3, 1) = a (3, 0) a (3,2) a (3, 3) a (3,4) a (3,5) a (3,6)

= 001010 = 0= 0 0 One 0 One 0 = 0

도 20f의 행렬에서는 m=4일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 네 번째 블록(n=3)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,0을 보여주고 있다.20F, the fourth block (n = 3) of the fourth and second disks (j = 3, i = 1) which are in a fail state in the disk array through the process of m = Data values 1 and 0 recovered using the parity group are shown.

m=5일 때, 상기 수학식 5, 6은 다음과 같이 각각 표현된다.When m = 5, the above equations (5) and (6) are expressed as follows.

a(1,3)= a(5,6) a(4,0) a(3,1) a(2,2) a(0,4) a (1,3) = a (5,6) a (4,0) a (3, 1) a (2,2) a (0,4)

= 10010 = 0= 1 0 0 One 0 = 0

a(1,1)= a(1,0) a(1,2) a(1,3) a(1,4) a(1,5) a(1,6) a (1, 1) = a (1, 0) a (1,2) a (1, 3) a (1, 4) a (1,5) a (1,6)

= 010101 = 1= 0 One 0 One 0 1 = 1

도 20g의 행렬에서는 m=5일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 두 번째 블록(n=1)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값0,1을 보여주고 있다. 도 20g를 보면, 처음의 디스크 어레이, 즉 도 14에 도시된 행렬과 같으므로 데이터의 복구가 완전하게 이루어졌음을 알 수 있다.In the matrix of FIG. 20G, the second block (n = 1) of the fourth and second disks (j = 3, i = 1) failing in the disk array is processed horizontally And the data values 0 and 1 recovered using the parity group are shown. Referring to FIG. 20G, it can be seen that the data is completely recovered since it is the same as the first disk array, that is, the matrix shown in FIG.

하기에서는 본 발명의 다른 실시예인 DH2 기법을 도 2, 도 4, 도 8 내지 도 10, 도 15 내지 도 18, 도 21, 도 22a∼도 22g를 참조하여 설명한다.Hereinafter, the DH2 technique, which is another embodiment of the present invention, will be described with reference to FIGS. 2, 4, 8 to 10, 15 to 18, 21, and 22A to 22G.

DH2 기법DH2 technique

도 2은 본 발명의 다른 실시예에 따라 DH2 기법으로 구현된 디스크 어레이의 블록 구성도이다. 도 2를 참조하면, DH2 기법으로 구현된 디스크 어레이의 블록 구성에는, 도 1의 블록 구성에다가 (N+1)번째의 디스크 8-n과 상기 디스크 8-n에 대응되는 버퍼 6-n이 더 추가되어 있음을 볼수 있다. 컨트롤러 4와 상기 버퍼 6-n 사이와 상기 디스크 8-n과 상기 버퍼 6-n 사이에는 I/O 버스 12-n이 접속되어 있다. DH2 기법에 따라 추가로 더 구비된 디스크 8-n은 DH 기법에서 데이터 디스크의 내용 갱신시 발생될 수 있는 병목 현상 오버헤드를 줄이기 위한 것으로 사용되고, 하기에서 정의될 수평 패리티 블록들을 저장하는 수평 패리티 디스크이다.2 is a block diagram of a disk array implemented by the DH2 technique according to another embodiment of the present invention. Referring to FIG. 2, in the block configuration of the disk array implemented by the DH2 scheme, the (N + 1) -th disk 8-n and the buffer 6-n corresponding to the disk 8-n You can see that it is added. An I / O bus 12-n is connected between the controller 4 and the buffer 6-n and between the disk 8-n and the buffer 6-n. The additional disk 8-n according to the DH2 scheme is used to reduce the bottleneck overhead that may occur in updating the contents of the data disk in the DH scheme. The horizontal parity disk to be.

도 4는 DH2 기법에 따른 수평 및 사선 패리티 그룹과 수평 및 사선 패리티 블록을 설명하기 위한 예시도이다.4 is an exemplary diagram for explaining horizontal and diagonal parity groups and horizontal and diagonal parity blocks according to the DH2 technique.

도 8은 디스크의 갯수 N이 7인 경우 DH2 기법의 수평 패리티 그룹 및 수평 패리티 블록들의 배치를 나타낸 도면이고, 도 9는 디스크의 갯수 N이 7인 경우 DH2 기법의 사선 패리티 그룹 및 사선 패리티 블록들의 배치를 나타낸 도면이며, 도 10은 디스크의 갯수 N이 7인 경우 DH2 기법에서의 패리티 및 데이터의 배치를 나타낸 도면이다.FIG. 8 is a diagram showing the arrangement of horizontal parity groups and horizontal parity blocks of the DH2 scheme when the number N of disks is 7. FIG. 9 is a diagram showing the arrangement of diagonal parity groups and diagonal parity blocks of the DH2 scheme, FIG. 10 is a diagram showing parity and data arrangement in the DH2 scheme when the number N of disks is 7; FIG.

도 15는 본 발명의 다른 실시예에 따른 DH2 기법에 따른 패리티 저장 알고리즘의 흐름도이다. 그리고 도 16 내지 도 18은 디스크의 갯수 N이 7인 경우 DH2 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도이다.15 is a flowchart of a parity storage algorithm according to the DH2 technique according to another embodiment of the present invention. FIGS. 16 to 18 are diagrams for explaining a parity storing process according to the DH2 technique when the number N of disks is 7.

본 발명의 다른 실시예에 따른 DH2기법은 수평 패리티 블록들은 전용의 수평 패리티 디스크에 배치하고, 사선 패리티 블록들은 나머지의 디스크에 분산 배치시키는 방법이다.The DH2 scheme according to another embodiment of the present invention is a method of arranging horizontal parity blocks on a dedicated horizontal parity disk and distributing oblique parity blocks on the remaining disks.

도 4, 도 8 내지 도 10을 참조하여 DH2 기법의 구성(정의 4), 수평 패리티(horizontal parity) 블록 및 그룹(정의 5), 및 사선 패리티(diogonal parity) 블록 및 그룹(정의 6)을 정의하고, 상기 정의들에 의거한 DH2 기법의 데이터 및 배치를 설명한다.(4), a horizontal parity block and a group (Definition 5), and a diagonal parity block and a group (Definition 6) are defined with reference to FIGS. 4 and 8 to 10, And the data and placement of the DH2 technique based on the above definitions.

정의 4: DH2 기법의 구성Definition 4: Configuration of DH2 technique

소수 N개의 디스크들로 이루어진 디스크 어레이를 구성할 경우 각 디스크는 (N-1)개의 논리적인 블록으로 이루어지고 이를 하기와 같은 (N-1)*(N+1) 행렬로 정의하고, 하기의 표 3과 같이 표현한다.(N-1) * (N + 1) matrix as follows: &lt; EMI ID = 1.0 &gt; As shown in Table 3.

a(0,0) a (0,0) a(0,1) a (0,1) ... a(0,j) a (0, j) ... a(0,N-1) a (0, N-1) a(0,N) a (0, N) a(1,0) a (1,0) a(1,1) a (1,1) ... a(1,j) a (1, j) ... a(1,N-1) a (1, N-1) a(1,N) a (1, N) a(2,0) a (2,0) a(2,1) a (2,1) ... a(2,j) a (2, j) ... a(2,N-1) a (2, N-1) a(2,N) a (2, N) ... ... ... ... ... ... a(3,N) a (3, N) a(i,0) a (i, 0) a(i,1) a (i, 1) ... a(i,j) a (i, j) ... a(i,N-1) a (i, N-1) a(4,N) a (4, N) ... ... ... ... ... ... ... a(N-2,0) a (N-2,0) a(N-2,1) a (N-2,1) ... a(N-2,j) a (N-2, j) ... a(N-2,N-1) a (N-2, N-1) a(N-2,N) a (N-2, N)

정의 5: DH2 기법에서의 수평 패리티(horizontal parity) 그룹 및 블록Definition 5: Horizontal parity group and block in DH2 scheme

정의 4에서 정의된 디스크 어레이를 나타내는 행렬 a(i,j)에서 각 행들을 수평 패리티의 에러 정정 그룹(이하 수평 패리티 그룹으로 약칭한다)으로 정의하고, 각 수평 패리티 그룹의 마지막 디스크 즉, (N+1)번째 디스크의 블록(수평 패리티 그룹이라 칭함)에 그 행의 나머지 블록들의 XOR값을 저장하게 된다. 즉, 행렬 a(i,N)에 해당하는 블록들에 각 수평 패리티 그룹의 패리티 값이 저장된다. 여기서 i의 범위는 0≤i≤N-3이다.In the matrix a (i, j) representing the disk array defined in Definition 4, each row is defined as an error correction group of horizontal parity (hereinafter abbreviated as a horizontal parity group), and the last disk of each horizontal parity group, +1) th disk (called a horizontal parity group), the XOR value of the remaining blocks of the row is stored. That is, the parity value of each horizontal parity group is stored in blocks corresponding to the matrix a (i, N) . Here, the range of i is 0? I? N-3.

도 4에는 5개의 디스크들(N=5) d0∼d4로 구현된 디스크 어레이를 보여주는 것으로, 그에 따라 디스크들 d0∼d4 각각은 4개의 논리적인 블록들(N-1=4) b0∼b3, b4∼b7,…로 구성된다. 그중 3개의 논리적인 블록들 b0∼b2, b4∼b6,… 각각은 해당 번째의 수평 패리티 그룹이 되는데, 도 4에서 실선으로 표시한 참조번호 30은 두 번째 블록 b1의 수평 패리티 그룹을 일예로 표시하고 있다. 도 4에서 빗금으로 표시한 블록들은 각 수평 패리티 그룹의 패리티 값을 저장하는 수평 패리티 블록들을 의미하는데, 상기 수평 패리티 블록은 여섯 번째 디스크 d5에 있는 들이다. 즉, 행렬 a(i,N)에 해당하는 블록이다.4 shows a disk array implemented with five disks (N = 5) d0 to d4, whereby each of the disks d0 to d4 includes four logical blocks (N-1 = 4) b0 to b3, b4 to b7, ... . The three logical blocks b0 to b2, b4 to b6, ... Each of the horizontal parity groups is a corresponding horizontal parity group. In FIG. 4, reference numeral 30 denoted by a solid line represents a horizontal parity group of the second block b1 as an example. In FIG. 4, hatched blocks denote horizontal parity blocks storing parity values of each horizontal parity group, and the horizontal parity blocks are located on the sixth disk d5. That is, it is a block corresponding to the matrix a (i, N) .

도 8은 N=7인 경우의 DH2 기법에서 각 수평 패리티 그룹을 번호(0,1,2,3,4)로 나타낸 것으로, 빗금으로 표시한 블록 H0∼H4는 각 수평 패리티 그룹의 패리티 블록이 된다.FIG. 8 shows the horizontal parity group numbers (0, 1, 2, 3, 4) in the DH2 scheme in the case of N = 7, and the blocks H0 to H4 indicated by the hatched lines represent the parity blocks of the horizontal parity groups do.

정의 6: DH2 기법에서의 사선 패리티(diagonal parity) 그룹 및 블록Definition 6: Diagonal parity in the DH2 scheme

정의 3에서 정의된 DH 기법의 사선 패리티 그룹 및 블록과 동일하게 정의된다. 도 4를 참조하면, 점선으로 표시한 참조번호 32는 두 번째 사선 패리티 그룹을 일예로 표시하고 있다. 그리고 4(=N-1)번째 행(i=3)에 위치한 검은 점들로 표시한 블록들은 각 사선 패리티 그룹의 패리티 값을 저장하는 사선 패리티 블록을 의미한다. 그리고, 도 9는 N=7인 경우의 각 사선 패리티 그룹을 번호로 나타낸 것으로, 검은 점들로 표시한 블록 D0∼D6은 각 사선 패리티 그룹의 패리티 블록이다.It is defined the same as the diagonal parity group and block of the DH scheme defined in Definition 3. Referring to FIG. 4, a reference numeral 32 indicated by a dotted line indicates an example of a second diagonal parity group. Blocks indicated by black dots located in 4 (= N-1) th rows (i = 3) are diagonal parity blocks storing parity values of each diagonal parity group. FIG. 9 shows each of the slanting parity groups in the case of N = 7, and the blocks D0 to D6 indicated by black dots are the parity blocks of the diagonal parity groups.

정의 5와 정의 6에서 각각 정의된 DH2기법에 따른 수평 패리티 블록 및 사선 패리티 블록을 제외한 나머지 블록들이 실제 데이터가 저장되는 데이터 블록들이다. 도 10에서는 디스크의 갯수 N이 7인 경우 DH 기법에서의 패리티 및 데이터의 배치를 행렬의 형태로 나타낸 도면이다. 도 10에서, H0∼H4는 각 수평 패리티 그룹(0∼4번)의 수평 패리티 블록을, D0∼D6은 사선 패리티 그룹(0∼6번)의 사선 패리티 블록을 나타낸다. 각각의 데이터 블록은 i,j형태로 표현되어 있는 바 i는 수평 패리티 그룹을, j는 사선 패리티 그룹을 의미한다.The remaining blocks excluding the horizontal parity block and the diagonal parity block according to the DH2 scheme defined in the definitions 5 and 6 are data blocks in which actual data is stored. FIG. 10 is a diagram showing parity and data arrangement in the DH scheme in the form of a matrix when the number N of disks is 7. In FIG. 10, H0 to H4 denote horizontal parity blocks of horizontal parity groups (0 to 4), and D0 to D6 denote diagonal parity blocks of diagonal parity groups (0 to 6). Each data block is represented by i, j, where i denotes a horizontal parity group and j denotes a diagonal parity group.

DH2 기법에 따른 패리티 저장 알고리즘은 XOR연산을 통해 각 패리티 그룹에서 데이터 블록들의 패리티 값을 구하는 방법으로서, 도 15는 본 발명의 다른 실시예에 따른 DH2 기법의 패리티 저장 알고리즘의 흐름도이다. 도 15의 200단계와 같이 (N-1)*(N+1) 디스크 어레이가 구성되어 있을 때 도 2의 컨트롤러 4는 도 15의 210단계 및 220단계를 수행하여 수평 패리티 값 및 사선 패리티 값을 구한다. 먼저 210단계에서는 각 수평 패리티 그룹 0∼(N-3)을 이용하여 수평 패리티 블록을 인코딩(encoding)한다. 더욱 구체적으로 설명하면, 컨트롤러 4는 수평 패리티 그룹들 0∼(N-3)을 이용하여 해당 수평 패리티 그룹의 수평 패리티 값을 구한 후 수평 패리티 전용 디스크에 있는 수평 패리티 블록에 각각 저장한다. 해당 수평 패리티 블록에 저장되는 수평 패리티 값을 구하는 식은 하기 수학식 7과 같다.The parity storing algorithm according to the DH2 technique is a method of obtaining a parity value of data blocks in each parity group through an XOR operation, and FIG. 15 is a flowchart of a parity storing algorithm of a DH2 technique according to another embodiment of the present invention. When the (N-1) * (N + 1) disk array is configured as shown in step 200 of FIG. 15, the controller 4 of FIG. 2 performs steps 210 and 220 of FIG. 15 to calculate a horizontal parity value and a diagonal parity value I ask. First, in step 210, a horizontal parity block is encoded using each horizontal parity group 0 to (N-3). More specifically, the controller 4 calculates the horizontal parity values of the corresponding horizontal parity groups using the horizontal parity groups 0 to (N-3), and stores them in the horizontal parity blocks in the horizontal parity dedicated disk. The horizontal parity value stored in the horizontal parity block is obtained by Equation (7).

210단계 후 컨트롤러 4는 220단계에서 사선 패리티 그룹 0∼(N-1)을 이용하여 사선 패리티 블록을 인코딩한다. 더욱 구체적으로 설명하면, 컨트롤러 4는 사선 패리티 그룹들 0∼(N-1)을 이용하여 해당 사선 패리티 그룹의 사선 패리티 값을 구한 후 해당 사선 패리티 블록에 각각 저장한다. 해당 사선 패리티 블록에 저장되는 사선 패리티 값을 구하는 식은 하기 수학식 8과 같다.After step 210, the controller 4 encodes the oblique parity block using the oblique parity groups 0 to (N-1) in step 220. [ More specifically, the controller 4 calculates diagonal parity values of the oblique parity groups using the oblique parity groups 0 to (N-1), and stores them in the corresponding oblique parity blocks. The diagonal parity value stored in the slant parity block is obtained by the following equation (8).

상기 수학식 1 및 수학식 2에 의해 실제의 수평 패리티 값 및 사선 패리티 값을 인코딩하는 일 예를 도 16 내지 도 18을 참조하여 설명한다. 도 16 내지 도 18은 디스크의 갯수 N이 7인 경우 DH2 기법에 따른 패리티 저장 과정을 설명하기 위한 예시도이다.An example of encoding an actual horizontal parity value and a diagonal parity value using Equations (1) and (2) will be described with reference to FIG. 16 to FIG. FIGS. 16 to 18 are diagrams for explaining a parity storing process according to the DH2 scheme when the number N of disks is 7; FIG.

N=7인 경우 DH2 기법에 따른 패리티 저장 방법Parity storage method according to DH2 technique when N = 7

하기 표 4에 나타낸 행렬은 일곱 개의 디스크, 즉 N=7인 경우의 DH 기법의 디스크 어레이를 나타내는 행렬을 보여 주고 있으며, 각각의 디스크에서 블록들은 인코딩 및 디코딩에서 사용될 행렬 번호가 주어져 있다.The matrix shown in Table 4 shows a matrix representing a disk array of the DH scheme in the case of seven disks, i.e., N = 7, and the blocks in each disk are given matrix numbers to be used in encoding and decoding.

a(0,0) a (0,0) a(0,1) a (0,1) a(0,2) a (0,2) a(0,3) a (0, 3) a(0,4) a (0,4) a(0,5) a (0,5) a(0,6) a (0,6) a(0,7) a (0, 7) a(1,0) a (1,0) a(1,1) a (1,1) a(1,2) a (1,2) a(1,3) a (1, 3) a(1,4) a (1, 4) a(1,5) a (1,5) a(1,6) a (1,6) a(1,7) a (1,7) a(2,0) a (2,0) a(2,1) a (2,1) a(2,2) a (2,2) a(2,3) a (2,3) a(2,4) a (2,4) a(2,5) a (2,5) a(2,6) a (2,6) a(2,7) a (2,7) a(3,0) a (3,0) a(3,1) a (3, 1) a(3,2) a (3,2) a(3,3) a (3, 3) a(3,4) a (3,4) a(3,5) a (3,5) a(3,6) a (3,6) a(3,7) a (3, 7) a(4,0) a (4,0) a(4,1) a (4,1) a(4,2) a (4,2) a(4,3) a (4,3) a(4,4) a (4, 4) a(4,5) a (4,5) a(4,6) a (4,6) a(4,7) a (4,7) a(5,0) a (5,0) a(5,1) a (5, 1) a(5,2) a (5,2) a(5,3) a (5,3) a(5,4) a (5,4) a(5,5) a (5, 5) a(5,6) a (5,6) a(5,7) a (5,7)

도 16은 표 4와 같이 표현되는 행렬에서 각 데이터 블록에 이진수인 임의의 데이터가 저장되어 있는 상태를 나타낸 것으로, 마지막 디스크(수평 전용 패리티 디스크)에 있는 빗금으로 표시된 빈 블록들에는 수평 패리티 값들이, 검은 점들로 표시한 빈 블록들에는 사선 패리티 값들이 수학식 7 및 수학식 8에 의거한 각 그룹별 XOR 연산 후 저장될 것이다.FIG. 16 shows a state where arbitrary data of binary numbers are stored in each data block in a matrix expressed as Table 4. In the empty blocks indicated by shading in the last disk (horizontal dedicated parity disk), horizontal parity values , Diagonal parity values will be stored in empty blocks indicated by black dots after XOR operation for each group based on Equation (7) and Equation (8).

먼저 하기에서는 수학식 7을 이용하여 DH2 기법에 따른 각 수평 패리티 블록의 수평 패리티 값을 구하는 과정을 보여주고 있다.First, a horizontal parity value of each horizontal parity block according to the DH2 technique is calculated using Equation (7).

H0= a(0,7)= a(0,0) a(0,1) a(0,2) a(0,3) a(0,4) a(0,5) a(0,6) H 0 = a (0,7) = a (0,0) a (0,1) a (0,2) a (0, 3) a (0,4) a (0,5) a (0,6)

= 1011010 = 0= 1 0 One One 0 One 0 = 0

H1= a(1,7)= a(1,0) a(1,1) a(1,2) a(1,3) a(1,4) a(1,5) a(1,6) H 1 = a (1,7) = a (1, 0) a (1,1) a (1,2) a (1, 3) a (1, 4) a (1,5) a (1,6)

= 0110001 = 1= 0 One One 0 0 0 1 = 1

H2= a(2,7)= a(2,0) a(2,1) a(2,2) a(2,3) a(2,4) a(2,5) a(2,6) H 2 = a (2,7) = a (2,0) a (2,1) a (2,2) a (2,3) a (2,4) a (2,5) a (2,6)

= 1110000 = 1= 1 One One 0 0 0 0 = 1

H3= a(3,7)= a(3,0) a(3,1) a(3,2) a(3,3) a(3,4) a(3,5) a(3,6) H 3 = a (3,7) = a (3,0) a (3, 1) a (3,2) a (3, 3) a (3,4) a (3,5) a (3,6)

= 0011010 = 1= 0 0 One One 0 One 0 = 1

H4= a(4,7)= a(4,0) a(4,1) a(4,2) a(4,3) a(4,4) a(4,5) a(4,6) H 4 = a (4,7) = a (4,0) a (4,1) a (4,2) a (4,3) a (4, 4) a (4,5) a (4,6)

= 0101011 = 0= 0 One 0 One 0 One 1 = 0

도 17에서는 상기 수학식 7에 의거해 구한 DH2 기법의 수평 패리티 값을 구한 후에 각각의 수평 패리티 블록 a(0,7),a(1,7),a(2,7),a(3,7),a(4,7)에 저장한 모습을 보여주고 있다.17 In the above equation (7) to each of the horizontal parity block obtained after the value of the determined horizontal parity DH2 technique based on a (0,7), a (1,7 ), a (2,7), a (3, 7) and a (4,7) , respectively.

하기에서는 전기한 수학식 8을 사용하여 각 사선 패리티 블록(행렬 a(5,0),a(5,1),a(5,2),a(5,3),a(5,4),a(5,5))의 사선 패리티 값을 구하는 과정을 보여준다. (5,0), a (5,1), a (5,2), a (5,3), and a (5,4) using the equation (8 ) , a (5, 5) ).

D0= a(5,0)= a(4,1) a(3,2) a(2,3) a(1,4) a(0,5) D 0 = a (5,0) = a (4,1) a (3,2) a (2,3) a (1, 4) a (0,5)

= 10111 = 0= 1 0 One One 1 = 0

D1= a(5,1)= a(4,2) a(3,3) a(2,4) a(1,5) a(0,6) D 1 = a (5,1) = a (4,2) a (3, 3) a (2,4) a (1,5) a (0,6)

= 01000 = 1= 0 One 0 0 0 = 1

D2= a(5,2)= a(4,3) a(3,4) a(2,5) a(1,6) a(0,0) D 2 = a (5,2) = a (4,3) a (3,4) a (2,5) a (1,6) a (0,0)

= 10011 = 1= 1 0 0 One 1 = 1

D3= a(5,3)= a(4,4) a(3,5) a(2,6) a(1,0) a(0,1) D 3 = a (5,3) = a (4,4) a (3,5) a (2,6) a (1,0) a (0,1)

= 01000 = 1= 0 One 0 0 0 = 1

D4= a(5,4)= a(4,5) a(3,6) a(2,0) a(1,1) a(0,2) D 4 = a (5,4) = a (4,5) a (3,6) a (2,0) a (1,1) a (0,2)

= 10111 = 0= 1 0 One One 1 = 0

D5= a(5,5)= a(4,6) a(3,0) a(2,1) a(1,2) a(0,3) D 5 = a (5, 5) = a (4, 6) a (3,0) a (2,1) a (1,2) a (0, 3)

= 10111 = 1= 1 0 One One 1 = 1

D6= a(5,6)= a(4,0) a(3,1) a(2,2) a(1,3) a(0,4) D 6 = a (5,6) = a (4,0) a (3, 1) a (2,2) a (1, 3) a (0,4)

= 00100 = 1= 0 0 One 0 0 = 1

도 18에서는 상기한 과정을 거쳐 DH2 기법의 수평 및 사선 패리티 값을 구한 후에 각각의 수평 및 사선 패리티 블록에 저장한 모습을 보여주고 있다. 즉, 도 18에서는 N=7인 경우 본 발명의 DH2 기법에 따른 패리티 및 데이터 배치의 한 예를 나타낸다.In FIG. 18, the horizontal and diagonal parity values of the DH2 technique are obtained through the above-described processes, and then stored in the respective horizontal and diagonal parity blocks. That is, FIG. 18 shows an example of parity and data arrangement according to the DH2 scheme of the present invention when N = 7.

다음으로 본 발명의 다른 실시예에 따른 DH2 기법의 디코딩 방법, 즉 디스크 오류 발생시 해당 디스크의 데이터 복구 방법에 대해 설명한다.Next, a decoding method of the DH2 technique according to another embodiment of the present invention, that is, a method of recovering data on a corresponding disk in the event of a disk error will be described.

DH2 기법에 따른 해당 디스크의 데이터 복구방법의 기본 사상은 하나의 디스크가 오류 발생시에는 수평 패리티나 사선 패리티를 이용하여 쉽게 복구하고, 두개의 디스크에서 오류 발생시에는 DH 기법과 마찬가지로, 사선 패리티와 수평 패리티를 반복적으로 적용하여 두 디스크의 모든 블록들을 복구한다는 것이다. N이 소수인 (N+1)개로 이루어진 디스크 어레이에서 수평 패리티 그룹 중 한 블록만 오류시에는 나머지 블록들을 XOR하여 복구할 수 있다. 즉, 수평 패리티 그룹을 구성하는 (N+1)블록 중 N개의 블록들이 온전할 경우 오류 발생한 디스크의 블록을 복구할 수 있다.The basic idea of the data recovery method of the corresponding disk according to the DH2 technique is as follows. When one disk fails, it is easily recovered by using horizontal parity or diagonal parity. When errors occur in the two disks, diagonal parity and horizontal parity Is repeatedly applied to recover all the blocks of the two disks. In a disk array made up of (N + 1) number N of prime numbers, when only one block of the horizontal parity group is in error, the remaining blocks can be recovered by XORing. That is, when N blocks among the (N + 1) blocks constituting the horizontal parity group are complete, the erroneous disk block can be recovered.

사선 패리티 그룹은 (N-1)개의 블록으로 구성되는데 이들은 서로 다른 디스크에 분산되어 있다. DH2 기법에서는 두 개의 디스크에서 오류 발생하는 경우는 두 가지로 나뉠 수 있다. 즉, 수평 패리티 블록을 가지고 있는 수평 패리티 디스크와 다른 하나의 디스크에서 오류가 발생할 수 있고, 또는 상기 수평 패리티 디스크를 제외한 두 개의 디스크에서 오류가 발생할 수 있다. 수평 패리티 디스크가 포함된 경우에는 사선 패리티 그룹을 이용해 오류 발생한 다른 디스크의 각 블록을 복구한 뒤, 수학식 7에 의해 수평 패리티 값을 계산하는 과정처럼 수평 패리티 디스크를 복구하면 된다.A diagonal parity group consists of (N-1) blocks, which are distributed on different disks. In the DH2 technique, there are two cases where an error occurs in two disks. That is, an error may occur in a horizontal parity disk having a horizontal parity block and another disk, or an error may occur in two disks except the horizontal parity disk. When a horizontal parity disk is included, the horizontal parity disk is recovered as in the process of calculating the horizontal parity value according to Equation (7) after restoring each block of the erroneous disk using the diagonal parity group.

수평 패리티 디스크를 제외하고 두 개의 디스크에서 오류 발생한 경우에는, 즉 N개의 디스크에서 두 개의 디스크가 오류 발생하여도 사선 패리티 그룹 중 한 블록만 오류가 발생한 것이 적어도 하나 이상 존재한다. 따라서 이를 복구한다면 그 블록을 포함하는 수평 패리티 그룹의 N블록중 나머지 한 블록을 복구할 수 있다. 복구된 나머지 한 블록은 다시 사선 패리티 그룹의 한 블록이므로 상기 사선 패리티 그룹의 나머지 페일난 블록을 복구할 수 있으며 같은 방법으로 모든 블록에 적용된다. 이러한 방법으로 소수 N개로 이루어진 디스크 어레이에서 임의의 두 디스크에서 오류 발생시 모두 복구할 수 있다.If there is an error in two disks except for a horizontal parity disk, that is, if there are two disk errors in N disks, at least one error occurred in only one block among the oblique parity groups. Therefore, if restoring it, the rest of the N blocks of the horizontal parity group including the block can be recovered. Since the restored one block is again one block of the oblique parity group, the rest of the failed parity blocks of the oblique parity group can be recovered and applied to all the blocks in the same manner. In this way, it is possible to recover all errors in any two disks in a disk array made up of a few N pieces.

도 21과 함께 후술될 DH2 기법 디코딩 방법의 요지는 먼저 디스크 i와 디스크 j가 오류 발생시에 디스크의 차이값인 k를 구한 다음 디스크 (i+1)의 사선 패리티 블록의 사선 패리티 그룹에 속하는 디스크 j의 블록을 복구한다. 그 다음에는 상기 디스크 j의 블록을 포함하는 수평 패리티 그룹을 통해 디스크 i의 블록을 복구하며 이 과정을 반복적으로 수행하여 결국 오류가 발생한 두 디스크의 모든 블록들을 복구하는 것이다.21, a method of decoding a DH2 technique will be described below. First, when a disc i and a disc j have an error, k, which is a difference value of the disc, is obtained. Then, a disc j (i) belonging to a diagonal parity group of a diagonal parity block of the disc Lt; / RTI &gt; Then, the block of the disk i is recovered through the horizontal parity group including the block of the disk j, and the process is repeatedly performed to recover all the blocks of the failed two disks.

두 개의 디스크에서 오류 발생시 본 발명의 다른 실시예에 따라 도 2의 컨트롤러 4가 오류 발생된 해당 디스크의 모든 블록을 DH2 기법으로 복구하는 방법을 도 21을 참조하여 상세히 설명한다. 도 21은 본 발명의 실시예에 따라 두 개의 디스크가 페일시 DH2 기법의 디코딩 알고리즘 흐름도이다. 도 21에서는 하기와 같은 가정을 한다.A method for restoring all the blocks of a corresponding disk in which errors have occurred by the controller 4 of FIG. 2 using the DH2 technique according to another embodiment of the present invention will be described in detail with reference to FIG. 21 is a flowchart of a decoding algorithm of the DH2 scheme when two discs fail according to an embodiment of the present invention. In Fig. 21, the following assumption is made.

가정 : 디스크 i와 디스크 j에서 오류 발생 (0≤i〈j≤(N-1))Assumption: Error occurs on disk i and disk j (0≤i <j≤ (N-1))

도 2의 컨트롤러 4는 도 21의 400단계에서 k=j-i로 그리고 m=0으로 설정한다. 즉, 디스크 i와 디스크 j가 오류 발생시에 디스크의 차이값인 k를 구하고, 페일된 디스크들의 블록 복구 과정을 반복 적용하기 위한 변수 m을 0으로 초기화한다.The controller 4 of Fig. 2 sets k = j-i and m = 0 in step 400 of Fig. That is, when the disk i and the disk j fail, k is obtained as a difference value of the disk, and a variable m for initializing the block restoring process of the failed disks is initialized to zero.

그후 402단계에서는 하기와 같은 n값을 구한다.Then, in step 402, the following n value is obtained.

n = N-1-k-m*k mod Nn = N-1-k-m * k mod N

상기 n은 DH 기법에서 전술한 바와 같이, 한 블록만 오류 발생된 사선 패리티 그룹의 페일 블록 값이다. 그후 컨트롤러 4는 404단계에서 한 블록만 오류 발생된 사선 패리티 그룹을 이용하여 디스크 j의 블록 n을 디코딩한다. 즉, 하기 수학식 9를 이용하여 디스크 j의 블록 n의 값 a(n,j)를 구한다.N is a fail block value of a diagonal parity group in which only one block of error has occurred as described above in the DH scheme. Then, in step 404, the controller 4 decodes the block n of the disk j using the slant parity group in which only one block of error has occurred. That is, the value a (n, j) of the block n of the disk j is obtained using the following equation (9 ) .

그후 컨트롤러 4는 406단계에서 n=(N-2)인가를 판단한다. 만약 n=(N-2)가 아니면 408단계로 진행한다. 408단계에서는 404단계에서 구한 디스크 j의 블록 n에 대한 수평 패리티 블록을 이용하여 디스크 i의 블록 n을 디코딩한다. 이 경우에는 하기 수학식 10을 이용하여 디스크 i의 블록 n의 값 a(n,i)를 구한다.Then, the controller 4 determines in step 406 whether n = (N-2). If n = (N-2), the process proceeds to step 408. In step 408, the block n of the disc i is decoded using the horizontal parity block for the block n of the disc j obtained in step 404. In this case, the value a (n, i) of the block n of the disc i is obtained using the following equation (10 ) .

상기 406단계에서 만약 n=(N-2)이면 컨트롤러 4는 410단계로 진행한다. 410단계에서는 사선 패리티 블록과 수평 패리티 블록을 이용하여 디스크 i의 블록 (N-2)를 디코딩한다. 이 경우에는 수학식 11을 이용하여 디스크 i의 블록 (N-2)의 값 a(n,i)를 구한다.If n = (N-2) in step 406, the controller 4 proceeds to step 410. In step 410, the block N-2 of the disk i is decoded using the oblique parity block and the horizontal parity block. In this case, the value a (n, i) of the block (N-2) of the disk i is obtained using the equation (11 ) .

408단계 또는 410단계를 수행한 컨트롤러 4는 그후 412단계로 진행한다. 412단계에서는 m〈(N-1)인가를 판단하고, 그러면 414단계로 진행하여 m=m+1로 하고 다시 402단계부터의 과정을 반복 수행한다.The controller 4, which has performed steps 408 and 410, then proceeds to step 412. In step 412, it is determined whether or not m &lt; (N-1). In step 414, m = m + 1 is repeated.

하기 일 예에서는 도 21을 이용해 실제로 두 개의 디스크에서 오류 발생시 데이터 복구하는 과정을 보여준다. 하기 일예에서의 데이터 복구 과정을 도 22a 내지 도 22g를 참조하여 설명한다. 도 22a 내지 도 22g는 두 개의 디스크 페일시 DH2 기법에 따른 데이터 복구 과정을 설명하기 위한 예시도이다. 도 22a 내지 도 22g에서는 도 18과 같이 데이터 및 패리티가 배치된 상태에서 두 번째 디스크 d1(i=1)과 네 번째 디스크 d3(j=3)가 페일시의 DH2 기법에 따른 데이터 복구과정을 보여주고 있다.In the following example, a process of recovering data in the event of an error occurs in two disks using FIG. 21. The data recovery process in the following example will be described with reference to FIGS. 22A to 22G. FIGS. 22A to 22G are diagrams for explaining a data recovery process according to the DH2 scheme when two disk fail modes are performed. In FIGS. 22A to 22G, as shown in FIG. 18, the second disk d1 (i = 1) and the fourth disk d3 (j = 3) Giving.

N=7일 때, 두개의 디스크에서 오류 발생시 DH2 기법에 따른 에러복구 방법When N = 7, if error occurs in two disks, error recovery method according to DH2 technique

도 18에 도시된 행렬은 N=7인 경우의 디스크 어레이 형태로 주어진 데이터 값에 대하여 수평 패리티 및 사선 패리티 값이 계산되어 구성되어 있는 것이다.The matrix shown in FIG. 18 is constructed by calculating horizontal parity and diagonal parity values for a given data value in the form of a disk array when N = 7.

도 22a의 행렬은 도 18에서 사용된 디스크 어레이에서 두 번째와 네 번째 디스크가 오류 발생한 상황을 보여준다. 즉, i=1이고 j=3이며 따라서 k=2이다.The matrix of FIG. 22A shows a situation where the second and fourth disks in the disk array used in FIG. 18 have failed. That is, i = 1 and j = 3, and thus k = 2.

그리고 n= N-1-k-k*m mod N = 7-1-2-2m mod 7 = 4-2m mod 7이다.And n = N-1-k-k * m mod N = 7-1-2-2m mod7 = 4-2m mod7.

그러므로 디스크 j의 블록 n의 값을 구하는 도 21의 404단계에서의 수학식 9는 하기 수학식 12와 같이 되고,Therefore, the equation (9) in step 404 of FIG. 21 for obtaining the value of the block n of the disk j is expressed by the following equation (12)

디스크 i의 블록 n의 값을 구하는 도 21의 408단계에서의 수학식 10은 하기 수학식 13과 같이 된다.Equation (10) in step 408 of FIG. 21 for obtaining the value of block n of disk i is expressed by Equation (13).

단, n=(N-2)인 경우에는 도 410단계에서의 수학식 11은 하기 수학식 14와 같이 된다.However, when n = (N-2), the equation (11) in step 410 is expressed by the following equation (14).

그에 따라 m=0일 때, 상기 수학식 12, 13은 다음과 같이 각각 표현된다.Accordingly, when m = 0, the equations (12) and (13) are expressed as follows.

a(4,3)= a(5,2) a(3,4) a(2,5) a(1,6) a(0,0) a (4,3) = a (5,2) a (3,4) a (2,5) a (1,6) a (0,0)

= 10011 = 1= 1 0 0 One 1 = 1

a(4,1)= a(4,0) a(4,2) a(4,3) a(4,4) a(4,5) a(4,6) a(4,7) a (4, 1) = a (4, 0 ) a (4,2) a (4,3) a (4, 4) a (4,5) a (4,6) a (4,7)

= 0010110 = 1= 0 0 One 0 One One 0 = 1

상기 a(4,3)은 페일상태인 네 번째 디스크(j=3) 5번째 블록(n=4)으로서, 그의 사선 패리티 그룹들의 XOR에 의해 값이 구해짐을 알 수 있다. 상기 a(4,3)의 값은 1임을 알 수 있다. 상기 a(4,1)은 페일상태인 두 번째 디스크(i=1) 5번째 블록(n=4)으로서, 그의 수평 패리티 그룹들의 XOR에 의해 값이 구해짐을 알 수 있다. 상기 a(4,3)의 값도 1임을 알 수 있다. 도 22b의 행렬에서는 디스크 어레이에서 네 번째와 두 번째 디스크(j=3, i=1)의 다섯 번째 블록(n=4)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,1을 보여주고 있다.The a (4,3) is the fifth block (n = 4) of the fourth disk (j = 3) which is in a fail state and its value is obtained by XOR of its diagonal parity groups. The value of a (4, 3) is 1. The a (4,1) is the fifth block (n = 4) of the second disk (i = 1 ) in the fail state, and it is found that the value is obtained by the XOR of the horizontal parity groups. The value of a (4,3) is also 1. In the matrix of FIG. 22B, the data values 1,1 recovered by using the oblique parity group and the horizontal parity group are used as the fifth blocks (n = 4) of the fourth and second disks (j = 3, i = 1) .

m=1일 때, 상기 수학식 12, 13은 다음과 같이 각각 표현된다.When m = 1, the equations (12) and (13) are expressed as follows.

a(2,3)= a(5,0) a(4,1) a(3,2) a(1,4) a(0,5) a (2,3) = a (5,0) a (4,1) a (3,2) a (1, 4) a (0,5)

= 11101 = 0= 1 One One 0 1 = 0

a(2,1)= a(2,0) a(2,2) a(2,3) a(2,4) a(2,5) a(2,6) a(2,7) a (2,1) = a (2,0) a (2,2) a (2,3) a (2,4) a (2,5) a (2,6) a (2,7)

= 1100001 = 1= 1 One 0 0 0 0 1 = 1

도 22c의 행렬에서는 m=1일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 세 번째 블록(n=2)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값0,1을 보여주고 있다.In the matrix of FIG. 22C, the third block (n = 2) of the fourth and second disks (j = 3, i = 1) failing in the disk array is processed horizontally And the data values 0 and 1 recovered using the parity group are shown.

m=2일 때, 상기 수학식 12, 13은 다음과 같이 각각 표현된다.When m = 2, the equations (12) and (13) are expressed as follows.

a(0,3)= a(5,5) a(4,6) a(3,0) a(2,1) a(1,2) a (0, 3) = a (5, 5) a (4,6) a (3,0) a (2,1) a (1,2)

= 01011 = 1= 0 One 0 One 1 = 1

a(0,1)= a(0,0) a(0,2) a(0,3) a(0,4) a(0,5) a(0,6) a(0,7) a (0, 1) = a (0, 0) a (0,2) a (0, 3) a (0,4) a (0,5) a (0,6) a (0, 7)

= 1110100 = 0= 1 One One 0 One 0 0 = 0

도 22d의 행렬에서는 m=2일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 첫 번째 블록(n=0)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,0을 보여주고 있다.(N = 0) of the fourth and second disks (j = 3, i = 1) failing in the disk array through the process of m = 2 in the matrix of FIG. Data values 1 and 0 recovered using the parity group are shown.

m=3일 때는 n = N-1-k-k*m mod N = 7-1-2-2*3 mod 7 = 5 = 7-2 = (N-2)가 되므로, 페일된 수평 패리티 블록 a(5,1)을 디코딩하는 경우에는 도 21의 410단계에서 적용되는 수학식 14가 인용된다.(n-2) when m = 3, so that the parity of the failed parity block a ( n-1) becomes N = N-1-kk * m mod N = 7-1-2-2 * 3 mod7 = 5,1) is decoded, Equation (14) applied in step 410 of FIG. 21 is cited.

즉, m=3일 때, 전기한 수학식 12 및 수학식 14는 다음과 같이 각각 표현된다.That is, when m = 3, the equations (12) and (14) are expressed as follows.

a(5,3)= a(4,4) a(3,5) a(2,6) a(1,0) a(0,1) a (5,3) = a (4,4) a (3,5) a (2,6) a (1,0) a (0,1)

= 01000 = 1= 0 One 0 0 0 = 1

a(5,1)= (a(5,0) a(5,2) a(5,3) a(5,4) a(5,5) a(5,6))a (5, 1) = (a (5, 0) a (5,2) a (5,3) a (5,4) a (5, 5) a (5,6) )

(a(0,7) a(1,7) a(2,7) a(3,7) a(4,7)) (a (0, 7) a (1,7) a (2,7) a (3, 7) a (4,7) )

= (111001)(01110) = 1= (1 One One 0 0 One) (0 One One One 0) = 1

도 22e의 행렬에서는 m=3일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 여섯 번째 블록(n=5)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,1을 보여주고 있다.(N = 5) of the fourth and second disks (j = 3, i = 1) which are in a fail state in the disk array through the process of m = 3 in the matrix of FIG. And the data value 1,1 recovered using the parity group.

m=4일 때, 전기한 수학식 12, 13은 다음과 같이 표현된다.When m = 4, the following equations (12) and (13) are expressed as follows.

a(3,3)= a(5,1) a(4,2) a(2,4) a(1,5) a(0,6) a (3, 3) = a (5, 1) a (4,2) a (2,4) a (1,5) a (0,6)

= 10000 = 1= 1 0 0 0 0 = 1

a(3,1)= a(3,0) a(3,2) a(3,3) a(3,4) a(3,5) a(3,6) a(3,7) a (3, 1) = a (3, 0) a (3,2) a (3, 3) a (3,4) a (3,5) a (3,6) a (3, 7)

= 0110101 = 0= 0 One One 0 One 0 1 = 0

도 22f의 행렬에서는 m=4일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 네 번째 블록(n=3)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값1,0을 보여주고 있다.22F, the fourth block (n = 3) of the fourth and second disks (j = 3, i = 1) which are in a fail state in the disk array through the process of m = Data values 1 and 0 recovered using the parity group are shown.

m=5일 때, 전기한 수학식 12, 13은 다음과 같이 표현된다.When m = 5, the following equations (12) and (13) are expressed as follows.

a(1,3)= a(5,6) a(4,0) a(3,1) a(2,2) a(0,4) a (1,3) = a (5,6) a (4,0) a (3, 1) a (2,2) a (0,4)

= 10010 = 0= 1 0 0 One 0 = 0

a(1,1)= a(1,0) a(1,2) a(1,3) a(1,4) a(1,5) a(1,6) a(1,7) a (1, 1) = a (1, 0) a (1,2) a (1, 3) a (1, 4) a (1,5) a (1,6) a (1,7)

= 0100011 = 1= 0 One 0 0 0 One 1 = 1

도 22g의 행렬에서는 m=5일 때의 과정을 거쳐 디스크 어레이에서 페일상태인 네 번째와 두 번째 디스크(j=3, i=1)의 두 번째 블록(n=1)들을 사선 패리티 그룹과 수평 패리티 그룹을 이용해 복구한 데이터 값0,1을 보여주고 있다. 도 22g를 보면, 처음의 디스크 어레이, 즉 도 18에 도시된 행렬과 같으므로 데이터의 복구가 완전하게 이루어졌음을 알 수 있다.22G, the second block (n = 1) of the fourth and second disks (j = 3, i = 1) failing in the disk array is subjected to a process of m = And the data values 0 and 1 recovered using the parity group are shown. Referring to FIG. 22G, since it is the same as the first disk array, that is, the matrix shown in FIG. 18, it can be seen that the data is completely recovered.

본 발명의 실시예에 따른 DH 기법 및 DH2 기법에 따른 에러 복구 방법은 본 발명의 장점중에 하나인 병렬성을 가지고 있다. 에러 복구 방법의 병렬성이라 함은 복구 과정을 순차적으로 해야 하는 것이 아니라 그 과정을 동시에 병렬적으로 진행할 수 있음을 말한다. 즉 에러 복구 방법을 양 방향(처음과 끝)에서 동시에 수행할 수 있다. 이를 도 23을 참조하여 상세히 설명한다.The DH method according to the embodiment of the present invention and the error recovery method according to the DH2 method have parallelism, which is one of the advantages of the present invention. The parallelism of the error recovery method means that the recovery process can be performed in parallel, not the sequential process. That is, the error recovery method can be performed in both directions (beginning and end) simultaneously. This will be described in detail with reference to FIG.

도 23은 본 발명의 실시예에 따른 에러 복구 방법의 병렬성을 설명하기 위한 예시도로서, N=7인 경우 DH 기법에 따른 에러 복구 과정 설명시 일예로 사용한 것이다. 두 번째 디스크(i=1)와 네 번째 디스크(j=3)에서 오류가 발생하게 되면, 본 발명에서는 도 23에 매겨진 순서 즉, ①→②→③→④→⑤→⑥→⑦→⑧→⑨→⑩→⑪→⑫의 순서대로 오류를 복구하였다. 그런데 이 복구 과정은 역으로 진행되어도 된다. 즉, (j+1)디스크 즉, 다섯 번째 디스크의 사선 패리티 블록을 이용하여 두 번째(i=2) 디스크의 해당 블록(두번째 블록임)을 알 수 있다. 상기 해당 블록이 도 23에서 볼 수 있는 바와 같이 ⑫ 블록이다. 복구된 ⑫ 블록의 수평 패리티 그룹을 이용하면 ⑪ 블록을 복구할 수 있다. 그 다음에는 복구된 ⑪ 블록의 사선 패리티 그룹을 이용하면 ⑩ 블록을 복구할 수 있다. 다시 말하면, ⑫→⑪→⑩→⑨→⑧→⑦→⑥→⑤→④→③→②→①의 순서로 복구가 된다는 것이로, 이 과정은 (i+1) 디스크의 사선 패리티 블록부터 이용하는 복구 순서의 역방향이고 중간과정이 겹쳐지지 않는다. 따라서 복구시에 과정을 양방향으로 동시에 진행시킬 경우 복구시간이 최대 1/2까지 감소할 수 있다.FIG. 23 is an exemplary diagram for explaining parallelism of the error recovery method according to the embodiment of the present invention, where N = 7 is used as an example of an error recovery process according to the DH scheme. When an error occurs in the second disk (i = 1) and the fourth disk (j = 3), in the present invention, the sequence shown in FIG. 23, that is, ① → ② → ③ → ④ → ⑤ → ⑥ → ⑦ → ⑧ → ⑨ → ⑩ → ⑪ → ⑫. However, this recovery process may be reversed. That is, the corresponding block (the second block) of the second (i = 2) disk can be found by using the (j + 1) th disk, that is, the shaded parity block of the fifth disk. The corresponding block is a block 12 as shown in FIG. ⑪ Block can be recovered by using horizontal parity group of restored ⑫ block. Then, using the diagonal parity group of the restored ⑪ block, the ⑩ block can be recovered. In other words, it is restored in the order of ⑫ → ⑪ → ⑩ → ⑨ → ⑧ → ⑦ → ⑥ → ⑤ → ④ → ③ → ② → ①. The reverse order of the recovery order and the intermediate process are not superimposed. Therefore, if the process is performed in both directions at the same time, the recovery time can be reduced by up to half.

하기에서는 본 발명의 실시예에 따른 DH, DH2 기법의 성능평가를 다른 기법들(이차원 패리티 기법, EVENODD기법)과 비교하여 설명한다. 성능평가 지표는 하기 (1)∼(4)를 예로 든다.The performance evaluation of the DH and DH2 schemes according to the embodiment of the present invention will be described below in comparison with other schemes (two-dimensional parity scheme, EVENODD scheme). The performance evaluation indexes are exemplified by the following (1) to (4).

(1) 데이터 손실에 대한 평균 시간(the Mean Time To Date Loss : MTTDL)(1) Mean Time to Data Loss (MTTDL)

(2) 패리티 디스크 오버헤드(parity disk overhead)(2) Parity disk overhead

(3) 갱신부담(update penalty)(3) Update penalty

(4) 그룹 사이즈(group size)(4) Group size

하기 설명의 표 및 참조되는 도면에서는 이차원 패리티 기법을 2D로, EVENODD 기법을 EO로, DH 기법을 DH로, DH2 기법을 DH2로 간략화하여 표현할 것이다.In the following tables and referenced drawings, the two-dimensional parity scheme will be expressed in 2D, the EVENODD scheme will be expressed as EO, the DH scheme as DH, and the DH2 scheme as DH2.

먼저 각 기법의 (1) 데이터 손실에 대한 평균시간에 관해 비교 설명을 한다.First, a comparison of the average time for data loss of each technique (1) will be described.

MTTDL은 데이터 손실에 대한 평균 시간을 의미하는데 두 개의 디스크에서 오류가 발생시 복구할 수 있는 방법에서는 하기의 수학식 15로 표현될 수 있다.MTTDL means the average time for data loss. In a method that can be recovered when an error occurs in two disks, it can be expressed by the following equation (15).

여기서, MTTF(disk)는 하나의 디스크에서 오류 발생의 평균 시간(the Mean Time To Failure)을 의미하고, MTTR은 재구성에 필요한 평균 시간(the Mean Time To Reconstruct)이며, N은 전체 디스크 수를, 그리고 G는 에러 정정 그룹의 크기를 나타낸다. MTTDL은 가장 중요한 성능 평가 기준이긴 하지만 그 시간의 크기가 보통 몇 만 년이상으로 나오기 때문에 실제 값은 성능 평가에 있어서 큰 의미가 없다고 볼 수 있다. 예를 들어, MTTF(disk)를 200,000시간, MTTF(disk2)를 20,000시간, MTTF(disk3)를 2,000시간으로, MTTR을 1시간으로 가정하고 이차원 패리티 기법으로 100개의 데이터 디스크를 사용할 경우에 패리티 디스크는 20개가 필요하므로 전체 디스크 수 N은 120이며 그룹 크기 G는 11이 된다. 따라서 MTTDL은 약 8만 5천년이 나오게 된다. 그런데 MTTDL을 살펴보면 MTTF(disk)와 MTTR이 일종의 상수이므로 MTTDL은 디스크 어레이를 구성하는 전체 디스크 수 N과 에러 정정 그룹의 크기 G의 제곱에 반비례 한다. 따라서 MTTTDL은 하기의 수학식 16과 같이 단순화하여 MTTDLS로 표현할 수 있고 이의 역수(inverse)값인 MTTDLSI는 수학식 17이다.Here, MTTF (disk) means the mean time to failure in one disk, MTTR is the mean time to reconstruction (reconstruction), N is the total number of disks, And G represents the size of the error correction group. Although the MTTDL is the most important performance criterion, the actual value is not meaningful for performance evaluation because the time is usually over several thousand years. For example, assuming that 200,000 hours of MTTF (disk), 20,000 hours of MTTF (disk2), 2,000 hours of MTTF (disk3), and 1 hour of MTTR are used, when 100 data disks are used in a two- The total number of disks N is 120 and the group size G is 11. Therefore, the MTTDL is about 85,000 years old. In MTTDL, MTTF (disk) and MTTR are constants, so MTTDL is inversely proportional to the square of the total number of disks N constituting the disk array and the size G of the error correction group. Therefore, MTTTDL can be expressed as MTTDL S and MTTDL SI, which is an inverse value thereof, can be simplified as shown in Equation (16) below.

하기 표 5와 같이 주어진 데이터 디스크 수에 따라 MTTDLS를 표현하면 하기 표 6이 되고, MTTDLSI를 그래프로 나타내면 도 24와 같다.Table 6 shows MTTDL S according to a given number of data discs as shown in Table 5, and FIG. 24 shows MTTDL SI as a graph.

2D2D EOEO DHDH DH2DH2 데이터 디스크 수Number of data discs mm mm mm m+1m + 1 패리티 디스크 수Number of parity disks 22 22 22 전체 디스크 수Total number of disks m+2m + 2 m+2m + 2 m+3m + 3

2D2D EOEO 데이터 디스크 수Number of data discs mm mm 전체 디스크 수(N)Total number of disks (N) 에러정정 그룹의 크기(G)Size of error correction group (G) MTTDLS MTTDL S DHDH DH2DH2 데이터 디스크 수Number of data discs mm m+1m + 1 전체 디스크 수(N)Total number of disks (N) m+2m + 2 m+3m + 3 에러정정 그룹의 크기(G)Size of error correction group (G) m+2m + 2 MTTDLS MTTDL S

다음으로 각 기법의 (2) 패리티 디스크 오버헤드(parity disk overhead)에 관해 비교 설명을 한다.Next, (2) parity disk overhead of each technique will be compared.

패리티 디스크 오버헤드는 데이터 디스크 수와 패리티 디스크 수의 비로서 하기 수학식 18과 같이 표현된다.The parity disk overhead is expressed by the following equation (18) as the ratio of the number of data disks to the number of parity disks.

패리티 디스크 오버헤드가 작다는 것은 같은 수의 디스크로 디스크 어레이를 구성할 때 상대적으로 많은 양의 데이터를 저장할 수 있다는 것이고 동수의 데이터 디스크를 사용할 때 패리티 디스크 오버헤드가 크면 패리티 디스크의 수를 많이 사용하게 되므로 디스크의 이용의 효율이 떨어진다고 볼 수 있다. 즉, 패리티 디스크 오버헤드는 가격 대 성능 비의 평가 기준이 될 수 있고 디스크의 수의 효율성을 나타내는 지표가 된다. 하기 표 7은 데이터 디스크 수를 m이라고 했을 때 각 기법들의 패리티 디스크 오버헤드를 나타낸 것으로 동수의 데이터 디스크를 사용하여 디스크 어레이를 구성할 경우에 이차원 패리티 기법의 오버헤드가 가장 큰 것을 알 수 있다. 즉, 이차원 패리티 기법의 패리티 오버헤드가 다른 기법에 비해 약배 만큼 큰 것을 알 수 있고 따라서 디스크 이용의 효율성이 떨어짐을 알 수 있다. 따라서 이차원 패리티 기법은 디스크 이용의 효율성이 다른 기법들에 비해 떨어진다.Parity The small disk overhead means that you can store a relatively large amount of data when you configure a disk array with the same number of disks. If you use the same number of data disks, the larger the parity disk overhead, The efficiency of use of the disk is reduced. That is, the parity disk overhead can be a criterion for evaluating the price-to-performance ratio and is an index indicating the efficiency of the number of disks. Table 7 shows the parity disk overhead of each technique when the number of data discs is m. It can be seen that the overhead of the two-dimensional parity technique is greatest when a disk array is constructed using the same number of data discs. That is, the parity overhead of the two-dimensional parity scheme is about And the efficiency of disk utilization is lowered. Therefore, the efficiency of disk utilization is lower than that of other schemes.

2D2D EOEO DHDH DH2DH2 데이터 디스크 수Number of data discs mm mm mm m+1m + 1 패리티 디스크 수Number of parity disks 22 22 22 패리티 디스크 오버헤드Parity disk overhead

다음으로 각 기법의 (3) 갱신부담(update penalty)에 관해 비교 설명을 한다.Next, we compare (3) update penalty of each technique.

갱신 부담 비용은 디스크 어레이에서 데이터 디스크의 정보를 갱신시 접근해야 할 패리티 디스크의 수를 나타낸 것으로 두 개의 디스크에서 오류 발생시 복구할 수 있는 기법에서 최적의 갱신 부담 비용은 2이다. 그러나 갱신 부담 비용이 클 경우 데이터 디스크의 갱신시 부가적인 패리티 디스크 접근이 필요하므로 쓰기 작업시 성능 저하의 원인이 된다. 이차원 패리티 기법과 DH2 기법인 경우에는 최적 갱신 부담 비용 조건을 만족하는데 비해 EVENODD기법과 DH 기법인 경우 그보다 크다. EVENODD 기법인 경우에는 도 25에서와 같이 사선값 S에 해당하는 데이터 블록들을 갱신할 때에는 모든 사선 패리티 블록들을 갱신해야 하므로 갱신 부담 비용에 오버헤드가 존재한다. 즉, m개의 데이터 디스크로 디스크 어레이를 구성할 경우 데이터 디스크의 정보를 갱신시 접근해야 하는 패리티 디스크의 수는 2이지만 패리티 블록의 수는 수평 패리티 블록을 한 번, 그리고 사선 패리티 블록을 (m-1)번이므로 결국 m번의 패리티 블록 갱신이 필요하고, 그 밖에는 두 번이 되므로 평균적인 패리티 블록은 접근은 하기와 같다.The update cost represents the number of parity disks to be accessed when updating the data disk information in the disk array. The optimal update cost is 2 in the technique that can recover from errors in two disks. However, if the update cost is high, additional parity disk access is required to update the data disk, which may cause performance degradation in the write operation. For the two-dimensional parity and DH2 schemes, the optimal update burden cost condition is satisfied, whereas the EVENODD and DH schemes are larger than the two-dimensional parity and DH2 schemes. In the case of the EVENODD scheme, all the oblique parity blocks need to be updated when data blocks corresponding to the slant value S are updated as shown in FIG. 25, so there is an overhead in the update burden cost. That is, when the disk array is constituted by m data disks, the number of parity disks to be accessed when updating the information of the data disk is 2, but the number of parity blocks is one for the horizontal parity block, 1), so the parity block needs to be updated m times. In other cases, the parity block is accessed twice.

또한 DH 기법에서는 모든 데이터 블록의 갱신시 수평 패리티 블록 및 사선 패리티 블록을 갱신해야 할 뿐만 아니라 패리티 블록들의 패리티 값을 유지해야 하므로 갱신 부담 비용은 3이 된다. 도 26은 빗금친 블록을 갱신했을 대의 갱신해야 할 피리티 블록을 표현한 것이다.In addition, in the DH method, not only the horizontal parity block and the oblique parity block need to be updated at the time of updating all the data blocks, but the parity value of the parity blocks must be maintained. FIG. 26 is a representation of a Pareto block to be updated when a hatched block is updated.

하기의 표 8은 각 기법에 대한 갱신 부담 비용을 비교한 것으로 EVENODD 기법에서 α로 표현된 것은 상기에서 설명한 오버헤드를 의미한다. 그러므로 최적의 갱신 부담 비용을 갖는 것은 이차원 패리티 기법과 DH2 기법임을 알 수 있다.Table 8 below compares the update burden cost for each technique. In the EVENODD technique, the overhead described above is represented by?. Therefore, it can be seen that the two-dimensional parity scheme and the DH2 scheme have the optimum update cost.

2D2D EOEO DHDH DH2DH2 갱신 부담 비용Renewal cost 22 2+α2 + alpha 33 22

마지막으로 각 기법의 (4) 그룹 사이즈(group size)에 관해 비교 설명을 한다.Finally, we compare (4) the group size of each technique.

에러 정정 그룹(error correcting group)의 크기를 말하는 그룹 사이즈는 하나의 디스크에서 오류 발생시 복구하는 동안 접근해야 할 디스크의 집합으로 정의된다. 상기 그룹 사이즈는 복구시 다시 읽어야 할 디스크의 수가 증가함에 따라 재구성 기간이 선형적으로 확대되기 때문에 의미가 있다. 또한 복구 중에도 입출력 요구를 만족할 수 있어야 하고 앞에서 살펴본 MTTDL(the Mean Time To Date Loss )은 그룹 사이즈에 반비례하므로 그룹 사이즈는 작은 것이 좋다. RAID 레벨 6에 해당하는 기법들은 하나의 데이터 블록에 대해 두 개의 패리티 블록이 패리티 값을 가지고 있어야 하므로 두 개의 그룹 사이즈가 존재한다. 즉, 이차원 패리티 기법은 가로 패리티 및 세로 패리티, EVENODD 기법과 DH 기법 및 DH2 기법은 수평 패리티 및 사선 패리티 에러 정정 그룹이 각각 존재하므로 이들을 구분하여 각 기법의 이름은 G의 위첨자에 표현하고 각 패리티 그룹의 영문 머릿글자를 G의 아래첨자 표현하여 나타내도록 한다. 그리고 아래첨자 없는 것은 두 그룹 사이즈의 평균을 의미한다. 먼저 이차원 패리티 기법의 그룹 사이즈를 살펴보면 데이터 디스크의 수가 m일 때 가로 패리티 그룹 사이즈및 세로 패리티 그룹 사이즈혹은이고 평균이고 이를 정리하면이다. 여기서,는 X보다 크지 않는 정수를 의미하고,는 X보다 적지 않는 정수를 의미한다. EVENODD 기법에서는 수평 패리티 그룹 사이즈가 m+1이고 사선 그룹 사이즈는 2(m-1)+1이므로 평균이다. DH 기법의는 (m+2)이고는 (m+1)이므로 평균이며, DH2 기법의는 각각 (m+3) 및 (m+1)이고 평균이다. 이를 정리한 것이 하기 표 9이고 도 27에서는 몇 개의 예에 대한 그룹 사이즈를 그래프로 나타낸 것이다. 도 27을 참조하면, 이차원 패리티 기법의 그룹 사이즈가 가장 적고, EVENODD 기법이 사선값 S의 오버헤드로 인해 가장 크게 나타남을 알 수 있다.The group size, which refers to the size of an error correcting group, is defined as the set of disks that must be accessed while recovering from an error in one disk. The group size is meaningful because the reconstruction period linearly increases as the number of disks to be read back at the time of recovery increases. Also, the MTTDL (the Mean Time To Date Loss) is in inverse proportion to the group size, so the group size should be small. For RAID level 6, there are two group sizes because two parity blocks must have a parity value for one data block. That is, horizontal parity and vertical parity for the two-dimensional parity scheme, horizontal parity and diagonal parity error correction groups for the EVENODD scheme, DH scheme, and DH2 scheme are respectively distinguished and the names of the respective schemes are expressed in superscripts of G, Let the English header of G be expressed as a subscript of G. And the absence of subscripts means the average of the two group sizes. First, when considering the group size of the two-dimensional parity scheme, when the number of data disks is m, the horizontal parity group size And vertical parity group size The or And average The And summarizing it to be. here, Means an integer not greater than X, Means an integer not less than X. In the EVENODD technique, the horizontal parity group size Is m + 1 and the diagonal group size Is 2 (m-1) +1, end to be. DH technique (M + 2) &lt; / RTI &gt; (M + 1), the average The , The DH2 technique And (M + 3) and (m + 1), respectively, The to be. This is summarized in Table 9 below, and in FIG. 27 a graph of the group size for several examples is shown. Referring to FIG. 27, it can be seen that the group size of the two-dimensional parity scheme is the smallest, and the EVENODD scheme is the largest due to the overhead of the slanting value S. FIG.

2D2D EOEO DHDH DH2DH2 데이터 디스크 수Number of data discs mm mm mm m+1m + 1 GS 평균GS average

결론적으로, 본 발명의 일실시예인 DH 기법은 소수 N개로 이루어진 디스크 어레이에서 임의의 두 개의 디스크가 오류 발생하여도 사선 패리티와 수평 패리티를 반복적으로 적용함으로써 복구 가능하고 패리티 블록을 분산시킴으로써 기존 기법들의 성능 저하 요인을 제거하였다. 또한 디스크 오류시 복구과정을 양 방향의 병렬로 처리함으로써 복구 시간을 줄일 수 있는 정점도 있다. 다만 데이터 디스크의 내용을 갱신시 세 번의 디스크 접근을 필요로 하는 데 이는 성능 저하의 요인이 될 수 있다. 그러나 디스크 캐쉬나 기타의 방법을 통해 극복할 수 있다. 도 1에 도시된 바와 같이 본 발명의 디스크 어레이 시스템에서는 디스크들 8-0∼8-(n-1) 각각에 버퍼들 6-0∼6-(n-1)이 각각 구비되어 있다. 이들 버퍼들 6-0∼6-(n-1)이 버퍼링(buffering) 및 캐슁(caching)에 사용된다. 비동기적 쓰기(asynchronous write)라고도 불리는 쓰기 버퍼링(write buffering)은 디스크에 기록하기 전에 사용자의 기록 요구를 인지하는 방식으로 이 기법은 사용자가 느끼는 응답 지연 시간을 줄여 줌으로써 작업량(load)을 완화시켜 준다. 상기 쓰기 버퍼링의 한 기법으로서 일련의 기록 요구를 하나의 그룹으로 묶어서 처리하는 방법이 있다. 또한 최근에 갱신된 패리티를 캐슁함으로써 기존의 패리티 데이터를 읽는 것이 필요없게 되기 때문에 작은 쓰기에서 필요한 디스크 접근을 3번에서 2번까지로 줄일 수 있다.As a result, the DH scheme, which is an embodiment of the present invention, can be recovered by repeatedly applying diagonal parity and horizontal parity even if any two disks in the disk array having a small number of N fail, and by distributing the parity blocks, The performance degradation factor was removed. In addition, there is a peak that can reduce the recovery time by processing the disk failure recovery process in both directions in parallel. However, when updating the contents of the data disk, three disk accesses are required, which may cause degradation in performance. However, it can be overcome through disk caching or other methods. As shown in FIG. 1, in the disk array system of the present invention, buffers 6-0 to 6- (n-1) are respectively provided in the disks 8-0 to 8- (n-1). These buffers 6-0-6- (n-1) are used for buffering and caching. Write buffering, also referred to as asynchronous write, is a method of recognizing user write requests before writing to disk. This technique reduces the response latency experienced by the user, thereby alleviating the load . As a technique of the write buffering, there is a method of grouping a series of write requests into one group and processing them. In addition, since it is not necessary to read the existing parity data by caching the recently updated parity, the disk access required for small writing can be reduced to 3 to 2 times.

본 발명의 다른 실시예인 DH2 기법은, 사선 패리티 블록들은 데이터 디스크에 분산하므로 DH 기법에서의 구조와 유사하나 패리티 블록들을 하나의 패리티 디스크에 배치시킴으로써 DH 기법의 문제점, 즉 데이터 디스크의 내용을 갱신시 추가적으로 패리티 디스크를 접근해야 하는 갱신 부담비용을 2로 줄인 것이다. 비록 DH2 기법에서는 수평 패리티 디스크에 여유블록(spare block)이 생겨 디스크 효율성에 문제가 될 수 있으나, 이 블록을 기존의 작은 쓰기 문제(small write problem) 해결을 위한 방법 등에 적용시켜 활용한다면 오히러 그 용도를 증가시킬 수 있다.The DH2 scheme, which is another embodiment of the present invention, is similar to the structure in the DH scheme because diagonal parity blocks are distributed on a data disk. However, by disposing parity blocks on one parity disk, the problem of the DH scheme, In addition, the cost of updating the parity disk should be reduced to two. Although the DH2 technique may cause a spare block in a horizontal parity disk, it may cause a problem in disk efficiency. However, if the block is applied to a method for solving a small write problem, It can increase the usage.

상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 따라서 본 발명의 범위는 설명된 실시예에 의하여 정할 것이 아니고 특허청구의 범위와 특허청구의 범위의 균등한 것에 의해 정해 져야 한다.While the present invention has been described in connection with certain exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. Therefore, the scope of the present invention should not be limited by the described embodiments but should be determined by the equivalents of the claims and the claims.

상술한 바와 같이 본 발명은 소수 N개로 이루어진 디스크 어레이에서 임의의두 개의 디스크가 오류 발생하여도 사선 패리티와 수평 패리티를 반복적으로 적용함으로써 복구 가능하고 최적의 오버헤드를 유지한다. 그리고 패리티 블록을 분산시킴으로써 병목현상을 해결하였다. 그래서 시스템 성능을 향상시킨다. 또한 복구과정의 병렬성을 이용하여 양 방향에서 복구가 가능하므로 복구시간을 단축시킬 수도 있다.As described above, the present invention can recover and optimize overhead by repeatedly applying diagonal parity and horizontal parity even if an error occurs in any two disks in a disk array made up of a few N pieces. We also solve the bottleneck by distributing the parity blocks. Thus improving system performance. In addition, the parallelism of the recovery process can be used to recover from both directions, which may shorten the recovery time.

Claims (24)

외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 방법에 있어서:CLAIMS 1. A method for recovering data in parity storage and disk failure in an external storage subsystem, comprising: 소수 N개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*N 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 바로 이전 번째(N-1번째) 디스크의 첫 번째 블록에서 사선방향이 되게 각 디스크에 하나씩 배치시키고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록에 배치시키는 과정과;(N-1) * N matrix by making a number of N disks and each disk of the disks to be (N-1) block units, and blocks of each row of the matrix are divided into horizontal parity Group is defined as a diagonal parity group, and blocks of cyclic configuration are defined as diagonal parity groups in the upper right diagonal direction of the matrix, and horizontal parity blocks are defined as diagonal directions in the first block of the immediately preceding (N-1) (N-1) -th block of each disk; 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 각각 저장하는 패리티 저장 과정과;A parity storing step of performing XOR operation on the data values of each of the horizontal and diagonal parity groups and storing the data values in the horizontal and diagonal parity blocks of the corresponding group; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 복구과정;으로 이루어짐을 특징으로 하는 방법.If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And recovering all the fail blocks of the two failed disks by repeatedly applying the above process. 제1항에 있어서, 하나의 디스크에서 에러가 발생시 상기 수평 패리티 그룹들의 나머지 블록들을 이용하여 상기 에러 발생된 디스크의 해당 블록들을 복구하는 과정을 더 가짐을 특징으로 하는 방법.The method of claim 1, further comprising the step of restoring the corresponding blocks of the erroneous disk using the remaining blocks of the horizontal parity groups when an error occurs in one disk. 제1항에 있어서, 상기 (N-1)*N 행렬을 디스크 j의 논리적 블록 i의 값을 나타내는 a(i,j)형태(여기서, i는 0≤i≤N-2이고, j는 0≤i≤N-1)로 표현하면, 상기 수평 패리티 블록들은 a(i,N-2-i)임을 특징으로 하는 방법.2. The method of claim 1, wherein the (N-1) * N matrix is a (i, j) type representing a value of a logical block i of a disk j where i is 0? I? N-2 and j is 0 I? N-1), the horizontal parity blocks are a (i, N-2-i) . 제3항에 있어서, 상기 사선 패리티 블록들은 a(N-2,j)임을 특징으로 하는 방법.4. The method of claim 3, wherein the diagonal parity blocks are a (N-2, j) . 제4항에 있어서, 상기 수평 패리티 블록들 a(i,N-2-i)에는 하기 수학식 19에 의거한 배타적 논리합 계산이 수행되어 수평 패리티 값이 저장됨을 특징으로 하는 방법.The method of claim 4, wherein the exclusive OR computation is performed on the horizontal parity blocks a (i, N-2-i) according to Equation (19 ) to store a horizontal parity value. 제4항에 있어서, 사선 패리티 블록들 a(N-2,j)에는 하기 수학식 20에 의거한 배타적 논리합 계산이 수행되어 사선 패리티 값이 저장됨을 특징으로 하는 방법.5. The method of claim 4, wherein the exclusive OR computation is performed on the oblique parity blocks a (N-2, j) according to the following equation (20 ) to store the oblique parity values. 제4항에 있어서, 디스크 i와 디스크 j에서 에러가 발생될 경우(0≤i〈j≤(N-1)), 상기 디스크 j의 에러 발생된 블록들 a(n,j)에는 하기 수학식 21에 의거하여 원래의 데이터가 복구됨을 특징으로 방법.The method of claim 4, wherein said case is an error on the disk and disk i j (0≤i <j≤ (N- 1)), to the error block of the disk a j (n, j) Equation RTI ID = 0.0 &gt; 21, &lt; / RTI &gt; n = N-1-k-m*k mod N, k=j-i, m은 0에서 N-2까지.n = N-1-k-m * k mod N, k = j-i, m is from 0 to N-2. 제4항에 있어서, 디스크 i와 디스크 j에서 에러가 발생될 경우(0≤i〈j≤(N-1)), 상기 디스크 i의 에러 발생된 블록들 a(n,i)에는 하기 수학식 22에 의거하여 원래의 데이터가 복구됨을 특징으로 방법.The method of claim 4, wherein said case is an error on the disk and disk i j (0≤i <j≤ (N- 1)), the error block of the disk a i (n, i) Equation The original data is restored based on the original data. n = N-1-k-m*k mod N, k=j-i, m은 0에서 N-2까지.n = N-1-k-m * k mod N, k = j-i, m is from 0 to N-2. 외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 방법에 있어서:CLAIMS 1. A method for recovering data in parity storage and disk failure in an external storage subsystem, comprising: N+1(N은 소수)개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*(N+1) 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 마지막 번째(N+1번째) 디스크의 블록을 제외한 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 번째(N+1번째) 디스크의 블록들에 배치시키고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록들에 배치시키는 과정과;1) * (N + 1) matrix by making N + 1 (N is a prime number) disks and each disk of the disks to be (N-1) block units, Blocks of each row of the matrix are defined as a horizontal parity group, and blocks of cyclic configuration are defined as a diagonal parity group in the upper right diagonal direction of the matrix except for the block of the last (N + 1) th disk, Arranging blocks in blocks of the last (N + 1) th disk and disposing oblique parity blocks in (N-1) th blocks of each disk; 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 각각 저장하는 패리티 저장 과정과;A parity storing step of performing XOR operation on the data values of each of the horizontal and diagonal parity groups and storing the data values in the horizontal and diagonal parity blocks of the corresponding group; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 복구과정;으로 이루어짐을 특징으로 하는 방법.If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And recovering all the fail blocks of the two failed disks by repeatedly applying the above process. 제9항에 있어서, 하나의 디스크에서 에러가 발생시 상기 수평 패리티 그룹들의 나머지 블록들을 이용하여 상기 에러 발생된 디스크의 해당 블록들을 복구하는 과정을 더 가짐을 특징으로 하는 방법.10. The method of claim 9, further comprising the step of restoring the corresponding blocks of the erroneous disk using the remaining blocks of the horizontal parity groups when an error occurs in one disk. 제9항에 있어서, 상기 (N-1)*(N+1) 행렬을 디스크 j의 논리적 블록 i의 값을 나타내는 a(i,j)형태(여기서, i는 0≤i≤N-2이고, j는 0≤i≤N)로 표현하면, 상기 수평 패리티 블록들은 a(i,N)임을 특징으로 하는 방법.The method of claim 9, wherein the (N-1) * (N + 1) matrix is a (i, j) , j is 0? i? N) , the horizontal parity blocks are a (i, N) . 제11항에 있어서, 상기 사선 패리티 블록들은 a(N-2,i)임을 특징으로 하는 방법.12. The method of claim 11, wherein the diagonal parity blocks are a (N-2, i) . 제11항에 있어서, 상기 수평 패리티 블록들 a(i,N)에는 하기 수학식 23에 의거한 배타적 논리합 계산이 수행되어 수평 패리티 값이 저장됨을 특징으로 하는 방법.12. The method of claim 11, wherein the exclusive OR computation is performed on the horizontal parity blocks a (i, N) according to Equation (23 ) to store a horizontal parity value. 제11항에 있어서, 사선 패리티 블록들 a(N-2,i)에는 하기 수학식 24에 의거한 배타적 논리합 계산이 수행되어 사선 패리티 값이 저장됨을 특징으로 하는 방법.12. The method of claim 11, wherein the exclusive OR computation is performed on the diagonal parity blocks a (N-2, i) according to Equation (24 ) to store the oblique parity values. 제11항에 있어서, 디스크 i와 디스크 j에서 에러가 발생될 경우(0≤i〈j≤(N-1)), 상기 디스크 j의 에러 발생된 블록들 a(n,j)에는 하기 수학식 25에 의거하여 원래의 데이터가 복구됨을 특징으로 방법.12. The method of claim 11, wherein said case is an error in the disk and the disk i j (0≤i <j≤ (N- 1)), to the error block of the disk a j (n, j) Equation 25, &lt; / RTI &gt; n = N-1-k-m*k mod N, k=j-i, m은 0에서 N-2까지.n = N-1-k-m * k mod N, k = j-i, m is from 0 to N-2. 제11항에 있어서, 디스크 i와 디스크 j에서 에러가 발생될 경우(0≤i〈j≤(N-1)), 상기 디스크 i의 에러 발생된 블록들 a(n,i)에는 하기 수학식 26 및 수학식 27 (n=(N-2)인 경우)에 의거하여 원래의 데이터가 복구됨을 특징으로 방법.12. The method of claim 11, wherein the errored blocks a (n, i) of the disk i are subjected to the following equations if an error occurs in disk i and disk j (0? I <j? 26 and (27) (where n = (N-2)). n = N-1-k-m*k mod N ≠ N-2, k=j-i, m은 0에서 N-2까지.n = N-1-k-m * k mod N = N-2, k = j-i, m = 0 to N-2. , n = N-1-k-m*k mod N = N-2, k=j-i, m은 0에서 N-2까지. , n = N-1-km * k mod N = N-2, k = ji, m is from 0 to N-2. 외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 장치에 있어서:An apparatus for recovering data in parity storage and disk failure in an external storage subsystem, the apparatus comprising: 소수 N개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*N 행렬로 정의되며, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 바로 이전 번째(N-1번째) 디스크의 첫 번째 블록에서 사선방향이 되게 각 디스크에 하나씩 배치되고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록에 배치된 구조의 디스크 어레이와,(N-1) * N matrix by making a number of N disks and each disk of the disks be (N-1) block unit, blocks of each row of the matrix are defined as a horizontal parity group, Blocks of circulating configuration are defined as a diagonal parity group, and the horizontal parity blocks are arranged one by one on each disk so as to be oblique to the first block of the immediately preceding (N-1) th disk The disk array of the structure in which the oblique parity blocks are arranged in the (N-1) th block of each disk, 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 수평 및 수직 패리티 값을 각각 저장하고; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 제어장치로 구성함을 특징으로 하는 장치.Performing XOR operation on the data values of each of the horizontal and diagonal parity groups to store horizontal and vertical parity values in horizontal and diagonal parity blocks of the group, respectively; If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And a controller for repeatedly applying the above process to recover all the fail blocks of the two failed disks. 제17항에 있어서, 상기 제어장치가 하나의 디스크에서 에러가 발생시 상기 수평 패리티 그룹들의 나머지 블록들을 이용하여 상기 에러 발생된 디스크의 해당 블록들을 복구함을 특징으로 하는 장치.18. The apparatus of claim 17, wherein when the error occurs in one disk, the controller recovers the corresponding blocks of the erroneous disk using the remaining blocks of the horizontal parity groups. 제17항에 있어서, 상기 디스크어레이의 각 디스크들과 상기 제어장치 간에는 데이터 디스크의 내용을 갱신시 상기 제어장치에서의 디스크 접근을 줄이기 위해 상기 디스크의 데이터 버퍼링 및 캐슁하는 버퍼들이 각각 구비됨을 특징으로 하는 장치.18. The apparatus of claim 17, wherein buffers for buffering and caching data of the disk are provided between the disks of the disk array and the controller to reduce disk access in the controller when updating the contents of the data disk, . 외부 저장 서브시스템에서 패리티 저장 및 디스크 페일시 데이터 복구하는 장치에 있어서:An apparatus for recovering data in parity storage and disk failure in an external storage subsystem, the apparatus comprising: N+1(N은 소수)개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*(N+1) 행렬로 정의되고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 마지막 번째(N+1번째) 디스크의 블록을 제외한 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 번째(N+1번째) 디스크의 블록들에 배치되고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록들에 배치된 구조의 디스크 어레이와,1) * (N + 1) matrix by making N + 1 (N is a prime number) disks and each disk of the disks to be (N-1) block units, and each row Blocks are defined as a horizontal parity group, and blocks of cyclic configuration are defined as diagonal parity groups in the upper right diagonal direction of the matrix excluding the block of the last (N + 1) th disk, and the horizontal parity blocks are defined as the last (N-1) -th disk), and a disk array having a structure in which oblique parity blocks are arranged in (N-1) -th blocks of each disk, 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 수평 패리티 값 및 사선 패리티 값을 각각 저장하고; 두 개의 디스크에서 에러가 발생시 하나의 페일블록이 포함된 사선 패리티 그룹을 이용하여 상기 페일 블록을 복구하고 그후 상기 복구된 페일블록의 수평 패리티 그룹을 이용하여 상기 수평 패리티 블록의 페일 블록을 복구하며, 상기 과정을 반복적으로 적용하여 에러 발생된 두 개의 디스크의 페일 블록들을 모두 복구하는 제어장치로 구성함을 특징으로 하는 장치.Performing XOR operation on the data values of each of the horizontal and diagonal parity groups to store a horizontal parity value and a diagonal parity value in horizontal and diagonal parity blocks of the group, respectively; If an error occurs in the two disks, restores the fail block using a diagonal parity group including one fail block, and then restores the fail block of the horizontal parity block using a horizontal parity group of the recovered fail block, And a controller for repeatedly applying the above process to recover all the fail blocks of the two failed disks. 제20항에 있어서, 상기 제어장치가 하나의 디스크에서 에러가 발생시 상기 수평 패리티 그룹들의 나머지 블록들을 이용하여 상기 에러 발생된 디스크의 해당 블록들을 복구함을 특징으로 하는 장치.21. The apparatus of claim 20, wherein, when an error occurs in one disk, the controller recovers the corresponding blocks of the erroneous disk using the remaining blocks of the horizontal parity groups. 제20항에 있어서, 상기 디스크어레이의 각 디스크들과 상기 제어장치 간에는 데이터 디스크의 내용을 갱신시 상기 제어장치에서의 디스크 접근을 줄이기 위해 상기 디스크의 데이터 버퍼링 및 캐슁하는 버퍼들이 각각 구비됨을 특징으로 하는 장치.21. The apparatus of claim 20, wherein buffers for buffering and caching data of the disk are provided between each disk of the disk array and the controller to reduce disk access in the controller when updating the contents of the data disk, . 소수 N개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*N 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 바로 이전 번째(N-1번째) 디스크의 첫 번째 블록에서 사선방향이 되게 각 디스크에 하나씩 배치되고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록에 배치되며, 제어장치에 의해 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 수평 및 사선 패리티 값으로 각각 저장하고 있는 외부 저장 서브시스템에서 디스크 i와 디스크 j가(0≤i〈j≤(N-1) 오류 발생시 데이터를 복구하는 방법에 있어서:(N-1) * N matrix by making a number of N disks and each disk of the disks to be (N-1) block units, and blocks of each row of the matrix are divided into horizontal parity Group is defined as a diagonal parity group, and blocks of cyclic configuration are defined as diagonal parity groups in the upper right diagonal direction of the matrix, and horizontal parity blocks are defined as diagonal directions in the first block of the immediately preceding (N-1) (N-1) -th block of each disk, and the data values of each of the horizontal and diagonal parity groups are XORed by the controller, And disk diagonal parity blocks are stored as horizontal and diagonal parity values, respectively. In an external storage subsystem, disk i and disk j are stored in (0? I <j? (N-1) A method for recovering data in case of: 상기 오류 발생된 디스크 i와 j의 차이값인 k를 구하고 페일된 디스크들의 블록 복구 과정을 반복 적용하기 위한 변수 m을 0으로 초기화하는 제1과정과,A first step of obtaining a difference value k between discs i and j in which the error has occurred and initializing a variable m for repeated application of the block recovery process of the failed discs to 0; 해당 사선 패리티 그룹에 오류 발생이 하나만 존재하는 디스크 j의 블록 n(n = N-1-k-m*k mod N) a(n,j)의 값을 하기 수학식 28을 이용하여 구하는 제2과정과, (N, j) of a block n (n = N-1-km * k mod N) a (n, j) of the disk j having only one error occurrence in the oblique parity group using the following equation , 상기 제2과정 수행 후 해당 수평 패리티 그룹에 오류 발생이 하나만 존재하는 디스크 i의 블록 n a(n,i)의 값을 하기 수학식 29를 이용하는 구하는 제3과정과, (N, i) of a disk i having only one error occurrence in a corresponding horizontal parity group after performing the second process using Equation (29 ) ; and 상기 변수 m을 N-2까지 증가시키면서 상기 제2과정 및 제3과정을 반복 수행하는 제4과정으로 이루어짐을 특징으로 하는 방법.And repeating the second and third processes while increasing the variable m to N-2. N+1(N은 소수)개의 디스크들과 상기 디스크들의 각 디스크를 (N-1)개의 블록 단위가 되게하여 (N-1)*(N+1) 행렬로 정의되는 디스크 어레이를 구성하고, 상기 행렬의 각 행들의 블록들을 수평 패리티 그룹으로 정의하고 마지막 번째(N+1번째) 디스크의 블록을 제외한 상기 행렬의 오른쪽 위 사선방향이고 순환적인 구성의 블록들을 사선 패리티 그룹으로 정의하며, 수평 패리티 블록들을 마지막 번째(N+1번째) 디스크의 블록들에 배치되고 사선 패리티 블록들을 각 디스크의 (N-1)번째 블록들에 배치되며, 제어장치에 의해 상기 수평 및 사선 패리티 그룹들 각각의 데이터 값들을 배타적 논리합(XOR) 연산하여 해당 그룹의 수평 및 사선 패리티 블록들에 수평 및 사선 패리티 값으로 각각 저장하고 있는 외부 저장 서브시스템에서 디스크 i와 디스크 j가(0≤i〈j≤(N-1) 오류 발생시 데이터를 복구하는 방법에 있어서:1) * (N + 1) matrix by making N + 1 (N is a prime number) disks and each disk of the disks to be (N-1) block units, Blocks of each row of the matrix are defined as a horizontal parity group, and blocks of cyclic configuration are defined as a diagonal parity group in the upper right diagonal direction of the matrix except for the block of the last (N + 1) th disk, Blocks are arranged in blocks of the last (N + 1) -th disk, and diagonal parity blocks are arranged in (N-1) -th blocks of each disk, and data of each of the horizontal and diagonal parity groups Values are subjected to an exclusive OR (XOR) operation to store the horizontal and the diagonal parity values in the horizontal and the diagonal parity blocks of the corresponding group, respectively. In the external storage subsystem, when the disk i and the disk j satisfy (0? I <j? 1) Oh A method for recovering data in the occurrence of a flow, comprising: 상기 오류 발생된 디스크 i와 j의 차이값인 k를 구하고 페일된 디스크들의 블록 복구 과정을 반복 적용하기 위한 변수 m을 0으로 초기화하는 제1과정과,A first step of obtaining a difference value k between discs i and j in which the error has occurred and initializing a variable m for repeated application of the block recovery process of the failed discs to 0; 해당 사선 패리티 그룹에 오류 발생이 하나만 존재하는 디스크 j의 블록 n(n = N-1-k-m*k mod N) a(n,j)의 값을 하기 수학식 30을 이용하여 구하는 제2과정과, (N, j) of a block n (n = N-1-km * k mod N) a (n, j) of a disk j having only one error occurrence in the oblique parity group using Equation , 상기 제2과정 수행 후 해당 수평 패리티 그룹에 오류 발생이 하나만 존재하는 디스크 i의 블록 n a(n,i)의 값을 하기 수학식 31(n≠N-2일 경우) 및 수학식 32(n=N-2일 경우)를 이용하는 구하는 제3과정과,The value of the block na (n, i) of the disc i having only one error occurrence in the horizontal parity group after the second process is expressed by the following equation (31) (when n ≠ N-2) N-2) is used, 상기 변수 m을 N-2까지 증가시키면서 상기 제2과정 및 제3과정을 반복 수행하는 제4과정으로 이루어짐을 특징으로 하는 방법.And repeating the second and third processes while increasing the variable m to N-2.
KR1019970032758A 1997-07-15 1997-07-15 Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor KR100267366B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1019970032758A KR100267366B1 (en) 1997-07-15 1997-07-15 Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor
JP29236397A JP3587667B2 (en) 1997-07-15 1997-10-24 Parity storage and data repair method for external storage subsystem
CA002225771A CA2225771C (en) 1997-07-15 1997-12-22 Method for storing parity and rebuilding the data contents of failed disks in an external storage subsystem and apparatus therefor
US09/039,679 US6158017A (en) 1997-07-15 1998-03-16 Method for storing parity and rebuilding data contents of failed disks in an external storage subsystem and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970032758A KR100267366B1 (en) 1997-07-15 1997-07-15 Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor

Publications (2)

Publication Number Publication Date
KR19990010106A true KR19990010106A (en) 1999-02-05
KR100267366B1 KR100267366B1 (en) 2000-10-16

Family

ID=19514472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970032758A KR100267366B1 (en) 1997-07-15 1997-07-15 Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor

Country Status (4)

Country Link
US (1) US6158017A (en)
JP (1) JP3587667B2 (en)
KR (1) KR100267366B1 (en)
CA (1) CA2225771C (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341386B1 (en) * 2012-09-18 2013-12-13 한국과학기술원 An efficient block encoding and block placement method for reducing space overhead in distributed file systems

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609219B1 (en) * 2000-01-24 2003-08-19 Hewlett-Packard Development Company, L.P. Data corruption testing technique for a hierarchical storage system
US6636984B1 (en) * 2000-06-15 2003-10-21 International Business Machines Corporation System and method for recovering data from mirror drives following system crash
US6675318B1 (en) * 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6871263B2 (en) * 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
US7636724B2 (en) * 2001-08-31 2009-12-22 Peerify Technologies LLC Data storage system and method by shredding and deshredding
US7016967B2 (en) * 2001-11-08 2006-03-21 Northrop Grumman Corporation Methodology for fast file transfer protocol
US6871317B1 (en) * 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US6851082B1 (en) * 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7007220B2 (en) * 2002-03-01 2006-02-28 Broadlogic Network Technologies, Inc. Error correction coding across multiple channels in content distribution systems
US7080278B1 (en) * 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7539991B2 (en) * 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
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
US6976146B1 (en) 2002-05-21 2005-12-13 Network Appliance, Inc. System and method for emulating block appended checksums on storage devices by sector stealing
US7024585B2 (en) * 2002-06-10 2006-04-04 Lsi Logic Corporation Method, apparatus, and program for data mirroring with striped hotspare
US6848022B2 (en) * 2002-10-02 2005-01-25 Adaptec, Inc. Disk array fault tolerant method and system using two-dimensional parity
US6792391B1 (en) * 2002-11-15 2004-09-14 Adeptec, Inc. Method and system for three disk fault tolerance in a disk array
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
US7093159B1 (en) * 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
US7185144B2 (en) 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors in a raid subsystem
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7149847B2 (en) * 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
US7103716B1 (en) * 2003-06-26 2006-09-05 Adaptec, Inc. RAID 6 disk array with prime number minus one disks
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
US7328305B2 (en) 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7366837B2 (en) * 2003-11-24 2008-04-29 Network Appliance, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
TWI310497B (en) * 2004-02-06 2009-06-01 Hon Hai Prec Ind Co Ltd System and method for disk fault tolerance
CN100419700C (en) * 2004-02-11 2008-09-17 鸿富锦精密工业(深圳)有限公司 Disk faulttolerant system and method
US7243190B2 (en) * 2004-02-13 2007-07-10 International Business Machines Corporation Apparatus and method to rebuild an NVS image using cache data
US7467281B2 (en) * 2004-06-10 2008-12-16 Intel Corporation Mapping data blocks to storage blocks to wrap around storage devices
US7318190B2 (en) * 2004-06-10 2008-01-08 Intel Corporation Storage device parity computation
TWI307836B (en) * 2004-07-02 2009-03-21 Hon Hai Prec Ind Co Ltd System and method for a plurality of disks fault tolerance efficienctly
CN100362782C (en) * 2004-08-24 2008-01-16 华为技术有限公司 Method for recovering drop-out data unit
US7945729B2 (en) * 2004-11-24 2011-05-17 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
JP2006171957A (en) 2004-12-14 2006-06-29 Fujitsu Ltd Storage controller unit and storage control method
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US20060236149A1 (en) * 2005-04-14 2006-10-19 Dell Products L.P. System and method for rebuilding a storage disk
US7363426B2 (en) * 2005-04-26 2008-04-22 Dell Products L.P. System and method for RAID recovery arbitration in shared disk applications
US7577866B1 (en) * 2005-06-27 2009-08-18 Emc Corporation Techniques for fault tolerant data storage
US20070113006A1 (en) * 2005-11-16 2007-05-17 Elliott John C Apparatus and method to configure one or more storage arrays
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7840837B2 (en) 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8898536B2 (en) 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
CN101868785B (en) * 2007-09-21 2014-09-24 惠普开发有限公司 Generating a parallel recovery plan for a data storage system
US20090172244A1 (en) * 2007-12-31 2009-07-02 Chaoyang Wang Hierarchical secondary raid stripe mapping
US7970994B2 (en) * 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
KR20110050404A (en) * 2008-05-16 2011-05-13 퓨전-아이오, 인크. Apparatus, system, and method for detecting and replacing failed data storage
JP2010020648A (en) * 2008-07-12 2010-01-28 Hitachi Ulsi Systems Co Ltd Storage device
ES2380137T3 (en) 2008-08-12 2012-05-08 Strato Ag Data storage system and procedure for its operation
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8495417B2 (en) 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8930622B2 (en) 2009-08-11 2015-01-06 International Business Machines Corporation Multi-level data protection for flash memory system
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8189379B2 (en) 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
CN101719086B (en) * 2009-11-30 2012-10-03 成都市华为赛门铁克科技有限公司 Fault-tolerant processing method and device of disk array and fault-tolerant system
GB201003407D0 (en) * 2010-03-01 2010-04-14 Extas Global Ltd Distributed storage and communication
CN101834898B (en) * 2010-04-29 2013-01-30 中科院成都信息技术有限公司 Method for storing network distributed codes
GB2482112A (en) * 2010-07-14 2012-01-25 Extas Global Ltd Distributed data storage and recovery
US20120079349A1 (en) * 2010-09-24 2012-03-29 Arkady Bramnik Method and apparatus for multi-bit upset protection
US20120198195A1 (en) * 2011-02-02 2012-08-02 Hewlett-Packard Development Company, L.P. Data storage system and method
US8990495B2 (en) * 2011-11-15 2015-03-24 Emc Corporation Method and system for storing data in raid memory devices
US9026729B1 (en) 2011-11-15 2015-05-05 Emc Corporation Data recovery after triple disk failure
CN104809035B (en) * 2015-05-05 2017-07-28 中国科学技术大学 The storage system construction method that a kind of quick single-deck of energy is repaired
US9793922B2 (en) * 2015-09-25 2017-10-17 HGST Netherlands B.V. Repair-optimal parity code
US10164655B2 (en) 2015-09-25 2018-12-25 Western Digital Technologies, Inc. Cache oblivious algorithm for butterfly code
US10360119B2 (en) * 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
CN113452479B (en) * 2021-06-08 2023-01-24 东莞理工学院 Encoding method and decoding method of EVENODD code

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579475A (en) * 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5271012A (en) * 1991-02-11 1993-12-14 International Business Machines Corporation Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
EP0519669A3 (en) * 1991-06-21 1994-07-06 Ibm Encoding and rebuilding data for a dasd array
US5513192A (en) * 1992-08-28 1996-04-30 Sun Microsystems, Inc. Fault tolerant disk drive system with error detection and correction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341386B1 (en) * 2012-09-18 2013-12-13 한국과학기술원 An efficient block encoding and block placement method for reducing space overhead in distributed file systems

Also Published As

Publication number Publication date
JPH1139104A (en) 1999-02-12
JP3587667B2 (en) 2004-11-10
CA2225771C (en) 2001-04-10
CA2225771A1 (en) 1999-01-15
KR100267366B1 (en) 2000-10-16
US6158017A (en) 2000-12-05

Similar Documents

Publication Publication Date Title
KR19990010106A (en) Method and apparatus for data storage in parity storage and disk failure in external storage subsystem
US7853823B2 (en) System and method for reconstructing lost data in a storage system
Jin et al. P-Code: A new RAID-6 code with optimal properties
US8489916B2 (en) Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block
US7743308B2 (en) Method and system for wire-speed parity generation and data rebuild in RAID systems
US20080126912A1 (en) Storing data redundantly
US20050102548A1 (en) Method and apparatus for enabling high-reliability storage of distributed data on a plurality of independent storage devices
CN1801105A (en) System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
CN109086000B (en) Three-fault-tolerant data layout method in RAID storage system
US6848022B2 (en) Disk array fault tolerant method and system using two-dimensional parity
US6871317B1 (en) Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7412563B2 (en) Method and system for calculating single and dual parity for networked storaged elements
US20050086575A1 (en) Generalized parity stripe data storage array
Tau et al. Efficient parity placement schemes for tolerating triple disk failures in RAID architectures
US6792391B1 (en) Method and system for three disk fault tolerance in a disk array
CN1898650A (en) Data storage array
Lee et al. Efficient parity placement schemes for tolerating up to two disk failures in disk arrays
US7093159B1 (en) Method and system for four disk fault tolerance in a disk array
US7062604B1 (en) Method and system for five-disk fault tolerance in a disk array
WO2018165943A1 (en) Storage controller, data processing chip, and data processing method
CN110532128B (en) Erasure code coding and data reconstruction method for reducing data updating cost
Wu et al. Code 5-6: An efficient mds array coding scheme to accelerate online raid level migration
Liu Repairing Triple Data Erasure with Extending Row Diagonal Parity
Hu et al. An efficient coding scheme for tolerating double disk failures
Kameyama et al. Erasure codes with small overhead factor and their distributed storage applications

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

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130624

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee