JP6420253B2 - 互換性を保つオフロード・トークン・サイズの拡大 - Google Patents

互換性を保つオフロード・トークン・サイズの拡大 Download PDF

Info

Publication number
JP6420253B2
JP6420253B2 JP2015548028A JP2015548028A JP6420253B2 JP 6420253 B2 JP6420253 B2 JP 6420253B2 JP 2015548028 A JP2015548028 A JP 2015548028A JP 2015548028 A JP2015548028 A JP 2015548028A JP 6420253 B2 JP6420253 B2 JP 6420253B2
Authority
JP
Japan
Prior art keywords
token
data
sub
tokens
offload
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
JP2015548028A
Other languages
English (en)
Other versions
JP2016505960A5 (ja
JP2016505960A (ja
Inventor
グリーン,ダスティン・エル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016505960A publication Critical patent/JP2016505960A/ja
Publication of JP2016505960A5 publication Critical patent/JP2016505960A5/ja
Application granted granted Critical
Publication of JP6420253B2 publication Critical patent/JP6420253B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Description

[0001] データを転送する1つのメカニズムは、そのデータをソース位置のファイルから主メモリーに読み出すこと、そしてそのデータを主メモリーから宛先位置に書き込むことである。環境によっては、これは比較的小さいデータに対しては容認可能に作用することもあるが、データが増えるに連れて、このデータを読み取ってこのデータを他の位置に転送するのに要する時間は長くなる。加えて、ネットワークを通じてデータにアクセスする場合、このネットワークが、データをソース位置から宛先位置に転送するときに、追加の遅延を負わせるおそれがある。更に、セキュリティの問題が記憶構成の複雑さと結びついて、データ転送を複雑化するおそれもある。
[0002] 本明細書において特許請求する主題は、欠点を解消する実施形態にも、以上で説明したような環境だけで動作する実施形態にも限定されない。むしろ、この背景は、本明細書において説明する実施形態を実施することができる技術分野の一例を例示するために設けられた。
[0003] 端的に言うと、本明細書において説明する主題は、オフロード技術に関する。態様では、オフロード・プロバイダー(offload provider)に拡大トークン(larger token)を使用させるメカニズムについて説明する。拡大トークンは、物理的でも仮想的でもよい。オフロード・リード・コマンドに応答して、拡大トークンを作成することができ、拡大トークンからのデータを、それよりも小さいサイズの多数のトークンに分割または注入(inject)することができる。オフロード・ライト・コマンドに応答して、多数のトークンからのデータを組み合わせて拡大トークンにすること、および/または抽出してバルク・データを得るために使用することができる。
[0004] この摘要は、詳細な説明において以下で更に詳しく説明する主題の一部の態様を端的に識別するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0005] 「本明細書において説明する主題」という句は、文脈が明らかに別のことを示さない限り、詳細な説明において説明される主題を指す。「態様」(aspects)という用語は、「少なくとも1つの態様」として読解されてしかるべきである。詳細な説明において説明される主題の態様を識別することは、特許請求する主題の主要な特徴または必須の特徴を識別することを意図するのではない。
[0006] 本明細書において説明する主題の以上で説明した態様、および他の態様について、一例としてそして限定ではなく、添付図面に例示する。添付図面では、同様の参照番号は同様のエレメントを示すこととする。
図1は、本明細書において説明する主題の態様を組み込むことができる汎用計算環境例を表すブロック図である。 図2は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。 図3は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。 図4は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。 図5は、本明細書において説明する主題の態様にしたがって、1つの拡大トークンを1つ以上のそれよりも小さいサブトークンによって表す方式の一例を示す図である。 図6は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。 図7は、本明細書において説明する主題の態様にしたがって行うことができるアクション例を概略的に表す流れ図である。 図8は、本明細書において説明する主題の態様にしたがって行うことができるアクション例を概略的に表す流れ図である。 図9は、本明細書において説明する主題の態様にしたがって行うことができるアクション例を概略的に表す流れ図である。
定義
[0012] 「本明細書において説明する主題」という句は、文脈が明らかに別のことを示さない限り、詳細な説明において説明される主題を指す。「態様」(aspects)という用語は、「少なくとも1つの態様」として読解されてしかるべきである。詳細な説明において説明される主題の態様を識別することは、特許請求する主題の主要なまたは必須の特徴を識別することを意図するのではない。
[0013] 本明細書において使用する場合、「含む」という用語およびその変形は、「含むが限定されない」ことを意味する、制約のない用語として読解されることとする。「または」(or)という用語は、文脈が明らかに別のことを示さない限り、「および/または」として読解されることとする。「〜に基づく」という用語は、「少なくとも部分的に〜に基づく」として読解することとする。「一実施形態」(one embodiment)および「実施形態」(an embodiment)という用語は、「少なくとも1つの実施形態」として読解されることとする。「他の実施形態」という用語は、「少なくとも1つの他の実施形態」として読解されることとする。
[0014] 本明細書において使用する場合、「a」、「an」、および「the」のような用語は、示された品目またはアクションの1つ以上を含むこととする。特に、請求項において、ある品目を引用するときは、一般に、少なくとも1つのそのような品目があることを意味し、あるアクションを引用するときは、そのアクションの少なくとも1つのインスタンスが実行されることを意味する。
[0015] 本明細書では、「第1の」、「第2の」、「第3の」等という用語が使用される場合もときにはあり得る。追加のコンテキストがない場合、請求項におけるこれらの用語の使用は、順序付けを暗示することは意図しておらず、むしろ識別の目的で使用される。例えば、「第1バージョン」および「第2バージョン」という句は、第1バージョンが最初のバージョンであり第2バージョンよりも前に作られたことを必ずしも意味する訳ではなく、第1バージョンが第2バージョンの前に要求されるまたは動作させられることを意味するのでもない。むしろ、これらの句は異なるバージョンを識別するために使用される。
[0016] 見出しは便宜上に過ぎない。所与の話題についての情報は、見出しがその話題を示す章以外でも見られることもある。
[0017] 明示的および暗示的な他の定義も以下に含まれる場合がある。
動作環境例
[0018] 図1は、本明細書において説明する主題の態様を実現することができる、適した計算システム環境100の一例を示す。計算システム環境100は、適した計算環境の一例に過ぎず、本明細書において説明する主題の態様の使用範囲や機能性に関して限定を示唆することは全く意図していない。また、計算環境100が、動作環境例100に図示されるコンポーネントのいずれの1つまたはその組み合わせに関しても何ら依存性や用件を有するように解釈しては決してならない。
[0019] 本明細書において説明する主題の態様は、多数の他の汎用または特殊目的計算システム環境あるいは構成でも動作する。良く知られている計算システム、環境、または構成の内、本明細書において説明する主題の態様と共に使用するのに適すると考えられる例には、パーソナル・コンピューター、ベア・メタル上でも仮想マシンとしてでもよいサーバー・コンピューター、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサー・システム、マルチコントローラ・ベースのシステム、セット・トップ・ボックス、プログラマブルまたはプログラマブルではない消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、パーソナル・ディジタル・アシスタント(PDA)、ゲーミング・デバイス、プリンター、セット・トップ、メディア・センター、または他のアプライアンスを含むアプライアンス、自動車埋め込みまたは取り付け型計算デバイス、その他の移動体デバイス、セル・フォン、ワイヤレス・フォン、および有線フォンを含む電話デバイス、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれる。
[0020] 本明細書において説明する主題の態様は、コンピューターによって実行されるプログラム・モジュールのような、コンピューター実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象データ型を実装する。本明細書において説明する主題の態様は、分散型計算環境において実施することもできる。分散型計算環境では、タスクは、通信ネットワークを通じてリンクされたリモート処理デバイスによって実行される。分散型計算環境では、プログラム・モジュールは、メモリー記憶デバイスを含むローカルおよびリモート双方のコンピューター記憶媒体に配置することができる。
[0021] あるいはまたは加えて、本明細書において説明する機能性は、少なくとも部分的に1つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、そして限定ではなく、使用することができる例示的なタイプのハードウェア・ロジック・コンポーネントには、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定プログラム集積回路(ASIC)、特定プログラム標準製品(ASSP)、システム−オン−チップ・システム(SOC)(System-on-Chip System)、複合プログラマブル論理デバイス(CPLD)等が含まれる。
[0022] 図1を参照すると、本明細書において説明する主題の態様を実現するシステム例は、コンピューター110の形態となっている汎用計算デバイスを含む。コンピューターは、命令を実行することができる任意の電子デバイスを含むことができる。コンピューター110のコンポーネントは、処理ユニット120、システム・メモリー130、およびシステム・メモリーから処理ユニット120までを含む種々のシステム・コンポーネントを結合する1つ以上のシステム・バス(システム・バス121によって代表される)を含むことができる。システム・バス121は、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス・アーキテクチャの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャーは、業界標準アーキテクチャー(ISA)バス、マイクロ・チャネル・アーキテクチャー(MCA)バス、拡張ISA(EISA)バス、ビデオ電子規格連合(VESA)ローカル・バス、およびMezzanineバスとしても知られる周辺コンポーネント相互接続(PCI)バス、周辺素子相互接続拡張(PCI−X)バス、高度グラフィクス・ポート(AGP)、およびPCIエクスプレス(PCIe)を含む。
[0023] 処理ユニット120は、ハードウェア・セキュリティ・デバイス122に接続することができる。セキュリティ・デバイス122は、コンピューター110の種々の態様の安全性を確保するために使用することができる暗号鍵を格納し、生成することができるとよい。一実施形態では、セキュリティ・デバイス122は、信頼プラットフォーム・モジュール(TPM)チップ、TPMセキュリティ・デバイス等を含むことができる。
[0024] コンピューター110は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター110によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、ならびにリムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。
[0025] コンピューター記憶媒体は、揮発性および不揮発性の双方の、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の格納のためのいずれかの方法または技術で実現される。コンピューター記憶媒体は、RAM、ROM、EEPROM、ソリッド・ステート・ストレージ、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそしてコンピューター110によってアクセスすることができる他のあらゆる媒体を含む。コンピューター記憶媒体は、通信媒体を含まない。
[0026] 通信媒体は、通例、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号または他の移送メカニズムに具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その信号内に情報をエンコードするようにして、その特性の1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、RF、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれてしかるべきである。
[0027] システム・メモリー130は、リード・オンリー・メモリー(ROM)131およびランダム・アクセス・メモリー(RAM)132のような、揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。基本入力/出力システム133(BIOS)は、起動中におけるように、コンピューター110内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを含み、通例ROM131に格納される。RAM132は、通例、処理ユニット120によって直ちにアクセス可能なデータおよび/またはプログラム・モジュール、および/または現在処理ユニット120によって処理されているデータおよび/またはプログラム・モジュールを含む。一例として、そして限定ではなく、図1は、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136およびプログラム・データ137を示す。
[0028] また、コンピューター110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例としてに過ぎないが、図1は、非リムーバブル、不揮発性磁気媒体に対して読み取りまたは書き込みを行うハード・ディスク・ドライブ141、リムーバブル、不揮発性磁気ディスク152に対して読み取りまたは書き込みを行う磁気ディスク・ドライブ151、およびCD−ROM、DVD、または他の光媒体のようなリムーバブル、不揮発性光ディスク156に対して読み取りまたは書き込みを行う光ディスク・ドライブ155を示す。この動作環境例において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、磁気テープ・カセット、フラッシュ・メモリー・カードおよび他のソリッド・ステート記憶デバイス、ディジタル・バーサタイル・ディスク、他の光ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ141は、通例、インターフェース140を介してシステム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、通例、インターフェース150のようなリムーバブル不揮発性メモリー用インターフェースによってシステム・バス121に接続される。
[0029] 以上で論じ図1に示すこれらのドライブおよびそれに関連するコンピューター記憶媒体は、コンピューター110のためのコンピューター読み取り可能命令、データ構造、プログラム・モジュール、および他のデータの格納を行う。図1では、例えば、ハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147を格納することが示される。尚、これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137と同一であること、または異なることもできる。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147は、ここでは、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられる。
[0030] ユーザーは、キーボード162、および一般にマウス、トラックボール、またはタッチ・パッドと呼ばれるポインティング・デバイス161というような入力デバイスによって、コマンドおよび情報をコンピューター110に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン(例えば、音声またはその他のオーディオを入力するため)、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー、タッチ感応画面、書き込みタブレット、カメラ(例えば、ジェスチャーまたは他の視覚入力を入力するため)等を含むことができる。これらおよび他の入力デバイスは、多くの場合、ユーザー入力インターフェース160を介して処理ユニット120に接続される。ユーザー入力インターフェース160は、システム・バスに結合されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような他のインターフェースおよびバス構造によって接続されてもよい。
[0031] 以上で識別した入力デバイスの内1つ以上の使用によって、自然ユーザー・インターフェース(NUI)を策定することもできる。NUIは、音声認識、タッチおよび/またはスタイラス認識、画面上および画面付近の双方におけるジェスチャー認識、エア・ジェスチャー、頭部および眼球追跡、音声および発話、視覚(vision)、タッチ、ジェスチャー、および機械インテリジェンス等に頼ることができる。ユーザーと対話処理するために採用することができるいくつかのNUI技術の例には、タッチ感応ディスプレイ、音声および発話認識、意図および目標理解、深度カメラ(立体視カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、およびこれらの組み合わせ等)を使用する動きジェスチャー検出、加速度計/ジャイロスコープを使用する動きジェスチャー検出、顔認識、3Dディスプレイ、頭部、眼球、および凝視追跡、没入拡張現実および仮想現実システム、ならびに電界検知電極を使用して脳の活動を検知する仮想現実システムおよび技術(EEGおよび関連方法)が含まれる。
[0032] また、モニター191または他のタイプのディスプレイ・デバイスも、ビデオ・インターフェース190のようなインターフェースを介して、システム・バス121に接続される。モニターに加えて、コンピューターは、スピーカー197およびプリンター196のような他の周辺出力デバイスも含むことができ、これらは出力周辺インターフェース195を介して接続されればよい。
[0033] コンピューター110は、リモート・コンピューター180のような1つ以上のリモート・コンピューターへの論理接続を使用して、ネットワーク接続環境(networked environment)において動作することもできる。リモート・コンピューター180は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイス、または他の一般的なネットワーク・ノードであってよく、通例、コンピューター110に関して先に説明したエレメントの多くまたは全部を含むが、図1にはメモリー記憶デバイス181だけが示されている。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、電話ネットワーク、近場(near field)ネットワーク、および他のネットワークを含むこともできる。このようなネットワーキング環境(networking environment)は、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。
[0034] LANネットワーキング環境において使用される場合、コンピューター110は、ネットワーク・インターフェースまたはアダプター170を介してLAN171に接続することができる。WANネットワーキング環境において使用される場合、コンピューター110は、通例、インターネットのようなWAN173を介して通信を確立するモデム172または他の手段を含む。モデム172は、内蔵型でも外付けでもよく、ユーザー入力インターフェース160または他のしかるべきメカニズムを介してシステム・バス121に接続することができる。ネットワーク接続環境では、コンピューター110に関して図示したプログラム、またはその一部が、リモート・メモリー記憶デバイスに格納されてもよい。一例として、そして限定ではなく、図1は、リモート・アプリケーション・プログラム185を、メモリー・デバイス181上に存在するものとして示す。尚、図示したネットワーク接続は一例であり、コンピューター間に通信リンクを確立する他の手段を使用してもよいことは認められよう。
オフロード・リードおよびライト
[0035] 前述のように、従前からのデータ転送動作の中には、効率的でないものや、今日の記憶環境では作用しないものさえある。
[0036] 図2〜図4および図6は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。図2〜図4および図6に示すコンポーネントは、一例では、必要とされ得るまたは含まれ得るコンポーネントの全てを含むことを意味するのではない。他の実施形態では、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、図2〜図4および図6と関連付けて説明するコンポーネントおよび/または機能が、他のコンポーネント(図示するまたは図示しない)に含まれても、またはサブコンポーネント内に置かれてもよい。ある実施形態では、図2〜図4および図6に関連付けて説明するコンポーネントおよび/または機能は、多数のデバイスに跨がって分散されてもよい。
[0037] 図2に移り、システム205は、イニシエーター(initiator)210、データ・アクセス・コンポーネント215、トークン・プロバイダー(1つまたは複数)225、ストア220、およびその他のコンポーネント(図示せず)を含むことができる。システム205は、1つ以上の計算デバイスによって実現することもできる。このようなデバイスは、例えば、パーソナル・コンピューター、サーバー・コンピューター、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサー・システム、マイクロコントローラ・ベースのシステム、セットトップ・ボックス、プログラマブル消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、セル・フォン、パーソナル・ディジタル・アシスタント(PDA)、ゲーミング・デバイス、プリンター、セット・トップ、メディア・センター、または他のアプライアンスを含むアプライアンス、自動車埋め込みまたは取り付け計算デバイス、他の移動体デバイス、以上のシステムまたはデバイスの内任意のものを含む分散計算環境等を含むことができる。
[0038] システム205が1つのデバイスを含む場合、システム205として動作する(act)ように構成することができるデバイス例は、図1のコンピューター110を含む。システム205が多数のデバイスを含む場合、これら多数のデバイスの内1つ以上が、図1のコンピューター110を含めばよく、多数のデバイスは、同様に構成されても、または異なって構成されてもよい。
[0039] データ・アクセス・コンポーネント215は、データをストア220へ、そしてストア220から送信するために使用することができる。データ・アクセス・コンポーネント215は、例えば、I/Oマネージャ、フィルター、ドライバー、ファイル・サーバー・コンポーネント、ストレージ・エリア・ネットワーク(SAN)または他の記憶デバイス上のコンポーネント、および他のコンポーネント(図示せず)を含むことができる。本明細書において使用する場合、SANは、例えば、論理ストレージ・ターゲット(logical storage target)を露出するデバイスとして、またはこのようなデバイスを含む通信ネットワークとして等で実現することができる。
[0040] 一実施形態では、データ・アクセス・コンポーネントは、イニシエーター210とストア220との間におけるI/Oを検査する機会が与えられ、I/Oを変更する、完了する、または失敗する(fail)ことがあり得る、あるいはそれに基づいて他のアクションを実行するまたはアクションを実行しない任意のコンポーネントを含むことができる。例えば、システム205が1つのデバイス上に存在する場合、データ・アクセス・コンポーネント215は、イニシエーター210とストア220との間のI/Oスタックにおけるあらゆるオブジェクトを含むことができる。システム205が多数のデバイスによって実現される場合、データ・アクセス・コンポーネント215は、イニシエーター210をホストするデバイス上のコンポーネント、ストア220へのアクセスを与えるデバイス上のコンポーネント、および/または他のデバイス上等にあるコンポーネントを含むことができる。他の実施形態では、データ・アクセス・コンポーネント215は、使用されるコンポーネントをデータが通過しなくても、I/Oが通過するコンポーネントによって使用される任意のコンポーネント(例えば、サービス、データベース等のような)を含むことができる。
[0041] 本明細書において使用する場合、コンポーネントという用語は、デバイスの全部または一部、1つ以上のソフトウェア・モジュールの集合体またはその一部、1つ以上のソフトウェア・モジュールまたはその一部、および1つ以上のデバイスまたはその一部の何らかの組み合わせ等を含むように読解することとする。コンポーネントがコードを含むこと、またはコードによって表されることも可能である。
[0042] 本明細書において使用する場合、コンピューター・コードという用語は、コンピューターになすべきアクションを指令する命令を含むように読解することとする。これらの命令は、揮発性または不揮発性の任意のコンピューター読み取り可能媒体に含むことができる。
[0043] 一実施形態では、ストア220は、データを格納することができる任意の記憶媒体である。ストア220は、揮発性メモリー(例えば、キャッシュ)および不揮発性メモリー(例えば、永続的ストレージ)を含むことができる。データという用語は、1つ以上のコンピューター記憶エレメントによって表すことができる任意のものを含むように、広く読解することとする。論理的に、データは揮発性または不揮発性メモリーにおいて一連の1および0として表すことができる。非二進記憶媒体を有するコンピューターでは、データは、記憶媒体の能力に応じて表すことができる。非二進記憶媒体を有するコンピューターでは、データは、この記憶媒体の能力に応じて表すことができる。データは、異なるタイプのデータ構造に編成することができ、数値、文字等のような単純なデータ型、階層型、リンク型、またはその他の関連データ型、多数のデータ構造または単純なデータ型を含むデータ構造等を含む。データ例には、情報、プログラム・コード、プログラム状態、プログラム・データ、コマンド、他のデータ等が含まれる場合もある。
[0044] ストア220は、ハード・ディスク・ストレージ、ソリッド・ステート、または他の不揮発性ストレージ、RAMのような揮発性メモリー、他のストレージ、以上のものの何らかの組み合わせ等を含むことができ、多数のデバイス(例えば、多数のSAN、多数のファイル・サーバー、異質なデバイスの組み合わせ等)にわたって分散することもできる。ストア220を実現するために使用されるデバイスは、物理的に一緒に配置されても(例えば、1つのデバイス上に、データセンターに等)、または地理的に分散されてもよい。ストア220は、層状記憶構成(tiered storage arrangement)または非層状記憶構成で構成することができる。ストア220は、外部、内部、またはシステム205を実現する1つ以上のデバイスに対して内部および外部双方であるコンポーネントを含むことができる。ストア220は、フォーマットされても(例えば、ファイル・システムによって)またはフォーマットされなくても(例えば、生)よい。
[0045] 他の実施形態では、ストア220は、直接的な物理ストレージではなく、ストレージ・コンテナとして実現することもできる。ストレージ・コンテナは、例えば、ファイル、ボリューム、ディスク、仮想ディスク、論理ユニット、論理ディスク、書き込み可能クローン、ボリューム・スナップショット、論理ディスク・スナップショット、物理ディスク、ソリッド・ステート・ストレージ(SSD)、ハード・ディスク、データ・ストリーム、代替データ・ストリーム、メタデータ・ストリーム等を含むことができる。例えば、ストア220は、多数の物理記憶デバイスを有するサーバーによって実現することもできる。この例では、サーバーは、データ・アクセス・コンポーネントが、このサーバーの物理記憶デバイスまたはその一部の内1つ以上を使用して実現されるストアのデータにアクセスすることを可能にするインターフェースを表す(present)ことができる。
[0046] 抽象のレベルは、いずれの任意の深度まででも繰り返すことができる。例えば、ストレージ・コンテナをデータ・アクセス・コンポーネント215に提供するサーバーは、データにアクセスするために、ストレージ・コンテナに頼ることができる。
[0047] 他の実施形態では、ストア220は、不揮発性ストレージ内に存続するかもしれない、または不揮発性ストレージ内に存続しないかもしれないデータへのビュー(view)を提供するコンポーネントを含むこともできる。
[0048] データ・アクセス・コンポーネント215の内1つ以上は、イニシエーター210をホストする装置上に存在することができ、一方データ・アクセス・コンポーネント215の他の1つ以上は、ストア220をホストする装置またはストア220へのアクセスを与える装置上に存在することができる。例えば、イニシエーター210がパーソナル・コンピューター上で実行するアプリケーションである場合、データ・アクセス・コンポーネント215の内1つ以上は、このパーソナル・コンピューター上にホストされたオペレーティング・システム内に存在することができる。これの例を図3に示す。
[0049] 他の例として、ストア220がストレージ・エリア・ネットワーク(SAN)によって実現される場合、データ・アクセス・コンポーネント215の内1つ以上は、ストア220を管理するおよび/またはストア220へのアクセスを与えるストレージ・オペレーティング・システムを実現することができる。イニシエーター210およびストア220が1つの装置内にホストされるとき、データ・アクセス・コンポーネント215の全てまたは多くもこの装置上に存在することができる。
[0050] オフロード・リードは、イニシエーターが、ストアのデータを表すトークンを得ることを可能にする。このトークンを使用して、このイニシエーターまたは他のイニシエーターはオフロード・ライトを要求することができる。オフロード・ライトは、イニシエーターが、オフロード・プロバイダーに、トークンによって表されるデータの一部または全部を書き込ませることを可能にする。
[0051] 一実施形態では、トークンは、成功オフロード・リード(successful offload read)によって得られる暗号論的安全乱数(cryptographically secure number)を含む。現時点において、暗号論的安全乱数の一例は、しかるべき方法で生成される256ビットの数である(例えば、何らかのランダムな物理現象をサンプリングすることによって乱数を発生することによる)。暗号論的安全乱数を生成するための手順例のいくつかが、Request for Comments (RFC) 1750に記載されている。技術進歩によって、安全乱数の長さ、および暗号論的安全乱数を生成するために使用される手順が、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、変化することもあり得る。
[0052] トークンは、このトークンが有効である限りインミュータブルであるデータを表す。トークンが表すデータを、バルク・データと呼ぶこともある。
[0053] オフロード・プロバイダーとは、トークンに関連付けられたデータへの間接的なアクセスを与えるエンティティである(多数のデバイスにわたって拡散する多数のコンポーネントを含むことが可能)。論理的に、オフロード・プロバイダーは、オフロード・リードおよび/またはオフロード・ライトを実行することができる。物理的に、オフロード・プロバイダーは、データ・アクセス・コンポーネント215の内1つ以上およびトークン・プロバイダーによって実現することができる。
[0054] オフロード・リードまたはオフロード・ライトをサービスする(service)とき、オフロード・プロバイダーは論理的に、ストアのデータおよび/またはトークン・プロバイダーに関連付けられたトークンに対して動作を実行することができる。例えば、オフロード・リードでは、オフロード・プロバイダーは、ストアのデータによってバッキング(back)された論理ストレージ・コンテナからトークン(これもストアのデータによってバッキングされてもよい)にデータを論理的にコピーすることができ、一方、オフロード・ライトでは、オフロード・プロバイダーは、トークンから、ストアのデータによってバッキングされる論理ストレージ・コンテナにデータを論理的にコピーすることができる。
[0055] オフロード・プロバイダーは、データをソース・ストアから転送し、データを宛先ストアに書き込み、このデータに関連付けられたトークンを受けたときに供給すべきデータを維持することができる。ある実施態様では、データが宛先ストアに論理的に書き込まれた後に、オフロード・ライト・コマンドが完了したことを、オフロード・プロバイダーが示すことができる。加えて、オフロード・プロバイダーは、オフロード・ライト・コマンドが完了したことを示すが、都合が良くなるまで、オフロード・ライトに関連付けられたデータを物理的に書き込むのを延期することもできる。
[0056] ある実施態様では、オフロード・プロバイダーが、第1論理ストレージ・コンテナと第2論理ストレージ・コンテナとの間でデータを共有することができ、更にトークンとストレージ・コンテナとの間でデータを共有することができる。オフロード・プロバイダーは、物理記憶位置への書き込みを実行する一部として、データの共有を停止することができる。そうしなければ、1つよりも多いストレージ・コンテナを変更させることなるか、またはそうしなければ、トークンによって表されるデータを変化させることになる。
[0057] ある実施態様では、オフロード・プロバイダーは、トークンとストレージ・コンテナとの間でデータの共有を開始することによって、ストレージ・コンテナからトークンに、またはトークンからストレージ・コンテナに論理コピーを実行することができる。例えば、オフロード・プロバイダーは、ソース・ストレージ・コンテナとトークンとの間でデータの共有を開始することによって、ソース・ストレージ・コンテナからトークンに論理的にデータをコピーすることによって、オフロード・リードを実行することができる。他の例では、オフロード・プロバイダーは、トークンと宛先ストレージ・コンテナとの間データの共有を開始することによって、トークンから宛先ストレージ・コンテナに論理的にデータをコピーすることによって、オフロード・ライトを実行することができる。
[0058] ある実施態様では、オフロード・プロバイダーは、例えば、データを共有するのを回避するためおよび/または物理的にデータをコピーするのを回避するために、トークンを無効にすることもできる。例えば、オフロード・プロバイダーは、トークンによって参照されるストアの物理記憶位置を参照するように宛先ストレージ・コンテナのデータ構造を更新することによって、トークンから宛先ストレージ・コンテナに論理的にデータをコピーすることによって、オフロード・ライトを実行することができ、これと併せて、トークンの少なくとも一部を論理的に無効にすることができる。尚、こうしても、その結果、ソースおよび宛先ストレージ・コンテナはデータを共有することになることを注記しておく。
[0059] ある実施態様では、オフロード・プロバイダーは、既にデータを共有する全てのトークンおよびストレージ・コンテナとの間、更に加えて、他のストレージ・コンテナまたはトークンの間でデータ記憶位置の共有を開始することができる。例えば、オフロード・リードをサービスするために、オフロード・プロバイダーは、ソース・ストレージ・コンテナとトークンとの間で共有を開始することができる。次いで、トークンを使用するオフロード・ライトをサービスするために、オフロード・プロバイダーは、ソース・ストレージ・コンテナ、トークン、および宛先ストレージ・コンテナの間で共有を開始することができる。トークンが後に無効にされる場合、トークンとの共有は停止されるが、ソースおよび宛先ストレージ・コンテナ間の共有は継続することができる(例えば、そのデータに向けられたライトを受けるまで)。
[0060] 本明細書において使用する場合、一実施態様では、トークン・プロバイダーはオフロード・プロバイダーの一部となる。この実施態様では、トークン・プロバイダーがアクションを実行すると記載する場合、トークン・プロバイダーを含むオフロード・プロバイダーがこれらのアクションを実行していることは理解されるはずである。他の実施態様では、トークン・プロバイダーがオフロード・プロバイダーとは別であってもよい。
[0061] ストア220のデータのオフロード・リードを開始するために、イニシエーター210は、既定のコマンドを使用して、このデータを表すトークンを得るための要求を送ることができる(例えば、APIを介して)。応答して、データ・アクセス・コンポーネント215の内1つ以上が、そのデータまたはその部分集合を表す1つ以上のトークンを供給することによって、イニシエーター210に応答することができる。トークンは、インミュターブル・データを表すために使用されるバイトのシーケンスによって表すことができる。インミュターブル・データのサイズは、トークンよりも大きくても、小さくても、または同じサイズでもよい。
[0062] トークンによって、イニシエーター210は、このトークンによって表されるデータの全部または一部を論理的に書き込むことを要求することができる。本明細書では、この動作をオフロード・ライトと呼ぶこともある。イニシエーター210は、このトークンを、1つ以上のオフセットおよび長さをデータ・アクセス・コンポーネント215に送ることによって、これを行うことができる。
[0063] データ・アクセス・コンポーネント215は、ストレージ・スタックとして実現することもでき、この場合、スタックの各レイヤは異なる機能を実行することができる。例えば、データ・アクセス・コンポーネントは、データを区分する、オフロード・リードまたはオフロード・ライト要求を分割する、データをキャッシュする、データを検証する、データのスナップショットを取る等を行うことができる。
[0064] スタックの1つ以上のレイヤを、トークン・プロバイダーと関連付けることができる。トークン・プロバイダーは、ストア220のデータの一部を表すトークンを生成または入手して、これらのトークンをイニシエーターに供給する1つ以上のコンポーネントを含むことができる。
[0065] オフロード・ライトの一部について、トークン関連オフセットおよび宛先関連オフセットを、関与するトークンに対して示すことができる。いずれかまたは双方のオフセットは、暗示的または明示的であってもよい。トークン関連オフセットは、例えば、トークンによって表されるデータの先頭からのバイト数(または他の単位)を表すことができる。宛先関連オフセットは、宛先におけるデータの先頭からのバイト数(または他の単位)を表すことができる。長さは、オフセットから始まるバイト数(または他の単位)を示すことができる。
[0066] データ・アクセス・コンポーネント215がオフロード・リードまたはライトに失敗した場合、エラー・コードを戻すことができ、他のデータ・アクセス・コンポーネントまたはイニシエーターが、そのデータを読み取るまたは書き込むために他のメカニズムを試すことを可能にする。
[0067] 図3は、トークン・プロバイダーが、ストアをホストするデバイスによってホストされる、システムのコンポーネントの構成例を全体的に表すブロック図である。図示のように、システム305は、図2のイニシエーター210およびストア220を含む。図3のデータ・アクセス・コンポーネント215は、イニシエーター210をホストするデバイス330上に存在するデータ・アクセス・コンポーネント310と、ストア220をホストするデバイス335上に存在するデータ・アクセス・コンポーネント315との間で分割される。他の実施形態では、ストア220がデバイス335の外部にある場合、ストア220へのアクセスを与える追加のデータ・アクセス・コンポーネントがあってもよい。
[0068] デバイス335は、オフロード・プロバイダーの一例と見なすことができる。何故なら、このデバイスは、オフロード・リードおよびライトを実行しトークンを管理するコンポーネントを含むからである。
[0069] トークン・プロバイダー320は、トークンを生成し、トークンの有効性を判断し、更にトークンを無効にすることができる。例えば、イニシエーター210がストア220上のデータに対するトークンを求めると、トークン・プロバイダー320は、そのデータを表すトークンを生成することができる。次いで、このトークンは、データ・アクセス・コンポーネント310および315を介して、イニシエーター210に返送することができる。
[0070] トークンの生成と併せて、トークン・プロバイダー320は、トークン・ストア325においてエントリーを作成することができる。このエントリーは、トークンを、ストア220上のどこで、トークンによって表されるデータを見つけることができるかを示すデータと関連付けることができる。また、このエントリーは、トークンを無効化するとき、トークンの寿命、他のデータ等というような、トークンを管理するときに使用される他のデータも含むことができる。
[0071] イニシエーター210または任意の他のエンティティがトークンをトークン・プロバイダー320に供給すると、トークン・プロバイダー320はトークン・ストア325において、そのトークンが存在するか否か判断するために探索を実行することができる。トークンが存在し有効である場合、トークン・プロバイダー320は、データ・アクセス・コンポーネント315が、要求通りに、このデータを論理的に読み取るまたは書き込むことができるように、あるいは他の動作を論理的に実行できるように、位置情報をデータ・アクセス・コンポーネント315に供給することができる。
[0072] 図3に類似した他の構成例では、トークン・プロバイダー320およびトークン・ストア325は、デバイス330に含まれ、データ・アクセス・コンポーネント310がトークン・プロバイダー320に接続されてもよい。例えば、デバイス330のオペレーティング・システム(OS)が、トークン・プロバイダー320およびトークン・ストア325を含むのでもよい。この例では、イニシエーター210は、イニシエーター210によって実行される全てのコピーのために、トークン・プロバイダーおよびトークン・ストアの存在を想定することができる。この想定によって、イニシエーター210は、通常のリードおよびライトに逆戻りするコードを省略するように実現することができる。
[0073] 以上の例では、OSは、要求されたデータをデータ・アクセス・コンポーネント315から論理的に読み出し、そのデータをデバイス330のストレージ(揮発性または不揮発性)に格納し、新たなトークン値を作成し、この新たに作成したトークン値を読み出したデータと関連付けることによって、オフロード・リードを実施することができる。OSは、トークンに関連付けられたデータを、イニシエーター210によって指定された宛先にコピーする(例えば、論理的に書き込む)ことによって、オフロード・ライトを実施することができる。この例では、イニシエーター210は、あるシナリオでは、オフロード・リード・ステップにおいてコピーを再試行する必要がある場合があるが、この再試行は、イニシエーターにとって、通常のリードおよびライトに逆戻りするよりも軽い負担で済ませることができる。
[0074] 図4は、本明細書において説明する主題の態様を実現することができる他の環境例を全体的に表すブロック図である。図示のように、この環境は、ソース・イニシエーター405、宛先イニシエーター406、ソース・ストレージ・コンテナ410、宛先ストレージ・コンテナ411、ソース物理ストア415、宛先物理ストア416、オフロード・プロバイダー420を含み、他のコンポーネント(図示せず)を含むこともできる。
[0075] ソース・イニシエーター405および宛先イニシエーターは、図2のイニシエーター210と同様に実現することができる。ソース・イニシエーター405および宛先イニシエーター406は、2つの別個のエンティティまたは1つのエンティティであってもよい。
[0076] ソース・ストレージ・コンテナ410および宛先ストレージ・コンテナ411が1つのシステムによって実現される場合、オフロード・プロバイダー420は、これらのストレージ・コンテナを実装するシステムの1つ以上のコンポーネントとして実現することができる。ソース・ストレージ・コンテナ410および宛先ストレージ・コンテナ411が異なるシステムによって実現される場合、オフロード・プロバイダー420は、これらのストレージ・コンテナを実装するシステムにわたって分散される1つ以上のコンポーネントとして実現することができる。
[0077] 更に、ストレージ・コンテナおよび物理ストアは2つよりも多いインスタンスがあってもよい。例えば、ソースから得られる所与のトークンに対して、1つよりも多い宛先が指定されてもよい。例えば、1つのトークンを参照する多数のオフロード・ライトを発行することができ、各オフロード・ライトは、オフロード・プロバイダー420には分かっている任意の宛先を首尾良くターゲットにすることができる。
[0078] ソース物理ストア415および宛先物理ストア416は、同じストアでも異なるストアでもよい。これらの物理ストアは、ソースおよび宛先ストレージ・コンテナをバッキングする物理データを格納し、更にトークンによって表されるデータもバッキングすることができる。
[0079] 前述のように、イニシエーターと物理ストアとの間に1つのストレージ・コンテナだけを有するように例示したが、他の実施形態では、イニシエーターと物理ストアとの間には、多数のレイヤのストレージ・コンテナがあることも可能である。
[0080] ソース・イニシエーター405は、オフロード・リードを発行することによって、トークンを得ることができる。応答して、オフロード・プロバイダー420は、トークンを生成しこれをソース・イニシエーター405に供給することができる。
[0081] ソース・イニシエーター405および宛先イニシエーター406が別のエンティティである場合、ソース・イニシエーター405はトークンを宛先イニシエーター406に供給することができる。次いで、宛先イニシエーター406は、このトークンを使用して、宛先ストレージ・コンテナ411にオフロード・ライトを発行することができる。
[0082] オフロード・ライト要求を受けたとき、オフロード・プロバイダー420はトークンの有効性を判断し、オフロード・ライト要求によって示される通りに、データを宛先ストレージ・コンテナ411に論理的に書き込むことができる。
トークン・サイズの拡大
[0083] オフロード技術では、規格または業界がトークンの一定の固定サイズを規定することもある。種々の理由のために、ある実施者は、標準化された固定サイズよりも大きなサイズを望むこともある。
[0084] より大きなサイズのトークンに対処するために、多数のトークンを許容するように規格を変更することができる。次いで、固定サイズよりも大きなトークンは、それよりも小さな固定サイズの多数のサブトークンによって表すことができる。例えば、1つの規格は、トークンが512バイトであることを必要とする。この規格の実施態様では、サブトークンは各々正確に512バイトとすることができ、それよりも大きなトークンは512バイトよりも大きくすることができる(例えば、995、2000、4096、または何らかの他のバイト数)。
[0085] 図5は、本明細書において説明する主題の態様にしたがって、1つの大きなトークンをそれよりも小さな1つ以上のサブトークンで表す方式の一例を示す図である。図示のように、大きなトークンの一例505は、標準要求フィールド(standard required fields)H、プロバイダーID P、乱数データR、ベンダー・データV、およびその他のデータXを有することができる。
[0086] 標準要求フィールドHは、規格によって要求されるまたそうでなければ指定される任意のフィールドを含むことができる。例えば、標準要求フィールドHは、いつトークンが生成されたかを示すデータ、いつトークンが失効する予定であるかを示すデータ、トークンがどこから来たかを示すデータ、または規格によって指定される他のデータを含むことができる。
[0087] プロバイダーID Pは、トークンを生成したオフロード・プロバイダーのインスタンスを示すことができる。プロバイダーID Pは、トークンを無視すべきか否か決定するために閾値検査において使用することができる。プロバイダーID Pがオフロード・プロバイダーによって供給されたプロバイダーIDでない場合、オフロード・プロバイダーはトークンを完全に拒絶することができる。そうでない場合、オフロード・プロバイダーは、トークンの有効性を判断するために、追加のアクションを行うことができる。
[0088] ベンダー・データVは、オフロード・プロバイダーを実装したベンダーが望むかもしれない任意のデータを含むことができる。一例として、ベンダーは、トークン505を供給したオフロード・プロバイダーのアドレスを示すアドレシング情報を含むことができる。他の例として、ベンダー・データVは、ハッシュ鍵、ダイジェスト、調査鍵(lookup key)、メタデータ、バルク・データに関係するデータ、バルク・データの一部を識別または突き止めるのに役立つデータ、他のデータ等を含むことができる。
[0089] 他のデータXは、トークン505に含まれる任意の他のデータを含むことができる。
[0090] サブトークンは、事実上あらゆるプロトコルによって送信することができる。例えば、一例では、サブトークンは、小型コンピューター・システム・インターフェース(SCSI)プロトコルによって送信することができる。他の例では、ファイル・データをサーバー・メッセージ・ブロックを介して転送するファイル共有プロトコルによって、サブトークンを送信することができる。ファイル共有プロトコルの一例には、サーバー・メッセージ・ブロック(SMB)プロトコルが含まれる。他の例では、ファイルにアクセスする遠隔手続き呼び出しに基づく分散ファイル・システム・プロトコルによってサブトークンを送信することができる。遠隔手続き呼び出しに基づくプロトコルに一例には、ネットワーク・ファイル・システム(NFS)プロトコルが含まれる。
[0091] 以上の例は、使用することができるプロトコルを全て含むことも、網羅的であることも意図していない。実際、本明細書における教示に基づけば、当業者は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、使用することができる多くの他のプロトコルを認めることができよう。
[0092] サブトークン510〜515は、トークン505を表す固定サイズ(規格によって規定される)のトークンであってもよい。サブトークン510〜515は、種々のフィールドを含むことができる。例えば、サブトークンは、規格によって要求されるフィールド(H、HN1、H...)、プロバイダーIDフィールド(P)、トークンID(T)、シーケンス・データ(S、SN1、S...)、いくつのサブトークンがトークン505を表すかを示す数値、およびトークン505のデータに対応するデータを含むことができる。この他のデータは、H、R〜RN1、V〜VN2、およびX〜XN3によって表され、ここでHは、トークン505における標準要求フィールドHに対応し、R〜RN1は、トークン505における乱数データRに対応し、V〜VN2はトークン505におけるベンダー・データVに対応し、X〜XN3はトークン505における他のデータXに対応する。
[0093] フィールド(H、HN1、H...)は、規格によって要求される任意のデータまたそうでなければ指定される任意のデータを含むことができる。これは、例えば、SCSIプロトコルの任意のバージョンによって指定されるヘッダまたはその他のフィールドを含むことができる。 フィールド(H、HN1、H...)は、図5に示されるいずれの他のフィールドよりも前および/または後に現れることができる。
[0094] SCSIプロトコルが使用される場合、フィールド(H、HN1、H...)は、例えば、SCSIプロトコルの任意のバージョンによって指定されるヘッダまたは他のフィールドを含むことができる。フィールドの例は、トークン作成のタイムスタンプ、トークン・タイプ(例えば、ポイント・イン・タイム・コピー)、ソースのアドレス、データ・トークン・タイプの表現を識別するデータ、バルク・データの転送を要求したコマンドのイニシエーターを通す必要なくバルク・データを転送するために、サブトークンの各々をトークンとして識別するデータ、SCSIプロトコルによって指定されるその他のフィールド等を含む。
[0095] 他のプロトコルが使用される場合、フィールド(H、HN1、H...)は、例えば、これらのプロトコルによって要求されるフィールドまたは許されるフィールドを含むことができる。一実施態様では、フィールド(H、HN1、H...)を完全に省略することもできる。
[0096] ある実施態様では、フィールド(H、HN1、H...)は、例えば、トークン505の標準要求フィールドHに関して以上で示したタイプのデータを含むこともできる。
[0097] プロバイダーID Pは、トークンを生成したオフロード・プロバイダーのインスタンスを示すことができ、以上で示したのと同様に使用することができる。
[0098] トークンID Tは、拡大トークンを表すサブトークンのグループに属するサブトークンを識別するデータとすることができる。例えば、サブトークン510〜515の各々における「ABCD」のトークンIDは、サブトークン510〜515を、トークン505を表すサブトークンのグループに属するものとして識別することができる。サブトークンが異なるトークンIDを有する場合、オフロード・プロバイダーは、そのサブトークンは、トークン505を表すサブトークンのグループの一部ではないと判断することができる。
[0099] シーケンス・データ(S、SN1、S...)は、サブトークンの順序付けを示すデータを含むことができる。例えば、シーケンス・データは、サブトークンの順序を示す、増加する数値(例えば、1、2、3、4等)を含むことができる。この順序は、サブトークン510〜515を組み合わせてトークン505またはその一部を再現するために、使用することができる。
[00100] 一実施態様では、サブトークン510〜515のフィールドからのデータを組み合わせて、トークン505に含まれる全てのデータを再現することができる。例えば、この実施態様では、サブトークン510〜515の組み合わされたデータは、少なくともトークン505に含まれるデータを含むことができる。
[00101] 他の実施態様では、サブトークン510〜515は、トークン505に含まれる全てのデータを含まない。例えば、サブトークン510〜515は、トークン505におけるデータを識別するのに十分なデータを含めばよい(例えば、参照表または他のデータ構造を介して)。例えば、サブトークン510〜515を組み合わせて、Rおよびアドレス情報を得るのでもよい。次いで、Rおよびアドレス情報は、オフロード・プロバイダーによって使用され、トークン505に含まれる他のデータを調べることができる。
[00102] 他の例では、サブトークン510〜515の内1つ以上が、乱数データRにマッピングするために使用することができるデータを含むのでもよい。この例では、乱数データRは、サブトークン510〜515において見出されるデータだけでは再現することができないが、サブトークン510〜515の内1つ以上の含まれる乱数データから、乱数データRを発見することができる(例えば、参照表において)。この例では、他のデータ(例えば、トークン505のアドレス・データ)が、サブトークン510〜515の内1つ以上に含まれてもよい。次いで、例えば、トークン505に含まれる他のデータを突き止めるために使用することができるマッピング表を突き止めるために、アドレス・データを使用することができる。
[00103] 同様のメカニズムは、サブトークン510〜515内では物理的に発見されない他の省略データが、この省略されたデータにマッピングするデータを使用して発見することができれば、この他の省略データを発見するために使用することもできる。
[00104] 一例では、サブトークンの内の1つ(本明細書ではマスター・サブトークンと呼ばれることもある)が乱数データRの全てを含むのでもよく、一方他のサブトークンは乱数データRに対応するデータを全く含まなくてもよい。他の例では、サブトークン510〜515の各々が、乱数データRに対応するデータを含むのでもよい。
[00105] トークン505の有効性を判断するためには、種々のメカニズムを使用することができる。一例では、サブトークン510〜515からトークン505が再現された後、トークン505が、オフロード・プロバイダーによって生成されたトークンそのものであるか否か判定するために、ビット毎の比較を実行する。トークンにおけるビットが、トークン・ストアにおいてRを有するトークンについて発見されたビットと等しい場合、トークン505は有効であると判定することができる。
[00106] 他の例では、トークン505のダイジェストを計算することもでき、このダイジェストを、オフロード・プロバイダーによって生成されたトークンのダイジェストと比較することができる。この例では、他のダイジェストと衝突する可能性が低いまたは可能性がないダイジェストが選択されるとよい。この例では、ダイジェストが、オフロード・プロバイダーによって生成されたトークンのダイジェストに等しい場合、トークン505は有効であると判定することができる。
[00107] 他の例では、Rがオフロード・プロバイダーによって格納されたトークンのRに等しい場合、トークン505は有効であると判定することもできる。
[00108] 一実施態様では、拡大トークン505が、供給され実際に存在するトークンであり、1つ以上のデータ構造として実現される。拡大トークン505は、物理的に多数のサブトーク510に分割することができ、これらのサブトークン510は、再度組み合わせて拡大トークン505を形成することができる。
[00109] 他の実施態様では、拡大トークン505は、トークン505について例示されたフィールドを論理的に含む仮想オフロード・トークンを含めば、全てのフィールドが実際には同じデータ構造でなくてもよい。この実施態様では、トークン505は、1つのデータ・チャックがトークン505の全てのフィールドを含む期間に相応しない(go through)。そうではなく、サブトークン510〜515は、トークン505に対応するデータ(または、トークン505のデータを発見するのに使用可能なデータ)を含むが、実際には、サブトークン510〜515が組み合わされて、トークン505のフィールドを含むモノリシックなデータ・チャンクを形成するのではない。同様に、この実施形態では、トークン505が最初に作成され次いでサブトークン510〜515に分割されるのではない。拡大トークン505が仮想オフロード・トークンと呼ばれるのは、これが物理的にそしてサブトークン510〜515と独立して存在するのではなく、サブトークン510〜515のデータ内に仮想的に存在するからである。トークン505について本明細書において説明するとき、双方の実施態様が考えられることは、理解されるはずである。
[00110] 図6は、本明細書において説明する主題の態様が動作することができるシステムのコンポーネントの構成例を表すブロック図である。図示のように、このシステムは、イニシエーター605、ソース・ストレージ・スタック610、宛先ストレージ・スタック611、スプリッター/インジェクター615、コンバイナー/エキストラクター616、およびオフロード・プロバイダー630を含む。
[00111] オフロード・プロバイダー630は、図示のように、ソース・オフロード・プロバイダー635と宛先オフロード・プロバイダー636とに分離され、オフロード・プロバイダー630が異なる機械上にあり、これらの機械がオフロード・プロバイダー630の機能を実行するために互いに通信できることを示す。しかしながら、他の例では、ソース・オフロード・プロバイダー635と宛先オフロード・プロバイダー636を併合して、1つのコンピューター上に置いてもよい。一実施態様では、ソース・オフロード・プロバイダー635および宛先オフロード・プロバイダー636は、オフロード・ライト・コマンドに応答して、オフロード・データの送信をネゴシエートすることができる、全く異なるオフロード・プロバイダーであってもよい。
[00112] イニシエーター605はオフロード・リードまたはオフロード・ライトを開始する。一例では、イニシエーター605をソース・イニシエーターおよび宛先イニシエーターに分離することもでき(図4に示すように)、ソース・イニシエーターがオフロード・リードを開始してそれに応答して多数のサブトークンを得て、次いでこれらのサブトークンを宛先イニシエーターに供給し、宛先イニシエーターは後にオフロード・ライトを開始する。他の例では、イニシエーター605が直接オフロード・リードおよびオフロード・ライトを開始することもできる。
[00113] 尚、オフロード・ライトは、形式にはかかわらないオフロード・ライトであることは理解されるはずである。例えば、トークンを異なる機械に転送し、次いでこの機械がオフロード・ライトを発行するのは、実際には、オフロード・リード・イニシエーターがオフロード・ライトを開始するための異なる方法に過ぎない。
[00114] ソース・ストレージ・スタック610および宛先ストレージ・スタック611は、各々、レイヤに構成された1つ以上のコンポーネントによって実現することができ、各レイヤが異なる機能を実行することができる。
[00115] スプリッター/インジェクター615は1つ以上のコンポーネントを含むことができる。スプリッター/インジェクター615は、オフロード・リード・コマンドをソース・ストレージ・スタック610から受けることができる。応答して、スプリッター/インジェクター615はオフロード・リード・コマンドをソース・オフロード・プロバイダー635に送ることができる。オフロード・リード・コマンドに応答して、ソース・オフロード・プロバイダー635は大きなトークンを供給することができる。大きなトークンを受けた後、スプリッター/インジェクター615はこのトークンを複数のそれよりも小さなトークンに分割し、これらの小さなトークンをソース・ストレージ・スタック610に供給することができる。サブトークンは、例えば、前述のように、固定の標準化サイズのものであってもよい。
[00116] 一実施態様では、オフロード・リード・コマンドは、このオフロード・リードに応答してどれ位のサブトークンが供給されればよいかを示す数値を含むことができる。この数値は、イニシエーター605またはソース・ストレージ・スタック610のコンポーネントから発生することができる。
[00117] スプリッター/インジェクター615が、この数値が十分に大きいと判定した場合、スプリッター/インジェクター615は、ソース・ストレージ・スタック610によって供給される通りに、サブトークンを供給することができる。そうでない場合、一例では、スプリッター/インジェクター615は、オフロード・リード要求に応えるためには、いくつのサブトークンが必要とされるかを示すメッセージを戻すことができる。他の例では、スプリッター/インジェクター615は、数値が十分に大きくないことを示すエラーを戻すことができ、イニシエーター605がもっと大きな数値(1つまたは複数)を試すことを決定した場合、イニシエーター605にそのようにさせることができる。
[00118] 他の実施態様では、オフロード・リード・コマンドが、このオフロード・リードに応答してどれ位のサブトークンを供給すればよいかを示す数値を省略してもよい。この実施態様では、スプリッター/インジェクター615がオフロード・リード・コマンドに対する全てのサブトークンが供給されたことを示すまで、オフロード・リード・コマンドを送るコンポーネントが、サブトークンを要求することができる。
[00119] 他の実施態様では、スプリッター/インジェクター615が、オフロード・リード・コマンドに応答して生成されたサブトークンの数を示してもよい。次いで、オフロード・リード・コマンドを送ったコンポーネントは、スプリッター/インジェクター615からサブトークンを得る役割を果たすことができる。
[00120] 多数のサブトークンを伴うオフロード・ライト・コマンドでは、イニシエーター605はこれらのサブトークンを宛先ストレージ・スタック611に送ることができ、宛先ストレージ・スタック611がこれらのサブトークンをコンバイナー/エキストラクター616に送ることができる。次いで、コンバイナー/エキストラクター616はこれらのサブトークンを組み合わせて1つの大きなトークンにして、この1つの大きなトークンを宛先オフロード・プロバイダー636に供給することができる。
[00121] 実施態様に応じて、サブトークンを1つのメッセージにおいて供給すること、または多数のメッセージにおいて供給することもできる。
[00122] 一実施態様では、スプリッター/インジェクター615をソース・オフロード・プロバイダー635と組み合わせることもでき、更にコンバイナー/エキストラクター616を宛先オフロード・プロバイダー636と組み合わせることもできる。少なくともこの実施態様では、スプリッター/インジェクター615は仮想オフロード・トークンのデータをサブトークンに注入することができ、一方コンバイナー/エキストラクター616は、拡大トークンが物理データ構造として存在し続けなくても、サブトークンからデータを抽出することができる。
[00123] 図7〜図9は、本明細書において説明した主題の態様にしたがって行うことができるアクション例を概略的に表す流れ図である。説明の簡略化のために、図7〜図9に関連付けて説明する方法は、一連のアクトとして図示し説明することとする。尚、本明細書において説明する主題の態様は、例示されるアクト、および/またはアクトの順序によって限定されないことは言うまでもないことであり、認められるはずである。一実施形態では、これらのアクトは、以下で説明する通りの順序で現れる。しかしながら、他の実施形態では、これらのアクトは、並列に、他の順序で、および/または本明細書では提示されず説明されない他のアクトと共に現れてもよい。更に、本明細書において説明する主題の態様にしたがって本方法を実現するためには、図示するアクト全てが必要とされない場合もある。加えて、本方法は、代わりに、状態図によって一連の相互に関係付けられた状態として、またはイベントとして表すこともできることは、当業者には理解され認められよう。
[00124] 図7は、本明細書において説明する主題の態様にしたがって、宛先オフロード・プロバイダーにおいて行うことができるアクション例を概略的に表す流れ図である。ブロック705において、アクションが開始する。
[00125] ブロック710において、2つ以上のサブトークンがそれらよりも大きいトークンを表すことを示すメッセージを受ける。これらのサブトークンは、各々、固定サイズのものである(規格によって指定されたサイズ)。拡大トークンは、固定サイズよりも大きいサイズを有する。これが意味するのは、拡大トークンに含まれるデータは、サブトークンの内1つに収まることができるデータよりも大きいということである。拡大トークンに対応するデータは、オフロード・プロバイダーによって維持される。データは、拡大トークンに対応する1つのデータ構造、または多数のデータ構造(例えば、組み合わせられない)に維持することができる。拡大トークンは、拡大トークンにおけるデータが有効である限りインミュータブルであるデータを表す。
[00126] 例えば、図6を参照すると、コンバイナー/エキストラクター616は宛先ストレージ・スタック611からサブトークンを受けることができる。これらのサブトークンは、イニシエーター605によって、宛先ストレージ・スタック611に向けられたオフロード・ライトと共に供給することができる。
[00127] ブロック715において、サブトークンからデータを抽出する。データの抽出は、例えば、データを得る前にサブトークンを組み合わせて拡大トークンにすること、またはサブトークンを組み合わせて拡大トークンにすることなく、サブトークンからデータを得ることを含むことができる。例えば、図6を参照すると、コンバイナー/エキストラクター616がサブトークンからのデータを組み合わせる/抽出することができる。例えば、抽出されたデータの一部は、トークンをそのトークンが表すデータと関連付ける数値を含むことができる。この数値は、キーと呼ばれることもある。
[00128] ブロック720において、サブトークンの1つ以上からキーを得る。例えば、図6を参照すると、コンバイナー/エキストラクター616がサブトークンを組み合わせて拡大トークンを形成した後、宛先オフロード・プロバイダー636はこの拡大トークンからキーを得ることができる。他の例として、サブトークンのデータを物理的に組み合わせることなく、コンバイナー/エキストラクター616が、物理的にサブトークンのデータ全てを組み合わせることなく、仮想トークンからキーを抽出することもできる(例えば、サブトークンの内1つ以上)。
[00129] ブロック725において、キーの証拠をオフロード・プロバイダーのコンポーネントに供給する。この証拠を使用して、ブロック725のアクションの一部として、または別の1組のアクションとして、キーの有効性を判断することができる。キーの証拠を供給するには、例えば、以下のことを含むことができる。
[00130] 1.キー自体を供給する。
[00131] 2.キーおよび拡大トークンの他のデータ(1つ以上のフィールド)を供給する。
[00132] 3.キーのダイジェスト(例えば、ハッシュ関数)を供給する。
[00133] 4.キーおよび拡大トークンの他のデータ(1つ以上のフィールド)から導き出したダイジェストを供給する。または、
[00134] 5.キーおよび/または拡大トークンの他の証拠を供給する。
[00135] 図8は、本明細書において説明する主題の態様にしたがって、ソース・オフロード・プロバイダーにおいて行うことができるアクション例を概略的に表す流れ図である。ブロック805において、アクションが開始する。
[00136] ブロック810において、オフロード・リード要求を受ける。例えば、図6を参照すると、ソース・オフロード・プロバイダー635が、イニシエーター605によって開始されたオフロード・リード要求を受ける。
[00137] ブロック815において、オフロード・リード・メッセージに応答して、オフロード・リード・メッセージに応答して戻すためにキーを生成する。キーはトークン(物理的または仮想的)内に置かれ、そのデータは、オフロード・リード・メッセージに応答して戻すために、サブトークン内に置かれる。例えば、図6を参照すると、ソース・オフロード・プロバイダー635がキーを含むトークンを生成することができる。
[00138] ブロック820において、トークンのデータをサブトークンに分割/注入する。例えば、図6を参照すると、スプリッター/インジェクター615は、ブロック815において生成されたトークンからデータを取り込み、このデータをサブトークンに分割/注入する。サブトークンは、イニシエーター605に配信するために、ソース・ストレージ・スタック610に供給する。
[00139] ブロック825において、キーの証拠を受ける。例えば、図6を参照すると、ソース・オフロード・プロバイダー635のコンポーネントがキーの証拠を受ける。一例では、オフロード・プロバイダー630が、コンバイナー/エキストラクター616から受けたサブトークンからキーを得るときに、この証拠を受けることができる。他の例では、オフロード・ライトの宛先(例えば、宛先オフロード・プロバイダー636)におけるオフロード・プロバイダーのコンポーネントが、サブトークンに含まれるキーを得て、その中に収容されているアドレスを読み出し、このアドレスを使用して、キーを生成したオフロード・プロバイダーのコンポーネント(例えば、ソース・オフロード・プロバイダー635)と連絡を取り、キーをこのコンポーネントに供給することができる。他の例では、ソース・オフロード・プロバイダーとは異なるオフロード・プロバイダーである宛先オフロード・プロバイダーが、キーおよびアドレシング情報を受け、ソース・オフロード・プロバイダーと連絡を取り、キーを供給することもできる。この証拠を使用して、ブロック825のアクションの一部として、または別の1組のアクションとして、キーの有効性を判断することができる。
[00140] ブロック830において、トークンに対応するバルク・データを供給する。例えば、図6を参照すると、ソース・オフロード・プロバイダー635が、トークンに対応するバルク・データの一部または全部を宛先オフロード・プロバイダー636に供給することができる。
[00141] ブロック835において、他のアクションがあれば、それを実行することができる。
[00142] 図9は、本明細書において説明する主題の態様にしたがって、オフロード・イニシエーターにおいて行うことができるアクション例を概略的に表す流れ図である。ブロック905において、アクションが開始する。
[00143] ブロック910において、ソース・ストレージ・スタックのコンポーネントと通信することによって、オフロード・リード要求を開始する。例えば、図6を参照すると、イニシエーター605はオフロード・リード要求をソース・ストレージ・スタック610に送ることができる。このオフロード・リード要求と共に、オフロード・リード要求に応答して戻されることが許されるサブトークンの最大数を示す数値を送ることができる。
[00144] ブロック915において、メッセージに応答して、サブトークンを受ける。これらのサブトークンは、個別にこれらのサブトークンのいずれよりも大きなトークン(物理的または仮想的)を表す。拡大トークンは、この拡大トークンが有効である限りインミュータブルであるデータを表す。例えば、図6を参照すると、オフロード・リード要求に応答して、イニシエーターは多数のサブトークンを受ける。サブトークンを受けることと併せて、オフロード・リード要求に応答してどれ位のサブトークンが生成されたかを示す数値も受けることができる。
[00145] ブロック920において、イニシエーターはサブトークンを宛先ストレージ・スタックのコンポーネントに供給する。例えば、図6を参照すると、イニシエーター605はサブトークンを宛先ストレージ・スタック611のコンポーネントに供給する。
[00146] ブロック925において、他にもアクションがあれば、それを実行することができる。
[00147] 以上の詳細な説明から分かるように、オフロード技術に関する態様について説明した。本明細書において説明する主題の態様には、種々の変更や代替構造も可能であるが、例示したある種の実施形態を図面に示し、以上で詳しく説明した。しかしながら、特許請求する主題の態様を、開示した具体的な形態に限定する意図はなく、逆に、意図するのは、本明細書において説明する主題の種々の態様の主旨および範囲に該当する全ての変更、代替構造、および均等物を包含するということであることは、理解されてしかるべきである。

Claims (8)

  1. 少なくとも1つのプロセッサーとメモリーを含む計算デバイス上で実施される方法であって、
    前記計算デバイスによって、各々が固定サイズである2つ以上のサブトークンを受け取るステップであって、前記サブトークンは、前記固定サイズよりも大きなサイズの拡大トークンを集合的に表し、前記拡大トークンに対応するデータがオフロード・プロバイダーによって維持され、前記拡大トークンは、当該拡大トークンが有効である限りインミュータブルであるデータを表す、ステップと、
    前記拡大トークンを作成するために前記2つ以上のサブトークンからのデータを組み合わせるステップであって、前記2つ以上のトークンは、前記拡大トークンに含まれる全てのデータを少なくとも含む、ステップと、
    前記計算デバイスによって、前記拡大トークンからキーを取得するステップと、
    前記拡大トークンによって表される前記データの一部を、前記データの当該一部が前記サブトークンを供給したイニシエーターを通過することなく、取得するために、前記計算デバイスによって、前記キーの証拠を前記オフロード・プロバイダーに供給するステップと、
    を含む方法。
  2. 前記キーを取得するステップは、前記サブトークンのうちの1または複数から暗号論的安全乱数を取得するステップを含み、前記方法は更に、前記サブトークンのうちの1または複数からアドレシング情報を取得するステップを含み、前記アドレシング情報は、前記拡大トークンによって表される前記データを取得可能なソースを識別する、請求項1に記載の方法。
  3. 前記サブトークンは、各々正確に512バイトであり、または、前記サブトークンのうちの1または複数は、規格によって要求されるフィールドを含み、前記フィールドは、データ・トークン・タイプの表現を識別する、請求項1に記載の方法。
  4. 前記サブトークンは、サーバー・メッセージ・ブロックによってファイル・データを転送するファイル共有プロトコルによって送信される、請求項1に記載の方法。
  5. 前記サブトークンは、遠隔手続き呼び出しを介してファイルにアクセスする分散型ファイル・システム・プロトコルによって送信される、請求項1に記載の方法。
  6. アクションを実施するように一体に構成された計算デバイスと少なくとも1つのプログラム・モジュールとを備えるシステムであって、前記計算デバイスは、少なくとも1つのプロセッサーとメモリーを含み、前記アクションは、
    前記計算デバイスによって、イニシエーターによって開始されたオフロード・リード・メッセージを受け取るステップと、
    前記計算デバイスによって、前記受け取られたオフロード・リード・メッセージに応答してキーを生成するステップと、
    前記計算デバイスによって、各々が固定サイズであるサブトークンを供給するステップであって、前記サブトークンは、オフロード・プロバイダーによって維持される拡大トークンに対応する前記固定サイズのデータよりも大きなサイズの拡大トークンを集合的に表し、前記拡大トークンは、当該拡大トークンが有効である限りインミュータブルであるデータを表し、前記拡大トークンは、前記キーを含み、前記キーは、前記拡大トークンを前記拡大トークンに対応する前記データと関連付ける数値であり、前記2つ以上のサブトークンからのデータを組み合わせることによって前記拡大トークンが作成され、前記2つ以上のサブトークンは、前記拡大トークンに含まれる全てのデータを少なくとも含む、ステップと、
    を含む、システム。
  7. コンピューター実行可能命令を有するコンピューター記憶媒体であって、前記コンピューター実行可能命令は、少なくとも1つのメモリーを含む計算デバイスの少なくとも1つのプロセッサーによって実行されると、前記計算デバイスに、
    前記計算デバイスによって、ソース・ストレージ・スタックのコンポーネントと通信することによりオフロード・リード要求を開始するステップと、
    前記計算デバイスによって、前記オフロード・リード要求に応答してサブトークンを受け取るステップであって、前記サブトークンは、個々の前記サブトークンのいずれよりも大きな拡大トークンを集合的に表し、前記拡大トークンは、当該拡大トークンが有効である限りインミュータブルであるデータを表す、ステップと、
    前記計算デバイスによって、前記サブトークンを宛先ストレージ・スタックに供給することによりオフロード・ライト要求を開始するステップであって、前記拡大トークンは、キーを含み、前記キーは、前記拡大トークンを前記拡大トークンに対応する前記データと関連付ける数値であり、前記2つ以上のサブトークンからのデータを組み合わせることによって前記拡大トークンが作成され、前記2つ以上のサブトークンは、前記拡大トークンに含まれる全てのデータを少なくとも含む、ステップと、
    を含むアクションを実施させる、コンピューター記憶媒体。
  8. 前記アクションは、更に、前記オフロード・リード要求と共に、前記オフロード・リード要求に応答して戻されることが許されるサブトークンの最大数を示す数値を送るステップを含む、請求項に記載のコンピューター記憶媒体。
JP2015548028A 2012-12-14 2013-12-14 互換性を保つオフロード・トークン・サイズの拡大 Active JP6420253B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/714,413 2012-12-14
US13/714,413 US9251201B2 (en) 2012-12-14 2012-12-14 Compatibly extending offload token size
PCT/US2013/075212 WO2014093952A1 (en) 2012-12-14 2013-12-14 Compatibly extending offload token size

Publications (3)

Publication Number Publication Date
JP2016505960A JP2016505960A (ja) 2016-02-25
JP2016505960A5 JP2016505960A5 (ja) 2017-03-09
JP6420253B2 true JP6420253B2 (ja) 2018-11-07

Family

ID=49956364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015548028A Active JP6420253B2 (ja) 2012-12-14 2013-12-14 互換性を保つオフロード・トークン・サイズの拡大

Country Status (7)

Country Link
US (1) US9251201B2 (ja)
EP (1) EP2932692B1 (ja)
JP (1) JP6420253B2 (ja)
CN (1) CN104995895B (ja)
BR (1) BR112015011935B1 (ja)
RU (1) RU2672789C2 (ja)
WO (1) WO2014093952A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9380114B1 (en) * 2013-06-27 2016-06-28 Emc Corporation Techniques for peer messaging across multiple storage processors of a data storage array
US10205666B2 (en) * 2013-07-29 2019-02-12 Ampere Computing Llc End-to-end flow control in system on chip interconnects
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
JP6189267B2 (ja) * 2014-08-20 2017-08-30 株式会社東芝 情報処理装置、方法およびプログラム
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9720601B2 (en) * 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
WO2020062297A1 (zh) * 2018-09-30 2020-04-02 深圳市大疆创新科技有限公司 令牌管理方法、装置、芯片及可移动平台
CN110837633B (zh) * 2019-10-16 2021-10-08 支付宝(杭州)信息技术有限公司 智能凭证实现方法、系统及可读存储介质

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043866A (en) 1988-04-08 1991-08-27 International Business Machines Corporation Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery
US5355477A (en) 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
JPH06215160A (ja) 1992-08-25 1994-08-05 Texas Instr Inc <Ti> データ処理方法および装置
US5528594A (en) * 1994-12-22 1996-06-18 International Business Machines Corporation Method and system for implementing sub-tokens on a token ring network
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US6275867B1 (en) 1995-09-12 2001-08-14 International Business Machines Corporation Operation-partitioned off-loading of operations in a distributed environment
US6161145A (en) 1997-05-08 2000-12-12 International Business Machines Corporation Updating server-related data at a client
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6141705A (en) 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6304983B1 (en) 1998-09-30 2001-10-16 International Business Machines Corporation Checkpoint logging without checkpoint display device availability
US6385701B1 (en) 1999-11-19 2002-05-07 International Business Machines Corporation Method, system and program products for sharing data between varied clients using token management
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6785743B1 (en) 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
EP1179793A1 (de) 2000-08-09 2002-02-13 Indatex GmbH Portal für Finanzdienstleister
US7475199B1 (en) 2000-10-19 2009-01-06 Emc Corporation Scalable network file system
US7895445B1 (en) 2001-04-26 2011-02-22 Nokia Corporation Token-based remote data access
US6961055B2 (en) 2001-05-09 2005-11-01 Free Radical Design Limited Methods and apparatus for constructing virtual environments
US6697881B2 (en) 2001-05-29 2004-02-24 Hewlett-Packard Development Company, L.P. Method and system for efficient format, read, write, and initial copy processing involving sparse logical units
US20040139125A1 (en) 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US6938002B2 (en) 2001-06-20 2005-08-30 International Business Machines Corporation System and method for product evaluation
US7016982B2 (en) 2002-05-09 2006-03-21 International Business Machines Corporation Virtual controller with SCSI extended copy command
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US7121456B2 (en) 2002-09-13 2006-10-17 Visa U.S.A. Inc. Method and system for managing token image replacement
US7340486B1 (en) 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
EP1567929A2 (en) 2002-11-15 2005-08-31 Creo Inc. Methods and systems for sharing data
US7167905B2 (en) * 2003-01-31 2007-01-23 Sierra Wireless, Inc. Token-based Web browsing with visual feedback of disclosure
US7194462B2 (en) 2003-02-27 2007-03-20 Bea Systems, Inc. Systems and methods for implementing an XML query language
JP4271967B2 (ja) 2003-03-10 2009-06-03 株式会社日立製作所 分散ファイルシステム及び分散ファイルシステムの運用方法
US7406501B2 (en) 2003-03-24 2008-07-29 Yahoo! Inc. System and method for instant messaging using an e-mail protocol
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US20040267672A1 (en) 2003-06-26 2004-12-30 Gray William J. System and method for conducting secure electronic transactions
US7373548B2 (en) 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
EP1517247B1 (en) 2003-09-19 2006-11-15 Harman Becker Automotive Systems GmbH Data transfer interface
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
JP4646526B2 (ja) 2004-02-18 2011-03-09 株式会社日立製作所 記憶制御システム及び同システムの制御方法
US8042163B1 (en) 2004-05-20 2011-10-18 Symatec Operating Corporation Secure storage access using third party capability tokens
US7512721B1 (en) 2004-05-25 2009-03-31 Qlogic, Corporation Method and apparatus for efficient determination of status from DMA lists
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
EP1650923B1 (en) 2004-10-22 2011-05-18 Software AG Authentication method and devices
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20080104039A1 (en) 2004-11-24 2008-05-01 Linda Lowson System and method for resource management
US7275139B1 (en) 2004-12-02 2007-09-25 Tormasov Alexander G Secure deletion of information from hard disk drive
US7603555B2 (en) * 2004-12-07 2009-10-13 Microsoft Corporation Providing tokens to access extranet resources
US7565526B1 (en) 2005-02-03 2009-07-21 Sun Microsystems, Inc. Three component secure tunnel
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7475167B2 (en) 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US8713180B2 (en) 2005-06-22 2014-04-29 Cisco Technology, Inc. Zero-copy network and file offload for web and application servers
US7480908B1 (en) 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
JP4776307B2 (ja) 2005-08-31 2011-09-21 株式会社日立製作所 ストレージシステム、データ転送方法及びプログラム
US7617216B2 (en) 2005-09-07 2009-11-10 Emc Corporation Metadata offload for a file server cluster
US7725620B2 (en) 2005-10-07 2010-05-25 International Business Machines Corporation Handling DMA requests in a virtual memory environment
US8347373B2 (en) 2007-05-08 2013-01-01 Fortinet, Inc. Content filtering of remote file-system access protocols
US7877485B2 (en) 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
US7676607B2 (en) 2005-12-08 2010-03-09 Electronics And Telecommunications Research Institute Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8332370B2 (en) 2006-05-09 2012-12-11 Hewlett-Packard Development Company, L.P. Maintaining commonly named client-specific file content in hard disk drive emulation
US20080065835A1 (en) 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US8082231B1 (en) 2006-09-22 2011-12-20 Emc Corporation Techniques using identifiers and signatures with data operations
US8239674B2 (en) 2006-11-21 2012-08-07 Kabushiki Kaisha Toshiba System and method of protecting files from unauthorized modification or deletion
US7765361B2 (en) 2006-11-21 2010-07-27 Microsoft Corporation Enforced transaction system recoverability on media without write-through
US8213583B2 (en) 2006-11-22 2012-07-03 Verizon Patent And Licensing Inc. Secure access to restricted resource
CN101657802A (zh) 2006-12-06 2010-02-24 弗森多系统公司(dba弗森-艾奥) 用于远程直接存储器存取固态存储设备的装置、系统及方法
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
US20080155051A1 (en) 2006-12-23 2008-06-26 Simpletech, Inc. Direct file transfer system and method for a computer network
US7941812B2 (en) 2007-01-30 2011-05-10 Hewlett-Packard Development Company, L.P. Input/output virtualization through offload techniques
US8397038B2 (en) 2007-03-22 2013-03-12 Vmware, Inc. Initializing file data blocks
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US7886115B2 (en) 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices
US7730034B1 (en) 2007-07-19 2010-06-01 Amazon Technologies, Inc. Providing entity-related data storage on heterogeneous data repositories
US7801852B2 (en) 2007-07-31 2010-09-21 Oracle International Corporation Checkpoint-free in log mining for distributed information sharing
US7694105B2 (en) 2007-08-22 2010-04-06 Hitachi Global Storage Technologies Netherlands, B.V. Data storage systems that implement sector sets
US20090164994A1 (en) 2007-12-20 2009-06-25 Virtual Computer, Inc. Virtual computing management systems and methods
US8051111B2 (en) 2008-01-31 2011-11-01 Prowess Consulting, Llc Method and system for modularizing windows imaging format
WO2009103824A1 (es) 2008-02-18 2009-08-27 Microelectronica Española S.A.U. Transferencia segura de datos
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US20090248835A1 (en) 2008-03-31 2009-10-01 Subhankar Panda Offloading data transfers between a local and remote network
US8745336B2 (en) 2008-05-29 2014-06-03 Vmware, Inc. Offloading storage operations to storage hardware
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
JP5146174B2 (ja) 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US7904914B2 (en) 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
US8086585B1 (en) 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
US8250267B2 (en) 2008-10-31 2012-08-21 Netapp, Inc. Control I/O offload in a split-path storage virtualization system
TWI405211B (zh) 2008-11-04 2013-08-11 Phison Electronics Corp 快閃記憶體儲存系統、控制器與資料保護方法
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
TWI393143B (zh) 2008-12-05 2013-04-11 Phison Electronics Corp 快閃記憶體儲存系統及其控制器與防資料竄改方法
US8443166B2 (en) 2009-03-06 2013-05-14 Vmware, Inc. Method for tracking changes in virtual disks
US8370835B2 (en) 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8397046B2 (en) 2009-03-26 2013-03-12 Hitachi, Ltd. Method and apparatus for deploying virtual hard disk to storage system
US8583893B2 (en) 2009-05-28 2013-11-12 Marvell World Trade Ltd. Metadata management for virtual volumes
US8281149B2 (en) * 2009-06-23 2012-10-02 Google Inc. Privacy-preserving flexible anonymous-pseudonymous access
US8489654B2 (en) 2009-08-28 2013-07-16 Beijing Innovation Works Technology Company Limited Method and system for forming a virtual file system at a computing device
WO2011038359A2 (en) 2009-09-26 2011-03-31 Cisco Technology, Inc. Providing services at a communication network edge
US8627000B2 (en) 2010-02-08 2014-01-07 Microsoft Corporation Virtual disk manipulation operations
US9147081B2 (en) * 2010-07-27 2015-09-29 Infinidat Ltd. Method of access control to stored information and system thereof
US20120079583A1 (en) * 2010-09-23 2012-03-29 Microsoft Corporation Offload reads and writes
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US20120102561A1 (en) * 2010-10-26 2012-04-26 International Business Machines Corporation Token-based reservations for scsi architectures
US9092149B2 (en) * 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US20120144501A1 (en) 2010-12-03 2012-06-07 Salesforce.Com, Inc. Regulating access to protected data resources using upgraded access tokens
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US20120324560A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Token data operations
US20130041985A1 (en) 2011-08-10 2013-02-14 Microsoft Corporation Token based file operations
US20130179959A1 (en) 2012-01-05 2013-07-11 Microsoft Corporation Zero Token
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers

Also Published As

Publication number Publication date
US20140172811A1 (en) 2014-06-19
CN104995895B (zh) 2019-04-19
US9251201B2 (en) 2016-02-02
CN104995895A (zh) 2015-10-21
RU2015122660A (ru) 2016-12-27
EP2932692A1 (en) 2015-10-21
JP2016505960A (ja) 2016-02-25
BR112015011935A2 (pt) 2017-07-11
EP2932692B1 (en) 2017-02-01
RU2672789C2 (ru) 2018-11-19
BR112015011935B1 (pt) 2022-01-11
WO2014093952A1 (en) 2014-06-19
BR112015011935A8 (pt) 2019-10-08

Similar Documents

Publication Publication Date Title
JP6420253B2 (ja) 互換性を保つオフロード・トークン・サイズの拡大
JP6248182B2 (ja) プレースホルダを用いるファイル管理
US11153094B2 (en) Secure data deduplication with smaller hash values
US9692823B2 (en) Inter-protocol copy offload
US9817582B2 (en) Offload read and write offload provider
EP2932690B1 (en) Copy offload for disparate offload providers
JP6324494B2 (ja) 記憶システムおよびエイリアス・メモリ
US20190238560A1 (en) Systems and methods to provide secure storage
US20140143201A1 (en) Dynamic content file synchronization
EP2291748A2 (en) Maintenance of exo-file system metadata on removable storage device
US11681653B2 (en) Namespace representation and enhanced browsability for replicated file systems
US11199986B2 (en) System and method for data migration across storage systems
US11734246B2 (en) Systems and methods for multiplexing data of an underlying index
CN114281245A (zh) 同步写方法及装置、存储系统、电子设备
US11962640B2 (en) Write-in-place multipart uploads
US11914879B2 (en) Storage controller and storage system comprising the same
WO2023070462A1 (zh) 一种文件去重方法、装置和设备
TW202311968A (zh) 儲存器裝置、操作儲存器裝置的方法以及操作主機裝置的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180418

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: 20180912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181011

R150 Certificate of patent or registration of utility model

Ref document number: 6420253

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