特許第5960103号(P5960103)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴイエムウェア インクの特許一覧

特許5960103空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース
<>
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000002
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000003
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000004
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000005
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000006
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000007
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000008
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000009
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000010
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000011
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000012
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000013
  • 特許5960103-空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5960103
(24)【登録日】2016年7月1日
(45)【発行日】2016年8月2日
(54)【発明の名称】空間最適化ブロックデバイスのためのシステムソフトウェアインタフェース
(51)【国際特許分類】
   G06F 13/10 20060101AFI20160719BHJP
   G06F 9/46 20060101ALI20160719BHJP
   G06F 3/06 20060101ALI20160719BHJP
【FI】
   G06F13/10 330C
   G06F9/46 350
   G06F3/06 301Z
【請求項の数】4
【全頁数】21
(21)【出願番号】特願2013-177455(P2013-177455)
(22)【出願日】2013年8月29日
(62)【分割の表示】特願2011-186106(P2011-186106)の分割
【原出願日】2011年8月29日
(65)【公開番号】特開2014-29700(P2014-29700A)
(43)【公開日】2014年2月13日
【審査請求日】2013年8月29日
(31)【優先権主張番号】61/378,076
(32)【優先日】2010年8月30日
(33)【優先権主張国】US
(31)【優先権主張番号】13/181,163
(32)【優先日】2011年7月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510108504
【氏名又は名称】ヴイエムウェア インク
【氏名又は名称原語表記】VMware, Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(74)【代理人】
【識別番号】100085372
【弁理士】
【氏名又は名称】須田 正義
(72)【発明者】
【氏名】ヴァガニ,サトィヤム ビー.
(72)【発明者】
【氏名】アスワタナラヤナ,テジャスヴィ
【審査官】 坂東 博司
(56)【参考文献】
【文献】 特開昭61−112255(JP,A)
【文献】 特開2007−193573(JP,A)
【文献】 特開2006−293543(JP,A)
【文献】 特開2004−302701(JP,A)
【文献】 特開2002−099502(JP,A)
【文献】 特表2012−523594(JP,A)
【文献】 特表2012−522292(JP,A)
【文献】 特表2010−537297(JP,A)
【文献】 国際公開第09/066611(WO,A1)
【文献】 国際公開第11/024239(WO,A1)
【文献】 国際公開第10/111694(WO,A2)
【文献】 欧州特許出願公開第00169005(EP,A2)
【文献】 特開2009−134601(JP,A)
【文献】 特開2010−140273(JP,A)
【文献】 特開2008−102667(JP,A)
【文献】 特表2011−523751(JP,A)
【文献】 国際公開第2009/150122(WO,A1)
【文献】 特開2009−64303(JP,A)
【文献】 国際公開第2009/133015(WO,A1)
【文献】 国際公開第2009/047986(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 3/06
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムであって、
ハードウェアデバイスとしてのストレージアレイであって、該ストレージアレイにおける物理ストレージ空間の論理表現としてのLUNをサポートする前記ストレージアレイと
前記ストレージアレイとネットワークを介して接続されたホストコンピュータであって、該ホストコンピュータは、仮想マシンの実行をサポートするハイパーバイザを提供する、前記ホストコンピュータと
を備え、
前記ハイパーバイザは、エミュレートされた論理ブロックデバイスを含む前記仮想マシンに対するハードウェア資源をエミュレートするように構成され前記エミュレートされた論理ブロックデバイスは、前記仮想マシンによりアクセス可能な仮想ストレージ空間の論理表現であり、前記ハイパーバイザは、前記LUNを用いて前記仮想ストレージ空間を提供し、
前記ハイパーバイザは、前記LUNからストレージブロックの割当てを解除するために前記ストレージアレイに対してコマンドを発行するように構成され
記仮想マシンは、前記エミュレートされた論理ブロックデバイスからストレージブロックの割当てを解除するために前記エミュレートされた論理ブロックデバイスに対してコマンドを発行するように構成されている、コンピュータシステム。
【請求項2】
前記ハイパーバイザは、整合値及び粒度値に基づいて前記ストレージアレイに対してコマンドを発行するように構成され該コマンドに従って前記ストレージアレイ前記ストレージアレイ内のLUNの物理ストレージ空間を再利用する空間再利用動作を実行し、
前記仮想マシンは、整合値及び粒度値に基づいて前記エミュレートされた論理ブロックデバイスに対してコマンドを発行するように構成され該コマンドに従って前記エミュレートされた論理ブロックデバイスが前記エミュレートされた論理ブロックデバイス内の仮想ストレージ空間を再利用する空間再利用動作を実行する、請求項1に記載のコンピュータシステム。
【請求項3】
前記ハイパーバイザ前記LUNのストレージブロックが、割当てを解除されるべきであるが前記LUNの前記整合値及び粒度値と互換性がないと識別されている第1のデータ構造を管理するように構成され
記仮想マシン前記エミュレートされた論理ブロックデバイスのストレージブロックが、割当てを解除されるべきであるが前記エミュレートされた論理ブロックデバイスの前記整合値及び粒度値と互換性がないと識別されている第2のデータ構造を管理するように構成される、請求項2に記載のコンピュータシステム。
【請求項4】
前記ハイパーバイザ前記ストレージブロックに対する書込みを検出する場合、ストレージブロックを前記第1のデータ構造において識別されているものとして除外するように構成され
前記仮想マシン、前記ストレージブロックに対する書込みを検出する場合、ストレージブロックを前記第2のデータ構造において識別されているものとして除外するように構成される、請求項3に記載のコンピュータシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]本出願は、2010年8月30日出願の米国特許仮出願第61/378,076号の利益を主張し、その内容全体を本願明細書に引用したものとする。
【技術分野】
【0002】
本発明は、空間最適化ブロックデバイスのためのシステムソフトウェアインタフェースに関する。
【背景技術】
【0003】
[0002]コンピュータ仮想化は、物理的コンピュータプラットホームを、ハードウェアコンピュータプラットホーム即ち「ホスト」上で動作する仮想化ソフトウェアの制御の下で実行される仮想マシンにカプセル化することを含む技法である。仮想マシンは、仮想システムハードウェア及びゲストオペレーティングシステムソフトウェアの両方を有する。仮想システムハードウェアは典型的に、ゲストオペレーティングシステムに対する典型的ストレージドライブとして見える少なくとも1台の「仮想ディスク」、単一ファイル又は一組のファイルを含む。仮想ディスクは、ホストプラットホーム上に又はリモートストレージデバイス上に格納されてもよい。典型的に、ゲストオペレーティングシステム、アプリケーションプログラム及びアプリケーションデータを格納するために、物理ストレージドライブが用いられるのと同じ方法で、仮想マシン(VM)は仮想ディスクを用いる。
[0003]仮想化ソフトウェアは、また、ハイパーバイザと称され、仮想ディスクに対するゲストオペレーティングシステムのアクセスを管理し、かつ、仮想ディスクを、ホストプラットホーム上に、又はストレージエリアネットワーク(SAN)若しくはネットワーク接続ストレージ(NAS)のような、リモートストレージデバイス内に存在する下位物理ストレージ資源にマップする。複数仮想マシンが単一ホスト上にインスタンス化可能であるので、物理ストレージ空間を組織のデータセンター内のすべてのインスタンス化された仮想マシンに対応する仮想ディスクに割り当てることは、データセンターの物理ストレージ空間容量に圧迫を加える可能性がある。例えば、仮想マシンに仮想ディスクを供給するときには、仮想ディスクが最初に作り出された時点で仮想化ソフトウェアが全ての物理ディスク空間を仮想ディスクに割り当て、時にはゼロだけを含有する多数の空のデータブロック(「0ブロック」)を作り出す場合がある。しかしながら、仮想ディスクに割り当てられた物理ストレージ空間が仮想マシンによって折よく用いられない(又は決して用いられない)かもしれないので、この種の割当てはストレージ非効率性に結びつくかもしれない。「シン・プロビジョニング(thin provisioning)」として知られる、1つの解決策において、仮想化ソフトウェアは、この種の物理ストレージ空間が仮想マシンによって実際に必要な時だけ、仮想ディスクに物理ストレージ空間を動的に割り当て、必ずしも仮想ディスクが最初に作り出された時に割り当てない。
【0004】
[0004]これと同様の方法で、シン・プロビジョニングは下位ストレージハードウェア、例えば、物理ストレージ媒体として回転ディスク又は固体ディスクのアレイを含んでもよい、ストレージアレイのストレージ空間最適化法として実現されてもよい。そのような場合、物理ストレージ媒体を管理し、かつ、論理装置番号(LUN)と称される、論理データストレージユニットとしてそれらをホストに公開するストレージシステムコントローラが、LUNを薄く供給する。即ち、ストレージシステムコントローラがこの種の物理ストレージ空間がLUNによって実際に必要な時だけ、LUNに物理ストレージ空間を動的に割り当て、必ずしもLUNが最初に作り出された時に割り当てるのではない。その結果、LUNが最初に作り出された時には、LUNの各々の論理サイズは典型的にその物理サイズより非常に大きい。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第7,849,098号、名称「ファイルシステムに対する複数並列アクセス」、2004年2月4日出願、2010年12月7日発行
【特許文献2】米国特許出願第12/050805号、名称「ファイルデータブロックの効率的なゼロ合わせ」(弁護士内容摘要録番号A123)、2008年3月18日出願
【発明の概要】
【発明が解決しようとする課題】
【0006】
[0005]しかしながら、薄く供給された仮想ディスク及び薄く供給されたLUNの使用によってさえ、ストレージ非効率性が「淀んだ(stale)」データの累積、即ち、以前に用いられて現在使っていないが、割り当てられたまま残るディスクブロック、によって生じるおそれがある。例えば、ゲストオペレーティングシステムによって仮想ディスク内の、ドキュメントの編集中にバックアップとして作り出された一時ファイルのようなファイルの削除は、一般に、一時ファイルに対応する実際のデータブロックの解放に結びつかない。ゲストオペレーティングシステムが(例えば、ゲストファイルシステムのビットマップ内のビットをクリアすることによって)それ自体のゲストファイルシステム内の削除された一時ファイルに関する解放されたデータブロックをそれ自体で追跡することができるとはいえ、ゲストオペレーティングシステムは、それが一時データファイルを削除したディスクが実際にはそれ自体でファイルである「仮想ディスク」であることを知らない。従って、仮想ディスクの一部分(即ち解放されたデータブロックのゲストファイルシステムのビットマップを格納する仮想ディスクの部分)がゲストオペレーティングシステムによって一時ファイルの削除の際に変更されてもよいとはいえ、削除された一時ファイルの実際のデータブロックに対応する仮想ディスクの部分は、仮想化ソフトウェアによって仮想ディスクからLUNへ実際には解放されない。仮想ディスクのこの種の「淀んだ」部分は対応するゲストオペレーティングシステムによって利用されず、かつまた、代替用途(例えば、異なる仮想マシン、その他用の異なる仮想ディスクの一部として再割当される)のための仮想化ソフトウェアに利用可能でないので、この振る舞いはストレージ非効率性に結びつく可能性がある。
【0007】
[0006](1台以上の仮想ディスク及び他のVM構成ファイルを含む)仮想マシンディスクファイルのソースLUNから宛先LUNへのライブの移行を含むStorage vMotion(商標)として知られるプロセスは、薄く供給されたLUN内に累積された「淀んだ」データの別の例を提供する。Storage vMotion(商標)中に、仮想マシンディスクファイルに対応する実際のデータブロックが、ソースLUNから宛先LUNにコピーされ、及び、コピーの終わりで、このVMをサポートするLUNがソースLUNから宛先LUNに原子的に切替えられる。原子的切替えの後、ソースLUN内の仮想マシンディスクファイルに対応する実際のデータブロックは、もはや必要でない。仮想化ソフトウェアがそれ自体でこれらのデータブロックを追跡し、かつ、例えばソースLUNから仮想マシンディスクファイルを実際に削除することによって、「空き(free)」としてそれらをマークすることができるとはいえ、仮想マシンディスクファイルのこれらの空きデータブロックに対応するソースLUNの部分は、LUNからストレージアレイへ実際には解放されない。仮想化ソフトウェアが(例えば、新規な仮想マシンディスクファイルを別の仮想マシン、その他に割り当てることによって)代替用途のためのソースLUN内に、解放されたデータブロックをすばやく再割当するならば、これは受け入れられるかもしれない。しかしながら、解放されたデータブロックが未割り当てのままである場合において、LUNのこの種の「淀んだ」部分は(例えば、この種の淀んだ部分が、ストレージアレイマネージャによって、ストレージ圧力を経験しているかもしれない、異なる薄く供給されたLUNに再割当される可能性があるので)シン・プロビジョニングから得られるストレージ空間効率を小さくする。
【課題を解決するための手段】
【0008】
[0007]本発明の1つ以上の実施態様が、支持されるべきこの種の技術から利益が得られることを可能にするために、シン・プロビジョニングのような、ストレージ空間最適化法を使用するストレージデバイスに対する、システムソフトウェアインタフェースを提供する。この種のインタフェースは、ハイパーバイザが、LUNが薄く供給されたかどうかのような、LUNの機能を発見することを可能にするために仮想化コンピュータシステムのハイパーバイザ内に、及び、更に、VMが、仮想ディスクが薄く供給されたかどうかのような、仮想ディスクの機能を発見することを可能にするために、仮想化コンピュータシステムのVM内に設けられてもよい。これらの機能の発見は、論理ブロックデバイス、即ちLUN又は仮想ディスクに以前に割り当てられたブロックの割当てを解除する動作のような特定の動作を実行するように、ハイパーバイザ又はVMが下位ストレージデバイスに指示することを可能にし、下位ストレージデバイスがその中で実現されるストレージ空間最適化法から利益を得続けることができるようにする。
【0009】
[0008] 本発明の一実施態様に従う一コンピュータシステムは、論理データストレージユニットをサポートするストレージアレイと、プロセッサ、メモリを含むハードウェア資源、及び仮想マシンの実行をサポートしてかつエミュレートされた論理ブロックデバイスを含む仮想マシンのためのハードウェア資源をエミュレートするハイパーバイザを含む。ハイパーバイザは、論理データストレージユニットからストレージブロックの割当てを解除するために論理データストレージユニット第1コマンドを発行するための第1コンポーネントを含み、及び仮想マシンは、エミュレートされた論理ブロックデバイスからストレージブロックの割当てを解除するためにエミュレートされた論理ブロックデバイスに第2コマンドを発行するための第2コンポーネントを含む。
【図面の簡単な説明】
【0010】
図1】[0012]1つ以上の実施態様に従う仮想化コンピュータアーキテクチャを示すブロック図である。
図2A】[0013]1つ以上の実施態様に従う、図1の仮想化コンピュータアーキテクチャにおけるサーバを代表するブロック図を記載する。
図2B】[0014]1つ以上の実施態様に従う、図1の仮想化コンピュータアーキテクチャにおけるストレージアレイを代表するブロック図を記載する。
図3】[0015]図2Aのサーバ内で動作するハイパーバイザの論理ブロックデバイスとして動作するLUNの構成特性を集める一方法を例示する流れ図である。
図4】[0016]図2Aのサーバ内で動作する仮想マシンのゲストオペレーティングシステムの論理ブロックデバイスとして動作する仮想ディスクの構成特性を集める一方法を例示する流れ図である。
図5】[0017]仮想ディスクからのストレージ空間再利用の一方法を例示する流れ図である。
図6】[0018]VMからのコマンドに応答してハイパーバイザによって開始されるLUNからのストレージ空間再利用の一方法を例示する流れ図である。
図7】[0019]管理サーバからのコマンドに応答してハイパーバイザによって開始されるLUNからのストレージ空間再利用の一方法を例示する流れ図である。
図8】[0020]VMをライブで移行するプロセスを開始する前に互換性チェックを実行する一方法を例示する流れ図である。
図9】[0021]LUNが用いられた容量内の特定の閾値に到達したと仮想化コンピュータシステムの管理サーバに通知する一方法を例示する流れ図である。
図10】[0022]図9で通知を受け取る際に管理サーバによって善後策を実行する一方法を例示する流れ図である。
図11】[0023]書込み動作を実行する間にLUNの、空間が尽きる時に、生じるエラーを検出してかつ処理する一方法を例示する流れ図である。
図12】[0024]LUNからストレージ空間を遡及して再利用する一方法を例示する流れ図である。
【発明を実施するための形態】
【0011】
[0025]図1は、1つ以上の実施態様に従う仮想化コンピュータアーキテクチャ100を示すブロック図である。仮想化コンピュータアーキテクチャ100は、1台以上のストレージアレイ130を含む共有ストレージシステムにネットワーク120経由で接続される複数のサーバ110を含む。サーバ110はいくつあってもよく、それぞれが、任意の数のストレージアレイ130上に格納されるデータにアクセスする1台以上の仮想マシンを有する汎用コンピュータシステムを備えていてもよい。ネットワーク120は、広域ネットワーク、ローカルエリアネットワーク又は、Fibre Channel、iSCSI、その他のような、ストレージアレイ130に特に適しているプロトコルをホストするネットワークであってもよく、かつ1個以上のスイッチを備えていてもよい。ストレージアレイ130は、ネットワーク接続ストレージ(NAS)ファイラ又はストレージエリアネットワーク(SAN)を介したブロックベースデバイスのような任意のタイプであってもよい。ストレージアレイ130が典型的に複数のディスクから構成されるとはいえ、固体不揮発性ストレージデバイスの価格が下落するにつれて、それらがますます回転ディスクストレージ媒体に取って代わると認識されなければならない。従って、用語「ディスク」の使用は、本願明細書において、回転ディスクストレージ媒体だけに限定されると解釈されるべきでなく、また、固体ディスク又は「SSD」として知られるようになっているものも含まれる。
【0012】
[0026]仮想化コンピュータアーキテクチャ100は、管理サーバ148によって管理され、それは、中央サーバ内に又は代わりとしてサーバ110の1つの内に存在して実行するコンピュータプログラムである。管理サーバ148は、サーバ110の各々と通信し、かつ、サーバ110間の負荷平衡及びストレージアレイ130間の作業負荷平衡のような仮想化コンピュータアーキテクチャ100の管理業務を実施する。
【0013】
[0027]図2A及び2Bは、1つ以上の実施態様による、サーバ110のいずれかの代表であるサーバ200及び、ストレージアレイ130のいずれかの代表であるストレージアレイ250のブロック図をそれぞれ記載する。サーバ200は、従来の、典型的にサーバ−クラスの、ハードウェアプラットホーム202上で構成されていてもよい。図2Aに示すように、サーバ200はストレージアレイ250にサーバ200を接続することを可能にするHBA204及びNIC201を含む。図2Aに更に示すように、ハイパーバイザ208がハードウェアプラットホーム202上にインストールされ、及びそれが、複数の仮想マシン(VM)212−212がその中で並行してインスタンス化されて実行されることができる仮想マシン実行空間210をサポートする。この種の各仮想マシン212−212は、アプリケーション218を実行可能なゲストオペレーティングシステム(OS)216のインストールをサポートする仮想ハードウェアプラットホーム214を実現する。ゲストOS 216の例はMicrosoft Windows(登録商標)、Linux(登録商標)等のような、周知のコモディティーオペレーティングシステムのいずれをも含む。それぞれの例において、ゲストOS 216はネイティブのファイルシステムレイヤ(図2A内に図示せず)、例えばNTFS又はext3FSタイプファイルシステムレイヤのいずれかを含む。これらのファイルシステムレイヤは、ゲストオペレーティングシステム216の観点から、データストレージHBAにアクセスするために仮想ハードウェアプラットホーム214とインタフェースするが、それは、実際はディスクストレージサポートの外観を提供する仮想ハードウェアプラットホーム214によって実現される仮想HBA220であり(実際は、複数の仮想ディスク即ち仮想ディスク222−222)、システムハードウェアの仮想化に透過的なゲストOS216の実行を可能にする。特定の実施態様において、仮想ディスク222−222は薄く供給されることができ、かつ、ゲストOS216の観点から、仮想マシンに接続するためのSCSI規格、又はIDE、ATA及びATAPIを含む、当業者に公知のその他の適切なハードウェア接続インタフェース規格をサポートするように見える。
【0014】
[0028]ゲストオペレーティングシステム216の観点から、ファイルシステム関連のデータ転送及び制御動作を実現するためにこの種のゲストオペレーティングシステム216によって開始されるファイルシステム呼出しは、最終的な実行のために仮想ディスク222−222に経路を定められるように見えるとはいえ、実際は、この種の呼出しはハイパーバイザ208による動作を調整するために必要な仮想システムサポートを実現する補助仮想マシンモニタ(VMM)レイヤ224−224に仮想HBA220を通して処理されて通される。特に、HBAエミュレータ226は、ストレージアレイ250に接続する本当のHBA204又はNIC201に、その種々のレイヤを通して最終的にこの種の動作を通すハイパーバイザ208によって、データ転送及び制御動作が正しく処理されることを機能的に可能にする。SCSIサポートされた仮想デバイス実現を想定して、(当業者が他のハードウェアインタフェース規格を用いるオプションを認識するとはいえ)、ハイパーバイザ208のSCSI仮想化レイヤ228が、VMMレイヤ224−224からデータ転送及び制御動作を(例えば、SCSI準拠仮想ディスクを意図されるSCSIコマンドの形で)受け取り、かつSCSI準拠仮想ディスクを代表するVMFS230の管理下で、ストレージアレイ250内のLUNの1つの内に格納されているファイルにアクセスするために、仮想マシンファイルシステム(VMFS)230によって理解されるファイルシステム動作に、それらを変換する。一実施態様において、代替仮想ディスクファイルフォーマットが他の実施態様で用いられてもよいことが認識されるべきであるとはいえ、仮想ディスクを代表するファイルが仮想ディスクのためのVMware社によって広められるVMware仮想ディスク(VMDK)ファイルフォーマットに適合する。
【0015】
[0029]次に、SCSI仮想化レイヤ228は、VMFS230に、これらのファイルシステム動作を発行する。VMFS230は、一般に、ストレージアレイ250によって公開されるLUN上に格納される(例えば、仮想ディスクを代表する.vmdkファイルのような)ファイルの作成、使用及び削除を管理する。一実施態様においてVMFS230として機能することができるクラスタ化されたファイルシステムの一例が、特許文献1内に記載されており、その内容全体を、本願明細書に引用したものとする。VMFS230は、SCSI仮想化レイヤ228から受け取られるファイルシステム動作をボリューム(例えばLUN)ブロック動作に変換し、かつボリュームブロック動作を論理ボリュームマネージャ232に与える。論理ボリュームマネージャ(LVM)232は、典型的にドライバとファイルシステムレイヤとの間の中間層として実現され、かつボリューム指向仮想化並びにHBA204及びNIC201を通してアクセス可能なLUNの管理をサポートする。LVM232は、LUNブロック動作に基づいてデバイスアクセスレイヤ234に生のSCSI動作を発行する。データアクセスレイヤ240は、ストレージアレイ250を発見しかつコマンド待ち行列及びスケジューリングポリシーを生のSCSI動作に適用するデバイスアクセスレイヤ234と、ストレージアレイ250とインタフェースするHBA204及びNIC201の入出力インタフェースを理解し、かつデバイスアクセスレイヤ234から、ストレージアレイ250に送り届けられるべきHBA204又はNIC201に生のSCSI動作を送るデバイスドライバ236と、を含む。
【0016】
[0030]図2A内の仮想化コンポーネントを記述するために用いられる種々の用語、レイヤ及びカテゴリ化は、本発明のそれらの機能又は趣旨若しくは有効範囲から逸脱することなく、異なって参照されてもよいと認識されるべきである。例えば、各インスタンス化されたVMに対して別々のVMMが存在するので、VMM224はVM212とハイパーバイザ208との間の別々の仮想化コンポーネントと考えてもよい(この種の概念において、それはそれ自体で仮想化「カーネル」コンポーネントと考えてもよい)。代わりに、この種のVMMが仮想マシンに対するハードウェアエミュレーションコンポーネントを含むので、各VMMはその対応する仮想マシンのコンポーネントと考えてもよい。この種の代替概念において、例えば、仮想ホストバスアダプタ220が図2Aから除去されるように(即ち、その機能がホストバスアダプタエミュレータ226によって達成されるので)、仮想ハードウェアプラットホーム214として記述される概念上のレイヤがVMM224に結合されていてもよい。
【0017】
[0031]図2Bで図示するように、ストレージアレイ250のストレージアレイマネージャ251は、そのLUNの1つに対応する生のSCSI動作を受け取り、かつその際に動作されるストレージアレイ250のスピンドル内でそれらを適切なエクステントに分割する。1台以上のプログラムされたストレージプロセッサを代表するストレージアレイマネージャ251は、一般にストレージアレイ250の(外部に対する)通信エージェントとして機能し、かつ、ストレージアレイ250内に存在する、図2B内ではスピンドル252−252と称される、物理的な、典型的にはディスクドライブベースのストレージユニットの仮想化を実現する。論理的観点から、これらのスピンドルの各々は、固定したサイズのエクステント254のシーケンシャルなアレイと考えることができる。本願明細書において先にLUN256−256(「論理装置番号」)と称された一組の仮想SCSIブロックデバイスに分割されてもよい連続した論理ストレージ空間としてディスクドライブによって与えられる集積された物理ストレージ空間を見る能力をサーバ200に公開することによって、ストレージアレイマネージャ251は、ディスクドライブの実際のスピンドル及びエクステントのアドレスに読出し及び書込み動作を向ける複雑さを取り去る。LUN256−256のこの種の連続した論理ストレージ空間へのスピンドル252−252の仮想化は、論理ボリュームのアドレス空間によって代表される集積された物理ストレージ空間のより効率的な利用を提供することができる。ストレージアレイマネージャ251は、エクステントの順序リストへのLUN256−256の各々に対するマッピング(以下に、また、エクステント−マッピングと称する)を含むメタデータ255を維持し、この種の各エクステントはスピンドル−エクステント対<spindle#、extent#>として識別可能であり、従って、種々のスピンドル252−252のいずれかの内に置かれていてもよい。
【0018】
[0032]特定の実施態様において、LUNを割り当てる時、ストレージアレイ250は「シン・プロビジョニング(thin provisioning)」と呼ばれるストレージ空間最適化法を使用することができる。LUNが「薄く(thinly)」供給される時、ストレージアレイ250によって報告されるLUNの論理サイズは、そのLUNを最初に支持する物理空間の合計より大きくてもよい。LUNの全てのコンシューマは、LUNの論理サイズを見るだけである。書込み動作が薄く供給されたLUNの以前に未割り当てのブロックに発行されるにつれて、消費された実際の物理空間の合計は増大し、ある時点で、LUNは物理空間が尽きるかもしれない。同様に、図2A内に記載されるような仮想化環境において、ストレージアレイ250のLUN上に格納される仮想ディスク222は、例えばハイパーバイザ208によって(又は特定の実施態様では管理サーバ148によって)、「薄く供給される」ように構成されていてもよい。ゲストOS216の観点から、この種の薄く供給された仮想ディスク222は固定論理サイズを有するとして認められるが、実際は、VMFS230がLUNストレージ空間を仮想ディスク222(例えば、.vmdkファイル)に動的に割り当て、そうすると、任意の所定の時間で、仮想ディスク222を支持するLUN内の実際のストレージ空間は論理サイズ未満かもしれない。
【0019】
[0033]図3は、ハイパーバイザ208の論理ブロックデバイスとして動作する、LUNの構成特性を集めるためにハイパーバイザ208によって実施される一方法を例示する流れ図である。LUNのこれらの構成特性は、LUNに「UPMAP」コマンドを発行することによって、LUNから(ストレージアレイ250のようなLUNをサポートするストレージシステムへ戻る)ストレージ空間を「再利用する(reclaim)」ために以下に記載する技法で用いられてもよい。図3で図示するように、ステップ302で、ハイパーバイザ208はLUNにSCSI読取り容量コマンド(例えば16ビット版のコマンド)を発行する。ステップ304で受け取られるLUNの応答は、ビットの設定によって示されるように、LUNがシン・プロビジョニングをサポートするか否かの表示を含む(それは、一実施態様において、シン・プロビジョニング対応(thin provisioning enabling)(TPE)ビットとして既知である)。ステップ306で、ハイパーバイザ208が、LUNがシン・プロビジョニングをサポートする(例えば、TPEビットが設定される)と判定するならば、この方法はステップ308に続く。ステップ306で、ハイパーバイザ208が、LUNがシン・プロビジョニングをサポートしない(例えば、TPEビットが設定されない)と判定するならば、この方法は終了する。
【0020】
[0034]ステップ308で、ハイパーバイザ208はシン・プロビジョニングに対するLUNのサポートを記録し、かつLUNに(例えば、一実施態様において問合せのタイプとして0xB0「Vital Product Data」コードを利用して)SCSI Inquiryコマンドを発行する。ステップ310で受け取られてかつステップ312で記録されたLUNの応答は、LUNが「UNMAP」コマンド(実施態様によってはUNMAP「ビット(bit)」によって示される)をサポートするか否かに関する指示を含み、及びサポートがあるならば、応答はさらにマップ解除コマンドと共に用いられるべきいくつかのパラメータのレポートを含む。その最も単純な形において、一実施態様において、UNMAPコマンドはLUNによってマップ解除されるべき、かつLUNをサポートする下位ストレージシステムに解放されるべきブロックのリストを特定する。そのような実施態様において報告されるパラメータは、D(LUNがデータを管理する粒度)、Doffset(LUNがマップ解除コマンドを受け取るのを好むオフセットで表現される整合パラメータ)、及びNMAX_D(単一のUNMAPコマンドで特定可能な<offset,length>対の最大数)、を含む。例えば、Doffsetが4KBの値を有するならば、その時、LUNは、4KBのアドレスの倍数(例えば、0KB、4KB、8KB、12KB、その他のアドレス)で始まる、UNMAPコマンドのような、SCSI動作を受け入れる。Dがその時512KBの値を有するならば、LUNは512KBの倍数であるブロックサイズを特定するSCSI動作を受け入れる。この種の例において、LUNはLUNの始まりから12KBのオフセットに対応するアドレスから始まる1024KBの連続ブロックをマップ解除するためにUNMAPコマンドを受け入れるが、LUNの始まりから1KB、2KB、3KB、その他のオフセットに対応するアドレスから始まる任意の連続ブロック、又は連続したブロックサイズが512KB未満であるところをマップ解除するためにUNMAPコマンドを受け入れない。値D、Doffset及びNMAX_Dが、LUNをサポートする下位ストレージシステムのストレージベンダーによって設定されるか又は規定されると認識されるべきである。
【0021】
[0035]図4は、仮想マシン212のゲストOS216の論理ブロックデバイスとして動作する、仮想ディスク222の構成特性を集めるためにゲストOS216によって実施される一方法を例示する流れ図である。認識されるはずであるように、ハイパーバイザが、図3に記載のその構成特性に対してストレージアレイ内のLUNを問い合わせるよりむしろ、図4において、仮想マシン212内のプロセス(例えばゲストOS216、又はゲストOS216その他内へロードされたSCSIデバイスドライバ内の設定ルーチン内の、空きブロックを追跡するために開発されたユーザレベルプロセス)が、その構成特性に対して仮想ディスク222(例えばそのデータがLUN内にファイルとして実際に格納されたエミュレートされたSCSIデバイス)を問い合わせるという点を除けば、図4図3と同じステップを繰り返す。仮想ディスクがハイパーバイザ208によってエミュレートされているので、ハイパーバイザ208は仮想マシン212内の問合せプロセスに応答して(仮想ディスクの代理として)仮想ディスクの構成特性を提供する。仮想ディスクのこれらの構成特性は、仮想ディスクに「UNMAP」コマンドを発行することによって仮想ディスクがファイルとして格納されるLUNへ、仮想ディスクからストレージ空間を「再利用する」ために以下に記載する技法で用いられてもよい。図4で図示するように、ステップ402で、ゲストOS216は仮想ディスクにSCSI読取り容量コマンド(例えば16ビット版のコマンド)を発行する。ステップ404で受け取られる仮想ディスクの応答は、ビットの設定(それは、一実施態様において、「シン・プロビジョニング対応(TPE)ビットとして既知である)によって示されるように、仮想ディスクがシン・プロビジョニングをサポートするか否か、の指示を含む。ステップ406で、ゲストOS216が、仮想ディスクがシン・プロビジョニングをサポートする(例えば、TPEビットが設定される)と判定するならば、この方法はステップ408に続く。ステップ406で、ゲストOS 216が、仮想ディスクがシン・プロビジョニングをサポートしない(例えば、TPEビットは設定されない)と判定するならば、この方法は終了する。
【0022】
[0036]ステップ408で、ゲストOS216はシン・プロビジョニングに対する仮想ディスクのサポートを記録し、かつ仮想ディスクに(例えば、一実施態様において問合せのタイプとして0xB0「Vital Product Data」コードを利用して)SCSI Inquiryコマンドを発行する。ステップ410で受け取られてかつステップ412で記録された仮想ディスクの応答は、仮想ディスクが「UNMAP」コマンド(実施態様によってはUNMAP「ビット」によって示される)をサポートするか否かに関する指示を含み、及びサポートがあるならば、応答はさらにUNMAPコマンドと共に用いられるべきいくつかのパラメータのレポートを含む。その最も単純な形において、一実施態様において、UNMAPコマンドは仮想ディスクによってマップ解除され、かつ仮想ディスクが格納されているLUNに解放されるべきブロックのリストを特定する。そのような実施態様において報告されるパラメータは、V(そこでハイパーバイザ208がデータを管理する粒度)、Voffset(ハイパーバイザ208がUNMAPコマンドを受け取るのを好むオフセットとして表現される整合パラメータ)、及びNMAX_V(単一マップ解除コマンドで特定可能な<offset,length>対の最大数)、を含む。仮想ディスクに対するV及びVoffsetは、LUNに対するD及びDoffsetに類似しており、従って、前述のようにD及びDoffsetに同様に用いられる。
【0023】
[0037]図5は、例えば、VMがその仮想ディスク内に格納されるファイルを削除する時の、VMによって開始されるストレージ空間再利用の一方法を例示する流れ図である。認識されるべきことは、ファイルが、連続していてもしていなくてもよい一連のファイルブロックとして、仮想ディスク(例えば、それはそれ自体でLUN内に格納されたファイルである)内に表されること、及び、図5の方法が、「ファイルセグメント」として本願明細書では呼ばれる、連続したファイルブロックの各組に対して実行されること、である。一実施態様において、図5のステップが、ゲストOS216内の削除されたファイルに関する空きファイルシステムブロックを監視してかつ識別するために開発されたユーザレベルプロセスによって実行される。例えば、この種の監視プロセスは、最近削除されたファイルに関する空きブロックを認識する際に定期的な間隔で図5の方法を実行してもよく、又は仮想ディスクからファイルの削除の際にゲストOS216によって通知されてもよい。ステップ508で、仮想ディスクによって公開された、図4のステップ410で受け取られたUNMAPビットが調べられる。このビットが設定されないならば、この方法はこの種の判定の後で終わる。ステップ508で、仮想ディスクによって公開されたUNMAPビットが設定されるならば、この方法はステップ510へ続き、そこで仮想ディスクによって公開されたオフセットに準拠する(例えば、その倍数である)オフセットで始まる削除されたファイルのファイルセグメントの長さ(又は、代わりとして、ゲストOS216によって示された多数の連続した空きファイルシステムブロックの長さ)、Voffset(この後「L1」と称するこの種のファイルセグメントの長さ)が、決定される。従って、Voffsetと自然に整合されないファイルセグメントは、このステップを実施することによってVoffsetと整合するようにされる。L1がステップ510で決定された後で、ステップ514で、L1は仮想ディスクによって公開された粒度、Vと比較される。L1<Vならば、次にステップ516で、ファイルセグメントが仮想ディスクに対するマップ解除コマンドをサポートするために十分な連続したファイルブロックを含まないと判定され、及びそのようなものとして、監視プロセスによってその後識別されることができるこの種のファイルブロックに隣接する他の空きブロックとの、可能な合体のためにファイルセグメントのファイルブロックが、記憶される(例えば、特別なデータ構造内のファイルブロックを識別する)。記憶されたファイルブロックは、そのL1がまたV未満である他のファイルセグメントから、ファイルブロックに隣接していてもよいので、ステップ516が実施される。その場合は、ファイルブロックは、仮想ディスクによって公開された粒度に固着する単一UNMAPコマンド内の可能な内包に対して合体される。しかしながら、記憶されたファイルブロックは、また、(例えば、監視プロセスによって)書込みに対して監視され、かつ、(この種のファイルブロックはUNMAPコマンドに対してもはや空いてないので)書込みがそれに対して発行されるならば、もはや記憶されない(例えば、特別なデータ構造から除去される)。ステップ510への破線の矢印によって示されるように、合体されたファイルブロックの長さ、L1はステップ510で決定される。ステップ514で、それらが条件、L1<Vを満たすかどうか見るために、L1がもう一度確認される。
【0024】
[0038]L1がV以上であるならば、UNMAPコマンドと共に用いられる<offset,length>ディスクリプタがステップ518で生成される。次いで、ステップ520で、処理すべきより多くのファイルセグメントがあるかどうかが、判定される。もしあれば、流れは、ステップ510に戻る。これ以上ないならば、1つ以上の<offset,length>ディスクリプタの列を備えたUNMAPコマンドが生成されてステップ522で仮想ディスクに送られる。ステップ518で生成されたディスクリプタの数が仮想ディスクによって公開された最大数、NMAX_Vより大きいならば、UNMAPコマンドは複数のUNMAPコマンドに分割されて別々に仮想ディスクに送られる。この方法は、ステップ522の後で終わる。
【0025】
[0039]例えば、V=1MB及びVoffset=4KBであり、ステップ510で分析されたファイルセグメントが仮想ディスクの始まりから5KBに対応するアドレスから始まって1.5MBの長さ、L1を有したならば、その時、ディスクリプタが仮想ディスクによって公開された粒度及び整合パラメータに準拠するように、UNMAPコマンドのために生成されたこのファイルセグメントに対する対応するディスクリプタは<8KB、1MB>である。即ち、ファイルセグメントのその部分がVoffset(即ち4KB)の倍数であるアドレスから始まらないので、仮想ディスクは5KBから8KBまでのファイルセグメントの初めの3KBの部分をマップ解除することができない。同様に、テール部分がファイルセグメントの第2の1MBの部分内に納まるので、仮想ディスクはファイルセグメントのテール部分(即ちおよそ最後の0.5MB)をマップすることができず、仮想ディスクは1MBの倍数でマップ解除することができるだけである。
【0026】
[0040]図6は、(例えば、図5のステップ522から受け取られる)VMからのUNMAPコマンドに応答してハイパーバイザ208によって開始されたストレージ空間再利用の一方法を例示する流れ図である。ステップ602で、ハイパーバイザ208、特にSCSI仮想化レイヤ228は、仮想ディスクの代わりにVMからUNMAPコマンドを受け取ってかつUNMAPコマンドを、連続していてもしていなくてもよい、一連のVMFSブロックに概念的に対応する、VMFSファイルオフセット及び長さに変換する。VMFSブロックはこの後空きVMFSブロックと称され、及び、空きVMFSブロックの各連続したセグメントはVMFSブロックセグメントと称される。次いで、空きVMFSブロックが割り当てられたままにしておかれるべきであるかどうか、判定がステップ604でなされる。例えば、仮想ディスクが薄く供給されなくてその代わりに予め割り当てられる時、空きVMFSブロックを割り当てられたままにしておくことがステップ604で決定される。従って、空きVMFSブロックが割り当てられたままにしておかれるべきであるならば、仮想ディスクを代表するVMFSファイルのメタデータ(即ちアイノード)が、空きVMFSブロックが、特許文献2にて説明され、その内容全体を本願明細書に引用したものであるように、「ゼロ合わせされるべき」として示されるようにアップデートされる。この方法は、ステップ605の後で終わる。他方では、空きVMFSブロックが割当てを解除されるべきであることがステップ604で決定されるならば、空きVMFSブロックは、仮想ディスクを代表するVMFSファイルから、ステップ606で割当てを解除される。論理サイズが同じのままの場合であっても、この割当て解除は(仮想ディスクに対応するVMFSファイルのアイノード内に記録されたように)仮想ディスクに割り当てられたブロックの物理サイズを減少させる。この割当て解除の一部として、VMFS 230によって管理されたビットマップデータ構造が、割当てを解除されたVMFSブロックが目下空いていることを示すようにアップデートされる。この割当て解除がLUNへ仮想ディスク(例えば薄く供給された仮想ディスク)から空きブロックを実質的に解放するので、ハイパーバイザ208によって実行されるように、それが仮想ディスク上のVMからのUNMAPコマンドの満足を代表する点に留意する必要がある。しかしながら、特定の実施態様において、仮想ディスクから戻る空きブロックをちょうど受け取った、かつ薄く供給されたLUNである、LUNがそれ自体で、(例えば、この種の空きブロックが別のLUNによって利用されることができるように)その下位ストレージアレイへこの種の空きブロックを解放することができるかどうかを、この接合点で、判定するよう更に求められてもよい。
【0027】
[0041]実施態様によっては、ハイパーバイザ208は空きVMFSブロックを再利用する(例えば、この種の空きブロックを別の仮想ディスクに割り当てる)よう求めることができる。このチェックは、ステップ608でなされる。ハイパーバイザ208が空きVMFSブロックを再利用するよう求めると判定されるならば、この方法は終わる。他方では、ハイパーバイザ208が現在時刻で空きVMFSブロックを再利用するよう求めないとステップ608で判定されるならば、空きVMFSブロックを格納するLUNによって公開されたUNMAPビットは、(例えば、この種の空きブロックが別のLUNによって利用可能なように)LUNがその下位ストレージアレイへ空きVMFSブロックを解放することが可能であるかどうか、判定するためにステップ610で調べられる。このビットが設定されないならば、この方法はこの種の判定の後で終わる。ステップ610で、LUNによって公開されるマップ解除ビットが設定されるならば、この方法はステップ612へ続き、そこで、LUNによって公開されたオフセットに準拠するオフセットから始まる1つのVMFSブロックセグメントの長さ、Doffset(この後「L2」と称する長さ)が、判定される。従って、Doffsetと自然に整合されないVMFSブロックセグメントは、このステップを実施することによってDoffsetと整合するようにされる。L2がステップ612で判定された後で、L2はLUNによって公開された粒度、Dと比較される。L2<Dならば、VMFSブロックセグメント内のVMFSブロックは、ステップ616で監視されるそれへの可能な合体及び書込みに対して記憶される(例えば、特別なデータ構造内のVMFSブロックを識別する)。記憶されたVMFSブロックが、そのL2がD未満である他のVMFSブロックセグメントからのVMFSブロックと隣接していてもよいので、ステップ616が実施される。その場合は、VMFSブロックは、LUNによって公開された粒度に固着する単一UNMAPコマンド内の可能な内包に対して合体される。しかしながら、記憶されるVMFSブロックは、書込みのために監視され、及び、書込みがそれに対して発行されるならば、もはや記憶されない(例えば、特別なデータ構造から除去される)。判定ブロック612に破線の矢印によって示されるように、それらが条件、L2<Dを満たすかどうか見るために、合体されたVMFSブロックがチェックされる。
【0028】
[0042]L2がD以上であるならば、UNMAPコマンドと共に用いられる<offset,length>ディスクリプタがステップ618で生成される。次いで、ステップ620で、処理されるべきより多くのVMFSブロックセグメントがあるかどうかが、判定される。もしあれば、フローは、ステップ612に戻る。これ以上ないならば、1つ以上の<offset,length>ディスクリプタの列を備えたUNMAPコマンドが生成されてステップ622でLUNに送られる。ステップ618で生成されたディスクリプタの数が仮想ディスクによって公開された最大数、NMAX_Dより大きいならば、UNMAPコマンドは複数のUNMAPコマンドに分割されて別々にLUNに送られる。この方法は、ステップ622の後で終わる。
【0029】
[0043]例えば、1つのVMFSブロックセグメントが<8KB、1MB>によって記述されて、並びにD=32KB及びDoffset=16KBならば、ディスクリプタがLUNによって公開された粒度及び整合パラメータに準拠するように、UNMAPコマンドはディスクリプタ<16KB、(1MB−32KB)>と共に発行される。即ち、ファイルセグメントのその部分がDoffset(即ち16KB)の倍数であるアドレスから始まらないので、LUNは8KBから16KBまでのVMFSブロックセグメントの初めの8KBの部分をマップ解除することができない。同様に、テール部分が32KBの粒度に準拠するにはあまりに小さいので、LUNはVMFSブロックセグメントのテール部分(即ち、およそ最後の24KB)をマップすることができない。
【0030】
[0044]図7は、管理サーバ148からのUNLINKコマンドに応答してハイパーバイザ208によって開始されたストレージ空間再利用の一方法を例示する流れ図である。UNLINKコマンドは、VMFS230によって維持されるファイル又はファイルの組を削除し、かつこれらのファイルに対応するVMFSブロックの割当てを解除するようにUNMAPコマンドを発行するようにハイパーバイザ208に知らせるように発行される。例えば、Storage vMotion(商標)が実施された後で、その結果、VMと関連する一組のファイル(例えば、仮想ディスクを例えば備えるか又は含む)が、ソースLUNから宛先LUNに移行され、UNLINKコマンドが、ファイルを削除し、かつ、ソースLUNから、これらのファイルに対応するVMFSブロックの割当てを解除するために管理サーバ148によって発行されてもよい。この方法はステップ702から始まり、そこで、ハイパーバイザ208がファイル又は複数ファイルのアイノードを調べることによって削除されたファイル又は削除されたファイルの組に対応するVMFSブロックセグメントを識別する。図7内に例示される残りのステップは図6の同じ番号をつけられたステップと同一であり、参照がこれらのステップに対して上述のようになされる。
【0031】
[0045]図8は、ソースホストから宛先ホストにVMをライブ移行するプロセスを開始する前に互換性チェックを実行する一方法を例示する流れ図である。薄く供給された仮想ディスクによってサポートされたVMは、好ましくは、UNMAPサポートによって薄く供給された仮想ディスクを提供することが可能でない宛先ホスト上のハイパーバイザに移行されるべきでないので、これらの互換性チェックは管理サーバ148によって実施される。これらのチェックは、ハイパーバイザのバージョンナンバをチェックすることを含む種々の方法で実行されてもよい。例えば、宛先ホスト上のハイパーバイザのバージョンナンバがシン・プロビジョニングをサポートするハイパーバイザの最も低いバージョンナンバ以上であるならば、ソースホストから宛先ホストへのライブの移行が可能にされる。ライブの移行は、そうでなければ承認されない。
【0032】
[0046]図8を参照して、ステップ802で、ライブ移行されるべきVMが、識別される。このVMが薄く供給された仮想ディスクでサポートされることが、例証のために想定される。ステップ808で、宛先ホスト上のハイパーバイザも薄く供給された仮想ディスクをサポートするかどうか見るために、チェックがなされる。一実施態様において、このチェックは上記の通りにバージョンナンバに基づいてなされる。チェックが失敗するならば、準拠したハイパーバイザを備えた宛先ホストが見いだされるまで、この方法はステップ810及び812を通してループする。準拠したハイパーバイザがないならば、この方法は終了する。準拠したハイパーバイザが見いだされるならば、VMのライブの移行がステップ820で管理サーバ148によって開始される。
【0033】
[0047]図9は、LUNが用いられた容量内の特定のしきい値に到達したと管理サーバ148に通知する一方法を例示する流れ図である。LUNにより多くの空間を供給すること、UNLINKコマンドを用いてLUNに格納された、使っていないファイルを削除すること、又はLUNから別のLUNへ作業負荷(例えばVMの仮想ディスク)を移行し、移行された作業負荷上でUNLINKコマンドを起動することが続くような、救済策を管理サーバ148が使用できるように、この通知が与えられる。ステップ902及び904は、ストレージアレイによって実施される。ステップ906は、ハイパーバイザによって実施される。
【0034】
[0048]ステップ902は、LUNのストレージ容量が特定の閾値レベルに到達したか又は超えたかどうかを、ストレージアレイが継続的に監視していることを示す。この条件が満たされると判定するならば、それはLUN IDと共にステップ904でハイパーバイザにソフトエラーメッセージを発行する。例えば、LUNがその閾値レベルを上回ることに結びつくLUNへの任意の書込み動作は、ストレージアレイにハイパーバイザに対してソフトエラーメッセージを発行させる。ステップ906で、このソフトエラーメッセージを受け取る際に、ハイパーバイザは管理サーバ148にソフトエラーメッセージを発行する。管理サーバ148が上記の救済策を使用することができるように、ソフトエラーメッセージはLUN ID及びVMFS IDを含む。
【0035】
[0049]図10は、図9のステップ906で生成されたソフトエラーメッセージを受け取る際に管理サーバ148によって善後策を実行する一方法を例示する流れ図である。ステップ1002で、管理サーバ148がソフトエラーメッセージを受け取る。次いで、ステップ1004で、管理サーバ148が、収容能力に近づいているLUNによってサポートされるVMの構成設定を調べる。本発明の実施態様によれば、VMの配備の際に特定可能な構成設定の1つが、VMをサポートするLUNが収容能力に近づいている時、どんな救済策がとられるべきであるかである。選択肢の三つが、Storage vMotion(商標)、スナップショット及びパワーオフである。1006の判定ブロックの後、Storage vMotion(商標)がこの種の設定で指定されるならば、ステップ1008が実行され、スナップショットがこの種の設定で指定されるならば、ステップ1010が実行され、及び、パワーオフがこの種の設定で指定されるならば、ステップ1012が実行される。ステップ1008で、管理サーバ148はソースLUN(即ち収容能力に近づいているLUN)と宛先LUNとの間のStorage vMotion(商標)を開始する。Storage vMotion(商標)の完了の後、UNLINKコマンドがソースLUNから移行されたファイルを削除するために用いられる。ステップ1010で、VMファイルのスナップショットが宛先LUN上に作り出され、及び、ソースLUN上のVMファイルが読取り専用にマークされる。ステップ1012で、管理サーバ148はVMをパワーオフする。
【0036】
[0050]何の救済策も使用されないか、又はそれらがあまりに遅く配備されるならば、又は救済策が配備されるにもかかわらず、書込み動作を実行する時、LUNは空間が尽きるかもしれない。この条件の下で、ハードエラーメッセージがストレージアレイによって発行される。より多くの空間がLUNに供給されるか、又はLUN内の追加的な空間が再利用されるまで、書込み動作を発行したVMが停止可能なように、このエラーメッセージはエラー条件を引き起こした書込み動作のIDを含む。エラーを引き起こしたVMだけを停止させることによって、VM分離は保たれ、及び、ストレージのために同じLUNを使用している他のVMは動作中のままであることができる。
【0037】
[0051]図11は、書込み動作を実行する間、LUNが、空間が尽きる時引き起こされるエラーを検出して処理する一方法を例示する流れ図である。ステップ1102、1104及び1106は、ストレージアレイによって実施される。ステップ1108は、ハイパーバイザによって実施される。ステップ1102で、ストレージアレイはLUN上の書込み動作を受け取って実行する。書込み動作の実行中に、判定ブロック1104で判定されるようにLUNが、空間が尽きるならば、ハードエラーメッセージがステップ1106でハイパーバイザに発行される。エラーメッセージが、エラーを引き起こした書込み動作のIDを含む。ステップ1108で、ハイパーバイザが書込み動作を発行したVMを非活性化する。通常の環境の下で、VMの非活性化はアラートメッセージが管理サーバ148に伝送されることに結びつき、及び、管理サーバ148は非活性化されたVMを再開させる前にそれに応答して救済策を実現することができる。救済策は、非活性化されたVMの仮想ディスク(又は他のVMの仮想ディスクさえ)を別のLUNに移行することを目的として、LUNにより多くの空間を供給してかつLUN内の追加的な空間を再利用し、移行された仮想ディスク上でUNLINKコマンドを起動して、特定のVMをパワーオフするか又は他のファイルを削除することが続く、ことを含む。
【0038】
[0052]図12は、本発明の1つ以上の実施態様に従うシステムソフトウェアインタフェースを有しないバージョンから有するバージョンにアップグレードされたハイパーバイザに対する論理ブロックデバイスとして動作するLUNから、ストレージ空間を遡及して再利用する一方法を例示する流れ図である。ハイパーバイザアップグレードが実施された後で、この方法が実施される。ステップ1202で、ハイパーバイザはLUN内のその空きVMFSブロックの合計サイズを決定する。ステップ1204で、ハイパーバイザはLUN内のその空きVMFSブロックの合計サイズのX%である一時ファイルを作り出す。ステップ1206で、一時ファイルが削除され、及び、ハイパーバイザが一時ファイルの全てのブロックに対してUNMAPコマンドを発行する。その結果、一時ファイルに対応するVMFSブロックがビットマップ内に空いていると示唆されるように、ハイパーバイザが全てのVMFSブロックの使用を追跡するように維持するビットマップがアップデートされる。X%パラメータが設定可能であり、かつ、100%に等しいならば、ハイパーバイザの空きVMFSブロックの全てがLUNから割当てを解除され、LUNの物理サイズをその理論上の最小値に減少させる。しかしながら、図12の方法が実施される間に、追加的な空間を必要とするLUNに、書込みがあるかもしれない。従って、経験的に決定されることができる一定量の空間が、この種の書込みを処理するように空いたまま保たれる。
【0039】
[0053]本発明の1つ以上の実施態様において、SCSI読取り容量及びSCSI問合せを含む、LUNにハイパーバイザによってかつ仮想ディスクにゲストオペレーティングシステムによって発行されるコマンド、及びハイパーバイザにストレージアレイによって発行されるエラー、例えば図9と関連して記載されているソフトエラー及び図11と関連して記載されているハードエラーは、T10 SCSIプロトコル内のコマンド及びエラーコードの組の一部である。
【0040】
[0054]1つ以上の実施態様が理解の明快さのためにいくらか詳細に本願明細書に記載されたとはいえ、特定の変更及び修正が本発明の趣旨から逸脱することなく、なされることができると認識されるべきである。
【0041】
[0055]本願明細書に記載されている種々の実施態様は、コンピュータシステムに格納されるデータを含む種々のコンピュータ実行動作を用いてもよい。例えば、これらの動作は通常物理量の物理的操作を必要とすることができ、必ずしもではないが、これらの量は電気又は磁気信号の形をとることがあり、そこで、それら又はそれらの表現は、格納される、転送される、組み合わせられる、比較されるか又はさもなければ操作されることが可能である。更に、この種の操作は、生成する、識別する、決定するか又は比較することのような、用語でしばしば参照される。本発明の1つ以上の実施態様の一部を形成する本願明細書に記載されている任意の動作が有用なマシン動作である。加えて、本発明の1つ以上の実施態様がこれらの動作を実行するためのデバイス又は装置にもまた関する。装置は特定の必要とされた目的のために特別に構成されてもよく、又は、それがコンピュータに格納されるコンピュータプログラムによって選択的に活性化されたか又は構成された汎用コンピュータであってもよい。特に、種々の汎用マシンが本願明細書の教示に従って書かれたコンピュータプログラムと共に用いられてもよく、又は、必要とされた動作を実行するためにより専門の装置を構成することがより都合がいい場合がある。
【0042】
[0056]本願明細書に記載されている種々の実施態様は、携帯デバイス、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成で実践されてもよい。
【0043】
[0057]本発明の1つ以上の実施態様が、1つ以上のコンピュータ可読の媒体内に具体化された1つ以上のコンピュータプログラムとして又は1つ以上のコンピュータプログラムモジュールとして実現されてもよい。用語コンピュータ可読の媒体は、その後にコンピュータシステムに入力可能なデータを格納することができる任意のデータストレージデバイスを指し、コンピュータ可読の媒体は、それらがコンピュータによって読み取られることを可能にする方法で、コンピュータプログラムを具体化するための任意の既存の又は後で開発される技術に基づいてもよい。コンピュータ可読の媒体の例は、ハードディスク、ネットワーク接続ストレージ(NAS)、読取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD(コンパクトディスク)、CD−ROM、CD−R又はCD−RW、DVD(デジタル多用途ディスク)、磁気テープ及び他の光及び非光データストレージデバイスを含む。コンピュータ可読のコードが格納され、かつ分散された形態で実行されるように、コンピュータ可読の媒体はまた、コンピュータシステムに連結されたネットワークを介して分散可能である。
【0044】
[0058]本発明の1つ以上の実施態様が、理解の明快さのためにいくらか詳細に記載されたとはいえ、特定の変更及び修正が本請求項の有効範囲内でなされてもよいことは明らかである。従って、記載されている実施態様は、例示的であり限定的でないとみなされるべきであり、かつ、請求項の有効範囲は本願明細書に与えられる詳細に限定されるべきでなく、しかし請求項の有効範囲及び等価物の範囲内で変更されてもよい。本請求項において、要素及び/又はステップは、請求項内に明示的に述べられない限り、動作のいかなる特定の順序も意味しない。
【0045】
[0059]種々の実施態様に従う仮想化システムは、ホストされた実施態様、ホストされない実施態様として、又は二つの区別を不鮮明にする傾向がある実施態様として実現されてもよいことが、全て構想される。さらに、種々の仮想化動作はハードウェアで完全に又は部分的に実現されてもよい。例えば、ハードウェア実現は非ディスクデータを確保するためにストレージアクセス要求の修正に対してルックアップテーブルを使用してもよい。
【0046】
[0060]多くの変形、修正、追加及び改良が、仮想化の程度に拘わらず可能である。仮想化ソフトウェアは、従って、仮想化機能を実行するホスト、コンソール又はゲストオペレーティングシステムのコンポーネントを含むことができる。複数のインスタンスが、単一インスタンスとして本願明細書に記載されているコンポーネント、動作又は構造に与えられてもよい。最後に、種々のコンポーネント、動作及びデータストアの間の境界は幾分任意であり、及び、特定の動作が特定の例証となる構成の局面で例示される。機能の他の割当てが構想されてかつ本発明(複数発明)の有効範囲内に含まれてもよい。一般に、例示的な構成で別々のコンポーネントとして提示された構造及び機能は、組み合わせられた構造又はコンポーネントとして実現されてもよい。同様に、単一コンポーネントとして提示された構造及び機能は、別々のコンポーネントとして実現されてもよい。これらの、そしてまた他の、変形、修正、追加及び改良は、添付の請求項(複数請求項)の有効範囲内に含まれてもよい。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12