次の方法で共有


MSFT_StoragePool クラスの CreateVirtualDisk メソッド

記憶域プールのリソースを使用して仮想ディスクを作成します。

構文

UInt32 CreateVirtualDisk(
  [in]  String              FriendlyName,
  [in]  UInt64              Size,
  [in]  Boolean             UseMaximumSize,
  [in]  UInt16              ProvisioningType,
  [in]  String              ResiliencySettingName,
  [in]  UInt16              Usage,
  [in]  String              OtherUsageDescription,
  [in]  UInt16              NumberOfDataCopies,
  [in]  UInt16              PhysicalDiskRedundancy,
  [in]  UInt16              NumberOfColumns,
  [in]  Boolean             AutoNumberOfColumns,
  [in]  UInt64              Interleave,
  [in]  Boolean             IsEnclosureAware,
  [in]  String              PhysicalDisksToUse[],
  [in]  String              StorageTiers[],
  [in]  UInt64              StorageTierSizes[],
  [in]  UInt64              WriteCacheSize,
  [in]  Boolean             AutoWriteCacheSize,
  [in]  Boolean             RunAsJob,
  [out] String              CreatedVirtualDisk,
  [out] MSFT_StorageJob REF CreatedStorageJob,
  [out] String              ExtendedStatus
);

パラメーター

FriendlyName [in]

仮想ディスクのフレンドリ名。

フレンドリ名はわかりやすいものであることが必要ですが、一意である必要はありません。 一部の記憶域プールでは、仮想ディスクの作成時にフレンドリ名を設定できません。 記憶域プールでこれをサポートしていない場合でも、仮想ディスクの作成は成功しますが、仮想ディスクに別の名前が割り当てられている可能性があります。

このパラメーターは必須であり、NULL にすることはできません。

Size [in]

仮想ディスクの目的のサイズをバイト単位で示します。 一部のストレージ サブシステムでは、サイズが割り当てユニット サイズの倍数に切り上げまたは切り下げされることに注意してください。 出力時に、このパラメーターは、作成された仮想ディスクの実際のサイズを示します。 UseMaximumSizeTRUE に設定されている場合、このパラメーターは使用できません。

UseMaximumSize [in]

TRUE場合、このパラメーターは、この記憶域プールの使用可能なリソースを指定して、可能な最大の仮想ディスクを作成するように記憶域アレイに指示します。 このパラメーターは、Sizeパラメーターが設定されている場合は使用することはきません。

ProvisioningType [in]

仮想ディスクのプロビジョニングの種類。

Value 意味
不明 0 プロビジョニングの種類が不明です。 これは、この情報が使用できないか、または記憶域プールが独自の割り当て方法を使用していることを意味する可能性があります。
仮想 1 仮想ディスクの記憶域は、オンデマンドで割り当てられます。
固定 2 仮想ディスクの記憶域は、ディスクの作成時に割り当てられます。

ResiliencySettingName [in]

この仮想ディスクのテンプレートとして使用する必要がある回復性設定。 このパラメーターの値は、特定の MSFT_ResiliencySetting オブジェクトの Name プロパティに対応する必要があります。 このストレージ プールに関連付けられている回復性設定のみを使用できます。

Usage [in]

仮想ディスクの使用目的を指定します。

定義済みの説明またはカスタムの説明を指定できます。 定義済みの説明を指定するには、Other 以外の値を使用します。

カスタムの説明を指定するには、Other を使用し、OtherUsageDescription プロパティとして NULL 以外の値を指定します。

Other (1)

Unrestricted (2)

Reserved for ComputerSystem (the block server) (3)

Reserved by Replication Services (4)

Reserved by Migration Services (5)

Local Replica Source (6)

Remote Replica Source (7)

Local Replica Target (8)

Remote Replica Target (9)

Local Replica Source or Target (10)

Remote Replica Source or Target (11)

Delta Replica Target (12)

Element Component (13)

Reserved as Pool Contributor (14)

Composite Volume Member (15)

Composite VirtualDisk Member (16)

Reserved for Sparing (17)

OtherUsageDescription [in]

新しい仮想ディスクのベンダー固有の使用方法。 このパラメーターは、Usage プロパティが Other に設定された場合にのみ指定できます。

NumberOfDataCopies [in]

この仮想ディスクのために維持される完全なデータ コピーの数を指定します。

指定した場合、この値は、ResiliencySettingName で指定された回復性設定から継承された NumberOfDataCopiesDefault をオーバーライドします。

PhysicalDiskRedundancy [in]

データ損失が発生する前に仮想ディスクが耐えられる必要がある物理ディスク障害の数を指定します。 指定した場合、この値は、ResiliencySettingName で指定された回復性設定から継承された PhysicalDiskRedundancyDefault をオーバーライドします。

NumberOfColumns [in]

データをストライピングする基になる物理ディスクの数を指定します。 指定した場合、この値は、ResiliencySettingName で指定された回復性設定から継承された NumberOfColumnsDefault をオーバーライドします。

AutoNumberOfColumns [in]

TRUE場合、このフィールドは、仮想ディスクに最適な列数であると判断した内容を自動的に選択するようにストレージ プロバイダー (またはサブシステム) に指示します。 このフィールドが TRUE の場合、NumberOfColumns パラメーターは NULL である必要があります。

Interleave [in]

一般的なストライピングベースの回復性設定でストリップに必要なバイト数を指定します。 ストリップは、1 つの物理ディスク上にあるストライプの部分のサイズとして定義されます。 したがって、Interleave * NumberOfColumns はユーザーデータの 1 つのストライプのサイズになります。

このパラメーターが指定されている場合、この値は、ResiliencySettingName で指定された回復性設定から継承された InterleaveDefault をオーバーライドします。

IsEnclosureAware [in]

この仮想ディスクの割り当て動作を決定します。 エンクロージャ対応の仮想ディスクは、冗長性のために使用する物理ディスクをインテリジェントに選択します。 TRUE の場合、仮想ディスクは異なるエンクロージャの物理ディスクを使用して、2 つ以上の物理エンクロージャ間のフォールト トレランスのバランスを取ります。

PhysicalDisksToUse [in]

このパラメーターに物理ディスクの一覧が含まれている場合、この仮想ディスクの記憶域の割り当ては、一覧の物理ディスクに制限されます。 これらの物理ディスクは、この記憶域プールに既に追加されている必要があります。

StorageTiers [in]

この仮想ディスク上のストレージ層。 配列の各要素は、 MSFT_StorageTier オブジェクトです。

StorageTierSizes [in]

ストレージ層のサイズ。

WriteCacheSize [in]

仮想ディスク上の書き込みキャッシュのサイズ。

AutoWriteCacheSize [in]

プロバイダーが自動書き込みキャッシュ サイズを取得する必要がある場合は TRUE、それ以外の場合は FALSE

RunAsJob [in]

TRUE の場合、このメソッドは、要求のサービスに時間がかかっているときに CreatedStorageJob パラメーターを使用します。 操作を追跡するためにストレージ ジョブが作成されている場合、このメソッドは メソッド パラメーター確認済 - ジョブが開始されました を返します。

Note

RunAsJobTRUE の場合でも、十分な時間内に終了していれば、このメソッドは結果を返すことができます。

FALSE または NULL の場合、このメソッドは、クライアントの呼び出し方法によって決定される既定の WMI の非同期動作を実行します。 つまり、特に要求されない限りは同期的な動作を行います。

CreatedVirtualDisk [out]

このメソッドが正常に実行され (RunAsJobFALSE に設定されている)、仮想ディスクが正常に作成された場合は、MSFT_VirtualDisk オブジェクトを受け取ります。

CreatedStorageJob [out]

RunAsJobTRUE に設定されていて、このメソッドの実行に時間がかかる場合、このパラメーターは、実行時間の長い操作を追跡するために使用されるストレージ ジョブ オブジェクトへの参照を受け取ります。

ExtendedStatus [out]

埋め込み MSFT_StorageExtendedStatus オブジェクトを含む文字列。

このパラメーターを使用すると、ストレージ プロバイダーは拡張 (実装固有の) エラー情報を返すことができます。

戻り値

成功 (0)

サポート非対称 (1)

不明なエラー (2)

タイムアウト (3)

失敗 (4)

無効なパラメーター (5)

メソッド パラメーターチェック済み - ジョブが開始されました (4096)

サイズがサポートされていません (4097)

充分な空き領域がありません (40000)

アクセスが拒否されました (40001)

リソース不足のため、操作を完了できません。 (40002)

Size または UseMaximumSize パラメーターを使用して、サイズを指定する必要があります。 一度に指定できるのは、これらのパラメーターのどちらか 1 つだけです。 (40005)

ストレージ プロバイダーに接続できません。 (46000)

ストレージ プロバイダーがストレージ サブシステムに接続できません。 (46001)

このストレージ オブジェクトに対してフェールオーバー クラスタリングを有効にできませんでした。 (46008)

このサブシステムでは、プロビジョニングの種類が指定された仮想ディスクの作成はサポートされていません。 (47001)

この操作は、プリモディアル ストレージ プールではサポートされていません。 (48000)

ストレージ プールは特別な用途専用に予約されています。 (48001)

指定された回復性設定は、このストレージ プールではサポートされていません。 (48002)

ストレージ プールに十分な物理ディスクがないため、指定された仮想ディスク構成を作成できません。 (48004)

ストレージ プールの正常性または操作の状態により許可されていないため、操作を完了できませんでした。 (48006)

ストレージ プールの構成が読み取り専用であるため、操作を完了できませんでした。 (48007)

サイズ情報 (Size または UseMaximumSize パラメーター) または階層情報 (StorageTiers および StorageTierSizes パラメーター) を指定する必要があります。ただし、サイズ情報と階層情報の両方は指定しないでください。 (48010)

ストレージ プールに自動割り当てドライブが見つかりません。 (48011)

その名前の回復性設定は存在しません。 (49000)

NoSinglePointOfFailure の値がサポートされていません。 (49001)

PhysicalDiskRedundancy の値は、サポートされている値の範囲外です。 (49002)

NumberOfDataCopies の値は、サポートされている値の範囲外です。 (49003)

ParityLayout の値は、サポートされている値の範囲外です。 (49004)

Interleave の値は、サポートされている値の範囲外です。 (49005)

NumberOfColumns の値は、サポートされている値の範囲外です。 (49006)

WriteCacheSize の値が、サポートされている値の範囲外です。 (50005)

この操作では、指定された物理ディスクのいずれかがサポートされていません。 (51000)

操作を正常に完了するのに十分な物理ディスクが指定されていませんでした。 (51001)

解説

このメソッドは、ストレージ サブシステムの SupportsVirtualDiskCreation プロパティが TRUE に設定されている場合にのみ使用できます。 FALSE に設定されている場合、このメソッドは MI_RESULT_NOT_SUPPORTED で失敗します。

このメソッドは、プリモディアル プールではサポートされていません。

このメソッドでは、 FriendlyNameSize のみを指定する必要があります。 サイズは、Size パラメーターを使用して明示的に指定することも、UseMaximumSize パラメーターを使用して記憶域プールから使用可能な最大領域を使用するように指定することもできます。 FriendlyNameSize はどちらも、ハード要件ではなく目標として扱われます。 たとえば、すべての SMI-S ベースの配列がカスタム フレンドリ名をサポートしているわけではありませんが、仮想ディスクの作成は引き続き成功します。 指定されたサイズが達成されない場合は、仮想ディスクに使用される実際のサイズが out パラメーター構造で返されます。

この仮想ディスクの使用は、Usage パラメーターと OtherUsageDescription パラメーターを使用して設定できます。 OtherUsageDescription の値を指定する場合は、Usage を 1 - 'Other' に設定する必要があります。それ以外の場合はエラーが返されます。

既定では、この仮想ディスクに適用される回復性設定は、記憶域プールの ResiliencySettingNameDefault プロパティで指定されているものになります。 これをオーバーライドするには、ResiliencySettingName パラメーターを使用します。 ここで指定する名前は、この記憶域プールに関連付けられている回復性設定に対応している必要があることに注意してください。 その他の値はエラーになります。

回復性設定の個々の設定は、NumberOfDataCopiesPhysicalDiskRedundancyNumberOfColumnsInterleave パラメーターを使用してオーバーライドできます。 これらのパラメーターを使用しない場合は、回復性設定の既定値が使用されます。 これらのオーバーライドは、特定の回復性設定インスタンスには保持されません。ただし、一部のストレージ プロバイダーは、この新しい構成をキャプチャする新しい回復性設定インスタンスを作成することを選択できます。 オーバーライド パラメーターで指定された目標のいずれかが範囲外の場合、または記憶域プールでサポートされていない場合は、エラーが返されます。

仮想ディスクのプロビジョニング ポリシーは、回復性設定と同様の方法で決定されます。 ProvisioningType パラメーターに基本設定が指定されていない場合、ポリシーは記憶域プールの ProvisioningTypeDefault プロパティによって決定されます。 ProvisioningType パラメーターが指定されている場合、既定値は無視され、指定された値が代わりに使用されます。

割り当ては、PhysicalDisksToUse パラメーターによってさらに制御できます。 ストレージ管理者が仮想ディスクをバックアップする物理ディスクを手動で選択するシナリオが存在する場合があります。 このパラメーターを指定すると、仮想ディスクのデータはこのアレイ内の物理ディスクにのみ格納され、他のディスクには格納されません。

要件

要件 Value
サポートされている最小のクライアント Windows 8.1 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 R2 [デスクトップ アプリのみ]
名前空間 Root\Microsoft\Windows\Storage
ヘッダー Vdssys.h
MOF Storagewmi.mof

関連項目

MSFT_StoragePool