Zur Zeit läuft bei mir noch ein Rechner (Notebook) mit Ubuntu. Derzeit ist noch die 12.04 LTS drauf, die dann mit Sicherheit nächsten Monat durch die 14.04 LTS ersetzt wird. Seit über einem Jahr verrichtet der Precise Pangolin nun zuverlässig seinen Dienst auf einer 20GB-Partition (Wurzelverzeichnis).
Letzten Sonntag kam es aber zu einem mir bis dahin unerklärlichem Phänomen. Ich konnte weder das System Upgraden, noch Pakete installieren oder entfernen.
Was war passiert?
Dank der hervorragenden Unterstützung im Forum von ubuntuusers.de konnte die Ursache schnell gefunden werden. Das Überlaufen der Inodes hatte das System blockiert. Die Dateisystemeinträge verstopften sozusagen mein Ubuntu. Dabei dachte ich meine bisherige Systempflege sei ausreichend. Anscheinend war dem nicht so!
Hier die Ausgabe von:
1 |
df -i |
1 2 3 4 5 6 7 |
Dateisystem Inodes IBenutzt IFrei IUse% Eingehängt auf /dev/sda1 1222992 1221658 1334 100% / udev 484830 525 484305 1% /dev tmpfs 487189 468 486721 1% /run none 487189 3 487186 1% /run/lock none 487189 9 487180 1% /run/shm /dev/sda5 17096704 48825 17047879 1% /home |
Durch das Löschen der sich im Laufe der Zeit angesammelten alten Kernels (linux-headers*) im Verzeichnis /usr/src und das anschließende purgen
1 |
sudo rm -R /root/.local/share/Trash/files/ |
1 |
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge |
konnte ich das System wieder fit machen und meinen Sonntag retten. Abschließend musste aber noch der Papierkorb geleert werden.
1 |
df -i |
1 2 3 4 5 6 7 |
Dateisystem Inodes IBenutzt IFrei IUse% Eingehängt auf /dev/sda1 1222992 374962 848030 31% / udev 484830 525 484305 1% /dev tmpfs 487189 467 486722 1% /run none 487189 3 487186 1% /run/lock none 487189 10 487179 1% /run/shm /dev/sda5 17096704 45276 17051428 1% /home |
Ein anschließendes
1 |
sudo apt-get update && sudo apt-get dist-upgrade |
war nun wieder problemlos möglich. Beim Löschen der Kernels muss man natürlich drauf achten, dass der letzte Aktive nicht entfernt wird. Vorsichtigere User sollten die letzten zwei bis drei Exemplare behalten.
Abschließend möchte ich noch auf die Artikel Systempflege und Kernel im Wiki von ubuntuusers.de hinweisen.
Danke schön.
Durch den Artikel habe ich mal wieder selbst nachgesehen und einen GB zurück gewonnen. Manches vergisst man doch hin und wieder.
Genau das hatte ich auch. Leider kam ich während einem apt-get upgrade an die Grenze der inodes. Danach danach die Installation nicht mehr benutzbar und ich musste neu installieren.
Das Problem kommt auch daher, dass Ubuntu die Packete unnötigerweise als »manuell installiert« markiert. Dann werden sie nicht automatisch zum Entfernen freigegeben, wenn man sie nicht mehr braucht:
https://bugs.launchpad.net/ubuntu/+source/livecd-rootfs/+bug/424643
Ich hab bei mir alle (außer den genannten Basispacketen) auf »automatisch installiert« gesetzt. Seither verschwinden die alten Kernels bei einem apt-get auto-remove.
Hilft zwar nicht dabei inodes freizubekommen (also ggf. tausende viele kleine Dateien) aber hilft enorm dabei, herauszufinden, welche Verzeichnisse und auch Dateien den meisten Speicherplatz verbrauchen. Dazu wird einfach „ncdu“ im aktuellen Verzeichnis aufgerufen und geht dann rekursiv alles durch was im aktuellen Verzeichnis so zu finden ist:
sudo apt-get install ncdu
zu beenden mit „q“, Man kann auch durch die fertige Liste durchmänovrieren und sich Unterverzeichnisse anschauen usw.
Was hat jetzt bitte das Löschen der Dateien im Mülleimer von Root mit der Entfernung der Kernel und Kernelheaders über apt-get zu tun?
Erst nach dem Löschen waren die Inodes wieder frei! Vorher war das System genau so blockiert, sodass ein „autoremove“ nicht möglich war. Es musste erst der Papierkorb gelöscht werden, weil sonst auch das „purgen“ nicht möglich war. Ich habe den Artikel diesbezüglich von der Reihenfolge nochmals angepasst.
Das Löschen der Kernelquellen hat aber nichts mit Deinem Papierkorb zu tun.
Wenn man alte Pakete automatisiert loswerden möchte, bietet sich diese Zeile in der Datei /etc/apt/apt.conf.d/50unattended-upgrades an:
Unattended-Upgrade::Remove-Unused-Dependencies „true“;
Ansonsten hin und wieder mal „apt-get autoremove“. Das kann man auch mit „anachron“ automatisieren.
sudo apt-get update && sudo apt-get dist-upgrade
soll wohl eher
sudo apt-get update && sudo apt-get dist-upgrade
heißen oder? 😉
Das Code-Plugin übersetzt manchmal nicht richtig. Jetzt müsste es aber passen.