Capitulos de este wiki
  1. 1 Derechos
  2. 2 Prefacio
  3. 3 Creación del directorio raíz de los clientes
  4. 4 Creación de mas clientes

Servidor de Raíces NFS - Creación del directorio raíz de los clientes

3 - Creación del directorio raíz de los clientes

Tutorial creado por Ofer Maor. Extraido de: http://www.insflug.org/COMOs/Servidor-Raices-NFS-Como/Servidor-Raices-NFS-Como.html
22 de Diciembre de 2006

3.1 Creación del árbol de directorios

Antes que nada, es necesario crear la estructura de directorios en sí. Yo creo todos los clientes bajo /clients/nombre-maquina y usaré esto en los ejemplos que cito a continuación. No obstante, se puede cambiar por cualquier otro nombre. La primera etapa por tanto, consiste en crear los directorios relevantes en el que será directorio raíz del cliente. Se deben crear los siguientes directorios:

/bin 
/dev
/etc
/home
/lib
/mnt
/proc
/sbin
/server
/tmp
/usr
/var

y cualquier otro directorio que desee tener en su sistema.

Los directorios locales /proc y /dev deben ser utilizados separadamente por cada máquina, a diferencia del resto de directorios, que pueden estar compartidos parcial o completamente con el resto de los clientes.

3.2 Creación del sistema de archivos mínimo para arrancar

Creación del directorio /dev

Si bien el directorio /dev puede ser compartido, es mejor crearlo separado para cada cliente. Puede crear dicho directorio en el cliente con la macro MAKEDEV; sin embargo, en muchos casos resulta más simple copiarlo del servidor:

cp -a /dev /clients/nombre-maquina

Debe recordar que /dev/mouse, /dev/cdrom y /dev/modem son enlaces simbólicos a los dispositivos actuales y por tanto, asegurarse de que queden enlazados correctamente para apuntar al hardware correspondiente del cliente.

Copia de los binarios necesarios

Aunque montemos todo desde el servidor, existe un grupo de binarios que necesitamos copiar para cada cliente. Para empezar, necesitamos "init", ya que nuestro sistema no podrá ejecutar nada antes de inicializarse (como su autor indica en los comentarios sobre el programa).

Por tanto, primero deberá copiar /sbin/init al directorio /sbin del cliente y como ejecutará rc.S, necesitará copiar /bin/sh al directorio /bin del cliente. Para poder montar necesitará copiar /sbin/mount al directorio /sbin del cliente.

Esto es lo mínimo, asumiendo que la primera línea de su rc.S es mount -av. No obstante, recomiendo copiar algunos archivos más: update, ls, rm, cp y umount, y así disponer de las herramientas básicas en caso de que el cliente tenga problemas para montar. Si elige tener el swap habilitado antes de montar, también tendría que copiar el binario swapon.

Ya que muchos de estos binarios están por defecto compilados dinámicamente, necesitará copiar una pequeña parte de /lib:

cp -a /lib/ld.* /lib/libc.* /lib/libcurses.* /client/nombre-maquina/lib

También es posible enlazar los binarios a sí mismos, en lugar de copiarlos. Por favor, lea mis comentarios de la sección sec21 de este documento.

Tenga en cuenta que estamos asumiendo que el núcleo ha recibido todos los parámetros de red mientras se iniciaba. Si planea utilizar rarp o bootp, posiblemente necesite copiar también los binarios relevantes para esto.

Generalmente, se necesitará tener un mínimo de archivos disponibles para configurar la red y ejecutar rc.S hasta el momento en que se monta el resto del sistema de archivos.

El directorio /var

El directorio /var, en muchos casos, puede ser separado para cada cliente. Sin embargo, gran parte de la información puede estar compartida. Cree bajo el directorio del servidor un directorio llamado var. Montaremos el directorio /var de allí. Para crear el directorio local /var, simplemente escriba:

cp -a /var /clients/nombre-maquina

Ahora, tiene la posibilidad de elegir lo que desea separar, y lo que desea compartir. Para compartir cualquier directorio/archivo, elimínelo simplemente del directorio /var del cliente y enlácelo en al directorio /server/var. Tenga en cuenta que debe enlazar tanto para /server/var como para ../server/var pero NO para /clients/nombre-maquina/server/var ya que esto no funcionará cuando cambie el directorio raíz en cada cliente.

Generalmente recomiendo separar /var/run, /var/lock, /var/spool y /var/log.

El resto de los directorios

  • /etc se explica en la siguiente sección.
  • /mnt y /proc son para propósitos locales de cada cliente
  • /usr y /home son solamente para montar
  • /tmp depende de Usted. Se puede crear un directorio tmp diferente para cada cliente, o crear un directorio /clients/tmp y montarlo para cada cliente en /tmp. Yo recomiendo darle a cada cliente un directorio tmp separado.

3.3 Preparación del directorio /etc y configuración de losclientes

Tenga en cuenta lo siguiente: esta sección se refiere a la creación del directorio etc que está preferentemente compartido entre los clientes. Si sus clientes sin disco tienen administradores de sistema diferentes, lo mejor es configurar un directorio etc para cada cliente.

Creación del árbol etc de los clientes

Aunque separemos el directorio etc para los clientes, mantendremos compartida una gran parte de los archivos que allí se encuentran. Creo que compartir los archivos con el /etc del servidor es mala idea, y recomiendo crear un directorio /clients/etc que contenga la información compartida entre los clientes. Para arrancar con esto, simplemente copie el contenido del /etc del servidor en el directorio /clients/etc.

Se deberá colocar en este directorio todos los archivos de configuración que no sean específicos para una máquina, como pueden ser motd, issue, etc. y no los que sean específicos del cliente, como inittab o fstab.

El cambio más importante que deberemos realizar estará bajo el directorio rc.d. Primero, deberemos cambiar rc.inet1 para que refleje la configuración local. Yo paso al núcleo todos los parámetros de red usando LILO/Loadlin, por lo que quito todo lo relacionado del archivo rc.inet1. Lo único que dejo allí son los binarios ifconfig y route del cliente. Si utiliza rarp o bootp, necesitará crearlo acorde a esto.

En segundo lugar, deberá editar su rc.S y eliminar todas las partes responsables de la comprobación por parte de fsck que tiene lugar cuando arranca el servidor. Debe encontrar la línea que monta su fstab, que se parecerá a:

mount -avt nonfs

El parámetro -t nonfs se debe a que los clientes normales ejecutan primero rc.S, usando después rc.inet1 para configurar la red. Como esto provoca que no sea montada ninguna partition NFS, la línea es ignorada, y por ello, se debe cambiar a mount -av. Si necesita ejecutar rarp/bootp para configurar la red, hágalo en rc.S (o incluya una llamada a alguna macro desde rc.S), antes de montar, y asegúrese de que sus directorios /bin y /sbin tengan disponibles los archivos necesarios.

Una vez se lleva a cabo mount -av, tendrá un sistema de archivos funcionando. Cree un fstab general, luego puede copiarlo en cada cliente. Su fstab debe ser aproximadamente como este:

  server/nfs                                    default  1 1
  server:/bin           /bin            nfs     default  1 1
  server:/usr           /usr            nfs     default  1 1
  server:/sbin          /sbin           nfs     default  1 1
  server:/home          /home           nfs     default  1 1
  server:/lib           /lib            nfs     default  1 1
  server:/clients/etc   /server/etc     nfs     default  1 1
  server:/clients/var   /server/var     nfs     default  1 1
  none                  /proc           proc    default  1 1

Asegúrese también de que el /etc/exports del servidor sea algo como:

  /clients/<nombre-máquina>      maquina.dominio(rw,no_root_squash)
  /clients/etc                  maquina.dominio(ro,no_root_squash)
  /clients/var                  maquina.dominio(ro,no_root_squash)
  /usr                          maquina.dominio(ro,no_root_squash)
  /sbin                         maquina.dominio(ro,no_root_squash)
  /bin                          maquina.dominio(ro,no_root_squash)
  /lib                          maquina.dominio(ro,no_root_squash)
  /home                         maquina.dominio(ro,no_root_squash)

Con excepción de la primera línea, que debe ser única para cada máquina, el resto de las líneas pueden ser reemplazadas por nombres que engloben a todas las máquinas (por ejemplo pc*.dominio). Le sugiero crear la mayoría de los directorios como sólo lectura, aunque esto es decisión suya. La indicación no_root_squash hará que los usuarios administradores de los clientes tengan también los permisos vigentes de root sobre nfsd. Revise la página man exports(5). Si desea que los usuarios puedan ejecutar passwd desde los clientes, asegúrese que /etc esté con permisos rw y no ro. Aunque esto no es obligatorio.

Por favor, tenga en cuenta otro detalle en el archivo rc.S. En Slackware, por defecto, se crea un nuevo /etc/issue y /etc/motd cada vez que se ejecuta. Esta función DEBE ser deshabilitada si dichos archivos son montados como sólo lectura desde el servidor, y recomiendo que estén deshabilitados en todos los casos.

Finalmente, si desea mantener la misma base de usuarios tanto en el servidor como en los clientes, deberá elegir entre:

  1. usar NIS (Páginas Amarillas - revise el NIS-Como), cada cliente deberá disponer, por separado, de un /etc/passwd y un /etc/group tal y como lo recibe del servidor NIS.
  2. En la mayoría de los casos, será suficiente con un simple enlace simbólico. Por lo tanto, necesitará o bien un enlace rígido (hardlink) de /clients/etc/passwd a /etc/passwd, o si prefiere, un enlace simbólico, enlazando /etc/passwd a /clients/etc/passwd (y no de la otra forma, ya que los clientes no montarán el directorio /etc del servidor). Haga lo mismo para /etc/group.

Creación del directorio /etc del cliente

Generalmente, la mayoría de los archivos en el /etc del cliente estarán enlazados simbólicamente con el directorio /server/etc. Sin embargo, algunos archivos son diferentes para cada máquina, y otros solamente tienen que estar allí cuando el núcleo los carga. Lo mínimo que se necesita en el directorio /etc es lo siguiente:

resolv.conf
hosts
inittab
rc.d/rc.S
fstab

Ya que estos cinco archivos pueden ser idénticos para todos los clientes, los puede simplemente enlazar rígidamente o copiarlos una y otra vez. No obstante, con los archivos rc.S y fstab debe tener presente que se necesita una copia separada para cada cliente. También necesitará separar el /etc/HOSTNAME de cada cliente. Yo personalmente recomiendo tener todos los archivos de rc.d separados para cada cliente, ya que la configuración de hardware puede variar de uno a otro.

Para cada cliente, agregue en el fstab una línea apropiada para el archivo de intercambio:

   /dev/particion_swap              swap    swap    default 1 1

Con el resto de los archivos del /etc del cliente, puede o bien enlazarlos rígidamente a los archivos /clients/etc/* o bien simbólicamente con /server/etc (ya que es el punto de montaje de /clients/etc/)

Asegúrese de que su máquina puede resolver apropiadamente, tanto a través de named como de etc/hosts. No es mala idea mantener el número IP del servidor en /etc/hosts, en lugar de contar con resolverlo. Si confía resolverlo con named solamente, cualquier problema con named puede impedir que sus clientes arranquen.

Arrancando

Ahora, todo lo que necesita hacer es iniciar su máquina, cruzar los dedos y esperar que todo funcione como debe :-).

Sé el primero en opinar


Tutoriales relacionados con 'Servidor de Raíces NFS'

El objetivo de este Mini-COMO es explicar cómo crear directorios en un servidor que los... Más »
El objetivo de este Mini-COMO es explicar cómo crear directorios en un servidor que los... Más »

Autor y licencia de 'Servidor de Raíces NFS'

Salvo que exista una aclaración en contra, los documentos COMO de Linux son propiedad de sus respectivos autores. Los documentos COMO de Linux pueden ser reproducidos o distribuidos en su totalidad o en parte, en cualquier medio físico o electrónico, siendo estas declaraciones de derechos aplicables a todas las copias. Se permite y fomenta las redistribuciones comerciales, pero en esos casos el autor debe ser notificado.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.