Où dois-je stocker les données partagées dans le système de fichiers?

44

Où dans le système de fichiers unix se trouve l'emplacement conventionnel pour enregistrer des données non spécifiques à l'utilisateur, par exemple des données partagées via nfs ou ftp, ou des sauvegardes?

Je pourrais évidemment créer et utiliser n’importe quel dossier arbitraire (tel que / home / shared, / data ou / var / data), mais je me demande vraiment s’il existe des directives de "meilleure" pratique ou "commune". La norme de hiérarchie du système de fichiers ne spécifie pas d'emplacement pour les données partagées.

Pour les sauvegardes, j'ai tendance à utiliser / var / backups, mais comme plusieurs cronjobs y écrivent, faut-il vraiment les laisser à leur usage?

misterben
la source

Réponses:

29

Cette question ne semble avoir une réponse claire dans la Filesystem Hierarchy Standard , qui précise /srvque « [ traduction ] contiennent des données spécifiques au site qui est desservi par ce système » . (3.16.1)

Le but principal de cette spécification est de permettre aux utilisateurs de trouver l'emplacement des fichiers de données pour un service donné et aux services qui nécessitent un seul arbre pour les données en lecture seule, les données inscriptibles et les scripts.

(mon emphase)

Remarque: "Servi par le système" ne fait pas nécessairement référence à Internet. Cela ne signifie même pas nécessairement un réseau. Cela s'applique même à un système partagé. De plus, les mots site et service doivent être compris dans leur signification antérieure à Internet. Votre site peut être "le département de physique" ou "le bureau des finances".

Il se poursuit:

Sur les grands systèmes, il peut être utile de structurer / srv en fonction du contexte administratif, tel que / srv / physics / www, / srv / compsci / cvs, etc. Cette configuration diffère d’un hôte à l’autre. Par conséquent, aucun programme ne doit s'appuyer sur une structure de sous-répertoire spécifique de / srv existant ou sur des données nécessairement stockées dans / srv. Toutefois, / srv doit toujours exister sur les systèmes conformes à FHS et doit être utilisé comme emplacement par défaut pour ces données.

Vous devez donc structurer davantage vos données dans des répertoires tels que /srv/nfs, /srv/backupetc.

Je devrais aussi mentionner que peu de gens le font plus. Mais il n'y a pas de bonne raison pour qu'ils ne le fassent pas. La norme n'est en aucun cas obsolète.

/varest traditionnellement utilisé pour des tâches telles que les spools d'impression et les fichiers journaux, mais il est également utilisé par le serveur Web Apache (de toute façon sur les systèmes Debian - SUSE utilise / srv); Il ne semble pas y avoir de consensus sur la question de savoir si /varun répertoire approprié est utilisé pour les données partagées. Mais si vous décidez de l'utiliser à la place, vous ne regretterez pas, j'en suis sûr.

Remarquez également: la réponse de Karthick n’est en aucun cas fausse. La FHS indique que / srv "devrait être utilisé comme emplacement par défaut pour ces données", mais la norme laisse une certaine marge à votre préférence, en fonction de la manière dont vous interprétez les termes.

Stefano Palazzo
la source
4
Notez que Debian (et Red Hat) ont commencé à mettre les fichiers d’Apache /var/wwwavant de faire /srv/partie de la FHS.
Mattdm
Une bonne explication, merci, bien qu'il semble que la réponse à la question soit "il n'y a pas vraiment de norme qui est réellement suivie". Peut-être qu'il devrait y en avoir, peut-être que cela n'a pas vraiment d'importance.
Misterben
Eh bien, vous devriez toujours enfreindre les règles lorsque vous avez de bonnes raisons de le faire. Mais j'estime que cette norme est suivie méticuleusement dans de nombreux déploiements à grande échelle.
Stefano Palazzo
Les personnes qui souhaitent passer à une norme commune devraient trouver cette réponse sans ambiguïté correcte sur la base de FHS.
Jeremy
13
  • Les données non spécifiques à l'utilisateur peuvent être stockées dans / usr / local / var afin qu'elles ne se retrouvent plus dans un partage newtwork.
  • Tout ce qui ne se trouve pas sous ../local/ .. est autorisé à se retrouver sur un partage NFS. Si vous souhaitez télécharger des données à partir d'un partage NFS, assurez-vous qu'elles sont stockées localement sur le disque dur de la machine.
  • Ensuite, vous devriez choisir un chemin avec ... / local / .. dedans ... le reste dépend de la nature des données, du type de celles-ci.Il peut être / local / var ou / local / tmp etc. .

Hiérarchie du système de fichiers:
texte alternatif

Regardez aussi ça

karthick87
la source
1
Bien que ce soit une représentation utile de la FHS, cela ne suggère toujours pas un emplacement standard pour un magasin de données partagé.
Misterben
FSH déclare que: / usr est une donnée en lecture seule partageable. Cela signifie que / usr doit pouvoir être partagé entre différents hôtes compatibles FHS et ne doit pas être écrit . Hmmm, cela semble donc dépendre de l'objectif de votre part.
Htorque
@htorque Je suis enclin à penser que quelque part sous / var est le plus approprié pour un partage de fichiers, comme vous l'avez suggéré dans votre réponse (maintenant supprimée).
Misterben
1
J'ai supprimé ma réponse, car la FHS a également déclaré ce qui suit : Les applications ne doivent généralement pas ajouter de répertoires au niveau supérieur de / var. De tels répertoires ne devraient être ajoutés que s'ils ont une implication à l'échelle du système et en consultation avec la liste de diffusion FHS. - La FHS ne veut tout simplement pas que vous partagiez des données (en écriture)! : P
htorque
Merci, une vue d’ensemble utile et, comme l’autre réponse, elle sert vraiment à montrer qu’il n’ya pas de réponse définitive, ce qui est utile en soi.
Misterben
5

Je ne pense pas que FHS définisse un lieu pour les données utilisateur partagées. C'est aux utilisateurs où ils veulent stocker leurs données partagées. J'utilise habituellement /usr/local/sharedou /home/shared.

binW
la source
1

J'ai déjà vu /exportutiliser pour nfs et /mntpour monter un partage nfs localement, dans un environnement d'entreprise, comme suggéré dans la documentation NFS, norme qui, je suppose, provenait à l'origine de Sun OS, renommé ultérieurement Solaris.

Le /etc/exportsfichier nomme les volumes exportés et le /exportsrépertoire les transmet aux utilisateurs distants, qui les montent /mnt. L'hôte du serveur peut également monter ces mêmes partages en /mntutilisant le même démon nfs pour l'utilisation de clients ou de processus s'exécutant localement sur le serveur, afin de conserver la compatibilité avec tout hôte distant et éventuellement de conserver les fonctionnalités de nivellement de charge, de quotas, etc.

C'est aussi proche d'une "norme" que cela devient. Notez que ce /exportn'est pas dans la FHS a donc /exportété ajouté indépendamment, donc vraisemblablement personne n'est content /srv. Probablement à cause d'une confusion potentielle avec les «services» fonctionnant comme des démons plutôt que des volumes «servis». /exportest nommé sans ambiguïté avec peu de chance de confusion. Je ne vois rien dans /srv.

cheryljosie
la source