(57)【特許請求の範囲】
【請求項１】
データのリード又はライトのためのコマンドを送信するコンピュータ装置にネットワークを介して接続されるよう構成され、記憶装置であるドライブをそれぞれ搭載する複数のドライブボックスと、前記複数のドライブボックスに接続されるストレージコントローラとを有するストレージシステムであって、
前記複数のドライブボックスの第１のドライブボックスは、
前記コンピュータ装置に、第１の記憶領域を提供し、
前記ストレージコントローラは、前記第１の記憶領域と、前記第１の記憶領域を構成する前記ドライブの物理的記憶領域との対応を管理するアドレス管理テーブルを格納し、
前記第１のドライブボックスは、前記コンピュータ装置から前記第１の記憶領域に対するコマンドを受領すると、前記コマンドを前記ストレージコントローラに転送し、
前記コマンドを受領した前記ストレージコントローラは、前記アドレス管理テーブルに基づいて、データ格納先の情報を含むデータ転送コマンドを生成し、前記第１のドライブボックスに転送し、
前記データ転送コマンドを受領した前記第１のドライブボックスは、前記データ転送コマンドに含まれるデータ格納先が、前記複数のドライブボックスの第２のドライブボックスである場合には、前記第２のドライブボックスに前記データ転送コマンドを転送する
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、
前記第１の記憶領域は、ＮＶＭｅにおけるＮａｍｅ  ＳｐａｃｅまたはＳＣＳＩにおけるＬＵであることを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記第１の記憶領域を構成する前記ドライブの記憶領域が不足すると判断すると、
前記第１の記憶領域を提供するプールの容量の増加、前記第１のドライブボックスに新規なドライブの追加、あるいは、新規なドライブボックスの追加により、前記物理的記憶領域の容量を拡張された前記物理的記憶領域の容量を、前記第１の記憶領域に対応付けることが可能な状態に前記アドレス管理テーブルを更新する
ことを特徴とするストレージシステム。
【請求項４】
請求項３に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記コンピュータ装置からの前記コマンドの対象データのアクセス頻度に基づいて、前記対象データの格納先を前記第１のドライブボックス及び前記第２のドライブボックスの何れかに決定する
ことを特徴とするストレージシステム。
【請求項５】
請求項３に記載のストレージシステムにおいて、
前記第１のドライブボックスは、
前記コンピュータ装置、前記複数のドライブボックスの他のドライブボックスと接続される制御部と有し、
前記データ転送コマンドを受領した前記第１のドライブボックスの前記制御部は、前記データ転送コマンドに含まれる対象データの格納先が、前記複数のドライブボックスの前記第２のドライブボックスである場合には、前記第２のドライブボックスに前記データ転送コマンドを転送すると共に、前記対象データを前記第１のドライブボックスの前記ドライブにデータを格納する
ことを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記物理的記憶領域の容量を拡張するため前記新規なドライブボックスを追加すると、
前記第１のドライブボックスへ前記データ転送コマンドを転送するときに、前記追加したドライブボックスにデータを格納させるかを判断し、
前記追加したドライブボックスにデータを格納させると判断すると、前記追加したドライブボックスと前記コンピュータ装置と間の新しいパスを用いるよう前記コンピュータ装置に指示を行う
ことを特徴とするストレージシステム。
【請求項７】
データのリード又はライトのためのコマンドを送信するコンピュータ装置にネットワークを介して接続されるよう構成され、記憶装置であるドライブをそれぞれ搭載する第１のドライブボックスと第２のドライブボックスを含む複数のドライブボックスと、前記複数のドライブボックスが前記コンピュータ装置に提供する記憶領域と、前記記憶領域を構成する前記ドライブの物理的記憶領域との対応を管理するアドレス管理テーブルを格納するストレージコントローラとを有するストレージシステムにおける、前記第１のドライブボックスにおいて、
前記第１のドライブボックスは、
前記コンピュータ装置に、第１の記憶領域を提供し、
前記コンピュータ装置から前記第１の記憶領域に対するコマンドを受領すると、前記コマンドを前記ストレージコントローラに転送し、
前記第１のドライブボックスから転送された前記コマンドを受領した前記ストレージコントローラが前記アドレス管理テーブルに基づいて生成した、データ格納先の情報を含むデータ転送コマンドを受領すると、前記データ転送コマンドに含まれるデータ格納先が、前記第２のドライブボックスである場合には、前記第２のドライブボックスに前記データ転送コマンドを転送する
ことを特徴とする第１のドライブボックス。
【請求項８】
請求項７に記載の第１のドライブボックスにおいて、
前記第１のドライブボックスは、
前記コンピュータ装置、前記複数のドライブボックスの他のドライブボックスと接続され、前記コンピュータ装置からのコマンドを処理する制御部とを有し、
前記制御部により、前記コンピュータ装置に提供される前記第１の記憶領域は、ＮＶＭｅにおけるＮａｍｅ  ＳｐａｃｅまたはＳＣＳＩにおけるＬＵである
ことを特徴とする第1のドライブボックス。
【請求項９】
データのリード又はライトのためのコマンドを発行するコンピュータ装置にネットワークを介して接続される複数のドライブボックスと、前記複数のドライブボックスに接続されるストレージコントローラとを有するストレージシステムのデータ転送方法であって、
前記複数のドライブボックスの第１のドライブボックスは、
前記コンピュータ装置に、第１の記憶領域を提供し、
前記ストレージコントローラは、前記第１の記憶領域と、前記第１の記憶領域を構成する前記複数のドライブボックスの物理的記憶領域との対応を管理するアドレス管理テーブルを格納し、
前記第１のドライブボックスは、前記コンピュータ装置から前記第１の記憶領域に対するコマンドを受領すると、前記コマンドを前記ストレージコントローラに転送し、
前記コマンドを受領した前記ストレージコントローラは、前記アドレス管理テーブルに基づいて、データ格納先の情報を含むデータ転送コマンドを生成し、前記第１のドライブボックスに転送し、
前記データ転送コマンドを受領した前記第１のドライブボックスは、前記データ転送コマンドに含まれるデータ格納先が、前記複数のドライブボックスの第２のドライブボックスである場合には、前記第２のドライブボックスに前記データ転送コマンドを転送する
ことを特徴とするストレージシステムのデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、ドライブボックス、ストレージシステム及びストレージシステムのデータ転送方法に関し、例えば、フラッシュドライブを搭載したシステムに適用して好適なものである。
【背景技術】
【０００２】
ストレージシステムでは、ストレージのフロントエンドネットワークにホストコンピュータを接続し、フロントエンドネットワークとは互いに独立したバックエンドネットワークに、ドライブボックスを接続している。
【０００３】
ホストコンピュータからのコマンドをストレージコントローラが受信すると、例えばリードコマンドの場合、ストレージコントローラがドライブボックス内のドライブからデータを読み出し、ホストコンピュータにデータ転送を行う。
【０００４】
従来、フロントエンドネットワークはＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）ネットワークやＥｔｈｅｒネットワーク、バックエンドネットワークはＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）ネットワークが主流であり、ドライブボックスは、ＪＢＯＤ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  Ｏｆ  Ｄｉｓｋｓ）で、ドライブボックスのスロットに、データを格納するＳＡＳ／ＳＡＴＡドライブを複数搭載する。
【０００５】
近年、ストレージシステムの性能向上に向けて、高性能化を狙ったＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のフラッシュドライブが登場し、フラッシュドライブに最適なＮＶＭｅプロトコルが規格化された。
【０００６】
また、ネットワーク接続によるドライブ接続の高拡張性に向けて、ＮＶＭｅプロトコルをネットワーク上で用いることができるＮＶＭｅ  ｏｖｅｒ  Ｆａｂｒｉｃｓ（ＮＶＭｅｏＦ）の規格が登場し、ＮＶＭｅ−ｏＦに対応したドライブボックスであるＦＢＯＦ（Ｆａｂｒｉｃ−ａｔｔａｃｈｅｄ  Ｂｕｎｃｈ  ｏｆ  Ｆｌａｓｈ）が登場した。
【０００７】
ところが、ホストコンピュータとストレージコントローラとドライブボックスのデータ転送の経路は、従来と同じであることから、ドライブボックスとして、ＦＯＢＦを複数台設置しても、ストレージコントローラのデータ転送帯域がボトルネックとなり、ＦＢＯＦの性能を引き出すことができないという問題が考えられる。
【０００８】
これに対し、フロントエンドネットワークとバックエンドネットワークを統合し、ホストコンピュータ、ストレージコントローラ、ドライブボックスを、共通のネットワークに直接接続して、データ転送することで、ストレージコントローラのデータ転送帯域のボトルネックを解消する事が特許文献１に示されている。
【０００９】
例えば、特許文献１によれば、ホストコンピュータで動作するエージェントソフトウエアが、ホストコンピュータのアクセス先データに対応するＦＢＯＦ内のドライブとそのアドレスをストレージコントローラに問い合わせ、得られた情報を元に、直接ＦＢＯＦ内のドライブにアクセスすることが開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第９８００６６１号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１によれば、ホストコンピュータとＦＢＯＦが直接つながる構成のため、ホストコンピュータがＦＢＯＦのドライブに直接アクセスできる一方で、エージェントソフトウエアで、ストレージ機能のための制御や計算をしなくてはならず、ホストコンピュータ側に、高信頼な処理を行うための計算負荷がかかる。
【００１２】
例えば、ストレージコントローラで動作する、ＲＡＩＤなどのデータ保護機能、スナップショットなどの、ストレージ装置の機能の動作と、エージェントソフトウエアの動作との同期が必要となり、ネットワークを介した制御が必要となり、性能を低下させることが考えられる。
【００１３】
また、シンプロビジョニングにより、ＦＢＯＦに搭載するドライブの合計容量より大きな仮想化ストレージ容量を定義した場合、ドライブの合計容量を超えた分の容量を使うときは、新たなＦＢＯＦの追加が必要になる。
【００１４】
従来は、ホストコンピュータとＦＢＯＦの間のストレージコントローラがＦＢＯＦの物理的な変更をホストコンピュータに隠蔽していたため、新たなＦＢＯＦを追加したときも、ホストコンピュータへの変更が必要なかったが、特許文献１の構成ではホストコンピュータとＦＢＯＦを直接つなげることになるため、ホストコンピュート側で物理的な構成変更への対応が必要となる。
【００１５】
そこで、本発明の目的は、ホストコンピュータとＦＢＯＦを直接接続する構成において、ドライブの追加等によって容量を増加させても、ホストコンピュータの設定を変更する必要がない、ドライブボックス、ストレージシステム及びデータ転送方法を提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するためのストレージシステムの実施形態の一つは、データのリード又は、及びライトのためのコマンドを送信するコンピュータ装置にネットワークを介して接続されるよう構成され、記憶装置であるドライブをそれぞれ搭載する複数のドライブボックスと、複数のドライブボックスに接続されるストレージコントローラとを有するストレージシステムであって、複数のドライブボックスの第１のドライブボックスは、コンピュータ装置に、第１の記憶領域を提供し、ストレージコントローラは、第１の記憶領域と、第１の記憶領域を構成するドライブの物理的記憶領域との対応を管理するアドレス管理テーブルを格納し、第１のドライブボックスは、コンピュータ装置から第１の記憶領域に対するコマンドを受領すると、コマンドをストレージコントローラに転送し、コマンドを受領したストレージコントローラは、アドレス管理テーブルに基づいて、データ格納先の情報を含むデータ転送コマンドを生成し、第１のドライブボックスに転送し、データ転送コマンドを受領した第１のドライブボックスは、データ転送コマンドに含まれるデータ格納先が、複数のドライブボックスの第２のドライブボックスである場合には、第２のドライブボックスにデータ転送コマンドを転送する。
【発明の効果】
【００１７】
本発明の代表的な実施例によれば、ホストコンピュータとドライブボックス間で直接データ転送する構成において、ドライブ、ドライブボックス等の追加による容量の拡張を、ホストコンピュータの設定を変更することなく実現することができる。
【００１８】
前記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１９】
【図１】実施例１における情報システムの構成例を示すブロック図。
【図２】実施例１におけるドライブボックスの構成例を示すブロック図。
【図３】実施例１におけるホストコンピュータ、ストレージコントローラ、ドライブボックスのプラグラム構成例を示すブロック図。
【図４】実施例１における情報システムの論理的構造、データ構造例を示すブロック図。
【図５】実施例１におけるアドレス管理テーブルの例を示す図。
【図６】実施例１におけるドライブボックス追加フローチャートを示す図。
【図７】実施例１による、ホストコマンドを実行する方法の概略を示す図。
【図８】実施例１におけるデータ配置判定方法によるドライブボックス選択フローチャートを示す図。
【図９】実施例１におけるホストコマンドを実行する方法の概略を示す図。
【図１０】実施例１によるデータ移動処理フローチャートを示す図。
【図１１】実施例１におけるデータ配置判定テーブルを示す図。
【図１２】実施例２におけるホストコマンドを実行する方法のホストへのパス追加の概略を示す図。
【図１３】実施例２における情報システムのネットワーク共通化の構成例を示すブロック図。
【発明を実施するための形態】
【００２０】
以下、図面に基づいて、本発明の実施の形態を説明する。
【００２１】
なお、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされており、本発明は、他の種々の形態でも実施する事が可能であり、特に限定しない限り、各構成要素は単数でも複数でも構わない。
【００２２】
また、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが、発明の解決手段に必須であるとは限らない。
【００２３】
以下の説明では、「テーブル」、「リスト」、「キュー」、「ＤＢ」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよく、データ構造に依存しないことを示すため、「ｘｘｘのテーブル」、「ｘｘｘのリスト」、「ｘｘｘのキュー」、「ｘｘｘのＤＢ」等を「ｘｘｘ情報」等と称することがある。
【００２４】
以下の説明では、識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ＩＤ」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【００２５】
以下の説明では、同一あるいは同様な機能を有する構成要素が複数ある場合には、基本的に同一の符号を付して説明するが、機能が同じであっても機能を実現するための手段が異なる場合がある。
【００２６】
さらに、後述する本発明の実施例は、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【００２７】
また、以下の説明では「プログラム」を主語として処理を説明することがあるが、プログラムはプロセッサ（例えば、ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実行されることによって、定められた処理に対して、適宜に記憶資源（例えば、メモリ）、および／または、インタフェースデバイス（通信ポート）等を用いて行うため、処理の主体がプロセッサとして説明してもよい。
【００２８】
プログラムを主語として説明された処理は、プロセッサを有する計算機（例えば、計算ホスト、ストレージ装置）が行う処理としてもよい。
【００２９】
また、以下の説明では、「コントローラ」の表現で、プロセッサ又はプロセッサが行う処理の一部又は全部を行うハードウェア回路を指してもよい。
【００３０】
プログラムは、プログラムソース（例えば、プログラム配布サーバや、計算機が読み取り可能な記憶メディア）から、各計算機にインストールされてもよく、この場合、プログラム配布サーバはＣＰＵと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶し、配布プログラムをＣＰＵが実行することで、プログラム配布サーバのＣＰＵは配布対象のプログラムを他の計算機に配布してもよい。
【００３１】
また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００３２】
また、以下の説明において、「ＰＤＥＶ」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）でよい。ＰＤＥＶは、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）でよい。ストレージシステムに異なる種類のＰＤＥＶが混在していてもよい。
【００３３】
また、以下の説明において、「ＲＡＩＤ」は、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓの略である。ＲＡＩＤグループは、複数のＰＤＥＶ（典型的には同種のＰＤＥＶ）で構成され、そのＲＡＩＤグループに関連付けられたＲＡＩＤレベルに従いデータを記憶する。ＲＡＩＤグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するＲＡＩＤグループのことでよい。
【００３４】
また、以下の説明において、「ＶＯＬ」はボリュームの略であり、物理的な記憶デバイスまたは、論理的な記憶デバイスでもよい。ＶＯＬは、実体的なＶＯＬ（ＲＶＯＬ）であってもよいし、仮想的なＶＯＬ（ＶＶＯＬ）であってもよい。「ＲＶＯＬ」は、そのＲＶＯＬを有するストレージシステムが有する物理的な記憶資源（例えば、１以上のＲＡＩＤグループ）に基づくＶＯＬでよい。「ＶＶＯＬ」は、外部接続ＶＯＬ（ＥＶＯＬ）と、容量拡張ＶＯＬ（ＴＰＶＯＬ）と、スナップショットＶＯＬとのうちのいずれでもよい。ＥＶＯＬは、外部のストレージシステムの記憶空間（例えばＶＯＬ）に基づいており、ストレージ仮想化技術に従うＶＯＬでよい。ＴＰＶＯＬは、複数の仮想領域（仮想的な記憶領域）で構成されており容量仮想化技術（典型的にはＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）に従うＶＯＬでよい。
【００３５】
「プール（ＰＯＯＬ）」は、論理的な記憶領域（例えば複数のプールＶＯＬの集合）であり、用途ごとに用意されてよい。例えば、プールとして、ＴＰプールであってよい。ＴＰプールは、複数のページ（実体的な記憶領域）で構成された記憶領域でよい。ストレージコントローラが、ホストコンピュータ（以下、ホスト）から受信したライト要求が指定するアドレスが属する仮想領域（ＴＰＶＯＬの仮想領域）にページが割り当てられていない場合、その仮想領域（ライト先仮想領域）にＴＰプールからページを割り当てる（ライト先仮想領域にページが割り当て済であってもページが新たにライト先仮想領域に割り当てられてもよい）。「プールＶＯＬ」は、プールの構成要素となるＶＯＬでよい。プールＶＯＬは、ＲＶＯＬであってもよいしＥＶＯＬであってもよい。
【００３６】
また、以下の説明では、ホストから認識されるＶＯＬ（ホストに提供されるＶＯＬ）を「ＬＤＥＶ」と言う。以下の説明では、ＬＤＥＶは、ＴＰＶＯＬ（又はＲＶＯＬ）であり、プールは、ＴＰプールである。しかし、本発明は、容量拡張技術（Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）が採用されていないストレージ装置にも適用できる。
【００３７】
また、以下の説明では、ＳＣＳＩにおけるボリュームを「Ｌｏｇｉｃａｌ  Ｕｎｉｔ（以降、ＬＵ）」と言う。ＬＵはＬＵ  Ｓｉｚｅ  Ｅｘｐａｎｓｉｏｎ（以降、ＬＵＳＥ）機能適用時は、ＬＤＥＶと１：Ｎで対応する。
【００３８】
また、以下の説明では、ＮＶＭｅにおけるボリュームを「Ｎａｍｅ  Ｓｐａｃｅ（以降、ＮＳ）」と言う。ＮＳはＳＣＳＩのＬＵと対応する。
【実施例１】
【００３９】
実施例１は、ホストコンピュータ、ストレージコントローラ、ドライブボックスからなる情報システムにおいて、データ保存先を高信頼なストレージコントローラで管理しつつ、ホストコンピュータとドライブボックス間で直接データ転送する。ドライブボックスを追加する際には、元々接続していたドライブボックスを経由して、ホストコンピュータとデータを転送（２段転送という）を行う。また、データ配置の最適化により、２段転送のオーバヘッドを抑える。
【００４０】
図１は、実施例１に係る情報システムの構成例を示すブロック図を示す。
【００４１】
この第１の実施形態の情報処理システムは、１又は複数のホストコンピュータ１００と、記憶装置である１又は複数のドライブ１４０を搭載した、１又は複数のドライブボックス１１０を備え、これらが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はインターネット等からなるネットワーク１３０を介して相互に接続される。ドライブボックス１１０と１又は複数の２重化構造を備えたストレージコントローラ１２０がＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はＰＣＩ  Ｅｘｐｒｅｓｓ等で接続される。
【００４２】
ストレージコントローラ１２０とドライブボックス１１０とでストレージシステムを構成しており、例えば、ドライブボックス１１０はＦＢＯＦを使用しても良い。
【００４３】
ネットワーク１３０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｉｎｆｉｎｉｂａｎｄ（登録商標）等の高性能なネットワークで、ＮＶＭｅ  ｏｖｅｒ  Ｆａｂｒｉｃｓ（ＮＶＭｅ−ｏＦ）に対応している。
【００４４】
ホストコンピュータ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びメモリ等の記憶装置を備えたコンピュータ装置であり、ユーザ操作や、実装されたプログラムからの要求に応じてネットワーク１３０を介して、ドライブボックス１１０とストレージコントローラ１２０から構成される、ストレージシステムに、ライトコマンドやリードコマンド（ＩＯコマンド）を送信する。
【００４５】
ホストコンピュータ１００は、ネットワーク１３０を介し、ストレージコントローラ１２０との通信時におけるプロトコル制御を行い、ドライブボックス１１０とデータのやり取りを行う。
【００４６】
ストレージシステムは、ホストコンピュータ１００にストレージとしての機能を提供するため、冗長化されたストレージコントローラ１２０Ａとストレージコントローラ１２０Ｂから構成される。ストレージコントローラ１２０は、ＣＰＵと、メモリ等の記憶装置とを備える。ストレージコントローラ１２０Ａとストレージコントローラ１２０Ｂは同じ構成である。
【００４７】
ストレージコントローラ１２０は、１又は複数のＣＰＵコアを有し、各ＣＰＵコアは、ホストコンピュータ１００からのリードコマンドやライトコマンドに応じて、対応するドライブボックス１１０に格納されたデータを転送指示する。
【００４８】
ストレージコントローラ１２０のメモリは、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の半導体メモリで構成され、ＳＣＭ（Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ）などの不揮発メモリと組み合わせて構成してもよく、ＣＰＵの主記憶として、実行プログラム（ストレージ制御プログラム等）や、ＣＰＵが参照する管理テーブル等が格納される。また、メモリは、ストレージコントローラ１２０のディスクキャッシュ（キャッシュメモリ）としても使用される。
【００４９】
ストレージコントローラ１２０は、例えば、ドライブボックス１１０とインタフェースを持ち、ホストコンピュータ１００から指示されたデータ転送や、データコピー等のストレージ処理にかかる処理に関する情報をドライブボックス１１０に通信する。
【００５０】
ドライブボックス１１０は、１又は複数のドライブ１４０を搭載し、ホストコンピュータ１００とネットワーク１３０を介して接続されており、ホストコンピュータ１００のデータを格納する。また、ストレージコントローラ１２０からの指示により、ホストコンピュータ１００とデータ転送を実施する。
【００５１】
ドライブボックス１１０は、例えば、冗長パスを持ち、片方のパスの接続が切れた場合でも、ホストコンピュータ１００とデータ通信できる構成をとってもよい。また、ストレージコントローラ１２０とも冗長パスを持ち、同様に、片方のパスの接続が切れた場合でも、ストレージコントローラ１２０と通信できる構成をとってもよい。
【００５２】
ドライブボックス１１０には、ＯＳやストレージ制御プログラム、管理テーブルのバックアップ等が格納される。ドライブボックス１１０に搭載されるドライブ１４０は、例えば、ＨＤＤやＳＳＤである。
【００５３】
図２は、実施例１に係るドライブボックスの構成例を示す。
【００５４】
ドライブボックス１１０は、冗長化されたエンクロージャ２００で構成され、１又は複数のドライブ１４０を搭載する。
【００５５】
エンクロージャ２００は、インタフェース１６０、プロセッサ２１０、メモリ１５０、スイッチ２５０で構成され、ホストコンピュータ１００からのコマンドを処理し、ドライブ１４０との間でデータの転送制御を行う制御部となる。
【００５６】
インタフェース１６０は、フロントポート１８０を持ち、フロントパス１９０を経由して、ホストコンピュータ１００又は他のドライブボックスとつながるネットワーク１３０と接続される。また、インタフェース１６０は、プロセッサ２１０とつながり、ホストコンピュータ１００又は他のドライブボックス１１０とのコマンドやデータ等を通信する。
【００５７】
プロセッサ２１０は、インタフェース１６０、メモリ１５０、スイッチ２５０と接続され、冗長化のため他のプロセッサ２１０とつながるエンクロージャパス１７０と接続される。プロセッサ２１０は、例えば、ホストコンピュータ１００、他ドライブボックス、ストレージコントローラ１２０とのコマンドやデータの処理や、ドライブボックス１１０及びドライブ１４０の制御を行う。また、ストレージコントローラ１２０の機能の一部をオフロードして処理しても良い。
【００５８】
メモリ１５０は、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の半導体メモリで構成され、ＳＣＭ（Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ）などの不揮発メモリと組み合わせて構成してもよく、プロセッサ２１０の主記憶として、実行プログラム（ドライブボックス１１０制御プログラム等）や、プロセッサが参照する管理テーブル等が格納される。また、メモリ１５０は、データ転送の際のバッファメモリやキャッシュメモリとしても使用される。
【００５９】
スイッチ２５０は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓのスイッチで、プロセッサ２１０とつながり、スイッチポート２２０を介して、ドライブ１４０のドライブポート２４０とつながる。スイッチにより、１又は複数のドライブ１４０と接続する。なお、冗長化のため、ドライブ１４０は複数のエンクロージャ２００のスイッチ２５０と接続しても良い。また、スイッチポート２２０を介して、バックエンドパス２３０経由で、ストレージコントローラ１２０と接続しても良い。このとき、冗長化のため、片方のスイッチ２５０から、複数のバックエンドパス２３０を介して、複数のストレージコントローラ１２０へ接続してもよい。
【００６０】
ドライブ１４０は、１又は複数台のドライブボックス１１０に搭載され、例えば、冗長化のために、複数ドライブポート２４０を持ち、複数エンクロージャ２００内のスイッチ２５０と接続する。
【００６１】
図３は、実施例１に係る情報システムのホストコンピュータ、ストレージコントローラ、ドライブボックスのプログラム構成例を示すブロック図を示す。
【００６２】
プログラムは、例えばホストコンピュータ１００やストレージコントローラ１２０では、メモリに格納されており、ＣＰＵのＣＰＵコアが実行することにより、各種処理が実行される。また、ドライブボックス１１０では、メモリ１５０に格納されており、プロセッサ２１０が実行することにより、各種処理が実行される。なお、ＣＰＵやプロセッサ２１０ではなく、ＧＰＵやＡＳＩＣやＦＰＧＡのようなハードウェアを用いて、プログラムを実行しても良く、プログラムの処理が、専用ハードウェアとなっており、それが処理されても良い。以下においては、理解の容易化のため、かかるプログラムをＣＰＵやプロセッサ２１０が実行するものとして説明を進める。
【００６３】
ホストコンピュータ１００は、アプリケーション２７０とイニシエータドライバ２８０のプログラムを持つ。ここでは、例として、主要なものを上げており、例えばＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）などの他のプログラムは省略する。
【００６４】
アプリケーション２７０は、例えば、数値計算プログラムや、データベース、Ｗｅｂサービス等のプログラムであり、勘定系のシステムや、分析系のシステム等、様々な用途を想定する。
【００６５】
イニシエータドライバ２８０Ｃは、ディスクなどの周辺装置として動作するターゲットドライバ２９０を認識し、リード、ライト等のコマンドのインタフェースをアプリケーション２７０に対して提供する。例えば、ホストコンピュータ１００のイニシエータドライバ２８０Ｃは、ストレージコントローラ１２０のターゲットドライバ２９０Ａやドライブボックス１１０のターゲットドライバ２９０Ｂが提供する記憶領域を認識する。もし、ホストコンピュータ１００に対して、ストレージコントローラ１２０がＮＶＭｅ−ｏＦのイニシエータとして動作する形態の場合、イニシエータドライバ２８０は、ＮＶＭｅ−ｏＦ対応のドライバとしても良い。
【００６６】
ストレージコントローラ１２０は、ターゲットドライバ２９０Ａ、イニシエータドライバ２８０Ａ、ホストコマンド処理２６０、データ転送制御３００Ａ、キャッシュメモリ制御３１０、ストレージ機能処理３８０Ａ、デステージ処理３２０、アドレス変換処理３３０、データ配置最適化処理４００等のプログラムを有し、ホストコンピュータ１００と同様に、および図示しないＯＳで構成される。
【００６７】
ストレージコントローラ１２０のターゲットドライバ２９０Ａは、ドライブボックス１１０のイニシエータドライバ２８０Ｂ及びホストコンピュータ１００のイニシエータドライバ２８０Ｃに対して、記憶領域を提供するとともに、コマンドの受信、コマンドの完了応答の送信を行う。例えば、図１の構成を採るときは、ホストコンピュータ１００のイニシエータドライバ２８０Ｃからの要求に対して、ドライブボックス１１０のターゲットドライバ２９０Ｂがそれを受け、ドライブボックス１１０のホストコマンド転送処理３４０がコマンドを転送し、ドライブボックス１１０のイニシエータドライバ２８０Ｂ経由で、ストレージコントローラ１２０のターゲットドライバ２９０Ａが受信する。
【００６８】
ストレージコントローラ１２０のイニシエータドライバ２８０Ａは、ドライブボックス１１０のターゲットドライバ２９０Ｂに対して、コントローラコマンドの送信等を行う。なお、ストレージコントローラ１２０にドライブボックス１１０が記憶領域を提供しても良い。ここで、コントローラコマンドとは、ストレージコントローラ１２０から発行されるコマンドを示す。
【００６９】
ストレージコントローラ１２０のホストコマンド処理２６０は、ホストコンピュータ１００が発行したコマンドを、ターゲットドライバ２９０Ａを介して受信し、コマンドの解析、コマンドの処理（リードコマンド、ライトコマンド、管理コマンド）、コマンドの完了応答の作成、ターゲットドライバ２９０Ａを介したコマンドの完了応答の送信等を行う。
【００７０】
ストレージコントローラ１２０のデータ転送制御３００Ａは、ホストコマンド処理２６０の指示に従い、例えば、ドライブボックス１１０にホストコンピュータ１００とのデータ転送処理を指示する。また、複数のドライブボックス１１０間のデータ転送が必要な場合は、これも指示する。
【００７１】
ストレージコントローラ１２０のキャッシュメモリ制御３１０は、キャッシュデータの検索に基づくキャッシュヒット、ヒットミスの判定、ダーティデータ（物理ドライブへの書込み前の状態）と、クリーンデータ（物理ドライブへの書込み後の状態）の各状態間の遷移、キャッシュ領域のリザーブ及びリリース等の制御を行う。キャッシュヒット、ヒットミスの判定は、ホストコンピュータ１００からのコマンドに応答するデータがストレージコントローラ１２０のメモリにあるか否かを判定する。例えば、ホストコンピュータ１００からのコマンドがライトコマンドの場合、ライトコマンドに応答するデータがメモリ上にあるか否を判定する。なお、データは、ストレージコントローラ１２０のメモリを利用しても良いし、ドライブボックス１１０上のメモリ１５０を利用しても良い。これは、リードの時も同様とする。これらのキャッシュメモリ制御の各処理は広く知られた技術であり、ここでの詳細な説明を省略する。
【００７２】
ストレージコントローラ１２０のストレージ機能処理３８０Ａは、ストレージの機能をドライブボックス１１０にオフロードするコマンド（オフロードコマンド）を作成し、ドライブボックス１１０に対して指示する。例えば、オフロードするストレージの機能は、圧縮、伸長、暗号、復号や、コピーやフォーマット、ＲＡＩＤ計算、パリティ計算等、様々である。データ転送制御３００Ａに合わせて、ストレージ機能処理３８０Ａの一部もしくは複数をドライブボックス１１０で実施する。
【００７３】
ストレージコントローラ１２０のデステージ処理３２０は、イニシエータドライバ２８０Ａを介して、キャッシュ内のデータをドライブ１４０に書き込むデステージ処理３２０を行う。
【００７４】
ストレージコントローラ１２０のアドレス変換処理３３０は、ストレージコントローラ１２０の管理するＮＳ（Ｎａｍｅ  Ｓｐａｃｅ）のデータ範囲と、データの格納先であるドライブボックス１１０、ドライブ１４０のマッピングテーブルを持ち、データ範囲のアドレスを、対応するドライブボックス１１０、ドライブ１４０内の記憶領域のアドレスに変換する。
【００７５】
ストレージコントローラ１２０のデータ配置最適化処理４００は、データ転送の要求が来ているデータが格納されているドライブボックス１１０が最適かを、ストレージコントローラ１２０が保持するメタ情報等から判断し、データ移動の必要性がある場合は、ドライブボックス１１０へデータ移動の指示を発行する。例えば、二段転送を実施する際に、データ配置最適化の判断要素として、アクセス頻度を判定し、アクセス頻度が高ければ、二段転送先元のドライブボックス１１０から、二段転送先のドライブボックス１１０へデータを移動するように指示する。ここで、二段転送とは、ホストコンピュータ１００のコマンドを受領し、ストレージコントローラ１２０から指示を受けたドライブボックス１１０が他のドライブボックス１１０へコマンドを転送する動作をいう。コマンドがライトコマンドの場合にはライトデータを他のドライブボックスへ転送し、リードコマンドの場合には他のドライブボックスからデータを受信する。
【００７６】
また、ホストコンピュータ１００のデータアクセス以外の契機で非同期にドライブボックス１１０上でデータの読み出しが行われるとき、例えば、容量のリバランスや、リクラメーション、ガベージコレクション、スナップショット等のバックアップ処理の時にも、データ配置最適化処理４００を実施し、データを最適なドライブボックス１１０へ移動する。
【００７７】
ドライブボックス１１０は、ターゲットドライバ２９０Ｂ、イニシエータドライバ２８０Ｂ、ホストコマンド転送処理３４０、コマンド処理３９０、データ転送制御３００Ｂ、二段転送処理３５０、ストレージ機能処理３８０Ｂ、ドライブ制御処理３６０、バッファ制御処理３７０、および図示しないＯＳから構成される。
【００７８】
ドライブボックス１１０のターゲットドライバ２９０Ｂは、ホストコンピュータ１００のイニシエータドライバ２８０Ｃ及びストレージコントローラ１２０のイニシエータドライバ２８０Ａに対して、記憶領域を提供するとともに、コマンドの受信、コマンドの完了応答の送信を行う。また、他のドライブボックスのイニシエータドライバに対しても、同様の機能を提供する。
【００７９】
例えば、図１の構成を採るときは、ホストコンピュータ１００のイニシエータドライバ２８０Ｃからの要求に対して、ドライブボックス１１０のターゲットドライバ２９０Ｂが要求を受け、ドライブボックス１１０のホストコマンド転送処理３４０が転送する処理を実施し、ドライブボックス１１０のイニシエータドライバ２８０Ｂ経由で、ストレージコントローラ１２０のターゲットドライバ２９０Ａが受信する。
【００８０】
ドライブボックス１１０のターゲットドライバ２９０Ｂは、イニシエータドライバ２８０Ａとイニシエータドライバ２８０Ｃと他ドライブボックスのイニシエータドライバに対して、記憶領域を提供する。また、ホストコンピュータ１００との間でコマンドの受信、コマンドの完了応答の送信を行う。また、ストレージコントローラ１２０との間でコマンドの受信、コマンドの完了応答の送信を行う。さらに、他ドライブボックスとの間でコマンドの受信、コマンドの完了応答の送信を行う。なお、これらの間の転送には、データ転送もあり、例えば、ＤＭＡやＲＤＭＡを使ってデータ転送を行う。
【００８１】
ドライブボックス１１０のイニシエータドライバ２８０Ｂは、ストレージコントローラ１２０のターゲットドライバ２９０Ａと他ドライブボックスのターゲットドライバに対して、コマンドの送信、コマンド完了応答等の受信を行う。
【００８２】
ドライブボックス１１０のホストコマンド転送処理３４０は、ホストコンピュータ１００が発行したコマンドを、ターゲットドライバ２９０Ｂを使用して受信し、コマンドの解析、ストレージコントローラ１２０への転送を行う。コマンド転送の際は、イニシエータドライバ２８０Ｂを介して、ストレージコントローラ１２０のターゲットドライバ２９０Ａとコマンドのやり取りを行う。なお、コマンドを解析した際に、あらかじめストレージコントローラ１２０から設定されたアドレスの範囲に関するアクセスであった場合、例えば、ホストコンピュータ１００からコマンドを受けたドライブボックス１１０のドライブが提供する記憶領域である場合、ストレージコントローラ１２０を介さずに、コマンド処理３９０を起動し、直接ドライブボックス１１０からホストコンピュータ１００へデータ転送しても良い。その際は、コマンド処理３９０がリード・ライト処理、コマンドの完了応答の作成、ターゲットドライバ２９０Ｂを介したイニシエータドライバ２８０Ｃに対するコマンドの完了応答の送信等を行う。
【００８３】
ドライブボックス１１０のコマンド処理３９０は、ストレージコントローラ１２０のホストコマンド処理２６０の結果を受けて、例えば、データ転送制御３００Ｂを起動する。
【００８４】
ドライブボックス１１０のデータ転送制御３００Ｂは、ストレージコントローラ１２０からの指示を受けたドライブボックス１１０のコマンド処理３９０の指示を受けて、ドライブボックス１１０とホストコンピュータ１００とのデータ転送処理を行う。この際、ストレージコントローラ１２０のホストコマンド処理２６０の結果を受けて、ドライブボックス１１０のコマンド処理３９０に指示を出力する。
【００８５】
また、ホストコマンド転送処理３４０から直接転送の指示があった場合も、ドライブボックス１１０とホストコンピュータ１００とのデータ転送処理を行う。例えば、ＮＶＭｅ−ｏＦ等のプロトコルにしたがってのデータ転送を行う。
【００８６】
ドライブボックス１１０の二段転送処理３５０は、ストレージコントローラ１２０のホストコマンド処理２６０の結果を受けて、複数のドライブボックス１１０間のデータ転送が必要な場合に、他のドライブボックスからドライブボックス１１０にデータを転送する。転送には、ドライブボックス１１０のメモリ１５０にバッファ領域を確保し、それを用いて、データ転送を行う。例えば、ＮＶＭｅ−ｏＦで、ＤＭＡ、ＲＤＭＡ、フレーム転送やパケット転送などの方法でデータ転送を行う。二段転送処理３５０を実施して、ドライブボックス１１０に転送してきたデータは、ホストコンピュータ１００に転送する。
【００８７】
ドライブボックス１１０のドライブ制御処理３６０は、ドライブボックス１１０内のドライブ１４０の管理と、コマンド処理３９０の指示に従ってドライブ１４０に対してリードやライトなどのデータ転送処理を行う。また、管理コマンドなどを用いて、ドライブ１４０の管理も行う。
【００８８】
ドライブボックス１１０のバッファ制御処理３７０は、データ転送を行うための一時的なメモリ領域であるバッファの確保と解放を行う。
【００８９】
ドライブボックス１１０のストレージ機能処理３８０Ｂは、ストレージコントローラ１２０からの要求で、ストレージの機能を実施する。例えば、オフロードするストレージ処理は、圧縮、伸長、暗号、復号や、コピーやフォーマット、ＲＡＩＤ計算、パリティ計算等、様々であり、コマンド処理３９０により、ストレージ機能処理３８０Ａの一部もしくは複数をドライブボックス１１０のストレージ機能処理３８０Ｂで実施する。
【００９０】
図４は、実施例１に係る情報システムの論理的構造、データ構造例を示すブロック図を示す。
【００９１】
実施例１に係る情報システムの論理的構造として、例えば、アプリケーション２７０、ネットワーク１３０、ディスカバリサービス４２０、ドライブボックス１１０で構成され、特に、ドライブボックス１１０内は、ネットワーク１３０とつながる物理ポート４３０、サブシステム４１０、ＮＳ４４０、ＶＯＬ４５０、ＰＯＯＬ４６０、ＲＡＩＤグループ４７０、ＰＤＥＶ４８０等で構成される。
【００９２】
アプリケーション２７０はデータを記憶するため、ストレージコントローラ１２０及びドライブボックス１１０で構成される、ストレージシステムを使用する。アプリケーション２７０はストレージシステムから提供されるボリュームに対して、データを書き込んだり、読み出したりを行う。例えば、ここではＮＶＭｅを想定し、ＮＳ４４０が、アプリケーション２７０が使うボリュームに当たることとする。なお、例えばＳＣＳＩの場合には、ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）がＮＳ４４０に該当する。
【００９３】
ディスカバリサービス４２０は、アプリケーション２７０とＮＳ４４０を関連づけるサービスを提供する。例えば、ディスカバリサービスは、物理ポート４３０とサブシステム４１０の対応表を保持しており、アプリケーション２７０がＮＳ４４０とを関連付けて、ＮＳ４４０にアクセスするために、まず、ディスカバリサービス４２０にアクセスし、ＮＳ４４０が定義されているサブシステム４１０と対応する物理ポート４３０の識別子を取得し、その物理ポート４３０にアクセスすることで、サブシステム４１０に属する目的のＮＳ４４０にアクセスできる。なお、ディスカバリサービス４２０は、ホストコンピュータ１００に定義されても良いし、ストレージコントローラ１２０に定義されても良いし、ドライブボックス１１０に定義されても良い。
【００９４】
ドライブボックス１１０は、１つまたは複数のＰＤＥＶ４８０を持つ。このＰＤＥＶ４８０は、ＨＤＤやＳＳＤ等のドライブ１４０を想定するが、論理的なデバイス（ＤＥＶ）でも良いものとする。１つ又は複数のＰＤＥＶ４８０より、ＲＡＩＤグループ４７０を作成する。ＲＡＩＤグループ４７０はデータを保護する事を示しており、例えば、二重化、三重化などでも良く、冗長化全般をさす。なお、ＲＡＩＤグループ４７０がなく、直接ＰＤＥＶ４８０とする構成でも良い。１つ又は複数のＲＡＩＤグループ４７０、又は、直接ＰＤＥＶ４８０から、ＰＯＯＬ４６０を構成する。ＰＯＯＬ４６０はシンプロビジョニング（ＴＰ）でも良く、物理的な容量より大きい、仮想的な容量で定義しても良い。ＰＯＯＬ４６０から、ＶＯＬ４５０を切り出して、ＮＳ４４０としてサブシステム４１０に登録する。ここで、ＶＯＬ４５０は仮想ボリューム（ＶＶＯＬ）でも良いし、実ボリューム（ＲＶＯＬ）でも良い。また、ＶＶＯＬは、物理的な容量より大きい、仮想的な容量で定義しても良い。
【００９５】
ＰＯＯＬ４６０は、ドライブボックス１１０Ａとドライブボックス１１０Ｂなど、複数のドライブボックス１１０にまたがっても良いものとする。例えば、ＴＰＰＯＯＬ４６０の場合は、ドライブボックス１１０Ａに搭載されているＰＤＥＶ４８０の容量よりも大きく、ＰＯＯＬ４６０容量を設計し、ＰＯＯＬ４６０の物理的な空き容量が少なくなった場合は、ドライブボックス１１０ＡにＰＤＥＶ４８０を追加することで、容量を拡充する。ドライブボックス１１０Ａに搭載できるＰＤＥＶ４８０数を超えた場合は、新たにドライブボックス１１０Ｂを追加し、ドライブボックス１１０ＢのＰＤＥＶ４８０又は１つ又は複数のＰＤＥＶ４８０で構成したＲＡＩＤグループ４７０をＰＯＯＬ４６０に追加することで、容量を拡充する。なお、ドライブボックス１１０Ｂのサブシステム４１０ＺのＮＳ４４０をドライブボックス１１０ＡのＰＯＯＬ４６０に追加しても良い。例えば、この場合は、サブシステム４１０ＺのＮＳ４４０はアプリケーション２７０に直接見せずに、ストレージコントローラ１２０及びドライブボックス１１０Ａに見せて、利用する。
【００９６】
なお、ドライブボックス１１０が複数物理ポート４３０を備えても良く、その複数の物理ポート４３０が一つのサブシステム４１０と紐づいても良い。この時、サーバがリソース競合の調整を行う。
【００９７】
図５は、実施例１に係るアドレス管理テーブルの例を示す図を示す。
【００９８】
アドレス管理テーブル５９０は、ストレージコントローラ１２０のメモリに格納され、アドレス変換処理３３０等のストレージコントローラ１２０の各種プログラムによって、参照される。ＶＯＬ番号４９０、ＶＯＬ−ＬＢＡ５００、ＰＯＯＬ−ＶＯＬ番号５１０、ＰＯＯＬ−ＶＯＬ−ＬＢＡ５２０を有し、ＶＯＬ番号４９０とＰＯＯＬ番号５７０、ＰＯＯＬ−ＶＯＬ番号５１０とＰＯＯＬ番号５７０、ＰＯＯＬ−ＶＯＬ番号５１０とＲＡＩＤグループ番号５３０とＲＡＩＤグループＯｆｆｓｅｔ５４０、ＲＡＩＤグループ番号５３０とＰＤＥＶ番号５５０、ＰＤＥＶ番号５５０とドライブボックス番号５６０の対応等を管理する。なお、ここで示したアドレス管理テーブル５９０は一例であり、例えば、ＶＯＬは仮想ＶＯＬでも良く、また、圧縮、重複排除関係の情報、ＰＯＯＬの属性、ＲＡＩＤグループのＲＡＩＤタイプなどを示す情報、ＶＯＬ容量等、他の情報が追加されても良いものとする。アドレス管理テーブル５９０は、アプリケーションに提供されるＮＳやＶＯＬ等の論理的なアドレス（論理的記憶領域）と、実際にデータが格納されるドライブボックス１１０やドライブ内の物理的なアドレス（物理的記憶領域）の対応を管理する。
【００９９】
ＶＯＬ番号４９０は、ＶＯＬ番号はストレージにアクセスプロトコルに応じて、例えば、ＮＳＩＤ（Ｎａｍｅｓｐａｃｅ  ＩＤ）やＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）などと関連づく。
【０１００】
アドレス管理テーブル５９０は、アプリケーションからＶＯＬ番号４９０とＶＯＬ−ＬＢＡ５００へのアクセスに対して、アクセス先のドライブを特定するために使用する。
【０１０１】
ＶＯＬ番号４９０、ＰＯＯＬ−ＶＯＬ番号５１０は、ＰＯＯＬ番号５７０から切り出して構成する。ＰＯＯＬ−ＶＯＬ番号５１０は、ＲＡＩＤグループ番号５３０とＲＡＩＤグループＯｆｆｓｅｔ５４０から構成される。ＲＡＩＤグループ番号５３０は複数のＰＤＥＶ番号５５０（Ｐｈｙｓｉｃａｌ  Ｄｅｖｉｃｅ）で構成され、ＰＤＥＶ番号５５０はドライブボックス番号５６０に属する。なお、ＰＤＥＶ番号５５０が複数のドライブボックス番号５６０にまたがっても良く、この場合、ＲＡＩＤグループ番号５３０は複数のドライブボックス番号５６０から構成される。
【０１０２】
図５の例では、ＶＯＬ番号４９０が「１」で、ＶＯＬ−ＬＢＡ５００が「０−９９」の範囲は、ＰＯＯＬ−ＶＯＬ番号５１０が「１０」、ＰＯＯＬ−ＶＯＬ−ＬＢＡ５２０が「０−９９」に該当する。ＰＯＯＬ−ＶＯＬ番号５１０の「１０」は、ＲＡＩＤグループ番号５３０が「１」、ＲＡＩＤグループＯｆｆｓｅｔ５４０が「０」で構成される。ＲＡＩＤグループ番号５３０の「１」はＰＤＥＶ番号５５０が「０−３」で構成され、ＰＤＥＶ番号５５０の「０−３」はドライブボックス番号５６０の「１」に搭載されている。
【０１０３】
なお、ＰＤＥＶが例えばＦｌａｓｈドライブで構成されており、そのドライブ内で、前記ＰＤＥＶ内のアドレスを仮想アドレスとして、更に物理アドレス変換をするような、仮想アドレスと物理アドレスの変換が行われても良い。
【０１０４】
ドライブボックス追加５８０は、ＰＯＯＬ容量が不足し、容量追加のために、ドライブボックスを追加したときの様子を示す。ドライブボックス追加５８０は、ＰＯＯＬ番号５７０、ＰＯＯＬ−ＶＯＬ番号５１０、ＰＯＯＬ−ＶＯＬ−ＬＢＡ５２０、ＲＡＩＤグループ番号５３０、ＲＡＩＤグループＯｆｆｓｅｔ５４０、ＰＤＥＶ番号５５０と対応付ける。
【０１０５】
アクセス頻度等で、ドライブボックス１１０の間でデータを移動させた場合は、ＶＯＬ−ＬＢＡ５００とＰＯＯＬ−ＶＯＬ番号５１０、ＰＯＯＬ−ＶＯＬ−ＬＢＡ５２０の対応が変更される。
【０１０６】
アドレス管理テーブル５９０は、ストレージコントローラ１２０が管理するが、その全体、又は、一部をドライブボックス１１０にキャッシュしても良く、そのキャッシュを使って、アプリケーション２７０とドライブボックス１１０間で、キャッシュヒットによるデータ転送を実施しても良い。
【０１０７】
図６は、実施例１の情報システムのドライブボックス追加例を示す。
【０１０８】
ステップＳ００１０で、ストレージコントローラ１２０のホストコマンド処理２６０の一部で、仮想プール空き容量を閾値と比較し、閾値以上の場合は、ステップＳ００７０仮想プール空き容量確保済み状態を確認として終了する。仮想プール空き容量と閾値とを比較は、アプリケーションに提供しているＮＳ等の論理的なアドレスを構成するだけの物理的なリソースが不足するかを判断することになる。
【０１０９】
ステップＳ００１０で、空き容量が閾値未満の場合、ステップＳ００２０に進み、ドライブボックス１１０内に追加できる物理容量があるかを判断する。判断の結果、物理容量がある場合は、ステップＳ００８０で、例えばＰＤＥＶ４８０からＲＡＩＤグループ４７０を作り、ＰＯＯＬ４６０に追加する。ＰＤＥＶ４８０からＲＡＩＤグループ４７０を作り、ＰＯＯＬ４６０に追加すると、アドレス管理テーブルの内容も更新されるが、ホストコンピュータ１００のアプリケーション２７０がデータにアクセスするためのＶＯＬ番号４９０やＶＯＬ−ＬＢＡ５００は、変更されることはない。従って、ホストコンピュータ１００は、ステップＳ００８０で物理容量が増加したことを意識することなく、ホストコンピュータ１００の設定を変更する必要がない。ステップＳ００７０仮想プール空き容量確保済み状態を確認として終了する。
【０１１０】
ステップＳ００３０で、ドライブボックス１１０へドライブ１４０を、追加可能かを判断する。そのため、ドライブを格納するスロットの空きありを判断し、ドライブスロットが空いている場合は、ステップＳ００９０でドライブ１４０を追加する。ドライブ１４０を追加すると、アドレス管理テーブルの内容も更新されるが、ホストコンピュータ１００のアプリケーション２７０がデータにアクセスするためのＶＯＬ番号４９０等のアドレス空間は、変更されることはない。ステップＳ００７０仮想プール空き容量確保済み状態を確認として終了する。
【０１１１】
ステップＳ００３０でドライブスロットの空きがないと判断すると、ステップＳ００４０に進み、ドライブボックス１１０とドライブ１４０を追加する。そして、ステップＳ００５０でストレージコントローラ１２０と追加したドライブボックス１１０の接続を確立するため、コネクションを作成する。次に、ステップＳ００６０で、例えば、追加されたドライブボックス内のＰＤＥＶ４８０からＲＡＩＤグループ４７０を作り、ＰＯＯＬ４６０に追加する。ドライブボックス１１０を追加すると、アドレス管理テーブルの内容も更新されるが、ホストコンピュータ１００のアプリケーション２７０がデータにアクセスするためのＶＯＬ番号４９０等のアドレス空間は、変更されることはない。ステップＳ００７０で、仮想プール空き容量確保済み状態を確認として終了する。ステップＳ００７０で、ドライブボックス１１０がホストコンピュータ１００に提供するＮＳ等の記憶領域（論理的記憶領域）に対し、アドレス管理テーブル５９０の一部を更新、例えば、ドライブボックス追加５８０等の追加、を行う。これにより、拡張された物理的記憶領域の容量（物理的記憶領域）を、論理的記憶領域に対応付け可能な状態にアドレス管理テーブルを更新する。
【０１１２】
ステップＳ００７０仮想プール空き容量確保済み状態を確認には、拡張された物理的な記憶領域の容量を、アプリケーションに提供しているＮＳ等の論理的なアドレスに対応付ける処理が含まれても良い。
【０１１３】
本フローにより、例えばＴＰ  ＰＯＯＬにおいて、物理容量が足りなくなり、かつ、ドライブ１４０を搭載する空きもない場合にも、ドライブボックス１１０を追加することで、ホストコンピュータ１００の設定を変更することなく、ＰＯＯＬ４６０の物理容量を確保する。
【０１１４】
図７は、実施例１に係るホストコマンドを実行する方法の概略を示す図を示す。
【０１１５】
情報システムにおいて、ホストコンピュータ１００のアプリケーション２７０がイニシエータドライバ２８０Ｃ経由で、コマンド６００をドライブボックス１１０Ａに発行する。ドライブボックス１１０Ａは、ターゲットドライバ２９０Ｂでコマンド６００を受け、ホストコマンド転送処理３４０により、イニシエータドライバ２８０Ｂを介して、ストレージコントローラ１２０のターゲットドライバ２９０へコマンド６００を転送する。ストレージコントローラ１２０は、ホストコマンド処理２６０を行う。ストレージコントローラ１２０（例えば、アドレス変換処理３３０等）では、アドレス管理テーブルを参照し、コマンドの対象データがどのドライブボックス１１０にあるか判断する。ストレージコントローラ１２０のデータ転送制御３００Ａを起動して、ホストコンピュータ１００からコマンド６００を受信したドライブボックス１１０Ａにデータ転送コマンド６１０Ａを送信し、ドライブボックス１１０Ａのコマンド処理３９０を介して、データ転送制御３００を起動する。データ転送コマンド６１０Ａには、アドレス管理テーブルを参照して得られる、コマンドの対象データを格納する、あるいは、格納すべきドライブボックスの情報が含まれている。
【０１１６】
実施例１では、ストレージコントローラ１２０は、アドレス管理テーブルを参照して、データ転送コマンド６１０Ａに二段転送指示が含ませている場合、ドライブボックス１１０Ａは二段転送処理３５０を起動する。他の方法として、ストレージコントローラ１２０からのデータ転送コマンド６１０Ａに二段転送指示が含まれない場合、ドライブボックス１１０は、アドレス管理テーブルを参照し、コマンド６００の対象のデータがドライブボックス１１０Ｂにあると判断した場合、ドライブボックス１１０Ａは二段転送処理３５０を起動する。
【０１１７】
ここで、リードの場合は、バッファ制御処理３７０で転送用のバッファを用意し、ドライブボックス１１０Ｂにデータ転送コマンド６１０Ｂを転送する。ドライブボックス１１０Ｂのコマンド処理３９０はこれを受けて、データ転送制御３００を起動し、ドライブボックス１１０Ａにデータ転送６２０Ａを行う。ドライブボックス１１０Ａは、ホストコンピュータ１００にそのデータをデータ転送６２０Ｂする。
【０１１８】
また、ライトの場合は、ドライブボックス１１０Ａで二段転送処理３５０を起動した後に、ドライブボックス１１０Ｂにデータ転送コマンド６１０Ｂを転送し、ドライブボックス１１０Ｂのコマンド処理３９０はこれを受けて、データ転送制御３００を起動し、ドライブボックス１１０Ａにデータ転送６２０Ｂされたデータをドライブボックス１１０Ｂにデータ転送６２０Ａする。ドライブボックス１１０Ｂは、ドライブ制御処理３６０を起動し、ドライブ１４０へデータを格納する。
【０１１９】
これにより、ホストコンピュータ１００とドライブボックス１１０間でストレージコントローラ１２０にデータを転送することなく、直接データ転送する。また、二段転送処理３５０により、ドライブボックス１１０Ａとドライブボックス１１０Ｂのデータ転送を行うことで、例えば、ＴＰなど、容量仮想化をした際に、ドライブボックス１１０Ａに物理容量を追加できなくなっても、ドライブボックス１１０Ｂを追加することで、ホストコンピュータ１００のアプリケーション２７０に影響を与えずに、容量追加に対応する。
【０１２０】
また、ホストコンピュータ１００とドライブボックス１１０でデータ転送を行うため、ストレージコントローラ１２０の帯域影響を受けずに、例えば、ＦＢＯＦのようなドライブボックス１１０の広帯域性や、レイテンシの削減（応答性能向上）が見込める。
【０１２１】
図８は、実施例１の情報システムのデータ転送制御３００Ａによるドライブボックス選択例を示す。
【０１２２】
ステップＳ０１００で、ホストコンピュータ１００がコマンド６００をドライブボックス１１０に発行する。ステップＳ０１１０でドライブボックス１１０がコマンド６００をストレージコントローラ１２０に転送する。ステップＳ０１２０でストレージコントローラ１２０（アドレス変換処理３３０等）が、アドレス管理テーブルに基づいて、データ格納のアドレスを確認する。ステップＳ０１３０で、ステップＳ０１２０で確認したデータ格納アドレスに基づいて、二段転送必要かを判断する。
【０１２３】
データ格納のアドレスが、コマンド６００送信元のドライブボックス１１０で、二段転送が必要ない場合は、ステップＳ０１８０でストレージコントローラ１２０がドライブボックス１１０にデータ転送コマンド６１０Ａを発行し、ステップＳ０１７０でデータ転送完了として終了する。
【０１２４】
ステップＳ０１３０で二段転送必要と判断した場合、即ち、アドレス管理テーブルに基づいて、データ格納先のアドレスが、コマンド６００送信元のドライブボックス１１０でない他のドライブボックス１１０の場合は、ステップＳ０１４０でストレージコントローラ１２０が二段転送コマンドを含むデータ転送コマンドを生成し、ステップＳ０１５０でストレージコントローラ１２０がドライブボックス１１０に二段転送のデータ転送コマンド６１０Ａを発行し、ステップＳ０１６０でドライブボックス１１０の二段転送処理３５０が二段転送を行い、ステップＳ０１７０でデータ転送完了として終了する。二段転送コマンドを含むデータ転送コマンドには、データ格納先の情報を含む。
【０１２５】
本フローにより、例えばＴＰ  ＰＯＯＬにおいて、物理容量が足りなくなり、かつ、ドライブ１４０を搭載する空きもない場合にも、ドライブボックス１１０を追加し、二段転送を行うことで、ホストコンピュータ１００の設定を変更することなく、ＰＯＯＬ４６０の物理容量を確保しつつ、データ転送に対応する。
【０１２６】
図９は、実施例１に係るホストコマンドを実行する方法の概略を示す図を示す。
【０１２７】
情報システムにおいて、ホストコンピュータ１００のアプリケーション２７０がイニシエータドライバ２８０Ｃ経由で、コマンド６００をドライブボックス１１０Ａに発行する。ドライブボックス１１０Ａは、ターゲットドライバ２９０Ｂでコマンド６００を受け、ホストコマンド転送処理３４０により、イニシエータドライバ２８０Ｂを介して、ストレージコントローラ１２０のターゲットドライバ２９０Ａへコマンド６００を転送する。ストレージコントローラ１２０は、ホストコマンド処理２６０を行い、データ転送制御３００Ａを起動して、ドライブボックス１１０Ａにデータ転送コマンド６１０Ａを送信し、ドライブボックス１１０Ａのコマンド処理３９０を介して、データ転送制御３００を起動する。この処理では、ドライブボックス１１０Ａは、アドレス管理テーブルを参照し、対象のデータがドライブボックス１１０Ｂあると判断した場合、ドライブボックス１１０Ａは二段転送処理３５０を起動するようにしても良い。
【０１２８】
ここで、リードの場合は、バッファ制御処理３７０で転送用のバッファを用意し、ドライブボックス１１０Ｂにデータ転送コマンド６１０Ｂを転送する。ドライブボックス１１０Ｂのコマンド処理３９０はこれを受けて、データ転送制御３００を起動し、ドライブボックス１１０Ａにデータ転送６２０Ａを行い、ドライブボックス１１０Ａはホストコンピュータ１００にそのデータをデータ転送６２０Ｃする。
【０１２９】
この時、ストレージコントローラ１２０のデータ配置最適化処理４００で、データ転送の要求が来ているデータが格納されているドライブボックス１１０Ｂが最適の位置かを判断し、データ移動の必要性がある場合は、ドライブボックス１１０Ａへデータ移動の指示を発行する。例えば、二段転送を実施する際に、データ配置最適化の判断要素として、アクセス頻度を判定し、アクセス頻度が高ければ、二段転送先元のドライブボックス１１０Ｂから、二段転送先のドライブボックス１１０Ａへデータを移動するように指示する。データ移動の指示を受けたドライブボックス１１０Ａは、データ転送６２０Ａで、ドライブボックス１１０Ｂからドライブボックス１１０Ａへデータが移動し、ドライブボックス１１０のメモリ１５０上のバッファ領域に格納された後に、ホストコンピュータ１００へのデータ転送６２０Ｃと共に、データ格納６３０Ａを実施する。これにより、転送回数最小で、データの最適配置を実施する。
【０１３０】
また、ライトの場合は、例えば、ストレージコントローラ１２０のデータ配置最適化処理４００で、データ転送の要求が来ているデータが格納されているドライブボックス１１０Ｂが最適の位置かを判断する。データ移動の必要性がある場合は、ドライブボックス１１０Ａへデータ移動の指示を発行する。よって、この場合は、データ格納６３０Ａとなり、ドライブボックス１１０Ａにデータが格納される。一方で、ストレージコントローラ１２０のデータ配置最適化処理４００で、データ転送の要求が来ているデータが格納されているドライブボックス１１０Ｂが最適の位置かを判断し、データ移動の必要性がない場合は、データ転送６２０Ａでドライブボックス１１０Ｂにデータが転送されて格納される。
【０１３１】
また、ホストコンピュータ１００のデータアクセス以外の契機で非同期にドライブボックス１１０上でデータの読み出しが行われるとき、例えば、容量のリバランスや、リクラメーション、ガベージコレクション、スナップショット等のバックアップ処理の時にも、ストレージコントローラ１２０のデータ配置最適化処理４００を実施し、例えば、ドライブボックス１１０Ａのデータに対して処理を行うときに、そのデータがドライブボックス１１０Ｂの方に格納する方が最適である場合は、ドライブボックス１１０Ａのメモリ１５０上のバッファ領域に、データ転送６２０Ｂし、ドライブボックス１１０Ｂへデータ格納６３０Ｂする。
【０１３２】
これにより、ドライブボックス１１０Ａとドライブボックス１１０Ｂ及び、ストレージコントローラ１２０間でコマンド６００やデータ転送の負荷を最小化しつつ、データの最適配置を行える。尚、ドライブボックス間でデータを移動させる場合には、アドレス管理テーブルの内容を更新する。例えばＶＯＬ番号４９０とＰＯＯＬ−ＶＯＬ番号５１０との対応等を更新する。
【０１３３】
図１０は、実施例１の情報システムのデータ移動処理例を示す。
【０１３４】
ステップＳ０２００で、ホストコンピュータ１００のアプリケーション２７０がイニシエータドライバ２８０Ｃを介して、コマンド６００をドライブボックス１１０Ａに発行する。
【０１３５】
ステップＳ０２１０で、ドライブボックス１１０Ａのターゲットドライバ２９０Ｂがコマンド６００を受け、ホストコマンド転送処理３４０からイニシエータドライバ２８０Ｂを介してストレージコントローラ１２０に転送する。
【０１３６】
ステップＳ０２２０で、ストレージコントローラ１２０がターゲットドライバ２９０Ａを介してコマンド６００を受け取り、ホストコマンド処理２６０でコマンド６００を処理する。この時、ストレージコントローラ１２０が、アドレス管理テーブルを参照し、データ格納先を確認する。
【０１３７】
ステップＳ０２３０で、ストレージコントローラ１２０のデータ配置最適化処理４００により、例えば、アクセス頻度確認を行い、ステップＳ０２４０でデータ移動が必要かを判断する。つまり、最適なデータ格納位置を決定する。判断の結果、データ移動が不要であれば、ステップＳ０３１０でストレージコントローラ１２０がドライブボックス１１０Ａにデータ転送制御３００を介して、データ転送コマンド６１０Ａを発行する。そして、ステップＳ０３２０で、ドライブボックス１１０Ａがコマンド処理３９０を行い、データ転送制御３００Ｂで、データ転送６２０Ｃを行い、ステップＳ０３００でデータ転送完了として終了する。
【０１３８】
一方で、ステップＳ０２４０でデータ移動が必要と判断した場合、ステップＳ０２５０でストレージコントローラ１２０が新規データ格納先を確保する。次に、ステップＳ０２６０で、ストレージコントローラ１２０がドライブボックス１１０Ａにデータ転送制御３００を介して、データ転送コマンド６１０Ａを発行する。次に、ステップＳ０２７０で、ドライブボックス１１０Ａがデータ転送制御３００又は、二段転送処理３５０を起動して、データ転送処理を行う。次に、ステップＳ０２８０で、ドライブボックス１１０Ａが新規データ格納場所へ、データを格納する。次に、ステップＳ０２９０で、ドライブボックス１１０Ａがデータの旧格納位置を解放するために、例えば、ストレージコントローラ１２０へデータ移動完了の通知を送り、ストレージコントローラ１２０がデータの旧格納位置、例えば、ドライブボックス１１０Ｂの旧データの格納位置を、解放し、ステップＳ０３００でデータ転送完了として終了する。
【０１３９】
本フローにより、例えば、ドライブボックス１１０Ａとドライブボックス１１０Ｂ及び、ストレージコントローラ１２０間でコマンド６００やデータ転送の負荷を最小化しつつ、データの最適配置を行える。
【０１４０】
図１１は、実施例１に係るデータ配置を判定するためのアクセス頻度テーブルを示す。
【０１４１】
ストレージコントローラ１２０のデータ配置最適化処理４００の際に、例えば、アクセス頻度を判定要素とする。ストレージコントローラ１２０は、アクセス頻度６４０、対象ドライブボックス６５０、データ移動判定６６０のアクセス頻度テーブルを用いて、アクセス頻度６４０が閾値以下で、アクセス頻度が低いと判断した場合に、データを格納しているドライブボックス１１０がコマンド６００発行元の場合は、データ移動判定６６０で他ドライブボックス１１０へデータ移動と判断する。
【０１４２】
また、アクセス頻度６４０が閾値以下で、アクセス頻度が低いと判断した場合に、データを格納しているドライブボックス１１０がコマンド６００発行元でなく、他のドライブボックス１１０の場合は、データ移動判定６６０でデータ移動なしと判断する。
【０１４３】
また、アクセス頻度６４０が閾値より大きく、アクセス頻度が高いと判断した場合に、データを格納しているドライブボックス１１０がコマンド６００発行元の場合は、データ移動判定６６０でデータ移動なしと判断する。
【０１４４】
また、アクセス頻度６４０が閾値より大きく、アクセス頻度が高いと判断した場合に、データを格納しているドライブボックス１１０がコマンド６００発行元でなく、他のドライブボックス１１０の場合は、データ移動判定６６０でコマンド６００発行元のドライブボックス１１０へデータ移動と判断する。
【０１４５】
本データ配置判定テーブルは、アクセス頻度で判定する場合を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態のみに限定する趣旨ではない。
【０１４６】
例えば、アクセス頻度ではなく、ランダムアクセスとシーケンシャルアクセス等のアクセス方法により判定することができる。ランダムアクセスの方がレスポンスタイムを重視して、ホストコンピュータ１００に近いドライブボックス１１０で、シーケンシャルアクセスの方がレスポンスタイムを重視しないため、ホストコンピュータ１００から遠いドライブボックス１１０に、データを配置する等の判断としても良い。
【０１４７】
また、バックアップデータかそうでないデータかで、バックアップデータの場合は、バックアップデータをまとめると判断し、バックアップ用のドライブボックス１１０に配置し、それ以外のデータは、バックアップ用でないドライブボックス１１０に配置しても良い。
【０１４８】
また、ホストコンピュータ１００で複数のアプリケーション２７０を使用した際に、アプリケーション２７０の要求性能に応じて、レスポンスタイムを重視するアプリケーション２７０のデータは、ホストコンピュータ１００に近いドライブボックス１１０で、レスポンスタイムを重視しないアプリケーション２７０のデータは、ホストコンピュータ１００から遠いドライブボックス１１０に配置する等の判断としても良い。
【０１４９】
以上の通り、実施例１によれば、ホストコンピュータとドライブボックス間で直接データ転送する構成において、ドライブ追加等による容量の拡張を、ホストコンピュータの設定を変更することなく実現することができる。また、ドライブ容量の拡張後もホストコンピュータとドライブボックス間で直接データ転送を、ホストコンピュータの設定変更することなく実行できるので、ホストコンピュータのドライブボックスに対するＩＯ要求を高速に処理することができる。このことは、図１で示した情報システムのエネルギー消費を抑えることにも寄与し、ホストコンピュータ１００のユーザのビジネス機会損失を防止することができる。
【０１５０】
また、実施例１によるデータ転送によれば、ホストコンピュータの設定を変更することなく、容量を追加できるので、シンプロビジョニング機能に対応した構成とすることができる。
【０１５１】
また、実施例１による二段転送により、データ転送処理を行うので、ＮＳ４４０が定義されているサブシステム４１０と物理ポート４３０との対応を変更することなく、容量の拡張を可能とする。
【０１５２】
さらに、実施例１によれば、ホストコンピュータへ近いドライブボックスと、追加したドライブボックス間のデータ配置最適化により、２段転送の頻度を減らし、レイテンシやネットワークトラフィックの増加を防ぐことができる。
【実施例２】
【０１５３】
図１２は、実施例２に係るホストコマンドを実行する方法のホストへのパス追加の概略を示す図を示す。
【０１５４】
この実施例２の情報システムにおいて、例えば、他のアプリケーション２７０でドライブボックス１１０Ａの容量を使用しようとした際に、元のアプリケーション２７０で使用していたドライブボックス１１０Ａの容量をあけるため、ホストコンピュータ１００と追加したドライブボックス１１０Ｂの間に、新しいパスを追加し、元のアプリケーション２７０に、コピー先のＮＳ４４０として見せてもよい。
【０１５５】
なお、実施例２のシステムで特に言及しない点は、実施例１と同様とする。
【０１５６】
例えば、ホストコンピュータ１００の元のアプリケーション２７０がイニシエータドライバ２８０Ｃ経由で、コマンド６００をドライブボックス１１０Ａに発行する。ドライブボックス１１０Ａは、ターゲットドライバ２９０Ｂでコマンド６００を受け、ホストコマンド転送処理３４０により、イニシエータドライバ２８０Ｂを介して、ストレージコントローラ１２０のターゲットドライバ２９０へコマンド６００を転送する。ストレージコントローラ１２０は、ホストコマンド処理２６０を行う。ここで、実施例２では、対象のデータがドライブボックス１１０Ａあると想定し、例えば、ホストコンピュータ１００からのデータライトを想定し、ストレージコントローラ１２０のデータ配置最適化処理４００で、データ転送の要求が来ているドライブボックス１１０Ａではなく、ドライブボックス１１０Ｂがデータ最適位置と判断したとする。
【０１５７】
ストレージコントローラ１２０は、データ転送制御３００Ａを起動して、ドライブボックス１１０Ａにデータ転送コマンド６１０Ａを送信し、ドライブボックス１１０Ａのコマンド処理３９０を介して、データ転送制御３００を起動する。ここで、対象のデータをドライブボックス１１０Ｂに格納するために、ドライブボックス１１０Ａは二段転送処理３５０を起動し、イニシエータドライバ２８０Ｂを介して、ドライブボックス１１０Ｂのターゲットドライバ２９０Ｂへデータ転送コマンド６１０Ｂを発行する。
【０１５８】
ドライブボックス１１０Ｂは、データ転送コマンド６１０Ｂを受けて、コマンド処理３９０を行い、ホストコンピュータ１００の元のアプリケーション２７０がライトするデータをドライブボックス１１０Ｂへ格納する。
【０１５９】
ドライブボックス１１０Ｂは転送完了の後、ドライブボックス１１０Ａがストレージコントローラ１２０とホストコンピュータ１００の元のアプリケーション２７０にデータ転送完了を通知する。
【０１６０】
なお、別の方法として、ストレージコントローラ１２０がドライブボックス１１０Ｂへデータを格納すべきと判断し、ドライブボックス１１０Ａへデータ転送コマンド６１０Ａを発行し、ドライブボックス１１０Ａがこれを受けて、ホストコンピュータ１００の元のアプリケーション２７０、または、イニシエータドライバ２８０Ｃにドライブボックス１１０Ｂへのデータ転送６２０を指示する方法を取っても良い。
【０１６１】
これにより、ドライブボックス１１０Ａとドライブボックス１１０Ｂ及び、ストレージコントローラ１２０間でコマンド６００やデータ転送の負荷を最小化しつつ、データの最適配置を行える。
【０１６２】
また、ドライブボックス１１０Ａの空き容量が増えるため、そこを他のアプリケーション２７０が使用することができる。
【０１６３】
以上、二つの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１６４】
例えば、図１３は、実施例２に係る情報システムのネットワーク共通化の構成例を示す。
【０１６５】
ホストコンピュータ１００とストレージコントローラ１２０とドライブボックス１１０がネットワーク１３０に接続されている構成を採っても良い。
【０１６６】
また、例えばストレージコントローラ１２０はＳｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅでも良く、ホストコンピュータ１００も仮想サーバでも良い。
【０１６７】
また、本情報システムをエンタープライズ向けとする場合は、各要素、パス等は冗長化され、片方に障害が起きても、継続動作できる。そのため、ユーザのビジネス機会損失を防止することができる。
【符号の説明】
【０１６８】
１００：ホストコンピュータ
１１０：ドライブボックス
１２０：ストレージコントローラ
１３０：ネットワーク
１４０：ドライブ
１５０：メモリ
１６０：インタフェース
１８０：フロントポート
２００：エンクロージャ
２１０：プロセッサ
２２０：スイッチポート
２３０：バックエンドパス
２４０：ドライブポート
２５０：スイッチ
２６０：ホストコマンド処理
２７０：アプリケーション
２８０：イニシエータドライバ
２９０：ターゲットドライバ
３００：データ転送制御
３３０：アドレス変換処理
３４０：ホストコマンド転送処理
３５０：二段転送処理
４００：データ配置最適化処理
４２０：ディスカバリサービス
４４０：ＮＳ
４５０：ＶＯＬ
４６０：ＰＯＯＬ
４７０：ＲＡＩＤグループ
４８０：ＰＤＥＶ
【図１】
0006942163.tif 000002
【図２】
0006942163.tif 000003
【図３】
0006942163.tif 000004
【図４】
0006942163.tif 000005
【図５】
0006942163.tif 000006
【図６】
0006942163.tif 000007
【図７】
0006942163.tif 000008
【図８】
0006942163.tif 000009
【図９】
0006942163.tif 000010
【図１０】
0006942163.tif 000011
【図１１】
0006942163.tif 000012
【図１２】
0006942163.tif 000013
【図１３】
0006942163.tif 000014