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.
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.
| Tarea | Qué hacer | Qué se traslada | Limitación clave |
|---|---|---|---|
| Liberar un nodo para mantenimiento cuando la inactividad es inaceptable | Migración en caliente al nodo seleccionado | Solo la ejecución; los datos permanecen en su pool | Disponible 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 aceptable | Detener la máquina e iniciarla en el nodo seleccionado | Solo la ejecución; los datos permanecen en su pool | Con virtio-blk, la máquina solo puede iniciarse en el nodo del pool |
| Liberar un pool de almacenamiento | Migrar la máquina a otro pool | Datos: discos, instantáneas, registro de la VM | La VM está detenida; el pool de destino es distinto del pool de origen |
| Crear una copia rápida junto al origen | Clonar la máquina | No se traslada nada: se crea una copia | El 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.
- 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.
- 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.
- 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.
- 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é registrar | Para 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áquina | Seleccionar un pool de destino distinto del de origen |
| Modo de disco: NVMe o virtio-blk | Determina 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áneas | Verificació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.
- 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.
- 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.
- 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.
- 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.
- Abra la ficha de la VM, haga clic en Actions y seleccione el comando de inicio.
- 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.
- 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.
- 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.
- 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. - 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.
- Abra la ficha de la VM, haga clic en Actions, seleccione la migración e indique el pool de destino.
- 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.
- 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.
- 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.
- Detenga la máquina de origen: la clonación de una máquina en ejecución se rechaza con el código -2603.
- Inicie la clonación e indique el nombre del clon.
- 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.
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
- 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.
- 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.
- 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.
- 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é comprobar | Dónde mirar | Resultado esperado |
|---|---|---|
| La máquina se ejecuta en el nodo requerido | Ficha de la VM, sección General properties | El campo Node muestra el nodo seleccionado |
| La máquina está en ejecución | Lista de VM, columna State | El estado indica "en ejecución" |
| Las instantáneas están presentes | Ficha de la VM, tabla Snapshots | El número de instantáneas coincide con el registrado antes de la migración |
| Los discos están presentes | Ficha de la VM, tabla Disks | La configuración de los discos y los límites de velocidad no han cambiado |
| Se ha liberado espacio en el pool de origen | Storage Resources, Capacity (RAW) | La capacidad usada del pool de origen ha disminuido |
| Los datos se han trasladado al pool de destino | A través de la API | El pool de la máquina y el pool de cada disco son el pool de destino |
Si algo sale mal
| Qué ve | Causa | Qué hacer |
|---|---|---|
| Código de error -25300 | La migración solo está disponible para el rol Cluster master | Inicie sesión con un rol a nivel de clúster |
| Código de error -25306 | La 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 -25305 | El pool de destino es el mismo que el de origen | Seleccione otro pool: la migración al mismo pool está prohibida |
| Código de error -25307 | No se pudo determinar el nodo del pool de destino | Es posible que el pool no esté importado. En Storage Resources, compruebe la columna Current node |
| Código de error -25304 | No se pudo determinar el nodo de la máquina | Compruebe los estados de los nodos en Server Nodes |
| Código de error -25308 | No hay puertos de transferencia disponibles | Espere a que se completen otras migraciones y vuelva a intentarlo |
| Código de error -25310 | El ciclo de migración no se completó: falló el nuevo registro | Compruebe 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 -460 | La máquina usa virtio-blk: solo puede iniciarse en el nodo de su pool | No puede cambiar el nodo de ejecución. Migre los datos a un pool del nodo requerido |
| Código de error -459 | Windows en modo NVMe no ha completado la configuración inicial | Complete la configuración en el nodo del pool y, después, iníciela de forma remota |
| Código de error -458 | No hay nodos en estado ONLINE disponibles para la ubicación | Vuelva a poner nodos en servicio o seleccione un nodo manualmente |
| Código de error -442, -443 | Se ha seleccionado un nodo inexistente | Use un número de nodo de la tabla Server Nodes |
| Código de error -457 | La máquina ya está en ejecución | Deténgala antes de volver a iniciarla |
| Código de error -455 | La máquina está suspendida | Reanúdela y, después, iníciela |
| Código de error -409 | La máquina está bloqueada por otra operación | Espere a que esa operación se complete; la máquina se desbloquea automáticamente cuando el nodo responde |
| Código de error -413, -414, -415 | Se ha agotado la cuota de almacenamiento, memoria o núcleos del VDC | Libere o aumente la cuota |
| Código de error -440 | Se ha agotado la memoria del clúster, teniendo en cuenta la sobreasignación | Inicie en otro nodo o libere memoria |
| Código de error -452 | Los discos no se conectaron por la red durante el inicio remoto | Inicie la máquina en el nodo de su pool y compruebe la conectividad de la fabric |
| Código de error -2603 | El origen del clon no está detenido | Detenga la máquina antes de clonarla |
| Código de error -2605 | La 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, -429 | No tiene visible ninguna máquina con este identificador | Compruebe la máquina y los permisos sobre su VDC |
| La migración parece "atascada" sin respuesta | El resultado llega una sola vez, después de todo el ciclo | Espere: 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ón | La ubicación ha cambiado o los recursos son insuficientes | Compruebe 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
- El conjunto completo de operaciones de migración y clonación: "Traslado y clonación de VM".
- El ciclo de vida de la máquina y sus estados: "Ciclo de vida de una máquina virtual".
- Selección de un pool de destino por capacidad y estado: "Consulta de los pools del clúster".
- Retirada de un nodo del servicio para mantenimiento: "Gestión de los nodos del clúster".
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.