(57)【要約】【課題】ボリュームの種別毎に優先度制御を行うストレージシステムで高性能なストレージデバイスの不足を検出する。【解決手段】ストレージシステムは、性能が異なる第１ストレージデバイスと第２ストレージデバイスとを含み、プロセッサは、ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、ボリュームを介してストレージデバイスへのデータの入出力を行い、記憶領域ごとにデータの入力または／及び出力にかかる入出力頻度を算出し、ボリュームへの第１ストレージデバイス及び第２ストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理し、管理部は、プロセッサから入出力頻度を取得し、ボリュームごとに入出力頻度の分布情報を作成し、ボリュームにおける入出力頻度の分布情報と、ボリュームへの性能ごとのストレージデバイスのボリューム割当情報とに基づいてボリュームの性能を判定する。【選択図】図１８
2019191997.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムにおいて、
前記ストレージシステムには、性能が異なる第１のストレージデバイスと第２のストレージデバイスと、が含まれており、
前記プロセッサは、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、
前記プロセッサは、前記記憶領域ごとに前記データの入力または／及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第１のストレージデバイス及び前記第２のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、
管理部は、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、
前記管理部は、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定することを特徴とするストレージシステム。
【請求項２】
請求項１において、
ネットワーク接続された複数の前記ストレージノードを有しており、
前記複数のストレージノードは、各々が前記第１のストレージデバイスまたは／及び前記第２のストレージデバイスとを有しており、
前記管理部は、前記複数のストレージノードのプロセッサから前記ボリューム割当情報と、前記入出力頻度の分布情報を取得して、前記ボリュームの性能を判定する
ことを特徴とするストレージシステム。
【請求項３】
請求項２において、
前記ストレージノードは、他の前記ストレージノードのストレージデバイスを自ノードのボリュームに割り当て可能であることを特徴とするストレージシステム。
【請求項４】
請求項２において、
前記管理部は、ネットワークに接続された管理ノード内に配置されていることを特徴とするストレージシステム。
【請求項５】
請求項１において、
前記ボリュームの性能が所定の閾値よりも低い場合に、性能が良い前記第１のストレージデバイスが不足していると判定することを特徴とするストレージシステム。
【請求項６】
請求項５において、
前記ストレージノードは、性能が異なる複数の前記ボリュームを有しており、
前記性能が異なるボリュームごとに前記閾値が定められていることを特徴とするストレージシステム。
【請求項７】
請求項５において、
前記ボリューム割当情報における性能が良い前記第１のストレージデバイスが前記ボリュームに割り当てられた第１の容量であって、前記入出力頻度の分布情報における上位側の前記第１の容量の記憶領域にかかる割合が、所定値よりも小さくなった場合に、前記第１のストレージデバイスが不足していると判断することを特徴とするストレージシステム。
【請求項８】
請求項６において、
前記第１のストレージデバイスが不足している場合、他のボリュームへの前記第１のストレージデバイスの割当を解放し、当該解放した前記第１のストレージデバイスを、不足していると判定したボリュームに割り当てることを特徴とするストレージシステム。
【請求項９】
プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムの制御方法であって、
前記ストレージシステムには、性能が異なる第１のストレージデバイスと第２のストレージデバイスと、が含まれており、
前記プロセッサが、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、
前記プロセッサが、前記記憶領域ごとに前記データの入力または／及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第１のストレージデバイス及び前記第２のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、
管理部が、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、
前記管理部が、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定することを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能の異なるボリュームを提供するストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムに使用されるストレージデバイスとしては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）の他にＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の不揮発性のストレージデバイスが普及している。ＨＤＤは大容量化が進展してビット当たりのコストパフォーマンスに優れ、ＳＳＤでは高速化が進展して性能（例えば、ＩＯＰＳやシーケンシャル読み出し速度）が向上している。
【０００３】
複数のストレージデバイスを利用するストレージシステムとしては、例えば、物理デバイスを仮想容量プールとして管理するシンプロビジョニングが知られている（例えば、特許文献１）。
【０００４】
また、高性能ドライブ（ＳＳＤ）と高コストパフォーマンスドライブ（ＨＤＤ）から構成されるストレージプールで、高優先ボリュームに性能の高いＳＳＤを優先的に割り当て、ＳＳＤが余っている場合にその他のボリュームにＳＳＤを割り当てる技術が知られている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−０１５９１５号公報
【特許文献２】特開２０１２−０４３４０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ストレージデバイスやサーバのストレージリソースを有効に利用する手法として、Software Defined Storage（以下、ＳＤＳ）が知られている。ＳＤＳではコスト削減のために専任ストレージ管理者なしでの運用が求められる。
【０００７】
一方、多数のノードから構成されるＳＤＳでは、ストレージデバイスやノードの数が膨大になる場合があり、個々のノードを人手で監視するという従来の資源枯渇監視は難しい。
【０００８】
また、性能の異なるストレージデバイスから構成されるストレージプールを用いて、ボリュームの種別毎に優先度制御を行うストレージシステムでは、ストレージプールの容量に余裕があっても、高性能なストレージデバイス（ＳＳＤ）の容量が不足した場合には性能不足となる。管理者などはＳＳＤが不足する前にＳＳＤを増設し、性能の低下を防ぐ必要がある。
【０００９】
しかしながら、上記従来技術ではストレージプールの空き容量不足時にのみ管理者に対する通知を行うため管理者はＳＳＤ容量が不足した場合でも性能不足に気づくことができない。そのため、実際にストレージシステムにアクセスする上位のアプリケーションやサービスで性能に関する問題が発生するまで高性能なストレージデバイス（例えば、ＳＳＤ）気づくことができない、という問題があった。
【００１０】
そこで本発明は、上記問題点に鑑みてなされたもので、ボリュームの種別毎に優先度制御を行うストレージシステムで高性能なストレージデバイスの不足を検出し、管理者に通知することで、性能問題が発生する前に高性能なストレージデバイスの増設を可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムにおいて、前記ストレージシステムには、性能が異なる第１のストレージデバイスと第２のストレージデバイスと、が含まれており、前記プロセッサは、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、前記プロセッサは、前記記憶領域ごとに前記データの入力または／及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第１のストレージデバイス及び前記第２のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、管理部は、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、前記管理部は、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定する。
【発明の効果】
【００１２】
したがって、本発明は、ボリュームの種別毎に優先度制御を行うストレージシステムで高性能なストレージデバイスの不足を検出することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例１を示し、ストレージシステムの一例を示すブロック図である。
【図２】本発明の実施例１を示し、ストレージノードの一例を示すブロック図である。
【図３】本発明の実施例１を示し、管理ノードの一例を示すブロック図である。
【図４】本発明の実施例１を示し、グローバルプールとローカルプールの関係を示すブロック図である。
【図５】本発明の実施例１を示し、優先度管理テーブルの一例を示す図である。
【図６】本発明の実施例１を示し、グローバルノードテーブルの構成の一例を示す図である。
【図７】本発明の実施例１を示し、グローバルボリュームテーブルの一例を示す図である。
【図８】本発明の実施例１を示し、グローバルチャンク制御テーブルの構成の一例を示す図である。
【図９】本発明の実施例１を示し、グローバルＴｉｅｒ管理テーブルの構成の一例を示す図である。
【図１０】本発明の実施例１を示し、ローカルボリューム管理テーブルの構成の一例を示す図である。
【図１１】本発明の実施例１を示し、ローカルＴｉｅｒ制御テーブルの構成の一例を示す図である。
【図１２】本発明の実施例１を示し、ボリュームページ制御テーブルの構成の一例を示す図である。
【図１３】本発明の実施例１を示し、物理ページ制御テーブルの構成の一例を示す図である。
【図１４】本発明の実施例１を示し、モニタ情報収集テーブルの構成の一例を示す図である。
【図１５】本発明の実施例１を示し、グローバルＩＯ度数分布テーブルの構成の一例を示す図である。
【図１６】本発明の実施例１を示し、グローバル使用容量テーブルの構成の一例を示す図である。
【図１７】本発明の実施例１を示し、管理ノードで行われる処理の一例を示すフローチャートである。
【図１８】本発明の実施例１を示し、グローバルＴｉｅｒ１容量不足判定処理の一例を示すフローチャートである。
【図１９】本発明の実施例１を示し、管理ノードで行われるボリューム生成ノードの選択処理の一例を示すフローチャートである。
【図２０】本発明の実施例１を示し、管理ノードで行われるチャンク割り当て処理の一例を示すフローチャートである。
【図２１】本発明の実施例１を示し、ボリューム管理ＧＵＩの一例を示す図である。
【図２２】本発明の実施例１を示し、ボリューム追加ＧＵＩの一例を示す図である。
【図２３】本発明の実施例１を示し、ノード追加ＧＵＩの一例を示す図である。
【図２４】本発明の実施例２を示し、管理ノードの一例を示すブロック図である。
【図２５】本発明の実施例２を示し、ローカルプールの一例を示すブロック図である。
【図２６】本発明の実施例３を示し、グローバルプールとローカルプールの関係を示すブロック図である。
【図２７】本発明の実施例１を示し、ローカルプールＩＯ度数分布テーブルの構成の一例を示す図である。
【図２８】本発明の実施例３を示し、グローバルＴｉｅｒ１容量不足判定処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例１】
【００１５】
＜システム構成＞
図１は、本発明の実施例１を示し、ストレージシステムの一例を示すブロック図である。本実施例１では、性能の異なるストレージデバイスを用いて、ボリュームの種別毎に優先度制御を行うストレージシステムに本発明を適用した例を示す。
【００１６】
性能が異なるストレージデバイスを有するストレージノード１０３−１〜１０３−ｎと、多数のストレージノード１０３−１〜１０３−ｎを管理する管理ノード１０４と、ストレージノード１０３−１〜１０３−ｎの記憶領域を利用するホスト１０１−１〜１０１−ｍは、ネットワーク１０２を介して接続される。
【００１７】
なお、以下の説明ではストレージノードの個々について特定しない場合には「−」以降を省略した符号１０３を用いる。他の構成要素の符号についても同様である。
【００１８】
管理ノード１０４は、ローカルプールを有する多数のストレージノード１０３と、ストレージノード１０３をまたがったグローバルプールを管理する。管理ノード１０４は、ホスト１０１に対して性能の異なるボリュームを提供する。
【００１９】
ローカルプールはストレージノード１０３が内部的に管理するとはストレージプールのことで、性能特性に応じた複数のＴｉｅｒから構成される。また、グローバルプールとはノードをまたがったストレージデバイスのストレージプールであり、ローカルプールに対してストレージデバイスの物理容量を割当てる制御を行う。管理ノード１０４は、ローカルプールの各Ｔｉｅｒに対するグローバルプールのリソース（チャンク）の割り当てを制御する。ストレージノード１０３を利用するホスト１０１のユーザは、ストレージノード１０３の物理的な構成を意識することなくボリュームを使用することができる。
【００２０】
＜ストレージノード＞
図２は、ストレージノード１０３の一例を示すブロック図である。ストレージノード１０３は、ＣＰＵ１１と、メモリ１２と、ネットワークインタフェース（図中ＮＩＣ）１３と、ストレージデバイスとしての１以上のドライブ２０−Ｓと、ストレージデバイスとしての１以上のドライブ２０−Ｈを含んで、ホスト１０１にボリュームを提供する計算機である。
【００２１】
ドライブ２０−Ｓは、ドライブ２０−Ｈに比して性能の高い高性能なストレージデバイスで、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の不揮発性半導体メモリで構成される。なお、ドライブ２０−Ｓの性能は、例えば、ＩＯＰＳがドライブ２０−Ｈに比して高い、またはシーケンシャル読み出し速度がドライブ２０−Ｈに比して高速なドライブである。
【００２２】
一方、ドライブ２０−Ｈは、ドライブ２０−Ｓに比して性能は低いが、ビット当たりの価格が安くコストパフォーマンスの高いストレージデバイスで、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。
【００２３】
ネットワークインタフェース１３は、ネットワーク１０２に接続されてホスト１０１や管理ノード１０４や他のストレージノード１０３と通信を行う。
【００２４】
メモリ１２には、ローカルプール階層管理３１と、ローカルボリューム管理３２と、ローカルページ制御３３と、ローカルモニタ３４と、ボリュームＩ／Ｏ制御３５と、ドライブ管理３７の各機能部がプログラムとしてロードされてＣＰＵ１１によって実行される。
【００２５】
ＣＰＵ１１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１１は、ローカルプール階層管理プログラムに従って処理することでローカルプール階層管理３１として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００２６】
ストレージノード１０３の各機能を実現するプログラム、テーブル等の情報は、ストレージデバイスや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００２７】
ローカルプール階層管理３１は、ストレージノード１０３が有するローカルプールの階層（Ｔｉｅｒ）ごとに構成を管理する機能部で、ローカルＴｉｅｒ制御テーブル４１に基づいて、各階層に割り当てるチャンクを管理する。なお、プールと階層（Ｔｉｅｒ）については後述する。
【００２８】
ローカルプール階層管理３１は、所定の周期でローカルプール２６の状態を取得してローカルＴｉｅｒ制御テーブル４１を更新する。また、ローカルプール階層管理３１は、ローカルＴｉｅｒ２７の使用率（例えば、割り当てページ容量４１４／合計チャンク容量４１３）が所定の閾値Ｔｈ４（例えば、９０％）以上であれば、管理ノード１０４にチャンクの容量不足を通知する。ローカルＴｉｅｒ２７の使用率の監視は、ローカルＴｉｅｒ２７−１〜２７−３のそれぞれについて実施され、容量不足の通知にはストレージノード１０３の種別が含まれる。
【００２９】
ローカルボリューム管理３２は、ローカルボリューム管理テーブル４２を参照して、ストレージノード１０３がホスト１０１に提供するボリュームを管理する機能部である。ローカルページ制御３３は、ボリュームページ制御テーブル４３と、物理ページ制御テーブル４４を参照して、ボリュームを構成する論理ページ（ストレージノード１０３内のローカルプールのデータ管理の単位）と、チャンク（ノードをまたがったグローバルプールのデータ管理単位）上の物理ページの対応関係を管理する機能部である。
【００３０】
ローカルモニタ３４は、ストレージノード１０３が有するリソースの監視を行って統計情報を収集する機能部である。ローカルモニタ３４は、管理ノード１０４のグローバルモニタ６５からの要求に応じて、統計情報をグローバルモニタ６５へ送信する。本実施例１では、ローカルモニタ３４が収集する統計情報として、ボリューム２００の性能を示す統計情報としてＩＯ数（ＩＯＰＳまたはＩＯＰＨ）を用いる例を示すが、これらに限定されるものではない。例えば、ボリューム２００が読み書きする速度（ＭＢ／Ｓｅｃ）等の性能を示す統計情報として用いることができる。
【００３１】
ボリュームＩ／Ｏ制御３５は、ストレージノード１０３がホスト１０１に提供するボリュームに対する読み書き等の指令を処理する機能部である。ドライブＩ／Ｏ制御３６は、ストレージノード１０３内のドライブ２０−Ｓ、２０−Ｈに対する読み書き等の指令を処理する機能部である。
【００３２】
なお、メモリ１２に読み込まれて、上記各機能部が利用するテーブルについては後述する。
【００３３】
＜管理ノード＞
図３は、管理ノード１０４の一例を示すブロック図である。管理ノード１０４は、ＣＰＵ５１と、メモリ５２と、ネットワークインタフェース（図中ＮＩＣ）５３と、ストレージデバイスとしてのドライブ５４と、入力装置５５と、ディスプレイ５６を含んで、ストレージノード１０３を管理する計算機である。管理ノード１０４は、独立したノードではなくストレージノードの一機能として存在してもよいし、ストレージシステム外からストレージシステムを管理するようにしてもよい。
【００３４】
ネットワークインタフェース５３は、ネットワーク１０２に接続されてホスト１０１やストレージノード１０３と通信を行う。入力装置５５は、キーボードやマウスやタッチパネルを含んで、利用者（あるいは管理者）の操作を受け付ける。ディスプレイ５６には、管理インタフェースの画面などが表示される。
【００３５】
メモリ５２には、グローバルノード管理６１と、グローバルプール階層制御６２と、グローバルボリューム管理６３と、グローバルチャンク管理６４と、グローバルモニタ６５と、ボリューム優先度管理６６と、ＧＵＩ／ＣＬＩ６７と、ＲＥＳＴ  Ｉ／Ｆ６８と、ユーザ通知制御６９の各機能部がプログラムとしてロードされてＣＰＵ５１によって実行される。
【００３６】
ＣＰＵ５１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ５１は、グローバルノード管理プログラムに従って処理することでグローバルノード管理６１として機能する。他のプログラムについても同様である。さらに、ＣＰＵ５１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００３７】
管理ノード１０４の各機能を実現するプログラム、テーブル等の情報は、ストレージデバイス（ドライブ５４）や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００３８】
グローバルノード管理６１は、グローバルノードテーブル７１を参照してストレージノード１０３を管理する。グローバルプール階層制御６２は、グローバルＴｉｅｒ管理テーブル７２を参照して、ローカルプールに割り当てるチャンクのＴｉｅｒを管理する機能部である。
【００３９】
グローバルボリューム管理６３は、グローバルプールで生成したホストボリュームをグローバルボリュームテーブル７３で管理する機能部である。グローバルチャンク管理６４は、グローバルチャンク制御テーブル７４に基づいてグローバルプールのチャンク（グローバルプール内のデータ管理単位）を管理する機能部である。
【００４０】
グローバルモニタ６５は、ストレージノード１０３のローカルモニタ３４の情報をモニタ情報収集テーブル７５へ格納し、グローバルＩＯ度数分布テーブル７６やグローバル使用容量テーブル７７を更新する機能部である。
【００４１】
ボリューム優先度管理６６は、優先度管理テーブル７８を参照して、各ストレージノード１０３が提供するボリュームの種別毎に優先度を管理する機能部である。ＧＵＩ／ＣＬＩ６７は、管理インタフェースをＧＵＩ（Ｇｒａｐｈｉｃａｌ ｕｓｅｒ ｉｎｔｅｒｆａｃｅ）やＣＬＩ（Ｃｏｍｍａｎｄ ｌｉｎｅ  ｉｎｔｅｒｆａｃｅ）を提供する機能部である。
【００４２】
ＲＥＳＴ  Ｉ／Ｆ６８は、ＲＥＳＴ形式でホスト１０１やストレージノード１０３等と通信する機能部である。ユーザ通知制御６９は、容量の不足や障害の発生など所定の状態となったときにディスプレイ５６等に通知を出力する機能部である。
【００４３】
なお、メモリ５２に読み込まれて、上記各機能部が利用するテーブルについては後述する。また、ドライブ２０はＲＡＩＤ構成であっても良い。
【００４４】
＜プールの構成＞
図４は、グローバルプールとローカルプールの関係を示すブロック図である。本実施例では、性能が異なるドライブ２０を有する３つのストレージノード１０３−１〜１０３−３に跨がるストレージプールがグローバルプールとして設定され、ストレージノード１０３−１〜１０３−３は性能（または種別）が異なるノードとして運用される例を示す。
【００４５】
図示の例では、ストレージノード１０３−１が、高性能なボリューム（図中、高性能ＶＯＬ）２００−１を複数提供する高性能ノードとして機能する。ストレージノード１０３−２は、高性能なボリューム２００−１と標準的な性能のボリューム（図中、標準ＶＯＬ）２００−２を提供する標準ノードとして機能する。そして、ストレージノード１０３−３は、ビット当たりの価格が安い高コストパフォーマンスボリューム（図中、高ｃｏｓｔ  ｐｅｒｆｏｒｍａｎｃｅＶＯＬ）２００−３を提供する高コストパフォーマンスノードとして機能する。
【００４６】
なお、本実施例では、ストレージノード１０３の種別を、高性能と標準及び高コストパフォーマンスの３つに分ける例を示すが、これに限定されるものではなく、複数の性能の種別があれば良い。なお、ストレージノード１０３の種別は、管理者の指令に応じて管理ノード１０４で決定する。
【００４７】
また、本実施例１では、複数のストレージノード１０３にチャンク２１を提供する高性能なドライブ２０−Ｓと高コストパフォーマンスのドライブ２０−Ｈによって、ボリューム２００の優先度制御が行われる。
【００４８】
高性能ノード（ストレージノード１０３−１）は、高性能なボリューム２００−１を割り当てる優先度が高く、高性能なボリューム２００−１は、高性能なチャンク２１−Ｓを割り当てる優先度が高い。標準ノード（ストレージノード１０３−２）は、高性能なボリューム２００−１を割り当てる優先度は高性能ノードに比して低い。また、標準のボリューム２００−２は、高性能なチャンク２１−Ｓを割り当てる優先度が低く設定される。
【００４９】
高性能ノードのストレージノード１０３−１には、ストレージデバイスとしてＳＳＤ等の高性能なドライブ２０−Ｓを搭載する。標準ノードのストレージノード１０３−２には、ストレージデバイスとしてＳＳＤのドライブ２０−Ｓと、ＨＤＤのドライブ２０−Ｈを搭載する。高コストパフォーマンスノードのストレージノード１０３−３には、ストレージデバイスとしてＨＤＤのドライブ２０−Ｈを搭載する。本実施例では、ドライブの性能を二つにしたが、SSD内やHDD内で性能を細かく分けてもよい。また、ボリュームから見て自ノード内か他ノード内かによって、性能を区別してもよい。
【００５０】
なお、高性能ノードのストレージノード１０３−１は、標準ノードのストレージノード１０３−２に比して高性能なＣＰＵ１１と、大容量のメモリ１２を搭載するようにしてもよい。また、高コストパフォーマンスノードのストレージノード１０３−３は、標準ノードに比して廉価なＣＰＵ１１と、最低限のメモリ１２を搭載するようにしてもよい。
【００５１】
管理ノード１０４は、ホスト１０１へストレージ領域を提供するストレージノード１０３−１〜１０３−３に搭載されたドライブ２０をグローバルプール２４に割り当てる。そして、グローバルプール２４には、高性能なドライブ２０−Ｓで構成されるグローバルＴｉｅｒ１（２５−１）と、ビット当たりの価格が安いドライブ２０−Ｈで構成されるグローバルＴｉｅｒ２（２５−２）の２つの階層（グループ）が設定される。
【００５２】
管理ノード１０４は、グローバルプール２４に割り当てたドライブ２０の記憶領域を所定のサイズ（例えば、１００ＧＢ）のチャンク単位で管理する。すなわち、管理ノード１０４は、グローバルＴｉｅｒ１（２５−１）に割り当てられたドライブ２０−Ｓの記憶領域をチャンク２１−Ｓの単位で管理し、同様に、グローバルＴｉｅｒ２（２５−２）に割り当てられたドライブ２０−Ｈの記憶領域を、チャンク２１−Ｈの単位で管理する。
【００５３】
管理ノード１０４は、ストレージノード１０３−１〜１０３−３にそれぞれローカルプール２６−１〜２６−３を設定し、ストレージノード１０３の種別に応じてグローバルプール２４のグローバルＴｉｅｒ１（２５−１）とグローバルＴｉｅｒ２（２５−２）から、チャンク２１−Ｓまたはチャンク２１−Ｈを、ローカルプール２６−１〜１０３−３にそれぞれ割り当てる。
【００５４】
各ストレージノード１０３は、ローカルプール２６に割り当てられたチャンク２１を所定の容量（例えば、４２ＭＢ）の物理ページとして管理する。ストレージノード１０３は、ボリューム２００の論理ブロックアドレス（ＬＢＡ）を所定の容量（例えば、４２ＭＢ）ごとの論理ページに分割してボリューム２００を管理する。
【００５５】
各ストレージノード１０３は、割り当てられたチャンク２１の性能差（種別）に応じて、ローカルプール２６をローカルＴｉｅｒ１（２７−１）と、ローカルＴｉｅｒ２（２７−２）と、ローカルＴｉｅｒ３（２７−３）に区分けして管理する。
【００５６】
ローカルＴｉｅｒ１〜３の構成はチャンク２１−Ｓに対応するドライブ２０の種別ごとに決定される。
【００５７】
ローカルＴｉｅｒ１（２７−１）は、同一のストレージノード１０３内の高性能なドライブ２０−Ｓのチャンク２１−Ｓに割当てられたページ（ローカルＳＳＤページ）で構成される。ローカルＴｉｅｒ２（２７−２）は、高性能なドライブ２０−Ｓではあるが他のストレージノード１０３のチャンク２１−Ｓに割当てられたページ（リモートＳＳＤページ）で構成される。
【００５８】
ローカルＴｉｅｒ３（２７−３）は、ビット当たりの価格が安いドライブ２０−Ｈのチャンク２１−Ｈのページ（ＨＤＤページ）から構成される。なお、ローカルＴｉｅｒ３（２７−３）のＨＤＤページは、自他のノードを問わずＨＤＤのチャンク２１−Ｈから構成されたページであれば良い。
【００５９】
各ストレージノード１０３は、論理ページへの初回の書き込み時には、ローカルプール２６の物理ページに割り当てる論理ページと物理ページの対応関係をボリュームページ制御テーブル４３に設定して、以降のデータの読み書きに使用する。
【００６０】
ローカルプール２６へのチャンク２１の割り当ては、ストレージノード１０３の容量が不足したときなど所定のタイミングで実行される。例えば、管理ノード１０４は、高性能ノードでローカルＴｉｅｒ１（２７−１）の割り当て済みページの容量の割合が、ローカルＴｉｅｒ１（２７−１）の全体容量の８０％を超えたら、グローバルＴｉｅｒ１（２５−１）から新しいチャンク２１−Ｓを割り当てる。
【００６１】
高性能ノードのストレージノード１０３−１では、ローカルＴｉｅｒ１（２７−１）の論理ページから高性能ボリューム２００−１を生成して、ホスト１０１に提供する。標準ノードのストレージノード１０３−２では、ローカルＴｉｅｒ１（２７−１）の論理ページから生成した高性能ボリューム２００−１と、ローカルＴｉｅｒ２（２７−２）の論理ページから生成した標準ボリューム２００−２をホスト１０１に提供する。
【００６２】
高コストパフォーマンスノードのストレージノード１０３−３では、ローカルＴｉｅｒ３（２７−３）の論理ページから高コストパフォーマンスボリューム２００−３を生成して、ホスト１０１に提供する。
【００６３】
ストレージノード１０３は、ボリューム２００を構成する論理ページのアクセス頻度に応じて、論理ページに割り当てる物理ページのローカルＴｉｅｒ１〜３をリバランス（データコピー）する。
【００６４】
なお、グローバルプール２４とローカルプール２６の構成は上記の例に限定されるものではない。例えば、ストレージノード１０３にローカルプールを設定せず、グローバルプール２４からボリューム２００を生成するようにしても良い。この場合、グローバルプール２４の記憶領域の管理単位はチャンクではなく、ページでストレージノード１０３へ提供すればよい。
【００６５】
また、ページの容量（サイズ）や、チャンクの容量は上述の例に限定されるものではなく、所望のサイズに設定してもよく、あるいは可変長としてもよい。また、本実施例１ではグローバルプール２４のチャンク２１を直接ストレージノード１０３に割り当てる構成を示しているが、これに限定されるものではない。例えば、冗長化（レプリケーションや消失訂正符号）した２つ以上のチャンクを一つのチャンクとしてストレージノードに割り当てる構成を用いてもよい。
【００６６】
＜テーブルの構成＞
図５は、優先度管理テーブル７８の一例を示す図である。優先度管理テーブル７８は、管理ノード１０４のボリューム優先度管理６６で使用される。
【００６７】
優先度管理テーブル７８は、ボリューム種別７８１と、優先度７８２と、優先オーナノード種別７８３と、使用可能オーナノード種別７８４と、使用可能グローバルＴｉｅｒ７８５と、許容ＳＳＤミス率７８６をひとつのエントリに含む。
【００６８】
Ｖｏｌｕｍｅ種別７８１には、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが予め設定される。「高性能」は、性能重視で高性能なドライブ２０−Ｓを優先的に割り当てる高性能ボリューム２００−１を示す。
【００６９】
「高性能」は、性能重視で高性能なドライブ２０−Ｓを優先的に割り当てる高性能なボリューム２００−１を示す。「標準」は、高性能なドライブ２０−Ｓのページが余っていたら使用し、余っていなければビット当たりの価格が安いドライブ２０−Ｈのページを利用する標準的な性能のボリューム２００−２を示す。「高コストパフォーマンス」は、常にビット当たりの価格が安いドライブ２０−Ｈのページを利用する高コストパフォーマンスボリューム２００−３を示す。
【００７０】
なお、標準的な性能のボリューム２００−２は、ローカルプール２６においてローカルＴｉｅｒ１のページが余っていればローカルＴｉｅｒ１のローカルＳＳＤのページを利用し、ローカルＴｉｅｒ１のページに余りはなく、ローカルＴｉｅｒ２のページが余っていればローカルＴｉｅｒ２のリモートＳＳＤのページを利用し、ローカルＴｉｅｒ２にも余りが無ければローカルＴｉｅｒ３のＨＤＤのページを利用する。
【００７１】
優先度７８２には、高性能なドライブ２０−Ｓを優先的に割り当てる順序が格納され、値の小さい方が優先度は高い。
【００７２】
優先オーナノード種別７８３には、当該エントリのＶｏｌｕｍｅ種別７８１のボリューム２００をデフォルトで割り当てるストレージノード１０３の種別が格納される。ストレージノード１０３の種別は、ボリューム種別７８１と同様に、「高性能」、「標準」、「高コストパフォーマンス」の３種のいずれかが設定される。
【００７３】
使用可能オーナノード種別７８４には、優先オーナノード種別７８３で指定された種別のストレージノード１０３が使用できない場合に使用可能なストレージノード１０３の種別が格納される。例えば、ローカルＳＳＤページが不足して高性能ボリューム２００−１を生成できないときは、指定された種別のノードに代わって使用可能オーナノード種別７８４の種別を代用する。
【００７４】
使用可能グローバルＴｉｅｒ７８５には、当該エントリのボリューム種別７８１に割り当てるチャンク２１を提供可能なグローバルプール２４の区分（グローバルＴｉｅｒ）が格納される。
【００７５】
許容ＳＳＤミス率７８６には、ボリューム種別７８１ごとに許容するＳＳＤのミス率が予め設定される。ＳＳＤのミス率は、ホスト１０１がボリューム２００に対して読み書きした際に、高性能なドライブ２０−Ｓのページにアクセスできなかった比率（後述のＳＳＤミス率）を示し、当該比率が許容ＳＳＤミス率７８６の値を上回った場合には、管理ノード１０４が、利用者（または管理者）に通知をする。本実施例１ではシステムの固有値を使用するが、利用者（または管理者）がＧＵＩ／ＣＬＩ６７やＲＥＳＴ  Ｉ／Ｆ６８によって設定してもよい。
【００７６】
図６は、グローバルノードテーブル７１の構成の一例を示す図である。グローバルノードテーブル７１はグローバルノード管理６１が参照するストレージノード１０３の管理テーブルである。
【００７７】
グローバルノードテーブル７１は、ノードＩＤ７１１と、ノード種別７１２と、ＣＰＵ容量７１３と、メモリ容量７１４と、ドライブＩＤ７１５と、ドライブ種別７１６と、チャンク容量７１７と、割り当て済みチャンク容量７１８をひとつのエントリに含む。
【００７８】
ノードＩＤ７１１には、管理対象のストレージノード１０３の識別子が格納される。識別子はグローバルプール２４内で一意の値である。ノード種別７１２には、ストレージノード１０３の種別が設定され、本実施例では、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが設定される。
【００７９】
ＣＰＵ容量７１３には、ストレージノード１０３内のＣＰＵ１１の処理能力に相当する値、例えば、周波数×ＣＰＵコア数が格納される。メモリ容量７１４には、ストレージノード１０３に搭載されたメモリ１２の容量が格納される。
【００８０】
ドライブＩＤ７１５には、ストレージノード１０３に搭載された物理的なドライブ２０の識別子が格納される。ドライブＩＤ７１５にはグローバルプール内で一意の値が設定される。
【００８１】
ドライブ種別７１６には、ドライブ２０の種別が格納される。本実施例では種別としてＳＳＤとＨＤＤのいずれかが設定される。チャンク容量７１７には、ドライブ２０ごとのチャンクの総容量が格納される。割り当て済みチャンク容量７１８には、ドライブ２０毎にローカルプール２６へ割り当て済みのチャンク容量が格納される。
【００８２】
図７は、グローバルボリュームテーブル７３の構成の一例を示す図である。グローバルボリュームテーブル７３は、管理ノード１０４のグローバルボリューム管理６３が使用するローカルプールの全ボリュームの管理テーブルである。
【００８３】
グローバルボリュームテーブル７３は、ボリュームＩＤ７３１と、ボリューム種別７３２と、オーナノード７３３と、サイズ７３４と、割り当て済みページ容量７３５と、使用可能グローバルＴｉｅｒ７３６をひとつのエントリに含む。
【００８４】
ボリュームＩＤ７３１には、ボリューム２００の識別子が格納される。識別子はグローバルプール２４内で一意の値である。ボリューム種別７３２には、ボリューム２００の種別が設定され、本実施例１では、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが設定される。
【００８５】
オーナノード７３３には、当該ボリューム２００を生成するストレージノード１０３の識別子が格納される。サイズ７３４には、当該ボリュームの論理サイズが格納される。シンプロビジョニングボリュームの場合には、実際に使用する物理的な記憶容量よりも大きな値が設定される。
【００８６】
割当済ページ容量７３５には、物理的な記憶容量が割り当てられた論理ページの容量が格納される。使用可能グローバルＴｉｅｒ７３６には、当該ボリュームで使用可能なグローバルＴｉｅｒ２５の値が格納される。グローバルＴｉｅｒ２５の値は、複数の値を設定することが可能である。グローバルＴｉｅｒ２５の値は、ボリューム種別７３２に応じて決定される。
【００８７】
図８は、グローバルチャンク制御テーブル７４の構成の一例を示す図である。グローバルチャンク制御テーブル７４は、管理ノード１０４のグローバルチャンク管理６４が使用するグローバルプール２４の全てのチャンク２１を管理する。
【００８８】
グローバルチャンク制御テーブル７４は、物理チャンクＩＤ７４１と、搭載ノード７４２と、ドライブＩＤ７４３と、グローバルＴｉｅｒ７４４と、チャンク容量７４５と、オフセット（ＬＢＡ）７４６と、割り当てノードＩＤ７４７をひとつのエントリに含む。
【００８９】
物理チャンクＩＤ７４１には、管理対象の物理的なチャンク２１の識別子が格納される。物理的なチャンク２１の識別子は、グローバルプール２４内で一意に識別可能な値が管理ノード１０４によって設定される。搭載ノード７４２には、管理対象の物理的なチャンク２１を搭載するストレージノード１０３の識別子が格納される。
【００９０】
ドライブＩＤ７４３には、管理対象の物理的なチャンク２１が格納されるドライブ２０の識別子が設定される。グローバルＴｉｅｒ７４４には、ドライブ２０が所属するグローバルＴｉｅｒ２５の値が格納される。チャンク容量７４５には、物理的なチャンクの容量が格納される。本実施例１では、ひとつのチャンク２１の容量を、１００ＧＢとした例を示す。
【００９１】
オフセット７４６には、ドライブ２０内での物理的なチャンクの格納領域の先頭のＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が格納される。割り当てノードＩＤ７４７には、管理対象の物理的なチャンク２１を割り当てたストレージノード１０３の識別子が格納される。なお、当該チャンク２１が未割り当ての場合には「未」が設定される。
【００９２】
グローバルチャンク制御テーブル７４によって、チャンク２１の割り当て先のストレージノード１０３と、当該チャンク２１を生成したストレージノード１０３とドライブ２０及び開始位置が定義される。
【００９３】
図９は、グローバルＴｉｅｒ管理テーブル７２の構成の一例を示す図である。グローバルＴｉｅｒ管理テーブル７２は、管理ノード１０４のグローバルプール階層制御６２が使用する。
【００９４】
グローバルＴｉｅｒ＃７２１には、管理対象のグローバルＴｉｅｒ２５の階層番号が格納される。ドライブ種別７２２には、当該グローバルＴｉｅｒ２に含まれるドライブ２０の種別が格納される。本実施例では、上述のようにＳＳＤまたはＨＤＤのいずれかが格納される。
【００９５】
合計チャンク容量７２３には、グローバルＴｉｅｒ２５内の合計チャンク容量が格納される。割り当て済みチャンク容量７２４には、ローカルプール２６へ割り当て済みのチャンク容量が格納される。
【００９６】
図１０は、ローカルボリューム管理テーブル４２の構成の一例を示す図である。ローカルボリューム管理テーブル４２は、ストレージノード１０３のローカルモニタ３４及びローカルボリューム管理３２がノード内のボリュームを管理するテーブルである。
【００９７】
ボリュームＩＤ４２１には、管理対象のボリュームの識別子が格納される。識別子は、グローバルプール２４内で一意の値が設定される。種別４２２には、優先度管理テーブル７８のＶｏｌｕｍｅ種別７８１と同様であり、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが予め設定される。
【００９８】
サイズ４２３には、当該ボリュームの論理サイズが格納される。シンプロビジョニングボリュームの場合には、実際に使用する物理的な記憶容量よりも大きな値が設定される。
【００９９】
割当済ページ容量４２４には、物理的な記憶容量が割り当てられた論理ページの容量が格納される。使用可能ローカルＴｉｅｒ４２５には、当該ボリュームで使用可能なローカルＴｉｅｒ２７の値（階層）が格納される。ローカルＴｉｅｒ２７の値は、複数の値を設定することが可能である。ローカルＴｉｅｒ２７の値は、ボリュームの種別４２２に応じて決定される。
【０１００】
図１１は、ローカルＴｉｅｒ制御テーブル４１の構成の一例を示す図である。ローカルＴｉｅｒ制御テーブル４１は、ストレージノード１０３のローカルプール階層管理３１によって管理される。
【０１０１】
ローカルＴｉｅｒ制御テーブル４１は、ローカルＴｉｅｒ＃４１１と、チャンク種別４１２と、合計チャンク容量４１３と、割当ページ容量４１４と、論理チャンクＩＤ４１５と、物理チャンクＩＤ４１６と、チャンクサイズ４１７をひとつのエントリに含む。
【０１０２】
ローカルＴｉｅｒ＃４１１には、管理対象のローカルＴｉｅｒ２７の値（階層）が格納される。チャンク種別４１２には、ページを提供したチャンクの種別が格納される。本実施例では、チャンク種別として、「ローカルＳＳＤ」、「リモートＳＳＤ」、「ＨＤＤ」のいずれかが設定される。
【０１０３】
合計チャンク容量４１３には、当該ローカルＴｉｅｒ２７に割り当てられたチャンクの容量が格納される。割当ページ容量４１４には、ローカルＴｉｅｒ２７のチャンク容量のうち、ページに割り当てられた容量が格納される。論理チャンクＩＤ４１５には、ローカルＴｉｅｒ２７内の論理チャンクＩＤが格納される。物理チャンクＩＤ４１６には、論理チャンクが実際に格納された物理チャンク２１のＩＤが格納される。チャンクサイズ４１７には、チャンク２１のサイズが格納される。
【０１０４】
ローカルＴｉｅｒ制御テーブル４１で論理チャンクと物理チャンクを分離して管理することで、ストレージノード１０３では、論理チャンクに対応する物理チャンクのＩＤを書き換えることで、チャンク２１のリバランスを実現することができる。
【０１０５】
図１２は、ボリュームページ制御テーブル４３の構成の一例を示す図である。ボリュームページ制御テーブル４３は、ストレージノード１０３のローカルページ制御３３が管理するボリューム２００ごとの論理ページの制御テーブルである。
【０１０６】
ボリュームページ制御テーブル４３は、ボリュームＩＤ４３１と、ＬＢＡ４３２と、論理ページ＃４３３と、物理ページ＃４３４と、積算ＩＯ数４３５をひとつのエントリに含む。
【０１０７】
ボリュームＩＤ４３１には、ボリューム２００の識別子が格納される。識別子はグローバルプール２４内で一意の値である。ＬＢＡ４３２には、ボリューム２００内のＬＢＡが格納される。
【０１０８】
論理ページ＃４３３には、ＬＢＡ４３２に割り当てられた論理ページの番号が格納される。物理ページ＃４３４には、論理ページ＃４３３に対応する物理ページの番号が格納される。なお、物理ページ＃４３４の値は、ローカルプール２６内で一意の値が設定される。また、論理ページに割り当てられていない場合には「未割り当て」が格納される。
【０１０９】
積算ＩＯ数４３５には、当該論理ページに対して発生したＩＯ数の積算値が格納される。なお、ＩＯ数の積算値は、所定の間隔（例えば、１時間）毎にリセットするようにしても良い。また、本実施例１では、ボリューム２００の性能を測定する統計情報としてＩＯ数を用いる例を示すがこれに限定されるものではない。例えば、ボリューム２００の読み書きの速度やデータを読み書きしたバイト数などを用いても良い。
【０１１０】
図１３は、物理ページ制御テーブル４４の構成の一例を示す図である。物理ページ制御テーブル４４の構成はストレージノード１０３のローカルページ制御３３が使用する物理ページの制御テーブルである。
【０１１１】
物理ページ制御テーブル４４は、物理ページ＃４４１と、ローカルＴｉｅｒ４４２と、論理チャンクＩＤ４４３と、チャンクオフセット４４４と、論理ページ＃４４５をひとつのエントリに含む。
【０１１２】
物理ページ＃４４１には、物理ページの番号が格納される。ローカルＴｉｅｒ４４２には、物理ページが格納されたローカルプール２６内のローカルＴｉｅｒ２７の値（階層）が格納される。論理チャンクＩＤ４４３には、当該物理ページが格納されたチャンク２１の識別子が格納される。
【０１１３】
チャンクオフセット４４４には、物理ページが格納されたデータ領域のチャンク２１内でのオフセットが格納される。論理ページ＃４４５には、当該物理ページが割り当てられた論理ページの番号が格納される。当該物理ページが未割り当ての場合「未使用」が格納される。
【０１１４】
図１４は、モニタ情報収集テーブル７５の構成の一例を示す図である。モニタ情報収集テーブル７５は、管理ノード１０４のグローバルモニタ６５が、各ストレージノード１０３のローカルモニタ３４から定期的（例えば、１時間毎）に収集したモニタ情報を格納する。
【０１１５】
モニタ情報収集テーブル７５は、ボリュームＩＤ７５１と、論理ページ＃７５２と、ＩＯＰＨ７５３と、物理チャンクＩＤ７５４をひとつのエントリに含む。ボリュームＩＤ７５１には、ボリューム２００の識別子が格納される。識別子はグローバルプール２４内で一意の値である。
【０１１６】
論理ページ＃７５２３には、ＬＢＡ４３２割り当てられた論理ページの番号が格納される。ＩＯＰＨ（IO per hour）７５３には、当該論理ページに対する１時間当たりのＩＯ数が格納される。物理チャンクＩＤ７５４には、当該論理ページに割り当てられた物理チャンクの番号が格納される。
【０１１７】
管理ノード１０４のグローバルモニタ６５は、所定の間隔（例えば、１時間）毎に各ストレージノード１０３のローカルモニタ３４からモニタ情報を読み込んで、論理ページ＃をキーとしてモニタ情報収集テーブル７５を更新する。
【０１１８】
ボリュームページ制御テーブル４３の積算ＩＯ数４３５が積算値の場合は、グローバルモニタ６５が、前回値との差に基づいてＩＯＰＨ７５３を算出すればよい。また、積算ＩＯ数４３５の積算値が１時間当たりのＩＯ数であれば、そのままＩＯＰＨ７５３に設定することができる。
【０１１９】
図１５は、グローバルＩＯ度数分布テーブル７６の構成の一例を示す図である。グローバルＩＯ度数分布テーブル７６は、管理ノード１０４のグローバルモニタ６５が、グローバルプール２４全体のＩＯ度数の分布をページ単位で管理するテーブルである。
【０１２０】
グローバルＩＯ度数分布テーブル７６は、ページランク７６１と、ボリューム種別７６２と、ＩＯＰＨ７６３をひとつのエントリに含む。ページランク７６１には、論理ページのＩＯＰＨの順位が格納される。本実施例では、ＩＯＰＨが最大の論理ページを１位として降順に順位を設定した例を示す。
【０１２１】
ボリューム種別７６２には、当該順位に該当する論理ページを構成したボリューム２００の種別４２２が格納される。ＩＯＰＨには、当該順位に該当する論理ページのＩＯＰＨ７５３が格納される。
【０１２２】
なお、グローバルＩＯ度数分布テーブル７６には、論理ページ＃のフィールドを追加して、ボリューム２００を容易に特定できるようにしてもよい。
【０１２３】
図１６は、グローバル使用容量テーブル７７の構成の一例を示す図である。グローバル使用容量テーブル７７は、管理ノード１０４のグローバルモニタ６５がグローバルプール２４のボリューム種別ごとに使用済みの容量を管理する。
【０１２４】
グローバル使用容量テーブル７７は、ボリューム種別７７１と、割り当て済みページ容量７７２をひとつのエントリに含む。ボリューム種別７７１には、ストレージノード１０３が提供するボリューム２００の種別が格納される。本実施例では、「高性能」、「標準」、「高コストパフォーマンス」の３種類となる。
【０１２５】
割り当て済みページ容量７７２には、グローバルモニタ６５で算出されたボリューム２００の種別毎に割り当て済みとなったページの総計が格納される。
【０１２６】
なお、ストレージノード１０３のテーブルについては、各機能部が管理するのに加えて、ローカルモニタ３４が所定の周期で更新するようにしても良い。
【０１２７】
＜処理＞
図１７は、管理ノード１０４で行われる処理の一例を示すフローチャートである。このフローチャートは、管理ノード１０４によって所定の周期（例えば、１時間）毎に実行される。
【０１２８】
ステップＳ１００１では、管理ノード１０４のグローバルモニタ６５が、グローバルプール２４を構成する全てのストレージノード１０３のローカルモニタ３４から統計情報を取得して、モニタ情報収集テーブル７５を更新する。
【０１２９】
具体的には、ローカルモニタ３４が、ボリュームページ制御テーブル４３を読み込んでボリュームＩＤ４３１と、論理ページ＃４３３と、物理ページ＃４３４と、積算ＩＯ数４３５の値を取得して、グローバルモニタ６５へ送信し、グローバルモニタ６５は、これらの情報からモニタ情報収集テーブル７５を更新する。
【０１３０】
ステップＳ１００２では、グローバルモニタ６５は、グローバルボリュームテーブル７３を参照し、モニタ情報収集テーブル７５中の論理ページ＃７５２を、ボリューム種別７６２ごとに分類する。グローバルモニタ６５は、ボリューム種別ごとに分類された論理ページ＃をＩＯＰＨ７６３の降順でソートする。
【０１３１】
そして、グローバルモニタ６５は、ソートした結果について、優先度の高いボリューム種別からＩＯＰＨの大きい順に並べてグローバルＩＯ度数分布テーブル７６（図１５）を生成する。
【０１３２】
ステップＳ１００３では、グローバルモニタ６５は、ボリューム種別７６２ごとの論理ページ数×単位容量（４２ＭＢ）から、ボリューム種別ごとに割り当て済みページ容量７７２を計算して、グローバル使用容量テーブル７７（図１６）を更新する。また、グローバルモニタ６５は、算出された割り当て済みページ容量７７２で、グローバルボリュームテーブル７３（図７）の割り当て済みページ容量７３５を更新する。
【０１３３】
ステップＳ１００４では、グローバルモニタ６５が、図１８に示すグローバルＴｉｅｒ１容量不足判定処理を実行する。後述するように、グローバルＴｉｅｒ１容量不足判定処理では、高性能なドライブ２０−Ｓが不足していた場合には、管理ノード１０４のディスプレイ５６に高性能なドライブ２０−Ｓの不足を通知する。管理者は通知内容に基づき高性能ストレージノード１０３−１、または高性能なドライブ２０−Ｓを追加する。
【０１３４】
図１８は、グローバルＴｉｅｒ１容量不足判定処理の一例を示すフローチャートである。この処理は、図１７のステップＳ１００４で行われる処理である。
【０１３５】
ステップＳＳ２００２では、グローバルモニタ６５が、グローバルＩＯ度数分布テーブル７６とグローバルボリュームテーブル７３から、標準的な性能のボリューム（標準ＶＯＬ）２００−２に対するアクセスのＳＳＤミス率と、高性能なボリューム（高性能ＶＯＬ）２００−１に対するアクセスのＳＳＤミス率について、それぞれの理論値を計算する（ボリューム種別ごとの合計値で計算）。なお、高コストパフォーマンスのボリューム２００−３の場合には、ステップＳ２００５へ進んで次のボリューム２００に進んでも良い。
【０１３６】
標準ＶＯＬのＳＳＤミス率＝１  −（全ての標準ＶＯＬにおけるＳＳＤ期待ページのＩＯＰＨの合計）÷（全ての標準ＶＯＬ全ページのＩＯＰＨの合計）  ・・（１）
高性能ＶＯＬのＳＳＤミス率＝１  −（全ての高性能ＶＯＬにおけるＳＳＤ期待ページのＩＯＰＨの合計）÷（全ての高性能ＶＯＬ全ページのＩＯＰＨの合計）  ・・（２）
【０１３７】
ただし、ＳＳＤ期待ページとは、グローバルＩＯ度数分布テーブル７６のページランク７６１の順に、論理ページを高性能なドライブ２０−Ｓ（ＳＳＤ）のチャンク２１−Ｓから割り当てた場合に、ＳＳＤ（グローバルＴｉｅｒ１）の合計チャンク容量７２３内に収まるページを指す。
【０１３８】
すなわち、本実施例１では、ボリューム２００の種別（優先度）毎に、ＳＳＤページにアクセスした数（ＩＯＰＨ）と、当該ボリューム２００のアクセス数（ＩＯＰＨ）の合計値の比率からＳＳＤミス率を算出する。ＳＳＤミス率は、理論的にはＳＳＤページにアクセス可能であるのに、実際にはＨＤＤページにアクセスした比率としても良い。
【０１３９】
また、ＳＳＤミス率は、ボリューム２００の種別（優先度）毎にＳＳＤが割り当てられていない容量と、当該ボリューム２００の容量の比率としてもよい。すなわち、ＩＯＰＨの比率に代えて容量の比率を用いてもよい。また、ＳＳＤミス率に代えて、ＳＳＤヒット率を用いてもよい（ＳＳＤミス率＋ＳＳＤヒット率＝１）。
【０１４０】
本実施例１では、後述するように、高性能ＶＯＬに加えて、標準ＶＯＬにも高性能なグローバルＴｉｅｒ１のＳＳＤのチャンク２１−Ｓ（ＳＳＤチャンク）を割り当てる制御を実施するので、高性能ＶＯＬのＳＳＤミス率は基本的に０を維持するのが望ましい。このため、高性能ＶＯＬの許容ＳＳＤミス率７８６は「１％」に設定されて、グローバルＴｉｅｒ１のＳＳＤチャンクを優先的に割り当てる。
【０１４１】
一方、標準ＶＯＬのＳＳＤミス率は「２０％」に設定されているので、標準ＶＯＬの８０％までは、ＳＳＤチャンク（グローバルＴｉｅｒ１）を割り当てて、残りの２０％にＨＤＤチャンクを割り当てる。
【０１４２】
本実施例１の標準ＶＯＬのＳＳＤミス率は、後述する図２１のように、標準ＶＯＬに割り当てたＳＳＤチャンク（グローバルＴｉｅｒ１）と、ＨＤＤチャンク（グローバルＴｉｅｒ２）の境界が、割り当て済みのページのどの位置にあるかを利用者に知らせる指標となる。
【０１４３】
なお、上記ＳＳＤ期待ページは物理的にＳＳＤに配置されているとは限らない。グローバルプール階層制御６２およびローカルプール階層管理３１によるページや、ボリュームまたは、チャンクリバランス処理によりＳＳＤに格納されるのが期待されることを含む。
【０１４４】
ステップＳ２００３では、グローバルモニタ６５が、上記算出されたＳＳＤミス率を優先度管理テーブル７８に予め設定された許容ＳＳＤミス率７８６（図５）と比較して、当該ボリューム２００のＳＳＤミス率が許容ＳＳＤミス率を超えたか否かを判定する。
【０１４５】
そして、グローバルモニタ６５は、当該ボリューム２００のＳＳＤミス率が許容ＳＳＤミス率を超える場合にはステップＳ２００４へ進み、そうでない場合には処理を終了する。
【０１４６】
ステップＳ２００４では、グローバルモニタ６５が、高性能なドライブ（ＳＳＤ）２０−Ｓが不足していることをディスプレイ５６に出力し、管理ノード１０４の利用者（または管理者）に性能が劣化する可能性を通知する。なお、高性能なドライブ（ＳＳＤ）２０−Ｓの不足の通知は、後述する図２１の画面で行うようにしてもよい。
【０１４７】
なお、グローバルモニタ６５が通知を出力する手法としては、管理ツールを介したイベント通知やＳＮＭＰ通知、あるいはその他の通知手法を用いることができる。
【０１４８】
また、上記ではボリューム２００の統計情報から高性能ＶＯＬのＳＳＤミス率または標準ＶＯＬのＳＳＤミス率を算出し、許容ＳＳＤミス率７８６と比較することで高性能ＶＯＬのＳＳＤチャンクの不足を検出する例を示したが、これに限定されるものではない。
【０１４９】
例えば、管理ノード１０４は、ストレージノード１０３のボリュームページ制御テーブル４３を参照することで、ボリューム２００に割り当てられた物理ページ＃４３４から物理ページ制御テーブル４４の論理チャンクＩＤ４４３を取得する。そして、管理ノード１０４は論理チャンクＩＤ４４３でローカルＴｉｅｒ制御テーブル４１を検索することで物理チャンクＩＤ４１６を取得し、この物理チャンクＩＤ４１６でグローバルチャンク制御テーブル７４を検索することで、当該ボリューム２００に割り当てられたグローバルＴｉｅｒ７４４を取得できる。したがって、ボリューム２００に割り当てられたグローバルＴｉｅｒ１の容量に基づいてＳＳＤページの不足を判定しても良い。
【０１５０】
図１９は、管理ノード１０４で行われるボリューム生成ノードの選択処理の一例を示すフローチャートである。この処理は、管理ノード１０４の管理者が入力装置５５を操作して、所定の指令を入力したときに管理ノード１０４のグローバルボリューム管理６３で実行される。管理者ボリューム作成の指示にあたり、必要な容量とボリューム種別を指定する。
【０１５１】
ステップＳ３００１では、グローバルボリューム管理６３が、まず、グローバル使用容量テーブル７７とグローバルＴｉｅｒ管理テーブル７２を参照して、新たにボリューム２００を生成する際に、グローバルプール２４に空き容量があるか否かを判定する。
【０１５２】
具体的には、グローバルボリューム管理６３が、グローバルＴｉｅｒ管理テーブル７２の合計チャンク容量７２３の合計値（チャンク容量合計値）と、グローバル使用容量テーブル７７の割り当て済みページ容量７７２の合計値の比率を所定の閾値Ｔｈ１（例えば、９０％）と比較して、比率（割り当て済みページ容量／チャンク容量合計値）が閾値以下であれば、空き容量があると判定してステップＳ３００２へ進む。一方、上記比率が閾値を超えていれば、空き容量がないと判定してステップＳ３００４へ進む。
【０１５３】
ステップＳ３００２では、グローバルボリューム管理６３が、新たにボリューム２００を生成可能なノード種別７１２を決定する。この処理は管理者が指定したボリューム種別に対し、優先度管理テーブル７８で定義された優先オーナノード種別７８３、使用可能オーナノード種別７８３の順に新たなボリューム２００を生成可能な空きがあるノード種別を探索する。使用可能オーナノード種別７８４が複数指定されている場合、性能の高いノード種別から探索する。
【０１５４】
グローバルボリューム管理６３は、グローバルノードテーブル７１とグローバルボリュームテーブル７３を参照し、ノード種別７１２ごとに全てのボリューム２００のサイズ７３４の合計値（合計ボリュームサイズ）と、チャンク容量７１７の合計値（合計チャンク容量）を算出する。
【０１５５】
そして、グローバルボリューム管理６３は、ノード種別毎の合計チャンク容量に対する合計ボリュームサイズの比率（合計ボリュームサイズ／合計チャンク容量）が閾値Ｔｈ２（例えば２）以下の場合、該当するノード種別に対して新たなボリューム２００を生成可能と判定する。一方、上記比率が閾値Ｔｈ２を超える場合、グローバルボリューム管理６３は、優先度管理テーブル７８の使用可能オーナノード種別７８４に設定されたノード種別を選択する。なお、グローバルボリューム管理６３は、上記比率が閾値Ｔｈ２以下の場合にはボリュームの生成に失敗したと判定する制御としてもよい。
【０１５６】
ステップＳ３００３では、グローバルボリューム管理６３が、上記ステップＳ３００２で選択したノード種別のストレージノード１０３間で、チャンク容量とボリュームサイズの合計値とボリューム数ができるだけ均等となるように、新たにボリューム２００を生成するストレージノード１０３を選択する。
【０１５７】
グローバルボリューム管理６３は、選択したノード種別内のストレージノード１０３間で、ボリューム種別７３２毎にボリュームサイズの合計値とチャンク容量７１７の合計値の比率と、ボリューム２００の数が均等になるストレージノード１０３を選択する。ストレージノード１０３の選択については、公知または周知の手法を用いれば良い。例えば、上記比率とボリューム数からストレージノード１０３毎の指標を算出して、ボリューム２００を追加したときに指標が所定の範囲内となる各ストレージノード１０３を選択するようにすればよい。ボリューム種別７３２毎の使用容量が同程度と予測される場合や、使用容量の予測が難しい場合には、ストレージノード１０３間でボリューム数が均等になるように、新規のボリューム２００を生成するストレージノード１０３を選択すれば良い。
【０１５８】
一方、空き容量が無いステップＳ３００４では、グローバルプール２４に空きがないためボリューム２００の生成に失敗した通知をディスプレイ５６へ出力する。
【０１５９】
本実施例ではボリューム２００を生成するストレージノード１０３の選択時にノード種別ごとの容量のみを考慮しているが、他にストレージノード１０３の負荷状況や、可用性、ドライブ２０の負荷状況や、可用性、ネットワークの負荷や距離を考慮してもよい。
【０１６０】
以上の処理によって、管理ノード１０４のグローバルボリューム管理６３は、利用者によるボリューム生成の指示を契機にボリューム生成ノードの選択処理を開始し、ボリューム生成ノードを生成するノード種別を選択する。そして、グローバルボリューム管理６３は、ノード種別ごとのチャンク容量と合計ボリュームサイズの比が一定以下に収まるようにノード種別を選択する。
【０１６１】
ボリューム２００をシンプロビジョニングで管理する場合には、ボリュームサイズを実際のチャンクサイズよりも大きく設定することができる。ボリュームサイズが大きくなりすぎた場合は、下位のノード種別（使用可能オーナノード種別７８４）にボリューム２００を生成する。これにより、新たなボリューム２００のＳＳＤミス率が低減されることが期待できる。そして、グローバルボリューム管理６３は、選択したノード種別内でストレージノード１０３間のチャンク容量と合計ボリュームサイズの比が均等となるように、新たなボリューム２００を生成するストレージノード１０３を選択する。
【０１６２】
図２０は、管理ノード１０４で行われるチャンク割り当て処理の一例を示すフローチャートである。管理ノード１０４のグローバルチャンク管理６４は、ストレージノード１０３のローカルプール階層管理３１からローカルＴｉｅｒ２７の使用率が閾値Ｔｈ２（例えば９０％）以上となった場合に通知（容量不足の通知）を受け付ける。通知を受信した後に、グローバルチャンク管理６４は当該ストレージノード１０３に対してチャンクの割当処理を開始する。
【０１６３】
まず、グローバルチャンク管理６４は、ストレージノード１０３のローカルプール階層管理３１から容量不足の通知を受け付ける（Ｓ４００１）。グローバルチャンク管理６４は、容量不足の通知に含まれるストレージノード１０３の種別を取得する。
【０１６４】
ステップＳ４００２では、グローバルチャンク管理６４が上記取得した種別を判定し、種別が高性能または標準であればステップＳ４００３へ進み、取得した種別が高コストパフォーマンスであればステップＳ４００８に進む。
【０１６５】
ステップＳ４００３では、グローバルチャンク管理６４が、グローバルＴｉｅｒ管理テーブル７２を参照してグローバルＴｉｅｒ１（２５−１）に空きがあるか否かを判定する。グローバルチャンク管理６４は、グローバルＴｉｅｒ１（２５−１）に空きがあればステップＳ４００６に進み、空きがなければステップＳ４００４に進む。
【０１６６】
ステップＳ４００６では、グローバルチャンク管理６４が、グローバルＴｉｅｒ１（２５−１）からＳＳＤのチャンク２１−Ｓを対象のストレージノード１０３に割り当てる。そして、グローバルチャンク管理６４は、対象のストレージノード１０３にチャンク２１−Ｓの追加の割り当てを通知してから処理を終了する。
【０１６７】
ステップＳ４００４では、グローバルチャンク管理６４が、対象のストレージノード１０３のローカルモニタ３４にローカルＴｉｅｒ１（２７−１）及びローカルＴｉｅｒ２（２７−２）が高性能のボリューム２００−１に占有されているか否かを問い合わせる。
【０１６８】
ローカルモニタ３４は、ローカルボリューム管理テーブル４２とローカルＴｉｅｒ制御テーブル４１を参照して、高性能なボリューム２００−１がローカルＴｉｅｒ１、２の占有状態を判定して管理ノード１０４のグローバルチャンク管理６４に応答する。
【０１６９】
グローバルチャンク管理６４は、対象のストレージノード１０３からの回答に応じて、高性能なボリューム２００−１がローカルＴｉｅｒ１（２７−１）及びローカルＴｉｅｒ２（２７−２）を占有していればステップＳ４００５へ進み、そうでない場合にはステップＳ４００８に進む。
【０１７０】
ステップＳ４００５では、グローバルチャンク管理６４が、グローバルＩＯ度数分布テーブル７６と、グローバル使用容量テーブル７７、グローバルＴｉｅｒ管理テーブル７２を参照して、標準のボリューム２００−２のうちがグローバルＴｉｅｒ１（ＳＳＤ）を使用しているボリュームがあるか否かを判定する。グローバルチャンク管理６４は、グローバルＴｉｅｒ１を使用している標準のボリューム２００−２があればステップＳ４００７へ進み、ＳＳＤを使用していなければステップＳ４００８に進む。
【０１７１】
ステップＳ４００７では、グローバルチャンク管理６４が、グローバルボリュームテーブル７３と、グローバルチャンク制御テーブル７４からグローバルＴｉｅｒ１を使用している標準のボリューム２００−２が所属するストレージノード１０３を特定する。これは各オーナノードごとのボリューム種別ごとの割り当て済みページ容量７３５と、割当てられたグローバルＴｉｅｒ１チャンク容量７４５の総和から算出することができる。
【０１７２】
そして、グローバルチャンク管理６４は、上記特定されたストレージノード１０３の標準のボリューム２００−２からＳＳＤのチャンク２１−Ｓを回収して、対象のストレージノード１０３に割り当てる。
【０１７３】
チャンク２１−Ｓの回収については、ローカルＴｉｅｒ１、２を使用している標準のボリューム２００−２のうち、ＳＳＤのチャンク２１−ＳをＨＤＤのチャンク２１−Ｈに置き換えた場合に、上記（１）式で算出されたＳＳＤミス率の低下が最も少ないボリューム２００−２をグローバルチャンク管理６４が選択することができる。
【０１７４】
グローバルチャンク管理６４は、回収したチャンク２１−Ｓの追加を対象のストレージノード１０３に通知して処理を終了する。
【０１７５】
ノード種別が高コストパフォーマンスノードや、標準のボリューム２００−２がグローバルＴｉｅｒ１を使用していない場合、グローバルＴｉｅｒ１を使用しているのは高性能ボリューム２００−１のみと判断する。その場合、他のノードからグローバルＴｉｅｒ１のチャンク２１−Ｓを回収することができないのでステップＳ４００８に進む。
【０１７６】
ステップＳ４００８では、グローバルチャンク管理６４が、グローバルＴｉｅｒ管理テーブル７２を参照してグローバルＴｉｅｒ２（２５−２）に空きチャンク２１−Ｈがあるか否かを判定する。グローバルＴｉｅｒ２（２５−２）に空きがある場合にはステップＳ４００９へ進み、空きがない場合にはステップＳ４０１０へ進む。
【０１７７】
ステップＳ４００９では、グローバルチャンク管理６４が、グローバルＴｉｅｒ２（２５−２）から空きチャンク２１−Ｈを対象のストレージノード１０３に割り当て、当該ストレージノード１０３に通知する。
【０１７８】
一方、ステップＳ４０１０では、グローバルＴｉｅｒ２（２５−２）に空きがないのでチャンク２１を割り当てることができないので、割り当て失敗の通知をディスプレイ５６に出力し、管理者に通知する。
【０１７９】
以上の処理によって、グローバルチャンク管理６４は、高性能なボリューム２００−１や標準のボリューム２００−２に対しては、グローバルＴｉｅｒ１（２５−１）のチャンク２１−Ｓを割り当てる。また、グローバルチャンク管理６４は、グローバルＴｉｅｒ１（２５−１）に空きチャンク２１−Ｓがない場合には、標準のボリューム２００−２が使用している高性能なボリューム２００−１のチャンク２１−Ｓを回収して、高性能なボリューム２００−１に再割り当てを実施する。さらに、グローバルチャンク管理６４は、標準のボリューム２００−２がグローバルＴｉｅｒ１（２５−１）を使用していない場合には、グローバルＴｉｅｒ２（２５−２）の空きチャンク２１−Ｈを割り当てる。
【０１８０】
＜管理インタフェース＞
図２１は、ボリューム管理ＧＵＩ８００の一例を示す図である。ボリューム管理ＧＵＩ８００は、例えば、グローバルボリューム管理６３が利用者の要求に応じて生成し、ディスプレイ５６に表示される。
【０１８１】
ボリューム管理ＧＵＩ８００は、グローバルＴｉｅｒ１、２のチャンク２１を割り当てたボリューム２００をボリュームの種別毎に棒グラフで表示する領域８０１と、高性能ＶＯＬのＳＳＤミス率と、標準ＶＯＬのＳＳＤミス率をそれぞれ表示するＳＳＤミス率表示領域８０２と、グローバルＴｉｅｒ１、２のチャンク２１を割り当てたボリューム２００をボリュームの種別毎にＩＯＰＨと割り当て済みページ容量のグラフで表示する表示領域８０３と、ボリュームリスト８０４と、ノードリスト８０５と、ボリューム２００の追加ボタン８０６と、ボリューム２００の削除ボタン８０７と、ストレージノード１０３の追加ボタン８０８と、ストレージノード１０３の削除ボタン８０９を含む。
【０１８２】
表示領域８０３のグラフは、図１５のグローバルＩＯ度数分布テーブル７６を折れ線グラフとしたもので、縦軸にＩＯＰＨ、横軸に種別毎の割り当て済みページ容量を示す。そして、横軸は、左から高性能ＶＯＬ、標準ＶＯＬ、高コストパフォーマンスＶＯＬの順に区分けし、さらに、グラフ上にグローバルＴｉｅｒ１の領域と、グローバルＴｉｅｒ２の領域を区分けする。
【０１８３】
グローバルＴｉｅｒ１とグローバルＴｉｅｒ２の境界が、標準ＶＯＬ（ボリューム２００−２）よりも高コストパフォーマンスボリューム側にあれば、標準ＶＯＬ及び高性能ＶＯＬへのＳＳＤの割り当て量は十分である。
【０１８４】
一方、グローバルＴｉｅｒ１とグローバルＴｉｅｒ２の境界が、標準ＶＯＬ（ボリューム２００−２）よりも高性能ＶＯＬ（２００−１）側に近づくと、ボリューム２００へのＳＳＤの割り当て量が不足しつつあると判定することができる。
【０１８５】
そして、グローバルＴｉｅｒ１とグローバルＴｉｅｒ２の境界が、高性能ＶＯＬの領域に入って、図１８に示したように、ＳＳＤミス率が許容ＳＳＤミス率を超えると、グローバルＴｉｅｒ１のＳＳＤの不足が検出されて、ＳＳＤの割り当て不足の通知が出力される。
【０１８６】
ボリュームリスト８０４には、管理ノード１０４が管理するボリューム２００の名称と、種別と、サイズ及び割り当て済みページ容量が表示される。
【０１８７】
ノードリスト８０５には、管理ノード１０４が管理するストレージノード１０３のサーバ名、種別、ＳＳＤ（ローカルＴｉｅｒ１）容量、及びＨＤＤ（ローカルＴｉｅｒ３）容量が表示される。
【０１８８】
ボリューム管理ＧＵＩ８００では、ボリューム２００やストレージノード１０３の追加や削除を行うことができる。ボリュームの追加ボタン８０６をクリックすることで、図２２のボリューム追加ＧＵＩ８１０からボリューム２００の追加処理を開始することができる。また、ノードの追加ボタン８０８をクリックすることで、図２３のノード追加ＧＵＩ８２０からストレージノード１０３の追加処理を開始することができる。
【０１８９】
ボリューム管理ＧＵＩ８００では、ボリュームリスト８０４で、不要なボリューム名を選択してから削除ボタン８０７をクリックすることで、当該ボリューム２００を削除することができる。
【０１９０】
同様に、ノードリスト８０５で、不要なサーバ名を選択してから削除ボタン８０９をクリックすることで、当該ストレージノード１０３を削除することができる。
【０１９１】
図２２は、ボリューム追加ＧＵＩ８１０の一例を示す図である。ボリューム追加ＧＵＩ８１０は、ボリュームの追加ボタン８０６がクリックされたときにグローバルボリューム管理６３によって、ディスプレイ５６に表示される。
【０１９２】
ボリューム追加ＧＵＩ８１０は、ＳＳＤミス率表示領域８１１と、グローバルＴｉｅｒ１、２のチャンク２１を割り当てたボリューム２００をボリュームの種別毎にＩＯＰＨと容量のグラフで表示する表示領域８１２と、追加するボリューム２００の名称８１３と、追加するボリューム２００のサイズ８１４と、追加するボリューム２００の種別８１５と、ボリューム２００の追加処理を開始する決定ボタン８１６が表示される。
【０１９３】
ＳＳＤミス率表示領域８１１と、表示領域８１２は図２１のボリューム管理ＧＵＩ８００と同様である。管理ノード１０４の利用者は、名称８１３、サイズ８１４、追加するボリューム２００の種別８１５を設定して決定ボタン８１６をクリックすることで新規のボリューム２００を追加することができる。
【０１９４】
図２３は、ノード追加ＧＵＩ８２０の一例を示す図である。ノード追加ＧＵＩ８２０は、ノードの追加ボタン８０８がクリックされたときにグローバルノード管理６１によって、ディスプレイ５６に表示される。
【０１９５】
ノード追加ＧＵＩ８２０は、ＳＳＤミス率表示領域８２１と、グローバルＴｉｅｒ１、２のチャンク２１を割り当てたボリューム２００をボリュームの種別毎にＩＯＰＨと容量のグラフで表示する表示領域８２２と、新規に追加するノードのリスト８２３と、ストレージノード１０３の追加処理を開始する決定ボタン８２４が表示される。
【０１９６】
リスト８２３には、選択ボタン８２３１と、サーバ名、種別、ＳＳＤ容量、ＨＤＤ容量、ＣＰＵ、メモリが表示される。図示の例では、リスト８２３で標準ノードの「Ｓｅｒｖ１」が選択された例を示す。
【０１９７】
ＳＳＤミス率表示領域８２１には、標準ノードの「Ｓｅｒｖ１」を追加する前後のＳＳＤミス率が表示され、図示の例では、標準ノード（１０３−２）を追加することで、標準ＶＯＬのＳＳＤミス率が２５％から５％に改善されることを示している。
【０１９８】
表示領域８２２には図２１のボリューム管理ＧＵＩ８００の内容に加え、標準ノードの「Ｓｅｒｖ１」を追加した場合のボリューム２００の領域が図中「ノード追加分」として表示される。これにより、管理ノード１０４の利用者は、選択したストレージノード１０３の性能を把握することが可能となる。
【０１９９】
そして、利用者は決定ボタン８２６をクリックすることで新規のストレージノード１０３を追加することができる。
【０２００】
以上のように、実施例１では、ＳＳＤ（２０−Ｓ）のページを割り当てた高性能ＶＯＬ（２００−１）と、ＳＳＤのページを割り当て可能な標準ＶＯＬ（２００−２）を含んで性能の優先度を制御するストレージノード１０３で、ボリューム２００毎の使用容量（割り当て済みページ容量）と、ＩＯＰＨ（ボリューム２００の性能に関する統計情報）を取得してＳＳＤミス率を算出することで、高性能ＶＯＬや標準ＶＯＬに割り当てられたグローバルＴｉｅｒ１のチャンクの不足を通知することができる。
【０２０１】
これにより、高性能なストレージデバイス（例えば、ＳＳＤ）が不足したことを管理ノード１０４の管理者に通知することが可能となる。ストレージシステムの管理者は、高性能なボリューム２００−１の不足によって性能が劣化する前に増設することが可能となる。その結果、管理者が性能情報常に監視する必要がなくなり、管理コストを削減することができる。
【０２０２】
なお、上記実施例１ではボリューム種別として高性能ＶＯＬ、標準ＶＯＬ、高コストパフォーマンスＶＯＬの３種類としたが、これらに限定されるものではない。他に上位アプリケーションごとのノード種別や、より細粒度の優先度を持つノード種別を用いてもよい。また、ストレージノード１０３のノード種別についても同様である。
【０２０３】
また、ドライブ２０の種別をＳＳＤとＨＤＤの２種類としたが、これに限定されるものではない。例えば、Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙのような高速なストレージデバイスや、同一のストレージデバイスであってもリード特化、ライト特化などの処理特性に応じてドライブ種別を分類するようにしてもよい。
【０２０４】
また、ＳＳＤ等の高性能なボリューム２００−１の不足の判定方法としてＳＳＤミス率を用いた例を示したが、これに限定されるものではない。例えば、ＳＳＤ期待ページのうち最も低アクセスのページのＩＯＰＨが、ＨＤＤドライブが仕様としてサポートするＩＯＰＨを上回った場合にＳＳＤが不足したと判定してもよい。
【０２０５】
なお、本実施例１では、管理者が新たなボリューム２００を生成する際に、ボリュームの種別を選択する例を示したが、グローバルボリューム管理６３が生成するボリューム種別を指定するようにしてもよい。
【０２０６】
また、上記実施例１では、ＳＳＤが不足する場合には管理ノード１０４のユーザに通知を行う例を示したが、図１９のボリューム２００作成時にボリューム２００の生成の可否として通知してもよい。
【実施例２】
【０２０７】
図２４、図２５は、本発明の実施例２を示す。本実施例２では、前記実施例１のグローバルプール２４を廃止して、管理ノード１０４がストレージノード１０３のローカルプール２６を管理するストレージシステムの一例を示す。
【０２０８】
図２４は、実施例２の管理ノード１０４の一例を示すブロック図である。本実施例２の管理ノード１０４は、前記実施例１の図３の構成から、グローバルノード管理６１と、グローバルプール階層制御６２と、グローバルボリューム管理６３と、グローバルチャンク管理６４と、これらの機能部が利用するテーブルを削除したもので、その他の構成は前記実施例１と同様である。
【０２０９】
なお、本実施例２の管理ノード１０４は、前記実施例１の図１４から図１６のテーブルを用い、ストレージノード１０３のＩＯ度数分布、使用容量を監視する。ただし、本実施例２では、グローバルプールを使用しないので、図１５のグローバルＩＯ度数分布テーブル７６と、図１６のグローバル使用容量テーブル７７は、ストレージノード１０３の単位で生成すれば良い。また、グローバルＩＯ度数分布テーブル７６とグローバル使用容量テーブル７７は、各ストレージノード１０３で生成しても良い。
【０２１０】
本実施例２のストレージノード１０３は、前記実施例１の図２と同様である。ただし、ストレージノード１０３は、自ノードのドライブ２０からボリューム２００に記憶領域を割り当てる。また、本実施例２では、前記実施例１に示したチャンクを利用せずに、ストレージノード１０３は、ドライブ２０のページをボリューム２００に割り当てる構成とする。また、各ストレージノード１０３は、前記実施例１の図１０〜図１３のテーブルを用いローカルプール２６を制御する。
【０２１１】
図２５は、ストレージノード１０３のローカルプール２６の一例を示すブロック図である。ストレージノード１０３−１（高性能ノード）では、高性能なドライブ２０−Ｓと高コストパフォーマンスのドライブ２０−Ｈでボリューム２００の優先度制御が実施される。
【０２１２】
ストレージノード１０３は、高性能なドライブ２０−Ｓと高コストパフォーマンスのドライブ２０−Ｈを複数有し、ローカルプール２６の階層制御を行う。ローカルプール２６は、高性能なドライブ２０−Ｓのページ（ＳＳＤページ）が割り当てられたローカルＴｉｅｒ１（２７−１）と、高コストパフォーマンスのドライブ２０−Ｈのページ（ＨＤＤページ）が割り当てられたローカルＴｉｅｒ２（２７−２）の２つの階層を有する。
【０２１３】
管理ノード１０４は、高性能なボリューム２００−１にローカルＴｉｅｒ１（２７−１）のＳＳＤページを優先的に割り当て、優先度の低い標準のボリューム２００−２（標準ＶＯＬ）にはローカルＴｉｅｒ１のＳＳＤページが余っていなければローカルＴｉｅｒ２のＨＤＤページを割り当てる。
【０２１４】
ストレージノード１０３のローカルモニタ３４は、前記実施例１と同様であり、ボリューム２００の性能を示す統計情報としてＩＯ数（またはＩＯＰＨ）を算出し、管理ノード１０４に通知する。
【０２１５】
管理ノード１０４は、ストレージノード１０３からボリューム２００の種別ごとのＩＯ統計情報と使用容量を取得して、ローカルプール２６ごとにボリューム種別ごとの使用容量とＩＯ度数分布を管理する。そして、管理ノード１０４は、上記情報に基づいてＳＳＤの不足の判定を行って、ＳＳＤの不足が発生していれば利用者へ通知を実施する。また、管理ノード１０４の利用者へ通知を行ってから、ボリュームを生成するストレージノード１０３の選択処理（図１９）を実施しても良い。
【０２１６】
管理ノード１０４は、前記実施例１の図１７、図１８に示した処理を実施して、ＳＳＤが不足した場合にはディスプレイ５６に通知を出力する。また、本実施例２では、ボリューム２００を新たに生成するストレージノード１０３を選択する処理では、図１９のステップＳ３００３のみを実行して、複数のストレージノード１０３間で負荷が集中するのを防止する。
【０２１７】
以上のように、本実施例２では、ストレージノード１０３毎のローカルプール２６で階層制御を実施する場合においても、ボリューム２００毎の使用容量と、ＩＯＰＨ（ＩＯの統計情報）を取得してＳＳＤミス率を算出することで、高性能なボリューム２００−１に割り当てるＳＳＤページの不足を検出した通知を出力することができる。これにより、高性能なボリューム２００−１の性能が劣化する前にＳＳＤを増設することが可能となる。
【実施例３】
【０２１８】
図２６、図２７は、本発明の実施例３を示す。本実施例３では、前記実施例１のローカルプール２６の階層（ローカルＴｉｅｒ２７−２〜２７−３）を廃止して単一の階層（ローカルＴｉｅｒ２７−１）とし、階層制御を行わないローカルプール２６を有する複数のストレージノード１０３に、グローバルプール２４からチャンク２１を提供するストレージシステムで、ローカルのボリューム２００の容量不足の判定および容量不足の通知を行う例を示す。
【０２１９】
図２６は、グローバルプール２４とローカルプール２６の関係を示すブロック図である。各ストレージノード１０３は自ノード内の高性能なドライブ２０−Ｓと、他のストレージノード１０３（他ノード）の高性能なドライブ２０−Ｓでローカルプール２６を構成する。
【０２２０】
本実施例３では、ローカルプール２６を自ストレージノード１０３内の高性能なドライブ２０−Ｓ（ＳＳＤ）のみで構成することで、ボリューム２００のアクセス性能を高くすることができる。特に高性能なボリューム２００−１にはローカルノード（自ノード）のチャンク２１（以下、ローカルチャンク）のみを割り当てる。
【０２２１】
一方、ボリューム２００の管理にシンプロビジョニングを適用した場合では、物理容量以上のボリューム２００を生成することができる。シンプロビジョニングでは、ユーザが使用するボリューム２００の容量はボリューム２００のサイズ以下となるため、このようなオーバープロビジョニングを行うことで容量効率を向上させることができる。
【０２２２】
上記シンプロビジョニングの運用では、ボリューム２００の使用容量がローカルのドライブ２０−Ｓの容量を超えた場合に、他のストレージノード１０３から提供されるチャンク２１−Ｓ（以下、リモートチャンク）の割り当てが発生し、アクセス性能が低下していく。
【０２２３】
なお、リモートチャンクはネットワークなどの遅延と、ネットワークなどの帯域の制限があるため、ローカルチャンクに比して性能が低い。このため、本実施例３では、ローカルチャンクを高性能なストレージデバイスとして扱い、リモートチャンクを低性能なストレージデバイスとして扱う。
【０２２４】
本実施例３では、管理ノード１０４がボリューム２００の実使用容量と、ローカルプール２６のローカルＳＳＤ（ローカルチャンク）の容量と、リモートＳＳＤ（リモートチャンク）の物理容量と、ＩＯの統計情報（ＩＯＰＨ）を取得して、リモートチャンクへのＩＯ量またはリモートチャンクのＳＳＤ割り当て量によりローカルプール２６のＳＳＤページが十分であるか否かを判定する。
【０２２５】
当該ストレージノード１０３（自ノード）でローカルプール２６のＳＳＤページの容量が、性能要件を満たすために不十分な場合には、管理ノード１０４の利用者に通知を行う。利用者は通知に示されたストレージノード１０３にＳＳＤデバイスを追加することで、ＳＳＤページの容量不足を解消する。または、管理ノード１０４が、他のストレージノード１０３（他ノード）で低優先度の標準のボリューム２００−２に自ノードのリモートチャンクが割り当てられている場合には、他ノードから自ノードのリモートチャンクを回収することでＳＳＤページの容量不足を解消する。これらの処理により利用者はストレージノード１０３ごとの容量不足を常に監視する必要がなくなり、必要なタイミングでデバイス追加を行うことが可能となる。
【０２２６】
管理ノード１０４は、回収したリモートチャンクをローカルチャンクとして自ノードのローカルプール２６へ割り当てて、ＳＳＤページの不足を解消する。管理ノード１０４は、リモートチャンクを回収した他ノードに不足したチャンクを割り当てる。
【０２２７】
本実施例３ではドライブ２０の種別としてＳＳＤ（２０−Ｓ）を使用する例を示すが、ＮＶＲＡＭなどの高速デバイスや、ＨＤＤなど低速デバイスを使用した場合でも適用可能である。
【０２２８】
本実施例３のストレージシステムの構成は、前記実施例１の図１〜図３と同様ではあるが、ローカルプール２６とグローバルプール２４の階層制御は行わず、グローバルプール２４のシンプロビジョニング機能を利用する。また、本実施例３では、グローバルプール２４のＳＳＤのチャンク２１−Ｓのみを使用し、ローカルプール２６ではローカルＴｉｅｒ２７−１のＳＳＤページを使用する。
【０２２９】
そして、高性能なボリューム２００−１（高性能ＶＯＬ）にはローカルチャンクのみを割り当て、標準のボリューム２００−２（標準ＶＯＬ）にはローカルチャンクまたはリモートチャンクを割り当てる。なお、本実施例３では、ＨＤＤを使用しないので、図４のストレージノード１０３−３に代わって、標準のボリューム２００−２で構成された標準ノードのストレージノード１０３−３Ａを用いる。
【０２３０】
管理ノード１０４は、前記実施例１の図５から図９のテーブルを用いてグローバルプール２４を制御する。また、図５の許容ＳＳＤミス率７８６は許容ローカルミス率と読み替えるものとする。
【０２３１】
ローカルミス率＝リモートチャンクへのIOPH／ローカルチャンクへのIOPH  ・・（３）
【０２３２】
管理ノード１０４は上記ローカルミス率を、図１４のモニタ情報収集テーブルと図２７のローカルプールＩＯ度数分布テーブル７９を用いて算出する。
【０２３３】
図２７は、ローカルプールＩＯ度数分布テーブル７９の構成の一例を示す図である。ローカルプールＩＯ度数分布テーブル７９は、管理ノード１０４のグローバルモニタ６５が、ローカルプール２６のＩＯ度数の分布をページ単位で管理するテーブルである。
【０２３４】
ローカルプールＩＯ度数分布テーブル７９は、ページランク７９１と、アクセス種別７９２と、ＩＯＰＨ７９３をひとつのエントリに含む。ページランク７９１には、論理ページのＩＯＰＨの順位が格納される。本実施例では、ＩＯＰＨが最大の論理ページを１位として降順に順位を設定した例を示す。
【０２３５】
アクセス種別７９２には、当該順位に該当する論理ページがローカルチャンクで構成されるか、リモートで構成されるかの情報が格納される。ＩＯＰＨには、当該順位に該当する論理ページのＩＯＰＨ７５３が格納される。
【０２３６】
なお、ローカルプールＩＯ度数分布テーブル７９には、論理ページ＃のフィールドを追加して、ボリューム２００を容易に特定できるようにしてもよい。
【０２３７】
一方、各ストレージノード１０３は、前記実施例１の図１０から図１３のテーブルを用いてローカルプール２６を制御する。上述のように、ローカルプール２６の階層は１階層のみの制御となる。
【０２３８】
図２７は、管理ノード１０４で行われるグローバルＴｉｅｒ１容量不足判定処理の一例を示すフローチャートである。このフローチャートは、所定の周期（例えば、1時間）で管理ノード１０４のグローバルモニタ６５が実行する。管理ノード１０４は、この処理によって、ストレージノード１０３のローカルチャンクの容量不足を検出した場合には、ユーザへの通知またはチャンクのリバランスによってローカルプール２６のＳＳＤの容量不足を解消する。
【０２３９】
ステップＳ５００１では、管理ノード１０４のグローバルモニタ６５が、各ストレージノード１０３のローカルモニタ３４からモニタ情報を収集して、前記実施例１と同様に図１４のモニタ情報収集テーブル７５やローカルプールＩＯ度数分布テーブル７９を生成する。
【０２４０】
ステップＳ５００２では、グローバルモニタ６５が、モニタ情報収集テーブル７５に登録された全てのボリューム２００について、ステップＳ５０１０までの処理を繰り返して実行する。
【０２４１】
ステップＳ５００３では、グローバルモニタ６５が、各ストレージノード１０３のボリューム２００について、リモートチャンクとローカルチャンクのＩＯアクセスの比率を上記（３）式からローカルミス率として算出する。
【０２４２】
ステップＳ５００４では、グローバルモニタ６５が、優先度管理テーブル７８の許容ローカルミス率（図中許容ＳＳＤミス率）を超えたか否かを判定する。ローカルミス率が許容ローカルミス率を超えていれば、グローバルモニタ６５は、ローカルチャンクの容量不足と判定してステップＳ５００５へ進み、そうでない場合にはステップＳ５０１０に進んで次のボリューム２００を選択してステップＳ５００２へ戻って上記処理を繰り返す。
【０２４３】
ステップＳ５００５では、グローバルモニタ６５が、グローバルノードテーブル７１を参照して、他のストレージノード１０３の空きチャンク容量を取得して、容量不足となったストレージノード１０３のボリューム２００を、他のストレージノード１０３のリモートチャンクでリバランス可能か否かを判定する。
【０２４４】
なお、リバランスの判定は、他ノードのボリューム２００に、自ノードのリモートチャンクが割り当てられて、かつ、他ノードのボリューム２００に割り当て可能な空きチャンク容量がある場合に、グローバルモニタ６５はリバランス可能と判定し、そうでない場合にはリバランス不可と判定する。
【０２４５】
グローバルモニタ６５は、ボリュームのリバランスが可能な場合にはステップＳ５００７に進み、そうでない場合には、ステップＳ５００６に進む。
【０２４６】
ステップＳ５００７では、上述したように、ローカルチャンクが容量不足となったストレージノード１０３（自ノード）が、他ノードにリモートチャンクを提供している場合には、グローバルモニタ６５は、当該リモートチャンクを他ノードのボリューム２００から回収し、ローカルチャンクとして自ノードのボリューム２００へ割り当てる。なお、グローバルモニタ６５は、回収した他ノードのボリューム２００に他のチャンクを割り当てる。
【０２４７】
また、グローバルモニタ６５は、前記実施例１と同様に、グローバルＩＯ度数分布テーブル７６のボリューム種別７６２とページランク７６１から、リモートチャンクを回収可能な標準のボリューム２００−２を選択することができる。
【０２４８】
ステップＳ５００６では、前記実施例１と同様に、ローカルチャンクが不足して性能が劣化する可能性が発生したことをディスプレイ５６に出力して、利用者に高性能なデバイス（ローカルチャンク）が不足したことを通知する。出力内容にはデバイスが不足したストレージノード１０３のノードＩＤ７１１を含め、利用者がそのノードにデバイスを追加できるようにする。
【０２４９】
次に、ステップＳ５００８では、グローバルモニタ６５が、当該ストレージノード１０３で対象のボリューム２００の使用容量に対し、チャンクの割り当て量を減らしても十分な物理容量が割り当てられるか否かを判定する。十分な物理容量は、例えば、使用容量／物理容量が７０％以上など、所定の空き比率以上であれば、ローカルプール２６の縮退が可能と判定する。
【０２５０】
グローバルモニタ６５は、プールの縮退が可能であれば、ステップＳ５００９に進んでローカルプール２６の縮退を実行し、そうでない場合にはステップＳ５０１０に進んで次のボリューム２００について上記の処理を実行する。
【０２５１】
ステップＳ５００９では、グローバルモニタ６５が、対象のボリューム２００からリモートチャンクを削除してローカルプール２６の縮退を実行し、ボリューム２００に対するリモートチャンクの割り当てを低減する。
【０２５２】
以上の処理によって、単一のドライブ２０−Ｓ（ＳＳＤ）を利用してローカルチャンクとリモートチャンクで性能差の異なるボリューム２００−１、２００−２を運用する場合でも、ローカルチャンクのページを割り当てた高性能ＶＯＬ（２００−１）と、リモートチャンクを割り当て可能な標準ＶＯＬ（２００−２）を含んで性能の優先度を制御するストレージノード１０３で、ボリューム２００毎の使用容量と、ＩＯＰＨ（ＩＯの統計情報）を取得してローカルミス率を算出することで、高性能ＶＯＬのストレージノード１０３に割り当てるローカルチャンクの不足を通知することができる。
【０２５３】
なお、上記実施例３では、ローカルミス率の計算にモニタ情報を使用しているが、これに限定されるものではない。例えば、チャンク間でＩＯの負荷分散制御を行うプールを有するストレージシステムでは、プールに含まれるローカルデバイス容量とリモートデバイス容量の容量比からローカルミス率を算出してもよい。
【０２５４】
＜まとめ＞
以上のように本実施例１〜３では、高性能なストレージデバイス（ＳＳＤ）と低性能なストレージデバイス（ＨＤＤ）を有するストレージノード１０３で、ＳＳＤの記憶領域を優先的に割り当てる高性能ボリュームと、ＳＳＤまたはＨＤＤの記憶領域を割り当てる低性能ボリュームを提供するストレージシステムで、管理ノード１０４が高性能ボリュームに割り当てたＳＳＤの不足を検出して通知する。これにより、ＳＳＤの不足が進行して高性能ボリュームの性能が劣化する以前に、高性能ボリュームへのＳＳＤの割り当てを実行することができる。
【０２５５】
管理ノード１０４は、ＳＳＤを割り当てる優先度を低性能ボリュームよりも高性能ボリュームの方を高く設定する。そして、管理ノード１０４は、ボリューム２００ごとのＩＯ数の単位時間当たりの積算値や転送速度や転送量など性能に関する統計情報と優先度からＳＳＤミス率（指標）を算出し、所定の許容値（許容ＳＳＤミス率７８６）と比較することで、迅速にＳＳＤの割り当て不足を検出することができる。
【０２５６】
このように、管理ノード１０４が、性能に関する統計情報と優先度に基づいて高性能なデバイスが不足していることを示す指標（ＳＳＤミス率）を算出することで、高性能なストレージデバイスを割り当てる優先度が高い高性能ボリュームと、優先度が低い低性能ボリュームを運用するストレージシステムにおいて、高性能ボリュームの性能が劣化する以前に高性能なストレージデバイスの不足を通知することが可能となる。
【０２５７】
また、上記実施例１〜３では、管理ノード１０４が独立した計算機で構成される例を示したが、ストレージノード１０３−１〜１０３−ｎのいずれかで管理ノード１０４を実行するようにしても良い。
【０２５８】
なお、上記実施例１〜３は、ＳＤＳの他に大規模ストレージシステムにも適用することが可能である。
【０２５９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０２６０】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０２６１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２６２】
１１  ＣＰＵ
１２  メモリ
２０−Ｓ  ドライブ（ＳＳＤ）
２０−Ｈ  ドライブ（ＨＤＤ）
２１−Ｓ  チャンク（ＳＳＤ）
２１−Ｈ  チャンク（ＨＤＤ）
２４  グローバルプール
２５−１、２５−２  グローバルＴｉｅｒ
２６−１〜２６−３  ローカルプール
２７−１〜２７−３  ローカルＴｉｅｒ
３１  ローカルプール階層管理
３２  ローカルボリューム管理
３３  ローカルページ管理
３４  ローカルモニタ３４
５１  ＣＰＵ
５２  メモリ
６１  グローバルノード管理
６２  グローバルプール階層制御
６３  グローバルボリューム管理
６４  グローバルチャンク管理
６５  グローバルモニタ
６６  ボリューム優先度管理
１０１−１〜１０１−ｍ  ホスト
１０２  ネットワーク
１０３−１〜１０３−ｎ  ストレージノード
１０４  管理ノード
【図１】
2019191997.tif 000003
【図２】
2019191997.tif 000004
【図３】
2019191997.tif 000005
【図４】
2019191997.tif 000006
【図５】
2019191997.tif 000007
【図６】
2019191997.tif 000008
【図７】
2019191997.tif 000009
【図８】
2019191997.tif 000010
【図９】
2019191997.tif 000011
【図１０】
2019191997.tif 000012
【図１１】
2019191997.tif 000013
【図１２】
2019191997.tif 000014
【図１３】
2019191997.tif 000015
【図１４】
2019191997.tif 000016
【図１５】
2019191997.tif 000017
【図１６】
2019191997.tif 000018
【図１７】
2019191997.tif 000019
【図１８】
2019191997.tif 000020
【図１９】
2019191997.tif 000021
【図２０】
2019191997.tif 000022
【図２１】
2019191997.tif 000023
【図２２】
2019191997.tif 000024
【図２３】
2019191997.tif 000025
【図２４】
2019191997.tif 000026
【図２５】
2019191997.tif 000027
【図２６】
2019191997.tif 000028
【図２７】
2019191997.tif 000029
【図２８】
2019191997.tif 000030