SeamlessMigrate
NovoCargas com GPU e virada de rede, Technology Previews no 0.4.0-rc.1

Migração open source de VMs: VMware e OpenStack para RHOSO 18.0 ou OpenStack da comunidade. Mantenha suas VMs no ar.
Faça a virada em minutos.

O Seamless Migrate leva VMs do RHOSP 17.1, do OpenStack e do VMware vSphere para o RHOSO 18.0 ou o OpenStack da comunidade. Os discos são copiados enquanto a VM atende o tráfego; ela só é desligada para o delta final.

Apache 2.0 A demo não precisa de credenciais de nuvem

INATIVIDADE

Uma VM, três formas de migrá-la.

Um volume de 200 GiB com 120 GiB em uso, 2 MiB/s de escrita no convidado, em um link de 125 MiB/s. O modelo de planejamento do plano de controle estima o tempo de inatividade de cada estratégia:

  • Cópia a frio cold

    20 min 53 s de inatividade

    A VM fica desligada durante toda a cópia dos dados em uso.

  • Migração warm warm

    11 min 20 s de inatividade

    3 passagens de cópia são executadas enquanto a VM atende o tráfego (31 min 32 s); ela só é desligada para o delta final.

  • Transferência do armazenamento storage_handover

    4 min 20 s de inatividade

    Nenhum dado é copiado: em Ceph ou NetApp ONTAP compartilhado, o Cinder transfere cada volume para o destino.

PLATAFORMAS

Origens diferentes. O seu destino.

Um só modelo de planos, ondas e aprovações para todas as origens. O Seamless se comunica com cada nuvem pelas APIs públicas dela e, nos bastidores, move os dados com a coleção Ansible os-migrate.

  • Red Hat OpenStack Platform 17.1

    A última versão baseada em TripleO. Migre lado a lado quando a adoção in-place não atender.

    • cold
    • warm
    • storage_handover
  • OpenStack da comunidade e Kolla-Ansible

    Qualquer versão com Keystone v3, Nova 2.60 ou posterior, Cinder v3 e Neutron v2.

    • cold
    • warm
    • storage_handover
  • VMware vSphere 7.0U3 e 8.x

    Gerenciado pelo vCenter. Migração warm com Changed Block Tracking e conversão pelo virt-v2v.

    • vmware_cold
    • vmware_warm

Destinos

  • RHOSO 18.0

    Red Hat OpenStack Services on OpenShift, a plataforma de destino; a validação da versão em laboratório ainda está pendente. O Seamless usa as APIs públicas do OpenStack e nunca toca em recursos do OpenShift.

  • OpenStack da comunidade

    Todas as séries de versões, de 2023.1 Antelope a 2026.2 Hibiscus, implantadas com Kolla-Ansible, OpenStack-Ansible ou qualquer outra ferramenta, pelo mesmo caminho de código. A verificação de provedores informa a série, o nível de suporte e o perfil de política do destino.

  • Redes, sub-redes, roteadores e grupos de segurança recriados
  • Flavors, imagens, pares de chaves, projetos e usuários migrados
  • MTU verificada em relação às redes do destino, incluindo o Geneve no ML2/OVN
  • TLS verificado em todos os endpoints por padrão

Todos os sistemas convidados comuns

Origens OpenStack levam convidados KVM para KVM, então tudo o que inicializa na origem inicializa no destino: RHEL, CentOS, Rocky, AlmaLinux, Oracle Linux, Ubuntu, Debian, SLES e Windows. A partir do VMware, o virt-v2v no host de conversão RHEL 9 converte o convidado. Versões legadas recebem um aviso com a correção, nunca um bloqueio silencioso.

ESTRATÉGIAS

Cinco estratégias, uma escolha por VM.

O Seamless estima todas as estratégias elegíveis para cada VM e escolhe a de menor tempo de inatividade; em caso de empate, vence a mais simples. Você pode alterar a escolha.

Do OpenStack

  • cold

    Cópia a frio

    Desligar, copiar os dados em uso via SSH, inicializar no destino.

  • warm

    Warm

    Passagens de snapshot com a VM em execução; após o desligamento, só o delta final.

  • storage_handover

    Transferência do armazenamento

    Cinder unmanage na origem, manage no destino. Nenhum dado é copiado.

    Requisito: As duas nuvens no mesmo cluster Ceph ou na mesma SVM NetApp ONTAP.

Do VMware

  • vmware_cold

    VMware a frio

    Cópia completa e, depois, conversão com virt-v2v.

  • vmware_warm

    VMware warm

    Passagens de Changed Block Tracking e, depois, o delta final e uma conversão in-place.

    Requisito: Changed Block Tracking habilitado na VM.

TECHNOLOGY PREVIEWS

VMs com GPU migram. Os endereços podem ir junto.

Versão candidata, sem certificação de produção. Ainda não há testes de laboratório da versão registrados. Novidade do 0.4.0-rc.1, cada uma opcional por plano e validada em simulação: as duas rodam na demo, e os testes de laboratório em hosts com GPU e em nuvens reais ainda não foram feitos. O rótulo sai quando eles passarem.

  • Cargas com GPU

    Technology Preview, validada em simulação

    VMs com uma vGPU NVIDIA, por time-slicing ou baseada em MIG, ou com uma GPU inteira em passthrough migram em vez de ficarem bloqueadas. Os discos se movem como os de qualquer VM; nenhum estado da GPU é transferido, e a VM inicia no destino como depois de um desligamento.

    • GPUs lidas do flavor do OpenStack ou do vCenter, e exibidas no inventário
    • Cada GPU associada pelo plano a um flavor com GPU do destino, nunca por tamanho ou nome; uma VM com GPU sem associação continua bloqueada
    • Capacidade livre lida no Placement na validação e de novo antes de parar a origem; enquanto o pool estiver cheio, a origem continua em execução
    • A verificação confere o flavor com GPU e sua alocação no Placement, e as constatações indicam o driver e o servidor de licenças de que o convidado precisa
  • Virada de rede

    Technology Preview, validada em simulação

    Uma migração pode levar a identidade de rede da VM. Cada parte é opcional por plano, e um plano que não a ativa migra como antes.

    • Hooks: playbooks Ansible e webhooks HTTPS registrados por um administrador, executados em pre_stop, post_create, post_verify, on_rollback e on_finalize, cada um com tempo limite e reversão opcional
    • IPs flutuantes que mantêm o endereço em todas as estratégias do OpenStack, movidos depois que a origem para e devolvidos em um rollback
    • Uma troca de DNS no Designate ou em um servidor RFC 2136, por compare-and-swap, desfeita em um rollback
    • Uma espera de acessibilidade contada no tempo de inatividade, e um assistente do Octavia que esvazia o membro de origem e inclui a VM migrada

A validação prévia aponta o que continua com a equipe de operações, com runbooks: stacks do Heat e grupos de autoescalonamento, pools do Octavia que as ondas dividiriam, portas com address pairs e nomes DNS que o destino não consegue publicar.

Próximo: 0.5.0

Planejado: notificações por e-mail, Slack e webhooks assinados; fixação de chaves de host SSH no caminho dos dados; e, como Technology Previews, um plano de controle de alta disponibilidade, credenciais por tenant e rastreamento de extents alterados, que elimina a varredura dos discos da passada final warm em volumes Ceph RBD.

Notas da versão 0.4.0-rc.1 (abre em uma nova aba)

COMO FUNCIONA

Uma jornada. Cada etapa nas suas mãos.

Um só fluxo de trabalho para todas as origens. Cada migração percorre uma máquina de estados explícita, sobrevive a uma reinicialização do plano de controle retomando do seu checkpoint e deixa uma trilha de auditoria de cada ação.

  1. 01

    Conecte as duas nuvens

    Adicione como origem o RHOSP 17.1, o OpenStack da comunidade, o Kolla-Ansible ou o vCenter, e como destino o RHOSO 18.0 ou uma nuvem OpenStack da comunidade, com uma predefinição para cada plataforma. As credenciais são somente de escrita: vão para o repositório de segredos da plataforma, nunca para o banco de dados nem para uma resposta da API. Com um clique, você verifica cada conexão e o que ela pode fazer, e a verificação informa a série de versões, o nível de suporte e o perfil de política de um destino.

  2. 02

    Planeje ondas, começando por um piloto

    Descubra o inventário com discos, NICs, sistema operacional convidado e indicadores de prontidão. Selecione VMs, mapeie redes, flavors, tipos de volume e projetos, e deixe o planejador ordenar as ondas por risco, com um pequeno piloto primeiro. Uma onda só começa quando a anterior estiver concluída.

  3. 03

    Valide antes de mover qualquer coisa

    As verificações prévias apontam bloqueios, avisos e informações, com a correção para cada um. Cada VM recebe uma estimativa para cada estratégia elegível e uma escolha automática que você pode alterar.

  4. 04

    Copie enquanto as VMs continuam em execução

    Na migração warm, as VMs são copiadas em passagens de snapshot enquanto atendem o tráfego. Após a primeira passagem, só os blocos cujo hash BLAKE2b mudou passam pela rede, e cada passagem termina com o hash do manifesto verificado. Uma VM convergida aguarda a sua janela, mantida atualizada por sincronizações keep-warm.

  5. 05

    Faça a virada dentro da janela

    Uma virada (cutover) só começa com a aprovação de um segundo aprovador, dentro da janela de mudança e com um slot de virada livre. A VM é desligada, o delta final é sincronizado e ela inicializa no destino. A contagem do tempo de inatividade vai do desligamento até a inicialização verificada.

  6. 06

    Verifique e depois finalize

    O Seamless verifica o estado ACTIVE do servidor, as portas, os testes TCP e os padrões no console. Se uma verificação falhar, o rollback é automático: a instância no destino é removida, os volumes dela são mantidos e a VM de origem é iniciada novamente. A finalização, a única etapa que não pode ser desfeita, exige um aprovador e o nome da VM digitado por completo.

PAINEL

Cada migração, à vista.

O painel vem junto com o plano de controle: planos e ondas, cada relógio de inatividade contra seu SLO, aprovações e a trilha de auditoria, atualizados ao vivo por server-sent events. Estas são suas telas reais, capturadas na demo com nuvens simuladas.

seamless.internal/

Abrir em tamanho real (abre em uma nova aba)
A página Overview: blocos de KPI, três VMs paradas com seus relógios de inatividade contra um SLO de 15 minutos e quatro aprovações pendentes.

Todo o rollout de relance

Migrações por estado, inatividade média e conformidade com o SLO, cada VM parada neste momento com seu relógio, e as aprovações que esperam por uma pessoa: aprovações de cutover e decisões do assessor, cada uma ligada ao lugar onde se decide.

Ao vivo, sem polling
Mudanças de fase, passagens, aprovações e eventos chegam por server-sent events. Depois de uma queda de conexão, o painel retoma do último evento que viu.
Diz por quê, nunca só não
Quatro papéis, de viewer a admin. Uma ação que você não pode fazer agora continua na página e diz pelo que espera: um papel, uma aprovação, uma janela, uma fase.
WCAG 2.2 AA
Teclado em primeiro lugar, progresso e resultados anunciados a leitores de tela, alvos de 44 px, movimento reduzido respeitado, nenhum estado só por cor.
Nada de outro host
Fontes e scripts vêm com o plano de controle e nada é carregado de terceiros, então uma instalação isolada da rede fica igual.

SEGURANÇA

Reversível até você dizer que é definitivo

Aprovações, janelas e rollbacks são regras do plano de controle, não convenções de um runbook. A VM de origem fica onde está até que um aprovador finalize.

Travas que o plano de controle impõe
Uma virada só começa quando a aprovação foi dada, a janela de mudança está aberta e há um slot de virada livre.
Solicitante e aprovador
Quem solicita ou força uma virada não pode aprová-la. Isso cabe a um segundo aprovador.
Rollback até a finalização
Um rollback remove a instância no destino, mantém os volumes dela, devolve o endereço de IP flutuante ou o registro DNS que a virada moveu e inicia novamente a VM de origem. Uma verificação com falha o dispara automaticamente.
Confirmação digitada para a etapa irreversível
Nada apaga dados da origem antes da finalização, e a finalização exige um aprovador e o nome da VM digitado por completo.
Retoma após uma reinicialização
As migrações em andamento continuam do seu checkpoint quando o plano de controle volta. Uma parada planejada pode drenar primeiro: os planos entram em pausa e as viradas em andamento terminam antes que qualquer coisa pare.
Nenhuma VM de origem abandonada
Cada etapa tem um tempo máximo de execução, então um playbook travado nunca deixa uma VM desligada indefinidamente.
Toda ação registrada
Toda chamada que altera estado é auditada. Exporte a trilha ou faça o expurgo conforme o seu prazo de retenção.

IMPLANTAÇÃO

Em casa na sua infraestrutura.

Uma imagem de container e PostgreSQL. Implante no cluster OpenShift ao lado do RHOSO, em qualquer Kubernetes ou em um único host: o Docker Engine do próprio servidor Linux, o Colima em um Mac ou o Podman.

  • Linux

    Docker Engine 20.10+ com Compose v2.20+: Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux, Fedora

    $ scripts/compose-init.sh$ make seamless-up$ curl -fsS http://127.0.0.1:8080/api/v1/health$ ssh -L 8080:127.0.0.1:8080 you@your-server

    O Docker Engine do próprio servidor, sem Colima e sem Node.js: a própria imagem compila o painel. O plano de controle escuta apenas em 127.0.0.1:8080, então nenhuma porta é aberta no firewall e o painel é acessado por um túnel SSH; os containers voltam após uma reinicialização, e o SELinux pode continuar em modo enforcing.

  • macOS

    Colima, ou Docker Desktop com um contexto nomeado

    $ make seamless-colima-up$ scripts/compose-init.sh$ make seamless-up$ make seamless-logs

    Um perfil dedicado do Colima (4 CPU, 6 GiB, 40 GiB) que nunca altera o seu contexto ativo do Docker. Docker Desktop ou qualquer outro contexto: adicione SEAMLESS_DOCKER_CONTEXT=desktop-linux a cada make.

  • Podman

    4.7 ou posterior

    $ scripts/compose-init.sh$ make seamless-up SEAMLESS_ENGINE=podman$ make seamless-logs SEAMLESS_ENGINE=podman

    O podman compose executa a mesma stack, com o docker-compose como provedor quando ele está instalado. Em hosts com SELinux, o rótulo da montagem do token é ajustado automaticamente.

  • Kubernetes

    1.28 ou posterior: EKS, AKS, GKE, RKE2, k3s, kubeadm

    $ kubectl apply -k deploy/kubernetes$ kubectl -n seamless-migrate rollout status deploy/seamless$ kubectl -n seamless-migrate get ingress seamless

    Um overlay Kustomize dos manifestos do OpenShift, com um Ingress. Antes, crie os Secrets a partir do secret-example.yaml e o secret TLS seamless-tls.

  • OpenShift

    4.16 ou posterior

    $ oc apply -k deploy/openshift$ oc -n seamless-migrate rollout status deploy/seamless$ oc -n seamless-migrate get route seamless

    PostgreSQL 16, um Deployment de réplica única com hardening, uma Route com TLS edge e NetworkPolicies que negam tudo por padrão. Os Secrets ficam fora da kustomization.

FAQ

Perguntas e respostas.

O que as equipes perguntam antes de migrar a primeira VM.

O que é o Seamless Migrate?

O Seamless Migrate é um plano de controle open source, sob a Apache License 2.0, que migra máquinas virtuais (VMs) do Red Hat OpenStack Platform 17.1, do OpenStack da comunidade (incluindo o Kolla-Ansible) e do VMware vSphere para o Red Hat OpenStack Services on OpenShift (RHOSO) 18.0 ou uma nuvem OpenStack da comunidade, de 2023.1 Antelope a 2026.2 Hibiscus. Ele planeja ondas, estima o tempo de inatividade de cada VM, copia os discos enquanto as VMs continuam em execução, condiciona cada virada a uma aprovação e a uma janela de mudança, verifica cada VM no destino e faz o rollback automaticamente quando uma verificação falha.

Como migrar VMs do VMware vSphere para o OpenStack?

Adicione o vCenter (vSphere 7.0U3 ou 8.x) como origem e o RHOSO 18.0 ou uma nuvem OpenStack da comunidade como destino; depois, planeje as ondas e valide-as. VMs com Changed Block Tracking (CBT) usam a migração warm: passagens de CBT copiam os discos enquanto a VM está em execução e, na virada, só o delta final é copiado antes de uma conversão in-place com virt-v2v. VMs sem CBT usam a migração a frio: uma cópia completa e, depois, a conversão. Os dados passam pelo vmware-migration-kit do os-migrate e por um host de conversão com VDDK na nuvem de destino.

Posso migrar cargas de trabalho do RHOSP 17.1 para o RHOSO 18.0 sem uma adoção in-place?

Sim. O procedimento de adoção da Red Hat converte uma implantação 17.1 in-place. Quando isso não atende, seja por hardware novo, por um novo backend de armazenamento, por um redesenho de rede como ML2/OVS para ML2/OVN ou por várias nuvens a consolidar, o Seamless Migrate migra as cargas de trabalho lado a lado: recria redes, grupos de segurança, flavors, imagens, pares de chaves, projetos e usuários no RHOSO e, então, migra cada VM com cópia a frio, migração warm ou transferência do armazenamento.

Posso migrar para uma nuvem OpenStack da comunidade em vez do RHOSO?

Sim. Além do RHOSO 18.0, toda série de versões do OpenStack da comunidade, de 2023.1 Antelope a 2026.2 Hibiscus, é um destino, tenha sido implantada com Kolla-Ansible, OpenStack-Ansible ou outra ferramenta: registre-a com a predefinição OpenStack Community ou Kolla-Ansible, e as mesmas estratégias de cópia a frio, migração warm e transferência do armazenamento são executadas nela. A verificação de provedores informa a série de versões, o nível de suporte e o perfil de política de cada destino, e a validação prévia bloqueia um plano quando falta uma capacidade, antes de mover qualquer coisa. Hoje, o RHOSO 18.0 é a plataforma de destino; a validação da versão em laboratório ainda está pendente; a validação em laboratório de cada série da comunidade mantida pelo upstream ainda não foi feita e vem antes de uma versão final.

Quanto tempo de inatividade uma migração exige?

Depende da estratégia e da VM. Para um volume de 200 GiB com 120 GiB em uso, 2 MiB/s de escrita no convidado e um link de 125 MiB/s, o modelo de planejamento estima 20 min 53 s para uma cópia a frio, 11 min 20 s para uma migração warm e 4 min 20 s para uma transferência do armazenamento. Na migração warm, o tempo de inatividade depende do delta final e de uma varredura do disco, não da cópia completa.

Qual é a diferença entre migração a frio, migração warm e transferência do armazenamento?

Uma migração a frio desliga a VM e copia os dados em uso, então o tempo de inatividade cresce com o disco. Uma migração warm copia os discos em passagens de snapshot enquanto a VM continua em execução, e a VM só é desligada para o delta final. Uma transferência do armazenamento (storage handover) não copia dado algum: quando as duas nuvens compartilham um cluster Ceph ou uma SVM NetApp ONTAP, o Cinder faz o unmanage de cada volume na origem e o manage no destino, então o tempo de inatividade é de poucos minutos, qualquer que seja o tamanho.

É possível migrar VMs com GPU?

Sim, como Technology Preview validada em simulação. VMs com uma vGPU NVIDIA, por time-slicing ou baseada em MIG, ou com uma GPU inteira em passthrough migram assim que o plano associa cada GPU a um flavor com GPU do destino; uma VM com GPU sem associação continua bloqueada. A validação compara as GPUs do plano com a capacidade livre do destino no Placement, e o portão da virada a lê de novo antes de parar a origem: sem espaço, a migração espera e a origem continua em execução. Uma VM do VMware com GPU em passthrough só se move a frio, desligada. Os testes de laboratório em hosts com GPU ainda não foram feitos.

As VMs migradas mantêm seus endereços IP e nomes DNS?

IPs fixos e endereços MAC são mantidos por padrão. Como Technology Preview validada em simulação, um plano também pode manter o endereço de cada IP flutuante, movido depois que a origem para e devolvido em um rollback, e trocar um registro DNS no Designate ou em um servidor RFC 2136 quando um endereço muda. A verificação espera até que cada endereço movido responda e conta essa espera no tempo de inatividade; o Seamless não fala BGP por conta própria. Hooks registrados por um administrador, playbooks Ansible ou webhooks HTTPS, cobrem o resto, e a validação prévia aponta o que continua com a equipe de operações, como stacks do Heat, grupos de autoescalonamento e pools do Octavia.

Posso fazer rollback de uma migração?

Sim, até você finalizar. Um rollback remove a instância no destino, mantém os volumes dela e inicia novamente a VM de origem, e uma verificação com falha o dispara automaticamente. Nada apaga dados da origem antes da finalização, e a finalização exige um aprovador e o nome da VM digitado por completo.

Quais sistemas operacionais convidados podem ser migrados?

A partir do OpenStack, convidados KVM vão para KVM, então tudo o que inicializa na origem inicializa no destino: RHEL 5 a 10, CentOS, Rocky, AlmaLinux, Oracle Linux, Ubuntu, Debian, SLES, openSUSE, Windows Server 2003 a 2025 e Windows 7 a 11. A partir do VMware, o virt-v2v converte o convidado: RHEL 7 a 10 e Windows Server 2016 a 2025 têm suporte da Red Hat; os demais convidados funcionam após uma cópia de teste ou precisam ter os drivers virtio instalados antes.

Onde o Seamless Migrate roda?

É uma imagem de container mais o PostgreSQL 16. Implante no OpenShift 4.16 ou posterior, ao lado do RHOSO, no Kubernetes 1.28 ou posterior (EKS, AKS, GKE, RKE2, k3s, kubeadm) ou em um único host: o Docker Engine do próprio servidor Linux, 20.10 ou posterior, com Compose v2.20 (Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux, Fedora; sem Colima, sem Node.js), um Mac com Colima ou o Podman 4.7 ou posterior. Um só script de operações, o seamless-ctl.sh, sobe, derruba, reinicia e escala uma implantação da mesma forma em todas as plataformas, e drena os planos em execução antes de uma parada planejada. Uma demo com nuvens simuladas roda em um notebook e não precisa de credenciais de nuvem.

O Seamless Migrate é gratuito?

Sim. É open source sob a Apache License 2.0, e o código-fonte está no GitHub.

O Seamless Migrate é um produto da Red Hat?

Não. É um projeto open source independente, não afiliado, patrocinado ou endossado pela Red Hat, pela OpenInfra Foundation ou pela Broadcom, e não é coberto por nenhuma subscrição da Red Hat. Ele se baseia na coleção Ansible upstream os-migrate, que continua responsável por mover os dados.

Qual é a diferença entre o Seamless Migrate e o os-migrate?

O os-migrate exporta e importa recursos de tenants e copia cargas de trabalho a frio, com a VM desligada durante toda a cópia. O Seamless Migrate se baseia nele e acrescenta um caminho warm para origens OpenStack, transferência do armazenamento, orquestração warm para VMware e um plano de controle com planos, ondas, estimativas de tempo de inatividade, aprovações, verificação, rollback, um dashboard, uma REST API e uma CLI.

COMECE AGORA

Grandes possibilidades.
Primeiro, um pequeno piloto.

A demo executa todas as fases, da pré-cópia à virada, à verificação e ao rollback, com nuvens simuladas no seu notebook. Você não precisa de OpenStack para experimentar.

Docker em um servidor Linux, ou Colima em um Mac

$ git clone https://github.com/imransetiadi/seamless-vms-migration$ cd seamless-vms-migration# só no macOS: desnecessário no Linux$ make seamless-colima-up$ scripts/compose-init.sh# nuvens simuladas, todas as fases$ make seamless-demo

Experimente a demo local (abre em uma nova aba)Faça login em /login com o token de administrador que o compose-init.sh exibiu. O Podman também funciona: SEAMLESS_ENGINE=podman.