Problém
V systému založeném na Linuxu se kořenový souborový systém zaplňuje neznámým procesem. Pokračuje bez ohledu na to, jaké soubory jsou přesunuty nebo vyčištěny ze systému souborů.
# df -hP / /dev/mapper/VGExaDb-LVDbSys1 ext3 30G 29G 0 100% /
Neexistují žádné velké soubory, které by odpovídaly celému systému souborů:
# find / -xdev -type f -size +100M -exec ls -lh {} \;
Neexistují žádné velké adresáře, které by odpovídaly celému systému souborů:
# du -h --max-depth=1 / 42M /sbin 13M /etc 2.4G /usr 45M /tmp 451M /var 192M /lib (and so on) ...
Řešení
V jednom okamžiku v minulosti dva nebo více procesů používalo soubor; například/tmp/top.log. Jeden proces zastavil svůj přístup k /tmp/top.log tím, že jej smazal (ve skutečnosti je to položka adresáře) a druhý proces pokračoval v zápisu do reference inodu, což umožnilo, aby se soubor dále rozrůstal.
To lze vidět na výstupu:„lsof +L 1 ”
# lsof +L 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME top 34261 root 1W REG 252,0 21460567592 0 1785896 /tmp/top.log (deleted)
Ostatní soubory byly také uvedeny, ale byly mnohem menší.
To ukazuje, že uživatel=root spouštěl top příkaz, který byl zařazován do /tmp/top.log, a že v současné době neexistují žádné odkazy na tento soubor. Tento zařazovací soubor měl velikost 21 Gb, ale nehlásil se ve výstupu „du –h –max-depth=1 /“, kde /tmp bylo uvedeno pouze 45M.
Pro identifikaci a ukončení takového procesu postupujte podle následujících kroků.
1. Identifikujte soubory v systému, které mají méně než 1 odkaz, pomocí příkazu:
# lsof +L 1
2. Zabijte všechny procesy, které zapisují do jakéhokoli uvedeného neobvykle velkého souboru. Ve výše uvedeném příkladu byste spustili:
# kill 34261
3. Prostor se uvolní, když konečný proces přestane soubor používat.