JPH09258913A - 記憶装置アレイシステム - Google Patents

記憶装置アレイシステム

Info

Publication number
JPH09258913A
JPH09258913A JP8068748A JP6874896A JPH09258913A JP H09258913 A JPH09258913 A JP H09258913A JP 8068748 A JP8068748 A JP 8068748A JP 6874896 A JP6874896 A JP 6874896A JP H09258913 A JPH09258913 A JP H09258913A
Authority
JP
Japan
Prior art keywords
data
disk
storage device
cpu
rebuild
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP8068748A
Other languages
English (en)
Inventor
Yuji Kiyohara
裕二 清原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EKUSHINGU KK
Brother Industries Ltd
Xing Inc
Original Assignee
EKUSHINGU KK
Brother Industries Ltd
Xing Inc
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 EKUSHINGU KK, Brother Industries Ltd, Xing Inc filed Critical EKUSHINGU KK
Priority to JP8068748A priority Critical patent/JPH09258913A/ja
Publication of JPH09258913A publication Critical patent/JPH09258913A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 リビルドを早く済ませられる記憶装置アレイ
システムを提供する。 【解決手段】 CPU100は、リビルドモードでデー
タリード要求があると、磁気ディスク109〜113の
中の4つの正常な磁気ディスクから読み出させたデータ
から、パリティ演算でリビルドディスクのデータの復元
を行い、これをホストに送出すると共に、このデータを
リビルドセクタにも書き、各セクタが復旧を済ませたか
どうかを記録するための復旧済記録テーブルにリビルド
済みであることを記録する。そして、通常のセクタ順に
行われるリビルドのときには、復旧済記録テーブルにリ
ビルド済みであることが記録されているセクタに対して
はリビルドを実行しない(スキップする)ことで、リビ
ルドの総時間を短くすることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、記憶装置アレイシ
ステムに関する。
【0002】
【従来技術】従来、複数台の記憶装置を有する記憶装置
アレイシステムがあり、代表的なものとしてディスクア
レイシステムが知られている。ディスクアレイシステム
では、磁気ディスクを複数台パラレルに同時動作させ
て、データ入出力性能の高速化を計っている。また、デ
ータの信頼性を向上させるために、冗長データを付加し
て記憶しており、ディスク上のデータの一部が失われて
も、元のデータを復元することが出来る。
【0003】図10〜図12は、ディスクアレイシステ
ムの原理図である。以下の説明では、ディスクを何台並
列に並べるかという数を、パラレル数と呼び、pという
変数で表すこととする。但し、パラレル数pには、冗長
データを格納するためのディスクは含めない。冗長デー
タを持ったディスクアレイシステムは一般にRAIDと
いう略称で呼ばれることが多い。RAIDは、redu
ndant arrays of inexpensi
ve disksの略である。RAIDの種別は「レベ
ル」という言葉で区分けされている。
【0004】RAIDレベル0は、単にディスクをパラ
レル動作させ、データを分散記憶させるものである。信
頼性向上の効果はなく、高速化の効果しかない。分散の
単位は、ビット単位でもバイト単位でもセクタ単位でも
良く、特に限定されない。RAIDレベル0は正確には
RAIDではないが、対比のためによく例に挙げられ
る。
【0005】RAIDレベル1は、ミラーリングとも呼
ばれ、2つのディスクに同一のデータを書き込み、読み
出すときはどちらか一方のディスクから読み出す。片方
のディスクが壊れても、データは失われない。RAID
レベル1は高速化の効果はないが信頼性が増大する。
【0006】RAIDレベル2は、ハミングコードなど
の冗長符号(誤り訂正符号)を用いるもので、レベル1
が通常のディスクと比べて2倍のディスクを必要とする
のに対し、レベル2は2倍までは要らない。データはビ
ット単位あるいはバイト単位で分散させ、冗長符号と合
わせて記録する。冗長符号の選び方で色々な方法が考え
られるが特に冗長符号として単純なパリティを用いたも
のが次のレベル3である。他の冗長符号を用いたものは
あまり実用価値がないので、レベル2が使用されること
は希である。
【0007】RAIDレベル3は、バイト単位でデータ
を分散させ、パリティを付加してディスクに格納するも
ので、高速化、信頼性向上の両方の効果がある。反面、
ディスクのセクタサイズ×p個のデータが集まらないと
読み書きができないので、ディスクを単体で使う場合に
比べて、アクセス単位が大きくなる。データを小さな単
位でアクセスするような用途には不向きである。
【0008】RAIDレベル4は、この点を改善したも
ので、ディスクのセクタ単位でデータを分散させるもの
である。データはセクタサイズ単位に分割して、各ディ
スクに順に格納するのだが、p個のセクタごとにパリテ
ィデータを計算して冗長データディスクに格納する。R
AIDレベル3ではセクタ単位×pのデータが最小アク
セス単位だったが、RAIDレベル4ではセクタ単位で
読み書きが可能である。しかしセクタを書き換えるとき
は元のパリティデータと元のディスクデータを読み出し
て、新パリティを計算し直し、これをパリティとして書
き戻す必要があるため、通常より余分な動作が必要とな
る。またパリティを格納しているディスクにアクセスが
集中するため、ここがボトルネックになるという欠点も
ある。
【0009】RAIDレベル5はこの点を改善したもの
で、パリティを格納するディスクを、ブロックごとに回
転させることで、特定のディスクにアクセスが集中する
のを防止している。次に、図9を参照してさらに具体的
に従来例を説明する。
【0010】CPU800は、ディスクアレイシステム
全体を制御するためのものである。ホストインターフェ
ース801は、図示しないホストとのデータのやりとり
をするためのインターフェースである。バッファ802
は、ディスク上のデータを一時格納しておくためのバッ
ファメモリであり、ホスト、CPU800のいずれから
もアクセスが出来る。ディスクコントローラ803〜8
06は、ディスクの読み書きを制御する回路で、同じも
のが4個、CPUバスに接続されている。ディスク80
7〜810は、磁気ディスクであり、同じものが4個、
それぞれのディスクコントローラ803〜806につな
がっている。CPU800が、ディスクコントローラ8
03〜806を制御することにより、バッファ802上
のデータをディスク807〜810に書いたり、ディス
ク807〜810のデータをバッファ802上に読み出
したりできる。
【0011】パリティは、CPU800が計算して求め
ている。CPUでパリティを計算するこの方式では、R
AIDレベル0、1、2、3、4、5のどれでもソフト
次第で実現可能であるが、ここでは、レベル3を例に取
る。ディスク807〜809がデータディスク、ディス
ク810がパリティディスクとなる。
【0012】ライト時、ホストから送られたデータは、
ホストインターフェース801を介して、一旦バッファ
802に格納される。CPU800は、データを1バイ
トごとに区切って、3つのディスク807〜809に格
納するためのブロックに切り分ける。また、CPU80
0は、3つのブロックの各データからEXCLUSIV
E−ORの演算を行い、パリティを計算する。
【0013】ここでいうパリティの意味は、3つのデー
タ間で各bitごとに1の立っているbitが奇数個あ
るか偶数個あるかを示すものである。パリティには奇数
パリティと偶数パリティの2種類がある。奇数パリティ
は、1の立っているbitが奇数個のときパリティを0
として、パリティを含めた全体の1の立っているbit
の数を奇数にするものである。偶数パリティは、1の立
っているbitが偶数個のときパリティを0として、パ
リティを含めた全体の1の立っているbitの数を偶数
にするものである。RAIDに用いるのは、偶数パリテ
ィでも奇数パリティでもどちらでも良い。
【0014】例えば、00101111、011110
00、11100100、という3つのデータの偶数パ
リティを求めてみると、bit7(MSB)には1がひ
とつなのでパリティ1、bit6は2個でパリティ0と
いう具合で、8bit全部のパリティは、101100
11となる。偶数パリティはEXCLUSIVE−OR
演算で求めることが出来る。例えば上の例で、bit6
は、0+1+1=0となる(ここではEXCLUSIV
E−ORを+で表わした)。奇数パリティはEXCLU
SIVE−OR演算で求められた結果を反転すれば求め
られる。
【0015】このようにして求めたパリティデータと3
つのデータブロックとの計4つのブロックをディスク8
07〜810に一斉に書き込む。単一のディスクに書く
場合と比べると、一つのディスクに対する書き込むデー
タ量が1/3になっているので高速に書き込める。
【0016】リード時は、3つのデータディスク807
〜809からデータを読み出して、バイト毎に組み立て
ると元のデータが再生される。単一のディスクを読む場
合と比べると、一つのディスクから読み出すデータ量が
1/3になっているので高速に読み出せる。
【0017】3つのデータディスク807〜809のう
ちどれかひとつが読めないときは、パリティディスク8
10のデータを読み出し、これと読めた2つのデータと
でEXCLUSIVE−OR演算を行うと、読めなかっ
たデータが復元できる。パリティ計算をしてデータを復
元してからホストに返す場合は、通常のリードよりも時
間がかかるが、高速なCPUを用いれば実用上問題な
い。
【0018】この従来例では、4つのディスク807〜
810のうち1つまでのリードエラーはデータ復元が可
能だが、2つ以上のディスクでリードエラーが起きる
と、データの復元は不可能である。したがって、1つの
ディスクでリードエラーが起きたら、もう一つのディス
クでエラー起きる前に、出来るだけ早く先のディスクの
エラーを復旧する必要がある。
【0019】あるディスクがリードエラーを起こしたり
ディスク全体が故障した場合は、そのディスクを抜いて
新品のディスクと交換し、データ再構築モードに入る。
新品のディスクに、抜き去ったディスクにあったデータ
と同じものを再構築するのである。データの再構築は一
般に「リビルド」と呼ばれ、以下このモードを「リビル
ドモード」と呼ぶ。オペレータが指示して、このモード
に入ってもいいし、あるいは新品のディスクをシステム
が自動的に判断して、このモードに入っても良い。
【0020】リビルドモードでは、エラーの起きていな
いディスク=いわゆる「生き残っている」ディスクか
ら、エラーの起きたディスク=「死んだ」ディスクのデ
ータを復元して、これを新品のディスクに書くという動
作をする。データの復元は、前述のようにEXCLUS
IVE−OR演算で行う。
【0021】例えばディスク808が故障した場合を考
えると、ディスク808を抜いて新品のディスク80
8’を挿し、リビルドモードに入る。すると、CPU8
00は、ディスク807、809、810の第nセクタ
を読んでEXCLUSIVE−OR演算を行い、ディス
ク808に元あったデータを復元し、これをディスク8
08’に書き戻すという動作を、セクタ番号nをスキャ
ンして全てのセクタに対し順に行う。データ復元をセク
タ順に行うためにCPU800は、どのセクタまで復元
したかというポインタを持っている。
【0022】CPU800は、リビルド中にホストから
のデータリード要求があった場合には、リビルド動作を
一時中断してポインタを保存しておいて、要求データを
読み出してホストに返す。読み出しが終わったら、リビ
ルドポインタを見て、続きからリビルドを再開する。ラ
イト要求時も同様である。
【0023】
【発明が解決しようとする課題】上述のように、従来技
術では、リビルドモードにおいてデータリード要求があ
った場合には、リビルドを中断してデータリードを行っ
ており、データの復旧はしていなかった。このリード要
求に応じて障害のあるデータブロックを出力するために
復元されるデータは、ディスクの復旧に際して復元され
るデータと同じであるが、このデータはディスクの復旧
には利用されていなかった。
【0024】つまり、リード要求に応じてのデータ復元
とディスク復旧のためのデータ復元とが別々に実行さ
れ、いわば二度手間をかけていたわけで、結果として、
リビルドに要する時間が長くかかっていた。本発明は、
上述した問題点を解決するためになされたものであり、
リビルドを早く済ませられる記憶装置アレイシステムを
提供するものである。
【0025】
【課題を解決するための手段】上記課題を解決するため
の手段として、請求項1記載の構成を採用できる。この
記憶アレイシステムでは、冗長データ生成手段が、外部
入力データから冗長データを生成すると、データ書き込
み手段は、外部入力データと冗長データを記憶装置に書
込む。そして、データ読出し手段は、外部からの要求に
応じて記録装置からデータを読出す。このデータ読出し
手段が記憶装置のいずれかに記録されたデータを読出せ
ないときに、データ復元手段は他の記憶装置に記録され
ているデータから読出せないデータを復元する。
【0026】また、記憶装置のいずれかに記録されたデ
ータが消失した際には、データ復旧手段が他の前記記憶
装置に記録されているデータから消失したデータを復旧
し、復旧データ書き込み手段が復旧された復旧データを
新たな記憶装置に書き込む。なお、新たな記憶装置とい
っても新品を意味する訳ではなく、正常に機能してデー
タが消失した記憶装置に代わることができるという意味
である。
【0027】このように、この記憶装置アレイは、デー
タが失われた場合には、そのデータを復元して外部の要
求に応じることができ、また失われたデータを新たな記
憶装置に復旧することができる。さらに、この記憶装置
アレイでは、復旧記録手段は、新たな記憶装置の記録単
位例えばセクタ毎に復旧データの書き込み、未書き込み
を記録する。また、復旧データ書き込み手段は、データ
復元手段により復元されたデータを復旧データとして新
たな記憶装置に書き込み、復旧手段は、復旧データが未
書き込みの記録単位に書き込むべきデータだけを復旧す
る。
【0028】外部からの要求に応じてデータ復元手段に
より復元されたデータは、データ復旧手段により復元さ
れるものと同じであるから、これを復旧データとして使
用することに問題はない。このデータが復旧データとし
て新たな記憶装置に書き込まれると、復旧記録手段がこ
れを記録し、復旧手段は、書き込みが記録されている記
録単位に書き込むべきデータは復旧しない。つまり、デ
ータ復元手段によって復元されたデータについては、デ
ータ復旧手段が改めて復元することはない。よって、デ
ータが消失した場合に、すべてのデータについて復旧処
理する場合と比べて、復旧に要する時間は格段に短くな
る。また、データ復旧手段の稼働量自体も節減できる。
【0029】請求項2記載の記憶装置アレイシステムで
は、記憶装置としてハードディスク記憶装置を採用して
いるので、大容量かつ高速な記憶装置アレイを安価に得
ることができる。
【0030】
【発明の実施の形態】次に、本発明の好適な一具体例を
図面を参照して説明し、発明の実施の形態の説明とす
る。なお、この具体例ではRAIDレベル3を採用して
いるが、RAIDの他のレベルやRAID以外のシステ
ムであっても本発明を具現できることは言うまでもな
い。
【0031】
【具体例】図1に示すように、本具体例のディスクアレ
イシステム10は、ディスクアレイシステム10全体を
制御するためのCPU100、32bit幅のデータバ
スで図示しないホストとのデータのやりとりをするため
のホストインターフェース101、データを一時格納し
ておくためのバッファメモリであって、ホスト並びにC
PU100のいずれからもアクセスが可能なバッファ1
02、リビルド中のディスクの各セクタがリビルドを済
ませたかどうかを記録しておくためのフラグ(リビルド
フラグ)を集めたテーブルであって、CPU100のメ
モリ上に形成されるリビルド管理テーブル103、CP
Uバスにパラレルに接続されている同型のディスクコン
トローラ104〜108、各ディスクコントローラ10
4〜108に1台ずつ接続され、ディスクコントローラ
104〜108によって読み書きを制御される同型の磁
気ディスク109〜113を備えている。
【0032】なお、詳細は後述するが、CPU100
は、冗長データ生成手段、データ復元手段およびデータ
復旧手段として機能し、リビルド管理テーブル103は
復旧記録手段に相当する。また、ディスクコントローラ
104〜108は、データ書き込み手段、データ読出し
手段および復旧データ書き込み手段として機能し、磁気
ディスク109〜113は記憶装置に相当している。
【0033】このディスクアレイシステム10において
は、CPU100は、ディスクコントローラ104〜1
08を制御することにより、バッファ102上のデータ
をディスク109〜113に書いたり、磁気ディスク1
09〜113のデータをバッファ102上に読み出した
りできる。
【0034】磁気ディスク109〜113が5台用意さ
れているのは、データディスク用に4台(磁気ディスク
109〜112、以下これらをデータディスク109〜
112とも呼ぶ)とパリティディスク用に1台(磁気デ
ィスク113、以下これをパリティディスク113とも
呼ぶ)を使用するためである。
【0035】ホストからの32bitデータは、CPU
100によって8bitずつに分解されて、データディ
スク109〜112に格納される。また、CPU100
は、4バイトのデータからパリティデータを計算し、こ
れをパリティディスク113に格納させる。
【0036】一般に1つのディスクへのアクセス単位は
セクタと呼ばれるが、この具体例では、ディスクのセク
タ長の4倍がホストからのアクセス単位になっている。
以下の説明では、これら4つのセクタのデータとパリテ
ィデータをまとめた単位をブロックと呼ぶ。
【0037】この具体例のディスクアレイシステム10
では、RAIDレベル3を採用していることから、読み
出し不能セクタが1ディスクのみの場合には、パリティ
演算により元のデータが復元可能である。パリティ計算
によって求めたデータは、正常に読み出せたデータと共
に、ホストへ送り出される。
【0038】ここで、本具体例のディスクアレイシステ
ム10において、磁気ディスク109〜113に障害が
発生した場合の処理について、その概要を説明する。普
通、磁気ディスク109〜113の障害には2段階の程
度が考えられる。第1段階は、とあるセクタが読み出し
不能になったが代替セクタがまだあり、代替処理が可能
な段階であり、第2段階は、読み出し不能なセクタが多
くなり代替セクタが不足してしまった段階、あるいはデ
ィスク全体に係わる故障によりすべてのセクタが読めな
くなる段階である。代替セクタというのは、セクタが読
めなくなるのに備えて予め磁気ディスク109〜113
に用意されているセクタのことである。
【0039】このディスクアレイシステム10では、第
1段階の障害では磁気ディスク109〜113の交換は
行われず、代替セクタによりデータを再生する。つま
り、読めなくなったセクタは、代替セクタに置き換え
て、パリティ演算によって再生したデータをそこに書き
込むのである。
【0040】磁気ディスク109〜113のうちの一つ
が第2段階の障害になったところで、ディスクアレイシ
ステム10は縮退モードに入る。データディスク109
〜112のうちのどれかが第2段階になった場合は、残
りの読み出し可能なセクタとパリティディスク113の
セクタを読み出して、パリティ演算を行い、読み出し不
能のセクタのデータを逆算する。このように、1台のデ
ータディスク109〜112に障害が起きても、残りの
磁気ディスク109〜113のデータから元のデータが
読みだせる。
【0041】縮退モードは、データ冗長性がない状態で
動いている。このモードで、もう1台の磁気ディスク1
09〜113に障害が発生すると、データ復元が出来な
くなるので、早晩、その磁気ディスク109〜113を
交換する必要がある。縮退モードに入ったことは、ホス
トへホストインターフェース101を通して伝えられる
ので、例えばオペレータはこれを知って、障害のある磁
気ディスク109〜113の交換を行う。即ち、障害デ
ィスクを引き抜いて、代わりに新品の磁気ディスクを差
し込むのである。CPU100は、ホストからの指令に
より、あるいは、ディスク交換を自動的に認識して、リ
ビルドモードに入る。
【0042】CPU100は、リビルドモードで、ホス
トからの要求がない暇なときには、データの復元を行っ
ている。つまり、セクタを順に読んで、パリティ演算に
よりデータを再生して、これを新しい磁気ディスクに書
き込む。全てのセクタに対して、これを繰り返す。この
動作をリビルドと呼んでいる。以下、交換した新しい磁
気ディスクをリビルドディスクと呼ぶ。
【0043】CPU100は、ホストからのデータ要求
があった場合には、再生データの書き込みが終わったと
ころでリビルド動作を一時中断して、要求データを読み
出す。このとき、読み出し不能セクタが要求されていた
場合は、再生したデータがリビルドデータそのものであ
るから、これをリビルドディスクに書き込む。リビルド
が完了したセクタには、リビルド管理テーブル103の
該当位置にフラグを立てる。図2に示すように、リビル
ド管理テーブル103では、1ビットが1セクタに対応
し、ビットが立っているところはリビルドが済んでいる
ことを示している。したがって、リビルド管理テーブル
103は総セクタ数分のbitのテーブルである。
【0044】以上が、磁気ディスク109〜113に障
害が発生した場合の処理の概要であるが、次に、図3〜
図7を参照してさらに詳細に説明する。なお、以下の説
明で使用され図中に示される変数として、モード変数
M、リビルドポインタrp、リビルドディスク番号R、
ターゲットセクタ番号Tがある。
【0045】モード変数Mは、現在のモードが通常モー
ド、縮退モードまたはリビルドモードのいずれであるか
を示す変数である。リビルドポインタrpは、リビルド
をどのセクタまで進めたかを記憶するための変数で、本
具体例では次にリビルドを行うセクタのセクタ番号が使
用されている。リビルドディスク番号Rは、何番目のデ
ィスクをリビルドするかを示す変数である。ターゲット
セクタ番号Tは、ホストからのリード/ライト要求のあ
ったセクタ番号である。
【0046】図3は、CPU100が実行するメインル
ーチンのフローチャートである。このメインルーチンの
処理では、CPU100は、まず必要な初期化を行う
(ステップ300)。次に、CPU100は、ディスク
交換の有無を判断する(ステップ301)。
【0047】ここで交換があった(ステップ301:Y
ES)場合は、CPU100は、ステップ302へ進
み、図4に示されるサブルーチンAを実行する。このサ
ブルーチンAはディスク交換の確認処理であるが、詳細
は後述する。また、ディスク交換がなければ(ステップ
301:NO)、CPU100は、ステップ303に進
んでホストからの要求の有無を判断する。
【0048】ホストからの要求があれば(ステップ30
3:YES)、CPU100は、ステップ304へ進ん
で、ホストからの要求がリードかライトかを判断する。
そして、ホストからの要求がリードならばステップ30
5へ進みサブルーチンBを実行し、ライトならばステッ
プ306へ進んでサブルーチンCを実行する。サブルー
チンBはリード要求の処理であり、サブルーチンCはラ
イト要求の処理であるが、それぞれの詳細は後述する。
【0049】続くステップ307では、CPU100は
リビルドモードに入っているかどうかを調べる。そし
て、リビルドモードになっている場合は(ステップ30
7:YES)、CPU100は、ステップ308へ進
み、サブルーチンDを実行する。このサブルーチンDは
リビルドの処理であるが、詳細は後述する。なお、リビ
ルドモードになるのは、サブルーチンAの中で条件が成
立したときであるが、この条件についても後述する。
【0050】このメインルーチンのフローチャートから
分かるように、一旦リビルドモードになると、ホストか
らの要求がないときにはサブルーチンDが必ず実行され
ることになり、ここでセクタ順のリビルドが行われる。
次に、サブルーチンA〜Dについて、順に説明する。
【0051】まず図4を参照してサブルーチンAについ
て説明する。このサブルーチンの処理は、ディスク交換
の確認作業に相当する。図4に示すように、サブルーチ
ンAでは、CPU100は、交換された磁気ディスク1
09〜113のファイル管理テーブルを読み出し(ステ
ップ401)、ファイル管理テーブルが初期化されてい
るか否かを判断する(ステップ402)。新品の磁気デ
ィスクはファイル管理テーブルが初期化されているか
ら、このテーブルが初期化されてるか否かにより、新し
い磁気ディスクか否かを判断できる。
【0052】ファイル管理テーブルが初期化されていな
ければ(ステップ402:NO)、CPU100は、ス
テップ403に進んで、図示しないディスプレイに例え
ば「新品ディスクではありませんが、リビルドしますか
? リビルドするとディスク上のデータはすべて消えて
しまいます。」といった内容にメッセージを表示させ、
応答入力を待つ。これは、ディスク交換がされたのに、
その磁気ディスクに使った形跡があるという場合である
から、オペレータに本当にこのディスクを使っていいの
かを問い合わせる作業である。CPU100は、応答入
力がYであれば(ステップ404:YES)ステップ4
05に進み、応答入力がYでなければ(ステップ40
4:NO)ステップ408に進んでエラー処理を実行す
る。
【0053】ファイル管理テーブルが初期化されていれ
ば(ステップ402:NO)、CPU100は、ステッ
プ405に進み、モード変数Mを”リビルド”に設定し
てリビルドモードに入る。以下、この新しいディスクを
リビルドディスクと呼ぶ。次に、CPU100は、リビ
ルド管理テーブルのすべてのbitを0にし(ステップ
406)、リビルドポインタrpを0にして(ステップ
407)、このサブルーチンを終えメインルーチンに戻
る。ステップ406〜407の処理は、これからリビル
ドを行うための初期化処理である。
【0054】次に、図5および図6を参照して、ホスト
からの要求に応じて読み出しを行うサブルーチンBにつ
いて説明する。図5に示すように、CPU100は、サ
ブルーチンBを開始すると、現在のモードが縮退モード
か否かを判断する(ステップ500)。ここで縮退モー
ドであったならば(ステップ500:YES)、CPU
100は図7に示されるステップ521へ進み、そうで
なければステップ501へ進む。
【0055】ステップ501では、CPU100は、現
在のモードがリビルドモードかどうかを判断する。リビ
ルドモードであったならば(ステップ510:YE
S)、CPU100は図6に示されるステップ511へ
進み、そうでなければステップ502へ進む。
【0056】ステップ502では、CPU100は、各
ディスクコントローラ104〜108に指示して、デー
タディスク109〜112と1つのパリティディスク1
13のターゲットセクタを読み出させ、それをバッファ
102に転送して一時記憶させる。
【0057】続いてCPU100は、ステップ502の
処理で読み出しエラーが起きたディスクの数を調べる
(ステップ503)。ここでエラーが起きていなければ
(=すべて正常)ステップ510へ進み、ひとつのディ
スクで読み出しエラーが起きた場合はステップ504へ
進み、2つ以上のディスクでエラーが起きた場合は、図
示しないエラー処理ルーチンへ飛ぶ。
【0058】ステップ504では、CPU100は、先
程のエラーが代替セクタ処理が可能なエラーかどうかを
判断する。代替セクタ処理が可能とは、ディスク全体の
エラーではなく、そのセクタだけに関するエラーが発生
した場合を言う。CPU100は、これが可能ならばス
テップ505へ進み、代替セクタ処理を行う。具体的に
は、ディスクコントローラ104〜108を介して磁気
ディスク109〜113に代替セクタ登録処理コマンド
を送り、読めなくなったセクタを物理的には別のセクタ
に置き換えて、そこを以前と同じセクタ番号指定でアク
セスが出来るようにするのである。
【0059】また、この処理中に、例えば代替セクタが
もう残っていないので代替セクタ処理ができないといっ
たエラーが発生する場合がある。このようなエラーが起
きた場合には(ステップ506:YES)、CPU10
0はステップ507へ進む。一方、正常に処理が出来た
ら(ステップ506:NO)、CPU100はステップ
507に進み、ディスクコントローラ104〜108に
指示して磁気ディスク109〜113の代替処理の済ん
だセクタに復元データを書き込ませる。
【0060】5つの磁気ディスク109〜113のデー
タの内4つは正しく読めているので、パリティ演算によ
り読めなかった磁気ディスクのデータを復元でき、これ
を代替セクタに書き込むのである。代替セクタへの書き
込みが済んだら、CPU100はステップ510へ進
み、ホストへデータを出力する。
【0061】また、読み出しエラーの代替セクタ処理が
不可能な場合(ステップ504:NO)、あるいは代替
セクタ処理ができなかった場合(ステップ506:YE
S)、CPU100は、エラーの起きた磁気ディスク1
09〜113をリビルドディスクとしてリビルドディス
ク番号Rに記憶し(ステップ508)、モードを縮退モ
ードにしてから(ステップ509)、ホストへデータを
出力し(ステップ510)、このサブルーチンを終えメ
インルーチンに戻る。
【0062】他方、現在のモードが縮退モードで(ステ
ップ500:YES)、ステップ521へ進んだ場合に
は、CPU100は、磁気ディスク109〜113のう
ちの正常なもののディスクコントローラ104〜108
に指示して、4つの正常ディスクのターゲットセクタを
読む。次に、CPU100は、障害ディスクがパリティ
ディスク113かどうかを判断する(ステップ52
2)。CPU100は、パリティディスク113であっ
たなら(ステップ522:YES)そのままステップ5
10に進み、パリティディスク113でなければ(ステ
ップ522:NO)エラーディスクのデータをパリティ
演算で復元してから(ステップ523)、ステップ51
0に進む。
【0063】次に、ステップ501で、現在のモードが
リビルドモードであると判断された場合(ステップ51
0:YES)について説明する。この場合、CPU10
0は図6に示されるステップ511へ進む。CPU10
0は、ステップ511では、磁気ディスク109〜11
3のうちの正常なもののディスクコントローラ104〜
108に指示して、4つの正常ディスクのターゲットセ
クタを読み出し、そのデータをバッファ102に送って
一時記憶させる。次に、CPU100は、リビルドディ
スクはパリティディスク113かどうかを判断し(ステ
ップ512)。パリティディスク113ならステップ5
16へ進み、そうでなければステップ513へ進む。
【0064】ステップ513では、CPU100は、読
み出せないデータディスク109〜112のいずれかの
データをバッファ102内のデータからパリティ演算で
復元する。このデータはリビルドディスクに書き込むデ
ータでもある。続いて、CPU100は、ホストへデー
タを出力する(ステップ514)。
【0065】次に、CPU100は、ターゲットセクタ
のリビルドフラグを検査し、これがリビルド済みか否か
を判断する(ステップ515)。ここでリビルド済なら
(ステップ515:YES)、CPU100はこのサブ
ルーチンを抜ける。まだリビルドされていなければ(ス
テップ515:NO)、CPU100はステップ519
へ進む。
【0066】また、リビルドディスクがパリティディス
ク113であったので(ステップ512:YES)、ス
テップ516へ進んだ場合には、CPU100は、バッ
ファ102に保存させていたデータをホストへ出力す
る。続いて、CPU100は、ターゲットセクタのリビ
ルドフラグを検査し、これがリビルド済みか否かを判断
する(ステップ517)。ここでリビルド済なら(ステ
ップ517:YES)、CPU100はこのサブルーチ
ンを抜ける。まだリビルドされていなければ(ステップ
517:NO)、CPU100はパリティデータを計算
してから(ステップ518)ステップ519へ進む。
【0067】ステップ519では、CPU100は、リ
ビルドディスクのターゲットセクタにステップ513で
復元した復元データまたはステップ518で算出したパ
リティデータを書き込む。続いて、CPU100は、リ
ビルド管理テーブル103のステップ519で書き込ん
だセクタに対応する位置にフラグを立て(ステップ52
0)、このサブルーチンを抜ける。
【0068】次に、ホストからの要求に応じてディスク
への書き込みを行うサブルーチンCについて図7を参照
して説明する。図7に示すように、CPU100は、ま
ずバッファ102に指示してホストからのデータを受け
取らせる(ステップ600)。次に、CPU100は、
現在のモードが縮退モードかどうかを判断する(ステッ
プ601)。ここで縮退モードなら(ステップ601:
YES)、CPU100はステップ602へ進み、リビ
ルドディスクがパリティディスクかどうかを判断する。
障害ディスクがパリティディスクなら(ステップ60
2:YES)、CPU100はステップ603へ進み、
バッファ102からのデータをディスクコントローラ1
04〜107に転送してデータディスク109〜112
に書き込ませる。
【0069】障害ディスクがパリティディスクでなけれ
ば(ステップ602:NO)、CPU100はステップ
604へ進み、パリティデータを計算する。次いで、C
PU100は、このパリティデータをディスクコントロ
ーラ108に送ってパリティディスク113に書き込ま
せ、バッファ102からのデータを障害のない3つのデ
ータディスク109〜112のディスクコントローラ1
04〜107に転送して書き込ませる(ステップ60
5)。
【0070】一方、現在のモードが縮退モードではなけ
れば(ステップ601:NO)、CPU100はステッ
プ606へ進み、パリティデータを計算する。次いで、
CPU100は、このパリティデータをディスクコント
ローラ108に送ってパリティディスク113に書き込
ませ、バッファ102からのデータをディスクコントロ
ーラ104〜108に転送してデータディスク109〜
112に書き込ませる(ステップ607)。
【0071】次に、CPU100は、現在のモードがリ
ビルドモードであるか否かを判断する(ステップ60
8)。ここで、リビルドモードなら(ステップ608:
YES)ステップ609へ進んで、リビルド管理テーブ
ル103のターゲットセクタのリビルドフラグを立て
る。
【0072】なお、CPU100は、上述のステップ6
03、604、609のいずれかの処理の後、このサブ
ルーチンを抜けてメインルーチンに戻る。次に、リビル
ドのバックグラウンド処理を行うサブルーチンDについ
て図8を参照して説明する。
【0073】図8に示すように、CPU100は、リビ
ルド管理テーブル103の中の、リビルドポインタrp
の指すセクタに対応するフラグを検査し、そのセクタが
リビルド済みかどうかを判断する(ステップ701)。
既にリビルド済の場合は(ステップ701:YES)ス
テップ706へ進み、そうでなければステップ702へ
進む。
【0074】ステップ702では、CPU100は、磁
気ディスク109〜113中の4つの正常な磁気ディス
クのディスクコントローラ104〜108に指示して、
リビルドポインタrpの指すセクタのデータを読み出さ
せ、これをバッファ102に記憶させる。続くステップ
703では、CPU100は、バッファ102内のデー
タから、パリティ演算でリビルドデータを求める。次
に、CPU100は、リビルドディスクのリビルドセク
タにステップ703で求めたリビルドデータを書き込む
(ステップ704)。続いて、CPU100は、リビル
ド管理テーブル103のリビルドセクタの位置にフラグ
を立てる(ステップ705)。
【0075】ステップ706では、CPU100は、リ
ビルドポインタrpを1セクタ進め、続くステップ70
7では、リビルドポインタrpが最大セクタ数を越えた
かどうかを判断する。ここで、リビルドポインタrpが
最大セクタ数を越えていれば(ステップ707:YE
S)、CPU100はステップ708へ進み、モードを
通常モードに戻す。また、リビルドポインタrpが最大
セクタ数を越えていなければ(ステップ707:N
O)、CPU100はこのサブルーチンを抜けてメイン
ルーチンに戻る。
【0076】以上の説明から分かるように、本具体例の
ディスクアレイシステム10では、リビルドモードにお
いてデータリード要求があった場合に、障害のあるデー
タブロックを出力するときは、ホストに出力するための
データの復元を行い、これをホストに返すと同時にこの
データをリビルドセクタにも書いている(サブルーチン
Bのステップ519参照)。このとき磁気ディスクの各
セクタが復旧を済ませたかどうかを記録するための復旧
済記録テーブルにリビルド済みであることを記録する
(同ステップ520参照)ので、通常のセクタ順に行わ
れるリビルドのときに、このセクタに対するリビルドを
スキップする(サブルーチンDステップ701から70
6へのジャンプ参照)ことで、リビルドの総時間を短く
することができる。
【0077】以上、具体例に従って、本発明の実施の形
態について説明したが、本発明はこのような具体例に限
定されるものではなく、本発明の要旨を逸脱しない範囲
でさまざまに実施できることは言うまでもない。この具
体例では磁気ディスクを使用したが、例えば光磁気ディ
スク、CD−R、フロッピーディスクなどを用いても同
様の構成が可能であり、同様の効果を得ることができ
る。
【0078】
【発明の効果】以上説明したように、請求項1記載の記
憶装置アレイシステムによれば、データが消失した場合
に、すべてのデータについて復旧処理する場合と比べ
て、復旧に要する時間は格段に短くなる。また、データ
復旧手段の稼働量自体も節減できる。
【0079】請求項2記載の記憶装置アレイシステムで
は、記憶装置としてハードディスク記憶装置を採用して
いるので、大容量かつ高速な記憶装置アレイを安価に得
ることができる。
【図面の簡単な説明】
【図1】 具体例のディスクアレイシステムの構成を説
明するブロック図である。
【図2】 具体例のリビルド管理テーブルの説明図であ
る。
【図3】 具体例のディスクアレイシステムのCPUが
実行するメインルーチンのフローチャートである。
【図4】 具体例のディスクアレイシステムのCPUが
実行するサブルーチンAのフローチャートである。
【図5】 具体例のディスクアレイシステムのCPUが
実行するサブルーチンBの一部のフローチャートであ
る。
【図6】 具体例のディスクアレイシステムのCPUが
実行するサブルーチンBの一部のフローチャートであ
る。
【図7】 具体例のディスクアレイシステムのCPUが
実行するサブルーチンCのフローチャートである。
【図8】 具体例のディスクアレイシステムのCPUが
実行するサブルーチンDのフローチャートである。
【図9】 従来例のディスクアレイシステムの構成を説
明するブロック図である。
【図10】 RAIDレベル0およびRAIDレベル1
の説明図である。
【図11】 RAIDレベル2およびRAIDレベル3
の説明図である。
【図12】 RAIDレベル4およびRAIDレベル5
の説明図である。
【符号の説明】
10・・・ディスクアレイシステム、100・・・CP
U(冗長データ生成手段、データ復元手段、データ復旧
手段)、101・・・ホストインターフェース、102
・・・バッファ、103・・・リビルド管理テーブル
(復旧記録手段)、104〜108・・・ディスクコン
トローラ(データ書き込み手段、データ読出し手段、復
旧データ書き込み手段)、109〜113・・・磁気デ
ィスク(記憶装置)。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 複数台の記憶装置と、外部入力データか
    ら冗長データを生成する冗長データ生成手段と、前記記
    憶装置に前記外部入力データと前記冗長データを書込む
    データ書き込み手段と、外部からの要求に応じて前記記
    録装置からデータを読出すデータ読出し手段と、該デー
    タ読出し手段が前記記憶装置のいずれかに記録されたデ
    ータを読出せないときに他の前記記憶装置に記録されて
    いるデータから該読出せないデータを復元するデータ復
    元手段と、前記記憶装置のいずれかに記録されたデータ
    が消失した際に他の前記記憶装置に記録されているデー
    タから前記消失したデータを復旧するデータ復旧手段
    と、該復旧された復旧データを新たな記憶装置に書き込
    む復旧データ書き込み手段とを有する記憶装置アレイシ
    ステムにおいて、 前記新たな記憶装置の記録単位毎に前記復旧データの書
    き込み、未書き込みを記録する復旧記録手段を設け、 前記復旧データ書き込み手段は、前記データ復元手段に
    より復元されたデータを前記復旧データとして前記新た
    な記憶装置に書き込む構成とし、 前記復旧手段は、前記復旧データが未書き込みの記録単
    位に書き込むべきデータだけを復旧する構成としたこと
    を特徴とする記憶装置アレイシステム。
  2. 【請求項2】 請求項1記載の記憶装置アレイシステム
    において、 前記記憶装置はハードディスク記憶装置であることを特
    徴とする記憶装置アレイシステム。
JP8068748A 1996-03-25 1996-03-25 記憶装置アレイシステム Pending JPH09258913A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8068748A JPH09258913A (ja) 1996-03-25 1996-03-25 記憶装置アレイシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8068748A JPH09258913A (ja) 1996-03-25 1996-03-25 記憶装置アレイシステム

Publications (1)

Publication Number Publication Date
JPH09258913A true JPH09258913A (ja) 1997-10-03

Family

ID=13382712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8068748A Pending JPH09258913A (ja) 1996-03-25 1996-03-25 記憶装置アレイシステム

Country Status (1)

Country Link
JP (1) JPH09258913A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009252001A (ja) * 2008-04-08 2009-10-29 Nec Corp Raidシステム、及びエラーセクタの修復方法
JP2014059659A (ja) * 2012-09-14 2014-04-03 Toshiba Corp 映像収録再生装置及びリビルド再開方法
JP2016530637A (ja) * 2013-08-27 2016-09-29 エージェンシー フォー サイエンス,テクノロジー アンド リサーチ Raidパリティストライプ再構成

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009252001A (ja) * 2008-04-08 2009-10-29 Nec Corp Raidシステム、及びエラーセクタの修復方法
JP2014059659A (ja) * 2012-09-14 2014-04-03 Toshiba Corp 映像収録再生装置及びリビルド再開方法
JP2016530637A (ja) * 2013-08-27 2016-09-29 エージェンシー フォー サイエンス,テクノロジー アンド リサーチ Raidパリティストライプ再構成

Similar Documents

Publication Publication Date Title
JP2603757B2 (ja) アレ−ディスク装置の制御方法
US5479611A (en) Disk array apparatus
JP3742494B2 (ja) 大容量記憶装置
JP3181398B2 (ja) アレイ型記録装置
US7930697B2 (en) Apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US6990611B2 (en) Recovering data from arrays of storage devices after certain failures
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
JP3133004B2 (ja) ディスクアレイ装置およびその制御方法
US8402210B2 (en) Disk array system
JP3752203B2 (ja) Raid論理ドライブ・マイグレーションにおいてデータをマイグレーションするための方法及びシステム
JPH09305328A (ja) ディスクアレイ装置
US20060190683A1 (en) Disk array apparatus and backup method of data
US6484269B1 (en) Data storage system and method with improved data integrity value calculation
JP2001344076A (ja) ディスクアレイ装置
JP3072700B2 (ja) 記憶装置及び方法
KR100463841B1 (ko) 레이드 서브 시스템과 이를 이용한 디스크 에러 모드에서데이터 입출력 및 복구 방법
JPH07261945A (ja) ディスクアレイ装置およびディスクアレイの区分け方法
JP2857288B2 (ja) ディスクアレイ装置
JPH09258913A (ja) 記憶装置アレイシステム
JP3676793B2 (ja) ディスクアレイ装置
JP3699473B2 (ja) ディスクアレイ装置
JP2004185477A (ja) 光記憶媒体アレイ装置およびデータ転送方法
JPH07211016A (ja) ディスク記憶装置およびそのデータ記録方法
JP3668810B2 (ja) 記憶装置の障害回復方法
KR100300836B1 (ko) 데이타재구성방법및데이타기억시스템

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040601

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041102