Gestion du stockage réseaux

Network File System (NFS) est un protocole Internet standard et prend en charge les autorisations Linux natives et les attributs de système de fichiers.

Les serveurs NFS exportent les répertoires et les clients NFS montent les répertoires exportés sur un point de montage local existant.

Les clients NFS peuvent monter les répertoires exportés de plusieurs façons :

  • Manuellement en utilisant la commande mount
  • De façon persistante au démarrage en configurant des entrées dans le fichier /etc/fstab
  • À la demande en configurant une méthode de montage automatique

Paquetages nécessaires

Pour utiliser correctement NFS, nfs-utils doit être pésent sur le système :

# dnf install nfs-utils

Montage des répertoires NFS exportés

Avant de monter un répertoire il faut qu’il existe. Il est possible d’utiliser /mnt comme point de montage temporaire.

# mkdir /mountpoint

Montage NON persistant

L’utilisation de la commande mount n’est PAS persistante

# mount -t nfs -o rw,sync server:/export /mountpoint

Les options :

  • -t nfs : spécifie le type de système de fichiers NFS
    • si server:/export : prend par défaut le type NFS
  • -o : ajouter une liste d’options
    • rw : système de fichiers exporté monté en rw
    • sync : transactions synchrones vers le système de fichiers exporté

Montage persistant

Pour monter de manière persistante une exportation NFS il faut modifier le fichier /etc/fstab en ajoutant une entrée correspondant au montage souhaité :

# vim /etc/fstab
[...]
server:/export /mountpoint nfs rw 0 0

La commande mount lira /etc/fstab pour obtenir les informations sur le serveur NFS et les options de montage.

# mount /mountpoint

Démontage manuel des répertoires NFS exportés

Commande unmount

Le démontage d’un partage avec unmount est NON persistant car l’entrée dans le fichier /etc/fstab n’est pas modifiée.

# umount /mountpoint

Erreur target is busy

Le démontage n’est pas possible si le système de fichiers monté est en cours d’utilisation, tous les processus doivent cesser d’accéder aux données du point de montage.

# umount /mnt/data
umount: /mnt/data: target is busy.

La commande lsof liste tous les fichiers ouverts et les processus qui accèdent au système de fichiers :

# lsof /mnt/data
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1337 root cwd DIR 253,14 16 128 /mnt/data
bash 1772 john cwd DIR 253,14 12 128 /mnt/data
lsof 1786 root cwd DIR 253,14 19 128 /mnt/data

Il suffit de kill tous les processus, si besoin à l’aide d’un -SIGKILL.

En cas de problème récalcitrant, il est possible d’utiliser umount -f pour forcer le démontage mais cela peut entraîner une perte de données sur les fichiers ouverts :

# umount -f /mnt

Montage des exports NFS avec l’automount

Autofs

Le service de montage automatique autofs monte et démonte automatiquement les systèmes de fichiers et les exportations NFS lorsque les ressources ne sont plus utilisées.

Si les utilisateurs n’ont pas les droits pour lancer un mount, ils ne pourront pas accéder aux supports amovibles (CD, DVD, disque externe, etc.), ni même aux systèmes de fichiers locaux ou distants s’ils ne sont pas déjà montés au démarrage via /etc/fstab.

Les systèmes de fichiers avec montage automatique ne sont pas montés lors du démarrage du système mais sont en revanche montés à la demande : uniquement quand un utilisateur ou une application tente d’y accéder.

Avantages des systèmes de fichier en automount :

  • n’utilisent quasiment pas de ressource
  • sont protégés contre toute corruption inattendue lorsqu’il sont ouverts
  • la configuration de montage la plus récente est utilisé (contrairement avec /etc/fstab)
  • sélectionne la connexion la plus rapide en cas de chemins redondants

Configuration de l’automount

Installation de paquets

Installation des paquetages autofs et nfs-utils :

# dnf install autofs nfs-utils

Principes

La configuration d’un automount se fait en 2 temps :

Création d’une mise en correspondance :

  • indirecte
    • fichier /etc/auto.<name>
    • work	-rw,sync	myservername:/shares/work
  • directe
    • fichier /etc/auto.direct
    • /mnt/docs	-rw,sync	myservername:/shares/docs

Création d’un schéma de correspondance maître :

  • fichier /etc/auto.master.d/<name>.autofs

  • pour la mise en correspondance indirecte

    /shares		/etc/auto.<name>
  • pour la mise en correspondance directe

    /-		/etc/auto.direct

Création d’un schéma de correspondance maître

Le dossier /etc/auto.master.d identifie le répertoire de base pour les points de montage et ici shared.autofs est le fichier de mappage pour créer des montages automatiques.

# sudo vim /etc/auto.master.d/shared.autofs

Il est possible de placer plusieurs entrées dans un seul fichier de schéma de correspondance maître ou d’en créer plusieurs.

Le fichier /etc/auto.master.d/shared.autofs contient une entrée /shares qui est le répertoire utilisé comme base pour les futurs montages automatiques :

/shares		/etc/auto.shared

Quand au fichier /etc/auto.shared il contient les détails du montage et doit être créé avant le démarrage du service autofs.

Création d’une mise en correspondance indirecte

Chaque fichier de mise en correspondance identifie le point de montage, les options de montage, ainsi que l’emplacement source à monter pour un ensemble de montages automatiques :

# sudo vim /etc/auto.shared

Par convention, le nom d’un fichier de mise en correspondance comporte /etc/auto.<name>, où le nom reflète le contenu du schéma de correspondance.

work	-rw,sync	myservername:/shares/work
* -rw,sync myservername:/musiques/&

Le format d’une entrée est :

  • point de montage :
    • work
    • * : indique tous les sous dossiers
  • options de montage :
    • -rw,sync
    • possible également
      • -fstype=NTFS ou autres types de fichiers
      • -strict : erreurs traitées comme étant irrécupérables
  • emplacement source :
    • myservername:/shares/work
    • myservername:/musiques/& : le & pour indiquer une arboressence

Création d’une mise en correspondance directe

Un schéma de correspondance direct permet de mettre en correspondance une exportation NFS avec un point de montage comportant un chemin absolu et dans ce cas précis un seul fichier est nécessaire et peut contenir plusieurs correspondances directes.

Toutes les entrées de schéma de correspondance directe utilisent /- comme répertoire de base :

/-		/etc/auto.direct

Le contenu du fichier /etc/auto.direct :

/mnt/docs	-rw,sync	myservername:/shares/docs

ici le répertoire /mnt n’est pas géré par le service autofs

Démarrage de l’automount

La commande systemctl permetra de démarrer et activer le service autofs :

# systemctl enable --now autofs

Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.

Méthode alternative avec un daemon systemd.automount

Le daemon systemd peut créer automatiquement des fichiers d’unité pour les entrées dans /etc/fstab qui incluent l’option x-systemd.automount.

Après avoir modifié le fichier /etc/fstab :

# systemctl daemon-reload         // générer un nouveau fichier d’unité
# systemctl start unit.automount // activer la config. de montage automatique

Le nom de l’unité est basé sur son emplacement de montage, si le point de montage est /remote/dev alors le fichier d’unité sera remote-dev.automount.

Cette méthode qui utilise une unité systemd.automount ne peut prendre en charge que des points de montage de chemin absolus comme les mappages directs autofs.

/!\ Résumé des commandes

Commandes

# mkdir /mountpoint

# mount -t nfs -o rw,sync server:/export /mountpoint

# systemctl enable --now autofs

# systemctl daemon-reload // générer un nouveau fichier d’unité
# systemctl start unit.automount // activer la config. de montage automatique

Fichiers

Création d’une mise en correspondance :

  • indirecte
    • fichier /etc/auto.<name>
    • work	-rw,sync	myservername:/shares/work
  • directe
    • fichier /etc/auto.direct
    • /mnt/docs	-rw,sync	myservername:/shares/docs

Création d’un schéma de correspondance maître :

  • fichier /etc/auto.master.d/<name>.autofs

  • pour la mise en correspondance indirecte

    /shares		/etc/auto.<name>
  • pour la mise en correspondance directe

    /-		/etc/auto.direct

Paquets

# dnf install nfs-utils

Documentation

MAN mount(8)
MAN umount(8)
MAN showmount(8)
MAN fstab(5)
MAN mount.nfs(8)
MAN nfsconf(8)
MAN rpcbind(8)
MAN autofs(5)
MAN automount(8)
MAN auto.master(5)
MAN mount.nfs(8)
MAN systemd.automount(5)

> Partager <