Który system plików Linux wybrałbyś dla uzyskania najlepszej prędkości w następującym scenariuszu:
- sto milionów plików
- Średnio rozmiar pliku ~ 2k
- > 95% dostęp do odczytu
- dość losowy dostęp
- wysoka współbieżność (> 100 procesów)
Uwaga: Pliki są przechowywane w głębokim drzewie hierarchicznym, aby uniknąć dużych katalogów. Każdy katalog liści zawiera około tysiąca plików.
Jak byś to zrobił?
linux
filesystems
benchmark
bene
źródło
źródło
Odpowiedzi:
Oto kilka wyników porównujących wszystkie główne FS-y Linuksa z bonnie ++, których możesz użyć jako punktu wyjścia.
Pod względem losowych wyszukiwań wygrywa Reiser, następnie EXT4, a następnie JFS. Nie jestem pewien, czy będzie to dokładnie korelować z wyszukiwaniem katalogów, ale wydaje się, że byłby to wskaźnik. W tym celu musisz wykonać własne testy. EXT2 bije spodnie od czasu tworzenia plików, prawdopodobnie z powodu braku dziennika, wciąż EXT4 bije wszystko oprócz Reisera, z którego możesz nie chcieć korzystać z powodu obecnego statusu hans reiser.
Możesz zajrzeć do dysków obsługujących NCQ i upewnić się, że instalacja jest skonfigurowana do korzystania z niego. Podczas intensywnego poszukiwania powinien zapewnić przyspieszenie.
Na koniec upewnij się, że na twojej maszynie jest dużo taranów. Ponieważ pliki nie są często aktualizowane, Linux skończy buforowanie większości z nich, aby uzyskać ram, jeśli ma wolne miejsce. Jeśli twoje wzorce użytkowania są prawidłowe, da ci to ogromny wzrost prędkości.
źródło
Zgadzam się z większością tego, co powiedział Andrew, z tym wyjątkiem, że poleciłbym Reiser4 lub starszą (ale lepiej obsługiwaną) ReiserFS . Jak wskazują te testy (i dokumentacja dla ReiserFS), jest on zaprojektowany specjalnie do sytuacji, o którą pytasz (duża liczba małych plików lub katalogów). W przeszłości korzystałem z ReiserFS z Gentoo i Ubuntu bez żadnych problemów.
Jeśli chodzi o status Hansa Reisera, nie uważam tego za problem z kodem lub stabilnością samego systemu plików. Reiser4 jest nawet sponsorowany zarówno przez DARPA, jak i Linspire, więc chociaż zgadzam się, że dalszy rozwój systemu plików Reiser nie jest określony, nie uważam, że powinien to być decydujący czynnik, czy ktoś powinien go używać, czy nie.
źródło
Wiem, że nie jest to bezpośrednia odpowiedź na twoje pytanie, ale w tych przypadkach myślę, że baza danych może być bardziej odpowiednia do hostowania tego. Małe pliki mogą być przechowywane w formacie binarnym w tabeli bazy danych i wyszukiwane w wil. Oprogramowanie korzystające z tych plików powinno być w stanie to obsłużyć ...
źródło
Ktoś z Unix StackExchange stworzył test porównawczy (ze źródłem), aby przetestować ten scenariusz:
P: Jaki jest najbardziej wydajny system plików Linux do przechowywania wielu małych plików (HDD, a nie SSD)?
Najlepsza wydajność odczytu wydaje się pochodzić z ReiserFS.
źródło
Z mojego doświadczenia wynika, że ext2 wydmuchuje ext4 z wody dla małych plików. Jeśli nie zależy Ci na integralności zapisu, to świetnie. Na przykład subversion tworzy mnóstwo plików i wiele małych plików, które dławią ext4 i inne systemy plików (XFS) (uruchamiaj zadanie cron, które rsynchronizuje dane do ext4 z ext2 co pół godziny lub mniej więcej rozwiązuje problem).
Uruchamianie tych poleceń sprawia, że ext2 jest jeszcze szybszy (nawet jeśli większość z tych opcji powoduje niestabilność systemu plików po awarii, chyba że uruchomisz synchronizację przed awarią). Te polecenia prawie nie mają wpływu na ext4 z małymi plikami.
źródło
Wydaje mi się, że ext3 (lub ext4), może JFS byłoby dobrym rozwiązaniem. Byłbym ostrożny z ext4 i btrfs (systemy plików są trudne - bądź przygotowany na kopie zapasowe, jeśli chcesz używać najnowszych, najnowszych rzeczy).
Istnieją również różne parametry, które można modyfikować w czasie mkfs, aby dostosować system plików do własnych upodobań.
Z pewnością poleciłbym przeciwko XFS. Nie dlatego, że jest to zły system plików, ale tworzenie / usuwanie jest na nim kosztowną operacją.
Aby uniknąć problemów z wyszukiwaniem katalogów, użyj inteligentnego schematu nazewnictwa, na przykład:
lub podobne, bardziej skomplikowane schematy. Przyspieszy to wyszukiwanie katalogów, a tym samym ogólne prędkości dostępu. (To stara sztuczka unixowa, myślę, że pochodzi z V7)
źródło
Większość plików FS dusi się z ponad 65 000 plików w katalogu, myślę, że nadal dotyczy to ext4. Systemy plików Reiser nie mają tego limitu (ludzie na mp3.com zapłacili, aby się upewnić). Nie jestem pewien niczego innego, ale jest to jeden ze scenariuszy użycia, dla których stworzono ReiserFS.
źródło
ls
lub tabulacja, działa szybko. Prawdopodobnie ze względu na indeks.