JP2016520240A - ネットワークファイルアクセスプロトコルを通じた効率的なプログラマチックメモリアクセス - Google Patents
ネットワークファイルアクセスプロトコルを通じた効率的なプログラマチックメモリアクセス Download PDFInfo
- Publication number
- JP2016520240A JP2016520240A JP2016516744A JP2016516744A JP2016520240A JP 2016520240 A JP2016520240 A JP 2016520240A JP 2016516744 A JP2016516744 A JP 2016516744A JP 2016516744 A JP2016516744 A JP 2016516744A JP 2016520240 A JP2016520240 A JP 2016520240A
- Authority
- JP
- Japan
- Prior art keywords
- computing device
- data
- virtual memory
- memory object
- communication protocol
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer And Data Communications (AREA)
- Computer Security & Cryptography (AREA)
Abstract
実施形態は、異なるコンピューティング装置間でデータを転送する方法及びシステムを提供する。詳細には、通信セッションが第1のコンピューティング装置と第2のコンピューティング装置との間に確立される。通信セッションは、第1の通信プロトコルを用いて確立することができる。第1のコンピューティング装置は、該第1のコンピューティング装置の1又は複数のメモリブロックに結び付けられた仮想メモリオブジェクトを作成する。仮想メモリオブジェクトに対するパスが生成され、このパスは上記通信セッションを用いて第2のコンピューティング装置に送信される。それから、第2のコンピューティング装置は、第1の通信プロトコルとは異なる第2の通信プロトコルを用いて、仮想メモリオブジェクトへと/から直接、データを読み出し又は書き込むことができる。データは、ファイルシステムコマンドを用いて仮想メモリオブジェクトへと書き込まれ、仮想メモリオブジェクトから読み出される。
Description
2つの異なるコンピューティング装置間でデータを転送するとき、転送されるデータは典型的にはネットワークバッファに書き込まれる。それから、ネットワークバッファはネットワークプロトコルを用いてネットワークにわたってコピーされ、ネットワークパケットとして宛先(destination)コンピューティング装置に届けられる。それから、ネットワークパケットは、宛先コンピューティング装置におけるメモリへとコピーされる。こうしたファイル転送は典型的に、時間がかかり、データが順に書き込まれることを要し、このことは、送信元(source)コンピューティング装置と宛先コンピューティング装置との双方において、ネットワーク帯域幅及びシステムリソースに関してコストのかかる可能性がある。
上記及び他の一般的検討に関して、実施形態は作られている。さらに、比較的具体的な問題が論じられているが、実施形態は背景技術において識別される具体的な課題を解決することに限定されるべきでないことが理解されるべきである。
本発明の概要は、以下に詳細な説明においてさらに記載される概念のうち選択されたものを簡素化された形式で紹介するために提供される。本発明の概要は、請求される対象事項のうち重要な特徴又は必須の特徴を識別するものではなく、請求される対象事項の範囲の決定を支援するものとして使用すべきものでもない。
実施形態は、第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法及びシステムを提供する。詳細には、通信セッションが第1のコンピューティング装置と第2のコンピューティング装置との間に確立される。この通信セッションは、例えばトランスミッションコントロールプロトコル/インターネットプロトコル(TCP/IP)などの第1の通信プロトコルを用いて確立することができる。大きいブロックのデータの転送を実現するために、第1のコンピューティング装置は、該第1のコンピューティング装置の1又は複数のメモリブロックに結び付けられた仮想メモリオブジェクトを作成する。仮想メモリオブジェクトに対するパスが生成され、命名され、上記の確立された通信セッションを用いて第2のコンピューティング装置に送信される。いったん受信されると、第2のコンピューティング装置は、上記パスを利用して、仮想メモリオブジェクトに関連付けられた第1のコンピューティング装置のメモリロケーションから直接データを読み出し、あるいは該メモリロケーションに直接データを書き込むことができる。以下に明記されるとおり、データ送信(例えば、読み出し又は書き込み)は、第1の通信プロトコルとは異なる第2の通信プロトコルを通じて実行される。特定の実施形態において、第2の通信プロトコルは、WA、RedmondのMICROSOFTコーポレーションによるサーバメッセージブロック(SMB)プロトコルの一バージョンである。データは、第2の通信プロトコルを通じて送信されるファイルシステムコマンドを用いて仮想メモリオブジェクトに関連付けられたメモリロケーションに書き込まれ、該メモリロケーションから読み出される。
実施形態は、さらに、例えばTCP/IP通信プロトコルなどの第1の通信プロトコルを用いて第1のコンピューティング装置と第2のコンピューティング装置との間に通信セッションを確立する方法及びシステムを提供する。いったんセッションが第1のコンピューティング装置と第2のコンピューティング装置の間に確立されると、第2のコンピューティング装置は、仮想メモリオブジェクトをセットアップするように第1のコンピューティング装置に要求を送る。上記要求に応答して、第2のコンピューティング装置は、上記の作成されたメモリオブジェクトに対するパスを受信する。特定の実施形態において、仮想メモリオブジェクトは、第1のコンピューティング装置の1又は複数のメモリブロックに結び付けられる。受信したパスを用いて、第2のコンピューティング装置は、仮想メモリオブジェクトを介して第1のコンピューティング装置上のメモリロケーションから直接データを読み出し、あるいは該メモリロケーションに直接データを転送することができる。実施形態において、データ読み出し及び書き込みは、例えばSMBプロトコルの一バージョンなどの第2の通信プロトコルを通じて送信される。論じられることになるとおり、データは直接、1又は複数のファイルシステムコマンドを用いて、仮想メモリオブジェクトに関連付けられたメモリロケーションに送信され、該メモリロケーションから読み出される。
非限定的な、非排他的な実施形態が、下記の図面を参照して記載される。
本開示の1又は複数の実施形態に従う、第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送するシステムを示す。
本開示の1又は複数の実施形態に従う、第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法を示す。
本開示の1又は複数の実施形態に従う、第1のコンピューティング装置と第2のコンピューティング装置との間でメッセージを交換する方法を示す。
本開示の1又は複数の実施形態に従う、送信元から宛先へ仮想マシンを移行する方法を示す。
本開示の1又は複数の実施形態で使用され得るコンピューティング装置の例示的な物理コンポーネントを示すブロック図である。
本開示の1又は複数の実施形態で使用され得るモバイルコンピューティング装置の簡素化されたブロック図である。
本開示の1又は複数の実施形態で使用され得るモバイルコンピューティング装置の簡素化されたブロック図である。
本開示の1又は複数の実施形態で使用され得る分散コンピューティングシステムの簡素化されたブロック図である。
様々な実施形態が、添付図面を参照して以下により十分に記載される。添付図面は記載の一部を成し、具体的な例示的実施形態を示す。しかしながら、実施形態は、多くの種々の形態において実施することができ、本明細書に明記される実施形態に限定されるものと見なされるべきではない。むしろ、こうした実施形態は、本開示が充分に及び完全になり、実施形態の範囲を当業者に十分に伝えるように提供される。実施形態は、方法、システム又は装置として実施され得る。したがって、実施形態は、ハードウェア実施、全体的にソフトウェア実施、又はソフトウェア及びハードウェア態様を組み合わせる実施の形態をとり得る。ゆえに、下記の詳細な説明は、限定的な意味にとられるべきではない。
以下に詳細に説明されるとおり、本明細書に記載される方法及びシステムは、あるコンピューティング装置が、ファイルシステムコマンドを用いて、アプリケーションプログラミングインターフェース(API)から、データ通信プロトコルを通じて、別のコンピューティング装置上の物理メモリロケーションにアクセスすることを可能にする。特定の実施形態において、データ通信プロトコルは複数のチャネルをサポートすることができ、該チャネルを通して、異なるコンピューティング装置間でデータが伝達される(communicated)ことができる。論じられることになるとおり、複数のチャネルの使用は、コンピューティング装置の各々が複数の接続を確立することを可能にし、該接続を通して、データが伝達されることができる。複数のチャネルの使用は、さらに、各チャネルにわたって帯域幅集約を可能にする。さらに、データ通信プロトコルは、既に組み込まれている様々な特徴を有してもよい。こうして、ある装置上で作動するアプリケーションが、該アプリケーションにとって既知であるファイルシステムコマンドを依然として実施する間、データ通信プロトコルのカスタム特徴(custom features)を利用することができる。上記の特徴には、認証、オート・ネゴシエーション、最適パス決定、暗号化、圧縮などを含むことができる。通信プロトコルはさらに、作成すべきチャネルの数を決定し、さらに、2つのコンピューティング装置間でのトラフィックについて、どのパスが最も大きい帯域幅と最も低いレイテンシとを有するかを決定することができ得る。通信プロトコルは、さらに、例えばTCP又はリモートダイレクトメモリアクセス(RDMA)などの種々の下層のトランスポート(transports)と、どれが最も効率が良いかの自動決定とを利用することができる。
図1は、本開示の1又は複数の実施形態に従う、第1のコンピューティング装置110と第2のコンピューティング装置150との間でデータが転送され得るシステム100を示している。特定の実施形態において、第1のコンピューティング装置110はサーバコンピュータであり得、第2のコンピューティング装置はクライアントコンピュータであり得、例えば、パーソナルコンピュータ、タブレット、ラップトップ、スマートフォン、パーソナルデジタルアシスタントなどである。第1のコンピューティング装置110はサーバコンピュータとして図示及び記載され、第2のコンピューティング装置150はクライアントコンピュータとして図示及び記載されているが、第1のコンピューティング装置110がクライアントコンピュータであってもよく、第2のコンピューティング装置150がサーバコンピュータであってもよいと考えられる。さらに、図1は1つの第1のコンピューティング装置110と1つの第2のコンピューティング装置150とだけを図示しているが、1つ以上の第1及び第2のコンピューティング装置がシステム100に存在してもよいと考えられる。こうして、図2‐図4に関して本明細書に記載される方法は、一のサーバコンピュータ又は一のクライアントコンピュータによって、あるいは複数のサーバコンピュータ又は複数のクライアントコンピュータによって、実施することができる。別法として、あるいはさらに、第1のコンピューティング装置110と第2のコンピューティング装置150との各々が、クライアントコンピュータ又はサーバコンピュータであり得る。
図1に示されるとおり、第1のコンピューティング装置110は、メモリ120の1又は複数のブロックに対するアクセスを有するサーバアプリケーション115を含み得る。特定の実施形態において、メモリ120は、第1のコンピューティング装置110に対してローカルである。別の実施形態において、メモリ120は、第1のコンピューティング装置110に対してリモートであり得る。こうした場合、メモリ120は、データ転送プロトコルを用いて第1のコンピューティング装置によってアクセスされる必要があるであろう。以下に詳細に説明されるとおり、第1のコンピューティング装置110は、メモリ120の1又は複数のブロックに結び付けられた(bound)仮想メモリオブジェクト125を生成するように構成されることができる。第1のコンピューティング装置110は、さらに、パス(path)生成器130と、メモリ120及び/又は仮想メモリオブジェクト125に対するアクセスを制御するアクセス制御リスト135とを含み得る。
図1に示されるとおり、通信セッション170が、ネットワーク(図示されていない)を通じて第1のコンピューティング装置110と第2のコンピューティング装置150との間で確立されることができる。特定の実施形態において、通信セッション170は、TCP/IP通信プロトコルを用いて確立される。TCP/IPプロトコルが具体的に言及されているが、他の通信プロトコルが第1のコンピューティング装置110と第2のコンピューティング装置150との間に確立されてもよいと考えられる。
特定の実施形態において、サーバアプリケーション115は、第1のコンピューティング装置110上で実行され、第2のコンピューティング装置150からの受信された要求に基づいて第1のコンピューティング装置110と第2のコンピューティング装置150との間のデータ転送及び移行をセットアップし及び扱うように構成されることができる。例えば、第2のコンピューティング装置が、アプリケーション、仮想マシン、メッセージ、又は、第2のコンピューティング装置から第1のコンピューティング装置に転送され又は移行される必要がある他のデータを有することがあり、あるいは、逆のこともある。特定の実施形態において、サーバアプリケーション115は、第1のコンピューティング装置115上で実行される多くの種々のアプリケーションの1つであり得る。例えば、サーバアプリケーション115は、第1のコンピューティング装置110の動作全体を監督するように構成されたオペレーティングシステムであり得る。別法として、サーバアプリケーション115は、受信されたデータを第1のコンピューティング装置110上に常駐する1又は複数のデータベースへと編成するように構成されてもよい。
サーバアプリケーション115の構成にかかわらず、サーバアプリケーション115は、メモリ120に対するアクセスを有する。こうして、第2のコンピューティング装置150が、データを転送し、あるいは1又は複数のプログラム又はアプリケーションを移行するように要求するとき、サーバアプリケーション115は、確立された通信セッション170を通じて、所望される転送を通知されることができる。通知が受信されたとき、サーバアプリケーション115は、仮想メモリオブジェクト125を生成する。特定の実施形態において、仮想メモリオブジェクト125は、それから、メモリ120の中のデータの1又は複数のブロックに結び付けられる。
以下に説明されるとおり、特定の実施形態において、仮想メモリオブジェクト125は、典型的なファイルシステムにおける属性と同様の属性を含むように設定される。より詳細には、仮想メモリオブジェクト125は、データ転送を要求する1又は複数のアプリケーションにとって既知であるファイルシステムコマンドを用いて、仮想メモリオブジェクトに関連付けられた1又は複数のメモリブロックにデータが書き込まれることができるように構成される。すなわち、第2のコンピューティング装置150は、仮想メモリオブジェクト125を、例えば様々なオープン、リード(read)及びライト(write)コマンドを用いてアクセスすることができるファイルとして見ることができる。
第1のコンピューティング装置110は、さらに、仮想メモリオブジェクト125に対するパスとパス名とを生成するパス生成器130を含み得る。いったんパスが生成されると、第1のコンピューティング装置110は、例えばアクセス制御リスト135を用いて、パスについてのセキュリティ特徴を確立することができる。例えば、アクセス制御リスト135は、どのアプリケーション(ローカルのアプリケーションか、又はリモートのアプリケーション)が仮想メモリオブジェクト125にアクセスすることができるか、どのクライアントが仮想メモリオブジェクト125と関連付けられたメモリブロックとに対する書き込み許可を有するか、どのクライアントが読み出しのみのアクセスを有するか、及び、メモリのどのバイト範囲又はどのブロックが固定されるかに関して、セキュリティ特徴をセットアップすることができる。
特定の実施形態において、第1のコンピューティング装置110は、パス及びパス名を1又は複数のアプリケーションに伝達することができる。実施形態において、このアプリケーションは、第1のコンピューティング装置110に対してローカルのアプリケーションであり得る。別の実施形態において、1又は複数のアプリケーション、例えばクライアントアプリケーション155などが、第2のコンピューティング装置150上で遠隔で実行されてもよい。特定の実施形態において、パス名は、通信セッション170を用いて第2のコンピューティング装置150と共有される。システムが複数の第2のコンピューティング装置150を有する実施形態において、第2のコンピューティング装置の各々は、同じ第1のコンピューティング装置110に対して伝達することができる。
いったんクライアントアプリケーション155が仮想メモリオブジェクト125に対するパスを知ると、クライアントアプリケーション155は、ファイルシステムAPI160からの1又は複数のファイルシステムコマンドを使用して仮想メモリオブジェクト125にアクセスすることができる。例えば、クライアントアプリケーション155は、API160により確立される「オープン」コマンドを発行し、仮想メモリオブジェクト125に直接、第2の通信プロトコル180にわたってこのオープンコマンドを送信することができる。実施形態において、ファイル160システムAPIの使用は、アプリケーションレベルの変更を必要とすることなく、システムレベルにおいてパフォーマンス又はセキュリティのアップグレードを可能にする。
実施形態において、オープンコマンドは、仮想メモリオブジェクト125に結び付けられたメモリブロックにアクセスするのにポインタを利用する。結果として、クライアントアプリケーション155は、仮想メモリオブジェクト125に結び付けられたメモリブロックに関連付けられたメモリバッファに直接データを書き込むことができる。詳細には、クライアントアプリケーション155は、第2の通信プロトコル180を用いて、第1のコンピューティング装置110のメモリ120に直接アクセスすることができる。以下に詳細に論じられるとおり、第2の通信プロトコル180は、複数のチャネルをサポートすることができる。こうして、データは直接、並行して(in parallel)、メモリ120から読み出され、あるいはメモリ120に書き込まれることができる。したがって、1又は複数のアプリケーション(ローカルに第1のコンピューティング装置110上で作動するアプリケーションか、又はリモートで第2のコンピューティング装置150上で作動するアプリケーション)が、複数の非同期的要求をサブミット(submit)することができる。例えば、特定の実施形態において、オープンコマンドは、読み出しアクセスと読み出し‐書き込みアクセスとの双方を元々含む。さらに、排他モードと読み出し共有モードと読み出し/書き込み共有モードとを含む共有モードについて、サポートが与えられてもよい。上記モードの使用を通して、クライアントは、メモリ領域に対する自身の所望のアクセスモードを表現することができ、このことが、サーバが要求されたモードを認可し又は拒否することを可能にする。
上記で論じられたとおり、仮想メモリオブジェクト125は、メモリの1又は複数のブロックに結び付けられることができる。特定の実施形態において、メモリのブロックは、メモリの連続ブロック又はメモリの不連続ブロックであり得る。例えば、仮想オブジェクト125は、ブロック0乃至ブロック2を含むメモリ領域Aに結び付けられ、メモリブロック4乃至メモリブロック5を含むメモリ領域Bに結び付けられることができる。仮想メモリオブジェクト125は、不連続メモリブロックに結び付けられることがあるが、仮想メモリオブジェクト125は、クライアントアプリケーション155にとって連続しているように見え得る。こうして、クライアントアプリケーション155が仮想メモリオブジェクト125にデータを書き込むとき、クライアントアプリケーション155はデータを順次書き込むことができる。対称的に、サーバアプリケーション115は、仮想メモリオブジェクト125に関連付けられた不連続データブロックからデータを読み出し、又は該不連続データブロックにデータを書き込むときに、散乱された書き込み又は収集された読み出しをする必要があり得る。同様にして、いくつかの実施形態において、システムが限られたメモリリソースを有する場合、種々の不連続領域が、仮想メモリと物理ディスクとの混合によって後援される(backed)ことができる。
特定の実施形態において、第2の通信プロトコル180は、第1のコンピューティング装置110と第2のコンピューティング装置150との間に通信セッションを確立する。上記で論じられたとおり、第2の通信プロトコルは、例えばサーバメッセージブロック(SMB)プロトコルの一バージョンなどの、ファイル転送プロトコルである。特定の実施形態において、SMBセッションは、第1の通信セッション170が確立された後、任意の時点において確立することができる。別の実施形態において、第1の通信セッション170が、SMBセッションであり得る。さらに別の実施形態において、SMBセッションは、パスが第1のコンピューティング装置110から第2のコンピューティング装置150に伝達されたことに応答して、あるいは第2のコンピューティング装置150が第2のコンピューティング装置150からのデータ転送又は移行を受け入れるように第1のコンピューティング装置110に要求をサブミットしたことに応答して、第1のコンピューティング装置110と第2のコンピューティング装置150との間に確立することができる。
第1のコンピューティング装置110と第2のコンピューティング装置150との間のSMBセッションの確立の間、第1のコンピューティング装置110と第2のコンピューティング装置150との双方がSMBセッション内で複数の接続をサポートすることを示すように、ネゴシエーションが発生してもよい。これには、SMBプロトコルの一バージョンをネゴシエートすることを含み得る。さらに、第1のコンピューティング装置110及び/又は第2のコンピューティング装置150は、第1のコンピューティング装置110と第2のコンピューティング装置150との間の様々なインターフェース及び接続に関する情報を決定することもできる。これには、接続又はチャネルのタイプと各接続又はチャネルのスピードとが含まれる。さらに、第1のコンピューティング装置110又は第2のコンピューティング装置150のいずれかが、タイプ及びスピードによってインターフェース及び接続をソートして、上位のインターフェースを決定することができる。こうして、第1のコンピューティング装置110と第2のコンピューティング装置150との各々は、データを転送するためにさらなるチャネルが確立されるとき、どのインターフェース又はチャネルが使用されるべきかをさらに決定することができる。
より詳細に、1又は複数の接続トランスポートが、第1のコンピューティング装置110と第2のコンピューティング装置150との間で利用可能であり得る。例えば、第1のコンピューティング装置110と第2のコンピューティング装置150とは、様々なトランスポート、例えばイーサネット(登録商標)及びWi−Fi、並びに、この同じトランスポートの冗長接続、例えば、複数のネットワークインターフェースカード(NIC)などによって接続することができる。さらに、いくつかの接続トランスポートは、ある接続トランスポートのスピードに別の接続トランスポートを通じて影響を与えるRDMAなどの能力をサポートすることができる。
図1に戻ると、図示されているとおり、第2の通信プロトコル180は、クライアントアプリケーション155が仮想メモリオブジェクト125に直接アクセスすることを可能にする。こうして、クライアントアプリケーション155は、仮想メモリオブジェクト125に直接データを書き込むとき、第2の通信プロトコルの1又は複数の特徴を利用することができる。例えば、第2の通信プロトコルがSMBプロトコルの一バージョンであるシナリオにおいて、クライアントアプリケーション155は、新しいファイルシステムコマンドを作成すること、又は、クライアントアプリケーション155及び/又は第2のコンピューティング装置150にとって既知であるAPI160によって利用されるファイルシステムコマンドを再プログラミングすることを要することなく、SMBプロトコルによって提供される能力を利用することができる。こうして、クライアントアプリケーション155は、発見、認証、承認、帯域幅集約、RDMA及びTCPのサポート、RDMAを通じたゼロコピーなどを含むSMBプロトコルの能力を依然として活用すると同時に、オープン、リード及びライトなどのコマンドを利用することができる。
図2は、本開示の1又は複数の実施形態に従う、第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法200を示している。特定の実施形態において、第1のコンピューティング装置110(図1)と第2のコンピューティング装置150(図1)とのうち1又は複数が、マルチチャネルデータ通信プロトコルを通じてデータの大きいブロックを伝達する方法200を採用することができる。
方法200は、通信セッションがクライアントとサーバとの間に確立される(210)とき、始まる。クライアントとサーバとが具体的に言及されているが、方法200の動作は、2以上のクライアント又は2以上のサーバ間で実施することができると考えられる。特定の実施形態において、通信セッションは、TCP/IP通信プロトコルを用いて確立される。TCP/IP通信プロトコルが具体的に言及されているが、1又は複数の実施形態が、特化されたプロトコル又は他の帯域外プロトコルを用いてクライアント及びサーバが通信セッションを確立することができることを提供する。
いったん通信が確立されると、サーバは、クライアントからファイルデータ又はアプリケーションデータを受け入れるための要求を受信することができる(220)。以下に説明されるとおり、要求は、クライアントからサーバに仮想マシンを移行するための要求であり得る。別の実施形態において、要求は、クライアントからサーバに複数の少量のデータから成る大きいボリュームを転送するための要求であり得る。さらに別の実施形態において、要求は、クライアントからサーバにデータの大きいチャンク(chunks)を転送するための要求であり得る。
受信された要求に応答して、サーバは、仮想メモリオブジェクトを作成する(230)。特定の実施形態において、仮想メモリオブジェクトは、仮想ファイルと同種である。こうして、ファイルシステムAPIのファイルシステムコマンド(例えば、オープン、リード及びライトコマンド)を用いてアプリケーションがアクセスすることができるちょうど物理ファイルとして、仮想メモリオブジェクトは、データ通信プロトコルを通じて送信される同様のファイルシステムコマンドを用いてリモートのアプリケーションがアクセスすることができる。さらに別の実施形態において、仮想ファイルは、データが書き込まれ又は読み出されるべきバッファのインデックスを示す読み出し又は書き込みのファイルオフセットを有する、より小さいバッファの配列であってもよい。
作成プロセスの一部として、仮想メモリオブジェクトは、サーバに常駐する1又は複数の物理メモリ領域(又は、ブロック)にマップされ、結び付けられる。結び付けプロセスの一部として、サーバは、1又は複数の物理メモリ領域を登録して、メモリが別のアプリケーションによって上書きされないことを保証するのを助けることができる。1又は複数の物理メモリ領域が仮想メモリオブジェクトに結び付けられるが、サーバに常駐する1又は複数のアプリケーションは、必要とされるとおりに物理メモリ領域に依然としてアクセスすることができる。上記で論じられたとおり、各仮想メモリオブジェクトに関連付けられた物理メモリ領域は、連続的若しくは不連続的、又はこれらの組み合わせであり得る。
いったん仮想メモリオブジェクトが作成され、サーバ上に常駐する1又は複数の物理メモリにマップされ、結び付けられると、フローは動作240に進み、動作240において、仮想メモリオブジェクトに対するパスが生成される。特定の実施形態において、パスは、サーバによって、又はサーバ上に常駐するアプリケーションによって生成される。パスは、ファイル名又はパス名を含むことができ、ゆえに、1又は複数のローカルのアプリケーションと、サーバとの確立された通信セッションを有するクライアント上で実行されている1又は複数のリモートのアプリケーションとに、容易に伝達されることができる。
動作250は、パスが1又は複数のアプリケーションに伝達されることを提供する。これまでに論じられたとおり、パスは、1又は複数のリモートのアプリケーションに伝達される。別の実施形態において、パス名が、ローカルのアプリケーションに伝達されることができる。パス名はローカルのアプリケーションに伝達されるが、ローカルのアプリケーションは従来のファイルアクセス方法を用いて物理メモリ領域にアクセスすることができ、パス名を利用する必要はないと考えられる。別の実施形態において、いったんパスが確立されると、すべてのアプリケーションが、ローカルのアプリケーションでもリモートのアプリケーションでも、仮想メモリオブジェクトに関連付けられた物理メモリ領域にアクセスするのにパスを利用することを必要とされてもよい。特定の実施形態において、パスは、動作210の確立された通信セッションを用いて、クライアント又はリモートのアプリケーションに伝達される。
いったんパスがアプリケーションに伝達されると、動作260は、1又は複数のリモートのアプリケーションからのデータが、ファイル転送プロトコルを用いて仮想メモリオブジェクトへと直接受信されることを提供する。上記で論じられたとおり、リモートのアプリケーションは、ファイル転送プロトコルを通じてファイルシステムコマンドを伝達して、仮想メモリオブジェクトに関連付けられた物理メモリ領域の中のデータにアクセスする。こうして、クライアントアプリケーションが仮想メモリオブジェクトに対するパスを知っているとき、クライアントアプリケーションは、仮想メモリオブジェクトに対してオープン、リード及びライトコマンドを発行することができる。結果として、上記の方法は、リモートのアプリケーションが、このクライアントアプリケーションによってすでに知られており利用されているファイルアクセスコマンドを依然として利用すると同時に、上記で論じられた特徴(例えば、自動発見、ネゴシエーション、認証、帯域幅集約、RDMA及びTCPサポート、RDMAを通じたゼロコピーなど)などのファイル転送プロトコルの下層の特徴を利用することを可能にする。上記の方法はさらに、アプリケーション自体が何が利用可能であるかに気付いていないときでさえ、クライアント及びサーバが上記の能力を利用することを可能にし、こうして、アプリケーションに対する変更を要することなく、パフォーマンス又はセキュリティを向上させることができる。
特定の実施形態において、ファイル転送プロトコルは、サーバメッセージブロック(SMB)プロトコルのバージョン2又はより高いバージョンである。上記で論じられたとおり、SMBプロトコルは、複数のチャネルを利用するように構成されることができる。結果として、データがクライアントからサーバに転送されるとき、読み出し及び書き込みが様々なチャネルを通じて並行して送信されることができる。さらに、複数のチャネル及び/又はRDMAを利用するSMBを通じた大きい読み出し及び書き込みが、送信元及び宛先の双方においてゼロコピーの機能性を有する。こうして、クライアントからサーバへの(又は、その逆の)データは、アプリケーションメモリへと、又はアプリケーションメモリから直接転送されることができ、このことは、オペレーティングシステムにおいてアプリケーションメモリとデータバッファとの間でデータをコピーする必要を除去する。結果として、転送は、ローカルのプロセッサ及びキャッシュなどによって行われるべき作業をわずかに必要とし得るか、あるいはまったく必要としなくなり得る。
下記は、方法200が利用され得る一例示的実施形態である。例えば、2つの異なるノード(例えば、送信元ノードと宛先ノード)上で作動する複数のプロセスが存在し得る。ノードの一方(送信元ノード)は、1ギガバイトのデータを他方のノード(宛先ノード)に転送したい。送信元ノードは、仮想メモリオブジェクトを作成し、1ギガバイトのデータをメモリに登録する。それから、送信元は、宛先ノードにパス名を提供する。宛先ノードは、ファイルシステムAPIからのファイルシステムコマンドを用いて仮想メモリオブジェクトを開き、並行する読み出しを発行してメモリをローカルに引き出す(pull)。いったん動作が終了されると、仮想メモリオブジェクトは閉じられる。
別の例として、複数のプロセスが、2つの異なるノード(例えば、送信元ノード及び宛先ノード)上で作動し得る。ノードの一方(送信元ノード)が、1ギガバイトのデータを他方のノード(宛先ノード)に転送したい。送信元ノードは、宛先ノードが所与のサイズ(例えば、1ギガバイト)の仮想メモリオブジェクトを作成することを要求する。この要求に応答して、宛先ノードは、仮想メモリオブジェクトを生成し、1又は複数の物理メモリブロックを仮想メモリオブジェクトに結び付け、仮想メモリオブジェクトに対するパスを生成する。それから、宛先ノードは、このパスを送信元ノードに提供する。送信元ノードは、ファイルシステムAPIからファイルシステムコマンドを用いて仮想メモリオブジェクトを開き、並行する書き込みを発行してデータ転送を可能にする。いったん動作が終了されると、仮想メモリオブジェクトは閉じられる。
本開示の1又は複数の実施形態は、さらに、少量のデータで大量のメッセージを交換したい1又は複数のメッセージングプロトコルによって利用されてもよい。メッセージは典型的に小さいサイズであるが、本開示の実施形態は、大量のメッセージをより効率的に転送するのに使用することができる。
図3を参照すると、図3は、本開示の1又は複数の実施形態に従う、第1のコンピューティング装置と第2のコンピューティング装置との間のメッセージの転送を可能にする方法300を示している。実施形態において、メッセージの転送は、第1のコンピューティング装置110(図1)と第2のコンピューティング装置150(図1)との間であり得る。方法300は、通信セッションがクライアントとサーバとの間に確立される(310)とき、始まる。特定の実施形態において、通信セッションは、TCP/IP通信プロトコル又は他のこうした通信プロトコルに基づく。
サーバがクライアントからメッセージ転送要求を受信するとき、サーバは、仮想メモリオブジェクトを作成する(320)。特定の実施形態において、仮想メモリオブジェクトは、サーバの1又は複数の物理メモリロケーションにマップされる。さらに、各メモリロケーションは、メッセージスロット識別子として使用される1又は複数のオフセットに関連付けられる。
いったん仮想メモリオブジェクトが作成されると、フローは動作330に進み、動作330において、仮想メモリオブジェクトに対するパスが生成される。それから、このパスは、動作310の上記の確立された通信セッションを用いて、クライアント装置、及び/又はクライアント装置に常駐する1若しくは複数のアプリケーションに伝達される(340)。
いったんパスが1又は複数のアプリケーションに伝達されると、クライアントアプリケーションからのデータが、仮想メモリオブジェクトに関連付けられた物理メモリロケーションのオフセットへと直接受信される。実施形態において、データは、例えばSMB2又はSMB3プロトコルなどのファイル転送プロトコルを用いて、オフセットへと直接受信される。それから、フローは動作360に進み、動作360において、サーバ、又はサーバ上で作動しているアプリケーションは、クライアントアプリケーションからメッセージを受信した物理メモリオフセットに対する対応するコマンドをポストする(posts)。
例えば、上記で記載された方法300を用いて、いったん仮想メモリオブジェクトが作成され、パスがクライアントに送信されると、クライアントは、仮想メモリの中の任意のオフセットに対する任意の読み出し又は書き込みをポストすることができる。いったんコマンドが受信され、オフセットに記憶されると、サーバは、同じオフセットに対する対応する読み出し又は書き込みをポストする。コマンドの各々はペアにされ、処理される。この例を前進させると、クライアントは、ファイルシステムAPIを用いて仮想メモリオブジェクトの中のオフセット1に対する書き込みをポストし得る。応答において、サーバは、仮想メモリオブジェクトの中のオフセット1に対する対応する読み出しをポストする。クライアントからの書き込みとサーバからの読み出しとはペアにされて処理され、クライアントの書き込みからのデータは、サーバの対応する読み出しを介して、仮想メモリオブジェクトのオフセットに関連付けられた物理メモリに直接書き込まれる。さらに、メッセージは逆のやり方で送られてもよいと考えられる(すなわち、クライアントが読み出しをポストし、サーバが対応する書き込みを送る)。
1又は複数の実施形態が、上記記載の方法を用いた書き込み及び読み出しが並行して処理され得ることを提供する。例えば、クライアント装置が、仮想メモリオブジェクトのオフセット1‐100に書き込まれる100の書き込みを送出し得る(処理の順序はクライアントにとって問題にならないと仮定する)。さらに、サーバが、仮想メモリオブジェクトのオフセット1‐1000における1000の読み出しをポストしている場合がある。クライアントからの各書き込みが受信されるとき、サーバは、ポストされている1000の読出しのうち100を即時処理し、これに応じてデータを書き込むことができる。読み出し及び書き込みの各々が対応する識別子(すなわち、メモリロケーションに対するオフセット)を有するため、クライアント及びサーバは、どのコマンドが処理されたかが分かる。さらに、サーバは、書き込みが所与のオフセットについて1回だけ発生することを、該オフセットに対するその後の書き込みを失敗させることによって、保証することもできる。こうして、クライアントが接続性を失い、その後再確立し、オブジェクトを再び開き、書き込みをリプレイした場合、この書き込みは、サーバによって1回だけ処理されることになる。
1又は複数の実施形態が、方法200及び方法300が組み合わせられてもよいことを提供する。すなわち、メモリの第1の部分がメッセージを受信してメモリオフセットに記憶するのに使用される場合、及び、メモリの第2の部分がデータのブロックを記憶するのに使用される場合に、仮想ファイルが生成されてもよい。こうした実施形態において、データが受信されるとき、データがメッセージであり、メモリの中の特定オフセットに対するアクセスを有さなければならないことを示すように、特定のビットが設定されてもよい(図3に関して論じられたとおり)。上記の例において、ビットが設定されない場合、データは、特定のメモリロケーションに書き込まれるべきである(図2に関して論じられたとおり)。
本開示の実施形態は、さらに、仮想マシンをシャットダウンすることなく第1の物理コンピューティング装置から第2の物理コンピューティング装置への仮想マシンの活動中の移行(ライブマイグレーション)を実行することに使用されてもよい。特定の実施形態において、仮想マシンは、物理マシンの一部分に常駐している。仮想マシンは、オペレーティングシステムと1又は複数のさらなるアプリケーションとを作動させることができる。さらに、1つの物理マシンが複数の仮想マシンを有してもよいと考えられる。
図4は、本開示の1又は複数の実施形態に従う、送信元から宛先への仮想マシンのライブマイグレーションを実行する方法400を示している。特定の実施形態において、通信セッションが送信元と宛先との間に確立される(410)。送信元と宛先との間の通信は、TCP/IP通信プロトコル又は他の通信プロトコルを用いて確立される。特定の実施形態において、上記で図1に関して論じられた第1のコンピューティング装置150が宛先であり得、第2のコンピューティング装置150が送信元であり得る。特定の実施形態において、仮想マシンは、送信元において、該仮想マシンが転送されるべき時点で、実行されている。転送の間、データが仮想マシンに連続的に書き込まれる可能性があるとき、仮想マシンは、サービスにおける何らかの中断がデータを破損し、又は転送される仮想マシンを動作不能にする可能性があるため、シャットダウンされない。
いったん送信元と宛先との間の通信が確立されると、送信元は、転送されるべき仮想マシンの1又は複数の特徴を決定する。上記の詳細には、仮想マシンの意図された使用、仮想マシンに関連付けられた1又は複数のネットワーク接続、仮想マシンのサイズ(すなわち、いったん送信元から宛先への移行が完成するのに、どれほどの量のメモリを仮想マシンが必要とすることになるか)等を含むことができる。仮想マシンの特徴が確立されたとき、送信元は、上記の確立された通信セッションを通じて宛先にメモリ要件を伝達する。
応答において、宛先は、仮想ファイルオブジェクトを作成する(430)。特定の実施形態において、仮想ファイルオブジェクトのサイズは、確立されたメモリ要件のサイズに対応する。こうして、仮想マシンが2ギガバイトのデータを必要とした場合、仮想ファイルオブジェクトは2ギガバイトのサイズとして確立される。本明細書に記載される他の実施形態と同様に、いったん仮想ファイルオブジェクトが作成されると、宛先の1又は複数の物理メモリブロックが、仮想ファイルオブジェクトに結び付けられる。特定の実施形態において、宛先において作成される仮想ファイルオブジェクトは、送信元において仮想マシンによって使用されるメモリの構成にマッチする。さらに、宛先における仮想ファイルオブジェクトは、仮想マシンのためのメモリとして、宛先によって最終的に使用されることになる。こうした構成は、RDMAでのゼロコピー転送のフル活用を可能にする。
特定の実施形態において、宛先は、仮想オブジェクトのための1又は複数のセキュリティパラメータをさらに作成してもよい。宛先は、仮想ファイルオブジェクトに関連付けられたパスをさらに生成してもよい。上記で論じられたとおり、パスは、仮想ファイルオブジェクト、より詳細には仮想ファイルオブジェクトが指し示す宛先の物理メモリにアクセスするのに、送信元によって利用される。
いったんパスが作成されると、パス名が送信元に伝達される(440)。特定の実施形態において、パスは、これまでに確立された通信セッションを用いて送信元に伝達される。
それから、フローは動作450に進み、動作450において、送信元は、例えばSMBプロトコルの一バージョンなどのファイルアクセスプロトコルを通じて、ファイルシステムコマンドを用いて仮想ファイルに対して直接、仮想マシンのコピーを開始する。より詳細に、送信元は、データの1又は複数のローカルブロックからのデータをコピーし、送信元にとって既知であるファイルシステムAPIからのファイルシステムコマンドを用いて、ファイルアクセスプロトコルを通じてパス名を用いて仮想ファイルに対する書き込み要求を送信する。上記で論じられたとおり、1又は複数の実施形態が、宛先において作成されるメモリオブジェクトのレイアウトが送信元における仮想マシンによって使用されるレイアウトにマッチすることを提供する。このことは、送信元が送信元ホストにおける仮想マシンのメモリロケーションから書き込み動作のためのファイルオフセットを導出することを可能にする。
特定の実施形態において、送信元から宛先へのコマンドは、非同期の書き込みコマンドである。さらに、論じられたとおり、ファイル転送プロトコルは、マルチチャネル能力をサポートする。これに応じて、複数の非同期書き込みが、同時に、又は実質的に同時に実行されることができる。本明細書に開示された他のデータ転送と同様に、動作450の送信元と宛先との間の(及び、宛先と送信元との間の)データ転送は、RDMAを用いたゼロコピーデータ転送であり得る。
特定の実施形態において、仮想マシンの必須部分(例えば、仮想マシンの実行に必要な、必要とされるコンポーネント)が、仮想マシンの非必須部分が送信元から宛先に移行される前に、送信元から宛先に移行される。別の実施形態において、仮想マシンは、順に移行される。いったん仮想マシンの十分な部分が宛先に送信されて仮想マシンが作動することが可能になると、仮想マシンは、宛先において実行されることができる。その後、仮想マシンに対するいかなる読み出し又は書き込みも、新しく提示された(stated)仮想マシンによって扱われることができる。
論じられたとおり、仮想マシンは、ファイル転送進捗の間、実行していてもよく、データは、仮想マシンのメモリに連続的に書き込まれることができる。このようなものとして、方法400は動作460へと進み、動作460において、ビットマップが送信元において維持される。特定の実施形態において、仮想マシンが、ビットマップを更新することができる。別の実施形態において、ビットマップは、送信元によって維持されてもよい。特定の実施形態において、ビットマップの中の各ビットは、転送される仮想マシンのメモリ部分を表す。こうして、ビットマップは、仮想マシンのどの部分が宛先に転送されたかと、さらに、転送された部分のうちどれが、その対応する部分が移行されてから後にデータを更新されたかとを追跡する。例えば、メモリ部分の各修正は、ビットマップの対応ビットが設定されることをもたらす。こうして、仮想マシンの一部分が移行されていて、それから、その部分によりホストされるデータが後に変更された場合、ビットマップは、データが後で変更されたことと、データのうち上記部分が再び移行されるべきであることとを示すであろう。
特定の実施形態において、仮想マシンは、マルチパス(multi-pass)アプローチを用いて移行される。こうして、各通過(pass)が完了した後(最大で、通過の最大数まで)、ビットマップは、移行が完了したかを決定するようにチェックされる(470)。移行が完了していない場合、フローは動作450に戻り、プロセスが繰り返される。しかしながら、動作470において移行が完了していると決定される場合、ビットマップは、データに対する何らかの最終的な変更についてチェックされる。データに対する変更があった場合、更新されたデータが宛先に送られ、送信元における仮想マシンはシャットダウンされる。
本明細書に記載される実施形態及び機能性は、デスクトップコンピュータシステム、有線及びワイヤレスのコンピューティングシステム、モバイルコンピューティングシステム(例えば、携帯電話、ネットブック、タブレット又はスレートタイプコンピュータ、ノートブックコンピュータ、及びラップトップコンピュータ)、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、並びにメインフレームコンピュータを制限なく含む多くのコンピューティングシステムを介して動作し得る。
さらに、本明細に記載される実施形態及び機能性は、分散システム(例えば、クラウドベースのコンピューティングシステム)にわたって動作することができ、これにおいて、アプリケーション、機能性、メモリ、データ記憶及び取り出し、並びに様々な処理機能が、インターネット又はイントラネットなどの分散コンピューティングネットワークを通じて、互いからリモートで動作し得る。様々なタイプのユーザインターフェース及び情報が、搭載されたコンピューティング装置ディスプレイを介して、あるいは1又は複数のコンピューティング装置に関連付けられたリモートのディスプレイユニットを介して表示されることができる。例えば、様々なタイプのユーザインターフェース及び情報は、様々なタイプのユーザインターフェース及び情報が投影される壁面において表示され、相互作用されてもよい。本開示の実施形態が実施され得る多くのコンピューティングシステムとの相互作用には、キーストロークエントリ、タッチスクリーンエントリ、音声又は他のオーディオエントリ、及びジェスチャエントリなどが含まれる。ジェスチャエントリにおいては、関連付けられたコンピューティング装置が、コンピューティング装置の機能性を制御するユーザジェスチャを捕捉し及び解釈する検出(例えば、カメラ)機能性を備える。
図5‐図7及び関連する記載は、本開示の実施形態が実施され得る様々な動作環境の議論を提供する。しかしながら、図5‐図7に関して例示され論じられる装置及びシステムは、例示及び図示の目的のためであり、本明細書に記載される実施形態を実施するのに利用することができる多数のコンピューティング装置構成の限定ではない。
図5は、本開示の1又は複数の実施形態で使用され得るコンピューティング装置110の物理コンポーネント(すなわち、ハードウェア)を示すブロック図である。以下に記載されるコンピューティング装置コンポーネントは、第1のコンピューティング装置110と第2のコンピューティング装置150とを含む上記で記載されたコンピューティング装置に適し得る。基本構成において、コンピューティング装置110は、少なくとも1つの処理ユニット502とシステムメモリ504とを含み得る。コンピューティング装置の構成及びタイプに依存して、システムメモリ504は、これらに限られないが、揮発性記憶装置(例えば、ランダムアクセスメモリ)、不揮発性記憶装置(例えば、読取専用メモリ)、フラッシュメモリ、又はこうしたメモリの任意の組み合わせを含み得る。システムメモリ504は、オペレーティングシステム505と、サーバアプリケーション115、パス生成器130、アクセス制御リスト135及びAPI160(コンピューティング装置が第2のコンピューティング装置150を表す実施形態において)などのソフトウェアアプリケーション520を作動させるのに適した1又は複数のプログラムモジュール506とを含み得る。オペレーティングシステム505は、例えば、コンピューティング装置110の動作を制御するのに適し得る。さらに、本開示の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、又は任意の他のアプリケーションプログラムと連動して実施されてもよく、いかなる特定のアプリケーション又はシステムにも限定されない。この基本構成は、図5において、破線508内の上記コンポーネントによって示されている。コンピューティング装置110は、さらなる特徴又は機能性を有してもよい。例えば、コンピューティング装置110は、(取外し可能及び/又は取外し不能の)さらなるデータ記憶装置、例えば、磁気ディスク、光学ディスク又はテープなどをさらに含んでもよい。こうしたさらなる記憶装置は、図5において、取外し可能記憶装置509及び取外し不能記憶装置510によって示されている。
上記で述べられたとおり、複数のプログラムモジュール及びデータファイルが、システムメモリ504に記憶されることができる。処理ユニット502上で実行されている間、プログラムモジュール506は、これらに限られないが、図2‐図4に例示された方法200、300及び400の段階のうち1又は複数を含むプロセスを実行することができる。本開示の実施形態に従って使用することができる他のプログラムモジュールには、電子メール及びコンタクトアプリケーション、ワードプロセシングアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、図面又はコンピュータ支援のアプリケーションプログラム等を含み得る。
さらに、本開示の実施形態は、ディスクリートの電子的要素を含む電気回路、パッケージ化され又は集積されたロジックゲートを含む電子チップ、マイクロプロセッサを利用する回路において、あるいは電子的要素又はマイクロプロセッサを含む単一のチップ上で実施されてもよい。例えば、本開示の実施形態は、図5に例示されたコンポーネントの各々又は多くが単一の集積回路上に統合され得るシステム・オン・チップ(SOC)を介して実施されてもよい。こうしたSOC装置には、1又は複数の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット及び様々なアプリケーション機能性を含むことができ、これらのすべてが、単一の集積回路としてチップサブストレート上に統合される(あるいは「焼かれる」)。SOCを介して動作するとき、本明細書に記載された、サーバアプリケーション115、パス生成器130、アクセス制御リスト135及びAPI160に関する機能性は、単一の集積回路(チップ)上で、コンピューティング装置110の他のコンポーネントと統合されたアプリケーション固有ロジックを介して動作することができる。本開示の実施形態は、これらに限られないが機械的、光学的、流体の及び量子学的テクノロジーを含む、例えばAND、OR及びNOTなどの論理演算を実行する能力がある他のテクノロジーを用いて実施されてもよい。さらに、本開示の実施形態は、汎用目的コンピュータ内で、あるいは任意の他の回路又はシステムにおいて実施されてもよい。
コンピューティング装置110は、1又は複数の入力装置512、例えば、キーボード、マウス、ペン、サウンド入力装置、タッチ入力装置等をさらに有し得る。出力装置514、例えば、ディスプレイ、スピーカー、プリンタ等が、さらに含まれてもよい。前述された装置は例であり、他が使用されてもよい。コンピューティング装置104は、他のコンピューティング装置518との通信を可能にする1又は複数の通信接続516を含み得る。適切な通信接続516の例には、これらに限られないが、RF送信器、受信器及び/又はトランシーバ回路、ユニバーサルシリアルバス(USB)、パラレル及び/又はシリアルポートが挙げられる。
本明細書において使用される、用語のコンピュータ可読媒体には、コンピュータ記憶媒体を含み得る。コンピュータ記憶媒体には、例えばコンピュータ可読命令、データ構造又はプログラムモジュールなどの情報の記憶のために任意の方法又はテクノロジーにおいて実施される、揮発性及び不揮発性の、取外し可能及び取外し不能の媒体を含み得る。システムメモリ504、取外し可能記憶装置509及び取外し不能記憶装置510はすべて、コンピュータ記憶媒体の例(すなわち、メモリ記憶装置)である。コンピュータ記憶媒体には、RAM、ROM、電気的消去可能読取専用メモリ(EEPROM)、フラッシュメモリ若しくは他のメモリテクノロジー、CD‐ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は、情報を記憶するのに使用することができ且つコンピューティング装置110がアクセスすることができる任意の他の製造品を含み得る。いずれのこうしたコンピュータ記憶媒体も、コンピューティング装置110の一部であり得る。コンピュータ記憶媒体には、搬送波、又は他の伝播され若しくは変調されたデータ信号を含まない。
通信媒体は、搬送波又は他のトランスポートメカニズムなどの変調されたデータ信号における、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータによって具現化されることができ、任意の情報配信(delivery)媒体を含む。用語「変調されたデータ信号」は、情報を信号の中にエンコードするやり方で設定され又は変更された1又は複数の特性を有する信号を表し得る。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体と、音響、無線周波数(RF)、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。
図6A及び図6Bは、本開示の実施形態が実施され得るモバイルコンピューティング装置600、例えば、携帯電話、スマートフォン、タブレットパーソナルコンピュータ、ラップトップコンピュータなどを示している。図6Aを参照すると、実施形態を実施するためのモバイルコンピューティング装置600の一実施形態が示されている。基本構成において、モバイルコンピューティング装置600は、入力要素と出力要素との双方を有するハンドヘルドコンピュータである。モバイルコンピューティング装置600は、典型的に、ディスプレイ605と、ユーザがモバイルコンピューティング装置600に情報を入れることを可能にする1又は複数の入力ボタン610とを含む。モバイルコンピューティング装置600のディスプレイ605はさらに、入力装置(例えば、タッチスクリーンディスプレイ)として機能し得る。含まれる場合には、任意的な側面の入力要素615がさらなるユーザ入力を可能にする。側面の入力要素615は、ロータリースイッチ、ボタン、又は任意の他のタイプの手動入力要素であり得る。代替的な実施形態において、モバイルコンピューティング装置600は、より多くの又はより少ない入力要素を組み入れ得る。例えば、ディスプレイ605は、いくつかの実施形態においてタッチスクリーンでなくてもよい。さらに別の代替的な実施形態において、モバイルコンピューティング装置600は、セルラー電話などのポータブルな電話システムである。モバイルコンピューティング装置600は、任意的なキーパッド635をさらに含み得る。任意的なキーパッド635は、物理キーパッド、又はタッチスクリーンディスプレイ上に生成される「ソフト」キーパッドであり得る。様々な実施形態において、出力要素には、グラフィカルユーザインターフェース(GUI)を示すディスプレイ605、視覚的インジケータ620(例えば、発光ダイオード)、及び/又はオーディオトランスデューサ625(例えば、スピーカー)が挙げられる。いくつかの実施形態において、モバイルコンピューティング装置600は、ユーザに触覚フィードバックを提供する振動トランスデューサを組み入れる。さらに別の実施形態において、モバイルコンピューティング装置600は、外部装置に信号を送信し又は外部装置から信号を受信する入力及び/又は出力ポート、例えば、オーディオ入力(例えば、マイクロフォンジャック)、オーディオ出力(例えば、ヘッドフォンジャック)、及びビデオ出力(例えば、HDMI(登録商標)ポート)などを組み入れる。
図6Bは、モバイルコンピューティング装置の一実施形態のアーキテクチャを示すブロック図である。すなわち、モバイルコンピューティング装置600は、いくつかの実施形態を実施するようにシステム(すなわち、アーキテクチャ)602を組み入れることができる。一実施形態において、システム602は、1又は複数のアプリケーション(例えば、ブラウザ、電子メール、カレンダー、コンタクトマネージャ、メッセージングクライアント、ゲーム、及びメディアクライアント/プレーヤ)を作動させる能力がある「スマートフォン」として実施される。いくつかの実施形態において、システム602は、統合されたパーソナルデジタルアシスタント(PDA)及びワイヤレス電話などの、コンピューティング装置として統合される。
1又は複数のアプリケーションプログラム666が、メモリ662へとロードされ、オペレーティングシステム664上で又はオペレーティングシステム664に関連して作動することができる。アプリケーションプログラムの例には、電話ダイヤラープログラム、電子メールプログラム、個人情報管理(PIM)プログラム、ワードプロセシングプログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージングプログラムなどが挙げられる。システム602は、メモリ662内に不揮発性記憶エリア668をさらに含む。不揮発性記憶エリア668は、システム602が電源を落とされた場合に失われるべきでない永続的な情報を記憶するのに使用されることができる。アプリケーションプログラム666は、不揮発性記憶エリア668の中の情報を使用し、不揮発性記憶エリア668に情報を記憶することができ、例えば、電子メールアプリケーションにより使用される電子メール又は他のメッセージなどである。さらに、同期アプリケーション(図示されていない)がシステム602上に常駐し、ホストコンピュータ上に常駐する対応する同期アプリケーションと相互作用して、不揮発性記憶エリア668に記憶された情報をホストコンピュータに記憶された対応する情報と同期させた状態に保つようにプログラムされる。十分理解されるであろうとおり、他のアプリケーションが、本明細書に記載されたサーバアプリケーション115、パス生成器130、アクセス制御リスト135及びAPI160(コンピューティング装置600が第2のコンピューティング装置150を表す実施形態において)を含め、メモリ662へとロードされ、モバイルコンピューティング装置600上で作動してもよい。
システム602はパワーサプライ670を有し、パワーサプライ670は1又は複数のバッテリとして実施され得る。パワーサプライ670はさらに、バッテリを補足し又は再充電するACアダプタ又は電力供給型ドッキングクレードルなどの、外部電源を含み得る。
システム602は、無線周波数通信を送信し及び受信する機能を実行する無線672をさらに含み得る。無線672は、通信事業者又はサービスプロバイダを介して、システム602と「外部世界」との間のワイヤレス接続性を容易にする。無線672への送信及び無線672からの送信は、オペレーティングシステム664の制御下で行われる。換言すると、無線672によって受信される通信はオペレーティングシステム664を介してアプリケーションプログラム666に広められることができ、逆もまた同様であり得る。
視覚的インジケータ620は、視覚的通知を提供するのに使用されることができ、かつ/あるいは、オーディオインターフェース674は、オーディオトランスデューサ625を介して可聴通知を生み出すのに使用されることができる。例示される実施形態において、視覚的インジケータ620は発光ダイオード(LED)であり、オーディオトランスデューサ625はスピーカーである。これらの装置は、アクティブ化されるとき、プロセッサ660及び他のコンポーネントがバッテリパワーを温存するためにシャットダウンする場合があるとしても、通知メカニズムによって命じられるある継続時間についてオンのままであるように、パワーサプライ670に直接接続されてもよい。LEDは、ユーザが装置のパワーオン(powered-on)ステータスを示すようにアクションをとるまで、無期限にオンのままであるようにプログラムされてもよい。オーディオインターフェース674は、ユーザに可聴信号を提供し、ユーザから可聴信号を受信するのに使用される。例えば、オーディオトランスデューサ625に結合されることに加えて、オーディオインターフェース674は、可聴入力を受信するように、例えば電話会話を容易にするように、マイクロフォンにさらに結合されてもよい。本開示の実施形態に従い、マイクロフォンは、以下に説明されるとおり、通知の制御を容易にするようにオーディオセンサの役割をさらに果たしてもよい。システム602は、さらに、搭載されたカメラ630の動作が静止画像、ビデオストリームなどを記録することを可能にするビデオインターフェース676を含み得る。
システム602を実施するモバイルコンピューティング装置600は、さらなる特徴又は機能性を有してもよい。例えば、モバイルコンピューティング装置600は、(取外し可能及び/又は取外し不能の)さらなるデータ記憶装置、例えば、磁気ディスク、光学ディスク又はテープなどをさらに含んでもよい。こうしたさらなる記憶装置は、図6Bにおいて、不揮発性記憶エリア668によって示されている。
モバイルコンピューティング装置600によって生成され又は捕捉され、システム602を介して記憶されるデータ/情報は、上記で記載されたとおり、モバイルコンピューティング装置600上にローカルに記憶されてもよい。あるいは、該データは、モバイルコンピューティング装置600と、モバイルコンピューティング装置600に関連付けられた別個のコンピューティング装置、例えば、インターネットなどの分散コンピューティングネットワークの中のサーバコンピュータとの間の、無線672を介して又は有線接続を介して装置がアクセスすることができる任意数の記憶媒体に記憶されてもよい。十分理解されるであろうとおり、上記のデータ/情報は、無線672を介して又は分散コンピューティングネットワークを介して、モバイルコンピューティング装置600を介してアクセスすることができる。同様にして、上記のデータ/情報は、電子メール及び協同的なデータ/情報共有システムを含む周知のデータ/情報転送及び記憶手段に従って、記憶及び使用のためにコンピューティング装置間で容易に転送されることができる。
図7は、上記で記載されたとおりの種々のコンピューティング装置間でデータを転送するシステムのアーキテクチャの一実施形態を示している。第1のコンピューティング装置110と第2のコンピューティング装置150との間で転送されるデータは、種々の通信チャネル又は他のストレージタイプにおいて記憶されることができる。例えば、様々な文書が、ディレクトリサービス722、ウェブポータル724、メールボックスサービス726、インスタントメッセージングストア728又はソーシャルネットワーキングサイト730を用いて記憶されることができる。サーバアプリケーション115、パス生成器130及びアクセス制御リスト135は、本明細書に記載される方法及び特徴を可能にする上記タイプのシステムのうち任意のものなどを使用することができる。サーバ720は、第1のコンピューティング装置110及び第2のコンピューティング装置150への、及び、第1のコンピューティング装置110及び第2のコンピューティング装置150からのデータを提供することができる。一例として、サーバ720は、ウェブサーバであり得る。サーバ720は、ネットワーク715を通してウェブを通じて、第1のコンピューティング装置110か又は第2のコンピューティング装置150のいずれかにデータを提供することができる。例として、第1のコンピューティング装置110及び第2のコンピューティング装置150は、パーソナルコンピュータ、タブレットコンピューティング装置、及び/又はモバイルコンピューティング装置600(例えば、スマートフォン)において具現化されてもよい。こうした実施形態のいずれも、ストア716からコンテンツを取得することができる。
本開示の実施形態は、例えば、本開示の実施形態に従う方法、システム及びコンピュータプログラム製品のブロック図及び/又は動作例示を参照して、上記で説明されている。ブロックの中に記述された機能/動きは、いずれかのフローチャートに示されたとおりの順序から外れて生じてもよい。例えば、連続して示された2つのブロックが、実際には実質的に同時に実行されてもよく、あるいは、該2つのブロックが、関与する機能性/動きに依存して、時に逆の順序で実行されてもよい。
本出願において提供される1又は複数の実施形態についての記載及び例示は、いかなる方法でも、請求されるとおりの本開示の範囲を限定し又は制限するようには意図されない。本出願において提供される実施形態、例及び詳細は、所有を告げ、請求される実施形態のベストモードを他者が作って使用することを可能にするのに十分であると考えられる。請求される実施形態は、本出願において提供されるいずれかの実施形態、例又は詳細に限定されるものとみなされるべきではない。組み合わせにおいて図示され記載されているか、あるいは別個に図示され記載されているかにかかわらず、種々の特徴(構造的及び方法論的の双方)が、特定の一組の特徴を有する実施形態を生み出すために選択的に含まれ又は省略されるように意図される。本出願の記載及び例示を提供された当業者は、請求される実施形態のより広い範囲から逸脱しない、本出願において具現化される全体的な発明概念のより広い態様の主旨の範囲内に入る変形、修正及び代わりの実施形態を想像し得る。
Claims (10)
- 第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法であって、
第1の通信プロトコルを用いて前記第1のコンピューティング装置と前記第2のコンピューティング装置との間に通信セッションを確立するステップと、
前記第1のコンピューティング装置に仮想メモリオブジェクトを作成するステップと、
前記仮想メモリオブジェクトを、前記第1のコンピューティング装置の1又は複数のメモリブロックに結び付けるステップと、
前記仮想メモリオブジェクトに対するパスを生成するステップと、
前記通信セッションを用いて前記第2のコンピューティング装置に前記パスを送信するステップと、
前記仮想メモリオブジェクトを用いて前記第1のコンピューティング装置の前記1又は複数のメモリブロックへと直接データを受け入れるステップと、
を含む方法。 - 前記第1の通信プロトコルはトランスミッションコントロールプロトコル(TCP)である、請求項1に記載の方法。
- 前記第1のコンピューティング装置の前記1又は複数のメモリブロックへと直接データを受け入れるステップは、前記第1の通信プロトコルとは異なる第2の通信プロトコルを通じて前記第1のコンピューティング装置に伝達されるデータを受け入れることを含む、請求項1に記載の方法。
- 前記第2の通信プロトコルはサーバメッセージブロック(SMB)プロトコルである、請求項3に記載の方法。
- 前記仮想メモリオブジェクトへと直接データを受け入れるステップは、複数のチャネルを通じて並行して前記データを受け入れることを含む、請求項1に記載の方法。
- 前記仮想メモリオブジェクトへと直接データを受け入れるステップは、前記第2のコンピューティング装置から1又は複数のファイルシステムコマンドを受け入れることを含み、前記1又は複数のファイルシステムコマンドは、ファイルシステムアプリケーションプログラミングインターフェース(API)から選択される、請求項1に記載の方法。
- 第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法であって、
第1の通信プロトコルを用いて前記第1のコンピューティング装置と前記第2のコンピューティング装置との間に通信セッションを確立するステップと、
前記第1のコンピューティング装置に、前記第2のコンピューティング装置から前記第1のコンピューティング装置にデータを転送するための要求を送るステップと、
前記要求に応答して、前記第2のコンピューティング装置において、仮想メモリオブジェクトに対するパスを受信するステップであって、前記仮想メモリオブジェクトは前記第1のコンピューティング装置の1又は複数のメモリブロックに結び付けられる、ステップと、
前記仮想メモリオブジェクトを用いて前記1又は複数のメモリブロックに直接データを転送するステップであって、該転送するステップは、前記第1の通信プロトコルとは異なる第2の通信プロトコルを用いて生じ、前記データは、前記第2のコンピューティング装置によって伝達されるファイルシステムコマンドによって前記仮想メモリオブジェクトを用いて前記1又は複数のメモリブロックに転送される、ステップと、
を含む方法。 - 前記第1の通信プロトコルはトランスミッションコントロールプロトコル(TCP)である、請求項7に記載の方法。
- 1又は複数のプロセッサにより実行されるとき、第1のコンピューティング装置と第2のコンピューティング装置との間でデータを転送する方法を実行するコンピュータ実行可能命令をエンコードしたコンピュータ可読記憶媒体であって、前記方法は、
第1の通信プロトコルを用いて前記第1のコンピューティング装置と前記第2のコンピューティング装置との間に通信セッションを確立するステップと、
前記第1のコンピューティング装置に仮想メモリオブジェクトを作成するステップと、
前記仮想メモリオブジェクトを、前記第1のコンピューティング装置の1又は複数のメモリブロックに結び付けるステップと、
前記仮想メモリオブジェクトに対するパスを生成するステップと、
前記通信セッションを用いて前記第2のコンピューティング装置に前記パスを送信するステップと、
前記仮想メモリオブジェクトを用いて前記第1のコンピューティング装置の前記1又は複数のメモリブロックへと直接データを受け入れるステップと、
を含む、コンピュータ可読記憶媒体。 - 前記第1の通信プロトコルはトランスミッションコントロールプロトコル(TCP)である、請求項9に記載のコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/904,756 US10404520B2 (en) | 2013-05-29 | 2013-05-29 | Efficient programmatic memory access over network file access protocols |
US13/904,756 | 2013-05-29 | ||
PCT/US2014/039633 WO2014193861A2 (en) | 2013-05-29 | 2014-05-28 | Efficient programmatic memory access over network file access protocols |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016520240A true JP2016520240A (ja) | 2016-07-11 |
Family
ID=51059579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016516744A Pending JP2016520240A (ja) | 2013-05-29 | 2014-05-28 | ネットワークファイルアクセスプロトコルを通じた効率的なプログラマチックメモリアクセス |
Country Status (12)
Country | Link |
---|---|
US (2) | US10404520B2 (ja) |
EP (1) | EP3005114B1 (ja) |
JP (1) | JP2016520240A (ja) |
KR (1) | KR20160014043A (ja) |
CN (1) | CN105359105B (ja) |
AU (1) | AU2014274331A1 (ja) |
BR (1) | BR112015028817A2 (ja) |
CA (1) | CA2910353A1 (ja) |
MX (1) | MX2015016349A (ja) |
RU (1) | RU2015151007A (ja) |
TW (1) | TW201502803A (ja) |
WO (1) | WO2014193861A2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9641614B2 (en) | 2013-05-29 | 2017-05-02 | Microsoft Technology Licensing, Llc | Distributed storage defense in a cluster |
US10404520B2 (en) * | 2013-05-29 | 2019-09-03 | Microsoft Technology Licensing, Llc | Efficient programmatic memory access over network file access protocols |
CN104765999B (zh) * | 2014-01-07 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 一种对用户资源信息进行处理的方法、终端及服务器 |
CN107179878B (zh) * | 2016-03-11 | 2021-03-19 | 伊姆西Ip控股有限责任公司 | 基于应用优化的数据存储的方法和装置 |
US10546144B2 (en) * | 2016-05-05 | 2020-01-28 | International Business Machines Corporation | Dynamically excluding sensitive information from system snapshot |
US10417174B2 (en) * | 2016-06-24 | 2019-09-17 | Vmware, Inc. | Remote direct memory access in a virtualized computing environment |
US10169149B2 (en) * | 2016-09-06 | 2019-01-01 | International Business Machines Corporation | Standard and non-standard dispersed storage network data access |
US10657097B1 (en) | 2016-09-28 | 2020-05-19 | Amazon Technologies, Inc. | Data payload aggregation for data storage systems |
US11281624B1 (en) | 2016-09-28 | 2022-03-22 | Amazon Technologies, Inc. | Client-based batching of data payload |
US10810157B1 (en) * | 2016-09-28 | 2020-10-20 | Amazon Technologies, Inc. | Command aggregation for data storage operations |
US10496327B1 (en) | 2016-09-28 | 2019-12-03 | Amazon Technologies, Inc. | Command parallelization for data storage systems |
US11204895B1 (en) | 2016-09-28 | 2021-12-21 | Amazon Technologies, Inc. | Data payload clustering for data storage systems |
US10437790B1 (en) | 2016-09-28 | 2019-10-08 | Amazon Technologies, Inc. | Contextual optimization for data storage systems |
CN106790420B (zh) * | 2016-11-30 | 2019-11-26 | 华为技术有限公司 | 一种多会话通道建立方法和系统 |
US10997132B2 (en) * | 2017-02-07 | 2021-05-04 | Oracle International Corporation | Systems and methods for live data migration with automatic redirection |
EP3603025B1 (en) * | 2017-03-29 | 2023-01-25 | Amazon Technologies, Inc. | Migration of information via storage devices |
US10552122B2 (en) | 2017-05-02 | 2020-02-04 | Mastercard International Incorporated | Systems and methods for customizable regular expression generation |
CN107704548A (zh) * | 2017-09-26 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种存储介质和对象数据的存储方法、装置及设备 |
CN108600308B (zh) * | 2018-03-20 | 2021-08-06 | 新华三技术有限公司 | 数据上传方法、装置、存储介质和服务器 |
US10785271B1 (en) * | 2019-06-04 | 2020-09-22 | Microsoft Technology Licensing, Llc | Multipoint conferencing sessions multiplexed through port |
CN115328408B (zh) * | 2022-10-14 | 2023-01-03 | 联想凌拓科技有限公司 | 用于数据处理的方法、装置、设备及介质 |
Family Cites Families (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR9204660A (pt) | 1991-12-20 | 1993-06-22 | Ibm | Sistema de rede de computadores que engloba uma interface para sistemas de computadores pequenos(scsi)para dispositivos de scsi nao locais |
US5404529A (en) * | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
DE69521101T2 (de) | 1994-10-31 | 2001-10-18 | Ibm | Gemeinsam genutzte virtuelle Platten mit anwendungstransparenter Wiedergewinnung |
US6085234A (en) | 1994-11-28 | 2000-07-04 | Inca Technology, Inc. | Remote file services network-infrastructure cache |
US6012129A (en) * | 1997-03-31 | 2000-01-04 | International Business Machines Corporation | Apparatus and method allocating virtual memory upon demand |
US6363411B1 (en) | 1998-08-05 | 2002-03-26 | Mci Worldcom, Inc. | Intelligent network |
US6167446A (en) * | 1997-11-03 | 2000-12-26 | Inca Technology, Inc. | Automatically configuring network-name-services |
US6279032B1 (en) | 1997-11-03 | 2001-08-21 | Microsoft Corporation | Method and system for quorum resource arbitration in a server cluster |
US6178529B1 (en) | 1997-11-03 | 2001-01-23 | Microsoft Corporation | Method and system for resource monitoring of disparate resources in a server cluster |
US6173374B1 (en) | 1998-02-11 | 2001-01-09 | Lsi Logic Corporation | System and method for peer-to-peer accelerated I/O shipping between host bus adapters in clustered computer network |
US6356863B1 (en) * | 1998-09-08 | 2002-03-12 | Metaphorics Llc | Virtual network file server |
US7774469B2 (en) | 1999-03-26 | 2010-08-10 | Massa Michael T | Consistent cluster operational data in a server cluster using a quorum of replicas |
US6845395B1 (en) | 1999-06-30 | 2005-01-18 | Emc Corporation | Method and apparatus for identifying network devices on a storage network |
US6895591B1 (en) | 1999-10-18 | 2005-05-17 | Unisys Corporation | Virtual file system and method |
US6633919B1 (en) * | 1999-11-18 | 2003-10-14 | International Business Machines Corporation | Method, system and program product for managing the flow of data between senders and receivers of a computing environment |
US6714968B1 (en) * | 2000-02-09 | 2004-03-30 | Mitch Prust | Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server |
US6654902B1 (en) | 2000-04-11 | 2003-11-25 | Hewlett-Packard Development Company, L.P. | Persistent reservation IO barriers |
US7127518B2 (en) | 2000-04-17 | 2006-10-24 | Circadence Corporation | System and method for implementing application functionality within a network infrastructure |
US6990606B2 (en) | 2000-07-28 | 2006-01-24 | International Business Machines Corporation | Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters |
US6651110B1 (en) * | 2000-09-28 | 2003-11-18 | Rockwell Automation Technologies, Inc. | Configurable object for industrial control and monitoring networks |
US6816817B1 (en) * | 2000-09-28 | 2004-11-09 | Rockwell Automation Technologies, Inc. | Networked control system with real time monitoring |
US6832118B1 (en) * | 2000-09-29 | 2004-12-14 | Rockwell Automation Technologies, Inc. | Programmable network control component and system of components |
US6954881B1 (en) | 2000-10-13 | 2005-10-11 | International Business Machines Corporation | Method and apparatus for providing multi-path I/O in non-concurrent clustering environment using SCSI-3 persistent reserve |
US6965936B1 (en) | 2000-12-06 | 2005-11-15 | Novell, Inc. | Method for detecting and resolving a partition condition in a cluster |
US6622229B2 (en) * | 2001-02-28 | 2003-09-16 | International Business Machines Corporation | Virtual memory structure |
US7127565B2 (en) | 2001-08-20 | 2006-10-24 | Spinnaker Networks, Inc. | Method and system for safely arbitrating disk drive ownership using a timestamp voting algorithm |
US7277952B2 (en) | 2001-09-28 | 2007-10-02 | Microsoft Corporation | Distributed system resource protection via arbitration and ownership |
US7631066B1 (en) | 2002-03-25 | 2009-12-08 | Symantec Operating Corporation | System and method for preventing data corruption in computer system clusters |
US7603670B1 (en) * | 2002-03-28 | 2009-10-13 | Symantec Operating Corporation | Virtual machine transfer between computer systems |
US7240098B1 (en) | 2002-05-09 | 2007-07-03 | Cisco Technology, Inc. | System, method, and software for a virtual host bus adapter in a storage-area network |
WO2004032039A1 (ja) * | 2002-10-04 | 2004-04-15 | Sony Corporation | データ管理システム及びデータ管理方法、仮想メモリ装置及び仮想メモリの制御方法、リーダ/ライタ装置、並びにicモジュール・アクセス装置及びicモジュールのアクセス制御方法 |
US7131003B2 (en) | 2003-02-20 | 2006-10-31 | America Online, Inc. | Secure instant messaging system |
US20050080982A1 (en) | 2003-08-20 | 2005-04-14 | Vasilevsky Alexander D. | Virtual host bus adapter and method |
US7114053B2 (en) * | 2003-08-21 | 2006-09-26 | Texas Instruments Incorporated | Virtual-to-physical address conversion in a secure system |
US7168071B2 (en) | 2003-09-30 | 2007-01-23 | Intel Corporation | Method and system of permitting stack allocation to programs having open-world features |
US20050132154A1 (en) | 2003-10-03 | 2005-06-16 | International Business Machines Corporation | Reliable leader election in storage area network |
US7673066B2 (en) * | 2003-11-07 | 2010-03-02 | Sony Corporation | File transfer protocol for mobile computer |
US7590737B1 (en) | 2004-07-16 | 2009-09-15 | Symantec Operating Corporation | System and method for customized I/O fencing for preventing data corruption in computer system clusters |
US20060074940A1 (en) | 2004-10-05 | 2006-04-06 | International Business Machines Corporation | Dynamic management of node clusters to enable data sharing |
JP2006107158A (ja) | 2004-10-06 | 2006-04-20 | Hitachi Ltd | ストレージネットワークシステム及びアクセス制御方法 |
US7260678B1 (en) | 2004-10-13 | 2007-08-21 | Network Appliance, Inc. | System and method for determining disk ownership model |
US8365301B2 (en) | 2005-02-22 | 2013-01-29 | Microsoft Corporation | Peer-to-peer network communication |
US7350074B2 (en) | 2005-04-20 | 2008-03-25 | Microsoft Corporation | Peer-to-peer authentication and authorization |
US7529878B2 (en) * | 2005-04-29 | 2009-05-05 | Sigmatel, Inc. | Method and system of memory management |
US7739677B1 (en) | 2005-05-27 | 2010-06-15 | Symantec Operating Corporation | System and method to prevent data corruption due to split brain in shared data clusters |
WO2007015183A1 (en) | 2005-08-01 | 2007-02-08 | Koninklijke Philips Electronics N.V. | Organizing content using a dynamic profile |
WO2007040201A1 (ja) | 2005-10-04 | 2007-04-12 | Sharp Kabushiki Kaisha | 移動局装置、基地局装置、移動局装置の使用周波数帯域マッピング方法、位置管理装置、移動局装置の位置登録方法、ページング方法、及びこれらを実行するプログラム及び記録媒体 |
US8347373B2 (en) * | 2007-05-08 | 2013-01-01 | Fortinet, Inc. | Content filtering of remote file-system access protocols |
KR200429667Y1 (ko) * | 2006-07-28 | 2006-10-26 | 조용설 | 군복의 부착물 부착장치 |
US8667076B2 (en) * | 2006-07-28 | 2014-03-04 | Microsoft Corporation | Mapping universal plug and play discovered items to an SMB location |
US7925809B2 (en) | 2006-10-24 | 2011-04-12 | Apple Inc. | Systems and methods for storage management in a data processing device |
US8504794B1 (en) * | 2006-11-01 | 2013-08-06 | Nvidia Corporation | Override system and method for memory access management |
WO2008065122A2 (en) | 2006-11-27 | 2008-06-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Node registering method |
US7786901B2 (en) | 2007-04-03 | 2010-08-31 | Motorola, Inc. | Key press registration in an electronic device with moveable housings |
GB2449118A (en) | 2007-05-11 | 2008-11-12 | Ericsson Telefon Ab L M | Host Identity Protocol Rendezvous Servers which store information about nodes connected to other servers and forward address requests |
US7778986B2 (en) | 2007-08-29 | 2010-08-17 | International Business Machines Corporation | Securing transfer of ownership of a storage object from an unavailable owner node to another node |
US7783666B1 (en) | 2007-09-26 | 2010-08-24 | Netapp, Inc. | Controlling access to storage resources by using access pattern based quotas |
US7809776B1 (en) * | 2007-11-30 | 2010-10-05 | Netapp, Inc. | System and method for supporting change notify watches for virtualized storage systems |
US8472431B2 (en) | 2008-01-24 | 2013-06-25 | At&T Intellectual Property I, L.P. | System and method of providing IMS services to users on terminating non IMS devices |
US8893160B2 (en) * | 2008-06-09 | 2014-11-18 | International Business Machines Corporation | Block storage interface for virtual memory |
US8719473B2 (en) | 2008-09-19 | 2014-05-06 | Microsoft Corporation | Resource arbitration for shared-write access via persistent reservation |
US7840730B2 (en) | 2008-06-27 | 2010-11-23 | Microsoft Corporation | Cluster shared volumes |
US8046467B2 (en) | 2008-08-29 | 2011-10-25 | Microsoft Corporation | Maintaining client affinity in network load balancing systems |
US8225019B2 (en) | 2008-09-22 | 2012-07-17 | Micron Technology, Inc. | SATA mass storage device emulation on a PCIe interface |
US8838850B2 (en) | 2008-11-17 | 2014-09-16 | Violin Memory, Inc. | Cluster control protocol |
US8041987B2 (en) | 2008-11-10 | 2011-10-18 | International Business Machines Corporation | Dynamic physical and virtual multipath I/O |
US8185049B2 (en) | 2008-12-29 | 2012-05-22 | General Instrument Corporation | Multi-mode device registration |
US20100241731A1 (en) * | 2009-03-17 | 2010-09-23 | Gladinet, Inc. | Method for virtualizing internet resources as a virtual computer |
US8417899B2 (en) | 2010-01-21 | 2013-04-09 | Oracle America, Inc. | System and method for controlling access to shared storage device |
US8443231B2 (en) | 2010-04-12 | 2013-05-14 | Symantec Corporation | Updating a list of quorum disks |
US8219769B1 (en) | 2010-05-04 | 2012-07-10 | Symantec Corporation | Discovering cluster resources to efficiently perform cluster backups and restores |
US8381017B2 (en) | 2010-05-20 | 2013-02-19 | International Business Machines Corporation | Automated node fencing integrated within a quorum service of a cluster infrastructure |
US9053339B2 (en) | 2010-10-27 | 2015-06-09 | Hytrust, Inc. | System and method for secure storage of virtual machines |
CN101997918B (zh) | 2010-11-11 | 2013-02-27 | 清华大学 | 异构san环境中的海量存储资源按需分配的实现方法 |
US8806030B2 (en) | 2010-12-06 | 2014-08-12 | Microsoft Corporation | Multichannel connections in file system sessions |
EP2652915B1 (en) | 2010-12-17 | 2015-02-18 | Telefonaktiebolaget L M Ericsson (PUBL) | Ethernet ring node with improved recovery time after a link failure |
US10108630B2 (en) | 2011-04-07 | 2018-10-23 | Microsoft Technology Licensing, Llc | Cluster unique identifier |
US9331955B2 (en) | 2011-06-29 | 2016-05-03 | Microsoft Technology Licensing, Llc | Transporting operations of arbitrary size over remote direct memory access |
US8677085B2 (en) | 2011-08-29 | 2014-03-18 | Vmware, Inc. | Virtual machine snapshotting in object storage system |
KR101378309B1 (ko) * | 2011-11-22 | 2014-03-28 | 에스케이텔레콤 주식회사 | 채팅 중 http를 이용한 파일 전송을 위한 장치 및 기록매체 |
US8938550B2 (en) | 2011-12-15 | 2015-01-20 | Microsoft Corporation | Autonomous network streaming |
US8738701B2 (en) | 2012-02-28 | 2014-05-27 | Microsoft Corporation | Arbitration of disk ownership in a storage pool |
US9678863B2 (en) * | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US20130346532A1 (en) | 2012-06-21 | 2013-12-26 | Microsoft Corporation | Virtual shared storage in a cluster |
US9021050B2 (en) * | 2012-08-31 | 2015-04-28 | Yume, Inc. | Network service system and method with off-heap caching |
US20140086100A1 (en) | 2012-09-26 | 2014-03-27 | Avaya, Inc. | Multi-Chassis Cluster Synchronization Using Shortest Path Bridging (SPB) Service Instance Identifier (I-SID) Trees |
JP6191022B2 (ja) * | 2013-02-20 | 2017-09-06 | パナソニックIpマネジメント株式会社 | アクセス装置、情報記録装置およびアクセスシステム |
US10404520B2 (en) * | 2013-05-29 | 2019-09-03 | Microsoft Technology Licensing, Llc | Efficient programmatic memory access over network file access protocols |
US9641614B2 (en) | 2013-05-29 | 2017-05-02 | Microsoft Technology Licensing, Llc | Distributed storage defense in a cluster |
-
2013
- 2013-05-29 US US13/904,756 patent/US10404520B2/en active Active
-
2014
- 2014-04-21 TW TW103114401A patent/TW201502803A/zh unknown
- 2014-05-28 BR BR112015028817A patent/BR112015028817A2/pt not_active IP Right Cessation
- 2014-05-28 KR KR1020157036923A patent/KR20160014043A/ko not_active Application Discontinuation
- 2014-05-28 RU RU2015151007A patent/RU2015151007A/ru not_active Application Discontinuation
- 2014-05-28 CN CN201480031323.5A patent/CN105359105B/zh active Active
- 2014-05-28 CA CA2910353A patent/CA2910353A1/en not_active Abandoned
- 2014-05-28 AU AU2014274331A patent/AU2014274331A1/en not_active Abandoned
- 2014-05-28 MX MX2015016349A patent/MX2015016349A/es unknown
- 2014-05-28 EP EP14734629.0A patent/EP3005114B1/en active Active
- 2014-05-28 WO PCT/US2014/039633 patent/WO2014193861A2/en active Application Filing
- 2014-05-28 JP JP2016516744A patent/JP2016520240A/ja active Pending
-
2019
- 2019-06-11 US US16/437,928 patent/US10826749B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN105359105A (zh) | 2016-02-24 |
US10826749B2 (en) | 2020-11-03 |
CN105359105B (zh) | 2018-12-18 |
WO2014193861A3 (en) | 2015-01-22 |
TW201502803A (zh) | 2015-01-16 |
US10404520B2 (en) | 2019-09-03 |
WO2014193861A2 (en) | 2014-12-04 |
US20140359144A1 (en) | 2014-12-04 |
RU2015151007A (ru) | 2017-06-01 |
KR20160014043A (ko) | 2016-02-05 |
US20190296957A1 (en) | 2019-09-26 |
MX2015016349A (es) | 2016-03-16 |
EP3005114A2 (en) | 2016-04-13 |
BR112015028817A2 (pt) | 2017-07-25 |
CA2910353A1 (en) | 2014-12-04 |
AU2014274331A1 (en) | 2015-11-12 |
EP3005114B1 (en) | 2020-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10826749B2 (en) | Efficient programmatic memory access over network file access protocols | |
US20150331873A1 (en) | Sharing a virtual hard disk across multiple virtual machines | |
US10095705B2 (en) | Integrated data retention policy for solid state and asymmetric access | |
US10503419B2 (en) | Controlling storage access by clustered nodes | |
US11144372B2 (en) | Cross-platform stateless clipboard experiences | |
US20170199788A1 (en) | Latency-reduced document change discovery | |
CN109906453B (zh) | 建立用于有状态云服务的安全会话的方法、系统 | |
US20140372524A1 (en) | Proximity Operations for Electronic File Views | |
US11893205B2 (en) | Real-time gestures in shared electronic canvases | |
US20220237026A1 (en) | Volatile memory acquisition | |
US20230393861A1 (en) | Using interchangeable non-compute resources for cloud-based applications | |
WO2022164612A1 (en) | Volatile memory acquisition | |
WO2023075894A1 (en) | Real-time gestures in shared electronic canvases |