Czy istnieje sposób, aby systemy plików ext zużywały dla siebie mniej miejsca w systemie Linux?

48

Mam kilka zewnętrznych i wewnętrznych dysków twardych, których używam w systemie Linux. Mam tylko systemy Linux, więc użycie systemu plików Linux miałoby sens, prawda? Jednak obecnie używam NTFS wszędzie, ponieważ daje mi to najwięcej użytecznego miejsca na dyskach twardych.

Chciałbym teraz przejść na systemy plików Linux, głównie ze względu na uprawnienia i kompatybilność (np. Nie mogę zmienić rozmiaru partycji NTFS zaszyfrowanej przez LUKS pod Linuksem, ciągle każe mi chkdsk pod Windows).

Jednak kiedy sformatowałem te dyski twarde, wypróbowałem kilka różnych systemów plików i każdy system plików Linux, nawet ext2, który, o ile wiem, nie ma kronikowania, zajmował dla siebie dużo miejsca. Nie pamiętam dokładnych wartości, ale to ponad 100 GB, że NTFS dał mi więcej na 2 TB dysku twardego, co jest dużo.

Więc moje pytanie brzmi: czy istnieje sposób, aby systemy plików ext zajmowały dla siebie mniej miejsca? Czy jest też inny system plików (próbowałem ext2, ext3, ext4, NTFS i vfat - Żaden z nich nie zbliżył się nawet do przestrzeni użytkowej oferowanej mi przez NTFS) z doskonałą obsługą Linuksa i wielką przestrzenią użytkową?

Chciałbym usłyszeć o tym, jak i dlaczego systemy plików (zwłaszcza ext2, który nie ma księgowania) zużywają o wiele więcej miejsca niż NTFS i nie wiem, gdzie jeszcze zapytać. Najbardziej wolałbym sposób korzystania z ext4 bez kronikowania i wszystkiego, co zajmuje tyle miejsca, jeśli to możliwe.

konfetti
źródło
1
Czy widziałeś ten wątek ?
JakeGould,
4
Mam i wyjaśniłem, co zużywa dodatkową przestrzeń, ale różnica między NTFS i ext jest DUŻO większa niż między reiserfs i ext, i zastanawiam się, czy jest jakiś sposób, aby je zmniejszyć. Na przykład na dysku twardym 1 TB jestem w stanie używać 989 GB z NTFS. ext4 dałoby mi około 909 GB.
konfetti
Słusznie. Przyzwoite pytanie i odpowiedź też jest pouczająca.
JakeGould,
3
jak faktycznie mierzysz, jaka przestrzeń jest dostępna? jest to ważne, ponieważ w zależności od tego, na jakie wartości patrzysz, możesz zobaczyć efekt 5% rezerwacji lub nie, na przykład, jak stwierdzono w powiązanym pytaniu
eMBee
2
Należy pamiętać, że kronikowanie w systemach plików takich jak ext3 i ext4 to dobra rzecz. Łatwo jest stracić moc na zewnętrznym dysku lub odłączyć go przypadkowo, jeśli jest to USB. Gdy tak się dzieje, często nie jest to żadna wielka sprawa, ponieważ leczy się za pomocą dziennika po ponownym uruchomieniu. Bez tej siatki bezpieczeństwa byłoby znacznie gorzej. To nie tylko kwestia więcej, tym lepiej.
Joe,

Odpowiedzi:

97

Domyślnie ext2 i jego następcy rezerwują 5% systemu plików do użytku przez użytkownika root. Zmniejsza to fragmentację i zmniejsza prawdopodobieństwo, że administrator lub demony będące własnością root nie będą miały miejsca do pracy.

Te zarezerwowane bloki zapobiegają zapełnianiu dysku przez programy, które nie działają jako root. To, czy względy te uzasadniają utratę pojemności, zależy od tego, do czego używany jest system plików.

5% kwoty ustalono w latach 80. XX wieku, kiedy dyski były znacznie mniejsze, ale pozostały bez zmian. Obecnie 1% jest prawdopodobnie wystarczający do stabilności systemu.

Rezerwacja może zostać zmieniona za pomocą -mopcji tune2fspolecenia:

tune2fs -m 0 /dev/sda1

Spowoduje to ustawienie procentowej liczby zarezerwowanych bloków na 0% (0 bloków).

Aby uzyskać bieżącą wartość (między innymi), użyj polecenia:

tune2fs -l <device> 
harrymc
źródło
10
To doskonale tłumaczy ogromną różnicę w powierzchni użytkowej (ponieważ 5% 2 TB to 100 GB). Dyski nie będą używane do celów związanych z rootem lub plikami systemowymi, więc myślę, że byłoby to zapisać, aby to wyłączyć. Mam jednak pytanie: skąd programy należące do roota wiedzą, że jest więcej wolnego miejsca niż programy inne niż root? Uruchamianie dfw trybie innym niż root vs. root nie wykazuje żadnej różnicy.
konfetti
12
@confetti: Ponieważ VFS nie odrzuca swoich prób zapisu na dysk z błędem ( oczywiście dopóki wolumin nie jest rzeczywiście pełny).
Ignacio Vazquez-Abrams,
1
tune2fs -l <device>powinien dać tę wartość między innymi. 5% kwoty ustalono w latach 80. XX wieku, kiedy dyski były znacznie mniejsze, ale pozostały bez zmian. Obecnie 1% jest prawdopodobnie wystarczający do stabilności systemu.
harrymc,
7
XFS rezerwuje mniejszy z 5% lub 8192 bloków (32 MiB), więc zarezerwowana ilość jest ogólnie niewielka w porównaniu do wielkości systemu plików.
Michael Hampton,
5
Dziękuję bardzo wszystkim za wyjaśnienia. To pomogło mi zrozumieć. Mój dysk wcześniej wypełniał się całkowicie do ostatniego bajtu, ale mój system nie zawiódł całkowicie, teraz rozumiem dlaczego.
konfetti
3

jeśli dane, które zamierzasz na nim przechowywać, są kompresowalne, btrfs zamontowany z compress=zstd(lub compress-force=zstd) prawdopodobnie zużyłby znacznie mniej miejsca na dysku niż ext *

  • to sprawi, że btrfs przejrzyście kompresuje twoje dane przed zapisaniem ich na dysk i przezroczysto rozpakuje je podczas odczytu. Ponadto, ext4 wstępnie alokuje wszystkie i-węzły podczas tworzenia systemu plików, btrfs tworzy je w razie potrzeby, myślę, że może to również zaoszczędzić trochę miejsca.
hanshenrik
źródło
1
Czy możesz dodać więcej informacji do tej odpowiedzi? (Jak to działa, co robi, może odniesienie, ...)
konfetti
@confetti lubi to? patchwork.kernel.org/patch/9817875
hanshenrik
Naprawdę podoba mi się ten pomysł, ale więcej informacji o tym, jak wpłynie to na szybkość i wydajność, i takie byłoby fajne.
konfetti
2
@confetti, ponieważ używasz dysku twardego, prawdopodobnie poprawi to wydajność. Procesory są o wiele szybsze niż dyski twarde, więc powolna część dostępu do dysku powoduje, że dane są włączane i wyłączane z dysku; czas spędzony na kompresji lub dekompresji nie będzie zauważalny.
Mark
2
Z drugiej strony większość rodzajów dużych plików w dzisiejszych czasach (np. Obrazy, audio, wideo, a nawet najbardziej bogate formaty dokumentów tekstowych) zwykle jest już skompresowana i na ogół nie korzysta z dodatkowej kompresji. Przynajmniej nie tego prostego rodzaju ogólnego przeznaczenia wykonywanego na poziomie systemu plików.
Ilmari Karonen,
3

Kolejnym punktem, o którym jeszcze nie mówiono, jest liczba i-węzłów zarezerwowanych w systemie plików.

Domyślnie mkfs tworzy wiele i-węzłów, które powinny umożliwić umieszczenie w systemie plików wielu bardzo małych plików. Jeśli wiesz, że pliki będą bardzo duże i umieścisz tylko niewielką liczbę plików na FS, możesz zmniejszyć liczbę i-węzłów.

Dbać! Tę liczbę (odpowiednio stosunek przestrzeni i liczby i-węzłów) można ustawić tylko w czasie tworzenia systemu plików. Nawet przy rozszerzaniu FS współczynnik pozostaje taki sam.

glglgl
źródło
Alternatywnie, jeśli wiesz, że będziesz przechowywać wiele naprawdę małych plików, możesz zwiększyć liczbę i-węzłów i zmniejszyć rozmiar bloku, aby nie marnować tyle miejsca. (Każdy plik należy spożywać co najmniej jednego bloku, nawet jeśli jest to 1 bajt użytku ls -Czy porównać wielkość vs co używany na dysku.).
Perkins
@Perkins Masz rację, ale myślę, że dotyczy to bardzo małych plików: domyślny rozmiar bloku to 4kiB (IIRC), minimalny to 1 kiB. Więc nie tak bardzo do wygrania, z wyjątkiem tego, że twój dysk jest naprawdę pełen tych plików. Niemniej jednak mogę zagłębić się w to jutro.
glglgl,
2
lub alternatywnie użyj btrfs, który tworzy i-węzły w razie potrzeby. podczas gdy i-węzły ext4 są przydzielane w czasie tworzenia systemu plików i nie można ich zmienić po utworzeniu, z twardym limitem 4 miliardów, i-węzły btrfs są tworzone dynamicznie w razie potrzeby, a twardy limit wynosi 2 ^ 64, około 18,4 kwintylionów, czyli około 4,6 miliarda razy wyższy niż twardy limit maksymalnego ext4: p
hanshenrik
Przypomina mi o skonfigurowaniu szpuli usenet. ext4 będzie przechowywać małe pliki (limit wynosi około 60-160 bajtów w zależności od wielu rzeczy) w obrębie samego i-węzła.
mr.spuratic
@hanshenrik Pamiętaj, że masz takie same ograniczenia blokowania plików btrfs (z kilkoma dodatkowymi sposobami obejścia tego), więc nadal musisz wiedzieć, jakie pliki (duże lub małe lub oba) będziesz przechowywać i odpowiednio wyreguluj swój system plików, jeśli chcesz wycisnąć z niego maksymalną ilość pamięci. Dostępność automatycznej kompresji bardzo pomaga, jeśli przechowujesz puszyste dane.
Perkins