Aller au contenu

NFS — ce que la plateforme supporte

Versions du protocole NFS, rôles client/serveur, options de montage par défaut et limitations selon les types de conteneurs sur Stack Harbor PaaS.

NFS (Network File System) est le protocole que Stack Harbor PaaS utilise pour partager des fichiers entre conteneurs et entre comptes. C’est un modèle client-serveur : le serveur tourne sur l’hôte qui détient les données et les exporte ; le client monte l’export et travaille avec les fichiers distants comme s’ils étaient locaux.

Cette page documente le support NFS sur la plateforme — versions, rôles que chaque type de conteneur peut tenir, options de montage par défaut et limitations à connaître.

Versions du protocole

ConteneurClient NFSv3Serveur NFSv3Client NFSv4Serveur NFSv4
Tous les conteneurs (sauf base Alpine)ouiouiouinon
Conteneur de stockage partagéouiouiouioui

En résumé : tout conteneur certifié peut être client et serveur NFSv3, tout conteneur peut être client NFSv4, et seul le conteneur de stockage partagé dédié peut être serveur NFSv4. Les conteneurs basés Alpine ne livrent pas le support serveur NFS.

Options de montage par défaut

Quand la plateforme met en place un montage client NFS, elle utilise ces options :

  • Pour NFSv3 : nfsvers=3,nolock,udp,soft,timeo=120,retrans=20,_netdev
  • Pour NFSv4 : nolock,soft,timeo=30,retrans=2,_netdev

L’option soft est délibérée — un montage hard qui bloque sur un serveur absent peut figer une application indéfiniment. Les défauts de la plateforme échangent un peu de débit contre la capacité de récupérer quand le serveur est injoignable.

Vous pouvez surcharger ces options dans des configurations de montage personnalisées si votre charge demande un comportement différent, mais les défauts conviennent aux données d’application web courantes.

Limitations

Quelques points à connaître d’avance, parce qu’ils mordent au mauvais moment sinon :

  • On n’exporte pas des fichiers — seulement des répertoires. Enveloppez le fichier dans un dossier et exportez le dossier.
  • Le chemin exporté ne peut pas être un répertoire système critique. La plateforme bloque les exports commençant par /proc, /dev, /sys, /run, ou égaux à /, /bin, /lib, /lib64, /lib32, /usr, /usr/bin, /usr/sbin, /usr/lib, /usr/lib64. La liste exacte peut varier selon la région.
  • NFS ne fonctionne pas avec les environnements en veille. Un montage client sur une cible endormie attend que la cible se réveille. Un serveur dont tous les clients dorment est effectivement inactif.
  • NFS ne fonctionne pas pendant une migration en direct. Un petit raté de lecture ou d’écriture pendant une migration est attendu ; les montages longs qui s’étendent sur une fenêtre de migration peuvent demander un nouvel essai.

NFS contre GlusterFS Native

Quand le conteneur de stockage est une grappe GlusterFS, vous pouvez choisir entre NFS et GlusterFS Native comme protocole client.

  • NFS — recommandé pour la performance. Surcoût plus faible, client mature, modes d’échec bien compris.
  • GlusterFS Native — recommandé quand la sécurité des données prime. Réplication native, comportement de bascule cohérent.

Ce choix apparaît dans la fenêtre des points de montage quand le serveur est une grappe GlusterFS. Pour un stockage non-clusterisé, NFS est la seule option.

Diagnostic

Quand quelque chose cloche avec NFS, le Tasks Panel du tableau de bord est le premier endroit à regarder — la plupart des échecs y atterrissent avec une erreur exploitable. Au-delà :

  • /var/log/messages sur le serveur NFS contient les erreurs côté serveur.
  • journalctl sur le conteneur de stockage partagé, les conteneurs Docker personnalisés ou les conteneurs VPS contient les journaux NFS au niveau systemd.

Le mode d’échec le plus fréquent en pratique est lié aux permissions : le partage est exporté correctement, le réseau va bien, mais l’UID dans le conteneur client n’a pas les droits d’écriture sur le dossier côté serveur. chown côté serveur, ou faire tourner le processus client sous le bon utilisateur, règle généralement le problème.

La suite

  • Points de montage — ajouter un montage NFS depuis le côté client.
  • Exports de stockage — déclarer un export NFS depuis le côté serveur.
  • Conteneur de stockage dédié — le conteneur de stockage partagé, y compris son rôle de serveur NFSv4.