Capítulo 18. Almacenamiento

This translation may be out of date. To help with the translations please access the FreeBSD translations instance.

18.1. Sinopsis

Este capítulo trata sobre el uso de discos en FreeBSD. Esto incluye discos basados en memoria, discos conectados a través de la red, dispositivos de almacenamiento SCSI/IDE estándar y dispositivos que utilizan el interfaz USB.

Tras leer este capítulo:

  • Conocerá la terminología que se usa en FreeBSD para describir la organización de datos en un disco físico (particiones y porciones).

  • Sabrá cómo añadir discos duros a su sistema.

  • Sabrá cómo configurar FreeBSD para utilizar dispositivos de almacenamiento USB.

  • Sabrá cómo configurar sistemas virtuales de ficheros, como los discos de memoria.

  • Sabrá cómo usar cuotas para limitar el uso del espacio en disco.

  • Sabrá cómo cifrar discos para hacerlos más seguros ante un atacante.

  • Sabrá cómo se crean y graban los CD y DVD en FreeBSD.

  • Conocerá diversas opciones de almacenamiento de copias de seguridad.

  • Sabrá cómo usar diversos programas de respaldo que pueden utilizarse en FreeBSD.

  • Sabrá cómo hacer copias de seguridad utilizando disquetes (floppy).

  • Sabrá en qué consiste una instantánea ("snapshot") y cómo utilizarla de forma eficiente.

Antes de leer este capítulo:

18.2. Nombres de dispositivo

A continuación le mostraremos una lista de dispositivos de físicos almacenamiento soportados por FreeBSD y los nombres de dispositivo asociados con ellos.

Tabla 1. Convenciones para nombrar discos físicos
Tipo de unidadNombre de dispositivo de la unidad

Discos duros IDE

ad

Unidades CDROM IDE

acd

Discos duros SCSI y dispositivos de almacenamiento masivo USB

da

Unidades CDROM SCSI

cd

Diferentes tipos de unidades CDROM no estándares

mcd para CD-ROM Mitsumi, scd para CD-ROM Sony, matcd para CD-ROM Matsushita/Panasonic

Unidades de disquete (floppy)

fd

Unidades de cinta SCSI

sa

Unidades de cinta IDE

ast

Unidades Flash

fla para dispositivos DiskOnChip®

Unidades RAID

aacd para Adaptec® AdvancedRAID, mlxd y mlyd para Mylex®, amrd para AMI MegaRAID®, idad para Compaq Smart RAID, twed para 3ware® RAID.

18.3. Añadir discos

Digamos que queremos añadir un nuevo disco SCSI a una máquina que solo tiene un disco. Comience por apagar el sistema e instale el disco siguiendo las instrucciones del fabricante de la computadora, del disco y de la controladora. Debido a la gran variedad de procedimientos posibles los detalles están más allá del alcance de este texto.

Entre como usuario root. Una vez instalado el disco inspeccione /var/run/dmesg.boot para asegurarse de que el sistema encontró el nuevo disco. Continuando con nuestro ejemplo, el disco recién añadido será da1 y queremos montarlo en /1 (si está añadiendo un disco IDE, el nombre de dispositivo será wd1 en sistemas anteriores a 4.0, y ad1 en sistemas 4.X y 5.X).

FreeBSD funciona en computadoras IBM-PC y compatibles, por lo tanto tendrá en cuenta las particiones de la BIOS del PC, que son diferentes del tipo de partición que se ha venido usando en BSD. Un disco para PC puede contener hasta cuatro entradas de particiones BIOS. Si el disco va a utilizarse íntegramente con FreeBSD puede usar el modo dedicado. Si no, FreeBSD tendrá que instalarse dentro de una las particiones BIOS. En FreeBSD se llama slices ("porciones" o "rebanadas") a las particiones de PC BIOS para no confundirlas con las particiones BSD. También puede utilizar slices en un disco dedicado a FreeBSD pero que se está usando en un sistema que también tiene otro sistema operativo instalado. Esta es una buena manera de evitar confundir la versión de fdisk de otros sistemas operativos.

Desde el punto de vista de las slices el disco se añadirá como /dev/da1s1e. Se interpreta del siguiente modo: disco SCSI, unidad número 1 (segundo disco SCSI), slice 1 (partición 1 de PC BIOS), y partición BSD e. Si es un disco dedicado, el disco se añadirá como /dev/da1e.

Debido al uso de enteros de 32-bits para almacenar el número de sectores, bsdlabel(8) (llamado disklabel(8) en FreeBSD 4.X) está limitado a 2^32-1 sectores por disco ó 2TB (en la mayoría de los casos). El formato de fdisk(8) permite un sector de arranque de un máximo de más de 2^32-1 y no más de 2^32-1 de longitud, limitando las particiones a 2TB y los discos a 4TB (también en la mayoría de los casos). El formato sunlabel(8) tiene una limitación de 2^32-1 sectores por partición y 8 particiones en un espacio máximo de 16TB. Si va a usar discos mayores puede usar particiones gpt(8).

18.3.1. Uso de sysinstall(8)

  1. Navegar en Sysinstall

    Puede utilizar sysinstall (/stand/sysinstall en versiones de FreeBSD anteriores a 5.2) para particionar y etiquetar un disco nuevo usando sus intuitivos menús. Entre como el usuario root o utilice su. Ejecute sysinstall y entre al menú Configure. Dentro de FreeBSD Configuration Menu, descienda y seleccione la opción Fdisk.

  2. Editor de particiones fdisk

    Una vez dentro de fdisk, teclée A si quiere usar el disco entero con FreeBSD Cuando se le pregunte "remain cooperative with any future possible operating systems", responda YES. Escriba los cambios al disco pulsando W. Salga del editor FDISK pulsando q. A continuación se le preguntará sobre el "Master Boot Record". Debido a que está añadiendo un nuevo disco a un sistema que ya está instalado, tendrá que seleccionar None.

  3. Editor de etiquetas de disco

    A continuación, debe salir de sysinstall e iniciarlo de nuevo. Siga las instrucciones arriba expuestas, pero esta vez elija la opción Label. De este modo accederá al editor de etiquetas de disco. En él creará las particiones BSD tradicionales. Un disco puede tener hasta ocho particiones, etiquetadas desde la a a la h. Algunas de las etiquetas de las particiones tienen usos especiales. La partición a se utiliza para la partición raíz (/), por lo tanto sólo su disco de sistema (esto es, el disco desde el cual arranca) tendrá una partición a. La partición b se usa como partición swap; puede tener más de una partición swap y puede alojarlas en más de un disco. La partición c hace referencia al disco entero en modo dedicado, o a la slice de FreeBSD completa en modo slice. Las demás particiones son para el resto de los usos típicos.

    El editor de etiquetas de sysinstall creará la partición e como partición "ni raíz, ni swap". En el editor de etiquetas crée un solo sistema de ficheros tecleando C. Cuando se le pregunte si debe etiquetarse como FS (sistema de ficheros) o swap, elija FS y teclée un punto de montaje (por ejemplo /mnt). Al añadir un disco en modo "post-instalación"sysinstall no creará automáticamente las entradas correspondientes en /etc/fstab, por lo que el punto de montaje que usted especifique no tiene importancia.

    Ahora puede escribir la nueva etiqueta al disco y crear un sistema de ficheros en él tecleando W. Ignore cualquier error que pudiera generar sysinstall acerca de dificultades para montar la nueva partición. Salga del editor de etiquetas y de sysinstall.

  4. Terminar

    El último paso es editar /etc/fstab y añadir una entrada para su nuevo disco.

18.3.2. Uso de utilidades de línea de comandos

18.3.2.1. Uso de slices

Esta configuración le permitirá a su disco convivir sin sobresaltos con otro sistema operativo que pueda estar instalado en su sistema y no confundirá a las utilidades fdisk de esos otros sistemas operativos. Se recomienda utilizar este método para instalar discos nuevos. Utilice el modo dedicado sólamente si tiene un buen motivo para hacerlo.

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# fdisk -BI da1 #Initialice el nuevo disco.
# disklabel -B -w -r da1s1 auto #Etiquételo.
# disklabel -e da1s1 # Edite la etiqueta de disco que acaba de crear y añada particiones.
# mkdir -p /1
# newfs /dev/da1s1e # Repita este paso por cada partición que crée.
# mount /dev/da1s1e /1 # Monte la partición o particiones.
# vi /etc/fstab # Añada la/s entrada/s apropiadas en /etc/fstab.

Si tiene un disco IDE, sustituya ad por da. En sistemas anteriores a 4.X utilice wd.

18.3.2.2. Dedicado

Si no va a compartir el nuevo disco con otro sistema operativo puede utilizar el modo dedicado. Recuerde que este modo puede confundir a los sistemas operativos de Microsoft, aunque no podrán dañar por ello el disco o su contenido. Tenga en cuenta que FreeBSD (de IBM) se "apropiará" de cualquier partición que encuentre y no entienda.

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -e da1				# crear partición `e'
# newfs -d0 /dev/da1e
# mkdir -p /1
# vi /etc/fstab				# agregar una entrada para /dev/da1e
# mount /1

Una forma alternativa de hacerlo sería:

# dd if=/dev/zero of=/dev/da1 count=2
# disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/da1e
# mkdir -p /1
# vi /etc/fstab					# añadir una entrada para /dev/da1e
# mount /1

A partir de FreeBSD 5.1-RELEASE, la utilidad bsdlabel(8) reemplazó al antiguo programa disklabel(8). En bsdlabel(8) se han eliminado muchos parámetros y opciones obsoletas; en los ejemplos de arriba la opción -r debe eliminarse si se usa bsdlabel(8). Para más información diríjase al manual de bsdlabel(8).

18.4. RAID

18.4.1. Software RAID

18.4.1.1. Configuración de controlador de disco concatenado (CCD)

Al escoger una solución de almacenamiento masivo los factores más importantes a considerar son velocidad, fiabilidad y coste. Es raro tener los tres por igual; normalmente un dispositivo de almacenamiento masivo veloz y fiable es caro, y para recortar los costes suele sacrificarse la velocidad o la fiabilidad.

Al diseñar el sistema descrito más adelante se eligió el coste como el factor más importante, seguido de la velocidad, y luego la fiabilidad. La velocidad de transferencia de datos para este sistema está, en última instancia, limitada por la red. Y mientras que la confiabilidad es muy importante, el controlador CCD descrito más adelante sirve datos que están respaldados en CD-R y pueden ser reemplazados sin dificultad.

Al escoger una solución de almacenamiento masivo el primer paso es definir sus necesidades. Si prefiere velocidad o fiabilidad por encima del coste, el resultado será distinto del que vamos a describir en esta sección.

18.4.1.1.1. Instalación del hardware

Además del disco IDE, el núcleo del disco CCD está compuesto por tres discos IDE discos IDE Western Digital de 30GB y 5400 RPM, que ofrecen aproximadamente 90GB de almacenamiento. Lo ideal sería que cada disco IDE tuviera su propio cable y controlador, pero para minimizar costes no se utilizaron controladores IDE adicionales. En lugar de eso se configuraron los discos con "jumpers" para que cada controlador IDE tuviera un maestro y un esclavo.

Despues de reiniciar la BIOS se configuró para que detectara automáticamente los discos conectados. FreeBSD los detectó al reiniciar:

ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

Si FreeBSD no detecta todos los discos asegúrese de que ha colocado correctamente los "jumpers". La mayoría de los discos IDE tienen un "jumper""Cable Select". Este no es el "jumper" que define la relación maestro/esclavo. Consulte la documentación del disco para identificar el "jumper" correcto.

El siguiente paso es estudiar cómo conectarlos para que formen parte del sistema de ficheros. Investigue Debe investigar vinum(8) (El Gestor de Volúmenes Vinum) y ccd(4). Nosotros elegimos ccd(4) para nuestra configuración.

18.4.1.1.2. Configuración de CCD

El controlador ccd(4) le permite tomar varios discos idénticos y concatenarlos en un solo sistema lógico de ficheros. Para poder usar ccd(4) necesita un kernel compilado con soporte de ccd(4). Añada esta línea al fichero de configuración de su kernel, recompile y reinstale su kernel:

pseudo-device   ccd     4

En sistemas 5.X, use la siguiente línea:

device   ccd

En FreeBSD 5.X no es necesario especificar un número de dispositivos ccd(4), ya que el controlador de dispositivo ccd(4) es capaz de clonarse a sí mismo (se crearán nuevas instancias de dispositivo automáticamente según vayan haciendo falta).

El soporte de ccd(4) también puede cargarse como módulo en FreeBSD 3.0 y posteriores.

Para configurar ccd(4) tendrá que usar disklabel(8) para etiquetar los discos:

disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 auto

Esto crea una etiqueta de disco para ad1c, ad2c y ad3c que abarcan el disco completo.

A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazó al antiguo programa disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parámetros obsoletos; en los ejemplos de arriba la opción -r deben obviarse. Para más información consulte bsdlabel(8).

El siguiente paso es cambiar el tipo de etiqueta de disco. Edite los discos con disklabel(8):

disklabel -e ad1
disklabel -e ad2
disklabel -e ad3

Esto abre la etiqueta de disco de cada disco con el editor declarado en la variable de entorno EDITOR, por defecto vi(1).

Esta es una etiqueta de disco sin modificar:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

ccd(4) necesita que añada una nueva partición e. Puede copiarla desde la partición c, pero el tipo de sistema de ficheros (la opción fstype) debe ser 4.2BSD. La etiqueta del disco debería tener este aspecto:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
  e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)
18.4.1.1.3. Contrucción del sistema de ficheros

Puede que todavía no exista el nodo de dispositivo para ccd0c. Si es así, ejecute lo siguiente:

cd /dev
sh MAKEDEV ccd0

En FreeBSD 5.0 devfs(5) administrará automáticamente los nodos de dispositivos en /dev, así que no tendrá que usar MAKEDEV.

Una vez etiquetados todos los discos construya el ccd(4). Utilice ccdconfig(8) con opciones similares a las siguientes:

ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
  • El uso y el significado de cada una de las opciones se muestra más abajo:

  • El primer argumento es el dispositivo a configurar, en este caso /dev/ccd0c. La parte /dev/ es opcional.

  • El intervalo para el sistema de ficheros. El intervalo define el tamaño de una banda en bloques de disco, normalmente 512 bytes. Por lo tanto, un intervalo de 32 equivaldría 16.384 bytes. Banderas para ccdconfig(8). Si desea disponer sus discos en espejo use aquí una bandera. Esta configuración no necesita discos en espejo, por lo que está dispuesta a 0 (cero).

  • Los últimos argumentos de ccdconfig(8) son los dispositivos a colocar en el array. Utilice la ruta completa para cada dispositivo.

Despues de ejecutar ccdconfig(8) el ccd(4) estará configurado y podrá instalar un sistema de ficheros. Consulte las opciones de newfs(8) y ejecute:

newfs /dev/ccd0c
18.4.1.1.4. Automatización

Seguramente querrá que ccd(4) esté dispuesto tras cada reinicio. Para ello, debe configurarlo. Guarde su configuración en /etc/ccd.conf mediante lo siguiente:

ccdconfig -g > /etc/ccd.conf

Durante el reinicio, el "script" /etc/rc ejecuta ccdconfig -C si encuentra el fichero /etc/ccd.conf. De este modo ccd(4) queda configurado automáticamente para que pueda montarse.

Si ha arrancando en modo mono usuario necesita ejecutar el siguiente comando antes de que pueda montar el ccd(4) para configurar el array:

ccdconfig -C

Para montar automaticamente el ccd(4) coloque una entrada para ccd(4) en /etc/fstab para que se monte durante el arranque:

/dev/ccd0c              /media       ufs     rw      2       2

18.4.1.2. El administrador de volúmenes Vinum

El administrador de volúmenes Vinum es un controlador de dispositivos de bloque que implementa unidades de disco virtuales. Aísla los discos hardware de la interfaz de dispositivos de bloque y mapea datos de modo que revierta en un incremento de flexibilidad, rendimiento y fiabilidad comparados con el sistema de slices de almacenamiento de disco tradicional. vinum(8) implementa los modelos RAID-0, RAID-1 y RAID-5, individualmente o combinados.

Consulte el (El Gestor de Volúmenes Vinum) para mayor información sobre vinum(8).

18.4.2. RAID por Hardware

FreeBSD admite una gran variedad de controladores RAID por hardware. Estos dispositivos controlan un subsistema RAID sin necesidad de software específico para FreeBSD que administre el array.

Puede controlar la mayoría de las operaciones de disco con una tarjeta que incorpore BIOS. El siguiente texto es una breve descripción de configuración utilizando una controladora Promise RAIDIDE. Cuando se instala esta tarjeta e inicia el sistema despliega un "prompt" pidiendo información. Siga las instrucciones para entrar a la pantalla de configuración de la tarjeta. Ahí tendrá posibilidad de combinar todos los discos que haya conectado. Hecho esto el disco (o discos) aparecerán como una sola unidad en FreeBSD. Pueden configurarse otros niveles de RAID.

18.4.3. Reconstrucción de arrays ATA RAID1

FreeBSD le permite reemplazar en caliente un disco dañado. Esto requiere que lo intercepte antes de reiniciar.

Probablemente vea algo como lo siguiente en /var/log/messages o en la salida de dmesg(8):

ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
status=59 error=40
ar0: WARNING - mirror lost

Consulte atacontrol(8) para más información:

# atacontrol list
ATA channel 0:
	Master:      no device present
	Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

ATA channel 1:
	Master:      no device present
	Slave:       no device present

ATA channel 2:
	Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

ATA channel 3:
	Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
  1. Primero debe desconectar el disco del array para que pueda retirarlo con seguridad:

    # atacontrol detach 3
  2. Reemplace el disco.

  3. Conecte el disco de repuesto:

    # atacontrol attach 3
    Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    Slave:   no device present
  4. Reconstruya el array:

    # atacontrol rebuild ar0
  5. El comando de reconstrucción no responderá hasta que termine la tarea. Puede abrir otra terminal (mediante Alt+Fn) y revisar el progreso ejecutando lo siguiente:

    # dmesg | tail -10
    [texto eliminado]
    ad6: removed from configuration
    ad6: deleted from ar0 disk1
    ad6: inserted into ar0 disk1 as spare
    
    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0 completed
  6. Espere hasta que termine la operación.

18.5. Dispositivos de almacenamiento USB

Hoy día hay una enorme cantidad de soluciones de almacenamiento externoque usan el bus serie universal (USB): discos duros, "mecheros" (o "lápices") USB, grabadoras de CD-R, etc. FreeBSD puede usar estos dispositivos.

18.5.1. Configuración

El controlador de dispositivos de almacenamiento masivo USB, umass(4), ofrece soporte para dispositivos de almacenamiento USB. Si usa el kernel GENERIC no necesita cambiar nada en su configuración. Si utiliza un kernel personalizado asegúrese de que su fichero de configuración del kernel contiene las siguientes líneas:

device scbus
device da
device pass
device uhci
device ohci
device usb
device umass

El controlador umass(4) usa el subsistema SCSI para acceder a los dispositivos de almacenamiento USB y su dispositivo USB aparecerá en el sistema como dispositivo SCSI. Dependiendo del chipset USB de su placa base sólamente necesitará device uhci o device ohci; en cualquier caso tener los dos en el fichero de configuración del kernel no provocará ningún daño. No olvide compilar e instalar el nuevo kernel si hizo alguna modificación.

Si su dispositivo USB es una grabadora CD-R o DVD el controlador SCSI CD-ROM, cd(4), debe ser añadirse al kernel mediante la siguiente línea:

device cd

Dado que la grabadora aparece como una unidad SCSI no tiene que usar el controlador atapicam(4) en la configuración del kernel.

En FreeBSD 5.X y en la rama 4.X desde FreeBSD 4.10-RELEASE el soporte para controladores USB 2.0 se incorpora al sistema del siguiente modo:

device ehci

Tenga en cuenta que uhci(4) y ohci(4) siguen siendo necesarios si quiere disponer de soporte para USB 1.X.

En FreeBSD 4.X, El dæmon USB (usbd(8)) debe ejecutarse para poder ver ciertos tipos de dispositivo USB. Para habilitarlo, añada usbd_enable="YES" en /etc/rc.conf y reinicie la máquina.

18.5.2. Prueba de la configuración

La configuración está lista para probarse: conecte su dispositivo USB; en el búfer de mensajes del sistema (dmesg(8)), la unidad debe aparecer como algo similar a esto:

umass0: USB Solid state disk, rev 1.10/1.00, addr 2
GEOM: create disk da0 dp=0xc2d74850
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
da0: 1.000MB/s transfers
da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

Obviamente la marca, el nodo de dispositivo (da0) y otros detalles pueden diferir dependiendo de su hardware.

Ya que el dispositivo USB aparece como uno SCSI, puede usar camcontrol para ver una lista de dispositivos USB conectados al sistema:

# camcontrol devlist
<Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

Si la unidad tiene un sistema de ficheros puede montarla. La Añadir discos contiene información que le resultará muy útil para formatear y crear particiones en el disco USB en caso de necesitarlo.

Si desconecta el dispositivo (el disco debe desmontarse previamente), debería ver en el búfer de mensajes del sistema algo parecido a esto:

umass0: at uhub0 port 1 (addr 2) disconnected
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
GEOM: destroy disk da0 dp=0xc2d74850
umass0: detached

18.5.3. Lecturas recomendadas

Ademas de las secciones Cómo añadir discos y Montado y desmontado de sistemas ficheros, consulte las siguientes páginas man: umass(4), camcontrol(8) y usbdevs(8).

18.6. Creación y uso de medios ópticos (CD)

18.6.1. Introducción

Los CD tienen muchas opciones que los hacen distintos de los discos convencionales. Al principio los usuarios no podían escribirlos. Su diseño permite que leamos en ellos sin el retardo del movimiento de una cabeza lectora de una pista a otra. También son mucho más fáciles de transportar de un sistema a otro que muchos otros soportes de información.

Los CD tienen pistas, pero son una sección de los que permiten lectura contínua, no una propiedad física del disco. Para crear un CD en FreeBSD debe preparar los ficheros de datos que van a constituir las pistas del CD y luego escribir las pistas al CD.

El sistema de ficheros ISO 9660 se diseñó para gestionar estas diferencias. Por desgracia implementa límites de sistema de ficheros que eran comunes en la época en que se diseñó. Por suerte también proporciona un mecanismo de extensiones que permite que CD escritos excediendo dichos límites funcionen en sistemas que no soportan esas extensiones.

El port sysutils/cdrtools incluye mkisofs(8), un programa que le permitirá crear un fichero de datos que contenga un sistema de ficheros ISO 9660. Incorpora opciones que soportan varias extensiones. Se describe más adelante.

Qué herramienta usar para grabar el CD depende de si su grabadora es ATAPI o no. Las grabadoras de CD ATAPI usan el programa burncd, que forma parte del sistema base. Las grabadoras SCSI y USB usan cdrecord, del port sysutils/cdrtools.

burncd no soporta cualquier unidad de grabación. Para saber si una unidad está soportada consulte la siguiente lista de unidades CD-R/RW soportadas.

Si utiliza FreeBSD 5.X, FreeBSD 4.8-RELEASE o posteriores, puede utilizar cdrecord y otras herramientas para unidades SCSI en hardware ATAPI con el módulo ATAPI/CAM.

Si quiere usar un interfaz gráfico con su software de grabación de CD quizás le guste X-CD-Roast o K3b. Puede instalar estas herramientas como paquetes o desde los ports sysutils/xcdroast y sysutils/k3b, respectivamente. X-CD-Roast y K3b requieren el módulo ATAPI/CAM si usa hardware ATAPI.

18.6.2. mkisofs

El programa mkisofs(8) (que forma parte del port sysutils/cdrtools) genera un sistema de ficheros ISO 9660 que es una imagen de un árbol de directorios en el espacio de nombres del sistema de ficheros UNIX®. Esta es la forma más simple de usarlo:

# mkisofs -o ficherodeimagen.iso /ruta/del/árbol

Este comando creará un ficherodeimagen.iso que contenga un sistema de ficheros ISO 9660 que es una copia del árbol ubicado en /ruta/al/árbol. En el proceso, mapeará los nombres de fichero a nombres que se ajusten a las limitaciones del estándar del sistema de ficheros ISO 9660, y excluirá ficheros que posean nombres no característicos de sistemas de ficheros ISO.

Existe gran cantidad de opciones que permiten superar esas restricciones. En particular, -R habilita las extensiones Rock Ridge comunes para sistemas UNIX®, -J habilita las extensiones Joliet usadas por sistemas Microsoft y -hfs puede usarse para crear sistemas de ficheros utilizados por Mac OS®.

Puede utilizar -U para deshabilitar todas las restricciones de nombres de fichero si quiere crear un CD que se vaya a usar exclusivamente en sistemas FreeBSD. Cuando se usa con -R produce una imagen de sistema de ficheros que es idéntica al árbol FreeBSD origen, aunque puede violar el estándar ISO 9660 de múltiples formas.

La última opción de uso general es -b. Se usa para configurar la ubicación de la imagen de arranque que se usará al crear un CD arrancable "El Torito". Esta opción usa como argumento la ruta a la imagen de arranque desde la raíz del árbol de directorios que se va a escribir en el CD. Por defecto mkisofs(8) crea una imagen ISO en un modo llamado "de emulación de disquete (floppy)", y por lo tanto espera que la imagen de arranque sea exactamente de 1.200, 1.440 o 2880 KB de tamaño. Algunos cargadores de arranque, como el que se usa en los discos de la distribución FreeBSD, no utilizan modo de emulación: se usa la opción -no-emul-boot. Por tanto, si /tmp/miarranque tiene un sistema FreeBSD arrancable con la imagen de arranque en /tmp/miarranque/boot/cdboot podría crear la imagen en un sistema de ficheros ISO 9660 en /tmp/arrancable.iso de la siguiente manera:

# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/arrancable.iso /tmp/miarranque

Hecho esto, si tiene vn (FreeBSD 4.X), o md (FreeBSD 5.X) configurado en su kernel, puede montar el sistema de ficheros del siguiente modo:

# vnconfig -e vn0c /tmp/arrancable.iso
# mount -t cd9660 /dev/vn0c /mnt

En FreeBSD 4.X y FreeBSD 5.X proceda del siguiente modo:

# mdconfig -a -t vnode -f /tmp/arrancable.iso -u 0
# mount -t cd9660 /dev/md0 /mnt

Ahora puede verificar que /mnt y /tmp/miarranque sean idénticos.

Existen muchas otras opciones que puede usar para depurar el comportamiento de mkisofs(8), sobre todo en lo que se refiere al esquema ISO 9660 y la creación de discos Joliet y HFS. Consulte el manual de mkisofs(8).

18.6.3. burncd

Si tiene una grabadora ATAPI puede usar burncd para grabar una imagen ISO en un CD. burncd forma parte del sistema base, y está en /usr/sbin/burncd. Su uso es muy sencillo, ya que tiene pocas opciones:

# burncd -f unidaddecd data ficheroimagen.iso fixate

Esto grabará una copia de ficheroimagen.iso en unidadcd. El dispositivo por defecto es /dev/acd0 (o /dev/acd0c en FreeBSD 4.X). Consulte burncd(8) para ver las opciones de configuración de velocidad de escritura, expulsión de CD una vez grabado, y escritura de datos de audio.

18.6.4. cdrecord

Si no dispone de una grabadora ATAPI de CD, tendrá que usar cdrecord para grabar sus CD. cdrecord no forma parte del sistema base; instálelo desde el port sysutils/cdrtools o como paquete. Los cambios en el sistema base pueden hacer que las versiones binarias del programa fallen. Tendrá que actualizar el port cuando actualice su sistema o, si está siguiendo la rama -STABLE, actualizar el port cuando haya una nueva versión disponible.

Aunque cdrecord tiene muchas opciones, el uso básico es incluso más simple que el de burncd. Así se graba una imagen ISO 9660:

# cdrecord dev=dispositivo ficheroimagen.iso

La parte complicada de utilizar cdrecord es encontrar qué dev usar. Utilice la bandera -scanbus para dar con la configuración apropiada. La salida será parecida a la siguiente:

# cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
        0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
        0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
        0,2,0     2) *
        0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
        0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
scsibus1:
        1,0,0   100) *
        1,1,0   101) *
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
        1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
        1,7,0   107) *

Esta lista muestra los valores dev apropiados para los dispositivos de la lista. Localice su grabadora de CD y utilice los tres números separados por comas como valor para dev. En este caso, el dispositivo CDW es 1,5,0 y por tanto la entrada apropiada sería dev=1,5,0. Hay modos más fáciles de especificar este valor; consulte cdrecord(1) para más detalles. También es el lugar donde buscar información sobre la escritura de pistas de audio, controlar la velocidad de escritura y muchas más cosas.

18.6.5. Copiar CD de audio

Puede duplicar un CD de audio extrayendo los datos de audio del CD a ficheros y escribir estos ficheros en un CD virgen. El proceso es ligeramente diferente en unidades ATAPI y SCSI.

Procedure: Unidades SCSI

  1. Use cdda2wav para extraer el audio.

    % cdda2wav -v255 -D2,0 -B -Owav
  2. Use cdrecord para escribir los ficheros .wav.

    % cdrecord -v dev=2,0 -dao -useinfo  *.wav

    Asegúrese de que 2,0 este configurado apropiadamente, como se describe en la cdrecord.

Procedure: Unidades ATAPI

  1. El controlador de CD ATAPI hace que cada pista sea accesible como /dev/acddtnn, donde d es el número de unidad y nn es el número de pista expresado con dos dígitos decimales, precedido por un cero si es necesario. La primera pista del primer disco es /dev/acd0t01, la segunda es /dev/acd0t02, la tercera es /dev/acd0t03 y así sucesivamente.

    Asegúrese de que existen los ficheros apropiados en /dev.

    # cd /dev
    # sh MAKEDEV acd0t99

    En FreeBSD 5.0 devfs(5) creará y gestionará automáticamente las entradas necesarias en /dev, así que no será necesario usar MAKEDEV.

  2. Extraer cada pista con dd(1). También deberá declarar un tamaño específico de bloque al extraer los ficheros.

    # dd if=/dev/acd0t01 of=pista1.cdr bs=2352
    # dd if=/dev/acd0t02 of=pista2.cdr bs=2352
    ...
  3. Grabar los ficheros extraídos a disco con burncd. Debe declarar que son ficheros de audio y que burncd debe cerrar ("fixate") el disco al terminar la grabación.

    # burncd -f /dev/acd0 audio pista1.cdr pista2.cdr ... fixate

18.6.6. Duplicar CDs de datos

Puede copiar un CD de datos a un fichero de imagen que será funcionalmente equivalente al fichero de imagen creado con mkisofs(8), y puede usarlo para duplicar cualquier CD de datos. El ejemplo dado aquí asume que su dispositivo CDROM es acd0. Sustitúyalo por el dispositivo CDROM correcto para su configuración. Bajo FreeBSD 4.X, se debe añadir una c al final del nombre del dispositivo para indicar la partición entera o, en el caso de los CDROM, el disco entero.

# dd if=/dev/acd0 of=fichero.iso bs=2048

Hecha la imagen puede garbarla en un CD como se describió anteriormente.

18.6.7. Uso de CD de datos

Ahora que ha creado un CDROM de datos estándar tal vez quiera montarlo y leer los datos que contiene. Por defecto mount(8) asume que los sistemas de ficheros son de tipo ufs. Si trata de hacer algo como

# mount /dev/cd0 /mnt

recibirá un error como este: Incorrect super block y no se montará. Un CDROM no es un sistema de ficheros UFS así que los intentos de montarlo como tal fallarán. Tendrá que decirle a mount(8) que el sistema de ficheros es de tipo ISO9660 y funcionará. Puede hacerlo mediante la opción -t cd9660. Por ejemplo, si quiere montar el dispositivo CDROM /dev/cd0 en /mnt ejecute:

# mount -t cd9660 /dev/cd0 /mnt

Tenga en cuenta que el nombre de su dispositivo (/dev/cd0 en este ejemplo) puede ser diferente, dependiendo de la interfaz que su CDROM utilice. Además la opción -t cd9660 sólo ejecuta mount_cd9660(8). El ejemplo de arriba puede resumirse del siguiente modo:

# mount_cd9660 /dev/cd0 /mnt

En general puede usar CDROM de datos de cualquier fabricante, aunque los discos con ciertas extensiones ISO 9660 pueden mostrar un comportamiento extraño. Por ejemplo, los discos Joliet almacenan todos los nombres de fichero en caracteres unicode de dos-bytes. El kernel de FreeBSD no comprende unicode (todavía) así que los caracteres que no están en inglés aparecen como signos de interrogación. (Si utiliza FreeBSD 4.3 o alguna versión posterior, el controlador CD9660 incluye unas estructuras llamadas "ganchos", que le permitirán cargar una tabla de conversión unicode apropiada cuando haga falta. Hay módulos para algunas de las codificaciones más comunes en el port sysutils/cd9660_unicode.)

Es posible que reciba un error Device not configured al tratar de montar un CDROM. Generalmente esto significa que la unidad de CDROM piensa que no hay disco en la bandeja, o que la unidad no es visible en el bus. Puede llevar un par de segundos el que una unidad de CDROM se dé cuenta de que ha sido alimentada, por lo tanto sea paciente.

Algunas veces un CDROM SCSI puede "perdido" debido a que no tuvo tiempo suficiente para responder al reset del bus. Si tiene un CDROM SCSI añada la siguiente opción a su fichero de configuración del kernel y recompile su kernel.

options SCSI_DELAY=15000

Esto le indica a su bus SCSI que haga una pausa de 15 segundos durante el arranque para darle ocasión a su unidad de CDROM de responder al reset del bus.

18.6.8. Grabar CD de datos "crudos" (Raw)

Puede guardar un fichero directamente a CD sin crear un sistema de ficheros ISO 9660. Algunas personas hacen esto al crear respaldos. Es un proceso más rápido que grabar un CD estándar:

# burncd -f /dev/acd1 -s 12 data fichero.tar.gz fixate

Para recuperar los datos guardardados de este modo en un CD, debe leer los datos desde el nodo de dispositivo "crudo":

# tar xzvf /dev/acd1

No puede montar este disco como lo haría con un CDROM normal. Estos CDROM no pueden leerse en ningún sistema operativo que no sea FreeBSD. Si quiere montar el CD o compartir los datos con otro sistema operativo debe utilizar mkisofs(8) como se describió previamente.

18.6.9. Uso del controlador ATAPI/CAM

Este controlador permite que dispositivos ATAPI (CD-ROM, CD-RW, unidades DVD, etc) sean accesibles a través del subsistema SCSI y por lo tanto permite el uso de aplicaciones como sysutils/cdrdao o cdrecord(1).

Para usar este controlador necesitará añadir la siguiente línea al fichero de configuración de su kernel:

device atapicam

Es posible que necesite también las siguientes líneas en el fichero de configuración de su kernel:

device ata
device scbus
device cd
device pass

(que, por otra parte, ya deberín estar presentes).

Recompile, instale su nuevo kernel y reinicie su máquina. Durante el proceso de arranque su grabadora debe ser detectada; veamos un ejemplo:

acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Puede acceder a la unidad a través del del nombre de dispositivo /dev/cd0; por ejemplo, para montar un CDROM en /mnt, teclée lo siguiente:

# mount -t cd9660 /dev/cd0 /mnt

Como root, puede ejecutar el siguiente comando para obtener las direcciones SCSI del dispositivo:

# camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

Según esto, 1,0,0 será la dirección SCSI a utilizar con cdrecord(1) y otras aplicaciones SCSI.

Para mayor información sobre sistemas ATAPI/CAM y SCSI, diríjase a las páginas de manual atapicam(4) y cam(4).

18.7. Crear y utilizar medios ópticos (DVDs)

18.7.1. Introducción

Comparado con el CD, el DVD es la nueva generación de tecnología de almacenamiento en medios ópticos. El DVD puede almacenar más datos que cualquier CD y hoy día es el estándar para publicación de vídeo.

Se pueden definir cinco formatos de grabación para lo que llamamos un DVD grabable:

  • DVD-R: Este fué el primer formato de grabación de DVD. El DVD-R estándar fué definido por el DVD Forum. Este formato es de una sola escritura.

  • DVD-RW: Esta es la versión reescribible del DVD-R estándar. Un DVD-RW puede reescribirse unas 1.000 veces.

  • DVD-RAM: Este es también un formato reescribible soportado por el DVD Forum. Un DVD-RAM puede verse como un disco duro extraíble. Este medio no es compatible con la mayoría de las unidades DVD-ROM y reproductores de video DVD; hay muy pocas grabadoras de DVD que soporten el formato DVD-RAM.

  • DVD+RW: Este es un formato reescribible definido por la DVD+RW Alliance. Un DVD+RW puede reescribirse unas 1000 veces.

  • DVD+R: Este un formato es la versión de una sola escritura del formato DVD+RW.

Un DVD grabable de una capa puede almacenar hasta 4.700.000.000 bytes, es decir, 4'38 GB o 4485 MB (1 kilobyte son 1.024 bytes).

Debemos hacer una distinción entre medio físico y aplicación. Un DVD de vídeo es una estructura de fichero específica que puede escribirse en cualquier medio físico consistente en un DVD grabable: DVD-R, DVD+R, DVD-RW, etc. Antes de elegir el tipo de medio, debe asegurarse que la grabadora y el reproductor de DVD de vídeo (un reproductor independiente o una unidad DVD-ROM en una computadora) son compatibles con el medio que pretende utilizar.

18.7.2. Configuración

Utilice growisofs(1) para grabar el DVD. Forma parte de las herramientas dvd+rw-tools (sysutils/dvd+rw-tools). Las dvd+rw-tools permiten usar todos los tipos de DVD.

Estas herramientas utilizan el subsistema SCSI para acceder a los dispositivos, por lo tanto el soporte ATAPI/CAM debe estar presente en su kernel. Si su grabadora usa el interfaz USB no tendrá que hacerlo, pero tendrá que leer la Dispositivos de almacenamiento USB para más información sobre la configuración de dispositivos USB.

También debe que habilitar el acceso DMA para dispositivos ATAPI. Para ello añada la siguiente línea a /boot/loader.conf:

hw.ata.atapi_dma="1"

Antes de intentar utilizar dvd+rw-tools debe consultar las notas de compatibilidad de hardware de dvd+rw-tools por si apareciera cualquier información relacionada con su grabadora de DVD.

Si desea un interfaz gráfico debería echar un vistazo a K3b (sysutils/k3b), que ofrece un interfaz de usuario amigable para growisofs(1) y muchas otras herramientas de grabación.

18.7.3. Quemado de DVD de datos

growisofs(1) es un "frontend" de mkisofs, invocará a mkisofs(8) para crear una estructura de sistema de ficheros y realizará la escritura del DVD. Esto significa que no necesita crear una imagen de los datos antes del proceso de escritura.

La grabación en DVD+R o DVD-R de los datos del directorio /ruta/a/los/datos, se hace del siguiente modo:

# growisofs -dvd-compat -Z /dev/cd0 -J -R /ruta/a/los/datos

Las opciones -J -R se suministran a mkisofs(8) para la creación del sistema de ficheros (en este caso: un sistema de ficheros ISO 9660 con extensiones Joliet y Rock Ridge). Consulte la página de manual mkisofs(8) para más detalles.

La opción -Z se usa la sesión inicial de grabación en todos los casos, sesiones múltiples o no. El dispositivo DVD del ejemplo, /dev/cd0, debe ajustarse de acuerdo a la configuración de su sistema. El parámero -dvd-compat cerrará el disco (no se podrá añadir nada a la grabación). Por contra, esto le brindará una mejor compatibilidad del medio con unidades DVD-ROM.

También es posible grabar una imagen pre-masterizada, por ejemplo para guardar la imagen ficheroimagen.iso:

# growisofs -dvd-compat -Z /dev/cd0=ficheroimagen.iso

La velocidad de escritura se detecta y configura automáticamente según el medio y la unidad que se esté utilizando. Si quiere forzar la velocidad de escritura utilice el parámetro -speed=. Para más información consulte la página de manual growisofs(1).

18.7.4. Grabación de un DVD de vídeo

Un DVD de vídeo es una estructura de ficheros específica basada en las especificiones ISO 9660 y micro-UDF (M-UDF). El DVD de vídeo también dispone de una jerarquía de estructura de datos específica; por esta razón es necesario un programa especializado para crear tal DVD: multimedia/dvdauthor.

Si ya tiene una imagen de un sistema de ficheros de DVD de vídeo grábelo de la misma manera que cualquier otra imagen; consulte la sección previa para ver un ejemplo. Si ha creado el DVD y el resultado está en, por ejemplo, el directorio /ruta/al/vídeo, use el siguiente comando para grabar el DVD de vídeo:

# growisofs -Z /dev/cd0 -dvd-video /ruta/al/vídeo

La opción -dvd-video de mkisofs(8) hará posible la creación de una estructura de sistema de ficheros de DVD de vídeo. Además, la opción -dvd-video implica la opción -dvd-compat de growisofs(1).

18.7.5. Uso de un DVD+RW

A diferencia de un CD-RW, un DVD+RW virgen necesita ser formateado antes de usarse por primera vez. El programa growisofs(1) se encargará de ello automáticamente cuando sea necesario, lo cual es el método recomendado. De todas formas puede usted usar el comando dvd+rw-format para formatear el DVD+RW:

# dvd+rw-format /dev/cd0

Necesita ejecutar esta operación solamente una vez, recuerde que sólo los DVD+RW vírgenes necesitan ser formateados. Hecho eso ya puede usar el DVD+RW de la forma expuesta en las secciones previas.

Si desea guardar nuevos datos (grabar un sistema de ficheros totalmente nuevo, no añadir más datos) en un DVD+RW no necesita borrarlo, sólo tiene que escribir sobre la grabación anterior (realizando una nueva sesión inicial):

# growisofs -Z /dev/cd0 -J -R /ruta/alos/datosnuevos

El formato DVD+RW ofrece la posibilidad de añadir datos fácilmente a una grabación previa. La operación consiste en fusionar una nueva sesión a la existente, no es escritura multisesión; growisofs(1) hará crecer el sistema de ficheros ISO 9660 presente en el medio.

Si, por ejemplo, añadir datos al DVD+RW del ejemplo anterior tenemos que usar lo siguiente:

# growisofs -M /dev/cd0 -J -R /ruta/alos/datosnuevos

Las mismas opciones de mkisofs(8) que utilizamos para quemar la sesión inicial pueden usarse en ulteriores escritura.

Puede usar la opción -dvd-compat si desea mejor la compatibilidad de medios con unidades DVD-ROM. Si la usa en un DVD+RW no evitará que pueda añadir más datos.

Si por alguna razón desea borrar el contenido del medio, haga lo siguiente:

# growisofs -Z /dev/cd0=/dev/zero

18.7.6. Uso de un DVD-RW

Un DVD-RW acepta dos formatos de disco: el incremental secuencial y el de sobreescritura restringida. Por defecto los discos DVD-RW están en formato secuencial.

Un DVD-RW virgen puede utilizarse directamente sin necesidad de formateo, sin embargo un DVD-RW no virgen en formato secuencial necesita ser borrado antes de poder guardar una nueva sesión inicial.

Para borrar un DVD-RW en modo secuencial, ejecute:

# dvd+rw-format -blank=full /dev/cd0

Un borrado total (-blank=full) tardará aproximadamente una hora en un medio 1x. Un borrado rápido puede realizarse con la opción -blank si el DVD-RW fué grabado en modo Disk-At-Once (DAO). Para grabar el DVD-RW en modo DAO use el comando:

# growisofs -use-the-force-luke=dao -Z /dev/cd0=ficheroimagen.iso

La opción -use-the-force-luke=dao no es imprescindible, ya que growisofs(1) trata de detectar el medio (borrado rápido) y entrar en escritura DAO.

Debería usarse el modo de reescritura restringida en los DVD-RW, pues este formato es más flexible que el formato de incremento secuencial, el formato por defecto.

Para escribir datos en un DVD-RW secuencial proceda del mismo modo que con los demás formatos de DVD:

# growisofs -Z /dev/cd0 -J -R /ruta/alos/datos

Si desea añadir datos a una grabación previa tendrá que usar la opción -M de growisofs(1). si añade datos a un DVD-RW en modo incremental secuencial se creará en el disco una nueva sesión y el resultado será un disco multisesión.

Un DVD-RW en formato de sobreescritura restringido no necesita ser borrado antes de una nueva sesión inicial, sólo tiene que sobreescribir el disco con la opción -Z. esto es similar al caso DVD+RW. También es posible ampliar un sistema de ficheros ISO 9660 ya existente y escrito en el disco del mismo modo que para un DVD+RW con la opción -M. El resultado será un DVD de una sesión.

Para poner un DVD-RW en el formato de sobreescritura restringido haga lo siguiente:

# dvd+rw-format /dev/cd0

Para devolverlo al formato secuencial use:

# dvd+rw-format -blank=full /dev/cd0

18.7.7. Multisesión

Muy pocas unidades DVD-ROM soportan DVDs multisesión. La mayoría de las veces (y si tiene suerte) solamente leerán la primera sesión. Los DVD+R, DVD-R y DVD-RW en formato secuencial pueden aceptar multisesiones. El concepto de multisesión no existe en los formatos de sobreescritura restringida de DVD+RW y DVD-RW.

Usando el siguiente comando despues de una sesión inicial (no-cerrada) en un DVD+R, DVD-R o DVD-RW en formato secuencial añadirá una nueva sesión al disco:

# growisofs -M /dev/cd0 -J -R /ruta/alos/nuevosdatos

Usando este comando con un DVD+RW o un DVD-RW en modo de sobreescritura restringida, agregará datos fusionando la nueva sesión a la ya existente. El resultado será un disco de una sola sesión. Este es el procedimiento habitual para añadir datos tras la escritura inicial.

Una cierta cantidad de espacio en el medio se usa en cada sesión al finalizar e iniciar sesiones; por tanto, se deben añadir sesiones con grandes cantidades de datos para optimizar el espacio del DVD. El número de sesiones está limitado a 154 para un DVD+R, aproximadamente 2.000 para un DVD-R y 127 para un DVD+R de doble capa.

18.7.8. Para mayor información

Para más información sobre un DVD,puede ejecutar el comando dvd+rw-mediainfo /dev/cd0 con el disco en la unidad.

Tiene más información sobre dvd+rw-tools en la manual growisofs(1), en el sitio web de dvd+rw-tools y en los archivos de la lista de correos de cdwrite.

Si va a enviar un informe de problemas es imperativo que adjunte la salida que dvd+rw-mediainfo produjo al grabar (o no grabar) el medio. Sin esta salida será prácticamente imposible ayudarle.

18.8. Creación y uso de disquetes (floppies)

Poder almacenar datos en discos flexibles es útil algunas veces, por ejemplo cuando no se tiene cualquier otro medio de almacenamiento extraible o cuando se necesita transferir una cantidad pequeña de datos a otro sistema.

Esta sección explicará cómo usar disquetes en FreeBSD. Cubrirá principalmente el formateo y utilización de disquetes DOS de 3.5 pulgadas, pero los conceptos son similares en otros formatos de disquete.

18.8.1. Formateo de disquetes

18.8.1.1. El dispositivo

El acceso a los disquetes se efectúa a través de entradas en /dev, igual que en otros dispositivos. Para acceder al disquete "crudo" (raw) en versiones 4.X y anteriores, se usa /dev/fdN, donde N representa el número de unidad, generalmente 0, o /dev/fdNX, donde X representa una letra.

En versiones 5.0 o posteriores, simplemente use /dev/fdN.

18.8.1.1.1. El tamaño de disco en versiones 4.X y anteriores

También existen dispositivos /dev/fdN.tamaño, donde tamaño es el tamaño del disquete en kilobytes. Estas entradas se usan durante el formateo a bajo nivel para determinar el tamaño del disco. En los siguientes ejemplos se usará el tamaño de 1440kB.

Algunas veces las entradas bajo /dev tendrán que ser (re)creadas. Para ello, ejecute:

# cd /dev && ./MAKEDEV "fd*"
18.8.1.1.2. El tamaño de disco en versiones 5.0 y posteriores

En 5.0, devfs(5) administrará automáticamente los nodos de dispositivo en /dev, así que el uso de MAKEDEV no es necesario.

El tamaño de disco deseado se pasa a fdformat(1) mediante la bandera -f. Los tamaños soportados aparecen en fdcontrol(8), pero tenga muy en cuenta que 1440kB es el que funciona mejor.

18.8.1.2. Formatear

Un disquete necesita ser formateado a bajo nivel antes de poder usarse. Esto suele hacerlo el fabricante, pero el formateo es una buena manera de revisar la integridad del medio. Aunque es posible forzar tamaños de disco más grandes (o pequeños), 1440kB es para lo que la mayoría de los disquetes están diseñados.

Para formatear un disquete a bajo nivel debe usar fdformat(1). Esta utilidad espera el nombre del dispositivo como argumento.

Tome nota de cualquier mensaje de error, ya que éstos pueden ayudarle a determinar si el disco está bien o mal.

18.8.1.2.1. Formateo en versiones 4.X y anteriores

Use el dispositivo /dev/fdN.tamaño para formatear el disquete. Inserte un disco de 3'5 pulgadas en su unidad y ejecute:

# /usr/sbin/fdformat /dev/fd0.1440
18.8.1.2.2. Formateo en versiones 5.0 y posteriores

Use el dispositivo /dev/fdN para formatear el disquete. Inserte un disco de 3'5 pulgadas en su unidad y ejecute:

# /usr/sbin/fdformat -f 1440 /dev/fd0

18.8.2. La etiqueta de disco

Tras un formato del disco a bajo nivel necesitará colocar una etiqueta de disco en él. Esta etiqueta de disco será destruida más tarde, pero es necesaria para que el sistema determine el tamaño del disco y su geometría.

La nueva etiqueta de disco ocupará todo el disco, y contendrá toda la información apropiada sobre la geometría del disquete. Los valores de geometría para la etiqueta de disco están en /etc/disktab.

Ejecute disklabel(8) así:

# /sbin/disklabel -B -r -w /dev/fd0 fd1440

Desde FreeBSD 5.1-RELEASE bsdlabel(8) reemplazó al viejo programa disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parámetros obsoletos; en el ejemplo de arriba la opción -r no debe usarse. Para mayor información consulte la página de manual de bsdlabel(8).

18.8.3. El sistema de ficheros

Ahora el disquete está listo para ser formateado a alto nivel. Esto colocará un sistema de ficheros nuevo en el disco y permitirá a FreeBSD leer y escribir en el disco. Después de crear el sistema de ficheros se destruye la etiqueta de disco, así que si desea reformatearlo, tendrá que recrear la etiqueta de disco.

El sistema de ficheros del disquete puede ser UFS o o FAT. FAT suele ser una mejor opción para disquetes.

Para formatear un disquete ejecute:

# /sbin/newfs_msdos /dev/fd0

El disco está para su uso.

18.8.4. Uso de un disquete

Para usar el disquete móntelo con mount_msdos(8) (en versiones 4.X y anteriores) o con mount_msdosfs(8) (en versiones 5.X o posteriores). También se puede usar emulators/mtools.

18.9. Creación y uso de cintas de datos

Los principales medios de cinta son 4mm, 8mm, QIC, mini-cartridge y DLT.

18.9.1. 4mm (DDS: Digital Data Storage)

Las cintas de 4mm están reemplazando a las QIC como los medios de respaldo más frecuentes en estaciones de trabajo. Esta tendencia se aceleró en gran medida cuando Conner adquirió Archive, un fabricante líder de unidades QIC, y abandonó la producción de unidades QIC. Las unidades de 4mm son pequeñas y silenciosas pero no tienen la reputación de fiabilidad de la que disfrutan las unidades de 8mm. Los cartuchos son más baratos y más pequeños (3 x 2 x 0.5 pulgadas, 76 x 51 x 12 mm) que los cartuchos de 8mm. En el caso de las cintas de 4mm, igual que las de 8mm, tienen un cabezal con una vida comparativamente más corta. Ambos utilizan el escaneado en espiral.

El ancho de datos de estas unidades comienza por aprox. 150 kB/s, con un pico de aprox. ~500 kB/s. La capacidad de datos va de los 1'3 GB a 2'0 GB. La compresión por hardware, disponible con la mayoría de estas unidades, dobla aproximadamente la capacidad. Existen unidades de biblioteca de cinta multi-unidad con 6 unidades en un solo armario y cambio de cinta automático. Las capacidades de estas bibliotecas alcanzan los 240 GB.

El estándar DDS-3 soporta capacidades de cinta de hasta 12 GB (o 24 GB con compresión).

Las unidades de 4mm, igual que las unidades de 8mm, utilizan escaneo en espiral. Tanto unas como otras tienen las mismas ventajas y desventajas.

Las cintas deben renovarse por otras después de 2,000 pasadas ó 100 respaldos completos.

18.9.2. 8mm (Exabyte)

Las cintas de 8mm son las unidades de cinta SCSI más comunes; son la mejor opción de cintas reemplazables y eso hace que las unidades de cinta Exabyte 8mm de 2 GB sean casi omnipresentes. Las unidades de 8mm son fiables, prácticas y silenciosas. Los cartuchos son baratos y bastante pequeños (4.8 x 3.3 x 0.6 pulgadas; 122 x 84 x 15 mm). Una desventaja de las cintas de 8mm es la vida relativamente corta del cabezal y de la propia cinta debido a la alta tasa de movimiento relativo de la cinta por los cabezales.

El ancho de datos varía de aprox. 250 kB/s hasta los 500 kB/s. La capacidad va desde los 300 MB hasta los 7 GB. La compresión por hardware, disponible con la mayoría de estas unidades, dobla aproximadamente la capacidad. Estas unidades están disponibles como unidades solas o como unidades de biblioteca de cinta multi-unidad con 6 unidades y 120 cintas en un solo armario. Las cintas las cambia automáticamente la unidad. La capacidad de dichas bibliotecas alcanza los 840+ GB.

El modelo Exabyte "Mammoth" soporta 12 GB en una cinta (24 GB con compresión) y cuesta aproximadamente el doble que las unidades de cinta convencionales.

Los datos se graban en cinta utilizando escaneo en espiral. Las cabezas se posicionan en ángulo en relación al medio (6 grados aproximadamente). La cinta se envuelve cerca de 270 grados en el cilindro que soporta las cabezas. El cilindro gira mientras la cinta se desliza sobre el cilindro. El resultado es una alta densidad de datos y pistas almacenadas muy pegadas, dispuestas en ángulo a través de la cinta de un extremo al otro.

18.9.3. QIC

Las cintas y unidades QIC-150 son, quizás, las unidades y medios de cinta más comunes. Las unidades de cinta QIC son las unidades de respaldo "serias" menos caras. La desventaja es el coste del medio. Las cintas QIC son caras comparadas con las cintas de 8mm o de 4mm, hasta 5 veces el precio de almacenamiento de datos por GB. No obstante, si sus necesidades pueden satisfacerse con media docena de cintas, QIC tal vez sea la decisión correcta. QIC es la unidad de cinta más común. Casi en todas partes tienen una unidad QIC de una u otra densidad. Y ese es el problema, QIC ofrece un enorme número de densidades en cintas físicamente similares (algunas veces idénticas). Las unidades QIC son cualquier cosa menos silenciosas. Hacen bastante ruido antes de iniciar la grabación de datos y son claramente audibles siempre que leen, escriben o hacen una búsqueda. Las cintas QIC miden 6 x 4 x 0.7 pulgadas; 152 x 102 x 17 mm.

El ancho de datos varía de aprox. 150 kB/s a aprox. 500 kB/s. La capacidad de datos varía de 40 MB a 15 GB. La compresión por hardware existe en muchas de las nuevas unidades QIC. Las unidades QIC se ven con menos frecuencia y además están siendo suplantadas por unidades DAT.

Los datos se graban en la cinta en pistas. Las pistas discurren a lo largo del extenso eje de la cinta de un extremo al otro. El número de pistas, y por lo tanto el ancho de una pista varía según la capacidad de la cinta. La mayoría, si no todas las unidades nuevas, ofrecen compatibilidad con modelos anteriores al menos para lectura (y también en muchos casos de escritura). QIC tiene buena reputación en cuanto a seguridad de los datos (las piezas mecánicas son más simples y más robustas que en las unidades de búsqueda en espiral).

Las cintas deben ser sustituirse por otras después de 5,000 respaldos.

18.9.4. DLT

DLT tiene la tasa de transferencia de datos más rápida de todos los tipos de unidades mostradas aquí. La cinta de 1/2" (12'5mm) está alojada en un cartucho de un solo cilindro (4 x 4 x 1 pulgadas; 100 x 100 x 25 mm). El cartucho tiene una puerta giratoria a lo largo de todo un lado del cartucho. El mecanismo de la unidad abre esta puerta para extraer el "líder". El "lider" de la cinta tiene un agujero oval que la unidad utiliza para "enganchar" la cinta. El cilindro de levantamiento está dentro de la unidad de cinta. Los demás cartuchos descritos en este texto (los cartuchos de 9 pistas son la única excepción) tienen el cilindro proveedor alojados dentro del propio cartucho de cinta.

El ancho de datos es aproximadamente de 1'5 MB/s, tres veces el ancho de unidades de cinta de 4mm, de 8mm o QIC. Las capacidades de datos varían entre 10 GB y 20 GB en una sola unidad. Hay unidades multicinta y con cargadores multi-cinta, y bibliotecas multiunidad que pueden albergar de 5 a 900 cintas con una a 20 unidades, con lo que pueden alcanzar desde 50 GB hasta 9 TB de almacenamiento.

Con compresión, el formato DLT Type IV soporta hasta 70 GB de capacidad.

Los datos se almacenan en cinta en pistas paralelas a la dirección del movimiento de la cinta (como en las cintas QIC). Se escriben dos pistas al mismo tiempo. El tiempo de vida de lectura/escritura es relativamente largo. Una vez que la cinta no hay movimiento relativo entre las cabezas y la cinta.

18.9.5. AIT

AIT es un nuevo formato de Sony, y puede almacenar hasta 50 GB (con compresión) por cinta. Las cintas contienen chips de memoria que retienen un índice de los contenidos de la cinta. Este índice puede ser leido rápidamente para determinar la posición de los ficheros en la cinta, en lugar de los varios minutos que requeriría el proceso con otras cintas. SAMS:Alexandria puede gestionar más de 40 bibliotecas de cinta AIT, comunicándose directamente con el chip de memoria de la cinta para desplegar el contenido en pantalla, determinar qué ficheros fueron respaldados a qué cinta, ubicar la cinta correcta, cargarla y restaurar los datos desde la cinta.

Las bibliotecas como ésta cuestan alrededor de 20.000 dólares, lo que las aleja bastante del alcance de los aficionados.

18.9.6. Estreno de una cinta

La primera vez que trate de leer o escribir una cinta nueva, completamente en blanco, la operación fallará. El mensaje de la consola se parecerá al siguiente:

sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0):  Logical unit is in process of becoming ready

La cinta no contiene un bloque identificador (bloque número 0). Todas las unidades de cinta QIC desde la adopción del estándar QIC-525 escriben un bloque identificador en la cinta. Existen dos soluciones:

  • mt fsf 1 hace que la unidad de cinta escriba un bloque identificador a la cinta.

  • Use el botón del panel frontal para expulsar la cinta.

    Inserte nuevamente la cinta y haga un dump de datos a la cinta.

    dump devolverá DUMP: End of tape detected y la consola mostrará HARDWARE FAILURE info:280 asc:80,96.

    Rebobine la cinta usando: mt rewind.

    A partir de ese momento podrá utilizar la cinta.

18.10. Respaldos en disquetes

18.10.1. ?Puedo utilizar disquetes para respaldar mis datos?

Los disquetes no son realmente el medio ideal para hacer respaldos debido a que:

  • El medio no es fiable, especialmente después de largos periodos de tiempo.

  • El respaldo y la restauración es muy lento.

  • Tienen una capacidad muy limitada (los dís de respaldar un disco duro entero en una docena de disquetes pasaron hace mucho).

De todas maneras, si no tiene otro método para respaldar sus datos los disquetes son una mejor solución que no tener ningún respaldo.

Si tiene que utilizar disquetes asegúrese de usar discos de buena calidad. Los disquetes que han estado almacenados en la oficina durante un par de años son una mala elección. Lo mejor sería que utilizara discos nuevos de un fabricante respetado.

18.10.2. ?Cómo respaldo mis datos a discos flexibles?

La mejor manera de respaldar a un disquete es usar tar(1) con la opción -M (multi volumen), que permite que el respaldo se guarde en varios disquetes.

Para respaldar todos los ficheros en el directorio actual y sus subdirectorios use esto (como root):

# tar Mcvf /dev/fd0 *

Cuando el primer disquete esté lleno tar(1) le solicitará que inserte el siguiente volumen (debido a que tar(1) es independiente del medio se refiere a volúmenes; en éste contexto se refiere a disquetes).

Prepare volume #2 for /dev/fd0 and hit return:

Esto se repite (con el número de volumen incrementando) hasta que todos los ficheros especificados hayan sido archivados.

18.10.3. ?Puedo comprimir mis respaldos?

Desafortunadamente, tar(1) no permite el uso de la opción -z para archivos multi-volumen. Puede, por supuesto, hacer un gzip(1) a todos los ficheros, mandarlos con tar(1) a los disquetes, y después hacer gunzip(1) a los archivos

18.10.4. ?Cómo recupero mis respaldos?

Para restaurar el archivo completo use:

# tar Mxvf /dev/fd0

Hay dos maneras que puede usar para restaurar ficheros específicos. La primera, puede comenzar por el primer disco flexible y usar:

# tar Mxvf /dev/fd0 nombredefichero

La utilidad tar(1) le pedirá que inserte el resto de disquetes hasta que encuentre el fichero requerido.

La segunda manera es: si sabe en qué disco se encuentra el fichero puede insertar ese disco y usar el comando expuesto arriba. Tenga en cuenta que si el primer fichero en el disquete es la continuación del anterior tar(1) le advertirá que no puede restaurarlo incluso si no se lo ha solicitado

18.11. Bases para respaldos

Los tres principales programas para respaldos son dump(8), tar(1) y cpio(1).

18.11.1. Dump y Restore

Los programas UNIX® que se han usado durante muchos años para hacer copias de seguridad son dump y restore. Operan en las unidades como una colección de bloques de disco, bajo la abstracción de ficheros, los enlaces y directorios creados por el sistema de ficheros. dump respalda un sistema de ficheros completo en un dispositivo. No es capaz de respaldar solamente parte de un sistema de ficheros o un árbol de directorios que se extienda por más de un sistema de ficheros. dump no escribe ficheros y directorios a cinta, escribe los bloques de datos "crudos" (raw) que conforman los ficheros y directorios.

Si utiliza dump en su directorio raíz, no respaldará /home, /usr ni muchos otros directorios, ya que suelen ser puntos de montaje de otros sistemas de ficheros o enlaces simbólicos hacia dichos sistemas de ficheros.

dump tiene peculiaridades que se mantienen desde sus primeros días en la Version 6 de AT&T UNIX (alrededor de 1975). Los parámetros por defecto son los adecuados para cintas de 9 pistas (6250 bpi), pero no para los medios de alta densidad disponibles hoy en día (hasta 62,182 ftpi). Estos valores por defecto deben obviarse en la línea de comandos para aprovechar la capacidad de las unidades de cinta actuales.

También es posible respaldar datos a través de la red a una unidad de cinta conectada a otra computadora con rdump y rrestore. Ambos programas dependen de rcmd(3) y ruserok(3) para acceder a la unidad de cinta remota. Por consiguiente, el usuario que realiza el respaldo debe estar listado en el fichero .rhosts de la computadora remota. Los argumentos para rdump y rrestore deben ser adecuados para usarse en la computadora remota. Cuando realice un rdump desde FreeBSD a una unidad de cinta Exabyte conectada a una Sun llamada komodo, use:

# /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

Advertencia: existen implicaciones de seguridad al permitir autentificación mediante .rhosts. Le recomendamos que evalúe la situación cuidadosamente.

También es posible usar dump y restore de una forma más segura a través de ssh.

Ejemplo 1. Utilizando dump a través de ssh
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
          usuario@maquinaobjetivo.ejemplo.com dd of=/misficherosgrandes/dump-usr-l0.gz

Uso del método integrado de dump, configurando la variable de ambiente RSH:

Ejemplo 2. Uso de dump a través de ssh con RSH configurada
# RSH=/usr/bin/ssh /sbin/dump -0uan -f usuario@maquinaobjetivo.ejemplo.com:/dev/sa0 /usr

18.11.2. tar

tar(1) también es de la época de la Version 6 de AT&T UNIX (alrededor de 1975). tar trabaja en cooperación con el sistema de ficheros; escribe ficheros y directorios a cinta. tar no soporta el rango completo de opciones que ofrece cpio(1), pero no requiere el inusual comando de pipeline que utiliza cpio.

En FreeBSD 5.3 y posteriores, tiene a su disposición GNU tar y el comando por defecto bsdtar. La versión GNU puede ser invocada mediante gtar. Soporta dispositivos remotos mediante la misma sintaxis que rdump. Para hacer un tar a una unidad de cinta conectada a una Sun llamada komodo, use:

# /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1

Puede hacer lo mismo con o con bsdtar usando un "pipe" y rsh para mandar los datos a una unidad de cinta remota.

# tar cf - . | rsh nombredemaquina dd of=dispositivo-de-cinta obs=20b

Si le preocupa la seguridad del proceso de hacer un respaldo a través de una red debe usar ssh en lugar de rsh.

18.11.3. cpio

cpio(1) es el programa de intercambio de archivos de cinta para medios magnéticos. cpio tiene opciones (entre muchas otras) para realizar intercambio de bytes, escribir un número diferente de formatos de archivo y hacer "pipe" de datos hacia otros programas. Esta última opción hace de cpio una elección excelente para medios de instalación. cpio no sabe cómo recorrer el árbol de directorios, así que debe facilitarle una lista de directorios a través de stdin.

cpio no permite respaldos a través de la red. Puede usar un pipe y rsh para mandar los datos a una unidad de cinta remota.

# for f in lista_directorios; do

# find $f << backup.list

# done
# cpio -v -o --format=newc < backup.list | ssh usuario@máquina "cat > dispositivo_de_respaldo"

Donde lista_directorios es la lista de directorios que desea respaldar, usuario@máquina es la combinación usuario/nombre de equipo que realizará el respaldo y dispositivo_de_respaldo es donde el respaldo se escribirá efectivamente (por ejemplo /dev/nsa0).

18.11.4. pax

pax(1) es la respuesta IEEE/POSIX® a tar y cpio. A través de los años las diversas versiones de tar y cpio se han vuelto ligeramente incompatibles, así que en lugar de pelear por hacerlo completamente estándar, POSIX® creó una nueva utilidad de archivado. pax trata de leer y escribir muchos de los diversos formatos de cpio y tar, además de nuevos formatos propios. Su conjunto de comandos se parece más a cpio que a tar.

18.11.5. Amanda

Amanda (Advanced Maryland Network Disk Archiver) es un sistema de respaldos cliente/servidor, en lugar de un solo programa. Un servidor Amanda respaldará a una sola unidad de cinta cualquier cantidad de computadoras que tengan clientes Amanda y una conexión de red al servidor Amanda. Un problema común en sitios con gran cantidad de discos grandes es que la cantidad de tiempo requerida para respaldar los datos directamente a cinta excede la cantidad de tiempo disponible para la tarea. Amanda resuelve este problema. Amanda puede usar un "disco intermedio" para respaldar varios sistemas de ficheros al mismo tiempo. Amanda crea "conjuntos de archivo", esto es, un grupo de cintas usadas durante un periodo de tiempo para crear respaldos completos de todos los sistemas de ficheros listados en el fichero de configuración de Amanda. El "conjunto de archivo" también contiene respaldos incrementales nocturnos (o diferenciales) de todos los sistemas de ficheros. Para restaurar un sistema de ficheros dañado hace falta el respaldo completo más reciente y los respaldos incrementales.

El fichero de configuración ofrece un control exhaustivo de los respaldos y del tráfico de red que Amanda genera. Amanda usará cualquiera de los programas de respaldo mencionados arriba para escribir los datos a cinta. Puede instalar Amanda como paquete y como port. No forma parte del sistema base.

18.11.6. No hacer nada

"No hacer nada" no es un programa, pero es la estrategia de respaldo más extendida. No tiene coste. No hay un calendario de respaldos a seguir. Simplemente hay que decir que no. Si algo le sucediera a sus datos sonría y acostúmbrese a su nueva situación.

Si su tiempo y sus datos valen poco o nada, entonces "no hacer nada" es el programa de respaldo más adecuado para usted. Pero cuidado, UNIX® es una herramienta muy poderosa y puede suceder que dentro de seis meses tenga un montón de ficheros que sean valiosos para usted.

"No hacer nada" es el método correcto de respaldo para /usr/obj y otros árboles de directorios que pueden ser fácilmente recreados por su computadora. Un ejemplo son los archivos que forman la versión HTML o PostScript® de este manual. Estos documentos han sido generados desde ficheros SGML. Crear respaldos de los archivos HTML o PostScript® no es necesario dado que los ficheros SGML se respaldan regularmente.

18.11.7. ?Cuál es el mejor programa de respaldos?

dump(8). Y no hay más que hablar. Elizabeth D. Zwicky realizó pruebas de estrés a a todos los programas de copia de seguridad aquí expuestos. La elección clarísima para preservar todos sus datos y todas las peculiaridades de sus sistemas de ficheros UNIX® es dump. Elizabeth creó sistemas de ficheros conteniendo una gran variedad de condiciones inusuales (y algunos no tan inusuales) y probó cada programa haciendo un respaldo y restaurando esos sistemas de ficheros. Esas peculiaridades incluían: ficheros con y un bloque nulo, ficheros con caracteres extraños en sus nombres, ficheros que no se podían leer ni escribir, dispositivos, ficheros que cambiaban de tamaño durante el respaldo, ficheros que eran creados/borrados durante el respaldo y cosas así. Elizabeth presentó los resultados en LISA V en octubre de 1991. Consulte torture-testing Backup and Archive Programs.

18.11.8. Procedimiento de restauración de emergencia

18.11.8.1. Antes del desastre

Solamente existen cuatro pasos que debe realizar en preparación de cualquier desastre que pudiera ocurrir.

Primero, imprima la etiqueta de disco de cada uno de sus discos (disklabel da0 | lpr), su tabla de sistemas de ficheros (/etc/fstab) y todos los mensajes de arranque, dos copias de cada uno.

Segundo, asegúrese que los disquetes de rescate (boot.flp y fixit.flp) tienen todos sus dispositivos. La manera más fácil de revisarlo es reiniciar su máquina con el disquete en la unidad y revisar los mensajes de arranque. Si todos sus dispositivos aparecen en la lista y funcionan, pase al tercer paso.

Si ha habido algún problema tiene que crear dos disquetes de arranque personalizados, que deben tener un kernel que pueda montar todos sus discos y acceder a su unidad de cinta. Estos discos deben contener: fdisk, disklabel, newfs, mount y cualquier programa de respaldo que utilice. Estos programas deben estar enlazados estáticamente. Si usa dump, el disquete debe contener restore.

Tercero, use cintas de respaldo regularmente. Cualquier cambio que haga después de su último respaldo puede perderse irremediablemente. Proteja contra escritura las cintas de respaldo.

Cuarto, pruebe los disquetes (ya sea boot.flp y fixit.flp o los dos discos personalizados que creó en el segundo paso) y las cintas de respaldo. Documente el procedimiento. Almacene estas notas con los discos de arranque, las impresiones y las cintas de respaldo. Estará tan perturbado cuando restaure su sistema que las notas pueden pueden evitar que destruya sus cintas de respaldo. (?Como? en lugar de tar xvf /dev/sa0, puede teclear accidentalmente tar cvf /dev/sa0 y sobreescribir su cinta).

Como medida adicional de seguridad haga discos de inicio y dos cintas de respaldo cada vez. Almacene una de cada en una ubicación remota. Una ubicación remota NO es el sótano del mismo edificio. Muchas firmas alojadas en el World Trade Center aprendieron esta leccón de la manera más difícil. Esa ubicación remota debe estar separada físicamente de sus computadoras y unidades de disco por una distancia significativa.

Ejemplo 3. Un "script" para la creación de discos flexibles de arranque
#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin

fdformat -q fd0
if [ $? -ne 0 ]
then
	 echo "Bad floppy, please use a new one"
	 exit 1
fi

# place boot blocks on the floppy
#
disklabel -w -B /dev/fd0c fd1440

#
# newfs the one and only partition
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

#
# mount the new floppy
#
mount /dev/fd0a /mnt

#
# create required directories
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt			# for the root partition
mkdir /mnt/tmp
mkdir /mnt/var

#
# populate the directories
#
if [ ! -x /sys/compile/MINI/kernel ]
then
	 cat &lt;&lt; EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#
# MINI - A kernel to get FreeBSD onto a disk.
#
machine         "i386"
cpu             "I486_CPU"
ident           MINI
maxusers        5

options         INET                    # needed for _tcp _icmpstat _ipstat
                                        #            _udpstat _tcpstat _udb
options         FFS                     #Berkeley Fast File System
options         FAT_CURSOR              #block cursor in syscons or pccons
options         SCSI_DELAY=15           #Be pessimistic about Joe SCSI device
options         NCONS=2                 #1 virtual consoles
options         USERCONFIG              #Allow user configuration with -c XXX

config          kernel	root on da0 swap on da0 and da1 dumps on da0

device          isa0
device          pci0

device          fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
device          fd0	at fdc0 drive 0

device          ncr0

device          scbus0

device          sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
device          npx0	at isa? port "IO_NPX" irq 13 vector npxintr

device          da0
device          da1
device          da2

device          sa0

pseudo-device   loop            # required by INET
pseudo-device   gzip            # Exec gzipped a.out's
EOM
	 exit 1
fi

cp -f /sys/compile/MINI/kernel /mnt

gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore

gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync

cp /root/.profile /mnt/root

cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV

chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore

#
# create the devices nodes
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /

#
# create minimum file system table
#
cat > /mnt/etc/fstab &lt;&lt;EOM
/dev/fd0a    /    ufs    rw  1  1
EOM

#
# create minimum passwd file
#
cat > /mnt/etc/passwd &lt;&lt;EOM
root:*:0:0:Charlie &amp;:/root:/bin/sh
EOM

cat > /mnt/etc/master.passwd &lt;&lt;EOM
root::0:0::0:0:Charlie &amp;:/root:/bin/sh
EOM

chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

#
# umount the floppy and inform the user
#
/sbin/umount /mnt
echo "The floppy has been unmounted and is now ready."

18.11.8.2. Después del desastre

La pregunta clave es: ?sobrevivió su hardware? Ha estado haciendo respaldos regularmente, así que no hay necesidad de preocuparse por el software.

Si el hardware ha sufrido daños los componentes deben reemplazarse antes de intentar de usar su sistema.

Si su hardware está bien revise sus discos de arranque. Si usa disquetes de arranque personalizados arranque en modo monousuario (teclée -s en el en el "prompt" de arranque boot:). Sáltese el siguiente párrafo.

Si utiliza usando los discos boot.flp y fixit.flp, siga leyendo. Inserte el disco boot.flp en la primera unidad de disquete y arranque la máquina. El menú de instalación original se desplegará en pantalla. Seleccione la opción Fixit—​Repair mode with CDROM or floppy.. Inserte el disco fixit.flp cuando se le pida. Tanto restore como los demás programas que necesitará están en /mnt2/rescue (/mnt2/stand para versiones de FreeBSD anteriores a 5.2).

Recupere cada sistema de ficheros por separado.

Trate de montar (por ejemplo mount /dev/da0a /mnt) la partición raíz de su primer disco. Si la etiqueta del disco ha sufrido daños use disklabel para reparticionar y etiquetar el disco de forma que coincida con la etiqueta que imprimió y guardó previamente. Use newfs para crear de nuevo sus sistemas de ficheros. Monte de nuevo la partición raíz del disquete en modo lectura/escritura (mount -u -o rw /mnt). Ejecute su programa de respaldo y utilice las cintas de respaldo para restaurar sus datos en este sistema de ficheros (restore vrf /dev/sa0). Desmonte el sistema de ficheros (umount /mnt). Repita el proceso con cada sistema de ficheros que sufrió daños.

Una vez que su sistema esté en marcha respalde sus datos en cintas nuevas. Cualquiera que haya sido la causa de la caída o pérdida de datos puede suceder de nuevo. Una hora más que gaste ahora puede ahorrarle mucho sufrimiento más adelante.

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

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.

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 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 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 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 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.

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 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 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 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 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

18.13. Instantáneas ("snapshots") de sistemas de ficheros

FreeBSD 5.0 ofrece una característica relacionada con Soft Updates: las instantáneas del sistema de ficheros.

Las instantáneas permiten a un usuario crear imágenes de uno o más sistemas de ficheros dados, y tratarlas como un fichero. Los ficheros de instantánea deben crearse en el sistema de ficheros en el que se realiza la acción, y un usuario puede crear hasta 20 (veinte) instantáneas por sistema de ficheros. Las instantáneas activas se graban en el superbloque, lo que hace que sigan ahí independientemente de montajes, remontajes y reinicios del sistema. Cuando ya no necesite una instantánea puede borrarla con rm(1). Las instantáneas pueden borrarse en cualquier orden pero puede que no pueda recuperar todo el espacio debido a que otra instantánea puede reclamar algunos bloques liberados.

La bandera inalterable de fichero snapshot se activa con mksnap_ffs(8) después de la creación inicial de un fichero de instantánea. unlink(1) hace una excepción con los ficheros de instantánea, ya que permite que se les borre.

Las instantáneas se crean con mount(8). Veamos un ejemplo. Vamos a colocar una instantánea de /var en /var/snapshot/snap:

# mount -u -o snapshot /var/snapshot/snap /var

También puede usar mksnap_ffs(8) para crear una instantánea:

# mksnap_ffs /var /var/snapshot/snap

Si busca ficheros de instantánea en un sistema de de ficheros (por ejemplo /var) puede usar find(1):

# find /var -flags snapshot

Una instantánea tiene distintos usos:

  • Algunos administradores usan un fichero de instantánea como respaldo, puesto que la instantánea puede guardarse en CD o cinta.

  • Integridad de ficheros; fsck(8) puede ejecutarse en una instantánea. Asumiendo que el sistema de ficheros estuviera limpio cuando se montó se debe obtener un resultado limpio (e intacto). En esencia el proceso fsck(8) hace esto mismo en segundo plano.

  • Ejecución de dump(8) en la instantánea. Se obtendrá un dump consistente con el sistema de ficheros y los sellos de hora de la instantánea. dump(8) también puede leer una instantánea, crear una imagen dump y eliminar la instantánea en un comando usando la opción -L.

  • Ejecutar un mount(8) contra la instantánea como una imagen congelada del sistema de ficheros. Para montar la instantánea /var/snapshot/snap ejecute:

    # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
    # mount -r /dev/md4 /mnt

Podrá recorrer la jerarquía de su sistema de ficheros /var congelado montado en /mnt. Todo estará en el mismo estado en el que estaba cuando creó la instantánea. La única excepción es que cualquier instantánea anterior aparecerá como un fichero de longitud cero. Cuando haya acabado de usar una instantánea puede desmontarla con:

# umount /mnt
# mdconfig -d -u 4

Para más información sobre softupdates e instantáneas de sistemas ficheros, incluyendo textos técnicos, visite el sitio web de Marshall Kirk McKusick: http://www.mckusick.com/.

18.14. Cuotas en sistemas de ficheros

Las cuotas son una opción del sistema operativo que le permite limitar la cantidad de espacio en disco y/o el número de fichero que un usuario o miembros de un grupo pueden crear en el sistema, pudiendo además hacerlo de forma independiente en cada sistema de ficheros. Suele usarse principalmente en sistemas de tiempo compartido, donde se busca limitar la cantidad de recursos que cualquier usuario o grupo pueden utilizar. Esto evitará que un usuario o un grupo de usuarios consuma todos el espacio disponible en disco.

18.14.1. Configuración del sistema para habilitar cuotas de disco

Antes de intentar configurar el uso de cuotas de disco hay que asegurarse de que las cuotas están activadas en el kernel. La siguiente línea debe estar en el fichero de de configuración del kernel:

options QUOTA

El kernel GENERIC no lo tiene activado por defecto, así que tendrá que configurar, compilar e instalar un kernel personalizado para poder usar cuotas de disco. Por favor, consulte el Configuración del kernel de FreeBSD para más información sobre la configuración del kernel.

A continuación tendrá que habilitar las cuotas de disco en /etc/rc.conf. Añadale la siguiente línea:

enable_quotas="YES"

Hay una variable que le permitirá efectuar un control más exhaustivo sobre el arranque de cuotas. Normalmente se revisa la integridad de cuotas de cada sistema de ficheros en el arranque; el responsable es quotacheck(8). quotacheck(8) se asegura de que los datos que hay en su base de datos de cuotas reflejen realmente los datos del sistema de ficheros. Es un proceso que lleva mucho tiempo y que afectará significativamente al tiempo que tardará su sistema en arrancar. Si desea saltarse ese paso puede usar una variable al efecto en /etc/rc.conf:

check_quotas="NO"

Para concluir tendrá que editar /etc/fstab para habilitar las cuotas de disco para cada sistema de ficheros. Es aquí donde podrá habilitar cuotas por usuario, por grupo, o ambos en todos sus sistemas de ficheros.

Para habilitar cuotas por usuario en un sistema de ficheros añada la opción userquota al campo de opciones en la entrada de /etc/fstab que corresponda al sistema de ficheros en el que quiere habilitar las cuotas. Veamos un ejemplo:

/dev/da1s2g   /home    ufs rw,userquota 1 2

En el caso de las cuotas de grupo es muy similar. Use la opción groupquota en lugar de userquota. Para habilitar cuotas por usuario y por grupo modifique la entrada de este modo:

/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

Por defecto los ficheros de cuota se guardan en el directorio raíz del sistema de ficheros con los nombres quota.user y quota.group para cuotas de usuario y grupo respectivamente. Consulte fstab(5) para más información. Aunque la página de manual de fstab(5) diga que puede especificar otra ubicación para los ficheros de cuota, no se recomienda hacerlo debido a que las diversas herramientas de gestió cuotas no parecen sobrellevar esto adecuadamente.

Hecho todo esto puede reiniciar su sistema con el nuevo kernel. /etc/rc ejecutará automáticamente los comandos apropiados para crear los ficheros de cuota iniciales que requieran todas las entradas en en /etc/fstab, así que no hay necesidad de crear ficheros de cuota de longitud cero.

En el curso normal de operaciones no se le debería pedir que ejecute quotacheck(8), quotaon(8) o quotaoff(8) manualmente. Sin embargo, tal vez quiera leer sus páginas de manual para familiarizarse con su funcionamiento.

18.14.2. Configuración de límites de cuota

Una vez que tenga configurado su sistema para usar cuotas verifique que en realidad estén habilitadas. Una manera sencilla de hacer esto es ejecutar:

# quota -v

Debe ver un resumen de una sola línea de uso del disco y los límites de cuota actuales para cada sistema de ficheros donde estén habilitadas las cuotas.

Ahora puede iniciar la asignación de límites de cuota con edquota(8).

Tiene varias opciones para imponer límites en el espacio de disco que un usuario o grupo puede ocupar, y cuántos ficheros pueden crear. Puede limitar el uso de disco basándose en el espacio en disco (cuotas de bloque) o en el número de ficheros (cuotas de inodo) o una combinación de ambas. Cada uno de estos límites a su vez se divide en dos categorías: límites duros y suaves.

Un límite duro no puede ser excedido. Una vez que un usuario alcanza su límite duro no puede realizar más ubicaciones en el sistema de ficheros en cuestión. Por ejemplo, si el usuario tiene un límite duro de 500 kbytes en un sistema de ficheros y está utilizando 490 kbytes, el usuario solo puede ocupar otros 10 kbytes. Un intento de ocupar 11 kbytes más fallará.

Los límites suaves pueden excederse por un periodo Este periodo de tiempo recibe el nombre de periodo de gracia, que por defecto es una semana. Si un usuario sobrepasa su periodo de gracia el límite suave se convertirá en un límite duro y no se permitirán usos de disco adicionales. Cuando el usuario devuelve su cuota de uso de recursos a un punto por debajo de su límite suave el periodo de gracia se reinicia.

Veamos un ejemplo de uso de edquota(8). Si se usa edquota(8) se entra en el el editor declarado en la variable de entorno EDITOR, o en el editor vi si no ha modificado el valor por defecto de la variable EDITOR, para que pueda editar los límites de cuota.

# edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Debería ver dos líneas por cada sistema de ficheros que tenga habilitadas las cuotas. Una línea para los límites de bloque y una línea para límites de inodo. Por ejemplo, para elevar los límites de este usuario de un límite suave de 50 y un límite duro de 75 a un límite suave de 500 y un límite duro de 600, cambie:

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)

por:

/usr: kbytes in use: 65, limits (soft = 500, hard = 600)

Los nuevos límites de cuota se aplicarán en cuanto salga del editor.

Algunas veces se quieren activar límites de cuota en un rango de UIDs. Esto puede realizarse con la opción -p de edquota(8). Primero asigne el límite de cuota deseado a un usuario y luego ejecute edquota -p protouser startuid-enduid. Por ejemplo, si el usuario test tiene el límite de cuota deseado, el siguiente comando puede usarse para duplicar esos límites de cuota para los UIDs de 10,000 hasta 19,999:

# edquota -p test 10000-19999

Para más información consulte la página de manual edquota(8).

18.14.3. Revisión de los límites de cuota y uso de disco

Puede usar quota(1) o repquota(8) para revisar los límites de cuota y uso del disco. El comando quota(1) le permitirá revisar cuotas individuales de usuario o grupo y uso del disco. Un usuario puede sólamente examinar su propia cuota y la cuota de un grupo al que pertenezca. Sólamente el superusuario puede ver las cuotas de todos los usuarios y grupos. repquota(8) permite obtener un resumen de todas las cuotas y uso del disco de todos los sistemas de ficheros con cuotas habilitadas.

En el siguiente ejemplo vemos la salida de quota -v para un usuario que tiene límites de cuota en dos sistemas de ficheros.

Disk quotas for user test (uid 1002):
     Filesystem  usage    quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60

En el sistema de ficheros /usr del ejemplo este usuario está actualmente 15 kbytes sobre su límite suave de 50 kbytes y le quedan 5 días de su periodo de gracia. Observe el asterisco, * que indica que el usuario está actualmente por encima de su límite de cuota.

Normalmente los sistemas de ficheros en los que el usuario no esté utilizando espacio en disco no se mostrarán en la salida del comando quota(1), incluso si tiene un límite de cuota asignado para esos sistemas de fichero. La opción -v desplegará esos sistemas de ficheros, en nuestro ejemplo el sistema de ficheros /usr/var.

18.14.4. Cuotas en NFS

Las cuotas son impuestas por el subsistema de cuotas en el servidor NFS. El dæmon rpc.rquotad(8) facilita la información a quota(1) en los clientes NFS, permitiéndoles a los usuarios de esas máquinas ver sus estadísticas de cuota.

Habilite rpc.rquotad en /etc/inetd.conf del siguiente modo:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

Y reinicie inetd:

# kill -HUP `cat /var/run/inetd.pid`

18.15. Cifrado de particiones de disco

FreeBSD ofrece un alto grado de protección contra el acceso no autorizado a los datos. Los Permisos de fichero y MAC (Mandatory Access Control, controles de acceso obligatorio, consulte el Mandatory Access Control) ayudan a evitar que otros tengan acceso no autorizado a los datos mientras el sistema operativo está funcionando y la computadora está encendida. Sin embargo los permisos impuestos por el sistema operativo son irrelevantes si un atacante tiene acceso físico al sistema y puede simplemente mover el disco duro de la computadora a otro sistema para copiar y analizar datos sensibles.

Independientemente de cómo un atacante pueda conseguir acceso a un disco duro a a un sistema apagado, el cifrado de disco basado en GEOM (GEOM Based Disk Encryption, gbde) puede proteger los datos de los sistemas de ficheros del sistema incluso contra atacantes muy decididos y con recursos adecuados a su disposición. A diferencia de otros métodos de cifrado más difíciles de usar, que cifran únicamente ficheos individuales, gbde cifra sistemas de ficheros completos de forma transparente. Ni un solo texto en limpio llega a tocar el disco duro.

18.15.1. Habilitar gbde en el kernel

  1. Conviértase en root

    La configuración de gbde requiere privilegios de superusuario.

    % su -
    Password:
  2. Verifique la versión del sistema operativo

    gbde(4) requiere FreeBSD 5.0 o posterior.

    # uname -r
    5.0-RELEASE
  3. Añada soporte de gbde(4) al fichero de configuración de su kernel

    Añada la siguiente línea al fichero de configuración de su kernel con el editor que prefiera:

    options GEOM_BDE

    Configure, recompile e instale el kernel de FreeBSD. Este proceso se detalla en el Configuración del kernel de FreeBSD.

    Reinicie con el nuevo kernel.

18.15.2. Preparación del disco duro cifrado

El siguiente ejemplo asume que añade a su sistema un disco duro nuevo que contendrá una sola partición cifrada. Esta partición se montará como /private. gbde puede usarse también para cifrar /home y /var/mail, pero esto requeriría instrucciones más complejas que las que se pretenden dar en esta introducción.

  1. Añada el nuevo disco

    Instale el nuevo disco en el sistema como se explicó en la Añadir discos. En nuestro ejemplo hemos añadido una nueva partición de disco como /dev/ad4s1c. Los dispositivos /dev/ad0s1* representan particiones FreeBSD estándar que i existían previamente en el sistema.

    # ls /dev/ad*
    /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
    /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
    /dev/ad0s1a     /dev/ad0s1d     /dev/ad4
  2. Crée un directorio para los ficheros "lock" de gbde

    # mkdir /etc/gbde

    Los ficheros "lock" de gbde contienen información que gbde requiere para acceder a las particiones cifradas. Sin el acceso a los ficheros "lock"gbde no podrá descifrar los datos alojados en la partición cifrada sin una cantidad significativa de trabajo, tarea para la que además no le resultará de ayuda este software. Cada partición cifrada utiliza un fichero "lock" separado.

  3. Inicialice la partición gbde

    Una partición gbde debe inicializarse antes de que pueda utilizarse. Esta inicialización sólo debe hacerse una vez:

    # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

    gbde(8) abrirá su editor para que pueda configurar las opciones de configuración que se le presentarán en una plantilla. Para utilizar UFS1 o UFS2, ponga el sector_size a 2048:

    $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
    #
    # El tamaño de sector (sector size) es la unidad de datos más
    # pequeña que podrá leer o escribir.  Si la elige demasiado
    # pequeña reducirá el rendimiento y la cantidad de espacio
    # útil.  Si la elige demasiado grande puede hacer que los sistemas
    # de ficheros no funcionen.  512 es el tamaño mínimo y
    # siempre funciona.  Si va a usar UFS utilice
    #
    sector_size     =       2048
    [...]

    gbde(8) le pedirá dos veces que escriba la contraseña que debe usarse para asegurar los datos. La contraseña debe ser la misma las dos veces. La capacidad de gbde de proteger sus datos depende íntegramente de la calidad de la contraseña que elija.

    El fichero gbde init crea un fichero "lock" para su partición gbde, que en nuestro ejemplo está en /etc/gbde/ad4s1c.

    Es imprescindible que los ficheros "lock" de gbde deben respaldarse junto con el contenido de cualquier partición cifrada. Aunque la sola acció de borrar un fichero "lock" no puede evitar que un atacante motivado descifre una partición gbde sin el fichero "lock", el propietario legítimo no podrá acceder a los datos en la partición cifrada sin una cantidad notable de trabajo, que es necesario señalar que no entra dentro de las funciones de gbde(8) ni de su diseñador.

  4. Conecte al kernel la partición cifrada

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    Se le pedirá la contraseña que elijió al inicializar la partición cifrada. El nuevo dispositivo cifrado aparecerá en /dev como /dev/nombre_de_dispositivo.bde:

    # ls /dev/ad*
    /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
    /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
    /dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde
  5. Crée un sistema de ficheros en el dispositivo cifrado

    Una vez el dispositivo cifrado está conectado al kernel puede crear un sistema de ficheros en el dispositivo con newfs(8). Dado que es más rápido inicializar un sistema de ficheros del nuevo UFS2 que un sistema de ficheros del tradicional UFS1, le recomendamos encarecidamente usar newfs(8) con la opción -O2.

    La opción -O2 es el valor por defecto en FreeBSD 5.1-RELEASE y siguientes.

    # newfs -U -O2 /dev/ad4s1c.bde

    newfs(8) debe ejecutarse en una partición gbde conectada, que podrá identificar por la extensión *.bde del nombre del dispositivo.

  6. Montar la partición cifrada

    Crée un punto de montaje para el sistema cifrado de ficheros.

    # mkdir /private

    Montar el sistema cifrado de ficheros.

    # mount /dev/ad4s1c.bde /private
  7. Verificar que el sistema cifrado de ficheros esté disponible

    el sistema cifrado de ficheros debería ser visible para df(1) y estar listo para su uso.

    % df -H
    Filesystem        Size   Used  Avail Capacity  Mounted on
    /dev/ad0s1a      1037M    72M   883M     8    /
    /devfs            1.0K   1.0K     0B   100    /dev
    /dev/ad0s1f       8.1G    55K   7.5G     0    /home
    /dev/ad0s1e      1037M   1.1M   953M     0    /tmp
    /dev/ad0s1d       6.1G   1.9G   3.7G    35    /usr
    /dev/ad4s1c.bde   150G   4.1K   138G     0    /private

18.15.3. Montaje de sistemas cifrados de ficheros

Todos los sistemas cifrados de ficheros deben reconectarse al kernel después de cada arranque. Además, antes de poder utilizarlo debe revisarlo por si contuviera errores y montarlo. Todo el proceso debe ser ejecutado por el usuario root.

  1. Conectar la partición gbde al kernel

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    Se le pedirá la contraseña que elijió en la inicialización de la partición cifrada gbde.

  2. Revisión de errores en el sistema de ficheros

    Como que los sistemas cifrados de ficheros no pueden aparecer en /etc/fstab (lo que haría que fueran montados automáticamente), los sistemas de ficheros deben revisarse manualmente mediante fsck(8) antes de montarlos.

    # fsck -p -t ffs /dev/ad4s1c.bde
  3. Montar los sistemas cifrados de ficheros

    # mount /dev/ad4s1c.bde /private

    El sistema cifrado de ficheros está listo para su uso.

18.15.3.1. Montar automáticamente particiones cifradas

Es posible usar un "script" para automatizar la conexión, revisión y el montaje de una partición cifrada, pero por razones de seguridad el "script" no debe contener la contraseña de gbde(8). Se recomienda ejecutar esos "scripts" se ejecuten de forma manual proporcionando la contraseña vía consola o ssh(1).

18.15.4. Protección criptográfica que usa gbde

gbde(8) cifra el XXX sector payload usando AES de 128 bits en modo CBC. Cada sector en el disco se cifra con una clave AES diferente. Para más información sobre el diseño criptográfico de gbde, incluyendo cómo se derivan las claves de sector a partir de la contraseña consulte gbde(4).

18.15.5. Problemas de compatibilidad

sysinstall(8) es incompatible con dispositivos gbde cifrados. Todos los dispositivos *.bde deben desconectarse del kernel antes de iniciar sysinstall(8) o se "congelará" durante la prueba inicial de dispositivos. Para desconectar el el dispositivo cifrado de nuestro ejemplo haga lo siguiente:

# gbde detach /dev/ad4s1c

Tenga en cuenta también que, como vinum(4) no utiliza el subsistema geom(4), no es posible usar gbde en volúmenes vinum.


Last modified on: 11 de diciembre de 2021 by Sergio Carlavilla Delgado