Sistemas de archivo de red

per Victor Carceler darrera modificació 2020-03-25T15:30:44+01:00

Los sistemas de archivo de red permiten acceder a ficheros remotos como si estuviesen en un medio de almacenamiento local. Gracias al sistema de archivos de red un ordenador cliente puede acceder a sistemas de archivos que exporta el servidor, con independencia del sistema de archivos de disco que se utiliza en el servidor.

Algunos sistemas de archivos de red son:

Network fs
comentario
SMB/CIFS
Es el sistema nativo de Windows.
Permite navegar por los recursos ofrecidos y está orientado al funcionamiento en LAN
NFS
Es el sistema nativo de Unix.
No está pensado para navegar por los recursos y funciona en WAN
Coda
El cliente guarda de forma local los ficheros de trabajo, para asegurar la disponibilidad cuando no existe conexión de red
Intermezzo Inspirado en Coda pero diseñado de nuevo
Lustre
Nuevo desarrollo destinado a supercomputación. Para grandes clusters o procesadores masivamente paralelos (MPP).

NFS - Network File System

NFS permite que un servidor exporte un sistema de ficheros, y uno o varios clientes, lo monten para utilizarlo como un sistema de ficheros local. La comunicación entre el servidor y el cliente se realiza a través de la red, utilizando el protocolo NFS. El sistema de ficheros de disco que utiliza físicamente el servidor es irrelevante para el cliente.

NFS es enrutable, de manera que el servidor y el cliente pueden estar en diferentes redes comunicadas por un conjunto de routers.

Configurando el servidor NFS

El servidor NFS está empaquetado para la mayoría de las distribuciones de GNU/Linux, por ejemplo, en Mandriva 2006 el servidor está incluido en el paquete nfs-utils-1.0.7-6mdk.i586.rpm

Una vez instalado, es posible arrancar el servicio NFS desde el shell

[root@localhost ~]# /etc/init.d/nfs start
Iniciando servicios NFS: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@localhost ~]#

El fichero de configuración del servidor NFS es /etc/exports. En este fichero se incluirá una línea por cada recurso (directorio) a exportar. Cuando se exporta un directorio se debe indicar:

  • Quien podrá montar dicho directorio remoto: Es posible indicar la dirección IP de un ordenador o una red, un nombre DNS o grupos de red NIS. Es posible utilizar los comodines '*' y '?' al utilizar nombres DNS. La página de manual de exports ofrece información detallada.
  • Las opciones con las que se exporta (lectura/escritura, sólo lectura, etc...)

Un fichero /etc/exports de ejemplo puede contener:

# Exportamos la raíz en modo RW para master y trusty
/ master(rw) trusty(rw,no_root_squash)
# Es posible utilizar comodines en los nombres DNS pero no cuando se utilizan IPs
/projects proj*.local.domain(rw) pc??.dominio.com(ro)
/usr *.*.dominio.com(ro)
# También se puede especificar una sola máquina con tdoas sus opciones
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
# Cuando no se especifica ninguna máquina es para todas
/pub (ro,insecure,all_squash)
# También es posible especificar máquinas indicando su ip o red
/home/fred 192.168.0.1(ro) 192.168.10.0/24(ro) 192.168.11.0/255.255.255.0(ro)

Es muy importante que las opciones de exportado estén junto a la definición de la máquina, si las separa un espacio se supondrá que las opciones son para todo el mundo. Cuando se realicen cambios al fichero de configuración /etc/exports, se deberá reiniciar el servidor o bien pedirle que vuelva a leere el fichero de configuración.

[root@localhost ~]# /etc/init.d/nfs reload

Opciones de exportado para los recursos NFS

Cuando en un servidor NFS se exporta un directorio es necesario indicar las opciones con las que será exportado. Es muy importante prestar atención a estas opciones, pues de ellas dependerá el acceso que los clientes podrán realizar al sistema de ficheros compartido en red.

OpciónFunción
ro
Exporta en modo de sólo lectura. Este es el modo por defecto.
rw
Exporta en modo de lectura/escritura.
sync
El servidor NFS no responde al cliente hasta que los cambios no se han realizado físicamente en disco. Este es el modo por defecto.
async
El servidor NFS responde al cliente antes de que los cambios se hayan realizado físicamente en disco.
Se consigue un mejor rendimiento a costa de la integridad de los datos en el caso de que se reinicie el servidor.
secure El servidor sólo atenderá a clientes que hagan peticiones desde puertos menores que 1024. Este es el modo por defecto.
insecure Atiende a clientes aunque la petición no se realice desde un puerto inferior a 1024.
root_squash El servidor mapea las solicitudes del uid/gid 0 del cliente al usuario/grupo anónimo del servidor. Opción por defecto.
no_root_squash Desactiva el mapeo del uid/gid 0 al usuario/grupo anónimo.
all_squash El servidor mapea las solicitudes de cualquier uid/gid del cliente al usuario/grupo anónimo del servidor.
no_all_squash
Se desactiva el mapeo a usuario/grupo anónimo del servidor las peticiones de cualquier uid/gid del cliente. Opción por defecto.
anonuid
Permite especificar el UID del usuario anónimo en el servidor.
anongid
Permite especificar el GID del usuario anónimo en el servidor.

Montando sistemas de ficheros remotos

Para montar un sistema de ficheros remóto sólo necesitamos tener instalado un cliente NFS. En el caso de Mandriva 2006, el cliente está en el paquete: nfs-utils-clients-1.0.7-6mdk

Para montar un sistema de archivos NFS se utiliza la siguiente sintáxis:

mount nombredelservidor:/directorio/exportado /punto/de/montaje

Al montar un sistema de ficheros, es posible indicar diferentes opciones (la página de manual de mount tiene información detallada)

OpciónFunción
ro Montar en modo de sólo lectura.
rw Montar en modo de lectura/escritura.
bg Montar en segundo plano. Si no es posible montar inmediatemente el recurso remoto, se sigue intentando en segundo plano.
soft/hard
Controlan el comportamiento de los procesos que intentan utilizar un servidor NFS que no responde. Si el sistema de archivos se montó con la opción 'soft' el proceso que intenta utilizar un servidor que no responde recibirá un error. La mayoría de los programas no están preparados para tratar estos errores.
Si la opción de montado es 'hard' el proceso quedará bloqueado mientras el servidor no responda, cuando el servidor responda continuará su ejecución. Se recomienda utilizar las opciones 'hard' y 'intr' en todos los sistemas de ficheros NFS.
intr Montaje que se puede interrumpir. Los procesos pendientes de entrada/salida se pueden interrumpir y cancelar la operación.
wsize/rsize Número de bytes que se escriben/leen de la red en una sóla operación. Afecta al rendimiento.

Obteniendo información sobre el servicio NFS

El programa nfsstat proporciona estadísticas de uso del servidor NFS

[root@valinor ~]# nfsstat
Server rpc stats:
calls badcalls badauth badclnt xdrcall
51 0 0 0 0
Server nfs v3:
null getattr setattr lookup access readlink
16 37% 15 34% 0 0% 0 0% 0 0% 0 0%
read write create mkdir symlink mknod
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
fsstat fsinfo pathconf commit
0 0% 12 27% 0 0% 0 0%

[root@valinor ~]#

También es posible consultar la lista de directorios exportados por un servidor mediante el comando showmount.

 

Sobre las diferentes versiones de NFS y sus transportes

 

Existen diferentes versiones del protocolo NFS:

  • NFSv1: Nunca se ha utilizado en producción, fué un desarrollo interno de Sun
  • NFSv2: Se ha utilizado extensamente. Es un sistema de ficheros de 32 bits y por tanto el tamaño máximo de un fichero son 4GiB. Es potencialmente peligroso utilizarlo en el modo asíncrono.
  • NFSv3: Es la versión más extendida y es la versión utilizada por defecto en las distribuciones de GNU/Linux para montar un recurso remoto con NFS. Elimina el límite de los 4GiB por fichero y mejora la estabilidad en
  • NFSv4: Es una nueva reescritura del protocolo realizada por el IETF. Agrega nuevas funciones y ya no utiliza los servicios portmap ni rpc. Sólo puede utilizar TCP como transporte.

Las distribuciones actuales de GNU/Linux pueden actuar como servidor y cliente de NFS v2, v3 y v4. Aunque normalmente, a la hora de montar un recurso remoto, por defecto intentan utilizar la v3 del protocolo.

Las versiones v2 y v3 están basadas en un protocolo de comunicaciones sin estado. De manera que el servidor se puede reiniciar mientras atienda a los clientes sin que se pierda la conexión. La versión v4 del protocolo utiliza estados y aporta la lógica necesaria para gestionar las desconexiones de red.

Las versiones v2 y v3 pueden utilizar como protocolo de transporte TCP o UDP siendo TCP la opción recomendada de forma general, la versión v4 debe funcionar sobre TCP. UDP es un protocolo más ligero que TCP, pero no está orientado a conexión ni ofrece reordenamiento de la secuencia de datagramas ni es confiable. Tradicionalmente los servidores NFS han utilizado UDP como protocolo de transporte por defecto pero se ha demostrado que en muchas ocasiones ofrece un mal rendimiento y en redes rápidas puede suponer riesgos para la integridad de los datos que se transportan. El transporte recomendado para NFS es TCP.

 

SMB/CIFS - Server Message Block/Common Internet File System

www.Samba.org

logo_SAMBA.gif

El protocolo SMB fue diseñado originalmente por IBM, pero actualmente la versión más extendida del mismo es la implementada por Microsoft en sus sistemas operativos, hoy en día denominada CIFS. En Unix existe el servicio Samba que implementa un servidor y cliente para SMB/CIFS.

Entre las características del protocolo encontramos:

  • Permite compartir sistemas de archivos e impresoras
  • Tradicionalmente ha utilizado NetBIOS/NetBEUI aunque las versiones nuevas pueden funcionar encima de TCP/IP. Cuando no se utiliza TCP/IP no existe posibilidad de enrutado, de manera que cliente y servidor deben estar en la misma red
  • El servicio permite explorar la red para descubrir máquinas y recursos compartidos
  • Tradicionalmente se ha utilizado una resolución de nombres WINS, aunque en las versiones nuevas (a partir de Windows 2000) se ha relegado en favor de DNS y Active Directory

 

Componentes:

ComponenteFunción
smbd Demonio que sirve los recursos en red, también se encarga de autentificar a los usuarios.
nmbd Demonio que implementa la resolución de nombres en el entorno de red de Microsoft. Permite navegar por los recursos de red.
/etc/smb.conf Fichero de configuración principal. Declara los recuros que se exportan en red.
/etc/smbpasswd
Fichero de claves para los usuarios SMB
smbclient Cliente para recuros SMB, permite obtener listados de crecursos compartidos y transferir ficheros con una funcionalidad similar a la de un cliente FTP
smbmount Permite montar recursos compartidos con SMB como si fuesen sistemas de archivos locales. También se puede utilizar: mount -t smb ...
smbpasswd
Permite cambiar la contraseña de red SMB para un usuario
smbstatus
Permite obtener información sobre el uso de recursos SMB
testparm
Comprueba el fichero de configuración
SWAT
Interfaz web para la administración del servicio Samba, por defecto atiende conexiones en el puerto 901

Configuración del servidor Samba

Samba es un software complejo que realiza diferentes funciones, sus ficheros de configuración se encuentran en /etc/samba y de todos ellos smb.conf es el principal, el que controla qué recursos se están exportando a la red.

El fichero /etc/samba/smb.conf está dividido en diferentes secciones. Normalmente cada sección se refiere a un recurso compartido en red, directorio o impresora, pero existen tres secciones especiales [global], [homes] y [printers], que se refieren respectivamente a las características globales del servidor, la forma en la que se exportan los directorios personales de los usuarios y la forma en la que se exportan en red las impresoras del servidor. La página de manual 5 smb.conf es una referencia para la configuración del servicio.

 

Otras opciones: Coda / Intermezzo / Lustre

Los sistemas de ficheros en red Coda e InterMezzo intentan dar soporte a dispositivos móviles que se conectan/desconectan con frecuencia de la red. Para permitir el funcionamiento de los clientes durante las desconexiones de red, estos guardan una copia local (caché) del sistema de archivos remoto. Cuando se restablece la conexión de red, los clientes envian los cambios locales al servidor. En este proceso pueden surgir conflictos (cuando dos o más clientes han hecho cambios locales sobre los mismos datos e intentan actualizar el servidor).

El sistema de archivos en red Lustre es el nuevo proyecto en el que participan los desarrolladores de InterMezzo, está destinado a la supercomputación y tiene por objetivo conseguir un gran rendimiento al tiempo que resuelve las necesidades de almacenamieno de grandes clusters o máquinas masivamente paralelas.

 

Más información: