(57)【要約】【課題】仮想ＲＡＩＤコントローラからキャッシュ・メモリを分離すると、適切なストライプ・サイズおよび調整特性でキャッシュ・メモリを自動的に構成することができない。【解決手段】複数のＩ／Ｏ操作の性能特性をテストすることによって最適なＩ／Ｏ構成を決定する仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置であり、Ｉ／Ｏ操作がそれぞれＲＡＩＤコントローラにデータ・ブロックを書き込むことを含み、Ｉ／Ｏ構成がデータ長およびデータ調整を含む。【選択図】図１
2004326759.tif 000002
【特許請求の範囲】
【請求項１】
複数のＩ／Ｏ操作の性能特性をテストすることによって最適なＩ／Ｏ構成を決定する仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置であって、前記Ｉ／Ｏ操作がそれぞれ、前記ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含み、前記Ｉ／Ｏ構成がデータ長およびデータ調整を含む、装置。
【請求項２】
前記メモリがキャッシュである、請求項１に記載の装置。
【請求項３】
前記メモリが入力バッファである、請求項１に記載の装置。
【請求項４】
前記メモリが出力バッファである、請求項１に記載の装置。
【請求項５】
前記性能特性が応答時間である、請求項１に記載の装置。
【請求項６】
仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置を動作させる方法であって、
前記ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含む複数のＩ／Ｏ操作を実施するステップと、
前記複数のＩ／Ｏ操作の性能特性をテストするステップと、
前記テスト・ステップに応答して、データ長およびデータ調整を含む、後続のＩ／Ｏ操作に最適なＩ／Ｏ構成を設定するステップとを含む、方法。
【請求項７】
前記ＲＡＩＤコントローラが他の操作を行っていないときに行う、請求項６に記載の方法。
【請求項８】
前記メモリがキャッシュである、請求項６に記載の方法。
【請求項９】
前記メモリが入力バッファである、請求項６に記載の方法。
【請求項１０】
前記メモリが出力バッファである、請求項６に記載の方法。
【請求項１１】
前記性能特性が応答時間である、請求項６に記載の方法。
【請求項１２】
データ処理システム上で実行されるときに、請求項６に記載の方法を実施するように前記データ処理システムに命令する、コンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤストレージ・システム用にメモリを構成することに関し、より詳細には、仮想ＲＡＩＤコントローラおよび分離したメモリを含むＲＡＩＤストレージ・システム用にメモリを構成することに関する。
【背景技術】
【０００２】
ストレージ・システムでは、ＲＡＩＤ（Redundant Array ofIndependent Disks）として知られる技術を用いて、独立した記憶装置アレイを単一の仮想記憶装置として動作するように構成することができる。ＲＡＩＤストレージ・システムとともに動作するように構成されたコンピュータ・システムでは、ＲＡＩＤストレージ・システムが単一の記憶装置であるかのように、ＲＡＩＤストレージ・システム上で（読取りおよび書込み操作などの）Ｉ／Ｏ（入出力）操作を行うことができる。ＲＡＩＤストレージ・システムは、独立した記憶装置アレイおよびＲＡＩＤコントローラを含む。ＲＡＩＤコントローラにより、独立した記憶装置アレイの仮想ビューが得られる。すなわち、独立した記憶装置アレイが、記憶要素のシーケンシャル・リストを備えた単一の仮想記憶装置に見える。一般に、これらの記憶要素は記憶ブロックとして知られ、記憶ブロック中に記憶されたデータはデータ・ブロックとして知られている。Ｉ／Ｏ操作は、仮想記憶装置内の１つまたは複数の記憶ブロックに関して有効となる。仮想記憶装置上でＩ／Ｏ操作を実施する際、ＲＩＡＤコントローラは、独立した記憶装置アレイ上にＩ／Ｏ操作をマップする。記憶装置アレイを仮想化し、Ｉ／Ｏ操作をマップするために、ＲＩＡＤコントローラは、ディー・パターソン（D.Patterson）ら、「ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）の事例（A Case forRedundant Array of Inexpensive Disks（ＲＡＩＤ））」、１９８８年の論文で論じられている標準のＲＡＩＤ技術を用いることができる。以下にこれらの技術の一部を検討する。
【０００３】
単一の仮想記憶装置として記憶装置アレイの仮想ビューを提供する際、ＲＡＩＤコントローラの機能は、仮想記憶装置内でアレイ全体にわたってデータ・ブロックを分散させることである。これを実現する一方法は、ストライピングとして知られる技術を用いることである。ストライピングは、複数の記憶装置全体にわたってデータ・ブロックを順番に分散させるというものである。ＲＡＩＤストレージ・システム内にデータ・ブロックを記憶させるとき、各記憶装置中にストリップとして知られる複数のデータ・ブロックを記憶させる。ストリップのサイズは、個々のＲＡＩＤの実施形態によって決まることもあるし、構成可能とすることもできる。第１記憶装置上に記憶された第１ストリップおよび後続の記憶装置に記憶された後続のストリップを含むストリップ列は、ストライプとして知られている。ストライプのサイズは、ストライプを構成するすべてのストリップの合計サイズである。このようにしてデータ・ブロックを記憶するのに複数の独立した記憶装置を使用すると、複数の記憶装置がＩ／Ｏ操作中に並列に動作し得るので、単一の記憶装置に比べて高性能のＩ／Ｏ操作が行われる。
【０００４】
ディスク型記憶装置などの物理的な記憶装置は信頼性が低いことで知られており、ＲＡＩＤコントローラの別の機能は、信頼性のあるストレージ・システムを提供することである。信頼性を高めるための一技法は、独立した記憶装置アレイ内にデータとともにチェック情報を記憶させることである。チェック情報は、このような装置アレイ内の１つの記憶装置の障害など、単一障害点（single point of failure）のために読取り不能になったデータを再生成することができる冗長情報である。可読データと冗長チェック情報の組合せから読取り不能データを再生成する。チェック情報は、ストライプ中の１つのストリップを占めるパリティ・データとして記録し、そのストライプ中のすべてのデータ・ストリップにＸＯＲ（排他的論理和）論理演算子を適用することによって計算する。たとえば、データ・ストリップＡ、ＢおよびＣを含むストライプに、Ａ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃとして演算したパリティ・ストリップをさらに付加する。ストレージ・システムにおける単一障害点時に、このパリティ・ストリップを用いてアクセス不能なデータ・ストリップを再生成する。たとえば、４つの独立した記憶装置Ｗ、Ｘ、ＹおよびＺ全体にわたってそれぞれデータ・ストリップＡ、ＢおよびＣならびにＰＡＲＩＴＹを含むストライプを記憶させ、記憶装置Ｘに障害が発生した場合、装置Ｘ上に記憶させたストリップＢはアクセス不能になるであろう。ストリップＢは、残りのデータ・ストリップおよびＰＡＲＩＴＹストリップからＸＯＲ演算によって計算することができる。この復元演算は、Ａ  ＸＯＲ  Ｃ  ＸＯＲ  ＰＡＲＩＴＹ＝Ｂとなる。
【０００５】
障害時にチェック情報を有効にするためには、そのチェック情報が正確であり、かつ維持されていることが必要である。したがって、ＲＡＩＤストレージ・システム中のデータの変更を、チェック情報を適切に変更することによって反映させなければならない。これは、データの変更により、（「スモール書込み」として知られる）ストライプ全体よりもサイズが小さいデータ・ユニットが影響を受ける場合、以下に説明する理由から負担になり得る。ストライピング技術を用いるＲＡＩＤコントローラを備え、各ストライプがデータ・ストリップおよびパリティ・ストリップを含むＲＡＩＤストレージ・システムを考える。このようなシステムを、ストレージ・システム（仮想記憶装置）の仮想ビュー内の単一ブロックが単一データ・ストリップに相当するように構成する場合、仮想記憶装置に単一ブロックを書き込む操作は、ＲＡＩＤストライプ中の単一ストリップの書込み操作としてＲＡＩＤコントローラによって実施される。ストライプ中の単一ストリップの変更は、対応するパリティ・ストリップを適切に変更することによって反映させなければならない。すなわち、このストライプ用のパリティ・ストリップを再計算しなければならない。パリティ・ストリップを再計算するには、ストライプ中で上書きされるデータ・ストリップ（「旧」データ・ストリップ）を、現在のパリティ・データから取り除かなければならない。これは、パリティ・データおよび旧データ・ストリップに対してＸＯＲ演算を実施することによって行うことができる。さらに、改変パリティ・ストリップを生成するために、このパリティ・データに更新データ・ストリップ（「新」データ・ストリップ）を含めなければならない。これは、パリティ・データおよび新データ・ストリップに対してＸＯＲ演算を実施することによって行うことができる。その後、改変されたパリティ・ストリップおよび新データ・ストリップをストライプ中に書き込まなければならない。したがって、現在のストライプを更新ストライプに書き換えるために、（旧データ・ストリップおよびパリティ・ストリップの）２回の読取り操作、パリティ・ストリップの改変、（新データ・ストリップおよび改変されたパリティ・ストリップの）２回の書込み操作を行う必要がある。スモール書込みを行うこの手法では、チェック情報の整合性を維持するために必要な追加の読取りおよび書込み操作のために、ＲＡＩＤストレージ・システムの性能の低下が生じる。これは、スモール書込み操作のリード・モディファイ・ライト問題として周知のものである。
【０００６】
上記で概略を説明したようにスモール書込み操作と性能が密接に関係しているため、ＲＡＩＤストレージ・システムに書き込む際に、１つまたは複数の完全なストライプを上書きして、現在のチェック情報を維持する必要をなくすことが好ましい。１つまたは複数の完全なストライプを上書きする書込み操作を行うために、ＲＡＩＤストレージ・システムに書き込むデータ・ユニットが、適切なサイズのもの、すなわち（パリティ・ストリップを除く）ストライプ・サイズの倍数であることが必要である。１つまたは複数の完全なストライプを上書きするためには、データ・ユニットを、ＲＡＩＤストライプ中の第１ストリップに対応するＲＡＩＤ記憶装置の仮想ビュー内のブロックに書き込むことも必要である。ＲＡＩＤストライプ中の第１ストリップ以外の任意のストリップに対応するブロックに書き込む操作は、ストライプの一部に書込みを行うことを含み、これはスモール書込み操作になる。ＲＡＩＤストライプ中の第１ストリップに対応するように書込み操作を行うことは、「ストライプ調整（stripe alignment）」として知られている。このように、書込み操作により、１つまたは複数のＲＡＩＤストライプを確実に完全に上書きするには、ストライプが、所与のＲＡＩＤストレージ・システムのストライプ・サイズおよび調整基準を満たさなければならない。これらの基準を満たす書込み操作は、「ストライプ調整した書込み」として知られている。ストライプ調整した書込みでは、ＲＡＩＤストライプ中の現在のチェック情報を維持する必要がない。というのは、１つまたは複数のストライプが、新たに書き込まれたデータに完全に置き換わり、書込み操作の一環として、この新しいデータ用に新しいチェック情報が計算されるからである。ＲＡＩＤストレージ・システムへのすべての書込み操作がストライプ調整したものとなるようにすると、スモール書込みのリード・モディファイ・ライト問題がなくなることによって性能が向上する。
【０００７】
ＲＡＩＤストレージ・システムへの書込み操作は、必ずしもストライプ調整しているとは限らず、スモール書込み操作は、完全なＲＡＩＤストライプよりもサイズが小さいデータ・ユニットを含むというその定義上、常にストライプ調整していない。既存のＲＡＩＤストレージ・システムでは、複数のスモール書込み操作を単一の書込み操作に集約して完全なストライプを構成するキャッシュなどのメモリを使用することができる。その後、スモール書込みの集合体をストライプ調整させ、ＲＡＩＤ記憶装置に書き込むことができる。このようなキャッシュ・メモリを有効にするためには、ストライプのサイズおよび調整を含めて、ＲＡＩＤストレージ・システムのパラメータで動作するようにキャッシュ・メモリ構成しなければならない。これらのパラメータは、異なるＲＡＩＤストレージ・システムでは異なり、一般に、異なる業者が提供するＲＡＩＤストレージ・システムでは異なる。使用者またはコントローラ自体によってキャッシュ・メモリが容易に適切なストライプ・サイズおよび調整のパラメータで構成されるように、しばしばキャッシュ・メモリをＲＡＩＤコントローラ内に統合する。
【０００８】
ＲＡＩＤストレージ・システム自体が、ＳＡＮ（ストレージ・エリア・ネットワーク）などの構成内にしだいに仮想化されつつある。ＳＡＮは、１つまたは複数のサーバを１つまたは複数の記憶装置に接続するネットワークを含む。ＳＡＮ内の記憶装置は、ＲＡＩＤストレージ・システムとして実施される仮想記憶装置を含み得る。ＳＡＮ内では、１つまたは複数のスイッチにより各装置が接続され、ＳＡＮを介してホストと記憶装置の間の経路が提供される。ＳＡＮにより記憶装置が仮想化されて、ＳＡＮに接続された装置の相互運用性が確保される。ある記憶装置の実際の実装の細部を、ＳＡＮ内の他の装置には未知とすることができることがＳＡＮにおける記憶装置の仮想化の特徴である。たとえば、ＳＡＮ内のホストは、ＳＡＮに接続された記憶装置が、単一のディスクとして実装されているのか、あるいはＲＡＩＤストレージ・システムとして実装されているのかを判別することができない。ＳＡＮ内で記憶装置を仮想化すると、多数のＲＡＩＤストレージ・システムを含めて、多数の記憶装置全体にわたってデータを分散させ、それによって、性能および信頼性をさらに向上させることもできる。これは、ＳＡＮ内のスイッチに接続することができる米国ＩＢＭ社のTotalStorage Virtualization Engineなどのストレージ・アプライアンスを使用して実現される。キャッシュ・メモリは、ＲＡＩＤストレージ・システムなどの記憶装置内に統合せず、ＳＡＮ内で独立に実装して、複数のＳＡＮ記憶装置全体にわたってデータを分散させるときに使用できることが望ましい。たとえば、キャッシュ・メモリは、ＳＡＮ内のスイッチに接続されたストレージ・アプライアンス内に実装することができる。
【非特許文献１】ディー・パターソン（D. Patterson）ら、「ＲＡＩＤ（RedundantArrays of Inexpensive Disks）の事例（A Case for Redundant Array of Inexpensive Disks（ＲＡＩＤ））」、１９８８年
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ＲＡＩＤストレージ・システムのＲＡＩＤコントローラにキャッシュ・メモリを統合せず、ＲＡＩＤコントローラをＳＡＮなどで仮想化する場合、ＲＡＩＤストレージ・システムの個々のストライプ・サイズおよび調整特性を、すぐにキャッシュ・メモリに利用することはできない。仮想ＲＡＩＤコントローラからキャッシュ・メモリを分離すると、適切なストライプ・サイズおよび調整特性でキャッシュ・メモリを自動的に構成することができないという問題が生じる。というのは、キャッシュ・メモリにはこれらの特性が未知だからであり、手動で構成を行わなければならないか、あるいは全く行わないことになる。ストライプ・サイズおよび調整構成が不適切だと、おそらくは書込み操作が正しくストライプ調整されないので、リード・モディファイ・ライト問題が生じる可能性が高まる。したがって、従来型ストレージ・システムのこれらの問題を軽減するシステムおよび方法を提供することが望ましい。
【課題を解決するための手段】
【００１０】
したがって、本発明は、第１態様で、複数のＩ／Ｏ操作の性能特性をテストすることによって最適なＩ／Ｏ構成を決定する仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置を提供する。前記Ｉ／Ｏ操作はそれぞれ、ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含み、前記Ｉ／Ｏ構成は、データ長およびデータ調整を含む。こうすると、メモリ中に記憶されたデータを仮想ＲＡＩＤコントローラに書き込む操作が、適切な長さおよび適切に調整されたものとなり、それによって、リード・モディファイ・ライト問題が生じることなく、ストライプ調整した書込みが行われるという利点が得られる。
【００１１】
好ましくは、このメモリはキャッシュである。
【００１２】
好ましくは、性能特性は応答時間である。
【００１３】
したがって、本発明は、第２態様で、仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置を動作させる方法を提供する。この方法は、ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含む複数のＩ／Ｏ操作を実施するステップと、前記複数のＩ／Ｏ操作の性能特性をテストするステップと、前記テスト・ステップに応答して、後続のＩ／Ｏ操作に対してデータ長およびデータ調整を含む最適なＩ／Ｏ構成を設定するステップとを含む。
【００１４】
さらに、本発明は、第３態様で、データ処理システム上で実行されるときに、上記方法を実施するようにデータ処理システムに命令する、コンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品を提供する。
【００１５】
次に、添付の図面を参照して、単なる例として本発明の好ましい実施形態を説明する。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の好ましい実施形態におけるＳＡＮ（ストレージ・エリア・ネットワーク）１０２の構成を示す概略図である。ＳＡＮ１０２は、ストレージ・アプライアンス１０６２を備えるスイッチ１０６を含む。好ましい実施形態では、ストレージ・アプライアンス１０６２は、米国ＩＢＭ社のTotalStorage Virtualization Engineである。ストレージ・アプライアンス１０６２は、メモリ１０６２２、ストライプ・サイズ属性１０６２４およびストライプ調整属性１０６２６を含む。好ましい実施形態では、メモリ１０６２２はキャッシュである。あるいは、メモリ１０６２２は、入力バッファまたは出力バッファである。ストライプ・サイズ属性１０６２４およびストライプ調整属性１０６２６は、ストレージ・アプライアンス１０６２の構成パラメータである。ＳＡＮ１０２は、ＲＡＩＤストレージ・システム１０８にホスト１０４を接続する。好ましい実施形態では、ホスト１０４は、コンピュータ・システムである。ＲＡＩＤストレージ・システム１０８は、ＲＡＩＤコントローラ１０８２および記憶装置アレイ１０８４を備える。好ましい実施形態では、記憶装置アレイ１０８４は、ディスク・アレイである。ＲＡＩＤコントローラ１０８２は、ストライピングを利用して、記憶装置アレイ１０８４全体にわたってデータを分散させる。ＲＡＩＤコントローラ１０８２は、記憶装置アレイ１０８４上に記憶されたデータ用のパリティ情報も維持する。これらの技術を用いて、ＲＡＩＤコントローラ１０８２により、単一の仮想記憶装置としての記憶装置アレイ１０８４に確実にアクセスすることができる。
【００１７】
図２は、仮想記憶装置２０の構成例を示す概略図である。この仮想記憶装置は、物理的な記憶装置ではなく、ＲＡＩＤコントローラ１０８２によってＳＡＮ１０２およびホスト１０４に提示される記憶装置アレイ１０８４を表す。仮想記憶装置２０は、それぞれに固定された大きさのデータを記憶する記憶要素である記憶ブロック２０２、２０４、２０６および２０８のシーケンシャル・リストを備える。記憶ブロック２０２、２０４、２０６および２０８はそれぞれ、それらが記憶することができるデータ・バイト数を表す記憶容量を有し、各記憶ブロック２０２、２０４、２０６および２０８の記憶容量は同じである。図３に示すように、記憶ブロック２０２、２０４、２０６および２０８は、ＲＡＩＤコントローラ１０８２によって記憶装置アレイ１０８４全体にわたってストライプされており、それを以下で説明する。
【００１８】
図３は、図１の記憶装置アレイ１０８４の構成例を示す概略図であり、それ全体にわたって、図２の記憶ブロック２０２、２０４、２０６および２０８がストライプされている。記憶装置アレイ１０８４は、個々の記憶装置３０、３２および３４を備える。仮想記憶装置２０内に記憶されるデータは、ＲＡＩＤコントローラ１０８２によって記憶装置アレイ１０８４全体にわたってストライプされる。データ・ストライプ３６は、記憶装置３０、３２および３４上にそれぞれ記憶されたストリップ３０２、３２２およびパリティ・ストリップ３４２を含む。この例の構成では、ストリップ３０２、３２２およびパリティ・ストリップ３４２はそれぞれ、２つの記憶ブロックを含む。したがって、仮想記憶装置２０は、以下のように記憶装置アレイ１０８４全体にわたってストライプされる。すなわち、記憶ブロック２０２および２０４が、記憶装置３０のストリップ３０２中に記憶され、記憶ブロック２０６および２０８が、記憶装置３２のストリップ３２２中に記憶される。さらに、ＲＡＩＤコントローラ１０８２により、記憶装置３４上にパリティ・ストリップ３４２が保持される。パリティ・ストリップ３４２は、パリティ・データを記憶する２つの記憶ブロック３４２２および３４２４を含む。このパリティ・データは、ＲＡＩＤコントローラ１０８２によって、ＸＯＲ（排他的論理和）論理演算子を用いて演算される。記憶ブロック３４２２内に記憶されたパリティ・データは、記憶ブロック２０２内に記憶されたデータと記憶ブロック２０６内に記憶されたデータのＸＯＲである。記憶ブロック３４２４内に記憶されたパリティ・データは、記憶ブロック２０４内に記憶されたデータと記憶ブロック２０８内に記憶されたデータのＸＯＲである。記憶装置３０または３２の一方に障害が生じるなどの単一障害点時に、パリティ・ストリップ３４２を用いて、ストライプ３６中で失われたストリップを再生成することができる。
【００１９】
動作においては、ホスト１０４は、ホスト１０４が仮想記憶装置２０との間でＩ／Ｏ（入出力）操作を実施することができるように、ＲＡＩＤストレージ・システム１０８とともに動作可能である。仮想記憶装置２０との間のＩ／Ｏ操作は、スイッチ１０６およびストレージ・アプライアンス１０６２によって行われる。スイッチ１０６はこのＩ／Ｏ操作を、メモリ１０６２２を使用して仮想記憶装置２０上でストライプ調整した書込み操作を行うストレージ・アプライアンス１０６２に向ける。ストレージ・アプライアンス１０６２が仮想記憶装置２０上でＩ／Ｏ操作を行うとき、ＲＡＩＤコントローラ１０８２は、そのＩ／Ｏ操作を、記憶装置アレイ１０８４上でのＩ／Ｏ操作に変換する。ＲＡＩＤストレージ・システム１０８およびＲＡＩＤコントローラ１０８２は、ＳＡＮ１０２内のスイッチ１０６およびストレージ・アプライアンス１０６２によって仮想化されていると言える。
【００２０】
図４は、ストレージ・アプライアンス１０６２が仮想記憶装置２０に書込みを行うときに開始する書込み操作４０２の構成要素を示すブロック図である。書込み操作４０２は、仮想記憶装置２０に書き込まれるデータ・ユニット４０４を含む。書込み操作４０２は、データ・サイズ・パラメータ４０６も含む。データ・サイズ・パラメータ４０６の値は、仮想記憶装置２０に書き込まれるデータ・ユニット４０４のサイズの尺度であり、仮想記憶装置２０の複数の記憶ブロックで表すことができる。書込み操作４０２は、ブロック・パラメータ４０８も含む。ブロック・パラメータ４０８の値により、仮想記憶装置２０内の記憶ブロック２０２、２０４、２０６または２０８のどれにデータ・ユニット４０４を書き込むべきなのかが識別される。個々の書込み操作用のデータ・サイズ・パラメータ４０６とブロック・パラメータ４０８の組合せを、書込み操作４０２用のパラメータ・タプル（parameter-tuple）と称する。動作においては、書込み操作４０２により、データ・ユニット４０４が、ブロック・パラメータ４０８で識別された記憶ブロックで始まる仮想記憶装置２０に書き込まれる。当業者にはよく知られているように、記憶装置内の最初の記憶ブロックに記憶ブロックの容量よりも大きいデータ・ユニットを書き込む場合、最初の記憶ブロックで始まるシーケンシャル記憶ブロックの集合体を使用してデータ・ユニットを記憶させる。
【００２１】
ストレージ・アプライアンス１０６２が、メモリ１０６２２を使用して仮想記憶装置２０にストライプ調整した書込み操作を行うには、ＲＡＩＤコントローラ１０８２に対して、適切なストライプ・サイズ属性１０６２４およびストライプ調整属性１０６２６でストレージ・アプライアンス１０６２を構成する必要がある。これらのパラメータは、ストレージ・アプライアンス１０６２が、それぞれ異なるパラメータ・タプルを有する一連の仮想記憶装置２０への書込み操作の性能を分析することによって決まる。好ましい実施形態では、これらの書込み操作は、ＲＡＩＤストレージ・システム１０８がその他の操作を行っていないときに行われる。
【００２２】
図５は、図２の仮想記憶装置２０にストライプ調整した書込み操作が行われるように、図１のストレージ・アプライアンス１０６２を構成する方法を示す流れ図である。図５の方法は、ストレージ・アプライアンス１０６２によって実施されるものであり、仮想記憶装置２０に繰り返し書込み操作を行うというものである。ステップ５００で、それぞれ異なる組合せのデータ・サイズ・パラメータ４０６およびブロック・パラメータ４０８を含む多数のパラメータ・タプルの１組をまとめる。ステップ５０２で、このパラメータ・タプルの組の各パラメータ・タプルを通して行うループを開始する。ステップ５０４で、各パラメータ・タプルごとに、ストレージ・アプライアンス１０６２が、書込みパラメータとしてパラメータ・タプルを用いて仮想記憶装置２０に書込み操作を実施する。ステップ５０６で、書込み操作の性能を測定し記録する。好ましい実施形態では、この性能の測定は、ステップ５０４の書込み操作が完了するのにかかる時間を測定することを含む。この性能測定値は、ストレージ・アプライアンス１０６２の記憶装置、たとえば（図示しない）ランダム・アクセス・メモリに記録することができる。ステップ５０８では、各パラメータ・タプルを通して行うループを継続する。ステップ５１０で、各書込み操作の性能の記録から最も性能のよい書込み操作を識別する。好ましい実施形態では、書込み操作が完了する時間が最も短いものが最も性能のよい書込み操作になるように決定する。最も性能のよい書込み操作を識別するとき、対応するパラメータ・タプルを識別する。その後、ステップ５１２で、ストライプ・サイズ１０６２４の値が、最も性能のよい書込み操作のデータ・サイズ・パラメータ４０６の値に設定され、ストライプ調整１０６２６の値が、最も性能のよい書込み操作のブロック・パラメータ４０８に設定されるようにストレージ・アプライアンス１０６２を構成する。
【００２３】
最も性能のよい書込み操作のパラメータ・タプルでストライプ・サイズ１０６２４およびストライプ調整１０６２６のパラメータでストレージ・アプライアンス１０６２を構成すると、キャッシュとしてメモリ１０６２２を使用して、ストレージ・アプライアンス１０６２により書込み操作がストライプ調整される。ストレージ・アプライアンス１０６２によるストライプ調整した書込み操作では、リード・モディファイ・ライト問題が発生せず、それによってＩ／Ｏ性能が向上する。
【００２４】
次に、図５の方法の例として、以下の表に概略を記載する１組の３つのパラメータ・タプルについて検討する。
【００２５】
【表１】
2004326759.tif 000003
【００２６】
ステップ５００で、１組のパラメータ・タプルＱ、ＲおよびＳを表１に概略を記載するように定義する。ステップ５０２で、パラメータ・タプルＱで始まる各パラメータ・タプルを通して行うループを開始する。ステップ５０４で、ストレージ・アプライアンス１０６２は、書込みパラメータとしてパラメータ・タプルＱを用いて仮想記憶装置２０に書込み操作を実施する。すなわち、仮想記憶装置２０内の記憶ブロック２０４に３ブロックのデータが書き込まれる書込み操作を行う。次に、図２を参照すると、パラメータ・タプルＱについての書込み操作により、仮想記憶装置２０内の記憶ブロック２０４、２０６および２０８にデータが書き込まれる。この書込み操作は、ＲＡＩＤコントローラ１０８２によって、記憶装置アレイ１０８４全体にわたる書込み操作に変換される。次に、図３を参照すると、パラメータ・タプルＱについての書込み操作により、記憶装置アレイ１０８４内のストリップ３０２の記憶ブロック２０４ならびにストリップ３２２の記憶ブロック２０６および２０８にデータが書き込まれる。その結果、ストライプ３６全体には書き込まれず（記憶ブロック２０２には書き込まれない）、リード・モディファイ・ライト処理を用いて、記憶ブロック２０４、２０６および２０８の変更を反映するようにパリティ・ストリップ３４２を更新しなければならない。パリティ・ストリップを更新すると、パラメータ・タプルＱについての書込み操作を完了するのに必要な時間が増加するように作用し、そのため、ステップ５０６で測定し記録する書込み操作の性能が低下する。ステップ５０８で、ループが、以下に概略を説明する次のパラメータ・タプルＲに進む。
【００２７】
ステップ５０４で、ストレージ・アプライアンス１０６２は、書込みパラメータとしてパラメータ・タプルＲを用いて仮想記憶装置２０に書込み操作を実施する。すなわち、仮想記憶装置２０内の記憶ブロック２０２に２ブロックのデータが書き込まれる書込み操作を行う。次に、図２を参照すると、パラメータ・タプルＲについての書込み操作により、仮想記憶装置２０内の記憶ブロック２０２および２０４にデータが書き込まれる。この書込み操作は、ＲＡＩＤコントローラ１０８２によって、記憶装置アレイ１０８４全体にわたる書込み操作に変換される。次に、図３を参照すると、パラメータ・タプルＲについての書込み操作により、記憶装置アレイ１０８４内のストリップ３０２の記憶ブロック２０２および２０４にデータが書き込まれる。その結果、ストライプ３６全体には書き込まれず（記憶ブロック２０６および２０８には書き込まれない）、リード・モディファイ・ライト処理を用いて、記憶ブロック２０２および２０４の変更を反映するようにパリティ・ストリップ３４２を更新しなければならない。パリティ・ストリップを更新すると、パラメータ・タプルＲについての書込み操作を完了するのに必要な時間が増加するように作用し、そのため、ステップ５０６で測定し記録する書込み操作の性能が低下する。ステップ５０８で、ループが、以下に概略を説明する次のパラメータ・タプルＳに進む。
【００２８】
ステップ５０４で、ストレージ・アプライアンス１０６２は、書込みパラメータとしてパラメータ・タプルＳを用いて仮想記憶装置２０に書込み操作を実施する。すなわち、仮想記憶装置２０内の記憶ブロック２０２に４ブロックのデータが書き込まれる書込み操作を行う。次に、図２を参照すると、パラメータ・タプルＳについての書込み操作により、仮想記憶装置２０内の記憶ブロック２０２、２０４、２０６および２０８にデータが書き込まれる。この書込み操作は、ＲＡＩＤコントローラ１０８２によって、記憶装置アレイ１０８４全体にわたる書込み操作に変換される。次に、図３を参照すると、パラメータ・タプルＳについての書込み操作により、記憶装置アレイ１０８４内のストリップ３０２の記憶ブロック２０２および２０４ならびにストリップ３２２の記憶ブロック２０６および２０８にデータが書き込まれる。その結果、ストライプ３６全体に書き込まれ、ＲＡＩＤコントローラ１０８２によってパリティ・ストリップ３４２が計算される。パラメータ・タプルＳについての書込み操作ではリード・モディファイ・ライト問題は生じないので書込み操作の性能は高く、それをステップ５０６で測定し記録する。３つのパラメータ・タプルＱ、ＲおよびＳがすべて処理されたので、ステップ５０８でループが終了する。
【００２９】
ステップ５１０で、各書込み操作の性能の記録から最も性能のよい書込み操作を識別する。この例では、パラメータ・タプルＱおよびＲについての書込み操作ではリード・モディファイ・ライト問題が生じ、その結果、性能が低くなる。パラメータ・タプルＳについての書込み操作ではリード・モディファイ・ライト問題が発生せず、その結果、完了するのにかかる時間が最も短いので、性能が最も高い書込み操作になる。その後、ステップ５１２で、ストライプ・サイズ１０６２４の値が、最も性能のよい書込み操作のデータ・サイズ・パラメータ４０６の値に設定され、ストライプ調整１０６２６の値が、最も性能のよい書込み操作のブロック・パラメータ４０８に設定されるようにストレージ・アプライアンス１０６２が構成される。すなわち、ストライプ・サイズ１０６２４の値は４ブロック・サイズに設定され、ストライプ調整１０６２６の値は仮想記憶装置２０内のブロック２０２に設定される。
【００３０】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３１】
（１）複数のＩ／Ｏ操作の性能特性をテストすることによって最適なＩ／Ｏ構成を決定する仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置であって、前記Ｉ／Ｏ操作がそれぞれ、前記ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含み、前記Ｉ／Ｏ構成がデータ長およびデータ調整を含む、装置。
（２）前記メモリがキャッシュである、上記（１）に記載の装置。
（３）前記メモリが入力バッファである、上記（１）に記載の装置。
（４）前記メモリが出力バッファである、上記（１）に記載の装置。
（５）前記性能特性が応答時間である、上記（１）に記載の装置。
（６）仮想ＲＡＩＤコントローラとともに動作可能なメモリを有する装置を動作させる方法であって、
前記ＲＡＩＤコントローラにデータ・ブロックを書き込むことを含む複数のＩ／Ｏ操作を実施するステップと、
前記複数のＩ／Ｏ操作の性能特性をテストするステップと、
前記テスト・ステップに応答して、データ長およびデータ調整を含む、後続のＩ／Ｏ操作に最適なＩ／Ｏ構成を設定するステップとを含む、方法。
（７）前記ＲＡＩＤコントローラが他の操作を行っていないときに行う、上記（６）に記載の方法。
（８）前記メモリがキャッシュである、上記（６）に記載の方法。
（９）前記メモリが入力バッファである、上記（６）に記載の方法。
（１０）前記メモリが出力バッファである、上記（６）に記載の方法。
（１１）前記性能特性が応答時間である、上記（６）に記載の方法。
（１２）データ処理システム上で実行されるときに、上記（６）に記載の方法を実施するように前記データ処理システムに命令する、コンピュータ可読記憶媒体上に記憶されたコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品。
【図面の簡単な説明】
【００３２】
【図１】本発明の好ましい実施形態におけるＳＡＮ（ストレージ・エリア・ネットワーク）の構成を示す概略図である。
【図２】仮想記憶装置の構成例を示す概略図である。
【図３】図１の記憶装置アレイの構成例を示す概略図であり、それ全体にわたって図２の記憶ブロックがストライプされる。
【図４】ストレージ・アプライアンスが仮想記憶装置に書込みを行うときに開始する書込み操作の構成要素を示すブロック図である。
【図５】図２の仮想記憶装置にストライプ調整した書込み操作が行われるように、図１のストレージ・アプライアンスを構成する方法を示す流れ図である。
【符号の説明】
【００３３】
２０  仮想記憶装置
３０  記憶装置
３２  記憶装置
３４  記憶装置
３６  データ・ストライプ
１０２  ストレージ・エリア・ネットワーク（ＳＡＮ）
１０４  ホスト
１０６  スイッチ
１０８  ＲＡＩＤストレージ・システム
２０２  記憶ブロック
２０４  記憶ブロック
２０６  記憶ブロック
２０８  記憶ブロック
３０２  ストリップ
３２２  ストリップ
３４２  パリティ・ストリップ
４０２  書込み操作
４０４  データ・ユニット
４０６  データ・サイズ・パラメータ
４０８  ブロック・パラメータ
１０６２  ストレージ・アプライアンス
１０８２  ＲＡＩＤコントローラ
１０８４  記憶装置アレイ
３４２２  記憶ブロック
３４２４  記憶ブロック
１０６２２  メモリ
１０６２４  ストライプ・サイズ属性
１０６２６  ストライプ調整属性
【図１】
2004326759.tif 000004
【図２】
2004326759.tif 000005
【図３】
2004326759.tif 000006
【図４】
2004326759.tif 000007
【図５】
2004326759.tif 000008