Ce guide explique comment configurer un serveur NFS et un client NFS sur CentOS 7. 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. J'utiliserai un serveur minimal CentOS 7.2 comme base pour l'installation.
1 Remarque préliminaire
J'utilise ici deux systèmes CentOS :
- Serveur NFS :serveur.exemple.com, adresse IP :192.168.1.100
- Client NFS :client.exemple.com, adresse IP :192.168.1.101
J'utiliserai l'éditeur nano dans ce tutoriel pour modifier les fichiers de configuration. Nano peut être installé comme ceci.
yum -y install nano
2 Configurer le pare-feu
Je recommande d'installer un pare-feu. Si vous n'avez pas encore installé firewalld et que vous souhaitez utiliser un pare-feu, installez-le avec ces commandes :
yum -y install firewalld
démarrez le pare-feu et activez-le au démarrage.
systemctl start firewalld.service
systemctl enable firewalld.service
Ensuite, ouvrez les ports SSH et NFS pour vous assurer que vous pourrez vous connecter au serveur par SSH à des fins d'administration et par NFS à partir de notre client NFS.
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --reload
3 Installation de NFS
serveur :
Sur le serveur NFS, nous exécutons :
yum -y install nfs-utils
Ensuite, activez et démarrez le service du serveur nfs.
systemctl enable nfs-server.service
systemctl start nfs-server.service
client :
Sur le client, nous pouvons installer NFS comme suit (c'est en fait la même chose que sur le serveur) :
yum install nfs-utils
4 Exporter des répertoires sur le serveur
serveur :
J'aimerais rendre les répertoires /home et /var/nfs accessibles au client ; il faut donc les "exporter" sur le serveur.
Lorsqu'un client accède à un partage NFS, cela se produit normalement en tant qu'utilisateur nfsnobody. Habituellement, le répertoire /home n'appartient pas à nfsnobody (et je ne recommande pas de changer sa propriété en nfsnobody !), et parce que nous voulons lire et écrire sur /home, nous disons à NFS que les accès doivent être effectués en tant que root (si notre partage /home était en lecture seule, cela ne serait pas nécessaire). Le répertoire /var/nfs n'existe pas, nous pouvons donc le créer et changer sa propriété pour l'utilisateur et le groupe nfsnobody.
mkdir /var/nfs
chown nfsnobody:nfsnobody /var/nfs
chmod 755 /var/nfs
Maintenant, nous devons modifier /etc/exports où nous "exportons" nos partages NFS. Nous spécifions /home et /var/nfs comme partages NFS et disons à NFS d'accéder à /home en tant que root (pour en savoir plus sur /etc/exports, son format et les options disponibles, consultez
man 5 exports
)
nano /etc/exports
/home 192.168.1.101(rw,sync,no_root_squash,no_subtree_check) /var/nfs 192.168.1.101(rw,sync,no_subtree_check)
(L'option no_root_squash permet d'accéder à /home en tant que root.)
Chaque fois que nous modifions /etc/exports, nous devons exécuter :
exportfs -a
par la suite, pour que les modifications soient effectives.
5 Monter les partages NFS sur le client
client :
Nous créons d'abord les répertoires où nous voulons monter les partages NFS, par exemple :
mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs
Ensuite, nous pouvons les monter comme suit :
mount 192.168.1.100:/home /mnt/nfs/home
mount 192.168.1.100:/var/nfs /mnt/nfs/var/nfs
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
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.1.100:/home 28G 1.2G 27G 5% /mnt/nfs/home
192.168.1.100:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs
et
mount
[[email protected] ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/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/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
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)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
192.168.1.100:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
6 Tests
Sur le client, vous pouvez maintenant essayer de créer des fichiers de test sur les partages NFS :
client :
touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt
Allez maintenant sur le serveur et vérifiez si vous pouvez voir les deux fichiers de test :
serveur :
ls -l /home/
[[email protected] ~]# ls -l /home/
total 0
drwx------. 2 administrator administrator 59 Jun 21 16:13 administrator
-rw-r--r--. 1 root root 0 Jun 29 13:07 test.txt
ls -l /var/nfs
[[email protected] ~]# ls -l /var/nfs
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun 29 13:07 test.txt
(Veuillez noter les différentes propriétés des fichiers de test :le partage /home NFS est accessible en tant que root, donc /home/test.txt appartient à root ; le partage /var/nfs est accessible en tant que personne/65534, donc /var/ nfs/test.txt appartient à 65534.)
7 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 /mnt/nfs/home nfs rw,sync,hard,intr 0 0 192.168.1.100:/var/nfs /mnt/nfs/var/nfs 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, redémarrez le client :
reboot
Après le redémarrage, vous devriez trouver les deux partages NFS dans les sorties de
df -h
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.1.100:/home 28G 1.2G 27G 5% /mnt/nfs/home
192.168.1.100:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs
et
mount
[[email protected] ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/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/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
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)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
192.168.1.100:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
8 liens
- NFS Linux :http://nfs.sourceforge.net/
- CentOS :http://www.centos.org/