O mecanismo de posicionamento do VMware Cloud Director determina em quais recursos, incluindo pools de recursos, datastores e redes ou pools de redes, posicionar as máquinas virtuais (VMs) em um vApp. Com base nos requisitos de cada VM, o mecanismo toma a decisão de posicionamento de forma independente para cada VM em um vApp.

O mecanismo de posicionamento é executado nos seguintes cenários.
Observação: O VMware Cloud Director coloca as VMs em um vApp de forma independente, com base nos requisitos de cada VM.
  • Quando você cria uma VM, o mecanismo de posicionamento determina em qual pool de recursos, datastore e pool de redes posicioná-la.
  • Quando você inicia uma VM, se a VM não ligar, o VMware Cloud Director poderá mover seletivamente a VM para outro pool de recursos, datastore ou pool de rede.
  • Quando você edita uma VM alterando suas configurações de datastore, recurso ou rede, o VMware Cloud Director pode mover essa VM para um datastore e um pool de recursos diferentes que suportam as novas configurações da VM. O VMware Cloud Director move uma VM somente quando os recursos atuais não podem oferecer suporte aos novos requisitos.
  • Quando você migra VMs para pools de recursos diferentes.
  • Quando um centro de dados virtual (VDC) de organização detecta VMs criadas em qualquer pool de recursos do vCenter Server que oferece suporte ao VDC e o sistema cria um vApp simplificado para conter cada VM detectada.
O mecanismo de posicionamento usa os seguintes critérios para selecionar pools de recursos candidatos para uma VM.
  • Capacidade da CPU
  • Capacidade da memória
  • Número de CPUs virtuais
  • Versão de hardware compatível com o host e permitida pelo VDC do provedor
  • Regras de afinidade

O mecanismo de posicionamento filtra pools de recursos desativados da lista de candidatos. Sempre que possível, o VMware Cloud Director coloca VMs no mesmo cluster de host que outras VMs no VDC de organização.

O mecanismo de posicionamento usa os seguintes critérios para selecionar datastores candidatos para VMs.
  • Capacidade e limites de armazenamento
  • Políticas de armazenamento
  • Requisitos de afinidade entre VMs
  • Se o IOPS estiver ativado, a capacidade de IOPS e o IOPS de discos de VM
Há dois limites de datastore no VMware Cloud Director.
  • Limite vermelho: a quantidade de espaço livre em um datastore, abaixo do qual o VMware Cloud Director filtra o datastore durante o posicionamento de qualquer entidade, como uma VM, um modelo ou um disco.

    Quando um datastore atinge seu limite vermelho, o mecanismo de posicionamento da carga de trabalho para de colocar novas VMs no datastore, exceto ao importar VMs do vCenter Server. No caso da importação da VM, se a VM do vCenter Server já estiver presente no datastore de limite vermelho, o mecanismo de posicionamento preferirá o datastore existente.

    O mecanismo de posicionamento da carga de trabalho usa o limite vermelho para todos os fluxos de trabalho. Ao fazer uma solicitação para qualquer novo posicionamento, o mecanismo de posicionamento primeiro filtra todos os datastores ou pods de armazenamento que violaram o limite vermelho. Ao fazer uma solicitação de posicionamento para uma entidade existente, se os discos residirem nos datastores que estão violando o limite vermelho, o VMware Cloud Director realocará os discos a outros datastores disponíveis. Em seguida, o mecanismo seleciona um datastore dos datastores ou pods de armazenamento restantes, por meio da lógica seletora do VMware Cloud Director ou das recomendações do vSphere Storage DRS.

  • Limite amarelo: a quantidade de espaço livre no datastore, abaixo do qual o VMware Cloud Director filtra o datastore durante o posicionamento de VMs de sombra das quais o VMware Cloud Director cria VMs de provisionamento rápido. Para obter mais informações sobre VMs de sombra, consulte Provisionamento rápido de máquinas virtuais.

    O limite amarelo não se aplica aos clones vinculados que o VMware Cloud Director usa para o provisionamento rápido de VMs. Quando o mecanismo de posicionamento seleciona um datastore para um clone vinculado, se o datastore selecionado estiver sem uma VM de sombra, o VMware Cloud Director criará uma VM de sombra no datastore. O limite não se aplica à VM de sombra nesse caso.

    O limite amarelo aplica-se apenas ao trabalho periódico em segundo plano que cria VMs de sombra. Se ativado, o trabalho será executado a cada 24 horas e usará a criação adiantada de VMs em cada datastore para um determinado par de políticas de armazenamento e hub. Para ativar o trabalho para o provisionamento adiantado das VMs de sombra, você deve definir a propriedade a seguir como true.
    valc.catalog.fastProvisioning=true
    Observação: O trabalho periódico em segundo plano cria VMs de sombra em todos os datastores para todos os modelos. O trabalho aumenta o consumo de armazenamento mesmo quando você não está usando os datastores ou as VMs de sombra.

Na maioria dos casos, o mecanismo de posicionamento filtra datastores de limite vermelho e desativado da lista de candidatos. O mecanismo não filtra esses datastores quando você importa uma VM do vCenter Server.

Ao implementar a lógica de limite, o VMware Cloud Director não avalia os requisitos do assunto de posicionamento atual. Para que o mecanismo de posicionamento da carga de trabalho coloque um assunto em um datastore, o espaço disponível em bytes deve ser maior que o limite em bytes. Por exemplo, para um datastore com capacidade disponível de 5 GB com um limite vermelho definido em 4 GB, o mecanismo de posicionamento pode posicionar uma VM com um requisito de 2 GB. Se a criação da VM violar o limite, o mecanismo de posicionamento filtrará o datastore para posicionamentos adicionais.

O mecanismo de posicionamento usa o nome da rede para selecionar pools de redes candidatos para um vApp e suas VMs.

Depois que o mecanismo de posicionamento seleciona um conjunto de recursos candidatos, ele classifica os recursos e escolhe o melhor local para cada VM com base na configuração de CPU, RAM virtual e armazenamento de cada VM.

Ao classificar os recursos, o mecanismo de posicionamento examina o uso de recursos futuros atual e estimado. O uso futuro estimado é calculado com base nas VMs desligadas atualmente em um determinado pool de recursos e no seu uso esperado depois de serem ligadas. Para CPU e memória, o mecanismo de posicionamento considera a capacidade atual não reservada, o uso máximo e a capacidade não reservada futura estimada. Para armazenamento, o mecanismo considera a capacidade provisionada agregada fornecida pelo cluster ao qual cada pool de recursos pertence. Em seguida, o mecanismo de posicionamento considera as métricas ponderadas da conveniência atual e futura de cada pool de recursos.

Quando uma movimentação é necessária, o mecanismo de posicionamento favorece pools de recursos com a capacidade não reservada para CPU, memória e armazenamento. Ele também dá menos preferência a clusters amarelos, para que estes apenas sejam selecionados se nenhum cluster íntegro que satisfaça os critérios de posicionamento estiver disponível. Ao importar uma VM do vCenter Server, se o posicionamento da VM for útil, para minimizar o movimento, o mecanismo ignorará os limites.

Ao ligar uma VM, o VMware Cloud Director tenta ligá-la em sua localização atual. Se o vCenter Server relatar um erro com a capacidade de memória e a CPU do host, o VMware Cloud Director tentará o pool de recursos duas vezes antes de tentar mover a VM para os outros pools de recursos compatíveis no VDC de organização. Ao executar novamente o mecanismo de posicionamento para tentar encontrar um pool de recursos compatível, o VMware Cloud Director exclui pools de recursos com tentativas e com falha. Se nenhum pool de recursos adequado estiver conectado ao datastore em que os VMDKs estão localizados, mover uma VM para outro pool de recursos poderá causar a migração dos VMDKs da VM para um datastore diferente. Se o posicionamento da VM falhar em todas as localizações que atendam aos requisitos da VM, o VMware Cloud Director retornará uma mensagem de erro informando que o posicionamento não é viável. Se houver uma afinidade com o datastore atual e o datastore estiver indisponível, o mecanismo de posicionamento retornará um erro de que o posicionamento não é viável. Este é um estado normal do sistema quando opera com capacidade quase total, e a solução proposta não atende a todos os requisitos no momento. Para corrigir o erro, você pode adicionar ou liberar recursos e iniciar uma nova tentativa. Quando não há nenhum datastore específico necessário, o mecanismo de posicionamento seleciona um datastore no cluster de hosts ou no pool de recursos candidato que atenda aos outros requisitos, como política de armazenamento, capacidade de armazenamento e capacidade de IOPS.

Durante situações de implantação simultânea quando um pool de recursos está próximo da capacidade, a validação desse pool de recursos pode ser bem-sucedida, mesmo que o pool de recursos não tenha os recursos para oferecer suporte à VM. Nesses casos, a VM não pode ser ligada. Se uma VM não ligar nessa situação e houver mais de um pool de recursos que ofereça suporte à VDC, para solicitar que o VMware Cloud Director migre essa VM para um pool de recursos diferente, inicie a operação de ligar novamente.

Quando o cluster ao qual um pool de recursos pertence está se aproximando da capacidade máxima, talvez não seja possível ligar uma VM dentro desse pool de recursos se não houver um host individual com a capacidade de ligá-la. Isso acontece como resultado da fragmentação da capacidade no nível do cluster. Nesses casos, um administrador do sistema deve migrar algumas VMs para fora do cluster para que o cluster mantenha capacidade disponível suficiente.

Algoritmo do mecanismo de posicionamento de VM

O algoritmo de posicionamento seleciona um cluster de host na lista de clusters de hosts que têm perfis de armazenamento necessários disponíveis e satisfaça qualquer regra existente de VM-VM, afinidade de host de VM ou antiafinidade. O VMware Cloud Director calcula a solução de posicionamento por meio de várias pontuações. Para alterar o comportamento do mecanismo, você pode usar a ferramenta de gerenciamento de célula para modificar os parâmetros configuráveis que começam com o símbolo de sublinhado (_).
  1. Para cada cluster de host, o mecanismo de posicionamento da carga de trabalho calcula capacityScore, futureCapacityScore e reservationScore. O mecanismo de posicionamento calcula cada pontuação separadamente para CPU, memória e armazenamento.
    capacityScore: (not available in some cases ) 
    
    CPU = (cpuUnreservedCapacityMHz - (cupBurstMHz * _cpuBurstRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memBurstMB * _memoryBurstRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    futureCapacityScore (not available in some cases) 
    
    CPU = (cpuUnreservedCapacityMHz - (cpuUndeployedReservationMHz * _futureDeployRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memUndeployedReservationMB * _futureDeployRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    reservationScore: (used for capacityScore and futureCapacityScore when those scores are unavailable) 
    
    CPU = cpuUnreservedCapacityMHz / cpuRequirementMHz 
    Memory = memoryUnreservedCapacityMB / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
  2. Para cada cluster de hosts, o mecanismo de posicionamento calcula uma weightedCapacityScore para CPU, memória e armazenamento.
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    Cada weightedCapacityScore é uma proporção de 0 a 1, com valores mais altos representando mais recursos disponíveis. Os valores de weightedCapacityScore podem ser comparados em diferentes tipos de recursos, por exemplo, CPU, memória e armazenamento, pois representam uma medida de disponibilidade sem unidade. Uma weightedCapacityScore maior significa mais disponibilidade do recurso correspondente no cluster de hosts.

  3. O mecanismo de posicionamento verifica se existem recursos suficientes para CPU, memória e armazenamento.
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. O mecanismo de posicionamento classifica a lista de clusters de hosts na weightedCapacityScore para que o cluster de hosts menos restrito seja o primeiro e o cluster de hosts mais restrito seja o último.
  5. O mecanismo de posicionamento processa cada cluster de host na lista.
    • Se o cluster de hosts tiver que ser evitado, por exemplo, devido à regra de antiafinidade, o mecanismo o adicionará à avoidHubList.
    • Se o cluster de hosts não tiver recursos adicionais suficientes, o mecanismo o adicionará à noHeadRoomHubList.
    • Se o cluster de hosts for preferencial, por exemplo, devido a uma regra de afinidade forte ou ao cluster de hosts atual, o mecanismo o adicionará à preferredHubList.
    • Todos os outros clusters de hosts vão para acceptableHubList.

    Em cada lista, o cluster de hosts mais preferido é o primeiro e o cluster de hosts menos preferido é o último.

  6. O mecanismo integra as quatro listas.

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    O mecanismo ordena a lista resultante do cluster de host mais preferível ao cluster de host menos preferível.

  7. O mecanismo de posicionamento seleciona o cluster de host superior da lista como o hub de destino.

Parâmetros ajustáveis

Para influenciar vários limites de algoritmos de seleção, existem vários parâmetros que você pode personalizar. No entanto, somente os administradores de provedores de serviços com conhecimento avançado sobre as operações do VMware Cloud Director devem tentar alterar esses parâmetros a partir de seus valores padrão, pois podem produzir resultados inesperados e indesejáveis. Primeiro, teste todas as alterações de parâmetro em um ambiente que não seja de produção.

Você pode personalizar os seguintes parâmetros usando a Ferramenta de Gerenciamento de Células.

Parâmetro Descrição
vcloud.placement.ranking.currentScoreWeight A importância relativa do componente atual da pontuação do cluster do host. O valor deve estar em [0.1]. Quando o valor for 0, o mecanismo classificará o cluster de hosts apenas com base na pontuação futura. Quando o valor for 1, o mecanismo classifica o cluster do host apenas com base na pontuação atual. O padrão é 0,5.

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

A porcentagem de alocação além da reserva de uma VM que o classificador usa para estimar a carga do cluster. O valor é de 0 a 1. 0 significa que uma VM usa apenas sua reserva. 1 significa que a VM está totalmente ocupada. O padrão é 0,67.
vcloud.placement.ranking.futureDeployRatio A porcentagem de VMs neste cluster de hosts que devem ser implantadas e consumir memória e CPU. O valor é de 0 a 1. O padrão é 0,5.

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

Esses parâmetros dão o controle para deixar recursos adicionais para crescimento em um cluster de hosts. O mecanismo define o espaço livre como uma proporção de recursos não reservados. Por exemplo, se o vcloud.placement.ranking.memoryHeadRoom for 0,2, depois que um cluster de hosts tiver menos de 20% de recursos disponíveis, o mecanismo o considerará como um cluster com espaço livre de memória insuficiente e o classificará como inferior aos outros clusters de hosts. O valor deve ser de 0 a 1. O padrão é 0,2.

Exemplo:
./cell-management-tool manage-config -n vcloud.placement.ranking.memoryHeadRoom -v 0.3 

Filtros de Datastore e Algoritmo de Posicionamento de Armazenamento

Filtros de datastore e o algoritmo de posicionamento de armazenamento do VMware Cloud Director determinam o posicionamento de arquivos e discos de VM nos recursos de armazenamento subjacentes. Contêineres de armazenamento representam os recursos de armazenamento, seja um datastore ou um cluster de datastores.

Os filtros de datastore fazem parte da cadeia de filtros de armazenamento, o que ajuda a restringir os contêineres de armazenamento qualificados, com base nos requisitos do objeto de posicionamento. Os filtros usam os contêineres de armazenamento disponíveis em um VDC de provedor como uma lista de entradas. Os filtros são executados em uma sequência predefinida e cada filtro passa a lista refinada dos contêineres de armazenamento para o próximo filtro. O VMware Cloud Director ignora os filtros não aplicáveis. Por exemplo, para VMs sem uma configuração de IOPS. O VMware Cloud Director não executa o filtro de IOPS.

Tabela 1. Filtros de datastore
Filtrar Descrição
AffinityDatastoreFilter Filtra os contêineres de armazenamento com base em regras de afinidade e antiafinidade definidas para os datastores. O VMware Cloud Director define regras de afinidade de datastore em casos como importação de VMs do vCenter Server, migração de tenants e assim por diante.
AlreadyOnValidDatastoreFilter Se um objeto de posicionamento já estiver posicionado em um datastore válido, esse filtro rejeitará todos os outros contêineres de armazenamento e reterá somente o datastore válido.
BadHostsFilter Filtra os contêineres de armazenamento que não tenham pelo menos um host conectado, operacional e ligado. Filtra os contêineres de armazenamento que foram excluídos do inventário.
DatastoreClusterFilter

Filtra todos os clusters de datastores e os datastores que fazem parte de um cluster de datastores. Esse filtro é usado quando o objeto de posicionamento não requer clusters de datastores. Por exemplo, se discos nomeados compartilhados não forem permitidos nos clusters de datastores, com base em config: vcloud.disk.shared.allowOnSpod.

DatastoreFsFilter Filtra todos os contêineres de armazenamento que fazem parte do sistema de arquivos especificado. Por exemplo, se discos nomeados compartilhados não forem permitidos em datastores NFS, com base em config: vcloud.disk.shared.allowOnNfs, o algoritmo de posicionamento adicionará esse filtro à cadeia.
DisabledDatastoreFilter Filtra todos os contêineres de armazenamento desativados da lista de entrada.
IopsCapacityDatastoreFilter

Filtra todos os datastores que não têm capacidade de IOPS suficiente para a VM.

O filtro será executado se os seguintes pré-requisitos forem atendidos.

  • A VM tem uma configuração de IOPS.
  • Não há pods de armazenamento.
  • Todos os datastores têm iopsCapacities definido.
  • A VM ativou o recurso de VCD/IOPS da política de armazenamento e a opção Afetar Posicionamento das configurações da política de armazenamento está ativada.
LeastProvisionedFilter Destaca o contêiner de armazenamento menos provisionado.
LinkedCloneFilter Filtra todos os datastores que não têm uma VM de origem ou VMs de sombra correspondentes em um datastore. Filtra todos os datastores que têm VMs de origem com comprimento máximo permitido de cadeia excedido para os discos virtuais das VMs.
MinFreeSpaceFilter Filtra quaisquer contêineres de armazenamento que não têm espaço livre suficiente para o objeto de posicionamento. Para pods de armazenamento, o espaço livre máximo dos datastores secundários determina o espaço livre e não o espaço livre total dos datastores herdeiros ou o espaço livre do pod de armazenamento. Por exemplo, se um pod de armazenamento tiver dois datastore, respectivamente, com 3 GB e 5 GB livre. O VMware Cloud Director considerará que o espaço livre do pod de armazenamento é de 5 GB. Não houver tais contêineres; o filtro manterá o contêiner com mais espaço livre.
MostFreeSpaceFilter Destaca o contêiner de armazenamento com o maior espaço livre.
StorageClassFilter Filtra todos os contêineres de armazenamento ou pods de armazenamento que não correspondem à política de armazenamento do assunto de posicionamento, definida em seu requisito.
ThresholdFilter Filtra os contêineres de armazenamento que atingem o limite especificado de capacidade disponível. Existem limites amarelo e vermelho no VMware Cloud Director. Consulte Configurar limites de pouco espaço em disco para um contêiner de armazenamento de centro de dados virtual de provedor.
VirtualMachineFilter Filtra todos os contêineres de armazenamento aos quais a VM especificada não tem acesso.

O VMware Cloud Director passa a lista final de contêineres de armazenamento filtrados para o algoritmo de posicionamento que tenta colocar o assunto de posicionamento selecionados.

Para colocar o conjunto de objetos de posicionamento no melhor datastore possível para cada um, o algoritmo de posicionamento de armazenamento usa critérios configuráveis e a lista de datastores válidos. O algoritmo de posicionamento de armazenamento usa o seguinte fluxo de trabalho.
  1. Recebe do mecanismo de posicionamento um conjunto de objetos de posicionamento e um pool de recursos de destino que respalda o VDC de provedor. Há duas alternativas.

    • Normalmente, o algoritmo recebe um arquivo inicial da VM contendo metadados e informações de configuração e um conjunto de discos para posicionamento de VMs regulares e sem provisionamento rápido.
    • O algoritmo pode usar uma abordagem de disco agregado para discos nomeados e VMs de provisionamento rápido. Em outras palavras, para cada VM com provisionamento rápido, o algoritmo recebe um único requisito para a VM e todos os seus discos.
  2. Recebe o conjunto de contêineres de armazenamento qualificados para esse hub, o que inclui datastores e pods de armazenamento.
  3. Para filtrar os contêineres de armazenamento que não podem se encaixar em um assunto, para cada assunto de posicionamento, o algoritmo é executado por meio da cadeia estática de filtros de posicionamento. Por exemplo, se um disco de VM não couber em um datastore, o algoritmo marcará esse datastore como não qualificado para o disco de VM.
  4. Classifica os contêineres de armazenamento para cada objeto na ordem de sua preferência, seguindo consecutivamente as considerações subsequentes.
    1. Se o contêiner é como um pod de armazenamento ou um datastore
    2. Quantos outros assuntos de posicionamento contêm o pod de armazenamento como um contêiner válido
    3. Tamanho do contêiner
  5. Se qualquer um dos contêineres for um pod de armazenamento para reduzir os pods de armazenamento para datastores, o algoritmo executará o algoritmo de invocação do vSphere Storage DRS.
  6. Depois de inserir os objetos de posicionamento e seu conjunto de datastores válidos, determina onde o objeto de posicionamento deve residir.
  7. Retorna um resultado final de posicionamento que determina os datastores nos quais cada objeto de posicionamento deve residir ou retorna um erro informando que o algoritmo do VMware Cloud Director não consegue encontrar um posicionamento adequado.