(57)【特許請求の範囲】
【請求項１】
複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、ｍ個（ｍ≧１）の通常データと前記通常データを回復するためのn個（n≧１）の冗長データによりデータグループを構成し、該データグループ内の通常データ及び冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するために用いられる中間データを作成する手段と、
前記中間データと、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
該記憶装置上のレコードの状態を示す情報と、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
該記憶装置が最初に見つけた空き状態のレコードに前記更新後冗長データを書き込む手段とを有することを特徴とする記憶装置システム。
【請求項２】
請求項１記載の記憶装置システムであって、
前記制御装置は更に、
前記更新後通常データを該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から受信した前記更新後通常データを書き込む該記憶装置上のレコードを決定する手段を有することを特徴とする記憶装置システム。
【請求項３】
請求項２記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新後通常データによって更新される更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に該更新前通常データの送信を要求する手段とを有し、
前記中間データを作成する手段は、前記更新前通常データと前記更新後通常データとから、前記中間データを作成し、
前記複数台の記憶装置は各々、
前記制御装置からの要求に従って、前記更新前通常データを読み出してこれを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。
【請求項４】
請求項３記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
作成された前記更新後冗長データを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から受信した前記更新後冗長データを書き込む該記憶装置上のレコードを決定する手段を有することを特徴とする記憶装置システム。
【請求項５】
複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、ｍ個（ｍ≧１）の通常データと前記通常データを回復するためのn個（n≧１）の冗長データによりデータグループを構成し、該データグループ内の前記通常データ及び前記冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
記憶装置上のレコードの状態を示す情報と、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するための中間データを作成する手段と、
前記中間データ、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレス、及び前記更新後冗長データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
前記制御装置から通知された、空き状態のレコード及び前記更新前冗長データが格納されているレコードの中から、最初に見つけたレコードに前記更新後冗長データを書き込む手段とを有することを特徴とする記憶装置システム。
【請求項６】
請求５記載の記憶装置システムであって、
前記制御装置は更に、
前記更新後通常データと、該更新後通常データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレス及び前記更新後通常データによって更新される更新前通常データを格納しているレコードのアドレスを、該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から指定されたレコードの候補から、最初に見つけたレコードに前記更新後通常データを書き込む手段を有することを特徴とする記憶装置システム。
【請求項７】
請求項６記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に該更新前通常データを送信するよう要求する手段とを有し、
前記中間データを作成する手段は、前記更新後通常データと前記更新前通常データとから前記中間データを作成し、
前記複数台の記憶装置は各々更に、
前記制御装置からの要求に基づいて、前記更新前通常データを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。
【請求項８】
請求項７記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに、前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
作成された前記更新後冗長データと、該更新後冗長データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレス及び前記更新前冗長データを格納しているレコードのアドレスを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から指定されたレコードの候補から、最初に見つけたレコードに前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。
【請求項９】
複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、ｍ個（ｍ≧１）の通常データと前記通常データを回復するためのn個（n≧１）の冗長データによりデータグループを構成し、該データグループ内の前記通常データ及び前記冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
記憶装置上のレコードの状態を示す情報と、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するために用いられる中間データを作成する手段と、
前記更新後冗長データを記憶装置が作成するのに要する時間を考慮して、該更新後冗長データを格納する空き状態のレコードを決定する手段と、
前記中間データ、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレス、及び前記更新後冗長データを書き込むべきレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
前記制御装置から通知された、前記更新後冗長データを書き込むべきレコードに、作成した前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。
【請求項１０】
請求項９記載の記憶装置システムであって、
前記制御装置は更に、
記憶装置から受信した読み書きヘッドの位置に基づいて、前記更新後通常データを格納すべきレコードを決定する手段と、
前記更新後通常データと、決定された該更新後通常データを格納すべきレコードのアドレスとを、該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
該記憶装置の読み書きヘッドの位置を前記制御装置に通知する手段と、
前記制御装置から指定されたレコードに、前記更新後通常データを書き込む手段を有することを特徴とする記憶装置システム。
【請求項１１】
請求項１０記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新後通常データによって更新される更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に、該更新前通常データを送信するよう要求する手段とを有し、
前記中間データを作成する手段は、前記更新後通常データと前記更新前通常データとから前記中間データを作成し、
前記複数台の記憶装置各々は更に、
前記制御装置からの要求に従って、前記更新前通常データを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。
【請求項１２】
請求項１１記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
記憶装置から受信した記憶装置の読み書きヘッドの位置に基づいて、前記更新後冗長データを格納すべきレコードを決定する手段と、
作成された前記更新後冗長データと、決定された該更新後冗長データを格納すべきレコードのアドレスとを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数の記憶装置の各々は更に、
前記制御装置から指定されたレコードに、前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムにおける記憶装置サブシステムに係り、特に、キャッシュメモリを有する記憶装置サブシテムの高性能化、高信頼化に関する。
【０００２】
【従来の技術】
計算機システムにおいて用いられる記憶装置サブシステムの一つとして、従来より、磁気ディスクを記憶媒体とするディスクシステムが用いられている。このようなディスクシステムの高性能化、高信頼化を実現するための技術として、例えば、エー．シー．エム．シグモッド コンファレンス プロシーディング，1988年，6月,１０９−１１６ページに掲載されているパターソン等の論文（D. Patterson et al : A Case for Redundant Arrays of Inexpensive Disks(RAID), ACM SIGMOD conference proceeding, Chicago, IL, June 1-3,1988, pp.109-116、以下、パターソン論文と呼ぶ）に開示されるようなディスクアレイシステムが知られている。ディスクアレイシステムでは、物理的には複数のディスク装置を、処理装置に対しては１台の論理的なディスク装置に見せかけることで高性能化を実現している。また、データを格納したディスク装置に障害が発生した場合、障害が発生したディスク装置に記憶されているデータの回復を行うことを可能とする冗長データをデータを記憶したディスク装置とは別のディスク装置に格納しておくことにより高信頼化を達成している。
【０００３】
パターソン論文では、ディスクアレイシステム上の冗長データの配置方法について、以下に述べるいくつかの技術が開示されている。第１のデータ配置方法は、まったく同じ内容のデータを２つのディスク装置に格納する方法であり、ＲＡＩＤ１（レイド１）、あるいは、２重書きと呼ばれる。第２のデータ配置方法は、処理装置装置が、論理的なディスク装置との間で、リード／ライト処理を行う際の、リード／ライト単位となるデータの集合であるレコードを分割して、複数のディスク装置に格納する方法である。このようなデータ配置方法は、ＲＡＩＤ３と呼ばれる。ＲＡＩＤ３では、レコードを分割したそれぞれの分割単位から冗長データが作成される。また、第３のデータ配置方法では、ＲＡＩＤ３のようにレコードを分割せずに、１つのレコードは１つのディスク装置に格納し、別々のディスク装置に格納された複数のレコードから冗長データを作成する。このようなデータの配置方法には、ＲＡＩＤ４、ＲＡＩＤ５と呼ばれるものがある。
【０００４】
一般に、処理装置が直接読み書きするデータを格納したレコードは、データレコードと呼ばれ、冗長データを格納したレコードは、パリティレコードと呼ばれる。また、複数のディスク装置に、データを分割する単位をストライプと呼んでいる。ストライプは、レコードの集合であり、データレコードで構成されるストライプを、データストライプと呼び、パリティレコードで構成されるストライプを、パリティストライプと呼ぶ。通常、ディスクアレイシステムでは、１つ以上のｍ個のデータストライプから１つ以上ｎ個のパリティストライプが作成される。以下、これらｍ＋ｎ個のストライプの集合をパリティグループと呼ぶ。これらｍ＋ｎ個のストライプは、別々のディスク装置に格納される。パリティグループ内のパリティストライプの数がｎ個であれば、ｎ台までのディスク装置に障害が発生しても、そのディスク装置内のデータを回復することが可能である。
【０００５】
データレコードが書き替えられると、これに伴いパリティレコードも書き替える必要が生ずる。例えば、パリティグループ内の１つのデータレコードだけが書き替えられた場合には、書き変えられた内容と、そのデータレコードの更新前の値、パリティレコードの更新前の値とから、パリティレコードの更新値が作成される。このようなパリティレコードの更新処理を効率よく行いシステムの高性能化を実現する技術として、次のような技術がある。
【０００６】
例えば、特開平４−２４５３４２号公報に開示される技術では、データレコードに対する更新処理をキャッシュ上で実行し、パリティレコードの更新値の作成、データレコード、パリティレコードのディスク装置への書き込みは後から実行する。パリティレコードの更新値の作成を開始する前に、同一パリティグループ内のデータレコードにライト処理が発生した場合、複数のライト処理に対して、パリティレコードの更新値の作成をまとめて実行することにより高性能化を実現している。
【０００７】
また、ＰＣＴ  ＷＯ  ９１／２００２５号には、ディスクアレイにおけるライト処理を効率化するために動的マッピングという技術が開示されている。この技術は、ライト処理が発生するとそのデータレコードを書き込むディスク上の位置を変えるというものである。具体的には、ライトされたデータだけで、パリティグループを構成し、これらのデータからパリティデータを作成し、ディスクアレイを構成するディスクに書き込みを行うというものである。ただし、以上の処理を実行するためには、パリティグループ全体のデータストライプを空き領域にする必要がある。
【０００８】
一方、電子情報通信学会技術研究報告、ＤＥ９３−４５（茂木他：仮想ストライピングによるＲＡＩＤ５型ディスクアレイの性能評価、1993年 9月、信学会技報Vol.25-No.251、pp.69-75、以下、茂木論文と呼ぶ）ではさらに効率的な技術が開示されている。本論文では、パリティグループそのもののディスク上の位置を動的に変更するために、より効率的にパリティグループ全体のデータストライプを空き領域にすることができる。
【０００９】
さらに、特開平５−４６３２４号公報には、パリティレコードの更新に必要な情報をパリティレコードを格納したディスク装置に転送し、ディスク装置側でパリティレコードの更新値を作成することで、データ更新時に発生する制御装置とディスク装置との間のデータ転送の回数を削減し、ディスクアレイシステムの高性能化を図る技術が開示されている。
【００１０】
一方、特開平４−２３０５１２号公報には、ディスク装置上のデータストライプ、パリティストライプに、空き状態のレコードを適当な割合で確保し、パリティレコードの更新値を元々の場所ではなく、空き領域に書き込むことにより、書き込み時間を短縮する技術が開示されている。ここに示されている空き領域は、先の、ＰＣＴ  ＷＯ  ９１／２００２５号や、茂木論文で開示されている空き領域とは異なるものである。特開平４−２３０５１２号公報に開示される技術では、パリティレコードの更新値の生成が終了した後、パリティレコード、データレコードの更新値を書き込む際、元々の場所でなく、空き領域に、更新値を書き込む。これにより、パリティレコードの元々の格納場所は、空き領域になる。これに対して、ＰＣＴ  ＷＯ  ９１／２００２５号、あるいは茂木論文で開示されている技術では、パリティグループ全体が空き領域になっている領域に対し、新たなライトデータだけで新たにパリティグループを構成して、そのパリティグループ全体をディスク装置に書き込む。元々データを格納していた場所は空き領域として管理する。したがって、両者の間には、次の２つの点で本質的な相違がある。
【００１１】
（１）特開平４−２３０５１２号公報の技術では、空き領域の選択がパリティレコードの更新値の生成後であるのに対し、ＰＣＴ  ＷＯ  ９１／２００２５、あるいは茂木論文の技術では、パリティレコードの更新値の生成の前、すなわち、書き込みを行うパリティグループを選択した時に、ディスク装置のどの領域にデータを書き込むのかが、決まったことになる。
【００１２】
（２）特開平４−２３０５１２号公報の技術では、１つのパリティグループを構成するデータレコード、パリティレコードは変化しない。他方、ＰＣＴ  ＷＯ  ９１／２００２５、あるいは茂木論文の技術では、１つのパリティグループを構成するデータレコードの集合は動的に変化する。
【００１３】
【発明が解決しようとする課題】
特開平４−２３０５１２号公報に開示された技術では、ディスクアレイを制御する制御装置が、ディスク装置に、データレコードの読み込み要求、書き込み要求、パリティレコードの読み込み要求、書き込み要求と計４回の要求を発行する。さらに、パリティレコードの更新値も制御装置が生成する。例えば、制御装置には、更新前のデータレコードと更新後のデータレコードが用意されている状況で、ディスク装置内で、記憶媒体から更新前のパリティレコードの読み込みが完了したとする。当然、ディスク装置は、媒体から読み込んだ更新前のパリティレコードを送ろうとする。しかし、通常、制御装置とディスク装置の間のデータ転送路は、他のディスク装置と共有されていることが多いため、データ転送路が占有されていて、直ちに、更新前のパリティレコードを送る処理には入れない可能性がある。また、制御装置に更新前のパリティレコードが送られてから、パリティレコードの更新値を作成処理が開始するまでにも、制御装置が別の仕事を行っているため、時間を要する可能性がある。さらに、パリティレコードの更新値の生成が完了した後、この値をディスク装置に送るまでにも、ディスク装置、データ転送路の共有資源を確保する必要があり、競合時には待ち時間が発生する可能性がある。
【００１４】
以上のように、制御装置で、パリティレコードの更新値を作成し、この更新値をディスク装置に送るという方法をとったのでは、更新前の値を読み出してから、更新後の値を書き込むまでに、かなりの時間を要する可能性が充分あることになる。このため、更新前の値のすぐ後に、空いたレコードが存在しても、更新後の値がディスク装置に送られてくる前に、ヘッドが空いたレコード上を、通過してしまうので、性能向上効果が得られにくくなる。このため、特開平４−２３０５１２号公報の技術では、原理的に、読み出した直後の領域が空き領域であっても、その領域に、データレコードの更新値を書き込むことは実質的に困難である。
【００１５】
一方、特開平５−４６３２４の発明では、ディスク装置に、パリティレコードの更新値を作成する機能をもたせることで、制御装置の負荷はある程度分散させることができる。しかし、制御装置の負荷を軽減するという点では、検討の余地を残していた。また、パリティレコードの更新後の値は、更新前の値を読み出した場所に書き込まれるため、更新前の値を読み出してから、更新後の値を書き込むまでに、最低でもディスク１回転分の時間を必要としていた。
【００１６】
本発明の目的は、パリティレコードの更新時に、その更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮し、記憶装置サブシステムの性能向上を図ることにある。
【００１７】
また、本発明の他の目的は、パリティレコードの更新に伴う制御装置の負荷を軽減することにある。
【００１８】
【課題を解決するための手段】
上記目的を達成するために、本発明の記憶装置サブシステムでは、制御装置は、更新前のデータレコードと更新後のデータレコードから生成したパリティレコードの更新値を得るための中間値をディスク装置に送る。ディスク装置では、更新前のパリティレコードを読み出すと、制御装置から受け取った中間値と読み出した更新前のパリティレコードの値から、パリティレコードの更新値を生成する。デイスク装置内部では、とくに競合資源がないため、すぐにこの処理の実行に入れる。さらに、パリティレコードの更新値を生成した後、空いた領域があれば、その領域に、生成したパリティレコードの更新値を書き込む。具体的には、例えば、パリティレコードを読み出しながら、パリティレコードの更新値を生成する回路をディスク装置内に設ける。これにより、更新前のパリティレコードの読み出しを行った、直後の領域に書き込みを行うことができ、更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮することができる。
【００１９】
一方、データレコードに関しては、制御装置は、ディスク装置に、データレコードの更新値を送る。ディスク装置は、更新前のデータレコードを読み出し、空いた領域に、データレコードの更新値を書き込む。この場合も、特に競合資源はないため、空き領域があれば、読み出した直後の領域に、データレコードの更新値を書き込むことができる。したがって、この場合も、更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮することができる。
【００２０】
このように、ディスク装置内で、更新前の値を読み出してから、更新後の値を書き込むまでに必要な処理を実行させることにより、極めて短時間で更新値を書き込むことができる。
【００２１】
また、上記他の目的を達成するために、本発明の記憶装置サブシステムは、制御装置が、処理装置からライト要求を受けると、更新後のデータとともに更新前のデータをパリティレコードを格納するディスク装置に送る。パリティレコードを格納するディスク装置では、更新前のパリティレコードを読み出し、制御装置から受け取った更新前後のデータ、及び読み出した更新前のパリティレコードの値からパリティレコードの更新値を作成する。
【００２２】
このように、制御装置から更新前後のデータをパリティレコードを格納するディスク装置に転送してディスク装置側でパリティレコードの更新値を作成することで、制御装置の負荷をより軽減することができる。
【００２３】
【発明の実施の形態】
以下、本発明の実施の態様につき、実施例に従い説明する。
【００２４】
図２は、本発明が適用される計算機システムの一実施例における構成を示すブロック図である。計算機システムは、処理装置１３００、制御装置１３０５、および、複数台のディスク装置１３０４により構成する。処理装置１３００は、ＣＰＵ１３０１、主記憶１３０２、および、チャネル１３０３により構成される。制御装置１３０５は、処理装置１３００からのリード／ライト要求にしたがって、処理装置１３００と、ディスク装置１３０４の間で、転送処理を実行する。制御装置１３０５は、１つ以上のディスクアレイ制御プロセッサ１３１０、キャッシュメモリ（以下、単にキャッシュと略す）１３０８、ディレクトリ１３０９、不揮発性メモリ１４００、および、不揮発性メモリ管理情報１４０１を含む。キャッシュ１３０８は、ディスク装置１３０４の中のアクセス頻度の高いデータをロード格納する。ディレクトリ１３０９には、キャッシュ１３０８の管理情報を格納する。不揮発性メモリ１４００は、不揮発の媒体であり、キャッシュ１３０８と同様に、ディスク装置１３０４の中のアクセス頻度の高いデータをロードしておく。不揮発性メモリ管理情報１４０１も不揮発の媒体であり、不揮発性メモリ１４００の管理情報を格納する。なお、キャッシュ１３０８や、ディレクトリ１３０９が不揮発化されていてもよい。さらに、制御装置１３０５が、不揮発性メモリ１４００、および、不揮発性メモリ管理情報１４０１を含まなくてもよい。ディスクアレイ制御プロセッサ１３１０は、制御装置１３０５内で、処理装置１３００からのリード／ライト要求を受け取り、キャッシュ１３０８等を利用し、処理装置１３００とディスク装置１３０４の間でデータの転送処理を実行する機能をもつ。
【００２５】
制御装置１３０５は、処理装置１３００からのライト要求を、キャッシュ１３０８、あるいは、キャッシュ１３０８と不揮発性メモリ１４００にデータを格納した段階で完了させる。ディスク装置１３０４へのデータの書き込みは、後から、制御装置１３０５が実行する。この処理をライトアフタ処理と呼ぶ。
【００２６】
ディスク装置１３０４は、ディスク制御プロセッサ１３１１、記憶媒体１３１２、演算回路１３１４、読み書きヘッド１３１５を含む。ディスク制御プロセッサ１３１１は、読み書きヘッド１３１５を利用して、記憶媒体１３１２と制御装置１３０５の間のデータ転送を制御する。バッファ１３１３には、記憶媒体１３１２と制御装置１３０５の間で転送されるデータ等を格納する。演算回路１３１４は、記憶媒体１３１２から読み出したデータに所定の演算を施すために使用する。なお、演算をディスク制御プロセッサ１３１１により実行することで、演算回路１３１４を不要とすることができる。
【００２７】
通常、処理装置１３００がディスク装置１３０４との間で、リード／ライトするデータの単位は、レコード１７０１と呼ばれる。図３は、本実施例におけるレコードの考え方をまとめたものである。処理装置１３００が制御装置との間でリード／ライトするレコードをデータレコード１７００と呼ぶ。一方、パリティレコード１７０２は、ディスク装置１３０４に障害が発生し、データレコード１７００の内容が消失した時、その消失した内容を回復する処理に用いるレコードである。この場合、データレコード１７００の値が変更されると、これに対応して、パリティレコード１７０２の内容も変更する必要が生ずる。なお、ここでは、ｍ個のデータレコード１７００から、ｎ個のパリティレコード１７０２を生成するものとする。これにより、ｎ個のデータレコード１７００の内容が失われても回復可能である。
【００２８】
ディスク装置１３０４上に格納されたレコードを物理レコードと呼ぶ。本実施例においては、ディスク装置１３０４上に格納されている物理レコードには、物理データレコード１５００、物理パリティレコード１５０１、空きレコード１５０３の３種類が存在する。物理データレコード１５００は、データレコード１７００の内容を格納した物理レコード１５０２である。一方、物理パリティレコード１５０１は、パリティレコード１７０２の内容を格納する。本実施例では、性能向上のために、ディスク装置１３０４において、空いた状態の領域が必要になる。空きレコード１５０３は、そのための物理レコードである。
【００２９】
図４、図５は、本実施例におけるディスクアレイでのパリティグループの構成である。本実施例では、新しい値をディスク装置１３０４に書き込む際、それまで値を格納していた物理データレコード１５００や物理パリティレコード１５０１ではなく、空きレコード１５０３に格納する。ただし、性能向上のためには、もともとの物理データレコード１５００や物理パリティレコード１５０１の近くの空きレコード１５０３を選択する必要がある。以上から、本実施例では、論理ストライプと物理ストライプ１６１２という考え方を用いる。なお、論理ストライプと物理ストライプをあわせてストライプと呼ぶ。論理ストライプは、データレコード１７００、あるいは、パリティレコード１７０２の集合である。データレコード１７００の集合の方を、論理データストライプ１６１３と呼び、パリティレコード１７０２の集合の方を、論理パリティストライプ１６１４と呼ぶ。物理ストライプ１６１２には、物理データストライプ１６１５、物理パリティストライプ１６１６がある。物理データストライプ１６１５は、物理データレコード１５００と空きレコード１５０３の集合であり、物理パリティストライプ１６１６は、物理パリティレコード１５０１と空きレコード１５０３の集合である。論理ストライプと物理ストライプは１対１に対応する。データレコード１７００を新たに空きレコード１５０３に格納する場合、そのデータレコード１７００を含む論理ストライプに対応する物理ストライプ内の空きレコード１５０３を選択する。これは、パリティレコード１７０２についても同様である。新たに値を格納された物理レコードは、物理データレコード１５００、あるいは、物理パリティレコード１５０１となり、それまで物理データレコード１５００、あるいは、物理パリティレコード１５０１だった物理レコードが空きレコード１５０３となる。
【００３０】
本実施例では、ｍ個の論理データストライプ１６１３とｎ個の論理パリティストライプ１６１４が、論理ストライプグループ１６１７を構成する。同様に、ｍ個の物理データストライプ１６１５とｎ個の物理パリティストライプ１６１６が、物理ストライプグループ１６１８を構成する。なお、同一物理ストライプグループ１６１８内の物理ストライプは、異なったディスク装置１３０４に割り当てる。論理ストライプグループ１６１７と物理ストライプグループ１６１８をあわせてストライプグループと呼ぶ。図４では、各物理ストライプの長さは等しい。確かに、複数の物理パリティストライプ１６１６を常に同一のディスク装置１３０４に格納する場合には、各物理ストライプの長さは等しくする必要がある。しかし、物理パリティストライプ１６１６を配置するディスク装置を循環させる場合、図５に示すように、物理パリティストライプ１６１６と物理データストライプ１６１５の長さを変えても問題ない。さらに、物理パリティストライプ１６１６と物理データストライプ１６１５のどちらか一方は、空きレコード１５０３をまったく設けなくともよい。空きレコード１５０３をまったく設けない場合、データレコード１７００、パリティレコード１７０２は常に同じ物理レコードに値を書き込むことになる。物理パリティストライプ１６１６と物理データストライプ１６１５の両方に、空きレコード１５０３をまったく設けないとすると本発明の意味がなくなるため、少なくとも物理パリティストライプ１６１６と物理データストライプ１６１５のどちらか一方は、空きレコード１５０３をもつものとする。
【００３１】
図１は、本実施例の記憶装置サブシステムの概要を表す機能ブロック図である。
【００３２】
パリティレコード１７０１の更新値は、データレコード１７００の更新値、データレコード１７００の更新前の値、および、パリティレコード１７０１の更新前の値により、作成することができる。
【００３３】
制御装置側１３０５内のライト要求受付部１１０は、処理装置１３００からライト要求を受け付け、当該ライト要求において受け取ったデータレコード１７００の更新値を、更新後データ１００として、キャッシュ１３０８、不揮発メモリ１４００に格納する。格納が完了すると、制御装置１３０５は、当該ライト要求の完了を処理装置に報告する。なお、本発明は、以下の処理を、当該ライト要求の完了を報告する前に実行しても有効である。
【００３４】
次に、制御装置１３０５内のデータデステージ部１１１とディスク装置１３０４内のデータ書き込み部１１２の処理について説明する。データデステージ部１１１は、データレコード１７００の更新前の値である更新前データ１０１がキャッシュ１３０８に存在するかチェックする。存在する場合、更新前データ１０１と更新後データ１００からパリティレコードを作成するための中間値、すなわち、パリティ中間値１０２を作成し、キャッシュ１３０８、不揮発メモリ１４００に格納する。この後、データデステージ部１１１は、更新後データ１００をディスク装置１３０４に書き込むよう、要求を発行する。物理データストライプ１６１５が空きレコード１５０３を含む場合、ディスク装置１３０４内のデータ書き込み部１１２は、更新後データ１００を、もともと割り当てられていた物理データレコード１５００か、空きレコード１５０３に書き込めばよいことになる。これにより、ディスク装置１３０４のアクセス時間を短縮させることができる。
【００３５】
更新前データ１０１が、キャッシュ１３０８に存在しない場合、データデステージ部１１１は、ディスク装置１３０４に対し、更新前データ１０１に対応する物理データレコード１５００から更新前データ１０１を読み出し、さらに、更新後データ１００を、空きレコード１５０３に書き込むよう要求する。ディスク装置１３０４内のデータ書き込み部１１２は、更新後データ１００を任意の空きレコード１５０３に書き込めるため、ディスク装置１３０４のアクセス時間を短縮させることができる。さらに、データ書き込み部１１２は、更新前データ１０１と更新後データ１００からパリティ中間値１０２を作成し、パリティ中間値１０２を制御装置１３０５に送る。制御装置１３０５のデータデステージ部１１１は、受け取ったパリティ中間値１０２をキャッシュ１３０８、不揮発メモリ１４００に格納する。以上は、ディスク装置１３０４が、パリティ中間値１０２を作成する場合の説明であるが、パリティ中間値１０２は、制御装置１３０５が作成してもよい。この場合、ディスク装置１３０４のデータ書き込み部１１２は、読み出した更新前データ１０１を制御装置１３０４に送る。制御装置１３０５のデータデステージ部１１１は、更新前データ１０１と更新後データ１００とからパリティ中間値１０２を作成し、キャッシュ１３０８、不揮発メモリ１４００に格納する。
【００３６】
次に、制御装置１３０５内のパリティデステージ部１１３とディスク装置１３０４内のパリティ書き込み部１１４の処理について説明する。パリティデステージ部１１３は、パリティレコード１７００の更新前の値である更新前パリティ１０３がキャッシュ１３０８に存在するかチェックする。存在する場合、更新前パリティ１０３とパリティ中間値１０２からパリティレコード１７０２の更新値、すなわち、更新後パリティ１０４を作成し、キャッシュ１３０８、不揮発メモリ１４００に格納する。この後、パリティデステージ部１１３は、更新後パリティ１０４をディスク装置１３０４に書き込むよう、要求を発行する。物理パリティストライプ１６１６が空きレコード１５０３を含む場合、ディスク装置１３０４内のパリティ書き込み部１１４は、更新後パリティ１０４を、もともと割り当てられていた物理パリティレコード１５０１か、空きレコード１５０３に書き込めばよいことになる。これにより、ディスク装置１３０４のアクセス時間を短縮させることができる。
【００３７】
更新前パリティ１０３が、キャッシュ１３０８に存在しない場合、パリティデステージ部１１３は、ディスク装置１３０４に対し、更新前パリティ１０３に対応する物理パリティレコード１５０１から更新前パリティ１０３を読み出し、読み出した更新前パリティ１０３と制御装置１３０５から送ったパリティ中間値１０２から更新後パリティ１０４を作成し、さらに、更新後パリティ１０４を、空きレコード１５０３、あるいは、もともとの更新前パリティ１０１に対応する物理データレコードに書き込むよう要求する。ディスク装置１３０４内のパリティ書き込み部１１４は、更新後パリティ１０４を、任意の空きレコード１５０３に書き込めるため、ディスク装置１３０４のアクセス時間を短縮させることができる。
【００３８】
図６は、キャッシュ１３０８の構造図である。キャッシュ１３０８は、複数のセグメント２０００に分割されている。各セグメント２０００には、論理データストライプ１６１３、あるいは、論理パリティストライプ１６１４が格納される。セグメントポインタ２００１は、未割り当て状態にあるセグメント２０００を結合する。不揮発メモリ１４００の構造は、キャッシュ１３０８と同様でよいため、説明を省略する。
【００３９】
図７は、ディレクトリ１３０９の構造図である。ディレクトリ１３０９は、マッピング情報２１００、空きレコードビットマップ２１０１、キャッシュ割当情報２１０２、セグメント管理情報２１０３、空きセグメントキューポインタ２１０４、空きセグメント管理情報キューポインタ２１０５から構成される。なお、セグメント管理情報２１０３は、キャッシュ１３０８内のセグメント２０００の数だけ存在する。ただし、後述するように、セグメント２０００に１対１に対応するわけではない。なお、マッピング情報２１００、空きレコードビットマップ２１０１は、ディスク装置１３０４にもつ場合もあり、この時には、制御装置１３０５は、マッピング情報２１００、空きレコードビットマップ２１０１を持つ必要はない。以下、各情報を詳細に説明する。なお、不揮発メモリ管理情報１４０１の構造は、ディレクトリ１３０９と同様であるため、詳細な説明は行わない。
【００４０】
図８は、マッピング情報２１００の構造図である。マッピング情報２１００は、論理データレコード１７００、及び、論理パリティレコード１７０２が、どの物理データレコード１５００、あるいは、どの物理パリティレコード１５０１に割り当ててあるかを表している。レコードエントリ２２００は、データレコード１７００、あるいは、パリティレコード１７０２に対応して存在する情報である。レコードエントリ２２００には、対応するレコードが割り当ててある物理レコードの物理レコードアドレスが設定される。
【００４１】
図９は、空きレコードビットマップ２１０１の構造図である。空きレコード状態２３００は、物理データレコード、及び、物理パリティレコードに対応して、その物理レコードが、空きレコード１５０３であるかそうでないかを表す。
【００４２】
図１０は、キャッシュ割当情報２１０２の構造図である。論理ストライプ（論理データストライプ１６１３、及び、論理パリティストライプ１６１４）がキャッシュ１３０８に格納されているかどうかを表す。ストライプ割当ポインタ２４００は、論理ストライプ単位に対応して設けられる情報である。ストライプ割当ポインタ２４００は、対応する論理ストライプ１６１１がキャッシュ１３０８に格納されていれば、そのキャッシュセグメントを管理するセグメント管理情報２１０３をポイントする。対応する論理ストライプ１６１１がキャッシュ１３０８に格納されていなければヌル値となる。
【００４３】
図１１は、セグメント管理情報２１０３の中で本発明に関係した情報を表したものである。
【００４４】
更新前セグメントポインタ２５００は、キャッシュ内のセグメント２０００の１つをポイントするポインタである。そのセグメント管理情報２１０３が、論理データストライプのセグメント管理情報２１０３の場合、ポイントされるセグメント２０００には、パリティレコード１７０２の更新値を作成していないデータレコード１７００の値が格納されている。また、そのセグメント管理情報２１０３が、論理パリティストライプ１６１２のセグメント管理情報２１０３である場合、更新前セグメントポインタ２５００は、パリティレコード１７０２の更新値を作成する際に生成されるパリティレコードの中間値１０２を格納するセグメント２０００をポイントする。
【００４５】
更新後セグメントポインタ２５０１もキャッシュ内のセグメント２０００の１つをポイントするポインタである。更新後セグメントポインタ２５０１は、そのセグメント管理情報２１０３が論理データストライプ１６１１のセグメント管理情報２１０３である場合、新たに作成されたパリティレコード１７０２の更新値を格納したセグメント２０００をポイントしている。また、そのセグメント管理情報２１０３が物理パリティレコード１５０１のセグメント管理情報２１０３の場合、更新前パリティ１０３、更新後パリティ１０４の値を、本ポインタが示すセグメント２２００に格納する。
【００４６】
更新前ビットマップ２５０２は、対応する論理ストライプ内のレコード（データレコード、あるいは、パリティレコード）のうち、更新前セグメントポインタ２５００がポイントするセグメント２０００の中に、値が格納されているレコードを示すためのビットマップを保持している。
【００４７】
更新前ダーティビットマップ２５０３は、対応する論理ストライプ内のレコードのうち、更新前セグメントポインタ２５００がポイントするセグメント２０００の中に、その値がまだディスク装置１３０４に書き込まれていないデータレコード１７００、あるいは、パリティレコード１７０２を表すビットマップである。
【００４８】
更新後ビットマップ２５０４は、対応する論理ストライプ内のレコードのうち、更新後セグメントポインタ２５０１がポイントするセグメント２０００の中に、値が格納されているデータレコード１７００、あるいは、パリティレコード１７０２を表すビットマップである。
【００４９】
更新後ダーティビットマップ２５０５は、更新後セグメントポインタ２５０１でポイントするセグメント２２００に格納されているデータレコード１７００、あるいは、パリティレコード１７０２の中で、その値がまだディスク装置１３０４に書き込まれていないデータレコード１７００、あるいは、パリティレコード１７０２を表すビットマップである。
【００５０】
使用中フラグ２５０６は、そのセグメント管理情報２１０３が使用中であることを表すふらぐであり、空きポインタ２５０７は、空き状態にあるセグメント管理情報２１０３を相互に結合するためのポインタである。
【００５１】
図１２は、空きセグメントキューと空きセグメント管理情報キューの構造図である。図に示すように、空きセグメントキューは、空きセグメントキューポインタ２１０４を先頭として、空き状態にあるセグメント２０００をそのセグメントポインタ２００１でチェーン状に結合して構成されている。また、空きセグメント管理情報キューは、空きセグメント管理情報キューポインタ２１０５を先頭として、空き状態にあるセグメント管理情報２１０３をその空きポインタ２５０７でチェーン状に結合して構成されている。
【００５２】
図１３は、ディスク装置１３０４内のバッファ１３１３の構造である。バッファ１３１３は、データ格納領域１２００、マッピング情報２１００、空きレコードビットマップ２１０１から構成される。データ格納領域１２００には、記憶媒体１３１２と制御装置１３０５の間で転送されるデータを格納する。マッピング情報２１００、空きレコードビットマップ２１０１は、制御装置１３０５に含まれる場合、バッファ１３１３にはもつ必要がない。なお、マッピング情報２１００、空きレコードビットマップ２１０１は、バッファ１３１３に含まれる場合、バッファ１３１３は不揮発化しておくことが望ましい。また、バッファ１３１３に含まれるマッピング情報２１００、空きレコードビットマップ２１０１は、当該ディスク装置１３０４に含まれる論理ストライプ、物理ストライプの情報である。なお、マッピング情報２１００、空きレコードビットマップ２１０１の構造自体は、制御装置１３０５上に含む場合（図８、図９）と同様であるため説明を省略する。
【００５３】
図１４は、制御装置１３０５内のライト要求受付部１１０の処理フローである。
【００５４】
ライト要求受付部１１０は、処理装置１３００からライト要求を受け付けた時、動作を開始する。ステップ１０００では、当該ライト要求において受け取ったデータレコード１７００に、キャッシュ１３０８、あるいは、不揮発メモリ１４００が割り当てられているかどうかを、ディレクトリ１３０９、不揮発メモリ管理情報１４０１のセグメント割当情報２１０２を参照して確認する。割り当てられている場合、ステップ１００２にジャンプする。割り当てられていない場合、ステップ１００１でセグメント２０００を割り当てる。具体的には、セグメント管理情報２１０３の更新前セグメントポインタ２５００が、割り当てたセグメント２０００を示すようにする。ステップ１００２では、ライト要求受付部１１０は、処理装置１３００からライトデータ、すなわち、更新後データ１０４を受付け、キャッシュ１３０８、および、不揮発メモリ１４００に、更新後データ１０４格納する。このとき、ディレクトリ１３０９、不揮発メモリ管理情報１４０１のセグメント割当情報２１０２の中の必要な情報を更新する。具体的には、更新前ビットマップ２５０３の対応するビットをオンにする。以上で、動作を終了する。
【００５５】
次に、制御装置１３０５内のデータデステージ部１１１の処理フローを図１５に示す。データデステージ部１１１は、ステップ１１００で、デステージすべきデータレコード１７００があるかどうかを、セグメント管理情報２１０３をサーチして見つける。具体的には、更新前ビットマップ２５０３がオンの論理データストライプ１６１１に割り当てたセグメント管理情報２１０３を見つける。見つかった場合、以下の処理を実行する。
【００５６】
まず、ステップ１１０１で、データデステージ部１１１は、この論理データストライプ１６１３に対応する論理パリティストライプ１６１４にキャッシュ１３０８、不揮発メモリ１４００が割り当てられているか、セグメント割当情報２１０３を参照して、チェックする。割り当てられている場合、ステップ１１０３にジャンプする。割り当てられていない場合、ステップ１１０２で、キャッシュ１３０８、不揮発メモリ１４００のセグメント２０００を割り当てる。
【００５７】
次に、データデステージ部１１１は、ステップ１１０３で、データレコード１７００の更新前の値、すなわち、更新前データ１０１が、キャッシュ１３０８に存在するかチェックする。具体的には、更新前ビットマップ２５０３がオンのデータレコード１７００に対応する更新後ビットマップ２５０４がオンになっているかチェックする。存在しない場合、ステップ１１０７にジャンプする。存在する場合、ステップ１１０４で、パリティ中間値作成ルーチンをコールする。
【００５８】
この後、データデステージ部１１１は、ステップ１１０５で、更新後データ１００をディスク装置１３０４に書き込むよう、要求を発行する。ここで、制御装置１３０５とディスク装置１３０４の機能分担によって、要求の具体的な内容が異なってくる。まず、第１に、論理ストライプと物理ストライプの変換（データレコード１７００、パリティレコード１７０２から、物理データレコード１５００、物理パリティレコード１５０２への変換）をディスク装置１３０４が実行する場合である。この場合、図１６に示すように、データデステージ部１１１は、書き込みを行うデータレコード１７０１を指定し、ディスク装置１３０４側で、書き込みを行う物理レコード１５０２を決定する。第２に、論理ストライプと物理ストライプの変換を、制御装置１３０５が実行する場合、さらに、２つの方法が考えられる。図１７に示す方法は、制御装置１３０５が、物理ストライプの中のすべての空きレコード１５０３と元々当該データレコード１７００が格納されていた物理レコードを通知し、ディスク装置１３０４が指定された物理レコードの中で最初に見つけた物理レコードに、受け取ったデータを書き込むものである。この場合、ディスク装置１３０４は、実際に書き込みを行った物理レコードを制御装置１３０５に報告する。一方、制御装置１３０５は受け取った情報にしたがって、マッピング情報２１００を変更することになる。また、図１８に示す方法は、制御装置１３０５が、更新後データ１０３を書き込む物理レコードを直接指定する方法である。この場合、ディスク装置１３０４は、指定された物理レコードに受け取ったデータを書き込むだけである。したがって、書き込み時間を短縮するには、ディスク装置１３０４の読み書きヘッド１３１５の位置を制御装置１３０５が認識して、どの物理レコードに書き込むのが、書き込み時間を短縮できるか計算する必要がある。このため、制御装置１３０５は、図１８に示すように、ディスク装置１３０４から、読み書きヘッド１３１５の位置を通知してもらうよう要求する。ディスク装置１３０４は、要求にしたがって、この位置を制御装置１３０５に通知する。
【００５９】
図１６〜図１８に示した処理は、データレコード１７００の内容を物理データレコード１５００に書き込んでいるだけである。したがって、図４に示すようなパリティレコード１７０２を含まない場合にも適用可能である。パリティレコード１７０２を含まない場合には、ストライプ１６１０の構成は図３３に示すような構成となる。さらに、データレコード１７００の内容を２つ以上の物理レコード１５０１に書き込んだ場合にも、図１６〜図１８に示した処理は、適用可能である。この場合のストライプ１６１０の構成は図３４に示すような構成となる。
【００６０】
データデステージ部１１１は、この後、デステージ要求の完了を待つため、一度処理を完了する。
【００６１】
データデステージ部１１１は、ディスク装置１３０４からのデータの書き込み完了通知を受け取ると再び処理を開始する。ステップ１１０６で、対応するセグメント管理情報２１０３の更新後ダーティセグメント２５０５をオフする。なお、マッピング情報２１００を制御装置１３０５で管理している場合、書き込みを行った物理レコード１５０２にしたがって、マッピング情報２１００を更新する。以上で、処理を完了する。
【００６２】
一方、ステップ１１０３において、更新前データ１０１が、キャッシュ１３０８に存在しない場合は、ステップ１１０７で、更新前データ１０１を格納するためのセグメント２０００が割り当てられていれるかどうかをチェックし、割り当てられていない場合、セグメント２０００を割り当てる。
【００６３】
次に、データデステージ部１１１は、ステップ１１０８で、ディスク装置１３０４に、更新前データ１０１に対応する物理データレコード１５００から更新前データ１０１を読み出し、さらに、更新後データ１００を、空きレコード１５０３に書き込むよう要求する。この場合も、制御装置１３０５とディスク装置１３０４の機能分担によって、要求の具体的な内容が異なってくる。まず、第１に、論理ストライプと物理ストライプの変換をディスク装置１３０５が実行する場合である。この場合、図１９に示すように、データデステージ部１１１は、読み出しと書き込みを行うデータレコード１７００を指定するだけである。ディスク装置１３０４は、指定されたデータレコード１７００がどの物理レコードに対応しているか認識し、さらに、どの物理レコードが空きレコード１５０３になっているか把握する。
【００６４】
第２に、論理ストライプと物理ストライプの変換を、制御装置１３０５が実行する場合である。この場合は、さらに、３つの方法が考えられる。まず、図２０に示す方法は、制御装置１３０５が、物理ストライプの中のすべての空きレコード１５０３を通知する。ディスク装置１３０４が最初に見つけた空きレコード１５０３に、受け取ったデータを書き込み、指定を受けた物理レコードを読み出す。残りの２つの方法は、制御装置１３０５が、データをどの物理レコードに書き込むかを直接指定する方法である。図２１に示す方法は、制御装置１３０５が、書き込み時間を短縮するために、ディスク装置１３０４の読み書きヘッド１４１５の位置を制御装置１３０５が認識して、どの物理レコード１５０２に書き込むのが、書き込み時間を短縮できるか計算する。このため、制御装置１３０５は、図２１に示すように、ディスク装置１３０４から、読み書きヘッド１４１５の位置を通知してもらうよう要求する。ディスク装置１３０４は、要求にしたがって、この位置を制御装置１３０５に通知する。
【００６５】
図２２に示す方法は、物理データレコード１５００の読み出しを最初に実行し、次に、空きレコード１５０３の書き込みを実行する場合である。この場合には、物理データレコード１５００の後にある空きレコード１５０３の中で、最も近くにある空きレコード１５０３を、データを書き込むべき物理レコードとして選択する。
【００６６】
データデステージ部１１１は、この後、ディスク装置１３０４からの報告を待つため、一度処理を完了する。
【００６７】
ディスク装置１３０４からの読み出し完了報告を受け取ると、データデステージ部１１１は再び処理を開始する。ステップ１１１０で、データデステージ部１１１は、ディスク装置１３０４から、読み出した物理データレコード１５００を受け取り、セグメント２０００に格納する。この後、ステップ１１０９で、ディスク装置１３０４から、デステージ要求の完了報告を受取、対応するセグメント管理情報２１０３の更新前ダーティセグメント２５０３をオフする。さらに、この後、セグメント管理情報２１０２の中の対応する更新後ビットマップ２５０４をセットする。なお、マッピング情報２１００を制御装置１３０５で管理している場合、書き込みを行った物理レコード１５０２にしたがって、マッピング情報２１００を更新する。
【００６８】
ステップ１１１１では、データデステージ部１１１は、パリティ中間値作成ルーチンをコールする。以上で、処理を完了する。
【００６９】
図２３は、パリティ中間値作成ルーチンの処理フローである。ステップ２３００では、すでに、パリティ中間値１０２が作成されているかどうかをチェックする。具体的には、論理パリティストライプ１６１４に割り当てたセグメント管理情報２１０３の中の対応する更新前ビットマップ２５０３がオンになっているかチェックする。作成ずみの場合、ステップ２３０３へジャンプする。ステップ２３０１では、更新前データ１０１と更新後データ１００からパリティ中間値１０２を作成し、キャッシュ１３０８、不揮発メモリ１４００内の、論理パリティストライプ１６１４に割り当てたセグメント２０００に格納する。ステップ２３０２では、論理パリティストライプ１６１４に割り当てたセグメント管理情報２１０３の中の対応する更新前ビットマップ２５０２、更新前ダーティビットマップ２５０３をオンにする。この後、ステップ２３０４にジャンプする。
【００７０】
ステップ２３０３でデータデステージ部１１１は、更新前データ１０１、更新後データ１００、さらに作成済みのパリティ中間値１０３とから、新たなパリティ中間値１０３を作成し、キャッシュ１３０８、不揮発メモリ１４００内の、論理パリティストライプ１６１４に割り当てたセグメント２０００に格納する。
【００７１】
ステップ２３０４では、論理データストライプ１６１１に割り当てたセグメント管理情報２１０３の中の更新前セグメントポインタ２５００が示すセグメント２０００内の更新前ビットマップ２５０２がオンのデータレコード１７００の内容を、更新後セグメントポインタ２５０１が示すセグメント２０００の対応位置にコピーする。さらに、更新前ビットマップ２５０２がオンのビットを、更新後ビットマップ２５０４にコピーする。
【００７２】
ステップ２３０５では、論理データストライプ１６１１に割り当てたセグメント管理情報２１０３の中の論理データストライプ更新前ダーティビットマップ２５０３がオンのビットを、更新後ダーティビットマップ２５０５にコピーする。
【００７３】
ステップ２３０６では、論理データストライプ１６１１に割り当てたセグメント管理情報２１０３の中の更新前セグメントポインタ２５００が示すセグメント２０００を空き状態にする。加えて、更新前ビットマップ２５０２、および、更新前ダーティビットマップ２５０３をオフにし、更新前セグメントポインタ２５００をヌルにする。
【００７４】
ステップ２３０４〜２３０６の処理は、キャッシュ１３０８、ディレクトリ１３０９だけでなく、不揮発メモリ１４００、不揮発メモリ管理情報１４０１についても、同様に実行される。
【００７５】
図２４は、ディスク装置１３０４内のデータ書き込み部１１２の処理フローである。まず、ステップ２４００では、制御装置１３０５から受け取った情報を解析する。マッピング情報２１００をディスク装置１３０４で管理する場合には、関係する論理ストライプの中から、空きレコード１５０３がどれかを認識する。ステップ２４０１では、制御装置１３０５から書き込みを行うデータを受け取る。次に、ステップ２４０２で、読み書きヘッド１４１３の位置付けを実行する。ステップ２４０３では、読み書きヘッド１４１３が、どの物理レコード１５０２に位置付いたかを認識する。
【００７６】
ステップ２４０４では、当該物理レコード１５０２が、読み出しを指定された物理レコード１５０２であるか判断する。そうであれば、ステップ２４０８へジャンプする。ステップ２４０５では、当該物理レコード１５０２は書き込みを指定された物理レコード１５０２、あるいは、書き込みを行ってよい物理レコード１５０２か判断する。そうであれば、ステップ２４１０へジャンプする。
【００７７】
ステップ２４０６では、次の物理レコードが当該物理ストライプ１６１８に含まれるか判断する。そうであれば、次の物理レコードの処理に入るため、ステップ２４０４にジャンプする。含まれない場合、ステップ２４０８で、当該物理ストライプの最初の物理レコードに位置付くよう、読み書きヘッド１４１３の位置付けを実行する。この後、ステップ２４０３にジャンプする。
【００７８】
ステップ２４０８では、読み書きヘッド１４１３が位置付いた物理レコードを読み出す。そして、ステップ２４０９で、書き込みが完了したかをチェックする。完了していない場合、ステップ２４０４にジャンプする。完了している場合、ステップ２４１２へジャンプする。
【００７９】
ステップ２４１０では、読み書きヘッド１４１３が位置付いた物理レコードにライトデータを書き込む。ステップ２４１１では、物理レコードの読み出しを行う必要があるか判断し、読み出しの必要がまだ有れば、ステップ２４０４へジャンプする。
【００８０】
ステップ２４１２では、物理レコード１５０２の読み出しを行ったかチェックし、読み出していれば、物理レコード１５０２を制御装置１３０５に送る。ステップ２４１３では、要求の完了を制御装置１３０５に報告する。なお、ディスク装置１３０４がマッピング情報を持つ場合、完了報告を返す前に、マッピング情報２１００を更新する。
【００８１】
以上は、ディスク装置１３０４側に、パリティ中間値１０２の作成機能を持たない場合の、データデステージ部１１１、データ書き込み部１１２の処理フローである。図２５、図２６は、ディスク装置１３０４側に、パリティ中間値１０２の作成機能を持った場合の、データデステージ部１１１、データ書き込み部１１２の処理フローである。それぞれの処理フローで、図１５、図２３、図２４の処理フローと同一の番号が付されたステップは、それらにおける対応する処理と同じ処理内容を持つ。以下、処理内容が異なる部分のみ説明を行う。
【００８２】
図２５の処理フローでは、データデステージ部１１１が、ディスク装置１３０４から、更新前データ１０１ではなく、パリティ中間値１０２を受け取る。この場合、ステップ２５０２で、作成ずみのパリティ中間値１０２があるかチェックする。パリティ中間値がない場合、ステップ２５０３のキャッシュ１３０８、不揮発性メモリ１４００それぞれのパリティストライプ１６１２に対応するセグメント２０００に、パリティ中間値１０２をコピーする。さらに、ステップ２５０４で、対応する更新前ビットマップ２５０２と更新前ダーティビットマップ２５０３をセットする。この後、ステップ２３０４へジャンプする。ステップ２５０５では、ディスク装置１３０４から受け取ったパリティ中間値１０２と作成済みのパリティ中間値１０２から、最新のパリティ中間値１０２を作成し、キャッシュ１３０８、不揮発性メモリ１４００それぞれのパリティストライプ１６１２に対応するセグメント２０００に、パリティ中間値１０２をコピーする。（ステップ２３０４〜２３０６は、図２３に示したとおりの内容であるため、説明を省略する。）
図２６の処理フローでは、データ書き込み部１１２が、ステップ２６００で、読み出した物理レコード１５０２と受け取ったライトデータとからパリティ中間値１０２を作成し、ステップ２６０１で作成したパリティ中間値１０２を制御装置１３０５に送る点のみが異なる。
【００８３】
図２７は、制御装置１３０５内のパリティデステージ部１１３の処理フローである。パリティデステージ部１１３は、ステップ２７００で、デステージすべきパリティレコード１７０２があるかどうかを、セグメント管理情報２１０３をサーチして見つける。具体的には、更新前ビットマップ２５０３がオンの論理パリティストライプ１６１２に割り当てたセグメント管理情報２１０３を見つける。見つかった場合、以下の処理を実行する。
【００８４】
ステップ２７０１でパリティデステージ部１１３は、パリティレコード１７０２の更新前の値が、キャッシュ１３０８に存在するかチェックする。具体的には、更新前ビットマップ２５０３がオンのデータレコード１７００に対応する更新後ビットマップ２５０４がオンになっているかチェックする。存在しない場合、ステップ２７０８にジャンプする。存在する場合、ステップ２７０２以下のステップで、更新後パリティ１０４の作成処理に入る。ステップ２７０２では、パリティ中間値１０２と更新前パリティ１０３とから更新後パリティ１０４を作成し、キャッシュ１３０８、不揮発性メモリ１４００のセグメント２０００に格納する。ステップ２７０３では、対応する更新前ビットマップ２５０２、更新前ダーティビットマップ２５０４をオンにする。
【００８５】
ステップ２７０４では、更新前ダーティビットマップ２５０３、更新前ビットマップ２５０２をオフする。ステップ２７０５では、更新前セグメントポインタ２５００が示すセグメントを空き状態にし、更新前セグメントポインタ２５００をヌルにする。
【００８６】
ステップ２７０３〜２３０５の処理は、キャッシュ１３０８、ディレクトリ１３０９だけでなく、不揮発メモリ１４００、不揮発メモリ管理情報１４０１についても、同様に実行される。
【００８７】
この後、パリティデステージ部１１３は、ステップ２７０６で、更新後パリティ１０４をディスク装置１３０４に書き込むよう、要求を発行する。この要求は、データデステージ部１１１がディスク装置１３０４に更新後データ１０１を書き込む際の内容と同様である。具体的には、図１６〜図１８に示した更新後データのディスク装置への書き込み要求と同様に行われる。したがって、この要求に対しては、ディスク装置１３０４のデータ書き込み部１１２が動作する。データ書き込み部１１２の処理内容は、図２４に示した処理フローの通りである。
【００８８】
パリティステージ部１１３は、この後、デステージ要求の完了を待つため、一度処理を完了する。
【００８９】
ディスク装置１３０４からの書き込み要求完了通知を受け取ると、パリティデステージ部１１３は再び処理を開始する。ステップ２７０７で、対応するセグメント管理情報２１０３の更新後ダーティセグメント２５０５をオフする。なお、マッピング情報２１００を制御装置１３０５で管理している場合、書き込みを行った物理レコード１５０２にしたがって、マッピング情報２１００を更新する。以上で、処理を完了する。
【００９０】
一方、ステップ２７０１において、更新前パリティ１０３が、キャッシュ１３０８に存在しない場合、ステップ２７０８で、更新前データ１０１を格納するためのセグメント２０００が割り当てられていれるかどうかをチェックし、割り当てられていない場合、セグメント２０００を割り当てる。具体的には、更新後セグメントポインタ２５０１が割り当てたセグメント２０００を示すようにする。
【００９１】
次に、パリティデステージ部１１３は、ステップ２７０８で、ディスク装置１３０４に、更新前パリティ１０３に対応する物理データレコード１５００から更新前データ１０１を読み出し、さらに、制御装置１３０５から受け取ったパリティ中間値１０２と読み出した更新前パリティ１０３とから更新後パリティ１０４を作成し、更新後パリティ１０４を空きレコード１５０３に書き込むよう要求する。この場合も、制御装置１３０５とディスク装置１３０４の機能分担によって、要求の具体的な内容が異なってくる。まず、第１に、論理ストライプと物理ストライプの変換をディスク装置１３０５を実行する場合である。この場合、図２８に示すように、パリティデステージ部１１３は、読み出しと書き込みを行うパリティレコード１７０１を指定し、パリティ中間値１０２を送信する。ディスク装置１３０４は、該当する物理レコード１５０１から更新前パリティ１０２を読み出し、更新後パリティ１０４を作成し、最初に見つけた空きレコード１５０２に、更新後パリティ１０４を書き込む。
【００９２】
第２に、論理ストライプ１６１１と物理ストライプ１６１２の変換を、制御装置１３０５が実行する場合である。この場合は、さらに、２つの方法が考えられる。まず、図２９に示す方法は、制御装置１３０５が、更新前パリティ１０３が格納された物理レコード、すなわち、読み出しを行う物理レコードと、物理ストライプ１６１３の中のすべての空きレコード１５０３、すなわち、書き込みを行う１つ以上の物理レコードを通知する。ディスク装置１３０４は、指定された物理レコードから更新前パリティ１０３を読み出し、更新後パリティ１０４を作成し、指定された物理レコードの中で、最初に見つけた物理レコードに、作成した更新後パリティ１０４を書き込む。
【００９３】
また、図３０に示す方法では、制御装置１３０５が、更新後パリティ１０４を書き込む物理レコード１５０２を直接指定する。制御装置１３０５は、更新前パリティ１０３を読み出してから、更新後パリティ１０４を作成する時間を考慮して、作成が完了してから、最も近くにある空きレコード１５０３を、データを書き込むべき物理レコードとして選択する。なお、ディスク装置１３０４が、更新前パリティ１０３の読み込みと更新後パリティ１０４の作成を並列に実行可能な場合、制御装置１３０５は、読み出しを行う物理レコードの後で最も近くにある空きレコード１５０３を選択すればよいことになる。パリティデステージ部１１３は、この後、パリティ生成を含むデステージ要求の完了を待つため、一度処理を完了する。
【００９４】
ディスク装置１３０４からのデステージ要求完了通知を受け取ると、データデステージ部１１３は再び処理を開始する。ステップ２７１０で、ディレクトリ１３０９、不揮発メモリ管理情報の対応するセグメント管理情報２１０３の更新前ダーティセグメント２５０３、更新前ビットマップ２５０２をオフする。さらに、ステップ２７１１で、更新前セグメントポインタ２５００が示すセグメントを空き状態にし、更新前セグメントポインタ２５００をヌル値にする。なお、マッピング情報２１００を制御装置１３０５で管理している場合、書き込みを行った物理レコード１５０２にしたがって、マッピング情報２１００を更新する。以上で、処理を完了する。
【００９５】
図３１は、ディスク装置１３０４内のパリティ書き込み部１１４の処理フローである。まず、ステップ３１００では、制御装置１３０５から受け取った情報を解析する。マッピング情報２１００をディスク装置１３０４で管理する場合は、ここで、関係する論理ストライプ１６１８の中から、空きレコード１５０３がどれかを認識する。そして、ステップ３１０１では、制御装置１３０５からパリティ中間値１０２を受け取る。
【００９６】
ステップ３１０２で、読み書きヘッド１４１３の位置付けを実行し、ステップ３１０３では、読み書きヘッド１４１３が読み出しを行う物理レコードに位置付つくまで待つ。
【００９７】
ステップ３１０４では、当該物理レコードを読み出し、読み出した物理レコードとパリティ中間値１０２とから更新後パリティ１０４を作成する。読み出し処理と更新後パリティ１０４の作成処理は、並列に実行可能である。
【００９８】
ステップ３１０５では、パリティ書き込み部１１４では、最初に見つけた空きレコード、制御装置１３０５が指定した複数の物理レコードの中で最初に見つけた物理レコード、あるいは、制御装置１３０５が指定した物理レコードに、更新後パリティ１０４を書き込む。この後、パリティ書き込み部１１４は、要求の完了を制御装置１３０５に報告する。なお、ディスク装置１３０４がマッピング情報を持つ場合、完了報告を返す前に、マッピング情報２１００を更新する。
【００９９】
以上説明した実施例によれば、データレコードの更新に伴うパリティレコードの更新の際、パリティの作成処理の一部をディスク装置側で実施するため、制御装置の処理負荷をある程度軽減することができる。さらに、各ディスク装置は、制御装置からの書き込み要求に対して、制御装置から受け取った情報、あるいは、自らが作成した情報を、読み書きヘッドがもっとも早く位置付く空きレコードの書き込むので、制御装置から要求に対する応答時間を短くすることができる。
【０１００】
なお、上述した実施例において、ディスク装置の作成した更新後パリティを制御装置に送り、制御装置内のキャッシュに格納するようにしてもよい。これにより、次の更新後パリティの作成が、制御装置で可能になり、ディスク装置から物理レコードを読みださずに、更新後パリティを書き込むことが可能になる。
【０１０１】
また、以上の実施例では、パリティレコード１７０２の更新を行う場合、制御装置１３０５からは、パリティ中間値１０２を送っている。更新前データ１０１がキャッシュ１３０８に存在する場合、パリティ中間値１０２の計算は、制御装置１３０５が実行している。制御装置１３０５の負荷を軽減するという観点からは、この計算をディスク装置１３０５に分散した方が、効果的である。図３５は、このような観点からの動作概要を表している。図では、制御装置１３０５内のパリティデステージ部１１２が、ディスク装置１３０５内のパリティ書き込み部１１４に、更新前データ１０１と更新後データ１００を送る。パリティデステージ部１１４では、更新前データ１０１と更新後データ１００からパリティ中間値１０２を作成する。この後、記憶媒体１３１２から更新前パリティ１０３を読み出し、読み出した更新前パリティ１０３とパリティ中間値１０２とから、更新後パリティ１０４を生成して、記憶媒体１３１２に、更新後パリティ１０４を書き込む。もちろん、パリティ中間値１０２を生成せずに、更新前データ１０１と更新後データ１００と更新前パリティ１０３とから、直接、更新後パリティ１０４を生成してもよい。
【０１０２】
制御装置１３０５とディスク装置１３０４の具体的なインターフェイスについては、図２８〜図３０に示した考え方をそのまま用いることができる。これを、図３６〜図３９にまとめる。図２８〜図３０と図３６〜図３９の相違は、以下のとおりである。
【０１０３】
（１）制御装置１３０５がディスク装置１３０４に送る情報が、パリティ中間値１０２から、更新前データ１０１と更新後データ１００に代わっている。
【０１０４】
（２）制御装置１３０５からディスク装置１３０４へ、更新前データ１０１と更新後データ１００の２つの情報を送る。ディスク装置１３０４では、更新前データ１０１と更新後データ１００から更新後パリティ１０４を生成して、記憶媒体１３１３に書き込む。ここで、この２つの情報を別々に送信したのでは、制御装置１３０５とディスク装置１３０４の転送オーバヘッドが増加する。このため、２つの情報を一括して送信することが望ましい。また、制御装置１３０５がこれらの情報を送信する際、指定する情報の長さは、更新前データ１０１と更新後データ１００を合わせた長さ、あるいは、ディスク装置１３０５に書き込む更新後パリティ１０４の長さ（更新前データ１０１、更新後データ１００単独の長さ）とすることができる。なお、パリティレコード１７０２の更新を行う際に、制御装置１３０４が、パリティレコード１７０２を格納したディスク装置１３０５に更新前データ１０１と更新後データ１００を送るという方式は、図３９に示すような場合にも適用できる。具体的には、更新前パリティ１０３を読み出した物理レコード１５０２に更新後パリティ１０４を必ず書き込むという場合、すなわち、パリティレコード１７０２を常に同じ物理レコード１５０２に格納する場合にである。この場合の効果は、制御装置１３０５の負荷を軽減するということである。
【０１０５】
次に第２の実施例を説明する。図３２は、第２の実施例における計算機システムの構成を示すブロック図である。第１の実施例における計算機システムとの構成上の相違は、処理装置１３００に直接ディスク装置１３０４が接続されている点にある。本実施例では、キャッシュ１３０８、ディレクトリ１３０４は、処理装置１３００の主記憶１３０２上に実現される。処理装置１３００の主記憶１３０２は、不揮発化されていても、いなくてもかまわない。処理装置１３００上では、応用プログラム３００と管理プログラム３０１が実行される。キャッシュ１３０８、ディレクトリ１３０９、および、パリティグループ等の管理機能は、管理プログラム３０１がもつ。また、本実施例では、データレコード１７００を、応用プログラム３００が直接リード／ライトするレコードことになる。すなわち、本実施例においては、応用プログラム３００が、第１の実施例における図２の処理装置１３００に、管理プログラム３０１が同じく図２の制御装置１３０５に相当すると考えることができる。したがって、図１において、制御装置１３０５内に設けられる各機能を実現する構成要素は、管理プログラム３０１内に設けられることになる。このため、管理プログラム３０１内に実現されている各構成要素の機能については、ここでは、説明を省略する。また、詳細な内容についても、第１の実施例で説明した内容をそのまま適用できるため、説明を省略する。
【０１０６】
以上説明した第１、第２の実施例では、ｍ個のデータレコード１７００に対し、ｎ個のパリティレコード１７０２を作成する場合について述べた。しかし、本発明は、パリティレコード１７０２がない場合についても有効である。この場合、論理ストライプグループ１６１７と物理ストライプグループの関係は、図３３に示すようになる。この時には、データレコードライト部１１１は、更新後データ１００をディスク装置１３０４に書き込むよう要求することになる。ディスク装置１３０４側では、更新前データ１０１が格納されている物理データレコード１５００か、当該物理データストライプ１６１５の中の空きレコード１５０３の中で、最初位置ついた物理レコード１５０２に更新後データを書き込む。これにより、ディスク装置１３０４のアクセス時間を短縮することができる。制御装置１３０５とディスク装置の間のインターフェイスについては、図１７〜図１８に示したいずれかに準じればよい。
【０１０７】
一方、図３４のように、１つのデータレコード１７００を２つ以上の物理レコード１５０２に書き込む場合も、本発明は有効である。図３４は、この場合の論理ストライプグループ１６１７と物理ストライプグループの関係を示してある。この場合も、ディスク装置１３０４側では、更新前データ１０１が格納されている物理データレコード１５００か、当該物理データストライプ１６１５の中の空きレコード１５０３の中で、最初位置ついた物理レコード１５０２に更新後データを書き込む。これにより、ディスク装置１３０４のアクセス時間を短縮することができる。制御装置１３０５とディスク装置の間のインターフェイスについても、図１７〜図１８に示したいずれかを用いればよい。
【０１０８】
【発明の効果】
本発明では、ディスクアレイにおけるライト処理を高速化するため、（１）ディスク装置の記憶媒体上に適当な比率で空き領域を設け、（２）ディスク装置側に、データの読み書き、冗長データの作成を一括して実行する機能をもたせる。ディスクアレイにおいては、処理装置からライト要求を受け付けると、受け付けたデータの書き込みだけでなく、新たな冗長データの作成、および、この冗長データのディスク書き込みが発生する。新たな冗長データの作成のためには、旧いデータと冗長データが必要であり、これらをディスク装置から読み出す。つまり、合計で４回のディスクアクセスが必要である。一方、本発明を適用すると、データの場合、旧いデータの読み出しと新しいデータの書き込みがほとんど１回のディスクアクセス程度の時間で実行できる。同様に、古い冗長データの読み出しと新しい冗長データの書き込みがほとんど１回のディスクアクセス程度の時間で実行できる。したがって、本発明によりライト処理によるディスクアクセス数を半分程度に抑えることができる。
【図面の簡単な説明】
【図１】第１の実施例の記憶装置サブシステムの概要を表す機能ブロック図である。
【図２】第１の実施例の計算機システムの構成を示すブロック図である。
【図３】第１の実施例におけるレコードの考え方説明するための概念図である。
【図４】第１の実施例におけるパリティグループの考え方を説明するための概念図である。
【図５】パリティグループについての他の考え方を説明するための概念図である。
【図６】キャッシュメモリの構造図である。
【図７】ディレクトリの構造図である。
【図８】マッピング情報の構造図である。
【図９】空きレコードビットマップの構造図である。
【図１０】キャッシュ割当情報の構造図である。
【図１１】セグメント管理情報の構成図である。
【図１２】空きセグメントキューと空きセグメント管理情報キューの構造図である。
【図１３】ディスク装置内に設けられるバッファの構造図である。
【図１４】ライト要求受付部の処理フロー図である。
【図１５】データデステージ部の処理フロー図である。
【図１６】ディスク装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図１７】制御装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図１８】制御装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図１９】ディスク装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図２０】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図２１】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図２２】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図２３】パリティ中間値作成ルーチンの処理フロー図である。
【図２４】データ書き込み部の処理フロー図である。
【図２５】パリティ中間値をディスク装置で作成した場合のデータデステージ部の処理フロー図である。
【図２６】パリティ中間値をディスク装置で作成した場合のデータ書き込み部の処理フロー図である。
【図２７】パリティデステージ部の処理フロー図である。
【図２８】ディスク装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図２９】制御装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図３０】制御装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図３１】パリティ書き込み部の処理フロー図である。
【図３２】第２の実施例の計算機システムの構成を示すブロック図である。
【図３３】パリティレコードがない場合のストライプの構成を説明するための概念図である。
【図３４】データレコードを２つ以上の物理レコードに書き込んだ場合のストライプの構成を説明するための概念図である。
【図３５】記憶装置サブシステムの他の機能構成を表す機能ブロック図である。
【図３６】図３７に示す機能構成において、ディスク装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込み実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図３７】図３７に示す機能構成において、制御装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込みの実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図３８】図３７に示す機能構成において、制御装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込みの実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図３９】制御装置１３０５が、ディスク装置１３０４に更新後データ１００と更新前データを送り、ディスク装置１３０４が、パリティレコード１７０２を常に同じ物理レコード１５０２に格納する場合の処理概念図である。
【符号の説明】
１３００・・・処理装置、１３０４・・・ディスク装置、１３０５・・・制御装置、１３０８・・・キャッシュメモリ、１３０９・・・ディレクトリ、１３１０・・・ディスクアレイ制御プロセッサ、１３１１・・・ディスク制御プロセッサ、１３１２・・・記憶媒体。
【図１】
0003713788.tif 000002
【図２】
0003713788.tif 000003
【図３】
0003713788.tif 000004
【図４】
0003713788.tif 000005
【図５】
0003713788.tif 000006
【図６】
0003713788.tif 000007
【図７】
0003713788.tif 000008
【図８】
0003713788.tif 000009
【図９】
0003713788.tif 000010
【図１０】
0003713788.tif 000011
【図１１】
0003713788.tif 000012
【図１２】
0003713788.tif 000013
【図１３】
0003713788.tif 000014
【図１４】
0003713788.tif 000015
【図１５】
0003713788.tif 000016
【図１６】
0003713788.tif 000017
【図１７】
0003713788.tif 000018
【図１８】
0003713788.tif 000019
【図１９】
0003713788.tif 000020
【図２０】
0003713788.tif 000021
【図２１】
0003713788.tif 000022
【図２２】
0003713788.tif 000023
【図２３】
0003713788.tif 000024
【図２４】
0003713788.tif 000025
【図２５】
0003713788.tif 000026
【図２６】
0003713788.tif 000027
【図２７】
0003713788.tif 000028
【図２８】
0003713788.tif 000029
【図２９】
0003713788.tif 000030
【図３０】
0003713788.tif 000031
【図３１】
0003713788.tif 000032
【図３２】
0003713788.tif 000033
【図３３】
0003713788.tif 000034
【図３４】
0003713788.tif 000035
【図３５】
0003713788.tif 000036
【図３６】
0003713788.tif 000037
【図３７】
0003713788.tif 000038
【図３８】
0003713788.tif 000039
【図３９】
0003713788.tif 000040