(57)【要約】コントローラは、複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供する。データ転送手段は、コントローラが接続されたノードとホストのメモリとの間のデータ転送を行う。コントローラは、ホストからネットワークを経由して仮想記憶媒体に対するアクセス要求を受信すると、仮想記憶媒体上のアクセス対象領域を部分領域に分割し、部分領域毎のバッファを確保する。コントローラは、部分領域毎に、部分領域に対応する記憶媒体の領域と部分領域に対応するバッファとの間のデータ転送と、データ転送手段による部分領域に対応するバッファとホストのメモリにおける部分領域に対応する領域との間のデータ転送とを制御する。
2019244656.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段とを備え、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
ストレージ装置。
【請求項２】
前記コントローラは、前記分割では、前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割する
請求項１に記載のストレージ装置。
【請求項３】
前記コントローラは、前記分割では、前記部分領域の個数が最小となるように分割する
請求項２に記載のストレージ装置。
【請求項４】
前記コントローラは、
前記ホストから、前記アクセス要求の種類と、前記アクセス対象領域を指し示す第１のアドレス情報と、前記アクセス対象領域との間でデータを送受信する前記メモリ上の転送メモリ領域を指し示す第２のアドレス情報とを取得するアクセス要求受信手段を備える
請求項３に記載のストレージ装置。
【請求項５】
前記コントローラは、
前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割し、それぞれの前記部分領域のサイズと、それぞれの前記部分領域に対応する前記記憶媒体の識別子および前記記憶媒体の領域である転送ストレージ領域を指し示す第３のアドレス情報を求める転送ストレージ領域算出手段を備える
請求項４に記載のストレージ装置。
【請求項６】
前記コントローラは、
前記転送メモリ領域を、それぞれの前記部分領域に対応する部分転送メモリ領域に分割し、それぞれの前記部分転送メモリ領域を指し示す第４のアドレス情報を求める転送メモリ領域算出手段を備える
請求項５に記載のストレージ装置。
【請求項７】
前記コントローラは、
前記部分領域毎に、前記ノードに前記バッファを確保するアクセス処理実行管理手段を備える
請求項６に記載のストレージ装置。
【請求項８】
前記コントローラは、
前記部分領域に対応する前記転送ストレージ領域と前記部分領域に対応する前記バッファとの間のデータ転送を制御するデータ転送制御手段を備える
請求項７に記載のストレージ装置。
【請求項９】
前記データ転送制御手段は、前記部分領域に対応する前記バッファと前記部分領域に対応する前記部分転送メモリ領域との間の前記データ転送手段によるデータ転送を制御する
請求項８に記載のストレージ装置。
【請求項１０】
前記コントローラは、
前記仮想記憶媒体の領域と前記複数の記憶媒体の領域とを対応付ける情報を記憶するマッピングテーブルを備える
請求項９に記載のストレージ装置。
【請求項１１】
前記コントローラは、
前記部分領域毎に、前記部分領域に対応する、前記部分転送メモリ領域を指し示す前記第４のアドレス情報、前記記憶媒体の識別子、前記転送ストレージ領域を指し示す前記第３のアドレス情報、および前記サイズを含む転送ペアの情報を記憶するアクセス処理テーブルを備える
請求項１０に記載のストレージ装置。
【請求項１２】
前記コントローラは、前記アクセス要求の種類がリード要求であるとき、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域から前記部分領域に対応する前記バッファへのデータ転送を行い、前記部分領域に対応する前記記憶媒体の領域から前記部分領域に対応する前記バッファへのデータ転送の完了後に、前記部分領域に対応する前記バッファから前記ホストの前記メモリにおける前記部分領域に対応する領域へのデータ転送を開始するように構成されている
請求項１乃至１１の何れかに記載のストレージ装置。
【請求項１３】
前記コントローラは、前記アクセス要求の種類がライト要求であるとき、前記部分領域毎に、前記ホストの前記メモリにおける前記部分領域に対応する領域から前記部分領域に対応する前記バッファへのデータ転送を行い、前記ホストの前記メモリにおける前記部分領域に対応する領域から前記部分領域に対応する前記バッファへのデータ転送の完了後に、前記部分領域に対応する前記バッファから前記部分領域に対応する前記記憶媒体の領域へのデータ転送を開始するように構成されている
請求項１乃至１２の何れかに記載のストレージ装置。
【請求項１４】
前記データ転送手段は、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を行うように構成されている
請求項１乃至１３の何れかに記載のストレージ装置。
【請求項１５】
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラが接続されたノードと前記ホストのメモリとの間のデータ転送方法であって、
前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、
前記部分領域毎のバッファを確保し、
前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを行う
データ転送方法。
【請求項１６】
コンピュータを、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段として機能させ、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、データ転送方法、および記録媒体に関する。
【背景技術】
【０００２】
計算機システムにおけるストレージの共有、拡張を目的として、ストレージ装置に接続された記憶媒体の領域から構成された仮想的な記憶媒体（以下、仮想記憶媒体と記す）を、ネットワーク経由でホスト計算機（以下、ホストと記す）に提供することがある（例えば特許文献１参照）。【０００３】
そのようなストレージ装置は、仮想記憶媒体のアクセス対象領域を指定したリード要求をホストから受信すると、ストレージ装置にバッファを確保し、アクセス対象領域からデータをリードして上記バッファに格納する。このとき実際には、ストレージ装置は、アクセス対象領域に割り当てられた記憶媒体の領域からデータをリードしてバッファに格納する。そして、ストレージ装置は、全てのリードデータをバッファに格納し終えると、バッファからリードデータを読み出し、ネットワーク経由でホストのメモリへ転送する動作を開始する。【０００４】
また、ストレージ装置は、仮想記憶媒体のアクセス対象領域を指定したライト要求をホストから受信すると、ストレージ装置にバッファを確保し、ホストのメモリに格納されたライトデータをネットワーク経由で上記バッファに転送する。そして、ストレージ装置は、全てのライトデータをバッファに格納し終えると、バッファからライトデータを読み出し、仮想記憶媒体のアクセス対象領域に書き込む。このとき実際には、ストレージ装置は、アクセス対象領域に割り当てられた記憶媒体の領域にライトデータを書き込む。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】再特ＷＯ２０１６／００２３２５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したストレージ装置では、リード要求の場合、仮想記憶媒体のアクセス対象領域に割り当てられた記憶媒体の領域の全てのリードデータがバッファに格納された後でなければ、バッファからホストのメモリへのデータ転送を開始できないため、ホストから仮想記憶媒体に対するリード性能が低下する。【０００７】
また、上述したストレージ装置では、ライト要求の場合、ホストのメモリ上の全てのライトデータがバッファに格納された後でなければ、仮想記憶媒体のアクセス対象領域に割り当てられた記憶媒体の領域へバッファ上のライトデータを書き込めないため、ホストから仮想記憶媒体に対するライト性能が低下する。【０００８】
本発明の目的は、上述した課題、すなわち、ホストから仮想記憶媒体に対するアクセス性能が低下する、という課題を解決するストレージ装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一形態に係るストレージ装置は、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段とを備え、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている。【００１０】
また、本発明の他の形態に係るデータ転送方法は、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラが接続されたノードと前記ホストのメモリとの間のデータ転送方法であって、
前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、
前記部分領域毎のバッファを確保し、
前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを行う。【００１１】
また、本発明の他の形態に係るコンピュータ読み取り可能な記録媒体は、
コンピュータを、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段として機能させ、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
プログラムを記録する。
【発明の効果】
【００１２】
本発明は上述した構成を有することにより、ホストから仮想記憶媒体に対するアクセス性能を高めることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態における、全体のシステム構成を示す図である。
【図２】本発明の第１の実施形態における、アプリケーションからのアクセス要求に対する処理を実行するコントローラの構成を示す図である。
【図３】本発明の第１の実施形態における、仮想記憶媒体の各領域にマッピングされる記憶媒体の識別子、アドレスの対応関係を管理するマッピングテーブルの形式を例示する図である。
【図４】本発明の第１の実施形態における、転送ストレージ領域算出部がアクセス要求に対応する転送ストレージ領域を含む記憶媒体、及び記憶媒体上のアドレスを計算する手順を例示する図である。
【図５】本発明の第１の実施形態における、仮想記憶媒体上のアクセス対象の領域を表すアドレスとアクセスサイズから算出される、転送ストレージ領域と転送メモリ領域の先頭アドレスの対応関係を例示する図である。
【図６】本発明の第１の実施形態における、アプリケーションからのアクセス要求に対して必要となる、データ転送処理の情報を管理するアクセス処理テーブルの形式を例示する図である。
【図７Ａ】本発明の第１の実施形態における、アプリケーションから仮想記憶媒体に対するアクセス要求を、コントローラにおいて処理する手順を示したフローチャートである。
【図７Ｂ】本発明の第１の実施形態における、アプリケーションから仮想記憶媒体に対するアクセス要求を、コントローラにおいて処理する手順を示したフローチャートである。
【図８Ａ】本発明の第１の実施形態における、コントローラに含まれるアクセス処理実行管理部がアクセス要求に対するデータ転送処理を実行する手順を示したフローチャートである。
【図８Ｂ】本発明の第１の実施形態における、コントローラに含まれるアクセス処理実行管理部がアクセス要求に対するデータ転送処理を実行する手順を示したフローチャートである。
【図９】本発明の第２の実施形態に係るストレージ装置のブロック図である。
【図１０】本発明の第２の実施形態に係るストレージ装置におけるコントローラおよびデータ転送部を実現するハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１５】
[第１の実施形態]
本実施形態は、複数の記憶媒体の記憶領域を組み合わせた仮想的な記憶媒体に対して、ネットワークを経由してアクセスを行う際に発生するボトルネックを解消して、アクセス性能の向上を図る技術に関する。以下、本実施形態の背景技術、本実施形態が解決しようとする課題、課題を解決するための手段の概要、本実施形態の構成、本実施形態の動作、本実施形態の効果について、順に説明する。
【００１６】
［本実施形態の背景技術］
仮想記憶媒体に対するアクセスは、例えばｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｉｎｔｅｒｆａｃｅ）やＮＶＭ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃｓ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃｓ；登録商標；以下、ＮＶＭｅ−ｏＦと記す）のようなプロトコルを通して行われる。これらは、一般的な記憶媒体の規格であるＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｉｎｔｅｒｆａｃｅ）やＮＶＭ  Ｅｘｐｒｅｓｓ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ；登録商標；以下、ＮＶＭｅと記す）をネットワーク経由のアクセスに拡張したプロトコルであり、仮想記憶媒体に対して計算機に接続された各規格の記憶媒体と同様のアクセス手段を提供する。
【００１７】
また、これらの仮想記憶媒体に対するアクセスでは、ネットワークを介したデータ転送処理におけるオーバーヘッドの削減手段としてＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が用いられる。ＲＤＭＡはネットワークで接続された計算機間で、ネットワークカード（ＲＤＭＡ  Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ；以下、ＲＮＩＣと記す）が指定されたメモリアドレスに対するデータ転送を自動的に行うことで、転送処理のオーバーヘッドを削減する。前述のｉＳＣＳＩのＲＤＭＡ拡張であるｉＳＥＲ（ｉＳＣＳＩ  Ｅｘｔｅｎｓｉｏｎｓ  ｆｏｒ  ＲＤＭＡ）やＮＶＭｅ−ｏＦでは、仮想記憶媒体を提供する計算機と、仮想記憶媒体にアクセスする計算機のデータ転送にＲＤＭＡを用いることで、オーバーヘッドを削減してアクセス性能の向上を図る。
【００１８】
［本実施形態が解決しようとする課題］
仮想記憶媒体のデータ転送に対してＲＤＭＡを用いる場合、ＲＮＩＣが自動的にデータ転送を行えるように、ＲＤＭＡの開始前に転送対象となるデータの格納を完了する必要がある。そのため、仮想記憶媒体のリードアクセスのデータ転送においてＲＤＭＡを用いる場合、記憶媒体からリードされたデータが全て転送対象のメモリ領域であるバッファに格納されるまで待機してＲＤＭＡ転送を開始する。
【００１９】
一方、仮想記憶媒体は例えばＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）のように、複数の記憶媒体の領域にマッピングすることが可能である。複数の記憶媒体の領域にマッピングされる仮想記憶媒体にホストからアクセスを行う場合、アクセス対象の領域が複数の記憶媒体に跨ってマッピングされる場合が発生する。この場合は、マッピング先となる各記憶媒体に対してアクセスが行われる。つまり、前述のデータ転送にＲＤＭＡを用いるリードアクセスであれば、マッピング先となる全記憶媒体からのリード結果のバッファへの格納完了まで待機してＲＤＭＡ転送を開始する必要がある。
【００２０】
つまり、仮想記憶媒体に対するホストからのリードアクセス先が複数の記憶媒体にマッピングされる場合、アクセスが完了した記憶媒体のリードデータを先に転送できず、ホストから仮想記憶媒体に対するリード性能が低下する。特に、例えばＮＡＮＤ  Ｆｌａｓｈを記憶素子としたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のように、内部状態に応じてアクセス時間が大きく変化する記憶媒体を用いる場合、リードの完了を待つ記憶媒体数が増加するほど、ＲＤＭＡ転送の開始までの待機時間が増加する。
【００２１】
また、仮想記憶媒体に対するライトアクセスにＲＤＭＡを用いる場合も、全てのライトデータのバッファへの転送が完了するまで記憶媒体に対するライトを開始できず、仮想記憶媒体に対するライト性能が低下する。ＲＤＭＡによるデータ転送はＲＮＩＣが制御するため、転送途中のライトデータに関する状態の確認は困難である。つまり、ライト先の領域が複数の記憶媒体にマッピングされる場合、ホストからバッファへのデータ転送が完了している記憶媒体から先にライトアクセスを開始できず、性能低下の原因となる。
【００２２】
よって、仮想記憶媒体に対するアクセス先が複数の記憶媒体にマッピングされる場合の、ＲＤＭＡ転送の前後における待ち合わせ処理に起因するアクセス性能の低下が、本実施形態において解決する課題である。
【００２３】
［課題を解決するための手段の概要］
仮想記憶媒体のアクセス性能低下の原因となる、ＲＤＭＡ転送の前後における待ち合わせ処理の回避、緩和には、リードデータ、ライトデータの転送処理の分割が必要である。データ転送処理の分割により、リードアクセスであれば記憶媒体からのリードが完了したデータから先に転送を開始できる。また、ライトアクセスであればホストからの転送が完了したデータから個別に記憶媒体に対するライトを開始できる。一方で、データ転送処理の分割は、仮想記憶媒体のアクセス処理におけるオーバーヘッドの増加につながる。よって、データ転送処理の分割は、待ち合わせ処理の回避に必要な最低限の数量とすることが望ましい。
【００２４】
本実施形態では、ネットワークを経由した仮想記憶媒体のアクセス先が複数の記憶媒体にマッピングされる場合に発生するデータ転送の前後における待ち合わせ処理を削減し、仮想記憶媒体のアクセス性能を向上させる手段を提供する。そのために、仮想記憶媒体に対するアクセス要求の処理について、アクセス要求先に対応する記憶媒体毎にアクセスと、そのアクセスに関連したデータのＲＤＭＡ転送を独立して行う。アクセス要求に関する処理を記憶媒体毎に分離することで、記憶媒体のアクセス、ＲＤＭＡによるデータ転送の完了において他の記憶媒体に関連した処理の待ち合わせを行うことなく、各記憶媒体に関連した処理を並列化することでアクセス処理の完了時間を短縮する。
【００２５】
まず、仮想記憶媒体にアクセスを行うホストは、仮想記憶媒体に対するアクセスを提供する、ホストとは異なるノードであるターゲットノード上で動作するコントローラに対して、アクセス要求の種類（リード、ライト）と、仮想記憶媒体上のアクセス対象の領域を指し示すＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）等のアドレス情報を送ることでアクセスを要求する。
【００２６】
コントローラは、ホストからアクセス要求を受信すると、アクセス対象の領域の各部に対応する記憶媒体の識別子、及び記憶媒体内の領域を指し示すアドレスを、転送ストレージ領域として特定する。また、コントローラは、各記憶媒体の転送ストレージ領域について、仮想記憶媒体のアクセス対象の領域における対応箇所を表す、先頭からのオフセットを求める。
【００２７】
また、コントローラは、仮想記憶媒体のアクセス対象の領域に対する、ホスト上のリードデータまたはライトデータを格納するメモリ領域を指すアドレス情報を事前に、またはアクセス要求と共に受け取る。そして、コントローラは、上記アドレス情報から、各転送ストレージ領域に対応するホストのメモリアドレス空間上のアドレスを、転送メモリ領域として求める。各転送メモリ領域のアドレスは、仮想記憶媒体のアクセス対象の領域において先頭からのオフセットで表される、メモリ空間上のアドレスとして求められる。
【００２８】
さらに、コントローラは、ターゲットノードのメモリ上に、転送ストレージ領域と転送メモリ領域の各組に対して、転送データを中継するためのバッファである、転送バッファを確保する。つまり、仮想記憶媒体のアクセス対象領域のマップ先である、各記憶媒体に対して転送バッファを確保する。コントローラは、記憶媒体に対するリードデータ、ライトデータを転送バッファに格納し、転送ストレージ領域との間でデータ転送を行う。また、コントローラは、ＲＮＩＣに対して、転送バッファとホストの転送メモリ領域との間で、リードデータ、ライトデータのＲＤＭＡ転送を指示する。
【００２９】
ホストからのアクセス要求がリードである場合、コントローラは、アクセス対象の領域各部に対応する各記憶媒体にリードアクセスを行い、転送ストレージ領域のデータを転送バッファに格納する。そして、コントローラは、リードアクセスが完了した記憶媒体に対応する転送バッファについて、ホストの転送メモリ領域との間でリードデータのＲＤＭＡ転送をＲＮＩＣに指示する。このとき、コントローラは、他の転送バッファに対する転送ストレージからのリードデータの格納について完了、未完了の状態を問わず、リードデータのＲＤＭＡ転送を開始する。全てのリードデータについて、転送バッファから転送メモリ領域に対するＲＤＭＡ転送が完了すると、コントローラは、ホストに対してリードアクセス要求の完了を通知する。
【００３０】
一方、ホストからのアクセス要求がライトである場合、コントローラは、アクセス対象の領域各部に対応するホストの転送メモリ領域と、対応する転送バッファとの間でライトデータのＲＤＭＡ転送をＲＮＩＣに指示する。そして、コントローラは、ＲＤＭＡ転送が完了した転送バッファに対応する記憶媒体から順番にライトアクセスを行い、転送ストレージ領域に対してライトデータを格納する。このとき、コントローラは、他の転送バッファにおけるライトデータのＲＤＭＡ転送について完了、未完了の状態を問わず、記憶媒体のライトアクセスを開始する。全てのライトデータについて、転送バッファから記憶媒体上の転送ストレージ領域に対する格納が完了すると、コントローラは、ホストに対してライトアクセス要求の完了を通知する。
【００３１】
［本実施形態の構成］
図１は、本発明の第１の実施形態に係るストレージシステムの構成を例示する図である。図１を参照すると、本実施形態に係るコンピュータシステムは、ホスト１、ターゲットノード２、ネットワーク３を含む。ホスト１は、ホストコンピュータとも呼ぶ。ターゲットノード２は、ターゲットコンピュータあるいはストレージ装置とも呼ぶ。
【００３２】
ホスト１は、ホストメモリ１０とホスト通信部１１とを持つ。ホスト１は、ターゲットノード２に対して仮想記憶媒体２３のアクセス要求を行うアプリケーション１２が動作する。
【００３３】
ホストメモリ１０は、ホスト１に接続されたメモリである。ホストメモリ１０は、アプリケーション１２からアクセスされる。ホストメモリ１０は、アプリケーション１２から仮想記憶媒体２３に対するリード要求の結果であるリードデータ、及びライト要求で書き込まれるライトデータを格納する領域を持つ。この領域を、転送メモリ領域と定義する。ホストメモリ１０は、ホスト１のメモリとして使用されるＤＲＡＭ等の記憶デバイスである。或いはホストメモリ１０は、ホスト１に直接或いはネットワークを介して接続され、ホスト１のメモリアドレス空間を経由して入出力を行う、例えばＧＰＵやＦＰＧＡ、或いはその他のデバイスであってもよい。
【００３４】
ホスト通信部１１は、ネットワーク３を介してホスト１とターゲットノード２との間でデータの送受信を行う。また、ホスト通信部１１は、ホストメモリ１０、及びターゲットノード２に接続されたターゲットメモリ２０との間でＲＤＭＡ転送を行う。
【００３５】
アプリケーション１２は、ホスト１上で動作するソフトウェア、またはハードウェアである。アプリケーション１２は、ターゲットノード２に対して仮想記憶媒体２３のアクセス要求を行う。
【００３６】
ターゲットノード２は、ターゲットメモリ２０、ターゲット通信部２１、コントローラ２２、記憶媒体２４を持つ。
【００３７】
ターゲットメモリ２０は、ターゲットノード２に接続されたメモリである。ターゲットメモリ２０は、仮想記憶媒体２３に対するリードデータ、ライトデータを格納するためのバッファとして使用する。このバッファを、ターゲットバッファと定義する。
【００３８】
ターゲット通信部２１は、ネットワーク３を介してターゲットノード２とホスト１との間でデータの送受信を行う。また、ターゲット通信部２１は、ターゲットメモリ２０、及びホスト１に接続されたホストメモリ１０との間でＲＤＭＡ転送を行う。
【００３９】
コントローラ２２は、ターゲットノード２上で動作するソフトウェア、またはハードウェアである。コントローラ２２は、仮想記憶媒体２３のアクセス処理を行う。コントローラ２２は、仮想記憶媒体２３に対するアプリケーション１２からのアクセス要求を受け取る。コントローラ２２は、上記アクセス要求を実行するために、アクセス要求先に対応する記憶媒体２４の各領域に対するアクセス、及びホストメモリ１０とターゲットメモリ２０との間のリードデータ、ライトデータの転送を制御する。
【００４０】
仮想記憶媒体２３は、コントローラ２２によって記憶媒体２４の領域から構築される仮想的な記憶媒体である。仮想記憶媒体２３は、ホスト１のアプリケーション１２から、ネットワーク３を介して記憶媒体として認識、アクセスされる。アプリケーション１２からアクセスされる仮想記憶媒体２３上の領域を、アクセス対象領域と定義する。
【００４１】
記憶媒体２４は、仮想記憶媒体２３の領域がマッピングされる。仮想記憶媒体２３のアクセス対象領域がマッピングされる記憶媒体２４の領域を、転送ストレージ領域と定義する。記憶媒体２４は、ターゲットノード２にバスやネットワークを介して接続された、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のデバイスである。記憶媒体２４は、図１に示した単体のデバイスによる構成に限定されず、複数存在してもよい。
【００４２】
ネットワーク３は、ホスト１とターゲットノード２とを相互に接続する。ネットワーク３は、ホスト１とターゲットノード２との間のＲＤＭＡ転送をサポートする。また、ネットワーク３は、図１に示したようにホスト１とターゲットノード２のみを接続する形態に限定されない。例えば、ネットワーク３にホスト１とターゲットノード２以外の他のノード（コンピュータ）が接続される形態であってもよい。また、ホスト１とターゲットノード２とをスイッチを介して接続する形態であってもよい。
【００４３】
次に、本実施形態に係るコンピュータシステムにおいて、コントローラ２２がホスト１で動作するアプリケーション１２から仮想記憶媒体２３に対するアクセス要求を受け取り、実行する構成について、図２、図３、図４、図５、図６を用いて説明する。
【００４４】
図２を参照すると、コントローラ２２は、アクセス要求受信部２２１と、マッピングテーブル２２２と、転送ストレージ領域算出部２２３と、転送メモリ領域算出部２２４と、アクセス処理テーブル２２５と、アクセス処理実行管理部２２６と、データ転送制御部２２７とを備える。また、ターゲットメモリ２０は、ターゲットバッファ２００を備える。
【００４５】
アクセス要求受信部２２１は、ホスト１で動作するアプリケーション１２からアクセス要求を受け取る。アクセス要求は、リード、ライトのいずれであるかを表すアクセス要求の種類を含む。また、アクセス要求は、仮想記憶媒体２３上のアクセス対象領域の先頭を指し示す論理アドレスを含む。また、アクセス要求は、アクセス対象領域に対応するホストメモリ１０上のリードデータまたはライトデータの格納領域（転送メモリ領域）の先頭を指すメモリアドレスを含む。但し、アクセス対象領域に対応する転送メモリ領域のアドレス情報は、アクセス要求に含まれている必要はなく、アプリケーション１２がアクセス要求を行う前に予め受け取るようにしてもよい。アクセス要求受信部２２１は、受け取ったアクセス要求を処理するために、転送ストレージ領域算出部２２３、転送メモリ領域算出部２２４、アクセス処理テーブル２２５、アクセス処理実行管理部２２６を制御する。
【００４６】
マッピングテーブル２２２は、仮想記憶媒体２３上の各領域（以下、ブロックと呼ぶ）に対してマッピングされる記憶媒体２４の識別子、及びその識別子で特定される記憶媒体２４におけるアドレス（以下、物理アドレスと呼ぶ）と仮想記憶媒体２３における論理アドレスとの対応関係を事前に記憶して管理する。
【００４７】
図３は、マッピングテーブル２２２に含まれる情報を例示する図である。マッピングテーブル２２２は、仮想記憶媒体２３上のブロック毎に、マッピング先の記憶媒体２４の識別子、そのブロックの仮想記憶媒体２３における論理アドレスとマッピング先の記憶媒体２４における物理アドレスとの対応関係を記録したマッピングエントリ２２２１を含む。マッピングテーブル２２２の一つのマッピングエントリ２２２１で管理される仮想記憶媒体２３上のブロックを論理ブロック、論理ブロックにマッピングされる記憶媒体２４のブロックを物理ブロックと呼ぶ。各マッピングエントリ２２２１は、仮想記憶媒体２３の各論理ブロックの先頭アドレスである論理アドレス２２２２と、その各論理ブロックのマッピング先である記憶媒体２４の識別子を表す記憶媒体識別子２２２３と、その記憶媒体識別子２２２３の表す記憶媒体２４における、マッピング先の物理ブロックの先頭アドレスである物理アドレス２２２４と、マッピングされる論理ブロックと物理ブロックのサイズを表すマッピングサイズ２２２５とを含む。
【００４８】
例えば、マッピングテーブル２２２の１行目のマッピングエントリ２２２１は、仮想記憶媒体２３における論理アドレス０ｘ００４０００００を先頭アドレスとする６４ＭｉＢのサイズの論理ブロックは、記憶媒体識別子１の記憶媒体２４における物理アドレス０ｘ０８００００００を先頭にする６４ＭｉＢのサイズの物理ブロックにマッピングされていることを表している。また、マッピングテーブル２２２の２行目のマッピングエントリ２２２１は、仮想記憶媒体２３における論理アドレス０ｘ００８０００００を先頭アドレスとする１２８ＭｉＢのサイズの論理ブロックは、記憶媒体識別子１の記憶媒体２４における物理アドレス０ｘａ０００００００を先頭アドレスとする１２８ＭｉＢのサイズの物理ブロックにマッピングされていることを表している。
【００４９】
図３のマッピングテーブル２２２の１行目のマッピングエントリ２２２１に例示されるように、仮想記憶媒体２３における１つの論理ブロックは、高々１つの記憶媒体２４の記憶領域にマッピングされている。また、図３のマッピングテーブル２２２の１行目と２行目のマッピングエントリ２２２１に例示されるように、仮想記憶媒体２３における論理アドレスが隣接する２つの論理ブロックは、互いに異なる記憶媒体にマッピングされている。このように、仮想記憶媒体２３における各論理ブロックを、高々１つの記憶媒体２４の記憶領域にマッピングし、且つ、隣接する２つの論理ブロックを互いに異なる記憶媒体にマッピングすることにより、データ転送処理の分割を、待ち合わせ処理の回避に必要な最低限の数量とすることができる。
【００５０】
マッピングテーブル２２２の形式は、図３に示した形式に限定されない。マッピングテーブル２２２は、仮想記憶媒体２３の各論理ブロックに対応する記憶媒体２４の識別子および論理アドレスと物理アドレスとの対応を決定することができれば、どのような形式であってもよい。例えば各マッピングエントリ２２２１が、仮想記憶媒体２３の領域を先頭から一定サイズで区切った各論理ブロックに対応する場合は、論理ブロック毎の論理アドレス２２２２、及びマッピングサイズ２２２５は不要である。また、仮想記憶媒体２３と記憶媒体２４のマッピングにＲＡＩＤを用いることも可能である。その場合は、例えばＲＡＩＤ０であれば、ストライプを構成する記憶媒体２４の数量、及び各記憶媒体２４に対して連続的にマッピングされた領域である、チャンクのサイズから仮想記憶媒体２３に対応するマッピング先を計算可能である。このとき、ＲＡＩＤの構成情報を除いたマッピングテーブル２２２の各エントリの情報は不要である。
【００５１】
転送ストレージ領域算出部２２３は、マッピングテーブル２２２に基づいて、仮想記憶媒体２３のアクセス対象領域の或る論理アドレスから、その論理アドレスを含む論理ブロックに割り当てられた物理ブロックを有する記憶媒体２４の識別子と、その論理アドレスに対応する物理アドレスと、その物理アドレスから当該記憶媒体２４の連続領域にマッピングされるサイズとを決定する。また、転送ストレージ領域算出部２２３は、アクセス要求先の領域における、転送ストレージ領域に対応する領域の位置を示す、先頭からのオフセットを計算する。
【００５２】
図４は、転送ストレージ領域算出部２２３の動作説明図である。図４を参照すると、仮想記憶媒体２３の或る１つの論理ブロック４１Ｌは、記憶媒体２４の或る１つの物理ブロック４１Ｐに割り当てられている。論理ブロック４１Ｌの先頭の論理アドレスはＬｂ、物理ブロック４１Ｐの先頭の物理アドレスはＰｂ、記憶媒体２４の識別子はｘである。転送ストレージ領域算出部２２３は、アクセス要求受信部２２１から、論理ブロック４１Ｌ上の論理アドレスＬａが与えられると、マッピングテーブル４２における論理ブロック４１Ｌに対応するマッピングエントリ２２２１を参照して、論理アドレスＬａを含む論理ブロックに割り当てられた記憶媒体２４の識別子ｘを決定する。また、転送ストレージ領域算出部２２３は、論理アドレスＬａから論理ブロック４１Ｌの先頭の論理アドレスＬｂを減じて、論理アドレスＬａのオフセット（Ｌａ−Ｌｂ）を求める。そして、転送ストレージ領域算出部２２３は、物理ブロック４１Ｐの先頭の物理アドレスＰｂに上記オフセットを加算して、論理アドレスＬａに対応する物理アドレスＰａを計算する。即ち、Ｐａ＝Ｐｂ＋（Ｌａ−Ｌｂ）である。例えば、論理アドレスＬａがアプリケーション１２のアクセス要求で指定されたアクセス対象領域の先頭アドレスである場合、物理アドレスＰａは、転送ストレージ領域４３の先頭を指し示し、オフセット（Ｌａ−Ｌｂ）は転送ストレージ領域４３のオフセットを示す。また、転送ストレージ領域算出部２２３は、論理ブロック４１Ｌと物理ブロック４１ＰのマッピングサイズをＭＳとすると、物理アドレスＰａから識別子ｘの記憶媒体２４の連続領域にマッピングされるサイズを、ＭＳ−（Ｌａ−Ｌｂ）として計算する。
【００５３】
転送メモリ領域算出部２２４は、仮想記憶媒体２３のアクセス対象領域が複数の記憶媒体２４の転送ストレージ領域にマッピングされる場合、各転送ストレージ領域に対応するホストメモリ１０上の転送メモリ領域のアドレスを計算する。
【００５４】
図５は、転送メモリ領域算出部２２４の動作説明図であり、仮想記憶媒体２３上のアクセス対象領域５１と、アクセス対象領域５１にマッピングされる記憶媒体２４ａ、２４ｂ、２４ｃ上の転送ストレージ領域５２ａ、５２ｂ、５２ｃと、アクセス対象領域５１に対応するホストメモリ１０上の転送メモリ領域５３との関係の一例を示している。図５の例では、アクセス対象領域５１の先頭からサイズＳａの領域は、記憶媒体２４ａにマッピングされている。また、アクセス対象領域５１の続くサイズＳｂの領域は、記憶媒体２４ｂにマッピングされている。また、アクセス対象領域５１の残りのサイズＳｃの領域は、記憶媒体２４ｃにマッピングされている。本実施形態では、アプリケーション１２からアクセス対象領域５１に対するアクセス要求が行われた場合、アクセス対象領域５１をＳａ、Ｓｂ、Ｓｃのサイズを有する３つの領域に分割し、個々の分割単位でデータ転送を行う。そのため、転送メモリ領域５３は、Ｓａ、Ｓｂ、Ｓｃのサイズを有する３つの領域に分割して使用する。転送メモリ領域算出部２２４は、このように転送メモリ領域５３を分割したときにできる各分割領域の先頭のアドレスを計算する。
【００５５】
転送メモリ領域算出部２２４は、仮想記憶媒体２３のアクセス対象領域５１上の分割領域の論理アドレスをＬｘ、アクセス対象領域５１の先頭から論理アドレスＬｘまでのオフセットをＯＦ、転送メモリ領域５３の先頭のアドレスをＭとすると、論理アドレスＬｘに対応する転送メモリ領域５３のアドレスＭｘを、Ｍｘ＝Ｍ＋ＯＦとして計算する。
【００５６】
アクセス処理テーブル２２５は、アプリケーション１２から仮想記憶媒体２３に対する、各アクセス要求の処理に必要なデータ転送処理の情報を管理する。アクセス処理テーブル２２５は、アクセス要求受信部２２１から更新され、アクセス処理実行管理部２２６およびデータ転送制御部２２７から参照される。図６は、アクセス処理テーブル２２５に含まれる情報を例示する図である。アクセス処理テーブル２２５は、アプリケーション１２からの各アクセス要求に１対１に対応するアクセス要求エントリ２２５１を格納する。各アクセス要求エントリ２２５１は、アクセス種別２２５２と転送ペア一覧とを含む。転送ペア一覧は、アクセス要求に関連する転送メモリ領域と転送ストレージ領域の組を表す１以上の転送ペア２２５３を含む。アクセス要求エントリ２２５１は、アプリケーション１２からのアクセス要求が複数に分割された結果、複数の転送メモリ領域と転送ストレージ領域の組に対応する場合、それぞれについて転送ペア２２５３を含む。また、転送ペア２２５３は、ホストメモリ１０上の転送メモリ領域の先頭を指すメモリアドレス２２５４、転送ストレージ領域を含む記憶媒体２４を指すストレージ識別子２２５５、転送ストレージ領域の先頭を指す記憶媒体アドレス２２５６、及び転送データのサイズを表す転送サイズ２２５７から構成される。
【００５７】
アクセス処理テーブル２２５の形式は、図６に示した形式に限定されない。例えばアクセス種別２２５２をライトアクセスに関するフラグとして、フラグがセットされているアクセスをライト、セットされていないアクセスをリードとする形式でもよい。また、転送ペア２２５３に、データ転送が終了したことを表すフラグを含んでもよい。
【００５８】
アクセス処理実行管理部２２６は、アクセス処理テーブル２２５を参照して、アプリケーション１２から仮想記憶媒体２３に対するアクセス要求の処理に必要なデータ転送の実行状況を管理する。アクセス処理実行管理部２２６は、アクセス処理テーブル２２５から未処理の転送ペア２２５３を選択してターゲットメモリ２０上にターゲットバッファ２００を確保する。そして、データ転送制御部２２７により、転送メモリ領域と転送ストレージ領域との間でリードデータまたはライトデータの転送処理を開始する。また、アクセス処理実行管理部２２６は、転送ペア２２５３に関するデータ転送処理が終了すると、確保されたターゲットバッファ２００を開放する。
【００５９】
データ転送制御部２２７は、アクセス処理実行管理部２２６から指示された転送ペア２２５３について、ホストメモリ１０上の転送メモリ領域と確保されたターゲットバッファ２００との間のデータ転送、及びターゲットバッファ２００と記憶媒体２４上の転送ストレージ領域との間でデータ転送を実行する。
【００６０】
転送ペア２２５３に対するアクセス種別２２５２がリードである場合、データ転送制御部２２７は、最初にストレージ識別子２２５５で表される記憶媒体２４にリードアクセスを行い、転送ストレージ領域からターゲットバッファ２００に対してリードデータを転送する。そして、データ転送制御部２２７は、ターゲットバッファ２００に対するデータ転送が完了すると、次にターゲット通信部２１に指示して、ターゲットバッファ２００に格納されたリードデータを、ホストメモリ１０の転送メモリ領域に転送する。
【００６１】
一方、転送ペア２２５３に対するアクセス種別２２５２がライトである場合、データ転送制御部２２７は、最初にターゲット通信部２１に指示して、ホストメモリ１０の転送メモリ領域に格納されたライトデータを、ターゲットバッファ２００に転送する。そして、データ転送制御部２２７は、ターゲットバッファ２００に対するデータ転送が完了すると、次にストレージ識別子２２５５で表される記憶媒体２４にライトアクセスを行い、ターゲットバッファ２００から転送ストレージ領域に対してライトデータを転送する。
【００６２】
ターゲットバッファ２００は、各転送ペア２２５３に対してターゲットメモリ２０上に確保される。ターゲットバッファ２００は、転送メモリ領域と転送ストレージ領域との間で転送されるリードデータまたはライトデータを一時的に保持する。
【００６３】
［本実施形態の動作］
次に、図１、図２、図３、図６、図７Ａ、図７Ｂを参照して本発明の実施形態における、アプリケーション１２から仮想記憶媒体２３に対するアクセス要求を処理する動作を説明する。
【００６４】
アプリケーション１２は、ターゲットノード２の仮想記憶媒体２３に対するアクセス要求をホスト通信部１１へ送信する。このアクセス要求は、以下のパラメータを含む。
（ａ）アクセス要求の種類
（ｂ）仮想記憶媒体２３上のアクセス対象領域を指し示す論理アドレス
（ｃ）当該アクセス対象領域のサイズ
（ｄ）当該アクセス対象領域に対応する、ホスト１のメモリ空間上の領域を指し示すアドレス
【００６５】
アクセス要求の種類は、リードとライトの２種類がある。アクセス対象領域を指し示す論理アドレスは、当該アクセス対象領域の先頭の論理アドレスである。即ち、アクセス対象領域は連続した論理アドレスを持ち、その先頭の論理アドレスがアクセス要求で指定される。アクセス対象領域に対応する、ホスト１のメモリ空間上の領域を指し示すアドレスは、リード要求の結果であるリードデータあるいはライト要求で書き込まれるライトデータを格納するホストメモリ１０のメモリ領域の先頭アドレスである。
【００６６】
ホスト通信部１１は、アプリケーション１２から受け取ったアクセス要求を、ネットワーク３を通じてターゲットノード２のターゲット通信部２１へ送信する。ターゲット通信部２１は、受信したアクセス要求をコントローラ２２へ送信する。
【００６７】
コントローラ２２のアクセス要求受信部２２１は、アプリケーション１２から仮想記憶媒体２３に対するアクセス要求を受信する（ステップＳ１０１）。
【００６８】
次にアクセス要求受信部２２１は、ステップＳ１０１で受信したアクセス要求に対応するアクセス要求エントリ２２５１をアクセス処理テーブル２２５上に作成し、そのアクセス種別２２５２の欄に上記受信したアクセス要求に含まれるアクセス種別を登録する（ステップＳ１０２）。アクセス要求受信部２２１は、この時点では、作成したアクセス要求エントリ２２５１の転送ペア一覧の欄は空白にしておく。
【００６９】
次に、アクセス要求受信部２２１は、転送ストレージ領域および転送メモリ領域における着目点を表すオフセットを０に初期化する（ステップＳ１０３）。そして、アクセス要求受信部２２１は、初期化したオフセットに注目する。
【００７０】
次に、アクセス要求受信部２２１は、アクセス要求に含まれる仮想記憶媒体２３におけるアクセス対象領域の先頭の論理アドレスに注目中オフセットの値を加えることで、仮想記憶媒体２３上のアクセス対象領域の着目点の論理アドレスを算出する。（ステップＳ１０４）
【００７１】
次に、アクセス要求受信部２２１は、転送ストレージ領域算出部２２３に対してステップＳ１０４で求めた仮想記憶媒体２３上の着目点の論理アドレスを通知する。転送ストレージ領域算出部２２３は、マッピングテーブル２２２を参照して、通知された仮想記憶媒体２３上の着目点の論理アドレスに対応する、転送ストレージ領域が含まれる記憶媒体２４の識別子、及び転送ストレージ領域における着目点の物理アドレスを求める（ステップＳ１０５）。
【００７２】
次に、アクセス要求受信部２２１は、転送メモリ領域算出部２２４に対してホストメモリ１０のメモリ領域の先頭アドレスと注目中オフセットを通知する。転送メモリ領域算出部２２４は、通知されたホストメモリ１０のメモリ領域の先頭アドレスに注目中オフセットを加算して、仮想記憶媒体２３上の着目点の論理アドレスに対応する、ホストメモリ１０の転送メモリ領域における着目点のアドレスを求める（ステップＳ１０６）。
【００７３】
次に、転送ストレージ領域算出部２２３は、マッピングテーブル２２２を参照して、上記通知された仮想記憶媒体２３上の着目点の論理アドレスから記憶媒体２４の連続領域にマッピングされるサイズを算出する（ステップＳ１０７）。具体的には、まず、転送ストレージ領域算出部２２３は、上記着目点の論理アドレスを包含する仮想記憶媒体２３の論理ブロックに対応するマッピングエントリ２２２１を決定する。次に、転送ストレージ領域算出部２２３は、上記着目点の論理アドレスと、上記決定した対応するマッピングエントリ２２２１の論理アドレス２２２２との差分を計算する。そして、転送ストレージ領域算出部２２３は、計算した差分を対応するマッピングエントリ２２２１のマッピングサイズ２２２５から差し引くことで、連続領域にマッピングされるサイズを算出する。
【００７４】
次に、アクセス要求受信部２２１は、以下のような処理を行う（ステップＳ１０８）。まず、アクセス要求受信部２２１は、アクセス要求で指定されたアクセス対象領域のサイズから注目中オフセットを差し引いた値を未転送領域サイズとして算出する。次に、アクセス要求受信部２２１は、上記未転送領域サイズとステップＳ１０７で求めた、記憶媒体の連続領域にマッピングされるサイズとを比較する。次に、アクセス要求受信部２２１は、上記２つのサイズの最小値を、転送データのサイズに決定する。
【００７５】
次に、アクセス要求受信部２２１は、ステップＳ１０５で求めた記憶媒体２４の識別子と転送ストレージ領域における着目点の物理アドレス、ステップＳ１０６で求めた転送メモリ領域における着目点のアドレス、ステップＳ１０８で求めた転送データのサイズの組み合わせを、ステップＳ１０２においてアクセス処理テーブル２２５に作成したアクセス要求エントリ２２５１の転送ペア２２５３の欄に登録する（ステップＳ１０９）。即ち、記憶媒体２４の識別子、転送ストレージ領域における着目点の物理アドレス、転送メモリ領域における着目点のアドレス、転送データのサイズは、それぞれ転送ペア２２５３におけるストレージ識別子２２５５、記憶媒体アドレス２２５６、メモリアドレス２２５４、転送サイズ２２５７に対応する。
【００７６】
次に、アクセス要求受信部２２１は、注目中オフセットにステップＳ１０８で求めた転送データのサイズを加算する（ステップＳ１１０）。そして、アクセス要求受信部２２１は、加算後のオフセットに注目を移す。
【００７７】
次に、アクセス要求受信部２２１は、注目中オフセットの値とアクセス要求で指定されたアクセス対象領域のサイズとを比較する。アクセス要求受信部２２１は、注目中オフセットの値がアクセス対象領域のサイズ未満の場合（ステップＳ１１１のＹｅｓ判定）、ステップＳ１０４からの処理を再度実行する。
【００７８】
一方、注目中オフセットの値がアクセス対象の領域のサイズ以上の場合（ステップＳ１１１のＮｏ判定）、アクセス要求受信部２２１はアクセス処理実行管理部２２６に対して、アクセス処理を実行すべきアクセス処理テーブル２２５のアクセス要求エントリ２２５１を指示する（ステップＳ１１２）。
【００７９】
アクセス処理実行管理部２２６は、アクセス処理テーブル２２５を参照して、ステップＳ１１２で指示されたアクセス要求エントリ２２５１に従いアクセス要求に対する処理を実行する（ステップＳ１１３）。
【００８０】
アクセス要求受信部２２１は、アクセス処理実行管理部２２６において指示したアクセス要求エントリ２２５１に従うアクセス要求に対する処理が完了すると、アクセス処理テーブル２２５に登録された、当該指示したアクセス要求エントリ２２５１を削除する。また、アクセス要求受信部２２１は、当該アクセス要求エントリ２２５１に係るアクセス要求を行ったホスト１で動作するアプリケーション１２に対してアクセス要求の完了を通知して、動作を終了する（ステップＳ１１４）。
【００８１】
以上のステップＳ１０１からＳ１１４までの処理を行うことにより、本発明の実施形態における、アプリケーション１２から仮想記憶媒体２３に対するアクセス要求を処理する動作が完了する。ステップＳ１０１からＳ１１４までの処理順序は、必ずしも図７Ａ、図７Ｂに示した順序である必要はない。例えば、ステップＳ１０４からＳ１０５、ステップＳ１０６、ステップＳ１０７の各処理は同時期に実行可能であり、或いは順序を入れ替えた実行が可能である。また、ステップＳ１０１においてアプリケーション１２から受信する、ホスト１のメモリ空間上の領域を指し示すアドレスは、アクセス要求よりも前に受け取ってもよい。
【００８２】
次に、図１、図２、図３、図６、図８Ａ、図８Ｂを参照して本発明の実施形態における、図７Ａおよび図７Ｂで示されたアプリケーション１２から仮想記憶媒体２３に対するアクセス要求を処理する動作における、ステップＳ１１３のアクセス処理実行管理部２２６による、アクセス要求に対する処理を実行する動作を説明する。
【００８３】
アクセス処理実行管理部２２６は、アクセス処理テーブル２２５における、処理対象のアクセス要求に対応するアクセス要求エントリ２２５１を参照して、任意の転送ペア２２５３を１つ選択する（ステップＳ２０１）。そして、アクセス処理実行管理部２２６は、この選択した転送ペア２２５３に注目する。
【００８４】
次に、アクセス処理実行管理部２２６は、注目中転送ペア２２５３に対して、ターゲットメモリ２０上に注目中転送ペア２２５３中の転送サイズ２２５７以上のサイズを持つターゲットバッファ２００を確保する（ステップＳ２０２）。
【００８５】
次に、アクセス処理実行管理部２２６は、データ転送制御部２２７に対して注目中転送ペア２２５３のデータ転送処理の実行を指示する（ステップＳ２０３）。
【００８６】
処理対象のアクセス要求のアクセス種別２２５２がリードの場合（ステップＳ２０４のＹｅｓ判定）、データ転送制御部２２７は、以下の処理を行う（ステップＳ２０５）。まず、データ転送制御部２２７は、アクセス処理テーブル２２５を参照して、注目中転送ペア２２５３のストレージ識別子２２５５、記憶媒体アドレス２２５６、転送サイズ２２５７を取得する。次にデータ転送制御部２２７は、注目中転送ペア２２５３のストレージ識別子２２５５の指し示す記憶媒体２４に対して、リードを要求する。このリードの要求では、リードアクセスする転送ストレージ領域を指定するために注目中転送ペア２２５３の記憶媒体アドレス２２５６と転送サイズ２２５７とを指定し、リードしたデータの格納先を指定するためにステップＳ２０２で確保したターゲットバッファ２００の先頭アドレスを指定する。
【００８７】
ステップＳ２０５でリードアクセスを指示された記憶媒体２４は、指定された記憶媒体アドレス２２５６を先頭とし、指定された転送サイズ２２５７をサイズとする転送ストレージ領域からデータをリードし、指定されたターゲットバッファ２００にリードデータを格納し、完了をデータ転送制御部２２７に通知する（ステップＳ２０６）。
【００８８】
データ転送制御部２２７は、ターゲットバッファ２００に対するリードデータの格納完了を確認後、ターゲット通信部２１に対して、ターゲットバッファ２００からホストメモリ１０の転送メモリ領域へのデータ転送指示を行う（ステップＳ２０７）。データ転送制御部２２７は、上記転送指示では、ターゲット通信部２１に対して、転送元として、ターゲットバッファ２００の先頭アドレスと注目中転送ペア２２５３の転送サイズ２２５７とを指定する。また、データ転送制御部２２７は、上記転送指示では、ターゲット通信部２１に対して、転送先として、注目中転送ペア２２５３のメモリアドレス２２５４を指定する。
【００８９】
ターゲット通信部２１は、上記転送指示に従い、以下のようなデータ転送を行う（ステップＳ２０８）。まず、ターゲット通信部２１は、転送元として指定されたターゲットバッファ２００に格納されたリードデータを読み出して、ネットワーク３で接続されたホスト通信部１１に対して転送し、転送先として指定されたホストメモリ１０のメモリアドレス２２５４で指定される領域に対する格納を指示する。ホスト通信部１１は、ターゲット通信部２１からの指示を受けて、リードデータをホストメモリ１０のメモリアドレス２２５４で指定される転送メモリ領域に格納する。ホスト通信部１１による転送メモリ領域に対するリードデータの格納が完了すると、ターゲット通信部２１は、データ転送制御部２２７に対してデータ転送の完了を通知する。そして、その後、処理はステップＳ２１３へと進む。
【００９０】
一方、処理対象のアクセス要求のアクセス種別２２５２がライトの場合（ステップＳ２０４のＮｏ判定）、データ転送制御部２２７は、以下の処理を行う（ステップＳ２０９）。まず、データ転送制御部２２７は、アクセス処理テーブル２２５を参照して、注目中転送ペア２２５３のメモリアドレス２２５４、転送サイズ２２５７を取得する。次に、データ転送制御部２２７は、ターゲット通信部２１に対して、ホストメモリ１０からターゲットバッファ２００への転送指示を行う。データ転送制御部２２７は、上記転送指示では、ターゲット通信部２１に対して、転送元として、注目中転送ペア２２５３のメモリアドレス２２５４と注目中転送ペア２２５３の転送サイズ２２５７とを指定する。また、データ転送制御部２２７は、上記転送指示では、ターゲット通信部２１に対して、転送先として、ターゲットバッファ２００の先頭アドレスを指定する。
【００９１】
ターゲット通信部２１は、上記転送指示に従って、以下のような転送を行う（ステップＳ２１０）。まず、ターゲット通信部２１は、ホスト通信部１１を通じてホストメモリ１０のメモリアドレス２２５４および転送サイズ２２５７で指定される転送メモリ領域からライトデータを読み出し、ネットワーク３を経由してターゲットバッファ２００に格納する。次にターゲット通信部２１は、ターゲットバッファ２００に対するライトデータの格納の完了をデータ転送制御部２２７に通知する。
【００９２】
データ転送制御部２２７は、ターゲットバッファ２００に対するライトデータの格納完了を確認後、注目中転送ペア２２５３のストレージ識別子２２５５の指し示す記憶媒体２４に対して、ターゲットバッファ２００から記憶媒体２４へのライト要求を行う（ステップＳ２１１）。このライト要求では、データ転送制御部２２７は、記憶媒体２４に対して、ライト元として、ターゲットバッファ２００の先頭アドレスと注目中転送ペア２２５３の転送サイズ２２５７とを指定する。また、データ転送制御部２２７は、上記ライト要求では、ライト先として、注目中転送ペア２２５３の記憶媒体アドレス２２５６を指定する。
【００９３】
ステップＳ２１１でライトを要求された記憶媒体２４は、指定されたライトアクセスを行い、指定されたターゲットバッファ２００のライトデータを、指定された記憶媒体アドレス２２５６を先頭アドレスとする転送ストレージ領域に格納して、完了をデータ転送制御部２２７に通知する（ステップＳ２１２）。その後、処理はステップＳ２１３へと進む。
【００９４】
ステップＳ２１３では、データ転送制御部２２７は、注目中転送ペア２２５３に関する転送処理の実行完了を、アクセス処理実行管理部２２６に通知する。
【００９５】
アクセス処理実行管理部２２６は、転送処理の実行が完了した注目中転送ペア２２５３に対して確保された、ターゲットバッファ２００を開放する（ステップＳ２１４）。また、アクセス処理実行管理部２２６は、転送処理の実行が完了した注目中転送ペア２２５３に関する情報を、アクセス処理テーブル２２５の処理対象のアクセス要求に対応するアクセス要求エントリ２２５１から削除する（ステップＳ２１５）。
【００９６】
次に、アクセス処理実行管理部２２６は、処理対象のアクセス要求に対応するアクセス要求エントリ２２５１に含まれる、転送ペア２２５３の個数を確認する（ステップＳ２１６）。ステップＳ２１６において確認した、転送ペア２２５３の個数が１個以上である場合（ステップＳ２１７のＹｅｓ判定）、アクセス処理実行管理部２２６はステップＳ２０１からの処理を再度実行する。また、ステップＳ２１６において確認した、転送ペア２２５３の個数が０個である場合（ステップＳ２１７のＮｏ判定）、アクセス処理実行管理部２２６はアクセス要求の処理完了を、アクセス要求受信部２２１に通知して、動作を終了する（ステップＳ２１８）。
【００９７】
以上のステップＳ２０１からＳ２１８までの処理を行うことにより、本発明の実施形態における、ステップＳ１１３のアクセス処理実行管理部２２６による、アクセス要求に対する処理を実行する動作が完了する。ステップＳ２０１からＳ２１８までの処理順序は、必ずしも図８Ａおよび図８Ｂに示した順序である必要はない。例えば、ステップＳ２１４とステップＳ２１５の処理は同時期に実行可能であり、或いは順序を入れ替えた実行が可能である。また、ステップＳ２０１からステップＳ２１５までの処理は、複数の転送ペア２２５３に対して並列に実行してもよい。
【００９８】
［本実施形態の効果］
本実施形態を適用することで、ホストから複数の記憶媒体の記憶領域を組み合わせた仮想記憶媒体に対するアクセスにおいて、アクセス先が複数記憶媒体にマッピングされる場合に、ＲＤＭＡ転送の前後における待ち合わせ処理の発生を回避して、アクセス性能の向上を実現することができる。また、記憶媒体の領域とバッファとの間のデータ転送とバッファとホストのメモリとの間のデータ転送とを並列化することができる。
【００９９】
[第２の実施形態]
図９は、本発明の第２の実施形態に係るストレージ装置６のブロック図である。ストレージ装置６は、コントローラ６１と、メモリ６２と、仮想記憶媒体６３と、複数の記憶媒体６４と、データ転送部６５とを含んで構成されている。ストレージ装置６は、ネットワーク７を介してホストコンピュータ８に相互に通信可能に接続されている。
【０１００】
仮想記憶媒体６３は、複数の記憶媒体６４の領域から構成される仮想的な記憶媒体である。データ転送部６５は、ストレージ装置６とホストコンピュータ８のホストメモリ８１との間のデータ転送をネットワーク７経由で行うように構成されている。メモリ６２は、仮想記憶媒体６３からリードしたデータ或いは仮想記憶媒体６３にライトするデータを一時的に記憶するためのバッファ６２１に利用される。
【０１０１】
コントローラ６１は、仮想記憶媒体６３に対するアクセスを提供する。コントローラ６１は、ホストコンピュータ８からネットワーク７を経由して仮想記憶媒体６３に対するアクセス要求を受信する。コントローラ６１は、受信したアクセス要求に応じた処理を行うために、仮想記憶媒体６３、記憶媒体６４、メモリ６２、およびデータ転送部６５を制御する。例えば、コントローラ６１は、アクセス要求によってアクセスされる仮想記憶媒体６３上のアクセス対象領域を１以上の部分領域に分割する。また、コントローラ６１は、部分領域毎のバッファ６２１をメモリ６２に確保する。また、コントローラ６１は、仮想記憶媒体６３の部分領域毎に、部分領域に対応する記憶媒体６４の領域と部分領域に対応するバッファ６２１との間のデータ転送を制御する。また、コントローラ６１は、仮想記憶媒体６３の部分領域毎に、データ転送部６５による部分領域に対応するバッファ６２１とホストメモリ８１における部分領域に対応する領域との間のデータ転送を制御する。
【０１０２】
コントローラ６１およびデータ転送部６５は、例えば図１０に示すように、１以上のマイクロプロセッサ等の演算処理部９１０と、メモリやハードディスク等の記憶部９２０とを有する情報処理装置９３０と、プログラム９４０とで実現することができる。プログラム９４０は、情報処理装置９３０の立ち上げ時等に外部のコンピュータ読み取り可能な記録媒体からメモリに読み込まれ、演算処理部９１０の動作を制御することにより、演算処理部９１０上に、コントローラ６１、およびデータ転送部６５を実現する。
【０１０３】
以上のように構成されたストレージ装置６は、以下のように動作する。
【０１０４】
ストレージ装置６のコントローラ６１は、ネットワーク７を介してホストコンピュータ８から仮想記憶媒体６３に対するアクセス要求を受信すると、仮想記憶媒体６３上のアクセス対象領域を部分領域に分割する。好ましくは、コントローラ６１は、仮想記憶媒体６３上のアクセス対象領域を、高々１つの記憶媒体６４の領域から構成される部分領域に分割する。また好ましくは、コントローラ６１は、部分領域の個数が最小となるように、仮想記憶媒体６３上のアクセス対象領域を部分領域に分割する。
【０１０５】
次に、コントローラ６１は、部分領域毎のバッファ６２１をメモリ６２に確保する。次に、コントローラ６１は、部分領域毎に、部分領域に対応する記憶媒体６４の領域と部分領域に対応するバッファ６２１との間のデータ転送を行う。また、コントローラ６１は、データ転送部６５による部分領域に対応するバッファ６２１とホストメモリ８１における部分領域に対応する領域との間のデータ転送を行う。
【０１０６】
例えば、コントローラ６１は、アクセス要求の種類がリード要求であるとき、部分領域毎に、部分領域に対応する記憶媒体６４の領域から部分領域に対応するバッファ６２１へのデータ転送を行い、当該データ転送の完了後に、上記バッファ６２１からホストメモリ８１における部分領域に対応する領域へのデータ転送を開始する。また、例えば、コントローラ６１は、アクセス要求の種類がライト要求であるとき、部分領域毎に、ホストメモリ８１における部分領域に対応する領域から部分領域に対応するバッファ６２１へのデータ転送を行い、当該データ転送の完了後に、上記バッファ６２１から部分領域に対応する記憶媒体６４の領域へのデータ転送を開始する。
【０１０７】
このように本実施形態に係るストレージ装置６によれば、ホストコンピュータ８から仮想記憶媒体６３に対するアクセス性能が向上する。その理由は、ストレージ装置６は、アクセス要求によってアクセスされる仮想記憶媒体６３上のアクセス対象領域を部分領域に分割し、部分領域毎のバッファ６２１を確保し、部分領域毎に、部分領域に対応する記憶媒体６４の領域と部分領域に対応するバッファ６２１との間のデータ転送と、部分領域に対応するバッファ６２１とホストメモリ８１における部分領域に対応する領域との間のデータ転送とを行うため、リード要求の場合、バッファ６２１にリードデータが格納された部分領域からホストメモリへのデータ転送を開始でき、ライト要求の場合、バッファ６２１にライトデータが格納された部分領域から記録媒体への書き込みを開始できるためである。
【０１０８】
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【０１０９】
なお、本発明は、日本国にて２０１８年６月２２日に特許出願された特願２０１８−１１９２４０の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【産業上の利用可能性】
【０１１０】
本発明は、計算機に接続された記憶媒体の領域から構成された仮想記憶媒体を、ネットワーク経由で他の計算機に提供するサービス等に利用できる。【０１１１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段とを備え、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
ストレージ装置。
［付記２］
前記コントローラは、前記分割では、前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割する
付記１に記載のストレージ装置。
［付記３］
前記コントローラは、前記分割では、前記部分領域の個数が最小となるように分割する
付記２に記載のストレージ装置。
［付記４］
前記コントローラは、
前記ホストから、前記アクセス要求の種類と、前記アクセス対象領域を指し示す第１のアドレス情報と、前記アクセス対象領域との間でデータを送受信する前記メモリ上の転送メモリ領域を指し示す第２のアドレス情報とを取得するアクセス要求受信手段を備える
付記３に記載のストレージ装置。
［付記５］
前記コントローラは、
前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割し、それぞれの前記部分領域のサイズと、それぞれの前記部分領域に対応する前記記憶媒体の識別子および前記記憶媒体の領域である転送ストレージ領域を指し示す第３のアドレス情報を求める転送ストレージ領域算出手段を備える
付記４に記載のストレージ装置。
［付記６］
前記コントローラは、
前記転送メモリ領域を、それぞれの前記部分領域に対応する部分転送メモリ領域に分割し、それぞれの前記部分転送メモリ領域を指し示す第４のアドレス情報を求める転送メモリ領域算出手段を備える
付記５に記載のストレージ装置。
［付記７］
前記コントローラは、
前記部分領域毎に、前記ノードに前記バッファを確保するアクセス処理実行管理手段を備える
付記６に記載のストレージ装置。
［付記８］
前記コントローラは、
前記部分領域に対応する前記転送ストレージ領域と前記部分領域に対応する前記バッファとの間のデータ転送を制御するデータ転送制御手段を備える
付記７に記載のストレージ装置。
［付記９］
前記データ転送制御手段は、前記部分領域に対応する前記バッファと前記部分領域に対応する前記部分転送メモリ領域との間の前記データ転送手段によるデータ転送を制御する
付記８に記載のストレージ装置。
［付記１０］
前記コントローラは、
前記仮想記憶媒体の領域と前記複数の記憶媒体の領域とを対応付ける情報を記憶するマッピングテーブルを備える
付記９に記載のストレージ装置。
［付記１１］
前記コントローラは、
前記部分領域毎に、前記部分領域に対応する、前記部分転送メモリ領域を指し示す前記第４のアドレス情報、前記記憶媒体の識別子、前記転送ストレージ領域を指し示す前記第３のアドレス情報、および前記サイズを含む転送ペアの情報を記憶するアクセス処理テーブルを備える
付記１０に記載のストレージ装置。
［付記１２］
前記コントローラは、前記アクセス要求の種類がリード要求であるとき、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域から前記部分領域に対応する前記バッファへのデータ転送を行い、前記部分領域に対応する前記記憶媒体の領域から前記部分領域に対応する前記バッファへのデータ転送の完了後に、前記部分領域に対応する前記バッファから前記ホストの前記メモリにおける前記部分領域に対応する領域へのデータ転送を開始するように構成されている
付記１乃至１１の何れかに記載のストレージ装置。
［付記１３］
前記コントローラは、前記アクセス要求の種類がライト要求であるとき、前記部分領域毎に、前記ホストの前記メモリにおける前記部分領域に対応する領域から前記部分領域に対応する前記バッファへのデータ転送を行い、前記ホストの前記メモリにおける前記部分領域に対応する領域から前記部分領域に対応する前記バッファへのデータ転送の完了後に、前記部分領域に対応する前記バッファから前記部分領域に対応する前記記憶媒体の領域へのデータ転送を開始するように構成されている
付記１乃至１２の何れかに記載のストレージ装置。
［付記１４］
前記データ転送手段は、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を行うように構成されている
付記１乃至１３の何れかに記載のストレージ装置。
［付記１５］
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラが接続されたノードと前記ホストのメモリとの間のデータ転送方法であって、
前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、
前記部分領域毎のバッファを確保し、
前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを行う
データ転送方法。
［付記１６］
コンピュータを、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段として機能させ、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
プログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１１２】
１  ホスト
１０  ホストメモリ
１１  ホスト通信部
１２  アプリケーション
２  ターゲットノード
２０  ターゲットメモリ
２００  ターゲットバッファ
２１  ターゲット通信部
２２  コントローラ
２２１  アクセス要求受信部
２２２  マッピングテーブル
２２２１  マッピングエントリ
２２２２  論理アドレス
２２２３  記憶媒体識別子
２２２４  物理アドレス
２２２５  マッピングサイズ
２２３  転送ストレージ領域算出部
２２４  転送メモリ領域算出部
２２５  アクセス処理テーブル
２２５１  アクセス要求エントリ
２２５２  アクセス種別
２２５３  転送ペア
２２５４  メモリアドレス
２２５５  ストレージ識別子
２２５６  記憶媒体アドレス
２２５７  転送サイズ
２２６  アクセス処理実行管理部
２２７  データ転送制御部
２３  仮想記憶媒体
２４  記憶媒体
３  ネットワーク
４１  記憶領域
４２  マッピングテーブル
４２１  論理アドレス
４２２  記憶媒体識別子
４２３  物理アドレス
４３  転送ストレージ領域
５１  アクセス対象領域
５２  転送ストレージ領域
５３  転送メモリ領域
６  ストレージ装置
６１  コントローラ
６２  メモリ
６２１  バッファ
６３  仮想記憶媒体
６４  記憶媒体
７  ネットワーク
８  ホストコンピュータ
８１  ホストメモリ
９１０  演算処理部
９２０  記憶部
９３０  情報処理装置
９４０  プログラム
【図１】
2019244656.tif 000003
【図２】
2019244656.tif 000004
【図３】
2019244656.tif 000005
【図４】
2019244656.tif 000006
【図５】
2019244656.tif 000007
【図６】
2019244656.tif 000008
【図７Ａ】
2019244656.tif 000009
【図７Ｂ】
2019244656.tif 000010
【図８Ａ】
2019244656.tif 000011
【図８Ｂ】
2019244656.tif 000012
【図９】
2019244656.tif 000013
【図１０】
2019244656.tif 000014
【手続補正書】
【提出日】令和2年11月27日(2020.11.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段とを備え、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
ストレージ装置。
【請求項２】
前記コントローラは、前記分割では、前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割する
請求項１に記載のストレージ装置。
【請求項３】
前記コントローラは、前記分割では、前記部分領域の個数が最小となるように分割する
請求項２に記載のストレージ装置。
【請求項４】
前記コントローラは、
前記ホストから、前記アクセス要求の種類と、前記アクセス対象領域を指し示す第１のアドレス情報と、前記アクセス対象領域との間でデータを送受信する前記メモリ上の転送メモリ領域を指し示す第２のアドレス情報とを取得するアクセス要求受信手段を備える
請求項３に記載のストレージ装置。
【請求項５】
前記コントローラは、
前記アクセス対象領域を、高々１つの前記記憶媒体の領域から構成される前記部分領域に分割し、それぞれの前記部分領域のサイズと、それぞれの前記部分領域に対応する前記記憶媒体の識別子および前記記憶媒体の領域である転送ストレージ領域を指し示す第３のアドレス情報を求める転送ストレージ領域算出手段を備える
請求項４に記載のストレージ装置。
【請求項６】
前記コントローラは、
前記転送メモリ領域を、それぞれの前記部分領域に対応する部分転送メモリ領域に分割し、それぞれの前記部分転送メモリ領域を指し示す第４のアドレス情報を求める転送メモリ領域算出手段を備える
請求項５に記載のストレージ装置。
【請求項７】
前記コントローラは、
前記部分領域毎に、前記ノードに前記バッファを確保するアクセス処理実行管理手段を備える
請求項６に記載のストレージ装置。
【請求項８】
前記コントローラは、
前記部分領域に対応する前記転送ストレージ領域と前記部分領域に対応する前記バッファとの間のデータ転送を制御するデータ転送制御手段を備える
請求項７に記載のストレージ装置。
【請求項９】
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラが接続されたノードと前記ホストのメモリとの間のデータ転送方法であって、
前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、
前記部分領域毎のバッファを確保し、
前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを行う
データ転送方法。
【請求項１０】
コンピュータを、
複数の記憶媒体の領域から構成された仮想記憶媒体に対するアクセスを提供し、ホストからネットワークを経由して前記仮想記憶媒体に対するアクセス要求を受信するコントローラと、
前記コントローラが接続されたノードと前記ホストのメモリとの間のデータ転送手段として機能させ、
前記コントローラは、前記アクセス要求によってアクセスされる前記仮想記憶媒体上のアクセス対象領域を部分領域に分割し、前記部分領域毎のバッファを確保し、前記部分領域毎に、前記部分領域に対応する前記記憶媒体の領域と前記部分領域に対応する前記バッファとの間のデータ転送と、前記データ転送手段による前記部分領域に対応する前記バッファと前記ホストの前記メモリにおける前記部分領域に対応する領域との間のデータ転送とを制御するように構成されている
プログラム。
【国際調査報告】
2019244656.tif 000015
2019244656.tif 000016