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
| Conteneur | Client NFSv3 | Serveur NFSv3 | Client NFSv4 | Serveur NFSv4 |
|---|---|---|---|---|
| Tous les conteneurs (sauf base Alpine) | oui | oui | oui | non |
| Conteneur de stockage partagé | oui | oui | oui | oui |
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/messagessur le serveur NFS contient les erreurs côté serveur.journalctlsur 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.