JP6067230B2 - 観測可能クライアント側メモリアクセスを用いる高性能データストレージ - Google Patents

観測可能クライアント側メモリアクセスを用いる高性能データストレージ Download PDF

Info

Publication number
JP6067230B2
JP6067230B2 JP2012028289A JP2012028289A JP6067230B2 JP 6067230 B2 JP6067230 B2 JP 6067230B2 JP 2012028289 A JP2012028289 A JP 2012028289A JP 2012028289 A JP2012028289 A JP 2012028289A JP 6067230 B2 JP6067230 B2 JP 6067230B2
Authority
JP
Japan
Prior art keywords
memory
memory access
access operation
storage
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012028289A
Other languages
English (en)
Other versions
JP2012181834A (ja
Inventor
エー. スタブラワ ティモシー
エー. スタブラワ ティモシー
エス. ポリング アンドリュー
エス. ポリング アンドリュー
エー. コーネリアス ザッカリー
エー. コーネリアス ザッカリー
オバートン ジョン
オバートン ジョン
Original Assignee
コーブ コーポレイション
コーブ コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コーブ コーポレイション, コーブ コーポレイション filed Critical コーブ コーポレイション
Publication of JP2012181834A publication Critical patent/JP2012181834A/ja
Application granted granted Critical
Publication of JP6067230B2 publication Critical patent/JP6067230B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

(背景)
(1.技術分野)
本出願は、データストレージに関し、特に高性能データストレージに関する。
(2.関連技術)
一般的なストレージプロトコル、すなわちSCSI(Small Computer System Interface)は、要求/応答モデルを用いて動作する。読み取りトランザクションを実行するために、クライアントマシンなどのSCSIイニシエータは、物理的相互接続を用いて、どのストレージブロック(単数または複数)が読み取るかを示す符号化バッファを、ストレージデバイスなどのSCSIターゲットに送信する。SCSIターゲットは、次いで要求されたデータを検索し、読み取り動作の結果と共に応答する。書き込み要求を実行するために、SCSIイニシエータは、物理的相互接続を用いて、どのブロック(単数または複数)に書き込むかを示す符号化バッファをSCSIターゲットに送信する。一旦関連データがイニシエータからターゲットに送信され、ターゲットがデータを格納すると、ターゲットは、書き込み動作の結果と共に応答する。
1秒当りの要求される動作の数が増加すると、SCSIの符号化読み取り/書き込み要求の処理は、任意の基礎となるプロトコル(単数または複数)と共に、クライアントマシンおよびストレージデバイスの計算リソースに対して有意な要求を出し得る。基礎となる物理的相互接続および/またはプロトコルに従って、読み取りおよび/または書き込みデータの転送は、イニシエータ、ターゲット、またはその両方によって管理され得る。
(概要)
ストレージボリュームストレージボリュームへのアクセスの速度を改善するために、ストレージボリュームを含むメモリにおけるメモリアクセス動作を識別し、その動作を行うシステムが提供され得る。システムは、通信インタフェースと、ストレージボリュームを含むメモリと、メモリアクセス動作を識別するオブザーバロジックとを含み得る。通信インタフェースは、メモリにおけるメモリアクセス動作を行う要求を受信し得、ここで、要求は、Remote Direct Memory Access(RDMA)などのメモリアクセスプロトコルに準拠する。通信インタフェースは、要求に応答してメモリの一部分に対してメモリアクセス動作を行い得る。メモリの部分は、メモリに格納されたストレージボリュームに含まれ得る。オブザーバロジックは、メモリアクセス動作の1つ以上の属性を識別し得、応答して、メモリの部分を補助記憶装置にコピーするなどメモリアクセス動作に関する動作を行い得る。
ストレージボリュームへのアクセスの速度を向上させるために、コンピュータ読み取り可能記憶媒体が提供され得る。ストレージボリュームに符号化された命令は、実行された場合、メモリアクセス動作の1つ以上の属性を識別し得る。メモリアクセス動作は、通信インタフェースにおけるメモリアクセス動作を行う要求の受信に応答して、ストレージボリュームにおいて行われ得る。要求は、メモリアクセスプロトコルに準拠し得る。ストレージボリュームは、ストレージデバイスのメモリに含まれ得る。コンピュータ読み取り可能媒体に符号化された命令は、実行された場合、メモリアクセス動作の属性(単数または複数)に基づいて、メモリアクセス動作に関係するアクションを行い得る。
ストレージボリュームを含むメモリにおいて行われるメモリアクセス動作を識別する方法が提供され得る。メモリにおけるメモリアクセス動作を行う要求は、通信インタフェースにおいて受信され得る。要求は、メモリアクセスプロトコルに準拠し得る。メモリアクセス動作は、要求に応答してメモリの一部分において行われ得る。メモリの部分は、ストレージボリュームに含まれ得る。メモリアクセス動作の1つ以上の属性は、識別され得る。メモリアクセス動作に関係するアクションは、メモリアクセス動作の属性(単数または複数)の識別に基づいて行われ得る。
本発明のさらなる目的および利点は、以下の説明から明らかであり、添付の図面に参照がなされ、ここで、本発明の好ましい実施形態が示される。
例えば、本発明は以下の項目を提供する。
(項目1)
クライアントコンポーネントのためのデータを格納するストレージシステムであって、
該システムは、
通信インタフェースと、
該通信インタフェースを介して受信されるデータの格納のためのメモリと、
オブザーバロジックと
を備え、
該通信インタフェースは、
該メモリにおけるメモリアクセス動作を行う要求を受信することであって、該要求は、メモリアクセスプロトコルに準拠する、ことと、
該要求に応答して該メモリの一部分において該メモリアクセス動作を行うことであって、該メモリの該一部分は、該メモリに含まれるストレージボリュームに含まれる、こととを行うように構成され、
該オブザーバロジックは、該メモリアクセス動作の少なくとも1つの属性を識別することと、該メモリアクセス動作の該少なくとも1つの属性の識別に応答して、該メモリアクセス動作に関連するアクションを行うこととを行うように構成され、該通信インタフェースは、該オブザーバロジックを待つことなく、該メモリにおける該メモリアクセス動作を完了するようにさらに構成される、ストレージシステム。
(項目2)
上記メモリは、第1のメモリであり、上記ストレージシステムは、上記通信インタフェースと、該第1のメモリと、上記オブザーバロジックとを含むストレージデバイスを備え、上記メモリアクセスプロトコルは、上記クライアントコンポーネントに含まれる第2のメモリとストレージデバイスに含まれる該第1のメモリとの間でデータを転送する通信プロトコルであり、該データの転送は、該クライアントコンポーネントおよびストレージデバイスに含まれる中央処理装置(CPU)とは無関係である、上記項目のいずれかに記載のストレージシステム。
(項目3)
上記メモリは、上記ストレージボリュームのすべてのデータブロックに加えて、該データブロックについてのボリューム情報を含む、上記項目のいずれかに記載のストレージシステム。
(項目4)
上記メモリアクセス動作に関係するアクションは、メモリアクセス動作についての統計の決定を含む、上記項目のいずれかに記載のストレージシステム。
(項目5)
上記メモリアクセス動作に関係するアクションは、該メモリアクセス動作によって影響される上記メモリの領域の識別を含む、上記項目のいずれかに記載のストレージシステム。
(項目6)
上記メモリアクセス動作に関係するアクションは、補助記憶装置への上記メモリの領域の複製をさらに含む、上記項目のいずれかに記載のストレージシステム。
(項目7)
上記メモリと通信するプロセッサをさらに備え、該メモリは、上記オブザーバロジックを備え、該オブザーバロジックは、該プロセッサによって実行可能であり、上記通信インタフェースは、該プロセッサとは無関係に該メモリにおける上記メモリアクセス動作を行うようにさらに構成される、上記項目のいずれかに記載のストレージシステム。
(項目8)
コンピュータ実行可能命令によって符号化される有形のコンピュータ読み取り可能記憶媒体であって、該コンピュータ実行可能命令は、ストレージデバイス内のプロセッサによって実行可能であり、該コンピュータ読み取り可能媒体は、
メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令であって、該メモリアクセス動作は、該ストレージデバイスの通信インタフェースによる該メモリアクセス動作を行う要求の受信に応答して、該プロセッサとは無関係にストレージボリュームにおいて行われ、該要求は、メモリアクセスプロトコルに準拠し、該ストレージボリュームは、該ストレージデバイスのメモリに含まれる、命令と、
該メモリアクセス動作の少なくとも1つの属性に基づいて該メモリアクセス動作に関係するアクションを行うように実行可能である命令と
を含む、有形のコンピュータ読み取り可能記憶媒体。
(項目9)
上記メモリアクセス動作は、Remote Direct Memory Access(RDMA)動作である、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目10)
上記メモリアクセス動作の少なくとも1つの属性を識別する命令は、該メモリアクセス動作が完了した後に実行するように構成される、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目11)
上記要求は、上記メモリアクセス動作の少なくとも1つの属性を示すデータを含み、該メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該要求に含まれる該データから、該少なくとも1つの属性を識別するように実行可能である、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目12)
上記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該メモリアクセス動作を行う要求が受信される前に、上記通信インタフェースにおいて受信される通知メッセージから、該少なくとも1つの属性を識別するようにさらに実行可能である、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目13)
上記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該メモリアクセス動作を行う要求が受信された後に、上記通信インタフェースにおいて受信される通知メッセージから、該少なくとも1つの属性を識別するようにさらに実行可能である、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目14)
上記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該少なくとも1つの属性を示すデータのための上記メモリの領域を監視するようにさらに実行可能であり、該メモリアクセス動作は、第1のメモリアクセス動作であり、該第1のメモリアクセス動作の少なくとも1つの属性を示すデータは、第2のアクセス動作を行う要求に応答して、該メモリの領域に書き込まれる、上記項目のいずれかに記載のコンピュータ読み取り可能記憶媒体。
(項目15)
ストレージシステムの通信インタフェースにおいて受信されるデータからメモリアクセス動作を識別するコンピュータ実装される方法であって、
該方法は、
メモリにおけるメモリアクセス動作を行う要求を受信することであって、該要求は、該通信インタフェースにおいて受信され、該要求は、メモリアクセスプロトコルに準拠している、ことと、
該要求に応答して、該メモリの一部分において該メモリアクセス動作を行うことであって、該メモリの該一部分は、ストレージボリュームに含まれ、該ストレージボリュームは、該メモリに含まれる、ことと、
該ストレージシステム内のプロセッサによって該メモリアクセス動作の少なくとも1つの属性を識別することであって、該メモリアクセス動作は、該プロッセッサとは無関係に該メモリの該一部分において行われる、ことと、
該プロセッサによって該メモリアクセス動作に関係するアクションを行うことと
を包含する、方法。
(項目16)
上記メモリアクセス動作に関係するアクションが行われる前に、該メモリアクセス動作は完了する、上記項目のいずれかに記載の方法。
(項目17)
上記メモリアクセス動作の少なくとも1つの属性が識別される前に、該メモリアクセス動作は完了する、上記項目のいずれかに記載の方法。
(項目18)
上記メモリアクセス動作は、第1のメモリアクセス動作であり、該第1のメモリアクセス動作に関係するアクションを行うことは、第2のメモリアクセス動作に応答してメモリ領域に書き込むことを包含する、上記項目のいずれかに記載の方法。
(項目19)
上記メモリ領域は、フラグを含み、該フラグは、上記メモリの上記一部分が補助記憶装置に最後にコピーされて以来、該メモリの該一部分が上記メモリアクセス動作によって更新されたかどうかを示す、上記項目のいずれかに記載の方法。
(項目20)
上記メモリアクセス動作は、上記要求を送信したクライアントコンポーネントに含まれる第2のプロセッサとは無関係に上記メモリの上記一部分において行われる、上記項目のいずれかに記載の方法。
(摘要)
1つの実施例において、メモリに格納されたストレージボリュームに対してメモリアクセスを行い、行われたメモリアクセス動作を識別するシステムが提供される。メモリアクセス動作を行う要求は、通信インタフェースにおいて受信され得る。要求は、メモリアクセスプロトコルに従い得る。メモリアクセス動作は要求に応答してメモリの一部分において行われ得、ここで、メモリの一部分はストレージボリュームに含まれる。メモリアクセス動作の1つ以上の属性が、識別され得る。メモリアクセス動作に関係するアクションは、メモリアクセス動作の属性に基づいて行われ得る。
複数の実施形態は、以下の図面および説明を参照してより良く理解され得る。図面における構成要素は必ずしも同一縮尺ではなく、代わりに本発明の原理を例示することに強調がなされている。さらに図において、同様に参照される数字は、異なる図全体にわたり対応する部分を示す。
図1は、例示的な高性能データストレージシステムのハードウェア図を例示する。 図2は、ストレージシステムのロジックの例のフロー図を例示する。 図3は、ストレージシステムにおいてメモリアクセス動作を観測する一例のフロー図を例示する。
(詳細な説明)
一例として、高性能データストレージのシステムは、ストレージボリュームのすべてのデータをストレージデバイスのメモリに格納し得る。ストレージデバイスにおけるボリュームアクセスロジックは、1つ以上の通信インタフェースを有するストレージボリューム−またはストレージボリュームに関連するメモリ領域−をストレージデバイスに登録し得る。あるいはまたはさらに、ボリュームアクセスロジックは、1つ以上のクライアントコンポーネントによってストレージボリュームへのアクセスを提供しかつ/または制御し得る。クライアントコンポーネントにおける通信インタフェースは、メモリへのクライアント側メモリアクセスを、メモリ内の領域にかつ/またはストレージデバイスにおけるストレージボリュームに提供し得る。相互接続またはネットワークは、クライアントコンポーネントの通信インタフェースとストレージデバイスの通信インタフェースとの間でデータを移送し得る。例えば、通信インタフェースは、ネットワークインタフェースコントローラであり得る。
クライアント側メモリアクセスは、クライントコンポーネントにおいてプロセッサを迂回し得、かつ/またはさもなければ、クライアントコンポーネントが、クライアントコンポーネント、ストレージデバイス、またはその両方に含まれるプロセッサによるアクションを待つことなく、ストレージデバイスのメモリにアクセスすることを容易にし得る。例えば、クライアント側メモリアクセスは、Remote Direct Memory Access(RDMA)プロトコルに基づき得る。通信インタフェースは、メッセージの信頼性ある送達、および/またはクライアント側メモリアクセスを行う場合、実行される任意のメモリアクセス動作などのメモリアクセス動作の信頼性ある実行を提供し得る。あるいはまたはさらに、メッセージの送達および/またはメモリアクセスアクションの実行は、データがUser Datagram Protocol(UDP)を用いる通信インタフェース間において移送される場合など、信頼性がなくなり得る。クライアントコンポーネントは、クライアント側メモリアクセスを用いて、メモリ上の他の動作、メモリ内の領域、および/またはストレージデバイスにおけるストレージボリュームを読み取り、書き込み、かつ/または行い得る。クライアント側メモリアクセスを提供する際に、クライアントコンポーネントは、メモリアクセス動作を行う要求をストレージデバイスに送信し得る。応答して、ストレージデバイスは、メモリアクセス動作を実行し得る。ストレージデバイスは、メモリアクセス動作を観測するかまたはさもなければ識別し得る。メモリアクセス動作を識別することに応答して、ストレージデバイスは、例えば、メモリ上のメモリアクセス動作を実行することと無関係に、ストレージボリュームのデータを1つ以上のオプションの補助記憶装置にコピーし得る。補助記憶装置は、フラッシュメモリなどの1つ以上の持続性不揮発性記憶媒体、相変化メモリ、メモリスタ、EEPROM、磁気ディスク、テープ、またはいくつかの他の媒体を含み得る。メモリおよび/または補助記憶装置(含まれている場合)は、ストレージボリュームに再分割され得る。
ストレージシステムの1つの技術的利点は、ストレージシステムが、メモリアクセスプロトコルを用いて読み取りおよび書き込みの動作に対してDMA同等の性能を提供し得、さらになおも、行われるメモリアクセス動作を識別し得ることである。従って、ストレージシステムは、メモリアクセス動作についての情報に基づいてさらなる動作を取り得る。例えば、さらなる動作は、メモリアクセス動作についての統計を総計すること、書き込まれたメモリの領域を追跡すること、領域の内容を補助記憶装置に持続すること、領域の内容をバックアップストレージボリュームまたは他のストレージデバイスに複製すること、および/またはメモリアクセス動作に関係する任意の他の動作を含む。1つ以上の例において、メモリの更新された領域の内容を複製することは、2010年2月25日に出願された、名称が「SYSTEM AND METHOD FOR RAPID DATA SNAPSHOTS」である米国特許出願第12/712,884号に説明される技術を用いて達成され得る。従って、ストレージシステムは、主として相互接続ハードウェアによって処理されるメモリアクセス動作を用いてストレージボリュームに情報を迅速に格納し得、格納された情報が電力損および/またはシステム遮断の場合に持続されることをなおも確実にし得る。
図1は、例示的な高性能データストレージシステム100のハードウェア図を例示する。ストレージシステム100は、ストレージデバイス105と、クライアントコンポーネント110とを含み得る。ストレージシステム100は、より多い要素、より少ない要素、または異なる要素を含み得る。例えば、ストレージシステム100は、複数のクライアントデバイス、複数のストレージデバイス、またはその両方を含み得る。あるいは、ストレージシステム100は、ストレージデバイス105だけを含み得る。
クライアントコンポーネント110およびストレージデバイス105は、相互接続115を介して互いに通信し得る。通信は、単方向または二方向であり得る。1つの実施例において、相互接続115は、ストレージデバイス105とクイアントコンポーネント110とを電気的に連結し得る。
相互接続115は、2つ以上のデバイス間で信号を移送する任意の物理的コンポーネントを含み得る。相互接続115の実施例は、ワイヤ、パラレルバス、シリアルバス、ネットワーク、交換ファブリック、無線リンク、またはデバイス間で信号を移送する複数のコンポーネントの組み合わせを含む。あるいはまたはさらに、クライアントコンポーネント110は、Storage Area Network(SAN)、(Beaverton OregonのSystem I/O Inc.の所有の登録商標である)INFINIBAND(登録商標)ネットワーク、Local Area Network(LAN)、Wireless Local Area Network(WLAN)、Personal Area Network(PAN)、Wide Area Network(WAN)、または任意の他の現在公知であるかもしくは後に開発される通信ネットワークなどのネットワークもしくは交換ファブリックを介してストレージデバイス105と通信し得る。
ストレージデバイス105は、相互接続115を介して受信されるデータを格納し得る。ストレージデバイス105は、メモリ120と、プロセッサ125と、メモリコントローラ130と、通信インタフェース135とを含み得る。ストレージデバイス105は、より多い要素、より少ない要素、または異なる要素を含み得る。例えば、ストレージデバイス105は、補助記憶装置145と、ストレージコントローラ140と、複数の補助記憶装置と、複数のストレージコントローラ、またはこれらの任意の組み合わせを含み得る。ストレージデバイス105は、単一の電源または複数の電源によって電力を供給され得る。電源の実施例は、公共電気施設、内部もしくは外部のバッテリ、無停電電力系統(UPS)、設備UPS、発電機、太陽電池パネル、任意の他の電源、または複数の電源の組み合わせを含む。ストレージデバイス105は、ストレージデバイスに電力を供給する1つ以上の電源の状態を検出し得る。
メモリ120は、固体メモリ、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリ、相変化メモリ、メモリスタメモリ、プロセッサ125によってアドレス可能アドレス空間に構成される任意の種類のメモリ、またはこれらの任意の組み合わせなど、任意のメモリもしくは複数のメモリの組み合わせであり得る。メモリ120は、揮発性もしくは不揮発性、またはその両方の組み合わせであり得る。
メモリ120は、オブザーバロジック150と、ボリュームアクセスロジック155と、ストレージボリューム160とを含み得る。1つの実装において、オブザーバロジック150、ボリュームアクセスロジック155、およびストレージボリューム160のうちの対応する1つを含むメモリ120の各部分は、メモリ120の他の部分とは異なる種類であり得る。例えば、メモリ120は、ROMと、固体メモリとを含み得、ROMは、オブザーバロジック150と、ボリュームアクセスロジック155とを含み、固体メモリは、ストレージボリューム160を含む。メモリ120は、メモリコントローラ130によって制御され得る。メモリ120は、より多いコンポーネント、より少ないコンポーネント、または異なるコンポーネントを含み得る。
プロセッサ125は、一般的プロセッサ、中央処理装置、サーバ、マイクロコントローラ、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタル回路、アナログ回路、またはこれらの任意の組み合わせであり得る。プロセッサ125は、メモリ120または他のメモリにおいて実施されるコンピュータ実行可能命令またはコンピュータコードを実行するように動作可能である1つ以上のデバイスを含み、ストレージシステム100の特徴を実行し得る。例えば、プロセッサ125は、オブザーバロジック150およびボリュームアクセスロジック155に含まれるコンピュータ実行可能命令を実行し得る。
プロセッサ125、メモリコントローラ130、および通信インタフェース135は、各々互いに通信し得る。プロセッサ125、メモリコントローラ130および通信インタフェース135のうちの各1つはまた、ストレージコントローラ140および補助記憶装置145などの追加のコンポーネントと通信し得る。ストレージデバイス105のコンポーネント120、125、130、135、140、および145間の通信は、バス165、ポイントツーポイント接続、交換ファブリック、ネットワーク、任意の他の種類の相互接続、または相互接続の任意の組み合わせを介して行われ得る。通信は、星状、メッシュ、ハイパーキューブ、環状、トーラス、または現在公知であるかもしくは後に発見される任意の他の種類のトポロジを含むがこれらに限定されない任意の種類のトポロジを用い得る。あるいはまたはさらに、任意のプロセッサ125、メモリ120、メモリコントローラ130、および/または通信インタフェース135は、互いに、またはストレージコントローラ140および/または補助記憶装置145などの他のコンポーネントと論理的もしくは物理的に組み合わせられ得る。
メモリコントローラ130は、プロセッサ125によって指定されたメモリアドレスを適切な信号方式に並進させてメモリ120における対応する位置にアクセスするハードウェアコンポーネントを含み得る。プロセッサ125は、バス165上にアドレスを指定し得る。プロセッサ125、バス165、およびメモリ120は、マザーボードなどの共通の回路基板に直接または間接に連結され得る。1つの実施例において、バス165は、物理的アドレスを指定するために用いられるアドレスバスを含み得、アドレスバスは、2つ以上のコンポーネントを接続する一連の回線を含む。メモリコントローラ130はまた、例えば、メモリ120の内容を周期的にリフレッシュするなどの背景処理タスクを行い得る。1つの実施例の実装において、メモリコントローラ130は、プロセッサ125に含まれ得る。
通信インタフェース135は、データ転送に用いられる任意の物理的相互接続を含み得る。特に、通信インタフェース135は、ストレージデバイス105とクライアントコンポーネント110との間、またはストレージデバイス105と任意の他のデバイスとの間の通信を容易にし得る。通信インタフェース135は、相互接続115を介して通信し得る。通信インタフェース135は、ハードウェアコンポーネントを含み得る。さらに、通信インタフェース135は、ソフトウェアコンポーネントを含み得る。通信インタフェース135の実施例は、Direct Memory Access(DMA)コントローラ、RDMAコントローラ、Network Interface Controller(NIC)、Ethernet(登録商標)コントローラ、Fibre Channel Interface、(Beaverton,OregonのSystem I/O Inc.の登録商標である)INFINIBAND(登録商標)、SATAインタフェースか、SCSIインタフェース、汎用シリアルバス(USB)インタフェース、Ethernet(登録商標)インタフェース、または任意の他の物理的通信インタフェースを含む。下記に説明されるように、通信インタフェース135は、クライアント側メモリアクセスを容易にし得る。
ストレージボリューム160は、現在公知であるかまたは後に発見される任意の記憶アクセスプロトコルおよび/またはストレージプロトコルを介してアクセス可能である、構成されるストレージ領域であり得る。ストレージプロトコルおよびメモリアクセスプロトコルは、下記に詳細に説明される。ストレージボリューム160は、データブロックのシーケンスをメモリ120における対応するメモリ位置にマップする物理的ボリュームであり得る。従って、データブロック自体に加えて、ストレージボリューム160は、メモリ位置またはデータブロックについての任意の他の情報へのデータブロックのマッピングなどのボリューム情報を含み得る。ボリュームアクセスロジック155によって構成され得る、ストレージボリューム160のデータブロックは、すべてメモリ120に格納され得る。ボリューム情報は、メモリ120に含まれ得るかまたは含まれない場合がある。従って、ストレージボリューム160がメモリ120に含まれるといわれる場合、少なくともストレージボリューム160のデータブロック(ストレージボリューム160に格納されたデータ)は、メモリ120に含まれる。
上記に示されるように、ストレージボリューム160は、固体メモリに含まれ得る。個体メモリは、データを格納する、デバイスまたは複数のデバイスの組み合わせを含み得、主として、導体、半導体および絶縁体から作成され、いかなる動く機械的部品も有しないと考えられる。固体メモリは、バイトアドレス指定可能、ワードアドレス指定可能またはブロックアドレス指定可能であり得る。例えば、ほとんどのダイナミックRAMおよびいくらかのフラッシュRAMは、バイトアドレス指定可能であるかまたはワードアドレス指定可能であり得る。フラッシュRAMおよび他の持続性種類のRAMは、ブロックアドレス指定可能であり得る。固体メモリは、ストレージデバイス105におけるバス165などのデータバスを介して、ストレージデバイス105におけるメモリコントローラ130などのメモリコントローラに接続するように設計され得る。
固体メモリは、任意の順序で(すなわち、ランダムに)格納されたデータが読み取られかつ/または書き込まれることを可能にするランダムアクセスメモリを含み得る。用語「ランダム」は、データの物理的位置に関わらず、またデータが以前に読み取られたかまたは書き込まれた一片のデータに関係するかどうかに関わらず、任意の一片のデータが一定の時間期間内に戻されかつ/または書き込まれ得るという事実をいう。対照的に、磁気ディスクまたは光ディスクなどのストレージデバイスは、記録媒体または読み取り/書き込みヘッドの物理的な動きに依存し、その結果、検索時間は読み取られる次の項目の物理的位置に基づいて変動し、書き込み時間は書き込まれる次の項目の物理的位置に基づいて変動する。個体メモリの実施例は、DRAMと、SRAMと、NANDフラッシュRAMと、NORフラッシュRAMと、Phase Change Memory(PRAM)と、EEPROMと、FeRAMと、MRAMと、CBRAMと、PRAMと、SONOSと、RRAM(登録商標)と、Racetrackメモリと、NRAMと、Millipedeと、T−RAMと、Z−Ramと、TTRAMとを含むが、これらに限定されない。
固体メモリとは対照的に、固体ストレージデバイスは、専用のストレージコントローラを有する固体メモリをパッケージ化するシステムまたはデバイスであり、パッケージ化された固体メモリは、専用のストレージコントローラを介して、標準のストレージハードウェアインタフェースに準拠するハードウェア相互接続を用いてアクセスされ得る。例えば、固体ストレージデバイスは、SATAまたはSCSIインタフェースを含むフラッシュメモリドライブと、Fibre Channelインタフェースを介するSCSIを含むFlashまたはDRAMドライブと、SATAまたはSCSIインタフェースを含むDRAMドライブと、USB(ユニバーサルシリアルバス)インタフェースを有するUSBフラッシュドライブとを含むが、これらに限定されない。
ストレージコントローラ140は、補助記憶装置145において行われるストレージ動作を容易にするコンポーネントを含み得る。ストレージ動作は、補助記憶装置145内の位置からの読み取りまたは補助記憶装置145内の位置への書き込みを含み得る。ストレージコントローラ140は、ハードウェアコンポーネントを含み得る。あるいはまたはさらに、ストレージコントローラ140は、ソフトウェアコンポーネントを含み得る。
補助記憶装置145は、フラッシュメモリ、Phase Change Memory、Memristor、EEPROM、磁気ディスク、テープ、または他の媒体などを含むがこれらに限定されない1つ以上の持続性媒体を備えているストレージ領域を含み得る。補助記憶装置145は、ストレージデバイス105の内部、別のストレージデバイスの一部、サーバの一部、バックアップデバイスの一部、Storage Area Networkにおけるストレージデバイスか、またはある他の、外部に取り付けられた持続性ストレージであり得る。補助記憶装置145における媒体は、ストレージボリューム160が格納されるメモリ120より潜在的に遅い場合がある。補助記憶装置145および/またはストレージコントローラ140は、ストレージデバイス105の内部、ストレージデバイス105の外部にあってそれに連結された物理的に分離したコンポーネント、および/または第2のストレージデバイスにまたはストレージデバイス105とは異なるデバイスに含まれ得る。
クライアントコンポーネント110は、ストレージデバイス105から読み取り、ストレージデバイス105に書き込むデバイスを含み得る。クライアントコンポーネント110の実施例は、コンピュータ、サーバ、ブレードサーバ、デスクトップコンピュータ、タブレットコンピュータ、ラップトップ、ストレージデバイス、任意の種類のコンピューティングデバイス、またはプロセッサによって実行可能なプロセスを含み得る。
クライアントコンポーネント110は、メモリ170と、プロセッサ175と、通信インタフェース180と、メモリ120、プロセッサ125、通信インタフェース135、およびストレージデバイス135のメモリコントローラ130などのメモリコントローラ185とを含み得る。クライアントコンポーネント110は、より多いコンポーネント、より少ないコンポーネント、または異なるコンポーネントを含み得る。例えば、クライアントコンポーネント110は、ストレージコントローラ190、ストレージコンポーネント192、複数のストレージコントローラ、複数のストレージコンポーネント、またはこれらの任意の組み合わせを含み得る。あるいは、クライアントコンポーネント110は、プロセッサ175によって実行されるプロセスだけを含み得る。
ストレージコントローラ190および/またはストレージコンポーネント192は、クライアントコンポーネント110の内部、クライアントコンポーネント110に連結された、クライアントコンポーネント110の外部の分離したデバイス、および/またはストレージデバイス105など、クライアントコンポーネント110以外のデバイスに含まれ得る。クライアントコンポーネント110のメモリ170は、クライアントロジック194を含み得る。プロセッサ175は、クライアントロジック194に含まれるコンピュータ実行可能命令を実行し得る。クライアントコンポーネント110のコンポーネント170、175、180、185、190、および192は、ストレージデバイス105におけるバス165などのバス196を介するかまたは任意の他の種類の相互接続を介して、互いに通信し得る。
ストレージシステム100の動作中、ボリュームアクセスロジック155は、クライアントコンポーネント110にストレージボリューム160へのクライアント側メモリアクセスを提供し得る。クライアント側メモリアクセスは、少なくとも1つのメモリアクセス動作を含み得る。メモリアクセス動作は、例えば、読み取りメモリ動作または書き込みメモリ動作を含み得る。メモリアクセス動作は、ストレージデバイス105の通信インタフェース135においてクライアントコンポーネント110からの要求198の受信に応答して、ストレージデバイス105によって行われ得る。要求198は、例えば、開始メモリオフセット、メモリのサイズ、開始メモリ位置、アクセスするメモリの個数、または要求されたメモリアクセス動作に関係する任意の他の属性を含み得る。リクエスト198は、ブロックアドレス指定可能ベース、ワードアドレス指定可能ベース、バイトアドレス指定可能ベース、またはメモリの任意の他の適切な装置の任意のベースで、メモリ120をアドレス指定し得る。ボリュームアクセスロジック155は、通信インタフェース135に、および/または、クライアントコンポーネント110など、ストレージデバイス105以外のデバイスにストレージボリューム160を登録し得る。あるいはまたはさらに、ボリュームアクセスロジック155は、ストレージボリューム160が位置を定められるストレージデバイス105のメモリ120に位置(単数または複数)を決定し得る。ボリュームアクセスロジック155は、通信インタフェース135に、および/または、クライアントコンポーネント110など、ストレージデバイス105以外のデバイスに位置(単数または複数)を登録し得る。
ボリュームアクセスロジック155は、ストレージボリューム160がアクセスされ得る仕方を制御しかつ/または指定し得る。例えば、ボリュームアクセスロジック116は、ストレージデバイス105においてどのボリュームが利用可能であるか、および/またはどの動作が行われ得るかを制御し得る。1つの実施例において、ボリュームアクセスロジック155は、現在の、時間、日、月もしくは年、通信インタフェース135の一致もしくは位置、クライアントコンポーネント110の一致もしくは位置、または、クライアントコンポーネント110、ストレージデバイス105、相互接続115、もしくはストレージデバイス105に電力を供給する電源の状態など、ボリュームアクセスロジック155によって検出可能である周囲環境の、ある他の属性に基づいて、アクセスを制御し得る。あるいはまたはさらに、ボリュームアクセスロジック116は、パスワード、キー、生体認証、または暗号認証を含むがこれらに限定されない認証機構に基づいて、アクセスを制御し得る。
ボリュームアクセスロジック155または通信インタフェース135は、現在公知であるかもしくは後に発見される任意のメモリアクセスプロトコルを用いてクライアント側メモリアクセスを提供し得る。メモリアクセスプロトコルは、クライアントコンポーネント110におけるメモリ170などの、第1のデバイスにおけるメモリとストレージデバイス105におけるメモリ120などの、第2のデバイスにおけるメモリとの間でデータを転送するために用いられる任意の通信プロトコルであり得、ここで、データは、クライアントコンポーネント110におけるプロセッサ175およびストレージデバイス105におけるプロセッサ125などの、第1および第2のデバイスにおける中央処理装置(CPU)と無関係に転送される。従って、第1のデバイスがオペレーティングシステムを含む実施例において、データは、オペレーティングシステムが関与することなく、第1のデバイスのメモリから第2のデバイスのメモリに転送され得る。CPUによって実行される命令は、ハードウェアデータコントローラに第1のデバイスのメモリから第2のデバイスのメモリにデータを転送するように示し得るが、メモリ間の実際のデータ転送は、CPUが関与することなく、完了され得、第1のデバイスがオペレーティングシステムを含む場合、オペレーティングシステムが関与することなく、完了され得る。メモリアクセスプロトコルは、例えば、メモリアクセス動作が第2のデバイスまたはシステムにおいてメモリにおいて行われる要求198のフォーマットを記述し得る。
メモリアクセスプロトコルは、例えば、ストレージデバイス105における通信インタフェース135およびクライアントコンポーネント110における通信インタフェース180などの1つ以上のハードウェアコントローラを用いて実装され得る。ハードウェアコントローラのメモリアクセスプロトコルおよび電気的特性は、共通の規格の一部であり得る。従って、通信インタフェース135または180のメモリアクセスプロトコルおよび電気的特性は、1つの規格の一部であり得る。1つの実施例において、アクセスプロトコルは、通信インタフェース135および180において実装されるRDMAプロトコルであり得、ここで、メモリアクセスプロトコルならびに通信インタフェース135および180は、INFINIBAND(登録商標)規格に準拠する。第2の実施例において、メモリアクセスプロトコルは、Internet Wide Area RDMA Protocol(iWARP)であり得、ここで、iWARPは、通信インタフェース135および180において実装され、ここで、通信インタフェース135および180は、iWARPおよびEthernet(登録商標)規格に準拠する。Internet Engineering Task Force(IETF)プロトコルであるiWARP規格は、TCP(Transport Control Protocol(伝送制御プロトコル))によるRDMAである。第3の実施例において、メモリアクセスプロトコルは、通信インタフェース135および180において実装されるPCIバスマスタリングプロトコルであり得、ここで、通信インタフェース135および180は、PCI(Peripheral Component Interconnect)規格に準拠する。RDMAなどのメモリアクセスプロトコルは、TCPなどのトランスポートプロトコルによって直接、階層化され得る。
1つ以上の実施例において、ボリュームアクセスロジック155は、さらに、現在公知であるかまたは後に発見される任意のストレージプロトコルを用いてブロックレベルアクセスをストレージボリューム160に提供し得る。ストレージプロトコルは、ストレージデバイス105などのブロックストレージデバイスもしくはシステムとブロックストレージデバイスもしくはシステムにデータを格納しかつ/またはブロックストレージデバイスもしくはシステムからデータを検索する、クライアントコンポーネント110などのデバイスもしくはシステムとの間でデータを転送するために用いられる任意の通信プロトコルであり得る。ストレージプロトコルは、例えば、1つ以上のソフトウェアおよび/またはハードウェアのストレージコントローラを用いて実装され得る。ハードウェアストレージコントローラのストレージプロトコルおよび電気的特性は、共通の規格の一部であり得る。1つの実施例において、ストレージプロトコルは、汎用シリアルバスの大容量記憶デバイスクラス(USB MSCまたはUMS)であり得、汎用シリアルバスの大容量記憶デバイスクラス(USB MSCまたはUMS)は、USB規格に準拠する、相互接続115などのハードウェアバス上で実行するUSB Implementers Forumによって規定される一式のコンピューティング通信プロトコルである。第2の実施例において、ストレージプロトコルは、SCSIコマンドプロトコルであり得る。第3の実施例において、ストレージプロトコルは、SATAプロトコルであり得る。ストレージプロトコルのさらなる実施例は、Serial Attached SCSI(SAS)と、Internet Small Computer System Interface(iSCSI)とを含む。あるいはまたはさらに、ボリュームアクセスロジック155は、Fibre ChannelによるSCSI、Remote Direct Memory Access(RDMA)によるSCSI RDMA Protocol(SRP)、TCP/IPによるiSCSI、または現在公知であるかもしくは将来発見される、ストレージプロトコルとデータ転送プロトコルとの任意の他の組み合わせなど、データ転送プロトコルによってデータを転送する任意のストレージプロトコルを用いてブロックレベルアクセスを提供し得る。
ストレージプロトコルを用いてストレージボリューム160にアクセスすることは、メモリアクセスプロトコルを用いてストレージボリューム160にアクセスすることより遅い。メモリアクセスプロトコルとは対照的に、クライアントコンポーネント110のCPUは、ブロックストレージデバイスまたはシステムにデータを転送中、ストレージコントローラと相互に作用し得、ここで、ストレージコントローラは、ストレージプロトコルを実装する。従って、ストレージプロトコルは、メモリアクセスプロトコルとは異なる。
ボリュームアクセスロジック155を介してブロックアドレス指定可能クライアント側メモリアクセスおよび/またはブロックレベルアクセスを提供することによって、ストレージデバイス105は、少なくとも1つの実施例の実装においてブロックストレージデバイスであると考えられ得る。ブロックストレージデバイスはまた、ブロックデバイスとも呼ばれ得る。ブロックデバイスは、512または1024バイトなどの所定のサイズのブロックでデータを格納する。所定のサイズは、構成可能であり得る。ブロックデバイスは、ソフトウェアおよび/もしくはハードウェアストレージコントローラ、ならびに/または、通信インタフェース180などの通信インタフェースを介してアクセスされる。他のブロックデバイスの実施例は、スピニングディスクと、テープドライブと、フロッピー(登録商標)ディスクドライブと、USBフラッシュペンドライブとを含む。
ボリュームアクセスロジック155は、メモリ120および/または補助記憶装置145を1つ以上のボリュームに再分割し得る。ストレージデバイス105のメモリ120におけるストレージボリューム160などのボリュームのうちの各1つは、任意のアクセスプロトコルおよび/またはストレージプロトコルを介してアクセス可能である構成されるストレージ領域であり得る。アクセスプロトコルおよびストレージプロトコルは、上記に説明される。
補助記憶装置145および/またはストレージコンポーネント192は、任意のブロックデバイスを含み得る。ブロックデバイスの実施例は、ハードディスクドライブ、CD−ROMドライブ、テープドライブ、固体ストレージデバイス、フラッシュドライブ、または任意の他の大容量記憶デバイスを含むが、これらに限定されない。
クライアントロジック194は、メモリアクセスプロトコルによるクライアント側メモリアクセスを用いて、ストレージデバイス105のメモリ120においてストレージボリューム160に対してメモリアクセス動作を行い得る。あるいはまたはさらに、クライアントロジック194は、動作を行って、接続されている場合ストレージデバイス105を発見し得るか、またはストレージデバイス105においてアクセス可能であり得る利用可能なボリュームを発見し得る。あるいはまたはさらに、クライアントロジック194は、管理動作を行って、ストレージボリューム160に関連する属性またはメタデータを修正し得る。1つの実施例において、クライアントロジック194は、管理動作を行って、ストレージボリューム160に関連する人間読み取り可能ラベルを設定し得る。第2の実施例において、クライアントロジック194は、管理動作を行って、クライアントコンポーネント110または他のクライアントコンポーネントに利用可能である動作を変更し得る。管理動作は、例えば、複数のクライアントによるストレージボリューム160への共用アクセスを調整するために用いられ得る。
クライアントロジック194は、クライアントロジック194によって要求されたかまたは要求される予定の一式の1つ以上のメモリアクセス動作についての情報をオブザーバロジック150に通信する動作を行い得る。例えば、クライアントロジック194は、クライアントコンポーネント110の通信インタフェース180を介して通知メッセージを送信し得る。オブザーバロジック150は、ストレージデバイス105の通信インタフェース135を介して通知メッセージを受信し得る。通知メッセージは、クライアントロジック194によって要求される一式のメモリアクセス動作に先行し得るかまたは後続し得る。通知メッセージは、一式のメモリアクセス動作の属性を識別し得る。あるいはまたはさらに、クライアントロジック194は、オブザーバロジック150によって直接観測可能であるかまたは識別されるメモリアクセス動作を行い得る。例えば、メモリアクセス動作を行う要求198は、イミディエート値動作を有するRDMA書き込みなどの通知情報を含み得る。ストレージボリューム160におけるメモリ120への書き込みに加えて、イミディエート値動作による書き込みは、イミディエート値を有するRDMA書き込みにおけるクライアントロジック194によって指定されるイミディート値を含む通知をオブザーバロジック150が受信するようにさせ得る。値は、メモリアクセス動作の1つ以上の属性を含み得る。例えば、値は、RDMA書き込み中にイミディエート値動作によってメモリ120のどの部分が書き込まれるかを示し得る。あるいはまたはさらに、クライアントロジック194は、オブザーバロジック150が検査し得る、ストレージデバイス105における状態を作る動作を行い得る。例えば、クライアントロジック194は、クライアント側メモリアクセス動作を行って、一式のメモリアクセス動作についての情報をストレージデバイス105におけるメモリ120の特定の領域に格納し得る。その領域に格納された情報は、例えば、行われる各メモリアクセス動作のオフセット、サイズ、および/または種類を含み得る。オブザーバロジック150は、メモリアクセス動作の1つ以上の属性を識別するために、領域を更新のため検査し得る。
クライアントロジック194は、クライアントロジック194の能力を用い得る任意の他のロジックと組み合わせられ得る。1つの実施例において、クライアントロジック194は、アプリケーションプログラミングインタフェース(API)を実装し得、ストレージボリューム160に対して特定用途向け動作を行うために、データベースサーバなどのアプリケーションロジックは、アプリケーションプログラミングインタフェース(API)を呼び出し得る。第2の実施例において、クライアントロジック194は、ストレージボリューム160に対してブロック動作を行うために、アプリケーションロジックが呼び出し得るブロックレベルAPIを提供するデバイスドライバを含み得る。第3の実施例において、クライアントロジック194は、ストレージボリューム160に対して動作を行うために、アプリケーションロジックが通信し得るレジスタレベルおよび/またはメモリマップされたインタフェースを提供する回路として実装され得る。アプリケーションロジックの実施例は、ユーザが対話するプログラム、オペレーティングシステム、デバイスドライバ、ファイルシステム、状態マシン、データベース、またはクライアントロジック194を用いてストレージボリューム160に対して動作を行う任意の他のロジックを含み得る。
オブザーバロジック150は、ストレージボリューム160および/またはストレージデバイス105において行われる、クライアントロジック194によって要求される動作を観測するかさもなければ識別し得る。オブザーバロジック150は、クライアントコンポーネント110および/またはストレージデバイス105の間での直接通信に基づいて要求される動作を識別し得る。例えば、オブザーバロジック150は、通信インタフェース135においてクライアントロジック194から受信される入力通知メッセージに対してリスンし得る。あるいは、またはさらに、オブザーバロジック150は、クライアントコンポーネント110によって要求される動作を受動的に監視し得る。例えば、オブザーバロジック150は、クライアントロジック194によって行われる動作の結果として受信される通知メッセージに対してリスンし得る。あるいは、またはさらに、オブザーバロジック150は、クライアントロジック194、通信インタフェース135、または別のハードウェアコンポーネントによって作られる状態に対して検査し得る。例えば、オブザーバロジック150は、クライアント側メモリアクセスを用いるクライアントコンポーネント110によって、通信インタフェース135によって、または別のハードウェアコンポーネントによって、アクセス可能であるメモリ120の1つ以上の領域の内容を読み取り得る。例えば、メモリ領域は、1つ以上のフラグを含み得、1つ以上のフラグは、メモリ120の1つ以上の部分が補助記憶装置145に最後にコピーされて以来、メモリ120の1つ以上の部分がメモリアクセス動作によって更新されたかどうかを示す。
一式のメモリアクセス動作を識別することに応答して、オブザーバロジック150は、さらなるアクションをとり得る。1つの実施例において、さらなるアクションは、(動作の種類、動作数、影響されるメモリのサイズ、および/または各動作のメモリ位置を含むが、これらに限定されない)メモリアクセス動作に関係する統計を決定することを含み得る。第2の実施例において、さらなるアクションは、メモリアクセス動作によって書き込まれたかまたはさもなければ影響されたメモリ120の領域を追跡するかまたは識別することを含み得る。オブザーバロジック150は、メモリ120の影響された領域の内容を補助記憶装置145に持続し得、ブロックデバイス、外部サーバ、および/またはバックアップデバイスにメモリ120の影響された領域の内容を外部に記憶し、かつ/またはそれを複製する。あるいは、オブザーバロジック150は、メモリアクセス動作に関係する任意の他のアクションをとり得る。
メモリアクセス動作は、オブザーバロジック150がメモリアクセス動作を識別することを待つことなく、ストレージデバイス105において完了し得る。あるはまたはさらに、メモリアクセス動作は、オブザーバロジック150がメモリアクセス動作を識別することに応答して任意のさらなるアクションをとることを待つことなく、ストレージデバイス105において完了し得る。従って、クライアントロジック194は、書き込み動作を行う要求198が相互接続116にわたって走行し、ストレージデバイス105がメモリ120にデータを書き込む時間量で、ストレージボリューム160に書き込み動作を行い得る。ストレージプロトコルおよび/または補助記憶装置145にデータを書き込むことに関連するオーバヘッドは、回避され得る。
クライアントコンポーネント110およびストレージデバイス105は、任意の数の方法で構成され得る。1つの実施例において、ストレージデバイス105は、コンピュータに含まれ得る。例えば、プロセッサ125はコンピュータの中央処理装置(CPU)であり得、メモリ120はコンピュータのメモリであり得、コンピュータは通信インタフェース135を含み得る。あるいはまたはさらに、ストレージデバイス105は、PCIデバイス、PCI−Xデバイス、PCIeデバイス、HTXデバイス、またはコンピュータに内部的または外部的に接続される任意の他の種類の周辺装置を含むがこれらに限定されない、コンピュータの周辺装置であり得る。
第2の実施例において、ストレージデバイス105は、ストレージデバイス105のデータにアクセスするコンピュータまたは別の種類のコンピューティングデバイスに追加され得る。例えば、ストレージデバイス105は、コンピュータにインストールされるデバイスであり得、ここで、クライアントコンポーネント110は、コンピュータの中央処理装置(CPU)によって実行されるプロセスである。ストレージデバイス105におけるメモリ120は、コンピュータのCPUによってアクセスされるメモリとは異なり得る。ストレージデバイス105におけるプロセッサ125は、コンピュータのCPUとは異なり得る。
第3の実施例において、ストレージデバイス105、クライアントコンポーネント110、またはその両方は、Non−Uniform Memory Architecture(NUMA)を用いて実装され得る。NUMAにおいて、プロセッサ125または175は、ポイントツーポイントリンクの交換ファブリックを介して一緒に接続される複数のプロセッサコアを備え得る。メモリコントローラ130または185は、複数のメモリコントローラを含み得る。メモリコントローラの各1つは、プロセッサコアのうちの対応する1つに電気的に連結され得る。複数のメモリコントローラの各1つは、その他のメモリコントローラとは異なる、メモリ120または170の部分にサービスし得る。
第4の実施例において、ストレージデバイス105のプロセッサ125は、バス165に電気的に連結される複数のプロセッサを含み得る。メモリ120、通信インタフェース135、メモリコントローラ130、およびストレージコントローラ140に含まれる複数のメモリなどの、ストレージデバイス105の他のコンポーネントもまた、バス165に電気的に連結され得る。
第5の実施形態において、ストレージシステム100は、複数のストレージデバイス、複数のストレージボリューム、および/または複数のクライアントロジックを含み得る。ストレージシステム100は、1つ以上のクライアントロジックに、より大きくかつ/またはより速いストレージボリュームとして複数のストレージデバイスおよび/またはストレージボリュームを提示し得る。例えば、クライアントロジック194は、複数のストレージデバイスおよび/または複数のストレージボリュームを実際に存在するより少ないストレージボリュームとして処理するアプリケーションが処理することを容易にするそれぞれのアプリケーションにインタフェースを提供し得る。例えば、クライアントロジック194は、ストレージデバイス105上の複数のボリュームおよび/または複数のストレージデバイスからの複数のボリュームを単一のストレージボリュームとしてアプリケーションに提示し得る。集約は、ストライピング、レプリケーション、パリティ、部分データ冗長性、現在公知であるかもしくは後に発見される任意の他の集約技術、または集約技術の任意の組み合わせを用い得る。
第6の実施例において、クライアントコンポーネント110は、他のシステムおよび/またはデバイスに追加のサービスを提供し得る。例えば、クライアントコンポーネント110は、Network Attached Storage(NAS)機器を含み得る。あるいはまたはさらに、クライアントコンポーネント110は、Redundant Array of Independent Disks(RAID)ヘッドを含み得る。あるいはまたはさらに、クライアントコンポーネント110は、ストレージデバイス105に格納されたデータへのファイルレベルアクセスを提供し得る。
あるいはまたはさらに、クライアントコンポーネント110は、ストレージプロトコルを用いてストレージデバイス105に格納されたデータへのブロックレベルアクセスを提供し得る。例えば、クライアントロジック194は、SCSIなどの1つ以上のストレージプロトコルを実装し得る。従って、アプリケーションまたはハードウェアは、クライアントロジック194においてストレージプロトコルの実装によって、ストレージデバイスにデータを転送し得、ストレージデバイスからデータを転送し得る。ストレージプロトコルの実装は、適切な場合、メモリアクセスプロトコルを用いてストレージデバイス105にアクセスし得る。あるいはまたはさらに、ストレージプロトコルの実装は、例えば、ストレージデバイス105とさらに通信することなしにストレージプロトコルによって必要とされ得るアプリケーションに肯定応答を戻すことによって、ストレージデバイス105との対話を減らし得る。
第7の実施例において、クライアントコンポーネント110は、クライアント要素110、またはクライアントコンポーネント110が連結されるかまたは含まれるコンピューティングデバイスに対してローカルのメモリの拡張としてストレージデバイス105を利用し得る。補助記憶装置145への低待ち時間アクセスおよび持続性などの、ストレージデバイス105の追加の能力は、クライアントコンポーネント110によって活用されて、アプリケーションクラッシュ、クライアントコンポーネント110に対する電力損失、またはクライアントコンポーネント110における任意の他のエラーイベントもしくは予期しないイベントに対して保護し得る。クライアントコンポーネント110は、例えば、ストレージデバイス105におけるストレージボリューム160にアプリケーションデータおよび/またはアプリケーション状態情報を格納することによってローカルメモリ170の拡張を提供し得る。クライアントコンポーネント110は、クライアントコンポーネント110は、PCIデバイス、PCI−Xデバイス、PCIeデバイス、HTXデバイス、またはコンピュータに内部的または外部的に接続される任意の他の種類の周辺装置を含むがこれらに限定されない、コンピュータの周辺装置であり得る。クライアントコンポーネント110は、メモリマップされたI/Oを用いて、図1に例示されるストレージデバイス105に含まれるボリューム160などの1つ以上のストレージデバイスに格納される1つ以上のストレージボリュームを表すコンピュータにアドレス空間を提供し得る。メモリマップされたI/Oは、アドレス指定可能メモリとしての物理的デバイスにアクセスすることを容易にする。コンピュータは、補助記憶装置145への低待ち時間アクセスおよび持続性などの、ストレージデバイス105の特徴を有する追加のメモリとして提示されたアドレス空間を用い得る。従って、例えば、アプリケーションのインスタンスまたは仮想マシンインスタンスが第1のデバイスにおいて故障した場合、アプリケーションまたは仮想マシンは、同じアプリケーションおよび/または同じ仮想マシンを実行する第2のデバイスにほとんど直ちにフェイルオーバーし得る。第2のデバイスにおけるアプリケーションまたは仮想マシンは、メモリがストレージデバイス105に格納されているので、第1のデバイスによって用いられるメモリと同じメモリを用いて続行し得る。
あるいは、またはさらに、クライアントコンポーネント110は、アプリケーションに対してチェックポイントを行い得る。チェックポイントを行うことは、ストレージデバイス105のストレージボリューム160にアプリケーションデータおよび/またはアプリケーション状態のすべてまたは一部分を周期的に格納することを伴い得る。チェックポイントを行うことは、スーパコンピューティングアプリケーションの場合などいくつかの種類のアプリケーションにおいて一般的である。従って、アプリケーションまたは仮想マシンのインスタンスが第1のデバイスにおいて故障した場合、アプリケーションまたは仮想マシンは、第2のデバイス上でほとんど直ちにフェイルオーバーし得る。アプリケーションまたは仮想マシンは、行われた最後のチェックポイントにおいて開始して続行し得る。
あるいはまたはさらに、複数のクライアントコンポーネントは、共有メモリとしてストレージデバイス105を利用し得る。例えば、クライアントコンポーネントは、大データセットの大規模並列化および/または共有に依存するアプリケーションロジックを含み得るかまたはそのアプリケーションロジックと相互運用し得る。大規模並列化を用い得るアプリケーションロジックの実施例は、タンパク質フォールディング遺伝的アルゴリズム、耐震解析、または、各結果が前の結果に基づく任意の他の計算集中アルゴリズムおよび/または反復計算を行うロジックを含む。アプリケーションロジックは、ストレージデバイス105のストレージボリューム160にアプリケーションデータ、アプリケーション状態、および/またはチェックポイントデータを格納し得る。補助記憶装置145への低待ち時間アクセスおよび持続性などの、ストレージデバイス105の追加の能力は、アプリケーションクラッシュ、クライアントコンポーネントに対する電力損失、または任意のクライアントコンポーネントにおける任意の他のエラーイベントもしくは予期しないイベントに対して保護するために、クライアントコンポーネント110によって活用され得る。クライアントコンポーネントは、アトミックアクセスを提供する方法でストレージデバイス105にアクセスし得る。例えば、クライアントコンポーネントによって要求されるメモリアクセス動作は、フェッチアンドアッド操作、比較交換操作、または現在公知であるかもしくは後に発見される任意の他のアトミック操作を含むがこれに限定されないアトミック操作を含み得る。アトミック操作は、グループとして実行するかまたは全く実行しない操作の組み合わせであり得る。操作の組み合わせを実行した結果は、操作の組み合わせの最初の操作と最後の操作の間で、操作の組み合わせ以外にいかなる操作も実行されなかったかのようであり得る。従って、クライアントコンポーネントは、データの汚染を引き起こすことなくストレージデバイス105に安全にアクセスし得る。
クライアントロジック194、オブザーバロジック150、および/またはボリュームアクセスロジック155は、共に位置を定められか、分離されるか、または組み合わされ得る。組み合わされたロジックによって行われるアクションは、組み合わされたロジックによって行われる特徴の集合体と同じかまたは類似する特徴を行い得る。第1の実施例において、すべての3つのロジックは、単一のデバイスに共に位置を定められ得る。第2の実施例において、ボリュームアクセスロジック155およびオブザーバロジック150は、単一のロジックに組み合わせられ得る。第3の実施形態において、クライアントロジック194およびオブザーバロジック150は、単一のロジックに組み合わせられ得る。第4の実施例において、クライアントロジック194およびボリュームアクセスロジック155は、組み合わせられ得る。第5の実施形態において、オブザーバロジック150は、メタデータサーバなど、ストレージデバイス105とは異なるデバイスにあり得る。メタデータサーバは、動作の処理に参加し得る1つ以上のハードウェアおよび/またはソフトウェアの実体であり得るが、ストレージボリューム160に格納されたデータを直接取り扱わない場合がある。メタデータサーバは、統計、座標持続性、座標データ複製を追跡し得、かつ/またはメモリアクセス動作に関係する任意の他のアクティビティを行い得る。
クライアントロジック194、オブザーバロジック150、および/またはボリュームアクセスロジック155は、コンピュータコードを含み得る。コンピュータコードは、プロセッサ175または125によって実行可能な命令を含み得る。コンピュータコードは、C、C++、C#、Java(登録商標)、またはこれらの任意の組み合わせなどの、現在公知であるかまたは将来的に発見される任意のコンピュータ言語で書かれ得る。一実施例において、コンピュータコードは、ファームウェアであり得る。あるいはまたはさらに、クライアントロジック194のすべてもしくは一部分、オブザーバロジック150、ボリュームアクセスロジック155および/またはプロセッサ175もしくは125は、回路として実装され得る。例えば、回路は、クライアントロジック194の特徴を行うように構成されるFPGA(フィールドプログラマブルゲートアレイ)、オブザーバロジック150、および/またはボリュームアクセスロジック155を含み得る。あるいは、またはさらに、回路は、クライアントロジック194の特徴を行うように構成されるASIC(特定用途向け集積回路)、オブザーバロジック150、および/またはボリュームアクセスロジック155を含み得る。あるいは、またはさらに、クライアントロジック194の一部分、オブザーバロジック150、および/またはボリュームアクセスロジック155ならびにプロセッサ125は、通信インタフェース135もしくは180の一部または他のハードウェアコンポーネントとして実装され得る。例えば、書き込み動作が行われる場合、通信インタフェース135もしくは180または他のハードウェアコンポーネントは、メモリ120もしくは170の領域を修正し得る。オブザーバロジック150は、メモリの領域を周期的に検査し得、領域および領域に関連するストレージボリューム160の内容に基づいてさらなるアクションをとり得る。さらなるアクションは、現在行われていてかつ/または過去に行われた動作に関係する統計を決定すること、現在書き込まれていてかつ/またはこれまで書き込まれ、かつ/または現在読み取られていてかつ/またはこれまで読み取られた領域を識別すること、補助記憶装置145に領域の内容を持続すること、異なるストレージボリューム、外部サーバ、および/またはバックアップデバイスに領域の内容を複製すること、および/または動作に関係する任意のアクションをとることを含み得る。
クライアントロジック194によって要求される動作を観測するかまたは識別する機構および動作の識別に応答してとられるアクションは、任意の多数の形式をとり得る。特定の機構は、とりわけ、個々の動作待ち時間、個々のクライアントコンポーネントからの1秒当りの動作、複数のクライアントコンポーネントからの1秒当りの集合体動作、クライアントコンポーネント110の計算リソースに対してなされる要求、ストレージデバイス105の計算リソースまたはオブザーバロジック150に対してなされる要求間のトレードオフのバランスをとり得る。
あるいはまたはさらに、ストレージシステム100は、行われるメモリアクセス動作を観測または識別を行わない場合がある。あるいはまたはさらに、ストレージシステム100は、メモリアクセス動作の特定の知識なしに1つ以上のアクションをとり得る。例えば、ストレージシステム100は、補助記憶装置145にストレージボリューム160の全内容を持続し、別のストレージデバイス、外部サーバおよび/またはバックアップデバイスにストレージボリューム160の全内容を複製し、かつ/またはストレージボリューム160に関係するある他のアクションをとり得る。あるいはまたはさらに、ストレージデバイス105は、ストレージボリューム160の内容を補助記憶装置145の内容と比較し得る。あるいはまたはさらに、ストレージデバイス105は、計算されたハッシュ値を用いて、ストレージボリューム160のどの領域が修正されたかを決定し得る。計算されたハッシュ値は、2つの異なる入力バッファに対して異なる値を有することが高い可能性で予期され、入力バッファの1つまたは両方より小さい場合がある計算された出力であり得る。計算されたハッシュ値の実施例は、チェックサムと、周期冗長検査コードと、暗号ハッシュコードとを含む。ストレージデバイス105は、スケジュールに従うかまたはハードウェア中断などの特定のイベントに応答して、システム遮断の前に、メモリアクセス動作の知識なしに周期的にアクションを行い得る。
図2は、ストレージシステム100のロジックの実施例のフロー図を例示する。図2に例示される実施例において、クライアントコンポーネント110は、メモリアクセス動作を要求し、オブザーバロジック150は、ストレージデバイス105において行われる動作を識別する。ストレージシステム100のロジックは、追加か、異なるか、またはより少ない動作を含み得る。動作は、図2に例示される順序とは異なる順序で実行され得る。
クライアントロジック194は、1つ以上の通知メッセージをストレージデバイス105(200)にオプションで送信することによって始まり得る。通知メッセージ(単数または複数)の受信に応答して、オブザーバロジック150は、1つ以上の次に行われる動作を通知され得る(205)。通知メッセージ(単数もしくは複数)は、例えば、動作に関連する一意の名前、行われるべき動作の種類、動作が行われるべきストレージボリューム160、動作が行われるストレージボリューム160内の位置、動作が行われるデータのサイズ、および/または行われるべき動作の他の属性をオブザーバロジック150に示し得るかまたはオブザーバロジック150に提供し得る。
通知されたことに応答して(205)、オブザーバロジック150は、1つ以上のアクションをとることよって反応し得る(210)。アクションは、例えば、行われるべき動作に関する統計を集約すること、書き込まれるかもしくは読み取られるべきストレージボリューム160の領域を追跡すること、および/または動作に関係するある他のアクションを含み得る。
あるいはまたはさらに、クライアントロジック194は、1つ以上のクライアント側メモリアクセス動作を行うことによって始まるかまたは継続し得る(215)。クライアント側メモリ動作は、オプションでオブザーバロジック150に動作が通知されるようにし得る(220)。例えば、クライアント側メモリ動作を行う際に、メモリアクセス動作の1つ以上の属性を識別する追加の情報は、メモリアクセス動作を行う要求198においてストレージデバイス105に送信され得る。
オブザーバロジック150に動作が通知されるようにし得、かつ/またはオブザーバロジック150にある追加の情報を伝えさせ得る実施例のクライアント側メモリ動作は、即時操作によるRDMA書き込みである。即時操作によるRDMA書き込みは、ストレージボリューム160に関連するメモリ領域に対して実行され得る。即時操作によるRDMA書き込みによって指定されるイミディエート値は、動作に関連する一意の名前、行われるメモリアクセス動作の種類、メモリアクセス動作が行われるストレージボリューム160、メモリアクセス動作が行われるストレージボリューム160内の位置、および/またはメモリアクセス動作が行われるデータのサイズをストレージデバイス105に伝え得る。あるいはまたはさらに、イミディエート値は、行われる動作の任意の他の属性、異なる動作の任意の属性、またはバッチの動作の任意の属性を含み得る。
通知されることに応答して(220)、オブザーバロジック150は、1つ以上のアクションをとり得る(225)。アクションは、現在行われ、そして/または過去に行われたメモリアクセス動作についての統計を集約すること、書き込まれたかまたは読み取られたストレージボリューム160の領域を追跡すること、補助記憶装置145に追跡された領域の内容を持続すること、補助記憶装置145、外部サーバ、および/またはバックアップデバイスにおけるボリュームに、追跡された領域の内容を複製することを含み得る。
クライアントロジック194は、1つ以上のアクションをとるクライアントコンポーネント110によってオプションで継続し得(230)、このことは、ストレージデバイス105において完了した1つ以上のメモリアクセス動作がオブザーバロジック150に通知されるようにする(235)。例えば、クライアントコンポーネント110は、ストレージデバイス105に通知メッセージを送信し得る。通知メッセージは、動作に関連する一意の名前、行われたメモリアクセス動作の種類、メモリアクセス動作が行われたストレージボリューム160、メモリアクセス動作が行われたストレージボリューム160内の位置、および/またはメモリアクセス動作が行われたデータのサイズ、および/または行われたメモリアクセス動作のある他の属性をオブザーバロジック150に示し得る。
通知されることに応答して(235)、オブザーバロジック150は、1つ以上のアクションをとり得る(240)。アクションは、現在行われかつ/または過去に行われたメモリアクセス動作についての統計を集約すること、書き込まれたかまたは読み取られたストレージボリューム160の領域を追跡すること、補助記憶装置145に追跡された領域の内容を持続すること、または、補助記憶装置145、外部サーバ、および/もしくはバックアップデバイスにおけるボリュームに、追跡された領域の内容を複製することを含み得る。
クライアントロジック194が行うべき追加の動作を有する場合、クライアントロジック194は、後に行われるべきメモリアクセス動作をオブザーバロジック150に通知することによって(200)、またはメモリアクセス動作(単数もしくは複数)を行うことによって(215)繰り返し得る。あるいは、さらなる動作が行われることにはなっていないが、追加の動作が予期される場合、クライアントロジック194は、1つの実施例において、追加の動作が実行する準備ができるのを待ち得る(215)。
行われたアクションおよび/または受信された通知は、複数の動作についての情報を集約し得る。データは、行われた動作の種類、動作(単数または複数)が行われたストレージボリューム160、動作(単数または複数)が行われたストレージボリューム160の領域、および/または動作(単数または複数)のある他の属性に基づいて集約され得る。
あるいはまたはさらに、メモリアクセス動作を行う前、行っている間、行った後、クライアントロジック194によってとられるアクションは、ストレージデバイス105、ストレージボリューム160、または通信インタフェース135とは別個であるがおそらく関連する手段を介して、オブザーバロジック150に通知されようにし得る。1つの実施例において、クライアントロジック194は、オブザーバロジック150にメッセージを送信し得、メッセージは、メモリアクセスコマンドが送信される通信インタフェース180とは異なる通信インタフェースを用いてかつ/または異なる種類の通信インタフェースを用いて、一式の1つ以上のメモリアクセス動作についての情報を伝える。第2の実施例において、クライアントロジック194は、動作についてより多くを知るために、ストレージデバイス105とは異なるストレージデバイス、ストレージボリューム160および/またはオブザーバロジック150がメモリ120の領域を検査することを容易にするメモリ領域に対して一式の動作を行い得る。検査されるメモリ120の領域は、進行中の動作についての情報を保持するスクラッチメモリ領域を含み得る。
クライアントコンポーネント110がストレージデバイス105を切断するかもしくはストレージデバイス105から切断されるかまたはタイムアウト満了などのイベントに応答して、オブザーバロジック150は、1つ以上のアクションをとり得る。例えば、アクションは、ストレージボリューム160の任意の領域が書き込まれたかもしくは読み取られたかどうかを検査すること、補助記憶装置145に領域の内容を持続すること、別のストレージデバイス、外部サーバ、および/もしくはバックアップデバイスに、領域の内容を複製すること、ならびに/またはメモリアクセス動作に関係するある他のアクションを含み得る。
ストレージシステム100の1つの利点は、クライアントロジック194がオブザーバロジック150からのいかなるアクションまたは応答も待つことなく、図2に例示される実施例のロジックを実行し続け得ることであり得る。あるいはまたはさらに、クライアントロジック194は、図2に例示される実施例のロジックを実行し続ける前に、オブザーバロジック150からのアクションおよび/または応答を待ち得る。
ストレージシステム100は、最高速の非持続性信号技術による場合を除き、以前に達成不可能であった性能レベルに近づく速度でデータを格納することを容易にする。従って、株式取引、データベース、または任意の他の種類のアプリケーションなどのアプリケーションは、最高速のネットワーキングフィードの理論的限界に近い速度で持続性ストレージにデータを格納し得る。クラスタ技術は、安全なバッファキャッシュを実装して、非持続性態様でのみ利用可能である速度でメモリの中におよびメモリから外に処理データセットを交換し得る。
クライアント側メモリアドレス指定可能ストレージは、並行して同期してまた非同期で異なる記憶媒体に存在し得るアプリケーションを作ることを容易にし得る。アプリケーションが何かの理由で故障した場合、本発明は、異なるマシン上で同一のアプリケーション構成にダイナミックに回復力に富むフェイルオーバーまたはリカバリを作るベースを提供する。
クライアントコンポーネント110におけるインタフェース180のような複数の通信インタフェースは、通信インタフェースを横切る性能を集約するために、かつ/または、通信インタフェースもしくは対応する相互接続のいずれでも故障するかまたはさもなければ使用不能になった場合、フェイルオーバーに対して備えるために、用いられ得る。例えば、クライアントロジック194および/またはクライアントコンポーネント110におけるアプリケーションは、ロードバランシング機構を用いることによって、通信インタフェースおよび/または対応する相互接続を横切ってメモリアクセス動作に対する要求をディスパッチし得る。ロードバランシング機構の実施例は、ラウンドロビン技術、帯域幅バランシング技術、および/または、現在公知でありまたは後に発見される任意のロードバランシング機構を含み得る。あるいはまたはさらに、動作が成功裏に完了しない場合、および/または相互接続115が切断され、論理接続が切断され、またはクライアントコンポーネント110とストレージデバイス105との間の通信の信頼性に関する任意の他のイベントなど、別のイベントが起った場合、クライアントコンポーネント110は、フェイルオーバー機構を用い得る。
図3は、ストレージシステム100におけるメモリアクセス動作を観測するフロー図を例示する。ロジックは、追加の動作、異なる動作、またはより少ない動作を含み得る。動作は、図に例示される順序とは異なる順序で実行され得る。
ストレージデバイス105のメモリ120に対するメモリアクセス動作を行う要求198は、ストレージデバイス105の通信インタフェース135において受信され得る(310)。要求198は、メモリアクセスプロトコルに準拠し得る。
メモリアクセス動作は、要求198に応答してメモリ120の一部分に対して通信インタフェース135によって行われ得る(320)。メモリの部分は、ストレージボリューム155に含まれ得、メモリの全体は、例えばメモリ120に含まれ得る。
メモリアクセス動作の1つ以上の属性が識別され得る(330)。例えば、オブザーバロジック150は、通信インタフェース135がメモリアクセス動作を完了させた後、クライアントコンポーネント110から通知メッセージを受信するかまたはストレージデバイス105において通信インタフェース135からメモリアクセス動作の属性を受信することによって、メモリ120の部分がメモリアクセス動作によって影響されたことを決定し得る。
メモリアクセス動作に関係するアクションは、メモリアクセス動作の属性に基づいて行われ得る(340)。例えば、オブザーバロジック150は、メモリアクセス動作によって影響されたメモリ120の部分を補助記憶装置145にコピーし得る。ストレージシステム100の動作は、例えば、メモリアクセス動作を行う追加の要求に対するリスニングによって終了し得る。
説明された特定の実装に関わらず、考察のすべては、限定するよりはむしろ、性質上例示的である。例えば、実装の選択された局面、特徴、もしくはコンポーネントは、メモリに格納されることとして描かれているが、本革新に一致するシステムおよび方法のすべてもしくは一部は、例えば、ハードディスク、フロッピー(登録商標)ディスク、およびCD−ROMなどの補助ストレージデバイスなどの他のコンピュータ読み取り可能記憶媒体、または現在公知であるかもしくは後に開発されるかのいずれかである他の形式のROMもしくはRAMに格納されるか、それらの全体に分散されるか、もしくはそれらから読み取られ得る。コンピュータ読み取り可能記憶媒体は、非一時的コンピュータ読み取り可能記憶媒体であり得、非一時的コンピュータ読み取り可能媒体は、CD−ROM、ROMおよびRAMなどの揮発性メモリもしくは不揮発性メモリ、または任意の他の適切なストレージデバイスを含む。
さらに、革新の特定のコンポーネントが説明されたが、革新に一致する、製造の方法、システム、および物品は、追加のコンポーネントまたは異なるコンポーネントを含み得る。例えば、プロセッサは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、離散ロジック、または他の種類の回路もしくはロジックの組み合わせとして実装され得る。同様に、メモリは、DRAM、SRAM、Flashまたは任意の他のタイプのメモリであり得る。フラグ、データ、データベース、表、実体、および他のデータ構造は、別個に格納および管理され得るか、単一のメモリもしくはデータベースに組み込まれ得るか、分散され得るか、または多くの異なる方法で論理的および物理的に編成され得る。コンポーネントは、独立して動作し得るか、または同じプログラムの一部であり得る。コンポーネントは、別個のリムーバブル回路基板などの別個のハードウェアに常駐し得るか、またはメモリから命令を実装する同じメモリおよびプロセッサなどの共通のハードウェアを共有し得る。プログラムは、単一のプログラムの部分、別個のプログラムであり得るか、またはいくつかのメモリおよびプロセッサ全体に分散され得る。
上記に考察された、プロセス、方法および/または技術を実装するそれぞれのロジック、ソフトウェアまたは命令は、コンピュータ読み取り可能媒体またはメモリ、またはキャッシュ、バッファ、RAM、リムーバブル媒体、ハードドライブ、他のコンピュータ読み取り可能記憶媒体、または任意の他の有形の媒体などの他の有形の媒体、またはこれらの任意の組み合わせにおいて提供され得る。有形の媒体は、様々な種類の揮発性および不揮発性の記憶媒体を含み得る。図に例示されるかまたは本明細書に説明される機能、行為またはタスクは、コンピュータ読み取り可能媒体内またはコンピュータ読み取り可能媒体上に格納される一式以上のロジックまたは命令に応答して実行され得る。機能、行為もしくはタスクは、特定の種類の命令セット、記憶媒体、プロセッサもしくは処理戦略に無関係であり、ソフトウェア、ハードウェア、集積回路、ファームウェア、マイクロコード、または単独もしくは組み合わせて動作する任意の種類の他のプロセッサによって行われ得る。同様に、処理戦略は、マルチプロセッシング、マルチタスキング、並列処理および/または現在公知であるかもしくは後に発見される任意の他の処理戦略を含み得る。1つの実施形態において、命令は、ローカルシステムまたはリモートシステムによって読み取られるリムーバブル媒体デバイスに格納される。他の実施形態において、ロジックもしくは命令は、コンピュータネットワークを介するかまたは電話線を介する転送のために遠隔地に格納される。さらに別の実施形態において、ロジックもしくは命令は、所与のコンピュータ、中央処理装置(「CPU」)、グラフィック処理装置(「GPU」)、またはシステム内に格納される。
本革新の様々な実施形態が説明されたが、より多くの実施形態および実装が本革新の範囲内で可能であることは当業者に明らかである。従って、添付の特許請求の範囲およびそれらの均等物を考慮する場合を除き、本革新は、限定されるべきではない。
100 ストレージシステム
105 ストレージデバイス
110 クライアントコンポーネント
115 相互接続
120 メモリ
125 プロセッサ
130 メモリコントローラ
135 通信インタフェース
140 ストレージコントローラ
145 補助記憶装置

Claims (20)

  1. クライアントコンポーネントのためのデータを格納するストレージシステムであって、
    該システムは、
    通信インタフェースと、
    該通信インタフェースを介して受信されるデータの格納のためのメモリであって、該メモリは、ストレージボリュームを含む、メモリと、
    オブザーバロジックと
    を備え、
    該通信インタフェースは、
    該メモリに対してメモリアクセス動作を実行するための要求を受信することであって、該要求は、メモリアクセスプロトコルに準拠する、ことと、
    該要求に応答して該メモリの一部分に対して該メモリアクセス動作を実行することであって、該メモリの該一部分は、該ストレージボリューム内である、ことと
    を行うように構成されており、
    該オブザーバロジックは、該メモリアクセス動作の少なくとも1つの属性を識別することと、該メモリアクセス動作の該少なくとも1つの属性の識別に応答して、該メモリアクセス動作に関連するアクションを実行することとを行うように構成されており、該通信インタフェースは、該オブザーバロジックが該メモリアクセス動作の該少なくとも1つの属性を識別することを待つことなく、該メモリに対する該メモリアクセス動作を完了するようにさらに構成されている、ストレージシステム。
  2. 前記メモリは、第1のメモリであり、前記ストレージシステムは、前記通信インタフェースと、該第1のメモリと、前記オブザーバロジックとを含むストレージデバイスを備え、前記メモリアクセスプロトコルは、前記クライアントコンポーネントに含まれる第2のメモリとストレージデバイスに含まれる該第1のメモリとの間でデータを転送するための通信プロトコルであり、該データの転送は、該クライアントコンポーネントおよび該ストレージデバイスに含まれる中央処理装置(CPU)とは無関係である、請求項1に記載のストレージシステム。
  3. 前記メモリは、前記ストレージボリュームのすべてのデータブロックに加えて、該データブロックについてのボリューム情報を含む、請求項1に記載のストレージシステム。
  4. 前記メモリアクセス動作に関係するアクションは、メモリアクセス動作についての統計の決定を含む、請求項1に記載のストレージシステム。
  5. 前記メモリアクセス動作に関係するアクションは、該メモリアクセス動作によって影響される前記メモリの領域の識別を含む、請求項1に記載のストレージシステム。
  6. 前記メモリアクセス動作に関係するアクションは、補助記憶装置への前記メモリの領域の複製をさらに含む、請求項5に記載のストレージシステム。
  7. 前記メモリと通信するプロセッサをさらに備え、該メモリは、前記オブザーバロジックを備え、該オブザーバロジックは、該プロセッサによって実行可能であり、前記通信インタフェースは、該プロセッサとは無関係に該メモリに対して前記メモリアクセス動作を実行するようにさらに構成されている、請求項1に記載のストレージシステム。
  8. コンピュータ実行可能な命令によって符号化される有形のコンピュータ読み取り可能な記憶媒体であって、該コンピュータ実行可能な命令は、ストレージデバイス内のプロセッサによって実行可能であり、該コンピュータ読み取り可能な媒体は、
    メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令であって、該メモリアクセス動作は、該ストレージデバイスの通信インタフェースによる該メモリアクセス動作を実行するための要求の受信に応答して、該プロセッサとは無関係にストレージボリュームにおいて行われ、該要求は、メモリアクセスプロトコルに準拠し、該ストレージボリュームは、該ストレージデバイスのメモリに含まれる、命令と、
    該メモリアクセス動作の少なくとも1つの属性に基づいて該メモリアクセス動作に関係するアクションを実行するように実行可能である命令と
    を含む、有形のコンピュータ読み取り可能な記憶媒体。
  9. 前記メモリアクセス動作は、Remote Direct Memory Access(RDMA)動作である、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  10. 前記メモリアクセス動作の少なくとも1つの属性を識別するための命令は、該メモリアクセス動作が完了した後に実行するように構成されている、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  11. 前記要求は、前記メモリアクセス動作の少なくとも1つの属性を示すデータを含み、該メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該要求に含まれる該データから、該少なくとも1つの属性を識別するように実行可能である、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  12. 前記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該メモリアクセス動作を実行するための要求が受信される前に、前記通信インタフェースにおいて受信される通知メッセージから、該少なくとも1つの属性を識別するようにさらに実行可能である、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  13. 前記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該メモリアクセス動作を実行するための要求が受信された後に、前記通信インタフェースにおいて受信される通知メッセージから、該少なくとも1つの属性を識別するようにさらに実行可能である、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  14. 前記メモリアクセス動作の少なくとも1つの属性を識別するように実行可能である命令は、該少なくとも1つの属性を示すデータのための前記メモリの領域を監視するようにさらに実行可能であり、該メモリアクセス動作は、第1のメモリアクセス動作であり、該第1のメモリアクセス動作の少なくとも1つの属性を示すデータは、第2のアクセス動作を実行するための要求に応答して、該メモリの領域に書き込まれる、請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  15. ストレージシステムの通信インタフェースにおいて受信されるデータからメモリアクセス動作を識別するコンピュータ実装される方法であって、
    該方法は、
    メモリに対してメモリアクセス動作を実行するための要求を受信することであって、該要求は、該通信インタフェースにおいて受信され、該要求は、メモリアクセスプロトコルに準拠している、該メモリは、ストレージボリュームを含む、ことと、
    該要求に応答して、該メモリの一部分に対して該メモリアクセス動作を実行することであって、該メモリの該一部分は、該ストレージボリューム内である、ことと、
    該ストレージシステム内のプロセッサによって該メモリアクセス動作の少なくとも1つの属性を識別することであって、該メモリアクセス動作は、該プロッセッサとは無関係に該メモリの該一部分において行われる、ことと、
    該メモリアクセス動作の該識別された少なくとも1つの属性に基づいて、該プロセッサによって該メモリアクセス動作に関係するアクションを実行することと
    を含む、方法。
  16. 前記メモリアクセス動作に関係するアクションが行われる前に、該メモリアクセス動作は完了する、請求項15に記載の方法。
  17. 前記メモリアクセス動作の少なくとも1つの属性が識別される前に、該メモリアクセス動作は完了する、請求項15に記載の方法。
  18. 前記メモリアクセス動作は、第1のメモリアクセス動作であり、該第1のメモリアクセス動作に関係するアクションを実行することは、第2のメモリアクセス動作に応答してメモリ領域に書き込むことを含む、請求項15に記載の方法。
  19. 前記メモリ領域は、フラグを含み、該フラグは、前記メモリの前記一部分が補助記憶装置に最後にコピーされて以来、該メモリの該一部分が前記メモリアクセス動作によって更新されたかどうかを示す、請求項18に記載の方法。
  20. 前記メモリアクセス動作は、前記要求を送信したクライアントコンポーネントに含まれる第2のプロセッサとは無関係に前記メモリの前記一部分において行われる、請求項15に記載の方法。
JP2012028289A 2011-02-28 2012-02-13 観測可能クライアント側メモリアクセスを用いる高性能データストレージ Active JP6067230B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/036,544 US9015426B2 (en) 2011-02-28 2011-02-28 High performance data storage using observable client-side memory access
US13/036,544 2011-02-28

Publications (2)

Publication Number Publication Date
JP2012181834A JP2012181834A (ja) 2012-09-20
JP6067230B2 true JP6067230B2 (ja) 2017-01-25

Family

ID=45654848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012028289A Active JP6067230B2 (ja) 2011-02-28 2012-02-13 観測可能クライアント側メモリアクセスを用いる高性能データストレージ

Country Status (3)

Country Link
US (1) US9015426B2 (ja)
EP (1) EP2492792A1 (ja)
JP (1) JP6067230B2 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8375227B2 (en) 2009-02-02 2013-02-12 Microsoft Corporation Abstracting programmatic representation of data storage systems
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120311262A1 (en) * 2011-06-01 2012-12-06 International Business Machines Corporation Memory cell presetting for improved memory performance
US20130024602A1 (en) * 2011-07-18 2013-01-24 Dell Products L.P. Universal Storage for Information Handling Systems
US20130232293A1 (en) * 2012-03-05 2013-09-05 Nguyen P. Nguyen High performance storage technology with off the shelf storage components
CN103377269B (zh) * 2012-04-27 2016-12-28 国际商业机器公司 传感器数据定位方法和装置
US9058122B1 (en) * 2012-08-30 2015-06-16 Google Inc. Controlling access in a single-sided distributed storage system
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9313274B2 (en) * 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
WO2015130282A1 (en) 2014-02-27 2015-09-03 Hewlett-Packard Development Company, L. P. Communication between integrated graphics processing units
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US9473421B1 (en) * 2014-08-06 2016-10-18 Fourth Cloud, Inc. Modular computer system and method
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10372335B2 (en) 2014-09-16 2019-08-06 Kove Ip, Llc External memory for virtualization
US9916095B2 (en) 2015-03-27 2018-03-13 Kove Ip, Llc Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US9959245B2 (en) 2015-06-30 2018-05-01 International Business Machines Corporation Access frequency approximation for remote direct memory access
US9836397B2 (en) 2015-11-20 2017-12-05 International Business Machines Corporation Direct memory access of dynamically allocated memory
US9448901B1 (en) * 2015-12-15 2016-09-20 International Business Machines Corporation Remote direct memory access for high availability nodes using a coherent accelerator processor interface
US10735513B2 (en) 2016-09-08 2020-08-04 Toshiba Memory Corporation Remote NVMe activation
US10778767B2 (en) * 2017-04-28 2020-09-15 International Business Machines Corporation Persistent memory replication in RDMA-capable networks
US10397096B2 (en) 2017-04-28 2019-08-27 International Business Machines Corporation Path resolution in InfiniBand and ROCE networks
US11243899B2 (en) 2017-04-28 2022-02-08 International Business Machines Corporation Forced detaching of applications from DMA-capable PCI mapped devices
US11086525B2 (en) 2017-08-02 2021-08-10 Kove Ip, Llc Resilient external memory
US20190102287A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Remote persistent memory access device
US10986011B2 (en) * 2017-10-18 2021-04-20 Google Llc Unobtrusive support for third-party traffic monitoring
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11755470B2 (en) * 2019-07-29 2023-09-12 EMC IP Holding Company, LLC System and method for reduced lock contention and improved performance
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11656985B2 (en) 2020-01-31 2023-05-23 Kove Ip, Llc External memory as an extension to local primary memory
CN113778934B (zh) * 2021-11-15 2022-02-08 伟恩测试技术(武汉)有限公司 基于PCIe的高速实时传输系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5774200A (en) * 1999-06-28 2001-01-31 Sangate Systems Inc. Intelligent splitter, system, and methods of use
US6684270B1 (en) * 2000-06-02 2004-01-27 Nortel Networks Limited Accelerated file system that recognizes and reroutes uncontested read operations to a second faster path for use in high-capacity data transfer systems
US7233984B2 (en) * 2002-11-12 2007-06-19 Microsoft Corporation Light weight file I/O over system area networks
US7076622B2 (en) * 2003-09-30 2006-07-11 International Business Machines Corporation System and method for detecting and sharing common blocks in an object storage system
JP4275504B2 (ja) * 2003-10-14 2009-06-10 株式会社日立製作所 データ転送方法
US20050216552A1 (en) * 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US7760741B2 (en) * 2005-05-18 2010-07-20 International Business Machines Corporation Network acceleration architecture
US7356573B2 (en) * 2005-07-08 2008-04-08 Cisco Technology, Inc. Apparatus and methods for data tapping in a storage area network
DE102006032503A1 (de) * 2006-07-12 2008-01-17 Fogtec Brandschutz Gmbh & Co. Kg Verfahren und Vorrichtung zur Brandbekämpfung
US8341237B2 (en) * 2006-10-23 2012-12-25 International Business Machines Corporation Systems, methods and computer program products for automatically triggering operations on a queue pair
US8706687B2 (en) * 2007-01-24 2014-04-22 Hewlett-Packard Development Company, L.P. Log driven storage controller with network persistent memory
US7809868B1 (en) * 2007-04-23 2010-10-05 Network Appliance, Inc. System and method for filtering information in a data storage system
US8055613B1 (en) * 2008-04-29 2011-11-08 Netapp, Inc. Method and apparatus for efficiently detecting and logging file system changes
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8307154B2 (en) 2009-03-03 2012-11-06 Kove Corporation System and method for performing rapid data snapshots
US8595397B2 (en) * 2009-06-09 2013-11-26 Netapp, Inc Storage array assist architecture
US9015268B2 (en) * 2010-04-02 2015-04-21 Intel Corporation Remote direct storage access
US8392670B2 (en) * 2010-04-12 2013-03-05 Hitachi, Ltd. Performance management of access to flash memory in a storage device
US20140089562A1 (en) * 2012-09-27 2014-03-27 Hitachi, Ltd. Efficient i/o processing in storage system

Also Published As

Publication number Publication date
US9015426B2 (en) 2015-04-21
JP2012181834A (ja) 2012-09-20
EP2492792A1 (en) 2012-08-29
US20120221803A1 (en) 2012-08-30

Similar Documents

Publication Publication Date Title
JP6067230B2 (ja) 観測可能クライアント側メモリアクセスを用いる高性能データストレージ
US10523757B2 (en) Interconnect delivery process
JP6310061B2 (ja) システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持
JP6202756B2 (ja) 支援型コヒーレント共有メモリ
US11086525B2 (en) Resilient external memory
US9336094B1 (en) Scaleout replication of an application
US10146632B2 (en) Efficient mechanism to replicate data for multiple controllers
US20130232181A1 (en) High availability network storage system incorporating non-shared storage suitable for use with virtual storage servers
US20150012607A1 (en) Techniques to Replicate Data between Storage Servers
US9940152B2 (en) Methods and systems for integrating a volume shadow copy service (VSS) requester and/or a VSS provider with virtual volumes (VVOLS)
US10175895B2 (en) Techniques for importation of information to a storage system
US20210064234A1 (en) Systems, devices, and methods for implementing in-memory computing
US9367398B1 (en) Backing up journal data to a memory of another node
US20220113867A1 (en) Direct response to io request in storage system with remote replication
US11055220B2 (en) Hybrid memory systems with cache management
CN111587420A (zh) 分布式存储系统快速故障恢复的方法和系统
US8108580B1 (en) Low latency synchronous replication using an N-way router
US10437754B1 (en) Diagnostic fault management controller for distributed computing
US11144232B2 (en) Storage system with efficient snapshot pair creation during synchronous replication of logical storage volumes
WO2024051292A1 (zh) 数据处理系统、内存镜像方法、装置和计算设备
US20220171672A1 (en) Storage of machine check exceptions
US11662955B2 (en) Direct memory access data path for RAID storage
US11238010B2 (en) Sand timer algorithm for tracking in-flight data storage requests for data replication
US10437471B2 (en) Method and system for allocating and managing storage in a raid storage system
US20140316539A1 (en) Drivers and controllers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067230

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250