Pular para o conteúdo principal

Movimentação de uma VM: troca de nó e de pool

"Mover uma VM" no vStack Center significa duas operações diferentes, com mecanismos diferentes. A escolha depende do problema que você precisa resolver. Se um nó vai entrar em manutenção, a máquina precisa ser executada em outro nó enquanto seus dados permanecem onde estão. Se um pool está ficando sem espaço ou sendo desativado, você precisa mover os dados para outro pool, e o nó que executa a máquina não importa.

informação

A migração ao vivo foi introduzida na versão 3.1.0: uma máquina em execução é movida para outro nó sem ser parada, e o SO convidado continua em execução. A movimentação de dados entre pools ainda exige que a máquina esteja parada.

Esta página descreve a movimentação de uma máquina com parada prévia. Isso funciona em qualquer versão e não exige um privilégio separado. Para a migração ao vivo, seus pré-requisitos e o acompanhamento do progresso, consulte "Movimentação e clonagem de VMs". Se a migração ao vivo não estiver disponível, planeje uma janela de indisponibilidade: na troca de nó, a indisponibilidade equivale ao tempo necessário para parar e iniciar a máquina; na troca de pool, equivale ao tempo necessário para copiar os dados.

A troca de nó usa o posicionamento na inicialização. Ao iniciar uma máquina, você seleciona um nó explicitamente; sem uma seleção, o vStack Center escolhe o nó menos carregado no estado ONLINE. Isso não funciona para todas as máquinas: a inicialização remota e o posicionamento automático estão disponíveis para máquinas com discos no modo NVMe, enquanto uma máquina que usa virtio-blk só pode ser iniciada no nó que hospeda seu pool de dados.

A troca de pool é uma migração de dados: um ciclo completo de ZFS send/receive, seguido do novo registro dos discos, dos snapshots e da própria máquina e, depois, da exclusão do dataset de origem. É uma operação demorada que retorna um único resultado: o resultado chega depois que o ciclo inteiro é concluído, e não quando a cópia começa. O vStack Center não mostra o progresso da cópia.

TarefaO que fazerO que é movidoPrincipal limitação
Liberar um nó para manutenção quando a indisponibilidade é inaceitávelMigração ao vivo para o nó selecionadoApenas a execução; os dados permanecem no poolDisponível desde a versão 3.1.0; exige o privilégio Live Migrate VM; a máquina deve estar em execução
Liberar um nó para manutenção quando a indisponibilidade é aceitávelParar a máquina e iniciá-la no nó selecionadoApenas a execução; os dados permanecem no poolCom virtio-blk, a máquina só pode ser iniciada no nó do pool
Liberar um pool de armazenamentoMigrar a máquina para outro poolDados: discos, snapshots, registro da VMA VM fica parada; o pool de destino é diferente do pool de origem
Criar uma cópia rápida ao lado da origemClonar a máquinaNada é movido — uma cópia é criadaO clone fica sempre no pool de origem; a operação usa a API

Pré-requisitos​

  • Permissões sobre a máquina: o Cluster master vê qualquer VM do cluster; um usuário comum só pode trabalhar com máquinas dos seus VDCs (data centers virtuais). Iniciar e parar exigem um papel no VDC com role_id ≤ 3;
  • Para trocar de pool, o papel Cluster master: a migração está disponível apenas para esse papel;
  • O pool de destino está importado em um nó; caso contrário, o vStack Center não consegue determinar o nó do pool e retorna o código -25307;
  • Um nome de pool de destino no formato z02: uma letra seguida de dois dígitos;
  • As cotas do VDC e a capacidade do cluster permitem iniciar a máquina: a inicialização verifica tanto as cotas quanto o overcommit de memória;
  • Uma janela de indisponibilidade acordada;
  • vStack Center versão 3.0.5 para clonagem de VMs e 3.1.0 para migração ao vivo; a movimentação de uma máquina com parada prévia e a migração de dados entre pools também funcionam em versões anteriores.

Etapa 1. Registre o estado atual da máquina​

Antes de qualquer movimentação, você precisa saber três coisas: onde a máquina está agora, quais recursos ela usa e se ela pode ser executada em outro nó.

  1. Abra Provider Data Center → All Virtual Machines e encontre a máquina. A coluna State mostra o estado, e Storage (GB) mostra quanto espaço ela ocupa.
  2. Abra o cartão da máquina e verifique a seção General properties: o nó que a executa (Node), o VDC da máquina, CPU (Cores), RAM, OS profile e VM configuration version.
  3. Leia a tabela Disks: as colunas Name, Slot, Disk size (GB), Sector size, IOps limit e MBps limit. Use-a para calcular o volume de dados a ser copiado e registre os limites de taxa.
  4. Conte os snapshots na tabela Snapshots: as colunas Name, Date of creation e Size (GB). A quantidade de snapshots deve coincidir após a migração.
O que registrarPor quê
O nó que executa a máquina (Node)Determinar de qual nó a máquina precisa sair
O pool de dados da máquinaSelecionar um pool de destino diferente do de origem
Modo do disco — NVMe ou virtio-blkDetermina se a máquina pode ser iniciada em um nó diferente do nó do pool
Estado (State)Determina se a máquina aceita um comando de inicialização ou de migração
Quantidade de snapshotsVerificação após a movimentação dos dados

O modo do disco não é exibido como um campo separado no cartão. Se a máquina usa virtio-blk, você descobre isso ao tentar iniciá-la em outro nó: a inicialização é rejeitada com o código -460.

Etapa 2. Pare a máquina​

As duas operações exigem uma máquina parada, portanto esta etapa é comum a ambas.

  1. Abra o cartão da VM (ou encontre a máquina na lista), clique em Actions e selecione o comando de parada.
  2. Se o sistema convidado não responder ao ACPI, defina um tempo limite de desligamento forçado (0–999 segundos) ou desative o desligamento via ACPI.
  3. Aguarde até que State mude para "stopped". Enquanto a operação está em andamento, a máquina fica bloqueada: outros comandos para ela são rejeitados.

O comando de parada aceita uma máquina suspensa da mesma forma que aceita uma em execução.

Tarefa A. Inicie a máquina em outro nó​

Use esta opção antes da manutenção de um nó: os dados permanecem no pool, e apenas o local de execução muda.

  1. Certifique-se de que os discos da máquina estão no modo NVMe. Uma máquina que usa virtio-blk só pode ser iniciada no nó que hospeda seu pool de dados. A tentativa de iniciá-la em outro nó retorna o código -460.
  2. Abra o cartão da VM, clique em Actions e selecione o comando de inicialização.
  3. Selecione o nó de destino. O número do nó vai de 1 até a quantidade de nós do cluster. Se você deixar a seleção automática ativada, o vStack Center escolhe o nó menos carregado no estado ONLINE. Isso é útil ao iniciar muitas máquinas após a manutenção.
  4. Aguarde até que State mude para "running" e verifique o campo Node na seção General properties. O nó em que a máquina realmente foi iniciada é exibido ali, tanto na seleção explícita quanto na automática.

Se não houver nós adequados, o código -458 é retornado.

Reiniciar não troca o nó: uma reinicialização usa o posicionamento atual da máquina. Para trocar de nó, você deve parar a máquina e depois iniciá-la.

Tarefa B. Mova os dados para outro pool​

Use esta opção quando um pool estiver cheio ou sendo desativado. A migração copia os dados por meio de um fluxo ZFS send/receive, registra novamente os discos, os snapshots e a máquina e, em seguida, exclui o dataset de origem.

  1. Selecione o pool de destino. Abra Provider Data Center → Storage Resources: a tabela ZFS pools mostra Health, Consuming, Scrubbing, Resilvering, Current node e Capacity (RAW). Escolha um pool íntegro, sem resilver nem verificação de integridade em andamento.
  2. Abra o pool e, na seção Properties, compare Free com o Disk size (GB) total de todos os discos da máquina. Deve haver espaço livre suficiente para todos os discos. O nome do pool de destino deve ter o formato z02.
  3. Certifique-se de que a máquina está parada ou foi criada, mas nunca iniciada. A migração não aceita outros estados e retorna o código -25306.
  4. Abra o cartão da VM, clique em Actions, selecione a migração e especifique o pool de destino.
  5. Aguarde a conclusão do ciclo. Enquanto ele está em andamento, a máquina fica bloqueada, e o resultado chega uma única vez, após a cópia, o novo registro e a exclusão do dataset de origem. O painel de log mostra o andamento da operação — clique em LOG.
  6. Verifique o resultado: a quantidade de snapshots na tabela Snapshots coincide com a registrada antes da migração, e o pool de origem tem mais espaço livre em Storage Resources. A API fornece o posicionamento exato dos discos entre os pools — consulte a referência da API.
  7. Inicie a máquina.

A migração para o mesmo pool é proibida e rejeitada com o código -25305. A cópia usa um conjunto limitado de portas de transferência. Quando todas estão ocupadas por outras migrações, o código -25308 é retornado. Repita a operação mais tarde.

Tarefa C. Crie uma cópia rápida em vez de mover a máquina​

Às vezes, uma cópia resolve o problema em vez de uma movimentação: por exemplo, quando você precisa testar uma atualização em uma máquina duplicada. Um clone é uma cópia instantânea copy-on-write de uma máquina parada. A operação leva segundos, independentemente do tamanho do disco, e quase não consome capacidade.

A clonagem não está disponível na interface web. Um administrador executa a operação pela API — consulte a referência da API. Apenas o nome e a descrição do clone são especificados.

  1. Pare a máquina de origem: a clonagem de uma máquina em execução é rejeitada com o código -2603.
  2. Inicie a clonagem e especifique o nome do clone.
  3. Aguarde até que o clone apareça na lista All Virtual Machines. Ele é criado pela mesma sequência de uma máquina nova: primeiro um registro, depois a montagem no nó.

O clone herda toda a configuração da origem e é criado no mesmo VDC e no mesmo pool; isso não substitui a movimentação da máquina. Os endereços MAC são gerados novamente, e os endereços são alocados como em uma criação normal.

cuidado

Um clone existente mantém o vínculo com sua origem. Enquanto o clone existir, a origem não pode ser excluída, e a migração dela falhará na etapa de exclusão dos datasets de origem. Esta é uma limitação conhecida. Remova primeiro os clones e depois mova a origem.

Conclusão do trabalho​

  1. Inicie a máquina e verifique se ela está em execução: confira State na lista de VMs e o campo Node no cartão.
  2. Após trocar de pool, verifique a capacidade liberada em Storage Resources: o pool de origem terá mais espaço livre. O dataset de origem é excluído como parte do ciclo de migração; nenhum comando separado é necessário.
  3. Verifique se os discos e os snapshots estão presentes nas tabelas Disks e Snapshots do cartão da máquina. A máquina mantém seus limites de taxa: confira IOps limit e MBps limit dos discos e o limite de largura de banda das portas de rede.
  4. Se a máquina foi movida para a manutenção de um nó, retire o nó de serviço somente depois que todas as máquinas dele tiverem sido iniciadas em outros nós.

Verificação do resultado​

O que verificarOnde verResultado esperado
A máquina é executada no nó necessárioCartão da VM, seção General propertiesO campo Node mostra o nó selecionado
A máquina está em execuçãoLista de VMs, coluna StateO estado indica "running"
Os snapshots estão presentesCartão da VM, tabela SnapshotsA quantidade de snapshots coincide com a registrada antes da migração
Os discos estão presentesCartão da VM, tabela DisksA configuração dos discos e os limites de taxa não mudaram
Foi liberado espaço no pool de origemStorage Resources, Capacity (RAW)A capacidade usada do pool de origem diminuiu
Os dados foram movidos para o pool de destinoPela APIO pool da máquina e o pool de cada disco são o pool de destino

Se algo der errado​

O que você vêCausaO que fazer
Código de erro -25300A migração está disponível apenas para o papel Cluster masterEntre com um papel de nível de cluster
Código de erro -25306A máquina não está parada nem no estado "created"Pare a máquina e aguarde até que ela realmente pare
Código de erro -25305O pool de destino é o mesmo que o de origemSelecione outro pool: a migração para o mesmo pool é proibida
Código de erro -25307Não foi possível determinar o nó do pool de destinoO pool pode não estar importado. Em Storage Resources, verifique a coluna Current node
Código de erro -25304Não foi possível determinar o nó da máquinaVerifique os estados dos nós em Server Nodes
Código de erro -25308Não há portas de transferência disponíveisAguarde a conclusão de outras migrações e tente novamente
Código de erro -25310O ciclo de migração não foi concluído: o novo registro falhouVerifique os estados da máquina e dos discos no cartão; não inicie outra migração até que a causa seja identificada
Código de erro -460A máquina usa virtio-blk: ela só pode ser iniciada no nó do seu poolNão é possível trocar o nó de execução. Migre os dados para um pool no nó necessário
Código de erro -459O Windows no modo NVMe não concluiu a configuração inicialConclua a configuração no nó do pool e depois inicie remotamente
Código de erro -458Não há nós no estado ONLINE disponíveis para posicionamentoColoque os nós de volta em serviço ou selecione um nó manualmente
Código de erro -442, -443Foi selecionado um nó inexistenteUse um número de nó da tabela Server Nodes
Código de erro -457A máquina já está em execuçãoPare-a antes de iniciá-la novamente
Código de erro -455A máquina está suspensaRetome-a e depois inicie-a
Código de erro -409A máquina está bloqueada por outra operaçãoAguarde a conclusão dessa operação; a máquina é desbloqueada automaticamente quando o nó responde
Código de erro -413, -414, -415A cota de armazenamento, memória ou núcleos do VDC está esgotadaLibere ou aumente a cota
Código de erro -440A memória do cluster está esgotada, considerando o overcommitInicie em outro nó ou libere memória
Código de erro -452Os discos não se conectaram pela rede durante a inicialização remotaInicie a máquina no nó do seu pool e verifique a conectividade da fabric
Código de erro -2603A origem do clone não está paradaPare a máquina antes de cloná-la
Código de erro -2605A máquina é gerenciada por um serviço, como um roteador definido por software (Edge)Máquinas de serviço não podem ser clonadas
Código de erro -3001, -429Nenhuma máquina com esse identificador está visível para vocêVerifique a máquina e as permissões sobre o VDC dela
A migração parece "travada", sem respostaO resultado chega uma única vez, após o ciclo inteiroAguarde: a duração depende do tamanho dos discos. O progresso da cópia não é exibido
A máquina não inicia após a migraçãoO posicionamento mudou ou os recursos são insuficientesVerifique as cotas e a disponibilidade de nós ONLINE; inicie uma máquina com virtio-blk no nó do novo pool

Limitações​

O progresso da migração não está disponível: o resultado chega quando o ciclo é concluído e não informa quantos dados foram copiados. Estime a duração a partir dos tamanhos dos discos da máquina na tabela Disks.

O pool de destino é especificado por um nome no formato z02. Um pool com qualquer outro formato de nome não pode ser especificado como destino da migração.

A migração não pode ser cancelada. Se o ciclo falhar, verifique o estado da máquina lendo o cartão dela, em vez de emitir outro comando.

Veja também​

Métodos da API​

Operações da API nesta página: vm-list, vm-get, vm-statuses, vm-snapshot-list, vms-stop, vms-start, vms-restart, vm-migration, vms-clone, pool-map-by-guid, pools-get, cluster-node-disable — consulte a referência da API.