Mam 2x dyski 4 TB w sprzętowym RAID1 (może to być LSI MegaRaid) na Debian Wheezy. Rozmiar bloku fizycznego wynosi 4 kB. Zamierzam przechowywać 150-200 milionów małych plików (od 3 do 10kB). Nie pytam o wydajność, ale o najlepszy system plików i rozmiary bloków, aby zaoszczędzić miejsce. Skopiowałem plik o wielkości 8200 bajtów na ext4 o wielkości bloku 4kB. Zajęło to 32kB dysku !? Czy przyczyną tego jest kronikowanie? Jakie są opcje oszczędzania większości miejsca na tak małe pliki?
10
Odpowiedzi:
Gdybym był w takiej sytuacji, szukałbym bazy danych, która może przechowywać wszystkie dane w jednym pliku ze zwartym indeksem opartym na przesunięciach, a nie jako osobne pliki. Być może baza danych ze sterownikiem FUSE jest dostępna do interakcji z nią jako plikami, gdy jest to konieczne, bez faktycznego, że WSZYSTKIE osobne pliki.
Alternatywnie możesz spojrzeć na powiedzmy na 60-70 percentyl rozmiarów plików i spróbować dopasować ten rozmiar pliku bezpośrednio do węzłów drzewa systemu plików, a nie jako osobne bloki na dysku. Przechowywanie 10 000 w każdym węźle jest prawdopodobnie dużym pytaniem, ale gdybyś mógł tam znaleźć 60–70% plików, prawdopodobnie byłaby to ogromna wygrana.
Tylko niektóre systemy plików mogą to zrobić (reiserfs to jeden), i myślę, że wszystko zależy od tego, jaki rozmiar ma percentyl, czy będzie on pasował do drzewa. Możesz go dostroić. Chyba staram się dopasować resztę do jednego bloku.
I nie martw się o czasopisma; i tak mają górny limit wielkości.
źródło