Zde se mohou dít dvě věci.
První , váš souborový systém má vyhrazený prostor, který je pouze root
může zapisovat, takže kritický systémový proces nespadne, když normálním uživatelům dojde místo na disku. Proto vidíte, že je použito 124G ze 130G, ale není k dispozici nula. Možná soubory, které jste odstranili, snížily využití do tohoto bodu, ale ne pod prahovou hodnotu pro běžné uživatele.
Pokud je to vaše situace a jste zoufalí, možná budete moci změnit množství místa vyhrazeného pro root
. Chcete-li jej snížit na 1 % (výchozí hodnota je 5 %), váš příkaz by byl
# tune2fs -m 1 /dev/sda3
Za druhé operační systém neuvolní místo na disku pro smazané soubory, které jsou stále otevřené. Pokud jste smazali (řekněme) jeden ze souborů protokolu Apache, budete muset restartovat Apache, abyste uvolnili místo.
Pokud smažete soubor, který proces používá, nebudete jej moci zobrazit do ls
. Proces stále zapisuje do tohoto souboru, dokud proces nezastavíte.
Chcete-li tyto smazané soubory zobrazit, jednoduše spusťtelsof|grep delete
2 další způsoby, jak získat disk je plný problém:
1) skryté pod přípojným bodem: linux ukáže plný disk se soubory "skrytými" pod bodem připojení. Pokud máte data zapsaná na disk a připojíte přes něj jiný souborový systém, linux správně zaznamená využití disku, i když soubory pod bodem připojení nevidíte. Pokud máte připojení nfs, zkuste je odpojit a podívat se, zda do těchto adresářů nebylo před připojením něco omylem zapsáno.
2) poškozené soubory: Občas to vidím na přenos souborů z Windows do linuxu přes SMB. U jednoho souboru se nepodaří zavřít deskriptor souboru a vy skončíte se 4GB souborem koše.
Oprava může být zdlouhavější, protože musíte najít podadresář, ve kterém se soubor nachází, ale je snadné to opravit, protože samotný soubor je snadno odstranitelný. Používám du
a proveďte výpis kořenových podadresářů, abyste zjistili, kde se používá souborový prostor.
cd /
du -sh ./*
Počet adresářů nejvyšší úrovně je obvykle omezený, proto jsem nastavil čitelný pro člověka příznak -h
abyste viděli, který podadresář je vesmírný prase.
Potom cd do problémového potomka a zopakujte proces pro všechny položky v něm. Aby bylo snadné rozpoznat velké položky, mírně změníme du a spojíme ji s řazením.
cd /<suspiciously large dir>
du -s ./* | sort -n
který produkuje nejmenší až největší výstup podle velikosti bajtů pro všechny soubory a adresáře
4 ./bin
462220 ./Documents
578899 ./Downloads
5788998769 ./Grocery List
Jakmile zjistíte příliš velký soubor, můžete jej obvykle smazat.