(57)【要約】【課題】重複排除ストレージシステムの性能低下を抑制する。【解決手段】本発明のストレージシステムは、記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、重複していない記憶対象データである非重複データの格納先を決定する格納先決定部と、非重複データは、決定した格納先となる記憶装置に記憶するデータ格納制御部と、を備える。そして、格納先決定部は、非重複データと予め設定された基準により関連すると判断される重複データの格納先を判定し、当該判定結果に基づいて、非重複データの格納先を決定する。【選択図】図１２
2015170345.tif 000002
【特許請求の範囲】
【請求項１】
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を備え、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記記憶対象データを構成する前記非重複データ及び前記重複データは、記憶するデータを複数のブロックに分割したデータであり、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する全てのブロックに対する前記重複データの割合が閾値以上である場合に、当該重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項４】
請求項２又は３に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合が、閾値以上である当該格納先となる記憶装置の性能を特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
ストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記格納先決定部は、前記重複データの格納先毎の割合が閾値以上である当該格納先となる記憶装置の性能として、当該記憶装置の記憶領域に対するアクセス速度が所定の基準により高速であるか否かを特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
ストレージシステム。
【請求項７】
請求項１乃至６のいずれかに記載のストレージシステムであって、
前記非重複データの格納先を予め設定した規定ポリシーと、前記判定結果に応じて前記非重複データの格納先を設定した判定結果ポリシーと、を記憶し、
前記格納先決定部は、前記判定結果に基づいて、前記規定ポリシーか前記判定結果ポリシーのいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項８】
請求項７に記載のストレージシステムであって、
前記格納先決定部は、
記憶するデータの属性に応じて前記規定ポリシーを用いるか否かを決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いることを決定した場合には、当該規定ポリシーに基づいて前記非重複データの格納先を決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いないことを決定した場合には、前記判定結果に基づいて、前記規定ポリシーか前記判定結果ポリシーのいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【請求項９】
情報処理装置に、
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を実現させると共に、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ことを実現させるためのプログラム。
【請求項１０】
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定し、
重複していない前記記憶対象データである非重複データの格納先を決定し、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納処理を行うデータ格納方法であって、
前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、同一内容のデータの重複記憶を排除するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。また、コンテンツアドレスストレージシステムの中には、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納する、というものもある。
【０００４】
そして、上述したようなコンテンツアドレスストレージシステムでは、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される値、例えばデータのハッシュ値、に基づいて生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除して、データ容量の削減を図ることができる。
【０００６】
特に、上述したような重複記憶を排除する機能を有するストレージシステムでは、ファイルなど書き込み対象となるデータを所定容量の複数のブロックデータに分割して圧縮し、記憶装置に書き込む。このように、ファイルを分割したブロックデータ単位で重複記憶を排除することで、重複率が増大し、データ容量の削減を図っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−４７９３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、特許文献１では、複数階層のボリュームを有するストレージシステムにおいて格納データの位置を制御することで、重複記憶排除率を向上させることを提案している。一方で、ストレージシステムを構成する記憶媒体としては、読み書きが低速であるが低コストで実現できるＨＤＤ（Hard disk drive）といった低速デバイスや、コストが高いが読み書きが高速であるＳＳＤ（Solid State Drive）といった高速デバイスが用いられる。この場合、重複記憶排除率の向上のみを考慮して格納データの格納先を決定すると、格納データの用途や属性に対して不適切なデバイスに格納されることが生じる。すると、低速デバイスに格納したことによる処理遅延や、高速デバイスの利用効率の低下、さらには、デバイス間のデータ移動処理の増大、といった問題が発生する。その結果、ストレージシステムの性能の低下、という問題が生じる。
【０００９】
このため、本発明の目的は、重複排除機能を有するストレージシステムにおける性能の低下、という問題を解決することができるストレージシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一形態であるストレージシステムは、
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を備え、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
という構成をとる。
【００１１】
本発明の他の形態であるプログラムは、
情報処理装置に、
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を実現させると共に、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ことを実現させる、という構成をとる。
【００１２】
本発明の他の形態であるデータ格納方法は、
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定し、
重複していない前記記憶対象データである非重複データの格納先を決定し、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納処理を行うデータ格納方法であって、
前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
という構成をとる。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、重複排除機能を有するストレージシステムにおける性能の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１におけるストレージシステムの構成の概略を示すブロック図である。
【図２】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図３】図２に開示したストレージシステムに記憶されるデータの一例を示す図である。
【図４】図２に開示したストレージシステムに記憶されるデータの一例を示す図である。
【図５】図２に開示したストレージシステムにおけるデータ書き込み処理の様子を説明するための説明図である。
【図６】図２に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。
【図７】図２に開示したストレージシステムにおけるデータ書き込み処理の概略を説明する説明図である。
【図８】図２に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図９】図２に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図１０】図２に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図１１】図２に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図１２】本発明の付記１におけるストレージシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１１参照して説明する。図１は、ストレージシステムの構成の概略を示すブロック図であり、図２は、ストレージシステムの構成を示す機能ブロック図である。図３乃至図４は、ストレージシステムに記憶されるデータの一例を示す図である。図５乃至図７は、ストレージシステムにおけるデータ書き込み処理の様子を説明するための説明図である。図８乃至図１１は、ストレージシステムの動作を示すフローチャートである。
【００１６】
［構成］
図１に示すように、本発明におけるストレージシステム１は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセスノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセスノード２の数とストレージノード３の数は、図２に示したものに限定されず、さらに多くの各ノード２，３が接続されて構成されていてもよい。また、本発明のストレージシステム１は、１台のコンピュータで構成されていてもよい。
【００１７】
ここで、本実施形態におけるストレージシステム１を、図２に示すように、重複排除コントローラ２０と、階層化ストレージシステム３０と、により構成されていることとして説明する。重複排除コントローラ２０は、主に上述したアクセスノード２にて構成され、階層化ストレージシステム３０は、主に上述したストレージノード３にて構成されている。なお、重複排除コントローラ２０と階層化ストレージシステム３０とは、必ずしもアクセスノード２とストレージノード３とで構成されていることに限定されない。
【００１８】
図２に示すように、重複排除コントローラ２０は、装備された演算装置にプログラムが組み込まれることで構築された、重複排除処理部２１と、データ管理部２２と、ＮＡＳインタフェース２３と、仮想ファイルシステム２４と、データＩ／ＯＩ／Ｆ２５と、非重複ブロック格納位置判定部２６と、を備えている。また、重複排除コントローラ２０は、装備された記憶装置に記憶された判定選択ポリシー２７を有している。
【００１９】
ＮＡＳインタフェース２３は、ＮＡＳプロトコル（CIFS, NFS, etc）による接続を受け付けるインタフェースである。ここでは、ストレージシステム１自体がＮＡＳ（Network Attached Storage）であり、他のバックアップサーバやアーカイブサーバから記憶対象となるデータを受け付ける。
【００２０】
重複排除処理部２１（重複判定部）は、入力データを固定長または可変長のブロックに分割し、ブロックごとにすでに保存されているかどうかを、データ管理部２２を参照して判定する。具体的に、重複排除処理部２１は、ブロックが既に記憶されている重複状態である重複ブロックであるか、まだ記憶されていない非重複状態である非重複ブロックであるかを判定する。そして、
【００２１】
データ管理部２２は、各ブロックのハッシュ値を元に参照されるハッシュテーブルで、各ブロックの格納先アドレスを管理する。
【００２２】
仮想ファイルシステム２４は、ＮＡＳプロトコルで入出力されるデータと、実際に格納されているブロック単位のデータとを紐づけて、リクエストのあるデータを提供する。
【００２３】
非重複データ格納先デバイス判定部２６（格納先判定部）は、ストレージ内に存在しない非重複状態である非重複ブロックを、階層化ストレージシステム３０のどのデバイスに格納するかを決定し、階層化ストレージシステム３０へ要求する。
【００２４】
データI/O I/F２５は、階層化ストレージシステム３０へデータの受け渡しを行うインタフェースである。例えば、インタフェースは、FC（Fibre Channel）,iSCSIなどで実現されている。
【００２５】
判定選択ポリシー２７は、非重複ブロックの格納先の決定方法について定義するテーブルである。このポリシーは、外部からの書き換えが可能である。
【００２６】
また、図２に示すように、階層化ストレージシステム３０は、装備された演算装置にプログラムが組み込まれることで構築された、データＩ／ＯＩ／Ｆ３１と、既存データ格納先取得Ｉ／Ｆ３２と、新規データ格納先リクエスト受付Ｉ／Ｆ３３と、階層化管理部３４と、を備えている。階層化管理部３４は、さらに、データ格納Ｉ／Ｏ管理部３５と、データ格納先リクエスト部３６と、データ格納先変更部３７と、を備えている。
【００２７】
また、階層化ストレージシステム３０は、データを格納する性能の異なる複数の記憶装置であるデバイス４１，４２，４３を備えている。例えば、デバイスは、記憶領域に対するアクセス速度が、所定の基準により高速、中速、低速に分けられている記憶装置である。
【００２８】
データI/O I/F３１は、重複排除コントローラ２０とのデータの受け渡しを行うインタフェースである。
【００２９】
階層化管理部３４（データ格納先制御部）は、複数のデバイスに分散して格納されているデータを管理し、アクセス頻度などをもとにデータの移動を行う機能を有する。具体的に、階層化管理部３４を構成するデータ格納I/O管理部３５は、上位からI/Oのリクエストが来たときに、上位から来たアドレスと、実際に格納されているデバイスのアドレスとの変換を行い、データの受け渡しをする。例えば、新規のデータの書き込みリクエストがきた場合、「データの格納先リクエスト」に対し、書き込まれるデータに対して格納先デバイスの指定があるかを問い合わせ、指定がある場合はそのデバイスに格納する。また、すでに書き込まれているデータの格納先デバイスの番号を返却する機能を有する。
【００３０】
階層化管理部３４を構成するデータ格納先リクエスト部３６は、重複排除コントローラ２０側から、格納先デバイスを指定するリクエストを受ける。階層化管理部３４を構成するデータ格納先変更部３７は、格納されているデータの格納先を、定期的にアクセス頻度などから判断して移動させる。
【００３１】
既存データ格納先デバイス取得I/F３２は、重複排除コントローラ２０から、アドレスとオフセットを受け取り、データ格納I/O管理部３５にそのデータが格納されているデバイス番号（高速なものから順に1〜T）を問い合わせて、値を返す。
【００３２】
新規データ格納先リクエスト受付I/F部３３は、重複排除コントローラ２０から、アドレス、オフセット、格納先デバイスの番号を受け取り、データ格納先リクエスト部３６に格納する。
【００３３】
ここで、本実施形態におけるストレージシステム１である重複排除コントローラ２０と階層化ストレージシステム３０とは、データの重複記憶を排除する機能を有している。かかる重複記憶排除機能は、主に重複排除処理部２１、データ管理部２２、データ格納Ｉ／Ｏ管理部３５によって実現されるが、かかる機能の詳細について、図５乃至図６を参照して説明する。以下では、重複排除コントローラ２０と階層化ストレージシステム３０とを区別せず、ストレージシステム１による動作として説明する。なお、重複記憶排除の方法は、以下に説明する方法に限定されない。
【００３４】
まず、図５及び図６の矢印Ｙ１に示すように、ストレージシステム１が書き込み要求されたファイルＡの入力を受ける。すると、図５及び図６の矢印Ｙ２に示すように、ファイルＡを所定容量（例えば、６４ＫＢ）あるいは可変長のブロックデータＤに分割する。
【００３５】
続いて、分割されたブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（図６の矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００３６】
続いて、ファイルＡのブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが、関連付けられてＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルに登録されている。従って、格納前に算出したブロックデータＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のブロックデータＤが格納されている重複ブロックと判断できる（図６の矢印Ｙ４）。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたブロックデータＤのコンテンツアドレスＣＡとして返却する。
【００３７】
そして、返却されたコンテンツアドレスＣＡが参照する既に格納されているデータを、書き込み要求されたブロックデータＤとして使用する。つまり、書き込み要求されたブロックデータＤの格納先として、返却されたコンテンツアドレスＣＡが参照する領域を指定することで、当該書き込み要求されたブロックデータＤを記憶したこととする。これにより、書き込み要求にかかるブロックデータＤを、実際に記憶装置であるデバイス内に記憶する必要がなくなる。
【００３８】
また、書き込み要求にかかるブロックデータＤがまだ記憶されていない非重複ブロックと判断された場合には、以下のようにして書き込み要求にかかるブロックデータＤの書き込みを行う。まず、書き込み要求にかかるブロックデータＤを圧縮して、図６の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図５の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ９１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ９１に追加する。例えば、図５の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ９２）を追加する。これにより、９つの分割データ９１と、３つの冗長データ９２とにより構成される１２個のフラグメントデータからなるデータセット９０を生成する。
【００３９】
続いて、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図５に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、複数の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図６の矢印Ｙ６参照）。
【００４０】
続いて、ストレージシステム１は、上述したように格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表すコンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡを、ストレージシステム１内のファイルシステムに返却する（図６の矢印Ｙ７）。すると、ストレージシステム１は、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理する。
【００４１】
また、ブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、各ストレージノード３がＭＦＩファイルにて管理する（図６の矢印８）。このように、上記コンテンツアドレスＣＡは、ファイルを特定する情報やハッシュ値Ｈなどと関連付けられて、デバイスに格納される。
【００４２】
以上のように、本実施形態におけるストレージシステム１では、重複ブロックは、同一のデータ内容でありデバイスに記憶されている他のデータを参照することで、実際にデータを記憶することなく記憶処理を行う重複排除処理を行う。また、非重複ブロックについては、フラグメントに分割して冗長化し、複数の記憶装置に分散して記憶する。但し、本発明におけるストレージシステム１は、必ずしも上述した方法にて重複記憶を排除することに限定されず、他の方法で記憶処理を行ってもよい。
【００４３】
ここで、本発明ではさらに、上述したように書き込み要求にかかるブロックデータＤがまだ記憶されていない非重複ブロックである場合には、以下のように、格納先のデバイスを決定する処理を行う。その動作について、主に、図７の説明図、及び、図８乃至図１１のフローチャートを参照して説明する。なお、図８は、ストレージシステム全体における動作を示し、図９乃至図１０は、そのうち、ブロックの格納先を決定するときの動作を示す。
【００４４】
まず、重複排除コントローラ２０の動作について説明する。
【００４５】
重複排除コントローラ２０にファイルが入力されると、かかるファイルをバッファ領域に一時保存する（図８のステップＳ１）。そして、重複排除処理部２１が、ファイルの先頭から固定長にブロック分割し、各ブロックがすでにストレージ内に格納されているか、重複判定を行う（図８のステップＳ２）。このとき、ファイルの先頭のブロックから、上述したように重複判定を行う。なお、ブロック分割は、可変長で行ってもよい。
【００４６】
重複判定の結果、重複ブロックは、実データを記憶することなく既存のブロックを参照し、ファイルの終端でなければ、次のブロックの重複判定に進む（図９のステップＳ１１：Ｎｏ，図１０のステップＳ２８:Ｎｏ，ステップＳ２９を参照）。
【００４７】
一方、重複判定の結果、非重複ブロックは、格納先のデバイスを決定してから、かかるデバイスに格納する。以下、非重複ブロックの格納先となるデバイスを決定する処理について詳細に説明する。
【００４８】
具体的に、非重複ブロックの格納先を決定する際には、まず、図７（Ａ）に示すように、ファイルの属性が、判定選択ポリシー２７において定義されているかどうかを参照する（図８のステップＳ３）。そして、ファイルを構成する非重複ブロックの格納先を決定するポリシーとして、本発明で設定する「本方式」を用いるか、あるいは、既に階層化ストレージシステム３０に設定されている「規定ポリシー」を用いるか、を判定する。なお、「規定ポリシー」は、例えば、初期設定として設定されていたり、アクセス頻度や空き容量などから設定された、非重複ブロックの格納先を決定するポリシーである。
【００４９】
判定選択ポリシー２７は、例えば、図３に示すように設定されている。図３において「属性」は、上位から書き込まれたファイルの属性を意味し、この属性に該当する場合の判定方式と判定基準のパラメーターを定義している。このうち、「判定方式」は、ファイルが作成された段階における、ファイルの属性による新規データとなる非重複ブロックの格納先決定の方式を示す。
【００５０】
図３の例のでは、ファイルの拡張子が「.XXX」であった場合、非重複ブロックの格納先を「本方式」で決定すべく、次の処理へと進む（図８のステップＳ４以降、図９のステップＳ１２以降）。もし満たさない場合は、「既定ポリシー」を用いて格納先を決定し、非重複ブロックを格納する（図８のステップＳ６）。
【００５１】
なお、上述したようにファイルの「属性」によって格納先決定のポリシーを定義する理由としては、高速にアクセスできた方がよいもの、低速だが安価に保存したほうがよいものと、ファイルの種類によって必要とされる特性が異なるためである。例えば、OS（Operating System）のカーネルやアプリケーションのマイナーバージョン間の差分データ（非重複ブロック）は、他の周辺にある格納済みデータ（重複ブロック）と同様に高速でアクセスすることが期待される。一方、データファイルなどは、低速だが安価なデバイスに常に格納することが許容されることがある。
【００５２】
続いて、ファイルの「属性」から、非重複ブロックの格納先を「本方式」で決定する場合には、以下のようにして非重複ブロックの格納先を決定し、図４に示すような格納先のリストを作成する（図８のステップＳ４）。以下、非重複ブロックの格納先を「本方式」で決定する場合の動作を、主に図９乃至図１０を参照して説明する。
【００５３】
まず、非重複ブロックについて（図９のステップＳ１１：Ｙｅｓ）、判定選択ポリシー２７から、ファイルの「属性」に該当する判定基準パラメーター(M,N,P)を取得する（図９のステップＳ１２）。ここで、Mは、非重複ブロックの周辺ブロック数を指定する値である。Nは、本方式を用いるときに判断する、前後Mブロック中の重複ブロック数の割合を指定する値である。Pは、ある特定の格納先デバイスに前後Mブロックの重複ブロックのP%以上が格納されているかどうかを判定するために用いる値である。
【００５４】
続いて、非重複ブロックＢ１の前後の所定範囲に位置する重複ブロックＢ２が、すでにストレージ内に存在している率（重複率）が閾値以上であるかどうかを判定する。具体的には、図７（Ｂ）に示すように、まず、非重複ブロックＢ１の前後Mブロックにおいて、重複しているブロックＢ２の数をカウントする（図９のステップＳ１３）。そして、非重複ブロックＢ１の前後Mブロックの総数である2M個のうち、重複ブロックＢ２の数の割合を求め、その割合がN%（閾値）を超えているか否かを調べる（図９のステップＳ１４）。重複ブロックの割合がN%を超えていない場合には（図９のステップＳ１４：Ｎｏ）、規定ポリシーによる設定されるデバイスを非重複ブロックＢ１の格納先として決定する（図１０のステップＳ２５）。
【００５５】
一方、重複ブロックの割合がN%を超えている場合には（図９のステップＳ１４：Ｙｅｓ）、図７（Ｃ）に示すように、非重複ブロックの前後Mブロックのうち、重複ブロックの格納先の分布を判定する（図９のステップＳ１５）。具体的には、前後Mブロックのすべての重複ブロックＢ２に対し、現在の格納先デバイスの番号を取得し、デバイスごとの数をカウントする。
【００５６】
ここで、被重複ブロック格納位置判定部２６は、重複ブロックごとに、アドレス・オフセットを階層化ストレージシステム３０の既存データ格納先I/F３２へ入力すると、そのブロックが格納されているデバイス番号（1〜T）を得られる。なお、デバイスの番号は、階層化ストレージシステム３０の各デバイス４１〜４３に、アクセス性能が高い順に、1〜T（Ｔ＝デバイスの数）の番号が割り振られている。つまり、デバイス番号1のデバイスが最も高速なデバイスであり、デバイス番号Tが最も低速なデバイスである。
【００５７】
そして、ある特定のデバイスに、非重複ブロックの前後Mブロックのうちの重複ブロックがP%（閾値）以上格納されているかどうかを調べる（図９のステップＳ１６）。ある特定のデバイスに、重複ブロックのP%が格納されていない場合には（図９のステップＳ１６：Ｎｏ）、規定ポリシーにより設定されるデバイスを非重複ブロックＢ１の格納先として決定する（図１０のステップＳ２５）。
【００５８】
一方、ある特定のデバイスに、重複ブロックのP%以上が格納されている場合には（図９のステップＳ１６：Ｙｅｓ）、図７（Ｄ）に示すように、当該重複ブロックのP%以上が格納されている格納先と、判定選択ポリシー２７とに基づいて、最終的に非重複ブロックの格納先を決定する。具体的には、重複ブロックのP%以上が格納されているデバイスの番号から、当該デバイスが、高速なデバイス（当該デバイス番号＜＝T/2）であるか、低速なデバイス（当該デバイス番号＞T/2）であるか、を判定する（図１０のステップＳ２１）。そして、判定選択ポリシー２７で定義されている、重複ブロックの格納先が高速デバイスである場合の格納位置、または、低速デバイスである場合の格納位置、を参照して、指定されている格納先に基づいて、非重複ブロックの格納位置を決定する。
【００５９】
例えば、図３の判定選択ポリシー２７の例では、「ファイルの容量がZZZバイト以上のファイル」において、「前後Mブロックの重複ブロックのP%以上が高速デバイス」の場合は（図１０のステップＳ２１：Ｙｅｓ）、高速デバイスの設定を用いる（図１０のステップＳ２２）。この場合は、重複ブロックのP%以上が格納されているデバイスを、非重複ブロックの格納先として決定する（図１０のステップＳ２４：Ｙｅｓ，ステップＳ２５）。一方、「前後Mブロックの重複ブロックのP%以上が低速デバイス」の場合は（図１０のステップＳ２１：Ｎｏ）、低速デバイスの設定を用いる（図１０のステップＳ２３）。この場合は、既定ポリシーに基づくデバイスを格納先として決定する（図１０のステップＳ２４：Ｎｏ，ステップＳ２６）。
【００６０】
続いて、上述した処理により、非重複ブロックの格納先が、重複ブロックがP%以上の格納されているデバイスを格納先として決定された場合には（図１０のステップＳ２５）、その情報を、階層化ストレージシステム３０へリクエストするリストに追加する（図１０のステップＳ２７）。例えば、図４に示すように、非重複ブロックの格納先の情報として、アドレス、オフセット、格納先のデバイス番号を、リストに追加する（ステップＳ２７）。
【００６１】
以上の処理を、ファイルの終端のブロックまで実行する（図１０のステップＳ２８）。ファイルの終端となった場合には、重複排除コントローラ２０は、階層化ストレージシステム３０のデータ格納先リクエスト受付I/F３３へ、リクエストのリストを送付する（図８のステップＳ５）。そして、データI/O I/F２５，３１を通じて、データを階層化ストレージシステム３０へ非重複ブロックを書き込む（図８のステップＳ６）。
【００６２】
次に、図１１のフローチャートを参照して、階層化ストレージシステム３０の動作について詳細に説明する。
【００６３】
まず、データI/O I/F３１にデータの書き込みリクエストが来ると、その書き込みデータについて、重複排除コントローラ２０から格納先のデバイスが指定されているかどうか、データの格納先リクエストを参照する（図１１のステップＳ３１）。重複排除コントローラ２０からリクエストにより格納先デバイスを指定されている場合（図１１のステップＳ３１：Ｙｅｓ）、リクエストのあった格納先を取得する（図１１のステップＳ３２）。例えば、図４に示すリストのアドレスから、非重複ブロックの格納位置を取得する。
【００６４】
そして、リストにより指定されたデバイス内の、上記取得した格納位置に、非重複ブロックを書き込み、アドレス変換テーブルを更新する（図１１のステップＳ３３）。なお、リクエストにより格納先デバイスが指定されていない場合は（図１１のステップＳ３１：Ｎｏ）、階層化ストレージシステム３０の既定ポリシーで指定されているデバイスに書き込み、アドレス変換テーブルを更新する（図１１のステップＳ３４）。
【００６５】
以上の本発明におけるストレージシステムでは、ファイルを構成する非重複ブロックを、同一ファイルに属する関連する重複ブロックが格納されている同一のデバイスに格納することができ、データの用途や属性に応じた適切なデバイスに格納することができる。その結果、処理遅延や記憶装置の利用効率の低下を抑制し、また、記憶装置間のデータ移動処理を抑制でき、ストレージシステムの性能の向上を図ることができる。
【００６６】
ここで、上記では、非重複ブロックの格納先を決定する際に、当該非重複ブロックにし前後する所定範囲の重複ブロックの格納先を参照したが、必ずしも非重複ブロックに前後する所定範囲の重複ブロックを用いることに限定されない。非重複ブロックに対して、他の基準によって関連すると判断される重複ブロックの格納先を参照して、当該非重複ブロックの格納先を決定してもよい。
【００６７】
なお、本発明におけるストレージシステムでは、上述した階層化ストレージシステム３０の代わりに、他の記憶装置を構成するデバイスを用いてもよい。例えば、アクセス速度が異なる複数のデータ保存が可能なデバイスを組み合わせたものとして、CPUのキャッシュ、メモリ、HDDの組み合わせ、を用いてもよい。但し、格納先となる記憶装置は、必ずしもアクセス速度が異なるものである必要はなく、同一の性能のものや他の性能が異なるものなど、いかなる記憶装置であってもよい。
【００６８】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム（図１２参照）、プログラム、データ格納方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００６９】
（付記１）
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を備え、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７０】
（付記２）
付記１に記載のストレージシステムであって、
前記記憶対象データを構成する前記非重複データ及び前記重複データは、記憶するデータを複数のブロックに分割したデータであり、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７１】
（付記３）
付記２に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する全てのブロックに対する前記重複データの割合が閾値以上である場合に、当該重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７２】
（付記４）
付記２又は３に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７３】
（付記５）
付記４に記載のストレージシステムであって、
前記格納先決定部は、分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合が、閾値以上である当該格納先となる記憶装置の性能を特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
ストレージシステム。
【００７４】
（付記６）
付記５に記載のストレージシステムであって、
前記格納先決定部は、前記重複データの格納先毎の割合が閾値以上である当該格納先となる記憶装置の性能として、当該記憶装置の記憶領域に対するアクセス速度が所定の基準により高速であるか否かを特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
ストレージシステム。
【００７５】
（付記７）
付記１乃至６のいずれかに記載のストレージシステムであって、
前記非重複データの格納先を予め設定した規定ポリシーと、前記判定結果に応じて前記非重複データの格納先を設定した判定結果ポリシーと、を記憶し、
前記格納先決定部は、前記判定結果に基づいて、前記規定ポリシーか前記判定結果ポリシーのいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７６】
（付記８）
付記７に記載のストレージシステムであって、
前記格納先決定部は、
記憶するデータの属性に応じて前記規定ポリシーを用いるか否かを決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いることを決定した場合には、当該規定ポリシーに基づいて前記非重複データの格納先を決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いないことを決定した場合には、前記判定結果に基づいて、前記規定ポリシーか前記判定結果ポリシーのいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
ストレージシステム。
【００７７】
上記発明によると、まず、記憶対象データが記憶装置に既に記憶されているか（重複データであるか）、まだ記憶されていないか（非重複データ）、を判定し、重複データは既に記憶装置に記憶されている既存のデータを参照することで、記憶処理を完了する。一方、非重複データについては、当該非重複データと関連のある重複データの格納先を判定して、その判定結果に基づいて非重複データの格納先を決定し、決定した格納先の記憶装置に非重複データを格納する。
【００７８】
このとき、例えば、非重複データに関連する重複データとしては、非重複データであるブロックの分割前のデータ配置における前後の所定範囲に位置するブロックを用いる。そして、非重複データに対する前後の所定範囲に位置するブロックのうち、当該非重複データに関連する重複データの割合や、当該重複データの格納先毎の割合に応じて、非重複データの格納先を決定する。例えば、重複データの格納先となる記憶装置のアクセス性能に応じて、非重複データの格納先を決定する。さらには、記憶するデータの属性や上記判定結果に応じて、規定ポリシーによって設定された格納先とするか、判定結果に応じた格納先とするか、を決定する。
【００７９】
これにより、本発明では、非重複データを、関連する重複データが格納されている記憶装置と同一又は関連する記憶装置に格納することができ、データの用途や属性に応じた適切な記憶装置に格納することができる。その結果、処理遅延や記憶装置の利用効率の低下を抑制し、また、記憶装置間のデータ移動処理を抑制でき、ストレージシステムの性能の向上を図ることができる。
【００８０】
（付記９）
情報処理装置に、
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定する重複判定部と、
重複していない前記記憶対象データである非重複データの格納先を決定する格納先決定部と、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納制御部と、を実現させると共に、
前記格納先決定部は、前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
ことを実現させるためのプログラム。
【００８１】
（付記１０）
記憶対象データが記憶装置に既に記憶されている重複状態であるか否かを判定し、
重複していない前記記憶対象データである非重複データの格納先を決定し、
前記非重複データは、前記決定した格納先となる記憶装置に記憶し、重複している前記記憶対象データである重複データは、当該重複データと同一のデータ内容であり記憶装置に既に記憶されている他のデータを参照して当該重複データとして用いるデータ格納処理を行うデータ格納方法であって、
前記非重複データと予め設定された基準により関連すると判断される前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８２】
（付記１１）
付記１０に記載のデータ格納方法であって、
前記記憶対象データを構成する前記非重複データ及び前記重複データは、記憶するデータを複数のブロックに分割したデータであり、
分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８３】
（付記１２）
付記１１に記載のデータ格納方法であって、
分割前における前記非重複データの位置に前後する所定範囲に位置する全てのブロックに対する前記重複データの割合が閾値以上である場合に、当該重複データの格納先を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８４】
（付記１３）
付記１１又は１２に記載のデータ格納方法であって、
分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合を判定し、当該判定結果に基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８５】
（付記１４）
付記１３に記載のデータ格納方法であって、
分割前における前記非重複データの位置に前後する所定範囲に位置する前記重複データの格納先毎の割合が、閾値以上である当該格納先となる記憶装置の性能を特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
データ格納方法。
【００８６】
（付記１５）
付記１４に記載のデータ格納方法であって、
前記重複データの格納先毎の割合が閾値以上である当該格納先となる記憶装置の性能として、当該記憶装置の記憶領域に対するアクセス速度が所定の基準により高速であるか否かを特定し、当該特定した記憶装置の性能を前記判定結果として、当該判定結果に基づいて前記非重複データの格納先を決定する、
データ格納方法。
【００８７】
（付記１６）
付記１０乃至１５のいずれかに記載のデータ格納方法であって、
前記判定結果に基づいて、前記非重複データの格納先を予め設定した規定ポリシーか、前記判定結果に応じて前記非重複データの格納先を設定した判定結果ポリシー、のいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８８】
（付記１７）
付記１６に記載のデータ格納方法であって、
記憶するデータの属性に応じて前記規定ポリシーを用いるか否かを決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いることを決定した場合には、当該規定ポリシーに基づいて前記非重複データの格納先を決定し、
記憶するデータの属性に応じて前記規定ポリシーを用いないことを決定した場合には、前記判定結果に基づいて、前記規定ポリシーか前記判定結果ポリシーのいずれを用いるか決定し、決定されたポリシーに基づいて、前記非重複データの格納先を決定する、
データ格納方法。
【００８９】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９０】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００９１】
１  ストレージシステム
２  アクセスノード
３  ストレージノード
２０  重複排除コントローラ
２１  重複排除処理部
２２  データ管理部
２３  NASインタフェース
２４  仮想ファイルシステム
２５  データI/O I/F
２６  非重複ブロック格納位置判定部
２７  判定選択ポリシー
３０  階層化ストレージシステム
３１  データI/O I/F
３２  既存データ格納先取得I/F
３３  新規データ格納先リクエストI/F
３４  階層化管理部
３５  データ格納I/F管理部
３６  データ格納先リクエスト部
３７  データ格納先変更部
４１  高速デバイス
４２  中速デバイス
４３  低速デバイス
１００  ストレージシステム
１０１  重複判定部
１０２  格納先決定部
１０３  データ格納制御部
１１０  記憶装置
【図１】
2015170345.tif 000003
【図２】
2015170345.tif 000004
【図３】
2015170345.tif 000005
【図４】
2015170345.tif 000006
【図５】
2015170345.tif 000007
【図６】
2015170345.tif 000008
【図７】
2015170345.tif 000009
【図８】
2015170345.tif 000010
【図９】
2015170345.tif 000011
【図１０】
2015170345.tif 000012
【図１１】
2015170345.tif 000013
【図１２】
2015170345.tif 000014