18.12. Sistemas de ficheros en red, memoria y respaldados en fichero

Reorganizado y mejorado por Marc Fonvieille.

Además de los discos que conecta físicamente en su máquina (discos flexibles, CDs, discos duros, etc.) FreeBSD permite usar otro tipo de discos: los discos virtuales.

Esto incluye sistemas de ficheros en red como NFS y Coda, sistemas de ficheros basados en memoria y sistemas de ficheros basados en fichero.

Según la versión de FreeBSD que utilice tendrá que utilizar diferentes herramientas para la creación y uso de sistemas de ficheros en memoria y sistemas de ficheros basados en fichero.

Nota: Los usuarios de FreeBSD 4.X tendrán que usar MAKEDEV(8) para crear los dispositivos requeridos. FreeBSD 5.0 y posteriores usan devfs(5) para gestionar los nodos de dispositivo correspondientes de forma transparente para el usuario.

18.12.1. Sistema de ficheros basado en fichero en FreeBSD 4.X

La utilidad vnconfig(8) configura y habilita vnodes de dispositivos de pseudodisco. Un vnode es una representación de un fichero y es el enfoque de la actividad de fichero. Esto significa que vnconfig(8) utiliza ficheros para crear y operar un sistema de ficheros. Un uso posible es el montaje de imágenes de disquetes o CD almacenadas como ficheros.

Para poder usar vnconfig(8) necesitará tener vn(4) en el fichero de configuración de su kernel:

pseudo-device vn

Para montar una imagen de un sistema de ficheros:

Ejemplo 18-4. Uso de vnconfig para montar una imagen de un sistema de ficheros bajo FreeBSD 4.X

# vnconfig vn0 imagendedisco
# mount /dev/vn0c /mnt

Para crear una nueva imagen de un sistema de ficheros con vnconfig(8):

Ejemplo 18-5. Creación de una imagen nueva de un sistema de ficheros respaldado en un archivo con vnconfig

# dd if=/dev/zero of=nuevaimagen bs=1k count=5k
5120+0 records in
5120+0 records out
# vnconfig -s labels -c vn0 nuevaimagen
# disklabel -r -w vn0 auto
# newfs vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c:     10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
        5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
 32
# mount /dev/vn0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/vn0c        4927        1     4532     0%    /mnt

18.12.2. Sistemas de ficheros basados en fichero en FreeBSD 5.X

mdconfig(8) se usa para configurar y habilitar discos habilitar discos de memoria, md(4), en FreeBSD 5.X. Para usar mdconfig(8), tendrá que cargar el módulo md(4) o añadir soporte para el mismo el el fichero de configuración del kernel:

device md

mdconfig(8) soporta tres tipos de discos virtuales en memoria: discos de memoria asignados mediante malloc(9), discos de memoria usando un fichero o espacio de swap como respaldo. Un uso posible es montar imágenes de disquetes o CD archivadas.

Para montar una imagen de un sistema de ficheros:

Ejemplo 18-6. Uso de mdconfig para montar una imagen de un sistema de ficheros en FreeBSD 5.X

# mdconfig -a -t vnode -f imagendedisco -u 0
# mount /dev/md0 /mnt

Para crear una imagen nueva de un sistema de ficheros con mdconfig(8):

Ejemplo 18-7. Creación de un disco respaldado en fichero con mdconfig

# dd if=/dev/zero of=nuevaimagen bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f nuevaimagen -u 0
# disklabel -r -w md0 auto
# newfs md0c
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
    using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/md0c        4846        2     4458     0%    /mnt

Si no especifica el número de unidad con la opción -u mdconfig(8) usará la designación automática de md(4) para seleccionar un dispositivo sin usar. El nombre de la unidad designada se enviará a la salida esándar como md4. Para más información sobre mdconfig(8) consulte su página de manual.

Nota: A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazó a disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parámetros obsoletos. En el ejemplo de arriba ignore la opción -r. Para más información consulte la página de manual de bsdlabel(8).

mdconfig(8) es muy útil, aunque requiere muchas líneas de comando para crear un sistema de ficheros basado en un fichero. FreeBSD 5.0 incorpora mdmfs(8), que configura un disco md(4) utilizando mdconfig(8), pone un sistema de ficheros UFS en él mediante newfs(8) y lo monta usando mount(8). Por ejemplo, si desea crear y montar la misma imagen de sistema de ficheros de arriba, simplemente teclée lo siguiente:

Ejemplo 18-8. Configurar y montar un disco basado en un fichero con mdmfs

# dd if=/dev/zero of=nuevaimagen bs=1k count=5k
5120+0 records in
5120+0 records out
# mdmfs -F newimage -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0        4846    2  4458     0%    /mnt

Si utiliza la opción md sin número de unidad, mdmfs(8) usará la opción de auto unidad de md(4) para selecionar automáticamente un dispositivo sin usar. Para más información sobre mdmfs(8) diríjase a la página de manual.

18.12.3. Sistemas de ficheros basados en memoria en FreeBSD 4.X

El controlador md(4) es un modo sencillo y eficiente de crear sistemas de ficheros basados en memoria en FreeBSD 4.X. malloc(9) se usa para ubicar la memoria.

Sencillamete toma un sistema de ficheros que usted ha preparado con, por ejemplo, vnconfig(8), y:

Ejemplo 18-9. Disco de memoria md en FreeBSD 4.X

# dd if=nuevaimagen of=/dev/md0
5120+0 records in
5120+0 records out
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/md0c        4927        1     4532     0%    /mnt

Para más información por favor consulte la página de manual de md(4).

18.12.4. sistemas de ficheros basados en memoria en FreeBSD 5.X

Se usan las mismas herramientas para tratar con sistemas de ficheros basados en memoria o en ficheros: mdconfig(8) o mdmfs(8). El almacenamiento de sistemas de ficheros basados en memoria requiere el uso de malloc(9).

Ejemplo 18-10. Creación de un nuevo disco basado en memoria con mdconfig

# mdconfig -a -t malloc -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
    using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
    with soft updates
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4846    2  4458     0%    /mnt

Ejemplo 18-11. Creación de un nuevo disco basado en memoria con mdmfs

# mdmfs -M -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md2        4846    2  4458     0%    /mnt

En lugar de usar un sistema de ficheros respaldado en malloc(9), es posible utilizar swap; lo único que debe hacer es sustituir malloc por swap en la línea de comando de mdconfig(8). mdmfs(8) por defecto (sin -M) crea un disco basado en swap). Para más información, consulte las páginas de manual de mdconfig(8) y de mdmfs(8).

18.12.5. Desconexión del sistema de un disco de memoria

Cuando un sistema de ficheros basado en memoria o basado en fichero no se usa puede liberar recursos del sistema. Lo primero es desmontar el sistema de ficheros: use mdconfig(8) para desconectar el disco del sistema y liberar dichos recursos.

Por ejemplo, para desconectar y liberar todos los recursos usados por /dev/md4:

# mdconfig -d -u 4

Es posible listar información sobre dispositivos md(4) configurados en el sistema mediante mdconfig -l.

En FreeBSD 4.X se usa vnconfig(8) para desconectar el dispositivo. Por ejemplo, para desconectar y liberar todos los recursos usados por /dev/vn4:

# vnconfig -u vn4

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.