[OpenBSD]

[Índice de documentos] [Sección 12 - Cuestiones sobre plataformas específicas]

14 - Configuración del disco


Tabla de contenidos


14.1 - Cómo usar disklabel

Tabla de contenidos

¿Qué es disklabel?

Antes de empezar, se recomienda leer la página del manual de disklabel(8).

Las «clasificaciones del disco» (disklabels) se crean para permitir una interfaz eficiente entre el disco y los controladores del disco que contiene el núcleo del sistema (kernel). Estas clasificaciones contienen cierta información sobre el disco, como la geometría del controlador e información sobre los sistemas de archivos (filesystems). Esta información la utiliza el programa de arranque para cargar el controlador y para saber en qué parte del controlador se encuentran los sistemas de archivos. Las clasificaciones también se usan en conjunto con los sistemas de archivos para crear un entorno más eficiente. Hay una documentación más detallada sobre disklabel en la página del manual de disklabel(5).

Además, el uso de disklabel ayuda a superar las limitaciones de las arquitecturas al particionar el disco. Por ejemplo, en i386 sólo se puede crear cuatro particiones primarias (particiones que puedan ver otros sistemas operativos como Windows NT o DOS). Con disklabel(8), una de esas particiones primarias se usa para almacenar todas nuestras particiones de OpenBSD (swap, /, /usr, /var, ...), y todavía nos quedarán tres particiones libres para otros sistemas operativos.

disklabel durante la instalación de OpenBSD

Una de las partes principales de la instalación de OpenBSD es la creación inicial de «clasificaciones» (labels). Para los usuarios de plataformas i386, éste es el paso que viene justo después de usar fdisk(1). Durante la instalación, el programa que se usa para crear clasificaciones separadas que contengan los puntos de montaje separados es disklabel(8). Durante este proceso se puede configurar los puntos de montaje desde dentro de disklabel, pero esto no es del todo necesario si consideramos que más tarde nos pedirá que confirmemos nuestras elecciones. De todos modos hace que la instalación sea un poco más suave.

Ya que esto ocurre durante la instalación, todavía no tendremos ninguna clasificación creada y, por lo tanto, antes debemos crearlas. La primera clasificación que tendremos que crear es la clasificación 'a'. Esta clasificación DEBE ser en la que se monte el sistema de archivos /. Puede verse una lista de las particiones que se recomienda crear, y sus respectivos tamaños recomendados, en la sección 4.3 de las preguntas frecuentes. Para servidores se recomienda que, como mínimo, se creen estas particiones separadas. Para los usuarios de computadoras (ordenadores) de sobremesa, será suficiente con crear un sólo punto de montaje para /. Cuando se cree por primera vez esta partición raíz (clasificación a), hay que tener en cuenta que será necesario dejar ALGO de espacio para la clasificación de swap. Ahora que ya hemos explicado lo más básico, pasemos a ver un ejemplo de la utilización de disklabel durante la instalación. En este primer ejemplo se asume que OpenBSD va a ser el único sistema operativo en la máquina, y que se llevará a cabo una instalación completa.

N. del T.: el texto que sigue a continuación está traducido para el propósito de este documento, pero durante la instalación el texto aparecerá en inglés Si se comparte el disco con otros sistemas operativos, esos sistemas operativos deben tener una entrada de la partición en la BIOS que abarque completamente el espacio que ocupen. Hay que asegurarse de que todos los sistemas de archivos de OpenBSD se encuentren dentro del tamaño especificado en la tabla de particiones de la BIOS 'A6' (por definición, el editor de disklabel tratará de forzar esto). Si no se está seguro de cómo usar correctamente particiones múltiples (o sea, /, /usr, /tmp, /var, /usr/local, y otras separadas), se puede dividir el espacio de momento en una partición raíz y otra swap. # using MBR partition 3: type A6 off 63 (0x3f) size 4991553 (0x4c2a41) Treating sectors 63-16386300 as the OpenBSD portion of the disk. You can use the 'b' command to change this. Initial label editor (enter '?' for help at any prompt) > d a > a a offset: [63] <Intro> size: [16386237] 64M Rounding to nearest cylinder: 131040 FS type: [4.2BSD] <Intro> mount point: [none] / fragment size: [1024] <Intro> block size: [8192] <Intro> cpg: [16] <Intro> > a b offset: [131103] <Intro> size: [16255197] 64M Rounding to nearest cylinder: 131040 FS type: [swap] <Intro>

Hasta este punto hemos creado una partición raíz de 64MB montada en /, y una partición swap de 64MB. Note que empieza ("offset") en el sector 63. En la parte correspondiente al tamaño, disklabel muestra su tamaño en sectores; sin embargo no es necesario introducirlos en el mismo formato. Como en el ejemplo anterior, puede introducir los tamaños de la forma 64 Megabytes = 64M y 2 Gigabytes = 2G. Disklabel los redondeará hasta el cilindro más cercano. También notará en el ejemplo anterior que disklabel asume que la clasificación 'b' será swap. Esto es correcto ya que el núcleo del sistema GENERIC está configurado para buscar swap en la clasificación b, y todo lo que usted debe hacer es seguir esta guía y usar b como su área de swap.

El siguiente ejemplo le guiará por la creación de dos clasificaciones más. Esto quiere decir que no es una instalación completa, ya que el tamaño de éstas no será suficiente para instalar OpenBSD al completo. Mostrar otra vez la creación de todas las particiones sería redundante. > a d offset: [262143] <Intro> size: [16124157] 64M Rounding to nearest cylinder: 131040 FS type: [4.2BSD] <Intro> mount point: [none] /tmp fragment size: [1024] <Intro> block size: [8192] <Intro> cpg: [16] <Intro> > a e offset: [393183] <Intro> size: [15993117] 64M Rounding to nearest cylinder: 131040 FS type: [4.2BSD] <Intro> mount point: [none] /var fragment size: [1024] <Intro> block size: [8192] <Intro> cpg: [16] <Intro>

En este ejemplo puede notar dos diferencias con el anterior. Una, que el inicio del sector (offset) lo averigua de forma automática. Cuando haga una instalación de este tipo no tendrá que configurar los sectores. Otra diferencia es que la clasificación 'c' representa a todo el disco. Por este motivo no debe tocar la clasificación c.

Una vez que todas las clasificaciones hayan sido creadas, todo lo quedará por hacer será grabarlas en el disco y pasar al proceso de instalación. Para grabarlo todo y salir de disklabel (y continuar con la instalación), haga lo siguiente: > w > q

*NOTA* - Para usuarios con discos grandes. Si la BIOS de su equipo no tiene soporte para el tamaño de su disco, OpenBSD tampoco tendrá soporte para éste. En cualquier otro caso OpenBSD debería ser capaz de tratar su disco sin problema alguno. Si se encuentra en una situación en la que la BIOS de su máquina no dispone de soporte para su disco, puede probar Maxtor EZ-Drive u otro producto complementario de similares características.

Uso general de disklabel(8)

Una vez que esté instalado el sistema, el uso frecuente de disklabel no debería ser necesario. Pero a veces tendrá que usarlo cuando añada, elimine, o reestructure sus discos. Una de las primeras cosas que tendrá que hacer será ver su disklabel actual. Para ello, escriba lo siguiente: # disklabel wd0 <----- O cualquier dispositivo de disco que quiera ver # using MBR partition 3: type A6 off 64 (0x40) size 16777152 (0xffffc0) # /dev/rwd0c: type: ESDI disk: label: TOSHIBA MK2720FC flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 2633 total sectors: 2654064 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 2071440 65583 4.2BSD 1024 8192 16 # (Cyl. 65*- 2120) b: 65520 63 swap # (Cyl. 0*- 65) c: 2654064 0 unused 0 0 # (Cyl. 0 - 2632) j: 512001 2137023 4.2BSD 1024 8192 16 # (Cyl. 2120*- 2627*)

La orden anterior le permite ver el disklabel presente, y de este modo asegurarse de que no lía nada (algo que todos necesitamos algunas veces). Pero para poder hacer cambios debe usar disklabel con la opción -E, de este modo: # disklabel -E wd0

Esto le llevará hasta un «punto de pedido» ("prompt"), el mismo que usó durante la instalación de OpenBSD. Probablemente, la orden más importante de todas en este punto de pedido sea '?'. Con esta orden obtendrá una lista de posibles opciones relacionadas con disklabel(8). Incluso podrá ver la página del manual de disklabel(8) al completo con la orden 'M'. Desde este punto podrá añadir o eliminar todo lo que desee, o hacer cambios en las particiones. Para más información al respecto lea la página del manual de disklabel(8).

14.2 - Cómo usar fdisk

Antes que nada, asegúrese de leer la página del manual principal de fdisk(8)

Fdisk es un programa de ayuda para el mantenimiento de sus particiones. Este programa se usa durante la instalación para configurar la partición de OpenBSD (esta partición puede contener varias clasificaciones, cada una de ellas con sistemas de archivos, swap, etc... ). Puede dividir el espacio de sus dispositivos y activar uno de ellos. Fdisk se suele usar en «Modo Monousuario» (boot -s - "Single User Mode"). Fdisk también configura el MBR de los discos.

Para la instalación, la mayoría de las veces sólo necesitará UNA partición de OpenBSD, y a continuación usar disklabel para poner en ella una swap y un sistema de archivos.

Para ver sólo su tabla de particiones con fdisk, haga lo siguiente: # fdisk fd0

lo que le dará una salida parecida a ésta: Disk: fd0 geometry: 80/2/18 [2880 sectors] Offset: 0 Signatures: 0xAA55,0x0 Starting Ending #: id cyl hd sec - cyl hd sec [ start - size] ---------------------------------------------------------------------- ---------------------------------------------------------------------- *0: A6 0 0 1 - 79 1 18 [ 0 - 2880] OpenBSD 1: 00 0 0 0 - 0 0 0 [ 0 - 0] unused 2: A7 0 0 2 - 79 1 18 [ 1 - 2879] NEXTSTEP 3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused

En este ejemplo estamos viendo la salida de fdisk para el dispositivo de la disquetera. Podemos ver la partición de OpenBSD (A6) y su tamaño. El asterisco (*) nos indica que la partición de OpenBSD es una partición de arranque.

En el ejemplo anterior sólo vimos nuestra información. ¿Y si quisiéramos editar nuestra tabla de particiones? Pues bien, para ello debemos usar el indicador -e, que nos trasladará a una línea de órdenes desde la que podremos interaccionar con fdisk. # fdisk -e wd0 Enter 'help' for information fdisk: 1> help help Command help list manual Show entire OpenBSD man page for fdisk reinit Re-initialize loaded MBR (to defaults) setpid Set the identifier of a given table entry disk Edit current drive stats edit Edit given table entry flag Flag given table entry as bootable update Update machine code in loaded MBR select Select extended partition table entry MBR print Print loaded MBR partition table write Write loaded MBR to disk exit Exit edit of current MBR, without saving changes quit Quit edit of current MBR, saving current changes abort Abort program without saving current changes fdisk: 1>

Entrar en fdisk y explorar el disco es totalmente seguro, sólo debe asegurarse de contestar N cuando le pregunte si quiere guardar los cambios, y de que NO usa la orden write.

Aquí tiene una revisión de las órdenes que puede usar cuando escoja el indicador -e.

14.3 - Cómo añadir discos adicionales

Una vez que ya tenga su disco instalado CORRECTAMENTE, deberá usar fdisk(8) (sólo i386) y disklabel(8) para configurarlo en OpenBSD.

Los usuarios de plataformas i386 deben empezar con fdisk. El resto de plataformas pueden ignorar esta parte. En el ejemplo que sigue a continuación estamos añadiendo un tercer dispositivo SCSI al sistema. # fdisk -i sd2

De este modo se iniciará la tabla de particiones «real» para su uso exclusivo por OpenBSD. A continuación debe crear un disklabel. Esto le parecerá algo confuso. # disklabel -e sd2 (la pantalla se queda en blanco y aparece su $EDITOR) type: SCSI ...bla... sectors/track: 63 total sectors: 6185088 ...bla... 16 partitions: # size offset fstype [fsize bsize cpg] c: 6185088 0 unused 0 0 # (Cyl. 0 - 6135) d: 1405080 63 4.2BSD 1024 8192 16 # (Cyl. 0*- 1393*) e: 4779945 1405143 4.2BSD 1024 8192 16 # (Cyl. 1393*- 6135)

Ignore la partición c, siempre está ahí y es para que funcionen programas como disklabel. El tipo de sistema de archivos (fstype) para OpenBSD es 4.2BSD. El número total de sectores es el tamaño total del disco. Supongamos que éste es un disco de 3GB; tres gigabytes, en términos del fabricante del disco, son 3000 megabytes. Divida 6185088 entre 3000 (use bc(1)) y obtendrá 2061. Por lo tanto, para crear particiones para a, d, e, f, g, ... simplemente multiplique X*2061 y obtendrá el número de megabytes de espacio en esa partición. El sector de inicio (offset) para su primera partición nueva debe ser el mismo que el "sectors/track" que le haya dado anteriormente la salida de disklabel. En este caso es 63. El sector de inicio para cada partición consecutiva debe ser una combinación del tamaño de cada partición y el sector de inicio de la misma (excepto la partición c, ya que no juega ningún papel aquí).

O, si sólo quiere tener una partición en el disco (si, por ejemplo, quisiera usarlo todo para almacenaje de web o como directorio home), tome el tamaño total del disco y réstele los sectores por pista ("sectors/track"). En este caso, 6185088-63 = 6185025. La partición quedará así: d: 6185025 63 4.2BSD 1024 8192 16

¡Si todo esto le parece complicado e innecesario, puede usar disklabel -E para obtener el mismo modo de particiones que tiene en su disco de instalación! Ahí puede usar «96M» para especificar «96 megabytes» (o con un disco lo bastante grande, 96G para 96 gigabytes). Desafortunadamente, el modo -E usa la geometría del disco de la BIOS, no la geometría del disco real, y con frecuencia éstas no son las mismas. Para evitar esta limitación, escriba 'g d' para la 'geometría del disco'. Otras opciones son 'g b' para la 'geometría de la bios' y 'g u' para la 'geometría del usuario', o simplemente lo que indique la «clasificación» (label) antes de que disklabel efectúe algún cambio.

Esto ha sido largo, pero todavía no ha terminado. Para finalizar, debe crear el sistema de archivos en el disco usando newfs(8). # newfs sd2a

O cualquiera otra denominación de su disco de acuerdo con el esquema de numeración del disco de OpenBSD (mire la salida de dmesg(8) para averiguar el nombre que OpenBSD da a su disco).

Ahora debe decidir dónde va a montar la nueva partición que acaba de crear. Digamos que quiere ponerla en /u. Primero cree el directorio /u, y luego móntelo. # mount /dev/sd2a /u

Finalmente, añádalo a /etc/fstab(5): /dev/sd2a /u ffs rw 1 1

¡Y si necesitara migrar a un directorio ya existente como /usr/local? Entonces debería montar la partición nueva en /mnt, y usar cpio -pdum para copiar /usr/local al directorio /mnt. A continuación editar el fichero /etc/fstab(5) para indicar que la partición /usr/local es ahora /dev/sd2a (su partición recién creada). Por ejemplo: /dev/sd2a /usr/local ffs rw 1 1

Reinicie en modo monousuario con boot -s y copie el fichero /usr/local existente a /usrs/local-backup (eliminando el original cuando esté seguro), y cree un directorio /usr/local vacío. Reinicie el sistema y ¡ya está! ¡ahí están los ficheros!

14.4 - Cómo usar un fichero como memoria de swap

(Nota: si lo que quiere es usar un fichero como memoria de intercambio ("swap") porque obtiene errores del tipo "virtual memory exhausted", debería intentar antes elevar los límites por proceso con la utilidad unlimit(1) de csh, o ulimit(1)) de sh.

Para el uso de un fichero como memoria de intercambio (swap file) no es estrictamente necesaria la compilación de un núcleo del sistema personalizado, pero en este documento mostraremos cómo añadir espacio swap de las dos formas.

Usar un fichero como swap

Usar un fichero como memoria de swap es la forma más fácil y rápida de obtener una configuración adicional del espacio de swap. El fichero no debe residir en un sistema de archivos que tenga SoftUpdates activado (se encuentra desactivado por definición). Para empezar, puede ver cuánta memoria de swap tiene en ese momento y cuánta está usando con la utilidad swapctl(8), del modo siguiente: $ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0

Esto le mostrará los dispositivos que están siendo usados como memoria de swap y sus estadísticas actuales. En el ejemplo anterior, sólo hay un dispositivo denominado "swap_device". Éste es el área predefinida para swap (si lo viéramos con disklabel, lo mostraría como la partición b). También puede ver en el ejemplo anterior que el dispositivo no está siendo muy usado en ese momento. Pero para el propósito de este documento, procederemos como si necesitáramos 32MB adicionales.

El primer paso para configurar un fichero como un dispositivo de swap es crear el fichero. El mejor modo de hacerlo es con la utilidad dd(1). He aquí un ejemplo de cómo crear el fichero /var/swap, que tendrá un tamaño de 32MB. $ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)

Una vez que lo hayamos creado, podemos activar el uso de ese dispositivo como memoria de swap. Para activarlo, use la siguiente orden: $ sudo chmod 600 /var/swap $ sudo swapctl -a /var/swap

Ahora debemos comprobar si se ha añadido correctamente a la lista de nuestros dispositivos de swap. $ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /var/swap 65536 0 65536 0% 0 Total 131056 8 131048 0%

Ahora que ya está activado el fichero y que se está usando como swap, debe añadir una línea a su fichero /etc/fstab, para que el fichero también se active en el próximo arranque. Si no añade esta línea, no tendrá este dispositivo de swap configurado. $ cat /etc/fstab /dev/wd0a / ffs rw 1 1 /var/swap /var/swap swap sw 0 0

Usar swap a través de un dispositivo vnode

Ésta es una solución más permanente que la de añadir más espacio de swap. Para usar permanentemente un fichero como memoria de swap, primero compile un núcleo con vnd0c como swap. Si su sistema de archivos raíz es wd0a, entonces wd0b es el swap anterior y debe usar la siguiente línea en el fichero de configuración del núcleo (si tiene dudas, lea el capítulo 5 de las preguntas frecuentes referente a la compilación del núcleo del sistema): config bsd root on wd0a swap on wd0b and vnd0c dumps on wd0b

Después de esto, tendrá que crear el fichero que se usará como memoria de swap. Debe hacerlo usando la misma orden que en los ejemplos anteriores. $ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)

Ahora el fichero está en su sitio y debe añadirlo a /etc/fstab. Aquí tiene una línea de ejemplo de cómo arrancar con este dispositivo como swap. $ cat /etc/fstab /dev/wd0a / ffs rw 1 1 /dev/vnd0c none swap sw 0 0

En este punto su máquina debe ser reiniciada para que los cambios en el núcleo hagan efecto. A continuación deberá configurar el dispositivo como memoria de swap. Para ello usará vnconfig(8). $ sudo vnconfig -c -v vnd0 /var/swap vnd0: 33554432 bytes on /var/swap

El último paso es activar ese dispositivo como memoria de swap. Lo haremos como en los ejemplos anteriores, usando swapctl(8). Después comprobaremos si ha sido correctamente añadido a nuestra lista de dispositivos de swap. $ sudo swapctl -a /dev/vnd0c $ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /dev/vnd0c 65536 0 65536 0% 0 Total 131056 8 131048 0%

14.5 - Soft Updates

Soft Updates está basado en una idea propuesta por Greg Gangerand Yale Patt y desarrollada para FreeBSD por Kirk McKusick. Soft Updates impone un orden parcial en las operaciones de la memoria intermedia de caché que eliminar la escritura sincrónica de entradas de directorio del código de FFS. De este modo se consigue un gran aumento en el rendimiento de la escritura en disco.

El potencial de ejecutar fsck(8) en plano de fondo usando Soft Updates aún no es posible en OpenBSD, por lo que todavía es necesario fsck(8) después de que el sistema se apague de forma abrupta. Esto puede cambiar en versiones futuras.

Para activar Softupdates, el núcleo debe estar compilado con

option FFS_SOFTUPDATES

Esta opción está incluida en el núcleo GENERIC.

La activación de Soft Updates se debe realizar con una opción de tiempo en el montaje. Cuando se monta una partición con la utilidad mount(8), se puede indicar que se active soft updates en esa partición. La siguiente muestra es de una entrada en /etc/fstab(5) para una partición sd0a que queremos que se monte con soft updates activado. /dev/sd0a / ffs rw,softdep 1 1

Nota para los usuarios de sparc: no se debe activar soft updates en las máquinas sun4 o sun4c. Estas arquitecturas sólo tienen soporte para una cantidad de memoria del núcleo muy limitada, y no pueden usar esta funcionalidad. Las máquinas sun4m no tienen esta limitación y sí pueden usarla.

14.6 - El proceso de arranque de OpenBSD/i386 en detalle

El proceso de arranque de OpenBSD/i386 no es algo trivial, y entender cómo funciona puede ayudarnos a resolver algún problema. Hay cuatro piezas clave en el proceso de arranque:

  1. Registro de Arranque Maestro (Master Boot Record, MBR): El MBR es el primer sector físico del disco (los primeros 512 bytes). Contiene la tabla de particiones primarias y un pequeño programa para cargar el Partition Boot Record (PBR). Nótese que en algunos entornos, el término MBR se usa para referirse únicamente a la parte de código de este primer bloque del disco, en lugar de referirse a todo este primer bloque (incluida la tabla de particiones). Es importante que se entienda el sentido de "initialize the MBR" (iniciar el MBR), ya que dentro de la terminología que se usa en OpenBSD esto incluye la reescritura de todo el sector del MBR, no sólo del código como en algunos sistemas. Esto es algo que rara vez se querrá hacer. En lugar de ello, hay que usar la orden "update" de fdisk(8).

    Aunque OpenBSD incluya un MBR, no es necesario usar éste ya que prácticamente cualquier otro MBR puede arrancar OpenBSD. El MBR se manipula con el programa fdisk(8), que se usa para modificar la tabla de particiones además de para instalar el código de MBR en el disco.

    El MBR de OpenBSD se anuncia con el mensaje Using Drive: 0 Partition: 3 mostrando así el disco y la partición desde las que va a cargar el PBR.

  2. Registro de Arranque de la Partición (Partition Boot Record, PBR): El PBR, también llamado biosboot(8) (por el nombre del archivo que contiene el código) es el primer sector físico de la partición de OpenBSD del disco. El PBR es la «primera fase del cargador de arranque» para OpenBSD. El PBR lo carga el código del MBR, y tiene la función de cargar la segunda fase del cargador de arranque, boot(8). Como el MBR, el PBR es una pequeñísima sección de código y datos, tan sólo 512 bytes en total. Eso no es suficiente para tener una aplicación que pueda hacer uso total del sistema de archivos. Por lo tanto, en lugar de dejar que el PBR localice /boot en el disco, la ubicación accesible por la BIOS de /boot se codificada físicamente en PBR durante la instalación.

    El PBR lo instala installboot, que se describe con detalle en la sección 14.8 de este documento. El PBR se anuncia con el mensaje reading boot.... imprimiendo la línea de puntos según va leyendo los sectores del disco.

  3. Cargador de Arranque de Segunda Fase, /boot: /boot es cargado por el PBR, y tiene la función de acceder al sistema de archivos de OpenBSD a través de la BIOS de la máquina, y de ubicar y cargar el núcleo del sistema (kernel). boot(8) también pasa varias opciones e información al núcleo del sistema.

    boot(8) es un programa interactivo. Después de cargarse, intenta ubicar y leer /etc/boot.conf si existe (en una instalación típica no existe), y procesa cualquier orden que lleva. A menos que /etc/boot.conf le dé otras instrucciones, pasa un punto de inserción al usuario: probing: pc0 com0 com1 apm mem[636k 190M a20=on] disk: fd0 hd0+ >> OpenBSD/i386 BOOT 2.02 boot> En la configuración predeterminada, le da al usuario cinco segundos para que le pase alguna orden; si no se hace nada durante este tiempo, incia su tarea predeterminada: cargar el núcleo del sistema, bsd, desde la partición raíz del primer disco duro. El cargador de arranque de segunda fase sondea (examina) el hardware del sistema a través de la BIOS (ya que todavía no se ha cargado el núcleo de OpenBSD). En el cuadro de arriba se pueden ver unas pocas cosas que ha buscado y encontrado:

    El caracter '+' después de "hd0" indica que la BIOS a informado a /boot de que este disco es accesasible mediante LBA. Cuando se realiza una primera instalación, a veces se observa un caracter '*' después del disco duro; esto indica un disco que no parece tener una clasificación de disco de OpenBSD válida.

  4. Kernel: /bsd: El kernel o núcleo del sistema es el objetivo final de todo el proceso de arranque: cargar el núcleo en la RAM y que se ejecute correctamente. Una vez que se ha cargado el núcleo, OpenBSD accede directamente al hardware, sin que ya sea necesario que vaya a través de la BIOS.

Así pues, el inicio del proceso de arranque seguiría un esquema como el siguiente:

Using Drive: 0 Partition: 3 <- MBR reading boot.... <- PBR probing: pc0 com0 com1 apm mem[636k 190M a20=on] <- /boot disk: fd0 hd0+ >> OpenBSD/i386 BOOT 2.02 boot> booting hd0a:/bsd 4464500+838332 [58+204240+181750]=0x56cfd0 entry point at 0x100120 [ using 386464 bytes of bsd ELF symbol table ] Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Kernel The Regents of the University of California. All rights reserved. Copyright (c) 1995-2003 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 3.4 (GENERIC) #18: Wed Sep 17 03:34:47 MDT 2003 ...

Posibles errores

Para más información sobre el proceso de arranque de i386, véase los documentos:

14.7 - ¿Qué problemas puede haber en OpenBSD con dispositivos de gran capacidad?

OpenBSD tiene soporte para sistemas de archivos de tamaños mucho mayores que cualquier de los discos duros que existen en la actualidad o incluso de los que puedan aparecer en breve; sin embargo, existen limitaciones en algunas interfaces que son de menor tamaño que el máximo teórico de OpenBSD.

No son posibles todas las combinaciones de hardware. Un nuevo disco duro IDE de 250GB no funcionará en las interfaces más viejas (anteriores a los estándares >137GB), y algunos adaptadores SCSI muy viejos han dado problemas con discos más modernos. Hay que respetar las posibilidades y limitaciones del hardware.

Limitaciones al tamaño de la partición y ubicación

Desafortunadamente, la capacidad absoluta del sistema operativo no se encontrará disponible hasta DESPUÉS de que el sistema operativo haya sido cargado en la memoria y el proceso de arranque haya introducido sus propios límites. El proceso de arranuqe tiene que utilizar (y por lo tanto está limitado por) la ROM de arranque del sistema. El cargador de arranque de primera face de OpenBSD/i386 (biosboot(8)) también tiene su propia limitación interna de 8GB, heredada del límite de las BIOS antiguas.

Por este motivo, todo el fichero /bsd (el núcleo del sistema) se debe ubicar dentro del área direccionable de la ROM de arranque en el disco, o dentro de los primeros 8G del disco, cualquiera que sea más pequeña. Esto significa que en algunos equipos i386 más antiguos, la partición root debe encontrarse dentro del límite de los primeros 504M, pero en la mayoría de equipos nuevos se puede encontrar en cualquier parte dentro de los primeros 8G.

Nótese que es posible instalar un dispositivo de 40GB en un 486 antiguo y cargar OpenBSD como una sola partición gigante, y por ello creer que la regla anterior ha sido violada con éxito. Sin embargo, puede volver para vengarse en un modo horrible:

¿Por qué? Porque cuando copió «sobre» el nuevo fichero /bsd, no sobreescribió el antiguo, sino que se reubicó en un nuevo espacio del disco, probablemente fuera del rango de los 504M para los que tiene soporte la BIOS. El cargador de arranque no pudo localizar /bsd y el sistema se colgó.

Para que OpenBSD arranque, los cargadores de arranque (biosboot(8) y /boot en el caso de i386) y el núcleo (/bsd) deben encontrarse dentro del rango del soporte de la ROM de arranque, y dentro de sus propias capacidades. Para ir sobre seguro, la regla es fácil:

Toda la partición root debe estar dentro del espacio direccionable por la BIOS (o ROM de arranque) de la máquina o dentro de los primeros 8G, cualquiera que sea el más pequeño de los dos. En este momento no hay forma de evitar esto, es necesario seguir esta regla.

Ésta es otra buena razón para dividir el disco duro en particiones, en lugar de usar una única partición grande.

Requisitos de tiempo y memoria de fsck(8)

Otra consideración con sistemas de archivos grandes es la del tiempo y memoria requeridos para poder usar fsck(8) en el sistema de archivos después de una caída del sistema o de una interrupción de la fuente eléctrica. No se debe poner un sistema de archivos de 120GB en un sistema con 32MB de RAM y esperar que fsck(1) se ejecute con éxito después de una caída. El sistema debería tener como mínimo 1MB de memoria disponible por cada 1GB de espacio en disco para que fsck se ejecute con éxito sobre el disco. El tiempo requerido para que fsck repare el disco puede ser un problema según se va incrementando el tamaño del sistema de archivos.

14.8 - Instalación de bloques de arranque (específico de i386)

Las versiones más antiguas de MS-DOS sólo podían reconocer geomtrías de disco de 1024 cilindros o menos. Ya que casi prácticamente todos los discos modernos tienen más de 1024 cilindros, la mayoría de chips de BIOS SCSI (que vienen integrados en la tarjeta controladora SCSI) y de BIOS IDE (que son parte del resto de la BIOS para PCs) disponen de una opción (algunas veces preactivada) para «traducir» la geometría real del disco en algo que esté dentro de los límites de la capacidad de MS-DOS. Sin embargo, no todos los chips de BIOS «traducen» la geometría del mismo modo. Si cambia su BIOS (instalando una nueva placa base o añadiendo una nueva controladora SCSI) y la nueva usa una «traducción» de la geometría diferente, no podrá cargar la segunda fase del gestor de arranque (y por lo tanto no podrá cargar el núcleo). Esto se debe a que la primera fase del gestor de arranque contiene una lista de bloques que comprende /boot en términos de la geometría «traducida» original. Si está usando discos IDE y realiza cambios en la configuración de su BIOS, también puede cambiar sin saberlo su traducción (la mayoría de BIOS IDE ofrecen 3 traducciones diferentes). Para que su bloque de arranque pueda iniciar con normalidad, ponga un disquete de arranque (o use un CD-ROM con capacidad arranque), y en el punto boot> escriba b hd0a:/bsd para forzar el arranque desde el primer disco duro (y no desde el disquete). Su máquina debería iniciar sin ningún problema. Ahora debe actualizar la primera fase del gestor de arranque para poder ver la nueva geometría (y reescribir el bloque de arranque de acuerdo con ella).
En el ejemplo se asume que su disco de arranque es sd0 (SCSI, pero si fuera IDE sería wd0, etc... ): # cd /usr/mdec; ./installboot /boot biosboot sd0

Si installboot protesta porque es incapaz de leer la geometría de la BIOS, puede invocar la orden 'machine diskinfo' (o su forma abreviada, 'ma di') desde el punto boot>, para ver la información que necesite. Rellene con los valores "heads" y "secs" los indicadores -h y -s de installboot respectivamente, para que la orden modificada de installboot quede como sigue: # cd /usr/mdec; ./installboot -h <heads> -s <secs> /boot biosboot sd0

Si se requiriera una versión de los bloques de arranque, tendría que compilarlos usted mismo. # cd /sys/arch/i386/stand/ # make && make install # cd /usr/mdec; cp ./boot /boot # ./installboot /boot biosboot sd0 (o cualquier otro dispositivo que sea su disco)

14.9 - Prepararación para el desastre: hacer copias de seguridad (respaldo) y restaurar desde la cinta

Introducción:

Si su instalación de OpenBSD va a ser lo que se llama un servidor de producción, es aconsejable disponer de algún tipo de respaldo por si acaso uno de sus discos fijos fallara.

Esta información le ayudará a usar las utilidades típicas dump(8)/restore(8) disponibles con OpenBSD. Existe una utilidad para copias de seguridad más avanzada, llamada "Amanda", con la que se pueden hacer copias de seguridad de múltiples servidores en una sola cinta. En la mayoría de entornos, dump(8)/restore(8) es suficiente. Sin embargo, si necesita hacer copias de seguridad de múltiples máquinas en una sola cinta, vale la pena que conozca Amanda.

Los dispositivos de ejemplo en este documento son para una configuración que usa discos y cintas SCSI. En un entorno de producción, se recomiendan los discos SCSI sobre los IDE debido al modo que gestionan los bloques erróneos, lo que no significa que esta información sea inútil si está usando un disco IDE u otro tipo de cinta; en este caso los nombres de sus dispositivos serán ligeramente diferentes. Por ejemplo, sd0a sería wd0a en un sistema basado en IDE.

Hacer copias en cinta

Para hacer copias en una cinta es necesario saber de antemano dónde están montados los sistemas de archivos. Esto se puede determinar usando la orden mount(8) desde el punto de pedido del intérprete de órdenes (shell prompt). Debería obtener una salida similar a ésta: # mount /dev/sd0a on / type ffs (local) /dev/sd0h on /usr type ffs (local)

En este ejemplo, el sistema de archivos raíz (/) reside físicamente en sd0a, lo que indica que es la partición a del disco fijo SCSI 0. El sistema de archivos /usr reside en sd0h, lo que indica que es la partición h del disco fijo SCSI 0.

Otro ejemplo de una tabla de puntos de montaje más avanzado sería: # mount /dev/sd0a on / type ffs (local) /dev/sd0d on /var type ffs (local) /dev/sd0e on /home type ffs (local) /dev/sd0h on /usr type ffs (local)

En este ejemplo, el sistema de archivos raíz reside físicamente en sd0a, el sistema de archivos /var reside en sd0d, el sistema de archivos /home en sd0e y finalmente, /usr en sd0h.

Para hacer copias de seguridad de su máquina necesitará pasar información a dump sobre el nombre de cada partición del disco fijo. Aquí tiene un ejemplo de las órdenes que se necesitan para hacer copias de la primera tabla de montaje (la más simple): # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind

Para la segunda tabla (la más avanzada), usaría algo parecido a esto: # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind

Puede revisar la página del manual de dump(8) para averiguar qué es lo que hace exactamente cada uno de los parámetros en la línea de órdenes. Aquí tiene una breve descripción de los parámetros usados:

La última parte indica la partición de la que se hará la copia de seguridad (/dev/rsd0a, etc... ).

La orden mt(1) se usa al final para rebobinar el controlador. Revise la página del manual de mt para ver más opciones (como "eject").

Si no está seguro de cuál es el nombre de su dispositivo de cinta, use dmesg para localizarlo. Un ejemplo de entrada del dispositivo de cinta en dmesg será parecido al siguiente: st0 at scsibus0 targ 5 lun 0: <ARCHIVE, Python 28388-XXX, 5.28>

Es posible que haya notado que al realizar la copia de seguridad, se accede al controlador de la cinta con el nombre del dispositivo "nrst0" en lugar de "st0", que es el nombre que se ve en dmesg. Cuando se accede a st0 como nrst0 se está accediendo al mismo controlador físico de la cinta, pero indicando al controlador que no debe rebobinar al final del proceso y que acceda al dispositivo en modo virgen. Para hacer copias de seguridad de múltiples sistemas de archivos en una sola cinta, asegúrese de usar el dispositivo sin rebobinar; si usa un dispositivo de rebobinado (rst0) para hacer copias de seguridad de múltiples sistemas de archivos, acabará anulando el sistema de archivos anterior cuando el próximo dump intente grabar en la cinta. Puede encontrar una descripción más elaborada sobre los distintos dispositivos de control de cinta en la página del manual de dump.

Si quiere escribir un pequeño guión (script), puede hacerlo como el siguiente: echo " Empezando Copia de Seguridad Completa..." /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h echo echo -n " Rebobinando el Dispositivo, por favor espere..." mt -f /dev/rst0 rewind echo "Fin." echo

Si desea programar las copias de seguridad para que se hagan por la noche o a cualquier otra hora, puede usar cron(8) para que lance el guión de forma automática.

También puede serle de ayuda documentar (en un trozo de papel) el tamaño necesario para cada sistema de archivos. Puede usar la orden df -h para determinar cuánto espacio está usando cada partición. Esto le será útil cuando el dispositivo falle y necesite recrear su partición en el nuevo dispositivo.

Restaurar sus datos también le ayudará a reducir la fragmentación. Para asegurarse de que tiene todos los ficheros, la mejor forma de hacer copias de seguridad es reiniciando el sistema en modo monousuario. Los sistemas de archivos no necesitan estar montados para hacer las copias. Después de reiniciar no se olvide de montar la partición raíz (/) con permisos de escritura (r) y lectura (w), o dump fallará cuando intente grabar los "dumpdates". Para iniciar en modo monousuario haga lo siguiente desde el punto de arranque: boot> bsd -s

Ver el contenido de una copia en cinta:

Después de que haya hecho las correspondientes copias de seguridad por primera vez, es una buena idea que pruebe su cinta y que se asegure de que los datos en ella sean los que Vd. esperaba que fueran.

Puede usar el siguiente ejemplo para revisar un catálogo de ficheros en una cinta: # /sbin/restore -tvs 1 -f /dev/rst0

Esto hará que se muestre una lista con los ficheros existentes en la primera partición de la cinta. De acuerdo con los ejemplos anteriores, 1 sería su sistema de archivos raíz (/).

Para poder ver el contenido de la segunda partición de la cinta y enviar la salida a un fichero, use una orden como la siguiente: # /sbin/restore -tvs 2 -f /dev/rst0 > /home/me/list.txt

Si tiene una tabla de particiones como la simple de ejemplos anteriores, 2 sería /usr; si la tabla es como la más avanzada, entonces 2 podría ser /var u otro sistema de archivos. El número de secuencia coincide con el orden en el que se graben los sistemas de archivos en la cinta.

Restaurar desde la cinta:

El ejemplo que verá más adelante podría ser útil si su disco fijo fallara totalmente. En caso de que quiera restaurar sus sistemas de archivos desde un único fichero de la cinta, revise la página del manual de restore(8) y preste atención a las instrucciones sobre el modo interactivo.

Si se ha preparado bien, substituir un disco y restaurar sus datos desde la cinta puede ser un proceso muy rápido. El disquete de instalación/arranque estándar de OpenBSD contiene la utilidad que se requiere para restaurar, así como los binarios que se requieren para particionar y hacer que pueda arrancar desde su dispositivo. En la mayoría de los casos, este disquete y su cinta con la copia de seguridad más reciente será todo lo que necesite para restaurar el sistema.

Después de substituir físicamente el dispositivo de disco erróneo, los pasos básicos para restaurar sus datos son los siguientes:

14.10 - Cómo montar imágenes de disco en OpenBSD

Para montar una imagen de disco (imágenes ISO, imágenes de disco creadas con ґddґ, etc.. ) en OpenBSD, debe configurar un dispositivo vnd(4). Por ejemplo, si tuviera una imagen ISO ubicada en /tmp/ISO.image, debería seguir los siguientes pasos para montar la imagen:

# vnconfig svnd0 /tmp/ISO.image # mount -t cd9660 /dev/svnd0c /mnt

Note que, dado que esta imagen es una imagen de CD, debe especificar el tipo cd9660 al montarla. Esto se debe aplicar a cualquier tipo; v.g. deberá usar el tipo ffs cuando monte imágenes de disco.

Para desmontar la imagen use la siguiente orden:

# umount /mnt # vnconfig -u svnd0

Para más información mire la página del manual de vnconfig(8)

14.11 - ¡Ayuda! ¡da errores con PCIIDE!

PCI IDE DMA es inestable en muchas combinaciones de hardware. Hasta hace poco tiempo, la mayoría de sistemas operativos «más conocidos» que aseguraban dar soporte para transferencias DMA con dispositivos IDE, no tenían esa funcionalidad activada de modo predeterminado.

OpenBSD es agresivo, e intenta usar el modo DMA más alto que pueda configurar. Esto corrompe las transferencias de datos en algunas configuraciones, por culpa de placas base con chipsets erróneos, controladoras erróneas y, o, ruido en los cables. Por suerte, los modos Ultra-DMA protegen las transferencias de datos con un CRC para detectar la corrupción. Cuando el CRC Ultra-DMA falla, OpenBSD muestra un mensaje de error e intenta repetir la operación. wd2a: aborted command, interface CRC error reading fsbn 64 of 64-79 (wd2 bn 127; cn 0 tn 2 sn 1), retrying

Después de un par de fallos, OpenBSD prueba un modo Ultra-DMA más bajo, pero más estable. Si se llega al modo 0 Ultra-DMA, el controlador baja de grado hasta el modo PIO.

Si OpenBSD no consigue bajar el modo, o si el proceso bloquea la máquina, por favor envíe un informe sobre el error.

14.13 - Opciones de RAID para OpenBSD

RAID (Redundant Array of Inexpensive Disks) ofrece la oportunidad de usar dispositivos múltiples para obtener un mejor rendimiento, más capacidad, y/o redundancia de la que se puede obtener de un único dispositivo. Aunque una explicación completa de los beneficios y riesgos de RAID no entra en los objetivos de esta sección, hay un par de puntos que son importantes aquí:

Si es la primera vez que lee información sobre RAID, tenga en cuenta que esto no es un buen comienzo para explorar RAID.

Opciones de software

OpenBSD incluye RAIDframe, una solución de software de RAID. Puede encontrar documentación sobre RAIDframe en los siguientes sitios:

Desde la versión 3.1 de OpenBSD, se puede replicar la partición raíz directamente usando la opción "Autoconfiguration" de RAIDframe.

Opciones de hardware

Muchas plataformas de OpenBSD incluyen soporte para varios productos de hardware de RAID. Las opciones varían según la plataforma; mire en la página de soporte apropiada para cada una aquí.

Otra opción disponible para muchas plataformas es la de los muchos productos que hacen que dispositivos múltiples actúen como un único dispositivo IDE o SCSI, y están conectados en un adaptador IDE o SCSI normal. Estos dispositivos pueden funcionar en casi cualquier plataforma de hardware que disponga de soporte para SCSI o IDE.

Algunos de los fabricantes de estos productos:

(Nota: éstos son simplemente productos sobre los que los usuarios de OpenBSD han informado que utilizan, no es ningún tipo de recomendación ni es una lista exhaustiva).

No-opciones

Una pregunta formulada a menudo en las listas de correo es si «hay soporte para las controladoras de IDE RAID Promise o HighPoint», y la respuesta es «No». Estas tarjetas y chips no son controladores de hardware de RAID reales, sino software de RAID de arranque asistido por la BIOS. Como OpenBSD ya dispone de soporte para software de RAID independiente del hardware, no hay un deseo entre los desarrolladores de OpenBSD la implementación de un soporte especial para estas tarjetas.

[Índice de documentos] [Sección 12 - Cuestiones sobre plataformas específicas]


[índice] www@openbsd.org
Originally [OpenBSD: faq14.html,v 1.99 ]
$Translation: faq14.html,v 1.54 2004/01/04 19:59:58 horacio Exp $
$OpenBSD: faq14.html,v 1.52 2004/01/04 22:23:56 horacio Exp $