opengnsys-1.0.6 (#12) - Problema al restaurar imagen: Partición mas pequeña que la imagen (#332) - Message List

Problema al restaurar imagen: Partición mas pequeña que la imagen
 unsolved

Tengo un laboratorio con varios equipos, cada uno con un disco dividido en 10 particiones/unidades lógicas (incluyendo la swap y la CACHE de opengnsys).

De las 8 particiones con datos/SOs, con 7 de ellas OpenGnSys crea bien la imagen (usando el script "Crear Imagen") y la restaura correctamente (script "Restaurar Imagen").

Sin embargo, con la octava partición (/dev/sda8), funciona la creación de la imagen (con "Crear Imagen") pero FALLA la restauración con "Restaurar Imagen".

La partición está formateada en NTFS, teniendo un tamaño de "105 GB" con "97 GB" de datos (no cabiendo en la particion CACHE, la cual tiene "82 GB").

El script "Crear Imagen" crea bien el fichero "/opt/opengnsys/images/PCTipoEwprogramas.img" (de "58 GB"). Cuando intento restaurarlo con "Restaurar Imagen" me genera los siguientes errores, no restaurandose:

14/02/2018 12:02 *** Debug: 5-021-Ejecución de comando:RestaurarImagen()
14/02/2018 12:02 *** Debug: 5-008-Ejecución del script:/opt/opengnsys/interfaceAdm/RestaurarImagen
14/02/2018 12:02 *** Debug: 5-009-Parámetro del script: #2-1
14/02/2018 12:02 *** Debug: 5-009-Parámetro del script: #3-8
14/02/2018 12:02 *** Debug: 5-009-Parámetro del script: #4-PCTipoEwprogramas
14/02/2018 12:02 *** Debug: 5-009-Parámetro del script: #5-xxx.xxx.xxx.xxx
14/02/2018 12:02 *** Debug: 5-009-Parámetro del script: #6-UNICAST
[1]  INICIO scripts:  /opt/opengnsys/scripts/deployImage xxx.xxx.xxx.xxx PCTipoEwprogramas 1 8 UNICAST
Desmonta un sistema de archivos. 1 8
[1] REPO=REPO IMG-FILE=PCTipoEwprogramas.img  SIZE=59588312 (KB)   METADATA=PARTCLONE:LZOP:NTFS:104900000
[2] updateCache REPO "/PCTipoEwprogramas.img" UNICAST
REPO xxx.xxx.xxx.xxx UNICAST
Comprobar si es necesario actualizar el fichero imagen
Comprobar que el tamaño de la caché es mayor que el fichero a descargar.
Comprobar el espacio libre de la caché y actuar según engine.cfg: ACTIONCACHEFULL=NONE
Aviso: El espacio de la caché local o remota no es suficiente:  /PCTipoEwprogramas.img = 59588312 > FREE SPACE CACHE = 32562794
OpenGnSys error: 2018-02-14 12:02:41 updateCache: El espacio de la caché local o remota no es suficiente "CACHE FULL, NO SPACE FREE"
   [ ]  tiempo parcial del subproceso updateCache 0m 1s
[50] No existe partición caché en el cliente ;  El espacio de la caché local o remota no es suficiente
[50] Analizar proceso a realizar según engine.cfg:  RESTOREPROTOCOLNOTCACHE=UNICAST
[55] Restaura una imagen de sistema operativo.: restoreImage REPO PCTipoEwprogramas 1 8
[1]  INICIO scripts:  /opt/opengnsys/scripts/restoreImage REPO PCTipoEwprogramas 1 8
[40] ogRestoreImage REPO PCTipoEwprogramas 1 8 UNICAST
OpenGnSys error: 2018-02-14 12:02:43 ogRestoreImage<-ogExecAndLog<-restoreImage: Error al restaurar: Partición mas pequeña que la imagen "  102399999 < 104900000"
[100] Duracion de la operacion 0m 2s
   [ ]
OpenGnSys error: 2018-02-14 12:02:43 deployImage: No se puede crear o restaurar una image de sistema "REPO PCTipoEwprogramas"
[END Interface] Comando terminado con este código:  5
14/02/2018 12:02 *** Error: 010-Error al ejecutar la llamada a la interface de administración. Módulo interfaceAdmin()
14/02/2018 12:02 *** Error: 005-Error al crear o restaurar una imagen. Módulo interfaceAdmin()
14/02/2018 12:02 *** Error: 086-Error al ejecutar el comando:RestaurarImagen. Módulo RestaurarImagen()
14/02/2018 12:02 *** Info: 019-Disponibilidad de comandos activada

Se ve el error:

restoreImage: Error al restaurar: Partición mas pequeña que la imagen "  102399999 < 104900000"

que no debe ser (pues la imagen se ha creado en un equipo idéntico al equipo donde se intenta restaurar).

Efectivamente, haciendo la restauración a mano de ese fichero ".img", con el siguiente script:

#!/bin/bash
IMAGEN="PCTipoEwprogramas.img"
cd /opt/opengnsys/images
# Reducir sistema de archivos a minimo que ocupan los datos
ogExtendFs 1 8
# Desmontar Particion. Importante, debe estar tras el ogReduceFs
umount /dev/sda8
LOG="/opt/opengnsys/log/partclone-restore-$(hostname -I | cut -f1 -d ' ')-$(date +%F-%H%M%S).log"
# Extraer imagen
lzop -dc ./${IMAGEN} | partclone.restore --ignore_crc -s - -o /dev/sda8  1> "${LOG}"  2>&1

funciona correctamente:

Partclone v0.2.38 http://partclone.org
Starting to restore image (-) to device (/dev/sda8)
Calculating bitmap... Please wait... done!
File system:  NTFS
Device size:  104,9 GB
Space in use:  96,8 GB
Free Space:     8,1 GB
Block size:   4096 Byte
Used block :  23633090
Total Time: 02:08:15, Ave. Rate:  754,8MB/min, 100.00% completed!
Syncing... OK!
Partclone successfully restored the image (-) to the device (/dev/sda8)
Cloned successfully.

¿Alguien sabría que línea de OpenGnsys puede estar provocando el fallo al usar "Restaurar Imagen"?

Gracias

Saludos

Tree View Flat View (newer first) Flat View (older first)
  • Message #745

     

  • Message #748

    Buenas.

    El problema lo está creando la función ogReduceFs llamada por el script createImage. Esta función intenta reducir el espacio del sistema de ficheros al tamaño de los datos más un 10% libre.

    En tu caso, un SF con 97 GB de datos necesitaría una partición con un mínimo de 107 GB.

    Quizas, podrías limpiar datos temporales o de descargas en el PC modelo antes de crear la imagen.

    Saludos.

  • Message #752

    Hola,

    Esa partición la uso exclusivamente para Máquinas Virtuales (ficheros vmdk de gran tamaño), no hay nada temporal.

    No obstante, ¿por que el fallo lo tiene "ogReduceFs"?. Esa función se usa al crear la imagen (desde "createImage"), y la creación de la imagen se hace correctamente: el ".img" se genera bien y, manualmente (con el script anterior), se Restaura en la partición sin problemas, luego la imagen está correcta.

    El fallo se produce al restaurar con restoreImage, pero no sé por qué o como arreglarlo.

    Un saludo

  • Message #754

    Hola, Javier

    Al restaurar se compara el tamaño de la imagen y la partición de destino. Las funciones que se usan para calcularlos son:

    • Imagen: ogGetImageSize [REPO|CACHE] Nombre_img
      Esta función a su vez llama a ogGetImageInfo /opt/opengnsys/images/Nombre_img.img que lo que hace es leer el principio del archivo de la imagen y con un comando de partclone obtiene la información.
    • Partición: ogGetPartitionSize Disco Partición
      Esta función usa el comando "partx -gbo SIZE Dispositivo" que da el tamaño en k y lo divide por 1024.
      Ej: partx -gbo SIZE /dev/sda1

    Podrías mirar los resultados que te dan estas funciones y ver si alguno no es correcto.

    Hasta ahora

  • Message #756

    Gracias por la información.

    Usando esos comandos obtengo efectivamente los datos que aparecen en el mensaje de error:

    restoreImage: Error al restaurar: Partición mas pequeña que la imagen "  102399999 < 104900000"
    
    ogGetPartitionSize 1 8
    102399999
    ogGetImageInfo /opt/opengnsys/images/PCTipoEwprogramas.img
    PARTCLONE:LZOP:NTFS:104900000
    

    Esto provoca que la funcion "ogRestoreImage()" se salga en:

    IMGSIZE=$(ogGetImageSize "$1" "$2") || return $(ogRaiseError $OG_ERR_IMAGE " $1 $2"; echo $?)
    PARTSIZE=$(ogGetPartitionSize $3 $4)
    if [ $IMGSIZE -gt $PARTSIZE ]; then
        ogRaiseError $OG_ERR_IMGSIZEPARTITION "  $PARTSIZE < $IMGSIZE"
        return $?
    fi
    

    Lo que no entiendo es como se están haciendo los cálculos de tamaño:

    • Deberían coincidir: el equipo donde restauro es idéntico al usado para crear la imagen). De hecho, si en el equipo "fuente" del que he creado la imagen (usando el script "Crear Imagen") ejecuto ogGetPartitionSize obtengo "102399999" igualmente. Como dato curioso, con el comando "df" obtengo un tamaño ligaremente distinto, de "102399996".
    df -k /dev/sda8
    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/sda8      102399996 69112 102330884   1% /mnt/sda8
    
    • Ese cálculo esta provocando una pequeña diferencia entre los tamaños de "IMGSIZE" y "PARTSIZE" que conlleva que "ogRestoreImage" se salga al entender que no es posible la restauración. Sin embargo, con el script manual se comprueba que sí se puede restaurar, luego tal vez esa comprobación de tamaños que hace "ogRestoreImage" sea demasiado estricta.

    Una curiosidad. ¿Que fichero "Image.lib" (contiene a "ogRestoreImage") se usa, el de:

    /opt/opengnsys/client/lib/engine/bin/

    o el de

    /opt/opengnsys/client/engine

    ?

    Gracias. Un saludo

Tree View Flat View (newer first) Flat View (older first)

Attachments

No attachments created.