JPH07200187A - ディスクアレイ装置 - Google Patents

ディスクアレイ装置

Info

Publication number
JPH07200187A
JPH07200187A JP5351130A JP35113093A JPH07200187A JP H07200187 A JPH07200187 A JP H07200187A JP 5351130 A JP5351130 A JP 5351130A JP 35113093 A JP35113093 A JP 35113093A JP H07200187 A JPH07200187 A JP H07200187A
Authority
JP
Japan
Prior art keywords
disk array
data
parity
disk
transferred
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
JP5351130A
Other languages
English (en)
Inventor
Yoshifumi Takamoto
良史 高本
Hitoshi Tsunoda
仁 角田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP5351130A priority Critical patent/JPH07200187A/ja
Publication of JPH07200187A publication Critical patent/JPH07200187A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 (修正有) 【目的】多数のディスクドライブを接続しても、高速な
入出力が可能であり、またディスク管理も容易で信頼性
を低下させることもないディスクアレイ装置を提供す
る。 【構成】複数のディスクドライブ137−140が接続
された複数のローカルディスクアレイ制御装置104−
107を、さらにディスクアレイ化するためのグローバ
ルディスクアレイ制御装置103を備えている。ローカ
ルディスクアレイ制御装置は、自機内の複数のディスク
ドライブをRAID制御する。グローバルディスクアレ
イ制御装置は、ローカルディスクアレイ制御装置に対し
RAID制御する。この結果、データの分割による高速
性と、ローカルディスクアレイとグローバルディスクア
レイが生成しローカルディスクアレイに格納するグロー
バルパリティとにより高信頼なディスク装置が得られ
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
などに用いるディスクファイルシステムに関し、特に高
速でかつ高信頼なディスクアレイ装置に関する。
【0002】
【従来の技術】一般的に、コンピュータシステムは、プ
ロセッサと2次記憶装置とを備えている。多く使用され
る2次記憶装置として、磁気ディスク装置がある。磁気
ディスク装置において、現在その容量の伸び率は極めて
高いが、メカニカル動作を伴う磁気ディスク装置の性能
はプロセッサ性能の伸び率ほど高くない。その課題を解
決する方式として、ディスクアレイが提案された。
【0003】ディスクアレイに関する代表的な論文とし
て、D.Patterson,G.Gibson,and R.H.Kartzらによる「A
Case for Redundant Arrays of Inexpensive Disks(RAI
D),in ACM SIGMOD Conference,Chicago, IL, (June 198
8)」がある。RAIDとは、複数のディスクドライブにデー
タを分散して配置することでアクセス時間を短縮し、か
つ、誤り訂正用のパリティあるいはECCと呼ばれる冗
長データを格納することで信頼性も高めることができる
技術である。つまり、複数のディスクドライブに対して
並列に入出力を行うことができることによる高速性と、
何れかのディスクドライブに障害が発生したときでもパ
リティと障害ディスクドライブ以外のデータから障害デ
ィスクドライブのデータを回復することができる技術で
ある。
【0004】この技術を実現するための特許出願もなさ
れており、例えば、ジャイシヤンカー ムーセダス ミ
ノン,ジェイムス マシューズ カーソン(インターナ
ショナル ビジネス マシーンズ CORP)らによる
特開平4−230512号がある。この公報には、ディ
スクアレイにおける課題の一つであるパリティの更新を
高速にする技術が開示されている。
【0005】ディスクアレイでは、データ書き込み時
に、データ自体とパリティの更新を行わなくてはならな
い。パリティの更新のためには、更新前のデータとパリ
ティが必要となるケースがあり、そのためそれらのデー
タやパリティを事前に読みだすオーバヘッドと元のデー
タやパリティの位置に新しいデータやパリティを書き込
むオーバヘッドがかかる。これをライト・ペナルティと
呼ぶ。上記公報には、新しいデータやパリティを元の位
置に記録せず、ディスクドライブの空き領域に格納する
ことで、ライト・ペナルティによるオーバヘッドを少な
くする技術が開示されている。
【0006】他に、ディスクアレイの実装を容易にする
ための技術として、特開平5−46524号に開示され
たものがある。この公報に記載のディスクアレイ装置
は、ディスクアレイの実装を容易にするために、複数の
ディスクを共通のバスに接続し、そのバスに接続された
上位コントローラがディスクアレイ制御を行うものであ
る。
【0007】
【発明が解決しようとする課題】ディスクアレイコント
ローラの基本的な機能として、ホストプロセッサからの
入出力要求を解釈/実行、データの分割、パリティの生
成、キャッシュメモリ管理、およびディスクドライブの
起動/終了処理がある。このように、ディスクアレイコ
ントローラは、通常のディスクコントローラに比べて多
くの処理を行なわなければならない。
【0008】例えば、2台のドライブ(データを格納す
る1台のディスクドライブとパリティを格納する1台の
ディスクドライブ)でRAID5のディスクアレイ装置
を構成したとする。このとき、新データの書き込み時に
は、旧データと旧パリティをそれぞれ2台のディスクド
ライブから読みだし、その後、新データと新パリティを
前記2台のディスクドライブに出力しなければならな
い。つまり、1つの出力処理で4回のディスク入出力が
発生することになり、これがライト・ペナルティにな
る。その他にも、ディスクアレイコントローラ特有の処
理として、データの分割、パリティの生成などを行なう
必要がある。
【0009】従来のディスクアレイ装置は、一つのディ
スクアレイコントローラで複数のディスクドライブを制
御していた。そのような構成で多数のディスクドライブ
を制御するためには、高速なディスクアレイコントロー
ラを設けるか、同様のディスクアレイコントローラを複
数設ける必要がある。
【0010】しかし、高速なディスクアレイコントロー
ラは非常に高価であり、これはディスクアレイ装置全体
のコストを上げることにつながる。また、同様のディス
クアレイコントローラを複数設けると、利用者から複数
のディスク装置に見えてしまい、ディスク管理を複雑に
する欠点がある。
【0011】本発明の目的は、ディスクアレイ装置の改
良にある。また、本発明の目的は、多数のディスクドラ
イブを接続しても、高速な入出力が可能であり、コスト
を上げることがなく、またディスク管理も容易で信頼性
を低下させることもないディスクアレイ装置を提供する
ことにある。
【0012】
【課題を解決するための手段】本発明では、複数のディ
スクドライブが、それぞれ複数のディスクドライブを含
む複数の論理グループに分けられており、各論理グルー
プは、例えば各論理グループごとに設けられたディスク
アレイ制御装置によりそれぞれ管理される。そして、ホ
ストプロセッサから転送されたボリウム内アドレスとデ
ータ長に基づいて、前記論理グループの一つまたは複数
を選択し、前記選択された論理グループごとに格納され
るデータからパリティを生成し、前記論理グループ内の
ディスクドライブに前記データとパリティを格納するよ
うにする。
【0013】さらに、前記論理グループ内のパリティが
格納されたドライブを除く他のディスクドライブに対
し、ディスクドライブの格納単位ごとに順次連続した前
記ボリウム内アドレスを割り付け、さらに前記ボリウム
内アドレスは複数の前記論理グループに渡って順次水平
に割り付ける。
【0014】
【作用】複数のディスクドライブから構成される複数の
論理グループに分け、前記論理グループごとに例えばデ
ィスクアレイ制御装置を設けて管理するので、小数のデ
ィスクドライブを管理する安価なディスクアレイコント
ローラになり、また、前記論理グループ内のパリティが
格納されたドライブを除く他のディスクドライブに対
し、ディスクドライブの格納単位毎に順次連続した前記
ボリウム内アドレスを割り付け、さらに前記ボリウム内
アドレスは複数の前記論理グループに渡って順次水平に
割り付けることで、利用者からは単一のディスクドライ
ブとして管理することができるようになる。
【0015】
【実施例】以下、図面を用いて、本発明の実施例を詳細
に説明する。
【0016】[実施例1]図1は、本発明の第1の実施
例に係るディスクアレイ装置の全体構成図を示したもの
である。
【0017】ディスクアレイ制御装置(102)は、ホ
ストプロセッサ(101)と接続されている。ディスク
アレイ制御装置(102)は、複数のディスク装置(1
33,134,135,136)に接続されている。各
ディスク装置(133,134,135,136)は、
それぞれ複数のディスクドライブ(137,138,1
39,140)を備えている。
【0018】ディスクアレイ制御装置(102)は、イ
ンタフェース制御部(108)と、グローバルディスク
アレイ制御装置(103)と、複数のローカルディスク
アレイ制御装置(104,105,106,107)と
から構成されている。
【0019】インタフェース制御部(108)は、ホス
ト(101)との間のデータあるいはコマンドの転送プ
ロトコル制御を行う。グローバルディスクアレイ制御装
置(103)は、複数のローカルディスクアレイ制御装
置(104,105,106,107)に対して、デー
タの分割、パリティの生成/格納、あるいはそれらの複
数のローカルディスクアレイ制御装置(104,10
5,106,107)から転送されたデータのマージ処
理などを行う。
【0020】1つのローカルディスクアレイ制御装置
(104,105,106,107)は、1つの論理グ
ループに相当する。各ローカルディスクアレイ制御装置
(104,105,106,107)は、グローバルデ
ィスクアレイ制御装置(103)から受けたデータの分
割格納やパリティの生成/格納などを行う。論理グルー
プとは、RAID制御の単位である。すなわち、論理グ
ループを構成するローカルディスクアレイ制御装置は、
上位から受けたデータを分割しパリティを生成して複数
のドライブに格納するが、それら複数のドライブを含む
RAID制御の単位を論理グループという。
【0021】グローバルディスクアレイ制御装置(10
3)と複数のローカルディスクアレイ制御装置(10
4,105,106,107)は共に、ディスク装置
(133,134,135,136)の障害やディスク
装置(133,134,135,136)内のディスク
ドライブ(137,138,139,140)の障害時
に、パリティを使用して障害回復が可能である。
【0022】本実施例の特徴の一つは、ローカルディス
クアレイ制御装置(104,105,106,107)
を制御するグローバルディスクアレイ制御装置(10
3)を設けていることである。これらの関連した詳細動
作は後で説明する。
【0023】グローバルディスクアレイ制御装置(10
3)は、コマンド制御部(141)、制御メモリ(14
5)、キャッシュメモリ(142)、グローバルRAI
D制御部(143)、およびインタフェースコントロー
ラ(144)から構成されている。
【0024】コマンド制御部(141)は、ホストプロ
セッサ(101)からの入出力要求を解釈し、制御メモ
リ(145)内のキューに入出力要求をキューイングす
る。制御メモリ(145)内には、ディスクアレイ装置
全体を管理するための制御情報が格納されている。キャ
ッシュメモリ(142)内には、ディスクアレイ装置
(102)が入出力を行ったデータを、キャッシュメモ
リ(142)の容量の範囲内で格納しておく。頻繁にア
クセスされるデータは、キャッシュメモリ(142)に
残っている確率が高くなる。
【0025】グローバルRAID制御部(143)は、
複数のローカルディスクアレイ制御装置(104,10
5,106,107)を、ホスト101からは単体ディ
スクまたは複数ディスクとして取り扱うことができるよ
うな制御を行う。インタフェースコントローラ(14
4)は、ローカルディスクアレイ制御装置(104,1
05,106,107)との間のデータあるいはコマン
ドの転送制御を行う。
【0026】以上が本実施例のディスクアレイ装置の構
成概要であり、詳細な説明を以下に述べる。
【0027】図2は、本発明における動作の概要の一例
を示しており、本発明の特徴と効果の一例を以下に述べ
る。
【0028】本動作概要は、ホストプロセッサ(10
1)からデータ(223)がディスク装置(133,1
34,135)内のディスクドライブに格納されるまで
の動作とデータの流れを示している。本例は、ローカル
ディスクアレイ制御装置(104)がRAID3の動作
を行なったケースである。
【0029】ホストプロセッサ(101)から転送され
たデータ(223)は、ディスクアレイ制御装置(10
2)内のグローバルディスクアレイ制御装置(103)
で、ローカルディスクアレイ制御装置(104,10
5,106)の台数分(3つ)に分割される(20
1)。これらのデータ(219,220,221)は、
並列にローカルディスクアレイ制御装置(104,10
5,106)に転送される。
【0030】ローカルディスクアレイ制御装置(10
4,105,106)にデータが転送されると、ローカ
ルディスクアレイ制御装置(104,105,106)
内で、各ローカルディスクアレイ制御装置(104,1
05,106)に接続されているディスクドライブ数か
らパリティ格納用ディスクドライブ数を除いた台数分に
データの分割が行われ(207,209,211)、さ
らに同時にグローバルディスクアレイ制御装置(10
3)から転送されたデータのパリティが生成される(2
08,210,212)。ローカルディスクアレイ制御
装置(104,105,106)内で分割されたデータ
とパリティは並列にディスクドライブに格納される。
【0031】ローカルディスクアレイ制御装置(10
4,105,106)は、それぞれ単独で動作可能な機
構を持っているため、全てのディスクドライブの並列動
作が可能となる。こういった構成により、大規模なデー
タの高速な入出力が可能となる。
【0032】図3は、本発明における動作の概要の一例
を示しており、本発明の特徴と効果の一例を以下に述べ
る。
【0033】本動作概要は、ホストプロセッサ(10
1)からデータ(223)がディスク装置(133)内
のディスクドライブに格納されるまでの動作とデータの
流れを示している。本例は、ローカルディスクアレイ制
御装置(104)がRAID5の動作を行なったケース
である。
【0034】ホストプロセッサ(101)からデータ
(223)が転送されると、ディスクアレイ制御装置
(102)内のグローバルディスクアレイ制御装置(1
03)では、そのデータを格納すべきローカルディスク
アレイ制御装置(104)の選択が行なわれる。
【0035】ローカルディスクアレイ制御装置(10
4)にデータが転送されると、ローカルディスクアレイ
制御装置(104)内で、ローカルディスクアレイ制御
装置(104)に接続されているディスクドライブ数か
らパリティ格納用ディスクドライブ数を除いた台数分に
データの分割が行われ(207)、さらに同時にグロー
バルディスクアレイ制御装置(103)から転送された
データのパリティの一括生成が行なわれる(208)。
【0036】通常RAID5は、ブロック単位の入出力
を行なうため、複数ブロックの格納時には各ブロック毎
にライト・ペナルティが生じる。しかし、本例に示すよ
うに、連続して複数のブロックの書き込み時には、本発
明によるように、連続してアドレスを設定することで、
一括してパリティの生成を行なうことができるようにな
る。
【0037】ローカルディスクアレイ制御装置(10
4)内で分割されたデータとパリティは並列にディスク
ドライブに格納される。こういった構成により、短いデ
ータのスループットを向上することができる。
【0038】図4は、本発明における動作の概要の一例
を示しており、本発明の特徴と効果の一例を以下に述べ
る。
【0039】本動作概要は、ホストプロセッサ(10
1)からデータ(223)がディスク装置(133,1
34,135,136)内のディスクドライブ(13
7,138,139,140)に格納されるまでの動作
とデータの流れを示している。
【0040】ホストプロセッサ(101)から転送され
たデータ(223)は、ディスクアレイ制御装置(10
2)内のグローバルディスクアレイ制御装置(103)
で、ローカルディスクアレイ制御装置(104,10
5,106,107)の台数からグローバルパリティ格
納用のローカルディスクアレイ制御装置(107)の台
数を除いた数に分割される(201)。同時に、ホスト
プロセッサ(101)から転送されたデータ全体のグロ
ーバルパリティが生成される(202)。これらのデー
タは、並列にローカルディスクアレイ制御装置(10
4,105,106,107)に転送される。
【0041】一般に、ディスクアレイは、信頼性の向上
のために、データとは異なるパリティを生成しディスク
ドライブに格納しておく。もし、ディスクドライブに障
害が発生しても、パリティと障害が発生したディスクド
ライブ以外のディスクドライブのデータとから、障害が
発生したディスクドライブのデータを、演算により求め
ることができる。
【0042】ローカルディスクアレイ制御装置(10
4,105,106,107)にデータが転送される
と、各ローカルディスクアレイ制御装置(104,10
5,106,107)内で、ローカルディスクアレイ制
御装置(104,105,106,107)に接続され
ているディスクドライブ(137,138,139,1
40)の数からパリティ格納用ディスクドライブを除い
た台数分にデータの分割が行われる(207,209,
211,213)。さらに同時に、グローバルディスク
アレイ制御装置(103)から転送されたデータのパリ
ティが生成される(208,210,212,21
4)。ローカルディスクアレイ制御装置(104,10
5,106,107)内で分割されたデータとパリティ
は、並列にディスクドライブ(137,138,13
9,140)に格納される。
【0043】ローカルディスクアレイ制御装置(10
4,105,106,107)は、それそれ単独で動作
可能な機構を持っているため、全てのディスクドライブ
(137,138,139,140)の並列動作が可能
となる。こういった構成により、大規模なデータの高速
な入出力が可能となる。
【0044】さらには、通常のディスクアレイのパリテ
ィ以外に、ローカルディスクアレイ制御装置(104,
105,106)間のパリティ(グローバルパリティ)
を生成/格納していることから高い信頼性を得ることが
できる。つまり、各ローカルディスクアレイ制御装置
(104,105,106,107)での回復処理と、
上位のグローバルディスクアレイ制御装置(103)で
の回復処理といったように、本発明では障害回復処理が
多層化されることによる。
【0045】図5は、図2から図4で述べた特徴と効果
とは別の特徴と効果の一例を示している。具体的には、
本発明の入出力要求と終了報告の流れを示している。
【0046】ホストプロセッサ(101)からデータが
転送されると、グローバルディスクアレイ制御装置(1
03)はそのデータを分割しグローバルパリティを生成
して、下位のローカルディスクアレイ制御装置(10
4,105,106,107)に並列に入出力を行なう
(301)。ローカルディスクアレイ制御装置(10
4,105,106,107)は、グローバルディスク
アレイ制御装置(103)から転送されたデータを分割
しパリティを生成して、ディスクドライブ(137,1
38,139,140)に並列に入出力を行なう(30
6,307,308,309)。
【0047】いま仮にローカルディスクアレイ制御装置
(104,105,106,107)の数をmとし、各
ローカルディスクアレイ制御装置(104,105,1
06,107)に接続されたドライブ数をdとすると、
全部でmd台のディスクドライブがあることになる。も
し、一つのディスクアレイ制御装置にこのmd台の全て
のディスクドライブが接続されるとすると、md回の入
出力を一つの制御装置がまかなうことになり、非常に高
速な制御装置が必要となる。
【0048】しかし、本発明では、各ローカルディスク
アレイ制御装置(104,105,106,107)毎
にd回と少ない入出力回数を処理するだけでよく、ロー
カルディスクアレイ制御装置(104,105,10
6,107)に高速な処理は要求されない。
【0049】図6は、コマンド制御部(141)の構成
を示している。コマンド制御部(141)は、インタフ
ェース制御部(108)とのコマンドやデータの転送制
御を行うアダプタ(401)、プロセッサ(402)、
DMAC(403)、メモリ(404)、バス(40
7)、およびバッファ(408)から構成されている。
【0050】メモリ(404)内には、コマンド制御を
行うマイクロプログラム(405,406)が格納され
ている。具体的には、コマンド受付処理プログラム(4
05)と終了処理プログラム(406)である。これら
の詳細は後で述べる。
【0051】マイクロプログラム(405,406)
は、共通バス(408)を介して、プロセッサ(40
2)で実行される。コマンド制御部(141)と外部の
制御部とのデータ転送は、ダイレクトメモリアクセスコ
ントローラであるDMAC(403)が、プロセッサ
(402)とは独立に、実行する。コマンド制御部(1
41)から制御メモリ(145)やキャッシュにデータ
やコマンドを転送する際は、バッファ(408)とバス
(409)を介して行われる。
【0052】図7は、制御メモリ(145)に格納され
ているテーブルやリストを示している。502は仮想ド
ライブ管理テーブル、503はI/O管理リスト、50
4はローカルディスクアレイ管理テーブル、505はキ
ャッシュ管理リスト、506はコマンドキューリストで
ある。
【0053】仮想ドライブ管理テーブル(502)は、
複数のローカルディスクアレイ制御装置(104,10
5,106,107)の領域の単一制御やユーザの要求
に合わせて設定する領域を管理している。I/O管理リ
スト(503)は、ホストプロセッサ(101)から受
け取った入出力要求を入出力が環境するまで入出力状態
等と共に管理するテーブルである。
【0054】ローカルディスクアレイ管理テーブル(5
04)は、グローバルディスクアレイ制御装置(10
3)に接続されているローカルディスクアレイ制御装置
(104,105,106,107)を管理するテーブ
ルであり、RAIDレベル、容量、およびパーティショ
ン構成等が格納されている。キャッシュ管理リスト(5
05)は、キャッシュメモリ(142)内に格納されて
いるデータとそのアドレスが格納されている。コマンド
キューリスト(506)は、グローバルディスクアレイ
制御装置(103)がコマンドに対してタグを付加する
為の管理情報が格納されている。
【0055】制御メモリ145のポインタ501からポ
イントされているこれらのテーブルやリストについての
詳細な構成は後で述べる。
【0056】図8は、ローカルディスクアレイ管理テー
ブル(504)の構成を示したものである。
【0057】カラム601には、ローカルディスクアレ
イの識別子が格納されている。カラム602には、ロー
カルディスクアレイのパーティション識別子が格納され
ている。このカラムにより、単一のローカルディスクア
レイ領域を複数に区切ることができる。これは、ディス
クアレイが複数のディスクドライブから構成されている
ことから、単一領域として使用するには大きすぎること
がある為である。このカラムはユーザが任意に指定可能
である。
【0058】カラム603にはパス識別子が格納されて
いる。グローバルディスクアレイ制御装置(103)が
ローカルディスクアレイ制御装置(104,105,1
06,107)に対して入出力要求を発行するときに、
このパス識別子を参照することで、ローカルディスクア
レイ制御装置(104,105,106,107)の位
置を知ることができる。カラム604は、各ローカルデ
ィスクアレイ制御装置(104,105,106,10
7)のドライブ保有数を示している。グローバルディス
クアレイ制御装置(103)がグローバルパリティを作
成する場合のパリティ位置を算出するときなどに使用す
る。
【0059】カラム605は、各ローカルディスクアレ
イ制御装置(104,105,106,107)の制御
しているRAIDレベルを示している。これもカラム6
04と同じように、グローバルパリティを作成する場合
のパリティ位置を算出するときなどに使用する。カラム
606には、各ローカルディスクアレイ制御装置(10
4,105,106,107)のパリティを格納するデ
ィスク数が格納されている。これもカラム605と同じ
ように、グローバルパリティを作成する場合のパリティ
位置を算出するときなどに使用する。
【0060】カラム607には、各ローカルディスクア
レイ制御装置(104,105,106,107)のパ
ーティション毎のストライピングサイズが格納される。
ストライピングサイズは、ローカルディスクアレイ制御
装置(104,105,106,107)の最小入出力
単位を意味する。例えば、ストライピングサイズが4
(KB)では、4KB以内のデータ長のデータは、単一
ディスクドライブに格納される。4KBを超える長さの
データは、4KB毎に次のディスクドライブに分割して
格納される。
【0061】カラム608には、パーティション毎の容
量が格納される。カラム609には、ステータスが格納
されており、例えば障害の発生等の各ローカルディスク
アレイ制御装置(104,105,106,107)の
状態が格納される。
【0062】図9は、仮想ドライブ管理テーブル(50
2)の構成を示している。仮想ドライブ管理テーブル
は、ホストプロセッサ(101)から認識するディスク
ドライブと物理的なディスクドライブとのマッピングを
行うために設けられる。
【0063】カラム701には、仮想ドライブの識別子
が格納される。カラム702から705までは、仮想ド
ライブ識別子で示される仮想ドライブが、ローカルディ
スクアレイ制御装置(104,105,106,10
7)のどのパーティションから構成されるかを示してい
る。例えば、仮想ドライブVOL1は、ローカルディス
クアレイ制御装置(104,105,106,107)
のパーティション1から構成される。
【0064】カラム706には、仮想ドライブ容量が格
納される。カラム707には、グローバルRAIDレベ
ルが格納されている。このグローバルRAIDレベル
は、ローカルディスクアレイ制御装置(104,10
5,106,107)のRAIDレベルとは無関係に設
定可能である。カラム708には、パリティを格納する
ディスク数が格納されている。カラム709には、グロ
ーバルディスクアレイ制御装置(103)のストライピ
ングサイズが格納される。カラム710には、ステータ
スが格納されており、例えば障害の発生等の仮想ドライ
ブ管理情報が格納される。
【0065】図10は、図7のような仮想ドライブ管理
テーブル(502)を用いることにより、ホストプロセ
ッサ(101)からどのように仮想ドライブが見える
か、および物理的にどのようにデータが配置されている
かを示す概念図である。
【0066】ホストプロセッサ(101)から入出力要
求(801,802,803)が発行される。このと
き、ホストプロセッサ(101)は、仮想ドライブ(8
04,805,806)に対して入出力を行なってい
る。このような仮想ドライブに対する入出力に対し、物
理的には、ディスク装置(133,134,135,1
36)にデータが分散配置される。ホストプロセッサ
(101)から見える仮想ドライブ(804,805,
806)は、物理的には、LDRV1(807),LD
RV2(808),LDRV3(809)のように、デ
ィスク装置(133,134,135,136)を横切
る形態で分散されている。
【0067】仮想ドライブ管理テーブル(502)の内
容を変更することで、必ずしもディスク装置(133,
134,135,136)の全てに渡って分散配置され
る構造にはならない。一つのローカルディスクアレイ領
域を一つの仮想ドライブと定義することも可能である。
さらに、810,811,812は、ローカルディスク
アレイ制御装置(104,105,106,107)が
生成/格納したパリティであり、813はグローバルデ
ィスクアレイ制御装置(103)が生成/格納したパリ
ティを示している。こういったテーブルにより、ユーザ
の要求する容量を満足し、また、RAIDレベル等を自
由に設定することができるため、性能における柔軟性も
ある。
【0068】図11は、I/O管理リスト(503)の
構成を示している。
【0069】制御メモリ(145)からポイントされて
いるアドレスは、さらに二つのポインタを示している。
一つは次の入出力要求のリストが格納されている領域へ
のポインタ(901)であり、もう一つは入出力要求が
格納されている領域を示すポインタ(902)である。
909は、リストの最後であることを示す識別子であ
る。
【0070】格納されている入出力要求は、903から
908の範囲で示されている。903は何処のホストプ
ロセッサからの要求であるかを識別するためのホスト識
別子、904は入出力を受け付けた時間、905は入出
力の状態が格納されている。入出力の状態とは、例え
ば、入出力実行中などである。906は、ホストプロセ
ッサから転送されたコマンドが格納されている。
【0071】907は、ホストからコマンドが転送され
る際に付加されているタグが格納されている。このタグ
は、入出力を発行したホストプロセッサが、どの入出力
要求が完了したのかを識別するためのものである。これ
は、ホストプロセッサが同一デバイスに対して複数の入
出力要求を発行できる場合に付加される。もしこのタグ
がなければ、ホストプロセッサは、同一デバイスから終
了通知が帰ってきても、どの入出力に対する完了かを識
別することができないからである。
【0072】908は新タグが格納されている。この新
タグ(908)は、グローバルディスクアレイ制御装置
(103)が設定するもので、ホストからのタグ(90
7)はホストが入出力を識別するものであるが、新タグ
(908)はグローバルディスクアレイ制御装置(10
3)が同一ローカルディスクアレイ制御装置(104,
105,106,107)に対して複数の入出力要求を
発行したときに使用するものである。
【0073】この新タグ(908)が必要な理由は、ホ
ストが識別する仮想ドライブと、グローバルディスクア
レイ制御装置(103)が識別するローカルディスクア
レイ制御装置(104,105,106,107)とが
同一でないことによる。つまり、タグを付加する側はド
ライブ毎にユニークなタグを付加する。しかし、このタ
グをそれを受け取った装置がホストの認識するドライブ
とは異なるドライブに使用すると、ドライブ毎のタグの
ユニークさが失われることになるためである。そのため
に、グローバルディスクアレイ制御装置(103)が使
用するタグとしては、ホストから転送されたタグは使用
せず、グローバルディスクアレイ制御装置(103)が
管理できる新タグ(908)を使用する必要がある。
【0074】図12は、キャッシュ管理リスト(50
5)の構造を示している。キャッシュ管理リスト(50
5)は、キャッシュメモリ(142)内にキャッシング
されているデータの場所やディスクドライブ(137,
138,139,140)との対応等を管理するための
リストである。
【0075】制御メモリ(145)からポイントされて
いるアドレスは、さらに二つのポインタを示している。
一つはキャッシュメモリのフリーポインタ(1001)
であり、もう一つは使用中ポインタ(1002)であ
る。キャッシュメモリ(142)は、ブロック単位で管
理されており、前記フリーポインタ(1001)と使用
中ポインタ(1002)が指すリストの一つ一つ(10
02−1006,1007−1011)は固定のブロッ
クに対応している。
【0076】フリーポインタ(1001)からポイント
されているリスト(1002−1006)は、キャッシ
ュメモリ(142)の未使用領域(ブロック)を管理す
るために使用される。もし、新規にキャッシュメモリ
(142)の領域を取得するときには、このフリーポイ
ンタ(1001)からポイントされているリスト(10
02−1006)の中から必要なだけのリストを取得し
た後、後述の使用中ポインタ(1002)がポイントし
ているリスト内に入れる操作を行う。
【0077】各リストには、次のリストをポイントする
エリアと、該リストがディスク上のどこのデータ(BL
K#)を保持しているかを示すエリアと、キャッシュメ
モリ(142)の何処に格納されているかを示すポイン
タとが、格納されている(1043−1045)。フリ
ーポインタがポイントするリストは未使用リストがチェ
インされていることから、キャッシュメモリ(142)
へのポインタの値は意味を持たない。
【0078】1007はハッシュリストである。ハッシ
ュリスト(1007)は、要求されたデータがキャッシ
ュメモリ(142)内に格納されているかどうかを高速
に検索する目的で設けられている。要求するディスクド
ライブのブロック番号BLK#をキーとしてハッシング
すれば、簡単に、検索しなければならない候補を絞るこ
とが可能となる。
【0079】図13は、コマンドキューリスト(50
6)の構成を示している。
【0080】1101は、各ローカルディスクアレイ制
御装置(104,105,106,107)に対応した
コマンドキューへのポインタが格納されている。110
2と1103は、ローカルディスクアレイ制御装置(1
04)に対応するフリー新タグ(1110−1114)
と使用新タグ(1115−1118)のリストをポイン
トしている。1104と1105は、ローカルディスク
アレイ制御装置(105)に対応するフリー新タグ(1
119−1122)と使用新タグ(1123−112
7)のリストをポイントしている。1106と1107
は、ローカルディスクアレイ制御装置(106)に対応
するフリー新タグ(1128−1132)と使用新タグ
(1133−1136)のリストをポイントしている。
1108と1109は、ローカルディスクアレイ制御装
置(107)に対応するフリー新タグ(1137−11
41)と使用新タグ(1142−1145)のリストを
ポイントしている。
【0081】各リストには、次のリストへのポインタ
と、新タグ値と、ホストプロセッサ(101)から転送
された入出力コマンド(ホストからのタグも含む)と
が、格納されている。フリー新タグ(1110−111
4,1119−1122,1128−1132,113
7−1141)中のコマンドエリア(cmd)の値は意
味を持たない。使用新タグのリストには、それぞれホス
トプロセッサ(101)からの入出力要求の一つが格納
されている。使用新タグ(1115−1118,112
3−1127,1133−1136,1142−114
5)は、コマンドの実行終了時に、使用新タグリストか
らフリー新タグリストへ移される。各ローカルディスク
アレイ制御装置(104,105,106,107)に
対応するコマンドキューリストは、それぞれ重複しない
タグ値を持っている。このコマンドキューリスト(50
6)により、前述のホストプロセッサ(101)から転
送されたタグを新タグに変換することが可能となる。
【0082】図14は、コマンド受付処理プログラム
(405)のフローチャートを示している。コマンド受
付処理プログラム(405)は、コマンド制御部(14
5)内のメモリ(404)に格納されているマイクロプ
ログラムである。
【0083】ステップ1201ではキャッシュ確保可能
かどうかをチェックする。もし可能であればステップ1
202へ移り、そうでなければステップ1212へ移り
コマンド異常終了処理を行う。通常、キャッシュメモリ
(142)に領域が確保できいないことはない。コマン
ド異常終了処理が実行されるのは、キャッシュメモリ
(145)がアクセス不可能な状態、例えば障害が発生
したときである。
【0084】ステップ1202では、キャッシュメモリ
(145)の所要分領域を確保する。ステップ1203
では、キャッシュ管理リスト(505)のフリーポイン
タ(1001)からポイントされているリストから、所
要分のリストを使用中ポインタ(1002)がポイント
しているリスト内に入れる。ステップ1204では、I
/O管理リスト(503)中に空きリストが存在するか
どうか調べる。もし、空きリストが存在すればステップ
1205に進み、そうでなければステップ1212に進
み異常終了処理を行う。この状態は、ディスクアレイ制
御装置(102)内にホストプロセッサ(101)から
のコマンドを受け付けるためのキューが無くなったこと
を意味する。
【0085】ステップ1205では、I/O管理リスト
(503)に新しいリストを追加する。これにより、当
該コマンドがディスクアレイ制御装置(102)の処理
対象となる。ステップ1206では、ホストIDをI/
O管理リスト(503)のエリア(903)に格納す
る。ステップ1208では、コマンド受付時間をI/O
管理リスト(503)のエリア(904)に格納する。
この時間は、もしディスクアレイ制御装置(102)に
障害が発生した場合などの保守に使用することができ
る。
【0086】ステップ1209では、コマンドをI/O
管理リスト(503)のエリア(906)に格納する。
このとき、I/O管理リスト(503)のエリア907
にもホストプロセッサ(101)から転送されたタグを
格納する。これは、入出力要求完了時に、ホストプロセ
ッサ(101)に対して完了情報と必要であればデータ
などと共にホストプロセッサ(101)へ転送する際に
参照される。ステップ1210では、ステップ1202
で取得したキャッシュメモリ(142)の領域にコマン
ドを転送する。ここでコマンドとは、READ/WRI
TEなどのディスク装置に対する指示と、WRITE要
求であればデータも同様に、キャッシュメモリ(14
2)に格納される。
【0087】ステップ1211では、I/O管理リスト
(503)のステータスエリア(905)にコマンド受
付完了を示すフラグを設定する。このステータスエリア
(905)には、コマンド終了時には実行結果が格納さ
れるが、それまでは、ディスクアレイ制御装置(10
2)内でのコマンドの実行状態がイベント毎に格納さ
れ、なんらかの障害発生時にロギング情報として使用す
ることができる。
【0088】図15は、終了処理プログラム(406)
のフローチャートを示している。終了処理プログラム
(406)は、コマンド制御部(145)内のメモリ
(404)に格納されているマイクロプログラムであ
る。
【0089】ステップ1301では、要求されていたコ
マンドがREAD要求かWRITE要求かを判定する。
この判定は、I/O管理リスト(503)のコマンドエ
リアを参照することで達成可能である。判定の結果、R
EAD要求であればステップ1306に進み、WRIT
E要求であればステップ1302へ進む。
【0090】ステップ1302では、I/O管理リスト
(503)のステータスエリア(905)とタグエリア
(907)の内容をマージする。ステップ1303で
は、ステップ1302でマージしたデータを、I/O管
理リスト(503)のホストエリア(903)が示すホ
ストプロセッサ(101)へ、転送する。その後、ステ
ップ1304に進む。WRITE処理はデータをすでに
ディスクドライブあるいはキャッシュエリアに書き込ん
だ後であるため、ホストプロセッサ(101)への情報
は、処理が正常に終了したかどうかのみである。
【0091】ステップ1306は、READ処理要求の
終了時に実行される。キャッシュメモリ(142)内に
は、要求されたデータがすでに格納されている。ステッ
プ1306では、このデータとステータスエリア(90
5)とタグエリア(907)の内容とをマージする。ス
テップ1307では、ステップ1306でマージしたデ
ータを、I/O管理リスト(503)のホストエリア
(903)が示すホストプロセッサ(101)へ、転送
する。その後、ステップ1304に進む。
【0092】ステップ1304では、I/O管理リスト
(503)から、当該入出力要求を削除する。
【0093】図16は、グローバルRAID制御部(1
43)の構成を示している。グローバルRAID制御部
(143)は、コマンドやデータの転送制御を行うアダ
プタ(1401)、プロセッサ(1402)、DMAC
(1403)、メモリ(1404)、パススイッチ(1
405)、およびパリティ生成部(1406)から構成
されている。
【0094】メモリ(1404)内には、コマンド制御
を行うマイクロプログラム(1407,1408,14
09,1410,1411,1412)が格納されてい
る。具体的には、I/O要求受付処理プログラム(14
07)、データ回復処理プログラム(1408)、I/
O要求終了処理プログラム(1409)、データ配置制
御プログラム(1410)、グローバルパリティ制御プ
ログラム(1411)、およびタグ制御プログラム(1
412)である。これらの詳細は後で述べる。マイクロ
プログラム(1407,1408,1409,141
0,1411,1412)は、プロセッサ(1402)
で実行される。
【0095】外部の制御部とのデータ転送は、ダイレク
トメモリアクセスコントローラであるDMAC(140
3)が、プロセッサ(1402)とは独立に実行する。
パススイッチ(1405)は、DMAC(1403)か
ら転送されたデータのヘッダを参照し、出力信号を振り
分ける動作を行う。この動作については後で詳細に説明
する。パリティ生成部(1406)は、パリティバッフ
ァ(1415)と、そのパリティバッファ(1415)
に格納された(転送されてきた)データのパリティデー
タを作成するパリティジェネレータ(1408)とから
構成される。
【0096】グローバルRAID制御部(143)の大
きな制御の流れは、以下のようなものである。まず、キ
ャッシュメモリ(142)からデータを受け取り、デー
タ配置制御プログラム(1410)によって必要であれ
ばデータの分割を行なう。次に、分割されたデータに、
各々のデータをどのローカルディスクアレイ制御装置
(104,105,106,107)に転送するかを識
別するためのヘッダを付加する。その後、ヘッダに従い
パススイッチ1405が各ローカルディスクアレイ制御
装置(104,105,106,107)に分割後のデ
ータを転送する。
【0097】図17は、I/O要求受付処理プログラム
(1407)のフローチャートを示している。
【0098】ステップ1501では、I/O管理リスト
(503)のステータスエリア(905)に、グローバ
ルRAID制御部(143)が処理要求を受け付けたこ
とを示すフラグを、セットする。ステップ1502で
は、I/O管理リスト(503)のコマンドエリア(9
06)の内容を内部バッファに転送する。その後、ステ
ップ1503に進み、データ配置制御プログラム(14
10)に制御を移行する。
【0099】図18は、データ配置制御プログラム(1
410)のフローチャートを示す。
【0100】ステップ1601では、要求処理がREA
DかWRITEかを判定する。もしREAD処理要求で
あれば、ステップ1602に進み、要求データがキャッ
シュメモリ(142)に存在するかどうか判定する。そ
うでばければ、ステップ1603に進み、グローバルR
AID制御部(143)がローカルディスクアレイ制御
装置(104,105,106,107)に対して出力
可能状態であるかどうか判定する。
【0101】ステップ1603について詳しく説明す
る。グローバルディスクアレイ制御装置(103)は、
ローカルディスクアレイ制御装置(104,105,1
06,107)の上位に位置する制御装置であるため、
ストライピングサイズが大きくなるために、ローカルデ
ィスクアレイ制御装置(104,105,106,10
7)よりもたくさんのデータをバッファリングした方が
良いケースがある。例えば、4台のローカルディスクア
レイ制御装置(104,105,106,107)が各
々4KBのデータを4台のディスクドライブに1KBづ
つ分割格納する構成で、グローバルディスクアレイ制御
装置(103)が4台のローカルディスクアレイ制御装
置(104,105,106,107)にフルストライ
ピングするケースでは、グローバルディスクアレイ制御
装置(103)は、 4KB*4台=16KB のデータをバッファリングすることによって4台のロー
カルディスクアレイ制御装置(104,105,10
6,107)に同時に出力処理ができる。この場合、ス
テップ1603では、全てのローカルディスクアレイ制
御装置(104,105,106,107)に同時に出
力可能かどうかを判定する。
【0102】しかし、このような判定が必要ないケース
もある。上記の例では、フルストライピングを前提とし
たが、RAID4,5のように、基本的にはデータをス
トライピングしない場合もある。その場合は、ホストプ
ロセッサ(101)から転送されたデータを、バッファ
リングすることなく、いづれかのローカルディスクアレ
イ制御装置(104,105,106,107)に出力
処理を行なう。また、別のケースとして、仮想ドライブ
が複数のローカルディスクアレイ制御装置(104,1
05,106,107)に渡って定義されていないとき
がある。この場合は、ローカルディスクアレイ制御装置
(104,105,106,107)の通常の動作通り
に、ローカルディスクアレイ制御装置(104,10
5,106,107)の分割動作に添って実行すれば良
いので、グローバルディスクアレイ制御装置(103)
はバッファリングする必要はない。従って、ステップ1
603では、仮想ドライブ管理テーブル(502)やロ
ーカルディスクアレイ管理テーブル(504)を参照し
て、どのくらいのデータをバッファリングする必要があ
るかを判定する。
【0103】ステップ1605では、ホストコマンドの
ディスク要求アドレスを先頭ローカルディスクアレイ制
御装置(104,105,106,107)のアドレス
に変換する。この処理は、ホストプロセッサ(101)
が認識しているドライブと、実際にローカルディスクア
レイのドライブに格納される場所とが一致していないた
めに行なう必要がある。参照するテーブルは、仮想ドラ
イブ管理テーブル(502)とローカルディスクアレイ
管理テーブル(504)である。
【0104】例えば、ホストプロセッサ(101)から
の要求ディスクアドレスが、仮想ドライブ管理テーブル
(502)のVOL2の先頭から32KB目から12K
Bのデータ出力とする。その場合のローカルディスクア
レイ制御装置(104,105,106,107)の先
頭アドレスの求め方は、以下の(1)〜(4)の通りで
ある。
【0105】(1)図9の仮想ドライブ管理テーブル
(502)を参照して、ローカルディスクアレイ制御装
置(104,105,106,107)にどのように仮
想ドライブが配置されているかを求める。その結果、V
OL2はローカルディスクアレイ制御装置(104,1
05,106,107)のパーティション2から構成さ
れていることがわかる。
【0106】(2)ローカルディスクアレイ制御装置
(104,105,106,107)のパーティション
2は、図8のローカルディスクアレイ管理テーブル(5
04)のカラム605,606,608から、それぞ
れ、RAIDレベル3、パリティ数1であり、パーティ
ション2は各ローカルディスクアレイ制御装置(10
4,105,106,107)の1GB目から始まるこ
とがわかる。
【0107】(3)図8のローカルディスクアレイ管理
テーブル(504)のカラム604,607から、各ロ
ーカルディスクアレイ制御装置(104,105,10
6,107)のドライブ数は5台であり、ストライピン
グサイズは4KBであることがわかる。パリティ数は1
であることから、各ローカルディスクアレイ制御装置
(104,105,106,107)には、4KB*
(5台−1台)=16KB格納されることになる。
【0108】(4)その結果、要求アドレスである32
KB目の物理的なアドレスは、32KB/16KB+1
=3番目のローカルディスクアレイ制御装置(106)
の1GB目が先頭アドレスとなる。
【0109】次に、ステップ1605では、要求コマン
ドがREADかWRITEかを判定する。その結果、R
EADであればステップ1606に進み、WRITEで
あればステップ1611に進む。
【0110】ステップ1606では、ローカルディスク
アレイ制御装置(104,105,106,107)に
対して入出力要求を発行するためにコマンドを生成す
る。このとき、各ローカルディスクアレイ制御装置(1
04,105,106,107)への入出力単位は、図
9のカラム709のストライピングサイズを指定する。
ステップ1607では、新タグを生成するためにタグ制
御プログラム(1412)を実行する。タグ制御プログ
ラム(1412)の詳細は後で述べる。
【0111】ステップ1608では、ステップ1606
とステップ1607で生成したコマンドと新タグとをマ
ージし、さらに、どのローカルディスクアレイ制御装置
(104,105,106,107)への要求なのかを
識別するためのヘッダを付加し、パススイッチ(140
5)にデータ転送を行なう。ステップ1609では、次
のローカルディスクアレイ制御装置を選択する。この操
作は、上記物理アドレスを求める際に行なった計算と同
じ要領で可能である。単に格納要求アドレスに図9のカ
ラム709のストライピングサイズを加えたアドレスと
して再計算するだけで可能となる。
【0112】次に、ステップ1610では、全てのデー
タを処理し終わったかどうかを判定し、まだ処理できて
いなければステップ1606から繰り返し、処理し終わ
れば当処理を終了する。
【0113】ステップ1605でWRITEと判定され
たときは、ステップ1611に進む。ステップ1611
は、グローバルパリティ制御プログラムの実行を意味し
ている。この処理についてはあとで詳細説明を行なう。
【0114】ステップ1612では、ローカルディスク
アレイ制御装置(104,105,106,107)に
対して入出力要求を発行するためにコマンドを生成す
る。このとき、各ローカルディスクアレイ制御装置(1
04,105,106,107)への入出力単位は、図
9のカラム709のストライピングサイズを指定する。
ステップ1613では、新タグを生成するためにタグ制
御プログラム(1412)を実行する。タグ制御プログ
ラム(1412)の詳細は後で述べる。
【0115】次に、ステップ1614では、ステップ1
608と同様に、ローカルディスクアレイ制御装置(1
04,105,106,107)への入出力要求を発行
する。ステップ1615はステップ1609と同等の処
理であり、ステップ1616はステップ1610と同等
の処理である。
【0116】図19は、パススイッチ(1405)の動
作を説明したものである。
【0117】この例では、4つのコマンド(1709,
1710,1711,1712)がセレクタ(141
4)によって分散転送される様子を示している。各コマ
ンドは、READ/WRITEなどのコマンドフィール
ド(1701,1703,1705,1707)と、転
送先を示すパス番号(1702,1704,1706,
1708)とから構成されている。
【0118】例えば、パケット1712はパス番号が
1、パケット1711はパス番号が2、パケット171
0はパス番号が3、パケット1709はパス番号が4で
ある。セレクタ(1414)は、このパス番号を参照す
ることによって、パス番号に続くデータをどのパスに転
送すべきなのかを判定して、パスのスイッチングを行な
う。例えば、パス番号が1であれば、セレクタ(141
4)はパス番号1を選択し、データを転送する(171
3)。同様に、パケット1711,1710,1709
も、セレクタ(1414)によって、1714,171
5,1716に分散して転送される。
【0119】図20は、グローバルパリティ制御プログ
ラム(1411)のフローチャートを示したものであ
る。
【0120】ステップ1801では、仮想ドライブ管理
テーブル(502)からパリティ位置の算出を行なう。
例えば、要求ディスクアドレスが仮想ドライブ管理テー
ブル(502)のVOL2の先頭から32KB目から1
2KBのデータ出力とする。その場合のパリティ位置の
求め方は以下の(1)〜(4)の通りである。
【0121】(1)仮想ドライブ管理テーブル(50
2)を参照して、ローカルディスクアレイ制御装置(1
04,105,106,107)にどのように仮想ドラ
イブが配置されているかを求める。その結果、VOL2
はローカルディスクアレイ制御装置(104,105,
106,107)のパーティション2から構成されてい
ることがわかる。
【0122】(2)ローカルディスクアレイ制御装置
(104,105,106,107)のパーティション
2は、ローカルディスクアレイ管理テーブル(504)
のカラム605,606,608から、それぞれ、RA
IDレベル3、パリティ数1であり、パーティション2
は各ローカルディスクアレイ制御装置(104,10
5,106,107)の1GB目から始まることがわか
る。
【0123】(3)グローバルRAIDレベルは3であ
ることから、パリティは割当最終ローカルディスクアレ
イ(107)であることがわかる。
【0124】(4)その結果、パリティの物理的なアド
レスは、ローカルディスクアレイ(107)の1GB目
からとなる。
【0125】上記パリティ位置計算は一例であり、ロー
カルディスクアレイ制御装置(104,105,10
6,107)のRAIDレベルや、グローバルディスク
アレイ制御装置(103)のRAIDレベルによって異
なってくるが、各RAIDレベルの配置規則を前述の演
算に適用することで容易に実現可能である。
【0126】次に、ステップ1802では、パリティ演
算に現在ドライブに格納されているデータが必要かどう
かの判定を行なう。つまり、RAIDレベルによって
は、パリティ全体を更新できないことがある。例えばR
AIDレベル5等である。パリティは、RAIDレベル
5に限らず複数のデータから一つあるいは一つ以上のパ
リティを生成する。このとき、あるパリティに関連する
全てのデータが同時に更新されれば、その新しいすべて
のデータから全く新しいパリティを生成できる。しか
し、RAIDレベル5等のように部分的なデータの更新
である場合は、まず更新すべき箇所の過去のデータの情
報をパリティから削除した後、新しいデータにおけるパ
リティを作成しなければならない。
【0127】ステップ1802の判定結果から旧データ
の必要がない場合はステップ1806に進み、そうでな
ければステップ1803に進む。ステップ1803で
は、旧データの読み込みのために、ローカルディスクア
レイ制御装置(104,105,106,107)に対
する入力コマンドを生成する。この処理は、図18のス
テップ1606などと同等である。入力アドレスは、ス
テップ1801で求めたアドレスを使用する。ステップ
1804では、新タグを生成するためにタグ制御プログ
ラム(1412)を実行する。この処理については、後
で詳細に説明する。ステップ1805では、ローカルデ
ィスクアレイ制御装置(104,105,106,10
7)に対して入力要求を発行する。この処理は図18の
ステップ1608等と同等である。
【0128】ステップ1806では、キャッシュ領域か
らパリティ生成部(1406)へ、グローバルディスク
アレイ制御装置(103)のストライピングサイズを指
定して、データ転送を行なう。必要であればステップ1
805で取得した旧データも同時に転送する。グローバ
ルディスクアレイ制御装置(103)のストライピング
サイズは、図9のカラム709のストライピングサイズ
を参照することで求めることができる。この動作につい
ては後で詳細に説明する。
【0129】次に、ステップ1807では、パリティ生
成部(1406)から、生成されたパリティを読み取
る。ステップ1808では、ステップ1801で計算し
たパリティ位置に対して、ステップ1807で取得した
新しいパリティを書き込むためのコマンドを生成する。
ステップ1809では、ステップ1808で生成したコ
マンドに対するタグを取得するため、タグ制御プログラ
ム(1412)を実行する。ステップ1810では、ス
テップ1801で求めたパリティ位置に新しいパリティ
を書き込むために出力処理を行なう。
【0130】図21は、グローバルパリティの生成の様
子を示している。
【0131】1901はパリティを生成するデータ群で
あり、1902はグローバルディスクアレイ制御装置
(103)のストライピングサイズである。この2つの
データをパリティ生成部(1406)に転送すること
で、まずデータ群(1901)をグローバルディスクア
レイ制御装置(103)のストライピングサイズに分割
し(1903,1904,1905)、それぞれについ
て排他的論理和を取る(1906,1907)。これに
より、グローバルパリティが生成される。
【0132】図22は、ホストプロセッサ(101)か
ら転送された入出力コマンドが、ディスク装置(13
3,134,135,136)に格納あるいは読みだし
されるまでに、どのように変化するかを示している。
【0133】ホストプロセッサ(101)からは、デー
タ(2001)、データ長(2002)、コマンド(2
003)、ホスト識別子(2004)、タグ(200
5)、および仮想ドライブ識別子(2006)が、一つ
のパケットとなって転送される。それを受けたグローバ
ルディスクアレイ制御装置(103)は、ローカルディ
スクアレイ制御装置(104,105,106,10
7)に対して分割して入出力要求を発行するために、複
数のコマンドを生成する。
【0134】その一つ一つは、2007−2012で示
されるように、データ、データ長、コマンド、ホスト識
別子、タグ、およびローカルディスクアレイ識別子(パ
ス番号)が一つのパケットとなっている。ここで、パケ
ットの形式は、2001−2006と同じであるが、内
容は異なる。
【0135】例えば、データ(2007)は分割されて
いるためにデータ(2001)に比べて少ない。それに
伴い、データ長(2008)もデータ長(2002)よ
り短い値がセットされている。コマンド(2009)
は、格納あるいは読みだし位置がローカルディスクアレ
イのアドレスに変わる。ホスト識別子(2010)は、
ホストプロセッサ(101)の識別子とは異なり、この
場合はグローバルディスクアレイ制御装置(103)の
識別子である。タグ(2011)は、ホストプロセッサ
(101)から転送されたタグではなく、新タグであ
る。この理由は既に述べている。2012は、ホストプ
ロセッサ(101)からは見えないローカルディスクア
レイ識別子(パス番号)が格納されている。
【0136】ローカルディスクアレイ制御装置(10
4,105,106,107)内では、2013−20
17に示すように、データ、データ長、コマンド、ホス
ト識別子、およびドライブ番号が一つのパケットとなっ
てドライブに転送される。前述のグローバルディスクア
レイ制御装置(103)内でのコマンドの変化と同じよ
うに、分割が行なわれる。
【0137】図23は、タグ制御プログラム(141
2)のフローチャートを示している。このタグは、前述
の通り、ホストプロセッサ(101)から転送されたタ
グを、グローバルディスクアレイ制御装置(103)か
らローカルディスクアレイ制御装置(104,105,
106,107)に対する入出力には使用できないこと
から、タグの変換が必要であることによる。
【0138】ステップ2101では、入出力を行なうロ
ーカルディスクアレイ制御装置(104,105,10
6,107)に対応する、コマンドキューリスト(50
6)中のフリータグポインタ(1102,1104,1
106,1108)を検索する。フリータグポインタ
は、ローカルディスクアレイ制御装置(104,10
5,106,107)毎に設けられており、各ローカル
ディスクアレイ制御装置(104,105,106,1
07)に対する入出力に使用されていないタグがリスト
形式でチェインされている(図13)。ステップ210
2では、このリストの中からタグを一つ取得する。
【0139】次に、ステップ2103では、取得したタ
グを使用中リストに繋ぎ換える。これにより、取得した
タグは他の要求により使用されることが無くなり、同一
ローカルディスクアレイ制御装置(104,105,1
06,107)内で重複するタグが使用されることはな
い。ステップ2104では、取得したタグを、I/O管
理リスト(503)中の新タグエリア(908)に格納
する。これは、ホストプロセッサ(101)から転送さ
れたタグと関連づけるために行なう。これにより、入出
力完了時に、ホストプロセッサ(101)に対してホス
トプロセッサ(101)から転送されたタグを返送する
とき、容易に検索することが可能となる。ステップ21
05では、タグをコマンドに付加し、コマンドキューリ
スト(506)内のコマンド格納エリアに格納する。
【0140】図24は、データ回復制御プログラム(1
408)のフローチャートを示している。
【0141】ディスクアレイ装置にはデータの回復手段
が設けられている。本発明では、通常のディスクアレイ
に比べより高信頼のディスクアレイにするために、パリ
ティの階層化を行なっている。ローカルディスクアレイ
制御装置(104,105,106,107)が管理す
るパリティと、グローバルディスクアレイ制御装置(1
03)が管理するグローバルパリティである。グローバ
ルパリティは、複数のローカルディスクアレイ制御装置
(104,105,106,107)に渡るパリティで
ある。
【0142】ローカルディスクアレイ制御装置(10
4,105,106,107)が管理するパリティは、
そのローカルディスクアレイ制御装置(104,10
5,106,107)内でのみ使用することができる。
従って、ローカルディスクアレイ制御装置(104,1
05,106,107)内のいづれかのディスクドライ
ブに障害が発生した場合に、そのパリティを使用して、
障害ドライブのデータを回復することができる。
【0143】グローバルパリティは、複数のローカルデ
ィスクアレイ制御装置(104,105,106,10
7)に渡って作成されているため、前述のディスクドラ
イブ単体の障害時にも使用することは可能であるが、そ
れ以上にローカルディスクアレイ制御装置(104,1
05,106,107)そのものが障害を起こしたとき
に使用することができることの意味が大きい。
【0144】図24のフローチャートでは障害回復を階
層化した動作を示している。
【0145】ステップ2201では、ローカルディスク
アレイ制御装置(104,105,106,107)の
回復処理が可能かどうか判定する。この判定にはさまざ
まな要因が考えられる。例えば、障害回復機構の障害
や、パリティで回復できる範囲を越えた障害時には、ロ
ーカルディスクアレイ制御装置(104,105,10
6,107)単体では障害回復ができない。この場合
は、ステップ2202に進む。
【0146】ステップ2202では、パリティ領域の障
害かどうか判定する。パリティ障害であれば、データ部
分の障害ではないため、ここでは回復処理を行なわな
い。ステップ2203では、障害を起こしたローカルデ
ィスクアレイ以外のデータを取得する。この場合、パリ
ティデータも含む。ステップ2204では、ステップ2
203で取得したデータあるいはパリティから、障害を
起こした部分のデータを回復する。
【0147】なお、ここでは述べていないが、グローバ
ルパリティのパリティも存在することがある。これは、
グローバルディスクアレイ制御装置(103)がローカ
ルディスクアレイ制御装置(104,105,106,
107)にグローバルパリティデータを格納したとき
に、ローカルディスクアレイ制御装置(104,10
5,106,107)内では、グローバルパリティデー
タも通常のデータと同じくパリティを作成/格納するた
めである。本発明では、このようにパリティ情報も階層
化されているため、高い信頼性を得ることができる。
【0148】図25は、I/O要求終了処理プログラム
(1409)のフローチャートを示している。
【0149】ステップ2301では、コマンドキューリ
スト(506)から終了する要求に対応するリストをサ
ーチする。ステップ2302では、I/O管理リスト
(503)からステップ2301と同様にサーチする。
ステップ2304では、I/O管理リスト(503)の
ステータスエリア(905)に、ローカルディスクアレ
イ制御装置(104,105,106,107)から転
送された終了状態を、格納する。
【0150】ステップ2304では、コマンドキューリ
スト(506)からステップ2301でサーチしたリス
トを削除し、未使用リストへ繋ぎ換える。これにより、
本処理で使用したタグは、他の入出力のために使用可能
となる。ステップ2305では、ホストプロセッサ(1
01)から転送されたタグをI/O管理リスト(50
3)のタグエリア(907)から取り出し、コマンド制
御部(145)に通知することで処理を終了する。
【0151】次に、ローカルディスクアレイ制御装置
(104,105,106,107)の詳細を述べる。
この中で、コマンド制御部(113,114,115,
116)は、グローバルディスクアレイ制御装置103
のコマンド制御部141と同等である。また、インタフ
ェース制御部(109,110,111,112)は、
グローバルディスクアレイ制御装置103のインタフェ
ース制御部108と同等である。また、インタフェース
コントローラ(129,130,131,132)は、
グローバルディスクアレイ制御装置103のインタフェ
ースコントローラ144と同等である。
【0152】図26は、ローカルディスクアレイ制御装
置(104,105,106,107)のRAID制御
部(125,126,127,128)の構成を示して
いる。なお、図26において、図16に示したグローバ
ルRAID制御部143の各部と共通の部分は、同じ番
号で示している。
【0153】RAID制御部(125,126,12
7,128)は、コマンドやデータの転送制御を行うア
ダプタ(1401)、プロセッサ(1402)、DMA
C(1403)、メモリ(1404)、パススイッチ
(1405)、およびパリティ生成部(1406)から
構成されている。
【0154】メモリ(1404)内には、コマンド制御
を行うマイクロプログラム(1407,2404,24
01,2402,2403)が格納されている。具体的
には、I/O要求受付処理プログラム(1407)、デ
ータ回復処理プログラム(2404)、I/O要求終了
処理プログラム(2401)、データ配置制御プログラ
ム(2403)、およびパリティ制御プログラム(24
02)である。
【0155】I/O要求受付処理プログラム(140
7)は、図17と同様であるので説明を省略する。I/
O要求終了処理プログラム(2401)、データ配置制
御プログラム(2403)、パリティ制御プログラム
(2402)、およびデータ回復処理プログラム(24
04)の詳細は後で述べる。マイクロプログラム(14
07,2404,2401,2402,2403)はプ
ロセッサ(1402)で実行される。
【0156】外部の制御部とのデータ転送は、DMAC
(1403)がプロセッサ(1402)とは独立に実行
する。パススイッチ(1405)は、DMAC(140
3)から転送されたデータのヘッダを参照し、出力信号
を振り分ける動作を行う。パリティ生成部(1606)
は、パリティバッファ(1415)と、そのパリティバ
ッファ(1415)に格納された(転送されてきた)デ
ータのパリティデータを作成するパリティジェネレータ
(1408)とから構成される。
【0157】RAID制御部(125,126,12
7,128)の大きな制御の流れは、以下のようなもの
である。まず、グローバルディスクアレイ制御装置(1
03)からデータを受け取り、データ配置制御プログラ
ム(2403)によって必要であればデータの分割を行
なう。次に、分割されたデータに、各々のデータをどの
ディスクドライブ(137,138,139,140)
に転送するかを識別するためのヘッダを付加する。その
後、ヘッダに従いパススイッチ(1405)が各ディス
クドライブ(137,138,139,140)に分割
後のデータを転送する。
【0158】図27は、制御メモリ(117,118,
119,120)に格納されているリストを示してい
る。2502はI/O管理リスト、2503はキャッシ
ュ管理リストである。
【0159】I/O管理リスト(2502)は、グロー
バルディスクアレイ制御装置(103)から受け取った
入出力要求を入出力が環境するまで入出力状態等と共に
管理するテーブルである。キャッシュ管理リスト(25
03)は、キャッシュメモリ(121,122,12
3,124)内に格納されているデータとそのアドレス
が格納されている。I/O管理リスト(2502)とキ
ャッシュ管理リスト(2503)は、図7のI/O管理
リスト503(図11)とキャッシュ管理リスト505
(図12)と同等のリストである。
【0160】図28は、I/O要求終了処理プログラム
(2401)のフローチャートを示している。
【0161】ステップ2601では、I/O管理リスト
(2502)から終了する入出力要求のリストをサーチ
する。ステップ2602では、I/O管理リスト(25
02)のステータスエリアにディスク装置(133,1
34,135,136)から転送された終了状態を格納
することで処理を終了する。
【0162】図29は、データ配置制御プログラム(2
403)のフローチャートを示す。
【0163】ステップ2701では、要求処理がREA
DかWRITEかを判定する。もし、READ処理要求
であれば、ステップ2702に進み、要求データがキャ
ッシュメモリ(142)に存在するかどうか判定する。
ステップ2701でWRITE処理要求のときは、ステ
ップ2703に進み、RAID制御部(125,12
6,127,128)がディスク装置(133,13
4,135,136)に対して出力可能状態であるかど
うか判定する。
【0164】ステップ2704では、グローバルディス
クアレイ制御装置(103)のディスク要求アドレスを
先頭ディスク装置(133,134,135,136)
のアドレスに変換する。ステップ2705では、要求コ
マンドがREADかWRITEかを判定する。その結
果、READであればステップ2706に進み、WRI
TEであればステップ2709に進む。
【0165】ステップ2706では、ディスクドライブ
(137,138,139,140)に対して入出力要
求を発行する。ステップ2707では、次のディスクド
ライブ(137,138,139,140)を選択す
る。ステップ2708では全てのデータ処理が終了した
かどうか判定し、終了していなければステップ2706
から繰り返す。
【0166】ステップ2709はステップ2706と同
等である。ステップ2710はステップ2707と同等
である。ステップ2711はステップ2708と同等で
ある。ステップ2712では、パリティ制御プログラム
(2402)を実行する。
【0167】図30は、パリティ制御プログラム(24
02)のフローチャートを示したものである。
【0168】ステップ2801では、RAIDレベル、
ドライブ数、および要求ディスクアドレスからパリティ
位置の算出を行なう。ステップ2802では、パリティ
更新のために旧データが必要かどうか判定する。ステッ
プ2802の判定結果から、旧データの必要がない場合
はステップ2804に進み、そうでなければステップ2
803に進む。
【0169】ステップ2803では、旧データの読み込
みのために、ディスクドライブ(137,138,13
9,140)に対して旧データの入力要求を発行する。
入力アドレスは、ステップ2801で求めたアドレスを
使用する。
【0170】ステップ2804では、キャッシュ領域か
らパリティ生成部(1406)へデータ転送を行なう。
必要であればステップ2803で取得した旧データも同
時に転送する。ステップ2805では、パリティ生成部
(1406)から、生成されたパリティを読み取る。ス
テップ2806では、ステップ2801で求めたパリテ
ィ位置に新しいパリティを書き込むために出力処理を行
なう。
【0171】図31は、データ回復制御プログラム(2
404)のフローチャートを示している。ディスクアレ
イ装置にはデータの回復手段が設けられている。従っ
て、ローカルディスクアレイ制御装置(104,10
5,106,107)内のいづれかのディスクドライブ
に障害が発生した場合に、そのパリティを使用して、障
害ドライブのデータを回復することができる。
【0172】まず、ステップ2901では、パリティ領
域の障害かどうか判定する。パリティ障害であれば、デ
ータ部分の障害ではないため、ここでは回復処理を行な
わない。ステップ2902では、障害を起こしたディス
クドライブ以外のデータを取得する。この場合、パリテ
ィデータも含む。ステップ2903では、ステップ29
02で取得したデータあるいはパリティから、障害を起
こした部分のデータを回復する。
【0173】図32は、コマンド受付処理プログラムの
フローチャートを示している。コマンド受付処理プログ
ラムは、コマンド制御部(113,114,115,1
16)内のメモリに格納されているマイクロプログラム
である。
【0174】ステップ3001では、キャッシュ確保可
能かどうかをチェックする。もし可能であればステップ
3002へ移り、そうでなければステップ3013へ移
りコマンド異常終了処理を行う。ステップ3002で
は、キャッシュメモリ(121,122,123,12
4)の所要分領域を確保する。ステップ3003では、
キャッシュ管理リスト(2503)のフリーポインタ
(1001)でポイントされているリストから、使用中
ポインタ(1002)がポイントしているリスト内に入
れる。
【0175】ステップ3004では、I/O管理リスト
(2502)中に空きリストが存在するかどうか調べ
る。もし、空きリストが存在すればステップ3005に
進み、そうでなければステップ3013に進み異常終了
処理を行う。
【0176】ステップ3005では、新しいI/O管理
リスト(2502)を追加する。ステップ3006で
は、ホストIDをI/O管理リスト(2502)のエリ
ア(903)に格納する。ステップ3008では、コマ
ンド受付時間をI/O管理リスト(2502)のエリア
(904)に格納する。この時間は、もしディスクアレ
イ制御装置(102)に障害が発生した場合などの保守
に使用することができる。
【0177】ステップ3009では、コマンドをI/O
管理リスト(2502)のエリア(906)に格納す
る。ステップ3010では、ステップ3002で取得し
たキャッシュメモリ(121,122,123,12
4)領域にコマンドを転送する。ここでコマンドとはR
EAD/WRITEなどのディスク装置に対する指示
と、WRITE要求であればデータも同様にキャッシュ
メモリ(142)に格納される。
【0178】ステップ3011では、I/O管理リスト
(2502)のステータスエリア(905)にコマンド
受付完了を示すフラグを設定する。このステータスエリ
ア(905)は、コマンド終了時には実行結果が格納さ
れるが、それまでは、ローカルディスクアレイ制御装置
(104,105,106,107)内でのコマンドの
実行状態がイベント毎に格納され、なんらかの障害発生
時にロギング情報として使用することができる。
【0179】図33は、終了処理プログラムのフローチ
ャートを示している。終了処理プログラムは、コマンド
制御部(113,114,115,116)内のメモリ
に格納されているマイクロプログラムである。
【0180】ステップ1301では、要求されていたコ
マンドがREAD要求かWRITE要求かを判定する。
この判定は、I/O管理リスト(2502)のコマンド
エリアを参照することで達成可能である。判定の結果、
READ要求であればステップ3103に進み、WRI
TE要求であればステップ3102へ進む。
【0181】ステップ3102では、I/O管理リスト
(2502)のステータスエリア(905)をグローバ
ルディスクアレイ制御装置(103)へ転送する。その
後、ステップ3105に進む。
【0182】ステップ3103は、READ処理要求の
終了時に実行される。キャッシュメモリ(121,12
2,123,124)内には、要求されたデータがすで
に格納されている。ステップ3103では、このデータ
とステータスエリア(905)の内容をマージする。ス
テップ3104では、ステップ3103でマージしたデ
ータをI/O管理リスト(2502)のホストエリア
(903)が示すグローバルディスクアレイ制御装置
(103)へ転送する。その後、ステップ3105に進
む。
【0183】ステップ3105では、I/O管理リスト
(2502)から、当該入出力要求を削除する。
【0184】図34は、本実施例における障害回復動作
の一例を示す。この図を参照して、本発明による障害回
復動作の一例を説明する。
【0185】本例では、ローカルディスクアレイ制御部
(104)が管理するディスクドライブの一つに障害が
発生し、さらに、ローカルディスクアレイ制御装置(1
05)に障害が発生したとき、ホストプロセッサ(10
1)からデータの読みだし要求が出されたときの回復動
作を示している。
【0186】まず、ローカルディスクアレイ制御装置
(104)は、障害が発生したドライブ以外のドライブ
からデータを読みだし、障害が発生したドライブのデー
タを修復する(3204)。修復されたデータと正常ド
ライブのデータはマージされて(3203)、グローバ
ルディスクアレイ制御装置(103)へ転送する。
【0187】ローカルディスクアレイ制御装置(10
5)は、要求されたデータ(3205)をそのままグロ
ーバルディスクアレイ制御装置(103)へ転送する。
グローバルディスクアレイ制御装置(103)は、ロー
カルディスクアレイ制御装置(105)が単独で修復不
可能であることを判断し、グローバルパリティを使用し
たデータ修復を行なう。
【0188】そのために、グローバルパリティが格納さ
れているローカルディスクアレイ制御装置(107)か
ら、回復に必要なグローバルパリティ(3206)を読
みだす。グローバルパリティ(3206)と正常にデー
タが読みだされたローカルディスクアレイのデータは、
グローバルディスクアレイ制御装置(103)内で、障
害が発生したローカルディスクアレイ制御装置(10
5)のデータを修復する(3202)。修復されたデー
タは、正常にデータが読みだされたローカルディスクア
レイのデータとマージされ(3201)、ホストプロセ
ッサ(101)へ転送される。
【0189】このように、本発明では、ドライブ障害だ
けでなく、ディスクアレイそのものに障害が発生して
も、ホストプロセッサ(101)の処理を中断すること
がない。
【0190】図35は、本発明によるディスクアレイ装
置のパリティデータの格納の一例を示している。図中、
Pはローカルディスクアレイ制御装置(104,10
5,106,107)により生成されたパリティを示
し、GPはグローバルディスクアレイ制御装置(10
3)により生成されたパリティを示す。
【0191】3301−3304は、ローカルディスク
アレイ制御装置(104,105,106,107)の
RAIDレベルが3または4のときのパリティを示す。
それに対し、3300はグローバルディスクアレイ制御
装置(103)が生成したパリティであり、このときグ
ローバルディスクアレイ制御装置(103)のRAID
レベルは3または4である。
【0192】同様に、3309−3312は、ローカル
ディスクアレイ制御装置(104,105,106,1
07)のRAIDレベルが3または4のときのパリティ
を示す。3305−3308はグローバルディスクアレ
イ制御装置(103)が生成したパリティであり、この
ときグローバルディスクアレイ制御装置(103)のR
AIDレベルは5である。このように、データのみなら
ずパリティも複数のローカルディスクアレイ制御装置
(104,105,106,107)に渡って格納され
る。
【0193】3313のグローバルパリティも同様であ
る。このとき、ローカルディスクアレイ制御装置(10
4,105,106,107)はRAIDレベルが5で
ある。
【0194】図36は、図35と同様にパリティデータ
の格納の一例を示している。図35では、グローバルデ
ィスクアレイ制御装置(103)とローカルディスクア
レイ制御装置(104,105,106,107)の両
方でパリティを生成/格納することで、非常に高い信頼
性を得られる例を示した。図36は、信頼性よりも大容
量を優先する使用方法を示した例である。
【0195】3401は、当ディスクアレイ装置の中で
唯一つのパリティである。他のローカルディスクアレイ
制御装置(104,105,106)にはパリティは存
在しない。こうすることで、容量を優先するディスクア
レイを構成することができる。
【0196】これと同様の別の例として、ローカルディ
スクアレイ制御装置(107)のすべてのディスクドラ
イブにグローバルパリティを格納することもできる。3
402は、RAID5のグローバルパリティである。し
かし、他のローカルディスクアレイ制御装置(104,
105,106)にはパリティは存在しない。
【0197】同じRAID5のグローバルパリティで
も、3403−3406のようにローカルディスクアレ
イ制御装置(104,105,106,107)に分散
して配置することも可能である。
【0198】[実施例2]次に、本発明の第2の実施例
を説明する。
【0199】図37は、本発明の第2の実施例の全体構
成図を示したものである。図1と共通の部分は同じ番号
で示した。図1と大きく異なるところは、グローバルデ
ィスクアレイ制御装置(3513)とローカルディスク
アレイ制御装置(3502,3503,3504,34
05)との接続に、共通バス(3506)を用いたとこ
ろである。制御メモリ(3511)、グローバルRAI
D制御部(3501)、およびコマンド制御部(350
7−3510)については後で詳細説明を行なうが、そ
の他の部分については図1と同等であるので説明を省略
する。
【0200】図38は、グローバルRAID制御部(3
501)の構成を示している。基本的な構成は、図16
と同じであるが、マイクロプログラム(3601)とマ
ルチキャスト制御部(3602)が異なる。
【0201】グローバルRAID制御部(3501)
は、ホストプロセッサ(101)から入出力要求を受け
取り、データをローカルディスクアレイ制御装置(35
02,3503,3504,3405)に対して転送す
る。このとき、グローバルRAID制御部(3501)
は、マルチキャスト制御部(3602)により共通バス
(3506)に接続された全てのローカルディスクアレ
イ制御装置(3502,3503,3504,340
5)を転送先として同一のコマンドを転送する。
【0202】図39は、ローカルディスクアレイ制御装
置(3502,3503,3504,3405)内の制
御メモリ(3511)の構造を示している。
【0203】テーブルやリスト(502,503,50
4,505)は、図7と同等であるが、ローカルディス
クアレイ識別子(3702)が追加されている。ローカ
ルディスクアレイ識別子(3702)は、ローカルディ
スクアレイ制御装置(3502,3503,3504,
3405)毎に異なる識別子が設定される。ローカルデ
ィスクアレイ識別子(3702)は、自ローカルディス
クアレイ制御装置(3502,3503,3504,3
405)がグローバルRAID制御部(3501)から
転送されたコマンドやデータを実行すべきかどうかを判
断するために使用する。
【0204】図40は、コマンド受付処理プログラムの
フローチャートを示している。コマンド受付処理プログ
ラムは、コマンド制御部(3507,3508,350
9,3510)内のメモリに格納されているマイクロプ
ログラムである。
【0205】ステップ3801では、制御メモリ(35
11)内のローカルディスクアレイ識別子(3702)
と転送されたコマンドとから、自ローカルディスクアレ
イが実行すべき内容かどうかを判定する。この判定は、
ローカルディスクアレイ識別子(3702)と仮想ドラ
イブ管理テーブル(502)を用いて行なわれる。例え
ば、グローバルRAID制御部(3501)から仮想ド
ライブnのブロックmに対する入出力要求があった場合
は以下のように判定する。
【0206】(1)仮想ドライブ管理テーブル(50
2)から仮想ドライブn、ブロックmが格納されている
ローカルディスクアレイの識別子を得る。 (2)得られた識別子と制御メモリ(3511)内のロ
ーカルディスクアレイ識別子(3702)とを比較し、
自ローカルディスクアレイが実行すべきかどうか判定す
る。
【0207】以上の動作により、ステップ3801の判
定が可能となる。自ローカルディスクアレイで実行すべ
きコマンドであったときはステップ3802に進み、総
出内ときは処理を終了する。
【0208】ステップ3802では、キャッシュ確保可
能かどうかをチェックする。もし可能であればステップ
3803へ移り、そうでなければステップ3814へ移
りコマンド異常終了処理を行う。ステップ3803で
は、キャッシュメモリ(121−124)の所要分領域
を確保する。ステップ3804では、キャッシュ管理リ
スト(505)のフリーポインタ(1001)でポイン
トされているリストから、所要分のリストを、使用中ポ
インタ(1002)がポイントしているリスト内に入れ
る。
【0209】次に、ステップ3805では、I/O管理
リスト(503)中に空きリストが存在するかどうか調
べる。もし、空きリストが存在すればステップ3806
に進み、そうでなければステップ3814に進み異常終
了処理を行う。
【0210】ステップ3806では、I/O管理リスト
(503)に新しいリストを追加する。ステップ380
7では、ホストIDをI/O管理リスト(503)のエ
リア(903)に格納する。ステップ3809では、コ
マンド受付時間をI/O管理リスト(503)のエリア
(904)に格納する。この時間は、もしディスクアレ
イ制御装置(102)に障害が発生した場合などの保守
に使用することができる。ステップ3810では、コマ
ンドをI/O管理リスト(503)のエリア(906)
に格納する。
【0211】ステップ3811では、ステップ3803
で取得したキャッシュメモリ(121−124)領域に
コマンドを転送する。ここでコマンドとはREAD/W
RITEなどのディスク装置に対する指示と、WRIT
E要求であればデータも同様にキャッシュメモリ(12
1−124)に格納される。ステップ3812では、I
/O管理リスト(503)のステータスエリア(90
5)にコマンド受付完了を示すフラグを設定する。この
ステータスエリア(905)には、コマンド終了時には
実行結果が格納されるが、それまでは、ディスクアレイ
制御装置(102)内でのコマンドの実行状態がイベン
ト毎に格納され、なんらかの障害発生時にロギング情報
として使用することができる。
【0212】図41は、データ配置制御プログラム(1
410)の動作フローチャートを示している。
【0213】ステップ3901では、要求処理がREA
DかWRITEかを判定する。もし、READ処理要求
であれば、ステップ1602に進み、要求データがキャ
ッシュメモリ(142)に存在するかどうか判定する。
ステップ3901でWRITE処理要求であれば、ステ
ップ3903に進む。ステップ3903では、ホストプ
ロセッサ(101)からの要求をそのままローカルディ
スクアレイ制御装置(3502,3503,3504,
3405)に転送する。
【0214】図42は、本実施例2の動作の一例を示し
ている。
【0215】グローバルディスクアレイ制御装置(35
13)から、データ4002、入出力データ長400
3、入出力先頭アドレス4004、仮想ドライブ識別子
4005、およびコマンド4006が、一つのパケット
として、全てのローカルディスクアレイ制御装置(35
02,3503,3504,3405)に転送される
(4001)。
【0216】ローカルディスクアレイ制御装置(350
2,3503,3504,3405)での実行判定の結
果、3502,3505では自ローカルディスクアレイ
制御装置には関係のない入出力となりコマンドキャンセ
ルを行なう。ローカルディスクアレイ制御装置(350
3,3504)は、自ローカルディスクアレイ内の領域
であると判断し、グローバルディスクアレイ制御装置
(3513)から転送されたコマンドを解釈し実行する
(4007,4008)。
【0217】こういった処理により、ローカルディスク
アレイ制御装置(3502,3503,3504,34
05)の接続性を良くすることが可能となる。つまり、
グローバルディスクアレイ制御装置(3513)内で
は、入出力制御においてローカルディスクアレイ制御装
置(3502,3503,3504,3405)を意識
する必要がなくなった。従って、ローカルディスクアレ
イ制御装置を新たに追加しても、グローバルディスクア
レイ制御装置(3513)の変更は必要ない。さらに
は、ローカルディスクアレイ制御装置も、制御メモリ
(3507−3510)内のローカルディスクアレイ識
別子を変更するだけで増設が可能となる。
【0218】
【発明の効果】本発明によれば、多数のディスク装置を
接続しても、高速な入出力が可能であり、コストを上げ
ることがなく、またディスク管理も容易で信頼性を低下
させることもない。
【図面の簡単な説明】
【図1】本発明によるディスクアレイの一実施例の全体
図を示す。
【図2】本発明による実施例1の動作概要を示す。
【図3】本発明による実施例1の動作概要を示す。
【図4】本発明による実施例1の動作概要を示す。
【図5】本発明による実施例1の動作概要を示す。
【図6】コマンド制御部の構成を示す。
【図7】制御メモリの構成を示す。
【図8】ローカルディスクアレイ管理テーブルの構成を
示す。
【図9】仮想ドライブ管理テーブルの構成を示す。
【図10】仮想ドライブの概要を示す。
【図11】I/O管理リストの構成を示す。
【図12】キャッシュ管理リストの構成を示す。
【図13】コマンドキューリストの構成を示す。
【図14】コマンド受付処理プログラムのフローを示
す。
【図15】終了処理プログラムのフローを示す。
【図16】グローバルRAID制御部の構成を示す。
【図17】I/O要求受付処理プログラムのフローを示
す。
【図18】データ配置制御プログラムのフローを示す。
【図19】パススイッチの動作を示す。
【図20】グローバルパリティ制御プログラムのフロー
を示す。
【図21】グローバルパリティの生成概要を示す。
【図22】コマンドパケットの流れを示す。
【図23】タグ制御プログラムのフローを示す。
【図24】データ回復制御プログラムのフローを示す。
【図25】I/O要求終了プログラムのフローを示す。
【図26】ローカルディスクアレイのRAID制御部の
構成を示す。
【図27】ローカルディスクアレイの制御メモリの構成
を示す。
【図28】ローカルディスクアレイのI/O要求終了プ
ログラムのフローを示す。
【図29】ローカルディスクアレイのデータ配置制御プ
ログラムのフローを示す。
【図30】ローカルディスクアレイのパリティ制御プロ
グラムのフローを示す。
【図31】ローカルディスクアレイのデータ回復制御プ
ログラムのフローを示す。
【図32】ローカルディスクアレイのコマンド受付処理
プログラムのフローを示す。
【図33】ローカルディスクアレイの終了処理プログラ
ムのフローを示す。
【図34】本発明によるデータ回復処理の動作を示す。
【図35】本発明によるデータ格納例を示す。
【図36】本発明によるデータ格納例を示す。
【図37】本発明による実施例2の全体構成図を示す。
【図38】実施例2のグローバルRAID制御部の構成
を示す。
【図39】実施例2の制御メモリの構成を示す。
【図40】実施例2のコマンド受付処理プログラムのフ
ローを示す。
【図41】実施例2のデータ配置制御プログラムのフロ
ーを示す。
【図42】実施例2の動作例を示す。
【符号の説明】
101…ホストプロセッサ、102…ディスクアレイ制
御装置、108…インタフェース制御部、133,13
4,135,136…ディスク装置、137,138,
139,140…ディスクドライブ、103…グローバ
ルディスクアレイ制御装置、104,105,106,
107…ローカルディスクアレイ制御装置、141…コ
マンド制御部、145…制御メモリ、142…キャッシ
ュメモリ、143…グローバルRAID制御部、144
…インタフェースコントローラ、402…プロセッ
サ、、502…仮想ドライブ管理テーブル、503…I
/O管理リスト、504…ローカルディスクアレイ管理
テーブル、505…キャッシュ管理リスト、506…コ
マンドキューリスト、405…コマンド受付処理プログ
ラム、406…終了処理プログラム、1407…I/O
要求受付処理プログラム、1408…データ回復処理プ
ログラム、1409…I/O要求終了処理プログラム、
1410…データ配置制御プログラム、1411…グロ
ーバルパリティ制御プログラム、1412…タグ制御プ
ログラム、1405…パススイッチ。

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】ホストプロセッサから転送されたデータを
    所定数のグループに分割し各グループのデータを並列に
    出力する手段と、 並列に出力された各グループのデータを、グループ単位
    でそれぞれ入力し格納する複数のローカルなディスクア
    レイ装置とを備えたことを特徴とするディスクアレイ装
    置。
  2. 【請求項2】複数のローカルなディスクアレイ装置と、 ホストプロセッサから転送されたデータを、前記複数の
    ローカルなディスクアレイ装置のうちの何れに出力する
    かを選択し、選択したディスクアレイ装置に該データを
    出力する手段とを備えたことを特徴とするディスクアレ
    イ装置。
  3. 【請求項3】ホストプロセッサから転送されたデータを
    所定数のグループに分割し各グループのデータを並列に
    出力する手段と、 前記複数のグループ間のパリティを生成して、前記各グ
    ループのデータと並列に出力する手段と、 並列に出力された各グループのデータを、グループ単位
    でそれぞれ入力し格納する複数のローカルなディスクア
    レイ装置と、 前記パリティを入力し格納するローカルなディスクアレ
    イ装置とを備えたことを特徴とするディスクアレイ装
    置。
  4. 【請求項4】複数のディスクドライブを含み、ホストプ
    ロセッサから転送されたデータと前記データから生成さ
    れたパリティを、前記ディスクドライブに格納するディ
    スクアレイ装置であって、 前記複数のディスクドライブが、それぞれ複数のディス
    クドライブを含む複数の論理グループに分けられている
    とともに、 前記ホストプロセッサから転送されたボリウム内アドレ
    スとデータ長に基づいて、前記論理グループの一つまた
    は複数を選択し、選択した論理グループに、格納すべき
    データを転送する手段と、 各論理グループごとに設けられ、前記転送されたデータ
    から論理グループ内のパリティを生成し、自論理グルー
    プ内の複数のディスクドライブに前記データと生成した
    パリティとを格納する手段とを備えたことを特徴とする
    ディスクアレイ装置。
  5. 【請求項5】複数のディスクドライブを含み、ホストプ
    ロセッサから転送されたデータと前記データから生成さ
    れたパリティを、前記ディスクドライブに格納するディ
    スクアレイ装置であって、 前記複数のディスクドライブが、それぞれ複数のディス
    クドライブを含む複数の論理グループに分けられている
    とともに、 前記ホストプロセッサから転送されたボリウム内アドレ
    スとデータ長に基づいて、前記論理グループの一つまた
    は複数を選択し、選択した論理グループに、格納すべき
    データを転送する手段と、 前記選択した各論理グループに転送するデータを用いて
    論理グループ間パリティを生成し、前記選択した論理グ
    ループとは異なる論理グループを選択し、選択した論理
    グループに、格納すべきデータとして前記論理グループ
    間パリティを転送する手段と、 各論理グループごとに設けられ、前記転送された格納す
    べきデータから論理グループ内のパリティを生成し、自
    論理グループ内の複数のディスクドライブに前記データ
    と生成したパリティとを格納する手段とを備えたことを
    特徴とするディスクアレイ装置。
  6. 【請求項6】請求項4または5に記載のディスクアレイ
    装置であって、 前記論理グループ内のパリティが格納されたディスクド
    ライブを除く他のディスクドライブに対し、各ディスク
    ドライブへの格納単位ごとに順次連続した前記ボリウム
    内アドレスを割り付け、さらに前記ボリウム内アドレス
    は複数の前記論理グループに渡って順次水平に割り付け
    ることを特徴とするディスクアレイ装置。
  7. 【請求項7】請求項6に記載のディスクアレイ装置であ
    って、 前記論理グループにおける前記ボリウム内アドレスの連
    続部分を前記論理グループの最小格納単位とし、ホスト
    プロセッサから転送されたデータを前記最小格納単位ご
    とに複数の前記論理グループに水平に分割し各論理グル
    ープに転送することを特徴とするディスクアレイ装置。
  8. 【請求項8】請求項7に記載のディスクアレイ装置であ
    って、 前記各論理グループ内では、前記最小格納単位で転送さ
    れたデータを、ディスクドライブの格納単位ごとに水平
    に複数のディスクドライブに格納することを特徴とする
    ディスクアレイ装置。
  9. 【請求項9】請求項8に記載のディスクアレイ装置であ
    って、 前記論理グループの前記最小格納単位を満たしたデータ
    から、順次、前記データに対応する前記論理グループに
    転送することを特徴とするディスクアレイ装置。
  10. 【請求項10】請求項6に記載のディスクアレイ装置で
    あって、 前記論理グループにおける前記ボリウム内アドレスの連
    続部分のデータが前記ホストプロセッサから転送された
    とき、前記転送されたデータからパリティを生成し、前
    記データと前記パリティとを並列に前記論理グループ内
    のディスクドライブに格納することを特徴とするディス
    クアレイ装置。
  11. 【請求項11】請求項4または5に記載のディスクアレ
    イ装置であって、 前記論理グループ内の何れかのディスクドライブに障害
    が発生したとき、前記論理グループ内に格納されたパリ
    ティと障害ディスクドライブ以外のディスクドライブの
    データとから、前記障害ディスクドライブのデータを生
    成することを特徴とするディスクアレイ装置。
  12. 【請求項12】請求項5に記載のディスクアレイ装置で
    あって、 前記論理グループの何れかに障害が発生したとき、前記
    論理グループ間パリティと障害を起こした論理グループ
    以外の論理グループのデータとから、前記障害を起こし
    た論理グループのデータを生成することを特徴とするデ
    ィスクアレイ装置。
  13. 【請求項13】複数のディスクドライブを含み、ホスト
    プロセッサから転送されたデータと前記データから生成
    されたパリティを、前記ディスクドライブに格納するデ
    ィスクアレイ装置であって、 前記複数のディスクドライブが、それぞれ複数のディス
    クドライブを含む複数の論理グループに分けられている
    とともに、各論理グループごとに論理グループ制御装置
    が設けられており、 該論理グループ制御装置は、ホストプロセッサから転送
    された入出力コマンドが、自装置に対応する論理グルー
    プに対する入出力要求かどうかを判定し、自装置に対応
    する論理グループに対する入出力要求である場合はその
    入出力コマンドを実行し、そうでなければその入出力コ
    マンドをキャンセルする手段を備えたことを特徴とする
    ディスクアレイ装置。
JP5351130A 1993-12-30 1993-12-30 ディスクアレイ装置 Pending JPH07200187A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5351130A JPH07200187A (ja) 1993-12-30 1993-12-30 ディスクアレイ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5351130A JPH07200187A (ja) 1993-12-30 1993-12-30 ディスクアレイ装置

Publications (1)

Publication Number Publication Date
JPH07200187A true JPH07200187A (ja) 1995-08-04

Family

ID=18415255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5351130A Pending JPH07200187A (ja) 1993-12-30 1993-12-30 ディスクアレイ装置

Country Status (1)

Country Link
JP (1) JPH07200187A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006120120A (ja) * 2004-10-20 2006-05-11 Seagate Technology Llc 複数のデータ・フォーマットを割り振るための一般記憶コンテナ
WO2006062269A1 (en) * 2004-12-06 2006-06-15 Electronics And Telecommunications Research Institute Data placement method using distributed parity in divided block disk array, and method for controlling block read/write function in divided block distributed parity disk array
JP2007066296A (ja) * 2005-08-05 2007-03-15 Seiko Epson Corp 情報処理装置、データ処理方法およびプログラム
US7231469B2 (en) 2004-02-16 2007-06-12 Hitachi, Ltd. Disk controller
US7249221B2 (en) 2004-03-12 2007-07-24 Hitachi, Ltd. Storage system having network channels connecting shared cache memories to disk drives
JP2007257630A (ja) * 2006-03-21 2007-10-04 Internatl Business Mach Corp <Ibm> Raidストレージ・システムのパリティ値を生成する方法及びアダプタを内蔵するraidストレージ・システム(エンクロージャベースのraidパリティ支援機構)
US7467238B2 (en) 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
JP2009545062A (ja) * 2006-07-24 2009-12-17 マーベル ワールド トレード リミテッド RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ
JP2010231807A (ja) * 1998-12-22 2010-10-14 Hitachi Ltd 記憶装置システム
US9400620B2 (en) 2013-10-21 2016-07-26 Fujitsu Limited Storage system
WO2016194162A1 (ja) * 2015-06-03 2016-12-08 株式会社日立製作所 計算機システム

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231807A (ja) * 1998-12-22 2010-10-14 Hitachi Ltd 記憶装置システム
US8375168B2 (en) 1998-12-22 2013-02-12 Hitachi, Ltd. Method and system of collection performance data for storage network
US8176248B2 (en) 1998-12-22 2012-05-08 Hitachi, Ltd. Method and system of collection performance data for storage network
US8051244B2 (en) 1998-12-22 2011-11-01 Hitachi, Ltd. Storage system for sending an access request from a host to a storage subsystem
US7917668B2 (en) 2004-02-10 2011-03-29 Hitachi, Ltd. Disk controller
US7467238B2 (en) 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
US7231469B2 (en) 2004-02-16 2007-06-12 Hitachi, Ltd. Disk controller
US7469307B2 (en) 2004-02-16 2008-12-23 Hitachi, Ltd. Storage system with DMA controller which controls multiplex communication protocol
US7249221B2 (en) 2004-03-12 2007-07-24 Hitachi, Ltd. Storage system having network channels connecting shared cache memories to disk drives
US7814270B2 (en) 2004-03-12 2010-10-12 Hitachi, Ltd. Storage systems and methods of controlling cache memory of storage systems
JP2006120120A (ja) * 2004-10-20 2006-05-11 Seagate Technology Llc 複数のデータ・フォーマットを割り振るための一般記憶コンテナ
WO2006062269A1 (en) * 2004-12-06 2006-06-15 Electronics And Telecommunications Research Institute Data placement method using distributed parity in divided block disk array, and method for controlling block read/write function in divided block distributed parity disk array
JP2007066296A (ja) * 2005-08-05 2007-03-15 Seiko Epson Corp 情報処理装置、データ処理方法およびプログラム
JP2007257630A (ja) * 2006-03-21 2007-10-04 Internatl Business Mach Corp <Ibm> Raidストレージ・システムのパリティ値を生成する方法及びアダプタを内蔵するraidストレージ・システム(エンクロージャベースのraidパリティ支援機構)
JP2009545062A (ja) * 2006-07-24 2009-12-17 マーベル ワールド トレード リミテッド RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ
US8495416B2 (en) 2006-07-24 2013-07-23 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
US8862931B2 (en) 2006-07-24 2014-10-14 Marvell World Trade Ltd. Apparatus and method for storing and assigning error checking and correcting processing of data to storage arrays
US9400620B2 (en) 2013-10-21 2016-07-26 Fujitsu Limited Storage system
WO2016194162A1 (ja) * 2015-06-03 2016-12-08 株式会社日立製作所 計算機システム

Similar Documents

Publication Publication Date Title
US6009481A (en) Mass storage system using internal system-level mirroring
US5958078A (en) Storage unit and storage unit subsystem
US5155835A (en) Multilevel, hierarchical, dynamically mapped data storage subsystem
EP0526487B1 (en) Logical track write scheduling system for a parallel disk drive array data storage subsystem
JP3371044B2 (ja) ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
US7249221B2 (en) Storage system having network channels connecting shared cache memories to disk drives
US6272571B1 (en) System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
JP7135162B2 (ja) 情報処理システム、ストレージシステム及びデータ転送方法
JP4493321B2 (ja) ディスクアレイ装置及びデータ退避方法
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
EP0797141A1 (en) Computer system
JP2006524401A (ja) 再構成可能なデータ経路を備えたディスクアレイコントローラ
JPH07152491A (ja) 仮想ディスクシステム
JP2002049511A (ja) アドレスの割付変更方法及びこれを用いた外部記憶サブシステム
JPH07200187A (ja) ディスクアレイ装置
JP3260999B2 (ja) ディスク制御装置の制御方法
US20060085663A1 (en) Method for keeping snapshot image in a storage system
JP4252102B2 (ja) 計算機システムおよび二次記憶装置
JP3687111B2 (ja) 記憶装置システムおよび記憶装置の制御方法
US11474730B1 (en) Storage system and migration method of storage system
JP4128206B2 (ja) 計算機システムおよび二次記憶装置
US6360296B1 (en) Disk control apparatus
US20070260835A1 (en) Storage controlling device of disk array device and redundancy restoring method
JPH10312246A (ja) 記憶装置サブシステム
KR100423812B1 (ko) 디스크 캐쉬메모리 제어기 및 패리티 연산장치를 구비한알에이아이디 제어기 및 패리티 연산방법