Czy POSIX ogranicza liczbę katalogów w katalogu głównym systemu operacyjnego?

12

Próbuję nauczyć się standardu POSIX. W przypadku korzystania z systemów z rodziny Unix, I /bin, /etc, /dev, /media, i zwykle /opt, ale jest to znormalizowane lub do swojej specyfikacji realizacji? Czy może być wiele katalogów w katalogu głównym, czy też jest ograniczony standardem?

Niklas
źródło
3
POSIX nie dotyka tego obszaru.
Thomas Dickey,

Odpowiedzi:

17

Zgodnie z opublikowanym standardem The Open Group , jedynymi wymaganymi katalogami są:

  • /
  • /dev, Zawierająca console, nullitty
  • /tmp, gwarantowane do zapisu, ale niekoniecznie zachowane.

Linux Foundation utrzymuje Standard Hierarchii Systemów Plików (FHS), który rozszerza go o katalogi, które zwykle zobaczysz w systemie Linux:

  • /bin: Niezbędne pliki binarne poleceń użytkownika
  • /boot: Pliki statyczne programu ładującego
  • /dev: Pliki urządzeń
  • /etc: Konfiguracja systemu specyficzna dla hosta
  • /home: Katalogi domowe użytkownika (opcjonalnie)
  • /lib: Niezbędne biblioteki współdzielone i moduły jądra
  • /lib<qual>: Niezbędne biblioteki współdzielone w innym formacie (opcjonalnie)
  • /media: Punkt montowania nośników wymiennych
  • /mnt: Punkt montowania tymczasowo zamontowanego systemu plików
  • /opt: Dodatkowe pakiety aplikacji
  • /root: Katalog domowy użytkownika root (opcjonalnie)
  • /run: Dane zmiennych w czasie wykonywania
  • /sbin: Pliki binarne systemu
  • /srv: Dane dotyczące usług świadczonych przez ten system
  • /tmp: Pliki tymczasowe
  • Jak również /usrhierarchia i /varhierarchia

FHS został zaprojektowany tak, aby był jak najbardziej ogólny, aby umożliwić włączenie go do dowolnego systemu UNIX. Dodatkowe katalogi prawdopodobnie będą istnieć w jakimkolwiek rozsądnym systemie, ale nie jest to wymagane przez POSIX.

Należy jednak pamiętać, że The Open Group również to stwierdza

Ściśle zgodne aplikacje nie będą mogły tworzyć plików w żadnym z tych katalogów, chyba że określono inaczej.

Ponieważ katalogi są tak naprawdę tylko plikami, oznacza to, że ściśle zgodna aplikacja nie utworzy żadnych plików ani katalogów na poziomie głównym. Dlatego POSIX niekoniecznie ogranicza to, co dystrybucja może umieścić na poziomie głównym, ale wydaje się stwierdzać, że aplikacja zgodna ze specyfikacją nie może zakładać, że będzie w stanie.

Lis
źródło
5
Pytanie nie brzmiało, które katalogi są standardowe , ale zapytano, czy istnieje limit . POSIX nie odpowiada na to pytanie.
Thomas Dickey,
Dodaje opinię bez wskazywania na cytat z POSIX.
Thomas Dickey,
Ostatni akapit jest tym, o czym wspomniałem: „wydaje się stwierdzać”. POSIX unika wspominania o limicie w tym obszarze, koncentrując się raczej na podobieństwach niż różnicach.
Thomas Dickey,
1
Dziękuję Fox. Twoja odpowiedź była informacją, której szukałem.
Niklas
13

W 10.1 Struktura katalogów i pliki POSIX wymienia katalogi, które muszą istnieć. Ale nie określa limitu liczby innych katalogów, które mogą istnieć na poziomie systemu plików.

Co do tego, wydaje się, że nie nakłada ograniczeń na wielkość innych katalogów.

Uwaga POSIX w tym obszarze skupia się raczej na podobieństwie niż na różnicach.

Thomas Dickey
źródło
Ponieważ w systemie * nix potencjalnie każdy katalog (w tym /) może być katalogiem głównym, byłoby głupie narzucenie górnego limitu liczby wpisów w katalogu głównym. /nie jest w tym względzie szczególnie szczególny, dlatego wynika z tego, że równie głupie byłoby nałożenie górnej granicy na liczbę wpisów /.
CVn
8

Nie ma ograniczeń co do liczby wpisów w katalogu, zarówno w POSIX, jak i w typowych implementacjach Uniksa. Może istnieć pośredni limit liczby podkatalogów, który jest maksymalną liczbą twardych dowiązań ( ..pozycja każdego podkatalogu jest dowiązaniem twardym do katalogu); to 2 16 dla wielu popularnych systemów plików, co ogranicza katalog do podkatalogów 65533 (przynajmniej dla tych systemów plików, które ..wyraźnie przechowują wpisy). Wcześniej zaczniesz osiągać słabe wyniki. Według POSIX implementacja może obsługiwać tylko 8 twardych dowiązań w pliku ( _POSIX_LINK_MAX), ale żadna rzeczywista implementacja nie jest ograniczona do 6 podkatalogów. W każdym razie w wielu systemach plików, w tym ext4, liczba twardych linków nie jest utrzymywana.. wpisy, więc jedynym ograniczeniem jest ilość miejsca lub liczba i-węzłów dostępnych w systemie plików.

POSIX nie mówi wiele o organizacji plików w systemie. Wymaga tylko istnienia kilku plików . Jedynymi obowiązkowymi wpisami w katalogu głównym są /devi /tmp. Inne wpisy nawykowe Unix, takie jak /usr, /var, /bin, /etc, /lib, /home, itd. Są Unix konwencje, które nie zostały skodyfikowane przez POSIX.

W Linuksie FHS kodyfikuje klasykę i kilka innych. Większość dystrybucji Linuksa trzyma się wpisów FHS. Inne systemy uniksowe mają zwykle te same wpisy, może z kilkoma różnicami, ale liczba jest prawie taka sama.

Administratorzy systemu mogą tworzyć więcej, chociaż to nie jest zalecane: istnieją ściśle określone miejsca dla większości rzeczy (oprogramowanie idzie pod /usrlub /optdane system przechodzi pod /vardane użytkownik przechodzi pod /netzamontować punkty przejść pod /medialub /mntitp), więc jest rzadko dobry powód do tworzenia nowych katalogów na najwyższym poziomie.

Gilles „SO- przestań być zły”
źródło
To nie jest poprawne. Większość „rozsądnych” systemów plików ma maksymalną liczbę podkatalogów na katalog lub maksymalną liczbę i-węzłów na urządzenie. Jednak zwykle jest nieprzyzwoicie duży w stosunku do liczby katalogów, które prawdopodobnie zobaczysz w katalogu głównym dysku.
Kevin
@Kevin Oh, dobra uwaga, w popularnych systemach plików najpierw osiągniesz maksymalną liczbę twardych linków, która może wynosić nawet 16 bitów.
Gilles „SO- przestań być zły”
@Kevin Chociaż nie jest tak w przypadku ext4, wydaje się, że nie ma ograniczenia liczby podkatalogów innych niż dostępne miejsce (bloki lub i-węzły). Czy myślałeś o jakimś innym ograniczeniu liczby podkatalogów w katalogu?
Gilles „SO- przestań być zły”
Prawidłowo zaprojektowany system plików nie tworzy twardych dowiązań do pozycji katalogu .. W prawidłowo zaprojektowanym systemie plików liczba linków do katalogu wynosi 1, chyba że istnieją ręcznie tworzone twarde linki.
schily,
1
Nie, nie ma takiego limitu w systemie plików w 100% zgodnym z POSIX. Jak już wspomniano, POSIX nie wymaga. i .. aby być linkami do innych katalogów. Jeśli tak, jest to szczegół implementacji będący wynikiem włamań wprowadzonych do systemu plików V7. Istnieją inne systemy plików zgodne z POSIX, które działają zupełnie inaczej.
schily
2

w przeciwieństwie do FAT systemy plików używane przez UNIX nie mają specjalnego limitu rozmiaru w katalogu głównym, ale po zapełnieniu partycji nie będzie można dodawać więcej.

Jasen
źródło