Creamos el archivo que usaremos como disco, para eso, usaremos el comando dd:
gboksar@macbook:~/tmp$ dd if=/dev/zero of=./data.hdd bs=2048 count=2048000 2048000+0 registros de entrada 2048000+0 registros de salida 4194304000 bytes (4,2 GB) copiados, 143,113 s, 29,3 MB/s gboksar@macbook:~/tmp$ ls -l total 4100004 -rw------- 1 gboksar gboksar 4194304000 2008-05-22 00:05 data.hdd
Este archivo fue creado como una iteración de N veces del dispositivo zero, por lo que si bien ocupa una el espacio en disco que fuera especificado, podríamos llegar a comprimirlo en un archivo extremadamente pequeño! (son todos 0)
Veamos un ejemplo:
gboksar@macbook:~/tmp$ tar cjf data.hdd.tar.bz2 data.hdd gboksar@macbook:~/tmp$ ls -l total 4100008 -rw------- 1 gboksar gboksar 4194304000 2008-05-22 00:05 data.hdd -rw------- 1 gboksar gboksar 3052 2008-05-22 00:11 data.hdd.tar.bz2
Tal como se aprecia aquí, un archivo de 4GB fue reducido a 3K! bastante, verdad?!
Bien, ya tenemos el archivo creado, o sea, podríamos decir que tenemos nuestro “nuevo disco”. El siguiente paso es darle formato. Para eso usaremos el comando mkfs y lo especializaremos al tipo de filesystem que creamos conveniente. En este caso del ejemplo usaremos VFAT(FAT32):
gboksar@macbook:~/tmp$ mkfs.vfat -F 32 data.hdd mkfs.vfat 2.11 (12 Mar 2005) gboksar@macbook:~/tmp$
-F con la opción 32 dice a mkfs.vfat que de formato en FAT32 en lugar de FAT12 o FAT16.
El primer paso es crear un directorio para el montaje o utilizar alguno ya existente en nuestro filesystem. En este caso, crearemos un directorio test en nuestro home:
gboksar@macbook:~/tmp$ mkdir test
Una vez creado el directorio, podemos montar la nueva “unidad” en el mismo:
gboksar@macbook:~/tmp$ sudo mount -tvfat data.hdd test -o loop -O rw,user,users gboksar@macbook:~/tmp$ cd test/ gboksar@macbook:~/tmp/test$ ls -l total 0
Creemos algunas cosas dentro de nuestro nuevo “disco”. Es importante recordar que el uso de la unidad queda totalmente transparente, ya que para el usuario será simplemente un directorio más del sistema, pero lo cierto eso que, en este caso, todo lo que se guarde dentro del directorio “test” se estará almacenando en el disco virtual.
gboksar@macbook:~/tmp/test$ sudo mkdir test gboksar@macbook:~/tmp/test$ sudo mkdir test2 gboksar@macbook:~/tmp/test$ sudo mkdir test4 gboksar@macbook:~/tmp/test$ sudo mkdir test3 gboksar@macbook:~/tmp/test$ ll total 16 drwxr-xr-x 2 root root 4096 2008-05-22 00:20 test/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test2/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test3/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test4/ gboksar@macbook:~/tmp/test$ cd ..
Primero que nada debemos salir del directorio que es punto de montaje. Si por algun motivo no nos permitiera desmontar la unidad, podríamos forzar la acción usando el parámetro -l.
gboksar@macbook:~/tmp/test$ cd .. gboksar@macbook:~/tmp$ sudo umount test/
Una vez desmontado, el contenido que había sido creado en test cuando estaba montado el disco habrá “desaparecido” y se mostrará el contenido original del directorio.
gboksar@macbook:~/tmp$ ls -l test total 0 gboksar@macbook:~/tmp$
Si volvemos a montar nuestro unidad virtual, el contenido reaparecerá y lo podremos seguir usando:
gboksar@macbook:~/tmp$ sudo mount -tvfat data.hdd test -o loop gboksar@macbook:~/tmp$ ls -l test total 16 drwxr-xr-x 2 root root 4096 2008-05-22 00:20 test/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test2/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test3/ drwxr-xr-x 2 root root 4096 2008-05-22 00:21 test4/ gboksar@macbook:~/tmp$ sudo umount test/ gboksar@macbook:~/tmp$ ls -l test total 0 gboksar@macbook:~/tmp$
root.