POSIX limita il numero di directory nella radice del sistema operativo?


12

Sto cercando di imparare lo standard POSIX. Quando si utilizza Unix, ho /bin, /etc, /dev, /media, e di solito /opt, ma è che standardizzato o fino a l'implementazione spec? Potrebbero esserci molte directory nella radice o è limitata dallo standard?


3
POSIX non tocca quest'area.
Thomas Dickey,

Risposte:


17

Secondo lo standard pubblicato di The Open Group , le uniche directory richieste sono:

  • /
  • /dev, Che contiene console, nulletty
  • /tmp, garantito scrivibile ma non necessariamente conservato.

La Linux Foundation mantiene un Filesystem Hierarchy Standard (FHS) che lo estende per includere le directory che normalmente vedrai su un sistema Linux:

  • /bin: File binari di comando utente essenziali
  • /boot: File statici del bootloader
  • /dev: File del dispositivo
  • /etc: Configurazione di sistema specifica dell'host
  • /home: Home directory degli utenti (opzionale)
  • /lib: Librerie condivise essenziali e moduli del kernel
  • /lib<qual>: Librerie condivise essenziali di formato alternativo (facoltativo)
  • /media: Punto di montaggio per supporti rimovibili
  • /mnt: Punto di montaggio per un filesystem montato temporaneamente
  • /opt: Pacchetti software applicativi aggiuntivi
  • /root: Home directory per l'utente root (opzionale)
  • /run: Dati variabili di runtime
  • /sbin: File binari di sistema
  • /srv: Dati per i servizi forniti da questo sistema
  • /tmp: File temporanei
  • Così come la /usrgerarchia e la /vargerarchia

L'FHS è stato progettato per essere il più generico possibile, per consentire l'integrazione in qualsiasi sistema UNIX. È possibile che le directory aggiuntive esistano in qualsiasi sistema ragionevole, ma ciò non è obbligatorio per POSIX.

Tuttavia, si noti che The Open Group lo afferma anche

Le applicazioni rigorosamente conformi non devono assumere la capacità di creare file in nessuna di queste directory, se non specificato di seguito.

Poiché le directory sono in realtà solo file, ciò implica che un'applicazione strettamente conforme non creerà alcun file o directory a livello di root. Pertanto, POSIX non limita necessariamente ciò che una distribuzione può collocare a livello di root, ma sembra affermare che un'applicazione conforme alle sue specifiche non può presumere che sarà in grado di farlo.


5
La domanda non era quali directory fossero standard , ma si chiedeva se esistesse un limite . POSIX non risponde a questa domanda.
Thomas Dickey,

Aggiunge un'opinione senza indicare una citazione da POSIX.
Thomas Dickey,

L'ultimo paragrafo è quello a cui ho fatto riferimento: "sembra affermare". POSIX evita di menzionare un limite in questo settore, concentrandosi sulla comunanza piuttosto che sulle differenze.
Thomas Dickey,

1
Grazie Fox. La tua risposta è stata l'informazione che stavo cercando.
Niklas,

13

In 10.1 Directory Structure and Files , POSIX elenca le directory che devono esistere. Ma non specifica alcun limite al numero di altre directory che possono esistere a livello di root di un filesystem.

Del resto, non sembra porre limiti alle dimensioni di altre directory.

L'attenzione di POSIX in questo settore è focalizzata sulla comunanza piuttosto che sulle differenze.


Poiché su un sistema * nix potenzialmente ogni directory (inclusa /) può essere una directory root, sarebbe piuttosto sciocco imporre un limite superiore al numero di voci in una directory root. /non è particolarmente speciale in questo senso, quindi ne consegue che sarebbe altrettanto altrettanto sciocco imporre un limite superiore al numero di voci in /particolare.
un CVn,

8

Non ci sono limiti al numero di voci in una directory, in POSIX o nelle tipiche implementazioni Unix. Potrebbe esserci un limite indiretto per il numero di sottodirectory, che è il conteggio massimo del collegamento reale (la ..voce di ogni sottodirectory è un collegamento reale alla directory); questo è 2 16 per molti filesystem comuni, che limita una directory a 65533 sottodirectory (almeno per quei filesystem che memorizzano le ..voci esplicitamente). Inizierai a colpire scarse prestazioni prima di quello. Secondo POSIX, un'implementazione può supportare solo 8 hard link su un file ( _POSIX_LINK_MAX), ma nessuna implementazione effettiva è limitata a 6 sottodirectory. E comunque, su molti filesystem, incluso ext4, il conteggio dei collegamenti fisici non è mantenuto.. voci, quindi l'unico limite è quanto spazio o quanti inode sono disponibili sul filesystem.

POSIX non dice molto sull'organizzazione dei file sul sistema. Richiede solo l'esistenza di alcuni file . Le uniche voci obbligatorie nella directory principale sono /deve /tmp. Altre voci Unix abituali tipo /usr, /var, /bin, /etc, /lib, /home, ecc sono Unix convenzioni che non sono codificati da POSIX.

Su Linux, l' FHS codifica i classici e un altro paio. La maggior parte delle distribuzioni Linux si attengono alle voci FHS. Altri sistemi Unix hanno generalmente le stesse voci, forse con alcune differenze, ma il numero è più o meno lo stesso.

Gli amministratori di sistema possono crearne di più, anche se questo è scoraggiato: ci sono luoghi ben definiti per la maggior parte delle cose (il software va sotto /usro /opt, i dati di sistema vanno sotto /var, i dati dell'utente vanno sotto /net, i punti di montaggio vanno sotto /mediao /mnt, ecc.), Quindi raramente qualsiasi buon motivo per creare nuove directory al massimo livello.


Questo non è corretto La maggior parte dei filesystem "ragionevoli" ha un numero massimo di sottodirectory per directory o un numero massimo di inode per dispositivo. Tuttavia, di solito è oscenamente grande rispetto al numero di directory che è possibile vedere nella radice dell'unità.
Kevin,

@Kevin Oh, buon punto, su filesystem comuni avresti colto prima il conteggio massimo di hard link, e questo poteva arrivare a 16 bit.
Gilles 'SO- smetti di essere malvagio' il

@Kevin Anche se questo non è il caso su ext4, non sembra esserci un limite al numero di sottodirectory diverse dallo spazio disponibile (blocchi o inode). Stavi pensando a qualche altro limite al numero di sottodirectory per directory?
Gilles 'SO- smetti di essere malvagio' il

Un file system progettato correttamente non crea collegamenti fisici alle voci della directory ... In un filesystem correttamente progettato il conteggio dei collegamenti di una directory è 1 a meno che non ci siano collegamenti reali creati manualmente.
schily

1
No, non esiste un limite di questo tipo per un filesystem conforme POSIX al 100%. Come già accennato, POSIX non richiede. e .. per essere collegamenti ad altre directory. Se lo sono, questo è un dettaglio di implementazione che è il risultato degli hack introdotti nel filesystem V7. Esistono altri filesystem conformi a POSIX che funzionano in modo completamente diverso.
schily,

2

a differenza di FAT, i filesystem utilizzati da UNIX non hanno un limite di dimensioni speciali nella directory principale, ma una volta che la partizione è piena non sarà possibile aggiungerne altri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.