Mój przyjaciel, który lubi programować w środowisku Linux, ale niewiele wie o administrowaniu Linuksem, ostatnio miał problem z tym, że jego system operacyjny (Ubuntu) zgłaszał „brak miejsca na dysku na wolumenie XXX”. Ale kiedy poszedł sprawdzić głośność, zostało jeszcze 700 GB. Po marnowaniu czasu był w stanie zorientować się, że skończył mu się węzeł. (Przechowywał wiele małych przyrostowych aktualizacji z systemu kopii zapasowych na tym woluminie i spalił wszystkie swoje i-węzły).
Zapytał mnie, dlaczego jądro Linuksa zgłosiło komunikat o błędzie („brak miejsca na dysku”) zamiast poprawnie raportowania („brak i-węzłów”). Nie wiedziałem, więc pomyślałem, że zapytam StackExchange.
Czy ktoś wie, dlaczego tak się dzieje? i dlaczego nie został naprawiony po tylu latach? (Pamiętam innego przyjaciela, który opowiadał mi o tym problemie w 1995 r.)
źródło
ext4
przydziela i-węzły w czasie tworzenia fs, np. Ext2 / 3, i nie można go później modyfikować.Zakładam, że twój przyjaciel używa ext fs, ponieważ jest to jeden z niewielu rozsądnych fs, które mogą zabraknąć i-węzłów.
Wygląda na to, że twój przyjaciel albo majstrował przy swoim systemie plików i go złamał, albo ma absurdalnie dużą objętość kilku TB. I-węzły nie są rzeczą jednorazowego użytku. Jeśli naprawdę zabrakło mu i-węzłów, oznacza to, że ma absurdalnie wiele plików i katalogów ... co może się zdarzyć na wolumenie> 4 TB (wykształcone przypuszczenie), gdzie „tylko” 700 GB jest bezpłatne. W przypadku rodziny rozszerzeń fs liczba i-węzłów jest określana podczas tworzenia fs. Ze strony podręcznika
mkfs.ext4
:Aby skrócić pozostałą część tej odpowiedzi: oznacza
mkfs
to, że albo ma taki stosunek, albo go przyjmuje. Jeśli twój przyjaciel używa fs inaczej niż zakładano, wybrany współczynnik może być niewłaściwy dla jego przypadku użycia i dostaje ten błąd ... wypełnienie pojedynczego woluminu o pojemności wielu TB tonami małych plików może być liczone jako takie.Czy twój przyjaciel używa jakiegoś środowiska graficznego, które implementuje koncepcję „kosza na śmieci” dla plików lub innych form tworzenia kopii zapasowych, które mogą tworzyć duże ilości plików? Może uda mu się rozwiązać problem, po prostu pozbywając się niepotrzebnych plików.
Pamiętam ten problem z ext2 z czasów, gdy jądro 2.4 było dość nowe. Zasadniczo zawsze używam XFS dla woluminów, które są bardzo duże w porównaniu do tego, co jest obecnie powszechne. Obecnie nazywam wszystko od 250 GB do 1 TB wspólnego dla jednego woluminu i możemy kupić dyski twarde 4 TB. Więc dla wszystkiego> 3 TB wolę używać XFS niż ext. To tylko ogólna zasada, ale od dłuższego czasu nie zabrakło i-węzłów ...
źródło
tune2fs -l /dev/sda1
) i okazało się, że mam stosunek 1 i-węzła na każde cztery bloki, a każdy blok ma rozmiar 1k. Jak bardzo można to uznać za „domyślne”, nie wiem.