Como migrar e clonar uma VM
As operações desta página servem a propósitos diferentes. A migração ao vivo move o estado computacional de uma VM em execução — memória e estado da CPU — para outro nó sem tocar nos dados. A migração de armazenamento move os datasets da VM de um pool para outro por meio de um fluxo ZFS send/receive. A clonagem cria, em segundos, uma cópia copy-on-write dos discos no mesmo pool, quase sem uso de capacidade. A restauração a partir da área de importação recria uma VM a partir de um fluxo recebido anteriormente pelo cluster.
Isso define onde cada operação se aplica. Mover dados entre pools leva um tempo proporcional ao tamanho dos discos e exige uma VM desligada. Já a migração ao vivo do estado computacional funciona apenas com uma VM em execução: o sistema operacional guest continua em execução, e a indisponibilidade se limita à janela de comutação, definida por um parâmetro. Um clone é instantâneo, mas fica no mesmo pool e depende de um snapshot da origem: enquanto o clone existir, a origem não pode ser excluída, e o ZFS impede que ela seja revertida para um snapshot mais antigo que o ponto de clonagem.
Um clone herda toda a configuração da origem: vCPU, RAM, discos, redes e configurações do guest. Esses itens não podem ser substituídos na criação; apenas o nome e a descrição são especificados. Os endereços MAC são gerados novamente, e os endereços IP são alocados como na criação normal, mas apenas para as famílias de endereços em que a porta de origem tinha um endereço.
Como migrar uma VM em execução para outro nó
A migração ao vivo foi introduzida na versão 3.1.0. Ela move o estado computacional de uma VM em execução para o nó selecionado; os discos permanecem no pool e ficam acessíveis ao novo nó pela rede. O sistema operacional guest continua em execução e fica indisponível apenas durante a comutação.
A operação está disponível para o papel Cluster master por meio do privilégio
Live Migrate VM (1607). Atribua o privilégio a um papel personalizado manualmente. A
leitura do progresso exige um privilégio separado, View VM Migration Status (1113).
Pré-requisitos:
- A VM está em execução e a configuração inicial dela foi concluída.
- O nó de destino existe e é diferente do nó atual.
- A VM não está bloqueada e não há outra migração em andamento para ela.
- O cluster tem uma porta de transferência disponível para o fluxo de memória.
- Abra o cartão da VM e inicie a migração, selecionando o tipo "para outro nó" e o nó de destino. O tempo limite total da operação (300 segundos) e a janela de comutação (100 milissegundos) usam os valores padrão e não podem ser configurados na interface.
- A operação é aceita imediatamente, e o trabalho continua em segundo plano.
- Acompanhe o progresso da migração: são informados o estado, a fase, o percentual de conclusão e os nós de origem e de destino, além do motivo da falha, se ela ocorrer.
Até a migração terminar, as operações que poderiam interferir nela — parada, alteração da configuração e desbloqueio — são rejeitadas com um erro claro. A leitura dos dados da VM continua disponível. Durante a migração, a própria migração controla o estado da VM: ao final, a VM é listada como em execução ou recebe um erro de migração.
O progresso da migração está vinculado ao identificador da operação iniciada, e a API não tem um método para "encontrar a migração ativa de uma VM". Se você atualizar a página, o percentual de conclusão deixará de ser exibido, mas a migração continuará. É possível saber que a VM está sendo migrada pelo estado dela na lista de VMs.
| Falha | Motivo | Solução |
|---|---|---|
-403 missing privilege | O papel não tem Live Migrate VM ou View VM Migration Status | Execute a operação com o papel Cluster master ou atribua o privilégio a um papel personalizado |
-1601 invalid migration type | O tipo especificado está fora do conjunto "compute" / "storage" | Selecione um dos dois procedimentos |
-1602 unsuitable parameter set | Foi informado um pool de destino para a migração para um nó, ou vice-versa | Especifique um nó de destino para trocar de nó ou um pool de destino para trocar de pool |
-1603 VM not found | Foi especificado um identificador de VM inexistente | Verifique o identificador na lista de VMs |
-1604 VM outside access scope | A VM pertence a um VDC indisponível para o papel | Trabalhe no seu VDC |
-1605 VM state does not allow migration | Para uma troca de nó, a VM não está em execução ou a configuração inicial dela não foi concluída | Inicie a VM e aguarde a conclusão da configuração |
-1606 target node not found | Não existe nenhum nó com esse número no cluster | Selecione um nó da lista de nós do cluster |
-1607 target node is the current node | A VM já está em execução nesse nó | Selecione outro nó |
-1608 live migration unavailable | O pool de portas de transferência está esgotado | Aguarde a conclusão das migrações em andamento |
-1611 migration already in progress | A VM está bloqueada ou tem uma migração não concluída | Aguarde a conclusão e tente novamente |
-1612 migration not found | O status foi solicitado para um identificador desconhecido | Use o identificador retornado quando a migração foi iniciada |
Para migrar dados entre pools, o mesmo método aceita um segundo procedimento, com um
pool de destino em vez de um nó de destino e uma VM parada. O caminho legado por meio de
vm-migration é descrito a seguir; ele continua funcionando.
Como migrar uma VM para outro pool
A migração está disponível apenas para o papel Cluster master e exige que a migração esteja habilitada nas configurações do cluster.
Pré-requisitos:
- A VM está desligada ou foi criada, mas nunca iniciada.
- O pool de destino é diferente do pool atual.
- O pool de destino está importado em um nó do cluster.
- Existe uma porta disponível para o fluxo send/receive.
Inicie a migração e especifique o pool de destino. A operação conclui um ciclo completo: transferência do fluxo, novo registro dos discos, dos snapshots e da própria VM no novo pool e exclusão dos datasets de origem. A VM permanece bloqueada até o ciclo terminar; o resultado é exibido no cartão dela e no histórico de eventos.
| Falha | Motivo | Solução |
|---|---|---|
-25300 operation available only to the Cluster master role | Outro papel solicitou a migração | Execute a operação com um papel no nível do cluster |
-25306 VM not in Offline/Created state | A VM está em execução ou suspensa | Pare a VM |
-25305 migration to the same pool is impossible | O pool de destino é o pool atual | Especifique outro pool |
-25307 unable to determine the node for the migration pool | O pool não está importado | Verifique o estado do pool de destino |
-25304 unable to determine the node for the VM | O posicionamento da VM é desconhecido | Verifique os estados do nó e do pool da VM |
-25308 no available send-receive ports | Todas as portas de transferência estão ocupadas | Aguarde a conclusão das transferências em andamento |
-25310 migration failed | O novo registro falhou após a transferência | Verifique o estado da VM nos dois pools e tente novamente |
Leve os clones em conta separadamente: se a VM a ser migrada tiver clones CoW existentes, a migração encontrará uma dependência ao excluir os datasets de origem. Essa é uma limitação conhecida. Exclua os clones antes da migração.
Como clonar uma VM
Um clone é uma nova VM com a mesma configuração, no mesmo VDC (data center virtual) e no mesmo pool. É necessário o privilégio de criação de VMs com escopo no VDC de origem.
-
Pare a VM de origem. A clonagem de uma VM em execução é rejeitada com o erro
-2603. -
Inicie a clonagem da origem e insira o nome do clone e, opcionalmente, uma descrição. Os demais parâmetros são herdados e não podem ser editados nesta etapa.
-
Aguarde até que o clone apareça na lista de VMs. Ele é criado pela mesma sequência de uma nova VM: primeiro o registro, depois a montagem no nó.
Restrições da clonagem
| Restrição | Motivo | Ação |
|---|---|---|
| O clone sempre fica no pool de origem | É assim que o zfs clone funciona | Se precisar de uma cópia em outro pool, clone primeiro e depois migre |
| A configuração não pode ser substituída | O clone herda toda a configuração de vCPU, RAM, discos e redes da origem | Edite os parâmetros no cartão do clone após a criação |
| Uma chamada cria um clone | Não há modo em lote | Repita a operação quantas vezes for necessário |
| A origem não pode ser excluída enquanto houver um clone | O clone depende de um snapshot da origem | Exclua os clones e depois a origem; caso contrário, a exclusão retorna -2604 com a lista de clones |
| VMs de serviço não podem ser clonadas | O clone herdaria a vinculação de serviço sem a configuração de suporte: erro -2605 | Crie a VM de serviço pelo procedimento padrão |
| Um clone não pode ser clonado | Um clone de um clone criaria uma cadeia de clones ZFS dependentes. O erro -2606 é retornado antes das verificações de bloqueio e de estado da origem | Clone novamente a VM original. A VM mantém o marcador de clone permanentemente, inclusive depois que a origem é excluída |
| Dois clones da mesma origem no mesmo segundo | As duas operações usam o mesmo nome de ponto de snapshot | Normalmente, a segunda operação reutiliza o snapshot da primeira; se ocorrer uma condição de corrida, repita a operação |
Outras falhas: -2601 significa que a origem não foi encontrada, -2602 significa que
a origem está bloqueada, -2610 significa que a criação do clone falhou, -255
significa que o pool de origem não aceita dados, -256 significa que o perfil de SO da
origem não foi encontrado, e -403 significa privilégios insuficientes ou que a VM está
fora do escopo do papel.
Como restaurar uma VM a partir da área de importação
A área de importação é o local onde o cluster recebe fluxos de VMs vindos de fora. A restauração a partir dela é uma etapa separada do operador: a VM não é recriada automaticamente.
A área de importação é aberta na guia Import area: uma tabela com as colunas Dataset Id, VM name e Progress. O Cluster master vê todos os registros; um usuário comum vê os registros dos VDCs em que tem um papel de administrador.
-
Encontre o registro desejado e verifique se a recepção foi concluída: a coluna Progress mostra o progresso da transferência, e somente registros totalmente recebidos podem ser restaurados.
-
Decida quais identificadores usar para restaurar a VM. Por padrão, a restauração usa os identificadores originais. Nesse caso, não pode existir no cluster nenhuma VM com o mesmo identificador; caso contrário, é retornado o erro
-25208. No segundo modo, o vStack Center atribui novos identificadores e não executa essa verificação. Verifique também se o pool e o VDC originais ainda existem. -
Inicie a restauração do registro selecionado e aguarde até que a VM apareça na lista de VMs.
Por padrão, a restauração recria a VM com os identificadores originais: registros da VM, dos discos e das portas de rede, portas de console e, se houver, o snapshot registrado com o fluxo.
O segundo modo atribui novos identificadores. O vStack Center cria a VM como nova: identificador próprio, discos em um novo dataset, novas portas de console e novas portas de rede nas mesmas redes. As portas recebem novos endereços e endereços MAC, com o IP guard habilitado. Um snapshot recebido com o fluxo é registrado nos dois modos.
| Falha | Motivo | Solução |
|---|---|---|
-25206 Import area item is not finished | A recepção do fluxo não foi concluída | Aguarde a conclusão da recepção |
-25208 Specified VM id exists already | Já existe no cluster uma VM com o identificador original | Exclua a VM conflitante ou restaure com novos identificadores. Renomear não libera o identificador |
-25205 VM item is not defined, -25207 Import area item has no VM id | O registro da área de importação está incompleto | Receba o fluxo novamente |
-25209 Can't retrieve pool map | O pool do registro está indisponível | Verifique o estado do pool |
-25210, -25211 console port allocation failed | Não foi possível alocar as portas de console | Tente novamente mais tarde |
-25220–-25223 MAC or port address conflict | O endereço ou o endereço MAC do registro já está em uso | Libere o endereço ou exclua a porta conflitante |
-25224 Can't parse dataset name | O nome do dataset não pode ser interpretado | Selecione novamente o registro na lista da área de importação |
Veja também
- Como criar snapshots de VM e reverter para eles — o que não pode ser revertido enquanto houver um clone
- Como criar, excluir e mover uma máquina virtual — criação de uma VM do zero e exclusão da origem
Métodos da API
As operações da API desta página são vm-migrate, vm-migrate-status, vm-migration,
vms-clone, vm-import-area-list e vm-import-area-process — consulte a
referência da API.