KR100694300B1 - 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치및 제어 방법 - Google Patents

블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치및 제어 방법 Download PDF

Info

Publication number
KR100694300B1
KR100694300B1 KR1020060035372A KR20060035372A KR100694300B1 KR 100694300 B1 KR100694300 B1 KR 100694300B1 KR 1020060035372 A KR1020060035372 A KR 1020060035372A KR 20060035372 A KR20060035372 A KR 20060035372A KR 100694300 B1 KR100694300 B1 KR 100694300B1
Authority
KR
South Korea
Prior art keywords
block
disk
data
parity
blocks
Prior art date
Application number
KR1020060035372A
Other languages
English (en)
Inventor
김갑동
석성우
김학영
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US11/605,181 priority Critical patent/US7653829B2/en
Application granted granted Critical
Publication of KR100694300B1 publication Critical patent/KR100694300B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법에 관한 것으로, 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 있어서, 저장할 데이터를 논리블록으로 분할하고 분할된 논리블록을 여러 개의 데이터블록으로 분할하는 분할 단계; 상기 논리블록마다 나누어진 데이터블록들을 스트라이프 단위로 XOR 연산을 통하여 패리티블록을 생성하는 단계; 상기 논리블록에서 데이터블록과 패리티 블록으로 이루어진 스트라이프 단위에서 처음 블록을 패리티블록으로 배치하는 단계; 및 상기 논리블록과 상기 논리블록의 사이에 빈 블록을 채우기 위한 좌우 회전방식으로 패리티 블록을 이전 논리블록의 마지막 데이터 블록 다음 위치에 배치하여 모든 디스크에 균등하게 할당되도록 배치하는 단계를 포함한다.
블록 분할 분산, 패리티, 디스크, 어레이, 데이터 , 논리, 배치, 읽기, 쓰기

Description

블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법{Method of data placement and control in the block-divided distributed parity disk array}
도 1은 본 발명의 일실시예(N=8)에 따른 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 대한 설명도,
도 2는 본 발명의 일실시예(N=7)에 따른 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 대한 설명도,
도 3은 본 발명의 일실시예(N=7)에 따른 블록 분할 분산 패리티 디스크 어레이의 좌우회전방식의 패리티블록 배치방법에 대한 설명도,
도 4는 논리블록 읽기 제어 방법에 대한 흐름도,
도 5는 논리블록 쓰기 제어 방법에 대한 흐름도,
도 6은 데이터블록 읽기 제어 방법에 대한 흐름도, 그리고
도 7은 데이터블록 쓰기 제어 방법에 대한 흐름도이다.
본 발명은 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법에 관한 것이다.
일반적으로, 데이터 저장 장치 중 대표적인 것으로 레이드(RAID: Redundant Arrays of Independent Disks)장치를 들 수 있다. 레이드 장치는 여러 디스크를 이용하여 가상적인 하나의 디스크 장치를 제공하는 고성능/대용량의 데이터 저장 장치이며, 데이터를 중복 저장함으로써 복구 가능한 안전한 장치이다. 이러한 레이드는 신뢰성을 높이면 성능이 저하되는 성질이 있으며, 데이터와 패리티 정보를 디스크에 배치하는 방법에 따라 디스크 레벨을 분류하고 있는데 각 레벨에 따라 특성이 다르게 나타난다.
레이드 0레벨은 데이터의 중복이 없고 고성능과 대용량의 장치를 구성하고자 할 때 이용되고, 디스크의 수에 비례하여 신뢰성이 떨어지는 문제점이 있다.
레이드 1레벨은 데이터의 동일한 복사본을 만드는 방법으로 성능과 신뢰성은 좋으나 디스크의 공간을 낭비하는 단점이 있다.
레이드 5레벨은 한 개의 패리티 블록이 디스크를 통해서 한 개의 디스크 오류를 복구시킬 수 있는 방법이나 디스크가 많아질 때는 성능이 저하되고 신뢰성도 떨어지며 안전성이 문제가 된다.
레이드 5레벨은 스트라이프가 각 디스크마다 배치되는 형태로 하나의 블록 쓰기가 발생하면 그 블록과 관련하여 XOR 연산으로 새로운 패리티 블록과 새 데이터블록을 디스크에 기록한다. 두 번의 쓰기를 필요로 함으로 비효율적이다.
블록들의 지연쓰기를 통하여 하나의 스트라이프를 이루는 블록들을 모아서 쓰는 방법을 사용하면 블록을 버퍼링하는 오버헤드가 발생한다. 레이드는 여러 개의 디스크를 사용하여 디스크 오류 복구 기능을 가진다. 기본적으로 레이드는 일반적인 임의의 데이터에 초점을 두었기에 대용량의 데이터나 멀티미디어 데이터를 처리하기에는 비효율적이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 멀티미디어 데이터를 저장하는 디스크의 공간을 최대한 낭비 없이 활용하도록 소용량 데이터에 대한 입출력 성능을 유지하면서 대용량 데이터의 성능을 향상시킬 수 있는 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 및 제어 방법을 제공하는데 있다.
본 발명의 다른 목적은, 멀티미디어 데이터를 저장하는 디스크의 공간을 최대한 낭비 없이 활용하도록 큰 논리블록을 여러 개의 데이터블록으로 나누어서 패리티블록과 데이터블록을 디스크에 일정한 패턴으로 배치하여 소용량 데이터에 대한 입출력 성능을 유지하면서 대용량 데이터의 성능을 향상시키고 디스크 오류 복구 기능을 제공하는 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 및 제어 방법을 제공하는데 있다.
상기와 같은 목적은 본 발명의 실시 예에 따라, 블록 분할 분산 패리티 디스 크 어레이의 데이터 배치 방법에 있어서, 저장할 데이터를 논리블록으로 분할하고 분할된 논리블록을 여러 개의 데이터블록으로 분할하는 분할 단계; 상기 논리블록마다 나누어진 데이터블록들을 스트라이프 단위로 XOR 연산을 통하여 패리티블록을 생성하는 단계; 상기 논리블록에서 데이터블록과 패리티 블록으로 이루어진 스트라이프 단위에서 처음 블록을 패리티 블록으로 배치하는 단계; 및 상기 논리블록과 상기 논리블록의 사이에 빈 블록을 채우기 위한 좌우 회전방식으로 패리티블록을 이전 논리블록의 마지막 데이터 블록 다음 위치에 배치하여 모든 디스크에 균등하게 할당되도록 배치하는 단계를 포함하는 것을 특징으로 하는 데이터 배치 방법에 의해 달성된다.
바람직하게는, 본 실시예의 데이터 배치 방법은, 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 논리블록을 읽기 위해서는 읽어야 할 논리블록의 블록 잠금을 할당받는 단계; 상기 디스크의 고장 여부를 판별하는 단계; 상기 디스크에 고장이 있는 것으로 판단되면, 2개 이상의 디스크에 고장이 있는 지를 판별하는 단계; 상기 2개 이상의 디스크에 고장이 있는 것으로 판단되면, 논리블록 읽기 에러를 통보하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 2개 이상이 아닌 1개의 디스크에 고장이 있는 것으로 판단되면, 상기 고장난 디스크의 블록을 제외한 모든 패리티 블록 및 데이터블록을 메모리로 읽는 단계; 상기 읽은 패리티 블록 및 데이터블록을 스트라이프 단위로 XOR 연산으로 고장난 디스크의 블록 값을 생성하여 메모리에 기 록하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 고장난 디스크가 없는 것으로 판단되면, 논리블록에 있는 모든 데이터블록들을 메모리로 읽어오는 단계; 상기 읽어오는 과정에서 에러의 발생 여부를 판별하는 단계; 상기 에러가 발생한 것으로 판단되면, 2개 이상의 읽기 에러가 발생한 스트라이프가 있는 지를 판별하는 단계; 상기 2개 이상의 읽기 에러가 발생한 스트라이프가 있으면, 논리블록 읽기 에러를 통보하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 2개 이상의 읽기 에러가 발생한 스트라이프가 없으면, 에러블록이 속한 스트라이프의 패리티 블록을 읽는 단계; 상기 읽은 패리티 블록을 XOR 연산으로 에러블록의 값을 생성하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 논리블록을 쓰기 위해서는 기록해야 할 논리블록의 블록 잠금을 할당받는 단계; 상기 디스크에 고장이 있는지 판단하는 단계; 상기 디스크에 고장이 있으면, 2개 이상의 디스크에 고장이 있는 지를 판단하는 단계; 상기 2개 이상의 디스크에 고장이 있으면, 논리블록 쓰기 에러를 통보하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 2개가 아닌 1개의 디스크에 고장이 있으면, XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하는 단계; 상기 고장난 디스크를 제외한 모든 디스크에 해당 블록을 기록하는 단계; 및 상기 논리블록 에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 고장난 디스크가 없으면, XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하는 단계; 모든 디스크에 해당 블록을 기록하는 단계; 및 상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 데이터블록을 읽기 위해서는 읽어야 할 데이터블록이 속한 스트라이프의 잠금을 할당하는 단계; 상기 읽어야 할 데이터블록이 위치한 디스크가 고장인지를 판단하는 단계; 상기 디스크에 고장이 없으면, 디스크에서 데이터블록을 메모리로 읽어오는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 포함한다.
본 실시예의 데이터 배치 방법은, 상기 디스크에 고장이 있으면, 고장이 있는 디스크의 스트라이프에 속한 다른 디스크에도 고장이 있는 지를 판단하는 단계; 상기 다른 디스크에도 고장이 있는 것으로 판단되면, 데이터블록 읽기 에러를 통보하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 읽기 데이터블록의 디스크만 고장난 것으로 판단되면, 해당 스트라이프의 모든 데이터블록과 패리티 블록을 메모리로 읽어오는 단계; 상기 모든 블록에 대하여 XOR 연산을 수행하여 생성된 값을 메모리에 기록하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 데이터블록을 쓰기 위해서는 기록할 데이터블록이 속한 스트라이프의 잠금을 할당하는 단계; 상기 기록할 데이터블록이 위치한 디스크가 고장인지 판단하는 단계; 상기 디스크의 고장이 없는 것으로 판단되면, 패리티 블록의 디스크에 고장이 있는지 판단하는 단계; 상기 패리티 블록의 디스크에 고장이 있으면, 바로 데이터블록을 디스크에 기록하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 디스크와 상기 패리티 블록의 디스크에 고장이 없는 것으로 판단되면, 다른 디스크에도 고장이 있는 지를 판단하는 단계; 상기 다른 디스크에도 고장이 없으면, 기록할 블록을 제외한 스트라이프에 속한 모든 데이터블록을 메모리로 읽어 오는 단계; 상기 기록할 데이터블록과 읽어온 데이터블록을 XOR 연산으로 새 패리티 블록을 생성하는 단계; 상기 새 패리티 블록을 기록하는 단계; 상기 새 데이터블록을 디스크에 기록하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 디스크와 상기 패리티 블록의 디스크에 고장이 없고 다른 디스크에 고장이 있으면, 고장난 디스크를 제외한 패리티 블록 및 데이터블록을 모두 메모리로 읽어오는 단계; 상기 읽어온 블록들의 XOR 연산으로 고장난 디스크의 데이터블록 값을 생성하는 단계; 상기 기록할 데이터블록의 위치에 새 데이터블록의 값으로 대체하여 데이터블록들간의 XOR연산으로 새 패리티 블록을 생성하는 단계; 새 패리티 블록을 기록하는 단계; 새 데이터블록을 디스크 에 기록하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 실시예의 데이터 배치 방법은, 상기 디스크에만 고장이 있으면, 데이터블록이 속한 스트라이프의 모든 데이터블록을 메모리로 읽어 오는 단계; 상기 읽은 데이터블록들과 기록할 데이터블록으로 XOR 연산으로 새 패리티 블록을 생성하는 단계; 새 패리티 블록을 디스크에 기록하는 단계; 및 상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함한다.
본 발명에 따르면, 블록 분할 분산 패리티 디스크 어레이 장치가 멀티미디어 파일시스템을 지원하는 논리블록(2048K,1024K,512K,256K)과 일반적인 데이터블록에 대한 읽기/쓰기 제어 경로를 제공함으로써 멀티미디어 파일시스템에서 요구하는 성능을 제공함과 동시에 일반 파일과의 호환성을 유지시키는 효과를 가진다.
또한 좌우 회전형 패리티 배치로 모든 디스크에 입출력 부하를 균등하게 분산시키고, 빈 블록 없이 디스크 공간을 최대한 활용할 수 있으며, 1개의 디스크 고장을 감내함으로 안정성을 가진 멀티미디어 파일시스템의 저장장치로 활용이 가능하다.
이하, 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 도면들 중 동일한 구성요소들은 가능한 한 어느 곳에서든지 동일한 부호들로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
도1은 본 발명의 실시 예에 따라 블록 분할 분산 패리티 디스크 어레이에서의 N이 2의 거듭제곱수인 8일 경우의 일실시예 설명도로서 9개의 디스크로 구성된 어레이를 나타낸다.
도시된 바와 같이, 디스크 어레이가 (N+P)개의 디스크로 구성이 되고 P는 1이고 N이 2의 거듭제곱수이면, 논리블록(110,120,130,140,150)은 N개의 데이터블록으로 나누어져 N개의 디스크에 분배되어 기록되며, 각 논리블록의 패리티블록은 각 논리블록의 첫 번째 데이터블록 앞에 위치한다.
첫 번째 논리블록0(110)은 N으로 균등하게 나누어진 데이터블록0에서 데이터블록7까지(112~119)와 패리티블록(111)으로 배치된다. 그리고, 패리티블록은 데이터블록0에 선행해서 배치된다.
i번째 논리블록의 패리티블록은 (i % (N+1))디스크의 i번째 블록에 위치한다.
i번째 논리블록의 j번째 데이터블록은 (i +j +1)%(N+1)디스크의 i번째 블록에 위치한다.
도 2는 본 발명의 실시예에 따라 블록 분할 분산 패리티 디스크 어레이에서의 N이 2의 거듭제곱수가 아닌 7일 경우의 일실시예 설명도로서 8개의 디스크로 구성된 어레이를 나타낸다.
도시된 바와 같이, 논리블록(210)은 여러 개의 데이터블록(220~235)으로 나누어지는데 몇 개로 나누는 지는 N < 2k 이면서 2k % N > 1을 만족하는 가장 작은 2k 값을 데이터블록의 개수(M)로 정한다. N이 7일 경우 M은 16이 된다. 한 디스크에 할당되는 최대 블록의 수(H)는 (2k/N)+1로 3이 된다.
논리블록0(210)은 16개의 데이터블록(220~235)과 3개의 패리티 블록(211~213)와 5개의 빈(Empty)블록(214~218)으로 배치가 되며, 각 블록의 배치는 N+1개의 블록을 하나의 스트라이프로 정하여 N개의 데이터블록으로 1개의 패리티 블록을 생성한다. 각 패리티 블록의 위치는 해당 스트라이프의 첫 번째 데이터블록의 앞에 위치한다. 논리블록간의 패리티블록은 도1에서와 같이 한 칸씩 회전을 하면서 배치되며, i번째 논리블록의 패리티 블록과 j번째 데이터블록의 해당 디스크와 블록의 위치는 여기에서 언급을 하지 않는다. 도 2에서 낭비가 되는 빈 블록을 효율적으로 활용하는 도 3의 방안에서 일반화된 해당 블록의 디스크와 위치를 구하는 식을 표현할 것이다.
도 3은 도2에서와 같이 블록 분할 분산 패리티 디스크 어레이에서의 N이 2의 거듭제곱수가 아닌 7일 경우의 일실시예 설명도로서 8개의 디스크로 구성된 어레이를 나타낸다.
도 2에 비해 도 3의 차이점은 빈 블록을 데이터블록과 패리티블록으로 활용한다는 것이다. 논리블록0(310)은 3개의 스트라이프로 구성이 되며 모든 패리티블록은 각 스트라이프의 첫 번째 데이터블록의 앞에 선행한다. 마지막 스트라이프는 할당된 데이터블록(334,335)과 패리티 블록(313)로 구성이 되며, 마지막 데이터블록(335) 다음의 블록은 빈 블록으로 두는 것이 아니라 다음 논리블록1(340)의 시작 블록(341)으로 사용을 한다. 마지막 스트라이프의 구성 블록 수에 따라 패리티 블록의 배치가 좌우 회전으로 배치가 되며, 결론적으로 낭비하는 블록 없이 모든 디스크에 균등하게 패리티가 분배가 된다.
위의 과정을 일반화하여 표현하면 다음과 같다. 디스크의 개수가 N+1이고, 하나의 논리블록은 N < 2k 이면서 (2k % N) > 1을 만족하는 가장 작은 2k 개로 나누어져 논리블록을 구성하는 데이터블록의 개수(D)가 된다. 하나의 논리블록이 한 디스크에서 할당 받는 최대 블록의 수(H)는 (2k/N)+1로 논리블록에 속하는 패리티 블록의 수와 스트라이프의 수와 같다.
그리고, 마지막 스트라이프를 구성하는 블록의 수(L)는 (2k%N)+1이다. 각 블록의 위치를 일반화 하면, i번째 논리블록의 j번째 패리티 블록은 (L×i) % (N+1) 디스크의 (D+H)×i / (N+1) +j 블록에 위치한다.
i번째 논리블록의 j번째 데이터블록은 ((L×i) +j +1) % (N+1) 디스크의 ((D+H)×i +j +1) / (N+1)블록에 위치한다.
상술한 수학식에서 %는 나머지 연산자이고, /는 정수 나눗셈 연산자이다.
디스크의 순서는 0부터, 논리블록의 순서는 0부터, 패리티 블록의 순서는 0부터, 데이터블록의 순서는 0부터, 각 디스크의 블록도 0부터 시작한다.
도 1에서와 같이 디스크 어레이에서의 N이 2의 거듭제곱수인 경우에도 위의 수식이 그대로 적용이 되며, 하나의 논리블록이 한 디스크에서 할당 받는 최대 블 록의 수(H)가 (2k/N)로 계산이 된다.
논리블록에 대한 인터페이스는 2048K, 1024K, 512K, 256K로 정의되는 멀티미디어 파일을 처리하는데 필요한 대용량의 블록을 위한 입출력 경로이고, 데이터블록에 대한 인터페이스는 소용량 블록을 위한 입출력 경로이다.
도 4는 본 발명의 실시 예에 따른 블록 분할 분산 패리티 디스크 어레이에서의 논리블록 읽기제어를 위한 흐름도이다.
도시된 바와 같이, 논리블록을 읽기 위해서는 읽어야 할 논리블록의 블록 잠금을 할당받고(S401), 디스크에 고장이 있는지 판단을 한다(S402). 2개 이상의 디스크에 고장이 있으면(S403), 논리블록 읽기 에러를 통보하고(S411) 논리블록에 할당한 잠금을 해제한다(S412).
1개의 디스크에 고장이 있으면(S403), 고장난 디스크의 블록을 제외한 모든 패리티 블록 및 데이터블록을 메모리로 읽어서(S409) 스트라이프 단위로 패리티 블록 및 데이터블록을 XOR 연산으로 고장난 디스크의 블록 값을 생성하여 메모리에 기록하고(S410), 논리블록에 할당한 잠금을 해제한다(S412).
한편, S402 단계에서 고장난 디스크가 없으면(S402), 논리블록에 있는 모든 데이터블록들을 메모리로 읽어온다(S404). 읽어오는 과정에서 에러가 발생했을 때(S405) 2개 이상의 읽기 에러가 발생한 스트라이프가 있으면(S406) 논리블록 읽기 에러를 통보하고(S411), 아니면 에러블록이 속한 스트라이프의 패리티 블록을 읽어서(S407) XOR 연산으로 에러블록의 값을 생성한다(S408).
도5는 본 발명의 실시예에 따라 블록 분할 분산 패리티 디스크 어레이에서의 논리블록 쓰기제어에 대한 흐름도이다.
도시된 바와 같이, 먼저 논리블록 쓰기는 기록해야 할 논리블록의 블록 잠금을 할당받고(S501) 디스크에 고장이 있는지 판단을 한다(S502). 2개 이상의 디스크에 고장이 있으면(S503), 논리블록 쓰기 에러를 통보하고(S509) 논리블록에 할당한 잠금을 해제한다(S510).
1개의 디스크에 고장이 있으면(S503), XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하고(S506) 고장난 디스크를 제외한 모든 디스크에 해당 블록을 기록한다(S507,S508).
한편 S502 단계에서 고장난 디스크가 없으면(S502), XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하고(S504) 모든 디스크에 해당 블록을 기록한다(S505).
도6은 본 발명의 실시예에 따라 블록 분할 분산 패리티 디스크 어레이에서의 데이터블록 읽기제어에 대한 흐름도이다.
도시된 바와 같이, 먼저 데이터블록 읽기는 읽어야 할 데이터블록이 속한 스트라이프의 잠금을 할당하고(S601) 읽어야 할 데이터블록이 위치한 디스크가 고장인지를 판단한다(S602).
디스크에 고장이 없으면, 디스크에서 데이터블록을 메모리로 읽어오고(604) 데이터블록이 속한 스트라이프에 할당한 잠금을 해제한다(S608).
S602 단계에서 디스크에 고장이 있고 이 스트라이프에 속한 다른 디스크에도 고장이 있으면(S603), 데이터블록 읽기 에러를 통보하고(S607) 데이터블록이 속한 스트라이프에 할당한 잠금을 해제한다(S608).
읽기 데이터블록의 디스크만 고장이 났으면(S603), 해당 스트라이프의 모든 데이터블록과 패리티 블록을 메모리로 읽어오고(S605) 모든 블록에 대하여 XOR 연산을 수행하여 생성된 값을 메모리에 기록한다(S606).
도7은 본 발명의 실시예에 따라 블록 분할 분산 패리티 디스크 어레이에서의 데이터블록 쓰기제어에 대한 흐름도이다.
도시된 바와 같이, 먼저 데이터블록 쓰기는 기록할 데이터블록이 속한 스트라이프의 잠금을 할당하고(S701), 기록할 데이터블록이 위치한 디스크가 고장인지 판단한다(S702). 데이터블록의 쓰기는 고장난 디스크의 위치에 따라 제어가 달라지는데, 목적 디스크에 고장이 없고 패리티 블록의 디스크에 고장이 있으면(S704), 바로 데이터블록을 디스크에 기록하고(S709) 스트라이프에 할당한 잠금을 해제한다(S717).
S704 단계에서 목적 디스크와 패리티 디스크에 고장이 없고 다른 디스크에도 고장이 없으면(S705), 기록할 블록을 제외한 스트라이프에 속한 모든 데이터블록을 메모리로 읽어오고(S706) 기록할 데이터블록과 읽어온 데이터블록을 XOR 연산으로 새 패리티 블록을 생성한다(S707). 새 패리티 블록을 기록하고(S708) 새 데이터블록을 디스크에 기록한다(S709).
한편 목적 디스크와 패리티블록의 디스크에 고장이 없고 다른 디스크에 고장이 있으면(S702,S704,S705), 고장난 디스크의 데이터블록을 제외한 모든 패리티블 록 및 데이터블록을 모두 메모리로 읽어오고(S710), 읽어온 블록들의 XOR 연산으로 고장난 디스크의 데이터블록 값을 생성한다(S711). 기록할 데이터블록의 위치에 새 데이터블록의 값으로 대체하여 데이터블록들간의 XOR연산으로 새 패리티 블록을 생성하고(S712), 상기 새 패리티 블록을 기록하고(S708) 새 데이터블록을 디스크에 기록한다(S709).
한편 S702 및 S703 단계에서 목적 디스크에만 고장이 있으면, 데이터블록이 속한 스트라이프의 모든 데이터블록을 메모리로 읽어오고(S713), 읽은 데이터블록들과 기록할 데이터블록으로 XOR 연산으로 새 패리티 블록을 생성하여(S714) 새 패리티 블록을 디스크에 기록한다(S715).
이상에서는 본 발명에서 특정의 바람직한 실시예에 대하여 도시하고 또한 설명하였다. 그러나, 본 발명은 상술한 실시예에 한정되지 아니하며, 특허 청구의 범위에서 첨부하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 및 균등한 타 실시가 가능할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 첨부한 특허 청구범위에 의해서만 정해져야 할 것이다.
본 발명에 따르면, 블록 분할 분산 패리티 디스크 어레이 장치가 멀티미디어 파일시스템을 지원하는 논리블록(2048K,1024K,512K,256K)과 일반적인 데이터블록에 대한 읽기/쓰기 제어 경로를 제공함으로써 멀티미디어 파일시스템에서 요구하는 성 능을 제공함과 동시에 일반 파일과의 호환성을 유지시키는 효과를 가진다.
또한 좌우 회전형 패리티 배치로 모든 디스크에 입출력 부하를 균등하게 분산시키고, 빈 블록 없이 디스크 공간을 최대한 활용할 수 있으며, 1개의 디스크 고장을 감내함으로 안정성을 가진 멀티미디어 파일시스템의 저장장치로 활용이 가능하다.

Claims (15)

  1. 블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 있어서,
    저장할 데이터를 논리블록으로 분할하고 분할된 논리블록을 여러 개의 데이터블록으로 분할하는 분할 단계;
    상기 논리블록마다 나누어진 데이터블록들을 스트라이프 단위로 XOR 연산을 통하여 패리티블록을 생성하는 단계;
    상기 논리블록에서 데이터블록과 패리티블록으로 이루어진 스트라이프 단위에서 처음 블록을 패리티 블록으로 배치하는 단계; 및
    상기 논리블록과 상기 논리블록의 사이에 빈 블록을 채우기 위한 좌우 회전방식으로 패리티 블록을 이전 논리블록의 마지막 데이터 블록 다음 위치에 배치하여 모든 디스크에 균등하게 할당되도록 배치하는 단계를 포함하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  2. 제 1항에 있어서,
    읽어야 할 논리블록의 블록 잠금을 할당받는 단계;
    상기 디스크의 고장 여부를 판별하는 단계;
    상기 디스크에 고장이 있는 것으로 판단되면, 2개 이상의 디스크에 고장이 있는 지를 판별하는 단계;
    상기 2개 이상의 디스크에 고장이 있는 것으로 판단되면, 논리블록 읽기 에러를 통보하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  3. 제 2항에 있어서,
    상기 2개 이상이 아닌 1개의 디스크에 고장이 있는 것으로 판단되면, 상기 고장난 디스크의 블록을 제외한 모든 패리티 블록 및 데이터블록을 메모리로 읽는 단계;
    상기 읽은 패리티 블록 및 데이터블록을 스트라이프 단위로 XOR 연산으로 고장난 디스크의 블록 값을 생성하여 메모리에 기록하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  4. 제 2항에 있어서,
    상기 고장난 디스크가 없는 것으로 판단되면, 논리블록에 있는 모든 데이터블록들을 메모리로 읽어오는 단계;
    상기 읽어오는 과정에서 에러의 발생 여부를 판별하는 단계;
    상기 에러가 발생한 것으로 판단되면, 2개 이상의 읽기 에러가 발생한 스트라이프가 있는 지를 판별하는 단계;
    상기 2개 이상의 읽기 에러가 발생한 스트라이프가 있으면, 논리블록 읽기 에러를 통보하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  5. 제 4항에 있어서,
    상기 2개 이상의 읽기 에러가 발생한 스트라이프가 없으면, 에러블록이 속한 스트라이프의 패리티 블록을 읽는 단계;
    상기 읽은 패리티 블록을 XOR 연산으로 에러블록의 값을 생성하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  6. 제 1항에 있어서,
    블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 논리블록을 쓰기 위해서는,
    기록해야 할 논리블록의 블록 잠금을 할당받는 단계;
    상기 디스크에 고장이 있는지 판단하는 단계;
    상기 디스크에 고장이 있으면, 2개 이상의 디스크에 고장이 있는 지를 판단하는 단계;
    상기 2개 이상의 디스크에 고장이 있으면, 논리블록 쓰기 에러를 통보하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  7. 제 6항에 있어서,
    상기 2개가 아닌 1개의 디스크에 고장이 있으면, XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하는 단계;
    상기 고장난 디스크를 제외한 모든 디스크에 해당 블록을 기록하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  8. 제 6항에 있어서,
    상기 고장난 디스크가 없으면, XOR 연산으로 스트라이프 단위의 패리티 블록을 생성하는 단계;
    모든 디스크에 해당 패리티 블록을 기록하는 단계; 및
    상기 논리블록에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  9. 제 1항에 있어서,
    블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 데이터블록을 읽기 위해서는 읽어야 할 데이터블록이 속한 스트라이프의 잠금을 할당하는 단계;
    상기 읽어야 할 데이터블록이 위치한 디스크가 고장인지를 판단하는 단계;
    상기 디스크에 고장이 없으면, 디스크에서 데이터블록을 메모리로 읽어오는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  10. 제 9항에 있어서,
    상기 디스크에 고장이 있으면, 고장이 있는 디스크의 스트라이프에 속한 다른 디스크에도 고장이 있는 지를 판단하는 단계;
    상기 다른 디스크에도 고장이 있는 것으로 판단되면, 데이터블록 읽기 에러를 통보하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  11. 제 10항에 있어서,
    상기 읽기 데이터블록의 디스크만 고장난 것으로 판단되면, 해당 스트라이프의 모든 데이터블록과 패리티 블록을 메모리로 읽어오는 단계;
    상기 모든 블록에 대하여 XOR 연산을 수행하여 생성된 값을 메모리에 기록하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  12. 제 1항에 있어서,
    블록 분할 분산 패리티 디스크 어레이의 데이터 배치 방법에 의해 배치된 데이터블록을 쓰기 위해서는 기록할 데이터블록이 속한 스트라이프의 잠금을 할당하 는 단계;
    상기 기록할 데이터블록이 위치한 디스크가 고장인지 판단하는 단계;
    상기 디스크의 고장이 없는 것으로 판단되면, 패리티블록의 디스크에 고장이 있는지 판단하는 단계;
    상기 패리티 블록의 디스크에 고장이 있으면, 바로 데이터블록을 디스크에 기록하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  13. 제 12항에 있어서,
    상기 디스크와 상기 패리티 블록의 디스크에 고장이 없는 것으로 판단되면, 다른 디스크에도 고장이 있는 지를 판단하는 단계;
    상기 다른 디스크에도 고장이 없으면, 기록할 블록을 제외한 스트라이프에 속한 모든 데이터블록을 메모리로 읽어 오는 단계;
    상기 기록할 데이터블록과 읽어온 데이터블록을 XOR 연산으로 새 패리티 블록을 생성하는 단계;
    상기 새 패리티 블록을 기록하는 단계;
    상기 새 데이터블록을 디스크에 기록하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  14. 제 12항에 있어서,
    상기 디스크와 상기 패리티 블록의 디스크에 고장이 없고 다른 디스크에 고장이 있으면, 고장난 디스크를 제외한 패리티 블록 및 데이터블록을 모두 메모리로 읽어오는 단계;
    상기 읽어온 블록들의 XOR 연산으로 고장난 디스크의 데이터블록 값을 생성하는 단계;
    상기 기록할 데이터블록의 위치에 새 데이터블록의 값으로 대체하여 데이터블록들간의 XOR연산으로 새 패리티 블록을 생성하는 단계;
    새 패리티 블록을 기록하는 단계;
    새 데이터블록을 디스크에 기록하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
  15. 제 12항에 있어서,
    상기 디스크에만 고장이 있으면, 데이터블록이 속한 스트라이프의 모든 데이터블록을 메모리로 읽어 오는 단계;
    상기 읽은 데이터블록들과 기록할 데이터블록으로 XOR 연산으로 새 패리티 블록을 생성하는 단계;
    새 패리티 블록을 디스크에 기록하는 단계; 및
    상기 데이터블록이 속한 스트라이프에 할당한 잠금을 해제하는 단계를 더 포함하는 것을 특징으로 하는 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치 및 제어 방법.
KR1020060035372A 2005-12-08 2006-04-19 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치및 제어 방법 KR100694300B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/605,181 US7653829B2 (en) 2005-12-08 2006-11-28 Method of data placement and control in block-divided distributed parity disk array

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20050120129 2005-12-08
KR1020050120129 2005-12-08

Publications (1)

Publication Number Publication Date
KR100694300B1 true KR100694300B1 (ko) 2007-03-14

Family

ID=38103435

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060035372A KR100694300B1 (ko) 2005-12-08 2006-04-19 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치및 제어 방법

Country Status (1)

Country Link
KR (1) KR100694300B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180137418A (ko) * 2017-06-16 2018-12-27 시게이트 테크놀로지 엘엘씨 메모리 회수 모니터링

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187357A (ja) * 1996-12-19 1998-07-14 Nec Eng Ltd ディスクアレイ装置
KR19980063965A (ko) * 1996-12-11 1998-10-07 이데이 노부유키 디스크 기록 매체 및 디스크 기록 매체로부터 데이타를 재생하는 장치
KR20000016425A (ko) * 1997-04-07 2000-03-25 이데이 노부유끼 데이타 기록 장치 및 방법, 디스크 어레이 제어 장치 및 방법
KR20010100509A (ko) * 2000-05-03 2001-11-14 구자홍 고밀도 광 기록매체에서의 데이터 에러정정 코드생성방법과 이에 의한 에러 정정 방법, 그리고 그 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980063965A (ko) * 1996-12-11 1998-10-07 이데이 노부유키 디스크 기록 매체 및 디스크 기록 매체로부터 데이타를 재생하는 장치
JPH10187357A (ja) * 1996-12-19 1998-07-14 Nec Eng Ltd ディスクアレイ装置
KR20000016425A (ko) * 1997-04-07 2000-03-25 이데이 노부유끼 데이타 기록 장치 및 방법, 디스크 어레이 제어 장치 및 방법
KR20010100509A (ko) * 2000-05-03 2001-11-14 구자홍 고밀도 광 기록매체에서의 데이터 에러정정 코드생성방법과 이에 의한 에러 정정 방법, 그리고 그 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180137418A (ko) * 2017-06-16 2018-12-27 시게이트 테크놀로지 엘엘씨 메모리 회수 모니터링
KR102076056B1 (ko) * 2017-06-16 2020-02-12 시게이트 테크놀로지 엘엘씨 메모리 회수 모니터링

Similar Documents

Publication Publication Date Title
KR101307953B1 (ko) Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법
US20190205039A1 (en) Distributed Object Storage System Comprising Performance Optimizations
US20170199670A1 (en) Memory system with multiple striping of raid groups and method for performing the same
US5315602A (en) Optimized stripe detection for redundant arrays of disk drives
US7620843B2 (en) Rebuilding a storage system
US6393516B2 (en) System and method for storage media group parity protection
US8819365B2 (en) Flexible data storage system
KR101502519B1 (ko) 메모리 관리 시스템 및 방법
CN107817952B (zh) 存储系统
US11960743B2 (en) Memory system with multiple striping of RAID groups and method for performing the same
WO2009130848A1 (ja) ストレージシステム及びストレージシステムの制御方法
US8832356B2 (en) Apparatus and method for flash memory address translation
CN110096219B (zh) 从驱动器组生成的驱动器区段池的有效容量
US10795768B2 (en) Memory reallocation during raid rebuild
JP2018508073A (ja) データ除去、割り当て、及び再構築
US7653829B2 (en) Method of data placement and control in block-divided distributed parity disk array
US8402213B2 (en) Data redundancy using two distributed mirror sets
US20070067665A1 (en) Apparatus and method for providing redundant arrays storage devices
CN101566930B (zh) 虚拟磁盘驱动系统和方法
KR100694300B1 (ko) 블록 분할 분산 패리티 디스크 어레이에서의 데이터 배치및 제어 방법
US9547554B2 (en) Mass storage device and method of operating the same to store parity data
US20150199236A1 (en) Multi-level disk failure protection
US11544005B2 (en) Storage system and processing method

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

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20111208

Year of fee payment: 19