(57)【要約】【課題】一次記憶装置の記憶領域を効率的に利用すること。【解決手段】管理手段１ｂは、データの分散配置を伴う処理要求３に応答し、処理の対象となるデータを格納するための記憶領域１ｄを一次記憶装置１ａに設ける。管理手段１ｂは、処理要求３に基づく分散配置処理の種別に応じたデータを記憶領域１ｄに格納する。通信手段１ｃは、管理手段１ｂが設けた記憶領域１ｄに格納されたデータを分散して配置するためにコンピュータ２に送信する。そして、管理手段１ｂは、分散配置処理の種別に応じたタイミングで記憶領域１ｄを再利用可能とする。【選択図】図１
2010277342.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを前記コンピュータに管理させる管理プログラムであって、
前記コンピュータを、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信する通信手段、
として機能させることを特徴とする管理プログラム。
【請求項２】
前記コンピュータを更に、前記記憶領域に格納されたデータを二次記憶装置に格納する格納手段として機能させ、
前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記通信手段が前記記憶領域に格納された前記書き込みデータの受信応答を前記他のコンピュータから受け付け、前記格納手段が前記記憶領域に格納された前記書き込みデータを前記二次記憶装置に格納すると、前記記憶領域を再利用可能とする、
ことを特徴とする請求項１記載の管理プログラム。
【請求項３】
前記管理手段は、前記処理要求が二次記憶装置に格納されたデータを前記他のコンピュータに分散して配置する旨を要求する冗長化回復要求である場合、当該冗長化回復要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする請求項１記載の管理プログラム。
【請求項４】
前記通信手段は、前記記憶領域に格納されたデータを所定サイズのデータブロックに分割して前記他のコンピュータに送信し、
前記管理手段は、前記通信手段が前記データブロックの受信応答を前記他のコンピュータから受け付けると、前記記憶領域のうち当該データブロックを格納した領域を再利用可能とする、
ことを特徴とする請求項３記載の管理プログラム。
【請求項５】
前記管理手段は、前記冗長化回復要求に応じて、前記二次記憶装置に格納されたデータを順次先読みして、前記一次記憶装置の前記記憶領域に格納することを特徴とする請求項４記載の管理プログラム。
【請求項６】
自装置に格納するデータと同一内容の複数のデータを自装置とネットワークで接続されたコンピュータに分散して配置する分散ストレージシステムを管理する管理装置であって、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段と、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記コンピュータに送信する通信手段と、
を有することを特徴とする管理装置。
【請求項７】
コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを管理する前記コンピュータの管理方法であって、
前記コンピュータが、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、
前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、
前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信し、
前記処理要求に基づく前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする、
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して分散ストレージシステムを管理する管理プログラム、管理装置および管理方法に関する。
【背景技術】
【０００２】
現在、コンピュータを用いたデータ処理が広く行われるようになり、データを保存・利用するためのストレージ技術が一層重要となっている。従来、データアクセスの高速化およびデータ保管に対する高信頼化を実現するストレージ技術として、ＲＡＩＤ（Redundant Arrays of Independent Disks）が一般的に利用されてきた。ＲＡＩＤでは、データを必要に応じて分割・複製して、複数のディスク装置に分散して配置する。そして、複数のディスク装置間での負荷分散による高速化、データの冗長管理による高信頼化が実現されている。
【０００３】
ここで、ディスク装置の高速化を図るために、ディスク装置にディスクキャッシュが設けられる。ディスクキャッシュは、例えば磁気ディスクよりも高速にアクセス可能な半導体メモリにより実現される。コンピュータは、ディスク装置に記憶されたデータをディスクキャッシュに配置し、ディスクキャッシュ上のデータにアクセスすることで高速化を図ることができる。
【０００４】
しかし、ディスクキャッシュは高速アクセスが可能な反面、高価であり、利用可能な容量に制限がある。そこで、ディスクキャッシュ上のデータへのヒット率を向上しつつ、キャッシュ容量を効率的に利用する方法が考えられている。例えば、順次アクセス済データをキャッシュメモリから優先的に削除する方法がある。また、ディスクキャッシュを所定容量で区切った区域ごとにアクセス頻度を取得し、アクセス頻度の低い区域から解放する方法がある。更に、アプリケーションプログラム（以下、単にアプリケーションという）のコマンド種別に応じた方法でキャッシュの管理（先読みや解放など）を行うことでアプリケーションの特性にあわせたキャッシュ制御を行う方法がある。
【０００５】
ところで、近年では、ＲＡＩＤの考え方を応用した分散ストレージシステムが構築されている。分散ストレージシステムは、複数のストレージノードがネットワークを介して接続される。各ストレージノードは、内部でディスク装置を管理すると共に、他のストレージノードとのネットワークを介した通信を行う。複数のストレージノードにデータを分散して配置することで、システム全体として一層の高速化・高信頼化を図ることができる。
【０００６】
例えば、分散ストレージシステムにおけるデータの冗長化では、マスタとして管理される主データの複製である副データを他のストレージノードに配置することが考えられる。このようにすると、主データを記憶するストレージノードに障害が発生しても、他のストレージノードに記憶された副データをバックアップとして利用することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０３−０９７０５３号公報
【特許文献２】国際公開第９９／０４０５１６号パンフレット
【特許文献３】特開２００５−３０９６５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、分散ストレージシステムにおいて、データアクセスを行う上位装置の負荷を軽減するために、冗長化の処理をストレージノードの責任で実行することが考えられる。すなわち、ストレージノードが、自ノードで管理する主データに対応する副データの書き込みを、他のストレージノードに指示する。
【０００９】
このような冗長化の処理は、例えば、次のような第１，２の冗長化処理が考えられる。
すなわち、第１の冗長化処理は、主データの書き込みが行われる場合に実行される。この場合、主データの書き込みに応じて、他のストレージノードに主データと同一内容の副データが書き込まれる。
【００１０】
また、第２の冗長化処理は、障害などが原因で、主データを管理するストレージノードと副データを管理するストレージノードとが変更された場合に実行される。この場合、新たに対応付けられたストレージノード同士で、一群の主データと副データとの同期が取られる（冗長化回復）。
【００１１】
ところで、分散ストレージシステムにおいて、データアクセスに対する応答性（書き込みや読み出しの速さなど）を補償するためにディスク装置の前段に一次記憶装置を利用したキャッシュを設けることが考えられる。この場合、ストレージノードはデータの冗長化に際して、ディスク装置に書き込むデータやディスク装置から読み出したデータを一時的にキャッシュに格納する。そして、ストレージノードは、キャッシュから読み出したデータを副データとして他のストレージノードに送信する。
【００１２】
しかし、例えば、オペレーティングシステム（Operating System）で行われるような一般的なキャッシュ処理では、分散ストレージシステムでの処理の都合でキャッシュの寿命や容量などの設定を変更することが困難であった。
【００１３】
特に、データの冗長化処理では、例えば上述した第１，２の冗長化処理では処理の手順や冗長化対象のデータ量が異なる。具体的には、第１の冗長化処理では、自ノードのディスク装置へのデータの書き込みを行うと共に他のストレージノードへの該当データの書き込み指示を行う。一方、第２の冗長化処理では、自ノードのディスク装置から読み出したデータを他のストレージノードに書き込み指示を行うのみである。また、第２の冗長化処理では一群の主データを同期するため、第１の冗長化処理よりも処理対象のデータサイズが大きくなる。
【００１４】
このため、各処理一律の設定でキャッシュ管理を行うと、例えば、第１の冗長化処理では、処理完了後にもキャッシュの寿命が余ってしまい、キャッシュに無駄なデータが保持されるという問題がある。また、例えば、第２の冗長化処理では、先読みを行う場合にも、キャッシュ容量が制限されてディスク装置へのアクセス回数を所定回数までしか低減できないという問題がある。
【００１５】
これらの問題は、キャッシュ容量の不足やディスク装置へのアクセスの頻発化を招き、データアクセスの応答性を損なう要因となる。
本発明はこのような点に鑑みてなされたものであり、一次記憶装置の記憶領域を効率的に利用することが可能な管理プログラム、管理装置および管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、コンピュータに格納するデータと同一内容の複数のデータをコンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムをコンピュータに管理させる管理プログラムが提供される。この管理プログラムを実行するコンピュータは、管理手段および通信手段として機能する。管理手段は、データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、処理要求に基づく分散配置処理の種別に応じたデータを記憶領域に格納し、分散配置処理の種別に応じたタイミングで記憶領域を再利用可能とする。通信手段は、管理手段が設けた記憶領域に格納されたデータを分散して配置するために他のコンピュータに送信する。
【００１７】
また、上記課題を解決するために上記管理プログラムを実行するコンピュータと同様の機能を有する管理装置が提供される。また、上記管理プログラムにより実現される処理と同様の処理を行う管理方法が提供される。
【発明の効果】
【００１８】
上記管理プログラム、管理装置および管理方法によれば、一次記憶装置の記憶領域を効率的に利用することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施の形態に係るコンピュータの機能を示す図である。
【図２】分散ストレージシステムの構成を示す図である。
【図３】ストレージノードのハードウェア構成を示す図である。
【図４】論理ボリュームの第１のデータ構造例を示す図である。
【図５】各ノードの機能構成を示す図である。
【図６】キャッシュの構成を示す図である。
【図７】各リストのデータ構造例を示す図である。
【図８】スライス管理テーブルのデータ構造例を示す図である。
【図９】論理ボリューム管理テーブルのデータ構造例を示す図である。
【図１０】リクエストパケットの構造例を示す図である。
【図１１】データアクセス処理の手順を示すフローチャートである。
【図１２】書き込み処理の手順を示すフローチャートである。
【図１３】副データの書き込み処理の手順を示すフローチャートである。
【図１４】読み出し処理の手順を示すフローチャートである。
【図１５】冗長化回復処理の手順を示すフローチャートである。
【図１６】キャッシュ管理処理の手順を示すフローチャートである。
【図１７】データの書き込みの流れの具体例を示すシーケンス図である。
【図１８】副データの書き込みの流れの具体例を示すシーケンス図である。
【図１９】データの読み出しの流れの具体例を示すシーケンス図である。
【図２０】論理ボリュームの第２のデータ構造例を示す図である。
【図２１】冗長化回復の流れの具体例を示すシーケンス図である。
【発明を実施するための形態】
【００２０】
以下、実施の形態を図面を参照して詳細に説明する。
図１は、本実施の形態に係るコンピュータの機能を示す図である。コンピュータ１は、コンピュータ２とネットワークを介して接続される。コンピュータ１は、データの入力を受け付ける。コンピュータ１は、データを主データとして管理する。コンピュータ２は、コンピュータ１が受け付けたデータの複製である副データを記憶する。すなわち、コンピュータ２は、データに関してコンピュータ１のバックアップデータを保持する。
【００２１】
コンピュータ１は、一次記憶装置１ａ、管理手段１ｂおよび通信手段１ｃを有する。
一次記憶装置１ａは、ＨＤＤ（Hard Disk Drive）などの二次記憶装置よりも高速にアクセス可能な記憶装置である。一次記憶装置１ａは、例えば、半導体メモリである。
【００２２】
管理手段１ｂは、データの分散配置を伴う処理要求３に応答し、処理の対象となるデータを格納するための記憶領域１ｄを一次記憶装置１ａに設ける。そして、管理手段１ｂは、処理要求３に基づく分散配置処理の種別に応じたデータを記憶領域１ｄに格納する。ここで、分散配置処理の種別とは、例えば書き込みデータの多重書き込み処理や、障害発生時の冗長化回復処理などである。管理手段１ｂは、例えば処理要求３がデータの書き込みを要求するものである場合、処理要求３に含まれるデータを記憶領域１ｄに格納する。また、管理手段１ｂは、例えば処理要求３がデータの読み出しを要求するものである場合、二次記憶装置から読み出し対象のデータを取得して、記憶領域１ｄに格納する。
【００２３】
そして、管理手段１ｂは、分散配置処理の種別に応じたタイミングで記憶領域１ｄを再利用可能とする。
通信手段１ｃは、記憶領域１ｄに格納されたデータを副データとしてコンピュータ２に送信する。
【００２４】
コンピュータ１によれば、管理手段１ｂにより、処理要求３に応答し、処理の対象となるデータを格納するための記憶領域１ｄが一次記憶装置１ａに設けられる。管理手段１ｂにより、処理要求３に基づく分散配置処理の種別に応じたデータが記憶領域１ｄに格納される。通信手段１ｃにより、記憶領域１ｄに格納されたデータが副データとしてコンピュータ２に送信される。そして、管理手段１ｂにより、分散配置処理の種別に応じたタイミングで記憶領域１ｄが再利用可能とされる。
【００２５】
これにより、一次記憶装置１ａの記憶領域を効率的に利用することが可能となる。具体的には、コンピュータ１は、処理要求３で要求される処理の内容に応じて、記憶領域１ｄを解放して再利用可能とするタイミングを変更する。例えば、処理要求３がデータ書き込み要求である場合には、管理手段１ｂは、コンピュータ２への副データの送信と二次記憶装置へのデータの格納とが完了したタイミングで記憶領域１ｄを再利用可能とすることが考えられる。また、例えば、処理要求３が冗長化回復処理の要求である場合には、管理手段１ｂは、書き込み要求である場合よりも容量を多く確保して記憶領域１ｄを設け、最終アクセス時間が古いなどの条件により記憶領域１ｄを再利用可能とすることが考えられる。
【００２６】
このように、コンピュータ１では、コンピュータ２に副データを送信する複数の場合に応じて効率的に一次記憶装置１ａを利用することができる。その結果、二次記憶装置へのアクセス頻度を低減することが可能となり、コンピュータ１のデータアクセスの応答性を向上することができる。
【００２７】
ところで、コンピュータ１は、分散ストレージシステムにおいてデータを管理するストレージノードに適用できる。ストレージノードは、一時的に多量のデータ書き込みを受け付けることも考えられ、コンピュータ１の機能が特に有用となる。以下、コンピュータ１を分散ストレージシステムに適用する場合を例に採り、更に具体的に説明する。
【００２８】
図２は、分散ストレージシステムの構成を示す図である。分散ストレージシステムは、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置することで、信頼性と処理性能とを向上させたストレージシステムである。
【００２９】
この分散ストレージシステムでは、ストレージノード１００，２００，３００，４００、コントロールノード５００、アクセスノード６００および管理ノード３０がネットワーク１０を介して相互に接続されている。また、端末装置２１，２２，２３が、ネットワーク２０を介してアクセスノード６００に接続されている。
【００３０】
ストレージノード１００，２００，３００，４００には、それぞれストレージ装置１１０，２１０，３１０，４１０が接続されている。ストレージノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由でアクセスノード６００に提供する。また、ストレージノード１００，２００，３００，４００は、データに冗長性をもたせて管理している。すなわち、同一内容のデータが、少なくとも２つのストレージノードで管理されている。このようにデータを冗長化させて管理することで、高信頼化を図っている。
【００３１】
コントロールノード５００は、ストレージノード１００，２００，３００，４００を管理する。具体的には、コントロールノード５００は、データの配置状況を示す論理ボリューム情報を保持している。コントロールノード５００は、ストレージノード１００，２００，３００，４００からデータの管理に関する情報を取得し、必要に応じて論理ボリュームを更新する。また、コントロールノード５００は、論理ボリュームが更新されると、その影響を受けるストレージノードに対して更新内容を通知する。論理ボリュームの詳細は、後述する。
【００３２】
アクセスノード６００は、端末装置２１，２２，２３に対して、ストレージノード１００，２００，３００，４００が管理するデータを利用した情報処理のサービスを提供する。すなわち、アクセスノード６００は、端末装置２１，２２，２３からの要求に応答して所定のプログラムを実行し、必要に応じてストレージノード１００，２００，３００，４００にアクセスする。ここで、アクセスノード６００は、コントロールノード５００から論理ボリューム情報を取得し、取得した論理ボリュームに基づいてアクセスすべきストレージノードを特定する。
【００３３】
管理ノード３０は、分散ストレージシステムの管理者が操作する端末装置である。分散ストレージシステムの管理者は、管理ノード３０を操作して、ストレージノード１００，２００，３００，４００、コントロールノード５００およびアクセスノード６００にアクセスし、運用に必要な各種設定を行うことができる。
【００３４】
図３は、ストレージノードのハードウェア構成を示す図である。ストレージノード１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤインタフェース１０３、グラフィック処理装置１０４、入力インタフェース１０５および通信インタフェース１０６を有する。
【００３５】
ＣＰＵ１０１は、ストレージノード１００全体の動作を制御する。
ＲＡＭ１０２は、ＣＰＵ１０１に実行させるＯＳのプログラムやアプリケーションソフトウェア（以下、アプリケーションという）のプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、ＣＰＵ１０１による処理に必要な各種データを記憶する。
【００３６】
ＨＤＤインタフェース１０３は、ストレージ装置１１０と接続される。ＨＤＤインタフェース１０３は、ストレージ装置１１０に内蔵されたＲＡＩＤコントローラ１１５と通信し、ストレージ装置１１０に対するデータの入出力を行う。
【００３７】
ストレージ装置１１０には、ハードディスク装置１１１，１１２，１１３，１１４が設けられている。ストレージ装置１１０は、ＨＤＤ１１１，１１２，１１３，１１４を用いたＲＡＩＤシステムである。ＲＡＩＤコントローラ１１５は、例えばＲＡＩＤ５の機能を有し、ＨＤＤ１１１，１１２，１１３，１１４を所定の単位で束ねた記憶装置として管理する。ストレージ装置１１０は、ＯＳのプログラム、アプリケーションのプログラムを記憶する。ＯＳのプログラム、アプリケーションのプログラムは、例えばストレージノード１００に別個に設けられた他の記憶装置に格納されてもよい。また、ストレージ装置１１０は、アクセスノード６００が扱うデータを記憶する。
【００３８】
グラフィック処理装置１０４は、モニタ１１と接続される。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って画像をモニタ１１の画面に表示させる。
入力インタフェース１０５は、キーボード１２とマウス１３と接続される。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。
【００３９】
通信インタフェース１０６は、ネットワーク１０と接続され、ストレージノード２００，３００，４００、コントロールノード５００やアクセスノード６００とのデータの送受信を行う。
【００４０】
なお、ストレージノード２００，３００，４００、コントロールノード５００、アクセスノード６００、管理ノード３０および端末装置２１，２２，２３についてもストレージノード１００と同様のハードウェア構成により実現できる。ただし、アクセスノード６００は、ネットワーク１０と接続するための通信インタフェースに加えて、ネットワーク２０と接続するための通信インタフェースを更に備えている。また、コントロールノード５００、アクセスノード６００、管理ノード３０および端末装置２１，２２，２３は、ＨＤＤインタフェース１０３の代わりにＨＤＤやＳＳＤ（Solid State Drive）などを備えている。
【００４１】
次に、コントロールノード５００がアクセスノード６００に対して提供する論理ボリュームについて説明する。論理ボリュームは、ストレージノード２００，３００，４００によって分散管理されているデータを、アクセスノード６００から容易に利用できるようにするための仮想的なボリュームである。
【００４２】
図４は、論理ボリュームの第１のデータ構造例を示す図である。論理ボリューム７００には、“ＶＶ−Ａ”という論理ボリュームＩＤが付与されている。また、ストレージノード１００，２００，３００，４００には、それぞれ“ＳＮ−Ａ”，“ＳＮ−Ｂ”，“ＳＮ−Ｃ”，“ＳＮ−Ｄ”というノードＩＤが付与されている。
【００４３】
ストレージノード１００，２００，３００，４００に接続されたストレージ装置１１０，２１０，３１０，４１０それぞれにおいて、例えばＲＡＩＤ５の論理ディスクが構成されている。この論理ディスクは６つのスライスに分割されて、各ストレージノード内で一元的に管理されている。
【００４４】
ストレージ装置１１０内の記憶領域は、６つのスライス１２１〜１２６に分割されている。ストレージ装置２１０内の記憶領域は、６つのスライス２２１〜２２６に分割されている。ストレージ装置３１０内の記憶領域は、６つのスライス３２１〜３２６に分割されている。ストレージ装置４１０内の記憶領域は、６つのスライス４２１〜４２６に分割されている。
【００４５】
論理ボリューム７００は、セグメント７１０，７２０，７３０，７４０，７５０，７６０という単位で構成される。セグメント７１０，７２０，７３０，７４０，７５０，７６０は、プライマリスライス７１１，７２１，７３１，７４１，７５１，７６１とセカンダリスライス７１２，７２２，７３２，７４２，７５２，７６２との組で構成される。
【００４６】
図４では、スライスＩＤを“Ｐ”または“Ｓ”のアルファベットと数字との組み合わせで示している。“Ｐ”はプライマリスライス（主データを格納するためのスライス）であることを示している。“Ｓ”はセカンダリスライス（副データを格納するためのスライス）であることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば１番目のセグメント７１０のプライマリスライス７１１が“Ｐ１”で示され、セカンダリスライスが“Ｓ１”で示される。そして、“Ｐ１”と“Ｓ１”のスライスには、同一のデータが格納され、データの冗長化が図られる。
【００４７】
このような構造の論理ボリューム７００の各プライマリスライスおよびセカンダリスライスが、ストレージ装置１１０，２１０，３１０，４１０内の何れかのスライスに対応付けられる。例えば、セグメント７１０のプライマリスライス７１１がストレージ装置１１０のスライス１２１に対応付けられ、セカンダリスライス７１２がストレージ装置３１０のスライス３２２に対応付けられる。
【００４８】
そして、ストレージ装置１１０，２１０，３１０，４１０には、自己のスライスに対応付けられたプライマリスライスまたはセカンダリスライスのデータが格納される。なお、論理ボリュームは、データの用途やアクセス元の権限などに応じて、複数作成することができる。論理ボリューム情報に現れないスライスはアクセスノード６００から認識することができないため、論理ボリュームを使い分けることはセキュリティの向上にも寄与する。
【００４９】
図５は、各ノードの機能構成を示す図である。ストレージノード１００は、キャッシュ１３０、制御情報記憶部１４０、データアクセス受付部１５０、データアクセス制御部１６０、キャッシュ管理部１７０、ディスクアクセス部１８０、冗長化処理部１９０およびスライス管理部１９５を有する。
【００５０】
キャッシュ１３０は、ストレージノード１００のデータの書き込み処理や読み出し処理などの際に、該当のデータを一時的に格納するためのメモリ領域である。キャッシュ１３０は、ＲＡＭ１０２上に設けられ、ストレージ装置１１０に記憶されたデータが配置される。
【００５１】
制御情報記憶部１４０は、キャッシュ１３０の利用状況を管理するための管理情報を記憶する。管理情報としては、例えば、ＬＲＵ（Least Recently Used）を管理するための情報が考えられる。また、制御情報記憶部１４０には、ストレージ装置１１０が有するスライスについてのスライス情報が格納される。スライス情報には、スライスを特定するためのアドレスやスライスへの割り当ての種別（プライマリスライスまたはセカンダリスライスの何れか）などが含まれる。また、各スライスについて、同一セグメントに属する対応するスライスを管理しているストレージノードを特定するための情報も含まれる。
【００５２】
データアクセス受付部１５０は、アクセスノード６００からのアクセス要求やコントロールノード５００からの冗長化回復処理の要求を受け付けると、受け付けた要求をデータアクセス制御部１６０に出力する。データアクセス受付部１５０が受け付ける要求には、ストレージノード２００，３００，４００からの副データの書き込み要求も含まれる。また、データアクセス受付部１５０は、データアクセス制御部１６０からデータを受け付けた旨の通知や読み出したデータを受け付けると、受け付けた情報をアクセスノード６００に送信する。
【００５３】
なお、冗長化回復処理は、プライマリスライスとセカンダリスライスとの同期を取るための処理である。例えば、ストレージノード２００が障害によって通信不能となった場合には、ストレージノード１００，３００，４００がストレージノード２００に記憶されていたプライマリスライスとセカンダリスライスとの役割を引き継ぐ。この場合、コントロールノード５００からの指示によりストレージノード１００，３００，４００の間で冗長化回復処理が実行される。
【００５４】
データアクセス制御部１６０は、データアクセス受付部１５０から受け付けたアクセス要求や冗長化回復処理の要求に応じて、以下の処理を行う。
（１）書き込み処理
データアクセス制御部１６０は、アドレスを指定したデータの書き込み要求（Ｗｒｉｔｅ要求）を受け付けると、Ｗｒｉｔｅ要求に含まれる書き込み対象のデータ（以下、書き込みデータという）とアドレスとをキャッシュ管理部１７０に出力する。そして、データアクセス制御部１６０は、Ｗｒｉｔｅ要求の受付応答をデータアクセス受付部１５０に出力する。そして、データアクセス制御部１６０は、所定のタイミングでキャッシュ管理部１７０から書き込みデータを取得し、ディスクアクセス部１８０にストレージ装置１１０への該当のデータの格納を指示する。なお、ストレージノード２００，３００，４００から受け付ける副データの書き込み要求に対しても、この書き込み処理が行われる。
【００５５】
（２）読み出し処理
データアクセス制御部１６０は、アドレスを指定したデータの読み出し要求（Ｒｅａｄ要求）を受け付けると、Ｒｅａｄ要求に含まれる読み出し対象のデータ（以下、読み出しデータという）がキャッシュ１３０から取得可能であるか否かをキャッシュ管理部１７０に確認する。データアクセス制御部１６０は、キャッシュ１３０から取得可能である場合、キャッシュ管理部１７０を介して読み出しデータを取得しデータアクセス受付部１５０に出力する。データアクセス制御部１６０は、キャッシュ１３０から取得不可能である場合、ディスクアクセス部１８０を介してストレージ装置１１０から読み出しデータを取得し、データアクセス受付部１５０に出力する。なお、データアクセス制御部１６０は、Ｒｅａｄ要求で指定された読み出しデータに応じてストレージ装置１１０から次にＲｅａｄ要求を受け付ける先読み対象のデータ（以下、先読みデータという）を取得して、キャッシュ管理部１７０に出力する。
【００５６】
（３）冗長化回復処理
データアクセス制御部１６０は、冗長化回復処理の要求を受け付けると、ディスクアクセス部１８０を介してストレージ装置１１０から該当のスライスのデータ（以下、冗長化スライスデータという）の一部を取得し、キャッシュ管理部１７０に出力する。その後、データアクセス制御部１６０は、キャッシュ１３０の空き容量に応じてストレージ装置１１０から残りのデータを順次先読みし、キャッシュ管理部１７０に出力する。
【００５７】
キャッシュ管理部１７０は、キャッシュ１３０に対するデータの入出力を管理する。また、キャッシュ管理部１７０は、キャッシュ１３０のキャッシュ容量を管理し、必要に応じてキャッシュ１３０のメモリ領域を解放する。
【００５８】
また、データアクセス制御部１６０は、Ｗｒｉｔｅ要求で指定されたアドレスが属するスライスがプライマリスライスである場合、セカンダリスライスを管理するストレージノードに対して、副データの書き込みを行う旨を送信するよう冗長化処理部１９０に指示する。
【００５９】
キャッシュ管理部１７０は、データアクセス制御部１６０から取得した書き込みデータをキャッシュ１３０に格納する。キャッシュ管理部１７０は、書き込みデータのストレージ装置１１０上の書き込み対象アドレスや、キャッシュ１３０上のアドレスを管理するため書き込みリストを設定して、制御情報記憶部１４０に格納する。
【００６０】
また、キャッシュ管理部１７０は、データアクセス制御部１６０から取得した読み出し要求に応じた読み出しデータをキャッシュ１３０から抽出してデータアクセス制御部１６０に出力する。キャッシュ管理部１７０は、該当の読み出しデータをキャッシュ１３０から抽出できなかった場合には、その旨をデータアクセス制御部１６０に通知する。
【００６１】
キャッシュ管理部１７０は、データアクセス制御部１６０から先読みデータを取得した場合、取得した先読みデータをキャッシュ１３０に格納する。そして、キャッシュ管理部１７０は、先読みデータのストレージ装置１１０上のアドレスや、キャッシュ１３０上のアドレスを管理するための読み出しリストを設定して、制御情報記憶部１４０に格納する。
【００６２】
また、キャッシュ管理部１７０は、冗長化回復処理に伴ってデータアクセス制御部１６０から冗長化スライスデータを受け付けると、受け付けた冗長化スライスデータをキャッシュ１３０に格納する。キャッシュ管理部１７０は、データを格納したアドレスを管理するための冗長化処理用リストを設定して、制御情報記憶部１４０に格納する。更に、キャッシュ管理部１７０は、冗長化スライスデータをキャッシュ１３０から順次読み出して、冗長化処理部１９０に出力する。
【００６３】
更に、キャッシュ管理部１７０は、キャッシュ１３０の使用量を定期的に監視し、必要に応じてキャッシュ１３０に格納されているデータを削除し、該当のデータが格納されていた領域を再利用可能とする。
【００６４】
ディスクアクセス部１８０は、データアクセス制御部１６０から取得する書き込みデータをストレージ装置１１０に格納する。また、ディスクアクセス部１８０は、データアクセス制御部１６０の指示に応じて、ストレージ装置１１０から読み出しデータを取得し、データアクセス制御部１６０に出力する。
【００６５】
冗長化処理部１９０は、ストレージノード２００，３００，４００に対する副データの書き込み指示を行う。例えば、冗長化処理部１９０は、ストレージノード１００が管理するプライマリスライスにＷｒｉｔｅ要求があると、データアクセス制御部１６０からセカンダリ側のストレージノードに対する副データの書き込み要求を受け付ける。そして、冗長化処理部１９０は、この要求を受け付けると、該当のプライマリスライスに対応するセカンダリスライスを管理するストレージノードにも書き込みデータと同一のデータ（副データ）の書き込みを行うよう指示する。
【００６６】
スライス管理部１９５は、ストレージノード１００の稼動状態を定期的にコントロールノード５００に通知する。スライス管理部１９５は、コントロールノード５００からスライス情報の取得要求があると、制御情報記憶部１４０に記憶されたスライス情報をコントロールノード５００に送信する。スライス管理部１９５は、コントロールノード５００からスライス情報の更新の指示を受け付けると、指示された更新内容を、制御情報記憶部１４０に記憶されたスライス情報に反映させる。
【００６７】
なお、ストレージノード２００，３００，４００に関しても、ストレージノード１００と同一の機能構成により実現できる。
コントロールノード５００は、スライス情報群記憶部５１０および論理ボリューム管理部５２０を有する。
【００６８】
スライス情報群記憶部５１０には、ストレージノード１００，２００，３００，４００が管理するスライス情報が格納される。スライス情報群記憶部５１０に格納されるスライス情報は、ストレージノード１００，２００，３００，４００が保持している情報を収集したものである。
【００６９】
論理ボリューム管理部５２０は、ストレージノード１００，２００，３００，４００から稼働状態を示す通知をネットワーク１０経由で受信する。これにより、論理ボリューム管理部５２０は、各ストレージノードが正常に稼働しているか否かを知る。また、論理ボリューム管理部５２０は、必要に応じてストレージノード１００，２００，３００，４００からスライス情報を取得し、スライス情報群記憶部５１０に格納されたスライス情報を更新する。また、論理ボリューム管理部５２０は、スライス情報群記憶部５１０のスライス情報に基づいて、アクセスノード６００に格納される論理ボリュームを作成する。
【００７０】
また、論理ボリューム管理部５２０は、ストレージノード１００，２００，３００，４００の何れかで障害が発生した場合、スライス情報および論理ボリューム情報を更新する。例えば、論理ボリューム管理部５２０は、セカンダリスライスをプライマリスライスに変更する。また、変更後のプライマリスライスに対応するセカンダリスライスを稼動中のストレージノードの空きスライスから特定する。そして、論理ボリューム管理部５２０は、特定したスライスをセカンダリスライスに割り当て、スライス情報および論理ボリューム情報を更新する。論理ボリューム管理部５２０は、稼動中のストレージノードに対して更新後のスライス構成となるよう変更を促す。すなわち、論理ボリューム管理部５２０は、ストレージノード１００，２００，３００，４００に対して冗長化回復処理の要求を送信する。
【００７１】
アクセスノード６００は、論理ボリューム記憶部６１０とデータアクセス制御部６２０を有する。
論理ボリューム記憶部６１０には、論理ボリューム情報が格納される。論理ボリュームでは、ストレージ装置１１０，２１０，３１０，４１０が管理する記憶領域を一元的に扱うために、仮想的なアドレスである論理アドレスによって各セグメントが管理されている。論理ボリューム情報には、セグメントを特定するための論理アドレスやセグメントに属するプライマリスライスおよびセカンダリスライスを特定するための情報が含まれる。論理ボリュームは、コントロールノード５００によって作成され、更新される。
【００７２】
データアクセス制御部６２０は、実行中のプログラムからデータへのアクセス要求があると、まず論理ボリューム記憶部６１０に論理ボリューム情報が格納されているか否か確認する。論理ボリューム情報が格納されていない場合、データアクセス制御部６２０は、コントロールノード５００から論理ボリューム情報を取得し、取得した論理ボリューム情報を論理ボリューム記憶部６１０に格納する。
【００７３】
そして、データアクセス制御部６２０は、論理ボリューム情報に基づいてアクセス先となるストレージノードを特定する。すなわち、利用するデータが属するセグメントを特定し、特定したセグメントのプライマリスライスを管理するストレージノードを特定する。その後、データアクセス制御部６２０は、特定したストレージノードにアクセスする。
【００７４】
ここで、アクセスに失敗した場合、コントロールノード５００から論理ボリューム情報を取得した後にデータの配置状況が変化したことが考えられるため、データアクセス制御部６２０は、コントロールノード５００から最新の論理ボリューム情報を取得して、再びストレージノードへのアクセスを試みる。
【００７５】
図６は、キャッシュの構成を示す図である。キャッシュ１３０には、必要に応じて書き込みキャッシュ１３１、読み出しキャッシュ１３２および冗長化回復処理用キャッシュ１３３が設けられる。
【００７６】
書き込みキャッシュ１３１は、書き込みデータを格納するためのキャッシュである。
読み出しキャッシュ１３２は、先読みデータを格納するためのキャッシュである。
冗長化回復処理用キャッシュ１３３は、冗長化スライスデータを格納するためのキャッシュである。
【００７７】
キャッシュ管理部１７０は、ＲＡＭ１０２上にキャッシュ１３０を設ける。なお、ＯＳを介してキャッシュ１３０のデータをストレージ装置１１０に格納する処理は、例えば、ダイレクトＩＯ（Input / Output）の手法により実行される。
【００７８】
図７は、各リストのデータ構造例を示す図である。キャッシュ管理用リスト１４１は、制御情報記憶部１４０に格納される。キャッシュ管理用リスト１４１には、書き込みリスト１４１ａ、読み出しリスト１４１ｂおよび冗長化回復処理用リスト１４１ｃが含まれる。キャッシュ管理用リスト１４１は、キャッシュ管理部１７０により設定され、制御情報記憶部１４０に格納される。
【００７９】
書き込みリスト１４１ａは、書き込みデータのストレージ装置１１０における書き込み対象アドレスと書き込みキャッシュ１３１におけるアドレスとを管理するための管理情報である。書き込みリスト１４１ａには、ノードＬ１，Ｌ２，・・・，Ｌｎが設けられる。
【００８０】
ノードＬ１は、先頭のノードであり、最も新しくＷｒｉｔｅ要求を受け付けた書き込みデータＡに関する情報を示している。ノードＬｎは、最後尾のノードであり、最も過去にＷｒｉｔｅ要求を受け付けた書き込みデータＮに関する情報を示している。ノードＬ１，Ｌ２，・・・，Ｌｎには、各書き込みデータのストレージ装置１１０への書き込み対象アドレスと、キャッシュ１３０の書き込みアドレスと、を示す情報が設定される。また、ノードＬ１，Ｌ２，・・・，Ｌｎには、リストの次のノードを示すポインタが設定される。
【００８１】
読み出しリスト１４１ｂおよび冗長化回復処理用リスト１４１ｃも、書き込みリスト１４１ａと同様のデータ構造により実現できる。
ただし、読み出しリスト１４１ｂでは、各先読みデータについてのストレージ装置１１０におけるアドレスと読み出しキャッシュ１３２におけるアドレスとを管理するための情報が設定される。読み出しリスト１４１ｂでは、最も新しく登録された、または、アクセスのあった先読みデータがリストの先頭に設定される。したがって、読み出しリスト１４１ｂの最後尾側に向かうほど、アクセス時が過去になる。すなわち、読み出しリスト１４１ｂの最後尾に設定されている先読みデータは、最後のアクセス時から最も長時間が経過しているデータとなる。
【００８２】
また、冗長化回復処理用リスト１４１ｃでは、冗長化スライスデータについてのストレージ装置１１０におけるアドレスと冗長化回復処理用キャッシュ１３３におけるアドレスとを管理するための情報が設定される。冗長化回復処理用リスト１４１ｃでは、最も新しく登録された冗長化スライスデータがリストの先頭に設定される。したがって、冗長化回復処理用リスト１４１ｃの最後尾側に向かうほど、過去に登録されたものとなる。すなわち、冗長化回復処理用リスト１４１ｃの最後尾に設定されている冗長化スライスデータは、最後のアクセス時から最も長時間が経過しているデータとなる。
【００８３】
図８は、スライス管理テーブルのデータ構造例を示す図である。スライス管理テーブル１４２は、制御情報記憶部１４０に格納される。スライス管理テーブル１４２には、ストレージノード１００のノードＩＤ“ＳＮ−Ａ”が設定されている。
【００８４】
また、スライス管理テーブル１４２には、スライスＩＤを示す項目、実アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ボリュームＩＤを示す項目、セグメントＩＤを示す項目、リンクを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのスライスについてのスライス情報を示す。
【００８５】
スライスＩＤを示す項目には、スライスＩＤが設定される。実アドレスを示す項目には、スライスの先頭ブロックを示す物理的なアドレスが設定される。ブロック数を示す項目には、スライスに含まれるブロックの数が設定される。種別を示す項目には、“Ｐ”，“Ｓ”，“Ｆ”の何れかの値が設定される。“Ｐ”はプライマリスライスを意味し、“Ｓ”はセカンダリスライスを意味し、“Ｆ”はセグメントが対応付けられてないこと（フリー）を意味する。ボリュームＩＤを示す項目には、スライスに対応付けられたセグメントが属する論理ボリュームの論理ボリュームＩＤが設定される。セグメントＩＤを示す項目には、スライスに対応付けられたセグメントのセグメントＩＤが設定される。
【００８６】
リンクを示す項目には、種別が“Ｐ”であるスライスについては、対応するセカンダリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。また、種別が“Ｓ”であるスライスについては、対応するプライマリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。
【００８７】
スライス管理テーブル１４２に格納されるスライス情報は、スライス管理部１９５によって適宜更新される。また、コントロールノード５００のスライス情報群記憶部５１０にも、同様のテーブルが格納される。
【００８８】
スライス管理テーブル１４２には、例えば、スライスＩＤが“１”、実アドレスが“０”、ブロック数が“１０２４”、種別が“Ｐ”、ボリュームＩＤが“ＶＶ−１”、セグメントＩＤが“１”、リンクが“ＳＮ−Ｃ，２”という情報が格納される。
【００８９】
これは、ストレージノード１００が管理する０ブロックから１０２３ブロックまでの記憶領域が１つのスライスを形成しており、論理ボリューム“ＶＶ−１”の１番目のセグメントのプライマリスライスが割り当てられていることを示している。また、そのプライマリスライスに対応するセカンダリスライスが、ストレージノード“ＳＮ−Ｃ”の２番目のスライスに割り当てられていることを示している。
【００９０】
図９は、論理ボリューム管理テーブルのデータ構造例を示す図である。論理ボリューム管理テーブル６１１は、論理ボリューム記憶部６１０に格納される。論理ボリューム管理テーブル６１１は、論理ボリューム“ＶＶ−１”についてのテーブルである。
【００９１】
論理ボリューム管理テーブル６１１には、セグメントＩＤを示す項目、論理アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ノードＩＤを示す項目および実アドレスを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
【００９２】
セグメントＩＤを示す項目には、セグメントを識別するセグメントＩＤが設定される。論理アドレスを示す項目には、セグメントの先頭ブロックを示す論理ボリューム上の仮想的なアドレスが設定される。ブロック数を示す項目には、セグメントに含まれるブロックの数が設定される。
【００９３】
種別を示す項目には、“Ｐ”または“Ｓ”の何れかの値が設定される。ノードＩＤを示す項目には、割り当て先のストレージノードを識別するノードＩＤが設定される。実アドレスを示す項目には、割り当て先のスライスの先頭ブロックを示す物理的なアドレスが設定される。
【００９４】
論理ボリューム管理テーブル６１１に格納される情報は、コントロールノード５００のスライス情報群記憶部５１０に格納されたスライス情報に基づいて、論理ボリューム管理部５２０によって生成される。
【００９５】
図１０は、リクエストパケットの構造例を示す図である。リクエストパケット９００は、コントロールノード５００およびアクセスノード６００により生成され、ストレージノード１００，２００，３００，４００に送信される。
【００９６】
アクセスノード６００は、例えば、アクセスノード６００で実行されるアプリケーションの処理に応じて、リクエストパケット９００を用いてＷｒｉｔｅ要求またはＲｅａｄ要求を生成する。そして、アクセスノード６００は、生成したＷｒｉｔｅ要求またはＲｅａｄ要求をストレージノード１００，２００，３００，４００に送信する。
【００９７】
また、コントロールノード５００は、例えば、ストレージノード１００，２００，３００，４００の何れかが通信不能となった場合、論理ボリューム７００におけるプライマリスライスとセカンダリスライスとの割り当てを変更する。コントロールノード５００は、変更結果への反映を促す冗長化回復要求をリクエストパケット９００を用いて生成し、稼動中のストレージノードに送信する。
【００９８】
リクエストパケット９００は、ヘッダ部９１０およびデータ部９２０を有する。
ヘッダ部９１０には、領域９１１，９１２，９１３が含まれている。
領域９１１には、プロセス種別を示す情報が設定される。プロセス種別を示す情報とは、例えば、Ｗｒｉｔｅ要求、Ｒｅａｄ要求および冗長化回復要求などを示す情報である。
【００９９】
領域９１２には、対象アドレスを示す情報が設定される。対象アドレスとは、例えばストレージノード１００に対するＷｒｉｔｅ要求であれば、ストレージ装置１１０における書き込みデータの書き込み対象アドレスを示す情報である。また、ストレージノード１００に対するＲｅａｄ要求であれば、ストレージノード１１０における読み出しデータの読み出し対象アドレスを示す情報である。
【０１００】
領域９１３には、データサイズを示す情報が設定される。データサイズを示す情報とは、データ部９２０に設定されたデータのデータ量を示す情報である。
データ部９２０には、領域９１１に格納された内容に応じたデータが設定される。例えば、領域９１１にＷｒｉｔｅ要求を示す情報が設定される場合、データ部９２０には、書き込みデータが設定される。また、例えば、領域９１１に冗長化回復要求を示す情報が設定される場合、データ部９２０には、冗長化回復処理の対象とするスライスを示す情報が設定される。
【０１０１】
次に、以上のような構成およびデータ構造のストレージノード１００，２００，３００，４００において実行される処理の詳細を説明する。なお、以下では、ストレージノード１００の構成により説明するが、ストレージノード２００，３００，４００に関しても同様の処理となる。
【０１０２】
図１１は、データアクセス処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］データアクセス受付部１５０は、コントロールノード５００またはアクセスノード６００からリクエストパケット９００を受け付ける。
【０１０３】
［ステップＳ１２］データアクセス受付部１５０は、リクエストパケット９００の領域９１１のプロセス種別がＷｒｉｔｅ要求を示す情報であるか否かを判定する。Ｗｒｉｔｅ要求を示す情報である場合、処理がステップＳ１３に移される。Ｗｒｉｔｅ要求を示す情報でない場合、処理がステップＳ１４に移される。
【０１０４】
［ステップＳ１３］データアクセス制御部１６０は、Ｗｒｉｔｅ要求に含まれる書き込みデータの書き込み処理を実行する。
［ステップＳ１４］データアクセス受付部１５０は、リクエストパケット９００の領域９１１のプロセス種別がＲｅａｄ要求を示す情報であるか否かを判定する。Ｒｅａｄ要求を示す情報である場合、処理がステップＳ１５に移される。Ｒｅａｄ要求を示す情報でない場合、処理がステップＳ１６に移される。
【０１０５】
［ステップＳ１５］データアクセス制御部１６０は、Ｒｅａｄ要求で指定される読み出しデータの読み出し処理を実行する。
［ステップＳ１６］データアクセス受付部１５０は、リクエストパケット９００の領域９１１のプロセス種別が冗長化回復要求を示す情報であるか否かを判定する。冗長化回復要求を示す情報である場合、処理がステップＳ１７に移される。冗長化回復要求を示す情報でない場合、処理が完了する。
【０１０６】
［ステップＳ１７］データアクセス制御部１６０は、冗長化回復要求に応じて冗長化回復処理を実行する。
このように、ストレージノード１００は、受け付けたリクエストに応じて、書き込み処理、読み出し処理および冗長化回復処理などを実行する。
【０１０７】
なお、各リクエストに応じて、キャッシュ１３０の利用方法が異なる。以下では、各リクエストに応じた処理の手順を詳細に説明する。
まず、上記ステップＳ１３の書き込み処理を説明する。
【０１０８】
図１２は、書き込み処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図１１のステップＳ１３の処理を詳細に示すものである。
【０１０９】
［ステップＳ２１］データアクセス受付部１５０は、アクセスノード６００から受信したＷｒｉｔｅ要求を取得し、データアクセス制御部１６０に出力する。データアクセス制御部１６０は、取得したＷｒｉｔｅ要求をキャッシュ管理部１７０に出力する。
【０１１０】
［ステップＳ２２］キャッシュ管理部１７０は、取得したＷｒｉｔｅ要求に含まれる書き込みデータを書き込みキャッシュ１３１に格納する。そして、キャッシュ管理部１７０は、Ｗｒｉｔｅ要求に含まれるストレージノード１１０の書き込み対象アドレスと書き込みキャッシュ１３１に実際に書き込んだアドレスとを該当の書き込みデータの管理情報として書き込みリスト１４１ａに設定する。このとき、キャッシュ管理部１７０は、該当のデータを書き込みリスト１４１ａの先頭に配置する。
【０１１１】
［ステップＳ２３］キャッシュ管理部１７０および冗長化処理部１９０は、上記ステップＳ２２でキャッシュに格納した書き込みデータに対する副データの他のストレージノードへの書き込み処理を指示する。すなわち、冗長化処理部１９０は、キャッシュ管理部１７０から副データと副データを送信すべきストレージノードを特定する情報（例えば、ＩＰ（Internet Protocol）アドレス）とを取得し、該当のストレージノードに副データの書き込みを指示する。該当のストレージノード（プライマリスライスに対応するセカンダリスライスを管理するストレージノード）は、この指示に応じて副データの書き込み処理を実行する。
【０１１２】
［ステップＳ２４］冗長化処理部１９０は、セカンダリスライスを管理するストレージノードから副データの受信応答を受け付ける。冗長化処理部１９０は、受信応答を受け付けた旨をキャッシュ管理部１７０に通知する。
【０１１３】
［ステップＳ２５］キャッシュ管理部１７０は、書き込みキャッシュ１３１への書き込みデータの書き込みが完了したことをデータアクセス制御部１６０を介してデータアクセス受付部１５０に通知する。データアクセス受付部１５０は、書き込みの完了を示す書き込み完了応答をアクセスノード６００に送信する。
【０１１４】
［ステップＳ２６］キャッシュ管理部１７０は、該当の副データに対応する主データを書き込みキャッシュ１３１から読み出す。そして、キャッシュ管理部１７０は、制御情報記憶部１４０に記憶された書き込みリスト１４１ａを参照して、主データのストレージ装置１１０に対する書き込み対象のアドレスを特定する。キャッシュ管理部１７０は、特定した書き込み対象のアドレスを指定して、読み出した主データをデータアクセス制御部１６０に出力する。データアクセス制御部１６０は、ストレージ装置１１０の指定されたアドレスへの主データの書き込みをディスクアクセス部１８０に指示する。ディスクアクセス部１８０は、ストレージ装置１１０への主データの書き込みを実行する。
【０１１５】
［ステップＳ２７］キャッシュ管理部１７０は、上記ステップＳ２６で読み出した主データを記憶していた書き込みキャッシュ１３１上の領域を再利用可能とする。
［ステップＳ２８］キャッシュ管理部１７０は、上記ステップＳ２６で読み出した主データに関する管理情報を書き込みリスト１４１ａから削除する。
【０１１６】
このように、ストレージノード１００は、書き込みデータを書き込みキャッシュ１３１に格納した後、セカンダリスライスを管理する他のストレージノードに副データの書き込みを指示する。また、ストレージノード１００は、書き込みキャッシュ１３１から読み出した書き込みデータをストレージ装置１１０に格納する。そして、ストレージノード１００は、副データの送信に対して他のストレージノードから受信応答を受け付け、かつ、対応する主データのストレージ装置１１０への格納が完了すると、書き込みキャッシュ１３１の該当の書き込みデータを記憶していた領域を再利用可能とする。
【０１１７】
なお、ストレージノード１００がストレージ装置１１０に主データを格納するタイミングは、任意に設定することができる。例えば、ストレージ装置１１０に対する負荷を監視して、負荷が小さいときにストレージ装置１１０への主データの書き込みを実行することが考えられる。また、所定の周期でストレージ装置１１０への主データの書き込みを実行することが考えられる。このようにすると、ストレージ装置１１０へのデータアクセスの頻度が低減されるので、ストレージノード１００のデータアクセスに対する応答性を向上することができる。
【０１１８】
また、アクセスノード６００に対する応答性を高めるために、ステップＳ２５の書き込み完了応答の処理をステップＳ２２の後に行うようにすることも考えられる。
次に、上記ステップＳ２３の処理を説明する。ここで、以下ではストレージノード１００の構成を用いて説明するが、ストレージノード２００，３００，４００でも同様の処理となる。
【０１１９】
図１３は、副データの書き込み処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図１３のステップＳ２３の処理を詳細に示すものである。
【０１２０】
［ステップＳ３１］データアクセス受付部１５０は、プライマリスライスを管理する他のストレージノードから、自ノードのセカンダリスライスに対する副データの書き込み要求を受信する。データアクセス受付部１５０は、受信した書き込み要求を取得し、データアクセス制御部１６０に出力する。データアクセス制御部１６０は、取得した書き込み要求をキャッシュ管理部１７０に出力する。
【０１２１】
［ステップＳ３２］キャッシュ管理部１７０は、書き込み要求に含まれる副データを書き込みキャッシュ１３１に格納する。また、キャッシュ管理部１７０は、書き込み要求で指定されるストレージ装置１１０の書き込み対象アドレスと、書き込みキャッシュ１３１の副データを格納したアドレスとを取得し、これらを該当の副データの管理情報として書き込みリスト１４１ａに設定する。
【０１２２】
［ステップＳ３３］データアクセス受付部１５０は、書き込み要求の送信元のストレージノードに、副データの受け付けが完了した旨を示す受付応答を送信する。
［ステップＳ３４］キャッシュ管理部１７０は、受信した副データを書き込みキャッシュ１３１から読み出す。そして、キャッシュ管理部１７０は、制御情報記憶部１４０に記憶された書き込みリスト１４１ａを参照して、副データのストレージ装置１１０に対する書き込み対象のアドレスを特定する。キャッシュ管理部１７０は、特定した書き込み対象のアドレスを指定して、読み出した副データをデータアクセス制御部１６０に出力する。データアクセス制御部１６０は、ストレージ装置１１０の指定されたアドレスへの副データの書き込みをディスクアクセス部１８０に指示する。ディスクアクセス部１８０は、ストレージ装置１１０への副データの書き込みを実行する。
【０１２３】
［ステップＳ３５］キャッシュ管理部１７０は、上記ステップＳ３４で読み出した副データを記憶していた書き込みキャッシュ１３１上の領域を再利用可能とする。
［ステップＳ３６］キャッシュ管理部１７０は、上記ステップＳ３４で読み出した副データに関する管理情報を書き込みリスト１４１ａから削除する。
【０１２４】
このように、ストレージノード１００は、副データの書き込み要求を受け付けると、書き込みキャッシュ１３１に副データを格納した後、プライマリスライスを管理する他のストレージノードに副データの受付応答を送信する。そして、ストレージノード１００は、書き込みキャッシュ１３１から読み出した書き込みデータをストレージ装置１１０に格納する。その後、ストレージノード１００は、書き込みキャッシュ１３１の該当の副データを記憶していた領域を再利用可能とする。
【０１２５】
なお、ストレージノード１００がストレージ装置１１０に主データを格納するタイミングは、図１２でも説明したように任意に設定することができる。例えば、ストレージ装置１１０に対する負荷を監視して、負荷が小さいときにストレージ装置１１０への主データの書き込みを実行することが考えられる。また、所定の周期でストレージ装置１１０への主データの書き込みを実行することが考えられる。このようにすると、ストレージ装置１１０へのデータアクセスの頻度が低減されるので、ストレージノード１００のデータアクセスに対する応答性を向上することができる。
【０１２６】
次に、図１１のステップＳ１５の読み出し処理を説明する。
図１４は、読み出し処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図１１のステップＳ１５の処理を詳細に示すものである。
【０１２７】
［ステップＳ４１］データアクセス受付部１５０は、アクセスノード６００から受信したＲｅａｄ要求を取得し、データアクセス制御部１６０に出力する。データアクセス制御部１６０は、取得したＲｅａｄ要求をキャッシュ管理部１７０に出力する。キャッシュ管理部１７０は、Ｒｅａｄ要求を参照して、読み出しデータが先読みデータとして読み出しキャッシュ１３２に格納済みであるか否かを判定する。格納済みである場合、処理がステップＳ４２に移される。格納済みでない場合、処理がステップＳ４５に移される。なお、キャッシュ管理部１７０は、例えば、Ｒｅａｄ要求のリクエストパケット９００に含まれる領域９１２の対象アドレスの情報と、読み出しリスト１４１ｂのストレージ装置１１０におけるアドレスと、を比較することでこの判定を行うことができる。すなわち、キャッシュ管理部１７０は、双方のアドレスが一致するものをＲｅａｄ要求で要求されているデータとして特定できる。
【０１２８】
［ステップＳ４２］キャッシュ管理部１７０は、Ｒｅａｄ要求で要求されている先読みデータを読み出しキャッシュ１３２から取得する。
［ステップＳ４３］データアクセス受付部１５０は、データアクセス制御部１６０を介してキャッシュ管理部１７０から先読みデータを取得して、アクセスノード６００に送信する。
【０１２９】
［ステップＳ４４］キャッシュ管理部１７０は、上記ステップＳ４２で取得した先読みデータを読み出しリスト１４１ｂの先頭に設定する。そして、処理がステップＳ５１に移される。
【０１３０】
［ステップＳ４５］キャッシュ管理部１７０は、Ｒｅａｄ要求で要求されている読み出しデータが読み出しキャッシュ１３１ｂに格納されていないことを通知する。データアクセス制御部１６０は、Ｒｅａｄ要求に含まれる領域９１２を参照して、読み出し対象アドレスを取得し、ディスクアクセス部１８０に該当のアドレスに格納されたデータの読み出しを指示する。ディスクアクセス部１８０は、データアクセス制御部１６０からの読み出し指示に応じて、ストレージ装置１１０から読み出しデータを取得し、データアクセス制御部１６０に出力する。
【０１３１】
［ステップＳ４６］データアクセス制御部１６０は、ディスクアクセス部１８０から取得した読み出しデータをデータアクセス受付部１５０に出力する。データアクセス受付部１５０は、読み出しデータをアクセスノード６００に送信する。
【０１３２】
［ステップＳ４７］データアクセス制御部１６０は、先読みを行うか否かを判定する。例えば、データアクセス制御部１６０は、上記ステップＳ４６で取得した読み出しデータの後に読み出される可能性の高いデータ（例えば、順次アクセスの後の方に読み出されるデータ）が存在するか否かによって先読みを行うか否かの判定を行うことができる。先読みを行う場合、処理がステップＳ４８に移される。先読みを行わない場合、処理がステップＳ５１に移される。
【０１３３】
［ステップＳ４８］データアクセス制御部１６０は、読み出しキャッシュ１３２の使用量が予め定められた所定のしきい値に達していないか、すなわち、読み出しキャッシュ１３２に空きがあるか否かをキャッシュ管理部１７０に問い合わせる。読み出しキャッシュ１３２に空きがある場合、処理がステップＳ４９に移される。読み出しキャッシュ１３２に空きがない場合、処理がステップＳ５１に移される。
【０１３４】
［ステップＳ４９］データアクセス制御部１６０は、ディスクアクセス部１８０を介して、ストレージ装置１１０から先読みデータを取得する。データアクセス制御部１６０は、取得した先読みデータをキャッシュ管理部１７０に出力する。
【０１３５】
［ステップＳ５０］キャッシュ管理部１７０は、取得した先読みデータを読み出しキャッシュ１３２に格納する。キャッシュ管理部１７０は、該当の先読みデータのストレージ装置１１０上のアドレスと読み出しキャッシュ１３０上のアドレスとを読み出しリスト１４１ｂに設定する。このとき、キャッシュ管理部１７０は、該当の先読みデータを読み出しリスト１４１ｂの先頭のノードとする。
【０１３６】
［ステップＳ５１］データアクセス制御部１６０は、データアクセス受付部１５０を介して後続のＲｅａｄ要求があるか否かを判定する。後続のＲｅａｄ要求がある場合、処理がステップＳ４１に移される。後続のＲｅａｄ要求がない場合、処理が完了する。
【０１３７】
このように、ストレージノード１００は、Ｒｅａｄ要求で要求されるデータが読み出しキャッシュ１３２に先読みデータとして格納されている場合には、読み出しキャッシュ１３２から該当の先読みデータを取得して、アクセスノード６００に応答する。また、ストレージノード１００は、Ｒｅａｄ要求で要求されるデータが読み出しキャッシュ１３２に格納されていない場合には、ストレージ装置１１０から該当の読み出しデータを取得してアクセスノード６００に応答する。そして、読み出したデータに続いてＲｅａｄ要求を受け付ける可能性の高いデータを先読みして読み出しキャッシュ１３２に格納する。
【０１３８】
次に、図１１のステップＳ１７の冗長化回復処理を説明する。
図１５は、冗長化回復処理の手順を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図１１のステップＳ１７の処理を詳細に示すものである。
【０１３９】
［ステップＳ６１］データアクセス受付部１５０は、コントロールノード５００から受信した冗長化回復要求をデータアクセス制御部１６０に出力する。
［ステップＳ６２］データアクセス制御部１６０は、冗長化回復要求のリクエストパケット９００を参照して、ストレージノード１００で管理するプライマリスライスのうち、セカンダリスライスを管理するストレージノードと同期すべきスライスを特定する。
【０１４０】
［ステップＳ６３］データアクセス制御部１６０は、セカンダリスライスを管理するストレージノードを特定する。データアクセス制御部１６０は、特定した冗長化処理対象のストレージノードの情報をキャッシュ管理部１７０に出力する。
【０１４１】
［ステップＳ６４］データアクセス制御部１６０は、該当のスライスの冗長化スライスデータが冗長化回復処理用キャッシュ１３３に格納済みであるか否かをキャッシュ管理部１７０に問い合わせる。格納済みである場合、処理がステップＳ６５に移される。格納済みでない場合、処理がステップＳ６６に移される。
【０１４２】
［ステップＳ６５］キャッシュ管理部１７０は、冗長化回復処理用キャッシュ１３３から冗長化スライスデータを読み出す。
［ステップＳ６６］データアクセス制御部１６０は、ディスクアクセス部１８０を介して、ストレージ装置１１０から該当のスライスの冗長化スライスデータを読み出す。データアクセス制御部１６０は、読み出した冗長化スライスデータをキャッシュ管理部１７０に出力する。キャッシュ管理部１７０は、データアクセス制御部１６０から冗長化スライスデータを取得する。そして、キャッシュ管理部１７０は、冗長化回復処理用キャッシュ１３３に取得した冗長化スライスデータを格納する。更に、キャッシュ管理部１７０は、該当の冗長化スライスデータを冗長化回復処理用リスト１４１ｃの先頭のノードに設定する。
【０１４３】
［ステップＳ６７］冗長化処理部１９０は、キャッシュ管理部１７０から冗長化スライスデータの送信単位であるデータブロックを取得する。冗長化処理部１９０は、取得したデータブロックをセカンダリスライスを管理するストレージノードに送信する。
【０１４４】
［ステップＳ６８］冗長化処理部１９０は、他のストレージノードから副データの受信応答を受け付ける。冗長化処理部１９０は、受信応答を受け付けた旨をキャッシュ管理部１７０を介してデータアクセス制御部１６０に通知する。
【０１４５】
［ステップＳ６９］データアクセス制御部１６０は、ステップＳ６８で受け付けた受信応答に対応する送信済みのデータブロックを冗長化回復処理用キャッシュ１３３から削除する。
【０１４６】
［ステップＳ７０］データアクセス制御部１６０は、冗長化回復処理用キャッシュ１３３の使用量が予め定められた所定のしきい値に達していないか、すなわち、冗長化回復処理用キャッシュ１３３に所定量の空きがあるか否かをキャッシュ管理部１７０に問い合わせる。冗長化回復処理用キャッシュ１３３に空きがある場合、処理がステップＳ７１に移される。冗長化回復処理用キャッシュ１３３に空きがない場合、処理がステップＳ７３に移される。
【０１４７】
［ステップＳ７１］データアクセス制御部１６０は、ディスクアクセス部１８０を介して、ストレージ装置１１０から次に送信すべき冗長化スライスデータを、冗長化回復処理用キャッシュ１３３の空き容量に応じたサイズだけ先読みで取得する。データアクセス制御部１６０は、取得した冗長化スライスデータをキャッシュ管理部１７０に出力する。
【０１４８】
［ステップＳ７２］キャッシュ管理部１７０は、取得した冗長化スライスデータを冗長化回復処理用キャッシュ１３３に格納する。キャッシュ管理部１７０は、該当の冗長化スライスデータのストレージ装置１１０上のアドレスと読み出しキャッシュ１３０上のアドレスとを冗長化回復処理用リスト１４１ｃに設定する。このとき、キャッシュ管理部１７０は、該当の冗長化スライスデータを冗長化回復処理用リスト１４１ｃの先頭のノードとする。
【０１４９】
［ステップＳ７３］データアクセス制御部１６０は、未送信の冗長化スライスデータが存在するか否かを判定する。存在する場合、処理がステップＳ７４に移される。存在しない場合、処理が完了する。
【０１５０】
［ステップＳ７４］データアクセス制御部１６０は、次に送信すべき冗長化スライスデータを特定する。そして、処理がステップＳ６４に移される。
このように、ストレージノード１００は、冗長化回復処理に際して、セカンダリスライスを管理するストレージノードに冗長化スライスデータをデータブロック単位で順次送信する。このとき、ストレージノード１００は、冗長化回復処理用キャッシュ１３３の容量に応じて、冗長化スライスデータを先読みする。これにより、ストレージ装置１１０へのアクセス頻度を低減して、データアクセスの応答性を向上することができる。
【０１５１】
また、上記ステップＳ７１，７２について、全ての冗長化スライスデータを送信済みであるなどの理由で、先読み対象のデータが存在しない場合には、これらデータ先読みの処理が行われないようにすることも考えられる。
【０１５２】
次に、キャッシュ管理部１７０によるキャッシュ１３０の使用量の管理処理を説明する。この処理は、例えば、所定の周期で繰り返し実行される。
図１６は、キャッシュ管理処理の手順を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
【０１５３】
［ステップＳ８１］キャッシュ管理部１７０は、読み出しキャッシュ１３２が利用されているか否かを判定する。利用されている場合、処理がステップＳ８２に移される。利用されていない場合、処理がステップＳ８５に移される。
【０１５４】
［ステップＳ８２］キャッシュ管理部１７０は、読み出しキャッシュ１３２の使用量を取得する。
［ステップＳ８３］キャッシュ管理部１７０は、使用量が所定のしきい値よりも大きいか否かを判定する。しきい値よりも大きい場合、処理がステップＳ８４に移される。しきい値以下である場合、処理がステップＳ８５に移される。
【０１５５】
［ステップＳ８４］キャッシュ管理部１７０は、読み出しリスト１４１ｂを参照して、先読みデータのうち、最終アクセス時が古い先読みデータを所定量削除し、該当の先読みデータを格納していた読み出しキャッシュ１３２のメモリ領域を再利用可能とする。ここで、キャッシュ管理部１７０は、読み出しリスト１４１ｂの最後尾から先頭に向かって、順に所定量分の先読みデータを削除することで、この処理を行うことができる。
【０１５６】
このように、キャッシュ管理部１７０は、定期的にキャッシュ１３０の使用量を監視し、必要に応じて、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、読み出しキャッシュ１３２の使用量が過大となって、キャッシュ容量不足となることを防止することができる。
【０１５７】
次に、ストレージノード１００における上記各処理の具体的な流れを説明する。
まず、データの書き込み処理の具体例を説明する。なお、以下では、ストレージノード１００が管理するストレージ装置１１０のスライス１２６（スライスＩＤ“Ｐ６”）に対するデータの書き込みが行われる場合を例示する。
【０１５８】
図１７は、データの書き込みの流れの具体例を示すシーケンス図である。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］データアクセス受付部１５０は、アクセスノード６００からＷｒｉｔｅ要求を受け付ける。
【０１５９】
［ステップＳ１０２］データアクセス受付部１５０は、データアクセス制御部１６０にＷｒｉｔｅ要求を出力する。
［ステップＳ１０３］データアクセス制御部１６０は、Ｗｒｉｔｅ要求に含まれる書き込みデータを書き込みキャッシュ１３１に書き込むようキャッシュ管理部１７０に指示する。
【０１６０】
［ステップＳ１０４］キャッシュ管理部１７０は、書き込みデータを書き込みキャッシュ１３１に格納する。キャッシュ管理部１７０は、Ｗｒｉｔｅ要求で指定されるストレージ装置１１０の書き込み対象アドレスと書き込みキャッシュ１３１におけるアドレスとを対応付けて、書き込みリスト１４１ａの先頭のノードに設定する。そして、キャッシュ管理部１７０は、キャッシュへの記録が完了した旨の応答をデータアクセス制御部１６０に出力する。
【０１６１】
［ステップＳ１０５］データアクセス制御部１６０は、スライスＩＤ“Ｓ６”であるスライス２２５を管理するストレージノード２００への副データの書き込み要求を冗長化処理部１９０に出力する。
【０１６２】
［ステップＳ１０６］冗長化処理部１９０は、受け付けた書き込み要求をストレージノード２００に送信する。
［ステップＳ１０７］冗長化処理部１９０は、ストレージノード２００から書き込み要求を受信した旨を示す受信応答を受信する。
【０１６３】
［ステップＳ１０８］冗長化処理部１９０は、受信応答を受け付けた旨をデータアクセス制御部１６０に通知する。
［ステップＳ１０９］キャッシュ管理部１７０は、セカンダリスライスを管理するストレージノードへの副データの送信が完了したことをデータアクセス制御部１６０に通知する。
【０１６４】
［ステップＳ１１０］データアクセス制御部１６０は、書き込みデータの書き込み完了応答をデータアクセス受付部１５０に出力する。
［ステップＳ１１１］データアクセス受付部１５０は、アクセスノード６００に書き込み完了応答を送信する。
【０１６５】
［ステップＳ１１２］データアクセス制御部１６０は、キャッシュ管理部１７０に書き込みデータを要求する。
［ステップＳ１１３］キャッシュ管理部１７０は、書き込みリスト１４１ａを参照して、書き込みキャッシュ１３１から書き込みデータを取得してデータアクセス制御部１６０に出力する。また、キャッシュ管理部１７０は、書き込みリスト１４１ａを参照して、該当の書き込みデータのストレージ装置１１０における書き込み対象アドレスを取得し、データアクセス制御部１６０に出力する。
【０１６６】
［ステップＳ１１４］データアクセス制御部１６０は、取得した書き込みデータのストレージ装置１１０への書き込み指示をディスクアクセス部１８０に出力する。
［ステップＳ１１５］ディスクアクセス部１８０は、書き込み指示に応じて書き込みデータをストレージ装置１１０に記録し、その記録が完了した旨の応答をデータアクセス制御部１６０に出力する。
【０１６７】
［ステップＳ１１６］データアクセス制御部１６０は、書き込みキャッシュ１３１において、ストレージ装置１１０に記録済みの書き込みデータを記憶した領域を解放するようキャッシュ管理部１７０に指示する。
【０１６８】
［ステップＳ１１７］キャッシュ管理部１７０は、書き込みキャッシュ１３１の指示された領域を再利用可能とし、解放完了をデータアクセス制御部１６０に通知する。
このように、ストレージノード１００は、アクセスノード６００からのＷｒｉｔｅ要求に含まれる書き込みデータを書き込みキャッシュ１３１に格納する。そして、ストレージノード１００は、書き込みキャッシュ１３１から読み出した書き込みデータをセカンダリスライスを管理するストレージノードに送信する。そして、ストレージノード１００は、セカンダリスライスを管理するストレージノードから副データの受信応答を受け付ける。その後、ストレージノード１００は、ストレージ装置１１０に主データの格納が完了すると、書き込みキャッシュ１３１における該当の書き込みデータのために設けた領域を再利用可能とする。
【０１６９】
すなわち、ストレージノード１００は、冗長化の処理に必要な期間のみ書き込みデータを書き込みキャッシュ１３１に保持する。このため、不必要な書き込みデータで書き込みキャッシュ１３１が使用されることを防止することができ、キャッシュ１３０を効率的に利用することができる。
【０１７０】
なお、上記ステップＳ１１２のタイミングは任意とすることができる。例えば、データアクセス制御部１６０は、ストレージ装置１１０の負荷を監視し、ストレージ装置１１０の負荷が所定値よりも小さい場合に、書き込みキャッシュ１３１に格納された書き込みデータをストレージ装置１１０に書き込むことが考えられる。このとき、データアクセス制御部１６０は、書き込みリスト１４１ａを参照して、書き込みキャッシュ１３１に格納された書き込みデータを他の書き込みデータとまとめてストレージ装置１１０に書き込むことが考えられる。
【０１７１】
これにより、ストレージノード１００では、データの書き込み処理の際、ストレージ装置１１０へのアクセス頻度を低減することができる。その結果、アクセスノード６００に対するデータアクセスの応答性を向上することができる。
【０１７２】
次に、上記ステップＳ１０６，Ｓ１０７の間で、ストレージノード２００で実行される副データの書き込みの流れの具体例を説明する。なお、以下では、ストレージノード２００が、データアクセス受付部２５０、データアクセス制御部２６０、キャッシュ管理部２７０およびディスクアクセス部２８０を有するものとする。ただし、データアクセス受付部２５０、データアクセス制御部２６０、キャッシュ管理部２７０およびディスクアクセス部２８０は、それぞれがデータアクセス受付部１５０、データアクセス制御部１６０、キャッシュ管理部１７０およびディスクアクセス部１８０に対応する。
【０１７３】
図１８は、副データの書き込みの流れの具体例を示すシーケンス図である。以下、図１８に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］データアクセス受付部２５０は、ストレージノード１００から副データの書き込み要求を受け付ける。
【０１７４】
［ステップＳ１２２］データアクセス受付部２５０は、受け付けた書き込み要求をデータアクセス制御部２６０に出力する。
［ステップＳ１２３］データアクセス制御部２６０は、書き込み要求に含まれる副データを書き込みキャッシュに書き込むようキャッシュ管理部２７０に指示する。
【０１７５】
［ステップＳ１２４］キャッシュ管理部２７０は、副データを書き込みキャッシュに格納する。キャッシュ管理部２７０は、書き込み要求で指定されるストレージ装置２１０の書き込み対象アドレスと書き込みキャッシュにおけるアドレスとを対応付けて、書き込みリストの先頭のノードに設定する。そして、キャッシュ管理部２７０は、キャッシュへの記録が完了した旨の応答をデータアクセス制御部２６０に出力する。
【０１７６】
［ステップＳ１２５］データアクセス制御部２６０は、副データの書き込み完了応答をデータアクセス受付部２５０に出力する。
［ステップＳ１２６］データアクセス受付部２５０は、ストレージノード１００に副データの書き込み完了応答を送信する。
【０１７７】
［ステップＳ１２７］データアクセス制御部２６０は、キャッシュ管理部２７０に副データを要求する。
［ステップＳ１２８］キャッシュ管理部２７０は、書き込みリストを参照して、書き込みキャッシュから副データを取得してデータアクセス制御部２６０に出力する。また、キャッシュ管理部２７０は、書き込みリストを参照して、該当の副データのストレージ装置２１０における書き込み対象アドレスを取得し、データアクセス制御部２６０に出力する。
【０１７８】
［ステップＳ１２９］データアクセス制御部２６０は、取得した副データのストレージ装置２１０への書き込み指示をディスクアクセス部２８０に出力する。
［ステップＳ１３０］ディスクアクセス部２８０は、書き込み指示に応じて副データをストレージ装置２１０に記録し、その記録が完了した旨の応答をデータアクセス制御部２６０に出力する。
【０１７９】
［ステップＳ１３１］データアクセス制御部２６０は、書き込みキャッシュにおいて、ストレージ装置２１０に記録済みの副データを記憶した領域を解放するようキャッシュ管理部２７０に指示する。
【０１８０】
［ステップＳ１３２］キャッシュ管理部２７０は、書き込みキャッシュの指示された領域を再利用可能とし、解放完了をデータアクセス制御部２６０に通知する。
このように、ストレージノード２００は、プライマリスライスを管理するストレージノード１００から受け付けた副データを書き込みキャッシュに格納する。そして、ストレージノード２００は、副データを受け付けた旨をストレージノード１００に応答する。その後、ストレージノード２００は、ストレージ装置２１０に副データの格納が完了すると、書き込みキャッシュにおける該当の副データのために設けた領域を再利用可能とする。
【０１８１】
なお、上記ステップＳ１２７のタイミングは、図１７のステップＳ１１２と同様に任意とすることができる。例えば、ストレージ装置２１０の負荷が小さい場合に、ストレージノード２００が管理する他の主データや副データと共にストレージ装置２１０に書き込むことが考えられる。これにより、ストレージノード２００において、データの書き込み処理の際、ストレージ装置２１０へのアクセス頻度を低減することができる。その結果、アクセスノード６００に対するデータアクセスの応答性を向上することができる。
【０１８２】
次に、ストレージノード１００におけるデータの読み出し処理の具体的な流れを説明する。なお、以下では、ストレージノード１００が管理するストレージ装置１１０のスライス１２１（スライスＩＤ“Ｐ１”）に対するデータの読み出しが行われる場合を例示する。
【０１８３】
図１９は、データの読み出しの流れの具体例を示すシーケンス図である。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ１４１］データアクセス受付部１５０は、アクセスノード６００からＲｅａｄ要求を受け付ける。
【０１８４】
［ステップＳ１４２］データアクセス受付部１５０は、データアクセス制御部１６０にＲｅａｄ要求を出力する。
［ステップＳ１４３］データアクセス制御部１６０は、Ｒｅａｄ要求で指定されるストレージ装置１１０の読み出し対象アドレスを指定してキャッシュ管理部１７０に読み出し指示を出力する。
【０１８５】
［ステップＳ１４４］キャッシュ管理部１７０は、ストレージ装置１１０における読み出し対象アドレスに基づき、該当のアドレスに対応するデータが読み出しキャッシュ１３２に格納されているかを判定する。そして、キャッシュ管理部１７０は、読み出しキャッシュ１３２に格納されていないと判定すると、データ無し応答をデータアクセス制御部１６０に出力する。
【０１８６】
［ステップＳ１４５］データアクセス制御部１６０は、キャッシュ管理部１７０からデータ無し応答を受け付けると、ディスクアクセス部１８０に読み出し対象アドレスを指定して、読み出しデータの読み出し要求を出力する。
【０１８７】
［ステップＳ１４６］ディスクアクセス部１８０は、指定された読み出し対象アドレスに基づいて、ストレージ装置１１０から読み出しデータを取得する。そして、ディスクアクセス部１８０は、取得した読み出しデータをデータアクセス制御部１６０に出力する。
【０１８８】
［ステップＳ１４７］データアクセス制御部１６０は、取得した読み出しデータをデータアクセス受付部１５０に出力する。
［ステップＳ１４８］データアクセス受付部１５０は、取得した読み出しデータをアクセスノード６００に送信する。
【０１８９】
［ステップＳ１４９］データアクセス制御部１６０は、上記ステップＳ１４７で取得した読み出しデータを読み出しキャッシュ１３２に格納するようキャッシュ管理部１７０に指示する。
【０１９０】
［ステップＳ１５０］キャッシュ管理部１７０は、読み出しデータを読み出しキャッシュ１３２に記録した旨をデータアクセス制御部１６０に応答する。
［ステップＳ１５１］データアクセス制御部１６０は、ディスクアクセス部１８０に先読みデータの読み出しを要求する先読み要求を出力する。
【０１９１】
［ステップＳ１５２］ディスクアクセス部１８０は、ストレージ装置１１０から指定された先読みデータを取得する。ディスクアクセス部１８０は、取得した先読みデータをデータアクセス制御部１６０に取得する。
【０１９２】
［ステップＳ１５３］データアクセス制御部１６０は、取得した先読みデータを読み出しキャッシュ１３２に格納するようキャッシュ管理部１７０に指示する。
［ステップＳ１５４］キャッシュ管理部１７０は、先読みデータを読み出しキャッシュ１３２に記録した旨をデータアクセス制御部１６０に出力する。
【０１９３】
［ステップＳ１５５］データアクセス受付部１５０は、アクセスノード６００からＲｅａｄ要求を受け付ける。
［ステップＳ１５６］データアクセス受付部１５０は、取得したＲｅａｄ要求をデータアクセス制御部１６０に出力する。
【０１９４】
［ステップＳ１５７］データアクセス制御部１６０は、Ｒｅａｄ要求で指定されるストレージ装置１１０の読み出し対象アドレスを指定してキャッシュ管理部１７０に読み出し指示を出力する。
【０１９５】
［ステップＳ１５８］キャッシュ管理部１７０は、ストレージ装置１１０における読み出し対象アドレスに基づき、該当のアドレスに対応するデータが読み出しキャッシュ１３２に格納されているかを判定する。そして、キャッシュ管理部１７０は、読み出しキャッシュ１３２に格納されていると判定すると、該当の先読みデータを読み出しキャッシュ１３２から取得して、データアクセス制御部１６０に出力する。
【０１９６】
［ステップＳ１５９］データアクセス制御部１６０は、取得した先読みデータをデータアクセス受付部１５０に出力する。
［ステップＳ１６０］データアクセス受付部１５０は、取得した先読みデータをアクセスノード６００に送信する。
【０１９７】
このように、ストレージノード１００は、アクセスノード６００からＲｅａｄ要求を受け付けると、読み出しキャッシュ１３２に先読みデータとして格納済みであるか否かを判定する。そして、ストレージノード１００は、先読みデータとして格納済みである場合には、読み出しキャッシュ１３２から該当の先読みデータを取得してアクセスノード６００に送信する。これにより、ストレージ装置１１０へのアクセス頻度を低減して、アクセスノード６００に対するデータアクセスの応答性を向上することができる。
【０１９８】
なお、読み出しキャッシュ１３２は、キャッシュ管理部１７０によって、定期的に使用量が監視される。そして、読み出しキャッシュ１３２の使用量がしきい値を超過した場合、ストレージノード１００は、読み出しリスト１４１ｂを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、読み出しキャッシュ１３２の使用量が過大となって、キャッシュ容量不足となることを防止することができる。
【０１９９】
次に、ストレージノード１００，２００，３００，４００で実行される冗長化回復処理の具体例について説明する。
図２０は、論理ボリュームの第２のデータ構造例を示す図である。図２０では、図４で示した論理ボリューム７００について、ストレージ装置１１０で障害が発生した場合のコントロールノード５００によるスライス配置変更後の状態を例示している。
【０２００】
まず、コントロールノード５００は、ストレージノード１００のストレージ装置１１０で障害が発生した旨を検知する。そして、コントロールノード５００は、ストレージノード１００で管理されていたスライス１２１〜１２６の各役割（プライマリスライスやセカンダリスライス）をストレージノード２００，３００，４００に委譲する。コントロールノード５００は、例えば、以下の手順によって委譲を行うことが考えられる。
【０２０１】
（１）ストレージ装置１１０でのプライマリスライスに対応するセカンダリスライスを、プライマリスライスに変更する。具体的には、例えば、スライス２２５のスライスＩＤを“Ｓ６”から“Ｐ６”に変更する。また、スライス３２２のスライスＩＤを“Ｓ１”から“Ｐ１”に変更する。また、スライス４２１のスライスＩＤを“Ｓ５”から“Ｐ５”に変更する。
【０２０２】
（２）新たなプライマリスライスにスライスに対応するセカンダリスライスを設ける。具体的には、例えば、スライス２２１のスライスＩＤを“Ｓ５”とする。また、スライス３２４のスライスＩＤを“Ｓ４”とする。また、スライス４２２のスライスＩＤを“Ｓ１”とする。更に、スライス４２５のスライスＩＤを“Ｓ６”とする。
【０２０３】
このように、コントロールノード５００は、ストレージ装置１１０で障害が発生した場合、ストレージノード２００，３００，４００でストレージノード１００の肩代わりするよう論理ボリュームの各スライスの配置を変更する。コントロールノード５００は、変更後のスライス情報をストレージノード２００，３００，４００に送信し、ストレージ装置２１０，３１０，４１０上のスライスの配置を変更するよう指示する（冗長化回復要求）。
【０２０４】
ストレージノード２００，３００，４００では、変更後のスライス情報に基づいて、自ノードで管理する各スライスの設定を変更する。また、ストレージノード２００，３００，４００は、必要に応じて自ノードで管理するプライマリスライスのデータを、対応するセカンダリスライスに送信する。
【０２０５】
例えば、ストレージノード２００は、新たにスライスＩＤ“Ｐ６”となったスライス２２５に格納されているデータ（冗長化スライスデータ）を、ストレージノード４００に送信する。ストレージノード４００では、新たにスライスＩＤ“Ｓ６”となったスライス４２５に、ストレージノード２００から受信したスライスＩＤ“Ｐ６”のデータを副データとして格納する。
【０２０６】
以下では、このようなストレージノード２００からストレージノード４００に対する冗長化回復処理の流れを具体的に説明する。
図２１は、冗長化回復の流れの具体例を示すシーケンス図である。以下、図２１に示す処理をステップ番号に沿って説明する。
【０２０７】
［ステップＳ１６１］データアクセス受付部２５０は、コントロールノード５００から冗長化回復要求を受け付ける。
［ステップＳ１６２］データアクセス受付部２５０は、冗長化回復要求をデータアクセス制御部２６０に出力する。
【０２０８】
［ステップＳ１６３］データアクセス制御部２６０は、冗長化回復要求を参照して、自ノードの新たなプライマリスライス“Ｐ６”について、ストレージノード４００のセカンダリスライスとの同期が必要であることを認識する。そして、データアクセス制御部２６０は、スライスＩＤ“Ｐ６”のスライス２２５の冗長化スライスデータをストレージ装置２１０から読み出すようディスクアクセス部２８０に要求する。
【０２０９】
［ステップＳ１６４］ディスクアクセス部２８０は、スライス２２５から読み出した冗長化スライスデータ（一次）をデータアクセス制御部２６０に出力する。なお、ここでは、ディスクアクセス部２８０がスライス２２５から読み出す冗長化スライスデータは、スライス２２５に格納されたデータのうちの一部であるとする。これは、冗長化回復処理用キャッシュ１３３の容量には限度があり、スライス２２５に格納された全データを一度に冗長化回復処理用キャッシュ１３３に格納することが難しいためである。このため、データアクセス制御部２６０は、スライス２２５に格納されたデータを一次、二次、・・・と複数回に分けて読み出して、冗長化回復処理用キャッシュ１３３に格納するよう制御する。
【０２１０】
［ステップＳ１６５］データアクセス制御部２６０は、取得した冗長化スライスデータ（一次）の書き込みをキャッシュ管理部２７０に指示する。
［ステップＳ１６６］キャッシュ管理部２７０は、冗長化スライスデータ（一次）の冗長化回復処理用キャッシュへの記録が完了した旨をデータアクセス制御部２６０に応答する。
【０２１１】
［ステップＳ１６７］キャッシュ管理部２７０は、ストレージノード４００への冗長化スライスデータ（一次）の書き込み要求を冗長化処理部２９０に出力する。キャッシュ管理部２７０は、この書き込み要求に冗長化回復処理用キャッシュに書き込んだ冗長化スライスデータ（一次）の送信単位であるデータブロックを含める。
【０２１２】
［ステップＳ１６８］冗長化処理部２９０は、ストレージノード４００に冗長化スライスデータ（一次）の書き込み要求を送信する。なお、冗長化処理部２９０は、ストレージノード４００から書き込み要求に対する受信応答を受け付けるたびに、次に送信すべきデータブロックをストレージノード４００に順次送信する。また、キャッシュ管理部２７０は、受信応答を受け付けると、冗長化回復処理用キャッシュの送信済みデータブロックを格納した領域を再利用可能とする。
【０２１３】
［ステップＳ１６９］データアクセス制御部２６０は、キャッシュ管理部２７０に、冗長化回復処理用キャッシュの空き容量を問い合わせる。
［ステップＳ１７０］キャッシュ管理部２７０は、冗長化回復処理用キャッシュ１３３で利用可能な空き容量をデータアクセス制御部２６０に応答する。
【０２１４】
［ステップＳ１７１］データアクセス制御部２６０は、空き容量が所定のしきい値を超えていないことを認識する。すると、データアクセス制御部２６０は、ディスクアクセス部２８０に、上記ステップＳ１６４で読み出した冗長化スライスデータ（一次）に続く冗長化スライスデータ（二次）の先読みをディスクアクセス部２８０に要求する。
【０２１５】
［ステップＳ１７２］ディスクアクセス部２８０は、ストレージ装置２１０から先読みデータをデータアクセス制御部２６０に出力する。
［ステップＳ１７３］データアクセス制御部２６０は、取得した先読みデータを冗長化回復処理用キャッシュ１３３に書き込むようキャッシュ管理部２７０に指示する。
【０２１６】
［ステップＳ１７４］キャッシュ管理部２７０は、先読みデータの冗長化回復処理用キャッシュへの記録が完了した旨をデータアクセス制御部２６０に応答する。
［ステップＳ１７５］冗長化処理部２９０は、ストレージノード４００から、冗長化スライスデータ（一次）の最後に送信したデータブロックに対する受信応答を受信する。
【０２１７】
［ステップＳ１７６］冗長化処理部２９０は、ストレージノード４００への冗長化スライスデータ（一次）の送信が完了した旨をキャッシュ管理部２７０に出力する。
［ステップＳ１７７］キャッシュ管理部２７０は、ストレージノード４００への冗長化スライスデータ（二次）の書き込み要求を冗長化処理部２９０に出力する。データアクセス制御部２６０は、この書き込み要求に冗長化回復処理用キャッシュに書き込んだ冗長化スライスデータ（二次）の送信単位であるデータブロックを含める。
【０２１８】
［ステップＳ１７８］冗長化処理部２９０は、ストレージノード４００に冗長化スライスデータ（二次）の書き込み要求を送信する。なお、冗長化処理部２９０は、ストレージノード４００から書き込み要求に対する受信応答を受け付けるたびに、次に送信すべきデータブロックをストレージノード４００に順次送信する。以降、スライス２２５に格納された全データをストレージノード４００に送信するまで、上記ステップＳ１６９〜Ｓ１７８の処理が繰り返し実行される。
【０２１９】
このように、ストレージノード２００は、スライス単位で冗長化回復を行う場合にも、冗長化回復処理用キャッシュに先読みしたデータを格納する。そして、ストレージノード２００は、冗長化回復処理用キャッシュから読み出したデータをストレージノード４００に順次送信する。これにより、ストレージ装置２１０へのアクセス頻度を低減して、アクセスノード６００に対するデータアクセスの応答性を向上することができる。
【０２２０】
なお、上記ステップＳ１７１において、データアクセス制御部２６０は、キャッシュ（または冗長化回復処理用キャッシュとして予め許容されたキャッシュ容量）の空き容量に応じて、先読みするデータ量を変更することが考えられる。例えば、データアクセス制御部２６０は、キャッシュの空き容量が、前回の先読み時よりも多い場合には、前回の先読み時よりも多量に先読みを行うことが考えられる。これにより、スライス２２５の全データを送信完了するまでの上記ステップＳ１６９〜Ｓ１７２の実行回数を低減することができる。すなわち、ストレージ装置２１０へのアクセス頻度が低減されて、冗長化回復処理の実行時のアクセスノード６００に対するデータアクセスの応答性をより向上することができる。
【０２２１】
また、冗長化回復処理用キャッシュは、キャッシュ管理部２７０によって、定期的に使用量が監視される。そして、冗長化回復処理用キャッシュの使用量がしきい値を超過した場合、ストレージノード２００は、冗長化回復処理用リストを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、冗長化回復処理用キャッシュの使用量が過大となって、キャッシュ容量不足となることを防止することができる。
【０２２２】
以上で説明したようにストレージノード１００は、コントロールノード５００やアクセスノード６００から受け付けたリクエストの内容に応じて、キャッシュ１３０のキャッシュ処理の方法を変更して冗長化の処理を行う。
【０２２３】
例えば、ストレージノード１００は、Ｗｒｉｔｅ要求に対しては、Ｗｒｉｔｅ要求の処理に応じたタイミングにより、書き込みキャッシュ１３１で使用する領域を再利用可能とする。
【０２２４】
また、例えば、ストレージノード１００は、Ｒｅａｄ要求に対しては、読み出しデータに応じて、読み出しキャッシュ１３２に先読みデータを格納しておく。そして、ストレージノード１００は、次のＲｅａｄ要求に対して読み出しキャッシュ１３２から先読みデータを読み出してアクセスノード６００に応答する。
【０２２５】
また、例えば、ストレージノード１００は、冗長化回復要求に対しては、冗長化回復処理用キャッシュ１３３に冗長化スライスデータを先読みして格納しておく。そして、ストレージノード１００は、セカンダリスライスを管理する他のストレージノードに、冗長化回復処理用キャッシュ１３３から読み出した冗長化スライスデータを順次送信する。
【０２２６】
更に、ストレージノード１００は、読み出しキャッシュ１３２および冗長化回復処理用キャッシュ１３３の使用量を定期的に監視して、使用量が所定のしきい値を超過している場合には、該当のキャッシュに格納されたデータを削除する。このとき、ストレージノード１００は、読み出しリスト１４１ｂや冗長化回復処理用リスト１４１ｃを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。
【０２２７】
このように、分散ストレージシステムで実行されるデータの冗長化の処理に応じてキャッシュ１３０の再利用可能とするタイミングを変更する。これにより、キャッシュ１３０に無駄なデータが格納された状態を抑止し、キャッシュ１３０を効率的に利用できる。その結果、キャッシュ１３０での容量不足を防止して、ストレージ装置１１０に対するアクセス頻度を低減することができ、アクセスノード６００に対するデータアクセスの応答性を向上することができる。
【０２２８】
また、上述の例では、２重に冗長化する場合を例示して説明したが、３重以上に冗長化を図ることもできる。
なお、ストレージノード１００の機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０２２９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２３０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２３１】
以上、本件の管理プログラム、管理装置および管理方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０２３２】
説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを前記コンピュータに管理させる管理プログラムであって、
前記コンピュータを、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信する通信手段、
として機能させることを特徴とする管理プログラム。
【０２３３】
（付記２）  前記コンピュータを更に、前記記憶領域に格納されたデータを二次記憶装置に格納する格納手段として機能させ、
前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記通信手段が前記他のコンピュータから前記記憶領域に格納された前記書き込みデータの受信応答を受け付け、前記格納手段が前記記憶領域に格納された前記書き込みデータを前記二次記憶装置に格納すると、前記記憶領域を再利用可能とする、
ことを特徴とする付記１記載の管理プログラム。
【０２３４】
（付記３）  前記格納手段は、前記通信手段が前記受信応答を受け付けた後、前記二次記憶装置に対する負荷が所定負荷よりも小さくなった場合に前記書き込みデータを前記二次記憶装置に格納することを特徴とする付記２記載の管理プログラム。
【０２３５】
（付記４）  前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記記憶領域に前記書き込みデータを格納すると、前記書き込みデータの書き込み完了応答を前記書き込み要求の送信元である情報処理装置に送信することを特徴とする付記３記載の管理プログラム。
【０２３６】
（付記５）  前記管理手段は、前記処理要求が二次記憶装置に格納されたデータを前記他のコンピュータに分散して配置する旨を要求する冗長化回復要求である場合、当該冗長化回復要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする付記１記載の管理プログラム。
【０２３７】
（付記６）  前記通信手段は、前記記憶領域に格納されたデータを所定サイズのデータブロックに分割して前記他のコンピュータに送信し、
前記管理手段は、前記通信手段が前記他のコンピュータから前記データブロックの受信応答を受け付けると、前記記憶領域のうち当該データブロックを格納した領域を再利用可能とする、
ことを特徴とする付記５記載の管理プログラム。
【０２３８】
（付記７）  前記管理手段は、前記冗長化回復要求に応じて、前記二次記憶装置に格納されたデータを順次先読みして、前記一次記憶装置の前記記憶領域に格納することを特徴とする付記６記載の管理プログラム。
【０２３９】
（付記８）  前記管理手段は、前記一次記憶装置の使用量に応じて、前記記憶領域に先読みで格納可能なデータ量を変更することを特徴とする付記７記載の管理プログラム。
（付記９）  前記管理手段は、前記処理要求が二次記憶装置に格納された読み出しデータの読み出し要求である場合、当該読み出し要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする付記１記載の管理プログラム。
【０２４０】
（付記１０）  前記管理手段は、前記一次記憶装置の使用量を所定の周期で監視し、当該一次記憶装置の使用量が所定量よりも大きい場合に、前記記憶領域を再利用可能とすることを特徴とする付記９記載の管理プログラム。
【０２４１】
（付記１１）  前記管理手段は、前記記憶領域のうち、前回アクセスがあった時点から最も時間が経過している記憶領域を優先して再利用可能とすることを特徴とする付記１０記載の管理プログラム。
【０２４２】
（付記１２）  前記管理手段は、前記読み出し要求に応じて、前記読み出しデータに続いて読み出される先読みデータを特定し、当該先読みデータを前記二次記憶装置から読み出して前記記憶領域に格納することを特徴とする付記９乃至１１の何れか１つに記載の管理プログラム。
【０２４３】
（付記１３）  前記管理手段は、前記読み出し要求に応じて、前記記憶領域に前記読み出しデータが存在するか否かを判定し、前記読み出しデータが存在する場合、前記記憶領域から読み出した前記読み出しデータを前記読み出し要求の送信元である情報処理装置に送信することを特徴とする請求項９乃至１２の何れか１つに記載の管理プログラム。
【０２４４】
（付記１４）  自装置に格納するデータと同一内容の複数のデータを自装置とネットワークで接続されたコンピュータに分散して配置する分散ストレージシステムを管理する管理装置であって、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段と、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記コンピュータに送信する通信手段と、
を有することを特徴とする管理装置。
【０２４５】
（付記１５）  コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを管理する前記コンピュータの管理方法であって、
前記コンピュータが、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、
前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、
前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信し、
前記処理要求に基づく前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする、
ことを特徴とする管理方法。
【符号の説明】
【０２４６】
１  コンピュータ
１ａ  一次記憶装置
１ｂ  管理手段
１ｃ  通信手段
１ｄ  記憶領域
２  コンピュータ
３  処理要求
【図１】
2010277342.tif 000003
【図２】
2010277342.tif 000004
【図３】
2010277342.tif 000005
【図４】
2010277342.tif 000006
【図５】
2010277342.tif 000007
【図６】
2010277342.tif 000008
【図７】
2010277342.tif 000009
【図８】
2010277342.tif 000010
【図９】
2010277342.tif 000011
【図１０】
2010277342.tif 000012
【図１１】
2010277342.tif 000013
【図１２】
2010277342.tif 000014
【図１３】
2010277342.tif 000015
【図１４】
2010277342.tif 000016
【図１５】
2010277342.tif 000017
【図１６】
2010277342.tif 000018
【図１７】
2010277342.tif 000019
【図１８】
2010277342.tif 000020
【図１９】
2010277342.tif 000021
【図２０】
2010277342.tif 000022
【図２１】
2010277342.tif 000023