Método CreateVirtualDisk da classe MSFT_StoragePool
Cria um disco virtual usando os recursos do pool de armazenamento.
Sintaxe
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
);
Parâmetros
FriendlyName [in]
O nome amigável do disco virtual.
Espera-se que os nomes amigáveis sejam descritivos, mas não precisam ser exclusivos. Observe que alguns pools de armazenamento não permitem definir um nome amigável durante a criação do disco virtual. Se um pool de armazenamento não der suporte a isso, a criação de disco virtual ainda deverá ter êxito, no entanto, o disco virtual pode ter um nome diferente atribuído a ele.
Esse parâmetro é necessário e não pode ser NULL.
Tamanho [in]
Indica o tamanho desejado, em bytes, do disco virtual. Observe que alguns subsistemas de armazenamento arredondarão o tamanho para cima ou para baixo para um múltiplo de seu tamanho de unidade de alocação. Na saída, esse parâmetro indica o tamanho real do disco virtual que foi criado. Esse parâmetro não poderá ser usado se UseMaximumSize estiver definido como TRUE.
UseMaximumSize [in]
Se TRUE, esse parâmetro instruirá a matriz de armazenamento a criar o maior disco virtual possível, considerando os recursos disponíveis desse pool de armazenamento. Esse parâmetro não poderá ser usado se o parâmetro Size estiver definido.
ProvisioningType [in]
Especifica o tipo de provisionamento para o disco virtual.
Valor | Significado |
---|---|
Desconhecido 0 | O tipo de provisionamento é desconhecido. Isso pode significar que essas informações não estão disponíveis ou que o subsistema de armazenamento usa um método proprietário de alocação. |
Fino 1 | O armazenamento do disco virtual é alocado sob demanda. |
Corrigido 2 | O armazenamento do disco virtual é alocado quando o disco é criado. |
ResiliencySettingName [in]
A configuração de resiliência desejada a ser usada como modelo para esse disco virtual. O valor desse parâmetro deve corresponder à propriedade Name do objeto MSFT_ResiliencySetting específico. Somente as configurações de resiliência associadas a esse pool de armazenamento podem ser usadas.
Uso [in]
Especifica o uso pretendido para o disco virtual.
Você pode especificar uma descrição predefinida ou uma descrição personalizada. Para especificar uma descrição predefinida, use um valor diferente de Outro.
Para especificar uma descrição personalizada, use Other e especifique um valor não NULL para a propriedade OtherUsageDescription .
Outros (1)
Irrestrito (2)
Reservado para ComputerSystem (o servidor de bloco) (3)
Reservado pelos Serviços de Replicação (4)
Reservado pelos Serviços de Migração (5)
Origem da Réplica Local (6)
Origem da Réplica Remota (7)
Destino da Réplica Local (8)
Destino da Réplica Remota (9)
Origem ou destino da réplica local (10)
Origem ou destino da réplica remota (11)
Destino da Réplica Delta (12)
Componente element (13)
Reservado como Colaborador do Pool (14)
Membro de volume composto (15)
Membro Do VirtualDisk composto (16)
Reservado para Moderação (17)
OtherUsageDescription [in]
Um uso específico do fornecedor para o novo disco virtual. Esse parâmetro só poderá ser especificado se a propriedade Usage estiver definida como Outros.
NumberOfDataCopies [in]
Especifica o número de cópias de dados completas a serem mantidas para o disco virtual.
Se especificado, esse valor substituirá NumberOfDataCopiesDefault , que teria sido herdado da configuração de resiliência especificada por ResiliencySettingName.
PhysicalDiskRedundancy [in]
Especifica quantas falhas de disco físico o disco virtual deve ser capaz de suportar antes que ocorra a perda de dados. Se especificado, esse valor substituirá o PhysicalDiskRedundancyDefault que teria sido herdado da configuração de resiliência especificada por ResiliencySettingName.
NumberOfColumns [in]
Especifica o número de discos físicos subjacentes em que os dados devem ser distribuídos. Se especificado, esse valor substituirá NumberOfColumnsDefault , que teria sido herdado da configuração de resiliência especificada por ResiliencySettingName.
AutoNumberOfColumns [in]
Se TRUE, esse campo instruirá o provedor de armazenamento (ou subsistema) a escolher automaticamente o que ele determina ser o melhor número de colunas para o disco virtual. Se esse campo for TRUE, o parâmetro NumberOfColumns deverá ser NULL.
Intercalar [in]
Especifica o número de bytes que devem ser usados para uma faixa nas configurações comuns de resiliência baseada em distribuição. A faixa é definida como o tamanho da parte de uma faixa que está em um disco físico. Portanto , o Interleave * NumberOfColumns produzirá o tamanho de uma faixa de dados do usuário.
Se esse parâmetro for especificado, esse valor substituirá InterleaveDefault , que teria sido herdado da configuração de resiliência especificada por ResiliencySettingName.
IsEnclosureAware [in]
Determina o comportamento de alocação para esse disco virtual. Os discos virtuais com reconhecimento de compartimento escolherão de forma inteligente os discos físicos a serem usados para sua redundância. Se TRUE, o disco virtual tentará usar discos físicos de compartimentos diferentes para equilibrar a tolerância a falhas entre dois ou mais compartimentos físicos.
PhysicalDisksToUse [in]
Se esse parâmetro contiver uma lista de discos físicos, a alocação do armazenamento desse disco virtual será limitada aos discos físicos na lista. Esses discos físicos já devem ser adicionados a esse pool de armazenamento.
StorageTiers [in]
Camadas de armazenamento neste disco virtual. Cada elemento da matriz é um objeto MSFT_StorageTier .
StorageTierSizes [in]
Tamanhos das camadas de armazenamento.
WriteCacheSize [in]
Tamanho do cache de gravação no disco virtual.
AutoWriteCacheSize [in]
TRUE se o provedor deve pegar o tamanho do cache de gravação automática; caso contrário, FALSE.
RunAsJob [in]
Se TRUE, esse método usará o parâmetro CreatedStorageJob quando a solicitação estiver demorando muito tempo para ser atendida. Se um trabalho de armazenamento tiver sido criado para acompanhar a operação, esse método retornará Parâmetros de Método Verificados – Trabalho Iniciado.
Observação
Mesmo que RunAsJob seja TRUE, esse método ainda poderá retornar um resultado se tiver terminado em tempo suficiente.
Se FALSE ou NULL, esse método seguirá o comportamento assíncrono WMI padrão, conforme determinado pelo método do cliente para invocação. Em outras palavras, ele é síncrono, a menos que solicitado de outra forma.
CreatedVirtualDisk [out]
Recebe um objeto MSFT_VirtualDisk se esse método for executado normalmente (com RunAsJob definido como FALSE) e o disco virtual for criado com êxito.
CreatedStorageJob [out]
Se RunAsJob for definido como TRUE e esse método levar muito tempo para ser executado, esse parâmetro receberá uma referência ao objeto de trabalho de armazenamento que é usado para acompanhar a operação de execução prolongada.
ExtendedStatus [out]
Uma cadeia de caracteres que contém um objeto MSFT_StorageExtendedStatus inserido.
Esse parâmetro permite que o provedor de armazenamento retorne informações de erro estendidas (específicas da implementação).
Retornar valor
Êxito (0)
Sem suporte (1)
Erro não especificado (2)
Tempo limite (3)
Falha (4)
Parâmetro inválido (5)
Parâmetros de método verificados – Trabalho iniciado (4096)
Tamanho sem suporte (4097)
Não há espaço livre suficiente (40000)
Acesso negado (40001)
Não há recursos suficientes para concluir a operação. (40002)
Você deve especificar um tamanho usando o parâmetro Size ou UseMaximumSize. Você pode especificar apenas um desses parâmetros por vez. (40005)
Não é possível se conectar ao provedor de armazenamento. (46000)
O provedor de armazenamento não pode se conectar ao subsistema de armazenamento. (46001)
Não foi possível habilitar clustering de failover para esse objeto de armazenamento. (46008)
Esse subsistema não dá suporte à criação de discos virtuais com o tipo de provisionamento especificado. (47001)
Não há suporte para essa operação em pools de armazenamento primordiais. (48000)
O pool de armazenamento é reservado apenas para uso especial. (48001)
Não há suporte para a configuração de resiliência especificada por esse pool de armazenamento. (48002)
Não há discos físicos suficientes no pool de armazenamento para criar a configuração de disco virtual especificada. (48004)
O pool de armazenamento não pôde concluir a operação porque sua integridade ou status operacional não a permite. (48006)
O pool de armazenamento não pôde concluir a operação porque sua configuração é somente leitura. (48007)
Você deve especificar as informações de tamanho (o parâmetro Size ou UseMaximumSize) ou as informações de camada (os parâmetros StorageTiers e StorageTierSizes), mas não informações de tamanho e camada. (48010)
Nenhuma unidade de alocação automática encontrada no pool de armazenamento. (48011)
Não existe nenhuma configuração de resiliência com esse nome. (49000)
Não há suporte para o valor de NoSinglePointOfFailure. (49001)
O valor de PhysicalDiskRedundancy está fora do intervalo de valores com suporte. (49002)
O valor de NumberOfDataCopies está fora do intervalo de valores com suporte. (49003)
O valor de ParityLayout está fora do intervalo de valores com suporte. (49004)
O valor de Interleave está fora do intervalo de valores com suporte. (49005)
O valor de NumberOfColumns está fora do intervalo de valores com suporte. (49006)
O valor de WriteCacheSize está fora do intervalo de valores com suporte. (50005)
Não há suporte para um dos discos físicos especificados nesta operação. (51000)
Não foram especificados discos físicos suficientes para concluir a operação com êxito. (51001)
Comentários
Esse método só estará disponível quando a propriedade SupportsVirtualDiskCreation no subsistema de armazenamento estiver definida como TRUE. Se estiver definido como FALSE, esse método falhará com MI_RESULT_NOT_SUPPORTED.
Não há suporte para esse método em pools primordiais.
Esse método requer apenas que FriendlyName e Size sejam especificados. Os tamanhos podem ser especificados explicitamente por meio do parâmetro Size ou orientados a usar o espaço máximo disponível do pool de armazenamento usando o parâmetro UseMaximumSize . FriendlyName e Size são tratados como metas em vez de requisitos rígidos. Por exemplo, nem todas as matrizes baseadas em SMI-S podem dar suporte a nomes amigáveis personalizados, no entanto, a criação do disco virtual ainda terá êxito. Se o tamanho especificado não for obtido, o tamanho real usado para o disco virtual será retornado na estrutura de parâmetros out.
O uso desse disco virtual pode ser definido usando os parâmetros Usage e OtherUsageDescription . Se um valor para OtherUsageDescription for fornecido, Usage deverá ser definido como 1 - 'Other', caso contrário, um erro será retornado.
Por padrão, a configuração de resiliência aplicada a esse disco virtual será o que for especificado na propriedade ResiliencySettingNameDefault do pool de armazenamento. Isso pode ser substituído usando o parâmetro ResiliencySettingName . Observe que o nome fornecido aqui deve corresponder a uma configuração de resiliência associada a esse pool de armazenamento. Qualquer outro valor resultará em um erro.
As configurações individuais da configuração de resiliência podem ser substituídas usando os parâmetros NumberOfDataCopies, PhysicalDiskRedundancy, NumberOfColumns e Interleave . Se esses parâmetros não forem usados, os padrões da configuração de resiliência serão usados. Essas substituições não persistirão de volta para a instância de configuração de resiliência específica; no entanto, alguns provedores de armazenamento podem optar por criar uma nova instância de configuração de resiliência para capturar essa nova configuração. Se qualquer uma das metas especificadas nos parâmetros de substituição estiver fora do intervalo ou não tiver suporte do pool de armazenamento, um erro será retornado.
A política de provisionamento para o disco virtual é determinada de maneira semelhante à configuração de resiliência. Se nenhuma preferência for especificada no parâmetro ProvisioningType , a política será determinada pela propriedade ProvisioningTypeDefault do pool de armazenamento. Se o parâmetro ProvisioningType for especificado, o padrão será ignorado e o valor especificado será usado.
A alocação pode ser controlada ainda mais pelo parâmetro PhysicalDisksToUse . Pode haver determinados cenários em que um administrador de armazenamento deseja escolher manualmente quais discos físicos devem apoiar o disco virtual. Quando esse parâmetro for especificado, os dados do disco virtual serão armazenados apenas nos discos físicos nessa matriz e não em nenhum outro.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8.1 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 R2 [somente aplicativos da área de trabalho] |
Namespace | Root\Microsoft\Windows\Storage |
parâmetro | Vdssys.h |
MOF | Storagewmi.mof |