(57)【要約】  本発明のストレージシステムは、書き込み対象データを部分データに分割して新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、部分データ毎に各インデックスエントリをそれぞれ生成すると共に誤り検出用の検査データを付加してインデックスファイルデータを生成するインデックスファイル作成手段と、分割ファイルデータとインデックスファイルデータとを記憶装置に書き込むデータ書き込み手段と、記憶装置に書き込まれた各インデックスエントリの誤りを、当該各インデックスエントリに含まれる検査データに基づいて検出する修復手段と、を備え、修復手段は、記憶装置に記憶されているインデックスファイルデータ内において、誤りが検出されたインデックスエントリ以降の全てのインデックスエントリを、インデックスファイルから削除する。
2012101707.tif 000002
【特許請求の範囲】
【請求項１】
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出する修復手段と、を備え、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記データ書き込み手段は、前記インデックスファイルデータ内の前記インデックスエントリのうち、前記記憶装置に書き込みが完了した前記インデックスエントリに特定情報を付加して当該記憶装置に格納し、
前記修復手段は、前記インデックスファイルデータをその終端側から順に前記インデックスエントリの誤り検出処理を行う際に、当該インデックスエントリに前記特定情報が付加されている場合に当該インデックスエントリの誤り検出処理を停止する、
ストレージシステム。
【請求項４】
請求項１乃至３のいずれかに記載のストレージシステムであって、
前記インデックスファイル作成手段は、前記インデックスエントリに、当該インデックスエントリに対応する前記部分データのデータサイズを表すデータサイズ情報含め、
前記修復手段は、前記誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを削除した後における修復された前記インデックスファイルデータの終端側に位置する前記インデックスエントリに含まれる情報に基づいて、前記分割ファイルデータのファイルサイズを修正する、
ストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記修復手段は、前記修復されたインデックスファイルデータの終端側に位置する前記インデックスエントリに含まれる情報であり、当該インデックスエントリに対応する前記部分データが含まれる前記分割ファイルデータ中の位置情報と当該分割データの前記データサイズ情報とにより特定されるファイルサイズに、前記分割ファイルデータのファイルサイズが一致するよう当該分割ファイルデータの後端側を拡張あるいは削除する、
ストレージシステム。
【請求項６】
情報処理装置に、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する修復手段と、
を実現させるためのプログラム。
【請求項７】
請求項６に記載のプログラムであって、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
プログラム。
【請求項８】
情報処理装置にて、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成し、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成し、
前記分割ファイルデータと前記インデックスファイルデータとを前記記憶装置に書き込み、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
情報処理方法。
【請求項９】
請求項８に記載の情報処理方法であって、
前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶対象となるデータを分割して記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。【０００４】
そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。【０００５】
また、上記コンテンツアドレスとして、データの内容に応じて固有となるよう生成される例えばデータのハッシュ値を用いる。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。【０００６】
上述した重複記録排除機能を備えたストレージシステムでは、上位のファイルシステムと下位のファイルシステムとを有しており、以下の特徴を有する。
・上位のファイルシステムが、書き込まれたファイルを内部的に複数のファイルに分割する。
・上位のファイルシステムから、分割されたファイルがそれぞれ下位のファイルシステムに書き出され、下位のファイルシステムによって安定的なストレージ装置と同期される。
・下位のファイルシステムでは、データの書き込み順序を保証しない。そのため、データの書き出し途中でシステムダウンが発生した場合に一部のデータが抜けている状態になる可能性がある。【０００７】
ここで、図１に、ファイル分割によってファイルＦが２つに分割される様子を示す。まず、上位のファイルシステムでは、ファイルＦを複数の部分データ（Ｆ１＿１，Ｆ２＿１等）に分割することによって作成されたファイル１（Ｆ１）とファイル２（Ｆ２）の他に、書き込まれた元のファイルＦと分割された各ファイル１，２のマッピング情報を記録するインデックスファイルＩｄｘを作成する。このインデックスファイルＩｄｘは、分割された各部分データ（Ｆ１＿１，Ｆ２＿１等）のマッピング情報を、インデックスエントリ（Ｉ＿１等）として有する。【０００８】
そして、インデックスエントリ中のマッピング情報は、主に以下のような情報である。
・対応するファイルの情報
・分割される前のファイル内のファイル先頭からのオフセット情報
・分割されたファイルのファイル先頭からのオフセット情報
・データサイズ情報【０００９】
上述したようなファイルを分割するファイルシステムが使用される一例として、データをバックアップするソフトウェアがある。バックアップソフトウェアでは、ファイルシステムの上位で、バックアップデータを「データ部」と、バックアップソフトによって挿入された「マーカ部」と、に分割している。ここで、データの重複排除の判定は、一般的に、ファイルのデータをある長さ（固定長または可変長）に区切って、それらを比較することにより行っている。このため、１つのファイル中のデータの差異が、ファイルを区切った長さより小さな間隔で存在すると、それらは同一内容のデータとは判定されない。つまり、区切ったデータ間に同一内容のデータ部分が存在していた場合であっても、わずかな差異が存在すると、両方の区切ったデータが記憶されることとなり、効率よく記憶するデータの重複排除ができない。そして、データをバックアップするソフトウェアでは、バックアップするデータの他に、バックアップ時刻等のバックアップ毎にユニークな情報が挿入されていることがあり、そのようなマーカ部は、各フルバックアップ間における重複排除の妨げになる。【００１０】
従って、上述したように、ファイルシステムの上位でバックアップデータを、「データ部」と「マーカ部」とに分割することで、「データ部」側でバックアップデータの重複排除効果を向上させることができる。特に、フルバックアップを数世代取得する場合、各フルバックアップ間では重複している部分が非常に多いことが期待できるため、さらなる重複排除機能の向上を図ることができ、効率よくストレージ領域の削減が行える。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、このようなファイルシステムでは、データの書き出し途中でシステムダウンが発生した場合、図２に示す符号が付されていない部分などのように、分割されたそれぞれのファイルが不完全な状態となる可能性がある。特に、分割されたファイルの中でも、各ファイルのマッピング情報を記録したインデックスファイルＩｄｘは重要なファイルであり、その内容が不完全となった場合には、データアクセスが正常に行えなくなる。【００１３】
このため、本発明の目的は、上述した課題である、ファイルシステムにおいてデータアクセスを正常に行えなくなる、という不都合を解決したストレージシステムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成すべく、本発明の一形態であるストレージシステムでは、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出する修復手段と、を備え、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
という構成をとる。【００１５】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する修復手段と、
を実現させるためのプログラムである。【００１６】
また、本発明の他の形態である情報処理方法は、
情報処理装置にて、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成し、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成し、
前記分割ファイルデータと前記インデックスファイルデータとを前記記憶装置に書き込み、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
という構成を取る。
【発明の効果】
【００１７】
本発明は、以上のように構成されることにより、システムダウン等によりによって記憶装置に書き込まれたデータが不完全となった場合であっても、その後のデータアクセスを正常に行うことができる。
【図面の簡単な説明】
【００１８】
【図１】記憶装置に書き込むファイルを分割したときの様子を示す図である。
【図２】記憶装置に書き込まれた分割後のファイルが不完全となったときの様子を示す図である。
【図３】本発明実施形態１におけるストレージシステムの構成を示す図である。
【図４】図３に開示したファイル情報テーブルの一例を示す図である。
【図５】図３に開示したストレージシステムの動作を示すフローチャートである。
【図６】図３に開示したストレージシステムの動作を示すフローチャートである。
【図７】図３に開示したストレージシステムの動作を示すフローチャートである。
【図８】図３に開示したストレージシステムの動作を示すフローチャートである。
【図９】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１０】図３に開示したストレージシステムにおけるインデックスファイルの修正時の様子を示す図である。
【図１１】図３に開示したストレージシステムにおける分割ファイルの修正時の様子を示す図である。
【図１２】図３に開示したストレージシステムにおける分割ファイルの修正時の様子を示す図である。
【図１３】本発明の付記１におけるストレージシステムの構成を示す図である。
【発明を実施するための形態】
【００１９】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図１２を参照して説明する。図３乃至図４は、本実施形態におけるストレージシステムの構成を説明するための図であり、図５乃至図１２は、ストレージシステムの動作を説明するための図である。
【００２０】
［構成］
本発明におけるストレージシステム１は、１台のサーバコンピュータ、あるいは、接続された複数台のサーバコンピュータ、にて構成されている。そして、図２に示すように、ストレージシステム１は、ファイルシステムＡとファイルシステムＢといった２つのファイルシステムを備えている。ファイルシステムＡは、例えば、ストレージシステム１自体における記憶再生動作を制御する機能を有しており、ファイルシステムＢは、実際に記憶装置にデータを記憶する機能を備えている。
【００２１】
なお、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。これにより、記憶するデータの重複排除を実現している。但し、本発明におけるストレージシステム１は、コンテンツアドレスストレージシステムであることに限定されず、重複排除機能を有していることにも限定されない。
【００２２】
そして、本実施形態におけるストレージシステム１は、演算装置にプログラムが組み込まれることで構築された、データ属性判別部１１と、ファイル分割部１２と、インデックスファイル作成部１３と、データ書き込み部１４と、修復部１５と、をファイルシステムＡに備えている。また、ストレージシステム１は、主記憶部に形成されたファイル情報テーブル１６を備えている。
【００２３】
さらに、ストレージシステム１は、図示しないが、ファイルシステムＢにてアクセス可能な複数の記憶装置を備えている。そして、後述する分割ファイルＦ１，Ｆ２やインデックスファイルＩｄｘを、さらに分割及び冗長化して、複数の記憶装置に分散して記憶し、重複排除を実現する機能を備えている。
【００２４】
上記データ属性判別部１１（データ分割手段）は、書き込み対象となるファイル（書き込み対象データ）中の各部分データが、予め設定されたいずれの属性（分類）に属するか、を判別する。ここで、本実施形態では、例えば、書き込み対象となるファイルＦは、バックアップデータであり、当該バックアップデータの実データ部分であり生成された時間や更新回数などによっても値が変化しない「データ部」と、タイムスタンプや通番などのように時間や更新回数などの違いによって値が変化しファイル自体の管理情報を含む「マーカ部」と、いった２属性のうち、いずれの属性であるか判別する。なお、データ属性判別部１１には、予めファイルＦ内の各部分データのデータ内容から、属性を判別する基準情報が予め設定されており、かかる基準情報に従って属性判別を行う。
【００２５】
上記ファイル分割部１２（データ分割手段）は、データ判別部１１による属性の判別に従って、ファイルＦ中の各部分データを分割して、各属性毎にそれぞれ振り分けて新たな分割ファイルデータをそれぞれ生成する。例えば、本実施形態では、上述したようにファイルＦ中の「データ部」に属する各部分データを、分割後の分割ファイルデータであるファイル１（Ｆ１）に振り分け、「マーカ部」に属する各分割データを、分割後の分割ファイルデータであるファイル２（Ｆ２）に振り分ける。そして、それぞれ振り分けられた各部分データを、各属性に対応する各ファイル毎（ファイル１、ファイル２）で結合して、ファイル１とファイル２とを生成する。具体的には、図１に示すように、書き込み対象となるファイルＦのうち、符号Ｆ１＿１〜Ｆ１＿７の部分データをファイル１に振り分け、符号Ｆ２＿１〜Ｆ２＿6の部分データをファイル２に振り分ける。
【００２６】
ここで、上述したファイルＦを分割してファイル１，２を生成する処理は、ストレージシステム１内の主記憶装置上で行われ、かかるファイル１，２は、後述するように、データ書き込み部１４によるファイルシステムＡとファイルシステムＢとのデータ同期時に、実際に記憶装置に書き込まれることとなる。
【００２７】
なお、本実施形態では、書き込み対象となるファイルＦを２つのファイルに分割する場合を例示したが、本発明は分割するファイル数を２つに限定するものではなく、さらに多くの数のファイルに分割する場合でも適用可能である。
【００２８】
上記インデックスファイル作成部１３（インデックスファイル作成手段）は、上述したようにファイルＦ中の各部分データを分割した際に、当該各部分データのインデックスエントリを生成して結合し、インデックスファイルＩｄｘ（インデックスファイルデータ）を生成する。なお、インデックスエントリは、例えば、ファイル情報テーブル１６に格納された情報を利用して作成され、例えば、図４に示すように、インデックスエントリに対応する部分データの分割前におけるファイルＦ中の位置情報を表す”originalFile_offset”と、部分データから生成された分割ファイルデータ（ファイル１又はファイル２）中の位置情報を表す”fileA_offset”もしくは”fileB_offset”(“current_File”に記載されているファイルのoffset情報）、部分データ自体のデータサイズを表すデータサイズ情報である”data_size”、ファイルシステムＢとの同期が完了したか否かを表す”index_sync”、といったデータを含んでいる。なお、”index_sync”は、初期設定値は”０”であるが、ファイルシステムＢとの同期が完了すると、”１”に設定される。
【００２９】
また、インデックスファイル作成部１３は、上述したインデックスエントリに、当該インデックスエントリの不正を検出するために利用する誤り検出用の検査データを付加する。この検査データは、例えば、「CRC32」といった冗長コードであるが、かかるデータに限定されない。
【００３０】
上記データ書き込み部１４（データ書き込み手段）は、上述したファイル分割部１２にて生成された各分割ファイルデータであるファイル１とファイル２、及び、上記インデックスファイル作成部１３にて作成されたインデックスファイルＩｄｘを、ファイルシステムＢに書き込む。具体的には、ストレージシステム１内の主記憶装置上で生成されたファイル１，２及びインデックスファイルＩｄｘを、ファイルシステムＡとファイルシステムＢとのデータ同期のタイミングで、実際に補助記憶装置に書き込む。また、データ書き込み部１４は、特に、インデックスエントリの補助記憶装置への書き込みが完了すると、当該インデックスエントリ内の”index_sync”を”１”に設定し、特定情報を付加する。
【００３１】
上記修復部１５（修復手段）は、上述したデータ書き込み部１４にてファイル１，２、及びインデックスファイルＩｄｘを補助記憶装置に書き込んでいる最中に、ストレージシステム１自体やファイルシステムＢなどに障害が発生するなどシステムダウンが発生した場合に、補助記憶装置に書き込まれたデータに次回アクセスする際に、当該データの確認と修復といったリカバリ処理を行う。
【００３２】
具体的に、修復部１５は、インデックスファイルＩｄｘ内のインデックスエントリに格納されている誤り検出用の検査データを調べ、誤り検出処理を行う。そして、修復部１５は、インデックスエントリの誤りを検出した際には、当該インデックスエントリよりも後端側に位置する全てのインデックスエントリを、インデックスファイルＩｄｘ内から削除する修正を行う。このとき、修復部１５は、インデックスファイルＩｄｘの終端側から順に始端側に向かって、インデックスエントリの誤り検出処理を行うと共に、当該インデックスエントリ中の”index_sync”の値を調べるバックリードを行う。そして、インデックスエントリ中の”index_sync”が”１”である場合には、インデックスファイルＩｄｘの終端側から順に行っていた誤り検出処理つまりバックリードを終了する。なお、修復部１５は、バックリード中にインデックスファイルＩｄｘの先頭のエントリに達した場合も、バックリードを終了する。
【００３３】
さらに、修復部１５は、上述したように各インデックスエントリの確認と修正が完了すると、修正後のインデックスファイルＩｄｘの終端側に位置するインデックスエントリ内の情報から、各分割ファイルであるファイル１，２のファイルサイズを特定する。そして、この特定したファイル１，２のファイルサイズと、実際のファイル１，２のファイルサイズが一致するか否かを調べ、実際のファイル１，２がインデックスエントリから特定したファイルサイズに一致するよう、ファイル１，２の終端を拡張あるいは削除する。なお、具体的な処理内容については後述する。
【００３４】
［動作］
次に、上述したストレージシステム１の動作を、図５乃至図９のフローチャート、及び、図１０乃至図１２の図を参照して説明する。
【００３５】
はじめに、図５を参照して、ストレージシステム１によるファイル分割とインデックスファイルの作成について説明する。ファイルシステムＡに対してファイルＦを書き込む際には、まず、ファイル情報テーブル１６を初期化すると共に（ステップＳ１）、ファイルの作成を行い、そのファイルに対するinode番号等の各種情報をヘッダとして、インデックスファイルＩｄｘに書き出す（ステップＳ２）。そして、ファイルＦが書き込まれると（ステップＳ３）、データ属性判別部１１が部分データのデータ属性を確認し、ファイル情報テーブル１６中の”current_File”にデータ属性を書き込み（ステップＳ４）、ファイル分割部１２がデータの属性に応じて、各部分データを各ファイル１，２へ書き出す（ステップＳ５）。
【００３６】
その後、ファイルＦからのデータ書き込みの度に（ステップＳ６）、データ属性の判別（ステップＳ７）、データ書き出し（ステップＳ１１）を行う。このとき、データ属性判別によって判定された部分データの属性が、ひとつ前の属性と異なる場合は（ステップＳ８でＮｏ）、インデックスファイル作成部１３によって、インデックスエントリが作成され、当該インデックスエントリをインデックスファイルＩｄｘに書き出し（ステップＳ９）、”current_File”を更新する（ステップＳ１０）。
【００３７】
そして、ファイルＦ内の全ての部分データの書き込みが完了すると（ステップＳ１１，ステップＳ１２でＹｅｓ）、最後にインデックスエントリの書き出しを行う（ステップＳ１３）。なお、かかる書き出しは、主記憶部上で行われ、実際に補助記憶装置への記憶は、後の同期時に行われる。
【００３８】
次に、図５で説明したステップＳ５やステップＳ１１におけるデータ書き出し処理について、図６のフローチャートを参照して説明する。ファイル分割部１２は、ファイルＦの部分データを、ファイル情報テーブル１６中の”current_File”に従って（ステップＳ２１）、ファイルシステムＢのファイル１又はファイル２に書き出し（ステップＳ２２，Ｓ２３）、ファイル情報テーブル１６中の”data_size”に、書き出した部分データのサイズを加算する（ステップＳ２４）。
【００３９】
次に、図５で説明したステップＳ９におけるインデックスエントリ書き出し処理について、図７のフローチャートを参照して説明する。上述したように、ファイルＦの部分データの属性が変化した場合には、インデックスエントリを書き出す。このとき、ファイル情報テーブル１６中の”current_File”を確認して（ステップＳ３１）、ファイル情報テーブル１６中の各情報を元に、検査用の冗長コードを計算する（ステップＳ３２，Ｓ３５）。そして、ファイル情報テーブル１６中の各情報と検査用の冗長コードを一つのインデックスエントリとして、ファイルシステムＢのインデックスファイルＩｄｘに書き出す（ステップＳ３３，Ｓ３４）。インデックスエントリをインデックスファイルＩｄｘに書き出した後は、”fileA_offset”もしくは”fileB_offset”（“current_File”に記載されているファイルのoffset情報）、”originalFile_offset”に、”data_size”を加算し（ステップＳ３４，Ｓ３７，Ｓ３８）、”index_sync”を”０”にする（ステップＳ３９）。
【００４０】
次に、ファイルシステムＡに対して、データ同期命令が行われた際のデータ同期処理、つまり、上述したように生成されたファイル１，２及びインデックスファイルＩｄｘを主記憶部から補助記憶装置に実際にデータを書き込むときの動作を、図８のフローチャートを参照して説明する。
【００４１】
データ同期命令が実行された場合（ステップＳ４１）、インデックスエントリの書き出しを行い（ステップＳ４２）、ファイルシステムＢの全てのファイルに対して、データ同期命令を発行する（ステップＳ４３）。最後にファイル情報テーブル１６中の”index_sync”を”１”にする（ステップＳ４４）。これにより、データ同期直後に作成されたインデックスエントリ中の”index_sync”は”１”になり、その他の場合は”０”になる。
【００４２】
続いて、上述したデータ同期時に、ファイルシステムＢへのデータ書き出し途中でシステムダウンが発生した場合には、ファイルＦへの次回アクセス時にリカバリ処理が行われる。このリカバリ処理について、図９のフローチャートと図１０乃至図１２を参照して説明する。
【００４３】
リカバリ処理では（ステップＳ５１）、図１０に示すように、インデックスファイルＩｄｘ中のインデックスエントリを、当該インデックスファイルＩｄｘの終端側からバックリードする（ステップＳ５２）。そして、インデックスエントリ中の検査用の冗長コードを用いて、不正なインデックスエントリが存在するかどうか確認する（ステップＳ５３）。このとき、さらに、インデックスエントリ中の”index_sync”が”１”、もしくは、インデックスファイルＩｄｘの先頭に達するか否かを調べ（ステップＳ５４）、達していなければ一つ前のエントリを読み込み（ステップＳ５５）、上記同様の処理を行う。
【００４４】
そして、バックリード中に、インデックスエントリ中の”index_sync”が”１”、もしくは、インデックスファイルＩｄｘの先頭に達した場合にはバックリードを終了する（ステップＳ５４）。このとき、不正なインデックスエントリが存在していた場合には、そのインデックスエントリ以降つまり不正なインデックスエントリからインデックスファイルＩｄｘの終端までのインデックスエントリを、全て削除する（ステップＳ５６）。例えば、図１０に示す符号Ｉ＿９のインデックスエントリの”index_sync”が”１”であり、これよりも終端側である右隣のインデックスエントリが不正であった場合には、図１０に示すように、符号Ｉ＿９のインデックスエントリよりも後端側に位置する点線部分のインデックスエントリを、矢印に示すように削除する。
【００４５】
なお、インデックスエントリ中の”index_sync”が”１”の場合には、そのインデックスエントリ以前の各ファイル（ファイル１、ファイル２、インデックスファイル）は同期されていることが保証されていることとなる。従って、それ以前のインデックスエントリは不正かどうかを調べる必要はなく、バックリードする必要はない。以上のように、インデックスエントリに”index_sync”を付加することにより、バックリード区間を短くすることができる。
【００４６】
その後、インデックスエントリの確認と修正が完了すると、各ファイル１，２のデータサイズと、当該各ファイル１，２に対応する正常な最終インデックスエントリが指す領域の終端とに、ずれがあるかどうかを確認する（ステップＳ５７）。例えば、図１１に示すインデックスファイルの正常部分の終端に位置する符号Ｉ＿９のインデックスエントリに含まれるファイル１内の位置情報とデータサイズに基づいてファイル１のサイズを特定し、これと実際のファイル１のサイズとを比較する。そして、実際のファイル１のサイズが、終端インデックスエントリから特定したサイズよりも大きい場合には、当該終端インデックスエントリに対応する実際のファイル１の符号Ｆ１＿５に示す終端より後方に存在する不完全なデータを削除し、ファイル１を切り詰める。つまり、最終インデックスエントリから特定したサイズまで、ファイル１の終端である図１１の点線に示す部分データを、矢印に示すように削除する（ステップＳ５８）。
【００４７】
一方、実際のファイル１のサイズが、最終インデックスエントリから特定したサイズよりも小さい場合には、正常な最終インデックスエントリにて特定されるサイズまで、ファイル１の終端を拡張する（ステップＳ５９）。
【００４８】
そして、ファイル２に対しても、上述同様に当該ファイル２のデータサイズと、当該ファイル２に対応する正常な最終インデックスエントリが指す領域の終端とに、ずれがあるかどうかを確認する（ステップＳ６０）。例えば、図１１に示すファイル２に対応するインデックスファイルの正常部分の終端に位置する符号Ｉ＿８のインデックスエントリに含まれるファイル２内の位置情報とデータサイズに基づいてファイル２のサイズを特定し、これと実際のファイル２のサイズとを比較する。そして、実際のファイル２のサイズが、終端インデックスエントリから特定したサイズよりも大きい場合には、当該最終インデックスエントリに対応する実際のファイル２の終端より後方に存在する不完全なデータを削除し、ファイル２を切り詰める（ステップＳ６１）。
【００４９】
一方、実際のファイル２のサイズが、当該ファイル２に対応する最終インデックスエントリ（符号Ｉ＿８）から特定したサイズよりも小さい場合には、正常な最終インデックスエントリにて特定されるサイズまで、図１２の点線及び矢印に示すように、ファイル２の終端を拡張する（ステップＳ６２）。
【００５０】
本発明におけるストレージシステムは、以上のように構成することにより、書き込み中にシステムダウンした場合でも、ファイル１、ファイル２、インデックスファイルのファイル間の整合が保たれるため、次回の当該ファイルへのアクセスを正常に行うことができる。
【００５１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステムの構成の概略を、図１３を参照して説明する。但し、本発明は、以下の構成に限定されない。
【００５２】
（付記１）
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段１０１と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段１０２と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段１０３と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出する修復手段１０４と、を備え、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
ストレージシステム１００。
【００５３】
（付記２）
付記１に記載のストレージシステムであって、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
ストレージシステム。
【００５４】
（付記３）
付記２に記載のストレージシステムであって、
前記データ書き込み手段は、前記インデックスファイルデータ内の前記インデックスエントリのうち、前記記憶装置に書き込みが完了した前記インデックスエントリに特定情報を付加して当該記憶装置に格納し、
前記修復手段は、前記インデックスファイルデータをその終端側から順に前記インデックスエントリの誤り検出処理を行う際に、当該インデックスエントリに前記特定情報が付加されている場合に当該インデックスエントリの誤り検出処理を停止する、
ストレージシステム。
【００５５】
（付記４）
付記１乃至３のいずれかに記載のストレージシステムであって、
前記インデックスファイル作成手段は、前記インデックスエントリに、当該インデックスエントリに対応する前記部分データのデータサイズを表すデータサイズ情報含め、
前記修復手段は、前記誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを削除した後における修復された前記インデックスファイルデータの終端側に位置する前記インデックスエントリに含まれる情報に基づいて、前記分割ファイルデータのファイルサイズを修正する、
ストレージシステム。
【００５６】
（付記５）
付記４に記載のストレージシステムであって、
前記修復手段は、前記修復されたインデックスファイルデータの終端側に位置する前記インデックスエントリに含まれる情報であり、当該インデックスエントリに対応する前記部分データが含まれる前記分割ファイルデータ中の位置情報と当該分割データの前記データサイズ情報とにより特定されるファイルサイズに、前記分割ファイルデータのファイルサイズが一致するよう当該分割ファイルデータの後端側を拡張あるいは削除する、
ストレージシステム。
【００５７】
（付記６）
情報処理装置に、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成するデータ分割手段と、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成するインデックスファイル作成手段と、
前記データ分割手段にて生成された前記分割ファイルデータと、前記インデックファイル作成手段にて生成された前記インデックスファイルデータと、を前記記憶装置に書き込むデータ書き込み手段と、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する修復手段と、
を実現させるためのプログラム。
【００５８】
（付記７）
付記６に記載のプログラムであって、
前記修復手段は、前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
プログラム。
【００５９】
（付記８）
付記７に記載のプログラムであって、
前記データ書き込み手段は、前記インデックスファイルデータ内の前記インデックスエントリのうち、前記記憶装置に書き込みが完了した前記インデックスエントリに特定情報を付加して当該記憶装置に格納し、
前記修復手段は、前記インデックスファイルデータをその終端側から順に前記インデックスエントリの誤り検出処理を行う際に、当該インデックスエントリに前記特定情報が付加されている場合に当該インデックスエントリの誤り検出処理を停止する、
プログラム。
【００６０】
（付記９）
情報処理装置にて、
所定の記憶装置に対する書き込み対象データを複数の部分データに分割し、当該各部分データを予め設定された基準に従って複数の分類に振り分け、各分類毎に前記部分データを結合した新たな分割ファイルデータをそれぞれ生成し、
前記部分データ毎に、当該部分データの分割前における前記書き込み対象データ中の位置情報と、前記部分データの分割後に生成された前記分割ファイルデータ中の位置情報と、を含む各インデックスエントリをそれぞれ生成すると共に、当該各インデックスエントリに誤り検出用の検査データを付加し、当該複数のインデックスエントリを結合したインデックスファイルデータを生成し、
前記分割ファイルデータと前記インデックスファイルデータとを前記記憶装置に書き込み、
前記記憶装置に書き込まれた前記各インデックスエントリの誤りを、当該各インデックスエントリに含まれる前記検査データに基づいて検出すると共に、記記憶装置に記憶されている前記インデックスファイルデータ内において、誤りが検出された前記インデックスエントリ以降の全てのインデックスエントリを、前記インデックスファイルから削除する、
情報処理方法。
【００６１】
（付記１０）
付記９に記載の情報処理方法であって、
前記記憶装置に記憶されている前記インデックスファイルデータを、その終端側から順に前記インデックスエントリの誤り検出処理を行う、
情報処理方法。
【００６２】
（付記１１）
付記１０に記載の情報処理方法であって、
前記データ書き込み時に、前記インデックスファイルデータ内の前記インデックスエントリのうち、前記記憶装置に書き込みが完了した前記インデックスエントリに特定情報を付加して当該記憶装置に格納し、
前記インデックスファイルデータをその終端側から順に前記インデックスエントリの誤り検出処理を行う際に、当該インデックスエントリに前記特定情報が付加されている場合に当該インデックスエントリの誤り検出処理を停止する、
情報処理方法。
【００６３】
なお、上記各実施形態においてプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００６４】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【００６５】
なお、本発明は、日本国にて２０１１年１月２８日に特許出願された特願２０１１−１６２２９の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【符号の説明】
【００６６】
１  ストレージシステム
１１  データ属性判別部
１２  ファイル分割部
１３  インデックスファイル作成部
１４  データ書き込み部
１５  修復部
１６  ファイル情報テーブル
１００  ストレージシステム
１０１  データ分割部
１０２  インデックスファイル作成手段
１０３  データ書き込み手段
１０４  修復手段
Ｆ  ファイル（書き込み対象データ）
Ｆ１  ファイル１（分割ファイルデータ）
Ｆ２  ファイル２（分割ファイルデータ）
Ｉｄｘ  インデックスファイル
【図１】
2012101707.tif 000003
【図２】
2012101707.tif 000004
【図３】
2012101707.tif 000005
【図４】
2012101707.tif 000006
【図５】
2012101707.tif 000007
【図６】
2012101707.tif 000008
【図７】
2012101707.tif 000009
【図８】
2012101707.tif 000010
【図９】
2012101707.tif 000011
【図１０】
2012101707.tif 000012
【図１１】
2012101707.tif 000013
【図１２】
2012101707.tif 000014
【図１３】
2012101707.tif 000015
【国際調査報告】
2012101707.tif 000016
2012101707.tif 000017
2012101707.tif 000018
2012101707.tif 000019