NFS : Mise en place d'un serveur NFS
Contents
1 Introduction
Le système de fichiers en réseau (Network File System NFS) est un protocole développé par Sun Microsystems qui permet à un ordinateur d'accéder à des fichiers via un réseau.
Ce système de fichiers en réseau permet de partager des données principalement entre systèmes UNIX. Des implémentations existent pour Macintosh ou Microsoft Windows.
NFS est compatible avec IPv6 sur la plupart des systèmes.
La mise en place d'un serveur NFS peut être utile dans certains cas comme un serveur TFTP ou bien pour éviter de passer par Samba qui est quand même une espèce de couche windows émulée.
Ce qui fait que niveau perf, ya pas à dire, le NFS c'est le top !
2 Installation
2.1 Debian
Allez hop :
apt-get |
apt-get install nfs-common nfs-user-server |
2.2 Solaris
Rien de spéciale à installer si ce n'est le serveur NFS :-).
3 Configuration
3.1 Debian
Les 3 fichiers de configuration principaux sont /etc/exports, /etc/hosts.deny et /etc/hosts.allow.
3.1.1 /etc/exports
Le fichier /etc/exports est très simple :
/etc/exports |
répertoire machine1(option11,option12) machine2(option21,option22) |
par exemple :
/etc/exports |
/home 192.168.0.10(rw) 192.168.0.25(ro) |
Pour les personnes qui ne veulent aucunes restrictions :
/etc/exports |
/home (rw,sync) |
Signifie que l'on autorisera la machine 192.168.0.10 à accéder à notre répertoire /home en lecture et écriture (rw) ainsi que la machine 192.168.0.25 mais uniquement en lecture (ro).
- répertoire : le répertoire du serveur à partager.
- machine : Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de "dns spoofing").
- options :
- ro : C'est la valeur par défaut, lecture seule.
- rw : La machine à un accès en lecture/écriture au répertoire.
- no_root_squash : Les accès par l'utilisateur root sur le serveur se font sous l'identité root, au contraire de nobody (par défaut) À UTILISER DE PREFERENCE POUR DES MESURE DE SÉCURITÉ
- sync : uniquement NFS v2, Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d'un mécanisme de commit-rollback donc cette option n'est pas utile.
- soft : permet de ne pas laisser NFS faire des accès en permanance pour vérifier que la ressource est disponible
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d'utilisateurs sur les deux machines. Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d'utilisateurs, tu peux tout simplement éditer /etc/group et /etc/passwd pour synchroniser ces numéros.
Il n'est pas recommandé d'exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS.
3.1.2 /etc/hosts.deny
Le plus simple est de tout interdire et de n'autoriser que certaines choses :
/etc/hosts.deny |
portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL |
Pour le fichier hosts.deny et hosts.allow, il n'y a même pas besoin des les remplir si on ne veut pas de restriction.
3.1.3 /etc/hosts.allow
Dans le même esprit, cela donne :
/etc/hosts.allow |
portmap:192.168.1.34 lockd:192.168.1.34 mountd:192.168.1.34 rquotad:192.168.1.34 statd:192.168.1.34 |
Il ne reste plus qu'à relancer le service :
/etc/init.d/nfs-server start |
3.2 Solaris
Configuration Files are :
- /etc/dfs/dfstab lists the resources to share at boot time.
- /etc/nfs/nfslogd.conf defines the location of the configuration logs that are used for NFS server logging.
- /etc/dfs/sharetab lists local resources that are currently being shared by the NFS server.
- /etc/rmtab lists the file systems remotely mounted by NFS clients. Do not edit this file.
- /etc/nfs/nfslog.conf lists information defining the location of the configuration logs used for NFS server logging.
3.2.1 dfstab
For example, here we have a home directory called /export/home/<dir_name> that's shared in read-only mode: Par exemple, si nous voulons partager en lecture seul le dossier /export/home/<dir_name> :
share |
share -o ro /export/home/<dir_name> |
3.2.2 Les démons
- mountd : handles file system mount requests from remote systems and provides access control. Not used in NFSv4.
- nfsmapid : is the NFS user and group ID mapping daemon, which is used with NFSv4.
- nfsd : handles client file system requests and is used with NFSv4.
- statd : works with the lockd daemon to provide crash recovery and functions for the lock manager.
- lockd : supports record locking operations on NFS files.
- nfslogd : provides operational logging for NFSv2 and v3.
With the Solaris 10 OS and NFSv4, you need only two daemons to support NFS: nfsmapid and nfsd. The mountd and lockd daemons are integrated together, and nfsmapid and nfsd are supported in NFSv4 with port 2049, which improves support for NFS through a firewall.
If you want to use NFSv2 or v3 with the Solaris 10 OS, all daemons are supported.
3.2.3 Starting and Stopping the NFS Server Service
The svc:/network/nfs/server service starts the NFS server daemons when the system enters run level 3.
To start the NFS server daemon manually, run this command:
svcadm |
svcadm enable svc:/network/nfs/server |
To stop the NFS server daemon manually, run this command:
svcadm |
svcadm disable svc:/network/nfs/server |
3.2.4 Checking NFS Dependencies
Check dependencies using the svcs command: {{command|svcs|
svcs | grep nfs svcs -l nfs/server
3.2.5 NFS Server Commands
- shareall : reads and executes statements from /etc/dfs/dfstab.
- shares : makes a local directory on the NFS server available for mounting.
- dfshares : when used without any arguments, displays resources currently being shared.
- dfmount : displays a list of NFS server directories that are currently mounted.
- unshare : makes file resources unavailable for mounting.
3.2.6 Configuring the NFS Server for Sharing
Syntax:
For example, if you want to share the /export/home/<dir_name> directory, make an entry like the following in the /etc/dfs/dfstab file :
share |
share -F nfs -o ro /export/home/<dir_name> |
In this example, -F specifies an NFS file system, -o ro specifies that access to the share is read-only, and /export/home/<dir_name> is the absolute path of the share.
Similarly, by using the -o rw option, you can specify that <pathname> is shared as read/write to all clients, and you can use -o root=<dir_name> to enable root privileges for the <dir_name> directory.
Syntax:
unshare |
unshare [-F <FSType>] [<pathname>] |
For example:
unshare |
unshare -F nfs /export/home/<dir_name> |
4 Client
4.1 Debian
Pour se connecter, super simple :
mount |
mount @IP:/mon/partage mon_point_de_montage |
4.2 Solaris
4.2.1 Mounting a Remote File System
Syntax:
mount |
mount [-F <FSType>] [-o <options>] <server>:<pathname> [<mount_point>] |
For example:
Another example:
mount |
mount -o ro Gladiator,Sun,Moon :/Central_data /mymountpoint |
In the second example, if the Gladiator system is unavailable, then the request will flow to the second system, which is called Sun, and so on.
4.2.2 Unmounting Remote File Systems From a Client
Syntax :
umount |
umount [<mount_point>] |
For example:
umount |
umount /mymountpoint |
4.2.3 Mounting Remote Resources at Boot Time
To mount a remote file system at boot time, make an entry in /etc/vfstab.
For example, add the following entry in the /etc/dfstab file:
5 Checks
If you want to check what kind of share is delivering a server, you can use this command :
showmount -e servernfs_ip_or_fqdn |
6 FAQ
6.1 mount(2): Protocol not supported
If you encounter this kind of issue while trying to mount a share on a client side:
That means you still have a connexion active on the server side. You can see it with showmount command:
showmount -a |
10.0.0.238:/mnt/nfs/dev/image_cache 10.0.0.238:/mnt/nfs/dev/image_upload 10.0.0.238:/mnt/nfs/dev/shared 10.0.0.238:/mnt/nfs/dev/templates 10.0.0.238:/mnt/nfs/dev/xmlcache |
To be able to remount the mount point, run this kind of command still on the server side:
exportfs |
exportfs -u 10.0.0.238:/mnt/nfs/dev/xmlcache |
Then try to remount and it will work.
7 Ressources
Setting Up An NFS Server And Client
http://www.sun.com/bigadmin/content/submitted/fundamentals_nfs.jsp
Setting Up An NFS Server And Client On Debian Lenny