View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Usar un *BSD como servidor de NFS




Friday, 10 December 2010, 11:19:39 am
Nota sobre el apagado de josue Es muy importante hacer un
# shutdown -h now
o un
# shutdown -r now
en vez de un halt/reboot, ya que si no el raid no se para correctamente y puede haber pérdida de datos.

Friday, 10 December 2010, 11:12:08 am
Configurada la red de josue Con un "ifconfig -a" se averigua el nombre del interfaz, y se meten los datos en "/etc/defaults/rc.conf", tanto del gateway, como la ip propia, como el hostname propio. Se configura el /etc/resolv.conf (poniendo el "nameserver 3.0.1.51") y reiniciando debería tener acceso a internet.

Instalado el sshd, telnetd y el ftpd He puesto un script en /root/ para que inicialice la variable de entorno del pkg_src:
#!/bin/sh
echo Espero que hayas hecho un source de este archivo en vez de un exec
PKG_PATH="http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/5.1/All"
export PKG_PATH
Una vez hecho un source (include: ". nombrescript") de dicha script, se ha instalado el openssh y el vsftpd con un:
  1. pkg_add -v openssh
  2. pkg_add -v vsftpd
Se han editado los ficheros de configuración que indicaban en pantalla y se ha activado el ssh editando el /etc/defaults/rc.conf (se supone que hay que editar el /etc/rc.conf copiando las líeas desde el otro, pero he lo hemos sabido demasiado tarde). Para el sshd, comprobar que la script de /etc/rc.d/sshd tiene permisos de ejecución.
Para activar el telnet y el ftpd, se edita el /etc/inetd.conf y se descomentan las entradas correspondientes. Para el telnet, hay que quitar el "-a valid" del final o no funcionará el telnet desde los ordenadores antiguos (p.ej. salchicha).

Configurado el NFS Para el nfs, hay que seguir la guía de NFS para NetBSD, que básicamente consiste en activar las siguientes líneas en el rc.conf:
rpcbind=yes
mountd=yes
nfs_server=yes
lockd=yes
statd=yes
Y poner el /etc/exports, que en nuestro caso es:
/home -network 3.0.1.0/24
/home/metro/ControlId -network 3.0.1.0/24
Y con eso el NFS está configurado.


Thursday, 9 December 2010, 12:41:47 pm
Notas sobre la creación del nuevo Josue con NetBSD 5.1 Es importante lo siguiente:

1. Se instala con el ejemplo del manual, se parando en particiones / (40GB) , swap (4GB) /var (10GB) y /home (resto). Se usa el sistema de archivos FFSv1, ya que el v2 es sólo si usas particiones mayores a 1TB o para usar ACLs.

2. Cuando se ha terminado,se sigue esta guía para configurar el RAID, aunque en las aprtes confusas, la guía antigua es más clara.

3. Cuando se hacen las particiones para RAIDframe, ls partición RAID se convierte en un "pseudodisco" llamado raid0 (al contrario que en Linux, que se puede hacer partición a partición), y es dentro de ese pseudodisco que se hacen las nuevas particiones.

4. En el caso de esta instalación (disco de 250GB), los valores para el disklabel (particiones BSD equivalentes a los slices de solaris) de dentro del RAID han sido:
TamañoNombreTam. en sectoresOffset en sectoresPto. de montaje
40GBa838860800/
4GBb838860883886080swap
10GBe2097152092274688/var
restof375150720113246208/home

5. Una vez que el sistema ya tenía el raid funcionando, se han copiado el contenido de los discos antiguos con lo siguiente:

5.1 Se conectan por USB
5.2 Se hace un nuevo "raid1.conf" con la ayuda de la página de manual de raidctl (NOTA: la partición RAID estaba en la e, pero en los nuevos discos que hemos hecho está en la a; ver usando un "disklabel sd0"):
START array
1 2 0

START disks
/dev/sd0e
/dev/sd1e

START layout
128 1 1 1

START queue
fifo 100


5.3 Se monta el nuevo raid.conf
# raidctl -C raid1.conf raid1

5.4 Se monta la partición que tiene los datos (se ven las particiones del raid con un "disklabel raid1"), en nuestro caso es la "g":
 # fsck_ffs /dev/raid1g
 # mount /dev/raid1g /mnt

5.5 Se copia lo que se tenga que copiar...

5.6 se desmonta la partición
 # umount /mnt

5.7 Se desmonta el RAID:
 # raidctl -u raid1

6. Y con eso está todo lo importante (los datos) :-). Falta hacer aparte lo del NFS, ssh, telnet y ftp.

Tuesday, 7 December 2010, 11:57:43 am
Volvemos a instalar NetBSD en un ordenador nuevo (el anterior se rompió) El howto que utilizamos la otra vez (en archive.org). Esa guía ha sido incorporada a la guía de NetBSD en el capítulo de RAIDframe. La instalación básica previa ha sido realizada según el ejemplo del manual, con sistema de archivos ffs1 y con particiones diferentes para /, /var y /home.

Thursday, 31 August 2006, 5:16:39 pm
Compilar un nuevo kernel de NetBSD Hay una bonita bsdnewsletter que lo explica: BSD Newsletter: Building tiny systems with embedded NetBSD (compiling the kernel...)

Thursday, 19 May 2005, 4:53:51 pm
Para añadir más directorios exportados en josue Información aquí. En resumen hey que hacer lo siguiente:
  1. Añadir una nueva línea en el /etc/exports:
    /home -network 3.0.1.0/24
  2. Para que recargue el exports, mandar una señal hangup (kill -HUP pid_proceso) al mountd o hacer un
    # /etc/rc.d/mountd reload
  3. Comprobar que todo está bien con un
    # showmount -e

Wednesday, 12 January 2005, 8:23:09 am
Artículo sobre cómo depurar el núcleo de NetBSD Este artículo tiene dos enlaces a un tutorial (167pags) y transparencias sobre la depuración del kernel de los BSD, usando principalmente el GDB.

Wednesday, 12 January 2005, 8:09:38 am
Cómo cambiar un disco en el RAID Para reconstruir una parte del raid, primero miras a ver si hay algun parte fallando con un:
 # raidctl -s /dev/raid0
Y si te dice, p. ej., que /dev/wd1e está failed (o que es component1), entonces lo puedes reconstruir con un:
 # raidctl -R /dev/wd1e /dev/raid0
Y ver el progreso del proceso de recostrucción con un
 # raidctl -S /dev/raid0 

Tuesday, 11 January 2005, 4:25:17 pm
Instalar el grub en NetBSD Suponiendo que ya has creado el RAID y que has hecho una "label" a mapeando el contenido de la particion a del RAID en ambos discos, puedes hacer lo siguiente:
  1. Primero se descomprime el pkgsrc.tar.gz en /var para poder instalar el grub. Es decir
    # cd /var
    # tar -xvzf /root/pkgsrc.tar.gz
  2. Luego, instalas el grub con un
    # cd pkgsrc/sysutils/grub & make install clean
  3. Ahora creas el directorio /grub y copias allí los datos "de arranque" del grub
    # cd /
    # mkdir grub
    # cd grub
    # cp /usr/pkg/share/grub/i386-/* .
  4. Arrancas el grub y haces la instalación física del gestor de arranque
    # /usr/pkg/sbin/grub
    grub> find /grub/stage1
    (hd0,0,a)
    (hd1,0,a)
    grub> root (hd0,0,a)
    Filesystem type is ffs, partition type 0xa9

    grub> setup (hd0)
    [...]
    ... succeeded
    Done.
    grub> quit
  5. editas el /grub/menu.lst para que tenga lo siguiente:
    default=0
    fallback=1
    timeout=10

    title NetBSD 2.0 (disk 0)
    root (hd0,0,a)
    kernel --type=netbsd /netbsd

    title NetBSD 2.0 (disk 1)
    root (hd1,0,a)
    kernel --type=netbsd /netbsd

Tuesday, 11 January 2005, 7:47:54 am
Cómo se actualiza un NetBSD (cómo se hace el equivalente a "apt-get dist-upgrade") Este artículo lo explica pas a paso. El resumen que da es el siguiente:
  • Back up your data
  • Get the system and package source code
  • Update the system and package source code
  • Check /usr/src/UPDATING
  • Build the new kernel and reboot onto it
  • Build the operating system
  • Install the system
  • Update your configuration

Monday, 10 January 2005, 5:30:32 pm
Usar GRUB con NetBSD Instrucciones aquí

Monday, 10 January 2005, 1:13:08 pm
Otro howto de raid en NetBSD Está aquí (draft, alternative).

Update (11/01/2005): Leete este artículo donde explican qué son y cómo se usan las *BSD disklabels. Por otro lado, hay más gente que le ha sucedido alguna vez lo del problema de arranque y su solución ("can't open /boot") que nos está volviendo locos desde ayer, y todavía no hemos resuelto (la solución propuesta no arregla nuestro caso). Por otro lado, aquí explican cómo encuentra el /boot en caso de usar raid

Friday, 7 January 2005, 7:13:33 am
Una tercera opción: NetBSD con RAIDframe Hay otro howto completo sobre Root Filesystem on RAID-1 with NetBSD's RAIDframe, lo que añadido a la última comparativa entre freebsd y netbsd, hace especialmente atractivo a NetBSD.

Thursday, 9 December 2004, 1:04:19 pm
Otra opción: OpenBSD+RAIDFrame Hay un precioso howto de OpenBSD: root on a RAID set-up howto (más info), usando OpenBSD 3.0. Puede ser más fácil de instalar que el vinum de FreeBSD, y resolvería el problema de igual manera.


Thursday, 9 December 2004, 9:22:14 am
Alternativas avinum para hacer raid Según parece hay cuatro alternativas par hacer raid1 en FreeBSD: gmirror (sólo para FreeBSD 5.3, howto), ataraid, vinum y ccd

Update (2005/12/01): En este artículo dan la URL de otro step-by-step howto de RAID-1 con FreeBSD usando GEOM

Thursday, 9 December 2004, 8:16:14 am
Howto para vinum en mirroring Hay un howto que explica cómo hacerlo: Vinum HOWTO for two mirrored disks. Hay otro howto más genérico aquí (Vinum HOWTO), junto con la lista de bugs del howto

NOTA: Se aconseja usar gvinum en vez de vinum para el FreeBSD 5.3. En principio es una reimplementación de vinum, pero todavía no tiene todas las funcionalidades de vinum. Kerneltrap publicó un artículo sobre el tema en Febrero 2004

NOTA2: Es interesante también el mensaje What's the status of vinum? sobre el estado de vinum a finales de FreeBSD5.2

NOTA3: También es bueno echar una mirada a la FreeBSD 5.3-RELEASE Errata

Tuesday, 7 December 2004, 6:17:13 pm
Cómo añadir nuevos discos y modificar la config de FreeBSD Según esta página, basta con hacer un:
 # /stand/sysinstall
Y te aparece el menú de configuración del sistema. Le das "(C)onfigure" y luego ya fdisk o lo que quieras...

Friday, 3 December 2004, 8:21:26 am

Descripción del proyecto

Apuntes de Luis sobre cómo instalar FreeBSD con RAID usando Vinum Manager para ser usado de servidor de NFS (si es para ser usado como servidor de NFS o no, eso ya es a gusto del consumidor). QUEDAN UNAS COSILLAS POR CONTAR.

FreeBSD dispone de Vinum Volume Manager, un dispositivo controlador de bloques que permite gestionar RAID mediante software.
Vinum implementa varios niveles de jerarquía de objetos.
  1. El volumen: Así se llama al disco virtual.
  2. El plex: Los plexes son los elementos que componen los volúmenes. Representan el espacio de dirección total de éstos.Pueden ser tratados como discos individuales en un array con imagen especular.
Cada volumen puede contener entre 1 y 8 plexes.
  1. El subdisco: Unix permite hacer particiones limitadas de sus discos. Vinum permite hacer divisiones de las particiones en áreas contiguas, llamadas subdiscos. Puede haber cualquier número de divisiones o subdiscos. Hay un pequeño espacio de memoria de la partición que no puede ser destinada a almacenamiento, y que guarda información del estado y la configuración del modo de almacenamiento.

Vinum implementa dos tipos de "plexes":
  1. Concatenados: Se utiliza el espacio de dirección de cada subdisco.
  2. Por franjas (striped): Distribuye los datos por franjas en varios subdiscos. Debe haber al menos 2 subdiscos y todos los subdiscos deben tener el mismo tamaño.

Características de cada tipo de plex
Concatenado:
:-)Más flexibilidad, pueden contener cualquier número de subdiscos, que pueden tener distinto tamaño. Se pueden añadir nuevos subdiscos. La cantidad mínima de subdiscos es 1. Gran almacenamiento de datos con flexibilidad máxima de emplazamiento, pero rendimiento moderado.
:-( Alta posibilidad de que algunos subdiscos estén muy activos y otros no.

Por franjas:
:-) Alto rendimiento para accesos altamente concurrentes.
:-( Más complejidad de código. No se pueden añadir nuevos subdiscos. Los subdiscos han de tener el mismo tamaño. La cantidad mínima de subdiscos es 2.


La orden de ejecución es:
# vinum create -v configfile
Parámetros:
v: Se muestra información sobre la acción realizada (Prescindible pero se recomienda).
configfile: El nombre del fichero de configuración, en el que se definen los objetos Vinum.


Definición del fichero de configuración
drive parametros
volume parametros
plex parametros
subdisk | sd parametros (sd es realmente un parámetro de plex. La idea de subdisk es la declarar los subdiscos no necesariamente a continuación de la declaración de plex, pero resulta "más cómodo" aprovecharse de )

drive define un dispositivo/disco duro/drive o como se quiera llamar.
volume define un volumen, plex un ídem y sd un subdisco.

SINTAXIS drive
drive nombre_drive device nombre_dispositivo
device nombre_dispositivo: Especifica el dispositivo en el que el drive reside.nombre_dispositivo debe ser el nombre de una partición de disco, por ejemplo, /dev/da1
OTROS PARAMETROS (SE PUEDEN PRESCINDIR DE ELLOS AL INSTALAR, TE LO PUEDES SALTAR)
hotspare: Define el drive de tal modo que sustituye un disco estropeado. Este disco no se puede usar para ningún otro propósito, ni se puede crear subdiscos en él. No ha sido desarrollado por completo.

SINTAXIS volume
volume nombre_volume
OTROS PARAMETROS (SE PUEDEN PRESCINDIR DE ELLOS AL INSTALAR, TE LO PUEDES SALTAR)
readpol policy: Define una política de lectura para el volumen. policy puede ser round o prefer. round especifica que la lectura debe llevarse a cabo de un plex distinto con una política round robin. La política de lectura prefer realiza la lectura todas las veces del plex especificado.
setupstate AUN NO LA HE MIRADO, parece un poco rollo.

SINTAXIS plex
plex org organización volume nombre_volumen sd parámetros_de_sd

org organización: Se indica la organización que sigue el plex. organización puede tomar los siguientes valores: concat, striped, raid5. Si se elige striped o raid5, se debe especificar el tamaño de la franja. Se recomienda que el tamaño de franja no sea menor que 128kb. Un tamaño apropiado estaría entre 256 y 512 kb. Se supone que no se van a hacer instalaciones de RAID-5, sino de RAID-1 o RAID-4, así que eso no me he mirado el valor de organización raid5.
volume: Se añade el plex al volumen indicado, si no se usa este parámetro, se añade al último volumen mencionado en el fichero de configuración.

OTROS PARAMETROS (SE PUEDEN PRESCINDIR DE ELLOS AL INSTALAR, TE LO PUEDES SALTAR)
name nombre_plex: Se utiliza para dar nombre o renombrar un plex. Cuando se crea, no es necesario utilizar este parámetro ya que le da un nombre por defecto. Este nombre es nombre del volumen que lo contiene, con extensión px, donde x es el número de plex en ese volumen (nombre_volumen.px).

SINTAXIS sd
sd length tamaño drive nombre_drive
length: Indica el tamaño del subdisco seguido de la unidad de tamaño que se considera. Puede ser s (512 bytes), k (a nivel de kilo bytes, 1024 bytes), m (a nivel de megabyte, 1048576 bytes), g (a nivel de gigabytes 1073741824 bytes).
drive: Indica el drive en el que el subdisco va a residir. Por defecto, reside en el último drive especificado.

OTROS PARAMETROS (SE PUEDEN PRESCINDIR DE ELLOS AL INSTALAR, TE LO PUEDES SALTAR)
plex nombre_plex: Indica el plex al cual pertenece el subdisco. Por defecto, es el último especificado. (Se supone que cuando se escriben los subdiscos en el fichero de configuración, se escribirán después del plex declarado, por lo que se puede pasar de este parámetro).
name nombre_subdisco: Especifica el nombre del subdisco. Durante la instalación se da un nombre por defecto, al igual que sucede con plex. Este nombre es el nombre del plex (que por defecto es nombre del volumen que contiene al plex, con extensión .px), con extensión .sx, siendo x el número de subdisco en el plex (nombre_volumen.pi.sj).
plexoffset desplazamiento: Especifica el desplazamiento inicial del subdisco en el plex. Si no se especifica este parámetro a través de la palabra clave plexoffset, se coloca el subdisco a continuación del último subdisco que hubiese en ese plex, si no hubiese ninguno se situaría al principio del ídem.
driveoffset desplazamiento: Especifica el desplazamiento inicial del subdisco en el drive. Si no se especifica este parámetro a través de la palabra clave driveoffset, se coloca el subdisco a continuación del último subdisco que hubiese en ese drive, si no hubiese ninguno se situaría al principio del ídem.
retryerrors Especifica que el subdisco no debe "caer" si se produce un error irrecuperable.Normalmente Vinum hace inaccesible el subdisco que sufre un error irrecuperable.

EJEMPLOS (Sacados de la página de freeBSD)
Ejemplo de fichero de configuración para hacer mirroring de un volumen
Disponemos de dos particiones de disco. Creamos un volumen con dos plexes (uno para cada partición, de modo que tengamos en una partición la imagen espacular de la otra). Los definimos como plexes concatenados y definimos para cada plex un subdisco de 512m, indicando el drive donde van a ser alojados. Lógicamente se alojan los subdiscos en drives distintos.

drive a device /dev/da3h
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive b


Se dispone de un sistema en el que se van a definir 4 drives, llamados drive1, drive2, drive3 y drive4. Los drives residen en particiones de disco /dev/da1h,...,/dev/da4h.

drive drive1 device /dev/da1h
drive drive2 device /dev/da2h
drive drive3 device /dev/da3h
drive drive4 device /dev/da4h

Se define 1 volumen con un plex por franjas. El nombre del volumen es tinyvol.Se indica que el plex es por franjas precediéndolo por la palabra clave org, y se indica su tamaño (279k). Se definen 2 subdiscos(mínimo número si es striped) indicándose el tamaño del subdisco length 64m (megas) y el drive en el que se emplazan drive2, drive4.

volume tinyvol
plex org striped 279k
sd length 64m drive drive2
sd length 64m drive drive4

volume stripe
plex org striped 279k
sd length 512m drive drive2
sd length 512m drive drive4

Se define un volumen que va a tener 2 plexes concatenados, eso se indica usando concat tras la palabra clave org en la defición del plex. Se indican los tamaños de los subdiscos y los drives a los que pertenecen los subdiscos.

volume concat
plex org concat
sd length 100m drive drive2
sd length 50m drive drive4
plex org concat
sd length 150m drive drive4

Se define un volumen que va a tener 2 plexes, uno concatenados y el tro por franjas.Se indican los tamaños de los subdiscos y los drives a los que pertenecen los subdiscos. Para el caso concatenado se definen 2 subdiscos de tamaño 150 y 50 megas, asicomo los drives en que se encuentran. Para el plex por franjas, se definen 2 subdiscos (número de subdiscos mínimo para plex por franjas) de 100m (han de tener el mismo tamaño), y se indican los drives en los que se encuentran. Por supuesto, también se indica en la definición del plex por franja el tamño de la franja.

volume strcon
plex org striped 279k
sd length 100m drive drive2
sd length 100m drive drive4
plex org concat
sd length 150m drive drive2
sd length 50m drive drive4