summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux76
-rwxr-xr-xclient/engine/Image.lib2
-rwxr-xr-xclient/engine/Rsync.lib14
-rw-r--r--client/shared/etc/engine.cfg2
-rwxr-xr-xclient/shared/scripts/createDiffImage2
5 files changed, 42 insertions, 54 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index 4cb4ff36..76c61271 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -27,12 +27,7 @@ REPODIR="$BASEDIR/images/"
[ -z $OGENGINECONFIGURATE ] && source $BASEDIR/client/etc/engine.cfg
# FS segun la configuracion y la version del kernel. ext4 para < 3.7, para >= BTRFS
KERNEL=$(file -bkr /opt/opengnsys/tftpboot/ogclient/ogvmlinuz |awk '/Linux/ {for(i=1;i<=NF;i++) if($i~/version/) {v=$(i+1);printf("%d",v);sub(/[0-9]*\./,"",v);printf(".%02d",v)}}')
-if [ $KERNEL \< 3.07 ]; then
- IMGFS="EXT4"
-else
- [ "$IMGFS" == "" ] && IMGFS="BTRFS"
-
-fi
+[ $KERNEL \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"}
# Añade registro de incidencias.
function echolog () {
@@ -59,7 +54,10 @@ function mountImage () {
echolog "mount $OPTMOUNT -o compress=lzo $1 $2"
mount $OPTMOUNT -o compress=lzo "$1" "$2"
fi
- return $?
+ # Si esta montado da error 32, lo damos como bueno
+ RETVAL=$?
+ [ $RETVAL -eq 32 ] && RETVAL=0
+ return $RETVAL
}
mkdir -p $MCASTLOGBASE
@@ -174,11 +172,10 @@ case "$PARM1" in
fi
# Montamos la imagen.
mountImage "$IMGFILE" "$DIRMOUNT"
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
+ if [ $? -ne 0 ]; then
rmdir "$DIRMOUNT"
echolog -o "Error al crear/redimensionar la imagen"
- exit $RETVAL
+ exit 1
fi
#touch "$DIRMOUNT/ogimg.info"
@@ -203,7 +200,6 @@ case "$PARM1" in
DIRMOUNT="$DIRMOUNT.diff"
fi
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
- LOCKFILE="$IMGFILE.lock"
echolog "Montamos la imagen $IMGFILE "
mkdir -p "$DIRMOUNT"
mountImage "$IMGFILE" "$DIRMOUNT" ro || (echolog "Error al montar la imagen"; exit 1)
@@ -250,40 +246,40 @@ case "$PARM1" in
[ -d $DIRMOUNT ] || mkdir $DIRMOUNT
mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
+
# Si el espacio libre menor que 200Mb desmontamos la imagen y nos salimos
- AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
+ AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
if [ $AVAILABLE -lt 200000 ]; then
echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
- umount $DIRMOUNT
- rmdir $DIRMOUNT
- exit 0
- fi
+ umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
+ else
- # Calculamos la diferencia entre el tamaño interno y externo
- EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
- INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
- let EDGESIZE=$EXTSIZE-$INTSIZE
-
- echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
- umount $DIRMOUNT
- LOOPDEVICE=$(losetup -f)
- losetup $LOOPDEVICE "$IMGFILE"
-
- # Redimensiono sistema de ficheros
- echolog "resize2fs -fpM $LOOPDEVICE "
- resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
- mountImage "$IMGFILE" "$DIRMOUNT"
- # Calculamos el tamaño final del archivo
- INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
- let EXTSIZE=$INTSIZE+$EDGESIZE
- umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
- # Si existe dispositivo loop lo borramos.
- [ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
- # Corto el archivo al tamaño del sistema de ficheros
- echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
- echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
- truncate --size="$EXTSIZE"k $IMGFILE
+ # Calculamos la diferencia entre el tamaño interno y externo
+ EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
+ INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
+ let EDGESIZE=$EXTSIZE-$INTSIZE
+
+ echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
+ umount $DIRMOUNT
+ LOOPDEVICE=$(losetup -f)
+ losetup $LOOPDEVICE "$IMGFILE"
+
+ # Redimensiono sistema de ficheros
+ echolog "resize2fs -fpM $LOOPDEVICE "
+ resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
+ mountImage "$IMGFILE" "$DIRMOUNT"
+ # Calculamos el tamaño final del archivo
+ INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
+ let EXTSIZE=$INTSIZE+$EDGESIZE
+ umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
+ # Si existe dispositivo loop lo borramos.
+ [ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
+ # Corto el archivo al tamaño del sistema de ficheros
+ echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
+ echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
+ truncate --size="$EXTSIZE"k $IMGFILE
+ fi
else
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
fi
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index 190a36a3..5e799968 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -412,7 +412,7 @@ if [ "_${4^^}_" == "_SYNC_" -o "_${4^^}_" == "_DIFF_" ]; then
[ $KERNELVERSION \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"}
FACTORSYNC=${FACTORSYNC:-"120"}
# Si IMGFS="BTRFS" la compresion es mayor.
- [ $IMGFS == "BTRFS" ] && let FACTORSYNC=$FACTORSYNC
+ [ $IMGFS == "BTRFS" ] && let FACTORSYNC=$FACTORSYNC-20
let SIZEREQUIRED=$SIZEDATA*$FACTORSYNC/100
# El tamaño mínimo del sistema de ficheros btrfs es 250M, ponemos 300
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib
index 63edfc5c..e70ea241 100755
--- a/client/engine/Rsync.lib
+++ b/client/engine/Rsync.lib
@@ -100,11 +100,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
#Formateamos imagen
losetup $LOOPDEVICE $IMGFILE
# FS de la imagen segun la configuracion y la version del kernel: < 3.7 ext4, si >= btrfs
- if [ $KERNELVERSION \< 3.07 ]; then
- IMGFS == "EXT4"
- else
- [ "$IMGFS" == "" ] && IMGFS="BTRFS"
- fi
+ [ $KERNELVERSION \< 3.07 ] && IMGFS == "EXT4" || IMGFS=${IMGFS:-"BTRFS"}
if [ "$IMGFS" == "EXT4" ]; then
echo " mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE"
@@ -117,7 +113,6 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
# Monto la imagen
ogMountImage $1 "$2" $3 &>/dev/null
[ $? -eq 0 ] || return $( ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?)
- #touch "$DIRMOUNT/ogimg.info"
echo "mounted"> $IMGFILE.lock
# Si existe dispositivo de loop lo borro.
@@ -200,11 +195,8 @@ SIZEDATA=${SIZEDATA:-"SIZEDATA"}
# Incluimos información de la imagen. Segun el kernel sera ext4 o btrfs.
KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}')
-if [ $KERNELVERSION \< 3.07 ]; then
- echo "#EXT4:NO:$FSTYPE:$SIZEDATA" > $IMGINFO
-else
- echo "#BTRFS:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO
-fi
+[ $KERNELVERSION \< 3.07 ] && IMGFS == "EXT4" || IMGFS=${IMGFS:-"BTRFS"}
+echo "#$IMGFS:NO:$FSTYPE:$SIZEDATA" > $IMGINFO
if [ "$IMGTYPE" == "img" ]; then
# Imagen Basica
diff --git a/client/shared/etc/engine.cfg b/client/shared/etc/engine.cfg
index c2ac08fd..82766a2f 100644
--- a/client/shared/etc/engine.cfg
+++ b/client/shared/etc/engine.cfg
@@ -27,7 +27,7 @@ OGWINREDUCE=TRUE
# Factor para calcular el time-out al crear la imagen. 100000k -> 4s
CREATESPEED=100000*4
# Factor de compresion para las imagenes (windos en ext4).
-ZSYNC=120
+FACTORSYNC=120
# Realizar copia de seguridad antes de crear la imagen.
BACKUP=false
# Sistema de archivo de la imagenes sincronizadas. EXT4 o BTRFS
diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage
index a832abeb..69b90166 100755
--- a/client/shared/scripts/createDiffImage
+++ b/client/shared/scripts/createDiffImage
@@ -126,7 +126,7 @@ ogCreateInfoImage $1 $2 $3 "$4" "${DIFFTYPE}"
[ $? -eq $OG_ERR_NOTDIFFERENT ] && exit $(ogRaiseError session $OG_ERR_NOTDIFFERENT; echo $?)
#Comprobar espacio que requerira la imagen para ser almacenada
-read SIZEDATA SIZEREQUIRED ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$3" DIFF ; echo $?)
+read SIZEDATA SIZEREQUIRED ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$3" DIFF)
ogEcho log session "[50] $PROG: $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED"
[ "$ISENOUGHSPACE" == "TRUE" ] || exit $(ogRaiseError session $OG_ERR_CACHESIZE "$3"; echo $?)