Jaka jest maksymalna liczba plików, które może przechowywać folder Unix?
Myślę, że będzie taka sama jak liczba plików.
Jaka jest maksymalna liczba plików, które może przechowywać folder Unix?
Myślę, że będzie taka sama jak liczba plików.
Odpowiedzi:
Różni się w zależności od systemu plików, http://en.wikipedia.org/wiki/Comparison_of_file_systems
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.
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.
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 .
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 df
może ci powiedzieć, ile i-węzłów jest dostępnych na każdej partycji twojego systemu.