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.
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.
| Tarefa | O que fazer | O que é movido | Principal limitação |
|---|---|---|---|
| Liberar um nó para manutenção quando a indisponibilidade é inaceitável | Migração ao vivo para o nó selecionado | Apenas a execução; os dados permanecem no pool | Disponí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ável | Parar a máquina e iniciá-la no nó selecionado | Apenas a execução; os dados permanecem no pool | Com virtio-blk, a máquina só pode ser iniciada no nó do pool |
| Liberar um pool de armazenamento | Migrar a máquina para outro pool | Dados: discos, snapshots, registro da VM | A VM fica parada; o pool de destino é diferente do pool de origem |
| Criar uma cópia rápida ao lado da origem | Clonar a máquina | Nada é movido — uma cópia é criada | O 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ó.
- 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.
- 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.
- 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.
- 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 registrar | Por quê |
|---|---|
| O nó que executa a máquina (Node) | Determinar de qual nó a máquina precisa sair |
| O pool de dados da máquina | Selecionar um pool de destino diferente do de origem |
| Modo do disco — NVMe ou virtio-blk | Determina 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 snapshots | Verificaçã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.
- Abra o cartão da VM (ou encontre a máquina na lista), clique em Actions e selecione o comando de parada.
- 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.
- 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.
- 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.
- Abra o cartão da VM, clique em Actions e selecione o comando de inicialização.
- 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.
- 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.
- 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.
- 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. - 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.
- Abra o cartão da VM, clique em Actions, selecione a migração e especifique o pool de destino.
- 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.
- 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.
- 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.
- Pare a máquina de origem: a clonagem de uma máquina em execução é rejeitada com o código -2603.
- Inicie a clonagem e especifique o nome do clone.
- 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.
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
- 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.
- 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.
- 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.
- 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 verificar | Onde ver | Resultado esperado |
|---|---|---|
| A máquina é executada no nó necessário | Cartão da VM, seção General properties | O campo Node mostra o nó selecionado |
| A máquina está em execução | Lista de VMs, coluna State | O estado indica "running" |
| Os snapshots estão presentes | Cartão da VM, tabela Snapshots | A quantidade de snapshots coincide com a registrada antes da migração |
| Os discos estão presentes | Cartão da VM, tabela Disks | A configuração dos discos e os limites de taxa não mudaram |
| Foi liberado espaço no pool de origem | Storage Resources, Capacity (RAW) | A capacidade usada do pool de origem diminuiu |
| Os dados foram movidos para o pool de destino | Pela API | O pool da máquina e o pool de cada disco são o pool de destino |
Se algo der errado
| O que você vê | Causa | O que fazer |
|---|---|---|
| Código de erro -25300 | A migração está disponível apenas para o papel Cluster master | Entre com um papel de nível de cluster |
| Código de erro -25306 | A 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 -25305 | O pool de destino é o mesmo que o de origem | Selecione outro pool: a migração para o mesmo pool é proibida |
| Código de erro -25307 | Não foi possível determinar o nó do pool de destino | O pool pode não estar importado. Em Storage Resources, verifique a coluna Current node |
| Código de erro -25304 | Não foi possível determinar o nó da máquina | Verifique os estados dos nós em Server Nodes |
| Código de erro -25308 | Não há portas de transferência disponíveis | Aguarde a conclusão de outras migrações e tente novamente |
| Código de erro -25310 | O ciclo de migração não foi concluído: o novo registro falhou | Verifique 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 -460 | A máquina usa virtio-blk: ela só pode ser iniciada no nó do seu pool | Não é possível trocar o nó de execução. Migre os dados para um pool no nó necessário |
| Código de erro -459 | O Windows no modo NVMe não concluiu a configuração inicial | Conclua a configuração no nó do pool e depois inicie remotamente |
| Código de erro -458 | Não há nós no estado ONLINE disponíveis para posicionamento | Coloque os nós de volta em serviço ou selecione um nó manualmente |
| Código de erro -442, -443 | Foi selecionado um nó inexistente | Use um número de nó da tabela Server Nodes |
| Código de erro -457 | A máquina já está em execução | Pare-a antes de iniciá-la novamente |
| Código de erro -455 | A máquina está suspensa | Retome-a e depois inicie-a |
| Código de erro -409 | A máquina está bloqueada por outra operação | Aguarde a conclusão dessa operação; a máquina é desbloqueada automaticamente quando o nó responde |
| Código de erro -413, -414, -415 | A cota de armazenamento, memória ou núcleos do VDC está esgotada | Libere ou aumente a cota |
| Código de erro -440 | A memória do cluster está esgotada, considerando o overcommit | Inicie em outro nó ou libere memória |
| Código de erro -452 | Os discos não se conectaram pela rede durante a inicialização remota | Inicie a máquina no nó do seu pool e verifique a conectividade da fabric |
| Código de erro -2603 | A origem do clone não está parada | Pare a máquina antes de cloná-la |
| Código de erro -2605 | A 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, -429 | Nenhuma 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 resposta | O resultado chega uma única vez, após o ciclo inteiro | Aguarde: 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ção | O posicionamento mudou ou os recursos são insuficientes | Verifique 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
- O conjunto completo de operações de migração e clonagem — "Movimentação e clonagem de VMs".
- O ciclo de vida da máquina e seus estados — "Ciclo de vida da máquina virtual".
- Seleção de um pool de destino por capacidade e integridade — "Visualização dos pools do cluster".
- Retirada de um nó de serviço para manutenção — "Gerenciamento dos nós do cluster".
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.