JP5599804B2 - 仮想ストレージの割り当て方法 - Google Patents

仮想ストレージの割り当て方法 Download PDF

Info

Publication number
JP5599804B2
JP5599804B2 JP2011531068A JP2011531068A JP5599804B2 JP 5599804 B2 JP5599804 B2 JP 5599804B2 JP 2011531068 A JP2011531068 A JP 2011531068A JP 2011531068 A JP2011531068 A JP 2011531068A JP 5599804 B2 JP5599804 B2 JP 5599804B2
Authority
JP
Japan
Prior art keywords
driver
interface
computer
pointer
access
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
JP2011531068A
Other languages
English (en)
Other versions
JP2012505473A5 (ja
JP2012505473A (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 JP2012505473A publication Critical patent/JP2012505473A/ja
Publication of JP2012505473A5 publication Critical patent/JP2012505473A5/ja
Application granted granted Critical
Publication of JP5599804B2 publication Critical patent/JP5599804B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Description

本発明は、コンピューティング分野、特に、コンピュータの仮想化に関する。もっとも仮想化とは、単に例示的な分野、および非限定的な分野である。
完全に仮想化されたシステムにおいて、毎回の入出力(I/O)操作は、一般的に、ハイパーバイザ、ホストオペレーティングシステム、またはマシン上で実行する別個の仮想マシンによって間接的に処理されるため、仮想マシンシステムは、I/O機能に関して低いパフォーマンスに悩まされる可能性があり、それゆえに、入出力機能の実行コストが増加する。このようなパフォーマンスの問題を緩和する一つの手段は、システムにおける物理ハードウェアの一部のリソースを直接制御することを、仮想マシンに許容することである。しかしながら、このような直接制御を提供することは、仮想マシンを不完全に仮想化する効果があり得、仮想化と関連付く機能の多く(データ保存、データ移動、スナップショット取得、など)を成し遂げることが困難になり得る。
このようなI/Oのパフォーマンス問題を対処する別の方法は、一つのパスはハードウェアに直接的に伝わり、別のパスは、別の仮想マシンを介して、ハードウェアに間接的に伝わるような、I/Oデバイスへの多重パスを生成することである。仮想マシンがデータ保存、またはデータ移動できるように仮想マシンの状態を完全にカプセル化することを要求する場合、ハードウェアへの直接パスは解体される可能性があり、ハードウェアへの間接パスを使用し得る。多重パスを生成する際の一つの問題は、セットアッププロセスの一部として、セカンドパスにデバイス制御を与えることなく、セカンドパスを構成する事は一般的に困難であることである。I/Oデバイスが、ページングコードまたはページングデータのために使用され、ページングデバイスの制御が、ページングデバイスが完全に使用可能になる前に、セカンドパスを通る場合、ページングは停止し、システムクラッシュを引き起こし得る。
したがって、上記問題を解決する技術分野において、別の技術が必要とされる。
スタックによって表されたデバイスを物理的に制御するものでない仮想マシンのパーティションにおいて、デバイスドライバスタックを構築する様々な方法および様々なシステムを本願明細書に開示する。実施形態において、第2インターフェースおよびI/Oデバイスのための関連ドライバを、具体例を挙げて説明し得る。関連ドライバが制御し得るデバイスを記述する情報であって、I/O仮想化層からの情報は要求され得る。多重パスリダイレクション層(multi-path redirection layer)は、I/Oデバイスのドライバを含む既存のスタックへのハンドルを提供し得る。この既存のスタックは、その後、デバイスと通信し、デバイスを示すオブジェクトおよび新しいデバイスドライバを含む、新しいスタックの生成を可能にするために使用され得る。多重パスリダイレクション層は、その後、新しいスタックへのハンドルをオープンし、デバイス仮想化層に通知し、デバイス仮想化層は、その後、新たに生成されたインターフェースにデバイスの制御を譲り渡すため、既存のデバイスインターフェースに要求を送信し得る。デバイスは、直ちに、新しいインターフェースによって制御され得、I/Oは、新しいドライバおよび新しいインターフェースを介して、リダイレクトされ得る。
前述に加えて、それ以外の態様は、特許請求の範囲、図面、および本開示の一部を形成する本文で記述する。本開示の1つまたは複数の様々な態様は、本開示の本明細書において参照される態様を達成することのための回路構成および/またはプログラミングを含み得るが、これに制限されないことを、当業者であれば十分に理解できる。前記回路構成および/またはプログラミングは、仮想化技術によって、ハードウェア、ソフトウェア、および/または、システム設計者の設計上の選択によって決まる、本明細書において参照される態様を達成するように構成するファームウェア、の任意の組み合わせとなり得る。
注意すべきは、本概要は、下記の詳細な説明においてさらに記述する簡単な形で概念の選択を紹介するために提供する。本概要は、特許請求の範囲に記載する主題の重要な特徴または重要な特徴を識別する意図はなく、また特許請求の範囲に記載する主題の範囲の画定の手助けを意図するものでもない。
前述の概要、ならびに後述の詳細な説明も、添付の図面とともに読むことにより、よりよく理解される。本開示を示すために、本開示の様々な態様を示す。しかしながら、本開示は、示される特定の態様に制限するものでない。以下に図を示す。
複数の仮想マシンを備え、複数の仮想プロセッサ、および対応するゲストオペレーティングシステムを含む仮想マシン環境を示す図である。前記仮想マシンは、スケジューラ、および他のコンポーネントを含み得、複数の仮想マシンのためにハードウェアを仮想化する仮想化層において、仮想化層によって保持される。 コンピュータシステムにおける、仮想環境のためのハードウェアおよびソフトウェアの基本設計概念の論理的な階層化を表す線図を示す図である。 本開示の態様を実施することができるコンピュータシステム例を示す図である。 典型的な仮想コンピューティングシステムを示す図である。 代替のコンピューティングシステムを示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 本開示を実施するプロセスを示す典型的な系統図を示す図である。 スタックと関連付くデバイスを制御するものでない仮想マシンのデバイスドライバスタックを構築する操作手順例を示す図である。 スタックと関連付くデバイスを制御するものでない仮想マシンのデバイスドライバスタックを構築する操作手順例を示す図である。 仮想マシン環境において、ページングコードまたはページングデータのために使用するI/Oデバイスへの多重パスを生成する操作手順例を示す図である。 仮想マシン環境において、ページングコードまたはページングデータのために使用するI/Oデバイスへの多重パスを生成する操作手順例を示す図である。 上記、図1〜10に関して述べたコンピュータ実行可能命令を有するコンピュータ可読媒体を示す図である。
一般用語における仮想マシン
本発明の様々な実施形態を十分に理解するため、ある具体的詳細を、以下の説明および図において説明する。しばしばコンピューティング技術およびソフトウェア技術に関連付く、ある良く知られている詳細は、本発明の様々な実施形態を不必要に分かりにくくすることを避けるため、以下の開示に記述していない。さらに、当業者は、以下の1つまたは複数の詳細な説明なしで、本発明の他の実施形態を実施することができることを理解するだろう。最後に、様々な方法は、以下の開示における手順および順序を参照して記述するが、記述それ自体は、本発明の実施形態の明瞭な実施を提供するためであり、手順および手順の順序が、本発明を実施するために必要であるとして解釈すべきでない。
注意すべきは、本明細書に記載する様々な技術は、ハードウェア、またはソフトウェア、または必要に応じて両方の組み合わせ、と接続して実行され得ることである。したがって、本発明の方法および本発明の一連の装置、またはある面、またはその一部は、プログラムコード(すなわち、命令)が、コンピュータ、または本発明を実施するために一連の装置となるマシンなどに読み込まれ、そのマシンなどによって実行される際、フレキシブルディスク、CD−ROM、ハードドライブ、または任意の、マシン可読ストレージ媒体などの有形の媒体において実施されるプログラムコードを形成し得る。プログラム制御可能なコンピュータ上のプログラムコード実行について言えば、コンピューティングデバイスは、プロセッサ、プロセッサによって読み込み可能なストレージ媒体(揮発性メモリ、および不揮発性メモリ、および/または記憶素子を含む)、少なくとも一つの入力デバイス、および少なくとも一つの出力デバイスを通常含む。一つまたは複数のプログラムは、例えばAPI、再利用可能な制御、または同様のものの使用を介して、本発明に関連して記述されたプロセスを実行、または適用し得る。このようなプログラムは、高水準手続き型プログラミング言語、またはオブジェクト指向プログラミング言語で好んで実装され、コンピュータシステムと通信する。しかしながら、前記プログラムは、必要に応じて、アセンブリ言語、または機械語で実装される場合もある。いずれにせよ、プログラミング言語は、コンパイル言語、またはインタプリタ言語であり、ハードウェア実装と組み合わされ得る。
仮想マシンのために、単一の物理マシンは、下層にある物理マシン自身の完全な仮想インスタンス上で互いに実行する、多くのゲストオペレーティングシステムを支援できる。ゲストオペレーティングシステム(OS’s)は、あるOSの単一のバージョンのインスタンス、同一OSの異なるリリース、または完全に異なるOS’sになることができる。仮想マシンモニタ(VMM)、またはハイパーバイザと呼ばれるシン・ソフトウェア層は、仮想マシンおよび他の仮想サブシステムを、生成または制御し得る。VMMもまた、物理マシンの完全な制御権を獲得し、CPU、メモリ、ストレージの空き、および互いのゲストOSのためのI/O帯域幅、のリソース保証を提供する。
図1aは、複数の仮想マシン120、121を備え、複数の仮想プロセッサ110、112、114、116、および対応するゲストオペレーティングシステム130、132を含む仮想マシン環境100を示す。仮想マシン120、121は、スケジューラ142、および他のコンポーネント(図示せず)を含み得る仮想化層140によって保持され、仮想化層140は、複数の仮想マシン120、121のハードウェア150を仮想化する。複数の仮想プロセッサ110、112、114、116は、下層にあるハードウェアの物理プロセッサ160、162に相当する仮想のものとなり得る。
図1bは、コンピュータシステムにおける、仮想環境のためのハードウェアおよびソフトウェアの基本設計概念の論理的な階層化を表す線図を示す。図1bにおいて、仮想化プログラム180は、物理ハードウェアの基本設計概念182の上で、直接的、または間接的に実行する。仮想化プログラム180は、(a)ホストオペレーティングシステムと平行して実行する仮想マシンモニタ、(b)仮想化を実行するハイパーバイザコンポーネントを備えるホストオペレーティングマシン、(c)ハードウェア、または(d)マイクロコード、となり得る。仮想化プログラムもまた、任意のオペレーティングシステムから別々に実行するハイパーバイザとなり得る。言い換えれば、ハイパーバイザの仮想化プログラムは、任意のオペレーティングシステムの一部として実行する必要はなく、任意のオペレーティングシステムと平行して実行する必要もない。それどころか、ハイパーバイザの仮想化プログラムは、「ルートパーティション」を含み、すべてのオペレーティングシステムの「下」で実行し得る。仮想化プログラム180は、ゲストハードウェアの基本設計概念178(本コンポーネントは「パーティション」または「仮想マシン」である事実を示すための破線として示す)を仮想化する、すなわち、ハードウェアは実際には存在しないが、仮想化プログラム180によって代わりに仮想化される。ゲストオペレーティングシステム176は、ゲストハードウェアの基本設計概念178の上で実行し、ソフトウェアアプリケーション174は、ゲストオペレーティングシステム176の上で実行することができる。図1bの仮想化オペレーティング環境において、ソフトウェアアプリケーション174は、たとえソフトウェアアプリケーション174が、ホストオペレーティングシステム、および物理ハードウェアの基本設計概念182と互換性がないオペレーティングシステム上で実行するために通常、設計されていても、コンピュータシステムの中で実行できる。
仮想マシンは、オペレーティングシステム全体、多くのプロセスと組み合わさって構成するアプリケーション一式、仮想マシンの状況における「ワークロード」、または「プロセス」として参照され得るもの全体、を一般的に含む。本開示における用語「プロセス」および用語「ワークロード」は、仮想マシンの状況において同じ意味で用いられ得、当業者は、「プロセス」は、仮想マシンにおいてインスタンスを生成する、すべてのシステム、およびすべてのアプリケーションを含む複数のプロセスを参照し得ることを難なく理解できるだろう。
次に、図2は、物理コンピュータハードウェア202の上で直接実行し、パーティションA208による使用のため、オペレーティングシステムA212に、およびパーティションB210による使用のため、オペレーティングシステムB214に、顕在化させるインターフェースによって、物理コンピュータハードウェア202のリソースへのアクセスを提供する、ホストオペレーティングシステム(ホストOS)ソフトウェア層204を含む仮想コンピュータシステムを示す。これは、ホストOS204の上で実行する、オペレーティングシステム層212、およびオペレーティングシステム層214に気づかれないホストOS204可能にする。さらに、ホストOS204は、特定のプログラム用の仮想化機能を考慮して特別に設計され得、仮想化を実行するため組み込まれたハイパーバイザコンポーネント(図示せず)を備える標準のオペレーティングシステムになり得、仮想化を実行する。
さらに図2を参照すると、上記ホストOS204は、例えば、仮想化されたインテル386プロセッサであり得るパーティションA208、および例えば、仮想化された、モトローラ680x0プロセッサ群の1バージョン、であり得るパーティションB210、の2つのパーティションである。パーティション208内には、ゲストオペレーティングシステム(ゲストOSs)A212があり、パーティション210内には、ゲストオペレーティングシステム(ゲストOSs)B214がある。ゲストOS A212の上で実行するのは、2つのアプリケーション、つまり、アプリケーションA1 216、およびアプリケーションA2 218であり、ゲストOS B214の上で実行するのは、アプリケーションB1 220である。
図2に関して、(破線で示されている)パーティションA208、および(破線で示されている)パーティションB210は、単なるソフトウェア構築物として存在し得る、仮想化コンピュータハードウェアの表現物であることに注意しなくてはならない。パーティションA208、およびパーティションB210は、各々、パーティションA208にゲストOS A212、パーティションB210にゲストOS B214を表現するのみならず、実在する物理コンピュータハードウェア202と間接的に相互作用するため、ゲストOS A212、およびゲストOS B214に必要であるソフトウェア手順のすべてを実行する専門の仮想化ソフトウェアの実行のため可能にされる。
図3は、仮想化が、ホストオペレーティングシステム204”と平行して実行する仮想マシンモニタ(VMM)204’によって実行される代替の仮想化コンピューティングシステムを示す。ある場合において、VMM204’は、ホストオペレーティングシステム204”の上で実行するアプリケーションになり得、ホストオペレーティングシステム204”のみを介して、コンピュータハードウェア202と相互作用する。別の場合においては、図3に示されるように、VMM204’は、その代わりに、ホストオペレーティングシステム204”を介して、コンピュータハードウェア202と間接的に相互作用する一部の階層上で、部分的に独立しているが、(ホストオペレーティングシステムがコンピュータハードウェアと直接的に相互作用するのと同様に)VMM204’がコンピュータハードウェア202と間接的に相互作用する別の階層上ではそうでない、ソフトウェアシステムを含み得る。なおかつ別の場合において、VMM204’は、(そのときでもまだ、コンピュータハードウェア202の使用を調整する、および競合を避ける、などのため、ホストオペレーティングシステム204”と相互作用するが)ホストオペレーティングシステム204”を用いることをせずに、(ホストオペレーティングシステムがコンピュータハードウェアと直接的に相互作用するのと同様に)コンピュータハードウェア202と直接的に相互作用する全ての階層上で、完全に独立したソフトウェアシステムを含み得る。
上述のパーティションを実装するためのこれらのバリエーションの全ては、単なる例示的な実装であり、本願明細書において、本開示を任意の独特の仮想化態様に限定するものとして解釈されるべきでない。
仮想ストレージの割り当て
I/Oの仮想化(IOV)は、単一の物理I/Oデバイスのための機能を参照し、1つ以上の仮想マシン、または、ハイパーバイザ(もしくはVMM、など)と仮想マシン間によって共有される。仮想マシンシステムは、I/Oの仮想化に関して低いパフォーマンスに悩まされる可能性がある。これは、仮想化の役立つ特徴(例えば、物理ハードウェアからの分離)が、仮想マシンにおいてワークロードを実行する際、悪い効果をもたらす可能性があるためである。完全に仮想化したシステムにおいて、毎回のI/O操作は、一般に、ハイパーバイザ、ホストオペレーティングシステムによって、またはマシン上で実行する個別の仮想マシンのいずれか一方によって、間接的に処理される。低いI/Oパフォーマンスを緩和する一つの手段は、システムにおける物理ハードウェアの一部の制御を直接制御することを仮想化マシンに許容することであり得る。しかしながら、直接制御を許容することは、仮想化と関連付く機能の多く(データ保存、データ移動、スナップショット取得、など)を成し遂げることが困難になり得る場合に、仮想マシンを不完全に仮想化する効果があり得る。
同一出願人による米国特許出願番号(代理人整理番号:MSFT−5556/316010.01)は、上記の問題を対処するための技術を説明している。例えば、I/Oデバイスへの多重パスは生成され得る。一つのパスはハードウェアに直接的に伝わり得、別のパスは、別の仮想マシンを介してハードウェアに間接的に伝わり得る。仮想マシンがデータ保存、またはデータ移動できるように仮想マシンの状態を完全にカプセル化することを要求する場合、直接パスは解体される可能性があり、間接パスを使用し得る。間接パスは、本質的に仮想化できる。
しかしながら、問題は、2つのパスを構築する中で、特に、I/Oデバイスが、ページングコードまたはページングデータのために使用される場合に生じる。セットアッププロセスの一部として、セカンドパスにデバイスの制御を与えることなく、セカンドパスを構成する事は一般的に困難である。ページングデバイスが完全に使用可能になる前に、ページングデバイスの制御がセカンドパスに渡される場合、エラーが発生し得、ページングは停止し得る。多くの状況では、ページングが停止すると、システムはクラッシュし得る。
図4を参照すると、純粋に「合成(synthetic)」ストレージサブシステムの線図が示されている。合成スタックは、仮想マシン内での使用のために一般的に設計されたドライブで構成されているI/Oスタックである。別の用語が、特定のシステムに応じて合成スタックを参照するために、使用され得る。例えば、別のシステムにおける同様のI/Oスタックのために使用される用語は、「準仮想化(paravirtualized)」である。図4を参照すると、線図には2つのパーティションが示されている。1つのパーティションは、ディスク460への直接の物理アクセスを備える特権パーティション410である。もう一方のパーティションは、ディスク460へのアクセスを要求し得る非特権パーティション470である。例えば、ファイルシステム475は、合成SCSIバスドライバ480がディスクドライバ485と通信するように要求するファイルへのアクセスを要求し得、その後、VMバス465を介して通信する。ストレージ仮想化サービスプロバイダ420は、仮想ストレージサービスを提供し得る。ストレージ仮想化サービスプロバイダ420は、ディスクドライバ430と通信し得、物理SCSIバスデバイスドライバ440にアクセスする。SCSIバスデバイスドライバ440は、SCSIコントローラ450へのアクセス、および最終的にディスク460に常駐するファイル(通常は、ブロック層(block layer)に存在する)を提供し得る。したがって、特権パーティション410として示されるある仮想マシンは、SCSIコントローラ450である物理ストレージデバイスの制御を有する。非特権パーティション470として示される別の仮想マシンは、SCSIコントローラ450へのアクセスを見つけ出そうとし得る。
次に、図5を参照すると、ディスク460へのセカンドパスを構築したあとの典型的な最終状態が示されている。非特権パーティション470は、第2SCSIコントローラ520を介して、ディスク460に渡る物理的な制御を有する。このアクセスは、物理SCSIバスデバイスドライバ510、およびディスクドライバ505を含む第2スタックによって提供される。第1パスを提供する合成スタックは、ディスクドライバ485、および合成SCSIバスドライバ480を含み、VMバス465を介して通信する。ストレージ仮想化サービスプロバイダ420は、仮想ストレージサービスを提供し得る。ストレージ仮想化サービスプロバイダ420は、ディスクドライバ430と通信し得、物理SCSIバスデバイスドライバ440にアクセスする。SCSIバスデバイスドライバ440は、SCSIコントローラ450へのアクセスを提供し得、ディスク460への第1インターフェースを提供する。多重パスリダイレクション層500は、非特権パーティション470において提供され、2つのスタックへのアクセスを管理、および制御する。
起こり得る一つの問題は、非特権パーティションにおけるオペレーティングシステムのインスタンスの中の2つのパスのいずれかにディスクドライバ層を構築するために、ストレージディスク460の制御が必要であるかもしれないということである。デバイスドライバの2つのスタックを構築するのに必要不可欠なプロセスは、一般的に、起動デバイスであるディスクからの読み込み、ならびに、ページングコードおよびページングデータを介する効果的なディスク活動を必要とするだろう。これは可能なことであるとはいえ、SCSIコントローラの多くの機器構成は、第1インターフェース、および第2インターフェースの両方から、ディスクを同時に制御できない。当業者は、SCSIデバイスへの本開示は例示的であり、ならびに、本開示の方法および本開示のシステムは、Serial Attached SCSI(SAS)、internet SCSI(iSCSI)、およびファイバーチャネル、などの他のI/Oデバイスにも適用され得るが、これらに限られるわけではないことがわかるだろう。
様々な実施形態において、本願明細書の開示は、第2I/Oパス、または第2スタックを構築するためのプロセスである。以下に、合成I/Oスタックから始まり、物理スタックを構築するプロセスを記述するが、当業者は、合成I/Oスタックから始まり、物理スタックを構築するため、類似のプロセスを使用し得ることがわかるだろう。
一部の実施形態において、SCSIコントローラは要求され得、自身への第2インターフェースを生成する。一部のデバイスは、操作のような機能、特にPeripheral Component Interconnect(PCI)Special Interest Group’s(SIG’s)Single−Root(SR)I/O Virtualization(IOV)仕様に準拠しているもののように機能することができる。図6を参照すると、仮想ストレージマネージャ600が提供され、仮想マシンへのリソースの割り当てを管理し、仮想マシンに割り当てられたリソースを、他の仮想マシンによるアクセスから分離し得る。仮想ストレージマネージャ600は、物理SCSIバスデバイスドライバ440を介して、SCSIコントローラ450にメッセージを送信し得る。SCSIコントローラ450は、その後、第2SCSIコントローラインターフェース520を生成し得る。上記のように、本開示は、SCSIコントローラ以外の様々なストレージコントローラのための本開示の方法の有用性を検討する。一部のコントローラは、多数のやり方で、ストレージ媒体に通信し得る。例えば、ストレージエリアネットワーク(SAN)では、複数のコントローラが、単一のSR−IOV準拠のコントローラよりむしろ使用され得る
図7を参照すると、第2I/Oスタックを構成するさらに典型的なプロセスが示されている。ストレージデバイスドライバ700は、第2コントローラインターフェース520のために構成され得る。合成ストレージスタック710を使用し、起動デバイスは、デバイスドライバに関するファイルを検索し得る。
非特権パーティション470におけるSCSIバスデバイスドライバ700は、ディスクを表す子デバイスを直ちに生成し得る。しかしながら、非特権パーティション470は、特権パーティション410の制御下にあるディスク460をこれまでのところ所有していない。結果として、スタックのこの部分を生成する標準の方法は、デバイスがディスクにI/Oを送信できず、自身のプロパティを見つけられない以上、正常に機能し得ない。
図8を参照すると、SCSIバスデバイスドライバ700は、SCSIバスデバイスドライバ700が最終的には所有し得るディスクについての情報のため、多重パスリダイレクション層500に要求を送信し得る。多重パスリダイレクション層500は、その後、既存のディスクドライバ485へのハンドルに応答し得る。
オペレーティングシステムI/Oマネージャは、アプリケーション、およびデバイスドライバにより提供されるインターフェースの間の通信を管理し得る。さらに、I/Oマネージャは、I/Oの機能性を管理し、およびシステムにデバイスを追加する際、認識させるためのプラグアンドプレイマネージャを含む。図9を参照すると、非特権パーティション470におけるSCSIバスドライバ700は、ディスク460を表すオブジェクトを生成し、プラグアンドプレイマネージャに前記オブジェクトを伝え得る。プラグアンドプレイマネージャは、その後、ディスク460のためにドライバ900を構成し得る。本来、ドライバ900は、ディスク460にI/Oを送信するSCSIコントローラインターフェース520なしで構成されることはあり得ない。この場合、必要なI/Oは、多重パスリダイレクション層500がSCSIコントローラインターフェース520に提供した、ディスクドライバ485へのハンドルを使用する合成ストレージスタック910の下へ、リダイレクトされるため、ドライバ900は構成され得る。多重パスリダイレクション層500は、その後、新しいディスクオブジェクト900および自身と関連付くドライバへのハンドルをオープンし得る。
図10を参照すると、多重パスリダイレクション層500は、仮想ストレージマネージャ600にメッセージを送信し得る。仮想ストレージマネージャ600は、SCSIコントローラの第1インターフェース450のために、SCSIバスデバイスドライバ440にメッセージを送信し得る。SCSIコントローラの第1インターフェース450は、その後、ディスク460の制御を、図示するように、SCSIコントローラの第2インターフェース520に譲り渡し得る。この時点で、多重パスリダイレクション層500は、非特権パーティション470において、ファイルシステム475から物理スタック1000を下降して、I/Oを管理し得る。
本開示の態様は、システム、方法、コンピュータ可読媒体に常駐するコンピュータ実行可能命令、などとして、実施させることができる。したがって、任意の特定システムの任意の開示、任意の特定方法の任意の開示、または任意の特定のコンピュータ可読媒体の任意の開示は、それらを制限するものでなく、むしろ、本開示の主題を実施する別の方法にまで及ぶ。
図11および図12は、スタックと関連付くデバイスを制御するものでない仮想マシンのデバイスドライバスタックを構築する操作手順例を示す。本手順は、操作1100、操作1110、操作1120、操作1130、操作1140、操作1150、操作1160、操作1170、および操作1180を含み得る。図11を参照すると、操作1100は、操作手順を開始し、操作1100において、要求を送信し、スタックと関連付くデバイスを制御するものでない仮想マシンのデバイスのため、第2インターフェースのインスタンスを生成し得る。操作1120で、第2インターフェースのための物理ドライバは構成され得る。操作1130は、前記デバイスの表現を生成する事により、前記デバイスドライバスタックを構築することを示す。操作1140は、前記デバイスのための新しいドライバを構成することを示し、操作1150は、前記デバイスドライバスタックに第2指示を提供することを示す。操作1160は、前記代替スタックを介して前記デバイスと通信することにより前記デバイスドライバスタックを構築する情報を取得することを示す。操作1170は、前記デバイスドライバスタック、および第2インターフェースを介して、I/Oを前記デバイスに向けることを示す。操作1180は、前記デバイスのため第1インターフェースにメッセージを送信し、前記デバイスの制御を前記第2インターフェースに譲り渡すことを示す。
続いて図12は、操作1200は、デバイスは、複数の制御インターフェースを任意で含み得ることを示す。操作1205は、複数の制御インターフェースは、PCI SR−IOV仕様に任意で準拠し得ることを示す。一実施形態において、操作1210で、デバイスドライバスタックはページングI/Oに使用され得、操作1215において、ページングI/Oは、デバイスドライバスタックを生成するために必要であり得る。
操作1220は、一実施形態において、デバイスはディスクデバイスである事を示す。それ以外の実施形態1225において、デバイスはネットワークインターフェースアダプタであることを示す。様々な実施形態において、操作1230で、代替スタックにI/O要求をリダイレクトすることにより、デバイスの記述およびデバイスのプロパティを発見する。
操作1235において、デバイスのドライバに関連付くファイルのため、合成ストレージスタックを介して起動デバイスを検索し得る。操作1240において、物理ドライバが所有し得るデバイスの情報の要求を、多重パスリダイレクション層に送信することを示す。一実施形態において、操作1245で、指示はハンドルであり得る。それ以外の実施形態において、操作1250で、仮想ストレージマネージャに指示を記述しているメッセージが送信され得る。
図13および図14は、仮想マシン環境において、ページングコードまたはページングデータのために使用するI/Oデバイスへの多重パスを生成する典型的な操作手順を示す。本手順は、操作1300、操作1302、操作1304、操作1306、操作1308、操作1310、操作1312、および操作1314を含み得る。図13を参照すると、操作1300は、操作手順を開始し、操作1302は、第2インターフェースのインスタンス化を要求し、複数の制御インターフェースをサポートができるI/Oデバイスの物理ドライバを構成する。操作1304は、前記I/Oデバイスへの既存ドライバを含む既存スタックへのポインタをI/O仮想化層から受信することを示し、操作1306においては、デバイスを表すオブジェクトはインスタンスを生成され得る。
操作1308は、前記既存スタックを介して、I/Oデバイスと通信し、I/Oデバイスの新しいドライバを構成することを示す。操作1310で、オブジェクトへのポインタおよび新しいドライバは提供され得る。操作1312は、前記I/Oデバイスのため、第1インターフェースにメッセージを送信し、前記I/Oデバイスの制御を前記第2インターフェースに譲り渡すことを示す。操作1314は、前記オブジェクトへのポインタを使用する第2インターフェースおよび新しいドライバを介して、前記I/OデバイスにI/Oをリダイレクトすることを示す。
続いて図14は、操作1402において、I/Oデバイスのプロパティ、ならびにページングコード、およびページングデータを受信することを示す。操作1404は、一実施形態において、既存スタックは物理スタックであることを示す。操作1406は、それ以外の実施形態において、既存スタックは合成スタックであり得る。
一部の上記態様は、方法、システム、コンピュータ可読媒体、または任意のタイプの製造において実施することができる。例えば、図15で、コンピュータ可読媒体は、仮想I/O環境におけるストレージデバイスのための代替I/Oスタックを生成するコンピュータ実行可能命令を、その上に格納する。前記ストレージデバイスは、ストレージデバイスのページングが、既存スタックを介して継続している間に生成される代替I/Oスタック、ならびにページングコード、およびページングデータのために使用される。このような媒体は、第2インターフェースのインスタンス化を要求し、ストレージデバイスのため、第2物理ドライバを構成する第1命令サブセット1510、既存スタックへのハンドルを受信する第2命令サブセット1512、前記ハンドルを使用する既存スタックを識別し、既存スタックを介して、ストレージデバイスと通信する第3命令サブセット1514、ストレージデバイスのため、前記代替スタックのインスタンスを生成し、代替I/Oスタックは、前記ストレージデバイスを表すオブジェクト、およびストレージデバイスのドライバを含む第4命令セット1516、前記別のI/Oへのハンドルを伝える第5命令セット1518、前記ストレージデバイスのため、第1インターフェースにメッセージを送信し、前記ストレージデバイスの制御を前記第2インターフェースに譲り渡す第6命令セット1520、を含めることができる。本願明細書に開示された様々な別の態様をとらえ、さらなる命令セットを使用することができること、以下で開示する3つの命令サブセットは、本開示の詳細部分で異なる可能性があることは、当業者によって十分に理解されるだろう。
例えば、前記命令はさらに、代替I/Oスタックを介して、ストレージデバイスにI/Oをリダイレクトする命令1524含めることができる。さらに前記命令は、ストレージデバイスがPCI SR−IOVに準拠している実施形態をサポートする命令1526、ストレージデバイスのドライバに関連付くファイルのため、既存のスタックを介して、起動デバイスを検索する命令1528を含めることができる。
上記のように、本発明の態様は、プログラム制御可能なコンピュータ上で実行し得る。図1c、および下記は、本開示の態様において適切なコンピューティング環境の簡単な説明を提供するため実行され得ることを意図する。当業者は、図1cのコンピュータシステムが、一部の実施形態において、図1aおよび図1bの様々な態様を達成することができることを十分に理解できるだろう。これらの実施例において、サーバおよびクライアントは、図1cおよび一部の実施形態において記述される、一部のコンポーネントまたはすべてのコンポーネントを含めることができ、クライアントは、それぞれ、本開示の固有の態様のインスタンスを生成する回路構成要素を含めることができる。
本開示を通じて使用される用語、回路構成要素は、専門的なハードウェアコンポーネントを含めることができる。一部の実施形態、または別の実施形態において、回路構成要素は、ファームウェアまたはスイッチにより、機能を実行するよう構成されるマイクロプロセッサを含めることができる。同一の実施形態例、または別の実施形態例において、回路構成要素は、機能を実行する論理回路を具体化するソフトウェア命令が、RAMおよび/または仮想メモリなどのメモリにロードされる際、構成される可能性がある、1つまたは複数の汎用プロセシングユニット、および/または1つまたは複数のマルチコアプロセシングユニット、などを含めることができる。回路構成要素が、ハードウェアおよびソフトウェアの組み合わせを含む、実地形態例において、開発者は、論理回路を具体化するソースコードを書き得、ソースコードは、汎用プロセシングユニットが処理できるマシン可読コードにコンパイルされ得る。
図1cを参照すると、コンピューティングシステムは、システムメモリを含む様々なシステムコンポーネントをプロセシングユニット21につなぐシステムバス23、プロセシングユニット21、およびシステムバス22を含める、コンピュータ20または同様のものを含めることができる。システムバス23は、メモリバス、またはメモリコントローラ、周辺機器のバス、および任意の様々なバス基本設計概念を使用するローカルバスを含む、任意の何種類かのバス構造になり得る。システムメモリは、ROM(read only memory)24、およびRAM(random access memory)25を含む。起動中などにコンピュータ20内部の素子間の情報を転送することを支援する基本ルーチンを含むBIOS(basic input/output system)26は、ROM24に格納される。さらに、コンピュータ20は、図示されていないが、ハードディスクから読み込みをする、およびハードディスクに書き込みをするハードディスクドライブ27、リムーバブル磁気ディスク29から読み込みをする、およびリムーバブル磁気ディスク29に書き込みをする磁気ディスクドライブ28、およびCD−ROM、または他の光学メディアなどのリムーバブル光ディスク31から読み込みをする、およびリムーバブル光ディスク31に書き込みをする光ディスクドライブ30を含み得る。一部の実施形態例において、本発明の態様を具体化するコンピュータ実行可能命令は、ROM24、ハードディスク(図示せず)、RAM25、リムーバブル磁気ディスク29、光ディスク31、および/またはプロセシングユニット21のキャッシュに格納され得る。ハードディスクドライブ27は、ハードディスクドライブインターフェース32によって、磁気ディスクドライブ28は、磁気ディスクドライブインターフェース33によって、および光ディスクドライブ30は、光ディスクドライブインターフェース34によって、それぞれ、システムバス23に接続される。前記ドライブ、および前記ドライブ関連のコンピュータ可読媒体は、コンピュータ可読命令の不揮発性ストレージ、コンピュータ20のデータ構造、コンピュータ20のプログラムモジュール、およびコンピュータ20の他のデータを提供する。本願明細書に記載する環境は、ハードディスク、リムーバブル磁気ディスク29、およびリムーバブル光ディスク31を用いてはいるが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイディスク、RAM、ROM、などのコンピュータによって、アクセス可能なデータを格納できる別形式のコンピュータ可読媒体もまた操作環境において使用され得ることは、当業者によって十分に理解されるべきである。
多くのプログラムモジュールは、オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、別プログラムモジュール37、およびプログラムデータ38を含む、ハードディスク、リムーバブル磁気ディスク29、リムーバブル光ディスク31、ROM24、またはRAM25上に格納され得る。ユーザは、キーボード40、およびポインティングデバイス42などの入力デバイスを介して、コンピュータ20に、コマンドおよび情報を入力し得る。他の入力デバイス(図示せず)は、マイク、ジョイスティック、ゲームパッド、衛星受信装置、スキャナ、または同類のものを含み得る。これらおよび他の入力デバイスは、しばしば、システムバスにつなげられるシリアルポートインターフェース46を介して、プロセシングユニット21に接続されるが、パラレルポート、ゲームポート、またはUSB(universal serial bus)などの他のインターフェースによって接続され得る。ディスプレイ47、または別形式のディスプレイデバイスもまた、ビデオアダプタ48、などのインターフェースを介して、システムデバイス23に接続される可能性がある。ディスプレイ47に加えて、コンピュータは、一般的に、スピーカおよびプリンタなどの他の周辺機器の出力デバイス(図示せず)を含む。図1cのシステムもまた、ホストアダプタ55、SCSI(Small Computer System Interface)バス56、およびSCSIバス56に接続される外部ストレージデバイス62を含む。
コンピュータ20は、リモートコンピュータ49などの、1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境において操作し得る。リモートコンピュータ49は、それ以外のコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または、別の共通ネットワークノードになり得、メモリストレージデバイス50のみ図1cに示されているが、リモートコンピュータ49は、一般に、コンピュータ20と関連のある上述した素子の多く、またはすべてを含む可能性がある。図1cに示される論理接続は、ローカルエリアネットワーク(LAN)51、およびワイドエリアネットワーク(WAN)52を含む可能性がある。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて、ありふれたものである。
ネットワーク環境をLANに用いる場合、コンピュータ20は、ネットワークインターフェース(アダプタ)53を介して、LAN51に接続される可能性がある。ネットワーク環境をWANに用いる場合、コンピュータ20は、一般に、モデム54、またはインターネットなどのワイドエリアネットワーク52に渡って通信を確立する別の手段を含む可能性がある。内部モデム、または外部モデムになり得るモデム54は、シリアルポートインターフェース46を介して、システムバス23に接続される可能性がある。ネットワーク環境において、コンピュータ20と関連のある上述したプログラムモジュール、またはその一部は、リモートメモリストレージデバイスに格納され得る。示されたネットワーク通信は、例であり、コンピュータ間の通信リンクを確立する別の手段が使用され得ることを十分に理解されるだろう。さらに、本発明の非常に多くの実施形態は、コンピュータシステムのために非常に適切であると想定されるが、本書において本開示をこのような実施形態に限定することを意図しない。
上述の詳細な説明は、例および/または操作図を介して、システムおよび/またはプロセスの様々な実施形態を説明した。このようなブロック図の範囲で、ならびに/または1つもしくは複数の機能および/もしくは操作を含む例の範囲で、このようなブロック図および/または例の範囲内での機能および/または操作のそれぞれは、個々におよび/またはまとめて、ハードウェア、ソフトウェア、ファームウェア、またはこれらのコンピュータ上での任意の組み合わせによって、実行できることを、当業者であれば理解できるだろう。
最後に、本開示は、様々な図に示されるように、望ましい態様に関連して記述したが、他の類似態様は使用され得、または、本開示の同一機能を処理するため、記述した態様に、これらから逸脱することなく修正および追加をし得ることを理解されたい。例えば、本開示の様々な態様において、様々な機構は、スタックによって表されたデバイスを物理的に制御するものでない、仮想マシンパーティションにおける、デバイスドライバスタックを構築するために開示された。しかしながら、これらの記述した態様と均等である他の機構もまた、本願明細書における手引きによって、予期され得る。したがって、本開示は、任意の単一の態様に制限されるべきでなく、むしろ添付した特許請求の範囲にしたがって、幅および範囲を解釈されるべきである。

Claims (6)

  1. 第1インターフェースを介してコンピュータ上のデバイスに直接アクセスすることが許可される特権パーティションを有する仮想マシンと、前記デバイスへの直接アクセスは許可されない非特権パーティションを有する仮想マシンとを含むコンピュータにおいて、前記デバイスへの多重パスを生成する方法であって、前記方法は、
    前記コンピュータ上のプロセッサが、前記デバイスへのアクセスのための第2インターフェースを生成するステップと、
    前記プロセッサが、前記非特権パーティションにおいて、複数のインターフェースをサポートするように前記第2インターフェースのドライバを構成するステップであって、前記ドライバは、
    前記デバイスについての情報の要求を、前記デバイスの既存ドライバへのアクセスを制御する非特権パーティションにおいて提供される多重パスリダイレクション層に送信し、
    前記多重パスリダイレクション層から、前記第1インターフェイスのための前記既存ドライバへアクセスするためのポインタを受信する
    ように構成される、前記第2インターフェースのドライバを構成するステップと、
    前記プロセッサが、前記既存ドライバへアクセスするためのポインタを用いて前記デバイスと通信することによって、前記デバイスへのポインタを受信し、かつ、前記受信したポインタを用いて前記デバイスの新しいドライバを構成するステップと、
    前記プロセッサが、前記デバイスへのポインタを用い、前記新しいドライバと前記第2インターフェースとを介して前記デバイスにI/O操作をリダイレクトするステップと
    を備えたことを特徴とする方法。
  2. 前記デバイスは、ストレージデバイスであることを特徴とする請求項1に記載の方法。
  3. 前記デバイスは、ネットワークインターフェースであることを特徴とする請求項1に記載の方法。
  4. 第1インターフェースを介してコンピュータ上のデバイスに直接アクセスすることが許可される特権パーティションを有する仮想マシンと、前記デバイスへの直接アクセスは許可されない非特権パーティションを有する仮想マシンとを含むコンピュータにおいて、前記デバイスへの多重パスを生成するシステムであって、前記システムは、
    前記デバイスへのアクセスのための第2インターフェースを生成し、前記非特権パーティションにおいて、複数のインターフェースをサポートするように前記第2インターフェースのドライバを構成し、前記ドライバは、
    前記デバイスについての情報の要求を、前記デバイスの既存ドライバへのアクセスを制御する多重パスリダイレクション層に送信し、
    前記多重パスリダイレクション層から、前記既存ドライバへのポインタを受信する
    ように構成され、
    前記既存ドライバへのポインタを用いて前記デバイスと通信し、前記デバイスへのポインタを受信し、かつ前記デバイスの新しいドライバを構成し、
    前記デバイスへのポインタを用い、前記第2インターフェース、および前記新しいドライバを介して、前記デバイスにI/O操作をリダイレクトする
    ように構成されたことを特徴とするシステム。
  5. 第1インターフェースを介してコンピュータ上のデバイスに直接アクセスすることが許可される特権パーティションを有する仮想マシンと、前記デバイスへの直接アクセスは許可されない非特権パーティションを有する仮想マシンとを含むコンピュータにおいて、前記デバイスへの多重パスを生成する方法をコンピュータに実行させるコンピュータ実行可能命令をその上に格納するコンピュータ可読記憶媒体であって、前記方法は、
    前記コンピュータ上のプロセッサが、前記デバイスへのアクセスのための第2インターフェースを生成するステップと、
    前記プロセッサが、前記非特権パーティションにおいて、複数のインターフェースをサポートするように前記第2インターフェースのためのドライバを構成するステップであって、前記ドライバは、
    前記デバイスについての情報の要求を、前記デバイスの既存ドライバへのアクセスを制御する多重パスリダイレクション層に送信し、
    前記多重パスリダイレクション層から、前記既存ドライバへのポインタを受信する
    ように構成される、構成するステップと、
    前記プロセッサが、前記既存ドライバへのポインタを用いて前記デバイスと通信し、前記デバイスへのポインタを受信し、かつ前記デバイスの新しいドライバを構成するステップと
    を備えたことを特徴とするコンピュータ可読記憶媒体。
  6. 前記方法は、前記プロセッサが、前記デバイスへのポインタを用い、前記新しいドライバと前記第2インターフェースとを介して前記デバイスにI/O操作をリダイレクトするステップをさらに備えたことを特徴とする請求項5に記載のコンピュータ可読記憶媒体。
JP2011531068A 2008-10-09 2009-09-30 仮想ストレージの割り当て方法 Active JP5599804B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/248,299 2008-10-09
US12/248,299 US8321878B2 (en) 2008-10-09 2008-10-09 Virtualized storage assignment method
PCT/US2009/059124 WO2010042374A2 (en) 2008-10-09 2009-09-30 Virtualized storage assignment method

Publications (3)

Publication Number Publication Date
JP2012505473A JP2012505473A (ja) 2012-03-01
JP2012505473A5 JP2012505473A5 (ja) 2012-11-08
JP5599804B2 true JP5599804B2 (ja) 2014-10-01

Family

ID=42100071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011531068A Active JP5599804B2 (ja) 2008-10-09 2009-09-30 仮想ストレージの割り当て方法

Country Status (7)

Country Link
US (2) US8321878B2 (ja)
EP (1) EP2335156B1 (ja)
JP (1) JP5599804B2 (ja)
KR (1) KR101602519B1 (ja)
CN (1) CN102177509B (ja)
HK (1) HK1158332A1 (ja)
WO (1) WO2010042374A2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
KR101343595B1 (ko) * 2008-12-19 2013-12-20 한국전자통신연구원 라우터에 대한 포워딩 가상화 방법
US8255596B2 (en) * 2009-06-10 2012-08-28 International Business Machines Corporation Multipath-based migration of data across storage controllers
US8413164B1 (en) * 2009-06-30 2013-04-02 Emc Corporation Presenting an interface to a computer system for use in conducting diagnostic tests
US8417849B2 (en) * 2009-10-07 2013-04-09 International Business Machines Corporation Apparatus and method to adjust a multi-path device reservation
WO2012057769A1 (en) 2010-10-28 2012-05-03 Hewlett-Packard Development Company, L.P. Zoning data to a virtual machine
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
US9218219B2 (en) 2010-11-24 2015-12-22 International Business Machines Corporation Managing virtual functions of an input/output adapter
US8301806B2 (en) 2010-11-24 2012-10-30 International Business Machines Corporation Configuring an input/output adapter
US8839240B2 (en) 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US8561066B2 (en) 2010-12-08 2013-10-15 International Business Machines Corporation Simplified DMA mappings for self-virtualizing input/output device virtual functions
US9146863B2 (en) 2010-12-08 2015-09-29 International Business Machines Corporation Address translation table to enable access to virtualized functions
US8495274B2 (en) 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8645755B2 (en) 2010-12-15 2014-02-04 International Business Machines Corporation Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system
US8683478B2 (en) 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
US8537706B2 (en) 2011-01-11 2013-09-17 International Business Machines Corporation Preserving traffic class priority QoS with self-virtualizing input/output device
US8418166B2 (en) 2011-01-11 2013-04-09 International Business Machines Corporation Transparent update of adapter firmware for self-virtualizing input/output device
US8677356B2 (en) 2011-01-11 2014-03-18 International Business Machines Corporation Adjunct partition work scheduling with quality of service attributes
US8862739B2 (en) 2011-01-11 2014-10-14 International Business Machines Corporation Allocating resources to virtual functions
US8447891B2 (en) 2011-01-11 2013-05-21 International Business Machines Corporation Dynamically assigning virtual functions to client applications
US8825981B2 (en) 2011-01-25 2014-09-02 International Business Machines Corporation Allocating addressable memory regions to an adapter
US8364871B2 (en) 2011-01-25 2013-01-29 International Business Machines Corporation Providing virtual functions after an input/output adapter is moved from a first location to a second location
US8726276B2 (en) 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
US8832401B2 (en) 2011-01-26 2014-09-09 International Business Machines Corporation Iteratively de-allocating active objects associated with virtual functions of an adapter
US8527666B2 (en) 2011-02-21 2013-09-03 International Business Machines Corporation Accessing a configuration space of a virtual function
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
US8838837B2 (en) 2011-06-23 2014-09-16 Microsoft Corporation Failover mechanism
US8959223B2 (en) 2011-09-29 2015-02-17 International Business Machines Corporation Automated high resiliency system pool
US8996700B2 (en) 2011-09-29 2015-03-31 International Business Machines Corporation Automated workload performance and availability optimization based on hardware affinity
CN103577149B (zh) * 2013-11-20 2017-02-08 华为技术有限公司 Hba兼容处理方法、装置及系统
US10586047B2 (en) * 2014-06-30 2020-03-10 Hewlett-Packard Development Company, L.P. Securely sending a complete initialization package
CN106537366B (zh) * 2014-06-30 2019-07-23 惠普发展公司,有限责任合伙企业 全虚拟机功能
CN104144327B (zh) * 2014-07-28 2018-11-16 华为数字技术(成都)有限公司 一种监控视频存储方法及装置
EP3182282A1 (en) * 2015-12-15 2017-06-21 OpenSynergy GmbH Method for operating a system in a control unit and system
CN106919341B (zh) * 2015-12-28 2020-04-21 成都华为技术有限公司 一种下发i/o的方法及装置
US10509729B2 (en) 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
CN107688484A (zh) * 2017-09-06 2018-02-13 郑州云海信息技术有限公司 一种虚拟机迁移的方法及系统
US11216701B1 (en) * 2018-02-09 2022-01-04 Amazon Technologies, Inc. Unsupervised representation learning for structured records

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6959440B1 (en) * 2000-08-02 2005-10-25 Intel Corporation Dynamic removal of a driver stack when a parent driver uses a child driver
US6647454B1 (en) * 2000-09-25 2003-11-11 Intel Corporation Data transfer through a bridge
US7792923B2 (en) * 2000-10-13 2010-09-07 Zhe Khi Pak Disk system adapted to be directly attached to network
US6904477B2 (en) 2001-04-13 2005-06-07 Sun Microsystems, Inc. Virtual host controller interface with multipath input/output
US7185078B2 (en) * 2001-06-28 2007-02-27 Microsoft Corporation Event manager for a control management system
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7210068B1 (en) 2002-03-06 2007-04-24 Network Appliance, Inc. System and method for multipath I/O support for fibre channel devices
US7222348B1 (en) 2002-12-16 2007-05-22 Unisys Corporation Universal multi-path driver for storage systems
US7194662B2 (en) 2003-02-28 2007-03-20 International Business Machines Corporation Method, apparatus and program storage device for providing data path optimization
US7080172B1 (en) 2003-05-27 2006-07-18 Marvell Luternational Ltd. Management of memory, hardware and associated device drivers using stacks
US7421710B2 (en) 2003-10-08 2008-09-02 Lsi Corporation System and method of creating virtual data paths using a multiple-path driver
US7689987B2 (en) 2004-06-30 2010-03-30 Microsoft Corporation Systems and methods for stack-jumping between a virtual machine and a host environment
US20060047850A1 (en) 2004-08-31 2006-03-02 Singh Bhasin Harinder P Multi-chassis, multi-path storage solutions in storage area networks
US20060212870A1 (en) 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
GB0505926D0 (en) * 2005-03-23 2005-04-27 Ibm Data processing system and method
TWI307034B (en) 2005-11-23 2009-03-01 Infortrend Technology Inc Storage virtualization subsystem and system with host-side redundancy via sas connectivity
JP4800059B2 (ja) 2006-02-13 2011-10-26 株式会社日立製作所 仮想ストレージシステム及びその制御方法
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
US7783788B1 (en) * 2006-04-28 2010-08-24 Huawei Technologies Co., Ltd. Virtual input/output server
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
US7877760B2 (en) 2006-09-29 2011-01-25 Microsoft Corporation Distributed hardware state management in virtual machines
US7761612B2 (en) 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
US7657663B2 (en) 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7941812B2 (en) 2007-01-30 2011-05-10 Hewlett-Packard Development Company, L.P. Input/output virtualization through offload techniques
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US7782869B1 (en) * 2007-11-29 2010-08-24 Huawei Technologies Co., Ltd. Network traffic control for virtual device interfaces
US8099522B2 (en) * 2008-06-09 2012-01-17 International Business Machines Corporation Arrangements for I/O control in a virtualized system
US8041849B2 (en) * 2008-07-02 2011-10-18 Lsi Corporation Method for handling small computer system interface (SCSI) commands via a redundant array of inexpensive disks (RAID) device driver
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method

Also Published As

Publication number Publication date
US8321878B2 (en) 2012-11-27
HK1158332A1 (zh) 2012-07-13
KR101602519B1 (ko) 2016-03-10
EP2335156A2 (en) 2011-06-22
EP2335156B1 (en) 2015-08-26
US20100095310A1 (en) 2010-04-15
WO2010042374A2 (en) 2010-04-15
WO2010042374A3 (en) 2010-07-08
EP2335156A4 (en) 2012-05-16
CN102177509B (zh) 2014-03-12
US20130067501A1 (en) 2013-03-14
JP2012505473A (ja) 2012-03-01
KR20110084211A (ko) 2011-07-21
CN102177509A (zh) 2011-09-07
US8607253B2 (en) 2013-12-10

Similar Documents

Publication Publication Date Title
JP5599804B2 (ja) 仮想ストレージの割り当て方法
JP5018252B2 (ja) デバイス割り当て変更方法
JP4806212B2 (ja) 1台の仮想マシン内の複数の仮想プロセッサを初期化するためのシステムおよび方法
US9317314B2 (en) Techniques for migrating a virtual machine using shared storage
CN106537340B (zh) 虚拟化信息操纵系统的输入/输出加速设备和方法
US9928091B2 (en) Techniques for streaming virtual machines from a server to a host
RU2406113C2 (ru) Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств
US11403086B2 (en) System and method for upgrading operating system of a container using an auxiliary host
US20150205542A1 (en) Virtual machine migration in shared storage environment
JP5893029B2 (ja) クラウド・コンピューティング環境においてハイパーバイザの制御を可能にする方法
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US20180157519A1 (en) Consolidation of idle virtual machines
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US9841983B2 (en) Single click host maintenance
US9928112B2 (en) Configuration of floating node boundaries
US11327779B2 (en) Parallelized virtual machine configuration
US11055115B1 (en) Virtual machine conversion in distributed system of remote desktops
US8402191B2 (en) Computing element virtualization
Sweeney Virtualization: An Overview
Posey et al. Hyper-V Basics

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120921

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120921

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130726

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140813

R150 Certificate of patent or registration of utility model

Ref document number: 5599804

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250