Buscar

VMWare: Diferencia entre "I moved it" y "I copied it"

Sobre un entorno VMWare, al iniciar una VM que ha sido copiada o movida de ubicación de forma manual, nos aparecerá la siguiente pregunta:


ESXi, pregunta sobre moved y copied

---

This virtual machine might have been moved or copied.

In order to configure certain management and networking features, VMware ESX needs to know if this virtual machine was moved or copied.

If you don't know, answer "I copied it"


--

Este comportamiento ocurre con hipervisores ESXi y también con VMWare Workstation:


VMWare Workstation, Moved it, Copied it

--- 

¿Por qué aparece el mensaje?

En el fichero de configuración de la VM, fichero VMX, está almacenada la ubicación de la VM, valor: uuid.location

Al iniciar la VM, se verifica que el valor uuid.location del fichero VMX coincida con la ubicación actual de la VM.

Si no coinciden, aparece la pregunta anterior.

--- 

¿Cuál es la diferencia entre "I moved it" y "I copied it"?

Ambas opciones realizarán cambios en el fichero de configuración VMX de la VM.

Los cambios realizados en el fichero VMX según la opción marcada, son los siguientes:

La opción "I moved it", realizará cambios en:

uuid.location
guestCPUID.XXX
hostCPUID.XXX
userCPUID.XXX


La opción "I copied it", realizará cambios en:

uuid.location
guestCPUID.XXX
hostCPUID.XXX
userCPUID.XXX


y además:

uuid.bios
ethernetX.generatedAddress


---

Ejemplos de valores anteriores en un fichero VMX de una VM:

uuid.location = "56 4d 40 e8 41 91 d4 35-71 a3 08 34 48 c8 ac 80"

guestCPUID.0 = "0000000d756e65476c65746e49656e69"
guestCPUID.1 = "000306a900020800969802031fabbbff"
guestCPUID.80000001 = "00000000000000000000000008100800"

hostCPUID.0 = "0000000d756e65476c65746e49656e69"
hostCPUID.1 = "000306a900010800f6ba220b0fabfbff"
hostCPUID.80000001 = "00000000000000000000000128100800"

userCPUID.0 = "0000000d756e65476c65746e49656e69"
userCPUID.1 = "000306a900020800969802031fabbbff"
userCPUID.80000001 = "00000000000000000000000008100800"

uuid.bios = "42 34 e5 dd bb 63 b7 c3-79 0a ee 2a e6 b9 48 9f"

ethernet0.generatedAddress = "00:50:56:b4:02:1b"


* En rojo, también cambios efectuados por "I copied it".

---

¿Por qué el hipervisor nos sugiere "I copied it"?

Por precaución: La opción "I copied it" no mantendrá el valor de uuid.bios, que corresponde al identificador de la VM.

No pueden haber dos VMs con el mismo identificador.

---

Conclusiones:

  • Tanto la opción "I moved it" como "I copied it" cambian los valores: guestCPUID, hostCPUID y userCPUID, por lo que la VM detecta la CPU al iniciar.
  • Tanto la opción "I moved it" como "I copied it", cambian el valor uuid.location, es decir, el hash de la ruta donde apunta la VM.
  • La opción "I copied it" cambia el valor uuid.bios, que contiene el identificador de la máquina virtual y el valor de ethernet0.generatedAddress, que genera la MAC de la tarjeta de red virtual.

2 comentarios:

  1. Hola, tenía un par de consultas al respecto de este interesante post:
    1- Influye algo que la mac se haya asignado manualmente (por ejemplo por cuestiones de licenciamiento...) a la hora de utilizar una de las dos opciones?
    2- El identificador uuid.bios indicas que debe ser único, pero a que nivel? Site? vCenter? Host ESXi?
    3- Y la duda más práctica, de cara a backups y réplicas como te enfrentas en sistemas que al cambiar la MAC pierden la configuración de red? me refiero tienes algún script al arranque para corregirlo automáticamente? tienes un script pero es bajo demanda y lo tienes que lanzar en caso de restaurar o similar? directamente haces que la configuración de red vaya por adaptador y no por MAC (esto entiendo que puede ser problemático según el caso)?

    Gracias y perdón por el rollo.

    ResponderEliminar
    Respuestas
    1. Hola Jesús,

      ¡Gracias por participar en el blog!

      Te contesto a continuación:

      El cambio de MAC solo se produce si contestas "I copied it", pero en un entorno de producción, la pregunta en cuestión, normalmente no aparece ya que realizarás movimientos con vMotion o Svmotion, etc.

      Los movimientos con vMotion o sVMotion, actualizan el fichero VMX, por lo tanto, no aparece la pregunta, no hay ningún cambio de uuid.bios y por supuesto no hay ningún cambio de MAC.

      La pregunta solo aparecerá, cuando no le cuadra la ubicación actual de la VM con lo que está indicado en el fichero VMX.

      Insisto, los cambios de ubicación, aunque los realices con software de terceros como Veeam, funcionalidad Quick Migration, se actualiza el fichero VMX con la nueva ubicación de la VM, así que no aparece la pregunta.

      Sobre el uuid.bios, efectivamente el valor ha de ser único a nivel todas las VMs registradas en VCenter, como hay una parte de la generación del identificador que es random, de forma natural, las VMs tendrán su ID único siempre.

      Si haces operaciones como "Clone" manual, por ejemplo desde la shell de ESXi, al iniciar la VM clonada, aparecerá la pregunta, ya que has cambiado la ubicación anotada en el fichero VMX.

      Si tienes MACs generadas manualmente, por cuestiones de licenciamiento de software, efectivamente estas no cambiarán. El "I copied it" solo cambiará el valor de "ethernet.generatedaddress" del fichero VMX, es decir las MACs autogeneradas.

      La idea del cambio de valor de la "ethernet.generatedaddress" es para evitar confictos de MAC.

      Ojo, si has licenciado tu software por MAC sobre una "ethernet.generatedaddress", aquí si puedes tener problemas, si aparece la pregunta y contestas "I copied it", ya que el valor cambiará.

      Los software licenciados por MAC, deberían tener una MAC estática manual configurada.

      Las MACs generadas manualmente, son guardadas como "ethernetX.address", donde X corresponde al número de interface, estas como no son autogeneradas, no cambian.

      Puedes ver con PowerCLI, las VMs que tienen una asignación de MAC manual y así tenerlas controladas:

      Ver VMs con la MAC manual (no las generated MAC):

      Get-VM | Where-Object {($_ | Get-NetworkAdapter).ExtensionData.AddressType -eq "manual"}

      También puedes asignar una MAC manual con PowerCLI con el cmd-let: Set-NetworkAdapter y el parámetro -MacAddress

      Un saludo!

      Xavi.

      Eliminar