POSIX limite-t-il le nombre de répertoires dans la racine du système d'exploitation?

12

J'essaie d'apprendre la norme POSIX. Lorsque vous utilisez Unix, j'ai /bin, /etc, /dev, /media, et le plus souvent /opt, mais est - ce standardisé ou à votre mise en œuvre spec? Pourrait-il y avoir de nombreux répertoires à la racine, ou est-ce limité par la norme?

Niklas
la source
3
POSIX ne touche pas à ce domaine.
Thomas Dickey

Réponses:

17

Selon la norme publiée par The Open Group , les seuls répertoires requis sont:

  • /
  • /dev, Qui contient console, nullettty
  • /tmp, garanti accessible en écriture mais pas nécessairement conservé.

La Fondation Linux maintient une norme de hiérarchie du système de fichiers (FHS) qui l'étend pour inclure les répertoires que vous verrez généralement sur un système Linux:

  • /bin: Binaires de commande utilisateur essentiels
  • /boot: Fichiers statiques du chargeur de démarrage
  • /dev: Fichiers de périphérique
  • /etc: Configuration système spécifique à l'hôte
  • /home: Répertoires personnels des utilisateurs (facultatif)
  • /lib: Bibliothèques partagées essentielles et modules du noyau
  • /lib<qual>: Bibliothèques partagées essentielles de format alternatif (facultatif)
  • /media: Point de montage pour supports amovibles
  • /mnt: Point de montage pour un système de fichiers monté temporairement
  • /opt: Logiciels d'application complémentaires
  • /root: Répertoire de base pour l'utilisateur root (facultatif)
  • /run: Données variables d'exécution
  • /sbin: Binaires système
  • /srv: Données pour les services fournis par ce système
  • /tmp: Fichiers temporaires
  • Ainsi que la /usrhiérarchie et la /varhiérarchie

Le FHS a été conçu pour être aussi générique que possible, pour permettre son intégration dans tout système UNIX. Les répertoires supplémentaires sont susceptibles d'exister dans tout système raisonnable, mais cela n'est pas mandaté par POSIX.

Cependant, notez que The Open Group déclare également que

Les applications strictement conformes ne doivent pas assumer la capacité de créer des fichiers dans l'un de ces répertoires, sauf indication contraire ci-dessous.

Étant donné que les répertoires ne sont en réalité que des fichiers, cela implique qu'une application strictement conforme ne créera aucun fichier ou répertoire au niveau racine. Par conséquent, POSIX ne limite pas nécessairement ce qu'une distribution peut placer au niveau racine, mais semble indiquer qu'une application conforme à ses spécifications ne peut pas supposer qu'elle le pourra.

Renard
la source
5
La question n'était pas de savoir quels répertoires sont standard , mais a demandé s'il y avait une limite . POSIX ne répond pas à cette question.
Thomas Dickey
Il ajoute une opinion sans pointer vers une citation de POSIX.
Thomas Dickey
Le dernier paragraphe est ce à quoi j'ai fait référence: "semble dire". POSIX évite de mentionner une limite dans ce domaine, en se concentrant sur les points communs plutôt que sur les différences.
Thomas Dickey
1
Merci Fox. Votre réponse était l'information que je cherchais.
Niklas
13

Dans 10.1 Structure et fichiers de répertoires, POSIX répertorie les répertoires qui doivent exister. Mais il ne spécifie aucune limite sur le nombre d'autres répertoires qui peuvent exister au niveau racine d'un système de fichiers.

D'ailleurs, il ne semble pas imposer de limites sur la taille des autres répertoires.

L'attention de POSIX dans ce domaine se concentre sur les points communs plutôt que sur les différences.

Thomas Dickey
la source
Comme sur un système * nix potentiellement chaque répertoire (y compris /) peut être un répertoire racine, il serait assez idiot d'imposer une limite supérieure au nombre d'entrées dans un répertoire racine. /n'est pas particulièrement spécial à cet égard, il s'ensuit donc qu'il serait tout aussi idiot d'imposer une limite supérieure au nombre d'entrées en /particulier.
un CVn du
8

Il n'y a aucune limitation au nombre d'entrées dans un répertoire, que ce soit dans POSIX ou dans les implémentations Unix typiques. Il peut y avoir une limite indirecte pour le nombre de sous-répertoires, qui est le nombre maximal de liens physiques (l' ..entrée de chaque sous-répertoire est un lien physique vers le répertoire); c'est 2 16 pour de nombreux systèmes de fichiers courants, ce qui limite un répertoire à 65533 sous-répertoires (au moins pour les systèmes de fichiers qui stockent ..explicitement les entrées). Vous commencerez à atteindre de mauvaises performances avant cela. Selon POSIX, une implémentation est autorisée à prendre en charge uniquement 8 liens durs sur un fichier ( _POSIX_LINK_MAX), mais aucune implémentation réelle n'est limitée à 6 sous-répertoires. Et de toute façon, sur de nombreux systèmes de fichiers, y compris ext4, le nombre de liens durs n'est pas maintenu pour.. entrées, donc la seule limite est l'espace ou le nombre d'inodes disponibles sur le système de fichiers.

POSIX ne dit pas grand-chose sur l'organisation des fichiers sur le système. Il ne requiert l'existence que de quelques fichiers . Les seules entrées obligatoires dans le répertoire racine sont /devet /tmp. D' autres entrées Unix habituelles telles que /usr, /var, /bin, /etc, /lib, /home, etc. sont Unix conventions qui ne sont pas codifiées par POSIX.

Sous Linux, le FHS codifie les classiques et quelques autres. La plupart des distributions Linux s'en tiennent aux entrées FHS. D'autres systèmes Unix ont généralement les mêmes entrées, peut-être avec quelques différences, mais le nombre est à peu près le même.

Les administrateurs système peuvent créer plus, bien que cela soit découragé: il y a des endroits bien définis pour la plupart des choses (le logiciel passe sous /usrou /opt, les données système vont sous /var, les données utilisateur vont sous /net, les points de montage vont sous /mediaou /mnt, etc.), donc il y a rarement aucune bonne raison de créer de nouveaux répertoires au niveau supérieur.

Gilles 'SO- arrête d'être méchant'
la source
Ce n'est pas correct. La plupart des systèmes de fichiers "raisonnables" ont un nombre maximum de sous-répertoires par répertoire, ou un nombre maximum d'inodes par périphérique. Cependant, il est généralement obscurément grand par rapport au nombre de répertoires que vous êtes susceptible de voir à la racine du lecteur.
Kevin
@Kevin Oh, bon point, sur les systèmes de fichiers courants, vous atteindriez le nombre maximal de liens durs en premier, et cela pourrait être aussi bas que 16 bits.
Gilles 'SO- arrête d'être méchant'
@Kevin Bien que ce ne soit pas le cas sur ext4, il ne semble pas y avoir de limite au nombre de sous-répertoires autres que l'espace disponible (blocs ou inodes). Pensiez-vous à une autre limite au nombre de sous-répertoires par répertoire?
Gilles 'SO- arrête d'être méchant'
Un système de fichiers correctement conçu ne crée pas de liens physiques vers les entrées du répertoire .. Dans un système de fichiers correctement conçu, le nombre de liens d'un répertoire est de 1 sauf s'il existe des liens matériels créés manuellement.
schily
1
Non, il n'y a pas de telle limite sur un système de fichiers 100% compatible POSIX. Comme déjà mentionné, POSIX ne nécessite pas. et .. pour être des liens physiques vers d'autres répertoires. S'ils le sont, c'est un détail d'implémentation qui est le résultat des hacks introduits dans le système de fichiers V7. Il existe d'autres systèmes de fichiers compatibles POSIX qui fonctionnent complètement différemment.
schily
2

contrairement à FAT, les systèmes de fichiers utilisés par UNIX n'ont pas de limite de taille spéciale sur le répertoire racine, mais une fois la partition pleine, vous ne pourrez plus en ajouter.

Jasen
la source