GNU/Linux >> Znalost Linux >  >> Linux

Jak uvolnit použití Inode?

Moje řešení:

Zkuste zjistit, zda se nejedná o problém s inody s:

df -ih

Zkuste najít kořenové složky s velkým počtem inodů:

for i in /*; do echo $i; find $i |wc -l; done

Zkuste najít konkrétní složky:

for i in /src/*; do echo $i; find $i |wc -l; done

Pokud se jedná o linuxové hlavičky, zkuste odstranit nejstarší pomocí:

sudo apt-get autoremove linux-headers-3.13.0-24

Osobně jsem je přesunul do připojené složky (protože pro mě selhal poslední příkaz) a nainstaloval nejnovější s:

sudo apt-get autoremove -f

Toto vyřešilo můj problém.


Moje situace byla taková, že mi došly inody a už jsem smazal všechno, co jsem mohl.

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361     11  100% /

Jsem na ubuntu 12.04LTS a nemohl jsem odstranit stará linuxová jádra, která zabírala asi 400 000 inodů, protože apt byl rozbitý kvůli chybějícímu balíčku. A nemohl jsem nainstalovat nový balíček, protože mi došly inody, takže jsem se zasekl.

Nakonec jsem ručně smazal několik starých linuxových jader, abych uvolnil asi 10 000 inodů

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

To stačilo k tomu, abych mohl nainstalovat chybějící balíček a opravit apt

$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

a poté odstraňte zbytek starých linuxových jader pomocí apt

$ sudo apt-get autoremove

věci jsou teď mnohem lepší

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361 434719   54% /

Pro disk je docela snadné použít velké množství inodů, i když disk není příliš plný.

Souboru je přidělen inode, takže pokud máte gazilióny souborů, každý má 1 bajt, dojdou vám inody dlouho předtím, než vám dojde disk.

Je také možné, že odstranění souborů nesníží počet inodů, pokud mají soubory více pevných odkazů. Jak jsem řekl, inody patří do souboru, ne záznam v adresáři. Pokud jsou k souboru připojeny dvě položky adresáře, odstranění jednoho neuvolní inode.

Kromě toho můžete odstranit položku adresáře, ale pokud běžící proces stále má soubor otevřený, inode nebude uvolněn.

Moje první rada by byla smazat všechny soubory, které můžete, a poté restartovat box, abyste se ujistili, že nezůstaly žádné procesy, které by držely soubory otevřené.

Pokud to uděláte a stále máte problém, dejte nám vědět.

Mimochodem, pokud hledáte adresáře, které obsahují hodně souborů, může vám pomoci tento skript:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Pokud máte velkou smůlu, použili jste asi 100 % všech inodů a nemůžete vytvořit scipt. Můžete to zkontrolovat pomocí df -ih .

Pak vám může pomoci tento příkaz bash:

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

A ano, bude to chvíli trvat, ale můžete najít adresář s nejvíce soubory.


Linux
  1. Jak komprimovat více souborů v systému Linux

  2. Linux – Jak Linux přiděluje čísla inodů na souborových systémech, které nejsou založeny na inodech?

  3. Jak zjistit využití CPU

  1. Jak přejmenovat soubory v Linuxu

  2. Jak najít volné místo na disku a analyzovat využití disku?

  3. Jak získat % využití paměti pomocí vmstat?

  1. Jak najít soubory v Linuxu

  2. Jak zkontrolovat využití inodu ve vašem účtu cPanel

  3. Jak vypočítat využití paměti v Linuxu pomocí sar, ps a zdarma