Changes between Version 2 and Version 3 of SyncronizeBtrfs
- Timestamp:
- Jun 27, 2017, 10:05:53 AM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SyncronizeBtrfs
v2 v3 8 8 * comparar la imagen con el contenido de la partición y crear una imagen diferencial con los archivos que difieran y la información de los archivos que sobran, de forma que al restaurar primero la imagen completa y luego la diferencial la partición destino quede como la del equipo modelo. 9 9 10 La sincronización de imágenes se introducirá en la versión 1.0.5 en modo de prueba. Tenemos dos aproximaciones diferentes que denominamos SYNC1 y SYNC2 la diferencia principal es que la versión 1 guarda los datos de las imágenes en un directorio del servidor y la versión 2 lo empaqueta en un archivo que contiene un sistema de ficheros, según el kernel del cliente de opengnsys será ext4 o btrfs.10 La sincronización de imágenes se introducirá en la versión 1.0.5 en modo de prueba. Tenemos dos aproximaciones diferentes que denominamos "tipo directorio" y "tipo archivo" la diferencia principal es que la versión 1ª guarda los datos de las imágenes en un directorio del servidor y la versión 2ª lo empaqueta en un archivo que contiene un sistema de ficheros, según el kernel del cliente de OpenGnsys será ext4 o btrfs. 11 11 12 12 Estos sistemas de ficheros son de lectura y escritura, por lo que nos permite modificar la imagen una vez creada. Además el btrfs permite montarlo en modo comprimido, de forma que la compresión y descompresión se realiza de modo transparente para el usuario. 13 13 14 En esta página vamos a documentar los procedimientos que se utilizan en la versión sync2, aunque si se van a hacer pruebas es mejor instalar la versión 1.0.5 o utilizar los script bajadosdel proyecto.14 En esta página vamos a documentar los procedimientos que se utilizan en la versión tipo archivo, con los comandos del sistema operativo. Si se van a hacer pruebas es mejor instalar la versión 1.0.5 o 1.0.6 para utilizar las funciones y los script del proyecto. 15 15 16 16 '''Procedimiento''' 17 17 18 Creamos imágenes (en cache o repo). Creamos un archivo vacío, lo montamos en modo loop y creamos dentro de él un sistema de ficheros. Montamos el sistema de fichero y clonamos dentro con los datos de la partición sincronizandolos con rsync. 19 20 Para restaurar montaremos la imagen (en cache o repo) y utilizaremos rsync para sincronizar la partición. La partición puede estar vacía o haber sido restaurada y luego modificada por el uso. 21 22 Para windows restauraremos las ACL con ntfs-3g.secaudit 18 __Creamos imágenes (en cache o repo).__ 19 20 * Creamos un archivo vacío, lo montamos en modo loop y creamos dentro de él un sistema de ficheros. 21 * Montamos el sistema de fichero y clonamos dentro con los datos de la partición sincronizándolos con rsync. 22 * Para windows crearemos un backup de las ACL con ntfs-3g.secaudit 23 24 __Restauramos imágenes.__ 25 26 * Montamos la imagen (en cache o repo) 27 * Utilizaremos rsync para sincronizar la partición. 28 * Para windows restauraremos las ACL con ntfs-3g.secaudit 29 30 La partición puede estar vacía o haber sido restaurada y luego modificada por el uso. 23 31 24 32 En el servidor puedo montar la imagen y modificar, borrar o añadir los archivos que queramos. … … 38 46 La imagen será un archivo con un sistema de fichero que contenga los datos de la partición. 39 47 40 Creamos el archivo vacío: 48 __Creamos el archivo vacío__ 49 50 Podemos utilizar los comandos dd o truncate, dd tarda bastante y truncate es inmediato: 41 51 {{{ 42 52 dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED 53 }}} 54 55 o: 56 {{{ 57 truncate --size=">$SIZEREQUIRED"k "$IMGFILE" 43 58 }}} 44 59 … … 46 61 SIZEREQUIRED: tamaño de la imagen en kilobytes. 47 62 48 63 __Creamos el sistema de ficheros__ 49 64 50 65 Detectamos cual es el kernel del cliente para elegir el sistema de ficheros a utilizar. Si es menor que 3.7 usamos ext4, si es mayor o igual btrfs: … … 54 69 }}} 55 70 56 57 Creamos el sistema de ficheros: 71 Utilizamos el comando mkfs del fs elegido: 72 58 73 {{{ 59 74 LOOPDEVICE=$(losetup -f) 60 if [ $IMGFS == "EXT4" ]; then 61 losetup $LOOPDEVICE "$IMGNAME.img" 62 resize2fs -f $LOOPDEVICE &> $REPOLOG 63 else 64 mount -o compress=lzo "$IMGNAME.img" "$DIRMOUNT" 65 btrfs filesystem resize max "$DIRMOUNT" 2>&1 > $REPOLOG 75 if [ "$IMGFS" == "EXT4" ]; then 76 mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE 2>&1 |tee -a $OGLOGCOMMAND 77 else 78 mkfs.btrfs -L "${2##*\/}" $LOOPDEVICE 2>&1 | tee -a $OGLOGCOMMAND 66 79 fi 67 80 }}} … … 70 83 71 84 72 Sincronización imagen: 85 __Sincronización imagen__ 73 86 74 87 Montamos la imagen y la partición que queremos clonar y sincronizamos tomando como origen la partición. 75 88 76 Montamos la imagen. En el servidor: 77 {{{ 89 1) Montamos la imagen. En el servidor: 90 {{{ 91 LOOPDEVICE=$(losetup -f) 78 92 if [ $IMGFS == "EXT4" ]; then 79 93 mount $OPTMOUNT -t ext4 $1 $2 … … 85 99 OPTMOUNT: ro cuando restauramos, vacío al crearla, ya que por defecto es de lectura y escritura. 86 100 87 Montamos la partición, en el cliente:101 2) Montamos la partición, en el cliente: 88 102 {{{ 89 103 ogMount 1 X 90 104 }}} 91 105 92 #Creamos la lista del contenido.106 3) Creamos la lista del contenido. 93 107 94 108 {{{ 95 109 mkdir /tmp/vacio 96 # Creamos la lista del contenido y lo situamos en la particion a copiar.97 110 rsync -aHvn --delete /mnt/sdaX/ /tmp/vacio > /tmp/ogimg.lista 98 111 }}} 99 112 100 Sólo para windows: creamos la lista de acl:113 4) Sólo para windows: creamos la lista de acl: 101 114 102 115 {{{ … … 109 122 }}} 110 123 111 #Sincronizamos la imagen desde la partición.124 5) Sincronizamos la imagen desde la partición. 112 125 113 126 {{{ … … 118 131 }}} 119 132 120 Es mejor utilizar el servicio de rsync en el servidor ya que cuando utilizamos rsync sobre samba va peor, la transferencia es más lenta. Este tema excede el objeto de está documentación. 121 122 Desmontamos la imagen. En el servidor: 133 6) Desmontamos la imagen. En el servidor: 123 134 {{{ 124 135 umount /opt/opengnsys/images/mount/$IMGNAME 125 136 }}} 126 137 138 Importante: Es mejor utilizar el servicio de rsync en el servidor ya que cuando utilizamos rsync sobre samba va peor, la transferencia es más lenta. Este tema excede el objeto de está documentación. 139 140 == Redimensionar imagen == 141 Cuando se crea una imagen por segunda vez puede ser necesario que el tamaño sea mayor. Se creará exactamente como la primera vez salvo que en vez de crear el archivo de imagen y su sistema de fichero los redimensiono. 142 143 1) Redimiensiono el archivo 144 145 {{{ 146 truncate --size=">$NEWSIZEREQUIRED"k "$IMGFILE" 147 }}} 148 149 2) Redimiensiono el sistema de ficheros 150 151 {{{ 152 LOOPDEVICE=$(losetup -f) 153 if [ $IMGFS == "EXT4" ]; then 154 losetup $LOOPDEVICE "$IMGNAME.img" 155 resize2fs -f $LOOPDEVICE &> $REPOLOG 156 else 157 mount -o compress=lzo "$IMGNAME.img" "$DIRMOUNT" 158 btrfs filesystem resize max "$DIRMOUNT" 2>&1 > $REPOLOG 159 fi 160 }}} 161 127 162 128 163 == Restaurar - Sincronizar una imagen tipo ext4 o btrfs == … … 130 165 La imagen puede estar en la cache o en repo. 131 166 132 Montamos la imagen: 133 Montamos la imagen. En el servidor: 167 1) Montamos la imagen, por ejemplo en el servidor 134 168 135 169 {{{ … … 145 179 }}} 146 180 147 Montamos la partición, en el cliente: 181 2) Montamos la partición, en el cliente 148 182 {{{ 149 183 ogMount 1 X 150 184 }}} 151 185 152 Sincronizamos la partición tomando como origen la imagen. La partición puede estar vacía o haber sido restaurada con anterioridad y sólo hay que restaurar las modificaciones que haya hecho por el uso. 186 3) Sincronizamos la partición tomando como origen la imagen 187 188 La partición puede estar vacía o haber sido restaurada con anterioridad y sólo hay que restaurar las modificaciones que haya hecho por el uso. 153 189 154 190 {{{ … … 156 192 }}} 157 193 158 Sólo para windows restauramos las ACL: 194 4) Sólo para windows restauramos las ACL 159 195 160 196 {{{ … … 167 203 # Restauramos las acl: 168 204 ntfs-3g.secaudit -se /dev/sdaX /tmp/ogimg.acl 205 }}} 206 207 5) Desmontamos la imagen 208 209 {{{ 210 { 211 umount /opt/opengnsys/images/mount/$IMGNAME 169 212 }}} 170 213