SeamlessMigrate
NovedadCargas con GPU y conmutación de red, Technology Previews en 0.4.0-rc.1

Migración de VM de código abierto: de VMware y OpenStack a RHOSO 18.0 u OpenStack de la comunidad. Mantén tus VM en marcha.
Conmuta en minutos.

Seamless Migrate lleva las VM de RHOSP 17.1, OpenStack y VMware vSphere a RHOSO 18.0 u OpenStack de la comunidad. Los discos se copian mientras la VM sigue dando servicio; solo se detiene para el delta final.

Apache 2.0 La demo no necesita credenciales de nube

TIEMPO DE INACTIVIDAD

Una VM, tres formas de migrarla.

Un volumen de 200 GiB con 120 GiB usados, 2 MiB/s de escrituras del sistema invitado y un enlace de 125 MiB/s. El modelo de planificación del plano de control estima el tiempo de inactividad de cada estrategia:

  • Copia en frío cold

    20 min 53 s de inactividad

    La VM permanece detenida durante toda la copia de sus datos usados.

  • Migración warm warm

    11 min 20 s de inactividad

    Se ejecutan 3 pasadas de copia mientras la VM sigue dando servicio (31 min 32 s); solo se detiene para el delta final.

  • Traspaso del almacenamiento storage_handover

    4 min 20 s de inactividad

    No se copian datos: con Ceph o NetApp ONTAP compartido, Cinder traspasa cada volumen al destino.

PLATAFORMAS

Orígenes distintos. Tu destino.

Un mismo modelo de planes, oleadas y aprobaciones para todos los orígenes. Seamless se comunica con cada nube a través de sus API públicas y, por debajo, mueve los datos con la colección de Ansible os-migrate.

  • Red Hat OpenStack Platform 17.1

    La última versión basada en TripleO. Migra en paralelo cuando la adopción in situ no encaja.

    • cold
    • warm
    • storage_handover
  • OpenStack de la comunidad y Kolla-Ansible

    Cualquier versión con Keystone v3, Nova 2.60 o posterior, Cinder v3 y Neutron v2.

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

    Gestionado por vCenter. Migración warm con Changed Block Tracking y conversión con virt-v2v.

    • vmware_cold
    • vmware_warm

Destinos

  • RHOSO 18.0

    Red Hat OpenStack Services on OpenShift, la plataforma de destino; la validación de la versión en laboratorio sigue pendiente. Seamless usa sus API públicas de OpenStack y nunca toca recursos de OpenShift.

  • OpenStack de la comunidad

    Todas las series de versiones, de 2023.1 Antelope a 2026.2 Hibiscus, desplegadas con Kolla-Ansible, OpenStack-Ansible o cualquier otra herramienta, por la misma ruta de código. La comprobación de proveedores informa de su serie, su nivel de soporte y su perfil de políticas.

  • Redes, subredes, routers y grupos de seguridad recreados
  • Flavors, imágenes, pares de claves, proyectos y usuarios migrados
  • MTU comprobada frente a las redes del destino, incluido Geneve en ML2/OVN
  • TLS verificado en cada endpoint por defecto

Todos los sistemas operativos invitados habituales

Desde OpenStack, los invitados KVM pasan a KVM, así que todo lo que arranca en el origen arranca en el destino: RHEL, CentOS, Rocky, AlmaLinux, Oracle Linux, Ubuntu, Debian, SLES y Windows. Desde VMware, virt-v2v convierte el invitado en el host de conversión RHEL 9. Las versiones antiguas reciben una advertencia con la solución, nunca un bloqueo silencioso.

ESTRATEGIAS

Cinco estrategias, una elección por VM.

Seamless estima cada estrategia aplicable a cada VM y elige la de menor tiempo de inactividad; si dos empatan, gana la más sencilla. Puedes cambiar la elección.

Desde OpenStack

  • cold

    Copia en frío

    Parada, copia de los datos usados por SSH y arranque en el destino.

  • warm

    Warm

    Pasadas de instantáneas con la VM en marcha y, tras la parada, solo el delta final.

  • storage_handover

    Traspaso del almacenamiento

    Cinder hace unmanage en el origen y manage en el destino. No se copian datos.

    Requiere: Ambas nubes en el mismo clúster de Ceph o en la misma SVM de NetApp ONTAP.

Desde VMware

  • vmware_cold

    VMware en frío

    Copia completa y, después, conversión con virt-v2v.

  • vmware_warm

    VMware warm

    Pasadas de Changed Block Tracking y, después, el delta final y una conversión in situ.

    Requiere: Changed Block Tracking habilitado en la VM.

TECHNOLOGY PREVIEWS

Las VM con GPU migran. Sus direcciones pueden seguirlas.

Versión candidata, sin certificación de producción. Aún no hay pruebas de laboratorio de la versión registradas. Novedad de 0.4.0-rc.1, cada una opcional por plan y validada en simulación: ambas funcionan en la demo, y sus pruebas de laboratorio en hosts con GPU y en nubes reales aún no se han hecho. La etiqueta desaparecerá cuando las superen.

  • Cargas con GPU

    Technology Preview, validada en simulación

    Las VM con una vGPU de NVIDIA, por time-slicing o basada en MIG, o con una GPU completa en passthrough migran en lugar de quedar bloqueadas. Sus discos se mueven como los de cualquier VM; no se transfiere ningún estado de la GPU, y la VM arranca en el destino como tras un apagado.

    • Las GPU se leen del flavor de OpenStack o de vCenter, y se muestran en el inventario
    • El plan asigna cada GPU a un flavor con GPU del destino, nunca por tamaño o nombre; una VM con GPU sin asignación sigue bloqueada
    • La capacidad libre se lee de Placement en la validación y otra vez antes de detener el origen; mientras el pool está lleno, el origen sigue en marcha
    • La verificación comprueba el flavor con GPU y su asignación en Placement, y los hallazgos indican el driver y el servidor de licencias que necesita el invitado
  • Conmutación de red

    Technology Preview, validada en simulación

    Una migración puede llevarse la identidad de red de la VM. Cada parte es opcional por plan, y un plan que no la activa migra como antes.

    • Hooks: playbooks de Ansible y webhooks HTTPS que registra un administrador, ejecutados en pre_stop, post_create, post_verify, on_rollback y on_finalize, cada uno con un tiempo límite y una reversión opcional
    • IP flotantes que conservan su dirección en todas las estrategias de OpenStack, movidas tras detener el origen y devueltas en una reversión
    • Un cambio de DNS en Designate o en un servidor RFC 2136, por compare-and-swap, que se deshace en una reversión
    • Una espera de accesibilidad que cuenta en la inactividad, y un asistente de Octavia que vacía el miembro de origen y añade la VM migrada

La validación previa señala lo que sigue a cargo del equipo de operaciones, con sus runbooks: stacks de Heat y grupos de autoescalado, pools de Octavia que las oleadas dividirían, puertos con address pairs y nombres DNS que el destino no puede publicar.

Lo próximo: 0.5.0

Previsto: notificaciones por correo, Slack y webhooks firmados; fijación de claves de host SSH en la ruta de datos; y, como Technology Previews, un plano de control de alta disponibilidad, credenciales por tenant y seguimiento de extents modificados, que elimina el escaneo de discos de la pasada final warm en volúmenes Ceph RBD.

Notas de la versión 0.4.0-rc.1 (se abre en una pestaña nueva)

CÓMO FUNCIONA

Un solo recorrido. Cada paso, en tus manos.

Un único flujo de trabajo para todos los orígenes. Cada migración recorre una máquina de estados explícita, se reanuda desde su punto de control si se reinicia el plano de control y deja un registro de auditoría de cada acción.

  1. 01

    Conecta ambas nubes

    Añade RHOSP 17.1, OpenStack de la comunidad, Kolla-Ansible o vCenter como origen y RHOSO 18.0 o una nube OpenStack de la comunidad como destino, con una configuración predefinida para cada plataforma. Las credenciales son de solo escritura: van al almacén de secretos de la plataforma, nunca a la base de datos ni a una respuesta de la API. Con un clic se comprueba cada conexión y lo que permite hacer, y se informa de la serie de versiones, el nivel de soporte y el perfil de políticas del destino.

  2. 02

    Planifica oleadas, primero un piloto

    Descubre el inventario con discos, NIC, sistema operativo invitado e indicadores de preparación. Selecciona las VM, asigna redes, flavors, tipos de volumen y proyectos, y deja que el planificador ordene las oleadas por riesgo, con un pequeño piloto primero. Una oleada solo empieza cuando ha terminado la anterior.

  3. 03

    Valida antes de mover nada

    Las comprobaciones previas señalan bloqueos, advertencias y avisos informativos, cada uno con su solución. Cada VM recibe una estimación por cada estrategia aplicable y una elección automática que puedes cambiar.

  4. 04

    Copia mientras las VM siguen en marcha

    Las VM con estrategia warm se copian en pasadas de instantáneas mientras siguen dando servicio. Tras la primera pasada, solo viajan por la red los fragmentos cuyo hash BLAKE2b ha cambiado, y cada pasada termina con un hash del manifiesto verificado. Una VM que ha convergido espera a su ventana y se mantiene al día con sincronizaciones keep-warm.

  5. 05

    Conmuta dentro de la ventana

    Una conmutación solo empieza con la aprobación de un segundo aprobador, dentro de la ventana de cambios y con un hueco de conmutación libre. La VM se detiene, se sincroniza el delta final y arranca en el destino. El tiempo de inactividad se mide desde la parada hasta el arranque verificado.

  6. 06

    Verifica y después finaliza

    Seamless comprueba el estado ACTIVE del servidor, sus puertos, las sondas TCP y los patrones de la consola. Si una comprobación falla, la migración se revierte automáticamente: se elimina la instancia del destino, se conservan sus volúmenes y la VM de origen vuelve a arrancar. La finalización, el único paso que no se puede deshacer, requiere un aprobador y escribir el nombre completo de la VM.

PANEL

Cada migración, a la vista.

El panel se entrega con el plano de control: planes y oleadas, cada reloj de inactividad frente a su SLO, aprobaciones y el registro de auditoría, actualizados en vivo mediante server-sent events. Estas son sus pantallas reales, capturadas en la demo con nubes simuladas.

seamless.internal/

Abrir a tamaño completo (se abre en una pestaña nueva)
La página Overview: mosaicos de KPI, tres VM paradas con sus relojes de inactividad frente a un SLO de 15 minutos y cuatro aprobaciones pendientes.

Todo el despliegue de un vistazo

Migraciones por estado, inactividad media y cumplimiento del SLO, cada VM parada en este momento con su reloj, y las aprobaciones que esperan a una persona: aprobaciones de corte y decisiones del asesor, cada una enlazada al lugar donde se decide.

En vivo, sin sondeos
Los cambios de fase, las pasadas, las aprobaciones y los eventos llegan por server-sent events. Tras una desconexión, el panel se reanuda desde el último evento que vio.
Dice por qué, nunca solo no
Cuatro roles, de viewer a admin. Una acción que no puedes hacer ahora sigue en la página y dice a qué espera: un rol, una aprobación, una ventana, una fase.
WCAG 2.2 AA
Teclado primero, progreso y resultados anunciados a los lectores de pantalla, objetivos de 44 px, movimiento reducido respetado, ningún estado solo por color.
Nada desde otro host
Las fuentes y los scripts se entregan con el plano de control y nada se carga de terceros, así que una instalación aislada de la red se ve igual.

SEGURIDAD

Reversible hasta que digas que es definitivo

Las aprobaciones, las ventanas y las reversiones son reglas del plano de control, no convenciones de un manual de operaciones. La VM de origen sigue en su sitio hasta que un aprobador finaliza la migración.

Condiciones que impone el plano de control
Una conmutación solo empieza cuando tiene su aprobación, está dentro de su ventana de cambios y hay un hueco de conmutación libre.
Doble control
Quien solicita o fuerza una conmutación no puede aprobarla. Debe hacerlo un segundo aprobador.
Reversión hasta la finalización
Una reversión elimina la instancia del destino, conserva sus volúmenes, devuelve la dirección de IP flotante o el registro DNS que la conmutación movió, y vuelve a arrancar la VM de origen. Una verificación fallida la ejecuta automáticamente.
Confirmación escrita para el paso irreversible
Nada borra datos del origen antes de la finalización, y la finalización requiere un aprobador y escribir el nombre completo de la VM.
Se reanuda tras un reinicio
Las migraciones en curso continúan desde su punto de control cuando el plano de control vuelve a estar disponible. Una parada planificada puede drenar primero: los planes se pausan y las conmutaciones en curso terminan antes de que nada se detenga.
Ninguna VM de origen varada
Cada paso tiene un tiempo máximo, así que un playbook bloqueado nunca deja una VM detenida fuera de servicio.
Cada acción, registrada
Se audita cada llamada que modifica el estado. Exporta el registro o depúralo según tus plazos de retención.

DESPLIEGUE

Como en casa en tu infraestructura.

Una imagen de contenedor y PostgreSQL. Despliégalo en el clúster de OpenShift junto a RHOSO, en cualquier Kubernetes o en un único host: el propio Docker Engine de un servidor Linux, Colima en un Mac o Podman.

  • Linux

    Docker Engine 20.10+ con 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

    El Docker Engine del propio servidor, sin Colima ni Node.js: la imagen compila el panel por sí misma. El plano de control escucha solo en 127.0.0.1:8080, así que no se abre ningún puerto en el cortafuegos y al panel se accede a través de un túnel SSH; los contenedores vuelven a arrancar tras un reinicio, y SELinux puede seguir en modo enforcing.

  • macOS

    Colima, o Docker Desktop mediante un contexto con nombre

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

    Un perfil de Colima dedicado (4 CPU, 6 GiB, 40 GiB) que nunca cambia tu contexto activo de Docker. Docker Desktop o cualquier otro contexto: añade SEAMLESS_DOCKER_CONTEXT=desktop-linux a cada make.

  • Podman

    4.7 o posterior

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

    podman compose gestiona la misma pila, con docker-compose como proveedor si está instalado. En hosts con SELinux, el montaje del token se reetiqueta automáticamente.

  • Kubernetes

    1.28 o 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

    Un overlay de Kustomize sobre los manifiestos de OpenShift, con un Ingress. Crea primero los Secrets a partir de secret-example.yaml y el secret TLS seamless-tls.

  • OpenShift

    4.16 o posterior

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

    PostgreSQL 16, un Deployment reforzado de una sola réplica, una Route con TLS edge y NetworkPolicies de denegación por defecto. Los Secrets quedan fuera de la kustomization.

PREGUNTAS FRECUENTES

Tus preguntas, respondidas.

Lo que preguntan los equipos antes de migrar su primera VM.

¿Qué es Seamless Migrate?

Seamless Migrate es un plano de control de código abierto, bajo la Apache License 2.0, que migra máquinas virtuales de Red Hat OpenStack Platform 17.1, OpenStack de la comunidad (incluido Kolla-Ansible) y VMware vSphere a Red Hat OpenStack Services on OpenShift (RHOSO) 18.0 o a una nube OpenStack de la comunidad, de 2023.1 Antelope a 2026.2 Hibiscus. Planifica oleadas, estima el tiempo de inactividad de cada VM, copia los discos mientras las VM siguen en marcha, condiciona cada conmutación a una aprobación y a una ventana de cambios, verifica cada VM en el destino y la revierte automáticamente si falla una comprobación.

¿Cómo se migran las VM de VMware vSphere a OpenStack?

Añade vCenter (vSphere 7.0U3 u 8.x) como origen y RHOSO 18.0 o una nube OpenStack de la comunidad como destino; después, planifica las oleadas y valídalas. Las VM con Changed Block Tracking (CBT) se migran en modo warm: las pasadas de CBT copian los discos mientras la VM sigue en marcha y, en la conmutación, solo se transfiere el delta final antes de una conversión in situ con virt-v2v. Las VM sin CBT se migran en frío: una copia completa y, después, la conversión. Los datos se mueven mediante el vmware-migration-kit de os-migrate y un host de conversión con VDDK en la nube de destino.

¿Puedo migrar cargas de trabajo de RHOSP 17.1 a RHOSO 18.0 sin una adopción in situ?

Sí. El procedimiento de adopción de Red Hat convierte in situ un despliegue 17.1. Cuando eso no encaja, por hardware nuevo, un nuevo backend de almacenamiento, un rediseño de red como el paso de ML2/OVS a ML2/OVN o varias nubes que consolidar, Seamless Migrate traslada las cargas de trabajo en paralelo: recrea en RHOSO las redes, los grupos de seguridad, los flavors, las imágenes, los pares de claves, los proyectos y los usuarios, y después migra cada VM en frío, en modo warm o por traspaso del almacenamiento.

¿Puedo migrar a una nube OpenStack de la comunidad en lugar de a RHOSO?

Sí. Además de RHOSO 18.0, cada serie de versiones de OpenStack de la comunidad, de 2023.1 Antelope a 2026.2 Hibiscus, es un destino, tanto si se desplegó con Kolla-Ansible como con OpenStack-Ansible u otra herramienta: regístrala con la configuración predefinida OpenStack Community o Kolla-Ansible, y en ella se ejecutan las mismas estrategias en frío, warm y de traspaso del almacenamiento. La comprobación de proveedores informa de la serie de versiones, el nivel de soporte y el perfil de políticas de cada destino y, si falta una capacidad, la validación previa bloquea un plan antes de mover nada. Hoy, RHOSO 18.0 es la plataforma de destino; la validación de la versión en laboratorio sigue pendiente; la prueba en el laboratorio de cada serie de la comunidad con mantenimiento upstream aún no se ha hecho y llegará antes de una versión final.

¿Cuánto tiempo de inactividad requiere una migración?

Depende de la estrategia y de la VM. Para un volumen de 200 GiB con 120 GiB usados, 2 MiB/s de escrituras del sistema invitado y un enlace de 125 MiB/s, el modelo de planificación estima 20 min 53 s para una copia en frío, 11 min 20 s para una migración warm y 4 min 20 s para un traspaso del almacenamiento. En la migración warm, el tiempo de inactividad depende del delta final y de un escaneo del disco, no de la copia completa.

¿Qué diferencia hay entre la migración en frío, la migración warm y el traspaso del almacenamiento?

Una migración en frío detiene la VM y copia sus datos usados, así que el tiempo de inactividad crece con el disco. Una migración warm copia los discos en pasadas de instantáneas mientras la VM sigue en marcha y solo la detiene para el delta final. Un traspaso del almacenamiento no copia ningún dato: cuando ambas nubes comparten un clúster de Ceph o una SVM de NetApp ONTAP, Cinder hace unmanage de cada volumen en el origen y manage en el destino, así que el tiempo de inactividad es de pocos minutos sea cual sea el tamaño.

¿Se pueden migrar VM con GPU?

Sí, como Technology Preview validada en simulación. Las VM con una vGPU de NVIDIA, por time-slicing o basada en MIG, o con una GPU completa en passthrough migran en cuanto su plan asigna cada GPU a un flavor con GPU del destino; una VM con GPU sin asignación sigue bloqueada. La validación compara las GPU del plan con la capacidad libre del destino en Placement, y la puerta de conmutación la vuelve a leer antes de detener el origen: si no hay sitio, la migración espera y el origen sigue en marcha. Una VM de VMware con una GPU en passthrough solo se mueve en frío, apagada. Las pruebas de laboratorio en hosts con GPU aún no se han hecho.

¿Las VM migradas conservan sus direcciones IP y nombres DNS?

Las IP fijas y las direcciones MAC se conservan por defecto. Como Technology Preview validada en simulación, un plan también puede conservar la dirección de cada IP flotante, que se mueve tras detener el origen y se devuelve en una reversión, y cambiar un registro DNS en Designate o en un servidor RFC 2136 cuando cambia una dirección. La verificación espera hasta que cada dirección movida responde y cuenta esa espera en la inactividad; Seamless no habla BGP por sí mismo. Los hooks que registra un administrador, playbooks de Ansible o webhooks HTTPS, cubren el resto, y la validación previa señala lo que sigue a cargo del equipo de operaciones, como los stacks de Heat, los grupos de autoescalado y los pools de Octavia.

¿Puedo revertir una migración?

Sí, hasta que la finalices. Una reversión elimina la instancia del destino, conserva sus volúmenes y vuelve a arrancar la VM de origen, y una verificación fallida la inicia automáticamente. Nada borra datos del origen antes de la finalización, y la finalización requiere un aprobador y escribir el nombre completo de la VM.

¿Qué sistemas operativos invitados se pueden migrar?

Desde OpenStack, los invitados KVM pasan a KVM, así que todo lo que arranca en el origen arranca en el destino: RHEL del 5 al 10, CentOS, Rocky, AlmaLinux, Oracle Linux, Ubuntu, Debian, SLES, openSUSE, Windows Server del 2003 al 2025 y Windows del 7 al 11. Desde VMware, virt-v2v convierte el invitado: Red Hat da soporte a RHEL del 7 al 10 y a Windows Server del 2016 al 2025; los demás invitados funcionan tras una copia de prueba o requieren instalar antes los controladores virtio.

¿Dónde se ejecuta Seamless Migrate?

Es una sola imagen de contenedor más PostgreSQL 16. Despliégalo en OpenShift 4.16 o posterior junto a RHOSO, en Kubernetes 1.28 o posterior (EKS, AKS, GKE, RKE2, k3s, kubeadm) o en un único host: el Docker Engine 20.10 o posterior del propio servidor Linux con Compose v2.20 (Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux, Fedora; sin Colima ni Node.js), un Mac con Colima o Podman 4.7 o posterior. Un solo script de operaciones, seamless-ctl.sh, levanta y detiene un despliegue, lo reinicia y lo escala de la misma forma en todas las plataformas, y drena los planes en marcha antes de una parada planificada. Una demo con nubes simuladas se ejecuta en un equipo portátil y no necesita credenciales de nube.

¿Seamless Migrate es gratuito?

Sí. Es de código abierto bajo la Apache License 2.0, y el código fuente está en GitHub.

¿Seamless Migrate es un producto de Red Hat?

No. Es un proyecto de código abierto independiente, que no está afiliado a Red Hat, a la OpenInfra Foundation ni a Broadcom, ni cuenta con su patrocinio o respaldo, y no está cubierto por ninguna suscripción de Red Hat. Se basa en la colección upstream de Ansible os-migrate, que sigue siendo la encargada de mover los datos.

¿En qué se diferencia Seamless Migrate de os-migrate?

os-migrate exporta e importa los recursos de los tenants y copia las cargas de trabajo en frío, con la VM detenida durante toda la copia. Seamless Migrate se basa en él y añade la migración warm para orígenes OpenStack, el traspaso del almacenamiento, la orquestación de VMware warm y un plano de control con planes, oleadas, estimaciones del tiempo de inactividad, aprobaciones, verificación, reversión, un panel, una REST API y una CLI.

PRIMEROS PASOS

Grandes posibilidades.
Primero, un pequeño piloto.

La demo ejecuta todas las fases, desde la precopia hasta la conmutación, la verificación y la reversión, con nubes simuladas en tu equipo portátil. No necesitas OpenStack para probarla.

Docker en un servidor Linux, o Colima en un Mac

$ git clone https://github.com/imransetiadi/seamless-vms-migration$ cd seamless-vms-migration# solo en macOS: no hace falta en Linux$ make seamless-colima-up$ scripts/compose-init.sh# nubes simuladas, todas las fases$ make seamless-demo

Prueba la demo local (se abre en una pestaña nueva)Inicia sesión en /login con el token de administrador que mostró compose-init.sh. También funciona con Podman: SEAMLESS_ENGINE=podman.