User Tools

Site Tools


informatica:linux:escaner

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
informatica:linux:escaner [2012/06/08 18:31]
javi
informatica:linux:escaner [2015/04/13 22:19] (current)
Line 1: Line 1:
-====== ​scanner ​======+====== ​escaner ​======
  
-virtualizacion+sane scanner escaner gscan2pdf scanadf scanimage
  
-http://​wiki.kartbuilding.net/​index.php/​KVM_Setup_on_Debian_Squeeze+Aquí voy a recopilar toda la información relativa a la digitalización de imágenes en linux
  
-===== Instalar ​=====+===== scanadf ​=====
  
-1. Entrar en la BIOS del sistema y asegurarse de que el soporte de virtualización está activado+  scanadf -v --source ADF --mode Color
  
-2. Instalar un sistema GNU/Linux reciente (yo pruebo con Debian 6.x=+gscan2pdf pdf scanner sane xsane hp
  
-3Comprobar que el sistema operativo soporta virtualizacion:​+Herramienta gráfica para digitalizar documentos y convertirlos,​ por ejemplo, a .pdf
  
-  sudo egrep '​(vmx|svm)'​ --color=always /​proc/​cpuinfo+Una tabla orientativa para tamaños, resoluciones...
  
-En caso de que SI soporte virtualizacion veremos lo siguiente:​ +^ Tipo ^ Limpiar imágenes ^ Modo de escaneo ^ Resolución ​de escaneo ^ Resolución(1) ^ Peso ^ 
-<​code>​ +| Texto | No | Color | 100 | 103 | 1Mb | 
-flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority +| Texto | No | Color | 200 | 206 | 6Mb |
-flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority +
-</​code>​+
  
-Con la palabra ​'vmx' ​'svm' ​en rojo+(1) Una vez digitalizadas las imágenes, pulsar ​'Editar/​Properties' ​y establecer el valor 'Resolución' ​al indicado
  
-4. Instalar los siguientes paquetes:+El documento digitalizado tiene un tamaño de 825x1138px
  
-  sudo aptitude install qemu-kvm libvirt-bin virtinst qemu-utils+===== Manual =====
  
-**Nota**: qemu-utils es necesario para exportar de discos raw a qcow2  +No se por que gscan2pdf me junta 2 paginas en 1 cuando uso ADF Duplex, asi que he escrito este guion:
- +
-5. Anyadir el usuario X al grupo: +
- +
-  sudo adduser ​ USUARIO libvirt +
- +
-6. Comprobar ​que el demonio libvirtd esta corriendo (necesario para poder administrar KVM desde un entorno grafico con virt-manager):+
  
 <​code>​ <​code>​
-ps ax | grep libvirt +#!/bin/bash
- 4149 ?        Sl     ​0:​00 ​/usr/sbin/​libvirtd -d +
-</​code>​+
  
 +RESOLUTION="​100"​
 +AUX_DIR="/​tmp/​scan/"​
 +SCANNER="​hp5590"​
  
-===== Crear VM desde la linea de comando (probar) ​=====+STRING=`scanimage -L | grep $SCANNER | cut -d " " -f2` 
 +DEVICE=${STRING/​\`/​} 
 +DEVICE=${DEVICE/​\'/​} 
 +SCAN_FILE_EXT="​jpeg"​ 
 +PIXELS_HEIGHT_DINA4="​2500"​ 
 +COUNTER=
 +SCAN_FILE_NAME="​scan"​ 
 +LIST_FILES_CONCATENATE=""​ 
 +FINAL_FILE="​output.pdf"​ 
 +WIDTH="​200"​ 
 +HEIGHT="​302"​ 
 +PER_WIDTH="​76"​ 
 +PER_HEIGHT="​71"​
  
-Lanzar los comandos desde el hipervisor.+rm -fr $AUX_DIR 
 +mkdir $AUX_DIR 
 +cd $AUX_DIR 
 +scanimage -d "​$DEVICE"​ -b -p --mode Color --source "ADF Duplex"​ --resolution $RESOLUTION --format=$SCAN_FILE_EXT -x $WIDTH -y $HEIGHT
  
-Debian estable desde red configurada con NAT, 512MB de RAM y 2 GB de disco duro:+cd $AUX_DIR 
 +for f in $AUX_DIR* 
 +do 
 +    file=`basename $f` 
 +    convert $file -resize $PER_WIDTH%x$PER_HEIGHT% file_reduced.pnm
  
-<​code>​ +    if [ `expr $COUNTER % 2` -eq 0 ] 
-virt-install \ +    ​then ​ 
--n vm1 \ +        ​convert ​-rotate 180 file_reduced.pnm $SCAN_FILE_NAME$COUNTER.pnm 
--r 512 \ +        ​rm ​-fr $file 
---vcpus=2 \ +    else 
---os-variant=debiansqueeze \ +        mv file_reduced.pnm $SCAN_FILE_NAME$COUNTER.pnm 
---disk /​var/​lib/​libvirt/​images/​vm1.img,size=2 \ +    fi 
---nographics \ +    ​LIST_FILES_CONCATENATE=$LIST_FILES_CONCATENATE"​ "​$SCAN_FILE_NAME$COUNTER.pnm
---network user \ +
--l http://ftp.debian.org/​debian/​dists/​squeeze/​main/​installer-amd64/​ \ +
--x console=ttyS0,​115200 +
-</​code>​+
  
-Debian estable desde red configurada con bridge, 512MB de RAM y 2 GB de disco duro:+    COUNTER=`expr $COUNTER + 1` 
 +done
  
-<​code>​ +convert $LIST_FILES_CONCATENATE $FINAL_FILE
-virt-install \ +
--n vm1 \ +
--r 512 \ +
---vcpus=2 \ +
---os-variant=debiansqueeze \ +
---disk /​var/​lib/​libvirt/​images/​vm1.img,​size=2 \ +
---nographics \ +
---bridge br0 \ +
--l http://​ftp.debian.org/​debian/​dists/​squeeze/​main/​installer-amd64/​ \ +
--x console=ttyS0,​115200+
 </​code>​ </​code>​
- 
- 
-vmbuilder 
- 
-http://​www.howtoforge.com/​virtualization-with-kvm-on-a-debian-squeeze-server 
- 
- 
- 
- 
- 
- 
- 
-===== Administrar KVM (y VM) desde una GUI en el cliente ===== 
- 
-Escenario: NO quiero instalar las X en el hipervisor, y quiero administrar gráficamente el hipervisor y las máquinas virtuales desde otra máquina (cliente) con las X instaladas 
- 
-1. (Hipervisor) Instalar los siguientes paquetes: 
- 
-  sudo aptitude update; sudo aptitude install netcat socat -R 
- 
-2. (Hipervisor) Crear el siguiente archivo: 
- 
-  sudo vim /​bin/​netcatsocket 
- 
-Con el siguiente contenido: 
- 
-  #!/bin/bash 
-  socat - unix-client:​$2 
- 
-3. (Hipervisor) Darle permisos 
- 
-  sudo chmod +x /​bin/​netcatsocket 
- 
-4. (Cliente) Instalar paquetes: 
- 
-  sudo aptitude update; sudo aptitude install virt-manager ssh-askpass -R 
- 
-5. (Cliente) Conectarse al hipervisor: 
- 
-  virt-manager -c qemu+ssh://​USUARIO@HIPERVISOR:​PUERTO/​system?​netcat=netcatsocket 
- 
- 
-===== Conectarse a la consola de VM sin GUI ===== 
- 
-1. (VM) Editar 
- 
-  sudo vim /​etc/​inittab 
- 
-Y anyadir: 
- 
-  T0:​23:​respawn:/​sbin/​getty -L ttyS0 9600 vt100 
- 
-2. (VM) Editar 
- 
-  sudo vim /​etc/​default/​grub 
- 
-Y dejar la linea tal que asi: 
- 
-  GRUB_CMDLINE_LINUX="​console=tty0"​ 
- 
-3. (VM) Recargar grub: 
- 
-  sudo update-grub 
- 
-4. (Hipervisor) Conectarse a la consla de la VM: 
- 
-<​code>​ 
-sudo virsh console template 
- 
-Connected to domain template 
-Escape character is ^] 
-</​code>​ 
- 
-Toca un tecla (por ejemplo enter) y aparecera el prompt: 
- 
-<​code>​ 
-Debian GNU/Linux 6.0 template ttyS0 
- 
-template login: 
-</​code>​ 
- 
-5. Para finalizar la conexion CTRL + ] 
- 
-===== Comandos varios ===== 
- 
-* Listar todas las Maquinas Virtuales (VM): 
- 
-<​code>​ 
-virsh list --all 
- ​Id ​   Name                           State 
----------------------------------------------------- 
- ​- ​    ​name ​                          shut off 
-</​code>​ 
- 
-* Eliminar por completo una VM: 
- 
-<​code>​ 
-virsh undefine vm2 
-Domain vm2 has been undefined 
-</​code>​ 
- 
- 
- 
- 
-===== Salir de la consola (virt-manager) ===== 
- 
-CTRL + ALT + F7 
- 
- 
-===== Errores ===== 
- 
-* **Cannot recv data: Host key verification failed. : Connection reset by peer** 
- 
-Sucede al lanzar: 
- 
-  virt-manager -c qemu+ssh://​usuario@hipervisor/​system 
- 
-**Solucion**:​ iniciar una sesion SSH para almacenar las claves del hipervisor en el cliente: 
- 
-  ssh usuario@hipervisor 
- 
-* **Error starting network '​default':​ internal error** 
- 
-Suce al intentar activar o crear una nueva red virtual desde virt-manager debido a un bug de libvirt. 
- 
-**Solucion**:​ actualizar los paquetes relacionados con libvirt 
- 
-1. Editar: 
- 
-  sudo vim /​etc/​apt/​sources.list 
- 
-Y anyadir la siguiente linea: 
- 
-  deb http://​backports.debian.org/​debian-backports squeeze-backports main 
- 
-2. Actualizar la cache de paquetes: 
- 
-  sudo aptitude update 
- 
-3. Instalar la version de backports de los siguientes paquetes: 
- 
-  sudo aptitude -t squeeze-backports install libvirt-bin libvirt0 python-libvirt dnsmasq-base -R 
- 
-4. Reiniciar el demonio libvirtd: 
- 
-  sudo /​etc/​init.d/​libvirt-bin restart 
- 
- 
-===== Renombrar VM ===== 
- 
-<​code>​ 
-sudo su - 
- 
-cd /​etc/​libvirt/​qemu/​ 
- 
-virsh dumpxml dns-1.test.jj.com > dns-1.dev.jj.com.xml 
- 
-Apagar la VM si no lo esta 
- 
-Asegurar que NO tiene snapshot 
- 
-virsh undefine dns-1.test.jj.com 
- 
-vim dns-1.dev.jj.com.xml 
- 
-(cambios) 
- 
-virsh define dns-1.dev.jj.com.xml 
- 
-</​code>​ 
- 
-====== Discos ====== 
- 
-Acronimos: 
- 
-  | LVM | Logical Volume Manager | 
-  | PV | Physical Volume | 
-  | VG | Volume Group | 
-  | LV | Logical Volume | 
- 
- 
-===== (qcow2 + LVM) agrandar disco ===== 
- 
-La estrategia es extender el disco, crear una nueva particion en el nuevo espacio, crear un PV, anyadirlo al VG, extender el LV y redimensionar el sistema de archivos (EXT4...). 
- 
-Para este ejemplo clonaremos una VM pre-existente (template_lvm) de 2GB a una nueva (test7). Necesitaremos por comodidad tener habilitada la consola ([[kvm#​conectarse_a_la_consola_de_vm_sin_gui]]) 
- 
-1. Clonar la VM. Original: template_lvm,​ copia: test7 
- 
-  sudo virt-clone --connect=qemu:///​system -o template_lvm -n test7 -f /​var/​lib/​libvirt/​images/​test7.qcow2Asignando '​test7.qcow2' ​                                                                        | 2.0 GB     ​00:​02 ​     
-  Clon '​test7'​ creado correctamente. 
- 
-2. Extender el disco: 
- 
-  sudo qemu-img resize /​var/​lib/​libvirt/​images/​test7.qcow2 +8G 
-  Image resized. 
- 
-3. Arrancar la nueva VM: 
- 
-  sudo virsh start test7 
-  Domain test7 started 
- 
-4. Conectarse a la consola de la VM: 
- 
-<​code>​ 
-sudo virsh console test7 
-[sudo] password for usuario: ​ 
-Connected to domain test7 
-Escape character is ^] 
- 
-Debian GNU/Linux 6.0 template ttyS0 
- 
-template login: ​ 
-</​code>​ 
- 
-5. Comprobar que el Sistema Operativa ve el nuevo espacio (10 GB): 
- 
-  sudo fdisk -l 
- 
-<​code>​ 
-Disk /dev/vda: 10.7 GB, 10737418240 bytes 
-16 heads, 63 sectors/​track,​ 20805 cylinders 
-Units = cylinders of 1008 * 512 = 516096 bytes 
-Sector size (logical/​physical):​ 512 bytes / 512 bytes 
-I/O size (minimum/​optimal):​ 512 bytes / 512 bytes 
-Disk identifier: 0x00031f27 
- 
-   ​Device Boot      Start         ​End ​     Blocks ​  ​Id ​ System 
-/​dev/​vda1 ​  ​* ​          ​3 ​        ​496 ​     248832 ​  ​83 ​ Linux 
-Partition 1 does not end on cylinder boundary. 
-/​dev/​vda2 ​            ​498 ​       4159     ​1845249 ​   5  Extended 
-Partition 2 does not end on cylinder boundary. 
-/​dev/​vda5 ​            ​498 ​       4159     ​1845248 ​  ​8e ​ Linux LVM 
- 
-Disk /dev/dm-0: 1753 MB, 1753219072 bytes 
-255 heads, 63 sectors/​track,​ 213 cylinders 
-Units = cylinders of 16065 * 512 = 8225280 bytes 
-Sector size (logical/​physical):​ 512 bytes / 512 bytes 
-I/O size (minimum/​optimal):​ 512 bytes / 512 bytes 
-Disk identifier: 0x00000000 
- 
-Disk /dev/dm-0 doesn'​t contain a valid partition table 
- 
-Disk /dev/dm-1: 134 MB, 134217728 bytes 
-255 heads, 63 sectors/​track,​ 16 cylinders 
-Units = cylinders of 16065 * 512 = 8225280 bytes 
-Sector size (logical/​physical):​ 512 bytes / 512 bytes 
-I/O size (minimum/​optimal):​ 512 bytes / 512 bytes 
-Disk identifier: 0x00000000 
- 
-Disk /dev/dm-1 doesn'​t contain a valid partition table 
-</​code>​ 
- 
-6. Crear una nueva particion 
- 
-  sudo fdisk /dev/vda 
- 
-2 opciones: ​ 
- 
-a) DOS-compatible mode  
- 
-  n 
-  p 
-  3 
-  4160 
-  Enter 
-  w 
- 
-a) Deshabilitar DOS-compatible mode (RECOMENDADO) 
- 
-  c 
-  u 
-  n 
-  p 
-  3 
-  4192256 
-  enter 
-  w 
- 
-En 'First cylinder'​ hemos especificado 4160 (o 4192256) que es el resultante de anyadirle 1 al cilindor final de la particion '/​dev/​vda5'​ (ver paso 5) 
- 
-7. Aqui hay que reiniciar para que la particion sea usable por el Sistema Operativo: 
- 
-  sudo shutdown -r now 
- 
-8. Crear un PV con la nueva particion: 
- 
-  sudo pvcreate /dev/vda3 
-  Physical volume "/​dev/​vda3"​ successfully created 
- 
-9. Anyadir ese PV al VG. Primero obtener el nombre del VG y del PV: 
- 
-  sudo vgscan 
- 
-<​code>​ 
-  Reading all physical volumes. ​ This may take a while... 
-  Found volume group "​template"​ using metadata type lvm2 
-</​code>​ 
- 
-  sudo pvscan 
- 
-<​code>​ 
-  PV /​dev/​vda5 ​  VG template ​       lvm2 [1.76 GiB / 0    free] 
-  PV /​dev/​vda3 ​                     lvm2 [8.00 GiB] 
-  Total: 2 [9.76 GiB] / in use: 1 [1.76 GiB] / in no VG: 1 [8.00 GiB] 
-</​code>​ 
- 
-Anyadimos el PV '/​dev/​vda3'​ al VG '​template':​ 
- 
-  sudo vgextend template /dev/vda3 
-  Volume group "​template"​ successfully extended 
- 
-10. Extendemos el VL. Primero los listamos: 
- 
-  sudo lvscan 
- 
-  ACTIVE ​           '/​dev/​template/​root'​ [1.63 GiB] inherit 
-  ACTIVE ​           '/​dev/​template/​swap_1'​ [128.00 MiB] inherit 
- 
-Vamos a extender el LV '/​dev/​template/​root'​ todo lo que podamos: 
- 
-  sudo lvextend -l +100%FREE /​dev/​template/​root 
-  Extending logical volume root to 9.63 GiB 
-  Logical volume root successfully resized 
- 
-11. Extendemos el sistema de archivos. El proceso tarda 1 minuto para 8GB: 
- 
-  sudo resize2fs /​dev/​mapper/​template-root 
- 
-<​code>​ 
-resize2fs 1.41.12 (17-May-2010) 
-Filesystem at /​dev/​mapper/​template-root is mounted on /; on-line resizing required 
-old desc_blocks = 1, new_desc_blocks = 1 
-Performing an on-line resize of /​dev/​mapper/​template-root to 2525184 (4k) blocks. 
-The filesystem on /​dev/​mapper/​template-root is now 2525184 blocks long. 
-</​code>​ 
- 
-Comprobamos que todo ha ido bien: 
- 
-  df -h 
- 
-<​code>​ 
-Filesystem ​           Size  Used Avail Use% Mounted on 
-/​dev/​mapper/​template-root 
-                      9.5G  565M  8.5G   7% / 
-tmpfs                 ​249M ​    ​0 ​ 249M   0% /​lib/​init/​rw 
-udev                  244M  108K  244M   1% /dev 
-tmpfs                 ​249M ​    ​0 ​ 249M   0% /dev/shm 
-/​dev/​vda1 ​            ​228M ​  ​16M ​ 201M   8% /boot 
-</​code>​ 
- 
-====== Snapshots ====== 
- 
-http://​redes-privadas-virtuales.blogspot.com.es/​2011/​03/​taking-snapshots-on-kvm-with-libvirt.html 
- 
-Caracteristicas/​limitaciones:​ 
- 
-* Virt-manager (0.9.1) NO soporta snapshots, por lo que tenemos que hacerlo desde la lina de comandos 
-* Solo el formato de disco virtual qcow2 soporta snapshots 
-* Se puede tomar un snapshot con la VM corriendo (2GB disco tarda 3m14.810s) 
-* **Se puede restaurar un snapshot con la VM corriendo** (creo que Virtualbox NO lo soporta) 
- 
- 
-===== Tomar snapshot / migrar formato de disco raw a qcow2 ===== 
- 
-1. Conectarse al hipervisor. Yo por simplicidad lo hago a traves de SSH, pero a lo mejor es posible conectarse desde el cliente con un virsh -c URL 
- 
-  ssh usuario@hipervisor 
- 
-2. Crear un archivo .xml con informacion sobre el snapshot: 
- 
-  sudo vim /​var/​lib/​libvirt/​qemu/​snapshot/​test2_snapshot_01.xml 
- 
-Con el siguiente contenido: 
- 
-<​code>​ 
-<​domainsnapshot>​ 
-   <​name>​test2_snapshot_01_160520121140</​name>​ 
-   <​description>​Fresh install of Debian Squeeze 64 bits</​description>​ 
-</​domainsnapshot>​ 
-</​code>​ 
- 
-Grabar y salir 
- 
-3. **IMPORTANTE**:​ solo el formato qcow2 soporta snapshots. Vamos a comprobar que formato tiene el disco duro de la VM, que en este ejemplo se llama "​test2"​ 
- 
-  sudo virsh edit test2 
- 
-De la informacion que muestra nos fijamos en el disco: 
- 
-<​code>​ 
-... 
-    <disk type='​file'​ device='​disk'>​ 
-      <driver name='​qemu'​ type='​raw'/>​ 
-      <source file='/​var/​lib/​libvirt/​images/​test2.img'/>​ 
-      <target dev='​vda'​ bus='​virtio'/>​ 
-      <address type='​pci'​ domain='​0x0000'​ bus='​0x00'​ slot='​0x04'​ function='​0x0'/>​ 
-    </​disk>​ 
-... 
-</​code>​ 
- 
-Si intentamos tomar el snapshot veremos que NO lo soporta (:q! para salir de la ventana de edicion): 
- 
-  sudo virsh snapshot-create test2 /​var/​lib/​libvirt/​qemu/​snapshot/​test2_snapshot_01.xml ​ 
-  error: Requested operation is not valid: Disk '/​var/​lib/​libvirt/​images/​test2.img'​ does not support snapshotting 
- 
-Por lo que volvemos a editar: 
- 
-  sudo virsh edit test2 
- 
-Y dejamos la seccion de disco tal que asi (solo cambiar qcow2): 
- 
-<​code>​ 
-... 
-    <disk type='​file'​ device='​disk'>​ 
-      <driver name='​qemu'​ type='​qcow2'/>​ 
-      <source file='/​var/​lib/​libvirt/​images/​test2.qcow2'/>​ 
-      <target dev='​vda'​ bus='​virtio'/>​ 
-      <address type='​pci'​ domain='​0x0000'​ bus='​0x00'​ slot='​0x04'​ function='​0x0'/>​ 
-    </​disk>​ 
-... 
-</​code>​ 
- 
-Grabar y salir 
- 
-  Domain test2 XML configuration edited. 
- 
-**TODO**: quiza hay un comando para cambiar el formato del disco 
- 
-4. Convertir el disco de formato raw a qcow2. La VM debe estar apagada 
- 
-  sudo qemu-img convert -f raw -O qcow2 -o preallocation=metadata /​var/​lib/​libvirt/​images/​test2.img /​var/​lib/​libvirt/​images/​test2.qcow2 
-  sudo chown libvirt-qemu:​kvm /​var/​lib/​libvirt/​images/​test2.qcow2 
- 
-5. Volver a tomar el snapshot: 
- 
-  sudo virsh snapshot-create test2 /​var/​lib/​libvirt/​qemu/​snapshot/​test2_snapshot_01.xml ​ 
-  Domain snapshot test2_snapshot_01_160520121140 created from '/​var/​lib/​libvirt/​qemu/​snapshot/​test2_snapshot_01.xml'​ 
- 
-Para verlo: 
- 
-<​code>​ 
-sudo virsh snapshot-list test2 
- ​Name ​                ​Creation Time             State 
------------------------------------------------------------- 
- ​test2_snapshot_01_160520121140 2012-05-16 12:46:48 +0200 shutoff 
-</​code>​ 
- 
-**RENDIMIENTO** si tomamos el snapshot de una VM corriendo (2GB de disco duro) me tomo 03'​14"​ 
- 
-6. Arrancar la VM y verificar que funciona correctamente 
- 
-  sudo virsh start test2 
-  Domain test2 started 
- 
-7. Si ha arrancado correctamente,​ eliminar el viejo disco: 
- 
-  sudo rm -fr /​var/​lib/​libvirt/​images/​test2.img 
- 
-===== Script para tomar snapshot ===== 
- 
-  * Requiere python 2 
-  * Se tiene que ejecutar como root 
-  * Ejecutar 'sudo ./​snapshot.py',​ o el nombre que le des al script 
- 
-<​code>​ 
-#​!/​usr/​bin/​python 
- 
-import sys, commands, time, os, datetime 
- 
-# Variables 
- 
-path_snapshots = '/​var/​lib/​libvirt/​qemu/​snapshot/'​ 
-header = ['​Id',​ '​Name',​ '​State'​] 
-snapshot_template = """​\ 
-<​domainsnapshot>​ 
-   <​name>​NAME</​name>​ 
-   <​description>​DESCRIPTION</​description>​ 
-</​domainsnapshot>​ 
-"""​ 
- 
-# Code 
- 
-if not os.geteuid() == 0: 
-    print "You aren't root.  Goodbye."​ 
-    sys.exit() 
- 
-output = commands.getoutput('​virsh list --all'​) 
-print output 
-list_vm = [line for line in output.split('​\n'​) if '​---'​ not in line and not all(e in line for e in header)] 
-row_number_list_vm = int(raw_input('​Select which VM to take snapshot.\nUse line number (1 for " %s" etc...): '\ 
- ​%(list_vm[0]))) 
- 
-line = list_vm[row_number_list_vm-1] 
-print 'You selected "​%s"'​ %(line) 
- 
-description = raw_input('​Please type a description for this snapshot: ') 
- 
-aux = line.split(' ​  '​)[0].split('​ ') 
-vm_name = aux[len(aux)-1] 
-snapshot_name =  vm_name + '​_'​ + str(time.time()).split('​.'​)[0] 
- 
-snapshot_xml_path = path_snapshots + snapshot_name + '​.xml'​ 
-snapshot_xml = snapshot_template.replace('​NAME',​snapshot_name).replace('​DESCRIPTION',​description) 
- 
-file = open(snapshot_xml_path,​ '​w+'​) 
-file.write(snapshot_xml) 
-file.close() 
- 
-print "​WARNING,​ the process takes a while. For a running machine with 2 GB disk can take 3 minutes"​ 
-print datetime.datetime.today() 
- 
-output = commands.getstatusoutput('​virsh snapshot-create %s %s' %(vm_name,​snapshot_xml_path)) 
-if output[0] != 0: 
-    print 'Error %s' %(str(output)) 
- 
-print datetime.datetime.today() 
-</​code>​ 
- 
-===== Restaurar snapshot ===== 
- 
-1. Conectarse al hipervisor. Yo por simplicidad lo hago a traves de SSH, pero a lo mejor es posible conectarse desde el cliente con un virsh -c URL 
- 
-  ssh usuario@hipervisor 
- 
-2. Listar las snapshots que tenemos (nuestra VM se llama '​test2'​):​ 
- 
-<​code>​ 
-sudo virsh snapshot-list test2 
- ​Name ​                ​Creation Time             State 
------------------------------------------------------------- 
- ​test2_snapshot_01_160520121140 2012-05-16 12:46:48 +0200 shutoff 
- ​test2_snapshot_02 ​   2012-05-16 12:58:29 +0200 running 
- ​test2_snapshot_03 ​   2012-05-16 13:03:33 +0200 running 
-</​code>​ 
- 
-3. Restaurar por ejemplo segunda (test2_snapshot_02):​ 
- 
-  sudo virsh snapshot-revert test2 test2_snapshot_02 
- 
-Tarda un par de segundos 
- 
-===== Borrar snapshot ===== 
- 
-Los snapshots soportan como parametros --children, pero si no se le ha pasado en el momento de tomarlo, son considerados totalmente independientes,​ es decir, se pueden borar 1 a 1: 
- 
-  sudo virsh snapshot-delete test2 test2_snapshot_02 
-  Domain snapshot test2_snapshot_02 deleted 
- 
- 
-====== Clonar ====== 
- 
-  * Se puede hacer tanto desde GUI (no lo he probado) como desde linea de comandos 
-  * Requiere pausar (mejor) o apagar la VM 
-  * Para una maquina de 2 GB de disco duro .qcow2 provisionado por completo el proceso completo tarda unos 20" 
- 
-1. Conectar al hipervisor 
- 
-  ssh USUARIO@HIPERVISOR 
- 
-2. Pausar la VM a clonar. Durante este tiempo consume recursos pero NO es accesible 
- 
-  sudo virsh suspend template 
-  Domain template suspended 
- 
-3. Clonar la VM: 
- 
-<​code>​ 
-sudo virt-clone ​ --connect=qemu:///​system -o template -n template_clone -f /​var/​lib/​libvirt/​images/​template_clone.qcow2 
-Asignando '​template_clone.qcow2' ​                                                                                                                                                                                       | 2.0 GB     ​00:​02 ​     
- 
-Clon '​template_clone'​ creado correctamente. 
-</​code>​ 
- 
-4. Reanudar la VM: 
- 
-  sudo virsh resume template 
-  Domain template resumed/​description 
informatica/linux/escaner.txt · Last modified: 2015/04/13 22:19 (external edit)