Antes de instalar una actualización importante del sistema operativo o de una aplicación, cree una instantánea de la MV. Si la actualización provoca problemas, puede volver rápidamente al estado original revirtiendo a la instantánea.

Ejemplo 3: Creación de varios entornos idénticos

Para la implementación de una aplicación web escalable, es posible que necesite varias MV idénticas. Cree una MV, configúrela, cree una instantánea y, a continuación, clónela a partir de la instantánea el número de veces que sea necesario. Esto es mucho más rápido que configurar cada MV desde cero.

Creación de una instantánea en VMware ESXi

¿Cómo clonar una <a href=máquina virtual? - Interfaz de VMware vSphere Client para la creación de instantáneas" title="Illustration for Интерфейс VMware vSphere Client для создания снимков" width="512" height="512" / class="wp-image-5297 wp-image-12401">
VMware ESXi proporciona una interfaz gráfica vSphere Client fácil de usar para la gestión de instantáneas. Además, se puede utilizar la línea de comandos (ESXi Shell) o vCLI (VMware Command-Line Interface).
VPS Hosting

Servidores virtuales con recursos garantizados

Elegir VPS

Creación de una instantánea a través de vSphere Client:

  • Inicie sesión en vSphere Client y conéctese al host ESXi o a vCenter Server.
  • Seleccione la MV para la que desea crear una instantánea.
  • Haga clic con el botón derecho del ratón en la MV y seleccione «Snapshots» -> «Take Snapshot…».
  • Introduzca un nombre y una descripción para la instantánea.
  • Seleccione la opción «Memory» (incluir la memoria de la MV en la instantánea) si es necesario. La inclusión de la memoria aumenta el tamaño de la instantánea y el tiempo de creación, pero permite volver al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución.
  • Haga clic en «OK».
Creación de una instantánea a través de la línea de comandos (ESXi Shell):

vim-cmd vmfs/snapshot/create 

Donde es el ID de su máquina virtual. Para averiguar el ID, puede utilizar el comando:

vim-cmd vmsvc/getallvms

Ejemplo completo:

vim-cmd vmfs/snapshot/create 123 snapshot-name snapshot-description 0 0

En este comando:

  • 123 — ID de la máquina virtual.
  • snapshot-name — Nombre de la instantánea.
  • snapshot-description — Descripción de la instantánea.
  • 0 — Incluir memoria (0 — no, 1 — sí).
  • 0 — Quiesce (0 — no, 1 — sí). Quiesce intenta suspender el sistema de archivos del sistema operativo invitado para garantizar la coherencia de los datos. Requiere la instalación de VMware Tools.
Creación de una instantánea a través de vCLI:

vmware-cmd 

Donde es la ruta al archivo de configuración de la MV (.vmx). Por ejemplo:

vmware-cmd /vmfs/volumes/datastore1/MyVM/MyVM.vmx createsnapshot "SnapshotName" "SnapshotDescription" 0 0

Este comando hace lo mismo que el ejemplo con ESXi Shell, pero se ejecuta desde una máquina cliente donde está instalado vCLI.

Clonación de una MV desde una instantánea en Proxmox VE

Proxmox VE también soporta la creación de instantáneas y la clonación a partir de ellas. El proceso de clonación a partir de una instantánea en Proxmox VE es un poco diferente al de VMware, pero también es relativamente sencillo.

Creación de una instantánea en Proxmox VE:

  • Inicie sesión en la interfaz web de Proxmox VE.
  • Seleccione la MV para la que desea crear una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Haga clic en el botón «Take Snapshot».
  • Introduzca un nombre para la instantánea y una descripción (opcional).
  • Haga clic en el botón «Take Snapshot».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la interfaz web):

  • Seleccione la MV que desea clonar desde una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Seleccione la instantánea desde la que desea clonar.
  • Haga clic en el botón «Clone».
  • En la ventana que aparece, especifique:
    • «Target Storage»: seleccione el almacenamiento para la MV clonada.
    • «VMID»: especifique un nuevo ID para la MV clonada (debe ser único).
    • «Name»: especifique un nombre para la MV clonada.
    • «Mode»: seleccione «Full Clone» (creará una copia completa del disco) o «Linked Clone» (creará un clon que hace referencia a la instantánea original, ocupando menos espacio, pero dependiendo de la instantánea original). Para la clonación desde una instantánea, se recomienda «Linked Clone».
    • «Target Node»: seleccione el nodo en el que se ejecutará la MV clonada.
    • «Start after creation»: iniciar la MV clonada inmediatamente después de la creación.
  • Haga clic en el botón «Clone».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la línea de comandos):

qm clone  --newid  --name  --storage  --snapshot 

Por ejemplo:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1

En este comando:

  • 100 — ID de la MV original.
  • 200 — ID de la MV clonada.
  • clonevm — Nombre de la MV clonada.
  • local-lvm — Nombre del almacenamiento donde se ubicará la MV clonada.
  • snap1 — Nombre de la instantánea desde la que se clonará la MV.

Para crear un linked clone, añada la opción --linked 1:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1 --linked 1
Importante: Si utiliza linked clone, la eliminación de la instantánea original provocará daños en la MV clonada.

Automatización del proceso de clonación con Terraform

Terraform es una potente herramienta de Infraestructura como Código (IaC) que permite automatizar la creación, modificación y gestión de la infraestructura, incluidas las Máquinas Virtuales Entre Hosts: Guía Paso a Paso" class="internal-post-link">máquinas virtuales. El uso de Terraform para clonar MV permite que este proceso sea repetible, predecible y automatizado. Veremos un ejemplo de automatización de la clonación de MV en VMware vSphere.

Requisitos previos:

  • Terraform instalado.
  • Proveedor de VMware vSphere configurado para Terraform.
  • Cuenta con permisos suficientes en vSphere.
Ejemplo de configuración de Terraform:

resource "vsphere_virtual_machine" "template_vm" {
  name             = "template-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  disk {
    label            = "disk0"
    size             = 20
    eagerly_scrub = false
    thin_provisioned = true
  }
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "cloned-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = vsphere_virtual_machine.template_vm.id

    customize {
      linux_options {
        host_name = "cloned-vm"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.100"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • vsphere_virtual_machine "template_vm" — Define la MV original (plantilla) desde la que se realizará la clonación. En este ejemplo, se crea una nueva MV «template-vm». En un escenario real, se puede utilizar una MV existente.
  • vsphere_virtual_machine "cloned_vm" — Define la MV clonada «cloned-vm».
  • clone { template_uuid = vsphere_virtual_machine.template_vm.id } — Indica que la MV «cloned-vm» debe clonarse desde la MV «template_vm». template_uuid indica el ID de la MV original.
  • customize — Permite configurar los parámetros de la MV clonada, como el nombre de host, la dirección IP y la puerta de enlace. Esto es importante para evitar conflictos de direcciones IP y nombres en la red.
Automatización de la clonación desde una instantánea (utilizando snapshot_uuid):

data "vsphere_virtual_machine" "template_vm" {
  name          = "MyTemplateVM"
}

data "vsphere_virtual_machine_snapshot" "latest_snapshot" {
  virtual_machine_uuid = data.vsphere_virtual_machine.template_vm.id
  sort               = "modify_time_descending"
  most_recent        = true
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "ClonedVMFromSnapshot"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template_vm.id
    snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id

    customize {
      linux_options {
        host_name = "ClonedVMFromSnapshot"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.101"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • data "vsphere_virtual_machine" "template_vm" — Obtiene información sobre una MV existente «MyTemplateVM».
  • data "vsphere_virtual_machine_snapshot" "latest_snapshot" — Obtiene información sobre la última instantánea de esta MV.
  • clone { snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id } — Indica que la clonación debe realizarse desde la instantánea especificada.
Ejecución de Terraform:

  • Guarde la configuración en un archivo, por ejemplo, main.tf.
  • Ejecute el comando terraform init para inicializar Terraform.
  • Ejecute el comando terraform plan para ver los cambios que se realizarán.
  • Ejecute el comando terraform apply para aplicar la configuración y crear la MV clonada.
La automatización con Terraform simplifica enormemente el proceso de clonación de MV, especialmente en grandes infraestructuras. Este enfoque permite escalar y gestionar fácilmente sus máquinas virtuales.

Gestión y almacenamiento de instantáneas: mejores prácticas

Las instantáneas son una herramienta poderosa, pero una gestión incorrecta de las mismas puede provocar problemas de rendimiento y falta de espacio en disco. Es importante seguir las mejores prácticas para la gestión y el almacenamiento de instantáneas.

Mejores prácticas:

  • Limite el número de instantáneas: Intente no crear demasiadas instantáneas para una misma MV. Un gran número de instantáneas puede reducir significativamente el rendimiento de la MV y aumentar el tiempo de reversión a la instantánea. Se recomienda no más de 2-3 instantáneas por MV.
  • Limite el tiempo de almacenamiento de las instantáneas: Las instantáneas no están diseñadas para el almacenamiento a largo plazo. Utilícelas solo para tareas a corto plazo, como las pruebas o las copias de seguridad antes de cambios importantes. Elimine las instantáneas en cuanto ya no las necesite. Se recomienda almacenar las instantáneas durante no más de 72 horas.
  • Supervise el espacio en disco: Compruebe regularmente el uso del espacio en disco, especialmente en los almacenamientos donde se guardan las instantáneas. Las instantáneas pueden ocupar rápidamente mucho espacio, lo que puede provocar problemas de rendimiento y estabilidad. Utilice las herramientas de supervisión que le proporciona su plataforma de virtualización para realizar un seguimiento del uso del espacio en disco.
  • Planifique la eliminación de las instantáneas: Elabore un plan para la eliminación de las instantáneas antiguas. Por ejemplo, puede establecer una regla que elimine automáticamente las instantáneas con una antigüedad superior a un determinado período.
  • Evite las instantáneas en las MV de producción: En la medida de lo posible, evite la creación de instantáneas en las MV de producción, especialmente durante las horas de mayor carga. La creación de una instantánea puede provocar una breve parada de la MV, lo que puede afectar a la disponibilidad del servicio. Si es necesario crear una instantánea en una MV de producción, planifíquela para un momento de carga mínima.
  • Utilice la clonación completa para las copias de seguridad a largo plazo: Las instantáneas no sustituyen a las copias de seguridad completas. Para el almacenamiento de datos a largo plazo, utilice la clonación completa u otros métodos de copia de seguridad.
  • Comprenda los tipos de instantáneas: Conozca la diferencia entre las instantáneas con memoria y sin memoria. Las instantáneas con memoria son útiles para revertir al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución, pero ocupan más espacio y requieren más tiempo para su creación.
Ejemplo: Supervisión del espacio en disco en VMware vSphere:

  • Inicie sesión en vSphere Client.
  • Seleccione el almacenamiento (datastore) que desea comprobar.
  • Vaya a la pestaña «Monitor» -> «Performance».
  • Seleccione «Disk» en la lista desplegable «Chart options».
  • Compruebe los gráficos «Used space» y «Free space».
Ejemplo: Eliminación de instantáneas antiguas en Proxmox VE (a través de la línea de comandos):

qm snapshot-delete   

Donde es el ID de la MV y es el nombre de la instantánea que se va a eliminar. Por ejemplo:

qm snapshot-delete 100 snap1

Este comando eliminará la instantánea «snap1» de la MV con ID 100.

Siguiendo estas mejores prácticas, podrá gestionar eficazmente las instantáneas y evitar los problemas relacionados con su uso. Una gestión adecuada de las instantáneas le ayudará a mantener un alto rendimiento y estabilidad de su infraestructura virtual.

Ejemplo 2: Copia de seguridad antes de cambios importantes

Antes de instalar una actualización importante del sistema operativo o de una aplicación, cree una instantánea de la MV. Si la actualización provoca problemas, puede volver rápidamente al estado original revirtiendo a la instantánea.

Ejemplo 3: Creación de varios entornos idénticos

Para la implementación de una aplicación web escalable, es posible que necesite varias MV idénticas. Cree una MV, configúrela, cree una instantánea y, a continuación, clónela a partir de la instantánea el número de veces que sea necesario. Esto es mucho más rápido que configurar cada MV desde cero.

Creación de una instantánea en VMware ESXi

¿Cómo clonar una máquina virtual? - Interfaz de VMware vSphere Client para la creación de instantáneas
VMware ESXi proporciona una interfaz gráfica vSphere Client fácil de usar para la gestión de instantáneas. Además, se puede utilizar la línea de comandos (ESXi Shell) o vCLI (VMware Command-Line Interface).

Creación de una instantánea a través de vSphere Client:

  • Inicie sesión en vSphere Client y conéctese al host ESXi o a vCenter Server.
  • Seleccione la MV para la que desea crear una instantánea.
  • Haga clic con el botón derecho del ratón en la MV y seleccione «Snapshots» -> «Take Snapshot…».
  • Introduzca un nombre y una descripción para la instantánea.
  • Seleccione la opción «Memory» (incluir la memoria de la MV en la instantánea) si es necesario. La inclusión de la memoria aumenta el tamaño de la instantánea y el tiempo de creación, pero permite volver al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución.
  • Haga clic en «OK».
Creación de una instantánea a través de la línea de comandos (ESXi Shell):

vim-cmd vmfs/snapshot/create 

Donde es el ID de su máquina virtual. Para averiguar el ID, puede utilizar el comando:

vim-cmd vmsvc/getallvms

Ejemplo completo:

vim-cmd vmfs/snapshot/create 123 snapshot-name snapshot-description 0 0

En este comando:

  • 123 — ID de la máquina virtual.
  • snapshot-name — Nombre de la instantánea.
  • snapshot-description — Descripción de la instantánea.
  • 0 — Incluir memoria (0 — no, 1 — sí).
  • 0 — Quiesce (0 — no, 1 — sí). Quiesce intenta suspender el sistema de archivos del sistema operativo invitado para garantizar la coherencia de los datos. Requiere la instalación de VMware Tools.
Creación de una instantánea a través de vCLI:

vmware-cmd 

Donde es la ruta al archivo de configuración de la MV (.vmx). Por ejemplo:

vmware-cmd /vmfs/volumes/datastore1/MyVM/MyVM.vmx createsnapshot "SnapshotName" "SnapshotDescription" 0 0

Este comando hace lo mismo que el ejemplo con ESXi Shell, pero se ejecuta desde una máquina cliente donde está instalado vCLI.

Clonación de una MV desde una instantánea en Proxmox VE

Proxmox VE también soporta la creación de instantáneas y la clonación a partir de ellas. El proceso de clonación a partir de una instantánea en Proxmox VE es un poco diferente al de VMware, pero también es relativamente sencillo.

Creación de una instantánea en Proxmox VE:

  • Inicie sesión en la interfaz web de Proxmox VE.
  • Seleccione la MV para la que desea crear una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Haga clic en el botón «Take Snapshot».
  • Introduzca un nombre para la instantánea y una descripción (opcional).
  • Haga clic en el botón «Take Snapshot».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la interfaz web):

  • Seleccione la MV que desea clonar desde una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Seleccione la instantánea desde la que desea clonar.
  • Haga clic en el botón «Clone».
  • En la ventana que aparece, especifique:
    • «Target Storage»: seleccione el almacenamiento para la MV clonada.
    • «VMID»: especifique un nuevo ID para la MV clonada (debe ser único).
    • «Name»: especifique un nombre para la MV clonada.
    • «Mode»: seleccione «Full Clone» (creará una copia completa del disco) o «Linked Clone» (creará un clon que hace referencia a la instantánea original, ocupando menos espacio, pero dependiendo de la instantánea original). Para la clonación desde una instantánea, se recomienda «Linked Clone».
    • «Target Node»: seleccione el nodo en el que se ejecutará la MV clonada.
    • «Start after creation»: iniciar la MV clonada inmediatamente después de la creación.
  • Haga clic en el botón «Clone».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la línea de comandos):

qm clone  --newid  --name  --storage  --snapshot 

Por ejemplo:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1

En este comando:

  • 100 — ID de la MV original.
  • 200 — ID de la MV clonada.
  • clonevm — Nombre de la MV clonada.
  • local-lvm — Nombre del almacenamiento donde se ubicará la MV clonada.
  • snap1 — Nombre de la instantánea desde la que se clonará la MV.

Para crear un linked clone, añada la opción --linked 1:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1 --linked 1
Importante: Si utiliza linked clone, la eliminación de la instantánea original provocará daños en la MV clonada.

Automatización del proceso de clonación con Terraform

Terraform es una potente herramienta de Infraestructura como Código (IaC) que permite automatizar la creación, modificación y gestión de la infraestructura, incluidas las máquinas virtuales. El uso de Terraform para clonar MV permite que este proceso sea repetible, predecible y automatizado. Veremos un ejemplo de automatización de la clonación de MV en VMware vSphere.

Requisitos previos:

  • Terraform instalado.
  • Proveedor de VMware vSphere configurado para Terraform.
  • Cuenta con permisos suficientes en vSphere.
Ejemplo de configuración de Terraform:

resource "vsphere_virtual_machine" "template_vm" {
  name             = "template-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  disk {
    label            = "disk0"
    size             = 20
    eagerly_scrub = false
    thin_provisioned = true
  }
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "cloned-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = vsphere_virtual_machine.template_vm.id

    customize {
      linux_options {
        host_name = "cloned-vm"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.100"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • vsphere_virtual_machine "template_vm" — Define la MV original (plantilla) desde la que se realizará la clonación. En este ejemplo, se crea una nueva MV «template-vm». En un escenario real, se puede utilizar una MV existente.
  • vsphere_virtual_machine "cloned_vm" — Define la MV clonada «cloned-vm».
  • clone { template_uuid = vsphere_virtual_machine.template_vm.id } — Indica que la MV «cloned-vm» debe clonarse desde la MV «template_vm». template_uuid indica el ID de la MV original.
  • customize — Permite configurar los parámetros de la MV clonada, como el nombre de host, la dirección IP y la puerta de enlace. Esto es importante para evitar conflictos de direcciones IP y nombres en la red.
Automatización de la clonación desde una instantánea (utilizando snapshot_uuid):

data "vsphere_virtual_machine" "template_vm" {
  name          = "MyTemplateVM"
}

data "vsphere_virtual_machine_snapshot" "latest_snapshot" {
  virtual_machine_uuid = data.vsphere_virtual_machine.template_vm.id
  sort               = "modify_time_descending"
  most_recent        = true
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "ClonedVMFromSnapshot"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template_vm.id
    snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id

    customize {
      linux_options {
        host_name = "ClonedVMFromSnapshot"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.101"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • data "vsphere_virtual_machine" "template_vm" — Obtiene información sobre una MV existente «MyTemplateVM».
  • data "vsphere_virtual_machine_snapshot" "latest_snapshot" — Obtiene información sobre la última instantánea de esta MV.
  • clone { snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id } — Indica que la clonación debe realizarse desde la instantánea especificada.
Ejecución de Terraform:

  • Guarde la configuración en un archivo, por ejemplo, main.tf.
  • Ejecute el comando terraform init para inicializar Terraform.
  • Ejecute el comando terraform plan para ver los cambios que se realizarán.
  • Ejecute el comando terraform apply para aplicar la configuración y crear la MV clonada.
La automatización con Terraform simplifica enormemente el proceso de clonación de MV, especialmente en grandes infraestructuras. Este enfoque permite escalar y gestionar fácilmente sus máquinas virtuales.

Gestión y almacenamiento de instantáneas: mejores prácticas

Las instantáneas son una herramienta poderosa, pero una gestión incorrecta de las mismas puede provocar problemas de rendimiento y falta de espacio en disco. Es importante seguir las mejores prácticas para la gestión y el almacenamiento de instantáneas.

Mejores prácticas:

  • Limite el número de instantáneas: Intente no crear demasiadas instantáneas para una misma MV. Un gran número de instantáneas puede reducir significativamente el rendimiento de la MV y aumentar el tiempo de reversión a la instantánea. Se recomienda no más de 2-3 instantáneas por MV.
  • Limite el tiempo de almacenamiento de las instantáneas: Las instantáneas no están diseñadas para el almacenamiento a largo plazo. Utilícelas solo para tareas a corto plazo, como las pruebas o las copias de seguridad antes de cambios importantes. Elimine las instantáneas en cuanto ya no las necesite. Se recomienda almacenar las instantáneas durante no más de 72 horas.
  • Supervise el espacio en disco: Compruebe regularmente el uso del espacio en disco, especialmente en los almacenamientos donde se guardan las instantáneas. Las instantáneas pueden ocupar rápidamente mucho espacio, lo que puede provocar problemas de rendimiento y estabilidad. Utilice las herramientas de supervisión que le proporciona su plataforma de virtualización para realizar un seguimiento del uso del espacio en disco.
  • Planifique la eliminación de las instantáneas: Elabore un plan para la eliminación de las instantáneas antiguas. Por ejemplo, puede establecer una regla que elimine automáticamente las instantáneas con una antigüedad superior a un determinado período.
  • Evite las instantáneas en las MV de producción: En la medida de lo posible, evite la creación de instantáneas en las MV de producción, especialmente durante las horas de mayor carga. La creación de una instantánea puede provocar una breve parada de la MV, lo que puede afectar a la disponibilidad del servicio. Si es necesario crear una instantánea en una MV de producción, planifíquela para un momento de carga mínima.
  • Utilice la clonación completa para las copias de seguridad a largo plazo: Las instantáneas no sustituyen a las copias de seguridad completas. Para el almacenamiento de datos a largo plazo, utilice la clonación completa u otros métodos de copia de seguridad.
  • Comprenda los tipos de instantáneas: Conozca la diferencia entre las instantáneas con memoria y sin memoria. Las instantáneas con memoria son útiles para revertir al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución, pero ocupan más espacio y requieren más tiempo para su creación.
Ejemplo: Supervisión del espacio en disco en VMware vSphere:

  • Inicie sesión en vSphere Client.
  • Seleccione el almacenamiento (datastore) que desea comprobar.
  • Vaya a la pestaña «Monitor» -> «Performance».
  • Seleccione «Disk» en la lista desplegable «Chart options».
  • Compruebe los gráficos «Used space» y «Free space».
Ejemplo: Eliminación de instantáneas antiguas en Proxmox VE (a través de la línea de comandos):

qm snapshot-delete   

Donde es el ID de la MV y es el nombre de la instantánea que se va a eliminar. Por ejemplo:

qm snapshot-delete 100 snap1

Este comando eliminará la instantánea «snap1» de la MV con ID 100.

Siguiendo estas mejores prácticas, podrá gestionar eficazmente las instantáneas y evitar los problemas relacionados con su uso. Una gestión adecuada de las instantáneas le ayudará a mantener un alto rendimiento y estabilidad de su infraestructura virtual.

Cómo clonar una máquina virtual: guía detallada para crear instantáneas del estado actual

Clonar una máquina virtual (MV) es una operación crítica para las pruebas, las copias de seguridad y la implementación rápida de entornos idénticos. Sin embargo, la clonación completa, especialmente de las MV grandes, puede llevar mucho tiempo y espacio en disco. En este artículo, analizaremos en detalle un método más eficaz: la creación de instantáneas (snapshots) y la clonación basada en ellas. Examinaremos varios escenarios, herramientas y mejores prácticas para utilizar este método de forma eficaz, garantizando una clonación rápida y fiable de sus MV.

Contenido:

  1. Ventajas de la clonación basada en instantáneas del estado actual
  2. Creación de una instantánea en VMware ESXi
  3. Clonación de una MV desde una instantánea en Proxmox VE
  4. Automatización del proceso de clonación con Terraform
  5. Gestión y almacenamiento de instantáneas: mejores prácticas

Ventajas de la clonación basada en instantáneas del estado actual

¿Cómo clonar una máquina virtual? - Comparación de la clonación completa y la clonación basada en instantáneas
La clonación tradicional de una MV implica la creación de una copia completa del disco virtual. Este puede ser un proceso que consuma muchos recursos, especialmente para las MV grandes. Las instantáneas, por el contrario, capturan el estado de la MV en un momento determinado. Al clonar basándose en una instantánea, se crea una nueva MV que hace referencia a la instantánea original, y todos los cambios se escriben en un archivo separado (disco delta). Esto tiene las siguientes ventajas:

  • Ahorro de tiempo: La creación de una instantánea y la clonación a partir de ella se realizan mucho más rápido que la clonación completa, especialmente para las MV grandes.
  • Ahorro de espacio en disco: La clonación basada en instantáneas ocupa menos espacio, ya que no requiere una copia completa del disco. Los cambios se escriben solo en el disco delta.
  • Recuperación rápida: Posibilidad de revertir rápidamente a un estado anterior de la MV, lo cual es útil en las pruebas y el desarrollo.
  • No afecta al rendimiento de la MV principal: La creación de una instantánea tiene un impacto mínimo en el rendimiento de la MV principal, a diferencia de la clonación completa. Sin embargo, el almacenamiento prolongado y una gran cantidad de instantáneas pueden afectar el rendimiento.
Ejemplo 1: Desarrollo y pruebas

Supongamos que tiene una MV de Producción con un servidor web y una base de datos. Desea probar una actualización de la aplicación sin arriesgarse a interrumpir la Producción. Cree una instantánea de la MV, clónela a partir de la instantánea y pruebe la actualización en el entorno clonado. Si algo sale mal, simplemente puede eliminar la MV clonada y volver a la instantánea original.

Ejemplo 2: Copia de seguridad antes de cambios importantes

Antes de instalar una actualización importante del sistema operativo o de una aplicación, cree una instantánea de la MV. Si la actualización provoca problemas, puede volver rápidamente al estado original revirtiendo a la instantánea.

Ejemplo 3: Creación de varios entornos idénticos

Para la implementación de una aplicación web escalable, es posible que necesite varias MV idénticas. Cree una MV, configúrela, cree una instantánea y, a continuación, clónela a partir de la instantánea el número de veces que sea necesario. Esto es mucho más rápido que configurar cada MV desde cero.

Creación de una instantánea en VMware ESXi

¿Cómo clonar una máquina virtual? - Interfaz de VMware vSphere Client para la creación de instantáneas
VMware ESXi proporciona una interfaz gráfica vSphere Client fácil de usar para la gestión de instantáneas. Además, se puede utilizar la línea de comandos (ESXi Shell) o vCLI (VMware Command-Line Interface).

Creación de una instantánea a través de vSphere Client:

  • Inicie sesión en vSphere Client y conéctese al host ESXi o a vCenter Server.
  • Seleccione la MV para la que desea crear una instantánea.
  • Haga clic con el botón derecho del ratón en la MV y seleccione «Snapshots» -> «Take Snapshot…».
  • Introduzca un nombre y una descripción para la instantánea.
  • Seleccione la opción «Memory» (incluir la memoria de la MV en la instantánea) si es necesario. La inclusión de la memoria aumenta el tamaño de la instantánea y el tiempo de creación, pero permite volver al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución.
  • Haga clic en «OK».
Creación de una instantánea a través de la línea de comandos (ESXi Shell):

vim-cmd vmfs/snapshot/create 

Donde es el ID de su máquina virtual. Para averiguar el ID, puede utilizar el comando:

vim-cmd vmsvc/getallvms

Ejemplo completo:

vim-cmd vmfs/snapshot/create 123 snapshot-name snapshot-description 0 0

En este comando:

  • 123 — ID de la máquina virtual.
  • snapshot-name — Nombre de la instantánea.
  • snapshot-description — Descripción de la instantánea.
  • 0 — Incluir memoria (0 — no, 1 — sí).
  • 0 — Quiesce (0 — no, 1 — sí). Quiesce intenta suspender el sistema de archivos del sistema operativo invitado para garantizar la coherencia de los datos. Requiere la instalación de VMware Tools.
Creación de una instantánea a través de vCLI:

vmware-cmd 

Donde es la ruta al archivo de configuración de la MV (.vmx). Por ejemplo:

vmware-cmd /vmfs/volumes/datastore1/MyVM/MyVM.vmx createsnapshot "SnapshotName" "SnapshotDescription" 0 0

Este comando hace lo mismo que el ejemplo con ESXi Shell, pero se ejecuta desde una máquina cliente donde está instalado vCLI.

Clonación de una MV desde una instantánea en Proxmox VE

Proxmox VE también soporta la creación de instantáneas y la clonación a partir de ellas. El proceso de clonación a partir de una instantánea en Proxmox VE es un poco diferente al de VMware, pero también es relativamente sencillo.

Creación de una instantánea en Proxmox VE:

  • Inicie sesión en la interfaz web de Proxmox VE.
  • Seleccione la MV para la que desea crear una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Haga clic en el botón «Take Snapshot».
  • Introduzca un nombre para la instantánea y una descripción (opcional).
  • Haga clic en el botón «Take Snapshot».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la interfaz web):

  • Seleccione la MV que desea clonar desde una instantánea.
  • Vaya a la pestaña «Snapshots».
  • Seleccione la instantánea desde la que desea clonar.
  • Haga clic en el botón «Clone».
  • En la ventana que aparece, especifique:
    • «Target Storage»: seleccione el almacenamiento para la MV clonada.
    • «VMID»: especifique un nuevo ID para la MV clonada (debe ser único).
    • «Name»: especifique un nombre para la MV clonada.
    • «Mode»: seleccione «Full Clone» (creará una copia completa del disco) o «Linked Clone» (creará un clon que hace referencia a la instantánea original, ocupando menos espacio, pero dependiendo de la instantánea original). Para la clonación desde una instantánea, se recomienda «Linked Clone».
    • «Target Node»: seleccione el nodo en el que se ejecutará la MV clonada.
    • «Start after creation»: iniciar la MV clonada inmediatamente después de la creación.
  • Haga clic en el botón «Clone».
Clonación de una MV desde una instantánea en Proxmox VE (a través de la línea de comandos):

qm clone  --newid  --name  --storage  --snapshot 

Por ejemplo:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1

En este comando:

  • 100 — ID de la MV original.
  • 200 — ID de la MV clonada.
  • clonevm — Nombre de la MV clonada.
  • local-lvm — Nombre del almacenamiento donde se ubicará la MV clonada.
  • snap1 — Nombre de la instantánea desde la que se clonará la MV.

Para crear un linked clone, añada la opción --linked 1:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1 --linked 1
Importante: Si utiliza linked clone, la eliminación de la instantánea original provocará daños en la MV clonada.

Automatización del proceso de clonación con Terraform

Terraform es una potente herramienta de Infraestructura como Código (IaC) que permite automatizar la creación, modificación y gestión de la infraestructura, incluidas las máquinas virtuales. El uso de Terraform para clonar MV permite que este proceso sea repetible, predecible y automatizado. Veremos un ejemplo de automatización de la clonación de MV en VMware vSphere.

Requisitos previos:

  • Terraform instalado.
  • Proveedor de VMware vSphere configurado para Terraform.
  • Cuenta con permisos suficientes en vSphere.
Ejemplo de configuración de Terraform:

resource "vsphere_virtual_machine" "template_vm" {
  name             = "template-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  disk {
    label            = "disk0"
    size             = 20
    eagerly_scrub = false
    thin_provisioned = true
  }
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "cloned-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = vsphere_virtual_machine.template_vm.id

    customize {
      linux_options {
        host_name = "cloned-vm"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.100"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • vsphere_virtual_machine "template_vm" — Define la MV original (plantilla) desde la que se realizará la clonación. En este ejemplo, se crea una nueva MV «template-vm». En un escenario real, se puede utilizar una MV existente.
  • vsphere_virtual_machine "cloned_vm" — Define la MV clonada «cloned-vm».
  • clone { template_uuid = vsphere_virtual_machine.template_vm.id } — Indica que la MV «cloned-vm» debe clonarse desde la MV «template_vm». template_uuid indica el ID de la MV original.
  • customize — Permite configurar los parámetros de la MV clonada, como el nombre de host, la dirección IP y la puerta de enlace. Esto es importante para evitar conflictos de direcciones IP y nombres en la red.
Automatización de la clonación desde una instantánea (utilizando snapshot_uuid):

data "vsphere_virtual_machine" "template_vm" {
  name          = "MyTemplateVM"
}

data "vsphere_virtual_machine_snapshot" "latest_snapshot" {
  virtual_machine_uuid = data.vsphere_virtual_machine.template_vm.id
  sort               = "modify_time_descending"
  most_recent        = true
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "ClonedVMFromSnapshot"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template_vm.id
    snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id

    customize {
      linux_options {
        host_name = "ClonedVMFromSnapshot"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.101"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

En este ejemplo:

  • data "vsphere_virtual_machine" "template_vm" — Obtiene información sobre una MV existente «MyTemplateVM».
  • data "vsphere_virtual_machine_snapshot" "latest_snapshot" — Obtiene información sobre la última instantánea de esta MV.
  • clone { snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id } — Indica que la clonación debe realizarse desde la instantánea especificada.
Ejecución de Terraform:

  • Guarde la configuración en un archivo, por ejemplo, main.tf.
  • Ejecute el comando terraform init para inicializar Terraform.
  • Ejecute el comando terraform plan para ver los cambios que se realizarán.
  • Ejecute el comando terraform apply para aplicar la configuración y crear la MV clonada.
La automatización con Terraform simplifica enormemente el proceso de clonación de MV, especialmente en grandes infraestructuras. Este enfoque permite escalar y gestionar fácilmente sus máquinas virtuales.

Gestión y almacenamiento de instantáneas: mejores prácticas

Las instantáneas son una herramienta poderosa, pero una gestión incorrecta de las mismas puede provocar problemas de rendimiento y falta de espacio en disco. Es importante seguir las mejores prácticas para la gestión y el almacenamiento de instantáneas.

Mejores prácticas:

  • Limite el número de instantáneas: Intente no crear demasiadas instantáneas para una misma MV. Un gran número de instantáneas puede reducir significativamente el rendimiento de la MV y aumentar el tiempo de reversión a la instantánea. Se recomienda no más de 2-3 instantáneas por MV.
  • Limite el tiempo de almacenamiento de las instantáneas: Las instantáneas no están diseñadas para el almacenamiento a largo plazo. Utilícelas solo para tareas a corto plazo, como las pruebas o las copias de seguridad antes de cambios importantes. Elimine las instantáneas en cuanto ya no las necesite. Se recomienda almacenar las instantáneas durante no más de 72 horas.
  • Supervise el espacio en disco: Compruebe regularmente el uso del espacio en disco, especialmente en los almacenamientos donde se guardan las instantáneas. Las instantáneas pueden ocupar rápidamente mucho espacio, lo que puede provocar problemas de rendimiento y estabilidad. Utilice las herramientas de supervisión que le proporciona su plataforma de virtualización para realizar un seguimiento del uso del espacio en disco.
  • Planifique la eliminación de las instantáneas: Elabore un plan para la eliminación de las instantáneas antiguas. Por ejemplo, puede establecer una regla que elimine automáticamente las instantáneas con una antigüedad superior a un determinado período.
  • Evite las instantáneas en las MV de producción: En la medida de lo posible, evite la creación de instantáneas en las MV de producción, especialmente durante las horas de mayor carga. La creación de una instantánea puede provocar una breve parada de la MV, lo que puede afectar a la disponibilidad del servicio. Si es necesario crear una instantánea en una MV de producción, planifíquela para un momento de carga mínima.
  • Utilice la clonación completa para las copias de seguridad a largo plazo: Las instantáneas no sustituyen a las copias de seguridad completas. Para el almacenamiento de datos a largo plazo, utilice la clonación completa u otros métodos de copia de seguridad.
  • Comprenda los tipos de instantáneas: Conozca la diferencia entre las instantáneas con memoria y sin memoria. Las instantáneas con memoria son útiles para revertir al estado exacto de la MV, incluido el estado de las aplicaciones en ejecución, pero ocupan más espacio y requieren más tiempo para su creación.
Ejemplo: Supervisión del espacio en disco en VMware vSphere:

  • Inicie sesión en vSphere Client.
  • Seleccione el almacenamiento (datastore) que desea comprobar.
  • Vaya a la pestaña «Monitor» -> «Performance».
  • Seleccione «Disk» en la lista desplegable «Chart options».
  • Compruebe los gráficos «Used space» y «Free space».
Ejemplo: Eliminación de instantáneas antiguas en Proxmox VE (a través de la línea de comandos):

qm snapshot-delete   

Donde es el ID de la MV y es el nombre de la instantánea que se va a eliminar. Por ejemplo:

qm snapshot-delete 100 snap1

Este comando eliminará la instantánea «snap1» de la MV con ID 100.

Siguiendo estas mejores prácticas, podrá gestionar eficazmente las instantáneas y evitar los problemas relacionados con su uso. Una gestión adecuada de las instantáneas le ayudará a mantener un alto rendimiento y estabilidad de su infraestructura virtual.