JP5933716B2 - オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム - Google Patents

オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム Download PDF

Info

Publication number
JP5933716B2
JP5933716B2 JP2014527255A JP2014527255A JP5933716B2 JP 5933716 B2 JP5933716 B2 JP 5933716B2 JP 2014527255 A JP2014527255 A JP 2014527255A JP 2014527255 A JP2014527255 A JP 2014527255A JP 5933716 B2 JP5933716 B2 JP 5933716B2
Authority
JP
Japan
Prior art keywords
vvol
storage
storage system
computer system
manager
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
JP2014527255A
Other languages
English (en)
Other versions
JP2014531067A (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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2014531067A publication Critical patent/JP2014531067A/ja
Application granted granted Critical
Publication of JP5933716B2 publication Critical patent/JP5933716B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Description

コンピュータ・システムが、とりわけ大規模なデータ・センターをサポートするというコンテキストにおいて、エンタープライズ・レベルへ拡張するにつれて、基礎をなすデータ・ストレージ・システムは、ストレージ・エリア・ネットワーク(SAN)またはネットワーク・アタッチト・ストレージ(NAS)を採用する場合が多い。従来からよく理解されているように、SANまたはNASは、複数の技術的能力および機能上の利点を提供し、それらは基本的に、データ・ストレージ・デバイスの仮想化と、トランスペアレントな、フォルト・トレラントな、フェイルオーバな、およびフェイルセーフなコントロールを伴う物理的なデバイスの冗長性と、地理的に分散され複製されたストレージと、クライアント中心のコンピュータ・システム管理から切り離された集中化された監督およびストレージ構成管理とを含む。
アーキテクチャ上は、SANストレージ・システム(たとえば、ディスク・アレイなど)内のストレージ・デバイスは、典型的にはネットワーク・スイッチ(たとえば、ファイバ・チャネル・スイッチなど)に接続され、次いで、それらのネットワーク・スイッチは、ストレージ・デバイス内のデータへのアクセスを必要とするサーバまたは「ホスト」に接続される。SAN内のサーバ、スイッチ、およびストレージ・デバイスは、典型的には、ディスク・データ・ブロックのレベルでネットワークを介してデータを転送するスモール・コンピュータ・システム・インターフェース(SCSI)プロトコルを使用して通信する。対照的に、NASデバイスは、典型的には、1つまたは複数のストレージ・ドライブを内部に含み、イーサネットなどのネットワーク・プロトコルを通じてホスト(または中間スイッチ)に接続されるデバイスである。NASデバイスはまた、ストレージ・デバイスを含むことに加えて、ネットワーク・ファイル・システム(NFS)またはコモン・インターネット・ファイル・システム(CIFS)など、ネットワークベースのファイル・システムに従って自分のストレージ・デバイスを事前にフォーマットする。したがって、SANは、ディスク(LUNと呼ばれ、これについては、以降でさらに詳述する)をホストに公開し、次いでそれらのディスクは、フォーマットされてから、ホストによって利用されるファイル・システムに従ってマウントされる必要があるが、そうしたSANとは対照的に、NASデバイスのネットワークベースのファイル・システム(これは、ホストのオペレーティング・システムによってサポートされる必要がある)は、NASデバイスが、ホストのオペレーティング・システムにとってファイル・サーバとして見えるようにし、次いでホストは、そのNASデバイスを、たとえば、オペレーティング・システムによってアクセス可能なネットワーク・ドライブとして、マウントまたはマップすることができる。ストレージ・システム・ベンダーによる継続的なイノベーションおよび新製品のリリースに伴って、SANストレージ・システムとNASストレージ・システムとの間における明確な区別が薄れ続けており、実際のストレージ・システムの実施態様は、しばしば両方の特徴を呈しており、同じシステムにおいてファイルレベル・プロトコル(NAS)およびブロックレベル・プロトコル(SAN)の両方を提供しているということを認識されたい。たとえば、代替NASアーキテクチャにおいては、従来のNASデバイスではなく、NAS「ヘッド」またはNAS「ゲートウェイ」デバイスが、ホストにネットワーク接続される。そのようなNASゲートウェイ・デバイスは、自分自身ではストレージ・ドライブを含まず、外部のストレージ・デバイスが(たとえば、ファイバ・チャネル・インターフェースなどを介して)そのNASゲートウェイ・デバイスに接続されることを可能にする。そのようなNASゲートウェイ・デバイス(これは、従来のNASデバイスと同様の様式でホストによって知覚される)は、ファイルレベルのストレージ・アクセスのシンプルさを保持しながら、NASベースのストレージ・アーキテクチャのキャパシティーを(たとえば、SANによって、より伝統的にサポートされているストレージ・キャパシティー・レベルに)著しく増大させる能力を提供する。
図1Aにおいて示されているストレージ・システム30など、SCSIおよびその他のブロック・プロトコルベースのストレージ・デバイスは、1つまたは複数のプログラムされているストレージ・プロセッサに相当するストレージ・システム・マネージャ31を利用して、そのストレージ・デバイス内のストレージ・ユニットまたはドライブを集約し、それらを、一意に識別可能な番号をそれぞれ伴う1つまたは複数のLUN(Logical Unit Number)34として提示する。LUN34は、ネットワーク20(たとえば、ファイバ・チャネルなど)を介して物理ホスト・バス・アダプタ(HBA)11を通じて1つまたは複数のコンピュータ・システム10によってアクセスされる。コンピュータ・システム10内で、HBA11の上に、ストレージ・アクセス・アブストラクションが、ローレベル・デバイス・ドライバ・レイヤ12から始まってオペレーティング・システム固有のファイル・システム・レイヤ15で終わる一連のソフトウェア・レイヤを通じて特徴的に実装されている。デバイス・ドライバ・レイヤ12は、LUN34への基本的なアクセスを可能にし、典型的には、ストレージ・システムによって使用される通信プロトコル(たとえば、SCSIなど)に固有のものである。HBA11を通じて見えるLUN34のマルチパスの統合、およびその他のデータ・アクセス・コントロールおよび管理機能をサポートするために、データ・アクセス・レイヤ13が、デバイス・ドライバ・レイヤ12の上に実装されることが可能である。論理ボリューム・マネージャ14が、典型的にはデータ・アクセス・レイヤ13と従来のオペレーティング・システム・ファイル・システム・レイヤ15との間に実装され、HBA11を通じてアクセス可能なLUN34のボリューム指向の仮想化および管理をサポートする。複数のLUN34が集められて、1つの論理デバイスとしてファイル・システム・レイヤ15に提示されてファイル・システム・レイヤ15によって使用されるために論理ボリューム・マネージャ14のコントロールのもとで1つのボリュームとしてまとめて管理されることが可能である。
ストレージ・システム・マネージャ31は、ストレージ・システム30内に存在する、図1Aにおいてスピンドル32と呼ばれている、物理的な、典型的にはディスク・ドライブベースのストレージ・ユニットの仮想化を実施する。論理的な観点からは、これらのスピンドル32のそれぞれは、固定されたサイズのエクステント33のシーケンシャル・アレイと考えられることが可能である。ストレージ・システム・マネージャ31は、LUN34として知られている一組の仮想SCSIデバイスへと分けられている連続した論理ストレージ・スペースを、コンピュータ・システム10など、接続されているコンピュータ・システムに公開することによって、ディスク・ドライブの実際のスピンドルおよびエクステントのアドレスへのターゲットとなる読み取りおよび書き込みオペレーションの複雑さを取り去る。それぞれのLUNは、そのようなLUNの存在と、コンピュータ・システム10へのそのようなLUNの提示とのおかげでコンピュータ・システム10によって使用されるために割り振られるいくらかのキャパシティーを表す。ストレージ・システム・マネージャ31は、それぞれのそのようなLUNに関する、エクステントの順序付けられたリストへのマッピングを含むメタデータを保持し、そのリストにおいては、それぞれのそのようなエクステントは、スピンドル/エクステントのペア<スピンドル#,エクステント#>として識別されることが可能であり、したがって、さまざまなスピンドル32のうちのいずれかに位置特定されることが可能である。
図1Bは、ネットワーク21(たとえば、イーサネット)を介してネットワーク・インターフェース・カード(NIC)11’を経由して1つまたは複数のコンピュータ・システム10に接続される従来のNASまたはファイルレベル・ベースのストレージ・システム40のブロック図である。ストレージ・システム40は、1つまたは複数のプログラムされているストレージ・プロセッサに相当するストレージ・システム・マネージャ41を含む。ストレージ・システム・マネージャ41は、ストレージ・システム40内に存在する、図1Bにおいてスピンドル42と呼ばれている、物理的な、典型的にはディスク・ドライブベースのストレージ・ユニットの上にファイル・システム45を実装する。論理的な観点からは、これらのスピンドルのそれぞれは、固定されたサイズのエクステント43のシーケンシャル・アレイと考えられることが可能である。ファイル・システム45は、各自のマウント・ポイントを通じてアクセスされるファイル・システム・レベル・ボリューム44(以降では「FSボリューム」と呼ばれる)へと編成されることが可能であるディレクトリおよびファイルを含むネームスペースを、コンピュータ・システム10など、接続されているコンピュータ・システムに公開することによって、ディスク・ドライブの実際のスピンドルおよびエクステントのアドレスへのターゲットとなる読み取りおよび書き込みオペレーションの複雑さを取り去る。
上述のストレージ・システムにおける進歩をもってさえ、それらのストレージ・システムは、仮想化されたコンピュータ・システムの特定のニーズを満たす上で十分にスケーラブルではないということが広く認識されている。たとえば、サーバ・マシンのクラスタは、10,000個もの仮想マシン(VM:virtual machine)にサービス提供することができ、それぞれのVMは、複数の「仮想ディスク」および複数の「スナップショット」を使用し、それらはそれぞれ、たとえば、1つのファイルとして特定のLUNまたはFSボリューム上に格納されることが可能である。VMごとに2つの仮想ディスクおよび2つのスナップショットというスケール・ダウンされた推定においてさえ、VMが物理ディスクに直接接続される(すなわち、物理ディスクごとに1つの仮想ディスクまたはスナップショット)場合、ストレージ・システムがサポートするのは、合計60,000個の別々のディスクに達する。加えて、このスケールでのストレージ・デバイスおよびトポロジーの管理は困難であることがわかっている。結果として、本願明細書に援用する「Providing Multiple Concurrent Access to a File System」と題されている(特許文献1)に記載されているような、VMがさらに小さな組の物理ストレージ・エンティティー(たとえば、LUNベースのVMFSクラスタ化されたファイル・システムまたはFSボリューム)へと多重化されるデータストアというコンセプトが開発された。
LUNまたはFSボリュームを採用している従来のストレージ・システムにおいては、複数のVMからのワークロードは、典型的には、単一のLUNまたは単一のFSボリュームによってサービス提供される。結果として、1つのVMワークロードからのリソース需要が、同じLUNまたはFSボリューム上の別のVMワークロードに提供されるサービス・レベルに影響を与えることになる。したがって、待ち時間、および1秒あたりの入力/出力オペレーション(IO)、すなわちIOPS(input/output operations per second)など、ストレージに関する効率尺度は、所与のLUNまたはFSボリューム内のワークロードの数に応じて変わり、保証されることは不可能である。その結果として、LUNまたはFSボリュームを採用しているストレージ・システムに関するストレージ・ポリシーがVMごとに実行されることは不可能であり、サービス・レベル・アグリーメント(SLA)保証がVMごとに与えられることは不可能である。加えて、スナップショット、複製、暗号化、および重複排除など、ストレージ・システム・ベンダーによって提供されるデータ・サービスは、VMの仮想ディスクの粒度ではなく、LUNまたはFSボリュームの粒度で提供される。結果として、スナップショットは、ストレージ・システム・ベンダーによって提供されるデータ・サービスを使用してLUN全体またはFSボリューム全体に関して作成されることが可能であるが、LUN、または仮想ディスクが格納されているファイル・システムとは別に、VMの単一の仮想ディスクに関するスナップショットが作成されることは不可能である。
米国特許第7,849,098号明細書
1つまたは複数の実施形態が対象にしているストレージ・システムは、その中で実行されるワークロード同士を分離するように構成されており、それによって、SLA保証がワークロードごとに提供されることが可能であり、ストレージ・システムのデータ・サービスがワークロードごとに提供されることが可能であり、ストレージ・システムの抜本的な再設計は必要とされない。複数の仮想マシンに関する複数の仮想ディスクを格納するストレージ・システムにおいては、SLA保証が仮想ディスクごとに提供されることが可能であり、ストレージ・システムのデータ・サービスが仮想ディスクごとに提供されることが可能である。
本発明の複数の実施形態によれば、ストレージ・システムは、論理的なストレージ・キャパシティーの割り当て(本明細書においては、「ストレージ・コンテナ」と呼ばれる)から、ワークロードごとにストレージ・オブジェクトとしてプロビジョンされる論理ストレージ・ボリューム(本明細書においては、「仮想ボリューム」と呼ばれる)をエクスポートする。VMに関しては、そのVMの仮想ディスクおよびスナップショットのそれぞれに関して仮想ボリュームが作成されることが可能である。一実施形態においては、仮想ボリュームは、ストレージ・システムにおいて構成されているプロトコル・トラフィックに関する論理エンドポイント(「プロトコル・エンドポイント」として知られている)を通じて、SCSIおよびNFSなどの標準的なプロトコルを使用して、接続されているコンピュータ・システムによってオン・デマンドでアクセスされる。
本発明の一実施形態による、ストレージ・システム内に作成された論理ストレージ・ボリュームを、コンピュータ・システムにおいて稼働するアプリケーションによる使用のためにストレージ・システムにおいて構成されているプロトコル・エンドポイントにバインドするための方法は、論理ストレージ・ボリュームをバインドするための要求を、非IOパスを介してストレージ・システムに発行すること、その要求に応答して受信された第1および第2の識別子を格納することであって、第1および第2の識別子が、IOパスを介して論理ストレージ・ボリュームに発行されることになるIOへとエンコードされる、第1および第2の識別子を格納することを含む。第1の識別子は、プロトコル・エンドポイントを識別するものであり、第2の識別子は、論理ストレージ・ボリュームを識別するものである。
本発明の一実施形態による、入力/出力コマンド(IO)を論理ストレージ・ボリュームに発行するための方法は、ファイルに対する読み取り/書き込み要求をアプリケーションから受信すること、その読み取り/書き込み要求に対応するブロックレベルIOを生成すること、そのブロックレベルIO内に含まれているブロック・デバイス名を第1および第2の識別子に変換すること、論理ストレージ・ボリュームを識別するための第2の識別子を含むIOを、第1の識別子によって識別されたプロトコル・エンドポイントに発行することを含む。
本発明の一実施形態によるコンピュータ・システムは、内部で稼働する複数の仮想マシンを含み、それらの仮想マシンのそれぞれは、ストレージ・システムにおいて別々の論理ストレージ・ボリュームとして管理される仮想ディスクを有する。このコンピュータ・システムは、IOをストレージ・システムに発行するように構成されているハードウェア・ストレージ・インターフェースと、仮想ディスク上のファイルに対する読み取り/書き込み要求を仮想マシンから受信し、それらの読み取り/書き込み要求から、プロトコル・エンドポイント識別子およびセカンダリー・レベル識別子をそれぞれが有する第1および第2のIOを生成するように構成されている仮想化ソフトウェア・モジュールとをさらに含む。
本発明の複数の実施形態はさらに、コンピュータ・システムによって実行されたときに上述の方法のうちの1つをそのコンピュータ・システムに実行させる命令を格納している非一時的なコンピュータ可読ストレージ・メディアを含む。
ネットワークを介して1つまたは複数のコンピュータ・システムに接続されている従来のブロック・プロトコルベースのストレージ・デバイスのブロック図。 ネットワークを介して1つまたは複数のコンピュータ・システムに接続されている従来のNASデバイスのブロック図。 本発明の一実施形態による、仮想ボリュームを実装しているブロック・プロトコルベースのストレージ・システム・クラスタのブロック図。 本発明の一実施形態による、仮想ボリュームを実装しているNASベースのストレージ・システム・クラスタのブロック図。 本発明の一実施形態による、仮想ボリュームを管理するための図2Aまたは図2Bのストレージ・システム・クラスタのコンポーネントのブロック図。 ストレージ・コンテナを作成するための方法工程の流れ図。 SANベースのストレージ・システム上にホストされる仮想ボリュームを実装するように構成されているコンピュータ・システムの一実施形態のブロック図。 NASベースのストレージ・システム上にホストされる仮想ボリュームのために構成されている図5Aのコンピュータ・システムのブロック図。 SANベースのストレージ・システム上にホストされる仮想ボリュームを実装するように構成されているコンピュータ・システムの別の実施形態のブロック図。 NASベースのストレージ・システム上にホストされる仮想ボリュームのために構成されている図5Cのコンピュータ・システムのブロック図。 本発明の一実施形態による、仮想ボリュームを管理するために使用されるコンポーネントおよび通信パスを示すコンピュータ環境の簡略化されたブロック図。 図2Aまたは図2Bのストレージ・システム・クラスタに対してコンピュータ・システムを認証するための方法工程の流れ図。 一実施形態による、仮想ボリュームを作成するための方法工程の流れ図。 Aは、コンピュータ・システムにとって利用可能であるプロトコル・エンドポイントを発見するための方法工程の流れ図、Bは、コンピュータ・システムが帯域内パスを介して接続されるプロトコル・エンドポイントをストレージ・システムが発見するための方法工程の流れ図。 一実施形態による、仮想ボリューム・バインド要求を発行および実行するための方法工程の流れ図。 Aは、一実施形態による、仮想ボリュームにIOを発行するための方法工程の流れ図、Bは、一実施形態による、仮想ボリュームにIOを発行するための方法工程の流れ図。 一実施形態による、ストレージ・システムにおいてIOを実行するための方法工程の流れ図。 一実施形態による、仮想ボリューム再バインド要求を発行および実行するための方法工程の流れ図。 仮想ボリュームのライフ・サイクルの概念図。 図2Aのストレージ・システムを使用する一実施形態による、VMをプロビジョンするための方法工程の流れ図。 Aは、VMをパワー・オンするための方法工程の流れ図、Bは、VMをパワー・オフするための方法工程の流れ図。 VMのvvolのサイズを拡張するための方法工程の流れ図。 ストレージ・コンテナ同士の間においてVMのvvolを移動させるための方法工程の流れ図。 テンプレートVMからVMをクローンするための方法工程の流れ図。 別の実施形態による、VMをプロビジョンするための方法工程の流れ図。 サンプル・ストレージ能力プロファイルと、プロファイル選択工程を含む、ストレージ・コンテナを作成するための方法とを示す図。 vvolを作成して、そのvvolに関するストレージ能力プロファイルを定義するための方法工程を示す流れ図。 スナップショットを作成するための方法工程を示す流れ図。
図2Aおよび図2Bは、本発明の実施形態による、「仮想ボリューム」を実装しているストレージ・システム・クラスタのブロック図である。このストレージ・システム・クラスタは、1つまたは複数のストレージ・システム、たとえば、ストレージ・システム130および130(これらは、ディスク・アレイであることが可能であり、それぞれが、複数のデータ・ストレージ・ユニット(DSU)を有しており、それらのDSUのうちの1つは、図において141とラベル付けされている)と、本明細書に記載されている本発明の実施形態を可能にするためのストレージ・システム130のさまざまなオペレーションをコントロールするストレージ・システム・マネージャ131および132とを含む。一実施形態においては、複数のストレージ・システム130が、分散型ストレージ・システム・マネージャ135を実装することができ、分散型ストレージ・システム・マネージャ135は、ストレージ・システム・クラスタのオペレーションを、あたかもそれらが単一の論理ストレージ・システムであるかのようにコントロールする。分散型ストレージ・システム・マネージャ135の運用ドメインは、同じデータ・センター内に、または複数のデータ・センターにわたってインストールされているストレージ・システムに及ぶことができる。たとえば、そのような一実施形態においては、分散型ストレージ・システム・マネージャ135は、ストレージ・システム・マネージャ131を含むことができ、ストレージ・システム・マネージャ131は、ストレージ・システム・マネージャ132と通信する場合に「マスター」マネージャとして機能し、ストレージ・システム・マネージャ132は、「スレーブ」マネージャとして機能するが、分散型ストレージ・システム・マネージャを実装するためのさまざまな代替方法が実施されることが可能であるということを認識されたい。DSUは、物理ストレージ・ユニット、たとえば、回転ディスクまたはソリッド・ステート・ディスクなどのディスクまたはフラッシュ・ベースのストレージ・ユニットに相当する。複数の実施形態によれば、ストレージ・システム・クラスタは、本明細書においてさらに詳述するように、「仮想ボリューム」(vvol:virtual volume)を作成して、コンピュータ・システム100および100などの接続されているコンピュータ・システムに公開する。コンピュータ・システム100内で稼働するアプリケーション(たとえば、自分の仮想ディスクにアクセスするVMなど)は、図2Aの実施形態におけるSCSI、および図2Bの実施形態におけるNFSなど、標準的なプロトコルを使用して、SCSIまたはNFSプロトコル・トラフィックに関する論理エンドポイント(「プロトコル・エンドポイント」(PE)として知られており、ストレージ・システム130内で構成されている)を通じて、オン・デマンドでvvolにアクセスする。アプリケーション関連のデータ・オペレーションに関する、コンピュータ・システム100からストレージ・システム130への通信パスは、本明細書においては「帯域内」パスと呼ばれる。コンピュータ・システム100のホスト・バス・アダプタ(HBA)と、ストレージ・システム130内で構成されているPEとの間における通信パス、およびコンピュータ・システム100のネットワーク・インターフェース・カード(NIC)と、ストレージ・システム130内で構成されているPEとの間における通信パスは、帯域内パスの例である。帯域内ではなく、かつ典型的には、管理オペレーションを実行するために使用される、コンピュータ・システム100からストレージ・システム130への通信パスは、本明細書においては「帯域外」パスと呼ばれる。コンピュータ・システム100と、ストレージ・システム130との間におけるイーサネット・ネットワーク接続など、帯域外パスの例は、図6において帯域内パスとは別に示されている。簡単にするために、コンピュータ・システム100は、ストレージ・システム130に直接接続されているように示されている。しかしながら、それらのコンピュータ・システム100は、複数のパス、およびスイッチのうちの1つまたは複数を通じてストレージ・システム130に接続されることが可能であるということを理解されたい。
分散型ストレージ・システム・マネージャ135、または単一のストレージ・システム・マネージャ131もしくは132は、(たとえば、コンピュータ・システム100などの要求に応じて、)物理的なDSUの論理的な集約に相当する論理的な「ストレージ・コンテナ」からvvolを作成することができる。一般には、1つのストレージ・コンテナは、複数のストレージ・システムにわたることができ、単一のストレージ・システム・マネージャ、または分散型ストレージ・システム・マネージャによって、多くのストレージ・コンテナが作成されることが可能である。同様に、単一のストレージ・システムは、多くのストレージ・コンテナを含むことができる。図2Aおよび図2Bにおいては、分散型ストレージ・システム・マネージャ135によって作成されたストレージ・コンテナ142は、ストレージ・システム130およびストレージ・システム130にわたるものとして示されており、その一方で、ストレージ・コンテナ142およびストレージ・コンテナ142は、単一のストレージ・システム(すなわち、ストレージ・システム130およびストレージ・システム130それぞれ)の中に含まれているものとして示されている。1つのストレージ・コンテナは、複数のストレージ・システムにわたることができるため、ストレージ・システム管理者は、ストレージ・システムのいずれか1つのストレージ・キャパシティーを超えるストレージ・キャパシティーを自分の顧客にプロビジョンすることができるということを認識されたい。単一のストレージ・システム内に複数のストレージ・コンテナが作成されることが可能であるため、ストレージ・システム管理者は、単一のストレージ・システムを使用して複数の顧客にストレージをプロビジョンすることができるということをさらに認識されたい。
図2Aの実施形態においては、それぞれのvvolは、ブロック・ベースのストレージ・システムからプロビジョンされている。図2Bの実施形態においては、NASベースのストレージ・システムが、DSU141の上にファイル・システム145を実装しており、それぞれのvvolは、このファイル・システム内の1つのファイル・オブジェクトとしてコンピュータ・システム100に公開されている。加えて、以降でさらに詳細に説明するように、コンピュータ・システム100上で稼働するアプリケーションは、PEを通じたIOのためにvvolにアクセスする。たとえば、図2Aおよび図2Bにおいて破線で示されているように、vvol151およびvvol152は、PE161を介してアクセス可能であり、vvol153およびvvol155は、PE162を介してアクセス可能であり、vvol154は、PE163およびPE164を介してアクセス可能であり、vvol156は、PE165を介してアクセス可能である。ストレージ・コンテナ142内のvvol153、およびストレージ・コンテナ142内のvvol155など、複数のストレージ・コンテナからのvvolは、任意の所与の時点においてPE162などの単一のPEを介してアクセス可能とすることができるということを認識されたい。PE166などのPEは、それらのPEを介してアクセス可能であるvvolがまったくなくても、存在することができるということをさらに認識されたい。
図2Aの実施形態においては、ストレージ・システム130は、LUNをセットアップするための知られている方法を使用して、特別なタイプのLUNとしてPEを実装している。LUNと同様に、ストレージ・システム130は、WWN(World Wide Name)として知られている一意の識別子をそれぞれのPEに提供する。一実施形態においては、PEを作成する際に、ストレージ・システム130は、その特別なLUNに関するサイズを指定しない。なぜなら、本明細書に記載されているPEは、実際のデータ・コンテナではないためである。そのような一実施形態においては、ストレージ・システム130は、PE関連のLUNのサイズとしてゼロの値または非常に小さな値を割り振ることができ、それによって管理者は、以降でさらに論じるように、ストレージ・システムがLUN(たとえば、従来のデータLUNおよびPE関連のLUN)のリストを提供するように要求する場合に、PEを迅速に識別することができる。同様に、ストレージ・システム130は、PEに対するLUNに関する識別番号として、255よりも大きな数をLUNに割り振って、それらのLUNがデータLUNではないということを、人間にとってわかりやすい方法で示すことができる。PEとLUNとの間において区別を行うための別の方法として、PEビットがExtended Inquiry Data VPDページ(ページ86h)に加えられることが可能である。PEビットは、LUNがPEである場合には1に設定され、LUNが通常のデータLUNである場合には0に設定される。コンピュータ・システム100は、SCSIコマンドREPORT_LUNSを発行することによって帯域内パスを介してPEを発見することと、示されているPEビットを調べることによって、それらのPEが、本明細書に記載されている実施形態によるPEであるか、または従来のデータLUNであるかを判定することとが可能である。コンピュータ・システム100は、LUNがPEであるか、または従来のLUNであるかをさらに確認するために、LUNのサイズおよびLUNの番号のプロパティーを任意選択で検査することができる。PE関連のLUNを通常のデータLUNから区別するために上述の技術のうちの任意の技術が使用されることが可能であるということを認識されたい。一実施形態においては、PEビット技術が、PE関連のLUNを通常のデータLUNから区別するために使用される唯一の技術である。
図2Bの実施形態においては、PEは、FSボリュームに対してマウント・ポイントをセットアップするための知られている方法を使用してストレージ・システム130内に作成される。図2Bの実施形態において作成されるそれぞれのPEは、IPアドレスおよびファイル・システム・パスによって一意に識別され、それらのIPアドレスおよびファイル・システム・パスは、従来、合わせて「マウント・ポイント」とも呼ばれている。しかしながら、従来のマウント・ポイントとは異なり、それらのPEは、FSボリュームに関連付けられない。加えて、図2AのPEとは異なり、図2BのPEは、仮想ボリュームが所与のPEにバインドされていない限り、帯域内パスを介してコンピュータ・システム100によって発見可能ではない。したがって、図2BのPEは、帯域外パスを介してストレージ・システムによって報告される。
図3は、一実施形態による、仮想ボリュームを管理するための図2Aまたは図2Bのストレージ・システム・クラスタのコンポーネントのブロック図である。それらのコンポーネントは、一実施形態におけるストレージ・システム130において実行されるストレージ・システム・マネージャ131および132のソフトウェア・モジュール、または別の実施形態における分散型ストレージ・システム・マネージャ135のソフトウェア・モジュール、すなわち、入力/出力(I/O)マネージャ304、ボリューム・マネージャ306、コンテナ・マネージャ308、およびデータ・アクセス・レイヤ310を含む。本明細書における実施形態の説明においては、分散型ストレージ・システム・マネージャ135によって取られるあらゆるアクションは、実施形態に応じてストレージ・システム・マネージャ131またはストレージ・システム・マネージャ132によって取られることが可能であるということを理解されたい。
図3の例においては、分散型ストレージ・システム・マネージャ135は、3つのストレージ・コンテナSC1、SC2、およびSC3をDSU141から作成しており、DSU141のそれぞれは、P1からPnとラベル付けされているスピンドル・エクステントを有するように示されている。一般に、それぞれのストレージ・コンテナは、固定された物理サイズを有しており、DSUの特定のエクステントに関連付けられている。図3に示されている例においては、分散型ストレージ・システム・マネージャ135は、コンテナ・データベース316へのアクセスを有しており、コンテナ・データベース316は、それぞれのストレージ・コンテナに関して、そのコンテナIDと、物理的なレイアウトの情報と、何らかのメタデータとを格納している。コンテナ・データベース316は、コンテナ・マネージャ308によって管理および更新され、コンテナ・マネージャ308は、一実施形態においては、分散型ストレージ・システム・マネージャ135のコンポーネントである。コンテナIDとは、ストレージ・コンテナが作成されたときにそのストレージ・コンテナに与えられる汎用一意識別子である。物理的なレイアウトの情報は、所与のストレージ・コンテナに関連付けられているDSU141のスピンドル・エクステントから構成されており、<システムID,DSU ID,エクステント番号>の順序付けられたリストとして格納されている。メタデータ・セクションは、何らかの一般的なメタデータ、および何らかのストレージ・システム・ベンダー固有のメタデータを含むことができる。たとえば、メタデータ・セクションは、ストレージ・コンテナにアクセスすることを許可されているコンピュータ・システムまたはアプリケーションまたはユーザのIDを含むことができる。別の例として、メタデータ・セクションは、ストレージ・コンテナのどの<システムID,DSU ID,エクステント番号>のエクステントが既存のvvolに既に割り当てられているか、およびどの<システムID,DSU ID,エクステント番号>のエクステントが空いているかを示すためのアロケーション・ビットマップを含む。一実施形態においては、ストレージ・システム管理者は、別々のビジネス・ユニットに関して別々のストレージ・コンテナを作成することができ、それによって、別々のビジネス・ユニットのvvol同士は、同じストレージ・コンテナからはプロビジョンされない。vvol同士を分けるためのその他のポリシーが適用されることも可能である。たとえば、ストレージ・システム管理者は、クラウド・サービスの別々の顧客のvvol同士が別々のストレージ・コンテナからプロビジョンされるというポリシーを採用することができる。また、vvol同士が、自分たちの必要とされるサービス・レベルに従ってストレージ・コンテナからグループ化されてプロビジョンされることも可能である。加えて、ストレージ・システム管理者は、ストレージ・コンテナを作成すること、削除すること、およびその他の形で管理すること、たとえば、作成されることが可能であるストレージ・コンテナの数を定義すること、および、ストレージ・コンテナごとに設定されることが可能である最大の物理サイズを設定することなどが可能である。
また、図3の例においては、分散型ストレージ・システム・マネージャ135は、(要求を行っているコンピュータ・システム100のために)複数のvvolを、それぞれ別々のストレージ・コンテナからプロビジョンしている。一般に、vvolは、固定された物理サイズを有することができ、またはシン・プロビジョニングされることが可能であり、それぞれのvvolは、vvol IDを有しており、vvol IDとは、vvolが作成されたときにそのvvolに与えられる汎用一意識別子である。それぞれのvvolに関して、vvolデータベース314が、それぞれのvvolごとに、そのvvol IDと、そのvvolが作成されているストレージ・コンテナのコンテナIDと、そのvvolのアドレス空間を含むそのストレージ・コンテナ内の<オフセット,長さ>の値の順序付けられたリストとを格納している。vvolデータベース314は、ボリューム・マネージャ306によって管理および更新され、ボリューム・マネージャ306は、一実施形態においては、分散型ストレージ・システム・マネージャ135のコンポーネントである。一実施形態においては、vvolデータベース314は、vvolに関する少量のメタデータも格納する。このメタデータは、一組のキー/値のペアとしてvvolデータベース314内に格納され、そのvvolの存在中はいつでも帯域外パスを介してコンピュータ・システム100によって更新されることおよびクエリーされることが可能である。格納されるキー/値のペアは、3つのカテゴリーへと分かれる。第1のカテゴリーは、よく知られているキーであり、特定のキーの定義(ひいては、それらの値の解釈)は、公に利用可能である。1例は、仮想ボリューム・タイプ(たとえば、仮想マシンの実施形態においては、vvolがVMのメタデータを含むか、またはVMのデータを含むか)に対応するキーである。別の例は、App IDであり、これは、vvol内にデータを格納したアプリケーションのIDである。第2のカテゴリーは、コンピュータ・システム固有のキーであり、コンピュータ・システムまたはその管理モジュールは、特定のキーおよび値を仮想ボリュームのメタデータとして格納する。第3のカテゴリーは、ストレージ・システム・ベンダー固有のキーであり、これらによって、ストレージ・システム・ベンダーは、仮想ボリュームのメタデータに関連付けられている特定のキーを格納することができる。ストレージ・システム・ベンダーがそのメタデータに関してこのキー/値の格納を使用する1つの理由は、これらのキーのすべてが、vvolに関する帯域外チャネルを介してストレージ・システム・ベンダーのプラグインおよびその他の拡張にとって容易に利用可能であることである。キー/値のペアに関する格納オペレーションは、仮想ボリュームの作成およびその他の工程の一部であり、したがって格納オペレーションは、適度に高速になるはずである。ストレージ・システムはまた、特定のキー上で提供される値に対する厳密な一致に基づいて仮想ボリュームの検索を可能にするように構成される。
IOマネージャ304は、PEとvvolとの間における現在有効なIO接続パスを記憶する接続データベース312を保持するソフトウェア・モジュール(また、特定の実施形態においては、分散型ストレージ・システム・マネージャ135のコンポーネント)である。図3に示されている例においては、7つの現在有効なIOセッションが示されている。それぞれの有効なセッションは、関連付けられているPE IDと、セカンダリー・レベル識別子(SLLID)と、vvol IDと、このIOセッションを通じてIOを実行している別々のアプリケーションの数を示すリファレンス・カウント(RefCnt)とを有する。(たとえば、コンピュータ・システム100による要求に応じて)分散型ストレージ・システム・マネージャ135によってPEとvvolとの間における有効なIOセッションを確立する工程は、本明細書においては「バインド」工程と呼ばれる。それぞれのバインドごとに、分散型ストレージ・システム・マネージャ135は、(たとえば、IOマネージャ304を介して)接続データベース312にエントリーを加える。その後に分散型ストレージ・システム・マネージャ135によってIOセッションを取り壊す工程は、本明細書においては「アンバインド」工程と呼ばれる。それぞれのアンバインドごとに、分散型ストレージ・システム・マネージャ135は、(たとえば、IOマネージャ304を介して)IOセッションのリファレンス・カウントを1ずつデクリメントする。IOセッションのリファレンス・カウントがゼロである場合には、分散型ストレージ・システム・マネージャ135は、(たとえば、IOマネージャ304を介して)そのIO接続パスに関するエントリーを接続データベース312から削除することができる。前述したように、一実施形態においては、コンピュータ・システム100は、バインド要求およびアンバインド要求を生成して、帯域外パスを介して分散型ストレージ・システム・マネージャ135へ送信する。あるいは、コンピュータ・システム100は、アンバインド要求を生成して、オーバーローディングが存在しているエラー・パスによって帯域内パスを介して送信することができる。一実施形態においては、リファレンス・カウントが0から1に変わった場合、またはその逆の場合には、世代番号は、単調に増加する番号、またはランダムに生成された番号に変更される。別の実施形態においては、世代番号は、ランダムに生成された番号であり、接続データベース312からRefCnt列が取り除かれており、それぞれのバインドごとに、バインド要求が、既にバインドされているvvolに対してなされた場合でさえ、分散型ストレージ・システム・マネージャ135は、(たとえば、IOマネージャ304を介して)接続データベース312にエントリーを加える。
図2Aのストレージ・システム・クラスタにおいては、IOマネージャ304は、接続データベース312を使用してPEを通じて受信されたコンピュータ・システム100からのIO要求(IO)を処理する。IOがPEのうちの1つにおいて受信された場合には、IOマネージャ304は、そのIOの対象であったvvolを特定する目的で、そのIO内に含まれているPE IDおよびSLLIDを識別するために、そのIOを解析する。次いで、接続データベース314にアクセスすることによって、IOマネージャ304は、解析されたPE IDおよびSLLIDに関連付けられているvvol IDを取り出すことができる。図3および後続の図においては、簡単にするために、PE IDは、PE_A、PE_Bなどと示されている。一実施形態においては、実際のPE IDは、PEのWWNである。加えて、SLLIDは、S0001、S0002などと示されている。実際のSLLIDは、接続データベース312内の所与のPE IDに関連付けられている複数のSLLIDのうちの任意の一意の番号として、分散型ストレージ・システム・マネージャ135によって生成される。vvol IDを有する仮想ボリュームの論理アドレス空間と、DSU141の物理ロケーションとの間におけるマッピングは、vvolデータベース314を使用してボリューム・マネージャ306によって、およびコンテナ・データベース316を使用してコンテナ・マネージャ308によって実行される。DSU141の物理ロケーションが得られると、データ・アクセス・レイヤ310(一実施形態においては、やはり分散型ストレージ・システム・マネージャ135のコンポーネント)が、これらの物理ロケーション上でIOを実行する。
図2Bのストレージ・システム・クラスタにおいては、IOは、PEを通じて受信され、そのようなそれぞれのIOは、NFSハンドル(または類似のファイル・システム・ハンドル)を含み、そのNFSハンドルに対して、そのIOは発行されている。一実施形態においては、そのようなシステムのための接続データベース312は、PE IDとしてストレージ・システムのNFSインターフェースのIPアドレスを、およびSLLIDとしてファイル・システム・パスを含む。SLLIDは、ファイル・システム145内のvvolのロケーションに基づいて生成される。vvolの論理アドレス空間と、DSU141の物理ロケーションとの間におけるマッピングは、vvolデータベース314を使用してボリューム・マネージャ306によって、およびコンテナ・データベース316を使用してコンテナ・マネージャ308によって実行される。DSU141の物理ロケーションが得られると、データ・アクセス・レイヤが、これらの物理ロケーション上でIOを実行する。図2Bのストレージ・システムに関しては、コンテナ・データベース312は、所与のvvolに関してコンテナ・ロケーション・エントリー内にファイル:<オフセット,長さ>エントリーの順序付けられたリストを含むことができる(すなわち、vvolは、ファイル・システム145内に格納されている複数のファイル・セグメントから構成されることが可能である)ということを認識されたい。
一実施形態においては、接続データベース312は、揮発性メモリ内に保持され、その一方で、vvolデータベース314およびコンテナ・データベース316は、DSU141などの永続ストレージ内に保持される。その他の実施形態においては、データベース312、314、316のすべてが永続ストレージ内に保持されることが可能である。
図4は、ストレージ・コンテナを作成するための方法工程410の流れ図である。一実施形態においては、これらの工程は、ストレージ管理者のコントロールのもとで、ストレージ・システム・マネージャ131、ストレージ・システム・マネージャ132、または分散型ストレージ・システム・マネージャ135によって実行される。上述したように、ストレージ・コンテナは、物理的なDSUの論理的な集約に相当し、複数のストレージ・システムからの物理的なDSUにわたることができる。工程411において、ストレージ管理者は、(分散型ストレージ・システム・マネージャ135などを介して、)ストレージ・コンテナの物理的なキャパシティーを設定する。クラウドまたはデータ・センター内では、この物理的なキャパシティーは、たとえば、顧客によってリースされる物理ストレージの量に相当することができる。本明細書において開示されているストレージ・コンテナによって提供される柔軟性として、別々の顧客の複数のストレージ・コンテナが、1人のストレージ管理者によって同じストレージ・システムからプロビジョンされることが可能であり、また、たとえば、いずれか1つのストレージ・デバイスの物理的なキャパシティーが、顧客によって要求されているサイズを満たすのに十分ではないケースにおいて、または1つのvvolの物理ストレージ・フットプリントが、必然的に複数のストレージ・システムにわたることになる複製などのケースにおいて、単一の顧客のための1つのストレージ・コンテナが、複数のストレージ・システムからプロビジョンされることが可能である。工程412において、ストレージ管理者は、ストレージ・コンテナにアクセスするための許可レベルを設定する。マルチテナント・データ・センターにおいては、たとえば、顧客は、自分にリースされているストレージ・コンテナにアクセスすることしかできない。工程413において、分散型ストレージ・システム・マネージャ135は、ストレージ・コンテナに関する一意の識別子を生成する。次いで工程414において、分散型ストレージ・システム・マネージャ135は、(たとえば、一実施形態においては、コンテナ・マネージャ308を介して、)DSU141の空いているスピンドル・エクステントを、工程411において設定された物理的なキャパシティーを満たすのに十分な量でストレージ・コンテナに割り当てる。上述したように、いずれか1つのストレージ・システムの空きスペースが、物理的なキャパシティーを満たすのに十分ではないケースにおいては、分散型ストレージ・システム・マネージャ135は、複数のストレージ・システムからDSU141のスピンドル・エクステントを割り当てることができる。パーティションが割り当てられた後に、分散型ストレージ・システム・マネージャ135は、(たとえば、コンテナ・マネージャ308を介して、)一意のコンテナIDと、<システム番号,DSU ID,エクステント番号>の順序付けられたリストと、ストレージ・コンテナにアクセスすることを許可されているコンピュータ・システムのコンテキストIDとでコンテナ・データベース316を更新する。
本明細書に記載されている実施形態によれば、ストレージ能力プロファイル、たとえば、SLAまたはサービス品質(QoS:quality of service)は、vvolごとに(たとえば、要求を行っているコンピュータ・システム100のために)分散型ストレージ・システム・マネージャ135によって構成されることが可能である。したがって、別々のストレージ能力プロファイルを有する複数のvvolが、同じストレージ・コンテナの一部であることが可能である。一実施形態においては、システム管理者は、ストレージ・コンテナの作成時に、新たに作成されたvvolに関するデフォルトのストレージ能力プロファイル(または、複数の可能なストレージ能力プロファイル)を定義して、コンテナ・データベース316のメタデータ・セクション内に格納する。ストレージ・コンテナ内で作成されている新たなvvolに関してストレージ能力プロファイルが明示的に指定されない場合には、その新たなvvolは、そのストレージ・コンテナに関連付けられているデフォルトのストレージ能力プロファイルを引き継ぐことになる。
図5Aは、図2Aのストレージ・システム・クラスタ上にホストされる仮想ボリュームを実装するように構成されているコンピュータ・システムの一実施形態のブロック図である。コンピュータ・システム101は、従来の、典型的にはサーバクラスである、ハードウェア・プラットフォーム500上に構築されることが可能であり、ハードウェア・プラットフォーム500は、1つまたは複数の中央処理装置(CPU)501と、メモリ502と、1つまたは複数のネットワーク・インターフェース・カード(NIC)503と、1つまたは複数のホスト・バス・アダプタ(HBA)504とを含む。HBA504は、コンピュータ・システム101が、ストレージ・デバイス130内に構成されているPEを通じて仮想ボリュームにIOを発行することを可能にする。図5Aにおいてさらに示されているように、オペレーティング・システム508は、ハードウェア・プラットフォーム500の上にインストールされており、複数のアプリケーション512〜512が、オペレーティング・システム508の上で実行される。オペレーティング・システム508の例としては、よく知られているコモディティー・オペレーティング・システム、たとえばMicrosoft Windows、Linuxなどのうちの任意のものが含まれる。
本明細書に記載されている実施形態によれば、それぞれのアプリケーション512は、自分に関連付けられている1つまたは複数のvvolを有しており、アプリケーション512によるオペレーティング・システム508への「CREATE DEVICE」コールに従ってオペレーティング・システム508によって作成されたvvolのブロック・デバイス・インスタンスにIOを発行する。ブロック・デバイス名と、vvol IDとの間における関連付けは、ブロック・デバイス・データベース533内に保持される。アプリケーション512〜512からのIOは、ファイル・システム・ドライバ510によって受信され、ファイル・システム・ドライバ510は、それらのIOをブロックIOに変換し、それらのブロックIOを仮想ボリューム・デバイス・ドライバ532に提供する。その一方で、アプリケーション512からのIOは、ファイル・システム・ドライバ510を迂回するように示されており、仮想ボリューム・デバイス・ドライバ532に直接提供され、これが意味するのは、アプリケーション512が、自分のブロック・デバイスに直接、ロー・ストレージ・デバイス(raw storage device)として、たとえば、データベース・ディスク、ログ・ディスク、バックアップ・アーカイブ、およびコンテンツ・リポジトリとして、「Providing Access to a Raw Data Storage Unit in a Computer System」と題されている米国特許第7,155,558号(その全内容を本願明細書に援用する)に記載されている様式でアクセスするということである。仮想ボリューム・デバイス・ドライバ532は、ブロックIOを受信した場合には、ブロック・デバイス・データベース533にアクセスして、そのIO内で指定されているブロック・デバイス名と、そのブロック・デバイス名に関連付けられているvvolへのIO接続パスを定義するPE ID(PE LUNのWWN)およびSLLIDとの間におけるマッピングを参照する。ここで示されている例においては、「archive」というブロック・デバイス名は、アプリケーション512に関して作成されたvvol12のブロック・デバイス・インスタンスに対応しており、「foo」、「dbase」、および「log」というブロック・デバイス名は、アプリケーション512〜512のうちの1つまたは複数に関してそれぞれ作成されたvvol1、vvol16、およびvvol17のブロック・デバイス・インスタンスに対応する。ブロック・デバイス・データベース533内に格納されているその他の情報としては、ブロック・デバイスがアクティブであるか否かを示すそれぞれのブロック・デバイスに関するアクティブ・ビット値と、CIF(commands−in−flight:処理中コマンド)値とが含まれる。「1」というアクティブ・ビットは、IOがブロック・デバイスに発行されることが可能であるということを意味する。「0」というアクティブ・ビットは、ブロック・デバイスが非アクティブであり、IOがブロック・デバイスに発行されることは不可能であるということを意味する。CIF値は、いくつのIOが処理中であるか、すなわち、発行されたが完了されていないかの表示を提供する。ここで示されている例においては、「foo」というブロック・デバイスは、アクティブであり、いくつかの処理中コマンドを有している。「archive」というブロック・デバイスは、非アクティブであり、さらに新しいコマンドを受け入れないであろう。しかしながら、このブロック・デバイスは、2つの処理中コマンドが完了するのを待っている。「dbase」というブロック・デバイスは、非アクティブであり、未処理のコマンドはない。最後に、「log」というブロック・デバイスは、アクティブであるが、アプリケーションは現在、このデバイスに対する未処理のIOを有していない。仮想ボリューム・デバイス・ドライバ532は、いつでも自分のデータベース533からこれらのようなデバイスを除去することを選択することができる。
上述のマッピングを実行することに加えて、仮想ボリューム・デバイス・ドライバ532は、データ・アクセス・レイヤ540にロー・ブロックレベルIO(raw block level IO)を発行する。データ・アクセス・レイヤ540は、コマンド・キューイングおよびスケジューリング・ポリシーをロー・ブロックレベルIOに適用するデバイス・アクセス・レイヤ534と、プロトコルに準拠したフォーマットでロー・ブロックレベルIOをフォーマットして、それらのロー・ブロックレベルIOを、帯域内パスを介してPEへ転送するためにHBA504に送信する、HBA504のためのデバイス・ドライバ536とを含む。SCSIプロトコルが使用される実施形態においては、vvol情報は、SAM−5(SCSI Architecture Model−5)において指定されているように、SCSI LUNデータ・フィールド(これは、8バイト構造である)内にエンコードされる。PE IDは、最初の2バイト(これは、従来はLUN ID用に使用されている)内にエンコードされ、vvol情報、とりわけSLLIDは、残っている6バイト(の一部)を利用して、SCSIセカンド・レベルLUN ID内にエンコードされる。
図5Aにおいてさらに示されているように、データ・アクセス・レイヤ540はまた、ストレージ・システムから帯域内パスを通じて受信されるIOエラーを取り扱うためのエラー・ハンドリング・ユニット542を含む。一実施形態においては、エラー・ハンドリング・ユニット542によって受信されたIOエラーは、I/Oマネージャ304によってPEを通じて伝搬される。IOエラー・クラスの例としては、コンピュータ・システム101とPEとの間におけるパス・エラーと、PEエラーと、vvolエラーとが含まれる。エラー・ハンドリング・ユニット542は、検知されたすべてのエラーを上述のクラスへと分類する。PEへのパス・エラーに出くわし、PEへの別のパスが存在する場合には、データ・アクセス・レイヤ540は、PEへの別のパスに沿ってIOを送信する。IOエラーがPEエラーである場合には、エラー・ハンドリング・ユニット542は、PEを通じてIOを発行しているそれぞれのブロック・デバイスに関するエラー状況を示すために、ブロック・デバイス・データベース533を更新する。IOエラーがvvolエラーである場合には、エラー・ハンドリング・ユニット542は、vvolに関連付けられているそれぞれのブロック・デバイスに関するエラー状況を示すために、ブロック・デバイス・データベース533を更新する。エラー・ハンドリング・ユニット542は、アラームまたはシステム・イベントを発行することもでき、それによって、エラー状況を有するブロック・デバイスへのさらなるIOは、拒否されることになる。
図5Bは、図2Aのストレージ・システム・クラスタの代わりに図2Bのストレージ・システム・クラスタとインターフェースを取るように構成されている図5Aのコンピュータ・システムのブロック図である。この実施形態においては、データ・アクセス・レイヤ540は、NFSクライアント545と、NIC503のためのデバイス・ドライバ546とを含む。NFSクライアント545は、ブロック・デバイス名を、PE ID(NASストレージ・システムのIPアドレス)と、ブロック・デバイスに対応するNFSファイル・ハンドルであるSLLIDとにマップする。このマッピングは、図5Bにおいて示されているように、ブロック・デバイス・データベース533内に格納される。「アクティブ」および「CIF」の列は、依然として存在するが、図5Bに示されているブロック・デバイス・データベース533においては示されていないということに留意されたい。以降で説明するように、NFSファイル・ハンドルは、NASストレージ・システム内のファイル・オブジェクトを一意に識別し、バインド工程中に生成されることが可能である。あるいは、vvolをバインドしたいという要求に応答して、NASストレージ・システムは、PE IDおよびSLLIDを返し、通常の帯域内メカニズム(たとえば、ルックアップまたはreaddirplus)を使用してvvolが開かれると、NFSファイル・ハンドルが与えられることになる。NFSクライアント545はまた、仮想ボリューム・デバイス・ドライバ532から受信されたロー・ブロックレベルIOをNFSファイルベースのIOに変換する。次いで、NIC503のためのデバイス・ドライバ546は、プロトコルに準拠したフォーマットでNFSファイルベースのIOをフォーマットして、それらのNFSファイルベースのIOを、帯域内パスを介してPEのうちの1つへ転送するために、NFSハンドルとともに、NIC503へ送信する。
図5Cは、仮想ボリュームを実装するように構成されているコンピュータ・システムの別の実施形態のブロック図である。この実施形態においては、コンピュータ・システム102は、仮想化ソフトウェア(ここでは、ハイパーバイザ560として示されている)を伴って構成されている。ハイパーバイザ560は、ハードウェア・プラットフォーム550の上にインストールされており、ハードウェア・プラットフォーム550は、CPU551、メモリ552、NIC553、およびHBA554を含み、仮想マシン実行スペース570をサポートし、仮想マシン実行スペース570内では、複数の仮想マシン(VM)571〜571が、同時にインスタンス化されて実行されることが可能である。1つまたは複数の実施形態においては、ハイパーバイザ560および仮想マシン571は、ヴイエムウェア・インコーポレイティッド社(VMware, Inc.)[米国カリフォルニア州パロアルト(Palo Alto)所在]によって販売されているVMware vSphere(登録商標)製品を使用して実装される。それぞれの仮想マシン571は、仮想ハードウェア・プラットフォーム573を実装しており、仮想ハードウェア・プラットフォーム573は、アプリケーション579を実行することができるゲスト・オペレーティング・システム(OS)572のインストレーションをサポートする。ゲストOS572の例としては、よく知られているコモディティー・オペレーティング・システム、たとえばMicrosoft Windows、Linuxなどのうちの任意のものが含まれる。それぞれのインスタンスにおいて、ゲストOS572は、ネイティブ・ファイル・システム・レイヤ(図5Cにおいては示されていない)、たとえば、NTFSまたはext3FSタイプのファイル・システム・レイヤのいずれかを含む。これらのファイル・システム・レイヤは、仮想ハードウェア・プラットフォーム573とインターフェースを取って、ゲストOS572の視点からは、データ・ストレージHBAにアクセスするが、このデータ・ストレージHBAは、実際には、ゲストOS572の実行を可能にするためにディスク・ストレージ・サポートの外見(実際には、仮想ディスク、すなわち仮想ディスク575〜575)を提供する仮想ハードウェア・プラットフォーム573によって実装されている仮想HBA574である。特定の実施形態においては、仮想ディスク575〜575は、ゲストOS572の視点からは、仮想マシンに接続するためのSCSI標準、または、IDE、ATA、およびATAPIを含む、当技術分野における標準的な技術者に知られているその他の任意の適切なハードウェア接続インターフェース標準をサポートするように見えることが可能である。ゲストOS572の視点からは、ファイル・システム関連のデータ転送およびコントロール・オペレーションを実施するためにそのようなゲストOS572によって開始されたファイル・システム・コールは、最終的な実行のために仮想ディスク575〜575へ回送されるように見えるが、実際には、そのようなコールは、処理され、仮想HBA574を通じて補助的な仮想マシン・モニタ(VMM)561〜561に渡され、VMM561〜561は、ハイパーバイザ560とのオペレーションを調整するために必要とされる仮想システム・サポートを実施する。とりわけ、HBAエミュレータ562は、データ転送およびコントロール・オペレーションがハイパーバイザ560によって正しく取り扱われることを機能的に可能にし、ハイパーバイザ560は最終的に、そのようなオペレーションを、自分のさまざまなレイヤを通じて、ストレージ・システム130へ接続しているHBA554に渡す。
本明細書に記載されている実施形態によれば、それぞれのVM571は、自分に関連付けられている1つまたは複数のvvolを有しており、VM571によるハイパーバイザ560への「CREATE DEVICE」コールに従ってハイパーバイザ560によって作成されたvvolのブロック・デバイス・インスタンスにIOを発行する。ブロック・デバイス名と、vvol IDとの間における関連付けは、ブロック・デバイス・データベース580内に保持される。VM571〜571からのIOは、SCSI仮想化レイヤ563によって受信され、SCSI仮想化レイヤ563は、それらのIOを、仮想マシン・ファイル・システム(VMFS)ドライバ564によって理解されるファイルIOへと変換する。次いで、VMFSドライバ564は、それらのファイルIOをブロックIOに変換し、それらのブロックIOを仮想ボリューム・デバイス・ドライバ565に提供する。その一方で、VM571からのIOは、VMFSドライバ564を迂回するように示されており、仮想ボリューム・デバイス・ドライバ565に直接提供され、これが意味するのは、VM571が、自分のブロック・デバイスに直接、ロー・ストレージ・デバイスとして、たとえば、データベース・ディスク、ログ・ディスク、バックアップ・アーカイブ、およびコンテンツ・リポジトリとして、米国特許第7,155,558号に記載されている様式でアクセスするということである。
仮想ボリューム・デバイス・ドライバ565は、ブロックIOを受信した場合には、ブロック・デバイス・データベース580にアクセスして、そのIO内で指定されているブロック・デバイス名と、そのブロック・デバイス名に関連付けられているvvolへのIOセッションを定義するPE IDおよびSLLIDとの間におけるマッピングを参照する。ここで示されている例においては、「dbase」および「log」というブロック・デバイス名は、VM571に関してそれぞれ作成されたvvol1およびvvol4のブロック・デバイス・インスタンスに対応しており、「vmdk2」、「vmdkn」および「snapn」というブロック・デバイス名は、VM571〜571のうちの1つまたは複数に関してそれぞれ作成されたvvol12、vvol16、およびvvol17のブロック・デバイス・インスタンスに対応する。ブロック・デバイス・データベース580内に格納されているその他の情報としては、ブロック・デバイスがアクティブであるか否かを示すそれぞれのブロック・デバイスに関するアクティブ・ビット値と、CIF(commands−in−flight:処理中コマンド)値とが含まれる。「1」というアクティブ・ビットは、IOがブロック・デバイスに発行されることが可能であるということを意味する。「0」というアクティブ・ビットは、ブロック・デバイスが非アクティブであり、IOがブロック・デバイスに発行されることは不可能であるということを意味する。CIF値は、いくつのIOが処理中であるか、すなわち、発行されたが完了されていないかの表示を提供する。
上述のマッピングを実行することに加えて、仮想ボリューム・デバイス・ドライバ565は、データ・アクセス・レイヤ566にロー・ブロックレベルIOを発行する。データ・アクセス・レイヤ566は、コマンド・キューイングおよびスケジューリング・ポリシーをロー・ブロックレベルIOに適用するデバイス・アクセス・レイヤ567と、プロトコルに準拠したフォーマットでロー・ブロックレベルIOをフォーマットして、それらのロー・ブロックレベルIOを、帯域内パスを介してPEへ転送するためにHBA554に送信する、HBA554のためのデバイス・ドライバ568とを含む。SCSIプロトコルが使用される実施形態においては、vvol情報は、SAM−5(SCSI Architecture Model−5)において指定されているように、SCSI LUNデータ・フィールド(これは、8バイト構造である)内にエンコードされる。PE IDは、最初の2バイト(これは、従来はLUN ID用に使用されている)内にエンコードされ、vvol情報、とりわけSLLIDは、残っている6バイト(の一部)を利用して、SCSIセカンド・レベルLUN ID内にエンコードされる。図5Cにおいてさらに示されているように、データ・アクセス・レイヤ566はまた、エラー・ハンドリング・ユニット569を含み、エラー・ハンドリング・ユニット569は、エラー・ハンドリング・ユニット542と同じ様式で機能する。
図5Dは、図2Aのストレージ・システム・クラスタの代わりに図2Bのストレージ・システム・クラスタとインターフェースを取るように構成されている図5Cのコンピュータ・システムのブロック図である。この実施形態においては、データ・アクセス・レイヤ566は、NFSクライアント585と、NIC553のためのデバイス・ドライバ586とを含む。NFSクライアント585は、ブロック・デバイス名を、PE ID(IPアドレス)と、ブロック・デバイスに対応するSLLID(NFSファイル・ハンドル)とにマップする。このマッピングは、図5Dにおいて示されているように、ブロック・デバイス・データベース580内に格納される。「アクティブ」および「CIF」の列は、依然として存在するが、図5Dに示されているブロック・デバイス・データベース580においては示されていないということに留意されたい。以降で説明するように、NFSファイル・ハンドルは、NFS内のファイル・オブジェクトを一意に識別し、一実施形態においてはバインド工程中に生成される。NFSクライアント585はまた、仮想ボリューム・デバイス・ドライバ565から受信されたロー・ブロックレベルIOをNFSファイルベースのIOに変換する。次いで、NIC553のためのデバイス・ドライバ586は、プロトコルに準拠したフォーマットでNFSファイルベースのIOをフォーマットして、それらのNFSファイルベースのIOを、帯域内パスを介してPEのうちの1つへ転送するために、NFSハンドルとともに、NIC553へ送信する。
図5A〜図5Dにおけるコンポーネントを説明するために使用されているさまざまな用語、レイヤ、および分類は、それらの機能、または本発明の趣旨もしくは範囲から逸脱することなく、別の形で参照されることが可能であるということを認識されたい。たとえば、VMM561は、VM571とハイパーバイザ560との間における別個の仮想化コンポーネントとみなされることが可能である(ハイパーバイザ560は、そのような概念においては、それ自体が仮想化「カーネル」コンポーネントとみなされることが可能である)。なぜなら、それぞれのインスタンス化されたVMごとに別々のVMMが存在するためである。あるいは、それぞれのVMM561は、そのVMM561の対応する仮想マシンのコンポーネントであるとみなされることが可能である。なぜなら、そのようなVMMは、その仮想マシンに関するハードウェア・エミュレーション・コンポーネントを含むためである。そのような代替概念においては、たとえば、仮想ハードウェア・プラットフォーム573として記載されている概念レイヤは、VMM561と、およびVMM561内へ合併されることが可能であり、それによって、仮想ホスト・バス・アダプタ574は、図5Cおよび図5Dから除去される(すなわち、その仮想ホスト・バス・アダプタ574の機能は、ホスト・バス・アダプタ・エミュレータ562によって実施されるためである)。
図6は、本発明の一実施形態による、vvolを管理するために使用されるコンポーネントおよび通信パスを示すコンピュータ環境の簡略化されたブロック図である。前述したように、IOプロトコル・トラフィックのための通信パスは、帯域内パスと呼ばれ、図6においては破線601として示されており、破線601は、コンピュータ・システムのデータ・アクセス・レイヤ540を(コンピュータ・システムにおいて提供されているHBAまたはNICを通じて)、ストレージ・システム130において構成されている1つまたは複数のPEと接続している。vvolを管理するために使用される通信パスは、帯域外パス(前に定義したように、「帯域内」ではないパス)であり、図6においては実線602として示されている。本明細書に記載されている実施形態によれば、vvolは、管理サーバ610において提供されているプラグイン612、および/またはコンピュータ・システム103のそれぞれにおいて提供されているプラグイン622を通じて管理されることが可能であり、図6においては、コンピュータ・システム103のうちの1つのみが示されている。ストレージ・デバイス側では、管理インターフェース625が、ストレージ・システム・マネージャ131によって構成されており、管理インターフェース626が、ストレージ・システム・マネージャ132によって構成されている。加えて、管理インターフェース624が、分散型ストレージ・システム・マネージャ135によって構成されている。それぞれの管理インターフェースは、プラグイン612、622と通信する。管理コマンドの発行および取り扱いを容易にするために、特別なアプリケーション・プログラミング・インターフェース(API)が開発されている。一実施形態においては、プラグイン612、622の両方が、特定のストレージ・システム・ベンダーからのストレージ・ハードウェアと通信するようにカスタマイズされているということを認識されたい。したがって、管理サーバ610およびコンピュータ・システム103は、別々のストレージ・システム・ベンダーに関するストレージ・ハードウェアと通信する場合には、別々のプラグインを採用することになる。別の実施形態においては、任意のベンダーの管理インターフェースと対話する単一のプラグインが存在することができる。これは、ストレージ・システム・マネージャが、(たとえば、コンピュータ・システムおよび/または管理サーバによって発行されているという理由で、)よく知られているインターフェースに合わせてプログラムされることを必要とすることになる。
管理サーバ610はさらに、コンピュータ・システムを管理するためのシステム・マネージャ611を伴って構成されている。一実施形態においては、コンピュータ・システムは、仮想マシンを実行しており、システム・マネージャ611は、コンピュータ・システムにおいて稼働している仮想マシンを管理する。仮想マシンを管理するシステム・マネージャ611の1例は、ヴイエムウェア・インコーポレイティッド社(VMware, Inc.)によって販売されているvSphere(登録商標)製品である。示されているように、システム・マネージャ611は、コンピュータ・システム103からリソース使用レポートを受信するために、およびコンピュータ・システム103において稼働しているアプリケーション上でさまざまな管理オペレーションを開始するために、(管理サーバ610およびコンピュータ・システム103の両方において適切なハードウェア・インターフェースを通じて、)コンピュータ・システム103において稼働しているホスト・デーモン(hostd)621と通信する。
図7は、認証関連のAPIを使用して図2Aまたは図2Bのストレージ・システム・クラスタに対してコンピュータ・システムを認証するための方法工程の流れ図である。これらの方法工程は、コンピュータ・システムが自分のセキュア・ソケット・レイヤ(SSL)証明書をストレージ・システムに送信することによって認証を要求したときに、開始される。工程710において、ストレージ・システムは、認証クレデンシャル(たとえば、ユーザ名およびパスワード)を求めるプロンプトを、認証を要求しているコンピュータ・システムに発行する。工程712において認証クレデンシャルを受信すると、ストレージ・システムは、工程714において、それらの認証クレデンシャルを、格納されているクレデンシャルと比較する。正しいクレデンシャルが提供された場合には、ストレージ・システムは、認証されたコンピュータ・システムのSSL証明書をキー・ストア内に格納する(工程716)。正しくないクレデンシャルが提供された場合には、ストレージ・システムは、SSL証明書を無視して、適切なエラー・メッセージを返す(工程718)。認証された後に、コンピュータ・システムは、SSLリンクを介してストレージ・システムに管理コマンドを発行するためにAPIを呼び出すことができ、また、SSL証明書内に含まれている一意のコンテキストIDが、どのコンピュータ・システムがどのストレージ・コンテナにアクセスすることができるかを定義することなどの特定のポリシーを実施するために、ストレージ・システムによって使用される。いくつかの実施形態においては、コンピュータ・システムのコンテキストIDが、それらのコンピュータ・システムに与えられた許可を管理する際に使用されることが可能である。たとえば、ホスト・コンピュータは、vvolを作成することを許可されることが可能であるが、そのvvolを削除すること、もしくはそのvvolをスナップショットすることを許可されないことが可能であり、またはホスト・コンピュータは、vvolのスナップショットを作成することを許可されることが可能であるが、そのvvolをクローンすることを許可されないことが可能である。加えて、許可は、認証されたコンピュータ・システムにログインされるユーザのユーザレベル特権に従って変わることが可能である。
図8は、仮想ボリューム作成APIコマンドを使用して仮想ボリュームを作成するための方法工程の流れ図である。一実施形態においては、コンピュータ・システム103は、最小IOPSおよび平均待ち時間など、特定のサイズおよびストレージ能力プロファイルを有するvvolを作成したいという要求を自分のアプリケーションのうちの1つから工程802において受信した場合には、帯域外パス602を介してストレージ・システムに仮想ボリューム作成APIコマンドを発行する。それに応じて、コンピュータ・システム103は、工程804において、1つのストレージ・コンテナを(コンピュータ・システム103および要求を行っているアプリケーションがアクセスすることを許可されていて、かつ要求に対応するのに十分な空きキャパシティーを有するストレージ・コンテナの中から)選択し、プラグイン622を介してストレージ・システムに仮想ボリューム作成APIコマンドを発行する。このAPIコマンドは、ストレージ・コンテナIDと、vvolサイズと、vvolのストレージ能力プロファイルとを含む。別の実施形態においては、このAPIコマンドは、一組のキー/値のペアを含み、アプリケーションは、ストレージ・システムが、その一組のキー/値のペアを、新たに作成されたvvolとともに格納することを必要とする。別の実施形態においては、管理サーバ610は、帯域外パス602を介してストレージ・システムに仮想ボリューム作成APIコマンドを(プラグイン612を介して)発行する。
工程806において、ストレージ・システム・マネージャは、管理インターフェース(たとえば、管理インターフェース624、625、または626)を介して、vvolを生成したいという要求を受信し、コンテナ・データベース316内の選択されたストレージ・コンテナのメタデータ・セクションにアクセスして、コンピュータ・システム103とアプリケーションとを含む要求コンテキストが、その選択されたストレージ・コンテナ内にvvolを作成するのに十分な許可を有していることを確かめる。一実施形態においては、許可レベルが十分でない場合には、エラー・メッセージがコンピュータ・システム103に返される。許可レベルが十分である場合には、工程810において、一意のvvol IDが生成される。次いで工程812において、ストレージ・システム・マネージャは、コンテナ・データベース316のメタデータ・セクション内のアロケーション・ビットマップをスキャンして、選択されたストレージ・コンテナの空いているパーティションを特定する。ストレージ・システム・マネージャは、選択されたストレージ・コンテナの空いているパーティションを、要求されているvvolサイズに対応するのに十分なだけ割り当て、コンテナ・データベース316のストレージ・コンテナのメタデータ・セクション内のアロケーション・ビットマップを更新する。ストレージ・システム・マネージャはまた、新たなvvolエントリーでvvolデータベース314を更新する。新たなvvolエントリーは、工程810において生成されたvvol IDと、新たに割り当てられたストレージ・コンテナ・エクステントの順序付けられたリストと、キー/値のペアとして表されている新たなvvolのメタデータとを含む。次いで工程814において、ストレージ・システム・マネージャは、vvol IDをコンピュータ・システム103へ送信する。工程816において、コンピュータ・システム103は、vvol IDを、vvolの作成を要求したアプリケーションに関連付ける。一実施形態においては、それぞれのアプリケーションに関して、1つまたは複数のvvol記述子ファイルが保持され、vvolの作成を要求したアプリケーションに関して保持されているvvol記述子ファイル内にvvol IDが書き込まれる。
図2Aおよび図2Bにおいて示されているように、すべてのvvolがPEに接続されているわけではない。PEに接続されていないvvolは、対応するアプリケーションによって発行されたIOに気づかない。なぜなら、そのvvolにはIOセッションが確立されていないためである。IOがvvolに発行されることが可能になる前に、そのvvolはバインド工程を経て、その結果として、そのvvolは特定のPEにバインドされることになる。vvolがPEにバインドされると、そのvvolがそのPEからアンバインドされるまで、IOがそのvvolに発行されることが可能である。
一実施形態においては、バインド要求は、コンピュータ・システム103によって、バインド仮想ボリュームAPIを使用して、帯域外パス602を介してストレージ・システムに発行される。バインド要求は、(vvol IDを使用して、)バインドされることになるvvolを識別し、それに応じてストレージ・システムは、そのvvolを、コンピュータ・システム103が帯域内パスを介して接続されるPEにバインドする。図9Aは、コンピュータ・システムが帯域内パスを介して接続されるPEをそのコンピュータ・システムが発見するための方法工程の流れ図である。SCSIプロトコルベースのストレージ・デバイスにおいて構成されているPEは、標準的なSCSIコマンド、REPORT_LUNSを使用して、帯域内パスを介して発見される。NFSプロトコルベースのストレージ・デバイスにおいて構成されているPEは、APIを使用して、帯域外パスを介して発見される。図9Aの方法工程は、コンピュータ・システムによって、それぞれの接続されているストレージ・システムごとに実行される。
工程910において、コンピュータ・システムは、接続されているストレージ・システムがSCSIプロトコルベースであるか、またはNFSプロトコルベースであるかを判定する。ストレージ・システムがSCSIプロトコルベースである場合には、SCSIコマンド、REPORT_LUNSが、帯域内のコンピュータ・システムによってストレージ・システムに発行される(工程912)。次いで工程913において、コンピュータ・システムは、ストレージ・システムからの応答、とりわけ、返されるPE IDのそれぞれに関連付けられているPEビットを調べて、PE関連のLUNと、従来のデータLUNとの間における区別を行う。ストレージ・システムがNFSプロトコルベースである場合には、利用可能なPEのIDを得るために、APIコールが、帯域外のコンピュータ・システムによって、プラグイン622から管理インターフェース(たとえば、管理インターフェース624、625、または626)に発行される(工程914)。工程913および914の後に続く工程916において、コンピュータ・システムは、ストレージ・システムによって返されたPE関連のLUNのPE ID、または管理インターフェースによって返されたPE IDを、バインド工程中に使用するために格納する。SCSIプロトコルベースのストレージ・デバイスによって返されたPE IDはそれぞれ、WWNを含み、NFSプロトコルベースのストレージ・デバイスによって返されたPE IDはそれぞれ、IPアドレスおよびマウント・ポイントを含むということを認識されたい。
図9Bは、所与のコンピュータ・システム103が帯域内パスを介して接続されるPEを、ストレージ・システム・マネージャ131、またはストレージ・システム・マネージャ132、または分散型ストレージ・システム・マネージャ135(以降では、「ストレージ・システム・マネージャ」と呼ばれる)が発見するための方法工程の流れ図である。そのようなPEをストレージ・システム・マネージャによって発見することにより、ストレージ・システムは、コンピュータ・システムからのバインド要求に応答して、要求を行っているコンピュータ・システムに、有効なPE IDを返すことができ、コンピュータ・システムは、そのPE ID上に実際に接続されることが可能である。工程950において、ストレージ・システム・マネージャは、管理インターフェースおよびプラグイン622を介してコンピュータ・システム103に帯域外の「Discover_Topology」APIコールを発行する。コンピュータ・システム103は、自分のシステムIDと、図9Aの流れ図を介して自分が発見したすべてのPE IDのリストとを返す。一実施形態においては、ストレージ・システム・マネージャは、管理インターフェースおよびプラグイン612を介して管理サーバ610に「Discover_Topology」APIコールを発行することによって、工程950を実行する。そのような一実施形態においては、ストレージ・システムは、複数のコンピュータ・システムIDと、関連付けられているPE IDとを含む応答を、管理サーバ610が管理するそれぞれのコンピュータ・システム103ごとに1つ受信することになる。次いで工程952において、ストレージ・システム・マネージャは、工程950からの結果を処理する。たとえば、ストレージ・システム・マネージャは、自分の現在のコントロール下にないすべてのPE IDのリストを消去する。たとえば、Discover_Topologyコールを発行しているときにストレージ・システム・マネージャ135によって受信される特定のPE IDは、同じコンピュータ・システムに接続されている別のストレージ・システムに対応している可能性がある。同様に、受信される特定のPE IDは、その後にストレージ・システム管理者によって削除されたさらに古いPEに対応している可能性がある、といった具合である。工程954において、ストレージ・システム・マネージャは、処理された結果を、その後のバインド要求中に使用するためにキャッシュする。一実施形態においては、ストレージ・システム・マネージャは、図9Bの工程を定期的に実行して、コンピュータ・システムおよびネットワーク・トポロジーの進行中の変化で自分のキャッシュされた結果を更新する。別の実施形態においては、ストレージ・システム・マネージャは、新たなvvol作成要求を受信するたびに、図9Bの工程を実行する。さらに別の実施形態においては、ストレージ・システム・マネージャは、図7の認証工程を実行した後に、図9Bの工程を実行する。
図10は、バインド仮想ボリュームAPIを使用して仮想ボリューム・バインド要求を発行および実行するための方法工程の流れ図である。一実施形態においては、コンピュータ・システム103は、自分のアプリケーションのうちの1つが、まだPEにバインドされていないvvolに関連付けられているブロック・デバイスへのIOアクセスを要求した場合には、帯域外パス602を介してストレージ・システムにバインド要求を発行する。別の実施形態においては、管理サーバ610は、VMのパワー・オン、および1つのストレージ・コンテナから別のストレージ・コンテナへのvvolの移行を含む特定のVM管理オペレーションに関連したバインド要求を発行する。
まだPEにバインドされていないvvolに関連付けられているブロック・デバイスへのIOアクセスをアプリケーションが要求している上述の例について続けると、コンピュータ・システム103は、工程1002において、ブロック・デバイス・データベース533(または580)から、そのvvolのvvol IDを特定する。次いで工程1004において、コンピュータ・システム103は、そのvvolをバインドしたいという要求を、帯域外パス602を通じてストレージ・システムに発行する。
ストレージ・システム・マネージャは、工程1006において、管理インターフェース(たとえば、管理インターフェース624、625、または626)を介して、vvolをバインドしたいという要求を受信し、次いで、vvolがバインドされることになるPEを選択すること、選択されたPEに関するSLLIDおよび世代番号を生成すること、ならびに(たとえば、IOマネージャ304を介して)接続データベース312を更新することを含む工程1008を実行する。vvolがバインドされることになるPEの選択は、接続(すなわち、コンピュータ・システム103への既存の帯域内接続を有するPEのみが、選択に利用可能である)と、利用可能なPEを通る現在のIOトラフィックなどのその他の要因とに従って行われる。一実施形態においては、ストレージ・システムは、図9Bの方法に従ってコンピュータ・システム103がそのストレージ・システムに送信したPEの処理されてキャッシュされたリストから選択を行う。SLLIDの生成は、図2Aのストレージ・システム・クラスタを採用している実施形態と、図2Bのストレージ・システム・クラスタを採用している実施形態との間において異なる。前者のケースにおいては、選択されたPEに関して一意であるSLLIDが生成される。後者のケースにおいては、vvolに対応するファイル・オブジェクトへのファイル・パスが、SLLIDとして生成される。選択されたPEに関してSLLIDおよび世代番号が生成された後に、接続データベース312は、vvolに対する新たに生成されたIOセッションを含むように更新される。次いで工程1010において、選択されたPEのID、生成されたSLLID、および世代番号が、コンピュータ・システム103に返される。任意選択で、図2Bのストレージ・システム・クラスタを採用している実施形態においては、一意のNFSファイル・ハンドルが、vvolに対応するファイル・オブジェクトに関して生成され、選択されたPEのID、生成されたSLLID、および世代番号とともにコンピュータ・システム103に返されることが可能である。工程1012において、コンピュータ・システム103は、ストレージ・システムから返されたPE ID、SLLID(および任意選択で、NFSハンドル)、および世代番号を含めるようにブロック・デバイス・データベース533(または580)を更新する。とりわけ、ストレージ・システムから返されたPE ID、SLLID(および任意選択で、NFSハンドル)、および各組の世代番号は、新たなエントリーとしてブロック・デバイス・データベース533(または580)に加えられることになる。世代番号は、リプレイ攻撃を防ぐために使用されるということを認識されたい。したがって、リプレイ攻撃が懸念されない実施形態においては、世代番号は使用されない。
同じvvolにIOを発行したいと望む別のアプリケーションによって開始された同じvvolへのその後のバインド要求に対して、ストレージ・システム・マネージャは、そのvvolを同じまたは別のPEにバインドすることができる。そのvvolが同じPEにバインドされる場合には、ストレージ・システム・マネージャは、その同じPEのIDと、以前に生成されたSLLIDとを返し、接続データベース312内に格納されているこのIO接続パスのリファレンス・カウントをインクリメントする。その一方で、そのvvolが別のPEにバインドされる場合には、ストレージ・システム・マネージャは、新たなSLLIDを生成し、その別のPEのIDと、新たに生成されたSLLIDとを返し、そのvvolへのこの新たなIO接続パスを新たなエントリーとして接続データベース312に加える。
アンバインド仮想ボリュームAPIを使用して、仮想ボリューム・アンバインド要求が発行されることが可能である。アンバインド要求は、vvolがそれまでにバインドされた際に経由したIO接続パスのPE IDおよびSLLIDを含む。しかしながら、アンバインド要求の処理は、助言的なものである。ストレージ・システム・マネージャが、すぐに、または遅れてvvolをPEからアンバインドするのは自由である。アンバインド要求は、PE IDおよびSLLIDを含むエントリーのリファレンス・カウントをデクリメントするように接続データベース312を更新することによって、処理される。リファレンス・カウントがゼロまでデクリメントされた場合には、そのエントリーは、削除されることが可能である。このケースにおいては、そのvvolは、引き続き存在するが、その所与のPE IDおよびSLLIDを使用したIOにそれ以上利用することはできないということに留意されたい。
VMの仮想ディスクを実装しているvvolのケースにおいては、このvvolに関するリファレンス・カウントは、少なくとも1となる。VMがパワー・オフされ、それに関連してアンバインド要求が発行された場合には、リファレンス・カウントは、1だけデクリメントされることになる。リファレンス・カウントがゼロである場合には、vvolエントリーは、接続データベース312から除去されることが可能である。一般に、エントリーを接続データベース312から除去することは有益である。なぜなら、I/Oマネージャ304は、より少ないデータを管理し、SLLIDを再利用することもできるためである。そのような利点は、ストレージ・システムによって格納されているvvolの総数が多い(たとえば、数百万個程度のvvol)が、アプリケーションによってアクティブにアクセスされているvvolの総数が少ない(たとえば、数万個のVM)場合に、顕著になる。加えて、vvolがいずれのPEにもバインドされていない場合には、ストレージ・システムは、そのvvolをDSU141内のどこに格納するかを選択する際に、より大きな柔軟性を有する。たとえば、ストレージ・システムは、いくつかのDSU141が、より高速なデータ・アクセスを提供し、その他のDSU141が、(たとえば、ストレージ・コストを節約するために)より低速なデータ・アクセスを提供する、非対称的な、階層的なDSU141を伴って実装されることが可能である。1実施態様においては、vvolがいずれのPEにもバインドされていない場合には(これは、接続データベース312内のそのvvolのエントリーのリファレンス・カウントをチェックすることによって判定されることが可能である)、ストレージ・システムは、そのvvolを、より低速なおよび/またはより安価なタイプの物理ストレージに移行させることができる。次いで、そのvvolがPEにバインドされると、ストレージ・システムは、そのvvolを、より高速なタイプの物理ストレージに移行させることができる。そのような移行は、vvolデータベース314内の所与のvvolを構成するコンテナ・ロケーションの順序付けられたリストの1つまたは複数の要素を変更すること、およびコンテナ・データベース316のメタデータ・セクション内の対応するエクステント・アロケーション・ビットマップを更新することによって達成されることが可能であるということを認識されたい。
vvolをPEにバインドすることおよびアンバインドすることによって、ストレージ・システム・マネージャは、vvolの活性を決定することができる。ストレージ・システム・マネージャは、この情報を利用して、IOサービスを提供しない(パッシブな)vvolおよびIOサービスを提供する(アクティブな)vvolに関してストレージ・システム・ベンダー固有の最適化を実行することができる。たとえば、ストレージ・システム・マネージャは、vvolが、特定のしきい値の時間を超えてパッシブな状態にとどまっている場合には、そのvvolを、待ち時間が少ない(高いコストの)SSDから、待ち時間が中程度の(低いコストの)ハード・ドライブへ移動させるように構成されることが可能である。
図11Aおよび図11Bは、一実施形態による、仮想ボリュームにIOを発行するための方法工程の流れ図である。図11Aは、アプリケーションからのIOを直接ロー・ブロック・デバイスに発行するための方法工程1100の流れ図であり、図11Bは、アプリケーションからのIOを、ファイル・システム・ドライバを通じて発行するための方法工程1120の流れ図である。
方法1100は、工程1102において開始し、工程1102では、図5A〜図5Bにおいて示されているアプリケーション512、または図5C〜図5Dにおいて示されているVM571などのアプリケーションが、ロー・ブロック・デバイスにIOを発行する。工程1104において、仮想ボリューム・デバイス・ドライバ532または565が、アプリケーションによって発行されたIOからロー・ブロックレベルIOを生成する。工程1106において、ロー・ブロック・デバイスの名前が、仮想ボリューム・デバイス・ドライバ532または565によってPE IDおよびSLLIDに(そしてまた、図2Bのストレージ・デバイスを採用している実施形態においては、NFSクライアント545または585によってNFSハンドルに)変換される。工程1108において、データ・アクセス・レイヤ540または566が、PE IDおよびSLLIDを(そしてまた、図2Bのストレージ・デバイスを採用している実施形態においては、NFSハンドルを)ロー・ブロックレベルIOへとエンコードすることを実行する。次いで工程1110において、HBA/NICが、ロー・ブロックレベルIOを発行する。
図5A〜図5Bにおいて示されているアプリケーション512など、VM以外のアプリケーションに関しては、方法1120は、工程1121において開始する。工程1121においては、アプリケーションが、vvolベースのブロック・デバイス上に格納されているファイルにIOを発行する。次いで工程1122において、ファイル・システム・ドライバ、たとえばファイル・システム・ドライバ510が、ファイルIOからブロックレベルIOを生成する。工程1122の後には、工程1126、1128、および1130(これらは、工程1106、1108、および1110と同じである)が実行される。
図5C〜図5Dにおいて示されているVM571など、VMアプリケーションに関しては、方法1120は、工程1123において開始する。工程1123においては、VMが、自分の仮想ディスクにIOを発行する。次いで工程1124において、このIOは、たとえばSCSI仮想化レイヤ563によって、ファイルIOに変換される。次いで、ファイル・システム・ドライバ、たとえばVMFSドライバ564が、工程1125において、ファイルIOからブロックレベルIOを生成する。工程1125の後には、工程1126、1128、および1130(これらは、工程1106、1108、および1110と同じである)が実行される。
図12は、一実施形態による、ストレージ・システムにおいてIOを実行するための方法工程の流れ図である。工程1210において、コンピュータ・システムによって発行されたIOが、ストレージ・システムにおいて構成されているPEのうちの1つを通じて受信される。そのIOは、工程1212においてIOマネージャ304によって解析される。工程1212の後には、ストレージ・システム・クラスタが、図2Aにおいて示されているタイプのものである場合には、IOマネージャ304によって工程1214aが実行され、ストレージ・システム・クラスタが、図2Bにおいて示されているタイプのものである場合には、IOマネージャ304によって工程1214bが実行される。工程1214aにおいては、IOマネージャ304は、解析されたIOからSLLIDを抽出し、接続データベース312にアクセスして、PE IDと、抽出されたSLLIDとに対応するvvol IDを特定する。工程1214bにおいては、IOマネージャ304は、解析されたIOからNFSハンドルを抽出し、PE IDと、SLLIDとしてのNFSハンドルとを使用して、vvolを識別する。工程1214aおよび1214bの後には、工程1216が実行される。工程1216においては、IOが実行されることになる物理ストレージ・ロケーションを得るために、vvolデータベース314およびコンテナ・データベース316が、それぞれボリューム・マネージャ306およびコンテナ・マネージャ308によってアクセスされる。次いで工程1218において、データ・アクセス・レイヤ310が、工程1216において得られた物理ストレージ・ロケーション上でIOを実行する。
いくつかの状況においては、アプリケーション(アプリケーション512またはVM571)、管理サーバ610、および/またはストレージ・システム・マネージャは、特定のPEに対するあるvvolのバインディングが、問題(そのPEが、あまりにも多くのバインディングでオーバーロード状態になっている場合など)を経験していると判定する場合がある。そのような問題を解決するための方法として、バインドされているvvolは、IOコマンドがそのvvolへ導かれている間でさえ、ストレージ・システム・マネージャによって別のPEに再バインドされることが可能である。図13は、再バインドAPIを使用した、一実施形態による、vvol再バインド要求を発行および実行するための方法工程1300の流れ図である。
示されているように、方法1300は、工程1302において開始し、工程1302では、ストレージ・システム・マネージャは、vvolが、そのvvolが現在バインドされている第1のPEとは異なる第2のPEにバインドされるべきであると判定する。工程1304において、ストレージ・システム・マネージャは、vvolを再バインドしたいという要求を、vvolにIOを発行するアプリケーションを実行しているコンピュータ・システム(たとえば、コンピュータ・システム103)に、帯域外パスを介して発行する。工程1306において、コンピュータ・システム103は、ストレージ・システム・マネージャから再バインド要求を受信し、それに応じて、vvolを新たなPEにバインドしたいという要求を発行する。工程1308において、ストレージ・システム・マネージャは、再バインド要求を受信し、それに応じて、vvolを新たなPEにバインドする。工程1310において、ストレージ・システム・マネージャは、図10に関連して上述したように、vvolが現在やはりバインドされている新たなPEのIDと、vvolにアクセスするためのSLLIDとをコンピュータ・システムに送信する。
工程1312において、コンピュータ・システムは、ストレージ・システム・マネージャから新たなPE IDおよびSLLIDを受信する。ブロック・デバイス・データベース533または580において、新たなPE接続のアクティブ・ビットが、はじめは1に設定され、これが意味するのは、新たなPEを介したvvolのための新たなIOセッションが確立されたということである。コンピュータ・システムはまた、第1のPE接続のアクティブ・ビットを0に設定し、これが意味するのは、このPE接続を通じてそのvvolにそれ以上IOが発行されることは不可能であるということである。認識されたいこととして、このPE接続は、非アクティブ化された際にすぐにアンバインドされるべきではない。なぜなら、処理中である、すなわち、発行されたが完了されていない可能性がある、このPE接続を通じたそのvvolへのIOが存在する可能性があるためである。したがって、工程1314において、コンピュータ・システムは、ブロック・デバイス・データベース533または580にアクセスして、第1のPE接続を通じてそのvvolに発行されたすべての「処理中コマンド」(CIF)が完了されているか、すなわち、CIF=0であるかを確かめる。コンピュータ・システムは、工程1318を実行する前に、CIFがゼロになるのを待つ。その間に、そのvvolへのさらなるIOが、新たなPEを通じて発行される。なぜなら、新たなPE接続のアクティブ・ビットが既に1に設定されているためである。CIFがゼロに達しない場合には、工程1318が実行され、工程1318では、第1のPE接続をアンバインドしたいという要求が、ストレージ・システム・マネージャに発行される。次いで工程1320において、ストレージ・システム・マネージャは、そのvvolを第1のPEからアンバインドする。また、コンピュータ・システムは、工程1324において、新たなPEを通じてそのvvolにさらなるIOをすべて発行する。
図14は、一実施形態による、仮想ボリュームのライフ・サイクルの概念図である。図14において示されているすべてのコマンド、すなわち、作成、スナップショット、クローン、バインド、アンバインド、拡張、および削除は、vvol管理コマンド・セットを形成しており、図6に関連して上述したプラグイン612、622を通じてアクセス可能である。示されているように、「vvolを作成する」、「vvolをスナップショットする」、または「vvolをクローンする」というコマンドのうちのいずれかの結果としてvvolが生成された場合には、その生成されたvvolは、「パッシブな」状態にとどまり、パッシブな状態では、そのvvolは、特定のPEにバインドされておらず、したがってIOを受信することはできない。加えて、vvolがパッシブな状態にあるときに、「vvolをスナップショットする」、「vvolをクローンする」、または「vvolを拡張する」というコマンドのうちのいずれかが実行された場合には、オリジナルのvvolおよび(もしあれば)新たに作成されたvvolは、パッシブな状態にとどまる。やはり示されているように、パッシブな状態にあるvvolがPEにバインドされた場合には、そのvvolは、「アクティブな」状態に入る。逆に、アクティブなvvolがPEからアンバインドされた場合には、そのvvolがいずれのさらなるPEにもバインドされていないと仮定すると、そのvvolは、パッシブな状態に入る。vvolがアクティブな状態にあるときに、「vvolをスナップショットする」、「vvolをクローンする」、「vvolを拡張する」、または「vvolを再バインドする」というコマンドのうちのいずれかが実行された場合には、オリジナルのvvolは、アクティブな状態にとどまり、(もしあれば)新たに作成されたvvolは、パッシブな状態にとどまる。
上述したように、1つのVMは、複数の仮想ディスクを有することができ、それぞれの仮想ディスクごとに別々のvvolが作成される。VMはまた、そのVMの構成について記述するメタデータ・ファイルを有する。それらのメタデータ・ファイルとしては、VM構成ファイル、VMログ・ファイル、ディスク記述子ファイル、すなわち、VMのための仮想ディスクのそれぞれに関するファイル、VMスワップ・ファイルなどが含まれる。仮想ディスクに関するディスク記述子ファイルは、仮想ディスクに関連する情報、たとえば、その仮想ディスクのvvol ID、その仮想ディスクのサイズ、その仮想ディスクがシン・プロビジョニングされているかどうか、および、その仮想ディスクに関して作成された1つまたは複数のスナップショットのIDなどを含む。VMスワップ・ファイルは、ストレージ・システム上におけるVMのスワップ・スペースを提供する。一実施形態においては、これらのVM構成ファイルは、vvol内に格納され、このvvolは、本明細書においてはメタデータvvolと呼ばれる。
図15は、一実施形態による、VMをプロビジョンするための方法工程の流れ図である。この実施形態においては、管理サーバ610と、VMをホストしているコンピュータ・システム、たとえば、図5Cにおいて示されているコンピュータ・システム102(以降では、「ホスト・コンピュータ」と呼ばれる)と、図2Aのストレージ・システム・クラスタ、とりわけストレージ・システム・マネージャ131、132、または135とが使用される。示されているように、ストレージ・システム・マネージャは、工程1502において、VMをプロビジョンしたいという要求を受信する。これは、VM管理者が、管理サーバ610への適切なユーザ・インターフェースを使用して、特定のサイズおよびストレージ能力プロファイルを有するVMをプロビジョンするためのコマンドを管理サーバ610に発行するときに生成される要求であることが可能である。それに応じて、工程1504において、管理サーバ610は、図8に関連して上述した様式で、VMのメタデータを含めるためのvvol(以降では、「メタデータvvol」と呼ばれる)を作成するための方法を開始し、それに従ってストレージ・システム・マネージャは、工程1508において、メタデータvvolを作成し、そのメタデータvvolのvvol IDを管理サーバ610に返す。工程1514において、管理サーバ610は、VMをホストしているコンピュータ・システムへ戻るメタデータvvolのvvol IDを登録する。工程1516において、ホスト・コンピュータは、図10に関連して上述した様式で、メタデータvvolをPEにバインドするための方法を開始し、それに従ってストレージ・システム・マネージャは、工程1518において、メタデータvvolをPEにバインドし、PE IDおよびSLLIDをホスト・コンピュータに返す。
工程1522において、ホスト・コンピュータは、ホスト・コンピュータのオペレーティング・システムへの「CREATE DEVICE」コールを使用して、メタデータvvolのブロック・デバイス・インスタンスを作成する。次いで工程1524において、ホスト・コンピュータは、ブロック・デバイスの上にファイル・システム(たとえば、VMFS)を作成し、それに応答して、ファイル・システムID(FSID)が返される。ホスト・コンピュータは、工程1526において、返されたFSIDを有するファイル・システムをマウントし、VMのメタデータを、そのファイル・システムに関連付けられているネームスペース内に格納する。メタデータの例としては、VMログ・ファイル、ディスク記述子ファイル、すなわち、VMのための仮想ディスクのそれぞれに関するファイル、およびVMスワップ・ファイルが含まれる。
工程1528において、ホスト・コンピュータは、図8に関連して上述した様式で、VMの仮想ディスクのそれぞれに関するvvol(そのようなそれぞれのvvolは、本明細書においては「データvvol」と呼ばれる)を作成するための方法を開始し、それに従ってストレージ・システム・マネージャは、工程1530において、データvvolを作成し、そのデータvvolのvvol IDをホスト・コンピュータに返す。工程1532において、ホスト・コンピュータは、データvvolのIDを、仮想ディスクに関するディスク記述子ファイル内に格納する。この方法は、VMの仮想ディスクのうちのすべてに関してデータvvolが作成された後にメタデータvvolがアンバインドされること(図示せず)に伴って、終了する。
図16Aは、図15に関連して説明した様式でVMがプロビジョンされた後にVMをパワー・オンするための方法工程の流れ図である。図16Bは、VMがパワー・オンされた後にVMをパワー・オフするための方法工程の流れ図である。これらの2つの方法は、VMのためのホスト・コンピュータによって実行される。
工程1608においてVMパワー・オン・コマンドを受信すると、そのVMに対応するメタデータvvolのIDが、工程1610において取り出される。次いで工程1612において、メタデータvvolは、図10に関連して上述したようなバインド工程を経る。工程1614において、ファイル・システムがメタデータvvol上にマウントされ、それによって、工程1616において、データvvolに関するメタデータ・ファイル、とりわけディスク記述子ファイルを読み取ることができ、データvvol IDを得ることができる。次いで工程1618において、データvvolは、図10に関連して上述したように、1つずつバインド工程を経る。
工程1620においてVMパワー・オフ・コマンドを受信すると、そのVMのデータvvolが、ブロック・デバイス・データベース(たとえば、図5Cのブロック・デバイス・データベース580)において非アクティブとしてマークされ、ホスト・コンピュータは、それらのデータvvolのそれぞれに関連付けられているCIFがゼロに達するのを待つ(工程1622)。それぞれのデータvvolに関連付けられているCIFがゼロに達した際に、ホスト・コンピュータは、工程1624において、そのデータvvolをアンバインドするようストレージ・システムに要求する。すべてのデータvvolに関連付けられているCIFがゼロに達した後に、工程1626において、メタデータvvolが、ブロック・デバイス・データベースにおいて非アクティブとしてマークされる。次いで工程1628において、メタデータvvolに関連付けられているCIFがゼロに達したときに、ホスト・コンピュータは、工程1630において、メタデータvvolがアンバインドされるよう要求する。
図17および図18は、VMを再プロビジョンするための方法工程の流れ図である。ここで示されている例においては、図17は、VMのvvol、とりわけVMの仮想ディスクに関するデータvvolのサイズを拡張するための、ホスト・コンピュータ上で実行される方法工程の流れ図であり、図18は、ストレージ・コンテナ同士の間においてVMのvvolを移動させるための、ストレージ・システムにおいて実行される方法工程の流れ図である。
VMの仮想ディスクに関するデータvvolのサイズを拡張するための方法が、工程1708において開始し、工程1708では、ホスト・コンピュータが、VMがパワー・オンされているかどうかを判定する。ホスト・コンピュータは、工程1708において、VMがパワー・オンされていないと判定した場合には、工程1710において、そのVMに対応するメタデータvvolのIDを取り出す。次いで工程1712において、メタデータvvolに関するバインド工程が、ホスト・コンピュータによって開始される。バインドの後に、工程1714において、ホスト・コンピュータが、ファイル・システムをメタデータvvol上にマウントし、仮想ディスクに対応するデータvvolのIDを、仮想ディスクに関するディスク記述子ファイル(これは、メタデータvvol上にマウントされたファイル・システム内のファイルである)から取り出す。次いで工程1716において、ホスト・コンピュータは、拡張vvol APIコールを工程1716においてストレージ・システムへ送信し、その拡張vvol APIコールは、データvvolのIDと、データvvolの新たなサイズとを含む。
VMがパワー・オンされている場合には、ホスト・コンピュータは、工程1715において、拡張されることになるVMの仮想ディスクのデータvvolのIDを取り出す。図16Aの方法から認識されたいこととして、このIDは、VMの仮想ディスクに関連付けられているディスク記述子ファイルから入手されることが可能である。次いで工程1716において、ホスト・コンピュータは、拡張vvol APIコールを工程1716においてストレージ・システムへ送信し、その拡張vvol APIコールは、データvvolのIDと、データvvolの新たなサイズとを含む。
拡張vvol APIコールの結果、vvolデータベースおよびコンテナ・データベース(たとえば、図3のvvolデータベース314およびコンテナ・データベース316)は、vvolの増大されたアドレス空間を反映するようにストレージ・システムにおいて更新される。拡張vvol APIコールが完了したという肯定応答を受信すると、ホスト・コンピュータは、工程1718において、VMの仮想ディスクに関するディスク記述子ファイルを新たなサイズで更新する。次いで工程1720において、ホスト・コンピュータは、VMがパワー・オンされているかどうかを判定する。VMがパワー・オンされていない場合には、ホスト・コンピュータは、工程1722において、ファイル・システムをアンマウントし、メタデータvvolをアンバインドしたいという要求をストレージ・システムへ送信する。その一方で、VMがパワー・オンされている場合には、この方法は終了する。
現在PEにバインドされているVMのvvolをソース・ストレージ・コンテナから宛先ストレージ・コンテナへ移動させるための方法(この場合、ソース・ストレージ・コンテナおよび宛先ストレージ・コンテナの両方が、同じストレージ・システム・マネージャの範囲内にある)が、工程1810において開始し、工程1810では、ソース・ストレージ・コンテナおよび宛先ストレージ・コンテナ(それぞれ、SC1およびSC2)のコンテナIDと、移動されることになるvvolのvvol IDとが受信される。次いで工程1812において、vvolデータベース(たとえば、図3のvvolデータベース314)、およびコンテナ・データベース(たとえば、図3のコンテナ・データベース316)のエクステント・アロケーション・ビットマップが、下記のように更新される。はじめに、ストレージ・システム・マネージャが、SC1内のvvolエクステントをコンテナ・データベース316内のSC1のエントリーから除去し、次いで、コンテナ・データベース316内のSC2のエントリーを修正することによって、これらのエクステントをSC2に割り振る。一実施形態においては、ストレージ・システムは、SC1における(vvolストレージ・エクステントの除去に起因する)ストレージ・キャパシティーの喪失を、新たなスピンドル・エクステントをSC1に割り振ることによって補うこと、およびSC2における(vvolストレージ・エクステントの追加に起因する)ストレージ・キャパシティーの増大を、いくつかの使用されていないスピンドル・エクステントをSC2から除去することによって調整することが可能である。工程1814において、ストレージ・システム・マネージャは、現在バインドされているPEがvvolの新たなロケーションにIOを最適にサービス提供することができるかどうかを判定する。現在のPEがvvolの新たなロケーションにIOをサービス提供することができない場合の1例は、ストレージ管理者が、ストレージ・システム・マネージャを、別々のPEを別々の顧客ひいては別々のストレージ・コンテナからのvvolに割り振るように静的に構成している場合である。現在のPEがvvolにIOをサービス提供することができない場合には、vvolは、工程1815において、図13に関連して上述した再バインド工程(および接続データベース、たとえば、図3の接続データベース312に対する関連する変更)を経る。工程1815の後には、工程1816が実行され、工程1816では、移動が首尾よく完了した旨の肯定応答が、ホスト・コンピュータに返される。工程1814において、現在のPEがvvolの新たなロケーションにIOをサービス提供することができるとストレージ・システム・マネージャが判定した場合には、工程1815は迂回され、次いで工程1816が実行される。
互換性がないストレージ・コンテナ同士の間において、たとえば、別々の製造業者のストレージ・デバイス内に作成されたストレージ・コンテナ同士の間においてvvolが移動される場合には、コンテナ・データベース316、vvolデータベース314、および接続データベース312に対する変更に加えて、ストレージ・コンテナ同士の間においてデータの移動が実行される。一実施形態においては、2008年5月29日に出願された「Offloading Storage Operations to Storage Hardware」と題されている米国特許出願第12/129,323号(その全内容を本願明細書に援用する)に記載されているデータ移動技術が採用される。
図19は、テンプレートVMからVMをクローンするための、ホスト・コンピュータおよびストレージ・システムにおいて実行される方法工程の流れ図である。この方法は、工程1908において開始し、工程1908では、ホスト・コンピュータが、新たなVMに関するメタデータvvolを作成したいという要求をストレージ・システムへ送信する。1910において、ストレージ・システムは、図8に関連して上述した方法に従って新たなVMに関するメタデータvvolを作成し、新たなメタデータvvol IDをホスト・コンピュータに返す。次いで工程1914において、クローンvvol APIコールが、テンプレートVMに属するすべてのデータvvol IDに関して、ホスト・コンピュータから帯域外パス601を介してストレージ・システムに発行される。工程1918において、ストレージ・システム・マネージャが、テンプレートVMのデータvvolと、新たなVMのデータvvolとに互換性があるか否かをチェックする。別々の製造業者のストレージ・システム内に作成されたストレージ・コンテナ同士の間においてクローニングが行われる場合には、データvvol同士に互換性がない可能性があるということを認識されたい。互換性がある場合には、工程1919が実行される。工程1919において、ストレージ・システム・マネージャは、新たなデータvvol IDを生成すること、コンテナ・データベース316内のアロケーション・ビットマップを更新すること、および新たなvvolエントリーをvvolデータベース314に加えることによって、新たなデータvvolを作成し、テンプレートVMのデータvvol内に格納されているコンテンツを新たなVMのデータvvolにコピーする。工程1920において、ストレージ・システム・マネージャは、新たなデータvvol IDをホスト・コンピュータに返す。新たなデータvvol IDを受信することは、データvvolのクローニングがエラーなく完了した旨の確認をホスト・コンピュータに提供する。次いで工程1925において、ホスト・コンピュータは、メタデータ・ファイル、とりわけディスク記述子ファイルを、新たに生成されたデータvvol IDで更新するために、新たなVMのメタデータvvolにIOを発行する。ホスト・コンピュータによってストレージ・システムに発行されたIOは、工程1926においてストレージ・システムによって実行され、その結果として、新たなVMのディスク記述子ファイルが、新たに生成されたデータvvol IDで更新される。
工程1918において、テンプレートVMのデータvvolと、新たなVMのデータvvolとに互換性がないとストレージ・システム・マネージャが判定した場合には、エラー・メッセージが、ホスト・コンピュータに返される。このエラー・メッセージを受信すると、ホスト・コンピュータは、工程1921において、新たなデータvvolを作成するために、作成vvol APIコールをストレージ・システムに発行する。工程1922において、ストレージ・システム・マネージャは、新たなデータvvol IDを生成すること、コンテナ・データベース316内のアロケーション・ビットマップを更新すること、および新たなvvolエントリーをvvolデータベース314に加えることによって、新たなデータvvolを作成し、新たなデータvvol IDをホスト・コンピュータに返す。工程1923において、ホスト・コンピュータは、2009年1月21日に出願された「Data Mover for Computer System」と題されている米国特許出願第12/356,694号(その全内容を本願明細書に援用する)に記載されている技術に従って、データの移動を実行する(工程1923)。工程1923の後には、工程1925および1926が、上述のように実行される。
図20は、別の実施形態による、VMをプロビジョンするための方法工程の流れ図である。この実施形態においては、管理サーバ610と、VMをホストしているコンピュータ・システム、たとえば、図5Dにおいて示されているコンピュータ・システム102(以降では、「ホスト・コンピュータ」と呼ばれる)と、図2Bのストレージ・システム・クラスタ、とりわけストレージ・システム・マネージャ131、またはストレージ・システム・マネージャ132、またはストレージ・システム・マネージャ135とが使用される。示されているように、VMをプロビジョンしたいという要求が、工程2002において受信される。これは、VM管理者が、管理サーバ610への適切なユーザ・インターフェースを使用して、特定のサイズおよびストレージ能力プロファイルを有するVMをプロビジョンするためのコマンドを管理サーバ610に発行するときに生成される要求であることが可能である。それに応じて、工程2004において、管理サーバ610は、図8に関連して上述した様式で、VMのメタデータを含めるためのvvol、とりわけメタデータvvolを作成するための方法を開始し、それに従ってストレージ・システム・マネージャは、工程2008において、メタデータvvol(これは、NASデバイス内のファイルである)を作成し、メタデータvvol IDを管理サーバ610に返す。工程2020において、管理サーバ610は、ホスト・コンピュータへ戻るメタデータvvolのvvol IDを登録する。工程2022において、ホスト・コンピュータは、メタデータvvol IDに関するバインド要求をストレージ・システムに発行し、それに応答して、ストレージ・システムは、工程2023において、IPアドレスおよびディレクトリ・パスをそれぞれPE IDおよびSLLIDとして返す。工程2024において、ホスト・コンピュータは、指定されたIPアドレスおよびディレクトリ・パスにおいてディレクトリをマウントし、そのマウントされたディレクトリ内にメタデータ・ファイルを格納する。NFSを使用する実施形態においては、NFSクライアント545または585が、そのようなディレクトリにNFS要求を発行するために、所与のIPアドレスおよびディレクトリ・パスをNFSハンドルへと変換することができる。
工程2026において、ホスト・コンピュータは、図8に関連して上述した様式で、VMの仮想ディスクのそれぞれに関するデータvvolを作成するための方法を開始し、それに従ってストレージ・システム・マネージャは、工程2030において、データvvolを作成し、そのデータvvolのvvol IDをホスト・コンピュータに返す。工程2032において、ホスト・コンピュータは、データvvolのIDを、仮想ディスクに関するディスク記述子ファイル内に格納する。この方法は、VMの仮想ディスクのうちのすべてに関してデータvvolが作成された後にメタデータvvolがアンバインドされること(図示せず)に伴って、終了する。
図8に関連して上述したように、新たなvvolがストレージ・コンテナから作成され、その新たなvvolに関してストレージ能力プロファイルが明示的に指定されない場合には、その新たなvvolは、ストレージ・コンテナに関連付けられているストレージ能力プロファイルを引き継ぐことになる。ストレージ・コンテナに関連付けられているストレージ能力プロファイルは、いくつかの別々のプロファイルのうちの1つから選択されることが可能である。たとえば、図21において示されているように、それらの別々のプロファイルとしては、プロダクション(prod)プロファイル2101、デベロップメント(dev)プロファイル2102、およびテスト・プロファイル2103(ここでは「プロファイル2100」と総称される)が含まれる。その他の多くのプロファイルが定義されることも可能であるということを認識されたい。示されているように、特定のプロファイルのそれぞれのプロファイル・エントリーは、固定タイプまたは可変タイプのものであり、1つの名前と、それに関連付けられている1つまたは複数の値とを有している。固定タイプのプロファイル・エントリーは、固定された数の選択可能なアイテムを有している。たとえば、プロファイル・エントリー「複製」は、真または偽であるように設定されることが可能である。対照的に、可変タイプのプロファイル・エントリーは、事前に定義された選択肢を有していない。その代わりに、可変タイプのプロファイル・エントリーに関しては、デフォルトの値およびある範囲の値が設定され、ユーザは、その範囲内にある任意の値を選択することができる。値がまったく指定されない場合には、デフォルトの値が使用される。図21に示されている例示的なプロファイル2100においては、可変タイプのプロファイル・エントリーは、コンマによって区切られている3つの数字を有している。第1の数字は、指定された範囲の下限であり、第2の数字は、指定された範囲の上限である。第3の数字は、デフォルトの値である。したがって、プロダクション・プロファイル2101において定義されているストレージ能力プロファイルを引き継ぐvvolは、複製されることになり(複製。値=真)、複製に関する目標復旧時間(RTO:recovery time objective)は、0.1時間から24時間の範囲内で定義されることが可能であり、デフォルトは1時間である。加えて、このvvolに関しては、スナップショットが可能である(スナップショット。値=真)。保持されるスナップショットの数は、1から100の範囲内であり、デフォルトは1であり、スナップショットの頻度は、1時間に1回から24時間に1回の範囲内であり、デフォルトは1時間に1回である。「スナップ引き継ぎ」の列は、派生vvolである新たなvvolを作成するために所与のvvolがスナップショットされる場合に所与のプロファイル属性(およびその値)が派生vvolに伝搬されるべきかどうかを示す。プロダクション・プロファイル2101の例においては、最初の2つのプロファイル・エントリー(複製およびRTO)のみが、プロダクション・プロファイル2101を有する所与のvvolのスナップショットvvolに伝搬されることが可能である。スナップショットvvolのその他のすべての属性の値は、そのプロファイルにおいて指定されているデフォルトの値に設定されることになる。言い換えれば、所与のvvolに関するこれらのその他の属性のあらゆるカスタマイゼーション(たとえば、スナップショット頻度のデフォルトではない値)は、それらの対応する「スナップ引き継ぎ」の列が偽であるため、スナップショットvvolに伝搬されない。このプロファイルは、どの属性値が所与のvvolのそれぞれクローンおよびレプリカに伝搬されるかをコントロールする「クローン引き継ぎ」(図示せず)および「レプリカ引き継ぎ」(図示せず)などのその他の列も含む。
図4の方法に従ってストレージ・コンテナが作成される場合には、そのストレージ・コンテナから作成されるvvolに関して定義することができるストレージ能力プロファイルのタイプが設定されることが可能である。図21における流れ図は、図4において示されているストレージ・コンテナを作成するための方法を、工程412と工程413との間に工程2110が挿入された状態で示している。工程2110において、ストレージ管理者は、作成されているストレージ・コンテナに関するプロファイル2100のうちの1つまたは複数を選択する。たとえば、1人の顧客のために作成された1つのストレージ・コンテナが、プロダクション・プロファイル2101およびデベロップメント・プロファイル2102に関連付けられることが可能であり、それによって、プロダクション・タイプのものであるvvolは、場合によってデフォルトの値または顧客によって指定された値を伴うプロダクション・プロファイル2101において定義されているストレージ能力プロファイルを引き継ぐことになり、デベロップメント・タイプのものであるvvolは、場合によってデフォルトの値または顧客によって指定された値を伴うデベロップメント・プロファイル2102において定義されているストレージ能力プロファイルを引き継ぐことになる。
図22は、vvolを作成して、そのvvolに関するストレージ能力プロファイルを定義するための、ストレージ・システム・マネージャ131、132、または135によって実行される方法工程を示す流れ図である。図22の方法工程、とりわけ工程2210、2212、2218、および2220はそれぞれ、図8において示されている工程806、810、812、および814に対応する。加えて、図22の方法工程は、工程2214、2215、および2216を含み、これらの工程は、作成されているvvolに関するストレージ能力プロファイルを定義する。
工程2214において、ストレージ・システム・マネージャは、ストレージ能力プロファイルにおいて使用されることになる値が、vvolを作成したいという要求内で指定されているかどうかを判定する。ストレージ能力プロファイルにおいて使用されることになる値が指定されていない場合には、ストレージ・システム・マネージャは、工程2215において、vvolのストレージ・コンテナに関連付けられているストレージ能力プロファイルを、デフォルトの値を伴うvvolのストレージ能力プロファイルとして採用する。ストレージ能力プロファイルにおいて使用されることになる値が指定されている場合には、ストレージ・システム・マネージャは、工程2216において、vvolのストレージ・コンテナに関連付けられているストレージ能力プロファイルを、デフォルトの値の代わりに指定されている値を伴うvvolのストレージ能力プロファイルとして採用する。
一実施形態においては、vvolのストレージ能力プロファイルは、キー/値のペアとしてvvolデータベース314内に格納される。いったんvvolのストレージ能力プロファイルが定義されて、キー/値のペアとしてvvolデータベース314内に格納されると、図21の例示的なプロファイルにおいて示されているように複製およびスナップショット関連の属性および値がこのプロファイルの一部である限り、ストレージ・システムは、ホスト・コンピュータによって発行されるさらなる命令を伴わずに、そのvvolに関する複製およびスナップショットを実行することができる。
図23は、親vvolからスナップショットを作成するための、ストレージ・システム・マネージャ131、132、または135によって実行される方法工程を示す流れ図である。一実施形態においては、所与のvvolのストレージ能力プロファイル内のスナップショット定義に従ってスナップショットをスケジュールするためのスナップショット・トラッキング・データ構造が採用される。スナップショットのためのスケジュールされた時刻に達すると、ストレージ・システム・マネージャは、工程2310において、スナップショット・トラッキング・データ構造からvvol IDを取り出す。次いで工程2312において、ストレージ・システム・マネージャは、スナップショットに関する一意のvvol IDを生成する。ストレージ・システム・マネージャは、工程2315において、親vvol(すなわち、スナップショット・トラッキング・データ構造から取り出されたvvol IDを有するvvol)のストレージ能力プロファイルを、スナップショットvvolのストレージ能力プロファイルとして採用する。これは、ストレージ・システムによって駆動される自動化されたプロファイル駆動型のスナップショット工程であるため、ユーザには、スナップショットvvolのストレージ能力プロファイルにおいて使用されることになるカスタムの値を指定するための機会はないということに留意されたい。工程2318において、ストレージ・システム・マネージャは、コンテナ・データベース316内のアロケーション・ビットマップを更新すること、およびスナップショットvvolに関する新たなvvolエントリーをvvolデータベース314に加えることによって、親vvolのストレージ・コンテナ内にスナップショットvvolを作成する。次いで工程2320において、ストレージ・システム・マネージャは、親vvolに関する次なるスナップショットを生成するための時刻をスケジュールすることによって、スナップショット・トラッキング・データ構造を更新する。ストレージ・システム・マネージャは、スナップショット・トラッキング・データ構造を保持することと、スケジュールされたスナップショットを命じるストレージ能力プロファイルを有するすべてのvvolに関して図23の方法工程を実行することとを同時に行わなければならないということを認識されたい。
上述の様式でスナップショットが作成された後に、vvolデータベース314内に格納されているキー/値のペアは、スナップショットvvolがタイプ=スナップショットのものであるということを示すように更新される。また、スナップショットに関して世代番号が保持され、その世代番号が、スナップショットがとられるたびにインクリメントされるか、または日にち+時刻に等しくなるように設定される実施形態においては、世代番号は、キー/値のペアとして格納される。スナップショットvvolの親vvol IDも、キー/値のペアとしてスナップショットvvolエントリー内に格納される。結果として、ホスト・コンピュータは、特定のvvol IDに対応するスナップショットを求めてvvolデータベース314にクエリーを行うことができる。ホスト・コンピュータは、特定のvvol IDおよび特定の世代番号に対応するスナップショットを求めてvvolデータベースにクエリーを発行することも可能である。
本明細書に記載されているさまざまな実施形態は、コンピュータ・システム内に格納されているデータを含むさまざまなコンピュータ実施オペレーションを採用することができる。たとえば、これらのオペレーションは、通常、必須ではないが、物理量の物理的な操作を必要とする場合があり、これらの量は、電気信号または磁気信号の形態を取ることができ、そうした形態では、それらの量、またはそれらの量の表示は、格納されること、転送されること、結合されること、比較されること、またはその他の形で操作されることが可能である。さらに、そのような操作はしばしば、作り出すこと、識別すること、判定すること、または比較することなどの用語で呼ばれる。1つまたは複数の実施形態の一部を形成する、本明細書に記載されているあらゆるオペレーションは、有用なマシン・オペレーションであることが可能である。加えて、1つまたは複数の実施形態はまた、これらのオペレーションを実行するためのデバイスまたは装置に関する。その装置は、特定の必要とされる目的のために特別に構築されることが可能であり、または、コンピュータ内に格納されているコンピュータ・プログラムによって選択的にアクティブ化または構成される汎用コンピュータであることが可能である。とりわけ、さまざまな汎用マシンが、本明細書における教示に従って書かれたコンピュータ・プログラムとともに使用されることが可能であり、または、必要とされるオペレーションを実行するためのさらに専門化された装置を構築することが、より好都合である可能性がある。
本明細書に記載されているさまざまな実施形態は、ハンドヘルド・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレーム・コンピュータなどを含むその他のコンピュータ・システム構成とともに実施されることが可能である。
1つまたは複数の実施形態は、1つもしくは複数のコンピュータ・プログラムとして、または1つもしくは複数のコンピュータ可読メディアにおいて具体化される1つもしくは複数のコンピュータ・プログラム・モジュールとして実装されることが可能である。コンピュータ可読メディアという用語は、その後にコンピュータ・システムに入力されることが可能であるデータを格納することができる任意のデータ・ストレージ・デバイスを指し、コンピュータ可読メディアは、コンピュータ・プログラムがコンピュータによって読み取られることを可能にする様式でそれらのコンピュータ・プログラムを具体化するための任意の既存のまたはその後に開発されるテクノロジーに基づくことができる。コンピュータ可読メディアの例としては、ハード・ドライブ、ネットワーク・アタッチト・ストレージ(NAS)、読み取り専用メモリ、ランダムアクセス・メモリ(たとえば、フラッシュ・メモリ・デバイス)、CD(Compact Disc)、CD−ROM、CD−R、またはCD−RW、DVD(Digital Versatile Disc)、磁気テープ、ならびにその他の光学式および非光学式のデータ・ストレージ・デバイスが含まれる。コンピュータ可読メディアは、ネットワークに結合されたコンピュータ・システムを介して分散されることも可能であり、それによってコンピュータ可読コードは、分散された様式で格納および実行される。
1つまたは複数の実施形態について、理解を明確にするためにいくらか詳細に説明したが、特許請求の範囲の範疇内で特定の変更および修正が行われることが可能であるということは明らかであろう。たとえば、SCSIが、SANデバイスのためのプロトコルとして採用され、NFSが、NASデバイスのためのプロトコルとして使用される。ファイバ・チャネルなど、SCSIプロトコルに対する任意の代替手段が使用されることが可能であり、CIFS(Common Internet File System)プロトコルなど、NFSプロトコルに対する任意の代替手段が使用されることが可能である。したがって、記載されている実施形態は、限定的なものではなく例示的なものとみなされるべきであり、特許請求の範囲の範疇は、本明細書において与えられている詳細に限定されるものではなく、特許請求の範囲の範疇および均等物の中で修正されることが可能である。特許請求の範囲において、要素および/または工程は、特許請求の範囲において明示的に記載されていない限り、オペレーションのいかなる特定の順序も意味するものではない。
加えて、記載されている仮想化方法は一般に、仮想マシンが、特定のハードウェア・システムと整合するインターフェースを提示すると想定しているが、記載されているそれらの方法は、いかなる特定のハードウェア・システムにも直接対応しない仮想化に関連して使用されることが可能である。ホストされる実施形態、ホストされない実施形態として、またはそれらの両者の間における区別をあいまいにする傾向がある実施形態として実施される、さまざまな実施形態による仮想化システムが、すべて想定されている。さらに、さまざまな仮想化オペレーションは、全体的にまたは部分的にハードウェアで実施されることが可能である。たとえば、ハードウェアの実施態様は、非ディスク・データをセキュアにするためのストレージ・アクセス要求の修正のためのルックアップ・テーブルを採用することができる。
仮想化の度合いにかかわらず、多くの変形、修正、追加、および改良が可能である。したがって仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、またはゲスト・オペレーティング・システムのコンポーネントを含むことができる。単一のインスタンスとして本明細書に記載されているコンポーネント、オペレーション、または構造のために、複数のインスタンスが提供されることが可能である。最後に、さまざまなコンポーネント、オペレーション、およびデータストア同士の間における境界は、いくらか任意のものであり、特定のオペレーションは、特定の例示的な構成のコンテキストにおいて示されている。機能のその他の割り当ても想定されており、本明細書に記載されている実施形態の範囲内に収まることができる。一般に、例示的な構成において別々のコンポーネントとして提示されている構造および機能は、結合された構造またはコンポーネントとして実装されることが可能である。同様に、単一のコンポーネントとして提示されている構造および機能は、別々のコンポーネントとして実装されることが可能である。これらおよびその他の変形、修正、追加、および改良は、添付の(1つまたは複数の)特許請求の範囲の範疇内に収まることができる。

Claims (8)

  1. 入力/出力コマンド(IO)パスおよび非IOパスを介してストレージ・システムに接続されるコンピュータ・システムにおいて、ストレージ・システム内に作成された論理ストレージ・ボリュームを、コンピュータ・システムにおいて稼働するアプリケーションによる使用のために該ストレージ・システムにおいて構成されているプロトコル・エンドポイントにバインドするための方法であって、
    該論理ストレージ・ボリュームをバインドするための要求を、非IOパスを介して該ストレージ・システムに発行すること、
    該要求に応答して受信された第1および第2の識別子を格納することであって、該第1および第2の識別子が、IOパスを介して該論理ストレージ・ボリュームに発行されることになるIOへとエンコードされ、該第1の識別子が、該プロトコル・エンドポイントを識別するものであり、該第2の識別子が、該論理ストレージ・ボリュームを識別するものである、前記第1および第2の識別子を格納すること、を含む方法。
  2. 該要求に応答して受信された第1および第2の識別子を格納するステップの前に、
    前記コンピュータ・システムにとって利用可能なプロトコル・エンドポイントを特定するための発見コマンドを、IOパスを介して発行すること、
    該発見コマンドに対する1つまたは複数の応答を、該IOパスを介して受信することであって、それぞれの応答が、LUNに関するワールド・ワイド・ネームと、該LUNがプロトコル・エンドポイントLUNまたはデータLUNであるか否かを示すさらなるデータとを含む、前記受信すること
    をさらに含む、請求項1に記載の方法。
  3. 前記論理ストレージ・ボリュームをバインドするための前記ストレージ・システムへの前記要求が、前記論理ストレージ・ボリュームに関する一意の識別子を含み、前記第2の識別子が、該一意の識別子とは異なる、請求項1に記載の方法。
  4. 該要求に応答して受信された第1および第2の識別子を格納するステップの後に、
    論理ストレージ・ボリュームの一意の識別子を、該論理ストレージ・ボリュームがバインドされるプロトコル・エンドポイントを識別する第1の識別子と、前記コンピュータ・システムによって発行されるIOにおける該論理ストレージ・ボリュームを識別する第2の識別子とにマップするデータ構造を保持すること
    をさらに含む、請求項3に記載の方法。
  5. 前記データ構造が、前記プロトコル・エンドポイントへの前記論理ストレージ・ボリュームのそれぞれのマッピングに関して、該マッピングがアクティブであるか否かを示す、請求項4に記載の方法。
  6. 前記データ構造がさらに、前記プロトコル・エンドポイントへの前記論理ストレージ・ボリュームのそれぞれのマッピングに関して、発行されていて完了していないIOの数を示す、請求項5に記載の方法。
  7. 該要求に応答して受信された第1および第2の識別子を格納するステップの後に、
    前記論理ストレージ・ボリュームが第1のプロトコル・エンドポイントに既にバインドされている間に、前記論理ストレージ・ボリュームをバインドするための新たな要求を、非IOパスを介して前記ストレージ・システムに発行すること、
    該新たな要求に応答して受信された新たな第1および第2の識別子を格納することであって、該新たな第1および第2の識別子が、IOパスを介して前記論理ストレージ・ボリュームに発行されることになるIOへとエンコードされ、該新たな第1の識別子が、新たな第2のプロトコル・エンドポイントを識別するものであり、該新たな第2の識別子が、前記論理ストレージ・ボリュームを識別するものである、前記新たな第1および第2の識別子を格納すること
    をさらに含む、請求項6に記載の方法。
  8. 該新たな要求に応答して受信された新たな第1および第2の識別子を格納するステップの後に、
    前記第1のプロトコル・エンドポイントを通じて前記論理ストレージ・ボリュームに発行されていて完了していないIOの数がゼロである場合に、前記論理ストレージ・ボリュームを前記第1のプロトコル・エンドポイントからアンバインドするための要求を送信すること
    をさらに含む、請求項7に記載の方法。
JP2014527255A 2011-08-26 2012-08-22 オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム Active JP5933716B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/219,378 US8650359B2 (en) 2011-08-26 2011-08-26 Computer system accessing object storage system
US13/219,378 2011-08-26
PCT/US2012/051840 WO2013032806A1 (en) 2011-08-26 2012-08-22 Computer system accessing object storage system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015248393A Division JP6208207B2 (ja) 2011-08-26 2015-12-21 オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム

Publications (2)

Publication Number Publication Date
JP2014531067A JP2014531067A (ja) 2014-11-20
JP5933716B2 true JP5933716B2 (ja) 2016-06-15

Family

ID=46801630

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014527255A Active JP5933716B2 (ja) 2011-08-26 2012-08-22 オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム
JP2015248393A Active JP6208207B2 (ja) 2011-08-26 2015-12-21 オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015248393A Active JP6208207B2 (ja) 2011-08-26 2015-12-21 オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム

Country Status (6)

Country Link
US (1) US8650359B2 (ja)
EP (1) EP2712438B1 (ja)
JP (2) JP5933716B2 (ja)
CN (1) CN106168884B (ja)
AU (1) AU2012300453B2 (ja)
WO (1) WO2013032806A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134922B2 (en) 2009-03-12 2015-09-15 Vmware, Inc. System and method for allocating datastores for virtual machines
US8595460B2 (en) 2011-08-26 2013-11-26 Vmware, Inc. Configuring object storage system for input/output operations
US8769174B2 (en) 2011-08-29 2014-07-01 Vmware, Inc. Method of balancing workloads in object storage system
US9285992B2 (en) * 2011-12-16 2016-03-15 Netapp, Inc. System and method for optimally creating storage objects in a storage system
US9417997B1 (en) * 2012-09-28 2016-08-16 Emc Corporation Automated policy based scheduling and placement of storage resources
US9372726B2 (en) 2013-01-09 2016-06-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US9727357B2 (en) * 2013-10-01 2017-08-08 International Business Machines Corporation Failover detection and treatment in checkpoint systems
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US11386115B1 (en) * 2014-09-12 2022-07-12 Amazon Technologies, Inc. Selectable storage endpoints for a transactional data storage engine
US10222983B2 (en) 2015-06-10 2019-03-05 Hitachi, Ltd. Storage management computer and management method of storage apparatus
CN105183390B (zh) * 2015-09-17 2018-09-07 华为数字技术(成都)有限公司 数据访问方法及装置
CN106610967B (zh) * 2015-10-21 2020-06-12 杭州海康威视数字技术股份有限公司 对nas设备中视频数据的读写方法及装置
US10162982B2 (en) * 2015-12-10 2018-12-25 Sap Se End user control of personal data in the cloud
US10379742B2 (en) * 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10904358B2 (en) 2016-02-29 2021-01-26 Red Hat, Inc. Quality of service in a distributed system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US10705763B2 (en) 2017-02-10 2020-07-07 International Business Machines Corporation Scale and performance for persistent containers using SCSI second level addressing to map storage volume to host of container environment, wherein said storage volume is scanned at said SCSI second level addressing without rescanning at OS level virtualization
JP6724252B2 (ja) 2017-04-14 2020-07-15 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理方法、記憶システムおよび切り換え装置
US10664442B1 (en) * 2017-07-14 2020-05-26 EMC IP Holding Company LLC Method and system for data consistency verification in a storage system
US10635609B2 (en) 2018-03-02 2020-04-28 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US10536522B2 (en) 2018-04-30 2020-01-14 EMC IP Holding Company LLC Data storage system with LUN archiving to cloud using volume-to-object translation
US10831609B2 (en) 2018-04-30 2020-11-10 EMC IP Holding Company LLC Data storage system with LUN snapshot shipping using volume-to-object translation
US11003372B2 (en) 2018-05-31 2021-05-11 Portworx, Inc. Protecting volume namespaces from corruption in a distributed container orchestrator
CN110837479B (zh) * 2018-08-17 2023-09-01 华为云计算技术有限公司 数据处理方法、相关设备及计算机存储介质
US10754572B2 (en) * 2018-10-09 2020-08-25 EMC IP Holding Company LLC Migrating control of a multi-path logical device from a current MPIO driver to a target MPIO driver
US10983820B2 (en) 2019-03-06 2021-04-20 International Business Machines Corporation Fast provisioning of storage blocks in thin provisioned volumes for supporting large numbers of short-lived applications
CN109978392B (zh) * 2019-03-29 2021-08-24 携程旅游网络技术(上海)有限公司 敏捷软件开发管理方法、装置、电子设备、存储介质
CN111464622B (zh) * 2020-03-30 2023-07-14 北京星辰天合科技股份有限公司 分布式存储系统中的卷映射处理方法及装置
US11693573B2 (en) * 2020-06-18 2023-07-04 Hewlett Packard Enterprise Development Lp Relaying storage operation requests to storage systems using underlying volume identifiers
CN114594901A (zh) * 2020-12-04 2022-06-07 伊姆西Ip控股有限责任公司 访问存储系统的方法、电子设备和计算机程序产品
US11615004B2 (en) * 2021-04-16 2023-03-28 EMC IP Holding Company, LLC System and method for failure handling for virtual volumes across multiple storage systems
CN113655961B (zh) * 2021-08-18 2022-09-09 浩鲸云计算科技股份有限公司 基于多位编码实现逻辑卷名称唯一性和准确定位的方法
CN114491371B (zh) * 2022-01-27 2022-09-16 佛山众陶联供应链服务有限公司 一种web系统前端多系统跳转方法及系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4501548B2 (ja) * 1999-08-27 2010-07-14 株式会社日立製作所 計算機システム及びそのデバイスの割り当て方法
CA2405405C (en) 2000-04-18 2011-03-22 Nelson Nahum Storage virtualization in a storage area network
JP4704659B2 (ja) * 2002-04-26 2011-06-15 株式会社日立製作所 記憶装置システムの制御方法および記憶制御装置
US7769722B1 (en) 2006-12-08 2010-08-03 Emc Corporation Replication and restoration of multiple data storage object types in a data network
JP2005011210A (ja) * 2003-06-20 2005-01-13 Hitachi Ltd ディスク装置の割り当て制御装置及び割り当て制御方法
US7849098B1 (en) * 2004-02-06 2010-12-07 Vmware, Inc. Providing multiple concurrent access to a file system
US7318134B1 (en) 2004-03-16 2008-01-08 Emc Corporation Continuous data backup using distributed journaling
US7096325B2 (en) * 2004-03-29 2006-08-22 Hitachi, Ltd. Method and apparatus for multistage volume locking
JP2006285464A (ja) * 2005-03-31 2006-10-19 Hitachi Ltd 計算機システムとストレージ及びデバイス制御方法
JP4662548B2 (ja) 2005-09-27 2011-03-30 株式会社日立製作所 スナップショット管理装置及び方法並びにストレージシステム
US20070079098A1 (en) * 2005-10-03 2007-04-05 Hitachi, Ltd. Automatic allocation of volumes in storage area networks
US7702870B2 (en) 2006-01-19 2010-04-20 Network Appliance Inc. Method and apparatus for defragmentation and for detection of relocated blocks
JP2007219609A (ja) 2006-02-14 2007-08-30 Hitachi Ltd スナップショット管理装置及び方法
JP4993928B2 (ja) * 2006-03-23 2012-08-08 株式会社日立製作所 記憶システム及び記憶領域解放方法並びにストレージシステム
US7827201B1 (en) 2007-04-27 2010-11-02 Network Appliance, Inc. Merging containers in a multi-container system
US8370833B2 (en) * 2008-02-20 2013-02-05 Hewlett-Packard Development Company, L.P. Method and system for implementing a virtual storage pool in a virtual environment
US8281305B2 (en) * 2008-10-17 2012-10-02 Hitachi, Ltd. Method and apparatus for resource provisioning
JP4727705B2 (ja) 2008-10-31 2011-07-20 株式会社日立製作所 階層型ストレージシステム
JP4705982B2 (ja) 2008-12-11 2011-06-22 株式会社日立製作所 情報処理システム、情報処理方法、及び管理装置
EP2382548A4 (en) 2009-01-23 2012-08-15 Lsi Corp METHOD AND SYSTEM FOR DYNAMIC STORAGE PRIORITIZATION USING INSTANT COPIES WRITING ALLOCATION
KR101552753B1 (ko) 2009-01-29 2015-09-11 엘에스아이 코포레이션 볼륨들에 대해 동적 저장 계층화 온라인 데이터 배치를 제공하기 위한 방법 및 시스템
WO2010095176A1 (en) * 2009-02-20 2010-08-26 Hitachi, Ltd. Storage system and method for operating storage system
EP2302499A3 (en) * 2009-09-11 2012-09-26 Hitachi Ltd. Computer system performing capacity vitualization based on thin provisioning technology in both storage system and server computer
US8595191B2 (en) 2009-12-31 2013-11-26 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
US20110258377A1 (en) 2009-12-07 2011-10-20 Hitachi, Ltd. Disk array system and command processing method for disk array system
WO2012168966A1 (en) * 2011-06-07 2012-12-13 Hitachi, Ltd. Storage apparatus and method of controlling storage apparatus

Also Published As

Publication number Publication date
WO2013032806A1 (en) 2013-03-07
EP2712438A1 (en) 2014-04-02
US8650359B2 (en) 2014-02-11
US20130054889A1 (en) 2013-02-28
AU2012300453A1 (en) 2014-01-30
JP6208207B2 (ja) 2017-10-04
AU2012300453B2 (en) 2015-09-03
CN103765370A (zh) 2014-04-30
JP2016103278A (ja) 2016-06-02
CN106168884A (zh) 2016-11-30
CN106168884B (zh) 2019-06-28
EP2712438B1 (en) 2020-02-19
JP2014531067A (ja) 2014-11-20

Similar Documents

Publication Publication Date Title
JP6199452B2 (ja) ストレージ・オブジェクトとして論理ボリュームをエクスポートするデータ・ストレージ・システム
JP6219420B2 (ja) 入力/出力オペレーションのためにオブジェクト・ストレージ・システムを構成すること
JP6208207B2 (ja) オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム
JP5985642B2 (ja) データ・ストレージ・システムおよびデータ・ストレージ・コントロール方法
US8650566B2 (en) Virtual machine provisioning in object storage system
US8677085B2 (en) Virtual machine snapshotting in object storage system
US8769174B2 (en) Method of balancing workloads in object storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160502

R150 Certificate of patent or registration of utility model

Ref document number: 5933716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350