Esta guía explica cómo configurar un servidor NFS y un cliente de NFS. El acrónimo NFS significa Network File System; y como a través de NFS,
un cliente de acceso (lectura, escritura) compartirá con un servidor
NFS, el contenido de éste último como si de un disco local se tratara
1 Nota preliminar
- Servidor NFS: server.example.com, dirección IP: 192.168.1.34
- Cliente NFS: client.example.com, dirección IP: 192.168.1.33
2 Instalación NFS
servidor:
En el servidor NFS, ejecutamos:
yum install nfs-utils nfs-utils-lib
(apt-get install, si usa Debian/Ubuntu)
Entonces creamos los enlaces de inicio del sistema para el servidor NFS e iniciarlo:
chkconfig --levels 235 nfs on
service nfs start
o/etc/init.d/nfs start
cliente:
En el cliente podemos instalar NFS como sigue (esto es realmente lo mismo que en el servidor):
yum install nfs-utils nfs-utils-lib
3 Exportación directorios del servidor
servidor:
Me gustaría hacer que los directorios /home y /var/nfs fueran accesibles al cliente; por lo tanto debemos "Exportarlos" en el servidor.
Cuando un cliente accede a un recurso compartido de NFS, sucede normalmente como el usuario nobody. Generalmente el directorio /home no es propiedad de nadie (y no lo recomiendo cambiar su propiedad a nadie!), porque si queremos leer y escribir en /home, decimos al NFS que los accesos deben hacerse como root (si nuestra cuota/Inicio era de sólo lectura, esto no sería necesario). No existe el directorio /var/nfs , así que debemos crearlo y cambiar su propiedad; en mis pruebas el usuario y grupo nobody tiene el ID el 99 en ambos mis sistemas de prueba de CentOS (servidor y cliente); Cuando traté de escribir a /var/nfs desde el cliente NFS, tengo un error de permiso denegado , así que hice un chmod 777 /var/nfs para que todo el mundo pudiera escribir en ese directorio.
mkdir /var/nfs
chmod 755 /var/nfs
Ahora debemos modificar /etc/exports donde "exportamos" nuestras acciones NFS. Especificamos /home y /var/nfs como compartidos e indicamos al servidor NFS que los accesos a /home se hagan como root (para aprender más acerca de /etc/exports, su formato y opciones disponibles, echa un vistazo a)
man 5 exports
Recuerde (en este ejemplo):
- Servidor NFS: server.example.com, dirección IP: 192.168.1.34
- Cliente NFS: client.example.com, dirección IP: 192.168.1.33
vi /etc/exports
/home 192.168.1.33(rw,sync,no_root_squash,no_subtree_check) /var/nfs 192.168.1.33(rw,sync,no_subtree_check) |
(La opción no_root_squash permite acceder como root a /home.)
Cada vez que modificamos /etc/exports, debemos ejecutar:
exportfs -a
para hacer efectivos los cambios.
cliente:
Primero creamos los directorios donde queremos montar las acciones NFS, por ejemplo:
mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs
Posteriormente, podemos montarles como sigue (debemos hacerlo como root, o escribiendo sudo delante si es un usuario con permisos):
Recuerde (en este ejemplo):
- Servidor NFS: server.example.com, dirección IP: 192.168.1.34
- Cliente NFS: client.example.com, dirección IP: 192.168.1.33
mount 192.168.1.34:/home /mnt/nfs/home
mount 192.168.1.34:/var/nfs /mnt/nfs/var/nfs
Ahora debería ver las dos acciones NFS en las salidas de "df -h"
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G 2.2G 25G 8% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 250M 0 250M 0% /dev/shm
192.168.1.34:/home 28G 2.6G 25G 10% /mnt/nfs/home
192.168.1.34:/var/nfs
28G 2.6G 25G 10% /mnt/nfs/var/nfs
[root@client ~]#
y la salida simple de "mount"
[root@client ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.34:/home on /mnt/nfs/home type nfs (rw,addr=192.168.1.34)
192.168.1.34:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.1.34)
[root@client ~]#
5 Ensayo
En el cliente, ahora puede intentar crear archivos de prueba en el servidor NFS:
cliente:
touch /mnt/nfs/home/prueba.txt
touch /mnt/nfs/var/nfs/prueba.txt
Ahora vaya al servidor y compruebe que si puede ver ambos archivos de prueba:
servidor:
ls -l /home/
[root@server ~] # ls -l /home/
55540 total
-rw-r--r--1 root root 0 Sep 16 17:30 prueba.txt
[root@server ~] #
ls -l /var/nfs
[root@server ~] # ls - l /var/nfs
0 total
-rw-r--r--1 65534 65534 0 Sep 16 17:30 prueba.txt
[root@server ~] #
(Tenga en cuenta las diferentes propiedades de los archivos de prueba: el recurso compartido de NFS /home obtiene acceso como root, por lo tanto /home/test.txt es propiedad de root, obtiene acceso a la cuota de /var/nfs nobody , por lo tanto, es propiedad de nobody)
6 Montaje NFS acciones durante el arranque
En lugar de montar manualmente las acciones NFS en el cliente, se puede modificar /etc/fstab para que las acciones NFS se montan automáticamente cuando el cliente se inicia.
Recuerde (en este ejemplo):
- Servidor NFS: server.example.com, dirección IP: 192.168.1.34
- Cliente NFS: client.example.com, dirección IP: 192.168.1.33
cliente:
Abra /etc/fstab y agregue las siguientes lineas:
vi /etc/fstab
[...] 192.168.1.34:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0 192.168.0.34:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0 |
En lugar de rw, sync, hard, intr puede utilizar opciones de montaje diferentes. Para más información sobre las opciones disponibles, echa un vistazo a
man nfs
Para probar si está funcionando su modificado /etc/fstab, reinicie al cliente:
reinicio
Después del reinicio, encontrará las dos acciones NFS en las salidas de
df .-h
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G 2.2G 25G 8% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 250M 0 250M 0% /dev/shm
192.168.1.34:/home 28G 2.6G 25G 10% /mnt/nfs/home
192.168.1.34:/var/nfs
28G 2.6G 25G 10% /mnt/nfs/var/nfs
[root@client ~]#
y
mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.34:/home on /mnt/nfs/home type nfs (rw,sync,hard,intr,addr=192.168.1.34)
192.168.1.34:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,sync,hard,intr,addr=192.168.1.34)
[root@client ~]#
También te puede interesar tener la información cifrada y secreta, entonces deberías leer este artículo: