Jak działa system Windows z systemem plików NTFS w przypadku dużych woluminów plików i katalogów?
Czy istnieją jakieś wskazówki dotyczące limitów plików lub katalogów, które można umieścić w jednym katalogu, zanim wystąpią problemy z wydajnością lub inne problemy?
Np. Czy posiadanie folderu zawierającego 100 000 folderów jest w porządku?
windows
performance
filesystems
ntfs
James Newton-King
źródło
źródło
Odpowiedzi:
Oto kilka porad od kogoś ze środowiska, w którym mamy foldery zawierające dziesiątki milionów plików.
Aby odpowiedzieć bardziej bezpośrednio na twoje pytanie: Jeśli patrzysz na 100 000 wpisów, nie martw się. Idź się znokautować. Jeśli patrzysz na dziesiątki milionów wpisów, to albo:
a) Zaplanuj podzielenie ich na podfoldery (np. powiedzmy, że masz 100 mln plików. Lepiej jest przechowywać je w 1000 folderach, aby mieć tylko 100 000 plików na folder niż przechowywać je w 1 dużym folderze. To utworzy 1000 indeksów folderów zamiast jednego dużego, który z większym prawdopodobieństwem przekroczy limit liczby fragmentów lub
b) Zaplanuj regularne uruchamianie contig.exe, aby defragmentować indeks dużego folderu.
Przeczytaj poniżej tylko, jeśli się nudzisz.
Rzeczywisty limit nie dotyczy liczby fragmentów, ale liczby rekordów segmentu danych, który przechowuje wskaźniki do fragmentu.
Więc masz segment danych, który przechowuje wskaźniki do fragmentów danych katalogu. Dane katalogu przechowują informacje o podkatalogach i pod-plikach, które rzekomo przechowywano w katalogu. W rzeczywistości katalog niczego nie „przechowuje”. To tylko funkcja śledzenia i prezentacji, która przedstawia iluzję hierarchii dla użytkownika, ponieważ sam nośnik pamięci jest liniowy.
źródło
contig.exe
, których nie ma na moim serwerze. Wyszukiwarka Google zwróciła tę stronę technet, w której nie wspomniano o podkatalogach ani defragmentacji indeksu folderów.contig.exe
katalog, myślę , że to zadziała:contig -a .
daje:C:\temp\viele-Dateien is in 411 fragments Summary: Number of files processed : 1 Average fragmentation : 411 frags/file
c:\my\big\directory
, czyc:\my\big\directory\*
, czy dalej$mft
? (czy coś innego?)Występują również problemy z wydajnością związane z tworzeniem krótkich nazw plików, które spowalniają pracę. Microsoft zaleca wyłączenie tworzenia krótkich nazw plików, jeśli w folderze znajduje się ponad 300 000 plików [1]. Im mniej unikalnych jest pierwszych 6 znaków, tym bardziej jest to problemem.
[1] Jak działa NTFS ze strony http://technet.microsoft.com , wyszukaj „300 000”
źródło
If you use large numbers of files in an NTFS folder (300,000 or more), disable short-file name generation for better performance, and especially if the first six characters of the long file names are similar.
- oszczędza wyszukiwania podpowiedzi „300 000”. BTW: wystarczy wpisać „300” (= tutaj nie ma potrzeby schowka)Buduję strukturę plików, aby pomieścić do 2 miliardów (2 ^ 32) plików i wykonałem następujące testy, które wykazały gwałtowny spadek wydajności nawigacji + odczytu przy około 250 plikach lub 120 katalogach na katalog NTFS na dysku SSD ( SSD):
Co ciekawe, liczba katalogów i plików NIE przeszkadza znacząco.
Więc lekcje to:
To są dane (2 pomiary dla każdego pliku i katalogu):
A to jest kod testowy:
źródło
100 000 powinno być w porządku.
Widziałem (anegdotycznie) ludzi, którzy mają problemy z wieloma milionami plików i sam miałem problemy z Eksploratorem, po prostu nie mając pojęcia, jak liczyć ponad 60-tysięcy tysięcy plików, ale NTFS powinien być dobry dla woluminów, o których mówisz.
Jeśli się zastanawiasz, techniczna (i mam nadzieję teoretyczna ) maksymalna liczba plików wynosi: 4 294 967 295
źródło
W przypadku lokalnego dostępu duża liczba katalogów / plików nie wydaje się stanowić problemu. Jeśli jednak uzyskujesz dostęp do niego przez sieć, zauważalny jest spadek wydajności po kilkuset (szczególnie, gdy dostęp jest uzyskiwany z komputerów Vista (XP do Windows Server z NTFS wydawał się działać pod tym względem znacznie szybciej)).
źródło
Podczas tworzenia folderu zawierającego N wpisów tworzona jest lista N elementów na poziomie systemu plików. Ta lista jest ogólnosystemową wspólną strukturą danych. Jeśli następnie zaczniesz ciągle modyfikować tę listę, dodając / usuwając wpisy, spodziewam się przynajmniej pewnej rywalizacji o blokadę względem współdzielonych danych. Spór ten - teoretycznie - może negatywnie wpłynąć na wydajność.
W przypadku scenariuszy tylko do odczytu nie wyobrażam sobie żadnego powodu obniżenia wydajności katalogów z dużą liczbą pozycji.
źródło
Miałem prawdziwe doświadczenie z około 100 000 plików (każde kilka MB) na NTFS w katalogu podczas kopiowania jednej biblioteki online.
Otwarcie katalogu za pomocą Eksploratora lub 7-zip zajmuje około 15 minut.
Pisanie kopii strony
winhttrack
zawsze się zacina po pewnym czasie. Zajmował się także katalogiem zawierającym około 1 000 000 plików. Myślę, że najgorsze jest to, że MFT można tylko przechodzić kolejno.Otwarcie tego samego w ext2fsd na ext3 dało prawie taki sam czas. Prawdopodobnie przejście na reiserfs (nie reiser4fs) może pomóc.
Próbowanie uniknięcia tej sytuacji jest prawdopodobnie najlepsze.
W przypadku własnych programów korzystających z obiektów blob bez żadnego fs może być korzystne. Tak robi Facebook do przechowywania zdjęć.
źródło