Zarezerwowane miejsce na root w systemie plików - dlaczego?

105

Rozumiem, że domyślnie nowo utworzone systemy plików zostaną utworzone z 5% miejsca przeznaczonego na root. Wiem też, że możesz zmienić zdefiniowaną przestrzeń za pomocą:

tune2fs -m 1 /dev/sdXY

Jestem jednak ciekawy, jaki jest rzeczywisty cel tej zarezerwowanej przestrzeni. Czy ma jakiś praktyczny cel, który w pewnych okolicznościach zasługiwałby na więcej niż 5% miejsca?

Powodem, dla którego natknąłem się na to pytanie, jest to, że niedawno zbudowaliśmy magazyn plików o pojemności 1 TB i nie mogłem zrozumieć, dlaczego df-h pozostawił nam brak 5% naszej pojemności.

suitedupgeek
źródło
1
Okej, teraz to ogromne marnotrawstwo „niedostępnej” przestrzeni. Być może 5% powinno być ograniczone do rozmiarów dysków mniejszych niż X (np. 5% miejsca na dysku do maksymalnie 100 MB).
tshepang
3
Na moim systemie plików o pojemności 8 TB 400 GB właśnie zniknęło - to prawdziwa strata miejsca !! :)
Ilia Rostovtsev

Odpowiedzi:

101

Jednym z powodów jest oszczędność miejsca na ważne procesy root (i możliwe akcje ratunkowe).

Ale jest jeszcze jeden. Ext3 jest całkiem dobry w unikaniu fragmentacji systemu plików, ale gdy osiągniesz poziom około 95%, zachowanie to spada z krawędzi i nagle wydajność systemu plików staje się bałaganem. Więc pozostawienie 5% rezerwy daje bufor przeciwko temu.

Ext4 powinien być w tym lepszy, jak wyjaśnił twórca systemu plików Linux / guru Theodore Ts'o :

Jeśli ustawisz liczbę bloków zarezerwowanych na zero, nie wpłynie to znacząco na wydajność, z wyjątkiem sytuacji, gdy działasz przez długi czas (przy dużej liczbie plików tworzonych i usuwanych), gdy system plików jest prawie pełny (np. Powyżej 95%), w tym momencie będziesz mieć problemy z fragmentacją. Wieloblokowy alokator Ext4 jest znacznie bardziej odporny na fragmentację, ponieważ znacznie trudniej jest znaleźć ciągłe bloki, więc nawet jeśli nie włączysz innych funkcji ext4, lepsze wyniki uzyskasz po prostu instalując system plików ext3 za pomocą ext4 przed systemem plików zostaje całkowicie wypełniony.

Jeśli używasz systemu plików do długoterminowego archiwum, w którym pliki nie zmieniają się zbyt często (np. Ogromny sklep mp3 lub wideo), to oczywiście nie będzie miało znaczenia.

mattdm
źródło
3
Jak zauważono na stronie superuser.com/a/1257550/38062 , te liczby „90%” i ​​„95%” mają swoje początki w pomiarach w stosunku do FFS Berkeley wykonanych w latach 80. Od dziesięcioleci inni ludzie kwestionują tę często powtarzaną mądrość.
JdeBP,
1
Dzięki temu zarezerwowanemu miejscu nie ma ograniczenia wydajności dla zwykłych użytkowników. Po prostu nie dostaną miejsca na urządzeniu wcześniej niż oczekiwano. Jednak root będzie miał wystarczająco dużo miejsca, aby naprawić problem związany z zapełnianiem dysku.
crististm
44

Jeśli pozwalasz innym na logowanie się do twojego systemu, na przykład przez ssh, zarezerwowanie tych 5% bloków gwarantuje, że użytkownicy zewnętrzni nie będą mogli zapełnić dysku. Nawet jeśli nie pozwalasz innym na logowanie się do twojego systemu, zarezerwowane bloki zapobiegają zapełnianiu dysku przez programy nie działające jako root.

LawrenceC
źródło
Dzięki za to, naprawdę zmagałem się z odpowiedzią, którą oznaczyłem jako poprawną - odpowiedź została oceniona jako pierwsza i trafiona, mattdm jest oznaczony jako poprawny ze względu na dodatkowe tło i szczegóły, które pomogły mi zrozumieć „Dlaczego” więcej.
suitedupgeek
22

Z zastrzeżonymi blokami użytkownicy i usługi działające jako konkretni użytkownicy, a nie jako root, nie mogą wypełnić zestawu plików i potencjalnie uszkodzić innych rzeczy, które należy zapisać w tym systemie plików - chociaż usługi działające jako root nadal mogą go całkowicie zakończyć pełne oczywiście.

Daje to również trochę miejsca do pracy, gdy użytkownicy narzekają, że dysk jest pełny lub usługi zaczynają ulegać awarii, ponieważ system plików jest pełny. Na przykład możesz zarchiwizować niektóre pliki w archiwach zip / gz / 7zip przed ich usunięciem (chociaż jeśli system plików byłby całkowicie pełny, istnieje szansa, że ​​masz inny system plików, w którym możesz zamiast tego utworzyć plik archiwum).

5% było ustawieniem domyślnym od dawna , od czasów, gdy dyski były znacznie mniejsze (dziesiątki megabajtów niż setki gigabajtów), więc 5% nie było aż tak dużo. Na szczęście można go łatwo dostrojony do mniejszego odsetka jak mówisz, lub ustawione na określoną liczbę bloków, jeśli używasz tune2fs„s -ropcję zamiast -m. W obu przypadkach można podać parametr 0, aby wyłączyć rezerwację całkowicie wyłączony - nie byłoby to zrobić za /, /tmp, /vari tak dalej, ale warto dla systemu plików, który tylko działa jako pamięć użytkownika (słownie globalną Plik- udostępnij) lub taki, który po prostu przechowuje pliki o stałym rozmiarze (takie jak maszyny wirtualne o stałym rozmiarze), które będą rosły dopiero po utworzeniu nowego.

David Spillett
źródło
22

Domyślnie 5% jest przeznaczone dla partycji systemowych. Na przykład, jeśli miejsce na dysku zapełni się, dzienniki systemowe ( /var/log) i skrzynka pocztowa root ( /var/mail/root) nadal mogą otrzymywać ważne informacje. W przypadku /homeogólnej partycji do przechowywania danych nie ma potrzeby zostawiać miejsca dla roota. Na specjalne potrzeby możesz zmienić użytkownika, który otrzymuje przestrzeń awaryjną ( tune2fs -u 1234).

Jest jeszcze jeden powód, aby nie dopuścić do zapełnienia systemu plików ext [234], którym jest fragmentacja .

Gilles
źródło