(57)【要約】  ストレージシステムは、ブロックＩ／Ｆと、ブロック制御部と、ファイル制御部と、共有メモリとを備える。ファイル制御部とブロック制御部とは、共有メモリの第１領域を介して構成される第１のメモリ経由パスと、共有メモリの第２領域を介して構成される第２のメモリ経由パスとで接続されている。ブロック制御部は、プロトコル制御部と、仮想ドライバとを有し、ファイル制御部の制御情報を、第１のメモリ経由パスを介してファイル制御部とやり取りし、ファイル制御部から第２のメモリ経由パスを介して渡されたＩ／Ｏ要求を、仮想ドライバによって変換してからプロトコル処理部で処理し、ブロックＩ／Ｆから物理パスを介して転送されたブロックＩ／Ｏ要求を、仮想ドライバを介さずプロトコル処理部で処理する。
2017017763.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機からブロックＩ／Ｏ要求を受領するブロックＩ／Ｆと、
前記ブロックＩ／Ｆと物理パスで接続されており、前記ブロックＩ／Ｆが受領したブロックＩ／Ｏ要求を制御するブロック制御部と、
ホスト計算機に対してファイルサービスを提供するファイル制御部と、
前記ブロック制御部及び前記ファイル制御部が共有する第１の共有メモリと、
を備え、
前記ファイル制御部と前記ブロック制御部とは、
前記第１の共有メモリの第１領域を介して構成される第１のメモリ経由パスと、
前記第１の共有メモリの第２領域を介して構成される第２のメモリ経由パスと、で接続されており、
前記ブロック制御部は、
前記物理パスを介するデータ転送に関するプロトコルを処理するプロトコル処理部と、
前記第１又は第２のメモリ経由パスを介するデータのやり取りを、前記プロトコル処理部が処理可能なプロトコルに変換する仮想ドライバと、を有し、
前記ブロック制御部は、
前記ファイル制御部の制御に関する制御情報を、前記第１のメモリ経由パスを介して前記ファイル制御部とやり取りし、
前記ファイル制御部から前記第２のメモリ経由パスを介して渡されたＩ／Ｏ要求を、前記仮想ドライバによって変換してから前記プロトコル処理部で処理し、
前記ブロックＩ／Ｆから物理パスを介して転送されたブロックＩ／Ｏ要求を、前記仮想ドライバを介さず、前記プロトコル処理部で処理する
ストレージシステム。
【請求項２】
それぞれが、ファイル制御部及びブロック制御部を含む、複数のクラスタと、
前記複数のクラスタのブロック制御部からアクセス可能な第２の共有メモリと
を更に備え、
前記第２の共有メモリは、各クラスタのファイル制御部の死活情報が格納される死活領域を有し、
各クラスタにおいて、
ブロック制御部は、ファイル制御部から前記死活情報のＩ／Ｏ要求を受領すると、前記死活領域に対して排他制御を行い、当該死活領域に対する前記死活情報のＩ／Ｏ要求の実行結果を、前記第１のメモリ経由パスを介して、前記ファイル制御部へ返し、
ファイル制御部は、前記ブロック制御部から返された前記死活情報のＩ／Ｏ要求の実行結果に基づいて、他のクラスタのファイル制御部の死活を判定する
請求項１に記載のストレージシステム。
【請求項３】
ホスト計算機からファイルＩ／Ｏ要求を受領するファイルＩ／Ｆをさらに備え、
前記ファイルＩ／Ｆは、前記ブロック制御部と、前記第１及び第２のメモリ経由パスよりも高速な物理パスで接続されており、
前記ファイルＩ／Ｆは、ホスト計算機から受領したファイルＩ／Ｏ要求をブロックＩ／Ｏ要求に変換し、その変換したブロックＩ／Ｏ要求を、前記物理パスを介して、前記ブロック制御部へ転送する
請求項１に記載のストレージシステム。
【請求項４】
前記ブロック制御部は、当該ブロック制御部に接続されている各パスの種類が、前記物理パス、又は、前記第１又は第２のメモリ経由パスの何れであるかを管理し、パスの種類毎に異なる処理を行う
請求項３に記載のストレージシステム。
【請求項５】
前記第２のメモリ経由パスは、前記第１のメモリ経由パスよりも高速である
請求項４に記載のストレージシステム。
【請求項６】
前記ファイル制御部は、前記第１のメモリ経由パスを介して、前記ブロック制御部の死活を監視し、前記ブロック制御部の生存が確認できない場合、当該ファイル制御部の実行を停止する
請求項１に記載のストレージシステム。
【請求項７】
前記第２領域の容量は、前記第１領域の容量よりも大きい
請求項１に記載のストレージシステム。
【請求項８】
前記ブロック制御部の前記第２領域に対するポーリング間隔は、前記第１領域に対するポーリング間隔よりも短い
請求項１に記載のストレージシステム。
【請求項９】
ホスト計算機からファイルＩ／Ｏ要求を受領するファイルＩ／Ｆをさらに備え、
前記ファイルＩ／Ｆは、前記ファイルＩ／Ｆと、前記第１及び第２のメモリ経由パスよりも高速な物理パスで接続されており、
前記ファイル制御部と前記ブロック制御部とは、
前記第１の共有メモリの第３領域を介して構成され、前記第１及び第２のメモリ経由パスよりも高速な第３のメモリ経由パスと、で接続されており、
前記ファイルＩ／Ｆは、ホスト計算機から受領したファイルＩ／Ｏ要求を、前記物理パスを介して、前記ファイル制御部へ転送し、
前記ファイル制御部は、前記ファイルＩ／Ｆから転送されたファイルＩ／Ｏ要求をブロックＩ／Ｏ要求に変換し、その変換したブロックＩ／Ｆ要求を、前記第３のメモリ経由パスを介して、前記ブロック制御部へ渡す
請求項１に記載のストレージシステム。
【請求項１０】
ホスト計算機からブロックＩ／Ｏ要求を受領するブロックＩ／Ｆと、
前記ブロックＩ／Ｆと物理パスで接続されており、前記ブロックＩ／Ｆが受領したブロックＩ／Ｏ要求を制御するブロック制御部と、
ホスト計算機に対してファイルサービスを提供するファイル制御部と、
前記ブロック制御部及び前記ファイル制御部が共有する共有メモリと、
を備えるストレージシステムにおける記憶制御方法であって、
前記ファイル制御部と前記ブロック制御部とは、
前記共有メモリの第１領域を介して構成される第１のメモリ経由パスと、
前記第１の共有メモリの第２領域を介して構成される第２のメモリ経由パスと、で接続されており、
前記ブロック制御部が、
前記物理パスを介するデータ転送に関するプロトコルを処理するプロトコル処理部と、
前記第１又は第２のメモリ経由パスを介するデータのやり取りを、前記プロトコル処理部が処理可能なプロトコルに変換する仮想ドライバと、を有し、
前記ブロック制御部は、
前記ファイル制御部の制御に関する制御情報を、前記第１のメモリ経由パスを介して前記ファイル制御部とやり取りし、
前記ファイル制御部から前記第２のメモリ経由パスを介して渡されたＩ／Ｏ要求を、前記仮想ドライバによって変換してから前記プロトコル処理部で処理し、
前記ブロックＩ／Ｆから物理パスを介して転送されたブロックＩ／Ｏ要求を、前記仮想ドライバを介さず、前記プロトコル処理部で処理する
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、記憶制御に関し、例えば、ストレージシステムの技術に関する。
【背景技術】
【０００２】
ＦＣＰ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  ＳＣＳＩ）、ｉＳＣＳＩ（ｉｎｔｅｒｎｅｔ  ＳＣＳＩ）、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等の複数の種類のプロトコルに１台で対応することのできる一体型ストレージシステムが注目されている。このような一体型ストレージシステムは、ユニファイドストレージと呼ばれており、省スペース、低コスト、作業性向上等の利点を備える（特許文献１）。ＦＣＰやｉＳＣＳＩは、記憶装置に対してブロック単位でアクセス（以下「ブロックアクセス」という）するためのプロトコルである。ＣＩＦＳやＮＦＳは、記憶装置に対してファイル単位でアクセス（以下「ファイルアクセス」という）するためのプロトコルである。特許文献１には、データをブロック単位で読み書きするブロック処理部を含むホストＯＳと、データをファイル単位で送受信するファイルサーバを含む仮想ＯＳと、ホストＯＳと仮想ＯＳとが通信するためのＯＳ間通信路と、を備える計算機が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＷＯ２０１４／１１８８７０
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ホスト計算機に対してブロックアクセスのＩ／Ｆ（ＩｎｔｅｒＦａｃｅ）を提供するブロックＩ／Ｆと、ブロックアクセスを処理するブロック制御部と、ホスト計算機に対してファイルアクセスのＩ／Ｆを提供するファイルＩ／Ｆと、ファイルアクセスを処理するファイル制御部とを有し、これらのモジュールがＰＣＩｅ（ＰＣＩ−Ｅｘｐｒｅｓｓ）等の内部バスで接続されているユニファイドストレージが考えられる。内部バスの帯域は有限であるため、内部バスにおいて、ホスト計算機からのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）データ以外のデータ（例えば、ユニファイドストレージ内でやり取りされる制御データ等）が大量に転送されると、ユニファイドストレージのホスト計算機に対するＩ／Ｏ性能が低下する。また、ユニファイドストレージ内において、フロック制御部やファイル制御部などは、様々な異なる目的の制御データをやり取りする。したがって、それぞれの目的に合わせて適切に制御データを取り扱わないと、ユニファイドストレージのＩ／Ｏ性能が低下してしまう。【０００５】
本発明は、上記問題に鑑みてなされたものであり、その目的は、ユニファイドストレージのホスト計算機に対するＩ／Ｏ性能を高めることにある。
【課題を解決するための手段】
【０００６】
一実施例に係るストレージシステムは、ブロックＩ／Ｏ要求を制御するブロック制御部と、ホスト計算機に対してファイルサービスを提供するファイル制御部と、ブロック制御部及びファイル制御部が共有する第１の共有メモリと、を備える。
ファイル制御部とブロック制御部とは、第１の共有メモリの第１領域を介して構成される第１のメモリ経由パスと、第１の共有メモリの第２領域を介して構成され、第１のメモリ経由パスよりも高速な第２のメモリ経由パスと、で接続されている。
ブロック制御部は、第１のメモリ経由パスを介してファイル制御部と、ファイル制御部の制御に関する制御情報をやり取りし、第２のメモリ経由パスを介してファイル制御部と、ファイル制御部のＩ／Ｏに関するデータをやり取りする。
【発明の効果】
【０００７】
本発明によれば、ユニファイドストレージのホスト計算機に対するＩ／Ｏ性能を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１に係るストレージシステムの構成例を示す。
【図２】ブロック制御部が有する機能の例を示す。
【図３】Ｉ／Ｏパス定義テーブルの構成例を示す。
【図４】論理Ｉ／Ｏパスに関する初期化処理の例を示すフローチャートである。
【図５】実施例２に係るストレージシステムの構成例を示す。
【図６】実施例２に係るＩ／Ｏパス定義テーブルの構成例を示す。
【図７】実施例３に係るストレージシステムの構成例を示す。
【図８】ファイル制御部が共有メモリに状態情報をライトする処理例を示すフローチャートである。
【図９】ファイル制御部が共有メモリから他のファイル制御部の状態情報をリードする処理例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、一実施例を説明する。以下の説明では、「ｘｘｘテーブル」、「ｘｘｘキュー」又は「ｘｘｘリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」、「ｘｘｘキュー」又は「ｘｘｘリスト」を「ｘｘｘ情報」と呼ぶことができる。
【００１０】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び通信インターフェイスデバイスのうちの少なくとも１つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【００１１】
また、以下の説明では、計算機システムに含まれる少なくとも１つの装置を管理する１以上の計算機の集合を「管理システム」と呼ぶことがある。管理計算機が表示用情報を表示する場合は管理計算機が管理システムでよい。また、管理計算機と表示用計算機の組み合わせも管理システムでよい。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合はそれら複数の計算機（表示を表示用計算機が行う場合は表示用計算機も含んでよい）が管理システムでよい。本実施例では、管理計算機が管理システムである。また、管理計算機が情報を表示するとは、管理計算機が有する表示デバイスに情報を表示することであってもよいし、管理計算機（例えばサーバ）に接続された表示用計算機（例えばクライアント）に表示用情報を送信することであってもよい。後者の場合、表示用計算機が有する表示デバイスに表示用情報が表す情報が表示用計算機によって表示される。
【００１２】
また、以下の説明では、同種の要素を区別して説明する場合には、「ｘｘｘ１０１Ａ」、「ｘｘｘ１０１Ｂ」のように参照符号を使用し、同種の要素を区別しないで説明する場合には、「ｘｘｘ１０１」のように参照符号のうちの共通番号のみを使用することがある。
【実施例１】
【００１３】
図１は、実施例１に係るストレージシステムの構成例を示す。【００１４】
ストレージシステム１００Ａは、コントローラ１０１Ａ、ブロックＩ／Ｆ１０８、ファイルＩ／Ｆ１０９、論理ＶＯＬ（Ｖｏｌｕｍｅ）１１１Ａ、１１１Ｂ、１１１Ｃを備える。論理ＶＯＬ１１１Ａ、１１１Ｂ、１１１Ｃは、１以上の記憶装置の有する記憶領域から構成されてよい。論理ＶＯＬ１１１Ａ、１１１Ｂ、１１１Ｃは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術によって論理的に構築された記憶領域であってよい。記憶装置の例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）がある。【００１５】
コントローラ１０１Ａは、メモリ１１０、ブロック制御部１２０、ファイル制御部１３０を有する。ブロック制御部１２０は、ブロックアクセスのためのコンピュータプログラムをＣＰＵが実行することにより実現される機能であってよい。ファイル制御部１３０は、ファイルアクセスのためのコンピュータプログラムをＣＰＵが実行することにより実現される機能であってよい。１つのＣＰＵによりブロック制御部１２０及びファイル制御部１３０の両方が実現されてもよいし、ブロック制御部１２０を実現するＣＰＵとファイル制御部１３０を実現するＣＰＵとは分かれていてもよい。また、ブロック制御部１２０及びファイル制御部１３０のうちの少なくとも１つの少なくとも一部が、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の特定用途向け集積回路で実現されてもよい。ブロック制御部１２０及びファイル制御部１３０は、独立して稼働してよい。メモリ１１０の例として、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）がある。【００１６】
ストレージシステム１００Ａは、複数のコントローラ１０１Ａを備え、冗長性を確保してもよい。【００１７】
ブロックＩ／Ｆ１０８は、ネットワーク２０２Ａを介してホスト計算機２００Ａと双方向通信可能に接続される。ネットワーク２０２Ａを介する通信プロトコルの例として、ＦＣＰ又はｉＳＣＳＩがある。【００１８】
ブロックＩ／Ｆ１０８は、物理的なＩ／Ｏパス（「物理Ｉ／Ｏパス」という）３０１Ａを介してブロック制御部１２０と双方向通信可能に接続される。物理Ｉ／Ｏパス３０１Ａは、内部バス上に構築される。内部バスは、例えば、ＰＣＩｅバスである。物理Ｉ／Ｏパス３０１Ａ上では、ＳＣＳＩプロトコルに係るデータが転送されてよい。ブロックＩ／Ｆ１０８は、プロセッサ及びメモリ等を備えるハードウェアモジュールであってよい。ブロックＩ／Ｆ１０８は、例えば、ＦＣＰ（又はｉＳＣＳＩ）とＰＣＩｅのプロトコルを相互変換するＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）である。【００１９】
ホスト計算機２００Ａは、ネットワーク２０２Ａを介してブロックＩ／Ｆ１０８に、ブロック単位のアクセス要求であるブロックアクセス要求を送信してよい。ブロックアクセス要求は、ブロックＩ／Ｏ要求と呼ばれてよい。ブロックＩ／Ｏ要求によってライト又はリードされるデータは、ブロックＩ／Ｏデータと呼ばれてよい。ブロックアクセス要求は、ＳＣＳＩに従い、論理ＶＯＬ１１１Ａのアクセス先のブロックを指定する要求であってよい。ブロックアクセス要求の例として、ブロックリード要求又はブロックライト要求がある。ブロックリード要求によってリードされるデータは、ブロックリードデータと呼ばれてよい。ブロックライト要求によってライトされるデータは、ブロックライトデータと呼ばれてよい。ブロックＩ／Ｆ１０８は、ホスト計算機２００Ａから受領したブロックアクセス要求を、物理Ｉ／Ｏパス３０１Ａを介してブロック制御部１２０へ転送する。この際、ブロックＩ／Ｆ１０８は、ネットワーク２０２Ａに係るプロトコルを、物理Ｉ／Ｏパス３０１Ａに係るプロトコルへ変換してよい。【００２０】
また、ブロックＩ／Ｆ１０８は、ブロック制御部１２０から物理Ｉ／Ｏパス３０１Ａを介して、上述のブロックアクセス要求に対応する応答（以下「ブロックアクセス応答」という）を受領する。ブロックリード要求に対応するブロックアクセス応答には、リードデータが含まれてよい。ブロックライト要求に対応するブロックアクセス応答には、ライト処理の成否が含まれてよい。そして、ブロックＩ／Ｆ１０８は、その受領したブロックアクセス応答を、ネットワーク２０２Ａを介してホスト計算機２０２Ａへ送信する。この際、ブロックＩ／Ｆ１０８は、物理Ｉ／Ｏパス３０１Ａに係るプロトコルを、ネットワーク２０２Ａに係るプロトコルへ変換してよい。【００２１】
ファイルＩ／Ｆ１０９は、ネットワーク２０２Ｂを介してホスト計算機２００Ｂと双方向通信可能に接続される。ネットワーク２０２Ｂを介する通信プロトコルの例として、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）又はＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）がある。【００２２】
ネットワーク２０２Ａ及び２０２Ｂは、別々のネットワークであっても良いし、１つのネットワークであっても良い。ネットワーク２０２Ａ及び２０２Ｂは、ＳＡＮ、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、又はこれらの組み合わせであってよい。【００２３】
ファイルＩ／Ｆ１０９は、物理Ｉ／Ｏパス３０１Ｂを介してブロック制御部１２０と双方向通信可能に接続される。物理Ｉ／Ｏパス３０１Ｂも、物理Ｉ／Ｏパス３０１Ａと同様、内部バス上に構築される。【００２４】
ファイルＩ／Ｆ１０９は、物理的な制御パス（「物理制御パス」という）３０２を介してファイル制御部１３０と接続される。物理制御パス３０２も、物理Ｉ／Ｏパス３０１Ａ、３０１Ｂと同様、内部バス上に構築される。【００２５】
ファイルＩ／Ｆ１０９は、プロセッサ及びメモリ等を備えるハードウェアモジュールであってよい。ファイルＩ／Ｆ１０９の例として、Ｅｔｈｅｒｎｅｔ（登録商標）とＰＣＩｅのプロトコルを相互変換するＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）がある。【００２６】
ホスト計算機２００Ｂは、ネットワーク２０２Ｂを介してファイルＩ／Ｆ１０９に、ファイル単位のアクセス要求であるファイルアクセス要求を送信してよい。ファイルアクセス要求は、ファイルＩ／Ｏ要求と呼ばれてよい。ファイルＩ／Ｏ要求によってライト又はリードされるデータは、ファイルＩ／Ｏデータと呼ばれてよい。ファイルアクセス要求は、ＣＩＦＳ又はＮＦＳに従い、アクセス先のファイルを指定する要求であってよい。ファイルアクセス要求の例として、ファイルリード要求又はファイルライト要求がある。ファイルリード要求によってリードされるデータは、ファイルリードデータと呼ばれてよい。ファイルライト要求によってライトされるデータは、ファイルライトデータを呼ばれてよい。ファイルＩ／Ｆ１０９は、ホスト計算機２００Ｂから受領したファイルアクセス要求を、ブロック制御部１２０が処理できるように、ブロックアクセス要求に変換する。そして、ファイルＩ／Ｆ１０９は、その変換したブロックアクセス要求を、物理Ｉ／Ｏパス３０１Ｂを介してブロック制御部１２０へ転送する。この際、ファイルＩ／Ｆ１０９は、ネットワーク２０２Ｂに係るプロトコルを、物理Ｉ／Ｏパス３０１Ｂに係るプロトコルへ変換してよい。【００２７】
また、ファイルＩ／Ｆ１０９は、ブロック制御部１２０から物理Ｉ／Ｏパス３０１Ｂを介して、上述のブロックアクセス要求に対応するブロックアクセス応答を受領する。そして、ファイルＩ／Ｆ１０９は、その受領したブロックアクセス応答を、上述のファイルアクセス要求に対応する応答（以下「ファイルアクセス応答」という）に変換する。そして、ファイルＩ／Ｆ１０９は、その変換したファイルアクセス応答を、ネットワーク２０２Ｂを介してホスト計算機２０２Ｂへ送信する。この際、ファイルＩ／Ｆ１０９は、物理Ｉ／Ｏパス３０１Ｂに係るプロトコルを、ネットワーク２０２Ｂに係るプロトコルへ変換してよい。【００２８】
ファイル制御部１３０は、物理制御パス３０２を介して、ファイルＩ／Ｆ１０９を制御してよい。例えば、ファイル制御部１３０は、物理制御パス３０２を介して、ファイルＩ／Ｆ１０９のハードウェア状態を取得してよい。ファイル制御部１３０は、管理計算機２０４から指定されたパラメータを、物理制御パス３０２を介して、ファイルＩ／Ｆ１０９に設定してよい。ファイル制御部１３０は、物理制御パス３０２を介して、ファイルＩ／Ｆ１０９の有する機能を制御及び管理してよい。ファイル制御部１３０は、ファイルアクセス要求をブロックアクセス要求に変換する機能を有してよい。また、ファイル制御部１３０は、ブロックアクセス応答（例えば、ブロックデータ）をファイルアクセス応答（例えば、ファイルデータ）に変換する機能を有してよい。【００２９】
ファイルＩ／Ｆ１０９は、ファイル制御部１３０の処理の一部を肩代わりする、いわゆるハードウェアアクセラレータ機能を有してよい。例えば、ファイルＩ／Ｆ１０９は、ファイルシステムのサービス提供処理、及び／又は、ディスクＩ／Ｏ処理等を行うハードウェアアクセラレータ機能を有してよい。ファイル制御部１３０は、物理制御パス３０２を介して、ファイルＩ／Ｆ１０９の有するハードウェアアクセラレータ機能を制御してよい。ファイルＩ／Ｆ１０９は、ファイルアクセスとブロックアクセスとを相互変換するハードウェアアクセラレータ機能を有してよい。【００３０】
ブロック制御部１２０とファイル制御部１３０とは、論理的なＩ／Ｏパス（「論理Ｉ／Ｏパス」という）３０３を介して、双方向通信可能に接続されてよい。論理Ｉ／Ｏパス３０３は、メモリ１１０上に設けられたキューを用いて実現されてよい。例えば、ファイル制御部１３０がメモリ１１０上の所定のキューにデータをライトし、ブロック制御部１２０がメモリ１１０上のそのキューからデータをリードすることにより、ファイル制御部１３０からブロック制御部１２０に対するデータ転送が実現されてよい。ブロック制御部１２０からファイル制御部１３０に対するデータ転送も同様である。【００３１】
ファイル制御部１３０は、自己のファイル制御部１３０で実行されるプログラム及びデータ等が格納されている論理ＶＯＬ１１１Ｃに、論理Ｉ／Ｏパス３０３及びブロック制御部１２０を介してアクセスする。すなわち、この論理ＶＯＬ１１１Ｃは、ファイル制御部１３０のいわゆるシステムディスクであってよい。例えば、ファイル制御部１３０は、起動開始時、論理Ｉ／Ｏパス３０３を介して論理ＶＯＬ１１１Ｃにアクセスし、起動用のプログラム及びデータ等を取得してよい。例えば、ファイル制御部１３０は、自己のファイル制御部１３０に障害等が発生した場合、論理ＶＯＬ１１１Ｃにメモリダンプを格納してよい。メモリダンプは、ファイル制御部１３０で発生した障害の内容把握及び要因解析に用いることができる。【００３２】
ブロック制御部１２０とファイル制御部１３０とは、論理的な制御パス（「論理制御パス」という）３０４を介して、双方向通信可能に接続されてよい。論理制御パス３０４も論理Ｉ／Ｏパス３０３と同様に、メモリ１１０を介して、キュー等により実現されてよい。論理制御パス３０４では、ＳＣＳＩコマンドのようなディスクアクセス要求ではなく、プログラム等の動作を制御するための制御情報が送受信される。制御情報は、例えば、プログラムのシャットダウン指示、時刻同期のための時刻情報、又は、障害発生等を他のプログラムに伝達するための情報や、ファイル制御部の死活判断のためのハートビート情報等を含んでよい。後述するが、論理制御パス３０４と論理Ｉ／Ｏパス３０３とは、メモリ１１０を介した通信を実施する点では共通だが、用途や性能要件が異なるため、それぞれが独立したキューで実現されることが望ましい。【００３３】
論理Ｉ／Ｏパス３０３及び論理制御パス３０４は、メモリ１１０を介して構成されるパスであるので、これらのパスをまとめてメモリ経由パスと呼んでもよい。ファイル制御部１３０が論理Ｉ／Ｏパス３０３を介してやり取りする情報と、ファイル制御部１３０が論理制御パス３０４を介してやり取りする制御情報とは、何れもファイル制御部１３０の内部制御に関する情報のやり取りであるので、これらをまとめて内部情報のＩ／Ｏ要求と呼んでもよい。メモリ経由パスを介する情報のやり取りは、ブロック制御部１２０やファイル制御部１３０が、ポーリング等の手法によりキューの更新（すなわち相手からのキューイング）を検出し、キューの内容を処理することにより実現されてよい。なお、典型的には、論理制御パス３０４を介してやり取りするデータ量よりも論理Ｉ／Ｏパス３０３を介してやり取りするデータ量の方が大きい。そこで、論理Ｉ／Ｏパス３０３と論理制御パス３０４のそれぞれに割り当てるメモリ１１０の容量、キューサイズ、及び／又は、ポーリング時間間隔は、通信内容やその性質に応じて異なってよい。例えば、論理Ｉ／Ｏパス３０３に割り当てるメモリ１１０の容量、及び／又は、キューのサイズを、論理制御パス３０４よりも大きくしてもよい。例えば、論理Ｉ／Ｏパス３０３のポーリング時間間隔を、論理制御パス３０４よりも短くしてもよい。これにより、論理制御パス３０４よりも論理Ｉ／Ｏパス３０３の方が、短時間でより多くのデータをやり取りできるようになる。すなわち、論理制御パス３０４よりも論理Ｉ／Ｏパス３０３の方が、通信帯域が大きく、通信速度が高速になる。【００３４】
ブロック制御部１２０には、物理Ｉ／Ｏパス３０１Ａ、３０１Ｂ、論理Ｉ／Ｏパス３０３、論理制御パス３０４が接続されている。ブロック制御部１２０は、これらのパスを介して受領した要求を処理する。【００３５】
論理ＶＯＬ１１１に対するアクセスは、全てブロック制御部１２０によって制御されてよい。ブロック制御部１２０は、論理ＶＯＬ１１１に対するストレージ機能を有してよい。ストレージ機能の典型例としては、ストレージシステム１００内で複製を作成し管理するローカルコピー機能、別のストレージシステム１００に複製を作成し管理するリモートコピー機能、格納するデータ量を削減する圧縮・重複排除機能、及び、ＳＳＤとＨＤＤといったＩ／Ｏ性能及び特性の異なる記憶装置の間でデータを動的に移動させる階層制御機能、等がある。【００３６】
ブロック制御部１２０は、物理Ｉ／Ｏパス３０１Ａを介してブロックＩ／Ｆ１０８からブロックリード要求を受領すると、その受領したブロックリード要求に対応するユーザデータを論理ＶＯＬ１１１Ａからリードする。そして、ブロック制御部１２０は、そのリードしたユーザデータを、物理Ｉ／Ｏパス３０１Ａを介してブロックＩ／Ｆ１０８へ返す。【００３７】
ブロック制御部１２０は、物理Ｉ／Ｏパス３０１Ｂを介してファイルＩ／Ｏ１０９からブロックアクセス要求を受領すると、その受領したブロックリード要求に対応するユーザデータを論理ＶＯＬ１１１Ｂからリードする。そして、ブロック制御部１２０は、そのリードしたユーザデータを、物理Ｉ／Ｏパス３０１Ｂを介してファイルＩ／Ｆ１０９へ返す。【００３８】
ブロック制御部１２０は、ファイル制御部１３０から論理Ｉ／Ｏパス３０３を介して論理ＶＯＬ１１１Ｃに対するリード要求を受領すると、その受領したリード要求に対応するデータを、論理ＶＯＬ１１１Ｃからリードする。そして、ブロック制御部１２０は、その受領したリード要求に対応するデータを、論理Ｉ／Ｏパス３０３を介してファイル制御部１３０へ渡す。【００３９】
ホスト計算機２００Ａ、２００Ｂから論理ＶＯＬ１１１Ａ、１１１Ｂに対するＩ／Ｏ要求には、高いＩ／Ｏ性能が求められている。したがって、物理Ｉ／Ｏパス３０１Ａ、３０１Ｂは、ＰＣＩｅ等の高速通信可能な内部バスで構成されている。これにより、ストレージシステム１００Ａは、ホスト計算機２００Ａ、２００ＢからのＩ／Ｏ要求に対して高速にＩ／Ｏ応答を返すことができる。【００４０】
また、ファイル制御部１３０から論理ＶＯＬ１１１Ｃに対するＩ／Ｏ要求や制御情報のやり取りは、Ｉ／Ｏ速度が多少遅くても問題無い。よって、論理Ｉ／Ｏパス３０３、論理制御パス３０４を、上述のように、メモリ１１０上のキューで（メモリ経由パスとして）構築し、論理Ｉ／Ｏパス３０３や論理制御パス３０４に関するブロック制御部１２０の処理速度を意図的に遅くし、ブロック制御部１２０の処理性能を、ホスト計算機２００Ａ、２００ＢからのＩ／Ｏ要求により多く割けるようにしてよい。【００４１】
図２は、ブロック制御部１２０が有する機能の例を示す。【００４２】
ブロック制御部１２０は、機能として、パス制御部４０１、ストレージ制御部４０２、ＳＣＳＩコマンド処理部４０３、プロトコル処理部４０４、物理Ｉ／Ｆドライバ４０５、仮想Ｉ／Ｆドライバ４０６を有してよい。これらの機能は、それぞれ、プログラムとして実現されてもよいし、専用チップとして実現されてもよい。物理Ｉ／Ｆドライバ４０５は、物理ドライバと呼ばれてもよい。仮想Ｉ／Ｆドライバ４０６は、仮想ドライバと呼ばれてもよい。【００４３】
ストレージ制御部４０２は、ストレージシステム１００Ａ全体を制御する。ストレージ制御部４０２は、論理ＶＯＬ１１１に対するＩ／Ｏを制御する。ストレージシステム１００が複数のストレージコントローラ１０１から共にアクセス可能な共有メモリを有する場合、ストレージ制御部４０２は、共有メモリに対するアクセスの排他制御を行ってよい。ストレージ制御部４０２は、複数の記憶装置をＲＡＩＤ制御し、論理ＶＯＬを構築してよい。ストレージ制御部４０２は、メモリ１１０上にキャッシュメモリ領域を有する場合、キャッシュを管理及び制御してよい。ストレージ制御部４０２は、ストレージシステム１００内のハードウェアの障害検出、障害部位の切り離し、及び、障害発生の管理計算機２０４への通知等を行ってもよい。【００４４】
ＳＣＳＩコマンド処理部４０３は、ブロックＩ／Ｆ１０８、ファイルＩ／Ｆ１０９又はファイル制御部１３０から受領するＳＣＳＩコマンドを解析して、論理ＶＯＬ１１１に対するライト処理又はリード処理を実行する。【００４５】
プロトコル処理部４０４は、ブロックアクセス要求に係るプロトコル（ＦＣＰ等）を解析する。【００４６】
物理Ｉ／Ｆドライバ４０５は、プロトコル処理部４０４が、物理Ｉ／Ｏパス３０１Ａを介してブロックＩ／Ｆ１０８に、物理Ｉ／Ｏパス３０１Ｂを介してファイルＩ／Ｆ１０９にアクセスできるように、各Ｉ／Ｆの固有の制御を実施する。【００４７】
仮想Ｉ／Ｆドライバ４０６は、プロトコル処理部４０４と連携して、ファイル制御部１３０が論理ボリューム１１１Ｃへアクセスするための論理Ｉ／Ｏパス３０３を実現する。例えば、プロトコル処理部４０４がＦＣＰに対応している場合、仮想Ｉ／Ｆドライバ４０６は、ＦＣＰのエミュレート機能を有してよい。これにより、プロトコル処理部４０４、ＳＣＳＩコマンド処理部４０３は、物理Ｉ／Ｏパス３０１Ａ、３０１Ｂ、論理Ｉ／Ｏパス３０３の何れを介する送受信データも、ＦＣＰとして共通に取り扱うことができるようになる。後述するパス制御部４０１と仮想Ｉ／Ｆドライバ４０６とは、メモリ１１０を介して情報を送受信する機能を有する点では共通するが、取り扱う情報の要件が異なる。よって、両者の処理性能を、要件に応じて差を付けてよい。例えば、仮想Ｉ／Ｆドライバ４０６は、論理ボリューム１１１Ｃへのデータ読み書き要求を処理する一部分であるため、タイムアウト等の要件が厳しい場合がある。よって、仮想Ｉ／Ｆドライバ４０６は、高速処理が可能であることが望ましい。例えば、仮想Ｉ／Ｆドライバ４０６は、パス制御部４０１よりも、キューのポーリング時間間隔が短くてよい。又は、仮想Ｉ／Ｆドライバ４０６は、パス制御部４０１よりも、キューに詰まれた要求の処理多重度が多くてよい。【００４８】
パス制御部４０１は、論理制御パス３０４を介してファイル制御部１３０と送受信される制御情報の生成及び解析等を行う。パス制御部４０１は、メモリ１１０上のキューを制御して、制御情報を送受信してよい。制御情報は、プログラムのシャットダウン指示、時刻同期のための時刻情報、障害発生等を他のプログラムに伝達するための情報、又は、ファイル制御部の死活判断のためのハートビート情報などであってよい。したがって、ブロック制御部１２０とファイル制御部１３０とは、相互の間で予め取り決めたデータフォーマットに従う制御情報を、送受信してよい。【００４９】
図３は、Ｉ／Ｏパス定義テーブル１１２の構成例を示す。【００５０】
Ｉ／Ｏパス定義テーブル１１２は、ブロック制御部１２０に接続されている物理Ｉ／Ｏパス及び論理Ｉ／Ｏパスに関する情報をまとめて有する。Ｉ／Ｏパス定義テーブル１１２は、メモリ１１０に保持され、ブロック制御部１２０によって管理されてよい。【００５１】
Ｉ／Ｏパス定義テーブル１１２の各レコードは、項目値（カラム値）として、Ｉ／Ｏパス番号２２１、Ｉ／Ｏパス種類２２２、イニシエータ２２３、論理ＶＯＬ番号２２４を有して良い。【００５２】
Ｉ／Ｏパス番号２２１は、ブロック制御部１２０に接続されているＩ／Ｏパスを一意に識別するための値である。【００５３】
Ｉ／Ｏパス種類２２２は、Ｉ／Ｏパス番号２２１に対応するＩ／Ｏパスが、論理Ｉ／Ｏパス及び物理Ｉ／Ｏパスの何れであるかを示す値である。【００５４】
イニシエータ２２３は、Ｉ／Ｏパス番号２２１に対応するＩ／Ｏパスの接続先（つまり、Ｉ／Ｏ要求の発行元）のモジュール（ハードウェアモジュール及びプログラムモジュールの何れでもよい）を識別するための値である。図１の場合、物理Ｉ／Ｏパス３０１Ａに対応するイニシエータ２２３は「ブロックＩ／Ｆ１０８」となり、物理Ｉ／Ｏパス３０１Ｂに対応するイニシエータ２２３は「ファイルＩ／Ｆ１０９」となり、論理Ｉ／Ｏパス３０３に対応するイニシエータ２２３は「ファイル制御部１３０」となる。【００５５】
論理ＶＯＬ番号２２４は、Ｉ／Ｏパス番号２２１（イニシエータ２２３）に対応付けられている論理ＶＯＬ１１１を識別するための値である。【００５６】
ブロック制御部１２０は、図３のＩ／Ｏパス番号２２１「１」のレコードを参照すると、ブロックＩ／Ｆ１０８との間のＩ／Ｏパス３０１Ａが物理Ｉ／Ｏパスであることを認識できる。また、ブロック制御部１２０は、物理Ｉ／Ｏパス３０１Ａを介して受領したＩ／Ｏ要求が、論理ＶＯＬ番号２２４「１０」、「１１」及び「１２」の論理ＶＯＬ１１１Ａ（ホスト計算機２００Ａのユーザデータ用の論理ＶＯＬ）に対するＩ／Ｏ要求であると認識できる。言い換えると、Ｉ／Ｏパス番号２２１「１」に対応する論理ＶＯＬ番号２２４には、ブロックＩ／Ｆ１０８を介してホスト計算機２００Ａに提供されたユーザデータ用の論理ＶＯＬ１１１の番号が格納されてよい。Ｉ／Ｏパス番号２２１「２」のレコードについても同様である。【００５７】
ブロック制御部１２０は、図３のＩ／Ｏパス番号２２１「３」のレコードを参照すると、ファイル制御部１３０との間のＩ／Ｏパス３０３が論理Ｉ／Ｏパスであることを認識できる。また、ブロック制御部１２０は、論理Ｉ／Ｏパス３０３を介して受領したＩ／Ｏ要求が、論理ＶＯＬ番号２２４「２０１」の論理ＶＯＬ１１１Ｃ（ファイル制御部１３０のシステムディスク用の論理ＶＯＬ）に対するＩ／Ｏ要求であると認識できる。言い換えると、Ｉ／Ｏパス番号２２１「３」に対応する論理ＶＯＬ番号２２４には、ファイル制御部１３０に提供されたシステムディスク用の論理ＶＯＬ１１１Ｃの番号が格納されてよい。論理ＶＯＬ番号２２４は、管理計算機２０４から設定されてもよい。【００５８】
ブロック制御部１２０は、ストレージシステム１００にブロックＩ／Ｆ１０８（又はファイルＩ／Ｆ１０９）が装着されたことを検知すると、Ｉ／Ｏパス定義テーブル１１２に、物理Ｉ／Ｏパス３０１Ａ（又は物理Ｉ／Ｏパス３０１Ｂ）に対応するレコードを登録してよい。そして、ブロック制御部１２０は、その装着されたブロックＩ／Ｆ１０８（又はファイルＩ／Ｆ１０９）と初期化通信を行い、イニシエータ２２３を更新してよい。ブロック制御部１２０は、初期化通信によって、ブロックＩ／Ｆ１０８（又はファイルＩ／Ｆ１０９）のハードウェアに関するレジスタ情報等を取得してよい。そして、ブロック制御部１２０は、その取得したハードウェアに関するレジスタ情報から、そのＩ／Ｆの種類、識別番号及び製造番号等を特定してよい。なお、図示していないが、Ｉ／Ｏパス定義テーブル１１２は、「ポーリング時間間隔」の項目値をさらに有してもよい。ポーリング時間間隔とは、ブロック制御部１２０が当該パスにエンキューされた要求を刈り取るためのポーリング処理の間隔であってよい。ポーリング時間間隔は、例えば、１ミリ秒、１０ミリ秒であってよい。このポーリング時間間隔の値を、Ｉ／Ｏパス種類やイニシエータ種類に応じて変化させることで、ブロック制御部１２０による当該パスのポーリング時間間隔が変化し、性能要件に応じることができてよい。例えば、イニシエータ２２３が、高い性能の求められるブロックＩ／Ｆ１０８やファイルＩ／Ｆ１０９などである場合、ポーリング時間間隔は、設定可能な最小値であってよい。イニシエータ２２３が、それほど高い性能の求められないファイル制御部１３０である場合、ポーリング時間間隔は、比較的大きな値であってよい。エンキューされた要求の処理多重度を増やすことで性能を上げることも考えられるため、ポーリング時間間隔は、数値に代えて、「優先度大」「優先度中」「優先度小」などの相対的な処理速度を示す情報であってもよい。【００５９】
ブロック制御部１２０は、初期化処理によって、論理Ｉ／Ｏパス３０３に対応するイニシエータ２２３を更新してよい。この初期化処理は、上記の初期化通信とは異なる処理であってよい。次に、この初期化処理の一例を示す。【００６０】
図４は、論理Ｉ／Ｏパスに関する初期化処理の例を示すフローチャートである。【００６１】
ブロック制御部１２０は、管理計算機２０４から論理Ｉ／Ｏパス３０３の作成指示を受領すると、次の処理を開始する（ステップＳ３００１）。【００６２】
ブロック制御部１２０は、ステップＳ３００１で受領した作成指示に基づいて、論理Ｉ／Ｏパス３０３に対応するレコードを生成し、Ｉ／Ｏパス定義テーブル１１２に登録する（ステップＳ３００２）。ブロック制御部１２０は、作成指示に「論理Ｉ／Ｏパス」が含まれている場合、Ｉ／Ｏパス種類２２２に「論理Ｉ／Ｏパス」を設定してよい。ブロック制御部１２０は、作成指示にＩ／Ｏパス番号が含まれている場合、Ｉ／Ｏパス番号２２１にそのＩ／Ｏパス番号を設定してよい。ブロック制御部１２０は、作成指示にＩ／Ｏパス番号が含まれていない場合、新規のＩ／Ｏパス番号２２１を設定してよい。【００６３】
ブロック制御部１２０は、論理Ｉ／Ｏパス３０３に関する初期設定を行う（ステップＳ３００３）。この初期設定は、仮想Ｉ／Ｆドライバ４０６によって行われてよい。例えば、仮想Ｉ／Ｆドライバ４０６は、メモリ１１０上に、ファイル制御部１３０との間でデータをやり取りするためのキューを作成する。仮想Ｉ／Ｆドライバ４０６は、ＦＣＰをエミュレートした論理Ｉ／Ｏパス３０３を構築する場合、論理Ｉ／Ｏパス３０３に仮想的なＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）を付与し、イニシエータ２２３となるファイル制御部１３０との初期通信のための情報（例えば、メモリ１１０上に作成するキューのサイズ情報や、キューのエントリサイズ等）を作成してよい。前述のＩ／Ｏパスごとのポーリング時間間隔も、ステップＳ３００３で設定されてよい。【００６４】
ブロック制御部１２０は、イニシエータ２２３であるファイル制御部１３０との間で、論理Ｉ／Ｏパス３０３の初期化を行う（ステップＳ３００４）。この初期化では、ブロック制御部１２０とファイル制御部１３０との間で、Ｉ／Ｏ要求をやり取りするための準備が行われる。ＦＣＰをエミュレートした論理Ｉ／Ｏパス３０３を構築する場合、この初期化において、ブロック制御部１２０とファイル制御部１３０との間で、ＷＷＮやキューのサイズ、キューのエントリサイズ、ポーリング時間間隔等を交換したりする。また、この初期化において、ブロック制御部１２０は、ファイル制御部１３０に、そのファイル制御部１３０用に割り当てられた論理ＶＯＬ１１１Ｃの番号を渡してもよい。【００６５】
なお、ステップＳ３００１〜Ｓ３００４の処理は、それぞれ、適当な契機で行われてよい。例えば、ステップＳ３００１〜Ｓ３００３は、管理計算機２０４から指示を受領した契機で行われ、ステップＳ３００４は、ファイル制御部１３０が起動した後の所定の契機で行われてもよい。所定の契機は、ブロック制御部１２０が、ファイル制御部１３０の起動完了状態を検知した契機であってもよい。又は、所定の契機は、ファイル制御部１３０が、論理制御パス３０４を介してブロック制御部１２０へ起動完了を通知した契機であってもよい。【００６６】
なお、図４では、管理計算機２０４から作成指示を受領したことを契機として、以降の処理が開始されているが、必ずしもこれに限られない。例えば、ブロック制御部１２０がストレージシステム１００Ａの備えるモジュール及びＩ／Ｏパス等の構成を予め知っている場合、ブロック制御部１２０は、ファイル制御部１３０の起動完了を検知した契機で、ステップＳ３００２以降の処理を開始してよい。又は、ストレージシステム１００の備えるモジュール及びＩ／Ｏパス等の構成情報を所定の不揮発性メモリに格納しておき、ブロック制御部１２０は、この構成情報を取得した契機で、ステップＳ３００２以降の処理を開始してもよい。
【実施例２】
【００６７】
図５は、実施例２に係るストレージシステムの構成例を示す。なお、実施例２に係る図面において、実施例１と同一の要素については図面への記載を省略する場合がある。また、実施例２の説明において、実施例１と同一の要素については同一の参照符号を付して説明を省略する場合がある。【００６８】
実施例２に係るストレージシステム１００Ｂは、実施例１に係るストレージシステム１００Ａと比較して、ブロック制御部１２０とファイルＩ／Ｆ１０９とが物理Ｉ／Ｏパス３０１Ｂで接続されておらず、ファイル制御部１３０とファイルＩ／Ｆ１０９とが物理Ｉ／Ｏパス３０１Ｃで接続されている点と、ブロック制御部１２０とファイル制御部１３０との間に論理Ｉ／Ｏパス３０５が追加されている点が相違する。【００６９】
ストレージシステム１００Ｂにおいて、物理制御パス３０２と物理Ｉ／Ｏパス３０１Ｃとは、１本の物理的な内部バスを共有してもよい。【００７０】
論理Ｉ／Ｏパス３０３は、実施例１と同様、ファイル制御部１３０が、自身のシステムディスク用の論理ＶＯＬ１１１Ｃへアクセスするためのパスである。【００７１】
論理Ｉ／Ｏパス３０５は、ファイルＩ／Ｆ１０９（ホスト計算機２００Ｂ）が、ユーザデータ用の論理ＶＯＬ１１１Ｂへアクセスするためのパスである。すなわち、ファイルＩ／Ｆ１０９がホスト計算機２００Ｂから受領したＩ／Ｏ要求は、物理Ｉ／Ｏパス３０１Ｃ及び論理Ｉ／Ｏパス３０５を介して、ブロック制御部１２０へ送信される。【００７２】
２本の論理Ｉ／Ｏパス３０３、３０５は、１本の論理Ｉ／Ｏパスとして構築されてもよい。この場合、ブロック制御部１２０は、ホスト計算機２００Ｂに割り当てたユーザデータ用の論理ＶＯＬ１１１Ｂの番号と、ファイル制御部１３０に割り当てたシステムディスク用の論理ＶＯＬ１１１Ｃの番号とを管理する。例えば、ブロック制御部１２０は、図４のステップＳ３００３において、ファイル制御部１３０との間で論理ＶＯＬ１１１Ｂ及び１１１Ｃの番号を交換することにより、論理Ｉ／Ｏパス３０３及び３０５を識別することができる。【００７３】
図６は、実施例２に係るＩ／Ｏパス定義テーブルの構成例を示す。【００７４】
Ｉ／Ｏパス定義テーブル１１２の構成は、実施例１と同じであってよい。【００７５】
ブロック制御部１２０は、図６のＩ／Ｏパス定義テーブル１１２のＩ／Ｏパス番号２２１「２」のレコードを参照すると、ファイル制御部１３０との間のＩ／Ｏパス３０５が論理Ｉ／Ｏパスであることを認識できる。ここで、当該レコードのイニシエータ２２３は「ファイル制御部１３０」となっている。しかし、ブロック制御部１２０は、上述のように、ファイル制御部１３０との間で物理Ｉ／Ｏパス３０１Ｃ（ファイルＩ／Ｆ１９０又はホスト計算機２００Ｂ）に対応する論理ＶＯＬ番号２２４「１０１」、「１０２」及び「１０３」を交換しておくことで、論理Ｉ／Ｏパス３０５を介して受領したＩ／Ｏ要求が物理Ｉ／Ｏパス３０１Ｃを介して受領した（ホスト計算機２００Ｂからの）Ｉ／Ｏ要求であることを認識できる。図６のＩ／Ｏパス定義テーブル１１２も、図３と同様、Ｉ／Ｏパス毎にポーリング時間間隔などの処理性能に関する項目値をさらに有してよい。実施例２において、論理Ｉ／Ｏパス３０５は、ユーザデータアクセス用途のパスであり比較的高い性能が求められるが、論理Ｉ／Ｏパス３０３は、システムディスクアクセス用途のパスでありそれほど高い性能は求められない。このため、論理Ｉ／Ｏパス３０５のポーリング時間間隔は比較的小さい値が、論理Ｉ／Ｏパス３０３のポーリング時間間隔は比較的大きな値が設定されてよい。これにより、ブロック制御部１２０は、パスごとの性能要件に応じた処理を行うことができる。
【実施例３】
【００７６】
図７は、実施例３に係るストレージシステム１００Ｃの構成例を示す。なお、実施例３に係る図面において、実施例１又は２と同一の要素については図面への記載を省略する場合がある。また、実施例３の説明において、実施例１又は２と同一の要素については同一の参照符号を付して説明を省略する場合がある。【００７７】
ストレージシステム１００Ｃは、複数のコントローラ１０１Ｃ、１０１Ｄを備える。そして、ストレージシステム１００Ｃは、複数のコントローラ１０１Ｃ及び１０１Ｄから共にアクセス可能である共有メモリ１１３を備える。各コントローラ１０１は、実施例１と同様に、ブロック制御部１２０、ファイル制御部１３０及びメモリ１１０を有してよい。なお、メモリ１１０は、物理的には共有メモリ１１３で代用されてもよい。図７のストレージシステム１００Ｃは、コントローラ１０１Ｃがブロック制御部１２０Ｃ及びファイル制御部１３０Ｃを有し、コントローラ１０１Ｄがブロック制御部１２０Ｄ及びファイル制御部１３０Ｄを有する。各コントローラ１０１Ｃ、１０１Ｄを、クラスタと呼んでもよい。【００７８】
ブロック制御部１２０Ｃ、１２０Ｄは、それぞれ、物理的なバス３１０Ｃ、３１０Ｄを介して、共有メモリ１１３にアクセスできる。共有メモリ１１３におけるデータ共有方式は、一般的な排他制御方式であってよい。【００７９】
共有メモリ１１３には、ストレージシステム１００Ｃの有するハードウェアコンポーネントの状態情報が格納されてよい。共有メモリ１１３には、ブロック制御部１２０がユーザデータを一時的に格納するためのキャッシング領域が設けられてよい。共有メモリ１１３には、ブロック制御部１２０が有する各機能の制御情報などが格納されてよい。【００８０】
共有メモリ１１３に格納されるこれらの情報は、ストレージシステム１００Ｃの信頼性を維持するために重要な情報である。したがって、共有メモリ１１３に格納されるこれらの情報が、不正に書き換えられたり、削除されたりすることは問題である。そのために、ストレージシステム１００Ｃを、信頼性の高いブロック制御部１２０のみが共有メモリ１１３にアクセスできるように構成することが考えられる。この場合、各コントローラ１０１Ｃ、１０１Ｄのブロック制御部１２０Ｃ、１２０Ｄは、共有メモリ１１３に直接アクセスできるので、この共有メモリ１１３を用いて、互いの状態情報を取得したり、死活状態を監視（ヘルスチェック）したりすることができる。しかし、各コントローラ１０１Ｃ、１０１Ｄのファイル制御部１３０Ｃ、１３０Ｄは、共有メモリ１１３に直接アクセスすることはできないので、このようなことができない。本実施例は、このような構成において、各コントローラ１０１Ｃ、１０１Ｄのファイル制御部１３０Ｃ、１３０Ｄが、互いの状態情報を取得したり、死活状態を監視したりできるストレージシステム１００Ｃの例である。【００８１】
図８は、ファイル制御部１３０Ｃが、共有メモリ１１３に状態情報をライトする処理例を示すフローチャートである。なお、ファイル制御部１３０Ｄの場合も同様である。【００８２】
ファイル制御部１３０Ｃは、論理制御パス３０４Ｃを介して、ブロック制御部１２０Ｃに対して、ファイル制御部１３０Ｃの状態情報の共有メモリ１１３へのライト要求を発行する（ステップＳ２００１）。ライト要求には、ライト先の領域の先頭アドレス（「ライト先アドレス」という）、状態情報の長さ、及び状態情報が含まれてよい。共有メモリ１１３におけるファイル制御部１３０の状態情報（死活情報）の格納領域を、死活領域と呼んでもよい。【００８３】
このライト要求を受領したブロック制御部１２０Ｃは、このライト要求に含まれるライト先アドレス及び状態情報の長さ等が不正値でないことを確認した後、共有メモリ１１３に、ファイル制御部１３０Ｃの状態情報をライトする。この際、ブロック制御部１２０Ｃは、共有メモリ１１３のライト先の領域に対して排他制御を行う。同じ領域に対する他のブロック制御部１２０Ｄのライト処理と衝突しないようにするためである。そして、ブロック制御部１２０Ｃは、共有メモリ１１３に対するライト結果をファイル制御部１３０Ｃへ返す。【００８４】
ライトが失敗となる例としては、ライト要求が不正値の場合、共有メモリ１１３の排他制御に失敗した場合がある。失敗を示すライト結果には、失敗の内容を示す情報が含まれてよい。ライト結果を受領したファイル制御部１３０Ｃが、必要に応じてリトライ等を行えるようにするためである。【００８５】
ファイル制御部１３０Ｃは、ブロック制御部１２０Ｃからライト結果を受領すると（ステップＳ２００２）、そのライト結果に基づき、共有メモリ１１３に対するライトの成否を判定する（ステップＳ２００３）。【００８６】
共有メモリ１１３に対するライトが成功の場合（ステップＳ２００３：ＹＥＳ）、ファイル制御部１３０Ｃは、成功時の処理を行う（ステップＳ２００４）。成功時の処理とは、例えば、状態情報のライトに成功した旨をメモリ１１０Ｃにライトする。【００８７】
共有メモリ１１３に対するライトが失敗の場合（ステップＳ２００３：ＮＯ）、ファイル制御部１３０Ｃは、失敗時の処理を行う（ステップＳ２００５）。失敗時の処理は、ライト結果に含まれている失敗の内容によって異なってよい。例えば、失敗の内容がライト要求の不正値であった場合、ファイル制御部１３０Ｃを再起動してもよい。これは、ファイル制御部１３０のプログラム不良が疑われるからである。例えば、失敗の内容が排他制御失敗であった場合、ファイル制御部１３０Ｃは、所定時間経過後に、ライト要求をリトライしてよい。【００８８】
図９は、ファイル制御部１３０Ｄが、共有メモリ１１３から他のファイル制御部１３０Ｃの状態情報をリードする処理例を示すフローチャートである。なお、ファイル制御部１３０Ｃの場合も同様である。【００８９】
ファイル制御部１３０Ｄは、論理制御パス３０４Ｄを介して、ブロック制御部１２０Ｄに対して、ファイル制御部１３０Ｄの状態情報の共有メモリ１１３からのリード要求を発行する（ステップＳ１００１）。リード要求には、リード先の領域の先頭アドレス（「リード先アドレス」という）、及びリ状態情報の長さが含まれてよい。【００９０】
このリード要求を受領したブロック制御部１２０Ｄは、このリード要求に含まれるリード先アドレス及び状態情報の長さ等が不正値でないことを確認した後、共有メモリ１１３から、ファイル制御部１３０Ｃの状態情報をリードする。そして、ブロック制御部１２０Ｄは、その取得した状態情報を含むリード結果をファイル制御部１３０Ｄへ返す。【００９１】
ファイル制御部１２０Ｄは、ブロック制御部１３０Ｄからリード結果を受領すると（ステップＳ１００２）、そのリード結果に含まれるファイル制御部１３０Ｃの状態情報に基づいて、所定の処理を行う（ステップＳ１００４）。例えば、ファイル制御部１２０Ｄは、その状態情報に基づいて、ファイル制御部１３０Ｃが正常に稼働しているか否かを判断する。【００９２】
図８及び図９の処理は、定期的に行われてもよいし、ファイル制御部１３０が共有メモリ１１３を更新または参照する必要があるときに合わせて行われても良い。【００９３】
図８及び図９の処理を組み合わせることで、各コントローラ１０１Ｃ、１０１Ｄのファイル制御部１３０Ｃ、１３０Ｄ同士は、共有メモリ１１３を介して通信を行うことができる。よって、ファイル制御部１３０Ｃ及び１３０Ｄは、共有メモリ１１３を用いて、ハートビート通信を行うことができる。これにより、ファイル制御部１３０Ｄがファイル制御部１３０Ｃの異常状態を検知した場合、ファイル制御部１３０Ｃの提供サービスを、ファイル制御部１３０Ｄが引き継ぐことができる。すなわち、フェイルオーバの仕組みを実現できる。このとき、サービスを引き継ぐファイル制御部１３０Ｄは、ファイル制御部１３０Ｃの実行中の状態を正しく引き継ぐ必要がある。そこで、ファイル制御部１３０Ｃ、１３０Ｄは、それぞれ実行中のサービスに係る状態情報を、適宜、共有メモリ１１３に格納する。これにより、ファイル制御部１３０Ｄは、共有メモリ１１３からファイル制御部１３０Ｃの実行中のサービスに係る状態情報を取得し、ファイル制御部１３０Ｃの実行中の状態を引き継ぐことができる。【００９４】
ストレージシステム１００Ｃは、コントローラ１０１Ｃ及び１０１ＤがＬＡＮ等の通信ネットワークを通じて接続されており、ファイル制御部１３０Ｃ及び１３０Ｄがその通信ネットワークを介して直接通信する構成であってもよい。この場合、ファイル制御部１３０Ｃ及び１３０Ｄは、通信ネットワークを介して、ハートビート通信及び状態情報の交換等を行うことができる。通信ネットワークを介する情報交換は、論理制御パス３０４及びブロック制御部１２０を介さないため、ブロック制御部１２０Ｃ、１２０Ｄの処理負荷が軽減される。しかしながら、この通信ネットワークに障害が発生した場合、ファイル制御部１３０Ｃ及び１３０Ｄは互いに相手からの通信を受信できなくなってしまい、ファイル制御部１３０Ｃ又は１３０Ｄのどちらがサービスを引き継げばよいか（どちらが生き残ればよいか）わからなくなってしまう。【００９５】
そこで、このような場合に備えて、ファイル制御部１３０Ｃ及び１３０Ｄの各々は、適宜、状態情報を共有メモリ１１３に格納してよい。これは、上述の図８及び図９の処理を組み合わせることにより実現できる。例えば、通信ネットワークに障害が発生し、ファイル制御部１３０Ｃ及び１３０Ｄが互いにハートビート通信の断絶を検知したとする。この場合、ファイル制御部１３０Ｃ及び１３０Ｄの各々は、図９の処理に基づいて、自己の死活情報を共有メモリ１１３にライトする。上述の通り、共有メモリ１１３に対するライト処理は、ブロック制御部１２０Ｃ、１２０Ｄの有する排他制御によって、一方のライト処理のみが成功する。すなわち、ファイル制御部１３０Ｃ及び１３０Ｄが互いにハートビート通信の断絶を検知し、ファイル制御部１３０Ｃ及び１３０Ｄが一斉に共有メモリ１１３に対して自己の死活情報を共有メモリ１１３にライトしたとしても、ブロック制御部１２０Ｃ、１２０Ｄの排他制御により、何れか一方のファイル制御部のライト処理のみが成功し、他方のファイル制御部のライト処理は失敗する。そこで、先に共有メモリ１１３にライトした方のファイル制御部が、相手のファイル制御部のサービスを引き継ぐと規定しておくことで、上記の問題を解決できる。例えば、排他制御失敗のライト結果を受領したファイル制御部は自身の実行を停止させ、排他制御成功のライト結果を受領したファイル制御部が相手のサービスを引き継いでよい。これにより、ブロック制御部１２０の処理負荷を軽減させると共に、ファイル制御部１３０の可用性を高めることができる。例えば、ファイル制御部１３０が相手のファイル制御部１３０とのハートビート断絶を検出し、図８の処理を実施した後に、排他制御成功のライト結果を受領したファイル制御部１３０が相手のファイル制御部１３０を再起動させるよう、論理制御パス３０４を介してブロック制御部１２０に要求し、ブロック制御部１２０は要求に従って排他制御失敗側のファイル制御部１３０を再起動させてもよい。【００９６】
なお、ファイル制御部１３０Ｃ及び１３０Ｄは、両方からアクセス可能なシステムディスク用の論理ＶＯＬ１１１Ｃに死活情報及び状態情報を格納してもよい。この場合、論理ＶＯＬ１１１ＣをいわゆるＱｕｏｒｕｍ  Ｄｉｓｋとして用いることにより、同様のことを実現できる。【００９７】
実施例３によれば、一方のコントローラのファイル制御部が、直接、相手のコントローラのファイル制御部の死活を監視できる。よって、ブロック制御部は、共有メモリに対する排他制御のみを行えばよく、ファイル制御部の死活を監視する必要がない。その分、ブロック制御部は、論理ＶＯＬに対するブロックアクセスの処理にリソースを使用することができる。これにより、ストレージシステムのホスト計算機に対するＩ／Ｏ性能を高めることができる。【００９８】
また、ストレージシステムがホスト計算機からファイルＩ／Ｏ及びブロックＩ／Ｏの両方を受領し処理している場合、ブロック制御部の処理負荷は一層高くなる。そのため、ブロック制御部とファイル制御部の処理負荷に、一層の差ができる。このような場合に、死活監視をファイル制御部にオフロードすることは、ストレージシステムの有するリソースの一層の利用効率化につながる。【００９９】
また、ファイル制御部同士が直接死活を監視することで、ファイル制御部の処理負荷が増加することも考えられる。しかしこれは、実施例１で述べたように、ファイル制御部の処理の少なくとも一部をファイルＩ／Ｆへ肩代わりさせればよい。【０１００】
上述の実施例１、３を組み合わせると、ブロックＩ／Ｏ要求（及びブロックＩ／Ｏデータ）及びファイルＩ／Ｏ要求（及びファイルＩ／Ｏデータ）が物理Ｉ／Ｏパスを介して転送され、内部情報に係るＩ／Ｏ要求（及び内部情報）がメモリ経由パスを介してやり取りされ、ファイル制御部の死活監視の負担がブロック制御部からファイル制御部へオフロードされ、ファイルＩ／Ｏ要求（及びファイルＩ／Ｏデータ）の処理負荷がファイル制御部からファイルＩ／Ｆへオフロードされた、ストレージシステムを構築することができる。これにより、ストレージシステム全体におけるリソース利用効率が向上するので、ストレージシステムのホスト計算機に対するＩ／Ｏ性能が向上する。【０１０１】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。【０１０２】
論理制御パスを介して送受信される制御情報に、ファイル制御部１３０の内部状態を示す状態情報が含まれてよい。この場合、ブロック制御部１２０は、論理制御パスを介して、ファイル制御部１３０の状態情報を取得してよい。そして、ブロック制御部１２０は、ブロック制御部１２０自身の状態情報と、その取得したファイル制御部１３０の状態情報と、をまとめて管理計算機２０４へ送信してもよい。管理計算機２０４は、そのブロック制御部１２０から送信された状態情報に基づいて、ストレージシステム１００内のブロック制御部１２０及びファイル制御部１３０の内部状態を、まとめてＧＵＩに表示してもよい。状態情報には、ファイル制御部１３０が正常に起動しているか否かを示す情報が含まれてよい。【０１０３】
内部に複数のハードウェアコンポーネントを有し、ハードウェアコンポーネント単位で交換可能なファイルＩ／Ｆ１０９が考えられる。この場合、障害の発生したコンポーネント及びそのコンポーネントの交換手順等をＧＵＩに表示してもよい。そのために、ブロック制御部１２０は、物理制御パス３０２及び論理制御パス３０４を介して、ファイルＩ／Ｆ１０９の内部のハードウェアコンポーネントの状態を取得し、その結果をＧＵＩに表示してもよい。これにより、ユーザは、ブロック制御部１２０によって提供される統一されたＧＵＩを介して、ストレージシステム１００の状態を知ることができる。ファイルＩ／Ｆ１０９の内部のハードウェアコンポーネントの例としては、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅｓ）、ＳＦＰ（Ｓｍａｌｌ  Ｆｏｒｍ  Ｆａｃｔｏｒ  Ｐｌｕｇｇａｂｌｅ）等がある。【０１０４】
ファイル制御部１３０がハングアップしたような場合に備え、ブロック制御部１２０が、ファイル制御部１３０の死活を監視してよい。この場合、ブロック制御部１２０は、ファイル制御部１３０の異常を検知した際、そのファイル制御部１３０を再起動させてよい。例えば、ブロック制御部１２０は、ハートビート通信の断絶によって、ファイル制御部１３０の異常を検知してよい。例えば、ファイル制御部１２０は、異常発生時に、ブロック制御部１２０に対して、プロセッサ間割り込み信号を発行してもよい。例えば、ファイル制御部１３０は、異常発生を、論理制御パス３０４を介してブロック制御部１２０に通知してもよい。【０１０５】
ブロック制御部１３０は、ファイル制御部１３０に対してプロセッサ間割り込み信号を発行して、ファイル制御部１３０を再起動させてよい。ファイル制御部１３０は、そのプロセッサ間割り込みを検知した際、論理Ｉ／Ｏパス３０３を介して、自身のメモリダンプを出力した後に、再起動してもよい。【０１０６】
ブロック制御部１２０が論理ＶＯＬ１１１に対するアクセスを制御しているため、ブロック制御部１２０に障害が発生した場合、ファイル制御部１３０も停止させる必要がある。そこで、ブロック制御部１２０及びファイル制御部１３０は、論理制御パス３０４を介して、相互にハートビート通信を行い、ファイル制御部１３０は、ブロック制御部１２０からのハートビート通信の断絶を検知した場合、自己のファイル制御部１３０を停止させてもよい。又は、ファイル制御部１３０が、論理Ｉ／Ｏパス３０３を介して、ブロック制御部１２０に対して、定期的に所定のコマンドを発行し、その所定のコマンドに対する応答の断絶を検知した場合、自己のファイル制御部１３０を停止させてもよい。【０１０７】
実施形態に係る内容は、以下の様に表現することもできる。
（表現１）
ホスト計算機からブロックＩ／Ｏ要求を受領するブロックＩ／Ｆと、
前記ブロックＩ／Ｆと物理パスで接続されており、前記ブロックＩ／Ｆが受領したブロックＩ／Ｏ要求を制御するブロック制御部と、
ホスト計算機に対してファイルサービスを提供するファイル制御部と、
前記ブロック制御部及び前記ファイル制御部が共有する第１の共有メモリと、
を備え、
前記ファイル制御部と前記ブロック制御部とは、
前記第１の共有メモリの第１領域を介して構成される第１のメモリ経由パスと、
前記第１の共有メモリの第２領域を介して構成される第２のメモリ経由パスと、で接続されており、
前記ブロック制御部は、
前記物理パスを介するデータ転送に関するプロトコルを処理するプロトコル処理部と、
前記第１又は第２のメモリ経由パスを介するデータのやり取りを、前記プロトコル処理部が処理可能なプロトコルに変換する仮想ドライバと、を有し、
前記ブロック制御部は、
前記ファイル制御部の制御に関する制御情報を、前記第１のメモリ経由パスを介して前記ファイル制御部とやり取りし、
前記ファイル制御部から前記第２のメモリ経由パスを介して渡されたＩ／Ｏ要求を、前記仮想ドライバによって変換してから前記プロトコル処理部で処理し、
前記ブロックＩ／Ｆから物理パスを介して転送されたブロックＩ／Ｏ要求を、前記仮想ドライバを介さず、前記プロトコル処理部で処理する
ストレージシステム。
（表現２）
それぞれが、ファイル制御部及びブロック制御部を含む、複数のクラスタと、
前記複数のクラスタのブロック制御部からアクセス可能な第２の共有メモリと
を更に備え、
前記第２の共有メモリは、各クラスタのファイル制御部の死活情報が格納される死活領域を有し、
各クラスタにおいて、
ブロック制御部は、ファイル制御部から前記死活情報のＩ／Ｏ要求を受領すると、前記死活領域に対して排他制御を行い、当該死活領域に対する前記死活情報のＩ／Ｏ要求の実行結果を、前記第１のメモリ経由パスを介して、前記ファイル制御部へ返し、
ファイル制御部は、前記ブロック制御部から返された前記死活情報のＩ／Ｏ要求の実行結果に基づいて、他のクラスタのファイル制御部の死活を判定する
表現１に記載のストレージシステム。
（表現３）
ホスト計算機からファイルＩ／Ｏ要求を受領するファイルＩ／Ｆをさらに備え、
前記ファイルＩ／Ｆは、前記ブロック制御部と、前記第１及び第２のメモリ経由パスよりも高速な物理パスで接続されており、
前記ファイルＩ／Ｆは、ホスト計算機から受領したファイルＩ／Ｏ要求をブロックＩ／Ｏ要求に変換し、その変換したブロックＩ／Ｏ要求を、前記物理パスを介して、前記ブロック制御部へ転送する
表現１に記載のストレージシステム。
（表現４）
前記ブロック制御部は、当該ブロック制御部に接続されている各パスの種類が、前記物理パス、又は、前記第１又は第２のメモリ経由パスの何れであるかを管理し、パスの種類毎に異なる処理を行う
表現１乃至３の何れか１つに記載のストレージシステム。
（表現５）
前記第２のメモリ経由パスは、前記第１のメモリ経由パスよりも高速である
表現１乃至４の何れか１つに記載のストレージシステム。
（表現６）
前記ファイル制御部は、前記第１のメモリ経由パスを介して、前記ブロック制御部の死活を監視し、前記ブロック制御部の生存が確認できない場合、当該ファイル制御部の実行を停止する
表現１乃至５の何れか１つに記載のストレージシステム。
（表現７）
前記第２領域の容量は、前記第１領域の容量よりも大きい
表現１乃至６の何れか１つに記載のストレージシステム。
（表現８）
前記ブロック制御部の前記第２領域に対するポーリング間隔は、前記第１領域に対するポーリング間隔よりも短い
表現１乃至７の何れか１つに記載のストレージシステム。
（表現９）
ホスト計算機からファイルＩ／Ｏ要求を受領するファイルＩ／Ｆをさらに備え、
前記ファイルＩ／Ｆは、前記ファイルＩ／Ｆと、前記第１及び第２のメモリ経由パスよりも高速な物理パスで接続されており、
前記ファイル制御部と前記ブロック制御部とは、
前記第１の共有メモリの第３領域を介して構成され、前記第１及び第２のメモリ経由パスよりも高速な第３のメモリ経由パスと、で接続されており、
前記ファイルＩ／Ｆは、ホスト計算機から受領したファイルＩ／Ｏ要求を、前記物理パスを介して、前記ファイル制御部へ転送し、
前記ファイル制御部は、前記ファイルＩ／Ｆから転送されたファイルＩ／Ｏ要求をブロックＩ／Ｏ要求に変換し、その変換したブロックＩ／Ｆ要求を、前記第３のメモリ経由パスを介して、前記ブロック制御部へ渡す
表現１に記載のストレージシステム。
（表現１０）
ホスト計算機からブロックＩ／Ｏ要求を受領するブロックＩ／Ｆと、
前記ブロックＩ／Ｆと物理パスで接続されており、前記ブロックＩ／Ｆが受領したブロックＩ／Ｏ要求を制御するブロック制御部と、
ホスト計算機に対してファイルサービスを提供するファイル制御部と、
前記ブロック制御部及び前記ファイル制御部が共有する共有メモリと、
を備えるストレージシステムにおける記憶制御方法であって、
前記ファイル制御部と前記ブロック制御部とは、
前記共有メモリの第１領域を介して構成される第１のメモリ経由パスと、
前記第１の共有メモリの第２領域を介して構成される第２のメモリ経由パスと、で接続されており、
前記ブロック制御部が、
前記物理パスを介するデータ転送に関するプロトコルを処理するプロトコル処理部と、
前記第１又は第２のメモリ経由パスを介するデータのやり取りを、前記プロトコル処理部が処理可能なプロトコルに変換する仮想ドライバと、を有し、
前記ブロック制御部は、
前記ファイル制御部の制御に関する制御情報を、前記第１のメモリ経由パスを介して前記ファイル制御部とやり取りし、
前記ファイル制御部から前記第２のメモリ経由パスを介して渡されたＩ／Ｏ要求を、前記仮想ドライバによって変換してから前記プロトコル処理部で処理し、
前記ブロックＩ／Ｆから物理パスを介して転送されたブロックＩ／Ｏ要求を、前記仮想ドライバを介さず、前記プロトコル処理部で処理する
記憶制御方法。
【符号の説明】
【０１０８】
１００：ストレージシステム  ２００：ホスト計算機  １０１：ストレージコントローラ  １０８：ブロックＩ／Ｆ  １０９：ファイルＩ／Ｆ  １１０：メモリ  １１１：論理ボリューム  １２０：ブロック制御部  １３０：ファイル制御部
【図１】
2017017763.tif 000003
【図２】
2017017763.tif 000004
【図３】
2017017763.tif 000005
【図４】
2017017763.tif 000006
【図５】
2017017763.tif 000007
【図６】
2017017763.tif 000008
【図７】
2017017763.tif 000009
【図８】
2017017763.tif 000010
【図９】
2017017763.tif 000011
【国際調査報告】
2017017763.tif 000012
2017017763.tif 000013
2017017763.tif 000014
2017017763.tif 000015