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.


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.


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.


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 .


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.