Jaka jest maksymalna liczba plików, które może przechowywać folder Unix?

20

Jaka jest maksymalna liczba plików, które może przechowywać folder Unix?

Myślę, że będzie taka sama jak liczba plików.

Peter Mortensen
źródło
3
O wiele lepszym pytaniem może być: Ile powinienem użyć? stackoverflow.com/questions/466521/...
Joachim Sauer
1
Chciałbym, aby mój adres URL witryny wyglądał jak site.com/nazwa_użytkownika/ itd., Ale myślę, że (jeśli będę miał szczęście) zdobędzie ponad 2 miliony użytkowników, czyli ponad 2 miliony folderów, ponieważ ja nie chcę użyć skryptu, takiego jak PHP z modrewrite, szukałem innych możliwości folderów w folderze
1
Zrób sobie przysługę i utwórz podkatalogi ze schematem przepisywania.
Peter Eisentraut

Odpowiedzi:

14

We wszystkich obecnych systemach plików Unix katalog może przechowywać praktycznie nieograniczoną liczbę plików. Natomiast „nieograniczony” jest ograniczony przez przestrzeń dyskową i i- węzły - cokolwiek skończy się jako pierwsze.

Przy starszych projektach systemów plików ( ext2 , UFS , HFS + ) rzeczy mają tendencję do spowalniania, jeśli masz wiele plików w katalogu. Zwykle zaczyna się boleć około 10 000 plików. Dzięki nowszym systemom plików ( ReiserFS , XFS , ZFS , UFS2 ) możesz mieć miliony plików w katalogu, nie widząc ogólnych wąskich gardeł wydajności.

Ale posiadanie tak wielu plików w katalogu nie jest dobrze przetestowane i istnieje wiele narzędzi, które to zawodzą. Na przykład skrypty okresowej konserwacji systemu mogą się na nim zapchać.

Z przyjemnością korzystałem z katalogu z kilkoma milionami plików na UFS2 i nie widziałem żadnych problemów, dopóki nie chciałem go usunąć - zajęło to kilka DNI.

max
źródło
12

To zależy, z iloma i-węzłami utworzono system plików. Wykonywanie

df -i 

da ci liczbę wolnych i-węzłów. Jest to praktyczny limit liczby plików, które może przechowywać system plików, a tym samym katalog.

Peter Mortensen
źródło
1
Jednak wiele systemów plików ma limit plików na katalog, niezależnie od liczby wolnych i-węzłów.
1
tak, ale pytanie dotyczyło systemów plików UNIX i, o ile mi wiadomo, wszystkie współczesne systemy plików UNIX nie ograniczają liczby plików w katalogu.
6

Zakładam, że myślisz o przechowywaniu wielu plików w jednym miejscu, nie?

Większość współczesnych systemów plików Unix może umieścić wiele plików w jednym katalogu, ale operacje takie jak śledzenie ścieżek, wyświetlanie plików itp. Wymagają liniowego przeszukiwania listy plików i zwalniają, jeśli lista staje się zbyt duża.

Wydaje mi się, że słyszę, że kilka tysięcy to zbyt wiele, by mogły być wykorzystane w praktyce. Zazwyczaj rozwiązaniem jest rozbicie grupowania. To jest,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/

i przechowuj swoje pliki w odpowiednim podkatalogu zgodnie z ich skrótem basename. Wybierz wygodny skrót, pierwszy znak może zrobić w prostych przypadkach.


Cristian Ciupitu pisze w komentarzach, że XFS i prawdopodobnie inne bardzo nowe systemy plików używają log(N)przeszukiwalnych struktur do przechowywania zawartości katalogu, więc to ograniczenie jest znacznie poprawione .

dmckee
źródło
5
Niektóre nowoczesne systemy plików, np. XFS, nie wymagają wyszukiwania liniowego. Technologia B-Tree XFS umożliwia bezpośrednie przejście do bloków i / lub zakresów zawierających lokalizację pliku przy użyciu wyrafinowanych indeksów (z uoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper.html ).
Cristian Ciupitu
Ach! Nie wiedziałem tego Dzięki. Dodanie do tekstu.
dmckee
1
W przypadku ext3 musisz aktywować funkcję „dir_index”, por. tune2fs (8).
0

ext3jeden z najpopularniejszych formatów systemu plików linuksowego staje się bardzo powolny, jeśli w katalogu znajduje się plik o wielkości ponad 20 KB. Niezależnie od tego, ile może pomieścić, powinieneś unikać posiadania tylu plików w jednym katalogu.

Rory
źródło
0

Z pozostawionego komentarza wynika, że ​​tak naprawdę nie obchodzi Cię, ile plików / folderów może hostować FS.

Prawdopodobnie powinieneś rozważyć użycie ModRewrite i przepisanie site.com/username na site.com/?user= lub coś w tym rodzaju i przechowywać wszystkie swoje dane w bazie danych. Utworzenie jednego folderu na użytkownika nie jest generalnie konieczne (i nie jest dobrym pomysłem).

To powiedziawszy, każdy system plików ma ograniczenia i dfmoże ci powiedzieć, ile i-węzłów jest dostępnych na każdej partycji twojego systemu.

Inkaphink
źródło