GNU/Linux >> Tutoriels Linux >  >> Debian

Configurer un serveur et un client NFS sur Debian 9 (Stretch)

Ce guide explique comment configurer un serveur NFS et un client NFS sur Debian 9. NFS signifie Network File System; via NFS, un client peut accéder (lire, écrire) à un partage distant sur un serveur NFS comme s'il se trouvait sur le disque dur local. Dans ce didacticiel, je vais vous montrer deux exportations NFS différentes, l'exportation d'un répertoire client qui stocke les fichiers en tant qu'utilisateur personne/nogroup sans préserver les autorisations du système de fichiers et une exportation du répertoire /var/www qui préserve les autorisations et la propriété des fichiers, comme requis sur une configuration de serveur d'hébergement.

1 Remarque préliminaire

J'utilise ici deux systèmes Debian Wheezy :

  • Serveur NFS :serveur.exemple.com, adresse IP :192.168.1.100
  • Client NFS :client.exemple.com, adresse IP :192.168.1.101

2 Installer NFS

Assurez-vous que le serveur est à jour en mettant à jour les listes de packages et en installant les mises à jour en attente sur les deux serveurs

apt-get update
apt-get upgrade

Continuez ensuite avec l'installation du serveur et du client NFS.

serveur :

Sur le serveur NFS, nous exécutons :

apt-get install nfs-kernel-server nfs-common

Ensuite, nous créons les liens de démarrage du système pour le serveur NFS et le démarrons :

client :

Sur le client, nous pouvons installer NFS comme suit (c'est en fait la même chose que sur le serveur) :

apt-get install nfs-common

3 Exporter des répertoires sur le serveur

serveur :

J'aimerais rendre les répertoires /home/client1 et /var/www accessibles au client pour montrer les deux modes d'accès différents du serveur NFS. Le répertoire /home/client1 est partagé en mode standard, donc tous les fichiers écrits dans ce répertoire sont stockés en tant qu'utilisateur nobody et groupe nogroup. Pour le répertoire /var/www j'utilise l'option no_root_squash qui demande au serveur NFS de conserver les permissions et la propriété des fichiers. C'est par ex. nécessaire lorsque vous souhaitez exporter le répertoire /var/www d'un serveur Web géré avec ISPConfig 3

Je vais d'abord créer le répertoire /home/client1

mkdir /home/client1
chown nobody:nogroup /home/client1
chmod 755 /home/client1

Le répertoire /var/www existe probablement sur votre serveur. Si ce n'est pas le cas, créez-le :

mkdir /var/www
chown root:root /var/www
chmod 755 /var/www

Maintenant, nous devons modifier /etc/exports où nous "exportons" nos partages NFS. Nous spécifions /home/client1 et /var/www comme partages NFS et disons à NFS d'accéder à /home/client1 en tant qu'utilisateur personne (pour en savoir plus sur /etc/exports, son format et les options disponibles, consultez

man 5 exports

)

nano /etc/exports
/home/client1           192.168.1.101(rw,sync,no_subtree_check)
/var/www        192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)

(L'option no_root_squash fait que /var/www sera accessible en tant que root.)

Pour appliquer les modifications dans /etc/exports, nous redémarrons le serveur nfs du noyau

service nfs-kernel-server restart

4 Monter les partages NFS sur le Client

client :

Tout d'abord, nous créons les répertoires où nous voulons monter les partages NFS, par exemple :

mkdir -p /mnt/nfs/home/client1
mkdir -p /var/www

Si le répertoire /var/www existe déjà sur votre serveur, alors arrêtez apache, renommez le répertoire et créez un nouveau répertoire vide comme point de montage

service apache2 stop
mv /var/www /var/www_bak
mkdir -p /var/www

Ensuite, nous pouvons les monter comme suit :

mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1
mount 192.168.1.100:/var/www /var/www

Vous devriez maintenant voir les deux partages NFS dans les sorties de

df -h
[email protected]:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
udev 990M 0 990M 0% /dev
tmpfs 201M 6.0M 195M 3% /run
/dev/sda1 28G 1.2G 25G 5% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www
[email protected]:/tmp#

et

mount
[email protected]:/tmp# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
[email protected]:/tmp#

5 Tests

Sur le client, vous pouvez maintenant essayer de créer des fichiers de test sur les partages NFS :

client :

touch /mnt/nfs/home/client1/test.txt
touch /var/www/test.txt

Allez maintenant sur le serveur et vérifiez si vous pouvez voir les deux fichiers de test :

serveur :

ls -l /home/client1/
[email protected]:/tmp# ls -l /home/client1/
total 0
-rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt
[email protected]:/tmp#
ls -l /var/www
[email protected]:/tmp# ls -l /var/www
total 0
-rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt
[email protected]:/tmp#

(Veuillez noter les différentes propriétés des fichiers de test :le partage NFS /home/client1 est accessible en tant que personne/nogroup et appartient à personne/nogroup ; le partage /var/www est accessible en tant que root, donc /var/www/test .txt appartient à l'utilisateur et au groupe root.)

6 Montage des partages NFS au démarrage

Au lieu de monter manuellement les partages NFS sur le client, vous pouvez modifier /etc/fstab afin que les partages NFS soient montés automatiquement au démarrage du client.

client :

Ouvrez /etc/fstab et ajoutez les lignes suivantes :

nano /etc/fstab
[...]
192.168.1.100:/home/client1  /mnt/nfs/home/client1   nfs      rw,sync,hard,intr  0     0
192.168.1.100:/var/www  /var/www   nfs      rw,sync,hard,intr  0     0

Au lieu de rw,sync,hard,intr, vous pouvez utiliser différentes options de montage. Pour en savoir plus sur les options disponibles, consultez

man nfs

Pour tester si votre /etc/fstab modifié fonctionne, démontez les partages et exécutez mount -a :

umount /mnt/nfs/home/client1
umount /var/www
mount -a

Vous devriez maintenant voir les deux partages NFS dans les sorties de

df -h
[email protected]:/# df -h
Filesystem Size Used Avail Use% Mounted on
udev 990M 0 990M 0% /dev
tmpfs 201M 6.0M 195M 3% /run
/dev/sda1 28G 1.2G 25G 5% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www
[email protected]:/#

et

mount
[email protected]:/# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
[email protected]:/#

7 crédits

Ce didacticiel est basé sur le didacticiel Centos NFS Server de Falko Timme.

  • NFS Linux :http://nfs.sourceforge.net/
  • Debian :http://www.debian.org/

Debian
  1. Configuration d'un serveur et d'un client NFS sur Scientific Linux 6.3

  2. Installation du serveur et du client NFS sur CentOS 7

  3. Configurer un serveur et un client NFS sur Debian Wheezy

  4. Configuration d'un serveur et d'un client NFS sur CentOS 6.3

  5. Apprentissage de NFS via la configuration du serveur et du client

Comment configurer le client et le serveur NFS sous Linux

Comment configurer le serveur et le client NTP sur Debian 10

Comment configurer le serveur et le client NTP sur Debian 11

Comment configurer le serveur et le client NFS sur Debian 10

Installer le serveur et le client NFS sur Ubuntu

Client et serveur NIS