¿Que es un sistema de archivos loop?
Gnu/Linux (y la gran mayorÃa de sistemas unix) dispone de un mecanismo que permite montar un fichero (previamente formateado) como si fuese un disco duro, normalmente sin tabla de particiones. Este cutre diagrama (hecho por mi) explica el funcionamiento de dicho mecanismo.
Usos de los archivos loop
1- Montar archivos.iso
Los archivos.iso, el estándar por antonomasia en CDs y DVDs no es mas que un archivo loop cuyo sistema de archivos puede ser ISO 9960 (mas común en CDs) o UDF (mas común en DVDs). Para montarlo, haremos uso del comando mount.
mkdir iso #creamos el directorio chmod -R 666 iso #concedemos a todos los usuarios permiso de lectura mount imagen.iso iso/ # montamos la imagen iso (requiere root)
La limitación que tiene es que, por motivos obvios, ambos sistemas de archivos son de solo lectura.
2- Squashfs de solo lectura
Supongamos que tenemos una carpeta de imágenes y/o vÃdeos que esta organizada según el año en que se sacó. Obviamente, es bastante improbable que queramos modificar los datos contenidos en carpetas de años anteriores. Ahà es donde entra en juego Squashfs. Squashfs es un sistema de archivos comprimido de solo lectura, por lo que una vez hecha la imagen, no podremos modificar los datos dentro.
AsÃ, no solo ahorraremos cantidades enormes de espacio, sino que también ocurrirá el curioso efecto de que la lectura de los archivos sera mas rápida, al tener que leer archivos mas pequeños, dado que hoy en dÃa descomprimir un archivo es un esfuerzo mÃnimo para la mayorÃa de CPUs.
Dejando los preámbulos, para crear la imagen squashfs debemos usar el comando mksquashfs, cuya sintaxis es simple :
mksquashfs directorio 1 [directorio 2 directorio 3...] imagen.sqsfs -comp [algoritmo de compresión] -b [tamaño del bloque ]
Y aquà un ejemplo práctico :
mksquashfs fotos-2009 fotos-2010 fotos-2011 fotos-2012 fotos-2013 fotos_2009-2013.sqsfs -comp xz -bs 1M
Bien, el algoritmo elegido es xz dado que es el que mayor ratio de compresión ofrece (de los disponibles), mientras que el tamaño de bloque elegido es el máximo. lo que permite obtener mejores resultados de compresión (por defecto son 64KiB).
Ahora deberÃamos poder montarlo con un simple ;
mount fotos_2009-2013.sqsfs fotos_2009-2013/
Tras comprobar que todo esta correcto podemos borrar los archivos originales o dejar el archivo como backup.
En caso de que queramos que se monte al arrancar el SO debemos añadir a la /etc/fstab una linea de este estilo :
/dir/loop.sqsh /dir/mountdir squashfs ro,defaults 0 0
Ahora bien, ¿Que ocurre cuando queremos añadir o borrar archivos, o simplemente extraer estas snapshots? Pues que tenemos el comando el comando unsquashfs.
unsquashfs [opciones] snapshot.sqfs [Directorios o archivos que extraer]
Por defecto usara como directorio de extracción «squashfs-root». se puede cambiar con la opción -d
- Livecds
- Sistemas embebidos
- Servidores
- En general, cualquier sistema de solo-lectura
3-«Swap de emergencia»
Imagina que por el motivo que sea (hibernación, compilaciones masivas… ) necesitas un extra de swap. Aquà es donde entra en juego el archivo loop, el primer paso consiste en hacer un archivo vacÃo de un tamaño determinado, con un tamaño de bloque determinado, esto lo hacemos con el comando dd :
dd if=/dev/zero of=loop bs=1M count=512
En este caso, el bloque es de un MiB y el tamaño del archivo son 512MiB. No tiene por que ser asÃ.
Creamos y activamos la swap con este comando
mkswap loop && swapon loop
Ten en cuenta que el rendimiento de un archivo loop siempre es algo inferior al de uno fÃsico real.
4-Haz lo que quieras
Estos solo son algunos de los ejemplos mas caracterÃsticos, siéntete libre de experimentar con chroots, sistemas cifrados, sistemas loops anidados… Sus posibilidades son ilimitadas. Pero, cuidado con los comandos que ejecutas, piensa bien antes de presionar enter.
Links de interés
- Squashfs wikipedia
- Man mksquashfs
- Man unsquashfs
- iso 9960 wikipedia
- UDF wikipedia
- VFS wikipedia
- Loop wikipedia