(57)【要約】【課題】  ＲＤＭＡ技術を使った、サーバとストレージシステム間の階層メモリ管理を提供する。【解決手段】  ストレージシステムであって、遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のＩ／Ｆと、ブロックＩ／Ｏアクセスを使って前記サーバと通信するよう制御される第二の種別のＩ／Ｆと、メモリと、コントローラを有し、前記コントローラは（１）サーバ上のＯＳによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、（２）サーバから前記第二の種別のＩ／Ｆを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理する。【選択図】図３
2014071893.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、
ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、
メモリと、
コントローラを有し、前記コントローラは
（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、
（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理するよう制御される
ことを特徴とする、ストレージシステム。
【請求項２】
前記コントローラは、前記ストレージシステムのメモリの各媒体種別の容量情報を管理するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項３】
前記メモリは、ＤＲＡＭメモリとフラッシュメモリのうちの少なくとも一つを含む
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項４】
前記コントローラは（３）別のサーバのオペレーティングシステムによって管理される物理アドレス空間に格納され、前記別のサーバから第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第三部分を管理し、前記他のサーバから前記第二の種別のインタフェースを介して前記ストレージシステムの論理ボリュームに送られ、前記論理ボリュームに対応する前記ストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の前記第二部分を管理するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項５】
前記コントローラは、前記サーバからの要求に対して、前記ストレージシステムの前記メモリのストレージ領域の前記第一部分の各媒体種別の容量情報をサーバに提供するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項６】
前記コントローラは、前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項７】
前記コントローラは、前記サーバからの前記メモリのストレージ領域の第一部分の、要求される容量およびメモリ性能またはメモリ割り当て配置範囲のうちの一つを含む遠隔メモリ結合要求に対して、メモリ結合結果とマッピングアドレス情報を前記サーバに返信するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項８】
前記コントローラは、前記サーバからの遠隔開放要求に対して、一つ以上のサーバのストレージシステムによる割り当てメモリに関する情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するよう制御される
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項９】
ストレージシステムにおけるメモリ管理方法であって、該ストレージシステムは、  遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、
ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、
メモリと、を有し、
前記方法は、
（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、
（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理する
ことを特徴とする、ストレージシステムにおけるメモリ管理方法。
【請求項１０】
（３）別のサーバのオペレーティングシステムによって管理される物理アドレス空間に格納され、前記別のサーバを第一の種別のインタフェースから送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第三部分を管理し、前記他のサーバから前記第二の種別のインタフェースを介して前記ストレージシステムの論理ボリュームに送られ、前記論理ボリュームに対応する前記ストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の前記第二部分を管理する
ことを特徴とする、請求項９に記載のメモリ管理方法。
【請求項１１】
前記サーバからの要求に対して、前記ストレージシステムの前記メモリのストレージ領域の前記第一部分の各媒体種別の容量情報をサーバに提供する
ことを特徴とする、請求項９に記載のメモリ管理方法。
【請求項１２】
前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、または前記サーバからの遠隔開放要求を受信した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除する
ことを特徴とする、請求項９に記載のメモリ管理方法。
【請求項１３】
サーバからの前記メモリのストレージ領域の第一部分の、要求される容量およびメモリ性能またはメモリ割り当て配置範囲のうちの一つを含む遠隔メモリ結合要求に対して、メモリ結合結果とマッピングアドレス情報を前記サーバに返信する
ことを特徴とする、請求項９に記載のメモリ管理方法。
【請求項１４】
ストレージシステムのメモリを管理するデータプロセッサを制御するための複数の命令を格納する、コンピュータ読取可能ストレージ媒体であって、該ストレージシステムは遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、メモリとを有し、前記複数の命令は、
前記データプロセッサに対して、
（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、
（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理するよう指示する
ことを特徴とする、コンピュータ読取可能ストレージ媒体。
【請求項１５】
前記複数の命令は、さらに、前記データプロセッサに対して、前記ストレージシステムのメモリの各媒体種別の容量情報を管理するよう指示し、
ここで前記メモリは、ＤＲＡＭメモリとフラッシュメモリのうちの少なくとも一つを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【請求項１６】
前記複数の命令は、さらに、前記データプロセッサに対して、（３）別のサーバのオペレーティングシステムによって管理される物理アドレス空間に格納され、前記別のサーバから第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第三部分を管理し、前記他のサーバから前記第二の種別のインタフェースを介して前記ストレージシステムの論理ボリュームに送られ、前記論理ボリュームに対応する前記ストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の前記第二部分を管理するよう指示することを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【請求項１７】
前記複数の命令は、さらに、前記データプロセッサに対して、サーバからの要求に対して、前記ストレージシステムの前記メモリのストレージ領域の前記第一部分の各媒体種別の容量情報をサーバに提供するよう指示することを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【請求項１８】
前記複数の命令は、さらに、前記データプロセッサに対して、前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するようコントローラを制御するよう指示することを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【請求項１９】
前記複数の命令は、さらに、前記データプロセッサに対して、サーバからの前記メモリのストレージ領域の第一部分の、要求される容量およびメモリ性能またはメモリ割り当て配置範囲のうちの一つを含む遠隔メモリ結合要求に対して、メモリ結合結果とマッピングアドレス情報を前記サーバに返信するようコントローラを制御するよう指示することを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【請求項２０】
前記複数の命令は、さらに、前記データプロセッサに対して、サーバからの遠隔開放要求に対して、一つ以上のサーバのストレージシステムによる割り当てメモリに関する情報を格納するサーバメモリ割り当てテーブルのエントリから、前記サーバを削除するよう指示することを含む
ことを特徴とする、請求項１４に記載のコンピュータ読取可能ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明はストレージシステムに関し、より詳細には、ＲＤＭＡ（Remote  Direct  Memory  Access）技術を使ったサーバとストレージシステム間の階層メモリ管理に関する。
【背景技術】
【０００２】
０００２    従来から、ＲＤＭＡ（Remote  Direct  Memory  Access）などの遠隔メモリアクセスおよび割り当て技術が提供されている。一つの例としては、ＲＤＭＡコンテキストにおける動的メモリ管理方法がある（例えば、特許文献１参照）。他の例としては、複数のコンピュータにおける分散共有メモリに関する技術がある（例えば、特許文献２参照）。サーバに実装されるＰＣＩ  Express（登録商標）フラッシュは、大容量ＲＤＩＭＭ（Registered  Dual  Inline  Memory  Module）モジュールに比べて、ビットコストが安い。
【０００３】
０００３    サーバの物理メモリ容量は限定されており、その容量はＣＰＵアーキテクチャによって決まる。サーバＤＲＡＭ（Direct  Random  Access  Memory）の容量を拡張するためには、ＲＤＩＭＭ（Registered  Dual  Inline  Memory  Module）が必要となる。大容量ＲＤＩＭＭは、すべてのＤＩＭＭのタイプのなかで一番高価である。サーバＤＩＭＭソケットはホットスワップ不可である。サーバのメモリ容量を拡張するためには、サーバ管理者はまずＯＳ（オペレーションシステム）を停止し、サーバへの電力供給を停止し、その後ＤＩＭＭをマザーボードのＤＩＭＭスロットに挿入しなければならない。
【０００４】
０００４    ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate  Synchronous  Dynamic  Random  Access  Memory）インタフェースはＲＤＭＡネットワークに比べてより高いアクセス速度およびネットワークスループット能力を有するため、ローカルサーバメモリはＲＤＭＡ（Remote  Direct  Memory  Access）による遠隔メモリアクセスより高い性能を有する。ＤＲＡＭはフラッシュメモリより低いアクセス速度を有する。（１）どのタイプのローカルメモリまたは遠隔メモリが高い性能の階層を構成するか、また（２）どのタイプのＤＲＡＭ、フラッシュメモリまたは他の新しいメモリデバイスがＤＲＡＭメモリ層の最高の階層を構成するかについて、従来技術には何ら開示がない。さらに、現在のＲＤＭＡプロトコルのメモリ割り当てには、メモリ種別情報は含まれない。
【０００５】
０００５    ストレージシステムのキャッシュメモリはＤＲＡＭおよび／またはフラッシュメモリを構成する。現在のストレージシステムでは、ストレージシステムのメモリを、ストレージキャッシュおよびサーバメモリ拡張のために共有することはない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７，８４９，２７２号明細書
【特許文献２】米国特許出願第２００９／０１４４３８８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
０００６    本発明の実施例は、ローカルメモリと遠隔メモリと階層を管理するサーバを有する。ストレージがサーバ割り当てメモリ領域を管理する。ストレージはストレージキャッシュデータ領域とサーバメモリデータとの間のＤＲＡＭまたはフラッシュメモリのパーティションを管理する。サーバとストレージの両方が、遠隔メモリインタフェースとストレージブロックＩ／Ｏインタフェースを有する。サーバは、ローカルまたは遠隔の物理アドレス空間を割り当てまたは割り当てを解除するために、遠隔階層キャッシュ管理を行う。ストレージはキャッシュデータ領域とサーバメモリデータを割り当てるために管理を行う。そのために、サーバは階層メモリを管理し、ホストＯＳ（オペレーティングシステム）を停止することなく、サーバメモリ領域を容易に拡張することができる。さらに、ストレージはサーバメモリデータとしてメモリ空間を供し、サーバメモリ資源を複数のストレージの物理メモリプールに集約できる。
【０００８】
０００７    本発明の一つの特徴は、ストレージシステムであって、遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、メモリと、コントローラを有し、前記コントローラは（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理するよう制御されることを特徴とする、ストレージシステムである。
【０００９】
０００８    ある実施例によると、前記コントローラは、前記ストレージシステムのメモリの各媒体種別の容量情報を管理するよう制御される。前記メモリは、ＤＲＡＭメモリとフラッシュメモリのうちの少なくとも一つを含む。また、前記コントローラは（３）別のサーバのオペレーティングシステムによって管理される物理アドレス空間に格納され、前記別のサーバから第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第三部分を管理し、前記他のサーバから前記第二の種別のインタフェースを介して前記ストレージシステムの論理ボリュームに送られ、前記論理ボリュームに対応する前記ストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二領域を管理するよう制御される。前記コントローラは、サーバからの要求に対して、前記ストレージシステムの前記メモリのストレージ領域の前記第一部分の各媒体種別の容量情報をサーバに提供するよう制御される。
【００１０】
０００９    ある実施例によると、前記コントローラは、前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するよう制御される。コントローラは、サーバからの前記メモリのストレージ領域の第一部分の、要求される容量およびメモリ性能またはメモリ割り当て配置範囲のうちの一つを含む遠隔メモリ結合要求に対して、メモリ結合結果とマッピングアドレス情報をサーバに返信するよう制御される。また、コントローラは、サーバからの遠隔開放要求に対して、サーバメモリ割り当てテーブルのエントリから、一つ以上のサーバのストレージシステムによる割り当てメモリに関する情報を格納するエントリから前記サーバを削除するよう制御される。
【００１１】
００１０    本発明の別の特徴によると、ストレージシステムにおけるメモリ管理方法が提供され、該ストレージシステムは、遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、メモリとを有する。前記方法は、（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理する。
【００１２】
００１１    ある実施例によると、本発明の方法はさらに、前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、または前記サーバからの遠隔開放要求を受信した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除することを特徴とする。
【００１３】
００１２    本発明の別の特徴によると、ストレージシステムのメモリを管理するデータプロセッサを制御するための複数の命令を格納する、コンピュータ読取可能ストレージ媒体であって、該ストレージシステムは遠隔メモリアクセスを使ってサーバと通信するよう制御される第一の種別のインタフェースと、ブロックＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）アクセスを使って前記サーバと通信するよう制御される第二の種別のインタフェースと、メモリとを有するものが提供される。前記複数の命令は、前記データプロセッサに（１）サーバ上のオペレーティングシステムによって管理される物理アドレス空間に格納され、サーバから前記第一の種別のインタフェースを介して送られるデータを格納するよう割り当てられる前記メモリのストレージ領域の第一部分を管理し、（２）サーバから前記第二の種別のインタフェースを介してストレージシステムの論理ボリュームへ送られ、前記論理ボリュームに対応するストレージシステムのストレージデバイスに格納されるデータをキャッシュするよう割り当てられる前記メモリのストレージ領域の第二部分を管理するよう指示することを特徴とする。
【００１４】
００１３    ある実施例によると、前記複数の命令は、さらに、前記データプロセッサに対して、前記ストレージシステムのメモリの各媒体種別の容量情報を管理するよう指示し、ここで前記メモリは、ＤＲＡＭメモリとフラッシュメモリのうちの少なくとも一つを含むことを特徴とする。前記複数の命令はさらに、前記データプロセッサに対して、前記第一の種別のインタフェースと通信する前記サーバの遠隔メモリインタフェースが停止した場合、前記ストレージシステムから一つ以上のサーバに対するメモリ割り当て情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するようコントローラを制御するよう指示することを特徴とする。前記複数の命令は、さらに、前記データプロセッサに対して、サーバからの前記メモリのストレージ領域の第一部分の、要求される容量およびメモリ性能またはメモリ割り当て配置範囲のうちの一つを含む遠隔メモリ結合要求に対して、メモリ結合結果とマッピングアドレス情報をサーバに返信するようコントローラを制御するよう指示することを特徴とする。前記複数の命令は、さらに、前記データプロセッサに対して、サーバからの遠隔開放要求に対して、一つ以上のサーバのストレージシステムによる割り当てメモリに関する情報を格納するサーバメモリ割り当てテーブルのエントリから前記サーバを削除するよう指示することを特徴とする。
【発明の効果】
【００１５】
０００６    サーバは階層メモリを管理し、ホストＯＳ（オペレーティングシステム）を停止することなく、サーバメモリ領域を容易に拡張することができる。さらに、ストレージはサーバメモリデータとしてメモリ空間を供し、サーバメモリ資源を複数のストレージの物理メモリプールに集約できる。
【００１６】
００１４    上述した本発明の特徴および効果、およびその他の特徴および効果は、後に述べる本発明の実施形態の詳細な説明から、当業者にとって明らかとなろう。
【図面の簡単な説明】
【００１７】
【図１】００１５    本発明の方法および装置を適用可能なシステムのハードウェア構成例を示す図である。
【図２】００１６    図１に示す構成のためのメモリアドレスマッピングの例を示す図である。
【図３】００１７    図１に示すシステムの詳細な構成例を示す図である。
【図４】００１８    本発明のストレージシステム内のメモリパーティションの例を示す図である。
【図５】００１９    図３および図４の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す図である。
【図６】００２０    複数のストレージシステムを有するシステムのハードウェア構成の例を示す図である。
【図７】００２１    図６の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す図である。
【図８】００２２    複数のサーバおよび複数のストレージシステムを有するシステムのハードウェア構成例を示す図である。
【図９】００２３    図８の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す図である。
【図１０】００２４    ホストサーバ内のデバイスディスカバリテーブルの例を示す図である。
【図１１】００２５    ホストサーバ内のアドレスマッピングテーブルの例を示す図である。
【図１２】００２６    ストレージ内のメモリパーティションテーブルの例を示す図である。
【図１３】００２７    ストレージ内のサーバメモリ割り当てテーブルの例を示す図である。
【図１４】００２８    メモリデバイス検出および初期化処理の処理フローの例を示す図である。
【図１５】００２９    メモリデバイス検出および初期化処理の処理フローの例を示す図である。
【図１６】００３０    サーバメモリ割り当ての処理フローの例を示す図である。
【図１７】００３１    サーバメモリ割り当て解除（開放）システムコールの処理フローの例を示す図である。
【図１８】００３２    メモリ読み出し処理のフローの例を示す図である。
【図１９】００３３    メモリ書き込み処理のフローの例を示す図である。
【図２０】００３４    ブロックＩ／Ｏ書き込み処理のフローの例を示す図である。
【図２１】００３５    ブロックＩ／Ｏ読み出し処理のフローの例を示す図である。
【発明を実施するための形態】
【００１８】
００３６    以下の本発明についての詳細な説明では、開示の一部を成すとともに本発明を実施する例示的な実施形態として示される添付図面を参照するが、本発明は図面の内容に限定されるものではない。図面において、類似する数字は複数の図面においてほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では、以下の説明および図面に示される通り様々な実施の形態を示すが、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態をも含む。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の文言は、ある実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明の理解を深めるために多くの具体的かつ詳細な記載がなされている。ただし、本発明を実施するためにこれらの具体的かつ詳細な内容すべてが必要なわけではないことは、当業者にとって明らかであろう。状況によっては、曖昧な記載を避けるために、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ／又はブロック図において図示していない場合もある。
【００１９】
００３７    さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズムおよび記号表現で示されている。これらのアルゴリズム記述及び記号表現は、データ処理分野の当業者がその新しいアイディアの本質を最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相応量の物理的操作を必要とする。必ずしもそうとは限らないが、通常はかかる数量は、格納、転送、組み合わせ、比較その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、記号、文字、用語、数字、命令等として言及することが便利なことがある。但し、上記の及び類似の用語すべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることに留意すべきである。別段の記載がない限り、以下の解説から明らかなように、説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた説明は、コンピュータシステムのレジスタ及びメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的（電気的）数量として同等にあらわされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作またはプロセスを含み得る。
【００２０】
００３８    本発明は、本明細書における操作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構築された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶措置、ランダムアクセスメモリ、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等（但し、これらに限定されない）のコンピュータ読取可能記憶媒体に格納され得る。本明細書において提示するアルゴリズム及び態様は、特定のコンピュータ又はその他の装置とは本質的に関係していない。様々な汎用システムを、本明細書の教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法を実施するためにより特化した装置を構築した方がよい場合も有り得る。さらに本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示内容を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラによって実行され得る。
【００２１】
００３９    下記に詳細に説明する本発明の実施例は、ＲＤＭＡ技術を使ってサーバとストレージシステム間の階層メモリ管理をするための装置、方法およびコンピュータプログラムを提供するものである。
【００２２】
００４０    図１に、本発明の方法および装置を適用可能なシステムのハードウェア構成例を示す。図示のシステムは、ホストサーバ１およびストレージ２を有するコンピュータ環境である。サーバ１とストレージ２は、例えばＳＣＳＩ（small  computer  system  interface）などのブロックＩ／Ｏインタフェース１３によって接続される。ホストサーバ１は、サーバメモリデータを格納するＤＲＡＭメモリ１１と、プロセッサ１２を有する。
【００２３】
００４１    図２は、図１に示す構成のためのメモリアドレスマッピングの例を示す。サーバのＯＳ（オペレーションシステム）は仮想メモリアドレス空間２００を有する。サーバＯＳは仮想メモリアドレス空間２００とＤＲＡＭ物理アドレス空間２１０の間のＯＳをマッピングする。サーバＯＳが仮想メモリアドレスにおいてメモリを割り当てると、サーバＯＳの割り当てプログラムが物理アドレス空間２１０のいくつかのセグメントを集め、それらを一つの連続するサーバメモリデータセグメントにマッピングする。サーバメモリデータ４０は仮想アドレス空間２００にある一つの隣接するメモリセグメントである。割り当てデータ４１は、物理アドレス空間２１０内のサーバメモリデータ４０の実メモリセグメントである。サーバメモリデータ４０は割り当てデータ４１の一つまたは複数のセグメントにマッピングされる。
【００２４】
００４２      図３は、図１に示すシステムの詳細な構成例を示す図である。ホストサーバ１はプロセッサ１２と、サーバメモリデータのためのＤＲＡＭメモリ１１と、サーバメモリデータのためのフラッシュメモリ１４と、ローカルおよび遠隔階層メモリアドレス空間を管理するためのアドレスマッピングテーブル１６とを含む。ホストサーバ１は、遠隔の階層メモリアドレス空間にアクセスするための遠隔メモリインタフェース１５と、ストレージ２内に保存されたデータにアクセスするためのブロックＩ／Ｏインタフェース１３とを有する。ストレージ２はプロセッサ２２と、データストレージ２８と、階層メモリ空間およびストレージシステムのデータストレージ２８のためのキャッシュメモリとしてのＤＲＡＭメモリ２１と、階層メモリ空間およびストレージシステムのデータストレージ２８のためのキャッシュメモリとしてのフラッシュメモリ２４と、遠隔メモリインタフェース２５と、ブロックＩ／Ｏインタフェース２３と、ストレージ２のＤＲＡＭ／フラッシュメモリをサーバ格納データ領域およびストレージキャッシュメモリの領域に分割するためのメモリパーティションテーブル２６と、サーバメモリ割り当てテーブル２７とを有する。
【００２５】
００４３    図４は、本発明のストレージシステム内のメモリパーティションの例を示す。ストレージシステム２は大容量のＤＲＡＭメモリ２１およびフラッシュメモリ２４を有する。メモリパーティションテーブル２６はストレージのブロックアクセスデータをキャッシュするためのストレージのキャッシュメモリ領域１１０およびサーバの物理メモリアドレス空間のためのサーバメモリデータ領域１００を分けるためのものである。
【００２６】
００４４    図５は、図３および図４の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す。ホストが論理メモリアドレス空間（ＯＳ仮想アドレス空間）にサーバのメモリデータ４０を割り当てる際に、ホストＯＳは、ローカルＤＲＡＭまたはＰＲＡＭメモリアドレス空間２１０、遠隔ＤＲＡＭまたはＰＲＡＭアドレス空間２２０、ローカルフラッシュアドレス空間２３０、または遠隔フラッシュアドレス空間２４０へのマッピングを行う。ホストサーバ１がサーバのメモリデータ４０を割り当てる際に、ホストＯＳは、ローカルＤＲＡＭメモリ２１に対して要求される最も高いアクセス頻度に基づいて、メモリ割り当てシステムコールを発行する。ホストＯＳまたはアプリケーションがメモリアクセスのための最高の性能を要求しない場合、ホストＯＳはサーバメモリデータ領域をフラッシュメモリ２４か遠隔ＤＲＡＭアドレス空間２２０か遠隔フラッシュメモリアドレス空間２４０に割り当てる。ホストＯＳはアドレスマッピングテーブル１６を管理し、物理メモリアドレス空間の領域（２１０−２４０）を割り当てる。
【００２７】
００４５    図６は、複数のストレージシステムを有するシステムのハードウェア構成の例を示す。図示のコンピュータ環境において、サーバ１は図３と同じ構成を有し、各ストレージ２も図３と同じ構成を有する。複数のストレージシステムを含む本実施例は、ストレージのＤＲＡＭメモリ２１とストレージのフラッシュメモリ２４を使用したサーバのメモリデータのための「分散物理アドレス空間」５０を構成する。各複数のストレージシステム２において、分散物理アドレス空間５０はストレージのキャッシュメモリ空間から分離されている。
【００２８】
００４６    図７は、図６の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す。遠隔ＤＲＡＭアドレス空間の物理メモリアドレス空間２２０および遠隔フラッシュアドレス空間の物理メモリアドレス空間２４０は、ホスト４０の論理メモリアドレス２００に共有される。図示の例では一つの論理メモリアドレス＃１  ２００、独立した遠隔ＤＲＡＭアドレス空間２２０ａと２２０ｂ、および独立した遠隔フラッシュアドレス空間２４０ａと２４０ｂを有する。
【００２９】
００４７    図８は、複数のサーバおよび複数のストレージシステムを有するシステムのハードウェア構成例を示す。図示のコンピュータ環境において、複数のサーバ１は、分散物理アドレス空間５０をサーバのメモリ容量プールとして共有する。
【００３０】
００４８    図９は、図８の構成におけるＤＲＡＭおよびフラッシュメモリ階層のメモリアドレスマッピングおよび遠隔アクセスの例を示す。遠隔ＤＲＡＭアドレス空間の物理メモリアドレス空間２２０と遠隔フラッシュアドレス空間の物理メモリアドレス空間２４０は、二つのホストの複数の論理メモリアドレス２００ａおよび２００ｂによって共有される。図示の例では、独立した論理メモリアドレス＃１  ２００ａおよび＃２  ２００ｂと、独立したローカルＤＲＡＭアドレス空間２１０ａおよび２１０ｂと、独立したローカルフラッシュアドレス空間２３０ａおよび２３０ｂを有する。
【００３１】
００４９    図１０は、ホストサーバ１内のデバイスディスカバリテーブル１７の例を示す。遠隔デバイスフィールド９１は、ローカルアドレス（ローカルＲＡＭまたはフラッシュメモリ）またはInfiniband（登録商標）名称識別子などの遠隔メモリデバイスの識別子を格納する。メモリデバイス種別フィールド９２は、ＤＲＡＭ、ＰＲＡＭおよびフラッシュといったメモリの媒体種別を格納する。割り当て容量フィールド９３は、物理メモリアドレス空間のサーバによって割り当てられたローカルまたは遠隔割り当て容量を格納する。
【００３２】
００５０    図１１は、ホストサーバ１内のアドレスマッピングテーブル１６の例を示す図である。仮想メモリアドレスフィールド１０１は、ホストＯＳの仮想アドレス空間２００におけるアドレス空間を示す。遠隔デバイスフィールド１０２はローカルアドレス（ローカルＲＡＭまたはフラッシュメモリ）またはInfiniband（登録商標）名称識別子などの遠隔メモリデバイスの識別子を格納する。メモリデバイス種別フィールド１０３は、ＤＲＡＭ、ＰＲＡＭまたはフラッシュなどのメモリ媒体種別を格納する。物理メモリアドレスフィールド１０４はローカルまたは遠隔物理メモリアドレスを格納する。
【００３３】
００５１    図１２は、ストレージ２内のメモリパーティションテーブル２６の例を示す。メモリパーティションテーブル２６はストレージのＤＲＡＭメモリまたはフラッシュメモリをサーバメモリデータ領域およびストレージキャッシュデータ領域に分割する。物理メモリアドレス領域１１１はストレージのフラッシュまたはストレージのＤＲＡＭメモリの物理メモリアドレスを格納する。メモリデバイス種別領域１１２はＤＲＡＭ、ＰＲＡＭまたはフラッシュといったメモリの媒体種別を格納する。パーティション種別フィールド１１３はストレージのキャッシュメモリ領域またはサーバのメモリデータ領域のメモリ領域種別を格納する。遠隔デバイスフィールド１１４はInfiniband（登録商標）名称識別子などの遠隔ホストサーバの識別子を格納する。
【００３４】
００５２    図１３は、ストレージ２内のサーバメモリ割り当てテーブル２７の例を示す。サーバメモリ割り当てテーブル２７は、サーバメモリデータの物理アドレス空間を複数のサーバで共有可能とする。遠隔デバイスフィールド１２１は、Infiniband（登録商標）名称識別子などの遠隔ホストサーバの識別子を格納する。メモリデバイス種別フィールド１２２は、ＤＲＡＭ、ＰＲＡＭまたはフラッシュといったメモリのローカル資源媒体の種別を格納する。物理メモリアドレスフィールド１２３は、ローカル物理メモリアドレスを格納する。
【００３５】
００５３    図１４は、メモリデバイス検出および初期化処理の処理フローの例を示す。ネットワーク５１が新しいサーバまたはストレージデバイスを検出すると、ネットワーク５１はその旨をすべてのデバイスに知らせる。その後、ホストサーバ１は遠隔メモリデバイス能力を有する新しいストレージデバイス２を検出する（ステップＳ１３１）。ホストサーバ１は、遠隔メモリデバイス資源をデバイスディスカバリテーブル１７（図１０）の遠隔デバイスエントリ９１に加える。ステップＳ１３２において、ホストサーバ１は各新しく検出された遠隔メモリデバイスの各媒体種別の容量情報を得て、デバイスディスカバリテーブル１７のメモリ種別エントリ９２および割り当て容量エントリ９３を構成する。ステップＳ１３６において、ストレージ２は参照メモリパーティションテーブル２６の容量情報を返信する。メモリパーティションテーブル２６は、ホストが遠隔物理メモリに使用する遠隔物理メモリの空き容量を格納する。ステップＳ１３６において、ストレージは遠隔物理メモリの容量情報を返信する。ステップＳ１３３において、ホストサーバ１は、どのホストサーバが十分なメモリ容量またはメモリ性能を有しているのかを判断する。容量または性能が十分であった場合（ＹＥＳ）、プログラムはステップＳ１３４を飛ばしてステップＳ１３５に進む。そうでない場合、プログラムはステップＳ１３４を実行し、そこでホストサーバ１は特定のメモリ種別にもっと多くの容量の割り当てを要求する。要求を受け取ると、ストレージ２はメモリ種別と割り当て容量有りの結果を返信する。ストレージ２がホストサーバに対して容量を割り当てられる資源を有していない場合、ストレージは、容量不足エラーとしてエラー状態を返信する。ステップＳ１３５において、ホストＯＳはメモリ容量を更新する。ホストＯＳはＯＳリブートやシャットダウン処理を行うことなく、物理容量を動的に更新する。
【００３６】
００５４    図１５は、メモリデバイス検出および初期化処理フローの例を示す。ステップＳ１４１において、管理者はサーバＯＳやホストサーバ１で実行中のアプリケーションプログラムを停止し、開放メモリコールを指示する。ステップＳ１４２において、ストレージ２はホストサーバに対応するメモリを割り当て解除する。ステップＳ１４３において、ホストサーバ１の遠隔メモリインタフェースが停止した場合、ストレージ２はサーバメモリ割り当てテーブル２７（図１３）の特定サーバデバイス（遠隔デバイス）のエントリを削除する。
【００３７】
００５５    図１６は、サーバメモリ割り当て（alloc）の処理フローの例を示す。ステップＳ１５１において、ホストＯＳは新しいサーバメモリデータを要求する。ホスト１のアプリケーションは、ホストＯＳへメモリ割り当てシステムコールを発行する。ステップＳ１５２において、ホストサーバのローカルメモリが十分な容量を有する場合（ＹＥＳ）、ホストＯＳはローカルメモリを割り当て、ステップＳ１５６に進む。ホストサーバのローカルメモリが十分な容量を有しない、ＤＲＡＭなどの高い性能を有するメモリの容量が十分でない場合（ＮＯ）、プログラムはステップＳ１５３からＳ１５５までを実行した後、ステップＳ１５６に進む。
【００３８】
００５６    ステップＳ１５３において、ホストサーバ１は、デバイスディスカバリテーブル１７を参照して遠隔メモリ容量を調べる。遠隔メモリが利用できる場合（ＹＥＳ）、次のステップはＳ１５４である。遠隔メモリが利用できない場合（ＮＯ）、メモリ割り当ては失敗となり、ホストＯＳはスワップ操作を要求し、合計メモリの容量を拡張する。スワップ操作は、仮想メモリアドレスに割り当てられたメモリデータのファイルブロックへの移動と、ファイルブロックのブロックストレージへのデータ保存である。ステップＳ１５４において、ホストのメモリは、例えばＲＤＭＡ操作メモリ割り当て機能などの遠隔メモリ結合要求をストレージのメモリインタフェースに指示する。ホストは要求された容量およびメモリ性能のメモリ結合または遠隔ＤＲＡＭ領域か遠隔フラッシュ領域のメモリ割り当て領域を要求する。ステップＳ１５５において、ストレージ２はサーバメモリ割り当てテーブル２７を更新し、ホストの要求する特定性能を有する遠隔ＤＲＡＭまたはフラッシュメモリの物理メモリのアドレス空間または遠隔メモリのアドレス空間の情報を返信する。ストレージはメモリ結合の結果と、マッピングされたアドレス情報を返信する。ステップＳ１５６において、ホストＯＳはアドレスマッピングテーブル１６を更新し、ローカルまたは遠隔メモリを割り当てる。アプリケーションを使って、ローカルメモリ領域、またはＲＤＭＡを使って遠隔メモリ領域にマッピングされるサーバメモリデータにアクセスする。
【００３９】
００５７    図１７は、サーバメモリ割り当て解除（開放）システムコールの処理フローの例を示す。ステップＳ１６１において、ホストＯＳはサーバメモリデータを開放するよう要求する。ホスト１のアプリケーションが、ホストＯＳに対してメモリ割り当て解除（メモリ開放）システムコールを発行する。ステップＳ１６２において、もし、割り当て領域がホストサーバのローカルメモリである場合（ＹＥＳ）、ホストＯＳはローカルメモリの割り当てを解除し、ステップＳ１６６に進む。割り当て領域が遠隔メモリ領域である場合（ＮＯ）、プログラムはステップＳ１６３からＳ１６５を実行してからステップＳ１６６に進む。
【００４０】
００５８    ステップＳ１６３において、ホストメモリはストレージ２の遠隔メモリインタフェース２５に対して、遠隔メモリ開放要求を指示する。ステップＳ１６４において、ストレージ２はデバイスディスカバリテーブル１７を使って遠隔メモリ容量をチェックする。遠隔メモリが割り当てられている場合（ＹＥＳ）、次のステップはＳ１６５である。遠隔メモリが割り当てられていない場合（ＮＯ）、メモリ開放要求はメモリアドレス違反により失敗におわる。ストレージ２の遠隔メモリインタフェース２５は、メモリ違反エラー返信を返し、その後、ホストＯＳはメモリエラー処理を行う。ステップＳ１６５において、ストレージ２はサーバメモリ割り当てテーブル２７を更新し、特定のエントリおよびメモリ開放要求の返信結果を削除する。ステップＳ１６６において、ホストＯＳはアドレスマッピングテーブル１６を更新し、特定の遠隔メモリ割り当てエントリを削除し、その後ローカルまたは遠隔メモリの割り当て解除を行う。ホストサーバの仮想メモリアドレス空間は、サーバメモリデータを初期化する。
【００４１】
００５９    図１８は、メモリ読み出し処理フローの例を示す。ホスト１はストレージ２に対して、メモリ読み出し処理を指示する。ストレージは、サーバメモリ割り当てテーブル２７に割り当て物理アドレス１２３が含まれるかどうか調べ、サーバメモリデータ領域１００から読み出されたデータをホストに送り、メモリ読み出し処理の結果をホストに返信する。ストレージからホストへのデータ転送は、サーバメモリデータ領域１００からホストへ読み出しデータが送られる時に行われる。
【００４２】
００６０    図１９は、メモリ書き込み処理を示すフローの例である。ホスト１はストレージ２に対するメモリ書き込み処理を指示する。ストレージは、サーバメモリ割り当てテーブル２７に割り当て物理アドレス１２３が含まれているかどうかを調べ、データをホストからストレージのサーバメモリデータ領域に読み出し、メモリ書き込み処理の結果をホストへ返信する。ストレージからホストへのデータ転送およびストレージへのデータの返信は、ストレージがホストからストレージのサーバメモリデータ領域１００へデータを読み出した時に行われる。このフローは「サーバのローカルメモリから遠隔メモリへのサーバによるメモリデータの書き込み」のためのものである。サーバはメモリ書き込みコマンドを、ＲＤＭＡインタフェースを介してストレージに指示する。その次のステップにおいて、ストレージはＲＤＭＡメモリ書き込みコマンドを受け取る。ストレージはサーバメモリ割り当てテーブル２７に割り当て物理アドレス１２３が含まれるかどうかを調べる。その後、ストレージはすでにサーバのローカルメモリ（ホスト書き込みデータ）に存在していた書き込みデータを得る（読みこむ）。ＲＤＭＡデータ転送処理はターゲットによって開始される。ホストは書き込みメモリデータをストレージに送る。ストレージはＲＤＭＡ書き込み処理を行い、ホストのローカルメモリデータを読み込む。
【００４３】
００６１    図２０は、ブロックＩ／Ｏ書き込み処理のフロー図の例を示す。ホスト１はストレージ２に対してブロックＩ／Ｏ書き込み処理を指示する。ストレージはメモリパーティションテーブル２６のパーティション種別１１３（ストレージキャッシュ）および物理メモリアドレス１１１を調べ、データ転送の準備が整った際にホスト１に通知を送る。それに対する返信として、ホストは書き込みデータをストレージに送る。ストレージは書き込みデータをストレージキャッシュ領域１１０に格納し、ブロックＩ／Ｏ書き込み処理の結果をホストに返信し、ストレージキャッシュ領域１１０からダーティデータをデータストレージ２８にデステージする。ホストからストレージへのデータ転送は、ホストがストレージへ書き込みデータを送る時に行われる。
【００４４】
００６２    図２１は、ブロックＩ／Ｏ読み出し処理のフロー図の例を示す。ホスト１はストレージ２に対してブロックＩ／Ｏ読み出し処理を指示する。ストレージはメモリパーティションテーブル２６のパーティション種別１１３（ストレージキャッシュ）および物理メモリアドレス１１１を調べ、読み出しデータのデータストレージ２８からキャッシュメモリ領域１１０へのステージングを実行し、ブロック読み出しＩ／Ｏデータをホストに送り、ブロックＩ／Ｏ読み出し処理の結果をホストに返信する。ストレージからホストへのデータ転送は、ストレージがブロック読み出しＩ／Ｏデータをホストに返信する時に行われる。
【００４５】
００６３    もちろん、図１、６および７に示すシステム構成は本発明が適用されうる情報システムの単なる例を示すものであり、本発明は特定のハードウェア構成に限定されるものではない。本発明が適用されるコンピュータやストレージシステムは、さらに、上述の発明を実施するのに使用されるモジュールやプログラムやデータ構造を読み出し可能に格納する周知のＩ／Ｏデバイス（例えばＣＤやＤＶＤドライブ、フロッピーディスクドライブ、ハードドライブ等）を有することができる。これらのモジュールやプログラムのデータ構造はコンピュータ読取可能媒体にエンコードすることができる。例えば、本発明のデータ構造は、本発明に使用されるプログラムが格納される一つ以上のコンピュータ読取可能媒体とは別のコンピュータ読み出し媒体に格納することができる。本システムの構成要素は、例えばコミュニケーションネットワークといったデジタルデータ通信のある形態または媒体によって、相互に接続される。コミュニケーションネットワークの例としては、ローカルエリアネットワークや、インターネット、ワイヤレスネットワーク、ストレージエリアネットワーク等のワイドエリアネットワークを含む。
【００４６】
００６４    本明細書では、本発明の理解を深めるために、多くの具体的かつ詳細な記載がなされている。しかし当業者にとっては、本発明を実施するためにこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、フロー図、構成図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明するが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【００４７】
００６５    当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置（ハードウェア）を用いて実施してよく、その一方で、その他の態様は、機械読取可能媒体（ソフトウェア）上に記憶された命令を用いて実施してもよく、当該発明は、プロセッサによって実行された場合には、プロセッサに本発明の実施形態を実行させる方法を実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてもよく、その他の実施形態は、ソフトウェアのみで実施されてもよい。さらに、説明された様々な機能は一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に広めることができる。ソフトウェアによって実施された場合、本発明の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮およびまたは暗号化形式で命令を媒体に記憶することができる。
【００４８】
００６６    上記により、本発明が、サーバとストレージシステムの間の階層メモリ管理を、ＲＤＭＡ技術を使って行うための方法、装置およびコンピュータ読取可能な媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって明白なように、開示された特定の実施形態の代わりに、同じ目的を達成するために創出された構成を用いてもよい。本開示は、本発明のあらゆる適応例や変形例を対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示した特定の実施形態に限定するよう解釈されるべきではない。むしろ本発明の範囲は、以下の請求項によって判断されるべきものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【符号の説明】
【００４９】
１：ホストサーバ
２：ストレージ
１１、２１：ＤＲＡＭメモリ
１２、２２：ＣＰＵ
１３、２３：ブロックＩＯインタフェース
１４、２４：フラッシュメモリ
１５、２５：遠隔メモリインタフェース
１６：アドレスマッピングテーブル
１７：デバイスディスカバリテーブル
２６：メモリパーティションテーブル
２７：サーバメモリ割り当てテーブル
２８：データストレージ
１００：サーバメモリデータ領域
１１０：ストレージキャッシュメモリ領域
【図１】
2014071893.tif 000003
【図２】
2014071893.tif 000004
【図３】
2014071893.tif 000005
【図４】
2014071893.tif 000006
【図５】
2014071893.tif 000007
【図６】
2014071893.tif 000008
【図７】
2014071893.tif 000009
【図８】
2014071893.tif 000010
【図９】
2014071893.tif 000011
【図１０】
2014071893.tif 000012
【図１１】
2014071893.tif 000013
【図１２】
2014071893.tif 000014
【図１３】
2014071893.tif 000015
【図１４】
2014071893.tif 000016
【図１５】
2014071893.tif 000017
【図１６】
2014071893.tif 000018
【図１７】
2014071893.tif 000019
【図１８】
2014071893.tif 000020
【図１９】
2014071893.tif 000021
【図２０】
2014071893.tif 000022
【図２１】
2014071893.tif 000023
【外国語明細書】
2014071893000001.pdf
2014071893000002.pdf
2014071893000003.pdf
2014071893000004.pdf