(57)【要約】【課題】アクセス性能の異なる記憶装置間での同一データの移動が近接した時間に要求された場合におけるデータ喪失を防止する。【解決手段】制御部１ｂは、記憶装置２ｂから、記憶装置２ｂよりアクセス速度が高い記憶装置２ａに対してデータＤ１を移動する第１の処理の実行要求を受信部１ａが受信したとき、第１の処理が実行中であることを状態情報３に記録して、第１の処理の実行を開始する。また、制御部１ｂは、記憶装置２ａから記憶装置２ｂに対してデータＤ１を移動する第２の処理の実行要求を受信部１ａが受信したとき、第１の処理が実行中であることが状態情報３に記録されている場合には、第１の処理の実行を中止し、第２の処理の実行を開始する。【選択図】図１
2018116604.tif 000002
【特許請求の範囲】
【請求項１】
処理の実行要求を受信する受信部と、
第１の記憶装置から、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置に対してデータを移動する第１の処理の実行要求を前記受信部が受信したとき、前記第１の処理が実行中であることを状態情報に記録して、前記第１の処理の実行を開始し、前記第２の記憶装置から前記第１の記憶装置に対して前記データを移動する第２の処理の実行要求を前記受信部が受信したとき、前記第１の処理が実行中であることが前記状態情報に記録されている場合には、前記第１の処理の実行を中止し、前記第２の処理の実行を開始する制御部と、
を有する情報処理装置。
【請求項２】
前記第１の処理は、前記データを前記第１の記憶装置から読み出す処理と、前記データを前記第２の記憶装置に書き込む処理と、前記第１の記憶装置内の前記データを削除する処理とを含み、
前記第２の処理は、前記データを前記第２の記憶装置から読み出す処理と、前記データを前記第１の記憶装置に書き込む処理と、前記第２の記憶装置内の前記データを無効化する処理とを含む、
請求項１記載の情報処理装置。
【請求項３】
前記制御部は、さらに、
前記第２の処理の実行要求を開始するとき、前記第２の処理が実行中であることを前記状態情報に記録し、
前記第１の処理の実行要求を前記受信部が受信したとき、前記第２の処理が実行中であることが前記状態情報に記録されている場合には、前記第２の処理の実行を中止し、前記第１の処理の実行を開始する、
請求項１または２記載の情報処理装置。
【請求項４】
前記制御部は、さらに、前記データを更新する更新データを前記第１の記憶装置に書き込む第３の処理の実行要求を前記受信部が受信したとき、前記第１の処理が実行中であることが前記状態情報に記録されている場合には、前記第１の処理の実行を中止し、前記第３の処理の実行を開始する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御部は、さらに、
前記データを更新する更新データを前記第１の記憶装置に書き込む第３の処理の実行要求を前記受信部が受信したとき、前記第３の処理が実行中であることを前記状態情報に記録して、前記第３の処理の実行を開始し、
前記第２の処理の実行要求を前記受信部が受信したとき、前記第３の処理が実行中であることが前記状態情報に記録されている場合には、前記第２の処理の実行を回避する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御部は、さらに、
前記データを更新する更新データを前記第１の記憶装置に書き込む第３の処理の実行要求を前記受信部が受信したとき、前記第３の処理が実行中であることを前記状態情報に記録して、前記第３の処理の実行を開始し、
前記第１の処理の実行要求を前記受信部が受信したとき、前記第３の処理が実行中であることが前記状態情報に記録されている場合には、前記第１の処理の実行を回避する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項７】
コンピュータが、
第１の記憶装置から、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置に対してデータを移動する第１の処理の実行が要求されたとき、前記第１の処理が実行中であることを状態情報に記録して、前記第１の処理の実行を開始し、
前記第２の記憶装置から前記第１の記憶装置に対して前記データを移動する第２の処理の実行が要求されたとき、前記第１の処理が実行中であることが前記状態情報に記録されている場合には、前記第１の処理の実行を中止し、前記第２の処理の実行を開始する、
情報処理方法。
【請求項８】
コンピュータに、
第１の記憶装置から、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置に対してデータを移動する第１の処理の実行が要求されたとき、前記第１の処理が実行中であることを状態情報に記録して、前記第１の処理の実行を開始し、
前記第２の記憶装置から前記第１の記憶装置に対して前記データを移動する第２の処理の実行が要求されたとき、前記第１の処理が実行中であることが前記状態情報に記録されている場合には、前記第１の処理の実行を中止し、前記第２の処理の実行を開始する、
処理を実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
記憶装置については、一般的に、アクセス性能が高いほど容量当たりのコストが高い。そのため、要求されるアクセス性能や容量、コストの上限のバランスを考慮して、記憶装置の種別や機種が選択される。
【０００３】
このような観点から、アクセス性能の異なる複数の記憶装置を有効利用することが考えられている。例えば、ストレージシステム内の記憶装置をアクセス性能に応じて階層化し、階層間でデータを移動するストレージ階層化技術が知られている。この技術では、アクセス頻度の高いデータはアクセス性能の高い記憶装置に配置され、アクセス頻度の低いデータはアクセス性能の低い記憶装置に配置される。
【０００４】
また、近年では、スケーラビリティやセキュリティが高いという特徴を有するオブジェクトストレージが広く利用されている。そして、オブジェクトストレージに対しても、上記のストレージ階層化技術の適用が考えられている。
【０００５】
例えば、「ＯｐｅｎＳｔａｃｋ  Ｏｂｊｅｃｔ  Ｓｔｏｒａｇｅ：Ｓｗｉｆｔ」では、ＡＰＩ（Application Programming Interface）の拡張仕様としてマイグレーションとリコールを実装することが提案されている。マイグレーションは、ＨＤＤ（Hard Disk Drive）などのアクセス性能が高い記憶装置から、光ディスクや磁気テープなどのアクセス性能が低い記憶装置に対してデータを移動する処理である。リコールは、その逆方向にデータを移動する処理である。
【０００６】
なお、オブジェクトストレージに関連する技術の例として、ストレージノードに格納された時系列データの読み出しを高速化する技術が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１９９５８１号公報
【非特許文献】
【０００８】
【非特許文献１】OpenStack、“Swift/HighLatencyMedia”、［online］、［２０１７年１月１３日検索］、インターネット＜URL: https://wiki.openstack.org/wiki/Swift/HighLatencyMedia＞
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、ストレージ階層化技術では、アクセス性能が高い記憶装置からアクセス性能が低い記憶装置へのデータの移動（ここでは「マイグレーション」とする）と、その逆方向への同一データの移動（ここでは「リコール」とする）とが近接した時間に実行されたときに、データが誤って削除されることがあるという問題がある。この問題は、例えば、リコールの直後にマイグレーションが実行される場合に発生し得る。
【００１０】
リコールの処理には、アクセス性能が低い記憶装置からデータを読み出してアクセス性能の高い記憶装置に書き込む処理と、前者の記憶装置に格納されていたデータを削除する処理とが含まれる。このように、リコールの処理過程では、アクセス性能の低い記憶装置に対して２回のアクセスが行われる。一方、マイグレーションの処理過程では、アクセス性能の低い記憶装置に対してはデータを書き込むための１回のアクセスしか行われないので、マイグレーションの処理にかかる時間はリコールの処理にかかる時間より短い。このため、リコールの直後にマイグレーションが実行された場合、リコールの進捗が遅延し、マイグレーションによるアクセス性能の低い記憶装置へのデータの書き込みの完了後に、リコールによるデータ削除が実行される場合がある。この場合、マイグレーションによって書き込まれたデータが誤って削除されてしまう。
【００１１】
１つの側面では、本発明は、アクセス性能の異なる記憶装置間での同一データの移動が近接した時間に要求された場合におけるデータ喪失を防止した情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
１つの案では、受信部と制御部とを有する情報処理装置が提供される。受信部は、処理の実行要求を受信する。制御部は、第１の記憶装置から、第１の記憶装置よりアクセス速度が高い第２の記憶装置に対してデータを移動する第１の処理の実行要求を受信部が受信したとき、第１の処理が実行中であることを状態情報に記録して、第１の処理の実行を開始する。また、制御部は、第２の記憶装置から第１の記憶装置に対してデータを移動する第２の処理の実行要求を受信部が受信したとき、第１の処理が実行中であることが状態情報に記録されている場合には、第１の処理の実行を中止し、第２の処理の実行を開始する。
【００１３】
また、１つの案では、コンピュータが次のような処理を実行する情報処理方法が提供される。コンピュータは、第１の記憶装置から、第１の記憶装置よりアクセス速度が高い第２の記憶装置に対してデータを移動する第１の処理の実行が要求されたとき、第１の処理が実行中であることを状態情報に記録して、第１の処理の実行を開始し、第２の記憶装置から第１の記憶装置に対してデータを移動する第２の処理の実行が要求されたとき、第１の処理が実行中であることが状態情報に記録されている場合には、第１の処理の実行を中止し、第２の処理の実行を開始する。
【００１４】
さらに、１つの案では、上記の情報処理方法と同様の処理をコンピュータに実行させる情報処理プログラムが提供される。
【発明の効果】
【００１５】
１つの側面では、アクセス性能の異なる記憶装置間での同一データの移動が近接した時間に要求された場合におけるデータ喪失を防止できる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ホットプロキシのハードウェア構成例を示す図である。
【図４】ストレージ間のデータ移動について説明するための図である。
【図５】マイグレーションの処理手順についての比較例を示す図である。
【図６】リコールの処理手順についての比較例を示す図である。
【図７】比較例における問題点について説明するための図である。
【図８】処理の組み合わせに応じた制御パターンの例を示す図である。
【図９】ホットプロキシおよびコールドプロキシが備える処理機能の構成例を示すブロック図である。
【図１０】フラグ管理情報のデータ構成例を示す図である。
【図１１】ＰＵＴ処理が要求された場合におけるホットプロキシの処理手順の例を示すフローチャートである。
【図１２】マイグレーションが要求された場合におけるホットプロキシの処理手順の例を示すフローチャート（その１）である。
【図１３】マイグレーションが要求された場合におけるホットプロキシの処理手順の例を示すフローチャート（その２）である。
【図１４】リコールが要求された場合におけるホットプロキシの処理手順の例を示すフローチャート（その１）である。
【図１５】リコールが要求された場合におけるホットプロキシの処理手順の例を示すフローチャート（その２）である。
【図１６】第３の実施の形態に係るストレージシステムの各装置が備える処理機能の構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。図１に示す情報処理装置１は、記憶装置２ａと記憶装置２ｂとの間でのデータの移動処理を制御可能な装置である。ここで、記憶装置２ａのアクセス速度は、記憶装置２ｂより高いものとする。
【００１８】
情報処理装置１は、受信部１ａと制御部１ｂとを有する。受信部１ａは、例えば、通信インタフェースとして実現される。制御部１ｂは、例えば、プロセッサとして実現される。
【００１９】
受信部１ａは、図示しない他の装置から処理の実行要求を受信することが可能である。
制御部１ｂは、記憶装置２ｂから記憶装置２ａに対してデータ（「データＤ１」とする）を移動する第１の処理の実行要求を受信部１ａが受信したとき（ステップＳ１）、第１の処理が実行中であることを状態情報３に記録して（ステップＳ２）、第１の処理の実行を開始する（ステップＳ３）。図１の例では、状態情報３は「０」または「１」のいずれかの値に設定されるものとする。「０」は第１の処理が実行中でないことを示し、「１」は第１の処理が実行中であることを示すものとする。したがって、ステップＳ２では、状態情報３は「０」から「１」に更新される。
【００２０】
なお、制御部１ｂは、第１の処理が完了すると、第１の処理が実行中でないことを状態情報３に記録する。図１の例では、制御部１ｂは、状態情報３を「１」から「０」に更新する。
【００２１】
また、制御部１ｂは、記憶装置２ａから記憶装置２ｂに対して同じデータＤ１を移動する第２の処理の実行要求を受信部１ａが受信したとき（ステップＳ４）、状態情報３を参照する（ステップＳ５）。ここで、第１の処理が実行中であることが状態情報３に記録されている場合には、制御部１ｂは、第１の処理の実行を中止し（ステップＳ６）、第２の処理の実行を開始する（ステップＳ７）。
【００２２】
これにより、第１の処理の実行が要求された直後に第２の処理の実行が要求された場合には、第１の処理の実行が中止され、第２の処理のみが実行される。したがって、第１の処理と第２の処理とが並列に実行され、かつ、第１の処理の進捗が遅延することによって、第２の処理の結果として記憶装置２ｂに書き込まれたデータＤ１が誤って削除されるという事態が発生することを防止できる。
【００２３】
例えば、第１の処理には、記憶装置２ｂからデータＤ１を読み出して記憶装置２ａに書き込む処理と、記憶装置２ｂに格納されていたデータを削除する処理とが含まれる。このように、第１の処理の過程では、アクセス性能の低い記憶装置２ｂに対して２回のアクセスが行われる。一方、第１の処理の過程では、記憶装置２ｂに対してはデータＤ１を書き込むための１回のアクセスしか行われないので、第２の処理にかかる時間は第１の処理にかかる時間より短い。このため、第１の処理の実行開始直後に第２の処理が実行された場合、第１の処理の進捗が遅延し、第２の処理による記憶装置２ｂへのデータＤ１の書き込みの完了後に、第１の処理によるデータＤ１の削除が実行される場合がある。
【００２４】
制御部１ｂは、第１の処理の実行を中止してから第２の処理の実行を開始することで、上記のようにしてデータＤ１が喪失する事態の発生を防止できる。
なお、第２の処理は、第１の処理によって移動したデータＤ１の格納位置を元の記憶装置２ｂに戻す処理であるので、第１の処理の実行が途中で中止されても、処理結果（すなわち、データＤ１の格納位置）に変化はない。
【００２５】
〔第２の実施の形態〕
次に、第２の実施の形態として、図１に示した情報処理装置１を含むストレージシステムの例について説明する。
【００２６】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、データがオブジェクト単位で取り扱われるオブジェクトストレージが、複数のストレージノードに分散して配置される分散型のオブジェクトストレージシステムである。本実施の形態では、例として、図２に示すストレージシステムは、「ＯｐｅｎＳｔａｃｋ  Ｏｂｊｅｃｔ  Ｓｔｏｒａｇｅ：Ｓｗｉｆｔ」に準拠するものとする。
【００２７】
図２に示すストレージシステムでは、ホットプロキシ１００に対して、複数のアカウントサーバと、複数のコンテナサーバと、複数のオブジェクトサーバとが接続されている。本実施の形態では、例として、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃと、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃとが、ホットプロキシ１００に接続されているものとする。また、ホットプロキシ１００には、クライアント装置５０が接続されている。なお、ホットプロキシ１００には、クライアント装置５０が複数接続されていてもよい。
【００２８】
ホットプロキシ１００は、図１に示した情報処理装置１の一例である。ホットプロキシ１００は、オブジェクトにアクセスするためのフロントエンドとして機能するプロキシサーバである。ホットプロキシ１００は、オブジェクトにアクセスするためのＡＰＩをクライアント装置５０に提供する。クライアント装置５０は、オブジェクトを識別するためのＵＲＩ（Uniform Resource Identifier）を指定することで、ホットプロキシ１００に対して所望のオブジェクトへのアクセスを要求する。
【００２９】
オブジェクトは、アカウント、コンテナ、オブジェクトという３種類の情報によって管理される。オブジェクトを示すＵＲＩには、アカウント、コンテナ、オブジェクトをそれぞれ示すバイナリ情報が含まれる。
【００３０】
アカウントは、コンテナの格納場所を示す。アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのそれぞれには、管理を担当するアカウントが割り当てられている。アカウントサーバ２１０ａ，２１０ｂ，２１０ｃは、それぞれが管理担当となったアカウントの配下にあるコンテナの一覧を管理する。
【００３１】
コンテナは、オブジェクトの格納場所を示す。コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのそれぞれには、管理を担当するコンテナが割り当てられている。コンテナサーバ２２０ａ，２２０ｂ，２２０ｃは、それぞれが管理担当となったコンテナの配下にあるオブジェクトの一覧を管理する。
【００３２】
オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃは、オブジェクトが格納されるストレージ２３１ａ，２３１ｂ，２３１ｃをそれぞれ備えている。オブジェクトには、データとメタデータとが含まれる。例えば、オブジェクトに含まれるデータは、ファイルとしてストレージに格納され、オブジェクトに含まれるメタデータは、ファイルの拡張属性に格納される。
【００３３】
クライアント装置５０は、例えば、オブジェクトのデータを読み出すための「ＧＥＴ」というコマンドや、オブジェクトのデータを書き込むための「ＰＵＴ」というコマンドを、ホットプロキシ１００に送信することができる。以下、これらのコマンド名を用い、オブジェクトのデータを読み出す処理を「ＧＥＴ処理」と記載し、オブジェクトのデータを書き込む処理を「ＰＵＴ処理」と記載する。
【００３４】
ホットプロキシ１００は、クライアント装置５０からオブジェクトへのアクセスが要求されると、いずれかのアカウントサーバ、いずれかのコンテナサーバ、および、いずれかのオブジェクトサーバと通信しながら、オブジェクトにアクセスする。ここで、ＧＥＴコマンドおよびＰＵＴコマンドをホットプロキシ１００が受信した場合の処理手順について説明する。
【００３５】
まず、ホットプロキシ１００は、クライアント装置５０からＧＥＴコマンドを受信すると、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのうち、指定されたＵＲＩから決まるアカウントサーバに対して、アカウント情報を問い合わせる。すると、アカウントサーバから、オブジェクトに対応するコンテナサーバが指定されたアカウント情報が返信される。
【００３６】
ホットプロキシ１００は、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのうち、アカウント情報で指定されたコンテナサーバに対して、コンテナ情報を問い合わせる。すると、コンテナサーバから、オブジェクトに対応するオブジェクトサーバが指定されたコンテナ情報が返信される。
【００３７】
ホットプロキシ１００は、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのうち、コンテナ情報で指定されたオブジェクトサーバに対して、オブジェクトの読み出しを要求する。すると、オブジェクトサーバから、オブジェクトに含まれるデータが返信される。ホットプロキシ１００は、受信したデータをＧＥＴコマンドの送信元のクライアント装置５０に送信する。
【００３８】
一方、ホットプロキシ１００は、クライアント装置５０からＰＵＴコマンドを受信すると、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのうち、指定されたＵＲＩから決まるアカウントサーバに対して、アカウント情報を問い合わせる。すると、アカウントサーバから、オブジェクトに対応するコンテナサーバが指定されたアカウント情報が返信される。
【００３９】
ホットプロキシ１００は、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのうち、アカウント情報で指定されたコンテナサーバに対して、コンテナ情報を問い合わせる。すると、コンテナサーバから、オブジェクトに対応するオブジェクトサーバが指定されたコンテナ情報が返信される。
【００４０】
ホットプロキシ１００は、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのうち、コンテナ情報で指定されたオブジェクトサーバに対して、ＰＵＴコマンドとともに受信したデータを送信して、オブジェクトの書き込みを要求する。すると、オブジェクトサーバから、オブジェクトへのデータの書き込み完了が通知される。なお、実際には、オブジェクトサーバからコンテナサーバへのオブジェクトの登録要求や、コンテナサーバからアカウントサーバへのオブジェクトの更新通知が行われた後に、書き込み完了がホットプロキシ１００に通知される。
【００４１】
ホットプロキシ１００は、ＰＵＴコマンドの送信元のクライアント装置５０に対して、書き込みが完了したことを通知する。
なお、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃ、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃ、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃの機能は、それぞれが別々の装置に実装されていなくてもよい。例えば、アカウントサーバ２１０ａとコンテナサーバ２２０ａとオブジェクトサーバ２３０ａが、同一の装置に実装されていてもよい。また、アカウントサーバ２１０ｂとコンテナサーバ２２０ｂとオブジェクトサーバ２３０ｂが、同一の装置に実装されてもよい。さらに、アカウントサーバ２１０ｃとコンテナサーバ２２０ｃとオブジェクトサーバ２３０ｃが、同一の装置に実装されていてもよい。
【００４２】
次に、図２に示すストレージシステムでは、さらに、ホットプロキシ１００に対してコールドプロキシ３００が接続されている。そして、コールドプロキシ３００に対して、複数のアカウントサーバと、複数のコンテナサーバと、複数のオブジェクトサーバとが接続されている。本実施の形態では、例として、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃと、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃとが、コールドプロキシ３００に接続されているものとする。
【００４３】
アカウントサーバ４１０ａ，４１０ｂ，４１０ｃは、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃと同様の処理を実行可能なサーバ装置である。コンテナサーバ４２０ａ，４２０ｂ，４２０ｃは、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃと同様の処理を実行可能なサーバ装置である。オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃは、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃと同様の処理を実行可能なサーバ装置である。オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃは、オブジェクトが格納されるストレージ４３１ａ，４３１ｂ，４３１ｃをそれぞれ備えている。
【００４４】
コールドプロキシ３００、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃ、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃ、および、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃによって、独立したオブジェクトストレージシステムが構築されている。コールドプロキシ３００は、ホットプロキシ１００が、このオブジェクトストレージシステムに格納されたオブジェクトにアクセスするためのフロントエンドとして機能するプロキシサーバである。コールドプロキシ３００は、少なくとも、ホットプロキシ１００から少なくともＧＥＴコマンドとＰＵＴコマンドを受信し、ホットプロキシ１００と同様の処理手順によってこれらのコマンドを処理することができる。
【００４５】
ところで、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃが備えるストレージ４３１ａ，４３１ｂ，４３１ｃは、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃが備えるストレージ２３１ａ，２３１ｂ，２３１ｃよりアクセス速度が低い。例えば、ストレージ４３１ａ，４３１ｂ，４３１ｃは、光ディスクまたは磁気テープとして実現され、ストレージ２３１ａ，２３１ｂ，２３１ｃは、ＨＤＤまたはＳＳＤ（Solid State Drive）として実現される。
【００４６】
図２に示すストレージシステムでは、ストレージ２３１ａ，２３１ｂ，２３１ｃと、ストレージ４３１ａ，４３１ｂ，４３１ｃとの間で、オブジェクトに含まれるデータを移動することが可能になっている。このデータ移動は、クライアント装置５０からの指示に応じて行われる。クライアント装置５０は、アクセス頻度の高いデータがストレージ２３１ａ，２３１ｂ，２３１ｃに格納され、アクセス頻度の低いデータがストレージ４３１ａ，４３１ｂ，４３１ｃに格納されるように、データ移動を制御する。
【００４７】
このように、図２に示すストレージシステムでは、アクセス速度が高いストレージ２３１ａ，２３１ｂ，２３１ｃと、アクセス速度が低いストレージ４３１ａ，４３１ｂ，４３１ｃとによって記憶領域が階層化されたストレージ階層化制御が行われる。これにより、アクセス性能が高く、容量当たりのコストが高いストレージ２３１ａ，２３１ｂ，２３１ｃの容量を削減できる。その結果、データのアクセス性能と記憶装置の導入コストとを好適にバランスさせることができる。
【００４８】
図３は、ホットプロキシのハードウェア構成例を示す図である。ホットプロキシ１００は、例えば、図３に示すようなコンピュータとして実現される。ホットプロキシ１００は、プロセッサ１０１によって装置全体が制御されている。
【００４９】
プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。なお、プロセッサ１０１は、例えば、図１に示した制御部１ｂの一例である。
【００５０】
プロセッサ１０１には、バス１０８を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、ホットプロキシ１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００５１】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６および通信インタフェース１０７がある。
【００５２】
ＨＤＤ１０３は、ホットプロキシ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤなどの他の種類の不揮発性記憶装置を使用することもできる。
【００５３】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像を表示装置１０４ａに表示させる。表示装置１０４ａとしては、液晶ディスプレイや有機ＥＬ（Electroluminescence）ディスプレイなどがある。
【００５４】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００５５】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００５６】
通信インタフェース１０７は、ネットワーク１０７ａを介して他の装置との間でデータの送受信を行う。なお、通信インタフェース１０７は、例えば、図１に示した受信部１ａの一例である。
【００５７】
以上の構成によってホットプロキシ１００の処理機能が実現される。なお、クライアント装置５０、コールドプロキシ３００、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃ，４１０ａ，４１０ｂ，４１０ｃ、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃ，４２０ａ，４２０ｂ，４２０ｃ、および、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃ，４３０ａ，４３０ｂ，４３０ｃも、図３のようなハードウェア構成のコンピュータとして実現可能である。
【００５８】
図４は、ストレージ間のデータ移動について説明するための図である。前述のように、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃが備えるストレージ４３１ａ，４３１ｂ，４３１ｃは、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃが備えるストレージ２３１ａ，２３１ｂ，２３１ｃよりアクセス速度が低い。以下の説明では、アクセス速度が高いストレージ２３１ａ，２３１ｂ，２３１ｃを「ホットストレージ」と記載する場合がある。また、アクセス速度が低いストレージ４３１ａ，４３１ｂ，４３１ｃを、「コールドストレージ」と記載する場合がある。
【００５９】
図４に示すオブジェクトサーバ２３０は、図２に示したオブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃの１つであり、ホットストレージ２３１を備える。また、図４に示すオブジェクトサーバ４３０は、図２に示したオブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃの１つであり、コールドストレージ４３１を備える。
【００６０】
そして、前述のように、本実施の形態に係るストレージシステムでは、ストレージ階層化制御を行うことが可能になっている。すなわち、ホットストレージ２３１とコールドストレージ４３１との間で、オブジェクトに含まれるデータを移動することが可能になっている。
【００６１】
以下の説明では、ホットストレージ２３１からコールドストレージ４３１へのデータ移動を「マイグレーション」と記載し、その逆方向へのデータ移動を「リコール」と記載する。また、クライアント装置５０は、オブジェクトを指定してマイグレーションの実行を要求するための「ＭＩＧＲＡＴＥ」というコマンドを、ホットプロキシ１００に送信することができる。さらに、クライアント装置５０は、オブジェクトを指定してリコールの実行を要求するための「ＲＥＣＡＬＬ」というコマンドを、ホットプロキシ１００に送信することもできる。
【００６２】
ここで、図５、図６を用いてマイグレーションおよびリコールの比較例について説明し、図７を用いて比較例における問題点について説明した後、図８以降において、本実施の形態についての説明を続ける。
【００６３】
図５、図６に示す比較例では、マイグレーションおよびリコールがオブジェクトサーバ２３０によって制御される。
図５は、マイグレーションの処理手順についての比較例を示す図である。
【００６４】
ホットプロキシ１００は、マイグレーションの実行を要求するＭＩＧＲＡＴＥコマンドをクライアント装置５０から受信すると、すぐにクライアント装置５０に応答する。マイグレーションには、アクセス速度の低いコールドストレージ４３１へのアクセスを含むため、比較的時間がかかる。このため、ホットプロキシ１００は、ＭＩＧＲＡＴＥコマンドを受信するとすぐにマイグレーションの完了通知をクライアント装置５０に返信し、これ以後の処理は非同期に実行される。
【００６５】
ホットプロキシ１００は、マイグレーションの完了通知の送信後に、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかに対してＭＩＧＲＡＴＥコマンドを転送する（ステップＳ１１）。転送先のオブジェクトサーバは、例えば、マイグレーション制御用としてあらかじめ決められたオブジェクトサーバである。あるいは、転送先のオブジェクトサーバは、ＭＩＧＲＡＴＥコマンドとともに指定されたオブジェクトのＵＲＩから決まるオブジェクトサーバであってもよい。
【００６６】
ここでは、ＭＩＧＲＡＴＥコマンドがオブジェクトサーバ２３０ａに送信されたものとする。オブジェクトサーバ２３０ａは、実行が要求されたマイグレーションの処理を、ＧＥＴ処理やＰＵＴ処理のようなアトミックな処理に分解して制御する。まず、オブジェクトサーバ２３０ａは、ホットストレージ２３１からのオブジェクトのＧＥＴ処理の実行を要求するためのＧＥＴコマンドを、ホットプロキシ１００に送信する（ステップＳ１２）。
【００６７】
ホットプロキシ１００は、ＧＥＴコマンドに応じて、指定されたオブジェクトに含まれるデータを、オブジェクトに対応するオブジェクトサーバ２３０（オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれか）から読み出す。この読み出しの過程では、実際には前述のように、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。ホットプロキシ１００は、読み出されたデータをオブジェクトサーバ２３０ａに送信する。
【００６８】
次に、オブジェクトサーバ２３０ａは、コールドストレージ４３１に対するオブジェクトのＰＵＴ処理の実行を要求するためのＰＵＴコマンドを、受信したデータとともに、ホットプロキシ１００を介してコールドプロキシ３００に送信する（ステップＳ１３）。
【００６９】
コールドプロキシ３００は、ＰＵＴコマンドに応じて、オブジェクトに対応するオブジェクトサーバ４３０（オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃのいずれか）に対してデータを送信し、オブジェクトの書き込みを要求する。この書き込み要求の過程でも、実際には、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとが行われる。コールドプロキシ３００は、書き込みが完了すると、完了通知をホットプロキシ１００を介してオブジェクトサーバ２３０ａに送信する。
【００７０】
最後に、オブジェクトサーバ２３０ａは、「ｓｔｕｂ」のＰＵＴ処理の実行を要求するためのＰＵＴコマンドを、ホットプロキシ１００に送信する（ステップＳ１４）。ｓｔｕｂとは、オブジェクトの実体がホットストレージ２３１に格納されておらず、対応するコールドストレージ４３１に格納されていることを示すデータである。コールドストレージ４３１に格納されているオブジェクトのＧＥＴ処理がクライアント装置５０から要求された場合、ホットプロキシ１００はまず、ホットストレージ２３１を備えるオブジェクトサーバ２３０にアクセスする。このとき、オブジェクトに対応するｓｔｕｂが記録されていることで、ホットプロキシ１００は、オブジェクトが対応するコールドストレージ４３１に格納されていることを認識できる。
【００７１】
ホットプロキシ１００は、ＰＵＴコマンドに応じて、オブジェクトの実体を削除してｓｔｕｂを書き込むことを、オブジェクトが格納されているオブジェクトサーバ２３０に要求する。この要求の過程でも、実際には、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。ホットプロキシ１００は、ｓｔｕｂの書き込みが完了すると、完了通知をオブジェクトサーバ２３０ａに送信する。
【００７２】
図６は、リコールの処理手順についての比較例を示す図である。
ホットプロキシ１００は、リコールの実行を要求するＲＥＣＡＬＬコマンドをクライアント装置５０から受信すると、すぐにクライアント装置５０に応答する。マイグレーションと同様に、リコールの処理にも比較的時間がかかる。このため、ホットプロキシ１００は、ＲＥＣＡＬＬコマンドを受信するとすぐにリコールの完了通知をクライアント装置５０に返信し、これ以後の処理は非同期に実行される。
【００７３】
ホットプロキシ１００は、リコールの完了通知の送信後に、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかに対してＲＥＣＡＬＬコマンドを転送する（ステップＳ２１）。マイグレーションの場合と同様に、転送先のオブジェクトサーバは、例えば、リコール制御用としてあらかじめ決められたオブジェクトサーバである。あるいは、転送先のオブジェクトサーバは、ＲＥＣＡＬＬコマンドとともに指定されたオブジェクトのＵＲＩから決まるオブジェクトサーバであってもよい。
【００７４】
ここでは、ＲＥＣＡＬＬコマンドがオブジェクトサーバ２３０ａに送信されたものとする。オブジェクトサーバ２３０ａは、マイグレーションの場合と同様に、実行が要求されたリコールの処理を、ＧＥＴ処理やＰＵＴ処理のようなアトミックな処理に分解して制御する。まず、オブジェクトサーバ２３０ａは、コールドストレージ４３１からのオブジェクトのＧＥＴ処理の実行を要求するためのＧＥＴコマンドを、ホットプロキシ１００を介してコールドプロキシ３００に送信する（ステップＳ２２）。
【００７５】
コールドプロキシ３００は、ＧＥＴコマンドに応じて、指定されたオブジェクトに含まれるデータを、オブジェクトに対応するオブジェクトサーバ４３０（オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃのいずれか）から読み出す。この読み出しの過程でも、実際には、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとが行われる。コールドプロキシ３００は、読み出されたデータをホットプロキシ１００を介してオブジェクトサーバ２３０ａに送信する。
【００７６】
次に、オブジェクトサーバ２３０ａは、ホットストレージ２３１に対するオブジェクトのＰＵＴ処理の実行を要求するためのＰＵＴコマンドを、受信したデータとともにホットプロキシ１００に送信する（ステップＳ２３）。
【００７７】
ホットプロキシ１００は、ＰＵＴコマンドに応じて、オブジェクトに対応するオブジェクトサーバ２３０（オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれか）に対してデータを送信し、オブジェクトの書き込みを要求する。この書き込み要求の過程でも、実際には、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。ホットプロキシ１００は、書き込みが完了すると、完了通知をオブジェクトサーバ２３０ａに送信する。
【００７８】
最後に、オブジェクトサーバ２３０ａは、コールドストレージ４３１内のオブジェクトを削除するためのＤＥＬＥＴＥコマンドを、ホットプロキシ１００を介してコールドプロキシ３００に送信する（ステップＳ２４）。
【００７９】
コールドプロキシ３００は、ＤＥＬＥＴＥコマンドに応じて、オブジェクトの削除を、オブジェクトが格納されているオブジェクトサーバ４３０に要求する。この要求の過程でも、実際には、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとが行われる。コールドプロキシ３００は、オブジェクトの削除が完了すると、完了通知をホットプロキシ１００を介してオブジェクトサーバ２３０ａに送信する。
【００８０】
ところで、図５に示したように、マイグレーションの処理過程には、アクセス速度の低いコールドストレージ４３１に対するアクセスが、ステップＳ１３の１回含まれる。一方、図６に示したように、リコールの処理過程には、コールドストレージ４３１に対するアクセスが、ステップＳ２２とステップＳ２４の２回含まれる。このため、リコールの開始から完了までの時間は、マイグレーションの開始から完了までの時間より長い。
【００８１】
図５、図６に示した処理手順を用いた場合には、このような処理時間の差が原因となって、リコールの実行が要求された直後に同じオブジェクトのマイグレーションの実行が要求されると、オブジェクトが誤って削除されてしまうことがあるという問題がある。
【００８２】
図７は、比較例における問題点について説明するための図である。この図７は、リコールの実行が要求された直後に同じオブジェクトのマイグレーションの実行が要求された場合の処理の進捗状況の例を示している。リコールに含まれる各処理には図６と同様のステップ番号を付しており、マイグレーションに含まれる各処理には図５と同様のステップ番号を付している。また、図６と同様に、リコールはオブジェクトサーバ２３０ａによって制御され、図５と同様に、マイグレーションもオブジェクトサーバ２３０ａによって制御されるものとする。
【００８３】
なお、リコールはオブジェクトへのアクセス頻度が高くなった場合に要求され、マイグレーションはオブジェクトへのアクセス頻度が低くなった場合に要求される。このため、通常は、リコールの実行が要求された直後に同じオブジェクトのマイグレーションの実行が要求されることはない。しかし、例えば、クライアント装置５０で誤った処理が実行された場合や、クライアント装置５０がホットプロキシ１００に複数接続され、リコール要求とマイグレーション要求が別々のクライアント装置５０から発行される場合などに、上記の事象が発生し得る。
【００８４】
図７では、例えば、オブジェクトサーバ２３０ａがＲＥＣＡＬＬコマンドに応じてＧＥＴコマンドをコールドプロキシ３００に送信（ステップＳ２２）した後に、クライアント装置５０からＭＩＧＲＡＴＥコマンドが発行されたものとする。ここで、ステップＳ２２のＧＥＴ処理は、アクセス速度の低いコールドストレージ４３１へのアクセスを含むため、処理の完了までに時間がかかる。このため、ステップＳ２２でのＧＥＴコマンドの送信からその応答の受信までの間に、マイグレーションに含まれる処理が次々に進んでいく可能性がある。
【００８５】
図７の例では、ステップＳ２２でのＧＥＴコマンドの送信からその応答の受信までの間に、マイグレーションに含まれるＭＩＧＲＡＴＥコマンドの受信（ステップＳ１１）とＧＥＴコマンドの送信（ステップＳ１２）とが完了したとする。この場合、オブジェクトサーバ２３０ａは、コールドストレージ４３１から取得したデータについてのＰＵＴコマンドを送信（ステップＳ２３）するとともに、マイグレーションに含まれるＰＵＴコマンドの送信を実行する（ステップＳ１３）。さらに、ステップＳ１３よりステップＳ２３の処理時間の方が短いので、オブジェクトサーバ２３０ａは、リコールに含まれるＤＥＬＥＴＥコマンドの送信を実行する（ステップＳ２４）。
【００８６】
このように処理が進捗した場合、先に実行が要求されたリコールに含まれるＤＥＬＥＴＥコマンドの送信（ステップＳ２４）より、後に実行が要求されたマイグレーションに含まれるＰＵＴコマンドの送信（ステップＳ１３）の方が、先に実行されてしまう。この場合、ステップＳ１３の処理によりコールドストレージ４３１に格納されたデータが、ステップＳ２４の処理によって誤って削除されてしまう。
【００８７】
このように、同じオブジェクトについてのリコールとマイグレーションとが近い時間に要求された場合、マイグレーションに含まれるＰＵＴコマンドの送信と、リコールに含まれるＤＥＬＥＴＥコマンドの送信とが逆転してしまう可能性がある。この場合、意図せずにオブジェクトが喪失してしまうという問題がある。
【００８８】
このような問題に対して、本実施の形態では、まず、マイグレーションとリコールとがホットプロキシ１００によって制御される。これにより、マイグレーションまたはリコールが実行中であるか否かを、ホットプロキシ１００が統合的に管理できるようにする。そして、リコールまたはマイグレーションの実行が要求されたとき、ホットプロキシ１００は、同じオブジェクトについてのマイグレーションまたはリコールが実行中であるか否かを判定する。実行中である場合、ホットプロキシ１００は、実行が要求された処理と実行中の処理のうち、実行しても意味のない方の処理をキャンセルする。これにより、マイグレーションとリコールとが並列に実行されないようにし、その結果として、上記のようにデータが誤って削除される事態の発生を防止する。
【００８９】
図８は、処理の組み合わせに応じた制御パターンの例を示す図である。ホットプロキシ１００は、同じオブジェクトについて先に要求された処理と後に要求された処理との組み合わせに応じて、図８の対応表５００に示すような３種類の制御パターンＰ１，Ｐ２−１，Ｐ２−２を用いて制御を行う。なお、制御パターンＰ２−１，Ｐ２−２は、制御内容としては同じであるが、その理由が異なるため、異なるパターン番号を付して示している。
【００９０】
制御パターンＰ１は、後に要求された処理の実行により、先に要求された処理が意味を持たなくなるケースで用いられる。したがって、制御パターンＰ１では、後の処理が実行された時点で、先に要求されて現在実行中である処理が中止され、後に要求された処理だけが実行される。
【００９１】
例えば、図８に示すように、先に要求された処理がリコールであり、後に要求された処理がマイグレーションであるという組み合わせに対して、制御パターンＰ１が適用される。この組み合わせは、図７に示した問題が発生し得る組み合わせである。この組み合わせでは、リコールによってコールドストレージ４３１からホットストレージ２３１に移動したデータが、マイグレーションによってコールドストレージ４３１に戻される。このため、リコールの実行が中止されても処理結果は変わらない。したがって、リコールの実行が中止されてマイグレーションだけが実行されることで、コールドストレージ４３１に格納されるべきデータが誤って削除されることを防止できる。
【００９２】
また、以下のような組み合わせに対しても制御パターンＰ１が適用される。以下の組み合わせの場合には、先に要求された処理が無駄な処理の実行が中止されることで、ホットプロキシ１００などのストレージシステム内の装置の処理負荷や装置間の通信負荷を軽減できる。また、同じオブジェクトに対する異なる処理の実行によるエラーの発生を防止できる。
【００９３】
例えば、先に要求された処理がマイグレーションであり、後に要求された処理がリコールであるという組み合わせに対しても、制御パターンＰ１が適用される。この組み合わせでは、マイグレーションによってホットストレージ２３１からコールドストレージ４３１に移動したデータが、リコールによってホットストレージ２３１に戻される。このため、マイグレーションの実行が中止されても処理結果は変わらない。
【００９４】
また、先に要求された処理がマイグレーションまたはリコールであり、後に要求された処理がＰＵＴ処理（ただし、データの更新）であるという組み合わせに対しても、制御パターンＰ１が適用される。ＰＵＴ処理が要求されるということは、そのオブジェクトはアクセス頻度が高いオブジェクトと推定されるので、ＰＵＴ処理によってデータはホットストレージ２３１に格納される。このため、先に要求されたマイグレーションやリコールを実行する必要がなくなる。
【００９５】
次に、制御パターンＰ２−１は、後に要求された処理を実行しても、実質的な処理が行われないケースで用いられる。したがって、制御パターンＰ２−１では、先に要求された処理の実行が継続され、後に要求された処理の実行がキャンセルされる。これにより、ホットプロキシ１００などのストレージシステム内の装置の処理負荷や装置間の通信負荷を軽減できる。また、同じオブジェクトに対する異なる処理の実行によるエラーの発生を防止できる。
【００９６】
例えば、先に要求された処理と後に要求された処理とが同じ（マイグレーションまたはリコール）場合に、制御パターンＰ２−１が適用される。さらに、先に要求された処理がＰＵＴ処理であり、後に要求された処理がリコールである組み合わせに対しても、制御パターンＰ２−１が適用される。これは、ＰＵＴ処理ではリコールと同様、ホットストレージ２３１にデータが書き込まれるからである。
【００９７】
次に、制御パターンＰ２−２は、先に要求された処理がＰＵＴ処理であり、後に要求された処理がマイグレーションである組み合わせに対して適用される。マイグレーションは、長期間アクセスされていないオブジェクトについて要求されるが、その一方、ＰＵＴ処理が要求されたオブジェクトはアクセス頻度が高いと推定される。そこで、この組み合わせでは、マイグレーションの実行をキャンセルして、そのオブジェクトがホットストレージ２３１に格納されるようにし、そのオブジェクトに対するアクセスが再度行われたときに高速に読み出すことができるようにする。
【００９８】
次に、本実施の形態に係るストレージシステムでの処理の詳細について説明する。
まず、図９は、ホットプロキシおよびコールドプロキシが備える処理機能の構成例を示すブロック図である。
【００９９】
ホットプロキシ１００は、記憶部１１０、インタフェース処理部１２１、コマンド処理部１２２、マイグレーション制御部１２３およびリコール制御部１２４を有する。記憶部１１０は、例えばＲＡＭ１０２など、ホットプロキシ１００が備える記憶装置の記憶領域として実現される。インタフェース処理部１２１、コマンド処理部１２２、マイグレーション制御部１２３およびリコール制御部１２４の処理は、例えば、プロセッサ１０１が所定のアプリケーションプログラムを実行することで実現される。
【０１００】
記憶部１１０には、フラグ管理情報１１１が記憶される。フラグ管理情報１１１は、ＰＵＴ処理、マイグレーションおよびリコールがそれぞれ実行中であるか否かを、オブジェクトごとに示す情報を保持する。
【０１０１】
インタフェース処理部１２１は、クライアント装置５０との間のインタフェース処理を実行する。インタフェース処理部１２１は、クライアント装置５０からコマンドを受信し、受信したコマンドをコマンド処理部１２２、マイグレーション制御部１２３、リコール制御部１２４のいずれかに出力して、コマンドに応じた処理を実行させる。
【０１０２】
コマンド処理部１２２は、インタフェース処理部１２１、マイグレーション制御部１２３、リコール制御部１２４から受け付けたコマンドに応じた処理を実行する。コマンド処理部１２２が受け付けるコマンドは、ＧＥＴコマンド、ＰＵＴコマンド、ＤＥＬＥＴＥコマンドなど、アトミックな処理を実行するためのコマンドである。
【０１０３】
マイグレーション制御部１２３は、インタフェース処理部１２１からＭＩＧＲＡＴＥコマンドを受け付け、コマンド処理部１２２やコールドプロキシ３００にコマンドを発行することによってマイグレーションを実行する。
【０１０４】
リコール制御部１２４は、インタフェース処理部１２１からＲＥＣＡＬＬコマンドを受け付け、コマンド処理部１２２やコールドプロキシ３００にコマンドを発行することによってリコールを実行する。
【０１０５】
一方、コールドプロキシ３００は、インタフェース処理部３２１とコマンド処理部３２２とを有する。インタフェース処理部３２１とコマンド処理部３２２の処理は、例えば、コールドプロキシ３００が備えるプロセッサが所定のアプリケーションプログラムを実行することで実現される。
【０１０６】
インタフェース処理部３２１は、ホットプロキシ１００との間のインタフェース処理を実行する。インタフェース処理部３２１は、ホットプロキシ１００のマイグレーション制御部１２３またはリコール制御部１２４からコマンドを受信し、受信したコマンドをコマンド処理部３２２に出力して、コマンドに応じた処理を実行させる。
【０１０７】
コマンド処理部３２２は、インタフェース処理部３２１から受け付けたコマンドに応じた処理を実行する。コマンド処理部３２２が受け付けるコマンドは、ＧＥＴコマンド、ＰＵＴコマンド、ＤＥＬＥＴＥコマンドなど、アトミックな処理を実行するためのコマンドである。
【０１０８】
図１０は、フラグ管理情報のデータ構成例を示す図である。フラグ管理情報１１１は、オブジェクトごとのレコード１１１ａ，１１１ｂ，１１１ｃ，・・・を有する。各レコードには、オブジェクトのＵＲＩと、オブジェクトに対応するフラグセットとが登録される。
【０１０９】
フラグセットは、マイグレーションフラグ、リコールフラグおよびＰＵＴフラグを含む。マイグレーションフラグは、対応するオブジェクトについてのマイグレーションが実行中であるか否かを示す。リコールフラグは、対応するオブジェクトについてのリコールが実行中であるか否かを示す。ＰＵＴフラグは、対応するオブジェクトについてのＰＵＴ処理（ただし、データ更新）が実行中であるか否かを示す。マイグレーションフラグ、リコールフラグおよびＰＵＴフラグのいずれにも、実行中の場合は「１」がセットされ、実行中でない場合は「０」がセットされる。
【０１１０】
次に、ホットプロキシ１００の処理についてフローチャートを用いて説明する。
まず、図１１は、ＰＵＴ処理が要求された場合におけるホットプロキシの処理手順の例を示すフローチャートである。
【０１１１】
［ステップＳ４１］インタフェース処理部１２１は、クライアント装置５０からＰＵＴコマンドを受信すると、受信したＰＵＴコマンドをコマンド処理部１２２に出力する。
［ステップＳ４２］コマンド処理部１２２は、ＰＵＴ処理の対象として指定されたオブジェクトに対応するフラグセットがフラグ管理情報１１１に存在するかを判定する。フラグ管理情報１１１に、ＰＵＴ処理の対象として指定されたオブジェクトに対応するレコードが登録されている場合に、該当するフラグセットが存在すると判定される。
【０１１２】
コマンド処理部１２２は、該当するフラグセットが存在すると判定した場合、ステップＳ４４の処理を実行する。このケースは、オブジェクトに含まれるデータの更新が要求されたケースである。一方、コマンド処理部１２２は、該当するフラグセットが存在しないと判定した場合、ステップＳ４３の処理を実行する。
【０１１３】
［ステップＳ４３］コマンド処理部１２２は、ＰＵＴ処理の対象として指定されたオブジェクトに対応するレコードをフラグ管理情報１１１に追加する。このとき、コマンド処理部１２２は、追加したレコード内のすべてのフラグに初期値として「０」をセットする。
【０１１４】
［ステップＳ４４］コマンド処理部１２２は、フラグ管理情報１１１の該当するレコードに登録されたマイグレーションフラグとリコールフラグを確認する。コマンド処理部１２２は、マイグレーションフラグとリコールフラグの少なくとも一方が「１」の場合、ステップＳ４５の処理を実行する。一方、コマンド処理部１２２は、マイグレーションフラグとリコールフラグがともに「０」の場合、ステップＳ４６の処理を実行する。
【０１１５】
［ステップＳ４５］コマンド処理部１２２は、ステップＳ４４で確認したフラグのうち、「１」がセットされているフラグを「０」に更新する。
ここで、ステップＳ４４でマイグレーションフラグが「１」であった場合、同じオブジェクトについてのマイグレーションが実行中である。この場合、図８に示した制御パターンＰ１が適用されて、マイグレーションの実行が途中で中止されるので、コマンド処理部１２２はマイグレーションフラグを「０」に更新する。
【０１１６】
また、ステップＳ４４でリコールフラグが「１」であった場合、同じオブジェクトについてのリコールが実行中であることを示す。この場合も、図８に示した制御パターンＰ１が適用されて、リコールの実行が途中で中止されるので、コマンド処理部１２２はリコールフラグを「０」に更新する。
【０１１７】
なお、マイグレーションフラグは、マイグレーションの実行を途中で中止する際に、マイグレーション制御部１２３によって「０」に更新されてもよい。同様に、リコールフラグは、リコールの実行を途中で中止する際に、リコール制御部１２４によって「０」に更新されてもよい。
【０１１８】
［ステップＳ４６］コマンド処理部１２２は、フラグ管理情報１１１の該当するレコードに登録されたＰＵＴフラグを「１」に更新する。
［ステップＳ４７］コマンド処理部１２２は、指定されたオブジェクトについてのＰＵＴ処理を実行する。この処理では、前述のように、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。そして、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかに対して、オブジェクトに含まれるデータの書き込みが行われる。
【０１１９】
［ステップＳ４８］コマンド処理部１２２は、フラグ管理情報１１１の該当するレコードに登録されたＰＵＴフラグを「０」に更新する。そして、コマンド処理部１２２は、クライアント装置５０に対してＰＵＴ処理の完了通知を送信する。
【０１２０】
図１２、図１３は、マイグレーションが要求された場合におけるホットプロキシの処理手順の例を示すフローチャートである。
［ステップＳ６１］インタフェース処理部１２１は、クライアント装置５０からＭＩＧＲＡＴＥコマンドを受信すると、受信したＭＩＧＲＡＴＥコマンドをマイグレーション制御部１２３に出力する。
【０１２１】
［ステップＳ６２］マイグレーション制御部１２３は、フラグ管理情報１１１から、マイグレーションの対象として指定されたオブジェクトに対応するレコードを特定する。マイグレーション制御部１２３は、特定されたレコードに登録されたリコールフラグが「１」の場合、ステップＳ６３の処理を実行し、「０」の場合、ステップＳ６４の処理を実行する。
【０１２２】
［ステップＳ６３］ステップＳ６２でリコールフラグが「１」であった場合、同じオブジェクトについてのリコールが実行中である。この場合、図８に示した制御パターンＰ１が適用されて、リコールの実行が途中で中止される。したがって、マイグレーション制御部１２３は、ステップＳ６２で参照したリコールフラグを「０」に更新する。
【０１２３】
なお、リコールフラグは、リコールの実行を途中で中止する際に、リコール制御部１２４によって「０」に更新されてもよい。
［ステップＳ６４］マイグレーション制御部１２３は、ステップＳ６２で特定されたレコードに登録されたＰＵＴフラグとマイグレーションフラグを確認する。ＰＵＴフラグが「１」の場合は、同じオブジェクトについてのＰＵＴ処理が実行中であり、このケースでは図８に示した制御パターンＰ２−２が適用される。また、マイグレーションフラグが「１」の場合、同じオブジェクトについてのマイグレーションが実行中であり、このケースでは図８に示した制御パターンＰ２−１が適用される。
【０１２４】
したがって、マイグレーション制御部１２３は、ＰＵＴフラグとマイグレーションフラグの少なくとも一方が「１」の場合、ステップＳ６１で実行が要求されたマイグレーション処理の実行を中止する。一方、マイグレーション制御部１２３は、ＰＵＴフラグとマイグレーションフラグがともに「０」の場合、ステップＳ６５の処理を実行する。
【０１２５】
［ステップＳ６５］マイグレーション制御部１２３は、ステップＳ６２で特定されたレコードに登録されたマイグレーションフラグを「１」に更新する。
［ステップＳ６６］マイグレーション制御部１２３は、インタフェース処理部１２１を介して、マイグレーションの完了通知をクライアント装置５０に送信して、クライアント装置５０に応答する。
【０１２６】
［ステップＳ６７］マイグレーション制御部１２３は、指定されたオブジェクトについてのホットストレージ２３１からのデータのＧＥＴ処理を要求するためのＧＥＴコマンドを、コマンド処理部１２２に出力する。コマンド処理部１２２は、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかから該当するオブジェクトに含まれるデータを読み出し、マイグレーション制御部１２３に出力する。なお、コマンド処理部１２２の実際の処理では、前述のように、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。そして、その後にオブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかからデータが読み出される。
【０１２７】
この後、図１３のステップＳ７１の処理が実行される。
［ステップＳ７１］マイグレーション制御部１２３は、ステップＳ６２で特定されたレコードに登録されたＰＵＴフラグとリコールフラグを確認する。ＰＵＴフラグが「１」の場合、後から同じオブジェクトについてのＰＵＴ処理の実行が開始されている。また、リコールフラグが「１」の場合、後から同じオブジェクトについてのリコールの実行が開始されている。これらのケースでは、いずれも図８に示した制御パターンＰ１が適用される。
【０１２８】
したがって、マイグレーション制御部１２３は、ＰＵＴフラグとリコールフラグの少なくとも一方が「１」の場合、マイグレーションの実行を中止する。一方、マイグレーション制御部１２３は、ＰＵＴフラグとリコールフラグがともに「０」の場合、ステップＳ７２の処理を実行する。
【０１２９】
［ステップＳ７２］マイグレーション制御部１２３は、指定されたオブジェクトについてのコールドストレージ４３１に対するデータのＰＵＴ処理を要求するためのＰＵＴコマンドを、コールドプロキシ３００に送信する。
【０１３０】
コールドプロキシ３００のインタフェース処理部３２１は、送信されたＰＵＴコマンドを受信してコマンド処理部３２２に出力し、コマンド処理部３２２は、コールドストレージ４３１に対するデータのＰＵＴ処理を実行する。コマンド処理部３２２は、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとを行う。そして、コマンド処理部３２２は、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃのうち、該当するオブジェクトが格納されているオブジェクトサーバに対して、オブジェクトに対するデータの書き込みを要求する。
【０１３１】
データの書き込みが完了し、コマンド処理部３２２からインタフェース処理部３２１を介してホットプロキシ１００へ応答が返送されると、ステップＳ７３の処理が実行される。
【０１３２】
［ステップＳ７３］この処理では、ステップＳ７１と同様の理由で同様の処理が実行される。すなわち、マイグレーション制御部１２３は、ステップＳ６２で特定されたレコードに登録されたＰＵＴフラグとリコールフラグを確認する。マイグレーション制御部１２３は、ＰＵＴフラグとリコールフラグの少なくとも一方が「１」の場合、マイグレーションの実行を中止する。一方、マイグレーション制御部１２３は、ＰＵＴフラグとリコールフラグがともに「０」の場合、ステップＳ７４の処理を実行する。
【０１３３】
［ステップＳ７４］マイグレーション制御部１２３は、ホットストレージ２３１に格納されたオブジェクトについてのｓｔｕｂのＰＵＴ処理を要求するためのＰＵＴコマンドを、コマンド処理部１２２に出力する。コマンド処理部１２２は、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとを行う。そして、コマンド処理部１２２は、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのうち、該当するオブジェクトが格納されているオブジェクトサーバに対して、オブジェクトに対応するｓｔｕｂの書き込みを要求する。これにより、少なくともオブジェクトに含まれるデータが、ホットストレージ２３１から削除される。
【０１３４】
［ステップＳ７５］マイグレーション制御部１２３は、ステップＳ６２で特定されたレコードに登録されたマイグレーションフラグを「０」に更新する。
図１４、図１５は、リコールが要求された場合におけるホットプロキシの処理手順の例を示すフローチャートである。
【０１３５】
［ステップＳ９１］インタフェース処理部１２１は、クライアント装置５０からＲＥＣＡＬＬコマンドを受信すると、受信したＲＥＣＡＬＬコマンドをリコール制御部１２４に出力する。
【０１３６】
［ステップＳ９２］リコール制御部１２４は、フラグ管理情報１１１から、リコールの対象として指定されたオブジェクトに対応するレコードを特定する。リコール制御部１２４は、特定されたレコードに登録されたマイグレーションフラグが「１」の場合、ステップＳ９３の処理を実行し、「０」の場合、ステップＳ９４の処理を実行する。
【０１３７】
［ステップＳ９３］ステップＳ９２でマイグレーションフラグが「１」であった場合、同じオブジェクトについてのマイグレーションが実行中である。この場合、図８に示した制御パターンＰ１が適用されて、マイグレーションの実行が途中で中止される。したがって、リコール制御部１２４は、ステップＳ９２で参照したマイグレーションフラグを「０」に更新する。
【０１３８】
なお、マイグレーションフラグは、マイグレーションの実行を途中で中止する際に、マイグレーション制御部１２３によって「０」に更新されてもよい。
［ステップＳ９４］リコール制御部１２４は、ステップＳ９２で特定されたレコードに登録されたＰＵＴフラグとリコールフラグを確認する。ＰＵＴフラグが「１」の場合は、同じオブジェクトについてのＰＵＴ処理が実行中である。また、リコールフラグが「１」の場合は、同じオブジェクトについてのリコールが実行中である。これらのケースでは、いずれも図８に示した制御パターンＰ２−１が適用される。
【０１３９】
したがって、リコール制御部１２４は、ＰＵＴフラグとリコールフラグの少なくとも一方が「１」の場合、ステップＳ９１で実行が要求されたリコール処理の実行を中止する。一方、リコール制御部１２４は、ＰＵＴフラグとリコールフラグがともに「０」の場合、ステップＳ９５の処理を実行する。
【０１４０】
［ステップＳ９５］リコール制御部１２４は、ステップＳ９２で特定されたレコードに登録されたリコールフラグを「１」に更新する。
［ステップＳ９６］リコール制御部１２４は、インタフェース処理部１２１を介して、リコールの完了通知をクライアント装置５０に送信して、クライアント装置５０に応答する。
【０１４１】
［ステップＳ９７］リコール制御部１２４は、指定されたオブジェクトについてのコールドストレージ４３１からのＧＥＴ処理を要求するためのＧＥＴコマンドを、コールドプロキシ３００に送信する。
【０１４２】
コールドプロキシ３００のインタフェース処理部３２１は、送信されたＧＥＴコマンドを受信してコマンド処理部３２２に出力し、コマンド処理部３２２は、コールドストレージ４３１からのデータのＧＥＴ処理を実行する。コマンド処理部３２２は、実際には、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとを行う。そして、コマンド処理部３２２は、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃのうち、該当するオブジェクトが格納されているオブジェクトサーバに対して、オブジェクトに含まれるデータの読み出しを要求する。
【０１４３】
コマンド処理部３２２は、読み出されたデータを、インタフェース処理部３２１を介してホットプロキシ１００へ送信する。送信されたデータがホットプロキシ１００のリコール制御部１２４に受信されると、図１５のステップＳ１０１の処理が実行される。
【０１４４】
［ステップＳ１０１］リコール制御部１２４は、ステップＳ９２で特定されたレコードに登録されたＰＵＴフラグとマイグレーションフラグを確認する。ＰＵＴフラグが「１」の場合、後から同じオブジェクトについてのＰＵＴ処理の実行が開始されている。また、マイグレーションフラグが「１」の場合、後から同じオブジェクトについてのマイグレーションの実行が開始されている。これらのケースでは、いずれも図８に示した制御パターンＰ１が適用される。
【０１４５】
したがって、リコール制御部１２４は、ＰＵＴフラグとマイグレーションフラグの少なくとも一方が「１」の場合、リコールの実行を中止する。一方、リコール制御部１２４は、ＰＵＴフラグとマイグレーションフラグがともに「０」の場合、ステップＳ１０２の処理を実行する。
【０１４６】
［ステップＳ１０２］リコール制御部１２４は、指定されたオブジェクトについてのホットストレージ２３１に対するデータのＰＵＴ処理を要求するためのＰＵＴコマンドを、コマンド処理部１２２に出力する。コマンド処理部１２２は、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのうち、該当するオブジェクトが格納されたオブジェクトサーバに対して、オブジェクトに対するデータの書き込みを要求する。なお、コマンド処理部１２２の実際の処理では、前述のように、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃのいずれかに対するアクセスと、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃのいずれかに対するアクセスとが行われる。そして、その後にオブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃのいずれかに対してデータの書き込みが要求される。
【０１４７】
データの書き込みが完了すると、ステップＳ１０３の処理が実行される。
［ステップＳ１０３］この処理では、ステップＳ１０１と同様の理由で同様の処理が実行される。すなわち、リコール制御部１２４は、ステップＳ９２で特定されたレコードに登録されたＰＵＴフラグとマイグレーションフラグを確認する。リコール制御部１２４は、ＰＵＴフラグとマイグレーションフラグの少なくとも一方が「１」の場合、リコールの実行を中止する。一方、リコール制御部１２４は、ＰＵＴフラグとマイグレーションフラグがともに「０」の場合、ステップＳ１０４の処理を実行する。
【０１４８】
［ステップＳ１０４］リコール制御部１２４は、コールドストレージ４３１に格納されたオブジェクトの削除を要求するためのＤＥＬＥＴＥコマンドを、コールドプロキシ３００に送信する。
【０１４９】
コールドプロキシ３００のインタフェース処理部３２１は、送信されたＤＥＬＥＴＥコマンドを受信してコマンド処理部３２２に出力し、コマンド処理部３２２は、コールドストレージ４３１に格納されたオブジェクトの削除処理を実行する。コマンド処理部３２２は、実際には、アカウントサーバ４１０ａ，４１０ｂ，４１０ｃのいずれかに対するアクセスと、コンテナサーバ４２０ａ，４２０ｂ，４２０ｃのいずれかに対するアクセスとを行う。そして、コマンド処理部３２２は、オブジェクトサーバ４３０ａ，４３０ｂ，４３０ｃのうち、該当するオブジェクトが格納されているオブジェクトサーバに対して、オブジェクトの削除を要求する。
【０１５０】
オブジェクトの削除が完了し、コマンド処理部３２２からインタフェース処理部３２１を介してホットプロキシ１００へ応答が返送されると、ステップＳ１０５の処理が実行される。
【０１５１】
［ステップＳ１０５］リコール制御部１２４は、ステップＳ９２で特定されたレコードに登録されたリコールフラグを「０」に更新する。
以上の図１１〜図１５で説明した処理により、図８に示したように、処理の組み合わせに応じた制御パターンを適用した処理が実行される。これにより、実行が要求された処理と、同一のデータについて実行中の処理のうち、実行しても意味のない方の処理がキャンセルされる。したがって、同じデータについてのマイグレーションとリコールとが並列に実行されないようになり、その結果、データが誤って削除される事態の発生を防止できる。また、意味のある処理のみが実行されることで、ホットプロキシ１００などのストレージシステム内の装置の処理負荷や装置間の通信負荷を軽減できる。
【０１５２】
〔第３の実施の形態〕
上記の第２の実施の形態では、ＰＵＴ処理、マイグレーションおよびリコールが実行中であるか否かを示すフラグセットが、ホットプロキシ１００に保持されていた。しかし、フラグセットは、対応するオブジェクトと同じオブジェクトサーバのストレージ（ホットストレージ）に格納されていてもよい。以下、第２の実施の形態をこのように変形した第３の実施の形態について説明する。
【０１５３】
図１６は、第３の実施の形態に係るストレージシステムの各装置が備える処理機能の構成例を示すブロック図である。なお、図１６では、図９と同じ処理を実行する構成要素については同じ符号を付して示している。
【０１５４】
第３の実施の形態に係るストレージシステムでは、第２の実施の形態におけるホットプロキシ１００の代わりに、図１６に示すホットプロキシ１００−１が設けられる。また、第２の実施の形態におけるオブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃの代わりに、図１６に示すオブジェクトサーバ２３０ａ−１，２３０ｂ−１，２３０ｃ−１が設けられる。
【０１５５】
オブジェクトサーバ２３０ａ−１は、第２の実施の形態のオブジェクトサーバ２３０ａと同様に、ストレージ内に管理を担当するオブジェクトを保持する。オブジェクトには、データとメタデータとが含まれる。オブジェクトサーバ２３０ａとの違いは、メタデータにオブジェクトに対応するフラグセットが追加される点である。例えば、図１６に示すように、オブジェクトサーバ２３０ａ−１のストレージには、あるオブジェクトについてのデータ２３２ａとメタデータ２３３ａが格納され、そのオブジェクトに対応するフラグセット２３４ａがメタデータ２３３ａに登録されている。
【０１５６】
オブジェクトサーバ２３０ｂ−１，２３０ｃ−１についても同様である。すなわち、オブジェクトサーバ２３０ｂ−１のストレージには、オブジェクトサーバ２３０ｂ−１が管理を担当するオブジェクトが保持され、各オブジェクトのメタデータにフラグセットが登録される。例えば、図１６に示すように、オブジェクトサーバ２３０ｂ−１のストレージには、あるオブジェクトについてのデータ２３２ｂとメタデータ２３３ｂが格納され、そのオブジェクトに対応するフラグセット２３４ｂがメタデータ２３３ｂに登録されている。
【０１５７】
また、オブジェクトサーバ２３０ｃ−１のストレージには、オブジェクトサーバ２３０ｃ−１が管理を担当するオブジェクトが保持され、各オブジェクトのメタデータにフラグセットが登録される。例えば、図１６に示すように、オブジェクトサーバ２３０ｃ−１のストレージには、あるオブジェクトについてのデータ２３２ｃとメタデータ２３３ｃが格納され、そのオブジェクトに対応するフラグセット２３４ｃがメタデータ２３３ｃに登録されている。
【０１５８】
ホットプロキシ１００−１は、インタフェース処理部１２１、コマンド処理部１２２−１、マイグレーション制御部１２３−１およびリコール制御部１２４−１を有する。なお、インタフェース処理部１２１、コマンド処理部１２２−１、マイグレーション制御部１２３−１およびリコール制御部１２４−１の処理は、例えば、ホットプロキシ１００−１が備えるプロセッサが所定のアプリケーションプログラムを実行することで実現される。
【０１５９】
コマンド処理部１２２−１の処理は、フラグセットを参照する際にオブジェクトサーバ２３０ａ−１，２３０ｂ−１，２３０ｃ−１のいずれかにアクセスする点を除いて、第２の実施の形態のコマンド処理部１２２と同じである。同様に、マイグレーション制御部１２３−１の処理は、フラグセットを参照する際にオブジェクトサーバ２３０ａ−１，２３０ｂ−１，２３０ｃ−１のいずれかにアクセスする点を除いて、第２の実施の形態のマイグレーション制御部１２３と同じである。また、リコール制御部１２４−１の処理は、フラグセットを参照する際にオブジェクトサーバ２３０ａ−１，２３０ｂ−１，２３０ｃ−１のいずれかにアクセスする点を除いて、第２の実施の形態のリコール制御部１２４と同じである。
【０１６０】
なお、コマンド処理部１２２−１、マイグレーション制御部１２３−１およびリコール制御部１２４−１は、ＨＥＡＤコマンドを用いることにより、オブジェクトのメタデータを読み出してフラグセットを参照することができる。また、コマンド処理部１２２−１、マイグレーション制御部１２３−１およびリコール制御部１２４−１は、ＰＵＴコマンドまたはＰＯＳＴコマンドを用いることにより、オブジェクトのメタデータを更新し、フラグセット内の各フラグの値を変更することができる。
【０１６１】
以上の第３の実施の形態によれば、第２の実施の形態と同様の効果を得ることができる。また、第３の実施の形態によれば、オブジェクトごとのフラグセットをオブジェクトサーバ２３０ａ−１，２３０ｂ−１，２３０ｃ−１に配置することで、第２の実施の形態と比較してホットプロキシ１００−１に保持されるデータ量を削減できる。その結果、ホットプロキシ１００−１が搭載する記憶装置の記憶容量を小さくすることができ、ホットプロキシ１００−１の装置コストを削減できる。
【０１６２】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１、クライアント装置５０、ホットプロキシ１００、コールドプロキシ３００、アカウントサーバ２１０ａ，２１０ｂ，２１０ｃ，４１０ａ，４１０ｂ，４１０ｃ、コンテナサーバ２２０ａ，２２０ｂ，２２０ｃ，４２０ａ，４２０ｂ，４２０ｃ、オブジェクトサーバ２３０ａ，２３０ｂ，２３０ｃ，４３０ａ，４３０ｂ，４３０ｃ）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１６３】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６４】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１６５】
１  情報処理装置
１ａ  受信部
１ｂ  制御部
２ａ，２ｂ  記憶装置
３  状態情報
Ｄ１  データ
Ｓ１〜Ｓ７  ステップ
【図１】
2018116604.tif 000003
【図２】
2018116604.tif 000004
【図３】
2018116604.tif 000005
【図４】
2018116604.tif 000006
【図５】
2018116604.tif 000007
【図６】
2018116604.tif 000008
【図７】
2018116604.tif 000009
【図８】
2018116604.tif 000010
【図９】
2018116604.tif 000011
【図１０】
2018116604.tif 000012
【図１１】
2018116604.tif 000013
【図１２】
2018116604.tif 000014
【図１３】
2018116604.tif 000015
【図１４】
2018116604.tif 000016
【図１５】
2018116604.tif 000017
【図１６】
2018116604.tif 000018