(57)【要約】【課題】データ量削減技術と、自動階層管理機能を組み合わせて適用することを目的とする。【解決手段】プロセッサと、記憶媒体を有し、データを階層管理して格納するストレージシステムにおいて、データを格納する記憶領域を有する第１の記憶層と、第１の記憶層の記憶領域に格納されたデータの格納する領域を変更して格納する記憶領域を有する第２の記憶層と、を有し、プロセッサは、第１の記憶層のデータに対するＩ／Ｏ量を算出し、Ｉ／Ｏ量に基づいてデータを格納する階層を決定し、決定した階層に応じた記憶媒体に第２の記憶層に格納したデータを物理的に格納する。【選択図】図１
2020052919.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、記憶媒体を有し、データを階層管理して格納するストレージシステムにおいて、
データを格納する記憶領域を有する第１の記憶層と、
前記第１の記憶層の記憶領域に格納されたデータを格納する領域を変更して格納する記憶領域を有する第２の記憶層と、
を有し、
前記プロセッサは、
前記第１の記憶層のデータに対するＩ／Ｏ量を算出し、前記Ｉ／Ｏ量に基づいて前記データを格納する前記階層を決定し、
前記決定した階層に応じた記憶媒体に前記第２の記憶層に格納したデータを物理的に格納する
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、
前記第２の記憶層は、前記第１の記憶層に格納されたデータのデータ量を変更して格納する
ことを特徴とするストレージシステム。
【請求項３】
請求項２に記載のストレージシステムにおいて、
前記データ量の変更は、データ量削減であるデータ圧縮、暗号化またはデータ重複排除の少なくとも一つを含む
ことを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムにおいて、
前記第１の記憶層では、上書き方式にてデータが格納され、
前記第２の記憶層では、追い書き方式にてデータが格納される
ことを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムにおいて、
前記第１の記憶層では、前記記憶領域は階層に分かれておらず、
前記第２の記憶層では、前記記憶領域は階層に分かれている
ことを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムにおいて、
前記Ｉ／Ｏ量に基づいて前記データを格納する前記階層を変更可能であり、
前記データの階層が変更された場合に、
前記第１の記憶層では、前記データの格納位置が変更されず、
前記第２の記憶層では、前記データの格納位置が変更され、
前記データを物理的に格納する前記記憶媒体が変更される
ことを特徴とするストレージシステム。
【請求項７】
請求項６に記載のストレージシステムにおいて、
データ圧縮、暗号化またはデータ重複排除の少なくとも一つを含むデータ量削減を行って前記記憶媒体に格納することが可能であり、
前記データの階層が変更された場合に、データ量削減の適用要否が変更可能であり、
前記データ量削減の適用または非適用に変更して処理を行って前記データを前記記憶媒体間で移動させる
ことを特徴とするストレージシステム。
【請求項８】
請求項１に記載のストレージシステムにおいて、
前記記憶領域を有する第１の記憶層の記憶領域は、外部の計算機に提供され、
前記外部の計算機がアクセスした前記第１の記憶層の位置に基づいて、前記第１の記憶層のデータのＩ／Ｏ量を算出する
ことを特徴とするストレージシステム。
【請求項９】
請求項２に記載のストレージシステムにおいて、
前記データ量の変更は、データ重複排除であり、前記第２の記憶層のデータは、前記第１の記憶層の複数のデータと対応付けられており、
前記第１の記憶層の複数のデータにかかる階層のうち、前記Ｉ／Ｏ量が大きい方に対応する階層に基づいて、前記第２の記憶層におけるデータの階層を決定する
ことを特徴とするストレージシステム。
【請求項１０】
プロセッサと、記憶媒体を有するストレージシステムを用いて、データを階層管理して格納するデータ記憶方法において、
前記ストレージシステムは、
データを格納する記憶領域を有する第１の記憶層と、
前記第１の記憶層の記憶領域に格納されたデータの格納する領域を変更して格納する記憶領域を有する第２の記憶層と、
を有し、
前記プロセッサは、
前記第１の記憶層のデータに対するＩ／Ｏ量を算出し、前記Ｉ／Ｏ量に基づいて前記データを格納する前記階層を決定し、
前記決定した階層に応じた記憶媒体に前記第２の記憶層に格納したデータを物理的に格納する
ことを特徴とするデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶階層を有するストレージシステムの自動階層制御に関する。
【背景技術】
【０００２】
ストレージシステムは、一般的に１以上のストレージ装置を含む。１以上のストレージ装置の各々は、一般的に記憶媒体として例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。ストレージシステムが、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）といったネットワーク経由で、１又は複数の上位装置（例えば、ホスト計算機）からアクセスされる。一般的にストレージ装置は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓ）技術に従う高信頼化方法を用いることで信頼性を向上している。
【０００３】
ストレージシステムの記憶媒体に掛かるコストを削減する方法として、データ量を削減する圧縮技術や重複排除技術が普及している。特許文献１には、ホスト計算機からのデータ書き込み速度を維持しながら、データを圧縮させることができる情報システムが開示されている。特許文献１によれば、ストレージ装置においてホスト計算機からのデータ書き込みを受け付ける第１ボリュームと、第１ボリューム上のデータを圧縮して管理する第２ボリュームを提供する。ホスト計算機から第１ボリュームに対するデータ書き込みを終えると、ストレージ装置はホスト計算機に対して書き込み処理が完了したとして応答を返す。その後ストレージ装置は、ホスト計算機からのデータ書き込みとは非同期的な契機にデータを圧縮して第２ボリュームに格納する。
【０００４】
一方、ストレージシステムの記憶媒体の多様化により、データを適切な記憶媒体に自動的に格納する自動階層配置機能が普及している。この機能により、高頻度にアクセスされるデータを高速なＳＳＤ、アクセスの少ないデータをＳＳＤより低速だが安価で大容量なＨＤＤに格納することで記憶媒体に掛かるコストを削減することができる。特許文献２には、データのアクセス頻度に応じて階層配置を管理可能な情報システムが開示されている。特許文献２によれば記憶領域毎に長周期と短周期の各周期中に発生したＩ／Ｏを数えることで、長周期と短周期のそれぞれの観点で規定された負荷指標値に基づく判定を行い、プロモーション（上位階層へのデータ移動）やデモーション（下位階層へのデータ移動）を実施する。
【０００５】
前述したデータ書き込み速度を維持しながら、データを圧縮させる機能とデータのアクセス頻度に応じて階層配置を管理する機能を組み合わせることで、記憶媒体のコスト削減に加え、上位階層の記憶媒体に格納できるデータ量の増加によるＩ／Ｏ性能の改善が期待できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００９／０１４４４９６号明細書
【特許文献２】米国特許出願公開第２０１２／０２４６３８６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
圧縮や重複排除などのデータ量の削減技術を用いると、ホスト計算機からストレージシステムに書き込まれるデータサイズと記憶媒体に書き込まれるデータサイズに削減量に応じた差が生じる。そのため、記憶媒体の領域を効率的に利用する方法として、削減後のデータを前詰めで追記する追い書き方式（例えば、Ｌｏｇ−Ｓｔｒｕｃｔｕｒｅｄ  Ｓｔｏｒａｇｅ）が広く用いられている。追い書き方式ではデータが更新されると新しく書き込まれたデータは、更新前のデータとは異なる位置に追記され、更新前のデータは無効な領域（ガベージ）となる。
【０００８】
前述の追い書き方式に対して自動階層配置機能を適用すると、ガベージの発生によって記憶領域毎に集計したＩ／Ｏ数が無効になり、アクセス頻度情報が実際の値から乖離する。また、更新されたデータは新しい領域に記録され、過去のアクセス頻度情報を引き継がないため、当該データに適した階層配置を判定することができない。更新されたデータの記録領域にアクセス頻度情報を引き継ぐには、追記されるデータの管理単位毎にＩ／Ｏ数を集計する必要があるが、従来例で扱われる数キロバイトから数百キロバイトの単位でＩ／Ｏ数を集計すると管理情報が増大してしまう。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサと、記憶媒体を有し、データを階層管理して格納するストレージシステムにおいて、データを格納する記憶領域を有する第１の記憶層と、第１の記憶層の記憶領域に格納されたデータの格納する領域を変更して格納する記憶領域を有する第２の記憶層と、を有し、プロセッサは、第１の記憶層のデータに対するＩ／Ｏ量を算出し、Ｉ／Ｏ量に基づいてデータを格納する階層を決定し、決定した階層に応じた記憶媒体に第２の記憶層に格納したデータを物理的に格納する。
【発明の効果】
【００１０】
本発明の一態様によれば、データ量削減技術と自動階層配置機能を組み合わせることが可能となる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１を示し、ストレージシステムが実行する、追い書き方式における階層の再配置の手順を示す図である。
【図２】本発明の実施例１を示し、ストレージ装置の構成を示すブロック図である。
【図３】本発明の実施例１を示し、ストレージ装置が保持するＶＯＬ管理テーブルの構成の一例を示す図である。
【図４】本発明の実施例１を示し、ストレージ装置が保持するプール構成管理テーブルの構成の一例を示す図である。
【図５】本発明の実施例１を示し、ストレージ装置が保持するＲＡＩＤ構成管理テーブルの構成の一例を示す図である。
【図６】本発明の実施例１を示し、ストレージ装置が保持するプール割当管理テーブルの構成の一例を示す図である。
【図７】本発明の実施例１を示し、ストレージ装置が保持するドライブ割当管理テーブルの構成の一例を示す図である。
【図８】本発明の実施例１を示し、ストレージ装置によって管理される論理記憶階層の構成の一例を示す図である。
【図９】本発明の実施例１を示し、ストレージ装置が保持する階層管理テーブルの構成の一例を示す図である。
【図１０】本発明の実施例１を示し、ストレージ装置におけるキャッシュ領域割当の構成の一例を示す図である。
【図１１】本発明の実施例１を示し、ストレージ装置が実行するリード処理を示すフローチャートである。
【図１２】本発明の実施例１を示し、ストレージ装置が実行するライト処理を示すフローチャートである。
【図１３】本発明の実施例１を示しストレージ装置が実行するデステージ処理を示すフローチャートである。
【図１４】本発明の実施例１を示し、ストレージ装置が実行するデータ量削減処理を示すフローチャートである。
【図１５】本発明の実施例１を示し、ストレージ装置が実行する階層再配置処理を示すフローチャートである。
【図１６】本発明の実施例１を示し、ストレージ装置が実行するガベージコレクション処理を示すフローチャートである。
【図１７】本発明の実施例２を示し、ストレージ装置の記憶領域の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて、本発明の実施例を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
【００１３】
さらに、本発明の実施形態は、後述するように、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェアで実装してもよいし、又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【００１４】
以下では「プログラム」を主語（処理主体）として本発明の実施形態における各処理について説明を行う場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部又は全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００１５】
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも１つを含んでよい。ユーザインターフェース部は、１以上のＩ／Ｏデバイス（例えば入力デバイス（例えばキーボード及びポインティングデバイス）と出力デバイス（例えば表示デバイス））と表示用計算機とのうちの少なくとも１つのＩ／Ｏデバイスを含んでよい。通信インターフェース部は、１以上の通信インターフェースデバイスを含んでよい。１以上の通信インターフェースデバイスは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１６】
また、以下の説明では、「メモリ部」は、１以上のメモリを含む。少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
【００１７】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１８】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１９】
また、以下ではデータ量削減手段の例としてデータ圧縮について説明するが、データ重複排除に置き換えてもよい。データ重複排除処理では、複数のデータファイルの中で、重複する部分を共有データファイルとして保持し、各データファイルを共有データファイルに関連付けることによって、保持するデータの総量を削減する。
【００２０】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号（又は要素のＩＤ（例えば識別番号））を使用することがある。例えば、複数のストレージコントローラを区別しない場合には、「ストレージコントローラ２２」と記載し、各ストレージコントローラを区別する場合には、「ストレージコントローラ１＿２２Ａ」、「ストレージコントローラ２＿２２Ｂ」のように記載する。他の要素（例えばキャッシュ領域２０３、バッファ領域２０２、割当先アドレス１１００等）も同様である。
【００２１】
また、以下の説明では、「ストレージシステム」は、１以上のストレージ装置を含む。少なくとも１つのストレージ装置は、汎用的な物理計算機であってもよい。また、少なくとも１つのストレージ装置が、仮想的なストレージ装置であってもよいし、ＳＤｘ（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ  ａｎｙｔｈｉｎｇ）を実行してもよい。ＳＤｘとしては、例えば、ＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）（仮想的なストレージ装置の一例）又はＳＤＤＣ（Ｓｏｆｔｗａｒｅ−ｄｅｆｉｎｅｄ  Ｄａｔａｃｅｎｔｅｒ）を採用することができる。
【００２２】
以下、本発明の実施例を図面に基づいて説明する。
【実施例１】
【００２３】
以下、本発明の実施例１を説明する。
【００２４】
＜追い書き方式における階層の再配置手順＞
図１は、本発明の実施例１のストレージシステム１００が実行する、追い書き方式における階層の再配置手順を示す図である。
【００２５】
ストレージシステム１００は、ホスト計算機３０及びストレージ装置１１によって構成される。ホスト計算機３０は、ネットワーク３１を介してストレージ装置１１に接続され、管理計算機（図示せず）によって管理される。
【００２６】
ストレージ装置１１は、内部に２つ以上のストレージコントローラ２２を有し、複数の論理的な記憶領域１２０１を含む１つ以上のボリューム１０００をホスト計算機３０に提供している。
【００２７】
ホスト計算機３０は、物理的な計算機でもよいし、物理的な計算機で実行される仮想的な計算機でもよい。ホスト計算機３０は、ストレージシステム１００において実行される仮想的な計算機でもよい。
【００２８】
ホスト計算機３０から、ボリューム（ＶＯＬ）１０００内の記憶領域１２０１に対してデータの書き込み（または読み出し）が行われる。アクセスの際、ホスト計算機３０はデータが格納された割当先アドレス１１００を指定することで、ストレージ装置１１がデータの論理的な格納位置を決定する。
【００２９】
ストレージコントローラ２２は、記憶領域１２０１を指定して書き込まれたデータを圧縮し、物理的なデータの格納領域であるプール１００１内にある追記領域１２０２の追記アドレス１１０１に対して圧縮後のデータを割当てる。すなわち、領域(データの位置またはサイズの一方又は両方)を変更してプール１００１に書き込む。
【００３０】
なお、追記領域１２０２に対して、パリティサイクル分のデータが割当てられると、ストレージコントローラ２２はパリティを生成する。そして、ストレージコントローラ２２は、追記領域１２０２に対応する階層（Ｔｉｅｒ）１２００に属するＲＡＩＤグループ１００２のアドレス空間１００３へ圧縮データ及びパリティを格納する。
【００３１】
この際、ホスト計算機３０からのアクセス頻度が高くなるデータを上位階層のＴｉｅｒ１＿１２００−１へ優先的に格納することによって、ストレージシステム全体の性能が向上する。
【００３２】
なお、本実施例１のストレージ装置１１の階層は、Ｔｉｅｒ１＿１２００−１の方がＴｉｅｒ２＿１２００−２に比して読み書きの速度が高速な例を示す。なお、ストレージ装置１１の階層は、速度に限定されるものではなく、レイテンシや容量または可用性などの指標で階層を構成することができる。
【００３３】
本実施例１では、ストレージシステム１００において、ホスト計算機３０からのＩ／Ｏ後にＴｉｅｒ１２００の再配置を行う場合について示す。具体例は、下記に示す通りである。
【００３４】
（Ｓ１）ストレージ装置１１は、ホスト計算機３０からネットワーク３１を介してライト命令又はリード命令を受信する。命令を受信するとストレージコントローラ２２はホスト計算機３０から要求されたライト処理又はリード処理を実行する。本実施例１ではＩ／Ｏ処理終了後に、記憶領域１２０１にデータＡ、Ｂ、Ｃが割当てられており、データＡ、Ｂ、Ｃに対応する圧縮データａ、ｂ、ｃがＴｉｅｒ２＿１２００−２を格納位置とする追記領域１２０２−２に割当てられている。
【００３５】
（Ｓ２）ストレージコントローラ２２は、ライト命令又はリード命令を受け付けるとＩ／Ｏ要求（命令）を受けた論理的な領域である記憶領域１２０１毎に、ライト及びリードそれぞれのＩ／Ｏ数をカウントする。前記従来例の自動階層配置機能では、物理的な記憶領域に対してＩ／Ｏ数を集計していたのに対し、本実施例１では論理的（または仮想的）な記憶領域１２０１に対するＩ／Ｏ数を集計する。
【００３６】
これによって、記憶領域１２０１では階層間でデータの移動の影響を受けることなく、Ｉ／Ｏ数のカウントを継続することができる。
【００３７】
（Ｓ３）ストレージコントローラ２２は、Ｉ／Ｏ数の集計時ないし周期的な契機で記憶領域１２０１毎に集計したＩ／Ｏ数から、データの格納位置に適した仮想階層配置を判定する。ストレージコントローラ２２が、データに適した仮想階層配置はＴｉｅｒ１＿１２００−１と判定し、判定時にデータが格納されている階層が別の階層Ｔｉｅｒ２＿１２００−２であった場合、仮想階層配置によりＴｉｅｒ１＿１２００−１へのデータの再配置が実行される。
【００３８】
（Ｓ４）ストレージコントローラ２２は、圧縮データａ、ｂ、ｃを再配置先のＴｉｅｒ１＿１２００−１で、対応する追記領域１２０２−１に移動させる。
【００３９】
（Ｓ５）ストレージコントローラ２２は、上記（Ｓ４）で移動させた圧縮データａ、ｂ、ｃと記憶領域１２０１内のデータＡ、Ｂ、Ｃを対応付けるように論理アドレスと物理アドレスのマッピング情報を更新する。
【００４０】
以上が、階層再配置の一例である。なお、追い書き方式は、前記従来例と同様のＬｏｇ−Ｓｔｒｕｃｔｕｒｅｄ  Ｓｔｏｒａｇｅであり、書き込みが変更差分の追記のみで実現されるファイルシステムである。
【００４１】
＜ストレージ装置＞
図２は、本発明の実施例１のストレージ装置１１の構成を示すブロック図である。ストレージ装置１１は、１以上のストレージコントローラ２２と、１以上のストレージコントローラ２２に接続された種々のドライブ２９とを有する。
【００４２】
ストレージコントローラ２２は、ホスト計算機３０との通信を行うＦＥ＿Ｉ／Ｆ（フロントエンドインターフェースデバイス）２３と、ストレージ装置間での通信を行うためのストレージＩ／Ｆ（ストレージインターフェースデバイス）２８と、装置全体を制御するプロセッサ２４と、プロセッサ２４で使用されるプログラム及び情報を格納するメモリ２５と、ドライブ２９との通信を行うＢＥ＿Ｉ／Ｆ（バックエンドインターフェースデバイス）２７、及びそれらを接続する内部ネットワーク２６を含む。
【００４３】
メモリ２５は、制御プログラムを管理するプログラム領域２０１と、データの転送及びコピーの際に一時的な保存領域であるバッファ領域２０２と、ホスト計算機３０からのライトデータ（ライト命令に応答して書き込まれるデータ）及びドライブ２９からのリードデータ（リード命令に応答して読み出されたデータ）を一時的に格納するキャッシュ領域２０３、及び、種々のテーブルを格納するテーブル管理領域２０６を有する。
【００４４】
プログラム領域２０１にロードされた制御プログラムは、プロセッサ２４によって実行され、リード処理やライト処理などを実行してストレージ装置１１の各種機能を提供する。
【００４５】
キャッシュ領域２０３は、ホスト計算機３０からのライトデータを一時的に格納する非圧縮データ格納領域２０４、及び、圧縮したデータを格納する圧縮データ格納領域２０５を有する。
【００４６】
テーブル管理領域２０６は、ＶＯＬ１０００に関する情報を保持するＶＯＬ管理テーブル２０７と、プール１００１に関する情報を保持するプール構成管理テーブル２０８と、ＲＡＩＤ構成に関する情報を保持するＲＡＩＤ構成管理テーブル２０９と、プール割当てに関する情報を保持するプール割当管理テーブル２１０と、ドライブ割当てに関する情報を保持するドライブ割当管理テーブル２１１、及び、記憶領域毎のＩ／Ｏ数やＩ／Ｏ頻度に関する情報を保持する階層管理テーブル２１２を格納する。
【００４７】
ドライブ２９は、不揮発性のデータ記憶媒体を有する装置であり、性能の異なる複数種類のドライブを含む。ドライブ２９は、例えば、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）、ＳＡＳ（Ｓｅｒｉａｌ Ａｔｔａｃｈｅｄ ＳＣＳＩ）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ Ｔｅｃｈｎｏｌｏｇｙ Ａｔｔａｃｈｍｅｎｔ）などのインターフェースを有するハードディスクドライブ、Ｉ／Ｏスループット性能及びＩ／Ｏレスポンス性能がハードディスクドライブより高いＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などによって構成される。
【００４８】
これらの複数の種類のドライブ２９を、近い性能を有するドライブ群に分類したものが階層（Ｔｉｅｒ）である。階層間の関係は性能の高低関係によって定義される。例えば、性能の高い順に（ＳＳＤなど）、Ｔｉｅｒ１からＴｉｅｒ２、３と定義する。また、使用されなくなった旧機種などを外部ストレージとして接続するケースを想定し、性能が低いことを前提とした最下位Ｔｉｅｒを定義してもよいし、ユーザが管理Ｉ／Ｆを介して外部ストレージの性能に応じた階層を設定してもよい。
【００４９】
ＳＳＤは複数のフラッシュメモリと、それらを制御するＳＳＤコントローラとを有する半導体記憶媒体であり、外観形状等はフォームファクタに限定されない。また、フラッシュメモリには、ＮＯＲやＮＡＮＤ等の不揮発性の半導体メモリを使用してよい。また、フラッシュメモリに代えて、磁気抵抗メモリであるＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）や、抵抗変化型メモリであるＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、強誘電体メモリであるＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）等の各種半導体メモリを使用してもよい。
【００５０】
ＦＥ＿Ｉ／Ｆ２３、ＢＥ＿Ｉ／Ｆ２７及びストレージＩ／Ｆ２８が、インターフェース部の一例である。メモリ２５が、メモリ部の一例である。プロセッサ２４が、プロセッサ部の一例である。
【００５１】
＜ＶＯＬ管理テーブル＞
図３は、本発明の実施例１のストレージ装置１１が保持するＶＯＬ管理テーブル２０７の構成例を示す図である。
【００５２】
ＶＯＬ管理テーブル２０７は、ＶＯＬ１０００毎にエントリを有する。各エントリは、ＶＯＬ＿ＩＤ４１と、ＶＯＬ属性４２と、ＶＯＬ容量４３及びプールＩＤ４４といった情報を格納する。以下、１つのＶＯＬ（図３の説明において「対象ＶＯＬ」）の例について説明する。
【００５３】
ＶＯＬ＿ＩＤ４１は、対象ＶＯＬのＩＤ（識別情報）である。ＶＯＬ属性４２は、対象ＶＯＬの属性（例えば、対象ＶＯＬがシンプロビジョニングを適用されるＶＯＬであるか、通常のＶＯＬであるか、また、圧縮が有効であるか否かなど）を示す。ＶＯＬ容量４３は、対象ＶＯＬの容量を示す。プールＩＤ４４は、対象ＶＯＬに関連付けられているプール１００１のＩＤである。
【００５４】
プロセッサ２４は、ＶＯＬ管理テーブル２０７のＶＯＬ属性４２を参照することで、データ圧縮を必要とするＶＯＬ１０００か否かを判定できる。例えば、ＶＯＬ属性４２が“圧縮有効”であればプロセッサ２４は、データ圧縮処理を行う。
【００５５】
＜構成管理テーブル＞
図４は、本発明の実施例１のストレージ装置１１が保持するプール構成管理テーブル２０８の構成例を示す図である。
【００５６】
プール１００１は、１以上のＲＡＩＤグループ１００２を基に構成された論理記憶領域である。プール構成管理テーブル２０８は、プール１００１毎にエントリを有する。各エントリは、プールＩＤ５１と、ＲＡＩＤグループＩＤ５２と、プール容量５３及びプール使用容量５４と、自動階層管理５５の適用有無（ＯＮ／ＯＦＦ）といった情報を格納する。以下、１つのプール（図４の説明において「対象プール」）の例について説明する。
【００５７】
プールＩＤ５１は、対象プールのＩＤである。ＲＡＩＤグループＩＤ５２は、対象プールの基になっている１以上のＲＡＩＤグループ１００２の各々のＩＤである。プール容量５３は、対象プールの容量を示す。プール使用容量５４は、対象プールのプール容量のうちＶＯＬ１０００に割り当てられている領域の総量を示す。自動階層管理５５は対象プールが自動階層管理の対象か否かを示す。
【００５８】
図５は、本発明の実施例１のストレージ装置１１が保持するＲＡＩＤ構成管理テーブル２０９の構成例を示す図である。
【００５９】
ＲＡＩＤ構成管理テーブル２０９は、ＲＡＩＤグループ１００２毎にエントリを有する。各エントリは、ＲＡＩＤグループＩＤ６１と、ＲＡＩＤレベル６２と、ドライブＩＤ６３と、ドライブ種別６４と、容量６５及び使用容量６６といった情報を格納する。以下、１つのＲＡＩＤグループ（図５の説明において「対象ＲＡＩＤグループ」）の例について説明する。
【００６０】
ＲＡＩＤグループＩＤ６１は、対象ＲＡＩＤグループのＩＤである。ＲＡＩＤレベル６２は、対象ＲＡＩＤグループに適用されるＲＡＩＤアルゴリズムの種別を示す。ドライブＩＤ６３は、対象ＲＡＩＤグループを構成する１以上のドライブ２９の各々のＩＤである。ドライブ種別６４は、対象ＲＡＩＤグループを構成するドライブの種別（例えばＨＤＤかＳＳＤか）を示す。容量６５は、対象ＲＡＩＤグループの容量を示す。使用容量６６は、対象ＲＡＩＤグループの容量のうちの使用されている容量を示す。
【００６１】
＜割当管理テーブル＞
図６は、本発明の実施例１のストレージ装置１１が保持するプール割当管理テーブル２１０の構成例を示す図である。
【００６２】
プール割当管理テーブル２１０は、ＶＯＬアドレス（ＶＯＬ内のスロットを示すアドレス）毎にエントリを有する。各エントリは、ＶＯＬ＿ＩＤ７１と、ＶＯＬアドレス７２と、プールＩＤ７３と、プールアドレス７４と、圧縮前サイズ７５と、圧縮後サイズ７６、及びキュー状態７７といった情報を格納する。以下、１つのＶＯＬアドレス（図６の説明において「対象ＶＯＬアドレス」）の例について説明する。
【００６３】
ＶＯＬ＿ＩＤ７１は、対象ＶＯＬアドレスによって識別されるスロットが属するＶＯＬのＩＤである。ＶＯＬアドレス７２は、対象ＶＯＬのアドレスである。プールＩＤ７３は、対象ＶＯＬアドレスに割り当てられている記憶領域を含むプール１００１のＩＤである。
【００６４】
プールアドレス７４は、対象ＶＯＬアドレスに割り当てられている記憶領域のアドレス（プール１００１に属するアドレス）である。圧縮前サイズ７５は、対象プールアドレスを指定したライト命令に従うデータの圧縮前のサイズを示す。圧縮後サイズ７６は、対象プールアドレスを指定したライト命令に従うデータの圧縮後のサイズを示す。
【００６５】
キュー状態７７は、データの格納位置を示しており、キャッシュ領域２０３上のみにデータが存在すると“Ｄｉｒｔｙ”、ドライブ２９へ書き出し済みだと“Ｃｌｅａｎ”、ドライブのみにデータが存在すると“キャッシュＭｉｓｓ”のように表す。
【００６６】
なお、上記スロットは、ストレージコントローラ２２が利用する記憶領域の管理単位のひとつである。本実施例１のストレージコントローラ２２は、数キロバイトのチャンクと、３２個のチャンクを纏めたスロットと、４２ＭＢ単位でスロットを管理するページの３つの単位で記憶領域を管理する。
【００６７】
図７は、本発明の実施例１のストレージ装置１１が保持するドライブ割当管理テーブル２１１の構成例を示す図である。
【００６８】
ドライブ割当管理テーブル２１１は、プールアドレス毎にエントリを有する。各エントリは、プールＩＤ８１と、プールアドレス８２と、ＲＡＩＤグループＩＤ８３と、ドライブＩＤ８４及びドライブアドレス８５といった情報を格納する。以下、１つのプールアドレス（図７の説明において「対象プールアドレス」）の例について説明する。
【００６９】
プールＩＤ８１は、対象プールアドレスが属するプール１００１のＩＤである。プールアドレス８２は、対象プールアドレスである。ＲＡＩＤグループＩＤ８３は、対象プールアドレスが示す記憶領域の基になっているＲＡＩＤグループのＩＤである。
【００７０】
ドライブＩＤ８４は、対象プールアドレスが示す記憶領域の基になっているドライブ２９のＩＤである。ドライブアドレス８５は、対象プールアドレスに対応したドライブアドレスである。
【００７１】
＜論理記憶階層＞
図８は、本発明の実施例１のストレージ装置１１によって管理される論理記憶階層の構成例を示す図である。
【００７２】
ＶＯＬ１０００は、ホスト計算機３０に提供される。また、コピー処理又は重複排除処理によって、ＶＯＬ１０００内の複数の論理データの管理単位（スロット）から１つのプールアドレスを指すことがあり、複数のＶＯＬのスロットから一つのプールアドレスを指すこともある。
【００７３】
図８の例では、異なる２つのスロット（ＶＯＬアドレス）１１０２及び１１０３が、同一のプールアドレス１１０５−２を指している。なお、ＶＯＬ１０００からプール１００１の割当ては、プール割当管理テーブル２１０を基に管理される。また、プール１００１からアドレス空間１００３（すなわちＲＡＩＤグループ１００２を構成する複数のドライブ２９が提供する複数のアドレス空間）への割当ては、ドライブ割当管理テーブル２１１を基に管理される。
【００７４】
＜階層管理テーブル＞
図９は、本発明の実施例１のストレージ装置１１が保持する階層管理テーブル２１２の構成例を示す図である。
【００７５】
階層管理テーブル２１２は、記憶領域１２０１（ページ：複数のスロットを含むアドレス範囲）毎にエントリを有する。各エントリは、ＶＯＬ＿ＩＤ９１と、記憶領域ＶＯＬアドレス９２と、ライトＩ／Ｏ数９３と、リードＩ／Ｏ数９４と、Ｉ／Ｏ頻度９５及び仮想階層配置９６といった情報を格納する。以下、１つの記憶領域ＶＯＬアドレス（図９の説明において「対象ＶＯＬアドレス」）の例について説明する。
【００７６】
ＶＯＬ＿ＩＤ９１は、対象ＶＯＬアドレスによって識別されるページが属するＶＯＬのＩＤである。記憶領域ＶＯＬアドレス９２は、対象ＶＯＬアドレスである。ライトＩ／Ｏ数９３は、対象ＶＯＬアドレスを指定してライトされた回数の単位時間当たりの集計数を示す。リードＩ／Ｏ数９４は、対象ＶＯＬアドレスを指定してリードされた回数の単位時間当たりの集計数を示す。
【００７７】
Ｉ／Ｏ頻度９５は、ライトＩ／Ｏ数９３とリードＩ／Ｏ数９４から所定の計算式で算出した単位時間当たりのＩ／Ｏ負荷の度数を示す。例えば、ライトＩ／Ｏ数９３に係数１、リードＩ／Ｏ数９４に係数２を掛けた値の合計値を、Ｉ／Ｏ頻度９５として算出すればよい。なお、Ｉ／Ｏ頻度９５の算出については、これに限定されるものではなく、平均値などの統計的手法により算出してもよい。
【００７８】
仮想階層配置９６は、ストレージコントローラ２２がＩ／Ｏ頻度９５から判定したデータの格納に適する階層配置を示す。Ｉ／Ｏ頻度９５の値が高ければ上位階層であるＴｉｅｒ＿１（１２００−１）となり、Ｉ／Ｏ頻度９５の値が低ければ下位階層であるＴｉｅｒ＿２（１２００−２）となる。なお、Ｉ／Ｏ頻度９５の高低はソート結果から所定のページ数を高いＩ／Ｏ頻度９５のページとして判定してもよいし、任意の閾値を用いて判定してもよい。また、上位階層へ配置できるページ数の上限はデータの圧縮率に依存することから、プール割当管理テーブル２１０の圧縮後サイズ７６やＲＡＩＤ構成管理テーブル２０９の使用容量６６から導出してもよい。
【００７９】
図１０は、本発明の実施例１のストレージ装置１１におけるキャッシュ領域割当の構成例を示す図である。
【００８０】
キャッシュ領域２０３は、ＶＯＬ１０００に対応した仮想的なアドレス空間である非圧縮データを格納する記憶領域１２０１−１及び１２０１−２と、プールアドレスに対応した圧縮データを格納する追記領域１２０２−１及び１２０２−２をストレージコントローラ２２へ提供している。
【００８１】
ホスト計算機３０からストレージコントローラ２２に対するライト命令によって、ホスト計算機３０が指定するＶＯＬアドレスに対応する記憶領域１２０１が割当てられる。ストレージコントローラ２２は、データを圧縮すると圧縮したデータを、キャッシュ領域２０３内のプールアドレスに対応する追記領域１２０２に格納する。その際、追記領域１２０２はＶＯＬアドレスに対応したページの階層管理テーブル２１２における仮想階層配置９６から判定され、追記領域１２０２−１もしくは１２０２−２に格納される。
【００８２】
図１０の例では、記憶領域１２０１−１にライトされたデータが追記領域１２０２−１を指し、記憶領域１２０１−２にライトされたデータが追記領域１２０２−２を指している。なお、ＶＯＬアドレスとプールアドレスの割当ては、プール割当管理テーブル２１０で管理される。追記領域１２０２では、領域内に追記されたデータ量がパリティサイクルのサイズに達すると、プロセッサ２４を介して記憶領域１２０１とは対応しないパリティ１１０４が生成される。
【００８３】
以下、本実施例１で行われる処理の例を説明する。
【００８４】
＜リード処理＞
図１１は、本発明の実施例１のストレージ装置１１が実行するリード処理を示すフローチャートである。
【００８５】
リード処理は、ホスト計算機３０からネットワーク３１を介してストレージ装置１１がリード命令を受けた場合に開始される。リード命令では、例えば、仮想ＩＤ（例えば、仮想ＶＯＬ＿ＩＤ）と、アドレス、及びデータサイズが指定される。
【００８６】
ステップＳ１２０１で、プロセッサ２４は、リード命令から特定されるスロットの排他を確保する。なお、スロットの排他確保時に他の処理がスロットの排他を確保している場合、プロセッサ２４は、一定の時間待機してから、ステップＳ１２０１を行う。なお、排他の確保は、当該領域（スロット）に対するアクセスが禁止されることを示す。
【００８７】
ステップＳ１２０２で、プロセッサ２４は、リードデータがキャッシュ領域２０３に存在するか否かを判定する。ステップＳ１２０２の判定結果が真（ＹＥＳ）の場合、ステップＳ１２０４に進む。ステップＳ１２０２の判定結果が偽（ＮＯ）の場合、プロセッサ２４は、Ｓ１２０３で、ＲＡＩＤグループからリードデータをバッファ領域２０２に転送する。
【００８８】
なお、この際、プロセッサ２４は、ホスト計算機３０が指定したＶＯＬ＿ＩＤとＶＯＬアドレスから、プール割当管理テーブル２１０のプールＩＤ７３と、プールアドレス７４及び圧縮後サイズ７６を特定し、ドライブ割当管理テーブル２１１からドライブＩＤ８４及びドライブアドレス８５を参照し、データの格納場所及びデータサイズを特定する。
【００８９】
ステップＳ１２０４で、プロセッサ２４はバッファ領域２０２上のリードデータが圧縮されているか否かを圧縮後サイズ７６から判定し、圧縮済みのデータであればステップＳ１２０５において伸長し、圧縮データで無い場合はステップＳ１２０５をスキップする。
【００９０】
ステップＳ１２０６で、プロセッサ２４はバッファ領域２０２上のリードデータをホスト計算機３０に転送する。ホスト計算機３０は、ステップＳ１２０６のデータ転送が完了した時点でリード処理が終了したと判定する。
【００９１】
その後、プロセッサ２４は、ステップＳ１２０７で、確保していたスロットの排他を解除する。ステップＳ１２０７の完了後、プロセッサ２４はリード処理が完了したと判定してステップＳ１２０８においてリード対象のスロットが属する階層管理テーブル２１２内の記憶領域ＶＯＬアドレス９２を特定し、リードＩ／Ｏ数９４をカウントアップして処理を終了する。
【００９２】
＜ライト処理＞
図１２は、本発明の実施例１のストレージ装置１１が実行するライト処理を示すフローチャートである。
【００９３】
ライト処理は、ホスト計算機３０からストレージ装置１１がライト命令を受信した場合に開始される。なお、以下の説明では、例えば、複数のストレージコントローラ２２を区別するためにストレージコントローラ１＿２２Ａ、ストレージコントローラ２＿２２Ｂのように記載する。また、プロセッサ２４をプロセッサ２４Ａと記載するなど、ストレージコントローラ１＿２２Ａ及びストレージコントローラ２＿２２Ｂに属するものをそれぞれ参照符号に付した「Ａ」及び「Ｂ」によって区別する。
【００９４】
ホスト計算機３０からのライト命令には、データの割当て（格納）先アドレスが含まれている。ストレージ装置１１は、ステップＳ１３０１において割当先アドレス１１００が示すスロットの排他を確保する。なお、スロットの排他の確保の後に、プロセッサ２４Ａは、データのライト先とするキャッシュ領域２０３Ａにスロットを割当てる。
【００９５】
ステップＳ１３０２で、プロセッサ２４Ａは、ホスト計算機３０に対してライト処理の準備ができたことを示す「Ｒｅａｄｙ」を応答する。プロセッサ２４Ａは、「Ｒｅａｄｙ」を受信したホスト計算機３０から、ライトデータを受け付ける。
【００９６】
プロセッサ２４Ａは、ステップＳ１３０３において受け付けたライトデータを、スロットを割当てたキャッシュ領域２０３Ａへ格納する。ステップＳ１３０４において、ストレージコントローラ１＿２２Ａからストレージコントローラ２＿２２Ｂに対してキャッシュ領域２０３Ａに格納したライトデータを転送し、キャッシュ領域２０３Ｂに格納することで二重化を行う。
【００９７】
ステップＳ１３０５において、プロセッサ２４Ａは、プール割当管理テーブル２１０のキュー状態７７を更新する。なお、本ケースにおいてライトデータは未だ圧縮されていない。そのため、データのライト先として割当てられたスロットに対応する圧縮後サイズ７６の値は無い。また、キュー状態７７はドライブ２９への書き出し処理であるデステージ処理を待つ“Ｄｉｒｔｙ”状態としてデータがキャッシュ領域２０３Ａ及びキャッシュ領域２０３Ｂに留まる。
【００９８】
二重化とマッピング情報の更新が完了した後、ステップＳ１３０６においてストレージ装置１１から、ネットワーク３１を介してホスト計算機３０に対してライト処理が完了したことを示す完了応答を返信する。完了応答を返信すると、ステップＳ１３０７においてストレージ装置１１は確保していたスロットの排他を解放する。
【００９９】
ステップＳ１３０８において、プロセッサ２４Ａは、ＶＯＬ管理テーブル２０７の内、ライト対象となったＶＯＬ−ＩＤ４１に対応するＶＯＬ属性４２を参照して、データ削減の有無を判定する。
【０１００】
プロセッサ２４Ａは、ＶＯＬ属性４２がデータ削減無効かつ、プール構成管理テーブル２０８における自動階層管理５５がＯＮの場合、特許文献２で述べられている集計方法による従来の自動階層管理機能によって階層を決定する。ステップＳ１３１１において、プロセッサ２４Ａは、決定した階層へのデステージ処理を実行する。
【０１０１】
ステップＳ１３０８において、ＶＯＬ属性４２がデータ削減有効の場合、プロセッサ２４Ａは、ステップＳ１３０９でスロットに対応する階層管理テーブル２１２内の記憶領域ＶＯＬアドレス９２を特定し、ライトＩ／Ｏ数９３をカウントアップする。次に、ステップＳ１３１０においてデータ量削減処理が実行される。
【０１０２】
＜デステージ処理＞
図１３は本発明の実施例１のストレージ装置１１が実行するデステージ処理を示すフローチャートである。
【０１０３】
デステージ処理は、ホスト計算機３０からストレージ装置１１へのライト命令が完了した後、図１２のステップ１３１１で実行される。なお、デステージ処理は、ライト命令が完了した後に非同期的に行ってもよい。また、デステージ処理はライト命令を契機として開始されてもよいし、周期的な起動や、キャッシュ領域２０３の消費量などから起動の要否を判定してもよい。デステージ処理の対象データは、データ削減が無効であれば記憶領域１２０１から選択され、データ削減が有効であれば追記領域１２０２から選択される。
【０１０４】
デステージ処理が開始されると、プロセッサ２４Ａは、ステップＳ１４０１においてキャッシュ領域２０３上のデステージ処理の対象範囲に対してスロットの排他を確保する。なお、データ削減が無効の場合、従来から追い書き方式を用いないことから連続領域への書き込み（シーケンシャルライト）以外では、デステージ先のドライブ２９の格納位置は不連続になる。そのため、ステップＳ１４０２のパリティ生成において、プロセッサ２４Ａが、パリティ計算に必要なデータをドライブ２９から読み出す処理が発生する。
【０１０５】
一方、データ削減が有効な場合、追い書き方式を用いることからパリティサイクル分のデータが並ぶデータ列（ストライプ列）からパリティが生成される。ステップＳ１４０３で、プロセッサ２４Ａは、対象のデータ列及び生成したパリティデータをドライブ２９に書き出す。
【０１０６】
ステップＳ１４０４において、プロセッサ２４Ａは、プール割当管理テーブル２１０のキュー状態７７を更新する。なお、本ケースにおいて、キュー状態７７が“Ｃｌｅａｎ”に更新される。ステップＳ１４０５で、プロセッサ２４Ａは、デステージされた範囲のスロットの排他を解放し、処理を終了する。
【０１０７】
＜データ量削減処理＞
図１４は本発明の実施例１のストレージ装置１１が実行するデータ量削減処理を示すフローチャートである。
【０１０８】
データ量削減処理は、図１２のステップ１３１０のように、ライト命令の完了を契機として開始されてもよいし、周期的な起動や、キャッシュ領域２０３の消費量などから起動の要否を判定してもよい。
【０１０９】
データ量削減処理は、データ削減が有効なＶＯＬ１０００の記憶領域１２０１における“Ｄｉｒｔｙ”状態のデータを対象に実行される。フローチャートで示す圧縮はライトデータに対して行われる所定の処理の一例である。プロセッサ２４Ａは、圧縮以外の処理、例えば、重複排除や暗号化又は冗長化等を行ってもよい。
【０１１０】
ステップＳ１５０１において、プロセッサ２４Ａはプール割当管理テーブル２１０の圧縮後サイズ７６が無効かつキュー状態７７が“Ｄｉｒｔｙ”状態のデータを選択する。次に、ステップＳ１５０２において、プロセッサ２４Ａは、選択したデータのスロットの排他を取得する。
【０１１１】
次に、プロセッサ２４Ａは、排他を取得したデータを、ステップＳ１５０３においてバッファ領域２０２Ａに読み出してバッファ領域２０２Ａ上で圧縮する。ステップＳ１５０４において、プロセッサ２４Ａは、対象スロットのＶＯＬアドレス７２に対応する、記憶領域ＶＯＬアドレス９２の仮想階層配置９６を判定する。
【０１１２】
なお、仮想階層配置９６が初回の割り当てなどの初期状態で値が無い場合、プロセッサ２４Ａは、ＲＡＩＤ構成管理テーブル２０９の容量６５と使用容量６６から空き容量があることを判定し、空きのある上位階層（Ｔｉｅｒ１＿１２００−１）を仮想階層配置９６に登録する。
【０１１３】
上位階層から優先的にデータを割当てることで、ストレージシステムの性能が向上するが、上位階層に空きが無い場合、プロセッサ２４Ａは、空きのある下位階層を選択する。なお、全ての階層において空き容量が無い場合はドライブ２９上にデータ量削減後のデータ格納先が無いため、処理を中断してＩ／Ｏとは非同期に起動されるガベージコレクションなどの容量回収処理を待つ。
【０１１４】
プロセッサ２４Ａは、判定した仮想階層配置９６に対応する追記領域１２０２を割り当て、ステップＳ１５０５においてバッファ領域２０２Ａ上にある圧縮データをキャッシュ領域２０３Ａ内の追記領域１２０２Ａに転送する。
【０１１５】
なお、本実施例１ではＩ／Ｏ負荷に応じて階層の配置を変更するが、ＶＯＬのポリシーとして上位階層を指定するなど、格納先の階層が固定されていることもある。プロセッサ２４Ａは、転送が完了すると、ステップＳ１５０６においてキャッシュ領域２０３Ｂに対して二重化の転送を行い、追記領域１２０２Ｂに圧縮データを格納する。
【０１１６】
その後、プロセッサ２４Ａは、ステップＳ１５０７においてプール割当管理テーブル２１０のＶＯＬアドレス７２（仮想的な格納位置）に対するプールアドレス７４（論理的な格納位置）のマッピングと、圧縮後サイズ７６を更新する。
【０１１７】
次に、ステップＳ１５０８において、プロセッサ２４Ａは、対象スロットの排他を解放してデータ量削減を完了する。なお、ステップＳ１５０９ではキャッシュ領域２０３上の追記領域１２０２に格納されたデータがパリティサイクル分に達しているか否かを判定しており、真である場合はステップＳ１５１０で先述のデステージ処理を実行し、偽である場合は処理を終了する。
【０１１８】
＜階層再配置処理＞
図１５は本発明の実施例１のストレージ装置１１が実行する階層再配置処理を示すフローチャートである。
【０１１９】
階層再配置処理は、Ｉ／Ｏ頻度９５の集計周期に基づいて周期的に起動される。なお、Ｉ／Ｏ頻度９５の集計周期は、例えば、１時間などの予め設定された周期である。
【０１２０】
ステップＳ１６０１において、プロセッサ２４Ａは階層管理テーブル２１２のエントリを選択する。プロセッサ２４Ａが選択するエントリは、例えば、先頭のエントリから順次選択していく。
【０１２１】
次にステップＳ１６０２において、プロセッサ２４Ａは、ライトＩ／Ｏ数９３とリードＩ／Ｏ数９４から所定の計算式によってＩ／Ｏ頻度９５を上述した合計値で算出し、Ｉ／Ｏ頻度９５に登録する。そして、プロセッサ２４Ａは、ライトＩ／Ｏ数９３とリードＩ／Ｏ数９４をゼロにリセットする。
【０１２２】
プロセッサ２４Ａは、上記処理を階層管理テーブル２１２の全てのエントリに対して実行し、ステップＳ１６０３において実行が完了したか否かを判定する。プロセッサ２４Ａは、全エントリのＩ／Ｏ頻度９５が算出されると、次にデータの再配置先となる階層の領域に空きがあるか否かをステップＳ１６０４において判定する。
【０１２３】
階層再配置処理は、ストレージシステムのＩ／Ｏ性能を高くすることを目的に上位階層から優先的にデータを割当てており、再配置はまず上位階層から下位階層へのデモーションを実施してから、下位階層から上位階層へのプロモーションを行う。
【０１２４】
プロセッサ２４Ａは、まずＲＡＩＤ構成管理テーブル２０９のＲＡＩＤグループ１００２の内で、下位階層に当たるＲＡＩＤグループＩＤ＿２の容量６５と使用容量６６からデモーション先の空き容量の有無を判定する（Ｓ１６０４）。
【０１２５】
プロセッサ２４Ａは、容量６５と使用容量６６の差（空き容量）が所定の閾値未満であれば、空き容量が無く領域枯渇が発生していると判定し、データの再配置が実行できないことから処理を中断し、ステップＳ１６０５においてガベージコレクション処理による領域回収を実施する。
【０１２６】
一方、プロセッサ２４Ａは、空き容量が所定の閾値以上であれば空き領域があると判定し、算出したＩ／Ｏ頻度９５を基にステップＳ１６０６において再配置対象となるエントリを階層管理テーブル２１２から選択する。
【０１２７】
なお、再配置対象となるエントリの選択方法は、Ｉ／Ｏ頻度９５の値で階層管理テーブル２１２をソートした結果を用いてもよいし、任意の閾値を用いて比較してもよい。更には、Ｉ／Ｏ頻度９５に加えて短周期や長周期など複数周期のＩ／Ｏ頻度や、プール割当管理テーブル２１０から取得したページ内のデータの圧縮率などを用いてもよい。上記ソート結果を用いる場合、プロセッサ２４Ａは、Ｉ／Ｏ頻度９５が低くＴｉｅｒ１＿１２００−１に配置されているデータをＴｉｅｒ２＿１２００−２へ移動し、Ｉ／Ｏ頻度９５が高くＴｉｅｒ２＿１２００−２に配置されているデータをＴｉｅｒ１＿１２００−１へ移動する。
【０１２８】
ステップＳ１６０７において、プロセッサ２４Ａは、上記選択したエントリに属するデータのスロットの排他を取得する。次に、ステップＳ１６０８で、プロセッサ２４Ａは、再配置先に対応する追記領域１２０２に圧縮データを移動させる。
【０１２９】
プロセッサ２４Ａは、データの移動が完了するとステップＳ１６０９においてプール割当管理テーブル２１０のマッピング情報を更新する。すなわち、プロセッサ２４Ａは、プール割当管理テーブル２１０のプールアドレス７４を、データの移動先のアドレスに更新する。これにより、ＶＯＬアドレス７２は当初のアドレスを維持して、階層が変更されてもＩ／Ｏ頻度９５を継続して検出することが可能となる。
【０１３０】
次にステップＳ１６１０において、プロセッサ２４Ａは、再配置が完了したデータのスロット排他を解放する。ステップＳ１６１１において、プロセッサ２４Ａは、再配置対象のエントリについて再配置の処理が完了したか否かを判定する。
【０１３１】
再配置の完了は、対象として選択したエントリに属するスロットの再配置が完了したことに加え、任意のエントリ数の再配置がデモーションとプロモーションが共に完了したか否かを判定する。再配置が完了していない場合、プロセッサ２４Ａは、ステップＳ１６０４に戻って上記処理を繰り返す。再配置が完了していれば、プロセッサ２４Ａは再配置処理を終了する。
【０１３２】
なお、ステップＳ１６０４において領域枯渇と判定された場合、階層管理テーブル２１２のエントリ内のスロットの再配置が途中であっても処理が中断されることから、仮想階層配置９６と物理的な階層配置が乖離することを許容する。
【０１３３】
また、Ｓ１６０７において、データの階層を変更して移動させる場合に、データ圧縮、暗号化、重複排除、冗長化などのデータ削減処理の要否を変更してもよい。圧縮の場合、圧縮率の変更を含めてもよい。データ削減処理を行うと一般にI／O速度が遅くなるためである。データ削減処理の要否は、データごとに個別に判断してもよいし、Ｔｉｅｒ単位で設定してもよい。例えばデータ圧縮の場合、上位のＴｉｅｒに移動させるときに、下位Ｔｉｅｒの記憶媒体に格納された圧縮済みデータを伸長して上位Ｔｉｅｒの記憶媒体に格納したり、下記のＴｉｅｒに移動させるときに、上位Ｔｉｅｒの記憶媒体に格納された圧縮済みデータにさらに圧縮率の高い圧縮を行って下位Ｔｉｅｒの記憶媒体に格納したりする。
【０１３４】
上記処理によって、Ｉ／Ｏ頻度９５に応じて性能の高い階層（Ｔｉｅｒ１＿１２００−１）と性能の低い階層（Ｔｉｅｒ２＿１２００−２）の間でデータの移動が行われ、最適なデータの配置が実現される。
【０１３５】
＜ガベージコレクション＞
図１６は本発明の実施例１のストレージ装置１１が実行するガベージコレクション処理を示すフローチャートである。
【０１３６】
ガベージコレクション処理は、上記図１５のステップ１６０５で実施されるのに加え、ライト命令の完了を契機として開始されてもよい。さらに、ガベージコレクション処理は、周期的な起動や階層再配置処理から起動してもよく、プール構成管理テーブル２０８のプール使用容量５４や、ＲＡＩＤ構成管理テーブル２０９の使用容量６６などから起動の要否を判定してもよい。
【０１３７】
ステップＳ１７０１において、プロセッサ２４Ａは複数の追記領域１２０２から、ガベージコレクションの対象とする追記領域１２０２を選択する。なお、対象とする追記領域１２０２は、ガベージコレクションの起動の際に指定してもよい。あるいは、複数の追記領域１２０２に対してプロセッサ２４Ａがラウンドロビン等の手法で選択してもよい。
【０１３８】
次にステップＳ１７０２において、プロセッサ２４Ａは、選択した追記領域１２０２内で所定のページ範囲を選択する。なお、ガベージコレクションの容量回収の効率を向上する方法として、追記領域１２０２内のデータをページなどの所定の範囲で区切り、ページ内のガベージ量を集計することで、プロセッサ２４Ａがガベージ量の多いページに対して優先的にガベージコレクションを行うことができる。
【０１３９】
ステップＳ１７０３において、プロセッサ２４Ａは、選択したページ内にガベージが存在するか否かを判定する。ガベージの判定は、追記領域１２０２Ａから記憶領域１２０１Ａへの参照関係や、プール割当管理テーブル２１０でのプールアドレス７４の有無からプロセッサ２４Ａがスロット単位で判定する。
【０１４０】
プロセッサ２４Ａは、選択したページにガベージが無い場合、ステップＳ１７０２からの処理を追記領域１２０２Ａの終端（１１０１）まで繰り返して実行する。そして、プロセッサ２４Ａは、選択したページ内にガベージが存在する場合、ステップＳ１７０４で選択されたページの排他を取得する。
【０１４１】
次にステップＳ１７０５において、プロセッサ２４Ａは、ページ内の有効なスロットを順に追記領域１２０２の終端（１１０１）に追記していく。なお、データ（スロット）の移動は上記ステップＳ１７０１において選択した追記領域１２０２内で行われるが、スロットに対応する仮想階層配置９６が移動先の階層と異なる場合、プロセッサ２４Ａは、仮想階層配置９６と同じ階層の追記領域１２０２へデータを移動させてもよい。
【０１４２】
ステップＳ１７０６において、プロセッサ２４Ａは、プール割当管理テーブル２１０を書き換えることで、移動したスロットのマッピング情報を更新する。マッピング情報更新が完了すると、ステップＳ１７０７において、プロセッサ２４Ａは、ページの排他を解放する。
【０１４３】
更に、この時点で対象のページ内はガベージのみになることから、ステップＳ１７０８でプロセッサ２４Ａは、ドライブ割当管理テーブル２１１の対象エントリを削除して領域を解放する。
【０１４４】
最後にステップＳ１７０９でプロセッサ２４Ａは、追記領域１２０２の終端（１１０１）までガベージコレクション処理が実行されたか否かを判定する。ガベージコレクション処理の途中であれば、プロセッサ２４Ａは、上記ステップＳ１７０１に戻って上記処理を繰り返す。一方、追記領域１２０２の終端（１１０１）まで処理が終わっていればプロセッサ２４Ａは、ガベージコレクション処理を終了する。
【０１４５】
以上のように、本実施例１のストレージ装置１１では、ホスト計算機３０に提供する仮想的な記憶領域（ＶＯＬ１０００）と、記憶媒体（ドライブ２９）の格納位置と論理的な格納位置を対応付けて管理する論理的な記憶領域（プール１００１）を有し、論理的な記憶領域では性能の異なる階層（Ｔｉｅｒ１２００）でデータを格納する記憶媒体を管理し、仮想的な記憶領域におけるデータのＩ／Ｏ負荷（Ｉ／Ｏ頻度９５）に応じて、当該データを格納する階層を決定する。
【０１４６】
これにより、仮想的な記憶領域（ＶＯＬ１０００）毎にＩ／Ｏ数を集計することによって、管理情報を削減することができる。また、仮想的な記憶領域（ＶＯＬ１０００）でＩ／Ｏ負荷を測定することで、データ削減技術と自動階層管理機能を組み合わせることが可能となり、上位階層のデータヒット率を向上することができる。
【実施例２】
【０１４７】
以下、本発明の実施例２を説明する。
【０１４８】
＜複数位置から参照されるデータの階層決定方法＞
図１７は、本発明の実施例２のストレージ装置１１によって管理されるクローンＶＯＬの構成例を示す図である。
【０１４９】
実施例１では、追記領域１２０２と記憶領域１２０１に割当てられるデータのマッピング状態は１対１の対応を有する。しかし、本実施例２では重複排除や、ＶＯＬのイメージをコピーするシャドウイメージや、ＶＯＬを複製したクローンＶＯＬ＿１０００Ｘなどの記憶領域１２０１内の複数の割当先アドレス１１００、１１００Ｘから追記領域１２０２の１つのデータａを指す構成を示している。
【０１５０】
この様な構成において、先述の階層管理テーブル２１２の仮想階層配置９６から物理的なデータの階層を決める方法について以下に説明する。
【０１５１】
（Ｓ１１）：プロセッサ２４は、複数のスロットが所属する各々の記憶領域１２０１における仮想階層配置９６の中から最上位の階層を選択する。
【０１５２】
（Ｓ１２）：複数のスロットが所属する各々の記憶領域１２０１に対して集計したＩ／Ｏ頻度９５の合算から階層を決定する。
【０１５３】
また、複数のスロットから参照される重複データのみを格納する領域（共通領域）を定義する場合がある。共通領域は記憶領域１２０１をホスト計算機３０に直接提供しておらず、重複データの参照先からのリードＩ／Ｏのみ受け付ける。この様な、重複データに対応する記憶領域１２０１に対しても仮想階層配置を定義することで、実施例１と同様の手順による階層管理を実現できる。
【０１５４】
＜まとめ＞
上記した実施例１、２では階層をドライブの種別や外部接続ストレージなどの物理的な記録媒体によって区別したが、これに限定されることはなく仮想的な階層であってもよい。例えば、上位階層と下位階層は圧縮アルゴリズムの差や、重複排除や暗号化の有無、データの種別によって分けられてもよい。
【０１５５】
更に、ドライブの種別が同じであってもドライブの物理的な接続位置や、ドライブの寿命といった指標で階層を分けてもよく、Ｉ／Ｏを受信するＦＥ＿Ｉ／Ｆ２３の位置やドライブの寿命消費によって階層間のＩ／Ｏ性能差が逆転し、階層順序が逆転することもありえる。
【０１５６】
また、上記の実施例１、２では追い書き方式について説明したが、仮想的な階層配置を基に物理的な階層配置を決める構成であれば、追い書き方式だけに限定されない。加えて、上記の実施例１、２では、記憶領域１２０１や追記領域１２０２をストレージコントローラ２２で定義しているが、物理的な位置に限定は無くドライブ２９などの記録媒体のコントローラ内に定義してもよい。
【０１５７】
以上のように、上記実施例１、２のストレージ装置１１は、プロセッサ２４と、メモリ２５と、記憶媒体（ドライブ２９）を有し、外部の計算機（ホスト計算機３０）に提供する仮想的な格納位置（ＶＯＬアドレス７２）でデータを管理する第１の記憶領域（ＶＯＬ１０００）と、前記記憶媒体（ドライブ２９）の性能の違いに応じた階層（Ｔｉｅｒ１２００）と、前記記憶媒体の格納位置（ドライブアドレス８５）と、論理的な格納位置（プールアドレス７４、８２）を対応付けてデータを管理する論理的な第２の記憶領域（プール１００１）と、前記プロセッサ２４は、前記第１の記憶領域に対するデータ毎のＩ／Ｏ負荷（Ｉ／Ｏ頻度９５）を算出し、前記Ｉ／Ｏ負荷に応じて前記データを格納する前記階層を決定する。
【０１５８】
これにより、仮想的な格納位置でデータを管理する第１の記憶領域でＩ／Ｏ負荷を算出することによって、前記従来例を適用した場合に比して管理情報を削減することができる。また、第１の記憶領域と第２の記憶領域でデータの管理を行うことで、データ削減技術と自動階層配置機能を組み合わせることが可能となる。上位階層のデータヒット率を向上することができる。
【０１５９】
また、プロセッサ２４は、前記第１の記憶領域のデータについて前記Ｉ／Ｏ負荷を所定の周期で算出し、前記データの前記Ｉ／Ｏ負荷の変動に応じて前記階層の再配置を行う。これにより、データ削減技術と自動階層配置機能を組み合わせて、上位階層のデータヒット率を向上することができる。
【０１６０】
また、前記記憶媒体は、前記階層ごとに物理的なデータ格納領域（ＲＡＩＤグループ１００２）を有し、前記プロセッサ２４は、前記階層の再配置の際には、前記記憶媒体の格納位置（ドライブアドレス８５）と前記論理的な格納位置（プールアドレス８２）の対応関係を更新し、前記仮想的な格納位置（ＶＯＬアドレス７２）と前記論理的な格納位置（プールアドレス７４）の対応関係を更新する。
【０１６１】
これにより、ストレージ装置１１は、データの物理的な格納位置が変更されても、仮想的な格納位置は同じデータに紐付けられるので、仮想的な格納位置（ドライブアドレス）を参照することでＩ／Ｏ負荷を継続して算出することが可能となる。
【０１６２】
また、前記プロセッサは２４、前記第２の記憶領域を追い書きによって管理し、前記階層の再配置の際には、前記階層間で移動するデータを前記第２の記憶領域の終端に追記する。これにより、書き込みが変更差分の追記のみで実現され、処理の高速化を図ることができる。
【０１６３】
また、前記プロセッサ２４は、前記階層の再配置の際には、前記階層間で移動するデータのデータ削減要否を変更して前記第２の記憶領域へ格納する。これにより、階層に応じたデータ量の削減を図ることができる。
【０１６４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されるものではない。
【０１６５】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【０１６６】
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１６７】
１００  ストレージシステム
１１  ストレージ装置
２２  ストレージコントローラ
２９  ドライブ
３０  ホスト計算機
３１  ネットワーク
２０２  バッファ領域
２０３  キャッシュ領域
２０４  非圧縮データ格納領域
２０５  圧縮データ格納領域
【図１】
2020052919.tif 000003
【図２】
2020052919.tif 000004
【図３】
2020052919.tif 000005
【図４】
2020052919.tif 000006
【図５】
2020052919.tif 000007
【図６】
2020052919.tif 000008
【図７】
2020052919.tif 000009
【図８】
2020052919.tif 000010
【図９】
2020052919.tif 000011
【図１０】
2020052919.tif 000012
【図１１】
2020052919.tif 000013
【図１２】
2020052919.tif 000014
【図１３】
2020052919.tif 000015
【図１４】
2020052919.tif 000016
【図１５】
2020052919.tif 000017
【図１６】
2020052919.tif 000018
【図１７】
2020052919.tif 000019