Saltar al contenido principal

Traslado de una VM: cambio de nodo y de pool

En vStack Center, "trasladar una VM" significa dos operaciones distintas con mecanismos diferentes. Cuál elija depende del problema que necesite resolver. Si un nodo va a entrar en mantenimiento, la máquina debe ejecutarse en otro nodo mientras sus datos permanecen donde están. Si un pool se está quedando sin espacio o se va a retirar, debe trasladar los datos a otro pool, y el nodo que ejecuta la máquina no importa.

info

La migración en caliente se introdujo en la versión 3.1.0: una máquina en ejecución se traslada a otro nodo sin detenerse y el SO invitado sigue funcionando. El traslado de datos entre pools sigue requiriendo que la máquina esté detenida.

Esta página describe el traslado de una máquina deteniéndola primero. Esto funciona en cualquier versión y no requiere un privilegio aparte. Para la migración en caliente, sus requisitos previos y la consulta del progreso, consulte "Traslado y clonación de VM". Si la migración en caliente no está disponible, planifique una ventana de inactividad: al cambiar de nodo, la inactividad equivale al tiempo necesario para detener e iniciar la máquina; al cambiar de pool, equivale al tiempo necesario para copiar los datos.

El cambio de nodo usa la ubicación al iniciar. Al iniciar una máquina, se selecciona un nodo explícitamente; sin selección, vStack Center elige el nodo menos cargado en estado ONLINE. Esto no funciona con todas las máquinas: el inicio remoto y la ubicación automática están disponibles para máquinas con discos en modo NVMe, mientras que una máquina que usa virtio-blk solo puede iniciarse en el nodo que aloja su pool de datos.

El cambio de pool es una migración de datos: un ciclo completo de ZFS send/receive, seguido del nuevo registro de los discos, las instantáneas y la propia máquina y, a continuación, la eliminación del dataset de origen. Es una operación larga que devuelve un único resultado: el resultado llega después de que se complete todo el ciclo, no cuando comienza la copia. vStack Center no muestra el progreso de la copia.

TareaQué hacerQué se trasladaLimitación clave
Liberar un nodo para mantenimiento cuando la inactividad es inaceptableMigración en caliente al nodo seleccionadoSolo la ejecución; los datos permanecen en su poolDisponible desde la versión 3.1.0; requiere el privilegio Live Migrate VM; la máquina debe estar en ejecución
Liberar un nodo para mantenimiento cuando la inactividad es aceptableDetener la máquina e iniciarla en el nodo seleccionadoSolo la ejecución; los datos permanecen en su poolCon virtio-blk, la máquina solo puede iniciarse en el nodo del pool
Liberar un pool de almacenamientoMigrar la máquina a otro poolDatos: discos, instantáneas, registro de la VMLa VM está detenida; el pool de destino es distinto del pool de origen
Crear una copia rápida junto al origenClonar la máquinaNo se traslada nada: se crea una copiaEl clon siempre está en el pool de origen; la operación usa la API

Requisitos previos​

  • Permisos sobre la máquina: Cluster master puede ver cualquier VM del clúster; un usuario normal solo puede trabajar con las máquinas de sus VDC (centros de datos virtuales). Iniciar y detener requieren un rol de VDC con role_id ≤ 3;
  • Para cambiar de pool, el rol Cluster master: la migración solo está disponible para este rol;
  • El pool de destino está importado en un nodo; de lo contrario, vStack Center no puede determinar el nodo del pool y devuelve el código -25307;
  • Un nombre de pool de destino con el formato z02: una letra seguida de dos dígitos;
  • Las cuotas del VDC y la capacidad del clúster permiten iniciar la máquina: el inicio comprueba tanto las cuotas como la sobreasignación de memoria;
  • Una ventana de inactividad acordada;
  • vStack Center versión 3.0.5 para la clonación de VM y 3.1.0 para la migración en caliente; el traslado de una máquina deteniéndola primero y la migración de datos entre pools también funcionan en versiones anteriores.

Paso 1. Registre el estado actual de la máquina​

Antes de cualquier traslado, necesita saber tres cosas: dónde está ahora la máquina, qué recursos usa y si puede ejecutarse en otro nodo.

  1. Abra Provider Data Center → All Virtual Machines y busque la máquina. La columna State muestra su estado, y Storage (GB) muestra cuánto espacio ocupa.
  2. Abra la ficha de la máquina y compruebe la sección General properties: el nodo que la ejecuta (Node), el VDC de la máquina, CPU (Cores), RAM, OS profile y VM configuration version.
  3. Lea la tabla Disks: las columnas Name, Slot, Disk size (GB), Sector size, IOps limit y MBps limit. Úsela para calcular la cantidad de datos que se copiarán y anote los límites de velocidad.
  4. Cuente las instantáneas de la tabla Snapshots: las columnas Name, Date of creation y Size (GB). El número de instantáneas debe coincidir después de la migración.
Qué registrarPara qué
El nodo que ejecuta la máquina (Node)Determinar de qué nodo debe salir la máquina
El pool de datos de la máquinaSeleccionar un pool de destino distinto del de origen
Modo de disco: NVMe o virtio-blkDetermina si la máquina puede iniciarse en un nodo distinto del nodo del pool
Estado (State)Determina si la máquina acepta un comando de inicio o de migración
Número de instantáneasVerificación después del traslado de los datos

El modo de disco no se muestra como un campo independiente en la ficha. Si la máquina usa virtio-blk, lo descubrirá al intentar iniciarla en otro nodo: el inicio se rechaza con el código -460.

Paso 2. Detenga la máquina​

Ambas operaciones requieren una máquina detenida, por lo que este paso es común.

  1. Abra la ficha de la VM (o busque la máquina en la lista), haga clic en Actions y seleccione el comando de detención.
  2. Si el sistema invitado no responde a ACPI, establezca un tiempo de espera para el apagado forzado (0–999 segundos) o desactive el apagado por ACPI.
  3. Espere a que State cambie a "detenida". Mientras la operación está en curso, la máquina está bloqueada: se rechazan los demás comandos para ella.

El comando de detención acepta una máquina suspendida del mismo modo que una en ejecución.

Tarea A. Inicie la máquina en otro nodo​

Use esta opción antes del mantenimiento de un nodo: los datos permanecen en su pool y solo cambia el lugar de ejecución.

  1. Asegúrese de que los discos de la máquina están en modo NVMe. Una máquina que usa virtio-blk solo puede iniciarse en el nodo que aloja su pool de datos. Al intentar iniciarla en otro nodo, se devuelve el código -460.
  2. Abra la ficha de la VM, haga clic en Actions y seleccione el comando de inicio.
  3. Seleccione el nodo de destino. El número de nodo va de 1 al número de nodos del clúster. Si deja activada la selección automática, vStack Center elige el nodo menos cargado en estado ONLINE. Esto resulta útil al iniciar muchas máquinas después de un mantenimiento.
  4. Espere a que State cambie a "en ejecución" y compruebe el campo Node en la sección General properties. Allí se muestra el nodo en el que realmente se inició la máquina, tanto con selección explícita como automática.

Si no hay nodos adecuados, se devuelve el código -458.

El reinicio no cambia el nodo: un reinicio usa la ubicación actual de la máquina. Para cambiar de nodo, debe detener la máquina y, a continuación, iniciarla.

Tarea B. Traslade los datos a otro pool​

Use esta opción cuando un pool está lleno o se va a retirar. La migración copia los datos mediante un flujo de ZFS send/receive, vuelve a registrar los discos, las instantáneas y la máquina y, a continuación, elimina el dataset de origen.

  1. Seleccione el pool de destino. Abra Provider Data Center → Storage Resources: la tabla ZFS pools muestra Health, Consuming, Scrubbing, Resilvering, Current node y Capacity (RAW). Elija un pool en buen estado sin resilvering ni comprobación de integridad en curso.
  2. Abra el pool y, en la sección Properties, compare Free con la suma de Disk size (GB) de todos los discos de la máquina. Debe haber espacio libre suficiente para todos los discos. El nombre del pool de destino debe tener el formato z02.
  3. Asegúrese de que la máquina está detenida o de que se ha creado y nunca se ha iniciado. La migración no acepta otros estados y devuelve el código -25306.
  4. Abra la ficha de la VM, haga clic en Actions, seleccione la migración e indique el pool de destino.
  5. Espere a que se complete el ciclo. Mientras está en curso, la máquina está bloqueada y el resultado llega una sola vez, después de la copia, el nuevo registro y la eliminación del dataset de origen. El panel de registro muestra el avance de la operación: haga clic en LOG.
  6. Verifique el resultado: el número de instantáneas de la tabla Snapshots coincide con el registrado antes de la migración, y el pool de origen tiene más espacio libre en Storage Resources. La API proporciona la ubicación exacta de los discos en los pools; consulte la referencia de la API.
  7. Inicie la máquina.

La migración al mismo pool está prohibida y se rechaza con el código -25305. La copia usa un conjunto limitado de puertos de transferencia. Cuando todos están ocupados por otras migraciones, se devuelve el código -25308. Vuelva a intentar la operación más tarde.

Tarea C. Cree una copia rápida en lugar de trasladar la máquina​

A veces una copia resuelve el problema en lugar de un traslado: por ejemplo, cuando necesita probar una actualización en una máquina duplicada. Un clon es una copia instantánea copy-on-write de una máquina detenida. La operación tarda segundos independientemente del tamaño de los discos y casi no consume capacidad.

La clonación no está disponible en la interfaz web. Un administrador realiza la operación a través de la API; consulte la referencia de la API. Solo se indican el nombre y la descripción del clon.

  1. Detenga la máquina de origen: la clonación de una máquina en ejecución se rechaza con el código -2603.
  2. Inicie la clonación e indique el nombre del clon.
  3. Espere a que el clon aparezca en la lista All Virtual Machines. Se crea mediante la misma secuencia que una máquina nueva: primero un registro y, después, el ensamblaje en el nodo.

El clon hereda toda la configuración del origen y se crea en el mismo VDC y en el mismo pool; esto no sustituye al traslado de la máquina. Las direcciones MAC se generan de nuevo y las direcciones se asignan como en una creación normal.

precaución

Un clon existente conserva su vínculo con el origen. Mientras el clon exista, el origen no se puede eliminar y su migración fallará en el paso que elimina los datasets de origen. Se trata de una limitación conocida. Elimine primero los clones y, después, traslade el origen.

Finalización del trabajo​

  1. Inicie la máquina y verifique que está en ejecución: compruebe State en la lista de VM y el campo Node de la ficha.
  2. Después de cambiar de pool, compruebe la capacidad liberada en Storage Resources: el pool de origen tendrá más espacio libre. El dataset de origen se elimina como parte del ciclo de migración; no se requiere ningún comando aparte.
  3. Compruebe que los discos y las instantáneas están presentes en las tablas Disks y Snapshots de la ficha de la máquina. La máquina conserva sus límites de velocidad: compruebe IOps limit y MBps limit de los discos, y el límite de ancho de banda de los puertos de red.
  4. Si la máquina se trasladó para el mantenimiento de un nodo, retire el nodo del servicio solo después de que todas sus máquinas se hayan iniciado en otros nodos.

Verificación del resultado​

Qué comprobarDónde mirarResultado esperado
La máquina se ejecuta en el nodo requeridoFicha de la VM, sección General propertiesEl campo Node muestra el nodo seleccionado
La máquina está en ejecuciónLista de VM, columna StateEl estado indica "en ejecución"
Las instantáneas están presentesFicha de la VM, tabla SnapshotsEl número de instantáneas coincide con el registrado antes de la migración
Los discos están presentesFicha de la VM, tabla DisksLa configuración de los discos y los límites de velocidad no han cambiado
Se ha liberado espacio en el pool de origenStorage Resources, Capacity (RAW)La capacidad usada del pool de origen ha disminuido
Los datos se han trasladado al pool de destinoA través de la APIEl pool de la máquina y el pool de cada disco son el pool de destino

Si algo sale mal​

Qué veCausaQué hacer
Código de error -25300La migración solo está disponible para el rol Cluster masterInicie sesión con un rol a nivel de clúster
Código de error -25306La máquina no está detenida ni en el estado "creada"Detenga la máquina y espere a que se detenga realmente
Código de error -25305El pool de destino es el mismo que el de origenSeleccione otro pool: la migración al mismo pool está prohibida
Código de error -25307No se pudo determinar el nodo del pool de destinoEs posible que el pool no esté importado. En Storage Resources, compruebe la columna Current node
Código de error -25304No se pudo determinar el nodo de la máquinaCompruebe los estados de los nodos en Server Nodes
Código de error -25308No hay puertos de transferencia disponiblesEspere a que se completen otras migraciones y vuelva a intentarlo
Código de error -25310El ciclo de migración no se completó: falló el nuevo registroCompruebe los estados de la máquina y de los discos en la ficha; no inicie otra migración hasta determinar la causa
Código de error -460La máquina usa virtio-blk: solo puede iniciarse en el nodo de su poolNo puede cambiar el nodo de ejecución. Migre los datos a un pool del nodo requerido
Código de error -459Windows en modo NVMe no ha completado la configuración inicialComplete la configuración en el nodo del pool y, después, iníciela de forma remota
Código de error -458No hay nodos en estado ONLINE disponibles para la ubicaciónVuelva a poner nodos en servicio o seleccione un nodo manualmente
Código de error -442, -443Se ha seleccionado un nodo inexistenteUse un número de nodo de la tabla Server Nodes
Código de error -457La máquina ya está en ejecuciónDeténgala antes de volver a iniciarla
Código de error -455La máquina está suspendidaReanúdela y, después, iníciela
Código de error -409La máquina está bloqueada por otra operaciónEspere a que esa operación se complete; la máquina se desbloquea automáticamente cuando el nodo responde
Código de error -413, -414, -415Se ha agotado la cuota de almacenamiento, memoria o núcleos del VDCLibere o aumente la cuota
Código de error -440Se ha agotado la memoria del clúster, teniendo en cuenta la sobreasignaciónInicie en otro nodo o libere memoria
Código de error -452Los discos no se conectaron por la red durante el inicio remotoInicie la máquina en el nodo de su pool y compruebe la conectividad de la fabric
Código de error -2603El origen del clon no está detenidoDetenga la máquina antes de clonarla
Código de error -2605La máquina está gestionada por un servicio, como un router definido por software (Edge)Las máquinas de servicio no se pueden clonar
Código de error -3001, -429No tiene visible ninguna máquina con este identificadorCompruebe la máquina y los permisos sobre su VDC
La migración parece "atascada" sin respuestaEl resultado llega una sola vez, después de todo el cicloEspere: la duración depende del tamaño de los discos. El progreso de la copia no se muestra
La máquina no se inicia después de la migraciónLa ubicación ha cambiado o los recursos son insuficientesCompruebe las cuotas y la disponibilidad de nodos ONLINE; inicie una máquina que use virtio-blk en el nodo del nuevo pool

Limitaciones​

El progreso de la migración no está disponible: el resultado llega cuando se completa el ciclo y no informa de cuántos datos se han copiado. Estime la duración a partir de los tamaños de los discos de la máquina en la tabla Disks.

El pool de destino se indica mediante un nombre con el formato z02. Un pool con cualquier otro formato de nombre no se puede indicar como destino de migración.

La migración no se puede cancelar. Si el ciclo falla, compruebe el estado de la máquina leyendo su ficha, en lugar de emitir otro comando.

Véase también​

Métodos de la API​

Operaciones de la API de esta 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 la referencia de la API.