Crear Particiones Virtuales en Linux
1. Introducción
2. Dispositivos de bloques
3. Archivo /dev/zero
4. Dispositivos loop
5. Uso del comando dd
6. Creación de particiones virtuales
7. Referencias
1. Introducción
La finalidad del presente articulo es poder crear dispositivo de bloques o particiones virtuales en sistemas tipo Unix (como es el caso de Linux) y poder utilizarlas como una unidad de almacenamiento más es nuestro sistema.
Para cumplir la finalidad del artículo, es necesario: crear un archivo limpio, después crear un sistema de archivos ext3 sobre el archivo limpio y asociar el sistema de archivos con un dispositivo loop para poder ser utilizado.
Existen dos tipos de dispositivos de nodos en sistemas operativos Unix-Like, conocidos como archivos especiales de caracteres y archivos especiales de bloques. La diferencia entre estos reside en la forma en cómo los datos que se escriben y se leen en estos bloques y desde estos bloques es procesado por el sistema operativo y el hardware. Juntos pueden ser llamados archivos especiales de dispositivos.
2. Dispositivos de bloques
Un archivo especial de bloques o dispositivo de bloques corresponde a dispositivos a través de los cuales el sistema mueve datos en forma de bloques. Estos nodos de dispositivos a menudo representan dispositivos direccionables tales como un disco duro, unidades de CD-ROM, o regiones de memoria.
Por lo general, los dispositivos de bloques soportan búsqueda y acceso aleatorio, y comúnmente utilizan rutinas de entrada y salida en buffer. El sistema operativo asigna un buffer de datos para mantener un solo bloque para cada entrada y salida. Cuando un programa envía una petición de lectura de datos desde o de escritura hacia el dispositivo, el sistema almacena cada caracter de estos datos en el buffer apropiado. Cuando el buffer se llena, la operación apropiada toma lugar (transferencia de datos) y el sistema limpia el buffer.
3. Archivo /dev/zero
En sistemas operativos Unix-Like, /dev/zero es un archivo especial que provee tantos caracteres null (ASCII NUL, 0x00; no el caracter ASCII "0", 0x30) como se lean desde él. Uno de los usos típicos es proveer un flujo de caracteres para sobreescribir información. Otro uso puede ser para generar un archivo "limpio" de un determinado tamaño. Y es esto último para lo que utilizaremos el archivo /dev/zero.
4. Dispositivos loop
En sistemas operativos tipo Unix , un dispositivo loop, vnd (disco vnode) o lofi (interfaz de archivo loopback) es un seudo-dispositivo que hace que un archivo sea accesible como un dispositivo de bloque.
Antes de utilizarse, un dispositivo loop debe estar asociado a un archivo existente en el sistema de archivos. La asociación proporciona al usuario una API que permite que el archivo sea utilizado en lugar de un bloque especial de archivos. Además, si el archivo contiene un sistema de archivos completo, este puede ser montado como si fuera un dispositivo de disco, por ejemplo tal y como se monta un disco duro.
5. Uso del comando dd
El comando dd (duplicate disk) se utiliza para copiar un archivo de un origen a un destino, de acuerdo a determinados operandos. Consulte aquí la página de manual del comando dd para conocer más.
La sintaxis básica es la siguiente:
# dd if=/dev/zero of=/dev/disco bs=1M count=2donde if es el archivo de entrada, of el archivo de salida, bs el tamaño de bloque y count el número de bloques que se crearán del tamaño especificado en bs. El tamaño de bloque puede especificarse por los siguientes sufijos multiplicativos: xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, y así sucesivamente para T, P, E, Z, Y.
6. Creación de particiones virtuales
Bueno, esta es la parte donde se hace el trabajo. Primero que nada, hay que crear el directorio donde se va a montar la partición virtual. Como ejemplo en este artículo la unidad se montará en /mnt/particion1. Para crear el directorio ejecute:
# mkdir /mnt/particion1Pasamos a la creación de un 'archivo limpio', con un tamaño de 500MB, copiando el archivo /dev/zero en un archivo que llamaremos /home/partición1. No se debe confundir el punto de montaje de la partición con la partición misma.
Esto se hace como sigue:
# dd if=/dev/zero of=/home/particion1 bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 11,6548 s, 45,0 MB/sLo que sigue es dar formato al archivo creado. El sistema de archivos será ext3. Ejecute lo siguiente:
# mke2fs -j /home/particion1
mke2fs 1.41.3 (12-Oct-2008)
/home/particion1 no es un dispositivo especial de bloques.
¿Continuar de todas formas? (s,n) sHasta aquí se tiene un sistema de archivos con formato ext3, pero no podemos accesar a este archivo como si fuera un disco duro para poder leer y escribir sobre él. Lo que se debe hacer es asociar nuestro nuevo sistema de archivos ext3 con un dispositivo loop (descrito anteriormente).
Para realizar la asociación ejecute:
# mount -o loop=/dev/loop0 /home/particion1 /mnt/particion1Ya se puede utilizar la particion1, como le hemos llamado, como si de una unidad de disco duro de tratase. Puede mirar el archivo /etc/mtab para comprobar que la partición se ha montado.
Como tenemos una nueva partición, podemos montarla al iniciarse el sistema, agregando una linea en al archivo /etc/fstab, como sigue:
.
.
/home/particion1 /mnt/particion1 ext3 rw,loop=/dev/loop2 0 0Indicamos con esto al sistema que al arrancar monte nuestro sistemas de archivos en el directorio /mnt/particion1, que es de tipo ext3, con opciones de lectura y escritura, utilizando el dispositivo loop0.
Aunque al principio es extenso por la definición de los conceptos involucrados , espero que la información de este articulo pueda serles útil.