(57)【要約】  発明を実施するための形態で開示する態様は、仮想化環境におけるストレージリソース管理を含む。この点について、一態様では、仮想化レイヤは、ストレージコントローラ内に、1つまたは複数のクライアントとストレージデバイスとの間のインターフェースとして提供される。ストレージコントローラは、クライアントからストレージリソース要求を捕捉するように構成される。仮想化リソースマネージャは、ストレージデバイス内の物理リソース割振りに対応する仮想リソース割振りを生成する。クライアントは、仮想化レイヤから仮想リソース割振りを受信し、続いて、そのクライアントがストレージデバイスの唯一のユーザであるかのようにストレージコントローラを介して仮想リソース割振りにアクセスする。ストレージコントローラにおいてストレージリソース要求を捕捉し、仮想リソース割振りを1つまたは複数のクライアントに提供することによって、仮想化環境において1つまたは複数のクライアントの間でストレージデバイスを矛盾なく共有することが可能である。
2018508869.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスを制御するためのストレージコントローラであって、
仮想化リソースマネージャに結合された第1のホストコントローラインターフェース(HCI)と、
1つまたは複数のクライアントにそれぞれ結合されるように構成された1つまたは複数の第2のHCIと、
前記第1のHCIおよび前記1つまたは複数の第2のHCIに通信可能に結合された仮想化レイヤと
を含み、
前記ストレージコントローラが、前記1つまたは複数のクライアントのうちの1つのクライアントから受信したストレージリソース要求を捕捉し、前記ストレージリソース要求を前記仮想化リソースマネージャに提供するように構成され、
前記仮想化リソースマネージャが、
前記クライアントに関する仮想リソース割振りを生成し、前記仮想リソース割振りを前記ストレージデバイス内の物理リソース割振りにマッピングすることと、
スプーフィングされたストレージリソース応答において、前記仮想リソース割振りおよび前記物理リソース割振りを前記仮想化レイヤに提供することと
を行うように構成され、
前記仮想化レイヤが、
ストレージリソースマッピングテーブル内に前記仮想リソース割振りおよび前記物理リソース割振りを記録することと、
前記クライアントへの前記仮想リソース割振りを含む、前記スプーフィングされたストレージリソース応答を提供することと
を行うように構成される、
ストレージコントローラ。
【請求項２】
前記仮想化レイヤがハイパーバイザである、請求項1に記載のストレージコントローラ。
【請求項３】
前記ストレージデバイスが埋込型マルチメディアカード(eMMC)である、請求項1に記載のストレージコントローラ。
【請求項４】
前記ストレージリソース要求が、eMMC読取りコマンドキュー(CQ)深度コマンドとして提供される、請求項3に記載のストレージコントローラ。
【請求項５】
前記eMMC読取りCQ深度コマンドが、前記ストレージデバイス内に含まれる拡張型(EXT)カード固有データ(CSD)(EXT_CSD)レジスタ内のCQ深度レジスタにおいて前記ストレージコントローラによって捕捉される、請求項4に記載のストレージコントローラ。
【請求項６】
前記仮想化リソースマネージャが、
ブート時間に前記ストレージコントローラに1つまたは複数のストレージリソースパラメータを要求することと、
前記ストレージコントローラからストレージリソースパラメータレポートを受信することであって、前記ストレージリソースパラメータレポートがeMMCコマンドキュー(CQ)深度を含む、受信することと、
前記1つまたは複数のストレージリソースパラメータを記録することと
を行うようにさらに構成される、請求項3に記載のストレージコントローラ。
【請求項７】
前記ストレージデバイスがユニバーサルフラッシュストレージ(UFS)である、請求項1に記載のストレージコントローラ。
【請求項８】
前記ストレージリソース要求が、UFS論理ユニットレポート(REPORT_LUNS)コマンドとして提供される、請求項7に記載のストレージコントローラ。
【請求項９】
前記ストレージリソース要求が、UFS INQUIRYコマンドとして提供される、請求項7に記載のストレージコントローラ。
【請求項１０】
前記仮想化リソースマネージャが、
ブート時間に前記ストレージコントローラに1つまたは複数のストレージリソースパラメータを要求することと、
前記ストレージコントローラからストレージリソースパラメータレポートを受信することであって、前記ストレージリソースパラメータレポートがUFS論理ユニット(LUNS)を含む、受信することと、
前記1つまたは複数のストレージリソースパラメータを記録することと
を行うようにさらに構成される、請求項7に記載のストレージコントローラ。
【請求項１１】
前記仮想化レイヤが、ハードウェア要素またはソフトウェア機能に含まれる、請求項1に記載のストレージコントローラ。
【請求項１２】
前記ストレージリソースマッピングテーブルが1つまたは複数のマッピングエントリを含み、前記1つまたは複数のマッピングエントリの各々が、それぞれのクライアントに対応し、
前記それぞれのクライアントの識別情報を示すクライアント識別情報フィールドと、
前記仮想リソース割振りにおける開始仮想スロット番号を示すタグフィールドと、
前記物理リソース割振りにおける開始物理スロット番号を示す開始物理スロットフィールドと、
前記物理リソース割振りにおいて前記それぞれのクライアントに割り振られた、前記開始物理スロット番号で始まる、連続的な物理スロットの数を示すスロットカウントフィールドと
をさらに含む、請求項1に記載のストレージコントローラ。
【請求項１３】
前記仮想化レイヤが
前記それぞれのクライアントからストレージリソースアクセス要求を受信することであって、前記ストレージリソースアクセス要求が仮想スロット番号を含む、受信することと、
前記仮想スロット番号に基づいて前記ストレージリソースマッピングテーブル内の対応する物理スロット番号を検索することと
を行うようにさらに構成され、
前記ストレージコントローラが、
少なくとも1つのストレージリソースアクセス命令を前記ストレージデバイスに提供することであって、前記少なくとも1つのストレージリソースアクセス命令が前記対応する物理スロット番号を含む、提供することと、
ストレージリソースアクセス結果を受信し、それを前記それぞれのクライアントに提供することと
を行うようにさらに構成される、
請求項12に記載のストレージコントローラ。
【請求項１４】
ストレージを制御するための手段であって、
仮想リソースを割り振るための手段に結合された第1のホストコントローラインターフェース(HCI)と、
1つまたは複数のクライアントにそれぞれ結合されるように構成された1つまたは複数の第2のHCIと、
前記第1のHCIおよび前記1つまたは複数の第2のHCIに通信可能に結合された仮想化のための手段と
を含み、
ストレージを制御するための前記手段が、前記1つまたは複数のクライアントのうちの1つのクライアントから受信したストレージリソース要求を捕捉し、前記ストレージリソース要求を仮想リソースを割り振るための前記手段に提供するように構成され、
仮想リソースを割り振るための前記手段が、
前記クライアントに関する仮想リソース割振りを生成し、前記仮想リソース割振りを、記憶のための手段内の物理リソース割振りにマッピングすることと、
スプーフィングされたストレージリソース応答において、前記仮想リソース割振りおよび前記物理リソース割振りを仮想化のための前記手段に提供することと
を行うように構成され、
仮想化のための前記手段が、
ストレージリソースマッピングテーブル内に前記仮想リソース割振りおよび前記物理リソース割振りを記録することと、
前記クライアントへの前記仮想リソース割振りを含む、前記スプーフィングされたストレージリソース応答を提供することと
を行うようにさらに構成される、
ストレージを制御するための手段。
【請求項１５】
仮想化環境においてストレージリソースを管理するための方法であって、
クライアントから受信したストレージリソース要求をストレージコントローラによって捕捉するステップと、
前記ストレージリソース要求を仮想化リソースマネージャに提供するステップと、
前記仮想化リソースマネージャによって前記クライアントに関する仮想リソース割振りを生成するステップであって、前記仮想リソース割振りが、前記ストレージコントローラに結合されたストレージデバイス内の物理リソース割振りに対応する、ステップと、
前記仮想化リソースマネージャによって、前記仮想リソース割振りを前記物理リソース割振りにマッピングするステップと、
前記クライアントの前記仮想リソース割振りおよび識別情報を、前記ストレージコントローラ内に含まれる仮想化レイヤに提供するステップと、
前記仮想化リソースマネージャによって、スプーフィングされたストレージリソース応答を生成するステップであって、前記スプーフィングされたストレージリソース応答が前記仮想リソース割振りを含む、ステップと、
前記スプーフィングされたストレージリソース応答を受信し、前記仮想化レイヤによってストレージリソースマッピングテーブル内に前記仮想リソース割振りおよび前記物理リソース割振りを記録するステップと、
前記スプーフィングされたストレージリソース応答を前記仮想化レイヤによって前記クライアントに提供するステップと
を含む、方法。
【請求項１６】
前記クライアントから受信した前記ストレージリソース要求を捕捉するステップが、埋込型マルチメディアカード(eMMC)読取りコマンドキュー(CQ)深度コマンドを捕捉することを含む、請求項15に記載の方法。
【請求項１７】
前記クライアントから受信した前記ストレージリソース要求を捕捉するステップが、ユニバーサルフラッシュストレージ(UFS)論理ユニットレポート(REPORT_LUNS)コマンドを捕捉することを含む、請求項15に記載の方法。
【請求項１８】
前記クライアントから受信した前記ストレージリソース要求を捕捉するステップが、ユニバーサルフラッシュストレージ(UFS)INQUIRYコマンドを捕捉することを含む、請求項15に記載の方法。
【請求項１９】
前記クライアントからストレージリソースアクセス要求を受信するステップであって、前記ストレージリソースアクセス要求が仮想スロット番号を含む、ステップと、
前記仮想スロット番号および前記ストレージリソースマッピングテーブルに基づいて対応する物理スロット番号を生成するステップと、
少なくとも1つのストレージリソースアクセス命令を前記ストレージデバイスに提供するステップであって、前記少なくとも1つのストレージリソースアクセス命令が前記対応する物理スロット番号を含む、ステップと、
ストレージリソースアクセス結果を受信し、それを前記クライアントに提供するステップと
をさらに含む、請求項15に記載の方法。
【請求項２０】
前記仮想リソース割振りを前記物理リソース割振りにマッピングするステップが、前記ストレージリソースマッピングテーブルにマッピングエントリを追加することを含み、前記マッピングエントリが、
それぞれのクライアントの識別情報を示すクライアント識別情報フィールドと、
前記仮想リソース割振りにおける開始仮想スロット番号を示すタグフィールドと、
前記物理リソース割振りにおける開始物理スロット番号を示す開始物理スロットフィールドと、
前記物理リソース割振りにおいて前記それぞれのクライアントに割り振られた、前記開始物理スロット番号で始まる、連続的な物理スロットの数を示すスロットカウントフィールドと
を含む、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その全体が参照により本明細書に組み込まれている、2015年1月23日に出願された、「STORAGE RESOURCE MANAGEMENT IN VIRTUALIZED ENVIRONMENTS」という名称の米国特許出願第14/603,630号の優先権を主張するものである。
【０００２】
本開示の技術は、一般に、ユニバーサルフラッシュストレージ(UFS)および埋込型マルチメディアカード(eMMC:embedded multimedia card)ストレージデバイスに関する。
【背景技術】
【０００３】
ユニバーサルフラッシュストレージ(UFS)および埋込型マルチメディアカード(eMMC)は、スマートフォンおよびタブレットコンピュータなどのモバイルコンピューティングデバイスに一般的に使用される不揮発性ストレージデバイスである。UFS/eMMCストレージデバイスは、電子デバイス技術合同協議会(JEDEC)によって規格化され、マルチスレッドプログラミングパラダイムを可能にするためにコマンドキューイング特性を有する複数のコマンドをサポートする。このように、UFS/eMMCストレージデバイスは、1つのコマンドを一度に処理する、従来のフラッシュベースのメモリカードおよび埋込型フラッシュソリューションと比較して改善されたランダムな読取り/書込みアクセス性能を提供し得る。
【０００４】
UFS/eMMCストレージデバイスは、現在、単一のホストソフトウェアエンティティによる管理および使用のために設計されている。しかしながら、多くの現代のコンピューティングデバイスは、仮想化環境を使用して同時に動作する、複数の仮想クライアント(たとえば、ホストまたは他のプロセッササブシステム)をサポートすることが可能である。そのような仮想化環境では、複数の仮想クライアントは各々、UFS/eMMCストレージデバイスと通信する唯一のクライアントであるかのように仮想UFS/eMMCストレージデバイスと相互作用し得る。同様に、UFS/eMMCストレージデバイスは、実際は複数の仮想クライアントと通信しているときに、単一のクライアントだけと通信しているかのように動作し得る。
【０００５】
UFS/eMMCストレージデバイスがマルチクライアント仮想化環境に提供されるとき、複数の仮想クライアントとUFS/eMMCストレージデバイスとの間の通信は、追加の処理を必要とし得る。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明を実施するための形態で開示する態様は、仮想化環境におけるストレージリソース管理を含む。この点について、一態様では、仮想化レイヤは、ストレージコントローラ内に、1つまたは複数のクライアントとストレージデバイスとの間のインターフェースとして提供される。ストレージコントローラは、クライアントからのストレージリソース要求を捕捉し、捕捉されたストレージリソース要求を仮想化レイヤを介して仮想化リソースマネージャに提供するように構成される。仮想化リソースマネージャは、ストレージデバイス内の物理リソース割振りに対応する仮想リソース割振りを生成する。クライアントは、仮想化レイヤから仮想リソース割振りを受信し、続いて、そのクライアントがストレージデバイスの唯一のユーザであるかのようにストレージコントローラを介して仮想リソース割振りにアクセスする。別の態様では、ストレージコントローラは、1つまたは複数のクライアントがストレージデバイスにアクセスするとき、1つまたは複数のクライアントによって提供された仮想リソース割振りアドレスに基づいて、対応する物理リソース割振りアドレスを検索するように構成される。ストレージコントローラにおいてストレージリソース要求を捕捉し、仮想リソース割振りを1つまたは複数のクライアントに提供することによって、仮想化環境において1つまたは複数のクライアントの間でストレージデバイスを矛盾なく共有することが可能である。
【０００７】
この点について、一態様では、ストレージデバイスを制御するためのストレージコントローラが提供される。ストレージコントローラは、仮想化リソースマネージャに結合された第1のホストコントローラインターフェース(HCI)を含む。ストレージコントローラは、1つまたは複数のクライアントにそれぞれ結合されるように構成された1つまたは複数の第2のHCIも含む。ストレージコントローラは、第1のHCIおよび1つまたは複数の第2のHCIに通信可能に結合された仮想化レイヤも含む。ストレージコントローラは、1つまたは複数のクライアントのうちの1つのクライアントから受信したストレージリソース要求を捕捉し、そのストレージリソース要求を仮想化リソースマネージャに提供するように構成される。仮想化リソースマネージャは、クライアントに関する仮想リソース割振りを生成し、その仮想リソース割振りをストレージデバイス内の物理リソース割振りにマッピングするように構成される。仮想化リソースマネージャはまた、スプーフィングされたストレージリソース応答において、仮想リソース割振りおよび物理リソース割振りを仮想化レイヤに提供するように構成される。仮想化レイヤは、ストレージリソースマッピングテーブル内に仮想リソース割振りおよび物理リソース割振りを記録するように構成される。仮想化レイヤはまた、クライアントへの仮想リソース割振りを含む、スプーフィングされたストレージリソース応答を提供するように構成される。
【０００８】
別の態様では、ストレージを制御するための手段が提供される。ストレージを制御するための手段は、仮想リソースを割り振るための手段に結合された第1のHCIを含む。ストレージを制御するための手段は、1つまたは複数のクライアントにそれぞれ結合されるように構成された1つまたは複数の第2のHCIも含む。ストレージを制御するための手段は、第1のHCIおよび1つまたは複数の第2のHCIに通信可能に結合された仮想化のための手段も含む。ストレージを制御するための手段は、1つまたは複数のクライアントのうちの1つのクライアントから受信したストレージリソース要求を捕捉し、そのストレージリソース要求を仮想リソースを割り振るための手段に提供するように構成される。仮想リソースを割り振るための手段は、クライアントに関する仮想リソース割振りを生成し、その仮想リソース割振りを記憶のための手段内の物理リソース割振りにマッピングするように構成される。仮想リソースを割り振るための手段はまた、スプーフィングされたストレージリソース応答において、仮想リソース割振りおよび物理リソース割振りを仮想化のための手段に提供するように構成される。仮想化のための手段は、ストレージリソースマッピングテーブル内に仮想リソース割振りおよび物理リソース割振りを記録するように構成される。仮想化のための手段はまた、クライアントへの仮想リソース割振りを含む、スプーフィングされたストレージリソース応答を提供するように構成される。
【０００９】
別の態様では、仮想化環境においてストレージリソースを管理するための方法が提供される。本方法は、クライアントから受信したストレージリソース要求をストレージコントローラによって捕捉するステップを含む。本方法は、ストレージリソース要求を仮想化リソースマネージャに提供するステップも含む。本方法は、仮想化リソースマネージャによってクライアントに関する仮想リソース割振りを生成するステップも含み、仮想リソース割振りは、ストレージコントローラに結合されたストレージデバイス内の物理リソース割振りに対応する。本方法は、仮想化リソースマネージャによって、仮想リソース割振りを物理リソース割振りにマッピングするステップも含む。本方法は、クライアントの仮想リソース割振りおよび識別情報を、ストレージコントローラ内に含まれる仮想化レイヤに提供するステップも含む。本方法は、仮想化リソースマネージャによって、スプーフィングされたストレージリソース応答を生成するステップも含み、スプーフィングされたストレージリソース応答は、仮想リソース割振りを含む。本方法はまた、スプーフィングされたストレージリソース応答を受信するステップと、仮想化レイヤによってストレージリソースマッピングテーブル内に仮想リソース割振りおよび物理リソース割振りを記録するステップとを含む。本方法は、スプーフィングされたストレージリソース応答を仮想化レイヤによってクライアントに提供するステップも含む。
【図面の簡単な説明】
【００１０】
【図１】仮想化レイヤを介して1つまたは複数のクライアントの間でストレージデバイスを共有するように構成された例示的な仮想化ストレージシステムの概略図である。
【図２】1つまたは複数のクライアントがストレージデバイス内のストレージリソースを要求するための例示的なストレージリソース割振りシグナリングフローを示す図である。
【図３】1つまたは複数のクライアントが埋込型マルチメディアカード(eMMC)ストレージデバイス内のストレージリソースを要求するための例示的なeMMCストレージリソース割振りシグナリングフローを示す図である。
【図４】1つまたは複数のクライアントがユニバーサルフラッシュストレージ(UFS)ストレージデバイス内のストレージリソースを要求するための例示的なUFSストレージリソース割振りシグナリングフローを示す図である。
【図５】1つまたは複数のクライアントがストレージデバイス内のストレージリソースにアクセスするための例示的なストレージリソースアクセスシグナリングフローを示す図である。
【図６】図1の仮想化レイヤを介して1つまたは複数のクライアントの間でストレージデバイスを共有するように構成された、図1の仮想化ストレージシステムを含むことができる例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１１】
次に図面を参照しながら、本開示のいくつかの例示的態様について説明する。本明細書において、「例示的」という語は、「例、実例、または例証としての働きをする」ことを意味するために使用される。本明細書で「例示的」として記述されるどんな態様も、他の態様よりも好ましいかまたは有利であると解釈されるべきとは必ずしも限らない。
【００１２】
発明を実施するための形態で開示する態様は、仮想化環境におけるストレージリソース管理を含む。この点について、一態様では、仮想化レイヤは、ストレージコントローラ内に、1つまたは複数のクライアントとストレージデバイスとの間のインターフェースとして提供される。ストレージコントローラは、クライアントからのストレージリソース要求を捕捉し、捕捉されたストレージリソース要求を仮想化レイヤを介して仮想化リソースマネージャに提供するように構成される。仮想化リソースマネージャは、ストレージデバイス内の物理リソース割振りに対応する仮想リソース割振りを生成する。クライアントは、仮想化レイヤから仮想リソース割振りを受信し、続いて、そのクライアントがストレージデバイスの唯一のユーザであるかのようにストレージコントローラを介して仮想リソース割振りにアクセスする。別の態様では、ストレージコントローラは、1つまたは複数のクライアントがストレージデバイスにアクセスするとき、1つまたは複数のクライアントによって提供された仮想リソース割振りアドレスに基づいて、対応する物理リソース割振りアドレスを検索するように構成される。ストレージコントローラにおいてストレージリソース要求を捕捉し、仮想リソース割振りを1つまたは複数のクライアントに提供することによって、仮想化環境において1つまたは複数のクライアントの間でストレージデバイスを矛盾なく共有することが可能である。
【００１３】
この点について、図1は、仮想化レイヤ16を介して1つまたは複数のクライアント14(1)〜14(N)の間でストレージデバイス12を共有するように構成された例示的な仮想化ストレージシステム10の概略図である。例示的な態様では、仮想化レイヤ16は、ハイパーバイザであり得る。仮想化レイヤ16を含むストレージコントローラ18は、通信媒体20を介してストレージデバイス12に結合される。ストレージコントローラ18は、第1のホストコントローラインターフェース(HCI)24を介して仮想化リソースマネージャ22に結合される。ストレージコントローラ18は、1つまたは複数のクライアント14(1)〜14(N)にそれぞれ結合するための1つまたは複数の第2のHCI26(1)〜26(N)を含む。非限定的な例では、仮想化レイヤ16は、ハードウェア要素またはソフトウェア機能であり得る。第1のHCI24および1つまたは複数の第2のHCI26(1)〜26(N)は、本開示では参照および説明の便宜のためだけに別様に標示された同じHCIであり得る。
【００１４】
引き続き図1を参照すると、非限定的な例では、ストレージデバイス12は、現在、ホストソフトウェアエンティティであり得る単一のクライアント14による管理および使用のために設計された、ユニバーサルフラッシュストレージ(UFS)または埋込型マルチメディアカード(eMMC)であり得る。1つまたは複数のクライアント14(1)〜14(N)の間でストレージデバイス12を供給することができるように、ストレージコントローラ18は、1つまたは複数のクライアント14(1)〜14(N)のうちのクライアント14から受信したストレージリソース要求(図示せず)を捕捉し、捕捉されたストレージリソース要求を仮想化リソースマネージャ22に提供するように構成される。たとえば、ストレージデバイス12がeMMCである場合、捕捉されたストレージリソース要求は、コマンドキュー(CQ)深度レジスタ(図示せず)においてストレージコントローラ18によって捕捉される、eMMC読取りCQ深度コマンドであり得る。CQ深度レジスタは、ストレージデバイス12における拡張型(EXT)カード固有データ(CSD)(EXT_CSD)レジスタ(図示せず)の一部である。別の非限定的な例では、ストレージデバイス12がUFSである場合、ストレージリソース要求は、UFS論理ユニットレポート(REPORT_LUNS)コマンドまたはUFS論理ユニット問合せ(INQUIRY)コマンドであり得る。
【００１５】
引き続き図1を参照すると、仮想化リソースマネージャ22は、ストレージコントローラ18から捕捉されたストレージリソース要求を受信すると、ストレージデバイス12内の物理リソース割振り(図示せず)に対応する仮想リソース割振り(図示せず)を生成する。非限定的な例では、仮想リソース割振りおよび物理リソース割振りは、ストレージデバイス12内のスロット単位で行われる。非限定的な例によれば、ストレージリソース要求を送信する1つまたは複数のクライアント14(1)〜14(N)のうちの特定のクライアント14(以下「リソース要求クライアント」と呼ぶ)は、開始物理スロット番号(図示せず)で始まる、ストレージデバイス12内の連続的な物理スロット(図示せず)の数を示す、開始物理スロット番号およびスロットカウント(図示せず)で表された物理リソース割振りを受信する。たとえば、開始物理スロット番号が5でスロットカウントが3である場合、対応する物理リソース割振りは、物理スロット5、6、および7を含む。1つまたは複数のクライアント14(1)〜14(N)の各々に関する仮想リソース割振りおよび物理リソース割振りを追跡するために、仮想化リソースマネージャ22は、マッピング機構(たとえば、マッピングテーブル)において仮想リソース割振りを物理リソース割振りにマッピングするように構成され得る。
【００１６】
引き続き図1を参照すると、仮想化リソースマネージャ22は、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に関する仮想リソース割振りおよび物理リソース割振りを作成した後、スプーフィングされたストレージリソース応答(図示せず)において、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14の仮想リソース割振りおよび識別情報を仮想化レイヤ16に提供する。続いて、仮想化レイヤ16は、仮想化リソースマネージャ22から受信した仮想リソース割振りを含む、スプーフィングされたストレージリソース応答を、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に提供する。1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14は、ストレージデバイス12内の全ストレージスペースの一部分を割り振られたにすぎない場合があるが、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14は、それでもなお、1つまたは複数のクライアント14(1)〜14(N)のうちの他のいかなるクライアント14もストレージデバイス12を共有していないと信じるようにスプーフィングされたストレージリソース応答によって「欺かれ」る。さらに、1つまたは複数のクライアント14(1)〜14(N)のいずれも、ストレージデバイス12内の全ストレージスペースを絶対に見つけ出すことはないが、その理由は、すべてのストレージリソース要求がストレージコントローラ18において捕捉されるからである。その結果、仮想化ストレージシステム10において、1つまたは複数のクライアント14(1)〜14(N)の間でストレージデバイス12を共有することが可能である。
【００１７】
引き続き図1を参照すると、仮想化レイヤ16は、1つまたは複数のマッピングエントリを含むストレージリソースマッピングテーブル28内に仮想リソース割振りおよび物理リソース割振りを記録し得る。非限定的な例では、ストレージリソースマッピングテーブル28は、ソフトウェア機能として提供される場合があり、仮想化レイヤ16の内部または外部に存在する場合がある。ストレージリソースマッピングテーブル28は、1つまたは複数のクライアント14(1)〜14(N)のうちの各リソース要求クライアント14に関するマッピングエントリを含む。以下のTable 1(表1)は、マッピングエントリの例示的な構造を示す。
【００１８】
【表１】
2018508869.tif 000003
【００１９】
上記のTable 1(表1)に示すように、ストレージリソースマッピングテーブル28内のマッピングエントリは、クライアント識別情報フィールド、タグフィールド、開始物理スロットフィールド、およびスロットカウントフィールドを含む。クライアント識別情報フィールドは、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14の識別情報を示す。タグフィールドは、仮想リソース割振りにおける開始仮想スロット番号を示す。開始物理スロットフィールドは、物理リソース割振りにおける開始物理スロット番号を示す。スロットカウントフィールドは、ストレージデバイス12内の物理割振りにおいて1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に割り振られた、開始物理スロット番号で始まる、連続的な物理スロットの数を示す。タグフィールド内の開始仮想スロット番号は、開始物理スロットフィールド内の開始物理スロット番号と同じか、または異なる場合がある。たとえば、開始物理スロット番号が5である一方で、開始仮想スロット番号が0である場合がある。
【００２０】
引き続き図1を参照すると、1つまたは複数のクライアント14(1)〜14(N)のうちのクライアント14は、ストレージリソースアクセス要求(図示せず)をストレージコントローラ18内の仮想化レイヤ16に送信することによって仮想リソース割振りにアクセスすることができる。ストレージリソースアクセス要求を送信する1つまたは複数のクライアント14(1)〜14(N)のうちのクライアント14は、説明の便宜のために、以下「アクセス要求クライアント」と呼ばれる。ストレージリソースアクセス要求は、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14がアクセスしようとする仮想スロット番号を含む。ストレージコントローラ18内の仮想化レイヤ16は、ストレージリソースアクセス要求を受信すると、仮想スロット番号に基づいてストレージリソースマッピングテーブル28内の対応する物理スロット番号を検索する。非限定的な例では、ストレージリソースマッピングテーブル28内の1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14に関するマッピングエントリは、次の値を有する。
【００２１】
クライアント識別情報フィールド=1
【００２２】
タグフィールド=0
【００２３】
開始物理スロット番号=5
【００２４】
スロットカウント=3
【００２５】
上記の非限定的な例によると、ストレージリソースアクセス要求が、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14がアクセスしようとする仮想スロットである仮想スロット番号2を含む場合、対応する物理スロット番号は7である(対応する物理スロット番号=((ストレージリソースアクセス要求における仮想スロット番号)-(タグ)+(開始物理スロット番号))=2-0+5=7)。
【００２６】
引き続き図1を参照すると、ストレージコントローラ18は、次いで、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14のストレージリソースアクセス要求を実行するために、対応する物理スロット番号を含む、少なくとも1つのストレージリソースアクセス命令(図示せず)をストレージデバイス12に提供する。ストレージコントローラ18は、ストレージデバイス12からストレージリソースアクセス結果(図示せず)を受信すると、ストレージリソースアクセス結果を、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14に提供する。
【００２７】
図1を参照して以上で説明した仮想リソース割振りおよびアクセスをさらに示すために、図2〜図5が提供され、次に説明される。図2〜図5に関して、図1の要素が参照されるが、本明細書では再び説明しない。
【００２８】
この点について、図2は、1つまたは複数のクライアント14(1)〜14(N)がストレージデバイス12内のストレージリソースを要求するための例示的なストレージリソース割振りシグナリングフロー30を示す。仮想化ストレージシステム10が始動しているブート時間32の間、仮想化リソースマネージャ22は、ストレージデバイス12に関連する1つまたは複数のストレージリソースパラメータ(図示せず)を要求するためにストレージコントローラ18を介してストレージリソースパラメータ問合せ34をストレージデバイス12に送信するように構成される。応答して、ストレージデバイス12は、ストレージコントローラ18を介してストレージリソースパラメータレポート36を送信する。ストレージリソースパラメータレポート36は、ストレージデバイス12に関連する1つまたは複数のストレージリソースパラメータを含む。仮想化リソースマネージャ22は、今度は、1つまたは複数のストレージリソースパラメータを記録するように構成され得る。
【００２９】
引き続き図2を参照すると、ストレージリソースを要求するために、1つまたは複数のクライアント14(1)〜14(N)は各々、ストレージリソース要求38をストレージコントローラ18に送信し得る。ストレージコントローラ18は、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14(ストレージリソース要求38が捕捉される)から受信したストレージリソース要求38を捕捉する。続いて、ストレージコントローラ18は、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14の識別情報(クライアントID)をさらに含む仮想リソース割振り要求40において、捕捉されたストレージリソース要求38を仮想化リソースマネージャ22に提供する。仮想化リソースマネージャ22は、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に関する仮想リソース割振りを生成するが、仮想リソース割振りは、ストレージデバイス12内の物理リソース割振りに対応する。仮想化リソースマネージャ22は、次いで、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14の識別情報(クライアントID)、開始仮想スロット番号、および1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に割り振られたスロット数(スロットカウント)を含む、スプーフィングされたストレージリソース応答42を生成する。仮想化レイヤ16は、スプーフィングされたストレージリソース割振り応答42を受信すると、ストレージリソースマッピングテーブル28内に仮想リソース割振りパラメータを記録し得る。仮想化レイヤ16は、今度は、クライアントID、開始仮想スロット番号、およびスロットカウントを含む、スプーフィングされたストレージリソース応答42を、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14に提供する。ストレージリソース要求38がストレージコントローラ18において捕捉されるので、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14は、1つまたは複数のクライアント14(1)〜14(N)のうちのリソース要求クライアント14がストレージデバイス12の唯一のユーザであると信じるようにスプーフィングされたストレージリソース応答42によって「欺かれ」得る。したがって、1つまたは複数のクライアント14(1)〜14(N)の各々に関するストレージリソース割振りシグナリングフロー30を繰り返すことによって、仮想化ストレージシステム10では1つまたは複数のクライアント14(1)〜14(N)の間でストレージデバイス12を共有することが可能である。
【００３０】
上述のように、ストレージデバイス12は、eMMCまたはUFSであり得る。この点について、図3は、1つまたは複数のクライアント14(1)〜14(N)が、eMMCであるストレージデバイス12内のストレージリソースを要求するための例示的なeMMCストレージリソース割振りシグナリングフロー30(1)を示す。図2と図3との間で共通の要素は、共通の要素番号を用いて示されており、したがって、本明細書では再び説明しない。
【００３１】
図3を参照すると、ブート時間32の間に、仮想化リソースマネージャ22は、ストレージリソースパラメータ問合せ34(1)内のeMMC固有ストレージリソースパラメータ(たとえば、CQ深度)について問い合わせ、ストレージリソースパラメータレポート36(1)内のeMMC固有ストレージリソースパラメータを受信する場合がある。仮想化リソースマネージャ22は、続いて、eMMC固有ストレージアクセスパラメータを記録する。1つまたは複数のクライアント14(1)〜14(N)は、今度は、eMMC読取りCQ深度コマンド38(1)をストレージコントローラ18に送信することによってeMMCストレージリソースを要求し得る。ストレージコントローラ18は、ストレージデバイス12内のEXT_CSDレジスタ(図示せず)内のCQ深度レジスタ(図示せず)においてeMMC読取りCQ深度コマンド38(1)を捕捉する。
【００３２】
図4は、1つまたは複数のクライアント14(1)〜14(N)が、UFSであるストレージデバイス12内のストレージリソースを要求するための例示的なUFSストレージリソース割振りシグナリングフロー30(2)を示す。図2と図4との間で共通の要素は、共通の要素番号を用いて示されており、したがって、本明細書では再び説明しない。
【００３３】
図4を参照すると、ブート時間32の間に、仮想化リソースマネージャ22は、ストレージリソースパラメータ問合せ34(2)内のUFS固有ストレージリソースパラメータ(たとえば、論理ユニット(LUNS))について問い合わせ、ストレージリソースパラメータレポート36(2)内のUFS固有ストレージリソースパラメータを受信する場合がある。ストレージコントローラ18は、続いて、UFS固有ストレージリソースパラメータを記録する。1つまたは複数のクライアント14(2)〜14(N)は、今度は、UFS論理ユニットレポート(REPORT_LUNS)コマンド38(2)またはUFS INQUIRYコマンド38(2)をストレージコントローラ18に送信することによってUFSストレージリソースを要求し得る。
【００３４】
1つまたは複数のクライアント14(1)〜14(N)の各々は、ストレージコントローラ18を介して、それぞれの仮想リソース割振りにアクセスし得る。この点について、図5は、1つまたは複数のクライアント14(1)〜14(N)がストレージデバイス12内のストレージリソースにアクセスするための例示的なストレージリソースアクセスシグナリングフロー44を示す。ストレージリソースにアクセスするために、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14は、ストレージリソースアクセス要求46をストレージコントローラ18に送信する。ストレージリソースアクセス要求46は、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14の識別情報(クライアントID)と、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14がアクセスしようとする仮想スロット番号とを含む。図1で前に説明したように、ストレージコントローラ18は、仮想スロット番号に基づいてストレージリソースマッピングテーブル28内の対応する物理スロット番号を検索する。ストレージコントローラ18は、次いで、1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14のストレージリソースアクセス要求46を実行するために、対応する物理スロット番号を、少なくとも1つのストレージリソースアクセス命令48を介してストレージデバイス12に提供する。続いて、ストレージコントローラ18は、ストレージリソースアクセス応答50を介してストレージリソースアクセス結果を1つまたは複数のクライアント14(1)〜14(N)のうちのアクセス要求クライアント14に提供する。この点について、1つまたは複数のクライアント14(1)〜14(N)は、ストレージデバイス12を矛盾なく共有することができる。
【００３５】
仮想化環境におけるストレージリソース管理は、任意のプロセッサベースのデバイスにおいて提供されるか、またはそのデバイスに統合され得る。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、しきい値論理回路、および論理プロセス回路が含まれる。
【００３６】
この点について、図6は、図1の仮想化レイヤ16を介して1つまたは複数のクライアント14(1)〜14(N)の間でストレージデバイス12を共有するように構成された、図1の仮想化ストレージシステム10を含むことができる例示的なプロセッサベースのシステム60のブロック図である。
【００３７】
この例では、プロセッサベースのシステム60は、各々が1つまたは複数のプロセッサ64を含む、1つまたは複数の中央処理ユニット(CPU)62を含む。CPU62は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ64に結合されたキャッシュメモリ66を有し得る。CPU62は、システムバス68に結合され、プロセッサベースのシステム60内に含まれるデバイスを相互結合することができる。よく知られているように、CPU62は、システムバス68を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。図6には示されていないが、複数のシステムバス68を設けることができ、各システムバス68が異なるファブリックを構成する。
【００３８】
他のデバイスをシステムバス68に接続することができる。図6に示すように、これらのデバイスは、例として、メモリシステム70、1つまたは複数の入力デバイス72、1つまたは複数の出力デバイス74、1つまたは複数のネットワークインターフェースデバイス76、および1つまたは複数のディスプレイコントローラ78を含むことができる。入力デバイス72は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス74は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス76は、ネットワーク80への、またそこからのデータ交換を可能にするように構成された、任意のデバイスとすることができる。ネットワーク80は、限定はしないが、ワイヤードネットワークもしくはワイヤレスネットワーク、プライベートネットワークもしくは公共ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイヤレスワイドエリアネットワーク(WWAN)、Bluetooth(登録商標)ピコネット、またはインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス76は、必要に応じて、任意のタイプの通信プロトコルをサポートするように構成することができる。メモリシステム70は、1つまたは複数のメモリユニット82(0〜N)およびメモリコントローラ84を含むことができる。
【００３９】
CPU62は、1つまたは複数のディスプレイ86に送信される情報を制御するために、システムバス68を介してディスプレイコントローラ78にアクセスするように構成される場合もある。ディスプレイコントローラ78は、1つまたは複数のビデオプロセッサ88を介して、表示されるべき情報をディスプレイ86に送り、ビデオプロセッサ88は、表示されるべき情報を、ディスプレイ86に適したフォーマットになるように処理する。ディスプレイ86は、限定はしないが、陰極線管(CRT)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む任意のタイプのディスプレイを含むことができる。
【００４０】
プロセッサベースのシステム60は、図1の仮想化ストレージシステム10をサポートするように構成され得る。この点について、CPU62は、仮想化レイヤ16として機能し、仮想化のための手段を提供するように構成され得る。CPU62は、仮想化リソースマネージャ22として機能し、仮想リソースを割り振るための手段を提供するように構成され得る。入力デバイス72、出力デバイス74、ネットワークインターフェースデバイス76、およびディスプレイコントローラ78は、1つまたは複数のクライアント14(1)〜14(N)の間にある。eMMCまたはUFSであり得る1つまたは複数のメモリユニット82(0〜N)は、ストレージデバイス12として機能し、記憶のための手段を提供するように構成することができる。メモリコントローラ84は、ストレージコントローラ18として機能し、ストレージを制御するための手段を提供し得る。したがって、CPU62によって提供される仮想化を介して、入力デバイス72、出力デバイス74、ネットワークインターフェースデバイス76、およびディスプレイコントローラ78の間で1つまたは複数のメモリユニット82(0〜N)を共有することが可能である。
【００４１】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、またはその両方の組合せとして実現できることは、当業者はさらに理解されよう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用されてもよい。本明細書において開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成されてもよい。この互換性について明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明してきた。そのような機能がどのように実現されるかは、特定の適用例、設計上の選択、および/またはシステム全体に課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４２】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されるそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサである場合があるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンである場合がある。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合もある。
【００４３】
本明細書で開示する態様は、ハードウェアにおいて、および、ハードウェアに記憶された命令において具現化される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体である場合がある。プロセッサおよび記憶媒体は、ASICに存在する場合がある。ASICは、リモート局内に存在する場合がある。代替として、プロセッサおよび記憶媒体は、リモート局、基地局、またはサーバ内に個別構成要素として存在してもよい。
【００４４】
本明細書の例示的な態様のいずれかに記載される動作ステップは、例および説明を提供するために記載されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。フローチャート図に示された動作ステップは、当業者には容易に明らかであるように、多くの異なる修正を受けることがあることを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表されてもよいことを理解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００４５】
本開示の上記の説明は、いかなる当業者も本開示を作成または使用することが可能になるように提供される。本開示に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書に記載の例および設計に限定されることを意図するものではなく、本明細書で開示される原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００４６】
10  仮想化ストレージシステム
12  ストレージデバイス
14  クライアント
14(1)〜14(N)  クライアント
16  仮想化レイヤ
18  ストレージコントローラ
20  通信媒体
22  仮想化リソースマネージャ
24  第1のホストコントローラインターフェース、第1のHCI
26(1)〜26(N)  第2のHCI
28  ストレージリソースマッピングテーブル
60  プロセッサベースのシステム
62  中央処理ユニット、CPU
64  プロセッサ
66  キャッシュメモリ
68  システムバス
70  メモリシステム
72  入力デバイス
74  出力デバイス
76  ネットワークインターフェースデバイス
78  ディスプレイコントローラ
80  ネットワーク
82(0〜N)  メモリユニット
84  メモリコントローラ
86  ディスプレイ
88  ビデオプロセッサ
【図１】
2018508869.tif 000004
【図２】
2018508869.tif 000005
【図３】
2018508869.tif 000006
【図４】
2018508869.tif 000007
【図５】
2018508869.tif 000008
【図６】
2018508869.tif 000009
【国際調査報告】
2018508869.tif 000010
2018508869.tif 000011