Saltar al contenido principal

Cómo migrar y clonar una VM

Las operaciones de esta página tienen finalidades distintas. La migración en caliente traslada el estado de cómputo de una VM en ejecución (el estado de la memoria y de la CPU) a otro nodo sin tocar sus datos. La migración de almacenamiento traslada los datasets de la VM de un pool a otro mediante un flujo ZFS send/receive. La clonación crea en segundos una copia copy-on-write de los discos en el mismo pool, casi sin consumir capacidad. La restauración desde el área de importación vuelve a crear una VM a partir de un flujo recibido previamente por el clúster.

Esto determina dónde se aplica cada operación. Mover datos entre pools lleva un tiempo proporcional al tamaño del disco y requiere una VM apagada. En cambio, la migración en caliente del estado de cómputo solo funciona con una VM en ejecución: el SO invitado sigue funcionando y la interrupción se limita a la ventana de conmutación, definida por un parámetro. Un clon es instantáneo, pero reside en el mismo pool y depende de una instantánea de origen: mientras exista el clon, el origen no se puede eliminar, y ZFS impide revertirlo a una instantánea anterior al punto de clonación.

Un clon hereda toda la configuración del origen: vCPU, RAM, discos, redes y configuración del invitado. No se pueden modificar al crearlo; solo se especifican el nombre y la descripción. Las direcciones MAC se generan de nuevo y las direcciones IP se asignan como en una creación normal, pero solo para las familias de direcciones en las que el puerto de origen tenía una dirección.

Cómo migrar una VM en ejecución a otro nodo​

La migración en caliente se introdujo en la versión 3.1.0. Traslada el estado de cómputo de una VM en ejecución al nodo seleccionado; los discos permanecen en su pool y el nuevo nodo accede a ellos a través de la red. El SO invitado sigue funcionando y solo deja de estar disponible durante la conmutación.

La operación está disponible para el rol Cluster master mediante el privilegio Live Migrate VM (1607). Asigne el privilegio a un rol personalizado manualmente. Para leer el progreso se necesita un privilegio aparte, View VM Migration Status (1113).

Requisitos previos:

  • La VM está en ejecución y su configuración inicial está completa.
  • El nodo de destino existe y es distinto del nodo actual.
  • La VM no está bloqueada y no hay otra migración en curso para ella.
  • El clúster tiene un puerto de transferencia disponible para el flujo de memoria.
  1. Abra la tarjeta de la VM e inicie la migración, seleccionando el tipo "a otro nodo" y el nodo de destino. El tiempo de espera total de la operación (300 segundos) y la ventana de conmutación (100 milisegundos) usan sus valores predeterminados y no se pueden configurar en la interfaz.
  2. La operación se acepta de inmediato y el trabajo continúa en segundo plano.
  3. Supervise el progreso de la migración: se informan el estado, la fase, el porcentaje completado y los nodos de origen y de destino, junto con el motivo del fallo si falla.

Hasta que finalice la migración, las operaciones que podrían interferir con ella (detención, cambio de configuración y desbloqueo) se rechazan con un error explícito. La lectura de los datos de la VM sigue disponible. Durante la migración, es la propia migración la que controla el estado de la VM: al finalizar, la VM figura como en ejecución o recibe un error de migración.

El progreso no se conserva al recargar la página

El progreso de la migración está vinculado al identificador de la operación iniciada, y la API no tiene ningún método para "buscar la migración activa de una VM". Si actualiza la página, el porcentaje completado deja de mostrarse, pero la migración continúa. Puede saber que la VM se está migrando por su estado en la lista de VM.

FalloMotivoSolución alternativa
-403 missing privilegeAl rol le falta Live Migrate VM o View VM Migration StatusRealice la operación con el rol Cluster master o asigne el privilegio a un rol personalizado
-1601 invalid migration typeEl tipo especificado está fuera del conjunto "compute" / "storage"Seleccione uno de los dos procedimientos
-1602 unsuitable parameter setSe indicó un pool de destino para una migración a un nodo, o viceversaEspecifique un nodo de destino para cambiar de nodo, o un pool de destino para cambiar de pool
-1603 VM not foundSe especificó un identificador de VM inexistenteCompruebe el identificador en la lista de VM
-1604 VM outside access scopeLa VM pertenece a un VDC no disponible para el rolTrabaje en su VDC
-1605 VM state does not allow migrationPara un cambio de nodo, la VM no está en ejecución o su configuración inicial no está completaInicie la VM y espere a que termine la configuración
-1606 target node not foundNo existe ningún nodo con ese número en el clústerSeleccione un nodo de la lista de nodos del clúster
-1607 target node is the current nodeLa VM ya se está ejecutando en este nodoSeleccione otro nodo
-1608 live migration unavailableSe agotó el pool de puertos de transferenciaEspere a que terminen las migraciones en curso
-1611 migration already in progressLa VM está bloqueada o tiene una migración sin terminarEspere a que finalice y vuelva a intentarlo
-1612 migration not foundSe solicitó el estado de un identificador desconocidoUse el identificador devuelto al iniciar la migración

Para migrar datos entre pools, el mismo método admite un segundo procedimiento, con un pool de destino en lugar de un nodo de destino y una VM detenida. La vía heredada mediante vm-migration se describe a continuación; sigue operativa.

Cómo migrar una VM a otro pool​

La migración solo está disponible para el rol Cluster master y requiere que la migración esté habilitada en la configuración del clúster.

Requisitos previos:

  • La VM está apagada, o se creó pero nunca se inició.
  • El pool de destino es distinto del pool actual.
  • El pool de destino está importado en un nodo del clúster.
  • Existe un puerto disponible para el flujo send/receive.

Inicie la migración y especifique el pool de destino. La operación completa un ciclo entero: transferencia del flujo, nuevo registro de los discos, las instantáneas y la propia VM en el nuevo pool, y eliminación de los datasets de origen. La VM permanece bloqueada hasta que termina el ciclo; el resultado se muestra en su tarjeta y en el historial de eventos.

FalloMotivoSolución alternativa
-25300 operation available only to the Cluster master roleOtro rol solicitó la migraciónRealice la operación con un rol de nivel de clúster
-25306 VM not in Offline/Created stateLa VM está en ejecución o suspendidaDetenga la VM
-25305 migration to the same pool is impossibleEl pool de destino es el pool actualEspecifique otro pool
-25307 unable to determine the node for the migration poolEl pool no está importadoCompruebe el estado del pool de destino
-25304 unable to determine the node for the VMSe desconoce la ubicación de la VMCompruebe los estados del nodo y del pool de la VM
-25308 no available send-receive portsTodos los puertos de transferencia están ocupadosEspere a que terminen las transferencias en curso
-25310 migration failedEl nuevo registro falló después de la transferenciaCompruebe el estado de la VM en ambos pools y vuelva a intentarlo

Tenga en cuenta los clones por separado: si la VM que se migra tiene clones CoW existentes, la migración encuentra una dependencia al eliminar los datasets de origen. Se trata de una limitación conocida. Elimine los clones antes de la migración.

Cómo clonar una VM​

Un clon es una VM nueva con la misma configuración en el mismo VDC (centro de datos virtual) y en el mismo pool. Necesita el privilegio de creación de VM con ámbito sobre el VDC de origen.

  1. Detenga la VM de origen. La clonación de una VM en ejecución se rechaza con el error -2603.

  2. Inicie la clonación del origen e introduzca el nombre del clon y, opcionalmente, una descripción. Los demás parámetros se heredan y no se pueden editar en este momento.

  3. Espere a que el clon aparezca en la lista de VM. Se crea mediante la misma secuencia que una VM nueva: primero el registro y después el ensamblaje en el nodo.

Restricciones de la clonación​

RestricciónMotivoAcción
El clon siempre reside en el pool de origenAsí funciona zfs cloneSi necesita una copia en otro pool, clone primero y luego migre
La configuración no se puede modificarEl clon hereda toda la configuración de vCPU, RAM, discos y redes del origenEdite los parámetros en la tarjeta del clon después de crearlo
Cada invocación crea un único clonNo hay modo por lotesRepita la operación tantas veces como sea necesario
El origen no se puede eliminar mientras exista un clonEl clon depende de una instantánea del origenElimine los clones y luego el origen; de lo contrario, la eliminación devuelve -2604 con una lista de clones
Las VM de servicio no se pueden clonarEl clon heredaría el vínculo de servicio sin la configuración que lo respalda: error -2605Cree la VM de servicio mediante el procedimiento estándar
Un clon no se puede clonarUn clon de un clon crearía una cadena de clones ZFS dependientes. El error -2606 se devuelve antes de las comprobaciones de bloqueo y de estado del origenVuelva a clonar la VM original. La VM conserva su marca de clon de forma permanente, incluso después de eliminar el origen
Dos clones de un mismo origen en el mismo segundoAmbas operaciones usan el mismo nombre de punto de instantáneaNormalmente, la segunda operación reutiliza la instantánea de la primera; si se produce una condición de carrera, vuelva a intentar la operación

Otros fallos: -2601 significa que no se encontró el origen, -2602 significa que el origen está bloqueado, -2610 significa que falló la creación del clon, -255 significa que el pool de origen no acepta datos, -256 significa que no se encontró el perfil de SO del origen y -403 significa privilegios insuficientes o que la VM está fuera del ámbito del rol.

Cómo restaurar una VM desde el área de importación​

El área de importación es donde el clúster recibe flujos de VM desde el exterior. La restauración desde ella es un paso aparte del operador: la VM no se vuelve a crear automáticamente.

El área de importación se abre en la pestaña Import area: una tabla con las columnas Dataset Id, VM name y Progress. Cluster master ve todos los registros; un usuario común ve los registros de los VDC en los que tiene un rol de administrador.

  1. Busque el registro correspondiente y asegúrese de que la recepción haya finalizado: la columna Progress muestra el progreso de la transferencia, y solo se pueden restaurar los registros recibidos por completo.

  2. Decida qué identificadores usar para restaurar la VM. De forma predeterminada, la restauración usa los identificadores originales. En ese caso, no puede existir en el clúster ninguna VM con el mismo identificador; de lo contrario, se devuelve el error -25208. En el segundo modo, vStack Center asigna identificadores nuevos y no realiza esta comprobación. Compruebe también si el pool y el VDC originales siguen existiendo.

  3. Inicie la restauración del registro seleccionado y espere a que la VM aparezca en la lista de VM.

De forma predeterminada, la restauración vuelve a crear la VM con sus identificadores originales: los registros de la VM, de los discos y de los puertos de red, los puertos de consola y, si existe, la instantánea registrada con el flujo.

El segundo modo asigna identificadores nuevos. vStack Center crea la VM como nueva: con su propio identificador, discos en un dataset nuevo, nuevos puertos de consola y nuevos puertos de red en las mismas redes. Los puertos reciben nuevas direcciones y direcciones MAC, con IP guard habilitado. Una instantánea recibida con el flujo se registra en ambos modos.

FalloMotivoSolución alternativa
-25206 Import area item is not finishedLa recepción del flujo no está completaEspere a que termine la recepción
-25208 Specified VM id exists alreadyYa existe en el clúster una VM con el identificador originalElimine la VM en conflicto o restaure con identificadores nuevos. Cambiar el nombre no libera el identificador
-25205 VM item is not defined, -25207 Import area item has no VM idEl registro del área de importación está incompletoVuelva a recibir el flujo
-25209 Can't retrieve pool mapEl pool del registro no está disponibleCompruebe el estado del pool
-25210, -25211 console port allocation failedNo se pudieron asignar los puertos de consolaVuelva a intentarlo más tarde
-25220–-25223 MAC or port address conflictLa dirección o la dirección MAC del registro ya está en usoLibere la dirección o elimine el puerto en conflicto
-25224 Can't parse dataset nameNo se puede interpretar el nombre del datasetVuelva a seleccionar el registro en la lista del área de importación

Consulte también​

Métodos de la API​

Las operaciones de la API para esta página son vm-migrate, vm-migrate-status, vm-migration, vms-clone, vm-import-area-list y vm-import-area-process; consulte la referencia de la API.