-------------------------------------- -- Le NFS, mais c'est très simple ! -- -------------------------------------- Remarque liminaire ------------------ Si vous trouvez que ce texte est intéressant, vous pouvez le diffuser ou l'afficher sur votre page web, à condition de ne pas en tirer profit, et de ne pas le modifier. Les opérations décrites dans ce texte sont le fruit de mon expérience personnelle, et ont parfaitement fonctionnées chez moi. Cependant, si vous décidez de suivre mes conseils, je ne saurais être tenu responsable en cas de dommages liés à la mise en pratique de ceux-ci. Vous êtes encore là ? Bien. * Le NFS signifie "Network File System", et permet d'accéder depuis son poste aux fichiers d'un ordinateur raccordé au réseau. * Pour faire simple (et comme je n'en connais pas beaucoup plus), je vais vous parler de mon expérience personnelle qui consistait à faire communiquer TOTO avec JSEB, deux PC sous Linux Red Hat interconnectés par un réseau Ethernet (interfaces NE2000). 1) Le réseau, il fonctionne au moins ? -------------------------------------- C'est facile à vérifier. Il suffit de faire un "ping" vers la machine distante. Par exemple, depuis JSEB: "ping toto". Si les paquets passent, c'est bon. Sinon, le réseau est mal configuré. Si le réseau est bien configuré, allez à la section 2). 1.1 -- Configurer le réseau -- Je ne vous ferait pas l'affront de vous faire vérifier les connexions et les bouchons, mais vérifiez quand même, on ne sait jamais :) Il faut que vous ayez défini les adresses de vos machines dans "/etc/hosts". Par exemple, mon "hosts" contient: [root~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain 191.72.1.1 toto toto.reseau.com 191.72.1.2 jseb jseb.reseau.com Les deux machines "toto" et "jseb" forment le réseau. On peut leur attribuer n'importe quelle adresse, du moment qu'elle est de la forme IP, et qu'on ne souhaite pas se connecter à l'extérieur. Vous avez également besoin du fichier "networks" (toujours dans "etc"). Il contient l'adresse du réseau. Ici, l'adresse réseau reprend l'adresse IP des machines, en remplaçant le numéro des machines par un zéro (cela peut être différent selon la classe de réseau choisie, ce dont vous n'avez pas à vous préoccuper tant que vous restez en circuit fermé sur vos machines.) [root~]# cat /etc/networks reseau-net 191.72.1.0 (Notez bien le zéro à la fin de l'adresse). Ensuite, essayez (sur la machine JSEB) [root ~]# ifconfig eth0 JSEB netmask 255.255.255.0 Si ca marche, c'est bon, la carte NE2000 est reconnue. Sinon, il se peut que le driver soit disponible sous forme de module (dans /usr/lib/modules/net, regardez si il y a "ne.o". Si oui, chargez-le et recommencez le "ifconfig" ci-dessus). Si cela ne marche toujours pas, il ne vous reste plus qu'a recompiler votre noyau, mais avec l'option "support NE2000" activée, cette fois. Une fois que JSEB est reconnu, il faut le raccorder au réseau. [root ~]#route add reseau-net ("reseau-net" est le nom de mon réseau, définit dans "/etc/networks"). Faites l'opération symétrique avec TOTO: [root_toto~]# ifconfig eth0 toto netmask 255.255.255.0 [root_toto~]# route add reseau-net Retentez le "ping". Normalement, ça devrait passer. 1.2 -- Automatiser la config réseau -- Maintenant que ça marche, vous voudriez bien éviter de tout retaper à chaque boot. Il y a plusieurs manières de procéder : 1.2.1 - rc.sysinit On peut inclure les deux commandes vues précédemment (ifconfig & route) à la fin du fichier "/etc/rc.d/rc.sysinit". J'ai rajouté les deux lignes suivantes: /sbin/ifconfig eth0 (nom du poste) netmask 255.255.255.0 /sbin/route add reseau-net Cela fonctionne, mais au boot, le système prend maintenant un certain temps de "reflexion" quand il procède au "mounting remote system". En effet, les deux PCs sont rarement en service en même temps, et donc le réseau n'est pas actif. Au bout d'un certain temps, le système affiche "failed", et la séquence de boot continue. 1.2.2 - .bashrc On peut aussi éditer "/root/.bashrc" C'est un fichier de commande qui est exécuté à chaque login du root. Il correspond à une sorte de profil utilisateur pour bash, vous pouvez donc éditer un ".bashrc" appartenant à un autre utilisateur, à condition que celui-ci possède des droits suffisants. Rajoutez simplement à la fin de ce fichier les deux lignes habituelles : /sbin/ifconfig eth0 (nom du poste) netmask 255.255.255.0 /sbin/route add reseau-net Si vous faites cette modification, vous n'avez donc pas besoin de modifier "/etc/rc.d/rc.sysinit". Au boot, vous aurez un message du genre : "RPC PORT MAPPER FAILURE", car bien que le NFS soit activé, votre réseau n'est pas défini. Pas d'inquiétudes, tout se passera très bien par la suite. Personnellement, j'utilise cette méthode, afin d'éviter le long polling de la méthode du paragraphe 1.2.1 2) Bon, et le NFS dans tout ça ? -------------------------------- 2.1 -- mountd et nfsd, êtes-vous là ? -- Déja, vérifiez que "rpc.mountd" et "rpc.nfsd" tournent sur votre machine. Pour cela: [root~]# ps -aux (sur les deux machines) Si ils n'apparaissent pas dans la liste des processus, il faut les installer. Avec les RPM, il suffit de chercher un peu (du côté de "network", avec glint on les trouve tout de suite. Il y a deux packages à installer). 2.2 -- exporter un système de fichiers -- Si les démons tournent, c'est pratiquement du tout cuit : dans le fichier "/etc/exports", le poste indique le système de fichier qui sera exporté (disponible) vers les autres consoles. Par exemple, on veut, pour la machine JSEB, rendre visible toute son arborescence sur TOTO. Il faut pour cela écrire (dans "/etc/exports" de JSEB) / toto(rw) Si on veut juste exporter "/home", il faut écrire: /home toto(rw) Une fois la modif effectuée, relancez les démons : [root~]# killall -HUP /usr/sbin/rpc.mountd [root~]# killall -HUP /usr/sbin/rpc.nfsd Vous pouvez maintenant (en reprenant l'exemple de "exports" ci dessus) mounter l'arborescence de JSEB sur TOTO: [root_toto~]# mount jseb:/ /mnt et pour mounter uniquement le répertoire "/home" de JSEB sur toto: [root_toto~]# mount jseb:/home /mnt Notez bien que pour moi, rien à faire, même en relançant les démons. Finalement, je l'ai fait "à la Windows" : reboot, et re-tentative de mount sans rien faire d'autre. Et là, ça a marché! 2.3 -- la fichier FSTAB -- Dans l'exemple précédent, je me suis contenté de monter le système de fichiers distant avec les options de mountage par défaut. Vous pouvez définir une configuration avec le fichier FSTAB, ce qui permet d'affiner les paramètres tout en réduisant la ligne de commande. Comme tous les fichiers de configuration du système, FSTAB se trouve dans "/etc". Voici sa syntaxe: nom_du_point_de_montage endroit_ou_monter systeme_de_fichier options Par exemple, quand on veut monter "toto" depuis "jseb", on édite le fichier "/etc/fstab" sur la machine "jseb", et on rajoute: toto:/ /mnt nfs Par la suite, il suffit de taper: [root~]# mount toto:/ et "toto" se retrouvera monté dans "/mnt". Bien sûr, ces paramètres seuls ne sont pas très intéressants, car ils correspondent à la configuration NFS par défaut. Un fstab plus intéressant pour jseb serait: toto:/ /mnt nfs rsize=8192,wsize=8192 Ensuite, quand vous taperez: [root~]# mount toto:/ Vous vous retrouverez avec le système de fichier de "toto" dans le "/mnt" de "jseb", comme dans l'exemple précédent. Mais en plus, vous avez maintenant une taille de paquets émis (wsize) et reçus (rsize) de 8192 octets, au lieu de 1024 par défaut. Le gain de vitesse est très sensible (sur ma machine, le temps de copie d'un fichier de 2 Mo est divisé par 2.5). 3) Conclusion ------------- Je sais, "conclusion", ça fait pompeux, mais tant pis :) Voila c'est fini! N'oubliez pas de me contacter si j'ai écrit des bêtises, à l'adresse suivante: jseb@hexanet.fr Et maintenant, au lit les enfants: il vous reste tous les Hows-To liés au sujet à lire ! Sans oublier l'excellent "Network Administrator Guide" d'Olaf Kirch (disponible en français par ftp, traduction de René Cougnenc). Bonne nuit les gars :)