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

記憶装置アレイシステム

Info

Publication number
JPH10143331A
JPH10143331A JP8315550A JP31555096A JPH10143331A JP H10143331 A JPH10143331 A JP H10143331A JP 8315550 A JP8315550 A JP 8315550A JP 31555096 A JP31555096 A JP 31555096A JP H10143331 A JPH10143331 A JP H10143331A
Authority
JP
Japan
Prior art keywords
data
buffer
error correction
storage device
read
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
JP8315550A
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.)
Brother Industries Ltd
Xing Inc
Original Assignee
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 Brother Industries Ltd, Xing Inc filed Critical Brother Industries Ltd
Priority to JP8315550A priority Critical patent/JPH10143331A/ja
Publication of JPH10143331A publication Critical patent/JPH10143331A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【課題】 HDD等の記憶装置を同期運転させる必要が
なく安価に構成でき、しかもハードウェアによるリビル
ドが可能な記憶装置アレイシステムを提供する。 【解決手段】 記憶装置アレイシステム1は複数の記憶
装置101を有し、外部より入力されたデータは複数の
データブロックに分割されて、それぞれエラー訂正符号
を付与した形で上記記憶装置101に分散して記憶され
るとともに、各データブロックはそれら記憶装置101
に対し並列して読み書きされる。また、各記憶装置10
1に対応して設けられ、各々対応する記憶装置101か
ら読み出されたデータを一時蓄積する独立したバッファ
104と、それらバッファ104に蓄積されたデータを
一括して読み出すデータ読出手段107と、該データ読
出手段107がバッファ104から読み出したデータを
エラー訂正し、そのエラー訂正されたデータを外部へ出
力するエラー訂正回路106とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ディスクアレイシ
ステム(いわゆるRAIDシステム)等の記憶装置アレ
イシステムに関するものである。
【0002】
【従来の技術】従来より、大容量で高速な記憶装置とし
てディスクアレイ(別名RAID:Redundant Arrays o
f Inexpensive Disksの略)が知られている。ディスク
アレイでは、磁気ディスクドライブ(例えばハードディ
スクドライブ:以下、HDDという)を複数台パラレル
に同時動作させて、データ入出力性能の高速化を図って
いる。また、ディスクアレイでは、データの信頼性を向
上させるために、冗長データ(誤り訂正符号あるいはエ
ラー訂正符号)を付加して記憶しており、ディスク上の
データの一部が失われても元のデータを復元することが
できるようになっている。
【0003】例えば、冗長データとしてパリティを使用
する場合、図12(a)に示すように、原データは数ビ
ット単位(例えば、8ビット(1バイト)単位)毎に区
切られてデータブロックB11、B12、‥‥に分割され、
パリティP11、P12、‥‥をそれぞれ付加して、同図
(b)に示すように各HDDに格納される。なお、図で
は、原データは3つのHDD(ディスク1〜3)に分散
・格納されるように描いている。
【0004】パリティは、データブロック中の「1」と
なっているビット数が偶数である場合にパリティを
「1」、奇数の場合に「0」とする奇数パリティと、同
じく偶数である場合にパリティを「0」、奇数の場合に
「1」とする偶数パリティとがあり、例えば、データブ
ロックが「10001010」であったときの偶数パリ
ティは「1」となる。そして、該データブロックの読出
し時に、そのいずれか1つのビットが読み出せなかった
場合に、読み出しに成功した他のビットの値とパリティ
ビットの値とから、その読み出せなかったビットの値を
決定・復元することができる。なお、偶数パリティを使
用すれば、読めなかったビットを除いてデータブロック
中のパリティを含む全てのビットの排他的論理和をとる
ことで、その読めなかったビットの値を直接求めること
ができる。例えば、上記データ「10001010:
1」の、上から2桁目の「0」が読めなかった場合、上
記排他的論理和xは、 x=1#0#0#1#0#1#0#1=0 (「#」は、排他的論理和演算を表す記号とする)とな
り、上記読めなかったビットの値に等しくなっているこ
とがわかる。なお、パリティの他にも、誤り訂正符号に
は様々なもの(例えばハミング符号、BCH符号あるい
はリードソロモン符号など)が考案されており、もっと
多くの誤りを訂正できるものもある。
【0005】ここで、ディスクアレイにおいて、ひとつ
の記憶装置が障害を起こして、その中のデータが読み出
し不可能になった場合には、その記憶装置を取り外し、
新たな記憶装置を設置する必要が生ずるが、新たな装置
にはデータが入っていないので、ここにデータを書き込
む必要がある。これには、単に外部から全てのデータを
再入力する方法と、残りの記憶装置のデータから誤り訂
正符号により消失したデータを再生して、新たな記憶装
置に書き込む方法がある。後者の方法でデータを再生す
ることをリビルド(再構築)と呼んでいる。
【0006】例えばディスクアレイがレベル3のRAI
Dの場合、元のデータは数ビット単位(例えば1ビット
単位、8ビット単位あるいはワード単位)ごとにブロッ
クに分割され、パリティを付加して各HDDに分散・格
納される。ここで、原データをブロック分割して分散記
憶するための、並列に並べた各HDDの各々の系統を、
第1レーン、第2レーン‥‥等と呼ぶことにする。ま
た、HDDを何台並列に並べるかという数をパラレル数
と呼び、pという変数で表すこととする。ただし、パラ
レル数pには、エラー訂正情報を格納するためのHDD
は含めない。従って、エラー訂正情報としてパリティを
採用した場合は、p+1個のレーンが存在することとな
る。なお、エラー訂正情報用のレーン、すなわちパリテ
ィデータ用のレーンはパリティレーンと呼ぶことにす
る。
【0007】RAIDにおいてエラー訂正を行う方式と
しては、CPUの演算により行う方式と、ハードウェア
により行う方法との2種類がある。図10は、CPUを
用いる場合の例を示している。まず、ホストから送られ
てくるデータを各HDDに書き込む場合、データはホス
トインターフェース401を介して一旦バッファ402
に格納される。CPU400は、図12(a)に示すよ
うに、原データを3つのHDDに格納するために8ビッ
ト(1バイト)毎のデータブロックに切り分ける。
【0008】次いで、同図(b)に示すように、3つの
各データブロックの対応する位置にあるビット同士に排
他的論理和演算を施して奇数パリティを計算する。図に
示した例では、データブロックはそれぞれ「00101
111」、「01111000」、「1110010
0」であり、その第1ビット同士のパリティは0#0#
1=1、第2ビット同士のパリティは0#1#1=0、
‥‥等となり、8つのすべてのビットについて得られる
パリティの組は「10110011」となる。このよう
にして求めたパリティデータと3つのデータブロックと
の、計4つのブロックが4つのHDDに一斉に書き込ま
れる。同じ量のデータを単一のHDDに書く場合と比べ
ると、一つのHDDに対する書き込むデータ量が1/3
になっているので高速に書き込める。
【0009】次にデータの読出しを行う場合は、パリテ
ィレーン以外の3つのレーンからデータブロックを読み
出して、これを元の順に再配列することにより原データ
が復元される。ここで、3つのレーンのうちどれか1つ
においてデータの読出しが不能となった場合には、パリ
ティレーンからパリティデータを読み出し、これと読め
た2つのデータブロックとの間で、各ビット毎に排他的
論理和演算を行うと、読めなかったデータブロックが復
元できる。図12(c)には、第3レーン(ディスク
3)のデータ読出しが不能となった場合のデータ復元例
を示している。ここで、読出し時にパリティ計算により
データを復元する場合は通常の読出しよりも時間がかか
るので、この時間が問題になる場合は高速なCPUを用
いる必要がある。
【0010】また、ディスクアレイでは、複数のHDD
のうち1つまでのリードエラーはデータ復元が可能であ
るが、2つ以上のHDDでリードエラーが起きるとデー
タの復元は不可能となる。従って、1つのHDDでリー
ドエラーが起きたら、もう一つのHDDでエラーが起き
る前になるべく早く障害を起こしたHDDのエラーを復
旧する必要があり、そのためにはHDDの交換を行うの
が通常である。あるHDDがリードエラーを起こしたり
ドライブ全体が故障した場合は、そのディスクを抜いて
新品のディスクと交換する。新品のディスクには、予め
元のデータを書いてバックアップしておくという方法も
あるが、元のデータのバックアップが常にとられている
とは限らないため、通常は、新品のHDD上に、抜き去
ったHDDにあったデータと同じものを誤り訂正符号を
使って再構築する必要がある。このデータの再構築が前
述の「リビルド」であり、以下、このデータ再構築を行
うモードを「リビルドモード」と呼ぶ。
【0011】リビルドモードでは、エラーの起きていな
いHDD(いわゆる「生き残っている」HDD)から、
エラーの起きたHDD(いわゆる「死んだ」HDD)の
データを復元して、これを新品のHDDに書くという動
作をする。データの復元は、誤り訂正符号としてパリテ
ィを使用する場合は、前述のように排他的論理和演算で
行う。例えば、図10において、HDD408が故障し
た場合を考えると、HDD408を新品のHDDと交換
してリビルドモードに入ると、CPU400は、HDD
407、409、410の第nセクタを読んで排他的論
理和演算を行い、HDD408に元あったデータを復元
してHDD408に書き戻すという動作を、セクタ番号
nを0から最大セクタ番号までスキャンして全てのセク
タに対し順に行なう。このような、消失データの復元を
CPUにより行う方法は、データの入出力速度がCPU
の処理速度に制限されるので、高速なディスクアレイが
望みなら高速なCPUを用いる必要がある。
【0012】次に、冗長データの生成、消失データの復
元をハードウェアにより行う場合のブロック図を図11
に示している。この回路の中核となるのは、エラー訂正
回路及びパリティジェネレータ500(以下では略して
ECCと呼ぶ)で、データを記憶する場合はパリティジ
ェネレータ(パリティ生成回路)として働き、データを
読み出す場合にはエラー訂正回路として働くものであ
る。まず、データをホストから書き込む場合について説
明すると、ホストインターフェース501を介して送信
されてくるデータはECC500でパリティデータが付
加され、また1バイト毎に分割されてディスクコントロ
ーラ502に入力される。ディスクコントローラはこれ
らをHDD503に書き込む。
【0013】一方、データを読み出す場合は、どのHD
D503に障害が発生しているかをエラー検出手段50
4が監視し、ECC500にそれを伝える。ECC50
0は指示されたレーンのデータを復元するように働く。
ここでECC500は、各レーンのデータ信号の排他的
論理和を論理IC(EXCLUSIVE-OR回路)を用いてとるよ
うに構成されているため、これが正しく動作するために
は、全てのレーンのデータが時間的に同時に揃って入力
される必要がある。従って、HDD503からのデータ
は時間的にバラバラではなく同期して出力される必要が
あり、このために複数のHDDを同期して回転させる
「スピンドルシンク」という技術が用いられている。こ
れは、HDDに外部から同期信号を与え、各HDDのス
ピンドルモータをこれに同期させて回転させる手法であ
り、PLL回路などを利用して実現する。図11では、
同期信号発生器505が各HDD503に同期信号を与
えている。一方、HDD503にデータを書き込むとき
は、各HDD503に対しそれぞれ定められたセクタに
同じタイミングでデータを書き込む必要があるが、この
場合も各HDD503を同期して回転させる必要が生ず
る。
【0014】
【発明が解決しようとする課題】上記従来技術におい
て、CPUでパリティを計算する方式では、データの入
出力速度がCPUの計算能力で制限されるためあまり高
速な出力ができず、これを高速にしようとすると高速な
CPUを使用する必要が生ずることから、装置が高価に
なってしまうという問題があった。また、エラー訂正を
ハードウェアで行う方式では、アレイを構成するすべて
のHDDを同期運転する必要があり、そのためのスピン
ドルシンク機能を持ったディスク装置は高価である欠点
がある。また、ハードウェアによる従来方式では、デー
タのリビルドを行うための方法が全く考慮されていない
ため、HDDの1つが故障した場合は、新しいものと交
換した後、全てのデータを外部から入力し直す必要があ
るという大きな欠点があった。
【0015】本発明の課題は、エラー訂正をハードウェ
アを用いて行うことによりデータの入出力速度が高くで
き、またHDD等の記憶装置を同期運転させる必要がな
く安価に構成でき、しかもリビルドが可能な記憶装置ア
レイシステムを提供することにある。
【0016】
【課題を解決するための手段及び作用・効果】上述の課
題を解決するために、本発明の記憶装置アレイシステム
は、複数の記憶装置を有し、外部より入力されたデータ
を複数のデータブロックに分割して、それぞれエラー訂
正符号を付与した形で該複数の記憶装置に分散して記憶
させるとともに、各データブロックはそれら記憶装置に
対し並列して読書きされるものとして構成され、さら
に、各記憶装置に対応して設けられ、各々対応する記憶
装置から読み出されたデータを一時蓄積する独立したバ
ッファと、それらバッファに蓄積されたデータを一括し
て読み出すデータ読出手段と、該データ読出手段がバッ
ファから読み出したデータをエラー訂正し、そのエラー
訂正されたデータを外部へ出力するエラー訂正回路とを
備えたことを特徴とする。記憶装置は、例えばハードデ
ィスクドライブ、あるいは光磁気ディスクドライブ等
の、磁気ディスク装置により構成することができる。
【0017】上記構成においては、各記憶装置(以下、
レーンともいう)からデータを読み出してこれをエラー
訂正回路に送り込む際に、各レーンからのデータを一旦
バッファに蓄積し、エラー訂正が可能な数のレーンのデ
ータが揃ったところで、各バッファに蓄積されたデータ
を互いに同期したタイミングでエラー訂正回路に送り込
むことができる。これにより、各レーンからのデータ読
出しのタイミングが必ずしも揃っていなくとも、例えば
EXCLUSIVE-OR回路等で構成されたエラー訂正回路にデー
タを互いに同じタイミングで入力することができるの
で、各レーンの記憶装置を同期運転させる必要がなくな
り、ひいては装置を安価に構成することができる。
【0018】この場合、例えば消失等のためにデータの
読出しが不能となったレーンがどれであるかをエラー訂
正回路に通知する読出し不能レーン通知手段を設けるこ
とができる。エラー訂正回路はこの通知を受けることに
より、読出し不能となったレーンのデータを復元し、外
部へ訂正データを出力する。
【0019】また、外部から入力されたデータ(入力デ
ータ)からエラー訂正符号を生成するエラー訂正符号生
成回路と、その生成されたエラー訂正符号と入力データ
の両方をバッファに書き込むデータ書込手段とを設ける
ことができる。これにより、記憶装置にデータを書き込
む際に、エラー訂正符号生成回路によってエラー訂正符
号が計算され、これが元のデータとともにバッファに格
納されるので、記憶装置にこの両方を記憶させることが
できる。また、データを一旦バッファに蓄積してから書
込みを行うようにすることで、各レーンに同じタイミン
グでデータを書き込む必要がなくなり、例えば各記憶装
置において、データを書き込むべきセクタの到来のタイ
ミングがまちまちであっても、バッファからのデータ出
力のタイミングを調整することで問題なく書込みを行う
ことができる。
【0020】さらに、上記構成には、エラー訂正回路か
らの出力データの一部をバッファに書き戻すためのデー
タ書戻手段を設けることができる。すなわち、エラー訂
正回路によりエラー訂正演算を行うと、障害を起こして
読出し不能となった記憶装置(障害記憶装置)が生じて
もそのデータを復元することができるので、上記データ
書込手段によりこれをバッファに書き戻し、例えばこれ
を障害記憶装置と置き換えられた新しい記憶装置に書き
込むことで、リビルト処理を行うことができるようにな
る。この場合、障害記憶装置以外のレーンのバッファは
読出処理となり、その読み出されたデータがエラー訂正
回路に送られて障害記憶装置のデータが復元される一
方、障害記憶装置のレーンのバッファは、復元されてエ
ラー訂正回路から戻された上記障害記憶装置のデータの
書込処理となる。
【0021】次に、バッファは、記憶装置から該バッフ
ァへのデータの書き込みと、該バッファからエラー訂正
回路へのデータの送り出しとが同時実行可能なもので構
成することができる。これにより、バッファに対するデ
ータの入出力速度が高速になり、ひいては読出し時のエ
ラー訂正処理及びリビルド処理をさらに高速で行うこと
ができる。具体的には、バッファは、第一及び第二のR
AMと、それらRAMに対するデータの入出力モード
を、第一のRAMへデータを書き込み第二のRAMから
データを読み出すモードと、第一のRAMからデータを
読出し第二のRAMへデータを書き込むモードとの間で
切り替える切替手段とを備えたもの(いわゆるダブルバ
ッファ)により構成することができる。また、バッファ
は、2つの入出力バスと、それら入出力バスに対し共通
に設けられたRAMと、そのRAMに対し2つの入出力
バスのいずれかのものを選択的に接続する切替手段とを
備えたものとすることもできる。
【0022】
【発明の実施の形態】以下、本発明の実施の形態を、図
面に示す実施例を参照して説明する。図1は、本発明の
記憶装置アレイシステムの一実施例としての、ディスク
アレイシステム1の構成を示すブロック図である。ディ
スクアレイシステム1は、CPU100、記憶装置とし
てのハードディスクドライブ(以下、HDDと書く)1
01、ディスクコントローラ102、バッファ104、
エラー訂正回路106及びDMAコントローラ107等
を含んで構成されている。
【0023】CPU100は、ディスクアレイシステム
1全体の制御を司る処理装置であり、ディスクコントロ
ーラ102の制御、バッファ104の切り替え、エラー
訂正回路106への訂正指示などを行う。本ディスクア
レイシステムではレーン数は5とされ、そのそれぞれに
対応してHDD101が設けられている。そして、ホス
トからのデータは、その第0〜第3レーンに分散して記
憶される。また、ホストからのデータに基づいて生成さ
れたエラー訂正符号としてのパリティデータはパリティ
レーンに記憶される。また、ディスクコントローラ10
2は、CPUバス115によりCPU100と接続され
ており、CPU100の指示によりHDD101を制御
してデータの読み書きを行うものである。なお、ディス
クコントローラ102からバッファ104へつながるバ
スはアドレスバスとデータバスの両方があるが、図では
1本のバスでまとめて示している。また、アドレスバス
はディスクコントローラ102が与えるものであり、デ
ータバスはモードにより方向が変わる。
【0024】バッファ104は、2つのバッファメモリ
(RAM)buf0とbuf1を備えたダブルバッファ
として構成されており、それら2つのバッファメモリの
うち、buf0がディスクコントローラ102側に接続
され、buf1がエラー訂正回路106に接続されたモ
ードと、これとは逆に接続されたモードとを切り替える
切替手段としてのバススイッチ103を備えている。な
お、このバススイッチ103は、アドレスバスとデータ
バスの両方合わせたものを一括して、CPU100から
の指示により切り替える。
【0025】また、バッファ104のバッファメモリb
uf0及びbuf1はSRAMなどで構成され、片方の
バッファメモリにディスクコントローラ102からのデ
ータが書き込まれている最中に、もう一方のバッファか
らエラー訂正回路106にデータを送り出す、いわゆる
パイプライン処理を行うことができるようになってい
る。なお、バッファ104からエラー訂正回路106側
へ出るバスは、アドレスバスとデータバスとをまとめて
示しており、アドレスはDMAコントローラ107から
与えられる一方、データバスは、エラー訂正回路106
との間でモードにより方向が変わる。なお、メモリの制
御に必要なリード信号、ライト信号なども、アドレス発
信元から同様の経路で与えられる。
【0026】以上の構成要素のうち、HDD101、デ
ィスクコントローラ102、バススイッチ103、バッ
ファ104は、ディスクアレイの各レーンごとに用意さ
れている。また、モード指示ポート105は、エラー訂
正回路106に対し、動作モードの指示及びどのレーン
のデータを復元するかの指示を行う役割を果たす。動作
モードには、リードモード、ライトモード及びリビルド
モードの3種類があるが詳細は後に説明する。なお、モ
ード指示ポート105の出力はCPU100からの指示
により設定される。
【0027】次に、エラー訂正回路106は、各レーン
のバッファ104から送られてきたデータを元にパリテ
ィ演算を行い、欠落したデータを復元したり、ホストか
ら送られてきたデータに対し、エラー訂正符号としての
パリティデータを付加する働きをなす。この回路は2種
類の入出力バス、すなわちホストとつながるホストデー
タバス111(例えば32ビット)と、各バッファ10
4とつながる内部データバス109(8ビット×5)と
を有する。なお、ホストバス111の32ビットデータ
バスを8ビットずつ4つに分解したものが、それぞれ内
部バス109の5本の8ビットバスのうちの4本に対応
する。また、各ビット及び各バスの対応は、一対一対応
ならばどのように対応付けられていてもよいが、ここで
は32ビットのうちの31〜24ビットが第3レーン、
23〜16ビットが第2レーン、15〜8ビットが第1
レーン、7〜0ビットが第0レーンと対応付けられてい
るものとする。
【0028】モード指示ポート105からの指示がリー
ドモードの場合は、図3に示すように、内部データバス
109は入力方向、ホストデータバス111は出力方向
となり、エラー訂正回路106は各バッファ104から
データを読み込む(図中、矢印はデータの流れを示
す)。このとき、同時にモード指示ポート105から
は、どのレーンのデータを復元すべきかが指示されてお
り、これに従ってエラー訂正を行う。そして、エラー訂
正回路106からの5つのレーンのデータのうち、パリ
ティレーンからのものを除いたもの、すなわち第0レー
ン〜第3レーンのデータが分割前の状態に整列されてホ
ストデータバス111に出力される。
【0029】次に、ライトモードの際には、図5に示す
ように、内部データバス109は出力方向、ホストデー
タバス111は入力方向となり、エラー訂正回路106
は、ホストからのデータを読み込んで4つのブロックに
分割し、さらにすでに説明した公知の手法に従って、各
ブロックのデータに対しパリティ演算を行ってパリティ
データを生成する。各ブロックのデータとパリティデー
タは、内部データバス109により第0レーン〜第3レ
ーン及びパリティレーンに対し、それぞれバッファ10
4を介して出力される。
【0030】また、リビルドモードの際には、図7に示
すように、内部データバス109は4本が入力方向、残
り1本が出力方向(破線にて表示)になり、ホストデー
タバス111は出力方向もしくは切断状態になる。モー
ド指示ポート105は、エラー訂正回路106に対しモ
ード指示と、どのレーンのデータを復元すべきかの指示
を行い、この指示のあったレーンの内部データバス10
9が出力となる(図では第2レーン)。すなわち、モー
ド指示ポート105は読出し不能レーン通知手段として
機能する。また、エラー訂正回路106は、内部データ
バス109のうちの4本(第0、1、3、パリティレー
ン)からデータを読み取り、これらから復元指示のあっ
たレーン(第2レーン)のデータを復元し、これを内部
データバス109のうちの1本(第2レーン)に出力す
る。
【0031】なお、リビルドモードにおいて、ホストデ
ータバス111が出力になるか切断になるかは、リビル
ド動作中にホストからの読み出し要求があるかないかで
決まる。ホストからの読出し要求があった場合には、そ
の要求データを読み出し、ホストへ出力するついでにリ
ビルドデータを復元することが可能である。また、ホス
トからの読み出し要求がない場合は、CPU100が自
発的にデータを読み出してリビルドを行うが、このとき
はホストデータバス111へはデータは出力されない。
ここで、ホストデータバス111へ出力するか切断状態
にするかの指示も、モード指示ポート105が行う。
【0032】DMAコントローラ107は、例えばデュ
アルアドレスタイプのDMAコントローラで構成され、
各バッファ104へ転送アドレスを与えるとともに、ホ
ストにも転送アドレスを指示する役割を果たす。該DM
Aコントローラ107は、CPUバス115でCPU1
00と接続されており、CPU100からの指示により
ダイレクトメモリアクセスを実行する。なお、本実施例
ではホストデータバス111の先に図示しないバスアー
ビタが存在するものとしており、DMAコントローラ1
07は、ホストに対しバス権要求のREQ信号113を
出力し、バスアービタがバス権を渡すとACK信号11
4が返されてダイレクトメモリアクセスが開始される。
【0033】コマンドバッファ108は、ホストからの
コマンドを受け、また、ホストにレスポンスを返すため
のメモリであり、ホストとCPU100からのいずれか
らでもリード・ライトが可能な共有メモリとして構成さ
れている。デバイスとしては、デュアルポートメモリな
どを使用する。
【0034】次に、図2は、エラー訂正回路106の詳
細構造を示す内部ブロック図である。各内部データバス
109は、エラー訂正回路106内では、それぞれ対応
するバスバッファ201により受けられる。また、スリ
ーステートバッファ202も各バス109に接続されて
おり、内部データバス109へデータを出力する際に
は、このスリーステートバッファ202がバス109を
駆動する。バスバッファ201で受けられたデータは、
パリティ復元回路200とセレクタ203の両方に分配
される。パリティ復元回路200は各レーンのデータを
受け取り、また、モード指示ポート105(図1)によ
り指定されたレーンのデータを復元する。復元には前述
の通りパリティ演算が用いられ、復元されたデータは、
復元データバス208を介してセレクタ203とセレク
タ204とに分配される。この復元データバス208と
DMAコントローラ107(図1)がデータ書戻手段を
構成する。
【0035】各セレクタ203は、そのポートAに各レ
ーンの元のデータが、ポートBに復元データがそれぞれ
入力されるようになっており、モード指示ポート105
からの指示により適切な方を選択する。例えば、第2レ
ーンのHDD101のデータが読めなかった場合は、第
2レーンのセレクタ203だけが復元データを選択し、
他のレーンのセレクタ203は元のデータを選択するよ
うに制御が行われる。各セレクタ203の出力は、8ビ
ット毎に整列してスリーステートバッファ206に伝え
られる。このスリーステートバッファ206もモード指
示ポート105の指示により、適切なタイミングでホス
トデータバス111にデータを出力する。
【0036】一方、ホストデータバス111からデータ
を入力する場合は、バスバッファ207を介してデータ
を取り込む。取り込まれたデータは8ビット毎に分割さ
れ、それぞれのレーンに対応するセレクタ204と、エ
ラー訂正符号生成回路としてのパリティジェネレータ2
05とに分配される。パリティジェネレータ205は、
入力側に8ビットバスが4本接続されるEXCLUSIVE-OR回
路として構成されており、入力されるデータに対し1ビ
ット毎の排他的論理和(EXCLUSIVE-OR)演算を行ってパ
リティデータを生成するものである。また、セレクタ2
04はリビルドモードのためのセレクタで、ホストから
のデータがポートAに、復元データがポートBにそれぞ
れ入力されるとともに、モード指示ポート105(図
1)からの指示により、リビルドモード時には復元デー
タを選択し、ライトモード時にはホストからのデータを
選択するようになっている。そして、各セレクタ204
で選択されたデータは、スリーステートバッファ202
で対応する内部データバス109へ出力される。このス
リーステートバッファ202の駆動タイミングは、モー
ド指示ポート105からの指示により制御される。
【0037】以下、ディスクアレイシステム1の動作に
ついて説明する。まず、ディスクアレイにデータを書き
込む場合、すなわちリードモード時の動作について図3
及び図4を用いて説明する。すなわち、図3において、
ホストからコマンドバッファ108を介してCPU10
0へ、「セクタ番号Sのセクタのデータを読め」という
指令が伝えられる。セクタとは、ディスクアレイ全体の
記憶サイズを使いやすい大きさに分割した小領域で、セ
クタ番号はその領域の通し番号として定義される。な
お、HDD101にはアレイシステムを組まずに単独で
使用する場合のセクタが別途定義されており、2種類の
セクタが存在することになるわけであるが、混同を避け
るために単体ディスクのセクタ番号はssで表し、ディ
スクアレイ全体のセクタ番号はSで表す。
【0038】CPU100は、分散されたHDD101
上でセクタSがどこに当たるかを換算して、それぞれの
HDD101の読み出し開始セクタ番号ssを求める。
次にCPU100は、バススイッチ103により、バッ
ファ104をバッファメモリbuf0側がディスクコン
トローラ102につながるように切り替えておいてか
ら、各レーンのディスクコントローラ102にセクタs
sに対するリードコマンドを送って、HDD101のデ
ータを読み出させる。各レーンのHDD101はそれぞ
れで回転待ち時間が異なるため、実際にリードデータが
出てくるタイミングはまちまちになる。なお、データの
転送は、各レーンごとに図示しないDMAコントローラ
が行っても良いし、CPU100によりプログラム転送
を行っても良い。また、ディスクリードの成否はディス
クコントローラ102が通知する。
【0039】こうしてバッファ104のメモリbuf0
にそれぞれのレーンのデータが互いに異なるタイミング
で入ってくる(図3:)。ここで、4つのレーンのデ
ータが揃ったところで、5つ目のレーンのリードは取り
やめるように構成することができる。すなわち、5つの
データのうち4つが揃えば、残り1つのデータはエラー
訂正回路106で再生できるからであるが、全レーンの
データをリードするようにしてもよい。次にCPU10
0は、バッファ104のメモリbuf0側をエラー訂正
回路106につながるように切り替えるとともに、エラ
ー訂正回路106に対しモード指示ポート105を介し
て、この転送がリードモードであることと、どのレーン
のデータが欠落しているかを通知する。
【0040】この状態でDMAコントローラ107に起
動をかけると、4つのレーンのデータが、buf0から
エラー訂正回路106に転送される(図3:)。エラ
ー訂正回路106は、データが欠落したレーンのデータ
を適切に復元し、ホストデータバス111に32ビット
のデータを出力する(図3:)。図4は、そのときの
エラー訂正回路106内でのデータの流れを示してい
る。すなわち、各バッファ104から内部データバス1
09を通って送られてきたデータはパリティ復元回路2
00へ分配され(図4:)、例えば第1レーンのデー
タが欠落していれば、パリティ復元回路200はそのデ
ータを入力された4つのデータから復元する。そして、
各セレクタ203において、第1レーンに対応するもの
のみポートBが選択され、他はポートAが選択されるこ
とにより(図4:)、第1レーンからは上記復元され
たデータが、第0、2、3レーンからはバッファ201
からの元のデータが、それぞれホストデータバス111
側へダイレクトメモリアクセスにより転送されることと
なる(図4:)。
【0041】そして、図3に戻り、CPU100は、デ
ータ転送の完了をもってコマンド実行の完了とし、コマ
ンドバッファ108に正常終了レスポンスを書き込み、
ディスクアレイとしてのセクタリードコマンドが完結す
る。なお、2つ以上のHDD101が読出不能だった場
合等においては、異常終了レスポンスが書き込まれる。
【0042】次に、データを書き込む場合、すなわちラ
イトモード時の動作を、図5及び図6を用いて説明す
る。まずホストからコマンドバッファ108を介して、
CPU100へ「セクタ番号Sのセクタにデータを書
け」という指令が伝えられる。するとCPU100は、
バッファ104をbuf0側がエラー訂正回路106に
つながるように切り替えておいて、モード指示ポート1
05にライトモードであることを指示してから、DMA
コントローラ107を起動する。すると、ホストデータ
バス111を介してホストからのデータがエラー訂正回
路106に入力される(図5:)。
【0043】図6に示すように、エラー訂正回路106
内では、ホストデータバス111からのデータがバッフ
ァ207に供給され(図6:)、8ビットずつの4つ
のブロックに分割されて、それぞれ第0〜第3レーンの
対応するものに転送されるとともに、各々のデータブロ
ックはパリティジェネレータ205に供給されてパリテ
ィデータが生成され、これがパリティレーンに向けて転
送される(図6:)。
【0044】図5に戻り、CPU100は、バッファ1
04のbuf0側をディスクコントローラ102側に切
り替えて、各レーンのディスクコントローラ102にセ
クタssに対するライトコマンドを送ってHDD101
にデータを書き込む。そして、全てのディスクコントロ
ーラ102のコマンド完了をもって、CPU100は、
コマンドバッファ108に正常終了レスポンスを書き込
み、ディスクアレイとしてのセクタライトコマンドが完
結する。
【0045】最後に、リビルドモードでの動作を図7及
び図8を用いて説明する。図7において、CPU100
は、ディスクコントローラ102の実行結果を読み取
り、どのレーンのHDD101が故障して新品のHDD
に交換されたかということを常時監視している。そし
て、新品のディスクを検出した場合、自動的にリビルド
モードに入る(なお、手動によるコマンド入力等により
リビルドモードに入るようにしてもよい)。まず、CP
U100は、バッファ104のbuf0をディスクコン
トローラ102側に切り替え、新品でないレーンのディ
スクコントローラ102に対しセクタnのリードコマン
ドを発行する。これに対応して、4つのレーンのデータ
がバッファ104のbuf0に読み出されたら(図7:
)、リビルドモードであること及びどのレーンにリビ
ルドデータを生成すべきかを、モード指示ポート105
を介してエラー訂正回路106に伝える(以下、本実施
例ではレーン2のデータをリビルドするものとする)。
【0046】そして、buf0をエラー訂正回路106
側に切り替えて、DMAコントローラ107を起動す
る。すると、リビルドすべきレーン以外のレーンのバッ
ファ104からデータが読み出されてエラー訂正回路1
06へ転送され(図7:)、そこでリビルドデータが
生成されるとともに、これがリビルドレーンのバッファ
104のbuf0に書き戻される(図7:)。このと
きの、エラー訂正回路106内でのデータの流れを図8
に示している。すなわち、第2レーン以外のデータがパ
リティ復元回路200に送られ(図8:)、それに基
づいて第2レーンのリビルドデータを生成する(図8:
)。このリビルドデータは、各セレクタ204のすべ
てに分配されるが、第2レーンに対応するもののみポー
トBを選択し、他はポートAを選択することで、第2レ
ーンにのみリビルドデータが転送される(図8:)。
このとき、ホストデータバス111にデータが出ては困
る場合には、スリーステートバッファ206をオープン
とし、ホストデータバス111にデータが出力されない
ようにすればよい。
【0047】そして、図7に戻り、新品ディスクのレー
ンのbuf0をディスクコントローラ102側に切り替
え、そのレーンのディスクコントローラ102に対し
て、セクタnへのライトコマンドを発行する。この手順
を、nを0から最大セクタ番号までスキャンすること
で、新品のHDDに元のデータが復元される。
【0048】さて、リードモードにおいてはバッファ1
04には、異なるタイミングで到着するHDD101か
らのデータを一旦蓄積し、エラー訂正回路106に同時
に渡せるようにするための役割を果たすのであるが、こ
れがダブルバッファ構成になっていることで、データの
連続転送速度を向上させる効果が達成されている。例え
ば、ホストから「セクタ番号S1のセクタのデータを読
め」という指令が来て、この実行が完了する前に続けて
「セクタ番号S2のセクタのデータを読め」という指令
が来たとしよう(ここでは、コマンドは、実行完了を待
たずに何個か続けて同時に発行できる前提とし、実行待
ちのコマンドはCPU100の持つ図示しないコマンド
キューに保存されるものとする)。バッファ104がダ
ブルバッファでなければ、S1のデータをエラー訂正回
路106へ転送中は、次のS2のデータを読もうとして
もバッファ104が空いていないので不可能である。し
かしながら、これを図1に示すようにダブルバッファと
することで、S1のデータをbuf0に読み込んでエラ
ー訂正回路106へ転送している間に、これと並行して
S2のデータをbuf1に読み込む、いわゆるパイプラ
イン処理が可能となり、連続読出しの場合のディスクア
レイシステム1全体の出力転送速度を向上させることが
できる。
【0049】このようなパイプライン処理は、ライトモ
ードのときも同様に効果を奏することができ、この場合
は連続書込みによりディスクアレイシステム1全体の入
力転送速度を向上させることができる。また、リビルド
モードの場合も、正常なHDD101のリードと、障害
代替記憶装置となるHDD101へのライトとがパイプ
ライン的に同時に行えるのでリビルド速度が向上する。
【0050】なお、以上説明した実施例では、ホストデ
ータバス111を32ビット、内部データバスを8ビッ
トとしてパラレル数を4とした構成を示したが、他のビ
ット数のバス構成としてもよい。例えば、ホストデータ
バスを64ビット、内部データバスを8ビットとすれば
パラレル数8の形で、ホストデータバスを32ビット、
内部データバスを1ビットとすればパラレル数32の形
でそれぞれ構成可能である。
【0051】また、上記実施例ではバッファ104をダ
ブルバッファ構成としていたが、安価に構成しようとす
るならば、単なるシングルバッファ構成にしてもよい。
この場合はパイプライン処理によるリード/ライト処理
及びリビルド速度の向上については期待できないが、パ
リティ演算手段及びリビルド経路などがハードウェア化
されていることによる処理速度向上の効果は同様に達成
される。
【0052】また、バッファ104をダブルバッファと
する代わりに、図9に示すようなデュアルポートメモリ
を使用する方法もある。この場合は、バッファ104が
2つの入出力バス104a,104bと、それらバス1
04a及び104bに対し共通に設けられたRAM10
4eと、そのRAM104eに対し、上記2つの入出力
バス104a,104bのいずれかを選択的に接続する
切替手段としてのバススイッチ104cとを備えてい
る。バススイッチ104cにはアービタ104dが接続
され、両バス104a,104bへのデータの入出力を
指示するためのリード/ライト信号がアービタ104d
に入力されるようになっている。
【0053】アービタ104dは、バス104a,10
4bのうち、リード/ライト信号の到着の早かったもの
に対しRAM104eが接続されるように、バススイッ
チ104cの切替えを行う。これによりHDD101か
らのデータの読み出し、すなわちバッファ104へのデ
ータの書き込みと、エラー訂正回路106へのデータ出
力、すなわちバッファ104からのデータの読み出しと
を同時に実行できる。なお、デュアルポートメモリとし
ては、2つの入出力バス104a,104bがいずれも
ランダムアクセス型のもの、一方がランダムアクセスと
なり、他方がシーケンシャルアクセスとなるもの(例え
ばVRAMなど)、及びいずれもシーケンシャルアクセ
スとなるもの(例えばFIFOなど)のいずれを使用し
てもよい。
【図面の簡単な説明】
【図1】本発明の記憶装置アレイシステムの一実施例と
してのディスクアレイシステムの構成を示すブロック
図。
【図2】そのエラー訂正回路のブロック図である。
【図3】図1のシステムにおけるリードモードでのデー
タの流れを示す説明図。
【図4】同じくエラー訂正回路内のデータの流れを示す
説明図。
【図5】図1のシステムにおけるライトモードでのデー
タの流れを示す説明図。
【図6】同じくエラー訂正回路内のデータの流れを示す
説明図。
【図7】図1のシステムにおけるリビルドモードでのデ
ータの流れを示す説明図。
【図8】同じくエラー訂正回路内のデータの流れを示す
説明図。
【図9】バッファをデュアルポートメモリで構成した例
を示すブロック図。
【図10】第1の従来例のブロック図である。
【図11】第2の従来例のブロック図である。
【図12】ディスクアレイシステムの概念を示す説明
図。
【符号の説明】
1 ディスクアレイシステム(記憶装置アレイシス
テム) 101 ハードディスクドライブ(記憶装置) 102 ディスクコントローラ 103 バススイッチ(切替手段) 104 バッファ buf0,buf1 バッファメモリ(RAM) 104a,104b 入出力バス 104c バススイッチ(切替手段) 104e RAM 106 エラー訂正回路 107 DMAコントローラ(データ読出手段、データ
書込手段、データ書戻手段) 205 パリティジェネレータ(エラー訂正符号生成回
路) 208 復元データバス(データ書戻手段)

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 複数の記憶装置を有し、外部より入力さ
    れたデータを複数のデータブロックに分割して、それぞ
    れエラー訂正符号を付与した形で該複数の記憶装置に分
    散して記憶させるとともに、各データブロックはそれら
    記憶装置に対し並列して読み書きされるようになってお
    り、さらに、 前記各記憶装置に対応して設けられ、各々対応する記憶
    装置から読み出されたデータを一時蓄積する独立したバ
    ッファと、 それらバッファに蓄積された前記データを一括して読み
    出すデータ読出手段と、 該データ読出手段が前記バッ
    ファから読み出したデータをエラー訂正し、そのエラー
    訂正されたデータを外部へ出力するエラー訂正回路とを
    備えたことを特徴とする記憶装置アレイシステム。
  2. 【請求項2】 外部から入力されたデータ(以下、入力
    データという)からエラー訂正符号を生成するエラー訂
    正符号生成回路と、 その生成されたエラー訂正符号と前記入力データとを前
    記バッファに書き込むデータ書込手段とを備える請求項
    1記載の記憶装置アレイシステム。
  3. 【請求項3】 前記エラー訂正回路からの出力データの
    一部を前記バッファに書き戻すためのデータ書戻手段を
    備える請求項1又は2に記載の記憶装置アレイシステ
    ム。
  4. 【請求項4】 前記バッファは、前記記憶装置から該バ
    ッファへのデータの書き込みと、該バッファから前記エ
    ラー訂正回路へのデータの送り出しとが同時実行可能と
    されている請求項1ないし3のいずれかに記載の記憶装
    置アレイシステム。
  5. 【請求項5】 前記バッファは、第一及び第二のRAM
    と、それらRAMに対するデータの入出力モードを、前
    記第一のRAMへデータを書き込み前記第二のRAMか
    らデータを読み出すモードと、前記第一のRAMからデ
    ータを読出し前記第二のRAMへデータを書き込むモー
    ドとの間で切り替える切替手段とを備えている請求項4
    記載の記憶装置アレイシステム。
  6. 【請求項6】 前記バッファは、2つの入出力バスと、
    それら入出力バスに対し共通に設けられたRAMと、そ
    のRAMに対し前記2つの入出力バスのいずれかのもの
    を選択的に接続する切替手段とを備えている請求項4記
    載の記憶装置アレイシステム。
JP8315550A 1996-11-11 1996-11-11 記憶装置アレイシステム Pending JPH10143331A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8315550A JPH10143331A (ja) 1996-11-11 1996-11-11 記憶装置アレイシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8315550A JPH10143331A (ja) 1996-11-11 1996-11-11 記憶装置アレイシステム

Publications (1)

Publication Number Publication Date
JPH10143331A true JPH10143331A (ja) 1998-05-29

Family

ID=18066700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8315550A Pending JPH10143331A (ja) 1996-11-11 1996-11-11 記憶装置アレイシステム

Country Status (1)

Country Link
JP (1) JPH10143331A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013527544A (ja) * 2010-06-01 2013-06-27 グリーンライアント リミテッド ライアビリティ カンパニー エラー補正に起因する経年関連性能劣化を最小限に抑えるためのnandメモリコントローラでの動的バッファ管理

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013527544A (ja) * 2010-06-01 2013-06-27 グリーンライアント リミテッド ライアビリティ カンパニー エラー補正に起因する経年関連性能劣化を最小限に抑えるためのnandメモリコントローラでの動的バッファ管理
US8726130B2 (en) 2010-06-01 2014-05-13 Greenliant Llc Dynamic buffer management in a NAND memory controller to minimize age related performance degradation due to error correction

Similar Documents

Publication Publication Date Title
JP3181398B2 (ja) アレイ型記録装置
US5479611A (en) Disk array apparatus
JP3742494B2 (ja) 大容量記憶装置
US5720027A (en) Redundant disc computer having targeted data broadcast
JPH10260789A (ja) デバイスアレイ・システム
JPH04205519A (ja) データ復元中のライト方法
EP0948770B1 (en) Error detection device and method
EP0832456A1 (en) Disk array system including a dual-ported staging memory and concurrent redundancy calculation capability
US20060179345A1 (en) Method and system for wire-speed parity generation and data rebuild in RAID systems
JP4965722B2 (ja) パリティとミラーリングを用いることなしにraidシステムにおいて高レベルな冗長性、耐故障性、及びパフォーマンスを確立する方法
JP2857288B2 (ja) ディスクアレイ装置
USRE36448E (en) Memory controller with parity generator for an I/O control unit
JP2000148409A (ja) 冗長記憶装置
JPH10143331A (ja) 記憶装置アレイシステム
JPH08171463A (ja) ディスクアレイ装置におけるデータ読み出し方法およびディスクアレイ装置
JP2010286887A (ja) ディスクアレイ装置および処理方法ならびにそのプログラム
JPH10222314A (ja) 記憶装置アレイシステム
JP2857289B2 (ja) ディスクアレイ装置
JP3615250B2 (ja) ディスクアレイ装置
JPH09258913A (ja) 記憶装置アレイシステム
JPH05127837A (ja) デイスクアレイ装置
JP2856054B2 (ja) ディスクアレイ装置
JPH07211016A (ja) ディスク記憶装置およびそのデータ記録方法
JP2868003B1 (ja) 磁気ディスク装置
JPH09274542A (ja) ディスクアレイ装置