(57)【要約】【課題】サーバモジュールとストレージモジュールとの間の高速なデータ転送を実現する。【解決手段】サーバモジュール、ストレージモジュール及び転送モジュールを備える計算機システムであって、サーバモジュールは、第１のプロセッサ、第１のメモリ及び第１のインタフェースを接続する第１の接続線を有し、ストレージモジュールは、第２のプロセッサ及び第２のメモリを含むコントローラ、記憶装置、及び第２のインタフェースを接続する第２の接続線を有し、転送モジュールは、第１の接続線及び第２の接続線と接続され、データ転送要求を受信した場合、第１のメモリ上の第１の転送リスト及び第２のメモリ上の第２の転送リストを参照して、転送対象のデータを取得し、第１の転送リスト及び第２の転送リストを参照して、転送対象のデータを第１のメモリ又は第２のメモリに転送する。【選択図】図１
2014222426.tif 000002
【特許請求の範囲】
【請求項１】
サーバモジュール、ストレージモジュール及び転送モジュールを備える計算機システムであって、
前記サーバモジュールは、第１のプロセッサ、第１のメモリ、他の装置と接続するための第１のインタフェース、並びに、前記第１のプロセッサ、前記第１のメモリ及び前記第１のインタフェースを接続する第１の接続線を有し、
前記ストレージモジュールは、第２のプロセッサ及び第２のメモリを含むコントローラ、記憶装置、他の装置と接続するための第２のインタフェース、並びに、前記コントローラ、前記記憶装置及び前記第２のインタフェースを接続する第２の接続線を有し、
前記転送モジュールは、前記第１の接続線及び前記第２の接続線と接続され、
前記サーバモジュールは、
前記第１のメモリに転送対象のデータを格納し、又は前記第１のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第１の転送リストを生成し、
前記第１のメモリと前記第２のメモリとの間のＩ／Ｏ要求を前記転送モジュールに送信し、
前記ストレージモジュールは、
前記転送モジュールから前記Ｉ／Ｏ要求を受信し、
前記第２のメモリに前記転送対象のデータを格納し、又は前記第２のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第２の転送リストを生成し、
前記転送モジュールにデータ転送要求を送信し、
前記転送モジュールは、
前記ストレージモジュールから前記データ転送要求を受信した場合、前記第１の転送リスト及び前記第２の転送リストを参照して、前記第１のメモリ又は前記第２のメモリから前記転送対象のデータを取得し、
前記第１の転送リスト及び前記第２の転送リストを参照して、取得された前記転送対象のデータを前記第１のメモリ又は前記第２のメモリに転送することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記転送モジュールは、
前記第２のメモリから前記第１のメモリへのデータの読み出しを指示する第１のＩ／Ｏ要求を受信した場合、前記第１のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第２の転送リストを参照して、読出対象のデータを取得し、取得された前記読出対象のデータに付与される、データの整合性を確認するためのデータ保証コードを削除することによって、前記サーバモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記読出対象のデータを書き込む前記第１のメモリの記憶領域を特定し、特定された前記第１のメモリの記憶領域に前記変換された読出対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知し、
前記第１のメモリから前記第２のメモリへのデータの書き込みを指示する第２のＩ／Ｏ要求を受信した場合、前記第２のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第１の転送リストを参照して、書込対象のデータを取得し、取得された前記書込対象のデータに前記データ保証コードを付与することによって、前記ストレージモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記書込対象のデータを書き込む前記第２のメモリの記憶領域を特定し、特定された前記第２のメモリの記憶領域に前記変換された書込対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知することを特徴とする計算機システム。
【請求項３】
第１のプロセッサ及び第１のメモリを含むコントローラ、記憶装置、他の装置と接続するための第１のインタフェース、並びに、前記コントローラ、前記記憶装置及び前記第１のインタフェースを接続する第１の接続線を有するストレージモジュールと接続されるサーバモジュールであって、
前記サーバモジュールは、
第２のプロセッサ、第２のメモリ、他の装置と接続するための第２のインタフェース、並びに、前記第２のプロセッサ、前記第２のメモリ及び前記第２のインタフェースを接続する第２の接続線を有し、
さらに、前記第１の接続線及び前記第２の接続線と接続される転送モジュールを有し、
前記転送モジュールは、
前記第２のプロセッサから第１のメモリと前記第２のメモリとの間のＩ／Ｏ要求を受信した場合、前記第１のプロセッサによって生成され、前記第１のメモリに転送対象のデータを格納し、又は前記第１のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第１の転送リストを前記第１のメモリから読み出し、
前記第２のプロセッサによって生成され、前記第２のメモリに前記転送対象のデータを格納し、又は、前記第２のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第２の転送リストを前記第２のメモリから読み出し、
前記第１の転送リスト及び前記第２の転送リストを参照して、前記第１のメモリ又は前記第２のメモリから前記転送対象のデータを取得し、
前記第１の転送リスト及び前記第２の転送リストを参照して、取得された前記転送対象のデータを前記第１のメモリ又は前記第２のメモリに転送することを特徴とするサーバモジュール。
【請求項４】
請求項３に記載のサーバモジュールであって、
前記転送モジュールは、
前記第１のメモリから前記第２のメモリへのデータの読み出しを指示する第１のＩ／Ｏ要求を受信した場合、前記第１のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第１の転送リストを参照して、読出対象のデータを取得し、取得された前記読出対象のデータに付与される、データの整合性を確認するためのデータ保証コードを削除することによって、前記サーバモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記読出対象のデータを書き込む前記第２のメモリの記憶領域を特定し、特定された前記第２のメモリの記憶領域に前記変換された読出対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知し、
前記第２のメモリから前記第１のメモリへのデータの書き込みを指示する第２のＩ／Ｏ要求を受信した場合、前記第２のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第２の転送リストを参照して、書込対象のデータを取得し、取得された前記書込対象のデータに前記データ保証コードを付与することによって、前記ストレージモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記書込対象のデータを書き込む前記第１のメモリの記憶領域を特定し、特定された前記第１のメモリの記憶領域に前記変換された書込対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知することを特徴とするサーバモジュール。
【請求項５】
第１のプロセッサ、第１のメモリ、他の装置と接続するための第１のインタフェース、並びに、前記第１のプロセッサ、前記第１のメモリ及び前記第１のインタフェースを接続する第１の接続線を有するサーバモジュールと接続されるストレージモジュールであって、
前記ストレージモジュールは、
第２のプロセッサ及び第２のメモリを含むコントローラ、記憶装置、他の装置と接続するための第２のインタフェース、並びに、前記コントローラ、前記記憶装置及び前記第２のインタフェースを接続する第２の接続線を有し、
さらに、前記第１の接続線及び前記第２の接続線と接続される転送モジュールを有し、
前記転送モジュールは、
前記第１のプロセッサから第１のメモリと前記第２のメモリとの間のＩ／Ｏ要求を受信した場合、前記第１のプロセッサによって生成され、前記第１のメモリに転送対象のデータを格納し、又は前記第１のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第１の転送リストを前記第１のメモリから読み出し、
前記第２のプロセッサによって生成され、前記第２のメモリに前記転送対象のデータを格納し、又は、前記第２のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第２の転送リストを前記第２のメモリから読み出し、
前記第１の転送リスト及び前記第２の転送リストを参照して、前記第１のメモリ又は前記第２のメモリから前記転送対象のデータを取得し、
前記第１の転送リスト及び前記第２の転送リストを参照して、取得された前記転送対象のデータを前記第１のメモリ又は前記第２のメモリに転送することを特徴とするストレージモジュール。
【請求項６】
請求項５に記載のストレージモジュールであって、
前記転送モジュールは、
前記第２のメモリから前記第１のメモリへのデータの読み出しを指示する第１のＩ／Ｏ要求を受信した場合、前記第１のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第２の転送リストを参照して、読出対象のデータを取得し、取得された前記読出対象のデータに付与される、データの整合性を確認するためのデータ保証コードを削除することによって、前記サーバモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記読出対象のデータを書き込む前記第１のメモリの記憶領域を特定し、特定された前記第１のメモリの記憶領域に前記変換された読出対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知し、
前記第１のメモリから前記第２のメモリへのデータの書き込みを指示する第２のＩ／Ｏ要求を受信した場合、前記第２のＩ／Ｏ要求に対応するコマンドを前記ストレージモジュールで用いられるコマンドに変換して、前記ストレージモジュールに送信し、
前記第１の転送リストを参照して、書込対象のデータを取得し、取得された前記書込対象のデータに前記データ保証コードを付与することによって、前記ストレージモジュールが扱う形式のデータに変換し、
前記第１の転送リスト及び前記第２の転送リストを参照して、変換された前記書込対象のデータを書き込む前記第２のメモリの記憶領域を特定し、特定された前記第２のメモリの記憶領域に前記変換された書込対象のデータを書き込み、
前記ストレージモジュールにデータ転送の完了を通知することを特徴とするストレージモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバモジュールとストレージモジュールとの間の高速なデータ転送を実現するシステム、サーバモジュール及びストレージモジュールに関する。
【背景技術】
【０００２】
サーバ及び当該サーバがアクセスするストレージ装置を接続する計算機システムとしては、以下のようなシステムが知られている。
【０００３】
一つの計算機システムとしては、ＳＡＮ等のネットワークを介してサーバ及びストレージが接続された計算機システムが知られている（例えば、特許文献１参照）。
【０００４】
特許文献１には、「アプリケーションをローカルに実行するための少なくとも一つのアプリケーション・サーバ、およびＩ／Ｏ伝送のため該少なくとも一つのアプリケーション・サーバと通信している、一つ以上のストレージ・サーバを包含可能なストレージ・アプライアンス・システム」が記載されている。
【０００５】
前述した計算機システムは、大規模な計算機システムに用いられる利用形態である。当該計算機システムは、システム構成の柔軟性が高いという利点があるが、ＳＡＮ等のネットワークを構成する装置のコスト、及び運用コストが高いという問題がある。
【０００６】
また、他の計算機システムとしては、複数のサーバのそれぞれがディスクインタフェースを用いて接続される計算機システムが知られている（例えば、特許文献２参照）。
【０００７】
特許文献２には、「複数のサーバモジュールと１以上のストレージモジュール及び装置全体を管理する管理モジュールをスロットに搭載し、それら相互の信号伝達を可能とするバックプレーンによってブレードサーバ装置を構成し、サーバモジュールとストレージモジュールを互いにバックプレーンを介してディスクインターフェースで接続する。それぞれのサーバモジュール及びストレージモジュールはモジュール内の電源を制御するモジュール管理部を備え、モジュール管理部は管理モジュールから送信される電源制御信号に従ってサーバモジュール及びストレージモジュールの電源を制御する」システムが記載されている。
【０００８】
前述した計算機システムは、小規模な計算機システムに用いられる利用形態である。当該計算機システムは、サーバの高密度化が可能であるが、システムの柔軟性が低いという問題がある。
【０００９】
近年、一つの筐体内にサーバ及びストレージ装置を有する計算機システムの利用が増加している。当該計算機システムは、コストを抑えつつ、柔軟性なシステム及び高性能のシステムを実現する。同一筐体内のサーバ及びストレージ装置は、バックプレーンを介して互いに接続される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−１１８９７３号公報
【特許文献２】特開２００６−３０９４７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
サーバ及びストレージ装置はバックプレーンを介して接続されるため、高速な通信が可能となる。しかし、サーバ及びストレージ装置が扱うコマンドの形式は異なり、また、データの形式も異なる。そのため、サーバ及びストレージ装置は、それぞれ、コマンドの形式及びデータの形式の変換処理等を行う必要がある。
【００１２】
したがって、サーバ及びストレージ装置において、前述した処理によってオーバヘッドが発生するため、高速なデータ転送を実現すること、すなわち、性能限界値までスループットを向上させることが難しい。
【００１３】
また、従来技術では、サーバのメモリとストレージ装置のメモリとの間の高速なデータ転送を実現するモジュールは提供されていない。
【００１４】
本発明は、前述した課題に鑑みてなされた発明である。すなわち、サーバ及びストレージ装置における高速なデータ転送の実現を目的とする。
【課題を解決するための手段】
【００１５】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、サーバモジュール、ストレージモジュール及び転送モジュールを備える計算機システムであって、前記サーバモジュールは、第１のプロセッサ、第１のメモリ、他の装置と接続するための第１のインタフェース、並びに、前記第１のプロセッサ、前記第１のメモリ及び前記第１のインタフェースを接続する第１の接続線を有し、前記ストレージモジュールは、第２のプロセッサ及び第２のメモリを含むコントローラ、記憶装置、他の装置と接続するための第２のインタフェース、並びに、前記コントローラ、前記記憶装置及び前記第２のインタフェースを接続する第２の接続線を有し、前記転送モジュールは、前記第１の接続線及び前記第２の接続線と接続され、前記サーバモジュールは、前記第１のメモリに転送対象のデータを格納し、又は前記第１のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第１の転送リストを生成し、前記第１のメモリと前記第２のメモリとの間のＩ／Ｏ要求を前記転送モジュールに送信し、前記ストレージモジュールは、前記転送モジュールから前記Ｉ／Ｏ要求を受信し、前記第２のメモリに前記転送対象のデータを格納し、又は前記第２のメモリから前記転送対象のデータを読み出す場合に用いられるアドレス及びアドレス長を含む第２の転送リストを生成し、前記転送モジュールにデータ転送要求を送信し、前記転送モジュールは、前記ストレージモジュールから前記データ転送要求を受信した場合、前記第１の転送リスト及び前記第２の転送リストを参照して、前記第１のメモリ又は前記第２のメモリから前記転送対象のデータを取得し、前記第１の転送リスト及び前記第２の転送リストを参照して、取得された前記転送対象のデータを前記第１のメモリ又は前記第２のメモリに転送することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、サーバモジュールのプロセッサ及びストレージモジュールのプロセッサを介することなく高速なデータ転送を実行する転送モジュールを提供することができる。
【００１７】
上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施例１の計算機システムの構成例を示すブロック図である。
【図２】本発明の実施例１のサーバモジュールのソフトウェア構成を説明するブロック図である。
【図３】本発明の実施例１のストレージモジュールのソフトウェア構成を説明するブロック図である。
【図４】本発明の実施例１の転送モジュールの構成例を説明するブロック図である。
【図５】本発明の実施例１におけるデータ転送処理の一例を説明するシーケンス図である。
【図６】本発明の実施例１におけるデータ転送処理の一例を説明するシーケンス図である。
【図７】本発明の実施例２の計算機システムの構成例を示すブロック図である。
【図８】本発明の実施例３の計算機システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【実施例１】
【００２０】
図１は、本発明の実施例１の計算機システムの構成例を示すブロック図である。
【００２１】
実施例１の計算機システムは、サーバ装置１００、サーバモジュール２００、及びストレージモジュール３００から構成される。
【００２２】
サーバ装置１００は、複数のサーバモジュール２００、一つのストレージモジュール３００、バックプレーン４００を備える。図１に示す例では、サーバ装置１００は、サーバモジュール２００−１、サーバモジュール２００−２、及びストレージモジュール３００−１を備える。
【００２３】
サーバモジュール２００は、所定の業務を実行する計算機である。ストレージモジュール３００は、サーバモジュール２００が利用するデータを格納する計算機である。本実施例では、ストレージモジュール３００は、各サーバモジュール２００にＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）を提供する。
【００２４】
サーバモジュール２００は、プロセッサ２１０、メモリ２２０、転送モジュール２３０、ＨＢＡ２４０、ＮＩＣ２５０、及びＩ／Ｆ２６０を有する。サーバモジュール２００が有する各構成は、Ｉ／Ｏバスを介して互いに接続される。Ｉ／Ｏバスには、ＰＣＩバス、ＰＣＩｅバス、及びシステムバス等が含まれる。なお、本発明は、各構成を接続するＩ／Ｏバスの種別に限定されない。
【００２５】
プロセッサ２１０は、メモリ２２０に格納されるプログラムを実行する。プロセッサ２１０がメモリ２２０に格納されるプログラムを実行することによって、サーバモジュール２００が有する機能を実現できる。
【００２６】
メモリ２２０は、プロセッサ２１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ２２０に格納されるプログラム及び情報については、図２を用いて後述する。
【００２７】
なお、メモリ２２０に格納されるプログラム及び情報は、ストレージモジュール３００によって提供されるＬＵ等に格納されてもよい。この場合、プロセッサ２１０が、ＬＵ等のプログラムが格納される記憶領域からプログラム及び情報を取得し、取得されたプログラム及び情報をメモリ２２０にロードする。
【００２８】
転送モジュール２３０は、サーバモジュール２００とストレージモジュール３００との間のデータ転送を制御する。転送モジュール２３０の詳細な構成については、図４を用いて後述する。
【００２９】
ＨＢＡ２４０は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して外部の装置と接続するためのインタフェースである。ＮＩＣ２５０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して外部の装置と接続するためのインタフェースである。Ｉ／Ｆ２６０は、バックプレーン４００と接続するためのコネクタである。
【００３０】
なお、転送モジュール２３０の搭載方法としては、サーバモジュール２００の基板上のチップ（ＬＳＩ）として搭載する方法、又は、ＨＢＡ、ＮＩＣ等のアダプタに搭載する方法が考えられる。ただし、本発明は、転送モジュール２３０の搭載方法に限定されない。
【００３１】
ストレージモジュール３００は、ディスクコントローラ３１０、ＴＢＡ（Ｔａｒｇｅｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）３５０、Ｉ／Ｆ３６０、及び記憶装置３７０を有する。ストレージモジュール３００が有する各構成は、Ｉ／Ｏバスを介して互いに接続される。Ｉ／Ｏバスには、ＰＣＩバス、ＰＣＩｅバス、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）インターフェース、及びシステムバス等が含まれる。なお、本発明は、各構成を接続するＩ／Ｏバスの種別に限定されない。
【００３２】
ディスクコントローラ３１０は、記憶領域の管理、及びサーバモジュール２００と記憶領域との対応関係等を制御する。ディスクコントローラ３１０は、プロセッサ３２０及びメモリ３３０を有する。
【００３３】
本実施例では、ストレージモジュール３００は、ディスクコントローラ３１０−１、及びディスクコントローラ３１０−２の二つのディスクコントローラを有する。これは、ディスクコントローラを冗長化することによって、耐障害性を向上させるためである。
【００３４】
ディスクコントローラ３１０−１はＩ／Ｆ３６０−１と接続され、ディスクコントローラ３１０−２はＩ／Ｆ３６０−２と接続される。また、ディスクコントローラ３１０−１、３１０−２は、それぞれ、ＴＢＡ３５０及び記憶装置３７０に接続される。
【００３５】
プロセッサ３２０は、メモリ３３０に格納されるプログラムを実行する。プロセッサ３２０がメモリ３３０に格納されるプログラムを実行することによって、ストレージモジュール３００が有する機能を実現できる。
【００３６】
メモリ３３０は、プロセッサ３２０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ３３０に格納されるプログラム及び情報については、図３を用いて後述する。
【００３７】
なお、メモリ３３０に格納されるプログラム及び情報は、記憶装置３７０等に格納されてもよい。この場合、プロセッサ３２０が、記憶装置３７０等からプログラム及び情報を取得し、取得されたプログラム及び情報をメモリ３３０にロードする。
【００３８】
ＴＢＡ３５０は、ＳＡＮ等のネットワークを介して外部の装置と接続するためのインタフェースである。Ｉ／Ｆ３６０は、バックプレーン４００と接続するためのコネクタである。
【００３９】
記憶装置３７０は、データを格納するための装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。
【００４０】
本実施例では、ストレージモジュール３００は、複数の記憶装置を用いてＲＡＩＤを構成し、ＲＡＩＤボリュームからＬＵを生成し、さらに、サーバモジュール２００にＬＵを提供する。なお、ＬＵには、ＯＳ２２１（図２参照）及びアプリケーション２２３（図２参照）等のプログラム及びプログラムの実行に必要な情報が格納される。
【００４１】
バックプレーン４００は、サーバモジュール２００及びストレージモジュール３００を接続する。バックプレーン４００は、サーバモジュール２００及びストレージモジュール３００を接続するためのＩ／Ｆ４１０を複数有する。また、バックプレーン４００は、各Ｉ／Ｆ４１０を接続するＩ／Ｏバスを有する。
【００４２】
ここで、計算機システムにおける接続関係について説明する。
【００４３】
サーバ装置１００のサーバモジュール２００-１とバックプレーン４００との間は二つの接続線を介して接続される。サーバモジュール２００-１は、当該二つの接続線を介して、ストレージモジュール３００のＩ／Ｆ３６０−１及びＩ／Ｆ３６０−２にそれぞれ接続される。
【００４４】
ストレージモジュール３００の各Ｉ／Ｆ３６０は、異なるディスクコントローラ３１０と接続されるように構成されており、Ｉ／Ｆ３６０−１はディスクコントローラ３１０−１と接続され、Ｉ／Ｆ３６０−２はディスクコントローラ３１０−２と接続される。したがって、サーバモジュール２００-１は、二つのディスクコントローラ３１０−１、３１０−２と一対一に接続される。
【００４５】
本実施例では、二つのディスクコントローラ３１０−１、３１０−２は、いずれもアクティブな状態となっている。そのため、二つのディスクコントローラ３１０−１、３１０−２のそれぞれがＩ／Ｏ処理を実行することによって処理性能を向上させている。また、ディスクコントローラ３１０−１に障害が発生した場合であっても、ディスクコントローラ３１０−２がＩ／Ｏ処理を継続することができる。これによって、業務を継続できる。
【００４６】
サーバ装置１００内のサーバモジュール２００−１、２００−２は、ＬＡＮ６００を介して、外部のサーバモジュール２００-３と接続され、また、ＳＡＮ５００を介して外部のストレージモジュール３００−２と接続される。
【００４７】
サーバ装置１００内のストレージモジュール３００は、ＳＡＮ５００を介して外部のサーバモジュールと接続される。
【００４８】
図２は、本発明の実施例１のサーバモジュール２００のソフトウェア構成を説明するブロック図である。
【００４９】
メモリ２２０は、ＯＳ２２１及びアプリケーション２２３を実現するためのプログラムを格納する。また、メモリ２２０は転送リスト２２４を格納する。
【００５０】
ＯＳ２２１は、サーバモジュール２００を管理する。ＯＳ２２１は、サーバモジュール２００とストレージモジュール３００との間のアクセスを制御するストレージアクセス部２２２を有する。ストレージアクセス部２２２は、例えば、転送モジュール２３０を操作するデバイスドライバを用いて実現する方法が考えられる。
【００５１】
なお、ＯＳ２２１は、図示しないファイルシステム等の機能を有しているが、公知のものであるため省略している。
【００５２】
アプリケーション２２３は、所定の業務を実行する。本発明はアプリケーションの種別に限定されない。
【００５３】
転送リスト２２４は、プロセッサ２１０を介することなく、サーバモジュール２００のメモリ２２０と、ストレージモジュールのメモリ３３０との間のデータ転送に用いられる情報である。本実施例では、転送リスト２２４として、ＤＭＡ転送に用いられるＳＧＬ（Ｓｃａｔｔｅｒ  Ｇａｔｈｅｒ  Ｌｉｓｔ）を用いるものとする。
【００５４】
ＳＧＬは、アドレス及びアドレス長を含む。アドレスは、対象となるデータが格納されるメモリ２２０上の記憶領域の先頭アドレスである。アドレス長は、メモリ２２０条の記憶領域に対応するアドレスの範囲を示す値である。
【００５５】
なお、転送リスト２２４は、データ転送時に一時的に保持される情報である。
【００５６】
図３は、本発明の実施例１のストレージモジュール３００のソフトウェア構成を説明するブロック図である。
【００５７】
図３では、ディスクコントローラ３１０−１が有するメモリ３３０を例に説明する。なお、ディスクコントローラ３１０−２が有するメモリ３３０も同一のソフトウェア構成である。
【００５８】
メモリ３３０は、ストレージ制御部３３１を実現するプログラムを格納する。また、メモリ３３０は転送リスト３３４を格納する。
【００５９】
ストレージ制御部３３１は、サーバモジュール２００とストレージモジュール３００との間のＩ／Ｏ処理を制御する。ストレージ制御部３３１は、Ｉ／Ｏ処理部３３２、及び記憶装置制御部３３３を有する。
【００６０】
Ｉ／Ｏ処理部３３２は、サーバモジュール２００からＩ／Ｏ要求を受信し、当該Ｉ／Ｏ要求に基づいて、書込処理及び読出処理を制御する。記憶装置制御部３３３は、記憶装置３７０に対する書込処理及び読出処理を制御する。
【００６１】
なお、Ｉ／Ｏ処理部３３２は、例えば、転送モジュール２３０を操作するデバイスドライバを用いて実現することが考えられる。また、記憶装置制御部３３３は、記憶装置３７０を操作するデバイスドライバを用いて実現することが考えられる。
【００６２】
転送リスト３３４は、プロセッサ３２０を介することなく、サーバモジュール２００のメモリ２２０と、ストレージモジュールのメモリ３３０との間のデータ転送に用いられる情報である。本実施例では、転送リスト３３４として、ＤＭＡ転送に用いられるＳＧＬを用いるものとする。
【００６３】
なお、転送リスト２２４は、データ転送時に一時的に保持される情報である。
【００６４】
図４は、本発明の実施例１の転送モジュール２３０の構成例を説明するブロック図である。
【００６５】
転送モジュール２３０は、データ転送部２３１、プロトコルエンジン２３４、ブリッジ２３５、及び複数の接続ポート２３６を備える。
【００６６】
データ転送部２３１は、サーバモジュール２００のメモリ２２０とストレージモジュール３００のメモリ３３０との間のデータ転送を制御する。本実施例のデータ転送部２３１は、ＤＭＡコントローラ２３２、及びデータ検査部２３３を含む。
【００６７】
ＤＭＡコントローラ２３２は、サーバモジュール２００のメモリ２２０とストレージモジュール３００のメモリ３３０との間のＤＭＡ転送を制御する。データ検査部２３３は、データ保証コードの付加及び削除を行う。また、データ検査部２３３は、保証コードに基づいて、データの整合性を確認する。なお、データ保証コードは、ＤＩＦ（Ｄａｔａ  Ｉｎｔｅｇｒｉｔｙ  Ｆｉｅｌｄ）を用いることが考えられる。
【００６８】
一般的な計算機システムでは、サーバモモジュールは５１２バイト単位のデータを扱い、また、ストレージモジュールは、当該データにデータ保証コードを付与した５２０バイト単位のデータを扱う。本実施例のサーバモジュール２００及びストレージモジュール３００が扱うデータは、一般的な計算機システムと同様のものとする。
【００６９】
プロトコルエンジン２３４は、サーバモジュール２００が使用するコマンド及びストレージモジュール３００が使用するコマンドを変換する。
【００７０】
ブリッジ２３５は、接続ポートを介して接続されるデバイス間の通信を制御する。例えば、ブリッジ２３５は、レーン数が異なる信号間を変換する。ブリッジ２３５は、前述したＤＭＡ転送が不要な場合に用いられる。
【００７１】
接続ポート２３６は、他のデバイスに接続するためのポートである。本実施例では、接続ポート２３６−１は、プロセッサ２１０と接続され、接続ポート２３６−２、２３６−３は、Ｉ／Ｆ２６０と接続される。例えば、デバイス間を接続するＩ／ＯバスがＰＣＩｅバスである場合、接続ポート２３６としてＰＣＩｅポートが用いられる。
【００７２】
図５及び図６は、本発明の実施例１におけるデータ転送処理の一例を説明するシーケンス図である。
【００７３】
図５は、サーバモジュール２００がストレージモジュール３００からデータを読み出す場合に実行される読出処理の流れを示す。図６は、サーバモジュール２００がストレージモジュール３００に対してデータを書き込む場合に実行される書込処理の流れを示す。以下の説明では、ストレージモジュール３００のディスクコントローラ３１０−１に対するＩ／Ｏ要求が発行された場合を例に説明する。
【００７４】
まず、データ読出処理について説明する。
【００７５】
ＯＳ２２１は、アプリケーション２２３からストレージモジュール３００に格納されるデータの読出要求を受け付けた場合、ストレージアクセス部２２２を呼び出す。
【００７６】
ストレージアクセス部２２２は、読出対象のデータを一時的に格納するためのバッファをメモリ２２０に設定する（ステップＳ１０１）。また、ストレージアクセス部２２２は、転送リスト２２４を生成し、生成された転送リスト２２４をメモリ２２０に書き込む（ステップＳ１０２）。転送リスト２２４には、ストレージモジュール３００から読み出されたデータをバッファに格納するためのアドレス、及びアドレス長等が含まれる。
【００７７】
さらに、ストレージアクセス部２２２は、ディスクコントローラ３１０−１のストレージ制御部３３１に対して読出要求を送信する（ステップＳ１０３）。当該読出要求は、サーバモジュール２００において使用されるコマンドである。したがって、ストレージモジュール３００において使用されるコマンドとは異なる形式のコマンドである。すなわち、サーバモジュール２００及びストレージモジュール３００が扱うプロトコルが異なる。
【００７８】
以下の説明では、サーバモジュール２００が使用するコマンドをサーバコマンドと記載し、ストレージモジュール３００が使用するコマンドをストレージコマンドと記載する。
【００７９】
転送モジュール２３０は、ストレージアクセス部２２２から読出要求（サーバコマンド）を受信すると、当該読出要求をストレージコマンドに変換し、変換された読出要求（ストレージコマンド）をストレージ制御部３３１に送信する（ステップＳ１０４）。具体的には、以下のような処理が実行される。
【００８０】
データ転送部２３１は、受信した読出要求（サーバコマンド）を解析する。データ転送部２３１は、受信した読出要求（サーバコマンド）がストレージモジュール３００に送信されるサーバコマンドであるため、プロトコルエンジン２３４にコマンドの変換を指示する。
【００８１】
プロトコルエンジン２３４は、受信した読出要求（サーバコマンド）をサーバコマンドからストレージコマンドに変換し、変換された読出要求（ストレージコマンド）をデータ転送部２３１に出力する。
【００８２】
データ転送部２３１は、入力された読出要求（ストレージコマンド）をストレージモジュール３００のストレージ制御部３３１に送信する。
【００８３】
以上がステップＳ１０４の処理の説明である。
【００８４】
ストレージ制御部３３１は、読出要求（ストレージコマンド）を受信すると、読出対象のデータを記憶装置３７０から読み出し、読み出されたデータをメモリ３３０にコピーする（ステップＳ１０５）。具体的には、以下のような処理が実行される。
【００８５】
Ｉ／Ｏ処理部３３２は、読出要求（ストレージコマンド）に基づいて、記憶装置３７０に対する読出要求を発行し、記憶装置制御部３３３を呼び出す。
【００８６】
呼び出された記憶装置制御部３３３は、発行された読出要求に基づいて、記憶装置３７０から所定のデータを読み出し、当該データをＩ／Ｏ処理部３３２に出力する。
【００８７】
Ｉ／Ｏ処理部３３２は、入力されたデータをメモリ３３０にコピーする。
【００８８】
本実施例では、読出要求（ストレージコマンド）は転送モジュールによって予めストレージコマンドに変換されているため、Ｉ／Ｏ処理部３３２は、コマンドの変換処理を実行する必要がない。
【００８９】
以上が、ステップＳ１０５の処理の説明である。
【００９０】
ストレージ制御部３３１は、転送リスト３３４を生成し、生成された転送リスト３３４をメモリ３３０に書き込む（ステップＳ１０６）。転送リスト３３４には、メモリ３３０にコピーされたデータを読み出すためのアドレス、及びアドレス帳等が含まれる。
【００９１】
次に、ストレージ制御部３３１は、転送モジュール２３０に、ＤＭＡ転送要求を送信する（ステップＳ１０７）。
【００９２】
転送モジュール２３０は、ＤＭＡ転送要求を受信すると、サーバモジュール２００のメモリ２２０から転送リスト２２４を読み出し（ステップＳ１０８）、また、ストレージモジュール３００のメモリ３３０から転送リスト３３４を読み出す（ステップＳ１０９）。
【００９３】
具体的には、データ転送部２３１のＤＭＡコントローラ２３２が、サーバモジュール２００のメモリ２２０に格納される転送リスト２２４にアクセスするためのアドレスを取得し、また、ストレージモジュール３００のメモリ３３０に格納される転送リスト３３４にアクセスするためのアドレスを取得する。なお、ＤＭＡコントローラ２３２は、転送リスト２２４、３３４そのものを取得してもよい。ＤＭＡコントローラ２３２は、取得されたアドレス又は転送リスト２２４、３３４を一時的に保持する。
【００９４】
以下の説明では、サーバモジュール２００のメモリ２２０に格納される転送リスト２２４にアクセスするためのアドレスを第１アドレスと記載し、ストレージモジュール３００のメモリ３３０に格納される転送リスト３３４にアクセスするためのアドレスを第２アドレスとも記載する。
【００９５】
転送モジュール２３０は、ストレージモジュール３００のメモリ３３０に格納される転送リスト３３４を参照し、当該メモリ３３０にコピーされたデータを読み出す（ステップＳ１１０）。
【００９６】
具体的には、データ転送部２３１のＤＭＡコントローラ２３２が、第２アドレスに基づいて、ストレージモジュールのメモリ３３０に格納される転送リスト３３４を参照し、当該メモリ３３０にコピーされたデータを読み出す。なお、ＤＭＡコントローラ２３２は、所定のデータ単位毎にデータを読み出すものとする。例えば、５２０バイト単位のデータが読み出される。
【００９７】
次に、転送モジュール２３０は、読み出されたデータをサーバモジュール２００のメモリ２２０に書き込む（ステップＳ１１１）。具体的には、以下のような処理が実行される。
【００９８】
データ転送部２３１のデータ検査部２３３は、読み出されたデータをサーバモジュール２００側のデータの形式に変換する。例えば、データ検査部２３３は、読み出されたデータに付与されるデータ保証コードを削除する。これによって、サーバモジュール２００が扱う５１２バイトのデータに変換される。
【００９９】
データ転送部２３１は、第１アドレスに基づいてサーバモジュール２００のメモリ２２０に格納される転送リスト２２４を参照し、また、第２アドレスに基づいてストレージモジュール３００のメモリ３３０に格納される転送リスト３３４を参照する。
【０１００】
データ転送部２３１は、転送リスト２２４、３３４に基づいて、変換されたデータを書き込むメモリ２２０の記憶領域を特定する。さらに、データ転送部２３１のＤＭＡコントローラ２３２は、特定されたメモリ２２０の記憶領域に、変換されたデータを書き込む。
【０１０１】
例えば、データ転送部２３１は、アライメントを調整して、メモリ２２０の記憶領域を特定する。これは、サーバモジュール２００が扱うデータとストレージモジュール３００が扱うデータのアドレス長が異なるため、各メモリ２２０、３３０に格納する記憶領域のアドレスを調整する必要があるためである。
【０１０２】
データ転送部２３１は、読出対象のデータが全て読み出されるまで前述した処理を繰り返し実行する。
【０１０３】
なお、データ転送部２３１は、データ保証コードに基づいて、読み出されたデータの整合性を確認してもよい。読み出されたデータに誤りが検出された場合、データ転送部２３１は、再度ストレージモジュール３００のメモリ３３０からデータを読み出してもよいし、ストレージ制御部３３１にデータの誤りが検出されたことを通知してもよい。
【０１０４】
以上が、ステップＳ１１１の処理の説明である。
【０１０５】
次に、転送モジュール２３０は、読出対象のデータを全てメモリ２２０に書き込んだ後、ストレージ制御部３３１にＤＭＡ転送の完了通知を送信する（ステップＳ１１２）。
【０１０６】
ストレージ制御部３３１は、ＤＭＡ転送の完了通知を受信した後、ＯＳ２２１に対して完了通知（ストレージコマンド）を送信する（ステップＳ１１３）。
【０１０７】
転送モジュール２３０は、完了通知（ストレージコマンド）を受信した後、当該完了通知（ストレージコマンド）をストレージコマンドからサーバコマンドに変換し、変換された完了通知（サーバコマンド）をＯＳ２２１に送信する（ステップＳ１１４）。なお、コマンドの変換処理は、ステップＳ１０４と同一の処理であるため説明を省略する。
【０１０８】
なお、ステップＳ１０８及びステップＳ１０９において、転送リスト２２４、３３４そのものが読み出された場合、転送モジュール２３０は、転送リスト２２４、３３４を参照し、アライメントを調整してデータを格納するための変換リストを生成する。この場合、データ転送部２３１は、ステップＳ１１１において、当該変換リストに基づいて、変換されたデータを書き込むメモリ２２０上の記憶領域を特定する。さらに、ＤＭＡコントローラ２３２は、特定されたメモリ２２０上の記憶領域に変換されたデータを書き込む。
【０１０９】
変換リストは、例えば、転送リスト２２４のアドレスと、転送リスト３３４のアドレスとを対応づけたリストが考えられる。
【０１１０】
次に、データ書込処理について説明する。
【０１１１】
ＯＳ２２１は、アプリケーション２２３からストレージモジュール３００へのデータの書込要求を受け付けた場合、ストレージアクセス部２２２を呼び出す。
【０１１２】
ストレージアクセス部２２２は、書込対象のデータをメモリ２２０にコピーする（ステップＳ２０１）。また、ストレージアクセス部２２２は、転送リスト２２４を生成し、生成された転送リスト２２４をメモリ２２０に書き込む（ステップＳ２０２）。転送リスト２２４には、メモリ２２０にコピーされたデータを読み出すためのアドレス、及びアドレス長等が含まれる。
【０１１３】
ストレージアクセス部２２２は、ストレージ制御部３３１に対して書込要求（サーバコマンド）を送信する（ステップＳ２０３）。
【０１１４】
転送モジュール２３０は、書込要求（サーバコマンド）を受信すると、当該書込要求（サーバコマンド）をサーバコマンドからストレージコマンドに変換し、変換された書込要求（ストレージコマンド）をストレージ制御部３３１に送信する（ステップＳ２０４）。具体的には、以下のような処理が実行される。
【０１１５】
データ転送部２３１は、受信した書込要求（サーバコマンド）を解析する。データ転送部２３１は、受信した書込要求（サーバコマンド）がストレージモジュール３００に送信されるサーバコマンドであるため、プロトコルエンジン２３４にコマンドの変換を指示する。
【０１１６】
プロトコルエンジン２３４は、受信した書込要求（サーバコマンド）をサーバコマンドからストレージコマンドに変換し、変換された書込要求（ストレージコマンド）をデータ転送部２３１に出力する。
【０１１７】
データ転送部２３１は、入力された書込要求（ストレージコマンド）をストレージモジュール３００のストレージ制御部３３１に送信する。
【０１１８】
以上がステップＳ２０４の処理の説明である。
【０１１９】
ストレージ制御部３３１は、書込要求（ストレージコマンド）を受信すると、書込対象のデータを一時的に格納するためのバッファを設定する（ステップＳ２０５）。また、ストレージ制御部３３１は、転送リスト３３４を生成し、生成された転送リスト３３４をメモリ３３０に書き込む（ステップＳ２０６）。転送リスト３３４には、書込対象のデータをバッファに格納するためのアドレス、及びアドレス長等が含まれる。
【０１２０】
次に、ストレージ制御部３３１は、転送モジュール２３０に、ＤＭＡ転送要求を送信する（ステップＳ２０７）。
【０１２１】
転送モジュール２３０は、ＤＭＡ転送要求を受信すると、サーバモジュール２００のメモリ２２０から転送リスト２２４を読み出し（ステップＳ２０８）、また、ストレージモジュール３００のメモリ３３０から転送リスト３３４を読み出す（ステップＳ２０９）。
【０１２２】
具体的には、データ転送部２３１のＤＭＡコントローラ２３２が、サーバモジュール２００から第１アドレスを取得し、また、ストレージモジュール３００から第２アドレスを取得する。なお、ＤＭＡコントローラ２３２は、転送リスト２２４、３３４そのものを取得してもよい。ＤＭＡコントローラ２３２は、取得されたアドレス又は転送リスト２２４、３３４を一時的に保持する。
【０１２３】
転送モジュール２３０は、サーバモジュール２００のメモリ２２０に格納される転送リスト２２４を参照し、当該メモリ２２０にコピーされたデータを読み出す（ステップＳ２１０）。
【０１２４】
具体的には、データ転送部２３１のＤＭＡコントローラ２３２が、第１アドレスに基づいて、サーバモジュール２００のメモリ２２０に格納される転送リスト２２４を参照し、当該メモリ２２０にコピーされたデータを読み出す。なお、ＤＭＡコントローラ２３２は、所定のデータ単位毎にデータを読み出すものとする。例えば、５１２バイト単位のデータが読み出される。
【０１２５】
次に、転送モジュール２３０は、読み出されたデータをストレージモジュール３００のメモリ３３０に書き込む（ステップＳ２１１）。具体的には、以下のような処理が実行される。
【０１２６】
データ転送部２３１のデータ検査部２３３は、読み出されたデータをストレージモジュール側のデータの形式に変換する。例えば、データ検査部２３３は、読み出されたデータにデータ保証コードを付与する。これによって、ストレージモジュール３００が扱う５２０バイトのデータに変換される。
【０１２７】
データ転送部２３１は、第１アドレスに基づいてサーバモジュール２００のメモリ２２０に格納される転送リスト２２４を参照し、また、第２アドレスに基づいてストレージモジュール３００のメモリ３３０に格納される転送リスト３３４を参照する。
【０１２８】
データ転送部２３１は、転送リスト２２４、３３４に基づいて、変換されたデータを書き込むメモリ２２０の記憶領域を特定する。さらに、データ転送部２３１のＤＭＡコントローラ２３２は、特定されたメモリ２２０の記憶領域に、変換されたデータを書き込む。
【０１２９】
例えば、データ転送部２３１は、アライメントを調整して、メモリ３３０の記憶領域を特定する。
【０１３０】
データ転送部２３１は、書込対象のデータが全て書き込まれるまで前述した処理を繰り返し実行する。
【０１３１】
以上が、ステップＳ２１１の処理の説明である。
【０１３２】
次に、転送モジュール２３０は、書込対象のデータを全てメモリ３３０に書き込んだ後、ストレージ制御部３３１にＤＭＡ転送の完了通知を送信する（ステップＳ２１２）。
【０１３３】
ストレージ制御部３３１は、ＤＭＡ転送の完了通知を受信した後、ＯＳ２２１に対して完了通知（ストレージコマンド）を送信する（ステップＳ２１３）。
【０１３４】
転送モジュール２３０は、完了通知（ストレージコマンド）を受信した後、当該完了通知（ストレージコマンド）をストレージコマンドからサーバコマンドに変換し、変換された完了通知（サーバコマンド）をＯＳ２２１に送信する（ステップＳ２１４）。なお、コマンドの変換処理は、ステップＳ２０４と同一の処理であるため説明を省略する。
【０１３５】
なお、ステップＳ２０８及びステップＳ２０９において、転送リスト２２４、３３４そのものが読み出された場合、転送モジュール２３０は、転送リスト２２４、３３４を参照し、アライメントを調整してデータを格納するための変換リストを生成する。この場合、転送モジュール２３０は、ステップＳ２１１において、当該変換リストに基づいて、変換されたデータを書き込むメモリ３３０上の記憶領域を特定する。さらに、ＤＭＡコントローラ２３２は、特定されたメモリ３３０上の記憶領域に変換されたデータを書き込む。
【０１３６】
変換リストは、例えば、転送リスト２２４のアドレスと、転送リスト３３４のアドレスとを対応づけたリストが考えられる。
【０１３７】
なお、実施例１では、サーバモジュール２００が転送モジュール２３０を搭載していたが本発明はこれに限定されない。例えば、バックプレーン４００が転送モジュール２３０を搭載してもよい。すなわち、転送モジュール２３０の搭載位置に限定されず、サーバモジュール２００のＩ／Ｏバスとストレージモジュール３００のＩ／Ｏバスとを接続できればよい。
【０１３８】
実施例１では、二つのディスクコントローラ３１０を用いて、ストレージ制御部３３１を冗長化していたが、本発明はこれに限定されない。例えば一つのディスクコントローラ３１０を論理的に分割することによって二つのストレージ制御部３３１を実現してもよい。この場合、二つのＩ／Ｆ３６０は、一つのディスクコントローラに接続される。
【０１３９】
以上説明したように、実施例１では、転送モジュール２３０が、サーバモジュール２００のメモリ２２０とストレージモジュール３００のメモリ３３０との間のデータ転送を行う。
【０１４０】
従来の計算機システムにおけるデータ転送では、サーバモジュール２００のエンドポイント及びストレージモジュールのエンドポイントのそれぞれでプロトコル変換が行われる。例えば、従来の読出処理では、サーバモジュール２００のＨＢＡ２４０等がプロトコルを変換して、ストレージモジュール３００に読出要求を送信し、ストレージモジュール３００のＴＢＡ３５０等がプロトコルを変換して、データを読み出していた。
【０１４１】
一方、本願発明では、サーバモジュール２００及びストレージモジュール３００がプロトコル変換されていないコマンドを転送モジュール２３０に送信し、転送モジュール２３０がプロトコルを変換する。
【０１４２】
具体的には、サーバモジュール２００はサーバコマンドをそのまま転送モジュール２３０に送信し、転送モジュール２３０が、受信したサーバコマンドをストレージコマンドに変換し、変換されたコマンドをストレージモジュール３００に送信する。また、ストレージモジュール３００は、ストレージコマンドをそのまま転送モジュール２３０に送信し、転送モジュール２３０は、受信したストレージコマンドをサーバコマンドに変換し、変換されたコマンドをサーバモジュール２００に送信する。
【０１４３】
したがって、プロトコル変換によるデータ転送のオーバヘッドを低減するという効果がある。
【０１４４】
また、転送モジュール２３０は、サーバモジュール２００のメモリ２２０、及びストレージモジュール３００のメモリ３３０に直接アクセスするため、サーバモジュール２００のプロセッサ２１０及びストレージモジュール３００のプロセッサ３２０を介することなく、各メモリ間の高速なデータ転送を実現できる。
【０１４５】
実施例１では、サーバモジュール２００に転送モジュール２３０を搭載することによって高性能のデータ転送が実現できる。すなわち、サーバモジュール２００のソフトウェア構成を変更する必要がなく、ストレージモジュール３００のハードウェア構成及びソフトウェア構成を変更する必要がない。したがって、低コストで実施例１に示す計算機システムを実現することができる。
【０１４６】
また、実施例１では、サーバモジュール２００が転送モジュール２３０を有する理由は、ストレージモジュール３００に転送モジュール２３０を搭載する場合、一つのサーバモジュール２００に対して一つの転送モジュール２３０が必要であるためである。すなわち、接続可能なサーバモジュール２００の最大数分だけ転送モジュール２３０をストレージモジュール３００に搭載するのは、物理的に困難である場合があるためである。
【実施例２】
【０１４７】
実施例１では、同一の筐体内にサーバモジュール２００及びストレージモジュール３００を含むサーバ装置１００であったが、実施例２では、サーバモジュール２００及びストレージモジュール３００がそれぞれ独立した筐体である点が異なる。以下、実施例１との差異を中心に実施例２について説明する。
【０１４８】
図７は、本発明の実施例２の計算機システムの構成例を示すブロック図である。
【０１４９】
実施例２の計算機システムは、複数のサーバモジュール２００及び複数のストレージモジュール３００から構成される。
【０１５０】
サーバモジュール２００及びストレージモジュール３００のハードウェア構成及びソフトウェア構成は、実施例１と同一であるため説明を省略する。
【０１５１】
実施例２のサーバモジュール２００−１及びストレージモジュール３００−１は、メタルケーブル等の接続線を介して直接接続される点が実施例１と異なる。サーバモジュール２００のＩ／Ｆ２６０には２本の接続線が接続され、各接続線は、ストレージモジュール３００の異なるＩ／Ｆ３６０に接続される。その他の接続関係は実施例１と同一であるため説明を省略する。
【０１５２】
実施例２の転送モジュール２３０が実行する処理は、実施例１の図５及び図６に示すものと同一であるため説明を省略する。
【０１５３】
実施例２によれば、サーバモジュール２００及びストレージモジュール３００が異なる筐体であっても、高速なデータ転送を実現することができる。
【実施例３】
【０１５４】
実施例３では、サーバモジュール２００及びストレージモジュール３００がそれぞれ独立した筐体であり、それぞれが転送モジュールを有する点が実施例１と異なる。なお、実施例３では、ストレージモジュール３００が必要な数だけ転送モジュールを搭載可能な場合を想定する。
【０１５５】
サーバモジュール２００のみが転送モジュール２３０を有する場合、ストレージモジュール３００は、ディスクコントローラ３１０から転送モジュール２３０までのＩ／Ｏバスを自身のＩ／Ｏ接続領域として管理する。
【０１５６】
そのため、サーバモジュール２００とストレージモジュール３００との間の接続線に障害が発生した場合、ストレージモジュール３００は、Ｉ／Ｏ接続領域の障害発生と認識するため、ストレージモジュール３００全体が停止する可能性がある。そのため、ストレージモジュール３００における冗長化の構成が適切に反映されない。
【０１５７】
したがって、実施例３では、ストレージモジュール３００が転送モジュール３８０を有する。この場合、ストレージモジュール３００は、ディスクコントローラ３１０から自身の転送モジュール３８０までのＩ／Ｏバスを自身のＩ／Ｏ接続領域として管理する。
【０１５８】
以下、実施例１との差異を中心に実施例３について説明する。
【０１５９】
図８は、本発明の実施例３の計算機システムの構成例を示すブロック図である。
【０１６０】
実施例３の計算機システムは、複数のサーバモジュール２００及び複数のストレージモジュール３００から構成される。
【０１６１】
実施例３のサーバモジュール２００のハードウェア構成及びソフトウェア構成は実施例１と同一であるため説明を省略する。
【０１６２】
実施例３のストレージモジュール３００は、新たに転送モジュール３８０−１、３８０−２を有する。転送モジュール３８０−１はディスクコントローラ３１０−１に接続され、転送モジュール３８０−２はディスクコントローラ３１０−２に接続される。実施例３のストレージモジュール３００のソフトウェア構成は実施例１と同一であるため説明を省略する。
【０１６３】
また、転送モジュール３８０−１、３８０−２の構成は、転送モジュール２３０と同一であるため説明を省略する。
【０１６４】
実施例３では、サーバモジュール２００の転送モジュール２３０は、ブリッジとして機能する。すなわち、転送モジュール２３０内では、データ転送部２３１を介さず、ブリッジ２３５を介して接続ポート２３６間でデータが転送される。したがって、サーバモジュール２００は、転送モジュール２３０の代わりに一般的なブリッジを有していてもよい。
【０１６５】
実施例３では、ストレージモジュール３００の転送モジュール３８０−１、３８０−２が図５及び図６に示すデータ転送処理を実行する。転送モジュール３８０−１、３８０−２は、それぞれ独立したデータ転送処理を実行する。
【０１６６】
また、転送モジュール３８０は、サーバモジュール２００とストレージモジュール３００とを接続する接続線に障害が発生した場合に、転送モジュール３８０が接続されるディスクコントローラ３１０の状態をスタンバイ状態に移行させる。これによって、接続線の障害の影響範囲を最小限に抑えることができる。
【０１６７】
例えば、サーバモジュール２００−１とディスクコントローラ３１０−１とを接続する接続線に障害が発生した場合、転送モジュール３８０−１は、ディスクコントローラ３１０−１をスタンバイ状態に移行させる。このとき、転送モジュール３８０−２が、データ転送処理を継続する。したがって、一つのサーバモジュール２００とストレージモジュール３００とを接続する接続線に障害が発生した場合であっても、他のサーバモジュール２００に当該障害の影響が及ぶのを抑止することができる。
【０１６８】
なお、サーバモジュール２００内のＩ／Ｏバスに障害が発生した場合には、以下のような処理が実行される。サーバモジュール２００が有するチップセット（図示省略）のルートコンプレックスが、障害発生したＩ／Ｏバスの切離し等の縮退処理を実行する。ストレージモジュール３００内のＩ／Ｏバスに障害が発生した場合も同様の処理が実行される。
【０１６９】
サーバモジュール２００の転送モジュール２３０をブリッジとして設定する方法としては、以下のようなものが考えられる。
【０１７０】
サーバモジュール２００及びストレージモジュール３００を接続線で接続したときに、サーバモジュール２００のＯＳ２２１は、ストレージモジュール３００が転送モジュール３８０を有するか否かを問い合わせる。ＯＳ２２１は、ストレージモジュール３００が転送モジュール３８０を有する旨の応答を受信した場合、自身の転送モジュール２３０をブリッジとして設定する。
【０１７１】
他の設定方法としては、システム管理者又はユーザが予め、サーバモジュール２００の転送モジュール２３０をブリッジとして設定する。
【０１７２】
図８に示す例では、Ｉ／Ｆ３６０毎に異なる転送モジュール３８０が接続されているが本発明はこれに限定されない。例えば、転送モジュール３８０は一つであってもよい。この場合、一つの転送モジュール３８０がそれぞれ異なるＩ／Ｏバスを介してＩ／Ｆ３６０−１、３６０−２に接続される。また、転送モジュール３８０は、各機能部を論理的に分割することによって、Ｉ／Ｏ処理を並列実行する。
【０１７３】
実施例３によれば、耐障害性を高め、かつ、高速なデータ転送を実現することができる。なお、実施例１においても、実施例３と同様の構成をとることが可能である。すなわち、ストレージモジュール３００−１が、転送モジュール３８０を備えていてもよい。
【０１７４】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０１７５】
１００  サーバ装置
２００  サーバモジュール
２１０  プロセッサ
２２０  メモリ
２２１  ＯＳ
２２２  ストレージアクセス部
２２３  アプリケーション
２２４  転送リスト
２３０  転送モジュール
２３１  データ転送部
２３２  ＤＭＡコントローラ
２３３  データ検査部
２３４  プロトコルエンジン
２３５  ブリッジ
２３６  接続ポート
２４０  ＨＢＡ
２５０  ＮＩＣ
２６０  Ｉ／Ｆ
３００  ストレージモジュール
３１０  ディスクコントローラ
３２０  プロセッサ
３３０  メモリ
３３１  ストレージ制御部
３３２  Ｉ／Ｏ処理部
３３３  記憶装置制御部
３３４  転送リスト
３５０  ＴＢＡ
３６０  Ｉ／Ｆ
３７０  記憶装置
３８０  転送モジュール
４００  バックプレーン
４１０  Ｉ／Ｆ
５００  ＳＡＮ
６００  ＬＡＮ
【図１】
2014222426.tif 000003
【図２】
2014222426.tif 000004
【図３】
2014222426.tif 000005
【図４】
2014222426.tif 000006
【図５】
2014222426.tif 000007
【図６】
2014222426.tif 000008
【図７】
2014222426.tif 000009
【図８】
2014222426.tif 000010
【手続補正書】
【提出日】平成26年6月30日(2014.6.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールと、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと、を有する計算機システムであって、
前記サーバモジュールは、更に、前記第１のメモリと前記第２のメモリ間のＤＭＡ転送を制御する転送モジュールを有し、
前記サーバモジュールの前記第１のプロセッサが読み出し要求を送信すると、
前記転送モジュールは、
前記ストレージモジュールの第２のメモリから前記読み出し要求に対応するデータを読み出し、当該データから当該データの整合性を確認するための保証コードを削除することで当該データの形式を前記第２のデータ形式から前記第１のデータ形式に変換し、当該変換後のデータを前記サーバモジュールの第１のメモリへ書き込むことにより、前記第２のメモリから前記第１のメモリへのＤＭＡ転送を行う
ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記サーバモジュールの前記第１のプロセッサが読み出し要求を送信すると、
前記転送モジュールは、
前記第１のプロセッサにより前記読み出し要求のために設定される前記第１のメモリ上の第１のアドレスを示す第１の転送リストを取得し、
前記第２のプロセッサにより前記記憶デバイスから読みだされた前記読み出し要求に対応するデータを格納される前記第２のメモリ上の第２のアドレスを示す第２の転送リストを取得し、
前記第１の転送リストと前記第２の転送リストとに基づいて、前記第１のアドレスと前記第２のアドレスを対応付ける変換リストを作成し、
前記変換リストに従って、前記第２のメモリから前記第１のメモリへのＤＭＡ転送を実行し、
前記第１のプロセッサは、前記ＤＭＡ転送の完了に応じて、前記読み要求に対応する完了通知を受領する
ことを特徴とする計算機システム。
【請求項３】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールと、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと、を有する計算機システムであって、
前記サーバモジュールは、更に、前記第１のメモリと前記第２のメモリ間のＤＭＡ転送を制御する転送モジュールを有し、
前記サーバモジュールの前記第１のプロセッサが書き込み要求を送信すると、
前記転送モジュールは、
前記サーバモジュールの第１のメモリから前記書込み要求に対応するデータを読み出し、当該データに当該データの整合性を確認するための保証コードを付与することで当該データを前記第１のデータ形式から前記第２のデータ形式に変換し、当該変換後のデータを前記ストレージモジュールの前記第２のメモリに書き込むことにより、前記第１のメモリから前記第２のメモリへのＤＭＡ転送を行う
ことを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記サーバモジュールの前記第１のプロセッサが書き込み要求を送信すると、
前記転送モジュールは、
前記第１のプロセッサにより前記書込み要求に対応するデータが格納される前記第１のメモリ上の第１のアドレスを示す第１の転送リストを取得し、
前記第２のプロセッサにより前記書込み要求のために設定される前記第２のメモリ上の第２のアドレスを示す第２の転送リストを取得し、
前記第１の転送リストと前記第２の転送リストとに基づいて、前記第１のアドレスと前記第２のアドレスを対応付ける変換リストを作成し、
前記変換リストに従って、前記第１のメモリから前記第２のメモリへのＤＭＡ転送を実行し、
前記第１のプロセッサは、前記データ転送の完了に応じて、前記読み要求に対応する完了通知を受領する
ことを特徴とする計算機システム。
【請求項５】
請求項１乃至請求項４のいずれかに記載の計算機システムであって、
前記ストレージモジュールの前記第２のプロセッサは、前記記憶デバイスを用いてＬｏｇｉｃａｌ  Ｕｎｉｔを前記サーバモジュールに提供することを特徴とする計算機システム。
【請求項６】
請求項１乃至請求項５のいずれかに記載の計算機システムであって、
前記サーバモジュールと前記ストレージモジュールは、ＰＣＩeプロトコルに基づいて通信を行うことを特徴とする計算機システム。
【請求項７】
請求項１乃至請求項６のいずれかに記載の計算機システムであって、
前記第２のプロセッサは、前記読み出し要求もしくは前記書込み要求に応じて、対応するデータを前記第２のメモリに一時的に格納することを特徴とする計算機システム。
【請求項８】
請求項１乃至請求項７のいずれかに記載の計算機システムであって、
前記ストレージモジュールは、
前記記憶デバイスと接続され、前記第２のプロセッサと前記第２のメモリを備える第１のコントローラと、
前記記憶デバイスと接続され、第３のプロセッサと第３のメモリを備える第２のコントローラと、を有し
前記転送モジュールは、前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記計算機システムは、第４のプロセッサと第４のメモリと他の転送モジュールを備える他のサーバモジュールを更に有し、
前記他の転送モジュールは、前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とする計算機システム。
【請求項１０】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールと、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと、を有する計算機システムにおける、データ転送方法であって、
前記サーバモジュールは、更に、前記第１のメモリと前記第２のメモリ間のＤＭＡ転送を制御する転送モジュールを有し、
前記データ転送方法は、
前記サーバモジュールの前記第１のプロセッサが書き込み要求を送信すると、
前記転送モジュールは、前記ストレージモジュールの第２のメモリから前記読み出し要求に対応するデータを読み出し、当該データから当該データの整合性を確認するための保証コードを削除することで当該データの形式を前記第２のデータ形式から前記第１のデータ形式に変換し、当該変換後のデータを前記サーバモジュールの第１のメモリへ書き込むことにより、前記第２のメモリから前記第１のメモリへのＤＭＡ転送を行う
ことを特徴とするデータ転送方法。
【請求項１１】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールと、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと、を有する計算機システムにおける、データ転送方法であって、
前記サーバモジュールは、更に、前記第１のメモリと前記第２のメモリ間のＤＭＡ転送を制御する転送モジュールを有し、
前記データ転送方法は、
前記サーバモジュールの前記第１のプロセッサが書き込み要求を送信すると、
前記転送モジュールは、前記サーバモジュールの第１のメモリから前記書込み要求に対応するデータを読み出し、当該データに当該データの整合性を確認するための保証コードを付与することで当該データの形式を前記第１のデータ形式から前記第２のデータ形式のデータに変換し、当該変換後のデータを前記ストレージモジュールの前記第２のメモリに書き込むことにより、前記第１のメモリから前記第２のメモリへのＤＭＡ転送を行う
ことを含むデータ転送方法。
【請求項１２】
請求項１０もしくは１１に記載のデータ転送方法であって、
前記ストレージモジュールの前記第２のプロセッサは、前記記憶デバイスを用いてＬｏｇｉｃａｌ  Ｕｎｉｔを前記サーバモジュールに提供することを特徴とするデータ転送方法。
【請求項１３】
請求項１０乃至請求項１２のいずれかに記載のデータ転送方法であって、
前記サーバモジュールと前記ストレージモジュールは、ＰＣＩeプロトコルに基づいて通信を行うことを特徴とするデータ転送方法。
【請求項１４】
請求項１０乃至請求項１３のいずれかに記載のデータ転送方法であって、
前記ストレージモジュールは、
前記記憶デバイスと接続され、前記第２のプロセッサと前記第２のメモリを備える第１のコントローラと、
前記記憶デバイスと接続され、前記第３のプロセッサと前記第３のメモリを備える第２のコントローラと、を有し、
前記転送モジュールは、前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とするデータ転送方法。
【請求項１５】
請求項１４に記載のデータ転送方法であって、
前記計算機システムは、第４のプロセッサと第４のメモリと他の転送モジュールを備える他のサーバモジュールを更に有し、
前記他の転送モジュールは、前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とするデータ転送方法。
【請求項１６】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールに搭載され、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと接続する転送モジュールであって、
前記サーバモジュールの前記第１のプロセッサが読み出し要求を送信すると、
前記ストレージモジュールの第２のメモリから前記読み出し要求に対応するデータを読み出し、当該データから当該データの整合性を確認するための保証コードを削除することで当該データの形式を前記第２のデータ形式から前記第１のデータ形式に変換し、当該変換後のデータを前記サーバモジュールの第１のメモリへ書き込むことにより、前記第２のメモリから前記第１のメモリへのＤＭＡ転送を行うことを特徴とする転送モジュール。
【請求項１７】
第１のプロセッサと第１のメモリを備え第１のデータ形式でデータを扱うサーバモジュールに搭載され、第２のプロセッサと第２のメモリと記憶デバイスを備え第２のデータ形式でデータを扱うストレージモジュールと接続する転送モジュールであって、
前記サーバモジュールの前記第１のプロセッサが書き込み要求を送信すると、
前記サーバモジュールの前記第１のメモリから前記書込み要求に対応するデータを読み出し、当該データに当該データの整合性を確認するための保証コードを付与することで当該データの形式を前記第１のデータ形式から前記第２のデータ形式に変換し、当該変換後のデータを前記ストレージモジュールの前記第２のメモリに書き込むことにより、前記第１のメモリから前記第２のメモリへのＤＭＡ転送を行う
ことを特徴とする転送モジュール。
【請求項１８】
請求項１６もしくは１７に記載の転送モジュールであって、
前記ストレージモジュールの前記第２のプロセッサは前記記憶デバイスを用いてＬｏｇｉｃａｌ  Ｕｎｉｔを前記サーバモジュールに提供することを特徴とする転送モジュール。
【請求項１９】
請求項１６乃至請求項１８のいずれかに記載の転送モジュールであって、
前記サーバモジュールと前記ストレージモジュールは、ＰＣＩeプロトコルに基づいて通信を行うことを特徴とする転送モジュール。
【請求項２０】
請求項１６乃至請求項１９のいずれかに記載の転送モジュールであって、
前記ストレージモジュールは、
前記記憶デバイスと接続され、前記第２のプロセッサと前記第２のメモリを備える第１のコントローラと、
前記記憶デバイスと接続され、前記第３のプロセッサと前記第３のメモリを備える第２のコントローラと、を有し、
前記転送モジュールは前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とする転送モジュール。
【請求項２１】
請求項２０に記載の転送モジュールであって、
前記計算機システムは、第４のプロセッサと第４のメモリと他の転送モジュールを備える他のサーバモジュールを更に有し、
前記他の転送モジュールは、前記第１のコントローラおよび前記第２のコントローラと接続されることを特徴とする転送モジュール。