(57)【要約】      （修正有）【課題】処理能力が向上されたデータストレージ装置上の仮想マシンを実装するための機器、システム、および方法を提供する。【解決手段】装置は、ホストに応答する通信インターフェースと、プロセッサと、装置がホストから取り外し可能であるように、通信インターフェースおよびプロセッサを含むハウジングと、を備える。プロセッサは、通信インターフェースを介してホストからコマンドを受信することと、装置のアーキテクチャに依存しないプラットフォーム独立型プログラムインターフェースを使用して、コマンドを処理することと、通信インターフェースを介してコマンドの結果をホストに返すことと、を行うように構成される。【選択図】図２
2014164759.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
ホストに応答する通信インターフェースと、
プロセッサと、
前記装置が前記ホストから取り外し可能であるように、前記通信インターフェースおよび前記プロセッサを含むハウジングとを備え、
前記プロセッサは、
前記通信インターフェースを介して前記ホストからコマンドを受信することと、
前記装置のアーキテクチャに依存しないプラットフォーム独立型プログラムインターフェースを使用して、前記コマンドを処理することと、
前記通信インターフェースを介して前記コマンドの結果を前記ホストに返すことと、を行うように構成される、装置。
【請求項２】
前記ハウジングに接続されるデータ記憶媒体を更に備える、請求項１に記載の装置。
【請求項３】
前記プロセッサは、前記コマンドがアプリケーションコマンドであるか、またはデータ記憶コマンドであるかを判定することを行うようにさらに構成され、前記アプリケーションコマンドは、前記プラットフォーム独立型プログラムインターフェースによって行われる操作を含み、前記データ記憶コマンドは、読み込みコマンドまたは書き込みコマンドを含み、
前記プロセッサは、
前記コマンドがアプリケーションコマンドであるとき、前記プラットフォーム独立型プログラムインターフェースを使用して、前記コマンドを処理することと、
前記コマンドがデータ記憶コマンドであるとき、データを記憶または取得することと、
を行うようにさらに構成される、請求項２に記載の装置。
【請求項４】
前記プラットフォーム独立型プログラムインターフェースを使用して、前記コマンドを処理することを更に含むことは、
前記コマンドに関連付けられたデータを前記データ記憶媒体から取得することと、
前記コマンドに従って、前記データを処理することと、を含む、請求項２に記載の装置。
【請求項５】
前記コマンドを更に含むことは、前記プラットフォーム独立型プログラムインターフェースを使用して、実行されるように設計されたコンピュータコードを含む、請求項１に記載の装置。
【請求項６】
前記プラットフォーム独立型プログラムインターフェースを更に備えることは、命令セットを実行するように構成される論理回路を含む、請求項１に記載の装置。
【請求項７】
前記プラットフォーム独立型プログラムインターフェースを更に備えることは、前記プロセッサ上で実行されるコンピュータ読み取り可能な命令を含む、請求項１に記載の装置。
【請求項８】
前記コマンドは、処理されるデータと、前記データをどのように処理するのかについての命令と、を含み、
前記プロセッサは、前記命令に従って、前記プラットフォーム独立型プログラムインターフェースを使用して、前記コマンドを処理するように更に構成される、請求項１に記載の装置。
【請求項９】
前記コマンドを更に含むことは、前記ホスト上で実行される処理の部分処理を行うための命令を含む、請求項１に記載の装置。
【請求項１０】
前記装置のオペレーティングシステムに依存しない前記プラットフォーム独立型プログラムインターフェースを更に備える、請求項１に記載の装置。
【請求項１１】
システムであって、
ホストと、
データストレージ装置とを備え、
前記データストレージ装置は、前記ホストに応答する通信インターフェースと、
プロセッサと、
前記データストレージ装置が前記ホストから取り外し可能であるように、前記インターフェースおよび前記プロセッサを含むハウジングとを含み、
前記プロセッサは、
前記通信インターフェースを介して前記ホストからコマンドを受信することと、
仮想マシンを使用して前記コマンドを処理することと、
前記通信インターフェースを介して前記コマンドの結果を前記ホストに返すことと、を行うように構成され、
前記仮想マシンは、前記データストレージ装置の構造アーキテクチャに依存しない、システム。
【請求項１２】
前記データストレージ装置は、前記ハウジングに接続されるデータ記憶媒体を更に備える、請求項１１に記載のシステム。
【請求項１３】
前記プロセッサは、前記コマンドが、アプリケーションコマンドであるか、またはデータ記憶コマンドであるかを判定することを行うように構成され、前記アプリケーションコマンドは、前記仮想マシンによって行われる操作を指定するコマンドを含み、前記データ記憶コマンドは、読み込みコマンドまたは書き込みコマンドを含み、
前記プロセッサは、
前記コマンドがアプリケーションコマンドであるとき、前記仮想マシンを使用して前記コマンドを処理することと、
前記コマンドがデータ記憶コマンドであるとき、データを前記データ記憶媒体に記憶するか、または前記データ記憶媒体からデータを取得することと、
を行うように更に構成される、請求項１２に記載のシステム。
【請求項１４】
前記仮想マシンを使用して前記コマンドを処理することを更に含むことは、
前記コマンドに関連付けられたデータを前記データ記憶媒体から取得することと、
前記コマンドに従って、前記データを処理することと、を含む、請求項１２に記載のシステム。
【請求項１５】
データを前記データストレージ装置に記憶することと、
前記コマンドを前記データストレージ装置に発行することとを行うように構成されるホストを更に備え、
前記コマンドは、前記仮想マシンを使用して生データを処理するための命令を含む、請求項１１に記載のシステム。
【請求項１６】
複数の部分処理を含む処理を実行することと、
前記コマンドを前記データストレージ装置に発行することとを行うように構成されるホストを更に備え、
前記コマンドは、前記仮想マシン上で前記複数の部分処理のうちの１つを実行するための命令を含む、請求項１１に記載のシステム。
【請求項１７】
前記データストレージ装置のオペレーティングシステムに依存しない前記プラットフォーム独立型プログラムインターフェースを更に備える、請求項１１に記載のシステム。
【請求項１８】
方法であって、
データストレージ装置でホスト装置からコマンドを受信するステップと、
前記データストレージ装置のアーキテクチャに依存しないプラットフォーム独立型プログラムインターフェースを使用して、前記データストレージ装置で前記コマンドを処理するステップと、
前記コマンドの結果を前記データストレージ装置から前記ホストへ返すステップと、を含む、方法。
【請求項１９】
前記プラットフォーム独立型プログラムインターフェースを使用して、前記データストレージ装置で前記コマンドを処理することを更に含むステップは、
前記コマンドに関連付けられたデータを前記データストレージ装置から取得するステップと、
前記コマンドに従って、前記データを処理するステップと、を含む、請求項１８に記載の方法。
【請求項２０】
前記コマンドは、前記ホスト上で実行される処理の部分処理を行うための前記データストレージ装置に対する命令を含む、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
背景技術
本開示は、概ね、データストレージ装置上の仮想マシンおよび装置独立型プログラミングインターフェースに関する。
【発明の概要】
【課題を解決するための手段】
【０００２】
要約
一般に、装置独立型プログラミングインターフェースを可能にするように構成される仮想マシンを含む、機器データストレージ装置が提示される。１つの例において、装置は、ホストに応答する通信インターフェースと、プロセッサと、装置がホストから取り外し可能であるように、通信インターフェースおよびプロセッサを含むハウジングと、を含んでもよい。プロセッサは、通信インターフェースを介してホストからコマンドを受信することと、装置のアーキテクチャに依存しないプラットフォーム独立型プログラムインターフェースを使用して、コマンドを処理することと、通信インターフェースを介してコマンドの結果をホストに返すことと、を行うように構成され得る。
【０００３】
別の例において、システムは、ホスト、ならびにホストに応答する通信インターフェースと、プロセッサと、インターフェースおよびプロセッサを含むハウジングとを含む、データストレージ装置を備えてもよく、データストレージ装置がホストから取り外し可能である。プロセッサは、通信インターフェースを介してホストからコマンドを受信することと、データストレージ装置の構造アーキテクチャに依存しない仮想マシンを使用して、コマンドを処理することと、通信インターフェースを介してコマンドの結果をホストに返すことと、を行うように構成され得る。
【０００４】
さらに別の例において、方法は、データストレージ装置でホスト装置からコマンドを受信することと、データストレージ装置のアーキテクチャに依存しないプラットフォーム独立型プログラムインターフェースを使用して、データストレージ装置でコマンドを処理することと、コマンドの結果をデータストレージ装置からホストに返すことと、を含んでもよい。
【図面の簡単な説明】
【０００５】
【図１】仮想マシンを有するデータストレージ装置の例示的な実施形態の図である。
【図２】仮想マシンを有するデータストレージ装置の別の例示的な実施形態の図である。
【図３】仮想マシンを有するデータストレージ装置を実装するための方法の例示的な実施形態のフローチャートである。
【発明を実施するための形態】
【０００６】
実施形態の以下の詳細な説明において、本明細書の一部を形成し、具体的な実施形態の例示によって示される添付の図面を参照する。他の実施形態が使用されてもよく、本開示の範囲を逸脱することなく、変更が行われてもよいことを理解されたい。
【０００７】
図１を参照すると、コンピュータシステムの実施形態が示され、全体として１００と表される。システム１００は、ホスト１０２と、データストレージ装置（ＤＳＤ）１０４と、インターフェース１０８と、を含んでもよい。ホスト１０２は、ホストシステムまたはホストコンピュータと呼ばれる場合もある。ホスト１０２は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、パーソナルデジタルアシスタント（ＰＤＡ）、電話器、音楽プレーヤ、別の電子装置、またはそれらのいずれかの組み合わせであり得る。ＤＳＤ１０４は、ディスクドライブ、ソリッドステートドライブ、ハイブリッドドライブ、ＵＳＢフラッシュドライブ、またはその他の種類のストレージ装置であり得る。ＤＳＤ１０４は、ホスト１０２から別個に取り外し可能であってもよく、ケーシング、ハウジング、またはＤＳＤ１０４のコンポーネントを含む他の物理的筐体を含んでもよい。インターフェース１０８は、ホスト１０２とＤＳＤ１０４との間の通信媒体であり得、ホスト１０２からのＤＳＤ１０４の取り付けまたは分離を可能にするコネクタを含んでもよい。インターフェース２０４は、ホスト２０２とＤＳＤ２００との間で、とりわけ、ＵＳＢ、ＩＥＥＥ１３９４、Ｃｏｍｐａｃｔ  Ｆｌａｓｈ、ＳＡＴＡ、ｅＳＡＴＡ、ＰＡＴＡ、ＳＣＳＩ、ＳＡＳ、ＰＣＩｅ、Ｆｉｂｒｅチャネル、イーサネット（登録商標）、またはＴｈｕｎｄｅｒｂｏｌｔ等の有線または無線のいずれかの通信を可能にする、任意のインターフェースを備えてもよい。
【０００８】
データストレージ装置１０４は、仮想マシンプログラミングインターフェース（ＶＭ）１０６を含み得る。仮想マシンは、基礎的ハードウェアまたはオペレーティングシステム（ＯＳ）の詳細を不明瞭にし得、プログラムが、ＶＭを実行している基礎的コンピュータプラットフォームのためよりもむしろＶＭのために設計されることを可能にする抽象化レベルを提供する、プラットフォーム独立型プログラミング環境であってもよい。プラットフォームは、コンピュータの物理的コンポーネントおよびオペレーティングシステム等、装置のハードウェアアーキテクチャおよびソフトウェアフレームワークを参照し得る。プラットフォーム独立型であることによって、仮想マシン環境は、システムのアーキテクチャまたはオペレーティングシステムに関係なく、同じプログラムインターフェースを提示するように設計され得る。換言すれば、コンピュータアプリケーションは、仮想マシンを実行するシステムの詳細を必要とすることなく、特定の仮想マシンとインターフェース接続し、かつそこで実行するように設計され得る。
【０００９】
いくつかの実施形態において、仮想マシンは、たとえＶＭ１０６を実行する実際の装置がそのような特性を共有しなくとも、別の装置のプラットフォーム特性をエミュレートし得る。すなわち、あるプラットフォームと作動するように設計されるアプリケーションは、そのプラットフォームをエミュレートするＶＭ上で実行され、ＶＭは、異なるプラットフォームを有する装置上で実行することができる。これは、装置がＶＭ１０６を使用することによって、異なるプラットフォームのために設計されたアプリケーションをなおも実行することができるという点で、なおもプラットフォーム独立型であり得る。
【００１０】
いくつかの実施形態において、仮想マシンは、処理を実行するプログラム環境を提供する「処理」仮想マシン、またはハードウェアアブストラクションレイヤ（ＨＡＬ）等のハードウェアアーキテクチャをエミュレートするか、または不明瞭にし得る「システム」仮想マシンである場合がある。
【００１１】
ＶＭ１０６は、とりわけ、Ｊａｖａ（登録商標）仮想マシン、Ｄａｌｖｉｋ、共通言語ランタイムを実行するＭｉｃｒｏｓｏｆｔの．ＮＥＴ  Ｆｒａｍｅｗｏｒｋ、およびＰａｒｒｏｔ仮想マシンを含む、任意の種類の仮想マシン環境であってもよい。アプリケーションは、ＤＳＤ１０４の特定の物理的コンポーネント（プロセッサ等）、オペレーティングシステム等を考慮するためのアプリケーションを再設計することを必要とせずに、ＶＭ環境１０６内で実行されるように設計されてもよい。これは、装置の製造者またはアーキテクチャに基づくアプリケーションを再設計することを必要とせずに、アプリケーション用処理装置としてのＤＳＤの使用を可能にし得る。
【００１２】
１つの例において、２つの装置が存在し、一方は、Ｗｉｎｄｏｗｓ８（登録商標）オペレーティングシステムを実行する携帯電話であり、他方は、Ｌｉｎｕｘ（登録商標）オペレーティングシステムを実行するコンピュータサーバであり、両方の装置が、Ｊａｖａ仮想マシンを有する。Ｊａｖａ  ＶＭ上で実行されるように設計されたアプリケーションは、アーキテクチャおよびオペレーティングシステムにおける相違に拘わらず、アプリケーション自体に対するいずれの変更もせずに、両方の装置上で実行することができる。
【００１３】
仮想マシン１０６は、プロセッサ、コントローラ、デジタル信号プロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、システムオンチップ、または十分な計算力を有する任意のエンジン上で実行するように実装されてもよい。ＶＭ１０６は、ＤＳＤ１０４上で実行されるソフトウェアとして、または明確に構成される回路として実装されてもよい。いくつかの実施形態において、ＤＳＤ１０４が、オペレーティングシステムを実行し、ＶＭ１０６が、ＯＳ独立型プログラムインターフェースをなおも提供しながら、ＯＳ環境内で実行してもよい。
【００１４】
図２を参照すると、仮想マシンを有するデータストレージ装置の具体的な実施形態が示され、全体として２００と表される。詳細には、図２は、ディスクドライブデータストレージ装置（ＤＳＤ）２００の機能ブロック図を提供する。ＤＳＤ２００は、図１に示される装置１０４等のデータストレージ装置であってもよい。データストレージ装置２００は、ＤＳＤ２００がホスト２０２から物理的に取り外されることを可能にするコネクタ（図示せず）を含むハードウェアまたはファームウェアに基づくインターフェース回路２０４を介して、ホスト装置２０２（図１に示されるホストシステム１０２等）と通信し得る。いくつかの実施形態において、ＤＳＤ２００は、有線または無線通信経由でインターフェース２０４を介してホスト２０２と通信してもよい。バッファ２１２は、読み込みおよび書き込み操作、または仮想マシン処理中に、データを一時的に記憶することができ、複数の保留中の操作が一時的に記憶された保留中の実行であり得る、コマンドキュー（ＣＱ）２１３を含み得る。フラッシュメモリ等の不揮発性ソリッドステートメモリ２０３は、追加のキャッシュもしくはバッファメモリのために、またはＤＳＤ２００のための追加のデータ記憶を提供するために、含まれ得る。ディスク２０９およびフラッシュ２０３等の複数の種類の不揮発性記憶媒体を格納するＤＳＤ２００は、ハイブリッド記憶装置であってもよい。
【００１５】
ＤＳＤ２００は、関連付けられたメモリ２０８およびプロセッサ２１０を有するプログラマブルコントローラ２０６を含み得る。コントローラ２０６は、プラットフォーム独立型プログラムインターフェースとしての仮想マシン環境２１１を実装してもよい。いくつかの実施形態において、ＤＳＤ２００はプロセッサ２０５を含んでもよく、仮想マシン２１１はプロセッサ２０５上で実行されるコンピュータの命令として、またはＦＰＧＡ、ＡＳＩＣ等として実装されてもよい。
【００１６】
更に、図２は、読み込み―書き込み（Ｒ／Ｗ）チャネル２１７を含み得るＤＳＤ２００を示し、これは、書き込み操作中にデータをエンコードし、読み込み操作中にディスク２０９から取得されたユーザデータを再構築し得る。プリアンプ回路（プリアンプ）２１８は、書き込み電流をヘッド２１９に印加し、読み出し信号の前置増幅を提供し得る。サーボ制御回路２２０は、サーボデータを使用して、適切な電流をコイル２２４に提供し、ヘッド２１９を位置決めしてもよい。コントローラ２０６は、コマンドキュー２１３における様々な保留中のコマンドの実行中に、プロセッサ２２２と通信して、ヘッド２１９をディスク２０９上の所望される位置に移動し得る。
【００１７】
例示的な実施形態において、コマンドは、ＤＳＤ２００で、インターフェース２０４経由でホスト２０２から受信される。インターフェース２０４は、ホスト２０２とＤＳＤ２００との間で、とりわけ、ＵＳＢ、ＩＥＥＥ１３９４、Ｃｏｍｐａｃｔ  Ｆｌａｓｈ、ＳＡＴＡ、ｅＳＡＴＡ、ＰＡＴＡ、ＳＣＳＩ、ＳＡＳ、ＰＣＩｅ、Ｆｉｂｒｅチャネル、イーサネット、またはＴｈｕｎｄｅｒｂｏｌｔ等の有線または無線のいずれかの通信を可能にする、任意のインターフェースを備えてもよい。ＤＳＤ２００は、コマンドの性質を判定し、それに応じて行動するように構成されてもよい。例えば、コマンドは、ＤＳＤ２００でデータの記憶または取得を要求するデータ記憶コマンドであってもよい。コマンドはまた、仮想マシン２１１上で実行されるタスクまたはアプリケーションであってもよく、タスクまたはアプリケーションに関連付けられたデータも含んでもよい。いくつかの実施形態において、データ記憶コマンドは、通信インターフェースの標準命令セットに含まれるコマンドを含んでもよいが、一方でＶＭタスクは、非インターフェース標準コマンドであってもよい。
【００１８】
例えば、ホストからのサンプルのＶＭコマンドは、ＶＭによって実行されるコードまたはＶＭによって実行される装置上に記憶されたコードへのポインタのいずれかからなってもよい。例えば、ＶＭコマンドは、ＤＳＤによって受信されると、ＤＳＤ内のＪａｖａ  ＶＭによって直接に解釈されるＪａｖａ  Ｂｙｔｅ  Ｃｏｄｅであるデータを含み得る。また、ホストは、まず、ストレージ装置上の１つのまたは複数のブロックにデータを書き込むための「標準」書き込みデータコマンドを発行し、次いで、ＤＳＤに、ストレージ装置から１つのまたは複数のブロックをロードし、そこに記憶されたコードを実行するように命令するＶＭコマンドを発行してもよい。更に、ＶＭはストレージ装置上に記憶領域を実装し得るため、ホストコマンドは、ブロック番号ではなくＶＭファイル名によってデータを参照し得る。
【００１９】
標準インターフェース（ＳＡＴＡまたはＳＡＳ等）を使用するＶＭの例示的な実装形態において、ＶＭ関連のコマンドの実装形態は、単に、コマンドセットの拡張であってもよい。例えば、ＳＡＳで使用されるＳＣＳＩコマンドセットはＴ１０委員会によって定義され、（ＤＳＤ等のブロック装置のために）読み込みおよび書き込みブロックのためのコマンドを定義するＳＢＣ−３標準を含む。コマンドは、ＣＤＢ（Ｃｏｍｍａｎｄ  Ｄｅｓｃｒｉｐｔｏｒ  Ｂｌｏｃｋ）を使用する装置に伝送され得る。例えば、ＳＣＳＩコマンドセットの「読み込み（Ｒｅａｄ）」コマンドは６バイトのシーケンスであり、第１のバイトはコマンドコードであり（読み込みのために、このバイトは「６」の値である）、第２、第３、および第４のバイトはロジカルブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）であり、第５のバイトは転送長（Ｔｒａｎｓｆｅｒ  Ｌｅｎｇｔｈ）であり、最後のバイトは「制御（Ｃｏｎｔｒｏｌ）」である。類似のやり方で、「書き込み（Ｗｒｉｔｅ）」、「フォーマットユニット（Ｆｏｒｍａｔ  Ｕｎｉｔ）」および他のコマンドがＳＣＳＩコマンドセットにおいて定義される。したがって、ＶＭコマンドを実装するための例示的なやり方は、コマンドバイトのための新しい値を使用する新しいコマンドを定義し（バイトには２５６通りの可能性がある）、コマンドがそれに応じてどのように機能するかを定義する。
【００２０】
例示的な実施形態において、ＶＭはＳＣＳＩを使用して定義されてもよい。ホストがＳＣＳＩ装置に接続するとき、それは、ＳＣＳＩ問い合わせコマンドを使用してもよく、これは、接続された装置を識別するために１２ｈの独自の値を有する。次いで、装置は、直接アクセスブロック装置である場合、００で応答してもよい。直接アクセスブロック装置型の複数のサブクラスが存在し、新しい型は、追加されて、「仮想マシン能力を有する直接アクセスブロック装置」型を定義することができ、次いで、これは、装置でのＶＭ操作のために必要なコマンドのセットを実装してもよい。ホストがＣＤＢのコマンドバイトのために特定値を使用するという事実は、ストレージ装置にコマンドの種類を認識させる。
【００２１】
別の例示的な実装形態は、イーサネットインターフェースおよびＴＣＰ／ＩＰプロトコルを介し、ホストは、発見メカニズム（ブロードキャストまたは既知のＶＭ装置のホスト定義リスト等）を介して、ＶＭを実装する装置のＩＰアドレスを知り、次いで、装置内のＶＭに接続されたＴＣＰ／ＩＰポートにパケットを直接送信し得る。
【００２２】
コマンドが読み込みまたは書き込みコマンドであるとき、コントローラ２０６は、ディスク２０９、フラッシュ２０３、または他のメモリで、関連付けられたデータの取得または記憶を指示してもよい。完了後、ＤＳＤ２００は、要求データを返し、またはデータが記憶されたという通知を返してもよい。
【００２３】
コマンドがＶＭ２１１上に実装のためのタスクを含むとき、ＶＭ２１１のインスタンスが作成されてもよく、またはタスクは、すでに実行しているＶＭ２１１のインスタンスに送信されてもよい。ＶＭ２１１は、コントローラ２０６、別個のプロセッサ２０５、または他の計算コンポーネント上に実装されてもよい。タスクまたはアプリケーションは、ＶＭ２１１によって実行されるコードまたはＶＭ２１１の所与の機能を実装するための命令の形態であってもよい。コマンドは、タスクに加えてデータセットを含んでもよく、タスクは、データ上での操作を行ってもよい。例えば、タスクは、提供されたデータセット上で実行するための方程式であってもよい。いくつかの実施形態において、コマンドは、例えば、ロジカルブロックアドレス（ＬＢＡ）の範囲を提供することによって、ＶＭ２１１がＤＳＤ２００上に記憶された特定データ上での操作を行うことを指示してもよい。
【００２４】
一実施形態において、大きなデータセットは、ＤＳＤ２００上に記憶されてもよく、タスクは、記憶されたデータセットをホストによって提供されたデータセットと比較し、最も近い一致を返してもよい。別の実施形態において、タスクは、それぞれのデータセット上で実行するための方程式であり、結果をホストに返してもよい。別の実施形態は、ホスト２０２によって提供される基準に従って、記憶データを分類することを伴ってもよい。いくつかの実施形態において、タスクは、ＤＳＤ２００上に結果を記憶することと、結果自体をホストに返すよりも、むしろ記憶された結果のアドレスをホスト２０２に返すことを伴ってもよい。
【００２５】
ホストに返される結果は、ホストから受信されたコマンドが読み込みもしくは書き込みコマンド、またはＶＭタスクであるかどうかに応じて、異なってもよい。例えば、読み込みコマンド後に、ＤＳＤ２００は要求記憶データを返してもよく、書き込みコマンド後に、ＤＳＤ２００は書き込み完了応答を返してもよい。コマンドがＶＭタスクであった実施形態において、返された結果は、ＶＭ２１１上で行われた計算または機能の結果、タスクもしくは計算の結果のストレージアドレス、または他の非インターフェース標準結果であってもよい。例えば、ＶＭコマンドに応答して返されたデータは、コマンドを受信する前のＤＳＤ２００上に記憶された書き込み完了応答またはデータを含まない場合があるが、代わりに、コマンドに応答して新たに生成されたデータを含んでもよい。
【００２６】
ＶＭ２１１内でタスクまたはアルゴリズムを行うことは、インターフェース２０４経由でホスト２０２に大量のデータを送信することを必要とせずに、ＤＳＤ２００での速い処理を可能にする。したがって、近接状態で大量のデータに対して実行される利点を生かし得るいずれの操作も、明確な一致のみがホストで必要とされ得る大きなデータセット上で行われる検索機能等、ＤＳＤ上で実装されるＶＭから利益を得ることができる。
【００２７】
いくつかの実施形態において、ＤＳＤ２００に送信されるタスクは、ホスト２０２によって行われる処理の部分処理を含む。例えば、ホスト２０２上で実行されるプログラムは、いくつかの処理スレッドを含んでもよく、そのサブセットは、処理のためにＤＳＤ２００に送信され得る。別の実施形態において、ホスト２０２は、仮想マシンを有する複数のデータストレージ装置に接続されてもよく、またはＶＭを有する複数のＤＳＤは、ネットワーク内で別途接続され得る。それぞれのＤＳＤ上のＶＭ２１１は、多くの計算または大量のデータを要求するより大きな処理の部分処理を行うように命令されてもよい。例えば、処理されなければならない大量のデータは、複数のデータストレージ装置全体で記憶されてもよく、それぞれのＤＳＤは、それぞれの記憶データを処理するように命令される。そのようなシステムは、データバスまたはインターフェース全体に大量のデータを送信することにより処理が制約され得るよりは、むしろ計算上の作業負荷を分散させ、データが記憶されるドライブ上で処理を行うことにより遅延を低減させることによって、データ処理時間を改善する。
【００２８】
例えば、データベースは、それぞれ１テラバイトの容量を有する１，０００のドライブに接続されるサーバによって管理される１，０００テラバイトのデータを格納する場合がある。検索がサーバによって行われる場合、例えば、１００ＭＢ／秒で一度に１，０００ＴＢのデータを１つのドライブからサーバに順次、送信することを必要とする場合がある。この様式で検索を行うことは、完了するために数日かかる場合がある。それぞれのドライブがその独自のそれぞれのデータ上で検索機能を行うことができるＶＭを有する場合、検索は数時間のうちに終了され得る。
【００２９】
加えて、機能は検索よりも複雑である場合がある。例えば、店舗チェーンは、ＶＭを有するストレージ装置全体に分散された売上記録および供給情報のデータベースを有し、これは、供給、需要、および以前の売上履歴に基づいて最新の価格見積もりを提供するためにアクセスされ得る。そのような計算は、データが限定された帯域幅によって転送され、中央サーバによって処理されなければならないとき、非常に遅い場合がある。複数のドライブ全体に記憶される大量のデータのうちの「ビッグデータ」を伴う類似の他のアプリケーションは、例えば、インターネットアクセス履歴およびユーザの選好、ならびに適切な広告、友人の推奨、音楽選択等を選択するためのピアネットワークを使用すれば可能である。
【００３０】
ＶＭは、ＮＡＳ、ネットワークアタッチドソトレージ装置も実装することができ、コード実装が装置ベンダーおよび将来の技術全体で移植可能であるという付加利益と共に、ストレージが、バックアップ、媒体記憶、シンプロビジョニング、データ重複排除、および冗長性のための他の装置に提供される。
【００３１】
図３を参照すると、データストレージ装置上で仮想マシンを実装するための方法３００の例示的な実施形態のフローチャートが示される。方法３００は、３０２でコマンドをホストから受信することを含み得る。方法３００は、３０４で、コマンドがデータストレージ装置上で実行する仮想マシンによる実装のためのアプリケーションコマンドであるか、またはデータ読み込みまたは書き込みコマンド等のデータ記憶コマンドであるかを判定することを伴ってもよい。３０６で、コマンドがデータ記憶コマンドであると判定されたとき、方法は、３０８で、関連付けられたデータをデータストレージ装置に記憶すること、またはデータストレージ装置からデータを取得することを伴ってもよい。
【００３２】
３０６で、コマンドがデータ記憶コマンドでないと判定されたとき、コマンドは、３１０で、ＶＭ上で実行されるアプリケーションコマンドである場合がある。アプリケーションコマンドは、コンピュータ実行可能なコード、命令、またはＶＭ上で行われるタスクを指定する他の指示の形態であってもよい。例えば、アプリケーションコマンドは、データセット上で行われる数学的機能のセットを含んでもよい。アプリケーションコマンドは、タスクまたは操作を行うデータも含んでもよく、またはそのようなデータがデータストレージ装置上で記憶されるアドレスを表示してもよい。アプリケーションコマンドはまた、タスクの結果がホストに返され、データストレージ装置に記憶され、または両方が行われるかどうかを指示してもよい。結果がデータストレージ装置上に記憶されるとき、３１２で、タスクを完了したか、もしくは完了できなかったとの通知、または結果が記憶されたアドレスが、ホストに返されてもよい。
【００３３】
３０８のデータ記憶コマンドまたは３１０のアプリケーションコマンドの完了後、３１２で適切な結果またはデータがホストに返されてもよい。
【００３４】
様々な実施形態によれば、本明細書に記載される方法は、コンピュータプロセッサまたはコントローラ２０６等のコントローラ上で実行される１つのまたは複数のソフトウェアプログラムとして、実装されてもよい。特定用途向け集積回路、プログラマブルロジックアレイ、および他のハードウェア装置を含むがこれらに限定されない専用ハードウェア実装形態は、同様に、本明細書に記載される方法を実装するために構築され得る。更に、本明細書に記載される方法は、実行されると、プロセッサに本方法を行わせる命令を含むコンピュータ読み取り可能な媒体として実装されてもよい。
【００３５】
本明細書に記載される実施形態の例示は、様々な実施形態の構造体の一般的な理解を提供することを意図される。例示は、本明細書に記載される構造体または方法を利用する機器およびシステムの要素および特徴の全ての完全な説明として機能することを意図されない。本開示を検討すれば、多くの他の実施形態が当業者には明らかである場合がある。他の実施形態は、本開示から利用され、または派生し、したがって、本開示の範囲を逸脱することなく、構造的および論理的代用ならびに変更がなされ得る。更に、特定の実施形態が本明細書に例示および説明されているが、同様または類似の目的を達成するように設計された任意の後の配置構成が、示される特定の実施形態の代わりに代用され得ることを理解されたい。
【００３６】
本開示は、様々な実施形態の後のあらゆる適合形態または変形形態を包含することを意図される。上記の実施形態および本明細書に詳細に記載されない他の実施形態の組み合わせは、本明細書を検討すれば、当業者には明らかであろう。加えて、例示は、表現するものにすぎず、縮尺通りに描かれない場合がある。例示内のある比率は、誇張される場合があり、一方で他の比率は、縮小される場合がある。したがって、本開示および図面は、限定的なものではなく、例示的なものと見なされるべきである。
【図１】
2014164759.tif 000003
【図２】
2014164759.tif 000004
【図３】
2014164759.tif 000005