(57)【特許請求の範囲】
【請求項１】
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置と、
前記記憶装置に対して前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を備え、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザのユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、同一の前記ブロック関連データを参照する一群の前記ブロック識別データを同一ブロックチェインとして関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記同一ブロックチェインの情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記データ格納制御手段は、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記ブロック識別データが参照する前記ブロック関連データに含まれる前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項３】
請求項１又は２に記載のストレージシステムであって、
前記データ格納制御手段は、前記同一ブロックチェインとして関連付けられた一群の前記ブロック識別データ内で、さらに同一の前記ユーザ識別情報が関連付けられた一群の前記ブロック識別データを同一ユーザチェインとして関連付けて記憶し、
前記記憶容量管理手段は、前記同一ブロックチェインの情報と前記同一ユーザチェインの情報とに基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記データ格納制御手段は、前記同一ブロックチェインとして関連付けられた一群の前記ブロック識別データ内で、それぞれ異なる前記同一ユーザチェインとして関連付けられた各群の前記ブロック識別データ間を、当該各群の前記ブロック識別データのうちそれぞれ１つの前記ブロック識別データ間を相互に関連付け、
前記記憶容量管理手段は、前記同一ブロックチェインの情報と前記同一ユーザチェインの情報とに基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項５】
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置と、
前記記憶装置に対して前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を備え、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、当該ブロック関連データに関連付けられ当該ブロックデータの分割元となる前記ファイルを使用するユーザのユーザ識別情報と、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記データ格納制御手段は、ユーザ毎の情報領域が形成された前記ユーザ識別情報に対して、前記ブロック関連データが参照する前記ブロックデータの分割元となる前記ファイルを使用するユーザに対応する前記情報領域に所定の情報をセットして、前記ユーザ識別情報を前記ブロック関連データに関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項７】
請求項６に記載のストレージシステムであって、
前記データ格納制御手段は、ユーザ毎の前記情報領域としてユーザ毎に対応するビットを有する前記ユーザ識別情報に対して、前記ブロック関連データが参照する前記ブロックデータの分割元となる前記ファイルを使用するユーザに対応する前記ビットに所定の情報をセットして、前記ユーザ識別情報を前記ブロック関連データに関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報が有する各ビットに記憶された情報と、前記ブロック関連データに関連付けられた前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【請求項８】
情報処理装置に、
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を実現させると共に、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザのユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、同一の前記ブロック関連データを参照する一群の前記ブロック識別データを同一ブロックチェインとして関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記同一ブロックチェインの情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ことを実現させるためのプログラム。
【請求項９】
情報処理装置に、
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を実現させると共に、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、当該ブロック関連データに関連付けられ当該ブロックデータの分割元となる前記ファイルを使用するユーザのユーザ識別情報と、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ことを実現させるためのプログラム。
【請求項１０】
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納工程と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理工程と、
を有し、
前記データ格納工程は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザのユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、同一の前記ブロック関連データを参照する一群の前記ブロック識別データを同一ブロックチェインとして関連付けて記憶し、
前記記憶容量管理工程は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記同一ブロックチェインの情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理方法。
【請求項１１】
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納工程と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理工程と、
を有し、
前記データ格納工程は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、当該ブロック関連データに関連付けられ当該ブロックデータの分割元となる前記ファイルを使用するユーザのユーザ識別情報と、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理工程は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、重複記憶排除機能を有するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【０００４】
具体的に、コンテンツアドレスストレージシステムでは、所定のデータを分割したブロックデータを複数のフラグメントデータにさらに分割すると共に、冗長データ（パリティデータ）となるフラグメントデータを付加して、これら複数のフラグメントデータを複数の記憶装置に分散して格納している。そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントデータを読み出し、複数のフラグメントデータから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【０００６】
そして、近年ではさらに、企業によるＩＴリソースへの投資最適化という要求に応えるため、ＡＳＰ事業者などが、上述したような１つの重複排除ストレージシステムの利用サービスを、複数の異なる企業に提供したいというニーズがある。この場合、１つの重複排除ストレージシステムを複数の異なる企業で利用する形になるが、ユーザ企業ごとに使用容量を制限したり、使用量に応じた課金をしたりすることが求められる。重複排除ストレージシステムでは、データは重複を排除して格納されるため、ここでいう使用量は、実際に消費しているリソース量である「物理容量」に基づくべきであり、各ユーザ企業が使用している物理容量を把握する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一方で、上述したような重複排除ストレージシステムでは、重複率を高めるべく、記憶するファイルを何らかの基準で所定容量のブロックデータに分割して、ブロック単位で重複排除する方式をとっている。このため、ユーザ毎における各ブロックデータの参照状態を把握することは困難である。つまり、ブロックデータのサイズは小さく、多数存在するため、ブロックごとの参照状態を性能や容量の面で効率よく管理することが困難である。従って、重複排除ストレージシステムを利用するユーザ毎の使用容量を把握することが難しい、という問題があった。
【０００９】
このため、本発明の目的は、上述した課題である、重複排除機能を有するストレージシステムを利用するユーザ毎の使用記憶容量を把握することが困難である、ということを解決すること、にある。
【課題を解決するための手段】
【００１０】
本発明の一形態であるストレージシステムは、
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置と、
前記記憶装置に対して前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を備え、
前記データ格納制御手段は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
という構成をとる。
【００１１】
また、本発明の他の形態である情報処理装置は、
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を備え、
前記データ格納制御手段は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
という構成をとる。
【００１２】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を実現させると共に、
前記データ格納制御手段は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ことを実現させるためのプログラムである。
【００１３】
また、本発明の他の形態である情報処理方法は、
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納工程と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理工程と、
を有し、
前記データ格納工程は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理工程は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
という構成をとる。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、重複排除機能を有するストレージシステムを利用するユーザ毎の使用記憶容量を容易に把握することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態１におけるシステム全体の構成を示すブロック図である。
【図２】図１に開示したストレージシステムの構成の概略を示すブロック図である。
【図３】図２に開示したストレージシステムの構成を示すブロック図である。
【図４】図２に開示したストレージシステムの動作を説明するための説明図である。
【図５】図２に開示したストレージシステムの動作を説明するための説明図である。
【図６】図２に開示したストレージシステムに記憶されているデータの一例を示す図である。
【図７】図２に開示したストレージシステムに記憶されているデータの一例を示す図である。
【図８】図２に開示したストレージシステムに記憶されているデータの一例を示す図である。
【図９】図２に開示したストレージシステムの動作を示すフローチャートである。
【図１０】図２に開示したストレージシステムの動作を示すフローチャートである。
【図１１】本発明の実施形態２におけるストレージシステムの構成を示すブロック図である。
【図１２】図１１に開示したストレージシステムに記憶されているデータの一例を示す図である。
【図１３】図１１に開示したストレージシステムの動作を示すフローチャートである。
【図１４】図１１に開示したストレージシステムの動作を示すフローチャートである。
【図１５】図１１に開示したストレージシステムの動作を示すフローチャートである。
【図１６】図１１に開示したストレージシステムの動作を示すフローチャートである。
【図１７】本発明の付記１におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１６】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１０を参照して説明する。図１は、システム全体の構成を示すブロック図である。図２は、ストレージシステムの概略を示すブロック図であり、図３は、ストレージシステムの詳細な構成を示すブロック図である。図４乃至図５は、ストレージシステムの動作を説明するための説明図であり、図６乃至図８は、ストレージシステムに記憶されているデータの一例を示す図である。図９乃至図１０は、ストレージシステムの動作を示すフローチャートである。
【００１７】
ここで、本実施形態では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータ（情報処理装置）で構成されていてもよい。
【００１８】
図１に示すように、本発明におけるストレージシステム１０は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム１１に接続している。そして、バックアップシステム１１は、ネットワークＮを介して接続されたバックアップ対象装置１２に格納されているバックアップ対象データを取得し、ストレージシステム１０に対して記憶するよう要求する。これにより、ストレージシステム１０は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。なお、本実施形態におけるストレージシステム１０は、バックアップ対象データを記憶する場合を例示して説明するが、それは一例であって、いかなるデータを記憶してもよい。
【００１９】
そして、図２に示すように、本実施形態におけるストレージシステム１０は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１０は、ストレージシステム１０自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード２０と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３０と、を備えている。なお、アクセラレータノード２０の数とストレージノード３０の数は、図２に示したものに限定されず、さらに多くの各ノード２０，３０が接続されて構成されていてもよい。
【００２０】
さらに、本実施形態におけるストレージシステム１０は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００２１】
図３に、ストレージシステム１０の詳細な構成を示す。ここでは、上述したアクセラレータノード２０とストレージノード３０とを区別せずに、ストレージシステム１０が１つのシステムとして構成されていることとして説明する。
【００２２】
まず、ストレージシステム１０は、図３に示すように、まず、ネットワークインターフェースなどで構成されるファイル操作入力部１と、アクセラレータノード２０やストレージノード３０に装備されたＣＰＵ（Central Processing Unit）などの演算装置にプログラムが組み込まれることによって構築されたデータ処理装置２と、を備えている。そして、データ処理装置２は、ファイル操作実行部２１と、使用物理容量管理部２２と、を備えている。
【００２３】
また、ストレージシステム１０は、主にストレージノード３０が装備する記憶装置３内に構成された、ＦＳ構造記憶部３１と、ブロックＩＤリスト記憶部３２と、ブロック関連データ記憶部３３と、ブロックデータ記憶部３４と、使用物理容量記憶部３５と、を備えている。以下、ストレージシステム１０の各構成と動作について詳述する。
【００２４】
上記ファイル操作入力部１は、バックアップ対象装置１２などからバックアップシステム１１を介して送信されたバックアップ対象データを受信して、ファイル操作実行部２１に渡す。
【００２５】
上記ファイル操作実行部２１（データ格納制御手段）は、上述したようにファイル操作入力部１を介してバックアップ対象装置１２から送信されたバックアップ対象データの入力を受け、当該データを記憶装置３内に格納するよう制御する。具体的に、ファイル操作実行部２１は、バックアップ対象データを、複数のストレージノード３０やディスクによって構成される記憶装置に対して分散すると共に、重複を排除して記憶する。また、ファイル操作実行部２１は、分散記憶したデータを読み出す処理を行う。ここで、上記ファイル操作実行部２１による分散記憶処理の一例を、図４乃至図７を参照して説明する。
【００２６】
はじめに、ファイル操作実行部２１による基本的な分散記憶処理の動作について、図４及び図５を参照して説明する。まず、ファイル操作実行部２１は、バックアップ対象データであるファイルを構成するデータＡの入力を受けると（図４、図５の矢印Ｙ１）、図４及び図５の矢印Ｙ２に示すように、当該データＡを所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。そして、このブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（図５の矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００２７】
続いて、ファイル操作実行部２１は、同じ内容のブロックデータＤの重複記録を排除するために、ブロックデータＤのハッシュ値Ｈを用いて、重複排除処理を行う。具体的には、まず、既に格納されているブロックデータＤは、後述するように、当該ブロックデータＤのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが関連付けられて登録されているため、算出したブロックデータＤのハッシュ値Ｈが既に存在している場合には、既に同一内容のブロックデータＤが格納されていると判断できる。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致した登録されているハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたブロックデータＤのコンテンツアドレスＣＡとして参照する。これにより、このコンテンツアドレスＣＡにて参照される既に格納されているデータが、書き込み要求されたブロックデータＤとして使用されることとなり、当該書き込み要求にかかるブロックデータＤを記憶する必要がなくなる。
【００２８】
また、ファイル操作実行部２１は、書き込み要求にかかるブロックデータＤがまだ記憶されていないと判断された場合には、かかるブロックデータＤを格納する処理を行う。具体的には、まず、ブロックデータＤを複数の所定の容量のフラグメントデータ（分割データ）に分割する。例えば、図４の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ４１）に分割する。さらに、ストレージシステム１０は、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータＤを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ４１に追加する。例えば、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ４２）を追加する。これにより、９つの分割データ４１と、３つの冗長データ４２とにより構成される１２個のフラグメントデータからなるデータセット４０を生成する（図５の矢印Ｙ４）。
【００２９】
そして、ファイル操作実行部２１は、上述したように生成された各フラグメントデータを、ブロックデータ記憶部３４内に記憶する。例えば、図４に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、複数のストレージノード３０にて構成されたブロックデータ記憶部３４内に形成されたデータ格納領域である各コンポーネントＣに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納して、分散記憶する（図５の矢印Ｙ５参照）。
【００３０】
ここで、上述したようにフラグメントデータが格納されると、ストレージシステム１０では、当該フラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表すコンテンツアドレスＣＡを生成する。このとき、コンテンツアドレスＣＡは、例えば、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、生成される。そして、このコンテンツアドレスＣＡは、ストレージシステム１０内のファイルシステムを管理するアクセラレータノード２０にて、バックアップ対象データであるファイルを構成する各ブロックデータの識別情報と、コンテンツアドレスＣＡとが関連付けられて、ファイル操作実行部２１にてファイルシステムとして管理される。なお、ブロックデータの識別情報自体が、当該ブロックデータを参照するコンテンツアドレスＣＡとなっていてもよい。
【００３１】
また、ファイル操作実行部２１は、ファイルの読み出し要求を受けると、要求されたファイルに対応するコンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出すことができる。以上のように、ストレージシステム１０は、データを読み書きする機能を有する。
【００３２】
ここで、本実施形態におけるファイル操作実行部２１による、記憶装置３内にデータを記憶してファイルシステムを管理する処理について、図６を参照してさらに詳述する。
【００３３】
ファイル操作実行部２１は、ファイルが新規に作成された場合には、まず、ＦＳ構造記憶部３１に、ファイルシステム内におけるファイル３１ａの存在を表すディレクトリ構造を記憶する。これに伴い、ファイル３１ａを複数に分割した場合における各ブロックデータを識別する各ブロックＩＤ３２ａ（ブロック識別データ）を格納する領域（ブロックＩＤエントリ）が形成されたブロックＩＤリストを作成してブロックＩＤリスト記憶部３２に記憶し、当該ブロックＩＤリストをＦＳ構造記憶部３１に記憶されたファイル３１ａに関連付ける。
【００３４】
続いて、ファイル操作実行部２１は、ファイル３１ａのデータを複数のブロックデータに分割し、各ブロックデータを識別するブロックＩＤを算出する。このとき、ブロックＩＤは、例えば、ブロックデータのハッシュ値を用いる。そして、ファイル操作実行部２１は、ブロックデータが既にブロックデータ記憶部３４内に記憶されていないか否かを、例えば、上記算出したハッシュ値とブロック関連データ記憶部３３内の情報とを用いて調べる。なお、ブロック関連データ記憶部３３内には、後述するように、ブロックデータのデータ内容を判別するハッシュ値が格納されている。
【００３５】
そして、ファイル操作実行部２１は、ブロックデータがまだストレージシステム１０内に記憶されていない場合には、かかるブロックデータ３４ａをブロックデータ記憶部３４に格納すると共に、このブロックデータ３４ａを参照して関連付けられるブロック関連データ３３ａを、ブロック関連データ記憶部３３に格納する。このブロック関連データ３３ａには、関連付けられたブロックデータ３４ａの情報、例えば、ブロックデータ３４ａのデータサイズを表すサイズ情報と、ブロックデータ３４ａのデータ内容を表すハッシュ値と、が格納される。そして、ファイル操作実行部２１は、上述したように算出したブロックＩＤ３２ａを、新たに格納するファイル３１ａに対応するブロックＩＤリスト記憶部３２内のブロックＩＤリストに格納する。このとき、ブロックＩＤ３２ａは、対応する格納したブロックデータ３４ａに関連付けられたブロック関連データ３３ａを参照するよう、当該ブロック関連データ３３ａに関連付けて記憶する。なお、ブロックＩＤ３２ａとブロック関連データ３３ａとの関連付けは、ブロックＩＤ３２ａにブロック関連データ３３ａを参照するコンテンツアドレスを関連付けてもよく、ブロックＩＤ３２ａ自体にブロック関連データ３３ａを参照するコンテンツアドレスを用いてもよい。
【００３６】
これにより、ファイル３１ａを読み出す際には、ＦＳ構造記憶部３１を参照してファイル３１ａのブロックＩＤリストを読み出すことで、当該リストに含まれるブロックＩＤ３２ａが参照するブロック関連データ３３ａを参照して、ファイル３１ａを構成するブロックデータ３４ａを読み出すことができる。このように、上記ブロックＩＤ３２ａ（ブロック識別データ）とブロック関連データ３３ａとは、格納されたブロックデータ３４ａを参照する参照データとして機能している。なお、上記ブロックＩＤ３２ａとブロック関連データ３３ａとは、１つのデータ（参照データ）にて構成されていてもよい。
【００３７】
また、ファイル操作実行部２１は、上述したように、新たに格納するファイル３４ａのディレクトリ構造とブロックＩＤリストを記憶した後に、新たに格納するファイル３４ａを構成するブロックデータが既にストレージシステム１０内に記憶されていると判断された場合には、既に記憶されたブロックデータ３４ａを参照させる処理を行う。つまり、新たに格納するブロックデータのブロックＩＤ３２ａを算出してブロックＩＤリストに格納すると共に、当該ブロックＩＤ３２ａが既に記憶されているブロックデータ３４ａに関連付けられたブロック関連データ３３ａを参照するよう、当該ブロック関連データ３３ａに関連付けて記憶する。これにより、ブロックデータが、例えば図６に示すように異なるファイルから参照されることとなり、同一のブロックデータ３４ａを重複して記憶することを排除することができる。
【００３８】
なお、ファイル操作実行部２１は、ファイルを削除する際には、まず、ＦＳ構造記憶部３１を参照してファイル３１ａに対応するブロックＩＤリストの位置を取得し、ブロックＩＤリスト記憶部３２を参照して、削除すべきブロックデータのブロックＩＤ３２ａを取得する。続いて、ファイル操作実行部２１は、ブロックＩＤリストから、ブロックＩＤ３２ａを削除する。そして、ファイル操作実行部２１は、削除すべきブロックデータへの参照がなくなった場合は、ブロック関連データ記憶部３３内のブロック関連データ３３ａと、ブロックデータ記憶部３４内のブロックデータ３４ａを削除する。また、ファイル操作実行部２１は、ファイル自体が削除された場合は、ＦＳ構造記憶部３１も更新して、ファイル３１ａの存在を削除し、ブロックＩＤリスト記憶部３２内の対応するブロックＩＤリストも削除する。
【００３９】
また、ファイル操作実行部２１は、ファイルを書き換える場合には、上述したように、古いデータの削除と新しいデータの書き込みとの組み合わせとして処理する。
【００４０】
さらに、上記ファイル操作実行部２１は、上記使用物理容量管理部２２と協働して、ファイルの書き込みを行う際に、記憶装置３に格納したファイル３１ａを使用するユーザ毎の使用記憶容量を算出するための処理を、以下のように行う。まず、かかる処理の概略を、図７を参照して説明する。なお、以下に説明する処理は、ファイル格納時に実行されてもよく、あるいは、任意のタイミングで実行されてもよい。
【００４１】
まず、ファイル操作実行部２１は、ファイル３１ａを格納する際に、当該ファイル３１ａに対応するブロックＩＤリスト記憶部３２内のブロックＩＤリストに、格納するファイル３１ａを使用するユーザを識別するユーザＩＤ（ユーザ識別情報）を関連付けて記憶する。つまり、ファイル３１ａを構成する各ブロックデータ３４ａを識別するブロックＩＤ３２ａには、当該各ブロックデータ３４ａの分割元となるファイル３１ａを使用するユーザのユーザＩＤが関連付けられる。なお、図７に示す例では、ファイル３１ａに対応する複数のブロックＩＤ群からなるブロックＩＤリストに対して、「user1」といったユーザＩＤが関連付けられる。
【００４２】
また、ファイル操作実行部２１は、同一のブロックデータを同一のユーザが使用する複数のファイルが参照している場合に、当該ファイルを構成する各ブロックデータを識別する各ブロックＩＤを、「同ユーザチェイン」として関連付ける。具体的に、ファイル操作実行部２１は、ブロックＩＤリスト記憶部３２内の各ブロックＩＤエントリに、同じブロックデータつまり当該ブロックデータに関連付けられたブロック関連データ３３ａを参照する同じユーザの別のブロックＩＤエントリへのポインタを記憶させる。これにより、図７のfile1A, file1B, file1C間の点線に示すように、同じブロックデータを参照する同じユーザ「user1」のブロックＩＤ群が、ユーザ「user1」における同ユーザチェイン（同一ユーザチェイン）として関連付けられる。このとき、図７のfile2A, file2B間の点線に示すように、同じブロックデータを参照する同じユーザ「user2」のブロックＩＤ群も、ユーザ「user2」における同ユーザチェイン（同一ユーザチェイン）として関連付けられる。つまり、図７の矢印Ｙ１１方向に示すように、ブロックＩＤ群を使用ユーザ毎に関連付ける。
【００４３】
また、ファイル操作実行部２１は、同一のブロックデータを異なるユーザが使用する複数のファイルが参照している場合に、当該ファイルを構成する各ブロックデータを識別する各ブロックＩＤを、「別ユーザチェイン」として関連付ける。具体的に、ファイル操作実行部２１は、上述したように、ユーザ毎にブロックＩＤを関連付けたそれぞれブロックＩＤ群からなる各同ユーザチェイン間で、それぞれの同ユーザチェイン内でそれぞれ１つのブロックＩＤ同士を相互に関連付けて、別ユーザチェインを形成する。例えば、図７の例では、file1A, file1B, file1Cのユーザ「user1」における同ユーザチェインの先頭のブロックＩＤエントリに、同じブロックデータに関連付けられたブロック関連データ３３ａを参照するfile2A, file2Bの別のユーザ「user2」における同ユーザチェインの先頭のブロックＩＤエントリへのポインタを記憶させる。つまり、矢印Ｙ１２方向に示すように、別ユーザ間におけるブロックＩＤ群を関連付ける。
【００４４】
さらに、ファイル操作実行部２１は、ブロック関連データ記憶部３３内のブロック関連データ３３ａに、当該ブロック関連データ３３ａが参照するブロックデータを参照しているいずれか１つの同ユーザチェインの先頭のブロックＩＤエントリへのポインタを関連付けて記憶する。例えば、図７の例では、複数のファイルから参照されているブロックデータのブロック関連データ３３ａに、ユーザ「user1」が使用するfile1AのブロックＩＤのみへのポインタを記憶している。
【００４５】
以上の処理により、file1A, file1B, file1C, file2A, file2Bにて参照される同一のブロックデータを参照する一群のブロックＩＤが、上述した同ユーザチェインと別ユーザチェインとを介して、相互に関連付けられる（同一ブロックチェイン）。
【００４６】
ここで、上述した同ユーザチェイン及び別ユーザチェインにおいて、ブロックＩＤ間を関連付けるブロックＩＤエントリへのポインタは、ブロックＩＤリストの記憶位置と、リスト内のエントリの位置との組み合わせで表現している。なお、上述した図７の例では、同ユーザチェイン及び別ユーザチェインにおけるブロックＩＤ間を、双方向にポインタで参照させて関連付けているが、かかる関連付けの方法は一例であって、ブロックＩＤ間を関連付ける方法は上記方法に限定されない。
【００４７】
そして、上述した同ユーザチェイン及び別ユーザチェインを用いて、上記使用物理容量管理部２２（記憶容量管理手段）にて、各ユーザが記憶装置３を物理的に使用している記憶容量を、ユーザ毎に算出する。具体的に、使用物理容量管理部２２は、まず、各ユーザからブロックデータへの参照の有無をチェックする。そして、使用物理容量管理部２２は、同一ユーザが参照するブロック関連データ３３ａに含まれるブロックデータのサイズ情報の値を合計して、ユーザ毎の記憶容量を算出し、図８に示すように、使用物理容量記憶部３５に記憶する。
【００４８】
このとき、使用物理容量記憶部３５には、ユーザ毎に予め設定された使用記憶容量の制限値が記憶されている。このため、使用物理容量管理部２２は、ユーザ毎に算出した使用記憶容量と記憶されている制限値とを比較して、使用記憶容量が制限値を超えている場合には、かかるユーザからの書き込みを制限し、書き込みエラーとなるよう制御する。
【００４９】
ここで、上記では、使用物理容量管理部２２は、ブロックデータのサイズのみを合計してユーザ毎の使用記憶容量を算出しているが、さらにブロックデータを参照するブロック関連データやブロックＩＤエントリの記憶容量も加算して、ユーザ毎の使用記憶容量を算出してもよい。また、上記では、使用物理容量管理部２２は、使用記憶容量と制限値とを比較しているが、単に使用記憶容量を算出するだけの処理を行ってもよい。また、上記使用容量管理部２２による使用物理容量の算出は、ファイルの書き込み時に実行されてもよく、予め設定されたタイミングで実行されてもよい。
【００５０】
次に、上述したストレージシステム１０の動作、特に、ファイルを書き込むときの動作を、図９乃至図１０を参照して説明する。なお、以下では、ファイルをブロックデータに分割したり、フラグメントデータに分割して分散記憶するなど、一部の動作についての詳細な説明は省略する。
【００５１】
まず、書き込み対象となるファイルを分割したブロックデータと重複するブロックデータが、既に記憶装置３に存在するかを判定する（ステップＡ１０）。書き込み対象のブロックデータが記憶装置３内に存在しない場合には（ステップＡ１０でＮｏ）、書き込み対象のファイルを使用するユーザを特定し、当該ユーザの現在の使用物理容量とその制限値を使用物理容量記憶部３５から取得する。そして、このユーザの現在の使用物理容量に、書き込み対象のブロックデータのサイズ情報を加算して、「現在の使用容量＋ブロックサイズ」が、当該ユーザの使用物理容量の制限値を超えるかをチェックし（ステップＡ１１）、超える場合は（ステップＡ１１でＹｅｓ）、書き込みエラーとする（ステップＡ１６）。超えない場合は（ステップＡ１１でＮｏ）、書き込み対象のブロックデータをブロックデータ記憶部３４に格納し（ステップＡ１２）、そのユーザの現在の使用物理容量に格納したブロックデータのサイズ情報を加え（ステップＡ１３）、使用物理容量記憶部３５に記憶する。また、今回書き込んだブロックデータのブロックＩＤエントリへのポインタを、ブロック関連データに記録し（ステップＡ１４）、書き込み成功とする（ステップＡ１５）。
【００５２】
また、ステップＡ１０にて、書き込み対象となるブロックデータと重複するブロックデータが既に記憶装置３内に存在する場合には（ステップＡ１０でＹｅｓ）、当該既に存在するブロックデータに関連付けられたブロック関連データのポインタが指すブロックＩＤエントリを参照し、そこからの別ユーザチェインをたどって、今回書き込んでいるユーザからの参照が既にあるかを調べる（ステップＡ２０，Ａ２１）。参照がなかった場合（ステップＡ２１でＮｏ）、上述同様に、そのユーザにおける「現在の使用容量＋ブロックサイズ」が、当該ユーザの使用物容量の制限値を超えるかをチェックし（ステップＡ２２）、超える場合は（ステップＡ２２でＹｅｓ）、書き込みエラーとする（ステップＡ１６）。超えない場合は（ステップＡ２２でＮｏ）、そのユーザの現在の使用物理容量に格納したブロックデータのサイズ情報を加え（ステップＡ２３）、使用物理容量記憶部３５に記憶する。また、今回書き込んだブロックデータのブロックＩＤエントリを別ユーザチェインに追加し（ステップＡ２４）、書き込み成功とする（ステップＡ１５）。なお、ステップＡ２１で参照があった場合は（ステップＡ２１でＹｅｓ）、今回書き込んだブロックデータのブロックＩＤエントリを同ユーザチェインに追加し（ステップＡ２５）、書き込み成功とする（ステップＡ１５）。
【００５３】
次に、ユーザがファイルを記憶装置３から削除するときの動作を、図１０のフローチャートを参照して説明する。まず、削除するファイルに対応する各ブロックデータについて、当該ブロックデータを参照する同ユーザチェイン内に、今回削除するブロックＩＤエントリ以外のエントリが存在するかを調べる（ステップＢ１０）。存在しない場合（ステップＢ１１でＮｏ）、そのユーザの使用物理容量から削除するブロックデータのサイズ情報の値を減じ（ステップＢ１２）、今回削除するブロックデータのブロックＩＤエントリを別ユーザチェインから除く（ステップＢ１３）。存在する場合（ステップＢ１１でＹｅｓ）、今回削除するブロックデータのブロックＩＤエントリを、同ユーザチェインから除く（ステップＢ１４）。なお、除いたブロックＩＤエントリが同ユーザチェインの先頭エントリであった場合は（ステップＢ１５でＹｅｓ）、残ったブロックＩＤエントリの先頭のものが別ユーザチェインに入るよう、前後のブロックＩＤエントリまたはブロック関連データのポインタを更新する（ステップＢ１６）。
【００５４】
以上のように、本実施形態におけるストレージシステムによると、ユーザ毎の使用物理容量管理のための処理を効率的に行うことができる。特に、異なるユーザ（企業）間ではデータが重複することは少ないため、上述した別ユーザチェインの長さは短くなる（典型的には、１つのユーザだけが参照し、長さは１となる）。このため、使用物理容量の管理のために必要な同じユーザからの参照の有無をチェックする処理が効率化され、ユーザ毎の使用物理容量の把握及び管理が容易となる。
【００５５】
＜実施形態２＞
次に、本発明の第２の実施形態を、図１１乃至図１６を参照して説明する。図１１は、本実施形態におけるストレージシステムの構成を示すブロック図であり、図１２は、ストレージシステムに記憶されるデータの一例を示す図である。図１３乃至図１６は、ストレージシステムの動作を示す風呂チャートである。
【００５６】
本実施形態におけるストレージシステムは、上述した実施形態１のものとほぼ同様の構成である。これに加え、本実施形態は、図１１に示すように、参照ビットマップ記憶部３６を備えている。さらにこれに伴い、本実施形態では、データ処理装置２が備えるファイル操作実行部２１及び使用物理容量管理部２２は、以下のような機能を有する。
【００５７】
本実施形態における上記ファイル操作実行部２１は、上記使用物理容量管理部２２と協働して、ファイルの書き込みを行う際に、記憶装置３に格納したファイルを使用するユーザ毎における記憶装置の記憶容量を算出するための処理を、以下のように行う。まず、かかる処理の概略を、図１２を参照して説明する。なお、以下に説明する処理は、ファイル格納時に実行されてもよく、あるいは、任意のタイミングで実行されてもよい。
【００５８】
まず、ファイル操作実行部２１は、ファイル３１ａを格納する際に、当該ファイル３１ａを構成するブロックデータ毎に、当該ブロックデータへのユーザ毎の参照の有無を表す参照ビットマップ３６ａを、ブロックデータに関連付けられたブロック関連データに関連付けて、参照ビットマップ記憶部３６に記憶する。上記参照ビットマップ３６ａは、例えば、図１２に示すように、ユーザ毎のビットを複数有するビットマップであり、各ビットは、関連付けられたブロックデータに対する各ユーザの参照の有無を表す情報が設定される情報領域である。一例として、参照ビットマップ３６ａには、関連付けられているブロックデータを参照するユーザに対応するビットに「１」がセットされる。従って、ブロックデータが複数のユーザにて参照されている場合には、当該ブロックデータに関連付けられる参照ビットマップ３６ａには、各ユーザに対応する複数のビットに「１」がセットされることとなる。以上より、参照ビットマップ３６ａの各ビットは、関連付けられているブロックデータを参照しているユーザを識別するユーザ識別情報として機能している。
【００５９】
なお、上記参照ビットマップ３６ａは、同一のデータ内容となるビットマップが重複しないよう参照ビットマップ記憶部３６ａに記憶される。従って、異なるブロックデータであっても参照しているユーザが完全に同一である場合には、参照ビットマップ３６ａが同一となり、複数のブロックデータにそれぞれ関連付けられた複数のブロック関連データに、１つの参照ビットマップ３６ａが関連付けられることとなる。このとき、ブロック関連データ記憶部３３内のブロック関連データには、関連付けられた参照ビットマップ記憶部３６内の参照ビットマップへのポインタが記憶される。なお、参照ビットマップから、当該参照ビットマップへのポインタを取得する変換機能が必要となるが、例えばハッシュなどを使って実現することが可能である。
【００６０】
また、上記使用物理容量管理部２２は、上述した参照ビットマップ３６ａを用いて、各ユーザが記憶装置３を物理的に使用している記憶容量を、ユーザ毎に算出する。具体的に、使用物理容量管理部２２は、各ブロック関連データ３３ａに関連付けられた参照ビットマップ３６ａに「１」がセットされているビットの位置に応じて、各ブロックデータを参照している各ユーザを把握すると共に、ブロック関連データ３３ａに含まれるサイズ情報の値を用いて、ユーザ毎の記憶容量を算出する。また、使用物理容量管理部２２は、上述同様図８に示すように、算出したユーザ毎の記憶容量を使用物理容量記憶部３５に記憶すると共に、予め設定されているユーザ毎の記憶容量の制限値と比較する。そして、使用記憶容量が制限値を超えている場合には、かかるユーザからの書き込みを制限し、書き込みエラーとなるよう制御する。
【００６１】
また、上記ファイル操作実行部２１や使用物理容量管理部２２は、参照ビットマップ記憶部３６内の使用されなくなった参照ビットマップ３６ａを削除する機能も有する。また、上記ファイル操作実行部２１や使用物理容量管理部２２は、ユーザの指示または設定されたスケジュールなどに応じて削除反映一括処理を実行し、ブロックデータの削除を反映すると共に、ブロック関連データ記憶部３３内の参照ビットマップ３６ａへのポインタと、参照ビットマップ記憶部３６内の参照ビットマップ３６ａ、および使用物理容量記憶部３５内の使用物理容量を、最新の状態に更新する処理を行う。
【００６２】
ここで、上記では、使用物理容量管理部２２は、ブロックデータのサイズのみを合計してユーザ毎の使用記憶容量を算出しているが、さらにブロックデータを参照するブロック関連データやブロックＩＤエントリの記憶容量も加算して、ユーザ毎の使用記憶容量を算出してもよい。また、上記では、使用物理容量管理部２２は、使用記憶容量と制限値とを比較しているが、単に使用記憶容量を算出するだけの処理を行ってもよい。また、上記使用容量管理部２２による使用物理容量の算出は、ファイルの書き込み時に実行されてもよく、予め設定されたタイミングで実行されてもよい。
【００６３】
次に、上述したストレージシステム１０の動作、特に、ファイルを書き込むときの動作を、図１３乃至図１６を参照して説明する。なお、以下では、ファイルをブロックデータに分割したり、フラグメントデータに分割して分散記憶するなど、一部の動作についての詳細な説明は省略する。
【００６４】
まず、書き込み対象となるファイルを分割したブロックデータと重複するブロックデータが、既に記憶装置３に存在するかを判定する（ステップＣ１０）。書き込み対象のブロックデータが記憶装置３内に存在しない場合には（ステップＣ１０でＮｏ）、書き込み対象のファイルを使用するユーザを特定し、当該ユーザの現在の使用物理容量とその制限値を使用物理容量記憶部３５から取得する。そして、このユーザの現在の使用物理容量に、書き込み対象のブロックデータのサイズ情報を加算して、「現在の使用容量＋ブロックサイズ」が、当該ユーザの使用物容量の制限値を超えるかをチェックし（ステップＣ１１）、超える場合は（ステップＣ１１でＹｅｓ）、書き込みエラーとする（ステップＣ２０）。超えない場合は（ステップＣ１１でＮｏ）、書き込み対象のブロックデータをブロックデータ記憶部３４に格納し（ステップＣ１２）、今回書き込み中のユーザのみに対応するビットに「１」をセットした参照ビットマップ３６ａを作成し（ステップＣ１３）、参照ビットマップ記憶部３６内のそれと同じ参照ビットマップへのポインタを取得する（ステップＣ１４）。ポインタを取得できない、つまり、同じ参照ビットマップが存在しなかった場合には（ステップＣ１５でＮｏ）、その参照ビットマップ３６ａを参照ビットマップ記憶部３６に記憶させ、当該参照ビットマップ３６ａへのポインタを取得する（ステップＣ１６）。そして、取得したポインタを、ブロック関連データに記憶させ（ステップＣ１７）、書込みを行っているユーザの使用物理容量にブロックデータのサイズ情報を加え（ステップＣ１８）、書き込み成功とする（ステップＣ１９）。
【００６５】
なお、ステップＣ１５で、同じ参照ビットマップが存在した場合には（ステップＣ１５でＹｅｓ）、その存在する参照ビットマップ３６ａへのポインタをブロック関連データに記憶させる（ステップＣ１７）。そして、書込みを行っているユーザの使用物理容量にブロックデータのサイズ情報を加え（ステップＣ１８）、書き込み成功とする（ステップＣ１９）。
【００６６】
一方、ステップＣ１０で、書き込み対象となるブロックデータが記憶装置３に既に存在する場合には（ステップＣ１０でＹｅｓ）、当該ブロックデータを参照するブロック関連データ３３ａに記憶されたポインタを使って、参照ビットマップ記憶部３６から対応する参照ビットマップ３６ａを取得し（ステップＣ３０）、今回書き込み中のユーザが既に参照ビットマップ３６ａに含まれているかチェックする（ステップＣ３１）。含まれている場合は（ステップＣ３１でＹｅｓ）、そのまま書き込み成功とする（ステップＣ１９）。含まれていない場合（ステップＣ３１でＮｏ）、上述同様に、そのユーザにおける「現在の使用容量＋ブロックサイズ」が、当該ユーザの使用物理容量の制限値を超えるかをチェックし（ステップＣ３２）、超える場合は（ステップＡ３２でＹｅｓ）、書き込みエラーとする（ステップＣ２０）。超えない場合は（ステップＡ３２でＮｏ）、参照ビットマップに今回書き込み中のユーザを追加し（ステップＣ３３）、上述同様に、ビットマップ記憶部３６内のそれと同じビットマップへのポインタを取得する（ステップＣ１４）。ポインタを取得できなかった、つまり、同じ参照ビットマップが存在しなかった場合（ステップＣ１５でＮｏ）、その参照ビットマップ３６ａを参照ビットマップ記憶部３６に記憶させ、当該参照ビットマップ３６ａへのポインタを取得する（ステップＣ１６）。そして、取得したポインタを、ブロック関連データに記憶させ（ステップＣ１７）、書込みを行っているユーザの使用物理容量にブロックデータのサイズ情報を加え（ステップＣ１８）、書き込み成功とする（ステップＣ１９）。
【００６７】
なお、ユーザがデータを削除するときは、参照ビットマップや使用物理容量についてはそのときには何もしない。但し、ユーザの指示または設定されたスケジュールなどによって実行される削除反映一括処理で、以下の処理を行う。
【００６８】
まず、全ファイルシステムのディレクトリ構造をたどって、全ファイルに対して（ステップＤ１０）、及び、各ファイルが参照する全ブロックデータに対して（ステップＤ１１）、次の処理を行う。
【００６９】
処理対象となるブロックデータが初めて見つかったブロックかを判定し（ステップＤ１２）、初めて見つかったブロックデータである場合には（ステップＤ１２）、そのブロックデータに仮の参照ビットマップを関連付け（ステップＤ１３）、仮の参照ビットマップは参照元のファイルを使用するユーザのみ「１」とする（ステップＤ１４）。初めて見つかったブロックデータでない場合には（ステップＤ１２でＮｏ）、そのブロックデータに既に関連付けられている仮の参照ビットマップに、参照元ファイルを使用するユーザを追加する（ステップＤ１５）。
【００７０】
そして、上述したステップＤ１０のループ処理後、格納されている全ブロックデータに対して（ステップＤ２０）、ブロック関連データに記憶されたポインタを使って、参照ビットマップ記憶部３６から対応する参照ビットマップを取得し（ステップＤ２１）、各ユーザについて（ステップＤ２２）、次の処理をする。そのユーザが参照ビットマップに含まれていて（ステップＤ２３でＹｅｓ）、仮のビットマップに含まれていない場合には（ステップＤ２４でＮｏ）、そのユーザの使用物理容量からブロックサイズを減じる（ステップＤ２５）。ステップＤ２２のループ後、参照ビットマップと仮のビットマップが異なる場合には（ステップＤ２６でＹｅｓ）、仮のビットマップと同じ参照ビットマップへのポインタを参照ビットマップ記憶部３６から取得し、あるいは、仮のビットマップと同じ参照ビットマップが存在しなかった場合は仮のビットマップへのポインタを参照ビットマップ記憶部３６に記憶させてポインタを取得し（ステップＤ２７）、ブロック関連データにそのポインタを記憶させる（ステップＤ２８）。最後に、参照ビットマップ記憶部３６内の、もはや参照されていない参照ビットマップを削除する（ステップＤ２９）。
【００７１】
なお、上述した削除反映一括処理においては、ブロックデータへの参照がなくなったときに使用容量を減算しているが、一括処理の最初にユーザごとの仮の使用容量をゼロに設定し、参照が残っていたときにブロックデータのサイズを加算していき、最後にそれを使用物理容量記憶部３５に記憶させる方法をとってもよい。
【００７２】
以上のように、本実施形態におけるストレージシステムによると、ユーザ毎の使用物理容量管理のための処理を効率的に行うことができる。特に、異なるユーザ（企業）間ではデータが重複することは少ないため、参照ビットマップが取りうるパターンは少なくなる、つまり、同じパターンが現れることが多くなる。このため、参照ビットマップへのポインタのサイズを、参照ビットマップのサイズより小さく設定することにより、各ブロックデータにそれぞれビットマップを持たせる場合と比べ、データ量は少なくて済む。従って、使用物理容量管理のために必要なデータ量を大幅に削減することができ、また、ユーザ毎の使用物理容量の把握及び管理が容易となる。
【００７３】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム（図１７参照）、情報処理装置、プログラム、情報処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００７４】
（付記１）
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置１１０と、
前記記憶装置に対して前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段１００と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段１０２と、
を備え、
前記データ格納制御手段１０１は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段１０２は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム１００。
【００７５】
（付記２）
付記１に記載のストレージシステムであって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザの前記ユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記ブロック識別データが参照する前記ブロック関連データに含まれる前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００７６】
（付記３）
付記２に記載のストレージシステムであって、
前記データ格納制御手段は、同一の前記ブロック関連データを参照する一群の前記ブロック識別データを同一ブロックチェインとして関連付けて記憶し、
前記記憶容量管理手段は、前記同一ブロックチェインの情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００７７】
（付記４）
付記３に記載のストレージシステムであって、
前記データ格納制御手段は、前記同一ブロックチェインとして関連付けられた一群の前記ブロック識別データ内で、さらに同一の前記ユーザ識別情報が関連付けられた一群の前記ブロック識別データを同一ユーザチェインとして関連付けて記憶し、
前記記憶容量管理手段は、前記同一ブロックチェインの情報と前記同一ユーザチェインの情報とに基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００７８】
（付記５）
付記４に記載のストレージシステムであって、
前記データ格納制御手段は、前記同一ブロックチェインとして関連付けられた一群の前記ブロック識別データ内で、それぞれ異なる前記同一ユーザチェインとして関連付けられた各群の前記ブロック識別データ間を、当該各群の前記ブロック識別データのうちそれぞれ１つの前記ブロック識別データ間を相互に関連付け、
前記記憶容量管理手段は、前記同一ブロックチェインの情報と前記同一ユーザチェインの情報とに基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００７９】
（付記６）
付記１に記載のストレージシステムであって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報と当該ブロックデータの分割元となる前記ファイルを使用するユーザの前記ユーザ識別情報とを含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００８０】
（付記７）
付記６に記載のストレージシステムであって、
前記データ格納制御手段は、ユーザ毎の情報領域が形成された前記ユーザ識別情報に対して、前記ブロック関連データが参照する前記ブロックデータの分割元となる前記ファイルを使用するユーザに対応する前記情報領域に所定の情報をセットして、前記ユーザ識別情報を前記ブロック関連データに関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００８１】
（付記８）
付記７に記載のストレージシステムであって、
前記データ格納制御手段は、ユーザ毎の前記情報領域としてユーザ毎に対応するビットを有する前記ユーザ識別情報に対して、前記ブロック関連データが参照する前記ブロックデータの分割元となる前記ファイルを使用するユーザに対応する前記ビットに所定の情報をセットして、前記ユーザ識別情報を前記ブロック関連データに関連付けて記憶し、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報が有する各ビットに記憶された情報と、前記ブロック関連データに関連付けられた前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ストレージシステム。
【００８２】
（付記９）
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を備え、
前記データ格納制御手段は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理装置。
【００８３】
（付記１０）
付記９に記載の情報処理装置であって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザの前記ユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記ブロック識別データが参照する前記ブロック関連データに含まれる前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理装置。
【００８４】
（付記１１）
付記９に記載の情報処理装置であって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報と当該ブロックデータの分割元となる前記ファイルを使用するユーザの前記ユーザ識別情報とを含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理装置。
【００８５】
（付記１２）
情報処理装置に、
ファイルを分割したブロックデータを格納すると共に当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納制御手段と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理手段と、
を実現させると共に、
前記データ格納制御手段は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理手段は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
ことを実現させるためのプログラム。
【００８６】
（付記１３）
付記１２に記載のプログラムであって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザの前記ユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記ブロック識別データが参照する前記ブロック関連データに含まれる前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
プログラム。
【００８７】
（付記１４）
付記１２に記載のプログラムであって、
前記データ格納制御手段は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報と当該ブロックデータの分割元となる前記ファイルを使用するユーザの前記ユーザ識別情報とを含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理手段は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
プログラム。
【００８８】
（付記１５）
ファイルを分割したブロックデータを格納すると共に、当該格納されたブロックデータを参照する参照データを格納する記憶装置に対して、前記ファイルを新たに格納する際に、当該ファイルを分割した前記ブロックデータと当該ブロックデータを参照する前記参照データとを前記記憶装置に格納すると共に、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、前記参照データを用いて前記記憶装置に既に記憶されているデータを新たに格納する前記ファイルの前記ブロックデータとして参照させるデータ格納工程と、
前記ブロックデータが格納されている前記記憶装置内の記憶容量を、当該ブロックデータの分割元となる前記ファイルを使用するユーザ毎に算出して記憶する記憶容量管理工程と、
を有し、
前記データ格納工程は、前記ブロックデータを参照する前記参照データに、当該ブロックデータの分割元となる前記ファイルを使用するユーザを識別するユーザ識別情報を関連付けて記憶し、
前記記憶容量管理工程は、前記参照データに関連付けられた前記ユーザ識別情報に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理方法。
【００８９】
（付記１６）
付記１５に記載の情報処理方法であって、
前記データ格納工程は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別すると共に前記ファイルを使用するユーザの前記ユーザ識別情報が関連付けられたブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に格納された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報を含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理工程は、前記ブロック識別データに関連付けられた前記ユーザ識別情報と、前記ブロック識別データが参照する前記ブロック関連データに含まれる前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理方法。
【００９０】
（付記１７）
付記１５に記載の情報処理方法であって、
前記データ格納工程は、前記参照データとして、新たに格納する前記ファイルを分割した前記ブロックデータを識別するブロック識別データと、当該ブロック識別データにて参照されると共に前記記憶装置に記憶された前記ブロックデータを参照し当該参照する前記ブロックデータのデータサイズを表すサイズ情報と当該ブロックデータの分割元となる前記ファイルを使用するユーザの前記ユーザ識別情報とを含むブロック関連データと、を前記記憶装置に記憶し、新たに格納する前記ファイルを分割した前記ブロックデータが前記記憶装置に既に記憶されているデータと同一のデータ内容である場合に、当該ブロックデータを識別する前記ブロック識別データにて前記記憶装置に既に記憶されているデータを参照する前記ブロック関連データを参照させ、
前記記憶容量管理工程は、前記ブロック関連データに関連付けられた前記ユーザ識別情報と前記サイズ情報と、に基づいて前記記憶装置内におけるユーザ毎の記憶容量を算出する、
情報処理方法。
【００９１】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９２】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００９３】
１０  ストレージシステム
１１  バックアップシステム
１２  バックアップ対象装置
２０  アクセラレータノード
３０  ストレージノード
１  ファイル操作入力部
２  データ処理装置
２１  ファイル操作実行部
２２  使用物理容量管理部
３  記憶装置
３１  ＦＳ構造記憶部
３２  ブロックＩＤリスト記憶部
３３  ブロック関連データ記憶部
３４  ブロックデータ記憶部
３５  使用物理容量記憶部
３６  参照ビットマップ記憶部
３１ａ  ファイル
３２ａ  ブロックＩＤ
３３ａ  ブロック関連データ
３４ａ  ブロックデータ
３６ａ  参照ビットマップ
【図１】
0005998517.tif 000002
【図２】
0005998517.tif 000003
【図３】
0005998517.tif 000004
【図４】
0005998517.tif 000005
【図５】
0005998517.tif 000006
【図６】
0005998517.tif 000007
【図７】
0005998517.tif 000008
【図８】
0005998517.tif 000009
【図９】
0005998517.tif 000010
【図１０】
0005998517.tif 000011
【図１１】
0005998517.tif 000012
【図１２】
0005998517.tif 000013
【図１３】
0005998517.tif 000014
【図１４】
0005998517.tif 000015
【図１５】
0005998517.tif 000016
【図１６】
0005998517.tif 000017
【図１７】
0005998517.tif 000018