(57)【特許請求の範囲】
【請求項１】
データの書込要求を受け付けると、記憶装置群のうち時刻に応じた書込先となる記憶装置を特定可能にする情報を参照して、前記記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記情報を参照して、前記読出要求から特定した前記書込要求の時刻に応じて特定した前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
制御部を有することを特徴とするストレージ装置。
【請求項２】
前記データは、前記書込要求の時刻を含むデータ名が付与されたデータであって、
前記制御部は、前記書込要求を受け付けると、前記情報を参照して、前記記憶装置群の中から、前記データ名に含まれる時刻に応じた複数の記憶装置を特定し、
前記読出要求を受け付けると、前記情報を参照して、前記データ名に含まれる時刻に応じて特定した複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置を特定し、
特定した前記異なる記憶装置から前記データを読み出す、ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、前記書込要求を受け付けると、さらに、前記データに付与されたデータ名に対応付けて前記書込要求の時刻を記憶し、
前記読出要求を受け付けると、前記データ名に対応付けて記憶された前記書込要求の時刻に応じて特定した複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置を特定し、
特定した前記異なる記憶装置から前記データを読み出す、ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、前記情報を参照して、前記読出要求から特定した前記書込要求の時刻に応じて特定した前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置が存在しない場合、前記情報を参照して、前記複数の記憶装置のうち、前記読出要求の時刻から所定時間後の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記所定時間後の時刻に前記データを読み出す、ことを特徴とする請求項１〜３のいずれか一つに記載のストレージ装置。
【請求項５】
コンピュータが、
データの書込要求を受け付けると、記憶装置群のうち時刻に応じた書込先となる記憶装置を特定可能にする情報を参照して、前記記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記情報を参照して、前記読出要求から特定した前記書込要求の時刻に応じて特定した前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
処理を実行することを特徴とする読出記憶装置決定方法。
【請求項６】
コンピュータに、
データの書込要求を受け付けると、記憶装置群のうち時刻に応じた書込先となる記憶装置を特定可能にする情報を参照して、前記記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記情報を参照して、前記読出要求から特定した前記書込要求の時刻に応じて特定した前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
処理を実行させることを特徴とする読出記憶装置決定プログラム。
【請求項７】
クライアント装置と、記憶装置群にアクセス可能なストレージ装置とを含むストレージシステムであって、
前記クライアント装置は、
データの書込要求、または前記データの読出要求を、前記ストレージ装置に送信し、
前記ストレージ装置は、
前記データの書込要求を受け付けると、前記記憶装置群のうち時刻に応じた書込先となる記憶装置を特定可能にする情報を参照して、前記記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記情報を参照して、前記読出要求から特定した前記書込要求の時刻に応じて特定した前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、読出記憶装置決定方法、読出記憶装置決定プログラム、およびストレージシステムに関する。
【背景技術】
【０００２】
従来、複数のサーバを用いてデータを蓄積する分散ストレージがある。また、分散ストレージにおいて、データを複製して複数のサーバに蓄積し、サーバの故障によってデータが喪失することを防止する技術がある。関連する技術としては、例えば、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するものがある。また、例えば、キーの集合を複数のセグメントに分割し、キーと対応付けて記憶されるデータをセグメント単位で管理する技術がある。また、例えば、各ファイルサーバの負荷状況を計測・管理する負荷情報テーブルとファイルブロックごとのアクセス担当のファイルサーバを記録・管理するファイル属性テーブルとを用いてファイルを管理する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３３２７８２号公報
【特許文献２】国際公開第２０１２／１６４７３５号
【特許文献３】特開２０１０−７４６０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、データを複製して複数のサーバに蓄積する分散ストレージのいずれかのサーバが有する記憶装置に対して、データの書き込みとデータの読み出しとが競合して、データの書き込みの性能低下を招くことがある。
【０００５】
１つの側面では、本発明は、記憶装置に対するデータの書き込みの性能低下を抑制することができるストレージ装置、読出記憶装置決定方法、読出記憶装置決定プログラム、およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、データの書込要求を受け付けると、記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出すストレージ装置、読出記憶装置決定方法、および読出記憶装置決定プログラムが提案される。
【０００７】
また、本発明の一側面によれば、クライアント装置と、記憶装置群にアクセス可能なストレージ装置とを含み、前記クライアント装置が、データの書込要求、または前記データの読出要求を、前記ストレージ装置に送信し、前記ストレージ装置が、前記データの書込要求を受け付けると、前記記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出すストレージシステムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、記憶装置に対するデータの書き込みの性能低下を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる読出記憶装置決定方法の一実施例を示す説明図である。
【図２】図２は、実施の形態にかかるストレージシステム２００の一例を示す説明図である。
【図３】図３は、ストレージ装置１００のハードウェアの一例を示すブロック図である。
【図４】図４は、クライアント装置Ｃのハードウェアの一例を示すブロック図である。
【図５】図５は、サーバＳのハードウェアの一例を示すブロック図である。
【図６】図６は、ストレージ装置１００の機能的構成例を示すブロック図である。
【図７】図７は、書込先テーブル７００の記憶内容の一例を示す説明図である。
【図８】図８は、対応テーブル８００の記憶内容の一例を示す説明図である。
【図９】図９は、読出処理手順の一例を示すフローチャートである。
【図１０】図１０は、読出処理手順の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるストレージ装置、読出記憶装置決定方法、読出記憶装置決定プログラム、およびストレージシステムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる読出記憶装置決定方法の一実施例）
図１は、実施の形態にかかる読出記憶装置決定方法の一実施例を示す説明図である。ストレージ装置１００は、記憶装置群にアクセス可能なコンピュータである。ストレージ装置１００は、記憶装置群の中からデータの書き込みを行う書込先の記憶装置、またはデータの読み出しを行う読出先の記憶装置を特定し、データの書き込み、およびデータの読み出しを制御する。
【００１２】
ここで、従来の演算装置が、データの名称に応じて記憶装置群の中から書込先の記憶装置を複数特定して、特定した複数の記憶装置のそれぞれに対してデータの書き込みを行う場合が考えられる。しかしながら、この場合、演算装置が、あるデータの読み出しを行うときに、別のデータの書き込みが行われる可能性がある記憶装置を特定することがある。結果として、記憶装置に対する書込性能の低下を招いてしまうことがある。
【００１３】
また、データの書き込みを行う、従来の演算装置が複数存在すると、いずれかの演算装置が、あるデータの読み出しを行うときに、別の従来の演算装置によって別のデータの書き込みが行われる可能性がない記憶装置を特定することが難しい。結果として、いずれかの演算装置が、あるデータの読み出しを行う読出先の記憶装置として、別の従来の演算装置によってデータの書き込みが行われる書込先の記憶装置を特定してしまい、記憶装置に対する書込性能の低下を招いてしまうことがある。具体的には、記憶装置が磁気ディスクであれば、磁気ディスクに対してデータをシーケンシャルに書き込んでいるときに、データの読み出しが発生すると、磁気ディスクにシーケンシャルにアクセスすることができなくなり、書込性能の低下を招いてしまう。
【００１４】
そこで、本実施の形態では、記憶装置に対するデータの書込性能の低下を抑制することができる読出記憶装置決定方法について説明する。例えば、読出記憶装置決定方法によれば、あるデータの読出先の記憶装置を、別のデータの書き込みが行われる可能性がある記憶装置とは異なる記憶装置にすることができ、記憶装置に対するデータの書込性能の低下を抑制することができる。
【００１５】
例えば、ストレージ装置１００は、時刻に応じて記憶装置の組み合わせを特定可能であり、時刻が変わると特定される記憶装置の組み合わせを変える。ここで、ストレージ装置１００は、データの書込要求を受け付けた場合には、書込要求の時刻に応じた複数の記憶装置を、データの書込先の記憶装置として特定する。書込要求の時刻は、例えば、書込要求が生成された時刻、書込要求が送信された時刻、書込要求が受け付けられた時刻などである。書込要求は、例えば、書込要求の時刻として、書込要求が生成された時刻、書込要求が送信された時刻などを含んでいてもよい。そして、ストレージ装置１００は、特定した書込先の記憶装置にデータを書き込む。
【００１６】
一方で、ストレージ装置１００は、データの読出要求を受け付けた場合には、データが書き込まれた複数の記憶装置のうちのデータの読出先の記憶装置を特定する。ストレージ装置１００は、例えば、データが書き込まれた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を、データの読出先の記憶装置として特定する。読出要求の時刻に応じた記憶装置は、読出要求と同時刻に別のデータの書込要求が発生したときに別のデータの書込先の記憶装置になる可能性がある記憶装置である。読出要求の時刻は、例えば、読出要求が生成された時刻、読出要求が送信された時刻、読出要求が受け付けられた時刻などである。読出要求は、例えば、読出要求の時刻として、読出要求が生成された時刻、読出要求が送信された時刻などを含んでいてもよい。そして、ストレージ装置１００は、特定した読出先の記憶装置からデータを読み出す。これにより、ストレージ装置１００は、記憶装置においてデータの読み出しとデータの書き込みとが競合しないようにすることができる。
【００１７】
図１の例では、ストレージ装置１００は、複数の時刻のそれぞれに応じて、それぞれ異なる記憶装置の組み合わせを書込先の記憶装置として特定する。ストレージ装置１００は、具体的には、時刻ｔ０では、記憶装置１１１，１１２，１１３を書込先の記憶装置として特定する。また、ストレージ装置１００は、時刻ｔ１では、記憶装置１１４，１１５，１１６を書込先の記憶装置として特定する。また、ストレージ装置１００は、時刻ｔ２では、記憶装置１１７，１１８，１１１を書込先の記憶装置として特定する。ここで、ストレージ装置１００が、データの書込要求、およびデータの読出要求を受け付けた場合について説明する。
【００１８】
（１）ストレージ装置１００は、データの書込要求を、時刻ｔ０に受け付けたとする。ストレージ装置１００は、データの書込要求を受け付けると、書込要求の時刻ｔ０に応じた複数の記憶装置１１１〜１１３を、データの書込先の記憶装置として特定する。そして、ストレージ装置１００は、特定した書込先の記憶装置１１１〜１１３のそれぞれに、データを書き込む。これにより、ストレージ装置１００は、データを複数の記憶装置に書き込んでおき、記憶装置の故障によってデータが喪失することを防止することができる。
【００１９】
ストレージ装置１００は、データを書き込んだ記憶装置を特定可能にしておく。ストレージ装置１００は、例えば、データの名称に対応付けて、データを書き込んだ記憶装置を記憶しておく。また、ストレージ装置１００は、データの名称に対応付けて、データの書込要求の時刻を記憶しておいてもよい。また、ストレージ装置１００は、データの名称がデータの書込要求の時刻を含む名称であれば、データを書き込んだ記憶装置を記憶して置かなくても、データを書き込んだ記憶装置を特定可能になる。
【００２０】
（２）ストレージ装置１００は、データの読出要求を、時刻ｔ４に受け付けたとする。ストレージ装置１００は、データの読出要求を受け付けると、データが書き込まれた記憶装置１１１〜１１３のうち、時刻ｔ４に応じた記憶装置１１５〜１１７とは異なる記憶装置１１１〜１１３を、データの読出先の記憶装置として特定する。時刻ｔ４に応じた記憶装置１１５〜１１７は、時刻ｔ４において別のデータの書込先の記憶装置になる可能性がある記憶装置であるため、読出先の記憶装置にするとデータの読み出しとデータの書き込みが競合する可能性がある。そして、ストレージ装置１００は、特定した読出先の記憶装置１１１〜１１３のいずれかからデータを読み出す。
【００２１】
（３）ストレージ装置１００は、データの読出要求を、時刻ｔ６に受け付けたとする。ストレージ装置１００は、データの読出要求を受け付けると、データが書き込まれた記憶装置１１１〜１１３のうち、時刻ｔ６に応じた記憶装置１１３〜１１５とは異なる記憶装置１１１，１１２を、データの読出先の記憶装置として特定する。時刻ｔ６に応じた記憶装置は、時刻ｔ６において別のデータの書込先の記憶装置になる可能性がある記憶装置であるため、読出先の記憶装置にするとデータの読み出しとデータの書き込みが競合する可能性がある。そして、ストレージ装置１００は、特定した読出先の記憶装置１１１，１１２のいずれかからデータを読み出す。
【００２２】
これにより、ストレージ装置１００は、あるデータの読出先の記憶装置を、別のデータの書込先になる可能性がある記憶装置とは異なる記憶装置に決定することができ、記憶装置においてデータの読み出しとデータの書き込みとが競合しないようにすることができる。結果として、ストレージ装置１００は、記憶装置に対するデータの書込性能の低下を抑制することができ、データの書き込みにかかる時間の増大を抑制することができる。
【００２３】
（実施の形態にかかるストレージシステム２００の一例）
次に、図２を用いて、図１に示した読出記憶装置決定方法を適用した、実施の形態にかかるストレージシステム２００の一例について説明する。
【００２４】
図２は、実施の形態にかかるストレージシステム２００の一例を示す説明図である。図２において、ストレージシステム２００は、複数のストレージ装置１００と、複数のクライアント装置Ｃ１，Ｃ２，・・・，Ｃｎと、複数のサーバＳ１１〜Ｓｍとを含む。ｎは自然数である。また、ｍは自然数である。
【００２５】
以下の説明では、クライアント装置Ｃ１〜Ｃｎのうちの任意のクライアント装置を「クライアント装置Ｃ」と表記する場合がある。また、以下の説明では、サーバＳ１１〜Ｓｍのうちの任意のサーバを「サーバＳ」と表記する場合がある。
【００２６】
ストレージ装置１００は、クライアント装置Ｃから、データの書込要求、またはデータの読出要求を受け付ける。ストレージ装置１００は、データの書込要求を受け付けると、複数のサーバＳのいずれかを、データの書込先の記憶装置を有するサーバＳとして特定する。そして、ストレージ装置１００は、書込先の記憶装置を有するサーバＳにデータの書込依頼を送信して、書込先の記憶装置に対するデータの書き込みをサーバＳに行わせる。以下の説明では、書込先の記憶装置を有するサーバＳを「書込先のサーバＳ」と表記する場合がある。
【００２７】
一方で、ストレージ装置１００は、データの読出要求を受け付けると、複数のサーバＳのいずれかを、データの読出先の記憶装置を有するサーバＳとして特定する。次に、ストレージ装置１００は、読出先の記憶装置を有するサーバＳにデータの読出依頼を送信して、読出先の記憶装置からのデータの読み出しをサーバＳに行わせる。そして、ストレージ装置１００は、サーバＳが読み出したデータを、サーバＳから受信する。以下の説明では、読出先の記憶装置を有するサーバＳを「読出先のサーバＳ」と表記する場合がある。
【００２８】
クライアント装置Ｃは、ストレージ装置１００に、データの書込要求、またはデータの読出要求を送信するコンピュータである。クライアント装置Ｃは、ストレージ装置１００にデータの読出要求を送信した場合、ストレージ装置１００からデータを受信する。
【００２９】
サーバＳは、ストレージ装置１００からデータの書込依頼、またはデータの読出依頼を受信するコンピュータである。サーバＳは、ストレージ装置１００からデータの書込依頼を受け付けた場合、自サーバＳが有する記憶装置に対するデータの書き込みを行う。また、サーバＳは、ストレージ装置１００からデータの読出依頼を受け付けた場合、自サーバＳが有する記憶装置からのデータの読み出しを行う。そして、サーバＳは、読み出したデータを、ストレージ装置１００に送信する。
【００３０】
図２のストレージシステム２００は、具体的には、時間経過に伴って生成されるセンサデータやログデータなどといった大量のストリームデータを蓄積するシステムとして用いられる。図２において、ストレージ装置１００は、１つであってもよい。また、ストレージ装置１００は、クライアント装置Ｃ、またはサーバＳと一体であってもよい。クライアント装置Ｃは、１つであってもよい。
【００３１】
（ストレージ装置１００のハードウェアの一例）
次に、図３を用いて、図２に示したストレージシステム２００に含まれるストレージ装置１００のハードウェアの一例について説明する。
【００３２】
図３は、ストレージ装置１００のハードウェアの一例を示すブロック図である。図３において、ストレージ装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、タイマ３０６とを有する。また、ＣＰＵ３０１と、メモリ３０２と、Ｉ／Ｆ３０３と、ディスクドライブ３０４と、タイマ３０６とは、バス３００によってそれぞれ接続される。
【００３３】
ここで、ＣＰＵ３０１は、ストレージ装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。また、メモリ３０２は、図７に後述する書込先テーブル７００、図８に後述する対応テーブル８００などの各種テーブルを記憶する。
【００３４】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク３１０に接続され、ネットワーク３１０を介して他のコンピュータ（例えば、図２に示したクライアント装置Ｃ）に接続される。そして、Ｉ／Ｆ３０３は、ネットワーク３１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３は、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどである。
【００３５】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５は、例えば、磁気ディスク、光ディスクなどである。ディスク３０５は、メモリ３０２の代わりに、図７に後述する書込先テーブル７００、図８に後述する対応テーブル８００などの各種テーブルを記憶してもよい。タイマ３０６は、現在の時刻を出力する。
【００３６】
ストレージ装置１００は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、マウス、ディスプレイなどを有することにしてもよい。ストレージ装置１００は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートＰＣなどである。
【００３７】
（クライアント装置Ｃのハードウェアの一例）
図４は、クライアント装置Ｃのハードウェアの一例を示すブロック図である。図４において、クライアント装置Ｃは、ＣＰＵ４０１と、メモリ４０２と、ディスクドライブ４０３と、ディスク４０４と、Ｉ／Ｆ４０５と、ディスプレイ４０６と、入力装置４０７と、を有する。また、ＣＰＵ４０１と、メモリ４０２と、ディスクドライブ４０３と、Ｉ／Ｆ４０５と、ディスプレイ４０６と、入力装置４０７とはバス４００によってそれぞれ接続される。
【００３８】
ここで、ＣＰＵ４０１は、クライアント装置Ｃの全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００３９】
ディスクドライブ４０３は、ＣＰＵ４０１の制御に従ってディスク４０４に対するデータのリード／ライトを制御する。ディスク４０４は、ディスクドライブ４０３の制御で書き込まれたデータを記憶する。ディスク４０４としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００４０】
Ｉ／Ｆ４０５は、通信回線を通じてネットワーク３１０に接続され、ネットワーク３１０を介して他のコンピュータ（例えば、図２に示したストレージ装置１００）に接続される。そして、Ｉ／Ｆ４０５は、ネットワーク３１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。
【００４１】
ディスプレイ４０６は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ４０６は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどを採用することができる。
【００４２】
入力装置４０７は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置４０７は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００４３】
クライアント装置Ｃは、上述した構成部のうち、例えば、ディスクドライブ４０３、ディスク４０４などを有さないことにしてもよい。また、クライアント装置Ｃは、上述した構成部のほか、例えば、ＳＳＤ、スキャナ、プリンタなどを有することにしてもよい。クライアント装置Ｃは、例えば、ＰＣ、ノートＰＣ、携帯電話、スマートフォン、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）などである。
【００４４】
（サーバＳのハードウェアの一例）
図５は、サーバＳのハードウェアの一例を示すブロック図である。図５において、サーバＳは、ＣＰＵ５０１と、メモリ５０２と、Ｉ／Ｆ５０３と、ディスクドライブ５０４と、ディスク５０５と、を有する。また、ＣＰＵ５０１と、メモリ５０２と、Ｉ／Ｆ５０３と、ディスクドライブ５０４とは、バス５００によってそれぞれ接続される。
【００４５】
ここで、ＣＰＵ５０１は、サーバＳの全体の制御を司る。メモリ５０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ５０１のワークエリアとして使用される。メモリ５０２に記憶されるプログラムは、ＣＰＵ５０１にロードされることで、コーディングされている処理をＣＰＵ５０１に実行させる。
【００４６】
Ｉ／Ｆ５０３は、通信回線を通じてネットワーク３１０に接続され、ネットワーク３１０を介して他のコンピュータ（例えば、図２に示したクライアント装置Ｃ）に接続される。そして、Ｉ／Ｆ５０３は、ネットワーク３１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ５０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４７】
ディスクドライブ５０４は、ＣＰＵ５０１の制御に従ってディスク５０５に対するデータのリード／ライトを制御する。ディスクドライブ５０４は、具体的には、ストレージ装置１００からのデータの書込依頼、またはデータの読出依頼に基づくＣＰＵ５０１の制御に従って、ディスク５０５に対するデータのリード／ライトを制御する。ディスク５０５は、ディスクドライブ５０４の制御で書き込まれたデータを記憶する。ディスク５０５は、例えば、磁気ディスク、光ディスクなどである。
【００４８】
サーバＳは、上述した構成部のほか、例えば、ＳＳＤ、キーボード、マウス、ディスプレイなどを有することにしてもよい。サーバＳは、例えば、ワークステーション、ＰＣ、ノートＰＣなどである。
【００４９】
（ストレージ装置１００の機能的構成例）
次に、図６を用いて、ストレージ装置１００の機能的構成例について説明する。
【００５０】
図６は、ストレージ装置１００の機能的構成例を示すブロック図である。ストレージ装置１００は、制御部となる機能として、受付部６０１と、記憶部６０２と、第１の特定部６０３と、書込部６０４と、第２の特定部６０５と、読出部６０６と、出力部６０７と、を含む。ストレージ装置１００は、例えば、制御部によって、第１の書込動作、第１の読出動作、第２の書込動作、または第２の読出動作を行う。
【００５１】
第１の書込動作は、データの書込要求に応じて、書込要求の時刻を含む名称が付与された当該データの書き込みを行う動作である。第１の読出動作は、書込要求の時刻を含む名称が付与されたデータの読出要求に応じて当該データの読み出しを行う動作である。第２の書込動作は、データの書込要求に応じて、任意の名称が付与された当該データの書き込みを行う動作である。第２の読出動作は、任意の名称が付与されたデータの読出要求に応じて当該データの読み出しを行う動作である。
【００５２】
＜第１の書込動作＞
まず、第１の書込動作について説明する。第１の書込動作は、上述したように、データの書込要求に応じて、書込要求の時刻を含む名称が付与された当該データの書き込みを行う動作である。第１の書込動作は、例えば、受付部６０１と、記憶部６０２と、第１の特定部６０３と、書込部６０４とによって実現される。
【００５３】
受付部６０１は、データの書込要求を受け付ける。受付部６０１は、例えば、クライアント装置Ｃから、データそのものとデータの名称とを含む、データの書込要求を受信することにより、データの書込要求を受け付ける。データの名称は、例えば、データの書込要求の時刻を含む文字列である。データの名称は、具体的には、データの書込要求の時刻の各単位の値を並べた文字列である。
【００５４】
時刻は、例えば、年、月、日、時、分、秒の単位によって表現される。時刻は、時、分、秒の単位によって表現されてもよい。時刻は、さらに、マイクロ秒の単位によって表現されてもよい。書込要求の時刻は、例えば、書込要求が生成された時刻、書込要求が送信された時刻、書込要求が受け付けられた時刻などである。書込要求は、例えば、書込要求の時刻として、書込要求が生成された時刻、書込要求が送信された時刻などを含んでいてもよい。これにより、受付部６０１は、記憶装置に対する書き込みを行うデータを受け付けることができる。
【００５５】
受け付けた書込要求は、例えば、メモリ３０２、ディスク３０５などの記憶領域に記憶される。受付部６０１は、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。
【００５６】
記憶部６０２は、記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶する。記憶装置は、受付部６０１が書込要求を受け付けたデータを蓄積する装置である。記憶装置は、例えば、サーバＳが有するディスク５０５である。複数の記憶装置の組み合わせは、それぞれ個数が同じ、記憶装置の組み合わせである。また、複数の記憶装置の組み合わせは、それぞれ個数が異なる、記憶装置の組み合わせであってもよい。ハッシュ値とは、あるデータを代表する値である。ハッシュ値は、あるデータをハッシュ関数に代入することにより算出される。
【００５７】
記憶部６０２は、例えば、図７に後述する書込先テーブル７００を記憶する。これにより、記憶部６０２は、書込要求を受け付けたデータから得られるハッシュ値に応じた記憶装置の組み合わせを特定可能にすることができる。記憶部６０２は、例えば、図３に示したメモリ３０２、ディスク３０５により、その機能を実現する。
【００５８】
第１の特定部６０３は、受付部６０１がデータの書込要求を受け付けると、記憶装置群の中から、書込要求の時刻に応じた複数の記憶装置を特定する。第１の特定部６０３は、例えば、受付部６０１が書込要求の時刻を含む名称が付与されたデータの書込要求を受け付けると、記憶装置群の中から、名称に含まれる時刻に応じた複数の記憶装置を特定する。第１の特定部６０３は、具体的には、受付部６０１が書込要求を受け付けた場合、書込要求の時刻から得られるハッシュ値に応じた組み合わせ内の複数の記憶装置を特定する。
【００５９】
第１の特定部６０３は、より具体的には、受付部６０１が書込要求を受け付けた場合、書込要求の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。次に、第１の特定部６０３は、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置を、データの書込先の記憶装置として特定する。これにより、第１の特定部６０３は、データの書込先の記憶装置を特定することができる。
【００６０】
特定結果は、例えば、メモリ３０２、ディスク３０５の記憶領域に記憶される。第１の特定部６０３は、例えば、図３に示したメモリ３０２、ディスク３０５に記憶されたプログラムをＣＰＵ３０１に実行させることにより、その機能を実現する。
【００６１】
書込部６０４は、第１の特定部６０３が特定した複数の記憶装置にデータを書き込む。書込部６０４は、例えば、第１の特定部６０３が特定した書込先の記憶装置を有するサーバＳに、データの書込依頼を送信する。これにより、書込部６０４は、書込先の記憶装置に、データを書き込むことができる。
【００６２】
書込部６０４は、例えば、図３に示したメモリ３０２、ディスク３０５に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。
【００６３】
＜第１の読出動作＞
次に、第１の読出動作について説明する。第１の読出動作は、上述したように、書込要求の時刻を含む名称が付与されたデータの読出要求に応じて当該データの読み出しを行う動作である。第１の読出動作は、例えば、受付部６０１と、記憶部６０２と、第２の特定部６０５と、読出部６０６と、出力部６０７とによって実現される。
【００６４】
受付部６０１は、データの読出要求を受け付ける。受付部６０１は、例えば、クライアント装置Ｃから、データの名称を含むデータの読出要求を受信することにより、データの読出要求を受け付ける。データの名称は、例えば、データの書込要求の時刻を含む。データの名称は、具体的には、データの書込要求が生成された時刻の文字列である。
【００６５】
記憶部６０２は、第１の書込動作と同様に、記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶する。
【００６６】
第２の特定部６０５は、受付部６０１がデータの読出要求を受け付けると、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定する。読出要求の時刻は、例えば、読出要求が生成された時刻、読出要求が送信された時刻、読出要求が受け付けられた時刻などである。読出要求は、例えば、読出要求の時刻として、読出要求が生成された時刻、読出要求が送信された時刻などを含んでいてもよい。
【００６７】
第２の特定部６０５は、例えば、受付部６０１が書込要求の時刻を含む名称が付与されたデータの読出要求を受け付けると、名称に含まれる時刻に応じた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定する。第２の特定部６０５は、具体的には、受付部６０１が読出要求を受け付けた場合、複数の記憶装置のうち、読出要求の時刻から得られるハッシュ値に対応付けて記憶された記憶装置とは異なる記憶装置を特定する。
【００６８】
第２の特定部６０５は、より具体的には、受付部６０１が読出要求を受け付けた場合、書込要求の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。次に、第２の特定部６０５は、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを、読出先候補の記憶装置の組み合わせとして特定する。読出先候補の記憶装置は、データが書き込まれた記憶装置であって、データの読出先の記憶装置になる可能性がある記憶装置である。そして、第２の特定部６０５は、読出要求の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００６９】
次に、第２の特定部６０５は、読出要求の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。書込先候補の記憶装置は、データの書込先の記憶装置になる可能性がある記憶装置である。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００７０】
ここでは、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を特定したが、これに限らない。例えば、第２の特定部６０５は、読出先候補の記憶装置を１つ選択して、書込先候補の記憶装置であるか否かを判定して、書込先候補の記憶装置ではないと判定した場合に、選択した読出先候補の記憶装置を、読出先の記憶装置として特定してもよい。
【００７１】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、複数の記憶装置のいずれかを特定してもよい。第２の特定部６０５は、具体的には、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置が存在しない場合、読出先候補の記憶装置の組み合わせのいずれかを、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００７２】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、複数の記憶装置のうち、読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置を特定してもよい。第２の特定部６０５は、具体的には、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置が存在しない場合、読出要求の時刻から所定時間後の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００７３】
次に、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００７４】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、所定時間待機して、読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置を特定してもよい。第２の特定部６０５は、具体的には、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、読出要求の時刻から所定時間待機する。そして、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００７５】
次に、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００７６】
特定結果は、例えば、メモリ３０２、ディスク３０５の記憶領域に記憶される。第２の特定部６０５は、例えば、図３に示したメモリ３０２、ディスク３０５に記憶されたプログラムをＣＰＵ３０１に実行させることにより、その機能を実現する。
【００７７】
読出部６０６は、第２の特定部６０５が特定した読出要求の時刻に応じた記憶装置とは異なる記憶装置から、データを読み出す。読出部６０６は、例えば、第２の特定部６０５が特定した読出先の記憶装置を有するサーバＳに、データの読出依頼を送信する。これにより、読出部６０６は、読出先の記憶装置から、データを読み出すことができる。
【００７８】
また、読出部６０６は、第２の特定部６０５が特定した読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置から、所定時間後の時刻にデータを読み出してもよい。読出部６０６は、例えば、第２の特定部６０５が特定した読出先の記憶装置を有するサーバＳに、データの読出依頼を送信する。これにより、読出部６０６は、読出先の記憶装置から、データを読み出すことができる。
【００７９】
読み出したデータは、例えば、メモリ３０２、ディスク３０５の記憶領域に記憶される。読出部６０６は、例えば、図３に示したメモリ３０２、ディスク３０５に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。
【００８０】
出力部６０７は、読出部６０６が読み出したデータを、データの読出要求の送信元のクライアント装置Ｃに送信する。これにより、クライアント装置Ｃは、読出要求したデータを、ストレージ装置１００から受信することができる。
【００８１】
出力部６０７は、例えば、図３に示したメモリ３０２、ディスク３０５に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。
【００８２】
＜第２の書込動作＞
まず、第２の書込動作について説明する。第２の書込動作は、上述したように、データの書込要求に応じて、任意の名称が付与された当該データの書き込みを行う動作である。第２の書込動作は、例えば、受付部６０１と、記憶部６０２と、第１の特定部６０３と、書込部６０４とによって実現される。
【００８３】
受付部６０１は、データの書込要求を受け付ける。受付部６０１は、例えば、クライアント装置Ｃから、データそのものとデータの名称とを含むデータの書込要求を受信することにより、データの書込要求を受け付ける。データの名称は、例えば、任意の文字列である。これにより、受付部６０１は、記憶装置に対する書き込みを行うデータを受け付けることができる。
【００８４】
記憶部６０２は、第１の書込動作と同様に、記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶する。また、記憶部６０２は、第１の特定部６０３によって書き込まれる、データの名称と、書込要求の時刻とを対応付けて記憶する。記憶部６０２は、例えば、図８に後述する対応テーブル８００を記憶する。
【００８５】
第１の特定部６０３は、受付部６０１がデータの書込要求を受け付けると、記憶装置群の中から、書込要求の時刻に応じた複数の記憶装置を特定する。第１の特定部６０３は、例えば、受付部６０１が書込要求を受け付けると、書込要求の時刻として現在の時刻を取得する。そして、第１の特定部６０３は、記憶装置群の中から、現在の時刻に応じた複数の記憶装置を特定する。
【００８６】
第１の特定部６０３は、具体的には、受付部６０１が書込要求を受け付けた場合、タイマ３０６によって、書込要求の時刻として現在の時刻を取得する。次に、第１の特定部６０３は、現在の時刻から得られるハッシュ値に応じた組み合わせ内の複数の記憶装置を特定する。第１の特定部６０３は、データの名称と、現在の時刻とを対応付けて記憶部６０２に書き込む。これにより、第１の特定部６０３は、書込先の記憶装置を特定することができる。
【００８７】
書込部６０４は、第１の書込動作と同様に、第１の特定部６０３が特定した複数の記憶装置にデータを書き込む。これにより、書込部６０４は、書込先の記憶装置に、データを書き込むことができる。
【００８８】
＜第２の読出動作＞
次に、第２の読出動作について説明する。第２の読出動作は、上述したように、任意の名称が付与されたデータの読出要求に応じて当該データの読み出しを行う動作である。第２の読出動作は、例えば、受付部６０１と、記憶部６０２と、第２の特定部６０５と、読出部６０６と、出力部６０７とによって実現される。
【００８９】
受付部６０１は、データの読出要求を受け付ける。受付部６０１は、例えば、クライアント装置Ｃから、データの名称を含むデータの読出要求を受信することにより、データの読出要求を受け付ける。データの名称は、例えば、任意の文字列である。
【００９０】
記憶部６０２は、第１の書込動作と同様に、記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶する。また、記憶部６０２は、第２の書込動作において書き込まれた、データの名称と、書込要求の時刻とを対応付けて記憶する。記憶部６０２は、例えば、図８に後述する対応テーブル８００を記憶する。
【００９１】
第２の特定部６０５は、受付部６０１が読出要求を受け付けると、名称に対応付けて記憶された書込要求の時刻に応じた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定する。
【００９２】
第２の特定部６０５は、例えば、受付部６０１が任意の名称が付与されたデータの読出要求を受け付けると、任意の名称に対応付けて記憶部６０２に記憶された時刻に応じた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定する。第２の特定部６０５は、具体的には、受付部６０１が読出要求を受け付けた場合、任意の名称に対応付けて記憶部６０２に記憶された時刻に応じた複数の記憶装置のうち、読出要求の時刻のハッシュ値に対応付けて記憶された記憶装置とは異なる記憶装置を特定する。
【００９３】
第２の特定部６０５は、より具体的には、受付部６０１が読出要求を受け付けた場合、対応テーブル８００を参照して、任意の名称に対応する時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。次に、第２の特定部６０５は、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを、読出先候補の記憶装置の組み合わせとして特定する。そして、第２の特定部６０５は、読出要求の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００９４】
次に、第２の特定部６０５は、読出要求の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００９５】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、複数の記憶装置のいずれかを特定してもよい。第２の特定部６０５は、具体的には、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置が存在しない場合、読出先候補の記憶装置の組み合わせのいずれかを、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００９６】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、複数の記憶装置のうち、読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置を特定してもよい。第２の特定部６０５は、具体的には、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置が存在しない場合、読出要求の時刻から所定時間後の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００９７】
次に、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【００９８】
また、第２の特定部６０５は、例えば、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、所定時間待機して、読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置を特定してもよい。第２の特定部６０５は、具体的には、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合、読出要求の時刻から所定時間待機する。そして、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻を含む名称をハッシュ関数に代入してハッシュ値を算出する。
【００９９】
次に、第２の特定部６０５は、読出要求の時刻から所定時間後の時刻において別のデータの書き込みが行われる書込先の記憶装置になる可能性がある書込先候補の記憶装置の組み合わせを特定する。第２の特定部６０５は、より具体的には、記憶部６０２が記憶した書込先テーブル７００を参照して、ハッシュ値に応じたサーバＳが有する記憶装置の組み合わせを特定する。そして、第２の特定部６０５は、読出先候補の記憶装置の組み合わせのうち、書込先候補の記憶装置とは異なる記憶装置を、読出先の記憶装置として特定する。これにより、第２の特定部６０５は、データの読出先の記憶装置を特定することができる。
【０１００】
読出部６０６は、第１の読出動作と同様に、第２の特定部６０５が特定した読出要求の時刻に応じた記憶装置とは異なる記憶装置から、データを読み出す。これにより、読出部６０６は、読出先の記憶装置から、データを読み出すことができる。また、読出部６０６は、第２の特定部６０５が特定した読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置から、所定時間後の時刻にデータを読み出してもよい。
【０１０１】
出力部６０７は、第１の読出動作と同様に、読出部６０６が読み出したデータを、データの読出要求の送信元のクライアント装置Ｃに送信する。これにより、クライアント装置Ｃは、読出要求したデータを、ストレージ装置１００から受信することができる。
【０１０２】
（ストレージ装置１００の第１の動作例）
次に、ストレージ装置１００の第１の動作例について説明する。第１の動作例は、上述した第１の書込動作および第１の読出動作の組み合わせである。第１の動作例では、ストレージ装置１００は、図７に後述する書込先テーブル７００を有する。書込先テーブル７００は、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶領域によって実現される。
【０１０３】
＜書込先テーブル７００の記憶内容＞
図７は、書込先テーブル７００の記憶内容の一例を示す説明図である。図７に示すように、書込先テーブル７００は、範囲項目に対応付けて、１ｓｔレプリカ項目と、２ｎｄレプリカ項目と、３ｒｄレプリカ項目とを有し、ハッシュ値範囲ごとに各項目に情報が設定されることにより、レコード７０１〜７０３などのレコードを記憶する。
【０１０４】
範囲項目には、ハッシュ値の範囲が記憶される。１ｓｔレプリカ項目には、データから得られるハッシュ値が範囲項目のハッシュ値の範囲に含まれる場合に、当該データの書込先のサーバＳになる、１つ目のサーバＳの識別情報が記憶される。２ｎｄレプリカ項目には、データから得られるハッシュ値が範囲項目のハッシュ値の範囲に含まれる場合に、当該データの書込先のサーバＳになる、２つ目のサーバＳの識別情報が記憶される。
【０１０５】
３ｒｄレプリカ項目には、データから得られるハッシュ値が範囲項目のハッシュ値の範囲に含まれる場合に、当該データの書込先のサーバＳになる、３つ目のサーバＳの識別情報が記憶される。例えば、レコード７０１は、ハッシュ値の範囲「０〜９９」と、サーバＳ１１，Ｓ２１，Ｓ３１とを対応付けた情報である。
【０１０６】
ストレージ装置１００は、書込先テーブル７００を参照することにより、データの書込要求があった場合には、書込要求されたデータから得られるハッシュ値に対応する、データの書込先のサーバＳを特定することができる。また、ストレージ装置１００は、書込先テーブル７００を参照することにより、データの読出要求があった場合には、データから得られるハッシュ値に対応する、データが書き込まれた、データの読出先のサーバＳを特定することができる。
【０１０７】
＜第１の書込動作および第１の読出動作の一例＞
次に、第１の動作例における、ストレージ装置１００の第１の書込動作および第１の読出動作の一例について説明する。
【０１０８】
・第１の書込動作の一例
第１の書込動作の一例では、クライアント装置Ｃは、データを生成する。データは、属性として、データの生成元、データの生成された時刻、およびデータの内容などを有する。クライアント装置Ｃは、データを生成する都度、データの生成された時刻を含む名称をデータに付与する。そして、クライアント装置Ｃは、データの生成された時刻を含む名称が付与されたデータの書込要求をストレージ装置１００に送信する。
【０１０９】
クライアント装置Ｃは、例えば、時刻２０１４／８／１２  ０８：５７に生成されたデータに、時刻２０１４／８／１２  ０８：５７の文字列“２０１４０８１２０８５７”を名称として付与する。また、クライアント装置Ｃは、所定のプレフィックス“ｌｏｇ”を付けた時刻２０１４／８／１２  ０８：５７の文字列“ｌｏｇ２０１４０８１２０８５７”を名称としてデータに付与してもよい。そして、クライアント装置Ｃは、データの書込要求を、ストレージ装置１００に送信する。
【０１１０】
ストレージ装置１００は、データの名称を含むデータの書込要求を、クライアント装置Ｃから受信する。ストレージ装置１００は、書込要求を受信すると、書込要求に含まれる名称のハッシュ値を算出する。次に、ストレージ装置１００は、書込先テーブル７００を参照して、データの書込先のサーバＳとして、ハッシュ値に対応するサーバＳを特定する。そして、ストレージ装置１００は、書込先のサーバＳにデータを書き込む。
【０１１１】
ストレージ装置１００は、例えば、名称“ｌｏｇ２０１４０８１２０８５７”が付与されたデータの書込要求を、クライアント装置Ｃから受信する。次に、ストレージ装置１００は、書込要求を受信すると、名称“ｌｏｇ２０１４０８１２０８５７”を所定のハッシュ関数に代入し、名称“ｌｏｇ２０１４０８１２０８５７”のハッシュ値“２０３”を算出する。
【０１１２】
さらに、ストレージ装置１００は、書込先テーブル７００のレコード７０３を参照して、ハッシュ値“２０３”に対応するサーバＳ２１、サーバＳ４１、サーバＳ１１を、書込先のサーバＳとして特定する。そして、ストレージ装置１００は、書込先のサーバＳに、データの書込依頼を送信する。ここで、書込先のサーバＳは、書込依頼を受信すると、ディスク５０５にデータを書き込む。
【０１１３】
・第１の読出動作の一例
第１の読出動作の一例では、クライアント装置Ｃは、過去に書込要求をしたデータの生成された時刻を含む名称が付与された、過去に書込要求をしたデータの読出要求をストレージ装置１００に送信する。クライアント装置Ｃは、例えば、過去の時刻２０１４／７／７  １０：０３に生成されたデータに名称として付与された、時刻２０１４／７／７  １０：０３を含む文字列“ｌｏｇ２０１４０７０７１００３”を含む、データの読出要求を生成する。そして、クライアント装置Ｃは、データの読出要求を、ストレージ装置１００に送信する。
【０１１４】
ストレージ装置１００は、データの名称を含むデータの読出要求を、クライアント装置Ｃから受信する。ストレージ装置１００は、読出要求を受信すると、読出要求に含まれる名称のハッシュ値を算出する。そして、ストレージ装置１００は、書込先テーブル７００を参照して、データの読出先候補のサーバＳとして、ハッシュ値に対応するサーバＳを特定する。
【０１１５】
また、ストレージ装置１００は、現在の時刻を取得する。次に、ストレージ装置１００は、現在の時刻に書き込まれる可能性があるデータの名称として、現在の時刻の文字列を生成する。さらに、ストレージ装置１００は、現在の時刻の文字列のハッシュ値を算出する。そして、ストレージ装置１００は、書込先テーブル７００を参照して、現在の時刻にデータが書き込まれる書込先の記憶装置になる可能性がある書込先候補の記憶装置を有するサーバＳとして、ハッシュ値に対応するサーバＳを特定する。以下の説明では、データが書き込まれる書込先の記憶装置になる可能性がある書込先候補の記憶装置を有するサーバＳを「書込先候補のサーバＳ」と表記する場合がある。
【０１１６】
次に、ストレージ装置１００は、データの読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳを、データの読出先のサーバＳとして特定する。そして、ストレージ装置１００は、データの読出先のサーバＳに、データの読出依頼を送信する。次に、ストレージ装置１００は、読出先のサーバＳからデータを受信する。そして、ストレージ装置１００は、読出要求の送信元のクライアント装置Ｃに、受信したデータを送信する。
【０１１７】
ストレージ装置１００は、例えば、時刻２０１４／８／１２  ０８：５７に、過去の時刻の文字列“ｌｏｇ２０１４０７０７１００３”を名称として付与されたデータの読出要求を、クライアント装置Ｃから受信する。次に、ストレージ装置１００は、名称“ｌｏｇ２０１４０７０７１００３”を所定のハッシュ関数に代入し、名称“ｌｏｇ２０１４０７０７１００３”のハッシュ値“１０６”を算出する。そして、ストレージ装置１００は、書込先テーブル７００のレコード７０２を参照して、ハッシュ値“１０６”に対応するサーバＳ４１、サーバＳ１１、サーバＳ５１を、読出先候補のサーバＳとして特定する。
【０１１８】
また、ストレージ装置１００は、現在の時刻２０１４／８／１２  ０８：５７を取得する。次に、ストレージ装置１００は、現在の時刻２０１４／８／１２  ０８：５７の文字列“ｌｏｇ２０１４０８１２０８５７”を生成する。さらに、ストレージ装置１００は、現在の時刻の文字列“ｌｏｇ２０１４０８１２０８５７”を所定のハッシュ関数に代入し、現在の時刻の文字列“ｌｏｇ２０１４０８１２０８５７”のハッシュ値“２０３”を算出する。そして、ストレージ装置１００は、書込先テーブル７００のレコード７０３を参照して、ハッシュ値“２０３”に対応するサーバＳ２１、サーバＳ４１、サーバＳ１１を、書込先候補のサーバＳとして特定する。
【０１１９】
次に、ストレージ装置１００は、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳ５１を、読出先のサーバＳとして特定する。ここで、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳが複数ある場合がある。この場合、ストレージ装置１００は、例えば、読出先候補のサーバＳのうち、書込先テーブル７００の１ｓｔレプリカ項目の記憶装置、２ｎｄレプリカ項目の記憶装置、３ｒｄレプリカ項目の記憶装置の順序で優先的に、読出先のサーバＳとして特定する。また、ストレージ装置１００は、サーバＳの識別情報に含まれる数字が小さい方のサーバＳを優先的に、読出先のサーバＳとして特定してもよい。
【０１２０】
そして、ストレージ装置１００は、データの読出先のサーバＳに、データの読出依頼を送信する。ここで、読出先のサーバＳは、読出依頼を受信すると、ディスク５０５からデータを読み出す。そして、読出先のサーバＳは、読み出したデータを、ストレージ装置１００に送信する。ストレージ装置１００は、読出先のサーバＳからデータを受信する。そして、ストレージ装置１００は、読出要求の送信元のクライアント装置Ｃに、受信したデータを送信する。
【０１２１】
これにより、ストレージ装置１００は、あるデータの読出先のサーバＳを、別のデータの書込先になる書込先の記憶装置になる可能性がある書込先候補の記憶装置を有する書込先候補のサーバＳとは異なるサーバＳにすることができる。結果として、ストレージ装置１００は、サーバＳが有する記憶装置に対するデータの書込性能の低下を抑制することができ、記憶装置に対するデータの書き込みにかかる時間の増大を抑制することができる。
【０１２２】
（ストレージ装置１００の第２の動作例）
次に、ストレージ装置１００の第２の動作例について説明する。第２の動作例は、上述した第２の書込動作および第２の読出動作の組み合わせである。第２の動作例では、ストレージ装置１００は、図７に示した書込先テーブル７００のほか、図８に後述する対応テーブル８００を有する。対応テーブル８００は、例えば、図３に示したメモリ３０２、ディスク３０５の記憶領域によって実現される。
【０１２３】
＜対応テーブル８００の記憶内容＞
図８は、対応テーブル８００の記憶内容の一例を示す説明図である。図８に示すように、対応テーブル８００は、名称項目に対応付けて、書込時刻項目を有し、データごとに各項目に情報が設定されることにより、レコード８０１などのレコードを記憶する。名称項目には、データの名称が記憶される。書込時刻項目には、名称項目の名称が付与されたデータが書き込まれた時刻を含む文字列が記憶される。
【０１２４】
例えば、レコード８０１は、データの名称「ｄａｔａ０１」と、当該データの書込要求の時刻を含む文字列「２０１４０７０７１００３」とを対応付けた情報である。ストレージ装置１００は、対応テーブル８００を参照することにより、データの読出要求があった場合には、過去にデータを書き込んだときのデータの書込要求の時刻を特定することができる。
【０１２５】
＜第２の書込動作および第２の読出動作の一例＞
次に、第２の動作例における、ストレージ装置１００の第２の書込動作および第２の読出動作の一例について説明する。
【０１２６】
・第２の書込動作の一例
第２の書込動作の一例では、クライアント装置Ｃは、データを生成する。クライアント装置Ｃは、データを生成する都度、任意の名称をデータに付与する。クライアント装置Ｃは、任意の名称が付与されたデータの書込要求をストレージ装置１００に送信する。クライアント装置Ｃは、例えば、文字列“ｄａｔａ１１”が名称として付与されたデータの書込要求を、ストレージ装置１００に送信する。
【０１２７】
ストレージ装置１００は、任意の名称が付与されたデータの書込要求を、クライアント装置Ｃから受信する。ストレージ装置１００は、書込要求を受信すると、現在の時刻を取得する。次に、ストレージ装置１００は、データに付与された名称と、現在の時刻とを対応付けたレコードを、対応テーブル８００に追加する。また、ストレージ装置１００は、現在の時刻の文字列を、データの名称として生成する。次に、ストレージ装置１００は、名称のハッシュ値を算出する。さらに、ストレージ装置１００は、書込先テーブル７００を参照して、データの書込先のサーバＳとして、ハッシュ値に対応するサーバＳを特定する。そして、ストレージ装置１００は、書込先のサーバＳにデータの書込依頼を送信する。
【０１２８】
ストレージ装置１００は、例えば、名称“ｄａｔａ１１”が付与されたデータの書込要求を、クライアント装置Ｃから受信する。ストレージ装置１００は、書込要求を受信すると、現在の時刻２０１４／８／１２  ０８：５７を取得する。次に、ストレージ装置１００は、名称“ｄａｔａ１１”と現在の時刻２０１４／８／１２  ０８：５７とを対応付けたレコードを対応テーブル８００に追加する。また、ストレージ装置１００は、データの名称として、現在の時刻２０１４／８／１２  ０８：５７の文字列“ｌｏｇ２０１４０８１２０８５７”を生成する。次に、ストレージ装置１００は、名称“ｌｏｇ２０１４０８１２０８５７”を所定のハッシュ関数に代入し、名称“ｌｏｇ２０１４０８１２０８５７”のハッシュ値“２０３”を算出する。
【０１２９】
さらに、ストレージ装置１００は、ハッシュ値“２０３”に対応するサーバＳ２１、サーバＳ４１、サーバＳ１１を、書込先のサーバＳとして特定する。そして、ストレージ装置１００は、書込先のサーバＳにデータの書込依頼を送信する。ここで、書込先のサーバＳは、書込依頼を受信すると、ディスク５０５にデータを書き込む。
【０１３０】
・第２の読出動作の一例
第２の読出動作の一例では、クライアント装置Ｃは、過去に書込要求をしたデータの読出要求をストレージ装置１００に送信する。クライアント装置Ｃは、例えば、過去に書込要求をしたデータに付与された名称“ｄａｔａ０１”を含む、データの読出要求を生成する。そして、クライアント装置Ｃは、データの読出要求を、ストレージ装置１００に送信する。
【０１３１】
ストレージ装置１００は、任意の名称が付与されたデータの読出要求を、クライアント装置Ｃから受信する。ストレージ装置１００は、読出要求を受信すると、対応テーブル８００を参照して、任意の名称に対応する時刻を取得する。次に、ストレージ装置１００は、データの名称として、任意の名称に対応する時刻の文字列を生成する。さらに、ストレージ装置１００は、生成した名称のハッシュ値を算出する。そして、ストレージ装置１００は、書込先テーブル７００を参照して、データの読出先候補のサーバＳとして、ハッシュ値に対応するサーバＳを特定する。
【０１３２】
また、ストレージ装置１００は、現在の時刻を取得する。次に、ストレージ装置１００は、現在の時刻に書き込まれる可能性があるデータの名称として、現在の時刻の文字列を生成する。さらに、ストレージ装置１００は、現在の時刻の文字列のハッシュ値を算出する。そして、ストレージ装置１００は、書込先テーブル７００を参照して、現在の時刻にデータが書き込まれる書込先の記憶装置になる可能性がある書込先候補の記憶装置を有する書込先候補のサーバＳとして、ハッシュ値に対応するサーバＳを特定する。
【０１３３】
次に、ストレージ装置１００は、データの読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳを、データの読出先のサーバＳとして特定する。そして、ストレージ装置１００は、データの読出先のサーバＳに、データの読出依頼を送信する。次に、ストレージ装置１００は、読出先のサーバＳからデータを受信する。そして、ストレージ装置１００は、読出要求の送信元のクライアント装置Ｃに、受信したデータを送信する。
【０１３４】
ストレージ装置１００は、例えば、時刻２０１４／８／１２  ０８：５７に、任意の文字列“ｄａｔａ０１”を名称として付与されたデータの読出要求を、クライアント装置Ｃから受信する。次に、ストレージ装置１００は、対応テーブル８００のレコード８０１を参照して、任意の文字列“ｄａｔａ０１”に対応する時刻２０１４／７／７  １０：０３を取得する。そして、ストレージ装置１００は、データの名称として、時刻の文字列“ｌｏｇ２０１４０７０７１００３”を生成する。
【０１３５】
次に、ストレージ装置１００は、名称“ｌｏｇ２０１４０７０７１００３”を所定のハッシュ関数に代入し、名称“ｌｏｇ２０１４０７０７１００３”のハッシュ値“１０６”を算出する。そして、ストレージ装置１００は、書込先テーブル７００のレコード７０２を参照して、ハッシュ値“１０６”に対応するサーバＳ４１、サーバＳ１１、サーバＳ５１を、読出先候補のサーバＳとして特定する。
【０１３６】
また、ストレージ装置１００は、現在の時刻２０１４／８／１２  ０８：５７を取得する。次に、ストレージ装置１００は、現在の時刻２０１４／８／１２  ０８：５７の文字列“ｌｏｇ２０１４０８１２０８５７”を生成する。さらに、ストレージ装置１００は、現在の時刻の文字列“ｌｏｇ２０１４０８１２０８５７”を所定のハッシュ関数に代入し、現在の時刻の文字列“ｌｏｇ２０１４０８１２０８５７”のハッシュ値“２０３”を算出する。そして、ストレージ装置１００は、書込先テーブル７００のレコード７０３を参照して、ハッシュ値“２０３”に対応するサーバＳ２１、サーバＳ４１、サーバＳ１１を、書込先候補のサーバＳとして特定する。
【０１３７】
次に、ストレージ装置１００は、データの読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳを、データの読出先のサーバＳとして特定する。そして、ストレージ装置１００は、データの読出先のサーバＳに、データの読出依頼を送信する。ここで、読出先のサーバＳは、読出依頼を受信すると、ディスク５０５からデータを読み出す。そして、読出先のサーバＳは、読み出したデータを、ストレージ装置１００に送信する。ストレージ装置１００は、読出先のサーバＳからデータを受信する。そして、ストレージ装置１００は、読出要求の送信元のクライアント装置Ｃに、受信したデータを送信する。
【０１３８】
これにより、ストレージ装置１００は、あるデータの読出先のサーバＳを、別のデータの書込先になる書込先の記憶装置になる可能性がある書込先候補の記憶装置を有する書込先候補のサーバＳとは異なるサーバＳにすることができる。結果として、ストレージ装置１００は、サーバＳが有する記憶装置に対するデータの書込性能の低下を抑制することができ、記憶装置に対するデータの書き込みにかかる時間の増大を抑制することができる。
【０１３９】
（読出処理手順の一例）
次に、図９を用いて、読出処理手順の一例について説明する。
【０１４０】
図９は、読出処理手順の一例を示すフローチャートである。図９において、ストレージ装置１００は、クライアント装置Ｃから読出要求を受信する（ステップＳ９０１）。次に、ストレージ装置１００は、データの名称のハッシュ値に対応するサーバＳを、読出先候補のサーバＳとして特定する（ステップＳ９０２）。そして、ストレージ装置１００は、現在の時刻を取得する（ステップＳ９０３）。
【０１４１】
次に、ストレージ装置１００は、現在の時刻から、現在の時刻において書き込まれる可能性があるデータの名称として、現在の時刻を含む名称を生成する（ステップＳ９０４）。そして、ストレージ装置１００は、現在の時刻を含む名称に対応するサーバＳを、書込先のサーバになる可能性がある書込先候補のサーバＳとして特定する（ステップＳ９０５）。
【０１４２】
次に、ストレージ装置１００は、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳを検索する（ステップＳ９０６）。そして、ストレージ装置１００は、検索されたか否かを判定する（ステップＳ９０７）。ここで、検索されていない場合（ステップＳ９０７：Ｎｏ）、ストレージ装置１００は、読出先候補のサーバＳのいずれかを、読出先のサーバＳに特定して（ステップＳ９０８）、ステップＳ９１０の処理に移行する。
【０１４３】
一方で、検索された場合（ステップＳ９０７：Ｙｅｓ）、ストレージ装置１００は、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳのいずれかを、読出先のサーバＳに特定する（ステップＳ９０９）。次に、ストレージ装置１００は、データの読出依頼を、読出先のサーバＳに送信する（ステップＳ９１０）。そして、ストレージ装置１００は、読出先のサーバＳから、データを受信する（ステップＳ９１１）。
【０１４４】
次に、ストレージ装置１００は、データをクライアント装置Ｃに送信する（ステップＳ９１２）。そして、ストレージ装置１００は、読出処理を終了する。これにより、ストレージ装置１００は、あるデータの読出先のサーバＳを、別のデータの書込先候補のサーバＳとは異なるサーバＳにすることができる。
【０１４５】
（読出処理手順の他の例）
次に、図１０を用いて、読出処理手順の他の例について説明する。
【０１４６】
図１０は、読出処理手順の他の例を示すフローチャートである。図１０において、ストレージ装置１００は、クライアント装置Ｃから読出要求を受信する（ステップＳ１００１）。次に、ストレージ装置１００は、データの名称のハッシュ値に対応するサーバＳを、読出先候補のサーバＳとして特定する（ステップＳ１００２）。そして、ストレージ装置１００は、現在の時刻を取得する（ステップＳ１００３）。
【０１４７】
次に、ストレージ装置１００は、現在の時刻から、現在の時刻において書き込まれる可能性があるデータの名称として、現在の時刻を含む名称を生成する（ステップＳ１００４）。そして、ストレージ装置１００は、現在の時刻を含む名称に対応するサーバＳを、書込先のサーバになる可能性がある書込先候補のサーバＳとして特定する（ステップＳ１００５）。
【０１４８】
次に、ストレージ装置１００は、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳを検索する（ステップＳ１００６）。そして、ストレージ装置１００は、検索されたか否かを判定する（ステップＳ１００７）。ここで、検索されていない場合（ステップＳ１００７：Ｎｏ）、ストレージ装置１００は、所定時間待機して（ステップＳ１００８）、ステップＳ１００４の処理に移行する。
【０１４９】
一方で、検索された場合（ステップＳ１００７：Ｙｅｓ）、ストレージ装置１００は、読出先候補のサーバＳのうち、書込先候補のサーバＳとは異なるサーバＳのいずれかを、読出先のサーバＳに特定する（ステップＳ１００９）。次に、ストレージ装置１００は、データの読出依頼を、読出先のサーバＳに送信する（ステップＳ１０１０）。そして、ストレージ装置１００は、読出先のサーバＳから、データを受信する（ステップＳ１０１１）。
【０１５０】
次に、ストレージ装置１００は、データをクライアント装置Ｃに送信する（ステップＳ１０１２）。そして、ストレージ装置１００は、読出処理を終了する。これにより、ストレージ装置１００は、あるデータの読出先のサーバＳを、別のデータの書込先のサーバＳになる可能性がある書込先候補のサーバＳとは異なるサーバＳにすることができる。
【０１５１】
以上説明したように、ストレージ装置１００によれば、データの書込要求を受け付けると、記憶装置群の中から、書込要求の時刻に応じた複数の記憶装置を特定し、特定した複数の記憶装置にデータを書き込むことができる。これにより、ストレージ装置１００は、複数の記憶装置に、データの複製を書き込むことができ、記憶装置の故障によってデータが喪失することを防止することができる。
【０１５２】
また、ストレージ装置１００によれば、データの読出要求を受け付けると、データが書き込まれた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置から、データを読み出すことができる。これにより、ストレージ装置１００は、あるデータの読出先の記憶装置を、別のデータの書込先になる可能性がある記憶装置とは異なる記憶装置に決定することができ、記憶装置においてデータの読み出しとデータの書き込みとが競合しないようにすることができる。結果として、ストレージ装置１００は、記憶装置に対するデータの書込性能の低下を抑制することができ、データの書き込みにかかる時間の増大を抑制することができる。
【０１５３】
また、データとして、書込要求の時刻を含む名称が付与されたデータを用いる場合がある。この場合、ストレージ装置１００によれば、書込要求を受け付けると、記憶装置群の中から、名称に含まれる時刻に応じた複数の記憶装置を、書込先の記憶装置として特定することができる。これにより、ストレージ装置１００は、どの記憶装置にデータを書き込んだかを記憶しておかなくてもよくなる。
【０１５４】
また、この場合、ストレージ装置１００によれば、読出要求を受け付けると、名称に含まれる時刻に応じた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定し、特定した異なる記憶装置からデータを読み出すことができる。これにより、ストレージ装置１００は、どの記憶装置にデータが書き込まれたかが記憶されていなくても、データを読み出すことができる。
【０１５５】
また、データとして、任意の名称が付与されたデータを用いる場合がある。この場合、ストレージ装置１００によれば、書込要求を受け付けると、データに付与された名称に対応付けて書込要求の時刻を記憶しておくことができる。そして、ストレージ装置１００によれば、読出要求を受け付けると、名称に対応する書込要求の時刻に応じた複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置を特定し、特定した異なる記憶装置からデータを読み出すことができる。これにより、ストレージ装置１００は、データの名称が任意の名称であっても、データを読み出すことができる。
【０１５６】
また、複数の記憶装置のうち、読出要求の時刻に応じた記憶装置とは異なる記憶装置が存在しない場合がある。この場合、ストレージ装置１００によれば、データが書き込まれた複数の記憶装置のうち、読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置から、所定時間後の時刻にデータを読み出すことができる。これにより、ストレージ装置１００は、あるデータの読出先の記憶装置を、所定時間後の時刻に別のデータの書込先の記憶装置になる可能性がある書込先候補の記憶装置とは異なる記憶装置にすることができる。結果として、ストレージ装置１００は、記憶装置に対するデータの書込性能の低下を抑制することができ、記憶装置に対するデータの書き込みにかかる時間の増大を抑制することができる。
【０１５７】
また、この場合、ストレージ装置１００によれば、データが書き込まれた複数の記憶装置のいずれかからデータを読み出すことができる。これにより、ストレージ装置１００は、データを読み出せなくなることを防止することができる。
【０１５８】
また、ストレージ装置１００によれば、記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶しておくことができる。そして、ストレージ装置１００によれば、書込要求を受け付けた場合、書込要求の時刻から得られるハッシュ値に応じた組み合わせ内の複数の記憶装置を特定し、特定した複数の記憶装置にデータを書き込むことができる。これにより、ストレージ装置１００は、ハッシュ値によって記憶装置群のそれぞれが書込先の記憶装置になる可能性の平均化を図ることができる。また、ストレージ装置１００は、複数の記憶装置に、データの複製を書き込むことができ、記憶装置の故障によってデータが喪失することを防止することができる。
【０１５９】
なお、本実施の形態で説明した読出記憶装置決定方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本読出記憶装置決定プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本読出記憶装置決定プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６０】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６１】
（付記１）データの書込要求を受け付けると、記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
制御部を有することを特徴とするストレージ装置。
【０１６２】
（付記２）前記データは、前記書込要求の時刻を含む名称が付与されたデータであって、
前記制御部は、前記書込要求を受け付けると、前記記憶装置群の中から、前記名称に含まれる時刻に応じた複数の記憶装置を特定し、
前記読出要求を受け付けると、前記名称に含まれる時刻に応じた複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置を特定し、
特定した前記異なる記憶装置から前記データを読み出す、ことを特徴とする付記１に記載のストレージ装置。
【０１６３】
（付記３）前記制御部は、前記書込要求を受け付けると、前記データに付与された名称に対応付けて前記書込要求の時刻を記憶し、
前記読出要求を受け付けると、前記名称に対応付けて記憶された前記書込要求の時刻に応じた複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置を特定し、
特定した前記異なる記憶装置から前記データを読み出す、ことを特徴とする付記１に記載のストレージ装置。
【０１６４】
（付記４）前記制御部は、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置が存在しない場合、前記複数の記憶装置のうち、前記読出要求の時刻から所定時間後の時刻に応じた記憶装置とは異なる記憶装置から、前記所定時間後の時刻に前記データを読み出す、ことを特徴とする付記１〜３のいずれか一つに記載のストレージ装置。
【０１６５】
（付記５）前記制御部は、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置が存在しない場合、前記複数の記憶装置のいずれかから前記データを読み出す、ことを特徴とする付記１〜３のいずれか一つに記載のストレージ装置。
【０１６６】
（付記６）前記制御部は、前記記憶装置群のうちの複数の記憶装置の組み合わせごとに、それぞれ異なるハッシュ値の範囲を記憶し、
前記書込要求を受け付けた場合、前記書込要求の時刻から得られるハッシュ値に応じた組み合わせ内の複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記読出要求を受け付けた場合、前記複数の記憶装置のうち、前記読出要求の時刻から得られるハッシュ値に対応付けて記憶された記憶装置とは異なる記憶装置を特定する、ことを特徴とする付記１〜５のいずれか一つに記載のストレージ装置。
【０１６７】
（付記７）コンピュータが、
データの書込要求を受け付けると、記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
処理を実行することを特徴とする読出記憶装置決定方法。
【０１６８】
（付記８）コンピュータに、
データの書込要求を受け付けると、記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
処理を実行させることを特徴とする読出記憶装置決定プログラム。
【０１６９】
（付記９）クライアント装置と、記憶装置群にアクセス可能なストレージ装置とを含むストレージシステムであって、
前記クライアント装置は、
データの書込要求、または前記データの読出要求を、前記ストレージ装置に送信し、
前記ストレージ装置は、
前記データの書込要求を受け付けると、記憶装置群の中から、前記書込要求の時刻に応じた複数の記憶装置を特定し、特定した前記複数の記憶装置に前記データを書き込み、
前記データの読出要求を受け付けると、前記複数の記憶装置のうち、前記読出要求の時刻に応じて特定した記憶装置とは異なる記憶装置から、前記データを読み出す、
ことを特徴とするストレージシステム。
【符号の説明】
【０１７０】
Ｃ  クライアント装置
Ｓ  サーバ
１００  ストレージ装置
６０１  受付部
６０２  記憶部
６０３  第１の特定部
６０４  書込部
６０５  第２の特定部
６０６  読出部
６０７  出力部
【図１】
0006455229.tif 000002
【図２】
0006455229.tif 000003
【図３】
0006455229.tif 000004
【図４】
0006455229.tif 000005
【図５】
0006455229.tif 000006
【図６】
0006455229.tif 000007
【図７】
0006455229.tif 000008
【図８】
0006455229.tif 000009
【図９】
0006455229.tif 000010
【図１０】
0006455229.tif 000011