User Tools

Site Tools


informatica:linux:virtualizacion:kvm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:virtualizacion:kvm [2014/02/25 11:54] – [API] javiinformatica:linux:virtualizacion:kvm [2020/06/10 07:12] (current) javi
Line 17: Line 17:
  
 3. Comprobar que el sistema operativo soporta virtualizacion: 3. Comprobar que el sistema operativo soporta virtualizacion:
 +
 +Una vez encontré un escenario en el que la prueba 3.1. era KO y la 3.2. OK, por lo que creo que la más exacta es la 3.1.
 +
 +3.1. Ver si kvm está deshabilitado a nivel de BIOS
 +
 +  dmesg | grep bios
 +
 +3.2 Ejecutar
  
   sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo   sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo
Line 293: Line 301:
 En este ejemplo se establece el valor en 524288 KB En este ejemplo se establece el valor en 524288 KB
  
 +  * Arrancar la VM al arrancar el hipervisor:
 +
 +  sudo virsh autostart myvmname
 ====== Salir de la consola ====== ====== Salir de la consola ======
  
Line 367: Line 378:
   sudo vim test-1.example.com.xml   sudo vim test-1.example.com.xml
  
-ajustar los nombres, como por ejemplo en las siguientes etiquetas:+asegurarse de que los siguientes valores son unicos y correctos:
  
 +  * Name
 <code> <code>
-Name +<name>test-1.example.com</name> 
-Disk+</code> 
 +  * Almacenamiento (en este caso LVM) 
 +<code> 
 +<source dev='/dev/vg/lv_test_1'/> 
 +</code> 
 +  * MAC address (importante, quiza hemos copiado la maquina y esta duplicada): 
 +<code>   
 +<mac address='00:16:3e:0e:3e:53'/>
 </code> </code>
  
-5. Ajustar, si es necesario, la ruta/punto de montaje del disco.+Script para generar MAC addresses:
  
-6Definir la nueva VM:+<code> 
 +#!/usr/bin/python 
 +# macgen.py script to generate a MAC address for guests on Xen 
 +
 +import random 
 +
 +def randomMAC(): 
 +        mac = [ 0x00, 0x16, 0x3e, 
 +                random.randint(0x00, 0x7f), 
 +                random.randint(0x00, 0xff), 
 +                random.randint(0x00, 0xff) ] 
 +        return ':'.join(map(lambda x: "%02x" % x, mac)) 
 +
 +print randomMAC() 
 +</code>
  
-  virsh define test-1.example.com.xml+Ahora obtenemos el listado de VMS: 
 + 
 +  virsh list --all
      
 +Y para cada una de ellas obtenemos la MAC address:
 +
 +  virsh dumpxml vm-1.example.com | grep "mac address" | awk '{print $2}' | cut -d "'" -f2
 +
 +TODO: hacer un script en bash que lo haga
 +
 +Finalmente nos aseguramos que la nueva MAC generada es unica.
 +
 +5. Definir la nueva VM:
 +
 +  virsh define test-1.example.com.xml
 +
 ===== VM destino existe ===== ===== VM destino existe =====
  
Line 811: Line 858:
 9. (VM arrancada con live CD) Con parted eliminar las particiones 2 y 5 y recrearlas. Recomiendo ejecutarlo asi: 9. (VM arrancada con live CD) Con parted eliminar las particiones 2 y 5 y recrearlas. Recomiendo ejecutarlo asi:
  
-  sudo parted -a optimal /dev/vda+  parted -a optimal /dev/vda
  
 Cambiamos a sectores como unidad: Cambiamos a sectores como unidad:
Line 840: Line 887:
 10. (VM arrancada con live CD) Copiar con dd de la particion destino a la origan, una vez recreada: 10. (VM arrancada con live CD) Copiar con dd de la particion destino a la origan, una vez recreada:
  
-  time sudo dd if=/dev/vdb5 of=/dev/vda5 bs=512+  time dd if=/dev/vdb5 of=/dev/vda5 bs=512
      
 Creo que el proceso de nuevo tiene una velocidad entorno a los 60 MB/s Creo que el proceso de nuevo tiene una velocidad entorno a los 60 MB/s
Line 1699: Line 1746:
   * Cuando el volumen es montado por un segundo guest, los guests ya solo pueden leer, y escribir como root, pero no escribir como un usuario normal. No creo que sea una limitacion de virtfs, pero tengo que investigarlo.   * Cuando el volumen es montado por un segundo guest, los guests ya solo pueden leer, y escribir como root, pero no escribir como un usuario normal. No creo que sea una limitacion de virtfs, pero tengo que investigarlo.
   * En las mismas circunstancias no puedo hacer un "./script.sh" y si un "bash script.sh". No se que consecuencias puede tener   * En las mismas circunstancias no puedo hacer un "./script.sh" y si un "bash script.sh". No se que consecuencias puede tener
 +  * **BUG**: cuando se anyade un nuevo punto de montaje en una VM (virsh edit vm_1) tengo que parar y luego arrancar la VM para que esta vea el punto de montaje. Si simplemente la reinicio vera los puntos de montajes anteriores, pero no el nuevo
 ===== Virtfs (9p) passthrough ===== ===== Virtfs (9p) passthrough =====
  
Line 2025: Line 2073:
  
 http://libvirt.org/acl.html http://libvirt.org/acl.html
 +
 +http://libvirt.org/aclpolkit.html
  
 https://wiki.archlinux.org/index.php/libvirt#Using_Python https://wiki.archlinux.org/index.php/libvirt#Using_Python
  
-===== API =====+Ejemplo sencillo de uso sin contrasenya si se dan las siguientes condiciones:
  
-Ejemplo de metodos y propiades de un objeto de tipo conn:+  * Configuracion por defecto (**NO** se ha habilitado policykit) 
 +  * El usuario que ejecuta el script pertenece al grupo especificado en la variable "unix_sock_group" de /etc/libvirt/libvirtd.conf 
 +  * El script se ejecuta desde el mismo hipervisor
  
-<code> +  virsh -c qemu:///system list 
-conn = libvirt.open("qemu+ssh://localhost/system") + 
-domains = conn.listDomainsID() +La url sirve para la API tambien 
-for domainID in domains: +===== API ===== 
-    domConnect conn.lookupByID(domainID) + 
-</code>+http://libvirt.org/html/libvirt-libvirt.html
  
 ==== virConnect ==== ==== virConnect ====
informatica/linux/virtualizacion/kvm.1393329277.txt.gz · Last modified: 2015/04/13 20:19 (external edit)